{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xtv46H3dM6VS", "outputId": "eda83fea-6264-4e48-d525-3d31a58dab42" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Cloning into 'yolov5'...\n", "remote: Enumerating objects: 14474, done.\u001b[K\n", "remote: Counting objects: 100% (44/44), done.\u001b[K\n", "remote: Compressing objects: 100% (32/32), done.\u001b[K\n", "remote: Total 14474 (delta 19), reused 28 (delta 12), pack-reused 14430\u001b[K\n", "Receiving objects: 100% (14474/14474), 13.48 MiB | 27.33 MiB/s, done.\n", "Resolving deltas: 100% (9996/9996), done.\n" ] } ], "source": [ "# clone YOLOv5 repository\n", "!git clone https://github.com/ultralytics/yolov5 # clone repo\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "gp3H_FLMNctW", "outputId": "f7a460ac-8a35-40e3-f1aa-003da6b9a2fb" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/content/yolov5\n" ] } ], "source": [ "#Change dir to clone yolov5 dir\n", "%cd /content/yolov5" ] }, { "cell_type": "code", "source": [ "!pip3 install gdrivedownload" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "QspCU9zlv26i", "outputId": "e80b9235-c605-4e76-be0e-1b2db0411f9c" }, "execution_count": 3, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting gdrivedownload\n", " Downloading gdrivedownload-1.0.1-py3-none-any.whl (5.3 kB)\n", "Requirement already satisfied: google-api-python-client<2,>=1.5.0 in /usr/local/lib/python3.7/dist-packages (from gdrivedownload) (1.12.11)\n", "Requirement already satisfied: google-auth-httplib2>=0.0.3 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.5.0->gdrivedownload) (0.0.4)\n", "Requirement already satisfied: google-api-core<3dev,>=1.21.0 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.5.0->gdrivedownload) (1.31.6)\n", "Requirement already satisfied: six<2dev,>=1.13.0 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.5.0->gdrivedownload) (1.15.0)\n", "Requirement already satisfied: uritemplate<4dev,>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.5.0->gdrivedownload) (3.0.1)\n", "Requirement already satisfied: httplib2<1dev,>=0.15.0 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.5.0->gdrivedownload) (0.17.4)\n", "Requirement already satisfied: google-auth<3dev,>=1.16.0 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.5.0->gdrivedownload) (1.35.0)\n", "Requirement already satisfied: packaging>=14.3 in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (21.3)\n", "Requirement already satisfied: setuptools>=40.3.0 in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (57.4.0)\n", "Requirement already satisfied: pytz in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (2022.5)\n", "Requirement already satisfied: googleapis-common-protos<2.0dev,>=1.6.0 in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (1.56.4)\n", "Requirement already satisfied: requests<3.0.0dev,>=2.18.0 in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (2.23.0)\n", "Requirement already satisfied: protobuf<4.0.0dev,>=3.12.0 in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (3.17.3)\n", "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.7/dist-packages (from google-auth<3dev,>=1.16.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (4.9)\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.7/dist-packages (from google-auth<3dev,>=1.16.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (0.2.8)\n", "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from google-auth<3dev,>=1.16.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (4.2.4)\n", "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging>=14.3->google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (3.0.9)\n", "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /usr/local/lib/python3.7/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3dev,>=1.16.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (0.4.8)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (2022.9.24)\n", "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (3.0.4)\n", "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (1.24.3)\n", "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.5.0->gdrivedownload) (2.10)\n", "Installing collected packages: gdrivedownload\n", "Successfully installed gdrivedownload-1.0.1\n" ] } ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "yk6t7n_yNq2l", "outputId": "c42d3697-5a5e-4b22-eef3-5518a4800894" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Setup complete. Using torch 1.12.1+cu113 _CudaDeviceProperties(name='Tesla T4', major=7, minor=5, total_memory=15109MB, multi_processor_count=40)\n" ] } ], "source": [ "# install dependencies as necessary\n", "import torch\n", "\n", "from IPython.display import Image, clear_output # to display images\n", "#from utils.downloads import gdrive_download # to download models/datasets\n", "#from utils.google_utils import gdrive_download\n", "import gdrivedownload\n", "\n", "# clear_output()\n", "print('Setup complete. Using torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))" ] }, { "cell_type": "code", "source": [], "metadata": { "id": "NMZqPgClE33U" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [], "metadata": { "id": "17KW9IDeFQiT" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vXxQODl-N8dq", "outputId": "98efa149-668c-4cdd-e55a-8990db5ced58" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/content\n", " % Total % Received % Xferd Average Speed Time Time Time Current\n", " Dload Upload Total Spent Left Speed\n", "100 893 100 893 0 0 2453 0 --:--:-- --:--:-- --:--:-- 2446\n", "100 19.6M 100 19.6M 0 0 27.8M 0 --:--:-- --:--:-- --:--:-- 27.8M\n", "Archive: roboflow.zip\n", " extracting: README.dataset.txt \n", " extracting: README.roboflow.txt \n", " extracting: data.yaml \n", " creating: test/\n", " creating: test/images/\n", " extracting: test/images/105_jpg.rf.3cde2fcd15a9bdf6a2d2d32aff48f33d.jpg \n", " extracting: test/images/10_jpg.rf.d362a00f9a6b4ac31668dc8aae9c71de.jpg \n", " extracting: test/images/117_jpg.rf.119dccd2483b04d8d3a8c33a1393d362.jpg \n", " extracting: test/images/118_jpg.rf.acee2a86eba65adc57f3b15d5acab93c.jpg \n", " extracting: test/images/11_jpg.rf.8e1c22ba2779121f3ba0a8ae03a20407.jpg \n", " extracting: test/images/124_jpg.rf.100aeaede7a9c017d7f74f73cfcf34d7.jpg \n", " extracting: test/images/124_jpg.rf.dab4a5f6292af8332da8f9bad9751ba6.jpg \n", " extracting: test/images/12_jpg.rf.3e4b2f52016c100e9f869397933ef2d3.jpg \n", " extracting: test/images/131_jpg.rf.1a70e4c9e91ea953aa55988ab20fa95a.jpg \n", " extracting: test/images/135_jpg.rf.a8cbe93a3de035a4927b20c42604ae4c.jpg \n", " extracting: test/images/145_jpg.rf.5a3d6fbf3dcb9d88626ba82182f29254.jpg \n", " extracting: test/images/164_jpg.rf.9a5230f67ddc2426d52597a70c6984f9.jpg \n", " extracting: test/images/165_jpg.rf.e831420b761a317ab9fb725e12781bd8.jpg \n", " extracting: test/images/16_jpg.rf.0ef960d157f3f332421d9d5a8248a00f.jpg \n", " extracting: test/images/173_jpg.rf.7bcde8912d29eb7f5409d79c922924cd.jpg \n", " extracting: test/images/186_jpg.rf.3d96cc9db76cb67ec0bab598d4208152.jpg \n", " extracting: test/images/194_jpg.rf.b8e95cf106dfe177aa13ff892562c641.jpg \n", " extracting: test/images/201_jpg.rf.6c78e7e06349770df39f8f8a01a06908.jpg \n", " extracting: test/images/202_jpg.rf.896abd97885d07442a74be88a00c73e2.jpg \n", " extracting: test/images/204_jpg.rf.3c47ac3c43fab1b4d62a19ceed8c8231.jpg \n", " extracting: test/images/205_jpg.rf.b30bdf73b6009d15a54011fd1acab0d0.jpg \n", " extracting: test/images/206_jpg.rf.3854aa9bcfdf9e6321ef94c5584f51ab.jpg \n", " extracting: test/images/208_jpg.rf.11baac82fd392341802eabf670ade349.jpg \n", " extracting: test/images/212_jpg.rf.24251e3e1177eae5ca265eac655a799f.jpg \n", " extracting: test/images/239_jpg.rf.a3c439a0dc2f4c4e5db8b3a4c4a2180c.jpg \n", " extracting: test/images/240_jpg.rf.0381da28fab54a07483b6f975dba4959.jpg \n", " extracting: test/images/242_jpg.rf.55a6cd9175204fcbc9516c8384ad1770.jpg \n", " extracting: test/images/258_jpg.rf.6c03add472168dc8aecab04803072d87.jpg \n", " extracting: test/images/27_jpg.rf.671159daf1e92be6319d22d4c7c88c80.jpg \n", " extracting: test/images/28_jpg.rf.be603dcb6457f3d4d72ef38cc955ab9b.jpg \n", " extracting: test/images/28_jpg.rf.e94435d98cb556f0a56cff1d7dd9b920.jpg \n", " extracting: test/images/29_jpg.rf.7cfb0432c199bf6e76f661a83a3ca1d7.jpg \n", " extracting: test/images/31_jpg.rf.887c2f4daf5684fd355b6574d2eca7aa.jpg \n", " extracting: test/images/39_jpg.rf.6c48cc7bc08ea196365cece9cd971749.jpg \n", " extracting: test/images/44_jpg.rf.a8f296b8d749e394876fb6979c16caee.jpg \n", " extracting: test/images/50_jpg.rf.42e8ad065f5b065703c9f263be40fe8e.jpg \n", " extracting: test/images/53_jpg.rf.9eae9dccc03d7b64f61d739e9f4f52f2.jpg \n", " extracting: test/images/54_jpg.rf.f8b4216afc0c231f67e05f6afe265886.jpg \n", " extracting: test/images/61_jpg.rf.83c119624acc721b292a47934264a533.jpg \n", " extracting: test/images/69_jpg.rf.daf08f6efb908d9967c2233f1c77ed78.jpg \n", " extracting: test/images/72_jpg.rf.60268e8fdd7719031d78a73b5dcdd38f.jpg \n", " extracting: test/images/7_jpg.rf.5b79fa048d8e493e13436fdae01bae0c.jpg \n", " extracting: test/images/90_jpg.rf.7163e0a2586c369f8cb72f1cdc305d52.jpg \n", " extracting: test/images/99_jpg.rf.65fbaae25e71535d041bcd972b4be3a6.jpg \n", " creating: test/labels/\n", " extracting: test/labels/105_jpg.rf.3cde2fcd15a9bdf6a2d2d32aff48f33d.txt \n", " extracting: test/labels/10_jpg.rf.d362a00f9a6b4ac31668dc8aae9c71de.txt \n", " extracting: test/labels/117_jpg.rf.119dccd2483b04d8d3a8c33a1393d362.txt \n", " extracting: test/labels/118_jpg.rf.acee2a86eba65adc57f3b15d5acab93c.txt \n", " extracting: test/labels/11_jpg.rf.8e1c22ba2779121f3ba0a8ae03a20407.txt \n", " extracting: test/labels/124_jpg.rf.100aeaede7a9c017d7f74f73cfcf34d7.txt \n", " extracting: test/labels/124_jpg.rf.dab4a5f6292af8332da8f9bad9751ba6.txt \n", " extracting: test/labels/12_jpg.rf.3e4b2f52016c100e9f869397933ef2d3.txt \n", " extracting: test/labels/131_jpg.rf.1a70e4c9e91ea953aa55988ab20fa95a.txt \n", " extracting: test/labels/135_jpg.rf.a8cbe93a3de035a4927b20c42604ae4c.txt \n", " extracting: test/labels/145_jpg.rf.5a3d6fbf3dcb9d88626ba82182f29254.txt \n", " extracting: test/labels/164_jpg.rf.9a5230f67ddc2426d52597a70c6984f9.txt \n", " extracting: test/labels/165_jpg.rf.e831420b761a317ab9fb725e12781bd8.txt \n", " extracting: test/labels/16_jpg.rf.0ef960d157f3f332421d9d5a8248a00f.txt \n", " extracting: test/labels/173_jpg.rf.7bcde8912d29eb7f5409d79c922924cd.txt \n", " extracting: test/labels/186_jpg.rf.3d96cc9db76cb67ec0bab598d4208152.txt \n", " extracting: test/labels/194_jpg.rf.b8e95cf106dfe177aa13ff892562c641.txt \n", " extracting: test/labels/201_jpg.rf.6c78e7e06349770df39f8f8a01a06908.txt \n", " extracting: test/labels/202_jpg.rf.896abd97885d07442a74be88a00c73e2.txt \n", " extracting: test/labels/204_jpg.rf.3c47ac3c43fab1b4d62a19ceed8c8231.txt \n", " extracting: test/labels/205_jpg.rf.b30bdf73b6009d15a54011fd1acab0d0.txt \n", " extracting: test/labels/206_jpg.rf.3854aa9bcfdf9e6321ef94c5584f51ab.txt \n", " extracting: test/labels/208_jpg.rf.11baac82fd392341802eabf670ade349.txt \n", " extracting: test/labels/212_jpg.rf.24251e3e1177eae5ca265eac655a799f.txt \n", " extracting: test/labels/239_jpg.rf.a3c439a0dc2f4c4e5db8b3a4c4a2180c.txt \n", " extracting: test/labels/240_jpg.rf.0381da28fab54a07483b6f975dba4959.txt \n", " extracting: test/labels/242_jpg.rf.55a6cd9175204fcbc9516c8384ad1770.txt \n", " extracting: test/labels/258_jpg.rf.6c03add472168dc8aecab04803072d87.txt \n", " extracting: test/labels/27_jpg.rf.671159daf1e92be6319d22d4c7c88c80.txt \n", " extracting: test/labels/28_jpg.rf.be603dcb6457f3d4d72ef38cc955ab9b.txt \n", " extracting: test/labels/28_jpg.rf.e94435d98cb556f0a56cff1d7dd9b920.txt \n", " extracting: test/labels/29_jpg.rf.7cfb0432c199bf6e76f661a83a3ca1d7.txt \n", " extracting: test/labels/31_jpg.rf.887c2f4daf5684fd355b6574d2eca7aa.txt \n", " extracting: test/labels/39_jpg.rf.6c48cc7bc08ea196365cece9cd971749.txt \n", " extracting: test/labels/44_jpg.rf.a8f296b8d749e394876fb6979c16caee.txt \n", " extracting: test/labels/50_jpg.rf.42e8ad065f5b065703c9f263be40fe8e.txt \n", " extracting: test/labels/53_jpg.rf.9eae9dccc03d7b64f61d739e9f4f52f2.txt \n", " extracting: test/labels/54_jpg.rf.f8b4216afc0c231f67e05f6afe265886.txt \n", " extracting: test/labels/61_jpg.rf.83c119624acc721b292a47934264a533.txt \n", " extracting: test/labels/69_jpg.rf.daf08f6efb908d9967c2233f1c77ed78.txt \n", " extracting: test/labels/72_jpg.rf.60268e8fdd7719031d78a73b5dcdd38f.txt \n", " extracting: test/labels/7_jpg.rf.5b79fa048d8e493e13436fdae01bae0c.txt \n", " extracting: test/labels/90_jpg.rf.7163e0a2586c369f8cb72f1cdc305d52.txt \n", " extracting: test/labels/99_jpg.rf.65fbaae25e71535d041bcd972b4be3a6.txt \n", " creating: train/\n", " creating: train/images/\n", " extracting: train/images/101_jpg.rf.01df1023e27cc86113edc3d17e5d9849.jpg \n", " extracting: train/images/101_jpg.rf.74b5e38ccf46b943a472180bd3fa7a85.jpg \n", " extracting: train/images/102_jpg.rf.f4689e16542e7e8544c98bac3c2c10d3.jpg \n", " extracting: train/images/103_jpg.rf.d553a0c775b4aa9dab3de5d011f2e64f.jpg \n", " extracting: train/images/104_jpg.rf.06f57ec7d99c16c70d9994570b7a605b.jpg \n", " extracting: train/images/105_jpg.rf.060c47fc43a095008de2e9264678cb99.jpg \n", " extracting: train/images/106_jpg.rf.0053bf294fc8bbeceabc55bb9964078d.jpg \n", " extracting: train/images/108_jpg.rf.6b7b1f558235d25be1140ca5309eb636.jpg \n", " extracting: train/images/109_jpg.rf.524608a9972ddf4a6fc441d4632eb557.jpg \n", " extracting: train/images/109_jpg.rf.cb72b7121f6817f67b1fb0346664d687.jpg \n", " extracting: train/images/10_jpg.rf.108e4ee854653611ee979134f5971e30.jpg \n", " extracting: train/images/110_jpg.rf.12c752d7ad7524e6a541392517679858.jpg \n", " extracting: train/images/110_jpg.rf.6424aaf0fe8572141c00f5c83a13ad21.jpg \n", " extracting: train/images/112_jpg.rf.0d68f48fe1bfd084f0a5835a98964121.jpg \n", " extracting: train/images/113_jpg.rf.61fd79beaaa30ed8a60fa595666acbb4.jpg \n", " extracting: train/images/113_jpg.rf.a12b678584e40190cef096c15c6e93f0.jpg \n", " extracting: train/images/114_jpg.rf.96b678d906b51f47115b91f3ef3ee163.jpg \n", " extracting: train/images/114_jpg.rf.d038c5858dd2e5abdca25b26d85653c0.jpg \n", " extracting: train/images/115_jpg.rf.1c0704b246778ea89acea41c0cb37c58.jpg \n", " extracting: train/images/116_jpg.rf.010eeb6d267e139172f0ee2695ce127a.jpg \n", " extracting: train/images/116_jpg.rf.4212aa83e14a778577830c048c37a2af.jpg \n", " extracting: train/images/118_jpg.rf.13fdc78d9dbd7e6f65151711c48133b7.jpg \n", " extracting: train/images/119_jpg.rf.f4ed5680348e1a179d2f4d1ac2b0e666.jpg \n", " extracting: train/images/11_jpg.rf.488eadb9933e9b55eeb8093c03282716.jpg \n", " extracting: train/images/11_jpg.rf.844b73a408900329408feeeb216f38bf.jpg \n", " extracting: train/images/120_jpg.rf.8cbaff1cd4e6881deb2af1de123964ad.jpg \n", " extracting: train/images/121_jpg.rf.2fcf21ced2d1bed91136e09ecdbf8331.jpg \n", " extracting: train/images/121_jpg.rf.8e5cbd359ee98a337c790aad2407d656.jpg \n", " extracting: train/images/122_jpg.rf.2f94c80997232b8f6771affc230d90f8.jpg \n", " extracting: train/images/122_jpg.rf.8f3ea9fc2081427b4f7be8bb103443de.jpg \n", " extracting: train/images/123_jpg.rf.bb1b97c0c25c6ab5d46085799a16f5bb.jpg \n", " extracting: train/images/123_jpg.rf.f09f8341c6f82281f7f5cfca4d69bfaf.jpg \n", " extracting: train/images/125_jpg.rf.01105451c76747b177515d2ac25f9c5e.jpg \n", " extracting: train/images/125_jpg.rf.571096078deaa0e7877d9d192e96dd00.jpg \n", " extracting: train/images/126_jpg.rf.724729c5c480e822f03f59d0226a8311.jpg \n", " extracting: train/images/127_jpg.rf.eb7a48d917f1cef1e491f3a5de81858c.jpg \n", " extracting: train/images/128_jpg.rf.eb6e868380041cf16460a8b547db832d.jpg \n", " extracting: train/images/12_jpg.rf.68a73bc5e51790a2ce2af53d7754660f.jpg \n", " extracting: train/images/130_jpg.rf.e2aa30863d24b783c4a045f39ef9a2b0.jpg \n", " extracting: train/images/131_jpg.rf.a4ad747da70051a43b9f9d43eec6f402.jpg \n", " extracting: train/images/132_jpg.rf.c3235459624e3e6d63b0a5cc2c6347bd.jpg \n", " extracting: train/images/132_jpg.rf.c92ce7cd5432fabe6f7c1c91c31c4f42.jpg \n", " extracting: train/images/133_jpg.rf.5383f0bc39213405ebc46e4f5a626818.jpg \n", " extracting: train/images/133_jpg.rf.f8c6d91f72dd0e4c0ec93343ab0d2b8c.jpg \n", " extracting: train/images/134_jpg.rf.d8df8eae4e2b05bcbc13f2a5db4b805b.jpg \n", " extracting: train/images/135_jpg.rf.dd5407064cec38b6561c5a292e33fd2f.jpg \n", " extracting: train/images/136_jpg.rf.1bad3a7e7d94a5a06400f7e21dc5700c.jpg \n", " extracting: train/images/137_jpg.rf.31a3f466a4619b838212babdf6981dac.jpg \n", " extracting: train/images/137_jpg.rf.989b4f97c0aeaa6e9508b4952fc85594.jpg \n", " extracting: train/images/138_jpg.rf.af0d6552fb0dfebce0cde374eeb68365.jpg \n", " extracting: train/images/139_jpg.rf.91656317126d6d815b6f04295a0b2971.jpg \n", " extracting: train/images/13_jpg.rf.08985f212f5426748b7d04f4404a13dd.jpg \n", " extracting: train/images/13_jpg.rf.1cd849e707da82a181cac2dc521d20af.jpg \n", " extracting: train/images/13_jpg.rf.6349576e7576059d270e7086cbd106f0.jpg \n", " extracting: train/images/13_jpg.rf.e79223dcdcac7a30d81da2ac159d3e32.jpg \n", " extracting: train/images/140_jpg.rf.787572d93bb80689d9e7aecabd1cf48c.jpg \n", " extracting: train/images/141_jpg.rf.6a3e433cda927fa5d30799ef71b04688.jpg \n", " extracting: train/images/141_jpg.rf.b292d8762b16db3f56fe9885e4e1f4fc.jpg \n", " extracting: train/images/142_jpg.rf.7aba302b1f1cb09962657ce6a6707b5d.jpg \n", " extracting: train/images/142_jpg.rf.dc448d314a1cd46884e86e76a4357a62.jpg \n", " extracting: train/images/143_jpg.rf.61181a28feee1d6fbe8c31fe37bd16db.jpg \n", " extracting: train/images/144_jpg.rf.0fbdb9155b491126259b826c7dc093a7.jpg \n", " extracting: train/images/145_jpg.rf.df2b4ce06f7e9f0f5151f176f792cf48.jpg \n", " extracting: train/images/146_jpg.rf.bf435951e39d68488913c46dba64f93d.jpg \n", " extracting: train/images/147_jpg.rf.0d2c9881a75c08fbe54b4336448f5f82.jpg \n", " extracting: train/images/147_jpg.rf.b2fb411508ec07ae5ff26b47e0710e6a.jpg \n", " extracting: train/images/149_jpg.rf.75d07f38f46b09c30dbcb3494ea50adb.jpg \n", " extracting: train/images/149_jpg.rf.78d98355f97b58d13f56a5116d6f04c2.jpg \n", " extracting: train/images/14_jpg.rf.1ef6066cf4518be0b817cc03286764ff.jpg \n", " extracting: train/images/150_jpg.rf.db9c813388f888fea31434feb2e6abc8.jpg \n", " extracting: train/images/150_jpg.rf.e4500a803bc2a63e89729741d35ea8b0.jpg \n", " extracting: train/images/151_jpg.rf.dc5d0eab86789dc41dff314b4ec0c6ec.jpg \n", " extracting: train/images/151_jpg.rf.ddcd9cf65ea74537148a3112a6bbd30f.jpg \n", " extracting: train/images/152_jpg.rf.262677c9d1ebe4bbd7f4068ee6b05e78.jpg \n", " extracting: train/images/153_jpg.rf.6d3ff499748f878e8906b813426b38e6.jpg \n", " extracting: train/images/153_jpg.rf.bd378cabcee74083141f108ac3fb6177.jpg \n", " extracting: train/images/154_jpg.rf.05a28d6ef658c1c08f1764993f793957.jpg \n", " extracting: train/images/155_jpg.rf.29d52f734b07cd5419a206dbbaf0f44a.jpg \n", " extracting: train/images/156_jpg.rf.7896bd2dea8a8a74a3e7f09e418cd067.jpg \n", " extracting: train/images/156_jpg.rf.871c7d45e203e9a52b058ae54324450e.jpg \n", " extracting: train/images/157_jpg.rf.3b60e8fd65d2954356482bfe618ff4db.jpg \n", " extracting: train/images/158_jpg.rf.b3e027c52dc103c84ff8571890fe5446.jpg \n", " extracting: train/images/159_jpg.rf.f9a9b7ddb66937052ca9a843ee6867e5.jpg \n", " extracting: train/images/15_jpg.rf.ce581291966ea7e9c733a09f48a61136.jpg \n", " extracting: train/images/15_jpg.rf.da96d4a15f3f171f0b810e4d70e3e6b2.jpg \n", " extracting: train/images/160_jpg.rf.da84392df9bc4c9aeddfc5ca60268f36.jpg \n", " extracting: train/images/161_jpg.rf.bfe38225774452f25d085e797d4210d5.jpg \n", " extracting: train/images/161_jpg.rf.ef60cb59cc4bbd45d0fa8249dc975ff4.jpg \n", " extracting: train/images/162_jpg.rf.8b1ac5b961ad3472044d488f721a9d5f.jpg \n", " extracting: train/images/162_jpg.rf.b1223cfaa4e7ab4cdc52a88e8333f361.jpg \n", " extracting: train/images/165_jpg.rf.777b43a7d8c4e113fdbb8aaa912e7a5f.jpg \n", " extracting: train/images/166_jpg.rf.aa2a38ccf92bcff3752e3fb5f5fe42ed.jpg \n", " extracting: train/images/166_jpg.rf.ee4572d383deeb680b491b3f6ec0441a.jpg \n", " extracting: train/images/167_jpg.rf.64abbfa5d131c580d86afb90f3334b6b.jpg \n", " extracting: train/images/167_jpg.rf.e7b1dd42bc145dc2afcdf6cc99241e9d.jpg \n", " extracting: train/images/168_jpg.rf.0be5bdebbcbc1faa71304bd354ed7d2b.jpg \n", " extracting: train/images/168_jpg.rf.a02274f81d2827f359f5aed019911948.jpg \n", " extracting: train/images/169_jpg.rf.8e9a11a68b060ddce32bb4a99015266e.jpg \n", " extracting: train/images/169_jpg.rf.b5166e29ca34be55cbb6d491e96b8e96.jpg \n", " extracting: train/images/16_jpg.rf.85a887b958c5c3e52add14c0c947ea21.jpg \n", " extracting: train/images/170_jpg.rf.bbeec131e8ea5ee9edce5be7a731cc94.jpg \n", " extracting: train/images/171_jpg.rf.d63afb49142241bc44cca62928bace74.jpg \n", " extracting: train/images/171_jpg.rf.dacf0a59fcc2fb28cf9220289b768d5e.jpg \n", " extracting: train/images/172_jpg.rf.9bfcf7676ca8da89735790e9203f3f8b.jpg \n", " extracting: train/images/173_jpg.rf.cbcea99bb7a27620813d2026d2740de1.jpg \n", " extracting: train/images/174_jpg.rf.0b8c1793e5123e258c674685a578d4be.jpg \n", " extracting: train/images/174_jpg.rf.be8dcc64245fc2a27448ad53a353b475.jpg \n", " extracting: train/images/175_jpg.rf.74e62caee32c4d8af6d93c189108777a.jpg \n", " extracting: train/images/176_jpg.rf.294bcadfc615dd8aef5abd6e52be13fd.jpg \n", " extracting: train/images/177_jpg.rf.a5f6e20d94ccf5454db6408b2d8dc0a0.jpg \n", " extracting: train/images/178_jpg.rf.371f4be811a4d78af93ebb705f9ec85d.jpg \n", " extracting: train/images/178_jpg.rf.9ed2e7d2ec6b3c8e7b73bd1dd2b253cc.jpg \n", " extracting: train/images/179_jpg.rf.81ec78430ed6b87c332d92f34b9dc36b.jpg \n", " extracting: train/images/17_jpg.rf.4ccbf418e57d756d146f55a4d843dde6.jpg \n", " extracting: train/images/17_jpg.rf.6d746b0b4a1f5fcbe87e1cd11774f556.jpg \n", " extracting: train/images/180_jpg.rf.46b6f33adedc5cf593c5154a16765c44.jpg \n", " extracting: train/images/180_jpg.rf.73fdffa7f4d763c3bd0b6fc282eeaf33.jpg \n", " extracting: train/images/181_jpg.rf.43939c5b0b071e76b99e2a179c0bbf7f.jpg \n", " extracting: train/images/181_jpg.rf.ac5a7a78cd33ba190ab59e62570e45be.jpg \n", " extracting: train/images/182_jpg.rf.0e0bfc6e08b5a5c4ea6954501bda6da4.jpg \n", " extracting: train/images/182_jpg.rf.3932e8243d4e704563c040b076ba9b3a.jpg \n", " extracting: train/images/183_jpg.rf.6d348f4b9eb12514215fee09e201c06b.jpg \n", " extracting: train/images/183_jpg.rf.75852da5a4b0ff2120492e94a5095176.jpg \n", " extracting: train/images/185_jpg.rf.5a7cd04d042d5de56c0d0447203a292f.jpg \n", " extracting: train/images/185_jpg.rf.f4cb2845f19c9d453ee2a4933ca34332.jpg \n", " extracting: train/images/187_jpg.rf.727c58d74ab7fbc19786a6de6d888a59.jpg \n", " extracting: train/images/187_jpg.rf.b8125eeed08224b87641c3788ee8ea6b.jpg \n", " extracting: train/images/188_jpg.rf.0b99282177b812e17f9ccb258634fa89.jpg \n", " extracting: train/images/189_jpg.rf.cfa3d2faf10ebe94ee72f05d891f6907.jpg \n", " extracting: train/images/18_jpg.rf.07a61f79eae0f5832470776ed0450451.jpg \n", " extracting: train/images/18_jpg.rf.a2d809d57588c97462f5fbc90033c186.jpg \n", " extracting: train/images/190_jpg.rf.656a53fae99869a075b380277e16afdc.jpg \n", " extracting: train/images/190_jpg.rf.af0c7fb25d916b0f00b2cc159036e237.jpg \n", " extracting: train/images/192_jpg.rf.2abb4a84a7faebe246bc62c784f99c98.jpg \n", " extracting: train/images/192_jpg.rf.a44d116b12d2efa63b37fe6bc7b5318d.jpg \n", " extracting: train/images/193_jpg.rf.4c913f3f078d15007d80a9ea4cb570a5.jpg \n", " extracting: train/images/193_jpg.rf.d574ff61ebb1c021c71797ba8c8ca4e9.jpg \n", " extracting: train/images/194_jpg.rf.91590710b512702dcaaed96b89b8316e.jpg \n", " extracting: train/images/195_jpg.rf.20d486f8286ea8e9b92f8af843790573.jpg \n", " extracting: train/images/195_jpg.rf.cac62eccf1bd3e755192f1f8ed6ee99a.jpg \n", " extracting: train/images/196_jpg.rf.356ffbc896a223eb1e006c2e5146479a.jpg \n", " extracting: train/images/196_jpg.rf.e8beae6253abb156a94f6682f15d469b.jpg \n", " extracting: train/images/198_jpg.rf.a33d4070ed7733c02cdef82a6779de6f.jpg \n", " extracting: train/images/198_jpg.rf.b9863fc076265bd47f1aff3059ee504e.jpg \n", " extracting: train/images/19_jpg.rf.c1412c850544562a4ce66704b529b51e.jpg \n", " extracting: train/images/19_jpg.rf.c6c80edecffb405414b2b5e150335357.jpg \n", " extracting: train/images/1_jpg.rf.0776111b7a68bc084029ec47f2e47053.jpg \n", " extracting: train/images/1_jpg.rf.1637bfe42fd0d0eaf1434d4ea224d54c.jpg \n", " extracting: train/images/200_jpg.rf.c3af427dff5b182e25bb5c4b297c8b90.jpg \n", " extracting: train/images/201_jpg.rf.41eaa4c971a2288d37efb033560be964.jpg \n", " extracting: train/images/203_jpg.rf.7e3d49204f4132b97c2a62529dbc955c.jpg \n", " extracting: train/images/207_jpg.rf.5a5561842c470c5482d2ad3ae8bf7e06.jpg \n", " extracting: train/images/208_jpg.rf.92fa92460ae39ab5460f74f7cd535d61.jpg \n", " extracting: train/images/209_jpg.rf.190969ecb50bb6e753a9894a93ac725f.jpg \n", " extracting: train/images/20_jpg.rf.9ab2782baf5cf8c7d0374166ca8a3c61.jpg \n", " extracting: train/images/20_jpg.rf.d8e5d6f4d8d40a1ce7597796c8f8b08b.jpg \n", " extracting: train/images/210_jpg.rf.0807d8505d8b64d57b16ea95be540268.jpg \n", " extracting: train/images/210_jpg.rf.98d80112854d697183d6f2bc354cc955.jpg \n", " extracting: train/images/211_jpg.rf.62ee427b86cbca326f0ee6d5a7e69a6f.jpg \n", " extracting: train/images/212_jpg.rf.75009d77573834db91d45050281584ed.jpg \n", " extracting: train/images/213_jpg.rf.5737f8bd2cdb6e678a70282be69a6371.jpg \n", " extracting: train/images/213_jpg.rf.ca9082a2f566f83f037c969193503212.jpg \n", " extracting: train/images/214_jpg.rf.f12fd4aad0eb6a14a7ebe8d062753f84.jpg \n", " extracting: train/images/215_jpg.rf.0b4d888480e679beb6196800fc4d765f.jpg \n", " extracting: train/images/215_jpg.rf.8511e4eea6f241cc82efd2b2a2742ae0.jpg \n", " extracting: train/images/216_jpg.rf.67c30b53dece6b58d954d777dbd17723.jpg \n", " extracting: train/images/216_jpg.rf.d8039ba92067a7eae059f31262e724ae.jpg \n", " extracting: train/images/217_jpg.rf.1e592708b9366488c73a3003f157823d.jpg \n", " extracting: train/images/217_jpg.rf.6165e51a1acef8b05f47ba67d1442d4f.jpg \n", " extracting: train/images/218_jpg.rf.94eeed78bb3669ac2308206a837a3129.jpg \n", " extracting: train/images/21_jpg.rf.3713e03a9f4abccdd0f4ed3a0e86c9e3.jpg \n", " extracting: train/images/21_jpg.rf.547ce6c520327c484d9919e290b2cc81.jpg \n", " extracting: train/images/220_jpg.rf.8e63c703fe7e29252286e385593f0134.jpg \n", " extracting: train/images/221_jpg.rf.b398fac201f7e2daa26860a254cdbffb.jpg \n", " extracting: train/images/223_jpg.rf.7f2e4529b6a746624d67dc115f6fe343.jpg \n", " extracting: train/images/223_jpg.rf.c33a1acde35258c19f9d92f6327a2fc0.jpg \n", " extracting: train/images/224_jpg.rf.28835be4e304f7447ffb43f3f1ce0dae.jpg \n", " extracting: train/images/224_jpg.rf.d9118d4e7aee46440f44f9fac3b5e386.jpg \n", " extracting: train/images/225_jpg.rf.79a0cb7435b4fb2144639728dbfc6007.jpg \n", " extracting: train/images/225_jpg.rf.dfbf1fad0748d1726823b8b4c7d6ea10.jpg \n", " extracting: train/images/226_jpg.rf.2acc127805c31221b659c2aeaf28f0a8.jpg \n", " extracting: train/images/226_jpg.rf.b9f3029ce5b052ae94353148b7c3e0ba.jpg \n", " extracting: train/images/227_jpg.rf.264ae1363b6f16f4e218097a0bd0f270.jpg \n", " extracting: train/images/229_jpg.rf.9835948a4eba66f51e06614420a0a4a2.jpg \n", " extracting: train/images/22_jpg.rf.be86eb4474df06c374320097240ba167.jpg \n", " extracting: train/images/230_jpg.rf.92b582e26f653a6552b23ed04c715390.jpg \n", " extracting: train/images/231_jpg.rf.48b48969e774fd78168f95fa013d0889.jpg \n", " extracting: train/images/231_jpg.rf.7fd7439cc2c5562e303b8d9845630417.jpg \n", " extracting: train/images/232_jpg.rf.4673b30638fa7558fe0a7df5122f8fc2.jpg \n", " extracting: train/images/232_jpg.rf.b2fc4b93794a9561d053e6fbecf70d8f.jpg \n", " extracting: train/images/233_jpg.rf.1f81f984aec308c0e4ce1e5359123259.jpg \n", " extracting: train/images/234_jpg.rf.8d27850e39725f00127416b167a643d0.jpg \n", " extracting: train/images/234_jpg.rf.ecb01f2601645acb6bea366f40ec9436.jpg \n", " extracting: train/images/236_jpg.rf.15a8020fae0020d269716ee9cf4bbec5.jpg \n", " extracting: train/images/238_jpg.rf.66c13d66c526da41184b295b3103d839.jpg \n", " extracting: train/images/23_jpg.rf.1d7c1198478a3aec27a5682e341b2761.jpg \n", " extracting: train/images/23_jpg.rf.423c64a3db6a833ed62f5e6dc50ee2de.jpg \n", " extracting: train/images/23_jpg.rf.9fb72e44771ec1262a4ea354861c6963.jpg \n", " extracting: train/images/244_jpg.rf.9dc9f991fcbefe92ae26defe020344a5.jpg \n", " extracting: train/images/246_jpg.rf.e37216a899da6017ae356be19429c473.jpg \n", " extracting: train/images/247_jpg.rf.94c734576f01c059697a0f738dd1ad11.jpg \n", " extracting: train/images/248_jpg.rf.13958ef3e5f1366734f55a83f398ab14.jpg \n", " extracting: train/images/24_jpg.rf.05baf470a45332948b533bf8bd047021.jpg \n", " extracting: train/images/24_jpg.rf.42d4c7d361140363fc1798a726339e2d.jpg \n", " extracting: train/images/24_jpg.rf.a12858ed5e02192304e081ca68facff6.jpg \n", " extracting: train/images/250_jpg.rf.64ec7a9aee624428b361b1b8fa4e84bb.jpg \n", " extracting: train/images/251_jpg.rf.7b71a26563fc0507d173dabe84c975b0.jpg \n", " extracting: train/images/253_jpg.rf.f0b851f317efdbf0e94d5684c30ee49c.jpg \n", " extracting: train/images/256_jpg.rf.80e678d4bf7d116ea1080b285a4ca5a8.jpg \n", " extracting: train/images/257_jpg.rf.317c5fad2bb899f8cee0589c8a3ada00.jpg \n", " extracting: train/images/259_jpg.rf.f4b6fbfcb110d92d19c8af65ba4132ef.jpg \n", " extracting: train/images/25_jpg.rf.52c65a5a3e53746ebbe3e1cbd006479c.jpg \n", " extracting: train/images/25_jpg.rf.db8596450354de60ffc24b1bf27a9928.jpg \n", " extracting: train/images/260_jpg.rf.97f1ba7cc950a030284f266f019e8919.jpg \n", " extracting: train/images/26_jpg.rf.2aba2240280b1700d88c41540d322c2d.jpg \n", " extracting: train/images/26_jpg.rf.d7db499d7bf0f50233d71b662fea9e5a.jpg \n", " extracting: train/images/27_jpg.rf.2a35c5854681414ec54a25a770d014fb.jpg \n", " extracting: train/images/29_jpg.rf.86e23fa5a6e0e3e2442ef03b517d6841.jpg \n", " extracting: train/images/29_jpg.rf.a358d0249bf4ce4ecc85be891f7d1721.jpg \n", " extracting: train/images/2_jpg.rf.8eb7fccf2d1a8742b75740abe2ee3df5.jpg \n", " extracting: train/images/2_jpg.rf.a1c07668e4cfec20b6c3df8542eeed80.jpg \n", " extracting: train/images/2_jpg.rf.bc467fa9e7f2c2984af39534823ce0ab.jpg \n", " extracting: train/images/2_jpg.rf.f5c424b768ea9926144c37dfacbd211c.jpg \n", " extracting: train/images/30_jpg.rf.51bf68ab3081fa77658cc20e771bcf90.jpg \n", " extracting: train/images/30_jpg.rf.df686211ca920574dcf175ed01dc97d5.jpg \n", " extracting: train/images/31_jpg.rf.6eb03284f367de4562c95f3190f95f4b.jpg \n", " extracting: train/images/31_jpg.rf.9489b473467aaaf1eb2e0232b5931862.jpg \n", " extracting: train/images/32_jpg.rf.43261065f4b3ba3c91e03987aed62a2b.jpg \n", " extracting: train/images/33_jpg.rf.2ad304d1eedb710220836fd78c17014d.jpg \n", " extracting: train/images/33_jpg.rf.62736bece5188dda811d2bf3fbc2cb57.jpg \n", " extracting: train/images/33_jpg.rf.8853ac0a453f83f91e23ebf5ddeb4f82.jpg \n", " extracting: train/images/34_jpg.rf.75c88e6db5553b8d02d02b36d672b7e7.jpg \n", " extracting: train/images/34_jpg.rf.ffabf8a7ea1be71a9d1683b6114854e0.jpg \n", " extracting: train/images/35_jpg.rf.c3b8a090692ba42cb6a83f7b08ced95a.jpg \n", " extracting: train/images/35_jpg.rf.f7d88820195532618481468ed1a9f6e9.jpg \n", " extracting: train/images/36_jpg.rf.d77fed55a878f4737b21b82daf0ad36e.jpg \n", " extracting: train/images/37_jpg.rf.7fa7d6be2c491438168f0df3073f79d5.jpg \n", " extracting: train/images/37_jpg.rf.c36014940cdf902adbdf464aee59f3f5.jpg \n", " extracting: train/images/37_jpg.rf.f6b2fb7cc89d8aa3a4d8f0c18cb6c3bd.jpg \n", " extracting: train/images/38_jpg.rf.3edacd31811adec6878cdde676402b2c.jpg \n", " extracting: train/images/38_jpg.rf.84ab7120aaf809960207e5ad59cb6d14.jpg \n", " extracting: train/images/38_jpg.rf.f903bac80ac79b1fb45989d1d2d88b10.jpg \n", " extracting: train/images/39_jpg.rf.0b9cf3c8e8e0132cf98d03cfa9e951db.jpg \n", " extracting: train/images/39_jpg.rf.9135dc30802afd66da151da8d5f7f69b.jpg \n", " extracting: train/images/3_jpg.rf.1b3f4f9b98d9baea690addf4754a3e27.jpg \n", " extracting: train/images/3_jpg.rf.60201a0fae5d0522702ba0041e9e8f5e.jpg \n", " extracting: train/images/40_jpg.rf.04d954b3e104aa762483037002965388.jpg \n", " extracting: train/images/40_jpg.rf.21c02e3d712578e9c26c66f87bae918c.jpg \n", " extracting: train/images/41_jpg.rf.9a8a365889b64d78c0e863a2eaeffffe.jpg \n", " extracting: train/images/42_jpg.rf.f3e5679b1bc908dea7cf538f2c785eb4.jpg \n", " extracting: train/images/43_jpg.rf.221d09c550d1edf8462dce17559c59f2.jpg \n", " extracting: train/images/43_jpg.rf.e5065cf6d78459d4fb3f0f3dca625552.jpg \n", " extracting: train/images/45_jpg.rf.213f578e25fb7b3a7a8298f6a988e00f.jpg \n", " extracting: train/images/45_jpg.rf.856fd0b4a42c851bc1d5a955a6d2ffe6.jpg \n", " extracting: train/images/47_jpg.rf.2803e20eac11bed4a2162424fc23d1d6.jpg \n", " extracting: train/images/47_jpg.rf.a7792e1d649b43ecabeb2507a006e9ba.jpg \n", " extracting: train/images/48_jpg.rf.01b8ebb2f36be13981263dd5034320ff.jpg \n", " extracting: train/images/49_jpg.rf.162bc772dc987ef3961d3af2356d1fb8.jpg \n", " extracting: train/images/49_jpg.rf.5cfc16977fe531caad85a9be16b1102a.jpg \n", " extracting: train/images/4_jpg.rf.f29358be36e532da6d920f7fdb5445c7.jpg \n", " extracting: train/images/50_jpg.rf.debdb07a44a2a984268b1dc3de69969c.jpg \n", " extracting: train/images/51_jpg.rf.a737d6c43b80d3c13ad0d771e526ece4.jpg \n", " extracting: train/images/52_jpg.rf.5d2a5f583ff3cb13d90615a4b0866aba.jpg \n", " extracting: train/images/52_jpg.rf.b0383e98b694f6cad6a08c742fa5af37.jpg \n", " extracting: train/images/53_jpg.rf.d81a65e1325d254d5f1f9bec0cb0409d.jpg \n", " extracting: train/images/54_jpg.rf.3e9362fe294b384b3cfaa33ee8151573.jpg \n", " extracting: train/images/55_jpg.rf.3eab8ea4db50d3a61bd0bd0a66f5a5d5.jpg \n", " extracting: train/images/56_jpg.rf.2f4f1532b2fe63e305eecb0b18df122e.jpg \n", " extracting: train/images/56_jpg.rf.a7b08365ee532722e47a0daa502f98a1.jpg \n", " extracting: train/images/57_jpg.rf.7cf3ed8d1ad68408d9e358d537589afe.jpg \n", " extracting: train/images/58_jpg.rf.607550315c6a04d59ac368ecd06deadc.jpg \n", " extracting: train/images/58_jpg.rf.65e8bb462f83d0b88b473ad1f1c0737b.jpg \n", " extracting: train/images/59_jpg.rf.bf18b8b4e751b34a6c218a52da175905.jpg \n", " extracting: train/images/5_jpg.rf.6179aadde477f0b3cbe3471174d7ce42.jpg \n", " extracting: train/images/60_jpg.rf.852b4acddf482ecb26d9badee11de9e8.jpg \n", " extracting: train/images/61_jpg.rf.12a99e346c39f6426eb3a68bd0a4bcd4.jpg \n", " extracting: train/images/62_jpg.rf.e7a2e6cb0db7cc34c97ba32ce2533e21.jpg \n", " extracting: train/images/62_jpg.rf.edb2a3ef6090987f10fe98b509ac35e6.jpg \n", " extracting: train/images/63_jpg.rf.f005ac31d3559acc60494819cff61283.jpg \n", " extracting: train/images/64_jpg.rf.c159bd3d5aaa1416d954273da6f245bf.jpg \n", " extracting: train/images/65_jpg.rf.6693a094142d9066bc7f90a8f314c7e5.jpg \n", " extracting: train/images/65_jpg.rf.8b7e147516479616744f4c1016f04229.jpg \n", " extracting: train/images/66_jpg.rf.a400b7f3e1f642d036ec0891c5b0b2b2.jpg \n", " extracting: train/images/67_jpg.rf.c8cba7069b74ba60dab57fa03714b9bc.jpg \n", " extracting: train/images/69_jpg.rf.8edfc20839445f366c94a85f8b2a3b74.jpg \n", " extracting: train/images/6_jpg.rf.c5012148af1b926fd573da741260f7cb.jpg \n", " extracting: train/images/6_jpg.rf.cdbd1e80dfa65c70290ea975bee06140.jpg \n", " extracting: train/images/70_jpg.rf.a45b1f9b3f335f0cc7210b9dc2f858cf.jpg \n", " extracting: train/images/71_jpg.rf.99f61cda0ce2a3f0e904e0acfb65fe63.jpg \n", " extracting: train/images/72_jpg.rf.a1561fe1a1ff68c2c692ada9b37b1e38.jpg \n", " extracting: train/images/73_jpg.rf.506585e8ee81cfb2e5f0ff56ac6e617e.jpg \n", " extracting: train/images/73_jpg.rf.aa734b5afb647f0f8564eac868d4847f.jpg \n", " extracting: train/images/74_jpg.rf.b082b446f273455968bff31da6ae2b5d.jpg \n", " extracting: train/images/75_jpg.rf.0cdc256b288cda598a3021afeb2fe7d4.jpg \n", " extracting: train/images/77_jpg.rf.c2c06adf75dfc70c0b6b45312e31bfc2.jpg \n", " extracting: train/images/78_jpg.rf.96e25cbff2a424c6ea1b292036d3f52b.jpg \n", " extracting: train/images/79_jpg.rf.9607e32bbc2f30ce0c842f6e4219832e.jpg \n", " extracting: train/images/7_jpg.rf.0660f8d53f65f6c7c4101ddbdc9ceab2.jpg \n", " extracting: train/images/7_jpg.rf.ac3b5792870ff4c849eb2a3161851d11.jpg \n", " extracting: train/images/7_jpg.rf.cbf0bcc77694943a324b3ccf768a8429.jpg \n", " extracting: train/images/80_jpg.rf.13af98b759d02d2fd161d334d5cb96b2.jpg \n", " extracting: train/images/81_jpg.rf.150b636526a0ce59b286bb7d3f0c598b.jpg \n", " extracting: train/images/81_jpg.rf.696b42552991c47656769986dfddb53b.jpg \n", " extracting: train/images/82_jpg.rf.13d89cf9c5ed335550d0eaf45ff1a400.jpg \n", " extracting: train/images/82_jpg.rf.bb68d26eab68f004d23d67afe93f4c9f.jpg \n", " extracting: train/images/83_jpg.rf.8cca490085879704aff93a43e304adf6.jpg \n", " extracting: train/images/83_jpg.rf.e12dc346de9f1cce9aabc64a49189866.jpg \n", " extracting: train/images/84_jpg.rf.186ec384e85b4f312eab5b2253ba159f.jpg \n", " extracting: train/images/85_jpg.rf.163bde45fa81e3ea2190c85c61a178f0.jpg \n", " extracting: train/images/85_jpg.rf.8ea2a0ee640bcf6ecbe162a905cbdbaf.jpg \n", " extracting: train/images/86_jpg.rf.23a698df7fcfa991e86db636c5950128.jpg \n", " extracting: train/images/88_jpg.rf.12492e8bce887e10db9cef78edccbf25.jpg \n", " extracting: train/images/88_jpg.rf.e05e40de44aac71aacccadbcfa041a33.jpg \n", " extracting: train/images/8_jpg.rf.7f03f15f9a90dfca6712a551d6fb5602.jpg \n", " extracting: train/images/91_jpg.rf.dcf786fec5ce93aa30c7540aaa3a62d3.jpg \n", " extracting: train/images/92_jpg.rf.6f366ac03a703190a57c91d1cfd2cc72.jpg \n", " extracting: train/images/92_jpg.rf.eb29f4a6839e25b29c50d9d2d9002278.jpg \n", " extracting: train/images/93_jpg.rf.005b2df4af733a17cf56096aff3056fc.jpg \n", " extracting: train/images/93_jpg.rf.52f0515ada9bbcc901fa10bd9104bce4.jpg \n", " extracting: train/images/96_jpg.rf.05c2ed930c432abce351f179feb7ee3c.jpg \n", " extracting: train/images/97_jpg.rf.5ab3fe12359a0f191a93079ce332e624.jpg \n", " extracting: train/images/97_jpg.rf.dc5136746656ed99c27691f68fcff776.jpg \n", " extracting: train/images/98_jpg.rf.236913213428de15351dca9737305aa5.jpg \n", " extracting: train/images/9_jpg.rf.12bcc2f1fc94c8eeca8802e738c1ed57.jpg \n", " extracting: train/images/9_jpg.rf.b9f65d80e589327291d962f8d53d2f4f.jpg \n", " extracting: train/images/9_jpg.rf.baac2c277eac541d160362aceb170819.jpg \n", " creating: train/labels/\n", " extracting: train/labels/101_jpg.rf.01df1023e27cc86113edc3d17e5d9849.txt \n", " extracting: train/labels/101_jpg.rf.74b5e38ccf46b943a472180bd3fa7a85.txt \n", " extracting: train/labels/102_jpg.rf.f4689e16542e7e8544c98bac3c2c10d3.txt \n", " extracting: train/labels/103_jpg.rf.d553a0c775b4aa9dab3de5d011f2e64f.txt \n", " extracting: train/labels/104_jpg.rf.06f57ec7d99c16c70d9994570b7a605b.txt \n", " extracting: train/labels/105_jpg.rf.060c47fc43a095008de2e9264678cb99.txt \n", " extracting: train/labels/106_jpg.rf.0053bf294fc8bbeceabc55bb9964078d.txt \n", " extracting: train/labels/108_jpg.rf.6b7b1f558235d25be1140ca5309eb636.txt \n", " extracting: train/labels/109_jpg.rf.524608a9972ddf4a6fc441d4632eb557.txt \n", " extracting: train/labels/109_jpg.rf.cb72b7121f6817f67b1fb0346664d687.txt \n", " extracting: train/labels/10_jpg.rf.108e4ee854653611ee979134f5971e30.txt \n", " extracting: train/labels/110_jpg.rf.12c752d7ad7524e6a541392517679858.txt \n", " extracting: train/labels/110_jpg.rf.6424aaf0fe8572141c00f5c83a13ad21.txt \n", " extracting: train/labels/112_jpg.rf.0d68f48fe1bfd084f0a5835a98964121.txt \n", " extracting: train/labels/113_jpg.rf.61fd79beaaa30ed8a60fa595666acbb4.txt \n", " extracting: train/labels/113_jpg.rf.a12b678584e40190cef096c15c6e93f0.txt \n", " extracting: train/labels/114_jpg.rf.96b678d906b51f47115b91f3ef3ee163.txt \n", " extracting: train/labels/114_jpg.rf.d038c5858dd2e5abdca25b26d85653c0.txt \n", " extracting: train/labels/115_jpg.rf.1c0704b246778ea89acea41c0cb37c58.txt \n", " extracting: train/labels/116_jpg.rf.010eeb6d267e139172f0ee2695ce127a.txt \n", " extracting: train/labels/116_jpg.rf.4212aa83e14a778577830c048c37a2af.txt \n", " extracting: train/labels/118_jpg.rf.13fdc78d9dbd7e6f65151711c48133b7.txt \n", " extracting: train/labels/119_jpg.rf.f4ed5680348e1a179d2f4d1ac2b0e666.txt \n", " extracting: train/labels/11_jpg.rf.488eadb9933e9b55eeb8093c03282716.txt \n", " extracting: train/labels/11_jpg.rf.844b73a408900329408feeeb216f38bf.txt \n", " extracting: train/labels/120_jpg.rf.8cbaff1cd4e6881deb2af1de123964ad.txt \n", " extracting: train/labels/121_jpg.rf.2fcf21ced2d1bed91136e09ecdbf8331.txt \n", " extracting: train/labels/121_jpg.rf.8e5cbd359ee98a337c790aad2407d656.txt \n", " extracting: train/labels/122_jpg.rf.2f94c80997232b8f6771affc230d90f8.txt \n", " extracting: train/labels/122_jpg.rf.8f3ea9fc2081427b4f7be8bb103443de.txt \n", " extracting: train/labels/123_jpg.rf.bb1b97c0c25c6ab5d46085799a16f5bb.txt \n", " extracting: train/labels/123_jpg.rf.f09f8341c6f82281f7f5cfca4d69bfaf.txt \n", " extracting: train/labels/125_jpg.rf.01105451c76747b177515d2ac25f9c5e.txt \n", " extracting: train/labels/125_jpg.rf.571096078deaa0e7877d9d192e96dd00.txt \n", " extracting: train/labels/126_jpg.rf.724729c5c480e822f03f59d0226a8311.txt \n", " extracting: train/labels/127_jpg.rf.eb7a48d917f1cef1e491f3a5de81858c.txt \n", " extracting: train/labels/128_jpg.rf.eb6e868380041cf16460a8b547db832d.txt \n", " extracting: train/labels/12_jpg.rf.68a73bc5e51790a2ce2af53d7754660f.txt \n", " extracting: train/labels/130_jpg.rf.e2aa30863d24b783c4a045f39ef9a2b0.txt \n", " extracting: train/labels/131_jpg.rf.a4ad747da70051a43b9f9d43eec6f402.txt \n", " extracting: train/labels/132_jpg.rf.c3235459624e3e6d63b0a5cc2c6347bd.txt \n", " extracting: train/labels/132_jpg.rf.c92ce7cd5432fabe6f7c1c91c31c4f42.txt \n", " extracting: train/labels/133_jpg.rf.5383f0bc39213405ebc46e4f5a626818.txt \n", " extracting: train/labels/133_jpg.rf.f8c6d91f72dd0e4c0ec93343ab0d2b8c.txt \n", " extracting: train/labels/134_jpg.rf.d8df8eae4e2b05bcbc13f2a5db4b805b.txt \n", " extracting: train/labels/135_jpg.rf.dd5407064cec38b6561c5a292e33fd2f.txt \n", " extracting: train/labels/136_jpg.rf.1bad3a7e7d94a5a06400f7e21dc5700c.txt \n", " extracting: train/labels/137_jpg.rf.31a3f466a4619b838212babdf6981dac.txt \n", " extracting: train/labels/137_jpg.rf.989b4f97c0aeaa6e9508b4952fc85594.txt \n", " extracting: train/labels/138_jpg.rf.af0d6552fb0dfebce0cde374eeb68365.txt \n", " extracting: train/labels/139_jpg.rf.91656317126d6d815b6f04295a0b2971.txt \n", " extracting: train/labels/13_jpg.rf.08985f212f5426748b7d04f4404a13dd.txt \n", " extracting: train/labels/13_jpg.rf.1cd849e707da82a181cac2dc521d20af.txt \n", " extracting: train/labels/13_jpg.rf.6349576e7576059d270e7086cbd106f0.txt \n", " extracting: train/labels/13_jpg.rf.e79223dcdcac7a30d81da2ac159d3e32.txt \n", " extracting: train/labels/140_jpg.rf.787572d93bb80689d9e7aecabd1cf48c.txt \n", " extracting: train/labels/141_jpg.rf.6a3e433cda927fa5d30799ef71b04688.txt \n", " extracting: train/labels/141_jpg.rf.b292d8762b16db3f56fe9885e4e1f4fc.txt \n", " extracting: train/labels/142_jpg.rf.7aba302b1f1cb09962657ce6a6707b5d.txt \n", " extracting: train/labels/142_jpg.rf.dc448d314a1cd46884e86e76a4357a62.txt \n", " extracting: train/labels/143_jpg.rf.61181a28feee1d6fbe8c31fe37bd16db.txt \n", " extracting: train/labels/144_jpg.rf.0fbdb9155b491126259b826c7dc093a7.txt \n", " extracting: train/labels/145_jpg.rf.df2b4ce06f7e9f0f5151f176f792cf48.txt \n", " extracting: train/labels/146_jpg.rf.bf435951e39d68488913c46dba64f93d.txt \n", " extracting: train/labels/147_jpg.rf.0d2c9881a75c08fbe54b4336448f5f82.txt \n", " extracting: train/labels/147_jpg.rf.b2fb411508ec07ae5ff26b47e0710e6a.txt \n", " extracting: train/labels/149_jpg.rf.75d07f38f46b09c30dbcb3494ea50adb.txt \n", " extracting: train/labels/149_jpg.rf.78d98355f97b58d13f56a5116d6f04c2.txt \n", " extracting: train/labels/14_jpg.rf.1ef6066cf4518be0b817cc03286764ff.txt \n", " extracting: train/labels/150_jpg.rf.db9c813388f888fea31434feb2e6abc8.txt \n", " extracting: train/labels/150_jpg.rf.e4500a803bc2a63e89729741d35ea8b0.txt \n", " extracting: train/labels/151_jpg.rf.dc5d0eab86789dc41dff314b4ec0c6ec.txt \n", " extracting: train/labels/151_jpg.rf.ddcd9cf65ea74537148a3112a6bbd30f.txt \n", " extracting: train/labels/152_jpg.rf.262677c9d1ebe4bbd7f4068ee6b05e78.txt \n", " extracting: train/labels/153_jpg.rf.6d3ff499748f878e8906b813426b38e6.txt \n", " extracting: train/labels/153_jpg.rf.bd378cabcee74083141f108ac3fb6177.txt \n", " extracting: train/labels/154_jpg.rf.05a28d6ef658c1c08f1764993f793957.txt \n", " extracting: train/labels/155_jpg.rf.29d52f734b07cd5419a206dbbaf0f44a.txt \n", " extracting: train/labels/156_jpg.rf.7896bd2dea8a8a74a3e7f09e418cd067.txt \n", " extracting: train/labels/156_jpg.rf.871c7d45e203e9a52b058ae54324450e.txt \n", " extracting: train/labels/157_jpg.rf.3b60e8fd65d2954356482bfe618ff4db.txt \n", " extracting: train/labels/158_jpg.rf.b3e027c52dc103c84ff8571890fe5446.txt \n", " extracting: train/labels/159_jpg.rf.f9a9b7ddb66937052ca9a843ee6867e5.txt \n", " extracting: train/labels/15_jpg.rf.ce581291966ea7e9c733a09f48a61136.txt \n", " extracting: train/labels/15_jpg.rf.da96d4a15f3f171f0b810e4d70e3e6b2.txt \n", " extracting: train/labels/160_jpg.rf.da84392df9bc4c9aeddfc5ca60268f36.txt \n", " extracting: train/labels/161_jpg.rf.bfe38225774452f25d085e797d4210d5.txt \n", " extracting: train/labels/161_jpg.rf.ef60cb59cc4bbd45d0fa8249dc975ff4.txt \n", " extracting: train/labels/162_jpg.rf.8b1ac5b961ad3472044d488f721a9d5f.txt \n", " extracting: train/labels/162_jpg.rf.b1223cfaa4e7ab4cdc52a88e8333f361.txt \n", " extracting: train/labels/165_jpg.rf.777b43a7d8c4e113fdbb8aaa912e7a5f.txt \n", " extracting: train/labels/166_jpg.rf.aa2a38ccf92bcff3752e3fb5f5fe42ed.txt \n", " extracting: train/labels/166_jpg.rf.ee4572d383deeb680b491b3f6ec0441a.txt \n", " extracting: train/labels/167_jpg.rf.64abbfa5d131c580d86afb90f3334b6b.txt \n", " extracting: train/labels/167_jpg.rf.e7b1dd42bc145dc2afcdf6cc99241e9d.txt \n", " extracting: train/labels/168_jpg.rf.0be5bdebbcbc1faa71304bd354ed7d2b.txt \n", " extracting: train/labels/168_jpg.rf.a02274f81d2827f359f5aed019911948.txt \n", " extracting: train/labels/169_jpg.rf.8e9a11a68b060ddce32bb4a99015266e.txt \n", " extracting: train/labels/169_jpg.rf.b5166e29ca34be55cbb6d491e96b8e96.txt \n", " extracting: train/labels/16_jpg.rf.85a887b958c5c3e52add14c0c947ea21.txt \n", " extracting: train/labels/170_jpg.rf.bbeec131e8ea5ee9edce5be7a731cc94.txt \n", " extracting: train/labels/171_jpg.rf.d63afb49142241bc44cca62928bace74.txt \n", " extracting: train/labels/171_jpg.rf.dacf0a59fcc2fb28cf9220289b768d5e.txt \n", " extracting: train/labels/172_jpg.rf.9bfcf7676ca8da89735790e9203f3f8b.txt \n", " extracting: train/labels/173_jpg.rf.cbcea99bb7a27620813d2026d2740de1.txt \n", " extracting: train/labels/174_jpg.rf.0b8c1793e5123e258c674685a578d4be.txt \n", " extracting: train/labels/174_jpg.rf.be8dcc64245fc2a27448ad53a353b475.txt \n", " extracting: train/labels/175_jpg.rf.74e62caee32c4d8af6d93c189108777a.txt \n", " extracting: train/labels/176_jpg.rf.294bcadfc615dd8aef5abd6e52be13fd.txt \n", " extracting: train/labels/177_jpg.rf.a5f6e20d94ccf5454db6408b2d8dc0a0.txt \n", " extracting: train/labels/178_jpg.rf.371f4be811a4d78af93ebb705f9ec85d.txt \n", " extracting: train/labels/178_jpg.rf.9ed2e7d2ec6b3c8e7b73bd1dd2b253cc.txt \n", " extracting: train/labels/179_jpg.rf.81ec78430ed6b87c332d92f34b9dc36b.txt \n", " extracting: train/labels/17_jpg.rf.4ccbf418e57d756d146f55a4d843dde6.txt \n", " extracting: train/labels/17_jpg.rf.6d746b0b4a1f5fcbe87e1cd11774f556.txt \n", " extracting: train/labels/180_jpg.rf.46b6f33adedc5cf593c5154a16765c44.txt \n", " extracting: train/labels/180_jpg.rf.73fdffa7f4d763c3bd0b6fc282eeaf33.txt \n", " extracting: train/labels/181_jpg.rf.43939c5b0b071e76b99e2a179c0bbf7f.txt \n", " extracting: train/labels/181_jpg.rf.ac5a7a78cd33ba190ab59e62570e45be.txt \n", " extracting: train/labels/182_jpg.rf.0e0bfc6e08b5a5c4ea6954501bda6da4.txt \n", " extracting: train/labels/182_jpg.rf.3932e8243d4e704563c040b076ba9b3a.txt \n", " extracting: train/labels/183_jpg.rf.6d348f4b9eb12514215fee09e201c06b.txt \n", " extracting: train/labels/183_jpg.rf.75852da5a4b0ff2120492e94a5095176.txt \n", " extracting: train/labels/185_jpg.rf.5a7cd04d042d5de56c0d0447203a292f.txt \n", " extracting: train/labels/185_jpg.rf.f4cb2845f19c9d453ee2a4933ca34332.txt \n", " extracting: train/labels/187_jpg.rf.727c58d74ab7fbc19786a6de6d888a59.txt \n", " extracting: train/labels/187_jpg.rf.b8125eeed08224b87641c3788ee8ea6b.txt \n", " extracting: train/labels/188_jpg.rf.0b99282177b812e17f9ccb258634fa89.txt \n", " extracting: train/labels/189_jpg.rf.cfa3d2faf10ebe94ee72f05d891f6907.txt \n", " extracting: train/labels/18_jpg.rf.07a61f79eae0f5832470776ed0450451.txt \n", " extracting: train/labels/18_jpg.rf.a2d809d57588c97462f5fbc90033c186.txt \n", " extracting: train/labels/190_jpg.rf.656a53fae99869a075b380277e16afdc.txt \n", " extracting: train/labels/190_jpg.rf.af0c7fb25d916b0f00b2cc159036e237.txt \n", " extracting: train/labels/192_jpg.rf.2abb4a84a7faebe246bc62c784f99c98.txt \n", " extracting: train/labels/192_jpg.rf.a44d116b12d2efa63b37fe6bc7b5318d.txt \n", " extracting: train/labels/193_jpg.rf.4c913f3f078d15007d80a9ea4cb570a5.txt \n", " extracting: train/labels/193_jpg.rf.d574ff61ebb1c021c71797ba8c8ca4e9.txt \n", " extracting: train/labels/194_jpg.rf.91590710b512702dcaaed96b89b8316e.txt \n", " extracting: train/labels/195_jpg.rf.20d486f8286ea8e9b92f8af843790573.txt \n", " extracting: train/labels/195_jpg.rf.cac62eccf1bd3e755192f1f8ed6ee99a.txt \n", " extracting: train/labels/196_jpg.rf.356ffbc896a223eb1e006c2e5146479a.txt \n", " extracting: train/labels/196_jpg.rf.e8beae6253abb156a94f6682f15d469b.txt \n", " extracting: train/labels/198_jpg.rf.a33d4070ed7733c02cdef82a6779de6f.txt \n", " extracting: train/labels/198_jpg.rf.b9863fc076265bd47f1aff3059ee504e.txt \n", " extracting: train/labels/19_jpg.rf.c1412c850544562a4ce66704b529b51e.txt \n", " extracting: train/labels/19_jpg.rf.c6c80edecffb405414b2b5e150335357.txt \n", " extracting: train/labels/1_jpg.rf.0776111b7a68bc084029ec47f2e47053.txt \n", " extracting: train/labels/1_jpg.rf.1637bfe42fd0d0eaf1434d4ea224d54c.txt \n", " extracting: train/labels/200_jpg.rf.c3af427dff5b182e25bb5c4b297c8b90.txt \n", " extracting: train/labels/201_jpg.rf.41eaa4c971a2288d37efb033560be964.txt \n", " extracting: train/labels/203_jpg.rf.7e3d49204f4132b97c2a62529dbc955c.txt \n", " extracting: train/labels/207_jpg.rf.5a5561842c470c5482d2ad3ae8bf7e06.txt \n", " extracting: train/labels/208_jpg.rf.92fa92460ae39ab5460f74f7cd535d61.txt \n", " extracting: train/labels/209_jpg.rf.190969ecb50bb6e753a9894a93ac725f.txt \n", " extracting: train/labels/20_jpg.rf.9ab2782baf5cf8c7d0374166ca8a3c61.txt \n", " extracting: train/labels/20_jpg.rf.d8e5d6f4d8d40a1ce7597796c8f8b08b.txt \n", " extracting: train/labels/210_jpg.rf.0807d8505d8b64d57b16ea95be540268.txt \n", " extracting: train/labels/210_jpg.rf.98d80112854d697183d6f2bc354cc955.txt \n", " extracting: train/labels/211_jpg.rf.62ee427b86cbca326f0ee6d5a7e69a6f.txt \n", " extracting: train/labels/212_jpg.rf.75009d77573834db91d45050281584ed.txt \n", " extracting: train/labels/213_jpg.rf.5737f8bd2cdb6e678a70282be69a6371.txt \n", " extracting: train/labels/213_jpg.rf.ca9082a2f566f83f037c969193503212.txt \n", " extracting: train/labels/214_jpg.rf.f12fd4aad0eb6a14a7ebe8d062753f84.txt \n", " extracting: train/labels/215_jpg.rf.0b4d888480e679beb6196800fc4d765f.txt \n", " extracting: train/labels/215_jpg.rf.8511e4eea6f241cc82efd2b2a2742ae0.txt \n", " extracting: train/labels/216_jpg.rf.67c30b53dece6b58d954d777dbd17723.txt \n", " extracting: train/labels/216_jpg.rf.d8039ba92067a7eae059f31262e724ae.txt \n", " extracting: train/labels/217_jpg.rf.1e592708b9366488c73a3003f157823d.txt \n", " extracting: train/labels/217_jpg.rf.6165e51a1acef8b05f47ba67d1442d4f.txt \n", " extracting: train/labels/218_jpg.rf.94eeed78bb3669ac2308206a837a3129.txt \n", " extracting: train/labels/21_jpg.rf.3713e03a9f4abccdd0f4ed3a0e86c9e3.txt \n", " extracting: train/labels/21_jpg.rf.547ce6c520327c484d9919e290b2cc81.txt \n", " extracting: train/labels/220_jpg.rf.8e63c703fe7e29252286e385593f0134.txt \n", " extracting: train/labels/221_jpg.rf.b398fac201f7e2daa26860a254cdbffb.txt \n", " extracting: train/labels/223_jpg.rf.7f2e4529b6a746624d67dc115f6fe343.txt \n", " extracting: train/labels/223_jpg.rf.c33a1acde35258c19f9d92f6327a2fc0.txt \n", " extracting: train/labels/224_jpg.rf.28835be4e304f7447ffb43f3f1ce0dae.txt \n", " extracting: train/labels/224_jpg.rf.d9118d4e7aee46440f44f9fac3b5e386.txt \n", " extracting: train/labels/225_jpg.rf.79a0cb7435b4fb2144639728dbfc6007.txt \n", " extracting: train/labels/225_jpg.rf.dfbf1fad0748d1726823b8b4c7d6ea10.txt \n", " extracting: train/labels/226_jpg.rf.2acc127805c31221b659c2aeaf28f0a8.txt \n", " extracting: train/labels/226_jpg.rf.b9f3029ce5b052ae94353148b7c3e0ba.txt \n", " extracting: train/labels/227_jpg.rf.264ae1363b6f16f4e218097a0bd0f270.txt \n", " extracting: train/labels/229_jpg.rf.9835948a4eba66f51e06614420a0a4a2.txt \n", " extracting: train/labels/22_jpg.rf.be86eb4474df06c374320097240ba167.txt \n", " extracting: train/labels/230_jpg.rf.92b582e26f653a6552b23ed04c715390.txt \n", " extracting: train/labels/231_jpg.rf.48b48969e774fd78168f95fa013d0889.txt \n", " extracting: train/labels/231_jpg.rf.7fd7439cc2c5562e303b8d9845630417.txt \n", " extracting: train/labels/232_jpg.rf.4673b30638fa7558fe0a7df5122f8fc2.txt \n", " extracting: train/labels/232_jpg.rf.b2fc4b93794a9561d053e6fbecf70d8f.txt \n", " extracting: train/labels/233_jpg.rf.1f81f984aec308c0e4ce1e5359123259.txt \n", " extracting: train/labels/234_jpg.rf.8d27850e39725f00127416b167a643d0.txt \n", " extracting: train/labels/234_jpg.rf.ecb01f2601645acb6bea366f40ec9436.txt \n", " extracting: train/labels/236_jpg.rf.15a8020fae0020d269716ee9cf4bbec5.txt \n", " extracting: train/labels/238_jpg.rf.66c13d66c526da41184b295b3103d839.txt \n", " extracting: train/labels/23_jpg.rf.1d7c1198478a3aec27a5682e341b2761.txt \n", " extracting: train/labels/23_jpg.rf.423c64a3db6a833ed62f5e6dc50ee2de.txt \n", " extracting: train/labels/23_jpg.rf.9fb72e44771ec1262a4ea354861c6963.txt \n", " extracting: train/labels/244_jpg.rf.9dc9f991fcbefe92ae26defe020344a5.txt \n", " extracting: train/labels/246_jpg.rf.e37216a899da6017ae356be19429c473.txt \n", " extracting: train/labels/247_jpg.rf.94c734576f01c059697a0f738dd1ad11.txt \n", " extracting: train/labels/248_jpg.rf.13958ef3e5f1366734f55a83f398ab14.txt \n", " extracting: train/labels/24_jpg.rf.05baf470a45332948b533bf8bd047021.txt \n", " extracting: train/labels/24_jpg.rf.42d4c7d361140363fc1798a726339e2d.txt \n", " extracting: train/labels/24_jpg.rf.a12858ed5e02192304e081ca68facff6.txt \n", " extracting: train/labels/250_jpg.rf.64ec7a9aee624428b361b1b8fa4e84bb.txt \n", " extracting: train/labels/251_jpg.rf.7b71a26563fc0507d173dabe84c975b0.txt \n", " extracting: train/labels/253_jpg.rf.f0b851f317efdbf0e94d5684c30ee49c.txt \n", " extracting: train/labels/256_jpg.rf.80e678d4bf7d116ea1080b285a4ca5a8.txt \n", " extracting: train/labels/257_jpg.rf.317c5fad2bb899f8cee0589c8a3ada00.txt \n", " extracting: train/labels/259_jpg.rf.f4b6fbfcb110d92d19c8af65ba4132ef.txt \n", " extracting: train/labels/25_jpg.rf.52c65a5a3e53746ebbe3e1cbd006479c.txt \n", " extracting: train/labels/25_jpg.rf.db8596450354de60ffc24b1bf27a9928.txt \n", " extracting: train/labels/260_jpg.rf.97f1ba7cc950a030284f266f019e8919.txt \n", " extracting: train/labels/26_jpg.rf.2aba2240280b1700d88c41540d322c2d.txt \n", " extracting: train/labels/26_jpg.rf.d7db499d7bf0f50233d71b662fea9e5a.txt \n", " extracting: train/labels/27_jpg.rf.2a35c5854681414ec54a25a770d014fb.txt \n", " extracting: train/labels/29_jpg.rf.86e23fa5a6e0e3e2442ef03b517d6841.txt \n", " extracting: train/labels/29_jpg.rf.a358d0249bf4ce4ecc85be891f7d1721.txt \n", " extracting: train/labels/2_jpg.rf.8eb7fccf2d1a8742b75740abe2ee3df5.txt \n", " extracting: train/labels/2_jpg.rf.a1c07668e4cfec20b6c3df8542eeed80.txt \n", " extracting: train/labels/2_jpg.rf.bc467fa9e7f2c2984af39534823ce0ab.txt \n", " extracting: train/labels/2_jpg.rf.f5c424b768ea9926144c37dfacbd211c.txt \n", " extracting: train/labels/30_jpg.rf.51bf68ab3081fa77658cc20e771bcf90.txt \n", " extracting: train/labels/30_jpg.rf.df686211ca920574dcf175ed01dc97d5.txt \n", " extracting: train/labels/31_jpg.rf.6eb03284f367de4562c95f3190f95f4b.txt \n", " extracting: train/labels/31_jpg.rf.9489b473467aaaf1eb2e0232b5931862.txt \n", " extracting: train/labels/32_jpg.rf.43261065f4b3ba3c91e03987aed62a2b.txt \n", " extracting: train/labels/33_jpg.rf.2ad304d1eedb710220836fd78c17014d.txt \n", " extracting: train/labels/33_jpg.rf.62736bece5188dda811d2bf3fbc2cb57.txt \n", " extracting: train/labels/33_jpg.rf.8853ac0a453f83f91e23ebf5ddeb4f82.txt \n", " extracting: train/labels/34_jpg.rf.75c88e6db5553b8d02d02b36d672b7e7.txt \n", " extracting: train/labels/34_jpg.rf.ffabf8a7ea1be71a9d1683b6114854e0.txt \n", " extracting: train/labels/35_jpg.rf.c3b8a090692ba42cb6a83f7b08ced95a.txt \n", " extracting: train/labels/35_jpg.rf.f7d88820195532618481468ed1a9f6e9.txt \n", " extracting: train/labels/36_jpg.rf.d77fed55a878f4737b21b82daf0ad36e.txt \n", " extracting: train/labels/37_jpg.rf.7fa7d6be2c491438168f0df3073f79d5.txt \n", " extracting: train/labels/37_jpg.rf.c36014940cdf902adbdf464aee59f3f5.txt \n", " extracting: train/labels/37_jpg.rf.f6b2fb7cc89d8aa3a4d8f0c18cb6c3bd.txt \n", " extracting: train/labels/38_jpg.rf.3edacd31811adec6878cdde676402b2c.txt \n", " extracting: train/labels/38_jpg.rf.84ab7120aaf809960207e5ad59cb6d14.txt \n", " extracting: train/labels/38_jpg.rf.f903bac80ac79b1fb45989d1d2d88b10.txt \n", " extracting: train/labels/39_jpg.rf.0b9cf3c8e8e0132cf98d03cfa9e951db.txt \n", " extracting: train/labels/39_jpg.rf.9135dc30802afd66da151da8d5f7f69b.txt \n", " extracting: train/labels/3_jpg.rf.1b3f4f9b98d9baea690addf4754a3e27.txt \n", " extracting: train/labels/3_jpg.rf.60201a0fae5d0522702ba0041e9e8f5e.txt \n", " extracting: train/labels/40_jpg.rf.04d954b3e104aa762483037002965388.txt \n", " extracting: train/labels/40_jpg.rf.21c02e3d712578e9c26c66f87bae918c.txt \n", " extracting: train/labels/41_jpg.rf.9a8a365889b64d78c0e863a2eaeffffe.txt \n", " extracting: train/labels/42_jpg.rf.f3e5679b1bc908dea7cf538f2c785eb4.txt \n", " extracting: train/labels/43_jpg.rf.221d09c550d1edf8462dce17559c59f2.txt \n", " extracting: train/labels/43_jpg.rf.e5065cf6d78459d4fb3f0f3dca625552.txt \n", " extracting: train/labels/45_jpg.rf.213f578e25fb7b3a7a8298f6a988e00f.txt \n", " extracting: train/labels/45_jpg.rf.856fd0b4a42c851bc1d5a955a6d2ffe6.txt \n", " extracting: train/labels/47_jpg.rf.2803e20eac11bed4a2162424fc23d1d6.txt \n", " extracting: train/labels/47_jpg.rf.a7792e1d649b43ecabeb2507a006e9ba.txt \n", " extracting: train/labels/48_jpg.rf.01b8ebb2f36be13981263dd5034320ff.txt \n", " extracting: train/labels/49_jpg.rf.162bc772dc987ef3961d3af2356d1fb8.txt \n", " extracting: train/labels/49_jpg.rf.5cfc16977fe531caad85a9be16b1102a.txt \n", " extracting: train/labels/4_jpg.rf.f29358be36e532da6d920f7fdb5445c7.txt \n", " extracting: train/labels/50_jpg.rf.debdb07a44a2a984268b1dc3de69969c.txt \n", " extracting: train/labels/51_jpg.rf.a737d6c43b80d3c13ad0d771e526ece4.txt \n", " extracting: train/labels/52_jpg.rf.5d2a5f583ff3cb13d90615a4b0866aba.txt \n", " extracting: train/labels/52_jpg.rf.b0383e98b694f6cad6a08c742fa5af37.txt \n", " extracting: train/labels/53_jpg.rf.d81a65e1325d254d5f1f9bec0cb0409d.txt \n", " extracting: train/labels/54_jpg.rf.3e9362fe294b384b3cfaa33ee8151573.txt \n", " extracting: train/labels/55_jpg.rf.3eab8ea4db50d3a61bd0bd0a66f5a5d5.txt \n", " extracting: train/labels/56_jpg.rf.2f4f1532b2fe63e305eecb0b18df122e.txt \n", " extracting: train/labels/56_jpg.rf.a7b08365ee532722e47a0daa502f98a1.txt \n", " extracting: train/labels/57_jpg.rf.7cf3ed8d1ad68408d9e358d537589afe.txt \n", " extracting: train/labels/58_jpg.rf.607550315c6a04d59ac368ecd06deadc.txt \n", " extracting: train/labels/58_jpg.rf.65e8bb462f83d0b88b473ad1f1c0737b.txt \n", " extracting: train/labels/59_jpg.rf.bf18b8b4e751b34a6c218a52da175905.txt \n", " extracting: train/labels/5_jpg.rf.6179aadde477f0b3cbe3471174d7ce42.txt \n", " extracting: train/labels/60_jpg.rf.852b4acddf482ecb26d9badee11de9e8.txt \n", " extracting: train/labels/61_jpg.rf.12a99e346c39f6426eb3a68bd0a4bcd4.txt \n", " extracting: train/labels/62_jpg.rf.e7a2e6cb0db7cc34c97ba32ce2533e21.txt \n", " extracting: train/labels/62_jpg.rf.edb2a3ef6090987f10fe98b509ac35e6.txt \n", " extracting: train/labels/63_jpg.rf.f005ac31d3559acc60494819cff61283.txt \n", " extracting: train/labels/64_jpg.rf.c159bd3d5aaa1416d954273da6f245bf.txt \n", " extracting: train/labels/65_jpg.rf.6693a094142d9066bc7f90a8f314c7e5.txt \n", " extracting: train/labels/65_jpg.rf.8b7e147516479616744f4c1016f04229.txt \n", " extracting: train/labels/66_jpg.rf.a400b7f3e1f642d036ec0891c5b0b2b2.txt \n", " extracting: train/labels/67_jpg.rf.c8cba7069b74ba60dab57fa03714b9bc.txt \n", " extracting: train/labels/69_jpg.rf.8edfc20839445f366c94a85f8b2a3b74.txt \n", " extracting: train/labels/6_jpg.rf.c5012148af1b926fd573da741260f7cb.txt \n", " extracting: train/labels/6_jpg.rf.cdbd1e80dfa65c70290ea975bee06140.txt \n", " extracting: train/labels/70_jpg.rf.a45b1f9b3f335f0cc7210b9dc2f858cf.txt \n", " extracting: train/labels/71_jpg.rf.99f61cda0ce2a3f0e904e0acfb65fe63.txt \n", " extracting: train/labels/72_jpg.rf.a1561fe1a1ff68c2c692ada9b37b1e38.txt \n", " extracting: train/labels/73_jpg.rf.506585e8ee81cfb2e5f0ff56ac6e617e.txt \n", " extracting: train/labels/73_jpg.rf.aa734b5afb647f0f8564eac868d4847f.txt \n", " extracting: train/labels/74_jpg.rf.b082b446f273455968bff31da6ae2b5d.txt \n", " extracting: train/labels/75_jpg.rf.0cdc256b288cda598a3021afeb2fe7d4.txt \n", " extracting: train/labels/77_jpg.rf.c2c06adf75dfc70c0b6b45312e31bfc2.txt \n", " extracting: train/labels/78_jpg.rf.96e25cbff2a424c6ea1b292036d3f52b.txt \n", " extracting: train/labels/79_jpg.rf.9607e32bbc2f30ce0c842f6e4219832e.txt \n", " extracting: train/labels/7_jpg.rf.0660f8d53f65f6c7c4101ddbdc9ceab2.txt \n", " extracting: train/labels/7_jpg.rf.ac3b5792870ff4c849eb2a3161851d11.txt \n", " extracting: train/labels/7_jpg.rf.cbf0bcc77694943a324b3ccf768a8429.txt \n", " extracting: train/labels/80_jpg.rf.13af98b759d02d2fd161d334d5cb96b2.txt \n", " extracting: train/labels/81_jpg.rf.150b636526a0ce59b286bb7d3f0c598b.txt \n", " extracting: train/labels/81_jpg.rf.696b42552991c47656769986dfddb53b.txt \n", " extracting: train/labels/82_jpg.rf.13d89cf9c5ed335550d0eaf45ff1a400.txt \n", " extracting: train/labels/82_jpg.rf.bb68d26eab68f004d23d67afe93f4c9f.txt \n", " extracting: train/labels/83_jpg.rf.8cca490085879704aff93a43e304adf6.txt \n", " extracting: train/labels/83_jpg.rf.e12dc346de9f1cce9aabc64a49189866.txt \n", " extracting: train/labels/84_jpg.rf.186ec384e85b4f312eab5b2253ba159f.txt \n", " extracting: train/labels/85_jpg.rf.163bde45fa81e3ea2190c85c61a178f0.txt \n", " extracting: train/labels/85_jpg.rf.8ea2a0ee640bcf6ecbe162a905cbdbaf.txt \n", " extracting: train/labels/86_jpg.rf.23a698df7fcfa991e86db636c5950128.txt \n", " extracting: train/labels/88_jpg.rf.12492e8bce887e10db9cef78edccbf25.txt \n", " extracting: train/labels/88_jpg.rf.e05e40de44aac71aacccadbcfa041a33.txt \n", " extracting: train/labels/8_jpg.rf.7f03f15f9a90dfca6712a551d6fb5602.txt \n", " extracting: train/labels/91_jpg.rf.dcf786fec5ce93aa30c7540aaa3a62d3.txt \n", " extracting: train/labels/92_jpg.rf.6f366ac03a703190a57c91d1cfd2cc72.txt \n", " extracting: train/labels/92_jpg.rf.eb29f4a6839e25b29c50d9d2d9002278.txt \n", " extracting: train/labels/93_jpg.rf.005b2df4af733a17cf56096aff3056fc.txt \n", " extracting: train/labels/93_jpg.rf.52f0515ada9bbcc901fa10bd9104bce4.txt \n", " extracting: train/labels/96_jpg.rf.05c2ed930c432abce351f179feb7ee3c.txt \n", " extracting: train/labels/97_jpg.rf.5ab3fe12359a0f191a93079ce332e624.txt \n", " extracting: train/labels/97_jpg.rf.dc5136746656ed99c27691f68fcff776.txt \n", " extracting: train/labels/98_jpg.rf.236913213428de15351dca9737305aa5.txt \n", " extracting: train/labels/9_jpg.rf.12bcc2f1fc94c8eeca8802e738c1ed57.txt \n", " extracting: train/labels/9_jpg.rf.b9f65d80e589327291d962f8d53d2f4f.txt \n", " extracting: train/labels/9_jpg.rf.baac2c277eac541d160362aceb170819.txt \n", " creating: valid/\n", " creating: valid/images/\n", " extracting: valid/images/100_jpg.rf.40b73fa871f6a8d0c69a88e28bffe76b.jpg \n", " extracting: valid/images/100_jpg.rf.7e8aab2c86c16c8d62f6be6ebb1e1e27.jpg \n", " extracting: valid/images/102_jpg.rf.45fb124403a85bfac1c0fb1d1f067997.jpg \n", " extracting: valid/images/103_jpg.rf.ad02f2dbb977217b7248a83b353405bb.jpg \n", " extracting: valid/images/106_jpg.rf.9f4a8d4638060a1f3f5a554d49bf5af3.jpg \n", " extracting: valid/images/107_jpg.rf.2e7b3e8a0469a4670423dd47748eb098.jpg \n", " extracting: valid/images/10_jpg.rf.3b3b1fa9fe746c9a7f99fc2bf2b114a9.jpg \n", " extracting: valid/images/10_jpg.rf.e853c0523adbd4212cae703d8bf7b02c.jpg \n", " extracting: valid/images/115_jpg.rf.49840b1edac65ae2ab0c19d7963be2c5.jpg \n", " extracting: valid/images/120_jpg.rf.d29c7bee2fecb05924bbe2ab4361f496.jpg \n", " extracting: valid/images/129_jpg.rf.29abf0d991fb965243fd5cd7823cd796.jpg \n", " extracting: valid/images/134_jpg.rf.26ad7566edade79e440b2d718b12d0ae.jpg \n", " extracting: valid/images/138_jpg.rf.2871077a0b8418b77c1993aff5f1e277.jpg \n", " extracting: valid/images/148_jpg.rf.dadd502bfb9b011e3c48d330b96dc9f7.jpg \n", " extracting: valid/images/14_jpg.rf.817cf5bb94c9b0e4213604630634db20.jpg \n", " extracting: valid/images/157_jpg.rf.52aa683efb934b323f596ad318b3b984.jpg \n", " extracting: valid/images/15_jpg.rf.b14b80cfd93985d521b53ba2d92da225.jpg \n", " extracting: valid/images/15_jpg.rf.d611278294c9b782e07d808622196ff4.jpg \n", " extracting: valid/images/163_jpg.rf.002d708e40e3f61bf5d50caa049d6523.jpg \n", " extracting: valid/images/163_jpg.rf.9a2a92702128c838f3f72a729695c09f.jpg \n", " extracting: valid/images/16_jpg.rf.e15f358c92b7f0cbf518f7220e3ed186.jpg \n", " extracting: valid/images/170_jpg.rf.2f4eff20b8deccb17f9bb8b9d4a00872.jpg \n", " extracting: valid/images/176_jpg.rf.b2a93ea493908c25da10842534094472.jpg \n", " extracting: valid/images/184_jpg.rf.29a2a9c9912d4abb2b9a182048ac9ec2.jpg \n", " extracting: valid/images/186_jpg.rf.ebcd0caea002b9d035f75ca903c492cf.jpg \n", " extracting: valid/images/188_jpg.rf.a61cd93d83b6665a89f1e57fbc75c3c8.jpg \n", " extracting: valid/images/191_jpg.rf.8c017a05096c2034a3427e3a2b48239e.jpg \n", " extracting: valid/images/197_jpg.rf.37187a78b29dc692e76570581029e94e.jpg \n", " extracting: valid/images/197_jpg.rf.ea2ce98d32ab132456912480807ff6ac.jpg \n", " extracting: valid/images/199_jpg.rf.44c709d043b55a84022ebab218ac81ab.jpg \n", " extracting: valid/images/199_jpg.rf.a60ccd6e6b0378330bdb457db028c2f1.jpg \n", " extracting: valid/images/19_jpg.rf.866ed7635d6e74bb966ccf53dd437d92.jpg \n", " extracting: valid/images/1_jpg.rf.1c82c1c69607628fd96c543a36210873.jpg \n", " extracting: valid/images/200_jpg.rf.7689ee1b0ffd86c78a9f7e666604308e.jpg \n", " extracting: valid/images/203_jpg.rf.396b29e9a0dfd47d17aa8ca29781761f.jpg \n", " extracting: valid/images/204_jpg.rf.93a322539d8162348f6403fe7ccd9455.jpg \n", " extracting: valid/images/20_jpg.rf.ce5879bcb19c10442b37690164d0bf1d.jpg \n", " extracting: valid/images/211_jpg.rf.911fa23ce5b438304b9b3121b24a1f6c.jpg \n", " extracting: valid/images/214_jpg.rf.e01e01b2276a47fac6b195517d753ec9.jpg \n", " extracting: valid/images/218_jpg.rf.73f3693a52e982c7d5797f924162c000.jpg \n", " extracting: valid/images/21_jpg.rf.3e49508e08cc36b52f7408939efb57d5.jpg \n", " extracting: valid/images/21_jpg.rf.f13583e8b330c9f0644d0ab7405a4fd4.jpg \n", " extracting: valid/images/220_jpg.rf.fe20bed6a74de77be4ae9978362af8db.jpg \n", " extracting: valid/images/222_jpg.rf.b781fe7c64cd099591b809a636167a67.jpg \n", " extracting: valid/images/235_jpg.rf.38593f9225e9b5917aec84f257d35c9c.jpg \n", " extracting: valid/images/235_jpg.rf.82d73bc2d81e258768acafe983e3479d.jpg \n", " extracting: valid/images/237_jpg.rf.303910ba0b4f9c549a649adb26619ceb.jpg \n", " extracting: valid/images/241_jpg.rf.c9361ce451baa5089ae73b7d86ae2be4.jpg \n", " extracting: valid/images/245_jpg.rf.c0a55ea542141d6e0611cea6c3f482d9.jpg \n", " extracting: valid/images/249_jpg.rf.758d894f37273a3eb50266c8293fed8d.jpg \n", " extracting: valid/images/25_jpg.rf.46f0050cba8168a52f302495c64fcadf.jpg \n", " extracting: valid/images/26_jpg.rf.7b0c75fc9385333c72dcca7327846be5.jpg \n", " extracting: valid/images/27_jpg.rf.11e9a048a26c4205da3b1ce533cb9113.jpg \n", " extracting: valid/images/28_jpg.rf.d886e036ef1a87c5a67cf266b0343b5c.jpg \n", " extracting: valid/images/30_jpg.rf.69dfd8337b6e1c51f6b2169519756a17.jpg \n", " extracting: valid/images/34_jpg.rf.6736177755768fd55fb020dad8d1ba38.jpg \n", " extracting: valid/images/35_jpg.rf.6b3b2033ff806ccd1b21f1a59715322e.jpg \n", " extracting: valid/images/36_jpg.rf.eceb3a40bee75ff682e7fe36f1b997c4.jpg \n", " extracting: valid/images/39_jpg.rf.04a442d960bdbd11a92b54b7b49e01f4.jpg \n", " extracting: valid/images/41_jpg.rf.7c258d236d88a4304878a19405b61b5c.jpg \n", " extracting: valid/images/44_jpg.rf.e9626512a0db1608bd4ceb29aa6e1dee.jpg \n", " extracting: valid/images/48_jpg.rf.1a78b2ed948cea14347d0f63eb0462df.jpg \n", " extracting: valid/images/4_jpg.rf.625a605cfff4d66811fec02facbf084c.jpg \n", " extracting: valid/images/51_jpg.rf.ed50cda9464b3b76c190063e71b53e6d.jpg \n", " extracting: valid/images/57_jpg.rf.9efc160bd2b9d4a0a435b4c907e52627.jpg \n", " extracting: valid/images/59_jpg.rf.3e83d26b6ffe095f4eaa804b425c6991.jpg \n", " extracting: valid/images/5_jpg.rf.44f3183c2f8dc4320835eaf3a8ef81d7.jpg \n", " extracting: valid/images/60_jpg.rf.7fd5e6f781bc8ad9dca4cd346ce5eee6.jpg \n", " extracting: valid/images/66_jpg.rf.6b84be765e28fae7e8014510f287926a.jpg \n", " extracting: valid/images/67_jpg.rf.e1d423b17f2ef7ed6d050f60ee43e73b.jpg \n", " extracting: valid/images/68_jpg.rf.0db2f3dd7fe6356c33caf248bd45e114.jpg \n", " extracting: valid/images/68_jpg.rf.5675839f44704b3c3e1dac1c0e896044.jpg \n", " extracting: valid/images/70_jpg.rf.a6967ca3a951ed0ec5f69164d8effd86.jpg \n", " extracting: valid/images/71_jpg.rf.3f3fa21f574519f05b0fb8b779177108.jpg \n", " extracting: valid/images/74_jpg.rf.ac0541e000c2eeef8cb87c7063b7dcc8.jpg \n", " extracting: valid/images/76_jpg.rf.f9019e38e5e0ede3599bd45a81f324bf.jpg \n", " extracting: valid/images/80_jpg.rf.473defb1d96c505db927bb99cccd7d3c.jpg \n", " extracting: valid/images/84_jpg.rf.54d2ec8d8a11164adb8b81fa06f2150f.jpg \n", " extracting: valid/images/87_jpg.rf.0fe6c38fe536952979272ec167087cd6.jpg \n", " extracting: valid/images/89_jpg.rf.31dc58444ebae3a21b38822f8d0b75b6.jpg \n", " extracting: valid/images/8_jpg.rf.1a2c67587b5266449e319b6682d062a4.jpg \n", " extracting: valid/images/91_jpg.rf.c1b726bceb3d0a2e6b2450fe88fac3d7.jpg \n", " extracting: valid/images/94_jpg.rf.60be4f10d9cafc5ab5aa2199a938584d.jpg \n", " extracting: valid/images/95_jpg.rf.3bc7e20d89e5c7088a2d4a891caa1392.jpg \n", " extracting: valid/images/95_jpg.rf.6a04b604d5063510df9cd67b761ea40b.jpg \n", " extracting: valid/images/98_jpg.rf.90ab5c33f6774640b113a84beeeecd06.jpg \n", " extracting: valid/images/99_jpg.rf.3a8ca0773cfb28bbb0cee8249927899a.jpg \n", " extracting: valid/images/9_jpg.rf.5adac7193926540605f04ba2b6068d69.jpg \n", " creating: valid/labels/\n", " extracting: valid/labels/100_jpg.rf.40b73fa871f6a8d0c69a88e28bffe76b.txt \n", " extracting: valid/labels/100_jpg.rf.7e8aab2c86c16c8d62f6be6ebb1e1e27.txt \n", " extracting: valid/labels/102_jpg.rf.45fb124403a85bfac1c0fb1d1f067997.txt \n", " extracting: valid/labels/103_jpg.rf.ad02f2dbb977217b7248a83b353405bb.txt \n", " extracting: valid/labels/106_jpg.rf.9f4a8d4638060a1f3f5a554d49bf5af3.txt \n", " extracting: valid/labels/107_jpg.rf.2e7b3e8a0469a4670423dd47748eb098.txt \n", " extracting: valid/labels/10_jpg.rf.3b3b1fa9fe746c9a7f99fc2bf2b114a9.txt \n", " extracting: valid/labels/10_jpg.rf.e853c0523adbd4212cae703d8bf7b02c.txt \n", " extracting: valid/labels/115_jpg.rf.49840b1edac65ae2ab0c19d7963be2c5.txt \n", " extracting: valid/labels/120_jpg.rf.d29c7bee2fecb05924bbe2ab4361f496.txt \n", " extracting: valid/labels/129_jpg.rf.29abf0d991fb965243fd5cd7823cd796.txt \n", " extracting: valid/labels/134_jpg.rf.26ad7566edade79e440b2d718b12d0ae.txt \n", " extracting: valid/labels/138_jpg.rf.2871077a0b8418b77c1993aff5f1e277.txt \n", " extracting: valid/labels/148_jpg.rf.dadd502bfb9b011e3c48d330b96dc9f7.txt \n", " extracting: valid/labels/14_jpg.rf.817cf5bb94c9b0e4213604630634db20.txt \n", " extracting: valid/labels/157_jpg.rf.52aa683efb934b323f596ad318b3b984.txt \n", " extracting: valid/labels/15_jpg.rf.b14b80cfd93985d521b53ba2d92da225.txt \n", " extracting: valid/labels/15_jpg.rf.d611278294c9b782e07d808622196ff4.txt \n", " extracting: valid/labels/163_jpg.rf.002d708e40e3f61bf5d50caa049d6523.txt \n", " extracting: valid/labels/163_jpg.rf.9a2a92702128c838f3f72a729695c09f.txt \n", " extracting: valid/labels/16_jpg.rf.e15f358c92b7f0cbf518f7220e3ed186.txt \n", " extracting: valid/labels/170_jpg.rf.2f4eff20b8deccb17f9bb8b9d4a00872.txt \n", " extracting: valid/labels/176_jpg.rf.b2a93ea493908c25da10842534094472.txt \n", " extracting: valid/labels/184_jpg.rf.29a2a9c9912d4abb2b9a182048ac9ec2.txt \n", " extracting: valid/labels/186_jpg.rf.ebcd0caea002b9d035f75ca903c492cf.txt \n", " extracting: valid/labels/188_jpg.rf.a61cd93d83b6665a89f1e57fbc75c3c8.txt \n", " extracting: valid/labels/191_jpg.rf.8c017a05096c2034a3427e3a2b48239e.txt \n", " extracting: valid/labels/197_jpg.rf.37187a78b29dc692e76570581029e94e.txt \n", " extracting: valid/labels/197_jpg.rf.ea2ce98d32ab132456912480807ff6ac.txt \n", " extracting: valid/labels/199_jpg.rf.44c709d043b55a84022ebab218ac81ab.txt \n", " extracting: valid/labels/199_jpg.rf.a60ccd6e6b0378330bdb457db028c2f1.txt \n", " extracting: valid/labels/19_jpg.rf.866ed7635d6e74bb966ccf53dd437d92.txt \n", " extracting: valid/labels/1_jpg.rf.1c82c1c69607628fd96c543a36210873.txt \n", " extracting: valid/labels/200_jpg.rf.7689ee1b0ffd86c78a9f7e666604308e.txt \n", " extracting: valid/labels/203_jpg.rf.396b29e9a0dfd47d17aa8ca29781761f.txt \n", " extracting: valid/labels/204_jpg.rf.93a322539d8162348f6403fe7ccd9455.txt \n", " extracting: valid/labels/20_jpg.rf.ce5879bcb19c10442b37690164d0bf1d.txt \n", " extracting: valid/labels/211_jpg.rf.911fa23ce5b438304b9b3121b24a1f6c.txt \n", " extracting: valid/labels/214_jpg.rf.e01e01b2276a47fac6b195517d753ec9.txt \n", " extracting: valid/labels/218_jpg.rf.73f3693a52e982c7d5797f924162c000.txt \n", " extracting: valid/labels/21_jpg.rf.3e49508e08cc36b52f7408939efb57d5.txt \n", " extracting: valid/labels/21_jpg.rf.f13583e8b330c9f0644d0ab7405a4fd4.txt \n", " extracting: valid/labels/220_jpg.rf.fe20bed6a74de77be4ae9978362af8db.txt \n", " extracting: valid/labels/222_jpg.rf.b781fe7c64cd099591b809a636167a67.txt \n", " extracting: valid/labels/235_jpg.rf.38593f9225e9b5917aec84f257d35c9c.txt \n", " extracting: valid/labels/235_jpg.rf.82d73bc2d81e258768acafe983e3479d.txt \n", " extracting: valid/labels/237_jpg.rf.303910ba0b4f9c549a649adb26619ceb.txt \n", " extracting: valid/labels/241_jpg.rf.c9361ce451baa5089ae73b7d86ae2be4.txt \n", " extracting: valid/labels/245_jpg.rf.c0a55ea542141d6e0611cea6c3f482d9.txt \n", " extracting: valid/labels/249_jpg.rf.758d894f37273a3eb50266c8293fed8d.txt \n", " extracting: valid/labels/25_jpg.rf.46f0050cba8168a52f302495c64fcadf.txt \n", " extracting: valid/labels/26_jpg.rf.7b0c75fc9385333c72dcca7327846be5.txt \n", " extracting: valid/labels/27_jpg.rf.11e9a048a26c4205da3b1ce533cb9113.txt \n", " extracting: valid/labels/28_jpg.rf.d886e036ef1a87c5a67cf266b0343b5c.txt \n", " extracting: valid/labels/30_jpg.rf.69dfd8337b6e1c51f6b2169519756a17.txt \n", " extracting: valid/labels/34_jpg.rf.6736177755768fd55fb020dad8d1ba38.txt \n", " extracting: valid/labels/35_jpg.rf.6b3b2033ff806ccd1b21f1a59715322e.txt \n", " extracting: valid/labels/36_jpg.rf.eceb3a40bee75ff682e7fe36f1b997c4.txt \n", " extracting: valid/labels/39_jpg.rf.04a442d960bdbd11a92b54b7b49e01f4.txt \n", " extracting: valid/labels/41_jpg.rf.7c258d236d88a4304878a19405b61b5c.txt \n", " extracting: valid/labels/44_jpg.rf.e9626512a0db1608bd4ceb29aa6e1dee.txt \n", " extracting: valid/labels/48_jpg.rf.1a78b2ed948cea14347d0f63eb0462df.txt \n", " extracting: valid/labels/4_jpg.rf.625a605cfff4d66811fec02facbf084c.txt \n", " extracting: valid/labels/51_jpg.rf.ed50cda9464b3b76c190063e71b53e6d.txt \n", " extracting: valid/labels/57_jpg.rf.9efc160bd2b9d4a0a435b4c907e52627.txt \n", " extracting: valid/labels/59_jpg.rf.3e83d26b6ffe095f4eaa804b425c6991.txt \n", " extracting: valid/labels/5_jpg.rf.44f3183c2f8dc4320835eaf3a8ef81d7.txt \n", " extracting: valid/labels/60_jpg.rf.7fd5e6f781bc8ad9dca4cd346ce5eee6.txt \n", " extracting: valid/labels/66_jpg.rf.6b84be765e28fae7e8014510f287926a.txt \n", " extracting: valid/labels/67_jpg.rf.e1d423b17f2ef7ed6d050f60ee43e73b.txt \n", " extracting: valid/labels/68_jpg.rf.0db2f3dd7fe6356c33caf248bd45e114.txt \n", " extracting: valid/labels/68_jpg.rf.5675839f44704b3c3e1dac1c0e896044.txt \n", " extracting: valid/labels/70_jpg.rf.a6967ca3a951ed0ec5f69164d8effd86.txt \n", " extracting: valid/labels/71_jpg.rf.3f3fa21f574519f05b0fb8b779177108.txt \n", " extracting: valid/labels/74_jpg.rf.ac0541e000c2eeef8cb87c7063b7dcc8.txt \n", " extracting: valid/labels/76_jpg.rf.f9019e38e5e0ede3599bd45a81f324bf.txt \n", " extracting: valid/labels/80_jpg.rf.473defb1d96c505db927bb99cccd7d3c.txt \n", " extracting: valid/labels/84_jpg.rf.54d2ec8d8a11164adb8b81fa06f2150f.txt \n", " extracting: valid/labels/87_jpg.rf.0fe6c38fe536952979272ec167087cd6.txt \n", " extracting: valid/labels/89_jpg.rf.31dc58444ebae3a21b38822f8d0b75b6.txt \n", " extracting: valid/labels/8_jpg.rf.1a2c67587b5266449e319b6682d062a4.txt \n", " extracting: valid/labels/91_jpg.rf.c1b726bceb3d0a2e6b2450fe88fac3d7.txt \n", " extracting: valid/labels/94_jpg.rf.60be4f10d9cafc5ab5aa2199a938584d.txt \n", " extracting: valid/labels/95_jpg.rf.3bc7e20d89e5c7088a2d4a891caa1392.txt \n", " extracting: valid/labels/95_jpg.rf.6a04b604d5063510df9cd67b761ea40b.txt \n", " extracting: valid/labels/98_jpg.rf.90ab5c33f6774640b113a84beeeecd06.txt \n", " extracting: valid/labels/99_jpg.rf.3a8ca0773cfb28bbb0cee8249927899a.txt \n", " extracting: valid/labels/9_jpg.rf.5adac7193926540605f04ba2b6068d69.txt \n" ] } ], "source": [ "%cd /content\n", "!curl -L \"https://universe.roboflow.com/ds/xYke0rmySm?key=o9qqtAWkeE\" > roboflow.zip; unzip roboflow.zip; rm roboflow.zip" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KbPkIp30O9fN", "outputId": "1045cf4d-2d8a-43a8-d616-685323f2ecd8" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "names:\n", "- angle\n", "- fracture\n", "- line\n", "- messed_up_angle\n", "nc: 4\n", "train: bone-fracture-2/train/images\n", "val: bone-fracture-2/valid/images\n" ] } ], "source": [ "# This is the yaml file roboflow wrote for us\n", "%cat {dataset.location}/data.yaml" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "CQYCWhrwPpjs", "outputId": "ef40c98b-b76e-4363-8d53-c720decb59dd" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Requirement already satisfied: roboflow in /usr/local/lib/python3.7/dist-packages (0.2.17)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.28.1)\n", "Requirement already satisfied: PyYAML>=5.3.1 in /usr/local/lib/python3.7/dist-packages (from roboflow) (6.0)\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.4.4)\n", "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from roboflow) (3.2.2)\n", "Requirement already satisfied: wget in /usr/local/lib/python3.7/dist-packages (from roboflow) (3.2)\n", "Requirement already satisfied: python-dotenv in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.21.0)\n", "Requirement already satisfied: idna==2.10 in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.10)\n", "Requirement already satisfied: python-dateutil in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.8.2)\n", "Requirement already satisfied: chardet==4.0.0 in /usr/local/lib/python3.7/dist-packages (from roboflow) (4.0.0)\n", "Requirement already satisfied: certifi==2021.5.30 in /usr/local/lib/python3.7/dist-packages (from roboflow) (2021.5.30)\n", "Requirement already satisfied: urllib3==1.26.6 in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.26.6)\n", "Requirement already satisfied: Pillow>=7.1.2 in /usr/local/lib/python3.7/dist-packages (from roboflow) (7.1.2)\n", "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.15.0)\n", "Requirement already satisfied: pyparsing==2.4.7 in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.4.7)\n", "Requirement already satisfied: requests-toolbelt in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.10.1)\n", "Requirement already satisfied: opencv-python-headless>=4.5.1.48 in /usr/local/lib/python3.7/dist-packages (from roboflow) (4.6.0.66)\n", "Requirement already satisfied: glob2 in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.7)\n", "Requirement already satisfied: cycler==0.10.0 in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.10.0)\n", "Requirement already satisfied: numpy>=1.18.5 in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.21.6)\n", "Requirement already satisfied: tqdm>=4.41.0 in /usr/local/lib/python3.7/dist-packages (from roboflow) (4.64.1)\n", "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from kiwisolver>=1.3.1->roboflow) (4.1.1)\n", "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.7/dist-packages (from requests->roboflow) (2.1.1)\n", "loading Roboflow workspace...\n", "loading Roboflow project...\n", "Downloading Dataset Version Zip in bone-fracture-2 to yolov5pytorch: 100% [20642199 / 20642199] bytes\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "Extracting Dataset Version Zip to bone-fracture-2 in yolov5pytorch:: 100%|██████████| 928/928 [00:00<00:00, 1873.73it/s]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "names:\n", "- angle\n", "- fracture\n", "- line\n", "- messed_up_angle\n", "nc: 4\n", "train: bone-fracture-2/train/images\n", "val: bone-fracture-2/valid/images\n" ] } ], "source": [ "!pip install roboflow\n", "\n", "from roboflow import Roboflow\n", "rf = Roboflow(api_key=\"XTAwbDMo9Nd4dy0287dc\")\n", "project = rf.workspace(\"roboflow-100\").project(\"bone-fracture-7fylg\")\n", "dataset = project.version(2).download(\"yolov5\")\n", "\n", "# this is the YAML file Roboflow wrote for us that we're loading into this notebook with our data\n", "%cat {dataset.location}/data.yaml" ] }, { "cell_type": "code", "source": [ "\n", "# this is the YAML file Roboflow wrote for us that we're loading into this notebook with our data\n", "%cat {dataset.location}/data.yaml" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Ie-odHHG5M0a", "outputId": "bc86865c-12c4-4030-a502-4cf1ce947c3f" }, "execution_count": 16, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "names:\n", "- angle\n", "- fracture\n", "- line\n", "- messed_up_angle\n", "nc: 4\n", "train: bone-fracture-2/train/images\n", "val: bone-fracture-2/valid/images\n" ] } ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "Anh1ADrqPkq6" }, "outputs": [], "source": [ "# define number of classes based on YAML\n", "import yaml\n", "with open(dataset.location + \"/data.yaml\", 'r') as stream:\n", " num_classes = str(yaml.safe_load(stream)['nc'])" ] }, { "cell_type": "code", "source": [], "metadata": { "id": "dr3lr6FF5FH9" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FnLatY6sQktE", "outputId": "7de9ca96-8eeb-45e5-9dbc-f5de2b8be906" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "# YOLOv5 🚀 by Ultralytics, GPL-3.0 license\n", "\n", "# Parameters\n", "nc: 80 # number of classes\n", "depth_multiple: 0.33 # model depth multiple\n", "width_multiple: 0.50 # layer channel multiple\n", "anchors:\n", " - [10,13, 16,30, 33,23] # P3/8\n", " - [30,61, 62,45, 59,119] # P4/16\n", " - [116,90, 156,198, 373,326] # P5/32\n", "\n", "# YOLOv5 v6.0 backbone\n", "backbone:\n", " # [from, number, module, args]\n", " [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2\n", " [-1, 1, Conv, [128, 3, 2]], # 1-P2/4\n", " [-1, 3, C3, [128]],\n", " [-1, 1, Conv, [256, 3, 2]], # 3-P3/8\n", " [-1, 6, C3, [256]],\n", " [-1, 1, Conv, [512, 3, 2]], # 5-P4/16\n", " [-1, 9, C3, [512]],\n", " [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32\n", " [-1, 3, C3, [1024]],\n", " [-1, 1, SPPF, [1024, 5]], # 9\n", " ]\n", "\n", "# YOLOv5 v6.0 head\n", "head:\n", " [[-1, 1, Conv, [512, 1, 1]],\n", " [-1, 1, nn.Upsample, [None, 2, 'nearest']],\n", " [[-1, 6], 1, Concat, [1]], # cat backbone P4\n", " [-1, 3, C3, [512, False]], # 13\n", "\n", " [-1, 1, Conv, [256, 1, 1]],\n", " [-1, 1, nn.Upsample, [None, 2, 'nearest']],\n", " [[-1, 4], 1, Concat, [1]], # cat backbone P3\n", " [-1, 3, C3, [256, False]], # 17 (P3/8-small)\n", "\n", " [-1, 1, Conv, [256, 3, 2]],\n", " [[-1, 14], 1, Concat, [1]], # cat head P4\n", " [-1, 3, C3, [512, False]], # 20 (P4/16-medium)\n", "\n", " [-1, 1, Conv, [512, 3, 2]],\n", " [[-1, 10], 1, Concat, [1]], # cat head P5\n", " [-1, 3, C3, [1024, False]], # 23 (P5/32-large)\n", "\n", " [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)\n", " ]\n" ] } ], "source": [ "#this is the model configuration we will use for our tutorial \n", "%cat /content/yolov5/models/yolov5s.yaml" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "yZoZah5dQqqZ" }, "outputs": [], "source": [ "#customize iPython writefile so we can write variables\n", "from IPython.core.magic import register_line_cell_magic\n", "\n", "@register_line_cell_magic\n", "def writetemplate(line, cell):\n", " with open(line, 'w') as f:\n", " f.write(cell.format(**globals()))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Cd9pk7pARiZ8" }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "uDxebz13RdRA" }, "outputs": [], "source": [ "%%writetemplate /content/yolov5/models/custom_yolov5s.yaml\n", "\n", "# parameters\n", "nc: {num_classes} # number of classes\n", "depth_multiple: 0.33 # model depth multiple\n", "width_multiple: 0.50 # layer channel multiple\n", "\n", "# anchors\n", "anchors:\n", " - [10,13, 16,30, 33,23] # P3/8\n", " - [30,61, 62,45, 59,119] # P4/16\n", " - [116,90, 156,198, 373,326] # P5/32\n", "\n", "# YOLOv5 backbone\n", "backbone:\n", " # [from, number, module, args]\n", " [[-1, 1, Focus, [64, 3]], # 0-P1/2\n", " [-1, 1, Conv, [128, 3, 2]], # 1-P2/4\n", " [-1, 3, BottleneckCSP, [128]],\n", " [-1, 1, Conv, [256, 3, 2]], # 3-P3/8\n", " [-1, 9, BottleneckCSP, [256]],\n", " [-1, 1, Conv, [512, 3, 2]], # 5-P4/16\n", " [-1, 9, BottleneckCSP, [512]],\n", " [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32\n", " [-1, 1, SPP, [1024, [5, 9, 13]]],\n", " [-1, 3, BottleneckCSP, [1024, False]], # 9\n", " ]\n", "\n", "# YOLOv5 head\n", "head:\n", " [[-1, 1, Conv, [512, 1, 1]],\n", " [-1, 1, nn.Upsample, [None, 2, 'nearest']],\n", " [[-1, 6], 1, Concat, [1]], # cat backbone P4\n", " [-1, 3, BottleneckCSP, [512, False]], # 13\n", "\n", " [-1, 1, Conv, [256, 1, 1]],\n", " [-1, 1, nn.Upsample, [None, 2, 'nearest']],\n", " [[-1, 4], 1, Concat, [1]], # cat backbone P3\n", " [-1, 3, BottleneckCSP, [256, False]], # 17 (P3/8-small)\n", "\n", " [-1, 1, Conv, [256, 3, 2]],\n", " [[-1, 14], 1, Concat, [1]], # cat head P4\n", " [-1, 3, BottleneckCSP, [512, False]], # 20 (P4/16-medium)\n", "\n", " [-1, 1, Conv, [512, 3, 2]],\n", " [[-1, 10], 1, Concat, [1]], # cat head P5\n", " [-1, 3, BottleneckCSP, [1024, False]], # 23 (P5/32-large)\n", "\n", " [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)\n", " ]" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XAnvExYGRkmH", "outputId": "bf6822f7-28ef-4bb3-9df7-5c3125749471" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/content/yolov5\n", "\u001b[34m\u001b[1mtrain: \u001b[0mweights=, cfg=./models/custom_yolov5s.yaml, data=/content/yolov5/bone-fracture-2/data.yaml, hyp=data/hyps/hyp.scratch-low.yaml, epochs=100, batch_size=16, imgsz=416, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, bucket=, cache=ram, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs/train, name=yolov5s_results, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest\n", "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov5 ✅\n", "YOLOv5 🚀 v6.2-216-g6e544d5 Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", "\n", "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0\n", "\u001b[34m\u001b[1mClearML: \u001b[0mrun 'pip install clearml' to automatically track, visualize and remotely train YOLOv5 🚀 in ClearML\n", "\u001b[34m\u001b[1mComet: \u001b[0mrun 'pip install comet_ml' to automatically track and visualize YOLOv5 🚀 runs in Comet\n", "\u001b[34m\u001b[1mTensorBoard: \u001b[0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/\n", "Downloading https://ultralytics.com/assets/Arial.ttf to /root/.config/Ultralytics/Arial.ttf...\n", "100% 755k/755k [00:00<00:00, 27.5MB/s]\n", "\n", " from n params module arguments \n", " 0 -1 1 3520 models.common.Focus [3, 32, 3] \n", " 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n", " 2 -1 1 19904 models.common.BottleneckCSP [64, 64, 1] \n", " 3 -1 1 73984 models.common.Conv [64, 128, 3, 2] \n", " 4 -1 3 161152 models.common.BottleneckCSP [128, 128, 3] \n", " 5 -1 1 295424 models.common.Conv [128, 256, 3, 2] \n", " 6 -1 3 641792 models.common.BottleneckCSP [256, 256, 3] \n", " 7 -1 1 1180672 models.common.Conv [256, 512, 3, 2] \n", " 8 -1 1 656896 models.common.SPP [512, 512, [5, 9, 13]] \n", " 9 -1 1 1248768 models.common.BottleneckCSP [512, 512, 1, False] \n", " 10 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", " 11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", " 12 [-1, 6] 1 0 models.common.Concat [1] \n", " 13 -1 1 378624 models.common.BottleneckCSP [512, 256, 1, False] \n", " 14 -1 1 33024 models.common.Conv [256, 128, 1, 1] \n", " 15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", " 16 [-1, 4] 1 0 models.common.Concat [1] \n", " 17 -1 1 95104 models.common.BottleneckCSP [256, 128, 1, False] \n", " 18 -1 1 147712 models.common.Conv [128, 128, 3, 2] \n", " 19 [-1, 14] 1 0 models.common.Concat [1] \n", " 20 -1 1 313088 models.common.BottleneckCSP [256, 256, 1, False] \n", " 21 -1 1 590336 models.common.Conv [256, 256, 3, 2] \n", " 22 [-1, 10] 1 0 models.common.Concat [1] \n", " 23 -1 1 1248768 models.common.BottleneckCSP [512, 512, 1, False] \n", " 24 [17, 20, 23] 1 24273 models.yolo.Detect [4, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]\n", "custom_YOLOv5s summary: 233 layers, 7263185 parameters, 7263185 gradients\n", "\n", "\u001b[34m\u001b[1mAMP: \u001b[0mchecks passed ✅\n", "\u001b[34m\u001b[1moptimizer:\u001b[0m SGD(lr=0.01) with parameter groups 59 weight(decay=0.0), 70 weight(decay=0.0005), 62 bias\n", "\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8))\n", "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '/content/yolov5/bone-fracture-2/train/labels' images and labels...326 found, 0 missing, 15 empty, 0 corrupt: 100% 326/326 [00:00<00:00, 2191.42it/s]\n", "\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: /content/yolov5/bone-fracture-2/train/labels.cache\n", "\u001b[34m\u001b[1mtrain: \u001b[0mCaching images (0.1GB ram): 100% 326/326 [00:02<00:00, 148.09it/s]\n", "\u001b[34m\u001b[1mval: \u001b[0mScanning '/content/yolov5/bone-fracture-2/valid/labels' images and labels...88 found, 0 missing, 5 empty, 0 corrupt: 100% 88/88 [00:00<00:00, 1425.22it/s]\n", "\u001b[34m\u001b[1mval: \u001b[0mNew cache created: /content/yolov5/bone-fracture-2/valid/labels.cache\n", "\u001b[34m\u001b[1mval: \u001b[0mCaching images (0.0GB ram): 100% 88/88 [00:01<00:00, 67.42it/s]\n", "\n", "\u001b[34m\u001b[1mAutoAnchor: \u001b[0m4.71 anchors/target, 1.000 Best Possible Recall (BPR). Current anchors are a good fit to dataset ✅\n", "Plotting labels to runs/train/yolov5s_results2/labels.jpg... \n", "Image sizes 416 train, 416 val\n", "Using 2 dataloader workers\n", "Logging results to \u001b[1mruns/train/yolov5s_results2\u001b[0m\n", "Starting training for 100 epochs...\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 0/99 1.79G 0.1153 0.01665 0.04389 11 416: 100% 21/21 [00:06<00:00, 3.06it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:01<00:00, 1.78it/s]\n", " all 88 117 0 0 0 0\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 1/99 2.19G 0.1125 0.01739 0.04361 21 416: 100% 21/21 [00:03<00:00, 6.50it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.81it/s]\n", " all 88 117 1.53e-05 0.00424 8.06e-06 8.06e-07\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 2/99 2.19G 0.1089 0.01668 0.04327 18 416: 100% 21/21 [00:03<00:00, 6.46it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.90it/s]\n", " all 88 117 1.48e-05 0.00424 7.84e-06 7.84e-07\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 3/99 2.19G 0.1066 0.01685 0.04172 12 416: 100% 21/21 [00:03<00:00, 6.65it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.98it/s]\n", " all 88 117 0.000109 0.0312 6.08e-05 6.08e-06\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 4/99 2.19G 0.1092 0.01683 0.04295 15 416: 100% 21/21 [00:04<00:00, 4.95it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.64it/s]\n", " all 88 117 3.16e-05 0.00424 1.67e-05 1.67e-06\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 5/99 2.19G 0.1094 0.01696 0.04274 16 416: 100% 21/21 [00:03<00:00, 6.91it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 7.30it/s]\n", " all 88 117 3.37e-05 0.00424 1.84e-05 1.84e-06\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 6/99 2.19G 0.1081 0.01746 0.0411 16 416: 100% 21/21 [00:03<00:00, 6.80it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 7.22it/s]\n", " all 88 117 5.14e-05 0.027 2.95e-05 4.85e-06\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 7/99 2.19G 0.1053 0.0166 0.04148 16 416: 100% 21/21 [00:03<00:00, 6.83it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.92it/s]\n", " all 88 117 4.96e-05 0.027 2.69e-05 8.48e-06\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 8/99 2.19G 0.107 0.0157 0.04171 13 416: 100% 21/21 [00:03<00:00, 6.95it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 7.29it/s]\n", " all 88 117 0 0 0 0\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 9/99 2.19G 0.1063 0.01622 0.04038 11 416: 100% 21/21 [00:03<00:00, 6.86it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 7.17it/s]\n", " all 88 117 0 0 0 0\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 10/99 2.19G 0.1041 0.01686 0.03947 16 416: 100% 21/21 [00:03<00:00, 6.83it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.84it/s]\n", " all 88 117 4.31e-05 0.027 2.57e-05 1.1e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 11/99 2.19G 0.1043 0.01641 0.03893 12 416: 100% 21/21 [00:03<00:00, 6.63it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.71it/s]\n", " all 88 117 6e-05 0.0312 6.95e-05 1.1e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 12/99 2.19G 0.1044 0.01717 0.03878 15 416: 100% 21/21 [00:03<00:00, 6.60it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.68it/s]\n", " all 88 117 7.55e-05 0.0354 4.94e-05 1.19e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 13/99 2.19G 0.1024 0.01624 0.0383 15 416: 100% 21/21 [00:03<00:00, 6.79it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.59it/s]\n", " all 88 117 0.000127 0.0994 0.000153 2.96e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 14/99 2.19G 0.1031 0.01608 0.03719 11 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.82it/s]\n", " all 88 117 7.35e-05 0.0354 0.000113 1.54e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 15/99 2.19G 0.1016 0.01579 0.03732 10 416: 100% 21/21 [00:03<00:00, 6.74it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.99it/s]\n", " all 88 117 0.000102 0.0439 0.000245 5.07e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 16/99 2.19G 0.1021 0.01583 0.03577 17 416: 100% 21/21 [00:03<00:00, 6.80it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.93it/s]\n", " all 88 117 0.000167 0.0709 0.000313 4e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 17/99 2.19G 0.1008 0.01644 0.0368 14 416: 100% 21/21 [00:03<00:00, 6.65it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.69it/s]\n", " all 88 117 0.000252 0.0978 0.000406 8.64e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 18/99 2.19G 0.09974 0.0161 0.03543 10 416: 100% 21/21 [00:03<00:00, 6.82it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.63it/s]\n", " all 88 117 0.000327 0.111 0.000319 6.51e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 19/99 2.19G 0.0986 0.01502 0.03512 9 416: 100% 21/21 [00:03<00:00, 6.70it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.38it/s]\n", " all 88 117 0.000204 0.0693 0.000208 4.78e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 20/99 2.19G 0.09785 0.01606 0.03543 18 416: 100% 21/21 [00:03<00:00, 6.77it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.56it/s]\n", " all 88 117 0.000215 0.0778 0.000202 5.48e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 21/99 2.19G 0.09726 0.01593 0.03418 11 416: 100% 21/21 [00:03<00:00, 6.73it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.30it/s]\n", " all 88 117 0.000258 0.0863 0.000626 0.00015\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 22/99 2.19G 0.09674 0.01654 0.0347 15 416: 100% 21/21 [00:03<00:00, 6.77it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.28it/s]\n", " all 88 117 0.000478 0.14 0.000393 6.92e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 23/99 2.19G 0.09551 0.01666 0.03521 11 416: 100% 21/21 [00:03<00:00, 6.42it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.23it/s]\n", " all 88 117 0.00101 0.166 0.00105 0.000193\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 24/99 2.19G 0.09676 0.016 0.0351 16 416: 100% 21/21 [00:03<00:00, 6.82it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.44it/s]\n", " all 88 117 0.000227 0.082 0.000389 7.06e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 25/99 2.19G 0.0953 0.01659 0.03407 11 416: 100% 21/21 [00:03<00:00, 6.73it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.38it/s]\n", " all 88 117 0.000612 0.169 0.00101 0.000192\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 26/99 2.19G 0.09548 0.01664 0.03398 21 416: 100% 21/21 [00:03<00:00, 6.77it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.34it/s]\n", " all 88 117 0.000537 0.163 0.000695 0.000165\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 27/99 2.19G 0.09556 0.01495 0.03415 12 416: 100% 21/21 [00:03<00:00, 6.79it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.94it/s]\n", " all 88 117 0.000306 0.103 0.000322 9.5e-05\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 28/99 2.19G 0.09419 0.01587 0.03481 14 416: 100% 21/21 [00:03<00:00, 6.73it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.23it/s]\n", " all 88 117 0.00047 0.143 0.000556 0.000137\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 29/99 2.19G 0.09372 0.01512 0.03208 14 416: 100% 21/21 [00:03<00:00, 6.87it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.20it/s]\n", " all 88 117 0.000836 0.184 0.00095 0.000252\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 30/99 2.19G 0.09421 0.01543 0.03376 9 416: 100% 21/21 [00:03<00:00, 6.68it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.94it/s]\n", " all 88 117 0.00102 0.257 0.0013 0.000243\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 31/99 2.19G 0.09457 0.01651 0.03411 15 416: 100% 21/21 [00:03<00:00, 6.54it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.03it/s]\n", " all 88 117 0.000478 0.156 0.0026 0.000374\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 32/99 2.19G 0.09498 0.0151 0.03414 13 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.25it/s]\n", " all 88 117 0.000533 0.174 0.000688 0.000165\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 33/99 2.19G 0.09439 0.01626 0.03356 12 416: 100% 21/21 [00:03<00:00, 6.71it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.04it/s]\n", " all 88 117 0.000822 0.224 0.00107 0.000219\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 34/99 2.19G 0.0929 0.01645 0.03307 16 416: 100% 21/21 [00:03<00:00, 6.67it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.94it/s]\n", " all 88 117 0.000559 0.191 0.00319 0.000457\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 35/99 2.19G 0.09445 0.01591 0.03346 14 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.08it/s]\n", " all 88 117 0.000634 0.215 0.00105 0.000252\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 36/99 2.19G 0.09219 0.01655 0.03387 12 416: 100% 21/21 [00:03<00:00, 6.89it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.24it/s]\n", " all 88 117 0.000759 0.242 0.00514 0.000688\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 37/99 2.19G 0.09335 0.01629 0.03279 9 416: 100% 21/21 [00:03<00:00, 6.62it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.91it/s]\n", " all 88 117 0.000643 0.201 0.00285 0.000541\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 38/99 2.19G 0.09324 0.01543 0.03053 8 416: 100% 21/21 [00:03<00:00, 6.79it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.06it/s]\n", " all 88 117 0.00084 0.242 0.016 0.00184\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 39/99 2.19G 0.09212 0.01685 0.03244 24 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.96it/s]\n", " all 88 117 0.000921 0.204 0.00198 0.000412\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 40/99 2.19G 0.09441 0.01593 0.03225 11 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.13it/s]\n", " all 88 117 0.000739 0.204 0.00147 0.000236\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 41/99 2.19G 0.09208 0.01577 0.03189 15 416: 100% 21/21 [00:03<00:00, 6.59it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.19it/s]\n", " all 88 117 0.000643 0.242 0.00217 0.000353\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 42/99 2.19G 0.09275 0.01531 0.03339 10 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.94it/s]\n", " all 88 117 0.000874 0.231 0.00191 0.000415\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 43/99 2.19G 0.09242 0.01607 0.03199 12 416: 100% 21/21 [00:03<00:00, 6.64it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.24it/s]\n", " all 88 117 0.000824 0.241 0.00401 0.000828\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 44/99 2.19G 0.0915 0.01671 0.03148 17 416: 100% 21/21 [00:03<00:00, 6.78it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.16it/s]\n", " all 88 117 0.000894 0.213 0.00155 0.000334\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 45/99 2.19G 0.09222 0.01542 0.03073 17 416: 100% 21/21 [00:03<00:00, 6.74it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.10it/s]\n", " all 88 117 0.00108 0.215 0.00445 0.00093\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 46/99 2.19G 0.09229 0.01604 0.03152 19 416: 100% 21/21 [00:03<00:00, 6.79it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.20it/s]\n", " all 88 117 0.000868 0.228 0.00631 0.00127\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 47/99 2.19G 0.0912 0.01539 0.03166 12 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.11it/s]\n", " all 88 117 0.000979 0.276 0.00536 0.00102\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 48/99 2.19G 0.09158 0.01672 0.02968 18 416: 100% 21/21 [00:04<00:00, 5.07it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.19it/s]\n", " all 88 117 0.000855 0.211 0.00917 0.00116\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 49/99 2.19G 0.09201 0.01587 0.03005 15 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.10it/s]\n", " all 88 117 0.00116 0.265 0.00349 0.000703\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 50/99 2.19G 0.09068 0.01661 0.03078 20 416: 100% 21/21 [00:03<00:00, 6.74it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.05it/s]\n", " all 88 117 0.000839 0.225 0.0025 0.000477\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 51/99 2.19G 0.09154 0.01657 0.02829 9 416: 100% 21/21 [00:03<00:00, 6.74it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.24it/s]\n", " all 88 117 0.00103 0.248 0.036 0.00957\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 52/99 2.19G 0.08986 0.01626 0.02994 11 416: 100% 21/21 [00:03<00:00, 6.81it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.22it/s]\n", " all 88 117 0.000925 0.234 0.00307 0.000755\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 53/99 2.19G 0.09083 0.01589 0.02924 16 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.34it/s]\n", " all 88 117 0.000907 0.261 0.00173 0.000507\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 54/99 2.19G 0.09146 0.01624 0.02915 15 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.31it/s]\n", " all 88 117 0.000931 0.288 0.01 0.00365\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 55/99 2.19G 0.08972 0.01542 0.02875 7 416: 100% 21/21 [00:03<00:00, 6.72it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.80it/s]\n", " all 88 117 0.00127 0.302 0.00265 0.000482\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 56/99 2.19G 0.09277 0.0154 0.02895 13 416: 100% 21/21 [00:03<00:00, 6.67it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.69it/s]\n", " all 88 117 0.00118 0.248 0.00192 0.00037\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 57/99 2.19G 0.09208 0.01525 0.02845 11 416: 100% 21/21 [00:03<00:00, 6.74it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.21it/s]\n", " all 88 117 0.000942 0.268 0.00251 0.000539\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 58/99 2.19G 0.09021 0.0168 0.0285 14 416: 100% 21/21 [00:03<00:00, 6.73it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.46it/s]\n", " all 88 117 0.000871 0.25 0.00168 0.000475\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 59/99 2.19G 0.09088 0.01501 0.0295 9 416: 100% 21/21 [00:03<00:00, 6.57it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.10it/s]\n", " all 88 117 0.00086 0.259 0.00325 0.000596\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 60/99 2.19G 0.09115 0.01702 0.02852 13 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.91it/s]\n", " all 88 117 0.000795 0.244 0.0015 0.000379\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 61/99 2.19G 0.09011 0.0166 0.02932 16 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.23it/s]\n", " all 88 117 0.000927 0.284 0.00252 0.000566\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 62/99 2.19G 0.08945 0.01558 0.02746 16 416: 100% 21/21 [00:03<00:00, 6.73it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.46it/s]\n", " all 88 117 0.00085 0.265 0.00167 0.000418\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 63/99 2.19G 0.09098 0.01604 0.02798 12 416: 100% 21/21 [00:03<00:00, 6.70it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.21it/s]\n", " all 88 117 0.00118 0.245 0.00208 0.000578\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 64/99 2.19G 0.09016 0.01631 0.02559 13 416: 100% 21/21 [00:03<00:00, 6.80it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.60it/s]\n", " all 88 117 0.000753 0.22 0.00503 0.000917\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 65/99 2.19G 0.09016 0.01562 0.02839 8 416: 100% 21/21 [00:03<00:00, 6.91it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.04it/s]\n", " all 88 117 0.00112 0.294 0.00325 0.000798\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 66/99 2.19G 0.09088 0.01546 0.02877 9 416: 100% 21/21 [00:03<00:00, 6.67it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.16it/s]\n", " all 88 117 0.0012 0.297 0.0111 0.00292\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 67/99 2.19G 0.08921 0.01583 0.0279 11 416: 100% 21/21 [00:03<00:00, 6.67it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.09it/s]\n", " all 88 117 0.00107 0.24 0.00342 0.000963\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 68/99 2.19G 0.08924 0.01571 0.02852 9 416: 100% 21/21 [00:03<00:00, 6.81it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.08it/s]\n", " all 88 117 0.00109 0.318 0.0165 0.004\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 69/99 2.19G 0.08954 0.01566 0.02479 13 416: 100% 21/21 [00:03<00:00, 6.77it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.40it/s]\n", " all 88 117 0.000815 0.298 0.00206 0.000502\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 70/99 2.19G 0.08972 0.0162 0.02593 14 416: 100% 21/21 [00:03<00:00, 6.81it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.19it/s]\n", " all 88 117 0.00116 0.369 0.0118 0.00161\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 71/99 2.19G 0.09061 0.01558 0.02537 17 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.33it/s]\n", " all 88 117 0.00112 0.329 0.0032 0.000864\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 72/99 2.19G 0.08977 0.01598 0.02767 19 416: 100% 21/21 [00:03<00:00, 6.68it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.35it/s]\n", " all 88 117 0.00113 0.332 0.0038 0.00074\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 73/99 2.19G 0.08973 0.01544 0.0289 7 416: 100% 21/21 [00:03<00:00, 6.84it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.12it/s]\n", " all 88 117 0.00139 0.289 0.00289 0.000738\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 74/99 2.19G 0.08848 0.01558 0.0248 10 416: 100% 21/21 [00:03<00:00, 6.80it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.16it/s]\n", " all 88 117 0.000811 0.308 0.0023 0.00054\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 75/99 2.19G 0.08888 0.01536 0.0266 15 416: 100% 21/21 [00:03<00:00, 6.72it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.18it/s]\n", " all 88 117 0.000967 0.316 0.0014 0.000413\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 76/99 2.19G 0.08969 0.01578 0.0254 18 416: 100% 21/21 [00:03<00:00, 6.64it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.36it/s]\n", " all 88 117 0.000986 0.248 0.00153 0.00042\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 77/99 2.19G 0.08954 0.01537 0.0282 9 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.27it/s]\n", " all 88 117 0.00105 0.315 0.00893 0.00266\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 78/99 2.19G 0.08825 0.01559 0.02489 10 416: 100% 21/21 [00:03<00:00, 6.94it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.90it/s]\n", " all 88 117 0.000958 0.332 0.00573 0.00185\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 79/99 2.19G 0.08817 0.01551 0.0256 7 416: 100% 21/21 [00:03<00:00, 6.72it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.41it/s]\n", " all 88 117 0.001 0.271 0.00189 0.000503\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 80/99 2.19G 0.08867 0.01533 0.0258 20 416: 100% 21/21 [00:03<00:00, 6.81it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.43it/s]\n", " all 88 117 0.00107 0.269 0.00278 0.000698\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 81/99 2.19G 0.08729 0.01593 0.02637 16 416: 100% 21/21 [00:03<00:00, 6.77it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.10it/s]\n", " all 88 117 0.00114 0.338 0.00276 0.000551\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 82/99 2.19G 0.08966 0.01523 0.02551 18 416: 100% 21/21 [00:03<00:00, 6.69it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.31it/s]\n", " all 88 117 0.00107 0.333 0.0048 0.00107\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 83/99 2.19G 0.08837 0.01583 0.02386 14 416: 100% 21/21 [00:03<00:00, 6.68it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.20it/s]\n", " all 88 117 0.00124 0.363 0.00464 0.000975\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 84/99 2.19G 0.08844 0.01592 0.02393 7 416: 100% 21/21 [00:03<00:00, 6.72it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.94it/s]\n", " all 88 117 0.00117 0.34 0.00361 0.000957\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 85/99 2.19G 0.08909 0.01573 0.0283 11 416: 100% 21/21 [00:03<00:00, 6.66it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 5.96it/s]\n", " all 88 117 0.00117 0.359 0.00749 0.00165\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 86/99 2.19G 0.08641 0.01637 0.02478 11 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.26it/s]\n", " all 88 117 0.00104 0.35 0.0109 0.00222\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 87/99 2.19G 0.08801 0.01601 0.02392 12 416: 100% 21/21 [00:03<00:00, 6.54it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.26it/s]\n", " all 88 117 0.00113 0.345 0.00642 0.0017\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 88/99 2.19G 0.08777 0.01602 0.02295 13 416: 100% 21/21 [00:03<00:00, 6.68it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.38it/s]\n", " all 88 117 0.000925 0.207 0.00142 0.00041\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 89/99 2.19G 0.08833 0.01538 0.02506 6 416: 100% 21/21 [00:03<00:00, 6.67it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.30it/s]\n", " all 88 117 0.00103 0.352 0.00573 0.00133\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 90/99 2.19G 0.08698 0.01588 0.02688 6 416: 100% 21/21 [00:03<00:00, 6.61it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.47it/s]\n", " all 88 117 0.00105 0.349 0.0232 0.00397\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 91/99 2.19G 0.08659 0.01686 0.02357 13 416: 100% 21/21 [00:03<00:00, 6.11it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 4.58it/s]\n", " all 88 117 0.00121 0.325 0.0173 0.00363\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 92/99 2.19G 0.08618 0.01606 0.02423 11 416: 100% 21/21 [00:03<00:00, 5.65it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.20it/s]\n", " all 88 117 0.00113 0.348 0.00771 0.00208\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 93/99 2.19G 0.08635 0.01476 0.02295 13 416: 100% 21/21 [00:03<00:00, 6.75it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.44it/s]\n", " all 88 117 0.00112 0.306 0.0333 0.00735\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 94/99 2.19G 0.08663 0.01565 0.0248 15 416: 100% 21/21 [00:03<00:00, 6.81it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.20it/s]\n", " all 88 117 0.00121 0.349 0.0286 0.00458\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 95/99 2.19G 0.08681 0.01664 0.02215 17 416: 100% 21/21 [00:03<00:00, 6.44it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.04it/s]\n", " all 88 117 0.00129 0.383 0.00841 0.00181\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 96/99 2.19G 0.08747 0.0163 0.02353 23 416: 100% 21/21 [00:03<00:00, 6.72it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.26it/s]\n", " all 88 117 0.00116 0.375 0.0136 0.00246\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 97/99 2.19G 0.08561 0.01533 0.02447 15 416: 100% 21/21 [00:03<00:00, 6.60it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.34it/s]\n", " all 88 117 0.00102 0.352 0.00504 0.00123\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 98/99 2.19G 0.08603 0.01557 0.02167 9 416: 100% 21/21 [00:03<00:00, 6.79it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.34it/s]\n", " all 88 117 0.00126 0.383 0.011 0.00183\n", "\n", " Epoch GPU_mem box_loss obj_loss cls_loss Instances Size\n", " 99/99 2.19G 0.08553 0.0164 0.02257 20 416: 100% 21/21 [00:03<00:00, 6.73it/s]\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:00<00:00, 6.41it/s]\n", " all 88 117 0.00102 0.248 0.00161 0.000488\n", "\n", "100 epochs completed in 0.113 hours.\n", "Optimizer stripped from runs/train/yolov5s_results2/weights/last.pt, 14.8MB\n", "Optimizer stripped from runs/train/yolov5s_results2/weights/best.pt, 14.8MB\n", "\n", "Validating runs/train/yolov5s_results2/weights/best.pt...\n", "Fusing layers... \n", "custom_YOLOv5s summary: 182 layers, 7254609 parameters, 0 gradients\n", " Class Images Instances P R mAP50 mAP50-95: 100% 3/3 [00:01<00:00, 2.22it/s]\n", " all 88 117 0.00104 0.248 0.036 0.00957\n", " angle 88 12 0 0 0 0\n", " fracture 88 59 0.00107 0.39 0.0023 0.000517\n", " line 88 35 0.000949 0.0571 0.00243 0.000753\n", " messed_up_angle 88 11 0.00212 0.545 0.139 0.037\n", "Results saved to \u001b[1mruns/train/yolov5s_results2\u001b[0m\n", "CPU times: user 6.02 s, sys: 764 ms, total: 6.78 s\n", "Wall time: 7min 26s\n" ] } ], "source": [ "# train yolov5s on custom data for 100 epochs\n", "# time its performance\n", "%%time\n", "%cd /content/yolov5/\n", "!python train.py --img 416 --batch 16 --epochs 100 --data {dataset.location}/data.yaml --cfg ./models/custom_yolov5s.yaml --weights '' --name yolov5s_results --cache" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 821, "resources": { "https://localhost:6006/?tensorboardColab=true": { "data": "PCFkb2N0eXBlIGh0bWw+PG1ldGEgbmFtZT0idGItcmVsYXRpdmUtcm9vdCIgY29udGVudD0iLi8iPjwhZG9jdHlwZSBodG1sPjwhLS0KQGxpY2Vuc2UKQ29weXJpZ2h0IDIwMTkgVGhlIFRlbnNvckZsb3cgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+VGVuc29yQm9hcmQ8L3RpdGxlPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBWUFBQURBcG81ckFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFCYWJnQUFXbTRCeFdzak9BQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmwwU1VSQlZIaWM3WjE1ZUZUVjNjYy92NXNGQ1ZSeHFWdHB0VlcyVmx4ZjYxcXRpcTBMOUdsOU5YVUJGRXBGUlRJaGhCQURDVGRBTUFFa0NZc0s3cUI5K2tENzJxZkJXaXZxVzdWYTY3NGlyZTlyYXhYMWJaVldaVEhML040LzVnNEdTR0R1ekwxejc1MDVuMzg0ek13NTU4dk0vWEsyM3prSERJR2ppemhQRjNGZTBEb01JRUVMeUdkMFBvT3dhQUF1Y1Y1YWgwVzVWUEI2a0xyeUdXT0lBRkNiL3ZTakVxZ0crdXp3S3dnZHdDMTBVQ2ZWL0RzWWhmbUxNVVFXVVJ1TEVrWUQ4eEVPMnY3R2pvWndQc3hIV014aElFdWxsSzVzNnN4bmpDR3loQzdnSkpSVzRDU2daeFAwbkg0Smk1aVU4N2pmR2czR0VMNmpUUXdFNWdHamtXN2ZkK3FHU0xLV0lzcGtNbS83SU5QZ1lBemhFMnBUUWgrcXNLZ0MrZ0x1VGJCcmVpdXdtSFlhWkRxZmVpcllBQmhEZUk0cVFpTVhBd3NRRHZQQUJEMmxOeUxVczRuYnhTYWV1V3BERW1NSUQ5RWJPUUZvUlRodCs0ditHQ0w1NTdOQXVjUjRLaTNCaGwwd2h2QUFiZUFRTEd4Z0FtRDVhb0x1NmNTZml2QUxsRXFKOFk1TDZZYWRNSWJJQUxVcHBvaHJFV1lqN0wzOWpld2FJcG5lakxLUXZXbVVjV3hMNlI5ZzJBVmppRFRSdVl6Q29nWDRCcEE5RTNSUDkveiszNEdaVXNiS1hxUWJkb014aEV1MGdhTVJtbEhPOXZBQi82T1RPdGtEUXlUU3lpTW81UkxqdFo3K0hZYWVzWUlXRUJYVVpqK2RTeXZ3UE1yWkhoVzdFV0VpbjNFYVV6a1ZvUlQ0bXljbEMrZGc4Ykl1WmFYZXdvR2VsSmtIbUJaaUQ2aE5JVVdNUjJrQUR2Q29WZGlLc0pqNHJ1c0p1cHdTUHFNS3FFS2M5WXZleWttOXprMUFFd2ZTTEtXMFkrZ1ZZNGpkb1BXY2cwVUx3bEhiWDh6Y0VHc1J5bVRhN2xlY3RZbUJGRGtyM095d3hwMk9JWkxwRFFoVDVUb2UyRjNkK1l3eFJBL29IQVpCdDdCc2IxcUZGeW1nWENyZHhTVHBJczRFV2hDTzNhWE05TFdzbzRDWVhNTWJiclRrQThZUTNWQ2IvZ2lWeUU1aDJaa1o0aU9FT1J5ZWZ0U3EybGdNWURUS2ZPQWdqM1Ixb054Q0lYVXkwWVNaSnpHR3dIbmdMT2VCNnlrc083MEhML0hBaVhmN0duUVovV252d2JEcGF3U2NNUFA5VEpnNUdFT2dzMU1JeTNiL3NLMGpUa3hxL09tU2FDdURVQnFRN1R2dHZPald2WWhRTHRma2Q1aDUzaHBDYlJkaDJhay9WQnRRS3FTRzMzZ3F0aGUwbFhPQUZ1QW9EOWRFMWxKQW1mdzBQOFBNODg0UWFsTUN6clJtcW1IWmUzNlFOaUUwOFRuTlltZDNXbE50Q3RtWDhZZ3pMZHk3UmpmcFJKaDVFUTN5ay93S004OGJReWdJZFZ5TXhRTFVaVmgyNys5M290eUpNRk5xK0lmWG10MmdpOWlQUW1ZQjF5RVVibjhqTTNPOGgxTERSRmFKb0o0S0RpbDVZUWl0NVFRa2c3RHNubDk3Rkl0eXFlWlZUOFZtaUM1aEtFb3o0aHhyNDAxWDZsbVVtRnpEMHg1S0RTVTViUWl0NFJDS3NORU13N0ozZk8wdGxCcVp5UnFQNVhxS0xtWVVRZ3ZpQkI5Q3B1WlE0RjQ2cUpKSmZPQ3AyQkNSazRaUW0ySTZQUXpMVHZ5WkNLL2VoeHVsak04OWx1d0xhbFBNL3M3M0FIdDcxRnBzUmxoSVlXNkdtZWVjSVhTRzUySFpjWVQ3RUtiSkRENzBWbTEyME9VY1FnYzI0clNVNE1YMzhoWkNqVXdJZDB2cGxwd3hoTjdBVUFwb0JzN3pjQXJ5R1pTWTFQR01oMUlEUTI5MnRyZ3FwM24ySFZrOFNwd3A4bE5lOFZCcVlFVGVFR3F6SHgzTVFyZ09uTm1Wekgvc2Q0RVoxT2JlN0lvcXdpM09JUWh3R09ERjk5V0pPTE50NDRPZGJjdVV5QnBDYlFycFlEeDRHcGE5QlZqQWwyaVNDclo2S0RkMDZISks2S1FLU1NITVBOVzB4U2JpTkxGM2RNUE1JMmtJclhGV2FMMEx5MWJnRnhRd1RXWjZ0RUVuSXVqaUZNTE0zYVlUWWVZVk1pNDdLL1plRWlsRDZFd0dFZmM4TFBzNUxNcWxqajk0cHpSNjZNMmM2VXhHN0JwbTdqYjl4V3ZyS0tSTXhyTGVPNlgrRWdsRHFPMUVlU3JWQ0gyMnY1R1pJVFlDOVdBTyswcWlOaFlITzRjeGR3OHpoMHpXYlJKUnZ4M1JDRE1QdFNIVXhtSXJvN0djSHdpOGFCWGFnVnNwWWFZNURySm5kQm45c2FqRWNzTE1JUk5ESkVtRW1mY05kNWg1YUEyaE4zUUx5L1p1R25VdFFreHMvdGREcVRtTDNzb2d4T21pWm02SVpQb0ZsSElaeHhOZWF2V0swQmxDcXhpSTFXMlFCMTYwQ2kraGxNc2NmdStwMkR4QlZ6RENpWTlLVEdKa1pvaGtlaTF4SnNzNC91cWwxa3dKalNIVXBvUXR6alFnOVBXb1ZVaHMzMXpQVWxrVDNtWTZDcWhOSVY5eFRoOFJKOHdjTWpFRUpLYTVsOUNYdVZMS1o5NHFUby9BRGFFZ1RPTml4RmtvY3YrbDlwUk9YRXZWVHAwMGhYOGdGeVgwZHZaRG1RVk1BZ295TkVReS9SNUNEYU9EWHdnTjFCQTZsUk93ZWduTFR0OFE2eERLWlk2NXVOQlA5RGFHQVl1UWJyZW5adjdiL1FtTG1JemVmcEpoMWduRUVGcnVoR1h2N3JSczkxL3FCdUpNbFhubXpLRnNvcmN6Q3B4Z1NtOWFkMFdjTVBOeDJROHp6Nm9obk83Uk5KUmFoUDQ5cW5EL3BYNE0xRlBFeldMVDZhMWlReXJvWGV4Rm5BcmdCcUMvUitPL1Q3Q1lReEdMc3hrR2t2VVdRaXM0emprTjc0d2VWYVJ1aUVSWWRoR1ZZdk4vZm1nMXVFT1hjd2lGUG9XWlg1R2RNUFBBeGhCYXlTaUVWdURycmcyaFBJb3dSZWJsUnNoeHJxRjNjd0pkenRqUXV6V2tSMUhLWmJTL1czYURIVlRiRkxPWmF4SG1BRi9hUVZIUFg4eGJXTlJJUTI1dFNzbEZWQkh1OWlITUhPNmtpSmxTNmsrWWVlRFRyZ0JheGFIQUxHQUMwbU5UbTlpMldFeWoyTG0zYlRHWDBlV1VVSnppYWVhcHB6ZWgxSE1veStRc2I4ZU5vVEJFRXEzaVA1eHUxS21Pc3NURzlpNnFaRUh1Ym16UEIvUTJCbExNUE5URE1ITjRFNHNLdVpRSHZkSVpLa09BTXhNMW5URUlGMk5oeXp4ZUNGcVR3VHYwTHI3cmhKa2ZzLzNGek0xeFAzRXE1WXJNWTlSQ1p3aEQ3cU0yRm9jN1llYVNRWmo1anVrT0xHNmhnMW9aelNmcGFqT0dNQVNHcnFZL1c3dWRaZzZadHhiQyt5ZzJGbmVrRTJadURHRUlITDJQUVhTbEVXYSt1elE4ajBXNWxQS2tHeTNHRUliUW9QZHdQc0lpaEtGQXBvYUF4S1gyRStUSDNKbXFCdGUza0dvNUU3U2NIN3JOWnpEc0NibVNCOW5LMGNCRTRKOWVGQWtjNmlhRCsydDVsU05SN3RjWTYvUjZ4OGtHZzBmSVJEcGtEQ3Zvd3hCZ01XUjNIMHM2aGloeVV1ZFF3Q3NhbzFXdjZ4YW9aekI0Z0pUeXNZd21ScHpod0crelZhOTdRMWpiRFFGUUJKUlJ4SHFOTWRZelZRYURnNHhsdll6bWZJUWZnUDk3NFROcElib3pFTGhIeTNqWWRLTU1maUNYMDBZUnc0QnlTSCtkWVUrNE53UTlHaUtCTUlJQ1h0WXBOS3JOWHVuTE1oaDJSVXBwbHl0b1JSZ0cvcHlsNWEwaEVoU2pUT2Rmdks0eFJxWWp5bURZSFhJWkc4R2Z2ZGQrR0NMSk54RGFkQXB0V3NuWDA2akhZTWc2WG8waGRzZEl1bmhkSzdCTk44b1FkaktkWlVxVnZpaXorSVRYdEpJTDA4aHZNR1NGYkxRUTNUbUNPR3UxZ2pZdDUvQU15akVZZk1IUE1jVHVHRWtCYjJpbDZVWVp3a1ZRaG9Ca04rcFRYdFZwWE9CUm1RWkRSZ1JwaUNSSG9qeWdVMm5UYXRPTk1nUkx0c2NRdlNPTXBKUFh0UXBiSjNlN0ZNVmd5Q0x1RFNFK0dTSkJDY29zK3ZDYVR1dDJacWpCa0NYQzBHWGFGZUZJNEVHdG9rMm5PbWY2R0F4WklKeUcrSUxFYkpUcFJobXlSTmdOQVZBQ3pLS0VWM1U2Mzg5eTNZWThJd3FHU0RJSStLMVcwNmJUK1ZwQUdndzVUcFFNa1VBWmliQmVxN0hWcGpoUUxZYWNJM3FHU0pEb1JtM2pWYTNtZTBHTE1lUU9VVFZFa3NFSUQra050T2tNdmhxMEdFUDBpYm9oa293a3pucXRNZDBvUTJia2lpRUErZ0d6YU9jVnJlSGNvTVVZb29rclEyamk0S2RDbjdSNHhSRGdkenJEZEtNTTduSFhRbHdkZWpOMFp5U3dYbWVhYmxSZUUzZDNHSUhiTGxOWXUwdTkwUTlsRmwyOHJETVpFYlFZUTFiWmpGTFBOaGE1eWVUT0VQdEd6aEFKbEtIQTczUW1LN1dHZzRLV1kvQVZCVmJSd1NDNURGdkd1YnVDelowaE9pTnFpQVFDaktHQURUcVRtTnFSNnY0WlVrSDVFeGFueWFXTWxURzhuMDRSN2d6UkZXbERKTmtIb1lVdW50TmFUZ3Rhak1FVDNrVzRra3M1V1VwNU9wT0MzQm5DcjgxQndYQU13aE5hWjdwUmtVWFpBdFJUd0dDNWxKVWltUjllNXM0UThad3lCQ1M3VVlXOHFYWEU5QklLZ2haa1NCRmhGVVVNbHN1d3BaU3QzaFhyQXIyZW9SU3czbFdwMFVxL2hEQkpiSjdDa0plNGF5R0tjcTZGMkpsamdTZlZacVhhSEJpMEdFUDJ5ZWN4Uk0rbzA0MkNEVnBQVEZlYmJsUStZUXpST3dOUVdsalBzenFiVTRJV1k4Z091YjVTN1FYSG9meEI2MW1wOC9oeTBHSU0vbUphaU5SSWRLTTYyYUJ6VERjcWwzRm5DTW43SUxsOVVWcll3SjkwTGljSExjYmdQYWJMbEE3SzhTaFA2UnpUamNvMVRKY3BmUkxkcUM3VGpjb2xUQXVST2ZzaXRQQVhudEhabkJTMEdFTm11RE5FZXJjSDVRZktDVmc4cFhOWnFUWUhCQzNIa0I2bWhmQVdDMkVNUld6UUJtSnFwN1ZuUFZSb013T0MxcEFKdXBxRDNYemU3USsyNXowRXJxS2pjcGI5Z0JhS2VWSWJPU1pvTWVtZ1N6aFVsN0tjWXVZRXJTVWRkQlZEOUdjOFFBZFQzZVJ6TzZoMk4rMXF6SEVLU2xuUUl0eWdOc1c2aEJnV2J5SmNUWG9uc3dTRzNzZStlaCtOV0x3QzdtK21jcmRyVENsSyt5SGZNZDltNERHZ2pTNmVvSWpIMEJ6ZGt4Q25QV2dKcWFMTEdJWFNDdEc3VjF4dExJNWdOTEFBMGcvTWRMdU5NcE14eE5zb0R3TnIyWWVIeFA3aVFkRktLb0Q3TWlnN3ZBZ2RRVXZZRTdxTVk0blRnbkptMEZyU1FlL2pMT0swSUJ5ZGFWbnVER0ZSNUdKUFVoZUovUVZyRWRya0pwN3Y3WU95a0o5cEpaZEREdDVoTGVGdElYUXArd04xeEprRTBWdEgwWlY4RFl1NUtHTzg2cDY3N3pMdG5zMkkweFVxNU5leWdBOWNLTG1lTHI1TDRnUyszRUhEMTBMb2NvcG81enJpMUNQc0U3UWV0K2hLK2lGTUE2YWo3T1hsV05XTEx0UGJDQThqdTNhRjNDQ04vRldyYUVDWmwzZ2huVkpDU01nTW9Zc1p3ZWUwQU44S1dvdGJWQkh1WlF4S0U3aWJUazJWZEF6eFJWY29UcHNzN3IwcjVKb1NGckNaVWhJNzEzSURLeHlHMEtVTXBvdEZLQmRHOFQ4YnZZc1RXVVVyK0xzM3haMGh1cmliSXVaTE14LzdJVVpzT3JXUzZ4Q2VwUHQwWDIvN29LTkJvR01JYldZQVFqVmRUSUhvUlN2clBYd0Z1QkVZVFJaK2ZWZUdrS1c4NlplUTdYVXM1R21keG5MZ1dyL3J5Z29CZFpuVXhtSkE1dE9RUWFHcjZjdFd5b0Fad0pleVZXODRGMTIyVVkzdzNoNC9GNFhXSW9CWkpyMkpzOWlIRjRCN2lLSVo3bUlVVzNnRHBaRXNtZ0ZDYWdoWndpZEFoYnRNL21qSm1DeTJFSG9UWDlWbVZtTHhLRVF2WkVUdjVIaTlpOGNSZmcwY0hvU0cwSjV2S2syczFtbU1SaGpsUHJNUGd0SWxDNGJRQmZURFlockNkR0F2dit2ekdyMkgvZW1pRGdsK1BTUzBoZ0RBNG5xVXM0RCthWmNSdkRsODZ6S3BJaXppWW9TRkVMMnJpblU1UlJSekhWM2hXUThKWlpjcGlUVHhEa0s5ZHdWNlZsTHErRFR0cWdzNWtVVThDYXdtaW1hNGt4RVU4UkpLQzRURERKQmxRNmhOb2JwOUxQdlNBcnpvdVpqc21HTVR5cXRlRnFoTkhLb0xXWTd3UitCVUw4dk9Cbm9IUS9SMkhuRGkycjRadEo2ZDhkMFFPcGsrT29VUldrRXJuL0F1VTdqS1RYNng2VVM1bXNTQ29ELzRZUTdsQXl6T2tocmU4S3pJaFZ4RUFYK0c2SVZsQStqdGpBZGVROXlIWldjTFg3NVVuVUpmbmNJb25jSktDdmtRZUJnb0F3NUNhTllxQnJvcFQrYnpISEN6SDFwM3JjeVRVdDZtZ085SU5TOTdVdG9YSEVPMFk3MkdFZkp4cTJmaXRKd0JLT2NpakVMNUVkQy9sNGRySDdxNEJWek9IaWt6RUg0RTdzeVVFZW1aNHpVSytiNU1aNlBIYWd4WklLTVdRaWV4djhZWXF6SGFVRDRrTWNBYnc1NW5oVVpxQlQ5MlU1Zk01MU1rOUx2UEhxZUEwNDBab290clEraGtCbW9aVjJ1TU5ncDVuOFJxNkVqY3hza0lTN1hTM1NxcU5ISS95cTljMWVNVmUyNHQxbExDZVZMTnY3T2d4dUFUN2k1dUwrY2lMTjVCV0U3Q0JKbnNvRHVBT00ydWN5bVRJT0NIYm1kektQZnlaUzZTQ3U5dXNqRUVnOXNydGZyaDVaeU1jTGxPNVlldXNzeG5JOG9zenpSa2lzVVN1cmhTSm9ZanpOdVFHY0ZQM1FrM2F6WDd1c3JUbHlYQUgvMFJsRElLMU1zTXlzUW1IckFXZzBjRWJ3ZzRoRTZhM0dRUW16Z1dFeUd3LzVXN1VLNlJXdXlBNmpmNFJCZ01BVEJCcC9FOU54bGtIcThBUzN6U3N6dmFFUzZUT2xZRVVMZkJaOEppQ0NIT2NyVmRCdkgxb1JaNDJ4OUpQYklaWVpUTVpFMFc2elJra2JBWUFvVEQyY3hjVjFsc3RqZ2h3OW5nWXl4R1NDMi95MUo5aGdBSWp5RVNUTmJwbk80bWc4empRZUFYUHVsSjhnN0NxVEl6OElHOHdXZkNaZ2lMT0xlcjdYS1RTeWVUZ1gvNUk0bjFGSEM2MUxMQnAvSU5JU0pzaGdBWXdtWnEzV1J3RGtTYjZZT1c1eWppVEpuSjM5TXRRQnM0eWt0QkJuOEpveUVBcXJTYUUxemxLT1lXNENrUE5UekdYcHd0TmZ3ajNRTDBScVlqVkhxb3llQXpZVFZFSVhIdTBLdFREdzBSbXpnRlhJTTNheE8vQWk2UTZYeWFiZ0hhd0d6bjFBaERoQWlySVFDT1lRQlZiakxJSEY1RjBvaVAycEc3Z1V2RVpsczZtVlVSYmFBRmNkZnRNNFNETUJzQ29GYW51enlEZEFzMjhEOXAxU1kwaWMwNHNlbE1KN3V1cG9CNTNBN0UwcXJmRURoaE4wUWY0QTY5SlBXalNhU1pyVTVFYk9vSWlsSXBOdFZ1QlNiUjFSVHdaKzRDeHFkYmhpRjR3bTRJVUU3aTYweDJrMFhtOFJEQ3oxUDhlQmN3UVdaemszdHhDZFNtbUQrekJtRk11bVVZd2tINERRRWdOR2cxUjdyS0U2Y2MyTFNIVDMxT1lyeHdaN3JTMUthRVF0cUFINlZiaGlFOFJNTVFVSUp5bTVzamJHUWVIOEp1dTBEL3dtS0V6T2IrZEVYcEF2bzVabkFWbUdnSUwxRXhCTUIzcWVhbnJuSTBjQnZ3WkEvdkpJNklzWHQ4THlYVVpnRGJXQWVjblc0Wmh2QVJKVU9Bc2tCbjhOVlVQeTZKVFR3VFNIU05raVNPaUxGNUtXMFpOZ2RTd0g4REo2ZGJoaUdjUk1zUXNEZGQzT29tZzh4bEE3RFErZXZyeFBtTzJMeVZyZ0MxT1pnQ0hpR0NwMnNiOWt6VURBRndnVlp6aGFzY2hjeEZ1WnNDVHBlR0ZPNmQ2QVdkeTJGWVBBRW1QaWxYQ2ZVcGFydWhWV3RZNXd5Yzk0aXo2and1a3dyVlpqQngxa0hxWFRaRDlJaGlDd0d3UDhyaWJGV21jeGlHeFdNWU0rUThVVFVFS0tWNkF4ZjVYbzNOOGNSNUhEalU3N29Nd1JOZFF5UllwamI3K1ZXNHp1WkVoSWVCQS95cXd4QXVvbTZJZzltV2ZzakY3dERabklueUNQaG5PRVA0aUxvaFFMaEtxem5QeXlLMW52T0o4eUJadmdIVEVEelJOd1NBc0Z5cnZIbDQxZVlIS1BjRGZiMG96eEF0Y3NNUThEVUt1VEhUUXJTT3k0QmZrZ2c3TitRaHVXSUlnR3QxQm1la20xbHRya2E0bCtpdXpSZzhJSmNNWWFIY3BsUGNkM1cwamtuQXJlVFc5MkZJZzF4N0FBWlQ0dTRBWXExak9zSlNOQVEzV2hzQ0o5Y01BY3BVcmVYRWxENDZpM293SjJQa01HK2cvTkpOQm5lRzZPSnhKUFJubXhZUTV3NjFlNy9pUzBGMEZxMG9kZGtVWnNnYW00QnFDamxPUnJzN2Z0VFZBRktXOFRmZyt6cUZFY1JwQVpjblltU1A0YlJ6QTFDLzh4dHFZOUhKQ3BTZkJLREw0Qzl4NEQ2S21DcWw2UjB3bDFhWFNacFp4MWFPUXlrbjZQdmVla09vMFZxR2QzOUpMNkdBVHU1RWpCbHlEdUZSTEk2VEt4aWJyaGtnZ3pHRXJLQkRGdE5LSjBjQWkwbWNYaEVtaW9semo5cUpWbEJ0aWhuS2FvUXJneFptOEpTM0VFcmxDczZSeTNrbDA4SXlIbFRMTWo2U1ZtSUl3NEdITWkzUFk0NmpnM0tkVEI4NldRUCtSOGNhc3NabW9KNU9oc3NWM2wxZzQ5a2lsTFN3SGpoUFkxeUNNQjg0M0t1eU0wS1l6VDVjQkp3U3RCU0RKeWh3TDUxVXlUZys4THB3ejZkZHBaVTFER0FJUWpud2lkZmxwMEZmakJseWhXZFJUcE94alBYRERPRFRPb1RZdEVzenJSUXhERmdCNXRwYVEwYThoM0lsWXpoSnJ1UnBQeXZ5ZFdGTzVyTlJtcGtJbkFUOHdjKzZERG5KVnFDSnZneVZxMWdwZ3ZwZFlWWUMyYVNaNXhTK1F3VVhBd3VBdzdKUnJ5SFNyRVdaTEZmeDEyeFdtclhRRFFHVlJhemhNNzZKVUUvQy9RYkR6cnlBY29aY3hTZ1psMTB6UUFDeFRMS0NMYklRbXdJR0E2dkEvMmJRRUFrK0FzcnB4N2RsSEU4RUpTS3c0RDZaejd0eUUyT0JVeEJ6M1cwZTB3RXNwcDBqWkJ5dFVocnNBbS9nMGE2eWtHZm94Mm5PQ25KS0I0OFpjb1oxd0xFeW5waE1ERWNJVU9DR2dNU0ZpYktBbFNoSE9PT0x6L2VZeVJCbE5tQnhvWXpuWEJuUEcwR0w2VTRvREpGRUZySlo1bU5Ud0ZHSWQ4dnhodER3TWNway9zNVJNbzdmQkMybUowSzVmMWdhZVFzbzFXck9kc0xNaCs4cGp5SDh5SVRNRDRMd20xQzFFRHNqalR4S0NjY2pUSVQwUTNvTmhsUUp0U0VBeEtaVEdsbUJNQVNsQ1dnUFdwTWhkd205SVpKSUk1dGtQdFhFT1JyQzJmODBSSi9JR0NLSnpHZUROSEloY0M2RWE0YkNFSDBpWjRnazBzZzZQdUpZSjh3OEZIUFlodWdUV1VPQXM0MTFIcTNBRWM0RkttSGJ4bXFJR0pFMlJCSzVrWS9rUm1MRU9SRjRQR2c5aHVpU0U0WklJbzI4S1BNNEUvZ0I4SGJRZWd6Ukk2Y01rVVFhYUdNTDMwS3BCajROV284aE91U2tJUUNrbWEweWp5WUtHWXFhYmF5RzFNaFpReVFSbTQzU3dFU1VreENlQ2xwUHhQZ3Y0dHN2dmM4TGN0NFFTYVNCNTVqTjZRaWx3RHRCNndrNWJ3TG55eVQrVXlibjExZ3Nid3dCempiVzJheWhnR0Vrem4zZEZyU21rUEV4U2puL1pMaE00cmRCaXdtQ3ZESkVFckhaSXJPeHNSZ0VyQ0lMcHptRW5FNWdCVVVNa2NtMGlrMW4wSUtDSWk4TmtVUnMzcFhaaktXTHM0Q1hndFlUQ01vanhEbE9Kak5SSnZMUG9PVUVUVjRiSW9uTTRmY0lKK1RaTnRhL0lKUktHU01reG10Qml3a0x4aEFPWWhNWG01WEFrWkRUMjFnL1E2a0hoc3Rrc3l0eFo0d2hka0pzUGhNYm13S0dRMDQ5TUhGZ0ZjcVJFc09Xc3B3MWZFYUVjZ3RwR0pCYS9nS1VhajNuQU0xRWV4dnJNeWd4S2VlWm9JV0VIZE5DN0FHWnhTTW94ME1rdDdHK0MxeEpqRk9NR1ZMREdDSUZ4S1pUNmxoQm5LRWtia3NLKzdUa0ZxQ2VPSU9sUER1SEJPY0t4aEF1RUp1UHBZNFlCUXhIZVRCb1BUMmd3QnE2K0taTXdaWUtjMzZ1Vzh3WUlnMmtoamVCQzNRT0kwaTBHTU1DbGdUQzgwQk1wcGhyQnpMQnRCQVpJTFdzNDhzY0UvQnRyTzhqVE9UZmZOdVlJWE9NSVRKRUp0SWh0YlJpY1FTUzFXMnM3Y0JpaWhncVUxZ2h0Z2x2OXdKakNJK1FHajZTR21MQXQ4SDM0OXpYWWpGTXBoS1RzbERjNDVjem1ER0V4OGdNWGdETzBMbU13cUxWNCtMZlJEaGJwdktZeCtVYURQNmpOaVhheUJsQjZ6Q2t6djhEUWQ3UXJNYkxSMUFBQUFBQVNVVk9SSzVDWUlJPSI+CjxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNUUFBQURFQ0FZQUFBREFwbzVyQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUJhYmdBQVdtNEJ4V3NqT0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFCbDBTVVJCVkhpYzdaMTVlRlRWM2NjL3Y1c0ZDVlJ4cVZ0cHRWVzJWbHhmNjFxdGlxMEw5R2w5TlhVQkZFcEZSVEloaEJBRENUZEFNQUVrQ1lzSzdxQjkra0Q3MnFmQldpdnFXN1ZhNjc0aXJlOXJheFgxYlpWV1pUSEwvTjQvNWc0R1NHRHV6TDF6NzUwNW4zODR6TXc1NTh2TS9YSzIzemtIRElHaml6aFBGM0ZlMERvTUlFRUx5R2QwUG9Pd2FBQXVjVjVhaDBXNVZQQjZrTHJ5R1dPSUFGQ2IvdlNqRXFnRyt1endLd2dkd0MxMFVDZlYvRHNZaGZtTE1VUVdVUnVMRWtZRDh4RU8ydjdHam9ad1BzeEhXTXhoSUV1bGxLNXM2c3huakNHeWhDN2dKSlJXNENTZ1p4UDBuSDRKaTVpVTg3amZHZzNHRUw2alRRd0U1Z0dqa1c3ZmQrcUdTTEtXSXNwa01tLzdJTlBnWUF6aEUycFRRaCtxc0tnQytnTHVUYkJyZWl1d21IWWFaRHFmZWlyWUFCaERlSTRxUWlNWEF3c1FEdlBBQkQybE55TFVzNG5ieFNhZXVXcERFbU1JRDlFYk9RRm9SVGh0KzR2K0dDTDU1N05BdWNSNEtpM0JobDB3aHZBQWJlQVFMR3hnQW1ENWFvTHU2Y1NmaXZBTGxFcUo4WTVMNllhZE1JYklBTFVwcG9ockVXWWo3TDM5amV3YUlwbmVqTEtRdldtVWNXeEw2UjlnMkFWamlEVFJ1WXpDb2dYNEJwQTlFM1JQOS96KzM0R1pVc2JLWHFRYmRvTXhoRXUwZ2FNUm1sSE85dkFCLzZPVE90a0RReVRTeWlNbzVSTGp0WjcrSFlhZXNZSVdFQlhVWmorZFN5dndQTXJaSGhXN0VXRWluM0VhVXprVm9SVDRteWNsQytkZzhiSXVaYVhld29HZWxKa0htQlppRDZoTklVV01SMmtBRHZDb1ZkaUtzSmo0cnVzSnVwd1NQcU1LcUVLYzlZdmV5a205emsxQUV3ZlNMS1cwWStnVlk0amRvUFdjZzBVTHdsSGJYOHpjRUdzUnltVGE3bGVjdFltQkZEa3IzT3l3eHAyT0laTHBEUWhUNVRvZTJGM2QrWXd4UkEvb0hBWkJ0N0JzYjFxRkZ5bWdYQ3JkeFNUcElzNEVXaENPM2FYTTlMV3NvNENZWE1NYmJyVGtBOFlRM1ZDYi9naVZ5RTVoMlprWjRpT0VPUnllZnRTcTJsZ01ZRFRLZk9BZ2ozUjFvTnhDSVhVeTBZU1pKekdHd0huZ0xPZUI2eWtzTzcwSEwvSEFpWGY3R25RWi9XbnZ3YkRwYXdTY01QUDlUSmc1R0VPZ3MxTUl5M2Ivc0swalRreHEvT21TYUN1RFVCcVE3VHZ0dk9qV3ZZaFFMdGZrZDVoNTNocENiUmRoMmFrL1ZCdFFLcVNHMzNncXRoZTBsWE9BRnVBb0Q5ZEUxbEpBbWZ3MFA4UE04ODRRYWxNQ3pyUm1xbUhaZTM2UU5pRTA4VG5OWW1kM1dsTnRDdG1YOFlnekxkeTdSamZwUkpoNUVRM3lrL3dLTTg4YlF5Z0lkVnlNeFFMVVpWaDI3Kzkzb3R5Sk1GTnErSWZYbXQyZ2k5aVBRbVlCMXlFVWJuOGpNM084aDFMRFJGYUpvSjRLRGlsNVlRaXQ1UVFrZzdEc25sOTdGSXR5cWVaVlQ4Vm1pQzVoS0VvejRoeHI0MDFYNmxtVW1GekQweDVLRFNVNWJRaXQ0UkNLc05FTXc3SjNmTzB0bEJxWnlScVA1WHFLTG1ZVVFndmlCQjlDcHVaUTRGNDZxSkpKZk9DcDJCQ1JrNFpRbTJJNlBRekxUdnlaQ0svZWh4dWxqTTg5bHV3TGFsUE0vczczQUh0NzFGcHNSbGhJWVc2R21lZWNJWFNHNTJIWmNZVDdFS2JKREQ3MFZtMTIwT1VjUWdjMjRyU1U0TVgzOGhaQ2pVd0lkMHZwbHB3eGhON0FVQXBvQnM3emNBcnlHWlNZMVBHTWgxSURRMjkydHJncXAzbjJIVms4U3B3cDhsTmU4VkJxWUVUZUVHcXpIeDNNUXJnT25ObVZ6SC9zZDRFWjFPYmU3SW9xd2kzT0lRaHdHT0RGOTlXSk9MTnQ0NE9kYmN1VXlCcENiUXJwWUR4NEdwYTlCVmpBbDJpU0NyWjZLRGQwNkhKSzZLUUtTU0hNUE5XMHhTYmlOTEYzZE1QTUkya0lyWEZXYUwwTHkxYmdGeFF3VFdaNnRFRW5JdWppRk1MTTNhWVRZZVlWTWk0N0svWmVFaWxENkV3R0VmYzhMUHM1TE1xbGpqOTRwelI2Nk0yYzZVeEc3QnBtN2piOXhXdnJLS1JNeHJMZU82WCtFZ2xEcU8xRWVTclZDSDIydjVHWklUWUM5V0FPKzBxaU5oWUhPNGN4ZHc4emgweldiUkpSdngzUkNETVB0U0hVeG1Jcm83R2NId2k4YUJYYWdWc3BZYVk1RHJKbmRCbjlzYWpFY3NMTUlSTkRKRW1FbWZjTmQ1aDVhQTJoTjNRTHkvWnVHblV0UWt4cy90ZERxVG1MM3NvZ3hPbWlabTZJWlBvRmxISVp4eE5lYXZXSzBCbENxeGlJMVcyUUIxNjBDaStobE1zY2Z1K3AyRHhCVnpEQ2lZOUtUR0prWm9oa2VpMXhKc3M0L3VxbDFrd0pqU0hVcG9RdHpqUWc5UFdvVlVoczMxelBVbGtUM21ZNkNxaE5JVjl4VGg4Uko4d2NNakVFSkthNWw5Q1h1VkxLWjk0cVRvL0FEYUVnVE9OaXhGa29jditsOXBST1hFdlZUcDAwaFg4Z0Z5WDBkdlpEbVFWTUFnb3lORVF5L1I1Q0RhT0RYd2dOMUJBNmxST3dlZ25MVHQ4UTZ4REtaWTY1dU5CUDlEYUdBWXVRYnJlblp2N2IvUW1MbUl6ZWZwSmgxZ25FRUZydWhHWHY3clJzOTEvcUJ1Sk1sWG5tektGc29yY3pDcHhnU205YWQwV2NNUE54MlE4eno2b2huTzdSTkpSYWhQNDlxbkQvcFg0TTFGUEV6V0xUNmExaVF5cm9YZXhGbkFyZ0JxQy9SK08vVDdDWVF4R0xzeGtHa3ZVV1FpczR6amtONzR3ZVZhUnVpRVJZZGhHVll2Ti9mbWcxdUVPWGN3aUZQb1daWDVHZE1QUEF4aEJheVNpRVZ1RHJyZzJoUElvd1JlYmxSc2h4cnFGM2N3SmR6dGpRdXpXa1IxSEtaYlMvVzNhREhWVGJGTE9aYXhIbUFGL2FRVkhQWDh4YldOUklRMjV0U3NsRlZCSHU5aUhNSE82a2lKbFM2aytZZWVEVHJnQmF4YUhBTEdBQzBtTlRtOWkyV0V5ajJMbTNiVEdYMGVXVVVKemlhZWFwcHplaDFITW95K1FzYjhlTm9UQkVFcTNpUDV4dTFLbU9zc1RHOWk2cVpFSHVibXpQQi9RMkJsTE1QTlRETUhONEU0c0t1WlFIdmRJWktrT0FNeE0xblRFSUYyTmh5enhlQ0ZxVHdUdjBMcjdyaEprZnMvM0Z6TTF4UDNFcTVZck1ZOVJDWndoRDdxTTJGb2M3WWVhU1FaajVqdWtPTEc2aGcxb1p6U2ZwYWpPR01BU0dycVkvVzd1ZFpnNlp0eGJDK3lnMkZuZWtFMlp1REdFSUhMMlBRWFNsRVdhK3V6UThqMFc1bFBLa0d5M0dFSWJRb1Bkd1BzSWloS0ZBcG9hQXhLWDJFK1RIM0ptcUJ0ZTNrR281RTdTY0g3ck5aekRzQ2JtU0I5bkswY0JFNEo5ZUZBa2M2aWFEKzJ0NWxTTlI3dGNZNi9SNng4a0dnMGZJUkRwa0RDdm93eEJnTVdSM0gwczZoaWh5VXVkUXdDc2FvMVd2Nnhhb1p6QjRnSlR5c1l3bVJwemh3Ryt6VmE5N1ExamJEUUZRQkpSUnhIcU5NZFl6VlFhRGc0eGx2WXptZklRZmdQOTc0VE5wSWJvekVMaEh5M2pZZEtNTWZpQ1gwMFlSdzRCeVNIK2RZVSs0TndROUdpS0JNSUlDWHRZcE5Lck5YdW5MTWhoMlJVcHBseXRvUlJnRy9weWw1YTBoRWhTalRPZGZ2SzR4UnFZanltRFlIWElaRzhHZnZkZCtHQ0xKTnhEYWRBcHRXc25YMDZqSFlNZzZYbzBoZHNkSXVuaGRLN0JOTjhvUWRqS2RaVXFWdmlpeitJVFh0SklMMDhodk1HU0ZiTFFRM1RtQ09HdTFnall0NS9BTXlqRVlmTUhQTWNUdUdFa0JiMmlsNlVZWndrVlFob0JrTitwVFh0VnBYT0JSbVFaRFJnUnBpQ1JIb2p5Z1UyblRhdE9OTWdSTHRzY1F2U09NcEpQWHRRcGJKM2U3Rk1WZ3lDTHVEU0UrR1NKQkNjb3MrdkNhVHV0MlpxakJrQ1hDMEdYYUZlRkk0RUd0b2sybk9tZjZHQXhaSUp5RytJTEViSlRwUmhteVJOZ05BVkFDektLRVYzVTYzODl5M1lZOEl3cUdTRElJK0sxVzA2YlQrVnBBR2d3NVRwUU1rVUFaaWJCZXE3SFZwamhRTFlhY0kzcUdTSkRvUm0zalZhM21lMEdMTWVRT1VUVkVrc0VJRCtrTnRPa012aHEwR0VQMGlib2hrb3drem5xdE1kMG9RMmJraWlFQStnR3phT2NWcmVIY29NVVlvb2tyUTJqaTRLZENuN1I0eFJEZ2R6ckRkS01NN25IWFFsd2Rlak4wWnlTd1htZWFibFJlRTNkM0dJSGJMbE5ZdTB1OTBROWxGbDI4ckRNWkViUVlRMWJaakZMUE5oYTV5ZVRPRVB0R3poQUpsS0hBNzNRbUs3V0dnNEtXWS9BVkJWYlJ3U0M1REZ2R3VidUN6WjBoT2lOcWlBUUNqS0dBRFRxVG1OcVI2djRaVWtINUV4YW55YVdNbFRHOG4wNFI3Z3pSRldsREpOa0hvWVV1bnROYVRndGFqTUVUM2tXNGtrczVXVXA1T3BPQzNCbkNyODFCd1hBTXdoTmFaN3BSa1VYWkF0UlR3R0M1bEpVaW1SOWU1czRROFp3eUJDUzdVWVc4cVhYRTlCSUtnaFprU0JGaEZVVU1sc3V3cFpTdDNoWHJBcjJlb1JTdzNsV3AwVXEvaERCSmJKN0NrSmU0YXlHS2NxNkYySmxqZ1NmVlpxWGFIQmkwR0VQMnllY3hSTStvMDQyQ0RWcFBURmViYmxRK1lRelJPd05RV2xqUHN6cWJVNElXWThnT3ViNVM3UVhIb2Z4QjYxbXA4L2h5MEdJTS9tSmFpTlJJZEtNNjJhQnpURGNxbDNGbkNNbjdJTGw5VVZyWXdKOTBMaWNITGNiZ1BhYkxsQTdLOFNoUDZSelRqY28xVEpjcGZSTGRxQzdUamNvbFRBdVJPZnNpdFBBWG50SFpuQlMwR0VObXVETkVlcmNINVFmS0NWZzhwWE5acVRZSEJDM0hrQjZtaGZBV0MyRU1SV3pRQm1KcXA3Vm5QVlJvTXdPQzFwQUp1cHFEM1h6ZTdRKzI1ejBFcnFLamNwYjlnQmFLZVZJYk9TWm9NZW1nU3poVWw3S2NZdVlFclNVZGRCVkQ5R2M4UUFkVDNlUnpPNmgyTisxcXpIRUtTbG5RSXR5Z05zVzZoQmdXYnlKY1RYb25zd1NHM3NlK2VoK05XTHdDN20rbWNyZHJUQ2xLK3lIZk1kOW00REdnalM2ZW9JakgwQnpka3hDblBXZ0pxYUxMR0lYU0N0RzdWMXh0TEk1Z05MQUEwZy9NZEx1Tk1wTXh4TnNvRHdOcjJZZUh4UDdpUWRGS0tvRDdNaWc3dkFnZFFVdllFN3FNWTRuVGduSm0wRnJTUWUvakxPSzBJQnlkYVZudURHRlI1R0pQVWhlSi9RVnJFZHJrSnA3djdZT3lrSjlwSlpkRER0NWhMZUZ0SVhRcCt3TjF4SmtFMFZ0SDBaVjhEWXU1S0dPODZwNjc3ekx0bnMySTB4VXE1TmV5Z0E5Y0tMbWVMcjVMNGdTKzNFSEQxMExvY29wbzV6cmkxQ1BzRTdRZXQraEsraUZNQTZhajdPWGxXTldMTHRQYkNBOGp1M2FGM0NDTi9GV3JhRUNabDNnaG5WSkNTTWdNb1lzWndlZTBBTjhLV290YlZCSHVaUXhLRTdpYlRrMlZkQXp4UlZjb1Rwc3M3cjByNUpvU0ZyQ1pVaEk3MTNJREt4eUcwS1VNcG90RktCZEc4VDhidllzVFdVVXIrTHMzeFowaHVyaWJJdVpMTXgvN0lVWnNPcldTNnhDZXBQdDBYMi83b0tOQm9HTUliV1lBUWpWZFRJSG9SU3ZyUFh3RnVCRVlUUlorZlZlR2tLVzg2WmVRN1hVczVHbWR4bkxnV3Ivcnlnb0JkWm5VeG1KQTV0T1FRYUdyNmN0V3lvQVp3SmV5Vlc4NEYxMjJVWTN3M2g0L0Y0WFdJb0JaSnIySnM5aUhGNEI3aUtJWjdtSVVXM2dEcFpFc21nRkNhZ2had2lkQWhidE0vbWpKbUN5MkVIb1RYOVZtVm1MeEtFUXZaRVR2NUhpOWk4Y1JmZzBjSG9TRzBKNXZLazJzMW1tTVJoamxQck1QZ3RJbEM0YlFCZlREWWhyQ2RHQXZ2K3Z6R3IySC9lbWlEZ2wrUFNTMGhnREE0bnFVczREK2FaY1J2RGw4NnpLcElpemlZb1NGRUwycmluVTVSUlJ6SFYzaFdROEpaWmNwaVRUeERrSzlkd1Y2VmxMcStEVHRxZ3M1a1VVOENhd21pbWE0a3hFVThSSktDNFREREpCbFE2aE5vYnA5TFB2U0Fyem91WmpzbUdNVHlxdGVGcWhOSEtvTFdZN3dSK0JVTDh2T0Jub0hRL1IySG5EaTJyNFp0SjZkOGQwUU9waytPb1VSV2tFcm4vQXVVN2pLVFg2eDZVUzVtc1NDb0QvNFlRN2xBeXpPa2hyZThLekloVnhFQVgrRzZJVmxBK2p0akFkZVE5eUhaV2NMWDc1VW5VSmZuY0lvbmNKS0N2a1FlQmdvQXc1Q2FOWXFCcm9wVCtiekhIQ3pIMXAzcmN5VFV0Nm1nTzlJTlM5N1V0b1hIRU8wWTcyR0VmSnhxMmZpdEp3QktPY2lqRUw1RWRDL2w0ZHJIN3E0QlZ6T0hpa3pFSDRFN3N5VUVlbVo0elVLK2I1TVo2UEhhZ3haSUtNV1FpZXh2OFlZcXpIYVVENGtNY0FidzU1bmhVWnFCVDkyVTVmTTUxTWs5THZQSHFlQTA0MFpvb3RyUStoa0Jtb1pWMnVNTmdwNW44UnE2RWpjeHNrSVM3WFMzU3FxTkhJL3lxOWMxZU1WZTI0dDFsTENlVkxOdjdPZ3h1QVQ3aTV1TCtjaUxONUJXRTdDQkpuc29EdUFPTTJ1Y3ltVElPQ0hibWR6S1BmeVpTNlNDdTl1c2pFRWc5c3J0ZnJoNVp5TWNMbE81WWV1c3N4bkk4b3N6elJraXNVU3VyaFNKb1lqek51UUdjRlAzUWszYXpYN3VzclRseVhBSC8wUmxESUsxTXNNeXNRbUhyQVdnMGNFYndnNGhFNmEzR1FRbXpnV0V5R3cvNVc3VUs2Uld1eUE2amY0UkJnTUFUQkJwL0U5Tnhsa0hxOEFTM3pTc3p2YUVTNlRPbFlFVUxmQlo4SmlDQ0hPY3JWZEJ2SDFvUlo0Mng5SlBiSVpZWlRNWkUwVzZ6UmtrYkFZQW9URDJjeGNWMWxzdGpnaHc5bmdZeXhHU0MyL3kxSjloZ0FJanlFU1ROYnBuTzRtZzh6alFlQVhQdWxKOGc3Q3FUSXo4SUc4d1dmQ1pnaUxPTGVyN1hLVFN5ZVRnWC81STRuMUZIQzYxTExCcC9JTklTSnNoZ0FZd21acTNXUndEa1NiNllPVzV5amlUSm5KMzlNdFFCczR5a3RCQm44Sm95RUFxclNhRTF6bEtPWVc0Q2tQTlR6R1hwd3ROZndqM1FMMFJxWWpWSHFveWVBellUVkVJWEh1MEt0VER3MFJtemdGWElNM2F4Ty9BaTZRNlh5YWJnSGF3R3puMUFoRGhBaXJJUUNPWVFCVmJqTElIRjVGMG9pUDJwRzdnVXZFWmxzNm1WVVJiYUFGY2RmdE00U0RNQnNDb0ZhbnV6eURkQXMyOEQ5cDFTWTBpYzA0c2VsTUo3dXVwb0I1M0E3RTBxcmZFRGhoTjBRZjRBNjlKUFdqU2FTWnJVNUViT29JaWxJcE50VnVCU2JSMVJUd1orNEN4cWRiaGlGNHdtNElVRTdpNjB4MmswWG04UkRDejFQOGVCY3dRV1p6azN0eENkU21tRCt6Qm1GTXVtVVl3a0g0RFFFZ05HZzFSN3JLRTZjYzJMU0hUMzFPWXJ4d1o3clMxS2FFUXRxQUg2VmJoaUU4Uk1NUVVJSnltNXNqYkdRZUg4SnV1MEQvd21LRXpPYitkRVhwQXZvNVpuQVZtR2dJTDFFeEJNQjNxZWFucm5JMGNCdndaQS92Skk2SXNYdDhMeVhVWmdEYldBZWNuVzRaaHZBUkpVT0Fza0JuOE5WVVB5NkpUVHdUU0hTTmtpU09pTEY1S1cwWk5nZFN3SDhESjZkYmhpR2NSTXNRc0RkZDNPb21nOHhsQTdEUStldnJ4UG1PMkx5VnJnQzFPWmdDSGlHQ3Ayc2I5a3pVREFGd2dWWnpoYXNjaGN4RnVac0NUcGVHRk82ZDZBV2R5MkZZUEFFbVBpbFhDZlVwYXJ1aFZXdFk1d3ljOTRpejZqd3Vrd3JWWmpCeDFrSHFYVFpEOUloaUN3R3dQOHJpYkZXbWN4aUd4V01ZTStROFVUVUVLS1Y2QXhmNVhvM044Y1I1SERqVTc3b013Uk5kUXlSWXBqYjcrVlc0enVaRWhJZUJBL3lxd3hBdW9tNklnOW1XZnNqRjd0RFpuSW55Q1Bobk9FUDRpTG9oUUxoS3F6blB5eUsxbnZPSjh5Qlp2Z0hURUR6Uk53U0FzRnlydkhsNDFlWUhLUGNEZmIwb3p4QXRjc01ROERVS3VUSFRRclNPeTRCZmtnZzdOK1FodVdJSWdHdDFCbWVrbTFsdHJrYTRsK2l1elJnOElKY01ZYUhjcGxQY2QzVzBqa25BcmVUVzkyRklnMXg3QUFaVDR1NEFZcTFqT3NKU05BUTNXaHNDSjljTUFjcFVyZVhFbEQ0Nmkzb3dKMlBrTUcrZy9OSk5CbmVHNk9KeEpQUm5teFlRNXc2MWU3L2lTMEYwRnEwb2Rka1Vac2dhbTRCcUNqbE9ScnM3ZnRUVkFGS1c4VGZnK3pxRkVjUnBBWmNuWW1TUDRiUnpBMUMvOHh0cVk5SEpDcFNmQktETDRDOXg0RDZLbUNxbDZSMHdsMWFYU1pwWngxYU9ReWtuNlB2ZWVrT28wVnFHZDM5Skw2R0FUdTVFakJseUR1RlJMSTZUS3hpYnJoa2dnekdFcktCREZ0TktKMGNBaTBtY1hoRW1pb2x6ajlxSlZsQnRpaG5LYW9Rcmd4Wm04SlMzRUVybENzNlJ5M2tsMDhJeUhsVExNajZTVm1JSXc0R0hNaTNQWTQ2amczS2RUQjg2V1FQK1I4Y2Fzc1ptb0o1T2hzc1YzbDFnNDlraWxMU3dIamhQWTF5Q01CODQzS3V5TTBLWXpUNWNCSndTdEJTREp5aHdMNTFVeVRnKzhMcHd6NmRkcFpVMURHQUlRam53aWRmbHAwRmZqQmx5aFdkUlRwT3hqUFhERE9EVE9vVFl0RXN6clJReERGZ0I1dHBhUTBhOGgzSWxZemhKcnVScFB5dnlkV0ZPNXJOUm1wa0luQVQ4d2MrNkREbkpWcUNKdmd5VnExZ3BndnBkWVZZQzJhU1o1eFMrUXdVWEF3dUF3N0pScnlIU3JFV1pMRmZ4MTJ4V21yWFFEUUdWUmF6aE03NkpVRS9DL1FiRHpyeUFjb1pjeFNnWmwxMHpRQUN4VExLQ0xiSVFtd0lHQTZ2QS8yYlFFQWsrQXNycHg3ZGxIRThFSlNLdzRENlp6N3R5RTJPQlV4QnozVzBlMHdFc3BwMGpaQnl0VWhyc0FtL2cwYTZ5a0dmb3gybk9DbkpLQjQ4WmNvWjF3TEV5bnBoTURFY0lVT0NHZ01TRmliS0FsU2hIT09PTHovZVl5UkJsTm1CeG9Zem5YQm5QRzBHTDZVNG9ESkZFRnJKWjVtTlR3RkdJZDh2eGh0RHdNY3BrL3M1Uk1vN2ZCQzJtSjBLNWYxZ2FlUXNvMVdyT2RzTE1oKzhwanlIOHlJVE1ENEx3bTFDMUVEc2pqVHhLQ2NjalRJVDBRM29OaGxRSnRTRUF4S1pUR2xtQk1BU2xDV2dQV3BNaGR3bTlJWkpJSTV0a1B0WEVPUnJDMmY4MFJKL0lHQ0tKekdlRE5ISWhjQzZFYTRiQ0VIMGlaNGdrMHNnNlB1SllKOHc4RkhQWWh1Z1RXVU9BczQxMUhxM0FFYzRGS21IYnhtcUlHSkUyUkJLNWtZL2tSbUxFT1JGNFBHZzlodWlTRTRaSUlvMjhLUE00RS9nQjhIYlFlZ3pSSTZjTWtVUWFhR01MMzBLcEJqNE5XbzhoT3VTa0lRQ2ttYTB5anlZS0dZcWFiYXlHMU1oWlF5UVJtNDNTd0VTVWt4Q2VDbHBQeFBndjR0c3Z2YzhMY3Q0UVNhU0I1NWpONlFpbHdEdEI2d2s1YndMbnl5VCtVeWJuMTFnc2J3d0J6amJXMmF5aGdHRWt6bjNkRnJTbWtQRXhTam4vWkxoTTRyZEJpd21DdkRKRUVySFpJck94c1JnRXJDSUxwem1FbkU1Z0JVVU1rY20waWsxbjBJS0NJaThOa1VSczNwWFpqS1dMczRDWGd0WVRDTW9qeERsT0pqTlJKdkxQb09VRVRWNGJJb25NNGZjSUorVFpOdGEvSUpSS0dTTWt4bXRCaXdrTHhoQU9ZaE1YbTVYQWtaRFQyMWcvUTZrSGhzdGtzeXR4WjR3aGRrSnNQaE1ibXdLR1EwNDlNSEZnRmNxUkVzT1dzcHcxZkVhRWNndHBHSkJhL2dLVWFqM25BTTFFZXh2ck15Z3hLZWVab0lXRUhkTkM3QUdaeFNNb3gwTWt0N0crQzF4SmpGT01HVkxER0NJRnhLWlQ2bGhCbktFa2Jrc0srN1RrRnFDZU9JT2xQRHVIQk9jS3hoQXVFSnVQcFk0WUJReEhlVEJvUFQyZ3dCcTYrS1pNd1pZS2MzNnVXOHdZSWcya2hqZUJDM1FPSTBpMEdNTUNsZ1RDODBCTXBwaHJCekxCdEJBWklMV3M0OHNjRS9CdHJPOGpUT1RmZk51WUlYT01JVEpFSnRJaHRiUmljUVNTMVcyczdjQmlpaGdxVTFnaHRnbHY5d0pqQ0krUUdqNlNHbUxBdDhIMzQ5elhZakZNcGhLVHNsRGM0NWN6bURHRXg4Z01YZ0RPMExtTXdxTFY0K0xmUkRoYnB2S1l4K1VhRFA2ak5pWGF5QmxCNnpDa3p2OERRZDdRck1iTFIxQUFBQUFBU1VWT1JLNUNZSUk9Ij4KCjxzdHlsZT4KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by91WUVDTUtvSGNPOXgxd2RtYnlISW0zLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vc1RkYUE2ajBQc2I5MjBWanYtbXJ6SC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL19WWUZ4LXM4MjRrWHFfVWwyQkhxWUgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3RuajRTQjZETmJkYVFuc004Q0ZxQlgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL29NTWdmWk1RdGhPcnlRbzluMjJkY3V2dkRpbjFwSzhhS3RlTHBlWjVjMEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL0tzX2NWeGlDaXdVV1ZzRldGQTNCam4tX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vTko0dnhsZ1d3V2JFc3YxOGRBaHFubi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9pc1otd2JDWE5LQWJuam82X1R3SFRvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by83N0ZYRmpSYkd6TjRhQ3JTRmhsaDNvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9qU04yQ0dWRGJjVnlDbmZKZmpTZGZJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1VYNmk0SnhRRG0zZlZUYzFDUHV3cW9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vZC02SVlwbE9Gb2NDYWNLenh3WFNPSkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by85N3VhaHhpcVpSb25jQmFDRUkzYVc0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vUHdaYy1ZYklMNDE0d0I5ckIxSUFQWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ19acmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0N3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M0Z3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09wWFVxVG8wVWdRUWhHal9TRmRMV0JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9XeHJYSmEwQzNLZHRDN2xNYWZHNGRSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vY0RLaFJhWG5RVE9WYmFveHdkT3I5eGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vMWhaZjAyUE9BTmgzMmsyVmtnRW9VQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlBjeW5TTDBxSHFfNmRYN2xLVkJ5WFloamJTcHZjNDdlZTZ4Ul84MEhudy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlN6dWxmS1NLMExMampmZWF4Y1JFaGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9LMjNjeFdWVHJJRkQ2REpzRVZpMDdSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vRmw0eTBRZE94eXlUSEVHTVhYOGtjWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8wZUM2ZmwwNmx1WEVZV3BCU0p2WENJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8tTDE0SmswNm02cFVIQi01bVhRUW5ZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSGdvMTNrLXRmU3BuMHFpMVNGZFVmWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1BydTMzcWpTaHBaU21HM3o2Vll3bllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL05ZRFdCZEQ0Z0lxMjZHNVhZYkhzRklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0MTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0X1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0d3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL29IaTMwa3dRV3ZwQ1dxQWh6SGNDU0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9aTHFLZWVsWWJBVEc2MEVwWkJTRHk0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vbXg5VWNrNnVCNjNWSUtGWW5FTVhyWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vckd2SGRKbnIybDc1cWIwWU5EOU55SVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vUnhaSmRuemVvM1I1elNleGdlOFVVWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb09lRndaTmxyVGVmekxZbWxWVjFVSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9tYm1ocHJNSDY5Wmk2ZUVQQllWRmhZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwVjRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBmWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFF0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwWWdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGFFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGREaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZd3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnoxeC1NMUkxdzVPTWlxblZGOHhCTGhVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGendYYUFYdXA1bVpsZks2eFJMcmhzY28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d242V3F4by14d3hpbERYUFU4Y2hWVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejFUN2FKTEs2bktwbjM2SU13VGNNTWMud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnpfNzlfWnVVeENpZ00yRGVzcFRuRmF3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6NGdkOU9FUFVDTjNBZFlXMGU4dGF0NC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6OGJJUVNZWm5XTGFXQzlRTkNwVEtfVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Cjwvc3R5bGU+CgoKCjxzdHlsZT4ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC13cmFwcGVye3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcnttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlciwubWF0LWdyaWQtdGlsZS1mb290ZXJ7Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnR7bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2Vye2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWwsLm1hdC1zdGVwcGVyLWhvcml6b250YWx7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcntmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9ye2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXIsLm1hdC10b29sYmFyIGgxLC5tYXQtdG9vbGJhciBoMiwubWF0LXRvb2xiYXIgaDMsLm1hdC10b29sYmFyIGg0LC5tYXQtdG9vbGJhciBoNSwubWF0LXRvb2xiYXIgaDZ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWR7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50e3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yaXBwbGUtZWxlbWVudHtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW57Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyLC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5le3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3B7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2Nre3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmd7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveHtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHsvKiEqL31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHsvKiEqL30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbntjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnkgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2FybiAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94e2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye2NvbG9yOiNmZmZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCwubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejB7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJ7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M3tib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1e2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2e2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N3tib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejh7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5e2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTB7Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTF7Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJ7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTN7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTR7Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTV7Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3e2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOHtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTl7Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjF7Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMntib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIze2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjR7Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcntkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdle3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuIC5tYXQtYmFkZ2UtY29udGVudHtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1jb250ZW50e3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudCwubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGV7dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZle3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTZweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW0gLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmUgLm1hdC1iYWRnZS1jb250ZW50e3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjJweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTExcHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93IC5tYXQtYmFkZ2UtY29udGVudHtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNiZGJkYmQ7Y29sb3I6Izc1NzU3NX0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9ue2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4sLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0ubWF0LWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtaWNvbi1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLC5tYXQtcmFpc2VkLWJ1dHRvbiwubWF0LWZhYiwubWF0LW1pbmktZmFie2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtZmFiLm1hdC1wcmltYXJ5LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1mYWIubWF0LWFjY2VudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnR7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1mYWIubWF0LXByaW1hcnksLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmR7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmt7ZmlsbDojZmZmfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiNmZmYgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIC5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwe2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVke29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZSB0aGVhZCwubWF0LXRhYmxlIHRib2R5LC5tYXQtdGFibGUgdGZvb3QsbWF0LWhlYWRlci1yb3csbWF0LXJvdyxtYXQtZm9vdGVyLXJvdyxbbWF0LWhlYWRlci1yb3ddLFttYXQtcm93XSxbbWF0LWZvb3Rlci1yb3ddLC5tYXQtdGFibGUtc3RpY2t5e2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93LHRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbHtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd3tmaWxsOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b257Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50LC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwwKX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9ye2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXd7Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMyl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2h7Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZle2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcntib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbHtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93e2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxle2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcjo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbntjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcntoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVke2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnR7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtaGludHtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnl7Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnQ6ZGlzYWJsZWQsLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb246aG92ZXIsLm1hdC1saXN0LW9wdGlvbjpmb2N1cywubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXMsLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpob3ZlciwubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmhvdmVyLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVte2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXSwubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1tZW51LXN1Ym1lbnUtaWNvbiwubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1pY29uLW5vLWNvbG9ye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbSAubWF0LWljb24tbm8tY29sb3IsLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW06aG92ZXI6bm90KFtkaXNhYmxlZF0pLC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSwubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZDpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1wYWdpbmF0b3J7YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yLC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2Vye2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50LC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudHtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3QsLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCwubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1maXJzdCwubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1sYXN0e2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVye21pbi1oZWlnaHQ6NTZweH0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6I2ZkZGViZn0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojZmRkZWJmfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmZlNWJmfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZmZTViZn0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6I2ZjZDBjZH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojZmNkMGNkfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xlLC5tYXQtc3Bpbm5lciBjaXJjbGV7c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnQgY2lyY2xlLC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm4gY2lyY2xlLC5tYXQtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGV7c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeTphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQ6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm46YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWV7Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWQgLm1hdC1zZWxlY3QtdmFsdWV7Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVse2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2h7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRle2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0gLm1hdC1kcmF3ZXItc2lkZXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5ke2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlOm5vdCgubWF0LWNoZWNrZWQpIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYiwubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYiwubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC13YXJuIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn0ubWF0LXdhcm4gLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcjpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkOmhvdmVyIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfS5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3N7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWQsLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkLC5tYXQtc3RlcC1oZWFkZXI6aG92ZXI6bm90KFthcmlhLWRpc2FibGVkXSksLm1hdC1zdGVwLWhlYWRlcjpob3ZlclthcmlhLWRpc2FibGVkPWZhbHNlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXN0ZXAtaGVhZGVyOmhvdmVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17Y3Vyc29yOmRlZmF1bHR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwsLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtb3B0aW9uYWx7Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29ue2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb257Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9ye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9ye2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWwsLm1hdC1zdGVwcGVyLXZlcnRpY2Fse2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSwubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmV7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVye2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyLC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJ7cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlciwubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93e2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhciwubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1uYXYtYmFyLC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV0gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNjcsMzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMjQsMTc4LC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNjcsMzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIyNCwxNzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJ7YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5e2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50e2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2FybntiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSwubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtdmFsdWUsLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LWFycm93LC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXIgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3N7bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGV7bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjojZmY5ODAwfWJvZHl7b3ZlcmZsb3c6aGlkZGVufS5jZGstb3ZlcmxheS1jb250YWluZXJ7Y29udGFpbjpzdHJpY3R9YTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbil7Y29sb3I6IzE5NzZkMn1hOm5vdCgubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uKTp2aXNpdGVke2NvbG9yOiM3YjFmYTJ9Ym9keS5kYXJrLW1vZGV7YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlIGE6bm90KC5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24pe2NvbG9yOiM0MmE1ZjV9Ym9keS5kYXJrLW1vZGUgYTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbik6dmlzaXRlZHtjb2xvcjojYmE2OGM4fWJvZHkuZGFyay1tb2RlIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA0KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCk7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3h7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye2NvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLGJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7YmFja2dyb3VuZDojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtYXBwLWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUubWF0LWFwcC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXowe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoye2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejN7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16Nntib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejd7Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo4e2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16OXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEwe2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejExe2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEye2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEze2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE0e2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE1e2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE2e2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoxN3tib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTh7Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE5e2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyMHtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejIxe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MjJ7Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyM3tib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejI0e2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJ7ZGlzcGxheTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZWY2YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgYm9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiM2ZTZlNmU7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9ue2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeXtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudHtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudHtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZDojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXdhcm57Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mYWI6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mYWI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JveC1zaGFkb3c6bm9uZX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgW2Rpcj1ydGxdIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6IzIxMjEyMTtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpO2JhY2tncm91bmQtY29sb3I6IzAwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJke2JhY2tncm91bmQ6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FyZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0Om5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhcmQtc3VidGl0bGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1mcmFtZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja21hcmt7ZmlsbDojMzAzMDMwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiMzMDMwMzAgIWltcG9ydGFudH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWRpc2FibGVkOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIC5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiM2ODY4Njh9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcHtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAubWF0LWNoaXAtcmVtb3ZlOmhvdmVye29wYWNpdHk6LjU0fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZHtvcGFjaXR5Oi40fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7YmFja2dyb3VuZDojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGV7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUgdGhlYWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWJsZSB0Ym9keSxib2R5LmRhcmstbW9kZSAubWF0LXRhYmxlIHRmb290LGJvZHkuZGFyay1tb2RlIG1hdC1oZWFkZXItcm93LGJvZHkuZGFyay1tb2RlIG1hdC1yb3csYm9keS5kYXJrLW1vZGUgbWF0LWZvb3Rlci1yb3csYm9keS5kYXJrLW1vZGUgW21hdC1oZWFkZXItcm93XSxib2R5LmRhcmstbW9kZSBbbWF0LXJvd10sYm9keS5kYXJrLW1vZGUgW21hdC1mb290ZXItcm93XSxib2R5LmRhcmstbW9kZSAubWF0LXRhYmxlLXN0aWNreXtiYWNrZ3JvdW5kOmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgbWF0LXJvdyxib2R5LmRhcmstbW9kZSBtYXQtaGVhZGVyLXJvdyxib2R5LmRhcmstbW9kZSBtYXQtZm9vdGVyLXJvdyxib2R5LmRhcmstbW9kZSB0aC5tYXQtaGVhZGVyLWNlbGwsYm9keS5kYXJrLW1vZGUgdGQubWF0LWNlbGwsYm9keS5kYXJrLW1vZGUgdGQubWF0LWZvb3Rlci1jZWxse2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtaGVhZGVyLWNlbGx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jZWxsLGJvZHkuZGFyay1tb2RlIC5tYXQtZm9vdGVyLWNlbGx7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWFycm93e2ZpbGw6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9ye2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjI0KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyMzksMTA4LDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC40KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksYm9keS5kYXJrLW1vZGUgLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSxib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXtib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojNDI0MjQyfX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaGludHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWhpbnR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjE1KX1ib2R5LmRhcmstbW9kZSAubWF0LWljb24ubWF0LXByaW1hcnl7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWljb24ubWF0LWFjY2VudHtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50OmRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQgb3B0aW9ue2NvbG9yOnJnYmEoMCwwLDAsLjg3KX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQgb3B0aW9uOmRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjM4KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6IzAwMH1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtb3B0aW9uOmhvdmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1vcHRpb246Zm9jdXMsYm9keS5kYXJrLW1vZGUgLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpob3Zlcixib2R5LmRhcmstbW9kZSAubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3VzLGJvZHkuZGFyay1tb2RlIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA0KX1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbixib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpob3Zlcixib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0sYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtbWVudS1zdWJtZW51LWljb24sYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtaWNvbi1uby1jb2xvcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbSAubWF0LWljb24tbm8tY29sb3IsYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQ6bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9ye2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvcixib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50e2JvcmRlci10b3A6MnB4IHNvbGlkICNmZmY7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCAjZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWZpcnN0LGJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLXRvcDoycHggc29saWQgI2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWZpcnN0LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojNjAzZjI0fWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojNjAzZjI0fWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojNjEzNTMyfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiM2MTM1MzJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1zcGlubmVyIGNpcmNsZXtzdHJva2U6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1zcGlubmVyLm1hdC1hY2NlbnQgY2lyY2xle3N0cm9rZTojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1zcGlubmVyLm1hdC13YXJuIGNpcmNsZXtzdHJva2U6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeTphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQ6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm46YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWlubmVyLWNpcmNsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtdmFsdWV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLWNvbnRhaW5lcntiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRyYXdlcntiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2h7YmFja2dyb3VuZC1jb2xvcjojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1ib2R5LmRhcmstbW9kZSBbZGlyPXJ0bF0gLm1hdC1kcmF3ZXItc2lkZXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpO2JvcmRlci1yaWdodDpub25lfWJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5ke2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTg5LDE4OSwxODksLjYpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuNTQpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuNTQpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlOm5vdCgubWF0LWNoZWNrZWQpIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtd2FybiAubWF0LXNsaWRlci10cmFjay1maWxsLGJvZHkuZGFyay1tb2RlIC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXI6aG92ZXIgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1maWxsLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItZGlzYWJsZWQ6aG92ZXIgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyk7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD1mYWxzZV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpkZWZhdWx0fUBtZWRpYShob3Zlcjogbm9uZSl7Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLW9wdGlvbmFse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9ye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9ye2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLWhvcml6b250YWwsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLXZlcnRpY2Fse2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmV7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zb3J0LWhlYWRlci1hcnJvd3tjb2xvcjojYzZjNmM2fWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC10YWItbmF2LWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC10YWItaGVhZGVye2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dIC5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1de2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTEsMTQwLDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MSwxNDAsMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTEsMTQwLDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluayxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFye2JhY2tncm91bmQ6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIubWF0LWFjY2VudHtiYWNrZ3JvdW5kOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIubWF0LXdhcm57YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUsYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUsYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LXZhbHVlLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LXNlbGVjdC1hcnJvdyxib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sdGlwe2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Ym9keS5kYXJrLW1vZGUgLm1hdC10cmVle2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LXRyZWUtbm9kZSxib2R5LmRhcmstbW9kZSAubWF0LW5lc3RlZC10cmVlLW5vZGV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNuYWNrLWJhci1jb250YWluZXJ7Y29sb3I6cmdiYSgwLDAsMCwuODcpO2JhY2tncm91bmQ6I2ZhZmFmYTtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2NvbG9yOmluaGVyaXR9Cjwvc3R5bGU+Cgo8c3R5bGU+CiAgaHRtbCwKICBib2R5IHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgY29sb3I6IHZhcigtLXByaW1hcnktdGV4dC1jb2xvcik7CgogICAgLyogTGVnYWN5IG1lY2hhbmlzbSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBzdWJwaXhlbCBhbnRpLWFsaWFzaW5nIG9uIG1hY09TLgogICAgICoKICAgICAqIEluIHRoZSBwYXN0IFsxXSwgbWFjT1Mgc3VicGl4ZWwgQUEgY2F1c2VkIGV4Y2Vzc2l2ZSBib2xkaW5nIGZvciBsaWdodC1vbi1kYXJrIHRleHQ7IHRoaXMgcnVsZQogICAgICogYXZvaWRzIHRoYXQgYnkgcmVxdWVzdGluZyBub24tc3VicGl4ZWwgQUEgYWx3YXlzLCByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBiZWhhdmlvciwgd2hpY2ggaXMKICAgICAqIHRvIHVzZSBzdWJwaXhlbCBBQSB3aGVuIGF2YWlsYWJsZS4gVGhlIG9yaWdpbmFsIGlzc3VlIHdhcyAiZml4ZWQiIGJ5IHJlbW92aW5nIHN1YnBpeGVsIEFBIGluCiAgICAgKiBtYWNPUyAxNCAoTW9qYXZlKSwgYnV0IGZvciBsZWdhY3kgcmVhc29ucyB0aGV5IHByZXNlcnZlZCB0aGUgYm9sZGluZyBlZmZlY3QgYXMgYW4gb3B0aW9uLgogICAgICogQ2hyb21lIHRoZW4gaW4gdHVybiB1cGRhdGVkIGl0cyBmb250IHJlbmRlcmluZyB0byBhcHBseSB0aGF0IGJvbGRpbmcgZWZmZWN0IFsyXSwgd2hpY2ggbWVhbnMKICAgICAqIHRoYXQgZXZlbiB0aG91Z2ggdGhlIGAtd2Via2l0LWZvbnQtc21vb3RoaW5nYCBkb2NzIFszXSBzdWdnZXN0IHRoYXQgc2V0dGluZyBgYW50aWFsaWFzZWRgCiAgICAgKiB3b3VsZCBoYXZlIG5vIGVmZmVjdCBmb3IgcmVjZW50IHZlcnNpb25zIG9mIG1hY09TLCBpdCBzdGlsbCBpcyBuZWVkZWQgdG8gYXZvaWQgdGhlIGJvbGRpbmcuCiAgICAgKgogICAgICogWzFdOiBodHRwOi8vd3d3LmxpZ2h0ZXJyYS5jb20vYXJ0aWNsZXMvbWFjb3N4dGV4dGFhYnVnLwogICAgICogWzJdOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD04NTg4NjEKICAgICAqIFszXTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZvbnQtc21vb3RoCiAgICAgKgogICAgICovCgogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgfQogIG5vc2NyaXB0IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgcGFkZGluZzogMTBweDsKICB9Cjwvc3R5bGU+Cgo8L2hlYWQ+PGJvZHk+PG5vc2NyaXB0PgogICAgPGgxPlRlbnNvckJvYXJkIHJlcXVpcmVzIEphdmFTY3JpcHQ8L2gxPgogICAgPHA+UGxlYXNlIGVuYWJsZSBKYXZhU2NyaXB0IGFuZCByZWxvYWQgdGhpcyBwYWdlLjwvcD4KICA8L25vc2NyaXB0Pjx0Yi13ZWJhcHA+PC90Yi13ZWJhcHA+PHNjcmlwdCBzcmM9ImluZGV4LmpzP19maWxlX2hhc2g9YjJlY2FiODciPjwvc2NyaXB0PjwvYm9keT48L2h0bWw+", "headers": [ [ "content-type", "text/html; charset=utf-8" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2": { "data": "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", "headers": [ [ "content-type", "font/woff2" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/icon_bundle.svg": { "data": "PD94bWwgdmVyc2lvbj0iMS4wIiA/Pjxzdmc+PGRlZnM+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iYXJyb3dfZG93bndhcmRfMjRweCI+PHBhdGggZmlsbD0iIzAxMDEwMSIgZD0iTTIwIDEybC0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJhcnJvd191cHdhcmRfMjRweCI+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJicmlnaHRuZXNzXzZfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThWNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJidWdfcmVwb3J0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNhbmNlbF8yNHB4Ij48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iY2hldnJvbl9sZWZ0XzI0cHgiPjxwYXRoIGQ9Ik0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNoZXZyb25fcmlnaHRfMjRweCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNsZWFyXzI0cHgiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iY2xvc2VfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iY29udGVudF9jb3B5XzI0cHgiPjxwYXRoIGQ9Ik0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZGFya19tb2RlXzI0cHgiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik0xMiwzYy00Ljk3LDAtOSw0LjAzLTksOXM0LjAzLDksOSw5czktNC4wMyw5LTljMC0wLjQ2LTAuMDQtMC45Mi0wLjEtMS4zNmMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNiBjLTIuOTgsMC01LjQtMi40Mi01LjQtNS40YzAtMS44MSwwLjg5LTMuNDIsMi4yNi00LjRDMTIuOTIsMy4wNCwxMi40NiwzLDEyLDNMMTIsM3oiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJkb25lXzI0cHgiPjxwYXRoIGQ9Ik05IDE2LjJMNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZHJhZ19pbmRpY2F0b3JfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTExIDE4YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTItOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgNGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZWRpdF8yNHB4Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJlcnJvcl8yNHB4Ij48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJleHBhbmRfbGVzc18yNHB4Ij48cGF0aCBkPSJNMTIgOGwtNiA2IDEuNDEgMS40MUwxMiAxMC44M2w0LjU5IDQuNThMMTggMTR6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZXhwYW5kX21vcmVfMjRweCI+PHBhdGggZD0iTTE2LjU5IDguNTlMMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZmlsdGVyX2FsdF8yNHB4Ij48Zz48cGF0aCBkPSJNMCwwaDI0IE0yNCwyNEgwIiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQuMjUsNS42MUM2LjI3LDguMiwxMCwxMywxMCwxM3Y2YzAsMC41NSwwLjQ1LDEsMSwxaDJjMC41NSwwLDEtMC40NSwxLTF2LTZjMCwwLDMuNzItNC44LDUuNzQtNy4zOSBDMjAuMjUsNC45NSwxOS43OCw0LDE4Ljk1LDRINS4wNEM0LjIxLDQsMy43NCw0Ljk1LDQuMjUsNS42MXoiLz48cGF0aCBkPSJNMCwwaDI0djI0SDBWMHoiIGZpbGw9Im5vbmUiLz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZmxhZ18yNHB4Ij48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJmdWxsc2NyZWVuXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJmdWxsc2NyZWVuX2V4aXRfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik01IDE2aDN2M2gydi01SDV2MnptMy04SDV2Mmg1VjVIOHYzem02IDExaDJ2LTNoM3YtMmgtNXY1em0yLTExVjVoLTJ2NWg1VjhoLTN6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZ2V0X2FwcF8yNHB4Ij48cGF0aCBkPSJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imdyb3VwX3dvcmtfMjRweCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTggMTcuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6TTkuNSA4YzAtMS4zOCAxLjEyLTIuNSAyLjUtMi41czIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNVM5LjUgOS4zOCA5LjUgOHptNi41IDkuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaGVscF9vdXRsaW5lXzI0cHgiPjxwYXRoIGQ9Ik0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImltYWdlX3NlYXJjaF8yNHB4Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4IDEzdjdINFY2aDUuMDJjLjA1LS43MS4yMi0xLjM4LjQ4LTJINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNWwtMi0yem0tMS41IDVoLTExbDIuNzUtMy41MyAxLjk2IDIuMzYgMi43NS0zLjU0em0yLjgtOS4xMWMuNDQtLjcuNy0xLjUxLjctMi4zOUMyMCA0LjAxIDE3Ljk5IDIgMTUuNSAyUzExIDQuMDEgMTEgNi41czIuMDEgNC41IDQuNDkgNC41Yy44OCAwIDEuNy0uMjYgMi4zOS0uN0wyMSAxMy40MiAyMi40MiAxMiAxOS4zIDguODl6TTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41UzE0LjEyIDQgMTUuNSA0IDE4IDUuMTIgMTggNi41IDE2Ljg4IDkgMTUuNSA5eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImluZm9fb3V0bGluZV8yNHB4Ij48cGF0aCBkPSJNMTEgMTdoMnYtNmgtMnY2em0xLTE1QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpNMTEgOWgyVjdoLTJ2MnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ia2VlcF8yNHB4Ij48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiLz48L2c+PGc+PHBhdGggZD0iTTE2LDlWNGwxLDBjMC41NSwwLDEtMC40NSwxLTF2MGMwLTAuNTUtMC40NS0xLTEtMUg3QzYuNDUsMiw2LDIuNDUsNiwzdjAgYzAsMC41NSwwLjQ1LDEsMSwxbDEsMHY1YzAsMS42Ni0xLjM0LDMtMywzaDB2Mmg1Ljk3djdsMSwxbDEtMXYtN0gxOXYtMmgwQzE3LjM0LDEyLDE2LDEwLjY2LDE2LDl6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImtlZXBfb3V0bGluZV8yNHB4Ij48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiLz48L2c+PGc+PHBhdGggZD0iTTE0LDR2NWMwLDEuMTIsMC4zNywyLjE2LDEsM0g5YzAuNjUtMC44NiwxLTEuOSwxLTNWNEgxNCBNMTcsMkg3QzYuNDUsMiw2LDIuNDUsNiwzYzAsMC41NSwwLjQ1LDEsMSwxYzAsMCwwLDAsMCwwbDEsMHY1IGMwLDEuNjYtMS4zNCwzLTMsM3YyaDUuOTd2N2wxLDFsMS0xdi03SDE5di0yYzAsMCwwLDAsMCwwYy0xLjY2LDAtMy0xLjM0LTMtM1Y0bDEsMGMwLDAsMCwwLDAsMGMwLjU1LDAsMS0wLjQ1LDEtMSBDMTgsMi40NSwxNy41NSwyLDE3LDJMMTcsMnoiLz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImxpZ2h0X21vZGVfMjRweCI+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PHBhdGggZD0iTTEyLDdjLTIuNzYsMC01LDIuMjQtNSw1czIuMjQsNSw1LDVzNS0yLjI0LDUtNVMxNC43Niw3LDEyLDdMMTIsN3ogTTIsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDAgYy0wLjU1LDAtMSwwLjQ1LTEsMVMxLjQ1LDEzLDIsMTN6IE0yMCwxM2wyLDBjMC41NSwwLDEtMC40NSwxLTFzLTAuNDUtMS0xLTFsLTIsMGMtMC41NSwwLTEsMC40NS0xLDFTMTkuNDUsMTMsMjAsMTN6IE0xMSwydjIgYzAsMC41NSwwLjQ1LDEsMSwxczEtMC40NSwxLTFWMmMwLTAuNTUtMC40NS0xLTEtMVMxMSwxLjQ1LDExLDJ6IE0xMSwyMHYyYzAsMC41NSwwLjQ1LDEsMSwxczEtMC40NSwxLTF2LTJjMC0wLjU1LTAuNDUtMS0xLTEgQzExLjQ1LDE5LDExLDE5LjQ1LDExLDIweiBNNS45OSw0LjU4Yy0wLjM5LTAuMzktMS4wMy0wLjM5LTEuNDEsMGMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDFsMS4wNiwxLjA2IGMwLjM5LDAuMzksMS4wMywwLjM5LDEuNDEsMHMwLjM5LTEuMDMsMC0xLjQxTDUuOTksNC41OHogTTE4LjM2LDE2Ljk1Yy0wLjM5LTAuMzktMS4wMy0wLjM5LTEuNDEsMGMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDEgbDEuMDYsMS4wNmMwLjM5LDAuMzksMS4wMywwLjM5LDEuNDEsMGMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MUwxOC4zNiwxNi45NXogTTE5LjQyLDUuOTljMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDEgYy0wLjM5LTAuMzktMS4wMy0wLjM5LTEuNDEsMGwtMS4wNiwxLjA2Yy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MXMxLjAzLDAuMzksMS40MSwwTDE5LjQyLDUuOTl6IE03LjA1LDE4LjM2IGMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDFzMS4wMywwLjM5LDEuNDEsMEw3LjA1LDE4LjM2eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJsaW5lX3dlaWdodF8yNHB4Ij48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiIHg9IjAiLz48L2c+PGc+PGc+PGc+PHBhdGggZD0iTTMsMTdoMTh2LTJIM1YxN3ogTTMsMjBoMTh2LTFIM1YyMHogTTMsMTNoMTh2LTNIM1YxM3ogTTMsNHY0aDE4VjRIM3oiLz48L2c+PC9nPjwvZz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJtb3JlX3ZlcnRfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJub3RpZmljYXRpb25zX25vbmVfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9InBhbGV0dGVfMjRweCI+PHBhdGggZD0iTTEyIDNjLTQuOTcgMC05IDQuMDMtOSA5czQuMDMgOSA5IDljLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJyZWZyZXNoXzI0cHgiPjxwYXRoIGQ9Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJzZWFyY2hfMjRweCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0ic2V0dGluZ3NfMjRweCI+PHBhdGggZD0iTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OHMtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmMtLjEyLS4yMi0uMzktLjMtLjYxLS4yMmwtMi40OSAxYy0uNTItLjQtMS4wOC0uNzMtMS42OS0uOThsLS4zOC0yLjY1QzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYy0uMjMtLjA5LS40OSAwLS42MS4yMmwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOThzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmMuMTIuMjIuMzkuMy42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4yMy4wOS40OSAwIC42MS0uMjJsMi0zLjQ2Yy4xMi0uMjIuMDctLjQ5LS4xMi0uNjRsLTIuMTEtMS42NXpNMTIgMTUuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ic2V0dGluZ3NfYmFja3VwX3Jlc3RvcmVfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTljLTQuOTcgMC05IDQuMDMtOSA5SDBsNCA0IDQtNEg1YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS41MSAwLTIuOTEtLjQ5LTQuMDYtMS4zbC0xLjQyIDEuNDRDOC4wNCAyMC4zIDkuOTQgMjEgMTIgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ic2V0dGluZ3Nfb3ZlcnNjYW5fMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMi4wMSA1LjVMMTAgOGg0bC0xLjk5LTIuNXpNMTggMTB2NGwyLjUtMS45OUwxOCAxMHpNNiAxMGwtMi41IDIuMDFMNiAxNHYtNHptOCA2aC00bDIuMDEgMi41TDE0IDE2em03LTEzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0idmlzaWJpbGl0eV9vZmZfMjRweCI+PHBhdGggZD0iTTEyIDdjMi43NiAwIDUgMi4yNCA1IDUgMCAuNjUtLjEzIDEuMjYtLjM2IDEuODNsMi45MiAyLjkyYzEuNTEtMS4yNiAyLjctMi44OSAzLjQzLTQuNzUtMS43My00LjM5LTYtNy41LTExLTcuNS0xLjQgMC0yLjc0LjI1LTMuOTguN2wyLjE2IDIuMTZDMTAuNzQgNy4xMyAxMS4zNSA3IDEyIDd6TTIgNC4yN2wyLjI4IDIuMjguNDYuNDZDMy4wOCA4LjMgMS43OCAxMC4wMiAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjUgMS41NSAwIDMuMDMtLjMgNC4zOC0uODRsLjQyLjQyTDE5LjczIDIyIDIxIDIwLjczIDMuMjcgMyAyIDQuMjd6TTcuNTMgOS44bDEuNTUgMS41NWMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjY2IDEuMzQgMyAzIDMgLjIyIDAgLjQ0LS4wMy42NS0uMDhsMS41NSAxLjU1Yy0uNjcuMzMtMS40MS41My0yLjIuNTMtMi43NiAwLTUtMi4yNC01LTUgMC0uNzkuMi0xLjUzLjUzLTIuMnptNC4zMS0uNzhsMy4xNSAzLjE1LjAyLS4xNmMwLTEuNjYtMS4zNC0zLTMtM2wtLjE3LjAxeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9Indhcm5pbmdfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xIDIxaDIyTDEyIDIgMSAyMXptMTItM2gtMnYtMmgydjJ6bTAtNGgtMnYtNGgydjR6Ii8+PC9zdmc+PC9kZWZzPjwvc3ZnPgo=", "ok": true, "headers": [ [ "content-type", "image/svg+xml; charset=utf-8" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2": { "data": "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", "ok": true, "headers": [ [ "content-type", "font/woff2" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugins_listing": { "data": "eyJzY2FsYXJzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJzY2FsYXJzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1zY2FsYXItZGFzaGJvYXJkIn19LCAiY3VzdG9tX3NjYWxhcnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJDdXN0b20gU2NhbGFycyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQifX0sICJpbWFnZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogdHJ1ZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImltYWdlcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtaW1hZ2UtZGFzaGJvYXJkIn19LCAiYXVkaW8iOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJhdWRpbyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtYXVkaW8tZGFzaGJvYXJkIn19LCAiZGVidWdnZXItdjIiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJEZWJ1Z2dlciBWMiIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJOR19DT01QT05FTlQifX0sICJncmFwaHMiOiB7ImRpc2FibGVfcmVsb2FkIjogdHJ1ZSwgImVuYWJsZWQiOiB0cnVlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiZ3JhcGhzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1ncmFwaC1kYXNoYm9hcmQifX0sICJkaXN0cmlidXRpb25zIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiZGlzdHJpYnV0aW9ucyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtZGlzdHJpYnV0aW9uLWRhc2hib2FyZCJ9fSwgImhpc3RvZ3JhbXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJoaXN0b2dyYW1zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1oaXN0b2dyYW0tZGFzaGJvYXJkIn19LCAidGV4dCI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogInRleHQiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLXRleHQtZGFzaGJvYXJkIn19LCAicHJfY3VydmVzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiUFIgQ3VydmVzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1wci1jdXJ2ZS1kYXNoYm9hcmQifX0sICJwcm9maWxlX3JlZGlyZWN0IjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiUHJvZmlsZSIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtcHJvZmlsZS1yZWRpcmVjdC1kYXNoYm9hcmQifX0sICJocGFyYW1zIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiaHBhcmFtcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtaHBhcmFtcy1kYXNoYm9hcmQifX0sICJtZXNoIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAibWVzaCIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAibWVzaC1kYXNoYm9hcmQifX0sICJ0aW1lc2VyaWVzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJUaW1lIFNlcmllcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJOR19DT01QT05FTlQifX0sICJwcm9qZWN0b3IiOiB7ImRpc2FibGVfcmVsb2FkIjogdHJ1ZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogInByb2plY3RvciIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJJRlJBTUUiLCAibW9kdWxlX3BhdGgiOiAiL2RhdGEvcGx1Z2luL3Byb2plY3Rvci9pbmRleC5qcyJ9fSwgIndoYXRpZiI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIldoYXQtSWYgVG9vbCIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJJRlJBTUUiLCAibW9kdWxlX3BhdGgiOiAiL2RhdGEvcGx1Z2luL3doYXRpZi9pbmRleC5qcyJ9fX0=", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/runs": { "data": "WyJ0cmFpbi95b2xvdjVzX3Jlc3VsdHMiLCAidHJhaW4veW9sb3Y1c19yZXN1bHRzMiJd", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/environment": { "data": "eyJ2ZXJzaW9uIjogIjIuOS4xIiwgImRhdGFfbG9jYXRpb24iOiAicnVucyIsICJ3aW5kb3dfdGl0bGUiOiAiIiwgImV4cGVyaW1lbnRfbmFtZSI6ICIiLCAiZXhwZXJpbWVudF9kZXNjcmlwdGlvbiI6ICIiLCAiY3JlYXRpb25fdGltZSI6IDAuMCwgImRlYnVnIjogeyJkYXRhX3Byb3ZpZGVyIjogIkdycGNEYXRhUHJvdmlkZXIoYWRkcj0nbG9jYWxob3N0OjM4OTA1JykiLCAiZmxhZ3MiOiB7ImxvZ2RpciI6ICJydW5zIiwgImxvZ2Rpcl9zcGVjIjogIiIsICJob3N0IjogbnVsbCwgImJpbmRfYWxsIjogZmFsc2UsICJwb3J0IjogbnVsbCwgInJldXNlX3BvcnQiOiBmYWxzZSwgImxvYWRfZmFzdCI6ICJhdXRvIiwgImV4dHJhX2RhdGFfc2VydmVyX2ZsYWdzIjogIiIsICJncnBjX2NyZWRzX3R5cGUiOiAibG9jYWwiLCAiZ3JwY19kYXRhX3Byb3ZpZGVyIjogIiIsICJwdXJnZV9vcnBoYW5lZF9kYXRhIjogdHJ1ZSwgImRiIjogIiIsICJkYl9pbXBvcnQiOiBmYWxzZSwgImluc3BlY3QiOiBmYWxzZSwgInZlcnNpb25fdGIiOiBmYWxzZSwgInRhZyI6ICIiLCAiZXZlbnRfZmlsZSI6ICIiLCAicGF0aF9wcmVmaXgiOiAiIiwgIndpbmRvd190aXRsZSI6ICIiLCAibWF4X3JlbG9hZF90aHJlYWRzIjogMSwgInJlbG9hZF9pbnRlcnZhbCI6IDUuMCwgInJlbG9hZF90YXNrIjogImF1dG8iLCAicmVsb2FkX211bHRpZmlsZSI6IG51bGwsICJyZWxvYWRfbXVsdGlmaWxlX2luYWN0aXZlX3NlY3MiOiA4NjQwMCwgImdlbmVyaWNfZGF0YSI6ICJhdXRvIiwgInNhbXBsZXNfcGVyX3BsdWdpbiI6IHt9LCAiZGV0ZWN0X2ZpbGVfcmVwbGFjZW1lbnQiOiBudWxsLCAiY3VzdG9tX3ByZWRpY3RfZm4iOiAiIiwgIndpdF9kYXRhX2RpciI6ICIiLCAiX190ZW5zb3Jib2FyZF9zdWJjb21tYW5kIjogInNlcnZlIn19fQ==", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2": { "data": "d09GMgABAAAAACoMAA4AAAAAUsQAACm2AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmXocg0oGYACGTBEMCu5A1nULg14AATYCJAOHNgQgBYJ+ByAbIkSzoqzwsjiKkj2aj6JicZf9lwnmGDrzUL5ooaWgICnvqxcvLU1UUm052dq0PPEbkDL7t7A4c3dKponrEu8IjX2Sy0PoX9DLJNk9AHsAO6uC0MkqVZH48wM/t95fEVEDtBGpESMixmDAqNgYMLpGpmSIhFWEFSiIoIiFRIli3p2nHuksZyTDeXbXshPuAKlMlW53Zbg7HZue7/8N06wSlnxFE+rSAhYVkmR44D5FCo4yXQlcOX/hZsHaQuZYMcQ8fkufGldr+uACwqKNzkSGPbR7G1BVUZ3KOl0lGRYOQuDT2zTbfVpvBF5fojuuchvk6YE73cxV6dJS//W/1qu/X2vQGiTZDshHKx3JCpgmIwjIGl8FXKUCLIGkY12AuaMOqUzRXNWnLQmqS1HWqdIFnu/vG79/2raDcUAPMPAMtn38TkB/ouZjIAEmGGgThZmsWZkYwdIwtsYh6+N7ZqYra0NPaN1poDFKzhjB6Ep9/G4ZTnWidqQaNBB6+Y1RoPACsDkUTvsZQJjzgUiWDJEtGyJXLgQLC6JIEUSJMohOPVAu+QiBQAHTADNAgAKRDAGmosIAZt317VxBcvfkGAZI7h0THA6SB/jHRYIkDOBDaNj+e8ZEAjtwbBhGLXC2MFFLe6nWKwp1sS6WQ4VY39XdhkP/X4wChWLH4FC8KPFQDqMIiLjGjWJFabOIvvgn/jQ7N9ClKlWDRqlUq8XUxVp68cWGQ7/D+N36//YNN54bY0H9DUgUJtSPLQYOF25C9jvokMOOOE6FOg0EmrQR6dJnwJA1G3YcOXNB4obCkxdvvmrUqtfgksuuuOqa68ZNmDTlhpvue+ChRx6bteiVJa8t+2DFqjXrdnyE0M5bMIiE6TpAn6hZohBCyQ4q+IddgvVd259GlFOFNmHm+YZlbrMiWMMWJJCru+Uaj9zimRu8ySnLbXUJGnkTtMtp5Aqu4hquY1x71htzeI55LOCF9rJti3iFJbzGB6xgFWtY1zbasoktbGs7bfiYRnjlVP+hPoJCwSt7WIClnW8Rc4Vu7tDP12bBMR5M8483PCX8SrDD5C1uOcErZ0QkQ1pGyk5TrDylKDth8BBmTIBbLvMnBPCBG9uCt+WBq3CUc5cOYxpP8BQzexSGw49L58kUZJkbrABr2IJMeXnZ7NTgV8uoR4P2sg2LeIUlvK6OqM1GXCxzhxXBGrYgowwvsYhXWMLrdWPYEEahxosAu8OGlMtrXNyHhK8kWMUa1veMxZ95BFGHRjTRCLGDHexgBzsEexZimY2sYA1bh5RM5GSge4rzwqVs5y8Zi3iFJbzWPsS0glWsYV0g5P5oijmKkp9O3nw7kCfXGOc3/jcHxSZ3fc4WRHYgzYszl8Xt4s0nAnMbv+OWL1BmKuw9jcgRaflYdnZg5ZSinHQinwkpJtdyISq/Exs8UN0JBvTnxrwgTdysfiY754dWTK8Zted21jPU8/6ErTbDLJtDyepp3/I79jzdpwqjW9NkvFDxcrFn8ct7uyI/Nw20ef7NquSYG/mY2X3qX1lrwCxM5fcKo/9ELfnuZQg72j1T/muh/JezBlNxFtf0x58eYNG3oste6z3I1ae4pvIFyU8FzkQfejHes5fRm2qnDgIE807LfcaTOpsEUuLOw/wOZH8rylWi04VRGvkSdfjzXLcqGTZ0Ft8w4B8+d+iZ6+vzC6o0sWYSH/HEcH5jFetUsY0j935Npssg79F/4F6kHQmLa1Ms9Va9TLCHGVYlSVrgX3FCh77jG/+4Jd/AaEir86/WBqxJDUpC15D5baQ+bKJ1eAepuz3VUvN2vN56JxY2PSZ7AvMVJjZbZ/Wx571F+emsX0bLt4pUr261+xXWRibmZHFmW+n8uPjvZqdsHgYZaJrhAxFfgsQCHC4IflcVRfA32n6HYSjRwEGbwf3enCUJ1lCaXS7DmStZbirwzBVR+dinOD+oRqNDmr4ru+S145atI/8AunlBIbSLGGJIJak5i3JACQcVcEjEYbGU5XRcLiqKUhehoTBteejIiagkXcXpyU9fbgbyMRfHQjaWR5G4utgTpnSBQYJorrJxU4inHKgK8paDj7yKT2w/DkNMHU5SPxJDTCOU0qSUSznisnEoE/8JmHQT1n2PIabN4DRLObdnXsB5mYtY9Bq75SrGB+vQ4jU5EEAghAngKCphl/AJZwLlKIuirBh1UQiiaB15BevihAMRhOCDC/6lVKU1hC2fEJFAgwk0MkS4y81DLM9ndsFgDx65EKVUlLIqoko1UQkRQBgBhEPYRZxEAe6EEg8UHHAltutriGyg55hs2Ia9sP/pma3UcvNIgV4p7wPbWtuZ49ms4+I6jtZ3MR7rbeZo5+bGbm7taB/butgGVl5gXjGwzjQ6od7j9jgoKgIO/FOeB1A6gBbqD5oWvarVQfERMeBEXNJTXfov3YSsODZL10PI5bawcHipoWJqco0AdmG0Fahzlbqh2bDXCVXlnj+0tNzjd9JFoCEQNgJSIKK4OEEIjqMBwZ4QEBpHObSmwc1GiBZw3z09nPr16TVg0ElDThk+b/Qg+WyPShErzpjTzjjrnPNQEMJkgNr64xos6Fd0dVDm386rLwuJ+xGaHfI4sBiwjhfOBls4WgIeLDgTDv4A7DVuCsBDrgW0NfsYPDw0GIp54gptJc57XPaBKXbA6vAwxIFpZegI/5mdcMcTaz75i6gWUtyJxViaCOMl8bJ4BfwBPBFvhj8Cf9eCM/39C7yAR2e1EZPuemrdZ1JcdhbCi+OlD61TG8kfuUI0b+DMKZD/KL48Ms+I/9/7//zvc+8ypk6ZOG5Aj0fefn1zjikFLImVsdORlv+39+LZLrn3l/f7z5Fr2hNPzZiVJ98zc56bt+AFloK/wve6UJENm7Zs21HsI25A+fEeyGIo1rRLVExwDJpyHe7F9bgLuyt34z7cgwdxMB7C43hAeQLH40m8iAeVl3A/XsYbeApv4i2cgLfxPl7AB/gQJ+EjfI5XlS9wCr7Ej3hb+Qmn4mf8gU/wJ/7Cafgb/+MrZcAZSkrfq2UFjzO9ZWtpG4+z1HjC4xw13vE4V433PM7zTmY+8CwAzgeTOQ48F4ALwWQeaT6PS9TJgh6Xq5NFPa7wTtaQ1vS4Up2s63G1OjnC4xp1cpfHteqCM9mu+6jLZofKv/gMfuhW3pPiAU17HJjlQVDfAHEIQIeI+YlHYKEhpagtUCaan7BRoLDQThEoqCOLAJWzHoFQz5cnRaEgTFRYKkwRY+WMAUjjWkaXIJEwAoNOLUHcfDGMY644+bMo8P1hJLwSUN+asKZZ45uRjo1YMxyWKxyRtHwY9rOgmds0CKCF/jl3i3nj6npwDKJXOkiXSZbceUDhogx++TB31vdN6ZQnaxvAQgPbYXpfy/I6Gby5BrrAfAo57tf9GfB1tVXWWnuVU4GpY37ByDQpciH9rs9Fkp9P443DfcLcV8x96yyufmrJu5efcMIUsxvuc0q7GNZjpZHyRPs5yF+Nft3+yuA/6LcH2dFJjHAgZXAZJRIrN6goNldD9qlBbULVGSsaoh5oEK2LNnEsNozxNUMUkOcgY6GEwOWgXGdoIAytWzkWqXKsImVogtwlQ6QN8eIy43KaUgRlyCHLph1r2AI9X9Vp3ZzH4o1zI21kn+12int3NZc1cRD+pVws+BcrisPZ0GTWgzeWRs/8GTt0dqHtPLTxTW/D3C0Nb4WbLdHYNhtN3WpYVp50ki+pRNOGEQ3TGe1XMQgbZqEtbIgFv2GLob7lvxkOXHOrQVt7Ed5GWJeVDTwqrq9hZ66xSVL3jemdwJRJq1wbKtXMS5RsB3cd4wyxAPKkX7WsRqr4UBTVodqIhaMvIjaz6kPjla6hfx8DZaTPbfjoYxyuhqsJPQaOci4eSa7i9dxYeCq5d1aMAgpd2LR+JNLCmbR5fPmVlgbeuLah8bWrk7zjSbyg6uCwN0H2uIb1gvYbHvHHMPI78fT26Z1plmlY57237cR6slAinFkaTXsr8XAewr3w+momYZWzR5msF3pxUIdK5nei6fZM+2y4iu7NclQfbX/3oD9FtSFZjeVptS5YHdzJpO576objZkvUXNJktpdTQegVeg9Gzh5ZHQS/LZxulgBukUUnpQKlD+SqF0CN6zCTvb0ge2b2lOwzluW4B5tBiBIDlsULM1QhKCo1EytKj8N4somh9ur6hh11ciy3r59QPI4gw49GNFn7I8lyUorpYmXFzjZFpH0JWquDrEFBcpBGa8utTlysjL+82uit732iQ1pvhaCa2QM5MSLq0N1X7EzVecMmY510zPNyN+SKrEi8nktuL5OjLasS13VMy/usRnKieE17mxmz4I7q9uTejhz0H6VBrCCLktoO4Do0xSxgGguASIz1eDdRMHGDBqJH4xrWmfZU8FnFQKiplhMeNcfLAY7wkEeRkvNbHPtl1GhoqSMIr8zRc08vrfOrukNlnsFPH3XFAWJRHPJeKKpxULH9tiq5HwhfRkoogqAEVPNr/U1Gk4S0wo9pUSYUzhMD/Z2cKSKASmK6Q7XiprYN2yaK7MTN1lDiefZgXJDF/FFdp5SsqD0xumuYK3gTM/jD5bS40vIY0TEdlLp2etK4TCObfadRkLW26S3ICt+EabwQUb0NORjj9tOjnxs9HEXZAQfv8IxenpliLP26MSoQ+VEge76lti+2vQJFXjSImMBJx3JeyRNABXcr0jrwoOmkSCj8ow+n2qIquDBOM1bkfmRHQZxO66uEndYiMWz7Wg36SDwGTvrpVJ8M7WmLNRxIrMPxKynGGUzRXKIms/m16TyC3OwSC+PaSZzFqBVyXQfkAhKw2ODi0Q8bbOFZraQiMZYMOa193XxYXDO9SYRoLxcBkkPjzs36WsU8toTC1kPSKODcxrQN0RLjyLRGYOq4RmBPnDyqCNoi6dBIdQVIUEBK9wQVShR91SyrUlkWFbtzj5w13eK2As0rWE45U5zMAT982YojPiwMPrBKstKUGlMj0jMV1NsIworbxO3YX6FkvXjDXT7YnZ3giY5LPcMPCo4JoQPHhjEHWyI9+H5kBI7Jr2I9+t5IFpk+4lFZEfygX9jxrUCfWGTElirbElcxYKGs4GLzWiohxwyNi6K+CBbpYRU7/8WdHX+A4hbFFXkIf6XuFwodK7Yp3qX/QYZY7RAXjpn9tdnMGVqD4r83BTShxhFk7Dv29m2sUZsWbUA4pKLGbZGPPGjI6EQSrONDR103OGFBrMZiGP51aOrYVpprLdmIMnevqUA2g4lab3f2wt2O2dnVeztEQE1HIkZidCiJdDJyMNBV7+HYdDObwZ7Io2AGeZJ3vZI0s6ySFSg6wXlk+wuh4bCgL9DfL3KcmAxvo1uxtLlzSB2goNAWmSKvqtfOGRGdWHg5LkLOzkKGmFn7ZBPmULKaYlwt8nV4/YmGVWnhwAKUXjXS6hV2Zg4G3yG1GZvVT1HEQKvDK9Aw2sW1jP4ifj2x2E0Xs0YplhtsVEaRClGNl8uQ0ajYNQNZTdgRXNBE6H5tp+sv+fGrxNvsO8tz2cRj/q1d2Wwww4mV7VyCv4jm9lg6286I6NMyFpQcNGkvq4V2YYfaLZ7JhmUUSmamR0s+GYRiflL54FlmOlIgQaViIWKS5x0zaZlBvRgnzfLxqi/GMpaVV4zXW5ZliWVFPcc4jOTBaAJPjASuIvbLZ1nM4fZNaLjU2PHUB7gvgIBQ2o7YEXhLu61A6t80krAiF4C/rBsYkkz3cjJLN5ImOOVew3WXBhKDoQQaQKkbtzRiE4uO+8PY360dkcjskaGdYYSpzm3aQL6oE0RWUkwm4xF5qQuD65N63/eKXzz4u6tQLNff6J3+Pzu8epPi2nvxmg/2jtrxzyjFPQ2OngprCtnURD3WVrXyKG7A35twsKlr/wOzogN5v/vQdGLK8sTFvtKHU4iq1MYIm1X7BZJuSBdjr0b+u8bfnfoTinmaT5k/1TdA1T/TxdPvpXOrEzPMoCxgcGHhjMB8x8sx8bvfbsonBSSQXDyoLnbuXru+J1xpdK1Cr5PPnl0WvNt+55HIux+P5ROZGXRKMBWw3xpZw31lFcM9ZVYFw91l5SM9pRNYPTMrprG1gY2esTVRy9TKWC73eMFoT2n5SFeFFWuop6JyuLdoAq1laa+ZUmCnZ2rFNLUyRL6V2irFxZTagkVBMHOoPszIzbqRdHJ+7kL306mqkdG8KKf/FImxpT+kc0Zf/m9lQ+6gzbxAL29iwqg6srYOFNtQ90gGIhRv6x5tp9arZBlkbU00sHEEAUKEdM3Fg3OQ6ria3PrRoFhfq7kqvPumstzxzts1UVqNBXpbGqk16Ffgp72c3fnVsFhXq7GM3n0dJU842nW3Krre5kz8TMhrRi2BCOmGDoV4TjNNiHpLKFA5hXjBkDLD0cY8r3hWoi0cjgYep2FpjUKNdCy9QAguM+odFI1MkpGkd9/gLkRGvIeO/9Q31SG9zJxKtrCkks3NvFytLL1c4X7agjzr2AKYxngq/2u4t/tLB7WPW/V/3aVf2qh9eInzAT20EL8WVF/AGb9T4XTvXuQkyMt7UujbngtyYL12Z/67H43aaunvH+kVwGRFKuRnvFpPq3n/z8JtRtTbglobagyI11CaImkRXpQwfyopytNaPibl3FJw/jp26UZQcn+AUsrRpNGkG5Kbm4vCq9flXVJCPUPjGJ6Ln0+Abte+3s1eXXldMvf5/V8n9h1QLzVB4aHsIemDyp6ponaIZtzTbWSjLOHN65SGvPf0nCl0qiy7JyOIEkArzU5LzmWGfr8MWoSJXembqN3bYqOx8afH3/K9KU9ZfZdZviZpyBX28Qzd4c4SbL6wiLYaolRFd4V6x1THJ8ZWgZkIryKBV1XR7M7cFgaM847Rad1UFZpa6pnkG2zv7nC8n0pOPRumSlUJ66Zf+bn0fO6fRX51c9+IaG9qBNPPOzzaz4ceIfOK7BHi4uwRSHH3oPVQaKASY8GMbJhaZ39fkbb7Nq+08m1FKg8MhzNo7bY8FrD3ecTfOW4RZFmdWBPV6eMe1ZaUyGgECk3nnjhhJmJHDywORgFbGTsZrRXgGsPsgahmdMQ2vQyRYuA5Xmrae65DN0h7sMWG4ok4KiDjXxZm5zYfXSXb1vt4OdnZWnH660mrmXq6lXu6uXO4Wv4GQYSLOOffo9JNtzRrObPAks7q9u9C9wV6cuBuUVxFkPGWmjGHgyZJj5o6jx3mpxITCFPHbg6HcW7w+evm6JLO7zOW3X/i7rQKjT127kIblxyX0Ifzhbs/f/Xmz1YYZsdy5poW2qm6k6WdDr9gHI7NuAm62Uq8gUcN5VfHRBVExgzlZRkX8JAD2LE/HAIPboVHdPnvj5LKGkyd5Vr4iXAkFyH0hCCPe9MowWdvltGnA2Pc0mbBsWqVf0ubB8SNkqw9ZmsMBU9e+F+dR+yrEmcpK6O4vnYeeR+5U/6yqaQwgyOP81M9Oal8atDgoenDPt3jw+PAEXf9UdXY5VXkuf2biyunwWA50YjVs/cUsGPTX7u8jC5nkIxISmbyua+FSS+jE/6Sk99B+rnr0j1NOsizwMVqA+GBK2jFH5Lb+4TSCmOTTrSvwrL36vDmwKCl5S+B1/rgogJKTGsme7aSg7WDEkztY6D0fHgEn0tS5t7Glq0jWwvK4R7B/m7B8RFgbdnc3/H4HtTmnot5E41hyZseDobhz+l7g0xV8L1jYkF4MTN8cbmFY+UyI+K1+tPieXoyw+XjoeCCB6V9uePj7A9uX83k5FFwWb640GAqOXrxvNRwswnMWC00WUiOMHoyPYz547Da/bGxoXsLli3fdn9vaujcgWUYBoR16412zz+J+Utl8/t+oHFfuBPTosLC03MjESFwuXHxUa5SnOfe9fEBwj9WOlyTLcKfRFo/YjIosdXZuqw7OUSiC68JHs3+JTo1Jjg0Lj55D7ScM8iJnlpBnio/8z8k5F36J7S55SuT9ThXKSg9MiYymWpnWe5bfPiv3eaHk9dl5r8MCKVUPi87tocPT3QDu57r49eVrl/62gX22LGJT0dE0H+rCrX9QGmqojAn+Tea4z40hwn3WDrInR/TkasbswdHpIfbjPuoMGFMmffZdM+Vtzt5lNuVkw/D+QcOnb3C/92jf+bMa2+x3y7sPZO9hgcczMUrV1jJfOjgV+WvnklrmPj8Zo88dgzD8+Sr2SlQyJ8oB5x6+dsxYNsbA+hjBw/gjh0CeKPtovVtRYBof2lM1/C9tSPzs7LQKujAcoX8MwSKrg8+ChF0YVmzKCxuoP3pxdJTfy5+hnwDWzsPkrWLub68T2z7M8+8e1v3LjyHE4cdBATvGYVrt19hvOSpA01bczBdFsK8Vrg7FsbijsEADuQPBsZ133mnwI7H9ITWhxarM4c0oktKjxYJG4PKnFOgO2LFBxHxFx4FpW1wHcAI/cdxeOPhtzVkgg8hBYa5BIdU98r2B1eB8b7fy0dvt4XEH1IAHGB5YsJZJyfWlPA/GmmdwSxN5hCBmT8DfkK7RxS/Snenw1px7Zs/YkjCaR5aaSaj3zuprM3I63UIZ26SGz2WN7xaDPENDIPxkM65TuqFp/eu6bkJod5qa3SfcF+YWwgBs33/7hy/fyYgmSsYJ1qeNbMZ0Zr43kfHJnM0PKkpNjMlmhjI7L75WeV/PHtNfF9onnbAXZ2A7LCEQRCvuRVTNOKHaTwvP+ztSPHO1PZH5AEH8tChQFRQEzN2I9nauJOMTSikagoJJIWJ8Wev3zlra8q/qn0wtyRR9GFnvdtX+ufp0FCbb2+zIGlZCpt5sW4MJNhBhwLgQAHEVojsSTGlt2bse6J7no0NPZo+q3CGaunqlaOaCmvyp32sSR6pmsG/5YkgVktkT4utvHmq/z5y76r8Oaqji3eKXugveSIYH+hM/bVR1PRKmItvFbH+V0RpTvQoCs/WFNvFoMV3nG6I7w2nx/aA6azQf8tKUz1B0X/kAbvIzUELSx+89/ogBo9toHeHFKqFXtWgFz4B4wN/lw/eGQnJE2T+Aeyiwu9AZtfU6lH8v82MzsB8TdoEITgvKKITlL4e7T/WoxZ5S54owJblVtuk0gKXjhDC9GLFsp1+Vu5OTk3/mGqWN3B0Ils7GqureBIXjlhLrpCe1P6+cL9w1i9xIEAQbUdz9iC5GoB0nRnn5bnL0nrPjFUsXrlKeKpg1Szb5to44UcEPfv6yIW7yORt+auDTTWawX8UiPyA9rv3Qll0jiism1EG46misjExATPil0cDhu8td1KsdPT26Axw/jhvQlAXMDqoOUmaIGnJL7SagCagGu92aEppLCf5PXtraCT4aszFSZUmTxE7p68FVzYENnPG/m/f3QocAuvQ0CDG3Wdnnoyg78xdPvvhrJpWh62UfTGSMrt8xvOM14c5zGa9OnjxjAJufBTkbzcQ0NtzyxfcL7ivz6A3GrS1Os6onl2GiwvoOyNPzsy8ZPP2DQA7ksSVy+s1NhnavW0WRMtAh3nkyrn39Q6Zul1Npro2NDsYzNhDCX1WFzq/39SLXOpFZpFsxNnb3n78SOXkbJP01r3NKzLP5JZFF2fkr8m9u/e+S/rSa6SLHyEHhjiHBNdCu/xASCWoG2KLU/WtyvYU96iWAp2Y5q6dJtzygx+bT+b23k3Kkd08nE3c/P3Ylwk7YMof3pbx4GFrelZuaQWrMLD59iNGR0X1XqGssilm6kZTXEWNqVBTT297MOXfXFyKCtoxqQnhD8bjoiKVzP0SEsPvXY+NYoLg5w0UAtPequsY318cxcfiR/CiSqJqI2qxaqPfTO7rQiaPFEbqHuYHBqyn3l/opLCCr4wK3vmCyD5/iAePTJ9MZqyNoXGWMyPoUoRnHf1cJ7Ug5PKQ+Mynn3zv78u7p9DDIxPtzawjraP9b0R4N87E2BwONHexST342sRZ2dvA0yH+IIgRyAR7K30DW+swW5s0O5sZdU0nK6KugzVB4/TfCmA+69o40ml0be5c9Mj4XFv3qZ66Fj8vFwo1iAXM1PhgFtXDwymgN6+vTlrgZHc7f3eznGuTHH+fkeBgg5wzf/+DKx42d7Js7lzxePDouqfV7Ykpq7tXPcBrsinMzjktISeFFtmfNByinhlnbKWmcoonbCSrsKC5Il/PX8LJN/sQad9AId0WyLqqFNATSLiHSR0yBfILgat35n+Yh/9bLno6N7hINAwXZjCZ+tMqkT0403r+5qkOO2MT+9b8QhsfQw0LCyIVyoDQy3am/wywrYzFdHZGRrR1rLW1RDC6W/jYCWYWBA0zW7qlbZiVJRwhjVjtWTF+Mxz3HN1/C97G+G37wbkmRrEsMFVIYq6+asPHp+NOthbUdmQlWljGhrvVxPiCgHC0SyJFsUj1yIjM45CBlNyqkwnhiSzVukMVtAsZteVDeTHTCqYqGnpmitRkoIJgH+gKE7ZB8hYxKsMpIbBOK+yXPJEHa0qhFIZYKl2SB+wiFLM7rbH/nn/O8WftCGDHoOSSuRe5nEou9na1sPJ0AwpusE6yOvJCZh+uj+l8xETWBiNbDnxNj/ZdO9QWnyQEbEH+HeM3NCem+qzar95obbt+s3sEE0CNcHLwDAc/J39qhKMDlRECJ3Ly9bvbarQtpa2VWpvsPT0QJ3lkYm9+9vn2g2vtjY1+VOkD/ghFUdUVn4y4SsjmsRvvsyOp7h/7Z8eNN+DHzg5fEd0e8dAS0wGjODVtt9Bg/3FNFc0xdDirCuE4AUguzal19uSYu1ZeK9+7dSNMJ/W5pxdGi52tU6/mL5+5TSJm6Z5SYY5/s9ILbwT9ty4J07A/7OK6ubJ3Q9cOLINk8BjXWifsRmY+Yj0Q/voJ80VOHrBj+K/n3sZnx9/KSIxCYEDefunnx+WJtTtDDPqw/X49B3f7+vza06u3Fpxb5RIJK/7qyY4kK0NlMzdn47rEer+Ic44WFBezdswc2L8T/llcbWj2yD79yvPTna0/h77AgI6dE9nexcdCAy9Yh7n29FlsRHrUXWRuD7fR2sIZW5wcb58j56Zkd81Ka95QgzmnGqsUcL3HByJJ+tpOJqpqPZ6MGG5GhrSPWzAQRCT+YKHA5lSewMf6msrVjKx3hevfOacLw21VGuKY48n20Q1+sZY1Bzzffjx+Ovckwy56aNHUpSY6pjabmVgeEJp8rg3M1HQxa5huOTNPkpUl1cXc1MPFxtadtHVq0OOrEuwqbV7eGTJ7t9biXxGlLV8nCcuazpBn01V4nZxD9mgh/aP02J7xhph9zn/t5SFafAeYfiHM/oHM3wrA1qGguPTtuvN2Pxse199jHiF4ghDG+tPUL0+Uh3gjSOgTSh4Rqm7kRA3oD9fzC9eNpfYJxX3t9DLcNmR1W/vJ+IRy70TxUOq7L8EpwljfVXA50Jn833px03pJbX79PDL/HdlpK+dj5qSFkvPxzkoOV6x0XholbpbUFtXOCh9B49mamV0MenTHmROx3XRadDdxrMfeP5qPHiXpT/UHrbgN7rUTlScql/kPCg0AW/wxt+wEb2pOHIWcGevrnx4f46LUFtSmpDwSMAKawd+icxt9D3SEai1JKSLK/RxROc2+sg6JOq8kFPHKILCmUOBALkCV9K/W+4TNAbfi3rkiC1UxuNbsGTgD91Vks/bpqJrzu9ALlIDH8NSs3E7OR7W9WPgO+Hkv/rXiqeQaVNXCk/EA8Q16CazfYbnpYYysVCToaGhOGp2WlxoO9lyfyq+I5Qv16SvAf7Z5F756nf+pAk4y/ld5ObWWMY6Y6uqaZpqrrOJeqnQem5ok26/BxsG0wcYh/l96ojhajqziF285LylJvH2jY5ojGCq4+u74wvkE8elRQx7+WHpfMEk8vOsvHc5v8OCs0vO55yEFCkQF0DDHkzlsbvVbp42mwosfvCtydf3BXIOLHGC/KzQwI0Hc6lk33AzyayooxOkp8Cz+nWHOML714Fmlx2QeFk/msJVKmZYGzgfYZv6gtpXuNKGpo6+mrr0XqR5u7h6squ4eOvGQvZ4eiGbddtU0UgtGFQH/czz+71GoOaWf0v643ZOLFbQ7HTndNfcc3NIIDT+7nIRZW+Z5RbkpqYONJdln85CgabR5cFi0+il9tSP3QbF7/0B1FpnXw8woPCGvPDnuVEvhiaEuVK3+069bG82XHVUOpMYdM9ZXDYTTnTadL2wjB/oyod0wJlIrSzeL0ZVUVdmXxMjOITJ1mGGtiZxt8ZevOtNDnQ+VqhwvFQy3didb27uTYUnZRN0ptSQnN+l0X25lTx806r5YerEp0E33liEYkVoMsfbxNCWiuVY4dOScu3gu8ef6WkyzX1VVnbm8tWj21b827xXAoiD4lz9i7Pyt6nDQYjeJA37Ral/z+2QzEgCOrwXrb0HKMxeDvr9vUI3stCJywO4bN4ga0VrhO7BrfX8fo9rG96L565FJbRBtB7ClAVBGNYMFdGyA3WMjyFI5EBJi1Iqvhj1Zg/iC46vlHVeL0BKCbBBiF/IOQrbRY1ttECCa0Y9GZVA5qQwp6XBKGXaNTAkcCHQtaj/PArPCh2g6gfHlVmC567tXujMaK9K9qNYqim+pkw9qyeVW/pUPLzAzPzoIjC8lgeXyxtG1y8cCzZIVGI8YWJ4a4+jpaKmFKG9Y6rHJMoq6PKuoyw8VdXlOUZfXLJ3wrX9tCKUjCCzXP47uhqVPkksscwZ/DlDMm7VMeISS5dNJlWvkePomQAWebJZvA0vZGNbSyD4SEEptFVmItWQJ66Ova5VI2xPXng2PYC1uWWopVIYg9J2IS1iurSxSLHKzQpKd6kjYSEXC1iqSaw/Lw1duUDxkuzqPkvWOPvouljdBFpe94/SldWOqtTZ8YPcFIf8fW1L7P+Do/F5uNSqdoQY5O7809tJrR21BllZP12bBoB/UT3IF/fE+xgeMpsFe1RiuracaiQjXPktPJbOJVyxOgVXdi+URwMn5vceXwwjRHJN9jGWUxZl+CSEaz/5h5vw0YOHc7Nep+3CmkeKYRmmM8JclsvyKzljBBvoOY81EUVc4vzwV3AbV9qvfkgPa1mOdJJPn7xVQHmapzhPXtuYocCeGE7ePeeyHpi84VueWO095rAlFfQdOiGu9pyiOYEhDgfYjzNYAhwM0YP9Yc6jmwWRQrT+aAytaA9kRYLN9LgdAub3vYYE4m7zZisvRXP3SfhsNtOmxf5jEroHpCEAtg39O2HTw4SAIDT1scgjDmwI7BwFioZlex7GL+PR+Z5eYAgCPfYFlAXh9XN74T+X/51MWTBELwQEFUMD4gIEbYMozKs9AWAXEbF/fb6kgbWUYVollpEUVo3aLajeg9g2+3YhlsWUYT/wPZdah2kGq+dAp3yhWSZFBkhG/82ss92X0wwJG0AINQdCH71PtFibSQ4JOE6TZahU2BUn1l2Pjw2x7ALYuJafrcevqcloW8YDz1Fg+vb9KkNW1JIe6cCKRvWMU72POihWHt6arb0bbZt6+xryXzMR1XWyjv6DYRYi2L1DtJevQkVT9QKyBp2ZSqtWQ6KXRbJi1bFFNiUnLYdJIrOINmVbFvKUICzkRIZydZyEq5GSMPopqqWiNxcRHym+Nbe4rQzvO4aTXbFzA09+TboJEGgbQ84FtoodK4GD45VHoKuhhIqs1CWxTAnsx52aDMzCQ1dmAWq/xGVlwq2WK6l+wbzQZbs2GgoEqJaPZ8YhftPSXXCX6BbePSuo226ApjX0C4peCOiCh/gVyHxc8EuM6SuRTfzEf50M1I8Y9l3d7I79zQ8Foiklr4toqGbY8Jq1YdKhijSf4jbWQ6k+pcVJifSm+80LjSEpEeSuszCOW/5lUQ8xqzqrqMIl3Cvq2/MjACDqnWkU2fiG0Bh4tRk17Q7itkxlHJFPiP1oogCVUQIA5LKAOS800frEEAeawsNSLpqmGqSaT3Tl3tFR0SbXFdGUYimhesYS9Odo0rKnCmMZMHNUT1UxxE1HSTx4mh2oOeLC82drUrJ3CmDZF2GuFATQ0BPhBBVEOsBCA6UBArQgHAaYQAg1pHAB2AsddEdx8dkVhR98VTVTMoTG7Yh1QyHE+ZeSh8nJ1i6koTMli0IQKEwdPjQpVp+FZiiLwMwTv2VqkQMrc+AZGs4uHiHXiwWI1HiPBxoMo3+JRAhhxMFmZIShrxveFm088Fg0isn0oL1CnRTeYkVp+7mO07cw4TETHnZxYTZk/Jn+BwhKuzE6MUMdtNk2gYJFB3pNYx9mxZsqcAxJzx1ptUvlZcFlJF2QG", "ok": true, "headers": [ [ "content-type", "font/woff2" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/tags": { "data": "eyJ0cmFpbi95b2xvdjVzX3Jlc3VsdHMyIjogeyJ0cmFpbi9ib3hfbG9zcyI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAibWV0cmljcy9wcmVjaXNpb24iOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIifSwgIm1ldHJpY3MvcmVjYWxsIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJ2YWwvb2JqX2xvc3MiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIifSwgInRyYWluL2Nsc19sb3NzIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJ0cmFpbi9vYmpfbG9zcyI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAidmFsL2Nsc19sb3NzIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJtZXRyaWNzL21BUF8wLjU6MC45NSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAibWV0cmljcy9tQVBfMC41IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJ4L2xyMiI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAieC9scjAiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIifSwgInZhbC9ib3hfbG9zcyI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAieC9scjEiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIifX19", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2": { "data": "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", "ok": true, "headers": [ [ "content-type", "font/woff2" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/tags": { "data": "eyJ0cmFpbi95b2xvdjVzX3Jlc3VsdHMyIjogeyJyZXN1bHRzIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIiwgInNhbXBsZXMiOiAxfSwgImNvbmZ1c2lvbl9tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIiLCAic2FtcGxlcyI6IDF9LCAiUF9jdXJ2ZSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiIsICJzYW1wbGVzIjogMX0sICJQUl9jdXJ2ZSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiIsICJzYW1wbGVzIjogMX0sICJGMV9jdXJ2ZSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiIsICJzYW1wbGVzIjogMX0sICJSX2N1cnZlIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIiwgInNhbXBsZXMiOiAxfX19", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/index.js?_file_hash=b2ecab87": { "data": "dmFyIENMT1NVUkVfTk9fREVQUyA9IHRydWU7CndpbmRvdy5wb2x5bWVyU2tpcExvYWRpbmdGb250Um9ib3RvID0gdHJ1ZTsKLyoqIHZpbTogZXQ6dHM9NDpzdz00OnN0cz00CiAqIEBsaWNlbnNlIFJlcXVpcmVKUyAyLjMuNiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycy4KICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKICovCi8vTm90IHVzaW5nIHN0cmljdDogdW5ldmVuIHN0cmljdCBzdXBwb3J0IGluIGJyb3dzZXJzLCAjMzkyLCBhbmQgY2F1c2VzCi8vcHJvYmxlbXMgd2l0aCByZXF1aXJlanMuZXhlYygpL3RyYW5zcGlsZXIgcGx1Z2lucyB0aGF0IG1heSBub3QgYmUgc3RyaWN0LgovKmpzbGludCByZWdleHA6IHRydWUsIG5vbWVuOiB0cnVlLCBzbG9wcHk6IHRydWUgKi8KLypnbG9iYWwgd2luZG93LCBuYXZpZ2F0b3IsIGRvY3VtZW50LCBpbXBvcnRTY3JpcHRzLCBzZXRUaW1lb3V0LCBvcGVyYSAqLwoKdmFyIHJlcXVpcmVqcywgcmVxdWlyZSwgZGVmaW5lOwooZnVuY3Rpb24gKGdsb2JhbCwgc2V0VGltZW91dCkgewogICAgdmFyIHJlcSwgcywgaGVhZCwgYmFzZUVsZW1lbnQsIGRhdGFNYWluLCBzcmMsCiAgICAgICAgaW50ZXJhY3RpdmVTY3JpcHQsIGN1cnJlbnRseUFkZGluZ1NjcmlwdCwgbWFpblNjcmlwdCwgc3ViUGF0aCwKICAgICAgICB2ZXJzaW9uID0gJzIuMy42JywKICAgICAgICBjb21tZW50UmVnRXhwID0gL1wvXCpbXHNcU10qP1wqXC98KFteOiInPV18XilcL1wvLiokL21nLAogICAgICAgIGNqc1JlcXVpcmVSZWdFeHAgPSAvW14uXVxzKnJlcXVpcmVccypcKFxzKlsiJ10oW14nIlxzXSspWyInXVxzKlwpL2csCiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXC5qcyQvLAogICAgICAgIGN1cnJEaXJSZWdFeHAgPSAvXlwuXC8vLAogICAgICAgIG9wID0gT2JqZWN0LnByb3RvdHlwZSwKICAgICAgICBvc3RyaW5nID0gb3AudG9TdHJpbmcsCiAgICAgICAgaGFzT3duID0gb3AuaGFzT3duUHJvcGVydHksCiAgICAgICAgaXNCcm93c2VyID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50KSwKICAgICAgICBpc1dlYldvcmtlciA9ICFpc0Jyb3dzZXIgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICd1bmRlZmluZWQnLAogICAgICAgIC8vUFMzIGluZGljYXRlcyBsb2FkZWQgYW5kIGNvbXBsZXRlLCBidXQgbmVlZCB0byB3YWl0IGZvciBjb21wbGV0ZQogICAgICAgIC8vc3BlY2lmaWNhbGx5LiBTZXF1ZW5jZSBpcyAnbG9hZGluZycsICdsb2FkZWQnLCBleGVjdXRpb24sCiAgICAgICAgLy8gdGhlbiAnY29tcGxldGUnLiBUaGUgVUEgY2hlY2sgaXMgdW5mb3J0dW5hdGUsIGJ1dCBub3Qgc3VyZSBob3cKICAgICAgICAvL3RvIGZlYXR1cmUgdGVzdCB3L28gY2F1c2luZyBwZXJmIGlzc3Vlcy4KICAgICAgICByZWFkeVJlZ0V4cCA9IGlzQnJvd3NlciAmJiBuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdQTEFZU1RBVElPTiAzJyA/CiAgICAgICAgICAgICAgICAgICAgICAvXmNvbXBsZXRlJC8gOiAvXihjb21wbGV0ZXxsb2FkZWQpJC8sCiAgICAgICAgZGVmQ29udGV4dE5hbWUgPSAnXycsCiAgICAgICAgLy9PaCB0aGUgdHJhZ2VkeSwgZGV0ZWN0aW5nIG9wZXJhLiBTZWUgdGhlIHVzYWdlIG9mIGlzT3BlcmEgZm9yIHJlYXNvbi4KICAgICAgICBpc09wZXJhID0gdHlwZW9mIG9wZXJhICE9PSAndW5kZWZpbmVkJyAmJiBvcGVyYS50b1N0cmluZygpID09PSAnW29iamVjdCBPcGVyYV0nLAogICAgICAgIGNvbnRleHRzID0ge30sCiAgICAgICAgY2ZnID0ge30sCiAgICAgICAgZ2xvYmFsRGVmUXVldWUgPSBbXSwKICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IGZhbHNlOwoKICAgIC8vQ291bGQgbWF0Y2ggc29tZXRoaW5nIGxpa2UgJykvL2NvbW1lbnQnLCBkbyBub3QgbG9zZSB0aGUgcHJlZml4IHRvIGNvbW1lbnQuCiAgICBmdW5jdGlvbiBjb21tZW50UmVwbGFjZShtYXRjaCwgc2luZ2xlUHJlZml4KSB7CiAgICAgICAgcmV0dXJuIHNpbmdsZVByZWZpeCB8fCAnJzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGl0KSB7CiAgICAgICAgcmV0dXJuIG9zdHJpbmcuY2FsbChpdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNBcnJheShpdCkgewogICAgICAgIHJldHVybiBvc3RyaW5nLmNhbGwoaXQpID09PSAnW29iamVjdCBBcnJheV0nOwogICAgfQoKICAgIC8qKgogICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheS4gSWYgdGhlIGZ1bmMgcmV0dXJucwogICAgICogYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaChhcnksIGZ1bmMpIHsKICAgICAgICBpZiAoYXJ5KSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJ5Lmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5IGJhY2t3YXJkcy4gSWYgdGhlIGZ1bmMKICAgICAqIHJldHVybnMgYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaFJldmVyc2UoYXJ5LCBmdW5jKSB7CiAgICAgICAgaWYgKGFyeSkgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgZm9yIChpID0gYXJ5Lmxlbmd0aCAtIDE7IGkgPiAtMTsgaSAtPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaGFzUHJvcChvYmosIHByb3ApIHsKICAgICAgICByZXR1cm4gaGFzT3duLmNhbGwob2JqLCBwcm9wKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRPd24ob2JqLCBwcm9wKSB7CiAgICAgICAgcmV0dXJuIGhhc1Byb3Aob2JqLCBwcm9wKSAmJiBvYmpbcHJvcF07CiAgICB9CgogICAgLyoqCiAgICAgKiBDeWNsZXMgb3ZlciBwcm9wZXJ0aWVzIGluIGFuIG9iamVjdCBhbmQgY2FsbHMgYSBmdW5jdGlvbiBmb3IgZWFjaAogICAgICogcHJvcGVydHkgdmFsdWUuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLCB0aGVuIHRoZQogICAgICogaXRlcmF0aW9uIGlzIHN0b3BwZWQuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGVhY2hQcm9wKG9iaiwgZnVuYykgewogICAgICAgIHZhciBwcm9wOwogICAgICAgIGZvciAocHJvcCBpbiBvYmopIHsKICAgICAgICAgICAgaWYgKGhhc1Byb3Aob2JqLCBwcm9wKSkgewogICAgICAgICAgICAgICAgaWYgKGZ1bmMob2JqW3Byb3BdLCBwcm9wKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2ltcGxlIGZ1bmN0aW9uIHRvIG1peCBpbiBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGludG8gdGFyZ2V0LAogICAgICogYnV0IG9ubHkgaWYgdGFyZ2V0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIG1peGluKHRhcmdldCwgc291cmNlLCBmb3JjZSwgZGVlcFN0cmluZ01peGluKSB7CiAgICAgICAgaWYgKHNvdXJjZSkgewogICAgICAgICAgICBlYWNoUHJvcChzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgaWYgKGZvcmNlIHx8ICFoYXNQcm9wKHRhcmdldCwgcHJvcCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVlcFN0cmluZ01peGluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIWlzQXJyYXkodmFsdWUpICYmICFpc0Z1bmN0aW9uKHZhbHVlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKHRhcmdldFtwcm9wXSwgdmFsdWUsIGZvcmNlLCBkZWVwU3RyaW5nTWl4aW4pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0YXJnZXQ7CiAgICB9CgogICAgLy9TaW1pbGFyIHRvIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBidXQgdGhlICd0aGlzJyBvYmplY3QgaXMgc3BlY2lmaWVkCiAgICAvL2ZpcnN0LCBzaW5jZSBpdCBpcyBlYXNpZXIgdG8gcmVhZC9maWd1cmUgb3V0IHdoYXQgJ3RoaXMnIHdpbGwgYmUuCiAgICBmdW5jdGlvbiBiaW5kKG9iaiwgZm4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkob2JqLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gc2NyaXB0cygpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOwogICAgfQoKICAgIGZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycikgewogICAgICAgIHRocm93IGVycjsKICAgIH0KCiAgICAvL0FsbG93IGdldHRpbmcgYSBnbG9iYWwgdGhhdCBpcyBleHByZXNzZWQgaW4KICAgIC8vZG90IG5vdGF0aW9uLCBsaWtlICdhLmIuYycuCiAgICBmdW5jdGlvbiBnZXRHbG9iYWwodmFsdWUpIHsKICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICB9CiAgICAgICAgdmFyIGcgPSBnbG9iYWw7CiAgICAgICAgZWFjaCh2YWx1ZS5zcGxpdCgnLicpLCBmdW5jdGlvbiAocGFydCkgewogICAgICAgICAgICBnID0gZ1twYXJ0XTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gZzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN0cnVjdHMgYW4gZXJyb3Igd2l0aCBhIHBvaW50ZXIgdG8gYW4gVVJMIHdpdGggbW9yZSBpbmZvcm1hdGlvbi4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZXJyb3IgSUQgdGhhdCBtYXBzIHRvIGFuIElEIG9uIGEgd2ViIHBhZ2UuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBodW1hbiByZWFkYWJsZSBlcnJvci4KICAgICAqIEBwYXJhbSB7RXJyb3J9IFtlcnJdIHRoZSBvcmlnaW5hbCBlcnJvciwgaWYgdGhlcmUgaXMgb25lLgogICAgICoKICAgICAqIEByZXR1cm5zIHtFcnJvcn0KICAgICAqLwogICAgZnVuY3Rpb24gbWFrZUVycm9yKGlkLCBtc2csIGVyciwgcmVxdWlyZU1vZHVsZXMpIHsKICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgKyAnXG5odHRwczovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCMnICsgaWQpOwogICAgICAgIGUucmVxdWlyZVR5cGUgPSBpZDsKICAgICAgICBlLnJlcXVpcmVNb2R1bGVzID0gcmVxdWlyZU1vZHVsZXM7CiAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBlLm9yaWdpbmFsRXJyb3IgPSBlcnI7CiAgICAgICAgfQogICAgICAgIHJldHVybiBlOwogICAgfQoKICAgIGlmICh0eXBlb2YgZGVmaW5lICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIC8vSWYgYSBkZWZpbmUgaXMgYWxyZWFkeSBpbiBwbGF5IHZpYSBhbm90aGVyIEFNRCBsb2FkZXIsCiAgICAgICAgLy9kbyBub3Qgb3ZlcndyaXRlLgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAodHlwZW9mIHJlcXVpcmVqcyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXF1aXJlanMpKSB7CiAgICAgICAgICAgIC8vRG8gbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyByZXF1aXJlanMgaW5zdGFuY2UuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY2ZnID0gcmVxdWlyZWpzOwogICAgICAgIHJlcXVpcmVqcyA9IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvL0FsbG93IGZvciBhIHJlcXVpcmUgY29uZmlnIG9iamVjdAogICAgaWYgKHR5cGVvZiByZXF1aXJlICE9PSAndW5kZWZpbmVkJyAmJiAhaXNGdW5jdGlvbihyZXF1aXJlKSkgewogICAgICAgIC8vYXNzdW1lIGl0IGlzIGEgY29uZmlnIG9iamVjdC4KICAgICAgICBjZmcgPSByZXF1aXJlOwogICAgICAgIHJlcXVpcmUgPSB1bmRlZmluZWQ7CiAgICB9CgogICAgZnVuY3Rpb24gbmV3Q29udGV4dChjb250ZXh0TmFtZSkgewogICAgICAgIHZhciBpbkNoZWNrTG9hZGVkLCBNb2R1bGUsIGNvbnRleHQsIGhhbmRsZXJzLAogICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCwKICAgICAgICAgICAgY29uZmlnID0gewogICAgICAgICAgICAgICAgLy9EZWZhdWx0cy4gRG8gbm90IHNldCBhIGRlZmF1bHQgZm9yIG1hcAogICAgICAgICAgICAgICAgLy9jb25maWcgdG8gc3BlZWQgdXAgbm9ybWFsaXplKCksIHdoaWNoCiAgICAgICAgICAgICAgICAvL3dpbGwgcnVuIGZhc3RlciBpZiB0aGVyZSBpcyBubyBkZWZhdWx0LgogICAgICAgICAgICAgICAgd2FpdFNlY29uZHM6IDcsCiAgICAgICAgICAgICAgICBiYXNlVXJsOiAnLi8nLAogICAgICAgICAgICAgICAgcGF0aHM6IHt9LAogICAgICAgICAgICAgICAgYnVuZGxlczoge30sCiAgICAgICAgICAgICAgICBwa2dzOiB7fSwKICAgICAgICAgICAgICAgIHNoaW06IHt9LAogICAgICAgICAgICAgICAgY29uZmlnOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICByZWdpc3RyeSA9IHt9LAogICAgICAgICAgICAvL3JlZ2lzdHJ5IG9mIGp1c3QgZW5hYmxlZCBtb2R1bGVzLCB0byBzcGVlZAogICAgICAgICAgICAvL2N5Y2xlIGJyZWFraW5nIGNvZGUgd2hlbiBsb3RzIG9mIG1vZHVsZXMKICAgICAgICAgICAgLy9hcmUgcmVnaXN0ZXJlZCwgYnV0IG5vdCBhY3RpdmF0ZWQuCiAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeSA9IHt9LAogICAgICAgICAgICB1bmRlZkV2ZW50cyA9IHt9LAogICAgICAgICAgICBkZWZRdWV1ZSA9IFtdLAogICAgICAgICAgICBkZWZpbmVkID0ge30sCiAgICAgICAgICAgIHVybEZldGNoZWQgPSB7fSwKICAgICAgICAgICAgYnVuZGxlc01hcCA9IHt9LAogICAgICAgICAgICByZXF1aXJlQ291bnRlciA9IDEsCiAgICAgICAgICAgIHVubm9ybWFsaXplZENvdW50ZXIgPSAxOwoKICAgICAgICAvKioKICAgICAgICAgKiBUcmltcyB0aGUgLiBhbmQgLi4gZnJvbSBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzLgogICAgICAgICAqIEl0IHdpbGwga2VlcCBhIGxlYWRpbmcgcGF0aCBzZWdtZW50IGlmIGEgLi4gd2lsbCBiZWNvbWUKICAgICAgICAgKiB0aGUgZmlyc3QgcGF0aCBzZWdtZW50LCB0byBoZWxwIHdpdGggbW9kdWxlIG5hbWUgbG9va3VwcywKICAgICAgICAgKiB3aGljaCBhY3QgbGlrZSBwYXRocywgYnV0IGNhbiBiZSByZW1hcHBlZC4gQnV0IHRoZSBlbmQgcmVzdWx0LAogICAgICAgICAqIGFsbCBwYXRocyB0aGF0IHVzZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBsb29rIG5vcm1hbGl6ZWQuCiAgICAgICAgICogTk9URTogdGhpcyBtZXRob2QgTU9ESUZJRVMgdGhlIGlucHV0IGFycmF5LgogICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyeSB0aGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0cmltRG90cyhhcnkpIHsKICAgICAgICAgICAgdmFyIGksIHBhcnQ7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHBhcnQgPSBhcnlbaV07CiAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICBpIC09IDE7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZiBhdCB0aGUgc3RhcnQsIG9yIHByZXZpb3VzIHZhbHVlIGlzIHN0aWxsIC4uLAogICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCBpdCBtYXkKICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCB3b3JrIHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCwgZXZlbiB0aG91Z2gKICAgICAgICAgICAgICAgICAgICAvLyBhcyBhbiBJRCBpdCBpcyBsZXNzIHRoYW4gaWRlYWwuIEluIGxhcmdlciBwb2ludAogICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2ljayBvdXQgYW4gZXJyb3IuCiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgfHwgKGkgPT09IDEgJiYgYXJ5WzJdID09PSAnLi4nKSB8fCBhcnlbaSAtIDFdID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpIC0gMSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEdpdmVuIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUsIGxpa2UgLi9zb21ldGhpbmcsIG5vcm1hbGl6ZSBpdCB0bwogICAgICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWUKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZU5hbWUgYSByZWFsIG5hbWUgdGhhdCB0aGUgbmFtZSBhcmcgaXMgcmVsYXRpdmUKICAgICAgICAgKiB0by4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGFwcGx5TWFwIGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSB2YWx1ZS4gU2hvdWxkCiAgICAgICAgICogb25seSBiZSBkb25lIGlmIHRoaXMgbm9ybWFsaXphdGlvbiBpcyBmb3IgYSBkZXBlbmRlbmN5IElELgogICAgICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IG5vcm1hbGl6ZWQgbmFtZQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShuYW1lLCBiYXNlTmFtZSwgYXBwbHlNYXApIHsKICAgICAgICAgICAgdmFyIHBrZ01haW4sIG1hcFZhbHVlLCBuYW1lUGFydHMsIGksIGosIG5hbWVTZWdtZW50LCBsYXN0SW5kZXgsCiAgICAgICAgICAgICAgICBmb3VuZE1hcCwgZm91bmRJLCBmb3VuZFN0YXJNYXAsIHN0YXJJLCBub3JtYWxpemVkQmFzZVBhcnRzLAogICAgICAgICAgICAgICAgYmFzZVBhcnRzID0gKGJhc2VOYW1lICYmIGJhc2VOYW1lLnNwbGl0KCcvJykpLAogICAgICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCwKICAgICAgICAgICAgICAgIHN0YXJNYXAgPSBtYXAgJiYgbWFwWycqJ107CgogICAgICAgICAgICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuCiAgICAgICAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnLycpOwogICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxOwoKICAgICAgICAgICAgICAgIC8vIElmIHdhbnRpbmcgbm9kZSBJRCBjb21wYXRpYmlsaXR5LCBzdHJpcCAuanMgZnJvbSBlbmQKICAgICAgICAgICAgICAgIC8vIG9mIElEcy4gSGF2ZSB0byBkbyB0aGlzIGhlcmUsIGFuZCBub3QgaW4gbmFtZVRvVXJsCiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIG5vZGUgYWxsb3dzIGVpdGhlciAuanMgb3Igbm9uIC5qcyB0byBtYXAKICAgICAgICAgICAgICAgIC8vIHRvIHNhbWUgZmlsZS4KICAgICAgICAgICAgICAgIGlmIChjb25maWcubm9kZUlkQ29tcGF0ICYmIGpzU3VmZml4UmVnRXhwLnRlc3QobmFtZVtsYXN0SW5kZXhdKSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVbbGFzdEluZGV4XSA9IG5hbWVbbGFzdEluZGV4XS5yZXBsYWNlKGpzU3VmZml4UmVnRXhwLCAnJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gU3RhcnRzIHdpdGggYSAnLicgc28gbmVlZCB0aGUgYmFzZU5hbWUKICAgICAgICAgICAgICAgIGlmIChuYW1lWzBdLmNoYXJBdCgwKSA9PT0gJy4nICYmIGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgIC8vQ29udmVydCBiYXNlTmFtZSB0byBhcnJheSwgYW5kIGxvcCBvZmYgdGhlIGxhc3QgcGFydCwKICAgICAgICAgICAgICAgICAgICAvL3NvIHRoYXQgLiBtYXRjaGVzIHRoYXQgJ2RpcmVjdG9yeScgYW5kIG5vdCBuYW1lIG9mIHRoZSBiYXNlTmFtZSdzCiAgICAgICAgICAgICAgICAgICAgLy9tb2R1bGUuIEZvciBpbnN0YW5jZSwgYmFzZU5hbWUgb2YgJ29uZS90d28vdGhyZWUnLCBtYXBzIHRvCiAgICAgICAgICAgICAgICAgICAgLy8nb25lL3R3by90aHJlZS5qcycsIGJ1dCB3ZSB3YW50IHRoZSBkaXJlY3RvcnksICdvbmUvdHdvJyBmb3IKICAgICAgICAgICAgICAgICAgICAvL3RoaXMgbm9ybWFsaXphdGlvbi4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkQmFzZVBhcnRzID0gYmFzZVBhcnRzLnNsaWNlKDAsIGJhc2VQYXJ0cy5sZW5ndGggLSAxKTsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplZEJhc2VQYXJ0cy5jb25jYXQobmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHJpbURvdHMobmFtZSk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5qb2luKCcvJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vQXBwbHkgbWFwIGNvbmZpZyBpZiBhdmFpbGFibGUuCiAgICAgICAgICAgIGlmIChhcHBseU1hcCAmJiBtYXAgJiYgKGJhc2VQYXJ0cyB8fCBzdGFyTWFwKSkgewogICAgICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpOwoKICAgICAgICAgICAgICAgIG91dGVyTG9vcDogZm9yIChpID0gbmFtZVBhcnRzLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVTZWdtZW50ID0gbmFtZVBhcnRzLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgogICAgICAgICAgICAgICAgICAgICAgICAvL1NvLCBkbyBqb2lucyBvbiB0aGUgYmlnZ2VzdCB0byBzbWFsbGVzdCBsZW5ndGhzIG9mIGJhc2VQYXJ0cy4KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gYmFzZVBhcnRzLmxlbmd0aDsgaiA+IDA7IGogLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBnZXRPd24obWFwLCBiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzIGNvbmZpZywgZmluZCBpZiBpdCBoYXMgb25lIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBWYWx1ZSA9IGdldE93bihtYXBWYWx1ZSwgbmFtZVNlZ21lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IG1hcFZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvdXRlckxvb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LAogICAgICAgICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgYSBzaG9ydGVyIHNlZ21lbnQgbWF0Y2ggbGF0ZXIgaW4gYSBtYXRjaGluZwogICAgICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIgdGhpcyBzdGFyIG1hcC4KICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIGdldE93bihzdGFyTWFwLCBuYW1lU2VnbWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTdGFyTWFwID0gZ2V0T3duKHN0YXJNYXAsIG5hbWVTZWdtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkgewogICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gZm91bmRTdGFyTWFwOwogICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkgewogICAgICAgICAgICAgICAgICAgIG5hbWVQYXJ0cy5zcGxpY2UoMCwgZm91bmRJLCBmb3VuZE1hcCk7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0cy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIHRoZSBuYW1lIHBvaW50cyB0byBhIHBhY2thZ2UncyBuYW1lLCB1c2UKICAgICAgICAgICAgLy8gdGhlIHBhY2thZ2UgbWFpbiBpbnN0ZWFkLgogICAgICAgICAgICBwa2dNYWluID0gZ2V0T3duKGNvbmZpZy5wa2dzLCBuYW1lKTsKCiAgICAgICAgICAgIHJldHVybiBwa2dNYWluID8gcGtnTWFpbiA6IG5hbWU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZW1vdmVTY3JpcHQobmFtZSkgewogICAgICAgICAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgICAgICAgICBlYWNoKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlwdE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpID09PSBuYW1lICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHROb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcpID09PSBjb250ZXh0LmNvbnRleHROYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhhc1BhdGhGYWxsYmFjayhpZCkgewogICAgICAgICAgICB2YXIgcGF0aENvbmZpZyA9IGdldE93bihjb25maWcucGF0aHMsIGlkKTsKICAgICAgICAgICAgaWYgKHBhdGhDb25maWcgJiYgaXNBcnJheShwYXRoQ29uZmlnKSAmJiBwYXRoQ29uZmlnLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIC8vUG9wIG9mZiB0aGUgZmlyc3QgYXJyYXkgdmFsdWUsIHNpbmNlIGl0IGZhaWxlZCwgYW5kCiAgICAgICAgICAgICAgICAvL3JldHJ5CiAgICAgICAgICAgICAgICBwYXRoQ29uZmlnLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUudW5kZWYoaWQpOwoKICAgICAgICAgICAgICAgIC8vQ3VzdG9tIHJlcXVpcmUgdGhhdCBkb2VzIG5vdCBkbyBtYXAgdHJhbnNsYXRpb24sIHNpbmNlCiAgICAgICAgICAgICAgICAvL0lEIGlzICJhYnNvbHV0ZSIsIGFscmVhZHkgbWFwcGVkL3Jlc29sdmVkLgogICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZShudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgc2tpcE1hcDogdHJ1ZQogICAgICAgICAgICAgICAgfSkoW2lkXSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vVHVybnMgYSBwbHVnaW4hcmVzb3VyY2UgdG8gW3BsdWdpbiwgcmVzb3VyY2VdCiAgICAgICAgLy93aXRoIHRoZSBwbHVnaW4gYmVpbmcgdW5kZWZpbmVkIGlmIHRoZSBuYW1lCiAgICAgICAgLy9kaWQgbm90IGhhdmUgYSBwbHVnaW4gcHJlZml4LgogICAgICAgIGZ1bmN0aW9uIHNwbGl0UHJlZml4KG5hbWUpIHsKICAgICAgICAgICAgdmFyIHByZWZpeCwKICAgICAgICAgICAgICAgIGluZGV4ID0gbmFtZSA/IG5hbWUuaW5kZXhPZignIScpIDogLTE7CiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7CiAgICAgICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cmluZygwLCBpbmRleCk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFtwcmVmaXgsIG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQ3JlYXRlcyBhIG1vZHVsZSBtYXBwaW5nIHRoYXQgaW5jbHVkZXMgcGx1Z2luIHByZWZpeCwgbW9kdWxlCiAgICAgICAgICogbmFtZSwgYW5kIHBhdGguIElmIHBhcmVudE1vZHVsZU1hcCBpcyBwcm92aWRlZCBpdCB3aWxsCiAgICAgICAgICogYWxzbyBub3JtYWxpemUgdGhlIG5hbWUgdmlhIHJlcXVpcmUubm9ybWFsaXplKCkKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBtb2R1bGUgbmFtZQogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyZW50TW9kdWxlTWFwXSBwYXJlbnQgbW9kdWxlIG1hcAogICAgICAgICAqIGZvciB0aGUgbW9kdWxlIG5hbWUsIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBuYW1lcy4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzTm9ybWFsaXplZDogaXMgdGhlIElEIGFscmVhZHkgbm9ybWFsaXplZC4KICAgICAgICAgKiBUaGlzIGlzIHRydWUgaWYgdGhpcyBjYWxsIGlzIGRvbmUgZm9yIGEgZGVmaW5lKCkgbW9kdWxlIElELgogICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gYXBwbHlNYXA6IGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSBJRC4KICAgICAgICAgKiBTaG91bGQgb25seSBiZSB0cnVlIGlmIHRoaXMgbWFwIGlzIGZvciBhIGRlcGVuZGVuY3kuCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG1ha2VNb2R1bGVNYXAobmFtZSwgcGFyZW50TW9kdWxlTWFwLCBpc05vcm1hbGl6ZWQsIGFwcGx5TWFwKSB7CiAgICAgICAgICAgIHZhciB1cmwsIHBsdWdpbk1vZHVsZSwgc3VmZml4LCBuYW1lUGFydHMsCiAgICAgICAgICAgICAgICBwcmVmaXggPSBudWxsLAogICAgICAgICAgICAgICAgcGFyZW50TmFtZSA9IHBhcmVudE1vZHVsZU1hcCA/IHBhcmVudE1vZHVsZU1hcC5uYW1lIDogbnVsbCwKICAgICAgICAgICAgICAgIG9yaWdpbmFsTmFtZSA9IG5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZSA9IHRydWUsCiAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9ICcnOwoKICAgICAgICAgICAgLy9JZiBubyBuYW1lLCB0aGVuIGl0IG1lYW5zIGl0IGlzIGEgcmVxdWlyZSBjYWxsLCBnZW5lcmF0ZSBhbgogICAgICAgICAgICAvL2ludGVybmFsIG5hbWUuCiAgICAgICAgICAgIGlmICghbmFtZSkgewogICAgICAgICAgICAgICAgaXNEZWZpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIG5hbWUgPSAnX0ByJyArIChyZXF1aXJlQ291bnRlciArPSAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmFtZVBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7CiAgICAgICAgICAgIHByZWZpeCA9IG5hbWVQYXJ0c1swXTsKICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0c1sxXTsKCiAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgICAgIHByZWZpeCA9IG5vcm1hbGl6ZShwcmVmaXgsIHBhcmVudE5hbWUsIGFwcGx5TWFwKTsKICAgICAgICAgICAgICAgIHBsdWdpbk1vZHVsZSA9IGdldE93bihkZWZpbmVkLCBwcmVmaXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0FjY291bnQgZm9yIHJlbGF0aXZlIHBhdGhzIGlmIHRoZXJlIGlzIGEgYmFzZSBuYW1lLgogICAgICAgICAgICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgaWYgKHByZWZpeCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBuYW1lOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGx1Z2luTW9kdWxlICYmIHBsdWdpbk1vZHVsZS5ub3JtYWxpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9QbHVnaW4gaXMgbG9hZGVkLCB1c2UgaXRzIG5vcm1hbGl6ZSBtZXRob2QuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gcGx1Z2luTW9kdWxlLm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG5lc3RlZCBwbHVnaW4gcmVmZXJlbmNlcywgdGhlbiBkbyBub3QgdHJ5IHRvCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSwgYXMgaXQgd2lsbCBub3Qgbm9ybWFsaXplIGNvcnJlY3RseS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFjZXMgYSByZXN0cmljdGlvbiBvbiByZXNvdXJjZUlkcywgYW5kIHRoZSBsb25nZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVybSBzb2x1dGlvbiBpcyBub3QgdG8gbm9ybWFsaXplIHVudGlsIHBsdWdpbnMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRlZCBhbmQgYWxsIG5vcm1hbGl6YXRpb25zIHRvIGFsbG93IGZvciBhc3luYwogICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkaW5nIG9mIGEgbG9hZGVyIHBsdWdpbi4gQnV0IGZvciBub3csIGZpeGVzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tb24gdXNlcy4gRGV0YWlscyBpbiAjMTEzMQogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5hbWUuaW5kZXhPZignIScpID09PSAtMSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIGFwcGx5TWFwKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vQSByZWd1bGFyIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CgogICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplZCBuYW1lIG1heSBiZSBhIHBsdWdpbiBJRCBkdWUgdG8gbWFwIGNvbmZpZwogICAgICAgICAgICAgICAgICAgIC8vYXBwbGljYXRpb24gaW4gbm9ybWFsaXplLiBUaGUgbWFwIGNvbmZpZyB2YWx1ZXMgbXVzdAogICAgICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBiZSBub3JtYWxpemVkLCBzbyBkbyBub3QgbmVlZCB0byByZWRvIHRoYXQgcGFydC4KICAgICAgICAgICAgICAgICAgICBuYW1lUGFydHMgPSBzcGxpdFByZWZpeChub3JtYWxpemVkTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZVBhcnRzWzBdOwogICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZVBhcnRzWzFdOwogICAgICAgICAgICAgICAgICAgIGlzTm9ybWFsaXplZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIHVybCA9IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZWROYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiB0aGUgaWQgaXMgYSBwbHVnaW4gaWQgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBpZiBpdCBuZWVkcwogICAgICAgICAgICAvL25vcm1hbGl6YXRpb24sIHN0YW1wIGl0IHdpdGggYSB1bmlxdWUgSUQgc28gdHdvIG1hdGNoaW5nIHJlbGF0aXZlCiAgICAgICAgICAgIC8vaWRzIHRoYXQgbWF5IGNvbmZsaWN0IGNhbiBiZSBzZXBhcmF0ZS4KICAgICAgICAgICAgc3VmZml4ID0gcHJlZml4ICYmICFwbHVnaW5Nb2R1bGUgJiYgIWlzTm9ybWFsaXplZCA/CiAgICAgICAgICAgICAgICAgICAgICdfdW5ub3JtYWxpemVkJyArICh1bm5vcm1hbGl6ZWRDb3VudGVyICs9IDEpIDoKICAgICAgICAgICAgICAgICAgICAgJyc7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsCiAgICAgICAgICAgICAgICBuYW1lOiBub3JtYWxpemVkTmFtZSwKICAgICAgICAgICAgICAgIHBhcmVudE1hcDogcGFyZW50TW9kdWxlTWFwLAogICAgICAgICAgICAgICAgdW5ub3JtYWxpemVkOiAhIXN1ZmZpeCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgb3JpZ2luYWxOYW1lOiBvcmlnaW5hbE5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZTogaXNEZWZpbmUsCiAgICAgICAgICAgICAgICBpZDogKHByZWZpeCA/CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArICchJyArIG5vcm1hbGl6ZWROYW1lIDoKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUpICsgc3VmZml4CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnZXRNb2R1bGUoZGVwTWFwKSB7CiAgICAgICAgICAgIHZhciBpZCA9IGRlcE1hcC5pZCwKICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwoKICAgICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXSA9IG5ldyBjb250ZXh0Lk1vZHVsZShkZXBNYXApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbW9kOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb24oZGVwTWFwLCBuYW1lLCBmbikgewogICAgICAgICAgICB2YXIgaWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgIGlmIChoYXNQcm9wKGRlZmluZWQsIGlkKSAmJgogICAgICAgICAgICAgICAgICAgICghbW9kIHx8IG1vZC5kZWZpbmVFbWl0Q29tcGxldGUpKSB7CiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgZm4oZGVmaW5lZFtpZF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbW9kID0gZ2V0TW9kdWxlKGRlcE1hcCk7CiAgICAgICAgICAgICAgICBpZiAobW9kLmVycm9yICYmIG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICBmbihtb2QuZXJyb3IpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtb2Qub24obmFtZSwgZm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvbkVycm9yKGVyciwgZXJyYmFjaykgewogICAgICAgICAgICB2YXIgaWRzID0gZXJyLnJlcXVpcmVNb2R1bGVzLAogICAgICAgICAgICAgICAgbm90aWZpZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmIChlcnJiYWNrKSB7CiAgICAgICAgICAgICAgICBlcnJiYWNrKGVycik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlYWNoKGlkcywgZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwogICAgICAgICAgICAgICAgICAgIGlmIChtb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9TZXQgZXJyb3Igb24gbW9kdWxlLCBzbyBpdCBza2lwcyB0aW1lb3V0IGNoZWNrcy4KICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gdHJhbnNmZXIgZ2xvYmFsUXVldWUgaXRlbXMgdG8gdGhpcyBjb250ZXh0J3MKICAgICAgICAgKiBkZWZRdWV1ZS4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0YWtlR2xvYmFsUXVldWUoKSB7CiAgICAgICAgICAgIC8vUHVzaCBhbGwgdGhlIGdsb2JhbERlZlF1ZXVlIGl0ZW1zIGludG8gdGhlIGNvbnRleHQncyBkZWZRdWV1ZQogICAgICAgICAgICBpZiAoZ2xvYmFsRGVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBlYWNoKGdsb2JhbERlZlF1ZXVlLCBmdW5jdGlvbihxdWV1ZUl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBxdWV1ZUl0ZW1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5wdXNoKHF1ZXVlSXRlbSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGhhbmRsZXJzID0gewogICAgICAgICAgICAncmVxdWlyZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QucmVxdWlyZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QucmVxdWlyZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtb2QucmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobW9kLm1hcCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAnZXhwb3J0cyc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIG1vZC51c2luZ0V4cG9ydHMgPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKG1vZC5tYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV4cG9ydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW21vZC5tYXAuaWRdID0gbW9kLmV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLmV4cG9ydHMgPSBkZWZpbmVkW21vZC5tYXAuaWRdID0ge30pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ21vZHVsZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QubW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZC5tb2R1bGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLm1vZHVsZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1vZC5tYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogbW9kLm1hcC51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE93bihjb25maWcuY29uZmlnLCBtb2QubWFwLmlkKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogbW9kLmV4cG9ydHMgfHwgKG1vZC5leHBvcnRzID0ge30pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjbGVhblJlZ2lzdHJ5KGlkKSB7CiAgICAgICAgICAgIC8vQ2xlYW4gdXAgbWFjaGluZXJ5IHVzZWQgZm9yIHdhaXRpbmcgbW9kdWxlcy4KICAgICAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5W2lkXTsKICAgICAgICAgICAgZGVsZXRlIGVuYWJsZWRSZWdpc3RyeVtpZF07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBicmVha0N5Y2xlKG1vZCwgdHJhY2VkLCBwcm9jZXNzZWQpIHsKICAgICAgICAgICAgdmFyIGlkID0gbW9kLm1hcC5pZDsKCiAgICAgICAgICAgIGlmIChtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgIG1vZC5lbWl0KCdlcnJvcicsIG1vZC5lcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0cmFjZWRbaWRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVhY2gobW9kLmRlcE1hcHMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVwSWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcCA9IGdldE93bihyZWdpc3RyeSwgZGVwSWQpOwoKICAgICAgICAgICAgICAgICAgICAvL09ubHkgZm9yY2UgdGhpbmdzIHRoYXQgaGF2ZSBub3QgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAgLy9iZWluZyBkZWZpbmVkLCBzbyBzdGlsbCBpbiB0aGUgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAgICAgLy9hbmQgb25seSBpZiBpdCBoYXMgbm90IGJlZW4gbWF0Y2hlZCB1cAogICAgICAgICAgICAgICAgICAgIC8vaW4gdGhlIG1vZHVsZSBhbHJlYWR5LgogICAgICAgICAgICAgICAgICAgIGlmIChkZXAgJiYgIW1vZC5kZXBNYXRjaGVkW2ldICYmICFwcm9jZXNzZWRbZGVwSWRdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRPd24odHJhY2VkLCBkZXBJZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5kZWZpbmVEZXAoaSwgZGVmaW5lZFtkZXBJZF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmNoZWNrKCk7IC8vcGFzcyBmYWxzZT8KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUoZGVwLCB0cmFjZWQsIHByb2Nlc3NlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHByb2Nlc3NlZFtpZF0gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjaGVja0xvYWRlZCgpIHsKICAgICAgICAgICAgdmFyIGVyciwgdXNpbmdQYXRoRmFsbGJhY2ssCiAgICAgICAgICAgICAgICB3YWl0SW50ZXJ2YWwgPSBjb25maWcud2FpdFNlY29uZHMgKiAxMDAwLAogICAgICAgICAgICAgICAgLy9JdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSB3YWl0IGludGVydmFsIGJ5IHVzaW5nIHdhaXRTZWNvbmRzIG9mIDAuCiAgICAgICAgICAgICAgICBleHBpcmVkID0gd2FpdEludGVydmFsICYmIChjb250ZXh0LnN0YXJ0VGltZSArIHdhaXRJbnRlcnZhbCkgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKICAgICAgICAgICAgICAgIG5vTG9hZHMgPSBbXSwKICAgICAgICAgICAgICAgIHJlcUNhbGxzID0gW10sCiAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgIG5lZWRDeWNsZUNoZWNrID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vRG8gbm90IGJvdGhlciBpZiB0aGlzIGNhbGwgd2FzIGEgcmVzdWx0IG9mIGEgY3ljbGUgYnJlYWsuCiAgICAgICAgICAgIGlmIChpbkNoZWNrTG9hZGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGluQ2hlY2tMb2FkZWQgPSB0cnVlOwoKICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIG1vZHVsZXMuCiAgICAgICAgICAgIGVhY2hQcm9wKGVuYWJsZWRSZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1vZC5tYXAsCiAgICAgICAgICAgICAgICAgICAgbW9kSWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgLy9Ta2lwIHRoaW5ncyB0aGF0IGFyZSBub3QgZW5hYmxlZCBvciBpbiBlcnJvciBzdGF0ZS4KICAgICAgICAgICAgICAgIGlmICghbW9kLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICByZXFDYWxscy5wdXNoKG1vZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGV4ZWN1dGVkLCBhbmQgaXQgaGFzIG5vdAogICAgICAgICAgICAgICAgICAgIC8vYmVlbiBpbml0ZWQgYW5kIHRpbWUgaXMgdXAsIHJlbWVtYmVyIGl0LgogICAgICAgICAgICAgICAgICAgIGlmICghbW9kLmluaXRlZCAmJiBleHBpcmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQYXRoRmFsbGJhY2sobW9kSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ1BhdGhGYWxsYmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9Mb2Fkcy5wdXNoKG1vZElkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChtb2RJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtb2QuaW5pdGVkICYmIG1vZC5mZXRjaGVkICYmIG1hcC5pc0RlZmluZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcC5wcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTm8gcmVhc29uIHRvIGtlZXAgbG9va2luZyBmb3IgdW5maW5pc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2FkaW5nLiBJZiB0aGUgb25seSBzdGlsbExvYWRpbmcgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wbHVnaW4gcmVzb3VyY2UgdGhvdWdoLCBrZWVwIGdvaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZWNhdXNlIGl0IG1heSBiZSB0aGF0IGEgcGx1Z2luIHJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lzIHdhaXRpbmcgb24gYSBub24tcGx1Z2luIGN5Y2xlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuZWVkQ3ljbGVDaGVjayA9IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoZXhwaXJlZCAmJiBub0xvYWRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgLy9JZiB3YWl0IHRpbWUgZXhwaXJlZCwgdGhyb3cgZXJyb3Igb2YgdW5sb2FkZWQgbW9kdWxlcy4KICAgICAgICAgICAgICAgIGVyciA9IG1ha2VFcnJvcigndGltZW91dCcsICdMb2FkIHRpbWVvdXQgZm9yIG1vZHVsZXM6ICcgKyBub0xvYWRzLCBudWxsLCBub0xvYWRzKTsKICAgICAgICAgICAgICAgIGVyci5jb250ZXh0TmFtZSA9IGNvbnRleHQuY29udGV4dE5hbWU7CiAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihlcnIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL05vdCBleHBpcmVkLCBjaGVjayBmb3IgYSBjeWNsZS4KICAgICAgICAgICAgaWYgKG5lZWRDeWNsZUNoZWNrKSB7CiAgICAgICAgICAgICAgICBlYWNoKHJlcUNhbGxzLCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWtDeWNsZShtb2QsIHt9LCB7fSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiBzdGlsbCB3YWl0aW5nIG9uIGxvYWRzLCBhbmQgdGhlIHdhaXRpbmcgbG9hZCBpcyBzb21ldGhpbmcKICAgICAgICAgICAgLy9vdGhlciB0aGFuIGEgcGx1Z2luIHJlc291cmNlLCBvciB0aGVyZSBhcmUgc3RpbGwgb3V0c3RhbmRpbmcKICAgICAgICAgICAgLy9zY3JpcHRzLCB0aGVuIGp1c3QgdHJ5IGJhY2sgbGF0ZXIuCiAgICAgICAgICAgIGlmICgoIWV4cGlyZWQgfHwgdXNpbmdQYXRoRmFsbGJhY2spICYmIHN0aWxsTG9hZGluZykgewogICAgICAgICAgICAgICAgLy9Tb21ldGhpbmcgaXMgc3RpbGwgd2FpdGluZyB0byBsb2FkLiBXYWl0IGZvciBpdCwgYnV0IG9ubHkKICAgICAgICAgICAgICAgIC8vaWYgYSB0aW1lb3V0IGlzIG5vdCBhbHJlYWR5IGluIGVmZmVjdC4KICAgICAgICAgICAgICAgIGlmICgoaXNCcm93c2VyIHx8IGlzV2ViV29ya2VyKSAmJiAhY2hlY2tMb2FkZWRUaW1lb3V0SWQpIHsKICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpbkNoZWNrTG9hZGVkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBNb2R1bGUgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRzID0gZ2V0T3duKHVuZGVmRXZlbnRzLCBtYXAuaWQpIHx8IHt9OwogICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDsKICAgICAgICAgICAgdGhpcy5zaGltID0gZ2V0T3duKGNvbmZpZy5zaGltLCBtYXAuaWQpOwogICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHMgPSBbXTsKICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0gW107CiAgICAgICAgICAgIHRoaXMuZGVwTWF0Y2hlZCA9IFtdOwogICAgICAgICAgICB0aGlzLnBsdWdpbk1hcHMgPSB7fTsKICAgICAgICAgICAgdGhpcy5kZXBDb3VudCA9IDA7CgogICAgICAgICAgICAvKiB0aGlzLmV4cG9ydHMgdGhpcy5mYWN0b3J5CiAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcyA9IFtdLAogICAgICAgICAgICAgICB0aGlzLmVuYWJsZWQsIHRoaXMuZmV0Y2hlZAogICAgICAgICAgICAqLwogICAgICAgIH07CgogICAgICAgIE1vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChkZXBNYXBzLCBmYWN0b3J5LCBlcnJiYWNrLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgICAgICAgICAvL0RvIG5vdCBkbyBtb3JlIGluaXRzIGlmIGFscmVhZHkgZG9uZS4gQ2FuIGhhcHBlbiBpZiB0aGVyZQogICAgICAgICAgICAgICAgLy9hcmUgbXVsdGlwbGUgZGVmaW5lIGNhbGxzIGZvciB0aGUgc2FtZSBtb2R1bGUuIFRoYXQgaXMgbm90CiAgICAgICAgICAgICAgICAvL2Egbm9ybWFsLCBjb21tb24gY2FzZSwgYnV0IGl0IGlzIGFsc28gbm90IHVuZXhwZWN0ZWQuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeTsKCiAgICAgICAgICAgICAgICBpZiAoZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIC8vUmVnaXN0ZXIgZm9yIGVycm9ycyBvbiB0aGlzIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCdlcnJvcicsIGVycmJhY2spOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbm8gZXJyYmFjayBhbHJlYWR5LCBidXQgdGhlcmUgYXJlIGVycm9yIGxpc3RlbmVycwogICAgICAgICAgICAgICAgICAgIC8vb24gdGhpcyBtb2R1bGUsIHNldCB1cCBhbiBlcnJiYWNrIHRvIHBhc3MgdG8gdGhlIGRlcHMuCiAgICAgICAgICAgICAgICAgICAgZXJyYmFjayA9IGJpbmQodGhpcywgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0RvIGEgY29weSBvZiB0aGUgZGVwZW5kZW5jeSBhcnJheSwgc28gdGhhdAogICAgICAgICAgICAgICAgLy9zb3VyY2UgaW5wdXRzIGFyZSBub3QgbW9kaWZpZWQuIEZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAvLyJzaGltIiBkZXBzIGFyZSBwYXNzZWQgaW4gaGVyZSBkaXJlY3RseSwgYW5kCiAgICAgICAgICAgICAgICAvL2RvaW5nIGEgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVwTWFwcyBhcnJheQogICAgICAgICAgICAgICAgLy93b3VsZCBhZmZlY3QgdGhhdCBjb25maWcuCiAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMgPSBkZXBNYXBzICYmIGRlcE1hcHMuc2xpY2UoMCk7CgogICAgICAgICAgICAgICAgdGhpcy5lcnJiYWNrID0gZXJyYmFjazsKCiAgICAgICAgICAgICAgICAvL0luZGljYXRlIHRoaXMgbW9kdWxlIGhhcyBiZSBpbml0aWFsaXplZAogICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIHRoaXMuaWdub3JlID0gb3B0aW9ucy5pZ25vcmU7CgogICAgICAgICAgICAgICAgLy9Db3VsZCBoYXZlIG9wdGlvbiB0byBpbml0IHRoaXMgbW9kdWxlIGluIGVuYWJsZWQgbW9kZSwKICAgICAgICAgICAgICAgIC8vb3IgY291bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgbWFya2VkIGFzIGVuYWJsZWQuIEhvd2V2ZXIsCiAgICAgICAgICAgICAgICAvL3RoZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB1bnRpbCBpbml0IGlzIGNhbGxlZC4gU28KICAgICAgICAgICAgICAgIC8vaWYgZW5hYmxlZCBwcmV2aW91c2x5LCBub3cgdHJpZ2dlciBkZXBlbmRlbmNpZXMgYXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmVuYWJsZWQgfHwgdGhpcy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgdGhpcyBtb2R1bGUgYW5kIGRlcGVuZGVuY2llcy4KICAgICAgICAgICAgICAgICAgICAvL1dpbGwgY2FsbCB0aGlzLmNoZWNrKCkKICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkZWZpbmVEZXA6IGZ1bmN0aW9uIChpLCBkZXBFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAvL0JlY2F1c2Ugb2YgY3ljbGVzLCBkZWZpbmVkIGNhbGxiYWNrIGZvciBhIGdpdmVuCiAgICAgICAgICAgICAgICAvL2V4cG9ydCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlcE1hdGNoZWRbaV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWRbaV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwQ291bnQgLT0gMTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBkZXBFeHBvcnRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZmV0Y2g6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmZldGNoZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnRUaW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKCiAgICAgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5tYXA7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgbWFuYWdlciBpcyBmb3IgYSBwbHVnaW4gbWFuYWdlZCByZXNvdXJjZSwKICAgICAgICAgICAgICAgIC8vYXNrIHRoZSBwbHVnaW4gdG8gbG9hZCBpdCBub3cuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGltKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZSh0aGlzLm1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdWlsZENhbGxiYWNrOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfSkodGhpcy5zaGltLmRlcHMgfHwgW10sIGJpbmQodGhpcywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL1JlZ3VsYXIgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgdXJsID0gdGhpcy5tYXAudXJsOwoKICAgICAgICAgICAgICAgIC8vUmVndWxhciBkZXBlbmRlbmN5LgogICAgICAgICAgICAgICAgaWYgKCF1cmxGZXRjaGVkW3VybF0pIHsKICAgICAgICAgICAgICAgICAgICB1cmxGZXRjaGVkW3VybF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZCh0aGlzLm1hcC5pZCwgdXJsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDaGVja3MgaWYgdGhlIG1vZHVsZSBpcyByZWFkeSB0byBkZWZpbmUgaXRzZWxmLCBhbmQgaWYgc28sCiAgICAgICAgICAgICAqIGRlZmluZSBpdC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNoZWNrOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmVuYWJsaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBlcnIsIGNqc01vZHVsZSwKICAgICAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwLmlkLAogICAgICAgICAgICAgICAgICAgIGRlcEV4cG9ydHMgPSB0aGlzLmRlcEV4cG9ydHMsCiAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0cywKICAgICAgICAgICAgICAgICAgICBmYWN0b3J5ID0gdGhpcy5mYWN0b3J5OwoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGZldGNoIGlmIG5vdCBhbHJlYWR5IGluIHRoZSBkZWZRdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoY29udGV4dC5kZWZRdWV1ZU1hcCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5lcnJvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRlZmluaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgLy9UaGUgZmFjdG9yeSBjb3VsZCB0cmlnZ2VyIGFub3RoZXIgcmVxdWlyZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgLy90aGF0IHdvdWxkIHJlc3VsdCBpbiBjaGVja2luZyB0aGlzIG1vZHVsZSB0bwogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lIGl0c2VsZiBhZ2Fpbi4gSWYgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcwogICAgICAgICAgICAgICAgICAgIC8vb2YgZG9pbmcgdGhhdCwgc2tpcCB0aGlzIHdvcmsuCiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlcENvdW50IDwgMSAmJiAhdGhpcy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGZhY3RvcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGlzIGFuIGVycm9yIGxpc3RlbmVyLCBmYXZvciBwYXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoYXQgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci4gSG93ZXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25seSBkbyBpdCBmb3IgZGVmaW5lKCknZCAgbW9kdWxlcy4gcmVxdWlyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lcnJiYWNrcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgZmFpbHVyZXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlaXIgY2FsbGJhY2tzICgjNjk5KS4gSG93ZXZlciBpZiBhIGdsb2JhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9vbkVycm9yIGlzIHNldCwgdXNlIHRoYXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuZXZlbnRzLmVycm9yICYmIHRoaXMubWFwLmlzRGVmaW5lKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5vbkVycm9yICE9PSBkZWZhdWx0T25FcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0LmV4ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGNvbnRleHQuZXhlY0NiKGlkLCBmYWN0b3J5LCBkZXBFeHBvcnRzLCBleHBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYXZvciByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzLiBJZiBub2RlL2NqcyBpbiBwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3aWxsIG5vdCBoYXZlIGEgcmV0dXJuIHZhbHVlIGFueXdheS4gRmF2b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRzIGFzc2lnbm1lbnQgb3ZlciBleHBvcnRzIG9iamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC5pc0RlZmluZSAmJiBleHBvcnRzID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSB0aGlzLm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjanNNb2R1bGUuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNpbmdFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhwb3J0cyBhbHJlYWR5IHNldCB0aGUgZGVmaW5lZCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlTWFwID0gdGhpcy5tYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnJlcXVpcmVNb2R1bGVzID0gdGhpcy5tYXAuaXNEZWZpbmUgPyBbdGhpcy5tYXAuaWRdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZVR5cGUgPSB0aGlzLm1hcC5pc0RlZmluZSA/ICdkZWZpbmUnIDogJ3JlcXVpcmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKCh0aGlzLmVycm9yID0gZXJyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgbGl0ZXJhbCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGZhY3Rvcnk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0cyA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXAuaXNEZWZpbmUgJiYgIXRoaXMuaWdub3JlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW2lkXSA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5vblJlc291cmNlTG9hZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNMb2FkTWFwcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc0xvYWRNYXBzLnB1c2goZGVwTWFwLm5vcm1hbGl6ZWRNYXAgfHwgZGVwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEub25SZXNvdXJjZUxvYWQoY29udGV4dCwgdGhpcy5tYXAsIHJlc0xvYWRNYXBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9DbGVhbiB1cAogICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0ZpbmlzaGVkIHRoZSBkZWZpbmUgc3RhZ2UuIEFsbG93IGNhbGxpbmcgY2hlY2sgYWdhaW4KICAgICAgICAgICAgICAgICAgICAvL3RvIGFsbG93IGRlZmluZSBub3RpZmljYXRpb25zIGJlbG93IGluIHRoZSBjYXNlIG9mIGEKICAgICAgICAgICAgICAgICAgICAvL2N5Y2xlLgogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5pbmcgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmaW5lZCAmJiAhdGhpcy5kZWZpbmVFbWl0dGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdHRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZGVmaW5lZCcsIHRoaXMuZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdENvbXBsZXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY2FsbFBsdWdpbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMubWFwLAogICAgICAgICAgICAgICAgICAgIGlkID0gbWFwLmlkLAogICAgICAgICAgICAgICAgICAgIC8vTWFwIGFscmVhZHkgbm9ybWFsaXplZCB0aGUgcHJlZml4LgogICAgICAgICAgICAgICAgICAgIHBsdWdpbk1hcCA9IG1ha2VNb2R1bGVNYXAobWFwLnByZWZpeCk7CgogICAgICAgICAgICAgICAgLy9NYXJrIHRoaXMgYXMgYSBkZXBlbmRlbmN5IGZvciB0aGlzIHBsdWdpbiwgc28gaXQKICAgICAgICAgICAgICAgIC8vY2FuIGJlIHRyYWNlZCBmb3IgY3ljbGVzLgogICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gocGx1Z2luTWFwKTsKCiAgICAgICAgICAgICAgICBvbihwbHVnaW5NYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxvYWQsIG5vcm1hbGl6ZWRNYXAsIG5vcm1hbGl6ZWRNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZUlkID0gZ2V0T3duKGJ1bmRsZXNNYXAsIHRoaXMubWFwLmlkKSwKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMubWFwLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5hbWUgPSB0aGlzLm1hcC5wYXJlbnRNYXAgPyB0aGlzLm1hcC5wYXJlbnRNYXAubmFtZSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobWFwLnBhcmVudE1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnVpbGRDYWxsYmFjazogdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9JZiBjdXJyZW50IG1hcCBpcyBub3Qgbm9ybWFsaXplZCwgd2FpdCBmb3IgdGhhdAogICAgICAgICAgICAgICAgICAgIC8vbm9ybWFsaXplZCBuYW1lIHRvIGxvYWQgaW5zdGVhZCBvZiBjb250aW51aW5nLgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC51bm5vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhlIElEIGlmIHRoZSBwbHVnaW4gYWxsb3dzIGl0LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luLm5vcm1hbGl6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBsdWdpbi5ub3JtYWxpemUobmFtZSwgZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJlZml4IGFuZCBuYW1lIHNob3VsZCBhbHJlYWR5IGJlIG5vcm1hbGl6ZWQsIG5vIG5lZWQKICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3IgYXBwbHlpbmcgbWFwIGNvbmZpZyBhZ2FpbiBlaXRoZXIuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXggKyAnIScgKyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wYXJlbnRNYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBvbihub3JtYWxpemVkTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQnLCBiaW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLm5vcm1hbGl6ZWRNYXAgPSBub3JtYWxpemVkTWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBub3JtYWxpemVkTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRNb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBwbHVnaW4sIHNvIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NhbiBiZSB0cmFjZWQgZm9yIGN5Y2xlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKG5vcm1hbGl6ZWRNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2Qub24oJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2QuZW5hYmxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vSWYgYSBwYXRocyBjb25maWcsIHRoZW4ganVzdCBsb2FkIHRoYXQgZmlsZSBpbnN0ZWFkIHRvCiAgICAgICAgICAgICAgICAgICAgLy9yZXNvbHZlIHRoZSBwbHVnaW4sIGFzIGl0IGlzIGJ1aWx0IGludG8gdGhhdCBwYXRocyBsYXllci4KICAgICAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudXJsID0gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbG9hZCA9IGJpbmQodGhpcywgZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGxvYWQuZXJyb3IgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZU1vZHVsZXMgPSBbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9SZW1vdmUgdGVtcCB1bm5vcm1hbGl6ZWQgbW9kdWxlcyBmb3IgdGhpcyBtb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2luY2UgdGhleSB3aWxsIG5ldmVyIGJlIHJlc29sdmVkIG90aGVyd2lzZSBub3cuCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLm1hcC5pZC5pbmRleE9mKGlkICsgJ191bm5vcm1hbGl6ZWQnKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuUmVnaXN0cnkobW9kLm1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL0FsbG93IHBsdWdpbnMgdG8gbG9hZCBvdGhlciBjb2RlIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdGhlCiAgICAgICAgICAgICAgICAgICAgLy9jb250ZXh0IG9yIGhvdyB0byAnY29tcGxldGUnIHRoZSBsb2FkLgogICAgICAgICAgICAgICAgICAgIGxvYWQuZnJvbVRleHQgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uICh0ZXh0LCB0ZXh0QWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZHVsZU5hbWUgPSBtYXAubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU1hcCA9IG1ha2VNb2R1bGVNYXAobW9kdWxlTmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGl2ZSA9IHVzZUludGVyYWN0aXZlOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9BcyBvZiAyLjEuMCwgc3VwcG9ydCBqdXN0IHBhc3NpbmcgdGhlIHRleHQsIHRvIHJlaW5mb3JjZQogICAgICAgICAgICAgICAgICAgICAgICAvL2Zyb21UZXh0IG9ubHkgYmVpbmcgY2FsbGVkIG9uY2UgcGVyIHJlc291cmNlLiBTdGlsbAogICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvcnQgb2xkIHN0eWxlIG9mIHBhc3NpbmcgbW9kdWxlTmFtZSBidXQgZGlzY2FyZAogICAgICAgICAgICAgICAgICAgICAgICAvL3RoYXQgbW9kdWxlTmFtZSBpbiBmYXZvciBvZiB0aGUgaW50ZXJuYWwgcmVmLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEFsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHRBbHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vVHVybiBvZmYgaW50ZXJhY3RpdmUgc2NyaXB0IG1hdGNoaW5nIGZvciBJRSBmb3IgYW55IGRlZmluZQogICAgICAgICAgICAgICAgICAgICAgICAvL2NhbGxzIGluIHRoZSB0ZXh0LCB0aGVuIHR1cm4gaXQgYmFjayBvbiBhdCB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUHJpbWUgdGhlIHN5c3RlbSBieSBjcmVhdGluZyBhIG1vZHVsZSBpbnN0YW5jZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgLy9pdC4KICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1vZHVsZU1hcCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1RyYW5zZmVyIGFueSBjb25maWcgdG8gdGhpcyBvdGhlciBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQcm9wKGNvbmZpZy5jb25maWcsIGlkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNvbmZpZ1ttb2R1bGVOYW1lXSA9IGNvbmZpZy5jb25maWdbaWRdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLmV4ZWModGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignZnJvbXRleHRldmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb21UZXh0IGV2YWwgZm9yICcgKyBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmYWlsZWQ6ICcgKyBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlSW50ZXJhY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoZSBwbHVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMucHVzaChtb2R1bGVNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TdXBwb3J0IGFub255bW91cyBtb2R1bGVzLgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCB0aGUgdmFsdWUgb2YgdGhhdCBtb2R1bGUgdG8gdGhlIHZhbHVlIGZvciB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzb3VyY2UgSUQuCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZShbbW9kdWxlTmFtZV0sIGxvYWQpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL1VzZSBwYXJlbnROYW1lIGhlcmUgc2luY2UgdGhlIHBsdWdpbidzIG5hbWUgaXMgbm90IHJlbGlhYmxlLAogICAgICAgICAgICAgICAgICAgIC8vY291bGQgYmUgc29tZSB3ZWlyZCBzdHJpbmcgd2l0aCBubyBwYXRoIHRoYXQgYWN0dWFsbHkgd2FudHMgdG8KICAgICAgICAgICAgICAgICAgICAvL3JlZmVyZW5jZSB0aGUgcGFyZW50TmFtZSdzIHBhdGguCiAgICAgICAgICAgICAgICAgICAgcGx1Z2luLmxvYWQobWFwLm5hbWUsIGxvY2FsUmVxdWlyZSwgbG9hZCwgY29uZmlnKTsKICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5NYXBzW3BsdWdpbk1hcC5pZF0gPSBwbHVnaW5NYXA7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeVt0aGlzLm1hcC5pZF0gPSB0aGlzOwogICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL1NldCBmbGFnIG1lbnRpb25pbmcgdGhhdCB0aGUgbW9kdWxlIGlzIGVuYWJsaW5nLAogICAgICAgICAgICAgICAgLy9zbyB0aGF0IGltbWVkaWF0ZSBjYWxscyB0byB0aGUgZGVmaW5lZCBjYWxsYmFja3MKICAgICAgICAgICAgICAgIC8vZm9yIGRlcGVuZGVuY2llcyBkbyBub3QgdHJpZ2dlciBpbmFkdmVydGVudCBsb2FkCiAgICAgICAgICAgICAgICAvL3dpdGggdGhlIGRlcENvdW50IHN0aWxsIGJlaW5nIHplcm8uCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL0VuYWJsZSBlYWNoIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBiaW5kKHRoaXMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQsIG1vZCwgaGFuZGxlcjsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBNYXAgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVwZW5kZW5jeSBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBkZXBNYXAKICAgICAgICAgICAgICAgICAgICAgICAgLy9hbmQgd2lyZWQgdXAgdG8gdGhpcyBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcE1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1hcC5pc0RlZmluZSA/IHRoaXMubWFwIDogdGhpcy5tYXAucGFyZW50TWFwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5za2lwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzW2ldID0gZGVwTWFwOwoKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGdldE93bihoYW5kbGVycywgZGVwTWFwLmlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBoYW5kbGVyKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcENvdW50ICs9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZGVwRXhwb3J0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5kZWZlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRGVwKGksIGRlcEV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lcnJiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdlcnJvcicsIGJpbmQodGhpcywgdGhpcy5lcnJiYWNrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGRpcmVjdCBlcnJiYWNrIG9uIHRoaXMgbW9kdWxlLCBidXQgc29tZXRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIGlzIGxpc3RlbmluZyBmb3IgZXJyb3JzLCBzbyBiZSBzdXJlIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9wYWdhdGUgdGhlIGVycm9yIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uKGRlcE1hcCwgJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWQgPSBkZXBNYXAuaWQ7CiAgICAgICAgICAgICAgICAgICAgbW9kID0gcmVnaXN0cnlbaWRdOwoKICAgICAgICAgICAgICAgICAgICAvL1NraXAgc3BlY2lhbCBtb2R1bGVzIGxpa2UgJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdtb2R1bGUnCiAgICAgICAgICAgICAgICAgICAgLy9BbHNvLCBkb24ndCBjYWxsIGVuYWJsZSBpZiBpdCBpcyBhbHJlYWR5IGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgLy9pbXBvcnRhbnQgaW4gY2lyY3VsYXIgZGVwZW5kZW5jeSBjYXNlcy4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoaGFuZGxlcnMsIGlkKSAmJiBtb2QgJiYgIW1vZC5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlKGRlcE1hcCwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgIC8vRW5hYmxlIGVhY2ggcGx1Z2luIHRoYXQgaXMgdXNlZCBpbgogICAgICAgICAgICAgICAgLy9hIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2hQcm9wKHRoaXMucGx1Z2luTWFwcywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgcGx1Z2luTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kICYmICFtb2QuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gZmFsc2U7CgogICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgb246IGZ1bmN0aW9uIChuYW1lLCBjYikgewogICAgICAgICAgICAgICAgdmFyIGNicyA9IHRoaXMuZXZlbnRzW25hbWVdOwogICAgICAgICAgICAgICAgaWYgKCFjYnMpIHsKICAgICAgICAgICAgICAgICAgICBjYnMgPSB0aGlzLmV2ZW50c1tuYW1lXSA9IFtdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2JzLnB1c2goY2IpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZW1pdDogZnVuY3Rpb24gKG5hbWUsIGV2dCkgewogICAgICAgICAgICAgICAgZWFjaCh0aGlzLmV2ZW50c1tuYW1lXSwgZnVuY3Rpb24gKGNiKSB7CiAgICAgICAgICAgICAgICAgICAgY2IoZXZ0KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICAvL05vdyB0aGF0IHRoZSBlcnJvciBoYW5kbGVyIHdhcyB0cmlnZ2VyZWQsIHJlbW92ZQogICAgICAgICAgICAgICAgICAgIC8vdGhlIGxpc3RlbmVycywgc2luY2UgdGhpcyBicm9rZW4gTW9kdWxlIGluc3RhbmNlCiAgICAgICAgICAgICAgICAgICAgLy9jYW4gc3RheSBhcm91bmQgZm9yIGEgd2hpbGUgaW4gdGhlIHJlZ2lzdHJ5LgogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50c1tuYW1lXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIGNhbGxHZXRNb2R1bGUoYXJncykgewogICAgICAgICAgICAvL1NraXAgbW9kdWxlcyBhbHJlYWR5IGRlZmluZWQuCiAgICAgICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBhcmdzWzBdKSkgewogICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAoYXJnc1swXSwgbnVsbCwgdHJ1ZSkpLmluaXQoYXJnc1sxXSwgYXJnc1syXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGZ1bmMsIG5hbWUsIGllTmFtZSkgewogICAgICAgICAgICAvL0Zhdm9yIGRldGFjaEV2ZW50IGJlY2F1c2Ugb2YgSUU5CiAgICAgICAgICAgIC8vaXNzdWUsIHNlZSBhdHRhY2hFdmVudC9hZGRFdmVudExpc3RlbmVyIGNvbW1lbnQgZWxzZXdoZXJlCiAgICAgICAgICAgIC8vaW4gdGhpcyBmaWxlLgogICAgICAgICAgICBpZiAobm9kZS5kZXRhY2hFdmVudCAmJiAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSWYgbm90IGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IsIHdoaWNoIHdpbGwgYmUKICAgICAgICAgICAgICAgIC8vdXNlZnVsIHRvIGtub3cuCiAgICAgICAgICAgICAgICBpZiAoaWVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZS5kZXRhY2hFdmVudChpZU5hbWUsIGZ1bmMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogR2l2ZW4gYW4gZXZlbnQgZnJvbSBhIHNjcmlwdCBub2RlLCBnZXQgdGhlIHJlcXVpcmVqcyBpbmZvIGZyb20gaXQsCiAgICAgICAgICogYW5kIHRoZW4gcmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBub2RlLgogICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dAogICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0U2NyaXB0RGF0YShldnQpIHsKICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAvL2FsbCBvbGQgYnJvd3NlcnMgd2lsbCBiZSBzdXBwb3J0ZWQsIGJ1dCB0aGlzIG9uZSB3YXMgZWFzeSBlbm91Z2gKICAgICAgICAgICAgLy90byBzdXBwb3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KICAgICAgICAgICAgdmFyIG5vZGUgPSBldnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudDsKCiAgICAgICAgICAgIC8vUmVtb3ZlIHRoZSBsaXN0ZW5lcnMgb25jZSBoZXJlLgogICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgJ2xvYWQnLCAnb25yZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGNvbnRleHQub25TY3JpcHRFcnJvciwgJ2Vycm9yJyk7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgbm9kZTogbm9kZSwKICAgICAgICAgICAgICAgIGlkOiBub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaW50YWtlRGVmaW5lcygpIHsKICAgICAgICAgICAgdmFyIGFyZ3M7CgogICAgICAgICAgICAvL0FueSBkZWZpbmVkIG1vZHVsZXMgaW4gdGhlIGdsb2JhbCBxdWV1ZSwgaW50YWtlIHRoZW0gbm93LgogICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgIC8vTWFrZSBzdXJlIGFueSByZW1haW5pbmcgZGVmUXVldWUgaXRlbXMgZ2V0IHByb3Blcmx5IHByb2Nlc3NlZC4KICAgICAgICAgICAgd2hpbGUgKGRlZlF1ZXVlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignbWlzbWF0Y2gnLCAnTWlzbWF0Y2hlZCBhbm9ueW1vdXMgZGVmaW5lKCkgbW9kdWxlOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vYXJncyBhcmUgaWQsIGRlcHMsIGZhY3RvcnkuIFNob3VsZCBiZSBub3JtYWxpemVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lKCkgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShhcmdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlTWFwID0ge307CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICBjb25maWc6IGNvbmZpZywKICAgICAgICAgICAgY29udGV4dE5hbWU6IGNvbnRleHROYW1lLAogICAgICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksCiAgICAgICAgICAgIGRlZmluZWQ6IGRlZmluZWQsCiAgICAgICAgICAgIHVybEZldGNoZWQ6IHVybEZldGNoZWQsCiAgICAgICAgICAgIGRlZlF1ZXVlOiBkZWZRdWV1ZSwKICAgICAgICAgICAgZGVmUXVldWVNYXA6IHt9LAogICAgICAgICAgICBNb2R1bGU6IE1vZHVsZSwKICAgICAgICAgICAgbWFrZU1vZHVsZU1hcDogbWFrZU1vZHVsZU1hcCwKICAgICAgICAgICAgbmV4dFRpY2s6IHJlcS5uZXh0VGljaywKICAgICAgICAgICAgb25FcnJvcjogb25FcnJvciwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBTZXQgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY29udGV4dC4KICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBjb25maWcgb2JqZWN0IHRvIGludGVncmF0ZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24gKGNmZykgewogICAgICAgICAgICAgICAgLy9NYWtlIHN1cmUgdGhlIGJhc2VVcmwgZW5kcyBpbiBhIHNsYXNoLgogICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsLmNoYXJBdChjZmcuYmFzZVVybC5sZW5ndGggLSAxKSAhPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNmZy5iYXNlVXJsICs9ICcvJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQ29udmVydCBvbGQgc3R5bGUgdXJsQXJncyBzdHJpbmcgdG8gYSBmdW5jdGlvbi4KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2ZnLnVybEFyZ3MgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHVybEFyZ3MgPSBjZmcudXJsQXJnczsKICAgICAgICAgICAgICAgICAgICBjZmcudXJsQXJncyA9IGZ1bmN0aW9uKGlkLCB1cmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyB1cmxBcmdzOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9TYXZlIG9mZiB0aGUgcGF0aHMgc2luY2UgdGhleSByZXF1aXJlIHNwZWNpYWwgcHJvY2Vzc2luZywKICAgICAgICAgICAgICAgIC8vdGhleSBhcmUgYWRkaXRpdmUuCiAgICAgICAgICAgICAgICB2YXIgc2hpbSA9IGNvbmZpZy5zaGltLAogICAgICAgICAgICAgICAgICAgIG9ianMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAob2Jqc1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZ1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4oY29uZmlnW3Byb3BdLCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9SZXZlcnNlIG1hcCB0aGUgYnVuZGxlcwogICAgICAgICAgICAgICAgaWYgKGNmZy5idW5kbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLmJ1bmRsZXMsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHZhbHVlLCBmdW5jdGlvbiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgIT09IHByb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzTWFwW3ZdID0gcHJvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9NZXJnZSBzaGltCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnNoaW0pIHsKICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChjZmcuc2hpbSwgZnVuY3Rpb24gKHZhbHVlLCBpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZSB0aGUgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwczogdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5leHBvcnRzIHx8IHZhbHVlLmluaXQpICYmICF2YWx1ZS5leHBvcnRzRm4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmV4cG9ydHNGbiA9IGNvbnRleHQubWFrZVNoaW1FeHBvcnRzKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzaGltW2lkXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zaGltID0gc2hpbTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0FkanVzdCBwYWNrYWdlcyBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnBhY2thZ2VzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaChjZmcucGFja2FnZXMsIGZ1bmN0aW9uIChwa2dPYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uLCBuYW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgcGtnT2JqID0gdHlwZW9mIHBrZ09iaiA9PT0gJ3N0cmluZycgPyB7bmFtZTogcGtnT2JqfSA6IHBrZ09iajsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwa2dPYmoubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBwa2dPYmoubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzW25hbWVdID0gcGtnT2JqLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1NhdmUgcG9pbnRlciB0byBtYWluIG1vZHVsZSBJRCBmb3IgcGtnIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVtb3ZlIGxlYWRpbmcgZG90IGluIG1haW4sIHNvIG1haW4gcGF0aHMgYXJlIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5kIHJlbW92ZSBhbnkgdHJhaWxpbmcgLmpzLCBzaW5jZSBkaWZmZXJlbnQgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICAgICAvL2VudnMgaGF2ZSBkaWZmZXJlbnQgY29udmVudGlvbnM6IHNvbWUgdXNlIGEgbW9kdWxlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc29tZSB1c2UgYSBmaWxlIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wa2dzW25hbWVdID0gcGtnT2JqLm5hbWUgKyAnLycgKyAocGtnT2JqLm1haW4gfHwgJ21haW4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoY3VyckRpclJlZ0V4cCwgJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIGFueSAid2FpdGluZyB0byBleGVjdXRlIiBtb2R1bGVzIGluIHRoZSByZWdpc3RyeSwKICAgICAgICAgICAgICAgIC8vdXBkYXRlIHRoZSBtYXBzIGZvciB0aGVtLCBzaW5jZSB0aGVpciBpbmZvLCBsaWtlIFVSTHMgdG8gbG9hZCwKICAgICAgICAgICAgICAgIC8vbWF5IGhhdmUgY2hhbmdlZC4KICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kLCBpZCkgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbW9kdWxlIGFscmVhZHkgaGFzIGluaXQgY2FsbGVkLCBzaW5jZSBpdCBpcyB0b28KICAgICAgICAgICAgICAgICAgICAvL2xhdGUgdG8gbW9kaWZ5IHRoZW0sIGFuZCBpZ25vcmUgdW5ub3JtYWxpemVkIG9uZXMKICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgYXJlIHRyYW5zaWVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZC5pbml0ZWQgJiYgIW1vZC5tYXAudW5ub3JtYWxpemVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5tYXAgPSBtYWtlTW9kdWxlTWFwKGlkLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL0lmIGEgZGVwcyBhcnJheSBvciBhIGNvbmZpZyBjYWxsYmFjayBpcyBzcGVjaWZpZWQsIHRoZW4gY2FsbAogICAgICAgICAgICAgICAgLy9yZXF1aXJlIHdpdGggdGhvc2UgYXJncy4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXF1aXJlIGlzIGRlZmluZWQgYXMgYQogICAgICAgICAgICAgICAgLy9jb25maWcgb2JqZWN0IGJlZm9yZSByZXF1aXJlLmpzIGlzIGxvYWRlZC4KICAgICAgICAgICAgICAgIGlmIChjZmcuZGVwcyB8fCBjZmcuY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUoY2ZnLmRlcHMgfHwgW10sIGNmZy5jYWxsYmFjayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtYWtlU2hpbUV4cG9ydHM6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZm4oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJldDsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaW5pdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB2YWx1ZS5pbml0LmFwcGx5KGdsb2JhbCwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCB8fCAodmFsdWUuZXhwb3J0cyAmJiBnZXRHbG9iYWwodmFsdWUuZXhwb3J0cykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZuOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWFrZVJlcXVpcmU6IGZ1bmN0aW9uIChyZWxNYXAsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxvY2FsUmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIHZhciBpZCwgbWFwLCByZXF1aXJlTW9kOwoKICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVCdWlsZENhbGxiYWNrICYmIGNhbGxiYWNrICYmIGlzRnVuY3Rpb24oY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLl9fcmVxdWlyZUpzQnVpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxsYmFjaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSW52YWxpZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3JlcXVpcmVhcmdzJywgJ0ludmFsaWQgcmVxdWlyZSBjYWxsJyksIGVycmJhY2spOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHJlcXVpcmV8ZXhwb3J0c3xtb2R1bGUgYXJlIHJlcXVlc3RlZCwgZ2V0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3ZhbHVlIGZvciB0aGVtIGZyb20gdGhlIHNwZWNpYWwgaGFuZGxlcnMuIENhdmVhdDoKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG9ubHkgd29ya3Mgd2hpbGUgbW9kdWxlIGlzIGJlaW5nIGRlZmluZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxNYXAgJiYgaGFzUHJvcChoYW5kbGVycywgZGVwcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyc1tkZXBzXShyZWdpc3RyeVtyZWxNYXAuaWRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TeW5jaHJvbm91cyBhY2Nlc3MgdG8gb25lIG1vZHVsZS4gSWYgcmVxdWlyZS5nZXQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgLy9hdmFpbGFibGUgKGFzIGluIHRoZSBOb2RlIGFkYXB0ZXIpLCBwcmVmZXIgdGhhdC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5nZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXEuZ2V0KGNvbnRleHQsIGRlcHMsIHJlbE1hcCwgbG9jYWxSZXF1aXJlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgbW9kdWxlIG5hbWUsIGlmIGl0IGNvbnRhaW5zIC4gb3IgLi4KICAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gbWFrZU1vZHVsZU1hcChkZXBzLCByZWxNYXAsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vdGxvYWRlZCcsICdNb2R1bGUgbmFtZSAiJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIiBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCBmb3IgY29udGV4dDogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVsTWFwID8gJycgOiAnLiBVc2UgcmVxdWlyZShbXSknKSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vR3JhYiBkZWZpbmVzIHdhaXRpbmcgaW4gdGhlIGdsb2JhbCBxdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgIC8vTWFyayBhbGwgdGhlIGRlcGVuZGVuY2llcyBhcyBuZWVkaW5nIHRvIGJlIGxvYWRlZC4KICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Tb21lIGRlZmluZXMgY291bGQgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3JlcXVpcmUgY2FsbCwgY29sbGVjdCB0aGVtLgogICAgICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kID0gZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAobnVsbCwgcmVsTWFwKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1N0b3JlIGlmIG1hcCBjb25maWcgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhpcyByZXF1aXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FsbCBmb3IgZGVwZW5kZW5jaWVzLgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLnNraXBNYXAgPSBvcHRpb25zLnNraXBNYXA7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLmluaXQoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxSZXF1aXJlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG1peGluKGxvY2FsUmVxdWlyZSwgewogICAgICAgICAgICAgICAgICAgIGlzQnJvd3NlcjogaXNCcm93c2VyLAoKICAgICAgICAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAgICAgICAgKiBDb252ZXJ0cyBhIG1vZHVsZSBuYW1lICsgLmV4dGVuc2lvbiBpbnRvIGFuIFVSTCBwYXRoLgogICAgICAgICAgICAgICAgICAgICAqICpSZXF1aXJlcyogdGhlIHVzZSBvZiBhIG1vZHVsZSBuYW1lLiBJdCBkb2VzIG5vdCBzdXBwb3J0IHVzaW5nCiAgICAgICAgICAgICAgICAgICAgICogcGxhaW4gVVJMcyBsaWtlIG5hbWVUb1VybC4KICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICB0b1VybDogZnVuY3Rpb24gKG1vZHVsZU5hbWVQbHVzRXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IG1vZHVsZU5hbWVQbHVzRXh0Lmxhc3RJbmRleE9mKCcuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3BsaXQoJy8nKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVsYXRpdmUgPSBzZWdtZW50ID09PSAnLicgfHwgc2VnbWVudCA9PT0gJy4uJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vSGF2ZSBhIGZpbGUgZXh0ZW5zaW9uIGFsaWFzLCBhbmQgaXQgaXMgbm90IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL2RvdHMgZnJvbSBhIHJlbGF0aXZlIHBhdGguCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgKCFpc1JlbGF0aXZlIHx8IGluZGV4ID4gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZyhpbmRleCwgbW9kdWxlTmFtZVBsdXNFeHQubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWVQbHVzRXh0ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3Vic3RyaW5nKDAsIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZShtb2R1bGVOYW1lUGx1c0V4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsTWFwICYmIHJlbE1hcC5pZCwgdHJ1ZSksIGV4dCwgIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgIGRlZmluZWQ6IGZ1bmN0aW9uIChpZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzUHJvcChkZWZpbmVkLCBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZCk7CiAgICAgICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkOiBmdW5jdGlvbiAoaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3AoZGVmaW5lZCwgaWQpIHx8IGhhc1Byb3AocmVnaXN0cnksIGlkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL09ubHkgYWxsb3cgdW5kZWYgb24gdG9wIGxldmVsIHJlcXVpcmUgY2FsbHMKICAgICAgICAgICAgICAgIGlmICghcmVsTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgbG9jYWxSZXF1aXJlLnVuZGVmID0gZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCBhbnkgd2FpdGluZyBkZWZpbmUoKSBjYWxscyB0byB0aGlzIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vZml4IGZvciAjNDA4CiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1ha2VNb2R1bGVNYXAoaWQsIHJlbE1hcCwgdHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC51bmRlZmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU2NyaXB0KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHVybEZldGNoZWRbbWFwLnVybF07CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1bmRlZkV2ZW50c1tpZF07CgogICAgICAgICAgICAgICAgICAgICAgICAvL0NsZWFuIHF1ZXVlZCBkZWZpbmVzIHRvby4gR28gYmFja3dhcmRzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vaW4gYXJyYXkgc28gdGhhdCB0aGUgc3BsaWNlcyBkbyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgLy9tZXNzIHVwIHRoZSBpdGVyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hSZXZlcnNlKGRlZlF1ZXVlLCBmdW5jdGlvbihhcmdzLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hvbGQgb24gdG8gbGlzdGVuZXJzIGluIGNhc2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21vZHVsZSB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSByZWxvYWRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91c2luZyBhIGRpZmZlcmVudCBjb25maWcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZFdmVudHNbaWRdID0gbW9kLmV2ZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsZWQgdG8gZW5hYmxlIGEgbW9kdWxlIGlmIGl0IGlzIHN0aWxsIGluIHRoZSByZWdpc3RyeQogICAgICAgICAgICAgKiBhd2FpdGluZyBlbmFibGVtZW50LiBBIHNlY29uZCBhcmcsIHBhcmVudCwgdGhlIHBhcmVudCBtb2R1bGUsCiAgICAgICAgICAgICAqIGlzIHBhc3NlZCBpbiBmb3IgY29udGV4dCwgd2hlbiB0aGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5CiAgICAgICAgICAgICAqIHRoZSBvcHRpbWl6ZXIuIE5vdCBzaG93biBoZXJlIHRvIGtlZXAgY29kZSBjb21wYWN0LgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICB2YXIgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBkZXBNYXAuaWQpOwogICAgICAgICAgICAgICAgaWYgKG1vZCkgewogICAgICAgICAgICAgICAgICAgIGdldE1vZHVsZShkZXBNYXApLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEludGVybmFsIG1ldGhvZCB1c2VkIGJ5IGVudmlyb25tZW50IGFkYXB0ZXJzIHRvIGNvbXBsZXRlIGEgbG9hZCBldmVudC4KICAgICAgICAgICAgICogQSBsb2FkIGV2ZW50IGNvdWxkIGJlIGEgc2NyaXB0IGxvYWQgb3IganVzdCBhIGxvYWQgcGFzcyBmcm9tIGEgc3luY2hyb25vdXMKICAgICAgICAgICAgICogbG9hZCBjYWxsLgogICAgICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbW9kdWxlTmFtZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHBvdGVudGlhbGx5IGNvbXBsZXRlLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgY29tcGxldGVMb2FkOiBmdW5jdGlvbiAobW9kdWxlTmFtZSkgewogICAgICAgICAgICAgICAgdmFyIGZvdW5kLCBhcmdzLCBtb2QsCiAgICAgICAgICAgICAgICAgICAgc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbW9kdWxlTmFtZSkgfHwge30sCiAgICAgICAgICAgICAgICAgICAgc2hFeHBvcnRzID0gc2hpbS5leHBvcnRzOwoKICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgIHdoaWxlIChkZWZRdWV1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBhcmdzID0gZGVmUXVldWUuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdID0gbW9kdWxlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBhbHJlYWR5IGZvdW5kIGFuIGFub255bW91cyBtb2R1bGUgYW5kIGJvdW5kIGl0CiAgICAgICAgICAgICAgICAgICAgICAgIC8vdG8gdGhpcyBuYW1lLCB0aGVuIHRoaXMgaXMgc29tZSBvdGhlciBhbm9uIG1vZHVsZQogICAgICAgICAgICAgICAgICAgICAgICAvL3dhaXRpbmcgZm9yIGl0cyBjb21wbGV0ZUxvYWQgdG8gZmlyZS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzWzBdID09PSBtb2R1bGVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRm91bmQgbWF0Y2hpbmcgZGVmaW5lIGNhbGwgZm9yIHRoaXMgc2NyaXB0IQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjYWxsR2V0TW9kdWxlKGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcCA9IHt9OwoKICAgICAgICAgICAgICAgIC8vRG8gdGhpcyBhZnRlciB0aGUgY3ljbGUgb2YgY2FsbEdldE1vZHVsZSBpbiBjYXNlIHRoZSByZXN1bHQKICAgICAgICAgICAgICAgIC8vb2YgdGhvc2UgY2FsbHMvaW5pdCBjYWxscyBjaGFuZ2VzIHRoZSByZWdpc3RyeS4KICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZCAmJiAhaGFzUHJvcChkZWZpbmVkLCBtb2R1bGVOYW1lKSAmJiBtb2QgJiYgIW1vZC5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmVuZm9yY2VEZWZpbmUgJiYgKCFzaEV4cG9ydHMgfHwgIWdldEdsb2JhbChzaEV4cG9ydHMpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUGF0aEZhbGxiYWNrKG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vZGVmaW5lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIGRlZmluZSBjYWxsIGZvciAnICsgbW9kdWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvL0Egc2NyaXB0IHRoYXQgZG9lcyBub3QgY2FsbCBkZWZpbmUoKSwgc28ganVzdCBzaW11bGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAvL3RoZSBjYWxsIGZvciBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShbbW9kdWxlTmFtZSwgKHNoaW0uZGVwcyB8fCBbXSksIHNoaW0uZXhwb3J0c0ZuXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ29udmVydHMgYSBtb2R1bGUgbmFtZSB0byBhIGZpbGUgcGF0aC4gU3VwcG9ydHMgY2FzZXMgd2hlcmUKICAgICAgICAgICAgICogbW9kdWxlTmFtZSBtYXkgYWN0dWFsbHkgYmUganVzdCBhbiBVUkwuCiAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpdCAqKmRvZXMgbm90KiogY2FsbCBub3JtYWxpemUgb24gdGhlIG1vZHVsZU5hbWUsCiAgICAgICAgICAgICAqIGl0IGlzIGFzc3VtZWQgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gVGhpcyBpcyBhbgogICAgICAgICAgICAgKiBpbnRlcm5hbCBBUEksIG5vdCBhIHB1YmxpYyBvbmUuIFVzZSB0b1VybCBmb3IgdGhlIHB1YmxpYyBBUEkuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBuYW1lVG9Vcmw6IGZ1bmN0aW9uIChtb2R1bGVOYW1lLCBleHQsIHNraXBFeHQpIHsKICAgICAgICAgICAgICAgIHZhciBwYXRocywgc3ltcywgaSwgcGFyZW50TW9kdWxlLCB1cmwsCiAgICAgICAgICAgICAgICAgICAgcGFyZW50UGF0aCwgYnVuZGxlSWQsCiAgICAgICAgICAgICAgICAgICAgcGtnTWFpbiA9IGdldE93bihjb25maWcucGtncywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKHBrZ01haW4pIHsKICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lID0gcGtnTWFpbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBidW5kbGVJZCA9IGdldE93bihidW5kbGVzTWFwLCBtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQsIGV4dCwgc2tpcEV4dCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9JZiBhIGNvbG9uIGlzIGluIHRoZSBVUkwsIGl0IGluZGljYXRlcyBhIHByb3RvY29sIGlzIHVzZWQgYW5kIGl0IGlzIGp1c3QKICAgICAgICAgICAgICAgIC8vYW4gVVJMIHRvIGEgZmlsZSwgb3IgaWYgaXQgc3RhcnRzIHdpdGggYSBzbGFzaCwgY29udGFpbnMgYSBxdWVyeSBhcmcgKGkuZS4gPykKICAgICAgICAgICAgICAgIC8vb3IgZW5kcyB3aXRoIC5qcywgdGhlbiBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8gdXNlIGFuIHVybCBhbmQgbm90IGEgbW9kdWxlIGlkLgogICAgICAgICAgICAgICAgLy9UaGUgc2xhc2ggaXMgaW1wb3J0YW50IGZvciBwcm90b2NvbC1sZXNzIFVSTHMgYXMgd2VsbCBhcyBmdWxsIHBhdGhzLgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgcGxhaW4gcGF0aCwgbm90IG1vZHVsZSBuYW1lIGxvb2t1cCwgc28ganVzdCByZXR1cm4gaXQuCiAgICAgICAgICAgICAgICAgICAgLy9BZGQgZXh0ZW5zaW9uIGlmIGl0IGlzIGluY2x1ZGVkLiBUaGlzIGlzIGEgYml0IHdvbmt5LCBvbmx5IG5vbi0uanMgdGhpbmdzIHBhc3MKICAgICAgICAgICAgICAgICAgICAvL2FuIGV4dGVuc2lvbiwgdGhpcyBtZXRob2QgcHJvYmFibHkgbmVlZHMgdG8gYmUgcmV3b3JrZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gbW9kdWxlTmFtZSArIChleHQgfHwgJycpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL0EgbW9kdWxlIHRoYXQgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgcGF0aC4KICAgICAgICAgICAgICAgICAgICBwYXRocyA9IGNvbmZpZy5wYXRoczsKCiAgICAgICAgICAgICAgICAgICAgc3ltcyA9IG1vZHVsZU5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgICAgICAvL0ZvciBlYWNoIG1vZHVsZSBuYW1lIHNlZ21lbnQsIHNlZSBpZiB0aGVyZSBpcyBhIHBhdGgKICAgICAgICAgICAgICAgICAgICAvL3JlZ2lzdGVyZWQgZm9yIGl0LiBTdGFydCB3aXRoIG1vc3Qgc3BlY2lmaWMgbmFtZQogICAgICAgICAgICAgICAgICAgIC8vYW5kIHdvcmsgdXAgZnJvbSBpdC4KICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBzeW1zLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRNb2R1bGUgPSBzeW1zLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBnZXRPd24ocGF0aHMsIHBhcmVudE1vZHVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIGFuIGFycmF5LCBpdCBtZWFucyB0aGVyZSBhcmUgYSBmZXcgY2hvaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBkZXNpcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwYXJlbnRQYXRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBwYXJlbnRQYXRoWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltcy5zcGxpY2UoMCwgaSwgcGFyZW50UGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9Kb2luIHRoZSBwYXRoIHBhcnRzIHRvZ2V0aGVyLCB0aGVuIGZpZ3VyZSBvdXQgaWYgYmFzZVVybCBpcyBuZWVkZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gc3ltcy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICAgICAgdXJsICs9IChleHQgfHwgKC9eZGF0YVw6fF5ibG9iXDp8XD8vLnRlc3QodXJsKSB8fCBza2lwRXh0ID8gJycgOiAnLmpzJykpOwogICAgICAgICAgICAgICAgICAgIHVybCA9ICh1cmwuY2hhckF0KDApID09PSAnLycgfHwgdXJsLm1hdGNoKC9eW1x3XCtcLlwtXSs6LykgPyAnJyA6IGNvbmZpZy5iYXNlVXJsKSArIHVybDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybEFyZ3MgJiYgIS9eYmxvYlw6Ly50ZXN0KHVybCkgPwogICAgICAgICAgICAgICAgICAgICAgIHVybCArIGNvbmZpZy51cmxBcmdzKG1vZHVsZU5hbWUsIHVybCkgOiB1cmw7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvL0RlbGVnYXRlcyB0byByZXEubG9hZC4gQnJva2VuIG91dCBhcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvCiAgICAgICAgICAgIC8vYWxsb3cgb3ZlcnJpZGluZyBpbiB0aGUgb3B0aW1pemVyLgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoaWQsIHVybCkgewogICAgICAgICAgICAgICAgcmVxLmxvYWQoY29udGV4dCwgaWQsIHVybCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogRXhlY3V0ZXMgYSBtb2R1bGUgY2FsbGJhY2sgZnVuY3Rpb24uIEJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbgogICAgICAgICAgICAgKiBzb2xlbHkgdG8gYWxsb3cgdGhlIGJ1aWxkIHN5c3RlbSB0byBzZXF1ZW5jZSB0aGUgZmlsZXMgaW4gdGhlIGJ1aWx0CiAgICAgICAgICAgICAqIGxheWVyIGluIHRoZSByaWdodCBzZXF1ZW5jZS4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHByaXZhdGUKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGV4ZWNDYjogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCBhcmdzLCBleHBvcnRzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkoZXhwb3J0cywgYXJncyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogY2FsbGJhY2sgZm9yIHNjcmlwdCBsb2FkcywgdXNlZCB0byBjaGVjayBzdGF0dXMgb2YgbG9hZGluZy4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZXZ0IHRoZSBldmVudCBmcm9tIHRoZSBicm93c2VyIGZvciB0aGUgc2NyaXB0CiAgICAgICAgICAgICAqIHRoYXQgd2FzIGxvYWRlZC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0TG9hZDogZnVuY3Rpb24gKGV2dCkgewogICAgICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdpbGwgYmUgc3VwcG9ydGVkLCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCiAgICAgICAgICAgICAgICAvL3RvIHN1cHBvcnQgYW5kIHN0aWxsIG1ha2VzIHNlbnNlLgogICAgICAgICAgICAgICAgaWYgKGV2dC50eXBlID09PSAnbG9hZCcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWR5UmVnRXhwLnRlc3QoKGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50KS5yZWFkeVN0YXRlKSkpIHsKICAgICAgICAgICAgICAgICAgICAvL1Jlc2V0IGludGVyYWN0aXZlIHNjcmlwdCBzbyBhIHNjcmlwdCBub2RlIGlzIG5vdCBoZWxkIG9udG8gZm9yCiAgICAgICAgICAgICAgICAgICAgLy90byBsb25nLgogICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlU2NyaXB0ID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGFuZCB0aGUgY29udGV4dC4KICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0KTsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChkYXRhLmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsYmFjayBmb3Igc2NyaXB0IGVycm9ycy4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0RXJyb3I6IGZ1bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZ2V0U2NyaXB0RGF0YShldnQpOwogICAgICAgICAgICAgICAgaWYgKCFoYXNQYXRoRmFsbGJhY2soZGF0YS5pZCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50cyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZignX0ByJykgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godmFsdWUuZGVwTWFwcywgZnVuY3Rpb24oZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcE1hcC5pZCA9PT0gZGF0YS5pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRzLnB1c2goa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3NjcmlwdGVycm9yJywgJ1NjcmlwdCBlcnJvciBmb3IgIicgKyBkYXRhLmlkICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudHMubGVuZ3RoID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIsIG5lZWRlZCBieTogJyArIHBhcmVudHMuam9pbignLCAnKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksIGV2dCwgW2RhdGEuaWRdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBjb250ZXh0LnJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKCk7CiAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWluIGVudHJ5IHBvaW50LgogICAgICoKICAgICAqIElmIHRoZSBvbmx5IGFyZ3VtZW50IHRvIHJlcXVpcmUgaXMgYSBzdHJpbmcsIHRoZW4gdGhlIG1vZHVsZSB0aGF0CiAgICAgKiBpcyByZXByZXNlbnRlZCBieSB0aGF0IHN0cmluZyBpcyBmZXRjaGVkIGZvciB0aGUgYXBwcm9wcmlhdGUgY29udGV4dC4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gYXJyYXksIHRoZW4gaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGFycmF5CiAgICAgKiBvZiBkZXBlbmRlbmN5IHN0cmluZyBuYW1lcyB0byBmZXRjaC4gQW4gb3B0aW9uYWwgZnVuY3Rpb24gY2FsbGJhY2sgY2FuCiAgICAgKiBiZSBzcGVjaWZpZWQgdG8gZXhlY3V0ZSB3aGVuIGFsbCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZS4KICAgICAqCiAgICAgKiBNYWtlIGEgbG9jYWwgcmVxIHZhcmlhYmxlIHRvIGhlbHAgQ2FqYSBjb21wbGlhbmNlIChpdCBhc3N1bWVzIHRoaW5ncwogICAgICogb24gYSByZXF1aXJlIHRoYXQgYXJlIG5vdCBzdGFuZGFyZGl6ZWQpLCBhbmQgdG8gZ2l2ZSBhIHNob3J0CiAgICAgKiBuYW1lIGZvciBtaW5pZmljYXRpb24vbG9jYWwgc2NvcGUgdXNlLgogICAgICovCiAgICByZXEgPSByZXF1aXJlanMgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIG9wdGlvbmFsKSB7CgogICAgICAgIC8vRmluZCB0aGUgcmlnaHQgY29udGV4dCwgdXNlIGRlZmF1bHQKICAgICAgICB2YXIgY29udGV4dCwgY29uZmlnLAogICAgICAgICAgICBjb250ZXh0TmFtZSA9IGRlZkNvbnRleHROYW1lOwoKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgaGF2ZSBjb25maWcgb2JqZWN0IGluIHRoZSBjYWxsLgogICAgICAgIGlmICghaXNBcnJheShkZXBzKSAmJiB0eXBlb2YgZGVwcyAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgLy8gZGVwcyBpcyBhIGNvbmZpZyBvYmplY3QKICAgICAgICAgICAgY29uZmlnID0gZGVwczsKICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAvLyBBZGp1c3QgYXJncyBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7CiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycmJhY2s7CiAgICAgICAgICAgICAgICBlcnJiYWNrID0gb3B0aW9uYWw7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dE5hbWUgPSBjb25maWcuY29udGV4dDsKICAgICAgICB9CgogICAgICAgIGNvbnRleHQgPSBnZXRPd24oY29udGV4dHMsIGNvbnRleHROYW1lKTsKICAgICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW2NvbnRleHROYW1lXSA9IHJlcS5zLm5ld0NvbnRleHQoY29udGV4dE5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbmZpZykgewogICAgICAgICAgICBjb250ZXh0LmNvbmZpZ3VyZShjb25maWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNvbnRleHQucmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjayk7CiAgICB9OwoKICAgIC8qKgogICAgICogU3VwcG9ydCByZXF1aXJlLmNvbmZpZygpIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvb3BlcmF0ZSB3aXRoIG90aGVyCiAgICAgKiBBTUQgbG9hZGVycyBvbiBnbG9iYWxseSBhZ3JlZWQgbmFtZXMuCiAgICAgKi8KICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgcmV0dXJuIHJlcShjb25maWcpOwogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgc29tZXRoaW5nIGFmdGVyIHRoZSBjdXJyZW50IHRpY2sKICAgICAqIG9mIHRoZSBldmVudCBsb29wLiBPdmVycmlkZSBmb3Igb3RoZXIgZW52cwogICAgICogdGhhdCBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gc2V0VGltZW91dC4KICAgICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byBleGVjdXRlIGxhdGVyLgogICAgICovCiAgICByZXEubmV4dFRpY2sgPSB0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcgPyBmdW5jdGlvbiAoZm4pIHsKICAgICAgICBzZXRUaW1lb3V0KGZuLCA0KTsKICAgIH0gOiBmdW5jdGlvbiAoZm4pIHsgZm4oKTsgfTsKCiAgICAvKioKICAgICAqIEV4cG9ydCByZXF1aXJlIGFzIGEgZ2xvYmFsLCBidXQgb25seSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgogICAgICovCiAgICBpZiAoIXJlcXVpcmUpIHsKICAgICAgICByZXF1aXJlID0gcmVxOwogICAgfQoKICAgIHJlcS52ZXJzaW9uID0gdmVyc2lvbjsKCiAgICAvL1VzZWQgdG8gZmlsdGVyIG91dCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxyZWFkeSBwYXRocy4KICAgIHJlcS5qc0V4dFJlZ0V4cCA9IC9eXC98OnxcP3xcLmpzJC87CiAgICByZXEuaXNCcm93c2VyID0gaXNCcm93c2VyOwogICAgcyA9IHJlcS5zID0gewogICAgICAgIGNvbnRleHRzOiBjb250ZXh0cywKICAgICAgICBuZXdDb250ZXh0OiBuZXdDb250ZXh0CiAgICB9OwoKICAgIC8vQ3JlYXRlIGRlZmF1bHQgY29udGV4dC4KICAgIHJlcSh7fSk7CgogICAgLy9FeHBvcnRzIHNvbWUgY29udGV4dC1zZW5zaXRpdmUgbWV0aG9kcyBvbiBnbG9iYWwgcmVxdWlyZS4KICAgIGVhY2goWwogICAgICAgICd0b1VybCcsCiAgICAgICAgJ3VuZGVmJywKICAgICAgICAnZGVmaW5lZCcsCiAgICAgICAgJ3NwZWNpZmllZCcKICAgIF0sIGZ1bmN0aW9uIChwcm9wKSB7CiAgICAgICAgLy9SZWZlcmVuY2UgZnJvbSBjb250ZXh0cyBpbnN0ZWFkIG9mIGVhcmx5IGJpbmRpbmcgdG8gZGVmYXVsdCBjb250ZXh0LAogICAgICAgIC8vc28gdGhhdCBkdXJpbmcgYnVpbGRzLCB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQKICAgICAgICAvL3dpdGggaXRzIGNvbmZpZyBnZXRzIHVzZWQuCiAgICAgICAgcmVxW3Byb3BdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgY3R4ID0gY29udGV4dHNbZGVmQ29udGV4dE5hbWVdOwogICAgICAgICAgICByZXR1cm4gY3R4LnJlcXVpcmVbcHJvcF0uYXBwbHkoY3R4LCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9KTsKCiAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgaGVhZCA9IHMuaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07CiAgICAgICAgLy9JZiBCQVNFIHRhZyBpcyBpbiBwbGF5LCB1c2luZyBhcHBlbmRDaGlsZCBpcyBhIHByb2JsZW0gZm9yIElFNi4KICAgICAgICAvL1doZW4gdGhhdCBicm93c2VyIGRpZXMsIHRoaXMgY2FuIGJlIHJlbW92ZWQuIERldGFpbHMgaW4gdGhpcyBqUXVlcnkgYnVnOgogICAgICAgIC8vaHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC8yNzA5CiAgICAgICAgYmFzZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpWzBdOwogICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICBoZWFkID0gcy5oZWFkID0gYmFzZUVsZW1lbnQucGFyZW50Tm9kZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBbnkgZXJyb3JzIHRoYXQgcmVxdWlyZSBleHBsaWNpdGx5IGdlbmVyYXRlcyB3aWxsIGJlIHBhc3NlZCB0byB0aGlzCiAgICAgKiBmdW5jdGlvbi4gSW50ZXJjZXB0L292ZXJyaWRlIGl0IGlmIHlvdSB3YW50IGN1c3RvbSBlcnJvciBoYW5kbGluZy4KICAgICAqIEBwYXJhbSB7RXJyb3J9IGVyciB0aGUgZXJyb3Igb2JqZWN0LgogICAgICovCiAgICByZXEub25FcnJvciA9IGRlZmF1bHRPbkVycm9yOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyB0aGUgbm9kZSBmb3IgdGhlIGxvYWQgY29tbWFuZC4gT25seSB1c2VkIGluIGJyb3dzZXIgZW52cy4KICAgICAqLwogICAgcmVxLmNyZWF0ZU5vZGUgPSBmdW5jdGlvbiAoY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgbm9kZSA9IGNvbmZpZy54aHRtbCA/CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbDpzY3JpcHQnKSA6CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBub2RlLnR5cGUgPSBjb25maWcuc2NyaXB0VHlwZSB8fCAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBub2RlLmNoYXJzZXQgPSAndXRmLTgnOwogICAgICAgIG5vZGUuYXN5bmMgPSB0cnVlOwogICAgICAgIHJldHVybiBub2RlOwogICAgfTsKCiAgICAvKioKICAgICAqIERvZXMgdGhlIHJlcXVlc3QgdG8gbG9hZCBhIG1vZHVsZSBmb3IgdGhlIGJyb3dzZXIgY2FzZS4KICAgICAqIE1ha2UgdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGFsbG93IG90aGVyIGVudmlyb25tZW50cwogICAgICogdG8gb3ZlcnJpZGUgaXQuCiAgICAgKgogICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHQgdGhlIHJlcXVpcmUgY29udGV4dCB0byBmaW5kIHN0YXRlLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB1cmwgdGhlIFVSTCB0byB0aGUgbW9kdWxlLgogICAgICovCiAgICByZXEubG9hZCA9IGZ1bmN0aW9uIChjb250ZXh0LCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgY29uZmlnID0gKGNvbnRleHQgJiYgY29udGV4dC5jb25maWcpIHx8IHt9LAogICAgICAgICAgICBub2RlOwogICAgICAgIGlmIChpc0Jyb3dzZXIpIHsKICAgICAgICAgICAgLy9JbiB0aGUgYnJvd3NlciBzbyB1c2UgYSBzY3JpcHQgdGFnCiAgICAgICAgICAgIG5vZGUgPSByZXEuY3JlYXRlTm9kZShjb25maWcsIG1vZHVsZU5hbWUsIHVybCk7CgogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcsIGNvbnRleHQuY29udGV4dE5hbWUpOwogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAvL1NldCB1cCBsb2FkIGxpc3RlbmVyLiBUZXN0IGF0dGFjaEV2ZW50IGZpcnN0IGJlY2F1c2UgSUU5IGhhcwogICAgICAgICAgICAvL2Egc3VidGxlIGlzc3VlIGluIGl0cyBhZGRFdmVudExpc3RlbmVyIGFuZCBzY3JpcHQgb25sb2FkIGZpcmluZ3MKICAgICAgICAgICAgLy90aGF0IGRvIG5vdCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgYWxsIG90aGVyIGJyb3dzZXJzIHdpdGgKICAgICAgICAgICAgLy9hZGRFdmVudExpc3RlbmVyIHN1cHBvcnQsIHdoaWNoIGZpcmUgdGhlIG9ubG9hZCBldmVudCBmb3IgYQogICAgICAgICAgICAvL3NjcmlwdCByaWdodCBhZnRlciB0aGUgc2NyaXB0IGV4ZWN1dGlvbi4gU2VlOgogICAgICAgICAgICAvL2h0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvNjQ4MDU3L3NjcmlwdC1vbmxvYWQtZXZlbnQtaXMtbm90LWZpcmVkLWltbWVkaWF0ZWx5LWFmdGVyLXNjcmlwdC1leGVjdXRpb24KICAgICAgICAgICAgLy9VTkZPUlRVTkFURUxZIE9wZXJhIGltcGxlbWVudHMgYXR0YWNoRXZlbnQgYnV0IGRvZXMgbm90IGZvbGxvdyB0aGUgc2NyaXB0CiAgICAgICAgICAgIC8vc2NyaXB0IGV4ZWN1dGlvbiBtb2RlLgogICAgICAgICAgICBpZiAobm9kZS5hdHRhY2hFdmVudCAmJgogICAgICAgICAgICAgICAgICAgIC8vQ2hlY2sgaWYgbm9kZS5hdHRhY2hFdmVudCBpcyBhcnRpZmljaWFsbHkgYWRkZWQgYnkgY3VzdG9tIHNjcmlwdCBvcgogICAgICAgICAgICAgICAgICAgIC8vbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAgICAgICAgICAgICAgICAvL3JlYWQgaHR0cHM6Ly9naXRodWIuY29tL3JlcXVpcmVqcy9yZXF1aXJlanMvaXNzdWVzLzE4NwogICAgICAgICAgICAgICAgICAgIC8vaWYgd2UgY2FuIE5PVCBmaW5kIFtuYXRpdmUgY29kZV0gdGhlbiBpdCBtdXN0IE5PVCBuYXRpdmVseSBzdXBwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgLy9pbiBJRTgsIG5vZGUuYXR0YWNoRXZlbnQgZG9lcyBub3QgaGF2ZSB0b1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgLy9Ob3RlIHRoZSB0ZXN0IGZvciAiW25hdGl2ZSBjb2RlIiB3aXRoIG5vIGNsb3NpbmcgYnJhY2UsIHNlZToKICAgICAgICAgICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2lzc3Vlcy8yNzMKICAgICAgICAgICAgICAgICAgICAhKG5vZGUuYXR0YWNoRXZlbnQudG9TdHJpbmcgJiYgbm9kZS5hdHRhY2hFdmVudC50b1N0cmluZygpLmluZGV4T2YoJ1tuYXRpdmUgY29kZScpIDwgMCkgJiYKICAgICAgICAgICAgICAgICAgICAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSUUgKGF0IGxlYXN0IDYtOCkgZG8gbm90IGZpcmUKICAgICAgICAgICAgICAgIC8vc2NyaXB0IG9ubG9hZCByaWdodCBhZnRlciBleGVjdXRpbmcgdGhlIHNjcmlwdCwgc28KICAgICAgICAgICAgICAgIC8vd2UgY2Fubm90IHRpZSB0aGUgYW5vbnltb3VzIGRlZmluZSBjYWxsIHRvIGEgbmFtZS4KICAgICAgICAgICAgICAgIC8vSG93ZXZlciwgSUUgcmVwb3J0cyB0aGUgc2NyaXB0IGFzIGJlaW5nIGluICdpbnRlcmFjdGl2ZScKICAgICAgICAgICAgICAgIC8vcmVhZHlTdGF0ZSBhdCB0aGUgdGltZSBvZiB0aGUgZGVmaW5lIGNhbGwuCiAgICAgICAgICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IHRydWU7CgogICAgICAgICAgICAgICAgbm9kZS5hdHRhY2hFdmVudCgnb25yZWFkeXN0YXRlY2hhbmdlJywgY29udGV4dC5vblNjcmlwdExvYWQpOwogICAgICAgICAgICAgICAgLy9JdCB3b3VsZCBiZSBncmVhdCB0byBhZGQgYW4gZXJyb3IgaGFuZGxlciBoZXJlIHRvIGNhdGNoCiAgICAgICAgICAgICAgICAvLzQwNHMgaW4gSUU5Ky4gSG93ZXZlciwgb25yZWFkeXN0YXRlY2hhbmdlIHdpbGwgZmlyZSBiZWZvcmUKICAgICAgICAgICAgICAgIC8vdGhlIGVycm9yIGhhbmRsZXIsIHNvIHRoYXQgZG9lcyBub3QgaGVscC4gSWYgYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAgICAgLy9pcyB1c2VkLCB0aGVuIElFIHdpbGwgZmlyZSBlcnJvciBiZWZvcmUgbG9hZCwgYnV0IHdlIGNhbm5vdAogICAgICAgICAgICAgICAgLy91c2UgdGhhdCBwYXRod2F5IGdpdmVuIHRoZSBjb25uZWN0Lm1pY3Jvc29mdC5jb20gaXNzdWUKICAgICAgICAgICAgICAgIC8vbWVudGlvbmVkIGFib3ZlIGFib3V0IG5vdCBkb2luZyB0aGUgJ3NjcmlwdCBleGVjdXRlLAogICAgICAgICAgICAgICAgLy90aGVuIGZpcmUgdGhlIHNjcmlwdCBsb2FkIGV2ZW50IGxpc3RlbmVyIGJlZm9yZSBleGVjdXRlCiAgICAgICAgICAgICAgICAvL25leHQgc2NyaXB0JyB0aGF0IG90aGVyIGJyb3dzZXJzIGRvLgogICAgICAgICAgICAgICAgLy9CZXN0IGhvcGU6IElFMTAgZml4ZXMgdGhlIGlzc3VlcywKICAgICAgICAgICAgICAgIC8vYW5kIHRoZW4gZGVzdHJveXMgYWxsIGluc3RhbGxzIG9mIElFIDYtOS4KICAgICAgICAgICAgICAgIC8vbm9kZS5hdHRhY2hFdmVudCgnb25lcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgZmFsc2UpOwogICAgICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvciwgZmFsc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5vZGUuc3JjID0gdXJsOwoKICAgICAgICAgICAgLy9DYWxsaW5nIG9uTm9kZUNyZWF0ZWQgYWZ0ZXIgYWxsIHByb3BlcnRpZXMgb24gdGhlIG5vZGUgaGF2ZSBiZWVuCiAgICAgICAgICAgIC8vc2V0LCBidXQgYmVmb3JlIGl0IGlzIHBsYWNlZCBpbiB0aGUgRE9NLgogICAgICAgICAgICBpZiAoY29uZmlnLm9uTm9kZUNyZWF0ZWQpIHsKICAgICAgICAgICAgICAgIGNvbmZpZy5vbk5vZGVDcmVhdGVkKG5vZGUsIGNvbmZpZywgbW9kdWxlTmFtZSwgdXJsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9Gb3Igc29tZSBjYWNoZSBjYXNlcyBpbiBJRSA2LTgsIHRoZSBzY3JpcHQgZXhlY3V0ZXMgYmVmb3JlIHRoZSBlbmQKICAgICAgICAgICAgLy9vZiB0aGUgYXBwZW5kQ2hpbGQgZXhlY3V0aW9uLCBzbyB0byB0aWUgYW4gYW5vbnltb3VzIGRlZmluZQogICAgICAgICAgICAvL2NhbGwgdG8gdGhlIG1vZHVsZSBuYW1lICh3aGljaCBpcyBzdG9yZWQgb24gdGhlIG5vZGUpLCBob2xkIG9uCiAgICAgICAgICAgIC8vdG8gYSByZWZlcmVuY2UgdG8gdGhpcyBub2RlLCBidXQgY2xlYXIgYWZ0ZXIgdGhlIERPTSBpbnNlcnRpb24uCiAgICAgICAgICAgIGN1cnJlbnRseUFkZGluZ1NjcmlwdCA9IG5vZGU7CiAgICAgICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUobm9kZSwgYmFzZUVsZW1lbnQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdXJyZW50bHlBZGRpbmdTY3JpcHQgPSBudWxsOwoKICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgfSBlbHNlIGlmIChpc1dlYldvcmtlcikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy9JbiBhIHdlYiB3b3JrZXIsIHVzZSBpbXBvcnRTY3JpcHRzLiBUaGlzIGlzIG5vdCBhIHZlcnkKICAgICAgICAgICAgICAgIC8vZWZmaWNpZW50IHVzZSBvZiBpbXBvcnRTY3JpcHRzLCBpbXBvcnRTY3JpcHRzIHdpbGwgYmxvY2sgdW50aWwKICAgICAgICAgICAgICAgIC8vaXRzIHNjcmlwdCBpcyBkb3dubG9hZGVkIGFuZCBldmFsdWF0ZWQuIEhvd2V2ZXIsIGlmIHdlYiB3b3JrZXJzCiAgICAgICAgICAgICAgICAvL2FyZSBpbiBwbGF5LCB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCBhIGJ1aWxkIGhhcyBiZWVuIGRvbmUgc28KICAgICAgICAgICAgICAgIC8vdGhhdCBvbmx5IG9uZSBzY3JpcHQgbmVlZHMgdG8gYmUgbG9hZGVkIGFueXdheS4gVGhpcyBtYXkgbmVlZAogICAgICAgICAgICAgICAgLy90byBiZSByZWV2YWx1YXRlZCBpZiBvdGhlciB1c2UgY2FzZXMgYmVjb21lIGNvbW1vbi4KCiAgICAgICAgICAgICAgICAvLyBQb3N0IGEgdGFzayB0byB0aGUgZXZlbnQgbG9vcCB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBXZWJLaXQKICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSB3b3JrZXIgZ2V0cyBnYXJiYWdlLWNvbGxlY3RlZCBhZnRlciBjYWxsaW5nCiAgICAgICAgICAgICAgICAvLyBpbXBvcnRTY3JpcHRzKCk6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MzMxNwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt9LCAwKTsKICAgICAgICAgICAgICAgIGltcG9ydFNjcmlwdHModXJsKTsKCiAgICAgICAgICAgICAgICAvL0FjY291bnQgZm9yIGFub255bW91cyBtb2R1bGVzCiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKG1ha2VFcnJvcignaW1wb3J0c2NyaXB0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydFNjcmlwdHMgZmFpbGVkIGZvciAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSArICcgYXQgJyArIHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRJbnRlcmFjdGl2ZVNjcmlwdCgpIHsKICAgICAgICBpZiAoaW50ZXJhY3RpdmVTY3JpcHQgJiYgaW50ZXJhY3RpdmVTY3JpcHQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJykgewogICAgICAgICAgICByZXR1cm4gaW50ZXJhY3RpdmVTY3JpcHQ7CiAgICAgICAgfQoKICAgICAgICBlYWNoUmV2ZXJzZShzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHQpIHsKICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludGVyYWN0aXZlU2NyaXB0ID0gc2NyaXB0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBpbnRlcmFjdGl2ZVNjcmlwdDsKICAgIH0KCiAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIHNjcmlwdCBhdHRyaWJ1dGUsIHdoaWNoIGNvdWxkIGFsc28gYWRqdXN0IHRoZSBiYXNlVXJsLgogICAgaWYgKGlzQnJvd3NlciAmJiAhY2ZnLnNraXBEYXRhTWFpbikgewogICAgICAgIC8vRmlndXJlIG91dCBiYXNlVXJsLiBHZXQgaXQgZnJvbSB0aGUgc2NyaXB0IHRhZyB3aXRoIHJlcXVpcmUuanMgaW4gaXQuCiAgICAgICAgZWFjaFJldmVyc2Uoc2NyaXB0cygpLCBmdW5jdGlvbiAoc2NyaXB0KSB7CiAgICAgICAgICAgIC8vU2V0IHRoZSAnaGVhZCcgd2hlcmUgd2UgY2FuIGFwcGVuZCBjaGlsZHJlbiBieQogICAgICAgICAgICAvL3VzaW5nIHRoZSBzY3JpcHQncyBwYXJlbnQuCiAgICAgICAgICAgIGlmICghaGVhZCkgewogICAgICAgICAgICAgICAgaGVhZCA9IHNjcmlwdC5wYXJlbnROb2RlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIGF0dHJpYnV0ZSB0byBzZXQgbWFpbiBzY3JpcHQgZm9yIHRoZSBwYWdlCiAgICAgICAgICAgIC8vdG8gbG9hZC4gSWYgaXQgaXMgdGhlcmUsIHRoZSBwYXRoIHRvIGRhdGEgbWFpbiBiZWNvbWVzIHRoZQogICAgICAgICAgICAvL2Jhc2VVcmwsIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHNldC4KICAgICAgICAgICAgZGF0YU1haW4gPSBzY3JpcHQuZ2V0QXR0cmlidXRlKCdkYXRhLW1haW4nKTsKICAgICAgICAgICAgaWYgKGRhdGFNYWluKSB7CiAgICAgICAgICAgICAgICAvL1ByZXNlcnZlIGRhdGFNYWluIGluIGNhc2UgaXQgaXMgYSBwYXRoIChpLmUuIGNvbnRhaW5zICc/JykKICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBkYXRhTWFpbjsKCiAgICAgICAgICAgICAgICAvL1NldCBmaW5hbCBiYXNlVXJsIGlmIHRoZXJlIGlzIG5vdCBhbHJlYWR5IGFuIGV4cGxpY2l0IG9uZSwKICAgICAgICAgICAgICAgIC8vYnV0IG9ubHkgZG8gc28gaWYgdGhlIGRhdGEtbWFpbiB2YWx1ZSBpcyBub3QgYSBsb2FkZXIgcGx1Z2luCiAgICAgICAgICAgICAgICAvL21vZHVsZSBJRC4KICAgICAgICAgICAgICAgIGlmICghY2ZnLmJhc2VVcmwgJiYgbWFpblNjcmlwdC5pbmRleE9mKCchJykgPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG9mZiB0aGUgZGlyZWN0b3J5IG9mIGRhdGEtbWFpbiBmb3IgdXNlIGFzIHRoZQogICAgICAgICAgICAgICAgICAgIC8vYmFzZVVybC4KICAgICAgICAgICAgICAgICAgICBzcmMgPSBtYWluU2NyaXB0LnNwbGl0KCcvJyk7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IHNyYy5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBzdWJQYXRoID0gc3JjLmxlbmd0aCA/IHNyYy5qb2luKCcvJykgICsgJy8nIDogJy4vJzsKCiAgICAgICAgICAgICAgICAgICAgY2ZnLmJhc2VVcmwgPSBzdWJQYXRoOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vU3RyaXAgb2ZmIGFueSB0cmFpbGluZyAuanMgc2luY2UgbWFpblNjcmlwdCBpcyBub3cKICAgICAgICAgICAgICAgIC8vbGlrZSBhIG1vZHVsZSBuYW1lLgogICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IG1haW5TY3JpcHQucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwoKICAgICAgICAgICAgICAgIC8vSWYgbWFpblNjcmlwdCBpcyBzdGlsbCBhIHBhdGgsIGZhbGwgYmFjayB0byBkYXRhTWFpbgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1haW5TY3JpcHQpKSB7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IGRhdGFNYWluOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vUHV0IHRoZSBkYXRhLW1haW4gc2NyaXB0IGluIHRoZSBmaWxlcyB0byBsb2FkLgogICAgICAgICAgICAgICAgY2ZnLmRlcHMgPSBjZmcuZGVwcyA/IGNmZy5kZXBzLmNvbmNhdChtYWluU2NyaXB0KSA6IFttYWluU2NyaXB0XTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBkZWZpbml0aW9ucyBvZiBtb2R1bGVzLiBEaWZmZXJzIGZyb20KICAgICAqIHJlcXVpcmUoKSBpbiB0aGF0IGEgc3RyaW5nIGZvciB0aGUgbW9kdWxlIHNob3VsZCBiZSB0aGUgZmlyc3QgYXJndW1lbnQsCiAgICAgKiBhbmQgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYWZ0ZXIgZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQgc2hvdWxkCiAgICAgKiByZXR1cm4gYSB2YWx1ZSB0byBkZWZpbmUgdGhlIG1vZHVsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBhcmd1bWVudCdzCiAgICAgKiBuYW1lLgogICAgICovCiAgICBkZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHsKICAgICAgICB2YXIgbm9kZSwgY29udGV4dDsKCiAgICAgICAgLy9BbGxvdyBmb3IgYW5vbnltb3VzIG1vZHVsZXMKICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIC8vQWRqdXN0IGFyZ3MgYXBwcm9wcmlhdGVseQogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBuYW1lOwogICAgICAgICAgICBuYW1lID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llcwogICAgICAgIGlmICghaXNBcnJheShkZXBzKSkgewogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgLy9JZiBubyBuYW1lLCBhbmQgY2FsbGJhY2sgaXMgYSBmdW5jdGlvbiwgdGhlbiBmaWd1cmUgb3V0IGlmIGl0IGEKICAgICAgICAvL0NvbW1vbkpTIHRoaW5nIHdpdGggZGVwZW5kZW5jaWVzLgogICAgICAgIGlmICghZGVwcyAmJiBpc0Z1bmN0aW9uKGNhbGxiYWNrKSkgewogICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIC8vUmVtb3ZlIGNvbW1lbnRzIGZyb20gdGhlIGNhbGxiYWNrIHN0cmluZywKICAgICAgICAgICAgLy9sb29rIGZvciByZXF1aXJlIGNhbGxzLCBhbmQgcHVsbCB0aGVtIGludG8gdGhlIGRlcGVuZGVuY2llcywKICAgICAgICAgICAgLy9idXQgb25seSBpZiB0aGVyZSBhcmUgZnVuY3Rpb24gYXJncy4KICAgICAgICAgICAgaWYgKGNhbGxiYWNrLmxlbmd0aCkgewogICAgICAgICAgICAgICAgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNvbW1lbnRSZWdFeHAsIGNvbW1lbnRSZXBsYWNlKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNqc1JlcXVpcmVSZWdFeHAsIGZ1bmN0aW9uIChtYXRjaCwgZGVwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vTWF5IGJlIGEgQ29tbW9uSlMgdGhpbmcgZXZlbiB3aXRob3V0IHJlcXVpcmUgY2FsbHMsIGJ1dCBzdGlsbAogICAgICAgICAgICAgICAgLy9jb3VsZCB1c2UgZXhwb3J0cywgYW5kIG1vZHVsZS4gQXZvaWQgZG9pbmcgZXhwb3J0cyBhbmQgbW9kdWxlCiAgICAgICAgICAgICAgICAvL3dvcmsgdGhvdWdoIGlmIGl0IGp1c3QgbmVlZHMgcmVxdWlyZS4KICAgICAgICAgICAgICAgIC8vUkVRVUlSRVMgdGhlIGZ1bmN0aW9uIHRvIGV4cGVjdCB0aGUgQ29tbW9uSlMgdmFyaWFibGVzIGluIHRoZQogICAgICAgICAgICAgICAgLy9vcmRlciBsaXN0ZWQgYmVsb3cuCiAgICAgICAgICAgICAgICBkZXBzID0gKGNhbGxiYWNrLmxlbmd0aCA9PT0gMSA/IFsncmVxdWlyZSddIDogWydyZXF1aXJlJywgJ2V4cG9ydHMnLCAnbW9kdWxlJ10pLmNvbmNhdChkZXBzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9JZiBpbiBJRSA2LTggYW5kIGhpdCBhbiBhbm9ueW1vdXMgZGVmaW5lKCkgY2FsbCwgZG8gdGhlIGludGVyYWN0aXZlCiAgICAgICAgLy93b3JrLgogICAgICAgIGlmICh1c2VJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICBub2RlID0gY3VycmVudGx5QWRkaW5nU2NyaXB0IHx8IGdldEludGVyYWN0aXZlU2NyaXB0KCk7CiAgICAgICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICAgICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW25vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVjb250ZXh0JyldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL0Fsd2F5cyBzYXZlIG9mZiBldmFsdWF0aW5nIHRoZSBkZWYgY2FsbCB1bnRpbCB0aGUgc2NyaXB0IG9ubG9hZCBoYW5kbGVyLgogICAgICAgIC8vVGhpcyBhbGxvd3MgbXVsdGlwbGUgbW9kdWxlcyB0byBiZSBpbiBhIGZpbGUgd2l0aG91dCBwcmVtYXR1cmVseQogICAgICAgIC8vdHJhY2luZyBkZXBlbmRlbmNpZXMsIGFuZCBhbGxvd3MgZm9yIGFub255bW91cyBtb2R1bGUgc3VwcG9ydCwKICAgICAgICAvL3doZXJlIHRoZSBtb2R1bGUgbmFtZSBpcyBub3Qga25vd24gdW50aWwgdGhlIHNjcmlwdCBvbmxvYWQgZXZlbnQKICAgICAgICAvL29jY3Vycy4gSWYgbm8gY29udGV4dCwgdXNlIHRoZSBnbG9iYWwgcXVldWUsIGFuZCBnZXQgaXQgcHJvY2Vzc2VkCiAgICAgICAgLy9pbiB0aGUgb25zY3JpcHQgbG9hZCBjYWxsYmFjay4KICAgICAgICBpZiAoY29udGV4dCkgewogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgICAgIGNvbnRleHQuZGVmUXVldWVNYXBbbmFtZV0gPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgfQogICAgfTsKCiAgICBkZWZpbmUuYW1kID0gewogICAgICAgIGpRdWVyeTogdHJ1ZQogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGVzIHRoZSB0ZXh0LiBOb3JtYWxseSBqdXN0IHVzZXMgZXZhbCwgYnV0IGNhbiBiZSBtb2RpZmllZAogICAgICogdG8gdXNlIGEgYmV0dGVyLCBlbnZpcm9ubWVudC1zcGVjaWZpYyBjYWxsLiBPbmx5IHVzZWQgZm9yIHRyYW5zcGlsaW5nCiAgICAgKiBsb2FkZXIgcGx1Z2lucywgbm90IGZvciBwbGFpbiBKUyBtb2R1bGVzLgogICAgICogQHBhcmFtIHtTdHJpbmd9IHRleHQgdGhlIHRleHQgdG8gZXhlY3V0ZS9ldmFsdWF0ZS4KICAgICAqLwogICAgcmVxLmV4ZWMgPSBmdW5jdGlvbiAodGV4dCkgewogICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICByZXR1cm4gZXZhbCh0ZXh0KTsKICAgIH07CgogICAgLy9TZXQgdXAgd2l0aCBjb25maWcgaW5mby4KICAgIHJlcShjZmcpOwp9KHRoaXMsICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBzZXRUaW1lb3V0KSkpOwoKLy8gQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgohZnVuY3Rpb24oKXt2YXIgYT17fSxiPXt9LGM9e307IWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGE7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifWZ1bmN0aW9uIGQoKXt0aGlzLl9kZWxheT0wLHRoaXMuX2VuZERlbGF5PTAsdGhpcy5fZmlsbD0ibm9uZSIsdGhpcy5faXRlcmF0aW9uU3RhcnQ9MCx0aGlzLl9pdGVyYXRpb25zPTEsdGhpcy5fZHVyYXRpb249MCx0aGlzLl9wbGF5YmFja1JhdGU9MSx0aGlzLl9kaXJlY3Rpb249Im5vcm1hbCIsdGhpcy5fZWFzaW5nPSJsaW5lYXIiLHRoaXMuX2Vhc2luZ0Z1bmN0aW9uPXh9ZnVuY3Rpb24gZSgpe3JldHVybiBhLmlzRGVwcmVjYXRlZCgiSW52YWxpZCB0aW1pbmcgaW5wdXRzIiwiMjAxNi0wMy0wMiIsIlR5cGVFcnJvciBleGNlcHRpb25zIHdpbGwgYmUgdGhyb3duIGluc3RlYWQuIiwhMCl9ZnVuY3Rpb24gZihiLGMsZSl7dmFyIGY9bmV3IGQ7cmV0dXJuIGMmJihmLmZpbGw9ImJvdGgiLGYuZHVyYXRpb249ImF1dG8iKSwibnVtYmVyIiE9dHlwZW9mIGJ8fGlzTmFOKGIpP3ZvaWQgMCE9PWImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGIpLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoImF1dG8iIT1iW2NdKXtpZigoIm51bWJlciI9PXR5cGVvZiBmW2NdfHwiZHVyYXRpb24iPT1jKSYmKCJudW1iZXIiIT10eXBlb2YgYltjXXx8aXNOYU4oYltjXSkpKXJldHVybjtpZigiZmlsbCI9PWMmJi0xPT12LmluZGV4T2YoYltjXSkpcmV0dXJuO2lmKCJkaXJlY3Rpb24iPT1jJiYtMT09dy5pbmRleE9mKGJbY10pKXJldHVybjtpZigicGxheWJhY2tSYXRlIj09YyYmMSE9PWJbY10mJmEuaXNEZXByZWNhdGVkKCJBbmltYXRpb25FZmZlY3RUaW1pbmcucGxheWJhY2tSYXRlIiwiMjAxNC0xMS0yOCIsIlVzZSBBbmltYXRpb24ucGxheWJhY2tSYXRlIGluc3RlYWQuIikpcmV0dXJuO2ZbY109YltjXX19KTpmLmR1cmF0aW9uPWIsZn1mdW5jdGlvbiBnKGEpe3JldHVybiJudW1iZXIiPT10eXBlb2YgYSYmKGE9aXNOYU4oYSk/e2R1cmF0aW9uOjB9OntkdXJhdGlvbjphfSksYX1mdW5jdGlvbiBoKGIsYyl7cmV0dXJuIGI9YS5udW1lcmljVGltaW5nVG9PYmplY3QoYiksZihiLGMpfWZ1bmN0aW9uIGkoYSxiLGMsZCl7cmV0dXJuIGE8MHx8YT4xfHxjPDB8fGM+MT94OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoYSxiLGMpe3JldHVybiAzKmEqKDEtYykqKDEtYykqYyszKmIqKDEtYykqYypjK2MqYypjfWlmKGU8PTApe3ZhciBnPTA7cmV0dXJuIGE+MD9nPWIvYTohYiYmYz4wJiYoZz1kL2MpLGcqZX1pZihlPj0xKXt2YXIgaD0wO3JldHVybiBjPDE/aD0oZC0xKS8oYy0xKToxPT1jJiZhPDEmJihoPShiLTEpLyhhLTEpKSwxK2gqKGUtMSl9Zm9yKHZhciBpPTAsaj0xO2k8ajspe3ZhciBrPShpK2opLzIsbD1mKGEsYyxrKTtpZihNYXRoLmFicyhlLWwpPDFlLTUpcmV0dXJuIGYoYixkLGspO2w8ZT9pPWs6aj1rfXJldHVybiBmKGIsZCxrKX19ZnVuY3Rpb24gaihhLGIpe3JldHVybiBmdW5jdGlvbihjKXtpZihjPj0xKXJldHVybiAxO3ZhciBkPTEvYTtyZXR1cm4oYys9YipkKS1jJWR9fWZ1bmN0aW9uIGsoYSl7Q3x8KEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUpLEMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb249IiIsQy5hbmltYXRpb25UaW1pbmdGdW5jdGlvbj1hO3ZhciBiPUMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb247aWYoIiI9PWImJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgZWFzaW5nIik7cmV0dXJuIGJ9ZnVuY3Rpb24gbChhKXtpZigibGluZWFyIj09YSlyZXR1cm4geDt2YXIgYj1FLmV4ZWMoYSk7aWYoYilyZXR1cm4gaS5hcHBseSh0aGlzLGIuc2xpY2UoMSkubWFwKE51bWJlcikpO3ZhciBjPUYuZXhlYyhhKTtpZihjKXJldHVybiBqKE51bWJlcihjWzFdKSxBKTt2YXIgZD1HLmV4ZWMoYSk7cmV0dXJuIGQ/aihOdW1iZXIoZFsxXSkse3N0YXJ0OnksbWlkZGxlOnosZW5kOkF9W2RbMl1dKTpCW2FdfHx4fWZ1bmN0aW9uIG0oYSl7cmV0dXJuIE1hdGguYWJzKG4oYSkvYS5wbGF5YmFja1JhdGUpfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIDA9PT1hLmR1cmF0aW9ufHwwPT09YS5pdGVyYXRpb25zPzA6YS5kdXJhdGlvbiphLml0ZXJhdGlvbnN9ZnVuY3Rpb24gbyhhLGIsYyl7aWYobnVsbD09YilyZXR1cm4gSDt2YXIgZD1jLmRlbGF5K2ErYy5lbmREZWxheTtyZXR1cm4gYjxNYXRoLm1pbihjLmRlbGF5LGQpP0k6Yj49TWF0aC5taW4oYy5kZWxheSthLGQpP0o6S31mdW5jdGlvbiBwKGEsYixjLGQsZSl7c3dpdGNoKGQpe2Nhc2UgSTpyZXR1cm4iYmFja3dhcmRzIj09Ynx8ImJvdGgiPT1iPzA6bnVsbDtjYXNlIEs6cmV0dXJuIGMtZTtjYXNlIEo6cmV0dXJuImZvcndhcmRzIj09Ynx8ImJvdGgiPT1iP2E6bnVsbDtjYXNlIEg6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHEoYSxiLGMsZCxlKXt2YXIgZj1lO3JldHVybiAwPT09YT9iIT09SSYmKGYrPWMpOmYrPWQvYSxmfWZ1bmN0aW9uIHIoYSxiLGMsZCxlLGYpe3ZhciBnPWE9PT0xLzA/YiUxOmElMTtyZXR1cm4gMCE9PWd8fGMhPT1KfHwwPT09ZHx8MD09PWUmJjAhPT1mfHwoZz0xKSxnfWZ1bmN0aW9uIHMoYSxiLGMsZCl7cmV0dXJuIGE9PT1KJiZiPT09MS8wPzEvMDoxPT09Yz9NYXRoLmZsb29yKGQpLTE6TWF0aC5mbG9vcihkKX1mdW5jdGlvbiB0KGEsYixjKXt2YXIgZD1hO2lmKCJub3JtYWwiIT09YSYmInJldmVyc2UiIT09YSl7dmFyIGU9YjsiYWx0ZXJuYXRlLXJldmVyc2UiPT09YSYmKGUrPTEpLGQ9Im5vcm1hbCIsZSE9PTEvMCYmZSUyIT0wJiYoZD0icmV2ZXJzZSIpfXJldHVybiJub3JtYWwiPT09ZD9jOjEtY31mdW5jdGlvbiB1KGEsYixjKXt2YXIgZD1vKGEsYixjKSxlPXAoYSxjLmZpbGwsYixkLGMuZGVsYXkpO2lmKG51bGw9PT1lKXJldHVybiBudWxsO3ZhciBmPXEoYy5kdXJhdGlvbixkLGMuaXRlcmF0aW9ucyxlLGMuaXRlcmF0aW9uU3RhcnQpLGc9cihmLGMuaXRlcmF0aW9uU3RhcnQsZCxjLml0ZXJhdGlvbnMsZSxjLmR1cmF0aW9uKSxoPXMoZCxjLml0ZXJhdGlvbnMsZyxmKSxpPXQoYy5kaXJlY3Rpb24saCxnKTtyZXR1cm4gYy5fZWFzaW5nRnVuY3Rpb24oaSl9dmFyIHY9ImJhY2t3YXJkc3xmb3J3YXJkc3xib3RofG5vbmUiLnNwbGl0KCJ8Iiksdz0icmV2ZXJzZXxhbHRlcm5hdGV8YWx0ZXJuYXRlLXJldmVyc2UiLnNwbGl0KCJ8IikseD1mdW5jdGlvbihhKXtyZXR1cm4gYX07ZC5wcm90b3R5cGU9e19zZXRNZW1iZXI6ZnVuY3Rpb24oYixjKXt0aGlzWyJfIitiXT1jLHRoaXMuX2VmZmVjdCYmKHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXRbYl09Yyx0aGlzLl9lZmZlY3QuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXQpLHRoaXMuX2VmZmVjdC5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX2VmZmVjdC5fdGltaW5nKSx0aGlzLl9lZmZlY3QuX2FuaW1hdGlvbiYmdGhpcy5fZWZmZWN0Ll9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCkpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IGRlbGF5KGEpe3RoaXMuX3NldE1lbWJlcigiZGVsYXkiLGEpfSxnZXQgZGVsYXkoKXtyZXR1cm4gdGhpcy5fZGVsYXl9LHNldCBlbmREZWxheShhKXt0aGlzLl9zZXRNZW1iZXIoImVuZERlbGF5IixhKX0sZ2V0IGVuZERlbGF5KCl7cmV0dXJuIHRoaXMuX2VuZERlbGF5fSxzZXQgZmlsbChhKXt0aGlzLl9zZXRNZW1iZXIoImZpbGwiLGEpfSxnZXQgZmlsbCgpe3JldHVybiB0aGlzLl9maWxsfSxzZXQgaXRlcmF0aW9uU3RhcnQoYSl7aWYoKGlzTmFOKGEpfHxhPDApJiZlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaXRlcmF0aW9uU3RhcnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9uU3RhcnQiLGEpfSxnZXQgaXRlcmF0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy5faXRlcmF0aW9uU3RhcnR9LHNldCBkdXJhdGlvbihhKXtpZigiYXV0byIhPWEmJihpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoImR1cmF0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIG9yIGF1dG8sIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiZHVyYXRpb24iLGEpfSxnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZHVyYXRpb259LHNldCBkaXJlY3Rpb24oYSl7dGhpcy5fc2V0TWVtYmVyKCJkaXJlY3Rpb24iLGEpfSxnZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbn0sc2V0IGVhc2luZyhhKXt0aGlzLl9lYXNpbmdGdW5jdGlvbj1sKGsoYSkpLHRoaXMuX3NldE1lbWJlcigiZWFzaW5nIixhKX0sZ2V0IGVhc2luZygpe3JldHVybiB0aGlzLl9lYXNpbmd9LHNldCBpdGVyYXRpb25zKGEpe2lmKChpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdGlvbnMgbXVzdCBiZSBub24tbmVnYXRpdmUsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9ucyIsYSl9LGdldCBpdGVyYXRpb25zKCl7cmV0dXJuIHRoaXMuX2l0ZXJhdGlvbnN9fTt2YXIgeT0xLHo9LjUsQT0wLEI9e2Vhc2U6aSguMjUsLjEsLjI1LDEpLCJlYXNlLWluIjppKC40MiwwLDEsMSksImVhc2Utb3V0IjppKDAsMCwuNTgsMSksImVhc2UtaW4tb3V0IjppKC40MiwwLC41OCwxKSwic3RlcC1zdGFydCI6aigxLHkpLCJzdGVwLW1pZGRsZSI6aigxLHopLCJzdGVwLWVuZCI6aigxLEEpfSxDPW51bGwsRD0iXFxzKigtP1xcZCtcXC4/XFxkKnwtP1xcLlxcZCspXFxzKiIsRT1uZXcgUmVnRXhwKCJjdWJpYy1iZXppZXJcXCgiK0QrIiwiK0QrIiwiK0QrIiwiK0QrIlxcKSIpLEY9L3N0ZXBzXChccyooXGQrKVxzKlwpLyxHPS9zdGVwc1woXHMqKFxkKylccyosXHMqKHN0YXJ0fG1pZGRsZXxlbmQpXHMqXCkvLEg9MCxJPTEsSj0yLEs9MzthLmNsb25lVGltaW5nSW5wdXQ9YyxhLm1ha2VUaW1pbmc9ZixhLm51bWVyaWNUaW1pbmdUb09iamVjdD1nLGEubm9ybWFsaXplVGltaW5nSW5wdXQ9aCxhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uPW0sYS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcz11LGEuY2FsY3VsYXRlUGhhc2U9byxhLm5vcm1hbGl6ZUVhc2luZz1rLGEucGFyc2VFYXNpbmdGdW5jdGlvbj1sfShhKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtyZXR1cm4gYSBpbiBrP2tbYV1bYl18fGI6Yn1mdW5jdGlvbiBkKGEpe3JldHVybiJkaXNwbGF5Ij09PWF8fDA9PT1hLmxhc3RJbmRleE9mKCJhbmltYXRpb24iLDApfHwwPT09YS5sYXN0SW5kZXhPZigidHJhbnNpdGlvbiIsMCl9ZnVuY3Rpb24gZShhLGIsZSl7aWYoIWQoYSkpe3ZhciBmPWhbYV07aWYoZil7aS5zdHlsZVthXT1iO2Zvcih2YXIgZyBpbiBmKXt2YXIgaj1mW2ddLGs9aS5zdHlsZVtqXTtlW2pdPWMoaixrKX19ZWxzZSBlW2FdPWMoYSxiKX19ZnVuY3Rpb24gZihhKXt2YXIgYj1bXTtmb3IodmFyIGMgaW4gYSlpZighKGMgaW5bImVhc2luZyIsIm9mZnNldCIsImNvbXBvc2l0ZSJdKSl7dmFyIGQ9YVtjXTtBcnJheS5pc0FycmF5KGQpfHwoZD1bZF0pO2Zvcih2YXIgZSxmPWQubGVuZ3RoLGc9MDtnPGY7ZysrKWU9e30sZS5vZmZzZXQ9Im9mZnNldCJpbiBhP2Eub2Zmc2V0OjE9PWY/MTpnLyhmLTEpLCJlYXNpbmciaW4gYSYmKGUuZWFzaW5nPWEuZWFzaW5nKSwiY29tcG9zaXRlImluIGEmJihlLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZSksZVtjXT1kW2ddLGIucHVzaChlKX1yZXR1cm4gYi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEub2Zmc2V0LWIub2Zmc2V0fSksYn1mdW5jdGlvbiBnKGIpe2Z1bmN0aW9uIGMoKXt2YXIgYT1kLmxlbmd0aDtudWxsPT1kW2EtMV0ub2Zmc2V0JiYoZFthLTFdLm9mZnNldD0xKSxhPjEmJm51bGw9PWRbMF0ub2Zmc2V0JiYoZFswXS5vZmZzZXQ9MCk7Zm9yKHZhciBiPTAsYz1kWzBdLm9mZnNldCxlPTE7ZTxhO2UrKyl7dmFyIGY9ZFtlXS5vZmZzZXQ7aWYobnVsbCE9Zil7Zm9yKHZhciBnPTE7ZzxlLWI7ZysrKWRbYitnXS5vZmZzZXQ9YysoZi1jKSpnLyhlLWIpO2I9ZSxjPWZ9fX1pZihudWxsPT1iKXJldHVybltdO3dpbmRvdy5TeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmQXJyYXkucHJvdG90eXBlLmZyb20mJmJbU3ltYm9sLml0ZXJhdG9yXSYmKGI9QXJyYXkuZnJvbShiKSksQXJyYXkuaXNBcnJheShiKXx8KGI9ZihiKSk7Zm9yKHZhciBkPWIubWFwKGZ1bmN0aW9uKGIpe3ZhciBjPXt9O2Zvcih2YXIgZCBpbiBiKXt2YXIgZj1iW2RdO2lmKCJvZmZzZXQiPT1kKXtpZihudWxsIT1mKXtpZihmPU51bWJlcihmKSwhaXNGaW5pdGUoZikpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIG51bWJlcnMuIik7aWYoZjwwfHxmPjEpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMS4iKX19ZWxzZSBpZigiY29tcG9zaXRlIj09ZCl7aWYoImFkZCI9PWZ8fCJhY2N1bXVsYXRlIj09Zil0aHJvd3t0eXBlOkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUixuYW1lOiJOb3RTdXBwb3J0ZWRFcnJvciIsbWVzc2FnZToiYWRkIGNvbXBvc2l0aW5nIGlzIG5vdCBzdXBwb3J0ZWQifTtpZigicmVwbGFjZSIhPWYpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjb21wb3NpdGUgbW9kZSAiK2YrIi4iKX1lbHNlIGY9ImVhc2luZyI9PWQ/YS5ub3JtYWxpemVFYXNpbmcoZik6IiIrZjtlKGQsZixjKX1yZXR1cm4gdm9pZCAwPT1jLm9mZnNldCYmKGMub2Zmc2V0PW51bGwpLHZvaWQgMD09Yy5lYXNpbmcmJihjLmVhc2luZz0ibGluZWFyIiksY30pLGc9ITAsaD0tMS8wLGk9MDtpPGQubGVuZ3RoO2krKyl7dmFyIGo9ZFtpXS5vZmZzZXQ7aWYobnVsbCE9ail7aWYoajxoKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lcyBhcmUgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldC4gU29ydCBvciBzcGVjaWZ5IG9mZnNldHMuIik7aD1qfWVsc2UgZz0hMX1yZXR1cm4gZD1kLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXQ+PTAmJmEub2Zmc2V0PD0xfSksZ3x8YygpLGR9dmFyIGg9e2JhY2tncm91bmQ6WyJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsImJhY2tncm91bmRPcmlnaW4iLCJiYWNrZ3JvdW5kQ2xpcCIsImJhY2tncm91bmRDb2xvciJdLGJvcmRlcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyVG9wU3R5bGUiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0Q29sb3IiLCJib3JkZXJSaWdodFN0eWxlIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxlZnRXaWR0aCJdLGJvcmRlckJvdHRvbTpbImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21Db2xvciJdLGJvcmRlckNvbG9yOlsiYm9yZGVyVG9wQ29sb3IiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJMZWZ0Q29sb3IiXSxib3JkZXJMZWZ0OlsiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyUmFkaXVzOlsiYm9yZGVyVG9wTGVmdFJhZGl1cyIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzIl0sYm9yZGVyUmlnaHQ6WyJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0Q29sb3IiXSxib3JkZXJUb3A6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wQ29sb3IiXSxib3JkZXJXaWR0aDpbImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyTGVmdFdpZHRoIl0sZmxleDpbImZsZXhHcm93IiwiZmxleFNocmluayIsImZsZXhCYXNpcyJdLGZvbnQ6WyJmb250RmFtaWx5IiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Il0sbWFyZ2luOlsibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0Il0sb3V0bGluZTpbIm91dGxpbmVDb2xvciIsIm91dGxpbmVTdHlsZSIsIm91dGxpbmVXaWR0aCJdLHBhZGRpbmc6WyJwYWRkaW5nVG9wIiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdMZWZ0Il19LGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksaj17dGhpbjoiMXB4IixtZWRpdW06IjNweCIsdGhpY2s6IjVweCJ9LGs9e2JvcmRlckJvdHRvbVdpZHRoOmosYm9yZGVyTGVmdFdpZHRoOmosYm9yZGVyUmlnaHRXaWR0aDpqLGJvcmRlclRvcFdpZHRoOmosZm9udFNpemU6eyJ4eC1zbWFsbCI6IjYwJSIsIngtc21hbGwiOiI3NSUiLHNtYWxsOiI4OSUiLG1lZGl1bToiMTAwJSIsbGFyZ2U6IjEyMCUiLCJ4LWxhcmdlIjoiMTUwJSIsInh4LWxhcmdlIjoiMjAwJSJ9LGZvbnRXZWlnaHQ6e25vcm1hbDoiNDAwIixib2xkOiI3MDAifSxvdXRsaW5lV2lkdGg6aix0ZXh0U2hhZG93Ontub25lOiIwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9LGJveFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggMHB4IHRyYW5zcGFyZW50In19O2EuY29udmVydFRvQXJyYXlGb3JtPWYsYS5ub3JtYWxpemVLZXlmcmFtZXM9Z30oYSksZnVuY3Rpb24oYSl7dmFyIGI9e307YS5pc0RlcHJlY2F0ZWQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiLGc9bmV3IERhdGUsaD1uZXcgRGF0ZShjKTtyZXR1cm4gaC5zZXRNb250aChoLmdldE1vbnRoKCkrMyksIShnPGgmJihhIGluIGJ8fGNvbnNvbGUud2FybigiV2ViIEFuaW1hdGlvbnM6ICIrYSsiICIrZisiIGRlcHJlY2F0ZWQgYW5kIHdpbGwgc3RvcCB3b3JraW5nIG9uICIraC50b0RhdGVTdHJpbmcoKSsiLiAiK2QpLGJbYV09ITAsMSkpfSxhLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiO2lmKGEuaXNEZXByZWNhdGVkKGIsYyxkLGUpKXRocm93IG5ldyBFcnJvcihiKyIgIitmKyIgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIitkKX19KGEpLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFuaW1hdGUpe3ZhciBjPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKFtdLDApLGQ9ITA7aWYoYyYmKGQ9ITEsInBsYXl8Y3VycmVudFRpbWV8cGF1c2V8cmV2ZXJzZXxwbGF5YmFja1JhdGV8Y2FuY2VsfGZpbmlzaHxzdGFydFRpbWV8cGxheVN0YXRlIi5zcGxpdCgifCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dm9pZCAwPT09Y1thXSYmKGQ9ITApfSkpLCFkKXJldHVybn0hZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPXt9LGM9MDtjPGEubGVuZ3RoO2MrKylmb3IodmFyIGQgaW4gYVtjXSlpZigib2Zmc2V0IiE9ZCYmImVhc2luZyIhPWQmJiJjb21wb3NpdGUiIT1kKXt2YXIgZT17b2Zmc2V0OmFbY10ub2Zmc2V0LGVhc2luZzphW2NdLmVhc2luZyx2YWx1ZTphW2NdW2RdfTtiW2RdPWJbZF18fFtdLGJbZF0ucHVzaChlKX1mb3IodmFyIGYgaW4gYil7dmFyIGc9YltmXTtpZigwIT1nWzBdLm9mZnNldHx8MSE9Z1tnLmxlbmd0aC0xXS5vZmZzZXQpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFtZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6IlBhcnRpYWwga2V5ZnJhbWVzIGFyZSBub3Qgc3VwcG9ydGVkIn19cmV0dXJuIGJ9ZnVuY3Rpb24gZShjKXt2YXIgZD1bXTtmb3IodmFyIGUgaW4gYylmb3IodmFyIGY9Y1tlXSxnPTA7ZzxmLmxlbmd0aC0xO2crKyl7dmFyIGg9ZyxpPWcrMSxqPWZbaF0ub2Zmc2V0LGs9ZltpXS5vZmZzZXQsbD1qLG09azswPT1nJiYobD0tMS8wLDA9PWsmJihpPWgpKSxnPT1mLmxlbmd0aC0yJiYobT0xLzAsMT09aiYmKGg9aSkpLGQucHVzaCh7YXBwbHlGcm9tOmwsYXBwbHlUbzptLHN0YXJ0T2Zmc2V0OmZbaF0ub2Zmc2V0LGVuZE9mZnNldDpmW2ldLm9mZnNldCxlYXNpbmdGdW5jdGlvbjphLnBhcnNlRWFzaW5nRnVuY3Rpb24oZltoXS5lYXNpbmcpLHByb3BlcnR5OmUsaW50ZXJwb2xhdGlvbjpiLnByb3BlcnR5SW50ZXJwb2xhdGlvbihlLGZbaF0udmFsdWUsZltpXS52YWx1ZSl9KX1yZXR1cm4gZC5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3RhcnRPZmZzZXQtYi5zdGFydE9mZnNldH0pLGR9Yi5jb252ZXJ0RWZmZWN0SW5wdXQ9ZnVuY3Rpb24oYyl7dmFyIGY9YS5ub3JtYWxpemVLZXlmcmFtZXMoYyksZz1kKGYpLGg9ZShnKTtyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZihudWxsIT1jKWguZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBjPj1hLmFwcGx5RnJvbSYmYzxhLmFwcGx5VG99KS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBlPWMtZC5zdGFydE9mZnNldCxmPWQuZW5kT2Zmc2V0LWQuc3RhcnRPZmZzZXQsZz0wPT1mPzA6ZC5lYXNpbmdGdW5jdGlvbihlL2YpO2IuYXBwbHkoYSxkLnByb3BlcnR5LGQuaW50ZXJwb2xhdGlvbihnKSl9KTtlbHNlIGZvcih2YXIgZCBpbiBnKSJvZmZzZXQiIT1kJiYiZWFzaW5nIiE9ZCYmImNvbXBvc2l0ZSIhPWQmJmIuY2xlYXIoYSxkKX19fShhLGIpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiBhLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBlKGEsYixjKXtoW2NdPWhbY118fFtdLGhbY10ucHVzaChbYSxiXSl9ZnVuY3Rpb24gZihhLGIsYyl7Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspe2UoYSxiLGQoY1tmXSkpfX1mdW5jdGlvbiBnKGMsZSxmKXt2YXIgZz1jOy8tLy50ZXN0KGMpJiYhYS5pc0RlcHJlY2F0ZWQoIkh5cGhlbmF0ZWQgcHJvcGVydHkgbmFtZXMiLCIyMDE2LTAzLTIyIiwiVXNlIGNhbWVsQ2FzZSBpbnN0ZWFkLiIsITApJiYoZz1kKGMpKSwiaW5pdGlhbCIhPWUmJiJpbml0aWFsIiE9Znx8KCJpbml0aWFsIj09ZSYmKGU9aVtnXSksImluaXRpYWwiPT1mJiYoZj1pW2ddKSk7Zm9yKHZhciBqPWU9PWY/W106aFtnXSxrPTA7aiYmazxqLmxlbmd0aDtrKyspe3ZhciBsPWpba11bMF0oZSksbT1qW2tdWzBdKGYpO2lmKHZvaWQgMCE9PWwmJnZvaWQgMCE9PW0pe3ZhciBuPWpba11bMV0obCxtKTtpZihuKXt2YXIgbz1iLkludGVycG9sYXRpb24uYXBwbHkobnVsbCxuKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDA9PWE/ZToxPT1hP2Y6byhhKX19fX1yZXR1cm4gYi5JbnRlcnBvbGF0aW9uKCExLCEwLGZ1bmN0aW9uKGEpe3JldHVybiBhP2Y6ZX0pfXZhciBoPXt9O2IuYWRkUHJvcGVydGllc0hhbmRsZXI9Zjt2YXIgaT17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYmFja2dyb3VuZFBvc2l0aW9uOiIwJSAwJSIsYm9yZGVyQm90dG9tQ29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21XaWR0aDoiM3B4Iixib3JkZXJMZWZ0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyTGVmdFdpZHRoOiIzcHgiLGJvcmRlclJpZ2h0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyUmlnaHRXaWR0aDoiM3B4Iixib3JkZXJTcGFjaW5nOiIycHgiLGJvcmRlclRvcENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclRvcExlZnRSYWRpdXM6IjBweCIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyVG9wV2lkdGg6IjNweCIsYm90dG9tOiJhdXRvIixjbGlwOiJyZWN0KDBweCwgMHB4LCAwcHgsIDBweCkiLGNvbG9yOiJibGFjayIsZm9udFNpemU6IjEwMCUiLGZvbnRXZWlnaHQ6IjQwMCIsaGVpZ2h0OiJhdXRvIixsZWZ0OiJhdXRvIixsZXR0ZXJTcGFjaW5nOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEyMCUiLG1hcmdpbkJvdHRvbToiMHB4IixtYXJnaW5MZWZ0OiIwcHgiLG1hcmdpblJpZ2h0OiIwcHgiLG1hcmdpblRvcDoiMHB4IixtYXhIZWlnaHQ6Im5vbmUiLG1heFdpZHRoOiJub25lIixtaW5IZWlnaHQ6IjBweCIsbWluV2lkdGg6IjBweCIsb3BhY2l0eToiMS4wIixvdXRsaW5lQ29sb3I6ImludmVydCIsb3V0bGluZU9mZnNldDoiMHB4IixvdXRsaW5lV2lkdGg6IjNweCIscGFkZGluZ0JvdHRvbToiMHB4IixwYWRkaW5nTGVmdDoiMHB4IixwYWRkaW5nUmlnaHQ6IjBweCIscGFkZGluZ1RvcDoiMHB4IixyaWdodDoiYXV0byIsc3Ryb2tlRGFzaGFycmF5OiJub25lIixzdHJva2VEYXNob2Zmc2V0OiIwcHgiLHRleHRJbmRlbnQ6IjBweCIsdGV4dFNoYWRvdzoiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQiLHRvcDoiYXV0byIsdHJhbnNmb3JtOiIiLHZlcnRpY2FsQWxpZ246IjBweCIsdmlzaWJpbGl0eToidmlzaWJsZSIsd2lkdGg6ImF1dG8iLHdvcmRTcGFjaW5nOiJub3JtYWwiLHpJbmRleDoiYXV0byJ9O2IucHJvcGVydHlJbnRlcnBvbGF0aW9uPWd9KGEsYiksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYil7dmFyIGM9YS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihiKSxkPWZ1bmN0aW9uKGQpe3JldHVybiBhLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGMsZCxiKX07cmV0dXJuIGQuX3RvdGFsRHVyYXRpb249Yi5kZWxheStjK2IuZW5kRGVsYXksZH1iLktleWZyYW1lRWZmZWN0PWZ1bmN0aW9uKGMsZSxmLGcpe3ZhciBoLGk9ZChhLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGYpKSxqPWIuY29udmVydEVmZmVjdElucHV0KGUpLGs9ZnVuY3Rpb24oKXtqKGMsaCl9O3JldHVybiBrLl91cGRhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPT0oaD1pKGEpKX0say5fY2xlYXI9ZnVuY3Rpb24oKXtqKGMsbnVsbCl9LGsuX2hhc1NhbWVUYXJnZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGM9PT1hfSxrLl90YXJnZXQ9YyxrLl90b3RhbER1cmF0aW9uPWkuX3RvdGFsRHVyYXRpb24say5faWQ9ZyxrfX0oYSxiKSxmdW5jdGlvbihhLGIpe2EuYXBwbHk9ZnVuY3Rpb24oYixjLGQpe2Iuc3R5bGVbYS5wcm9wZXJ0eU5hbWUoYyldPWR9LGEuY2xlYXI9ZnVuY3Rpb24oYixjKXtiLnN0eWxlW2EucHJvcGVydHlOYW1lKGMpXT0iIn19KGIpLGZ1bmN0aW9uKGEpe3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGEudGltZWxpbmUuX3BsYXkoYS5LZXlmcmFtZUVmZmVjdCh0aGlzLGIsYyxkKSl9fShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiLGQpe2lmKCJudW1iZXIiPT10eXBlb2YgYSYmIm51bWJlciI9PXR5cGVvZiBiKXJldHVybiBhKigxLWQpK2IqZDtpZigiYm9vbGVhbiI9PXR5cGVvZiBhJiYiYm9vbGVhbiI9PXR5cGVvZiBiKXJldHVybiBkPC41P2E6YjtpZihhLmxlbmd0aD09Yi5sZW5ndGgpe2Zvcih2YXIgZT1bXSxmPTA7ZjxhLmxlbmd0aDtmKyspZS5wdXNoKGMoYVtmXSxiW2ZdLGQpKTtyZXR1cm4gZX10aHJvdyJNaXNtYXRjaGVkIGludGVycG9sYXRpb24gYXJndW1lbnRzICIrYSsiOiIrYn1hLkludGVycG9sYXRpb249ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZChjKGEsYixlKSl9fX0oYiksZnVuY3Rpb24oYSxiLGMpe2Euc2VxdWVuY2VOdW1iZXI9MDt2YXIgZD1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImZpbmlzaCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfTtiLkFuaW1hdGlvbj1mdW5jdGlvbihiKXt0aGlzLmlkPSIiLGImJmIuX2lkJiYodGhpcy5pZD1iLl9pZCksdGhpcy5fc2VxdWVuY2VOdW1iZXI9YS5zZXF1ZW5jZU51bWJlcisrLHRoaXMuX2N1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSExLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2luVGltZWxpbmU9ITAsdGhpcy5fZmluaXNoZWRGbGFnPSEwLHRoaXMub25maW5pc2g9bnVsbCx0aGlzLl9maW5pc2hIYW5kbGVycz1bXSx0aGlzLl9lZmZlY3Q9Yix0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgwKSx0aGlzLl9pZGxlPSEwLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfZW5zdXJlQWxpdmU6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZTwwJiYwPT09dGhpcy5jdXJyZW50VGltZT90aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgtMSk6dGhpcy5faW5FZmZlY3Q9dGhpcy5fZWZmZWN0Ll91cGRhdGUodGhpcy5jdXJyZW50VGltZSksdGhpcy5faW5UaW1lbGluZXx8IXRoaXMuX2luRWZmZWN0JiZ0aGlzLl9maW5pc2hlZEZsYWd8fCh0aGlzLl9pblRpbWVsaW5lPSEwLGIudGltZWxpbmUuX2FuaW1hdGlvbnMucHVzaCh0aGlzKSl9LF90aWNrQ3VycmVudFRpbWU6ZnVuY3Rpb24oYSxiKXthIT10aGlzLl9jdXJyZW50VGltZSYmKHRoaXMuX2N1cnJlbnRUaW1lPWEsdGhpcy5faXNGaW5pc2hlZCYmIWImJih0aGlzLl9jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD90aGlzLl90b3RhbER1cmF0aW9uOjApLHRoaXMuX2Vuc3VyZUFsaXZlKCkpfSxnZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5faWRsZXx8dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nP251bGw6dGhpcy5fY3VycmVudFRpbWV9LHNldCBjdXJyZW50VGltZShhKXthPSthLGlzTmFOKGEpfHwoYi5yZXN0YXJ0KCksdGhpcy5fcGF1c2VkfHxudWxsPT10aGlzLl9zdGFydFRpbWV8fCh0aGlzLl9zdGFydFRpbWU9dGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtYS90aGlzLl9wbGF5YmFja1JhdGUpLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSx0aGlzLl9jdXJyZW50VGltZSE9YSYmKHRoaXMuX2lkbGUmJih0aGlzLl9pZGxlPSExLHRoaXMuX3BhdXNlZD0hMCksdGhpcy5fdGlja0N1cnJlbnRUaW1lKGEsITApLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKSl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lfSxzZXQgc3RhcnRUaW1lKGEpe2E9K2EsaXNOYU4oYSl8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZXx8KHRoaXMuX3N0YXJ0VGltZT1hLHRoaXMuX3RpY2tDdXJyZW50VGltZSgodGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSksYi5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXtpZihhIT10aGlzLl9wbGF5YmFja1JhdGUpe3ZhciBjPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fcGxheWJhY2tSYXRlPWEsdGhpcy5fc3RhcnRUaW1lPW51bGwsInBhdXNlZCIhPXRoaXMucGxheVN0YXRlJiYiaWRsZSIhPXRoaXMucGxheVN0YXRlJiYodGhpcy5fZmluaXNoZWRGbGFnPSExLHRoaXMuX2lkbGU9ITEsdGhpcy5fZW5zdXJlQWxpdmUoKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSksbnVsbCE9YyYmKHRoaXMuY3VycmVudFRpbWU9Yyl9fSxnZXQgX2lzRmluaXNoZWQoKXtyZXR1cm4hdGhpcy5faWRsZSYmKHRoaXMuX3BsYXliYWNrUmF0ZT4wJiZ0aGlzLl9jdXJyZW50VGltZT49dGhpcy5fdG90YWxEdXJhdGlvbnx8dGhpcy5fcGxheWJhY2tSYXRlPDAmJnRoaXMuX2N1cnJlbnRUaW1lPD0wKX0sZ2V0IF90b3RhbER1cmF0aW9uKCl7cmV0dXJuIHRoaXMuX2VmZmVjdC5fdG90YWxEdXJhdGlvbn0sZ2V0IHBsYXlTdGF0ZSgpe3JldHVybiB0aGlzLl9pZGxlPyJpZGxlIjpudWxsPT10aGlzLl9zdGFydFRpbWUmJiF0aGlzLl9wYXVzZWQmJjAhPXRoaXMucGxheWJhY2tSYXRlfHx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc/InBlbmRpbmciOnRoaXMuX3BhdXNlZD8icGF1c2VkIjp0aGlzLl9pc0ZpbmlzaGVkPyJmaW5pc2hlZCI6InJ1bm5pbmcifSxfcmV3aW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5fcGxheWJhY2tSYXRlPj0wKXRoaXMuX2N1cnJlbnRUaW1lPTA7ZWxzZXtpZighKHRoaXMuX3RvdGFsRHVyYXRpb248MS8wKSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJVbmFibGUgdG8gcmV3aW5kIG5lZ2F0aXZlIHBsYXliYWNrIHJhdGUgYW5pbWF0aW9uIHdpdGggaW5maW5pdGUgZHVyYXRpb24iLCJJbnZhbGlkU3RhdGVFcnJvciIpO3RoaXMuX2N1cnJlbnRUaW1lPXRoaXMuX3RvdGFsRHVyYXRpb259fSxwbGF5OmZ1bmN0aW9uKCl7dGhpcy5fcGF1c2VkPSExLCh0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl9pZGxlKSYmKHRoaXMuX3Jld2luZCgpLHRoaXMuX3N0YXJ0VGltZT1udWxsKSx0aGlzLl9maW5pc2hlZEZsYWc9ITEsdGhpcy5faWRsZT0hMSx0aGlzLl9lbnN1cmVBbGl2ZSgpLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZT90aGlzLl9pZGxlJiYodGhpcy5fcmV3aW5kKCksdGhpcy5faWRsZT0hMSk6dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSEwLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuX3BhdXNlZD0hMH0sZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5faWRsZXx8KHRoaXMuY3VycmVudFRpbWU9dGhpcy5fcGxheWJhY2tSYXRlPjA/dGhpcy5fdG90YWxEdXJhdGlvbjowLHRoaXMuX3N0YXJ0VGltZT10aGlzLl90b3RhbER1cmF0aW9uLXRoaXMuY3VycmVudFRpbWUsdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5faW5FZmZlY3QmJih0aGlzLl9pbkVmZmVjdD0hMSx0aGlzLl9pZGxlPSEwLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9maW5pc2hlZEZsYWc9ITAsdGhpcy5fY3VycmVudFRpbWU9MCx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLl9lZmZlY3QuX3VwZGF0ZShudWxsKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSl9LHJldmVyc2U6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZSo9LTEsdGhpcy5wbGF5KCl9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXsiZnVuY3Rpb24iPT10eXBlb2YgYiYmImZpbmlzaCI9PWEmJnRoaXMuX2ZpbmlzaEhhbmRsZXJzLnB1c2goYil9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXtpZigiZmluaXNoIj09YSl7dmFyIGM9dGhpcy5fZmluaXNoSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9maW5pc2hIYW5kbGVycy5zcGxpY2UoYywxKX19LF9maXJlRXZlbnRzOmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2lzRmluaXNoZWQpe2lmKCF0aGlzLl9maW5pc2hlZEZsYWcpe3ZhciBiPW5ldyBkKHRoaXMsdGhpcy5fY3VycmVudFRpbWUsYSksYz10aGlzLl9maW5pc2hIYW5kbGVycy5jb25jYXQodGhpcy5vbmZpbmlzaD9bdGhpcy5vbmZpbmlzaF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGIudGFyZ2V0LGIpfSl9LDApLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMH19ZWxzZSB0aGlzLl9maW5pc2hlZEZsYWc9ITF9LF90aWNrOmZ1bmN0aW9uKGEsYil7dGhpcy5faWRsZXx8dGhpcy5fcGF1c2VkfHwobnVsbD09dGhpcy5fc3RhcnRUaW1lP2ImJih0aGlzLnN0YXJ0VGltZT1hLXRoaXMuX2N1cnJlbnRUaW1lL3RoaXMucGxheWJhY2tSYXRlKTp0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl90aWNrQ3VycmVudFRpbWUoKGEtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSkpLGImJih0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsdGhpcy5fZmlyZUV2ZW50cyhhKSl9LGdldCBfbmVlZHNUaWNrKCl7cmV0dXJuIHRoaXMucGxheVN0YXRlIGlue3BlbmRpbmc6MSxydW5uaW5nOjF9fHwhdGhpcy5fZmluaXNoZWRGbGFnfSxfdGFyZ2V0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2VmZmVjdC5fdGFyZ2V0O3JldHVybiBhLl9hY3RpdmVBbmltYXRpb25zfHwoYS5fYWN0aXZlQW5pbWF0aW9ucz1bXSksYS5fYWN0aXZlQW5pbWF0aW9uc30sX21hcmtUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90YXJnZXRBbmltYXRpb25zKCk7LTE9PT1hLmluZGV4T2YodGhpcykmJmEucHVzaCh0aGlzKX0sX3VubWFya1RhcmdldDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3RhcmdldEFuaW1hdGlvbnMoKSxiPWEuaW5kZXhPZih0aGlzKTstMSE9PWImJmEuc3BsaWNlKGIsMSl9fX0oYSxiKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXt2YXIgYj1qO2o9W10sYTxxLmN1cnJlbnRUaW1lJiYoYT1xLmN1cnJlbnRUaW1lKSxxLl9hbmltYXRpb25zLnNvcnQoZSkscS5fYW5pbWF0aW9ucz1oKGEsITAscS5fYW5pbWF0aW9ucylbMF0sYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMV0oYSl9KSxnKCksbD12b2lkIDB9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBhLl9zZXF1ZW5jZU51bWJlci1iLl9zZXF1ZW5jZU51bWJlcn1mdW5jdGlvbiBmKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOjB9ZnVuY3Rpb24gZygpe28uZm9yRWFjaChmdW5jdGlvbihhKXthKCl9KSxvLmxlbmd0aD0wfWZ1bmN0aW9uIGgoYSxjLGQpe3A9ITAsbj0hMSxiLnRpbWVsaW5lLmN1cnJlbnRUaW1lPWEsbT0hMTt2YXIgZT1bXSxmPVtdLGc9W10saD1bXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuX3RpY2soYSxjKSxiLl9pbkVmZmVjdD8oZi5wdXNoKGIuX2VmZmVjdCksYi5fbWFya1RhcmdldCgpKTooZS5wdXNoKGIuX2VmZmVjdCksYi5fdW5tYXJrVGFyZ2V0KCkpLGIuX25lZWRzVGljayYmKG09ITApO3ZhciBkPWIuX2luRWZmZWN0fHxiLl9uZWVkc1RpY2s7Yi5faW5UaW1lbGluZT1kLGQ/Zy5wdXNoKGIpOmgucHVzaChiKX0pLG8ucHVzaC5hcHBseShvLGUpLG8ucHVzaC5hcHBseShvLGYpLG0mJnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLHA9ITEsW2csaF19dmFyIGk9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxqPVtdLGs9MDt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe3ZhciBiPWsrKztyZXR1cm4gMD09ai5sZW5ndGgmJmkoZCksai5wdXNoKFtiLGFdKSxifSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7ai5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMF09PWEmJihiWzFdPWZ1bmN0aW9uKCl7fSl9KX0sZi5wcm90b3R5cGU9e19wbGF5OmZ1bmN0aW9uKGMpe2MuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMudGltaW5nKTt2YXIgZD1uZXcgYi5BbmltYXRpb24oYyk7cmV0dXJuIGQuX2lkbGU9ITEsZC5fdGltZWxpbmU9dGhpcyx0aGlzLl9hbmltYXRpb25zLnB1c2goZCksYi5yZXN0YXJ0KCksYi5hcHBseURpcnRpZWRBbmltYXRpb24oZCksZH19O3ZhciBsPXZvaWQgMCxtPSExLG49ITE7Yi5yZXN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG18fChtPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLG49ITApLG59LGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uPWZ1bmN0aW9uKGEpe2lmKCFwKXthLl9tYXJrVGFyZ2V0KCk7dmFyIGM9YS5fdGFyZ2V0QW5pbWF0aW9ucygpO2Muc29ydChlKSxoKGIudGltZWxpbmUuY3VycmVudFRpbWUsITEsYy5zbGljZSgpKVsxXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXEuX2FuaW1hdGlvbnMuaW5kZXhPZihhKTstMSE9PWImJnEuX2FuaW1hdGlvbnMuc3BsaWNlKGIsMSl9KSxnKCl9fTt2YXIgbz1bXSxwPSExLHE9bmV3IGY7Yi50aW1lbGluZT1xfShhLGIpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiKXt2YXIgYz1hLmV4ZWMoYik7aWYoYylyZXR1cm4gYz1hLmlnbm9yZUNhc2U/Y1swXS50b0xvd2VyQ2FzZSgpOmNbMF0sW2MsYi5zdWJzdHIoYy5sZW5ndGgpXX1mdW5jdGlvbiBjKGEsYil7Yj1iLnJlcGxhY2UoL15ccyovLCIiKTt2YXIgYz1hKGIpO2lmKGMpcmV0dXJuW2NbMF0sY1sxXS5yZXBsYWNlKC9eXHMqLywiIildfWZ1bmN0aW9uIGQoYSxkLGUpe2E9Yy5iaW5kKG51bGwsYSk7Zm9yKHZhciBmPVtdOzspe3ZhciBnPWEoZSk7aWYoIWcpcmV0dXJuW2YsZV07aWYoZi5wdXNoKGdbMF0pLGU9Z1sxXSwhKGc9YihkLGUpKXx8IiI9PWdbMV0pcmV0dXJuW2YsZV07ZT1nWzFdfX1mdW5jdGlvbiBlKGEsYil7Zm9yKHZhciBjPTAsZD0wO2Q8Yi5sZW5ndGgmJighL1xzfCwvLnRlc3QoYltkXSl8fDAhPWMpO2QrKylpZigiKCI9PWJbZF0pYysrO2Vsc2UgaWYoIikiPT1iW2RdJiYoYy0tLDA9PWMmJmQrKyxjPD0wKSlicmVhazt2YXIgZT1hKGIuc3Vic3RyKDAsZCkpO3JldHVybiB2b2lkIDA9PWU/dm9pZCAwOltlLGIuc3Vic3RyKGQpXX1mdW5jdGlvbiBmKGEsYil7Zm9yKHZhciBjPWEsZD1iO2MmJmQ7KWM+ZD9jJT1kOmQlPWM7cmV0dXJuIGM9YSpiLyhjK2QpfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWEoYik7cmV0dXJuIGMmJihjWzBdPXZvaWQgMCksY319ZnVuY3Rpb24gaChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYShjKXx8W2IsY119fWZ1bmN0aW9uIGkoYixjKXtmb3IodmFyIGQ9W10sZT0wO2U8Yi5sZW5ndGg7ZSsrKXt2YXIgZj1hLmNvbnN1bWVUcmltbWVkKGJbZV0sYyk7aWYoIWZ8fCIiPT1mWzBdKXJldHVybjt2b2lkIDAhPT1mWzBdJiZkLnB1c2goZlswXSksYz1mWzFdfWlmKCIiPT1jKXJldHVybiBkfWZ1bmN0aW9uIGooYSxiLGMsZCxlKXtmb3IodmFyIGc9W10saD1bXSxpPVtdLGo9ZihkLmxlbmd0aCxlLmxlbmd0aCksaz0wO2s8ajtrKyspe3ZhciBsPWIoZFtrJWQubGVuZ3RoXSxlW2slZS5sZW5ndGhdKTtpZighbClyZXR1cm47Zy5wdXNoKGxbMF0pLGgucHVzaChsWzFdKSxpLnB1c2gobFsyXSl9cmV0dXJuW2csaCxmdW5jdGlvbihiKXt2YXIgZD1iLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBpW2JdKGEpfSkuam9pbihjKTtyZXR1cm4gYT9hKGQpOmR9XX1mdW5jdGlvbiBrKGEsYixjKXtmb3IodmFyIGQ9W10sZT1bXSxmPVtdLGc9MCxoPTA7aDxjLmxlbmd0aDtoKyspaWYoImZ1bmN0aW9uIj09dHlwZW9mIGNbaF0pe3ZhciBpPWNbaF0oYVtnXSxiW2crK10pO2QucHVzaChpWzBdKSxlLnB1c2goaVsxXSksZi5wdXNoKGlbMl0pfWVsc2UhZnVuY3Rpb24oYSl7ZC5wdXNoKCExKSxlLnB1c2goITEpLGYucHVzaChmdW5jdGlvbigpe3JldHVybiBjW2FdfSl9KGgpO3JldHVybltkLGUsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1mW2NdKGFbY10pO3JldHVybiBifV19YS5jb25zdW1lVG9rZW49YixhLmNvbnN1bWVUcmltbWVkPWMsYS5jb25zdW1lUmVwZWF0ZWQ9ZCxhLmNvbnN1bWVQYXJlbnRoZXNpc2VkPWUsYS5pZ25vcmU9ZyxhLm9wdGlvbmFsPWgsYS5jb25zdW1lTGlzdD1pLGEubWVyZ2VOZXN0ZWRSZXBlYXRlZD1qLmJpbmQobnVsbCxudWxsKSxhLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkPWosYS5tZXJnZUxpc3Q9a30oYiksZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiKXtmdW5jdGlvbiBjKGIpe3ZhciBjPWEuY29uc3VtZVRva2VuKC9eaW5zZXQvaSxiKTtyZXR1cm4gYz8oZC5pbnNldD0hMCxjKTooYz1hLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYikpPyhkLmxlbmd0aHMucHVzaChjWzBdKSxjKTooYz1hLmNvbnN1bWVDb2xvcihiKSxjPyhkLmNvbG9yPWNbMF0sYyk6dm9pZCAwKX12YXIgZD17aW5zZXQ6ITEsbGVuZ3RoczpbXSxjb2xvcjpudWxsfSxlPWEuY29uc3VtZVJlcGVhdGVkKGMsL14vLGIpO2lmKGUmJmVbMF0ubGVuZ3RoKXJldHVybltkLGVbMV1dfWZ1bmN0aW9uIGMoYyl7dmFyIGQ9YS5jb25zdW1lUmVwZWF0ZWQoYiwvXiwvLGMpO2lmKGQmJiIiPT1kWzFdKXJldHVybiBkWzBdfWZ1bmN0aW9uIGQoYixjKXtmb3IoO2IubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYi5sZW5ndGhzLnB1c2goe3B4OjB9KTtmb3IoO2MubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYy5sZW5ndGhzLnB1c2goe3B4OjB9KTtpZihiLmluc2V0PT1jLmluc2V0JiYhIWIuY29sb3I9PSEhYy5jb2xvcil7Zm9yKHZhciBkLGU9W10sZj1bW10sMF0sZz1bW10sMF0saD0wO2g8Yi5sZW5ndGhzLmxlbmd0aDtoKyspe3ZhciBpPWEubWVyZ2VEaW1lbnNpb25zKGIubGVuZ3Roc1toXSxjLmxlbmd0aHNbaF0sMj09aCk7ZlswXS5wdXNoKGlbMF0pLGdbMF0ucHVzaChpWzFdKSxlLnB1c2goaVsyXSl9aWYoYi5jb2xvciYmYy5jb2xvcil7dmFyIGo9YS5tZXJnZUNvbG9ycyhiLmNvbG9yLGMuY29sb3IpO2ZbMV09alswXSxnWzFdPWpbMV0sZD1qWzJdfXJldHVybltmLGcsZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWIuaW5zZXQ/Imluc2V0ICI6IiAiLGY9MDtmPGUubGVuZ3RoO2YrKyljKz1lW2ZdKGFbMF1bZl0pKyIgIjtyZXR1cm4gZCYmKGMrPWQoYVsxXSkpLGN9XX19ZnVuY3Rpb24gZShiLGMsZCxlKXtmdW5jdGlvbiBmKGEpe3JldHVybntpbnNldDphLGNvbG9yOlswLDAsMCwwXSxsZW5ndGhzOlt7cHg6MH0se3B4OjB9LHtweDowfSx7cHg6MH1dfX1mb3IodmFyIGc9W10saD1bXSxpPTA7aTxkLmxlbmd0aHx8aTxlLmxlbmd0aDtpKyspe3ZhciBqPWRbaV18fGYoZVtpXS5pbnNldCksaz1lW2ldfHxmKGRbaV0uaW5zZXQpO2cucHVzaChqKSxoLnB1c2goayl9cmV0dXJuIGEubWVyZ2VOZXN0ZWRSZXBlYXRlZChiLGMsZyxoKX12YXIgZj1lLmJpbmQobnVsbCxkLCIsICIpO2EuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmLFsiYm94LXNoYWRvdyIsInRleHQtc2hhZG93Il0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGEudG9GaXhlZCgzKS5yZXBsYWNlKC8wKyQvLCIiKS5yZXBsYWNlKC9cLiQvLCIiKX1mdW5jdGlvbiBkKGEsYixjKXtyZXR1cm4gTWF0aC5taW4oYixNYXRoLm1heChhLGMpKX1mdW5jdGlvbiBlKGEpe2lmKC9eXHMqWy0rXT8oXGQqXC4pP1xkK1xzKiQvLnRlc3QoYSkpcmV0dXJuIE51bWJlcihhKX1mdW5jdGlvbiBmKGEsYil7cmV0dXJuW2EsYixjXX1mdW5jdGlvbiBnKGEsYil7aWYoMCE9YSlyZXR1cm4gaSgwLDEvMCkoYSxiKX1mdW5jdGlvbiBoKGEsYil7cmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5yb3VuZChkKDEsMS8wLGEpKX1dfWZ1bmN0aW9uIGkoYSxiKXtyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1cm5bZSxmLGZ1bmN0aW9uKGUpe3JldHVybiBjKGQoYSxiLGUpKX1dfX1mdW5jdGlvbiBqKGEpe3ZhciBiPWEudHJpbSgpLnNwbGl0KC9ccypbXHMsXVxzKi8pO2lmKDAhPT1iLmxlbmd0aCl7Zm9yKHZhciBjPVtdLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGY9ZShiW2RdKTtpZih2b2lkIDA9PT1mKXJldHVybjtjLnB1c2goZil9cmV0dXJuIGN9fWZ1bmN0aW9uIGsoYSxiKXtpZihhLmxlbmd0aD09Yi5sZW5ndGgpcmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoYykuam9pbigiICIpfV19ZnVuY3Rpb24gbChhLGIpe3JldHVyblthLGIsTWF0aC5yb3VuZF19YS5jbGFtcD1kLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaixrLFsic3Ryb2tlLWRhc2hhcnJheSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEvMCksWyJib3JkZXItaW1hZ2Utd2lkdGgiLCJsaW5lLWhlaWdodCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEpLFsib3BhY2l0eSIsInNoYXBlLWltYWdlLXRocmVzaG9sZCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsZyxbImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxoLFsib3JwaGFucyIsIndpZG93cyJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsbCxbInotaW5kZXgiXSksYS5wYXJzZU51bWJlcj1lLGEucGFyc2VOdW1iZXJMaXN0PWosYS5tZXJnZU51bWJlcnM9ZixhLm51bWJlclRvU3RyaW5nPWN9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIpe2lmKCJ2aXNpYmxlIj09YXx8InZpc2libGUiPT1iKXJldHVyblswLDEsZnVuY3Rpb24oYyl7cmV0dXJuIGM8PTA/YTpjPj0xP2I6InZpc2libGUifV19YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihTdHJpbmcsYyxbInZpc2liaWxpdHkiXSl9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXthPWEudHJpbSgpLGYuZmlsbFN0eWxlPSIjMDAwIixmLmZpbGxTdHlsZT1hO3ZhciBiPWYuZmlsbFN0eWxlO2lmKGYuZmlsbFN0eWxlPSIjZmZmIixmLmZpbGxTdHlsZT1hLGI9PWYuZmlsbFN0eWxlKXtmLmZpbGxSZWN0KDAsMCwxLDEpO3ZhciBjPWYuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGE7Zi5jbGVhclJlY3QoMCwwLDEsMSk7dmFyIGQ9Y1szXS8yNTU7cmV0dXJuW2NbMF0qZCxjWzFdKmQsY1syXSpkLGRdfX1mdW5jdGlvbiBkKGIsYyl7cmV0dXJuW2IsYyxmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxhKSl9aWYoYlszXSlmb3IodmFyIGQ9MDtkPDM7ZCsrKWJbZF09TWF0aC5yb3VuZChjKGJbZF0vYlszXSkpO3JldHVybiBiWzNdPWEubnVtYmVyVG9TdHJpbmcoYS5jbGFtcCgwLDEsYlszXSkpLCJyZ2JhKCIrYi5qb2luKCIsIikrIikifV19dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7ZS53aWR0aD1lLmhlaWdodD0xO3ZhciBmPWUuZ2V0Q29udGV4dCgiMmQiKTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGMsZCxbImJhY2tncm91bmQtY29sb3IiLCJib3JkZXItYm90dG9tLWNvbG9yIiwiYm9yZGVyLWxlZnQtY29sb3IiLCJib3JkZXItcmlnaHQtY29sb3IiLCJib3JkZXItdG9wLWNvbG9yIiwiY29sb3IiLCJmaWxsIiwiZmxvb2QtY29sb3IiLCJsaWdodGluZy1jb2xvciIsIm91dGxpbmUtY29sb3IiLCJzdG9wLWNvbG9yIiwic3Ryb2tlIiwidGV4dC1kZWNvcmF0aW9uLWNvbG9yIl0pLGEuY29uc3VtZUNvbG9yPWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGMpLGEubWVyZ2VDb2xvcnM9ZH0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2Z1bmN0aW9uIGIoKXt2YXIgYj1oLmV4ZWMoYSk7Zz1iP2JbMF06dm9pZCAwfWZ1bmN0aW9uIGMoKXt2YXIgYT1OdW1iZXIoZyk7cmV0dXJuIGIoKSxhfWZ1bmN0aW9uIGQoKXtpZigiKCIhPT1nKXJldHVybiBjKCk7YigpO3ZhciBhPWYoKTtyZXR1cm4iKSIhPT1nP05hTjooYigpLGEpfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9ZCgpOyIqIj09PWd8fCIvIj09PWc7KXt2YXIgYz1nO2IoKTt2YXIgZT1kKCk7IioiPT09Yz9hKj1lOmEvPWV9cmV0dXJuIGF9ZnVuY3Rpb24gZigpe2Zvcih2YXIgYT1lKCk7IisiPT09Z3x8Ii0iPT09Zzspe3ZhciBjPWc7YigpO3ZhciBkPWUoKTsiKyI9PT1jP2ErPWQ6YS09ZH1yZXR1cm4gYX12YXIgZyxoPS8oW1wrXC1cd1wuXSt8W1woXClcKlwvXSkvZztyZXR1cm4gYigpLGYoKX1mdW5jdGlvbiBkKGEsYil7aWYoIjAiPT0oYj1iLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSYmInB4Ii5zZWFyY2goYSk+PTApcmV0dXJue3B4OjB9O2lmKC9eW14oXSokfF5jYWxjLy50ZXN0KGIpKXtiPWIucmVwbGFjZSgvY2FsY1woL2csIigiKTt2YXIgZD17fTtiPWIucmVwbGFjZShhLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdPW51bGwsIlUiK2F9KTtmb3IodmFyIGU9IlUoIithLnNvdXJjZSsiKSIsZj1iLnJlcGxhY2UoL1stK10/KFxkKlwuKT9cZCsoW0VlXVstK10/XGQrKT8vZywiTiIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiTiIrZSwiZyIpLCJEIikucmVwbGFjZSgvXHNbKy1dXHMvZywiTyIpLnJlcGxhY2UoL1xzL2csIiIpLGc9Wy9OXCooRCkvZywvKE58RClbKlwvXU4vZywvKE58RClPXDEvZywvXCgoTnxEKVwpL2ddLGg9MDtoPGcubGVuZ3RoOylnW2hdLnRlc3QoZik/KGY9Zi5yZXBsYWNlKGdbaF0sIiQxIiksaD0wKTpoKys7aWYoIkQiPT1mKXtmb3IodmFyIGkgaW4gZCl7dmFyIGo9YyhiLnJlcGxhY2UobmV3IFJlZ0V4cCgiVSIraSwiZyIpLCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoZSwiZyIpLCIqMCIpKTtpZighaXNGaW5pdGUoaikpcmV0dXJuO2RbaV09an1yZXR1cm4gZH19fWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gZihhLGIsITApfWZ1bmN0aW9uIGYoYixjLGQpe3ZhciBlLGY9W107Zm9yKGUgaW4gYilmLnB1c2goZSk7Zm9yKGUgaW4gYylmLmluZGV4T2YoZSk8MCYmZi5wdXNoKGUpO3JldHVybiBiPWYubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfHwwfSksYz1mLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gY1thXXx8MH0pLFtiLGMsZnVuY3Rpb24oYil7dmFyIGM9Yi5tYXAoZnVuY3Rpb24oYyxlKXtyZXR1cm4gMT09Yi5sZW5ndGgmJmQmJihjPU1hdGgubWF4KGMsMCkpLGEubnVtYmVyVG9TdHJpbmcoYykrZltlXX0pLmpvaW4oIiArICIpO3JldHVybiBiLmxlbmd0aD4xPyJjYWxjKCIrYysiKSI6Y31dfXZhciBnPSJweHxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjIixoPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZywiZyIpKSxpPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZysifCUiLCJnIikpLGo9ZC5iaW5kKG51bGwsL2RlZ3xyYWR8Z3JhZHx0dXJuL2cpO2EucGFyc2VMZW5ndGg9aCxhLnBhcnNlTGVuZ3RoT3JQZXJjZW50PWksYS5jb25zdW1lTGVuZ3RoT3JQZXJjZW50PWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGkpLGEucGFyc2VBbmdsZT1qLGEubWVyZ2VEaW1lbnNpb25zPWY7dmFyIGs9YS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsaCksbD1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxrLC9eLyksbT1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxsLC9eLC8pO2EuY29uc3VtZVNpemVQYWlyTGlzdD1tO3ZhciBuPWZ1bmN0aW9uKGEpe3ZhciBiPW0oYSk7aWYoYiYmIiI9PWJbMV0pcmV0dXJuIGJbMF19LG89YS5tZXJnZU5lc3RlZFJlcGVhdGVkLmJpbmQodm9pZCAwLGUsIiAiKSxwPWEubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxvLCIsIik7YS5tZXJnZU5vbk5lZ2F0aXZlU2l6ZVBhaXI9byxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKG4scCxbImJhY2tncm91bmQtc2l6ZSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGksZSxbImJvcmRlci1ib3R0b20td2lkdGgiLCJib3JkZXItaW1hZ2Utd2lkdGgiLCJib3JkZXItbGVmdC13aWR0aCIsImJvcmRlci1yaWdodC13aWR0aCIsImJvcmRlci10b3Atd2lkdGgiLCJmbGV4LWJhc2lzIiwiZm9udC1zaXplIiwiaGVpZ2h0IiwibGluZS1oZWlnaHQiLCJtYXgtaGVpZ2h0IiwibWF4LXdpZHRoIiwib3V0bGluZS13aWR0aCIsIndpZHRoIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaSxmLFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwiYm90dG9tIiwibGVmdCIsImxldHRlci1zcGFjaW5nIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsIm1pbi1oZWlnaHQiLCJtaW4td2lkdGgiLCJvdXRsaW5lLW9mZnNldCIsInBhZGRpbmctYm90dG9tIiwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCIsInBhZGRpbmctdG9wIiwicGVyc3BlY3RpdmUiLCJyaWdodCIsInNoYXBlLW1hcmdpbiIsInN0cm9rZS1kYXNob2Zmc2V0IiwidGV4dC1pbmRlbnQiLCJ0b3AiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndvcmQtc3BhY2luZyJdKX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGIpe3JldHVybiBhLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYil8fGEuY29uc3VtZVRva2VuKC9eYXV0by8sYil9ZnVuY3Rpb24gZChiKXt2YXIgZD1hLmNvbnN1bWVMaXN0KFthLmlnbm9yZShhLmNvbnN1bWVUb2tlbi5iaW5kKG51bGwsL15yZWN0LykpLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwoLykpLGEuY29uc3VtZVJlcGVhdGVkLmJpbmQobnVsbCxjLC9eLC8pLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwpLykpXSxiKTtpZihkJiY0PT1kWzBdLmxlbmd0aClyZXR1cm4gZFswXX1mdW5jdGlvbiBlKGIsYyl7cmV0dXJuImF1dG8iPT1ifHwiYXV0byI9PWM/WyEwLCExLGZ1bmN0aW9uKGQpe3ZhciBlPWQ/YjpjO2lmKCJhdXRvIj09ZSlyZXR1cm4iYXV0byI7dmFyIGY9YS5tZXJnZURpbWVuc2lvbnMoZSxlKTtyZXR1cm4gZlsyXShmWzBdKX1dOmEubWVyZ2VEaW1lbnNpb25zKGIsYyl9ZnVuY3Rpb24gZihhKXtyZXR1cm4icmVjdCgiK2ErIikifXZhciBnPWEubWVyZ2VXcmFwcGVkTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGYsZSwiLCAiKTthLnBhcnNlQm94PWQsYS5tZXJnZUJveGVzPWcsYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihkLGcsWyJjbGlwIl0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPTA7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09az9iW2MrK106YX0pfX1mdW5jdGlvbiBkKGEpe3JldHVybiBhfWZ1bmN0aW9uIGUoYil7aWYoIm5vbmUiPT0oYj1iLnRvTG93ZXJDYXNlKCkudHJpbSgpKSlyZXR1cm5bXTtmb3IodmFyIGMsZD0vXHMqKFx3KylcKChbXildKilcKS9nLGU9W10sZj0wO2M9ZC5leGVjKGIpOyl7aWYoYy5pbmRleCE9ZilyZXR1cm47Zj1jLmluZGV4K2NbMF0ubGVuZ3RoO3ZhciBnPWNbMV0saD1uW2ddO2lmKCFoKXJldHVybjt2YXIgaT1jWzJdLnNwbGl0KCIsIiksaj1oWzBdO2lmKGoubGVuZ3RoPGkubGVuZ3RoKXJldHVybjtmb3IodmFyIGs9W10sbz0wO288ai5sZW5ndGg7bysrKXt2YXIgcCxxPWlbb10scj1qW29dO2lmKHZvaWQgMD09PShwPXE/e0E6ZnVuY3Rpb24oYil7cmV0dXJuIjAiPT1iLnRyaW0oKT9tOmEucGFyc2VBbmdsZShiKX0sTjphLnBhcnNlTnVtYmVyLFQ6YS5wYXJzZUxlbmd0aE9yUGVyY2VudCxMOmEucGFyc2VMZW5ndGh9W3IudG9VcHBlckNhc2UoKV0ocSk6e2E6bSxuOmtbMF0sdDpsfVtyXSkpcmV0dXJuO2sucHVzaChwKX1pZihlLnB1c2goe3Q6ZyxkOmt9KSxkLmxhc3RJbmRleD09Yi5sZW5ndGgpcmV0dXJuIGV9fWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEudG9GaXhlZCg2KS5yZXBsYWNlKCIuMDAwMDAwIiwiIil9ZnVuY3Rpb24gZyhiLGMpe2lmKGIuZGVjb21wb3NpdGlvblBhaXIhPT1jKXtiLmRlY29tcG9zaXRpb25QYWlyPWM7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbihiKX1pZihjLmRlY29tcG9zaXRpb25QYWlyIT09Yil7Yy5kZWNvbXBvc2l0aW9uUGFpcj1iO3ZhciBlPWEubWFrZU1hdHJpeERlY29tcG9zaXRpb24oYyl9cmV0dXJuIG51bGw9PWRbMF18fG51bGw9PWVbMF0/W1shMV0sWyEwXSxmdW5jdGlvbihhKXtyZXR1cm4gYT9jWzBdLmQ6YlswXS5kfV06KGRbMF0ucHVzaCgwKSxlWzBdLnB1c2goMSksW2QsZSxmdW5jdGlvbihiKXt2YXIgYz1hLnF1YXQoZFswXVszXSxlWzBdWzNdLGJbNV0pO3JldHVybiBhLmNvbXBvc2VNYXRyaXgoYlswXSxiWzFdLGJbMl0sYyxiWzRdKS5tYXAoZikuam9pbigiLCIpfV0pfWZ1bmN0aW9uIGgoYSl7cmV0dXJuIGEucmVwbGFjZSgvW3h5XS8sIiIpfWZ1bmN0aW9uIGkoYSl7cmV0dXJuIGEucmVwbGFjZSgvKHh8eXx6fDNkKT8kLywiM2QiKX1mdW5jdGlvbiBqKGIsYyl7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbiYmITAsZT0hMTtpZighYi5sZW5ndGh8fCFjLmxlbmd0aCl7Yi5sZW5ndGh8fChlPSEwLGI9YyxjPVtdKTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGo9YltmXS50LGs9YltmXS5kLGw9InNjYWxlIj09ai5zdWJzdHIoMCw1KT8xOjA7Yy5wdXNoKHt0OmosZDprLm1hcChmdW5jdGlvbihhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGw7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1sO3JldHVybiBifSl9KX19dmFyIG09ZnVuY3Rpb24oYSxiKXtyZXR1cm4icGVyc3BlY3RpdmUiPT1hJiYicGVyc3BlY3RpdmUiPT1ifHwoIm1hdHJpeCI9PWF8fCJtYXRyaXgzZCI9PWEpJiYoIm1hdHJpeCI9PWJ8fCJtYXRyaXgzZCI9PWIpfSxvPVtdLHA9W10scT1bXTtpZihiLmxlbmd0aCE9Yy5sZW5ndGgpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dfWVsc2UgZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBqLHM9YltmXS50LHQ9Y1tmXS50LHU9YltmXS5kLHY9Y1tmXS5kLHc9bltzXSx4PW5bdF07aWYobShzLHQpKXtpZighZClyZXR1cm47dmFyIHI9ZyhbYltmXV0sW2NbZl1dKTtvLnB1c2goclswXSkscC5wdXNoKHJbMV0pLHEucHVzaChbIm1hdHJpeCIsW3JbMl1dXSl9ZWxzZXtpZihzPT10KWo9cztlbHNlIGlmKHdbMl0mJnhbMl0mJmgocyk9PWgodCkpaj1oKHMpLHU9d1syXSh1KSx2PXhbMl0odik7ZWxzZXtpZighd1sxXXx8IXhbMV18fGkocykhPWkodCkpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dO2JyZWFrfWo9aShzKSx1PXdbMV0odSksdj14WzFdKHYpfWZvcih2YXIgeT1bXSx6PVtdLEE9W10sQj0wO0I8dS5sZW5ndGg7QisrKXt2YXIgQz0ibnVtYmVyIj09dHlwZW9mIHVbQl0/YS5tZXJnZU51bWJlcnM6YS5tZXJnZURpbWVuc2lvbnMscj1DKHVbQl0sdltCXSk7eVtCXT1yWzBdLHpbQl09clsxXSxBLnB1c2goclsyXSl9by5wdXNoKHkpLHAucHVzaCh6KSxxLnB1c2goW2osQV0pfX1pZihlKXt2YXIgRD1vO289cCxwPUR9cmV0dXJuW28scCxmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm1hcChmdW5jdGlvbihhLGMpe3JldHVybiBxW2JdWzFdW2NdKGEpfSkuam9pbigiLCIpO3JldHVybiJtYXRyaXgiPT1xW2JdWzBdJiYxNj09Yy5zcGxpdCgiLCIpLmxlbmd0aCYmKHFbYl1bMF09Im1hdHJpeDNkIikscVtiXVswXSsiKCIrYysiKSJ9KS5qb2luKCIgIil9XX12YXIgaz1udWxsLGw9e3B4OjB9LG09e2RlZzowfSxuPXttYXRyaXg6WyJOTk5OTk4iLFtrLGssMCwwLGssaywwLDAsMCwwLDEsMCxrLGssMCwxXSxkXSxtYXRyaXgzZDpbIk5OTk5OTk5OTk5OTk5OTk4iLGRdLHJvdGF0ZTpbIkEiXSxyb3RhdGV4OlsiQSJdLHJvdGF0ZXk6WyJBIl0scm90YXRlejpbIkEiXSxyb3RhdGUzZDpbIk5OTkEiXSxwZXJzcGVjdGl2ZTpbIkwiXSxzY2FsZTpbIk5uIixjKFtrLGssMV0pLGRdLHNjYWxleDpbIk4iLGMoW2ssMSwxXSksYyhbaywxXSldLHNjYWxleTpbIk4iLGMoWzEsaywxXSksYyhbMSxrXSldLHNjYWxlejpbIk4iLGMoWzEsMSxrXSldLHNjYWxlM2Q6WyJOTk4iLGRdLHNrZXc6WyJBYSIsbnVsbCxkXSxza2V3eDpbIkEiLG51bGwsYyhbayxtXSldLHNrZXd5OlsiQSIsbnVsbCxjKFttLGtdKV0sdHJhbnNsYXRlOlsiVHQiLGMoW2ssayxsXSksZF0sdHJhbnNsYXRleDpbIlQiLGMoW2ssbCxsXSksYyhbayxsXSldLHRyYW5zbGF0ZXk6WyJUIixjKFtsLGssbF0pLGMoW2wsa10pXSx0cmFuc2xhdGV6OlsiTCIsYyhbbCxsLGtdKV0sdHJhbnNsYXRlM2Q6WyJUVEwiLGRdfTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaixbInRyYW5zZm9ybSJdKSxhLnRyYW5zZm9ybVRvU3ZnTWF0cml4PWZ1bmN0aW9uKGIpe3ZhciBjPWEudHJhbnNmb3JtTGlzdFRvTWF0cml4KGUoYikpO3JldHVybiJtYXRyaXgoIitmKGNbMF0pKyIgIitmKGNbMV0pKyIgIitmKGNbNF0pKyIgIitmKGNbNV0pKyIgIitmKGNbMTJdKSsiICIrZihjWzEzXSkrIikifX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7Yi5jb25jYXQoW2FdKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlJiYoZFthXT1iKSxlW2JdPWF9KX12YXIgZD17fSxlPXt9O2MoInRyYW5zZm9ybSIsWyJ3ZWJraXRUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxjKCJ0cmFuc2Zvcm1PcmlnaW4iLFsid2Via2l0VHJhbnNmb3JtT3JpZ2luIl0pLGMoInBlcnNwZWN0aXZlIixbIndlYmtpdFBlcnNwZWN0aXZlIl0pLGMoInBlcnNwZWN0aXZlT3JpZ2luIixbIndlYmtpdFBlcnNwZWN0aXZlT3JpZ2luIl0pLGEucHJvcGVydHlOYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfHxhfSxhLnVucHJlZml4ZWRQcm9wZXJ0eU5hbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGVbYV18fGF9fShiKX0oKSxmdW5jdGlvbigpe2lmKHZvaWQgMD09PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmFuaW1hdGUoW10pLm9uY2FuY2VsKXt2YXIgYTtpZih3aW5kb3cucGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdyl2YXIgYT1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX07ZWxzZSB2YXIgYT1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfTt2YXIgYj1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImNhbmNlbCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfSxjPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlO3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGQsZSl7dmFyIGY9Yy5jYWxsKHRoaXMsZCxlKTtmLl9jYW5jZWxIYW5kbGVycz1bXSxmLm9uY2FuY2VsPW51bGw7dmFyIGc9Zi5jYW5jZWw7Zi5jYW5jZWw9ZnVuY3Rpb24oKXtnLmNhbGwodGhpcyk7dmFyIGM9bmV3IGIodGhpcyxudWxsLGEoKSksZD10aGlzLl9jYW5jZWxIYW5kbGVycy5jb25jYXQodGhpcy5vbmNhbmNlbD9bdGhpcy5vbmNhbmNlbF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGMudGFyZ2V0LGMpfSl9LDApfTt2YXIgaD1mLmFkZEV2ZW50TGlzdGVuZXI7Zi5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7ImZ1bmN0aW9uIj09dHlwZW9mIGImJiJjYW5jZWwiPT1hP3RoaXMuX2NhbmNlbEhhbmRsZXJzLnB1c2goYik6aC5jYWxsKHRoaXMsYSxiKX07dmFyIGk9Zi5yZW1vdmVFdmVudExpc3RlbmVyO3JldHVybiBmLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtpZigiY2FuY2VsIj09YSl7dmFyIGM9dGhpcy5fY2FuY2VsSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9jYW5jZWxIYW5kbGVycy5zcGxpY2UoYywxKX1lbHNlIGkuY2FsbCh0aGlzLGEsYil9LGZ9fX0oKSxmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYz1udWxsLGQ9ITE7dHJ5e3ZhciBlPWdldENvbXB1dGVkU3R5bGUoYikuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpLGY9IjAiPT1lPyIxIjoiMCI7Yz1iLmFuaW1hdGUoe29wYWNpdHk6W2YsZl19LHtkdXJhdGlvbjoxfSksYy5jdXJyZW50VGltZT0wLGQ9Z2V0Q29tcHV0ZWRTdHlsZShiKS5nZXRQcm9wZXJ0eVZhbHVlKCJvcGFjaXR5Iik9PWZ9Y2F0Y2goYSl7fWZpbmFsbHl7YyYmYy5jYW5jZWwoKX1pZighZCl7dmFyIGc9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24oYixjKXtyZXR1cm4gd2luZG93LlN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZBcnJheS5wcm90b3R5cGUuZnJvbSYmYltTeW1ib2wuaXRlcmF0b3JdJiYoYj1BcnJheS5mcm9tKGIpKSxBcnJheS5pc0FycmF5KGIpfHxudWxsPT09Ynx8KGI9YS5jb252ZXJ0VG9BcnJheUZvcm0oYikpLGcuY2FsbCh0aGlzLGIsYyl9fX0oYSksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7dmFyIGM9Yi50aW1lbGluZTtjLmN1cnJlbnRUaW1lPWEsYy5fZGlzY2FyZEFuaW1hdGlvbnMoKSwwPT1jLl9hbmltYXRpb25zLmxlbmd0aD9mPSExOnJlcXVlc3RBbmltYXRpb25GcmFtZShkKX12YXIgZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGUoZnVuY3Rpb24oYyl7Yi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYShjKSxiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKX0pfSxiLkFuaW1hdGlvblRpbWVsaW5lPWZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXZvaWQgMH0sYi5BbmltYXRpb25UaW1lbGluZS5wcm90b3R5cGU9e2dldEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzY2FyZEFuaW1hdGlvbnMoKSx0aGlzLl9hbmltYXRpb25zLnNsaWNlKCl9LF91cGRhdGVBbmltYXRpb25zUHJvbWlzZXM6ZnVuY3Rpb24oKXtiLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXM9Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5fdXBkYXRlUHJvbWlzZXMoKX0pfSxfZGlzY2FyZEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb25zPXRoaXMuX2FuaW1hdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiJmaW5pc2hlZCIhPWEucGxheVN0YXRlJiYiaWRsZSIhPWEucGxheVN0YXRlfSl9LF9wbGF5OmZ1bmN0aW9uKGEpe3ZhciBjPW5ldyBiLkFuaW1hdGlvbihhLHRoaXMpO3JldHVybiB0aGlzLl9hbmltYXRpb25zLnB1c2goYyksYi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrKCksYy5fdXBkYXRlUHJvbWlzZXMoKSxjLl9hbmltYXRpb24ucGxheSgpLGMuX3VwZGF0ZVByb21pc2VzKCksY30scGxheTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5yZW1vdmUoKSx0aGlzLl9wbGF5KGEpfX07dmFyIGY9ITE7Yi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrPWZ1bmN0aW9uKCl7Znx8KGY9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGQpKX07dmFyIGc9bmV3IGIuQW5pbWF0aW9uVGltZWxpbmU7Yi50aW1lbGluZT1nO3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LmRvY3VtZW50LCJ0aW1lbGluZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ319KX1jYXRjaChhKXt9dHJ5e3dpbmRvdy5kb2N1bWVudC50aW1lbGluZT1nfWNhdGNoKGEpe319KDAsYyksZnVuY3Rpb24oYSxiLGMpe2IuYW5pbWF0aW9uc1dpdGhQcm9taXNlcz1bXSxiLkFuaW1hdGlvbj1mdW5jdGlvbihiLGMpe2lmKHRoaXMuaWQ9IiIsYiYmYi5faWQmJih0aGlzLmlkPWIuX2lkKSx0aGlzLmVmZmVjdD1iLGImJihiLl9hbmltYXRpb249dGhpcyksIWMpdGhyb3cgbmV3IEVycm9yKCJBbmltYXRpb24gd2l0aCBudWxsIHRpbWVsaW5lIGlzIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLl90aW1lbGluZT1jLHRoaXMuX3NlcXVlbmNlTnVtYmVyPWEuc2VxdWVuY2VOdW1iZXIrKyx0aGlzLl9ob2xkVGltZT0wLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9pc0dyb3VwPSExLHRoaXMuX2FuaW1hdGlvbj1udWxsLHRoaXMuX2NoaWxkQW5pbWF0aW9ucz1bXSx0aGlzLl9jYWxsYmFjaz1udWxsLHRoaXMuX29sZFBsYXlTdGF0ZT0iaWRsZSIsdGhpcy5fcmVidWlsZFVuZGVybHlpbmdBbmltYXRpb24oKSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfdXBkYXRlUHJvbWlzZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9vbGRQbGF5U3RhdGUsYj10aGlzLnBsYXlTdGF0ZTtyZXR1cm4gdGhpcy5fcmVhZHlQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0UmVhZHlQcm9taXNlKCksdGhpcy5fcmVhZHlQcm9taXNlPXZvaWQgMCk6InBlbmRpbmciPT1hP3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2UoKToicGVuZGluZyI9PWImJih0aGlzLl9yZWFkeVByb21pc2U9dm9pZCAwKSksdGhpcy5fZmluaXNoZWRQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0RmluaXNoZWRQcm9taXNlKCksdGhpcy5fZmluaXNoZWRQcm9taXNlPXZvaWQgMCk6ImZpbmlzaGVkIj09Yj90aGlzLl9yZXNvbHZlRmluaXNoZWRQcm9taXNlKCk6ImZpbmlzaGVkIj09YSYmKHRoaXMuX2ZpbmlzaGVkUHJvbWlzZT12b2lkIDApKSx0aGlzLl9vbGRQbGF5U3RhdGU9dGhpcy5wbGF5U3RhdGUsdGhpcy5fcmVhZHlQcm9taXNlfHx0aGlzLl9maW5pc2hlZFByb21pc2V9LF9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGEsYyxkLGUsZj0hIXRoaXMuX2FuaW1hdGlvbjtmJiYoYT10aGlzLnBsYXliYWNrUmF0ZSxjPXRoaXMuX3BhdXNlZCxkPXRoaXMuc3RhcnRUaW1lLGU9dGhpcy5jdXJyZW50VGltZSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fYW5pbWF0aW9uLl93cmFwcGVyPW51bGwsdGhpcy5fYW5pbWF0aW9uPW51bGwpLCghdGhpcy5lZmZlY3R8fHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93LktleWZyYW1lRWZmZWN0KSYmKHRoaXMuX2FuaW1hdGlvbj1iLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdCh0aGlzLmVmZmVjdCksYi5iaW5kQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3QodGhpcykpLCh0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdHx8dGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuR3JvdXBFZmZlY3QpJiYodGhpcy5fYW5pbWF0aW9uPWIubmV3VW5kZXJseWluZ0FuaW1hdGlvbkZvckdyb3VwKHRoaXMuZWZmZWN0KSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cCh0aGlzKSksdGhpcy5lZmZlY3QmJnRoaXMuZWZmZWN0Ll9vbnNhbXBsZSYmYi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0KHRoaXMpLGYmJigxIT1hJiYodGhpcy5wbGF5YmFja1JhdGU9YSksbnVsbCE9PWQ/dGhpcy5zdGFydFRpbWU9ZDpudWxsIT09ZT90aGlzLmN1cnJlbnRUaW1lPWU6bnVsbCE9PXRoaXMuX2hvbGRUaW1lJiYodGhpcy5jdXJyZW50VGltZT10aGlzLl9ob2xkVGltZSksYyYmdGhpcy5wYXVzZSgpKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oKXtpZih0aGlzLmVmZmVjdCYmImlkbGUiIT10aGlzLnBsYXlTdGF0ZSl7dmFyIGE9dGhpcy5lZmZlY3QuX3RpbWluZy5kZWxheTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbihjKXt0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oYyxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMuZWZmZWN0KSl9LmJpbmQodGhpcykpfX0sX3NldEV4dGVybmFsQW5pbWF0aW9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKWZvcih2YXIgYj0wO2I8dGhpcy5lZmZlY3QuY2hpbGRyZW4ubGVuZ3RoO2IrKyl0aGlzLmVmZmVjdC5jaGlsZHJlbltiXS5fYW5pbWF0aW9uPWEsdGhpcy5fY2hpbGRBbmltYXRpb25zW2JdLl9zZXRFeHRlcm5hbEFuaW1hdGlvbihhKX0sX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9uczpmdW5jdGlvbigpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKXt2YXIgYT10aGlzLmVmZmVjdC5fdGltaW5nLmRlbGF5O3RoaXMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpLHRoaXMuZWZmZWN0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9Yi50aW1lbGluZS5fcGxheShjKTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMucHVzaChkKSxkLnBsYXliYWNrUmF0ZT10aGlzLnBsYXliYWNrUmF0ZSx0aGlzLl9wYXVzZWQmJmQucGF1c2UoKSxjLl9hbmltYXRpb249dGhpcy5lZmZlY3QuX2FuaW1hdGlvbix0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oZCxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMpKX0uYmluZCh0aGlzKSl9fSxfYXJyYW5nZUNoaWxkcmVuOmZ1bmN0aW9uKGEsYil7bnVsbD09PXRoaXMuc3RhcnRUaW1lP2EuY3VycmVudFRpbWU9dGhpcy5jdXJyZW50VGltZS1iL3RoaXMucGxheWJhY2tSYXRlOmEuc3RhcnRUaW1lIT09dGhpcy5zdGFydFRpbWUrYi90aGlzLnBsYXliYWNrUmF0ZSYmKGEuc3RhcnRUaW1lPXRoaXMuc3RhcnRUaW1lK2IvdGhpcy5wbGF5YmFja1JhdGUpfSxnZXQgdGltZWxpbmUoKXtyZXR1cm4gdGhpcy5fdGltZWxpbmV9LGdldCBwbGF5U3RhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGU6ImlkbGUifSxnZXQgZmluaXNoZWQoKXtyZXR1cm4gd2luZG93LlByb21pc2U/KHRoaXMuX2ZpbmlzaGVkUHJvbWlzZXx8KC0xPT1iLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXMuaW5kZXhPZih0aGlzKSYmYi5hbmltYXRpb25zV2l0aFByb21pc2VzLnB1c2godGhpcyksdGhpcy5fZmluaXNoZWRQcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsYil7dGhpcy5fcmVzb2x2ZUZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2EodGhpcyl9LHRoaXMuX3JlamVjdEZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2Ioe3R5cGU6RE9NRXhjZXB0aW9uLkFCT1JUX0VSUixuYW1lOiJBYm9ydEVycm9yIn0pfX0uYmluZCh0aGlzKSksImZpbmlzaGVkIj09dGhpcy5wbGF5U3RhdGUmJnRoaXMuX3Jlc29sdmVGaW5pc2hlZFByb21pc2UoKSksdGhpcy5fZmluaXNoZWRQcm9taXNlKTooY29uc29sZS53YXJuKCJBbmltYXRpb24gUHJvbWlzZXMgcmVxdWlyZSBKYXZhU2NyaXB0IFByb21pc2UgY29uc3RydWN0b3IiKSxudWxsKX0sZ2V0IHJlYWR5KCl7cmV0dXJuIHdpbmRvdy5Qcm9taXNlPyh0aGlzLl9yZWFkeVByb21pc2V8fCgtMT09Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmluZGV4T2YodGhpcykmJmIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5wdXNoKHRoaXMpLHRoaXMuX3JlYWR5UHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGIpe3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXthKHRoaXMpfSx0aGlzLl9yZWplY3RSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXtiKHt0eXBlOkRPTUV4Y2VwdGlvbi5BQk9SVF9FUlIsbmFtZToiQWJvcnRFcnJvciJ9KX19LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9PXRoaXMucGxheVN0YXRlJiZ0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCkpLHRoaXMuX3JlYWR5UHJvbWlzZSk6KGNvbnNvbGUud2FybigiQW5pbWF0aW9uIFByb21pc2VzIHJlcXVpcmUgSmF2YVNjcmlwdCBQcm9taXNlIGNvbnN0cnVjdG9yIiksbnVsbCl9LGdldCBvbmZpbmlzaCgpe3JldHVybiB0aGlzLl9hbmltYXRpb24ub25maW5pc2h9LHNldCBvbmZpbmlzaChhKXt0aGlzLl9hbmltYXRpb24ub25maW5pc2g9ImZ1bmN0aW9uIj09dHlwZW9mIGE/ZnVuY3Rpb24oYil7Yi50YXJnZXQ9dGhpcyxhLmNhbGwodGhpcyxiKX0uYmluZCh0aGlzKTphfSxnZXQgb25jYW5jZWwoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsfSxzZXQgb25jYW5jZWwoYSl7dGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2Z1bmN0aW9uKGIpe2IudGFyZ2V0PXRoaXMsYS5jYWxsKHRoaXMsYil9LmJpbmQodGhpcyk6YX0sZ2V0IGN1cnJlbnRUaW1lKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKTt2YXIgYT10aGlzLl9hbmltYXRpb24uY3VycmVudFRpbWU7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2VzKCksYX0sc2V0IGN1cnJlbnRUaW1lKGEpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmN1cnJlbnRUaW1lPWlzRmluaXRlKGEpP2E6TWF0aC5zaWduKGEpKk51bWJlci5NQVhfVkFMVUUsdGhpcy5fcmVnaXN0ZXIoKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYixjKXtiLmN1cnJlbnRUaW1lPWEtY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnN0YXJ0VGltZX0sc2V0IHN0YXJ0VGltZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5zdGFydFRpbWU9aXNGaW5pdGUoYSk/YTpNYXRoLnNpZ24oYSkqTnVtYmVyLk1BWF9WQUxVRSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiLGMpe2Iuc3RhcnRUaW1lPWErY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBiPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZT1hLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiKXtiLnBsYXliYWNrUmF0ZT1hfSksbnVsbCE9PWImJih0aGlzLmN1cnJlbnRUaW1lPWIpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LHBsYXk6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9hbmltYXRpb24ucGxheSgpLC0xPT10aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5pbmRleE9mKHRoaXMpJiZ0aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5wdXNoKHRoaXMpLHRoaXMuX3JlZ2lzdGVyKCksYi5hd2FpdFN0YXJ0VGltZSh0aGlzKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7dmFyIGI9YS5jdXJyZW50VGltZTthLnBsYXkoKSxhLmN1cnJlbnRUaW1lPWJ9KSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5jdXJyZW50VGltZSYmKHRoaXMuX2hvbGRUaW1lPXRoaXMuY3VycmVudFRpbWUpLHRoaXMuX2FuaW1hdGlvbi5wYXVzZSgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGEpe2EucGF1c2UoKX0pLHRoaXMuX3BhdXNlZD0hMCx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxmaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5maW5pc2goKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGE9dGhpcy5jdXJyZW50VGltZTt0aGlzLl9hbmltYXRpb24ucmV2ZXJzZSgpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihhKXthLnJldmVyc2UoKX0pLG51bGwhPT1hJiYodGhpcy5jdXJyZW50VGltZT1hKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YjsiZnVuY3Rpb24iPT10eXBlb2YgYiYmKGM9ZnVuY3Rpb24oYSl7YS50YXJnZXQ9dGhpcyxiLmNhbGwodGhpcyxhKX0uYmluZCh0aGlzKSxiLl93cmFwcGVyPWMpLHRoaXMuX2FuaW1hdGlvbi5hZGRFdmVudExpc3RlbmVyKGEsYyl9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLl9hbmltYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGImJmIuX3dyYXBwZXJ8fGIpfSxfcmVtb3ZlQ2hpbGRBbmltYXRpb25zOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9jaGlsZEFuaW1hdGlvbnMubGVuZ3RoOyl0aGlzLl9jaGlsZEFuaW1hdGlvbnMucG9wKCkuY2FuY2VsKCl9LF9mb3JFYWNoQ2hpbGQ6ZnVuY3Rpb24oYil7dmFyIGM9MDtpZih0aGlzLmVmZmVjdC5jaGlsZHJlbiYmdGhpcy5fY2hpbGRBbmltYXRpb25zLmxlbmd0aDx0aGlzLmVmZmVjdC5jaGlsZHJlbi5sZW5ndGgmJnRoaXMuX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9ucygpLHRoaXMuX2NoaWxkQW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IuY2FsbCh0aGlzLGEsYyksdGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3QmJihjKz1hLmVmZmVjdC5hY3RpdmVEdXJhdGlvbil9LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9dGhpcy5wbGF5U3RhdGUpe3ZhciBkPXRoaXMuZWZmZWN0Ll90aW1pbmcsZT10aGlzLmN1cnJlbnRUaW1lO251bGwhPT1lJiYoZT1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZCksZSxkKSksKG51bGw9PWV8fGlzTmFOKGUpKSYmdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCl9fX0sd2luZG93LkFuaW1hdGlvbj1iLkFuaW1hdGlvbn0oYSxjKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChiKXt0aGlzLl9mcmFtZXM9YS5ub3JtYWxpemVLZXlmcmFtZXMoYil9ZnVuY3Rpb24gZSgpe2Zvcih2YXIgYT0hMTtpLmxlbmd0aDspaS5zaGlmdCgpLl91cGRhdGVDaGlsZHJlbigpLGE9ITA7cmV0dXJuIGF9dmFyIGY9ZnVuY3Rpb24oYSl7aWYoYS5fYW5pbWF0aW9uPXZvaWQgMCxhIGluc3RhbmNlb2Ygd2luZG93LlNlcXVlbmNlRWZmZWN0fHxhIGluc3RhbmNlb2Ygd2luZG93Lkdyb3VwRWZmZWN0KWZvcih2YXIgYj0wO2I8YS5jaGlsZHJlbi5sZW5ndGg7YisrKWYoYS5jaGlsZHJlbltiXSl9O2IucmVtb3ZlTXVsdGk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXTtkLl9wYXJlbnQ/KC0xPT1iLmluZGV4T2YoZC5fcGFyZW50KSYmYi5wdXNoKGQuX3BhcmVudCksZC5fcGFyZW50LmNoaWxkcmVuLnNwbGljZShkLl9wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihkKSwxKSxkLl9wYXJlbnQ9bnVsbCxmKGQpKTpkLl9hbmltYXRpb24mJmQuX2FuaW1hdGlvbi5lZmZlY3Q9PWQmJihkLl9hbmltYXRpb24uY2FuY2VsKCksZC5fYW5pbWF0aW9uLmVmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSksZC5fYW5pbWF0aW9uLl9jYWxsYmFjayYmKGQuX2FuaW1hdGlvbi5fY2FsbGJhY2suX2FuaW1hdGlvbj1udWxsKSxkLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCksZihkKSl9Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKyliW2NdLl9yZWJ1aWxkKCl9LGIuS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYixjLGUsZil7cmV0dXJuIHRoaXMudGFyZ2V0PWIsdGhpcy5fcGFyZW50PW51bGwsZT1hLm51bWVyaWNUaW1pbmdUb09iamVjdChlKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoZSksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoZSksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGUsITEsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBjPyhhLmRlcHJlY2F0ZWQoIkN1c3RvbSBLZXlmcmFtZUVmZmVjdCIsIjIwMTUtMDYtMjIiLCJVc2UgS2V5ZnJhbWVFZmZlY3Qub25zYW1wbGUgaW5zdGVhZC4iKSx0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzPWMpOnRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM9bmV3IGQoYyksdGhpcy5fa2V5ZnJhbWVzPWMsdGhpcy5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX3RpbWluZyksdGhpcy5faWQ9Zix0aGlzfSxiLktleWZyYW1lRWZmZWN0LnByb3RvdHlwZT17Z2V0RnJhbWVzOmZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM/dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lczp0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLl9mcmFtZXN9LHNldCBvbnNhbXBsZShhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5nZXRGcmFtZXMoKSl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgb25zYW1wbGUgb24gY3VzdG9tIGVmZmVjdCBLZXlmcmFtZUVmZmVjdCBpcyBub3Qgc3VwcG9ydGVkLiIpO3RoaXMuX29uc2FtcGxlPWEsdGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LGdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxjbG9uZTpmdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmdldEZyYW1lcygpKXRocm93IG5ldyBFcnJvcigiQ2xvbmluZyBjdXN0b20gZWZmZWN0cyBpcyBub3Qgc3VwcG9ydGVkLiIpO3ZhciBiPW5ldyBLZXlmcmFtZUVmZmVjdCh0aGlzLnRhcmdldCxbXSxhLmNsb25lVGltaW5nSW5wdXQodGhpcy5fdGltaW5nSW5wdXQpLHRoaXMuX2lkKTtyZXR1cm4gYi5fbm9ybWFsaXplZEtleWZyYW1lcz10aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLGIuX2tleWZyYW1lcz10aGlzLl9rZXlmcmFtZXMsYn0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX07dmFyIGc9RWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZTtFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGIudGltZWxpbmUuX3BsYXkobmV3IGIuS2V5ZnJhbWVFZmZlY3QodGhpcyxhLGMsZCkpfTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKTtiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1hLnRhcmdldHx8aCxjPWEuX2tleWZyYW1lczsiZnVuY3Rpb24iPT10eXBlb2YgYyYmKGM9W10pO3ZhciBkPWEuX3RpbWluZ0lucHV0O2QuaWQ9YS5faWR9ZWxzZSB2YXIgYj1oLGM9W10sZD0wO3JldHVybiBnLmFwcGx5KGIsW2MsZF0pfSxiLmJpbmRBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXthLmVmZmVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGEuZWZmZWN0Ll9ub3JtYWxpemVkS2V5ZnJhbWVzJiZiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3QoYSl9O3ZhciBpPVtdO2IuYXdhaXRTdGFydFRpbWU9ZnVuY3Rpb24oYSl7bnVsbD09PWEuc3RhcnRUaW1lJiZhLl9pc0dyb3VwJiYoMD09aS5sZW5ndGgmJnJlcXVlc3RBbmltYXRpb25GcmFtZShlKSxpLnB1c2goYSkpfTt2YXIgaj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZTtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCJnZXRDb21wdXRlZFN0eWxlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKTt2YXIgYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZSgpJiYoYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYX19KSx3aW5kb3cuS2V5ZnJhbWVFZmZlY3Q9Yi5LZXlmcmFtZUVmZmVjdCx3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QW5pbWF0aW9ucz1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC50aW1lbGluZS5nZXRBbmltYXRpb25zKCkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT09YS5lZmZlY3QmJmEuZWZmZWN0LnRhcmdldD09dGhpc30uYmluZCh0aGlzKSl9fShhLGMpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe2EuX3JlZ2lzdGVyZWR8fChhLl9yZWdpc3RlcmVkPSEwLGcucHVzaChhKSxofHwoaD0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpKX1mdW5jdGlvbiBlKGEpe3ZhciBiPWc7Zz1bXSxiLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5fc2VxdWVuY2VOdW1iZXItYi5fc2VxdWVuY2VOdW1iZXJ9KSxiPWIuZmlsdGVyKGZ1bmN0aW9uKGEpe2EoKTt2YXIgYj1hLl9hbmltYXRpb24/YS5fYW5pbWF0aW9uLnBsYXlTdGF0ZToiaWRsZSI7cmV0dXJuInJ1bm5pbmciIT1iJiYicGVuZGluZyIhPWImJihhLl9yZWdpc3RlcmVkPSExKSxhLl9yZWdpc3RlcmVkfSksZy5wdXNoLmFwcGx5KGcsYiksZy5sZW5ndGg/KGg9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpKTpoPSExfXZhciBmPShkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKSwwKTtiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3Q9ZnVuY3Rpb24oYil7dmFyIGMsZT1iLmVmZmVjdC50YXJnZXQsZz0iZnVuY3Rpb24iPT10eXBlb2YgYi5lZmZlY3QuZ2V0RnJhbWVzKCk7Yz1nP2IuZWZmZWN0LmdldEZyYW1lcygpOmIuZWZmZWN0Ll9vbnNhbXBsZTt2YXIgaD1iLmVmZmVjdC50aW1pbmcsaT1udWxsO2g9YS5ub3JtYWxpemVUaW1pbmdJbnB1dChoKTt2YXIgaj1mdW5jdGlvbigpe3ZhciBkPWouX2FuaW1hdGlvbj9qLl9hbmltYXRpb24uY3VycmVudFRpbWU6bnVsbDtudWxsIT09ZCYmKGQ9YS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcyhhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKGgpLGQsaCksaXNOYU4oZCkmJihkPW51bGwpKSxkIT09aSYmKGc/YyhkLGUsYi5lZmZlY3QpOmMoZCxiLmVmZmVjdCxiLmVmZmVjdC5fYW5pbWF0aW9uKSksaT1kfTtqLl9hbmltYXRpb249YixqLl9yZWdpc3RlcmVkPSExLGouX3NlcXVlbmNlTnVtYmVyPWYrKyxiLl9jYWxsYmFjaz1qLGQoail9O3ZhciBnPVtdLGg9ITE7Yi5BbmltYXRpb24ucHJvdG90eXBlLl9yZWdpc3Rlcj1mdW5jdGlvbigpe3RoaXMuX2NhbGxiYWNrJiZkKHRoaXMuX2NhbGxiYWNrKX19KGEsYyksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGEuX3RpbWluZy5kZWxheSthLmFjdGl2ZUR1cmF0aW9uK2EuX3RpbWluZy5lbmREZWxheX1mdW5jdGlvbiBlKGIsYyxkKXt0aGlzLl9pZD1kLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49Ynx8W10sdGhpcy5fcmVwYXJlbnQodGhpcy5jaGlsZHJlbiksYz1hLm51bWVyaWNUaW1pbmdUb09iamVjdChjKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoYyksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYywhMCksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGMsITAsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJhdXRvIj09PXRoaXMuX3RpbWluZy5kdXJhdGlvbiYmKHRoaXMuX3RpbWluZy5kdXJhdGlvbj10aGlzLmFjdGl2ZUR1cmF0aW9uKX13aW5kb3cuU2VxdWVuY2VFZmZlY3Q9ZnVuY3Rpb24oKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sd2luZG93Lkdyb3VwRWZmZWN0PWZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUucHJvdG90eXBlPXtfaXNBbmNlc3RvcjpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcztudWxsIT09Yjspe2lmKGI9PWEpcmV0dXJuITA7Yj1iLl9wYXJlbnR9cmV0dXJuITF9LF9yZWJ1aWxkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXM7YTspImF1dG8iPT09YS50aW1pbmcuZHVyYXRpb24mJihhLl90aW1pbmcuZHVyYXRpb249YS5hY3RpdmVEdXJhdGlvbiksYT1hLl9wYXJlbnQ7dGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LF9yZXBhcmVudDpmdW5jdGlvbihhKXtiLnJlbW92ZU11bHRpKGEpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWFbY10uX3BhcmVudD10aGlzfSxfcHV0Q2hpbGQ6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yj8iQ2Fubm90IGFwcGVuZCBhbiBhbmNlc3RvciBvciBzZWxmIjoiQ2Fubm90IHByZXBlbmQgYW4gYW5jZXN0b3Igb3Igc2VsZiIsZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKHRoaXMuX2lzQW5jZXN0b3IoYVtkXSkpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uSElFUkFSQ0hZX1JFUVVFU1RfRVJSLG5hbWU6IkhpZXJhcmNoeVJlcXVlc3RFcnJvciIsbWVzc2FnZTpjfTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyliP3RoaXMuY2hpbGRyZW4ucHVzaChhW2RdKTp0aGlzLmNoaWxkcmVuLnVuc2hpZnQoYVtkXSk7dGhpcy5fcmVwYXJlbnQoYSksdGhpcy5fcmVidWlsZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wdXRDaGlsZChhcmd1bWVudHMsITApfSxwcmVwZW5kOmZ1bmN0aW9uKCl7dGhpcy5fcHV0Q2hpbGQoYXJndW1lbnRzLCExKX0sZ2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9wYXJlbnR9LGdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bMF06bnVsbH0sZ2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOm51bGx9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPWEuY2xvbmVUaW1pbmdJbnB1dCh0aGlzLl90aW1pbmdJbnB1dCksYz1bXSxkPTA7ZDx0aGlzLmNoaWxkcmVuLmxlbmd0aDtkKyspYy5wdXNoKHRoaXMuY2hpbGRyZW5bZF0uY2xvbmUoKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBHcm91cEVmZmVjdD9uZXcgR3JvdXBFZmZlY3QoYyxiKTpuZXcgU2VxdWVuY2VFZmZlY3QoYyxiKX0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX0sd2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YSs9ZChiKX0pLE1hdGgubWF4KGEsMCl9fSksd2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YT1NYXRoLm1heChhLGQoYikpfSksYX19KSxiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihjKXt2YXIgZCxlPW51bGwsZj1mdW5jdGlvbihiKXt2YXIgYz1kLl93cmFwcGVyO2lmKGMmJiJwZW5kaW5nIiE9Yy5wbGF5U3RhdGUmJmMuZWZmZWN0KXJldHVybiBudWxsPT1iP3ZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCk6MD09YiYmYy5wbGF5YmFja1JhdGU8MCYmKGV8fChlPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYy5lZmZlY3QudGltaW5nKSksYj1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZSksLTEsZSksaXNOYU4oYil8fG51bGw9PWIpPyhjLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7YS5jdXJyZW50VGltZT0tMX0pLHZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCkpOnZvaWQgMH0sZz1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSxjLl90aW1pbmcsYy5faWQpO3JldHVybiBnLm9uc2FtcGxlPWYsZD1iLnRpbWVsaW5lLl9wbGF5KGcpfSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihhKXthLl9hbmltYXRpb24uX3dyYXBwZXI9YSxhLl9pc0dyb3VwPSEwLGIuYXdhaXRTdGFydFRpbWUoYSksYS5fY29uc3RydWN0Q2hpbGRBbmltYXRpb25zKCksYS5fc2V0RXh0ZXJuYWxBbmltYXRpb24oYSl9LGIuZ3JvdXBDaGlsZER1cmF0aW9uPWR9KGEsYyl9KCk7CgohKGZ1bmN0aW9uKCl7Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uCgogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCgogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgKICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NCiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCmZ1bmN0aW9uIHQodCxlLG4saSl7dmFyIHIsbz1hcmd1bWVudHMubGVuZ3RoLGE9bzwzP2U6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6aTtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixpKTtlbHNlIGZvcih2YXIgcz10Lmxlbmd0aC0xO3M+PTA7cy0tKShyPXRbc10pJiYoYT0obzwzP3IoYSk6bz4zP3IoZSxuLGEpOnIoZSxuKSl8fGEpO3JldHVybiBvPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sYSksYX1mdW5jdGlvbiBlKHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YSh0LGUpfWZ1bmN0aW9uIG4odCxlLG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKHIsbyl7ZnVuY3Rpb24gYSh0KXt0cnl7bChpLm5leHQodCkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHModCl7dHJ5e2woaS50aHJvdyh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/cih0LnZhbHVlKTooZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKX0pKHQudmFsdWUpLnRoZW4oYSxzKX1sKChpPWkuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAgICAgKiBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5CiAgICAgKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAgICAgKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAgICAgKiByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi9mdW5jdGlvbiBpKHQpe3JldHVybiBlPT57aWYodClpZihlLmhhc093blByb3BlcnR5KCJpcyIpKXtpZih0IT09ZS5pcyl0aHJvdyBuZXcgRXJyb3IoYGN1c3RvbSBlbGVtZW50IHRhZyBuYW1lcyBkbyBub3QgbWF0Y2g6ICgke3R9ICE9PSAke2UuaXN9KWApfWVsc2UgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImlzIix7dmFsdWU6dH0pO3dpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoZS5pcyxlKX19ZnVuY3Rpb24gcih0LGUsbil7dC5jb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eSgicHJvcGVydGllcyIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5jb25zdHJ1Y3RvciwicHJvcGVydGllcyIse3ZhbHVlOnt9fSksdC5jb25zdHJ1Y3Rvci5wcm9wZXJ0aWVzW2VdPU9iamVjdC5hc3NpZ24oe30sdC5jb25zdHJ1Y3Rvci5wcm9wZXJ0aWVzW2VdLG4pfWZ1bmN0aW9uIG8odCl7cmV0dXJuKGUsbik9PntyKGUsbix0KX19ZnVuY3Rpb24gYSguLi50KXtyZXR1cm4oZSxuKT0+e2UuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoIm9ic2VydmVycyIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5jb25zdHJ1Y3Rvciwib2JzZXJ2ZXJzIix7dmFsdWU6W119KSxlLmNvbnN0cnVjdG9yLm9ic2VydmVycy5wdXNoKGAke259KCR7dC5qb2luKCIsIil9KWApfX1mdW5jdGlvbiBzKHQsLi4uZSl7cmV0dXJuKG4saSxvKT0+e2NvbnN0IGE9YF9fY29tcHV0ZSR7aX1gO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGEse3ZhbHVlOm8uZ2V0fSksby5nZXQ9dm9pZCAwO3IobixpLHtjb21wdXRlZDpgJHthfSgke1t0LC4uLmVdLmpvaW4oIiwiKX0pYH0pfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi93aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiB0fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IGwsYyx1PS8odXJsXCgpKFteKV0qKShcKSkvZyxoPS8oXlwvW15cL10pfCheIyl8KF5bXHctXGRdKjopLztmdW5jdGlvbiBkKHQsZSl7aWYodCYmaC50ZXN0KHQpKXJldHVybiB0O2lmKCIvLyI9PT10KXJldHVybiB0O2lmKHZvaWQgMD09PWwpe2w9ITE7dHJ5e2NvbnN0IHQ9bmV3IFVSTCgiYiIsImh0dHA6Ly9hIik7dC5wYXRobmFtZT0iYyUyMGQiLGw9Imh0dHA6Ly9hL2MlMjBkIj09PXQuaHJlZn1jYXRjaCh0KXt9fWlmKGV8fChlPWRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxsKXRyeXtyZXR1cm4gbmV3IFVSTCh0LGUpLmhyZWZ9Y2F0Y2goZSl7cmV0dXJuIHR9cmV0dXJuIGN8fChjPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgidGVtcCIpLGMuYmFzZT1jLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSxjLmhlYWQuYXBwZW5kQ2hpbGQoYy5iYXNlKSxjLmFuY2hvcj1jLmNyZWF0ZUVsZW1lbnQoImEiKSxjLmJvZHkuYXBwZW5kQ2hpbGQoYy5hbmNob3IpKSxjLmJhc2UuaHJlZj1lLGMuYW5jaG9yLmhyZWY9dCxjLmFuY2hvci5ocmVmfHx0fWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gdC5yZXBsYWNlKHUsKGZ1bmN0aW9uKHQsbixpLHIpe3JldHVybiBuKyInIitkKGkucmVwbGFjZSgvWyInXS9nLCIiKSxlKSsiJyIrcn0pKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0LnN1YnN0cmluZygwLHQubGFzdEluZGV4T2YoIi8iKSsxKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBtPSF3aW5kb3cuU2hhZHlET018fCF3aW5kb3cuU2hhZHlET00uaW5Vc2U7Qm9vbGVhbighd2luZG93LlNoYWR5Q1NTfHx3aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzKTtjb25zdCBnPW0mJiJhZG9wdGVkU3R5bGVTaGVldHMiaW4gRG9jdW1lbnQucHJvdG90eXBlJiYicmVwbGFjZVN5bmMiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUmJigoKT0+e3RyeXtjb25zdCB0PW5ldyBDU1NTdHlsZVNoZWV0O3QucmVwbGFjZVN5bmMoIiIpO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHM9W3RdLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHNbMF09PT10fWNhdGNoKHQpe3JldHVybiExfX0pKCk7bGV0IF89d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnJvb3RQYXRofHxmKGRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx5PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zYW5pdGl6ZURPTVZhbHVlfHx2b2lkIDAsdj13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuc2V0UGFzc2l2ZVRvdWNoR2VzdHVyZXN8fCExLGI9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN0cmljdFRlbXBsYXRlUG9saWN5fHwhMSx4PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5hbGxvd1RlbXBsYXRlRnJvbURvbU1vZHVsZXx8ITEsdz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9uc3x8ITEsUz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5V2FybmluZ3N8fCExLE09d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN5bmNJbml0aWFsUmVuZGVyfHwhMSxFPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lVbmRlZmluZWR8fCExLFQ9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLm9yZGVyZWRDb21wdXRlZHx8ITEsQz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIucmVtb3ZlTmVzdGVkVGVtcGxhdGVzfHwhMSxBPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5mYXN0RG9tSWZ8fCExLGs9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN1cHByZXNzVGVtcGxhdGVOb3RpZmljYXRpb25zfHwhMSxQPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lOb09ic2VydmVkQXR0cmlidXRlc3x8ITEsTD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIudXNlQWRvcHRlZFN0eWxlU2hlZXRzV2l0aEJ1aWx0Q1NTfHwhMSxJPTA7Y29uc3QgTj1mdW5jdGlvbih0KXtsZXQgZT10Ll9fbWl4aW5BcHBsaWNhdGlvbnM7ZXx8KGU9bmV3IFdlYWtNYXAsdC5fX21peGluQXBwbGljYXRpb25zPWUpO2xldCBuPUkrKztyZXR1cm4gZnVuY3Rpb24gaShyKXtsZXQgbz1yLl9fbWl4aW5TZXQ7aWYobyYmb1tuXSlyZXR1cm4gcjtsZXQgYT1lLHM9YS5nZXQocik7aWYoIXMpe3M9dChyKSxhLnNldChyLHMpO2xldCBlPU9iamVjdC5jcmVhdGUocy5fX21peGluU2V0fHxvfHxudWxsKTtlW25dPSEwLHMuX19taXhpblNldD1lfXJldHVybiBzfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IFI9e30sTz17fTtmdW5jdGlvbiB6KHQsZSl7Ult0XT1PW3QudG9Mb3dlckNhc2UoKV09ZX1mdW5jdGlvbiBEKHQpe3JldHVybiBSW3RdfHxPW3QudG9Mb3dlckNhc2UoKV19Y2xhc3MgQiBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuWyJpZCJdfXN0YXRpYyBpbXBvcnQodCxlKXtpZih0KXtsZXQgbj1EKHQpO3JldHVybiBuJiZlP24ucXVlcnlTZWxlY3RvcihlKTpufXJldHVybiBudWxsfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5yZWdpc3RlcigpfWdldCBhc3NldHBhdGgoKXtpZighdGhpcy5fX2Fzc2V0cGF0aCl7Y29uc3QgdD13aW5kb3cuSFRNTEltcG9ydHMmJkhUTUxJbXBvcnRzLmltcG9ydEZvckVsZW1lbnQ/SFRNTEltcG9ydHMuaW1wb3J0Rm9yRWxlbWVudCh0aGlzKXx8ZG9jdW1lbnQ6dGhpcy5vd25lckRvY3VtZW50LGU9ZCh0aGlzLmdldEF0dHJpYnV0ZSgiYXNzZXRwYXRoIil8fCIiLHQuYmFzZVVSSSk7dGhpcy5fX2Fzc2V0cGF0aD1mKGUpfXJldHVybiB0aGlzLl9fYXNzZXRwYXRofXJlZ2lzdGVyKHQpe2lmKHQ9dHx8dGhpcy5pZCl7aWYoYiYmdm9pZCAwIT09RCh0KSl0aHJvdyB6KHQsbnVsbCksbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLW1vZHVsZSAke3R9IHJlLXJlZ2lzdGVyZWRgKTt0aGlzLmlkPXQseih0LHRoaXMpLChmdW5jdGlvbiBlKHQpe3QucXVlcnlTZWxlY3Rvcigic3R5bGUiKSYmY29uc29sZS53YXJuKCJkb20tbW9kdWxlICVzIGhhcyBzdHlsZSBvdXRzaWRlIHRlbXBsYXRlIix0LmlkKX0pKHRoaXMpfX19Qi5wcm90b3R5cGUubW9kdWxlcz1SLGN1c3RvbUVsZW1lbnRzLmRlZmluZSgiZG9tLW1vZHVsZSIsQik7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IEg9InNoYWR5LXVuc2NvcGVkIjtmdW5jdGlvbiBGKHQpe3JldHVybiBCLmltcG9ydCh0KX1mdW5jdGlvbiBWKHQpe2NvbnN0IGU9cCgodC5ib2R5P3QuYm9keTp0KS50ZXh0Q29udGVudCx0LmJhc2VVUkkpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gbi50ZXh0Q29udGVudD1lLG59ZnVuY3Rpb24gVSh0KXtjb25zdCBlPXQudHJpbSgpLnNwbGl0KC9ccysvKSxuPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4ucHVzaCguLi5qKGVbdF0pKTtyZXR1cm4gbn1mdW5jdGlvbiBqKHQpe2NvbnN0IGU9Rih0KTtpZighZSlyZXR1cm4gY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksW107aWYodm9pZCAwPT09ZS5fc3R5bGVzKXtjb25zdCB0PVtdO3QucHVzaCguLi5XKGUpKTtjb25zdCBuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiZ0LnB1c2goLi4uRyhuLGUuYXNzZXRwYXRoKSksZS5fc3R5bGVzPXR9cmV0dXJuIGUuX3N0eWxlc31mdW5jdGlvbiBHKHQsZSl7aWYoIXQuX3N0eWxlcyl7Y29uc3Qgbj1bXSxpPXQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgcj1pW3RdLG89ci5nZXRBdHRyaWJ1dGUoImluY2x1ZGUiKTtvJiZuLnB1c2goLi4uVShvKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5pbmRleE9mKHQpPT09ZX0pKSksZSYmKHIudGV4dENvbnRlbnQ9cChyLnRleHRDb250ZW50LGUpKSxuLnB1c2gocil9dC5fc3R5bGVzPW59cmV0dXJuIHQuX3N0eWxlc31mdW5jdGlvbiBXKHQpe2NvbnN0IGU9W10sbj10LnF1ZXJ5U2VsZWN0b3JBbGwoImxpbmtbcmVsPWltcG9ydF1bdHlwZX49Y3NzXSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtsZXQgaT1uW3RdO2lmKGkuaW1wb3J0KXtjb25zdCB0PWkuaW1wb3J0LG49aS5oYXNBdHRyaWJ1dGUoSCk7aWYobiYmIXQuX3Vuc2NvcGVkU3R5bGUpe2NvbnN0IGU9Vih0KTtlLnNldEF0dHJpYnV0ZShILCIiKSx0Ll91bnNjb3BlZFN0eWxlPWV9ZWxzZSB0Ll9zdHlsZXx8KHQuX3N0eWxlPVYodCkpO2UucHVzaChuP3QuX3Vuc2NvcGVkU3R5bGU6dC5fc3R5bGUpfX1yZXR1cm4gZX1mdW5jdGlvbiBxKHQpe2xldCBlPUYodCk7aWYoZSYmdm9pZCAwPT09ZS5fY3NzVGV4dCl7bGV0IHQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9IiIsbj1XKHQpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKWUrPW5bdF0udGV4dENvbnRlbnQ7cmV0dXJuIGV9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKShlKSxuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiYodCs9KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj0iIjtjb25zdCBpPUcodCxlKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IGU9aVt0XTtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxuKz1lLnRleHRDb250ZW50fXJldHVybiBufSkobixlLmFzc2V0cGF0aCkpLGUuX2Nzc1RleHQ9dHx8bnVsbH1yZXR1cm4gZXx8Y29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksZSYmZS5fY3NzVGV4dHx8IiJ9Y29uc3QgWT13aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5ub1BhdGNoJiZ3aW5kb3cuU2hhZHlET00ud3JhcD93aW5kb3cuU2hhZHlET00ud3JhcDp3aW5kb3cuU2hhZHlET00/dD0+U2hhZHlET00ucGF0Y2godCk6dD0+dDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiBYKHQpe3JldHVybiB0LmluZGV4T2YoIi4iKT49MH1mdW5jdGlvbiAkKHQpe2xldCBlPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09ZT90OnQuc2xpY2UoMCxlKX1mdW5jdGlvbiBLKHQsZSl7cmV0dXJuIDA9PT10LmluZGV4T2YoZSsiLiIpfWZ1bmN0aW9uIFoodCxlKXtyZXR1cm4gMD09PWUuaW5kZXhPZih0KyIuIil9ZnVuY3Rpb24gSih0LGUsbil7cmV0dXJuIGUrbi5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gUSh0LGUpe3JldHVybiB0PT09ZXx8Syh0LGUpfHxaKHQsZSl9ZnVuY3Rpb24gdHQodCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7bGV0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBpPXRbbl0udG9TdHJpbmcoKS5zcGxpdCgiLiIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUucHVzaChpW3RdKX1yZXR1cm4gZS5qb2luKCIuIil9cmV0dXJuIHR9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dHQodCkuc3BsaXQoIi4iKTp0LnRvU3RyaW5nKCkuc3BsaXQoIi4iKX1mdW5jdGlvbiBudCh0LGUsbil7bGV0IGk9dCxyPWV0KGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtpZighaSlyZXR1cm47aT1pW3JbdF1dfXJldHVybiBuJiYobi5wYXRoPXIuam9pbigiLiIpKSxpfWZ1bmN0aW9uIGl0KHQsZSxuKXtsZXQgaT10LHI9ZXQoZSksbz1yW3IubGVuZ3RoLTFdO2lmKHIubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGgtMTt0Kyspe2lmKGk9aVtyW3RdXSwhaSlyZXR1cm59aVtvXT1ufWVsc2UgaVtlXT1uO3JldHVybiByLmpvaW4oIi4iKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBydD17fSxvdD0vLVthLXpdL2csYXQ9LyhbQS1aXSkvZztmdW5jdGlvbiBzdCh0KXtyZXR1cm4gcnRbdF18fChydFt0XT10LmluZGV4T2YoIi0iKTwwP3Q6dC5yZXBsYWNlKG90LCh0PT50WzFdLnRvVXBwZXJDYXNlKCkpKSl9ZnVuY3Rpb24gbHQodCl7cmV0dXJuIHJ0W3RdfHwocnRbdF09dC5yZXBsYWNlKGF0LCItJDEiKS50b0xvd2VyQ2FzZSgpKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgY3Q9MCx1dD0wLGh0PVtdLGR0PTAscHQ9ITEsZnQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO25ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24gbXQoKXtwdD0hMTtjb25zdCB0PWh0Lmxlbmd0aDtmb3IobGV0IGU9MDtlPHQ7ZSsrKXtsZXQgdD1odFtlXTtpZih0KXRyeXt0KCl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX1odC5zcGxpY2UoMCx0KSx1dCs9dH0pKS5vYnNlcnZlKGZ0LHtjaGFyYWN0ZXJEYXRhOiEwfSk7Y29uc3QgZ3Q9e2FmdGVyOnQ9Pih7cnVuOmU9PndpbmRvdy5zZXRUaW1lb3V0KGUsdCksY2FuY2VsKHQpe3dpbmRvdy5jbGVhclRpbWVvdXQodCl9fSkscnVuOih0LGUpPT53aW5kb3cuc2V0VGltZW91dCh0LGUpLGNhbmNlbCh0KXt3aW5kb3cuY2xlYXJUaW1lb3V0KHQpfX0sX3Q9e3J1bjp0PT53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodCl9fSx5dD17cnVuOnQ9PndpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrP3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKHQpOndpbmRvdy5zZXRUaW1lb3V0KHQsMTYpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsSWRsZUNhbGxiYWNrP3dpbmRvdy5jYW5jZWxJZGxlQ2FsbGJhY2sodCk6d2luZG93LmNsZWFyVGltZW91dCh0KX19LHZ0PXtydW46dD0+KHB0fHwocHQ9ITAsZnQudGV4dENvbnRlbnQ9ZHQrKyksaHQucHVzaCh0KSxjdCsrKSxjYW5jZWwodCl7Y29uc3QgZT10LXV0O2lmKGU+PTApe2lmKCFodFtlXSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYXN5bmMgaGFuZGxlOiAiK3QpO2h0W2VdPW51bGx9fX0sYnQ9dnQseHQ9TigodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2NvbnN0IGU9dGhpcy5wcm90b3R5cGU7Zm9yKGxldCBuIGluIHQpbiBpbiBlfHxlLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKG4pfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKX1zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe31fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGUpe3RoaXMuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAodCksdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX2RhdGFIYXNBY2Nlc3NvciIsdGhpcykpfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvcj1PYmplY3QuYXNzaWduKHt9LHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpKSx0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3RdfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvclt0XT0hMCx0aGlzLl9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSkpfV9hZGRQcm9wZXJ0eVRvQXR0cmlidXRlTWFwKHQpe3RoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19kYXRhQXR0cmlidXRlcyIsdGhpcykpfHwodGhpcy5fX2RhdGFBdHRyaWJ1dGVzPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fX2RhdGFBdHRyaWJ1dGVzKSk7bGV0IGU9dGhpcy5fX2RhdGFBdHRyaWJ1dGVzW3RdO3JldHVybiBlfHwoZT10aGlzLmNvbnN0cnVjdG9yLmF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eSh0KSx0aGlzLl9fZGF0YUF0dHJpYnV0ZXNbZV09dCksZX1fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2dldCgpe3JldHVybiB0aGlzLl9fZGF0YVt0XX0sc2V0OmU/ZnVuY3Rpb24oKXt9OmZ1bmN0aW9uKGUpe3RoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfX0pfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fZGF0YUVuYWJsZWQ9ITEsdGhpcy5fX2RhdGFSZWFkeT0hMSx0aGlzLl9fZGF0YUludmFsaWQ9ITEsdGhpcy5fX2RhdGE9e30sdGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCx0aGlzLl9fZGF0YUNvdW50ZXI9MCx0aGlzLl9fc2VyaWFsaXppbmc9ITEsdGhpcy5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1yZWFkeSgpe3RoaXMuX19kYXRhUmVhZHk9ITAsdGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7Zm9yKGxldCB0IGluIHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpdGhpcy5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcz10aGlzLl9fZGF0YUluc3RhbmNlUHJvcHN8fHt9LHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wc1t0XT10aGlzW3RdLGRlbGV0ZSB0aGlzW3RdKX1faW5pdGlhbGl6ZUluc3RhbmNlUHJvcGVydGllcyh0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9X3NldFByb3BlcnR5KHQsZSl7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2dldFByb3BlcnR5KHQpe3JldHVybiB0aGlzLl9fZGF0YVt0XX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YVt0XSxyPXRoaXMuX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxpKTtyZXR1cm4gciYmKHRoaXMuX19kYXRhUGVuZGluZ3x8KHRoaXMuX19kYXRhUGVuZGluZz17fSx0aGlzLl9fZGF0YU9sZD17fSksdGhpcy5fX2RhdGFPbGQmJiEodCBpbiB0aGlzLl9fZGF0YU9sZCkmJih0aGlzLl9fZGF0YU9sZFt0XT1pKSx0aGlzLl9fZGF0YVt0XT1lLHRoaXMuX19kYXRhUGVuZGluZ1t0XT1lKSxyfV9pc1Byb3BlcnR5UGVuZGluZyh0KXtyZXR1cm4hKCF0aGlzLl9fZGF0YVBlbmRpbmd8fCF0aGlzLl9fZGF0YVBlbmRpbmcuaGFzT3duUHJvcGVydHkodCkpfV9pbnZhbGlkYXRlUHJvcGVydGllcygpeyF0aGlzLl9fZGF0YUludmFsaWQmJnRoaXMuX19kYXRhUmVhZHkmJih0aGlzLl9fZGF0YUludmFsaWQ9ITAsYnQucnVuKCgoKT0+e3RoaXMuX19kYXRhSW52YWxpZCYmKHRoaXMuX19kYXRhSW52YWxpZD0hMSx0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSl9KSkpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFFbmFibGVkfHwodGhpcy5fX2RhdGFFbmFibGVkPSEwLHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcyYmKHRoaXMuX2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzKSx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCksdGhpcy5yZWFkeSgpKX1fZmx1c2hQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFDb3VudGVyKys7Y29uc3QgdD10aGlzLl9fZGF0YSxlPXRoaXMuX19kYXRhUGVuZGluZyxuPXRoaXMuX19kYXRhT2xkO3RoaXMuX3Nob3VsZFByb3BlcnRpZXNDaGFuZ2UodCxlLG4pJiYodGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCh0LGUsbikpLHRoaXMuX19kYXRhQ291bnRlci0tfV9zaG91bGRQcm9wZXJ0aWVzQ2hhbmdlKHQsZSxuKXtyZXR1cm4gQm9vbGVhbihlKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe31fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBuIT09ZSYmKG49PW58fGU9PWUpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LG4pLHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayYmc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpfV9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKXtpZighdGhpcy5fX3NlcmlhbGl6aW5nKXtjb25zdCBpPXRoaXMuX19kYXRhQXR0cmlidXRlcyxyPWkmJmlbdF18fHQ7dGhpc1tyXT10aGlzLl9kZXNlcmlhbGl6ZVZhbHVlKGUsbnx8dGhpcy5jb25zdHJ1Y3Rvci50eXBlRm9yUHJvcGVydHkocikpfX1fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fX3NlcmlhbGl6aW5nPSEwLHRoaXMuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPDM/dGhpc1t0XTpuLGV8fHRoaXMuY29uc3RydWN0b3IuYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQpKSx0aGlzLl9fc2VyaWFsaXppbmc9ITF9X3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsZSxuKXtjb25zdCBpPXRoaXMuX3NlcmlhbGl6ZVZhbHVlKGUpOyJjbGFzcyIhPT1uJiYibmFtZSIhPT1uJiYic2xvdCIhPT1ufHwodD1ZKHQpKSx2b2lkIDA9PT1pP3QucmVtb3ZlQXR0cmlidXRlKG4pOnQuc2V0QXR0cmlidXRlKG4saSl9X3NlcmlhbGl6ZVZhbHVlKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJib29sZWFuIjpyZXR1cm4gdD8iIjp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCk6dm9pZCAwfX1fZGVzZXJpYWxpemVWYWx1ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIG51bGwhPT10O2Nhc2UgTnVtYmVyOnJldHVybiBOdW1iZXIodCk7ZGVmYXVsdDpyZXR1cm4gdH19fSkpLHd0PXt9O2xldCBTdD1IVE1MRWxlbWVudC5wcm90b3R5cGU7Zm9yKDtTdDspe2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN0KTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl3dFt0W2VdXT0hMDtTdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoU3QpfWNvbnN0IE10PU4oKHQ9Pntjb25zdCBlPXh0KHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGNyZWF0ZVByb3BlcnRpZXNGb3JBdHRyaWJ1dGVzKCl7bGV0IHQ9dGhpcy5vYnNlcnZlZEF0dHJpYnV0ZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3Ioc3QodFtlXSkpfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIGx0KHQpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuX19kYXRhUHJvdG8mJih0aGlzLl9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHRoaXMuX19kYXRhUHJvdG8pLHRoaXMuX19kYXRhUHJvdG89bnVsbCksc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXModCl7Zm9yKGxldCBlIGluIHQpdGhpcy5fc2V0UHJvcGVydHkoZSx0W2VdKX1fZW5zdXJlQXR0cmlidXRlKHQsZSl7Y29uc3Qgbj10aGlzO24uaGFzQXR0cmlidXRlKHQpfHx0aGlzLl92YWx1ZVRvTm9kZUF0dHJpYnV0ZShuLGUsdCl9X3NlcmlhbGl6ZVZhbHVlKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJvYmplY3QiOmlmKHQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiB0LnRvU3RyaW5nKCk7aWYodCl0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWNhdGNoKHQpe3JldHVybiIifWRlZmF1bHQ6cmV0dXJuIHN1cGVyLl9zZXJpYWxpemVWYWx1ZSh0KX19X2Rlc2VyaWFsaXplVmFsdWUodCxlKXtsZXQgbjtzd2l0Y2goZSl7Y2FzZSBPYmplY3Q6dHJ5e249SlNPTi5wYXJzZSh0KX1jYXRjaChlKXtuPXR9YnJlYWs7Y2FzZSBBcnJheTp0cnl7bj1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe249bnVsbCxjb25zb2xlLndhcm4oYFBvbHltZXI6OkF0dHJpYnV0ZXM6IGNvdWxkbid0IGRlY29kZSBBcnJheSBhcyBKU09OOiAke3R9YCl9YnJlYWs7Y2FzZSBEYXRlOm49aXNOYU4odCk/U3RyaW5nKHQpOk51bWJlcih0KSxuPW5ldyBEYXRlKG4pO2JyZWFrO2RlZmF1bHQ6bj1zdXBlci5fZGVzZXJpYWxpemVWYWx1ZSh0LGUpfXJldHVybiBufV9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSl7IShmdW5jdGlvbiBuKHQsZSl7aWYoIXd0W2VdKXtsZXQgbj10W2VdO3ZvaWQgMCE9PW4mJih0Ll9fZGF0YT90Ll9zZXRQZW5kaW5nUHJvcGVydHkoZSxuKToodC5fX2RhdGFQcm90bz90Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZGF0YVByb3RvIix0KSl8fCh0Ll9fZGF0YVByb3RvPU9iamVjdC5jcmVhdGUodC5fX2RhdGFQcm90bykpOnQuX19kYXRhUHJvdG89e30sdC5fX2RhdGFQcm90b1tlXT1uKSl9fSkodGhpcyx0KSxzdXBlci5fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpfV9oYXNBY2Nlc3Nvcih0KXtyZXR1cm4gdGhpcy5fX2RhdGFIYXNBY2Nlc3NvciYmdGhpcy5fX2RhdGFIYXNBY2Nlc3Nvclt0XX1faXNQcm9wZXJ0eVBlbmRpbmcodCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fX2RhdGFQZW5kaW5nJiZ0IGluIHRoaXMuX19kYXRhUGVuZGluZyl9fX0pKSxFdD17ImRvbS1pZiI6ITAsImRvbS1yZXBlYXQiOiEwfTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgVHQ9ITEsQ3Q9ITE7ZnVuY3Rpb24gQXQodCl7KGZ1bmN0aW9uIGUoKXtpZighVHQpe1R0PSEwO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTt0LnBsYWNlaG9sZGVyPSJhIixDdD10LnBsYWNlaG9sZGVyPT09dC50ZXh0Q29udGVudH1yZXR1cm4gQ3R9KSgpJiYidGV4dGFyZWEiPT09dC5sb2NhbE5hbWUmJnQucGxhY2Vob2xkZXImJnQucGxhY2Vob2xkZXI9PT10LnRleHRDb250ZW50JiYodC50ZXh0Q29udGVudD1udWxsKX1mdW5jdGlvbiBrdCh0KXtsZXQgZT10LmdldEF0dHJpYnV0ZSgiaXMiKTtpZihlJiZFdFtlXSl7bGV0IG49dDtmb3Iobi5yZW1vdmVBdHRyaWJ1dGUoImlzIiksdD1uLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKSxuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQsbiksdC5hcHBlbmRDaGlsZChuKTtuLmF0dHJpYnV0ZXMubGVuZ3RoOyl0LnNldEF0dHJpYnV0ZShuLmF0dHJpYnV0ZXNbMF0ubmFtZSxuLmF0dHJpYnV0ZXNbMF0udmFsdWUpLG4ucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlc1swXS5uYW1lKX1yZXR1cm4gdH1mdW5jdGlvbiBQdCh0LGUpe2xldCBuPWUucGFyZW50SW5mbyYmUHQodCxlLnBhcmVudEluZm8pO2lmKCFuKXJldHVybiB0O2ZvcihsZXQgdD1uLmZpcnN0Q2hpbGQsaT0wO3Q7dD10Lm5leHRTaWJsaW5nKWlmKGUucGFyZW50SW5kZXg9PT1pKyspcmV0dXJuIHR9ZnVuY3Rpb24gTHQodCxlLG4saSl7aS5pZCYmKGVbaS5pZF09bil9ZnVuY3Rpb24gSXQodCxlLG4pe2lmKG4uZXZlbnRzJiZuLmV2ZW50cy5sZW5ndGgpZm9yKGxldCBpLHI9MCxvPW4uZXZlbnRzO3I8by5sZW5ndGgmJihpPW9bcl0pO3IrKyl0Ll9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKGUsaS5uYW1lLGkudmFsdWUsdCl9ZnVuY3Rpb24gTnQodCxlLG4saSl7bi50ZW1wbGF0ZUluZm8mJihlLl90ZW1wbGF0ZUluZm89bi50ZW1wbGF0ZUluZm8sZS5fcGFyZW50VGVtcGxhdGVJbmZvPWkpfWNvbnN0IFJ0PU4oKHQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgX3BhcnNlVGVtcGxhdGUodCxlKXtpZighdC5fdGVtcGxhdGVJbmZvKXtsZXQgbj10Ll90ZW1wbGF0ZUluZm89e307bi5ub2RlSW5mb0xpc3Q9W10sbi5uZXN0ZWRUZW1wbGF0ZT1Cb29sZWFuKGUpLG4uc3RyaXBXaGl0ZVNwYWNlPWUmJmUuc3RyaXBXaGl0ZVNwYWNlfHx0Lmhhc0F0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIpLHRoaXMuX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbix7cGFyZW50Om51bGx9KX1yZXR1cm4gdC5fdGVtcGxhdGVJbmZvfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZUNvbnRlbnQodCxlLG4pe3JldHVybiB0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZSh0LmNvbnRlbnQsZSxuKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKHQsZSxuKXtsZXQgaT0hMSxyPXQ7cmV0dXJuInRlbXBsYXRlIiE9ci5sb2NhbE5hbWV8fHIuaGFzQXR0cmlidXRlKCJwcmVzZXJ2ZS1jb250ZW50Iik/InNsb3QiPT09ci5sb2NhbE5hbWUmJihlLmhhc0luc2VydGlvblBvaW50PSEwKTppPXRoaXMuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShyLGUsbil8fGksQXQociksci5maXJzdENoaWxkJiZ0aGlzLl9wYXJzZVRlbXBsYXRlQ2hpbGROb2RlcyhyLGUsbiksci5oYXNBdHRyaWJ1dGVzJiZyLmhhc0F0dHJpYnV0ZXMoKSYmKGk9dGhpcy5fcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGVzKHIsZSxuKXx8aSksaXx8bi5ub3RlZH1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzKHQsZSxuKXtpZigic2NyaXB0IiE9PXQubG9jYWxOYW1lJiYic3R5bGUiIT09dC5sb2NhbE5hbWUpZm9yKGxldCBpLHI9dC5maXJzdENoaWxkLG89MDtyO3I9aSl7aWYoInRlbXBsYXRlIj09ci5sb2NhbE5hbWUmJihyPWt0KHIpKSxpPXIubmV4dFNpYmxpbmcsci5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXtsZXQgbj1pO2Zvcig7biYmbi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFOylyLnRleHRDb250ZW50Kz1uLnRleHRDb250ZW50LGk9bi5uZXh0U2libGluZyx0LnJlbW92ZUNoaWxkKG4pLG49aTtpZihlLnN0cmlwV2hpdGVTcGFjZSYmIXIudGV4dENvbnRlbnQudHJpbSgpKXt0LnJlbW92ZUNoaWxkKHIpO2NvbnRpbnVlfX1sZXQgYT17cGFyZW50SW5kZXg6byxwYXJlbnRJbmZvOm59O3RoaXMuX3BhcnNlVGVtcGxhdGVOb2RlKHIsZSxhKSYmKGEuaW5mb0luZGV4PWUubm9kZUluZm9MaXN0LnB1c2goYSktMSksci5wYXJlbnROb2RlJiZvKyt9fXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlKHQsZSxuKXtsZXQgaT10LHI9dGhpcy5fcGFyc2VUZW1wbGF0ZShpLGUpO3JldHVybihyLmNvbnRlbnQ9aS5jb250ZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKS5hcHBlbmRDaGlsZChpLmNvbnRlbnQpLG4udGVtcGxhdGVJbmZvPXIsITB9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZXModCxlLG4pe2xldCBpPSExLHI9QXJyYXkuZnJvbSh0LmF0dHJpYnV0ZXMpO2ZvcihsZXQgbyxhPXIubGVuZ3RoLTE7bz1yW2FdO2EtLSlpPXRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLG8ubmFtZSxvLnZhbHVlKXx8aTtyZXR1cm4gaX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLGkscil7cmV0dXJuIm9uLSI9PT1pLnNsaWNlKDAsMyk/KHQucmVtb3ZlQXR0cmlidXRlKGkpLG4uZXZlbnRzPW4uZXZlbnRzfHxbXSxuLmV2ZW50cy5wdXNoKHtuYW1lOmkuc2xpY2UoMyksdmFsdWU6cn0pLCEwKToiaWQiPT09aSYmKG4uaWQ9ciwhMCl9c3RhdGljIF9jb250ZW50Rm9yVGVtcGxhdGUodCl7bGV0IGU9dC5fdGVtcGxhdGVJbmZvO3JldHVybiBlJiZlLmNvbnRlbnR8fHQuY29udGVudH1fc3RhbXBUZW1wbGF0ZSh0LGUpe3QmJiF0LmNvbnRlbnQmJndpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50JiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlJiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKHQpO2xldCBuPShlPWV8fHRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUodCkpLm5vZGVJbmZvTGlzdCxpPWRvY3VtZW50LmltcG9ydE5vZGUoZS5jb250ZW50fHx0LmNvbnRlbnQsITApO2kuX19ub0luc2VydGlvblBvaW50PSFlLmhhc0luc2VydGlvblBvaW50O2xldCByPWkubm9kZUxpc3Q9bmV3IEFycmF5KG4ubGVuZ3RoKTtpLiQ9e307Zm9yKGxldCB0LG89MCxhPW4ubGVuZ3RoO288YSYmKHQ9bltvXSk7bysrKXtsZXQgbj1yW29dPVB0KGksdCk7THQoMCxpLiQsbix0KSxOdCgwLG4sdCxlKSxJdCh0aGlzLG4sdCl9cmV0dXJuIGk9aSxpfV9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuLGkpe2xldCByPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdD10Ll9tZXRob2RIb3N0fHx0LGZ1bmN0aW9uKGUpe3Rbbl0/dFtuXShlLGUuZGV0YWlsKTpjb25zb2xlLndhcm4oImxpc3RlbmVyIG1ldGhvZCBgIituKyJgIG5vdCBkZWZpbmVkIil9fSkoaT1pfHx0LDAsbik7cmV0dXJuIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLHIpLHJ9X2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4pfV9yZW1vdmVFdmVudExpc3RlbmVyRnJvbU5vZGUodCxlLG4pe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfX0pKTsKLyoqCiAgICAgKiBAZmlsZW92ZXJ2aWV3CiAgICAgKiBAc3VwcHJlc3Mge2NoZWNrUHJvdG90eXBhbFR5cGVzfQogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQKICAgICAqIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkKICAgICAqIGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkKICAgICAqIEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAKICAgICAqIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqL2xldCBPdD0wO2NvbnN0IHp0PVtdLER0PXtDT01QVVRFOiJfX2NvbXB1dGVFZmZlY3RzIixSRUZMRUNUOiJfX3JlZmxlY3RFZmZlY3RzIixOT1RJRlk6Il9fbm90aWZ5RWZmZWN0cyIsUFJPUEFHQVRFOiJfX3Byb3BhZ2F0ZUVmZmVjdHMiLE9CU0VSVkU6Il9fb2JzZXJ2ZUVmZmVjdHMiLFJFQURfT05MWToiX19yZWFkT25seSJ9LEJ0PSJfX2NvbXB1dGVJbmZvIixIdD0vW0EtWl0vO2Z1bmN0aW9uIEZ0KHQsZSxuKXtsZXQgaT10W2VdO2lmKGkpe2lmKCF0Lmhhc093blByb3BlcnR5KGUpJiYoaT10W2VdPU9iamVjdC5jcmVhdGUodFtlXSksbikpZm9yKGxldCB0IGluIGkpe2xldCBlPWlbdF0sbj1pW3RdPUFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF19fWVsc2UgaT10W2VdPXt9O3JldHVybiBpfWZ1bmN0aW9uIFZ0KHQsZSxuLGkscixvKXtpZihlKXtsZXQgYT0hMTtjb25zdCBzPU90Kys7Zm9yKGxldCBsIGluIG4pe2xldCBjPWVbcj8kKGwpOmxdO2lmKGMpZm9yKGxldCBlLHU9MCxoPWMubGVuZ3RoO3U8aCYmKGU9Y1t1XSk7dSsrKWUuaW5mbyYmZS5pbmZvLmxhc3RSdW49PT1zfHxyJiYhanQobCxlLnRyaWdnZXIpfHwoZS5pbmZvJiYoZS5pbmZvLmxhc3RSdW49cyksZS5mbih0LGwsbixpLGUuaW5mbyxyLG8pLGE9ITApfXJldHVybiBhfXJldHVybiExfWZ1bmN0aW9uIFV0KHQsZSxuLGkscixvLGEscyl7bGV0IGw9ITEsYz1lW2E/JChpKTppXTtpZihjKWZvcihsZXQgZSx1PTAsaD1jLmxlbmd0aDt1PGgmJihlPWNbdV0pO3UrKyllLmluZm8mJmUuaW5mby5sYXN0UnVuPT09bnx8YSYmIWp0KGksZS50cmlnZ2VyKXx8KGUuaW5mbyYmKGUuaW5mby5sYXN0UnVuPW4pLGUuZm4odCxpLHIsbyxlLmluZm8sYSxzKSxsPSEwKTtyZXR1cm4gbH1mdW5jdGlvbiBqdCh0LGUpe2lmKGUpe2xldCBuPWUubmFtZTtyZXR1cm4gbj09dHx8ISghZS5zdHJ1Y3R1cmVkfHwhSyhuLHQpKXx8ISghZS53aWxkY2FyZHx8IVoobix0KSl9cmV0dXJuITB9ZnVuY3Rpb24gR3QodCxlLG4saSxyKXtsZXQgbz0ic3RyaW5nIj09dHlwZW9mIHIubWV0aG9kP3Rbci5tZXRob2RdOnIubWV0aG9kLGE9ci5wcm9wZXJ0eTtvP28uY2FsbCh0LHQuX19kYXRhW2FdLGlbYV0pOnIuZHluYW1pY0ZufHxjb25zb2xlLndhcm4oIm9ic2VydmVyIG1ldGhvZCBgIityLm1ldGhvZCsiYCBub3QgZGVmaW5lZCIpfWZ1bmN0aW9uIFd0KHQsZSxuKXtsZXQgaT0kKGUpO2lmKGkhPT1lKXtyZXR1cm4gcXQodCxsdChpKSsiLWNoYW5nZWQiLG5bZV0sZSksITB9cmV0dXJuITF9ZnVuY3Rpb24gcXQodCxlLG4saSl7bGV0IHI9e3ZhbHVlOm4scXVldWVQcm9wZXJ0eTohMH07aSYmKHIucGF0aD1pKSxZKHQpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGUse2RldGFpbDpyfSkpfWZ1bmN0aW9uIFl0KHQsZSxuLGkscixvKXtsZXQgYT0obz8kKGUpOmUpIT1lP2U6bnVsbCxzPWE/bnQodCxhKTp0Ll9fZGF0YVtlXTthJiZ2b2lkIDA9PT1zJiYocz1uW2VdKSxxdCh0LHIuZXZlbnROYW1lLHMsYSl9ZnVuY3Rpb24gWHQodCxlLG4saSxyKXtsZXQgbz10Ll9fZGF0YVtlXTt5JiYobz15KG8sci5hdHRyTmFtZSwiYXR0cmlidXRlIix0KSksdC5fcHJvcGVydHlUb0F0dHJpYnV0ZShlLHIuYXR0ck5hbWUsbyl9ZnVuY3Rpb24gJHQodCxlLG4saSl7bGV0IHI9dFtEdC5DT01QVVRFXTtpZihyKWlmKFQpe090Kys7Y29uc3Qgbz0oZnVuY3Rpb24gbyh0KXtsZXQgZT10LmNvbnN0cnVjdG9yLl9fb3JkZXJlZENvbXB1dGVkRGVwcztpZighZSl7ZT1uZXcgTWFwO2NvbnN0IG49dFtEdC5DT01QVVRFXTtsZXQgaSx7Y291bnRzOnIscmVhZHk6byx0b3RhbDphfT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPXQuX19jb21wdXRlSW5mbyxuPXt9LGk9dFtEdC5DT01QVVRFXSxyPVtdO2xldCBvPTA7Zm9yKGxldCB0IGluIGUpe2NvbnN0IGk9ZVt0XTtvKz1uW3RdPWkuYXJncy5maWx0ZXIoKHQ9PiF0LmxpdGVyYWwpKS5sZW5ndGgrKGkuZHluYW1pY0ZuPzE6MCl9Zm9yKGxldCB0IGluIGkpZVt0XXx8ci5wdXNoKHQpO3JldHVybntjb3VudHM6bixyZWFkeTpyLHRvdGFsOm99fSkodCk7Zm9yKDtpPW8uc2hpZnQoKTspe2Uuc2V0KGksZS5zaXplKTtjb25zdCB0PW5baV07dCYmdC5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmluZm8ubWV0aG9kSW5mbzstLWEsMD09LS1yW2VdJiZvLnB1c2goZSl9KSl9aWYoMCE9PWEpe2NvbnNvbGUud2FybihgQ29tcHV0ZWQgZ3JhcGggZm9yICR7dC5sb2NhbE5hbWV9IGluY29tcGxldGU7IGNpcmN1bGFyP2ApfXQuY29uc3RydWN0b3IuX19vcmRlcmVkQ29tcHV0ZWREZXBzPWV9cmV0dXJuIGV9KSh0KSxhPVtdO2ZvcihsZXQgdCBpbiBlKVp0KHQscixhLG8saSk7bGV0IHM7Zm9yKDtzPWEuc2hpZnQoKTspSnQodCwiIixlLG4scykmJlp0KHMubWV0aG9kSW5mbyxyLGEsbyxpKTtPYmplY3QuYXNzaWduKG4sdC5fX2RhdGFPbGQpLE9iamVjdC5hc3NpZ24oZSx0Ll9fZGF0YVBlbmRpbmcpLHQuX19kYXRhUGVuZGluZz1udWxsfWVsc2V7bGV0IG89ZTtmb3IoO1Z0KHQscixvLG4saSk7KU9iamVjdC5hc3NpZ24obix0Ll9fZGF0YU9sZCksT2JqZWN0LmFzc2lnbihlLHQuX19kYXRhUGVuZGluZyksbz10Ll9fZGF0YVBlbmRpbmcsdC5fX2RhdGFQZW5kaW5nPW51bGx9fWNvbnN0IEt0PSh0LGUsbik9PntsZXQgaT0wLHI9ZS5sZW5ndGgtMSxvPS0xO2Zvcig7aTw9cjspe2NvbnN0IGE9aStyPj4xLHM9bi5nZXQoZVthXS5tZXRob2RJbmZvKS1uLmdldCh0Lm1ldGhvZEluZm8pO2lmKHM8MClpPWErMTtlbHNle2lmKCEocz4wKSl7bz1hO2JyZWFrfXI9YS0xfX1vPDAmJihvPXIrMSksZS5zcGxpY2UobywwLHQpfSxadD0odCxlLG4saSxyKT0+e2NvbnN0IG89ZVtyPyQodCk6dF07aWYobylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3QgYT1vW2VdO2EuaW5mby5sYXN0UnVuPT09T3R8fHImJiFqdCh0LGEudHJpZ2dlcil8fChhLmluZm8ubGFzdFJ1bj1PdCxLdChhLmluZm8sbixpKSl9fTtmdW5jdGlvbiBKdCh0LGUsbixpLHIpe2xldCBvPW9lKHQsZSxuLGkscik7aWYobz09PXp0KXJldHVybiExO2xldCBhPXIubWV0aG9kSW5mbztyZXR1cm4gdC5fX2RhdGFIYXNBY2Nlc3NvciYmdC5fX2RhdGFIYXNBY2Nlc3NvclthXT90Ll9zZXRQZW5kaW5nUHJvcGVydHkoYSxvLCEwKToodFthXT1vLCExKX1mdW5jdGlvbiBRdCh0LGUsbixpLHIsbyxhKXtuLmJpbmRpbmdzPW4uYmluZGluZ3N8fFtdO2xldCBzPXtraW5kOmksdGFyZ2V0OnIscGFydHM6byxsaXRlcmFsOmEsaXNDb21wb3VuZDoxIT09by5sZW5ndGh9O2lmKG4uYmluZGluZ3MucHVzaChzKSwoZnVuY3Rpb24gbCh0KXtyZXR1cm4gQm9vbGVhbih0LnRhcmdldCkmJiJhdHRyaWJ1dGUiIT10LmtpbmQmJiJ0ZXh0IiE9dC5raW5kJiYhdC5pc0NvbXBvdW5kJiYieyI9PT10LnBhcnRzWzBdLm1vZGV9KShzKSl7bGV0e2V2ZW50OnQsbmVnYXRlOmV9PXMucGFydHNbMF07cy5saXN0ZW5lckV2ZW50PXR8fGx0KHIpKyItY2hhbmdlZCIscy5saXN0ZW5lck5lZ2F0ZT1lfWxldCBjPWUubm9kZUluZm9MaXN0Lmxlbmd0aDtmb3IobGV0IG49MDtuPHMucGFydHMubGVuZ3RoO24rKyl7bGV0IGk9cy5wYXJ0c1tuXTtpLmNvbXBvdW5kSW5kZXg9bix0ZSh0LGUscyxpLGMpfX1mdW5jdGlvbiB0ZSh0LGUsbixpLHIpe2lmKCFpLmxpdGVyYWwpaWYoImF0dHJpYnV0ZSI9PT1uLmtpbmQmJiItIj09PW4udGFyZ2V0WzBdKWNvbnNvbGUud2FybigiQ2Fubm90IHNldCBhdHRyaWJ1dGUgIituLnRhcmdldCsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIGF0dHJpYnV0ZSBzdGFydGluZyBjaGFyYWN0ZXInKTtlbHNle2xldCBvPWkuZGVwZW5kZW5jaWVzLGE9e2luZGV4OnIsYmluZGluZzpuLHBhcnQ6aSxldmFsdWF0b3I6dH07Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspe2xldCBpPW9bbl07InN0cmluZyI9PXR5cGVvZiBpJiYoaT11ZShpKSxpLndpbGRjYXJkPSEwKSx0Ll9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KGUsaS5yb290UHJvcGVydHkse2ZuOmVlLGluZm86YSx0cmlnZ2VyOml9KX19fWZ1bmN0aW9uIGVlKHQsZSxuLGkscixvLGEpe2xldCBzPWFbci5pbmRleF0sbD1yLmJpbmRpbmcsYz1yLnBhcnQ7aWYobyYmYy5zb3VyY2UmJmUubGVuZ3RoPmMuc291cmNlLmxlbmd0aCYmInByb3BlcnR5Ij09bC5raW5kJiYhbC5pc0NvbXBvdW5kJiZzLl9faXNQcm9wZXJ0eUVmZmVjdHNDbGllbnQmJnMuX19kYXRhSGFzQWNjZXNzb3ImJnMuX19kYXRhSGFzQWNjZXNzb3JbbC50YXJnZXRdKXtsZXQgaT1uW2VdO2U9SihjLnNvdXJjZSxsLnRhcmdldCxlKSxzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoZSxpLCExLCEwKSYmdC5fZW5xdWV1ZUNsaWVudChzKX1lbHNle2xldCBhPXIuZXZhbHVhdG9yLl9ldmFsdWF0ZUJpbmRpbmcodCxjLGUsbixpLG8pO2EhPT16dCYmKGZ1bmN0aW9uIHUodCxlLG4saSxyKXtyPShmdW5jdGlvbiBvKHQsZSxuLGkpe2lmKG4uaXNDb21wb3VuZCl7bGV0IHI9dC5fX2RhdGFDb21wb3VuZFN0b3JhZ2Vbbi50YXJnZXRdO3JbaS5jb21wb3VuZEluZGV4XT1lLGU9ci5qb2luKCIiKX0iYXR0cmlidXRlIiE9PW4ua2luZCYmKCJ0ZXh0Q29udGVudCIhPT1uLnRhcmdldCYmKCJ2YWx1ZSIhPT1uLnRhcmdldHx8ImlucHV0IiE9PXQubG9jYWxOYW1lJiYidGV4dGFyZWEiIT09dC5sb2NhbE5hbWUpfHwoZT1udWxsPT1lPyIiOmUpKTtyZXR1cm4gZX0pKGUscixuLGkpLHkmJihyPXkocixuLnRhcmdldCxuLmtpbmQsZSkpO2lmKCJhdHRyaWJ1dGUiPT1uLmtpbmQpdC5fdmFsdWVUb05vZGVBdHRyaWJ1dGUoZSxyLG4udGFyZ2V0KTtlbHNle2xldCBpPW4udGFyZ2V0O2UuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudCYmZS5fX2RhdGFIYXNBY2Nlc3NvciYmZS5fX2RhdGFIYXNBY2Nlc3NvcltpXT9lW0R0LlJFQURfT05MWV0mJmVbRHQuUkVBRF9PTkxZXVtpXXx8ZS5fc2V0UGVuZGluZ1Byb3BlcnR5KGkscikmJnQuX2VucXVldWVDbGllbnQoZSk6dC5fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUoZSxpLHIpfX0pKHQscyxsLGMsYSl9fWZ1bmN0aW9uIG5lKHQsZSl7aWYoZS5pc0NvbXBvdW5kKXtsZXQgbj10Ll9fZGF0YUNvbXBvdW5kU3RvcmFnZXx8KHQuX19kYXRhQ29tcG91bmRTdG9yYWdlPXt9KSxpPWUucGFydHMscj1uZXcgQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXJbdF09aVt0XS5saXRlcmFsO2xldCBvPWUudGFyZ2V0O25bb109cixlLmxpdGVyYWwmJiJwcm9wZXJ0eSI9PWUua2luZCYmKCJjbGFzc05hbWUiPT09byYmKHQ9WSh0KSksdFtvXT1lLmxpdGVyYWwpfX1mdW5jdGlvbiBpZSh0LGUsbil7aWYobi5saXN0ZW5lckV2ZW50KXtsZXQgaT1uLnBhcnRzWzBdO3QuYWRkRXZlbnRMaXN0ZW5lcihuLmxpc3RlbmVyRXZlbnQsKGZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gcih0LGUsbixpLG8pe2xldCBhLHM9dC5kZXRhaWwsbD1zJiZzLnBhdGg7bD8oaT1KKG4saSxsKSxhPXMmJnMudmFsdWUpOmE9dC5jdXJyZW50VGFyZ2V0W25dLGE9bz8hYTphLGVbRHQuUkVBRF9PTkxZXSYmZVtEdC5SRUFEX09OTFldW2ldfHwhZS5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGksYSwhMCxCb29sZWFuKGwpKXx8cyYmcy5xdWV1ZVByb3BlcnR5fHxlLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfSkodCxlLG4udGFyZ2V0LGkuc291cmNlLGkubmVnYXRlKX0pKX19ZnVuY3Rpb24gcmUodCxlLG4saSxyLG8pe2xldCBhPXttZXRob2ROYW1lOmUubWV0aG9kTmFtZSxhcmdzOmUuYXJncyxtZXRob2RJbmZvOnIsZHluYW1pY0ZuOm89ZS5zdGF0aWN8fG8mJigib2JqZWN0IiE9dHlwZW9mIG98fG9bZS5tZXRob2ROYW1lXSl9O2ZvcihsZXQgcixvPTA7bzxlLmFyZ3MubGVuZ3RoJiYocj1lLmFyZ3Nbb10pO28rKylyLmxpdGVyYWx8fHQuX2FkZFByb3BlcnR5RWZmZWN0KHIucm9vdFByb3BlcnR5LG4se2ZuOmksaW5mbzphLHRyaWdnZXI6cn0pO3JldHVybiBvJiZ0Ll9hZGRQcm9wZXJ0eUVmZmVjdChlLm1ldGhvZE5hbWUsbix7Zm46aSxpbmZvOmF9KSxhfWZ1bmN0aW9uIG9lKHQsZSxuLGkscil7bGV0IG89dC5fbWV0aG9kSG9zdHx8dCxhPW9bci5tZXRob2ROYW1lXTtpZihhKXtsZXQgaT10Ll9tYXJzaGFsQXJncyhyLmFyZ3MsZSxuKTtyZXR1cm4gaT09PXp0P3p0OmEuYXBwbHkobyxpKX1yLmR5bmFtaWNGbnx8Y29uc29sZS53YXJuKCJtZXRob2QgYCIrci5tZXRob2ROYW1lKyJgIG5vdCBkZWZpbmVkIil9Y29uc3QgYWU9W10sc2U9bmV3IFJlZ0V4cCgiKFxcW1xcW3x7eylcXHMqKD86KCEpXFxzKik/KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKVxccyooPzpcXChcXHMqKD86KD86KD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSg/OixcXHMqKD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSkqKT8pXFwpXFxzKik/KSg/Ol1dfH19KSIsImciKTtmdW5jdGlvbiBsZSh0KXtsZXQgZT0iIjtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7ZSs9dFtuXS5saXRlcmFsfHwiIn1yZXR1cm4gZX1mdW5jdGlvbiBjZSh0KXtsZXQgZT10Lm1hdGNoKC8oW15cc10rPylcKChbXHNcU10qKVwpLyk7aWYoZSl7bGV0IHQ9e21ldGhvZE5hbWU6ZVsxXSxzdGF0aWM6ITAsYXJnczphZX07aWYoZVsyXS50cmltKCkpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGUuYXJncz10Lm1hcCgoZnVuY3Rpb24odCl7bGV0IG49dWUodCk7cmV0dXJuIG4ubGl0ZXJhbHx8KGUuc3RhdGljPSExKSxufSksdGhpcyksZX0pKGVbMl0ucmVwbGFjZSgvXFwsL2csIiZjb21tYTsiKS5zcGxpdCgiLCIpLHQpfXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIHVlKHQpe2xldCBlPXQudHJpbSgpLnJlcGxhY2UoLyZjb21tYTsvZywiLCIpLnJlcGxhY2UoL1xcKC4pL2csIiQxIiksbj17bmFtZTplLHZhbHVlOiIiLGxpdGVyYWw6ITF9LGk9ZVswXTtzd2l0Y2goIi0iPT09aSYmKGk9ZVsxXSksaT49IjAiJiZpPD0iOSImJihpPSIjIiksaSl7Y2FzZSInIjpjYXNlJyInOm4udmFsdWU9ZS5zbGljZSgxLC0xKSxuLmxpdGVyYWw9ITA7YnJlYWs7Y2FzZSIjIjpuLnZhbHVlPU51bWJlcihlKSxuLmxpdGVyYWw9ITB9cmV0dXJuIG4ubGl0ZXJhbHx8KG4ucm9vdFByb3BlcnR5PSQoZSksbi5zdHJ1Y3R1cmVkPVgoZSksbi5zdHJ1Y3R1cmVkJiYobi53aWxkY2FyZD0iLioiPT1lLnNsaWNlKC0yKSxuLndpbGRjYXJkJiYobi5uYW1lPWUuc2xpY2UoMCwtMikpKSksbn1mdW5jdGlvbiBoZSh0LGUsbil7bGV0IGk9bnQodCxuKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZVtuXSksaX1mdW5jdGlvbiBkZSh0LGUsbixpKXtjb25zdCByPXtpbmRleFNwbGljZXM6aX07RSYmIXQuX292ZXJyaWRlTGVnYWN5VW5kZWZpbmVkJiYoZS5zcGxpY2VzPXIpLHQubm90aWZ5UGF0aChuKyIuc3BsaWNlcyIsciksdC5ub3RpZnlQYXRoKG4rIi5sZW5ndGgiLGUubGVuZ3RoKSxFJiYhdC5fb3ZlcnJpZGVMZWdhY3lVbmRlZmluZWQmJihyLmluZGV4U3BsaWNlcz1bXSl9ZnVuY3Rpb24gcGUodCxlLG4saSxyLG8pe2RlKHQsZSxuLFt7aW5kZXg6aSxhZGRlZENvdW50OnIscmVtb3ZlZDpvLG9iamVjdDplLHR5cGU6InNwbGljZSJ9XSl9Y29uc3QgZmU9TigodD0+e2NvbnN0IGU9UnQoTXQodCkpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudD0hMH1nZXQgUFJPUEVSVFlfRUZGRUNUX1RZUEVTKCl7cmV0dXJuIER0fV9pbml0aWFsaXplUHJvcGVydGllcygpe3N1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX3JlZ2lzdGVySG9zdCgpLHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5PSExLHRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHM9bnVsbCx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fX2RhdGFMaW5rZWRQYXRocz1udWxsLHRoaXMuX19kYXRhSGFzUGF0aHM9ITEsdGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2U9dGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2V8fG51bGwsdGhpcy5fX2RhdGFIb3N0PXRoaXMuX19kYXRhSG9zdHx8bnVsbCx0aGlzLl9fZGF0YVRlbXA9e30sdGhpcy5fX2RhdGFDbGllbnRzSW5pdGlhbGl6ZWQ9ITF9X3JlZ2lzdGVySG9zdCgpe2lmKG1lLmxlbmd0aCl7bGV0IHQ9bWVbbWUubGVuZ3RoLTFdO3QuX2VucXVldWVDbGllbnQodGhpcyksdGhpcy5fX2RhdGFIb3N0PXR9fV9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHQpe3RoaXMuX19kYXRhPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFQZW5kaW5nPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFPbGQ9e319X2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModCl7bGV0IGU9dGhpc1tEdC5SRUFEX09OTFldO2ZvcihsZXQgbiBpbiB0KWUmJmVbbl18fCh0aGlzLl9fZGF0YVBlbmRpbmc9dGhpcy5fX2RhdGFQZW5kaW5nfHx7fSx0aGlzLl9fZGF0YU9sZD10aGlzLl9fZGF0YU9sZHx8e30sdGhpcy5fX2RhdGFbbl09dGhpcy5fX2RhdGFQZW5kaW5nW25dPXRbbl0pfV9hZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil7dGhpcy5fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGU9PUR0LlJFQURfT05MWSk7bGV0IGk9RnQodGhpcyxlLCEwKVt0XTtpfHwoaT10aGlzW2VdW3RdPVtdKSxpLnB1c2gobil9X3JlbW92ZVByb3BlcnR5RWZmZWN0KHQsZSxuKXtsZXQgaT1GdCh0aGlzLGUsITApW3RdLHI9aS5pbmRleE9mKG4pO3I+PTAmJmkuc3BsaWNlKHIsMSl9X2hhc1Byb3BlcnR5RWZmZWN0KHQsZSl7bGV0IG49dGhpc1tlXTtyZXR1cm4gQm9vbGVhbihuJiZuW3RdKX1faGFzUmVhZE9ubHlFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsRHQuUkVBRF9PTkxZKX1faGFzTm90aWZ5RWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LER0Lk5PVElGWSl9X2hhc1JlZmxlY3RFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsRHQuUkVGTEVDVCl9X2hhc0NvbXB1dGVkRWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LER0LkNPTVBVVEUpfV9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLG4saSl7aWYoaXx8JChBcnJheS5pc0FycmF5KHQpP3RbMF06dCkhPT10KXtpZighaSl7bGV0IG49bnQodGhpcyx0KTtpZighKHQ9aXQodGhpcyx0LGUpKXx8IXN1cGVyLl9zaG91bGRQcm9wZXJ0eUNoYW5nZSh0LGUsbikpcmV0dXJuITF9aWYodGhpcy5fX2RhdGFIYXNQYXRocz0hMCx0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLG4pKXJldHVybihmdW5jdGlvbiByKHQsZSxuKXtsZXQgaT10Ll9fZGF0YUxpbmtlZFBhdGhzO2lmKGkpe2xldCByO2ZvcihsZXQgbyBpbiBpKXtsZXQgYT1pW29dO1oobyxlKT8ocj1KKG8sYSxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSk6WihhLGUpJiYocj1KKGEsbyxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSl9fX0pKHRoaXMsdCxlKSwhMH1lbHNle2lmKHRoaXMuX19kYXRhSGFzQWNjZXNzb3ImJnRoaXMuX19kYXRhSGFzQWNjZXNzb3JbdF0pcmV0dXJuIHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsbik7dGhpc1t0XT1lfXJldHVybiExfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7bj09PXRbZV0mJiJvYmplY3QiIT10eXBlb2Ygbnx8KCJjbGFzc05hbWUiPT09ZSYmKHQ9WSh0KSksdFtlXT1uKX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YUhhc1BhdGhzJiZYKHQpO3JldHVybiEhdGhpcy5fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLChpP3RoaXMuX19kYXRhVGVtcDp0aGlzLl9fZGF0YSlbdF0pJiYodGhpcy5fX2RhdGFQZW5kaW5nfHwodGhpcy5fX2RhdGFQZW5kaW5nPXt9LHRoaXMuX19kYXRhT2xkPXt9KSx0IGluIHRoaXMuX19kYXRhT2xkfHwodGhpcy5fX2RhdGFPbGRbdF09dGhpcy5fX2RhdGFbdF0pLGk/dGhpcy5fX2RhdGFUZW1wW3RdPWU6dGhpcy5fX2RhdGFbdF09ZSx0aGlzLl9fZGF0YVBlbmRpbmdbdF09ZSwoaXx8dGhpc1tEdC5OT1RJRlldJiZ0aGlzW0R0Lk5PVElGWV1bdF0pJiYodGhpcy5fX2RhdGFUb05vdGlmeT10aGlzLl9fZGF0YVRvTm90aWZ5fHx7fSx0aGlzLl9fZGF0YVRvTm90aWZ5W3RdPW4pLCEwKX1fc2V0UHJvcGVydHkodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1faW52YWxpZGF0ZVByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YVJlYWR5JiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fZW5xdWV1ZUNsaWVudCh0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPXRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHN8fFtdLHQhPT10aGlzJiZ0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzLnB1c2godCl9X2ZsdXNoQ2xpZW50cygpe3RoaXMuX19kYXRhQ2xpZW50c1JlYWR5P3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpOih0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT0hMCx0aGlzLl9yZWFkeUNsaWVudHMoKSx0aGlzLl9fZGF0YVJlYWR5PSEwKX1fX2VuYWJsZU9yRmx1c2hDbGllbnRzKCl7bGV0IHQ9dGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cztpZih0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPW51bGw7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07bi5fX2RhdGFFbmFibGVkP24uX19kYXRhUGVuZGluZyYmbi5fZmx1c2hQcm9wZXJ0aWVzKCk6bi5fZW5hYmxlUHJvcGVydGllcygpfX19X3JlYWR5Q2xpZW50cygpe3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpfXNldFByb3BlcnRpZXModCxlKXtmb3IobGV0IG4gaW4gdCkhZSYmdGhpc1tEdC5SRUFEX09OTFldJiZ0aGlzW0R0LlJFQURfT05MWV1bbl18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChuLHRbbl0sITApO3RoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9cmVhZHkoKXt0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeXx8dGhpcy5fZmx1c2hDbGllbnRzKCksdGhpcy5fX2RhdGFQZW5kaW5nJiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe2xldCBpLHI9dGhpcy5fX2RhdGFIYXNQYXRoczt0aGlzLl9fZGF0YUhhc1BhdGhzPSExLCR0KHRoaXMsZSxuLHIpLGk9dGhpcy5fX2RhdGFUb05vdGlmeSx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKGUsbixyKSx0aGlzLl9mbHVzaENsaWVudHMoKSxWdCh0aGlzLHRoaXNbRHQuUkVGTEVDVF0sZSxuLHIpLFZ0KHRoaXMsdGhpc1tEdC5PQlNFUlZFXSxlLG4sciksaSYmKGZ1bmN0aW9uIG8odCxlLG4saSxyKXtsZXQgbyxhLHM9dFtEdC5OT1RJRlldLGw9T3QrKztmb3IobGV0IGEgaW4gZSllW2FdJiYocyYmVXQodCxzLGwsYSxuLGkscil8fHImJld0KHQsYSxuKSkmJihvPSEwKTtvJiYoYT10Ll9fZGF0YUhvc3QpJiZhLl9pbnZhbGlkYXRlUHJvcGVydGllcyYmYS5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX0pKHRoaXMsaSxlLG4sciksMT09dGhpcy5fX2RhdGFDb3VudGVyJiYodGhpcy5fX2RhdGFUZW1wPXt9KX1fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKHQsZSxuKXt0aGlzW0R0LlBST1BBR0FURV0mJlZ0KHRoaXMsdGhpc1tEdC5QUk9QQUdBVEVdLHQsZSxuKSx0aGlzLl9fdGVtcGxhdGVJbmZvJiZ0aGlzLl9ydW5FZmZlY3RzRm9yVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlSW5mbyx0LGUsbil9X3J1bkVmZmVjdHNGb3JUZW1wbGF0ZSh0LGUsbixpKXtjb25zdCByPShlLGkpPT57VnQodGhpcyx0LnByb3BlcnR5RWZmZWN0cyxlLG4saSx0Lm5vZGVMaXN0KTtmb3IobGV0IHI9dC5maXJzdENoaWxkO3I7cj1yLm5leHRTaWJsaW5nKXRoaXMuX3J1bkVmZmVjdHNGb3JUZW1wbGF0ZShyLGUsbixpKX07dC5ydW5FZmZlY3RzP3QucnVuRWZmZWN0cyhyLGUsaSk6cihlLGkpfWxpbmtQYXRocyh0LGUpe3Q9dHQodCksZT10dChlKSx0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXRoaXMuX19kYXRhTGlua2VkUGF0aHN8fHt9LHRoaXMuX19kYXRhTGlua2VkUGF0aHNbdF09ZX11bmxpbmtQYXRocyh0KXt0PXR0KHQpLHRoaXMuX19kYXRhTGlua2VkUGF0aHMmJmRlbGV0ZSB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzW3RdfW5vdGlmeVNwbGljZXModCxlKXtsZXQgbj17cGF0aDoiIn07ZGUodGhpcyxudCh0aGlzLHQsbiksbi5wYXRoLGUpfWdldCh0LGUpe3JldHVybiBudChlfHx0aGlzLHQpfXNldCh0LGUsbil7bj9pdChuLHQsZSk6dGhpc1tEdC5SRUFEX09OTFldJiZ0aGlzW0R0LlJFQURfT05MWV1bdF18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfXB1c2godCwuLi5lKXtsZXQgbj17cGF0aDoiIn0saT1udCh0aGlzLHQsbikscj1pLmxlbmd0aCxvPWkucHVzaCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnBlKHRoaXMsaSxuLnBhdGgscixlLmxlbmd0aCxbXSksb31wb3AodCl7bGV0IGU9e3BhdGg6IiJ9LG49bnQodGhpcyx0LGUpLGk9Qm9vbGVhbihuLmxlbmd0aCkscj1uLnBvcCgpO3JldHVybiBpJiZwZSh0aGlzLG4sZS5wYXRoLG4ubGVuZ3RoLDAsW3JdKSxyfXNwbGljZSh0LGUsbiwuLi5pKXtsZXQgcixvPXtwYXRoOiIifSxhPW50KHRoaXMsdCxvKTtyZXR1cm4gZTwwP2U9YS5sZW5ndGgtTWF0aC5mbG9vcigtZSk6ZSYmKGU9TWF0aC5mbG9vcihlKSkscj0yPT09YXJndW1lbnRzLmxlbmd0aD9hLnNwbGljZShlKTphLnNwbGljZShlLG4sLi4uaSksKGkubGVuZ3RofHxyLmxlbmd0aCkmJnBlKHRoaXMsYSxvLnBhdGgsZSxpLmxlbmd0aCxyKSxyfXNoaWZ0KHQpe2xldCBlPXtwYXRoOiIifSxuPW50KHRoaXMsdCxlKSxpPUJvb2xlYW4obi5sZW5ndGgpLHI9bi5zaGlmdCgpO3JldHVybiBpJiZwZSh0aGlzLG4sZS5wYXRoLDAsMCxbcl0pLHJ9dW5zaGlmdCh0LC4uLmUpe2xldCBuPXtwYXRoOiIifSxpPW50KHRoaXMsdCxuKSxyPWkudW5zaGlmdCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnBlKHRoaXMsaSxuLnBhdGgsMCxlLmxlbmd0aCxbXSkscn1ub3RpZnlQYXRoKHQsZSl7bGV0IG47aWYoMT09YXJndW1lbnRzLmxlbmd0aCl7bGV0IGk9e3BhdGg6IiJ9O2U9bnQodGhpcyx0LGkpLG49aS5wYXRofWVsc2Ugbj1BcnJheS5pc0FycmF5KHQpP3R0KHQpOnQ7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKG4sZSwhMCwhMCkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0LlJFQURfT05MWSksZSYmKHRoaXNbIl9zZXQiKyhmdW5jdGlvbiBuKHQpe3JldHVybiB0WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9KSh0KV09ZnVuY3Rpb24oZSl7dGhpcy5fc2V0UHJvcGVydHkodCxlKX0pfV9jcmVhdGVQcm9wZXJ0eU9ic2VydmVyKHQsZSxuKXtsZXQgaT17cHJvcGVydHk6dCxtZXRob2Q6ZSxkeW5hbWljRm46Qm9vbGVhbihuKX07dGhpcy5fYWRkUHJvcGVydHlFZmZlY3QodCxEdC5PQlNFUlZFLHtmbjpHdCxpbmZvOmksdHJpZ2dlcjp7bmFtZTp0fX0pLG4mJnRoaXMuX2FkZFByb3BlcnR5RWZmZWN0KGUsRHQuT0JTRVJWRSx7Zm46R3QsaW5mbzppLHRyaWdnZXI6e25hbWU6ZX19KX1fY3JlYXRlTWV0aG9kT2JzZXJ2ZXIodCxlKXtsZXQgbj1jZSh0KTtpZighbil0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBvYnNlcnZlciBleHByZXNzaW9uICciK3QrIiciKTtyZSh0aGlzLG4sRHQuT0JTRVJWRSxvZSxudWxsLGUpfV9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0Lk5PVElGWSx7Zm46WXQsaW5mbzp7ZXZlbnROYW1lOmx0KHQpKyItY2hhbmdlZCIscHJvcGVydHk6dH19KX1fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl7bGV0IGU9dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCk7Ii0iPT09ZVswXT9jb25zb2xlLndhcm4oIlByb3BlcnR5ICIrdCsiIGNhbm5vdCBiZSByZWZsZWN0ZWQgdG8gYXR0cmlidXRlICIrZSsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIHN0YXJ0aW5nIGF0dHJpYnV0ZSBuYW1lLiBVc2UgYSBsb3dlcmNhc2UgZmlyc3QgbGV0dGVyIGZvciB0aGUgcHJvcGVydHkgaW5zdGVhZC4nKTp0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LER0LlJFRkxFQ1Qse2ZuOlh0LGluZm86e2F0dHJOYW1lOmV9fSl9X2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pe2xldCBpPWNlKGUpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIGNvbXB1dGVkIGV4cHJlc3Npb24gJyIrZSsiJyIpO2NvbnN0IHI9cmUodGhpcyxpLER0LkNPTVBVVEUsSnQsdCxuKTtGdCh0aGlzLEJ0KVt0XT1yfV9tYXJzaGFsQXJncyh0LGUsbil7Y29uc3QgaT10aGlzLl9fZGF0YSxyPVtdO2ZvcihsZXQgbz0wLGE9dC5sZW5ndGg7bzxhO28rKyl7bGV0e25hbWU6YSxzdHJ1Y3R1cmVkOnMsd2lsZGNhcmQ6bCx2YWx1ZTpjLGxpdGVyYWw6dX09dFtvXTtpZighdSlpZihsKXtjb25zdCB0PVooYSxlKSxyPWhlKGksbix0P2U6YSk7Yz17cGF0aDp0P2U6YSx2YWx1ZTpyLGJhc2U6dD9udChpLGEpOnJ9fWVsc2UgYz1zP2hlKGksbixhKTppW2FdO2lmKEUmJiF0aGlzLl9vdmVycmlkZUxlZ2FjeVVuZGVmaW5lZCYmdm9pZCAwPT09YyYmdC5sZW5ndGg+MSlyZXR1cm4genQ7cltvXT1jfXJldHVybiByfXN0YXRpYyBhZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil7dGhpcy5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KHQsZSxuKX1zdGF0aWMgY3JlYXRlUHJvcGVydHlPYnNlcnZlcih0LGUsbil7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIodCxlLG4pfXN0YXRpYyBjcmVhdGVNZXRob2RPYnNlcnZlcih0LGUpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVNZXRob2RPYnNlcnZlcih0LGUpfXN0YXRpYyBjcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkodCl9c3RhdGljIGNyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eSh0LGUpfXN0YXRpYyBjcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eSh0KXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl9c3RhdGljIGNyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pe3RoaXMucHJvdG90eXBlLl9jcmVhdGVDb21wdXRlZFByb3BlcnR5KHQsZSxuKX1zdGF0aWMgYmluZFRlbXBsYXRlKHQpe3JldHVybiB0aGlzLnByb3RvdHlwZS5fYmluZFRlbXBsYXRlKHQpfV9iaW5kVGVtcGxhdGUodCxlKXtsZXQgbj10aGlzLmNvbnN0cnVjdG9yLl9wYXJzZVRlbXBsYXRlKHQpLGk9dGhpcy5fX3ByZUJvdW5kVGVtcGxhdGVJbmZvPT1uO2lmKCFpKWZvcihsZXQgdCBpbiBuLnByb3BlcnR5RWZmZWN0cyl0aGlzLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKHQpO2lmKGUpaWYobj1PYmplY3QuY3JlYXRlKG4pLG4ud2FzUHJlQm91bmQ9aSx0aGlzLl9fdGVtcGxhdGVJbmZvKXtjb25zdCBlPXQuX3BhcmVudFRlbXBsYXRlSW5mb3x8dGhpcy5fX3RlbXBsYXRlSW5mbyxpPWUubGFzdENoaWxkO24ucGFyZW50PWUsZS5sYXN0Q2hpbGQ9bixuLnByZXZpb3VzU2libGluZz1pLGk/aS5uZXh0U2libGluZz1uOmUuZmlyc3RDaGlsZD1ufWVsc2UgdGhpcy5fX3RlbXBsYXRlSW5mbz1uO2Vsc2UgdGhpcy5fX3ByZUJvdW5kVGVtcGxhdGVJbmZvPW47cmV0dXJuIG59c3RhdGljIF9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KHQsZSxuKXsodC5ob3N0UHJvcHM9dC5ob3N0UHJvcHN8fHt9KVtlXT0hMDtsZXQgaT10LnByb3BlcnR5RWZmZWN0cz10LnByb3BlcnR5RWZmZWN0c3x8e307KGlbZV09aVtlXXx8W10pLnB1c2gobil9X3N0YW1wVGVtcGxhdGUodCxlKXtlPWV8fHRoaXMuX2JpbmRUZW1wbGF0ZSh0LCEwKSxtZS5wdXNoKHRoaXMpO2xldCBuPXN1cGVyLl9zdGFtcFRlbXBsYXRlKHQsZSk7aWYobWUucG9wKCksZS5ub2RlTGlzdD1uLm5vZGVMaXN0LCFlLndhc1ByZUJvdW5kKXtsZXQgdD1lLmNoaWxkTm9kZXM9W107Zm9yKGxldCBlPW4uZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyl0LnB1c2goZSl9cmV0dXJuIG4udGVtcGxhdGVJbmZvPWUsKGZ1bmN0aW9uIGkodCxlKXtsZXR7bm9kZUxpc3Q6bixub2RlSW5mb0xpc3Q6aX09ZTtpZihpLmxlbmd0aClmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7bGV0IHI9bltlXSxvPWlbZV0uYmluZGluZ3M7aWYobylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IG49b1tlXTtuZShyLG4pLGllKHIsdCxuKX1yLl9fZGF0YUhvc3Q9dH19KSh0aGlzLGUpLHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5JiYodGhpcy5fcnVuRWZmZWN0c0ZvclRlbXBsYXRlKGUsdGhpcy5fX2RhdGEsbnVsbCwhMSksdGhpcy5fZmx1c2hDbGllbnRzKCkpLG59X3JlbW92ZUJvdW5kRG9tKHQpe2NvbnN0IGU9dC50ZW1wbGF0ZUluZm8se3ByZXZpb3VzU2libGluZzpuLG5leHRTaWJsaW5nOmkscGFyZW50OnJ9PWU7bj9uLm5leHRTaWJsaW5nPWk6ciYmKHIuZmlyc3RDaGlsZD1pKSxpP2kucHJldmlvdXNTaWJsaW5nPW46ciYmKHIubGFzdENoaWxkPW4pLGUubmV4dFNpYmxpbmc9ZS5wcmV2aW91c1NpYmxpbmc9bnVsbDtsZXQgbz1lLmNoaWxkTm9kZXM7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2xldCBlPW9bdF07WShZKGUpLnBhcmVudE5vZGUpLnJlbW92ZUNoaWxkKGUpfX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKHQsbixpKXtsZXQgcj1lLl9wYXJzZVRlbXBsYXRlTm9kZS5jYWxsKHRoaXMsdCxuLGkpO2lmKHQubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSl7bGV0IGU9dGhpcy5fcGFyc2VCaW5kaW5ncyh0LnRleHRDb250ZW50LG4pO2UmJih0LnRleHRDb250ZW50PWxlKGUpfHwiICIsUXQodGhpcyxuLGksInRleHQiLCJ0ZXh0Q29udGVudCIsZSkscj0hMCl9cmV0dXJuIHJ9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZSh0LG4saSxyLG8pe2xldCBhPXRoaXMuX3BhcnNlQmluZGluZ3MobyxuKTtpZihhKXtsZXQgZT1yLG89InByb3BlcnR5IjtIdC50ZXN0KHIpP289ImF0dHJpYnV0ZSI6IiQiPT1yW3IubGVuZ3RoLTFdJiYocj1yLnNsaWNlKDAsLTEpLG89ImF0dHJpYnV0ZSIpO2xldCBzPWxlKGEpO3JldHVybiBzJiYiYXR0cmlidXRlIj09byYmKCJjbGFzcyI9PXImJnQuaGFzQXR0cmlidXRlKCJjbGFzcyIpJiYocys9IiAiK3QuZ2V0QXR0cmlidXRlKHIpKSx0LnNldEF0dHJpYnV0ZShyLHMpKSwiYXR0cmlidXRlIj09byYmImRpc2FibGUtdXBncmFkZSQiPT1lJiZ0LnNldEF0dHJpYnV0ZShyLCIiKSwiaW5wdXQiPT09dC5sb2NhbE5hbWUmJiJ2YWx1ZSI9PT1lJiZ0LnNldEF0dHJpYnV0ZShlLCIiKSx0LnJlbW92ZUF0dHJpYnV0ZShlKSwicHJvcGVydHkiPT09byYmKHI9c3QocikpLFF0KHRoaXMsbixpLG8scixhLHMpLCEwfXJldHVybiBlLl9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZS5jYWxsKHRoaXMsdCxuLGkscixvKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZSh0LG4saSl7bGV0IHI9ZS5fcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlLmNhbGwodGhpcyx0LG4saSk7Y29uc3Qgbz10LnBhcmVudE5vZGUsYT1pLnRlbXBsYXRlSW5mbyxzPSJkb20taWYiPT09by5sb2NhbE5hbWU7QyYmKHN8fCJkb20tcmVwZWF0Ij09PW8ubG9jYWxOYW1lKSYmKG8ucmVtb3ZlQ2hpbGQodCksKGk9aS5wYXJlbnRJbmZvKS50ZW1wbGF0ZUluZm89YSxpLm5vdGVkPSEwLHI9ITEpO2xldCBsPWEuaG9zdFByb3BzO2lmKEEmJnMpbCYmKG4uaG9zdFByb3BzPU9iamVjdC5hc3NpZ24obi5ob3N0UHJvcHN8fHt9LGwpLEN8fChpLnBhcmVudEluZm8ubm90ZWQ9ITApKTtlbHNle2xldCB0PSJ7Ijtmb3IobGV0IGUgaW4gbCl7UXQodGhpcyxuLGksInByb3BlcnR5IiwiX2hvc3RfIitlLFt7bW9kZTp0LHNvdXJjZTplLGRlcGVuZGVuY2llczpbZV0saG9zdFByb3A6ITB9XSl9fXJldHVybiByfXN0YXRpYyBfcGFyc2VCaW5kaW5ncyh0LGUpe2xldCBuLGk9W10scj0wO2Zvcig7bnVsbCE9PShuPXNlLmV4ZWModCkpOyl7bi5pbmRleD5yJiZpLnB1c2goe2xpdGVyYWw6dC5zbGljZShyLG4uaW5kZXgpfSk7bGV0IG89blsxXVswXSxhPUJvb2xlYW4oblsyXSkscz1uWzNdLnRyaW0oKSxsPSExLGM9IiIsdT0tMTsieyI9PW8mJih1PXMuaW5kZXhPZigiOjoiKSk+MCYmKGM9cy5zdWJzdHJpbmcodSsyKSxzPXMuc3Vic3RyaW5nKDAsdSksbD0hMCk7bGV0IGg9Y2UocyksZD1bXTtpZihoKXtsZXR7YXJnczp0LG1ldGhvZE5hbWU6bn09aDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtuLmxpdGVyYWx8fGQucHVzaChuKX1sZXQgaT1lLmR5bmFtaWNGbnM7KGkmJmlbbl18fGguc3RhdGljKSYmKGQucHVzaChuKSxoLmR5bmFtaWNGbj0hMCl9ZWxzZSBkLnB1c2gocyk7aS5wdXNoKHtzb3VyY2U6cyxtb2RlOm8sbmVnYXRlOmEsY3VzdG9tRXZlbnQ6bCxzaWduYXR1cmU6aCxkZXBlbmRlbmNpZXM6ZCxldmVudDpjfSkscj1zZS5sYXN0SW5kZXh9aWYociYmcjx0Lmxlbmd0aCl7bGV0IGU9dC5zdWJzdHJpbmcocik7ZSYmaS5wdXNoKHtsaXRlcmFsOmV9KX1yZXR1cm4gaS5sZW5ndGg/aTpudWxsfXN0YXRpYyBfZXZhbHVhdGVCaW5kaW5nKHQsZSxuLGkscixvKXtsZXQgYTtyZXR1cm4gYT1lLnNpZ25hdHVyZT9vZSh0LG4saSwwLGUuc2lnbmF0dXJlKTpuIT1lLnNvdXJjZT9udCh0LGUuc291cmNlKTpvJiZYKG4pP250KHQsbik6dC5fX2RhdGFbbl0sZS5uZWdhdGUmJihhPSFhKSxhfX19KSksbWU9W107Y29uc3QgZ2U9TigodD0+e2NvbnN0IGU9eHQodCk7ZnVuY3Rpb24gbih0KXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gZS5wcm90b3R5cGUgaW5zdGFuY2VvZiByP2U6bnVsbH1mdW5jdGlvbiBpKHQpe2lmKCF0Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb3duUHJvcGVydGllcyIsdCkpKXtsZXQgZT1udWxsO2lmKHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgicHJvcGVydGllcyIsdCkpKXtjb25zdCBuPXQucHJvcGVydGllcztuJiYoZT0oCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmZ1bmN0aW9uIGUodCl7Y29uc3QgZT17fTtmb3IobGV0IG4gaW4gdCl7Y29uc3QgaT10W25dO2Vbbl09ImZ1bmN0aW9uIj09dHlwZW9mIGk/e3R5cGU6aX06aX1yZXR1cm4gZX0pKG4pKX10Ll9fb3duUHJvcGVydGllcz1lfXJldHVybiB0Ll9fb3duUHJvcGVydGllc31jbGFzcyByIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzIix0aGlzKSkpe2NvbnN0IHQ9dGhpcy5fcHJvcGVydGllczt0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzPXQ/T2JqZWN0LmtleXModCkubWFwKCh0PT50aGlzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcCh0KSkpOltdfXJldHVybiB0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzfXN0YXRpYyBmaW5hbGl6ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZmluYWxpemVkIix0aGlzKSkpe2NvbnN0IHQ9bih0aGlzKTt0JiZ0LmZpbmFsaXplKCksdGhpcy5fX2ZpbmFsaXplZD0hMCx0aGlzLl9maW5hbGl6ZUNsYXNzKCl9fXN0YXRpYyBfZmluYWxpemVDbGFzcygpe2NvbnN0IHQ9aSh0aGlzKTt0JiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModCl9c3RhdGljIGdldCBfcHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fcHJvcGVydGllcyIsdGhpcykpKXtjb25zdCB0PW4odGhpcyk7dGhpcy5fX3Byb3BlcnRpZXM9T2JqZWN0LmFzc2lnbih7fSx0JiZ0Ll9wcm9wZXJ0aWVzLGkodGhpcykpfXJldHVybiB0aGlzLl9fcHJvcGVydGllc31zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe2NvbnN0IGU9dGhpcy5fcHJvcGVydGllc1t0XTtyZXR1cm4gZSYmZS50eXBlfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX1yZXR1cm4gcn0pKSxfZT13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCx5ZT1OKCh0PT57Y29uc3QgZT1nZShmZSh0KSk7ZnVuY3Rpb24gbih0LGUsbixpKXtuLmNvbXB1dGVkJiYobi5yZWFkT25seT0hMCksbi5jb21wdXRlZCYmKHQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP2NvbnNvbGUud2FybihgQ2Fubm90IHJlZGVmaW5lIGNvbXB1dGVkIHByb3BlcnR5ICcke2V9Jy5gKTp0Ll9jcmVhdGVDb21wdXRlZFByb3BlcnR5KGUsbi5jb21wdXRlZCxpKSksbi5yZWFkT25seSYmIXQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP3QuX2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkoZSwhbi5jb21wdXRlZCk6ITE9PT1uLnJlYWRPbmx5JiZ0Ll9oYXNSZWFkT25seUVmZmVjdChlKSYmY29uc29sZS53YXJuKGBDYW5ub3QgbWFrZSByZWFkT25seSBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlYWRPbmx5LmApLG4ucmVmbGVjdFRvQXR0cmlidXRlJiYhdC5faGFzUmVmbGVjdEVmZmVjdChlKT90Ll9jcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eShlKTohMT09PW4ucmVmbGVjdFRvQXR0cmlidXRlJiZ0Ll9oYXNSZWZsZWN0RWZmZWN0KGUpJiZjb25zb2xlLndhcm4oYENhbm5vdCBtYWtlIHJlZmxlY3RlZCBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlZmxlY3RlZC5gKSxuLm5vdGlmeSYmIXQuX2hhc05vdGlmeUVmZmVjdChlKT90Ll9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eShlKTohMT09PW4ubm90aWZ5JiZ0Ll9oYXNOb3RpZnlFZmZlY3QoZSkmJmNvbnNvbGUud2FybihgQ2Fubm90IG1ha2Ugbm90aWZ5IHByb3BlcnR5ICcke2V9JyBub24tbm90aWZ5LmApLG4ub2JzZXJ2ZXImJnQuX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIoZSxuLm9ic2VydmVyLGlbbi5vYnNlcnZlcl0pLHQuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAoZSl9ZnVuY3Rpb24gaSh0LGUsbixpKXtpZighX2Upe2NvbnN0IHI9ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIiksbz1HKGUpLGE9KGZ1bmN0aW9uIHIodCl7bGV0IGU9Rih0KTtyZXR1cm4gZT9XKGUpOltdfSkobikscz1lLmNvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQ7Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspe2xldCByPWFbbl07ci50ZXh0Q29udGVudD10Ll9wcm9jZXNzU3R5bGVUZXh0KHIudGV4dENvbnRlbnQsaSksZS5jb250ZW50Lmluc2VydEJlZm9yZShyLHMpfWxldCBsPTA7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2xldCBuPW9bZV0sYT1yW2xdO2EhPT1uPyhuPW4uY2xvbmVOb2RlKCEwKSxhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sYSkpOmwrKyxuLnRleHRDb250ZW50PXQuX3Byb2Nlc3NTdHlsZVRleHQobi50ZXh0Q29udGVudCxpKX19aWYod2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKGUsbiksTCYmX2UmJmcpe2NvbnN0IG49ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7aWYobil7bGV0IGU9IiI7QXJyYXkuZnJvbShuKS5mb3JFYWNoKCh0PT57ZSs9dC50ZXh0Q29udGVudCx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9KSksdC5fc3R5bGVTaGVldD1uZXcgQ1NTU3R5bGVTaGVldCx0Ll9zdHlsZVNoZWV0LnJlcGxhY2VTeW5jKGUpfX19cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHBvbHltZXJFbGVtZW50VmVyc2lvbigpe3JldHVybiIzLjQuMSJ9c3RhdGljIF9maW5hbGl6ZUNsYXNzKCl7ZS5fZmluYWxpemVDbGFzcy5jYWxsKHRoaXMpO2NvbnN0IHQ9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vd25PYnNlcnZlcnMiLHQpKXx8KHQuX19vd25PYnNlcnZlcnM9dC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJvYnNlcnZlcnMiLHQpKT90Lm9ic2VydmVyczpudWxsKSx0Ll9fb3duT2JzZXJ2ZXJzfSkodGhpcyk7dCYmdGhpcy5jcmVhdGVPYnNlcnZlcnModCx0aGlzLl9wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1zdGF0aWMgX3ByZXBhcmVUZW1wbGF0ZSgpe2xldCB0PXRoaXMudGVtcGxhdGU7dCYmKCJzdHJpbmciPT10eXBlb2YgdD8oY29uc29sZS5lcnJvcigidGVtcGxhdGUgZ2V0dGVyIG11c3QgcmV0dXJuIEhUTUxUZW1wbGF0ZUVsZW1lbnQiKSx0PW51bGwpOnd8fCh0PXQuY2xvbmVOb2RlKCEwKSkpLHRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZT10fXN0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2ZvcihsZXQgZSBpbiB0KW4odGhpcy5wcm90b3R5cGUsZSx0W2VdLHQpfXN0YXRpYyBjcmVhdGVPYnNlcnZlcnModCxlKXtjb25zdCBuPXRoaXMucHJvdG90eXBlO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKW4uX2NyZWF0ZU1ldGhvZE9ic2VydmVyKHRbaV0sZSl9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcykpKXtjb25zdCB0PXRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcy5wcm90b3R5cGUpKT90aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU6dm9pZCAwO3RoaXMuX3RlbXBsYXRlPXZvaWQgMCE9PXQ/dDp0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoImlzIix0aGlzKSkmJihmdW5jdGlvbiBlKHQpe2xldCBlPW51bGw7aWYodCYmKCFifHx4KSYmKGU9Qi5pbXBvcnQodCwidGVtcGxhdGUiKSxiJiYhZSkpdGhyb3cgbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZXhwZWN0aW5nIGRvbS1tb2R1bGUgb3IgbnVsbCB0ZW1wbGF0ZSBmb3IgJHt0fWApO3JldHVybiBlfSkodGhpcy5pcyl8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IudGVtcGxhdGV9cmV0dXJuIHRoaXMuX3RlbXBsYXRlfXN0YXRpYyBzZXQgdGVtcGxhdGUodCl7dGhpcy5fdGVtcGxhdGU9dH1zdGF0aWMgZ2V0IGltcG9ydFBhdGgoKXtpZighdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfaW1wb3J0UGF0aCIsdGhpcykpKXtjb25zdCB0PXRoaXMuaW1wb3J0TWV0YTtpZih0KXRoaXMuX2ltcG9ydFBhdGg9Zih0LnVybCk7ZWxzZXtjb25zdCB0PUIuaW1wb3J0KHRoaXMuaXMpO3RoaXMuX2ltcG9ydFBhdGg9dCYmdC5hc3NldHBhdGh8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IuaW1wb3J0UGF0aH19cmV0dXJuIHRoaXMuX2ltcG9ydFBhdGh9Y29uc3RydWN0b3IoKXtzdXBlcigpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSx0aGlzLmNvbnN0cnVjdG9yLl9maW5hbGl6ZVRlbXBsYXRlKHRoaXMubG9jYWxOYW1lKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLnJvb3RQYXRoPV8sdGhpcy5pbXBvcnRQYXRoPXRoaXMuY29uc3RydWN0b3IuaW1wb3J0UGF0aDtsZXQgdD0oZnVuY3Rpb24gZSh0KXtpZighdC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX3Byb3BlcnR5RGVmYXVsdHMiLHQpKSl7dC5fX3Byb3BlcnR5RGVmYXVsdHM9bnVsbDtsZXQgZT10Ll9wcm9wZXJ0aWVzO2ZvcihsZXQgbiBpbiBlKXtsZXQgaT1lW25dOyJ2YWx1ZSJpbiBpJiYodC5fX3Byb3BlcnR5RGVmYXVsdHM9dC5fX3Byb3BlcnR5RGVmYXVsdHN8fHt9LHQuX19wcm9wZXJ0eURlZmF1bHRzW25dPWkpfX1yZXR1cm4gdC5fX3Byb3BlcnR5RGVmYXVsdHN9KSh0aGlzLmNvbnN0cnVjdG9yKTtpZih0KWZvcihsZXQgZSBpbiB0KXtsZXQgbj10W2VdO2lmKHRoaXMuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KGUpKXtsZXQgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbi52YWx1ZT9uLnZhbHVlLmNhbGwodGhpcyk6bi52YWx1ZTt0aGlzLl9oYXNBY2Nlc3NvcihlKT90aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0LCEwKTp0aGlzW2VdPXR9fX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIXRoaXMuaGFzT3duUHJvcGVydHkodCl9c3RhdGljIF9wcm9jZXNzU3R5bGVUZXh0KHQsZSl7cmV0dXJuIHAodCxlKX1zdGF0aWMgX2ZpbmFsaXplVGVtcGxhdGUodCl7Y29uc3QgZT10aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU7aWYoZSYmIWUuX19wb2x5bWVyRmluYWxpemVkKXtlLl9fcG9seW1lckZpbmFsaXplZD0hMDtjb25zdCBuPXRoaXMuaW1wb3J0UGF0aDtpKHRoaXMsZSx0LG4/ZChuKToiIiksdGhpcy5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZShlKX19Y29ubmVjdGVkQ2FsbGJhY2soKXt3aW5kb3cuU2hhZHlDU1MmJnRoaXMuX3RlbXBsYXRlJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpLHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCl9cmVhZHkoKXt0aGlzLl90ZW1wbGF0ZSYmKHRoaXMucm9vdD10aGlzLl9zdGFtcFRlbXBsYXRlKHRoaXMuX3RlbXBsYXRlKSx0aGlzLiQ9dGhpcy5yb290LiQpLHN1cGVyLnJlYWR5KCl9X3JlYWR5Q2xpZW50cygpe3RoaXMuX3RlbXBsYXRlJiYodGhpcy5yb290PXRoaXMuX2F0dGFjaERvbSh0aGlzLnJvb3QpKSxzdXBlci5fcmVhZHlDbGllbnRzKCl9X2F0dGFjaERvbSh0KXtjb25zdCBlPVkodGhpcyk7aWYoZS5hdHRhY2hTaGFkb3cpcmV0dXJuIHQ/KGUuc2hhZG93Um9vdHx8KGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIixzaGFkeVVwZ3JhZGVGcmFnbWVudDp0fSksZS5zaGFkb3dSb290LmFwcGVuZENoaWxkKHQpLHRoaXMuY29uc3RydWN0b3IuX3N0eWxlU2hlZXQmJihlLnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzPVt0aGlzLmNvbnN0cnVjdG9yLl9zdHlsZVNoZWV0XSkpLE0mJndpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmZsdXNoSW5pdGlhbChlLnNoYWRvd1Jvb3QpLGUuc2hhZG93Um9vdCk6bnVsbDt0aHJvdyBuZXcgRXJyb3IoIlNoYWRvd0RPTSBub3QgYXZhaWxhYmxlLiBQb2x5bWVyRWxlbWVudCBjYW4gY3JlYXRlIGRvbSBhcyBjaGlsZHJlbiBpbnN0ZWFkIG9mIGluIFNoYWRvd0RPTSBieSBzZXR0aW5nIGB0aGlzLnJvb3QgPSB0aGlzO2AgYmVmb3JlIGByZWFkeWAuIil9dXBkYXRlU3R5bGVzKHQpe3dpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLnN0eWxlU3VidHJlZSh0aGlzLHQpfXJlc29sdmVVcmwodCxlKXtyZXR1cm4hZSYmdGhpcy5pbXBvcnRQYXRoJiYoZT1kKHRoaXMuaW1wb3J0UGF0aCkpLGQodCxlKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbixpKXtyZXR1cm4gbi5keW5hbWljRm5zPW4uZHluYW1pY0Zuc3x8dGhpcy5fcHJvcGVydGllcyxlLl9wYXJzZVRlbXBsYXRlQ29udGVudC5jYWxsKHRoaXMsdCxuLGkpfXN0YXRpYyBfYWRkVGVtcGxhdGVQcm9wZXJ0eUVmZmVjdCh0LG4saSl7cmV0dXJuIVN8fG4gaW4gdGhpcy5fcHJvcGVydGllc3x8aS5pbmZvLnBhcnQuc2lnbmF0dXJlJiZpLmluZm8ucGFydC5zaWduYXR1cmUuc3RhdGljfHxpLmluZm8ucGFydC5ob3N0UHJvcHx8dC5uZXN0ZWRUZW1wbGF0ZXx8Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHtufScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApLGUuX2FkZFRlbXBsYXRlUHJvcGVydHlFZmZlY3QuY2FsbCh0aGlzLHQsbixpKX19fSkpOwovKioKICAgICAqIEBmaWxlb3ZlcnZpZXcKICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tQcm90b3R5cGFsVHlwZXN9CiAgICAgKiBAbGljZW5zZSBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZAogICAgICogYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heQogICAgICogYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieQogICAgICogR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUAogICAgICogcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIHZle2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dC50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudmFsdWV9fWZ1bmN0aW9uIGJlKHQpe2lmKHQgaW5zdGFuY2VvZiBIVE1MVGVtcGxhdGVFbGVtZW50KXJldHVybiB0LmlubmVySFRNTDtpZih0IGluc3RhbmNlb2YgdmUpcmV0dXJuKGZ1bmN0aW9uIGUodCl7aWYodCBpbnN0YW5jZW9mIHZlKXJldHVybiB0LnZhbHVlO3Rocm93IG5ldyBFcnJvcihgbm9uLWxpdGVyYWwgdmFsdWUgcGFzc2VkIHRvIFBvbHltZXIncyBodG1sTGl0ZXJhbCBmdW5jdGlvbjogJHt0fWApfSkodCk7dGhyb3cgbmV3IEVycm9yKGBub24tdGVtcGxhdGUgdmFsdWUgcGFzc2VkIHRvIFBvbHltZXIncyBodG1sIGZ1bmN0aW9uOiAke3R9YCl9Y29uc3QgeGU9ZnVuY3Rpb24gdChlLC4uLm4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gaS5pbm5lckhUTUw9bi5yZWR1Y2UoKCh0LG4saSk9PnQrYmUobikrZVtpKzFdKSxlWzBdKSxpfSx3ZT15ZShIVE1MRWxlbWVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovdmFyIFNlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gTWUodCl7aWYodC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGkuZ2V0P2k6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSksZX12YXIgRWUsVGUsQ2U9e2V4cG9ydHM6e319OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+CiAgICAgKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+CiAgICAgKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPgogICAgICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzCiAgICAgKi9FZT1DZSxUZT1DZS5leHBvcnRzLGZ1bmN0aW9uKCl7dmFyIHQsZT0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIsbj0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsaT0iX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyIscj0xNixvPTMyLGE9NjQscz0xMjgsbD0yNTYsYz0xLzAsdT05MDA3MTk5MjU0NzQwOTkxLGg9TmFOLGQ9NDI5NDk2NzI5NSxwPVtbImFyeSIsc10sWyJiaW5kIiwxXSxbImJpbmRLZXkiLDJdLFsiY3VycnkiLDhdLFsiY3VycnlSaWdodCIscl0sWyJmbGlwIiw1MTJdLFsicGFydGlhbCIsb10sWyJwYXJ0aWFsUmlnaHQiLGFdLFsicmVhcmciLGxdXSxmPSJbb2JqZWN0IEFyZ3VtZW50c10iLG09IltvYmplY3QgQXJyYXldIixnPSJbb2JqZWN0IEJvb2xlYW5dIixfPSJbb2JqZWN0IERhdGVdIix5PSJbb2JqZWN0IEVycm9yXSIsdj0iW29iamVjdCBGdW5jdGlvbl0iLGI9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix4PSJbb2JqZWN0IE1hcF0iLHc9IltvYmplY3QgTnVtYmVyXSIsUz0iW29iamVjdCBPYmplY3RdIixNPSJbb2JqZWN0IFByb21pc2VdIixFPSJbb2JqZWN0IFJlZ0V4cF0iLFQ9IltvYmplY3QgU2V0XSIsQz0iW29iamVjdCBTdHJpbmddIixBPSJbb2JqZWN0IFN5bWJvbF0iLGs9IltvYmplY3QgV2Vha01hcF0iLFA9IltvYmplY3QgQXJyYXlCdWZmZXJdIixMPSJbb2JqZWN0IERhdGFWaWV3XSIsST0iW29iamVjdCBGbG9hdDMyQXJyYXldIixOPSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLFI9IltvYmplY3QgSW50OEFycmF5XSIsTz0iW29iamVjdCBJbnQxNkFycmF5XSIsej0iW29iamVjdCBJbnQzMkFycmF5XSIsRD0iW29iamVjdCBVaW50OEFycmF5XSIsQj0iW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLEg9IltvYmplY3QgVWludDE2QXJyYXldIixGPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsVj0vXGJfX3AgXCs9ICcnOy9nLFU9L1xiKF9fcCBcKz0pICcnIFwrL2csaj0vKF9fZVwoLio/XCl8XGJfX3RcKSkgXCtcbicnOy9nLEc9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFc9L1smPD4iJ10vZyxxPVJlZ0V4cChHLnNvdXJjZSksWT1SZWdFeHAoVy5zb3VyY2UpLFg9LzwlLShbXHNcU10rPyklPi9nLCQ9LzwlKFtcc1xTXSs/KSU+L2csSz0vPCU9KFtcc1xTXSs/KSU+L2csWj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxKPS9eXHcqJC8sUT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyx0dD0vW1xcXiQuKis/KClbXF17fXxdL2csZXQ9UmVnRXhwKHR0LnNvdXJjZSksbnQ9L15ccysvLGl0PS9ccy8scnQ9L1x7KD86XG5cL1wqIFxbd3JhcHBlZCB3aXRoIC4rXF0gXCpcLyk/XG4/LyxvdD0vXHtcblwvXCogXFt3cmFwcGVkIHdpdGggKC4rKVxdIFwqLyxhdD0vLD8gJiAvLHN0PS9bXlx4MDAtXHgyZlx4M2EtXHg0MFx4NWItXHg2MFx4N2ItXHg3Zl0rL2csbHQ9L1soKT0se31cW1xdXC9cc10vLGN0PS9cXChcXCk/L2csdXQ9L1wkXHsoW15cXH1dKig/OlxcLlteXFx9XSopKilcfS9nLGh0PS9cdyokLyxkdD0vXlstK10weFswLTlhLWZdKyQvaSxwdD0vXjBiWzAxXSskL2ksZnQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sbXQ9L14wb1swLTddKyQvaSxndD0vXig/OjB8WzEtOV1cZCopJC8sX3Q9L1tceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx4ZmZcdTAxMDAtXHUwMTdmXS9nLHl0PS8oJF4pLyx2dD0vWydcblxyXHUyMDI4XHUyMDI5XFxdL2csYnQ9IlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZiIseHQ9IlxcdTI3MDAtXFx1MjdiZiIsd3Q9ImEtelxceGRmLVxceGY2XFx4ZjgtXFx4ZmYiLFN0PSJBLVpcXHhjMC1cXHhkNlxceGQ4LVxceGRlIixNdD0iXFx1ZmUwZVxcdWZlMGYiLEV0PSJcXHhhY1xceGIxXFx4ZDdcXHhmN1xceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceGJmXFx1MjAwMC1cXHUyMDZmIFxcdFxceDBiXFxmXFx4YTBcXHVmZWZmXFxuXFxyXFx1MjAyOFxcdTIwMjlcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwIixUdD0iWyfigJldIixDdD0iW1xcdWQ4MDAtXFx1ZGZmZl0iLEF0PSJbIitFdCsiXSIsa3Q9IlsiK2J0KyJdIixQdD0iXFxkKyIsTHQ9IltcXHUyNzAwLVxcdTI3YmZdIixJdD0iWyIrd3QrIl0iLE50PSJbXlxcdWQ4MDAtXFx1ZGZmZiIrRXQrUHQreHQrd3QrU3QrIl0iLFJ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLE90PSJbXlxcdWQ4MDAtXFx1ZGZmZl0iLHp0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixEdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsQnQ9IlsiK1N0KyJdIixIdD0iKD86IitJdCsifCIrTnQrIikiLEZ0PSIoPzoiK0J0KyJ8IitOdCsiKSIsVnQ9Iig/Olsn4oCZXSg/OmR8bGx8bXxyZXxzfHR8dmUpKT8iLFV0PSIoPzpbJ+KAmV0oPzpEfExMfE18UkV8U3xUfFZFKSk/IixqdD0iKD86IitrdCsifCIrUnQrIik/IixHdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFd0PUd0K2p0KyIoPzpcXHUyMDBkKD86IitbT3QsenQsRHRdLmpvaW4oInwiKSsiKSIrR3QranQrIikqIixxdD0iKD86IitbTHQsenQsRHRdLmpvaW4oInwiKSsiKSIrV3QsWXQ9Iig/OiIrW090K2t0KyI/IixrdCx6dCxEdCxDdF0uam9pbigifCIpKyIpIixYdD1SZWdFeHAoVHQsImciKSwkdD1SZWdFeHAoa3QsImciKSxLdD1SZWdFeHAoUnQrIig/PSIrUnQrIil8IitZdCtXdCwiZyIpLFp0PVJlZ0V4cChbQnQrIj8iK0l0KyIrIitWdCsiKD89IitbQXQsQnQsIiQiXS5qb2luKCJ8IikrIikiLEZ0KyIrIitVdCsiKD89IitbQXQsQnQrSHQsIiQiXS5qb2luKCJ8IikrIikiLEJ0KyI/IitIdCsiKyIrVnQsQnQrIisiK1V0LCJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD89XFxifFthLXpfXSkiLCJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLFB0LHF0XS5qb2luKCJ8IiksImciKSxKdD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmIitidCtNdCsiXSIpLFF0PS9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vLHRlPVsiQXJyYXkiLCJCdWZmZXIiLCJEYXRhVmlldyIsIkRhdGUiLCJFcnJvciIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkZ1bmN0aW9uIiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJNYXAiLCJNYXRoIiwiT2JqZWN0IiwiUHJvbWlzZSIsIlJlZ0V4cCIsIlNldCIsIlN0cmluZyIsIlN5bWJvbCIsIlR5cGVFcnJvciIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJXZWFrTWFwIiwiXyIsImNsZWFyVGltZW91dCIsImlzRmluaXRlIiwicGFyc2VJbnQiLCJzZXRUaW1lb3V0Il0sZWU9LTEsbmU9e307bmVbSV09bmVbTl09bmVbUl09bmVbT109bmVbel09bmVbRF09bmVbQl09bmVbSF09bmVbRl09ITAsbmVbZl09bmVbbV09bmVbUF09bmVbZ109bmVbTF09bmVbX109bmVbeV09bmVbdl09bmVbeF09bmVbd109bmVbU109bmVbRV09bmVbVF09bmVbQ109bmVba109ITE7dmFyIGllPXt9O2llW2ZdPWllW21dPWllW1BdPWllW0xdPWllW2ddPWllW19dPWllW0ldPWllW05dPWllW1JdPWllW09dPWllW3pdPWllW3hdPWllW3ddPWllW1NdPWllW0VdPWllW1RdPWllW0NdPWllW0FdPWllW0RdPWllW0JdPWllW0hdPWllW0ZdPSEwLGllW3ldPWllW3ZdPWllW2tdPSExO3ZhciByZT17IlxcIjoiXFwiLCInIjoiJyIsIlxuIjoibiIsIlxyIjoiciIsIlx1MjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifSxvZT1wYXJzZUZsb2F0LGFlPXBhcnNlSW50LHNlPSJvYmplY3QiPT10eXBlb2YgU2UmJlNlJiZTZS5PYmplY3Q9PT1PYmplY3QmJlNlLGxlPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsY2U9c2V8fGxlfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHVlPVRlJiYhVGUubm9kZVR5cGUmJlRlLGhlPXVlJiZFZSYmIUVlLm5vZGVUeXBlJiZFZSxkZT1oZSYmaGUuZXhwb3J0cz09PXVlLHBlPWRlJiZzZS5wcm9jZXNzLGZlPShmdW5jdGlvbigpe3RyeXt2YXIgdD1oZSYmaGUucmVxdWlyZSYmaGUucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxwZSYmcGUuYmluZGluZyYmcGUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KSgpLG1lPWZlJiZmZS5pc0FycmF5QnVmZmVyLGdlPWZlJiZmZS5pc0RhdGUsX2U9ZmUmJmZlLmlzTWFwLHllPWZlJiZmZS5pc1JlZ0V4cCx2ZT1mZSYmZmUuaXNTZXQsYmU9ZmUmJmZlLmlzVHlwZWRBcnJheTtmdW5jdGlvbiB4ZSh0LGUsbil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQuY2FsbChlKTtjYXNlIDE6cmV0dXJuIHQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSxuWzJdKX1yZXR1cm4gdC5hcHBseShlLG4pfWZ1bmN0aW9uIHdlKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bzspe3ZhciBhPXRbcl07ZShpLGEsbihhKSx0KX1yZXR1cm4gaX1mdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fWZ1bmN0aW9uIENlKHQsZSl7Zm9yKHZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtuLS0mJiExIT09ZSh0W25dLG4sdCk7KTtyZXR1cm4gdH1mdW5jdGlvbiBBZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aTspaWYoIWUodFtuXSxuLHQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGtlKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9MCxvPVtdOysrbjxpOyl7dmFyIGE9dFtuXTtlKGEsbix0KSYmKG9bcisrXT1hKX1yZXR1cm4gb31mdW5jdGlvbiBQZSh0LGUpe3JldHVybiEobnVsbD09dHx8IXQubGVuZ3RoKSYmRmUodCxlLDApPi0xfWZ1bmN0aW9uIExlKHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBJZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPUFycmF5KGkpOysrbjxpOylyW25dPWUodFtuXSxuLHQpO3JldHVybiByfWZ1bmN0aW9uIE5lKHQsZSl7Zm9yKHZhciBuPS0xLGk9ZS5sZW5ndGgscj10Lmxlbmd0aDsrK248aTspdFtyK25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gUmUodCxlLG4saSl7dmFyIHI9LTEsbz1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJm8mJihuPXRbKytyXSk7KytyPG87KW49ZShuLHRbcl0scix0KTtyZXR1cm4gbn1mdW5jdGlvbiBPZSh0LGUsbixpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJnImJihuPXRbLS1yXSk7ci0tOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59ZnVuY3Rpb24gemUodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGg7KytuPGk7KWlmKGUodFtuXSxuLHQpKXJldHVybiEwO3JldHVybiExfXZhciBEZT1HZSgibGVuZ3RoIik7ZnVuY3Rpb24gQmUodCxlLG4pe3ZhciBpO3JldHVybiBuKHQsKGZ1bmN0aW9uKHQsbixyKXtpZihlKHQsbixyKSlyZXR1cm4gaT1uLCExfSkpLGl9ZnVuY3Rpb24gSGUodCxlLG4saSl7Zm9yKHZhciByPXQubGVuZ3RoLG89bisoaT8xOi0xKTtpP28tLTorK288cjspaWYoZSh0W29dLG8sdCkpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gRmUodCxlLG4pe3JldHVybiBlPT1lPyhmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9bi0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybi0xfSkodCxlLG4pOkhlKHQsVWUsbil9ZnVuY3Rpb24gVmUodCxlLG4saSl7Zm9yKHZhciByPW4tMSxvPXQubGVuZ3RoOysrcjxvOylpZihpKHRbcl0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gVWUodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gamUodCxlKXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIG4/WWUodCxlKS9uOmh9ZnVuY3Rpb24gR2UoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1uP3Q6bltlXX19ZnVuY3Rpb24gV2UoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX19ZnVuY3Rpb24gcWUodCxlLG4saSxyKXtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsbyl7bj1pPyhpPSExLHQpOmUobix0LHIsbyl9KSksbn1mdW5jdGlvbiBZZShlLG4pe2Zvcih2YXIgaSxyPS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgYT1uKGVbcl0pO2EhPT10JiYoaT1pPT09dD9hOmkrYSl9cmV0dXJuIGl9ZnVuY3Rpb24gWGUodCxlKXtmb3IodmFyIG49LTEsaT1BcnJheSh0KTsrK248dDspaVtuXT1lKG4pO3JldHVybiBpfWZ1bmN0aW9uICRlKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmbih0KSsxKS5yZXBsYWNlKG50LCIiKTp0fWZ1bmN0aW9uIEtlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKX19ZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gSWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9ZnVuY3Rpb24gSmUodCxlKXtyZXR1cm4gdC5oYXMoZSl9ZnVuY3Rpb24gUWUodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aDsrK248aSYmRmUoZSx0W25dLDApPi0xOyk7cmV0dXJuIG59ZnVuY3Rpb24gdG4odCxlKXtmb3IodmFyIG49dC5sZW5ndGg7bi0tJiZGZShlLHRbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBlbih0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aCxpPTA7bi0tOyl0W25dPT09ZSYmKytpO3JldHVybiBpfXZhciBubj1XZSh7IsOAIjoiQSIsIsOBIjoiQSIsIsOCIjoiQSIsIsODIjoiQSIsIsOEIjoiQSIsIsOFIjoiQSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIsOjIjoiYSIsIsOkIjoiYSIsIsOlIjoiYSIsIsOHIjoiQyIsIsOnIjoiYyIsIsOQIjoiRCIsIsOwIjoiZCIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIsOLIjoiRSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIsOrIjoiZSIsIsOMIjoiSSIsIsONIjoiSSIsIsOOIjoiSSIsIsOPIjoiSSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsOvIjoiaSIsIsORIjoiTiIsIsOxIjoibiIsIsOSIjoiTyIsIsOTIjoiTyIsIsOUIjoiTyIsIsOVIjoiTyIsIsOWIjoiTyIsIsOYIjoiTyIsIsOyIjoibyIsIsOzIjoibyIsIsO0IjoibyIsIsO1IjoibyIsIsO2IjoibyIsIsO4IjoibyIsIsOZIjoiVSIsIsOaIjoiVSIsIsObIjoiVSIsIsOcIjoiVSIsIsO5IjoidSIsIsO6IjoidSIsIsO7IjoidSIsIsO8IjoidSIsIsOdIjoiWSIsIsO9IjoieSIsIsO/IjoieSIsIsOGIjoiQWUiLCLDpiI6ImFlIiwiw54iOiJUaCIsIsO+IjoidGgiLCLDnyI6InNzIiwixIAiOiJBIiwixIIiOiJBIiwixIQiOiJBIiwixIEiOiJhIiwixIMiOiJhIiwixIUiOiJhIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwixIciOiJjIiwixIkiOiJjIiwixIsiOiJjIiwixI0iOiJjIiwixI4iOiJEIiwixJAiOiJEIiwixI8iOiJkIiwixJEiOiJkIiwixJIiOiJFIiwixJQiOiJFIiwixJYiOiJFIiwixJgiOiJFIiwixJoiOiJFIiwixJMiOiJlIiwixJUiOiJlIiwixJciOiJlIiwixJkiOiJlIiwixJsiOiJlIiwixJwiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwixKIiOiJHIiwixJ0iOiJnIiwixJ8iOiJnIiwixKEiOiJnIiwixKMiOiJnIiwixKQiOiJIIiwixKYiOiJIIiwixKUiOiJoIiwixKciOiJoIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixK4iOiJJIiwixLAiOiJJIiwixKkiOiJpIiwixKsiOiJpIiwixK0iOiJpIiwixK8iOiJpIiwixLEiOiJpIiwixLQiOiJKIiwixLUiOiJqIiwixLYiOiJLIiwixLciOiJrIiwixLgiOiJrIiwixLkiOiJMIiwixLsiOiJMIiwixL0iOiJMIiwixL8iOiJMIiwixYEiOiJMIiwixLoiOiJsIiwixLwiOiJsIiwixL4iOiJsIiwixYAiOiJsIiwixYIiOiJsIiwixYMiOiJOIiwixYUiOiJOIiwixYciOiJOIiwixYoiOiJOIiwixYQiOiJuIiwixYYiOiJuIiwixYgiOiJuIiwixYsiOiJuIiwixYwiOiJPIiwixY4iOiJPIiwixZAiOiJPIiwixY0iOiJvIiwixY8iOiJvIiwixZEiOiJvIiwixZQiOiJSIiwixZYiOiJSIiwixZgiOiJSIiwixZUiOiJyIiwixZciOiJyIiwixZkiOiJyIiwixZoiOiJTIiwixZwiOiJTIiwixZ4iOiJTIiwixaAiOiJTIiwixZsiOiJzIiwixZ0iOiJzIiwixZ8iOiJzIiwixaEiOiJzIiwixaIiOiJUIiwixaQiOiJUIiwixaYiOiJUIiwixaMiOiJ0IiwixaUiOiJ0IiwixaciOiJ0IiwixagiOiJVIiwixaoiOiJVIiwixawiOiJVIiwixa4iOiJVIiwixbAiOiJVIiwixbIiOiJVIiwixakiOiJ1IiwixasiOiJ1Iiwixa0iOiJ1Iiwixa8iOiJ1IiwixbEiOiJ1IiwixbMiOiJ1IiwixbQiOiJXIiwixbUiOiJ3IiwixbYiOiJZIiwixbciOiJ5IiwixbgiOiJZIiwixbkiOiJaIiwixbsiOiJaIiwixb0iOiJaIiwixboiOiJ6IiwixbwiOiJ6Iiwixb4iOiJ6IiwixLIiOiJJSiIsIsSzIjoiaWoiLCLFkiI6Ik9lIiwixZMiOiJvZSIsIsWJIjoiJ24iLCLFvyI6InMifSkscm49V2UoeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9KTtmdW5jdGlvbiBvbih0KXtyZXR1cm4iXFwiK3JlW3RdfWZ1bmN0aW9uIGFuKHQpe3JldHVybiBKdC50ZXN0KHQpfWZ1bmN0aW9uIHNuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe25bKytlXT1baSx0XX0pKSxufWZ1bmN0aW9uIGxuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX1mdW5jdGlvbiBjbih0LGUpe2Zvcih2YXIgbj0tMSxyPXQubGVuZ3RoLG89MCxhPVtdOysrbjxyOyl7dmFyIHM9dFtuXTtzIT09ZSYmcyE9PWl8fCh0W25dPWksYVtvKytdPW4pfXJldHVybiBhfWZ1bmN0aW9uIHVuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09dH0pKSxufWZ1bmN0aW9uIGhuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09W3QsdF19KSksbn1mdW5jdGlvbiBkbih0KXtyZXR1cm4gYW4odCk/KGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlPUt0Lmxhc3RJbmRleD0wO0t0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0pKHQpOkRlKHQpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiBhbih0KT8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5tYXRjaChLdCl8fFtdfSkodCk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIiIpfSkodCl9ZnVuY3Rpb24gZm4odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmaXQudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX12YXIgbW49V2UoeyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiYjMzk7IjoiJyJ9KSxnbj0oZnVuY3Rpb24gaXQoYnQpe3ZhciB4dCx3dD0oYnQ9bnVsbD09YnQ/Y2U6Z24uZGVmYXVsdHMoY2UuT2JqZWN0KCksYnQsZ24ucGljayhjZSx0ZSkpKS5BcnJheSxTdD1idC5EYXRlLE10PWJ0LkVycm9yLEV0PWJ0LkZ1bmN0aW9uLFR0PWJ0Lk1hdGgsQ3Q9YnQuT2JqZWN0LEF0PWJ0LlJlZ0V4cCxrdD1idC5TdHJpbmcsUHQ9YnQuVHlwZUVycm9yLEx0PXd0LnByb3RvdHlwZSxJdD1DdC5wcm90b3R5cGUsTnQ9YnRbIl9fY29yZS1qc19zaGFyZWRfXyJdLFJ0PUV0LnByb3RvdHlwZS50b1N0cmluZyxPdD1JdC5oYXNPd25Qcm9wZXJ0eSx6dD0wLER0PSh4dD0vW14uXSskLy5leGVjKE50JiZOdC5rZXlzJiZOdC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIreHQ6IiIsQnQ9SXQudG9TdHJpbmcsSHQ9UnQuY2FsbChDdCksRnQ9Y2UuXyxWdD1BdCgiXiIrUnQuY2FsbChPdCkucmVwbGFjZSh0dCwiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKSxVdD1kZT9idC5CdWZmZXI6dCxqdD1idC5TeW1ib2wsR3Q9YnQuVWludDhBcnJheSxXdD1VdD9VdC5hbGxvY1Vuc2FmZTp0LHF0PWxuKEN0LmdldFByb3RvdHlwZU9mLEN0KSxZdD1DdC5jcmVhdGUsS3Q9SXQucHJvcGVydHlJc0VudW1lcmFibGUsSnQ9THQuc3BsaWNlLHJlPWp0P2p0LmlzQ29uY2F0U3ByZWFkYWJsZTp0LHNlPWp0P2p0Lml0ZXJhdG9yOnQsbGU9anQ/anQudG9TdHJpbmdUYWc6dCx1ZT0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9T28oQ3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIHQoe30sIiIse30pLHR9Y2F0Y2godCl7fX0pKCksaGU9YnQuY2xlYXJUaW1lb3V0IT09Y2UuY2xlYXJUaW1lb3V0JiZidC5jbGVhclRpbWVvdXQscGU9U3QmJlN0Lm5vdyE9PWNlLkRhdGUubm93JiZTdC5ub3csZmU9YnQuc2V0VGltZW91dCE9PWNlLnNldFRpbWVvdXQmJmJ0LnNldFRpbWVvdXQsU2U9VHQuY2VpbCxFZT1UdC5mbG9vcixUZT1DdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsRGU9VXQ/VXQuaXNCdWZmZXI6dCxXZT1idC5pc0Zpbml0ZSxfbj1MdC5qb2luLHluPWxuKEN0LmtleXMsQ3QpLHZuPVR0Lm1heCxibj1UdC5taW4seG49U3Qubm93LHduPWJ0LnBhcnNlSW50LFNuPVR0LnJhbmRvbSxNbj1MdC5yZXZlcnNlLEVuPU9vKGJ0LCJEYXRhVmlldyIpLFRuPU9vKGJ0LCJNYXAiKSxDbj1PbyhidCwiUHJvbWlzZSIpLEFuPU9vKGJ0LCJTZXQiKSxrbj1PbyhidCwiV2Vha01hcCIpLFBuPU9vKEN0LCJjcmVhdGUiKSxMbj1rbiYmbmV3IGtuLEluPXt9LE5uPWNhKEVuKSxSbj1jYShUbiksT249Y2EoQ24pLHpuPWNhKEFuKSxEbj1jYShrbiksQm49anQ/anQucHJvdG90eXBlOnQsSG49Qm4/Qm4udmFsdWVPZjp0LEZuPUJuP0JuLnRvU3RyaW5nOnQ7ZnVuY3Rpb24gVm4odCl7aWYoQXModCkmJiFtcyh0KSYmISh0IGluc3RhbmNlb2YgV24pKXtpZih0IGluc3RhbmNlb2YgR24pcmV0dXJuIHQ7aWYoT3QuY2FsbCh0LCJfX3dyYXBwZWRfXyIpKXJldHVybiB1YSh0KX1yZXR1cm4gbmV3IEduKHQpfXZhciBVbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBmdW5jdGlvbihuKXtpZighQ3MobikpcmV0dXJue307aWYoWXQpcmV0dXJuIFl0KG4pO2UucHJvdG90eXBlPW47dmFyIGk9bmV3IGU7cmV0dXJuIGUucHJvdG90eXBlPXQsaX19KSgpO2Z1bmN0aW9uIGpuKCl7fWZ1bmN0aW9uIEduKGUsbil7dGhpcy5fX3dyYXBwZWRfXz1lLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2NoYWluX189ISFuLHRoaXMuX19pbmRleF9fPTAsdGhpcy5fX3ZhbHVlc19fPXR9ZnVuY3Rpb24gV24odCl7dGhpcy5fX3dyYXBwZWRfXz10LHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz1kLHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIHFuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFluKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFhuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uICRuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBYbjsrK2U8bjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24gS24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgWW4odCk7dGhpcy5zaXplPWUuc2l6ZX1mdW5jdGlvbiBabih0LGUpe3ZhciBuPW1zKHQpLGk9IW4mJmZzKHQpLHI9IW4mJiFpJiZicyh0KSxvPSFuJiYhaSYmIXImJkhzKHQpLGE9bnx8aXx8cnx8byxzPWE/WGUodC5sZW5ndGgsa3QpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIHQpIWUmJiFPdC5jYWxsKHQsYyl8fGEmJigibGVuZ3RoIj09Y3x8ciYmKCJvZmZzZXQiPT1jfHwicGFyZW50Ij09Yyl8fG8mJigiYnVmZmVyIj09Y3x8ImJ5dGVMZW5ndGgiPT1jfHwiYnl0ZU9mZnNldCI9PWMpfHxVbyhjLGwpKXx8cy5wdXNoKGMpO3JldHVybiBzfWZ1bmN0aW9uIEpuKGUpe3ZhciBuPWUubGVuZ3RoO3JldHVybiBuP2VbX3IoMCxuLTEpXTp0fWZ1bmN0aW9uIFFuKHQsZSl7cmV0dXJuIG9hKEpyKHQpLGxpKGUsMCx0Lmxlbmd0aCkpfWZ1bmN0aW9uIHRpKHQpe3JldHVybiBvYShKcih0KSl9ZnVuY3Rpb24gZWkoZSxuLGkpeyhpIT09dCYmIWhzKGVbbl0saSl8fGk9PT10JiYhKG4gaW4gZSkpJiZhaShlLG4saSl9ZnVuY3Rpb24gbmkoZSxuLGkpe3ZhciByPWVbbl07T3QuY2FsbChlLG4pJiZocyhyLGkpJiYoaSE9PXR8fG4gaW4gZSl8fGFpKGUsbixpKX1mdW5jdGlvbiBpaSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aDtuLS07KWlmKGhzKHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gcmkodCxlLG4saSl7cmV0dXJuIE9pKHQsKGZ1bmN0aW9uKHQscixvKXtlKGksdCxuKHQpLG8pfSkpLGl9ZnVuY3Rpb24gb2kodCxlKXtyZXR1cm4gdCYmUXIoZSxsbChlKSx0KX1mdW5jdGlvbiBhaSh0LGUsbil7Il9fcHJvdG9fXyI9PWUmJnVlP3VlKHQsZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH0pOnRbZV09bn1mdW5jdGlvbiBzaShlLG4pe2Zvcih2YXIgaT0tMSxyPW4ubGVuZ3RoLG89d3QociksYT1udWxsPT1lOysraTxyOylvW2ldPWE/dDppbChlLG5baV0pO3JldHVybiBvfWZ1bmN0aW9uIGxpKGUsbixpKXtyZXR1cm4gZT09ZSYmKGkhPT10JiYoZT1lPD1pP2U6aSksbiE9PXQmJihlPWU+PW4/ZTpuKSksZX1mdW5jdGlvbiBjaShlLG4saSxyLG8sYSl7dmFyIHMsbD0xJm4sYz0yJm4sdT00Jm47aWYoaSYmKHM9bz9pKGUscixvLGEpOmkoZSkpLHMhPT10KXJldHVybiBzO2lmKCFDcyhlKSlyZXR1cm4gZTt2YXIgaD1tcyhlKTtpZihoKXtpZihzPShmdW5jdGlvbiBkKHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmT3QuY2FsbCh0LCJpbmRleCIpJiYobi5pbmRleD10LmluZGV4LG4uaW5wdXQ9dC5pbnB1dCksbn0pKGUpLCFsKXJldHVybiBKcihlLHMpfWVsc2V7dmFyIHA9Qm8oZSksbT1wPT12fHxwPT1iO2lmKGJzKGUpKXJldHVybiBxcihlLGwpO2lmKHA9PVN8fHA9PWZ8fG0mJiFvKXtpZihzPWN8fG0/e306Rm8oZSksIWwpcmV0dXJuIGM/KGZ1bmN0aW9uIE0odCxlKXtyZXR1cm4gUXIodCxEbyh0KSxlKX0pKGUsKGZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdCYmUXIoZSxjbChlKSx0KX0pKHMsZSkpOihmdW5jdGlvbiBrKHQsZSl7cmV0dXJuIFFyKHQsem8odCksZSl9KShlLG9pKHMsZSkpfWVsc2V7aWYoIWllW3BdKXJldHVybiBvP2U6e307cz0oZnVuY3Rpb24gVih0LGUsbil7dmFyIGk9dC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSBQOnJldHVybiBZcih0KTtjYXNlIGc6Y2FzZSBfOnJldHVybiBuZXcgaSgrdCk7Y2FzZSBMOnJldHVybihmdW5jdGlvbiByKHQsZSl7dmFyIG49ZT9Zcih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9KSh0LG4pO2Nhc2UgSTpjYXNlIE46Y2FzZSBSOmNhc2UgTzpjYXNlIHo6Y2FzZSBEOmNhc2UgQjpjYXNlIEg6Y2FzZSBGOnJldHVybiBYcih0LG4pO2Nhc2UgeDpyZXR1cm4gbmV3IGk7Y2FzZSB3OmNhc2UgQzpyZXR1cm4gbmV3IGkodCk7Y2FzZSBFOnJldHVybihmdW5jdGlvbiBvKHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGh0LmV4ZWModCkpO3JldHVybiBlLmxhc3RJbmRleD10Lmxhc3RJbmRleCxlfSkodCk7Y2FzZSBUOnJldHVybiBuZXcgaTtjYXNlIEE6cmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIEhuP0N0KEhuLmNhbGwodCkpOnt9fSkodCl9fSkoZSxwLGwpfX1hfHwoYT1uZXcgS24pO3ZhciBVPWEuZ2V0KGUpO2lmKFUpcmV0dXJuIFU7YS5zZXQoZSxzKSxPcyhlKT9lLmZvckVhY2goKGZ1bmN0aW9uKHQpe3MuYWRkKGNpKHQsbixpLHQsZSxhKSl9KSk6a3MoZSkmJmUuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtzLnNldChyLGNpKHQsbixpLHIsZSxhKSl9KSk7dmFyIGo9aD90Oih1P2M/QW86Q286Yz9jbDpsbCkoZSk7cmV0dXJuIE1lKGp8fGUsKGZ1bmN0aW9uKHQscil7aiYmKHQ9ZVtyPXRdKSxuaShzLHIsY2kodCxuLGkscixlLGEpKX0pKSxzfWZ1bmN0aW9uIHVpKGUsbixpKXt2YXIgcj1pLmxlbmd0aDtpZihudWxsPT1lKXJldHVybiFyO2ZvcihlPUN0KGUpO3ItLTspe3ZhciBvPWlbcl0sYT1lW29dO2lmKGE9PT10JiYhKG8gaW4gZSl8fCEoMCxuW29dKShhKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBoaShuLGkscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFB0KGUpO3JldHVybiBlYSgoZnVuY3Rpb24oKXtuLmFwcGx5KHQscil9KSxpKX1mdW5jdGlvbiBkaSh0LGUsbixpKXt2YXIgcj0tMSxvPVBlLGE9ITAscz10Lmxlbmd0aCxsPVtdLGM9ZS5sZW5ndGg7aWYoIXMpcmV0dXJuIGw7biYmKGU9SWUoZSxLZShuKSkpLGk/KG89TGUsYT0hMSk6ZS5sZW5ndGg+PTIwMCYmKG89SmUsYT0hMSxlPW5ldyAkbihlKSk7dDpmb3IoOysrcjxzOyl7dmFyIHU9dFtyXSxoPW51bGw9PW4/dTpuKHUpO2lmKHU9aXx8MCE9PXU/dTowLGEmJmg9PWgpe2Zvcih2YXIgZD1jO2QtLTspaWYoZVtkXT09PWgpY29udGludWUgdDtsLnB1c2godSl9ZWxzZSBvKGUsaCxpKXx8bC5wdXNoKHUpfXJldHVybiBsfVZuLnRlbXBsYXRlU2V0dGluZ3M9e2VzY2FwZTpYLGV2YWx1YXRlOiQsaW50ZXJwb2xhdGU6Syx2YXJpYWJsZToiIixpbXBvcnRzOntfOlZufX0sKFZuLnByb3RvdHlwZT1qbi5wcm90b3R5cGUpLmNvbnN0cnVjdG9yPVZuLChHbi5wcm90b3R5cGU9VW4oam4ucHJvdG90eXBlKSkuY29uc3RydWN0b3I9R24sKFduLnByb3RvdHlwZT1Vbihqbi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1Xbixxbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gcGkoKXt0aGlzLl9fZGF0YV9fPVBuP1BuKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxxbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGZpKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxxbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIG1pKGUpe3ZhciBpPXRoaXMuX19kYXRhX187aWYoUG4pe3ZhciByPWlbZV07cmV0dXJuIHI9PT1uP3Q6cn1yZXR1cm4gT3QuY2FsbChpLGUpP2lbZV06dH0scW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBnaShlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiBQbj9uW2VdIT09dDpPdC5jYWxsKG4sZSl9LHFuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gX2koZSxpKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKGUpPzA6MSxyW2VdPVBuJiZpPT09dD9uOmksdGhpc30sWW4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIHlpKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sWW4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiB2aSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49aWkoZSx0KTtyZXR1cm4hKG48MHx8KG49PWUubGVuZ3RoLTE/ZS5wb3AoKTpKdC5jYWxsKGUsbiwxKSwtLXRoaXMuc2l6ZSwwKSl9LFluLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gYmkoZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPWlpKG4sZSk7cmV0dXJuIGk8MD90Om5baV1bMV19LFluLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24geGkodCl7cmV0dXJuIGlpKHRoaXMuX19kYXRhX18sdCk+LTF9LFluLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gd2kodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fLGk9aWkobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc30sWG4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIFNpKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgcW4sbWFwOm5ldyhUbnx8WW4pLHN0cmluZzpuZXcgcW59fSxYbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIE1pKHQpe3ZhciBlPU5vKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFhuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gRWkodCl7cmV0dXJuIE5vKHRoaXMsdCkuZ2V0KHQpfSxYbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFRpKHQpe3JldHVybiBObyh0aGlzLHQpLmhhcyh0KX0sWG4ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBDaSh0LGUpe3ZhciBuPU5vKHRoaXMsdCksaT1uLnNpemU7cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplKz1uLnNpemU9PWk/MDoxLHRoaXN9LCRuLnByb3RvdHlwZS5hZGQ9JG4ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24gQWkodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsbiksdGhpc30sJG4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBraSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LEtuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBQaSgpe3RoaXMuX19kYXRhX189bmV3IFluLHRoaXMuc2l6ZT0wfSxLbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIExpKHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufSxLbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIElpKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0sS24ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBOaSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LEtuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gUmkodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBZbil7dmFyIGk9bi5fX2RhdGFfXztpZighVG58fGkubGVuZ3RoPDE5OSlyZXR1cm4gaS5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IFhuKGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307dmFyIE9pPW5vKGppKSx6aT1ubyhHaSwhMCk7ZnVuY3Rpb24gRGkodCxlKXt2YXIgbj0hMDtyZXR1cm4gT2kodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBuPSEhZSh0LGkscil9KSksbn1mdW5jdGlvbiBCaShlLG4saSl7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgYT1lW3JdLHM9bihhKTtpZihudWxsIT1zJiYobD09PXQ/cz09cyYmIUJzKHMpOmkocyxsKSkpdmFyIGw9cyxjPWF9cmV0dXJuIGN9ZnVuY3Rpb24gSGkodCxlKXt2YXIgbj1bXTtyZXR1cm4gT2kodCwoZnVuY3Rpb24odCxpLHIpe2UodCxpLHIpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBGaSh0LGUsbixpLHIpe3ZhciBvPS0xLGE9dC5sZW5ndGg7Zm9yKG58fChuPVZvKSxyfHwocj1bXSk7KytvPGE7KXt2YXIgcz10W29dO2U+MCYmbihzKT9lPjE/RmkocyxlLTEsbixpLHIpOk5lKHIscyk6aXx8KHJbci5sZW5ndGhdPXMpfXJldHVybiByfXZhciBWaT1pbygpLFVpPWlvKCEwKTtmdW5jdGlvbiBqaSh0LGUpe3JldHVybiB0JiZWaSh0LGUsbGwpfWZ1bmN0aW9uIEdpKHQsZSl7cmV0dXJuIHQmJlVpKHQsZSxsbCl9ZnVuY3Rpb24gV2kodCxlKXtyZXR1cm4ga2UoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIE1zKHRbZV0pfSkpfWZ1bmN0aW9uIHFpKGUsbil7Zm9yKHZhciBpPTAscj0obj1VcihuLGUpKS5sZW5ndGg7bnVsbCE9ZSYmaTxyOyllPWVbbGEobltpKytdKV07cmV0dXJuIGkmJmk9PXI/ZTp0fWZ1bmN0aW9uIFlpKHQsZSxuKXt2YXIgaT1lKHQpO3JldHVybiBtcyh0KT9pOk5lKGksbih0KSl9ZnVuY3Rpb24gWGkoZSl7cmV0dXJuIG51bGw9PWU/ZT09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOmxlJiZsZSBpbiBDdChlKT8oZnVuY3Rpb24gbihlKXt2YXIgbj1PdC5jYWxsKGUsbGUpLGk9ZVtsZV07dHJ5e2VbbGVdPXQ7dmFyIHI9ITB9Y2F0Y2godCl7fXZhciBvPUJ0LmNhbGwoZSk7cmV0dXJuIHImJihuP2VbbGVdPWk6ZGVsZXRlIGVbbGVdKSxvfSkoZSk6KGZ1bmN0aW9uIGkodCl7cmV0dXJuIEJ0LmNhbGwodCl9KShlKX1mdW5jdGlvbiAkaSh0LGUpe3JldHVybiB0PmV9ZnVuY3Rpb24gS2kodCxlKXtyZXR1cm4gbnVsbCE9dCYmT3QuY2FsbCh0LGUpfWZ1bmN0aW9uIFppKHQsZSl7cmV0dXJuIG51bGwhPXQmJmUgaW4gQ3QodCl9ZnVuY3Rpb24gSmkoZSxuLGkpe2Zvcih2YXIgcj1pP0xlOlBlLG89ZVswXS5sZW5ndGgsYT1lLmxlbmd0aCxzPWEsbD13dChhKSxjPTEvMCx1PVtdO3MtLTspe3ZhciBoPWVbc107cyYmbiYmKGg9SWUoaCxLZShuKSkpLGM9Ym4oaC5sZW5ndGgsYyksbFtzXT0haSYmKG58fG8+PTEyMCYmaC5sZW5ndGg+PTEyMCk/bmV3ICRuKHMmJmgpOnR9aD1lWzBdO3ZhciBkPS0xLHA9bFswXTt0OmZvcig7KytkPG8mJnUubGVuZ3RoPGM7KXt2YXIgZj1oW2RdLG09bj9uKGYpOmY7aWYoZj1pfHwwIT09Zj9mOjAsIShwP0plKHAsbSk6cih1LG0saSkpKXtmb3Iocz1hOy0tczspe3ZhciBnPWxbc107aWYoIShnP0plKGcsbSk6cihlW3NdLG0saSkpKWNvbnRpbnVlIHR9cCYmcC5wdXNoKG0pLHUucHVzaChmKX19cmV0dXJuIHV9ZnVuY3Rpb24gUWkoZSxuLGkpe3ZhciByPW51bGw9PShlPVpvKGUsbj1VcihuLGUpKSk/ZTplW2xhKHhhKG4pKV07cmV0dXJuIG51bGw9PXI/dDp4ZShyLGUsaSl9ZnVuY3Rpb24gdHIodCl7cmV0dXJuIEFzKHQpJiZYaSh0KT09Zn1mdW5jdGlvbiBlcihlLG4saSxyLG8pe3JldHVybiBlPT09bnx8KG51bGw9PWV8fG51bGw9PW58fCFBcyhlKSYmIUFzKG4pP2UhPWUmJm4hPW46KGZ1bmN0aW9uIGEoZSxuLGkscixvLHMpe3ZhciBsPW1zKGUpLGM9bXMobiksdT1sP206Qm8oZSksaD1jP206Qm8obiksZD0odT11PT1mP1M6dSk9PVMscD0oaD1oPT1mP1M6aCk9PVMsdj11PT1oO2lmKHYmJmJzKGUpKXtpZighYnMobikpcmV0dXJuITE7bD0hMCxkPSExfWlmKHYmJiFkKXJldHVybiBzfHwocz1uZXcgS24pLGx8fEhzKGUpP0VvKGUsbixpLHIsbyxzKTooZnVuY3Rpb24gYih0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSBMOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBQOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCFvKG5ldyBHdCh0KSxuZXcgR3QoZSkpKTtjYXNlIGc6Y2FzZSBfOmNhc2UgdzpyZXR1cm4gaHMoK3QsK2UpO2Nhc2UgeTpyZXR1cm4gdC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UgRTpjYXNlIEM6cmV0dXJuIHQ9PWUrIiI7Y2FzZSB4OnZhciBzPXNuO2Nhc2UgVDppZihzfHwocz11biksdC5zaXplIT1lLnNpemUmJiEoMSZpKSlyZXR1cm4hMTt2YXIgbD1hLmdldCh0KTtpZihsKXJldHVybiBsPT1lO2l8PTIsYS5zZXQodCxlKTt2YXIgYz1FbyhzKHQpLHMoZSksaSxyLG8sYSk7cmV0dXJuIGEuZGVsZXRlKHQpLGM7Y2FzZSBBOmlmKEhuKXJldHVybiBIbi5jYWxsKHQpPT1Ibi5jYWxsKGUpfXJldHVybiExfSkoZSxuLHUsaSxyLG8scyk7aWYoISgxJmkpKXt2YXIgTT1kJiZPdC5jYWxsKGUsIl9fd3JhcHBlZF9fIiksaz1wJiZPdC5jYWxsKG4sIl9fd3JhcHBlZF9fIik7aWYoTXx8ayl7dmFyIEk9TT9lLnZhbHVlKCk6ZSxOPWs/bi52YWx1ZSgpOm47cmV0dXJuIHN8fChzPW5ldyBLbiksbyhJLE4saSxyLHMpfX1yZXR1cm4hIXYmJihzfHwocz1uZXcgS24pLChmdW5jdGlvbiBSKGUsbixpLHIsbyxhKXt2YXIgcz0xJmksbD1DbyhlKSxjPWwubGVuZ3RoLHU9Q28obik7aWYoYyE9dS5sZW5ndGgmJiFzKXJldHVybiExO2Zvcih2YXIgaD1jO2gtLTspe3ZhciBkPWxbaF07aWYoIShzP2QgaW4gbjpPdC5jYWxsKG4sZCkpKXJldHVybiExfXZhciBwPWEuZ2V0KGUpLGY9YS5nZXQobik7aWYocCYmZilyZXR1cm4gcD09biYmZj09ZTt2YXIgbT0hMDthLnNldChlLG4pLGEuc2V0KG4sZSk7Zm9yKHZhciBnPXM7KytoPGM7KXt2YXIgXz1lW2Q9bFtoXV0seT1uW2RdO2lmKHIpdmFyIHY9cz9yKHksXyxkLG4sZSxhKTpyKF8seSxkLGUsbixhKTtpZighKHY9PT10P189PT15fHxvKF8seSxpLHIsYSk6dikpe209ITE7YnJlYWt9Z3x8KGc9ImNvbnN0cnVjdG9yIj09ZCl9aWYobSYmIWcpe3ZhciBiPWUuY29uc3RydWN0b3IseD1uLmNvbnN0cnVjdG9yO2I9PXh8fCEoImNvbnN0cnVjdG9yImluIGUpfHwhKCJjb25zdHJ1Y3RvciJpbiBuKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGImJmIgaW5zdGFuY2VvZiBiJiYiZnVuY3Rpb24iPT10eXBlb2YgeCYmeCBpbnN0YW5jZW9mIHh8fChtPSExKX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobiksbX0pKGUsbixpLHIsbyxzKSl9KShlLG4saSxyLGVyLG8pKX1mdW5jdGlvbiBucihlLG4saSxyKXt2YXIgbz1pLmxlbmd0aCxhPW8scz0hcjtpZihudWxsPT1lKXJldHVybiFhO2ZvcihlPUN0KGUpO28tLTspe3ZhciBsPWlbb107aWYocyYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrbzxhOyl7dmFyIGM9KGw9aVtvXSlbMF0sdT1lW2NdLGg9bFsxXTtpZihzJiZsWzJdKXtpZih1PT09dCYmIShjIGluIGUpKXJldHVybiExfWVsc2V7dmFyIGQ9bmV3IEtuO2lmKHIpdmFyIHA9cih1LGgsYyxlLG4sZCk7aWYoIShwPT09dD9lcihoLHUsMyxyLGQpOnApKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBpcih0KXtyZXR1cm4hKCFDcyh0KXx8KGZ1bmN0aW9uIGUodCl7cmV0dXJuISFEdCYmRHQgaW4gdH0pKHQpKSYmKE1zKHQpP1Z0OmZ0KS50ZXN0KGNhKHQpKX1mdW5jdGlvbiBycih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/Umw6Im9iamVjdCI9PXR5cGVvZiB0P21zKHQpP3VyKHRbMF0sdFsxXSk6Y3IodCk6amwodCl9ZnVuY3Rpb24gb3IodCl7aWYoIVlvKHQpKXJldHVybiB5bih0KTt2YXIgZT1bXTtmb3IodmFyIG4gaW4gQ3QodCkpT3QuY2FsbCh0LG4pJiYiY29uc3RydWN0b3IiIT1uJiZlLnB1c2gobik7cmV0dXJuIGV9ZnVuY3Rpb24gYXIodCl7aWYoIUNzKHQpKXJldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIEN0KHQpKWUucHVzaChuKTtyZXR1cm4gZX0pKHQpO3ZhciBuPVlvKHQpLGk9W107Zm9yKHZhciByIGluIHQpKCJjb25zdHJ1Y3RvciIhPXJ8fCFuJiZPdC5jYWxsKHQscikpJiZpLnB1c2gocik7cmV0dXJuIGl9ZnVuY3Rpb24gc3IodCxlKXtyZXR1cm4gdDxlfWZ1bmN0aW9uIGxyKHQsZSl7dmFyIG49LTEsaT15cyh0KT93dCh0Lmxlbmd0aCk6W107cmV0dXJuIE9pKHQsKGZ1bmN0aW9uKHQscixvKXtpWysrbl09ZSh0LHIsbyl9KSksaX1mdW5jdGlvbiBjcih0KXt2YXIgZT1Sbyh0KTtyZXR1cm4gMT09ZS5sZW5ndGgmJmVbMF1bMl0/JG8oZVswXVswXSxlWzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PXR8fG5yKG4sdCxlKX19ZnVuY3Rpb24gdXIoZSxuKXtyZXR1cm4gR28oZSkmJlhvKG4pPyRvKGxhKGUpLG4pOmZ1bmN0aW9uKGkpe3ZhciByPWlsKGksZSk7cmV0dXJuIHI9PT10JiZyPT09bj9ybChpLGUpOmVyKG4sciwzKX19ZnVuY3Rpb24gaHIoZSxuLGkscixvKXtlIT09biYmVmkobiwoZnVuY3Rpb24oYSxzKXtpZihvfHwobz1uZXcgS24pLENzKGEpKSEoZnVuY3Rpb24gbChlLG4saSxyLG8sYSxzKXt2YXIgbD1RbyhlLGkpLGM9UW8obixpKSx1PXMuZ2V0KGMpO2lmKHUpZWkoZSxpLHUpO2Vsc2V7dmFyIGg9YT9hKGwsYyxpKyIiLGUsbixzKTp0LGQ9aD09PXQ7aWYoZCl7dmFyIHA9bXMoYyksZj0hcCYmYnMoYyksbT0hcCYmIWYmJkhzKGMpO2g9YyxwfHxmfHxtP21zKGwpP2g9bDp2cyhsKT9oPUpyKGwpOmY/KGQ9ITEsaD1xcihjLCEwKSk6bT8oZD0hMSxoPVhyKGMsITApKTpoPVtdOklzKGMpfHxmcyhjKT8oaD1sLGZzKGwpP2g9WHMobCk6Q3MobCkmJiFNcyhsKXx8KGg9Rm8oYykpKTpkPSExfWQmJihzLnNldChjLGgpLG8oaCxjLHIsYSxzKSxzLmRlbGV0ZShjKSksZWkoZSxpLGgpfX0pKGUsbixzLGksaHIscixvKTtlbHNle3ZhciBjPXI/cihRbyhlLHMpLGEscysiIixlLG4sbyk6dDtjPT09dCYmKGM9YSksZWkoZSxzLGMpfX0pLGNsKX1mdW5jdGlvbiBkcihlLG4pe3ZhciBpPWUubGVuZ3RoO2lmKGkpcmV0dXJuIFVvKG4rPW48MD9pOjAsaSk/ZVtuXTp0fWZ1bmN0aW9uIHByKHQsZSxuKXtlPWUubGVuZ3RoP0llKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBtcyh0KT9mdW5jdGlvbihlKXtyZXR1cm4gcWkoZSwxPT09dC5sZW5ndGg/dFswXTp0KX06dH0pKTpbUmxdO3ZhciBpPS0xO3JldHVybiBlPUllKGUsS2UoSW8oKSkpLChmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5sZW5ndGg7Zm9yKHQuc29ydChlKTtuLS07KXRbbl09dFtuXS52YWx1ZTtyZXR1cm4gdH0pKGxyKHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6SWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSksaW5kZXg6KytpLHZhbHVlOnR9fSkpLChmdW5jdGlvbih0LGUpe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9LTEscj10LmNyaXRlcmlhLG89ZS5jcml0ZXJpYSxhPXIubGVuZ3RoLHM9bi5sZW5ndGg7KytpPGE7KXt2YXIgbD0kcihyW2ldLG9baV0pO2lmKGwpcmV0dXJuIGk+PXM/bDpsKigiZGVzYyI9PW5baV0/LTE6MSl9cmV0dXJuIHQuaW5kZXgtZS5pbmRleH0pKHQsZSxuKX0pKX1mdW5jdGlvbiBmcih0LGUsbil7Zm9yKHZhciBpPS0xLHI9ZS5sZW5ndGgsbz17fTsrK2k8cjspe3ZhciBhPWVbaV0scz1xaSh0LGEpO24ocyxhKSYmd3IobyxVcihhLHQpLHMpfXJldHVybiBvfWZ1bmN0aW9uIG1yKHQsZSxuLGkpe3ZhciByPWk/VmU6RmUsbz0tMSxhPWUubGVuZ3RoLHM9dDtmb3IodD09PWUmJihlPUpyKGUpKSxuJiYocz1JZSh0LEtlKG4pKSk7KytvPGE7KWZvcih2YXIgbD0wLGM9ZVtvXSx1PW4/bihjKTpjOyhsPXIocyx1LGwsaSkpPi0xOylzIT09dCYmSnQuY2FsbChzLGwsMSksSnQuY2FsbCh0LGwsMSk7cmV0dXJuIHR9ZnVuY3Rpb24gZ3IodCxlKXtmb3IodmFyIG49dD9lLmxlbmd0aDowLGk9bi0xO24tLTspe3ZhciByPWVbbl07aWYobj09aXx8ciE9PW8pe3ZhciBvPXI7VW8ocik/SnQuY2FsbCh0LHIsMSk6UnIodCxyKX19cmV0dXJuIHR9ZnVuY3Rpb24gX3IodCxlKXtyZXR1cm4gdCtFZShTbigpKihlLXQrMSkpfWZ1bmN0aW9uIHlyKHQsZSl7dmFyIG49IiI7aWYoIXR8fGU8MXx8ZT51KXJldHVybiBuO2Rve2UlMiYmKG4rPXQpLChlPUVlKGUvMikpJiYodCs9dCl9d2hpbGUoZSk7cmV0dXJuIG59ZnVuY3Rpb24gdnIodCxlKXtyZXR1cm4gbmEoS28odCxlLFJsKSx0KyIiKX1mdW5jdGlvbiBicih0KXtyZXR1cm4gSm4oX2wodCkpfWZ1bmN0aW9uIHhyKHQsZSl7dmFyIG49X2wodCk7cmV0dXJuIG9hKG4sbGkoZSwwLG4ubGVuZ3RoKSl9ZnVuY3Rpb24gd3IoZSxuLGkscil7aWYoIUNzKGUpKXJldHVybiBlO2Zvcih2YXIgbz0tMSxhPShuPVVyKG4sZSkpLmxlbmd0aCxzPWEtMSxsPWU7bnVsbCE9bCYmKytvPGE7KXt2YXIgYz1sYShuW29dKSx1PWk7aWYoIl9fcHJvdG9fXyI9PT1jfHwiY29uc3RydWN0b3IiPT09Y3x8InByb3RvdHlwZSI9PT1jKXJldHVybiBlO2lmKG8hPXMpe3ZhciBoPWxbY107KHU9cj9yKGgsYyxsKTp0KT09PXQmJih1PUNzKGgpP2g6VW8obltvKzFdKT9bXTp7fSl9bmkobCxjLHUpLGw9bFtjXX1yZXR1cm4gZX12YXIgU3I9TG4/ZnVuY3Rpb24odCxlKXtyZXR1cm4gTG4uc2V0KHQsZSksdH06UmwsTXI9dWU/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdWUodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpMbChlKSx3cml0YWJsZTohMH0pfTpSbDtmdW5jdGlvbiBFcih0KXtyZXR1cm4gb2EoX2wodCkpfWZ1bmN0aW9uIFRyKHQsZSxuKXt2YXIgaT0tMSxyPXQubGVuZ3RoO2U8MCYmKGU9LWU+cj8wOnIrZSksKG49bj5yP3I6bik8MCYmKG4rPXIpLHI9ZT5uPzA6bi1lPj4+MCxlPj4+PTA7Zm9yKHZhciBvPXd0KHIpOysraTxyOylvW2ldPXRbaStlXTtyZXR1cm4gb31mdW5jdGlvbiBDcih0LGUpe3ZhciBuO3JldHVybiBPaSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIShuPWUodCxpLHIpKX0pKSwhIW59ZnVuY3Rpb24gQXIodCxlLG4pe3ZhciBpPTAscj1udWxsPT10P2k6dC5sZW5ndGg7aWYoIm51bWJlciI9PXR5cGVvZiBlJiZlPT1lJiZyPD0yMTQ3NDgzNjQ3KXtmb3IoO2k8cjspe3ZhciBvPWkrcj4+PjEsYT10W29dO251bGwhPT1hJiYhQnMoYSkmJihuP2E8PWU6YTxlKT9pPW8rMTpyPW99cmV0dXJuIHJ9cmV0dXJuIGtyKHQsZSxSbCxuKX1mdW5jdGlvbiBrcihlLG4saSxyKXt2YXIgbz0wLGE9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKDA9PT1hKXJldHVybiAwO2Zvcih2YXIgcz0obj1pKG4pKSE9bixsPW51bGw9PT1uLGM9QnMobiksdT1uPT09dDtvPGE7KXt2YXIgaD1FZSgobythKS8yKSxkPWkoZVtoXSkscD1kIT09dCxmPW51bGw9PT1kLG09ZD09ZCxnPUJzKGQpO2lmKHMpdmFyIF89cnx8bTtlbHNlIF89dT9tJiYocnx8cCk6bD9tJiZwJiYocnx8IWYpOmM/bSYmcCYmIWYmJihyfHwhZyk6IWYmJiFnJiYocj9kPD1uOmQ8bik7Xz9vPWgrMTphPWh9cmV0dXJuIGJuKGEsNDI5NDk2NzI5NCl9ZnVuY3Rpb24gUHIodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl0scz1lP2UoYSk6YTtpZighbnx8IWhzKHMsbCkpe3ZhciBsPXM7b1tyKytdPTA9PT1hPzA6YX19cmV0dXJuIG99ZnVuY3Rpb24gTHIodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6QnModCk/aDordH1mdW5jdGlvbiBJcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobXModCkpcmV0dXJuIEllKHQsSXIpKyIiO2lmKEJzKHQpKXJldHVybiBGbj9Gbi5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS0xLzA/Ii0wIjplfWZ1bmN0aW9uIE5yKHQsZSxuKXt2YXIgaT0tMSxyPVBlLG89dC5sZW5ndGgsYT0hMCxzPVtdLGw9cztpZihuKWE9ITEscj1MZTtlbHNlIGlmKG8+PTIwMCl7dmFyIGM9ZT9udWxsOnZvKHQpO2lmKGMpcmV0dXJuIHVuKGMpO2E9ITEscj1KZSxsPW5ldyAkbn1lbHNlIGw9ZT9bXTpzO3Q6Zm9yKDsrK2k8bzspe3ZhciB1PXRbaV0saD1lP2UodSk6dTtpZih1PW58fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9bC5sZW5ndGg7ZC0tOylpZihsW2RdPT09aCljb250aW51ZSB0O2UmJmwucHVzaChoKSxzLnB1c2godSl9ZWxzZSByKGwsaCxuKXx8KGwhPT1zJiZsLnB1c2goaCkscy5wdXNoKHUpKX1yZXR1cm4gc31mdW5jdGlvbiBScih0LGUpe3JldHVybiBudWxsPT0odD1abyh0LGU9VXIoZSx0KSkpfHxkZWxldGUgdFtsYSh4YShlKSldfWZ1bmN0aW9uIE9yKHQsZSxuLGkpe3JldHVybiB3cih0LGUsbihxaSh0LGUpKSxpKX1mdW5jdGlvbiB6cih0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1pP3I6LTE7KGk/by0tOisrbzxyKSYmZSh0W29dLG8sdCk7KTtyZXR1cm4gbj9Ucih0LGk/MDpvLGk/bysxOnIpOlRyKHQsaT9vKzE6MCxpP3I6byl9ZnVuY3Rpb24gRHIodCxlKXt2YXIgbj10O3JldHVybiBuIGluc3RhbmNlb2YgV24mJihuPW4udmFsdWUoKSksUmUoZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5mdW5jLmFwcGx5KGUudGhpc0FyZyxOZShbdF0sZS5hcmdzKSl9KSxuKX1mdW5jdGlvbiBCcih0LGUsbil7dmFyIGk9dC5sZW5ndGg7aWYoaTwyKXJldHVybiBpP05yKHRbMF0pOltdO2Zvcih2YXIgcj0tMSxvPXd0KGkpOysrcjxpOylmb3IodmFyIGE9dFtyXSxzPS0xOysrczxpOylzIT1yJiYob1tyXT1kaShvW3JdfHxhLHRbc10sZSxuKSk7cmV0dXJuIE5yKEZpKG8sMSksZSxuKX1mdW5jdGlvbiBIcihlLG4saSl7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGgsYT1uLmxlbmd0aCxzPXt9OysrcjxvOylpKHMsZVtyXSxyPGE/bltyXTp0KTtyZXR1cm4gc31mdW5jdGlvbiBGcih0KXtyZXR1cm4gdnModCk/dDpbXX1mdW5jdGlvbiBWcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJsfWZ1bmN0aW9uIFVyKHQsZSl7cmV0dXJuIG1zKHQpP3Q6R28odCxlKT9bdF06YWEoJHModCkpfXZhciBqcj12cjtmdW5jdGlvbiBHcihlLG4saSl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGk9aT09PXQ/cjppLCFuJiZpPj1yP2U6VHIoZSxuLGkpfXZhciBXcj1oZXx8ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmNsZWFyVGltZW91dCh0KX07ZnVuY3Rpb24gcXIodCxlKXtpZihlKXJldHVybiB0LnNsaWNlKCk7dmFyIG49dC5sZW5ndGgsaT1XdD9XdChuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9ZnVuY3Rpb24gWXIodCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IEd0KGUpLnNldChuZXcgR3QodCkpLGV9ZnVuY3Rpb24gWHIodCxlKXt2YXIgbj1lP1lyKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfWZ1bmN0aW9uICRyKGUsbil7aWYoZSE9PW4pe3ZhciBpPWUhPT10LHI9bnVsbD09PWUsbz1lPT1lLGE9QnMoZSkscz1uIT09dCxsPW51bGw9PT1uLGM9bj09bix1PUJzKG4pO2lmKCFsJiYhdSYmIWEmJmU+bnx8YSYmcyYmYyYmIWwmJiF1fHxyJiZzJiZjfHwhaSYmY3x8IW8pcmV0dXJuIDE7aWYoIXImJiFhJiYhdSYmZTxufHx1JiZpJiZvJiYhciYmIWF8fGwmJmkmJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH1mdW5jdGlvbiBLcih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPW4ubGVuZ3RoLHM9LTEsbD1lLmxlbmd0aCxjPXZuKG8tYSwwKSx1PXd0KGwrYyksaD0haTsrK3M8bDspdVtzXT1lW3NdO2Zvcig7KytyPGE7KShofHxyPG8pJiYodVtuW3JdXT10W3JdKTtmb3IoO2MtLTspdVtzKytdPXRbcisrXTtyZXR1cm4gdX1mdW5jdGlvbiBacih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPS0xLHM9bi5sZW5ndGgsbD0tMSxjPWUubGVuZ3RoLHU9dm4oby1zLDApLGg9d3QodStjKSxkPSFpOysrcjx1OyloW3JdPXRbcl07Zm9yKHZhciBwPXI7KytsPGM7KWhbcCtsXT1lW2xdO2Zvcig7KythPHM7KShkfHxyPG8pJiYoaFtwK25bYV1dPXRbcisrXSk7cmV0dXJuIGh9ZnVuY3Rpb24gSnIodCxlKXt2YXIgbj0tMSxpPXQubGVuZ3RoO2ZvcihlfHwoZT13dChpKSk7KytuPGk7KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBRcihlLG4saSxyKXt2YXIgbz0haTtpfHwoaT17fSk7Zm9yKHZhciBhPS0xLHM9bi5sZW5ndGg7KythPHM7KXt2YXIgbD1uW2FdLGM9cj9yKGlbbF0sZVtsXSxsLGksZSk6dDtjPT09dCYmKGM9ZVtsXSksbz9haShpLGwsYyk6bmkoaSxsLGMpfXJldHVybiBpfWZ1bmN0aW9uIHRvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dmFyIHI9bXMobik/d2U6cmksbz1lP2UoKTp7fTtyZXR1cm4gcihuLHQsSW8oaSwyKSxvKX19ZnVuY3Rpb24gZW8oZSl7cmV0dXJuIHZyKChmdW5jdGlvbihuLGkpe3ZhciByPS0xLG89aS5sZW5ndGgsYT1vPjE/aVtvLTFdOnQscz1vPjI/aVsyXTp0O2ZvcihhPWUubGVuZ3RoPjMmJiJmdW5jdGlvbiI9PXR5cGVvZiBhPyhvLS0sYSk6dCxzJiZqbyhpWzBdLGlbMV0scykmJihhPW88Mz90OmEsbz0xKSxuPUN0KG4pOysrcjxvOyl7dmFyIGw9aVtyXTtsJiZlKG4sbCxyLGEpfXJldHVybiBufSkpfWZ1bmN0aW9uIG5vKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gbjtpZigheXMobikpcmV0dXJuIHQobixpKTtmb3IodmFyIHI9bi5sZW5ndGgsbz1lP3I6LTEsYT1DdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fWZ1bmN0aW9uIGlvKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7Zm9yKHZhciByPS0xLG89Q3QoZSksYT1pKGUpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIGw9YVt0P3M6KytyXTtpZighMT09PW4ob1tsXSxsLG8pKWJyZWFrfXJldHVybiBlfX1mdW5jdGlvbiBybyhlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9YW4obj0kcyhuKSk/cG4obik6dCxyPWk/aVswXTpuLmNoYXJBdCgwKSxvPWk/R3IoaSwxKS5qb2luKCIiKTpuLnNsaWNlKDEpO3JldHVybiByW2VdKCkrb319ZnVuY3Rpb24gb28odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBSZShBbChibChlKS5yZXBsYWNlKFh0LCIiKSksdCwiIil9fWZ1bmN0aW9uIGFvKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKTtjYXNlIDU6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSk7Y2FzZSA2OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSk7Y2FzZSA3OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSxlWzZdKX12YXIgbj1Vbih0LnByb3RvdHlwZSksaT10LmFwcGx5KG4sZSk7cmV0dXJuIENzKGkpP2k6bn19ZnVuY3Rpb24gc28oZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz1DdChuKTtpZigheXMobikpe3ZhciBhPUlvKGksMyk7bj1sbChuKSxpPWZ1bmN0aW9uKHQpe3JldHVybiBhKG9bdF0sdCxvKX19dmFyIHM9ZShuLGkscik7cmV0dXJuIHM+LTE/b1thP25bc106c106dH19ZnVuY3Rpb24gbG8obil7cmV0dXJuIFRvKChmdW5jdGlvbihpKXt2YXIgcj1pLmxlbmd0aCxvPXIsYT1Hbi5wcm90b3R5cGUudGhydTtmb3IobiYmaS5yZXZlcnNlKCk7by0tOyl7dmFyIHM9aVtvXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgUHQoZSk7aWYoYSYmIWwmJiJ3cmFwcGVyIj09UG8ocykpdmFyIGw9bmV3IEduKFtdLCEwKX1mb3Iobz1sP286cjsrK288cjspe3ZhciBjPVBvKHM9aVtvXSksdT0id3JhcHBlciI9PWM/a28ocyk6dDtsPXUmJldvKHVbMF0pJiY0MjQ9PXVbMV0mJiF1WzRdLmxlbmd0aCYmMT09dVs5XT9sW1BvKHVbMF0pXS5hcHBseShsLHVbM10pOjE9PXMubGVuZ3RoJiZXbyhzKT9sW2NdKCk6bC50aHJ1KHMpfXJldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cyxlPXRbMF07aWYobCYmMT09dC5sZW5ndGgmJm1zKGUpKXJldHVybiBsLnBsYW50KGUpLnZhbHVlKCk7Zm9yKHZhciBuPTAsbz1yP2lbbl0uYXBwbHkodGhpcyx0KTplOysrbjxyOylvPWlbbl0uY2FsbCh0aGlzLG8pO3JldHVybiBvfX0pKX1mdW5jdGlvbiBjbyhlLG4saSxyLG8sYSxsLGMsdSxoKXt2YXIgZD1uJnMscD0xJm4sZj0yJm4sbT0yNCZuLGc9NTEyJm4sXz1mP3Q6YW8oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCx5PXd0KHMpLHY9czt2LS07KXlbdl09YXJndW1lbnRzW3ZdO2lmKG0pdmFyIGI9TG8odCkseD1lbih5LGIpO2lmKHImJih5PUtyKHkscixvLG0pKSxhJiYoeT1acih5LGEsbCxtKSkscy09eCxtJiZzPGgpe3ZhciB3PWNuKHksYik7cmV0dXJuIF9vKGUsbixjbyx0LnBsYWNlaG9sZGVyLGkseSx3LGMsdSxoLXMpfXZhciBTPXA/aTp0aGlzLE09Zj9TW2VdOmU7cmV0dXJuIHM9eS5sZW5ndGgsYz95PUpvKHksYyk6ZyYmcz4xJiZ5LnJldmVyc2UoKSxkJiZ1PHMmJih5Lmxlbmd0aD11KSx0aGlzJiZ0aGlzIT09Y2UmJnRoaXMgaW5zdGFuY2VvZiB0JiYoTT1ffHxhbyhNKSksTS5hcHBseShTLHkpfX1mdW5jdGlvbiB1byh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGkpe3JldHVybiBqaSh0LChmdW5jdGlvbih0LHIsbyl7ZShpLG4odCkscixvKX0pKSxpfSkobix0LGUoaSkse30pfX1mdW5jdGlvbiBobyhlLG4pe3JldHVybiBmdW5jdGlvbihpLHIpe3ZhciBvO2lmKGk9PT10JiZyPT09dClyZXR1cm4gbjtpZihpIT09dCYmKG89aSksciE9PXQpe2lmKG89PT10KXJldHVybiByOyJzdHJpbmciPT10eXBlb2YgaXx8InN0cmluZyI9PXR5cGVvZiByPyhpPUlyKGkpLHI9SXIocikpOihpPUxyKGkpLHI9THIocikpLG89ZShpLHIpfXJldHVybiBvfX1mdW5jdGlvbiBwbyh0KXtyZXR1cm4gVG8oKGZ1bmN0aW9uKGUpe3JldHVybiBlPUllKGUsS2UoSW8oKSkpLHZyKChmdW5jdGlvbihuKXt2YXIgaT10aGlzO3JldHVybiB0KGUsKGZ1bmN0aW9uKHQpe3JldHVybiB4ZSh0LGksbil9KSl9KSl9KSl9ZnVuY3Rpb24gZm8oZSxuKXt2YXIgaT0obj1uPT09dD8iICI6SXIobikpLmxlbmd0aDtpZihpPDIpcmV0dXJuIGk/eXIobixlKTpuO3ZhciByPXlyKG4sU2UoZS9kbihuKSkpO3JldHVybiBhbihuKT9HcihwbihyKSwwLGUpLmpvaW4oIiIpOnIuc2xpY2UoMCxlKX1mdW5jdGlvbiBtbyhlKXtyZXR1cm4gZnVuY3Rpb24obixpLHIpe3JldHVybiByJiYibnVtYmVyIiE9dHlwZW9mIHImJmpvKG4saSxyKSYmKGk9cj10KSxuPUdzKG4pLGk9PT10PyhpPW4sbj0wKTppPUdzKGkpLChmdW5jdGlvbiBvKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPXZuKFNlKChlLXQpLyhufHwxKSksMCksYT13dChvKTtvLS07KWFbaT9vOisrcl09dCx0Kz1uO3JldHVybiBhfSkobixpLHI9cj09PXQ/bjxpPzE6LTE6R3MociksZSl9fWZ1bmN0aW9uIGdvKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmInN0cmluZyI9PXR5cGVvZiBufHwoZT1ZcyhlKSxuPVlzKG4pKSx0KGUsbil9fWZ1bmN0aW9uIF9vKGUsbixpLHIscyxsLGMsdSxoLGQpe3ZhciBwPTgmbjtufD1wP286YSw0JihuJj1+KHA/YTpvKSl8fChuJj0tNCk7dmFyIGY9W2UsbixzLHA/bDp0LHA/Yzp0LHA/dDpsLHA/dDpjLHUsaCxkXSxtPWkuYXBwbHkodCxmKTtyZXR1cm4gV28oZSkmJnRhKG0sZiksbS5wbGFjZWhvbGRlcj1yLGlhKG0sZSxuKX1mdW5jdGlvbiB5byh0KXt2YXIgZT1UdFt0XTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZih0PVlzKHQpLChuPW51bGw9PW4/MDpibihXcyhuKSwyOTIpKSYmV2UodCkpe3ZhciBpPSgkcyh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygoaT0oJHMoZShpWzBdKyJlIisoK2lbMV0rbikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK2lbMV0tbikpfXJldHVybiBlKHQpfX12YXIgdm89QW4mJjEvdW4obmV3IEFuKFssLTBdKSlbMV09PWM/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBBbih0KX06SGw7ZnVuY3Rpb24gYm8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPUJvKGUpO3JldHVybiBuPT14P3NuKGUpOm49PVQ/aG4oZSk6KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gSWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdFtlXV19KSl9KShlLHQoZSkpfX1mdW5jdGlvbiB4byhuLGMsdSxoLGQscCxmLG0pe3ZhciBnPTImYztpZighZyYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFB0KGUpO3ZhciBfPWg/aC5sZW5ndGg6MDtpZihffHwoYyY9LTk3LGg9ZD10KSxmPWY9PT10P2Y6dm4oV3MoZiksMCksbT1tPT09dD9tOldzKG0pLF8tPWQ/ZC5sZW5ndGg6MCxjJmEpe3ZhciB5PWgsdj1kO2g9ZD10fXZhciBiPWc/dDprbyhuKSx4PVtuLGMsdSxoLGQseSx2LHAsZixtXTtpZihiJiYoZnVuY3Rpb24gdyh0LGUpe3ZhciBuPXRbMV0scj1lWzFdLG89bnxyLGE9cj09cyYmOD09bnx8cj09cyYmbj09bCYmdFs3XS5sZW5ndGg8PWVbOF18fDM4ND09ciYmZVs3XS5sZW5ndGg8PWVbOF0mJjg9PW47aWYoIShvPDEzMXx8YSkpcmV0dXJuIHQ7MSZyJiYodFsyXT1lWzJdLG98PTEmbj8wOjQpO3ZhciBjPWVbM107aWYoYyl7dmFyIHU9dFszXTt0WzNdPXU/S3IodSxjLGVbNF0pOmMsdFs0XT11P2NuKHRbM10saSk6ZVs0XX1yZXR1cm4oYz1lWzVdKSYmKHRbNV09KHU9dFs1XSk/WnIodSxjLGVbNl0pOmMsdFs2XT11P2NuKHRbNV0saSk6ZVs2XSksKGM9ZVs3XSkmJih0WzddPWMpLHImcyYmKHRbOF09bnVsbD09dFs4XT9lWzhdOmJuKHRbOF0sZVs4XSkpLG51bGw9PXRbOV0mJih0WzldPWVbOV0pLHRbMF09ZVswXSx0WzFdPW8sdH0pKHgsYiksbj14WzBdLGM9eFsxXSx1PXhbMl0saD14WzNdLGQ9eFs0XSwhKG09eFs5XT14WzldPT09dD9nPzA6bi5sZW5ndGg6dm4oeFs5XS1fLDApKSYmMjQmYyYmKGMmPS0yNSksYyYmMSE9YylFPTg9PWN8fGM9PXI/KGZ1bmN0aW9uIFMoZSxuLGkpe3ZhciByPWFvKGUpO3JldHVybiBmdW5jdGlvbiBvKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgscz13dChhKSxsPWEsYz1MbyhvKTtsLS07KXNbbF09YXJndW1lbnRzW2xdO3ZhciB1PWE8MyYmc1swXSE9PWMmJnNbYS0xXSE9PWM/W106Y24ocyxjKTtyZXR1cm4oYS09dS5sZW5ndGgpPGk/X28oZSxuLGNvLG8ucGxhY2Vob2xkZXIsdCxzLHUsdCx0LGktYSk6eGUodGhpcyYmdGhpcyE9PWNlJiZ0aGlzIGluc3RhbmNlb2Ygbz9yOmUsdGhpcyxzKX19KShuLGMsbSk6YyE9byYmMzMhPWN8fGQubGVuZ3RoP2NvLmFwcGx5KHQseCk6KGZ1bmN0aW9uIE0odCxlLG4saSl7dmFyIHI9MSZlLG89YW8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9LTEscz1hcmd1bWVudHMubGVuZ3RoLGw9LTEsYz1pLmxlbmd0aCx1PXd0KGMrcyksaD10aGlzJiZ0aGlzIT09Y2UmJnRoaXMgaW5zdGFuY2VvZiBlP286dDsrK2w8YzspdVtsXT1pW2xdO2Zvcig7cy0tOyl1W2wrK109YXJndW1lbnRzWysrYV07cmV0dXJuIHhlKGgscj9uOnRoaXMsdSl9fSkobixjLHUsaCk7ZWxzZSB2YXIgRT0oZnVuY3Rpb24gVCh0LGUsbil7dmFyIGk9MSZlLHI9YW8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtyZXR1cm4odGhpcyYmdGhpcyE9PWNlJiZ0aGlzIGluc3RhbmNlb2YgZT9yOnQpLmFwcGx5KGk/bjp0aGlzLGFyZ3VtZW50cyl9fSkobixjLHUpO3JldHVybiBpYSgoYj9Tcjp0YSkoRSx4KSxuLGMpfWZ1bmN0aW9uIHdvKGUsbixpLHIpe3JldHVybiBlPT09dHx8aHMoZSxJdFtpXSkmJiFPdC5jYWxsKHIsaSk/bjplfWZ1bmN0aW9uIFNvKGUsbixpLHIsbyxhKXtyZXR1cm4gQ3MoZSkmJkNzKG4pJiYoYS5zZXQobixlKSxocihlLG4sdCxTbyxhKSxhLmRlbGV0ZShuKSksZX1mdW5jdGlvbiBNbyhlKXtyZXR1cm4gSXMoZSk/dDplfWZ1bmN0aW9uIEVvKGUsbixpLHIsbyxhKXt2YXIgcz0xJmksbD1lLmxlbmd0aCxjPW4ubGVuZ3RoO2lmKGwhPWMmJiEocyYmYz5sKSlyZXR1cm4hMTt2YXIgdT1hLmdldChlKSxoPWEuZ2V0KG4pO2lmKHUmJmgpcmV0dXJuIHU9PW4mJmg9PWU7dmFyIGQ9LTEscD0hMCxmPTImaT9uZXcgJG46dDtmb3IoYS5zZXQoZSxuKSxhLnNldChuLGUpOysrZDxsOyl7dmFyIG09ZVtkXSxnPW5bZF07aWYocil2YXIgXz1zP3IoZyxtLGQsbixlLGEpOnIobSxnLGQsZSxuLGEpO2lmKF8hPT10KXtpZihfKWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoZil7aWYoIXplKG4sKGZ1bmN0aW9uKHQsZSl7aWYoIUplKGYsZSkmJihtPT09dHx8byhtLHQsaSxyLGEpKSlyZXR1cm4gZi5wdXNoKGUpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKG0hPT1nJiYhbyhtLGcsaSxyLGEpKXtwPSExO2JyZWFrfX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobikscH1mdW5jdGlvbiBUbyhlKXtyZXR1cm4gbmEoS28oZSx0LGdhKSxlKyIiKX1mdW5jdGlvbiBDbyh0KXtyZXR1cm4gWWkodCxsbCx6byl9ZnVuY3Rpb24gQW8odCl7cmV0dXJuIFlpKHQsY2wsRG8pfXZhciBrbz1Mbj9mdW5jdGlvbih0KXtyZXR1cm4gTG4uZ2V0KHQpfTpIbDtmdW5jdGlvbiBQbyh0KXtmb3IodmFyIGU9dC5uYW1lKyIiLG49SW5bZV0saT1PdC5jYWxsKEluLGUpP24ubGVuZ3RoOjA7aS0tOyl7dmFyIHI9bltpXSxvPXIuZnVuYztpZihudWxsPT1vfHxvPT10KXJldHVybiByLm5hbWV9cmV0dXJuIGV9ZnVuY3Rpb24gTG8odCl7cmV0dXJuKE90LmNhbGwoVm4sInBsYWNlaG9sZGVyIik/Vm46dCkucGxhY2Vob2xkZXJ9ZnVuY3Rpb24gSW8oKXt2YXIgdD1Wbi5pdGVyYXRlZXx8T2w7cmV0dXJuIHQ9dD09PU9sP3JyOnQsYXJndW1lbnRzLmxlbmd0aD90KGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOnR9ZnVuY3Rpb24gTm8odCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybihmdW5jdGlvbiBpKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT1lfHwibnVtYmVyIj09ZXx8InN5bWJvbCI9PWV8fCJib29sZWFuIj09ZT8iX19wcm90b19fIiE9PXQ6bnVsbD09PXR9KShlKT9uWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm4ubWFwfWZ1bmN0aW9uIFJvKHQpe2Zvcih2YXIgZT1sbCh0KSxuPWUubGVuZ3RoO24tLTspe3ZhciBpPWVbbl0scj10W2ldO2Vbbl09W2kscixYbyhyKV19cmV0dXJuIGV9ZnVuY3Rpb24gT28oZSxuKXt2YXIgaT0oZnVuY3Rpb24gcihlLG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX0pKGUsbik7cmV0dXJuIGlyKGkpP2k6dH12YXIgem89VGU/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9Q3QodCksa2UoVGUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBLdC5jYWxsKHQsZSl9KSkpfTpxbCxEbz1UZT9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspTmUoZSx6byh0KSksdD1xdCh0KTtyZXR1cm4gZX06cWwsQm89WGk7ZnVuY3Rpb24gSG8odCxlLG4pe2Zvcih2YXIgaT0tMSxyPShlPVVyKGUsdCkpLmxlbmd0aCxvPSExOysraTxyOyl7dmFyIGE9bGEoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJlRzKHIpJiZVbyhhLHIpJiYobXModCl8fGZzKHQpKX1mdW5jdGlvbiBGbyh0KXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdC5jb25zdHJ1Y3Rvcnx8WW8odCk/e306VW4ocXQodCkpfWZ1bmN0aW9uIFZvKHQpe3JldHVybiBtcyh0KXx8ZnModCl8fCEhKHJlJiZ0JiZ0W3JlXSl9ZnVuY3Rpb24gVW8odCxlKXt2YXIgbj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/dTplKSYmKCJudW1iZXIiPT1ufHwic3ltYm9sIiE9biYmZ3QudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfWZ1bmN0aW9uIGpvKHQsZSxuKXtpZighQ3MobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/eXMobikmJlVvKGUsbi5sZW5ndGgpOiJzdHJpbmciPT1pJiZlIGluIG4pJiZocyhuW2VdLHQpfWZ1bmN0aW9uIEdvKHQsZSl7aWYobXModCkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9dCYmIUJzKHQpKXx8Si50ZXN0KHQpfHwhWi50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIEN0KGUpfWZ1bmN0aW9uIFdvKHQpe3ZhciBlPVBvKHQpLG49Vm5bZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG58fCEoZSBpbiBXbi5wcm90b3R5cGUpKXJldHVybiExO2lmKHQ9PT1uKXJldHVybiEwO3ZhciBpPWtvKG4pO3JldHVybiEhaSYmdD09PWlbMF19KEVuJiZCbyhuZXcgRW4obmV3IEFycmF5QnVmZmVyKDEpKSkhPUx8fFRuJiZCbyhuZXcgVG4pIT14fHxDbiYmQm8oQ24ucmVzb2x2ZSgpKSE9TXx8QW4mJkJvKG5ldyBBbikhPVR8fGtuJiZCbyhuZXcga24pIT1rKSYmKEJvPWZ1bmN0aW9uKGUpe3ZhciBuPVhpKGUpLGk9bj09Uz9lLmNvbnN0cnVjdG9yOnQscj1pP2NhKGkpOiIiO2lmKHIpc3dpdGNoKHIpe2Nhc2UgTm46cmV0dXJuIEw7Y2FzZSBSbjpyZXR1cm4geDtjYXNlIE9uOnJldHVybiBNO2Nhc2Ugem46cmV0dXJuIFQ7Y2FzZSBEbjpyZXR1cm4ga31yZXR1cm4gbn0pO3ZhciBxbz1OdD9NczpZbDtmdW5jdGlvbiBZbyh0KXt2YXIgZT10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZXx8SXQpfWZ1bmN0aW9uIFhvKHQpe3JldHVybiB0PT10JiYhQ3ModCl9ZnVuY3Rpb24gJG8oZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG51bGwhPWkmJmlbZV09PT1uJiYobiE9PXR8fGUgaW4gQ3QoaSkpfX1mdW5jdGlvbiBLbyhlLG4saSl7cmV0dXJuIG49dm4obj09PXQ/ZS5sZW5ndGgtMTpuLDApLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cyxyPS0xLG89dm4odC5sZW5ndGgtbiwwKSxhPXd0KG8pOysrcjxvOylhW3JdPXRbbityXTtyPS0xO2Zvcih2YXIgcz13dChuKzEpOysrcjxuOylzW3JdPXRbcl07cmV0dXJuIHNbbl09aShhKSx4ZShlLHRoaXMscyl9fWZ1bmN0aW9uIFpvKHQsZSl7cmV0dXJuIGUubGVuZ3RoPDI/dDpxaSh0LFRyKGUsMCwtMSkpfWZ1bmN0aW9uIEpvKGUsbil7Zm9yKHZhciBpPWUubGVuZ3RoLHI9Ym4obi5sZW5ndGgsaSksbz1KcihlKTtyLS07KXt2YXIgYT1uW3JdO2Vbcl09VW8oYSxpKT9vW2FdOnR9cmV0dXJuIGV9ZnVuY3Rpb24gUW8odCxlKXtpZigoImNvbnN0cnVjdG9yIiE9PWV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0W2VdKSYmIl9fcHJvdG9fXyIhPWUpcmV0dXJuIHRbZV19dmFyIHRhPXJhKFNyKSxlYT1mZXx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gY2Uuc2V0VGltZW91dCh0LGUpfSxuYT1yYShNcik7ZnVuY3Rpb24gaWEodCxlLG4pe3ZhciBpPWUrIiI7cmV0dXJuIG5hKHQsKGZ1bmN0aW9uIGEodCxlKXt2YXIgbj1lLmxlbmd0aDtpZighbilyZXR1cm4gdDt2YXIgaT1uLTE7cmV0dXJuIGVbaV09KG4+MT8iJiAiOiIiKStlW2ldLGU9ZS5qb2luKG4+Mj8iLCAiOiIgIiksdC5yZXBsYWNlKHJ0LCJ7XG4vKiBbd3JhcHBlZCB3aXRoICIrZSsiXSAqL1xuIil9KShpLChmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIE1lKHAsKGZ1bmN0aW9uKG4pe3ZhciBpPSJfLiIrblswXTtlJm5bMV0mJiFQZSh0LGkpJiZ0LnB1c2goaSl9KSksdC5zb3J0KCl9KSgoZnVuY3Rpb24gcih0KXt2YXIgZT10Lm1hdGNoKG90KTtyZXR1cm4gZT9lWzFdLnNwbGl0KGF0KTpbXX0pKGkpLG4pKSl9ZnVuY3Rpb24gcmEoZSl7dmFyIG49MCxpPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9eG4oKSxvPTE2LShyLWkpO2lmKGk9cixvPjApe2lmKCsrbj49ODAwKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSBuPTA7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBvYShlLG4pe3ZhciBpPS0xLHI9ZS5sZW5ndGgsbz1yLTE7Zm9yKG49bj09PXQ/cjpuOysraTxuOyl7dmFyIGE9X3IoaSxvKSxzPWVbYV07ZVthXT1lW2ldLGVbaV09c31yZXR1cm4gZS5sZW5ndGg9bixlfXZhciBhYT0oZnVuY3Rpb24gc2EodCl7dmFyIGU9b3ModCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PW4uc2l6ZSYmbi5jbGVhcigpLHR9KSksbj1lLmNhY2hlO3JldHVybiBlfSkoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoUSwoZnVuY3Rpb24odCxuLGkscil7ZS5wdXNoKGk/ci5yZXBsYWNlKGN0LCIkMSIpOm58fHQpfSkpLGV9KSk7ZnVuY3Rpb24gbGEodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxCcyh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX1mdW5jdGlvbiBjYSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIFJ0LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifWZ1bmN0aW9uIHVhKHQpe2lmKHQgaW5zdGFuY2VvZiBXbilyZXR1cm4gdC5jbG9uZSgpO3ZhciBlPW5ldyBHbih0Ll9fd3JhcHBlZF9fLHQuX19jaGFpbl9fKTtyZXR1cm4gZS5fX2FjdGlvbnNfXz1Kcih0Ll9fYWN0aW9uc19fKSxlLl9faW5kZXhfXz10Ll9faW5kZXhfXyxlLl9fdmFsdWVzX189dC5fX3ZhbHVlc19fLGV9dmFyIGhhPXZyKChmdW5jdGlvbih0LGUpe3JldHVybiB2cyh0KT9kaSh0LEZpKGUsMSx2cywhMCkpOltdfSkpLGRhPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPXhhKG4pO3JldHVybiB2cyhpKSYmKGk9dCksdnMoZSk/ZGkoZSxGaShuLDEsdnMsITApLElvKGksMikpOltdfSkpLHBhPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPXhhKG4pO3JldHVybiB2cyhpKSYmKGk9dCksdnMoZSk/ZGkoZSxGaShuLDEsdnMsITApLHQsaSk6W119KSk7ZnVuY3Rpb24gZmEodCxlLG4pe3ZhciBpPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighaSlyZXR1cm4tMTt2YXIgcj1udWxsPT1uPzA6V3Mobik7cmV0dXJuIHI8MCYmKHI9dm4oaStyLDApKSxIZSh0LElvKGUsMykscil9ZnVuY3Rpb24gbWEoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1yLTE7cmV0dXJuIGkhPT10JiYobz1XcyhpKSxvPWk8MD92bihyK28sMCk6Ym4obyxyLTEpKSxIZShlLElvKG4sMyksbywhMCl9ZnVuY3Rpb24gZ2EodCl7cmV0dXJuIG51bGwhPXQmJnQubGVuZ3RoP0ZpKHQsMSk6W119ZnVuY3Rpb24gX2EoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2VbMF06dH12YXIgeWE9dnIoKGZ1bmN0aW9uKHQpe3ZhciBlPUllKHQsRnIpO3JldHVybiBlLmxlbmd0aCYmZVswXT09PXRbMF0/SmkoZSk6W119KSksdmE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpLGk9SWUoZSxGcik7cmV0dXJuIG49PT14YShpKT9uPXQ6aS5wb3AoKSxpLmxlbmd0aCYmaVswXT09PWVbMF0/SmkoaSxJbyhuLDIpKTpbXX0pKSxiYT12cigoZnVuY3Rpb24oZSl7dmFyIG49eGEoZSksaT1JZShlLEZyKTtyZXR1cm4obj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQpJiZpLnBvcCgpLGkubGVuZ3RoJiZpWzBdPT09ZVswXT9KaShpLHQsbik6W119KSk7ZnVuY3Rpb24geGEoZSl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiBuP2Vbbi0xXTp0fXZhciB3YT12cihTYSk7ZnVuY3Rpb24gU2EodCxlKXtyZXR1cm4gdCYmdC5sZW5ndGgmJmUmJmUubGVuZ3RoP21yKHQsZSk6dH12YXIgTWE9VG8oKGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD8wOnQubGVuZ3RoLGk9c2kodCxlKTtyZXR1cm4gZ3IodCxJZShlLChmdW5jdGlvbih0KXtyZXR1cm4gVW8odCxuKT8rdDp0fSkpLnNvcnQoJHIpKSxpfSkpO2Z1bmN0aW9uIEVhKHQpe3JldHVybiBudWxsPT10P3Q6TW4uY2FsbCh0KX12YXIgVGE9dnIoKGZ1bmN0aW9uKHQpe3JldHVybiBOcihGaSh0LDEsdnMsITApKX0pKSxDYT12cigoZnVuY3Rpb24oZSl7dmFyIG49eGEoZSk7cmV0dXJuIHZzKG4pJiYobj10KSxOcihGaShlLDEsdnMsITApLElvKG4sMikpfSkpLEFhPXZyKChmdW5jdGlvbihlKXt2YXIgbj14YShlKTtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQsTnIoRmkoZSwxLHZzLCEwKSx0LG4pfSkpO2Z1bmN0aW9uIGthKHQpe2lmKCF0fHwhdC5sZW5ndGgpcmV0dXJuW107dmFyIGU9MDtyZXR1cm4gdD1rZSh0LChmdW5jdGlvbih0KXtpZih2cyh0KSlyZXR1cm4gZT12bih0Lmxlbmd0aCxlKSwhMH0pKSxYZShlLChmdW5jdGlvbihlKXtyZXR1cm4gSWUodCxHZShlKSl9KSl9ZnVuY3Rpb24gUGEoZSxuKXtpZighZXx8IWUubGVuZ3RoKXJldHVybltdO3ZhciBpPWthKGUpO3JldHVybiBudWxsPT1uP2k6SWUoaSwoZnVuY3Rpb24oZSl7cmV0dXJuIHhlKG4sdCxlKX0pKX12YXIgTGE9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZzKHQpP2RpKHQsZSk6W119KSksSWE9dnIoKGZ1bmN0aW9uKHQpe3JldHVybiBCcihrZSh0LHZzKSl9KSksTmE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpO3JldHVybiB2cyhuKSYmKG49dCksQnIoa2UoZSx2cyksSW8obiwyKSl9KSksUmE9dnIoKGZ1bmN0aW9uKGUpe3ZhciBuPXhhKGUpO3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCxCcihrZShlLHZzKSx0LG4pfSkpLE9hPXZyKGthKSx6YT12cigoZnVuY3Rpb24oZSl7dmFyIG49ZS5sZW5ndGgsaT1uPjE/ZVtuLTFdOnQ7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/KGUucG9wKCksaSk6dCxQYShlLGkpfSkpO2Z1bmN0aW9uIERhKHQpe3ZhciBlPVZuKHQpO3JldHVybiBlLl9fY2hhaW5fXz0hMCxlfWZ1bmN0aW9uIEJhKHQsZSl7cmV0dXJuIGUodCl9dmFyIEhhPVRvKChmdW5jdGlvbihlKXt2YXIgbj1lLmxlbmd0aCxpPW4/ZVswXTowLHI9dGhpcy5fX3dyYXBwZWRfXyxvPWZ1bmN0aW9uKHQpe3JldHVybiBzaSh0LGUpfTtyZXR1cm4hKG4+MXx8dGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpJiZyIGluc3RhbmNlb2YgV24mJlVvKGkpPygocj1yLnNsaWNlKGksK2krKG4/MTowKSkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbb10sdGhpc0FyZzp0fSksbmV3IEduKHIsdGhpcy5fX2NoYWluX18pLnRocnUoKGZ1bmN0aW9uKGUpe3JldHVybiBuJiYhZS5sZW5ndGgmJmUucHVzaCh0KSxlfSkpKTp0aGlzLnRocnUobyl9KSksRmE9dG8oKGZ1bmN0aW9uKHQsZSxuKXtPdC5jYWxsKHQsbik/Kyt0W25dOmFpKHQsbiwxKX0pKSxWYT1zbyhmYSksVWE9c28obWEpO2Z1bmN0aW9uIGphKHQsZSl7cmV0dXJuKG1zKHQpP01lOk9pKSh0LElvKGUsMykpfWZ1bmN0aW9uIEdhKHQsZSl7cmV0dXJuKG1zKHQpP0NlOnppKSh0LElvKGUsMykpfXZhciBXYT10bygoZnVuY3Rpb24odCxlLG4pe090LmNhbGwodCxuKT90W25dLnB1c2goZSk6YWkodCxuLFtlXSl9KSkscWE9dnIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0tMSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBlLG89eXModCk/d3QodC5sZW5ndGgpOltdO3JldHVybiBPaSh0LChmdW5jdGlvbih0KXtvWysraV09cj94ZShlLHQsbik6UWkodCxlLG4pfSkpLG99KSksWWE9dG8oKGZ1bmN0aW9uKHQsZSxuKXthaSh0LG4sZSl9KSk7ZnVuY3Rpb24gWGEodCxlKXtyZXR1cm4obXModCk/SWU6bHIpKHQsSW8oZSwzKSl9dmFyICRhPXRvKChmdW5jdGlvbih0LGUsbil7dFtuPzA6MV0ucHVzaChlKX0pLChmdW5jdGlvbigpe3JldHVybltbXSxbXV19KSksS2E9dnIoKGZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm5bXTt2YXIgbj1lLmxlbmd0aDtyZXR1cm4gbj4xJiZqbyh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJmpvKGVbMF0sZVsxXSxlWzJdKSYmKGU9W2VbMF1dKSxwcih0LEZpKGUsMSksW10pfSkpLFphPXBlfHxmdW5jdGlvbigpe3JldHVybiBjZS5EYXRlLm5vdygpfTtmdW5jdGlvbiBKYShlLG4saSl7cmV0dXJuIG49aT90Om4seG8oZSxzLHQsdCx0LHQsbj1lJiZudWxsPT1uP2UubGVuZ3RoOm4pfWZ1bmN0aW9uIFFhKG4saSl7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGkpdGhyb3cgbmV3IFB0KGUpO3JldHVybiBuPVdzKG4pLGZ1bmN0aW9uKCl7cmV0dXJuLS1uPjAmJihyPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxuPD0xJiYoaT10KSxyfX12YXIgdHM9dnIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xO2lmKG4ubGVuZ3RoKXt2YXIgcj1jbihuLExvKHRzKSk7aXw9b31yZXR1cm4geG8odCxpLGUsbixyKX0pKSxlcz12cigoZnVuY3Rpb24odCxlLG4pe3ZhciBpPTM7aWYobi5sZW5ndGgpe3ZhciByPWNuKG4sTG8oZXMpKTtpfD1vfXJldHVybiB4byhlLGksdCxuLHIpfSkpO2Z1bmN0aW9uIG5zKG4saSxyKXt2YXIgbyxhLHMsbCxjLHUsaD0wLGQ9ITEscD0hMSxmPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBQdChlKTtmdW5jdGlvbiBtKGUpe3ZhciBpPW8scj1hO3JldHVybiBvPWE9dCxoPWUsbD1uLmFwcGx5KHIsaSl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gaD10LGM9ZWEoeSxpKSxkP20odCk6bH1mdW5jdGlvbiBfKGUpe3ZhciBuPWUtdTtyZXR1cm4gdT09PXR8fG4+PWl8fG48MHx8cCYmZS1oPj1zfWZ1bmN0aW9uIHkoKXt2YXIgdD1aYSgpO2lmKF8odCkpcmV0dXJuIHYodCk7Yz1lYSh5LChmdW5jdGlvbiBlKHQpe3ZhciBlPWktKHQtdSk7cmV0dXJuIHA/Ym4oZSxzLSh0LWgpKTplfSkodCkpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGM9dCxmJiZvP20oZSk6KG89YT10LGwpfWZ1bmN0aW9uIGIoKXt2YXIgZT1aYSgpLG49XyhlKTtpZihvPWFyZ3VtZW50cyxhPXRoaXMsdT1lLG4pe2lmKGM9PT10KXJldHVybiBnKHUpO2lmKHApcmV0dXJuIFdyKGMpLGM9ZWEoeSxpKSxtKHUpfXJldHVybiBjPT09dCYmKGM9ZWEoeSxpKSksbH1yZXR1cm4gaT1ZcyhpKXx8MCxDcyhyKSYmKGQ9ISFyLmxlYWRpbmcscz0ocD0ibWF4V2FpdCJpbiByKT92bihZcyhyLm1heFdhaXQpfHwwLGkpOnMsZj0idHJhaWxpbmciaW4gcj8hIXIudHJhaWxpbmc6ZiksYi5jYW5jZWw9ZnVuY3Rpb24geCgpe2MhPT10JiZXcihjKSxoPTAsbz11PWE9Yz10fSxiLmZsdXNoPWZ1bmN0aW9uIHcoKXtyZXR1cm4gYz09PXQ/bDp2KFphKCkpfSxifXZhciBpcz12cigoZnVuY3Rpb24odCxlKXtyZXR1cm4gaGkodCwxLGUpfSkpLHJzPXZyKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGhpKHQsWXMoZSl8fDAsbil9KSk7ZnVuY3Rpb24gb3ModCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9biYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFB0KGUpO3ZhciBpPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHI9bj9uLmFwcGx5KHRoaXMsZSk6ZVswXSxvPWkuY2FjaGU7aWYoby5oYXMocikpcmV0dXJuIG8uZ2V0KHIpO3ZhciBhPXQuYXBwbHkodGhpcyxlKTtyZXR1cm4gaS5jYWNoZT1vLnNldChyLGEpfHxvLGF9O3JldHVybiBpLmNhY2hlPW5ldyhvcy5DYWNoZXx8WG4pLGl9ZnVuY3Rpb24gYXModCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFB0KGUpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hdC5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSk7Y2FzZSAyOnJldHVybiF0LmNhbGwodGhpcyxlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSxlWzFdLGVbMl0pfXJldHVybiF0LmFwcGx5KHRoaXMsZSl9fW9zLkNhY2hlPVhuO3ZhciBzcz1qcigoZnVuY3Rpb24odCxlKXt2YXIgbj0oZT0xPT1lLmxlbmd0aCYmbXMoZVswXSk/SWUoZVswXSxLZShJbygpKSk6SWUoRmkoZSwxKSxLZShJbygpKSkpLmxlbmd0aDtyZXR1cm4gdnIoKGZ1bmN0aW9uKGkpe2Zvcih2YXIgcj0tMSxvPWJuKGkubGVuZ3RoLG4pOysrcjxvOylpW3JdPWVbcl0uY2FsbCh0aGlzLGlbcl0pO3JldHVybiB4ZSh0LHRoaXMsaSl9KSl9KSksbHM9dnIoKGZ1bmN0aW9uKGUsbil7dmFyIGk9Y24obixMbyhscykpO3JldHVybiB4byhlLG8sdCxuLGkpfSkpLGNzPXZyKChmdW5jdGlvbihlLG4pe3ZhciBpPWNuKG4sTG8oY3MpKTtyZXR1cm4geG8oZSxhLHQsbixpKX0pKSx1cz1UbygoZnVuY3Rpb24oZSxuKXtyZXR1cm4geG8oZSxsLHQsdCx0LG4pfSkpO2Z1bmN0aW9uIGhzKHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfXZhciBkcz1nbygkaSkscHM9Z28oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+PWV9KSksZnM9dHIoKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30pKCkpP3RyOmZ1bmN0aW9uKHQpe3JldHVybiBBcyh0KSYmT3QuY2FsbCh0LCJjYWxsZWUiKSYmIUt0LmNhbGwodCwiY2FsbGVlIil9LG1zPXd0LmlzQXJyYXksZ3M9bWU/S2UobWUpOmZ1bmN0aW9uIF9zKHQpe3JldHVybiBBcyh0KSYmWGkodCk9PVB9O2Z1bmN0aW9uIHlzKHQpe3JldHVybiBudWxsIT10JiZUcyh0Lmxlbmd0aCkmJiFNcyh0KX1mdW5jdGlvbiB2cyh0KXtyZXR1cm4gQXModCkmJnlzKHQpfXZhciBicz1EZXx8WWwseHM9Z2U/S2UoZ2UpOmZ1bmN0aW9uIHdzKHQpe3JldHVybiBBcyh0KSYmWGkodCk9PV99O2Z1bmN0aW9uIFNzKHQpe2lmKCFBcyh0KSlyZXR1cm4hMTt2YXIgZT1YaSh0KTtyZXR1cm4gZT09eXx8IltvYmplY3QgRE9NRXhjZXB0aW9uXSI9PWV8fCJzdHJpbmciPT10eXBlb2YgdC5tZXNzYWdlJiYic3RyaW5nIj09dHlwZW9mIHQubmFtZSYmIUlzKHQpfWZ1bmN0aW9uIE1zKHQpe2lmKCFDcyh0KSlyZXR1cm4hMTt2YXIgZT1YaSh0KTtyZXR1cm4gZT09dnx8ZT09Ynx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBQcm94eV0iPT1lfWZ1bmN0aW9uIEVzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD09V3ModCl9ZnVuY3Rpb24gVHModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PXV9ZnVuY3Rpb24gQ3ModCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9ZnVuY3Rpb24gQXModCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIga3M9X2U/S2UoX2UpOmZ1bmN0aW9uIFBzKHQpe3JldHVybiBBcyh0KSYmQm8odCk9PXh9O2Z1bmN0aW9uIExzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdHx8QXModCkmJlhpKHQpPT13fWZ1bmN0aW9uIElzKHQpe2lmKCFBcyh0KXx8WGkodCkhPVMpcmV0dXJuITE7dmFyIGU9cXQodCk7aWYobnVsbD09PWUpcmV0dXJuITA7dmFyIG49T3QuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmUnQuY2FsbChuKT09SHR9dmFyIE5zPXllP0tlKHllKTpmdW5jdGlvbiBScyh0KXtyZXR1cm4gQXModCkmJlhpKHQpPT1FfSxPcz12ZT9LZSh2ZSk6ZnVuY3Rpb24genModCl7cmV0dXJuIEFzKHQpJiZCbyh0KT09VH07ZnVuY3Rpb24gRHModCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHwhbXModCkmJkFzKHQpJiZYaSh0KT09Q31mdW5jdGlvbiBCcyh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fEFzKHQpJiZYaSh0KT09QX12YXIgSHM9YmU/S2UoYmUpOmZ1bmN0aW9uIEZzKHQpe3JldHVybiBBcyh0KSYmVHModC5sZW5ndGgpJiYhIW5lW1hpKHQpXX0sVnM9Z28oc3IpLFVzPWdvKChmdW5jdGlvbih0LGUpe3JldHVybiB0PD1lfSkpO2Z1bmN0aW9uIGpzKHQpe2lmKCF0KXJldHVybltdO2lmKHlzKHQpKXJldHVybiBEcyh0KT9wbih0KTpKcih0KTtpZihzZSYmdFtzZV0pcmV0dXJuKGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlLG49W107IShlPXQubmV4dCgpKS5kb25lOyluLnB1c2goZS52YWx1ZSk7cmV0dXJuIG59KSh0W3NlXSgpKTt2YXIgbj1Cbyh0KTtyZXR1cm4obj09eD9zbjpuPT1UP3VuOl9sKSh0KX1mdW5jdGlvbiBHcyh0KXtyZXR1cm4gdD8odD1Zcyh0KSk9PT1jfHx0PT09LTEvMD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKHQ8MD8tMToxKTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gV3ModCl7dmFyIGU9R3ModCksbj1lJTE7cmV0dXJuIGU9PWU/bj9lLW46ZTowfWZ1bmN0aW9uIHFzKHQpe3JldHVybiB0P2xpKFdzKHQpLDAsZCk6MH1mdW5jdGlvbiBZcyh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoQnModCkpcmV0dXJuIGg7aWYoQ3ModCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUNzKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD0kZSh0KTt2YXIgbj1wdC50ZXN0KHQpO3JldHVybiBufHxtdC50ZXN0KHQpP2FlKHQuc2xpY2UoMiksbj8yOjgpOmR0LnRlc3QodCk/aDordH1mdW5jdGlvbiBYcyh0KXtyZXR1cm4gUXIodCxjbCh0KSl9ZnVuY3Rpb24gJHModCl7cmV0dXJuIG51bGw9PXQ/IiI6SXIodCl9dmFyIEtzPWVvKChmdW5jdGlvbih0LGUpe2lmKFlvKGUpfHx5cyhlKSlRcihlLGxsKGUpLHQpO2Vsc2UgZm9yKHZhciBuIGluIGUpT3QuY2FsbChlLG4pJiZuaSh0LG4sZVtuXSl9KSksWnM9ZW8oKGZ1bmN0aW9uKHQsZSl7UXIoZSxjbChlKSx0KX0pKSxKcz1lbygoZnVuY3Rpb24odCxlLG4saSl7UXIoZSxjbChlKSx0LGkpfSkpLFFzPWVvKChmdW5jdGlvbih0LGUsbixpKXtRcihlLGxsKGUpLHQsaSl9KSksdGw9VG8oc2kpLGVsPXZyKChmdW5jdGlvbihlLG4pe2U9Q3QoZSk7dmFyIGk9LTEscj1uLmxlbmd0aCxvPXI+Mj9uWzJdOnQ7Zm9yKG8mJmpvKG5bMF0sblsxXSxvKSYmKHI9MSk7KytpPHI7KWZvcih2YXIgYT1uW2ldLHM9Y2woYSksbD0tMSxjPXMubGVuZ3RoOysrbDxjOyl7dmFyIHU9c1tsXSxoPWVbdV07KGg9PT10fHxocyhoLEl0W3VdKSYmIU90LmNhbGwoZSx1KSkmJihlW3VdPWFbdV0pfXJldHVybiBlfSkpLG5sPXZyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXNoKHQsU28pLHhlKGhsLHQsZSl9KSk7ZnVuY3Rpb24gaWwoZSxuLGkpe3ZhciByPW51bGw9PWU/dDpxaShlLG4pO3JldHVybiByPT09dD9pOnJ9ZnVuY3Rpb24gcmwodCxlKXtyZXR1cm4gbnVsbCE9dCYmSG8odCxlLFppKX12YXIgb2w9dW8oKGZ1bmN0aW9uKHQsZSxuKXtudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZyYmKGU9QnQuY2FsbChlKSksdFtlXT1ufSksTGwoUmwpKSxhbD11bygoZnVuY3Rpb24odCxlLG4pe251bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nJiYoZT1CdC5jYWxsKGUpKSxPdC5jYWxsKHQsZSk/dFtlXS5wdXNoKG4pOnRbZV09W25dfSksSW8pLHNsPXZyKFFpKTtmdW5jdGlvbiBsbCh0KXtyZXR1cm4geXModCk/Wm4odCk6b3IodCl9ZnVuY3Rpb24gY2wodCl7cmV0dXJuIHlzKHQpP1puKHQsITApOmFyKHQpfXZhciB1bD1lbygoZnVuY3Rpb24odCxlLG4pe2hyKHQsZSxuKX0pKSxobD1lbygoZnVuY3Rpb24odCxlLG4saSl7aHIodCxlLG4saSl9KSksZGw9VG8oKGZ1bmN0aW9uKHQsZSl7dmFyIG49e307aWYobnVsbD09dClyZXR1cm4gbjt2YXIgaT0hMTtlPUllKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlPVVyKGUsdCksaXx8KGk9ZS5sZW5ndGg+MSksZX0pKSxRcih0LEFvKHQpLG4pLGkmJihuPWNpKG4sNyxNbykpO2Zvcih2YXIgcj1lLmxlbmd0aDtyLS07KVJyKG4sZVtyXSk7cmV0dXJuIG59KSkscGw9VG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/e306KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnIodCxlLChmdW5jdGlvbihlLG4pe3JldHVybiBybCh0LG4pfSkpfSkodCxlKX0pKTtmdW5jdGlvbiBmbCh0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG49SWUoQW8odCksKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pKTtyZXR1cm4gZT1JbyhlKSxmcih0LG4sKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodCxuWzBdKX0pKX12YXIgbWw9Ym8obGwpLGdsPWJvKGNsKTtmdW5jdGlvbiBfbCh0KXtyZXR1cm4gbnVsbD09dD9bXTpaZSh0LGxsKHQpKX12YXIgeWw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZT1lLnRvTG93ZXJDYXNlKCksdCsobj92bChlKTplKX0pKTtmdW5jdGlvbiB2bCh0KXtyZXR1cm4gQ2woJHModCkudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gYmwodCl7cmV0dXJuKHQ9JHModCkpJiZ0LnJlcGxhY2UoX3Qsbm4pLnJlcGxhY2UoJHQsIiIpfXZhciB4bD1vbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyItIjoiIikrZS50b0xvd2VyQ2FzZSgpfSkpLHdsPW9vKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/IiAiOiIiKStlLnRvTG93ZXJDYXNlKCl9KSksU2w9cm8oInRvTG93ZXJDYXNlIiksTWw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iXyI6IiIpK2UudG9Mb3dlckNhc2UoKX0pKSxFbD1vbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyIgIjoiIikrQ2woZSl9KSksVGw9b28oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iICI6IiIpK2UudG9VcHBlckNhc2UoKX0pKSxDbD1ybygidG9VcHBlckNhc2UiKTtmdW5jdGlvbiBBbChlLG4saSl7cmV0dXJuIGU9JHMoZSksKG49aT90Om4pPT09dD8oZnVuY3Rpb24gcih0KXtyZXR1cm4gUXQudGVzdCh0KX0pKGUpPyhmdW5jdGlvbiBvKHQpe3JldHVybiB0Lm1hdGNoKFp0KXx8W119KShlKTooZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC5tYXRjaChzdCl8fFtdfSkoZSk6ZS5tYXRjaChuKXx8W119dmFyIGtsPXZyKChmdW5jdGlvbihlLG4pe3RyeXtyZXR1cm4geGUoZSx0LG4pfWNhdGNoKHQpe3JldHVybiBTcyh0KT90Om5ldyBNdCh0KX19KSksUGw9VG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1lKGUsKGZ1bmN0aW9uKGUpe2U9bGEoZSksYWkodCxlLHRzKHRbZV0sdCkpfSkpLHR9KSk7ZnVuY3Rpb24gTGwodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBJbD1sbygpLE5sPWxvKCEwKTtmdW5jdGlvbiBSbCh0KXtyZXR1cm4gdH1mdW5jdGlvbiBPbCh0KXtyZXR1cm4gcnIoImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjaSh0LDEpKX12YXIgemw9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBRaShuLHQsZSl9fSkpLERsPXZyKChmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gUWkodCxuLGUpfX0pKTtmdW5jdGlvbiBCbCh0LGUsbil7dmFyIGk9bGwoZSkscj1XaShlLGkpO251bGwhPW58fENzKGUpJiYoci5sZW5ndGh8fCFpLmxlbmd0aCl8fChuPWUsZT10LHQ9dGhpcyxyPVdpKGUsbGwoZSkpKTt2YXIgbz0hKENzKG4pJiYiY2hhaW4iaW4gbiYmIW4uY2hhaW4pLGE9TXModCk7cmV0dXJuIE1lKHIsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbbl07dFtuXT1pLGEmJih0LnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jaGFpbl9fO2lmKG98fGUpe3ZhciBuPXQodGhpcy5fX3dyYXBwZWRfXykscj1uLl9fYWN0aW9uc19fPUpyKHRoaXMuX19hY3Rpb25zX18pO3JldHVybiByLnB1c2goe2Z1bmM6aSxhcmdzOmFyZ3VtZW50cyx0aGlzQXJnOnR9KSxuLl9fY2hhaW5fXz1lLG59cmV0dXJuIGkuYXBwbHkodCxOZShbdGhpcy52YWx1ZSgpXSxhcmd1bWVudHMpKX0pfSkpLHR9ZnVuY3Rpb24gSGwoKXt9dmFyIEZsPXBvKEllKSxWbD1wbyhBZSksVWw9cG8oemUpO2Z1bmN0aW9uIGpsKHQpe3JldHVybiBHbyh0KT9HZShsYSh0KSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBxaShlLHQpfX0pKHQpfXZhciBHbD1tbygpLFdsPW1vKCEwKTtmdW5jdGlvbiBxbCgpe3JldHVybltdfWZ1bmN0aW9uIFlsKCl7cmV0dXJuITF9dmFyIFhsLCRsPWhvKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKSxLbD15bygiY2VpbCIpLFpsPWhvKChmdW5jdGlvbih0LGUpe3JldHVybiB0L2V9KSwxKSxKbD15bygiZmxvb3IiKSxRbD1obygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCplfSksMSksdGM9eW8oInJvdW5kIiksZWM9aG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pLDApO3JldHVybiBWbi5hZnRlcj1mdW5jdGlvbiBuYyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBQdChlKTtyZXR1cm4gdD1Xcyh0KSxmdW5jdGlvbigpe2lmKC0tdDwxKXJldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LFZuLmFyeT1KYSxWbi5hc3NpZ249S3MsVm4uYXNzaWduSW49WnMsVm4uYXNzaWduSW5XaXRoPUpzLFZuLmFzc2lnbldpdGg9UXMsVm4uYXQ9dGwsVm4uYmVmb3JlPVFhLFZuLmJpbmQ9dHMsVm4uYmluZEFsbD1QbCxWbi5iaW5kS2V5PWVzLFZuLmNhc3RBcnJheT1mdW5jdGlvbiBpYygpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gbXModCk/dDpbdF19LFZuLmNoYWluPURhLFZuLmNodW5rPWZ1bmN0aW9uIHJjKGUsbixpKXtuPShpP2pvKGUsbixpKTpuPT09dCk/MTp2bihXcyhuKSwwKTt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXJ8fG48MSlyZXR1cm5bXTtmb3IodmFyIG89MCxhPTAscz13dChTZShyL24pKTtvPHI7KXNbYSsrXT1UcihlLG8sbys9bik7cmV0dXJuIHN9LFZuLmNvbXBhY3Q9ZnVuY3Rpb24gb2ModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9MCxyPVtdOysrZTxuOyl7dmFyIG89dFtlXTtvJiYocltpKytdPW8pfXJldHVybiByfSxWbi5jb25jYXQ9ZnVuY3Rpb24gYWMoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2lmKCF0KXJldHVybltdO2Zvcih2YXIgZT13dCh0LTEpLG49YXJndW1lbnRzWzBdLGk9dDtpLS07KWVbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIE5lKG1zKG4pP0pyKG4pOltuXSxGaShlLDEpKX0sVm4uY29uZD1mdW5jdGlvbiBzYyh0KXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGgsaT1JbygpO3JldHVybiB0PW4/SWUodCwoZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbMV0pdGhyb3cgbmV3IFB0KGUpO3JldHVybltpKHRbMF0pLHRbMV1dfSkpOltdLHZyKChmdW5jdGlvbihlKXtmb3IodmFyIGk9LTE7KytpPG47KXt2YXIgcj10W2ldO2lmKHhlKHJbMF0sdGhpcyxlKSlyZXR1cm4geGUoclsxXSx0aGlzLGUpfX0pKX0sVm4uY29uZm9ybXM9ZnVuY3Rpb24gbGModCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7dmFyIGU9bGwodCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB1aShuLHQsZSl9fSkoY2kodCwxKSl9LFZuLmNvbnN0YW50PUxsLFZuLmNvdW50Qnk9RmEsVm4uY3JlYXRlPWZ1bmN0aW9uIGNjKHQsZSl7dmFyIG49VW4odCk7cmV0dXJuIG51bGw9PWU/bjpvaShuLGUpfSxWbi5jdXJyeT1mdW5jdGlvbiBlKG4saSxyKXt2YXIgbz14byhuLDgsdCx0LHQsdCx0LGk9cj90OmkpO3JldHVybiBvLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsb30sVm4uY3VycnlSaWdodD1mdW5jdGlvbiBlKG4saSxvKXt2YXIgYT14byhuLHIsdCx0LHQsdCx0LGk9bz90OmkpO3JldHVybiBhLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsYX0sVm4uZGVib3VuY2U9bnMsVm4uZGVmYXVsdHM9ZWwsVm4uZGVmYXVsdHNEZWVwPW5sLFZuLmRlZmVyPWlzLFZuLmRlbGF5PXJzLFZuLmRpZmZlcmVuY2U9aGEsVm4uZGlmZmVyZW5jZUJ5PWRhLFZuLmRpZmZlcmVuY2VXaXRoPXBhLFZuLmRyb3A9ZnVuY3Rpb24gdWMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLChuPWl8fG49PT10PzE6V3MobikpPDA/MDpuLHIpOltdfSxWbi5kcm9wUmlnaHQ9ZnVuY3Rpb24gaGMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLDAsKG49ci0obj1pfHxuPT09dD8xOldzKG4pKSk8MD8wOm4pOltdfSxWbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbiBkYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD96cih0LElvKGUsMyksITAsITApOltdfSxWbi5kcm9wV2hpbGU9ZnVuY3Rpb24gcGModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/enIodCxJbyhlLDMpLCEwKTpbXX0sVm4uZmlsbD1mdW5jdGlvbiBmYyhlLG4saSxyKXt2YXIgbz1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIG8/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpJiYoaT0wLHI9byksKGZ1bmN0aW9uIGEoZSxuLGkscil7dmFyIG89ZS5sZW5ndGg7Zm9yKChpPVdzKGkpKTwwJiYoaT0taT5vPzA6bytpKSwocj1yPT09dHx8cj5vP286V3MocikpPDAmJihyKz1vKSxyPWk+cj8wOnFzKHIpO2k8cjspZVtpKytdPW47cmV0dXJuIGV9KShlLG4saSxyKSk6W119LFZuLmZpbHRlcj1mdW5jdGlvbiBtYyh0LGUpe3JldHVybihtcyh0KT9rZTpIaSkodCxJbyhlLDMpKX0sVm4uZmxhdE1hcD1mdW5jdGlvbiBnYyh0LGUpe3JldHVybiBGaShYYSh0LGUpLDEpfSxWbi5mbGF0TWFwRGVlcD1mdW5jdGlvbiBfYyh0LGUpe3JldHVybiBGaShYYSh0LGUpLGMpfSxWbi5mbGF0TWFwRGVwdGg9ZnVuY3Rpb24geWMoZSxuLGkpe3JldHVybiBpPWk9PT10PzE6V3MoaSksRmkoWGEoZSxuKSxpKX0sVm4uZmxhdHRlbj1nYSxWbi5mbGF0dGVuRGVlcD1mdW5jdGlvbiB2Yyh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/RmkodCxjKTpbXX0sVm4uZmxhdHRlbkRlcHRoPWZ1bmN0aW9uIGJjKGUsbil7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP0ZpKGUsbj1uPT09dD8xOldzKG4pKTpbXX0sVm4uZmxpcD1mdW5jdGlvbiB4Yyh0KXtyZXR1cm4geG8odCw1MTIpfSxWbi5mbG93PUlsLFZuLmZsb3dSaWdodD1ObCxWbi5mcm9tUGFpcnM9ZnVuY3Rpb24gd2ModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9e307KytlPG47KXt2YXIgcj10W2VdO2lbclswXV09clsxXX1yZXR1cm4gaX0sVm4uZnVuY3Rpb25zPWZ1bmN0aW9uIFNjKHQpe3JldHVybiBudWxsPT10P1tdOldpKHQsbGwodCkpfSxWbi5mdW5jdGlvbnNJbj1mdW5jdGlvbiBNYyh0KXtyZXR1cm4gbnVsbD09dD9bXTpXaSh0LGNsKHQpKX0sVm4uZ3JvdXBCeT1XYSxWbi5pbml0aWFsPWZ1bmN0aW9uIEVjKHQpe3JldHVybiBudWxsIT10JiZ0Lmxlbmd0aD9Ucih0LDAsLTEpOltdfSxWbi5pbnRlcnNlY3Rpb249eWEsVm4uaW50ZXJzZWN0aW9uQnk9dmEsVm4uaW50ZXJzZWN0aW9uV2l0aD1iYSxWbi5pbnZlcnQ9b2wsVm4uaW52ZXJ0Qnk9YWwsVm4uaW52b2tlTWFwPXFhLFZuLml0ZXJhdGVlPU9sLFZuLmtleUJ5PVlhLFZuLmtleXM9bGwsVm4ua2V5c0luPWNsLFZuLm1hcD1YYSxWbi5tYXBLZXlzPWZ1bmN0aW9uIFRjKHQsZSl7dmFyIG49e307cmV0dXJuIGU9SW8oZSwzKSxqaSh0LChmdW5jdGlvbih0LGkscil7YWkobixlKHQsaSxyKSx0KX0pKSxufSxWbi5tYXBWYWx1ZXM9ZnVuY3Rpb24gQ2ModCxlKXt2YXIgbj17fTtyZXR1cm4gZT1JbyhlLDMpLGppKHQsKGZ1bmN0aW9uKHQsaSxyKXthaShuLGksZSh0LGkscikpfSkpLG59LFZuLm1hdGNoZXM9ZnVuY3Rpb24gQWModCl7cmV0dXJuIGNyKGNpKHQsMSkpfSxWbi5tYXRjaGVzUHJvcGVydHk9ZnVuY3Rpb24ga2ModCxlKXtyZXR1cm4gdXIodCxjaShlLDEpKX0sVm4ubWVtb2l6ZT1vcyxWbi5tZXJnZT11bCxWbi5tZXJnZVdpdGg9aGwsVm4ubWV0aG9kPXpsLFZuLm1ldGhvZE9mPURsLFZuLm1peGluPUJsLFZuLm5lZ2F0ZT1hcyxWbi5udGhBcmc9ZnVuY3Rpb24gUGModCl7cmV0dXJuIHQ9V3ModCksdnIoKGZ1bmN0aW9uKGUpe3JldHVybiBkcihlLHQpfSkpfSxWbi5vbWl0PWRsLFZuLm9taXRCeT1mdW5jdGlvbiBMYyh0LGUpe3JldHVybiBmbCh0LGFzKElvKGUpKSl9LFZuLm9uY2U9ZnVuY3Rpb24gSWModCl7cmV0dXJuIFFhKDIsdCl9LFZuLm9yZGVyQnk9ZnVuY3Rpb24gTmMoZSxuLGkscil7cmV0dXJuIG51bGw9PWU/W106KG1zKG4pfHwobj1udWxsPT1uP1tdOltuXSksbXMoaT1yP3Q6aSl8fChpPW51bGw9PWk/W106W2ldKSxwcihlLG4saSkpfSxWbi5vdmVyPUZsLFZuLm92ZXJBcmdzPXNzLFZuLm92ZXJFdmVyeT1WbCxWbi5vdmVyU29tZT1VbCxWbi5wYXJ0aWFsPWxzLFZuLnBhcnRpYWxSaWdodD1jcyxWbi5wYXJ0aXRpb249JGEsVm4ucGljaz1wbCxWbi5waWNrQnk9ZmwsVm4ucHJvcGVydHk9amwsVm4ucHJvcGVydHlPZj1mdW5jdGlvbiBSYyhlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PWU/dDpxaShlLG4pfX0sVm4ucHVsbD13YSxWbi5wdWxsQWxsPVNhLFZuLnB1bGxBbGxCeT1mdW5jdGlvbiBPYyh0LGUsbil7cmV0dXJuIHQmJnQubGVuZ3RoJiZlJiZlLmxlbmd0aD9tcih0LGUsSW8obiwyKSk6dH0sVm4ucHVsbEFsbFdpdGg9ZnVuY3Rpb24gemMoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aCYmbiYmbi5sZW5ndGg/bXIoZSxuLHQsaSk6ZX0sVm4ucHVsbEF0PU1hLFZuLnJhbmdlPUdsLFZuLnJhbmdlUmlnaHQ9V2wsVm4ucmVhcmc9dXMsVm4ucmVqZWN0PWZ1bmN0aW9uIERjKHQsZSl7cmV0dXJuKG1zKHQpP2tlOkhpKSh0LGFzKElvKGUsMykpKX0sVm4ucmVtb3ZlPWZ1bmN0aW9uIEJjKHQsZSl7dmFyIG49W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gbjt2YXIgaT0tMSxyPVtdLG89dC5sZW5ndGg7Zm9yKGU9SW8oZSwzKTsrK2k8bzspe3ZhciBhPXRbaV07ZShhLGksdCkmJihuLnB1c2goYSksci5wdXNoKGkpKX1yZXR1cm4gZ3IodCxyKSxufSxWbi5yZXN0PWZ1bmN0aW9uIEhjKG4saSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFB0KGUpO3JldHVybiB2cihuLGk9aT09PXQ/aTpXcyhpKSl9LFZuLnJldmVyc2U9RWEsVm4uc2FtcGxlU2l6ZT1mdW5jdGlvbiBGYyhlLG4saSl7cmV0dXJuIG49KGk/am8oZSxuLGkpOm49PT10KT8xOldzKG4pLChtcyhlKT9Rbjp4cikoZSxuKX0sVm4uc2V0PWZ1bmN0aW9uIFZjKHQsZSxuKXtyZXR1cm4gbnVsbD09dD90OndyKHQsZSxuKX0sVm4uc2V0V2l0aD1mdW5jdGlvbiBVYyhlLG4saSxyKXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOnQsbnVsbD09ZT9lOndyKGUsbixpLHIpfSxWbi5zaHVmZmxlPWZ1bmN0aW9uIGpjKHQpe3JldHVybihtcyh0KT90aTpFcikodCl9LFZuLnNsaWNlPWZ1bmN0aW9uIEdjKGUsbixpKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpPyhuPTAsaT1yKToobj1udWxsPT1uPzA6V3MobiksaT1pPT09dD9yOldzKGkpKSxUcihlLG4saSkpOltdfSxWbi5zb3J0Qnk9S2EsVm4uc29ydGVkVW5pcT1mdW5jdGlvbiBXYyh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/UHIodCk6W119LFZuLnNvcnRlZFVuaXFCeT1mdW5jdGlvbiBxYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Qcih0LElvKGUsMikpOltdfSxWbi5zcGxpdD1mdW5jdGlvbiBZYyhlLG4saSl7cmV0dXJuIGkmJiJudW1iZXIiIT10eXBlb2YgaSYmam8oZSxuLGkpJiYobj1pPXQpLChpPWk9PT10P2Q6aT4+PjApPyhlPSRzKGUpKSYmKCJzdHJpbmciPT10eXBlb2Ygbnx8bnVsbCE9biYmIU5zKG4pKSYmIShuPUlyKG4pKSYmYW4oZSk/R3IocG4oZSksMCxpKTplLnNwbGl0KG4saSk6W119LFZuLnNwcmVhZD1mdW5jdGlvbiBYYyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBQdChlKTtyZXR1cm4gbj1udWxsPT1uPzA6dm4oV3MobiksMCksdnIoKGZ1bmN0aW9uKGUpe3ZhciBpPWVbbl0scj1HcihlLDAsbik7cmV0dXJuIGkmJk5lKHIsaSkseGUodCx0aGlzLHIpfSkpfSxWbi50YWlsPWZ1bmN0aW9uICRjKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT9Ucih0LDEsZSk6W119LFZuLnRha2U9ZnVuY3Rpb24gS2MoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aD9UcihlLDAsKG49aXx8bj09PXQ/MTpXcyhuKSk8MD8wOm4pOltdfSxWbi50YWtlUmlnaHQ9ZnVuY3Rpb24gWmMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj9UcihlLChuPXItKG49aXx8bj09PXQ/MTpXcyhuKSkpPDA/MDpuLHIpOltdfSxWbi50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbiBKYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD96cih0LElvKGUsMyksITEsITApOltdfSxWbi50YWtlV2hpbGU9ZnVuY3Rpb24gUWModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/enIodCxJbyhlLDMpKTpbXX0sVm4udGFwPWZ1bmN0aW9uIHR1KHQsZSl7cmV0dXJuIGUodCksdH0sVm4udGhyb3R0bGU9ZnVuY3Rpb24gZXUodCxuLGkpe3ZhciByPSEwLG89ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFB0KGUpO3JldHVybiBDcyhpKSYmKHI9ImxlYWRpbmciaW4gaT8hIWkubGVhZGluZzpyLG89InRyYWlsaW5nImluIGk/ISFpLnRyYWlsaW5nOm8pLG5zKHQsbix7bGVhZGluZzpyLG1heFdhaXQ6bix0cmFpbGluZzpvfSl9LFZuLnRocnU9QmEsVm4udG9BcnJheT1qcyxWbi50b1BhaXJzPW1sLFZuLnRvUGFpcnNJbj1nbCxWbi50b1BhdGg9ZnVuY3Rpb24gbnUodCl7cmV0dXJuIG1zKHQpP0llKHQsbGEpOkJzKHQpP1t0XTpKcihhYSgkcyh0KSkpfSxWbi50b1BsYWluT2JqZWN0PVhzLFZuLnRyYW5zZm9ybT1mdW5jdGlvbiBpdSh0LGUsbil7dmFyIGk9bXModCkscj1pfHxicyh0KXx8SHModCk7aWYoZT1JbyhlLDQpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106Q3ModCkmJk1zKG8pP1VuKHF0KHQpKTp7fX1yZXR1cm4ocj9NZTpqaSkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LFZuLnVuYXJ5PWZ1bmN0aW9uIHJ1KHQpe3JldHVybiBKYSh0LDEpfSxWbi51bmlvbj1UYSxWbi51bmlvbkJ5PUNhLFZuLnVuaW9uV2l0aD1BYSxWbi51bmlxPWZ1bmN0aW9uIG91KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9Ocih0KTpbXX0sVm4udW5pcUJ5PWZ1bmN0aW9uIGF1KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP05yKHQsSW8oZSwyKSk6W119LFZuLnVuaXFXaXRoPWZ1bmN0aW9uIHN1KGUsbil7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0LGUmJmUubGVuZ3RoP05yKGUsdCxuKTpbXX0sVm4udW5zZXQ9ZnVuY3Rpb24gbHUodCxlKXtyZXR1cm4gbnVsbD09dHx8UnIodCxlKX0sVm4udW56aXA9a2EsVm4udW56aXBXaXRoPVBhLFZuLnVwZGF0ZT1mdW5jdGlvbiBjdSh0LGUsbil7cmV0dXJuIG51bGw9PXQ/dDpPcih0LGUsVnIobikpfSxWbi51cGRhdGVXaXRoPWZ1bmN0aW9uIHV1KGUsbixpLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6dCxudWxsPT1lP2U6T3IoZSxuLFZyKGkpLHIpfSxWbi52YWx1ZXM9X2wsVm4udmFsdWVzSW49ZnVuY3Rpb24gaHUodCl7cmV0dXJuIG51bGw9PXQ/W106WmUodCxjbCh0KSl9LFZuLndpdGhvdXQ9TGEsVm4ud29yZHM9QWwsVm4ud3JhcD1mdW5jdGlvbiBkdSh0LGUpe3JldHVybiBscyhWcihlKSx0KX0sVm4ueG9yPUlhLFZuLnhvckJ5PU5hLFZuLnhvcldpdGg9UmEsVm4uemlwPU9hLFZuLnppcE9iamVjdD1mdW5jdGlvbiBwdSh0LGUpe3JldHVybiBIcih0fHxbXSxlfHxbXSxuaSl9LFZuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24gZnUodCxlKXtyZXR1cm4gSHIodHx8W10sZXx8W10sd3IpfSxWbi56aXBXaXRoPXphLFZuLmVudHJpZXM9bWwsVm4uZW50cmllc0luPWdsLFZuLmV4dGVuZD1acyxWbi5leHRlbmRXaXRoPUpzLEJsKFZuLFZuKSxWbi5hZGQ9JGwsVm4uYXR0ZW1wdD1rbCxWbi5jYW1lbENhc2U9eWwsVm4uY2FwaXRhbGl6ZT12bCxWbi5jZWlsPUtsLFZuLmNsYW1wPWZ1bmN0aW9uIG11KGUsbixpKXtyZXR1cm4gaT09PXQmJihpPW4sbj10KSxpIT09dCYmKGk9KGk9WXMoaSkpPT1pP2k6MCksbiE9PXQmJihuPShuPVlzKG4pKT09bj9uOjApLGxpKFlzKGUpLG4saSl9LFZuLmNsb25lPWZ1bmN0aW9uIGd1KHQpe3JldHVybiBjaSh0LDQpfSxWbi5jbG9uZURlZXA9ZnVuY3Rpb24gX3UodCl7cmV0dXJuIGNpKHQsNSl9LFZuLmNsb25lRGVlcFdpdGg9ZnVuY3Rpb24geXUoZSxuKXtyZXR1cm4gY2koZSw1LG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0KX0sVm4uY2xvbmVXaXRoPWZ1bmN0aW9uIHZ1KGUsbil7cmV0dXJuIGNpKGUsNCxuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCl9LFZuLmNvbmZvcm1zVG89ZnVuY3Rpb24gYnUodCxlKXtyZXR1cm4gbnVsbD09ZXx8dWkodCxlLGxsKGUpKX0sVm4uZGVidXJyPWJsLFZuLmRlZmF1bHRUbz1mdW5jdGlvbiB4dSh0LGUpe3JldHVybiBudWxsPT10fHx0IT10P2U6dH0sVm4uZGl2aWRlPVpsLFZuLmVuZHNXaXRoPWZ1bmN0aW9uIHd1KGUsbixpKXtlPSRzKGUpLG49SXIobik7dmFyIHI9ZS5sZW5ndGgsbz1pPWk9PT10P3I6bGkoV3MoaSksMCxyKTtyZXR1cm4oaS09bi5sZW5ndGgpPj0wJiZlLnNsaWNlKGksbyk9PW59LFZuLmVxPWhzLFZuLmVzY2FwZT1mdW5jdGlvbiBTdSh0KXtyZXR1cm4odD0kcyh0KSkmJlkudGVzdCh0KT90LnJlcGxhY2UoVyxybik6dH0sVm4uZXNjYXBlUmVnRXhwPWZ1bmN0aW9uIE11KHQpe3JldHVybih0PSRzKHQpKSYmZXQudGVzdCh0KT90LnJlcGxhY2UodHQsIlxcJCYiKTp0fSxWbi5ldmVyeT1mdW5jdGlvbiBFdShlLG4saSl7dmFyIHI9bXMoZSk/QWU6RGk7cmV0dXJuIGkmJmpvKGUsbixpKSYmKG49dCkscihlLElvKG4sMykpfSxWbi5maW5kPVZhLFZuLmZpbmRJbmRleD1mYSxWbi5maW5kS2V5PWZ1bmN0aW9uIFR1KHQsZSl7cmV0dXJuIEJlKHQsSW8oZSwzKSxqaSl9LFZuLmZpbmRMYXN0PVVhLFZuLmZpbmRMYXN0SW5kZXg9bWEsVm4uZmluZExhc3RLZXk9ZnVuY3Rpb24gQ3UodCxlKXtyZXR1cm4gQmUodCxJbyhlLDMpLEdpKX0sVm4uZmxvb3I9SmwsVm4uZm9yRWFjaD1qYSxWbi5mb3JFYWNoUmlnaHQ9R2EsVm4uZm9ySW49ZnVuY3Rpb24gQXUodCxlKXtyZXR1cm4gbnVsbD09dD90OlZpKHQsSW8oZSwzKSxjbCl9LFZuLmZvckluUmlnaHQ9ZnVuY3Rpb24ga3UodCxlKXtyZXR1cm4gbnVsbD09dD90OlVpKHQsSW8oZSwzKSxjbCl9LFZuLmZvck93bj1mdW5jdGlvbiBQdSh0LGUpe3JldHVybiB0JiZqaSh0LElvKGUsMykpfSxWbi5mb3JPd25SaWdodD1mdW5jdGlvbiBMdSh0LGUpe3JldHVybiB0JiZHaSh0LElvKGUsMykpfSxWbi5nZXQ9aWwsVm4uZ3Q9ZHMsVm4uZ3RlPXBzLFZuLmhhcz1mdW5jdGlvbiBJdSh0LGUpe3JldHVybiBudWxsIT10JiZIbyh0LGUsS2kpfSxWbi5oYXNJbj1ybCxWbi5oZWFkPV9hLFZuLmlkZW50aXR5PVJsLFZuLmluY2x1ZGVzPWZ1bmN0aW9uIE51KHQsZSxuLGkpe3Q9eXModCk/dDpfbCh0KSxuPW4mJiFpP1dzKG4pOjA7dmFyIHI9dC5sZW5ndGg7cmV0dXJuIG48MCYmKG49dm4ocituLDApKSxEcyh0KT9uPD1yJiZ0LmluZGV4T2YoZSxuKT4tMTohIXImJkZlKHQsZSxuKT4tMX0sVm4uaW5kZXhPZj1mdW5jdGlvbiBSdSh0LGUsbil7dmFyIGk9bnVsbD09dD8wOnQubGVuZ3RoO2lmKCFpKXJldHVybi0xO3ZhciByPW51bGw9PW4/MDpXcyhuKTtyZXR1cm4gcjwwJiYocj12bihpK3IsMCkpLEZlKHQsZSxyKX0sVm4uaW5SYW5nZT1mdW5jdGlvbiBPdShlLG4saSl7cmV0dXJuIG49R3MobiksaT09PXQ/KGk9bixuPTApOmk9R3MoaSksKGZ1bmN0aW9uIHIodCxlLG4pe3JldHVybiB0Pj1ibihlLG4pJiZ0PHZuKGUsbil9KShlPVlzKGUpLG4saSl9LFZuLmludm9rZT1zbCxWbi5pc0FyZ3VtZW50cz1mcyxWbi5pc0FycmF5PW1zLFZuLmlzQXJyYXlCdWZmZXI9Z3MsVm4uaXNBcnJheUxpa2U9eXMsVm4uaXNBcnJheUxpa2VPYmplY3Q9dnMsVm4uaXNCb29sZWFuPWZ1bmN0aW9uIHp1KHQpe3JldHVybiEwPT09dHx8ITE9PT10fHxBcyh0KSYmWGkodCk9PWd9LFZuLmlzQnVmZmVyPWJzLFZuLmlzRGF0ZT14cyxWbi5pc0VsZW1lbnQ9ZnVuY3Rpb24gRHUodCl7cmV0dXJuIEFzKHQpJiYxPT09dC5ub2RlVHlwZSYmIUlzKHQpfSxWbi5pc0VtcHR5PWZ1bmN0aW9uIEJ1KHQpe2lmKG51bGw9PXQpcmV0dXJuITA7aWYoeXModCkmJihtcyh0KXx8InN0cmluZyI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdC5zcGxpY2V8fGJzKHQpfHxIcyh0KXx8ZnModCkpKXJldHVybiF0Lmxlbmd0aDt2YXIgZT1Cbyh0KTtpZihlPT14fHxlPT1UKXJldHVybiF0LnNpemU7aWYoWW8odCkpcmV0dXJuIW9yKHQpLmxlbmd0aDtmb3IodmFyIG4gaW4gdClpZihPdC5jYWxsKHQsbikpcmV0dXJuITE7cmV0dXJuITB9LFZuLmlzRXF1YWw9ZnVuY3Rpb24gSHUodCxlKXtyZXR1cm4gZXIodCxlKX0sVm4uaXNFcXVhbFdpdGg9ZnVuY3Rpb24gRnUoZSxuLGkpe3ZhciByPShpPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6dCk/aShlLG4pOnQ7cmV0dXJuIHI9PT10P2VyKGUsbix0LGkpOiEhcn0sVm4uaXNFcnJvcj1TcyxWbi5pc0Zpbml0ZT1mdW5jdGlvbiBWdSh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJldlKHQpfSxWbi5pc0Z1bmN0aW9uPU1zLFZuLmlzSW50ZWdlcj1FcyxWbi5pc0xlbmd0aD1UcyxWbi5pc01hcD1rcyxWbi5pc01hdGNoPWZ1bmN0aW9uIFV1KHQsZSl7cmV0dXJuIHQ9PT1lfHxucih0LGUsUm8oZSkpfSxWbi5pc01hdGNoV2l0aD1mdW5jdGlvbiBqdShlLG4saSl7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/aTp0LG5yKGUsbixSbyhuKSxpKX0sVm4uaXNOYU49ZnVuY3Rpb24gR3UodCl7cmV0dXJuIExzKHQpJiZ0IT0rdH0sVm4uaXNOYXRpdmU9ZnVuY3Rpb24gV3UodCl7aWYocW8odCkpdGhyb3cgbmV3IE10KCJVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4iKTtyZXR1cm4gaXIodCl9LFZuLmlzTmlsPWZ1bmN0aW9uIHF1KHQpe3JldHVybiBudWxsPT10fSxWbi5pc051bGw9ZnVuY3Rpb24gWXUodCl7cmV0dXJuIG51bGw9PT10fSxWbi5pc051bWJlcj1McyxWbi5pc09iamVjdD1DcyxWbi5pc09iamVjdExpa2U9QXMsVm4uaXNQbGFpbk9iamVjdD1JcyxWbi5pc1JlZ0V4cD1OcyxWbi5pc1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIFh1KHQpe3JldHVybiBFcyh0KSYmdD49LTkwMDcxOTkyNTQ3NDA5OTEmJnQ8PXV9LFZuLmlzU2V0PU9zLFZuLmlzU3RyaW5nPURzLFZuLmlzU3ltYm9sPUJzLFZuLmlzVHlwZWRBcnJheT1IcyxWbi5pc1VuZGVmaW5lZD1mdW5jdGlvbiAkdShlKXtyZXR1cm4gZT09PXR9LFZuLmlzV2Vha01hcD1mdW5jdGlvbiBLdSh0KXtyZXR1cm4gQXModCkmJkJvKHQpPT1rfSxWbi5pc1dlYWtTZXQ9ZnVuY3Rpb24gWnUodCl7cmV0dXJuIEFzKHQpJiYiW29iamVjdCBXZWFrU2V0XSI9PVhpKHQpfSxWbi5qb2luPWZ1bmN0aW9uIEp1KHQsZSl7cmV0dXJuIG51bGw9PXQ/IiI6X24uY2FsbCh0LGUpfSxWbi5rZWJhYkNhc2U9eGwsVm4ubGFzdD14YSxWbi5sYXN0SW5kZXhPZj1mdW5jdGlvbiBRdShlLG4saSl7dmFyIHI9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKCFyKXJldHVybi0xO3ZhciBvPXI7cmV0dXJuIGkhPT10JiYobz0obz1XcyhpKSk8MD92bihyK28sMCk6Ym4obyxyLTEpKSxuPT1uPyhmdW5jdGlvbiBhKHQsZSxuKXtmb3IodmFyIGk9bisxO2ktLTspaWYodFtpXT09PWUpcmV0dXJuIGk7cmV0dXJuIGl9KShlLG4sbyk6SGUoZSxVZSxvLCEwKX0sVm4ubG93ZXJDYXNlPXdsLFZuLmxvd2VyRmlyc3Q9U2wsVm4ubHQ9VnMsVm4ubHRlPVVzLFZuLm1heD1mdW5jdGlvbiB0aChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxSbCwkaSk6dH0sVm4ubWF4Qnk9ZnVuY3Rpb24gZWgoZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxJbyhuLDIpLCRpKTp0fSxWbi5tZWFuPWZ1bmN0aW9uIG5oKHQpe3JldHVybiBqZSh0LFJsKX0sVm4ubWVhbkJ5PWZ1bmN0aW9uIGloKHQsZSl7cmV0dXJuIGplKHQsSW8oZSwyKSl9LFZuLm1pbj1mdW5jdGlvbiByaChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxSbCxzcik6dH0sVm4ubWluQnk9ZnVuY3Rpb24gb2goZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/QmkoZSxJbyhuLDIpLHNyKTp0fSxWbi5zdHViQXJyYXk9cWwsVm4uc3R1YkZhbHNlPVlsLFZuLnN0dWJPYmplY3Q9ZnVuY3Rpb24gYWgoKXtyZXR1cm57fX0sVm4uc3R1YlN0cmluZz1mdW5jdGlvbiBzaCgpe3JldHVybiIifSxWbi5zdHViVHJ1ZT1mdW5jdGlvbiBsaCgpe3JldHVybiEwfSxWbi5tdWx0aXBseT1RbCxWbi5udGg9ZnVuY3Rpb24gY2goZSxuKXtyZXR1cm4gZSYmZS5sZW5ndGg/ZHIoZSxXcyhuKSk6dH0sVm4ubm9Db25mbGljdD1mdW5jdGlvbiB1aCgpe3JldHVybiBjZS5fPT09dGhpcyYmKGNlLl89RnQpLHRoaXN9LFZuLm5vb3A9SGwsVm4ubm93PVphLFZuLnBhZD1mdW5jdGlvbiBoaCh0LGUsbil7dD0kcyh0KTt2YXIgaT0oZT1XcyhlKSk/ZG4odCk6MDtpZighZXx8aT49ZSlyZXR1cm4gdDt2YXIgcj0oZS1pKS8yO3JldHVybiBmbyhFZShyKSxuKSt0K2ZvKFNlKHIpLG4pfSxWbi5wYWRFbmQ9ZnVuY3Rpb24gZGgodCxlLG4pe3Q9JHModCk7dmFyIGk9KGU9V3MoZSkpP2RuKHQpOjA7cmV0dXJuIGUmJmk8ZT90K2ZvKGUtaSxuKTp0fSxWbi5wYWRTdGFydD1mdW5jdGlvbiBwaCh0LGUsbil7dD0kcyh0KTt2YXIgaT0oZT1XcyhlKSk/ZG4odCk6MDtyZXR1cm4gZSYmaTxlP2ZvKGUtaSxuKSt0OnR9LFZuLnBhcnNlSW50PWZ1bmN0aW9uIGZoKHQsZSxuKXtyZXR1cm4gbnx8bnVsbD09ZT9lPTA6ZSYmKGU9K2UpLHduKCRzKHQpLnJlcGxhY2UobnQsIiIpLGV8fDApfSxWbi5yYW5kb209ZnVuY3Rpb24gbWgoZSxuLGkpe2lmKGkmJiJib29sZWFuIiE9dHlwZW9mIGkmJmpvKGUsbixpKSYmKG49aT10KSxpPT09dCYmKCJib29sZWFuIj09dHlwZW9mIG4/KGk9bixuPXQpOiJib29sZWFuIj09dHlwZW9mIGUmJihpPWUsZT10KSksZT09PXQmJm49PT10PyhlPTAsbj0xKTooZT1HcyhlKSxuPT09dD8obj1lLGU9MCk6bj1HcyhuKSksZT5uKXt2YXIgcj1lO2U9bixuPXJ9aWYoaXx8ZSUxfHxuJTEpe3ZhciBvPVNuKCk7cmV0dXJuIGJuKGUrbyoobi1lK29lKCIxZS0iKygobysiIikubGVuZ3RoLTEpKSksbil9cmV0dXJuIF9yKGUsbil9LFZuLnJlZHVjZT1mdW5jdGlvbiBnaCh0LGUsbil7dmFyIGk9bXModCk/UmU6cWUscj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGkodCxJbyhlLDQpLG4scixPaSl9LFZuLnJlZHVjZVJpZ2h0PWZ1bmN0aW9uIF9oKHQsZSxuKXt2YXIgaT1tcyh0KT9PZTpxZSxyPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gaSh0LElvKGUsNCksbixyLHppKX0sVm4ucmVwZWF0PWZ1bmN0aW9uIHloKGUsbixpKXtyZXR1cm4gbj0oaT9qbyhlLG4saSk6bj09PXQpPzE6V3MobikseXIoJHMoZSksbil9LFZuLnJlcGxhY2U9ZnVuY3Rpb24gdmgoKXt2YXIgdD1hcmd1bWVudHMsZT0kcyh0WzBdKTtyZXR1cm4gdC5sZW5ndGg8Mz9lOmUucmVwbGFjZSh0WzFdLHRbMl0pfSxWbi5yZXN1bHQ9ZnVuY3Rpb24gYmgoZSxuLGkpe3ZhciByPS0xLG89KG49VXIobixlKSkubGVuZ3RoO2ZvcihvfHwobz0xLGU9dCk7KytyPG87KXt2YXIgYT1udWxsPT1lP3Q6ZVtsYShuW3JdKV07YT09PXQmJihyPW8sYT1pKSxlPU1zKGEpP2EuY2FsbChlKTphfXJldHVybiBlfSxWbi5yb3VuZD10YyxWbi5ydW5JbkNvbnRleHQ9aXQsVm4uc2FtcGxlPWZ1bmN0aW9uIHhoKHQpe3JldHVybihtcyh0KT9KbjpicikodCl9LFZuLnNpemU9ZnVuY3Rpb24gd2godCl7aWYobnVsbD09dClyZXR1cm4gMDtpZih5cyh0KSlyZXR1cm4gRHModCk/ZG4odCk6dC5sZW5ndGg7dmFyIGU9Qm8odCk7cmV0dXJuIGU9PXh8fGU9PVQ/dC5zaXplOm9yKHQpLmxlbmd0aH0sVm4uc25ha2VDYXNlPU1sLFZuLnNvbWU9ZnVuY3Rpb24gU2goZSxuLGkpe3ZhciByPW1zKGUpP3plOkNyO3JldHVybiBpJiZqbyhlLG4saSkmJihuPXQpLHIoZSxJbyhuLDMpKX0sVm4uc29ydGVkSW5kZXg9ZnVuY3Rpb24gTWgodCxlKXtyZXR1cm4gQXIodCxlKX0sVm4uc29ydGVkSW5kZXhCeT1mdW5jdGlvbiBFaCh0LGUsbil7cmV0dXJuIGtyKHQsZSxJbyhuLDIpKX0sVm4uc29ydGVkSW5kZXhPZj1mdW5jdGlvbiBUaCh0LGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZihuKXt2YXIgaT1Bcih0LGUpO2lmKGk8biYmaHModFtpXSxlKSlyZXR1cm4gaX1yZXR1cm4tMX0sVm4uc29ydGVkTGFzdEluZGV4PWZ1bmN0aW9uIENoKHQsZSl7cmV0dXJuIEFyKHQsZSwhMCl9LFZuLnNvcnRlZExhc3RJbmRleEJ5PWZ1bmN0aW9uIEFoKHQsZSxuKXtyZXR1cm4ga3IodCxlLElvKG4sMiksITApfSxWbi5zb3J0ZWRMYXN0SW5kZXhPZj1mdW5jdGlvbiBraCh0LGUpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXt2YXIgbj1Bcih0LGUsITApLTE7aWYoaHModFtuXSxlKSlyZXR1cm4gbn1yZXR1cm4tMX0sVm4uc3RhcnRDYXNlPUVsLFZuLnN0YXJ0c1dpdGg9ZnVuY3Rpb24gUGgodCxlLG4pe3JldHVybiB0PSRzKHQpLG49bnVsbD09bj8wOmxpKFdzKG4pLDAsdC5sZW5ndGgpLGU9SXIoZSksdC5zbGljZShuLG4rZS5sZW5ndGgpPT1lfSxWbi5zdWJ0cmFjdD1lYyxWbi5zdW09ZnVuY3Rpb24gTGgodCl7cmV0dXJuIHQmJnQubGVuZ3RoP1llKHQsUmwpOjB9LFZuLnN1bUJ5PWZ1bmN0aW9uIEloKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP1llKHQsSW8oZSwyKSk6MH0sVm4udGVtcGxhdGU9ZnVuY3Rpb24gTmgoZSxuLGkpe3ZhciByPVZuLnRlbXBsYXRlU2V0dGluZ3M7aSYmam8oZSxuLGkpJiYobj10KSxlPSRzKGUpLG49SnMoe30sbixyLHdvKTt2YXIgbyxhLHM9SnMoe30sbi5pbXBvcnRzLHIuaW1wb3J0cyx3byksbD1sbChzKSxjPVplKHMsbCksdT0wLGg9bi5pbnRlcnBvbGF0ZXx8eXQsZD0iX19wICs9ICciLHA9QXQoKG4uZXNjYXBlfHx5dCkuc291cmNlKyJ8IitoLnNvdXJjZSsifCIrKGg9PT1LP3V0Onl0KS5zb3VyY2UrInwiKyhuLmV2YWx1YXRlfHx5dCkuc291cmNlKyJ8JCIsImciKSxmPSIvLyMgc291cmNlVVJMPSIrKE90LmNhbGwobiwic291cmNlVVJMIik/KG4uc291cmNlVVJMKyIiKS5yZXBsYWNlKC9ccy9nLCIgIik6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKytlZSsiXSIpKyJcbiI7ZS5yZXBsYWNlKHAsKGZ1bmN0aW9uKHQsbixpLHIscyxsKXtyZXR1cm4gaXx8KGk9ciksZCs9ZS5zbGljZSh1LGwpLnJlcGxhY2UodnQsb24pLG4mJihvPSEwLGQrPSInICtcbl9fZSgiK24rIikgK1xuJyIpLHMmJihhPSEwLGQrPSInO1xuIitzKyI7XG5fX3AgKz0gJyIpLGkmJihkKz0iJyArXG4oKF9fdCA9ICgiK2krIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xuJyIpLHU9bCt0Lmxlbmd0aCx0fSkpLGQrPSInO1xuIjt2YXIgbT1PdC5jYWxsKG4sInZhcmlhYmxlIikmJm4udmFyaWFibGU7aWYobSl7aWYobHQudGVzdChtKSl0aHJvdyBuZXcgTXQoIkludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgIil9ZWxzZSBkPSJ3aXRoIChvYmopIHtcbiIrZCsiXG59XG4iO2Q9KGE/ZC5yZXBsYWNlKFYsIiIpOmQpLnJlcGxhY2UoVSwiJDEiKS5yZXBsYWNlKGosIiQxOyIpLGQ9ImZ1bmN0aW9uKCIrKG18fCJvYmoiKSsiKSB7XG4iKyhtPyIiOiJvYmogfHwgKG9iaiA9IHt9KTtcbiIpKyJ2YXIgX190LCBfX3AgPSAnJyIrKG8/IiwgX19lID0gXy5lc2NhcGUiOiIiKSsoYT8iLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxuIjoiO1xuIikrZCsicmV0dXJuIF9fcFxufSI7dmFyIGc9a2woKGZ1bmN0aW9uKCl7cmV0dXJuIEV0KGwsZisicmV0dXJuICIrZCkuYXBwbHkodCxjKX0pKTtpZihnLnNvdXJjZT1kLFNzKGcpKXRocm93IGc7cmV0dXJuIGd9LFZuLnRpbWVzPWZ1bmN0aW9uIFJoKHQsZSl7aWYoKHQ9V3ModCkpPDF8fHQ+dSlyZXR1cm5bXTt2YXIgbj1kLGk9Ym4odCxkKTtlPUlvKGUpLHQtPWQ7Zm9yKHZhciByPVhlKGksZSk7KytuPHQ7KWUobik7cmV0dXJuIHJ9LFZuLnRvRmluaXRlPUdzLFZuLnRvSW50ZWdlcj1XcyxWbi50b0xlbmd0aD1xcyxWbi50b0xvd2VyPWZ1bmN0aW9uIE9oKHQpe3JldHVybiAkcyh0KS50b0xvd2VyQ2FzZSgpfSxWbi50b051bWJlcj1ZcyxWbi50b1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIHpoKHQpe3JldHVybiB0P2xpKFdzKHQpLC05MDA3MTk5MjU0NzQwOTkxLHUpOjA9PT10P3Q6MH0sVm4udG9TdHJpbmc9JHMsVm4udG9VcHBlcj1mdW5jdGlvbiBEaCh0KXtyZXR1cm4gJHModCkudG9VcHBlckNhc2UoKX0sVm4udHJpbT1mdW5jdGlvbiBCaChlLG4saSl7aWYoKGU9JHMoZSkpJiYoaXx8bj09PXQpKXJldHVybiAkZShlKTtpZighZXx8IShuPUlyKG4pKSlyZXR1cm4gZTt2YXIgcj1wbihlKSxvPXBuKG4pO3JldHVybiBHcihyLFFlKHIsbyksdG4ocixvKSsxKS5qb2luKCIiKX0sVm4udHJpbUVuZD1mdW5jdGlvbiBIaChlLG4saSl7aWYoKGU9JHMoZSkpJiYoaXx8bj09PXQpKXJldHVybiBlLnNsaWNlKDAsZm4oZSkrMSk7aWYoIWV8fCEobj1JcihuKSkpcmV0dXJuIGU7dmFyIHI9cG4oZSk7cmV0dXJuIEdyKHIsMCx0bihyLHBuKG4pKSsxKS5qb2luKCIiKX0sVm4udHJpbVN0YXJ0PWZ1bmN0aW9uIEZoKGUsbixpKXtpZigoZT0kcyhlKSkmJihpfHxuPT09dCkpcmV0dXJuIGUucmVwbGFjZShudCwiIik7aWYoIWV8fCEobj1JcihuKSkpcmV0dXJuIGU7dmFyIHI9cG4oZSk7cmV0dXJuIEdyKHIsUWUocixwbihuKSkpLmpvaW4oIiIpfSxWbi50cnVuY2F0ZT1mdW5jdGlvbiBWaChlLG4pe3ZhciBpPTMwLHI9Ii4uLiI7aWYoQ3Mobikpe3ZhciBvPSJzZXBhcmF0b3IiaW4gbj9uLnNlcGFyYXRvcjpvO2k9Imxlbmd0aCJpbiBuP1dzKG4ubGVuZ3RoKTppLHI9Im9taXNzaW9uImluIG4/SXIobi5vbWlzc2lvbik6cn12YXIgYT0oZT0kcyhlKSkubGVuZ3RoO2lmKGFuKGUpKXt2YXIgcz1wbihlKTthPXMubGVuZ3RofWlmKGk+PWEpcmV0dXJuIGU7dmFyIGw9aS1kbihyKTtpZihsPDEpcmV0dXJuIHI7dmFyIGM9cz9HcihzLDAsbCkuam9pbigiIik6ZS5zbGljZSgwLGwpO2lmKG89PT10KXJldHVybiBjK3I7aWYocyYmKGwrPWMubGVuZ3RoLWwpLE5zKG8pKXtpZihlLnNsaWNlKGwpLnNlYXJjaChvKSl7dmFyIHUsaD1jO2ZvcihvLmdsb2JhbHx8KG89QXQoby5zb3VyY2UsJHMoaHQuZXhlYyhvKSkrImciKSksby5sYXN0SW5kZXg9MDt1PW8uZXhlYyhoKTspdmFyIGQ9dS5pbmRleDtjPWMuc2xpY2UoMCxkPT09dD9sOmQpfX1lbHNlIGlmKGUuaW5kZXhPZihJcihvKSxsKSE9bCl7dmFyIHA9Yy5sYXN0SW5kZXhPZihvKTtwPi0xJiYoYz1jLnNsaWNlKDAscCkpfXJldHVybiBjK3J9LFZuLnVuZXNjYXBlPWZ1bmN0aW9uIFVoKHQpe3JldHVybih0PSRzKHQpKSYmcS50ZXN0KHQpP3QucmVwbGFjZShHLG1uKTp0fSxWbi51bmlxdWVJZD1mdW5jdGlvbiBqaCh0KXt2YXIgZT0rK3p0O3JldHVybiAkcyh0KStlfSxWbi51cHBlckNhc2U9VGwsVm4udXBwZXJGaXJzdD1DbCxWbi5lYWNoPWphLFZuLmVhY2hSaWdodD1HYSxWbi5maXJzdD1fYSxCbChWbiwoWGw9e30samkoVm4sKGZ1bmN0aW9uKHQsZSl7T3QuY2FsbChWbi5wcm90b3R5cGUsZSl8fChYbFtlXT10KX0pKSxYbCkse2NoYWluOiExfSksVm4uVkVSU0lPTj0iNC4xNy4yMSIsTWUoWyJiaW5kIiwiYmluZEtleSIsImN1cnJ5IiwiY3VycnlSaWdodCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiXSwoZnVuY3Rpb24odCl7Vm5bdF0ucGxhY2Vob2xkZXI9Vm59KSksTWUoWyJkcm9wIiwidGFrZSJdLChmdW5jdGlvbihlLG4pe1duLnByb3RvdHlwZVtlXT1mdW5jdGlvbihpKXtpPWk9PT10PzE6dm4oV3MoaSksMCk7dmFyIHI9dGhpcy5fX2ZpbHRlcmVkX18mJiFuP25ldyBXbih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHIuX19maWx0ZXJlZF9fP3IuX190YWtlQ291bnRfXz1ibihpLHIuX190YWtlQ291bnRfXyk6ci5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpibihpLGQpLHR5cGU6ZSsoci5fX2Rpcl9fPDA/IlJpZ2h0IjoiIil9KSxyfSxXbi5wcm90b3R5cGVbZSsiUmlnaHQiXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbZV0odCkucmV2ZXJzZSgpfX0pKSxNZShbImZpbHRlciIsIm1hcCIsInRha2VXaGlsZSJdLChmdW5jdGlvbih0LGUpe3ZhciBuPWUrMSxpPTE9PW58fDM9PW47V24ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2xvbmUoKTtyZXR1cm4gZS5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOklvKHQsMyksdHlwZTpufSksZS5fX2ZpbHRlcmVkX189ZS5fX2ZpbHRlcmVkX198fGksZX19KSksTWUoWyJoZWFkIiwibGFzdCJdLChmdW5jdGlvbih0LGUpe3ZhciBuPSJ0YWtlIisoZT8iUmlnaHQiOiIiKTtXbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tuXSgxKS52YWx1ZSgpWzBdfX0pKSxNZShbImluaXRpYWwiLCJ0YWlsIl0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49ImRyb3AiKyhlPyIiOiJSaWdodCIpO1duLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmlsdGVyZWRfXz9uZXcgV24odGhpcyk6dGhpc1tuXSgxKX19KSksV24ucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoUmwpfSxXbi5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXIodCkuaGVhZCgpfSxXbi5wcm90b3R5cGUuZmluZExhc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQodCl9LFduLnByb3RvdHlwZS5pbnZva2VNYXA9dnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/bmV3IFduKHRoaXMpOnRoaXMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gUWkobix0LGUpfSkpfSkpLFduLnByb3RvdHlwZS5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyKGFzKElvKHQpKSl9LFduLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLG4pe2U9V3MoZSk7dmFyIGk9dGhpcztyZXR1cm4gaS5fX2ZpbHRlcmVkX18mJihlPjB8fG48MCk/bmV3IFduKGkpOihlPDA/aT1pLnRha2VSaWdodCgtZSk6ZSYmKGk9aS5kcm9wKGUpKSxuIT09dCYmKGk9KG49V3MobikpPDA/aS5kcm9wUmlnaHQoLW4pOmkudGFrZShuLWUpKSxpKX0sV24ucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJldmVyc2UoKS50YWtlV2hpbGUodCkucmV2ZXJzZSgpfSxXbi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UoZCl9LGppKFduLnByb3RvdHlwZSwoZnVuY3Rpb24oZSxuKXt2YXIgaT0vXig/OmZpbHRlcnxmaW5kfG1hcHxyZWplY3QpfFdoaWxlJC8udGVzdChuKSxyPS9eKD86aGVhZHxsYXN0KSQvLnRlc3Qobiksbz1WbltyPyJ0YWtlIisoImxhc3QiPT1uPyJSaWdodCI6IiIpOm5dLGE9cnx8L15maW5kLy50ZXN0KG4pO28mJihWbi5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fd3JhcHBlZF9fLHM9cj9bMV06YXJndW1lbnRzLGw9biBpbnN0YW5jZW9mIFduLGM9c1swXSx1PWx8fG1zKG4pLGg9ZnVuY3Rpb24odCl7dmFyIGU9by5hcHBseShWbixOZShbdF0scykpO3JldHVybiByJiZkP2VbMF06ZX07dSYmaSYmImZ1bmN0aW9uIj09dHlwZW9mIGMmJjEhPWMubGVuZ3RoJiYobD11PSExKTt2YXIgZD10aGlzLl9fY2hhaW5fXyxwPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsZj1hJiYhZCxtPWwmJiFwO2lmKCFhJiZ1KXtuPW0/bjpuZXcgV24odGhpcyk7dmFyIGc9ZS5hcHBseShuLHMpO3JldHVybiBnLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbaF0sdGhpc0FyZzp0fSksbmV3IEduKGcsZCl9cmV0dXJuIGYmJm0/ZS5hcHBseSh0aGlzLHMpOihnPXRoaXMudGhydShoKSxmP3I/Zy52YWx1ZSgpWzBdOmcudmFsdWUoKTpnKX0pfSkpLE1lKFsicG9wIiwicHVzaCIsInNoaWZ0Iiwic29ydCIsInNwbGljZSIsInVuc2hpZnQiXSwoZnVuY3Rpb24odCl7dmFyIGU9THRbdF0sbj0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QodCk/InRhcCI6InRocnUiLGk9L14oPzpwb3B8c2hpZnQpJC8udGVzdCh0KTtWbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7aWYoaSYmIXRoaXMuX19jaGFpbl9fKXt2YXIgcj10aGlzLnZhbHVlKCk7cmV0dXJuIGUuYXBwbHkobXMocik/cjpbXSx0KX1yZXR1cm4gdGhpc1tuXSgoZnVuY3Rpb24obil7cmV0dXJuIGUuYXBwbHkobXMobik/bjpbXSx0KX0pKX19KSksamkoV24ucHJvdG90eXBlLChmdW5jdGlvbih0LGUpe3ZhciBuPVZuW2VdO2lmKG4pe3ZhciBpPW4ubmFtZSsiIjtPdC5jYWxsKEluLGkpfHwoSW5baV09W10pLEluW2ldLnB1c2goe25hbWU6ZSxmdW5jOm59KX19KSksSW5bY28odCwyKS5uYW1lXT1be25hbWU6IndyYXBwZXIiLGZ1bmM6dH1dLFduLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbiBHaCgpe3ZhciB0PW5ldyBXbih0aGlzLl9fd3JhcHBlZF9fKTtyZXR1cm4gdC5fX2FjdGlvbnNfXz1Kcih0aGlzLl9fYWN0aW9uc19fKSx0Ll9fZGlyX189dGhpcy5fX2Rpcl9fLHQuX19maWx0ZXJlZF9fPXRoaXMuX19maWx0ZXJlZF9fLHQuX19pdGVyYXRlZXNfXz1Kcih0aGlzLl9faXRlcmF0ZWVzX18pLHQuX190YWtlQ291bnRfXz10aGlzLl9fdGFrZUNvdW50X18sdC5fX3ZpZXdzX189SnIodGhpcy5fX3ZpZXdzX18pLHR9LFduLnByb3RvdHlwZS5yZXZlcnNlPWZ1bmN0aW9uIFdoKCl7aWYodGhpcy5fX2ZpbHRlcmVkX18pe3ZhciB0PW5ldyBXbih0aGlzKTt0Ll9fZGlyX189LTEsdC5fX2ZpbHRlcmVkX189ITB9ZWxzZSh0PXRoaXMuY2xvbmUoKSkuX19kaXJfXyo9LTE7cmV0dXJuIHR9LFduLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbiBxaCgpe3ZhciB0PXRoaXMuX193cmFwcGVkX18udmFsdWUoKSxlPXRoaXMuX19kaXJfXyxuPW1zKHQpLGk9ZTwwLHI9bj90Lmxlbmd0aDowLG89KGZ1bmN0aW9uIGEodCxlLG4pe2Zvcih2YXIgaT0tMSxyPW4ubGVuZ3RoOysraTxyOyl7dmFyIG89bltpXSxhPW8uc2l6ZTtzd2l0Y2goby50eXBlKXtjYXNlImRyb3AiOnQrPWE7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOmUtPWE7YnJlYWs7Y2FzZSJ0YWtlIjplPWJuKGUsdCthKTticmVhaztjYXNlInRha2VSaWdodCI6dD12bih0LGUtYSl9fXJldHVybntzdGFydDp0LGVuZDplfX0pKDAscix0aGlzLl9fdmlld3NfXykscz1vLnN0YXJ0LGw9by5lbmQsYz1sLXMsdT1pP2w6cy0xLGg9dGhpcy5fX2l0ZXJhdGVlc19fLGQ9aC5sZW5ndGgscD0wLGY9Ym4oYyx0aGlzLl9fdGFrZUNvdW50X18pO2lmKCFufHwhaSYmcj09YyYmZj09YylyZXR1cm4gRHIodCx0aGlzLl9fYWN0aW9uc19fKTt2YXIgbT1bXTt0OmZvcig7Yy0tJiZwPGY7KXtmb3IodmFyIGc9LTEsXz10W3UrPWVdOysrZzxkOyl7dmFyIHk9aFtnXSx2PXkudHlwZSxiPSgwLHkuaXRlcmF0ZWUpKF8pO2lmKDI9PXYpXz1iO2Vsc2UgaWYoIWIpe2lmKDE9PXYpY29udGludWUgdDticmVhayB0fX1tW3ArK109X31yZXR1cm4gbX0sVm4ucHJvdG90eXBlLmF0PUhhLFZuLnByb3RvdHlwZS5jaGFpbj1mdW5jdGlvbiBZaCgpe3JldHVybiBEYSh0aGlzKX0sVm4ucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbiBYaCgpe3JldHVybiBuZXcgR24odGhpcy52YWx1ZSgpLHRoaXMuX19jaGFpbl9fKX0sVm4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24gJGgoKXt0aGlzLl9fdmFsdWVzX189PT10JiYodGhpcy5fX3ZhbHVlc19fPWpzKHRoaXMudmFsdWUoKSkpO3ZhciBlPXRoaXMuX19pbmRleF9fPj10aGlzLl9fdmFsdWVzX18ubGVuZ3RoO3JldHVybntkb25lOmUsdmFsdWU6ZT90OnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXX19LFZuLnByb3RvdHlwZS5wbGFudD1mdW5jdGlvbiBLaChlKXtmb3IodmFyIG4saT10aGlzO2kgaW5zdGFuY2VvZiBqbjspe3ZhciByPXVhKGkpO3IuX19pbmRleF9fPTAsci5fX3ZhbHVlc19fPXQsbj9vLl9fd3JhcHBlZF9fPXI6bj1yO3ZhciBvPXI7aT1pLl9fd3JhcHBlZF9ffXJldHVybiBvLl9fd3JhcHBlZF9fPWUsbn0sVm4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24gWmgoKXt2YXIgZT10aGlzLl9fd3JhcHBlZF9fO2lmKGUgaW5zdGFuY2VvZiBXbil7dmFyIG49ZTtyZXR1cm4gdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgmJihuPW5ldyBXbih0aGlzKSksKG49bi5yZXZlcnNlKCkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6QmEsYXJnczpbRWFdLHRoaXNBcmc6dH0pLG5ldyBHbihuLHRoaXMuX19jaGFpbl9fKX1yZXR1cm4gdGhpcy50aHJ1KEVhKX0sVm4ucHJvdG90eXBlLnRvSlNPTj1Wbi5wcm90b3R5cGUudmFsdWVPZj1Wbi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24gSmgoKXtyZXR1cm4gRHIodGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKX0sVm4ucHJvdG90eXBlLmZpcnN0PVZuLnByb3RvdHlwZS5oZWFkLHNlJiYoVm4ucHJvdG90eXBlW3NlXT1mdW5jdGlvbiBRaCgpe3JldHVybiB0aGlzfSksVm59KSgpO2hlPygoaGUuZXhwb3J0cz1nbikuXz1nbix1ZS5fPWduKTpjZS5fPWdufS5jYWxsKFNlKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgQWU9ISh3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSk7bGV0IGtlLFBlO2Z1bmN0aW9uIExlKHQpe2tlPSghdHx8IXQuc2hpbWNzc3Byb3BlcnRpZXMpJiYoQWV8fEJvb2xlYW4oIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FwcGxlV2ViS2l0XC82MDF8RWRnZVwvMTUvKSYmd2luZG93LkNTUyYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoImJveC1zaGFkb3ciLCIwIDAgMCB2YXIoLS1mb28pIikpKX13aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCYmKFBlPXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCk7Y29uc3QgSWU9Qm9vbGVhbih3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5kaXNhYmxlUnVudGltZSk7d2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzP2tlPXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M6d2luZG93LlNoYWR5Q1NTPyhMZSh3aW5kb3cuU2hhZHlDU1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOkxlKHdpbmRvdy5XZWJDb21wb25lbnRzJiZ3aW5kb3cuV2ViQ29tcG9uZW50cy5mbGFncyk7Y29uc3QgTmU9a2U7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY2xhc3MgUmV7Y29uc3RydWN0b3IoKXt0aGlzLnN0YXJ0PTAsdGhpcy5lbmQ9MCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnJ1bGVzPW51bGwsdGhpcy5wYXJzZWRDc3NUZXh0PSIiLHRoaXMuY3NzVGV4dD0iIix0aGlzLmF0UnVsZT0hMSx0aGlzLnR5cGU9MCx0aGlzLmtleWZyYW1lc05hbWU9IiIsdGhpcy5zZWxlY3Rvcj0iIix0aGlzLnBhcnNlZFNlbGVjdG9yPSIifX1mdW5jdGlvbiBPZSh0KXtyZXR1cm4gemUoKGZ1bmN0aW9uIG4odCl7bGV0IGU9bmV3IFJlO2Uuc3RhcnQ9MCxlLmVuZD10Lmxlbmd0aDtsZXQgbj1lO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKylpZih0W2ldPT09SGUpe24ucnVsZXN8fChuLnJ1bGVzPVtdKTtsZXQgdD1uLGU9dC5ydWxlc1t0LnJ1bGVzLmxlbmd0aC0xXXx8bnVsbDtuPW5ldyBSZSxuLnN0YXJ0PWkrMSxuLnBhcmVudD10LG4ucHJldmlvdXM9ZSx0LnJ1bGVzLnB1c2gobil9ZWxzZSB0W2ldPT09RmUmJihuLmVuZD1pKzEsbj1uLnBhcmVudHx8ZSk7cmV0dXJuIGV9KSh0PShmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UoVmUuY29tbWVudHMsIiIpLnJlcGxhY2UoVmUucG9ydCwiIil9KSh0KSksdCl9ZnVuY3Rpb24gemUodCxlKXtsZXQgbj1lLnN1YnN0cmluZyh0LnN0YXJ0LHQuZW5kLTEpO2lmKHQucGFyc2VkQ3NzVGV4dD10LmNzc1RleHQ9bi50cmltKCksdC5wYXJlbnQpe249ZS5zdWJzdHJpbmcodC5wcmV2aW91cz90LnByZXZpb3VzLmVuZDp0LnBhcmVudC5zdGFydCx0LnN0YXJ0LTEpLG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVwbGFjZSgvXFwoWzAtOWEtZl17MSw2fSlccy9naSwoZnVuY3Rpb24oKXtsZXQgdD1hcmd1bWVudHNbMV0sZT02LXQubGVuZ3RoO2Zvcig7ZS0tOyl0PSIwIit0O3JldHVybiJcXCIrdH0pKX0pKG4pLG49bi5yZXBsYWNlKFZlLm11bHRpcGxlU3BhY2VzLCIgIiksbj1uLnN1YnN0cmluZyhuLmxhc3RJbmRleE9mKCI7IikrMSk7bGV0IGk9dC5wYXJzZWRTZWxlY3Rvcj10LnNlbGVjdG9yPW4udHJpbSgpO3QuYXRSdWxlPTA9PT1pLmluZGV4T2YoR2UpLHQuYXRSdWxlPzA9PT1pLmluZGV4T2YoamUpP3QudHlwZT1CZS5NRURJQV9SVUxFOmkubWF0Y2goVmUua2V5ZnJhbWVzUnVsZSkmJih0LnR5cGU9QmUuS0VZRlJBTUVTX1JVTEUsdC5rZXlmcmFtZXNOYW1lPXQuc2VsZWN0b3Iuc3BsaXQoVmUubXVsdGlwbGVTcGFjZXMpLnBvcCgpKTp0LnR5cGU9MD09PWkuaW5kZXhPZihVZSk/QmUuTUlYSU5fUlVMRTpCZS5TVFlMRV9SVUxFfWxldCByPXQucnVsZXM7aWYocilmb3IobGV0IHQsbj0wLGk9ci5sZW5ndGg7bjxpJiYodD1yW25dKTtuKyspemUodCxlKTtyZXR1cm4gdH1mdW5jdGlvbiBEZSh0LGUsbj0iIil7bGV0IGk9IiI7aWYodC5jc3NUZXh0fHx0LnJ1bGVzKXtsZXQgbj10LnJ1bGVzO2lmKG4mJiEoZnVuY3Rpb24gcih0KXtsZXQgZT10WzBdO3JldHVybiBCb29sZWFuKGUpJiZCb29sZWFuKGUuc2VsZWN0b3IpJiYwPT09ZS5zZWxlY3Rvci5pbmRleE9mKFVlKX0pKG4pKWZvcihsZXQgdCxyPTAsbz1uLmxlbmd0aDtyPG8mJih0PW5bcl0pO3IrKylpPURlKHQsZSxpKTtlbHNlIGk9ZT90LmNzc1RleHQ6KGZ1bmN0aW9uIG8odCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQucmVwbGFjZShWZS5taXhpbkFwcGx5LCIiKS5yZXBsYWNlKFZlLnZhckFwcGx5LCIiKX0pKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZShWZS5jdXN0b21Qcm9wLCIiKS5yZXBsYWNlKFZlLm1peGluUHJvcCwiIil9KSh0KSl9KSh0LmNzc1RleHQpLGk9aS50cmltKCksaSYmKGk9IiAgIitpKyJcbiIpfXJldHVybiBpJiYodC5zZWxlY3RvciYmKG4rPXQuc2VsZWN0b3IrIiAiK0hlKyJcbiIpLG4rPWksdC5zZWxlY3RvciYmKG4rPUZlKyJcblxuIikpLG59Y29uc3QgQmU9e1NUWUxFX1JVTEU6MSxLRVlGUkFNRVNfUlVMRTo3LE1FRElBX1JVTEU6NCxNSVhJTl9SVUxFOjFlM30sSGU9InsiLEZlPSJ9IixWZT17Y29tbWVudHM6L1wvXCpbXipdKlwqKyhbXi8qXVteKl0qXCorKSpcLy9naW0scG9ydDovQGltcG9ydFteO10qOy9naW0sY3VzdG9tUHJvcDovKD86XlteO1wtXHN9XSspPy0tW147e31dKj86W157fTtdKj8oPzpbO1xuXXwkKS9naW0sbWl4aW5Qcm9wOi8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qP3tbXn1dKj99KD86Wztcbl18JCk/L2dpbSxtaXhpbkFwcGx5Oi9AYXBwbHlccypcKD9bXik7XSpcKT9ccyooPzpbO1xuXXwkKT8vZ2ltLHZhckFwcGx5Oi9bXjs6XSo/OlteO10qP3ZhclwoW147XSpcKSg/Ols7XG5dfCQpPy9naW0sa2V5ZnJhbWVzUnVsZTovXkBbXlxzXSprZXlmcmFtZXMvLG11bHRpcGxlU3BhY2VzOi9ccysvZ30sVWU9Ii0tIixqZT0iQG1lZGlhIixHZT0iQCIsV2U9Lyg/Ol58Wztcc3tdXHMqKSgtLVtcdy1dKj8pXHMqOlxzKig/OigoPzonKD86XFwnfC4pKj8nfCIoPzpcXCJ8LikqPyJ8XChbXildKj9cKXxbXn07e10pKyl8XHsoW159XSopXH0oPzooPz1bO1xzfV0pfCQpKS9naSxxZT0vKD86XnxcVyspQGFwcGx5XHMqXCg/KFteKTtcbl0qKVwpPy9naSxZZT0vQG1lZGlhXHMoLiopLyxYZT1uZXcgU2V0O2Z1bmN0aW9uICRlKHQpe2NvbnN0IGU9dC50ZXh0Q29udGVudDtpZighWGUuaGFzKGUpKXtYZS5hZGQoZSk7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3Quc2V0QXR0cmlidXRlKCJzaGFkeS11bnNjb3BlZCIsIiIpLHQudGV4dENvbnRlbnQ9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHQpfX1mdW5jdGlvbiBLZSh0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInNoYWR5LXVuc2NvcGVkIil9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gdD8oInN0cmluZyI9PXR5cGVvZiB0JiYodD1PZSh0KSksZSYmUWUodCxlKSxEZSh0LE5lKSk6IiJ9ZnVuY3Rpb24gSmUodCl7cmV0dXJuIXQuX19jc3NSdWxlcyYmdC50ZXh0Q29udGVudCYmKHQuX19jc3NSdWxlcz1PZSh0LnRleHRDb250ZW50KSksdC5fX2Nzc1J1bGVzfHxudWxsfWZ1bmN0aW9uIFFlKHQsZSxuLGkpe2lmKCF0KXJldHVybjtsZXQgcj0hMSxvPXQudHlwZTtpZihpJiZvPT09QmUuTUVESUFfUlVMRSl7bGV0IGU9dC5zZWxlY3Rvci5tYXRjaChZZSk7ZSYmKHdpbmRvdy5tYXRjaE1lZGlhKGVbMV0pLm1hdGNoZXN8fChyPSEwKSl9bz09PUJlLlNUWUxFX1JVTEU/ZSh0KTpuJiZvPT09QmUuS0VZRlJBTUVTX1JVTEU/bih0KTpvPT09QmUuTUlYSU5fUlVMRSYmKHI9ITApO2xldCBhPXQucnVsZXM7aWYoYSYmIXIpZm9yKGxldCB0LHI9MCxvPWEubGVuZ3RoO3I8byYmKHQ9YVtyXSk7cisrKVFlKHQsZSxuLGkpfWZ1bmN0aW9uIHRuKHQsZSl7bGV0IG49dC5pbmRleE9mKCJ2YXIoIik7aWYoLTE9PT1uKXJldHVybiBlKHQsIiIsIiIsIiIpO2xldCBpPShmdW5jdGlvbiByKHQsZSl7bGV0IG49MDtmb3IobGV0IGk9ZSxyPXQubGVuZ3RoO2k8cjtpKyspaWYoIigiPT09dFtpXSluKys7ZWxzZSBpZigiKSI9PT10W2ldJiYwPT0tLW4pcmV0dXJuIGk7cmV0dXJuLTF9KSh0LG4rMyksbz10LnN1YnN0cmluZyhuKzQsaSksYT10LnN1YnN0cmluZygwLG4pLHM9dG4odC5zdWJzdHJpbmcoaSsxKSxlKSxsPW8uaW5kZXhPZigiLCIpO3JldHVybi0xPT09bD9lKGEsby50cmltKCksIiIscyk6ZShhLG8uc3Vic3RyaW5nKDAsbCkudHJpbSgpLG8uc3Vic3RyaW5nKGwrMSkudHJpbSgpLHMpfXdpbmRvdy5TaGFkeURPTSYmd2luZG93O2NvbnN0IGVuPSJjc3MtYnVpbGQiO2Z1bmN0aW9uIG5uKHQpe2lmKHZvaWQgMCE9PVBlKXJldHVybiBQZTtpZih2b2lkIDA9PT10Ll9fY3NzQnVpbGQpe2NvbnN0IGU9dC5nZXRBdHRyaWJ1dGUoZW4pO2lmKGUpdC5fX2Nzc0J1aWxkPWU7ZWxzZXtjb25zdCBlPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9InRlbXBsYXRlIj09PXQubG9jYWxOYW1lP3QuY29udGVudC5maXJzdENoaWxkOnQuZmlyc3RDaGlsZDtpZihlIGluc3RhbmNlb2YgQ29tbWVudCl7Y29uc3QgdD1lLnRleHRDb250ZW50LnRyaW0oKS5zcGxpdCgiOiIpO2lmKHRbMF09PT1lbilyZXR1cm4gdFsxXX1yZXR1cm4iIn0pKHQpOyIiIT09ZSYmKGZ1bmN0aW9uIG4odCl7Y29uc3QgZT0idGVtcGxhdGUiPT09dC5sb2NhbE5hbWU/dC5jb250ZW50LmZpcnN0Q2hpbGQ6dC5maXJzdENoaWxkO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8pKHQpLHQuX19jc3NCdWlsZD1lfX1yZXR1cm4gdC5fX2Nzc0J1aWxkfHwiIn1mdW5jdGlvbiBybih0KXtyZXR1cm4iIiE9PW5uKHQpfWZ1bmN0aW9uIG9uKHQsZSl7Zm9yKGxldCBuIGluIGUpbnVsbD09PW4/dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKTp0LnN0eWxlLnNldFByb3BlcnR5KG4sZVtuXSl9ZnVuY3Rpb24gYW4odCxlKXtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoZSk7cmV0dXJuIG4/bi50cmltKCk6IiJ9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNuPS87XHMqL20sbG49L15ccyooaW5pdGlhbCl8KGluaGVyaXQpXHMqJC8sY249L1xzKiFpbXBvcnRhbnQvLHVuPSJfLV8iO2NsYXNzIGhue2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPXt9fXNldCh0LGUpe3Q9dC50cmltKCksdGhpcy5fbWFwW3RdPXtwcm9wZXJ0aWVzOmUsZGVwZW5kYW50czp7fX19Z2V0KHQpe3JldHVybiB0PXQudHJpbSgpLHRoaXMuX21hcFt0XXx8bnVsbH19bGV0IGRuPW51bGw7Y2xhc3MgcG57Y29uc3RydWN0b3IoKXt0aGlzLl9jdXJyZW50RWxlbWVudD1udWxsLHRoaXMuX21lYXN1cmVFbGVtZW50PW51bGwsdGhpcy5fbWFwPW5ldyBobn1kZXRlY3RNaXhpbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPXFlLnRlc3QodCl8fFdlLnRlc3QodCk7cmV0dXJuIHFlLmxhc3RJbmRleD0wLFdlLmxhc3RJbmRleD0wLGV9KSh0KX1nYXRoZXJTdHlsZXModCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPVtdLG49dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPW5bdF07S2UoaSk/QWV8fCgkZShpKSxpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSkpOihlLnB1c2goaS50ZXh0Q29udGVudCksaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpKX1yZXR1cm4gZS5qb2luKCIiKS50cmltKCl9KSh0LmNvbnRlbnQpO2lmKGUpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gbi50ZXh0Q29udGVudD1lLHQuY29udGVudC5pbnNlcnRCZWZvcmUobix0LmNvbnRlbnQuZmlyc3RDaGlsZCksbn1yZXR1cm4gbnVsbH10cmFuc2Zvcm1UZW1wbGF0ZSh0LGUpe3ZvaWQgMD09PXQuX2dhdGhlcmVkU3R5bGUmJih0Ll9nYXRoZXJlZFN0eWxlPXRoaXMuZ2F0aGVyU3R5bGVzKHQpKTtjb25zdCBuPXQuX2dhdGhlcmVkU3R5bGU7cmV0dXJuIG4/dGhpcy50cmFuc2Zvcm1TdHlsZShuLGUpOm51bGx9dHJhbnNmb3JtU3R5bGUodCxlPSIiKXtsZXQgbj1KZSh0KTtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SdWxlcyhuLGUpLHQudGV4dENvbnRlbnQ9WmUobiksbn10cmFuc2Zvcm1DdXN0b21TdHlsZSh0KXtsZXQgZT1KZSh0KTtyZXR1cm4gUWUoZSwodD0+eyI6cm9vdCI9PT10LnNlbGVjdG9yJiYodC5zZWxlY3Rvcj0iaHRtbCIpLHRoaXMudHJhbnNmb3JtUnVsZSh0KX0pKSx0LnRleHRDb250ZW50PVplKGUpLGV9dHJhbnNmb3JtUnVsZXModCxlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLFFlKHQsKHQ9Pnt0aGlzLnRyYW5zZm9ybVJ1bGUodCl9KSksdGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbH10cmFuc2Zvcm1SdWxlKHQpe3QuY3NzVGV4dD10aGlzLnRyYW5zZm9ybUNzc1RleHQodC5wYXJzZWRDc3NUZXh0LHQpLCI6cm9vdCI9PT10LnNlbGVjdG9yJiYodC5zZWxlY3Rvcj0iOmhvc3QgPiAqIil9dHJhbnNmb3JtQ3NzVGV4dCh0LGUpe3JldHVybiB0PXQucmVwbGFjZShXZSwoKHQsbixpLHIpPT50aGlzLl9wcm9kdWNlQ3NzUHJvcGVydGllcyh0LG4saSxyLGUpKSksdGhpcy5fY29uc3VtZUNzc1Byb3BlcnRpZXModCxlKX1fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCl7cmV0dXJuIHRoaXMuX21lYXN1cmVFbGVtZW50fHwodGhpcy5fbWVhc3VyZUVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpLHRoaXMuX21lYXN1cmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXBwbHktc2hpbS1tZWFzdXJlIiwiIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc3R5bGUuYWxsPSJpbml0aWFsIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuX21lYXN1cmVFbGVtZW50KSksd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbWVhc3VyZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUodCl9X2ZhbGxiYWNrc0Zyb21QcmV2aW91c1J1bGVzKHQpe2xldCBlPXQ7Zm9yKDtlLnBhcmVudDspZT1lLnBhcmVudDtjb25zdCBuPXt9O2xldCBpPSExO3JldHVybiBRZShlLChlPT57aT1pfHxlPT09dCxpfHxlLnNlbGVjdG9yPT09dC5zZWxlY3RvciYmT2JqZWN0LmFzc2lnbihuLHRoaXMuX2Nzc1RleHRUb01hcChlLnBhcnNlZENzc1RleHQpKX0pKSxufV9jb25zdW1lQ3NzUHJvcGVydGllcyh0LGUpe2xldCBuPW51bGw7Zm9yKDtuPXFlLmV4ZWModCk7KXtsZXQgaT1uWzBdLHI9blsxXSxvPW4uaW5kZXgsYT1vK2kuaW5kZXhPZigiQGFwcGx5Iikscz1vK2kubGVuZ3RoLGw9dC5zbGljZSgwLGEpLGM9dC5zbGljZShzKSx1PWU/dGhpcy5fZmFsbGJhY2tzRnJvbVByZXZpb3VzUnVsZXMoZSk6e307T2JqZWN0LmFzc2lnbih1LHRoaXMuX2Nzc1RleHRUb01hcChsKSk7bGV0IGg9dGhpcy5fYXRBcHBseVRvQ3NzUHJvcGVydGllcyhyLHUpO3Q9YCR7bH0ke2h9JHtjfWAscWUubGFzdEluZGV4PW8raC5sZW5ndGh9cmV0dXJuIHR9X2F0QXBwbHlUb0Nzc1Byb3BlcnRpZXModCxlKXt0PXQucmVwbGFjZShzbiwiIik7bGV0IG49W10saT10aGlzLl9tYXAuZ2V0KHQpO2lmKGl8fCh0aGlzLl9tYXAuc2V0KHQse30pLGk9dGhpcy5fbWFwLmdldCh0KSksaSl7bGV0IHIsbyxhO3RoaXMuX2N1cnJlbnRFbGVtZW50JiYoaS5kZXBlbmRhbnRzW3RoaXMuX2N1cnJlbnRFbGVtZW50XT0hMCk7Y29uc3Qgcz1pLnByb3BlcnRpZXM7Zm9yKHIgaW4gcylhPWUmJmVbcl0sbz1bciwiOiB2YXIoIix0LHVuLHJdLGEmJm8ucHVzaCgiLCIsYS5yZXBsYWNlKGNuLCIiKSksby5wdXNoKCIpIiksY24udGVzdChzW3JdKSYmby5wdXNoKCIgIWltcG9ydGFudCIpLG4ucHVzaChvLmpvaW4oIiIpKX1yZXR1cm4gbi5qb2luKCI7ICIpfV9yZXBsYWNlSW5pdGlhbE9ySW5oZXJpdCh0LGUpe2xldCBuPWxuLmV4ZWMoZSk7cmV0dXJuIG4mJihlPW5bMV0/dGhpcy5fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCk6ImFwcGx5LXNoaW0taW5oZXJpdCIpLGV9X2Nzc1RleHRUb01hcCh0LGU9ITEpe2xldCBuLGkscj10LnNwbGl0KCI7Iiksbz17fTtmb3IobGV0IHQsYSxzPTA7czxyLmxlbmd0aDtzKyspdD1yW3NdLHQmJihhPXQuc3BsaXQoIjoiKSxhLmxlbmd0aD4xJiYobj1hWzBdLnRyaW0oKSxpPWEuc2xpY2UoMSkuam9pbigiOiIpLGUmJihpPXRoaXMuX3JlcGxhY2VJbml0aWFsT3JJbmhlcml0KG4saSkpLG9bbl09aSkpO3JldHVybiBvfV9pbnZhbGlkYXRlTWl4aW5FbnRyeSh0KXtpZihkbilmb3IobGV0IGUgaW4gdC5kZXBlbmRhbnRzKWUhPT10aGlzLl9jdXJyZW50RWxlbWVudCYmZG4oZSl9X3Byb2R1Y2VDc3NQcm9wZXJ0aWVzKHQsZSxuLGkscil7aWYobiYmdG4obiwoKHQsZSk9PntlJiZ0aGlzLl9tYXAuZ2V0KGUpJiYoaT1gQGFwcGx5ICR7ZX07YCl9KSksIWkpcmV0dXJuIHQ7bGV0IG89dGhpcy5fY29uc3VtZUNzc1Byb3BlcnRpZXMoIiIraSxyKSxhPXQuc2xpY2UoMCx0LmluZGV4T2YoIi0tIikpLHM9dGhpcy5fY3NzVGV4dFRvTWFwKG8sITApLGw9cyxjPXRoaXMuX21hcC5nZXQoZSksdT1jJiZjLnByb3BlcnRpZXM7dT9sPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh1KSxzKTp0aGlzLl9tYXAuc2V0KGUsbCk7bGV0IGgsZCxwPVtdLGY9ITE7Zm9yKGggaW4gbClkPXNbaF0sdm9pZCAwPT09ZCYmKGQ9ImluaXRpYWwiKSx1JiYhKGggaW4gdSkmJihmPSEwKSxwLnB1c2goYCR7ZX1fLV8ke2h9OiAke2R9YCk7cmV0dXJuIGYmJnRoaXMuX2ludmFsaWRhdGVNaXhpbkVudHJ5KGMpLGMmJihjLnByb3BlcnRpZXM9bCksbiYmKGE9YCR7dH07JHthfWApLGAke2F9JHtwLmpvaW4oIjsgIil9O2B9fXBuLnByb3RvdHlwZS5kZXRlY3RNaXhpbj1wbi5wcm90b3R5cGUuZGV0ZWN0TWl4aW4scG4ucHJvdG90eXBlLnRyYW5zZm9ybVN0eWxlPXBuLnByb3RvdHlwZS50cmFuc2Zvcm1TdHlsZSxwbi5wcm90b3R5cGUudHJhbnNmb3JtQ3VzdG9tU3R5bGU9cG4ucHJvdG90eXBlLnRyYW5zZm9ybUN1c3RvbVN0eWxlLHBuLnByb3RvdHlwZS50cmFuc2Zvcm1SdWxlcz1wbi5wcm90b3R5cGUudHJhbnNmb3JtUnVsZXMscG4ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGU9cG4ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGUscG4ucHJvdG90eXBlLnRyYW5zZm9ybVRlbXBsYXRlPXBuLnByb3RvdHlwZS50cmFuc2Zvcm1UZW1wbGF0ZSxwbi5wcm90b3R5cGUuX3NlcGFyYXRvcj11bixPYmplY3QuZGVmaW5lUHJvcGVydHkocG4ucHJvdG90eXBlLCJpbnZhbGlkQ2FsbGJhY2siLHtnZXQ6KCk9PmRuLHNldCh0KXtkbj10fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmbj17fSxtbj0iX2FwcGx5U2hpbUN1cnJlbnRWZXJzaW9uIixnbj0iX2FwcGx5U2hpbU5leHRWZXJzaW9uIixfbj0iX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uIix5bj1Qcm9taXNlLnJlc29sdmUoKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiB2bih0KXtsZXQgZT1mblt0XTtlJiYoZnVuY3Rpb24gbih0KXt0W21uXT10W21uXXx8MCx0W19uXT10W19uXXx8MCx0W2duXT0odFtnbl18fDApKzF9KShlKX1mdW5jdGlvbiBibih0KXtyZXR1cm4gdFttbl09PT10W2duXX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IHhuLHduPW51bGwsU249d2luZG93LkhUTUxJbXBvcnRzJiZ3aW5kb3cuSFRNTEltcG9ydHMud2hlblJlYWR5fHxudWxsO2Z1bmN0aW9uIE1uKHQpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtTbj9Tbih0KTood258fCh3bj1uZXcgUHJvbWlzZSgodD0+e3huPXR9KSksImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/eG4oKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoKCk9PnsiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmeG4oKX0pKSksd24udGhlbigoZnVuY3Rpb24oKXt0JiZ0KCl9KSkpfSkpfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IEVuPSJfX3NlZW5CeVNoYWR5Q1NTIixUbj0iX19zaGFkeUNTU0NhY2hlZFN0eWxlIjtsZXQgQ249bnVsbCxBbj1udWxsO2NsYXNzIGtue2NvbnN0cnVjdG9yKCl7dGhpcy5jdXN0b21TdHlsZXM9W10sdGhpcy5lbnF1ZXVlZD0hMSxNbigoKCk9Pnt3aW5kb3cuU2hhZHlDU1MuZmx1c2hDdXN0b21TdHlsZXMmJndpbmRvdy5TaGFkeUNTUy5mbHVzaEN1c3RvbVN0eWxlcygpfSkpfWVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKXshdGhpcy5lbnF1ZXVlZCYmQW4mJih0aGlzLmVucXVldWVkPSEwLE1uKEFuKSl9YWRkQ3VzdG9tU3R5bGUodCl7dFtFbl18fCh0W0VuXT0hMCx0aGlzLmN1c3RvbVN0eWxlcy5wdXNoKHQpLHRoaXMuZW5xdWV1ZURvY3VtZW50VmFsaWRhdGlvbigpKX1nZXRTdHlsZUZvckN1c3RvbVN0eWxlKHQpe2lmKHRbVG5dKXJldHVybiB0W1RuXTtsZXQgZTtyZXR1cm4gZT10LmdldFN0eWxlP3QuZ2V0U3R5bGUoKTp0LGV9cHJvY2Vzc1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5jdXN0b21TdHlsZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtpZihuW1RuXSljb250aW51ZTtjb25zdCBpPXRoaXMuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZShuKTtpZihpKXtjb25zdCB0PWkuX19hcHBsaWVkRWxlbWVudHx8aTtDbiYmQ24odCksbltUbl09dH19cmV0dXJuIHR9fWtuLnByb3RvdHlwZS5hZGRDdXN0b21TdHlsZT1rbi5wcm90b3R5cGUuYWRkQ3VzdG9tU3R5bGUsa24ucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGU9a24ucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUsa24ucHJvdG90eXBlLnByb2Nlc3NTdHlsZXM9a24ucHJvdG90eXBlLnByb2Nlc3NTdHlsZXMsT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoa24ucHJvdG90eXBlLHt0cmFuc2Zvcm1DYWxsYmFjazp7Z2V0OigpPT5DbixzZXQodCl7Q249dH19LHZhbGlkYXRlQ2FsbGJhY2s6e2dldDooKT0+QW4sc2V0KHQpe2xldCBlPSExO0FufHwoZT0hMCksQW49dCxlJiZ0aGlzLmVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKX19fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFBuPW5ldyBwbjtjbGFzcyBMbntjb25zdHJ1Y3Rvcigpe3RoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2U9bnVsbCxQbi5pbnZhbGlkQ2FsbGJhY2s9dm59ZW5zdXJlKCl7dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZXx8d2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlJiYodGhpcy5jdXN0b21TdHlsZUludGVyZmFjZT13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UsdGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS50cmFuc2Zvcm1DYWxsYmFjaz10PT57UG4udHJhbnNmb3JtQ3VzdG9tU3R5bGUodCl9LHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UudmFsaWRhdGVDYWxsYmFjaz0oKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmVucXVldWVkJiZ0aGlzLmZsdXNoQ3VzdG9tU3R5bGVzKCl9KSl9KX1wcmVwYXJlVGVtcGxhdGUodCxlKXtpZih0aGlzLmVuc3VyZSgpLHJuKHQpKXJldHVybjtmbltlXT10O2xldCBuPVBuLnRyYW5zZm9ybVRlbXBsYXRlKHQsZSk7dC5fc3R5bGVBc3Q9bn1mbHVzaEN1c3RvbVN0eWxlcygpe2lmKHRoaXMuZW5zdXJlKCksIXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UpcmV0dXJuO2xldCB0PXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UucHJvY2Vzc1N0eWxlcygpO2lmKHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UuZW5xdWV1ZWQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUodFtlXSk7biYmUG4udHJhbnNmb3JtQ3VzdG9tU3R5bGUobil9dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZD0hMX19c3R5bGVTdWJ0cmVlKHQsZSl7aWYodGhpcy5lbnN1cmUoKSxlJiZvbih0LGUpLHQuc2hhZG93Um9vdCl7dGhpcy5zdHlsZUVsZW1lbnQodCk7bGV0IGU9dC5zaGFkb3dSb290LmNoaWxkcmVufHx0LnNoYWRvd1Jvb3QuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnN0eWxlU3VidHJlZShlW3RdKX1lbHNle2xldCBlPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnN0eWxlU3VidHJlZShlW3RdKX19c3R5bGVFbGVtZW50KHQpe3RoaXMuZW5zdXJlKCk7bGV0e2lzOmV9PShmdW5jdGlvbiBuKHQpe2xldCBlPXQubG9jYWxOYW1lLG49IiIsaT0iIjtyZXR1cm4gZT9lLmluZGV4T2YoIi0iKT4tMT9uPWU6KGk9ZSxuPXQuZ2V0QXR0cmlidXRlJiZ0LmdldEF0dHJpYnV0ZSgiaXMiKXx8IiIpOihuPXQuaXMsaT10LmV4dGVuZHMpLHtpczpuLHR5cGVFeHRlbnNpb246aX19KSh0KSxpPWZuW2VdO2lmKCghaXx8IXJuKGkpKSYmaSYmIWJuKGkpKXsoZnVuY3Rpb24gbih0KXtyZXR1cm4hYm4odCkmJnRbX25dPT09dFtnbl19KShpKXx8KHRoaXMucHJlcGFyZVRlbXBsYXRlKGksZSksKGZ1bmN0aW9uIHIodCl7dFtfbl09dFtnbl0sdC5fdmFsaWRhdGluZ3x8KHQuX3ZhbGlkYXRpbmc9ITAseW4udGhlbigoZnVuY3Rpb24oKXt0W21uXT10W2duXSx0Ll92YWxpZGF0aW5nPSExfSkpKX0pKGkpKTtsZXQgbz10LnNoYWRvd1Jvb3Q7aWYobyl7bGV0IHQ9by5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpO3QmJih0Ll9fY3NzUnVsZXM9aS5fc3R5bGVBc3QsdC50ZXh0Q29udGVudD1aZShpLl9zdHlsZUFzdCkpfX19c3R5bGVEb2N1bWVudCh0KXt0aGlzLmVuc3VyZSgpLHRoaXMuc3R5bGVTdWJ0cmVlKGRvY3VtZW50LmJvZHksdCl9fWlmKCF3aW5kb3cuU2hhZHlDU1N8fCF3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0pe2NvbnN0IHQ9bmV3IExuO2xldCBlPXdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlO3dpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKGUsbixpKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5wcmVwYXJlVGVtcGxhdGUoZSxuKX0scHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsZSxuKXt3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKHQsZSxuKX0scHJlcGFyZVRlbXBsYXRlRG9tKHQsZSl7fSxzdHlsZVN1YnRyZWUoZSxuKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5zdHlsZVN1YnRyZWUoZSxuKX0sc3R5bGVFbGVtZW50KGUpe3QuZmx1c2hDdXN0b21TdHlsZXMoKSx0LnN0eWxlRWxlbWVudChlKX0sc3R5bGVEb2N1bWVudChlKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5zdHlsZURvY3VtZW50KGUpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6KHQsZSk9PmFuKHQsZSksZmx1c2hDdXN0b21TdHlsZXMoKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCl9LG5hdGl2ZUNzczpOZSxuYXRpdmVTaGFkb3c6QWUsY3NzQnVpbGQ6UGUsZGlzYWJsZVJ1bnRpbWU6SWV9LGUmJih3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9ZSl9d2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbT1QbjsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgSW57Y29uc3RydWN0b3IoKXt0aGlzLl9hc3luY01vZHVsZT1udWxsLHRoaXMuX2NhbGxiYWNrPW51bGwsdGhpcy5fdGltZXI9bnVsbH1zZXRDb25maWcodCxlKXt0aGlzLl9hc3luY01vZHVsZT10LHRoaXMuX2NhbGxiYWNrPWUsdGhpcy5fdGltZXI9dGhpcy5fYXN5bmNNb2R1bGUucnVuKCgoKT0+e3RoaXMuX3RpbWVyPW51bGwsTm4uZGVsZXRlKHRoaXMpLHRoaXMuX2NhbGxiYWNrKCl9KSl9Y2FuY2VsKCl7dGhpcy5pc0FjdGl2ZSgpJiYodGhpcy5fY2FuY2VsQXN5bmMoKSxObi5kZWxldGUodGhpcykpfV9jYW5jZWxBc3luYygpe3RoaXMuaXNBY3RpdmUoKSYmKHRoaXMuX2FzeW5jTW9kdWxlLmNhbmNlbCh0aGlzLl90aW1lciksdGhpcy5fdGltZXI9bnVsbCl9Zmx1c2goKXt0aGlzLmlzQWN0aXZlKCkmJih0aGlzLmNhbmNlbCgpLHRoaXMuX2NhbGxiYWNrKCkpfWlzQWN0aXZlKCl7cmV0dXJuIG51bGwhPXRoaXMuX3RpbWVyfXN0YXRpYyBkZWJvdW5jZSh0LGUsbil7cmV0dXJuIHQgaW5zdGFuY2VvZiBJbj90Ll9jYW5jZWxBc3luYygpOnQ9bmV3IEluLHQuc2V0Q29uZmlnKGUsbiksdH19bGV0IE5uPW5ldyBTZXQ7Y29uc3QgUm49ZnVuY3Rpb24odCl7Tm4uYWRkKHQpfSxPbj1mdW5jdGlvbigpe2NvbnN0IHQ9Qm9vbGVhbihObi5zaXplKTtyZXR1cm4gTm4uZm9yRWFjaCgodD0+e3RyeXt0LmZsdXNoKCl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX0pKSx0fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IHpuPSJzdHJpbmciPT10eXBlb2YgZG9jdW1lbnQuaGVhZC5zdHlsZS50b3VjaEFjdGlvbixEbj0iX19wb2x5bWVyR2VzdHVyZXMiLEJuPSJfX3BvbHltZXJHZXN0dXJlc0hhbmRsZWQiLEhuPSJfX3BvbHltZXJHZXN0dXJlc1RvdWNoQWN0aW9uIixGbj1bIm1vdXNlZG93biIsIm1vdXNlbW92ZSIsIm1vdXNldXAiLCJjbGljayJdLFZuPVswLDEsNCwyXSxVbj0oZnVuY3Rpb24oKXt0cnl7cmV0dXJuIDE9PT1uZXcgTW91c2VFdmVudCgidGVzdCIse2J1dHRvbnM6MX0pLmJ1dHRvbnN9Y2F0Y2godCl7cmV0dXJuITF9fSkoKTtmdW5jdGlvbiBqbih0KXtyZXR1cm4gRm4uaW5kZXhPZih0KT4tMX1sZXQgR249ITE7ZnVuY3Rpb24gV24odCl7aWYoIWpuKHQpJiYidG91Y2hlbmQiIT09dClyZXR1cm4gem4mJkduJiZ2P3twYXNzaXZlOiEwfTp2b2lkIDB9IShmdW5jdGlvbigpe3RyeXtsZXQgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQoKXtHbj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCx0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCx0KX1jYXRjaCh0KXt9fSkoKTtsZXQgcW49bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpbb2FdZHxob25lKXxBbmRyb2lkLyk7Y29uc3QgWW49W10sWG49e2J1dHRvbjohMCxpbnB1dDohMCxrZXlnZW46ITAsbWV0ZXI6ITAsb3V0cHV0OiEwLHRleHRhcmVhOiEwLHByb2dyZXNzOiEwLHNlbGVjdDohMH0sJG49e2J1dHRvbjohMCxjb21tYW5kOiEwLGZpZWxkc2V0OiEwLGlucHV0OiEwLGtleWdlbjohMCxvcHRncm91cDohMCxvcHRpb246ITAsc2VsZWN0OiEwLHRleHRhcmVhOiEwfTtmdW5jdGlvbiBLbih0KXtsZXQgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LmxhYmVsc3x8W10pO2lmKCFlLmxlbmd0aCl7ZT1bXTtsZXQgbj10LmdldFJvb3ROb2RlKCk7aWYodC5pZCl7bGV0IGk9bi5xdWVyeVNlbGVjdG9yQWxsKGBsYWJlbFtmb3IgPSAke3QuaWR9XWApO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUucHVzaChpW3RdKX19cmV0dXJuIGV9bGV0IFpuPWZ1bmN0aW9uKHQpe2xldCBlPXQuc291cmNlQ2FwYWJpbGl0aWVzO2lmKCghZXx8ZS5maXJlc1RvdWNoRXZlbnRzKSYmKHRbQm5dPXtza2lwOiEwfSwiY2xpY2siPT09dC50eXBlKSl7bGV0IGU9ITEsbj1yaSh0KTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7aWYoblt0XS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKWlmKCJsYWJlbCI9PT1uW3RdLmxvY2FsTmFtZSlZbi5wdXNoKG5bdF0pO2Vsc2UgaWYoWG5bblt0XS5sb2NhbE5hbWVdKXtsZXQgaT1LbihuW3RdKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyllPWV8fFluLmluZGV4T2YoaVt0XSk+LTF9aWYoblt0XT09PXRpLm1vdXNlLnRhcmdldClyZXR1cm59aWYoZSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fTtmdW5jdGlvbiBKbih0KXtsZXQgZT1xbj9bImNsaWNrIl06Rm47Zm9yKGxldCBuLGk9MDtpPGUubGVuZ3RoO2krKyluPWVbaV0sdD8oWW4ubGVuZ3RoPTAsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuLFpuLCEwKSk6ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLFpuLCEwKX1mdW5jdGlvbiBRbih0KXtsZXQgZT10LnR5cGU7aWYoIWpuKGUpKXJldHVybiExO2lmKCJtb3VzZW1vdmUiPT09ZSl7bGV0IGU9dm9pZCAwPT09dC5idXR0b25zPzE6dC5idXR0b25zO3JldHVybiB0IGluc3RhbmNlb2Ygd2luZG93Lk1vdXNlRXZlbnQmJiFVbiYmKGU9Vm5bdC53aGljaF18fDApLEJvb2xlYW4oMSZlKX1yZXR1cm4gMD09PSh2b2lkIDA9PT10LmJ1dHRvbj8wOnQuYnV0dG9uKX1sZXQgdGk9e21vdXNlOnt0YXJnZXQ6bnVsbCxtb3VzZUlnbm9yZUpvYjpudWxsfSx0b3VjaDp7eDowLHk6MCxpZDotMSxzY3JvbGxEZWNpZGVkOiExfX07ZnVuY3Rpb24gZWkodCxlLG4pe3QubW92ZWZuPWUsdC51cGZuPW4sZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixuKX1mdW5jdGlvbiBuaSh0KXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHQubW92ZWZuKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LnVwZm4pLHQubW92ZWZuPW51bGwsdC51cGZuPW51bGx9ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLChmdW5jdGlvbiBpaSh0KXt0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYnx8Sm4oITApLHRpLm1vdXNlLnRhcmdldD1yaSh0KVswXSx0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYj1Jbi5kZWJvdW5jZSh0aS5tb3VzZS5tb3VzZUlnbm9yZUpvYixndC5hZnRlcigyNTAwKSwoZnVuY3Rpb24oKXtKbigpLHRpLm1vdXNlLnRhcmdldD1udWxsLHRpLm1vdXNlLm1vdXNlSWdub3JlSm9iPW51bGx9KSl9KSwhIUduJiZ7cGFzc2l2ZTohMH0pO2NvbnN0IHJpPXdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLm5vUGF0Y2g/d2luZG93LlNoYWR5RE9NLmNvbXBvc2VkUGF0aDp0PT50LmNvbXBvc2VkUGF0aCYmdC5jb21wb3NlZFBhdGgoKXx8W10sb2k9e30sYWk9W107ZnVuY3Rpb24gc2kodCl7Y29uc3QgZT1yaSh0KTtyZXR1cm4gZS5sZW5ndGg+MD9lWzBdOnQudGFyZ2V0fWZ1bmN0aW9uIGxpKHQpe2xldCBlLG49dC50eXBlLGk9dC5jdXJyZW50VGFyZ2V0W0RuXTtpZighaSlyZXR1cm47bGV0IHI9aVtuXTtpZihyKXtpZighdFtCbl0mJih0W0JuXT17fSwidG91Y2giPT09bi5zbGljZSgwLDUpKSl7bGV0IGU9KHQ9dCkuY2hhbmdlZFRvdWNoZXNbMF07aWYoInRvdWNoc3RhcnQiPT09biYmMT09PXQudG91Y2hlcy5sZW5ndGgmJih0aS50b3VjaC5pZD1lLmlkZW50aWZpZXIpLHRpLnRvdWNoLmlkIT09ZS5pZGVudGlmaWVyKXJldHVybjt6bnx8InRvdWNoc3RhcnQiIT09biYmInRvdWNobW92ZSIhPT1ufHwoZnVuY3Rpb24gbyh0KXtsZXQgZT10LmNoYW5nZWRUb3VjaGVzWzBdLG49dC50eXBlO2lmKCJ0b3VjaHN0YXJ0Ij09PW4pdGkudG91Y2gueD1lLmNsaWVudFgsdGkudG91Y2gueT1lLmNsaWVudFksdGkudG91Y2guc2Nyb2xsRGVjaWRlZD0hMTtlbHNlIGlmKCJ0b3VjaG1vdmUiPT09bil7aWYodGkudG91Y2guc2Nyb2xsRGVjaWRlZClyZXR1cm47dGkudG91Y2guc2Nyb2xsRGVjaWRlZD0hMDtsZXQgbj0oZnVuY3Rpb24gaSh0KXtsZXQgZT0iYXV0byIsbj1yaSh0KTtmb3IobGV0IHQsaT0wO2k8bi5sZW5ndGg7aSsrKWlmKHQ9bltpXSx0W0huXSl7ZT10W0huXTticmVha31yZXR1cm4gZX0pKHQpLGk9ITEscj1NYXRoLmFicyh0aS50b3VjaC54LWUuY2xpZW50WCksbz1NYXRoLmFicyh0aS50b3VjaC55LWUuY2xpZW50WSk7dC5jYW5jZWxhYmxlJiYoIm5vbmUiPT09bj9pPSEwOiJwYW4teCI9PT1uP2k9bz5yOiJwYW4teSI9PT1uJiYoaT1yPm8pKSxpP3QucHJldmVudERlZmF1bHQoKTpmaSgidHJhY2siKX19KSh0KX1pZihlPXRbQm5dLCFlLnNraXApe2ZvcihsZXQgbixpPTA7aTxhaS5sZW5ndGg7aSsrKW49YWlbaV0scltuLm5hbWVdJiYhZVtuLm5hbWVdJiZuLmZsb3cmJm4uZmxvdy5zdGFydC5pbmRleE9mKHQudHlwZSk+LTEmJm4ucmVzZXQmJm4ucmVzZXQoKTtmb3IobGV0IGksbz0wO288YWkubGVuZ3RoO28rKylpPWFpW29dLHJbaS5uYW1lXSYmIWVbaS5uYW1lXSYmKGVbaS5uYW1lXT0hMCxpW25dKHQpKX19fWZ1bmN0aW9uIGNpKHQsZSxuKXtyZXR1cm4hIW9pW2VdJiYoKGZ1bmN0aW9uIGkodCxlLG4pe2xldCBpPW9pW2VdLHI9aS5kZXBzLG89aS5uYW1lLGE9dFtEbl07YXx8KHRbRG5dPWE9e30pO2ZvcihsZXQgZSxuLGk9MDtpPHIubGVuZ3RoO2krKyllPXJbaV0scW4mJmpuKGUpJiYiY2xpY2siIT09ZXx8KG49YVtlXSxufHwoYVtlXT1uPXtfY291bnQ6MH0pLDA9PT1uLl9jb3VudCYmdC5hZGRFdmVudExpc3RlbmVyKGUsbGksV24oZSkpLG5bb109KG5bb118fDApKzEsbi5fY291bnQ9KG4uX2NvdW50fHwwKSsxKTt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuKSxpLnRvdWNoQWN0aW9uJiZkaSh0LGkudG91Y2hBY3Rpb24pfSkodCxlLG4pLCEwKX1mdW5jdGlvbiB1aSh0LGUsbil7cmV0dXJuISFvaVtlXSYmKChmdW5jdGlvbiBpKHQsZSxuKXtsZXQgaT1vaVtlXSxyPWkuZGVwcyxvPWkubmFtZSxhPXRbRG5dO2lmKGEpZm9yKGxldCBlLG4saT0wO2k8ci5sZW5ndGg7aSsrKWU9cltpXSxuPWFbZV0sbiYmbltvXSYmKG5bb109KG5bb118fDEpLTEsbi5fY291bnQ9KG4uX2NvdW50fHwxKS0xLDA9PT1uLl9jb3VudCYmdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbGksV24oZSkpKTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuKX0pKHQsZSxuKSwhMCl9ZnVuY3Rpb24gaGkodCl7YWkucHVzaCh0KTtmb3IobGV0IGU9MDtlPHQuZW1pdHMubGVuZ3RoO2UrKylvaVt0LmVtaXRzW2VdXT10fWZ1bmN0aW9uIGRpKHQsZSl7em4mJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdnQucnVuKCgoKT0+e3Quc3R5bGUudG91Y2hBY3Rpb249ZX0pKSx0W0huXT1lfWZ1bmN0aW9uIHBpKHQsZSxuKXtsZXQgaT1uZXcgRXZlbnQoZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNvbXBvc2VkOiEwfSk7aWYoaS5kZXRhaWw9bixZKHQpLmRpc3BhdGNoRXZlbnQoaSksaS5kZWZhdWx0UHJldmVudGVkKXtsZXQgdD1uLnByZXZlbnRlcnx8bi5zb3VyY2VFdmVudDt0JiZ0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCl9fWZ1bmN0aW9uIGZpKHQpe2xldCBlPShmdW5jdGlvbiBuKHQpe2ZvcihsZXQgZSxuPTA7bjxhaS5sZW5ndGg7bisrKXtlPWFpW25dO2ZvcihsZXQgbixpPTA7aTxlLmVtaXRzLmxlbmd0aDtpKyspaWYobj1lLmVtaXRzW2ldLG49PT10KXJldHVybiBlfXJldHVybiBudWxsfSkodCk7ZS5pbmZvJiYoZS5pbmZvLnByZXZlbnQ9ITApfWZ1bmN0aW9uIG1pKHQsZSxuLGkpe2UmJnBpKGUsdCx7eDpuLmNsaWVudFgseTpuLmNsaWVudFksc291cmNlRXZlbnQ6bixwcmV2ZW50ZXI6aSxwcmV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiBmaSh0KX19KX1mdW5jdGlvbiBnaSh0LGUsbil7aWYodC5wcmV2ZW50KXJldHVybiExO2lmKHQuc3RhcnRlZClyZXR1cm4hMDtsZXQgaT1NYXRoLmFicyh0LngtZSkscj1NYXRoLmFicyh0Lnktbik7cmV0dXJuIGk+PTV8fHI+PTV9ZnVuY3Rpb24gX2kodCxlLG4pe2lmKCFlKXJldHVybjtsZXQgaSxyPXQubW92ZXNbdC5tb3Zlcy5sZW5ndGgtMl0sbz10Lm1vdmVzW3QubW92ZXMubGVuZ3RoLTFdLGE9MDtyJiYoaT1vLngtci54LGE9by55LXIueSkscGkoZSwidHJhY2siLHtzdGF0ZTp0LnN0YXRlLHg6bi5jbGllbnRYLHk6bi5jbGllbnRZLGR4Om8ueC10LngsZHk6by55LXQueSxkZHg6aSxkZHk6YSxzb3VyY2VFdmVudDpuLGhvdmVyOmZ1bmN0aW9uKCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSxuKXtsZXQgaT1kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUsbikscj1pO2Zvcig7ciYmci5zaGFkb3dSb290JiYhd2luZG93LlNoYWR5RE9NOyl7bGV0IHQ9cjtpZihyPXIuc2hhZG93Um9vdC5lbGVtZW50RnJvbVBvaW50KGUsbiksdD09PXIpYnJlYWs7ciYmKGk9cil9cmV0dXJuIGl9KShuLmNsaWVudFgsbi5jbGllbnRZKX19KX1mdW5jdGlvbiB5aSh0LGUsbil7bGV0IGk9TWF0aC5hYnMoZS5jbGllbnRYLXQueCkscj1NYXRoLmFicyhlLmNsaWVudFktdC55KSxvPXNpKG58fGUpOyFvfHwkbltvLmxvY2FsTmFtZV0mJm8uaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHwoaXNOYU4oaSl8fGlzTmFOKHIpfHxpPD0yNSYmcjw9MjV8fChmdW5jdGlvbiBhKHQpe2lmKCJjbGljayI9PT10LnR5cGUpe2lmKDA9PT10LmRldGFpbClyZXR1cm4hMDtsZXQgZT1zaSh0KTtpZighZS5ub2RlVHlwZXx8ZS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiEwO2xldCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT10LnBhZ2VYLHI9dC5wYWdlWTtyZXR1cm4hKGk+PW4ubGVmdCYmaTw9bi5yaWdodCYmcj49bi50b3AmJnI8PW4uYm90dG9tKX1yZXR1cm4hMX0pKGUpKSYmKHQucHJldmVudHx8cGkobywidGFwIix7eDplLmNsaWVudFgseTplLmNsaWVudFksc291cmNlRXZlbnQ6ZSxwcmV2ZW50ZXI6bn0pKX1oaSh7bmFtZToiZG93bnVwIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsiZG93biIsInVwIl0saW5mbzp7bW92ZWZuOm51bGwsdXBmbjpudWxsfSxyZXNldDpmdW5jdGlvbigpe25pKHRoaXMuaW5mbyl9LG1vdXNlZG93bjpmdW5jdGlvbih0KXtpZighUW4odCkpcmV0dXJuO2xldCBlPXNpKHQpLG49dGhpcztlaSh0aGlzLmluZm8sKGZ1bmN0aW9uIHQoaSl7UW4oaSl8fChtaSgidXAiLGUsaSksbmkobi5pbmZvKSl9KSwoZnVuY3Rpb24gdChpKXtRbihpKSYmbWkoInVwIixlLGkpLG5pKG4uaW5mbyl9KSksbWkoImRvd24iLGUsdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7bWkoImRvd24iLHNpKHQpLHQuY2hhbmdlZFRvdWNoZXNbMF0sdCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe21pKCJ1cCIsc2kodCksdC5jaGFuZ2VkVG91Y2hlc1swXSx0KX19KSxoaSh7bmFtZToidHJhY2siLHRvdWNoQWN0aW9uOiJub25lIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsidHJhY2siXSxpbmZvOnt4OjAseTowLHN0YXRlOiJzdGFydCIsc3RhcnRlZDohMSxtb3ZlczpbXSxhZGRNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMubW92ZXMubGVuZ3RoPjImJnRoaXMubW92ZXMuc2hpZnQoKSx0aGlzLm1vdmVzLnB1c2godCl9LG1vdmVmbjpudWxsLHVwZm46bnVsbCxwcmV2ZW50OiExfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuaW5mby5zdGF0ZT0ic3RhcnQiLHRoaXMuaW5mby5zdGFydGVkPSExLHRoaXMuaW5mby5tb3Zlcz1bXSx0aGlzLmluZm8ueD0wLHRoaXMuaW5mby55PTAsdGhpcy5pbmZvLnByZXZlbnQ9ITEsbmkodGhpcy5pbmZvKX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe2lmKCFRbih0KSlyZXR1cm47bGV0IGU9c2kodCksbj10aGlzLGk9ZnVuY3Rpb24gdChpKXtsZXQgcj1pLmNsaWVudFgsbz1pLmNsaWVudFk7Z2kobi5pbmZvLHIsbykmJihuLmluZm8uc3RhdGU9bi5pbmZvLnN0YXJ0ZWQ/Im1vdXNldXAiPT09aS50eXBlPyJlbmQiOiJ0cmFjayI6InN0YXJ0Iiwic3RhcnQiPT09bi5pbmZvLnN0YXRlJiZmaSgidGFwIiksbi5pbmZvLmFkZE1vdmUoe3g6cix5Om99KSxRbihpKXx8KG4uaW5mby5zdGF0ZT0iZW5kIixuaShuLmluZm8pKSxlJiZfaShuLmluZm8sZSxpKSxuLmluZm8uc3RhcnRlZD0hMCl9O2VpKHRoaXMuaW5mbyxpLChmdW5jdGlvbiB0KGUpe24uaW5mby5zdGFydGVkJiZpKGUpLG5pKG4uaW5mbyl9KSksdGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WX0sdG91Y2hzdGFydDpmdW5jdGlvbih0KXtsZXQgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNobW92ZTpmdW5jdGlvbih0KXtsZXQgZT1zaSh0KSxuPXQuY2hhbmdlZFRvdWNoZXNbMF0saT1uLmNsaWVudFgscj1uLmNsaWVudFk7Z2kodGhpcy5pbmZvLGkscikmJigic3RhcnQiPT09dGhpcy5pbmZvLnN0YXRlJiZmaSgidGFwIiksdGhpcy5pbmZvLmFkZE1vdmUoe3g6aSx5OnJ9KSxfaSh0aGlzLmluZm8sZSxuKSx0aGlzLmluZm8uc3RhdGU9InRyYWNrIix0aGlzLmluZm8uc3RhcnRlZD0hMCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe2xldCBlPXNpKHQpLG49dC5jaGFuZ2VkVG91Y2hlc1swXTt0aGlzLmluZm8uc3RhcnRlZCYmKHRoaXMuaW5mby5zdGF0ZT0iZW5kIix0aGlzLmluZm8uYWRkTW92ZSh7eDpuLmNsaWVudFgseTpuLmNsaWVudFl9KSxfaSh0aGlzLmluZm8sZSxuKSl9fSksaGkoe25hbWU6InRhcCIsZGVwczpbIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsiY2xpY2siLCJ0b3VjaGVuZCJdfSxlbWl0czpbInRhcCJdLGluZm86e3g6TmFOLHk6TmFOLHByZXZlbnQ6ITF9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5pbmZvLng9TmFOLHRoaXMuaW5mby55PU5hTix0aGlzLmluZm8ucHJldmVudD0hMX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe1FuKHQpJiYodGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WSl9LGNsaWNrOmZ1bmN0aW9uKHQpe1FuKHQpJiZ5aSh0aGlzLmluZm8sdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7Y29uc3QgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe3lpKHRoaXMuaW5mbyx0LmNoYW5nZWRUb3VjaGVzWzBdLHQpfX0pO2NvbnN0IHZpPXNpLGJpPU4oKHQ9PmNsYXNzIGV4dGVuZHMgdHtfYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil7Y2kodCxlLG4pfHxzdXBlci5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil9X3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbil7dWkodCxlLG4pfHxzdXBlci5fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKHQsZSxuKX19KSkseGk9Lzpob3N0XCg6ZGlyXCgobHRyfHJ0bClcKVwpL2csd2k9LyhbXHNcdy0jXC5cW1xdXCpdKik6ZGlyXCgobHRyfHJ0bClcKS9nLFNpPS86ZGlyXCgoPzpsdHJ8cnRsKVwpLyxNaT1Cb29sZWFuKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKSxFaT1bXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgVGk9bnVsbCxDaT0iIjtmdW5jdGlvbiBBaSgpe0NpPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpfWZ1bmN0aW9uIGtpKHQpe2lmKCF0Ll9fYXV0b0Rpck9wdE91dCl7dC5zZXRBdHRyaWJ1dGUoImRpciIsQ2kpfX1mdW5jdGlvbiBQaSgpe0FpKCksQ2k9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIik7Zm9yKGxldCB0PTA7dDxFaS5sZW5ndGg7dCsrKWtpKEVpW3RdKX1jb25zdCBMaT1OKCh0PT57TWl8fFRpfHwoQWkoKSxUaT1uZXcgTXV0YXRpb25PYnNlcnZlcihQaSksVGkub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiZGlyIl19KSk7Y29uc3QgZT1NdCh0KTtjbGFzcyBuIGV4dGVuZHMgZXtzdGF0aWMgX3Byb2Nlc3NTdHlsZVRleHQodCxuKXtyZXR1cm4gdD1lLl9wcm9jZXNzU3R5bGVUZXh0LmNhbGwodGhpcyx0LG4pLCFNaSYmU2kudGVzdCh0KSYmKHQ9dGhpcy5fcmVwbGFjZURpckluQ3NzVGV4dCh0KSx0aGlzLl9fYWN0aXZhdGVEaXI9ITApLHR9c3RhdGljIF9yZXBsYWNlRGlySW5Dc3NUZXh0KHQpe2xldCBlPXQ7cmV0dXJuIGU9ZS5yZXBsYWNlKHhpLCc6aG9zdChbZGlyPSIkMSJdKScpLGU9ZS5yZXBsYWNlKHdpLCc6aG9zdChbZGlyPSIkMiJdKSAkMScpLGV9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19hdXRvRGlyT3B0T3V0PSExfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLl9fYXV0b0Rpck9wdE91dD10aGlzLmhhc0F0dHJpYnV0ZSgiZGlyIil9Y29ubmVjdGVkQ2FsbGJhY2soKXtlLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjayYmc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmNvbnN0cnVjdG9yLl9fYWN0aXZhdGVEaXImJighKGZ1bmN0aW9uIHQoKXtUaSYmVGkudGFrZVJlY29yZHMoKS5sZW5ndGgmJlBpKCl9KSgpLEVpLnB1c2godGhpcyksa2kodGhpcykpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7aWYoZS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb25zdHJ1Y3Rvci5fX2FjdGl2YXRlRGlyKXtjb25zdCB0PUVpLmluZGV4T2YodGhpcyk7dD4tMSYmRWkuc3BsaWNlKHQsMSl9fX1yZXR1cm4gbi5fX2FjdGl2YXRlRGlyPSExLG59KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IElpPSExLE5pPVtdLFJpPVtdO2Z1bmN0aW9uIE9pKCl7SWk9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe0lpPSExLChmdW5jdGlvbiB0KGUpe2Zvcig7ZS5sZW5ndGg7KXppKGUuc2hpZnQoKSl9KShOaSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXppKGUuc2hpZnQoKSl9KShSaSl9KSl9KSl9ZnVuY3Rpb24gemkodCl7Y29uc3QgZT10WzBdLG49dFsxXSxpPXRbMl07dHJ5e24uYXBwbHkoZSxpKX1jYXRjaCh0KXtzZXRUaW1lb3V0KCgoKT0+e3Rocm93IHR9KSl9fWZ1bmN0aW9uIERpKHQsZSxuKXtJaXx8T2koKSxSaS5wdXNoKFt0LGUsbl0pfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIEJpKCl7ZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoInVucmVzb2x2ZWQiKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KZnVuY3Rpb24gSGkodCxlLG4pe3JldHVybntpbmRleDp0LHJlbW92ZWQ6ZSxhZGRlZENvdW50Om59fSJpbnRlcmFjdGl2ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlfHwiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9CaSgpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCaSk7ZnVuY3Rpb24gRmkodCxlLG4saSxyLG8pe2xldCBhLHM9MCxsPTAsYz1NYXRoLm1pbihuLWUsby1yKTtpZigwPT1lJiYwPT1yJiYocz0oZnVuY3Rpb24gdSh0LGUsbil7Zm9yKGxldCBpPTA7aTxuO2krKylpZighVWkodFtpXSxlW2ldKSlyZXR1cm4gaTtyZXR1cm4gbn0pKHQsaSxjKSksbj09dC5sZW5ndGgmJm89PWkubGVuZ3RoJiYobD0oZnVuY3Rpb24gaCh0LGUsbil7bGV0IGk9dC5sZW5ndGgscj1lLmxlbmd0aCxvPTA7Zm9yKDtvPG4mJlVpKHRbLS1pXSxlWy0tcl0pOylvKys7cmV0dXJuIG99KSh0LGksYy1zKSkscis9cyxvLT1sLChuLT1sKS0oZSs9cyk9PTAmJm8tcj09MClyZXR1cm5bXTtpZihlPT1uKXtmb3IoYT1IaShlLFtdLDApO3I8bzspYS5yZW1vdmVkLnB1c2goaVtyKytdKTtyZXR1cm5bYV19aWYocj09bylyZXR1cm5bSGkoZSxbXSxuLWUpXTtsZXQgZD0oZnVuY3Rpb24gZih0KXtsZXQgZT10Lmxlbmd0aC0xLG49dFswXS5sZW5ndGgtMSxpPXRbZV1bbl0scj1bXTtmb3IoO2U+MHx8bj4wOyl7aWYoMD09ZSl7ci5wdXNoKDIpLG4tLTtjb250aW51ZX1pZigwPT1uKXtyLnB1c2goMyksZS0tO2NvbnRpbnVlfWxldCBvLGE9dFtlLTFdW24tMV0scz10W2UtMV1bbl0sbD10W2VdW24tMV07bz1zPGw/czxhP3M6YTpsPGE/bDphLG89PWE/KGE9PWk/ci5wdXNoKDApOihyLnB1c2goMSksaT1hKSxlLS0sbi0tKTpvPT1zPyhyLnB1c2goMyksZS0tLGk9cyk6KHIucHVzaCgyKSxuLS0saT1sKX1yZXR1cm4gci5yZXZlcnNlKCkscn0pKChmdW5jdGlvbiBwKHQsZSxuLGkscixvKXtsZXQgYT1vLXIrMSxzPW4tZSsxLGw9bmV3IEFycmF5KGEpO2ZvcihsZXQgdD0wO3Q8YTt0KyspbFt0XT1uZXcgQXJyYXkocyksbFt0XVswXT10O2ZvcihsZXQgdD0wO3Q8czt0KyspbFswXVt0XT10O2ZvcihsZXQgbj0xO248YTtuKyspZm9yKGxldCBvPTE7bzxzO28rKylpZihVaSh0W2Urby0xXSxpW3Irbi0xXSkpbFtuXVtvXT1sW24tMV1bby0xXTtlbHNle2xldCB0PWxbbi0xXVtvXSsxLGU9bFtuXVtvLTFdKzE7bFtuXVtvXT10PGU/dDplfXJldHVybiBsfSkodCxlLG4saSxyLG8pKTthPXZvaWQgMDtsZXQgbT1bXSxnPWUsXz1yO2ZvcihsZXQgdD0wO3Q8ZC5sZW5ndGg7dCsrKXN3aXRjaChkW3RdKXtjYXNlIDA6YSYmKG0ucHVzaChhKSxhPXZvaWQgMCksZysrLF8rKzticmVhaztjYXNlIDE6YXx8KGE9SGkoZyxbXSwwKSksYS5hZGRlZENvdW50KyssZysrLGEucmVtb3ZlZC5wdXNoKGlbX10pLF8rKzticmVhaztjYXNlIDI6YXx8KGE9SGkoZyxbXSwwKSksYS5hZGRlZENvdW50KyssZysrO2JyZWFrO2Nhc2UgMzphfHwoYT1IaShnLFtdLDApKSxhLnJlbW92ZWQucHVzaChpW19dKSxfKyt9cmV0dXJuIGEmJm0ucHVzaChhKSxtfWZ1bmN0aW9uIFZpKHQsZSl7cmV0dXJuIEZpKHQsMCx0Lmxlbmd0aCxlLDAsZS5sZW5ndGgpfWZ1bmN0aW9uIFVpKHQsZSl7cmV0dXJuIHQ9PT1lfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIGppKHQpe3JldHVybiJzbG90Ij09PXQubG9jYWxOYW1lfWxldCBHaT1jbGFzc3tzdGF0aWMgZ2V0RmxhdHRlbmVkTm9kZXModCl7Y29uc3QgZT1ZKHQpO3JldHVybiBqaSh0KT8odD10LGUuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pKTpBcnJheS5mcm9tKGUuY2hpbGROb2RlcykubWFwKCh0PT5qaSh0KT9ZKHQ9dCkuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pOlt0XSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSxbXSl9Y29uc3RydWN0b3IodCxlKXt0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCx0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyPW51bGwsdGhpcy5fY29ubmVjdGVkPSExLHRoaXMuX3RhcmdldD10LHRoaXMuY2FsbGJhY2s9ZSx0aGlzLl9lZmZlY3RpdmVOb2Rlcz1bXSx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX3NjaGVkdWxlZD0hMSx0aGlzLl9ib3VuZFNjaGVkdWxlPSgpPT57dGhpcy5fc2NoZWR1bGUoKX0sdGhpcy5jb25uZWN0KCksdGhpcy5fc2NoZWR1bGUoKX1jb25uZWN0KCl7amkodGhpcy5fdGFyZ2V0KT90aGlzLl9saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk6WSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuJiYodGhpcy5fbGlzdGVuU2xvdHMoWSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuKSx3aW5kb3cuU2hhZHlET00/dGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPXdpbmRvdy5TaGFkeURPTS5vYnNlcnZlQ2hpbGRyZW4odGhpcy5fdGFyZ2V0LCh0PT57dGhpcy5fcHJvY2Vzc011dGF0aW9ucyh0KX0pKToodGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlcj1uZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e3RoaXMuX3Byb2Nlc3NNdXRhdGlvbnModCl9KSksdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhcmdldCx7Y2hpbGRMaXN0OiEwfSkpKSx0aGlzLl9jb25uZWN0ZWQ9ITB9ZGlzY29ubmVjdCgpe2ppKHRoaXMuX3RhcmdldCk/dGhpcy5fdW5saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk6WSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuJiYodGhpcy5fdW5saXN0ZW5TbG90cyhZKHRoaXMuX3RhcmdldCkuY2hpbGRyZW4pLHdpbmRvdy5TaGFkeURPTSYmdGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPyh3aW5kb3cuU2hhZHlET00udW5vYnNlcnZlQ2hpbGRyZW4odGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyKSx0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCk6dGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlciYmKHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCkpLHRoaXMuX2Nvbm5lY3RlZD0hMX1fc2NoZWR1bGUoKXt0aGlzLl9zY2hlZHVsZWR8fCh0aGlzLl9zY2hlZHVsZWQ9ITAsdnQucnVuKCgoKT0+dGhpcy5mbHVzaCgpKSkpfV9wcm9jZXNzTXV0YXRpb25zKHQpe3RoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHQpLHRoaXMuZmx1c2goKX1fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModCl7aWYodClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtuLmFkZGVkTm9kZXMmJnRoaXMuX2xpc3RlblNsb3RzKG4uYWRkZWROb2Rlcyksbi5yZW1vdmVkTm9kZXMmJnRoaXMuX3VubGlzdGVuU2xvdHMobi5yZW1vdmVkTm9kZXMpfX1mbHVzaCgpe2lmKCF0aGlzLl9jb25uZWN0ZWQpcmV0dXJuITE7d2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI/dGhpcy5fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKTp0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXImJnRoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKSx0aGlzLl9zY2hlZHVsZWQ9ITE7bGV0IHQ9e3RhcmdldDp0aGlzLl90YXJnZXQsYWRkZWROb2RlczpbXSxyZW1vdmVkTm9kZXM6W119LGU9dGhpcy5jb25zdHJ1Y3Rvci5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLl90YXJnZXQpLG49VmkoZSx0aGlzLl9lZmZlY3RpdmVOb2Rlcyk7Zm9yKGxldCBlLGk9MDtpPG4ubGVuZ3RoJiYoZT1uW2ldKTtpKyspZm9yKGxldCBuLGk9MDtpPGUucmVtb3ZlZC5sZW5ndGgmJihuPWUucmVtb3ZlZFtpXSk7aSsrKXQucmVtb3ZlZE5vZGVzLnB1c2gobik7Zm9yKGxldCBpLHI9MDtyPG4ubGVuZ3RoJiYoaT1uW3JdKTtyKyspZm9yKGxldCBuPWkuaW5kZXg7bjxpLmluZGV4K2kuYWRkZWRDb3VudDtuKyspdC5hZGRlZE5vZGVzLnB1c2goZVtuXSk7dGhpcy5fZWZmZWN0aXZlTm9kZXM9ZTtsZXQgaT0hMTtyZXR1cm4odC5hZGRlZE5vZGVzLmxlbmd0aHx8dC5yZW1vdmVkTm9kZXMubGVuZ3RoKSYmKGk9ITAsdGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuX3RhcmdldCx0KSksaX1fbGlzdGVuU2xvdHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07amkobikmJm4uYWRkRXZlbnRMaXN0ZW5lcigic2xvdGNoYW5nZSIsdGhpcy5fYm91bmRTY2hlZHVsZSl9fV91bmxpc3RlblNsb3RzKHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10W2VdO2ppKG4pJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNsb3RjaGFuZ2UiLHRoaXMuX2JvdW5kU2NoZWR1bGUpfX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IFdpPWZ1bmN0aW9uKCl7bGV0IHQsZTtkb3t0PXdpbmRvdy5TaGFkeURPTSYmU2hhZHlET00uZmx1c2goKSx3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbSYmd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltLmZsdXNoKCksZT1PbigpfXdoaWxlKHR8fGUpfSxxaT1FbGVtZW50LnByb3RvdHlwZSxZaT1xaS5tYXRjaGVzfHxxaS5tYXRjaGVzU2VsZWN0b3J8fHFpLm1vek1hdGNoZXNTZWxlY3Rvcnx8cWkubXNNYXRjaGVzU2VsZWN0b3J8fHFpLm9NYXRjaGVzU2VsZWN0b3J8fHFpLndlYmtpdE1hdGNoZXNTZWxlY3RvcixYaT1mdW5jdGlvbih0LGUpe3JldHVybiBZaS5jYWxsKHQsZSl9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NsYXNzICRpe2NvbnN0cnVjdG9yKHQpe3dpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlJiZ3aW5kb3cuU2hhZHlET00ucGF0Y2godCksdGhpcy5ub2RlPXR9b2JzZXJ2ZU5vZGVzKHQpe3JldHVybiBuZXcgR2kodGhpcy5ub2RlLHQpfXVub2JzZXJ2ZU5vZGVzKHQpe3QuZGlzY29ubmVjdCgpfW5vdGlmeU9ic2VydmVyKCl7fWRlZXBDb250YWlucyh0KXtpZihZKHRoaXMubm9kZSkuY29udGFpbnModCkpcmV0dXJuITA7bGV0IGU9dCxuPXQub3duZXJEb2N1bWVudDtmb3IoO2UmJmUhPT1uJiZlIT09dGhpcy5ub2RlOyllPVkoZSkucGFyZW50Tm9kZXx8WShlKS5ob3N0O3JldHVybiBlPT09dGhpcy5ub2RlfWdldE93bmVyUm9vdCgpe3JldHVybiBZKHRoaXMubm9kZSkuZ2V0Um9vdE5vZGUoKX1nZXREaXN0cmlidXRlZE5vZGVzKCl7cmV0dXJuInNsb3QiPT09dGhpcy5ub2RlLmxvY2FsTmFtZT9ZKHRoaXMubm9kZSkuYXNzaWduZWROb2Rlcyh7ZmxhdHRlbjohMH0pOltdfWdldERlc3RpbmF0aW9uSW5zZXJ0aW9uUG9pbnRzKCl7bGV0IHQ9W10sZT1ZKHRoaXMubm9kZSkuYXNzaWduZWRTbG90O2Zvcig7ZTspdC5wdXNoKGUpLGU9WShlKS5hc3NpZ25lZFNsb3Q7cmV0dXJuIHR9aW1wb3J0Tm9kZSh0LGUpe2xldCBuPXRoaXMubm9kZSBpbnN0YW5jZW9mIERvY3VtZW50P3RoaXMubm9kZTp0aGlzLm5vZGUub3duZXJEb2N1bWVudDtyZXR1cm4gWShuKS5pbXBvcnROb2RlKHQsZSl9Z2V0RWZmZWN0aXZlQ2hpbGROb2Rlcygpe3JldHVybiBHaS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLm5vZGUpfXF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KXtsZXQgZT10aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKSxuPVtdO2ZvcihsZXQgaSxyPTAsbz1lLmxlbmd0aDtyPG8mJihpPWVbcl0pO3IrKylpLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJlhpKGksdCkmJm4ucHVzaChpKTtyZXR1cm4gbn1nZXQgYWN0aXZlRWxlbWVudCgpe2xldCB0PXRoaXMubm9kZTtyZXR1cm4gdm9pZCAwIT09dC5fYWN0aXZlRWxlbWVudD90Ll9hY3RpdmVFbGVtZW50OnQuYWN0aXZlRWxlbWVudH19ZnVuY3Rpb24gS2kodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlW2ldfSxjb25maWd1cmFibGU6ITB9KX19Y2xhc3MgWml7Y29uc3RydWN0b3IodCl7dGhpcy5ldmVudD10fWdldCByb290VGFyZ2V0KCl7cmV0dXJuIHRoaXMucGF0aFswXX1nZXQgbG9jYWxUYXJnZXQoKXtyZXR1cm4gdGhpcy5ldmVudC50YXJnZXR9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5ldmVudC5jb21wb3NlZFBhdGgoKX19bGV0IEppPSRpO2lmKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlJiZ3aW5kb3cuU2hhZHlET00ubm9QYXRjaCYmd2luZG93LlNoYWR5RE9NLldyYXBwZXIpe2NsYXNzIHQgZXh0ZW5kcyB3aW5kb3cuU2hhZHlET00uV3JhcHBlcnt9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoJGkucHJvdG90eXBlKS5mb3JFYWNoKChlPT57ImFjdGl2ZUVsZW1lbnQiIT1lJiYodC5wcm90b3R5cGVbZV09JGkucHJvdG90eXBlW2VdKX0pKSxLaSh0LnByb3RvdHlwZSxbImNsYXNzTGlzdCJdKSxKaT10LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFppLnByb3RvdHlwZSx7bG9jYWxUYXJnZXQ6e2dldCgpe2NvbnN0IHQ9dGhpcy5ldmVudC5jdXJyZW50VGFyZ2V0LGU9dCYmZXIodCkuZ2V0T3duZXJSb290KCksbj10aGlzLnBhdGg7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IGk9blt0XTtpZihlcihpKS5nZXRPd25lclJvb3QoKT09PWUpcmV0dXJuIGl9fSxjb25maWd1cmFibGU6ITB9LHBhdGg6e2dldCgpe3JldHVybiB3aW5kb3cuU2hhZHlET00uY29tcG9zZWRQYXRoKHRoaXMuZXZlbnQpfSxjb25maWd1cmFibGU6ITB9fSl9ZWxzZSEoZnVuY3Rpb24gUWkodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTt0W2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVtpXS5hcHBseSh0aGlzLm5vZGUsYXJndW1lbnRzKX19fSkoJGkucHJvdG90eXBlLFsiY2xvbmVOb2RlIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInF1ZXJ5U2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yQWxsIl0pLEtpKCRpLnByb3RvdHlwZSxbInBhcmVudE5vZGUiLCJmaXJzdENoaWxkIiwibGFzdENoaWxkIiwibmV4dFNpYmxpbmciLCJwcmV2aW91c1NpYmxpbmciLCJmaXJzdEVsZW1lbnRDaGlsZCIsImxhc3RFbGVtZW50Q2hpbGQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwiY2xhc3NMaXN0Il0pLChmdW5jdGlvbiB0cih0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgaT1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbaV19LHNldDpmdW5jdGlvbih0KXt0aGlzLm5vZGVbaV09dH0sY29uZmlndXJhYmxlOiEwfSl9fSkoJGkucHJvdG90eXBlLFsidGV4dENvbnRlbnQiLCJpbm5lckhUTUwiLCJjbGFzc05hbWUiXSk7Y29uc3QgZXI9ZnVuY3Rpb24odCl7aWYoKHQ9dHx8ZG9jdW1lbnQpaW5zdGFuY2VvZiBKaSlyZXR1cm4gdDtpZih0IGluc3RhbmNlb2YgWmkpcmV0dXJuIHQ7bGV0IGU9dC5fX2RvbUFwaTtyZXR1cm4gZXx8KGU9dCBpbnN0YW5jZW9mIEV2ZW50P25ldyBaaSh0KTpuZXcgSmkodCksdC5fX2RvbUFwaT1lKSxlfSxucj13aW5kb3cuU2hhZHlET00saXI9d2luZG93LlNoYWR5Q1NTOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIHJyKHQsZSl7cmV0dXJuIFkodCkuZ2V0Um9vdE5vZGUoKT09PWV9Ci8qKgogICAgICogQGZpbGVvdmVydmlldwogICAgICogQHN1cHByZXNzIHtjaGVja1Byb3RvdHlwYWxUeXBlc30KICAgICAqIEBsaWNlbnNlIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAgICAgKiBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5CiAgICAgKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAgICAgKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAgICAgKiByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KY29uc3Qgb3I9ImRpc2FibGUtdXBncmFkZSIsYXI9dD0+e2Zvcig7dDspe2NvbnN0IGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCJvYnNlcnZlZEF0dHJpYnV0ZXMiKTtpZihlKXJldHVybiBlLmdldDt0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3J9cmV0dXJuKCk9PltdfTtOKCh0PT57Y29uc3QgZT15ZSh0KTtsZXQgbj1hcihlKTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBle2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVybiBuLmNhbGwodGhpcykuY29uY2F0KG9yKX1faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXt0aGlzLmhhc0F0dHJpYnV0ZShvcik/dGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSEwOnN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5fZW5hYmxlUHJvcGVydGllcygpfV9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KXtyZXR1cm4gc3VwZXIuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHQpJiYhKHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmdGhpcy5faXNQcm9wZXJ0eVBlbmRpbmcodCkpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXt0PT1vcj90aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJm51bGw9PW4mJihzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQ9ITEsWSh0aGlzKS5pc0Nvbm5lY3RlZCYmc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSk6c3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpfWNvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX19KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNyPSJkaXNhYmxlLXVwZ3JhZGUiO2xldCBscj13aW5kb3cuU2hhZHlDU1M7Y29uc3QgY3I9TigodD0+e2NvbnN0IGU9YmkoeWUodCkpLG49X2U/ZTpMaShlKSxpPWFyKG4pLHI9e3g6InBhbi14Iix5OiJwYW4teSIsbm9uZToibm9uZSIsYWxsOiJhdXRvIn07Y2xhc3MgbyBleHRlbmRzIG57Y29uc3RydWN0b3IoKXtzdXBlcigpfXN0YXRpYyBnZXQgaW1wb3J0TWV0YSgpe3JldHVybiB0aGlzLnByb3RvdHlwZS5pbXBvcnRNZXRhfWNyZWF0ZWQoKXt9X19hdHRyaWJ1dGVSZWFjdGlvbih0LGUsbil7KHRoaXMuX19kYXRhQXR0cmlidXRlcyYmdGhpcy5fX2RhdGFBdHRyaWJ1dGVzW3RdfHx0PT09c3IpJiZ0aGlzLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixudWxsKX1zZXRBdHRyaWJ1dGUodCxlKXtpZihQJiYhdGhpcy5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpe2NvbnN0IG49dGhpcy5nZXRBdHRyaWJ1dGUodCk7c3VwZXIuc2V0QXR0cmlidXRlKHQsZSksdGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKHQsbixTdHJpbmcoZSkpfWVsc2Ugc3VwZXIuc2V0QXR0cmlidXRlKHQsZSl9cmVtb3ZlQXR0cmlidXRlKHQpe2lmKFAmJiF0aGlzLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyl7Y29uc3QgZT10aGlzLmdldEF0dHJpYnV0ZSh0KTtzdXBlci5yZW1vdmVBdHRyaWJ1dGUodCksdGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKHQsZSxudWxsKX1lbHNlIHN1cGVyLnJlbW92ZUF0dHJpYnV0ZSh0KX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVybiBQJiYhdGhpcy5wcm90b3R5cGUuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzPyh0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzIix0aGlzKSl8fCh0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzPVtdKSx0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzKTppLmNhbGwodGhpcykuY29uY2F0KHNyKX1fZW5hYmxlUHJvcGVydGllcygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8c3VwZXIuX2VuYWJsZVByb3BlcnRpZXMoKX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIHN1cGVyLl9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KSYmISh0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJnRoaXMuX2lzUHJvcGVydHlQZW5kaW5nKHQpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX19uZWVkc0F0dHJpYnV0ZXNBdENvbm5lY3RlZCYmdGhpcy5fdGFrZUF0dHJpYnV0ZXMoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fChzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaXNBdHRhY2hlZD0hMCx0aGlzLmF0dGFjaGVkKCkpfWF0dGFjaGVkKCl7fWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHwoc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmlzQXR0YWNoZWQ9ITEsdGhpcy5kZXRhY2hlZCgpKX1kZXRhY2hlZCgpe31hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7ZSE9PW4mJih0PT1zcj90aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJm51bGw9PW4mJih0aGlzLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMSxZKHRoaXMpLmlzQ29ubmVjdGVkJiZ0aGlzLmNvbm5lY3RlZENhbGxiYWNrKCkpOihzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSksdGhpcy5hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKSkpfWF0dHJpYnV0ZUNoYW5nZWQodCxlLG4pe31faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXtpZih3JiZ0aGlzLmhhc0F0dHJpYnV0ZShzcikpdGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSEwO2Vsc2V7bGV0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO3QuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIix0KSl8fCh0aGlzLl9yZWdpc3RlcmVkKCksdC5fX2hhc1JlZ2lzdGVyRmluaXNoZWQ9ITApLHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMucm9vdD10aGlzLHRoaXMuY3JlYXRlZCgpLFAmJiF0aGlzLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyYmKHRoaXMuaGFzQXR0cmlidXRlcygpP3RoaXMuX3Rha2VBdHRyaWJ1dGVzKCk6dGhpcy5wYXJlbnROb2RlfHwodGhpcy5fX25lZWRzQXR0cmlidXRlc0F0Q29ubmVjdGVkPSEwKSksdGhpcy5fYXBwbHlMaXN0ZW5lcnMoKX19X3Rha2VBdHRyaWJ1dGVzKCl7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXM7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV07dGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKG4ubmFtZSxudWxsLG4udmFsdWUpfX1fcmVnaXN0ZXJlZCgpe31yZWFkeSgpe3RoaXMuX2Vuc3VyZUF0dHJpYnV0ZXMoKSxzdXBlci5yZWFkeSgpfV9lbnN1cmVBdHRyaWJ1dGVzKCl7fV9hcHBseUxpc3RlbmVycygpe31zZXJpYWxpemUodCl7cmV0dXJuIHRoaXMuX3NlcmlhbGl6ZVZhbHVlKHQpfWRlc2VyaWFsaXplKHQsZSl7cmV0dXJuIHRoaXMuX2Rlc2VyaWFsaXplVmFsdWUodCxlKX1yZWZsZWN0UHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil9c2VyaWFsaXplVmFsdWVUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUobnx8dGhpcyx0LGUpfWV4dGVuZCh0LGUpe2lmKCF0fHwhZSlyZXR1cm4gdHx8ZTtsZXQgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKTtmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKyl7bGV0IG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpO24mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksbil9cmV0dXJuIHR9bWl4aW4odCxlKXtmb3IobGV0IG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9Y2hhaW5PYmplY3QodCxlKXtyZXR1cm4gdCYmZSYmdCE9PWUmJih0Ll9fcHJvdG9fXz1lKSx0fWluc3RhbmNlVGVtcGxhdGUodCl7bGV0IGU9dGhpcy5jb25zdHJ1Y3Rvci5fY29udGVudEZvclRlbXBsYXRlKHQpO3JldHVybiBkb2N1bWVudC5pbXBvcnROb2RlKGUsITApfWZpcmUodCxlLG4pe249bnx8e30sZT1udWxsPT1lP3t9OmU7bGV0IGk9bmV3IEV2ZW50KHQse2J1YmJsZXM6dm9pZCAwPT09bi5idWJibGVzfHxuLmJ1YmJsZXMsY2FuY2VsYWJsZTpCb29sZWFuKG4uY2FuY2VsYWJsZSksY29tcG9zZWQ6dm9pZCAwPT09bi5jb21wb3NlZHx8bi5jb21wb3NlZH0pO3JldHVybiBpLmRldGFpbD1lLFkobi5ub2RlfHx0aGlzKS5kaXNwYXRjaEV2ZW50KGkpLGl9bGlzdGVuKHQsZSxuKXt0PXR8fHRoaXM7bGV0IGk9dGhpcy5fX2JvdW5kTGlzdGVuZXJzfHwodGhpcy5fX2JvdW5kTGlzdGVuZXJzPW5ldyBXZWFrTWFwKSxyPWkuZ2V0KHQpO3J8fChyPXt9LGkuc2V0KHQscikpO2xldCBvPWUrbjtyW29dfHwocltvXT10aGlzLl9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuLHRoaXMpKX11bmxpc3Rlbih0LGUsbil7dD10fHx0aGlzO2xldCBpPXRoaXMuX19ib3VuZExpc3RlbmVycyYmdGhpcy5fX2JvdW5kTGlzdGVuZXJzLmdldCh0KSxyPWUrbixvPWkmJmlbcl07byYmKHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbyksaVtyXT1udWxsKX1zZXRTY3JvbGxEaXJlY3Rpb24odCxlKXtkaShlfHx0aGlzLHJbdF18fCJhdXRvIil9JCQodCl7cmV0dXJuIHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKHQpfWdldCBkb21Ib3N0KCl7bGV0IHQ9WSh0aGlzKS5nZXRSb290Tm9kZSgpO3JldHVybiB0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudD90Lmhvc3Q6dH1kaXN0cmlidXRlQ29udGVudCgpe2NvbnN0IHQ9ZXIodGhpcyk7d2luZG93LlNoYWR5RE9NJiZ0LnNoYWRvd1Jvb3QmJlNoYWR5RE9NLmZsdXNoKCl9Z2V0RWZmZWN0aXZlQ2hpbGROb2Rlcygpe3JldHVybiBlcih0aGlzKS5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCl9cXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpe3JldHVybiBlcih0aGlzKS5xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHModCl9Z2V0RWZmZWN0aXZlQ2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSkpfWdldEVmZmVjdGl2ZVRleHRDb250ZW50KCl7bGV0IHQ9dGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCksZT1bXTtmb3IobGV0IG4saT0wO249dFtpXTtpKyspbi5ub2RlVHlwZSE9PU5vZGUuQ09NTUVOVF9OT0RFJiZlLnB1c2gobi50ZXh0Q29udGVudCk7cmV0dXJuIGUuam9pbigiIil9cXVlcnlFZmZlY3RpdmVDaGlsZHJlbih0KXtsZXQgZT10aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KTtyZXR1cm4gZSYmZVswXX1xdWVyeUFsbEVmZmVjdGl2ZUNoaWxkcmVuKHQpe3JldHVybiB0aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KX1nZXRDb250ZW50Q2hpbGROb2Rlcyh0KXtsZXQgZT10aGlzLnJvb3QucXVlcnlTZWxlY3Rvcih0fHwic2xvdCIpO3JldHVybiBlP2VyKGUpLmdldERpc3RyaWJ1dGVkTm9kZXMoKTpbXX1nZXRDb250ZW50Q2hpbGRyZW4odCl7cmV0dXJuIHRoaXMuZ2V0Q29udGVudENoaWxkTm9kZXModCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSkpfWlzTGlnaHREZXNjZW5kYW50KHQpe2NvbnN0IGU9dGhpcztyZXR1cm4gZSE9PXQmJlkoZSkuY29udGFpbnModCkmJlkoZSkuZ2V0Um9vdE5vZGUoKT09PVkodCkuZ2V0Um9vdE5vZGUoKX1pc0xvY2FsRGVzY2VuZGFudCh0KXtyZXR1cm4gdGhpcy5yb290PT09WSh0KS5nZXRSb290Tm9kZSgpfXNjb3BlU3VidHJlZSh0LGU9ITEpe3JldHVybihmdW5jdGlvbiBuKHQsZT0hMSl7aWYoIW5yfHwhaXIpcmV0dXJuIG51bGw7aWYoIW5yLmhhbmRsZXNEeW5hbWljU2NvcGluZylyZXR1cm4gbnVsbDtjb25zdCBuPWlyLlNjb3BpbmdTaGltO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IGk9bi5zY29wZUZvck5vZGUodCkscj1ZKHQpLmdldFJvb3ROb2RlKCksbz10PT57aWYoIXJyKHQscikpcmV0dXJuO2NvbnN0IGU9QXJyYXkuZnJvbShuci5uYXRpdmVNZXRob2RzLnF1ZXJ5U2VsZWN0b3JBbGwuY2FsbCh0LCIqIikpO2UucHVzaCh0KTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbz1lW3RdO2lmKCFycihvLHIpKWNvbnRpbnVlO2NvbnN0IGE9bi5jdXJyZW50U2NvcGVGb3JOb2RlKG8pO2EhPT1pJiYoIiIhPT1hJiZuLnVuc2NvcGVOb2RlKG8sYSksbi5zY29wZU5vZGUobyxpKSl9fTtpZihvKHQpLGUpe2NvbnN0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdO2ZvcihsZXQgdD0wO3Q8bi5hZGRlZE5vZGVzLmxlbmd0aDt0Kyspe2NvbnN0IGU9bi5hZGRlZE5vZGVzW3RdO2Uubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmbyhlKX19fSkpO3JldHVybiBlLm9ic2VydmUodCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxlfXJldHVybiBudWxsfSkodCxlKX1nZXRDb21wdXRlZFN0eWxlVmFsdWUodCl7cmV0dXJuIGxyLmdldENvbXB1dGVkU3R5bGVWYWx1ZSh0aGlzLHQpfWRlYm91bmNlKHQsZSxuKXtyZXR1cm4gdGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPUluLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbj4wP2d0LmFmdGVyKG4pOnZ0LGUuYmluZCh0aGlzKSl9aXNEZWJvdW5jZXJBY3RpdmUodCl7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fTtsZXQgZT10aGlzLl9kZWJvdW5jZXJzW3RdO3JldHVybiEoIWV8fCFlLmlzQWN0aXZlKCkpfWZsdXNoRGVib3VuY2VyKHQpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGU9dGhpcy5fZGVib3VuY2Vyc1t0XTtlJiZlLmZsdXNoKCl9Y2FuY2VsRGVib3VuY2VyKHQpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGU9dGhpcy5fZGVib3VuY2Vyc1t0XTtlJiZlLmNhbmNlbCgpfWFzeW5jKHQsZSl7cmV0dXJuIGU+MD9ndC5ydW4odC5iaW5kKHRoaXMpLGUpOn52dC5ydW4odC5iaW5kKHRoaXMpKX1jYW5jZWxBc3luYyh0KXt0PDA/dnQuY2FuY2VsKH50KTpndC5jYW5jZWwodCl9Y3JlYXRlKHQsZSl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtpZihlKWlmKG4uc2V0UHJvcGVydGllcyluLnNldFByb3BlcnRpZXMoZSk7ZWxzZSBmb3IobGV0IHQgaW4gZSluW3RdPWVbdF07cmV0dXJuIG59ZWxlbWVudE1hdGNoZXModCxlKXtyZXR1cm4gWGkoZXx8dGhpcyx0KX10b2dnbGVBdHRyaWJ1dGUodCxlKXtsZXQgbj10aGlzO3JldHVybiAzPT09YXJndW1lbnRzLmxlbmd0aCYmKG49YXJndW1lbnRzWzJdKSwxPT1hcmd1bWVudHMubGVuZ3RoJiYoZT0hbi5oYXNBdHRyaWJ1dGUodCkpLGU/KFkobikuc2V0QXR0cmlidXRlKHQsIiIpLCEwKTooWShuKS5yZW1vdmVBdHRyaWJ1dGUodCksITEpfXRvZ2dsZUNsYXNzKHQsZSxuKXtuPW58fHRoaXMsMT09YXJndW1lbnRzLmxlbmd0aCYmKGU9IW4uY2xhc3NMaXN0LmNvbnRhaW5zKHQpKSxlP24uY2xhc3NMaXN0LmFkZCh0KTpuLmNsYXNzTGlzdC5yZW1vdmUodCl9dHJhbnNmb3JtKHQsZSl7KGU9ZXx8dGhpcykuc3R5bGUud2Via2l0VHJhbnNmb3JtPXQsZS5zdHlsZS50cmFuc2Zvcm09dH10cmFuc2xhdGUzZCh0LGUsbixpKXt0aGlzLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIit0KyIsIitlKyIsIituKyIpIixpPWl8fHRoaXMpfWFycmF5RGVsZXRlKHQsZSl7bGV0IG47aWYoQXJyYXkuaXNBcnJheSh0KSl7aWYobj10LmluZGV4T2YoZSksbj49MClyZXR1cm4gdC5zcGxpY2UobiwxKX1lbHNle2lmKG49bnQodGhpcyx0KS5pbmRleE9mKGUpLG4+PTApcmV0dXJuIHRoaXMuc3BsaWNlKHQsbiwxKX1yZXR1cm4gbnVsbH1fbG9nZ2VyKHQsZSl7c3dpdGNoKEFycmF5LmlzQXJyYXkoZSkmJjE9PT1lLmxlbmd0aCYmQXJyYXkuaXNBcnJheShlWzBdKSYmKGU9ZVswXSksdCl7Y2FzZSJsb2ciOmNhc2Uid2FybiI6Y2FzZSJlcnJvciI6Y29uc29sZVt0XSguLi5lKX19X2xvZyguLi50KXt0aGlzLl9sb2dnZXIoImxvZyIsdCl9X3dhcm4oLi4udCl7dGhpcy5fbG9nZ2VyKCJ3YXJuIix0KX1fZXJyb3IoLi4udCl7dGhpcy5fbG9nZ2VyKCJlcnJvciIsdCl9X2xvZ2YodCwuLi5lKXtyZXR1cm5bIlslczo6JXNdIix0aGlzLmlzLHQsLi4uZV19fXJldHVybiBvLnByb3RvdHlwZS5pcz0iIixvfSkpO2Z1bmN0aW9uIHVyKHQsZSl7bGV0IG49MCxpPTA7Zm9yKDs7KXtpZihuPT09dC5sZW5ndGgpcmV0dXJuIGk9PT1lLmxlbmd0aD8wOi0xO2lmKGk9PT1lLmxlbmd0aClyZXR1cm4gMTtpZihkcih0W25dKSYmZHIoZVtpXSkpe2NvbnN0IHI9bixvPWk7bj1ocih0LG4rMSksaT1ocihlLGkrMSk7Y29uc3QgYT1wYXJzZUZsb2F0KHQuc2xpY2UocixuKSkscz1wYXJzZUZsb2F0KGUuc2xpY2UobyxpKSk7aWYoYTxzKXJldHVybi0xO2lmKGE+cylyZXR1cm4gMX1lbHNle2lmKHByKHRbbl0pKXtpZighcHIoZVtpXSkpcmV0dXJuLTF9ZWxzZXtpZihwcihlW2ldKSlyZXR1cm4gMTtpZih0W25dPGVbaV0pcmV0dXJuLTE7aWYodFtuXT5lW2ldKXJldHVybiAxfW4rKyxpKyt9fX1mdW5jdGlvbiBocih0LGUpe2xldCBuOyEoZnVuY3Rpb24odCl7dFt0Lk5BVFVSQUw9MF09Ik5BVFVSQUwiLHRbdC5SRUFMPTFdPSJSRUFMIix0W3QuRVhQT05FTlRfU0lHTj0yXT0iRVhQT05FTlRfU0lHTiIsdFt0LkVYUE9ORU5UPTNdPSJFWFBPTkVOVCJ9KShufHwobj17fSkpO2xldCBpPW4uTkFUVVJBTDtmb3IoO2U8dC5sZW5ndGg7ZSsrKWlmKGk9PT1uLk5BVFVSQUwpe2lmKCIuIj09PXRbZV0paT1uLlJFQUw7ZWxzZSBpZigiZSI9PT10W2VdfHwiRSI9PT10W2VdKWk9bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIWRyKHRbZV0pKWJyZWFrfWVsc2UgaWYoaT09PW4uUkVBTCl7aWYoImUiPT09dFtlXXx8IkUiPT09dFtlXSlpPW4uRVhQT05FTlRfU0lHTjtlbHNlIGlmKCFkcih0W2VdKSlicmVha31lbHNlIGlmKGk9PT1uLkVYUE9ORU5UX1NJR04pe2lmKCFkcih0W2VdKSYmIisiIT09dFtlXSYmIi0iIT09dFtlXSlicmVhaztpPW4uRVhQT05FTlR9ZWxzZSBpZihpPT09bi5FWFBPTkVOVCYmIWRyKHRbZV0pKWJyZWFrO3JldHVybiBlfWZ1bmN0aW9uIGRyKHQpe3JldHVybiIwIjw9dCYmdDw9IjkifWZ1bmN0aW9uIHByKHQpe3JldHVybiIvIj09PXR8fCJfIj09PXR8fGRyKHQpfWZ1bmN0aW9uIGZyKHQpe3JldHVybiBDZS5leHBvcnRzLnVuaW9uLmFwcGx5KG51bGwsQ2UuZXhwb3J0cy52YWx1ZXModCkpLnNvcnQodXIpfWNsYXNzIG1yIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubmFtZT0iUmVxdWVzdENhbmNlbGxhdGlvbkVycm9yIn19Y2xhc3MgZ3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IkludmFsaWRSZXF1ZXN0T3B0aW9uc0Vycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxnci5wcm90b3R5cGUpfX1jbGFzcyBfciBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLm1lc3NhZ2U9YFJlcXVlc3ROZXR3b3JrRXJyb3I6ICR7dC5zdGF0dXN9IGF0ICR7ZX1gLHRoaXMubmFtZT0iUmVxdWVzdE5ldHdvcmtFcnJvciIsdGhpcy5yZXE9dCx0aGlzLnVybD1lfX12YXIgeXI7IShmdW5jdGlvbih0KXt0LkdFVD0iR0VUIix0LlBPU1Q9IlBPU1QifSkoeXJ8fCh5cj17fSkpO2NsYXNzIHZye3ZhbGlkYXRlKCl7aWYodGhpcy5tZXRob2RUeXBlPT09eXIuR0VUJiZ0aGlzLmJvZHkpdGhyb3cgbmV3IGdyKCJib2R5IG11c3QgYmUgbWlzc2luZyBmb3IgYSBHRVQgcmVxdWVzdC4iKX19Y2xhc3MgYnJ7Y29uc3RydWN0b3IodD0xZTMsZT0zKXt0aGlzLl9xdWV1ZT1bXSx0aGlzLl9uQWN0aXZlUmVxdWVzdHM9MCx0aGlzLl9uU2ltdWx0YW5lb3VzUmVxdWVzdHM9dCx0aGlzLl9tYXhSZXRyaWVzPWV9cmVxdWVzdCh0LGUpe2NvbnN0IG49KGZ1bmN0aW9uIGkodCl7Y29uc3QgZT1uZXcgdnI7aWYoIXQpcmV0dXJuIGUubWV0aG9kVHlwZT15ci5HRVQsZTtyZXR1cm4gZS5tZXRob2RUeXBlPXlyLlBPU1QsZS5ib2R5PShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9bmV3IEZvcm1EYXRhO2Zvcihjb25zdFtuLGldb2YgT2JqZWN0LmVudHJpZXModCkpe2NvbnN0IHQ9QXJyYXkuaXNBcnJheShpKT9pOltpXTtmb3IoY29uc3QgaSBvZiB0KWUuYXBwZW5kKG4saSl9cmV0dXJuIGV9KSh0KSxlfSkoZSk7cmV0dXJuIHRoaXMucmVxdWVzdFdpdGhPcHRpb25zKHQsbil9cmVxdWVzdFdpdGhPcHRpb25zKHQsZSl7ZS52YWxpZGF0ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PnRoaXMucHJvbWlzZVdpdGhSZXRyaWVzKHQsdGhpcy5fbWF4UmV0cmllcyxlKSkpLnRoZW4oKHQ9Pih0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCksdCkpLCh0PT4oIlJlcXVlc3ROZXR3b3JrRXJyb3IiPT09dC5uYW1lJiYodGhpcy5fbkFjdGl2ZVJlcXVlc3RzLS0sdGhpcy5sYXVuY2hSZXF1ZXN0cygpKSxQcm9taXNlLnJlamVjdCh0KSkpKX1mZXRjaCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PntsZXQgbj0xO3JldHVybiBuZXcgUHJvbWlzZSgoaT0+e2NvbnN0IHI9KCk9PntmZXRjaCh0LGUpLnRoZW4oKHQ9PntpZighdC5vayYmdGhpcy5fbWF4UmV0cmllcz5uKXJldHVybiBuKyssdm9pZCByKCk7aSh0KSx0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSl9O3IoKX0pKX0pKX1jbGVhclF1ZXVlKCl7Zm9yKDt0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fcXVldWUucG9wKCkucmVqZWN0KG5ldyBtcigiUmVxdWVzdCBjYW5jZWxsZWQgYnkgY2xlYXJRdWV1ZSIpKX1hY3RpdmVSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHN9b3V0c3RhbmRpbmdSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHMrdGhpcy5fcXVldWUubGVuZ3RofWxhdW5jaFJlcXVlc3RzKCl7Zm9yKDt0aGlzLl9uQWN0aXZlUmVxdWVzdHM8dGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzJiZ0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fbkFjdGl2ZVJlcXVlc3RzKyssdGhpcy5fcXVldWUucG9wKCkucmVzb2x2ZSh2b2lkIDApfXByb21pc2VXaXRoUmV0cmllcyh0LGUsbil7cmV0dXJuIHRoaXMuX3Byb21pc2VGcm9tVXJsKHQsbikudGhlbigodD0+dCksKGk9PmU+MD90aGlzLnByb21pc2VXaXRoUmV0cmllcyh0LGUtMSxuKTpQcm9taXNlLnJlamVjdChpKSkpfV9wcm9taXNlRnJvbVVybCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKG4saSk9Pntjb25zdCByPShmdW5jdGlvbiBvKHQsZSxuLGkpe2NvbnN0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3Iub3Blbih0LGUpLG4mJihyLndpdGhDcmVkZW50aWFscz1uKTtpJiZyLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsaSk7cmV0dXJuIHJ9KShlLm1ldGhvZFR5cGUsdCxlLndpdGhDcmVkZW50aWFscyxlLmNvbnRlbnRUeXBlKTtyLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PXIuc3RhdHVzP24oSlNPTi5wYXJzZShyLnJlc3BvbnNlVGV4dCkpOmkobmV3IF9yKHIsdCkpfSxyLm9uZXJyb3I9ZnVuY3Rpb24oKXtpKG5ldyBfcihyLHQpKX0sZS5ib2R5P3Iuc2VuZChlLmJvZHkpOnIuc2VuZCgpfSkpfX1jb25zdCB4cj0iZXhwZXJpbWVudGFsUGx1Z2luIix3cj1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2xldCBTcj1NcigpO2Z1bmN0aW9uIE1yKHQ9ImRhdGEiLGU9d3Ipe3JldHVybiIvIj09PXRbdC5sZW5ndGgtMV0mJih0PXQuc2xpY2UoMCx0Lmxlbmd0aC0xKSkse2Vudmlyb25tZW50OigpPT5Ucih0LCIvZW52aXJvbm1lbnQiKSxleHBlcmltZW50czooKT0+VHIodCwiL2V4cGVyaW1lbnRzIikscGx1Z2luUm91dGU6KGUsbixpKT0+VHIodCsiL3BsdWdpbiIsYC8ke2V9JHtufWAsaSkscGx1Z2luc0xpc3Rpbmc6KCk9PlRyKHQsIi9wbHVnaW5zX2xpc3RpbmciLENyKHtbeHJdOmUuZ2V0QWxsKHhyKX0pKSxydW5zOigpPT5Ucih0LCIvcnVucyIpLHJ1bnNGb3JFeHBlcmltZW50OmU9PlRyKHQsIi9leHBlcmltZW50X3J1bnMiLENyKHtleHBlcmltZW50OlN0cmluZyhlKX0pKX19ZnVuY3Rpb24gRXIoKXtyZXR1cm4gU3J9ZnVuY3Rpb24gVHIodCxlLG49bmV3IFVSTFNlYXJjaFBhcmFtcyl7bGV0IGk9dCtlO2lmKFN0cmluZyhuKSl7aSs9KGUuaW5jbHVkZXMoIj8iKT8iJiI6Ij8iKStTdHJpbmcobil9cmV0dXJuIGl9ZnVuY3Rpb24gQ3IodD17fSl7Y29uc3QgZT1PYmplY3Qua2V5cyh0KS5zb3J0KCkuZmlsdGVyKChlPT50W2VdKSksbj1uZXcgVVJMU2VhcmNoUGFyYW1zO3JldHVybiBlLmZvckVhY2goKGU9Pntjb25zdCBpPXRbZV07KEFycmF5LmlzQXJyYXkoaSk/aTpbaV0pLmZvckVhY2goKHQ9Pm4uYXBwZW5kKGUsdCkpKX0pKSxufXZhciBBcjtmdW5jdGlvbiBrcih0LGUpe2NvbnN0IG49KCgpPT57dHJ5e3JldHVybiBuZXcgUmVnRXhwKGUpfWNhdGNoKHQpe3JldHVybiBudWxsfX0pKCk7cmV0dXJue25hbWU6ZSxtZXRhZGF0YTp7dHlwZTpBci5TRUFSQ0hfUkVTVUxUUyx2YWxpZFJlZ2V4OiEhbix1bml2ZXJzYWxSZWdleDoiLioiPT09ZX0saXRlbXM6bj90LmZpbHRlcigodD0+dC5tYXRjaChuKSkpOltdfX1mdW5jdGlvbiBQcih0LGU9IiIpe2NvbnN0IG49W2tyKHQsZSldLGk9KGZ1bmN0aW9uIHIodCxlPSIvIil7Y29uc3Qgbj1bXSxpPXt9O3JldHVybiB0LmZvckVhY2goKHQ9Pntjb25zdCByPXQuaW5kZXhPZihlKSxvPXI+PTA/dC5zbGljZSgwLHIpOnQ7aWYoIWlbb10pe2NvbnN0IHQ9e25hbWU6byxtZXRhZGF0YTp7dHlwZTpBci5QUkVGSVhfR1JPVVB9LGl0ZW1zOltdfTtpW29dPXQsbi5wdXNoKHQpfWlbb10uaXRlbXMucHVzaCh0KX0pKSxufSkodCk7cmV0dXJuW10uY29uY2F0KG4saSl9ZnVuY3Rpb24gTHIodCxlLG4pe2NvbnN0IGk9UHIoZnIodCksbikscj0oZnVuY3Rpb24gbyh0KXtjb25zdCBlPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnt0W25dLmZvckVhY2goKHQ9Pntjb25zdCBpPWUuZ2V0KHQpfHxbXTtpLnB1c2gobiksZS5zZXQodCxpKX0pKX0pKSxlfSkoQ2UuZXhwb3J0cy5waWNrKHQsZSkpO3JldHVybiBpLm1hcCgoKHtuYW1lOnQsbWV0YWRhdGE6ZSxpdGVtczpufSk9Pih7bmFtZTp0LG1ldGFkYXRhOmUsaXRlbXM6bi5tYXAoKHQ9Pih7dGFnOnQscnVuczooci5nZXQodCl8fFtdKS5zbGljZSgpfSkpKX0pKSl9ZnVuY3Rpb24gSXIodCxlKXtjb25zdCBuPXVyKHQudGFnLGUudGFnKTtyZXR1cm4gMCE9bj9uOnVyKHQucnVuLGUucnVuKX1mdW5jdGlvbiBOcih0LGUsbil7cmV0dXJuIExyKHQsZSxuKS5tYXAoKGZ1bmN0aW9uIGkodCl7Y29uc3QgZT1DZS5leHBvcnRzLmZsYXR0ZW4odC5pdGVtcy5tYXAoKCh7dGFnOnQscnVuczplfSk9PmUubWFwKChlPT4oe3RhZzp0LHJ1bjplfSkpKSkpKTtyZXR1cm4gZS5zb3J0KElyKSx7bmFtZTp0Lm5hbWUsbWV0YWRhdGE6dC5tZXRhZGF0YSxpdGVtczplfX0pKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8hKGZ1bmN0aW9uKHQpe3RbdC5TRUFSQ0hfUkVTVUxUUz0wXT0iU0VBUkNIX1JFU1VMVFMiLHRbdC5QUkVGSVhfR1JPVVA9MV09IlBSRUZJWF9HUk9VUCJ9KShBcnx8KEFyPXt9KSk7Y29uc3QgUnI9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGxpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMH0sT3I9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGJlaGF2aW9yczohMCxfbm9BY2Nlc3NvcnM6ITB9LHpyPU9iamVjdC5hc3NpZ24oe2xpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMCxwcm9wZXJ0aWVzOiEwLG9ic2VydmVyczohMH0sT3IpO2Z1bmN0aW9uIERyKHQsZSxuLGkpeyEoZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT10Ll9ub0FjY2Vzc29ycyxyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtsZXQgYT1yW29dO2lmKCEoYSBpbiBuKSlpZihpKWVbYV09dFthXTtlbHNle2xldCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxhKTtuJiYobi5jb25maWd1cmFibGU9ITAsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYSxuKSl9fX0pKGUsdCxpKTtmb3IobGV0IHQgaW4gUnIpZVt0XSYmKG5bdF09blt0XXx8W10sblt0XS5wdXNoKGVbdF0pKX1mdW5jdGlvbiBCcih0LGUsbil7ZT1lfHxbXTtmb3IobGV0IGk9dC5sZW5ndGgtMTtpPj0wO2ktLSl7bGV0IHI9dFtpXTtyP0FycmF5LmlzQXJyYXkocik/QnIocixlKTplLmluZGV4T2Yocik8MCYmKCFufHxuLmluZGV4T2Yocik8MCkmJmUudW5zaGlmdChyKTpjb25zb2xlLndhcm4oImJlaGF2aW9yIGlzIG51bGwsIGNoZWNrIGZvciBtaXNzaW5nIG9yIDQwNCBpbXBvcnQiKX1yZXR1cm4gZX1mdW5jdGlvbiBIcih0LGUpe2Zvcihjb25zdCBuIGluIGUpe2NvbnN0IGk9dFtuXSxyPWVbbl07dFtuXT0hKCJ2YWx1ZSJpbiByKSYmaSYmInZhbHVlImluIGk/T2JqZWN0LmFzc2lnbih7dmFsdWU6aS52YWx1ZX0scik6cn19Y29uc3QgRnI9Y3IoSFRNTEVsZW1lbnQpO2Z1bmN0aW9uIFZyKHQsZSxuKXtsZXQgaTtjb25zdCByPXt9O2NsYXNzIG8gZXh0ZW5kcyBle3N0YXRpYyBfZmluYWxpemVDbGFzcygpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiZ2VuZXJhdGVkRnJvbSIsdGhpcykpKXtpZihpKWZvcihsZXQgdCxlPTA7ZTxpLmxlbmd0aDtlKyspdD1pW2VdLHQucHJvcGVydGllcyYmdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKHQucHJvcGVydGllcyksdC5vYnNlcnZlcnMmJnRoaXMuY3JlYXRlT2JzZXJ2ZXJzKHQub2JzZXJ2ZXJzLHQucHJvcGVydGllcyk7dC5wcm9wZXJ0aWVzJiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModC5wcm9wZXJ0aWVzKSx0Lm9ic2VydmVycyYmdGhpcy5jcmVhdGVPYnNlcnZlcnModC5vYnNlcnZlcnMsdC5wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1lbHNlIGUuX2ZpbmFsaXplQ2xhc3MuY2FsbCh0aGlzKX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtjb25zdCBlPXt9O2lmKGkpZm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspSHIoZSxpW3RdLnByb3BlcnRpZXMpO3JldHVybiBIcihlLHQucHJvcGVydGllcyksZX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe2xldCBlPVtdO2lmKGkpZm9yKGxldCB0LG49MDtuPGkubGVuZ3RoO24rKyl0PWlbbl0sdC5vYnNlcnZlcnMmJihlPWUuY29uY2F0KHQub2JzZXJ2ZXJzKSk7cmV0dXJuIHQub2JzZXJ2ZXJzJiYoZT1lLmNvbmNhdCh0Lm9ic2VydmVycykpLGV9Y3JlYXRlZCgpe3N1cGVyLmNyZWF0ZWQoKTtjb25zdCB0PXIuY3JlYXRlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1fcmVnaXN0ZXJlZCgpe2NvbnN0IHQ9by5wcm90b3R5cGU7aWYoIXQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIix0KSkpe3QuX19oYXNSZWdpc3RlckZpbmlzaGVkPSEwLHN1cGVyLl9yZWdpc3RlcmVkKCksdyYmYSh0KTtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtsZXQgbj1yLmJlZm9yZVJlZ2lzdGVyO2lmKG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpO2lmKG49ci5yZWdpc3RlcmVkLG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpfX1fYXBwbHlMaXN0ZW5lcnMoKXtzdXBlci5fYXBwbHlMaXN0ZW5lcnMoKTtjb25zdCB0PXIubGlzdGVuZXJzO2lmKHQpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtpZihuKWZvcihsZXQgdCBpbiBuKXRoaXMuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcyx0LG5bdF0pfX1fZW5zdXJlQXR0cmlidXRlcygpe2NvbnN0IHQ9ci5ob3N0QXR0cmlidXRlcztpZih0KWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBuPXRbZV07Zm9yKGxldCB0IGluIG4pdGhpcy5fZW5zdXJlQXR0cmlidXRlKHQsblt0XSl9c3VwZXIuX2Vuc3VyZUF0dHJpYnV0ZXMoKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7bGV0IHQ9ci5yZWFkeTtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRhY2hlZCgpe3N1cGVyLmF0dGFjaGVkKCk7bGV0IHQ9ci5hdHRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1kZXRhY2hlZCgpe3N1cGVyLmRldGFjaGVkKCk7bGV0IHQ9ci5kZXRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkKCk7bGV0IGk9ci5hdHRyaWJ1dGVDaGFuZ2VkO2lmKGkpZm9yKGxldCByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5jYWxsKHRoaXMsdCxlLG4pfX1pZihuKXtBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2xldCB0PWUucHJvdG90eXBlLmJlaGF2aW9ycztpPUJyKG4sbnVsbCx0KSxvLnByb3RvdHlwZS5iZWhhdmlvcnM9dD90LmNvbmNhdChuKTppfWNvbnN0IGE9ZT0+e2kmJihmdW5jdGlvbiBuKHQsZSxpKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylEcih0LGVbbl0saSx6cil9KShlLGksciksRHIoZSx0LHIsT3IpfTtyZXR1cm4gd3x8YShvLnByb3RvdHlwZSksby5nZW5lcmF0ZWRGcm9tPXQsb31jb25zdCBVcj1mdW5jdGlvbih0LGUpe3R8fGNvbnNvbGUud2FybigiUG9seW1lci5DbGFzcyByZXF1aXJlcyBgaW5mb2AgYXJndW1lbnQiKTtsZXQgbj1lP2UoRnIpOkZyO3JldHVybiBuPVZyKHQsbix0LmJlaGF2aW9ycyksbi5pcz1uLnByb3RvdHlwZS5pcz10LmlzLG59LGpyPWZ1bmN0aW9uKHQpe2xldCBlO3JldHVybiBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6anIuQ2xhc3ModCksdC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMmJihlLnByb3RvdHlwZS5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXM9dC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpLGN1c3RvbUVsZW1lbnRzLmRlZmluZShlLmlzLGUpLGV9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpmdW5jdGlvbiBHcih0LGUsbixpLHIpe2xldCBvO3ImJihvPSJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4sbyYmKGk9dC5fX2RhdGFUZW1wW2VdKSk7bGV0IGE9aSE9PW4mJihpPT1pfHxuPT1uKTtyZXR1cm4gbyYmYSYmKHQuX19kYXRhVGVtcFtlXT1uKSxhfWpyLkNsYXNzPVVyO2NvbnN0IFdyPU4oKHQ9PmNsYXNzIGV4dGVuZHMgdHtfc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBHcih0aGlzLHQsZSxuLCEwKX19KSkscXI9TigodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdXRhYmxlRGF0YTpCb29sZWFufX1fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBHcih0aGlzLHQsZSxuLHRoaXMubXV0YWJsZURhdGEpfX0pKTtXci5fbXV0YWJsZVByb3BlcnR5Q2hhbmdlPUdyOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgWXI9bnVsbDtmdW5jdGlvbiBYcigpe3JldHVybiBZcn1Yci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MVGVtcGxhdGVFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlhyLHdyaXRhYmxlOiEwfX0pO2NvbnN0ICRyPWZlKFhyKSxLcj1Xcigkcik7Y29uc3QgWnI9ZmUoY2xhc3N7fSk7ZnVuY3Rpb24gSnIodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtpZihCb29sZWFuKHQpIT1Cb29sZWFuKGkuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fKSlpZihpLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpdD8oaS5fX3BvbHltZXJUZXh0Q29udGVudF9fPWkudGV4dENvbnRlbnQsaS50ZXh0Q29udGVudD0iIik6aS50ZXh0Q29udGVudD1pLl9fcG9seW1lclRleHRDb250ZW50X187ZWxzZSBpZigic2xvdCI9PT1pLmxvY2FsTmFtZSlpZih0KWkuX19wb2x5bWVyUmVwbGFjZWRfXz1kb2N1bWVudC5jcmVhdGVDb21tZW50KCJoaWRkZW4tc2xvdCIpLFkoWShpKS5wYXJlbnROb2RlKS5yZXBsYWNlQ2hpbGQoaS5fX3BvbHltZXJSZXBsYWNlZF9fLGkpO2Vsc2V7Y29uc3QgdD1pLl9fcG9seW1lclJlcGxhY2VkX187dCYmWShZKHQpLnBhcmVudE5vZGUpLnJlcGxhY2VDaGlsZChpLHQpfWVsc2UgaS5zdHlsZSYmKHQ/KGkuX19wb2x5bWVyRGlzcGxheV9fPWkuc3R5bGUuZGlzcGxheSxpLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTppLnN0eWxlLmRpc3BsYXk9aS5fX3BvbHltZXJEaXNwbGF5X18pO2kuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fPXQsaS5fc2hvd0hpZGVDaGlsZHJlbiYmaS5fc2hvd0hpZGVDaGlsZHJlbih0KX19Y2xhc3MgUXIgZXh0ZW5kcyBacntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2NvbmZpZ3VyZVByb3BlcnRpZXModCksdGhpcy5yb290PXRoaXMuX3N0YW1wVGVtcGxhdGUodGhpcy5fX2RhdGFIb3N0KTtsZXQgZT1bXTt0aGlzLmNoaWxkcmVuPWU7Zm9yKGxldCB0PXRoaXMucm9vdC5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKWUucHVzaCh0KSx0Ll9fdGVtcGxhdGl6ZUluc3RhbmNlPXRoaXM7dGhpcy5fX3RlbXBsYXRpemVPd25lciYmdGhpcy5fX3RlbXBsYXRpemVPd25lci5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnRoaXMuX3Nob3dIaWRlQ2hpbGRyZW4oITApO2xldCBuPXRoaXMuX190ZW1wbGF0aXplT3B0aW9uczsodCYmbi5pbnN0YW5jZVByb3BzfHwhbi5pbnN0YW5jZVByb3BzKSYmdGhpcy5fZW5hYmxlUHJvcGVydGllcygpfV9jb25maWd1cmVQcm9wZXJ0aWVzKHQpe2lmKHRoaXMuX190ZW1wbGF0aXplT3B0aW9ucy5mb3J3YXJkSG9zdFByb3ApZm9yKGxldCB0IGluIHRoaXMuX19ob3N0UHJvcHMpdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsdGhpcy5fX2RhdGFIb3N0WyJfaG9zdF8iK3RdKTtmb3IobGV0IGUgaW4gdCl0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0W2VdKX1mb3J3YXJkSG9zdFByb3AodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLCExLCEwKSYmdGhpcy5fX2RhdGFIb3N0Ll9lbnF1ZXVlQ2xpZW50KHRoaXMpfV9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuKXtpZih0aGlzLl9tZXRob2RIb3N0JiZ0aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnMucGFyZW50TW9kZWwpdGhpcy5fbWV0aG9kSG9zdC5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsKHQ9Pnt0Lm1vZGVsPXRoaXMsbih0KX0pKTtlbHNle2xldCBpPXRoaXMuX19kYXRhSG9zdC5fX2RhdGFIb3N0O2kmJmkuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pfX1fc2hvd0hpZGVDaGlsZHJlbih0KXtKcih0LHRoaXMuY2hpbGRyZW4pfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7dC5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnQubm9kZVR5cGU9PU5vZGUuVEVYVF9OT0RFJiYidGV4dENvbnRlbnQiPT1lP3QuX19wb2x5bWVyVGV4dENvbnRlbnRfXz1uOnN1cGVyLl9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil9Z2V0IHBhcmVudE1vZGVsKCl7bGV0IHQ9dGhpcy5fX3BhcmVudE1vZGVsO2lmKCF0KXtsZXQgZTt0PXRoaXM7ZG97dD10Ll9fZGF0YUhvc3QuX19kYXRhSG9zdH13aGlsZSgoZT10Ll9fdGVtcGxhdGl6ZU9wdGlvbnMpJiYhZS5wYXJlbnRNb2RlbCk7dGhpcy5fX3BhcmVudE1vZGVsPXR9cmV0dXJuIHR9ZGlzcGF0Y2hFdmVudCh0KXtyZXR1cm4hMH19Y29uc3QgdG89V3IoUXIpO2Z1bmN0aW9uIGVvKHQpe2xldCBlPXQuX19kYXRhSG9zdDtyZXR1cm4gZSYmZS5fbWV0aG9kSG9zdHx8ZX1mdW5jdGlvbiBubyh0LGUsbil7bGV0IGk9bi5tdXRhYmxlRGF0YT90bzpRcjthby5taXhpbiYmKGk9YW8ubWl4aW4oaSkpO2xldCByPWNsYXNzIGV4dGVuZHMgaXt9O3JldHVybiByLnByb3RvdHlwZS5fX3RlbXBsYXRpemVPcHRpb25zPW4sci5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZSh0KSwoZnVuY3Rpb24gbyh0LGUsbixpKXtsZXQgcj1uLmhvc3RQcm9wc3x8e307Zm9yKGxldCBlIGluIGkuaW5zdGFuY2VQcm9wcyl7ZGVsZXRlIHJbZV07bGV0IG49aS5ub3RpZnlJbnN0YW5jZVByb3A7biYmdC5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KGUsdC5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLk5PVElGWSx7Zm46b28oZSxuKX0pfWlmKGkuZm9yd2FyZEhvc3RQcm9wJiZlLl9fZGF0YUhvc3QpZm9yKGxldCBlIGluIHIpbi5oYXNIb3N0UHJvcHN8fChuLmhhc0hvc3RQcm9wcz0hMCksdC5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KGUsdC5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLk5PVElGWSx7Zm46ZnVuY3Rpb24gdChlLG4saSl7ZS5fX2RhdGFIb3N0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoIl9ob3N0XyIrbixpW25dLCEwLCEwKX19KX0pKHIsdCxlLG4pLHJ9ZnVuY3Rpb24gaW8odCxlLG4saSl7bGV0IHI9bi5mb3J3YXJkSG9zdFByb3A7aWYociYmZS5oYXNIb3N0UHJvcHMpe2NvbnN0IG89InRlbXBsYXRlIj09dC5sb2NhbE5hbWU7bGV0IGE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcztpZighYSl7aWYobyl7bGV0IHQ9bi5tdXRhYmxlRGF0YT9LcjokcjtjbGFzcyBpIGV4dGVuZHMgdHt9YT1lLnRlbXBsYXRpemVUZW1wbGF0ZUNsYXNzPWl9ZWxzZXtjb25zdCBuPXQuY29uc3RydWN0b3I7Y2xhc3MgaSBleHRlbmRzIG57fWE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcz1pfWxldCBzPWUuaG9zdFByb3BzO2ZvcihsZXQgdCBpbiBzKWEucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdCgiX2hvc3RfIit0LGEucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5QUk9QQUdBVEUse2ZuOnJvKHQscil9KSxhLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkoIl9ob3N0XyIrdCk7UyYmaSYmKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IGk9bi5jb25zdHJ1Y3Rvci5fcHJvcGVydGllcyx7cHJvcGVydHlFZmZlY3RzOnJ9PXQse2luc3RhbmNlUHJvcHM6b309ZTtmb3IobGV0IHQgaW4gcilpZighKGlbdF18fG8mJm9bdF0pKXtjb25zdCBlPXJbdF07Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0e3BhcnQ6aX09ZVtuXS5pbmZvO2lmKCFpLnNpZ25hdHVyZXx8IWkuc2lnbmF0dXJlLnN0YXRpYyl7Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHt0fScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApO2JyZWFrfX19fSkoZSxuLGkpfWlmKHQuX19kYXRhUHJvdG8mJk9iamVjdC5hc3NpZ24odC5fX2RhdGEsdC5fX2RhdGFQcm90byksbykhKGZ1bmN0aW9uIGEodCxlKXtZcj10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0LGUucHJvdG90eXBlKSxuZXcgZSxZcj1udWxsfSkodCxhKSx0Ll9fZGF0YVRlbXA9e30sdC5fX2RhdGFQZW5kaW5nPW51bGwsdC5fX2RhdGFPbGQ9bnVsbCx0Ll9lbmFibGVQcm9wZXJ0aWVzKCk7ZWxzZXtPYmplY3Quc2V0UHJvdG90eXBlT2YodCxhLnByb3RvdHlwZSk7Y29uc3Qgbj1lLmhvc3RQcm9wcztmb3IobGV0IGUgaW4gbilpZihlPSJfaG9zdF8iK2UsZSBpbiB0KXtjb25zdCBuPXRbZV07ZGVsZXRlIHRbZV0sdC5fX2RhdGFbZV09bn19fX1mdW5jdGlvbiBybyh0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixpLnN1YnN0cmluZygiX2hvc3RfIi5sZW5ndGgpLHJbaV0pfX1mdW5jdGlvbiBvbyh0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixuLGkscltpXSl9fWZ1bmN0aW9uIGFvKHQsZSxuKXtpZihiJiYhZW8odCkpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogdGVtcGxhdGUgb3duZXIgbm90IHRydXN0ZWQiKTtpZihuPW58fHt9LHQuX190ZW1wbGF0aXplT3duZXIpdGhyb3cgbmV3IEVycm9yKCJBIDx0ZW1wbGF0ZT4gY2FuIG9ubHkgYmUgdGVtcGxhdGl6ZWQgb25jZSIpO3QuX190ZW1wbGF0aXplT3duZXI9ZTtsZXQgaT0oZT9lLmNvbnN0cnVjdG9yOlFyKS5fcGFyc2VUZW1wbGF0ZSh0KSxyPWkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M7cnx8KHI9bm8odCxpLG4pLGkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M9cik7Y29uc3Qgbz1lbyh0KTtpbyh0LGksbixvKTtsZXQgYT1jbGFzcyBleHRlbmRzIHJ7fTtyZXR1cm4gYS5wcm90b3R5cGUuX21ldGhvZEhvc3Q9byxhLnByb3RvdHlwZS5fX2RhdGFIb3N0PXQsYS5wcm90b3R5cGUuX190ZW1wbGF0aXplT3duZXI9ZSxhLnByb3RvdHlwZS5fX2hvc3RQcm9wcz1pLmhvc3RQcm9wcyxhPWEsYX1mdW5jdGlvbiBzbyh0LGUpe2xldCBuO2Zvcig7ZTspaWYobj1lLl9fZGF0YUhvc3Q/ZTplLl9fdGVtcGxhdGl6ZUluc3RhbmNlKXtpZihuLl9fZGF0YUhvc3Q9PXQpcmV0dXJuIG47ZT1uLl9fZGF0YUhvc3R9ZWxzZSBlPVkoZSkucGFyZW50Tm9kZTtyZXR1cm4gbnVsbH0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBsbz17dGVtcGxhdGl6ZSh0LGUpe3RoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGU9dCx0aGlzLmN0b3I9YW8odCx0aGlzLHttdXRhYmxlRGF0YTpCb29sZWFuKGUpLHBhcmVudE1vZGVsOnRoaXMuX3BhcmVudE1vZGVsLGluc3RhbmNlUHJvcHM6dGhpcy5faW5zdGFuY2VQcm9wcyxmb3J3YXJkSG9zdFByb3A6dGhpcy5fZm9yd2FyZEhvc3RQcm9wVjIsbm90aWZ5SW5zdGFuY2VQcm9wOnRoaXMuX25vdGlmeUluc3RhbmNlUHJvcFYyfSl9LHN0YW1wKHQpe3JldHVybiBuZXcgdGhpcy5jdG9yKHQpfSxtb2RlbEZvckVsZW1lbnQodCl7cmV0dXJuIHNvKHRoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGUsdCl9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgY289ITE7ZnVuY3Rpb24gdW8oKXtpZih3JiYhbSl7aWYoIWNvKXtjbz0hMDtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC50ZXh0Q29udGVudD0iZG9tLWJpbmQsZG9tLWlmLGRvbS1yZXBlYXR7ZGlzcGxheTpub25lO30iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9cmV0dXJuITB9cmV0dXJuITF9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgaG89YmkocXIoZmUoSFRNTEVsZW1lbnQpKSk7Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJkb20tYmluZCIsY2xhc3MgZXh0ZW5kcyBob3tzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVyblsibXV0YWJsZS1kYXRhIl19Y29uc3RydWN0b3IoKXtpZihzdXBlcigpLGIpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLWJpbmQgbm90IGFsbG93ZWQiKTt0aGlzLnJvb3Q9bnVsbCx0aGlzLiQ9bnVsbCx0aGlzLl9fY2hpbGRyZW49bnVsbH1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7dGhpcy5tdXRhYmxlRGF0YT0hMH1jb25uZWN0ZWRDYWxsYmFjaygpe3VvKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLnJlbmRlcigpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX3JlbW92ZUNoaWxkcmVuKCl9X19pbnNlcnRDaGlsZHJlbigpe1koWSh0aGlzKS5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUodGhpcy5yb290LHRoaXMpfV9fcmVtb3ZlQ2hpbGRyZW4oKXtpZih0aGlzLl9fY2hpbGRyZW4pZm9yKGxldCB0PTA7dDx0aGlzLl9fY2hpbGRyZW4ubGVuZ3RoO3QrKyl0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fX2NoaWxkcmVuW3RdKX1yZW5kZXIoKXtsZXQgdDtpZighdGhpcy5fX2NoaWxkcmVuKXtpZih0PXR8fHRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSwhdCl7bGV0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCgpPT57aWYodD10aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIiksIXQpdGhyb3cgbmV3IEVycm9yKCJkb20tYmluZCByZXF1aXJlcyBhIDx0ZW1wbGF0ZT4gY2hpbGQiKTtlLmRpc2Nvbm5lY3QoKSx0aGlzLnJlbmRlcigpfSkpO3JldHVybiB2b2lkIGUub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KX10aGlzLnJvb3Q9dGhpcy5fc3RhbXBUZW1wbGF0ZSh0KSx0aGlzLiQ9dGhpcy5yb290LiQsdGhpcy5fX2NoaWxkcmVuPVtdO2ZvcihsZXQgdD10aGlzLnJvb3QuZmlyc3RDaGlsZDt0O3Q9dC5uZXh0U2libGluZyl0aGlzLl9fY2hpbGRyZW5bdGhpcy5fX2NoaWxkcmVuLmxlbmd0aF09dDt0aGlzLl9lbmFibGVQcm9wZXJ0aWVzKCl9dGhpcy5fX2luc2VydENoaWxkcmVuKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZG9tLWNoYW5nZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHBvPXFyKHdlKTtjbGFzcyBmbyBleHRlbmRzIHBve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iZG9tLXJlcGVhdCJ9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBudWxsfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpdGVtczp7dHlwZTpBcnJheX0sYXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtIn0saW5kZXhBczp7dHlwZTpTdHJpbmcsdmFsdWU6ImluZGV4In0saXRlbXNJbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXRlbXNJbmRleCJ9LHNvcnQ6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fc29ydENoYW5nZWQifSxmaWx0ZXI6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fZmlsdGVyQ2hhbmdlZCJ9LG9ic2VydmU6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfX29ic2VydmVDaGFuZ2VkIn0sZGVsYXk6TnVtYmVyLHJlbmRlcmVkSXRlbUNvdW50Ont0eXBlOk51bWJlcixub3RpZnk6IWsscmVhZE9ubHk6ITB9LGluaXRpYWxDb3VudDp7dHlwZTpOdW1iZXJ9LHRhcmdldEZyYW1lcmF0ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MjB9LF90YXJnZXRGcmFtZVRpbWU6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfX2NvbXB1dGVGcmFtZVRpbWUodGFyZ2V0RnJhbWVyYXRlKSJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufSxyZXVzZUNodW5rZWRJbnN0YW5jZXM6e3R5cGU6Qm9vbGVhbn19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfX2l0ZW1zQ2hhbmdlZChpdGVtcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faW5zdGFuY2VzPVtdLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9faXRlbXNJZHhUb0luc3RJZHg9e30sdGhpcy5fX2NodW5rQ291bnQ9bnVsbCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPW51bGwsdGhpcy5fX2l0ZW1zQXJyYXlDaGFuZ2VkPSExLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9ITEsdGhpcy5fX3Nob3VsZENvbnRpbnVlQ2h1bmtpbmc9ITEsdGhpcy5fX2NodW5raW5nSWQ9MCx0aGlzLl9fc29ydEZuPW51bGwsdGhpcy5fX2ZpbHRlckZuPW51bGwsdGhpcy5fX29ic2VydmVQYXRocz1udWxsLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2lzRGV0YWNoZWQ9ITAsdGhpcy50ZW1wbGF0ZT1udWxsfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9faXNEZXRhY2hlZD0hMDtmb3IobGV0IHQ9MDt0PHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO3QrKyl0aGlzLl9fZGV0YWNoSW5zdGFuY2UodCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtpZihzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHVvKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLl9faXNEZXRhY2hlZCl7dGhpcy5fX2lzRGV0YWNoZWQ9ITE7bGV0IHQ9WShZKHRoaXMpLnBhcmVudE5vZGUpO2ZvcihsZXQgZT0wO2U8dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7ZSsrKXRoaXMuX19hdHRhY2hJbnN0YW5jZShlLHQpfX1fX2Vuc3VyZVRlbXBsYXRpemVkKCl7aWYoIXRoaXMuX19jdG9yKXtjb25zdCB0PXRoaXM7bGV0IGU9dGhpcy50ZW1wbGF0ZT10Ll90ZW1wbGF0ZUluZm8/dDp0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIWUpe2xldCB0PW5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKT0+e2lmKCF0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIikpdGhyb3cgbmV3IEVycm9yKCJkb20tcmVwZWF0IHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpO3QuZGlzY29ubmVjdCgpLHRoaXMuX19yZW5kZXIoKX0pKTtyZXR1cm4gdC5vYnNlcnZlKHRoaXMse2NoaWxkTGlzdDohMH0pLCExfWxldCBuPXt9O25bdGhpcy5hc109ITAsblt0aGlzLmluZGV4QXNdPSEwLG5bdGhpcy5pdGVtc0luZGV4QXNdPSEwLHRoaXMuX19jdG9yPWFvKGUsdGhpcyx7bXV0YWJsZURhdGE6dGhpcy5tdXRhYmxlRGF0YSxwYXJlbnRNb2RlbDohMCxpbnN0YW5jZVByb3BzOm4sZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fX2luc3RhbmNlcztmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKylpLmZvcndhcmRIb3N0UHJvcCh0LGUpfSxub3RpZnlJbnN0YW5jZVByb3A6ZnVuY3Rpb24odCxlLG4pe2lmKFEodGhpcy5hcyxlKSl7bGV0IGk9dFt0aGlzLml0ZW1zSW5kZXhBc107ZT09dGhpcy5hcyYmKHRoaXMuaXRlbXNbaV09bik7bGV0IHI9Sih0aGlzLmFzLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHtpfWAsZSk7dGhpcy5ub3RpZnlQYXRoKHIsbil9fX0pfXJldHVybiEwfV9fZ2V0TWV0aG9kSG9zdCgpe3JldHVybiB0aGlzLl9fZGF0YUhvc3QuX21ldGhvZEhvc3R8fHRoaXMuX19kYXRhSG9zdH1fX2Z1bmN0aW9uRnJvbVByb3BlcnR5VmFsdWUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtsZXQgZT10LG49dGhpcy5fX2dldE1ldGhvZEhvc3QoKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbltlXS5hcHBseShuLGFyZ3VtZW50cyl9fXJldHVybiB0fV9fc29ydENoYW5nZWQodCl7dGhpcy5fX3NvcnRGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19maWx0ZXJDaGFuZ2VkKHQpe3RoaXMuX19maWx0ZXJGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19jb21wdXRlRnJhbWVUaW1lKHQpe3JldHVybiBNYXRoLmNlaWwoMWUzL3QpfV9fb2JzZXJ2ZUNoYW5nZWQoKXt0aGlzLl9fb2JzZXJ2ZVBhdGhzPXRoaXMub2JzZXJ2ZSYmdGhpcy5vYnNlcnZlLnJlcGxhY2UoIi4qIiwiLiIpLnNwbGl0KCIgIil9X19oYW5kbGVPYnNlcnZlZFBhdGhzKHQpe2lmKHRoaXMuX19zb3J0Rm58fHRoaXMuX19maWx0ZXJGbilpZih0KXtpZih0aGlzLl9fb2JzZXJ2ZVBhdGhzKXtsZXQgZT10aGlzLl9fb2JzZXJ2ZVBhdGhzO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKTA9PT10LmluZGV4T2YoZVtuXSkmJnRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfX1lbHNlIHRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfV9faXRlbXNDaGFuZ2VkKHQpe3RoaXMuaXRlbXMmJiFBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpJiZjb25zb2xlLndhcm4oImRvbS1yZXBlYXQgZXhwZWN0ZWQgYXJyYXkgZm9yIGBpdGVtc2AsIGZvdW5kIix0aGlzLml0ZW1zKSx0aGlzLl9faGFuZGxlSXRlbVBhdGgodC5wYXRoLHQudmFsdWUpfHwoIml0ZW1zIj09PXQucGF0aCYmKHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZD0hMCksdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpKX1fX2RlYm91bmNlUmVuZGVyKHQsZT0wKXt0aGlzLl9fcmVuZGVyRGVib3VuY2VyPUluLmRlYm91bmNlKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIsZT4wP2d0LmFmdGVyKGUpOnZ0LHQuYmluZCh0aGlzKSksUm4odGhpcy5fX3JlbmRlckRlYm91bmNlcil9cmVuZGVyKCl7dGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpLFdpKCl9X19yZW5kZXIoKXtpZighdGhpcy5fX2Vuc3VyZVRlbXBsYXRpemVkKCkpcmV0dXJuO2xldCB0PXRoaXMuaXRlbXN8fFtdO2NvbnN0IGU9dGhpcy5fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KSxuPXRoaXMuX19jYWxjdWxhdGVMaW1pdChlLmxlbmd0aCk7dGhpcy5fX3VwZGF0ZUluc3RhbmNlcyh0LG4sZSksdGhpcy5pbml0aWFsQ291bnQmJih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rfHx0aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZykmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fY2h1bmtpbmdJZCksdGhpcy5fX2NodW5raW5nSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fX2NvbnRpbnVlQ2h1bmtpbmcoKSkpKSx0aGlzLl9zZXRSZW5kZXJlZEl0ZW1Db3VudCh0aGlzLl9faW5zdGFuY2VzLmxlbmd0aCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KXtsZXQgZT1uZXcgQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWVbbl09bjtyZXR1cm4gdGhpcy5fX2ZpbHRlckZuJiYoZT1lLmZpbHRlcigoKGUsbixpKT0+dGhpcy5fX2ZpbHRlckZuKHRbZV0sbixpKSkpKSx0aGlzLl9fc29ydEZuJiZlLnNvcnQoKChlLG4pPT50aGlzLl9fc29ydEZuKHRbZV0sdFtuXSkpKSxlfV9fY2FsY3VsYXRlTGltaXQodCl7bGV0IGU9dDtjb25zdCBuPXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2lmKHRoaXMuaW5pdGlhbENvdW50KXtsZXQgaTshdGhpcy5fX2NodW5rQ291bnR8fHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZCYmIXRoaXMucmV1c2VDaHVua2VkSW5zdGFuY2VzPyhlPU1hdGgubWluKHQsdGhpcy5pbml0aWFsQ291bnQpLGk9TWF0aC5tYXgoZS1uLDApLHRoaXMuX19jaHVua0NvdW50PWl8fDEpOihpPU1hdGgubWluKE1hdGgubWF4KHQtbiwwKSx0aGlzLl9fY2h1bmtDb3VudCksZT1NYXRoLm1pbihuK2ksdCkpLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9aT09PXRoaXMuX19jaHVua0NvdW50LHRoaXMuX19zaG91bGRDb250aW51ZUNodW5raW5nPWU8dCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPXBlcmZvcm1hbmNlLm5vdygpfXJldHVybiB0aGlzLl9faXRlbXNBcnJheUNoYW5nZWQ9ITEsZX1fX2NvbnRpbnVlQ2h1bmtpbmcoKXtpZih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rKXtjb25zdCB0PXBlcmZvcm1hbmNlLm5vdygpLXRoaXMuX19yZW5kZXJTdGFydFRpbWU7dGhpcy5fX2NodW5rQ291bnQ9TWF0aC5yb3VuZCh0aGlzLl9fY2h1bmtDb3VudCoodGhpcy5fdGFyZ2V0RnJhbWVUaW1lL3QpKXx8MX10aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZyYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpfV9fdXBkYXRlSW5zdGFuY2VzKHQsZSxuKXtjb25zdCBpPXRoaXMuX19pdGVtc0lkeFRvSW5zdElkeD17fTtsZXQgcjtmb3Iocj0wO3I8ZTtyKyspe2xldCBlPXRoaXMuX19pbnN0YW5jZXNbcl0sbz1uW3JdLGE9dFtvXTtpW29dPXIsZT8oZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuYXMsYSksZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuaW5kZXhBcyxyKSxlLl9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5pdGVtc0luZGV4QXMsbyksZS5fZmx1c2hQcm9wZXJ0aWVzKCkpOnRoaXMuX19pbnNlcnRJbnN0YW5jZShhLHIsbyl9Zm9yKGxldCB0PXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoLTE7dD49cjt0LS0pdGhpcy5fX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKHQpfV9fZGV0YWNoSW5zdGFuY2UodCl7bGV0IGU9dGhpcy5fX2luc3RhbmNlc1t0XTtjb25zdCBuPVkoZS5yb290KTtmb3IobGV0IHQ9MDt0PGUuY2hpbGRyZW4ubGVuZ3RoO3QrKyl7bi5hcHBlbmRDaGlsZChlLmNoaWxkcmVuW3RdKX1yZXR1cm4gZX1fX2F0dGFjaEluc3RhbmNlKHQsZSl7ZS5pbnNlcnRCZWZvcmUodGhpcy5fX2luc3RhbmNlc1t0XS5yb290LHRoaXMpfV9fZGV0YWNoQW5kUmVtb3ZlSW5zdGFuY2UodCl7dGhpcy5fX2RldGFjaEluc3RhbmNlKHQpLHRoaXMuX19pbnN0YW5jZXMuc3BsaWNlKHQsMSl9X19zdGFtcEluc3RhbmNlKHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gaVt0aGlzLmFzXT10LGlbdGhpcy5pbmRleEFzXT1lLGlbdGhpcy5pdGVtc0luZGV4QXNdPW4sbmV3IHRoaXMuX19jdG9yKGkpfV9faW5zZXJ0SW5zdGFuY2UodCxlLG4pe2NvbnN0IGk9dGhpcy5fX3N0YW1wSW5zdGFuY2UodCxlLG4pO2xldCByPXRoaXMuX19pbnN0YW5jZXNbZSsxXSxvPXI/ci5jaGlsZHJlblswXTp0aGlzO3JldHVybiBZKFkodGhpcykucGFyZW50Tm9kZSkuaW5zZXJ0QmVmb3JlKGkucm9vdCxvKSx0aGlzLl9faW5zdGFuY2VzW2VdPWksaX1fc2hvd0hpZGVDaGlsZHJlbih0KXtmb3IobGV0IGU9MDtlPHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2UrKyl0aGlzLl9faW5zdGFuY2VzW2VdLl9zaG93SGlkZUNoaWxkcmVuKHQpfV9faGFuZGxlSXRlbVBhdGgodCxlKXtsZXQgbj10LnNsaWNlKDYpLGk9bi5pbmRleE9mKCIuIikscj1pPDA/bjpuLnN1YnN0cmluZygwLGkpO2lmKHI9PXBhcnNlSW50KHIsMTApKXtsZXQgdD1pPDA/IiI6bi5zdWJzdHJpbmcoaSsxKTt0aGlzLl9faGFuZGxlT2JzZXJ2ZWRQYXRocyh0KTtsZXQgbz10aGlzLl9faW5zdGFuY2VzW3RoaXMuX19pdGVtc0lkeFRvSW5zdElkeFtyXV07aWYobyl7by5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHRoaXMuYXMrKHQ/Ii4iK3Q6IiIpLGUsITEsITApLG8uX2ZsdXNoUHJvcGVydGllcygpfXJldHVybiEwfX1pdGVtRm9yRWxlbWVudCh0KXtsZXQgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0KTtyZXR1cm4gZSYmZVt0aGlzLmFzXX1pbmRleEZvckVsZW1lbnQodCl7bGV0IGU9dGhpcy5tb2RlbEZvckVsZW1lbnQodCk7cmV0dXJuIGUmJmVbdGhpcy5pbmRleEFzXX1tb2RlbEZvckVsZW1lbnQodCl7cmV0dXJuIHNvKHRoaXMudGVtcGxhdGUsdCl9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShmby5pcyxmbyk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIG1vIGV4dGVuZHMgd2V7c3RhdGljIGdldCBpcygpe3JldHVybiJkb20taWYifXN0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gbnVsbH1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57aWY6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX19kZWJvdW5jZVJlbmRlciJ9LHJlc3RhbXA6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX19kZWJvdW5jZVJlbmRlciJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufX19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9sYXN0SWY9ITEsdGhpcy5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX189ITF9X19kZWJvdW5jZVJlbmRlcigpe3RoaXMuX19yZW5kZXJEZWJvdW5jZXI9SW4uZGVib3VuY2UodGhpcy5fX3JlbmRlckRlYm91bmNlcix2dCwoKCk9PnRoaXMuX19yZW5kZXIoKSkpLFJuKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtjb25zdCB0PVkodGhpcykucGFyZW50Tm9kZTt0JiYodC5ub2RlVHlwZSE9Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFfHxZKHQpLmhvc3QpfHx0aGlzLl9fdGVhcmRvd25JbnN0YW5jZSgpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx1bygpfHwodGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5pZiYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKCl9X19lbnN1cmVUZW1wbGF0ZSgpe2lmKCF0aGlzLl9fdGVtcGxhdGUpe2NvbnN0IHQ9dGhpcztsZXQgZT10Ll90ZW1wbGF0ZUluZm8/dDpZKHQpLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIWUpe2xldCB0PW5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKT0+e2lmKCFZKHRoaXMpLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIikpdGhyb3cgbmV3IEVycm9yKCJkb20taWYgcmVxdWlyZXMgYSA8dGVtcGxhdGU+IGNoaWxkIik7dC5kaXNjb25uZWN0KCksdGhpcy5fX3JlbmRlcigpfSkpO3JldHVybiB0Lm9ic2VydmUodGhpcyx7Y2hpbGRMaXN0OiEwfSksITF9dGhpcy5fX3RlbXBsYXRlPWV9cmV0dXJuITB9X19lbnN1cmVJbnN0YW5jZSgpe2xldCB0PVkodGhpcykucGFyZW50Tm9kZTtpZih0aGlzLl9faGFzSW5zdGFuY2UoKSl7bGV0IGU9dGhpcy5fX2dldEluc3RhbmNlTm9kZXMoKTtpZihlJiZlLmxlbmd0aCl7aWYoWSh0aGlzKS5wcmV2aW91c1NpYmxpbmchPT1lW2UubGVuZ3RoLTFdKWZvcihsZXQgbixpPTA7aTxlLmxlbmd0aCYmKG49ZVtpXSk7aSsrKVkodCkuaW5zZXJ0QmVmb3JlKG4sdGhpcyl9fWVsc2V7aWYoIXQpcmV0dXJuITE7aWYoIXRoaXMuX19lbnN1cmVUZW1wbGF0ZSgpKXJldHVybiExO3RoaXMuX19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KX1yZXR1cm4hMH1yZW5kZXIoKXtXaSgpfV9fcmVuZGVyKCl7aWYodGhpcy5pZil7aWYoIXRoaXMuX19lbnN1cmVJbnN0YW5jZSgpKXJldHVybn1lbHNlIHRoaXMucmVzdGFtcCYmdGhpcy5fX3RlYXJkb3duSW5zdGFuY2UoKTt0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmlmPT10aGlzLl9sYXN0SWZ8fCh0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLl9sYXN0SWY9dGhpcy5pZil9X19oYXNJbnN0YW5jZSgpe31fX2dldEluc3RhbmNlTm9kZXMoKXt9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt9X190ZWFyZG93bkluc3RhbmNlKCl7fV9zaG93SGlkZUNoaWxkcmVuKCl7fX1jb25zdCBnbz1BP2NsYXNzIGV4dGVuZHMgbW97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pbnN0YW5jZT1udWxsLHRoaXMuX19zeW5jSW5mbz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UudGVtcGxhdGVJbmZvLmNoaWxkTm9kZXN9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXtjb25zdCBlPXRoaXMuX19kYXRhSG9zdHx8dGhpcztpZihiJiYhdGhpcy5fX2RhdGFIb3N0KXRocm93IG5ldyBFcnJvcigic3RyaWN0VGVtcGxhdGVQb2xpY3k6IHRlbXBsYXRlIG93bmVyIG5vdCB0cnVzdGVkIik7Y29uc3Qgbj1lLl9iaW5kVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLCEwKTtuLnJ1bkVmZmVjdHM9KHQsZSxuKT0+e2xldCBpPXRoaXMuX19zeW5jSW5mbztpZih0aGlzLmlmKWkmJih0aGlzLl9fc3luY0luZm89bnVsbCx0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksZT1PYmplY3QuYXNzaWduKGkuY2hhbmdlZFByb3BzLGUpKSx0KGUsbik7ZWxzZSBpZih0aGlzLl9faW5zdGFuY2UpaWYoaXx8KGk9dGhpcy5fX3N5bmNJbmZvPXtydW5FZmZlY3RzOnQsY2hhbmdlZFByb3BzOnt9fSksbilmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBlPSQodCk7aS5jaGFuZ2VkUHJvcHNbZV09dGhpcy5fX2RhdGFIb3N0W2VdfWVsc2UgT2JqZWN0LmFzc2lnbihpLmNoYW5nZWRQcm9wcyxlKX0sdGhpcy5fX2luc3RhbmNlPWUuX3N0YW1wVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLG4pLFkodCkuaW5zZXJ0QmVmb3JlKHRoaXMuX19pbnN0YW5jZSx0aGlzKX1fX3N5bmNIb3N0UHJvcGVydGllcygpe2NvbnN0IHQ9dGhpcy5fX3N5bmNJbmZvO3QmJih0aGlzLl9fc3luY0luZm89bnVsbCx0LnJ1bkVmZmVjdHModC5jaGFuZ2VkUHJvcHMsITEpKX1fX3RlYXJkb3duSW5zdGFuY2UoKXt0aGlzLl9faW5zdGFuY2UmJigodGhpcy5fX2RhdGFIb3N0fHx0aGlzKS5fcmVtb3ZlQm91bmREb20odGhpcy5fX2luc3RhbmNlKSx0aGlzLl9faW5zdGFuY2U9bnVsbCx0aGlzLl9fc3luY0luZm89bnVsbCl9X3Nob3dIaWRlQ2hpbGRyZW4oKXtjb25zdCB0PXRoaXMuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9ffHwhdGhpcy5pZjt0aGlzLl9faW5zdGFuY2UmJkJvb2xlYW4odGhpcy5fX2luc3RhbmNlLl9faGlkZGVuKSE9PXQmJih0aGlzLl9faW5zdGFuY2UuX19oaWRkZW49dCxKcih0LHRoaXMuX19pbnN0YW5jZS50ZW1wbGF0ZUluZm8uY2hpbGROb2RlcykpLHR8fHRoaXMuX19zeW5jSG9zdFByb3BlcnRpZXMoKX19OmNsYXNzIGV4dGVuZHMgbW97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGwsdGhpcy5fX2ludmFsaWRQcm9wcz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UuY2hpbGRyZW59X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt0aGlzLl9fY3Rvcnx8KHRoaXMuX19jdG9yPWFvKHRoaXMuX190ZW1wbGF0ZSx0aGlzLHttdXRhYmxlRGF0YTohMCxmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxlKXt0aGlzLl9faW5zdGFuY2UmJih0aGlzLmlmP3RoaXMuX19pbnN0YW5jZS5mb3J3YXJkSG9zdFByb3AodCxlKToodGhpcy5fX2ludmFsaWRQcm9wcz10aGlzLl9faW52YWxpZFByb3BzfHxPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX19pbnZhbGlkUHJvcHNbJCh0KV09ITApKX19KSksdGhpcy5fX2luc3RhbmNlPW5ldyB0aGlzLl9fY3RvcixZKHQpLmluc2VydEJlZm9yZSh0aGlzLl9faW5zdGFuY2Uucm9vdCx0aGlzKX1fX3RlYXJkb3duSW5zdGFuY2UoKXtpZih0aGlzLl9faW5zdGFuY2Upe2xldCB0PXRoaXMuX19pbnN0YW5jZS5jaGlsZHJlbjtpZih0JiZ0Lmxlbmd0aCl7bGV0IGU9WSh0WzBdKS5wYXJlbnROb2RlO2lmKGUpe2U9WShlKTtmb3IobGV0IG4saT0wO2k8dC5sZW5ndGgmJihuPXRbaV0pO2krKyllLnJlbW92ZUNoaWxkKG4pfX10aGlzLl9faW52YWxpZFByb3BzPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGx9fV9fc3luY0hvc3RQcm9wZXJ0aWVzKCl7bGV0IHQ9dGhpcy5fX2ludmFsaWRQcm9wcztpZih0KXt0aGlzLl9faW52YWxpZFByb3BzPW51bGw7Zm9yKGxldCBlIGluIHQpdGhpcy5fX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0aGlzLl9fZGF0YUhvc3RbZV0pO3RoaXMuX19pbnN0YW5jZS5fZmx1c2hQcm9wZXJ0aWVzKCl9fV9zaG93SGlkZUNoaWxkcmVuKCl7Y29uc3QgdD10aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fX3x8IXRoaXMuaWY7dGhpcy5fX2luc3RhbmNlJiZCb29sZWFuKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbikhPT10JiYodGhpcy5fX2luc3RhbmNlLl9faGlkZGVuPXQsdGhpcy5fX2luc3RhbmNlLl9zaG93SGlkZUNoaWxkcmVuKHQpKSx0fHx0aGlzLl9fc3luY0hvc3RQcm9wZXJ0aWVzKCl9fTtjdXN0b21FbGVtZW50cy5kZWZpbmUoZ28uaXMsZ28pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgX289TigodD0+e2xldCBlPXllKHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOnt0eXBlOkFycmF5fSxtdWx0aTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RlZDp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sdG9nZ2xlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX191cGRhdGVTZWxlY3Rpb24obXVsdGksIGl0ZW1zLiopIl19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19sYXN0SXRlbXM9bnVsbCx0aGlzLl9fbGFzdE11bHRpPW51bGwsdGhpcy5fX3NlbGVjdGVkTWFwPW51bGx9X191cGRhdGVTZWxlY3Rpb24odCxlKXtsZXQgbj1lLnBhdGg7aWYobj09SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpKXtsZXQgbj1lLmJhc2V8fFtdLGk9dGhpcy5fX2xhc3RJdGVtcztpZih0IT09dGhpcy5fX2xhc3RNdWx0aSYmdGhpcy5jbGVhclNlbGVjdGlvbigpLGkpe2xldCB0PVZpKG4saSk7dGhpcy5fX2FwcGx5U3BsaWNlcyh0KX10aGlzLl9fbGFzdEl0ZW1zPW4sdGhpcy5fX2xhc3RNdWx0aT10fWVsc2UgaWYoZS5wYXRoPT1gJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LnNwbGljZXNgKXRoaXMuX19hcHBseVNwbGljZXMoZS52YWx1ZS5pbmRleFNwbGljZXMpO2Vsc2V7bGV0IHQ9bi5zbGljZShgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LmAubGVuZ3RoKSxlPXBhcnNlSW50KHQsMTApO3QuaW5kZXhPZigiLiIpPDAmJnQ9PWUmJnRoaXMuX19kZXNlbGVjdENoYW5nZWRJZHgoZSl9fV9fYXBwbHlTcGxpY2VzKHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IGk9dFtuXTtlLmZvckVhY2goKCh0LG4pPT57dDxpLmluZGV4fHxlLnNldChuLHQ+PWkuaW5kZXgraS5yZW1vdmVkLmxlbmd0aD90K2kuYWRkZWRDb3VudC1pLnJlbW92ZWQubGVuZ3RoOi0xKX0pKTtmb3IobGV0IHQ9MDt0PGkuYWRkZWRDb3VudDt0Kyspe2xldCBuPWkuaW5kZXgrdDtlLmhhcyh0aGlzLml0ZW1zW25dKSYmZS5zZXQodGhpcy5pdGVtc1tuXSxuKX19dGhpcy5fX3VwZGF0ZUxpbmtzKCk7bGV0IG49MDtlLmZvckVhY2goKCh0LGkpPT57dDwwPyh0aGlzLm11bHRpP3RoaXMuc3BsaWNlKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxuLDEpOnRoaXMuc2VsZWN0ZWQ9dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCxlLmRlbGV0ZShpKSk6bisrfSkpfV9fdXBkYXRlTGlua3MoKXtpZih0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXt9LHRoaXMubXVsdGkpe2xldCB0PTA7dGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2goKGU9PntlPj0wJiZ0aGlzLmxpbmtQYXRocyhgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7ZX1gLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKX0uJHt0Kyt9YCl9KSl9ZWxzZSB0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgodD0+e3RoaXMubGlua1BhdGhzKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7dH1gKSx0aGlzLmxpbmtQYXRocyhKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZEl0ZW0iLHRoaXMpLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWApfSkpfWNsZWFyU2VsZWN0aW9uKCl7dGhpcy5fX2RhdGFMaW5rZWRQYXRocz17fSx0aGlzLl9fc2VsZWN0ZWRNYXA9bmV3IE1hcCx0aGlzLnNlbGVjdGVkPXRoaXMubXVsdGk/W106bnVsbCx0aGlzLnNlbGVjdGVkSXRlbT1udWxsfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX19zZWxlY3RlZE1hcC5oYXModCl9aXNJbmRleFNlbGVjdGVkKHQpe3JldHVybiB0aGlzLmlzU2VsZWN0ZWQodGhpcy5pdGVtc1t0XSl9X19kZXNlbGVjdENoYW5nZWRJZHgodCl7bGV0IGU9dGhpcy5fX3NlbGVjdGVkSW5kZXhGb3JJdGVtSW5kZXgodCk7aWYoZT49MCl7bGV0IHQ9MDt0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgoKG4saSk9PntlPT10KysmJnRoaXMuZGVzZWxlY3QoaSl9KSl9fV9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleCh0KXtsZXQgZT10aGlzLl9fZGF0YUxpbmtlZFBhdGhzW2Ake0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWBdO2lmKGUpcmV0dXJuIHBhcnNlSW50KGUuc2xpY2UoYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpfS5gLmxlbmd0aCksMTApfWRlc2VsZWN0KHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcC5nZXQodCk7aWYoZT49MCl7bGV0IG47dGhpcy5fX3NlbGVjdGVkTWFwLmRlbGV0ZSh0KSx0aGlzLm11bHRpJiYobj10aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChlKSksdGhpcy5fX3VwZGF0ZUxpbmtzKCksdGhpcy5tdWx0aT90aGlzLnNwbGljZShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksbiwxKTp0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRJdGVtPW51bGx9fWRlc2VsZWN0SW5kZXgodCl7dGhpcy5kZXNlbGVjdCh0aGlzLml0ZW1zW3RdKX1zZWxlY3QodCl7dGhpcy5zZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfXNlbGVjdEluZGV4KHQpe2xldCBlPXRoaXMuaXRlbXNbdF07dGhpcy5pc1NlbGVjdGVkKGUpP3RoaXMudG9nZ2xlJiZ0aGlzLmRlc2VsZWN0SW5kZXgodCk6KHRoaXMubXVsdGl8fHRoaXMuX19zZWxlY3RlZE1hcC5jbGVhcigpLHRoaXMuX19zZWxlY3RlZE1hcC5zZXQoZSx0KSx0aGlzLl9fdXBkYXRlTGlua3MoKSx0aGlzLm11bHRpP3RoaXMucHVzaChKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksZSk6dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkSXRlbT1lKX19fSkpKHdlKTtjbGFzcyB5byBleHRlbmRzIF9ve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iYXJyYXktc2VsZWN0b3IifXN0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gbnVsbH19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKHlvLmlzLHlvKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3Qgdm89bmV3IGtuO3dpbmRvdy5TaGFkeUNTU3x8KHdpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKHQsZSxuKXt9LHByZXBhcmVUZW1wbGF0ZURvbSh0LGUpe30scHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsZSxuKXt9LHN0eWxlU3VidHJlZSh0LGUpe3ZvLnByb2Nlc3NTdHlsZXMoKSxvbih0LGUpfSxzdHlsZUVsZW1lbnQodCl7dm8ucHJvY2Vzc1N0eWxlcygpfSxzdHlsZURvY3VtZW50KHQpe3ZvLnByb2Nlc3NTdHlsZXMoKSxvbihkb2N1bWVudC5ib2R5LHQpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6KHQsZSk9PmFuKHQsZSksZmx1c2hDdXN0b21TdHlsZXMoKXt9LG5hdGl2ZUNzczpOZSxuYXRpdmVTaGFkb3c6QWUsY3NzQnVpbGQ6UGUsZGlzYWJsZVJ1bnRpbWU6SWV9KSx3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9dm87Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGJvPSJpbmNsdWRlIix4bz13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U7Y2xhc3Mgd28gZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc3R5bGU9bnVsbCx4by5hZGRDdXN0b21TdHlsZSh0aGlzKX1nZXRTdHlsZSgpe2lmKHRoaXMuX3N0eWxlKXJldHVybiB0aGlzLl9zdHlsZTtjb25zdCB0PXRoaXMucXVlcnlTZWxlY3Rvcigic3R5bGUiKTtpZighdClyZXR1cm4gbnVsbDt0aGlzLl9zdHlsZT10O2NvbnN0IGU9dC5nZXRBdHRyaWJ1dGUoYm8pO3JldHVybiBlJiYodC5yZW1vdmVBdHRyaWJ1dGUoYm8pLHQudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9dC50cmltKCkuc3BsaXQoL1xzKy8pLG49IiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspbis9cShlW3RdKTtyZXR1cm4gbn0pKGUpK3QudGV4dENvbnRlbnQpLHRoaXMub3duZXJEb2N1bWVudCE9PXdpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcyksdGhpcy5fc3R5bGV9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgU287d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgiY3VzdG9tLXN0eWxlIix3byksU289V3IuX211dGFibGVQcm9wZXJ0eUNoYW5nZTtjb25zdCBNbz17cHJvcGVydGllczp7bXV0YWJsZURhdGE6Qm9vbGVhbn0sX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxuKXtyZXR1cm4gU28odGhpcyx0LGUsbix0aGlzLm11dGFibGVEYXRhKX19LEVvPWNyKEhUTUxFbGVtZW50KS5wcm90b3R5cGU7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgVG89bmV3IFNldDtjb25zdCBDbz17cHJvcGVydGllczp7X3BhcmVudFJlc2l6YWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9wYXJlbnRSZXNpemFibGVDaGFuZ2VkIn0sX25vdGlmeWluZ0Rlc2NlbmRhbnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGxpc3RlbmVyczp7Imlyb24tcmVxdWVzdC1yZXNpemUtbm90aWZpY2F0aW9ucyI6Il9vbklyb25SZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9ucyJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcz1bXSx0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZT10aGlzLm5vdGlmeVJlc2l6ZS5iaW5kKHRoaXMpLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZT10aGlzLl9vbkRlc2NlbmRhbnRJcm9uUmVzaXplLmJpbmQodGhpcyl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpOihUby5kZWxldGUodGhpcyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fYm91bmROb3RpZnlSZXNpemUpKSx0aGlzLl9wYXJlbnRSZXNpemFibGU9bnVsbH0sbm90aWZ5UmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dGhpcy5yZXNpemVyU2hvdWxkTm90aWZ5KHQpJiZ0aGlzLl9ub3RpZnlEZXNjZW5kYW50KHQpfSksdGhpcyksdGhpcy5fZmlyZVJlc2l6ZSgpKX0sYXNzaWduUGFyZW50UmVzaXphYmxlOmZ1bmN0aW9uKHQpe3RoaXMuX3BhcmVudFJlc2l6YWJsZSYmdGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpLHRoaXMuX3BhcmVudFJlc2l6YWJsZT10LHQmJi0xPT09dC5faW50ZXJlc3RlZFJlc2l6YWJsZXMuaW5kZXhPZih0aGlzKSYmKHQuX2ludGVyZXN0ZWRSZXNpemFibGVzLnB1c2godGhpcyksdC5fc3Vic2NyaWJlSXJvblJlc2l6ZSh0aGlzKSl9LHN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLmluZGV4T2YodCk7ZT4tMSYmKHRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLnNwbGljZShlLDEpLHRoaXMuX3Vuc3Vic2NyaWJlSXJvblJlc2l6ZSh0KSl9LF9zdWJzY3JpYmVJcm9uUmVzaXplOmZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZSl9LF91bnN1YnNjcmliZUlyb25SZXNpemU6ZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJpcm9uLXJlc2l6ZSIsdGhpcy5fYm91bmRPbkRlc2NlbmRhbnRJcm9uUmVzaXplKX0scmVzaXplclNob3VsZE5vdGlmeTpmdW5jdGlvbih0KXtyZXR1cm4hMH0sX29uRGVzY2VuZGFudElyb25SZXNpemU6ZnVuY3Rpb24odCl7dGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD90LnN0b3BQcm9wYWdhdGlvbigpOm18fHRoaXMuX2ZpcmVSZXNpemUoKX0sX2ZpcmVSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImlyb24tcmVzaXplIixudWxsLHtub2RlOnRoaXMsYnViYmxlczohMX0pfSxfb25Jcm9uUmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9ZXIodCkucm9vdFRhcmdldDtlIT09dGhpcyYmKGUuYXNzaWduUGFyZW50UmVzaXphYmxlKHRoaXMpLHRoaXMuX25vdGlmeURlc2NlbmRhbnQoZSksdC5zdG9wUHJvcGFnYXRpb24oKSl9LF9wYXJlbnRSZXNpemFibGVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2JvdW5kTm90aWZ5UmVzaXplKX0sX25vdGlmeURlc2NlbmRhbnQ6ZnVuY3Rpb24odCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD0hMCx0Lm5vdGlmeVJlc2l6ZSgpLHRoaXMuX25vdGlmeWluZ0Rlc2NlbmRhbnQ9ITEpfSxfcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQpaWYoImxvYWRpbmciPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSl7dmFyIHQ9dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMuYmluZCh0aGlzKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoZnVuY3Rpb24gZSgpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGUpLHQoKX0pKX1lbHNlIHRoaXMuX2ZpbmRQYXJlbnQoKSx0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0IT09dGhpcyYmdC5fZmluZFBhcmVudCgpfSksdGhpcyk6KFRvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QhPT10aGlzJiZ0Ll9maW5kUGFyZW50KCl9KSx0aGlzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZSksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9maW5kUGFyZW50OmZ1bmN0aW9uKCl7dGhpcy5hc3NpZ25QYXJlbnRSZXNpemFibGUobnVsbCksdGhpcy5maXJlKCJpcm9uLXJlcXVlc3QtcmVzaXplLW5vdGlmaWNhdGlvbnMiLG51bGwse25vZGU6dGhpcyxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KSx0aGlzLl9wYXJlbnRSZXNpemFibGU/VG8uZGVsZXRlKHRoaXMpOlRvLmFkZCh0aGlzKX19O3ZhciBBbz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxJcm9uUmVzaXphYmxlQmVoYXZpb3I6Q299KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWlyb24tY29sbGFwc2UtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMzAwbXMpOwogICAgICAgIC8qIFNhZmFyaSAxMCBuZWVkcyB0aGlzIHByb3BlcnR5IHByZWZpeGVkIHRvIGNvcnJlY3RseSBhcHBseSB0aGUgY3VzdG9tIHByb3BlcnR5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pcm9uLWNvbGxhcHNlLXRyYW5zaXRpb24tZHVyYXRpb24sIDMwMG1zKTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlyb24tY29sbGFwc2UtY2xvc2VkKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdCguaXJvbi1jb2xsYXBzZS1vcGVuZWQpKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6Imlyb24tY29sbGFwc2UiLGJlaGF2aW9yczpbQ29dLHByb3BlcnRpZXM6e2hvcml6b250YWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2hvcml6b250YWxDaGFuZ2VkIn0sb3BlbmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LHRyYW5zaXRpb25pbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITB9LG5vQW5pbWF0aW9uOnt0eXBlOkJvb2xlYW59LF9kZXNpcmVkU2l6ZTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxnZXQgZGltZW5zaW9uKCl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbD8id2lkdGgiOiJoZWlnaHQifSxnZXQgX2RpbWVuc2lvbk1heCgpe3JldHVybiB0aGlzLmhvcml6b250YWw/Im1heFdpZHRoIjoibWF4SGVpZ2h0In0sZ2V0IF9kaW1lbnNpb25NYXhDc3MoKXtyZXR1cm4gdGhpcy5ob3Jpem9udGFsPyJtYXgtd2lkdGgiOiJtYXgtaGVpZ2h0In0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uRW5kIn0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9IXRoaXMub3BlbmVkfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITB9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sdXBkYXRlU2l6ZTpmdW5jdGlvbih0LGUpe3Q9ImF1dG8iPT09dD8iIjp0O3ZhciBuPWUmJiF0aGlzLm5vQW5pbWF0aW9uJiZ0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2Rlc2lyZWRTaXplIT09dDtpZih0aGlzLl9kZXNpcmVkU2l6ZT10LHRoaXMuX3VwZGF0ZVRyYW5zaXRpb24oITEpLG4pe3ZhciBpPXRoaXMuX2NhbGNTaXplKCk7IiI9PT10JiYodGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPSIiLHQ9dGhpcy5fY2FsY1NpemUoKSksdGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPWksdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMCksbj10IT09aX10aGlzLnN0eWxlW3RoaXMuX2RpbWVuc2lvbk1heF09dCxufHx0aGlzLl90cmFuc2l0aW9uRW5kKCl9LGVuYWJsZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7RW8uX3dhcm4oImBlbmFibGVUcmFuc2l0aW9uKClgIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbm9BbmltYXRpb25gIGluc3RlYWQuIiksdGhpcy5ub0FuaW1hdGlvbj0hdH0sX3VwZGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249dCYmIXRoaXMubm9BbmltYXRpb24/IiI6IjBzIn0sX2hvcml6b250YWxDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHk9dGhpcy5fZGltZW5zaW9uTWF4Q3NzLHRoaXMuc3R5bGVbIm1heFdpZHRoIj09PXRoaXMuX2RpbWVuc2lvbk1heD8ibWF4SGVpZ2h0IjoibWF4V2lkdGgiXT0iIix0aGlzLnVwZGF0ZVNpemUodGhpcy5vcGVuZWQ/ImF1dG8iOiIwcHgiLCExKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCF0aGlzLm9wZW5lZCksdGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMCksdGhpcy50b2dnbGVDbGFzcygiaXJvbi1jb2xsYXBzZS1jbG9zZWQiLCExKSx0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLW9wZW5lZCIsITEpLHRoaXMudXBkYXRlU2l6ZSh0aGlzLm9wZW5lZD8iYXV0byI6IjBweCIsITApLHRoaXMub3BlbmVkJiZ0aGlzLmZvY3VzKCl9LF90cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPXRoaXMuX2Rlc2lyZWRTaXplLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2UtY2xvc2VkIiwhdGhpcy5vcGVuZWQpLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2Utb3BlbmVkIix0aGlzLm9wZW5lZCksdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMSksdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9zZXRUcmFuc2l0aW9uaW5nKCExKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0KXtlcih0KS5yb290VGFyZ2V0PT09dGhpcyYmdGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxfY2FsY1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmRpbWVuc2lvbl0rInB4In19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGtvPXhlYAovKiBNb3N0IGNvbW1vbiB1c2VkIGZsZXggc3R5bGVzKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAubGF5b3V0Lmhvcml6b250YWwsCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0LmlubGluZSB7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbCB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAubGF5b3V0LndyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CgogICAgICAubGF5b3V0Lm5vLXdyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICAtd2Via2l0LWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlci1qdXN0aWZpZWQsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5mbGV4IHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LWF1dG8gewogICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bzsKICAgICAgICAtd2Via2l0LWZsZXg6IDEgMSBhdXRvOwogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICB9CgogICAgICAuZmxleC1ub25lIHsKICAgICAgICAtbXMtZmxleDogbm9uZTsKICAgICAgICAtd2Via2l0LWZsZXg6IG5vbmU7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEJhc2ljIGZsZXhib3ggcmV2ZXJzZSBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1yZXZlcnNlIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbC1yZXZlcnNlLAogICAgICAubGF5b3V0LnZlcnRpY2FsLXJldmVyc2UgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0Lmhvcml6b250YWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQud3JhcC1yZXZlcnNlIHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEZsZXhib3ggYWxpZ25tZW50ICovCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtYWxpZ25tZW50Ij4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcy4KICAgICAgICovCiAgICAgIC5sYXlvdXQuc3RhcnQgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZCB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmFzZWxpbmUgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItanVzdGlmaWVkLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNlbGYgYWxpZ25tZW50LgogICAgICAgKi8KICAgICAgLnNlbGYtc3RhcnQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAuc2VsZi1jZW50ZXIgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CgogICAgICAuc2VsZi1lbmQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAuc2VsZi1zdHJldGNoIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLnNlbGYtYmFzZWxpbmUgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAvKioKICAgICAgICogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmV0d2Vlbi1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnk7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYXJvdW5kLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZTsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIE5vbi1mbGV4Ym94IHBvc2l0aW9uaW5nIGhlbHBlciBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1mYWN0b3JzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5mbGV4LAogICAgICAuZmxleC0xIHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LTIgewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9CgogICAgICAuZmxleC0zIHsKICAgICAgICAtbXMtZmxleDogMzsKICAgICAgICAtd2Via2l0LWZsZXg6IDM7CiAgICAgICAgZmxleDogMzsKICAgICAgfQoKICAgICAgLmZsZXgtNCB7CiAgICAgICAgLW1zLWZsZXg6IDQ7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA0OwogICAgICAgIGZsZXg6IDQ7CiAgICAgIH0KCiAgICAgIC5mbGV4LTUgewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9CgogICAgICAuZmxleC02IHsKICAgICAgICAtbXMtZmxleDogNjsKICAgICAgICAtd2Via2l0LWZsZXg6IDY7CiAgICAgICAgZmxleDogNjsKICAgICAgfQoKICAgICAgLmZsZXgtNyB7CiAgICAgICAgLW1zLWZsZXg6IDc7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA3OwogICAgICAgIGZsZXg6IDc7CiAgICAgIH0KCiAgICAgIC5mbGV4LTggewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9CgogICAgICAuZmxleC05IHsKICAgICAgICAtbXMtZmxleDogOTsKICAgICAgICAtd2Via2l0LWZsZXg6IDk7CiAgICAgICAgZmxleDogOTsKICAgICAgfQoKICAgICAgLmZsZXgtMTAgewogICAgICAgIC1tcy1mbGV4OiAxMDsKICAgICAgICAtd2Via2l0LWZsZXg6IDEwOwogICAgICAgIGZsZXg6IDEwOwogICAgICB9CgogICAgICAuZmxleC0xMSB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH0KCiAgICAgIC5mbGV4LTEyIHsKICAgICAgICAtbXMtZmxleDogMTI7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxMjsKICAgICAgICBmbGV4OiAxMjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Cjxkb20tbW9kdWxlIGlkPSJpcm9uLXBvc2l0aW9uaW5nIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5pbnZpc2libGUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAucmVsYXRpdmUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgYm9keS5mdWxsYmxlZWQgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICB9CgogICAgICAuc2Nyb2xsIHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCiAgICAgIC5maXhlZC1ib3R0b20sCiAgICAgIC5maXhlZC1sZWZ0LAogICAgICAuZml4ZWQtcmlnaHQsCiAgICAgIC5maXhlZC10b3AgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgfQoKICAgICAgLmZpeGVkLXRvcCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1yaWdodCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmZpeGVkLWJvdHRvbSB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1sZWZ0IHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgpgO2tvLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoa28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBQbz14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBbaGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tbGF5b3V0OiB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1pbmxpbmU6IHsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWhvcml6b250YWw6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaG9yaXpvbnRhbC1yZXZlcnNlOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsLXJldmVyc2U6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcDogewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcC1yZXZlcnNlOiB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LWF1dG86IHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtbm9uZTogewogICAgICAgIC1tcy1mbGV4OiBub25lOwogICAgICAgIC13ZWJraXQtZmxleDogbm9uZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleDogewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtMjogewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0zOiB7CiAgICAgICAgLW1zLWZsZXg6IDM7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAzOwogICAgICAgIGZsZXg6IDM7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTQ6IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtNTogewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC02OiB7CiAgICAgICAgLW1zLWZsZXg6IDY7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA2OwogICAgICAgIGZsZXg6IDY7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTc6IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtODogewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC05OiB7CiAgICAgICAgLW1zLWZsZXg6IDk7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA5OwogICAgICAgIGZsZXg6IDk7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEwOiB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTExOiB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEyOiB7CiAgICAgICAgLW1zLWZsZXg6IDEyOwogICAgICAgIC13ZWJraXQtZmxleDogMTI7CiAgICAgICAgZmxleDogMTI7CiAgICAgIH07CgogICAgICAvKiBhbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcyAqLwoKICAgICAgLS1sYXlvdXQtc3RhcnQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlcjogewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWJhc2VsaW5lOiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfTsKCiAgICAgIC8qIGFsaWdubWVudCBpbiBtYWluIGF4aXMgKi8KCiAgICAgIC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1hcm91bmQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItY2VudGVyOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfTsKCiAgICAgIC8qIHNlbGYgYWxpZ25tZW50ICovCgogICAgICAtLWxheW91dC1zZWxmLXN0YXJ0OiB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zZWxmLWNlbnRlcjogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1lbmQ6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtc3RyZXRjaDogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1iYXNlbGluZTogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9OwoKICAgICAgLyogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzICovCgogICAgICAtLWxheW91dC1zdGFydC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYmV0d2Vlbi1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYXJvdW5kLWFsaWduZWQ6IHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGU7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH07CgogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICAgICAgT3RoZXIgTGF5b3V0CiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAtLWxheW91dC1ibG9jazogewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaW52aXNpYmxlOiB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1yZWxhdGl2ZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpdDogewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zY3JvbGw6IHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH07CgogICAgICAtLWxheW91dC1mdWxsYmxlZWQ6IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfTsKCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCgogICAgICAtLWxheW91dC1maXhlZC10b3A6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1maXhlZC1yaWdodDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtYm90dG9tOiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtbGVmdDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPmA7UG8uc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChQby5jb250ZW50KTt2YXIgTG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtMby50ZXh0Q29udGVudD0iW2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoTG8pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgSW97Y29uc3RydWN0b3IodCl7SW9bIiAiXSh0KSx0aGlzLnR5cGU9dCYmdC50eXBlfHwiZGVmYXVsdCIsdGhpcy5rZXk9dCYmdC5rZXksdCYmInZhbHVlImluIHQmJih0aGlzLnZhbHVlPXQudmFsdWUpfWdldCB2YWx1ZSgpe3ZhciB0PXRoaXMudHlwZSxlPXRoaXMua2V5O2lmKHQmJmUpcmV0dXJuIElvLnR5cGVzW3RdJiZJby50eXBlc1t0XVtlXX1zZXQgdmFsdWUodCl7dmFyIGU9dGhpcy50eXBlLG49dGhpcy5rZXk7ZSYmbiYmKGU9SW8udHlwZXNbZV09SW8udHlwZXNbZV18fHt9LG51bGw9PXQ/ZGVsZXRlIGVbbl06ZVtuXT10KX1nZXQgbGlzdCgpe2lmKHRoaXMudHlwZSl7dmFyIHQ9SW8udHlwZXNbdGhpcy50eXBlXTtyZXR1cm4gdD9PYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBOb1t0aGlzLnR5cGVdW3RdfSksdGhpcyk6W119fWJ5S2V5KHQpe3JldHVybiB0aGlzLmtleT10LHRoaXMudmFsdWV9fUlvWyIgIl09ZnVuY3Rpb24oKXt9LElvLnR5cGVzPXt9O3ZhciBObz1Jby50eXBlcztqcih7aXM6Imlyb24tbWV0YSIscHJvcGVydGllczp7dHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImRlZmF1bHQifSxrZXk6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxmOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9zZWxmQ2hhbmdlZCJ9LF9fbWV0YTp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfX2NvbXB1dGVNZXRhKHR5cGUsIGtleSwgdmFsdWUpIn19LGhvc3RBdHRyaWJ1dGVzOntoaWRkZW46ITB9LF9fY29tcHV0ZU1ldGE6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW5ldyBJbyh7dHlwZTp0LGtleTplfSk7cmV0dXJuIHZvaWQgMCE9PW4mJm4hPT1pLnZhbHVlP2kudmFsdWU9bjp0aGlzLnZhbHVlIT09aS52YWx1ZSYmKHRoaXMudmFsdWU9aS52YWx1ZSksaX0sZ2V0IGxpc3QoKXtyZXR1cm4gdGhpcy5fX21ldGEmJnRoaXMuX19tZXRhLmxpc3R9LF9zZWxmQ2hhbmdlZDpmdW5jdGlvbih0KXt0JiYodGhpcy52YWx1ZT10aGlzKX0sYnlLZXk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBJbyh7dHlwZTp0aGlzLnR5cGUsa2V5OnR9KS52YWx1ZX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKCiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICAgICAgZmlsbDogdmFyKC0taXJvbi1pY29uLWZpbGwtY29sb3IsIGN1cnJlbnRjb2xvcik7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS1pcm9uLWljb24tc3Ryb2tlLWNvbG9yLCBub25lKTsKCiAgICAgICAgd2lkdGg6IHZhcigtLWlyb24taWNvbi13aWR0aCwgMjRweCk7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1pcm9uLWljb24taGVpZ2h0LCAyNHB4KTsKICAgICAgICBAYXBwbHkgLS1pcm9uLWljb247CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KYCxpczoiaXJvbi1pY29uIixwcm9wZXJ0aWVzOntpY29uOnt0eXBlOlN0cmluZ30sdGhlbWU6e3R5cGU6U3RyaW5nfSxzcmM6e3R5cGU6U3RyaW5nfSxfbWV0YTp7dmFsdWU6RW8uY3JlYXRlKCJpcm9uLW1ldGEiLHt0eXBlOiJpY29uc2V0In0pfX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZUljb24oX21ldGEsIGlzQXR0YWNoZWQpIiwiX3VwZGF0ZUljb24odGhlbWUsIGlzQXR0YWNoZWQpIiwiX3NyY0NoYW5nZWQoc3JjLCBpc0F0dGFjaGVkKSIsIl9pY29uQ2hhbmdlZChpY29uLCBpc0F0dGFjaGVkKSJdLF9ERUZBVUxUX0lDT05TRVQ6Imljb25zIixfaWNvbkNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9KHR8fCIiKS5zcGxpdCgiOiIpO3RoaXMuX2ljb25OYW1lPWUucG9wKCksdGhpcy5faWNvbnNldE5hbWU9ZS5wb3AoKXx8dGhpcy5fREVGQVVMVF9JQ09OU0VULHRoaXMuX3VwZGF0ZUljb24oKX0sX3NyY0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSWNvbigpfSxfdXNlc0ljb25zZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pY29ufHwhdGhpcy5zcmN9LF91cGRhdGVJY29uOmZ1bmN0aW9uKCl7dGhpcy5fdXNlc0ljb25zZXQoKT8odGhpcy5faW1nJiZ0aGlzLl9pbWcucGFyZW50Tm9kZSYmZXIodGhpcy5yb290KS5yZW1vdmVDaGlsZCh0aGlzLl9pbWcpLCIiPT09dGhpcy5faWNvbk5hbWU/dGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpOnRoaXMuX2ljb25zZXROYW1lJiZ0aGlzLl9tZXRhJiYodGhpcy5faWNvbnNldD10aGlzLl9tZXRhLmJ5S2V5KHRoaXMuX2ljb25zZXROYW1lKSx0aGlzLl9pY29uc2V0Pyh0aGlzLl9pY29uc2V0LmFwcGx5SWNvbih0aGlzLHRoaXMuX2ljb25OYW1lLHRoaXMudGhlbWUpLHRoaXMudW5saXN0ZW4od2luZG93LCJpcm9uLWljb25zZXQtYWRkZWQiLCJfdXBkYXRlSWNvbiIpKTp0aGlzLmxpc3Rlbih3aW5kb3csImlyb24taWNvbnNldC1hZGRlZCIsIl91cGRhdGVJY29uIikpKToodGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpLHRoaXMuX2ltZ3x8KHRoaXMuX2ltZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSx0aGlzLl9pbWcuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuX2ltZy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuX2ltZy5kcmFnZ2FibGU9ITEpLHRoaXMuX2ltZy5zcmM9dGhpcy5zcmMsZXIodGhpcy5yb290KS5hcHBlbmRDaGlsZCh0aGlzLl9pbWcpKX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoiaXJvbi1pY29uc2V0LXN2ZyIscHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9uYW1lQ2hhbmdlZCJ9LHNpemU6e3R5cGU6TnVtYmVyLHZhbHVlOjI0fSxydGxNaXJyb3Jpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdXNlR2xvYmFsUnRsQXR0cmlidXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fbWV0YT1uZXcgSW8oe3R5cGU6Imljb25zZXQiLGtleTpudWxsLHZhbHVlOm51bGx9KX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUifSxnZXRJY29uTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWNvbnM9dGhpcy5fY3JlYXRlSWNvbk1hcCgpLE9iamVjdC5rZXlzKHRoaXMuX2ljb25zKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5hbWUrIjoiK3R9KSx0aGlzKX0sYXBwbHlJY29uOmZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVJY29uKHQpO3ZhciBuPXRoaXMuX2Nsb25lSWNvbihlLHRoaXMucnRsTWlycm9yaW5nJiZ0aGlzLl90YXJnZXRJc1JUTCh0KSk7aWYobil7dmFyIGk9ZXIodC5yb290fHx0KTtyZXR1cm4gaS5pbnNlcnRCZWZvcmUobixpLmNoaWxkTm9kZXNbMF0pLHQuX3N2Z0ljb249bn1yZXR1cm4gbnVsbH0scmVtb3ZlSWNvbjpmdW5jdGlvbih0KXt0Ll9zdmdJY29uJiYoZXIodC5yb290fHx0KS5yZW1vdmVDaGlsZCh0Ll9zdmdJY29uKSx0Ll9zdmdJY29uPW51bGwpfSxfdGFyZ2V0SXNSVEw6ZnVuY3Rpb24odCl7aWYobnVsbD09dGhpcy5fX3RhcmdldElzUlRMKWlmKHRoaXMudXNlR2xvYmFsUnRsQXR0cmlidXRlKXt2YXIgZT1kb2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgiZGlyIik/ZG9jdW1lbnQuYm9keTpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5fX3RhcmdldElzUlRMPSJydGwiPT09ZS5nZXRBdHRyaWJ1dGUoImRpciIpfWVsc2UgdCYmdC5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFJiYodD10Lmhvc3QpLHRoaXMuX190YXJnZXRJc1JUTD10JiYicnRsIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmRpcmVjdGlvbjtyZXR1cm4gdGhpcy5fX3RhcmdldElzUlRMfSxfbmFtZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXRhLnZhbHVlPW51bGwsdGhpcy5fbWV0YS5rZXk9dGhpcy5uYW1lLHRoaXMuX21ldGEudmFsdWU9dGhpcyx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuZmlyZSgiaXJvbi1pY29uc2V0LWFkZGVkIix0aGlzLHtub2RlOndpbmRvd30pfSkpfSxfY3JlYXRlSWNvbk1hcDpmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGVyKHRoaXMpLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZF0iKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2UuaWRdPWV9KSksdH0sX2Nsb25lSWNvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9pY29ucz10aGlzLl9pY29uc3x8dGhpcy5fY3JlYXRlSWNvbk1hcCgpLHRoaXMuX3ByZXBhcmVTdmdDbG9uZSh0aGlzLl9pY29uc1t0XSx0aGlzLnNpemUsZSl9LF9wcmVwYXJlU3ZnQ2xvbmU6ZnVuY3Rpb24odCxlLG4pe2lmKHQpe3ZhciBpPXQuY2xvbmVOb2RlKCEwKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKSxvPWkuZ2V0QXR0cmlidXRlKCJ2aWV3Qm94Iil8fCIwIDAgIitlKyIgIitlLGE9InBvaW50ZXItZXZlbnRzOiBub25lOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsiO3JldHVybiBuJiZpLmhhc0F0dHJpYnV0ZSgibWlycm9yLWluLXJ0bCIpJiYoYSs9Ii13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLDEpO3RyYW5zZm9ybTpzY2FsZSgtMSwxKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjsiKSxyLnNldEF0dHJpYnV0ZSgidmlld0JveCIsbyksci5zZXRBdHRyaWJ1dGUoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0Iiksci5zZXRBdHRyaWJ1dGUoImZvY3VzYWJsZSIsImZhbHNlIiksci5zdHlsZS5jc3NUZXh0PWEsci5hcHBlbmRDaGlsZChpKS5yZW1vdmVBdHRyaWJ1dGUoImlkIikscn1yZXR1cm4gbnVsbH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFJvPXhlYDxpcm9uLWljb25zZXQtc3ZnIG5hbWU9ImltYWdlIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSJhZGQtYS1waG90byI+PHBhdGggZD0iTTMgNFYxaDJ2M2gzdjJINXYzSDNWNkgwVjRoM3ptMyA2VjdoM1Y0aDdsMS44MyAySDIxYzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yVjEwaDN6bTcgOWMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNS01IDIuMjQtNSA1IDIuMjQgNSA1IDV6bS0zLjItNWMwIDEuNzcgMS40MyAzLjIgMy4yIDMuMnMzLjItMS40MyAzLjItMy4yLTEuNDMtMy4yLTMuMi0zLjItMy4yIDEuNDMtMy4yIDMuMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtdG8tcGhvdG9zIj48cGF0aCBkPSJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkanVzdCI+PHBhdGggZD0iTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLThjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lzdGFudCI+PHBhdGggZD0iTTE5IDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg0bDMgMyAzLTNoNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNS4xMiAxMC44OEwxMiAxN2wtMS44OC00LjEyTDYgMTFsNC4xMi0xLjg4TDEyIDVsMS44OCA0LjEyTDE4IDExbC00LjEyIDEuODh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaXN0YW50LXBob3RvIj48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhdWRpb3RyYWNrIj48cGF0aCBkPSJNMTIgM3Y5LjI4Yy0uNDctLjE3LS45Ny0uMjgtMS41LS4yOEM4LjAxIDEyIDYgMTQuMDEgNiAxNi41UzguMDEgMjEgMTAuNSAyMWMyLjMxIDAgNC4yLTEuNzUgNC40NS00SDE1VjZoNFYzaC03eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJsdXItY2lyY3VsYXIiPjxwYXRoIGQ9Ik0xMCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek03IDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS0zLTNjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zLTZjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtMS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMyA2Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC00Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTItMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0zLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLWxpbmVhciI+PHBhdGggZD0iTTUgMTcuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpNMyAyMWgxOHYtMkgzdjJ6TTUgOS41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjgzIDYuNSA1IDYuNSAzLjUgNy4xNyAzLjUgOCA0LjE3IDkuNSA1IDkuNXptMCA0Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDE3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTgtLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0zIDN2MmgxOFYzSDN6bTE0IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTAgNGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEzIDljLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJsdXItb2ZmIj48cGF0aCBkPSJNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tLjIgNC40OGwuMi4wMmMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNWwuMDIuMmMuMDkuNjcuNjEgMS4xOSAxLjI4IDEuMjh6TTE0IDMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS00IDBjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0xMSA3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04IDhjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tNCAxMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMi41IDUuMjdsMy43OCAzLjc4TDYgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMi44MSAyLjgxYy0uNzEuMTEtMS4yNS43My0xLjI1IDEuNDcgMCAuODMuNjcgMS41IDEuNSAxLjUuNzQgMCAxLjM2LS41NCAxLjQ3LTEuMjVsMi44MSAyLjgxYy0uMDktLjAzLS4xOC0uMDYtLjI4LS4wNi0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMWMwLS4xLS4wMy0uMTktLjA2LS4yOGwzLjc4IDMuNzhMMjAgMjAuMjMgMy43NyA0IDIuNSA1LjI3ek0xMCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xMS0zLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6TTMgOS41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyAxMWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMtMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLW9uIj48cGF0aCBkPSJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMiI+PHBhdGggZD0iTTEwIDJjLTEuODIgMC0zLjUzLjUtNSAxLjM1QzcuOTkgNS4wOCAxMCA4LjMgMTAgMTJzLTIuMDEgNi45Mi01IDguNjVDNi40NyAyMS41IDguMTggMjIgMTAgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuNTIgMiAxMCAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMyI+PHBhdGggZD0iTTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTQgMCA0LjQ4LTIuOTQgOC4yNy03IDkuNTQuOTUuMyAxLjk1LjQ2IDMgLjQ2IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE0LjUyIDIgOSAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNCI+PHBhdGggZD0iTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0uODkgMC0xLjc0LS4yLTIuNS0uNTVDMTEuNTYgMTYuNSAxMyAxNC40MiAxMyAxMnMtMS40NC00LjUtMy41LTUuNDVDMTAuMjYgNi4yIDExLjExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTUiPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNiI+PHBhdGggZD0iTTIwIDE1LjMxTDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOFY2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNyI+PHBhdGggZD0iTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYnJva2VuLWltYWdlIj48cGF0aCBkPSJNMjEgNXY2LjU5bC0zLTMuMDEtNCA0LjAxLTQtNC00IDQtMy0zLjAxVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnptLTMgNi40MmwzIDMuMDFWMTljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ2LTYuNThsMyAyLjk5IDQtNCA0IDQgNC0zLjk5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJydXNoIj48cGF0aCBkPSJNNyAxNGMtMS42NiAwLTMgMS4zNC0zIDMgMCAxLjMxLTEuMTYgMi0yIDIgLjkyIDEuMjIgMi40OSAyIDQgMiAyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjYtMS4zNC0zLTMtM3ptMTMuNzEtOS4zN2wtMS4zNC0xLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMEw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmMuMzktLjM5LjM5LTEuMDIgMC0xLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJ1cnN0LW1vZGUiPjxwYXRoIGQ9Ik0xIDVoMnYxNEgxem00IDBoMnYxNEg1em0xNyAwSDEwYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xek0xMSAxN2wyLjUtMy4xNUwxNS4yOSAxNmwyLjUtMy4yMkwyMSAxN0gxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEiPjxwYXRoIGQ9Ik05LjQgMTAuNWw0Ljc3LTguMjZDMTMuNDcgMi4wOSAxMi43NSAyIDEyIDJjLTIuNCAwLTQuNi44NS02LjMyIDIuMjVsMy42NiA2LjM1LjA2LS4xek0yMS41NCA5Yy0uOTItMi45Mi0zLjE1LTUuMjYtNi02LjM0TDExLjg4IDloOS42NnptLjI2IDFoLTcuNDlsLjI5LjUgNC43NiA4LjI1QzIxIDE2Ljk3IDIyIDE0LjYxIDIyIDEyYzAtLjY5LS4wNy0xLjM1LS4yLTJ6TTguNTQgMTJsLTMuOS02Ljc1QzMuMDEgNy4wMyAyIDkuMzkgMiAxMmMwIC42OS4wNyAxLjM1LjIgMmg3LjQ5bC0xLjE1LTJ6bS02LjA4IDNjLjkyIDIuOTIgMy4xNSA1LjI2IDYgNi4zNEwxMi4xMiAxNUgyLjQ2em0xMS4yNyAwbC0zLjkgNi43NmMuNy4xNSAxLjQyLjI0IDIuMTcuMjQgMi40IDAgNC42LS44NSA2LjMyLTIuMjVsLTMuNjYtNi4zNS0uOTMgMS42eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1hbHQiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMuMiI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMkw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FtZXJhLWZyb250Ij48cGF0aCBkPSJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6TTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTEuOTkuOS0xLjk5IDJTMTAuOSA4IDEyIDh6bTUtOEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnpNNyAyaDEwdjEwLjVjMC0xLjY3LTMuMzMtMi41LTUtMi41cy01IC44My01IDIuNVYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1yZWFyIj48cGF0aCBkPSJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bS01IDZjLTEuMTEgMC0yLS45LTItMnMuODktMiAxLjk5LTIgMiAuOSAyIDJDMTQgNS4xIDEzLjEgNiAxMiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1yb2xsIj48cGF0aCBkPSJNMTQgNWMwLTEuMS0uOS0yLTItMmgtMVYyYzAtLjU1LS40NS0xLTEtMUg2Yy0uNTUgMC0xIC40NS0xIDF2MUg0Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJoOFY1aC04em0tMiAxM2gtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyem00IDloLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2VudGVyLWZvY3VzLXN0cm9uZyI+PHBhdGggZD0iTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0tNyA3SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2VudGVyLWZvY3VzLXdlYWsiPjxwYXRoIGQ9Ik01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbGxlY3Rpb25zIj48cGF0aCBkPSJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNGwyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xsZWN0aW9ucy1ib29rbWFyayI+PHBhdGggZD0iTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxMGwtMi41LTEuNUwxNSAxMlY0aDV2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xvci1sZW5zIj48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbG9yaXplIj48cGF0aCBkPSJNMjAuNzEgNS42M2wtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMy4xMiAzLjEyLTEuOTMtMS45MS0xLjQxIDEuNDEgMS40MiAxLjQyTDMgMTYuMjVWMjFoNC43NWw4LjkyLTguOTIgMS40MiAxLjQyIDEuNDEtMS40MS0xLjkyLTEuOTIgMy4xMi0zLjEyYy40LS40LjQtMS4wMy4wMS0xLjQyek02LjkyIDE5TDUgMTcuMDhsOC4wNi04LjA2IDEuOTIgMS45Mkw2LjkyIDE5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbXBhcmUiPjxwYXRoIGQ9Ik0xMCAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYyaDJWMWgtMnYyem0wIDE1SDVsNS02djZ6bTktMTVoLTV2Mmg1djEzbC01LTZ2OWg1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udHJvbC1wb2ludCI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250cm9sLXBvaW50LWR1cGxpY2F0ZSI+PHBhdGggZD0iTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6TTIgMTJjMC0yLjc5IDEuNjQtNS4yIDQuMDEtNi4zMlYzLjUyQzIuNTIgNC43NiAwIDguMDkgMCAxMnMyLjUyIDcuMjQgNi4wMSA4LjQ4di0yLjE2QzMuNjQgMTcuMiAyIDE0Ljc5IDIgMTJ6bTEzLTljLTQuOTYgMC05IDQuMDQtOSA5czQuMDQgOSA5IDkgOS00LjA0IDktOS00LjA0LTktOS05em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wIj48cGF0aCBkPSJNMTcgMTVoMlY3YzAtMS4xLS45LTItMi0ySDl2Mmg4djh6TTcgMTdWMUg1djRIMXYyaDR2MTBjMCAxLjEuOSAyIDIgMmgxMHY0aDJ2LTRoNHYtMkg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtMTYtOSI+PHBhdGggZD0iTTE5IDZINWMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBINVY4aDE0djh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC0zLTIiPjxwYXRoIGQ9Ik0xOSA0SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC01LTQiPjxwYXRoIGQ9Ik0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC03LTUiPjxwYXRoIGQ9Ik0xOSA3SDVjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhINVY5aDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1kaW4iPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1mcmVlIj48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtbGFuZHNjYXBlIj48cGF0aCBkPSJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3Atb3JpZ2luYWwiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS01LjA0LTYuNzFsLTIuNzUgMy41NC0xLjk2LTIuMzZMNi41IDE3aDExbC0zLjU0LTQuNzF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1wb3J0cmFpdCI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDdWNWgxMHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLXJvdGF0ZSI+PHBhdGggZD0iTTcuNDcgMjEuNDlDNC4yIDE5LjkzIDEuODYgMTYuNzYgMS41IDEzSDBjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMSAuMjMgMCAuNDQtLjAyLjY2LS4wM0w4LjggMjAuMTVsLTEuMzMgMS4zNHpNMTIuMDUgMGMtLjIzIDAtLjQ0LjAyLS42Ni4wNGwzLjgxIDMuODEgMS4zMy0xLjMzQzE5LjggNC4wNyAyMi4xNCA3LjI0IDIyLjUgMTFIMjRjLS41MS02LjE2LTUuNjYtMTEtMTEuOTUtMTF6TTE2IDE0aDJWOGMwLTEuMTEtLjktMi0yLTJoLTZ2Mmg2djZ6bS04IDJWNEg2djJINHYyaDJ2OGMwIDEuMS44OSAyIDIgMmg4djJoMnYtMmgydi0ySDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1zcXVhcmUiPjxwYXRoIGQ9Ik0xOCA0SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg2VjZoMTJ2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVoYXplIj48cGF0aCBkPSJNMiAxNS41djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZXRhaWxzIj48cGF0aCBkPSJNMyA0bDkgMTYgOS0xNkgzem0zLjM4IDJoMTEuMjVMMTIgMTYgNi4zOCA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVkaXQiPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUiPjxwYXRoIGQ9Ik0xNSAxN3YyaDJ2LTJoMnYtMmgtMnYtMmgtMnYyaC0ydjJoMnptNS0xNUg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTUgNWg2djJINVY1em0xNSAxNUg0TDIwIDR2MTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtbmVnLTEiPjxwYXRoIGQ9Ik00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtbmVnLTIiPjxwYXRoIGQ9Ik0xNS4wNSAxNi4yOWwyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTdzLjE5LS43OS4xOS0xLjE4YzAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzEtLjUxLS4xNi0xLjA4LS4yNC0xLjcyLS4yNC0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OS4yNy0uMTIuNi0uMTguOTYtLjE4LjMxIDAgLjU4LjA1LjgxLjE1LjIzLjEuNDMuMjUuNTkuNDMuMTYuMTguMjguNC4zNy42NS4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjF2LTEuNzFoLTUuOTV6TTIgMTF2Mmg4di0ySDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtcGx1cy0xIj48cGF0aCBkPSJNMTAgN0g4djRINHYyaDR2NGgydi00aDR2LTJoLTRWN3ptMTAgMTFoLTJWNy4zOEwxNSA4LjRWNi43TDE5LjcgNWguM3YxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBvc3VyZS1wbHVzLTIiPjxwYXRoIGQ9Ik0xNi4wNSAxNi4yOWwyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTcuMTMtLjM5LjE5LS43OS4xOS0xLjE4IDAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzEtLjUxLS4xNi0xLjA4LS4yNC0xLjcyLS4yNC0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OS4yNy0uMTIuNi0uMTguOTYtLjE4LjMxIDAgLjU4LjA1LjgxLjE1LjIzLjEuNDMuMjUuNTkuNDMuMTYuMTguMjguNC4zNy42NS4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjJ2LTEuNzFoLTUuOTV6TTggN0g2djRIMnYyaDR2NGgydi00aDR2LTJIOFY3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLXplcm8iPjxwYXRoIGQ9Ik0xNi4xNCAxMi41YzAgMS0uMSAxLjg1LS4zIDIuNTUtLjIuNy0uNDggMS4yNy0uODMgMS43LS4zNi40NC0uNzkuNzUtMS4zLjk1LS41MS4yLTEuMDcuMy0xLjcuMy0uNjIgMC0xLjE4LS4xLTEuNjktLjMtLjUxLS4yLS45NS0uNTEtMS4zMS0uOTUtLjM2LS40NC0uNjUtMS4wMS0uODUtMS43LS4yLS43LS4zLTEuNTUtLjMtMi41NXYtMi4wNGMwLTEgLjEtMS44NS4zLTIuNTUuMi0uNy40OC0xLjI2Ljg0LTEuNjkuMzYtLjQzLjgtLjc0IDEuMzEtLjkzQzEwLjgxIDUuMSAxMS4zOCA1IDEyIDVjLjYzIDAgMS4xOS4xIDEuNy4yOS41MS4xOS45NS41IDEuMzEuOTMuMzYuNDMuNjQuOTkuODQgMS42OS4yLjcuMyAxLjU0LjMgMi41NXYyLjA0em0tMi4xMS0yLjM2YzAtLjY0LS4wNS0xLjE4LS4xMy0xLjYyLS4wOS0uNDQtLjIyLS43OS0uNC0xLjA2LS4xNy0uMjctLjM5LS40Ni0uNjQtLjU4LS4yNS0uMTMtLjU0LS4xOS0uODYtLjE5LS4zMiAwLS42MS4wNi0uODYuMThzLS40Ny4zMS0uNjQuNThjLS4xNy4yNy0uMzEuNjItLjQgMS4wNnMtLjEzLjk4LS4xMyAxLjYydjIuNjdjMCAuNjQuMDUgMS4xOC4xNCAxLjYyLjA5LjQ1LjIzLjgxLjQgMS4wOXMuMzkuNDguNjQuNjEuNTQuMTkuODcuMTljLjMzIDAgLjYyLS4wNi44Ny0uMTlzLjQ2LS4zMy42My0uNjFjLjE3LS4yOC4zLS42NC4zOS0xLjA5LjA5LS40NS4xMy0uOTkuMTMtMS42MnYtMi42NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXIiPjxwYXRoIGQ9Ik0xNS45NiAxMC4yOWwtMi43NSAzLjU0LTEuOTYtMi4zNkw4LjUgMTVoMTFsLTMuNTQtNC43MXpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItMSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSAxMGgyVjVoLTR2Mmgydjh6bTctMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItMiI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS00LTRoLTR2LTJoMmMxLjEgMCAyLS44OSAyLTJWN2MwLTEuMTEtLjktMi0yLTJoLTR2Mmg0djJoLTJjLTEuMSAwLTIgLjg5LTIgMnY0aDZ2LTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTMiPjxwYXRoIGQ9Ik0yMSAxSDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xNCA4di0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdjMC0xLjExLS45LTItMi0yaC00djJoNHYyaC0ydjJoMnYyaC00djJoNGMxLjEgMCAyLS44OSAyLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTQiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTIgMTBoMlY1aC0ydjRoLTJWNWgtMnY2aDR2NHptNi0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci01Ij48cGF0aCBkPSJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMmMwLTEuMTEtLjktMi0yLTJoLTJWN2g0VjVoLTZ2Nmg0djJoLTR2Mmg0YzEuMSAwIDItLjg5IDItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNiI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmMxLjEgMCAyLS44OSAyLTJ2LTJjMC0xLjExLS45LTItMi0yaC0yVjdoNFY1aC00Yy0xLjEgMC0yIC44OS0yIDJ2NmMwIDEuMTEuOSAyIDIgMnptMC00aDJ2MmgtMnYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNyI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJsNC04VjVoLTZ2Mmg0bC00IDhoMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItOCI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmMxLjEgMCAyLS44OSAyLTJ2LTEuNWMwLS44My0uNjctMS41LTEuNS0xLjUuODMgMCAxLjUtLjY3IDEuNS0xLjVWN2MwLTEuMTEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjg5LTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNjMCAxLjExLjkgMiAyIDJ6bTAtOGgydjJoLTJWN3ptMCA0aDJ2MmgtMnYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItOSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTE1IDVoLTJjLTEuMSAwLTIgLjg5LTIgMnYyYzAgMS4xMS45IDIgMiAyaDJ2MmgtNHYyaDRjMS4xIDAgMi0uODkgMi0yVjdjMC0xLjExLS45LTItMi0yem0wIDRoLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTktcGx1cyI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhjMC0xLjExLS45LTItMi0yaC0xYy0xLjEgMC0yIC44OS0yIDJ2MWMwIDEuMTEuOSAyIDIgMmgxdjFIOXYyaDNjMS4xIDAgMi0uODkgMi0yem0tMy0zVjhoMXYxaC0xem0xMC04SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCA4aC0yVjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2Nkg3VjNoMTR2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItYi1hbmQtdyI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2bC03LTh2OEg1bDctOFY1aDd2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWNlbnRlci1mb2N1cyI+PHBhdGggZD0iTTUgMTVIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00ek01IDVoNFYzSDVjLTEuMSAwLTIgLjktMiAydjRoMlY1em0xNC0yaC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHpNMTIgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWRyYW1hIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNjEgNS42NCA1LjM2IDguMDQgMi4zNSA4LjM2IDAgMTAuOSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRoMmMwLTIuNzYtMS44Ni01LjA4LTQuNC01Ljc4QzguNjEgNi44OCAxMC4yIDYgMTIgNmMzLjAzIDAgNS41IDIuNDcgNS41IDUuNXYuNUgxOWMxLjY1IDAgMyAxLjM1IDMgM3MtMS4zNSAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItZnJhbWVzIj48cGF0aCBkPSJNMjAgNGgtNGwtNC00LTQgNEg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY2aDQuNTJsMy41Mi0zLjVMMTUuNTIgNkgyMHYxNHpNMTggOEg2djEwaDEyIj48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWhkciI+PHBhdGggZD0iTTE0IDZsLTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItbm9uZSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLXRpbHQtc2hpZnQiPjxwYXRoIGQ9Ik0xMSA0LjA3VjIuMDVjLTIuMDEuMi0zLjg0IDEtNS4zMiAyLjIxTDcuMSA1LjY5YzEuMTEtLjg2IDIuNDQtMS40NCAzLjktMS42MnptNy4zMi4xOUMxNi44NCAzLjA1IDE1LjAxIDIuMjUgMTMgMi4wNXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE5LjkzIDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMkwxOC4zMSA3LjFjLjg2IDEuMTEgMS40NCAyLjQ0IDEuNjIgMy45ek01LjY5IDcuMUw0LjI2IDUuNjhDMy4wNSA3LjE2IDIuMjUgOC45OSAyLjA1IDExaDIuMDJjLjE4LTEuNDYuNzYtMi43OSAxLjYyLTMuOXpNNC4wNyAxM0gyLjA1Yy4yIDIuMDEgMSAzLjg0IDIuMjEgNS4zMmwxLjQzLTEuNDNjLS44Ni0xLjEtMS40NC0yLjQzLTEuNjItMy44OXpNMTUgMTJjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zem0zLjMxIDQuOWwxLjQzIDEuNDNjMS4yMS0xLjQ4IDIuMDEtMy4zMiAyLjIxLTUuMzJoLTIuMDJjLS4xOCAxLjQ1LS43NiAyLjc4LTEuNjIgMy44OXpNMTMgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDMtMS40M2MtMS4xLjg2LTIuNDMgMS40NC0zLjg5IDEuNjJ6bS03LjMyLS4xOUM3LjE2IDIwLjk1IDkgMjEuNzUgMTEgMjEuOTV2LTIuMDJjLTEuNDYtLjE4LTIuNzktLjc2LTMuOS0xLjYybC0xLjQyIDEuNDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLXZpbnRhZ2UiPjxwYXRoIGQ9Ik0xOC43IDEyLjRjLS4yOC0uMTYtLjU3LS4yOS0uODYtLjQuMjktLjExLjU4LS4yNC44Ni0uNCAxLjkyLTEuMTEgMi45OS0zLjEyIDMtNS4xOS0xLjc5LTEuMDMtNC4wNy0xLjExLTYgMC0uMjguMTYtLjU0LjM1LS43OC41NC4wNS0uMzEuMDgtLjYzLjA4LS45NSAwLTIuMjItMS4yMS00LjE1LTMtNS4xOUMxMC4yMSAxLjg1IDkgMy43OCA5IDZjMCAuMzIuMDMuNjQuMDguOTUtLjI0LS4yLS41LS4zOS0uNzgtLjU1LTEuOTItMS4xMS00LjItMS4wMy02IDAgMCAyLjA3IDEuMDcgNC4wOCAzIDUuMTkuMjguMTYuNTcuMjkuODYuNC0uMjkuMTEtLjU4LjI0LS44Ni40LTEuOTIgMS4xMS0yLjk5IDMuMTItMyA1LjE5IDEuNzkgMS4wMyA0LjA3IDEuMTEgNiAwIC4yOC0uMTYuNTQtLjM1Ljc4LS41NC0uMDUuMzItLjA4LjY0LS4wOC45NiAwIDIuMjIgMS4yMSA0LjE1IDMgNS4xOSAxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOSAwLS4zMi0uMDMtLjY0LS4wOC0uOTUuMjQuMi41LjM4Ljc4LjU0IDEuOTIgMS4xMSA0LjIgMS4wMyA2IDAtLjAxLTIuMDctMS4wOC00LjA4LTMtNS4xOXpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXJlIj48cGF0aCBkPSJNNyAxMUgxdjJoNnYtMnptMi4xNy0zLjI0TDcuMDUgNS42NCA1LjY0IDcuMDVsMi4xMiAyLjEyIDEuNDEtMS40MXpNMTMgMWgtMnY2aDJWMXptNS4zNiA2LjA1bC0xLjQxLTEuNDEtMi4xMiAyLjEyIDEuNDEgMS40MSAyLjEyLTIuMTJ6TTE3IDExdjJoNnYtMmgtNnptLTUtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTIuODMgNy4yNGwyLjEyIDIuMTIgMS40MS0xLjQxLTIuMTItMi4xMi0xLjQxIDEuNDF6bS05LjE5LjcxbDEuNDEgMS40MSAyLjEyLTIuMTItMS40MS0xLjQxLTIuMTIgMi4xMnpNMTEgMjNoMnYtNmgtMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXNoLWF1dG8iPjxwYXRoIGQ9Ik0zIDJ2MTJoM3Y5bDctMTJIOWw0LTlIM3ptMTYgMGgtMmwtMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDE5IDJ6bS0yLjE1IDUuNjVMMTggNGwxLjE1IDMuNjVoLTIuM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFzaC1vZmYiPjxwYXRoIGQ9Ik0zLjI3IDNMMiA0LjI3bDUgNVYxM2gzdjlsMy41OC02LjE0TDE3LjczIDIwIDE5IDE4LjczIDMuMjcgM3pNMTcgMTBoLTRsNC04SDd2Mi4xOGw4LjQ2IDguNDZMMTcgMTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxhc2gtb24iPjxwYXRoIGQ9Ik03IDJ2MTFoM3Y5bDctMTJoLTRsNC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsaXAiPjxwYXRoIGQ9Ik0xNSAyMWgydi0yaC0ydjJ6bTQtMTJoMlY3aC0ydjJ6TTMgNXYxNGMwIDEuMS45IDIgMiAyaDR2LTJINVY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTYtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS04IDIwaDJWMWgtMnYyMnptOC02aDJ2LTJoLTJ2MnpNMTUgNWgyVjNoLTJ2MnptNCA4aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhZGllbnQiPjxwYXRoIGQ9Ik0xMSA5aDJ2MmgtMnptLTIgMmgydjJIOXptNCAwaDJ2MmgtMnptMi0yaDJ2MmgtMnpNNyA5aDJ2Mkg3em0xMi02SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxOEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptMi03aC0ydjJoMnYyaC0ydi0yaC0ydjJoLTJ2LTJoLTJ2Mkg5di0ySDd2Mkg1di0yaDJ2LTJINVY1aDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhaW4iPjxwYXRoIGQ9Ik0xMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyaWQtb2ZmIj48cGF0aCBkPSJNOCA0djEuNDVsMiAyVjRoNHY0aC0zLjQ1bDIgMkgxNHYxLjQ1bDIgMlYxMGg0djRoLTMuNDVsMiAySDIwdjEuNDVsMiAyVjRjMC0xLjEtLjktMi0yLTJINC41NWwyIDJIOHptOCAwaDR2NGgtNFY0ek0xLjI3IDEuMjdMMCAyLjU1bDIgMlYyMGMwIDEuMS45IDIgMiAyaDE1LjQ2bDIgMiAxLjI3LTEuMjdMMS4yNyAxLjI3ek0xMCAxMi41NUwxMS40NSAxNEgxMHYtMS40NXptLTYtNkw1LjQ1IDhINFY2LjU1ek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGgzLjQ1bC41NS41NVYxNHptNiA2aC00di00aDMuNDVsLjU1LjU0VjIwem0yIDB2LTEuNDZMMTcuNDYgMjBIMTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JpZC1vbiI+PHBhdGggZD0iTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci1vZmYiPjxwYXRoIGQ9Ik0xNy41IDE1di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjIuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djQuOWwxLjEgMS4xaC40em0wLTQuNWgydjFoLTJ2LTF6bS00LjUgMHYuNGwxLjUgMS41di0xLjljMC0uOC0uNy0xLjUtMS41LTEuNWgtMS45bDEuNSAxLjVoLjR6bS0zLjUtMWwtNy03LTEuMSAxTDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4xLTEuMS0xMi4xLTEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci1vbiI+PHBhdGggZD0iTTIxIDExLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY2aDEuNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDhWOUg2LjV2MnpNMTMgOUg5LjV2NkgxM2MuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41aC0ydi0zaDJ2M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJoZHItc3Ryb25nIj48cGF0aCBkPSJNMTcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6TTUgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGRyLXdlYWsiPjxwYXRoIGQ9Ik01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xMi0yYy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVhbGluZyI+PHBhdGggZD0iTTE3LjczIDEyLjAybDMuOTgtMy45OGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC00LjM0LTQuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0zLjk4IDMuOThMOCAyLjI5QzcuOCAyLjEgNy41NSAyIDcuMjkgMmMtLjI1IDAtLjUxLjEtLjcuMjlMMi4yNSA2LjYzYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDMuOTggMy45OEwyLjI1IDE2Yy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDQuMzQgNC4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy45OC0zLjk4IDMuOTggMy45OGMuMi4yLjQ1LjI5LjcxLjI5LjI2IDAgLjUxLS4xLjcxLS4yOWw0LjM0LTQuMzRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMy45OS0zLjk4ek0xMiA5Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS00LjcxIDEuOTZMMy42NiA3LjM0bDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzek0xMCAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yIDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIuNjYgOS4zNGwtMy42My0zLjYyIDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImltYWdlIj48cGF0aCBkPSJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbWFnZS1hc3BlY3QtcmF0aW8iPjxwYXRoIGQ9Ik0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImlzbyI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhbmRzY2FwZSI+PHBhdGggZD0iTTE0IDZsLTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsZWFrLWFkZCI+PHBhdGggZD0iTTYgM0gzdjNjMS42NiAwIDMtMS4zNCAzLTN6bTggMGgtMmMwIDQuOTctNC4wMyA5LTkgOXYyYzYuMDggMCAxMS00LjkzIDExLTExem0tNCAwSDhjMCAyLjc2LTIuMjQgNS01IDV2MmMzLjg3IDAgNy0zLjEzIDctN3ptMCAxOGgyYzAtNC45NyA0LjAzLTkgOS05di0yYy02LjA3IDAtMTEgNC45My0xMSAxMXptOCAwaDN2LTNjLTEuNjYgMC0zIDEuMzQtMyAzem0tNCAwaDJjMC0yLjc2IDIuMjQtNSA1LTV2LTJjLTMuODcgMC03IDMuMTMtNyA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxlYWstcmVtb3ZlIj48cGF0aCBkPSJNMTAgM0g4YzAgLjM3LS4wNC43Mi0uMTIgMS4wNmwxLjU5IDEuNTlDOS44MSA0Ljg0IDEwIDMuOTQgMTAgM3pNMyA0LjI3bDIuODQgMi44NEM1LjAzIDcuNjcgNC4wNiA4IDMgOHYyYzEuNjEgMCAzLjA5LS41NSA0LjI3LTEuNDZMOC43IDkuOTdDNy4xNCAxMS4yNCA1LjE2IDEyIDMgMTJ2MmMyLjcxIDAgNS4xOS0uOTkgNy4xMS0yLjYybDIuNSAyLjVDMTAuOTkgMTUuODEgMTAgMTguMjkgMTAgMjFoMmMwLTIuMTYuNzYtNC4xNCAyLjAzLTUuNjlsMS40MyAxLjQzQzE0LjU1IDE3LjkxIDE0IDE5LjM5IDE0IDIxaDJjMC0xLjA2LjMzLTIuMDMuODktMi44NEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3ek0xNCAzaC0yYzAgMS41LS4zNyAyLjkxLTEuMDIgNC4xNmwxLjQ2IDEuNDZDMTMuNDIgNi45OCAxNCA1LjA2IDE0IDN6bTUuOTQgMTMuMTJjLjM0LS4wOC42OS0uMTIgMS4wNi0uMTJ2LTJjLS45NCAwLTEuODQuMTktMi42Ni41MmwxLjYgMS42em0tNC41Ni00LjU2bDEuNDYgMS40NkMxOC4wOSAxMi4zNyAxOS41IDEyIDIxIDEydi0yYy0yLjA2IDAtMy45OC41OC01LjYyIDEuNTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGVucyI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGlua2VkLWNhbWVyYSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxNCIgcj0iMy4yIj48L2NpcmNsZT48cGF0aCBkPSJNMTYgMy4zM2MyLjU4IDAgNC42NyAyLjA5IDQuNjcgNC42N0gyMmMwLTMuMzEtMi42OS02LTYtNnYxLjMzTTE2IDZjMS4xMSAwIDIgLjg5IDIgMmgxLjMzYzAtMS44NC0xLjQ5LTMuMzMtMy4zMy0zLjMzVjYiPjwvcGF0aD48cGF0aCBkPSJNMTcgOWMwLTEuMTEtLjg5LTItMi0yVjRIOUw3LjE3IDZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5aC01em0tNSAxMGMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3MiPjxwYXRoIGQ9Ik0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLTMiPjxwYXRoIGQ9Ik0xOS4wMSAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41LjgzIDAgMS41LjY3IDEuNSAxLjVWMTVjMCAxLjExLS45IDItMiAyaC00di0yaDR2LTJoLTJ2LTJoMlY5aC00VjdoNGMxLjEgMCAyIC44OSAyIDJ2MS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLTQiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgMTRoLTJ2LTRIOVY3aDJ2NGgyVjdoMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy01Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYzEuMSAwIDIgLjg5IDIgMnYyYzAgMS4xMS0uOSAyLTIgMkg5di0yaDR2LTJIOVY3aDZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy02Ij48cGF0aCBkPSJNMTEgMTVoMnYtMmgtMnYyem04LTEySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDJjMS4xIDAgMiAuODkgMiAydjJjMCAxLjExLS45IDItMiAyaC0yYy0xLjEgMC0yLS44OS0yLTJWOWMwLTEuMTEuOS0yIDItMmg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3Mtb25lIj48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDE0aC0yVjloLTJWN2g0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLXR3byI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA4YzAgMS4xMS0uOSAyLTIgMmgtMnYyaDR2Mkg5di00YzAtMS4xMS45LTIgMi0yaDJWOUg5VjdoNGMxLjEgMCAyIC44OSAyIDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3VwZSI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vbm9jaHJvbWUtcGhvdG9zIj48cGF0aCBkPSJNMjAgNWgtMy4yTDE1IDNIOUw3LjIgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRoLTh2LTFjLTIuOCAwLTUtMi4yLTUtNXMyLjItNSA1LTVWN2g4djEyem0tMy02YzAtMi44LTIuMi01LTUtNXYxLjhjMS44IDAgMy4yIDEuNCAzLjIgMy4ycy0xLjQgMy4yLTMuMiAzLjJWMThjMi44IDAgNS0yLjIgNS01em0tOC4yIDBjMCAxLjggMS40IDMuMiAzLjIgMy4yVjkuOGMtMS44IDAtMy4yIDEuNC0zLjIgMy4yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdmllLWNyZWF0aW9uIj48cGF0aCBkPSJNMTggNGwyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0aC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdmllLWZpbHRlciI+PHBhdGggZD0iTTE4IDRsMiAzaC0zbC0yLTNoLTJsMiAzaC0zbC0yLTNIOGwyIDNIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHptLTYuNzUgMTEuMjVMMTAgMThsLTEuMjUtMi43NUw2IDE0bDIuNzUtMS4yNUwxMCAxMGwxLjI1IDIuNzVMMTQgMTRsLTIuNzUgMS4yNXptNS42OS0zLjMxTDE2IDE0bC0uOTQtMi4wNkwxMyAxMWwyLjA2LS45NEwxNiA4bC45NCAyLjA2TDE5IDExbC0yLjA2Ljk0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im11c2ljLW5vdGUiPjxwYXRoIGQ9Ik0xMiAzdjEwLjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1LTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNFY3aDRWM2gtNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXR1cmUiPjxwYXRoIGQ9Ik0xMyAxNi4xMmMzLjQ3LS40MSA2LjE3LTMuMzYgNi4xNy02Ljk1IDAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3YzAgMy40NyAyLjUyIDYuMzQgNS44MyA2Ljg5VjIwSDV2MmgxNHYtMmgtNnYtMy44OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXR1cmUtcGVvcGxlIj48cGF0aCBkPSJNMjIuMTcgOS4xN2MwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN2MwIDMuNDcgMi41MiA2LjM0IDUuODMgNi44OVYyMEg2di0zaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXY0aDF2NWgxNnYtMmgtM3YtMy44OGMzLjQ3LS40MSA2LjE3LTMuMzYgNi4xNy02Ljk1ek00LjUgMTFjLjgzIDAgMS41LS42NyAxLjUtMS41UzUuMzMgOCA0LjUgOCAzIDguNjcgMyA5LjUgMy42NyAxMSA0LjUgMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF2aWdhdGUtYmVmb3JlIj48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXZpZ2F0ZS1uZXh0Ij48cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFsZXR0ZSI+PHBhdGggZD0iTTEyIDNjLTQuOTcgMC05IDQuMDMtOSA5czQuMDMgOSA5IDljLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYSI+PHBhdGggZD0iTTIzIDE4VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnpNOC41IDEyLjVsMi41IDMuMDFMMTQuNSAxMWw0LjUgNkg1bDMuNS00LjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtZmlzaC1leWUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYS1ob3Jpem9udGFsIj48cGF0aCBkPSJNMjAgNi41NHYxMC45MWMtMi42LS43Ny01LjI4LTEuMTYtOC0xLjE2LTIuNzIgMC01LjQuMzktOCAxLjE2VjYuNTRjMi42Ljc3IDUuMjggMS4xNiA4IDEuMTYgMi43Mi4wMSA1LjQtLjM4IDgtMS4xNk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdjLTMuMDkgMC02LjE4LS41NS05LjEyLTEuNjQtLjExLS4wNC0uMjItLjA2LS4zMS0uMDYtLjM0IDAtLjU3LjIzLS41Ny42M3YxNC43NWMwIC4zOS4yMy42Mi41Ny42Mi4xIDAgLjItLjAyLjMxLS4wNiAyLjk0LTEuMSA2LjAzLTEuNjQgOS4xMi0xLjY0IDMuMDkgMCA2LjE4LjU1IDkuMTIgMS42NC4xMS4wNC4yMS4wNi4zMS4wNi4zMyAwIC41Ny0uMjMuNTctLjYzVjQuNjNjMC0uNC0uMjQtLjYzLS41Ny0uNjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtdmVydGljYWwiPjxwYXRoIGQ9Ik0xOS45NCAyMS4xMmMtMS4xLTIuOTQtMS42NC02LjAzLTEuNjQtOS4xMiAwLTMuMDkuNTUtNi4xOCAxLjY0LTkuMTIuMDQtLjExLjA2LS4yMi4wNi0uMzEgMC0uMzQtLjIzLS41Ny0uNjMtLjU3SDQuNjNjLS40IDAtLjYzLjIzLS42My41NyAwIC4xLjAyLjIuMDYuMzFDNS4xNiA1LjgyIDUuNzEgOC45MSA1LjcxIDEyYzAgMy4wOS0uNTUgNi4xOC0xLjY0IDkuMTItLjA1LjExLS4wNy4yMi0uMDcuMzEgMCAuMzMuMjMuNTcuNjMuNTdoMTQuNzVjLjM5IDAgLjYzLS4yNC42My0uNTctLjAxLS4xLS4wMy0uMi0uMDctLjMxek02LjU0IDIwYy43Ny0yLjYgMS4xNi01LjI4IDEuMTYtOCAwLTIuNzItLjM5LTUuNC0xLjE2LThoMTAuOTFjLS43NyAyLjYtMS4xNiA1LjI4LTEuMTYgOCAwIDIuNzIuMzkgNS40IDEuMTYgOEg2LjU0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbm9yYW1hLXdpZGUtYW5nbGUiPjxwYXRoIGQ9Ik0xMiA2YzIuNDUgMCA0LjcxLjIgNy4yOS42NC40NyAxLjc4LjcxIDMuNTguNzEgNS4zNiAwIDEuNzgtLjI0IDMuNTgtLjcxIDUuMzYtMi41OC40NC00Ljg0LjY0LTcuMjkuNjRzLTQuNzEtLjItNy4yOS0uNjRDNC4yNCAxNS41OCA0IDEzLjc4IDQgMTJjMC0xLjc4LjI0LTMuNTguNzEtNS4zNkM3LjI5IDYuMiA5LjU1IDYgMTIgNm0wLTJjLTIuNzMgMC01LjIyLjI0LTcuOTUuNzJsLS45My4xNi0uMjUuOUMyLjI5IDcuODUgMiA5LjkzIDIgMTJzLjI5IDQuMTUuODcgNi4yMmwuMjUuODkuOTMuMTZjMi43My40OSA1LjIyLjczIDcuOTUuNzNzNS4yMi0uMjQgNy45NS0uNzJsLjkzLS4xNi4yNS0uODljLjU4LTIuMDguODctNC4xNi44Ny02LjIzcy0uMjktNC4xNS0uODctNi4yMmwtLjI1LS44OS0uOTMtLjE2QzE3LjIyIDQuMjQgMTQuNzMgNCAxMiA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvIj48cGF0aCBkPSJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1hbGJ1bSI+PHBhdGggZD0iTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDRoNXY4bC0yLjUtMS41TDYgMTJWNHptMCAxNWwzLTMuODYgMi4xNCAyLjU4IDMtMy44NkwxOCAxOUg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLWNhbWVyYSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMy4yIj48L2NpcmNsZT48cGF0aCBkPSJNOSAyTDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgMkg5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1maWx0ZXIiPjxwYXRoIGQ9Ik0xOS4wMiAxMHY5SDVWNWg5VjNINS4wMmMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtOWgtMnpNMTcgMTBsLjk0LTIuMDZMMjAgN2wtMi4wNi0uOTRMMTcgNGwtLjk0IDIuMDZMMTQgN2wyLjA2Ljk0em0tMy43NS43NUwxMiA4bC0xLjI1IDIuNzVMOCAxMmwyLjc1IDEuMjVMMTIgMTZsMS4yNS0yLjc1TDE2IDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLWxpYnJhcnkiPjxwYXRoIGQ9Ik0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00bDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLXNpemUtc2VsZWN0LWFjdHVhbCI+PHBhdGggZD0iTTIxIDNIM0MyIDMgMSA0IDEgNXYxNGMwIDEuMS45IDIgMiAyaDE4YzEgMCAyLTEgMi0yVjVjMC0xLTEtMi0yLTJ6TTUgMTdsMy41LTQuNSAyLjUgMy4wMUwxNC41IDExbDQuNSA2SDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tc2l6ZS1zZWxlY3QtbGFyZ2UiPjxwYXRoIGQ9Ik0yMSAxNWgydjJoLTJ2LTJ6bTAtNGgydjJoLTJ2LTJ6bTIgOGgtMnYyYzEgMCAyLTEgMi0yek0xMyAzaDJ2MmgtMlYzem04IDRoMnYyaC0yVjd6bTAtNHYyaDJjMC0xLTEtMi0yLTJ6TTEgN2gydjJIMVY3em0xNi00aDJ2MmgtMlYzem0wIDE2aDJ2MmgtMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptNiAwaDJ2Mkg5VjN6TTUgM2gydjJINVYzem0tNCA4djhjMCAxLjEuOSAyIDIgMmgxMlYxMUgxem0yIDhsMi41LTMuMjEgMS43OSAyLjE1IDIuNS0zLjIyTDEzIDE5SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tc2l6ZS1zZWxlY3Qtc21hbGwiPjxwYXRoIGQ9Ik0yMyAxNWgtMnYyaDJ2LTJ6bTAtNGgtMnYyaDJ2LTJ6bTAgOGgtMnYyYzEgMCAyLTEgMi0yek0xNSAzaC0ydjJoMlYzem04IDRoLTJ2MmgyVjd6bS0yLTR2MmgyYzAtMS0xLTItMi0yek0zIDIxaDh2LTZIMXY0YzAgMS4xLjkgMiAyIDJ6TTMgN0gxdjJoMlY3em0xMiAxMmgtMnYyaDJ2LTJ6bTQtMTZoLTJ2MmgyVjN6bTAgMTZoLTJ2Mmgydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem0wIDhIMXYyaDJ2LTJ6bTgtOEg5djJoMlYzek03IDNINXYyaDJWM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwaWN0dXJlLWFzLXBkZiI+PHBhdGggZD0iTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOC41IDcuNWMwIC44My0uNjcgMS41LTEuNSAxLjVIOXYySDcuNVY3SDEwYy44MyAwIDEuNS42NyAxLjUgMS41djF6bTUgMmMwIC44My0uNjcgMS41LTEuNSAxLjVoLTIuNVY3SDE1Yy44MyAwIDEuNS42NyAxLjUgMS41djN6bTQtM0gxOXYxaDEuNVYxMUgxOXYyaC0xLjVWN2gzdjEuNXpNOSA5LjVoMXYtMUg5djF6TTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xMCA1LjVoMXYtM2gtMXYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvcnRyYWl0Ij48cGF0aCBkPSJNMTIgMTIuMjVjMS4yNCAwIDIuMjUtMS4wMSAyLjI1LTIuMjVTMTMuMjQgNy43NSAxMiA3Ljc1IDkuNzUgOC43NiA5Ljc1IDEwczEuMDEgMi4yNSAyLjI1IDIuMjV6bTQuNSA0YzAtMS41LTMtMi4yNS00LjUtMi4yNXMtNC41Ljc1LTQuNSAyLjI1VjE3aDl2LS43NXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1yZWQtZXllIj48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS05MC1kZWdyZWVzLWNjdyI+PHBhdGggZD0iTTcuMzQgNi40MUwuODYgMTIuOWw2LjQ5IDYuNDggNi40OS02LjQ4LTYuNS02LjQ5ek0zLjY5IDEyLjlsMy42Ni0zLjY2TDExIDEyLjlsLTMuNjYgMy42Ni0zLjY1LTMuNjZ6bTE1LjY3LTYuMjZDMTcuNjEgNC44OCAxNS4zIDQgMTMgNFYuNzZMOC43NiA1IDEzIDkuMjRWNmMxLjc5IDAgMy41OC42OCA0Ljk1IDIuMDUgMi43MyAyLjczIDIuNzMgNy4xNyAwIDkuOUMxNi41OCAxOS4zMiAxNC43OSAyMCAxMyAyMGMtLjk3IDAtMS45NC0uMjEtMi44NC0uNjFsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjQgMy41Mi0zLjUxIDMuNTItOS4yMSAwLTEyLjcyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS1sZWZ0Ij48cGF0aCBkPSJNNy4xMSA4LjUzTDUuNyA3LjExQzQuOCA4LjI3IDQuMjQgOS42MSA0LjA3IDExaDIuMDJjLjE0LS44Ny40OS0xLjcyIDEuMDItMi40N3pNNi4wOSAxM0g0LjA3Yy4xNyAxLjM5LjcyIDIuNzMgMS42MiAzLjg5bDEuNDEtMS40MmMtLjUyLS43NS0uODctMS41OS0xLjAxLTIuNDd6bTEuMDEgNS4zMmMxLjE2LjkgMi41MSAxLjQ0IDMuOSAxLjYxVjE3LjljLS44Ny0uMTUtMS43MS0uNDktMi40Ni0xLjAzTDcuMSAxOC4zMnpNMTMgNC4wN1YxTDguNDUgNS41NSAxMyAxMFY2LjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXMtMi4xNiA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTNzLTMuMDUtNy40NC03LTcuOTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm90YXRlLXJpZ2h0Ij48cGF0aCBkPSJNMTUuNTUgNS41NUwxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYy0uMTctMS4zOS0uNzItMi43My0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDJsMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNsaWRlc2hvdyI+PHBhdGggZD0iTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdHJhaWdodGVuIj48cGF0aCBkPSJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY0aDJWOGgydjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3R5bGUiPjxwYXRoIGQ9Ik0yLjUzIDE5LjY1bDEuMzQuNTZ2LTkuMDNsLTIuNDMgNS44NmMtLjQxIDEuMDIuMDggMi4xOSAxLjA5IDIuNjF6bTE5LjUtMy43TDE3LjA3IDMuOThjLS4zMS0uNzUtMS4wNC0xLjIxLTEuODEtMS4yMy0uMjYgMC0uNTMuMDQtLjc5LjE1TDcuMSA1Ljk1Yy0uNzUuMzEtMS4yMSAxLjAzLTEuMjMgMS44LS4wMS4yNy4wNC41NC4xNS44bDQuOTYgMTEuOTdjLjMxLjc2IDEuMDUgMS4yMiAxLjgzIDEuMjMuMjYgMCAuNTItLjA1Ljc3LS4xNWw3LjM2LTMuMDVjMS4wMi0uNDIgMS41MS0xLjU5IDEuMDktMi42ek03Ljg4IDguNzVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTIgMTFjMCAxLjEuOSAyIDIgMmgxLjQ1bC0zLjQ1LTguMzR2Ni4zNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2l0Y2gtY2FtZXJhIj48cGF0aCBkPSJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTUgMTEuNVYxM0g5djIuNUw1LjUgMTIgOSA4LjVWMTFoNlY4LjVsMy41IDMuNS0zLjUgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3aXRjaC12aWRlbyI+PHBhdGggZD0iTTE4IDkuNVY2YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xM2wtNCA0em0tNSA2VjEzSDd2Mi41TDMuNSAxMiA3IDguNVYxMWg2VjguNWwzLjUgMy41LTMuNSAzLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFnLWZhY2VzIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRleHR1cmUiPjxwYXRoIGQ9Ik0xOS41MSAzLjA4TDMuMDggMTkuNTFjLjA5LjM0LjI3LjY1LjUxLjkuMjUuMjQuNTYuNDIuOS41MUwyMC45MyA0LjQ5Yy0uMTktLjY5LS43My0xLjIzLTEuNDItMS40MXpNMTEuODggM0wzIDExLjg4djIuODNMMTQuNzEgM2gtMi44M3pNNSAzYy0xLjEgMC0yIC45LTIgMnYybDQtNEg1em0xNCAxOGMuNTUgMCAxLjA1LS4yMiAxLjQxLS41OS4zNy0uMzYuNTktLjg2LjU5LTEuNDF2LTJsLTQgNGgyem0tOS43MSAwaDIuODNMMjEgMTIuMTJWOS4yOUw5LjI5IDIxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVsYXBzZSI+PHBhdGggZD0iTTE2LjI0IDcuNzZDMTUuMDcgNi41OSAxMy41NCA2IDEyIDZ2NmwtNC4yNCA0LjI0YzIuMzQgMi4zNCA2LjE0IDIuMzQgOC40OSAwIDIuMzQtMi4zNCAyLjM0LTYuMTQtLjAxLTguNDh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVyIj48cGF0aCBkPSJNMTUgMUg5djJoNlYxem0tNCAxM2gyVjhoLTJ2NnptOC4wMy02LjYxbDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDkgOS00LjAzIDktOWMwLTIuMTItLjc0LTQuMDctMS45Ny01LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItMTAiPjxwYXRoIGQ9Ik0wIDcuNzJWOS40bDMtMVYxOGgyVjZoLS4yNUwwIDcuNzJ6bTIzLjc4IDYuNjVjLS4xNC0uMjgtLjM1LS41My0uNjMtLjc0LS4yOC0uMjEtLjYxLS4zOS0xLjAxLS41M3MtLjg1LS4yNy0xLjM1LS4zOGMtLjM1LS4wNy0uNjQtLjE1LS44Ny0uMjMtLjIzLS4wOC0uNDEtLjE2LS41NS0uMjUtLjE0LS4wOS0uMjMtLjE5LS4yOC0uMy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOSAwLS4xNC4wMy0uMjguMDktLjQxLjA2LS4xMy4xNS0uMjUuMjctLjM0LjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTEuMTkuMDcuMzUuMTcuNDguMjkuMTMuMTIuMjIuMjYuMjkuNDIuMDYuMTYuMS4zMi4xLjQ5aDEuOTVjMC0uMzktLjA4LS43NS0uMjQtMS4wOS0uMTYtLjM0LS4zOS0uNjMtLjY5LS44OC0uMy0uMjUtLjY2LS40NC0xLjA5LS41OUMyMS40OSA5LjA3IDIxIDkgMjAuNDYgOWMtLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY5LjIzLjk2Yy4xNS4yOC4zNi41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNC0uMTctLjExLS4zLS4yNi0uNDEtLjQ0LS4xMS0uMTgtLjE3LS40MS0uMTgtLjY3aC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDUuMTYuMzQuMzkuNjUuNy45My4zMS4yNy42OS40OSAxLjE1LjY2LjQ2LjE3Ljk4LjI1IDEuNTguMjUuNTMgMCAxLjAxLS4wNiAxLjQ0LS4xOS40My0uMTMuOC0uMzEgMS4xMS0uNTQuMzEtLjIzLjU0LS41MS43MS0uODMuMTctLjMyLjI1LS42Ny4yNS0xLjA2LS4wMi0uNC0uMDktLjc0LS4yNC0xLjAyem0tOS45Ni03LjMyYy0uMzQtLjQtLjc1LS43LTEuMjMtLjg4LS40Ny0uMTgtMS4wMS0uMjctMS41OS0uMjctLjU4IDAtMS4xMS4wOS0xLjU5LjI3LS40OC4xOC0uODkuNDctMS4yMy44OC0uMzQuNDEtLjYuOTMtLjc5IDEuNTktLjE4LjY1LS4yOCAxLjQ1LS4yOCAyLjM5djEuOTJjMCAuOTQuMDkgMS43NC4yOCAyLjM5LjE5LjY2LjQ1IDEuMTkuOCAxLjYuMzQuNDEuNzUuNzEgMS4yMy44OS40OC4xOCAxLjAxLjI4IDEuNTkuMjguNTkgMCAxLjEyLS4wOSAxLjU5LS4yOC40OC0uMTguODgtLjQ4IDEuMjItLjg5LjM0LS40MS42LS45NC43OC0xLjYuMTgtLjY1LjI4LTEuNDUuMjgtMi4zOXYtMS45MmMwLS45NC0uMDktMS43NC0uMjgtMi4zOS0uMTgtLjY2LS40NC0xLjE5LS43OC0xLjU5em0tLjkyIDYuMTdjMCAuNi0uMDQgMS4xMS0uMTIgMS41My0uMDguNDItLjIuNzYtLjM2IDEuMDItLjE2LjI2LS4zNi40NS0uNTkuNTctLjIzLjEyLS41MS4xOC0uODIuMTgtLjMgMC0uNTgtLjA2LS44Mi0uMThzLS40NC0uMzEtLjYtLjU3Yy0uMTYtLjI2LS4yOS0uNi0uMzgtMS4wMi0uMDktLjQyLS4xMy0uOTMtLjEzLTEuNTN2LTIuNWMwLS42LjA0LTEuMTEuMTMtMS41Mi4wOS0uNDEuMjEtLjc0LjM4LTEgLjE2LS4yNS4zNi0uNDMuNi0uNTUuMjQtLjExLjUxLS4xNy44MS0uMTcuMzEgMCAuNTguMDYuODEuMTcuMjQuMTEuNDQuMjkuNi41NS4xNi4yNS4yOS41OC4zNy45OS4wOC40MS4xMy45Mi4xMyAxLjUydjIuNTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItMyI+PHBhdGggZD0iTTExLjYxIDEyLjk3Yy0uMTYtLjI0LS4zNi0uNDYtLjYyLS42NS0uMjUtLjE5LS41Ni0uMzUtLjkzLS40OC4zLS4xNC41Ny0uMy44LS41LjIzLS4yLjQyLS40MS41Ny0uNjQuMTUtLjIzLjI3LS40Ni4zNC0uNzEuMDgtLjI0LjExLS40OS4xMS0uNzMgMC0uNTUtLjA5LTEuMDQtLjI4LTEuNDYtLjE4LS40Mi0uNDQtLjc3LS43OC0xLjA2LS4zMy0uMjgtLjczLS41LTEuMi0uNjQtLjQ1LS4xMy0uOTctLjItMS41My0uMi0uNTUgMC0xLjA2LjA4LTEuNTIuMjQtLjQ3LjE3LS44Ny40LTEuMi42OS0uMzMuMjktLjYuNjMtLjc4IDEuMDMtLjIuMzktLjI5LjgzLS4yOSAxLjI5aDEuOThjMC0uMjYuMDUtLjQ5LjE0LS42OS4wOS0uMi4yMi0uMzguMzgtLjUyLjE3LS4xNC4zNi0uMjUuNTgtLjMzLjIyLS4wOC40Ni0uMTIuNzMtLjEyLjYxIDAgMS4wNi4xNiAxLjM2LjQ3LjMuMzEuNDQuNzUuNDQgMS4zMiAwIC4yNy0uMDQuNTItLjEyLjc0LS4wOC4yMi0uMjEuNDEtLjM4LjU3LS4xNy4xNi0uMzguMjgtLjYzLjM3LS4yNS4wOS0uNTUuMTMtLjg5LjEzSDYuNzJ2MS41N0g3LjljLjM0IDAgLjY0LjA0LjkxLjExLjI3LjA4LjUuMTkuNjkuMzUuMTkuMTYuMzQuMzYuNDQuNjEuMS4yNC4xNi41NC4xNi44NyAwIC42Mi0uMTggMS4wOS0uNTMgMS40Mi0uMzUuMzMtLjg0LjQ5LTEuNDUuNDktLjI5IDAtLjU2LS4wNC0uOC0uMTMtLjI0LS4wOC0uNDQtLjItLjYxLS4zNi0uMTctLjE2LS4zLS4zNC0uMzktLjU2LS4wOS0uMjItLjE0LS40Ni0uMTQtLjcySDQuMTljMCAuNTUuMTEgMS4wMy4zMiAxLjQ1LjIxLjQyLjUuNzcuODYgMS4wNXMuNzcuNDkgMS4yNC42My45Ni4yMSAxLjQ4LjIxYy41NyAwIDEuMDktLjA4IDEuNTgtLjIzLjQ5LS4xNS45MS0uMzggMS4yNi0uNjguMzYtLjMuNjQtLjY2Ljg0LTEuMS4yLS40My4zLS45My4zLTEuNDggMC0uMjktLjA0LS41OC0uMTEtLjg2LS4wOC0uMjUtLjE5LS41MS0uMzUtLjc2em05LjI2IDEuNGMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4Yy0uMzUtLjA3LS42NC0uMTUtLjg3LS4yMy0uMjMtLjA4LS40MS0uMTYtLjU1LS4yNS0uMTQtLjA5LS4yMy0uMTktLjI4LS4zLS4wNS0uMTEtLjA4LS4yNC0uMDgtLjM5cy4wMy0uMjguMDktLjQxYy4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YzAtLjM5LS4wOC0uNzUtLjI0LTEuMDktLjE2LS4zNC0uMzktLjYzLS42OS0uODgtLjMtLjI1LS42Ni0uNDQtMS4wOS0uNTktLjQzLS4xNS0uOTItLjIyLTEuNDYtLjIyLS41MSAwLS45OC4wNy0xLjM5LjIxLS40MS4xNC0uNzcuMzMtMS4wNi41Ny0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OC4yMy45NmMuMTUuMjguMzcuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzctLjI3LjItLjY2LjI5LTEuMTcuMjktLjIyIDAtLjQzLS4wMi0uNjQtLjA4LS4yMS0uMDUtLjQtLjEzLS41Ni0uMjQtLjE3LS4xMS0uMy0uMjYtLjQxLS40NC0uMTEtLjE4LS4xNy0uNDEtLjE4LS42N2gtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aW1lci1vZmYiPjxwYXRoIGQ9Ik0xOS4wNCA0LjU1bC0xLjQyIDEuNDJDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRjLTEuODMgMC0zLjUzLjU1LTQuOTUgMS40OGwxLjQ2IDEuNDZDOS41MyA2LjM1IDEwLjczIDYgMTIgNmMzLjg3IDAgNyAzLjEzIDcgNyAwIDEuMjctLjM1IDIuNDctLjk0IDMuNDlsMS40NSAxLjQ1QzIwLjQ1IDE2LjUzIDIxIDE0LjgzIDIxIDEzYzAtMi4xMi0uNzQtNC4wNy0xLjk3LTUuNjFsMS40Mi0xLjQyLTEuNDEtMS40MnpNMTUgMUg5djJoNlYxem0tNCA4LjQ0bDIgMlY4aC0ydjEuNDR6TTMuMDIgNEwxLjc1IDUuMjcgNC41IDguMDNDMy41NSA5LjQ1IDMgMTEuMTYgMyAxM2MwIDQuOTcgNC4wMiA5IDkgOSAxLjg0IDAgMy41NS0uNTUgNC45OC0xLjVsMi41IDIuNSAxLjI3LTEuMjctNy43MS03LjcxTDMuMDIgNHpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS4yOC4zNS0yLjQ4Ljk1LTMuNTJsOS41NiA5LjU2Yy0xLjAzLjYxLTIuMjMuOTYtMy41MS45NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b25hbGl0eSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk0LS40OS03LTMuODUtNy03LjkzczMuMDUtNy40NCA3LTcuOTN2MTUuODZ6bTItMTUuODZjMS4wMy4xMyAyIC40NSAyLjg3LjkzSDEzdi0uOTN6TTEzIDdoNS4yNGMuMjUuMzEuNDguNjUuNjggMUgxM1Y3em0wIDNoNi43NGMuMDguMzMuMTUuNjYuMTkgMUgxM3YtMXptMCA5LjkzVjE5aDIuODdjLS44Ny40OC0xLjg0LjgtMi44Ny45M3pNMTguMjQgMTdIMTN2LTFoNS45MmMtLjIuMzUtLjQzLjY5LS42OCAxem0xLjUtM0gxM3YtMWg2LjkzYy0uMDQuMzQtLjExLjY3LS4xOSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyYW5zZm9ybSI+PHBhdGggZD0iTTIyIDE4di0ySDhWNGgyTDcgMSA0IDRoMnYySDJ2Mmg0djhjMCAxLjEuOSAyIDIgMmg4djJoLTJsMyAzIDMtM2gtMnYtMmg0ek0xMCA4aDZ2NmgyVjhjMC0xLjEtLjktMi0yLTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0dW5lIj48cGF0aCBkPSJNMyAxN3YyaDZ2LTJIM3pNMyA1djJoMTBWNUgzem0xMCAxNnYtMmg4di0yaC04di0yaC0ydjZoMnpNNyA5djJIM3YyaDR2MmgyVjlIN3ptMTQgNHYtMkgxMXYyaDEwem0tNi00aDJWN2g0VjVoLTRWM2gtMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctY29tZnkiPjxwYXRoIGQ9Ik0zIDloNFY1SDN2NHptMCA1aDR2LTRIM3Y0em01IDBoNHYtNEg4djR6bTUgMGg0di00aC00djR6TTggOWg0VjVIOHY0em01LTR2NGg0VjVoLTR6bTUgOWg0di00aC00djR6TTMgMTloNHYtNEgzdjR6bTUgMGg0di00SDh2NHptNSAwaDR2LTRoLTR2NHptNSAwaDR2LTRoLTR2NHptMC0xNHY0aDRWNWgtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNvbXBhY3QiPjxwYXRoIGQ9Ik0zIDE5aDZ2LTdIM3Y3em03IDBoMTJ2LTdIMTB2N3pNMyA1djZoMTlWNUgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZ25ldHRlIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDE1Yy00LjQyIDAtOC0yLjY5LTgtNnMzLjU4LTYgOC02IDggMi42OSA4IDYtMy41OCA2LTggNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1hdXRvIj48cGF0aCBkPSJNNi44NSAxMi42NWgyLjNMOCA5bC0xLjE1IDMuNjV6TTIyIDdsLTEuMiA2LjI5TDE5LjMgN2gtMS42bC0xLjQ5IDYuMjlMMTUgN2gtLjc2QzEyLjc3IDUuMTcgMTAuNTMgNCA4IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDhjMy4xMyAwIDUuODQtMS44MSA3LjE1LTQuNDNsLjEuNDNIMTdsMS41LTYuMUwyMCAxNmgxLjc1bDIuMDUtOUgyMnptLTExLjcgOWwtLjctMkg2LjRsLS43IDJIMy44TDcgN2gybDMuMiA5aC0xLjl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItY2xvdWR5Ij48cGF0aCBkPSJNMTkuMzYgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NC00Ljk2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndiLWluY2FuZGVzY2VudCI+PHBhdGggZD0iTTMuNTUgMTguNTRsMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHpNMTEgMjIuNDVoMlYxOS41aC0ydjIuOTV6TTQgMTAuNUgxdjJoM3YtMnptMTEtNC4xOVYxLjVIOXY0LjgxQzcuMjEgNy4zNSA2IDkuMjggNiAxMS41YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTl6bTUgNC4xOXYyaDN2LTJoLTN6bS0yLjc2IDcuNjZsMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItaXJpZGVzY2VudCI+PHBhdGggZD0iTTUgMTQuNWgxNHYtNkg1djZ6TTExIC41NVYzLjVoMlYuNTVoLTJ6bTguMDQgMi41bC0xLjc5IDEuNzkgMS40MSAxLjQxIDEuOC0xLjc5LTEuNDItMS40MXpNMTMgMjIuNDVWMTkuNWgtMnYyLjk1aDJ6bTcuNDUtMy45MWwtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS44IDEuNDItMS40MnpNMy41NSA0LjQ2bDEuNzkgMS43OSAxLjQxLTEuNDEtMS43OS0xLjc5LTEuNDEgMS40MXptMS40MSAxNS40OWwxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1zdW5ueSI+PHBhdGggZD0iTTYuNzYgNC44NGwtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS43OSAxLjQyLTEuNDF6TTQgMTAuNUgxdjJoM3YtMnptOS05Ljk1aC0yVjMuNWgyVi41NXptNy40NSAzLjkxbC0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MSAxLjc5LTEuNzl6bS0zLjIxIDEzLjdsMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6TTIwIDEwLjV2Mmgzdi0yaC0zem0tOC01Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptLTEgMTYuOTVoMlYxOS41aC0ydjIuOTV6bS03LjQ1LTMuOTFsMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChSby5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IE9vPXhlYDxpcm9uLWljb25zZXQtc3ZnIG5hbWU9Imljb25zIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSIzZC1yb3RhdGlvbiI+PHBhdGggZD0iTTcuNTIgMjEuNDhDNC4yNSAxOS45NCAxLjkxIDE2Ljc2IDEuNTUgMTNILjA1Qy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0bC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnptLjg5LTYuNTJjLS4xOSAwLS4zNy0uMDMtLjUyLS4wOC0uMTYtLjA2LS4yOS0uMTMtLjQtLjI0LS4xMS0uMS0uMi0uMjItLjI2LS4zNy0uMDYtLjE0LS4wOS0uMy0uMDktLjQ3aC0xLjNjMCAuMzYuMDcuNjguMjEuOTUuMTQuMjcuMzMuNS41Ni42OS4yNC4xOC41MS4zMi44Mi40MS4zLjEuNjIuMTUuOTYuMTUuMzcgMCAuNzItLjA1IDEuMDMtLjE1LjMyLS4xLjYtLjI1LjgzLS40NHMuNDItLjQzLjU1LS43MmMuMTMtLjI5LjItLjYxLjItLjk3IDAtLjE5LS4wMi0uMzgtLjA3LS41Ni0uMDUtLjE4LS4xMi0uMzUtLjIzLS41MS0uMS0uMTYtLjI0LS4zLS40LS40My0uMTctLjEzLS4zNy0uMjMtLjYxLS4zMS4yLS4wOS4zNy0uMi41Mi0uMzMuMTUtLjEzLjI3LS4yNy4zNy0uNDIuMS0uMTUuMTctLjMuMjItLjQ2LjA1LS4xNi4wNy0uMzIuMDctLjQ4IDAtLjM2LS4wNi0uNjgtLjE4LS45Ni0uMTItLjI4LS4yOS0uNTEtLjUxLS42OS0uMi0uMTktLjQ3LS4zMy0uNzctLjQzQzkuMSA4LjA1IDguNzYgOCA4LjM5IDhjLS4zNiAwLS42OS4wNS0xIC4xNi0uMy4xMS0uNTcuMjYtLjc5LjQ1LS4yMS4xOS0uMzguNDEtLjUxLjY3LS4xMi4yNi0uMTguNTQtLjE4Ljg1aDEuM2MwLS4xNy4wMy0uMzIuMDktLjQ1cy4xNC0uMjUuMjUtLjM0Yy4xMS0uMDkuMjMtLjE3LjM4LS4yMi4xNS0uMDUuMy0uMDguNDgtLjA4LjQgMCAuNy4xLjg5LjMxLjE5LjIuMjkuNDkuMjkuODYgMCAuMTgtLjAzLjM0LS4wOC40OS0uMDUuMTUtLjE0LjI3LS4yNS4zNy0uMTEuMS0uMjUuMTgtLjQxLjI0LS4xNi4wNi0uMzYuMDktLjU4LjA5SDcuNXYxLjAzaC43N2MuMjIgMCAuNDIuMDIuNi4wN3MuMzMuMTMuNDUuMjNjLjEyLjExLjIyLjI0LjI5LjQuMDcuMTYuMS4zNS4xLjU3IDAgLjQxLS4xMi43Mi0uMzUuOTMtLjIzLjIzLS41NS4zMy0uOTUuMzN6bTguNTUtNS45MmMtLjMyLS4zMy0uNy0uNTktMS4xNC0uNzctLjQzLS4xOC0uOTItLjI3LTEuNDYtLjI3SDEydjhoMi4zYy41NSAwIDEuMDYtLjA5IDEuNTEtLjI3LjQ1LS4xOC44NC0uNDMgMS4xNi0uNzYuMzItLjMzLjU3LS43My43NC0xLjE5LjE3LS40Ny4yNi0uOTkuMjYtMS41N3YtLjRjMC0uNTgtLjA5LTEuMS0uMjYtMS41Ny0uMTgtLjQ3LS40My0uODctLjc1LTEuMnptLS4zOSAzLjE2YzAgLjQyLS4wNS43OS0uMTQgMS4xMy0uMS4zMy0uMjQuNjItLjQzLjg1LS4xOS4yMy0uNDMuNDEtLjcxLjUzLS4yOS4xMi0uNjIuMTgtLjk5LjE4aC0uOTFWOS4xMmguOTdjLjcyIDAgMS4yNy4yMyAxLjY0LjY5LjM4LjQ2LjU3IDEuMTIuNTcgMS45OXYuNHpNMTIgMGwtLjY2LjAzIDMuODEgMy44MSAxLjMzLTEuMzNjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk2IDguNDhoMS41QzIzLjQ0IDQuODQgMTguMjkgMCAxMiAweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY2Vzc2liaWxpdHkiPjxwYXRoIGQ9Ik0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY2Vzc2libGUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iNCIgcj0iMiI+PC9jaXJjbGU+PHBhdGggZD0iTTE5IDEzdi0yYy0xLjU0LjAyLTMuMDktLjc1LTQuMDctMS44M2wtMS4yOS0xLjQzYy0uMTctLjE5LS4zOC0uMzQtLjYxLS40NS0uMDEgMC0uMDEtLjAxLS4wMi0uMDFIMTNjLS4zNS0uMi0uNzUtLjMtMS4xOS0uMjZDMTAuNzYgNy4xMSAxMCA4LjA0IDEwIDkuMDlWMTVjMCAxLjEuOSAyIDIgMmg1djVoMnYtNS41YzAtMS4xLS45LTItMi0yaC0zdi0zLjQ1YzEuMjkgMS4wNyAzLjI1IDEuOTQgNSAxLjk1em0tNi4xNyA1Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYy0yLjI4LjQ2LTQgMi40OC00IDQuOSAwIDIuNzYgMi4yNCA1IDUgNSAyLjQyIDAgNC40NC0xLjcyIDQuOS00aC0yLjA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtYmFsYW5jZSI+PHBhdGggZD0iTTQgMTB2N2gzdi03SDR6bTYgMHY3aDN2LTdoLTN6TTIgMjJoMTl2LTNIMnYzem0xNC0xMnY3aDN2LTdoLTN6bS00LjUtOUwyIDZ2MmgxOVY2bC05LjUtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWJhbGFuY2Utd2FsbGV0Ij48cGF0aCBkPSJNMjEgMTh2MWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjExIDAtMi0uOS0yLTJWNWMwLTEuMS44OS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxaC05Yy0xLjExIDAtMiAuOS0yIDJ2OGMwIDEuMS44OSAyIDIgMmg5em0tOS0yaDEwVjhIMTJ2OHptNC0yLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtYm94Ij48cGF0aCBkPSJNMyA1djE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJINWMtMS4xMSAwLTIgLjktMiAyem0xMiA0YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3ptLTkgOGMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjF2MUg2di0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAzYzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptMCAxNC4yYy0yLjUgMC00LjcxLTEuMjgtNi0zLjIyLjAzLTEuOTkgNC0zLjA4IDYtMy4wOCAxLjk5IDAgNS45NyAxLjA5IDYgMy4wOC0xLjI5IDEuOTQtMy41IDMuMjItNiAzLjIyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZCI+PHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtYWxlcnQiPjxwYXRoIGQ9Ik0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6bTguODctNC4xOVYxMWMwLTMuMjUtMi4yNS01Ljk3LTUuMjktNi42OXYtLjcyQzEzLjU5IDIuNzEgMTIuODggMiAxMiAycy0xLjU5LjcxLTEuNTkgMS41OXYuNzJDNy4zNyA1LjAzIDUuMTIgNy43NSA1LjEyIDExdjUuODJMMyAxOC45NFYyMGgxOHYtMS4wNmwtMi4xMi0yLjEyek0xNiAxMy4wMWgtM3YzaC0ydi0zSDhWMTFoM1Y4aDJ2M2gzdjIuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0yIDEwaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMWgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWNpcmNsZS1vdXRsaW5lIj48cGF0aCBkPSJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZC1zaG9wcGluZy1jYXJ0Ij48cGF0aCBkPSJNMTEgOWgyVjZoM1Y0aC0zVjFoLTJ2M0g4djJoM3Yzem0tNCA5Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTkuODMtMy4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjg2LTcuMDFMMTkuNDIgNGgtLjAxbC0xLjEgMi0yLjc2IDVIOC41M2wtLjEzLS4yN0w2LjE2IDZsLS45NS0yLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTMgMC0uMjUtLjExLS4yNS0uMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWxhcm0iPjxwYXRoIGQ9Ik0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWxhcm0tYWRkIj48cGF0aCBkPSJNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bTEtMTFoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM1Y5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLW9mZiI+PHBhdGggZD0iTTEyIDZjMy44NyAwIDcgMy4xMyA3IDcgMCAuODQtLjE2IDEuNjUtLjQzIDIuNGwxLjUyIDEuNTJjLjU4LTEuMTkuOTEtMi41MS45MS0zLjkyIDAtNC45Ny00LjAzLTktOS05LTEuNDEgMC0yLjczLjMzLTMuOTIuOTFMOS42IDYuNDNDMTAuMzUgNi4xNiAxMS4xNiA2IDEyIDZ6bTEwLS4yOGwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTIuOTIgMi4yOUwxLjY1IDMuNTcgMi45OCA0LjlsLTEuMTEuOTMgMS40MiAxLjQyIDEuMTEtLjk0LjguOEMzLjgzIDguNjkgMyAxMC43NSAzIDEzYzAgNC45NyA0LjAyIDkgOSA5IDIuMjUgMCA0LjMxLS44MyA1Ljg5LTIuMmwyLjIgMi4yIDEuMjctMS4yN0wzLjg5IDMuMjdsLS45Ny0uOTh6bTEzLjU1IDE2LjFDMTUuMjYgMTkuMzkgMTMuNyAyMCAxMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjcuNjEtMy4yNiAxLjYxLTQuNDdsOS44NiA5Ljg2ek04LjAyIDMuMjhMNi42IDEuODZsLS44Ni43MSAxLjQyIDEuNDIuODYtLjcxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLW9uIj48cGF0aCBkPSJNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0xLjQ2LTUuNDdMOC40MSAxMi40bC0xLjA2IDEuMDYgMy4xOCAzLjE4IDYtNi0xLjA2LTEuMDYtNC45MyA0Ljk1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsbC1vdXQiPjxwYXRoIGQ9Ik0xNi4yMSA0LjE2bDQgNHYtNHptNCAxMmwtNCA0aDR6bS0xMiA0bC00LTR2NHptLTQtMTJsNC00aC00em0xMi45NS0uOTVjLTIuNzMtMi43My03LjE3LTIuNzMtOS45IDBzLTIuNzMgNy4xNyAwIDkuOSA3LjE3IDIuNzMgOS45IDAgMi43My03LjE2IDAtOS45em0tMS4xIDguOGMtMi4xMyAyLjEzLTUuNTcgMi4xMy03LjcgMHMtMi4xMy01LjU3IDAtNy43IDUuNTctMi4xMyA3LjcgMCAyLjEzIDUuNTcgMCA3Ljd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYW5kcm9pZCI+PHBhdGggZD0iTTYgMThjMCAuNTUuNDUgMSAxIDFoMXYzLjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41VjE5aDJ2My41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNVYxOWgxYy41NSAwIDEtLjQ1IDEtMVY4SDZ2MTB6TTMuNSA4QzIuNjcgOCAyIDguNjcgMiA5LjV2N2MwIC44My42NyAxLjUgMS41IDEuNVM1IDE3LjMzIDUgMTYuNXYtN0M1IDguNjcgNC4zMyA4IDMuNSA4em0xNyAwYy0uODMgMC0xLjUuNjctMS41IDEuNXY3YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXYtN2MwLS44My0uNjctMS41LTEuNS0xLjV6bS00Ljk3LTUuODRsMS4zLTEuM2MuMi0uMi4yLS41MSAwLS43MS0uMi0uMi0uNTEtLjItLjcxIDBsLTEuNDggMS40OEMxMy44NSAxLjIzIDEyLjk1IDEgMTIgMWMtLjk2IDAtMS44Ni4yMy0yLjY2LjYzTDcuODUuMTVjLS4yLS4yLS41MS0uMi0uNzEgMC0uMi4yLS4yLjUxIDAgLjcxbDEuMzEgMS4zMUM2Ljk3IDMuMjYgNiA1LjAxIDYgN2gxMmMwLTEuOTktLjk3LTMuNzUtMi40Ny00Ljg0ek0xMCA1SDlWNGgxdjF6bTUgMGgtMVY0aDF2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbm5vdW5jZW1lbnQiPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgOWgtMlY1aDJ2NnptMCA0aC0ydi0yaDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcHBzIj48cGF0aCBkPSJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYtMTB2NGg0VjRoLTR6bS02IDRoNFY0aC00djR6bTYgNmg0di00aC00djR6bTAgNmg0di00aC00djR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXJjaGl2ZSI+PHBhdGggZD0iTTIwLjU0IDUuMjNsLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNi41NUwzLjQ2IDUuMjNDMy4xNyA1LjU3IDMgNi4wMiAzIDYuNVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OC0uMTctLjkzLS40Ni0xLjI3ek0xMiAxNy41TDYuNSAxMkgxMHYtMmg0djJoMy41TDEyIDE3LjV6TTUuMTIgNWwuODEtMWgxMmwuOTQgMUg1LjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWJhY2siPjxwYXRoIGQ9Ik0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWRvd253YXJkIj48cGF0aCBkPSJNMjAgMTJsLTEuNDEtMS40MUwxMyAxNi4xN1Y0aC0ydjEyLjE3bC01LjU4LTUuNTlMNCAxMmw4IDggOC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWRyb3AtZG93biI+PHBhdGggZD0iTTcgMTBsNSA1IDUtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLWRvd24tY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxMmwtNC00aDhsLTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLXVwIj48cGF0aCBkPSJNNyAxNGw1LTUgNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWZvcndhcmQiPjxwYXRoIGQ9Ik0xMiA0bC0xLjQxIDEuNDFMMTYuMTcgMTFINHYyaDEyLjE3bC01LjU4IDUuNTlMMTIgMjBsOC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LXVwd2FyZCI+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3BlY3QtcmF0aW8iPjxwYXRoIGQ9Ik0xOSAxMmgtMnYzaC0zdjJoNXYtNXpNNyA5aDNWN0g1djVoMlY5em0xNC02SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzZXNzbWVudCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtaW5kIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgNGMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJINnYtMS40YzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMVYxOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LWxhdGUiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY2em0tMS05Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaWdubWVudC1yZXR1cm4iPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNCAxMmgtNHYzbC01LTUgNS01djNoNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtcmV0dXJuZWQiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCAxNWwtNS01aDNWOWg0djRoM2wtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtdHVybmVkLWluIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0yIDE0bC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXR0YWNobWVudCI+PHBhdGggZD0iTTIgMTIuNUMyIDkuNDYgNC40NiA3IDcuNSA3SDE4YzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0SDkuNUM4LjEyIDE1IDcgMTMuODggNyAxMi41UzguMTIgMTAgOS41IDEwSDE3djJIOS40MWMtLjU1IDAtLjU1IDEgMCAxSDE4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMkg3LjVDNS41NyA5IDQgMTAuNTcgNCAxMi41UzUuNTcgMTYgNy41IDE2SDE3djJINy41QzQuNDYgMTggMiAxNS41NCAyIDEyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXV0b3JlbmV3Ij48cGF0aCBkPSJNMTIgNnYzbDQtNC00LTR2M2MtNC40MiAwLTggMy41OC04IDggMCAxLjU3LjQ2IDMuMDMgMS4yNCA0LjI2TDYuNyAxNC44Yy0uNDUtLjgzLS43LTEuNzktLjctMi44IDAtMy4zMSAyLjY5LTYgNi02em02Ljc2IDEuNzRMMTcuMyA5LjJjLjQ0Ljg0LjcgMS43OS43IDIuOCAwIDMuMzEtMi42OSA2LTYgNnYtM2wtNCA0IDQgNHYtM2M0LjQyIDAgOC0zLjU4IDgtOCAwLTEuNTctLjQ2LTMuMDMtMS4yNC00LjI2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJhY2tzcGFjZSI+PHBhdGggZD0iTTIyIDNIN2MtLjY5IDAtMS4yMy4zNS0xLjU5Ljg4TDAgMTJsNS40MSA4LjExYy4zNi41My45Ljg5IDEuNTkuODloMTVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTMgMTIuNTlMMTcuNTkgMTcgMTQgMTMuNDEgMTAuNDEgMTcgOSAxNS41OSAxMi41OSAxMiA5IDguNDEgMTAuNDEgNyAxNCAxMC41OSAxNy41OSA3IDE5IDguNDEgMTUuNDEgMTIgMTkgMTUuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmFja3VwIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJibG9jayI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC00LjQyIDMuNTgtOCA4LTggMS44NSAwIDMuNTUuNjMgNC45IDEuNjlMNS42OSAxNi45QzQuNjMgMTUuNTUgNCAxMy44NSA0IDEyem04IDhjLTEuODUgMC0zLjU1LS42My00LjktMS42OUwxOC4zMSA3LjFDMTkuMzcgOC40NSAyMCAxMC4xNSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJib29rIj48cGF0aCBkPSJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJvb2ttYXJrIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJvb2ttYXJrLWJvcmRlciI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnptMCAxNWwtNS0yLjE4TDcgMThWNWgxMHYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJidWctcmVwb3J0Ij48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJ1aWxkIj48cGF0aCBkPSJNMjIuNyAxOWwtOS4xLTkuMWMuOS0yLjMuNC01LTEuNS02LjktMi0yLTUtMi40LTcuNC0xLjNMOSA2IDYgOSAxLjYgNC43Qy40IDcuMS45IDEwLjEgMi45IDEyLjFjMS45IDEuOSA0LjYgMi40IDYuOSAxLjVsOS4xIDkuMWMuNC40IDEgLjQgMS40IDBsMi4zLTIuM2MuNS0uNC41LTEuMS4xLTEuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYWNoZWQiPjxwYXRoIGQ9Ik0xOSA4bC00IDRoM2MwIDMuMzEtMi42OSA2LTYgNi0xLjAxIDAtMS45Ny0uMjUtMi44LS43bC0xLjQ2IDEuNDZDOC45NyAxOS41NCAxMC40MyAyMCAxMiAyMGM0LjQyIDAgOC0zLjU4IDgtOGgzbC00LTR6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMS4wMSAwIDEuOTcuMjUgMi44LjdsMS40Ni0xLjQ2QzE1LjAzIDQuNDYgMTMuNTcgNCAxMiA0Yy00LjQyIDAtOCAzLjU4LTggOEgxbDQgNCA0LTRINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtZW5oYW5jZSI+PHBhdGggZD0iTTkgM0w3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDNIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtMWwxLjI1LTIuNzVMMTYgMTNsLTIuNzUtMS4yNUwxMiA5bC0xLjI1IDIuNzVMOCAxM2wyLjc1IDEuMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FuY2VsIj48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FyZC1naWZ0Y2FyZCI+PHBhdGggZD0iTTIwIDZoLTIuMThjLjExLS4zMS4xOC0uNjUuMTgtMSAwLTEuNjYtMS4zNC0zLTMtMy0xLjA1IDAtMS45Ni41NC0yLjUgMS4zNWwtLjUuNjctLjUtLjY4QzEwLjk2IDIuNTQgMTAuMDUgMiA5IDIgNy4zNCAyIDYgMy4zNCA2IDVjMCAuMzUuMDcuNjkuMTggMUg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS01LTJjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGg1LjA4TDcgMTAuODMgOC42MiAxMiAxMSA4Ljc2bDEtMS4zNiAxIDEuMzZMMTUuMzggMTIgMTcgMTAuODMgMTQuOTIgOEgyMHY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhcmQtbWVtYmVyc2hpcCI+PHBhdGggZD0iTTIwIDJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoNHY1bDQtMiA0IDJ2LTVoNGMxLjExIDAgMi0uODkgMi0yVjRjMC0xLjExLS44OS0yLTItMnptMCAxM0g0di0yaDE2djJ6bTAtNUg0VjRoMTZ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYXJkLXRyYXZlbCI+PHBhdGggZD0iTTIwIDZoLTNWNGMwLTEuMTEtLjg5LTItMi0ySDljLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnpNOSA0aDZ2Mkg5VjR6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGgzdjJoMlY4aDZ2MmgyVjhoM3Y2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoYW5nZS1oaXN0b3J5Ij48cGF0aCBkPSJNMTIgNy43N0wxOC4zOSAxOEg1LjYxTDEyIDcuNzdNMTIgNEwyIDIwaDIwTDEyIDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2siPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGVjay1ib3giPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uOSAyLTJWNWMwLTEuMS0uODktMi0yLTJ6bS05IDE0bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2stYm94LW91dGxpbmUtYmxhbmsiPjxwYXRoIGQ9Ik0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZWNrLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hldnJvbi1sZWZ0Ij48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGV2cm9uLXJpZ2h0Ij48cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hyb21lLXJlYWRlci1tb2RlIj48cGF0aCBkPSJNMTMgMTJoN3YxLjVoLTd6bTAtMi41aDdWMTFoLTd6bTAgNWg3VjE2aC03ek0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNWgtOVY2aDl2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xhc3MiPjxwYXRoIGQ9Ik0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xlYXIiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvc2UiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNC41IDE0SDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNsLjE0LjAxQzguNTggOC4yOCAxMC4xMyA3IDEyIDdjMi4yMSAwIDQgMS43OSA0IDRoLjVjMS4zOCAwIDIuNSAxLjEyIDIuNSAyLjVTMTcuODggMTYgMTYuNSAxNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC1kb25lIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xMCAxN2wtMy41LTMuNSAxLjQxLTEuNDFMMTAgMTQuMTcgMTUuMTggOWwxLjQxIDEuNDFMMTAgMTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtZG93bmxvYWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE3IDEzbC01IDUtNS01aDNWOWg0djRoM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC1vZmYiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNGMtMS40OCAwLTIuODUuNDMtNC4wMSAxLjE3bDEuNDYgMS40NkMxMC4yMSA2LjIzIDExLjA4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgMyAwIDEuMTMtLjY0IDIuMTEtMS41NiAyLjYybDEuNDUgMS40NUMyMy4xNiAxOC4xNiAyNCAxNi42OCAyNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMyA1LjI3bDIuNzUgMi43NEMyLjU2IDguMTUgMCAxMC43NyAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDExLjczbDIgMkwyMSAyMC43MyA0LjI3IDQgMyA1LjI3ek03LjczIDEwbDggOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEuNzN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtcXVldWUiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoLjcxQzcuMzcgNy42OSA5LjQ4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC11cGxvYWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE0IDEzdjRoLTR2LTRIN2w1LTUgNSA1aC0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvZGUiPjxwYXRoIGQ9Ik05LjQgMTYuNkw0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDBsNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbXBhcmUtYXJyb3dzIj48cGF0aCBkPSJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LWNvcHkiPjxwYXRoIGQ9Ik0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LWN1dCI+PHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LXBhc3RlIj48cGF0aCBkPSJNMTkgMmgtNC4xOEMxNC40Ljg0IDEzLjMgMCAxMiAwYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem03IDE4SDVWNGgydjNoMTBWNGgydjE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvcHlyaWdodCI+PHBhdGggZD0iTTEwLjA4IDEwLjg2Yy4wNS0uMzMuMTYtLjYyLjMtLjg3cy4zNC0uNDYuNTktLjYyYy4yNC0uMTUuNTQtLjIyLjkxLS4yMy4yMy4wMS40NC4wNS42My4xMy4yLjA5LjM4LjIxLjUyLjM2cy4yNS4zMy4zNC41My4xMy40Mi4xNC42NGgxLjc5Yy0uMDItLjQ3LS4xMS0uOS0uMjgtMS4yOXMtLjQtLjczLS43LTEuMDEtLjY2LS41LTEuMDgtLjY2LS44OC0uMjMtMS4zOS0uMjNjLS42NSAwLTEuMjIuMTEtMS43LjM0cy0uODguNTMtMS4yLjkyLS41Ni44NC0uNzEgMS4zNlM4IDExLjI5IDggMTEuODd2LjI3YzAgLjU4LjA4IDEuMTIuMjMgMS42NHMuMzkuOTcuNzEgMS4zNS43Mi42OSAxLjIuOTEgMS4wNS4zNCAxLjcuMzRjLjQ3IDAgLjkxLS4wOCAxLjMyLS4yM3MuNzctLjM2IDEuMDgtLjYzLjU2LS41OC43NC0uOTQuMjktLjc0LjMtMS4xNWgtMS43OWMtLjAxLjIxLS4wNi40LS4xNS41OHMtLjIxLjMzLS4zNi40Ni0uMzIuMjMtLjUyLjNjLS4xOS4wNy0uMzkuMDktLjYuMS0uMzYtLjAxLS42Ni0uMDgtLjg5LS4yMy0uMjUtLjE2LS40NS0uMzctLjU5LS42MnMtLjI1LS41NS0uMy0uODgtLjA4LS42Ny0uMDgtMXYtLjI3YzAtLjM1LjAzLS42OC4wOC0xLjAxek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcmVhdGUiPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlYXRlLW5ldy1mb2xkZXIiPjxwYXRoIGQ9Ik0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tMSA4aC0zdjNoLTJ2LTNoLTN2LTJoM1Y5aDJ2M2gzdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlZGl0LWNhcmQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGFzaGJvYXJkIj48cGF0aCBkPSJNMyAxM2g4VjNIM3YxMHptMCA4aDh2LTZIM3Y2em0xMCAwaDhWMTFoLTh2MTB6bTAtMTh2Nmg4VjNoLTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGF0ZS1yYW5nZSI+PHBhdGggZD0iTTkgMTFIN3YyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTItN2gtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRlbGV0ZSI+PHBhdGggZD0iTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUtZm9yZXZlciI+PHBhdGggZD0iTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEybDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUtc3dlZXAiPjxwYXRoIGQ9Ik0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHpNMTQgNWgtM2wtMS0xSDZMNSA1SDJ2MmgxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZXNjcmlwdGlvbiI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNkg4di0yaDh2MnptMC00SDh2LTJoOHYyem0tMy01VjMuNUwxOC41IDlIMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG5zIj48cGF0aCBkPSJNMjAgMTNINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMXpNNyAxOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTIwIDNINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xek03IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbmUiPjxwYXRoIGQ9Ik05IDE2LjJMNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG9uZS1hbGwiPjxwYXRoIGQ9Ik0xOCA3bC0xLjQxLTEuNDEtNi4zNCA2LjM0IDEuNDEgMS40MUwxOCA3em00LjI0LTEuNDFMMTEuNjYgMTYuMTcgNy40OCAxMmwtMS40MSAxLjQxTDExLjY2IDE5bDEyLTEyLTEuNDItMS40MXpNLjQxIDEzLjQxTDYgMTlsMS40MS0xLjQxTDEuODMgMTIgLjQxIDEzLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbnV0LWxhcmdlIj48cGF0aCBkPSJNMTEgNS4wOFYyYy01IC41LTkgNC44MS05IDEwczQgOS41IDkgMTB2LTMuMDhjLTMtLjQ4LTYtMy40LTYtNi45MnMzLTYuNDQgNi02Ljkyek0xOC45NyAxMUgyMmMtLjQ3LTUtNC04LjUzLTktOXYzLjA4QzE2IDUuNTEgMTguNTQgOCAxOC45NyAxMXpNMTMgMTguOTJWMjJjNS0uNDcgOC41My00IDktOWgtMy4wM2MtLjQzIDMtMi45NyA1LjQ5LTUuOTcgNS45MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkb251dC1zbWFsbCI+PHBhdGggZD0iTTExIDkuMTZWMmMtNSAuNS05IDQuNzktOSAxMHM0IDkuNSA5IDEwdi03LjE2Yy0xLS40MS0yLTEuNTItMi0yLjg0czEtMi40MyAyLTIuODR6TTE0Ljg2IDExSDIyYy0uNDgtNC43NS00LTguNTMtOS05djcuMTZjMSAuMyAxLjUyLjk4IDEuODYgMS44NHpNMTMgMTQuODRWMjJjNS0uNDcgOC41Mi00LjI1IDktOWgtNy4xNGMtLjM0Ljg2LS44NiAxLjU0LTEuODYgMS44NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkcmFmdHMiPjxwYXRoIGQ9Ik0yMS45OSA4YzAtLjcyLS4zNy0xLjM1LS45NC0xLjdMMTIgMSAyLjk1IDYuM0MyLjM4IDYuNjUgMiA3LjI4IDIgOHYxMGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ybC0uMDEtMTB6TTEyIDEzTDMuNzQgNy44NCAxMiAzbDguMjYgNC44NEwxMiAxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJlamVjdCI+PHBhdGggZD0iTTUgMTdoMTR2Mkg1em03LTEyTDUuMzMgMTVoMTMuMzR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXJyb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVycm9yLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXVyby1zeW1ib2wiPjxwYXRoIGQ9Ik0xNSAxOC41Yy0yLjUxIDAtNC42OC0xLjQyLTUuNzYtMy41SDE1di0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVWOUg5LjI0QzEwLjMyIDYuOTIgMTIuNSA1LjUgMTUgNS41YzEuNjEgMCAzLjA5LjU5IDQuMjMgMS41N0wyMSA1LjNDMTkuNDEgMy44NyAxNy4zIDMgMTUgM2MtMy45MiAwLTcuMjQgMi41MS04LjQ4IDZIM3YyaDMuMDZjLS4wNC4zMy0uMDYuNjYtLjA2IDEgMCAuMzQuMDIuNjcuMDYgMUgzdjJoMy41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXZlbnQiPjxwYXRoIGQ9Ik0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTljMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJldmVudC1zZWF0Ij48cGF0aCBkPSJNNCAxOHYzaDN2LTNoMTB2M2gzdi02SDR6bTE1LThoM3YzaC0zek0yIDEwaDN2M0gyem0xNSAzSDdWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJleGl0LXRvLWFwcCI+PHBhdGggZD0iTTEwLjA5IDE1LjU5TDExLjUgMTdsNS01LTUtNS0xLjQxIDEuNDFMMTIuNjcgMTFIM3YyaDkuNjdsLTIuNTggMi41OXpNMTkgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2NGgyVjVoMTR2MTRINXYtNEgzdjRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBhbmQtbGVzcyI+PHBhdGggZD0iTTEyIDhsLTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cGFuZC1tb3JlIj48cGF0aCBkPSJNMTYuNTkgOC41OUwxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cGxvcmUiPjxwYXRoIGQ9Ik0xMiAxMC45Yy0uNjEgMC0xLjEuNDktMS4xIDEuMXMuNDkgMS4xIDEuMSAxLjFjLjYxIDAgMS4xLS40OSAxLjEtMS4xcy0uNDktMS4xLTEuMS0xLjF6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTIuMTkgMTIuMTlMNiAxOGwzLjgxLTguMTlMMTggNmwtMy44MSA4LjE5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4dGVuc2lvbiI+PHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZhY2UiPjxwYXRoIGQ9Ik05IDExLjc1Yy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNXMuNTYgMS4yNSAxLjI1IDEuMjUgMS4yNS0uNTYgMS4yNS0xLjI1LS41Ni0xLjI1LTEuMjUtMS4yNXptNiAwYy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNXMuNTYgMS4yNSAxLjI1IDEuMjUgMS4yNS0uNTYgMS4yNS0xLjI1LS41Ni0xLjI1LTEuMjUtMS4yNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LTggMC0uMjkuMDItLjU4LjA1LS44NiAyLjM2LTEuMDUgNC4yMy0yLjk4IDUuMjEtNS4zN0MxMS4wNyA4LjMzIDE0LjA1IDEwIDE3LjQyIDEwYy43OCAwIDEuNTMtLjA5IDIuMjUtLjI2LjIxLjcxLjMzIDEuNDcuMzMgMi4yNiAwIDQuNDEtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmYXZvcml0ZSI+PHBhdGggZD0iTTEyIDIxLjM1bC0xLjQ1LTEuMzJDNS40IDE1LjM2IDIgMTIuMjggMiA4LjUgMiA1LjQyIDQuNDIgMyA3LjUgM2MxLjc0IDAgMy40MS44MSA0LjUgMi4wOUMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzIDE5LjU4IDMgMjIgNS40MiAyMiA4LjVjMCAzLjc4LTMuNCA2Ljg2LTguNTUgMTEuNTRMMTIgMjEuMzV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmF2b3JpdGUtYm9yZGVyIj48cGF0aCBkPSJNMTYuNSAzYy0xLjc0IDAtMy40MS44MS00LjUgMi4wOUMxMC45MSAzLjgxIDkuMjQgMyA3LjUgMyA0LjQyIDMgMiA1LjQyIDIgOC41YzAgMy43OCAzLjQgNi44NiA4LjU1IDExLjU0TDEyIDIxLjM1bDEuNDUtMS4zMkMxOC42IDE1LjM2IDIyIDEyLjI4IDIyIDguNSAyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNC40IDE1LjU1bC0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmVlZGJhY2siPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMTJoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsZS1kb3dubG9hZCI+PHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWxlLXVwbG9hZCI+PHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1saXN0Ij48cGF0aCBkPSJNMTAgMThoNHYtMmgtNHYyek0zIDZ2MmgxOFY2SDN6bTMgN2gxMnYtMkg2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZC1pbi1wYWdlIj48cGF0aCBkPSJNMjAgMTkuNTlWOGwtNi02SDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMuNDUgMCAuODUtLjE1IDEuMTktLjRsLTQuNDMtNC40M2MtLjguNTItMS43NC44My0yLjc2LjgzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNWMwIDEuMDItLjMxIDEuOTYtLjgzIDIuNzVMMjAgMTkuNTl6TTkgMTNjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZC1yZXBsYWNlIj48cGF0aCBkPSJNMTEgNmMxLjM4IDAgMi42My41NiAzLjU0IDEuNDZMMTIgMTBoNlY0bC0yLjA1IDIuMDVDMTQuNjggNC43OCAxMi45MyA0IDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMWMuNDYtMi4yOCAyLjQ4LTQgNC45LTR6bTUuNjQgOS4xNGMuNjYtLjkgMS4xMi0xLjk3IDEuMjgtMy4xNEgxNS45Yy0uNDYgMi4yOC0yLjQ4IDQtNC45IDQtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QzcuMzIgMTcuMjIgOS4wNyAxOCAxMSAxOGMxLjU1IDAgMi45OC0uNTEgNC4xNC0xLjM2TDIwIDIxLjQ5IDIxLjQ5IDIwbC00Ljg1LTQuODZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZ2VycHJpbnQiPjxwYXRoIGQ9Ik0xNy44MSA0LjQ3Yy0uMDggMC0uMTYtLjAyLS4yMy0uMDZDMTUuNjYgMy40MiAxNCAzIDEyLjAxIDNjLTEuOTggMC0zLjg2LjQ3LTUuNTcgMS40MS0uMjQuMTMtLjU0LjA0LS42OC0uMi0uMTMtLjI0LS4wNC0uNTUuMi0uNjhDNy44MiAyLjUyIDkuODYgMiAxMi4wMSAyYzIuMTMgMCAzLjk5LjQ3IDYuMDMgMS41Mi4yNS4xMy4zNC40My4yMS42Ny0uMDkuMTgtLjI2LjI4LS40NC4yOHpNMy41IDkuNzJjLS4xIDAtLjItLjAzLS4yOS0uMDktLjIzLS4xNi0uMjgtLjQ3LS4xMi0uNy45OS0xLjQgMi4yNS0yLjUgMy43NS0zLjI3QzkuOTggNC4wNCAxNCA0LjAzIDE3LjE1IDUuNjVjMS41Ljc3IDIuNzYgMS44NiAzLjc1IDMuMjUuMTYuMjIuMTEuNTQtLjEyLjctLjIzLjE2LS41NC4xMS0uNy0uMTItLjktMS4yNi0yLjA0LTIuMjUtMy4zOS0yLjk0LTIuODctMS40Ny02LjU0LTEuNDctOS40LjAxLTEuMzYuNy0yLjUgMS43LTMuNCAyLjk2LS4wOC4xNC0uMjMuMjEtLjM5LjIxem02LjI1IDEyLjA3Yy0uMTMgMC0uMjYtLjA1LS4zNS0uMTUtLjg3LS44Ny0xLjM0LTEuNDMtMi4wMS0yLjY0LS42OS0xLjIzLTEuMDUtMi43My0xLjA1LTQuMzQgMC0yLjk3IDIuNTQtNS4zOSA1LjY2LTUuMzlzNS42NiAyLjQyIDUuNjYgNS4zOWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVjMC0yLjQyLTIuMDktNC4zOS00LjY2LTQuMzktMi41NyAwLTQuNjYgMS45Ny00LjY2IDQuMzkgMCAxLjQ0LjMyIDIuNzcuOTMgMy44NS42NCAxLjE1IDEuMDggMS42NCAxLjg1IDIuNDIuMTkuMi4xOS41MSAwIC43MS0uMTEuMS0uMjQuMTUtLjM3LjE1em03LjE3LTEuODVjLTEuMTkgMC0yLjI0LS4zLTMuMS0uODktMS40OS0xLjAxLTIuMzgtMi42NS0yLjM4LTQuMzkgMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVjMCAxLjQxLjcyIDIuNzQgMS45NCAzLjU2LjcxLjQ4IDEuNTQuNzEgMi41NC43MS4yNCAwIC42NC0uMDMgMS4wNC0uMS4yNy0uMDUuNTMuMTMuNTguNDEuMDUuMjctLjEzLjUzLS40MS41OC0uNTcuMTEtMS4wNy4xMi0xLjIxLjEyek0xNC45MSAyMmMtLjA0IDAtLjA5LS4wMS0uMTMtLjAyLTEuNTktLjQ0LTIuNjMtMS4wMy0zLjcyLTIuMS0xLjQtMS4zOS0yLjE3LTMuMjQtMi4xNy01LjIyIDAtMS42MiAxLjM4LTIuOTQgMy4wOC0yLjk0IDEuNyAwIDMuMDggMS4zMiAzLjA4IDIuOTQgMCAxLjA3LjkzIDEuOTQgMi4wOCAxLjk0czIuMDgtLjg3IDIuMDgtMS45NGMwLTMuNzctMy4yNS02LjgzLTcuMjUtNi44My0yLjg0IDAtNS40NCAxLjU4LTYuNjEgNC4wMy0uMzkuODEtLjU5IDEuNzYtLjU5IDIuOCAwIC43OC4wNyAyLjAxLjY3IDMuNjEuMS4yNi0uMDMuNTUtLjI5LjY0LS4yNi4xLS41NS0uMDQtLjY0LS4yOS0uNDktMS4zMS0uNzMtMi42MS0uNzMtMy45NiAwLTEuMi4yMy0yLjI5LjY4LTMuMjQgMS4zMy0yLjc5IDQuMjgtNC42IDcuNTEtNC42IDQuNTUgMCA4LjI1IDMuNTEgOC4yNSA3LjgzIDAgMS42Mi0xLjM4IDIuOTQtMy4wOCAyLjk0cy0zLjA4LTEuMzItMy4wOC0yLjk0YzAtMS4wNy0uOTMtMS45NC0yLjA4LTEuOTRzLTIuMDguODctMi4wOCAxLjk0YzAgMS43MS42NiAzLjMxIDEuODcgNC41MS45NS45NCAxLjg2IDEuNDYgMy4yNyAxLjg1LjI3LjA3LjQyLjM1LjM1LjYxLS4wNS4yMy0uMjYuMzgtLjQ3LjM4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpcnN0LXBhZ2UiPjxwYXRoIGQ9Ik0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFnIj48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlnaHQtbGFuZCI+PHBhdGggZD0iTTIuNSAxOWgxOXYyaC0xOXptNy4xOC01LjczbDQuMzUgMS4xNiA1LjMxIDEuNDJjLjguMjEgMS42Mi0uMjYgMS44NC0xLjA2LjIxLS44LS4yNi0xLjYyLTEuMDYtMS44NGwtNS4zMS0xLjQyLTIuNzYtOS4wMkwxMC4xMiAydjguMjhMNS4xNSA4Ljk1bC0uOTMtMi4zMi0xLjQ1LS4zOXY1LjE3bDEuNi40MyA1LjMxIDEuNDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpZ2h0LXRha2VvZmYiPjxwYXRoIGQ9Ik0yLjUgMTloMTl2MmgtMTl6bTE5LjU3LTkuMzZjLS4yMS0uOC0xLjA0LTEuMjgtMS44NC0xLjA2TDE0LjkyIDEwbC02LjktNi40My0xLjkzLjUxIDQuMTQgNy4xNy00Ljk3IDEuMzMtMS45Ny0xLjU0LTEuNDUuMzkgMS44MiAzLjE2Ljc3IDEuMzMgMS42LS40MyA1LjMxLTEuNDIgNC4zNS0xLjE2TDIxIDExLjQ5Yy44MS0uMjMgMS4yOC0xLjA1IDEuMDctMS44NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwLXRvLWJhY2siPjxwYXRoIGQ9Ik05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThjLTEuMTEgMC0yIC45LTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YzAgMS4xLjg5IDIgMiAyem0xMC00aDJ2LTJoLTJ2MnptMC00aDJWN2gtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpNNSA3SDN2MTJjMCAxLjEuODkgMiAyIDJoMTJ2LTJINVY3em0xMC0yaDJWM2gtMnYyem0wIDEyaDJ2LTJoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwLXRvLWZyb250Ij48cGF0aCBkPSJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0yIDR2LTJIM2MwIDEuMS44OSAyIDIgMnpNMyA5aDJWN0gzdjJ6bTEyIDEyaDJ2LTJoLTJ2MnptNC0xOEg5Yy0xLjExIDAtMiAuOS0yIDJ2MTBjMCAxLjEuODkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxMkg5VjVoMTB2MTB6bS04IDZoMnYtMmgtMnYyem0tNCAwaDJ2LTJIN3YyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlciI+PHBhdGggZD0iTTEwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMmgtOGwtMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlci1vcGVuIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlci1zaGFyZWQiPjxwYXRoIGQ9Ik0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTUgM2MxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOGgtOHYtMWMwLTEuMzMgMi42Ny0yIDQtMnM0IC42NyA0IDJ2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb250LWRvd25sb2FkIj48cGF0aCBkPSJNOS45MyAxMy41aDQuMTRMMTIgNy45OHpNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS00LjA1IDE2LjVsLTEuMTQtM0g5LjE3bC0xLjEyIDNINS45Nmw1LjExLTEzaDEuODZsNS4xMSAxM2gtMi4wOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb3J3YXJkIj48cGF0aCBkPSJNMTIgOFY0bDggOC04IDh2LTRINFY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZ1bGxzY3JlZW4iPjxwYXRoIGQ9Ik03IDE0SDV2NWg1di0ySDd2LTN6bS0yLTRoMlY3aDNWNUg1djV6bTEyIDdoLTN2Mmg1di01aC0ydjN6TTE0IDV2MmgzdjNoMlY1aC01eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZ1bGxzY3JlZW4tZXhpdCI+PHBhdGggZD0iTTUgMTZoM3YzaDJ2LTVINXYyem0zLThINXYyaDVWNUg4djN6bTYgMTFoMnYtM2gzdi0yaC01djV6bTItMTFWNWgtMnY1aDVWOGgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJnLXRyYW5zbGF0ZSI+PHBhdGggZD0iTTIwIDVoLTkuMTJMMTAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDdsMSAzaDhjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnpNNy4xNyAxNC41OWMtMi4yNSAwLTQuMDktMS44My00LjA5LTQuMDlzMS44My00LjA5IDQuMDktNC4wOWMxLjA0IDAgMS45OS4zNyAyLjc0IDEuMDdsLjA3LjA2LTEuMjMgMS4xOC0uMDYtLjA1Yy0uMjktLjI3LS43OC0uNTktMS41Mi0uNTktMS4zMSAwLTIuMzggMS4wOS0yLjM4IDIuNDJzMS4wNyAyLjQyIDIuMzggMi40MmMxLjM3IDAgMS45Ni0uODcgMi4xMi0xLjQ2SDcuMDhWOS45MWgzLjk1bC4wMS4wN2MuMDQuMjEuMDUuNC4wNS42MSAwIDIuMzUtMS42MSA0LTMuOTIgNHptNi4wMy0xLjcxYy4zMy42Ljc0IDEuMTggMS4xOSAxLjdsLS41NC41My0uNjUtMi4yM3ptLjc3LS43NmgtLjk5bC0uMzEtMS4wNGgzLjk5cy0uMzQgMS4zMS0xLjU2IDIuNzRjLS41Mi0uNjItLjg5LTEuMjMtMS4xMy0xLjd6TTIxIDIwYzAgLjU1LS40NSAxLTEgMWgtN2wyLTItLjgxLTIuNzcuOTItLjkyTDE3Ljc5IDE4bC43My0uNzMtMi43MS0yLjY4Yy45LTEuMDMgMS42LTIuMjUgMS45Mi0zLjUxSDE5di0xLjA0aC0zLjY0VjloLTEuMDR2MS4wNGgtMS45NkwxMS4xOCA2SDIwYy41NSAwIDEgLjQ1IDEgMXYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJnYXZlbCI+PHBhdGggZD0iTTEgMjFoMTJ2Mkgxek01LjI0NSA4LjA3bDIuODMtMi44MjcgMTQuMTQgMTQuMTQyLTIuODI4IDIuODI4ek0xMi4zMTcgMWw1LjY1NyA1LjY1Ni0yLjgzIDIuODMtNS42NTQtNS42NnpNMy44MjUgOS40ODVsNS42NTcgNS42NTctMi44MjggMi44MjgtNS42NTctNS42NTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ2VzdHVyZSI+PHBhdGggZD0iTTQuNTkgNi44OWMuNy0uNzEgMS40LTEuMzUgMS43MS0xLjIyLjUuMiAwIDEuMDMtLjMgMS41Mi0uMjUuNDItMi44NiAzLjg5LTIuODYgNi4zMSAwIDEuMjguNDggMi4zNCAxLjM0IDIuOTguNzUuNTYgMS43NC43MyAyLjY0LjQ2IDEuMDctLjMxIDEuOTUtMS40IDMuMDYtMi43NyAxLjIxLTEuNDkgMi44My0zLjQ0IDQuMDgtMy40NCAxLjYzIDAgMS42NSAxLjAxIDEuNzYgMS43OS0zLjc4LjY0LTUuMzggMy42Ny01LjM4IDUuMzcgMCAxLjcgMS40NCAzLjA5IDMuMjEgMy4wOSAxLjYzIDAgNC4yOS0xLjMzIDQuNjktNi4xSDIxdi0yLjVoLTIuNDdjLS4xNS0xLjY1LTEuMDktNC4yLTQuMDMtNC4yLTIuMjUgMC00LjE4IDEuOTEtNC45NCAyLjg0LS41OC43My0yLjA2IDIuNDgtMi4yOSAyLjcyLS4yNS4zLS42OC44NC0xLjExLjg0LS40NSAwLS43Mi0uODMtLjM2LTEuOTIuMzUtMS4wOSAxLjQtMi44NiAxLjg1LTMuNTIuNzgtMS4xNCAxLjMtMS45MiAxLjMtMy4yOEM4Ljk1IDMuNjkgNy4zMSAzIDYuNDQgMyA1LjEyIDMgMy45NyA0IDMuNzIgNC4yNWMtLjM2LjM2LS42Ni42Ni0uODguOTNsMS43NSAxLjcxem05LjI5IDExLjY2Yy0uMzEgMC0uNzQtLjI2LS43NC0uNzIgMC0uNi43My0yLjIgMi44Ny0yLjc2LS4zIDIuNjktMS40MyAzLjQ4LTIuMTMgMy40OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJnZXQtYXBwIj48cGF0aCBkPSJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdpZiI+PHBhdGggZD0iTTExLjUgOUgxM3Y2aC0xLjV6TTkgOUg2Yy0uNiAwLTEgLjUtMSAxdjRjMCAuNS40IDEgMSAxaDNjLjYgMCAxLS41IDEtMXYtMkg4LjV2MS41aC0ydi0zSDEwVjEwYzAtLjUtLjQtMS0xLTF6bTEwIDEuNVY5aC00LjV2NkgxNnYtMmgydi0xLjVoLTJ2LTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhZGUiPjxwYXRoIGQ9Ik0xMiAxNy4yN0wxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJncm91cC13b3JrIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXpNOS41IDhjMC0xLjM4IDEuMTItMi41IDIuNS0yLjVzMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41UzkuNSA5LjM4IDkuNSA4em02LjUgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJoZWxwIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NWwtLjkuOTJDMTMuNDUgMTIuOSAxMyAxMy41IDEzIDE1aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVscC1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMThoMnYtMmgtMnYyem0xLTE2QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMi4yMSAwLTQgMS43OS00IDRoMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgMi0zIDEuNzUtMyA1aDJjMC0yLjI1IDMtMi41IDMtNSAwLTIuMjEtMS43OS00LTQtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJoaWdobGlnaHQtb2ZmIj48cGF0aCBkPSJNMTQuNTkgOEwxMiAxMC41OSA5LjQxIDggOCA5LjQxIDEwLjU5IDEyIDggMTQuNTkgOS40MSAxNiAxMiAxMy40MSAxNC41OSAxNiAxNiAxNC41OSAxMy40MSAxMiAxNiA5LjQxIDE0LjU5IDh6TTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhpc3RvcnkiPjxwYXRoIGQ9Ik0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaG9tZSI+PHBhdGggZD0iTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJob3VyZ2xhc3MtZW1wdHkiPjxwYXRoIGQ9Ik02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHptLTQtNWwtNC00VjRoOHYzLjVsLTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJob3VyZ2xhc3MtZnVsbCI+PHBhdGggZD0iTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imh0dHAiPjxwYXRoIGQ9Ik00LjUgMTFoLTJWOUgxdjZoMS41di0yLjVoMlYxNUg2VjlINC41djJ6bTIuNS0uNWgxLjVWMTVIMTB2LTQuNWgxLjVWOUg3djEuNXptNS41IDBIMTRWMTVoMS41di00LjVIMTdWOWgtNC41djEuNXptOS0xLjVIMTh2NmgxLjV2LTJoMmMuOCAwIDEuNS0uNyAxLjUtMS41di0xYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgMi41aC0ydi0xaDJ2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJodHRwcyI+PHBhdGggZD0iTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTYgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTMuMS05SDguOVY2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW1wb3J0YW50LWRldmljZXMiPjxwYXRoIGQ9Ik0yMyAxMS4wMUwxOCAxMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNWMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LS45OS0xLS45OXpNMjMgMjBoLTV2LTdoNXY3ek0yMCAySDJDLjg5IDIgMCAyLjg5IDAgNHYxMmMwIDEuMS44OSAyIDIgMmg3djJIN3YyaDh2LTJoLTJ2LTJoMnYtMkgyVjRoMTh2NWgyVjRjMC0xLjExLS45LTItMi0yem0tOC4wMyA3TDExIDZsLS45NyAzSDdsMi40NyAxLjc2LS45NCAyLjkxIDIuNDctMS44IDIuNDcgMS44LS45NC0yLjkxTDE1IDloLTMuMDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5ib3giPjxwYXRoIGQ9Ik0xOSAzSDQuOTljLTEuMTEgMC0xLjk4Ljg5LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjExLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbmRldGVybWluYXRlLWNoZWNrLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5mbyI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5mby1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMTdoMnYtNmgtMnY2em0xLTE1QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpNMTEgOWgyVjdoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbnB1dCI+PHBhdGggZD0iTTIxIDMuMDFIM2MtMS4xIDAtMiAuOS0yIDJWOWgyVjQuOTloMTh2MTQuMDNIM1YxNUgxdjQuMDFjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOTh2LTE0YzAtMS4xMS0uOS0yLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImludmVydC1jb2xvcnMiPjxwYXRoIGQ9Ik0xNy42NiA3LjkzTDEyIDIuMjcgNi4zNCA3LjkzYy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFDNy45IDIwLjggOS45NSAyMS41OCAxMiAyMS41OGMyLjA1IDAgNC4xLS43OCA1LjY2LTIuMzQgMy4xMi0zLjEyIDMuMTItOC4xOSAwLTExLjMxek0xMiAxOS41OWMtMS42IDAtMy4xMS0uNjItNC4yNC0xLjc2QzYuNjIgMTYuNjkgNiAxNS4xOSA2IDEzLjU5cy42Mi0zLjExIDEuNzYtNC4yNEwxMiA1LjF2MTQuNDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGFiZWwiPjxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhYmVsLW91dGxpbmUiPjxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2ek0xNiAxN0g1VjdoMTFsMy41NSA1TDE2IDE3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxhbmd1YWdlIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxhc3QtcGFnZSI+PHBhdGggZD0iTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhdW5jaCI+PHBhdGggZD0iTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpZ2h0YnVsYi1vdXRsaW5lIj48cGF0aCBkPSJNOSAyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMUg5djF6bTMtMTlDOC4xNCAyIDUgNS4xNCA1IDljMCAyLjM4IDEuMTkgNC40NyAzIDUuNzRWMTdjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTF2LTIuMjZjMS44MS0xLjI3IDMtMy4zNiAzLTUuNzQgMC0zLjg2LTMuMTQtNy03LTd6bTIuODUgMTEuMWwtLjg1LjZWMTZoLTR2LTIuM2wtLjg1LS42QzcuOCAxMi4xNiA3IDEwLjYzIDcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS42My0uOCAzLjE2LTIuMTUgNC4xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmUtc3R5bGUiPjxwYXRoIGQ9Ik0zIDE2aDV2LTJIM3Yyem02LjUgMGg1di0yaC01djJ6bTYuNSAwaDV2LTJoLTV2MnpNMyAyMGgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek0zIDEyaDh2LTJIM3Yyem0xMCAwaDh2LTJoLTh2MnpNMyA0djRoMThWNEgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmUtd2VpZ2h0Ij48cGF0aCBkPSJNMyAxN2gxOHYtMkgzdjJ6bTAgM2gxOHYtMUgzdjF6bTAtN2gxOHYtM0gzdjN6bTAtOXY0aDE4VjRIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsaW5rIj48cGF0aCBkPSJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGlzdCI+PHBhdGggZD0iTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrIj48cGF0aCBkPSJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrLW9wZW4iPjxwYXRoIGQ9Ik0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZoMS45YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptMCAxMkg2VjEwaDEydjEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxvY2stb3V0bGluZSI+PHBhdGggZD0iTTEyIDE3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNi05aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpNMTggMjBINlYxMGgxMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3ctcHJpb3JpdHkiPjxwYXRoIGQ9Ik0xNCA1aDh2MmgtOHptMCA1LjVoOHYyaC04em0wIDUuNWg4djJoLTh6TTIgMTEuNUMyIDE1LjA4IDQuOTIgMTggOC41IDE4SDl2MmwzLTMtMy0zdjJoLS41QzYuMDIgMTYgNCAxMy45OCA0IDExLjVTNi4wMiA3IDguNSA3SDEyVjVIOC41QzQuOTIgNSAyIDcuOTIgMiAxMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxveWFsdHkiPjxwYXRoIGQ9Ik0yMS40MSAxMS41OGwtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OC41NSAwIDEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtLjU1LS4yMy0xLjA2LS41OS0xLjQyek01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3em0xMS43NyA4LjI3TDEzIDE5LjU0bC00LjI3LTQuMjdDOC4yOCAxNC44MSA4IDE0LjE5IDggMTMuNWMwLTEuMzggMS4xMi0yLjUgMi41LTIuNS42OSAwIDEuMzIuMjggMS43Ny43NGwuNzMuNzIuNzMtLjczYy40NS0uNDUgMS4wOC0uNzMgMS43Ny0uNzMgMS4zOCAwIDIuNSAxLjEyIDIuNSAyLjUgMCAuNjktLjI4IDEuMzItLjczIDEuNzd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibWFpbCI+PHBhdGggZD0iTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0bC04IDUtOC01VjZsOCA1IDgtNXYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1hcmt1bnJlYWQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNGwtOCA1LTgtNVY2bDggNSA4LTV2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtYXJrdW5yZWFkLW1haWxib3giPjxwYXRoIGQ9Ik0yMCA2SDEwdjZIOFY0aDZWMEg2djZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1lbnUiPjxwYXRoIGQ9Ik0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vcmUtaG9yaXoiPjxwYXRoIGQ9Ik02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vcmUtdmVydCI+PHBhdGggZD0iTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdG9yY3ljbGUiPjxwYXRoIGQ9Ik0xOS40NCA5LjAzTDE1LjQxIDVIMTF2MmgzLjU5bDIgMkg1Yy0yLjggMC01IDIuMi01IDVzMi4yIDUgNSA1YzIuNDYgMCA0LjQ1LTEuNjkgNC45LTRoMS42NWwyLjc3LTIuNzdjLS4yMS41NC0uMzIgMS4xNC0uMzIgMS43NyAwIDIuOCAyLjIgNSA1IDVzNS0yLjIgNS01YzAtMi42NS0xLjk3LTQuNzctNC41Ni00Ljk3ek03LjgyIDE1QzcuNCAxNi4xNSA2LjI4IDE3IDUgMTdjLTEuNjMgMC0zLTEuMzctMy0zczEuMzctMyAzLTNjMS4yOCAwIDIuNC44NSAyLjgyIDJINXYyaDIuODJ6TTE5IDE3Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3ZlLXRvLWluYm94Ij48cGF0aCBkPSJNMTkgM0g0Ljk5Yy0xLjExIDAtMS45OC45LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJoLTRjMCAxLjY2LTEuMzUgMy0zIDNzLTMtMS4zNC0zLTNINC45OVY1SDE5djEwem0tMy01aC0yVjdoLTR2M0g4bDQgNCA0LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmV4dC13ZWVrIj48cGF0aCBkPSJNMjAgN2gtNFY1YzAtLjU1LS4yMi0xLjA1LS41OS0xLjQxQzE1LjA1IDMuMjIgMTQuNTUgMyAxNCAzaC00Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNMTAgNWg0djJoLTRWNXptMSAxMy41bC0xLTEgMy0zLTMtMyAxLTEgNCA0LTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJub3RlLWFkZCI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNGgtM3YzaC0ydi0zSDh2LTJoM3YtM2gydjNoM3Yyem0tMy03VjMuNUwxOC41IDlIMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib2ZmbGluZS1waW4iPjxwYXRoIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptNSAxNkg3di0yaDEwdjJ6bS02LjctNEw3IDEwLjdsMS40LTEuNCAxLjkgMS45IDUuMy01LjNMMTcgNy4zIDEwLjMgMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3BhY2l0eSI+PHBhdGggZD0iTTE3LjY2IDhMMTIgMi4zNSA2LjM0IDhDNC43OCA5LjU2IDQgMTEuNjQgNCAxMy42NHMuNzggNC4xMSAyLjM0IDUuNjcgMy42MSAyLjM1IDUuNjYgMi4zNSA0LjEtLjc5IDUuNjYtMi4zNVMyMCAxNS42NCAyMCAxMy42NCAxOS4yMiA5LjU2IDE3LjY2IDh6TTYgMTRjLjAxLTIgLjYyLTMuMjcgMS43Ni00LjRMMTIgNS4yN2w0LjI0IDQuMzhDMTcuMzggMTAuNzcgMTcuOTkgMTIgMTggMTRINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJvcGVuLWluLWJyb3dzZXIiPjxwYXRoIGQ9Ik0xOSA0SDVjLTEuMTEgMC0yIC45LTIgMnYxMmMwIDEuMS44OSAyIDIgMmg0di0ySDVWOGgxNHYxMGgtNHYyaDRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODktMi0yLTJ6bS03IDZsLTQgNGgzdjZoMnYtNmgzbC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3Blbi1pbi1uZXciPjxwYXRoIGQ9Ik0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJvcGVuLXdpdGgiPjxwYXRoIGQ9Ik0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMmwtNS01djNoLTN2NGgzdjNsNS01em0tOSAzaC00djNIN2w1IDUgNS01aC0zdi0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhZ2V2aWV3Ij48cGF0aCBkPSJNMTEuNSA5QzEwLjEyIDkgOSAxMC4xMiA5IDExLjVzMS4xMiAyLjUgMi41IDIuNSAyLjUtMS4xMiAyLjUtMi41UzEyLjg4IDkgMTEuNSA5ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTMuMjEgMTQuMjFsLTIuOTEtMi45MWMtLjY5LjQ0LTEuNTEuNy0yLjM5LjdDOS4wMSAxNiA3IDEzLjk5IDcgMTEuNVM5LjAxIDcgMTEuNSA3IDE2IDkuMDEgMTYgMTEuNWMwIC44OC0uMjYgMS42OS0uNyAyLjM5bDIuOTEgMi45LTEuNDIgMS40MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW4tdG9vbCI+PHBhdGggZD0iTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBheW1lbnQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1jYW1lcmEtbWljIj48cGF0aCBkPSJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoN3YtMi4wOWMtMi44My0uNDgtNS0yLjk0LTUtNS45MWgyYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoMmMwIDIuOTctMi4xNyA1LjQzLTUgNS45MVYyMWg3YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS02IDhjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjljMC0xLjEuOS0yIDItMnMyIC45IDIgMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tY29udGFjdC1jYWxlbmRhciI+PHBhdGggZD0iTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDNjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1kYXRhLXNldHRpbmciPjxwYXRoIGQ9Ik0xOC45OSAxMS41Yy4zNCAwIC42Ny4wMyAxIC4wN0wyMCAwIDAgMjBoMTEuNTZjLS4wNC0uMzMtLjA3LS42Ni0uMDctMSAwLTQuMTQgMy4zNi03LjUgNy41LTcuNXptMy43MSA3Ljk5Yy4wMi0uMTYuMDQtLjMyLjA0LS40OSAwLS4xNy0uMDEtLjMzLS4wNC0uNDlsMS4wNi0uODNjLjA5LS4wOC4xMi0uMjEuMDYtLjMybC0xLTEuNzNjLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI0LjVjLS4yNi0uMi0uNTQtLjM3LS44NS0uNDlsLS4xOS0xLjMyYy0uMDEtLjEyLS4xMi0uMjEtLjI0LS4yMWgtMmMtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjE5IDEuMzJjLS4zLjEzLS41OS4yOS0uODUuNDlsLTEuMjQtLjVjLS4xMS0uMDQtLjI0IDAtLjMxLjExbC0xIDEuNzNjLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNi44M2MtLjAyLjE2LS4wMy4zMi0uMDMuNDkgMCAuMTcuMDEuMzMuMDMuNDlsLTEuMDYuODNjLS4wOS4wOC0uMTIuMjEtLjA2LjMybDEgMS43M2MuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNC0uNWMuMjYuMi41NC4zNy44NS40OWwuMTkgMS4zMmMuMDIuMTIuMTIuMjEuMjUuMjFoMmMuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMTktMS4zMmMuMy0uMTMuNTktLjI5Ljg0LS40OWwxLjI1LjVjLjExLjA0LjI0IDAgLjMxLS4xMWwxLTEuNzNjLjA2LS4xMS4wMy0uMjQtLjA2LS4zMmwtMS4wNy0uODN6bS0zLjcxIDEuMDFjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tZGV2aWNlLWluZm9ybWF0aW9uIj48cGF0aCBkPSJNMTMgN2gtMnYyaDJWN3ptMCA0aC0ydjZoMnYtNnptNC05Ljk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1pZGVudGl0eSI+PHBhdGggZD0iTTEyIDUuOWMxLjE2IDAgMi4xLjk0IDIuMSAyLjFzLS45NCAyLjEtMi4xIDIuMVM5LjkgOS4xNiA5LjkgOHMuOTQtMi4xIDIuMS0yLjFtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1tZWRpYSI+PHBhdGggZD0iTTIgNkgwdjVoLjAxTDAgMjBjMCAxLjEuOSAyIDIgMmgxOHYtMkgyVjZ6bTIwLTJoLThsLTItMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03IDE1bDQuNS02IDMuNSA0LjUxIDIuNS0zLjAxTDIxIDE1SDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1waG9uZS1tc2ciPjxwYXRoIGQ9Ik0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMzUtLjExLS43NC0uMDMtMS4wMi4yNGwtMi4yIDIuMmMtMi44My0xLjQ0LTUuMTUtMy43NS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUM4LjcgNi40NSA4LjUgNS4yNSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTIgM3YxMGwzLTNoNlYzaC05eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tc2Nhbi13aWZpIj48cGF0aCBkPSJNMTIgM0M2Ljk1IDMgMy4xNSA0Ljg1IDAgNy4yM0wxMiAyMiAyNCA3LjI1QzIwLjg1IDQuODcgMTcuMDUgMyAxMiAzem0xIDEzaC0ydi02aDJ2NnptLTItOFY2aDJ2MmgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXRzIj48Y2lyY2xlIGN4PSI0LjUiIGN5PSI5LjUiIHI9IjIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iOSIgY3k9IjUuNSIgcj0iMi41Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSIxNSIgY3k9IjUuNSIgcj0iMi41Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSIxOS41IiBjeT0iOS41IiByPSIyLjUiPjwvY2lyY2xlPjxwYXRoIGQ9Ik0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaWN0dXJlLWluLXBpY3R1cmUiPjxwYXRoIGQ9Ik0xOSA3aC04djZoOFY3em0yLTRIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOThWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOThoMTh2MTQuMDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGljdHVyZS1pbi1waWN0dXJlLWFsdCI+PHBhdGggZD0iTTE5IDExaC04djZoOHYtNnptNCA4VjQuOThDMjMgMy44OCAyMi4xIDMgMjEgM0gzYy0xLjEgMC0yIC44OC0yIDEuOThWMTljMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnptLTIgLjAySDNWNC45N2gxOHYxNC4wNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwbGF5LWZvci13b3JrIj48cGF0aCBkPSJNMTEgNXY1LjU5SDcuNWw0LjUgNC41IDQuNS00LjVIMTNWNWgtMnptLTUgOWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02aC0yYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icG9seW1lciI+PHBhdGggZD0iTTE5IDRoLTRMNy4xMSAxNi42MyA0LjUgMTIgOSA0SDVMLjUgMTIgNSAyMGg0bDcuODktMTIuNjNMMTkuNSAxMiAxNSAyMGg0bDQuNS04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvd2VyLXNldHRpbmdzLW5ldyI+PHBhdGggZD0iTTEzIDNoLTJ2MTBoMlYzem00LjgzIDIuMTdsLTEuNDIgMS40MkMxNy45OSA3Ljg2IDE5IDkuODEgMTkgMTJjMCAzLjg3LTMuMTMgNy03IDdzLTctMy4xMy03LTdjMC0yLjE5IDEuMDEtNC4xNCAyLjU4LTUuNDJMNi4xNyA1LjE3QzQuMjMgNi44MiAzIDkuMjYgMyAxMmMwIDQuOTcgNC4wMyA5IDkgOXM5LTQuMDMgOS05YzAtMi43NC0xLjIzLTUuMTgtMy4xNy02LjgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InByZWduYW50LXdvbWFuIj48cGF0aCBkPSJNOSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNyA5Yy0uMDEtMS4zNC0uODMtMi41MS0yLTMgMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InByaW50Ij48cGF0aCBkPSJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icXVlcnktYnVpbGRlciI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptLjUtMTNIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3oiPjwvcGF0aD48L2c+CjxnIGlkPSJxdWVzdGlvbi1hbnN3ZXIiPjxwYXRoIGQ9Ik0yMSA2aC0ydjlINnYyYzAgLjU1LjQ1IDEgMSAxaDExbDQgNFY3YzAtLjU1LS40NS0xLTEtMXptLTQgNlYzYzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTRsNC00aDEwYy41NSAwIDEtLjQ1IDEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyYWRpby1idXR0b24tY2hlY2tlZCI+PHBhdGggZD0iTTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWNlaXB0Ij48cGF0aCBkPSJNMTggMTdINnYtMmgxMnYyem0wLTRINnYtMmgxMnYyem0wLTRINlY3aDEydjJ6TTMgMjJsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjVMMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAyIDQuNSAzLjUgMyAydjIweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlY29yZC12b2ljZS1vdmVyIj48Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iNCI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NGwtMS42OCAxLjY5Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzcgMy4wMiAyLjc3IDcuNTYgMCAxMC43NEwyMC4wNyAxNmMzLjktMy44OSAzLjkxLTkuOTUgMC0xNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWRlZW0iPjxwYXRoIGQ9Ik0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTEgMC0xLjY2LTEuMzQtMy0zLTMtMS4wNSAwLTEuOTYuNTQtMi41IDEuMzVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWRvIj48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlZnJlc2giPjxwYXRoIGQ9Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUiPjxwYXRoIGQ9Ik0xOSAxM0g1di0yaDE0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVtb3ZlLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFIN3YtMmgxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1jaXJjbGUtb3V0bGluZSI+PHBhdGggZD0iTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1zaG9wcGluZy1jYXJ0Ij48cGF0aCBkPSJNMjIuNzMgMjIuNzNMMi43NyAyLjc3IDIgMmwtLjczLS43M0wwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhjLS41LjM2LS44My45NS0uODMgMS42MiAwIDEuMS44OSAyIDEuOTkgMiAuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OWMuMDgtLjE0LjEyLS4zMS4xMi0uNDggMC0uNTUtLjQ1LTEtMS0xSDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlb3JkZXIiPjxwYXRoIGQ9Ik0zIDE1aDE4di0ySDN2MnptMCA0aDE4di0ySDN2MnptMC04aDE4VjlIM3Yyem0wLTZ2MmgxOFY1SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVwbHkiPjxwYXRoIGQ9Ik0xMCA5VjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVwbHktYWxsIj48cGF0aCBkPSJNNyA4VjVsLTcgNyA3IDd2LTNsLTQtNCA0LTR6bTYgMVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcG9ydCI+PHBhdGggZD0iTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xMiAxNy4zYy0uNzIgMC0xLjMtLjU4LTEuMy0xLjMgMC0uNzIuNTgtMS4zIDEuMy0xLjMuNzIgMCAxLjMuNTggMS4zIDEuMyAwIC43Mi0uNTggMS4zLTEuMyAxLjN6bTEtNC4zaC0yVjdoMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcG9ydC1wcm9ibGVtIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlc3RvcmUiPjxwYXRoIGQ9Ik0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVzdG9yZS1wYWdlIj48cGF0aCBkPSJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxNmMtMi4wNSAwLTMuODEtMS4yNC00LjU4LTNoMS43MWMuNjMuOSAxLjY4IDEuNSAyLjg3IDEuNSAxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMy45MyA5LjUgMTIgOS41Yy0xLjM1IDAtMi41Mi43OC0zLjEgMS45bDEuNiAxLjZoLTRWOWwxLjMgMS4zQzguNjkgOC45MiAxMC4yMyA4IDEyIDhjMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm9vbSI+PHBhdGggZD0iTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3ptMCA5LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdW5kZWQtY29ybmVyIj48cGF0aCBkPSJNMTkgMTloMnYyaC0ydi0yem0wLTJoMnYtMmgtMnYyek0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptNCAwaDJWM0g3djJ6bTggMTZoMnYtMmgtMnYyem0tNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptLTggMGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnpNMjEgOGMwLTIuNzYtMi4yNC01LTUtNWgtNXYyaDVjMS42NSAwIDMgMS4zNSAzIDN2NWgyVjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm93aW5nIj48cGF0aCBkPSJNOC41IDE0LjVMNCAxOWwxLjUgMS41TDkgMTdoMmwtMi41LTIuNXpNMTUgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMjAuMDFMMTggMjRsLTIuOTktMy4wMVYxOS41bC03LjEtNy4wOWMtLjMxLjA1LS42MS4wNy0uOTEuMDd2LTIuMTZjMS42Ni4wMyAzLjYxLS44NyA0LjY3LTIuMDRsMS40LTEuNTVjLjE5LS4yMS40My0uMzguNjktLjUuMjktLjE0LjYyLS4yMy45Ni0uMjNoLjAzQzE1Ljk5IDYuMDEgMTcgNy4wMiAxNyA4LjI2djUuNzVjMCAuODQtLjM1IDEuNjEtLjkyIDIuMTZsLTMuNTgtMy41OHYtMi4yN2MtLjYzLjUyLTEuNDMgMS4wMi0yLjI5IDEuMzlMMTYuNSAxOEgxOGwzIDMuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2F2ZSI+PHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNjaGVkdWxlIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlYXJjaCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2VsZWN0LWFsbCI+PHBhdGggZD0iTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnpNNyAxN2gxMFY3SDd2MTB6bTItOGg2djZIOVY5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlbmQiPjxwYXRoIGQ9Ik0yLjAxIDIxTDIzIDEyIDIuMDEgMyAyIDEwbDE1IDItMTUgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncyI+PHBhdGggZD0iTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OHMtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmMtLjEyLS4yMi0uMzktLjMtLjYxLS4yMmwtMi40OSAxYy0uNTItLjQtMS4wOC0uNzMtMS42OS0uOThsLS4zOC0yLjY1QzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYy0uMjMtLjA5LS40OSAwLS42MS4yMmwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOThzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmMuMTIuMjIuMzkuMy42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4yMy4wOS40OSAwIC42MS0uMjJsMi0zLjQ2Yy4xMi0uMjIuMDctLjQ5LS4xMi0uNjRsLTIuMTEtMS42NXpNMTIgMTUuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYXBwbGljYXRpb25zIj48cGF0aCBkPSJNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem03LTdINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS45IDItMlY1YzAtMS4xLS44OS0yLTItMnptLTEuNzUgOWMwIC4yMy0uMDIuNDYtLjA1LjY4bDEuNDggMS4xNmMuMTMuMTEuMTcuMy4wOC40NWwtMS40IDIuNDJjLS4wOS4xNS0uMjcuMjEtLjQzLjE1bC0xLjc0LS43Yy0uMzYuMjgtLjc2LjUxLTEuMTguNjlsLS4yNiAxLjg1Yy0uMDMuMTctLjE4LjMtLjM1LjNoLTIuOGMtLjE3IDAtLjMyLS4xMy0uMzUtLjI5bC0uMjYtMS44NWMtLjQzLS4xOC0uODItLjQxLTEuMTgtLjY5bC0xLjc0LjdjLS4xNi4wNi0uMzQgMC0uNDMtLjE1bC0xLjQtMi40MmMtLjA5LS4xNS0uMDUtLjM0LjA4LS40NWwxLjQ4LTEuMTZjLS4wMy0uMjMtLjA1LS40Ni0uMDUtLjY5IDAtLjIzLjAyLS40Ni4wNS0uNjhsLTEuNDgtMS4xNmMtLjEzLS4xMS0uMTctLjMtLjA4LS40NWwxLjQtMi40MmMuMDktLjE1LjI3LS4yMS40My0uMTVsMS43NC43Yy4zNi0uMjguNzYtLjUxIDEuMTgtLjY5bC4yNi0xLjg1Yy4wMy0uMTcuMTgtLjMuMzUtLjNoMi44Yy4xNyAwIC4zMi4xMy4zNS4yOWwuMjYgMS44NWMuNDMuMTguODIuNDEgMS4xOC42OWwxLjc0LS43Yy4xNi0uMDYuMzQgMCAuNDMuMTVsMS40IDIuNDJjLjA5LjE1LjA1LjM0LS4wOC40NWwtMS40OCAxLjE2Yy4wMy4yMy4wNS40Ni4wNS42OXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1iYWNrdXAtcmVzdG9yZSI+PHBhdGggZD0iTTE0IDEyYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMiAuOSAyIDIgMiAyLS45IDItMnptLTItOWMtNC45NyAwLTkgNC4wMy05IDlIMGw0IDQgNC00SDVjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjUxIDAtMi45MS0uNDktNC4wNi0xLjNsLTEuNDIgMS40NEM4LjA0IDIwLjMgOS45NCAyMSAxMiAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1ibHVldG9vdGgiPjxwYXRoIGQ9Ik0xMSAyNGgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6bTggMGgydi0yaC0ydjJ6bTIuNzEtMTguMjlMMTIgMGgtMXY3LjU5TDYuNDEgMyA1IDQuNDEgMTAuNTkgMTAgNSAxNS41OSA2LjQxIDE3IDExIDEyLjQxVjIwaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyAzLjgzbDEuODggMS44OEwxMyA3LjU5VjMuODN6bTEuODggMTAuNDZMMTMgMTYuMTd2LTMuNzZsMS44OCAxLjg4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWJyaWdodG5lc3MiPjxwYXRoIGQ9Ik0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6TTggMTZoMi41bDEuNSAxLjUgMS41LTEuNUgxNnYtMi41bDEuNS0xLjUtMS41LTEuNVY4aC0yLjVMMTIgNi41IDEwLjUgOEg4djIuNUw2LjUgMTIgOCAxMy41VjE2em00LTdjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDNWOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1jZWxsIj48cGF0aCBkPSJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMTYgLjAxTDggMEM2LjkgMCA2IC45IDYgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTZIOFY0aDh2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtZXRoZXJuZXQiPjxwYXRoIGQ9Ik03Ljc3IDYuNzZMNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUybC0xLjU0IDEuMjhMMjAuNTggMTJsLTQuMzUgNS4yNCAxLjU0IDEuMjhMMjMuMTggMTJsLTUuNDEtNi41MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1hbnRlbm5hIj48cGF0aCBkPSJNMTIgNWMtMy44NyAwLTcgMy4xMy03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTEgOS4yOWMuODgtLjM5IDEuNS0xLjI2IDEuNS0yLjI5IDAtMS4zOC0xLjEyLTIuNS0yLjUtMi41UzkuNSAxMC42MiA5LjUgMTJjMCAxLjAyLjYyIDEuOSAxLjUgMi4yOXYzLjNMNy41OSAyMSA5IDIyLjQxbDMtMyAzIDNMMTYuNDEgMjEgMTMgMTcuNTl2LTMuM3pNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJoMmMwLTQuOTcgNC4wMy05IDktOXM5IDQuMDMgOSA5aDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtY29tcG9uZW50Ij48cGF0aCBkPSJNNSAyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIMXY2aDZWNkg1VjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJIOXYyem0tOCAwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZ2LTJIMXYyek0yMSA2VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnY2aDZWNmgtMnptLTgtNGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDl2Nmg2VjZoLTJWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMmgtNnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LWNvbXBvc2l0ZSI+PHBhdGggZD0iTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1oZG1pIj48cGF0aCBkPSJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTJWNWgtMXYyaC0yVjVoLTF2Mkg4VjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtc3ZpZGVvIj48cGF0aCBkPSJNOCAxMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVM1IDEwLjY3IDUgMTEuNSA1LjY3IDEzIDYuNSAxMyA4IDEyLjMzIDggMTEuNXptNy01YzAtLjgzLS42Ny0xLjUtMS41LTEuNWgtM0M5LjY3IDUgOSA1LjY3IDkgNi41UzkuNjcgOCAxMC41IDhoM2MuODMgMCAxLjUtLjY3IDEuNS0xLjV6TTguNSAxNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTNy42NyAxOCA4LjUgMThzMS41LS42NyAxLjUtMS41UzkuMzMgMTUgOC41IDE1ek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMnM0LjkzIDExIDExIDExIDExLTQuOTMgMTEtMTFTMTguMDcgMSAxMiAxem0wIDIwYy00Ljk2IDAtOS00LjA0LTktOXM0LjA0LTkgOS05IDkgNC4wNCA5IDktNC4wNCA5LTkgOXptNS41LTExYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptLTIgNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3Mtb3ZlcnNjYW4iPjxwYXRoIGQ9Ik0xMi4wMSA1LjVMMTAgOGg0bC0xLjk5LTIuNXpNMTggMTB2NGwyLjUtMS45OUwxOCAxMHpNNiAxMGwtMi41IDIuMDFMNiAxNHYtNHptOCA2aC00bDIuMDEgMi41TDE0IDE2em03LTEzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcGhvbmUiPjxwYXRoIGQ9Ik0xMyA5aC0ydjJoMlY5em00IDBoLTJ2MmgyVjl6bTMgNi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMzUtLjExLS43NC0uMDMtMS4wMi4yNGwtMi4yIDIuMmMtMi44My0xLjQ0LTUuMTUtMy43NS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUM4LjcgNi40NSA4LjUgNS4yNSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgOXYyaDJWOWgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1wb3dlciI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTItMjJoLTJ2MTBoMlYyem0zLjU2IDIuNDRsLTEuNDUgMS40NUMxNi44NCA2Ljk0IDE4IDguODMgMTggMTFjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yLjE3IDEuMTYtNC4wNiAyLjg4LTUuMTJMNy40NCA0LjQ0QzUuMzYgNS44OCA0IDguMjggNCAxMWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi43Mi0xLjM2LTUuMTItMy40NC02LjU2ek0xNSAyNGgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcmVtb3RlIj48cGF0aCBkPSJNMTUgOUg5Yy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xem0tMyA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNy4wNSA2LjA1bDEuNDEgMS40MUM5LjM3IDYuNTYgMTAuNjIgNiAxMiA2czIuNjMuNTYgMy41NCAxLjQ2bDEuNDEtMS40MUMxNS42OCA0Ljc4IDEzLjkzIDQgMTIgNHMtMy42OC43OC00Ljk1IDIuMDV6TTEyIDBDOC45NiAwIDYuMjEgMS4yMyA0LjIyIDMuMjJsMS40MSAxLjQxQzcuMjYgMy4wMSA5LjUxIDIgMTIgMnM0Ljc0IDEuMDEgNi4zNiAyLjY0bDEuNDEtMS40MUMxNy43OSAxLjIzIDE1LjA0IDAgMTIgMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy12b2ljZSI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTUtMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNGMwLTEuNjYtMS4zNC0zLTMtM1M5IDIuMzQgOSA0djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xIDExaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNC0xNGgtMS43YzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxMyA2LjcgMTBINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMGgydi0zLjI4YzMuMjgtLjQ5IDYtMy4zMSA2LTYuNzJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcCI+PHBhdGggZD0iTTE2IDZWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJIMnYxM2MwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2aC02em0tNi0yaDR2MmgtNFY0ek05IDE4VjlsNy41IDRMOSAxOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzaG9wLXR3byI+PHBhdGggZD0iTTMgOUgxdjExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ySDNWOXptMTUtNFYzYzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg1djExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0yVjVoLTV6bS02LTJoNHYyaC00VjN6bTAgMTJWOGw1LjUgMy01LjUgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzaG9wcGluZy1iYXNrZXQiPjxwYXRoIGQ9Ik0xNy4yMSA5bC00LjM4LTYuNTZjLS4xOS0uMjgtLjUxLS40Mi0uODMtLjQyLS4zMiAwLS42NC4xNC0uODMuNDNMNi43OSA5SDJjLS41NSAwLTEgLjQ1LTEgMSAwIC4wOS4wMS4xOC4wNC4yN2wyLjU0IDkuMjdjLjIzLjg0IDEgMS40NiAxLjkyIDEuNDZoMTNjLjkyIDAgMS42OS0uNjIgMS45My0xLjQ2bDIuNTQtOS4yN0wyMyAxMGMwLS41NS0uNDUtMS0xLTFoLTQuNzl6TTkgOWwzLTQuNEwxNSA5SDl6bTMgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6TTEgMnYyaDJsMy42IDcuNTktMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDEydi0ySDcuNDJjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDljLjA4LS4xNC4xMi0uMzEuMTItLjQ4IDAtLjU1LS40NS0xLTEtMUg1LjIxbC0uOTQtMkgxem0xNiAxNmMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic29ydCI+PHBhdGggZD0iTTMgMThoNnYtMkgzdjJ6TTMgNnYyaDE4VjZIM3ptMCA3aDEydi0ySDN2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzcGVha2VyLW5vdGVzIj48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggMTRINnYtMmgydjJ6bTAtM0g2VjloMnYyem0wLTNINlY2aDJ2MnptNyA2aC01di0yaDV2MnptMy0zaC04VjloOHYyem0wLTNoLThWNmg4djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3BlYWtlci1ub3Rlcy1vZmYiPjxwYXRoIGQ9Ik0xMC41NCAxMWwtLjU0LS41NEw3LjU0IDggNiA2LjQ2IDIuMzggMi44NCAxLjI3IDEuNzMgMCAzbDIuMDEgMi4wMUwyIDIybDQtNGg5bDUuNzMgNS43M0wyMiAyMi40NiAxNy41NCAxOGwtNy03ek04IDE0SDZ2LTJoMnYyem0tMi0zVjlsMiAySDZ6bTE0LTlINC4wOEwxMCA3LjkyVjZoOHYyaC03LjkybDEgMUgxOHYyaC00LjkybDYuOTkgNi45OUMyMS4xNCAxNy45NSAyMiAxNy4wOCAyMiAxNlY0YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNwZWxsY2hlY2siPjxwYXRoIGQ9Ik0xMi40NSAxNmgyLjA5TDkuNDMgM0g3LjU3TDIuNDYgMTZoMi4wOWwxLjEyLTNoNS42NGwxLjE0IDN6bS02LjAyLTVMOC41IDUuNDggMTAuNTcgMTFINi40M3ptMTUuMTYuNTlsLTguMDkgOC4wOUw5LjgzIDE2bC0xLjQxIDEuNDEgNS4wOSA1LjA5TDIzIDEzbC0xLjQxLTEuNDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RhciI+PHBhdGggZD0iTTEyIDE3LjI3TDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0YXItYm9yZGVyIj48cGF0aCBkPSJNMjIgOS4yNGwtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdGFyLWhhbGYiPjxwYXRoIGQ9Ik0yMiA5LjI0bC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40VjYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RhcnMiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem00LjI0IDE2TDEyIDE1LjQ1IDcuNzcgMThsMS4xMi00LjgxLTMuNzMtMy4yMyA0LjkyLS40MkwxMiA1bDEuOTIgNC41MyA0LjkyLjQyLTMuNzMgMy4yM0wxNi4yMyAxOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdG9yZSI+PHBhdGggZD0iTTIwIDRINHYyaDE2VjR6bTEgMTB2LTJsLTEtNUg0bC0xIDV2MmgxdjZoMTB2LTZoNHY2aDJ2LTZoMXptLTkgNEg2di00aDZ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJkaXJlY3RvcnktYXJyb3ctbGVmdCI+PHBhdGggZD0iTTExIDlsMS40MiAxLjQyTDguODMgMTRIMThWNGgydjEySDguODNsMy41OSAzLjU4TDExIDIxbC02LTYgNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN1YmRpcmVjdG9yeS1hcnJvdy1yaWdodCI+PHBhdGggZD0iTTE5IDE1bC02IDYtMS40Mi0xLjQyTDE1LjE3IDE2SDRWNGgydjEwaDkuMTdsLTMuNTktMy41OEwxMyA5bDYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJqZWN0Ij48cGF0aCBkPSJNMTQgMTdINHYyaDEwdi0yem02LThINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyek00IDV2MmgxNlY1SDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3VwZXJ2aXNvci1hY2NvdW50Ij48cGF0aCBkPSJNMTYuNSAxMmMxLjM4IDAgMi40OS0xLjEyIDIuNDktMi41UzE3Ljg4IDcgMTYuNSA3QzE1LjEyIDcgMTQgOC4xMiAxNCA5LjVzMS4xMiAyLjUgMi41IDIuNXpNOSAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxMC42NiA1IDkgNUM3LjM0IDUgNiA2LjM0IDYgOHMxLjM0IDMgMyAzem03LjUgM2MtMS44MyAwLTUuNS45Mi01LjUgMi43NVYxOWgxMXYtMi4yNWMwLTEuODMtMy42Ny0yLjc1LTUuNS0yLjc1ek05IDEzYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDd2LTIuMjVjMC0uODUuMzMtMi4zNCAyLjM3LTMuNDdDMTAuNSAxMy4xIDkuNjYgMTMgOSAxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2FwLWhvcml6Ij48cGF0aCBkPSJNNi45OSAxMUwzIDE1bDMuOTkgNHYtM0gxNHYtMkg2Ljk5di0zek0yMSA5bC0zLjk5LTR2M0gxMHYyaDcuMDF2M0wyMSA5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3YXAtdmVydCI+PHBhdGggZD0iTTE2IDE3LjAxVjEwaC0ydjcuMDFoLTNMMTUgMjFsNC0zLjk5aC0zek05IDNMNSA2Ljk5aDNWMTRoMlY2Ljk5aDNMOSAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3YXAtdmVydGljYWwtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNi41IDlMMTAgNS41IDEzLjUgOUgxMXY0SDlWOUg2LjV6bTExIDZMMTQgMTguNSAxMC41IDE1SDEzdi00aDJ2NGgyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3lzdGVtLXVwZGF0ZS1hbHQiPjxwYXRoIGQ9Ik0xMiAxNi41bDQtNGgtM3YtOWgtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjUuNDloNlYzLjVIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtMTRjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFiIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDEwdjRoOHYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0YWItdW5zZWxlY3RlZCI+PHBhdGggZD0iTTEgOWgyVjdIMXYyem0wIDRoMnYtMkgxdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyem04IDE2aDJ2LTJIOXYyem0tOC00aDJ2LTJIMXYyem0yIDR2LTJIMWMwIDEuMS45IDIgMiAyek0yMSAzaC04djZoMTBWNWMwLTEuMS0uOS0yLTItMnptMCAxNGgydi0yaC0ydjJ6TTkgNWgyVjNIOXYyek01IDIxaDJ2LTJINXYyek01IDVoMlYzSDV2MnptMTYgMTZjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGV4dC1mb3JtYXQiPjxwYXRoIGQ9Ik01IDE3djJoMTR2LTJINXptNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4TDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGhlYXRlcnMiPjxwYXRoIGQ9Ik0xOCAzdjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzaC0yek04IDE3SDZ2LTJoMnYyem0wLTRINnYtMmgydjJ6bTAtNEg2VjdoMnYyem0xMCA4aC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnptMC00aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRodW1iLWRvd24iPjxwYXRoIGQ9Ik0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MS45MWwuMDEuMDFMMSAxNGMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptNCAwdjEyaDRWM2gtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aHVtYi11cCI+PHBhdGggZD0iTTEgMjFoNFY5SDF2MTJ6bTIyLTExYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0xLjkxbC0uMDEtLjAxTDIzIDEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRodW1icy11cC1kb3duIj48cGF0aCBkPSJNMTIgNmMwLS41NS0uNDUtMS0xLTFINS44MmwuNjYtMy4xOC4wMi0uMjNjMC0uMzEtLjEzLS41OS0uMzMtLjhMNS4zOCAwIC40NCA0Ljk0Qy4xNyA1LjIxIDAgNS41OSAwIDZ2Ni41YzAgLjgzLjY3IDEuNSAxLjUgMS41aDYuNzVjLjYyIDAgMS4xNS0uMzggMS4zOC0uOTFsMi4yNi01LjI5Yy4wNy0uMTcuMTEtLjM2LjExLS41NVY2em0xMC41IDRoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZWxpbmUiPjxwYXRoIGQ9Ik0yMyA4YzAgMS4xLS45IDItMiAyLS4xOCAwLS4zNS0uMDItLjUxLS4wN2wtMy41NiAzLjU1Yy4wNS4xNi4wNy4zNC4wNy41MiAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJjMC0uMTguMDItLjM2LjA3LS41MmwtMi41NS0yLjU1Yy0uMTYuMDUtLjM0LjA3LS41Mi4wN3MtLjM2LS4wMi0uNTItLjA3bC00LjU1IDQuNTZjLjA1LjE2LjA3LjMzLjA3LjUxIDAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMmMuMTggMCAuMzUuMDIuNTEuMDdsNC41Ni00LjU1QzguMDIgOS4zNiA4IDkuMTggOCA5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAuMTgtLjAyLjM2LS4wNy41MmwyLjU1IDIuNTVjLjE2LS4wNS4zNC0uMDcuNTItLjA3cy4zNi4wMi41Mi4wN2wzLjU1LTMuNTZDMTkuMDIgOC4zNSAxOSA4LjE4IDE5IDhjMC0xLjEuOS0yIDItMnMyIC45IDIgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b2MiPjxwYXRoIGQ9Ik0zIDloMTRWN0gzdjJ6bTAgNGgxNHYtMkgzdjJ6bTAgNGgxNHYtMkgzdjJ6bTE2IDBoMnYtMmgtMnYyem0wLTEwdjJoMlY3aC0yem0wIDZoMnYtMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRvZGF5Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRvbGwiPjxwYXRoIGQ9Ik0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJjMC0yLjYxIDEuNjctNC44MyA0LTUuNjVWNC4yNkMzLjU1IDUuMTUgMSA4LjI3IDEgMTJzMi41NSA2Ljg1IDYgNy43NHYtMi4wOWMtMi4zMy0uODItNC0zLjA0LTQtNS42NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b3VjaC1hcHAiPjxwYXRoIGQ9Ik05IDExLjI0VjcuNUM5IDYuMTIgMTAuMTIgNSAxMS41IDVTMTQgNi4xMiAxNCA3LjV2My43NGMxLjIxLS44MSAyLTIuMTggMi0zLjc0QzE2IDUuMDEgMTMuOTkgMyAxMS41IDNTNyA1LjAxIDcgNy41YzAgMS41Ni43OSAyLjkzIDIgMy43NHptOS44NCA0LjYzbC00LjU0LTIuMjZjLS4xNy0uMDctLjM1LS4xMS0uNTQtLjExSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA2LjY3IDEwIDcuNXYxMC43NGwtMy40My0uNzJjLS4wOC0uMDEtLjE1LS4wMy0uMjQtLjAzLS4zMSAwLS41OS4xMy0uNzkuMzNsLS43OS44IDQuOTQgNC45NGMuMjcuMjcuNjUuNDQgMS4wNi40NGg2Ljc5Yy43NSAwIDEuMzMtLjU1IDEuNDQtMS4yOGwuNzUtNS4yN2MuMDEtLjA3LjAyLS4xNC4wMi0uMiAwLS42Mi0uMzgtMS4xNi0uOTEtMS4zOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFjay1jaGFuZ2VzIj48cGF0aCBkPSJNMTkuMDcgNC45M2wtMS40MSAxLjQxQzE5LjEgNy43OSAyMCA5Ljc5IDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04YzAtNC4wOCAzLjA1LTcuNDQgNy03LjkzdjIuMDJDOC4xNiA2LjU3IDYgOS4wMyA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MSAxLjQxQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2djIuMTRjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjJoLTFDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFuc2xhdGUiPjxwYXRoIGQ9Ik0xMi44NyAxNS4wN2wtMi41NC0yLjUxLjAzLS4wM2MxLjc0LTEuOTQgMi45OC00LjE3IDMuNzEtNi41M0gxN1Y0aC03VjJIOHYySDF2MS45OWgxMS4xN0MxMS41IDcuOTIgMTAuNDQgOS43NSA5IDExLjM1IDguMDcgMTAuMzIgNy4zIDkuMTkgNi42OSA4aC0yYy43MyAxLjYzIDEuNzMgMy4xNyAyLjk4IDQuNTZsLTUuMDkgNS4wMkw0IDE5bDUtNSAzLjExIDMuMTEuNzYtMi4wNHpNMTguNSAxMGgtMkwxMiAyMmgybDEuMTItM2g0Ljc1TDIxIDIyaDJsLTQuNS0xMnptLTIuNjIgN2wxLjYyLTQuMzNMMTkuMTIgMTdoLTMuMjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJlbmRpbmctZG93biI+PHBhdGggZD0iTTE2IDE4bDIuMjktMi4yOS00Ljg4LTQuODgtNCA0TDIgNy40MSAzLjQxIDZsNiA2IDQtNCA2LjMgNi4yOUwyMiAxMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyZW5kaW5nLWZsYXQiPjxwYXRoIGQ9Ik0yMiAxMmwtNC00djNIM3YyaDE1djN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJlbmRpbmctdXAiPjxwYXRoIGQ9Ik0xNiA2bDIuMjkgMi4yOS00Ljg4IDQuODgtNC00TDIgMTYuNTkgMy40MSAxOGw2LTYgNCA0IDYuMy02LjI5TDIyIDEyVjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHVybmVkLWluIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InR1cm5lZC1pbi1ub3QiPjxwYXRoIGQ9Ik0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTVsLTUtMi4xOEw3IDE4VjVoMTB2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5hcmNoaXZlIj48cGF0aCBkPSJNMjAuNTUgNS4yMmwtMS4zOS0xLjY4QzE4Ljg4IDMuMjEgMTguNDcgMyAxOCAzSDZjLS40NyAwLS44OC4yMS0xLjE1LjU1TDMuNDYgNS4yMkMzLjE3IDUuNTcgMyA2LjAxIDMgNi41VjE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OS0uMTctLjkzLS40NS0xLjI4ek0xMiA5LjVsNS41IDUuNUgxNHYyaC00di0ySDYuNUwxMiA5LjV6TTUuMTIgNWwuODItMWgxMmwuOTMgMUg1LjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVuZG8iPjxwYXRoIGQ9Ik0xMi41IDhjLTIuNjUgMC01LjA1Ljk5LTYuOSAyLjZMMiA3djloOWwtMy42Mi0zLjYyYzEuMzktMS4xNiAzLjE2LTEuODggNS4xMi0xLjg4IDMuNTQgMCA2LjU1IDIuMzEgNy42IDUuNWwyLjM3LS43OEMyMS4wOCAxMS4wMyAxNy4xNSA4IDEyLjUgOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ1bmZvbGQtbGVzcyI+PHBhdGggZD0iTTcuNDEgMTguNTlMOC44MyAyMCAxMiAxNi44MyAxNS4xNyAyMGwxLjQxLTEuNDFMMTIgMTRsLTQuNTkgNC41OXptOS4xOC0xMy4xOEwxNS4xNyA0IDEyIDcuMTcgOC44MyA0IDcuNDEgNS40MSAxMiAxMGw0LjU5LTQuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5mb2xkLW1vcmUiPjxwYXRoIGQ9Ik0xMiA1LjgzTDE1LjE3IDlsMS40MS0xLjQxTDEyIDMgNy40MSA3LjU5IDguODMgOSAxMiA1Ljgzem0wIDEyLjM0TDguODMgMTVsLTEuNDEgMS40MUwxMiAyMWw0LjU5LTQuNTlMMTUuMTcgMTUgMTIgMTguMTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idXBkYXRlIj48cGF0aCBkPSJNMjEgMTAuMTJoLTYuNzhsMi43NC0yLjgyYy0yLjczLTIuNy03LjE1LTIuOC05Ljg4LS4xLTIuNzMgMi43MS0yLjczIDcuMDggMCA5Ljc5IDIuNzMgMi43MSA3LjE1IDIuNzEgOS44OCAwQzE4LjMyIDE1LjY1IDE5IDE0LjA4IDE5IDEyLjFoMmMwIDEuOTgtLjg4IDQuNTUtMi42NCA2LjI5LTMuNTEgMy40OC05LjIxIDMuNDgtMTIuNzIgMC0zLjUtMy40Ny0zLjUzLTkuMTEtLjAyLTEyLjU4IDMuNTEtMy40NyA5LjE0LTMuNDcgMTIuNjUgMEwyMSAzdjcuMTJ6TTEyLjUgOHY0LjI1bDMuNSAyLjA4LS43MiAxLjIxTDExIDEzVjhoMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZlcmlmaWVkLXVzZXIiPjxwYXRoIGQ9Ik0xMiAxTDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTIgMTZsLTQtNCAxLjQxLTEuNDFMMTAgMTQuMTdsNi41OS02LjU5TDE4IDlsLTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWFnZW5kYSI+PHBhdGggZD0iTTIwIDEzSDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6bTAtMTBIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctYXJyYXkiPjxwYXRoIGQ9Ik00IDE4aDNWNUg0djEzek0xOCA1djEzaDNWNWgtM3pNOCAxOGg5VjVIOHYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNhcm91c2VsIj48cGF0aCBkPSJNNyAxOWgxMFY0SDd2MTV6bS01LTJoNFY2SDJ2MTF6TTE4IDZ2MTFoNFY2aC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctY29sdW1uIj48cGF0aCBkPSJNMTAgMThoNVY1aC01djEzem0tNiAwaDVWNUg0djEzek0xNiA1djEzaDVWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWRheSI+PHBhdGggZD0iTTIgMjFoMTl2LTNIMnYzek0yMCA4SDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXpNMiAzdjNoMTlWM0gyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctaGVhZGxpbmUiPjxwYXRoIGQ9Ik00IDE1aDE2di0ySDR2MnptMCA0aDE2di0ySDR2MnptMC04aDE2VjlINHYyem0wLTZ2MmgxNlY1SDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1saXN0Ij48cGF0aCBkPSJNNCAxNGg0di00SDR2NHptMCA1aDR2LTRINHY0ek00IDloNFY1SDR2NHptNSA1aDEydi00SDl2NHptMCA1aDEydi00SDl2NHpNOSA1djRoMTJWNUg5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctbW9kdWxlIj48cGF0aCBkPSJNNCAxMWg1VjVINHY2em0wIDdoNXYtNkg0djZ6bTYgMGg1di02aC01djZ6bTYgMGg1di02aC01djZ6bS02LTdoNVY1aC01djZ6bTYtNnY2aDVWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LXF1aWx0Ij48cGF0aCBkPSJNMTAgMThoNXYtNmgtNXY2em0tNiAwaDVWNUg0djEzem0xMiAwaDV2LTZoLTV2NnpNMTAgNXY2aDExVjVIMTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1zdHJlYW0iPjxwYXRoIGQ9Ik00IDE4aDE3di02SDR2NnpNNCA1djZoMTdWNUg0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctd2VlayI+PHBhdGggZD0iTTYgNUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bTE0IDBoLTNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXptLTcgMGgtM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpc2liaWxpdHkiPjxwYXRoIGQ9Ik0xMiA0LjVDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41ek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlzaWJpbGl0eS1vZmYiPjxwYXRoIGQ9Ik0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY1LS4xMyAxLjI2LS4zNiAxLjgzbDIuOTIgMi45MmMxLjUxLTEuMjYgMi43LTIuODkgMy40My00Ljc1LTEuNzMtNC4zOS02LTcuNS0xMS03LjUtMS40IDAtMi43NC4yNS0zLjk4LjdsMi4xNiAyLjE2QzEwLjc0IDcuMTMgMTEuMzUgNyAxMiA3ek0yIDQuMjdsMi4yOCAyLjI4LjQ2LjQ2QzMuMDggOC4zIDEuNzggMTAuMDIgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41IDEuNTUgMCAzLjAzLS4zIDQuMzgtLjg0bC40Mi40MkwxOS43MyAyMiAyMSAyMC43MyAzLjI3IDMgMiA0LjI3ek03LjUzIDkuOGwxLjU1IDEuNTVjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42NiAxLjM0IDMgMyAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNTUgMS41NWMtLjY3LjMzLTEuNDEuNTMtMi4yLjUzLTIuNzYgMC01LTIuMjQtNS01IDAtLjc5LjItMS41My41My0yLjJ6bTQuMzEtLjc4bDMuMTUgMy4xNS4wMi0uMTZjMC0xLjY2LTEuMzQtMy0zLTNsLS4xNy4wMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3YXJuaW5nIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndhdGNoLWxhdGVyIj48cGF0aCBkPSJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTQuMiAxNC4yTDExIDEzVjdoMS41djUuMmw0LjUgMi43LS44IDEuM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ3ZWVrZW5kIj48cGF0aCBkPSJNMjEgMTBjLTEuMSAwLTIgLjktMiAydjNINXYtM2MwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yem0tMy01SDZjLTEuMSAwLTIgLjktMiAydjIuMTVjMS4xNi40MSAyIDEuNTEgMiAyLjgyVjE0aDEydi0yLjAzYzAtMS4zLjg0LTIuNCAyLTIuODJWN2MwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3b3JrIj48cGF0aCBkPSJNMjAgNmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS02IDBoLTRWNGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ieW91dHViZS1zZWFyY2hlZC1mb3IiPjxwYXRoIGQ9Ik0xNy4wMSAxNGgtLjhsLS4yNy0uMjdjLjk4LTEuMTQgMS41Ny0yLjYxIDEuNTctNC4yMyAwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MUM2LjUxIDcgOC41MyA1IDExLjAxIDVzNC41IDIuMDEgNC41IDQuNWMwIDIuNDgtMi4wMiA0LjUtNC41IDQuNS0uNjUgMC0xLjI2LS4xNC0xLjgyLS4zOEw3LjcxIDE1LjFjLjk3LjU3IDIuMDkuOSAzLjMuOSAxLjYxIDAgMy4wOC0uNTkgNC4yMi0xLjU3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iem9vbS1pbiI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6bTIuNS00aC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iem9vbS1vdXQiPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0ek03IDloNXYxSDd6Ij48L3BhdGg+PC9nPgo8L2RlZnM+PC9zdmc+CjwvaXJvbi1pY29uc2V0LXN2Zz5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoT28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgem89eyJVKzAwMDgiOiJiYWNrc3BhY2UiLCJVKzAwMDkiOiJ0YWIiLCJVKzAwMUIiOiJlc2MiLCJVKzAwMjAiOiJzcGFjZSIsIlUrMDA3RiI6ImRlbCJ9LERvPXs4OiJiYWNrc3BhY2UiLDk6InRhYiIsMTM6ImVudGVyIiwyNzoiZXNjIiwzMzoicGFnZXVwIiwzNDoicGFnZWRvd24iLDM1OiJlbmQiLDM2OiJob21lIiwzMjoic3BhY2UiLDM3OiJsZWZ0IiwzODoidXAiLDM5OiJyaWdodCIsNDA6ImRvd24iLDQ2OiJkZWwiLDEwNjoiKiJ9LEJvPXtzaGlmdDoic2hpZnRLZXkiLGN0cmw6ImN0cmxLZXkiLGFsdDoiYWx0S2V5IixtZXRhOiJtZXRhS2V5In0sSG89L1thLXowLTkqXS8sRm89L1VcKy8sVm89L15hcnJvdy8sVW89L15zcGFjZShiYXIpPy8sam89L15lc2NhcGUkLztmdW5jdGlvbiBHbyh0LGUpe3ZhciBuPSIiO2lmKHQpe3ZhciBpPXQudG9Mb3dlckNhc2UoKTsiICI9PT1pfHxVby50ZXN0KGkpP249InNwYWNlIjpqby50ZXN0KGkpP249ImVzYyI6MT09aS5sZW5ndGg/ZSYmIUhvLnRlc3QoaSl8fChuPWkpOm49Vm8udGVzdChpKT9pLnJlcGxhY2UoImFycm93IiwiIik6Im11bHRpcGx5Ij09aT8iKiI6aX1yZXR1cm4gbn1mdW5jdGlvbiBXbyh0LGUpe3JldHVybiB0LmtleT9Hbyh0LmtleSxlKTp0LmRldGFpbCYmdC5kZXRhaWwua2V5P0dvKHQuZGV0YWlsLmtleSxlKTooZnVuY3Rpb24gbih0KXt2YXIgZT0iIjtyZXR1cm4gdCYmKHQgaW4gem8/ZT16b1t0XTpGby50ZXN0KHQpPyh0PXBhcnNlSW50KHQucmVwbGFjZSgiVSsiLCIweCIpLDE2KSxlPVN0cmluZy5mcm9tQ2hhckNvZGUodCkudG9Mb3dlckNhc2UoKSk6ZT10LnRvTG93ZXJDYXNlKCkpLGV9KSh0LmtleUlkZW50aWZpZXIpfHwoZnVuY3Rpb24gaSh0KXt2YXIgZT0iIjtyZXR1cm4gTnVtYmVyKHQpJiYoZT10Pj02NSYmdDw9OTA/U3RyaW5nLmZyb21DaGFyQ29kZSgzMit0KTp0Pj0xMTImJnQ8PTEyMz8iZiIrKHQtMTEyKzEpOnQ+PTQ4JiZ0PD01Nz9TdHJpbmcodC00OCk6dD49OTYmJnQ8PTEwNT9TdHJpbmcodC05Nik6RG9bdF0pLGV9KSh0LmtleUNvZGUpfHwiIn1mdW5jdGlvbiBxbyh0LGUpe3JldHVybiBXbyhlLHQuaGFzTW9kaWZpZXJzKT09PXQua2V5JiYoIXQuaGFzTW9kaWZpZXJzfHwhIWUuc2hpZnRLZXk9PSEhdC5zaGlmdEtleSYmISFlLmN0cmxLZXk9PSEhdC5jdHJsS2V5JiYhIWUuYWx0S2V5PT0hIXQuYWx0S2V5JiYhIWUubWV0YUtleT09ISF0Lm1ldGFLZXkpfWZ1bmN0aW9uIFlvKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgiICIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIDE9PT10Lmxlbmd0aD97Y29tYm86dCxrZXk6dCxldmVudDoia2V5ZG93biJ9OnQuc3BsaXQoIisiKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5zcGxpdCgiOiIpLGk9blswXSxyPW5bMV07cmV0dXJuIGkgaW4gQm8/KHRbQm9baV1dPSEwLHQuaGFzTW9kaWZpZXJzPSEwKToodC5rZXk9aSx0LmV2ZW50PXJ8fCJrZXlkb3duIiksdH0pLHtjb21ibzp0LnNwbGl0KCI6Iikuc2hpZnQoKX0pfSkodCl9KSl9Y29uc3QgWG89e3Byb3BlcnRpZXM6e2tleUV2ZW50VGFyZ2V0Ont0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0sc3RvcEtleWJvYXJkRXZlbnRQcm9wYWdhdGlvbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYm91bmRLZXlIYW5kbGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX2ltcGVyYXRpdmVLZXlCaW5kaW5nczp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57fX19fSxvYnNlcnZlcnM6WyJfcmVzZXRLZXlFdmVudExpc3RlbmVycyhrZXlFdmVudFRhcmdldCwgX2JvdW5kS2V5SGFuZGxlcnMpIl0sa2V5QmluZGluZ3M6e30scmVnaXN0ZXJlZDpmdW5jdGlvbigpe3RoaXMuX3ByZXBLZXlCaW5kaW5ncygpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fdW5saXN0ZW5LZXlFdmVudExpc3RlbmVycygpfSxhZGRPd25LZXlCaW5kaW5nOmZ1bmN0aW9uKHQsZSl7dGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzW3RdPWUsdGhpcy5fcHJlcEtleUJpbmRpbmdzKCksdGhpcy5fcmVzZXRLZXlFdmVudExpc3RlbmVycygpfSxyZW1vdmVPd25LZXlCaW5kaW5nczpmdW5jdGlvbigpe3RoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5ncz17fSx0aGlzLl9wcmVwS2V5QmluZGluZ3MoKSx0aGlzLl9yZXNldEtleUV2ZW50TGlzdGVuZXJzKCl9LGtleWJvYXJkRXZlbnRNYXRjaGVzS2V5czpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1ZbyhlKSxpPTA7aTxuLmxlbmd0aDsrK2kpaWYocW8obltpXSx0KSlyZXR1cm4hMDtyZXR1cm4hMX0sX2NvbGxlY3RLZXlCaW5kaW5nczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYmVoYXZpb3JzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5QmluZGluZ3N9KSk7cmV0dXJuLTE9PT10LmluZGV4T2YodGhpcy5rZXlCaW5kaW5ncykmJnQucHVzaCh0aGlzLmtleUJpbmRpbmdzKSx0fSxfcHJlcEtleUJpbmRpbmdzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2tleUJpbmRpbmdzPXt9LHRoaXMuX2NvbGxlY3RLZXlCaW5kaW5ncygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KXRoaXMuX2FkZEtleUJpbmRpbmcoZSx0W2VdKX0pLHRoaXMpLHRoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5ncyl0aGlzLl9hZGRLZXlCaW5kaW5nKHQsdGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzW3RdKTtmb3IodmFyIGUgaW4gdGhpcy5fa2V5QmluZGluZ3MpdGhpcy5fa2V5QmluZGluZ3NbZV0uc29ydCgoZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdLmhhc01vZGlmaWVycztyZXR1cm4gbj09PWVbMF0uaGFzTW9kaWZpZXJzPzA6bj8tMToxfSkpfSxfYWRkS2V5QmluZGluZzpmdW5jdGlvbih0LGUpe1lvKHQpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3RoaXMuX2tleUJpbmRpbmdzW3QuZXZlbnRdPXRoaXMuX2tleUJpbmRpbmdzW3QuZXZlbnRdfHxbXSx0aGlzLl9rZXlCaW5kaW5nc1t0LmV2ZW50XS5wdXNoKFt0LGVdKX0pLHRoaXMpfSxfcmVzZXRLZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX3VubGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LF9saXN0ZW5LZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMua2V5RXZlbnRUYXJnZXQmJk9iamVjdC5rZXlzKHRoaXMuX2tleUJpbmRpbmdzKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9vbktleUJpbmRpbmdFdmVudC5iaW5kKHRoaXMsdGhpcy5fa2V5QmluZGluZ3NbdF0pO3RoaXMuX2JvdW5kS2V5SGFuZGxlcnMucHVzaChbdGhpcy5rZXlFdmVudFRhcmdldCx0LGVdKSx0aGlzLmtleUV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodCxlKX0pLHRoaXMpfSxfdW5saXN0ZW5LZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe2Zvcih2YXIgdDt0aGlzLl9ib3VuZEtleUhhbmRsZXJzLmxlbmd0aDspKHQ9dGhpcy5fYm91bmRLZXlIYW5kbGVycy5wb3AoKSlbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0WzFdLHRbMl0pfSxfb25LZXlCaW5kaW5nRXZlbnQ6ZnVuY3Rpb24odCxlKXtpZih0aGlzLnN0b3BLZXlib2FyZEV2ZW50UHJvcGFnYXRpb24mJmUuc3RvcFByb3BhZ2F0aW9uKCksIWUuZGVmYXVsdFByZXZlbnRlZClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXVswXSxyPXRbbl1bMV07aWYocW8oaSxlKSYmKHRoaXMuX3RyaWdnZXJLZXlIYW5kbGVyKGkscixlKSxlLmRlZmF1bHRQcmV2ZW50ZWQpKXJldHVybn19LF90cmlnZ2VyS2V5SGFuZGxlcjpmdW5jdGlvbih0LGUsbil7dmFyIGk9T2JqZWN0LmNyZWF0ZSh0KTtpLmtleWJvYXJkRXZlbnQ9bjt2YXIgcj1uZXcgQ3VzdG9tRXZlbnQodC5ldmVudCx7ZGV0YWlsOmksY2FuY2VsYWJsZTohMH0pO3RoaXNbZV0uY2FsbCh0aGlzLHIpLHIuZGVmYXVsdFByZXZlbnRlZCYmbi5wcmV2ZW50RGVmYXVsdCgpfX0sJG89e3Byb3BlcnRpZXM6e3Njcm9sbFRhcmdldDp7dHlwZTpIVE1MRWxlbWVudCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZhdWx0U2Nyb2xsVGFyZ2V0fX19LG9ic2VydmVyczpbIl9zY3JvbGxUYXJnZXRDaGFuZ2VkKHNjcm9sbFRhcmdldCwgaXNBdHRhY2hlZCkiXSxfc2hvdWxkSGF2ZUxpc3RlbmVyOiEwLF9zY3JvbGxUYXJnZXRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fb2xkU2Nyb2xsVGFyZ2V0JiYodGhpcy5fdG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEsdGhpcy5fb2xkU2Nyb2xsVGFyZ2V0KSx0aGlzLl9vbGRTY3JvbGxUYXJnZXQ9bnVsbCksZSlpZigiZG9jdW1lbnQiPT09dCl0aGlzLnNjcm9sbFRhcmdldD10aGlzLl9kb2M7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBuPXRoaXMuZG9tSG9zdDt0aGlzLnNjcm9sbFRhcmdldD1uJiZuLiQ/bi4kW3RdOmVyKHRoaXMub3duZXJEb2N1bWVudCkucXVlcnlTZWxlY3RvcigiIyIrdCl9ZWxzZSB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLl9vbGRTY3JvbGxUYXJnZXQ9dCx0aGlzLl90b2dnbGVTY3JvbGxMaXN0ZW5lcih0aGlzLl9zaG91bGRIYXZlTGlzdGVuZXIsdCkpfSxfc2Nyb2xsSGFuZGxlcjpmdW5jdGlvbiB0KCl7fSxnZXQgX2RlZmF1bHRTY3JvbGxUYXJnZXQoKXtyZXR1cm4gdGhpcy5fZG9jfSxnZXQgX2RvYygpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fSxnZXQgX3Njcm9sbFRvcCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnBhZ2VZT2Zmc2V0OnRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcDowfSxnZXQgX3Njcm9sbExlZnQoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5wYWdlWE9mZnNldDp0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0OjB9LHNldCBfc2Nyb2xsVG9wKHQpe3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5zY3JvbGxUbyh3aW5kb3cucGFnZVhPZmZzZXQsdCk6dGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wPXQpfSxzZXQgX3Njcm9sbExlZnQodCl7dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnNjcm9sbFRvKHQsd2luZG93LnBhZ2VZT2Zmc2V0KTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0PXQpfSxzY3JvbGw6ZnVuY3Rpb24odCxlKXt2YXIgbjsib2JqZWN0Ij09dHlwZW9mIHQ/KG49dC5sZWZ0LGU9dC50b3ApOm49dCxuPW58fDAsZT1lfHwwLHRoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5zY3JvbGxUbyhuLGUpOnRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKSYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQ9bix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A9ZSl9LGdldCBfc2Nyb2xsVGFyZ2V0V2lkdGgoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5pbm5lcldpZHRoOnRoaXMuc2Nyb2xsVGFyZ2V0Lm9mZnNldFdpZHRoOjB9LGdldCBfc2Nyb2xsVGFyZ2V0SGVpZ2h0KCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT90aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuaW5uZXJIZWlnaHQ6dGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0OjB9LF9pc1ZhbGlkU2Nyb2xsVGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsVGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9LF90b2dnbGVTY3JvbGxMaXN0ZW5lcjpmdW5jdGlvbih0LGUpe3ZhciBuPWU9PT10aGlzLl9kb2M/d2luZG93OmU7dD90aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXJ8fCh0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXI9dGhpcy5fc2Nyb2xsSGFuZGxlci5iaW5kKHRoaXMpLG4uYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXIpKTp0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXImJihuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyKSx0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXI9bnVsbCl9LHRvZ2dsZVNjcm9sbExpc3RlbmVyOmZ1bmN0aW9uKHQpe3RoaXMuX3Nob3VsZEhhdmVMaXN0ZW5lcj10LHRoaXMuX3RvZ2dsZVNjcm9sbExpc3RlbmVyKHQsdGhpcy5zY3JvbGxUYXJnZXQpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIEtvPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86aG9uZXxhZDsoPzogVTspPyBDUFUpIE9TIChcZCspLyksWm89S28mJktvWzFdPj04LEpvPSItMTAwMDBweCIsUW89LTEwMDtqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbzogMSkgewogICAgICAgIDpob3N0IHsKICAgICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgICAgfQogICAgICB9CgogICAgICAjaXRlbXMgewogICAgICAgIEBhcHBseSAtLWlyb24tbGlzdC1pdGVtcy1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFtncmlkXSkpICNpdGVtcyA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICNpdGVtcyA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxhcnJheS1zZWxlY3RvciBpZD0ic2VsZWN0b3IiIGl0ZW1zPSJ7e2l0ZW1zfX0iIHNlbGVjdGVkPSJ7e3NlbGVjdGVkSXRlbXN9fSIgc2VsZWN0ZWQtaXRlbT0ie3tzZWxlY3RlZEl0ZW19fSI+PC9hcnJheS1zZWxlY3Rvcj4KCiAgICA8ZGl2IGlkPSJpdGVtcyI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJpcm9uLWxpc3QiLHByb3BlcnRpZXM6e2l0ZW1zOnt0eXBlOkFycmF5fSxhczp7dHlwZTpTdHJpbmcsdmFsdWU6Iml0ZW0ifSxpbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaW5kZXgifSxzZWxlY3RlZEFzOnt0eXBlOlN0cmluZyx2YWx1ZToic2VsZWN0ZWQifSxncmlkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfZ3JpZENoYW5nZWQifSxzZWxlY3Rpb25FbmFibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHNlbGVjdGVkSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LG11bHRpU2VsZWN0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHNjcm9sbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MH19LG9ic2VydmVyczpbIl9pdGVtc0NoYW5nZWQoaXRlbXMuKikiLCJfc2VsZWN0aW9uRW5hYmxlZENoYW5nZWQoc2VsZWN0aW9uRW5hYmxlZCkiLCJfbXVsdGlTZWxlY3Rpb25DaGFuZ2VkKG11bHRpU2VsZWN0aW9uKSIsIl9zZXRPdmVyZmxvdyhzY3JvbGxUYXJnZXQsIHNjcm9sbE9mZnNldCkiXSxiZWhhdmlvcnM6W2xvLENvLCRvLE1vXSxfcmF0aW86LjUsX3Njcm9sbGVyUGFkZGluZ1RvcDowLF9zY3JvbGxQb3NpdGlvbjowLF9waHlzaWNhbFNpemU6MCxfcGh5c2ljYWxBdmVyYWdlOjAsX3BoeXNpY2FsQXZlcmFnZUNvdW50OjAsX3BoeXNpY2FsVG9wOjAsX3ZpcnR1YWxDb3VudDowLF9lc3RTY3JvbGxIZWlnaHQ6MCxfc2Nyb2xsSGVpZ2h0OjAsX3ZpZXdwb3J0SGVpZ2h0OjAsX3ZpZXdwb3J0V2lkdGg6MCxfcGh5c2ljYWxJdGVtczpudWxsLF9waHlzaWNhbFNpemVzOm51bGwsX2ZpcnN0VmlzaWJsZUluZGV4VmFsOm51bGwsX2xhc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbWF4UGFnZXM6MixfZm9jdXNlZEl0ZW06bnVsbCxfZm9jdXNlZFZpcnR1YWxJbmRleDotMSxfZm9jdXNlZFBoeXNpY2FsSW5kZXg6LTEsX29mZnNjcmVlbkZvY3VzZWRJdGVtOm51bGwsX2ZvY3VzQmFja2ZpbGxJdGVtOm51bGwsX2l0ZW1zUGVyUm93OjEsX2l0ZW1XaWR0aDowLF9yb3dIZWlnaHQ6MCxfdGVtcGxhdGVDb3N0OjAsX3BhcmVudE1vZGVsOiEwLGdldCBfcGh5c2ljYWxCb3R0b20oKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fcGh5c2ljYWxTaXplfSxnZXQgX3Njcm9sbEJvdHRvbSgpe3JldHVybiB0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF92aXJ0dWFsRW5kKCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTF9LGdldCBfaGlkZGVuQ29udGVudFNpemUoKXtyZXR1cm4odGhpcy5ncmlkP3RoaXMuX3BoeXNpY2FsUm93cyp0aGlzLl9yb3dIZWlnaHQ6dGhpcy5fcGh5c2ljYWxTaXplKS10aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF9pdGVtc1BhcmVudCgpe3JldHVybiBlcihlcih0aGlzLl91c2VyVGVtcGxhdGUpLnBhcmVudE5vZGUpfSxnZXQgX21heFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fdmlld3BvcnRIZWlnaHQrdGhpcy5fc2Nyb2xsT2Zmc2V0fSxnZXQgX21heFZpcnR1YWxTdGFydCgpe3ZhciB0PXRoaXMuX2NvbnZlcnRJbmRleFRvQ29tcGxldGVSb3codGhpcy5fdmlydHVhbENvdW50KTtyZXR1cm4gTWF0aC5tYXgoMCx0LXRoaXMuX3BoeXNpY2FsQ291bnQpfSxzZXQgX3ZpcnR1YWxTdGFydCh0KXt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl9tYXhWaXJ0dWFsU3RhcnQpLHRoaXMuZ3JpZCYmKHQtPXQldGhpcy5faXRlbXNQZXJSb3cpLHRoaXMuX3ZpcnR1YWxTdGFydFZhbD10fSxnZXQgX3ZpcnR1YWxTdGFydCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnRWYWx8fDB9LHNldCBfcGh5c2ljYWxTdGFydCh0KXsodCU9dGhpcy5fcGh5c2ljYWxDb3VudCk8MCYmKHQ9dGhpcy5fcGh5c2ljYWxDb3VudCt0KSx0aGlzLmdyaWQmJih0LT10JXRoaXMuX2l0ZW1zUGVyUm93KSx0aGlzLl9waHlzaWNhbFN0YXJ0VmFsPXR9LGdldCBfcGh5c2ljYWxTdGFydCgpe3JldHVybiB0aGlzLl9waHlzaWNhbFN0YXJ0VmFsfHwwfSxnZXQgX3BoeXNpY2FsRW5kKCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xKSV0aGlzLl9waHlzaWNhbENvdW50fSxzZXQgX3BoeXNpY2FsQ291bnQodCl7dGhpcy5fcGh5c2ljYWxDb3VudFZhbD10fSxnZXQgX3BoeXNpY2FsQ291bnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxDb3VudFZhbHx8MH0sZ2V0IF9vcHRQaHlzaWNhbFNpemUoKXtyZXR1cm4gMD09PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0PzEvMDp0aGlzLl92aWV3cG9ydEhlaWdodCp0aGlzLl9tYXhQYWdlc30sZ2V0IF9pc1Zpc2libGUoKXtyZXR1cm4gQm9vbGVhbih0aGlzLm9mZnNldFdpZHRofHx0aGlzLm9mZnNldEhlaWdodCl9LGdldCBmaXJzdFZpc2libGVJbmRleCgpe3ZhciB0PXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsO2lmKG51bGw9PXQpe3ZhciBlPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt0PXRoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCxuKXtyZXR1cm4oZSs9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KHQpKT50aGlzLl9zY3JvbGxQb3NpdGlvbj90aGlzLmdyaWQ/bi1uJXRoaXMuX2l0ZW1zUGVyUm93Om46dGhpcy5ncmlkJiZ0aGlzLl92aXJ0dWFsQ291bnQtMT09PW4/bi1uJXRoaXMuX2l0ZW1zUGVyUm93OnZvaWQgMH0pKXx8MCx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD10fXJldHVybiB0fSxnZXQgbGFzdFZpc2libGVJbmRleCgpe3ZhciB0PXRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw7aWYobnVsbD09dCl7aWYodGhpcy5ncmlkKXQ9TWF0aC5taW4odGhpcy5fdmlydHVhbENvdW50LHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgrdGhpcy5fZXN0Um93c0luVmlldyp0aGlzLl9pdGVtc1BlclJvdy0xKTtlbHNle3ZhciBlPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKG4saSl7ZTx0aGlzLl9zY3JvbGxCb3R0b20mJih0PWkpLGUrPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChuKX0pKX10aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPXR9cmV0dXJuIHR9LGdldCBfZGVmYXVsdFNjcm9sbFRhcmdldCgpe3JldHVybiB0aGlzfSxnZXQgX3ZpcnR1YWxSb3dDb3VudCgpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fdmlydHVhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KX0sZ2V0IF9lc3RSb3dzSW5WaWV3KCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLl92aWV3cG9ydEhlaWdodC90aGlzLl9yb3dIZWlnaHQpfSxnZXQgX3BoeXNpY2FsUm93cygpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fcGh5c2ljYWxDb3VudC90aGlzLl9pdGVtc1BlclJvdyl9LGdldCBfc2Nyb2xsT2Zmc2V0KCl7cmV0dXJuIHRoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcCt0aGlzLnNjcm9sbE9mZnNldH0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9kaWRGb2N1cy5iaW5kKHRoaXMpLCEwKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLF90KSx0aGlzLmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIiksdGhpcy5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMudW5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpLHRoaXMudW5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxfc2V0T3ZlcmZsb3c6ZnVuY3Rpb24odCl7dGhpcy5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZz10PT09dGhpcz8idG91Y2giOiIiLHRoaXMuc3R5bGUub3ZlcmZsb3dZPXQ9PT10aGlzPyJhdXRvIjoiIix0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLF90KX0sdXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyk7dGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wPXRoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcz8wOnBhcnNlSW50KHRbInBhZGRpbmctdG9wIl0sMTApLHRoaXMuX2lzUlRMPUJvb2xlYW4oInJ0bCI9PT10LmRpcmVjdGlvbiksdGhpcy5fdmlld3BvcnRXaWR0aD10aGlzLiQuaXRlbXMub2Zmc2V0V2lkdGgsdGhpcy5fdmlld3BvcnRIZWlnaHQ9dGhpcy5fc2Nyb2xsVGFyZ2V0SGVpZ2h0LHRoaXMuZ3JpZCYmdGhpcy5fdXBkYXRlR3JpZE1ldHJpY3MoKX0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgdD1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuX21heFNjcm9sbFRvcCx0aGlzLl9zY3JvbGxUb3ApKSxlPXQtdGhpcy5fc2Nyb2xsUG9zaXRpb24sbj1lPj0wO2lmKHRoaXMuX3Njcm9sbFBvc2l0aW9uPXQsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsTWF0aC5hYnMoZSk+dGhpcy5fcGh5c2ljYWxTaXplJiZ0aGlzLl9waHlzaWNhbFNpemU+MCl7ZS09dGhpcy5fc2Nyb2xsT2Zmc2V0O3ZhciBpPU1hdGgucm91bmQoZS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpKnRoaXMuX2l0ZW1zUGVyUm93O3RoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQraSx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQraSx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLm1pbihNYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLHRoaXMuX3Njcm9sbFBvc2l0aW9uKSx0aGlzLl91cGRhdGUoKX1lbHNlIGlmKHRoaXMuX3BoeXNpY2FsQ291bnQ+MCl7dmFyIHI9dGhpcy5fZ2V0UmV1c2FibGVzKG4pO24/KHRoaXMuX3BoeXNpY2FsVG9wPXIucGh5c2ljYWxUb3AsdGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtyLmluZGV4ZXMubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtyLmluZGV4ZXMubGVuZ3RoKToodGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydC1yLmluZGV4ZXMubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydC1yLmluZGV4ZXMubGVuZ3RoKSx0aGlzLl91cGRhdGUoci5pbmRleGVzLG4/bnVsbDpyLmluZGV4ZXMpLHRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcywwKSx2dCl9fSxfZ2V0UmV1c2FibGVzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyPVtdLG89dGhpcy5faGlkZGVuQ29udGVudFNpemUqdGhpcy5fcmF0aW8sYT10aGlzLl92aXJ0dWFsU3RhcnQscz10aGlzLl92aXJ0dWFsRW5kLGw9dGhpcy5fcGh5c2ljYWxDb3VudCxjPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCx1PXRoaXMuX3Njcm9sbFBvc2l0aW9uLGg9dGhpcy5fc2Nyb2xsQm90dG9tO2Zvcih0PyhlPXRoaXMuX3BoeXNpY2FsU3RhcnQsbj11LWMpOihlPXRoaXMuX3BoeXNpY2FsRW5kLG49dGhpcy5fcGh5c2ljYWxCb3R0b20rdGhpcy5fc2Nyb2xsT2Zmc2V0LWgpO24tPWk9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KGUpLCEoci5sZW5ndGg+PWx8fG48PW8pOylpZih0KXtpZihzK3IubGVuZ3RoKzE+PXRoaXMuX3ZpcnR1YWxDb3VudClicmVhaztpZihjK2k+PXUtdGhpcy5fc2Nyb2xsT2Zmc2V0KWJyZWFrO3IucHVzaChlKSxjKz1pLGU9KGUrMSklbH1lbHNle2lmKGEtci5sZW5ndGg8PTApYnJlYWs7aWYoYyt0aGlzLl9waHlzaWNhbFNpemUtaTw9aClicmVhaztyLnB1c2goZSksYy09aSxlPTA9PT1lP2wtMTplLTF9cmV0dXJue2luZGV4ZXM6cixwaHlzaWNhbFRvcDpjLXRoaXMuX3Njcm9sbE9mZnNldH19LF91cGRhdGU6ZnVuY3Rpb24odCxlKXtpZighKHQmJjA9PT10Lmxlbmd0aHx8MD09PXRoaXMuX3BoeXNpY2FsQ291bnQpKXtpZih0aGlzLl9tYW5hZ2VGb2N1cygpLHRoaXMuX2Fzc2lnbk1vZGVscyh0KSx0aGlzLl91cGRhdGVNZXRyaWNzKHQpLGUpZm9yKDtlLmxlbmd0aDspe3ZhciBuPWUucG9wKCk7dGhpcy5fcGh5c2ljYWxUb3AtPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChuKX10aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9fSxfY3JlYXRlUG9vbDpmdW5jdGlvbih0KXt2YXIgZSxuO3RoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCk7dmFyIGk9bmV3IEFycmF5KHQpO2ZvcihlPTA7ZTx0O2UrKyluPXRoaXMuc3RhbXAobnVsbCksaVtlXT1uLnJvb3QucXVlcnlTZWxlY3RvcigiKiIpLHRoaXMuX2l0ZW1zUGFyZW50LmFwcGVuZENoaWxkKG4ucm9vdCk7cmV0dXJuIGl9LF9pc0NsaWVudEZ1bGw6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbEJvdHRvbS0xPj10aGlzLl9zY3JvbGxCb3R0b20mJnRoaXMuX3BoeXNpY2FsVG9wPD10aGlzLl9zY3JvbGxQb3NpdGlvbn0sX2luY3JlYXNlUG9vbElmTmVlZGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NsYW1wKHRoaXMuX3BoeXNpY2FsQ291bnQrdCwzLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQpO2lmKGU9dGhpcy5fY29udmVydEluZGV4VG9Db21wbGV0ZVJvdyhlKSx0aGlzLmdyaWQpe3ZhciBuPWUldGhpcy5faXRlbXNQZXJSb3c7biYmZS1uPD10aGlzLl9waHlzaWNhbENvdW50JiYoZSs9dGhpcy5faXRlbXNQZXJSb3cpLGUtPW59dmFyIGk9ZS10aGlzLl9waHlzaWNhbENvdW50LHI9TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KTtpZighKGk8MCkpe2lmKGk+MCl7dmFyIG89d2luZG93LnBlcmZvcm1hbmNlLm5vdygpO1tdLnB1c2guYXBwbHkodGhpcy5fcGh5c2ljYWxJdGVtcyx0aGlzLl9jcmVhdGVQb29sKGkpKTtmb3IodmFyIGE9MDthPGk7YSsrKXRoaXMuX3BoeXNpY2FsU2l6ZXMucHVzaCgwKTt0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnQraSx0aGlzLl9waHlzaWNhbFN0YXJ0PnRoaXMuX3BoeXNpY2FsRW5kJiZ0aGlzLl9pc0luZGV4UmVuZGVyZWQodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCkmJnRoaXMuX2dldFBoeXNpY2FsSW5kZXgodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCk8dGhpcy5fcGh5c2ljYWxFbmQmJih0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQraSksdGhpcy5fdXBkYXRlKCksdGhpcy5fdGVtcGxhdGVDb3N0PSh3aW5kb3cucGVyZm9ybWFuY2Uubm93KCktbykvaSxyPU1hdGgucm91bmQoLjUqdGhpcy5fcGh5c2ljYWxDb3VudCl9dGhpcy5fdmlydHVhbEVuZD49dGhpcy5fdmlydHVhbENvdW50LTF8fDA9PT1yfHwodGhpcy5faXNDbGllbnRGdWxsKCk/dGhpcy5fcGh5c2ljYWxTaXplPHRoaXMuX29wdFBoeXNpY2FsU2l6ZSYmdGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLHRoaXMuX2NsYW1wKE1hdGgucm91bmQoNTAvdGhpcy5fdGVtcGxhdGVDb3N0KSwxLHIpKSx5dCk6dGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLHIpLHZ0KSl9fSxfcmVuZGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9pc1Zpc2libGUpaWYoMCE9PXRoaXMuX3BoeXNpY2FsQ291bnQpe3ZhciB0PXRoaXMuX2dldFJldXNhYmxlcyghMCk7dGhpcy5fcGh5c2ljYWxUb3A9dC5waHlzaWNhbFRvcCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K3QuaW5kZXhlcy5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K3QuaW5kZXhlcy5sZW5ndGgsdGhpcy5fdXBkYXRlKHQuaW5kZXhlcyksdGhpcy5fdXBkYXRlKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCl9ZWxzZSB0aGlzLl92aXJ0dWFsQ291bnQ+MCYmKHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMykpfSxfZW5zdXJlVGVtcGxhdGl6ZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5jdG9yKXt0aGlzLl91c2VyVGVtcGxhdGU9dGhpcy5xdWVyeUVmZmVjdGl2ZUNoaWxkcmVuKCJ0ZW1wbGF0ZSIpLHRoaXMuX3VzZXJUZW1wbGF0ZXx8Y29uc29sZS53YXJuKCJpcm9uLWxpc3QgcmVxdWlyZXMgYSB0ZW1wbGF0ZSB0byBiZSBwcm92aWRlZCBpbiBsaWdodC1kb20iKTt2YXIgdD17X19rZXlfXzohMH07dFt0aGlzLmFzXT0hMCx0W3RoaXMuaW5kZXhBc109ITAsdFt0aGlzLnNlbGVjdGVkQXNdPSEwLHQudGFiSW5kZXg9ITAsdGhpcy5faW5zdGFuY2VQcm9wcz10LHRoaXMudGVtcGxhdGl6ZSh0aGlzLl91c2VyVGVtcGxhdGUsdGhpcy5tdXRhYmxlRGF0YSl9fSxfZ3JpZENoYW5nZWQ6ZnVuY3Rpb24odCxlKXt2b2lkIDAhPT1lJiYodGhpcy5ub3RpZnlSZXNpemUoKSxXaSgpLHQmJnRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCkpfSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe2lmKCJpdGVtcyI9PT10LnBhdGgpdGhpcy5fdmlydHVhbFN0YXJ0PTAsdGhpcy5fcGh5c2ljYWxUb3A9MCx0aGlzLl92aXJ0dWFsQ291bnQ9dGhpcy5pdGVtcz90aGlzLml0ZW1zLmxlbmd0aDowLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXk9e30sdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50fHwwLHRoaXMuX3BoeXNpY2FsSXRlbXM9dGhpcy5fcGh5c2ljYWxJdGVtc3x8W10sdGhpcy5fcGh5c2ljYWxTaXplcz10aGlzLl9waHlzaWNhbFNpemVzfHxbXSx0aGlzLl9waHlzaWNhbFN0YXJ0PTAsdGhpcy5fc2Nyb2xsVG9wPnRoaXMuX3Njcm9sbE9mZnNldCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbigwKSx0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpO2Vsc2UgaWYoIml0ZW1zLnNwbGljZXMiPT09dC5wYXRoKXtpZih0aGlzLl9hZGp1c3RWaXJ0dWFsSW5kZXgodC52YWx1ZS5pbmRleFNwbGljZXMpLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdC52YWx1ZS5pbmRleFNwbGljZXMuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYWRkZWRDb3VudD4wfHx0LnJlbW92ZWQubGVuZ3RoPjB9KSkpe3ZhciBlPXRoaXMuX2dldEFjdGl2ZUVsZW1lbnQoKTt0aGlzLmNvbnRhaW5zKGUpJiZlLmJsdXIoKX12YXIgbj10LnZhbHVlLmluZGV4U3BsaWNlcy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbmRleCt0LmFkZGVkQ291bnQ+PXRoaXMuX3ZpcnR1YWxTdGFydCYmdC5pbmRleDw9dGhpcy5fdmlydHVhbEVuZH0pLHRoaXMpO3RoaXMuX2lzQ2xpZW50RnVsbCgpJiYhbnx8dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixfdCl9ZWxzZSJpdGVtcy5sZW5ndGgiIT09dC5wYXRoJiZ0aGlzLl9mb3J3YXJkSXRlbVBhdGgodC5wYXRoLHQudmFsdWUpfSxfZm9yd2FyZEl0ZW1QYXRoOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG89KHQ9dC5zbGljZSg2KSkuaW5kZXhPZigiLiIpOy0xPT09byYmKG89dC5sZW5ndGgpO3ZhciBhPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtKSxzPXBhcnNlSW50KHQuc3Vic3RyaW5nKDAsbyksMTApOyhuPXRoaXMuX2lzSW5kZXhSZW5kZXJlZChzKSk/KGk9dGhpcy5fZ2V0UGh5c2ljYWxJbmRleChzKSxyPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbaV0pKTphJiYocj1hKSxyJiZyW3RoaXMuaW5kZXhBc109PT1zJiYodD10LnN1YnN0cmluZyhvKzEpLHIuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0PXRoaXMuYXMrKHQ/Ii4iK3Q6IiIpLGUsITEsITApLHIuX2ZsdXNoUHJvcGVydGllcyYmci5fZmx1c2hQcm9wZXJ0aWVzKCksbiYmKHRoaXMuX3VwZGF0ZU1ldHJpY3MoW2ldKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCkpKX0sX2FkanVzdFZpcnR1YWxJbmRleDpmdW5jdGlvbih0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKHQucmVtb3ZlZC5mb3JFYWNoKHRoaXMuX3JlbW92ZUl0ZW0sdGhpcyksdC5pbmRleDx0aGlzLl92aXJ0dWFsU3RhcnQpe3ZhciBlPU1hdGgubWF4KHQuYWRkZWRDb3VudC10LnJlbW92ZWQubGVuZ3RoLHQuaW5kZXgtdGhpcy5fdmlydHVhbFN0YXJ0KTt0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2UsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD49MCYmKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCtlKX19KSx0aGlzKX0sX3JlbW92ZUl0ZW06ZnVuY3Rpb24odCl7dGhpcy4kLnNlbGVjdG9yLmRlc2VsZWN0KHQpLHRoaXMuX2ZvY3VzZWRJdGVtJiZ0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9mb2N1c2VkSXRlbSlbdGhpcy5hc109PT10JiZ0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpfSxfaXRlcmF0ZUl0ZW1zOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG87aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgmJmUpe2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspaWYoaT10aGlzLl9jb21wdXRlVmlkeChuPWVbb10pLG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfWVsc2V7Zm9yKG49dGhpcy5fcGh5c2ljYWxTdGFydCxpPXRoaXMuX3ZpcnR1YWxTdGFydDtuPHRoaXMuX3BoeXNpY2FsQ291bnQ7bisrLGkrKylpZihudWxsIT0ocj10LmNhbGwodGhpcyxuLGkpKSlyZXR1cm4gcjtmb3Iobj0wO248dGhpcy5fcGh5c2ljYWxTdGFydDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfX0sX2NvbXB1dGVWaWR4OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl9waHlzaWNhbFN0YXJ0P3RoaXMuX3ZpcnR1YWxTdGFydCsodC10aGlzLl9waHlzaWNhbFN0YXJ0KTp0aGlzLl92aXJ0dWFsU3RhcnQrKHRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fcGh5c2ljYWxTdGFydCkrdH0sX2Fzc2lnbk1vZGVsczpmdW5jdGlvbih0KXt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fcGh5c2ljYWxJdGVtc1t0XSxpPXRoaXMuaXRlbXMmJnRoaXMuaXRlbXNbZV07aWYobnVsbCE9aSl7dmFyIHI9dGhpcy5tb2RlbEZvckVsZW1lbnQobik7ci5fX2tleV9fPW51bGwsdGhpcy5fZm9yd2FyZFByb3BlcnR5KHIsdGhpcy5hcyxpKSx0aGlzLl9mb3J3YXJkUHJvcGVydHkocix0aGlzLnNlbGVjdGVkQXMsdGhpcy4kLnNlbGVjdG9yLmlzU2VsZWN0ZWQoaSkpLHRoaXMuX2ZvcndhcmRQcm9wZXJ0eShyLHRoaXMuaW5kZXhBcyxlKSx0aGlzLl9mb3J3YXJkUHJvcGVydHkociwidGFiSW5kZXgiLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9PT1lPzA6LTEpLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXlbci5fX2tleV9fXT10LHIuX2ZsdXNoUHJvcGVydGllcyYmci5fZmx1c2hQcm9wZXJ0aWVzKCEwKSxuLnJlbW92ZUF0dHJpYnV0ZSgiaGlkZGVuIil9ZWxzZSBuLnNldEF0dHJpYnV0ZSgiaGlkZGVuIiwiIil9KSx0KX0sX3VwZGF0ZU1ldHJpY3M6ZnVuY3Rpb24odCl7V2koKTt2YXIgZT0wLG49MCxpPXRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50LHI9dGhpcy5fcGh5c2ljYWxBdmVyYWdlO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCxpKXtuKz10aGlzLl9waHlzaWNhbFNpemVzW3RdLHRoaXMuX3BoeXNpY2FsU2l6ZXNbdF09dGhpcy5fcGh5c2ljYWxJdGVtc1t0XS5vZmZzZXRIZWlnaHQsZSs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XT8xOjB9KSx0KSx0aGlzLmdyaWQ/KHRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxTaXplPU1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9yb3dIZWlnaHQpOihuPTE9PT10aGlzLl9pdGVtc1BlclJvdz9uOk1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9yb3dIZWlnaHQsdGhpcy5fcGh5c2ljYWxTaXplPXRoaXMuX3BoeXNpY2FsU2l6ZStlLW4sdGhpcy5faXRlbXNQZXJSb3c9MSksdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQhPT1pJiYodGhpcy5fcGh5c2ljYWxBdmVyYWdlPU1hdGgucm91bmQoKHIqaStlKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCkpfSxfdXBkYXRlR3JpZE1ldHJpY3M6ZnVuY3Rpb24oKXt0aGlzLl9pdGVtV2lkdGg9dGhpcy5fcGh5c2ljYWxDb3VudD4wP3RoaXMuX3BoeXNpY2FsSXRlbXNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg6MjAwLHRoaXMuX3Jvd0hlaWdodD10aGlzLl9waHlzaWNhbENvdW50PjA/dGhpcy5fcGh5c2ljYWxJdGVtc1swXS5vZmZzZXRIZWlnaHQ6MjAwLHRoaXMuX2l0ZW1zUGVyUm93PXRoaXMuX2l0ZW1XaWR0aD9NYXRoLmZsb29yKHRoaXMuX3ZpZXdwb3J0V2lkdGgvdGhpcy5faXRlbVdpZHRoKTp0aGlzLl9pdGVtc1BlclJvd30sX3Bvc2l0aW9uSXRlbXM6ZnVuY3Rpb24oKXt0aGlzLl9hZGp1c3RTY3JvbGxQb3NpdGlvbigpO3ZhciB0PXRoaXMuX3BoeXNpY2FsVG9wO2lmKHRoaXMuZ3JpZCl7dmFyIGU9KHRoaXMuX3ZpZXdwb3J0V2lkdGgtdGhpcy5faXRlbXNQZXJSb3cqdGhpcy5faXRlbVdpZHRoKS8yO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24obixpKXt2YXIgcj1NYXRoLmZsb29yKGkldGhpcy5faXRlbXNQZXJSb3cqdGhpcy5faXRlbVdpZHRoK2UpO3RoaXMuX2lzUlRMJiYocio9LTEpLHRoaXMudHJhbnNsYXRlM2QocisicHgiLHQrInB4IiwwLHRoaXMuX3BoeXNpY2FsSXRlbXNbbl0pLHRoaXMuX3Nob3VsZFJlbmRlck5leHRSb3coaSkmJih0Kz10aGlzLl9yb3dIZWlnaHQpfSkpfWVsc2V7Y29uc3QgZT1bXTt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKG4saSl7Y29uc3Qgcj10aGlzLl9waHlzaWNhbEl0ZW1zW25dO3RoaXMudHJhbnNsYXRlM2QoMCx0KyJweCIsMCxyKSx0Kz10aGlzLl9waHlzaWNhbFNpemVzW25dO2NvbnN0IG89ci5pZDtvJiZlLnB1c2gobyl9KSksZS5sZW5ndGgmJnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLW93bnMiLGUuam9pbigiICIpKX19LF9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ3JpZD90aGlzLl9jb21wdXRlVmlkeCh0KSV0aGlzLl9pdGVtc1BlclJvdyE9dGhpcy5faXRlbXNQZXJSb3ctMT8wOnRoaXMuX3Jvd0hlaWdodDp0aGlzLl9waHlzaWNhbFNpemVzW3RdfSxfc2hvdWxkUmVuZGVyTmV4dFJvdzpmdW5jdGlvbih0KXtyZXR1cm4gdCV0aGlzLl9pdGVtc1BlclJvdz09dGhpcy5faXRlbXNQZXJSb3ctMX0sX2FkanVzdFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9MD09PXRoaXMuX3ZpcnR1YWxTdGFydD90aGlzLl9waHlzaWNhbFRvcDpNYXRoLm1pbih0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl9waHlzaWNhbFRvcCwwKTtpZigwIT09dCl7dGhpcy5fcGh5c2ljYWxUb3A9dGhpcy5fcGh5c2ljYWxUb3AtdDt2YXIgZT10aGlzLl9zY3JvbGxQb3NpdGlvbjshWm8mJmU+MCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbihlLXQpfX0sX3Jlc2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxUYXJnZXQmJnQ+PTAmJih0aGlzLl9zY3JvbGxUb3A9dCx0aGlzLl9zY3JvbGxQb3NpdGlvbj10aGlzLl9zY3JvbGxUb3ApfSxfdXBkYXRlU2Nyb2xsZXJTaXplOmZ1bmN0aW9uKHQpe3RoaXMuX2VzdFNjcm9sbEhlaWdodD10aGlzLmdyaWQ/dGhpcy5fdmlydHVhbFJvd0NvdW50KnRoaXMuX3Jvd0hlaWdodDp0aGlzLl9waHlzaWNhbEJvdHRvbStNYXRoLm1heCh0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQsMCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLCgodD0odD0odD10fHwwPT09dGhpcy5fc2Nyb2xsSGVpZ2h0KXx8dGhpcy5fc2Nyb2xsUG9zaXRpb24+PXRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9waHlzaWNhbFNpemUpfHx0aGlzLmdyaWQmJnRoaXMuJC5pdGVtcy5zdHlsZS5oZWlnaHQ8dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KXx8TWF0aC5hYnModGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3Njcm9sbEhlaWdodCk+PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0KSYmKHRoaXMuJC5pdGVtcy5zdHlsZS5oZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KyJweCIsdGhpcy5fc2Nyb2xsSGVpZ2h0PXRoaXMuX2VzdFNjcm9sbEhlaWdodCl9LHNjcm9sbFRvSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY3JvbGxUb0luZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHNjcm9sbFRvSW5kZXg6ZnVuY3Rpb24odCl7aWYoISgibnVtYmVyIiE9dHlwZW9mIHR8fHQ8MHx8dD50aGlzLml0ZW1zLmxlbmd0aC0xKSYmKFdpKCksMCE9PXRoaXMuX3BoeXNpY2FsQ291bnQpKXt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl92aXJ0dWFsQ291bnQtMSksKCF0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHQ+PXRoaXMuX21heFZpcnR1YWxTdGFydCkmJih0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5ncmlkP3QtMip0aGlzLl9pdGVtc1BlclJvdzp0LTEpLHRoaXMuX21hbmFnZUZvY3VzKCksdGhpcy5fYXNzaWduTW9kZWxzKCksdGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3BoeXNpY2FsVG9wPU1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2U7Zm9yKHZhciBlPXRoaXMuX3BoeXNpY2FsU3RhcnQsbj10aGlzLl92aXJ0dWFsU3RhcnQsaT0wLHI9dGhpcy5faGlkZGVuQ29udGVudFNpemU7bjx0JiZpPD1yOylpKz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoZSksZT0oZSsxKSV0aGlzLl9waHlzaWNhbENvdW50LG4rKzt0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoITApLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCtpKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbH19LF9yZXNldEF2ZXJhZ2U6ZnVuY3Rpb24oKXt0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9MCx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudD0wfSxfcmVzaXplSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIiwoZnVuY3Rpb24oKXt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9pc1Zpc2libGU/KHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMCksdGhpcy5fcmVzZXRBdmVyYWdlKCksdGhpcy5fcmVuZGVyKCkpOnRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEpfSksX3QpfSxzZWxlY3RJdGVtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdEluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHNlbGVjdEluZGV4OmZ1bmN0aW9uKHQpe2lmKCEodDwwfHx0Pj10aGlzLl92aXJ0dWFsQ291bnQpKXtpZighdGhpcy5tdWx0aVNlbGVjdGlvbiYmdGhpcy5zZWxlY3RlZEl0ZW0mJnRoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl9pc0luZGV4UmVuZGVyZWQodCkpe3ZhciBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0KV0pO2UmJihlW3RoaXMuc2VsZWN0ZWRBc109ITApLHRoaXMudXBkYXRlU2l6ZUZvckluZGV4KHQpfXRoaXMuJC5zZWxlY3Rvci5zZWxlY3RJbmRleCh0KX19LGRlc2VsZWN0SXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXNlbGVjdEluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LGRlc2VsZWN0SW5kZXg6ZnVuY3Rpb24odCl7aWYoISh0PDB8fHQ+PXRoaXMuX3ZpcnR1YWxDb3VudCkpe2lmKHRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0KSl0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgodCldKVt0aGlzLnNlbGVjdGVkQXNdPSExLHRoaXMudXBkYXRlU2l6ZUZvckluZGV4KHQpO3RoaXMuJC5zZWxlY3Rvci5kZXNlbGVjdEluZGV4KHQpfX0sdG9nZ2xlU2VsZWN0aW9uRm9ySXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50b2dnbGVTZWxlY3Rpb25Gb3JJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfSx0b2dnbGVTZWxlY3Rpb25Gb3JJbmRleDpmdW5jdGlvbih0KXsodGhpcy4kLnNlbGVjdG9yLmlzSW5kZXhTZWxlY3RlZD90aGlzLiQuc2VsZWN0b3IuaXNJbmRleFNlbGVjdGVkKHQpOnRoaXMuJC5zZWxlY3Rvci5pc1NlbGVjdGVkKHRoaXMuaXRlbXNbdF0pKT90aGlzLmRlc2VsZWN0SW5kZXgodCk6dGhpcy5zZWxlY3RJbmRleCh0KX0sY2xlYXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsZSl7dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t0XSlbdGhpcy5zZWxlY3RlZEFzXT0hMX0pKSx0aGlzLiQuc2VsZWN0b3IuY2xlYXJTZWxlY3Rpb24oKX0sX3NlbGVjdGlvbkVuYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpeyh0P3RoaXMubGlzdGVuOnRoaXMudW5saXN0ZW4pLmNhbGwodGhpcyx0aGlzLCJ0YXAiLCJfc2VsZWN0aW9uSGFuZGxlciIpfSxfc2VsZWN0aW9uSGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0LnRhcmdldCk7aWYoZSl7dmFyIG4saSxyPWVyKHQpLnBhdGhbMF0sbz10aGlzLl9nZXRBY3RpdmVFbGVtZW50KCksYT10aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgoZVt0aGlzLmluZGV4QXNdKV07ImlucHV0IiE9PXIubG9jYWxOYW1lJiYiYnV0dG9uIiE9PXIubG9jYWxOYW1lJiYic2VsZWN0IiE9PXIubG9jYWxOYW1lJiYobj1lLnRhYkluZGV4LGUudGFiSW5kZXg9UW8saT1vP28udGFiSW5kZXg6LTEsZS50YWJJbmRleD1uLG8mJmEhPT1vJiZhLmNvbnRhaW5zKG8pJiZpIT09UW98fHRoaXMudG9nZ2xlU2VsZWN0aW9uRm9ySXRlbShlW3RoaXMuYXNdKSl9fSxfbXVsdGlTZWxlY3Rpb25DaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLiQuc2VsZWN0b3IubXVsdGk9dH0sdXBkYXRlU2l6ZUZvckl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlU2l6ZUZvckluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHVwZGF0ZVNpemVGb3JJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faXNJbmRleFJlbmRlcmVkKHQpPyh0aGlzLl91cGRhdGVNZXRyaWNzKFt0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHQpXSksdGhpcy5fcG9zaXRpb25JdGVtcygpLG51bGwpOm51bGx9LF9tYW5hZ2VGb2N1czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg7dD49MCYmdDx0aGlzLl92aXJ0dWFsQ291bnQ/dGhpcy5faXNJbmRleFJlbmRlcmVkKHQpP3RoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpOnRoaXMuX2NyZWF0ZUZvY3VzQmFja2ZpbGxJdGVtKCk6dGhpcy5fdmlydHVhbENvdW50PjAmJnRoaXMuX3BoeXNpY2FsQ291bnQ+MCYmKHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX3BoeXNpY2FsU3RhcnQsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD10aGlzLl92aXJ0dWFsU3RhcnQsdGhpcy5fZm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9waHlzaWNhbFN0YXJ0XSl9LF9jb252ZXJ0SW5kZXhUb0NvbXBsZXRlUm93OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pdGVtc1BlclJvdz10aGlzLl9pdGVtc1BlclJvd3x8MSx0aGlzLmdyaWQ/TWF0aC5jZWlsKHQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX2l0ZW1zUGVyUm93OnR9LF9pc0luZGV4UmVuZGVyZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3ZpcnR1YWxTdGFydCYmdDw9dGhpcy5fdmlydHVhbEVuZH0sX2lzSW5kZXhWaXNpYmxlOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLmZpcnN0VmlzaWJsZUluZGV4JiZ0PD10aGlzLmxhc3RWaXNpYmxlSW5kZXh9LF9nZXRQaHlzaWNhbEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0Kyh0LXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnR9LGZvY3VzSXRlbTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c1BoeXNpY2FsSXRlbSh0KX0sX2ZvY3VzUGh5c2ljYWxJdGVtOmZ1bmN0aW9uKHQpe2lmKCEodDwwfHx0Pj10aGlzLl92aXJ0dWFsQ291bnQpKXt0aGlzLl9yZXN0b3JlRm9jdXNlZEl0ZW0oKSx0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHRoaXMuc2Nyb2xsVG9JbmRleCh0KTt2YXIgZSxuPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0KV0saT10aGlzLm1vZGVsRm9yRWxlbWVudChuKTtpLnRhYkluZGV4PVFvLG4udGFiSW5kZXg9PT1RbyYmKGU9biksZXx8KGU9ZXIobikucXVlcnlTZWxlY3RvcignW3RhYmluZGV4PSItMTAwIl0nKSksaS50YWJJbmRleD0wLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9dCxlJiZlLmZvY3VzKCl9fSxfcmVtb3ZlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmdGhpcy5faXRlbXNQYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtPW51bGwsdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09bnVsbCx0aGlzLl9mb2N1c2VkSXRlbT1udWxsLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9LTEsdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9LTF9LF9jcmVhdGVGb2N1c0JhY2tmaWxsSXRlbTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4O2lmKCEodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW18fHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg8MCkpe2lmKCF0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbSl7dmFyIGU9dGhpcy5zdGFtcChudWxsKTt0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1lLnJvb3QucXVlcnlTZWxlY3RvcigiKiIpLHRoaXMuX2l0ZW1zUGFyZW50LmFwcGVuZENoaWxkKGUucm9vdCl9dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0XSx0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSkudGFiSW5kZXg9MCx0aGlzLl9waHlzaWNhbEl0ZW1zW3RdPXRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtLHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXQsdGhpcy50cmFuc2xhdGUzZCgwLEpvLDAsdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pfX0sX3Jlc3RvcmVGb2N1c2VkSXRlbTpmdW5jdGlvbigpe2lmKHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiYhKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg8MCkpe3RoaXMuX2Fzc2lnbk1vZGVscygpO3ZhciB0PXRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX2dldFBoeXNpY2FsSW5kZXgodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCksZT10aGlzLl9waHlzaWNhbEl0ZW1zW3RdO2lmKGUpe3ZhciBuPXRoaXMubW9kZWxGb3JFbGVtZW50KGUpLGk9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pO25bdGhpcy5hc109PT1pW3RoaXMuYXNdPyh0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1lLG4udGFiSW5kZXg9LTEsdGhpcy5fcGh5c2ljYWxJdGVtc1t0XT10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLnRyYW5zbGF0ZTNkKDAsSm8sMCx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbSkpOih0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtPW51bGwpLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtPW51bGx9fX0sX2RpZEZvY3VzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHQudGFyZ2V0KSxuPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX2ZvY3VzZWRJdGVtKSxpPW51bGwhPT10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSxyPXRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg7ZSYmKG49PT1lP3RoaXMuX2lzSW5kZXhWaXNpYmxlKHIpfHx0aGlzLnNjcm9sbFRvSW5kZXgocik6KHRoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpLG4mJihuLnRhYkluZGV4PS0xKSxlLnRhYkluZGV4PTAsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD1yPWVbdGhpcy5pbmRleEFzXSx0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleD10aGlzLl9nZXRQaHlzaWNhbEluZGV4KHIpLHRoaXMuX2ZvY3VzZWRJdGVtPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXhdLGkmJiF0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmdGhpcy5fdXBkYXRlKCkpKX0sX2tleWRvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgNDA6dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDx0aGlzLl92aXJ0dWFsQ291bnQtMSYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzOTp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPy0xOjEpKTticmVhaztjYXNlIDM4OnRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg+MCYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgtKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPzE6LTEpKTticmVhaztjYXNlIDEzOnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpLHRoaXMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5fc2VsZWN0aW9uSGFuZGxlcih0KX19LF9jbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LF9kZWJvdW5jZTpmdW5jdGlvbih0LGUsbil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPUluLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbixlLmJpbmQodGhpcykpLFJuKHRoaXMuX2RlYm91bmNlcnNbdF0pfSxfZm9yd2FyZFByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXt0Ll9zZXRQZW5kaW5nUHJvcGVydHkoZSxuKX0sX2ZvcndhcmRIb3N0UHJvcFYyOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikuZm9yd2FyZEhvc3RQcm9wKHQsZSl9KSx0aGlzKX0sX25vdGlmeUluc3RhbmNlUHJvcFYyOmZ1bmN0aW9uKHQsZSxuKXtpZihRKHRoaXMuYXMsZSkpe3ZhciBpPXRbdGhpcy5pbmRleEFzXTtlPT10aGlzLmFzJiYodGhpcy5pdGVtc1tpXT1uKSx0aGlzLm5vdGlmeVBhdGgoSih0aGlzLmFzLCJpdGVtcy4iK2ksZSksbil9fSxfZ2V0U3RhbXBlZENoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsSXRlbXN9LF9mb3J3YXJkSW5zdGFuY2VQYXRoOmZ1bmN0aW9uKHQsZSxuKXswPT09ZS5pbmRleE9mKHRoaXMuYXMrIi4iKSYmdGhpcy5ub3RpZnlQYXRoKCJpdGVtcy4iK3QuX19rZXlfXysiLiIrZS5zbGljZSh0aGlzLmFzLmxlbmd0aCsxKSxuKX0sX2ZvcndhcmRQYXJlbnRQYXRoOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikubm90aWZ5UGF0aCh0LGUpfSksdGhpcyl9LF9mb3J3YXJkUGFyZW50UHJvcDpmdW5jdGlvbih0LGUpeyh0aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSkuY29uY2F0KFt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbV0pLmZvckVhY2goKGZ1bmN0aW9uKG4pe24mJih0aGlzLm1vZGVsRm9yRWxlbWVudChuKVt0XT1lKX0pLHRoaXMpfSxfZ2V0QWN0aXZlRWxlbWVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2l0ZW1zUGFyZW50Lm5vZGUuZG9tSG9zdDtyZXR1cm4gZXIodD90LnJvb3Q6ZG9jdW1lbnQpLmFjdGl2ZUVsZW1lbnR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzcyB0YXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnNlbGVjdGlvbj1bXSx0aGlzLnNlbGVjdENhbGxiYWNrPXR9Z2V0KCl7cmV0dXJuIHRoaXMubXVsdGk/dGhpcy5zZWxlY3Rpb24uc2xpY2UoKTp0aGlzLnNlbGVjdGlvblswXX1jbGVhcih0KXt0aGlzLnNlbGVjdGlvbi5zbGljZSgpLmZvckVhY2goKGZ1bmN0aW9uKGUpeyghdHx8dC5pbmRleE9mKGUpPDApJiZ0aGlzLnNldEl0ZW1TZWxlY3RlZChlLCExKX0pLHRoaXMpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmluZGV4T2YodCk+PTB9c2V0SXRlbVNlbGVjdGVkKHQsZSl7aWYobnVsbCE9dCYmZSE9PXRoaXMuaXNTZWxlY3RlZCh0KSl7aWYoZSl0aGlzLnNlbGVjdGlvbi5wdXNoKHQpO2Vsc2V7dmFyIG49dGhpcy5zZWxlY3Rpb24uaW5kZXhPZih0KTtuPj0wJiZ0aGlzLnNlbGVjdGlvbi5zcGxpY2UobiwxKX10aGlzLnNlbGVjdENhbGxiYWNrJiZ0aGlzLnNlbGVjdENhbGxiYWNrKHQsZSl9fXNlbGVjdCh0KXt0aGlzLm11bHRpP3RoaXMudG9nZ2xlKHQpOnRoaXMuZ2V0KCkhPT10JiYodGhpcy5zZXRJdGVtU2VsZWN0ZWQodGhpcy5nZXQoKSwhMSksdGhpcy5zZXRJdGVtU2VsZWN0ZWQodCwhMCkpfXRvZ2dsZSh0KXt0aGlzLnNldEl0ZW1TZWxlY3RlZCh0LCF0aGlzLmlzU2VsZWN0ZWQodCkpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgZWE9e3Byb3BlcnRpZXM6e2F0dHJGb3JTZWxlY3RlZDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sc2VsZWN0ZWQ6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LGFjdGl2YXRlRXZlbnQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJ0YXAiLG9ic2VydmVyOiJfYWN0aXZhdGVFdmVudENoYW5nZWQifSxzZWxlY3RhYmxlOlN0cmluZyxzZWxlY3RlZENsYXNzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXJvbi1zZWxlY3RlZCJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxmYWxsYmFja1NlbGVjdGlvbjp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0saXRlbXM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfZXhjbHVkZWRMb2NhbE5hbWVzOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt0ZW1wbGF0ZToxLCJkb20tYmluZCI6MSwiZG9tLWlmIjoxLCJkb20tcmVwZWF0IjoxfX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlQXR0ckZvclNlbGVjdGVkKGF0dHJGb3JTZWxlY3RlZCkiLCJfdXBkYXRlU2VsZWN0ZWQoc2VsZWN0ZWQpIiwiX2NoZWNrRmFsbGJhY2soZmFsbGJhY2tTZWxlY3Rpb24pIl0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2JpbmRGaWx0ZXJJdGVtPXRoaXMuX2ZpbHRlckl0ZW0uYmluZCh0aGlzKSx0aGlzLl9zZWxlY3Rpb249bmV3IHRhKHRoaXMuX2FwcGx5U2VsZWN0aW9uLmJpbmQodGhpcykpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyPXRoaXMuX29ic2VydmVJdGVtcyh0aGlzKSx0aGlzLl9hZGRMaXN0ZW5lcih0aGlzLmFjdGl2YXRlRXZlbnQpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZlcih0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fcmVtb3ZlTGlzdGVuZXIodGhpcy5hY3RpdmF0ZUV2ZW50KX0saW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVtcz90aGlzLml0ZW1zLmluZGV4T2YodCk6LTF9LHNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLnNlbGVjdGVkPXR9LHNlbGVjdFByZXZpb3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT10LTE7dm9pZCAwIT09dGhpcy5zZWxlY3RlZCYmKGU9KE51bWJlcih0aGlzLl92YWx1ZVRvSW5kZXgodGhpcy5zZWxlY3RlZCkpLTErdCkldCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUoZSl9LHNlbGVjdE5leHQ6ZnVuY3Rpb24oKXt2YXIgdD0wO3ZvaWQgMCE9PXRoaXMuc2VsZWN0ZWQmJih0PShOdW1iZXIodGhpcy5fdmFsdWVUb0luZGV4KHRoaXMuc2VsZWN0ZWQpKSsxKSV0aGlzLml0ZW1zLmxlbmd0aCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUodCl9LHNlbGVjdEluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuc2VsZWN0KHRoaXMuX2luZGV4VG9WYWx1ZSh0KSl9LGZvcmNlU3luY2hyb25vdXNJdGVtVXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9vYnNlcnZlci5mbHVzaD90aGlzLl9vYnNlcnZlci5mbHVzaCgpOnRoaXMuX3VwZGF0ZUl0ZW1zKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR9LF9jaGVja0ZhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlU2VsZWN0ZWQoKX0sX2FkZExpc3RlbmVyOmZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHRoaXMsdCwiX2FjdGl2YXRlSGFuZGxlciIpfSxfcmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24odCl7dGhpcy51bmxpc3Rlbih0aGlzLHQsIl9hY3RpdmF0ZUhhbmRsZXIiKX0sX2FjdGl2YXRlRXZlbnRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSksdGhpcy5fYWRkTGlzdGVuZXIodCl9LF91cGRhdGVJdGVtczpmdW5jdGlvbigpe3ZhciB0PWVyKHRoaXMpLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0aGlzLnNlbGVjdGFibGV8fCIqIik7dD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwodCx0aGlzLl9iaW5kRmlsdGVySXRlbSksdGhpcy5fc2V0SXRlbXModCl9LF91cGRhdGVBdHRyRm9yU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSXRlbSYmKHRoaXMuc2VsZWN0ZWQ9dGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtKSl9LF91cGRhdGVTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0U2VsZWN0ZWQ6ZnVuY3Rpb24odCl7aWYodGhpcy5pdGVtcyl7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7ZT90aGlzLl9zZWxlY3Rpb24uc2VsZWN0KGUpOnRoaXMuX3NlbGVjdGlvbi5jbGVhcigpLHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJnRoaXMuaXRlbXMubGVuZ3RoJiZ2b2lkIDA9PT10aGlzLl9zZWxlY3Rpb24uZ2V0KCkmJih0aGlzLnNlbGVjdGVkPXRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pfX0sX2ZpbHRlckl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMuX2V4Y2x1ZGVkTG9jYWxOYW1lc1t0LmxvY2FsTmFtZV19LF92YWx1ZVRvSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOnRoaXMuaXRlbXNbdGhpcy5fdmFsdWVUb0luZGV4KHQpXX0sX3ZhbHVlVG9JbmRleDpmdW5jdGlvbih0KXtpZighdGhpcy5hdHRyRm9yU2VsZWN0ZWQpcmV0dXJuIE51bWJlcih0KTtmb3IodmFyIGUsbj0wO2U9dGhpcy5pdGVtc1tuXTtuKyspaWYodGhpcy5fdmFsdWVGb3JJdGVtKGUpPT10KXJldHVybiBufSxfaW5kZXhUb1ZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmF0dHJGb3JTZWxlY3RlZClyZXR1cm4gdDt2YXIgZT10aGlzLml0ZW1zW3RdO3JldHVybiBlP3RoaXMuX3ZhbHVlRm9ySXRlbShlKTp2b2lkIDB9LF92YWx1ZUZvckl0ZW06ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYoIXRoaXMuYXR0ckZvclNlbGVjdGVkKXt2YXIgZT10aGlzLmluZGV4T2YodCk7cmV0dXJuLTE9PT1lP251bGw6ZX12YXIgbj10W3N0KHRoaXMuYXR0ckZvclNlbGVjdGVkKV07cmV0dXJuIG51bGwhPW4/bjp0LmdldEF0dHJpYnV0ZSh0aGlzLmF0dHJGb3JTZWxlY3RlZCl9LF9hcHBseVNlbGVjdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuc2VsZWN0ZWRDbGFzcyYmdGhpcy50b2dnbGVDbGFzcyh0aGlzLnNlbGVjdGVkQ2xhc3MsZSx0KSx0aGlzLnNlbGVjdGVkQXR0cmlidXRlJiZ0aGlzLnRvZ2dsZUF0dHJpYnV0ZSh0aGlzLnNlbGVjdGVkQXR0cmlidXRlLGUsdCksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5maXJlKCJpcm9uLSIrKGU/InNlbGVjdCI6ImRlc2VsZWN0Iikse2l0ZW06dH0pfSxfc2VsZWN0aW9uQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHRoaXMuX3NlbGVjdGlvbi5nZXQoKSl9LF9vYnNlcnZlSXRlbXM6ZnVuY3Rpb24odCl7cmV0dXJuIGVyKHQpLm9ic2VydmVOb2RlcygoZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSXRlbXMoKSx0aGlzLl91cGRhdGVTZWxlY3RlZCgpLHRoaXMuZmlyZSgiaXJvbi1pdGVtcy1jaGFuZ2VkIix0LHtidWJibGVzOiExLGNhbmNlbGFibGU6ITF9KX0pKX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC50YXJnZXQsbj10aGlzLml0ZW1zO2UmJmUhPXRoaXM7KXt2YXIgaT1uLmluZGV4T2YoZSk7aWYoaT49MCl7dmFyIHI9dGhpcy5faW5kZXhUb1ZhbHVlKGkpO3JldHVybiB2b2lkIHRoaXMuX2l0ZW1BY3RpdmF0ZShyLGUpfWU9ZS5wYXJlbnROb2RlfX0sX2l0ZW1BY3RpdmF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuZmlyZSgiaXJvbi1hY3RpdmF0ZSIse3NlbGVjdGVkOnQsaXRlbTplfSx7Y2FuY2VsYWJsZTohMH0pLmRlZmF1bHRQcmV2ZW50ZWR8fHRoaXMuc2VsZWN0KHQpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2pyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoOm5vdChzbG90KTpub3QoLmlyb24tc2VsZWN0ZWQpKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoiaXJvbi1wYWdlcyIsYmVoYXZpb3JzOltDbyxlYV0scHJvcGVydGllczp7YWN0aXZhdGVFdmVudDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH19LG9ic2VydmVyczpbIl9zZWxlY3RlZFBhZ2VDaGFuZ2VkKHNlbGVjdGVkKSJdLF9zZWxlY3RlZFBhZ2VDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5hc3luYyh0aGlzLm5vdGlmeVJlc2l6ZSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBuYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tc2hhZG93LXRyYW5zaXRpb246IHsKICAgICAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMjhzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1ub25lOiB7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgfTsKCiAgICAgIC8qIGZyb20gaHR0cDovL2NvZGVwZW4uaW8vc2h5bmRtYW4vcGVuL2M1Mzk0ZGRmMmU4YjJhNWM5MTg1OTA0YjU3NDIxY2RiICovCgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0zZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDNweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDE4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi04ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTEyZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDRweCAyMnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAgNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAgOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMjRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+YDtuYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5hLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgaWE9eGVgCjxkb20tbW9kdWxlIGlkPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgaHRtbCB7CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbDogewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgICB9OwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWw7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMSJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iNCJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CgogICAgICAvKiBEdXBsaWNhdGUgdGhlIHN0eWxlcyBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3NoYWR5Y3NzL2lzc3Vlcy8xOTMgKi8KICAgICAgOmhvc3QgewogICAgICAgIC0tcGFwZXItbWF0ZXJpYWw6IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi04ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTE2ZHA7CiAgICAgICAgfTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWwpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+YDtpYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGlhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgcmE9e3Byb3BlcnRpZXM6e2ZvY3VzZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfb2xkVGFiSW5kZXg6e3R5cGU6U3RyaW5nfSxfYm91bmRGb2N1c0JsdXJIYW5kbGVyOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvY3VzQmx1ckhhbmRsZXIuYmluZCh0aGlzKX19fSxvYnNlcnZlcnM6WyJfY2hhbmdlZENvbnRyb2xTdGF0ZShmb2N1c2VkLCBkaXNhYmxlZCkiXSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2JvdW5kRm9jdXNCbHVySGFuZGxlciwhMCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9ib3VuZEZvY3VzQmx1ckhhbmRsZXIsITApfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRGb2N1c2VkKCJmb2N1cyI9PT10LnR5cGUpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLHQ/InRydWUiOiJmYWxzZSIpLHRoaXMuc3R5bGUucG9pbnRlckV2ZW50cz10PyJub25lIjoiIix0Pyh0aGlzLl9vbGRUYWJJbmRleD10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0aGlzLl9zZXRGb2N1c2VkKCExKSx0aGlzLnRhYkluZGV4PS0xLHRoaXMuYmx1cigpKTp2b2lkIDAhPT10aGlzLl9vbGRUYWJJbmRleCYmKG51bGw9PT10aGlzLl9vbGRUYWJJbmRleD90aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTp0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHRoaXMuX29sZFRhYkluZGV4KSl9LF9jaGFuZ2VkQ29udHJvbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCYmdGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCgpfX0sb2E9e3Byb3BlcnRpZXM6e3ByZXNzZWQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCx2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9wcmVzc2VkQ2hhbmdlZCJ9LHRvZ2dsZXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGFjdGl2ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHBvaW50ZXJEb3duOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITAsdmFsdWU6ITF9LHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMH0sYXJpYUFjdGl2ZUF0dHJpYnV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImFyaWEtcHJlc3NlZCIsb2JzZXJ2ZXI6Il9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6e2Rvd246Il9kb3duSGFuZGxlciIsdXA6Il91cEhhbmRsZXIiLHRhcDoiX3RhcEhhbmRsZXIifSxvYnNlcnZlcnM6WyJfZm9jdXNDaGFuZ2VkKGZvY3VzZWQpIiwiX2FjdGl2ZUNoYW5nZWQoYWN0aXZlLCBhcmlhQWN0aXZlQXR0cmlidXRlKSJdLGtleUJpbmRpbmdzOnsiZW50ZXI6a2V5ZG93biI6Il9hc3luY0NsaWNrIiwic3BhY2U6a2V5ZG93biI6Il9zcGFjZUtleURvd25IYW5kbGVyIiwic3BhY2U6a2V5dXAiOiJfc3BhY2VLZXlVcEhhbmRsZXIifSxfbW91c2VFdmVudFJlOi9ebW91c2UvLF90YXBIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVzP3RoaXMuX3VzZXJBY3RpdmF0ZSghdGhpcy5hY3RpdmUpOnRoaXMuYWN0aXZlPSExfSxfZm9jdXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX2RldGVjdEtleWJvYXJkRm9jdXModCksdHx8dGhpcy5fc2V0UHJlc3NlZCghMSl9LF9kZXRlY3RLZXlib2FyZEZvY3VzOmZ1bmN0aW9uKHQpe3RoaXMuX3NldFJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQoIXRoaXMucG9pbnRlckRvd24mJnQpfSxfdXNlckFjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlIT09dCYmKHRoaXMuYWN0aXZlPXQsdGhpcy5maXJlKCJjaGFuZ2UiKSl9LF9kb3duSGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRQb2ludGVyRG93bighMCksdGhpcy5fc2V0UHJlc3NlZCghMCksdGhpcy5fc2V0UmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCghMSl9LF91cEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9zZXRQb2ludGVyRG93bighMSksdGhpcy5fc2V0UHJlc3NlZCghMSl9LF9zcGFjZUtleURvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGV0YWlsLmtleWJvYXJkRXZlbnQsbj1lcihlKS5sb2NhbFRhcmdldDt0aGlzLmlzTGlnaHREZXNjZW5kYW50KG4pfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5fc2V0UHJlc3NlZCghMCkpfSxfc3BhY2VLZXlVcEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9ZXIodC5kZXRhaWwua2V5Ym9hcmRFdmVudCkubG9jYWxUYXJnZXQ7dGhpcy5pc0xpZ2h0RGVzY2VuZGFudChlKXx8KHRoaXMucHJlc3NlZCYmdGhpcy5fYXN5bmNDbGljaygpLHRoaXMuX3NldFByZXNzZWQoITEpKX0sX2FzeW5jQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuY2xpY2soKX0pLDEpfSxfcHJlc3NlZENoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe2UmJmUhPXQmJnRoaXMuaGFzQXR0cmlidXRlKGUpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKX0sX2FjdGl2ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLnRvZ2dsZXM/dGhpcy5zZXRBdHRyaWJ1dGUodGhpcy5hcmlhQWN0aXZlQXR0cmlidXRlLHQ/InRydWUiOiJmYWxzZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKHRoaXMuYXJpYUFjdGl2ZUF0dHJpYnV0ZSksdGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9jb250cm9sU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD90aGlzLl9zZXRQcmVzc2VkKCExKTp0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2NoYW5nZWRCdXR0b25TdGF0ZTpmdW5jdGlvbigpe3RoaXMuX2J1dHRvblN0YXRlQ2hhbmdlZCYmdGhpcy5fYnV0dG9uU3RhdGVDaGFuZ2VkKCl9fSxhYT1bWG8sb2FdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBzYT17ZGlzdGFuY2U6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC1uLG89ZS1pO3JldHVybiBNYXRoLnNxcnQocipyK28qbyl9LG5vdzp3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdy5iaW5kKHdpbmRvdy5wZXJmb3JtYW5jZSk6RGF0ZS5ub3d9O2Z1bmN0aW9uIGxhKHQpe3RoaXMuZWxlbWVudD10LHRoaXMud2lkdGg9dGhpcy5ib3VuZGluZ1JlY3Qud2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy5ib3VuZGluZ1JlY3QuaGVpZ2h0LHRoaXMuc2l6ZT1NYXRoLm1heCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX1mdW5jdGlvbiBjYSh0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNvbG9yPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmNvbG9yLHRoaXMud2F2ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLndhdmVDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy53YXZlLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yLHRoaXMud2F2ZS5jbGFzc0xpc3QuYWRkKCJ3YXZlIiksdGhpcy53YXZlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIndhdmUtY29udGFpbmVyIiksZXIodGhpcy53YXZlQ29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLndhdmUpLHRoaXMucmVzZXRJbnRlcmFjdGlvblN0YXRlKCl9bGEucHJvdG90eXBlPXtnZXQgYm91bmRpbmdSZWN0KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sZnVydGhlc3RDb3JuZXJEaXN0YW5jZUZyb206ZnVuY3Rpb24odCxlKXt2YXIgbj1zYS5kaXN0YW5jZSh0LGUsMCwwKSxpPXNhLmRpc3RhbmNlKHQsZSx0aGlzLndpZHRoLDApLHI9c2EuZGlzdGFuY2UodCxlLDAsdGhpcy5oZWlnaHQpLG89c2EuZGlzdGFuY2UodCxlLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO3JldHVybiBNYXRoLm1heChuLGkscixvKX19LGNhLk1BWF9SQURJVVM9MzAwLGNhLnByb3RvdHlwZT17Z2V0IHJlY2VudGVycygpe3JldHVybiB0aGlzLmVsZW1lbnQucmVjZW50ZXJzfSxnZXQgY2VudGVyKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5jZW50ZXJ9LGdldCBtb3VzZURvd25FbGFwc2VkKCl7dmFyIHQ7cmV0dXJuIHRoaXMubW91c2VEb3duU3RhcnQ/KHQ9c2Eubm93KCktdGhpcy5tb3VzZURvd25TdGFydCx0aGlzLm1vdXNlVXBTdGFydCYmKHQtPXRoaXMubW91c2VVcEVsYXBzZWQpLHQpOjB9LGdldCBtb3VzZVVwRWxhcHNlZCgpe3JldHVybiB0aGlzLm1vdXNlVXBTdGFydD9zYS5ub3coKS10aGlzLm1vdXNlVXBTdGFydDowfSxnZXQgbW91c2VEb3duRWxhcHNlZFNlY29uZHMoKXtyZXR1cm4gdGhpcy5tb3VzZURvd25FbGFwc2VkLzFlM30sZ2V0IG1vdXNlVXBFbGFwc2VkU2Vjb25kcygpe3JldHVybiB0aGlzLm1vdXNlVXBFbGFwc2VkLzFlM30sZ2V0IG1vdXNlSW50ZXJhY3Rpb25TZWNvbmRzKCl7cmV0dXJuIHRoaXMubW91c2VEb3duRWxhcHNlZFNlY29uZHMrdGhpcy5tb3VzZVVwRWxhcHNlZFNlY29uZHN9LGdldCBpbml0aWFsT3BhY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQuaW5pdGlhbE9wYWNpdHl9LGdldCBvcGFjaXR5RGVjYXlWZWxvY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQub3BhY2l0eURlY2F5VmVsb2NpdHl9LGdldCByYWRpdXMoKXt2YXIgdD0xLjEqTWF0aC5taW4oTWF0aC5zcXJ0KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aCp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgrdGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodCp0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0KSxjYS5NQVhfUkFESVVTKSs1LGU9dCooMS1NYXRoLnBvdyg4MCwtKHRoaXMubW91c2VJbnRlcmFjdGlvblNlY29uZHMvKDEuMS10L2NhLk1BWF9SQURJVVMqLjIpKSkpO3JldHVybiBNYXRoLmFicyhlKX0sZ2V0IG9wYWNpdHkoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/TWF0aC5tYXgoMCx0aGlzLmluaXRpYWxPcGFjaXR5LXRoaXMubW91c2VVcEVsYXBzZWRTZWNvbmRzKnRoaXMub3BhY2l0eURlY2F5VmVsb2NpdHkpOnRoaXMuaW5pdGlhbE9wYWNpdHl9LGdldCBvdXRlck9wYWNpdHkoKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbiguMyp0aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kcyx0aGlzLm9wYWNpdHkpKX0sZ2V0IGlzT3BhY2l0eUZ1bGx5RGVjYXllZCgpe3JldHVybiB0aGlzLm9wYWNpdHk8LjAxJiZ0aGlzLnJhZGl1cz49TWF0aC5taW4odGhpcy5tYXhSYWRpdXMsY2EuTUFYX1JBRElVUyl9LGdldCBpc1Jlc3RpbmdBdE1heFJhZGl1cygpe3JldHVybiB0aGlzLm9wYWNpdHk+PXRoaXMuaW5pdGlhbE9wYWNpdHkmJnRoaXMucmFkaXVzPj1NYXRoLm1pbih0aGlzLm1heFJhZGl1cyxjYS5NQVhfUkFESVVTKX0sZ2V0IGlzQW5pbWF0aW9uQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/dGhpcy5pc09wYWNpdHlGdWxseURlY2F5ZWQ6dGhpcy5pc1Jlc3RpbmdBdE1heFJhZGl1c30sZ2V0IHRyYW5zbGF0aW9uRnJhY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4oMSx0aGlzLnJhZGl1cy90aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSoyL01hdGguc3FydCgyKSl9LGdldCB4Tm93KCl7cmV0dXJuIHRoaXMueEVuZD90aGlzLnhTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueEVuZC10aGlzLnhTdGFydCk6dGhpcy54U3RhcnR9LGdldCB5Tm93KCl7cmV0dXJuIHRoaXMueUVuZD90aGlzLnlTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueUVuZC10aGlzLnlTdGFydCk6dGhpcy55U3RhcnR9LGdldCBpc01vdXNlRG93bigpe3JldHVybiB0aGlzLm1vdXNlRG93blN0YXJ0JiYhdGhpcy5tb3VzZVVwU3RhcnR9LHJlc2V0SW50ZXJhY3Rpb25TdGF0ZTpmdW5jdGlvbigpe3RoaXMubWF4UmFkaXVzPTAsdGhpcy5tb3VzZURvd25TdGFydD0wLHRoaXMubW91c2VVcFN0YXJ0PTAsdGhpcy54U3RhcnQ9MCx0aGlzLnlTdGFydD0wLHRoaXMueEVuZD0wLHRoaXMueUVuZD0wLHRoaXMuc2xpZGVEaXN0YW5jZT0wLHRoaXMuY29udGFpbmVyTWV0cmljcz1uZXcgbGEodGhpcy5lbGVtZW50KX0sZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsbjt0aGlzLndhdmUuc3R5bGUub3BhY2l0eT10aGlzLm9wYWNpdHksdD10aGlzLnJhZGl1cy8odGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUvMiksdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrKGU9dGhpcy54Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC8yKSsicHgsICIrKG49dGhpcy55Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMikrInB4KSIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlM2QoIitlKyJweCwgIituKyJweCwgMCkiLHRoaXMud2F2ZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InNjYWxlKCIrdCsiLCIrdCsiKSIsdGhpcy53YXZlLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUzZCgiK3QrIiwiK3QrIiwxKSJ9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoLzIsbj10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzI7dGhpcy5yZXNldEludGVyYWN0aW9uU3RhdGUoKSx0aGlzLm1vdXNlRG93blN0YXJ0PXNhLm5vdygpLHRoaXMuY2VudGVyPyh0aGlzLnhTdGFydD1lLHRoaXMueVN0YXJ0PW4sdGhpcy5zbGlkZURpc3RhbmNlPXNhLmRpc3RhbmNlKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0LHRoaXMueEVuZCx0aGlzLnlFbmQpKToodGhpcy54U3RhcnQ9dD90LmRldGFpbC54LXRoaXMuY29udGFpbmVyTWV0cmljcy5ib3VuZGluZ1JlY3QubGVmdDp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMix0aGlzLnlTdGFydD10P3QuZGV0YWlsLnktdGhpcy5jb250YWluZXJNZXRyaWNzLmJvdW5kaW5nUmVjdC50b3A6dGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodC8yKSx0aGlzLnJlY2VudGVycyYmKHRoaXMueEVuZD1lLHRoaXMueUVuZD1uLHRoaXMuc2xpZGVEaXN0YW5jZT1zYS5kaXN0YW5jZSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCx0aGlzLnhFbmQsdGhpcy55RW5kKSksdGhpcy5tYXhSYWRpdXM9dGhpcy5jb250YWluZXJNZXRyaWNzLmZ1cnRoZXN0Q29ybmVyRGlzdGFuY2VGcm9tKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0KSx0aGlzLndhdmVDb250YWluZXIuc3R5bGUudG9wPSh0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKS8yKyJweCIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLmxlZnQ9KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSkvMisicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSsicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUrInB4In0sdXBBY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5pc01vdXNlRG93biYmKHRoaXMubW91c2VVcFN0YXJ0PXNhLm5vdygpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7ZXIoZXIodGhpcy53YXZlQ29udGFpbmVyKS5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzLndhdmVDb250YWluZXIpfX0sanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwoKICAgICAgICAvKiBTZWUgUG9seW1lckVsZW1lbnRzL3BhcGVyLWJlaGF2aW9ycy9pc3N1ZXMvMzQuIE9uIG5vbi1DaHJvbWUgYnJvd3NlcnMsCiAgICAgICAgICogY3JlYXRpbmcgYSBub2RlICh3aXRoIGEgcG9zaXRpb246YWJzb2x1dGUpIGluIHRoZSBtaWRkbGUgb2YgYW4gZXZlbnQKICAgICAgICAgKiBoYW5kbGVyICJpbnRlcnJ1cHRzIiB0aGF0IGV2ZW50IGhhbmRsZXIgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUKICAgICAgICAgKiByaXBwbGUgaXMgY3JlYXRlZCBvbiBkZW1hbmQpICovCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFthbmltYXRpbmddKSB7CiAgICAgICAgLyogVGhpcyByZXNvbHZlcyBhIHJlbmRlcmluZyBpc3N1ZSBpbiBDaHJvbWUgKGFzIG9mIDQwKSB3aGVyZSB0aGUKICAgICAgICAgICByaXBwbGUgaXMgbm90IHByb3Blcmx5IGNsaXBwZWQgYnkgaXRzIHBhcmVudCAod2hpY2ggbWF5IGhhdmUKICAgICAgICAgICByb3VuZGVkIGNvcm5lcnMpLiBTZWU6IGh0dHA6Ly9qc2Jpbi5jb20vdGVtZXhhLzQKCiAgICAgICAgICAgTm90ZTogV2Ugb25seSBhcHBseSB0aGlzIHN0eWxlIGNvbmRpdGlvbmFsbHkuIE90aGVyd2lzZSwgdGhlIGJyb3dzZXIKICAgICAgICAgICB3aWxsIGNyZWF0ZSBhIG5ldyBjb21wb3NpdGluZyBsYXllciBmb3IgZXZlcnkgcmlwcGxlIGVsZW1lbnQgb24gdGhlCiAgICAgICAgICAgcGFnZSwgYW5kIHRoYXQgd291bGQgYmUgYmFkLiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgICN3YXZlcywKICAgICAgLndhdmUtY29udGFpbmVyLAogICAgICAud2F2ZSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgIC53YXZlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAjd2F2ZXMsCiAgICAgIC53YXZlIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAud2F2ZS1jb250YWluZXIsCiAgICAgIC53YXZlIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jaXJjbGUpICNiYWNrZ3JvdW5kLAogICAgICA6aG9zdCguY2lyY2xlKSAjd2F2ZXMgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNpcmNsZSkgLndhdmUtY29udGFpbmVyIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9ImJhY2tncm91bmQiPjwvZGl2PgogICAgPGRpdiBpZD0id2F2ZXMiPjwvZGl2PgpgLGlzOiJwYXBlci1yaXBwbGUiLGJlaGF2aW9yczpbWG9dLHByb3BlcnRpZXM6e2luaXRpYWxPcGFjaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouMjV9LG9wYWNpdHlEZWNheVZlbG9jaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouOH0scmVjZW50ZXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNlbnRlcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxyaXBwbGVzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxhbmltYXRpbmc6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LGhvbGREb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9ob2xkRG93bkNoYW5nZWQifSxub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYW5pbWF0aW5nOnt0eXBlOkJvb2xlYW59LF9ib3VuZEFuaW1hdGU6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlLmJpbmQodGhpcyl9fX0sZ2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmtleUV2ZW50VGFyZ2V0fSxrZXlCaW5kaW5nczp7ImVudGVyOmtleWRvd24iOiJfb25FbnRlcktleWRvd24iLCJzcGFjZTprZXlkb3duIjoiX29uU3BhY2VLZXlkb3duIiwic3BhY2U6a2V5dXAiOiJfb25TcGFjZUtleXVwIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmtleUV2ZW50VGFyZ2V0PTExPT1lcih0aGlzKS5wYXJlbnROb2RlLm5vZGVUeXBlP2VyKHRoaXMpLmdldE93bmVyUm9vdCgpLmhvc3Q6ZXIodGhpcykucGFyZW50Tm9kZTt2YXIgdD10aGlzLmtleUV2ZW50VGFyZ2V0O3RoaXMubGlzdGVuKHQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMubGlzdGVuKHQsImRvd24iLCJ1aURvd25BY3Rpb24iKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMua2V5RXZlbnRUYXJnZXQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMudW5saXN0ZW4odGhpcy5rZXlFdmVudFRhcmdldCwiZG93biIsInVpRG93bkFjdGlvbiIpLHRoaXMua2V5RXZlbnRUYXJnZXQ9bnVsbH0sZ2V0IHNob3VsZEtlZXBBbmltYXRpbmcoKXtmb3IodmFyIHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KWlmKCF0aGlzLnJpcHBsZXNbdF0uaXNBbmltYXRpb25Db21wbGV0ZSlyZXR1cm4hMDtyZXR1cm4hMX0sc2ltdWxhdGVkUmlwcGxlOmZ1bmN0aW9uKCl7dGhpcy5kb3duQWN0aW9uKG51bGwpLHRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy51cEFjdGlvbigpfSksMSl9LHVpRG93bkFjdGlvbjpmdW5jdGlvbih0KXt0aGlzLm5vaW5rfHx0aGlzLmRvd25BY3Rpb24odCl9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5ob2xkRG93biYmdGhpcy5yaXBwbGVzLmxlbmd0aD4wfHwodGhpcy5hZGRSaXBwbGUoKS5kb3duQWN0aW9uKHQpLHRoaXMuX2FuaW1hdGluZ3x8KHRoaXMuX2FuaW1hdGluZz0hMCx0aGlzLmFuaW1hdGUoKSkpfSx1aVVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMubm9pbmt8fHRoaXMudXBBY3Rpb24odCl9LHVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuaG9sZERvd258fCh0aGlzLnJpcHBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51cEFjdGlvbih0KX0pKSx0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5hbmltYXRlKCkpfSxvbkFuaW1hdGlvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW5nPSExLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIix0aGlzLmZpcmUoInRyYW5zaXRpb25lbmQiKX0sYWRkUmlwcGxlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGNhKHRoaXMpO3JldHVybiBlcih0aGlzLiQud2F2ZXMpLmFwcGVuZENoaWxkKHQud2F2ZUNvbnRhaW5lciksdGhpcy4kLmJhY2tncm91bmQuc3R5bGUuYmFja2dyb3VuZENvbG9yPXQuY29sb3IsdGhpcy5yaXBwbGVzLnB1c2godCksdGhpcy5fc2V0QW5pbWF0aW5nKCEwKSx0fSxyZW1vdmVSaXBwbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yaXBwbGVzLmluZGV4T2YodCk7ZTwwfHwodGhpcy5yaXBwbGVzLnNwbGljZShlLDEpLHQucmVtb3ZlKCksdGhpcy5yaXBwbGVzLmxlbmd0aHx8dGhpcy5fc2V0QW5pbWF0aW5nKCExKSl9LGFuaW1hdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9hbmltYXRpbmcpe3ZhciB0LGU7Zm9yKHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KShlPXRoaXMucmlwcGxlc1t0XSkuZHJhdygpLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLm9wYWNpdHk9ZS5vdXRlck9wYWNpdHksZS5pc09wYWNpdHlGdWxseURlY2F5ZWQmJiFlLmlzUmVzdGluZ0F0TWF4UmFkaXVzJiZ0aGlzLnJlbW92ZVJpcHBsZShlKTt0aGlzLnNob3VsZEtlZXBBbmltYXRpbmd8fDAhPT10aGlzLnJpcHBsZXMubGVuZ3RoP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fYm91bmRBbmltYXRlKTp0aGlzLm9uQW5pbWF0aW9uQ29tcGxldGUoKX19LGFuaW1hdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlKCl9LF9vbkVudGVyS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCksdGhpcy5hc3luYyh0aGlzLnVpVXBBY3Rpb24sMSl9LF9vblNwYWNlS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCl9LF9vblNwYWNlS2V5dXA6ZnVuY3Rpb24oKXt0aGlzLnVpVXBBY3Rpb24oKX0sX2hvbGREb3duQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZvaWQgMCE9PWUmJih0P3RoaXMuZG93bkFjdGlvbigpOnRoaXMudXBBY3Rpb24oKSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB1YT17cHJvcGVydGllczp7bm9pbms6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX25vaW5rQ2hhbmdlZCJ9LF9yaXBwbGVDb250YWluZXI6e3R5cGU6T2JqZWN0fX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZm9jdXNlZCYmdGhpcy5lbnN1cmVSaXBwbGUoKX0sX2Rvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe29hLl9kb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5wcmVzc2VkJiZ0aGlzLmVuc3VyZVJpcHBsZSh0KX0sZW5zdXJlUmlwcGxlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmhhc1JpcHBsZSgpKXt0aGlzLl9yaXBwbGU9dGhpcy5fY3JlYXRlUmlwcGxlKCksdGhpcy5fcmlwcGxlLm5vaW5rPXRoaXMubm9pbms7dmFyIGU9dGhpcy5fcmlwcGxlQ29udGFpbmVyfHx0aGlzLnJvb3Q7aWYoZSYmZXIoZSkuYXBwZW5kQ2hpbGQodGhpcy5fcmlwcGxlKSx0KXt2YXIgbj1lcih0aGlzLl9yaXBwbGVDb250YWluZXJ8fHRoaXMpLGk9ZXIodCkucm9vdFRhcmdldDtuLmRlZXBDb250YWlucyhpKSYmdGhpcy5fcmlwcGxlLnVpRG93bkFjdGlvbih0KX19fSxnZXRSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnN1cmVSaXBwbGUoKSx0aGlzLl9yaXBwbGV9LGhhc1JpcHBsZTpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuX3JpcHBsZSl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicGFwZXItcmlwcGxlIil9LF9ub2lua0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ub2luaz10KX19LGhhPXtwcm9wZXJ0aWVzOntlbGV2YXRpb246e3R5cGU6TnVtYmVyLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMH19LG9ic2VydmVyczpbIl9jYWxjdWxhdGVFbGV2YXRpb24oZm9jdXNlZCwgZGlzYWJsZWQsIGFjdGl2ZSwgcHJlc3NlZCwgcmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiLCJfY29tcHV0ZUtleWJvYXJkQ2xhc3MocmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiXSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIix0YWJpbmRleDoiMCIsYW5pbWF0ZWQ6ITB9LF9jYWxjdWxhdGVFbGV2YXRpb246ZnVuY3Rpb24oKXt2YXIgdD0xO3RoaXMuZGlzYWJsZWQ/dD0wOnRoaXMuYWN0aXZlfHx0aGlzLnByZXNzZWQ/dD00OnRoaXMucmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCYmKHQ9MyksdGhpcy5fc2V0RWxldmF0aW9uKHQpfSxfY29tcHV0ZUtleWJvYXJkQ2xhc3M6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVDbGFzcygia2V5Ym9hcmQtZm9jdXMiLHQpfSxfc3BhY2VLZXlEb3duSGFuZGxlcjpmdW5jdGlvbih0KXtvYS5fc3BhY2VLZXlEb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5oYXNSaXBwbGUoKSYmdGhpcy5nZXRSaXBwbGUoKS5yaXBwbGVzLmxlbmd0aDwxJiZ0aGlzLl9yaXBwbGUudWlEb3duQWN0aW9uKCl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbih0KXtvYS5fc3BhY2VLZXlVcEhhbmRsZXIuY2FsbCh0aGlzLHQpLHRoaXMuaGFzUmlwcGxlKCkmJnRoaXMuX3JpcHBsZS51aVVwQWN0aW9uKCl9fSxkYT1bYWEscmEsdWEsaGFdLHBhPXhlYAogIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogICAgLyogTmVlZCB0byBzcGVjaWZ5IHRoZSBzYW1lIHNwZWNpZmljaXR5IGFzIHRoZSBzdHlsZXMgaW1wb3J0ZWQgZnJvbSBwYXBlci1tYXRlcmlhbC4gKi8KICAgIDpob3N0IHsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgbWluLXdpZHRoOiA1LjE0ZW07CiAgICAgIG1hcmdpbjogMCAwLjI5ZW07CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIGZvbnQ6IGluaGVyaXQ7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIG91dGxpbmUtd2lkdGg6IDA7CiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB6LWluZGV4OiAwOwogICAgICBwYWRkaW5nOiAwLjdlbSAwLjU3ZW07CgogICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b247CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iMSJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjIiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iNCJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjUiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgIH0KCiAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgOmhvc3QoW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1yYWlzZWQta2V5Ym9hcmQtZm9jdXM7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmFpc2VkXSkua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1mbGF0LWtleWJvYXJkLWZvY3VzOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgY29sb3I6ICNhOGE4YTg7CiAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CgogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b24tZGlzYWJsZWQ7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXVtyYWlzZWRdKSB7CiAgICAgIGJhY2tncm91bmQ6ICNlYWVhZWE7CiAgICB9CgoKICAgIDpob3N0KFthbmltYXRlZF0pIHsKICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICB9CgogICAgcGFwZXItcmlwcGxlIHsKICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWJ1dHRvbi1pbmstY29sb3IpOwogICAgfQogIDwvc3R5bGU+CgogIDxzbG90Pjwvc2xvdD5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9wYS5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxqcih7X3RlbXBsYXRlOnBhLGlzOiJwYXBlci1idXR0b24iLGJlaGF2aW9yczpbZGFdLHByb3BlcnRpZXM6e3JhaXNlZDp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMSxvYnNlcnZlcjoiX2NhbGN1bGF0ZUVsZXZhdGlvbiJ9fSxfY2FsY3VsYXRlRWxldmF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5yYWlzZWQ/aGEuX2NhbGN1bGF0ZUVsZXZhdGlvbi5hcHBseSh0aGlzKTp0aGlzLl9zZXRFbGV2YXRpb24oMCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZvciBHb29nbGUgcHJvZHVjdHMgKi8KCiAgICAgIC0tZ29vZ2xlLXJlZC0xMDA6ICNmNGM3YzM7CiAgICAgIC0tZ29vZ2xlLXJlZC0zMDA6ICNlNjdjNzM7CiAgICAgIC0tZ29vZ2xlLXJlZC01MDA6ICNkYjQ0Mzc7CiAgICAgIC0tZ29vZ2xlLXJlZC03MDA6ICNjNTM5Mjk7CgogICAgICAtLWdvb2dsZS1ibHVlLTEwMDogI2M2ZGFmYzsKICAgICAgLS1nb29nbGUtYmx1ZS0zMDA6ICM3YmFhZjc7CiAgICAgIC0tZ29vZ2xlLWJsdWUtNTAwOiAjNDI4NWY0OwogICAgICAtLWdvb2dsZS1ibHVlLTcwMDogIzMzNjdkNjsKCiAgICAgIC0tZ29vZ2xlLWdyZWVuLTEwMDogI2I3ZTFjZDsKICAgICAgLS1nb29nbGUtZ3JlZW4tMzAwOiAjNTdiYjhhOwogICAgICAtLWdvb2dsZS1ncmVlbi01MDA6ICMwZjlkNTg7CiAgICAgIC0tZ29vZ2xlLWdyZWVuLTcwMDogIzBiODA0MzsKCiAgICAgIC0tZ29vZ2xlLXllbGxvdy0xMDA6ICNmY2U4YjI7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy0zMDA6ICNmN2NiNGQ7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy01MDA6ICNmNGI0MDA7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy03MDA6ICNmMDkzMDA7CgogICAgICAtLWdvb2dsZS1ncmV5LTEwMDogI2Y1ZjVmNTsKICAgICAgLS1nb29nbGUtZ3JleS0zMDA6ICNlMGUwZTA7CiAgICAgIC0tZ29vZ2xlLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLWdvb2dsZS1ncmV5LTcwMDogIzYxNjE2MTsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZyb20gb25saW5lIHNwZWMgZG9jdW1lbnQgKi8KCiAgICAgIC0tcGFwZXItcmVkLTUwOiAjZmZlYmVlOwogICAgICAtLXBhcGVyLXJlZC0xMDA6ICNmZmNkZDI7CiAgICAgIC0tcGFwZXItcmVkLTIwMDogI2VmOWE5YTsKICAgICAgLS1wYXBlci1yZWQtMzAwOiAjZTU3MzczOwogICAgICAtLXBhcGVyLXJlZC00MDA6ICNlZjUzNTA7CiAgICAgIC0tcGFwZXItcmVkLTUwMDogI2Y0NDMzNjsKICAgICAgLS1wYXBlci1yZWQtNjAwOiAjZTUzOTM1OwogICAgICAtLXBhcGVyLXJlZC03MDA6ICNkMzJmMmY7CiAgICAgIC0tcGFwZXItcmVkLTgwMDogI2M2MjgyODsKICAgICAgLS1wYXBlci1yZWQtOTAwOiAjYjcxYzFjOwogICAgICAtLXBhcGVyLXJlZC1hMTAwOiAjZmY4YTgwOwogICAgICAtLXBhcGVyLXJlZC1hMjAwOiAjZmY1MjUyOwogICAgICAtLXBhcGVyLXJlZC1hNDAwOiAjZmYxNzQ0OwogICAgICAtLXBhcGVyLXJlZC1hNzAwOiAjZDUwMDAwOwoKICAgICAgLS1wYXBlci1waW5rLTUwOiAjZmNlNGVjOwogICAgICAtLXBhcGVyLXBpbmstMTAwOiAjZjhiYmQwOwogICAgICAtLXBhcGVyLXBpbmstMjAwOiAjZjQ4ZmIxOwogICAgICAtLXBhcGVyLXBpbmstMzAwOiAjZjA2MjkyOwogICAgICAtLXBhcGVyLXBpbmstNDAwOiAjZWM0MDdhOwogICAgICAtLXBhcGVyLXBpbmstNTAwOiAjZTkxZTYzOwogICAgICAtLXBhcGVyLXBpbmstNjAwOiAjZDgxYjYwOwogICAgICAtLXBhcGVyLXBpbmstNzAwOiAjYzIxODViOwogICAgICAtLXBhcGVyLXBpbmstODAwOiAjYWQxNDU3OwogICAgICAtLXBhcGVyLXBpbmstOTAwOiAjODgwZTRmOwogICAgICAtLXBhcGVyLXBpbmstYTEwMDogI2ZmODBhYjsKICAgICAgLS1wYXBlci1waW5rLWEyMDA6ICNmZjQwODE7CiAgICAgIC0tcGFwZXItcGluay1hNDAwOiAjZjUwMDU3OwogICAgICAtLXBhcGVyLXBpbmstYTcwMDogI2M1MTE2MjsKCiAgICAgIC0tcGFwZXItcHVycGxlLTUwOiAjZjNlNWY1OwogICAgICAtLXBhcGVyLXB1cnBsZS0xMDA6ICNlMWJlZTc7CiAgICAgIC0tcGFwZXItcHVycGxlLTIwMDogI2NlOTNkODsKICAgICAgLS1wYXBlci1wdXJwbGUtMzAwOiAjYmE2OGM4OwogICAgICAtLXBhcGVyLXB1cnBsZS00MDA6ICNhYjQ3YmM7CiAgICAgIC0tcGFwZXItcHVycGxlLTUwMDogIzljMjdiMDsKICAgICAgLS1wYXBlci1wdXJwbGUtNjAwOiAjOGUyNGFhOwogICAgICAtLXBhcGVyLXB1cnBsZS03MDA6ICM3YjFmYTI7CiAgICAgIC0tcGFwZXItcHVycGxlLTgwMDogIzZhMWI5YTsKICAgICAgLS1wYXBlci1wdXJwbGUtOTAwOiAjNGExNDhjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMTAwOiAjZWE4MGZjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMjAwOiAjZTA0MGZiOwogICAgICAtLXBhcGVyLXB1cnBsZS1hNDAwOiAjZDUwMGY5OwogICAgICAtLXBhcGVyLXB1cnBsZS1hNzAwOiAjYWEwMGZmOwoKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS01MDogI2VkZTdmNjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS0xMDA6ICNkMWM0ZTk7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtMjAwOiAjYjM5ZGRiOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTMwMDogIzk1NzVjZDsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS00MDA6ICM3ZTU3YzI7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNTAwOiAjNjczYWI3OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTYwMDogIzVlMzViMTsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS03MDA6ICM1MTJkYTg7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtODAwOiAjNDUyN2EwOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTkwMDogIzMxMWI5MjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hMTAwOiAjYjM4OGZmOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWEyMDA6ICM3YzRkZmY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTQwMDogIzY1MWZmZjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hNzAwOiAjNjIwMGVhOwoKICAgICAgLS1wYXBlci1pbmRpZ28tNTA6ICNlOGVhZjY7CiAgICAgIC0tcGFwZXItaW5kaWdvLTEwMDogI2M1Y2FlOTsKICAgICAgLS1wYXBlci1pbmRpZ28tMjAwOiAjOWZhOGRhOwogICAgICAtLXBhcGVyLWluZGlnby0zMDA6ICM3OTg2Y2I7CiAgICAgIC0tcGFwZXItaW5kaWdvLTQwMDogIzVjNmJjMDsKICAgICAgLS1wYXBlci1pbmRpZ28tNTAwOiAjM2Y1MWI1OwogICAgICAtLXBhcGVyLWluZGlnby02MDA6ICMzOTQ5YWI7CiAgICAgIC0tcGFwZXItaW5kaWdvLTcwMDogIzMwM2Y5ZjsKICAgICAgLS1wYXBlci1pbmRpZ28tODAwOiAjMjgzNTkzOwogICAgICAtLXBhcGVyLWluZGlnby05MDA6ICMxYTIzN2U7CiAgICAgIC0tcGFwZXItaW5kaWdvLWExMDA6ICM4YzllZmY7CiAgICAgIC0tcGFwZXItaW5kaWdvLWEyMDA6ICM1MzZkZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE0MDA6ICMzZDVhZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE3MDA6ICMzMDRmZmU7CgogICAgICAtLXBhcGVyLWJsdWUtNTA6ICNlM2YyZmQ7CiAgICAgIC0tcGFwZXItYmx1ZS0xMDA6ICNiYmRlZmI7CiAgICAgIC0tcGFwZXItYmx1ZS0yMDA6ICM5MGNhZjk7CiAgICAgIC0tcGFwZXItYmx1ZS0zMDA6ICM2NGI1ZjY7CiAgICAgIC0tcGFwZXItYmx1ZS00MDA6ICM0MmE1ZjU7CiAgICAgIC0tcGFwZXItYmx1ZS01MDA6ICMyMTk2ZjM7CiAgICAgIC0tcGFwZXItYmx1ZS02MDA6ICMxZTg4ZTU7CiAgICAgIC0tcGFwZXItYmx1ZS03MDA6ICMxOTc2ZDI7CiAgICAgIC0tcGFwZXItYmx1ZS04MDA6ICMxNTY1YzA7CiAgICAgIC0tcGFwZXItYmx1ZS05MDA6ICMwZDQ3YTE7CiAgICAgIC0tcGFwZXItYmx1ZS1hMTAwOiAjODJiMWZmOwogICAgICAtLXBhcGVyLWJsdWUtYTIwMDogIzQ0OGFmZjsKICAgICAgLS1wYXBlci1ibHVlLWE0MDA6ICMyOTc5ZmY7CiAgICAgIC0tcGFwZXItYmx1ZS1hNzAwOiAjMjk2MmZmOwoKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTUwOiAjZTFmNWZlOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMTAwOiAjYjNlNWZjOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMjAwOiAjODFkNGZhOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMzAwOiAjNGZjM2Y3OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNDAwOiAjMjliNmY2OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwOiAjMDNhOWY0OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNjAwOiAjMDM5YmU1OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNzAwOiAjMDI4OGQxOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtODAwOiAjMDI3N2JkOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwOiAjMDE1NzliOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTEwMDogIzgwZDhmZjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWEyMDA6ICM0MGM0ZmY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hNDAwOiAjMDBiMGZmOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTcwMDogIzAwOTFlYTsKCiAgICAgIC0tcGFwZXItY3lhbi01MDogI2UwZjdmYTsKICAgICAgLS1wYXBlci1jeWFuLTEwMDogI2IyZWJmMjsKICAgICAgLS1wYXBlci1jeWFuLTIwMDogIzgwZGVlYTsKICAgICAgLS1wYXBlci1jeWFuLTMwMDogIzRkZDBlMTsKICAgICAgLS1wYXBlci1jeWFuLTQwMDogIzI2YzZkYTsKICAgICAgLS1wYXBlci1jeWFuLTUwMDogIzAwYmNkNDsKICAgICAgLS1wYXBlci1jeWFuLTYwMDogIzAwYWNjMTsKICAgICAgLS1wYXBlci1jeWFuLTcwMDogIzAwOTdhNzsKICAgICAgLS1wYXBlci1jeWFuLTgwMDogIzAwODM4ZjsKICAgICAgLS1wYXBlci1jeWFuLTkwMDogIzAwNjA2NDsKICAgICAgLS1wYXBlci1jeWFuLWExMDA6ICM4NGZmZmY7CiAgICAgIC0tcGFwZXItY3lhbi1hMjAwOiAjMThmZmZmOwogICAgICAtLXBhcGVyLWN5YW4tYTQwMDogIzAwZTVmZjsKICAgICAgLS1wYXBlci1jeWFuLWE3MDA6ICMwMGI4ZDQ7CgogICAgICAtLXBhcGVyLXRlYWwtNTA6ICNlMGYyZjE7CiAgICAgIC0tcGFwZXItdGVhbC0xMDA6ICNiMmRmZGI7CiAgICAgIC0tcGFwZXItdGVhbC0yMDA6ICM4MGNiYzQ7CiAgICAgIC0tcGFwZXItdGVhbC0zMDA6ICM0ZGI2YWM7CiAgICAgIC0tcGFwZXItdGVhbC00MDA6ICMyNmE2OWE7CiAgICAgIC0tcGFwZXItdGVhbC01MDA6ICMwMDk2ODg7CiAgICAgIC0tcGFwZXItdGVhbC02MDA6ICMwMDg5N2I7CiAgICAgIC0tcGFwZXItdGVhbC03MDA6ICMwMDc5NmI7CiAgICAgIC0tcGFwZXItdGVhbC04MDA6ICMwMDY5NWM7CiAgICAgIC0tcGFwZXItdGVhbC05MDA6ICMwMDRkNDA7CiAgICAgIC0tcGFwZXItdGVhbC1hMTAwOiAjYTdmZmViOwogICAgICAtLXBhcGVyLXRlYWwtYTIwMDogIzY0ZmZkYTsKICAgICAgLS1wYXBlci10ZWFsLWE0MDA6ICMxZGU5YjY7CiAgICAgIC0tcGFwZXItdGVhbC1hNzAwOiAjMDBiZmE1OwoKICAgICAgLS1wYXBlci1ncmVlbi01MDogI2U4ZjVlOTsKICAgICAgLS1wYXBlci1ncmVlbi0xMDA6ICNjOGU2Yzk7CiAgICAgIC0tcGFwZXItZ3JlZW4tMjAwOiAjYTVkNmE3OwogICAgICAtLXBhcGVyLWdyZWVuLTMwMDogIzgxYzc4NDsKICAgICAgLS1wYXBlci1ncmVlbi00MDA6ICM2NmJiNmE7CiAgICAgIC0tcGFwZXItZ3JlZW4tNTAwOiAjNGNhZjUwOwogICAgICAtLXBhcGVyLWdyZWVuLTYwMDogIzQzYTA0NzsKICAgICAgLS1wYXBlci1ncmVlbi03MDA6ICMzODhlM2M7CiAgICAgIC0tcGFwZXItZ3JlZW4tODAwOiAjMmU3ZDMyOwogICAgICAtLXBhcGVyLWdyZWVuLTkwMDogIzFiNWUyMDsKICAgICAgLS1wYXBlci1ncmVlbi1hMTAwOiAjYjlmNmNhOwogICAgICAtLXBhcGVyLWdyZWVuLWEyMDA6ICM2OWYwYWU7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTQwMDogIzAwZTY3NjsKICAgICAgLS1wYXBlci1ncmVlbi1hNzAwOiAjMDBjODUzOwoKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi01MDogI2YxZjhlOTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi0xMDA6ICNkY2VkYzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tMjAwOiAjYzVlMWE1OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTMwMDogI2FlZDU4MTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi00MDA6ICM5Y2NjNjU7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNTAwOiAjOGJjMzRhOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTYwMDogIzdjYjM0MjsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi03MDA6ICM2ODlmMzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tODAwOiAjNTU4YjJmOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTkwMDogIzMzNjkxZTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hMTAwOiAjY2NmZjkwOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWEyMDA6ICNiMmZmNTk7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTQwMDogIzc2ZmYwMzsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hNzAwOiAjNjRkZDE3OwoKICAgICAgLS1wYXBlci1saW1lLTUwOiAjZjlmYmU3OwogICAgICAtLXBhcGVyLWxpbWUtMTAwOiAjZjBmNGMzOwogICAgICAtLXBhcGVyLWxpbWUtMjAwOiAjZTZlZTljOwogICAgICAtLXBhcGVyLWxpbWUtMzAwOiAjZGNlNzc1OwogICAgICAtLXBhcGVyLWxpbWUtNDAwOiAjZDRlMTU3OwogICAgICAtLXBhcGVyLWxpbWUtNTAwOiAjY2RkYzM5OwogICAgICAtLXBhcGVyLWxpbWUtNjAwOiAjYzBjYTMzOwogICAgICAtLXBhcGVyLWxpbWUtNzAwOiAjYWZiNDJiOwogICAgICAtLXBhcGVyLWxpbWUtODAwOiAjOWU5ZDI0OwogICAgICAtLXBhcGVyLWxpbWUtOTAwOiAjODI3NzE3OwogICAgICAtLXBhcGVyLWxpbWUtYTEwMDogI2Y0ZmY4MTsKICAgICAgLS1wYXBlci1saW1lLWEyMDA6ICNlZWZmNDE7CiAgICAgIC0tcGFwZXItbGltZS1hNDAwOiAjYzZmZjAwOwogICAgICAtLXBhcGVyLWxpbWUtYTcwMDogI2FlZWEwMDsKCiAgICAgIC0tcGFwZXIteWVsbG93LTUwOiAjZmZmZGU3OwogICAgICAtLXBhcGVyLXllbGxvdy0xMDA6ICNmZmY5YzQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTIwMDogI2ZmZjU5ZDsKICAgICAgLS1wYXBlci15ZWxsb3ctMzAwOiAjZmZmMTc2OwogICAgICAtLXBhcGVyLXllbGxvdy00MDA6ICNmZmVlNTg7CiAgICAgIC0tcGFwZXIteWVsbG93LTUwMDogI2ZmZWIzYjsKICAgICAgLS1wYXBlci15ZWxsb3ctNjAwOiAjZmRkODM1OwogICAgICAtLXBhcGVyLXllbGxvdy03MDA6ICNmYmMwMmQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTgwMDogI2Y5YTgyNTsKICAgICAgLS1wYXBlci15ZWxsb3ctOTAwOiAjZjU3ZjE3OwogICAgICAtLXBhcGVyLXllbGxvdy1hMTAwOiAjZmZmZjhkOwogICAgICAtLXBhcGVyLXllbGxvdy1hMjAwOiAjZmZmZjAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNDAwOiAjZmZlYTAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNzAwOiAjZmZkNjAwOwoKICAgICAgLS1wYXBlci1hbWJlci01MDogI2ZmZjhlMTsKICAgICAgLS1wYXBlci1hbWJlci0xMDA6ICNmZmVjYjM7CiAgICAgIC0tcGFwZXItYW1iZXItMjAwOiAjZmZlMDgyOwogICAgICAtLXBhcGVyLWFtYmVyLTMwMDogI2ZmZDU0ZjsKICAgICAgLS1wYXBlci1hbWJlci00MDA6ICNmZmNhMjg7CiAgICAgIC0tcGFwZXItYW1iZXItNTAwOiAjZmZjMTA3OwogICAgICAtLXBhcGVyLWFtYmVyLTYwMDogI2ZmYjMwMDsKICAgICAgLS1wYXBlci1hbWJlci03MDA6ICNmZmEwMDA7CiAgICAgIC0tcGFwZXItYW1iZXItODAwOiAjZmY4ZjAwOwogICAgICAtLXBhcGVyLWFtYmVyLTkwMDogI2ZmNmYwMDsKICAgICAgLS1wYXBlci1hbWJlci1hMTAwOiAjZmZlNTdmOwogICAgICAtLXBhcGVyLWFtYmVyLWEyMDA6ICNmZmQ3NDA7CiAgICAgIC0tcGFwZXItYW1iZXItYTQwMDogI2ZmYzQwMDsKICAgICAgLS1wYXBlci1hbWJlci1hNzAwOiAjZmZhYjAwOwoKICAgICAgLS1wYXBlci1vcmFuZ2UtNTA6ICNmZmYzZTA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTEwMDogI2ZmZTBiMjsKICAgICAgLS1wYXBlci1vcmFuZ2UtMjAwOiAjZmZjYzgwOwogICAgICAtLXBhcGVyLW9yYW5nZS0zMDA6ICNmZmI3NGQ7CiAgICAgIC0tcGFwZXItb3JhbmdlLTQwMDogI2ZmYTcyNjsKICAgICAgLS1wYXBlci1vcmFuZ2UtNTAwOiAjZmY5ODAwOwogICAgICAtLXBhcGVyLW9yYW5nZS02MDA6ICNmYjhjMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTcwMDogI2Y1N2MwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtODAwOiAjZWY2YzAwOwogICAgICAtLXBhcGVyLW9yYW5nZS05MDA6ICNlNjUxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWExMDA6ICNmZmQxODA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWEyMDA6ICNmZmFiNDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE0MDA6ICNmZjkxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE3MDA6ICNmZjY1MDA7CgogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTUwOiAjZmJlOWU3OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTEwMDogI2ZmY2NiYzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS0yMDA6ICNmZmFiOTE7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtMzAwOiAjZmY4YTY1OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTQwMDogI2ZmNzA0MzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS01MDA6ICNmZjU3MjI7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNjAwOiAjZjQ1MTFlOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTcwMDogI2U2NGExOTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS04MDA6ICNkODQzMTU7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtOTAwOiAjYmYzNjBjOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWExMDA6ICNmZjllODA7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTIwMDogI2ZmNmU0MDsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hNDAwOiAjZmYzZDAwOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWE3MDA6ICNkZDJjMDA7CgogICAgICAtLXBhcGVyLWJyb3duLTUwOiAjZWZlYmU5OwogICAgICAtLXBhcGVyLWJyb3duLTEwMDogI2Q3Y2NjODsKICAgICAgLS1wYXBlci1icm93bi0yMDA6ICNiY2FhYTQ7CiAgICAgIC0tcGFwZXItYnJvd24tMzAwOiAjYTE4ODdmOwogICAgICAtLXBhcGVyLWJyb3duLTQwMDogIzhkNmU2MzsKICAgICAgLS1wYXBlci1icm93bi01MDA6ICM3OTU1NDg7CiAgICAgIC0tcGFwZXItYnJvd24tNjAwOiAjNmQ0YzQxOwogICAgICAtLXBhcGVyLWJyb3duLTcwMDogIzVkNDAzNzsKICAgICAgLS1wYXBlci1icm93bi04MDA6ICM0ZTM0MmU7CiAgICAgIC0tcGFwZXItYnJvd24tOTAwOiAjM2UyNzIzOwoKICAgICAgLS1wYXBlci1ncmV5LTUwOiAjZmFmYWZhOwogICAgICAtLXBhcGVyLWdyZXktMTAwOiAjZjVmNWY1OwogICAgICAtLXBhcGVyLWdyZXktMjAwOiAjZWVlZWVlOwogICAgICAtLXBhcGVyLWdyZXktMzAwOiAjZTBlMGUwOwogICAgICAtLXBhcGVyLWdyZXktNDAwOiAjYmRiZGJkOwogICAgICAtLXBhcGVyLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLXBhcGVyLWdyZXktNjAwOiAjNzU3NTc1OwogICAgICAtLXBhcGVyLWdyZXktNzAwOiAjNjE2MTYxOwogICAgICAtLXBhcGVyLWdyZXktODAwOiAjNDI0MjQyOwogICAgICAtLXBhcGVyLWdyZXktOTAwOiAjMjEyMTIxOwoKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTA6ICNlY2VmZjE7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTEwMDogI2NmZDhkYzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktMjAwOiAjYjBiZWM1OwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS0zMDA6ICM5MGE0YWU7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTQwMDogIzc4OTA5YzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTAwOiAjNjA3ZDhiOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS02MDA6ICM1NDZlN2E7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTcwMDogIzQ1NWE2NDsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktODAwOiAjMzc0NzRmOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS05MDA6ICMyNjMyMzg7CgogICAgICAvKiBvcGFjaXR5IGZvciBkYXJrIHRleHQgb24gYSBsaWdodCBiYWNrZ3JvdW5kICovCiAgICAgIC0tZGFyay1kaXZpZGVyLW9wYWNpdHk6IDAuMTI7CiAgICAgIC0tZGFyay1kaXNhYmxlZC1vcGFjaXR5OiAwLjM4OyAvKiBvciBoaW50IHRleHQgb3IgaWNvbiAqLwogICAgICAtLWRhcmstc2Vjb25kYXJ5LW9wYWNpdHk6IDAuNTQ7CiAgICAgIC0tZGFyay1wcmltYXJ5LW9wYWNpdHk6IDAuODc7CgogICAgICAvKiBvcGFjaXR5IGZvciBsaWdodCB0ZXh0IG9uIGEgZGFyayBiYWNrZ3JvdW5kICovCiAgICAgIC0tbGlnaHQtZGl2aWRlci1vcGFjaXR5OiAwLjEyOwogICAgICAtLWxpZ2h0LWRpc2FibGVkLW9wYWNpdHk6IDAuMzsgLyogb3IgaGludCB0ZXh0IG9yIGljb24gKi8KICAgICAgLS1saWdodC1zZWNvbmRhcnktb3BhY2l0eTogMC43OwogICAgICAtLWxpZ2h0LXByaW1hcnktb3BhY2l0eTogMS4wOwoKICAgIH0KCiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CmA7ZmEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChmYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IG1hPXhlYAo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewogICAgICAvKgogICAgICAgKiBZb3UgY2FuIHVzZSB0aGVzZSBnZW5lcmljIHZhcmlhYmxlcyBpbiB5b3VyIGVsZW1lbnRzIGZvciBlYXN5IHRoZW1pbmcuCiAgICAgICAqIEZvciBleGFtcGxlLCBpZiBhbGwgeW91ciBlbGVtZW50cyB1c2UgXGAtLXByaW1hcnktdGV4dC1jb2xvclxgIGFzIGl0cyBtYWluCiAgICAgICAqIGNvbG9yLCB0aGVuIHN3aXRjaGluZyBmcm9tIGEgbGlnaHQgdG8gYSBkYXJrIHRoZW1lIGlzIGp1c3QgYSBtYXR0ZXIgb2YKICAgICAgICogY2hhbmdpbmcgdGhlIHZhbHVlIG9mIFxgLS1wcmltYXJ5LXRleHQtY29sb3JcYCBpbiB5b3VyIGFwcGxpY2F0aW9uLgogICAgICAgKi8KICAgICAgLS1wcmltYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXRleHQtY29sb3IpOwogICAgICAtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIC0tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcik7CiAgICAgIC0tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtZGlzYWJsZWQtY29sb3IpOwogICAgICAtLWRpdmlkZXItY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3IpOwogICAgICAtLWVycm9yLWNvbG9yOiB2YXIoLS1wYXBlci1kZWVwLW9yYW5nZS1hNzAwKTsKCiAgICAgIC8qCiAgICAgICAqIFByaW1hcnkgYW5kIGFjY2VudCBjb2xvcnMuIEFsc28gc2VlIGNvbG9yLmpzIGZvciBtb3JlIGNvbG9ycy4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7CiAgICAgIC0tbGlnaHQtcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTEwMCk7CiAgICAgIC0tZGFyay1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNzAwKTsKCiAgICAgIC0tYWNjZW50LWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLWEyMDApOwogICAgICAtLWxpZ2h0LWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hMTAwKTsKICAgICAgLS1kYXJrLWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hNDAwKTsKCgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gTGlnaHQgYmFja2dyb3VuZCB0aGVtZQogICAgICAgKi8KICAgICAgLS1saWdodC10aGVtZS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICAtLWxpZ2h0LXRoZW1lLWJhc2UtY29sb3I6ICMwMDAwMDA7CiAgICAgIC0tbGlnaHQtdGhlbWUtdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcjogIzczNzM3MzsgIC8qIGZvciBzZWNvbmRhcnkgdGV4dCBhbmQgaWNvbnMgKi8KICAgICAgLS1saWdodC10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzliOWI5YjsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3I6ICNkYmRiZGI7CgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gRGFyayBiYWNrZ3JvdW5kIHRoZW1lCiAgICAgICAqLwogICAgICAtLWRhcmstdGhlbWUtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWRhcmstdGhlbWUtYmFzZS1jb2xvcjogI2ZmZmZmZjsKICAgICAgLS1kYXJrLXRoZW1lLXRleHQtY29sb3I6ICNmZmZmZmY7CiAgICAgIC0tZGFyay10aGVtZS1zZWNvbmRhcnktY29sb3I6ICNiY2JjYmM7ICAvKiBmb3Igc2Vjb25kYXJ5IHRleHQgYW5kIGljb25zICovCiAgICAgIC0tZGFyay10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzY0NjQ2NDsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWRhcmstdGhlbWUtZGl2aWRlci1jb2xvcjogIzNjM2MzYzsKCiAgICAgIC8qCiAgICAgICAqIERlcHJlY2F0ZWQgdmFsdWVzIGJlY2F1c2Ugb2YgdGhlaXIgY29uZnVzaW5nIG5hbWVzLgogICAgICAgKi8KICAgICAgLS10ZXh0LXByaW1hcnktY29sb3I6IHZhcigtLWRhcmstdGhlbWUtdGV4dC1jb2xvcik7CiAgICAgIC0tZGVmYXVsdC1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO21hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobWEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBnYT17cHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxhdHRhY2hlZDpmdW5jdGlvbigpe30sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IF9hPW51bGw7Y29uc3QgeWE9e3Byb3BlcnRpZXM6e3ZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGludmFsaWQ6e25vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfaW52YWxpZENoYW5nZWQifX0scmVnaXN0ZXJlZDpmdW5jdGlvbigpe19hPW5ldyBJbyh7dHlwZToidmFsaWRhdG9yIn0pfSxfaW52YWxpZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmludmFsaWQ/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIil9LGdldCBfdmFsaWRhdG9yKCl7cmV0dXJuIF9hJiZfYS5ieUtleSh0aGlzLnZhbGlkYXRvcil9LGhhc1ZhbGlkYXRvcjpmdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl92YWxpZGF0b3J9LHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmFsaWQ9dm9pZCAwPT09dCYmdm9pZCAwIT09dGhpcy52YWx1ZT8hdGhpcy5fZ2V0VmFsaWRpdHkodGhpcy52YWx1ZSk6IXRoaXMuX2dldFZhbGlkaXR5KHQpLCF0aGlzLmludmFsaWR9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5oYXNWYWxpZGF0b3IoKXx8dGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlKHQpfX0sdmE9e3Byb3BlcnRpZXM6e2NoZWNrZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsbm90aWZ5OiEwLG9ic2VydmVyOiJfY2hlY2tlZENoYW5nZWQifSx0b2dnbGVzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSx2YWx1ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9uIixvYnNlcnZlcjoiX3ZhbHVlQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcmVxdWlyZWRDaGFuZ2VkKHJlcXVpcmVkKSJdLGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNJcm9uQ2hlY2tlZEVsZW1lbnRCZWhhdmlvcj0hMH0sX2dldFZhbGlkaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5yZXF1aXJlZHx8dGhpcy5jaGVja2VkfSxfcmVxdWlyZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5yZXF1aXJlZD90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIpfSxfY2hlY2tlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT10aGlzLmNoZWNrZWQsdGhpcy5maXJlKCJpcm9uLWNoYW5nZSIpfSxfdmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbD09dGhpcy52YWx1ZSYmKHRoaXMudmFsdWU9Im9uIil9fSxiYT17b2JzZXJ2ZXJzOlsiX2ZvY3VzZWRDaGFuZ2VkKHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIl0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ob2xkRG93bj10KX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3ZhciB0PXVhLl9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gdC5pZD0iaW5rIix0LnNldEF0dHJpYnV0ZSgiY2VudGVyIiwiIiksdC5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiKSx0fX0seGE9W2FhLHJhLHVhLGJhXSx3YT1beGEsW2dhLHlhLHZhXSx7X2NoZWNrZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dmEuX2NoZWNrZWRDaGFuZ2VkLmNhbGwodGhpcyksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuY2hlY2tlZD90aGlzLl9yaXBwbGUuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiIik6dGhpcy5fcmlwcGxlLnJlbW92ZUF0dHJpYnV0ZSgiY2hlY2tlZCIpKX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3VhLl9idXR0b25TdGF0ZUNoYW5nZWQuY2FsbCh0aGlzKSx0aGlzLmRpc2FibGVkfHx0aGlzLmlzQXR0YWNoZWQmJih0aGlzLmNoZWNrZWQ9dGhpcy5hY3RpdmUpfX1dLFNhPXhlYDxzdHlsZT4KICA6aG9zdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemU6IHZhcigtLXBhcGVyLWNoZWNrYm94LXNpemUsIDE4cHgpOwogICAgLyogLTFweCBpcyBhIHNlbnRpbmVsIGZvciB0aGUgZGVmYXVsdCBhbmQgaXMgcmVwbGFjZWQgaW4gXGBhdHRhY2hlZFxgLiAqLwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplOiB2YXIoLS1wYXBlci1jaGVja2JveC1pbmstc2l6ZSwgLTFweCk7CiAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KCiAgOmhvc3QoW2hpZGRlbl0pIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CgogIDpob3N0KDpmb2N1cykgewogICAgb3V0bGluZTogbm9uZTsKICB9CgogIC5oaWRkZW4gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogICNjaGVja2JveENvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1pbi13aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1hcmdpbjogdmFyKC0tcGFwZXItY2hlY2tib3gtbWFyZ2luLCBpbml0aWFsKTsKICAgIHZlcnRpY2FsLWFsaWduOiB2YXIoLS1wYXBlci1jaGVja2JveC12ZXJ0aWNhbC1hbGlnbiwgbWlkZGxlKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgfQoKICAjaW5rIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKCiAgICAvKiBDZW50ZXIgdGhlIHJpcHBsZSBpbiB0aGUgY2hlY2tib3ggYnkgbmVnYXRpdmUgb2Zmc2V0dGluZyBpdCBieQogICAgICogKGlua1dpZHRoIC0gcmlwcGxlV2lkdGgpIC8gMiAqLwogICAgdG9wOiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpOwogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC42OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQoKICAjaW5rOmRpcihydGwpIHsKICAgIHJpZ2h0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBhdXRvOwogIH0KCiAgI2lua1tjaGVja2VkXSB7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogICNjaGVja2JveCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyOiBzb2xpZCAycHg7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwoKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIC8qIGNoZWNrYm94IGNoZWNrZWQgYW5pbWF0aW9ucyAqLwogICNjaGVja2JveC5jaGVja2VkICNjaGVja21hcmsgewogICAgLXdlYmtpdC1hbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CiAgICBhbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CgogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLWNoZWNrYm94LWFuaW1hdGlvbi1kdXJhdGlvbiwgMTQwbXMpOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIEAtd2Via2l0LWtleWZyYW1lcyBjaGVja21hcmstZXhwYW5kIHsKICAgIDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgfQoKICBAa2V5ZnJhbWVzIGNoZWNrbWFyay1leHBhbmQgewogICAgMCUgewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSByb3RhdGUoNDVkZWcpOwogICAgfQogIH0KCiAgI2NoZWNrYm94LmNoZWNrZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjY2hlY2ttYXJrIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAzNiU7CiAgICBoZWlnaHQ6IDcwJTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogY2FsYygyLzE1ICogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrbWFyay1jb2xvciwgd2hpdGUpOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA5NyUgODYlOwogICAgdHJhbnNmb3JtLW9yaWdpbjogOTclIDg2JTsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiBwcm90ZWN0IGFnYWluc3QgcGFnZS1sZXZlbCBib3gtc2l6aW5nICovCiAgfQoKICAjY2hlY2ttYXJrOmRpcihydGwpIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDE0JTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAxNCU7CiAgfQoKICAvKiBsYWJlbCAqLwogICNjaGVja2JveExhYmVsIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbDsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI2NoZWNrYm94TGFiZWwgewogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNoZWNrZWQtY29sb3IsIHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbC1jaGVja2VkOwogIH0KCiAgI2NoZWNrYm94TGFiZWw6ZGlyKHJ0bCkgewogICAgcGFkZGluZy1yaWdodDogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtc3BhY2luZywgOHB4KTsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CgogICNjaGVja2JveExhYmVsW2hpZGRlbl0gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8qIGRpc2FibGVkIHN0YXRlICovCgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveCB7CiAgICBvcGFjaXR5OiAwLjU7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdW2NoZWNrZWRdKSAjY2hlY2tib3ggewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveExhYmVsICB7CiAgICBvcGFjaXR5OiAwLjY1OwogIH0KCiAgLyogaW52YWxpZCBzdGF0ZSAqLwogICNjaGVja2JveC5pbnZhbGlkOm5vdCguY2hlY2tlZCkgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1lcnJvci1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICB9Cjwvc3R5bGU+Cgo8ZGl2IGlkPSJjaGVja2JveENvbnRhaW5lciI+CiAgPGRpdiBpZD0iY2hlY2tib3giIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrYm94Q2xhc3MoY2hlY2tlZCwgaW52YWxpZCldXSI+CiAgICA8ZGl2IGlkPSJjaGVja21hcmsiIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrbWFya0NsYXNzKGNoZWNrZWQpXV0iPjwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImNoZWNrYm94TGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmlmKFNhLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLGpyKHtfdGVtcGxhdGU6U2EsaXM6InBhcGVyLWNoZWNrYm94IixiZWhhdmlvcnM6W3dhXSxob3N0QXR0cmlidXRlczp7cm9sZToiY2hlY2tib3giLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtEaSh0aGlzLChmdW5jdGlvbigpe2lmKCItMXB4Ij09PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUiKS50cmltKCkpe3ZhciB0PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSIpLnRyaW0oKSxlPSJweCIsbj10Lm1hdGNoKC9bQS1aYS16XSskLyk7bnVsbCE9PW4mJihlPW5bMF0pO3ZhciBpPXBhcnNlRmxvYXQodCkscj04LzMqaTsicHgiPT09ZSYmKHI9TWF0aC5mbG9vcihyKSklMiE9aSUyJiZyKyssdGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLWNoZWNrYm94LWluay1zaXplIjpyK2V9KX19KSl9LF9jb21wdXRlQ2hlY2tib3hDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPSIiO3JldHVybiB0JiYobis9ImNoZWNrZWQgIiksZSYmKG4rPSJpbnZhbGlkIiksbn0sX2NvbXB1dGVDaGVja21hcmtDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdD8iIjoiaGlkZGVuIn0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLmNoZWNrYm94Q29udGFpbmVyLGJhLl9jcmVhdGVSaXBwbGUuY2FsbCh0aGlzKX19KSwhd2luZG93LnBvbHltZXJTa2lwTG9hZGluZ0ZvbnRSb2JvdG8pe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO3QucmVsPSJzdHlsZXNoZWV0Iix0LnR5cGU9InRleHQvY3NzIix0LmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHQuaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bytNb25vOjQwMCw3MDB8Um9ib3RvOjQwMCwzMDAsMzAwaXRhbGljLDQwMGl0YWxpYyw1MDAsNTAwaXRhbGljLDcwMCw3MDBpdGFsaWMiLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IE1hPXhlYDxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAvKiBTaGFyZWQgU3R5bGVzICovCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tYmFzZTogewogICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgJ05vdG8nLCBzYW5zLXNlcmlmOwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1jb2RlOiB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsICdDb25zb2xhcycsICdNZW5sbycsIG1vbm9zcGFjZTsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tZXhwZW5zaXZlLWtlcm5pbmc6IHsKICAgICAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA6IHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH07CgogICAgICAvKiBNYXRlcmlhbCBGb250IFN0eWxlcyAqLwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXk0OiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wNDRlbTsKICAgICAgICBsaW5lLWhlaWdodDogMTIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTM6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiA1NnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDI2ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDQ1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMThlbTsKICAgICAgICBsaW5lLWhlaWdodDogNDhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMzRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAxZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtaGVhZGxpbmU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMTJlbTsKICAgICAgICBsaW5lLWhlaWdodDogMzJweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC10aXRsZTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1zdWJoZWFkOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYm9keTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1ib2R5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNhcHRpb246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDExZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtbWVudTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1idXR0b246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDE4ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb2RlMjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWNvZGU7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvZGUxOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tY29kZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgfQoKICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO01hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoTWEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBFYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO0VhLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLEVhLmlubmVySFRNTD0nPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWRpYWxvZy1zaGFyZWQtc3R5bGVzIj5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMjRweCA0MHB4O1xuXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLWRpYWxvZy1iYWNrZ3JvdW5kLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1ib2R5MTtcbiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwO1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2c7XG4gICAgICB9XG5cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCopIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgcGFkZGluZzogMCAyNHB4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZCgubm8tcGFkZGluZykge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICBcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCo6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEluIDEueCwgdGhpcyBzZWxlY3RvciB3YXMgYDpob3N0ID4gOjpjb250ZW50IGgyYC4gSW4gMi54IDxzbG90PiBhbGxvd3NcbiAgICAgIHRvIHNlbGVjdCBkaXJlY3QgY2hpbGRyZW4gb25seSwgd2hpY2ggaW5jcmVhc2VzIHRoZSB3ZWlnaHQgb2YgdGhpc1xuICAgICAgc2VsZWN0b3IsIHNvIHdlIGhhdmUgdG8gcmUtZGVmaW5lIGZpcnN0LWNoaWxkL2xhc3QtY2hpbGQgbWFyZ2lucyBiZWxvdy4gKi9cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKGgyKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtdGl0bGU7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgLyogQXBwbHkgbWl4aW4gYWdhaW4sIGluIGNhc2UgaXQgc2V0cyBtYXJnaW4tdG9wLiAqL1xuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoaDI6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlO1xuICAgICAgfVxuXG4gICAgICAvKiBBcHBseSBtaXhpbiBhZ2FpbiwgaW4gY2FzZSBpdCBzZXRzIG1hcmdpbi1ib3R0b20uICovXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZChoMjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoLnBhcGVyLWRpYWxvZy1idXR0b25zKSxcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKC5idXR0b25zKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogOHB4IDhweCA4cHggMjRweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1kaWFsb2ctYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7XG4gICAgICAgIEBhcHBseSAtLWxheW91dC1lbmQtanVzdGlmaWVkO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvdGVtcGxhdGU+XG48L2RvbS1tb2R1bGU+Jyxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEVhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgVGE9W3twcm9wZXJ0aWVzOnthbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxlbnRyeUFuaW1hdGlvbjp7b2JzZXJ2ZXI6Il9lbnRyeUFuaW1hdGlvbkNoYW5nZWQiLHR5cGU6U3RyaW5nfSxleGl0QW5pbWF0aW9uOntvYnNlcnZlcjoiX2V4aXRBbmltYXRpb25DaGFuZ2VkIix0eXBlOlN0cmluZ319LF9lbnRyeUFuaW1hdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGlvbkNvbmZpZz10aGlzLmFuaW1hdGlvbkNvbmZpZ3x8e30sdGhpcy5hbmltYXRpb25Db25maWcuZW50cnk9W3tuYW1lOnRoaXMuZW50cnlBbmltYXRpb24sbm9kZTp0aGlzfV19LF9leGl0QW5pbWF0aW9uQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9uQ29uZmlnPXRoaXMuYW5pbWF0aW9uQ29uZmlnfHx7fSx0aGlzLmFuaW1hdGlvbkNvbmZpZy5leGl0PVt7bmFtZTp0aGlzLmV4aXRBbmltYXRpb24sbm9kZTp0aGlzfV19LF9jb3B5UHJvcGVydGllczpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXX0sX2Nsb25lQ29uZmlnOmZ1bmN0aW9uKHQpe3ZhciBlPXtpc0Nsb25lOiEwfTtyZXR1cm4gdGhpcy5fY29weVByb3BlcnRpZXMoZSx0KSxlfSxfZ2V0QW5pbWF0aW9uQ29uZmlnUmVjdXJzaXZlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZylpZih0aGlzLmFuaW1hdGlvbkNvbmZpZy52YWx1ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnLnZhbHVlKXRoaXMuX3dhcm4odGhpcy5fbG9nZigicGxheUFuaW1hdGlvbiIsIlBsZWFzZSBwdXQgJ2FuaW1hdGlvbkNvbmZpZycgaW5zaWRlIG9mIHlvdXIgY29tcG9uZW50cyAncHJvcGVydGllcycgb2JqZWN0IGluc3RlYWQgb2Ygb3V0c2lkZSBvZiBpdC4iKSk7ZWxzZSBpZihpPXQ/dGhpcy5hbmltYXRpb25Db25maWdbdF06dGhpcy5hbmltYXRpb25Db25maWcsQXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKSxpKWZvcih2YXIgcixvPTA7cj1pW29dO28rKylpZihyLmFuaW1hdGFibGUpci5hbmltYXRhYmxlLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUoci50eXBlfHx0LGUsbik7ZWxzZSBpZihyLmlkKXt2YXIgYT1lW3IuaWRdO2E/KGEuaXNDbG9uZXx8KGVbci5pZF09dGhpcy5fY2xvbmVDb25maWcoYSksYT1lW3IuaWRdKSx0aGlzLl9jb3B5UHJvcGVydGllcyhhLHIpKTplW3IuaWRdPXJ9ZWxzZSBuLnB1c2gocil9LGdldEFuaW1hdGlvbkNvbmZpZzpmdW5jdGlvbih0KXt2YXIgZT17fSxuPVtdO2Zvcih2YXIgaSBpbiB0aGlzLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUodCxlLG4pLGUpbi5wdXNoKGVbaV0pO3JldHVybiBufX0se19jb25maWd1cmVBbmltYXRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49W107aWYodC5sZW5ndGg+MClmb3IobGV0IGUsaT0wO2U9dFtpXTtpKyspe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZS5uYW1lKTtpZih0LmlzTmVvbkFuaW1hdGlvbil7bGV0IGk9bnVsbDt0LmNvbmZpZ3VyZXx8KHQuY29uZmlndXJlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSksaT10LmNvbmZpZ3VyZShlKSxuLnB1c2goe3Jlc3VsdDppLGNvbmZpZzplLG5lb25BbmltYXRpb246dH0pfWVsc2UgY29uc29sZS53YXJuKHRoaXMuaXMrIjoiLGUubmFtZSwibm90IGZvdW5kISIpfWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtsZXQgdD1uW2ldLnJlc3VsdCxyPW5baV0uY29uZmlnLG89bltpXS5uZW9uQW5pbWF0aW9uO3RyeXsiZnVuY3Rpb24iIT10eXBlb2YgdC5jYW5jZWwmJih0PWRvY3VtZW50LnRpbWVsaW5lLnBsYXkodCkpfWNhdGNoKGUpe3Q9bnVsbCxjb25zb2xlLndhcm4oIkNvdWxkbnQgcGxheSIsIigiLHIubmFtZSwiKS4iLGUpfXQmJmUucHVzaCh7bmVvbkFuaW1hdGlvbjpvLGNvbmZpZzpyLGFuaW1hdGlvbjp0fSl9cmV0dXJuIGV9LF9zaG91bGRDb21wbGV0ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9ITAsbj0wO248dC5sZW5ndGg7bisrKWlmKCJmaW5pc2hlZCIhPXRbbl0uYW5pbWF0aW9uLnBsYXlTdGF0ZSl7ZT0hMTticmVha31yZXR1cm4gZX0sX2NvbXBsZXRlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ubmVvbkFuaW1hdGlvbi5jb21wbGV0ZSh0W2VdLmNvbmZpZyk7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmFuaW1hdGlvbi5jYW5jZWwoKX0scGxheUFuaW1hdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QW5pbWF0aW9uQ29uZmlnKHQpO2lmKG4pe3RoaXMuX2FjdGl2ZT10aGlzLl9hY3RpdmV8fHt9LHRoaXMuX2FjdGl2ZVt0XSYmKHRoaXMuX2NvbXBsZXRlKHRoaXMuX2FjdGl2ZVt0XSksZGVsZXRlIHRoaXMuX2FjdGl2ZVt0XSk7dmFyIGk9dGhpcy5fY29uZmlndXJlQW5pbWF0aW9ucyhuKTtpZigwIT1pLmxlbmd0aCl7dGhpcy5fYWN0aXZlW3RdPWk7Zm9yKHZhciByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5hbmltYXRpb24ub25maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl9zaG91bGRDb21wbGV0ZShpKSYmKHRoaXMuX2NvbXBsZXRlKGkpLGRlbGV0ZSB0aGlzLl9hY3RpdmVbdF0sdGhpcy5maXJlKCJuZW9uLWFuaW1hdGlvbi1maW5pc2giLGUse2J1YmJsZXM6ITF9KSl9LmJpbmQodGhpcyl9ZWxzZSB0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsZSx7YnViYmxlczohMX0pfX0sY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2FjdGl2ZSl7dmFyIGU9dGhpcy5fYWN0aXZlW3RdO2Zvcih2YXIgbiBpbiBlKWVbbl0uYW5pbWF0aW9uLmNhbmNlbCgpfXRoaXMuX2FjdGl2ZT17fX19XTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgQ2E7Y29uc3QgQWE9e3Byb3BlcnRpZXM6e3NpemluZ1RhcmdldDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LGZpdEludG86e3R5cGU6T2JqZWN0LHZhbHVlOndpbmRvd30sbm9PdmVybGFwOnt0eXBlOkJvb2xlYW59LHBvc2l0aW9uVGFyZ2V0Ont0eXBlOkVsZW1lbnR9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmd9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nfSxkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0saG9yaXpvbnRhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LHZlcnRpY2FsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sYXV0b0ZpdE9uQXR0YWNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2ZpdEluZm86e3R5cGU6T2JqZWN0fX0sZ2V0IF9maXRXaWR0aCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVyV2lkdGg6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofSxnZXQgX2ZpdEhlaWdodCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVySGVpZ2h0OnRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGdldCBfZml0TGVmdCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/MDp0aGlzLmZpdEludG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0sZ2V0IF9maXRUb3AoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93PzA6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH0sZ2V0IF9kZWZhdWx0UG9zaXRpb25UYXJnZXQoKXt2YXIgdD1lcih0aGlzKS5wYXJlbnROb2RlO3JldHVybiB0JiZ0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiYodD10Lmhvc3QpLHR9LGdldCBfbG9jYWxlSG9yaXpvbnRhbEFsaWduKCl7aWYodGhpcy5faXNSVEwpe2lmKCJyaWdodCI9PT10aGlzLmhvcml6b250YWxBbGlnbilyZXR1cm4ibGVmdCI7aWYoImxlZnQiPT09dGhpcy5ob3Jpem9udGFsQWxpZ24pcmV0dXJuInJpZ2h0In1yZXR1cm4gdGhpcy5ob3Jpem9udGFsQWxpZ259LGdldCBfX3Nob3VsZFBvc2l0aW9uKCl7cmV0dXJuKHRoaXMuaG9yaXpvbnRhbEFsaWdufHx0aGlzLnZlcnRpY2FsQWxpZ24pJiZ0aGlzLnBvc2l0aW9uVGFyZ2V0fSxnZXQgX2lzUlRMKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX21lbW9pemVkSXNSVEwmJih0aGlzLl9tZW1vaXplZElzUlRMPSJydGwiPT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb24pLHRoaXMuX21lbW9pemVkSXNSVEx9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvblRhcmdldD10aGlzLnBvc2l0aW9uVGFyZ2V0fHx0aGlzLl9kZWZhdWx0UG9zaXRpb25UYXJnZXQsdGhpcy5hdXRvRml0T25BdHRhY2gmJigibm9uZSI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXNwbGF5P3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLmZpdCgpfS5iaW5kKHRoaXMpKTood2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuZml0KCkpKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fZGVmZXJyZWRGaXQmJihjbGVhclRpbWVvdXQodGhpcy5fX2RlZmVycmVkRml0KSx0aGlzLl9fZGVmZXJyZWRGaXQ9bnVsbCl9LGZpdDpmdW5jdGlvbigpe3RoaXMucG9zaXRpb24oKSx0aGlzLmNvbnN0cmFpbigpLHRoaXMuY2VudGVyKCl9LF9kaXNjb3ZlckluZm86ZnVuY3Rpb24oKXtpZighdGhpcy5fZml0SW5mbyl7dmFyIHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyksZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnNpemluZ1RhcmdldCk7dGhpcy5fZml0SW5mbz17aW5saW5lU3R5bGU6e3RvcDp0aGlzLnN0eWxlLnRvcHx8IiIsbGVmdDp0aGlzLnN0eWxlLmxlZnR8fCIiLHBvc2l0aW9uOnRoaXMuc3R5bGUucG9zaXRpb258fCIifSxzaXplcklubGluZVN0eWxlOnttYXhXaWR0aDp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhXaWR0aHx8IiIsbWF4SGVpZ2h0OnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heEhlaWdodHx8IiIsYm94U2l6aW5nOnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZ3x8IiJ9LHBvc2l0aW9uZWRCeTp7dmVydGljYWxseToiYXV0byIhPT10LnRvcD8idG9wIjoiYXV0byIhPT10LmJvdHRvbT8iYm90dG9tIjpudWxsLGhvcml6b250YWxseToiYXV0byIhPT10LmxlZnQ/ImxlZnQiOiJhdXRvIiE9PXQucmlnaHQ/InJpZ2h0IjpudWxsfSxzaXplZEJ5OntoZWlnaHQ6Im5vbmUiIT09ZS5tYXhIZWlnaHQsd2lkdGg6Im5vbmUiIT09ZS5tYXhXaWR0aCxtaW5XaWR0aDpwYXJzZUludChlLm1pbldpZHRoLDEwKXx8MCxtaW5IZWlnaHQ6cGFyc2VJbnQoZS5taW5IZWlnaHQsMTApfHwwfSxtYXJnaW46e3RvcDpwYXJzZUludCh0Lm1hcmdpblRvcCwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodC5tYXJnaW5SaWdodCwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHQubWFyZ2luQm90dG9tLDEwKXx8MCxsZWZ0OnBhcnNlSW50KHQubWFyZ2luTGVmdCwxMCl8fDB9fX19LHJlc2V0Rml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZml0SW5mb3x8e307Zm9yKHZhciBlIGluIHQuc2l6ZXJJbmxpbmVTdHlsZSl0aGlzLnNpemluZ1RhcmdldC5zdHlsZVtlXT10LnNpemVySW5saW5lU3R5bGVbZV07Zm9yKHZhciBlIGluIHQuaW5saW5lU3R5bGUpdGhpcy5zdHlsZVtlXT10LmlubGluZVN0eWxlW2VdO3RoaXMuX2ZpdEluZm89bnVsbH0scmVmaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNpemluZ1RhcmdldC5zY3JvbGxMZWZ0LGU9dGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsVG9wO3RoaXMucmVzZXRGaXQoKSx0aGlzLmZpdCgpLHRoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbExlZnQ9dCx0aGlzLnNpemluZ1RhcmdldC5zY3JvbGxUb3A9ZX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXJldHVybjt0aGlzLl9kaXNjb3ZlckluZm8oKSx3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5mbHVzaCgpLHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmc9ImJvcmRlci1ib3giLHRoaXMuc3R5bGUubGVmdD0iMHB4Iix0aGlzLnN0eWxlLnRvcD0iMHB4Ijt2YXIgdD10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMucG9zaXRpb25UYXJnZXQpLG49dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMuZml0SW50byk7bGV0IGkscixvLGE7dGhpcy5leHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzJiYoaT10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCxyPXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldEhlaWdodCxvPXRoaXMuc2l6aW5nVGFyZ2V0LmNsaWVudFdpZHRoLGE9dGhpcy5zaXppbmdUYXJnZXQuY2xpZW50SGVpZ2h0KTt2YXIgcz10aGlzLl9maXRJbmZvLm1hcmdpbixsPXRoaXMuX19nZXRQb3NpdGlvbih0aGlzLl9sb2NhbGVIb3Jpem9udGFsQWxpZ24sdGhpcy52ZXJ0aWNhbEFsaWduLHt3aWR0aDp0LndpZHRoK3MubGVmdCtzLnJpZ2h0LGhlaWdodDp0LmhlaWdodCtzLnRvcCtzLmJvdHRvbX0sdCxlLG4pLGM9bC5sZWZ0K3MubGVmdCx1PWwudG9wK3MudG9wLGg9TWF0aC5taW4obi5yaWdodC1zLnJpZ2h0LGMrdC53aWR0aCksZD1NYXRoLm1pbihuLmJvdHRvbS1zLmJvdHRvbSx1K3QuaGVpZ2h0KTtjPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4oYyxoLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5XaWR0aCkpLHU9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4odSxkLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpKTtjb25zdCBwPU1hdGgubWF4KGgtYyx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpLGY9TWF0aC5tYXgoZC11LHRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPXArInB4Iix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhIZWlnaHQ9ZisicHgiO2NvbnN0IG09Yy10LmxlZnQsZz11LXQudG9wO2lmKHRoaXMuc3R5bGUubGVmdD1gJHttfXB4YCx0aGlzLnN0eWxlLnRvcD1gJHtnfXB4YCx0aGlzLmV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnMpe2NvbnN0IHQ9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LGU9dC10aGlzLnNpemluZ1RhcmdldC5jbGllbnRIZWlnaHQtKHItYSk7aWYoZT4wKXtjb25zdCBpPU1hdGgubWluKG4uaGVpZ2h0LXMudG9wLXMuYm90dG9tLGYrZSk7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4SGVpZ2h0PWAke2l9cHhgO2NvbnN0IHI9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LG89ci10O2xldCBhOyJ0b3AiPT09bC52ZXJ0aWNhbEFsaWduP2E9ZzoibWlkZGxlIj09PWwudmVydGljYWxBbGlnbj9hPWctby8yOiJib3R0b20iPT09bC52ZXJ0aWNhbEFsaWduJiYoYT1nLW8pLGE9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4oYSxuLmJvdHRvbS1zLmJvdHRvbS1yKSksdGhpcy5zdHlsZS50b3A9YCR7YX1weGB9Y29uc3QgYz10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCx1PWMtdGhpcy5zaXppbmdUYXJnZXQuY2xpZW50V2lkdGgtKGktbyk7aWYodT4wKXtjb25zdCB0PSgoKT0+e2lmKHZvaWQgMCE9PUNhKXJldHVybiBDYTtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO09iamVjdC5hc3NpZ24odC5zdHlsZSx7b3ZlcmZsb3c6ImF1dG8iLHBvc2l0aW9uOiJmaXhlZCIsbGVmdDoiMHB4Iix0b3A6IjBweCIsbWF4V2lkdGg6IjEwMHB4IixtYXhIZWlnaHQ6IjEwMHB4In0pO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc3R5bGUud2lkdGg9IjIwMHB4IixlLnN0eWxlLmhlaWdodD0iMjAwcHgiLHQuYXBwZW5kQ2hpbGQoZSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSxDYT1NYXRoLmFicyh0Lm9mZnNldFdpZHRoLTEwMCk+MT90Lm9mZnNldFdpZHRoLXQuY2xpZW50V2lkdGg6MCxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLENhfSkoKSxlPU1hdGgubWluKG4ud2lkdGgtcy5sZWZ0LXMucmlnaHQscCt1LXQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPWAke2V9cHhgO2NvbnN0IGk9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0V2lkdGgrdCxyPWktYztsZXQgbzsibGVmdCI9PT1sLmhvcml6b250YWxBbGlnbj9vPW06ImNlbnRlciI9PT1sLmhvcml6b250YWxBbGlnbj9vPW0tci8yOiJyaWdodCI9PT1sLmhvcml6b250YWxBbGlnbiYmKG89bS1yKSxvPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4obyxuLnJpZ2h0LXMucmlnaHQtaSkpLHRoaXMuc3R5bGUubGVmdD1gJHtvfXB4YH19fSxjb25zdHJhaW46ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvO3QucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS50b3A9IjBweCIpLHQucG9zaXRpb25lZEJ5Lmhvcml6b250YWxseXx8KHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnN0eWxlLmxlZnQ9IjBweCIpLHRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCI7dmFyIGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0LnNpemVkQnkuaGVpZ2h0fHx0aGlzLl9fc2l6ZURpbWVuc2lvbihlLHQucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHksInRvcCIsImJvdHRvbSIsIkhlaWdodCIpLHQuc2l6ZWRCeS53aWR0aHx8dGhpcy5fX3NpemVEaW1lbnNpb24oZSx0LnBvc2l0aW9uZWRCeS5ob3Jpem9udGFsbHksImxlZnQiLCJyaWdodCIsIldpZHRoIil9fSxfc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3RoaXMuX19zaXplRGltZW5zaW9uKHQsZSxuLGkscil9LF9fc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPXRoaXMuX2ZpdEluZm8sYT10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKSxzPSJXaWR0aCI9PT1yP2Eud2lkdGg6YS5oZWlnaHQsbD1lPT09aSxjPSJvZmZzZXQiK3I7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGVbIm1heCIrcl09cy1vLm1hcmdpbltsP246aV0tKGw/cy10W2ldOnRbbl0pLSh0aGlzW2NdLXRoaXMuc2l6aW5nVGFyZ2V0W2NdKSsicHgifSxjZW50ZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvLnBvc2l0aW9uZWRCeTtpZighdC52ZXJ0aWNhbGx5fHwhdC5ob3Jpem9udGFsbHkpe3RoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnRvcD0iMHB4IiksdC5ob3Jpem9udGFsbHl8fCh0aGlzLnN0eWxlLmxlZnQ9IjBweCIpO3ZhciBlPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKTtpZighdC52ZXJ0aWNhbGx5KXRoaXMuc3R5bGUudG9wPW4udG9wLWUudG9wKyhuLmhlaWdodC1lLmhlaWdodCkvMisicHgiO2lmKCF0Lmhvcml6b250YWxseSl0aGlzLnN0eWxlLmxlZnQ9bi5sZWZ0LWUubGVmdCsobi53aWR0aC1lLndpZHRoKS8yKyJweCJ9fX0sX19nZXROb3JtYWxpemVkUmVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdD09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8dD09PXdpbmRvdz97dG9wOjAsbGVmdDowLHdpZHRoOndpbmRvdy5pbm5lcldpZHRoLGhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHQscmlnaHQ6d2luZG93LmlubmVyV2lkdGgsYm90dG9tOndpbmRvdy5pbm5lckhlaWdodH06dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sX19nZXRPZmZzY3JlZW5BcmVhOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1NYXRoLm1pbigwLHQudG9wKStNYXRoLm1pbigwLG4uYm90dG9tLSh0LnRvcCtlLmhlaWdodCkpLHI9TWF0aC5taW4oMCx0LmxlZnQpK01hdGgubWluKDAsbi5yaWdodC0odC5sZWZ0K2Uud2lkdGgpKTtyZXR1cm4gTWF0aC5hYnMoaSkqZS53aWR0aCtNYXRoLmFicyhyKSplLmhlaWdodH0sX19nZXRQb3NpdGlvbjpmdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGEscz1be3ZlcnRpY2FsQWxpZ246InRvcCIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ci50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDpyLnRvcCt0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5yaWdodC1uLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDpyLmJvdHRvbS1uLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5yaWdodC1uLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH1dO2lmKHRoaXMubm9PdmVybGFwKXtmb3IodmFyIGw9MCxjPXMubGVuZ3RoO2w8YztsKyspe3ZhciB1PXt9O2Zvcih2YXIgaCBpbiBzW2xdKXVbaF09c1tsXVtoXTtzLnB1c2godSl9c1swXS50b3A9c1sxXS50b3ArPXIuaGVpZ2h0LHNbMl0udG9wPXNbM10udG9wLT1yLmhlaWdodCxzWzRdLmxlZnQ9c1s2XS5sZWZ0Kz1yLndpZHRoLHNbNV0ubGVmdD1zWzddLmxlZnQtPXIud2lkdGh9ZT0iYXV0byI9PT1lP251bGw6ZSwodD0iYXV0byI9PT10P251bGw6dCkmJiJjZW50ZXIiIT09dHx8KHMucHVzaCh7dmVydGljYWxBbGlnbjoidG9wIixob3Jpem9udGFsQWxpZ246ImNlbnRlciIsdG9wOnIudG9wK3RoaXMudmVydGljYWxPZmZzZXQrKHRoaXMubm9PdmVybGFwP3IuaGVpZ2h0OjApLGxlZnQ6ci5sZWZ0LWkud2lkdGgvMityLndpZHRoLzIrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSkscy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldC0odGhpcy5ub092ZXJsYXA/ci5oZWlnaHQ6MCksbGVmdDpyLmxlZnQtaS53aWR0aC8yK3Iud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSksZSYmIm1pZGRsZSIhPT1lfHwocy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoibGVmdCIsdG9wOnIudG9wLWkuaGVpZ2h0LzIrci5oZWlnaHQvMit0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/ci53aWR0aDowKX0pLHMucHVzaCh7dmVydGljYWxBbGlnbjoibWlkZGxlIixob3Jpem9udGFsQWxpZ246InJpZ2h0Iix0b3A6ci50b3AtaS5oZWlnaHQvMityLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLnJpZ2h0LW4ud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0LSh0aGlzLm5vT3ZlcmxhcD9yLndpZHRoOjApfSkpLCJtaWRkbGUiPT09ZSYmImNlbnRlciI9PT10JiZzLnB1c2goe3ZlcnRpY2FsQWxpZ246Im1pZGRsZSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLHRvcDpyLnRvcC1pLmhlaWdodC8yK3IuaGVpZ2h0LzIrdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdC1pLndpZHRoLzIrci53aWR0aC8yK3RoaXMuaG9yaXpvbnRhbE9mZnNldH0pO2ZvcihsPTA7bDxzLmxlbmd0aDtsKyspe3ZhciBkPXNbbF0scD1kLnZlcnRpY2FsQWxpZ249PT1lLGY9ZC5ob3Jpem9udGFsQWxpZ249PT10O2lmKCF0aGlzLmR5bmFtaWNBbGlnbiYmIXRoaXMubm9PdmVybGFwJiZwJiZmKXthPWQ7YnJlYWt9dmFyIG09KCFlfHxwKSYmKCF0fHxmKTtpZih0aGlzLmR5bmFtaWNBbGlnbnx8bSl7aWYoZC5vZmZzY3JlZW5BcmVhPXRoaXMuX19nZXRPZmZzY3JlZW5BcmVhKGQsbixvKSwwPT09ZC5vZmZzY3JlZW5BcmVhJiZtKXthPWQ7YnJlYWt9dmFyIGc9ZC5vZmZzY3JlZW5BcmVhLShhPWF8fGQpLm9mZnNjcmVlbkFyZWE7KGc8MHx8MD09PWcmJihwfHxmKSkmJihhPWQpfX1yZXR1cm4gYX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIGthPUVsZW1lbnQucHJvdG90eXBlLFBhPWthLm1hdGNoZXN8fGthLm1hdGNoZXNTZWxlY3Rvcnx8a2EubW96TWF0Y2hlc1NlbGVjdG9yfHxrYS5tc01hdGNoZXNTZWxlY3Rvcnx8a2Eub01hdGNoZXNTZWxlY3Rvcnx8a2Eud2Via2l0TWF0Y2hlc1NlbGVjdG9yO2NvbnN0IExhPW5ldyBjbGFzc3tnZXRUYWJiYWJsZU5vZGVzKHQpe3ZhciBlPVtdO3JldHVybiB0aGlzLl9jb2xsZWN0VGFiYmFibGVOb2Rlcyh0LGUpP3RoaXMuX3NvcnRCeVRhYkluZGV4KGUpOmV9aXNGb2N1c2FibGUodCl7cmV0dXJuIFBhLmNhbGwodCwiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGJ1dHRvbiwgb2JqZWN0Iik/UGEuY2FsbCh0LCI6bm90KFtkaXNhYmxlZF0pIik6UGEuY2FsbCh0LCJhW2hyZWZdLCBhcmVhW2hyZWZdLCBpZnJhbWUsIFt0YWJpbmRleF0sIFtjb250ZW50RWRpdGFibGVdIil9aXNUYWJiYWJsZSh0KXtyZXR1cm4gdGhpcy5pc0ZvY3VzYWJsZSh0KSYmUGEuY2FsbCh0LCc6bm90KFt0YWJpbmRleD0iLTEiXSknKSYmdGhpcy5faXNWaXNpYmxlKHQpfV9ub3JtYWxpemVkVGFiSW5kZXgodCl7aWYodGhpcy5pc0ZvY3VzYWJsZSh0KSl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fDA7cmV0dXJuIE51bWJlcihlKX1yZXR1cm4tMX1fY29sbGVjdFRhYmJhYmxlTm9kZXModCxlKXtpZih0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuITE7dmFyIG49dDtpZighdGhpcy5faXNWaXNpYmxlKG4pKXJldHVybiExO3ZhciBpLHI9dGhpcy5fbm9ybWFsaXplZFRhYkluZGV4KG4pLG89cj4wO3I+PTAmJmUucHVzaChuKSxpPSJjb250ZW50Ij09PW4ubG9jYWxOYW1lfHwic2xvdCI9PT1uLmxvY2FsTmFtZT9lcihuKS5nZXREaXN0cmlidXRlZE5vZGVzKCk6ZXIobi5yb290fHxuKS5jaGlsZHJlbjtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylvPXRoaXMuX2NvbGxlY3RUYWJiYWJsZU5vZGVzKGlbYV0sZSl8fG87cmV0dXJuIG99X2lzVmlzaWJsZSh0KXt2YXIgZT10LnN0eWxlO3JldHVybiJoaWRkZW4iIT09ZS52aXNpYmlsaXR5JiYibm9uZSIhPT1lLmRpc3BsYXkmJigiaGlkZGVuIiE9PShlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpKS52aXNpYmlsaXR5JiYibm9uZSIhPT1lLmRpc3BsYXkpfV9zb3J0QnlUYWJJbmRleCh0KXt2YXIgZT10Lmxlbmd0aDtpZihlPDIpcmV0dXJuIHQ7dmFyIG49TWF0aC5jZWlsKGUvMiksaT10aGlzLl9zb3J0QnlUYWJJbmRleCh0LnNsaWNlKDAsbikpLHI9dGhpcy5fc29ydEJ5VGFiSW5kZXgodC5zbGljZShuKSk7cmV0dXJuIHRoaXMuX21lcmdlU29ydEJ5VGFiSW5kZXgoaSxyKX1fbWVyZ2VTb3J0QnlUYWJJbmRleCh0LGUpe2Zvcih2YXIgbj1bXTt0Lmxlbmd0aD4wJiZlLmxlbmd0aD4wOyl0aGlzLl9oYXNMb3dlclRhYk9yZGVyKHRbMF0sZVswXSk/bi5wdXNoKGUuc2hpZnQoKSk6bi5wdXNoKHQuc2hpZnQoKSk7cmV0dXJuIG4uY29uY2F0KHQsZSl9X2hhc0xvd2VyVGFiT3JkZXIodCxlKXt2YXIgbj1NYXRoLm1heCh0LnRhYkluZGV4LDApLGk9TWF0aC5tYXgoZS50YWJJbmRleCwwKTtyZXR1cm4gMD09PW58fDA9PT1pP2k+bjpuPml9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLWJhY2tncm91bmQtY29sb3IsICMwMDApOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcDsKICAgICAgfQoKICAgICAgOmhvc3QoLm9wZW5lZCkgewogICAgICAgIG9wYWNpdHk6IHZhcigtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGFjaXR5LCAwLjYpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGVuZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLW92ZXJsYXktYmFja2Ryb3AiLHByb3BlcnRpZXM6e29wZW5lZDp7cmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifX0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uZW5kIn0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5fb3BlbmVkQ2hhbmdlZCh0aGlzLm9wZW5lZCl9LHByZXBhcmU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmIXRoaXMucGFyZW50Tm9kZSYmZXIoZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcyl9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMH0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sY29tcGxldGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZHx8dGhpcy5wYXJlbnROb2RlIT09ZG9jdW1lbnQuYm9keXx8ZXIodGhpcy5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzKX0sX29uVHJhbnNpdGlvbmVuZDpmdW5jdGlvbih0KXt0JiZ0LnRhcmdldD09PXRoaXMmJnRoaXMuY29tcGxldGUoKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24odCl7aWYodCl0aGlzLnByZXBhcmUoKTtlbHNle3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpOyIwcyIhPT1lLnRyYW5zaXRpb25EdXJhdGlvbiYmMCE9ZS5vcGFjaXR5fHx0aGlzLmNvbXBsZXRlKCl9dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fX29wZW5lZFJhZiYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fb3BlbmVkUmFmKSx0aGlzLl9fb3BlbmVkUmFmPW51bGwpLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuX19vcGVuZWRSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbCx0aGlzLnRvZ2dsZUNsYXNzKCJvcGVuZWQiLHRoaXMub3BlbmVkKX0uYmluZCh0aGlzKSkpfX0pO2NvbnN0IElhPW5ldwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9vdmVybGF5cz1bXSx0aGlzLl9taW5pbXVtWj0xMDEsdGhpcy5fYmFja2Ryb3BFbGVtZW50PW51bGwsY2koZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJ0YXAiLChmdW5jdGlvbigpe30pKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLHRoaXMuX29uQ2FwdHVyZUNsaWNrLmJpbmQodGhpcyksITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9vbkNhcHR1cmVGb2N1cy5iaW5kKHRoaXMpLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbkNhcHR1cmVLZXlEb3duLmJpbmQodGhpcyksITApfWdldCBiYWNrZHJvcEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BFbGVtZW50fHwodGhpcy5fYmFja2Ryb3BFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tb3ZlcmxheS1iYWNrZHJvcCIpKSx0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGRlZXBBY3RpdmVFbGVtZW50KCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtmb3IodCYmdCBpbnN0YW5jZW9mIEVsZW1lbnQhPSExfHwodD1kb2N1bWVudC5ib2R5KTt0LnJvb3QmJmVyKHQucm9vdCkuYWN0aXZlRWxlbWVudDspdD1lcih0LnJvb3QpLmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHR9X2JyaW5nT3ZlcmxheUF0SW5kZXhUb0Zyb250KHQpe3ZhciBlPXRoaXMuX292ZXJsYXlzW3RdO2lmKGUpe3ZhciBuPXRoaXMuX292ZXJsYXlzLmxlbmd0aC0xLGk9dGhpcy5fb3ZlcmxheXNbbl07aWYoaSYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KGUsaSkmJm4tLSwhKHQ+PW4pKXt2YXIgcj1NYXRoLm1heCh0aGlzLmN1cnJlbnRPdmVybGF5WigpLHRoaXMuX21pbmltdW1aKTtmb3IodGhpcy5fZ2V0WihlKTw9ciYmdGhpcy5fYXBwbHlPdmVybGF5WihlLHIpO3Q8bjspdGhpcy5fb3ZlcmxheXNbdF09dGhpcy5fb3ZlcmxheXNbdCsxXSx0Kys7dGhpcy5fb3ZlcmxheXNbbl09ZX19fWFkZE9yUmVtb3ZlT3ZlcmxheSh0KXt0Lm9wZW5lZD90aGlzLmFkZE92ZXJsYXkodCk6dGhpcy5yZW1vdmVPdmVybGF5KHQpfWFkZE92ZXJsYXkodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZih0KTtpZihlPj0wKXJldHVybiB0aGlzLl9icmluZ092ZXJsYXlBdEluZGV4VG9Gcm9udChlKSx2b2lkIHRoaXMudHJhY2tCYWNrZHJvcCgpO3ZhciBuPXRoaXMuX292ZXJsYXlzLmxlbmd0aCxpPXRoaXMuX292ZXJsYXlzW24tMV0scj1NYXRoLm1heCh0aGlzLl9nZXRaKGkpLHRoaXMuX21pbmltdW1aKSxvPXRoaXMuX2dldFoodCk7aSYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KHQsaSkmJih0aGlzLl9hcHBseU92ZXJsYXlaKGksciksbi0tLHI9TWF0aC5tYXgodGhpcy5fZ2V0Wih0aGlzLl9vdmVybGF5c1tuLTFdKSx0aGlzLl9taW5pbXVtWikpO288PXImJnRoaXMuX2FwcGx5T3ZlcmxheVoodCxyKSx0aGlzLl9vdmVybGF5cy5zcGxpY2UobiwwLHQpLHRoaXMudHJhY2tCYWNrZHJvcCgpfXJlbW92ZU92ZXJsYXkodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZih0KTstMSE9PWUmJih0aGlzLl9vdmVybGF5cy5zcGxpY2UoZSwxKSx0aGlzLnRyYWNrQmFja2Ryb3AoKSl9Y3VycmVudE92ZXJsYXkoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheXNbdGhpcy5fb3ZlcmxheXMubGVuZ3RoLTFdfWN1cnJlbnRPdmVybGF5Wigpe3JldHVybiB0aGlzLl9nZXRaKHRoaXMuY3VycmVudE92ZXJsYXkoKSl9ZW5zdXJlTWluaW11bVoodCl7dGhpcy5fbWluaW11bVo9TWF0aC5tYXgodGhpcy5fbWluaW11bVosdCl9Zm9jdXNPdmVybGF5KCl7dmFyIHQ9dGhpcy5jdXJyZW50T3ZlcmxheSgpO3QmJnQuX2FwcGx5Rm9jdXMoKX10cmFja0JhY2tkcm9wKCl7dmFyIHQ9dGhpcy5fb3ZlcmxheVdpdGhCYWNrZHJvcCgpOyh0fHx0aGlzLl9iYWNrZHJvcEVsZW1lbnQpJiYodGhpcy5iYWNrZHJvcEVsZW1lbnQuc3R5bGUuekluZGV4PXRoaXMuX2dldFoodCktMSx0aGlzLmJhY2tkcm9wRWxlbWVudC5vcGVuZWQ9ISF0LHRoaXMuYmFja2Ryb3BFbGVtZW50LnByZXBhcmUoKSl9Z2V0QmFja2Ryb3BzKCl7Zm9yKHZhciB0PVtdLGU9MDtlPHRoaXMuX292ZXJsYXlzLmxlbmd0aDtlKyspdGhpcy5fb3ZlcmxheXNbZV0ud2l0aEJhY2tkcm9wJiZ0LnB1c2godGhpcy5fb3ZlcmxheXNbZV0pO3JldHVybiB0fWJhY2tkcm9wWigpe3JldHVybiB0aGlzLl9nZXRaKHRoaXMuX292ZXJsYXlXaXRoQmFja2Ryb3AoKSktMX1fb3ZlcmxheVdpdGhCYWNrZHJvcCgpe2Zvcih2YXIgdD10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9vdmVybGF5c1t0XS53aXRoQmFja2Ryb3ApcmV0dXJuIHRoaXMuX292ZXJsYXlzW3RdfV9nZXRaKHQpe3ZhciBlPXRoaXMuX21pbmltdW1aO2lmKHQpe3ZhciBuPU51bWJlcih0LnN0eWxlLnpJbmRleHx8d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuekluZGV4KTtuPT1uJiYoZT1uKX1yZXR1cm4gZX1fc2V0Wih0LGUpe3Quc3R5bGUuekluZGV4PWV9X2FwcGx5T3ZlcmxheVoodCxlKXt0aGlzLl9zZXRaKHQsZSsyKX1fb3ZlcmxheUluUGF0aCh0KXt0PXR8fFtdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uX21hbmFnZXI9PT10aGlzKXJldHVybiB0W2VdfV9vbkNhcHR1cmVDbGljayh0KXt2YXIgZT10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTtpZigtMSE9PWUpZm9yKHZhciBuLGk9ZXIodCkucGF0aDsobj10aGlzLl9vdmVybGF5c1tlXSkmJnRoaXMuX292ZXJsYXlJblBhdGgoaSkhPT1uJiYobi5fb25DYXB0dXJlQ2xpY2sodCksbi5hbGxvd0NsaWNrVGhyb3VnaCk7KWUtLX1fb25DYXB0dXJlRm9jdXModCl7dmFyIGU9dGhpcy5jdXJyZW50T3ZlcmxheSgpO2UmJmUuX29uQ2FwdHVyZUZvY3VzKHQpfV9vbkNhcHR1cmVLZXlEb3duKHQpe3ZhciBlPXRoaXMuY3VycmVudE92ZXJsYXkoKTtlJiYoWG8ua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsImVzYyIpP2UuX29uQ2FwdHVyZUVzYyh0KTpYby5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXModCwidGFiIikmJmUuX29uQ2FwdHVyZVRhYih0KSl9X3Nob3VsZEJlQmVoaW5kT3ZlcmxheSh0LGUpe3JldHVybiF0LmFsd2F5c09uVG9wJiZlLmFsd2F5c09uVG9wfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL3ZhciBOYSxSYSxPYT17cGFnZVg6MCxwYWdlWTowfSx6YT1udWxsLERhPVtdLEJhPVsid2hlZWwiLCJtb3VzZXdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIl07ZnVuY3Rpb24gSGEodCl7VmEuaW5kZXhPZih0KT49MHx8KDA9PT1WYS5sZW5ndGgmJihmdW5jdGlvbiBlKCl7TmE9TmF8fFVhLmJpbmQodm9pZCAwKTtmb3IodmFyIHQ9MCxlPUJhLmxlbmd0aDt0PGU7dCsrKWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoQmFbdF0sTmEse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfSkoKSxWYS5wdXNoKHQpLFJhPVZhW1ZhLmxlbmd0aC0xXSl9ZnVuY3Rpb24gRmEodCl7dmFyIGU9VmEuaW5kZXhPZih0KTstMSE9PWUmJihWYS5zcGxpY2UoZSwxKSxSYT1WYVtWYS5sZW5ndGgtMV0sMD09PVZhLmxlbmd0aCYmKGZ1bmN0aW9uIG4oKXtmb3IodmFyIHQ9MCxlPUJhLmxlbmd0aDt0PGU7dCsrKWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoQmFbdF0sTmEse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfSkoKSl9Y29uc3QgVmE9W107ZnVuY3Rpb24gVWEodCl7aWYodC5jYW5jZWxhYmxlJiYoZnVuY3Rpb24gZSh0KXt2YXIgZT1lcih0KS5yb290VGFyZ2V0OyJ0b3VjaG1vdmUiIT09dC50eXBlJiZ6YSE9PWUmJih6YT1lLERhPShmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT1bXSxuPXQuaW5kZXhPZihSYSksaT0wO2k8PW47aSsrKWlmKHRbaV0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIHI9dFtpXSxvPXIuc3R5bGU7InNjcm9sbCIhPT1vLm92ZXJmbG93JiYiYXV0byIhPT1vLm92ZXJmbG93JiYobz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKSksInNjcm9sbCIhPT1vLm92ZXJmbG93JiYiYXV0byIhPT1vLm92ZXJmbG93fHxlLnB1c2gocil9cmV0dXJuIGV9KShlcih0KS5wYXRoKSk7aWYoIURhLmxlbmd0aClyZXR1cm4hMDtpZigidG91Y2hzdGFydCI9PT10LnR5cGUpcmV0dXJuITE7dmFyIGk9KGZ1bmN0aW9uIHIodCl7dmFyIGU9e2RlbHRhWDp0LmRlbHRhWCxkZWx0YVk6dC5kZWx0YVl9O2lmKCJkZWx0YVgiaW4gdCk7ZWxzZSBpZigid2hlZWxEZWx0YVgiaW4gdCYmIndoZWVsRGVsdGFZImluIHQpZS5kZWx0YVg9LXQud2hlZWxEZWx0YVgsZS5kZWx0YVk9LXQud2hlZWxEZWx0YVk7ZWxzZSBpZigid2hlZWxEZWx0YSJpbiB0KWUuZGVsdGFYPTAsZS5kZWx0YVk9LXQud2hlZWxEZWx0YTtlbHNlIGlmKCJheGlzImluIHQpZS5kZWx0YVg9MT09PXQuYXhpcz90LmRldGFpbDowLGUuZGVsdGFZPTI9PT10LmF4aXM/dC5kZXRhaWw6MDtlbHNlIGlmKHQudGFyZ2V0VG91Y2hlcyl7dmFyIG49dC50YXJnZXRUb3VjaGVzWzBdO2UuZGVsdGFYPU9hLnBhZ2VYLW4ucGFnZVgsZS5kZWx0YVk9T2EucGFnZVktbi5wYWdlWX1yZXR1cm4gZX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKSh0KTtyZXR1cm4hKGZ1bmN0aW9uIG8odCxlLG4pe2lmKCFlJiYhbilyZXR1cm47Zm9yKHZhciBpPU1hdGguYWJzKG4pPj1NYXRoLmFicyhlKSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07aWYoaT9uPDA/by5zY3JvbGxUb3A+MDpvLnNjcm9sbFRvcDxvLnNjcm9sbEhlaWdodC1vLmNsaWVudEhlaWdodDplPDA/by5zY3JvbGxMZWZ0PjA6by5zY3JvbGxMZWZ0PG8uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aClyZXR1cm4gb319KShEYSxpLmRlbHRhWCxpLmRlbHRhWSl9KSh0KSYmdC5wcmV2ZW50RGVmYXVsdCgpLHQudGFyZ2V0VG91Y2hlcyl7dmFyIG49dC50YXJnZXRUb3VjaGVzWzBdO09hLnBhZ2VYPW4ucGFnZVgsT2EucGFnZVk9bi5wYWdlWX19Y29uc3QgamE9e3Byb3BlcnRpZXM6e29wZW5lZDp7b2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIix0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxjYW5jZWxlZDp7b2JzZXJ2ZXI6Il9jYW5jZWxlZENoYW5nZWQiLHJlYWRPbmx5OiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMX0sd2l0aEJhY2tkcm9wOntvYnNlcnZlcjoiX3dpdGhCYWNrZHJvcENoYW5nZWQiLHR5cGU6Qm9vbGVhbn0sbm9BdXRvRm9jdXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9DYW5jZWxPbkVzY0tleTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0NhbmNlbE9uT3V0c2lkZUNsaWNrOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NpbmdSZWFzb246e3R5cGU6T2JqZWN0fSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsbG93Q2xpY2tUaHJvdWdoOnt0eXBlOkJvb2xlYW59LGFsd2F5c09uVG9wOnt0eXBlOkJvb2xlYW59LHNjcm9sbEFjdGlvbjp7dHlwZTpTdHJpbmd9LF9tYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTpJYX0sX2ZvY3VzZWRDaGlsZDp7dHlwZTpPYmplY3R9fSxsaXN0ZW5lcnM6eyJpcm9uLXJlc2l6ZSI6Il9vbklyb25SZXNpemUifSxvYnNlcnZlcnM6WyJfX3VwZGF0ZVNjcm9sbE9ic2VydmVycyhpc0F0dGFjaGVkLCBvcGVuZWQsIHNjcm9sbEFjdGlvbikiXSxnZXQgYmFja2Ryb3BFbGVtZW50KCl7cmV0dXJuIHRoaXMuX21hbmFnZXIuYmFja2Ryb3BFbGVtZW50fSxnZXQgX2ZvY3VzTm9kZSgpe3JldHVybiB0aGlzLl9mb2N1c2VkQ2hpbGR8fGVyKHRoaXMpLnF1ZXJ5U2VsZWN0b3IoIlthdXRvZm9jdXNdIil8fHRoaXN9LGdldCBfZm9jdXNhYmxlTm9kZXMoKXtyZXR1cm4gTGEuZ2V0VGFiYmFibGVOb2Rlcyh0aGlzKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9faXNBbmltYXRpbmc9ITEsdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSExLHRoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPW51bGwsdGhpcy5fX3JhZnM9e30sdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGU9bnVsbCx0aGlzLl9fc2Nyb2xsVG9wPXRoaXMuX19zY3JvbGxMZWZ0PW51bGwsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbD10aGlzLl9fb25DYXB0dXJlU2Nyb2xsLmJpbmQodGhpcyksdGhpcy5fX3Jvb3ROb2Rlcz1udWxsLHRoaXMuX2Vuc3VyZVNldHVwKCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJnRoaXMuX29wZW5lZENoYW5nZWQodGhpcy5vcGVuZWQpLHRoaXMuX29ic2VydmVyPWVyKHRoaXMpLm9ic2VydmVOb2Rlcyh0aGlzLl9vbk5vZGVzQ2hhbmdlKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fb2JzZXJ2ZXImJmVyKHRoaXMpLnVub2JzZXJ2ZU5vZGVzKHRoaXMuX29ic2VydmVyKSx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX19yYWZzKW51bGwhPT10aGlzLl9fcmFmc1t0XSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fX3JhZnNbdF0pO3RoaXMuX19yYWZzPXt9LHRoaXMuX21hbmFnZXIucmVtb3ZlT3ZlcmxheSh0aGlzKSx0aGlzLl9faXNBbmltYXRpbmcmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKToodGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpKSl9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMuX3NldENhbmNlbGVkKCExKSx0aGlzLm9wZW5lZD0hdGhpcy5vcGVuZWR9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLl9zZXRDYW5jZWxlZCghMSksdGhpcy5vcGVuZWQ9ITB9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Q2FuY2VsZWQoITEpLHRoaXMub3BlbmVkPSExfSxjYW5jZWw6ZnVuY3Rpb24odCl7dGhpcy5maXJlKCJpcm9uLW92ZXJsYXktY2FuY2VsZWQiLHQse2NhbmNlbGFibGU6ITB9KS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5fc2V0Q2FuY2VsZWQoITApLHRoaXMub3BlbmVkPSExKX0saW52YWxpZGF0ZVRhYmJhYmxlczpmdW5jdGlvbigpe3RoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPW51bGx9LF9lbnN1cmVTZXR1cDpmdW5jdGlvbigpe3RoaXMuX292ZXJsYXlTZXR1cHx8KHRoaXMuX292ZXJsYXlTZXR1cD0hMCx0aGlzLnN0eWxlLm91dGxpbmU9Im5vbmUiLHRoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbih0KXt0P3RoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpOnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0aGlzLmlzQXR0YWNoZWQmJih0aGlzLl9faXNBbmltYXRpbmc9ITAsdGhpcy5fX2RlcmFmKCJfX29wZW5lZENoYW5nZWQiLHRoaXMuX19vcGVuZWRDaGFuZ2VkKSl9LF9jYW5jZWxlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmNsb3NpbmdSZWFzb249dGhpcy5jbG9zaW5nUmVhc29ufHx7fSx0aGlzLmNsb3NpbmdSZWFzb24uY2FuY2VsZWQ9dGhpcy5jYW5jZWxlZH0sX3dpdGhCYWNrZHJvcENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLndpdGhCYWNrZHJvcCYmIXRoaXMuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpPyh0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleD0hMCk6dGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4JiYodGhpcy5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IiksdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSExKSx0aGlzLm9wZW5lZCYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9tYW5hZ2VyLnRyYWNrQmFja2Ryb3AoKX0sX3ByZXBhcmVSZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZT10aGlzLl9tYW5hZ2VyLmRlZXBBY3RpdmVFbGVtZW50LHRoaXMuX3ByZXBhcmVQb3NpdGlvbmluZygpLHRoaXMucmVmaXQoKSx0aGlzLl9maW5pc2hQb3NpdGlvbmluZygpLHRoaXMubm9BdXRvRm9jdXMmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10aGlzLl9mb2N1c05vZGUmJih0aGlzLl9mb2N1c05vZGUuYmx1cigpLHRoaXMuX19yZXN0b3JlRm9jdXNOb2RlLmZvY3VzKCkpfSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCl9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKX0sX2ZpbmlzaFJlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMubm90aWZ5UmVzaXplKCksdGhpcy5fX2lzQW5pbWF0aW5nPSExLHRoaXMuZmlyZSgiaXJvbi1vdmVybGF5LW9wZW5lZCIpfSxfZmluaXNoUmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnN0eWxlLnpJbmRleD0iIix0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pc0FuaW1hdGluZz0hMSx0aGlzLmZpcmUoImlyb24tb3ZlcmxheS1jbG9zZWQiLHRoaXMuY2xvc2luZ1JlYXNvbil9LF9wcmVwYXJlUG9zaXRpb25pbmc6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnRyYW5zaXRpb249dGhpcy5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSJub25lIix0aGlzLnN0eWxlLnRyYW5zZm9ybT10aGlzLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0ibm9uZSIsdGhpcy5zdHlsZS5kaXNwbGF5PSIifSxfZmluaXNoUG9zaXRpb25pbmc6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuc3R5bGUudHJhbnNpdGlvbj10aGlzLnN0eWxlLndlYmtpdFRyYW5zaXRpb249IiIsdGhpcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5zdHlsZS53ZWJraXRUcmFuc2Zvcm09IiIsdGhpcy5zdHlsZS5kaXNwbGF5PSIiLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wfSxfYXBwbHlGb2N1czpmdW5jdGlvbigpe2lmKHRoaXMub3BlbmVkKXRoaXMubm9BdXRvRm9jdXN8fHRoaXMuX2ZvY3VzTm9kZS5mb2N1cygpO2Vsc2V7aWYodGhpcy5yZXN0b3JlRm9jdXNPbkNsb3NlJiZ0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZSl7dmFyIHQ9dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudDsodD09PWRvY3VtZW50LmJvZHl8fEdhKHRoaXMsdCkpJiZ0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZS5mb2N1cygpfXRoaXMuX19yZXN0b3JlRm9jdXNOb2RlPW51bGwsdGhpcy5fZm9jdXNOb2RlLmJsdXIoKSx0aGlzLl9mb2N1c2VkQ2hpbGQ9bnVsbH19LF9vbkNhcHR1cmVDbGljazpmdW5jdGlvbih0KXt0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2t8fHRoaXMuY2FuY2VsKHQpfSxfb25DYXB0dXJlRm9jdXM6ZnVuY3Rpb24odCl7aWYodGhpcy53aXRoQmFja2Ryb3Ape3ZhciBlPWVyKHQpLnBhdGg7LTE9PT1lLmluZGV4T2YodGhpcyk/KHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fYXBwbHlGb2N1cygpKTp0aGlzLl9mb2N1c2VkQ2hpbGQ9ZVswXX19LF9vbkNhcHR1cmVFc2M6ZnVuY3Rpb24odCl7dGhpcy5ub0NhbmNlbE9uRXNjS2V5fHx0aGlzLmNhbmNlbCh0KX0sX29uQ2FwdHVyZVRhYjpmdW5jdGlvbih0KXtpZih0aGlzLndpdGhCYWNrZHJvcCl7dGhpcy5fX2Vuc3VyZUZpcnN0TGFzdEZvY3VzYWJsZXMoKTt2YXIgZT10LnNoaWZ0S2V5LG49ZT90aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlOnRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZSxpPWU/dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlOnRoaXMuX19maXJzdEZvY3VzYWJsZU5vZGUscj0hMTtpZihuPT09aSlyPSEwO2Vsc2V7dmFyIG89dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudDtyPW89PT1ufHxvPT09dGhpc31yJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRDaGlsZD1pLHRoaXMuX2FwcGx5Rm9jdXMoKSl9fSxfb25Jcm9uUmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJiF0aGlzLl9faXNBbmltYXRpbmcmJnRoaXMuX19kZXJhZigicmVmaXQiLHRoaXMucmVmaXQpfSxfb25Ob2Rlc0NoYW5nZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiYhdGhpcy5fX2lzQW5pbWF0aW5nJiYodGhpcy5pbnZhbGlkYXRlVGFiYmFibGVzKCksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9fZW5zdXJlRmlyc3RMYXN0Rm9jdXNhYmxlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzYWJsZU5vZGVzO3RoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9dFswXSx0aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU9dFt0Lmxlbmd0aC0xXX0sX19vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/KHRoaXMuX3ByZXBhcmVSZW5kZXJPcGVuZWQoKSx0aGlzLl9tYW5hZ2VyLmFkZE92ZXJsYXkodGhpcyksdGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX3JlbmRlck9wZW5lZCgpKToodGhpcy5fbWFuYWdlci5yZW1vdmVPdmVybGF5KHRoaXMpLHRoaXMuX2FwcGx5Rm9jdXMoKSx0aGlzLl9yZW5kZXJDbG9zZWQoKSl9LF9fZGVyYWY6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9fcmFmcztudWxsIT09blt0XSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUoblt0XSksblt0XT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gaSgpe25bdF09bnVsbCxlLmNhbGwodGhpcyl9LmJpbmQodGhpcykpfSxfX3VwZGF0ZVNjcm9sbE9ic2VydmVyczpmdW5jdGlvbih0LGUsbil7dCYmZSYmdGhpcy5fX2lzVmFsaWRTY3JvbGxBY3Rpb24obik/KCJsb2NrIj09PW4mJih0aGlzLl9fc2F2ZVNjcm9sbFBvc2l0aW9uKCksSGEodGhpcykpLHRoaXMuX19hZGRTY3JvbGxMaXN0ZW5lcnMoKSk6KEZhKHRoaXMpLHRoaXMuX19yZW1vdmVTY3JvbGxMaXN0ZW5lcnMoKSl9LF9fYWRkU2Nyb2xsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19yb290Tm9kZXMpe2lmKHRoaXMuX19yb290Tm9kZXM9W10sbSlmb3IodmFyIHQ9dGhpczt0Oyl0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiZ0Lmhvc3QmJnRoaXMuX19yb290Tm9kZXMucHVzaCh0KSx0PXQuaG9zdHx8dC5hc3NpZ25lZFNsb3R8fHQucGFyZW50Tm9kZTt0aGlzLl9fcm9vdE5vZGVzLnB1c2goZG9jdW1lbnQpfXRoaXMuX19yb290Tm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19vbkNhcHR1cmVTY3JvbGwse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pfSksdGhpcyl9LF9fcmVtb3ZlU2Nyb2xsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fX3Jvb3ROb2RlcyYmdGhpcy5fX3Jvb3ROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbCx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9KSx0aGlzKSx0aGlzLmlzQXR0YWNoZWR8fCh0aGlzLl9fcm9vdE5vZGVzPW51bGwpfSxfX2lzVmFsaWRTY3JvbGxBY3Rpb246ZnVuY3Rpb24odCl7cmV0dXJuImxvY2siPT09dHx8InJlZml0Ij09PXR8fCJjYW5jZWwiPT09dH0sX19vbkNhcHR1cmVTY3JvbGw6ZnVuY3Rpb24odCl7aWYoISh0aGlzLl9faXNBbmltYXRpbmd8fGVyKHQpLnBhdGguaW5kZXhPZih0aGlzKT49MCkpc3dpdGNoKHRoaXMuc2Nyb2xsQWN0aW9uKXtjYXNlImxvY2siOnRoaXMuX19yZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTticmVhaztjYXNlInJlZml0Ijp0aGlzLl9fZGVyYWYoInJlZml0Iix0aGlzLnJlZml0KTticmVhaztjYXNlImNhbmNlbCI6dGhpcy5jYW5jZWwodCl9fSxfX3NhdmVTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbigpe2RvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ/KHRoaXMuX19zY3JvbGxUb3A9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AsdGhpcy5fX3Njcm9sbExlZnQ9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0KToodGhpcy5fX3Njcm9sbFRvcD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSx0aGlzLl9fc2Nyb2xsTGVmdD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpKX0sX19yZXN0b3JlU2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXtkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50Pyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcD10aGlzLl9fc2Nyb2xsVG9wLGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsTGVmdD10aGlzLl9fc2Nyb2xsTGVmdCk6KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A9ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A9dGhpcy5fX3Njcm9sbFRvcCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdD1kb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ9dGhpcy5fX3Njcm9sbExlZnQpfX0sR2E9KHQsZSk9Pntmb3IobGV0IGk9ZTtpO2k9KG49aSkuYXNzaWduZWRTbG90fHxuLnBhcmVudE5vZGV8fG4uaG9zdClpZihpPT09dClyZXR1cm4hMDt2YXIgbjtyZXR1cm4hMX0sV2E9W0FhLENvLGphXSxxYT17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImRpYWxvZyIsdGFiaW5kZXg6Ii0xIn0scHJvcGVydGllczp7bW9kYWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX19yZWFkaWVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxvYnNlcnZlcnM6WyJfbW9kYWxDaGFuZ2VkKG1vZGFsLCBfX3JlYWRpZWQpIl0sbGlzdGVuZXJzOnt0YXA6Il9vbkRpYWxvZ0NsaWNrIn0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9fcHJldk5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrLHRoaXMuX19wcmV2Tm9DYW5jZWxPbkVzY0tleT10aGlzLm5vQ2FuY2VsT25Fc2NLZXksdGhpcy5fX3ByZXZXaXRoQmFja2Ryb3A9dGhpcy53aXRoQmFja2Ryb3AsdGhpcy5fX3JlYWRpZWQ9ITB9LF9tb2RhbENoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiYodD8odGhpcy5fX3ByZXZOb0NhbmNlbE9uT3V0c2lkZUNsaWNrPXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljayx0aGlzLl9fcHJldk5vQ2FuY2VsT25Fc2NLZXk9dGhpcy5ub0NhbmNlbE9uRXNjS2V5LHRoaXMuX19wcmV2V2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wLHRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljaz0hMCx0aGlzLm5vQ2FuY2VsT25Fc2NLZXk9ITAsdGhpcy53aXRoQmFja2Ryb3A9ITApOih0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrJiZ0aGlzLl9fcHJldk5vQ2FuY2VsT25PdXRzaWRlQ2xpY2ssdGhpcy5ub0NhbmNlbE9uRXNjS2V5PXRoaXMubm9DYW5jZWxPbkVzY0tleSYmdGhpcy5fX3ByZXZOb0NhbmNlbE9uRXNjS2V5LHRoaXMud2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wJiZ0aGlzLl9fcHJldldpdGhCYWNrZHJvcCkpfSxfdXBkYXRlQ2xvc2luZ1JlYXNvbkNvbmZpcm1lZDpmdW5jdGlvbih0KXt0aGlzLmNsb3NpbmdSZWFzb249dGhpcy5jbG9zaW5nUmVhc29ufHx7fSx0aGlzLmNsb3NpbmdSZWFzb24uY29uZmlybWVkPXR9LF9vbkRpYWxvZ0NsaWNrOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1lcih0KS5wYXRoLG49MCxpPWUuaW5kZXhPZih0aGlzKTtuPGk7bisrKXt2YXIgcj1lW25dO2lmKHIuaGFzQXR0cmlidXRlJiYoci5oYXNBdHRyaWJ1dGUoImRpYWxvZy1kaXNtaXNzIil8fHIuaGFzQXR0cmlidXRlKCJkaWFsb2ctY29uZmlybSIpKSl7dGhpcy5fdXBkYXRlQ2xvc2luZ1JlYXNvbkNvbmZpcm1lZChyLmhhc0F0dHJpYnV0ZSgiZGlhbG9nLWNvbmZpcm0iKSksdGhpcy5jbG9zZSgpLHQuc3RvcFByb3BhZ2F0aW9uKCk7YnJlYWt9fX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1kaWFsb2ctc2hhcmVkLXN0eWxlcyI+PC9zdHlsZT4KICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItZGlhbG9nIixiZWhhdmlvcnM6W1tXYSxxYV0sVGFdLGxpc3RlbmVyczp7Im5lb24tYW5pbWF0aW9uLWZpbmlzaCI6Il9vbk5lb25BbmltYXRpb25GaW5pc2gifSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxBbmltYXRpb24oKSx0aGlzLnBsYXlBbmltYXRpb24oImVudHJ5Iil9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpLHRoaXMucGxheUFuaW1hdGlvbigiZXhpdCIpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIEBhcHBseSAtLWxheW91dC1yZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlzLXNjcm9sbGVkOm5vdCg6Zmlyc3QtY2hpbGQpKTo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGl2aWRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jYW4tc2Nyb2xsOm5vdCguc2Nyb2xsZWQtdG8tYm90dG9tKTpub3QoOmxhc3QtY2hpbGQpKTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kaXZpZGVyLWNvbG9yKTsKICAgICAgfQoKICAgICAgLnNjcm9sbGFibGUgewogICAgICAgIHBhZGRpbmc6IDAgMjRweDsKCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXNjcm9sbDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2ctc2Nyb2xsYWJsZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJzY3JvbGxhYmxlIiBjbGFzcz0ic2Nyb2xsYWJsZSIgb24tc2Nyb2xsPSJ1cGRhdGVTY3JvbGxTdGF0ZSI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSIscHJvcGVydGllczp7ZGlhbG9nRWxlbWVudDp7dHlwZTpPYmplY3R9fSxnZXQgc2Nyb2xsVGFyZ2V0KCl7cmV0dXJuIHRoaXMuJC5zY3JvbGxhYmxlfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHRoaXMuY2xhc3NMaXN0LmFkZCgibm8tcGFkZGluZyIpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZVNjcm9sbFN0YXRlLmJpbmQodGhpcykpfSx1cGRhdGVTY3JvbGxTdGF0ZTpmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ2xhc3MoImlzLXNjcm9sbGVkIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A+MCksdGhpcy50b2dnbGVDbGFzcygiY2FuLXNjcm9sbCIsdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0PHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbEhlaWdodCksdGhpcy50b2dnbGVDbGFzcygic2Nyb2xsZWQtdG8tYm90dG9tIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3ArdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0Pj10aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxIZWlnaHQpfSxfZW5zdXJlVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5kaWFsb2dFbGVtZW50PXRoaXMuZGlhbG9nRWxlbWVudHx8dGhpcy5wYXJlbnRFbGVtZW50LHRoaXMuZGlhbG9nRWxlbWVudCYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycyYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycy5pbmRleE9mKHFhKT49MD8odGhpcy5kaWFsb2dFbGVtZW50LnNpemluZ1RhcmdldD10aGlzLnNjcm9sbFRhcmdldCx0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCJmaXQiKSk6dGhpcy5kaWFsb2dFbGVtZW50JiZ0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QuYWRkKCJmaXQiKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFlhPWpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGNsaXA6IHJlY3QoMHB4LDBweCwwcHgsMHB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgYXJpYS1saXZlJD0iW1ttb2RlXV0iPltbX3RleHRdXTwvZGl2PgpgLGlzOiJpcm9uLWExMXktYW5ub3VuY2VyIixwcm9wZXJ0aWVzOnttb2RlOnt0eXBlOlN0cmluZyx2YWx1ZToicG9saXRlIn0sdGltZW91dDp7dHlwZTpOdW1iZXIsdmFsdWU6MTUwfSxfdGV4dDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7WWEuaW5zdGFuY2V8fChZYS5pbnN0YW5jZT10aGlzKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJpcm9uLWFubm91bmNlIix0aGlzLl9vbklyb25Bbm5vdW5jZS5iaW5kKHRoaXMpKX0sYW5ub3VuY2U6ZnVuY3Rpb24odCl7dGhpcy5fdGV4dD0iIix0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX3RleHQ9dH0pLHRoaXMudGltZW91dCl9LF9vbklyb25Bbm5vdW5jZTpmdW5jdGlvbih0KXt0LmRldGFpbCYmdC5kZXRhaWwudGV4dCYmdGhpcy5hbm5vdW5jZSh0LmRldGFpbC50ZXh0KX19KTtZYS5pbnN0YW5jZT1udWxsLFlhLnJlcXVlc3RBdmFpbGFiaWxpdHk9ZnVuY3Rpb24oKXtZYS5pbnN0YW5jZXx8KFlhLmluc3RhbmNlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tYTExeS1hbm5vdW5jZXIiKSksZG9jdW1lbnQuYm9keT9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFlhLmluc3RhbmNlKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFlhLmluc3RhbmNlKX0pKX0sCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNsb3QgaWQ9ImNvbnRlbnQiPjwvc2xvdD4KYCxpczoiaXJvbi1pbnB1dCIsYmVoYXZpb3JzOlt5YV0scHJvcGVydGllczp7YmluZFZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0sdmFsdWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVZhbHVlKGJpbmRWYWx1ZSkifSxhbGxvd2VkUGF0dGVybjp7dHlwZTpTdHJpbmd9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRFbGVtZW50Ok9iamVjdH0sb2JzZXJ2ZXJzOlsiX2JpbmRWYWx1ZUNoYW5nZWQoYmluZFZhbHVlLCBfaW5wdXRFbGVtZW50KSJdLGxpc3RlbmVyczp7aW5wdXQ6Il9vbklucHV0IixrZXlwcmVzczoiX29uS2V5cHJlc3MifSxjcmVhdGVkOmZ1bmN0aW9uKCl7WWEucmVxdWVzdEF2YWlsYWJpbGl0eSgpLHRoaXMuX3ByZXZpb3VzVmFsaWRJbnB1dD0iIix0aGlzLl9wYXR0ZXJuQWxyZWFkeUNoZWNrZWQ9ITF9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9ZXIodGhpcykub2JzZXJ2ZU5vZGVzKGZ1bmN0aW9uKHQpe3RoaXMuX2luaXRTbG90dGVkSW5wdXQoKX0uYmluZCh0aGlzKSl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJihlcih0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fb2JzZXJ2ZXI9bnVsbCl9LGdldCBpbnB1dEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50fSxfaW5pdFNsb3R0ZWRJbnB1dDpmdW5jdGlvbigpe3RoaXMuX2lucHV0RWxlbWVudD10aGlzLmdldEVmZmVjdGl2ZUNoaWxkcmVuKClbMF0sdGhpcy5pbnB1dEVsZW1lbnQmJnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlJiYodGhpcy5iaW5kVmFsdWU9dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUpLHRoaXMuZmlyZSgiaXJvbi1pbnB1dC1yZWFkeSIpfSxnZXQgX3BhdHRlcm5SZWdFeHAoKXt2YXIgdDtpZih0aGlzLmFsbG93ZWRQYXR0ZXJuKXQ9bmV3IFJlZ0V4cCh0aGlzLmFsbG93ZWRQYXR0ZXJuKTtlbHNlIHN3aXRjaCh0aGlzLmlucHV0RWxlbWVudC50eXBlKXtjYXNlIm51bWJlciI6dD0vWzAtOS4sZS1dL31yZXR1cm4gdH0sX2JpbmRWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiYodm9pZCAwPT09dD9lLnZhbHVlPW51bGw6dCE9PWUudmFsdWUmJih0aGlzLmlucHV0RWxlbWVudC52YWx1ZT10KSx0aGlzLmF1dG9WYWxpZGF0ZSYmdGhpcy52YWxpZGF0ZSgpLHRoaXMuZmlyZSgiYmluZC12YWx1ZS1jaGFuZ2VkIix7dmFsdWU6dH0pKX0sX29uSW5wdXQ6ZnVuY3Rpb24oKXt0aGlzLmFsbG93ZWRQYXR0ZXJuJiYhdGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkJiYodGhpcy5fY2hlY2tQYXR0ZXJuVmFsaWRpdHkoKXx8KHRoaXMuX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcigiSW52YWxpZCBzdHJpbmcgb2YgY2hhcmFjdGVycyBub3QgZW50ZXJlZC4iKSx0aGlzLmlucHV0RWxlbWVudC52YWx1ZT10aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQpKTt0aGlzLmJpbmRWYWx1ZT10aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQ9dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUsdGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSExfSxfaXNQcmludGFibGU6ZnVuY3Rpb24odCl7cmV0dXJuISg4PT10LmtleUNvZGV8fDk9PXQua2V5Q29kZXx8MTM9PXQua2V5Q29kZXx8Mjc9PXQua2V5Q29kZXx8MD09dC5jaGFyQ29kZSYmKDE5PT10LmtleUNvZGV8fDIwPT10LmtleUNvZGV8fDQ1PT10LmtleUNvZGV8fDQ2PT10LmtleUNvZGV8fDE0ND09dC5rZXlDb2RlfHwxNDU9PXQua2V5Q29kZXx8dC5rZXlDb2RlPjMyJiZ0LmtleUNvZGU8NDF8fHQua2V5Q29kZT4xMTEmJnQua2V5Q29kZTwxMjQpKX0sX29uS2V5cHJlc3M6ZnVuY3Rpb24odCl7aWYodGhpcy5hbGxvd2VkUGF0dGVybnx8Im51bWJlciI9PT10aGlzLmlucHV0RWxlbWVudC50eXBlKXt2YXIgZT10aGlzLl9wYXR0ZXJuUmVnRXhwO2lmKGUmJiEodC5tZXRhS2V5fHx0LmN0cmxLZXl8fHQuYWx0S2V5KSl7dGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSEwO3ZhciBuPVN0cmluZy5mcm9tQ2hhckNvZGUodC5jaGFyQ29kZSk7dGhpcy5faXNQcmludGFibGUodCkmJiFlLnRlc3QobikmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fYW5ub3VuY2VJbnZhbGlkQ2hhcmFjdGVyKCJJbnZhbGlkIGNoYXJhY3RlciAiK24rIiBub3QgZW50ZXJlZC4iKSl9fX0sX2NoZWNrUGF0dGVyblZhbGlkaXR5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGF0dGVyblJlZ0V4cDtpZighdClyZXR1cm4hMDtmb3IodmFyIGU9MDtlPHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLmxlbmd0aDtlKyspaWYoIXQudGVzdCh0aGlzLmlucHV0RWxlbWVudC52YWx1ZVtlXSkpcmV0dXJuITE7cmV0dXJuITB9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaW5wdXRFbGVtZW50KXJldHVybiB0aGlzLmludmFsaWQ9ITEsITA7dmFyIHQ9dGhpcy5pbnB1dEVsZW1lbnQuY2hlY2tWYWxpZGl0eSgpO3JldHVybiB0JiYodGhpcy5yZXF1aXJlZCYmIiI9PT10aGlzLmJpbmRWYWx1ZT90PSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJih0PXlhLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLmJpbmRWYWx1ZSkpKSx0aGlzLmludmFsaWQ9IXQsdGhpcy5maXJlKCJpcm9uLWlucHV0LXZhbGlkYXRlIiksdH0sX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcjpmdW5jdGlvbih0KXt0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OnR9KX0sX2NvbXB1dGVWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFhhPXthdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuZmlyZSgiYWRkb24tYXR0YWNoZWQiKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe319OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9qcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsb2F0OiByaWdodDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jYXB0aW9uOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNoYXItY291bnRlcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuPltbX2NoYXJDb3VudGVyU3RyXV08L3NwYW4+CmAsaXM6InBhcGVyLWlucHV0LWNoYXItY291bnRlciIsYmVoYXZpb3JzOltYYV0scHJvcGVydGllczp7X2NoYXJDb3VudGVyU3RyOnt0eXBlOlN0cmluZyx2YWx1ZToiMCJ9fSx1cGRhdGU6ZnVuY3Rpb24odCl7aWYodC5pbnB1dEVsZW1lbnQpe3QudmFsdWU9dC52YWx1ZXx8IiI7dmFyIGU9dC52YWx1ZS50b1N0cmluZygpLmxlbmd0aC50b1N0cmluZygpO3QuaW5wdXRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgibWF4bGVuZ3RoIikmJihlKz0iLyIrdC5pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiKSksdGhpcy5fY2hhckNvdW50ZXJTdHI9ZX19fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCAkYT14ZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiB0byBtYWtlIGEgc3RhY2tpbmcgY29udGV4dCAqLwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtYWxpZ24sIGJvdHRvbSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgfTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KYDskYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCRhLmNvbnRlbnQpLGpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbmxpbmVdKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMC4zMzsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmZsb2F0ZWQtbGFiZWwtcGxhY2Vob2xkZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgfQoKICAgICAgLnVuZGVybGluZSB7CiAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuZm9jdXNlZC1saW5lIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMCwxLDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLDEsMSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci11bmRlcmxpbmUtZm9jdXM7CiAgICAgIH0KCiAgICAgIC51bmRlcmxpbmUuaXMtaGlnaGxpZ2h0ZWQgLmZvY3VzZWQtbGluZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKICAgICAgLnVuZGVybGluZS5pcy1pbnZhbGlkIC5mb2N1c2VkLWxpbmUgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKICAgICAgLnVuZm9jdXNlZC1saW5lIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXVuZGVybGluZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnVuZm9jdXNlZC1saW5lIHsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci11bmRlcmxpbmUtZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXJlbGF0aXZlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmb250OiBpbmhlcml0OwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1cywgd2lkdGggMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzLCB3aWR0aCAwLjI1czsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOwogICAgICAgIC8qIEZpeCBmb3Igc2FmYXJpIG5vdCBmb2N1c2luZyAwLWhlaWdodCBkYXRlL3RpbWUgaW5wdXRzIHdpdGggLXdlYmtpdC1hcHBlcmFuY2U6IG5vbmU7ICovCiAgICAgICAgbWluLWhlaWdodDogMXB4OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDsKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChsYWJlbCk6YmVmb3JlLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKTpiZWZvcmUgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1iZWZvcmU7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChsYWJlbCk6YWZ0ZXIsCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpOmFmdGVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtYWZ0ZXI7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNzUlKSBzY2FsZSgwLjc1KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTc1JSkgc2NhbGUoMC43NSk7CgogICAgICAgIC8qIFNpbmNlIHdlIHNjYWxlIHRvIDc1LzEwMCBvZiB0aGUgc2l6ZSwgd2UgYWN0dWFsbHkgaGF2ZSAxMDAvNzUgb2YgdGhlCiAgICAgICAgb3JpZ2luYWwgc3BhY2Ugbm93IGF2YWlsYWJsZSAqLwogICAgICAgIHdpZHRoOiAxMzMlOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtZmxvYXRpbmc7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtZmxvYXRpbmcgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgOmhvc3QoOmRpcihydGwpKSAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbGVmdDogYXV0bzsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZ2hsaWdodGVkIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZ2hsaWdodGVkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1mb2N1czsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZGRlbiA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWRkZW4gOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlyb24taW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQodGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtaW5wdXQpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOwogICAgICAgIC8qIFRoZSBhcHBseSBzaGltIGRvZXNuJ3QgYXBwbHkgdGhlIG5lc3RlZCBjb2xvciBjdXN0b20gcHJvcGVydHksCiAgICAgICAgICBzbyB3ZSBoYXZlIHRvIHJlLWFwcGx5IGl0IGhlcmUuICovCiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LXNwaW5uZXI7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoaXJvbi1pbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKHRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1pbnB1dCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1mb2N1czsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoaW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChpcm9uLWlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQodGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChpcm9uLWF1dG9ncm93LXRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWlucHV0KSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWludmFsaWQ7CiAgICAgIH0KCiAgICAgIC5wcmVmaXggOjpzbG90dGVkKCopIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LW5vbmU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtcHJlZml4OwogICAgICB9CgogICAgICAuc3VmZml4IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1ub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1zdWZmaXg7CiAgICAgIH0KCiAgICAgIC8qIEZpcmVmb3ggc2V0cyBhIG1pbi13aWR0aCBvbiB0aGUgaW5wdXQsIHdoaWNoIGNhbiBjYXVzZSBsYXlvdXQgaXNzdWVzICovCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpbnB1dCkgewogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKHRleHRhcmVhKSB7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICB9CgogICAgICAuYWRkLW9uLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmFkZC1vbi1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKCopIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC5hZGQtb24tY29udGVudC5pcy1oaWdobGlnaHRlZCA6OnNsb3R0ZWQoKikgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJmbG9hdGVkLWxhYmVsLXBsYWNlaG9sZGVyIiBhcmlhLWhpZGRlbj0idHJ1ZSIgaGlkZGVuPSJbW25vTGFiZWxGbG9hdF1dIj4mbmJzcDs8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgPHNwYW4gY2xhc3M9InByZWZpeCI+PHNsb3QgbmFtZT0icHJlZml4Ij48L3Nsb3Q+PC9zcGFuPgoKICAgICAgPGRpdiBjbGFzcyQ9IltbX2NvbXB1dGVJbnB1dENvbnRlbnRDbGFzcyhub0xhYmVsRmxvYXQsYWx3YXlzRmxvYXRMYWJlbCxmb2N1c2VkLGludmFsaWQsX2lucHV0SGFzQ29udGVudCldXSIgaWQ9ImxhYmVsQW5kSW5wdXRDb250YWluZXIiPgogICAgICAgIDxzbG90IG5hbWU9ImxhYmVsIj48L3Nsb3Q+CiAgICAgICAgPHNsb3QgbmFtZT0iaW5wdXQiPjwvc2xvdD4KICAgICAgPC9kaXY+CgogICAgICA8c3BhbiBjbGFzcz0ic3VmZml4Ij48c2xvdCBuYW1lPSJzdWZmaXgiPjwvc2xvdD48L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzJD0iW1tfY29tcHV0ZVVuZGVybGluZUNsYXNzKGZvY3VzZWQsaW52YWxpZCldXSI+CiAgICAgIDxkaXYgY2xhc3M9InVuZm9jdXNlZC1saW5lIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZm9jdXNlZC1saW5lIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3MkPSJbW19jb21wdXRlQWRkT25Db250ZW50Q2xhc3MoZm9jdXNlZCxpbnZhbGlkKV1dIj4KICAgICAgPHNsb3QgbmFtZT0iYWRkLW9uIj48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItaW5wdXQtY29udGFpbmVyIixwcm9wZXJ0aWVzOntub0xhYmVsRmxvYXQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWx3YXlzRmxvYXRMYWJlbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdHRyRm9yVmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJiaW5kLXZhbHVlIn0sYXV0b1ZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGludmFsaWQ6e29ic2VydmVyOiJfaW52YWxpZENoYW5nZWQiLHR5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZm9jdXNlZDp7cmVhZE9ubHk6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sX2FkZG9uczp7dHlwZTpBcnJheX0sX2lucHV0SGFzQ29udGVudDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRTZWxlY3Rvcjp7dHlwZTpTdHJpbmcsdmFsdWU6ImlucHV0LGlyb24taW5wdXQsdGV4dGFyZWEsLnBhcGVyLWlucHV0LWlucHV0In0sX2JvdW5kT25Gb2N1czp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkZvY3VzLmJpbmQodGhpcyl9fSxfYm91bmRPbkJsdXI6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25CbHVyLmJpbmQodGhpcyl9fSxfYm91bmRPbklucHV0Ont0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKX19LF9ib3VuZFZhbHVlQ2hhbmdlZDp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblZhbHVlQ2hhbmdlZC5iaW5kKHRoaXMpfX19LGxpc3RlbmVyczp7ImFkZG9uLWF0dGFjaGVkIjoiX29uQWRkb25BdHRhY2hlZCIsImlyb24taW5wdXQtdmFsaWRhdGUiOiJfb25Jcm9uSW5wdXRWYWxpZGF0ZSJ9LGdldCBfdmFsdWVDaGFuZ2VkRXZlbnQoKXtyZXR1cm4gdGhpcy5hdHRyRm9yVmFsdWUrIi1jaGFuZ2VkIn0sZ2V0IF9wcm9wZXJ0eUZvclZhbHVlKCl7cmV0dXJuIHN0KHRoaXMuYXR0ckZvclZhbHVlKX0sZ2V0IF9pbnB1dEVsZW1lbnQoKXtyZXR1cm4gZXIodGhpcykucXVlcnlTZWxlY3Rvcih0aGlzLl9pbnB1dFNlbGVjdG9yKX0sZ2V0IF9pbnB1dEVsZW1lbnRWYWx1ZSgpe3JldHVybiB0aGlzLl9pbnB1dEVsZW1lbnRbdGhpcy5fcHJvcGVydHlGb3JWYWx1ZV18fHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlPSEwLHRoaXMuX2FkZG9uc3x8KHRoaXMuX2FkZG9ucz1bXSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fYm91bmRPbkZvY3VzLCEwKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX2JvdW5kT25CbHVyLCEwKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmF0dHJGb3JWYWx1ZT90aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl92YWx1ZUNoYW5nZWRFdmVudCx0aGlzLl9ib3VuZFZhbHVlQ2hhbmdlZCk6dGhpcy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsdGhpcy5fb25JbnB1dCksdGhpcy5faW5wdXRFbGVtZW50VmFsdWUmJiIiIT10aGlzLl9pbnB1dEVsZW1lbnRWYWx1ZT90aGlzLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0aGlzLl9pbnB1dEVsZW1lbnQpOnRoaXMuX2hhbmRsZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudCl9LF9vbkFkZG9uQXR0YWNoZWQ6ZnVuY3Rpb24odCl7dGhpcy5fYWRkb25zfHwodGhpcy5fYWRkb25zPVtdKTt2YXIgZT10LnRhcmdldDstMT09PXRoaXMuX2FkZG9ucy5pbmRleE9mKGUpJiYodGhpcy5fYWRkb25zLnB1c2goZSksdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9oYW5kbGVWYWx1ZSh0aGlzLl9pbnB1dEVsZW1lbnQpKX0sX29uRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLl9zZXRGb2N1c2VkKCEwKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX3NldEZvY3VzZWQoITEpLHRoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudCl9LF9vbklucHV0OmZ1bmN0aW9uKHQpe3RoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHQudGFyZ2V0KX0sX29uVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0O3RoaXMuX19pc0ZpcnN0VmFsdWVVcGRhdGUmJih0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlPSExLHZvaWQgMD09PWUudmFsdWV8fCIiPT09ZS52YWx1ZSl8fHRoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHQudGFyZ2V0KX0sX2hhbmRsZVZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lucHV0RWxlbWVudFZhbHVlO3RoaXMuX2lucHV0SGFzQ29udGVudD0hKCFlJiYwIT09ZSYmKCJudW1iZXIiIT09dC50eXBlfHx0LmNoZWNrVmFsaWRpdHkoKSkpLHRoaXMudXBkYXRlQWRkb25zKHtpbnB1dEVsZW1lbnQ6dCx2YWx1ZTplLGludmFsaWQ6dGhpcy5pbnZhbGlkfSl9LF9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZTpmdW5jdGlvbih0KXt2YXIgZTt0aGlzLmF1dG9WYWxpZGF0ZSYmdCYmKGU9dC52YWxpZGF0ZT90LnZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudFZhbHVlKTp0LmNoZWNrVmFsaWRpdHkoKSx0aGlzLmludmFsaWQ9IWUpO3RoaXMuX2hhbmRsZVZhbHVlKHQpfSxfb25Jcm9uSW5wdXRWYWxpZGF0ZTpmdW5jdGlvbih0KXt0aGlzLmludmFsaWQ9dGhpcy5faW5wdXRFbGVtZW50LmludmFsaWR9LF9pbnZhbGlkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX2FkZG9ucyYmdGhpcy51cGRhdGVBZGRvbnMoe2ludmFsaWQ6dGhpcy5pbnZhbGlkfSl9LHVwZGF0ZUFkZG9uczpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0wO2U9dGhpcy5fYWRkb25zW25dO24rKyllLnVwZGF0ZSh0KX0sX2NvbXB1dGVJbnB1dENvbnRlbnRDbGFzczpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPSJpbnB1dC1jb250ZW50IjtpZih0KXImJihvKz0iIGxhYmVsLWlzLWhpZGRlbiIpLGkmJihvKz0iIGlzLWludmFsaWQiKTtlbHNle3ZhciBhPXRoaXMucXVlcnlTZWxlY3RvcigibGFiZWwiKTtlfHxyPyhvKz0iIGxhYmVsLWlzLWZsb2F0aW5nIix0aGlzLiQubGFiZWxBbmRJbnB1dENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0ic3RhdGljIixpP28rPSIgaXMtaW52YWxpZCI6biYmKG8rPSIgbGFiZWwtaXMtaGlnaGxpZ2h0ZWQiKSk6KGEmJih0aGlzLiQubGFiZWxBbmRJbnB1dENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxpJiYobys9IiBpcy1pbnZhbGlkIikpfXJldHVybiBuJiYobys9IiBmb2N1c2VkIiksb30sX2NvbXB1dGVVbmRlcmxpbmVDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPSJ1bmRlcmxpbmUiO3JldHVybiBlP24rPSIgaXMtaW52YWxpZCI6dCYmKG4rPSIgaXMtaGlnaGxpZ2h0ZWQiKSxufSxfY29tcHV0ZUFkZE9uQ29udGVudENsYXNzOmZ1bmN0aW9uKHQsZSl7dmFyIG49ImFkZC1vbi1jb250ZW50IjtyZXR1cm4gZT9uKz0iIGlzLWludmFsaWQiOnQmJihuKz0iIGlzLWhpZ2hsaWdodGVkIiksbn19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1lcnJvcjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDowOwogICAgICAgIHJpZ2h0OjA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH0KCiAgICAgICNhMTF5V3JhcHBlciB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICA6aG9zdChbaW52YWxpZF0pICNhMTF5V3JhcHBlciB7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8IS0tCiAgICBJZiB0aGUgcGFwZXItaW5wdXQtZXJyb3IgZWxlbWVudCBpcyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuCiAgICBcYGFyaWEtZGVzY3JpYmVkYnlcYCBhdHRyaWJ1dGUsIHN1Y2ggYXMgd2hlbiB1c2VkIGFzIGEgcGFwZXItaW5wdXQgYWRkLW9uLAogICAgdGhlbiBhcHBseWluZyBcYHZpc2liaWxpdHk6IGhpZGRlbjtcYCB0byB0aGUgcGFwZXItaW5wdXQtZXJyb3IgZWxlbWVudCBpdHNlbGYKICAgIGRvZXMgbm90IGhpZGUgdGhlIGVycm9yLgoKICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWU6CiAgICBodHRwczovL3d3dy53My5vcmcvVFIvYWNjbmFtZS0xLjEvI21hcHBpbmdfYWRkaXRpb25hbF9uZF9kZXNjcmlwdGlvbgogICAgLS0+CiAgICA8ZGl2IGlkPSJhMTF5V3JhcHBlciI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1pbnB1dC1lcnJvciIsYmVoYXZpb3JzOltYYV0scHJvcGVydGllczp7aW52YWxpZDp7cmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbn19LHVwZGF0ZTpmdW5jdGlvbih0KXt0aGlzLl9zZXRJbnZhbGlkKHQuaW52YWxpZCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBLYT17TmV4dExhYmVsSUQ6MSxOZXh0QWRkb25JRDoxLE5leHRJbnB1dElEOjF9LFphPXtwcm9wZXJ0aWVzOntsYWJlbDp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGludmFsaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LGFsbG93ZWRQYXR0ZXJuOnt0eXBlOlN0cmluZ30sdHlwZTp7dHlwZTpTdHJpbmd9LGxpc3Q6e3R5cGU6U3RyaW5nfSxwYXR0ZXJuOnt0eXBlOlN0cmluZ30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZXJyb3JNZXNzYWdlOnt0eXBlOlN0cmluZ30sY2hhckNvdW50ZXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXV0b1ZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9mZiJ9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfYXV0b2ZvY3VzQ2hhbmdlZCJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LG1pbmxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1heGxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1pbjp7dHlwZTpTdHJpbmd9LG1heDp7dHlwZTpTdHJpbmd9LHN0ZXA6e3R5cGU6U3RyaW5nfSxuYW1lOnt0eXBlOlN0cmluZ30scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxyZWFkb25seTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzaXplOnt0eXBlOk51bWJlcn0sYXV0b2NhcGl0YWxpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiJub25lIn0sYXV0b2NvcnJlY3Q6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmYifSxhdXRvc2F2ZTp7dHlwZTpTdHJpbmd9LHJlc3VsdHM6e3R5cGU6TnVtYmVyfSxhY2NlcHQ6e3R5cGU6U3RyaW5nfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFufSxfYXJpYURlc2NyaWJlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2FyaWFMYWJlbGxlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2lucHV0SWQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sbGlzdGVuZXJzOnsiYWRkb24tYXR0YWNoZWQiOiJfb25BZGRvbkF0dGFjaGVkIn0sa2V5QmluZGluZ3M6eyJzaGlmdCt0YWI6a2V5ZG93biI6Il9vblNoaWZ0VGFiRG93biJ9LGhvc3RBdHRyaWJ1dGVzOnt0YWJpbmRleDowfSxnZXQgaW5wdXRFbGVtZW50KCl7cmV0dXJuIHRoaXMuJHx8KHRoaXMuJD17fSksdGhpcy4kLmlucHV0fHwodGhpcy5fZ2VuZXJhdGVJbnB1dElkKCksdGhpcy4kLmlucHV0PXRoaXMuJCQoIiMiK3RoaXMuX2lucHV0SWQpKSx0aGlzLiQuaW5wdXR9LGdldCBfZm9jdXNhYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudH0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX3R5cGVzVGhhdEhhdmVUZXh0PVsiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJtb250aCIsInRpbWUiLCJ3ZWVrIiwiZmlsZSJdfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5KCksIXdlJiZ0aGlzLmlucHV0RWxlbWVudCYmLTEhPT10aGlzLl90eXBlc1RoYXRIYXZlVGV4dC5pbmRleE9mKHRoaXMuaW5wdXRFbGVtZW50LnR5cGUpJiYodGhpcy5hbHdheXNGbG9hdExhYmVsPSEwKX0sX2FwcGVuZFN0cmluZ1dpdGhTcGFjZTpmdW5jdGlvbih0LGUpe3JldHVybiB0PXQ/dCsiICIrZTplfSxfb25BZGRvbkF0dGFjaGVkOmZ1bmN0aW9uKHQpe3ZhciBlPWVyKHQpLnJvb3RUYXJnZXQ7aWYoZS5pZCl0aGlzLl9hcmlhRGVzY3JpYmVkQnk9dGhpcy5fYXBwZW5kU3RyaW5nV2l0aFNwYWNlKHRoaXMuX2FyaWFEZXNjcmliZWRCeSxlLmlkKTtlbHNle3ZhciBuPSJwYXBlci1pbnB1dC1hZGQtb24tIitLYS5OZXh0QWRkb25JRCsrO2UuaWQ9bix0aGlzLl9hcmlhRGVzY3JpYmVkQnk9dGhpcy5fYXBwZW5kU3RyaW5nV2l0aFNwYWNlKHRoaXMuX2FyaWFEZXNjcmliZWRCeSxuKX19LHZhbGlkYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LnZhbGlkYXRlKCl9LF9mb2N1c0JsdXJIYW5kbGVyOmZ1bmN0aW9uKHQpe3JhLl9mb2N1c0JsdXJIYW5kbGVyLmNhbGwodGhpcyx0KSx0aGlzLmZvY3VzZWQmJiF0aGlzLl9zaGlmdFRhYlByZXNzZWQmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKX0sX29uU2hpZnRUYWJEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO3RoaXMuX3NoaWZ0VGFiUHJlc3NlZD0hMCx0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixlKSx0aGlzLl9zaGlmdFRhYlByZXNzZWQ9ITF9KSwxKX0sX2hhbmRsZUF1dG9WYWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMuYXV0b1ZhbGlkYXRlJiZ0aGlzLnZhbGlkYXRlKCl9LHVwZGF0ZVZhbHVlQW5kUHJlc2VydmVDYXJldDpmdW5jdGlvbih0KXt0cnl7dmFyIGU9dGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7dGhpcy52YWx1ZT10LHRoaXMuaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0PWUsdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kPWV9Y2F0Y2goZSl7dGhpcy52YWx1ZT10fX0sX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fHR9LF91cGRhdGVBcmlhTGFiZWxsZWRCeTpmdW5jdGlvbigpe3ZhciB0LGU9ZXIodGhpcy5yb290KS5xdWVyeVNlbGVjdG9yKCJsYWJlbCIpO2U/KGUuaWQ/dD1lLmlkOih0PSJwYXBlci1pbnB1dC1sYWJlbC0iK0thLk5leHRMYWJlbElEKyssZS5pZD10KSx0aGlzLl9hcmlhTGFiZWxsZWRCeT10KTp0aGlzLl9hcmlhTGFiZWxsZWRCeT0iIn0sX2dlbmVyYXRlSW5wdXRJZDpmdW5jdGlvbigpe3RoaXMuX2lucHV0SWQmJiIiIT09dGhpcy5faW5wdXRJZHx8KHRoaXMuX2lucHV0SWQ9ImlucHV0LSIrS2EuTmV4dElucHV0SUQrKyl9LF9vbkNoYW5nZTpmdW5jdGlvbih0KXt0aGlzLnNoYWRvd1Jvb3QmJnRoaXMuZmlyZSh0LnR5cGUse3NvdXJjZUV2ZW50OnR9LHtub2RlOnRoaXMsYnViYmxlczp0LmJ1YmJsZXMsY2FuY2VsYWJsZTp0LmNhbmNlbGFibGV9KX0sX2F1dG9mb2N1c0NoYW5nZWQ6ZnVuY3Rpb24oKXtpZih0aGlzLmF1dG9mb2N1cyYmdGhpcy5fZm9jdXNhYmxlRWxlbWVudCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnQhPT1kb2N1bWVudC5ib2R5JiZ0IT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHx0aGlzLl9mb2N1c2FibGVFbGVtZW50LmZvY3VzKCl9fX0sSmE9W3JhLFhvLFphXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoicGFwZXItaW5wdXQiLF90ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbZm9jdXNlZF0pIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgaW5wdXQgewogICAgICAgIC8qIEZpcmVmb3ggc2V0cyBhIG1pbi13aWR0aCBvbiB0aGUgaW5wdXQsIHdoaWNoIGNhbiBjYXVzZSBsYXlvdXQgaXNzdWVzICovCiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAvKiBJbiAxLngsIHRoZSA8aW5wdXQ+IGlzIGRpc3RyaWJ1dGVkIHRvIHBhcGVyLWlucHV0LWNvbnRhaW5lciwgd2hpY2ggc3R5bGVzIGl0LgogICAgICBJbiAyLnggdGhlIDxpcm9uLWlucHV0PiBpcyBkaXN0cmlidXRlZCB0byBwYXBlci1pbnB1dC1jb250YWluZXIsIHdoaWNoIHN0eWxlcwogICAgICBpdCwgYnV0IGluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LCB3ZSBuZWVkIHRvIHJlc2V0IHNvbWUKICAgICAgb2YgdGhlIG5hdGl2ZSBpbnB1dCdzIHByb3BlcnRpZXMgdG8gaW5oZXJpdCAoZnJvbSB0aGUgaXJvbi1pbnB1dCkgKi8KICAgICAgaXJvbi1pbnB1dCA+IGlucHV0IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwogICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDsKICAgICAgICB3b3JkLXNwYWNpbmc6IGluaGVyaXQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgICAgICAgdGV4dC1zaGFkb3c6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgY3Vyc29yOiBpbmhlcml0OwogICAgICB9CgogICAgICBpbnB1dDpkaXNhYmxlZCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWRpc2FibGVkOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwKICAgICAgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24gewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC13ZWJraXQtc3Bpbm5lcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtY2xlYXItYnV0dG9uIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LWNsZWFyOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3I7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBpbnB1dDotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi1tcy1jbGVhciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLW1zLWNsZWFyOwogICAgICB9CgogICAgICBpbnB1dDo6LW1zLXJldmVhbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLW1zLXJldmVhbDsKICAgICAgfQoKICAgICAgaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBsYWJlbCB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHBhcGVyLWlucHV0LWNvbnRhaW5lciBpZD0iY29udGFpbmVyIiBuby1sYWJlbC1mbG9hdD0iW1tub0xhYmVsRmxvYXRdXSIgYWx3YXlzLWZsb2F0LWxhYmVsPSJbW19jb21wdXRlQWx3YXlzRmxvYXRMYWJlbChhbHdheXNGbG9hdExhYmVsLHBsYWNlaG9sZGVyKV1dIiBhdXRvLXZhbGlkYXRlJD0iW1thdXRvVmFsaWRhdGVdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIGludmFsaWQ9IltbaW52YWxpZF1dIj4KCiAgICAgIDxzbG90IG5hbWU9InByZWZpeCIgc2xvdD0icHJlZml4Ij48L3Nsb3Q+CgogICAgICA8bGFiZWwgaGlkZGVuJD0iW1shbGFiZWxdXSIgYXJpYS1oaWRkZW49InRydWUiIGZvciQ9IltbX2lucHV0SWRdXSIgc2xvdD0ibGFiZWwiPltbbGFiZWxdXTwvbGFiZWw+CgogICAgICA8IS0tIE5lZWQgdG8gYmluZCBtYXhsZW5ndGggc28gdGhhdCB0aGUgcGFwZXItaW5wdXQtY2hhci1jb3VudGVyIHdvcmtzIGNvcnJlY3RseSAtLT4KICAgICAgPGlyb24taW5wdXQgYmluZC12YWx1ZT0ie3t2YWx1ZX19IiBzbG90PSJpbnB1dCIgY2xhc3M9ImlucHV0LWVsZW1lbnQiIGlkJD0iW1tfaW5wdXRJZF1dIiBtYXhsZW5ndGgkPSJbW21heGxlbmd0aF1dIiBhbGxvd2VkLXBhdHRlcm49IltbYWxsb3dlZFBhdHRlcm5dXSIgaW52YWxpZD0ie3tpbnZhbGlkfX0iIHZhbGlkYXRvcj0iW1t2YWxpZGF0b3JdXSI+CiAgICAgICAgPGlucHV0IGFyaWEtbGFiZWxsZWRieSQ9IltbX2FyaWFMYWJlbGxlZEJ5XV0iIGFyaWEtZGVzY3JpYmVkYnkkPSJbW19hcmlhRGVzY3JpYmVkQnldXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIHRpdGxlJD0iW1t0aXRsZV1dIiB0eXBlJD0iW1t0eXBlXV0iIHBhdHRlcm4kPSJbW3BhdHRlcm5dXSIgcmVxdWlyZWQkPSJbW3JlcXVpcmVkXV0iIGF1dG9jb21wbGV0ZSQ9IltbYXV0b2NvbXBsZXRlXV0iIGF1dG9mb2N1cyQ9IltbYXV0b2ZvY3VzXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIG1pbmxlbmd0aCQ9IltbbWlubGVuZ3RoXV0iIG1heGxlbmd0aCQ9IltbbWF4bGVuZ3RoXV0iIG1pbiQ9IltbbWluXV0iIG1heCQ9IltbbWF4XV0iIHN0ZXAkPSJbW3N0ZXBdXSIgbmFtZSQ9IltbbmFtZV1dIiBwbGFjZWhvbGRlciQ9IltbcGxhY2Vob2xkZXJdXSIgcmVhZG9ubHkkPSJbW3JlYWRvbmx5XV0iIGxpc3QkPSJbW2xpc3RdXSIgc2l6ZSQ9Iltbc2l6ZV1dIiBhdXRvY2FwaXRhbGl6ZSQ9IltbYXV0b2NhcGl0YWxpemVdXSIgYXV0b2NvcnJlY3QkPSJbW2F1dG9jb3JyZWN0XV0iIG9uLWNoYW5nZT0iX29uQ2hhbmdlIiB0YWJpbmRleCQ9IltbdGFiSW5kZXhdXSIgYXV0b3NhdmUkPSJbW2F1dG9zYXZlXV0iIHJlc3VsdHMkPSJbW3Jlc3VsdHNdXSIgYWNjZXB0JD0iW1thY2NlcHRdXSIgbXVsdGlwbGUkPSJbW211bHRpcGxlXV0iIHJvbGUkPSJbW2lucHV0Um9sZV1dIiBhcmlhLWhhc3BvcHVwJD0iW1tpbnB1dEFyaWFIYXNwb3B1cF1dIj4KICAgICAgPC9pcm9uLWlucHV0PgoKICAgICAgPHNsb3QgbmFtZT0ic3VmZml4IiBzbG90PSJzdWZmaXgiPjwvc2xvdD4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlcnJvck1lc3NhZ2VdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWVycm9yIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBzbG90PSJhZGQtb24iPltbZXJyb3JNZXNzYWdlXV08L3BhcGVyLWlucHV0LWVycm9yPgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJDb3VudGVyXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgc2xvdD0iYWRkLW9uIj48L3BhcGVyLWlucHV0LWNoYXItY291bnRlcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICA8L3BhcGVyLWlucHV0LWNvbnRhaW5lcj4KICBgLGJlaGF2aW9yczpbSmEsZ2FdLHByb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOlN0cmluZ30saW5wdXRSb2xlOnt0eXBlOlN0cmluZyx2YWx1ZTp2b2lkIDB9LGlucHV0QXJpYUhhc3BvcHVwOnt0eXBlOlN0cmluZyx2YWx1ZTp2b2lkIDB9fSxnZXQgX2ZvY3VzYWJsZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQuX2lucHV0RWxlbWVudH0sbGlzdGVuZXJzOnsiaXJvbi1pbnB1dC1yZWFkeSI6Il9vbklyb25JbnB1dFJlYWR5In0sX29uSXJvbklucHV0UmVhZHk6ZnVuY3Rpb24oKXt0aGlzLiQubmF0aXZlSW5wdXR8fCh0aGlzLiQubmF0aXZlSW5wdXQ9dGhpcy4kJCgiaW5wdXQiKSksdGhpcy5pbnB1dEVsZW1lbnQmJi0xIT09dGhpcy5fdHlwZXNUaGF0SGF2ZVRleHQuaW5kZXhPZih0aGlzLiQubmF0aXZlSW5wdXQudHlwZSkmJih0aGlzLmFsd2F5c0Zsb2F0TGFiZWw9ITApLHRoaXMuaW5wdXRFbGVtZW50LmJpbmRWYWx1ZSYmdGhpcy4kLmNvbnRhaW5lci5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUodGhpcy5pbnB1dEVsZW1lbnQpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgfQoKICAgICAgI2NvbnRlbnRXcmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgICNjb250ZW50V3JhcHBlci5hbmltYXRpbmcgOjpzbG90dGVkKCopIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9ImNvbnRlbnRXcmFwcGVyIj4KICAgICAgPHNsb3QgaWQ9ImNvbnRlbnQiIG5hbWU9ImRyb3Bkb3duLWNvbnRlbnQiPjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJpcm9uLWRyb3Bkb3duIixiZWhhdmlvcnM6W3JhLFhvLFdhLFRhXSxwcm9wZXJ0aWVzOntob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0IixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sb3BlbkFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3R9LGNsb3NlQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdH0sZm9jdXNUYXJnZXQ6e3R5cGU6T2JqZWN0fSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWxsb3dPdXRzaWRlU2Nyb2xsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9hbGxvd091dHNpZGVTY3JvbGxDaGFuZ2VkIn19LGxpc3RlbmVyczp7Im5lb24tYW5pbWF0aW9uLWZpbmlzaCI6Il9vbk5lb25BbmltYXRpb25GaW5pc2gifSxvYnNlcnZlcnM6WyJfdXBkYXRlT3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uVGFyZ2V0LCB2ZXJ0aWNhbEFsaWduLCBob3Jpem9udGFsQWxpZ24sIHZlcnRpY2FsT2Zmc2V0LCBob3Jpem9udGFsT2Zmc2V0KSJdLGdldCBjb250YWluZWRFbGVtZW50KCl7Zm9yKHZhciB0PWVyKHRoaXMuJC5jb250ZW50KS5nZXREaXN0cmlidXRlZE5vZGVzKCksZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylpZih0W2VdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIHRbZV19LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxBY3Rpb258fCh0aGlzLnNjcm9sbEFjdGlvbj10aGlzLmFsbG93T3V0c2lkZVNjcm9sbD8icmVmaXQiOiJsb2NrIiksdGhpcy5fcmVhZGllZD0hMH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnNpemluZ1RhcmdldCYmdGhpcy5zaXppbmdUYXJnZXQhPT10aGlzfHwodGhpcy5zaXppbmdUYXJnZXQ9dGhpcy5jb250YWluZWRFbGVtZW50fHx0aGlzKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiZ0aGlzLmRpc2FibGVkP3RoaXMuY2FuY2VsKCk6KHRoaXMuY2FuY2VsQW5pbWF0aW9uKCksdGhpcy5fdXBkYXRlQW5pbWF0aW9uQ29uZmlnKCksamEuX29wZW5lZENoYW5nZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sX3JlbmRlck9wZW5lZDpmdW5jdGlvbigpeyF0aGlzLm5vQW5pbWF0aW9ucyYmdGhpcy5hbmltYXRpb25Db25maWcub3Blbj8odGhpcy4kLmNvbnRlbnRXcmFwcGVyLmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpLHRoaXMucGxheUFuaW1hdGlvbigib3BlbiIpKTpqYS5fcmVuZGVyT3BlbmVkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpeyF0aGlzLm5vQW5pbWF0aW9ucyYmdGhpcy5hbmltYXRpb25Db25maWcuY2xvc2U/KHRoaXMuJC5jb250ZW50V3JhcHBlci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKSx0aGlzLnBsYXlBbmltYXRpb24oImNsb3NlIikpOmphLl9yZW5kZXJDbG9zZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy4kLmNvbnRlbnRXcmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpLHRoaXMub3BlbmVkP3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpOnRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpfSxfdXBkYXRlQW5pbWF0aW9uQ29uZmlnOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuY29udGFpbmVkRWxlbWVudCxlPVtdLmNvbmNhdCh0aGlzLm9wZW5BbmltYXRpb25Db25maWd8fFtdKS5jb25jYXQodGhpcy5jbG9zZUFuaW1hdGlvbkNvbmZpZ3x8W10pLG49MDtuPGUubGVuZ3RoO24rKyllW25dLm5vZGU9dDt0aGlzLmFuaW1hdGlvbkNvbmZpZz17b3Blbjp0aGlzLm9wZW5BbmltYXRpb25Db25maWcsY2xvc2U6dGhpcy5jbG9zZUFuaW1hdGlvbkNvbmZpZ319LF91cGRhdGVPdmVybGF5UG9zaXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzQXR0YWNoZWQmJnRoaXMubm90aWZ5UmVzaXplKCl9LF9hbGxvd091dHNpZGVTY3JvbGxDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX3JlYWRpZWQmJih0P3RoaXMuc2Nyb2xsQWN0aW9uJiYibG9jayIhPT10aGlzLnNjcm9sbEFjdGlvbnx8KHRoaXMuc2Nyb2xsQWN0aW9uPSJyZWZpdCIpOnRoaXMuc2Nyb2xsQWN0aW9uPSJsb2NrIil9LF9hcHBseUZvY3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mb2N1c1RhcmdldHx8dGhpcy5jb250YWluZWRFbGVtZW50O3QmJnRoaXMub3BlbmVkJiYhdGhpcy5ub0F1dG9Gb2N1cz90LmZvY3VzKCk6amEuX2FwcGx5Rm9jdXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgUWE9e3Byb3BlcnRpZXM6e2FuaW1hdGlvblRpbWluZzp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZHVyYXRpb246NTAwLGVhc2luZzoiY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSIsZmlsbDoiYm90aCJ9fX19LGlzTmVvbkFuaW1hdGlvbjohMCxjcmVhdGVkOmZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5hbmltYXRlfHxjb25zb2xlLndhcm4oIk5vIHdlYiBhbmltYXRpb25zIGRldGVjdGVkLiBUaGlzIGVsZW1lbnQgd2lsbCBub3QgZnVuY3Rpb24gd2l0aG91dCBhIHdlYiBhbmltYXRpb25zIHBvbHlmaWxsLiIpfSx0aW1pbmdGcm9tQ29uZmlnOmZ1bmN0aW9uKHQpe2lmKHQudGltaW5nKWZvcih2YXIgZSBpbiB0LnRpbWluZyl0aGlzLmFuaW1hdGlvblRpbWluZ1tlXT10LnRpbWluZ1tlXTtyZXR1cm4gdGhpcy5hbmltYXRpb25UaW1pbmd9LHNldFByZWZpeGVkUHJvcGVydHk6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSxyPXt0cmFuc2Zvcm06WyJ3ZWJraXRUcmFuc2Zvcm0iXSx0cmFuc2Zvcm1PcmlnaW46WyJtb3pUcmFuc2Zvcm1PcmlnaW4iLCJ3ZWJraXRUcmFuc2Zvcm1PcmlnaW4iXX1bZV0sbz0wO2k9cltvXTtvKyspdC5zdHlsZVtpXT1uO3Quc3R5bGVbZV09bn0sY29tcGxldGU6ZnVuY3Rpb24odCl7fX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2pyKHtpczoiZmFkZS1pbi1hbmltYXRpb24iLGJlaGF2aW9yczpbUWFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdCh0Lm5vZGUsW3tvcGFjaXR5OiIwIn0se29wYWNpdHk6IjEifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7aXM6ImZhZGUtb3V0LWFuaW1hdGlvbiIsYmVoYXZpb3JzOltRYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KHQubm9kZSxbe29wYWNpdHk6IjEifSx7b3BhY2l0eToiMCJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcodCkpLHRoaXMuX2VmZmVjdH19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoicGFwZXItbWVudS1ncm93LWhlaWdodC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbUWFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXt2YXIgZT10Lm5vZGUsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdChlLFt7aGVpZ2h0Om4vMisicHgifSx7aGVpZ2h0Om4rInB4In1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pLGpyKHtpczoicGFwZXItbWVudS1ncm93LXdpZHRoLWFuaW1hdGlvbiIsX3RlbXBsYXRlOm51bGwsYmVoYXZpb3JzOltRYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubm9kZSxuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZSxbe3dpZHRoOm4vMisicHgifSx7d2lkdGg6bisicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSksanIoe2lzOiJwYXBlci1tZW51LXNocmluay13aWR0aC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbUWFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXt2YXIgZT10Lm5vZGUsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KGUsW3t3aWR0aDpuKyJweCJ9LHt3aWR0aDpuLW4vMjArInB4In1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pLGpyKHtpczoicGFwZXItbWVudS1zaHJpbmstaGVpZ2h0LWFuaW1hdGlvbiIsX3RlbXBsYXRlOm51bGwsYmVoYXZpb3JzOltRYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubm9kZSxuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O3JldHVybiB0aGlzLnNldFByZWZpeGVkUHJvcGVydHkoZSwidHJhbnNmb3JtT3JpZ2luIiwiMCAwIiksdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdChlLFt7aGVpZ2h0Om4rInB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSx7aGVpZ2h0Om4vMisicHgiLHRyYW5zZm9ybToidHJhbnNsYXRlWSgtMjBweCkifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgdHM9e0FOSU1BVElPTl9DVUJJQ19CRVpJRVI6ImN1YmljLWJlemllciguMywuOTUsLjUsMSkiLE1BWF9BTklNQVRJT05fVElNRV9NUzo0MDB9O2NvbnN0IGVzPWpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBvdXRsaW5lOiBub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgICBjb2xvcjogdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcik7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uLWRpc2FibGVkOwogICAgICB9CgogICAgICBpcm9uLWRyb3Bkb3duIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbi1kcm9wZG93bjsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duLWNvbnRlbnQgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLW1lbnUtYnV0dG9uLWRyb3Bkb3duLWJhY2tncm91bmQsIHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbi1jb250ZW50OwogICAgICB9CgogICAgICA6aG9zdChbdmVydGljYWwtYWxpZ249InRvcCJdKSAuZHJvcGRvd24tY29udGVudCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgICAgICB0b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFt2ZXJ0aWNhbC1hbGlnbj0iYm90dG9tIl0pIC5kcm9wZG93bi1jb250ZW50IHsKICAgICAgICBib3R0b206IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTEwcHg7CiAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgfQoKICAgICAgI3RyaWdnZXIgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0cmlnZ2VyIiBvbi10YXA9InRvZ2dsZSI+CiAgICAgIDxzbG90IG5hbWU9ImRyb3Bkb3duLXRyaWdnZXIiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxpcm9uLWRyb3Bkb3duIGlkPSJkcm9wZG93biIgb3BlbmVkPSJ7e29wZW5lZH19IiBob3Jpem9udGFsLWFsaWduPSJbW2hvcml6b250YWxBbGlnbl1dIiB2ZXJ0aWNhbC1hbGlnbj0iW1t2ZXJ0aWNhbEFsaWduXV0iIGR5bmFtaWMtYWxpZ249IltbZHluYW1pY0FsaWduXV0iIGhvcml6b250YWwtb2Zmc2V0PSJbW2hvcml6b250YWxPZmZzZXRdXSIgdmVydGljYWwtb2Zmc2V0PSJbW3ZlcnRpY2FsT2Zmc2V0XV0iIG5vLW92ZXJsYXA9Iltbbm9PdmVybGFwXV0iIG9wZW4tYW5pbWF0aW9uLWNvbmZpZz0iW1tvcGVuQW5pbWF0aW9uQ29uZmlnXV0iIGNsb3NlLWFuaW1hdGlvbi1jb25maWc9IltbY2xvc2VBbmltYXRpb25Db25maWddXSIgbm8tYW5pbWF0aW9ucz0iW1tub0FuaW1hdGlvbnNdXSIgZm9jdXMtdGFyZ2V0PSJbW19kcm9wZG93bkNvbnRlbnRdXSIgYWxsb3ctb3V0c2lkZS1zY3JvbGw9IltbYWxsb3dPdXRzaWRlU2Nyb2xsXV0iIHJlc3RvcmUtZm9jdXMtb24tY2xvc2U9IltbcmVzdG9yZUZvY3VzT25DbG9zZV1dIiBvbi1pcm9uLW92ZXJsYXktY2FuY2VsZWQ9Il9fb25Jcm9uT3ZlcmxheUNhbmNlbGVkIiBleHBhbmQtc2l6aW5nLXRhcmdldC1mb3Itc2Nyb2xsYmFycz0iW1tleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzXV0iPgogICAgICA8ZGl2IHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiIGNsYXNzPSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8c2xvdCBpZD0iY29udGVudCIgbmFtZT0iZHJvcGRvd24tY29udGVudCI+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIDwvaXJvbi1kcm9wZG93bj4KYCxpczoicGFwZXItbWVudS1idXR0b24iLGJlaGF2aW9yczpbWG8scmFdLHByb3BlcnRpZXM6e29wZW5lZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSxob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0IixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sZHluYW1pY0FsaWduOnt0eXBlOkJvb2xlYW59LGhvcml6b250YWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSx2ZXJ0aWNhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LG5vT3ZlcmxhcDp7dHlwZTpCb29sZWFufSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saWdub3JlU2VsZWN0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NlT25BY3RpdmF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxvcGVuQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVyblt7bmFtZToiZmFkZS1pbi1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjIwMH19LHtuYW1lOiJwYXBlci1tZW51LWdyb3ctd2lkdGgtYW5pbWF0aW9uIix0aW1pbmc6e2RlbGF5OjEwMCxkdXJhdGlvbjoxNTAsZWFzaW5nOnRzLkFOSU1BVElPTl9DVUJJQ19CRVpJRVJ9fSx7bmFtZToicGFwZXItbWVudS1ncm93LWhlaWdodC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjI3NSxlYXNpbmc6dHMuQU5JTUFUSU9OX0NVQklDX0JFWklFUn19XX19LGNsb3NlQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVyblt7bmFtZToiZmFkZS1vdXQtYW5pbWF0aW9uIix0aW1pbmc6e2R1cmF0aW9uOjE1MH19LHtuYW1lOiJwYXBlci1tZW51LXNocmluay13aWR0aC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjUwLGVhc2luZzp0cy5BTklNQVRJT05fQ1VCSUNfQkVaSUVSfX0se25hbWU6InBhcGVyLW1lbnUtc2hyaW5rLWhlaWdodC1hbmltYXRpb24iLHRpbWluZzp7ZHVyYXRpb246MjAwLGVhc2luZzoiZWFzZS1pbiJ9fV19fSxhbGxvd091dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9kcm9wZG93bkNvbnRlbnQ6e3R5cGU6T2JqZWN0fX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oYXNwb3B1cCI6InRydWUifSxsaXN0ZW5lcnM6eyJpcm9uLWFjdGl2YXRlIjoiX29uSXJvbkFjdGl2YXRlIiwiaXJvbi1zZWxlY3QiOiJfb25Jcm9uU2VsZWN0In0sZ2V0IGNvbnRlbnRFbGVtZW50KCl7Zm9yKHZhciB0PWVyKHRoaXMuJC5jb250ZW50KS5nZXREaXN0cmlidXRlZE5vZGVzKCksZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylpZih0W2VdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIHRbZV19LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkP3RoaXMuY2xvc2UoKTp0aGlzLm9wZW4oKX0sb3BlbjpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWR8fHRoaXMuJC5kcm9wZG93bi5vcGVuKCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy4kLmRyb3Bkb3duLmNsb3NlKCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5pZ25vcmVTZWxlY3R8fHRoaXMuY2xvc2UoKX0sX29uSXJvbkFjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuY2xvc2VPbkFjdGl2YXRlJiZ0aGlzLmNsb3NlKCl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dD8odGhpcy5fZHJvcGRvd25Db250ZW50PXRoaXMuY29udGVudEVsZW1lbnQsdGhpcy5maXJlKCJwYXBlci1kcm9wZG93bi1vcGVuIikpOm51bGwhPWUmJnRoaXMuZmlyZSgicGFwZXItZHJvcGRvd24tY2xvc2UiKX0sX2Rpc2FibGVkQ2hhbmdlZDpmdW5jdGlvbih0KXtyYS5fZGlzYWJsZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0JiZ0aGlzLm9wZW5lZCYmdGhpcy5jbG9zZSgpfSxfX29uSXJvbk92ZXJsYXlDYW5jZWxlZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLiQudHJpZ2dlcjtlcih0LmRldGFpbCkucGF0aC5pbmRleE9mKGUpPi0xJiZ0LnByZXZlbnREZWZhdWx0KCl9fSk7T2JqZWN0LmtleXModHMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VzW3RdPXRzW3RdfSkpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgbnM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtucy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxucy5pbm5lckhUTUw9Jzxpcm9uLWljb25zZXQtc3ZnIG5hbWU9InBhcGVyLWRyb3Bkb3duLW1lbnUiIHNpemU9IjI0Ij5cbjxzdmc+PGRlZnM+XG48ZyBpZD0iYXJyb3ctZHJvcC1kb3duIj48cGF0aCBkPSJNNyAxMGw1IDUgNS01eiI+PC9wYXRoPjwvZz5cbjwvZGVmcz48L3N2Zz5cbjwvaXJvbi1pY29uc2V0LXN2Zz4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobnMuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBpcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2lzLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGlzLmlubmVySFRNTD0nPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWRyb3Bkb3duLW1lbnUtc2hhcmVkLXN0eWxlcyI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgIC8qIE5PVEUoY2RhdGEpOiBCb3RoIHZhbHVlcyBhcmUgbmVlZGVkLCBzaW5jZSBzb21lIHBob25lcyByZXF1aXJlIHRoZVxuICAgICAgICAgKiB2YWx1ZSB0byBiZSBgdHJhbnNwYXJlbnRgLlxuICAgICAgICAgKi9cbiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApO1xuICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51O1xuICAgICAgfVxuXG4gICAgICAvKiBwYXBlci1kcm9wZG93bi1tZW51IGFuZCBwYXBlci1kcm9wZG93bi1tZW51LWxpZ2h0IGJvdGggZGVsZWdhdGUgZm9jdXNcbiAgICAgICAqIHRvIG90aGVyIGludGVybmFsIGVsZW1lbnRzIHdoaWNoIG1hbmFnZSBmb2N1cyBzdHlsaW5nLiAqL1xuICAgICAgOmhvc3QoOmZvY3VzKSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KDpkaXIocnRsKSkge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICBAYXBwbHkoLS1wYXBlci1kcm9wZG93bi1tZW51KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoW2Rpc2FibGVkXSkge1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbbm9pbmtdKSBwYXBlci1yaXBwbGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbbm8tbGFiZWwtZmxvYXRdKSBwYXBlci1yaXBwbGUge1xuICAgICAgICB0b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgcGFwZXItcmlwcGxlIHtcbiAgICAgICAgdG9wOiAxMnB4O1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIGJvdHRvbTogOHB4O1xuICAgICAgICByaWdodDogMHB4O1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtcmlwcGxlO1xuICAgICAgfVxuXG4gICAgICBwYXBlci1tZW51LWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtYnV0dG9uO1xuICAgICAgfVxuXG4gICAgICBwYXBlci1pbnB1dCB7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaW5wdXQ7XG4gICAgICB9XG5cbiAgICAgIGlyb24taWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWljb247XG4gICAgICB9XG4gICAgPC9zdHlsZT5cbiAgPC90ZW1wbGF0ZT5cbjwvZG9tLW1vZHVsZT4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaXMuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBycz1jcihIVE1MRWxlbWVudCk7anIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1kcm9wZG93bi1tZW51LXNoYXJlZC1zdHlsZXMiPjwvc3R5bGU+CgogICAgPHBhcGVyLW1lbnUtYnV0dG9uIGlkPSJtZW51QnV0dG9uIiB2ZXJ0aWNhbC1hbGlnbj0iW1t2ZXJ0aWNhbEFsaWduXV0iIGhvcml6b250YWwtYWxpZ249IltbaG9yaXpvbnRhbEFsaWduXV0iIGR5bmFtaWMtYWxpZ249IltbZHluYW1pY0FsaWduXV0iIHZlcnRpY2FsLW9mZnNldD0iW1tfY29tcHV0ZU1lbnVWZXJ0aWNhbE9mZnNldChub0xhYmVsRmxvYXQsIHZlcnRpY2FsT2Zmc2V0KV1dIiBkaXNhYmxlZD0iW1tkaXNhYmxlZF1dIiBuby1hbmltYXRpb25zPSJbW25vQW5pbWF0aW9uc11dIiBvbi1pcm9uLXNlbGVjdD0iX29uSXJvblNlbGVjdCIgb24taXJvbi1kZXNlbGVjdD0iX29uSXJvbkRlc2VsZWN0IiBvcGVuZWQ9Int7b3BlbmVkfX0iIGNsb3NlLW9uLWFjdGl2YXRlIGFsbG93LW91dHNpZGUtc2Nyb2xsPSJbW2FsbG93T3V0c2lkZVNjcm9sbF1dIiByZXN0b3JlLWZvY3VzLW9uLWNsb3NlPSJbW3Jlc3RvcmVGb2N1c09uQ2xvc2VdXSIgZXhwYW5kLXNpemluZy10YXJnZXQtZm9yLXNjcm9sbGJhcnM9IltbZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFyc11dIj4KICAgICAgPCEtLSBzdXBwb3J0IGh5YnJpZCBtb2RlOiB1c2VyIG1pZ2h0IGJlIHVzaW5nIHBhcGVyLW1lbnUtYnV0dG9uIDEueCB3aGljaCBkaXN0cmlidXRlcyB2aWEgPGNvbnRlbnQ+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi10cmlnZ2VyIiBzbG90PSJkcm9wZG93bi10cmlnZ2VyIj4KICAgICAgICA8cGFwZXItcmlwcGxlPjwvcGFwZXItcmlwcGxlPgogICAgICAgIDwhLS0gcGFwZXItaW5wdXQgaGFzIHR5cGU9InRleHQiIGZvciBhMTF5LCBkbyBub3QgcmVtb3ZlIC0tPgogICAgICAgIDxwYXBlci1pbnB1dCBpZD0iaW5wdXQiIHR5cGU9InRleHQiIGludmFsaWQ9IltbaW52YWxpZF1dIiByZWFkb25seSBkaXNhYmxlZD0iW1tkaXNhYmxlZF1dIiB2YWx1ZT0iW1t2YWx1ZV1dIiBwbGFjZWhvbGRlcj0iW1twbGFjZWhvbGRlcl1dIiBlcnJvci1tZXNzYWdlPSJbW2Vycm9yTWVzc2FnZV1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbYWx3YXlzRmxvYXRMYWJlbF1dIiBuby1sYWJlbC1mbG9hdD0iW1tub0xhYmVsRmxvYXRdXSIgbGFiZWw9IltbbGFiZWxdXSIgaW5wdXQtcm9sZT0iYnV0dG9uIiBpbnB1dC1hcmlhLWhhc3BvcHVwPSJsaXN0Ym94IiBhdXRvY29tcGxldGU9Im9mZiI+CiAgICAgICAgICA8IS0tIHN1cHBvcnQgaHlicmlkIG1vZGU6IHVzZXIgbWlnaHQgYmUgdXNpbmcgcGFwZXItaW5wdXQgMS54IHdoaWNoIGRpc3RyaWJ1dGVzIHZpYSA8Y29udGVudD4gLS0+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249InBhcGVyLWRyb3Bkb3duLW1lbnU6YXJyb3ctZHJvcC1kb3duIiBzdWZmaXggc2xvdD0ic3VmZml4Ij48L2lyb24taWNvbj4KICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICA8L2Rpdj4KICAgICAgPHNsb3QgaWQ9ImNvbnRlbnQiIG5hbWU9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPjwvc2xvdD4KICAgIDwvcGFwZXItbWVudS1idXR0b24+CmAsaXM6InBhcGVyLWRyb3Bkb3duLW1lbnUiLGJlaGF2aW9yczpbYWEscmEsZ2EseWFdLHByb3BlcnRpZXM6e3NlbGVjdGVkSXRlbUxhYmVsOnt0eXBlOlN0cmluZyxub3RpZnk6ITAscmVhZE9ubHk6ITB9LHNlbGVjdGVkSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxsYWJlbDp7dHlwZTpTdHJpbmd9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZ30sZXJyb3JNZXNzYWdlOnt0eXBlOlN0cmluZ30sb3BlbmVkOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLHZhbHVlOiExLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LGFsbG93T3V0c2lkZVNjcm9sbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0xhYmVsRmxvYXQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9BbmltYXRpb25zOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InJpZ2h0In0sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InRvcCJ9LHZlcnRpY2FsT2Zmc2V0Ok51bWJlcixkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxsaXN0ZW5lcnM6e3RhcDoiX29uVGFwIn0sa2V5QmluZGluZ3M6eyJ1cCBkb3duIjoib3BlbiIsZXNjOiJjbG9zZSJ9LG9ic2VydmVyczpbIl9zZWxlY3RlZEl0ZW1DaGFuZ2VkKHNlbGVjdGVkSXRlbSkiXSxfYXR0YWNoRG9tKHQpe2NvbnN0IGU9WSh0aGlzKTtyZXR1cm4gZS5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4iLGRlbGVnYXRlc0ZvY3VzOiEwLHNoYWR5VXBncmFkZUZyYWdtZW50OnR9KSxlLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQodCkscnMucHJvdG90eXBlLl9hdHRhY2hEb20uY2FsbCh0aGlzLHQpfSxmb2N1cygpe3RoaXMuJC5pbnB1dC5fZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY29udGVudEVsZW1lbnQ7dCYmdC5zZWxlY3RlZEl0ZW0mJnRoaXMuX3NldFNlbGVjdGVkSXRlbSh0LnNlbGVjdGVkSXRlbSl9LGdldCBjb250ZW50RWxlbWVudCgpe2Zvcih2YXIgdD1lcih0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspaWYodFtlXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiB0W2VdfSxvcGVuOmZ1bmN0aW9uKCl7dGhpcy4kLm1lbnVCdXR0b24ub3BlbigpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuJC5tZW51QnV0dG9uLmNsb3NlKCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHQuZGV0YWlsLml0ZW0pfSxfb25Jcm9uRGVzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKG51bGwpfSxfb25UYXA6ZnVuY3Rpb24odCl7dmkodCk9PT10aGlzJiZ0aGlzLm9wZW4oKX0sX3NlbGVjdGVkSXRlbUNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9IiI7ZT10P3QubGFiZWx8fHQuZ2V0QXR0cmlidXRlKCJsYWJlbCIpfHx0LnRleHRDb250ZW50LnRyaW0oKToiIix0aGlzLnZhbHVlPWUsdGhpcy5fc2V0U2VsZWN0ZWRJdGVtTGFiZWwoZSl9LF9jb21wdXRlTWVudVZlcnRpY2FsT2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fCh0Py00OjgpfSxfZ2V0VmFsaWRpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fCF0aGlzLnJlcXVpcmVkfHx0aGlzLnJlcXVpcmVkJiYhIXRoaXMudmFsdWV9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZW50RWxlbWVudDt0JiZ0LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsdGhpcy5vcGVuZWQ/InRydWUiOiJmYWxzZSIpfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIG9zPXtvdXRlclNjcm9sbDp7c2Nyb2xsOiEwfSxzaGFkb3dNb2RlOntzdGFuZGFyZDoyLHdhdGVyZmFsbDoxLCJ3YXRlcmZhbGwtdGFsbCI6MX0sdGFsbE1vZGU6eyJ3YXRlcmZhbGwtdGFsbCI6ITB9fTtqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsOwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgfQoKICAgICAgI21haW5QYW5lbCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1ib2R5OwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogc2Nyb2xsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1zY3JvbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXNjcm9sbC1jb250YWluZXI7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIH0KCiAgICAgIDpob3N0KFttb2RlPXNjcm9sbF0pIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IGNvdmVyCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1jb3Zlcl0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtY292ZXItY29udGFpbmVyOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFttb2RlPWNvdmVyXSkgI21haW5QYW5lbCB7CiAgICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogc3RhbmRhcmQKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXN0YW5kYXJkXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zdGFuZGFyZC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHNlYW1lZAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9c2VhbWVkXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zZWFtZWQtY29udGFpbmVyOwogICAgICB9CgoKICAgICAgLyoKICAgICAgICogbW9kZTogd2F0ZXJmYWxsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT13YXRlcmZhbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXdhdGVyZmFsbC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHdhdGVyZmFsbC10YWxsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT13YXRlcmZhbGwtdGFsbF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtd2F0ZXJmYWxsLXRhbGwtY29udGFpbmVyOwogICAgICB9CgogICAgICAjZHJvcFNoYWRvdyB7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzOwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zaGFkb3c7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgICNkcm9wU2hhZG93Lmhhcy1zaGFkb3cgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgICNtYWluQ29udGFpbmVyID4gOjpzbG90dGVkKC5maXQpIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgPC9zdHlsZT4KCiAgICA8c2xvdCBpZD0iaGVhZGVyU2xvdCIgbmFtZT0iaGVhZGVyIj48L3Nsb3Q+CgogICAgPGRpdiBpZD0ibWFpblBhbmVsIj4KICAgICAgPGRpdiBpZD0ibWFpbkNvbnRhaW5lciIgY2xhc3NcJD0iW1tfY29tcHV0ZU1haW5Db250YWluZXJDbGFzcyhtb2RlKV1dIj4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJkcm9wU2hhZG93Ij48L2Rpdj4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1oZWFkZXItcGFuZWwiLHByb3BlcnRpZXM6e21vZGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJzdGFuZGFyZCIsb2JzZXJ2ZXI6Il9tb2RlQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxzaGFkb3c6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdGFsbENsYXNzOnt0eXBlOlN0cmluZyx2YWx1ZToidGFsbCJ9LGF0VG9wOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITAsbm90aWZ5OiEwLHJlYWRPbmx5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH19LG9ic2VydmVyczpbIl9jb21wdXRlRHJvcFNoYWRvd0hpZGRlbihhdFRvcCwgbW9kZSwgc2hhZG93KSJdLGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fYWRkTGlzdGVuZXIoKSx0aGlzLl9rZWVwU2Nyb2xsaW5nU3RhdGUoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZW1vdmVMaXN0ZW5lcigpfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsSGFuZGxlcj10aGlzLl9zY3JvbGwuYmluZCh0aGlzKSxjb25zb2xlLndhcm4odGhpcy5pcywiaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhcHAtbGF5b3V0IGluc3RlYWQhIil9LGdldCBoZWFkZXIoKXtyZXR1cm4gZXIodGhpcy4kLmhlYWRlclNsb3QpLmdldERpc3RyaWJ1dGVkTm9kZXMoKVswXX0sZ2V0IHNjcm9sbGVyKCl7cmV0dXJuIHRoaXMuX2dldFNjcm9sbGVyRm9yTW9kZSh0aGlzLm1vZGUpfSxnZXQgdmlzaWJsZVNoYWRvdygpe3JldHVybiB0aGlzLiQuZHJvcFNoYWRvdy5jbGFzc0xpc3QuY29udGFpbnMoImhhcy1zaGFkb3ciKX0sX2NvbXB1dGVEcm9wU2hhZG93SGlkZGVuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1vcy5zaGFkb3dNb2RlW2VdO3RoaXMudG9nZ2xlQ2xhc3MoImhhcy1zaGFkb3ciLCEhdGhpcy5zaGFkb3d8fCgyPT09aXx8MT09PWkmJiF0KSx0aGlzLiQuZHJvcFNoYWRvdyl9LF9jb21wdXRlTWFpbkNvbnRhaW5lckNsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBlLmZsZXg9ImNvdmVyIiE9PXQsT2JqZWN0LmtleXMoZSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKS5qb2luKCIgIil9LF9hZGRMaXN0ZW5lcjpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXIpfSxfcmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5zY3JvbGxIYW5kbGVyKX0sX21vZGVDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49b3MsaT10aGlzLmhlYWRlcjtpJiYobi50YWxsTW9kZVtlXSYmIW4udGFsbE1vZGVbdF0/KGkuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnRhbGxDbGFzcyksdGhpcy5hc3luYygoZnVuY3Rpb24oKXtpLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGUiKX0pLDIwMCkpOnRoaXMudG9nZ2xlQ2xhc3MoImFuaW1hdGUiLG4udGFsbE1vZGVbdF0saSkpLHRoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpfSxfa2VlcFNjcm9sbGluZ1N0YXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zY3JvbGxlcixlPXRoaXMuaGVhZGVyO3RoaXMuX3NldEF0VG9wKDA9PT10LnNjcm9sbFRvcCksZSYmdGhpcy50YWxsQ2xhc3MmJm9zLnRhbGxNb2RlW3RoaXMubW9kZV0mJnRoaXMudG9nZ2xlQ2xhc3ModGhpcy50YWxsQ2xhc3MsdGhpcy5hdFRvcHx8ZS5jbGFzc0xpc3QuY29udGFpbnModGhpcy50YWxsQ2xhc3MpJiZ0LnNjcm9sbEhlaWdodDx0aGlzLm9mZnNldEhlaWdodCxlKX0sX3Njcm9sbDpmdW5jdGlvbigpe3RoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpLHRoaXMuZmlyZSgiY29udGVudC1zY3JvbGwiLHt0YXJnZXQ6dGhpcy5zY3JvbGxlcn0se2J1YmJsZXM6ITF9KX0sX2dldFNjcm9sbGVyRm9yTW9kZTpmdW5jdGlvbih0KXtyZXR1cm4gb3Mub3V0ZXJTY3JvbGxbdF0/dGhpczp0aGlzLiQubWFpbkNvbnRhaW5lcn19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtpczoicGFwZXItaWNvbi1idXR0b24iLF90ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgei1pbmRleDogMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKCiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwoKICAgICAgICAvKgogICAgICAgICAgTk9URTogQm90aCB2YWx1ZXMgYXJlIG5lZWRlZCwgc2luY2Ugc29tZSBwaG9uZXMgcmVxdWlyZSB0aGUgdmFsdWUgdG8KICAgICAgICAgIGJlIFxgdHJhbnNwYXJlbnRcYC4KICAgICAgICAqLwogICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwoKICAgICAgICAvKiBCZWNhdXNlIG9mIHBvbHltZXIvMjU1OCwgdGhpcyBzdHlsZSBoYXMgbG93ZXIgc3BlY2lmaWNpdHkgdGhhbiAqICovCiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QgI2luayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWljb24tYnV0dG9uLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWljb24tYnV0dG9uLWRpc2FibGVkLXRleHQsIHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpKTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjdXJzb3I6IGF1dG87CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWljb24tYnV0dG9uLWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgOmhvc3QoOmhvdmVyKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1idXR0b24taG92ZXI7CiAgICAgIH0KCiAgICAgIGlyb24taWNvbiB7CiAgICAgICAgLS1pcm9uLWljb24td2lkdGg6IDEwMCU7CiAgICAgICAgLS1pcm9uLWljb24taGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxpcm9uLWljb24gaWQ9Imljb24iIHNyYz0iW1tzcmNdXSIgaWNvbj0iW1tpY29uXV0iCiAgICAgICAgICAgICAgIGFsdCQ9IltbYWx0XV0iPjwvaXJvbi1pY29uPgogIGAsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImJ1dHRvbiIsdGFiaW5kZXg6IjAifSxiZWhhdmlvcnM6W3hhXSxyZWdpc3RlcmVkOmZ1bmN0aW9uKCl7dGhpcy5fdGVtcGxhdGUuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIil9LHByb3BlcnRpZXM6e3NyYzp7dHlwZTpTdHJpbmd9LGljb246e3R5cGU6U3RyaW5nfSxhbHQ6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfYWx0Q2hhbmdlZCJ9fSxfYWx0Q2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik7biYmZSE9bnx8dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHQpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRhcmVhOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGFyZWE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLm1pcnJvci10ZXh0IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIC5maXQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgLyogc2VlIGNvbW1lbnRzIGluIHRlbXBsYXRlICovCiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS1wbGFjZWhvbGRlcjsKICAgICAgfQoKICAgICAgdGV4dGFyZWE6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDwhLS0gdGhlIG1pcnJvciBzaXplcyB0aGUgaW5wdXQvdGV4dGFyZWEgc28gaXQgZ3Jvd3Mgd2l0aCB0eXBpbmcgLS0+CiAgICA8IS0tIHVzZSAmIzE2MDsgaW5zdGVhZCAmbmJzcDsgb2YgdG8gYWxsb3cgdGhpcyBlbGVtZW50IHRvIGJlIHVzZWQgaW4gWEhUTUwgLS0+CiAgICA8ZGl2IGlkPSJtaXJyb3IiIGNsYXNzPSJtaXJyb3ItdGV4dCIgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvZGl2PgoKICAgIDwhLS0gc2l6ZSB0aGUgaW5wdXQvdGV4dGFyZWEgd2l0aCBhIGRpdiwgYmVjYXVzZSB0aGUgdGV4dGFyZWEgaGFzIGludHJpbnNpYyBzaXplIGluIGZmIC0tPgogICAgPGRpdiBjbGFzcz0idGV4dGFyZWEtY29udGFpbmVyIGZpdCI+CiAgICAgIDx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiIG5hbWUkPSJbW25hbWVdXSIgYXJpYS1sYWJlbCQ9IltbbGFiZWxdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIHBsYWNlaG9sZGVyJD0iW1twbGFjZWhvbGRlcl1dIiByZWFkb25seSQ9IltbcmVhZG9ubHldXSIgcmVxdWlyZWQkPSJbW3JlcXVpcmVkXV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiByb3dzJD0iW1tyb3dzXV0iIG1pbmxlbmd0aCQ9IltbbWlubGVuZ3RoXV0iIG1heGxlbmd0aCQ9IltbbWF4bGVuZ3RoXV0iPjwvdGV4dGFyZWE+CiAgICA8L2Rpdj4KYCxpczoiaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSIsYmVoYXZpb3JzOlt5YSxyYV0scHJvcGVydGllczp7dmFsdWU6e29ic2VydmVyOiJfdmFsdWVDaGFuZ2VkIix0eXBlOlN0cmluZyxub3RpZnk6ITB9LGJpbmRWYWx1ZTp7b2JzZXJ2ZXI6Il9iaW5kVmFsdWVDaGFuZ2VkIix0eXBlOlN0cmluZyxub3RpZnk6ITB9LHJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjEsb2JzZXJ2ZXI6Il91cGRhdGVDYWNoZWQifSxtYXhSb3dzOnt0eXBlOk51bWJlcix2YWx1ZTowLG9ic2VydmVyOiJfdXBkYXRlQ2FjaGVkIn0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyx2YWx1ZToib2ZmIn0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGF1dG9jYXBpdGFsaXplOnt0eXBlOlN0cmluZyx2YWx1ZToibm9uZSJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZ30scmVhZG9ubHk6e3R5cGU6U3RyaW5nfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFufSxtaW5sZW5ndGg6e3R5cGU6TnVtYmVyfSxtYXhsZW5ndGg6e3R5cGU6TnVtYmVyfSxsYWJlbDp7dHlwZTpTdHJpbmd9fSxsaXN0ZW5lcnM6e2lucHV0OiJfb25JbnB1dCJ9LGdldCB0ZXh0YXJlYSgpe3JldHVybiB0aGlzLiQudGV4dGFyZWF9LGdldCBzZWxlY3Rpb25TdGFydCgpe3JldHVybiB0aGlzLiQudGV4dGFyZWEuc2VsZWN0aW9uU3RhcnR9LGdldCBzZWxlY3Rpb25FbmQoKXtyZXR1cm4gdGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvbkVuZH0sc2V0IHNlbGVjdGlvblN0YXJ0KHQpe3RoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydD10fSxzZXQgc2VsZWN0aW9uRW5kKHQpe3RoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25FbmQ9dH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OltvYV1kfGhvbmUpLykmJiFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9PUyAxWzM0NTY3ODldLykmJih0aGlzLiQudGV4dGFyZWEuc3R5bGUubWFyZ2luTGVmdD0iLTNweCIpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJC50ZXh0YXJlYS52YWxpZGl0eS52YWxpZDtyZXR1cm4gdCYmKHRoaXMucmVxdWlyZWQmJiIiPT09dGhpcy52YWx1ZT90PSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJih0PXlhLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLnZhbHVlKSkpLHRoaXMuaW52YWxpZD0hdCx0aGlzLmZpcmUoImlyb24taW5wdXQtdmFsaWRhdGUiKSx0fSxfYmluZFZhbHVlQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnZhbHVlPXR9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50ZXh0YXJlYTtlJiYoZS52YWx1ZSE9PXQmJihlLnZhbHVlPXR8fDA9PT10P3Q6IiIpLHRoaXMuYmluZFZhbHVlPXQsdGhpcy4kLm1pcnJvci5pbm5lckhUTUw9dGhpcy5fdmFsdWVGb3JNaXJyb3IoKSx0aGlzLmZpcmUoImJpbmQtdmFsdWUtY2hhbmdlZCIse3ZhbHVlOnRoaXMuYmluZFZhbHVlfSkpfSxfb25JbnB1dDpmdW5jdGlvbih0KXt2YXIgZT1lcih0KS5wYXRoO3RoaXMudmFsdWU9ZT9lWzBdLnZhbHVlOnQudGFyZ2V0LnZhbHVlfSxfY29uc3RyYWluOmZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0PXR8fFsiIl0sZT10aGlzLm1heFJvd3M+MCYmdC5sZW5ndGg+dGhpcy5tYXhSb3dzP3Quc2xpY2UoMCx0aGlzLm1heFJvd3MpOnQuc2xpY2UoMCk7dGhpcy5yb3dzPjAmJmUubGVuZ3RoPHRoaXMucm93czspZS5wdXNoKCIiKTtyZXR1cm4gZS5qb2luKCI8YnIvPiIpKyImIzE2MDsifSxfdmFsdWVGb3JNaXJyb3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRleHRhcmVhO2lmKHQpcmV0dXJuIHRoaXMudG9rZW5zPXQmJnQudmFsdWU/dC52YWx1ZS5yZXBsYWNlKC8mL2dtLCImYW1wOyIpLnJlcGxhY2UoLyIvZ20sIiZxdW90OyIpLnJlcGxhY2UoLycvZ20sIiYjMzk7IikucmVwbGFjZSgvPC9nbSwiJmx0OyIpLnJlcGxhY2UoLz4vZ20sIiZndDsiKS5zcGxpdCgiXG4iKTpbIiJdLHRoaXMuX2NvbnN0cmFpbih0aGlzLnRva2Vucyl9LF91cGRhdGVDYWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLiQubWlycm9yLmlubmVySFRNTD10aGlzLl9jb25zdHJhaW4odGhpcy50b2tlbnMpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgbGFiZWwgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dC1jb250YWluZXIgbm8tbGFiZWwtZmxvYXQkPSJbW25vTGFiZWxGbG9hdF1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsKGFsd2F5c0Zsb2F0TGFiZWwscGxhY2Vob2xkZXIpXV0iIGF1dG8tdmFsaWRhdGUkPSJbW2F1dG9WYWxpZGF0ZV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgaW52YWxpZD0iW1tpbnZhbGlkXV0iPgoKICAgICAgPGxhYmVsIGhpZGRlbiQ9IltbIWxhYmVsXV0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb3IkPSJbW19pbnB1dElkXV0iIHNsb3Q9ImxhYmVsIj5bW2xhYmVsXV08L2xhYmVsPgoKICAgICAgPGlyb24tYXV0b2dyb3ctdGV4dGFyZWEgY2xhc3M9InBhcGVyLWlucHV0LWlucHV0IiBzbG90PSJpbnB1dCIgaWQkPSJbW19pbnB1dElkXV0iIGFyaWEtbGFiZWxsZWRieSQ9IltbX2FyaWFMYWJlbGxlZEJ5XV0iIGFyaWEtZGVzY3JpYmVkYnkkPSJbW19hcmlhRGVzY3JpYmVkQnldXSIgYmluZC12YWx1ZT0ie3t2YWx1ZX19IiBpbnZhbGlkPSJ7e2ludmFsaWR9fSIgdmFsaWRhdG9yJD0iW1t2YWxpZGF0b3JdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIGF1dG9jb21wbGV0ZSQ9IltbYXV0b2NvbXBsZXRlXV0iIGF1dG9mb2N1cyQ9IltbYXV0b2ZvY3VzXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIG5hbWUkPSJbW25hbWVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIHJvd3MkPSJbW3Jvd3NdXSIgbWF4LXJvd3MkPSJbW21heFJvd3NdXSIgb24tY2hhbmdlPSJfb25DaGFuZ2UiPjwvaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYT4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlcnJvck1lc3NhZ2VdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWVycm9yIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBzbG90PSJhZGQtb24iPltbZXJyb3JNZXNzYWdlXV08L3BhcGVyLWlucHV0LWVycm9yPgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJDb3VudGVyXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgc2xvdD0iYWRkLW9uIj48L3BhcGVyLWlucHV0LWNoYXItY291bnRlcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICA8L3BhcGVyLWlucHV0LWNvbnRhaW5lcj4KYCxpczoicGFwZXItdGV4dGFyZWEiLGJlaGF2aW9yczpbSmEsZ2FdLHByb3BlcnRpZXM6e19hcmlhTGFiZWxsZWRCeTp7b2JzZXJ2ZXI6Il9hcmlhTGFiZWxsZWRCeUNoYW5nZWQiLHR5cGU6U3RyaW5nfSxfYXJpYURlc2NyaWJlZEJ5OntvYnNlcnZlcjoiX2FyaWFEZXNjcmliZWRCeUNoYW5nZWQiLHR5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmd9LHJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjF9LG1heFJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fSxnZXQgc2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0fSxzZXQgc2VsZWN0aW9uU3RhcnQodCl7dGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0PXR9LGdldCBzZWxlY3Rpb25FbmQoKXtyZXR1cm4gdGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvbkVuZH0sc2V0IHNlbGVjdGlvbkVuZCh0KXt0aGlzLiQuaW5wdXQudGV4dGFyZWEuc2VsZWN0aW9uRW5kPXR9LF9hcmlhTGFiZWxsZWRCeUNoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNhYmxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdCl9LF9hcmlhRGVzY3JpYmVkQnlDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iix0KX0sZ2V0IF9mb2N1c2FibGVFbGVtZW50KCl7cmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LnRleHRhcmVhfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgYXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTthcy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxhcy5pbm5lckhUTUw9Ijxkb20tbW9kdWxlIGlkPVwicGFwZXItaXRlbS1zaGFyZWQtc3R5bGVzXCI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICA6aG9zdCwgLnBhcGVyLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLW1pbi1oZWlnaHQsIDQ4cHgpO1xuICAgICAgICBwYWRkaW5nOiAwcHggMTZweDtcbiAgICAgIH1cblxuICAgICAgLnBhcGVyLWl0ZW0ge1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7XG4gICAgICAgIGJvcmRlcjpub25lO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KFtoaWRkZW5dKSwgLnBhcGVyLWl0ZW1baGlkZGVuXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoLmlyb24tc2VsZWN0ZWQpLCAucGFwZXItaXRlbS5pcm9uLXNlbGVjdGVkIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXBhcGVyLWl0ZW0tc2VsZWN0ZWQtd2VpZ2h0LCBib2xkKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLXNlbGVjdGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbZGlzYWJsZWRdKSwgLnBhcGVyLWl0ZW1bZGlzYWJsZWRdIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWl0ZW0tZGlzYWJsZWQtY29sb3IsIHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCg6Zm9jdXMpLCAucGFwZXItaXRlbTpmb2N1cyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3V0bGluZTogMDtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWZvY3VzZWQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KDpmb2N1cyk6YmVmb3JlLCAucGFwZXItaXRlbTpmb2N1czpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0O1xuXG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWRhcmstZGl2aWRlci1vcGFjaXR5KTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1mb2N1c2VkLWJlZm9yZTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhcy5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNzPVthYSxyYSx7aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im9wdGlvbiIsdGFiaW5kZXg6IjAifX1dOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXMiPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWl0ZW0iLGJlaGF2aW9yczpbc3NdfSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogbmVlZGVkIGZvciB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyB0byB3b3JrIG9uIGZmICovCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICB9CgogICAgICA6aG9zdChbdHdvLWxpbmVdKSB7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXR3by1saW5lLW1pbi1oZWlnaHQsIDcycHgpOwogICAgICB9CgogICAgICA6aG9zdChbdGhyZWUtbGluZV0pIHsKICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLWJvZHktdGhyZWUtbGluZS1taW4taGVpZ2h0LCA4OHB4KTsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoW3NlY29uZGFyeV0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWJvZHkxOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeS1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWl0ZW0tYm9keSJ9KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItaXRlbS1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW07CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1pdGVtOwogICAgICB9CgogICAgICAuY29udGVudC1pY29uIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwoKICAgICAgICB3aWR0aDogdmFyKC0tcGFwZXItaXRlbS1pY29uLXdpZHRoLCA1NnB4KTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWljb247CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0iY29udGVudEljb24iIGNsYXNzPSJjb250ZW50LWljb24iPgogICAgICA8c2xvdCBuYW1lPSJpdGVtLWljb24iPjwvc2xvdD4KICAgIDwvZGl2PgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci1pY29uLWl0ZW0iLGJlaGF2aW9yczpbc3NdfSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBscz17cHJvcGVydGllczp7bXVsdGk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoibXVsdGlDaGFuZ2VkIn0sc2VsZWN0ZWRWYWx1ZXM6e3R5cGU6QXJyYXksbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxzZWxlY3RlZEl0ZW1zOnt0eXBlOkFycmF5LHJlYWRPbmx5OiEwLG5vdGlmeTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl91cGRhdGVTZWxlY3RlZChzZWxlY3RlZFZhbHVlcy5zcGxpY2VzKSJdLHNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLm11bHRpP3RoaXMuX3RvZ2dsZVNlbGVjdGVkKHQpOnRoaXMuc2VsZWN0ZWQ9dH0sbXVsdGlDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX3NlbGVjdGlvbi5tdWx0aT10LHRoaXMuX3VwZGF0ZVNlbGVjdGVkKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR8fG51bGwhPXRoaXMuc2VsZWN0ZWRWYWx1ZXMmJnRoaXMuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RofSxfdXBkYXRlQXR0ckZvclNlbGVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGg+MCYmKHRoaXMuc2VsZWN0ZWRWYWx1ZXM9dGhpcy5zZWxlY3RlZEl0ZW1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luZGV4VG9WYWx1ZSh0aGlzLmluZGV4T2YodCkpfSksdGhpcykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pLHRoaXMpKTplYS5fdXBkYXRlQXR0ckZvclNlbGVjdGVkLmFwcGx5KHRoaXMpfSxfdXBkYXRlU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm11bHRpP3RoaXMuX3NlbGVjdE11bHRpKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpOnRoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0TXVsdGk6ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMuX3ZhbHVlc1RvSXRlbXModD10fHxbXSl8fFtdKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpO3RoaXMuX3NlbGVjdGlvbi5jbGVhcihlKTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLl9zZWxlY3Rpb24uc2V0SXRlbVNlbGVjdGVkKGVbbl0sITApO3RoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJiF0aGlzLl9zZWxlY3Rpb24uZ2V0KCkubGVuZ3RoJiYodGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5mYWxsYmFja1NlbGVjdGlvbikmJnRoaXMuc2VsZWN0KHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pKX0sX3NlbGVjdGlvbkNoYW5nZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3NlbGVjdGlvbi5nZXQoKTt0aGlzLm11bHRpPyh0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKHQpLHRoaXMuX3NldFNlbGVjdGVkSXRlbSh0Lmxlbmd0aD90WzBdOm51bGwpKTpudWxsIT10Pyh0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKFt0XSksdGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHQpKToodGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyhbXSksdGhpcy5fc2V0U2VsZWN0ZWRJdGVtKG51bGwpKX0sX3RvZ2dsZVNlbGVjdGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2VsZWN0ZWRWYWx1ZXMuaW5kZXhPZih0KTtlPDA/dGhpcy5wdXNoKCJzZWxlY3RlZFZhbHVlcyIsdCk6dGhpcy5zcGxpY2UoInNlbGVjdGVkVmFsdWVzIixlLDEpfSxfdmFsdWVzVG9JdGVtczpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOnQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVUb0l0ZW0odCl9KSx0aGlzKX19LGNzPXtwcm9wZXJ0aWVzOntmb2N1c2VkSXRlbTp7b2JzZXJ2ZXI6Il9mb2N1c2VkSXRlbUNoYW5nZWQiLHJlYWRPbmx5OiEwLHR5cGU6T2JqZWN0fSxhdHRyRm9ySXRlbVRpdGxlOnt0eXBlOlN0cmluZ30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxfTU9ESUZJRVJfS0VZUzpbIkFsdCIsIkFsdEdyYXBoIiwiQ2Fwc0xvY2siLCJDb250cm9sIiwiRm4iLCJGbkxvY2siLCJIeXBlciIsIk1ldGEiLCJOdW1Mb2NrIiwiT1MiLCJTY3JvbGxMb2NrIiwiU2hpZnQiLCJTdXBlciIsIlN5bWJvbCIsIlN5bWJvbExvY2siXSxfU0VBUkNIX1JFU0VUX1RJTUVPVVRfTVM6MWUzLF9wcmV2aW91c1RhYkluZGV4OjAsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im1lbnUifSxvYnNlcnZlcnM6WyJfdXBkYXRlTXVsdGlzZWxlY3RhYmxlKG11bHRpKSJdLGxpc3RlbmVyczp7Zm9jdXM6Il9vbkZvY3VzIixrZXlkb3duOiJfb25LZXlkb3duIiwiaXJvbi1pdGVtcy1jaGFuZ2VkIjoiX29uSXJvbkl0ZW1zQ2hhbmdlZCJ9LGtleUJpbmRpbmdzOnt1cDoiX29uVXBLZXkiLGRvd246Il9vbkRvd25LZXkiLGVzYzoiX29uRXNjS2V5Iiwic2hpZnQrdGFiOmtleWRvd24iOiJfb25TaGlmdFRhYkRvd24ifSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3Jlc2V0VGFiaW5kaWNlcygpfSxzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdEZvY3VzQXN5bmMmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX2RlZmF1bHRGb2N1c0FzeW5jKSx0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYz1udWxsKTt2YXIgZT10aGlzLl92YWx1ZVRvSXRlbSh0KTtlJiZlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8KHRoaXMuX3NldEZvY3VzZWRJdGVtKGUpLGxzLnNlbGVjdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxfcmVzZXRUYWJpbmRpY2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtc1swXTp0aGlzLnNlbGVjdGVkSXRlbTt0aGlzLml0ZW1zLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsZT09PXQ/IjAiOiItMSIpLGUuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIix0aGlzLl9zZWxlY3Rpb24uaXNTZWxlY3RlZChlKSl9KSx0aGlzKX0sX3VwZGF0ZU11bHRpc2VsZWN0YWJsZTpmdW5jdGlvbih0KXt0P3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiKX0sX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQ6ZnVuY3Rpb24odCl7aWYoLTE9PT10aGlzLl9NT0RJRklFUl9LRVlTLmluZGV4T2YodC5rZXkpKXt0aGlzLmNhbmNlbERlYm91bmNlcigiX2NsZWFyU2VhcmNoVGV4dCIpO2Zvcih2YXIgZSxuPXRoaXMuX3NlYXJjaFRleHR8fCIiLGk9KG4rPSh0LmtleSYmMT09dC5rZXkubGVuZ3RoP3Qua2V5OlN0cmluZy5mcm9tQ2hhckNvZGUodC5rZXlDb2RlKSkudG9Mb2NhbGVMb3dlckNhc2UoKSkubGVuZ3RoLHI9MDtlPXRoaXMuaXRlbXNbcl07cisrKWlmKCFlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7dmFyIG89dGhpcy5hdHRyRm9ySXRlbVRpdGxlfHwidGV4dENvbnRlbnQiLGE9KGVbb118fGUuZ2V0QXR0cmlidXRlKG8pfHwiIikudHJpbSgpO2lmKCEoYS5sZW5ndGg8aSkmJmEuc2xpY2UoMCxpKS50b0xvY2FsZUxvd2VyQ2FzZSgpPT1uKXt0aGlzLl9zZXRGb2N1c2VkSXRlbShlKTticmVha319dGhpcy5fc2VhcmNoVGV4dD1uLHRoaXMuZGVib3VuY2UoIl9jbGVhclNlYXJjaFRleHQiLHRoaXMuX2NsZWFyU2VhcmNoVGV4dCx0aGlzLl9TRUFSQ0hfUkVTRVRfVElNRU9VVF9NUyl9fSxfY2xlYXJTZWFyY2hUZXh0OmZ1bmN0aW9uKCl7dGhpcy5fc2VhcmNoVGV4dD0iIn0sX2ZvY3VzUHJldmlvdXM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT1OdW1iZXIodGhpcy5pbmRleE9mKHRoaXMuZm9jdXNlZEl0ZW0pKSxuPTE7bjx0KzE7bisrKXt2YXIgaT10aGlzLml0ZW1zWyhlLW4rdCkldF07aWYoIWkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXt2YXIgcj1lcihpKS5nZXRPd25lclJvb3QoKXx8ZG9jdW1lbnQ7aWYodGhpcy5fc2V0Rm9jdXNlZEl0ZW0oaSksZXIocikuYWN0aXZlRWxlbWVudD09aSlyZXR1cm59fX0sX2ZvY3VzTmV4dDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLml0ZW1zLmxlbmd0aCxlPU51bWJlcih0aGlzLmluZGV4T2YodGhpcy5mb2N1c2VkSXRlbSkpLG49MTtuPHQrMTtuKyspe3ZhciBpPXRoaXMuaXRlbXNbKGUrbikldF07aWYoIWkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXt2YXIgcj1lcihpKS5nZXRPd25lclJvb3QoKXx8ZG9jdW1lbnQ7aWYodGhpcy5fc2V0Rm9jdXNlZEl0ZW0oaSksZXIocikuYWN0aXZlRWxlbWVudD09aSlyZXR1cm59fX0sX2FwcGx5U2VsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLGU/InRydWUiOiJmYWxzZSIpLGVhLl9hcHBseVNlbGVjdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9mb2N1c2VkSXRlbUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiZlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLCF0fHx0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8dGhpcy5kaXNhYmxlZHx8KHQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSx0LmZvY3VzKCkpfSxfb25Jcm9uSXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QuZGV0YWlsLmFkZGVkTm9kZXMubGVuZ3RoJiZ0aGlzLl9yZXNldFRhYmluZGljZXMoKX0sX29uU2hpZnRUYWJEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO2NzLl9zaGlmdFRhYlByZXNzZWQ9ITAsdGhpcy5fc2V0Rm9jdXNlZEl0ZW0obnVsbCksdGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsZSksY3MuX3NoaWZ0VGFiUHJlc3NlZD0hMX0pLDEpfSxfb25Gb2N1czpmdW5jdGlvbih0KXtpZighY3MuX3NoaWZ0VGFiUHJlc3NlZCl7dmFyIGU9ZXIodCkucm9vdFRhcmdldDsoZT09PXRoaXN8fHZvaWQgMD09PWUudGFiSW5kZXh8fHRoaXMuaXNMaWdodERlc2NlbmRhbnQoZSkpJiYodGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9dGhpcy5hc3luYygoZnVuY3Rpb24oKXt2YXIgdD10aGlzLm11bHRpP3RoaXMuc2VsZWN0ZWRJdGVtcyYmdGhpcy5zZWxlY3RlZEl0ZW1zWzBdOnRoaXMuc2VsZWN0ZWRJdGVtO3RoaXMuX3NldEZvY3VzZWRJdGVtKG51bGwpLHQ/dGhpcy5fc2V0Rm9jdXNlZEl0ZW0odCk6dGhpcy5pdGVtc1swXSYmdGhpcy5fZm9jdXNOZXh0KCl9KSkpfX0sX29uVXBLZXk6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNQcmV2aW91cygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c05leHQoKSx0LmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbkVzY0tleTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmZvY3VzZWRJdGVtO2UmJmUuYmx1cigpfSxfb25LZXlkb3duOmZ1bmN0aW9uKHQpe3RoaXMua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsInVwIGRvd24gZXNjIil8fHRoaXMuX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQodCksdC5zdG9wUHJvcGFnYXRpb24oKX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbih0KXtlYS5fYWN0aXZhdGVIYW5kbGVyLmNhbGwodGhpcyx0KSx0LnN0b3BQcm9wYWdhdGlvbigpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3Q/KHRoaXMuX3ByZXZpb3VzVGFiSW5kZXg9dGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iik/dGhpcy50YWJJbmRleDowLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpKTp0aGlzLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4Iix0aGlzLl9wcmV2aW91c1RhYkluZGV4KX0sX3NoaWZ0VGFiUHJlc3NlZDohMX0sdXM9W1tlYSxsc10sWG8sY3NdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDhweCAwOwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1saXN0Ym94LWJhY2tncm91bmQtY29sb3IsIHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcikpOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1saXN0Ym94LWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItbGlzdGJveDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWxpc3Rib3giLGJlaGF2aW9yczpbdXNdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJsaXN0Ym94In19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGhzPXhlYAo8ZG9tLW1vZHVsZSBpZD0icGFwZXItbWF0ZXJpYWwtc2hhcmVkLXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iMiJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi00ZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjMiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iNSJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KYDtocy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhzLmNvbnRlbnQpLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdChbYW5pbWF0ZWRdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItbWF0ZXJpYWwiLHByb3BlcnRpZXM6e2VsZXZhdGlvbjp7dHlwZTpOdW1iZXIscmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOjF9LGFuaW1hdGVkOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGRzPXtwcm9wZXJ0aWVzOnt2YWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxtaW46e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxtYXg6e3R5cGU6TnVtYmVyLHZhbHVlOjEwMCxub3RpZnk6ITB9LHN0ZXA6e3R5cGU6TnVtYmVyLHZhbHVlOjEsbm90aWZ5OiEwfSxyYXRpbzp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWFkT25seTohMCxub3RpZnk6ITB9fSxvYnNlcnZlcnM6WyJfdXBkYXRlKHZhbHVlLCBtaW4sIG1heCwgc3RlcCkiXSxfY2FsY1JhdGlvOmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9jbGFtcFZhbHVlKHQpLXRoaXMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pfSxfY2xhbXBWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5taW4odGhpcy5tYXgsTWF0aC5tYXgodGhpcy5taW4sdGhpcy5fY2FsY1N0ZXAodCkpKX0sX2NhbGNTdGVwOmZ1bmN0aW9uKHQpe2lmKHQ9cGFyc2VGbG9hdCh0KSwhdGhpcy5zdGVwKXJldHVybiB0O3ZhciBlPU1hdGgucm91bmQoKHQtdGhpcy5taW4pL3RoaXMuc3RlcCk7cmV0dXJuIHRoaXMuc3RlcDwxP2UvKDEvdGhpcy5zdGVwKSt0aGlzLm1pbjplKnRoaXMuc3RlcCt0aGlzLm1pbn0sX3ZhbGlkYXRlVmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUpO3JldHVybiB0aGlzLnZhbHVlPXRoaXMub2xkVmFsdWU9aXNOYU4odCk/dGhpcy5vbGRWYWx1ZTp0LHRoaXMudmFsdWUhPT10fSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdGVWYWx1ZSgpLHRoaXMuX3NldFJhdGlvKDEwMCp0aGlzLl9jYWxjUmF0aW8odGhpcy52YWx1ZSkpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2pyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMjAwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSwgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1wcm9ncmVzcy1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC8qIHRoZSBzdHJpcGUgZm9yIHRoZSBpbmRldGVybWluYXRlIGFuaW1hdGlvbiovCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQsIDRweCk7CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgICNzZWNvbmRhcnlQcm9ncmVzcywKICAgICAgLmluZGV0ZXJtaW5hdGU6OmFmdGVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JleS0zMDApKTsKICAgICAgfQoKICAgICAgOmhvc3QoLnRyYW5zaXRpbmcpICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgIDpob3N0KC50cmFuc2l0aW5nKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm07CiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwoKICAgICAgICAvKiBEdXJhdGlvbiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4wOHMpOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMDhzKTsKCiAgICAgICAgLyogVGltaW5nIGZ1bmN0aW9uICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sIGVhc2UpOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgZWFzZSk7CgogICAgICAgIC8qIERlbGF5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLWRlbGF5LCAwcyk7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kZWxheSwgMHMpOwogICAgICB9CgogICAgICAjcHJpbWFyeVByb2dyZXNzLAogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTUwMCkpOwogICAgICB9CgogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTEwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjcHJpbWFyeVByb2dyZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLWdvb2dsZS1ncmV5LTUwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWRpc2FibGVkLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZXktMzAwKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoW2Rpc2FibGVkXSkpICNwcmltYXJ5UHJvZ3Jlc3MuaW5kZXRlcm1pbmF0ZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgY2VudGVyOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLWJhciB2YXIoLS1wYXBlci1wcm9ncmVzcy1pbmRldGVybWluYXRlLWN5Y2xlLWR1cmF0aW9uLCAycykgbGluZWFyIGluZmluaXRlOwogICAgICAgIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1iYXIgdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS1jeWNsZS1kdXJhdGlvbiwgMnMpIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbZGlzYWJsZWRdKSkgI3ByaW1hcnlQcm9ncmVzcy5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CgogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKC0xMDAlKTsKICAgICAgICB9CiAgICAgICAgNTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICAgIDc1JSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjI4LC42MiwuMzcsLjkxKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICB9CiAgICAgICAgMzAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAgICAgfQogICAgICAgIDUwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICB9CiAgICAgICAgNzUlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4yOCwuNjIsLjM3LC45MSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgtMTI1JSk7CiAgICAgICAgfQogICAgICAgIDMwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoLTEyNSUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgxMjUlKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoMTI1JSk7CiAgICAgICAgfQogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InByb2dyZXNzQ29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0ic2Vjb25kYXJ5UHJvZ3Jlc3MiIGhpZGRlblwkPSJbW19oaWRlU2Vjb25kYXJ5UHJvZ3Jlc3Moc2Vjb25kYXJ5UmF0aW8pXV0iPjwvZGl2PgogICAgICA8ZGl2IGlkPSJwcmltYXJ5UHJvZ3Jlc3MiPjwvZGl2PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXByb2dyZXNzIixiZWhhdmlvcnM6W2RzXSxwcm9wZXJ0aWVzOntzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sc2Vjb25kYXJ5UmF0aW86e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITB9LGluZGV0ZXJtaW5hdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX3RvZ2dsZUluZGV0ZXJtaW5hdGUifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcHJvZ3Jlc3NDaGFuZ2VkKHNlY29uZGFyeVByb2dyZXNzLCB2YWx1ZSwgbWluLCBtYXgsIGluZGV0ZXJtaW5hdGUpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InByb2dyZXNzYmFyIn0sX3RvZ2dsZUluZGV0ZXJtaW5hdGU6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVDbGFzcygiaW5kZXRlcm1pbmF0ZSIsdCx0aGlzLiQucHJpbWFyeVByb2dyZXNzKX0sX3RyYW5zZm9ybVByb2dyZXNzOmZ1bmN0aW9uKHQsZSl7dC5zdHlsZS50cmFuc2Zvcm09dC5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InNjYWxlWCgiK2UvMTAwKyIpIn0sX21haW5SYXRpb0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdHJhbnNmb3JtUHJvZ3Jlc3ModGhpcy4kLnByaW1hcnlQcm9ncmVzcyx0KX0sX3Byb2dyZXNzQ2hhbmdlZDpmdW5jdGlvbih0LGUsbixpLHIpe3Q9dGhpcy5fY2xhbXBWYWx1ZSh0KSxlPXRoaXMuX2NsYW1wVmFsdWUoZSk7dmFyIG89MTAwKnRoaXMuX2NhbGNSYXRpbyh0KSxhPTEwMCp0aGlzLl9jYWxjUmF0aW8oZSk7dGhpcy5fc2V0U2Vjb25kYXJ5UmF0aW8obyksdGhpcy5fdHJhbnNmb3JtUHJvZ3Jlc3ModGhpcy4kLnNlY29uZGFyeVByb2dyZXNzLG8pLHRoaXMuX3RyYW5zZm9ybVByb2dyZXNzKHRoaXMuJC5wcmltYXJ5UHJvZ3Jlc3MsYSksdGhpcy5zZWNvbmRhcnlQcm9ncmVzcz10LHI/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtdmFsdWVub3ciKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIsZSksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtaW4iLG4pLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWF4IixpKX0sX2Rpc2FibGVkQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsdD8idHJ1ZSI6ImZhbHNlIil9LF9oaWRlU2Vjb25kYXJ5UHJvZ3Jlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBwcz14ZWAKPHN0eWxlPgogIDpob3N0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemU6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplLCAxNnB4KTsKICAgIC8qIC0xcHggaXMgYSBzZW50aW5lbCBmb3IgdGhlIGRlZmF1bHQgYW5kIGlzIHJlcGxhY2UgaW4gXGBhdHRhY2hlZFxgLiAqLwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZTogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplLCAtMXB4KTsKICB9CgogIDpob3N0KDpmb2N1cykgewogICAgb3V0bGluZTogbm9uZTsKICB9CgogICNyYWRpb0NvbnRhaW5lciB7CiAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemUpOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tcmFkaW8tY29udGFpbmVyOwogIH0KCiAgI2luayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHJpZ2h0OiBhdXRvOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUpOwogICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIH0KCiAgI2lua1tjaGVja2VkXSB7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjb2ZmUmFkaW8sICNvblJhZGlvIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgfQoKICAjb2ZmUmFkaW8gewogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWJhY2tncm91bmQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjI4czsKICB9CgogICNvblJhZGlvIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gZWFzZSAwLjI4czsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBlYXNlIDAuMjhzOwogICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI29mZlJhZGlvIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI29uUmFkaW8gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgfQoKICAjcmFkaW9MYWJlbCB7CiAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtc3BhY2luZywgMTBweCk7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgQGFwcGx5IC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsOwogIH0KCiAgOmhvc3QoW2NoZWNrZWRdKSAjcmFkaW9MYWJlbCB7CiAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtY2hlY2tlZDsKICB9CgogICNyYWRpb0xhYmVsOmRpcihydGwpIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtc3BhY2luZywgMTBweCk7CiAgfQoKICAjcmFkaW9MYWJlbFtoaWRkZW5dIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAvKiBkaXNhYmxlZCBzdGF0ZSAqLwoKICA6aG9zdChbZGlzYWJsZWRdKSAjb2ZmUmFkaW8gewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF1bY2hlY2tlZF0pICNvblJhZGlvIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC41OwogIH0KCiAgOmhvc3QoW2Rpc2FibGVkXSkgI3JhZGlvTGFiZWwgewogICAgLyogc2xpZ2h0bHkgZGFya2VyIHRoYW4gdGhlIGJ1dHRvbiwgc28gdGhhdCBpdCdzIHJlYWRhYmxlICovCiAgICBvcGFjaXR5OiAwLjY1OwogIH0KPC9zdHlsZT4KCjxkaXYgaWQ9InJhZGlvQ29udGFpbmVyIj4KICA8ZGl2IGlkPSJvZmZSYWRpbyI+PC9kaXY+CiAgPGRpdiBpZD0ib25SYWRpbyI+PC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0icmFkaW9MYWJlbCI+PHNsb3Q+PC9zbG90PjwvZGl2PmA7cHMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksanIoe190ZW1wbGF0ZTpwcyxpczoicGFwZXItcmFkaW8tYnV0dG9uIixiZWhhdmlvcnM6W3dhXSxob3N0QXR0cmlidXRlczp7cm9sZToicmFkaW8iLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLnJhZGlvQ29udGFpbmVyfSxhdHRhY2hlZDpmdW5jdGlvbigpe0RpKHRoaXMsKGZ1bmN0aW9uKCl7aWYoIi0xcHgiPT09dGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUiKS50cmltKCkpe3ZhciB0PXBhcnNlRmxvYXQodGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSIpLnRyaW0oKSksZT1NYXRoLmZsb29yKDMqdCk7ZSUyIT10JTImJmUrKyx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplIjplKyJweCJ9KX19KSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBmcz17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im1lbnViYXIifSxrZXlCaW5kaW5nczp7bGVmdDoiX29uTGVmdEtleSIscmlnaHQ6Il9vblJpZ2h0S2V5In0sX29uVXBLZXk6ZnVuY3Rpb24odCl7dGhpcy5mb2N1c2VkSXRlbS5jbGljaygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzZWRJdGVtLmNsaWNrKCksdC5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxnZXQgX2lzUlRMKCl7cmV0dXJuInJ0bCI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb259LF9vbkxlZnRLZXk6ZnVuY3Rpb24odCl7dGhpcy5faXNSVEw/dGhpcy5fZm9jdXNOZXh0KCk6dGhpcy5fZm9jdXNQcmV2aW91cygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uUmlnaHRLZXk6ZnVuY3Rpb24odCl7dGhpcy5faXNSVEw/dGhpcy5fZm9jdXNQcmV2aW91cygpOnRoaXMuX2ZvY3VzTmV4dCgpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uS2V5ZG93bjpmdW5jdGlvbih0KXt0aGlzLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyh0LCJ1cCBkb3duIGxlZnQgcmlnaHQgZXNjIil8fHRoaXMuX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQodCl9fSxtcz1bdXMsZnNdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgOjpzbG90dGVkKCopIHsKICAgICAgICBwYWRkaW5nOiB2YXIoLS1wYXBlci1yYWRpby1ncm91cC1pdGVtLXBhZGRpbmcsIDEycHgpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItcmFkaW8tZ3JvdXAiLGJlaGF2aW9yczpbbXNdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJyYWRpb2dyb3VwIn0scHJvcGVydGllczp7YXR0ckZvclNlbGVjdGVkOnt0eXBlOlN0cmluZyx2YWx1ZToibmFtZSJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiY2hlY2tlZCJ9LHNlbGVjdGFibGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJwYXBlci1yYWRpby1idXR0b24ifSxhbGxvd0VtcHR5U2VsZWN0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odCk7aWYoIWV8fCFlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7aWYodGhpcy5zZWxlY3RlZCl7dmFyIG49dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7aWYodGhpcy5zZWxlY3RlZD09dCl7aWYoIXRoaXMuYWxsb3dFbXB0eVNlbGVjdGlvbilyZXR1cm4gdm9pZChuJiYobi5jaGVja2VkPSEwKSk7dD0iIn1uJiYobi5jaGVja2VkPSExKX1lYS5zZWxlY3QuYXBwbHkodGhpcyxbdF0pLHRoaXMuZmlyZSgicGFwZXItcmFkaW8tZ3JvdXAtY2hhbmdlZCIpfX0sX2FjdGl2YXRlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9pdGVtQWN0aXZhdGUodGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuZm9jdXNlZEl0ZW0pLHRoaXMuZm9jdXNlZEl0ZW0pfSxfb25VcEtleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c1ByZXZpb3VzKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c05leHQoKSx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fYWN0aXZhdGVGb2N1c2VkSXRlbSgpfSxfb25MZWZ0S2V5OmZ1bmN0aW9uKHQpe2ZzLl9vbkxlZnRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uUmlnaHRLZXk6ZnVuY3Rpb24odCl7ZnMuX29uUmlnaHRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGdzPXhlYAogIDxzdHlsZT4KICAgIDpob3N0IHsKICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICBAYXBwbHkgLS1sYXlvdXQtanVzdGlmaWVkOwogICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICB3aWR0aDogMjAwcHg7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS0zMDApKTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtZGlzYWJsZWQtc2Vjb25kYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQtc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodDogdmFyKC0tcGFwZXItc2xpZGVyLWhlaWdodCwgMnB4KTsKICAgIH0KCiAgICAvKiBmb2N1cyBzaG93cyB0aGUgcmlwcGxlICovCiAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICAvKioKICAgICAgKiBOT1RFKGtlYW51bGVlKTogVGhvdWdoIDpob3N0LWNvbnRleHQgaXMgbm90IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCwgc29tZSBwYWdlcwogICAgICAqIHN0aWxsIHJlbHkgb24gcGFwZXItc2xpZGVyIGJlaW5nIGZsaXBwZWQgd2hlbiBkaXI9InJ0bCIgaXMgc2V0IG9uIGJvZHkuIEZvciBmdWxsCiAgICAgICogY29tcGF0aWJpbGl0eSwgZGlyPSJydGwiIG11c3QgYmUgZXhwbGljaXRseSBzZXQgb24gcGFwZXItc2xpZGVyLgogICAgICAqLwogICAgOmRpcihydGwpICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgfQoKICAgIC8qKgogICAgICAqIE5PVEUoa2VhbnVsZWUpOiBUaGlzIGlzIHNlcGFyYXRlIGZyb20gdGhlIHJ1bGUgYWJvdmUgYmVjYXVzZSA6aG9zdC1jb250ZXh0IG1heQogICAgICAqIG5vdCBiZSByZWNvZ25pemVkLgogICAgICAqLwogICAgOmhvc3QoW2Rpcj0icnRsIl0pICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgfQoKICAgIC8qKgogICAgICAqIE5PVEUoa2VhbnVsZWUpOiBOZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIDpob3N0LWNvbnRleHQgcnVsZSAod2hlcmUgc3VwcG9ydGVkKQogICAgICAqIHRvIHN1cHBvcnQgTFRSIHNsaWRlcnMgaW4gUlRMIHBhZ2VzLgogICAgICAqLwogICAgOmhvc3QoW2Rpcj0ibHRyIl0pICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoMTVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIG1hcmdpbi1yaWdodDogY2FsYygxNXB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyOmZvY3VzIHsKICAgICAgb3V0bGluZTogMDsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyLmVkaXRhYmxlIHsKICAgICAgbWFyZ2luLXRvcDogMTJweDsKICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIH0KCiAgICAuYmFyLWNvbnRhaW5lciB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC5yaW5nID4gLmJhci1jb250YWluZXIgewogICAgICBsZWZ0OiBjYWxjKDVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4xOHMgZWFzZTsKICAgIH0KCiAgICAucmluZy5leHBhbmQuZHJhZ2dpbmcgPiAuYmFyLWNvbnRhaW5lciB7CiAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICB9CgogICAgLnJpbmcuZXhwYW5kOm5vdCgucGluKSA+IC5iYXItY29udGFpbmVyIHsKICAgICAgbGVmdDogY2FsYyg4cHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgfQoKICAgICNzbGlkZXJCYXIgewogICAgICBwYWRkaW5nOiAxNXB4IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItYmFyLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItY29udGFpbmVyLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KTsKICAgIH0KCiAgICAuc2xpZGVyLW1hcmtlcnMgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIC8qIHNsaWRlci1rbm9iIGlzIDMwcHggKyB0aGUgc2xpZGVyLWhlaWdodCBzbyB0aGF0IHRoZSBtYXJrZXJzIHNob3VsZCBzdGFydCBhdCBhIG9mZnNldCBvZiAxNXB4Ki8KICAgICAgdG9wOiAxNXB4OwogICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAtMXB4OwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICB9CgogICAgLnNsaWRlci1tYXJrZXIgewogICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgIH0KICAgIC5zbGlkZXItbWFya2Vyczo6YWZ0ZXIsCiAgICAuc2xpZGVyLW1hcmtlcjo6YWZ0ZXIgewogICAgICBjb250ZW50OiAiIjsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgICB3aWR0aDogMnB4OwogICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3IsICMwMDApOwogICAgfQoKICAgIC5zbGlkZXIta25vYiB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgbGVmdDogMDsKICAgICAgdG9wOiAwOwogICAgICBtYXJnaW4tbGVmdDogY2FsYygtMTVweCAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIHdpZHRoOiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgICAgaGVpZ2h0OiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgIH0KCiAgICAudHJhbnNpdGluZyA+IC5zbGlkZXIta25vYiB7CiAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4wOHMgZWFzZTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2I6Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIC5zbGlkZXIta25vYi5kcmFnZ2luZyB7CiAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICB9CgogICAgLnNuYXBzID4gLnNsaWRlci1rbm9iLmRyYWdnaW5nIHsKICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4wOHMgZWFzZTsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMDhzIGVhc2U7CiAgICB9CgogICAgLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgbWFyZ2luOiAxMHB4OwogICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjBweCk7CiAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMjBweCk7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CgogICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CgogICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybSwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyOwogICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGJhY2tncm91bmQtY29sb3IsIGJvcmRlcjsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xOHM7CiAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgfQoKICAgIC5leHBhbmQ6bm90KC5waW4pID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuNSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgIH0KCiAgICAucmluZyA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1waW4tY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgfQoKICAgIC5waW4gPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICIiOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogNTAlOwogICAgICBtYXJnaW4tbGVmdDogLTEzcHg7CiAgICAgIHdpZHRoOiAyNnB4OwogICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNTAlIDA7CgogICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApIHRyYW5zbGF0ZSgwKTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSwKICAgIC5zbGlkZXIta25vYi1pbm5lcjo6YWZ0ZXIgewogICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuMThzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgLjE4cyBlYXNlOwogICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjE4cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIC4xOHMgZWFzZTsKICAgIH0KCiAgICAucGluLnJpbmcgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICB9CgogICAgLnBpbi5leHBhbmQgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKSB0cmFuc2xhdGUoMTdweCwgLTE3cHgpOwogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpIHRyYW5zbGF0ZSgxN3B4LCAtMTdweCk7CiAgICB9CgogICAgLnBpbiA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YWZ0ZXIgewogICAgICBjb250ZW50OiBhdHRyKHZhbHVlKTsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgbWFyZ2luLWxlZnQ6IC0xNnB4OwogICAgICB3aWR0aDogMzJweDsKICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZm9udC1jb2xvciwgI2ZmZik7CiAgICAgIGZvbnQtc2l6ZTogMTBweDsKCiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgfQoKICAgIC5waW4uZXhwYW5kID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjphZnRlciB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGUoMCwgLTE3cHgpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZSgwLCAtMTdweCk7CiAgICB9CgogICAgLyogcGFwZXItaW5wdXQgKi8KICAgIC5zbGlkZXItaW5wdXQgewogICAgICB3aWR0aDogNTBweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItc2xpZGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDsKICAgICAgfTsKICAgICAgQGFwcGx5IC0tcGFwZXItc2xpZGVyLWlucHV0OwogICAgfQoKICAgIC8qIGRpc2FibGVkIHN0YXRlICovCiAgICAjc2xpZGVyQ29udGFpbmVyLmRpc2FibGVkIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLmRpc2FibGVkID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWRpc2FibGVkLWtub2ItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1rbm9iLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAwLjc1LCAxKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNzUsIDAuNzUsIDEpOwogICAgfQoKICAgIC5kaXNhYmxlZC5yaW5nID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgfQoKICAgIHBhcGVyLXJpcHBsZSB7CiAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBpZD0ic2xpZGVyQ29udGFpbmVyIiBjbGFzc1wkPSJbW19nZXRDbGFzc05hbWVzKGRpc2FibGVkLCBwaW4sIHNuYXBzLCBpbW1lZGlhdGVWYWx1ZSwgbWluLCBleHBhbmQsIGRyYWdnaW5nLCB0cmFuc2l0aW5nLCBlZGl0YWJsZSldXSI+CiAgICA8ZGl2IGNsYXNzPSJiYXItY29udGFpbmVyIj4KICAgICAgPHBhcGVyLXByb2dyZXNzIGRpc2FibGVkXCQ9IltbZGlzYWJsZWRdXSIgaWQ9InNsaWRlckJhciIgYXJpYS1oaWRkZW49InRydWUiIG1pbj0iW1ttaW5dXSIgbWF4PSJbW21heF1dIiBzdGVwPSJbW3N0ZXBdXSIgdmFsdWU9IltbaW1tZWRpYXRlVmFsdWVdXSIgc2Vjb25kYXJ5LXByb2dyZXNzPSJbW3NlY29uZGFyeVByb2dyZXNzXV0iIG9uLWRvd249Il9iYXJkb3duIiBvbi11cD0iX3Jlc2V0S25vYiIgb24tdHJhY2s9Il9iYXJ0cmFjayIgb24tdGFwPSJfYmFyY2xpY2siPgogICAgICA8L3BhcGVyLXByb2dyZXNzPgogICAgPC9kaXY+CgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3NuYXBzXV0iPgogICAgICA8ZGl2IGNsYXNzPSJzbGlkZXItbWFya2VycyI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1ttYXJrZXJzXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyLW1hcmtlciI+PC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDxkaXYgaWQ9InNsaWRlcktub2IiIGNsYXNzPSJzbGlkZXIta25vYiIgb24tZG93bj0iX2tub2Jkb3duIiBvbi11cD0iX3Jlc2V0S25vYiIgb24tdHJhY2s9Il9vblRyYWNrIiBvbi10cmFuc2l0aW9uZW5kPSJfa25vYlRyYW5zaXRpb25FbmQiPgogICAgICAgIDxkaXYgY2xhc3M9InNsaWRlci1rbm9iLWlubmVyIiB2YWx1ZVwkPSJbW2ltbWVkaWF0ZVZhbHVlXV0iPjwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlZGl0YWJsZV1dIj4KICAgIDxwYXBlci1pbnB1dCBpZD0iaW5wdXQiIHR5cGU9Im51bWJlciIgc3RlcD0iW1tzdGVwXV0iIG1pbj0iW1ttaW5dXSIgbWF4PSJbW21heF1dIiBjbGFzcz0ic2xpZGVyLWlucHV0IiBkaXNhYmxlZFwkPSJbW2Rpc2FibGVkXV0iIHZhbHVlPSJbW2ltbWVkaWF0ZVZhbHVlXV0iIG9uLWNoYW5nZT0iX2NoYW5nZVZhbHVlIiBvbi1rZXlkb3duPSJfaW5wdXRLZXlEb3duIiBuby1sYWJlbC1mbG9hdD4KICAgIDwvcGFwZXItaW5wdXQ+CiAgPC90ZW1wbGF0ZT4KYDtncy5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxqcih7X3RlbXBsYXRlOmdzLGlzOiJwYXBlci1zbGlkZXIiLGJlaGF2aW9yczpbWG8sZ2EseGEsZHNdLHByb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOk51bWJlcix2YWx1ZTowfSxzbmFwczp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0scGluOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWNvbmRhcnlQcm9ncmVzc0NoYW5nZWQifSxlZGl0YWJsZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbW1lZGlhdGVWYWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWFkT25seTohMCxub3RpZnk6ITB9LG1heE1hcmtlcnM6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxleHBhbmQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMH0saWdub3JlQmFyVG91Y2g6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZHJhZ2dpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMCxub3RpZnk6ITB9LHRyYW5zaXRpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMH0sbWFya2Vyczp7dHlwZTpBcnJheSxyZWFkT25seTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl91cGRhdGVLbm9iKHZhbHVlLCBtaW4sIG1heCwgc25hcHMsIHN0ZXApIiwiX3ZhbHVlQ2hhbmdlZCh2YWx1ZSkiLCJfaW1tZWRpYXRlVmFsdWVDaGFuZ2VkKGltbWVkaWF0ZVZhbHVlKSIsIl91cGRhdGVNYXJrZXJzKG1heE1hcmtlcnMsIG1pbiwgbWF4LCBzbmFwcykiXSxob3N0QXR0cmlidXRlczp7cm9sZToic2xpZGVyIix0YWJpbmRleDowfSxrZXlCaW5kaW5nczp7bGVmdDoiX2xlZnRLZXkiLHJpZ2h0OiJfcmlnaHRLZXkiLCJkb3duIHBhZ2Vkb3duIGhvbWUiOiJfZGVjcmVtZW50S2V5IiwidXAgcGFnZXVwIGVuZCI6Il9pbmNyZW1lbnRLZXkifSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuaWdub3JlQmFyVG91Y2gmJmRpKHRoaXMuJC5zbGlkZXJCYXIsImF1dG8iKX0saW5jcmVtZW50OmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUrdGhpcy5zdGVwKX0sZGVjcmVtZW50OmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUtdGhpcy5zdGVwKX0sX3VwZGF0ZUtub2I6ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1pbiIsZSksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtYXgiLG4pLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93Iix0KSx0aGlzLl9wb3NpdGlvbktub2IoMTAwKnRoaXMuX2NhbGNSYXRpbyh0KSl9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoInZhbHVlLWNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9pbW1lZGlhdGVWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRyYWdnaW5nP3RoaXMuZmlyZSgiaW1tZWRpYXRlLXZhbHVlLWNoYW5nZSIse2NvbXBvc2VkOiEwfSk6dGhpcy52YWx1ZT10aGlzLmltbWVkaWF0ZVZhbHVlfSxfc2Vjb25kYXJ5UHJvZ3Jlc3NDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zZWNvbmRhcnlQcm9ncmVzcz10aGlzLl9jbGFtcFZhbHVlKHRoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3MpfSxfZXhwYW5kS25vYjpmdW5jdGlvbigpe3RoaXMuX3NldEV4cGFuZCghMCl9LF9yZXNldEtub2I6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbERlYm91bmNlcigiZXhwYW5kS25vYiIpLHRoaXMuX3NldEV4cGFuZCghMSl9LF9wb3NpdGlvbktub2I6ZnVuY3Rpb24odCl7dGhpcy5fc2V0SW1tZWRpYXRlVmFsdWUodGhpcy5fY2FsY1N0ZXAodGhpcy5fY2FsY0tub2JQb3NpdGlvbih0KSkpLHRoaXMuX3NldFJhdGlvKDEwMCp0aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkpLHRoaXMuJC5zbGlkZXJLbm9iLnN0eWxlLmxlZnQ9dGhpcy5yYXRpbysiJSIsdGhpcy5kcmFnZ2luZyYmKHRoaXMuX2tub2JzdGFydHg9dGhpcy5yYXRpbyp0aGlzLl93LzEwMCx0aGlzLnRyYW5zbGF0ZTNkKDAsMCwwLHRoaXMuJC5zbGlkZXJLbm9iKSl9LF9jYWxjS25vYlBvc2l0aW9uOmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLm1heC10aGlzLm1pbikqdC8xMDArdGhpcy5taW59LF9vblRyYWNrOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LnN0b3BQcm9wYWdhdGlvbigpLHQuZGV0YWlsLnN0YXRlKXtjYXNlInN0YXJ0Ijp0aGlzLl90cmFja1N0YXJ0KHQpO2JyZWFrO2Nhc2UidHJhY2siOnRoaXMuX3RyYWNrWCh0KTticmVhaztjYXNlImVuZCI6dGhpcy5fdHJhY2tFbmQoKX19LF90cmFja1N0YXJ0OmZ1bmN0aW9uKHQpe3RoaXMuX3NldFRyYW5zaXRpbmcoITEpLHRoaXMuX3c9dGhpcy4kLnNsaWRlckJhci5vZmZzZXRXaWR0aCx0aGlzLl94PXRoaXMucmF0aW8qdGhpcy5fdy8xMDAsdGhpcy5fc3RhcnR4PXRoaXMuX3gsdGhpcy5fa25vYnN0YXJ0eD10aGlzLl9zdGFydHgsdGhpcy5fbWlueD0tdGhpcy5fc3RhcnR4LHRoaXMuX21heHg9dGhpcy5fdy10aGlzLl9zdGFydHgsdGhpcy4kLnNsaWRlcktub2IuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKSx0aGlzLl9zZXREcmFnZ2luZyghMCl9LF90cmFja1g6ZnVuY3Rpb24odCl7dGhpcy5kcmFnZ2luZ3x8dGhpcy5fdHJhY2tTdGFydCh0KTt2YXIgZT1NYXRoLm1pbih0aGlzLl9tYXh4LE1hdGgubWF4KHRoaXMuX21pbngsdC5kZXRhaWwuZHgqKHRoaXMuX2lzUlRMPy0xOjEpKSk7dGhpcy5feD10aGlzLl9zdGFydHgrZTt2YXIgbj10aGlzLl9jYWxjU3RlcCh0aGlzLl9jYWxjS25vYlBvc2l0aW9uKHRoaXMuX3gvdGhpcy5fdyoxMDApKTt0aGlzLl9zZXRJbW1lZGlhdGVWYWx1ZShuKTt2YXIgaT10aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkqdGhpcy5fdy10aGlzLl9rbm9ic3RhcnR4O3RoaXMudHJhbnNsYXRlM2QoaSsicHgiLDAsMCx0aGlzLiQuc2xpZGVyS25vYil9LF90cmFja0VuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJC5zbGlkZXJLbm9iLnN0eWxlO3RoaXMuJC5zbGlkZXJLbm9iLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIiksdGhpcy5fc2V0RHJhZ2dpbmcoITEpLHRoaXMuX3Jlc2V0S25vYigpLHRoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZSx0LnRyYW5zZm9ybT10LndlYmtpdFRyYW5zZm9ybT0iIix0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9rbm9iZG93bjpmdW5jdGlvbih0KXt0aGlzLl9leHBhbmRLbm9iKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKX0sX2JhcnRyYWNrOmZ1bmN0aW9uKHQpe3RoaXMuX2FsbG93QmFyRXZlbnQodCkmJnRoaXMuX29uVHJhY2sodCl9LF9iYXJjbGljazpmdW5jdGlvbih0KXt0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGg7dmFyIGU9dGhpcy4kLnNsaWRlckJhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPSh0LmRldGFpbC54LWUubGVmdCkvdGhpcy5fdyoxMDA7dGhpcy5faXNSVEwmJihuPTEwMC1uKTt2YXIgaT10aGlzLnJhdGlvO3RoaXMuX3NldFRyYW5zaXRpbmcoITApLHRoaXMuX3Bvc2l0aW9uS25vYihuKSxpPT09dGhpcy5yYXRpbyYmdGhpcy5fc2V0VHJhbnNpdGluZyghMSksdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9KSksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKX0sX2JhcmRvd246ZnVuY3Rpb24odCl7dGhpcy5fYWxsb3dCYXJFdmVudCh0KSYmKHRoaXMuZGVib3VuY2UoImV4cGFuZEtub2IiLHRoaXMuX2V4cGFuZEtub2IsNjApLHRoaXMuX2JhcmNsaWNrKHQpKX0sX2tub2JUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09dGhpcy4kLnNsaWRlcktub2ImJnRoaXMuX3NldFRyYW5zaXRpbmcoITEpfSxfdXBkYXRlTWFya2VyczpmdW5jdGlvbih0LGUsbixpKXtpfHx0aGlzLl9zZXRNYXJrZXJzKFtdKTt2YXIgcj1NYXRoLnJvdW5kKChuLWUpL3RoaXMuc3RlcCk7cj50JiYocj10KSwocjwwfHwhaXNGaW5pdGUocikpJiYocj0wKSx0aGlzLl9zZXRNYXJrZXJzKG5ldyBBcnJheShyKSl9LF9tZXJnZUNsYXNzZXM6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbigiICIpfSxfZ2V0Q2xhc3NOYW1lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZXJnZUNsYXNzZXMoe2Rpc2FibGVkOnRoaXMuZGlzYWJsZWQscGluOnRoaXMucGluLHNuYXBzOnRoaXMuc25hcHMscmluZzp0aGlzLmltbWVkaWF0ZVZhbHVlPD10aGlzLm1pbixleHBhbmQ6dGhpcy5leHBhbmQsZHJhZ2dpbmc6dGhpcy5kcmFnZ2luZyx0cmFuc2l0aW5nOnRoaXMudHJhbnNpdGluZyxlZGl0YWJsZTp0aGlzLmVkaXRhYmxlfSl9LF9hbGxvd0JhckV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLmlnbm9yZUJhclRvdWNofHx0LmRldGFpbC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnR9LGdldCBfaXNSVEwoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fX2lzUlRMJiYodGhpcy5fX2lzUlRMPSJydGwiPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlyZWN0aW9uKSx0aGlzLl9faXNSVEx9LF9sZWZ0S2V5OmZ1bmN0aW9uKHQpe3RoaXMuX2lzUlRMP3RoaXMuX2luY3JlbWVudEtleSh0KTp0aGlzLl9kZWNyZW1lbnRLZXkodCl9LF9yaWdodEtleTpmdW5jdGlvbih0KXt0aGlzLl9pc1JUTD90aGlzLl9kZWNyZW1lbnRLZXkodCk6dGhpcy5faW5jcmVtZW50S2V5KHQpfSxfaW5jcmVtZW50S2V5OmZ1bmN0aW9uKHQpe3RoaXMuZGlzYWJsZWR8fCgiZW5kIj09PXQuZGV0YWlsLmtleT90aGlzLnZhbHVlPXRoaXMubWF4OnRoaXMuaW5jcmVtZW50KCksdGhpcy5maXJlKCJjaGFuZ2UiKSx0LnByZXZlbnREZWZhdWx0KCkpfSxfZGVjcmVtZW50S2V5OmZ1bmN0aW9uKHQpe3RoaXMuZGlzYWJsZWR8fCgiaG9tZSI9PT10LmRldGFpbC5rZXk/dGhpcy52YWx1ZT10aGlzLm1pbjp0aGlzLmRlY3JlbWVudCgpLHRoaXMuZmlyZSgiY2hhbmdlIiksdC5wcmV2ZW50RGVmYXVsdCgpKX0sX2NoYW5nZVZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dC50YXJnZXQudmFsdWUsdGhpcy5maXJlKCJjaGFuZ2UiLHtjb21wb3NlZDohMH0pfSxfaW5wdXRLZXlEb3duOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5zbGlkZXJLbm9iLGJhLl9jcmVhdGVSaXBwbGUuY2FsbCh0aGlzKX0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5zdHlsZS5kaXNwbGF5PXQ/IiI6Im5vbmUiLHRoaXMuX3JpcHBsZS5ob2xkRG93bj10KX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IF9zPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7X3Muc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksX3MuaW5uZXJIVE1MPSI8ZG9tLW1vZHVsZSBpZD1cInBhcGVyLXNwaW5uZXItc3R5bGVzXCI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICAvKlxuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICAgLyogU1RZTEVTIEZPUiBUSEUgU1BJTk5FUiAqL1xuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgICAvKlxuICAgICAgICogQ29uc3RhbnRzOlxuICAgICAgICogICAgICBBUkNTSVpFICAgICA9IDI3MCBkZWdyZWVzIChhbW91bnQgb2YgY2lyY2xlIHRoZSBhcmMgdGFrZXMgdXApXG4gICAgICAgKiAgICAgIEFSQ1RJTUUgICAgID0gMTMzM21zICh0aW1lIGl0IHRha2VzIHRvIGV4cGFuZCBhbmQgY29udHJhY3QgYXJjKVxuICAgICAgICogICAgICBBUkNTVEFSVFJPVCA9IDIxNiBkZWdyZWVzIChob3cgbXVjaCB0aGUgc3RhcnQgbG9jYXRpb24gb2YgdGhlIGFyY1xuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByb3RhdGUgZWFjaCB0aW1lLCAyMTYgZ2l2ZXMgdXMgYVxuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgcG9pbnRlZCBzdGFyIHNoYXBlIChpdCdzIDM2MC81ICogMykuXG4gICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgNyBwb2ludGVkIHN0YXIsIHdlIG1pZ2h0IGRvXG4gICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYwLzcgKiAzID0gMTU0LjI4NilcbiAgICAgICAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtc1xuICAgICAgICovXG5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG5cbiAgICAgICAgLyogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb246IDE1NjhtcztcblxuICAgICAgICAvKiBBUkNUSU1FICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb246IDEzMzNtcztcblxuICAgICAgICAvKiA0ICogQVJDVElNRSAqL1xuICAgICAgICAtLXBhcGVyLXNwaW5uZXItZnVsbC1jeWNsZS1kdXJhdGlvbjogNTMzMm1zO1xuXG4gICAgICAgIC8qIFNIUklOS19USU1FICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbjogNDAwbXM7XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAvKiBUaGUgc3Bpbm5lciBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50cyB0aGF0IHdvdWxkIGhhdmUgdG8gYmVcbiAgICAgICAgICogZmxpcHBlZCBpZiB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIEFsd2F5cyB1c2UgbHRyIHNvIHRoYXQgdGhlXG4gICAgICAgICAqIHN0eWxlIHdvcmtzIG91dCBjb3JyZWN0bHkgaW4gYm90aCBjYXNlcy4gKi9cbiAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyLmFjdGl2ZSB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSB2YXIoLS1wYXBlci1zcGlubmVyLWNvbnRhaW5lci1yb3RhdGlvbi1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XG4gICAgICAgIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjb250YWluZXItcm90YXRlIHtcbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgLnNwaW5uZXItbGF5ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTtcbiAgICAgIH1cblxuICAgICAgLmxheWVyLTEge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci0xLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTtcbiAgICAgIH1cblxuICAgICAgLmxheWVyLTIge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci0yLWNvbG9yLCB2YXIoLS1nb29nbGUtcmVkLTUwMCkpO1xuICAgICAgfVxuXG4gICAgICAubGF5ZXItMyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTMtY29sb3IsIHZhcigtLWdvb2dsZS15ZWxsb3ctNTAwKSk7XG4gICAgICB9XG5cbiAgICAgIC5sYXllci00IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNwaW5uZXItbGF5ZXItNC1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTUwMCkpO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIElNUE9SVEFOVCBOT1RFIEFCT1VUIENTUyBBTklNQVRJT04gUFJPUEVSVElFUyAoa2VhbnVsZWUpOlxuICAgICAgICpcbiAgICAgICAqIGlPUyBTYWZhcmkgKHRlc3RlZCBvbiBpT1MgOC4xKSBkb2VzIG5vdCBoYW5kbGUgYW5pbWF0aW9uLWRlbGF5IHZlcnkgd2VsbCAtIGl0IGRvZXNuJ3RcbiAgICAgICAqIGd1YXJhbnRlZSB0aGF0IHRoZSBhbmltYXRpb24gd2lsbCBzdGFydCBfZXhhY3RseV8gYWZ0ZXIgdGhhdCB2YWx1ZS4gU28gd2UgYXZvaWQgdXNpbmdcbiAgICAgICAqIGFuaW1hdGlvbi1kZWxheSBhbmQgaW5zdGVhZCBzZXQgY3VzdG9tIGtleWZyYW1lcyBmb3IgZWFjaCBjb2xvciAoYXMgbGF5ZXItMnVuZGFudCBhcyBpdFxuICAgICAgICogc2VlbXMpLlxuICAgICAgICovXG4gICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlO1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGU7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTtcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0xIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0xLWZhZGUtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0xLWZhZGUtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyLmxheWVyLTIge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLnNwaW5uZXItbGF5ZXIubGF5ZXItMyB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci00IHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci00LWZhZGUtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci00LWZhZGUtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmlsbC11bmZpbGwtcm90YXRlIHtcbiAgICAgICAgMTIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDI1JSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpIH0gLyogMSAgICogQVJDU0laRSAqL1xuICAgICAgICAzNy41JSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKSB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNTAlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovXG4gICAgICAgIDYyLjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2NzVkZWcpIH0gLyogMi41ICogQVJDU0laRSAqL1xuICAgICAgICA3NSUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKSB9IC8qIDMgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgODcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovXG4gICAgICAgIHRvICAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKSB9IC8qIDQgICAqIEFSQ1NJWkUgKi9cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBmaWxsLXVuZmlsbC1yb3RhdGUge1xuICAgICAgICAxMi41JSB7IHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDI1JSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKSB9IC8qIDEgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgMzcuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg0MDVkZWcpIH0gLyogMS41ICogQVJDU0laRSAqL1xuICAgICAgICA1MCUgICB7IHRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovXG4gICAgICAgIDYyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKSB9IC8qIDIuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNzUlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSg4MTBkZWcpIH0gLyogMyAgICogQVJDU0laRSAqL1xuICAgICAgICA4Ny41JSB7IHRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovXG4gICAgICAgIHRvICAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZykgfSAvKiA0ICAgKiBBUkNTSVpFICovXG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci0xLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDI2JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA4OSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgOTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItMS1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDI1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICAyNiUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgODklIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDEgfVxuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGF5ZXItMi1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDE1JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDUxJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGxheWVyLTItZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAxNSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA1MSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxheWVyLTMtZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA0MCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA3NiUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBsYXllci0zLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNzYlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNjUlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNjUlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgLmNpcmNsZS1jbGlwcGVyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBQYXRjaCB0aGUgZ2FwIHRoYXQgYXBwZWFyIGJldHdlZW4gdGhlIHR3byBhZGphY2VudCBkaXYuY2lyY2xlLWNsaXBwZXIgd2hpbGUgdGhlXG4gICAgICAgKiBzcGlubmVyIGlzIHJvdGF0aW5nIChhcHBlYXJzIG9uIENocm9tZSA1MCwgU2FmYXJpIDkuMS4xLCBhbmQgRWRnZSkuXG4gICAgICAgKi9cbiAgICAgIC5zcGlubmVyLWxheWVyOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBsZWZ0OiA0NSU7XG4gICAgICAgIHdpZHRoOiAxMCU7XG4gICAgICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgICAgfVxuXG4gICAgICAuc3Bpbm5lci1sYXllcjo6YWZ0ZXIsXG4gICAgICAuY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3JkZXItd2lkdGg6IHZhcigtLXBhcGVyLXNwaW5uZXItc3Ryb2tlLXdpZHRoLCAzcHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2lyY2xlLWNsaXBwZXIucmlnaHQgLmNpcmNsZSB7XG4gICAgICAgIGxlZnQ6IC0xMDAlO1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTI5ZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLmdhcC1wYXRjaDo6YWZ0ZXIsXG4gICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZXhwYW5kLWNvbnRyYWN0LWR1cmF0aW9uKTtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb24pO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBsZWZ0LXNwaW47XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBsZWZ0LXNwaW47XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByaWdodC1zcGluO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogcmlnaHQtc3BpbjtcbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxlZnQtc3BpbiB7XG4gICAgICAgIDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgICAgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZykgfVxuICAgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGVmdC1zcGluIHtcbiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpIH1cbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xuICAgICAgICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfVxuICAgICAgICA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH1cbiAgICAgICAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyByaWdodC1zcGluIHtcbiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9XG4gICAgICAgIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH1cbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyLmNvb2xkb3duIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmFkZS1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChfcy5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHlzPXtwcm9wZXJ0aWVzOnthY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9fYWN0aXZlQ2hhbmdlZCJ9LGFsdDp7dHlwZTpTdHJpbmcsdmFsdWU6ImxvYWRpbmciLG9ic2VydmVyOiJfX2FsdENoYW5nZWQifSxfX2Nvb2xpbmdEb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxfX2NvbXB1dGVDb250YWluZXJDbGFzc2VzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3R8fGU/ImFjdGl2ZSI6IiIsZT8iY29vbGRvd24iOiIiXS5qb2luKCIgIil9LF9fYWN0aXZlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3RoaXMuX19zZXRBcmlhSGlkZGVuKCF0KSx0aGlzLl9fY29vbGluZ0Rvd249IXQmJmV9LF9fYWx0Q2hhbmdlZDpmdW5jdGlvbih0KXsibG9hZGluZyI9PT10P3RoaXMuYWx0PXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIil8fHQ6KHRoaXMuX19zZXRBcmlhSGlkZGVuKCIiPT09dCksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHQpKX0sX19zZXRBcmlhSGlkZGVuOmZ1bmN0aW9uKHQpe3ZhciBlPSJhcmlhLWhpZGRlbiI7dD90aGlzLnNldEF0dHJpYnV0ZShlLCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9LF9fcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT0hMSx0aGlzLl9fY29vbGluZ0Rvd249ITF9fSx2cz14ZWAKICA8c3R5bGUgaW5jbHVkZT0icGFwZXItc3Bpbm5lci1zdHlsZXMiPjwvc3R5bGU+CgogIDxkaXYgaWQ9InNwaW5uZXJDb250YWluZXIiIGNsYXNzLW5hbWU9IltbX19jb21wdXRlQ29udGFpbmVyQ2xhc3NlcyhhY3RpdmUsIF9fY29vbGluZ0Rvd24pXV0iIG9uLWFuaW1hdGlvbmVuZD0iX19yZXNldCIgb24td2Via2l0LWFuaW1hdGlvbi1lbmQ9Il9fcmVzZXQiPgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciBsYXllci0xIj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIgbGF5ZXItMiI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWxheWVyIGxheWVyLTMiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciBsYXllci00Ij4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgpgOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi92cy5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxqcih7X3RlbXBsYXRlOnZzLGlzOiJwYXBlci1zcGlubmVyIixiZWhhdmlvcnM6W3lzXX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgYnM9eGVgCiAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLXNwaW5uZXItc3R5bGVzIj48L3N0eWxlPgoKICA8ZGl2IGlkPSJzcGlubmVyQ29udGFpbmVyIiBjbGFzcy1uYW1lPSJbW19fY29tcHV0ZUNvbnRhaW5lckNsYXNzZXMoYWN0aXZlLCBfX2Nvb2xpbmdEb3duKV1dIiBvbi1hbmltYXRpb25lbmQ9Il9fcmVzZXQiIG9uLXdlYmtpdC1hbmltYXRpb24tZW5kPSJfX3Jlc2V0Ij4KICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmA7YnMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksanIoe190ZW1wbGF0ZTpicyxpczoicGFwZXItc3Bpbm5lci1saXRlIixiZWhhdmlvcnM6W3lzXX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB4cz14ZWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJwYXBlci10YWJzIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSJjaGV2cm9uLWxlZnQiPjxwYXRoIGQ9Ik0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZXZyb24tcmlnaHQiPjxwYXRoIGQ9Ik0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh4cy5jb250ZW50KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dC1pbmxpbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbbGlua10pIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAudGFiLWNvbnRlbnQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYi1jb250ZW50OwogICAgICB9CgogICAgICA6aG9zdCg6bm90KC5pcm9uLXNlbGVjdGVkKSkgPiAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDAuODsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQtdW5zZWxlY3RlZDsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQtZm9jdXNlZDsKICAgICAgfQoKICAgICAgcGFwZXItcmlwcGxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdGFiLWluaywgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgfQoKICAgICAgLnRhYi1jb250ZW50ID4gOjpzbG90dGVkKGEpIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItdGFiIixiZWhhdmlvcnM6W3JhLGFhLHVhXSxwcm9wZXJ0aWVzOntsaW5rOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRhYiJ9LGxpc3RlbmVyczp7ZG93bjoiX3VwZGF0ZU5vaW5rIix0YXA6Il9vblRhcCJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlTm9pbmsoKX0sZ2V0IF9wYXJlbnROb2luaygpe3ZhciB0PWVyKHRoaXMpLnBhcmVudE5vZGU7cmV0dXJuISF0JiYhIXQubm9pbmt9LF91cGRhdGVOb2luazpmdW5jdGlvbigpe3RoaXMubm9pbms9ISF0aGlzLm5vaW5rfHwhIXRoaXMuX3BhcmVudE5vaW5rfSxfb25UYXA6ZnVuY3Rpb24odCl7aWYodGhpcy5saW5rKXt2YXIgZT10aGlzLnF1ZXJ5RWZmZWN0aXZlQ2hpbGRyZW4oImEiKTtpZighZSlyZXR1cm47aWYodC50YXJnZXQ9PT1lKXJldHVybjtlLmNsaWNrKCl9fX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpqcih7X3RlbXBsYXRlOnhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CgogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CgogICAgICAgIC8qIE5PVEU6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlIHZhbHVlIHRvIGJlIFxgdHJhbnNwYXJlbnRcYC4gKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiczsKICAgICAgfQoKICAgICAgOmhvc3QoOmRpcihydGwpKSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWwtcmV2ZXJzZTsKICAgICAgfQoKICAgICAgI3RhYnNDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1jb250YWluZXI7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIC1tb3otZmxleC1iYXNpczogYXV0bzsKICAgICAgICAtbXMtZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnMtY29udGVudDsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQ6bm90KC5zY3JvbGxhYmxlKSwKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlLmZpdC1jb250YWluZXIgewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgLyogSUUgLSBwcmV2ZW50IHRhYnMgZnJvbSBjb21wcmVzc2luZyB3aGVuIHRoZXkgc2hvdWxkIHNjcm9sbC4gKi8KICAgICAgICAtbXMtZmxleDogMSAwIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDAgYXV0bzsKICAgICAgICBmbGV4OiAxIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLm5vdC12aXNpYmxlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgICNzZWxlY3Rpb25CYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvciwgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1zZWxlY3Rpb24tYmFyOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmFsaWduLWJvdHRvbSB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgfQoKICAgICAgI3NlbGVjdGlvbkJhci5leHBhbmQgewogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmNvbnRyYWN0IHsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE4czsKICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQgPiA6OnNsb3R0ZWQoOm5vdCgjc2VsZWN0aW9uQmFyKSkgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLWxlZnQiIGNsYXNzJD0iW1tfY29tcHV0ZVNjcm9sbEJ1dHRvbkNsYXNzKF9sZWZ0SGlkZGVuLCBzY3JvbGxhYmxlLCBoaWRlU2Nyb2xsQnV0dG9ucyldXSIgb24tdXA9Il9vblNjcm9sbEJ1dHRvblVwIiBvbi1kb3duPSJfb25MZWZ0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgoKICAgIDxkaXYgaWQ9InRhYnNDb250YWluZXIiIG9uLXRyYWNrPSJfc2Nyb2xsIiBvbi1kb3duPSJfZG93biI+CiAgICAgIDxkaXYgaWQ9InRhYnNDb250ZW50IiBjbGFzcyQ9IltbX2NvbXB1dGVUYWJzQ29udGVudENsYXNzKHNjcm9sbGFibGUsIGZpdENvbnRhaW5lcildXSI+CiAgICAgICAgPGRpdiBpZD0ic2VsZWN0aW9uQmFyIiBjbGFzcyQ9IltbX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzcyhub0JhciwgYWxpZ25Cb3R0b20pXV0iIG9uLXRyYW5zaXRpb25lbmQ9Il9vbkJhclRyYW5zaXRpb25FbmQiPjwvZGl2PgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLXJpZ2h0IiBjbGFzcyQ9IltbX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzcyhfcmlnaHRIaWRkZW4sIHNjcm9sbGFibGUsIGhpZGVTY3JvbGxCdXR0b25zKV1dIiBvbi11cD0iX29uU2Nyb2xsQnV0dG9uVXAiIG9uLWRvd249Il9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgpgLGlzOiJwYXBlci10YWJzIixiZWhhdmlvcnM6W0NvLG1zXSxwcm9wZXJ0aWVzOntub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfbm9pbmtDaGFuZ2VkIn0sbm9CYXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9TbGlkZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzY3JvbGxhYmxlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGZpdENvbnRhaW5lcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxkaXNhYmxlRHJhZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxoaWRlU2Nyb2xsQnV0dG9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGlnbkJvdHRvbTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RhYmxlOnt0eXBlOlN0cmluZyx2YWx1ZToicGFwZXItdGFiIn0sYXV0b3NlbGVjdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdXRvc2VsZWN0RGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9zdGVwOnt0eXBlOk51bWJlcix2YWx1ZToxMH0sX2hvbGREZWxheTp7dHlwZTpOdW1iZXIsdmFsdWU6MX0sX2xlZnRIaWRkZW46e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3JpZ2h0SGlkZGVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9wcmV2aW91c1RhYjp7dHlwZTpPYmplY3R9fSxob3N0QXR0cmlidXRlczp7cm9sZToidGFibGlzdCJ9LGxpc3RlbmVyczp7Imlyb24tcmVzaXplIjoiX29uVGFiU2l6aW5nQ2hhbmdlZCIsImlyb24taXRlbXMtY2hhbmdlZCI6Il9vblRhYlNpemluZ0NoYW5nZWQiLCJpcm9uLXNlbGVjdCI6Il9vbklyb25TZWxlY3QiLCJpcm9uLWRlc2VsZWN0IjoiX29uSXJvbkRlc2VsZWN0In0sa2V5QmluZGluZ3M6eyJsZWZ0OmtleXVwIHJpZ2h0OmtleXVwIjoiX29uQXJyb3dLZXl1cCJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9ob2xkSm9iPW51bGwsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXZvaWQgMCx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQ9dm9pZCAwLHRoaXMuX2JpbmREZWxheWVkQWN0aXZhdGlvbkhhbmRsZXI9dGhpcy5fZGVsYXllZEFjdGl2YXRpb25IYW5kbGVyLmJpbmQodGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9vbkJsdXJDYXB0dXJlLmJpbmQodGhpcyksITApfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2V0U2Nyb2xsRGlyZWN0aW9uKCJ5Iix0aGlzLiQudGFic0NvbnRhaW5lcil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKX0sX25vaW5rQ2hhbmdlZDpmdW5jdGlvbih0KXtlcih0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci10YWIiKS5mb3JFYWNoKHQ/dGhpcy5fc2V0Tm9pbmtBdHRyaWJ1dGU6dGhpcy5fcmVtb3ZlTm9pbmtBdHRyaWJ1dGUpfSxfc2V0Tm9pbmtBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoIm5vaW5rIiwiIil9LF9yZW1vdmVOb2lua0F0dHJpYnV0ZTpmdW5jdGlvbih0KXt0LnJlbW92ZUF0dHJpYnV0ZSgibm9pbmsiKX0sX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzczpmdW5jdGlvbih0LGUsbil7cmV0dXJuIWV8fG4/ImhpZGRlbiI6dD8ibm90LXZpc2libGUiOiIifSxfY29tcHV0ZVRhYnNDb250ZW50Q2xhc3M6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD8ic2Nyb2xsYWJsZSIrKGU/IiBmaXQtY29udGFpbmVyIjoiIik6IiBmaXQtY29udGFpbmVyIn0sX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzczpmdW5jdGlvbih0LGUpe3JldHVybiB0PyJoaWRkZW4iOmU/ImFsaWduLWJvdHRvbSI6IiJ9LF9vblRhYlNpemluZ0NoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRlYm91bmNlKCJfb25UYWJTaXppbmdDaGFuZ2VkIiwoZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGwoKSx0aGlzLl90YWJDaGFuZ2VkKHRoaXMuc2VsZWN0ZWRJdGVtKX0pLDEwKX0sX29uSXJvblNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLl90YWJDaGFuZ2VkKHQuZGV0YWlsLml0ZW0sdGhpcy5fcHJldmlvdXNUYWIpLHRoaXMuX3ByZXZpb3VzVGFiPXQuZGV0YWlsLml0ZW0sdGhpcy5jYW5jZWxEZWJvdW5jZXIoInRhYi1jaGFuZ2VkIil9LF9vbklyb25EZXNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLmRlYm91bmNlKCJ0YWItY2hhbmdlZCIsKGZ1bmN0aW9uKCl7dGhpcy5fdGFiQ2hhbmdlZChudWxsLHRoaXMuX3ByZXZpb3VzVGFiKSx0aGlzLl9wcmV2aW91c1RhYj1udWxsfSksMSl9LF9hY3RpdmF0ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbigpLGNzLl9hY3RpdmF0ZUhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfc2NoZWR1bGVBY3RpdmF0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXQsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXRoaXMuYXN5bmModGhpcy5fYmluZERlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcixlKX0sX2RlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbTt0aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW09dm9pZCAwLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD12b2lkIDAsdC5maXJlKHRoaXMuYWN0aXZhdGVFdmVudCxudWxsLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KX0sX2NhbmNlbFBlbmRpbmdBY3RpdmF0aW9uOmZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0JiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQpLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbT12b2lkIDAsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXZvaWQgMCl9LF9vbkFycm93S2V5dXA6ZnVuY3Rpb24odCl7dGhpcy5hdXRvc2VsZWN0JiZ0aGlzLl9zY2hlZHVsZUFjdGl2YXRpb24odGhpcy5mb2N1c2VkSXRlbSx0aGlzLmF1dG9zZWxlY3REZWxheSl9LF9vbkJsdXJDYXB0dXJlOmZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtJiZ0aGlzLl9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbigpfSxnZXQgX3RhYkNvbnRhaW5lclNjcm9sbFNpemUoKXtyZXR1cm4gTWF0aC5tYXgoMCx0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxXaWR0aC10aGlzLiQudGFic0NvbnRhaW5lci5vZmZzZXRXaWR0aCl9LF9zY3JvbGw6ZnVuY3Rpb24odCxlKXt0aGlzLnNjcm9sbGFibGUmJnRoaXMuX2FmZmVjdFNjcm9sbChlJiYtZS5kZHh8fDApfSxfZG93bjpmdW5jdGlvbih0KXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX2RlZmF1bHRGb2N1c0FzeW5jJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyksdGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9bnVsbCl9KSwxKX0sX2FmZmVjdFNjcm9sbDpmdW5jdGlvbih0KXt0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0Kz10O3ZhciBlPXRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQ7dGhpcy5fbGVmdEhpZGRlbj0wPT09ZSx0aGlzLl9yaWdodEhpZGRlbj1lPT09dGhpcy5fdGFiQ29udGFpbmVyU2Nyb2xsU2l6ZX0sX29uTGVmdFNjcm9sbEJ1dHRvbkRvd246ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxUb0xlZnQoKSx0aGlzLl9ob2xkSm9iPXNldEludGVydmFsKHRoaXMuX3Njcm9sbFRvTGVmdC5iaW5kKHRoaXMpLHRoaXMuX2hvbGREZWxheSl9LF9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93bjpmdW5jdGlvbigpe3RoaXMuX3Njcm9sbFRvUmlnaHQoKSx0aGlzLl9ob2xkSm9iPXNldEludGVydmFsKHRoaXMuX3Njcm9sbFRvUmlnaHQuYmluZCh0aGlzKSx0aGlzLl9ob2xkRGVsYXkpfSxfb25TY3JvbGxCdXR0b25VcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGhpcy5faG9sZEpvYiksdGhpcy5faG9sZEpvYj1udWxsfSxfc2Nyb2xsVG9MZWZ0OmZ1bmN0aW9uKCl7dGhpcy5fYWZmZWN0U2Nyb2xsKC10aGlzLl9zdGVwKX0sX3Njcm9sbFRvUmlnaHQ6ZnVuY3Rpb24oKXt0aGlzLl9hZmZlY3RTY3JvbGwodGhpcy5fc3RlcCl9LF90YWJDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kIiksdGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3QucmVtb3ZlKCJjb250cmFjdCIpLHZvaWQgdGhpcy5fcG9zaXRpb25CYXIoMCwwKTt2YXIgbj10aGlzLiQudGFic0NvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1uLndpZHRoLHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXIubGVmdC1uLmxlZnQ7aWYodGhpcy5fcG9zPXt3aWR0aDp0aGlzLl9jYWxjUGVyY2VudChyLndpZHRoLGkpLGxlZnQ6dGhpcy5fY2FsY1BlcmNlbnQobyxpKX0sdGhpcy5ub1NsaWRlfHxudWxsPT1lKXJldHVybiB0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZCIpLHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiY29udHJhY3QiKSx2b2lkIHRoaXMuX3Bvc2l0aW9uQmFyKHRoaXMuX3Bvcy53aWR0aCx0aGlzLl9wb3MubGVmdCk7dmFyIGE9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPXRoaXMuaXRlbXMuaW5kZXhPZihlKSxsPXRoaXMuaXRlbXMuaW5kZXhPZih0KTt0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5hZGQoImV4cGFuZCIpO3ZhciBjPXM8bDt0aGlzLl9pc1JUTCYmKGM9IWMpLGM/dGhpcy5fcG9zaXRpb25CYXIodGhpcy5fY2FsY1BlcmNlbnQoci5sZWZ0K3Iud2lkdGgtYS5sZWZ0LGkpLTUsdGhpcy5fbGVmdCk6dGhpcy5fcG9zaXRpb25CYXIodGhpcy5fY2FsY1BlcmNlbnQoYS5sZWZ0K2Eud2lkdGgtci5sZWZ0LGkpLTUsdGhpcy5fY2FsY1BlcmNlbnQobyxpKSs1KSx0aGlzLnNjcm9sbGFibGUmJnRoaXMuX3Njcm9sbFRvU2VsZWN0ZWRJZk5lZWRlZChyLndpZHRoLG8pfSxfc2Nyb2xsVG9TZWxlY3RlZElmTmVlZGVkOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS10aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0OyhuPDB8fChuKz10LXRoaXMuJC50YWJzQ29udGFpbmVyLm9mZnNldFdpZHRoKT4wKSYmKHRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQrPW4pfSxfY2FsY1BlcmNlbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMTAwKnQvZX0sX3Bvc2l0aW9uQmFyOmZ1bmN0aW9uKHQsZSl7ZT1lfHwwLHRoaXMuX3dpZHRoPXQ9dHx8MCx0aGlzLl9sZWZ0PWUsdGhpcy50cmFuc2Zvcm0oInRyYW5zbGF0ZVgoIitlKyIlKSBzY2FsZVgoIit0LzEwMCsiKSIsdGhpcy4kLnNlbGVjdGlvbkJhcil9LF9vbkJhclRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3Q7ZS5jb250YWlucygiZXhwYW5kIik/KGUucmVtb3ZlKCJleHBhbmQiKSxlLmFkZCgiY29udHJhY3QiKSx0aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9wb3Mud2lkdGgsdGhpcy5fcG9zLmxlZnQpKTplLmNvbnRhaW5zKCJjb250cmFjdCIpJiZlLnJlbW92ZSgiY29udHJhY3QiKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciB3cz1udWxsO2pyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9hc3QtYmFja2dyb3VuZC1jb2xvciwgIzMyMzIzMik7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvYXN0LWNvbG9yLCAjZjFmMWYxKTsKICAgICAgICBtaW4taGVpZ2h0OiA0OHB4OwogICAgICAgIG1pbi13aWR0aDogMjg4cHg7CiAgICAgICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI2KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgbWFyZ2luOiAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuM3M7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MsIG9wYWNpdHkgMC4zczsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jYXBzdWxlKSB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDsKICAgICAgfQoKICAgICAgOmhvc3QoLmZpdC1ib3R0b20pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KC5wYXBlci10b2FzdC1vcGVuKSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuIGlkPSJsYWJlbCI+e3t0ZXh0fX08L3NwYW4+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLXRvYXN0IixiZWhhdmlvcnM6W1dhXSxwcm9wZXJ0aWVzOntmaXRJbnRvOnt0eXBlOk9iamVjdCx2YWx1ZTp3aW5kb3csb2JzZXJ2ZXI6Il9vbkZpdEludG9DaGFuZ2VkIn0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToibGVmdCJ9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJib3R0b20ifSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsdmFsdWU6M2UzfSx0ZXh0Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sbm9DYW5jZWxPbk91dHNpZGVDbGljazp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxub0F1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfX0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfX29uVHJhbnNpdGlvbkVuZCJ9LGdldCB2aXNpYmxlKCl7cmV0dXJuIEVvLl93YXJuKCJgdmlzaWJsZWAgaXMgZGVwcmVjYXRlZCwgdXNlIGBvcGVuZWRgIGluc3RlYWQiKSx0aGlzLm9wZW5lZH0sZ2V0IF9jYW5BdXRvQ2xvc2UoKXtyZXR1cm4gdGhpcy5kdXJhdGlvbj4wJiZ0aGlzLmR1cmF0aW9uIT09MS8wfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fYXV0b0Nsb3NlPW51bGwsWWEucmVxdWVzdEF2YWlsYWJpbGl0eSgpfSxzaG93OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e3RleHQ6dH0pLHQpMD09PWUuaW5kZXhPZigiXyIpP0VvLl93YXJuKCdUaGUgcHJvcGVydHkgIicrZSsnIiBpcyBwcml2YXRlIGFuZCB3YXMgbm90IHNldC4nKTplIGluIHRoaXM/dGhpc1tlXT10W2VdOkVvLl93YXJuKCdUaGUgcHJvcGVydHkgIicrZSsnIiBpcyBub3QgdmFsaWQuJyk7dGhpcy5vcGVuKCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCl9LF9fb25UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3QmJnQudGFyZ2V0PT09dGhpcyYmIm9wYWNpdHkiPT09dC5wcm9wZXJ0eU5hbWUmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKTp0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKSl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX2F1dG9DbG9zZSYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fYXV0b0Nsb3NlKSx0aGlzLl9hdXRvQ2xvc2U9bnVsbCksdGhpcy5vcGVuZWQ/KHdzJiZ3cyE9PXRoaXMmJndzLmNsb3NlKCksd3M9dGhpcyx0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OnRoaXMudGV4dH0pLHRoaXMuX2NhbkF1dG9DbG9zZSYmKHRoaXMuX2F1dG9DbG9zZT10aGlzLmFzeW5jKHRoaXMuY2xvc2UsdGhpcy5kdXJhdGlvbikpKTp3cz09PXRoaXMmJih3cz1udWxsKSxqYS5fb3BlbmVkQ2hhbmdlZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLmNsYXNzTGlzdC5hZGQoInBhcGVyLXRvYXN0LW9wZW4iKX0sX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuY2xhc3NMaXN0LnJlbW92ZSgicGFwZXItdG9hc3Qtb3BlbiIpfSxfb25GaXRJbnRvQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnBvc2l0aW9uVGFyZ2V0PXR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFNzPXhlYAoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgb3V0bGluZTpub25lOwogICAgICB9CgogICAgICAudG9nZ2xlLWJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMC40OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgbGluZWFyIC4wOHM7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYmFyLWNvbG9yLCAjMDAwMDAwKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYmFyOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogLTNweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIGxpbmVhciAuMDhzLCBiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAuMDhzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBsaW5lYXIgLjA4cywgYmFja2dyb3VuZC1jb2xvciBsaW5lYXIgLjA4czsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJ1dHRvbi1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS01MCkpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1idXR0b247CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uLmRyYWdnaW5nIHsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdOm5vdChbZGlzYWJsZWRdKSkgLnRvZ2dsZS1iYXIgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYmFyLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1iYXI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b2dnbGUtYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgICAgIG9wYWNpdHk6IDAuMTI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXSkgLnRvZ2dsZS1idXR0b24gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMCk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXTpub3QoW2Rpc2FibGVkXSkpIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1idXR0b247CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5rIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAtMTRweDsKICAgICAgICBsZWZ0OiAtMTRweDsKICAgICAgICByaWdodDogYXV0bzsKICAgICAgICBib3R0b206IGF1dG87CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtaW5rOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pIC50b2dnbGUtaW5rIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtaW5rOwogICAgICB9CgogICAgICAudG9nZ2xlLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMzZweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgLyogVGhlIHRvZ2dsZSBidXR0b24gaGFzIGFuIGFic29sdXRlIHBvc2l0aW9uIG9mIC0zcHg7IFRoZSBleHRyYSAxcHgKICAgICAgICAvKiBhY2NvdW50cyBmb3IgdGhlIHRvZ2dsZSBidXR0b24gc2hhZG93IGJveC4gKi8KICAgICAgICBtYXJnaW46IDRweCAxcHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGFiZWwgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tbGFiZWwtc3BhY2luZywgOHB4KTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC8qIGludmFsaWQgc3RhdGUgKi8KICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWJhciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1pbnZhbGlkLWJhci1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1pbnZhbGlkLWJ1dHRvbi1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWluayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24taW52YWxpZC1pbmstY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0idG9nZ2xlLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgaWQ9InRvZ2dsZUJhciIgY2xhc3M9InRvZ2dsZS1iYXIiPjwvZGl2PgogICAgICA8ZGl2IGlkPSJ0b2dnbGVCdXR0b24iIGNsYXNzPSJ0b2dnbGUtYnV0dG9uIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1sYWJlbCI+PHNsb3Q+PC9zbG90PjwvZGl2PgoKICBgO1NzLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLGpyKHtfdGVtcGxhdGU6U3MsaXM6InBhcGVyLXRvZ2dsZS1idXR0b24iLGJlaGF2aW9yczpbd2FdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJidXR0b24iLCJhcmlhLXByZXNzZWQiOiJmYWxzZSIsdGFiaW5kZXg6MH0scHJvcGVydGllczp7fSxsaXN0ZW5lcnM6e3RyYWNrOiJfb250cmFjayJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7RGkodGhpcywoZnVuY3Rpb24oKXtkaSh0aGlzLCJwYW4teSIpfSkpfSxfb250cmFjazpmdW5jdGlvbih0KXt2YXIgZT10LmRldGFpbDsic3RhcnQiPT09ZS5zdGF0ZT90aGlzLl90cmFja1N0YXJ0KGUpOiJ0cmFjayI9PT1lLnN0YXRlP3RoaXMuX3RyYWNrTW92ZShlKToiZW5kIj09PWUuc3RhdGUmJnRoaXMuX3RyYWNrRW5kKGUpfSxfdHJhY2tTdGFydDpmdW5jdGlvbih0KXt0aGlzLl93aWR0aD10aGlzLiQudG9nZ2xlQmFyLm9mZnNldFdpZHRoLzIsdGhpcy5fdHJhY2tDaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLiQudG9nZ2xlQnV0dG9uLmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nIil9LF90cmFja01vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dC5keDt0aGlzLl94PU1hdGgubWluKHRoaXMuX3dpZHRoLE1hdGgubWF4KDAsdGhpcy5fdHJhY2tDaGVja2VkP3RoaXMuX3dpZHRoK2U6ZSkpLHRoaXMudHJhbnNsYXRlM2QodGhpcy5feCsicHgiLDAsMCx0aGlzLiQudG9nZ2xlQnV0dG9uKSx0aGlzLl91c2VyQWN0aXZhdGUodGhpcy5feD50aGlzLl93aWR0aC8yKX0sX3RyYWNrRW5kOmZ1bmN0aW9uKHQpe3RoaXMuJC50b2dnbGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKSx0aGlzLnRyYW5zZm9ybSgiIix0aGlzLiQudG9nZ2xlQnV0dG9uKX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3RoaXMuX3JpcHBsZUNvbnRhaW5lcj10aGlzLiQudG9nZ2xlQnV0dG9uO3ZhciB0PXVhLl9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gdC5pZD0iaW5rIix0LnNldEF0dHJpYnV0ZSgicmVjZW50ZXJzIiwiIiksdC5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiLCJ0b2dnbGUtaW5rIiksdH19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmpyKHtfdGVtcGxhdGU6eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItaGVpZ2h0LCA2NHB4KTsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0LCA1NnB4KTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0KTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci10b29sYmFyLWJhY2tncm91bmQsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9vbGJhci1jb2xvciwgdmFyKC0tZGFyay10aGVtZS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhcjsKICAgICAgfQoKICAgICAgOmhvc3QoLmFuaW1hdGUpIHsKICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1wYXBlci10b29sYmFyLXRyYW5zaXRpb24sIGhlaWdodCAwLjE4cyBlYXNlLWluKTsKICAgICAgfQoKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMik7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1tZWRpdW07CiAgICAgIH0KCiAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMyk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci10YWxsOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodCk7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1jb250ZW50OwogICAgICB9CgogICAgICAvKgogICAgICAgKiBUT0RPOiBXaGVyZSBzaG91bGQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMgbGl2ZSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBlbGVtZW50cz8KICAgICAgICovCgogICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgICAgICA6aG9zdCB7CiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQpOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAyKTsKICAgICAgICB9CgogICAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAzKTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLXRvb2xzIHsKICAgICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAjdG9wQmFyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC8qIG1pZGRsZSBiYXIgKi8KICAgICAgI21pZGRsZUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICA6aG9zdCgudGFsbCkgI21pZGRsZUJhciwKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSAjbWlkZGxlQmFyIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7CiAgICAgIH0KCiAgICAgIC8qIGJvdHRvbSBiYXIgKi8KICAgICAgI2JvdHRvbUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtYWtlIGVsZW1lbnRzIChlLmcuIGJ1dHRvbnMpIHJlc3BvbmQgdG8gbW91c2UvdG91Y2ggZXZlbnRzCiAgICAgICAqCiAgICAgICAqIFxgLnRvb2xiYXItdG9vbHNcYCBkaXNhYmxlcyB0b3VjaCBldmVudHMgc28gbXVsdGlwbGUgdG9vbGJhcnMgY2FuIHN0YWNrIGFuZCBub3QKICAgICAgICogYWJzb3JiIGV2ZW50cy4gQWxsIGNoaWxkcmVuIG11c3QgaGF2ZSBwb2ludGVyIGV2ZW50cyByZS1lbmFibGVkIHRvIHdvcmsgYXMKICAgICAgICogZXhwZWN0ZWQuCiAgICAgICAqLwogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgqOm5vdChbZGlzYWJsZWRdKSkgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgudGl0bGUpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLnRpdGxlKSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDU2cHg7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKHBhcGVyLWljb24tYnV0dG9uICsgLnRpdGxlKSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBUaGUgLS1wYXBlci10b29sYmFyLXRpdGxlIG1peGluIGlzIGFwcGxpZWQgaGVyZSBpbnN0ZWFkIG9mIGFib3ZlIHRvCiAgICAgICAqIGZpeCB0aGUgaXNzdWUgd2l0aCBtYXJnaW4tbGVmdCBiZWluZyBpZ25vcmVkIGR1ZSB0byBjc3Mgb3JkZXJpbmcuCiAgICAgICAqLwogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgudGl0bGUpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sYmFyLXRpdGxlOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZChwYXBlci1pY29uLWJ1dHRvbltpY29uPW1lbnVdKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyNHB4OwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCguZml0KSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogYXV0bzsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC8qIFRPRE8obm9tcyk6IFVudGlsIHdlIGhhdmUgYSBiZXR0ZXIgc29sdXRpb24gZm9yIGNsYXNzZXMgdGhhdCBkb24ndCB1c2UKICAgICAgICogL2RlZXAvIGNyZWF0ZSBvdXIgb3duLgogICAgICAgKi8KICAgICAgLnN0YXJ0LWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmNlbnRlci1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICB9CgogICAgICAuZW5kLWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtYXJvdW5kLWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWp1c3RpZmllZDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0b3BCYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3NlcyhqdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0idG9wIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJtaWRkbGVCYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3NlcyhtaWRkbGVKdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0ibWlkZGxlIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJib3R0b21CYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3Nlcyhib3R0b21KdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0iYm90dG9tIj48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItdG9vbGJhciIsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRvb2xiYXIifSxwcm9wZXJ0aWVzOntib3R0b21KdXN0aWZ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sanVzdGlmeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LG1pZGRsZUp1c3RpZnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0scmVhZHk6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4odGhpcy5pcywiaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhcHAtbGF5b3V0IGluc3RlYWQhIil9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9dGhpcy5fb2JzZXJ2ZSh0aGlzKSx0aGlzLl91cGRhdGVBcmlhTGFiZWxsZWRCeSgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZ0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCl9LF9vYnNlcnZlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQXJpYUxhYmVsbGVkQnkoKX0uYmluZCh0aGlzKSk7cmV0dXJuIGUub2JzZXJ2ZSh0LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGV9LF91cGRhdGVBcmlhTGFiZWxsZWRCeTpmdW5jdGlvbigpe1dpKCk7Zm9yKHZhciB0LGU9W10sbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlcih0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3JBbGwoInNsb3QiKSkuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGVyKHRoaXMucm9vdCkucXVlcnlTZWxlY3RvckFsbCgiY29udGVudCIpKSksaT0wO3Q9bltpXTtpKyspZm9yKHZhciByLG89ZXIodCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGE9MDtyPW9bYV07YSsrKWlmKHIuY2xhc3NMaXN0JiZyLmNsYXNzTGlzdC5jb250YWlucygidGl0bGUiKSlpZihyLmlkKWUucHVzaChyLmlkKTtlbHNle3ZhciBzPSJwYXBlci10b29sYmFyLWxhYmVsLSIrTWF0aC5mbG9vcigxZTQqTWF0aC5yYW5kb20oKSk7ci5pZD1zLGUucHVzaChzKX1lLmxlbmd0aD4wJiZ0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixlLmpvaW4oIiAiKSl9LF9jb21wdXRlQmFyRXh0cmFDbGFzc2VzOmZ1bmN0aW9uKHQpe3JldHVybiB0P3QrKCJqdXN0aWZpZWQiPT09dD8iIjoiLWp1c3RpZmllZCIpOiIifX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KanIoe190ZW1wbGF0ZTp4ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIHotaW5kZXg6IDEwMDI7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgICN0b29sdGlwIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvb2x0aXAtYmFja2dyb3VuZCwgIzYxNjE2MSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvb2x0aXAtdGV4dC1jb2xvciwgd2hpdGUpOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZVNjYWxlVXAgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4wKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2NhbGVEb3duIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZUZhZGVJbk9wYWNpdHkgewogICAgICAgIDAlIHsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZUZhZGVPdXRPcGFjaXR5IHsKICAgICAgICAwJSB7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTbGlkZURvd25JbiB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgMTAlIHsKICAgICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2xpZGVEb3duT3V0IHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICAgIDEwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwLjI7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5mYWRlLWluLWFuaW1hdGlvbiB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVGYWRlSW5PcGFjaXR5OwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24taW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLmZhZGUtb3V0LWFuaW1hdGlvbiB7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lRmFkZU91dE9wYWNpdHk7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNjYWxlLXVwLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2NhbGVVcDsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zY2FsZS1kb3duLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNjYWxlRG93bjsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuc2xpZGUtZG93bi1hbmltYXRpb24gewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVTbGlkZURvd25JbjsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKTsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zbGlkZS1kb3duLWFuaW1hdGlvbi1vdXQgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNsaWRlRG93bk91dDsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuY2FuY2VsLWFuaW1hdGlvbiB7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAtMzBzICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIFRoYW5rcyBJRSAxMC4gKi8KCiAgICAgIC5oaWRkZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0b29sdGlwIiBjbGFzcz0iaGlkZGVuIj4KICAgICAgPHNsb3Q+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXRvb2x0aXAiLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJ0b29sdGlwIix0YWJpbmRleDotMX0scHJvcGVydGllczp7Zm9yOnt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2ZpbmRUYXJnZXQifSxtYW51YWxNb2RlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9tYW51YWxNb2RlQ2hhbmdlZCJ9LHBvc2l0aW9uOnt0eXBlOlN0cmluZyx2YWx1ZToiYm90dG9tIn0sZml0VG9WaXNpYmxlQm91bmRzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MTR9LG1hcmdpblRvcDp7dHlwZTpOdW1iZXIsdmFsdWU6MTR9LGFuaW1hdGlvbkRlbGF5Ont0eXBlOk51bWJlcix2YWx1ZTo1MDAsb2JzZXJ2ZXI6Il9kZWxheUNoYW5nZSJ9LGFuaW1hdGlvbkVudHJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sYW5pbWF0aW9uRXhpdDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LGFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZW50cnk6W3tuYW1lOiJmYWRlLWluLWFuaW1hdGlvbiIsbm9kZTp0aGlzLHRpbWluZzp7ZGVsYXk6MH19XSxleGl0Olt7bmFtZToiZmFkZS1vdXQtYW5pbWF0aW9uIixub2RlOnRoaXN9XX19fSxfc2hvd2luZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sbGlzdGVuZXJzOnt3ZWJraXRBbmltYXRpb25FbmQ6Il9vbkFuaW1hdGlvbkVuZCJ9LGdldCB0YXJnZXQoKXt2YXIgdD1lcih0aGlzKS5wYXJlbnROb2RlLGU9ZXIodGhpcykuZ2V0T3duZXJSb290KCk7cmV0dXJuIHRoaXMuZm9yP2VyKGUpLnF1ZXJ5U2VsZWN0b3IoIiMiK3RoaXMuZm9yKTp0Lm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/ZS5ob3N0OnR9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluZFRhcmdldCgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMubWFudWFsTW9kZXx8dGhpcy5fcmVtb3ZlTGlzdGVuZXJzKCl9LHBsYXlBbmltYXRpb246ZnVuY3Rpb24odCl7ImVudHJ5Ij09PXQ/dGhpcy5zaG93KCk6ImV4aXQiPT09dCYmdGhpcy5oaWRlKCl9LGNhbmNlbEFuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImNhbmNlbC1hbmltYXRpb24iKX0sc2hvdzpmdW5jdGlvbigpe2lmKCF0aGlzLl9zaG93aW5nKXtpZigiIj09PWVyKHRoaXMpLnRleHRDb250ZW50LnRyaW0oKSl7Zm9yKHZhciB0PSEwLGU9ZXIodGhpcykuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpLG49MDtuPGUubGVuZ3RoO24rKylpZigiIiE9PWVbbl0udGV4dENvbnRlbnQudHJpbSgpKXt0PSExO2JyZWFrfWlmKHQpcmV0dXJufXRoaXMuX3Nob3dpbmc9ITAsdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZXhpdCIpKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMCx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImVudHJ5IikpfX0saGlkZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Nob3dpbmcpe2lmKHRoaXMuX2FuaW1hdGlvblBsYXlpbmcpcmV0dXJuIHRoaXMuX3Nob3dpbmc9ITEsdm9pZCB0aGlzLl9jYW5jZWxBbmltYXRpb24oKTt0aGlzLl9vbkFuaW1hdGlvbkZpbmlzaCgpLHRoaXMuX3Nob3dpbmc9ITEsdGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMH19LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpcy5fdGFyZ2V0JiZ0aGlzLm9mZnNldFBhcmVudCl7dmFyIHQ9dGhpcy5vZmZzZXQ7MTQhPXRoaXMubWFyZ2luVG9wJiYxND09dGhpcy5vZmZzZXQmJih0PXRoaXMubWFyZ2luVG9wKTt2YXIgZSxuLGk9dGhpcy5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10aGlzLl90YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9KHIud2lkdGgtby53aWR0aCkvMixzPShyLmhlaWdodC1vLmhlaWdodCkvMixsPXIubGVmdC1pLmxlZnQsYz1yLnRvcC1pLnRvcDtzd2l0Y2godGhpcy5wb3NpdGlvbil7Y2FzZSJ0b3AiOmU9bCthLG49Yy1vLmhlaWdodC10O2JyZWFrO2Nhc2UiYm90dG9tIjplPWwrYSxuPWMrci5oZWlnaHQrdDticmVhaztjYXNlImxlZnQiOmU9bC1vLndpZHRoLXQsbj1jK3M7YnJlYWs7Y2FzZSJyaWdodCI6ZT1sK3Iud2lkdGgrdCxuPWMrc310aGlzLmZpdFRvVmlzaWJsZUJvdW5kcz8oaS5sZWZ0K2Urby53aWR0aD53aW5kb3cuaW5uZXJXaWR0aD8odGhpcy5zdHlsZS5yaWdodD0iMHB4Iix0aGlzLnN0eWxlLmxlZnQ9ImF1dG8iKToodGhpcy5zdHlsZS5sZWZ0PU1hdGgubWF4KDAsZSkrInB4Iix0aGlzLnN0eWxlLnJpZ2h0PSJhdXRvIiksaS50b3ArbitvLmhlaWdodD53aW5kb3cuaW5uZXJIZWlnaHQ/KHRoaXMuc3R5bGUuYm90dG9tPWkuaGVpZ2h0LWMrdCsicHgiLHRoaXMuc3R5bGUudG9wPSJhdXRvIik6KHRoaXMuc3R5bGUudG9wPU1hdGgubWF4KC1pLnRvcCxuKSsicHgiLHRoaXMuc3R5bGUuYm90dG9tPSJhdXRvIikpOih0aGlzLnN0eWxlLmxlZnQ9ZSsicHgiLHRoaXMuc3R5bGUudG9wPW4rInB4Iil9fSxfYWRkTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWVudGVyIiwic2hvdyIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiZm9jdXMiLCJzaG93IiksdGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiYmx1ciIsImhpZGUiKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsInRhcCIsImhpZGUiKSksdGhpcy5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMubGlzdGVuKHRoaXMsIm1vdXNlZW50ZXIiLCJoaWRlIil9LF9maW5kVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlfHx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlzLl90YXJnZXQ9dGhpcy50YXJnZXQsdGhpcy5tYW51YWxNb2RlfHx0aGlzLl9hZGRMaXN0ZW5lcnMoKX0sX2RlbGF5Q2hhbmdlOmZ1bmN0aW9uKHQpezUwMCE9PXQmJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LWluIjp0KyJtcyJ9KX0sX21hbnVhbE1vZGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlP3RoaXMuX3JlbW92ZUxpc3RlbmVycygpOnRoaXMuX2FkZExpc3RlbmVycygpfSxfY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7dGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImV4aXQiKSksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpfSxfb25BbmltYXRpb25GaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaG93aW5nJiYodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKCJjYW5jZWwtYW5pbWF0aW9uIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LmFkZCh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpKX0sX29uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMSx0aGlzLl9zaG93aW5nfHwodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpKX0sX2dldEFuaW1hdGlvblR5cGU6ZnVuY3Rpb24odCl7aWYoImVudHJ5Ij09PXQmJiIiIT09dGhpcy5hbmltYXRpb25FbnRyeSlyZXR1cm4gdGhpcy5hbmltYXRpb25FbnRyeTtpZigiZXhpdCI9PT10JiYiIiE9PXRoaXMuYW5pbWF0aW9uRXhpdClyZXR1cm4gdGhpcy5hbmltYXRpb25FeGl0O2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdJiYic3RyaW5nIj09dHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLm5hbWUpe2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLnRpbWluZyYmdGhpcy5hbmltYXRpb25Db25maWdbdF1bMF0udGltaW5nLmRlbGF5JiYwIT09dGhpcy5hbmltYXRpb25Db25maWdbdF1bMF0udGltaW5nLmRlbGF5KXt2YXIgZT10aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XVswXS50aW1pbmcuZGVsYXk7ImVudHJ5Ij09PXQ/dGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4iOmUrIm1zIn0pOiJleGl0Ij09PXQmJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCI6ZSsibXMifSl9cmV0dXJuIHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLm5hbWV9fSxfcmVtb3ZlTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsIm1vdXNlZW50ZXIiLCJzaG93IiksdGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsImZvY3VzIiwic2hvdyIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJibHVyIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJ0YXAiLCJoaWRlIikpLHRoaXMudW5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMudW5saXN0ZW4odGhpcywibW91c2VlbnRlciIsImhpZGUiKX19KTtjbGFzcyBNc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmxpc3RlbmVyPXR9fWNvbnN0IEVzPW5ldyBTZXQsVHM9bmV3IFNldDtmdW5jdGlvbiBDcyh0KXtjb25zdCBlPW5ldyBNcyh0KTtyZXR1cm4gRXMuYWRkKGUpLGV9ZnVuY3Rpb24gQXModCl7Y29uc3QgZT1uZXcgTXModCk7cmV0dXJuIFRzLmFkZChlKSxlfWZ1bmN0aW9uIGtzKCl7VHMuZm9yRWFjaCgodD0+dC5saXN0ZW5lcigpKSl9ZnVuY3Rpb24gUHModCl7RXMuZGVsZXRlKHQpfWZ1bmN0aW9uIExzKHQpe1RzLmRlbGV0ZSh0KX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsKCgpPT57RXMuZm9yRWFjaCgodD0+dC5saXN0ZW5lcigpKSl9KSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLCgoKT0+e1RzLmZvckVhY2goKHQ9PnQubGlzdGVuZXIoKSkpfSkpO2xldCBJcz0hMTtmdW5jdGlvbiBOcygpe3JldHVybiBJc31sZXQgUnM9IiI7ZnVuY3Rpb24gT3ModCl7UnM9dH1mdW5jdGlvbiB6cygpe3JldHVybiBSc312YXIgRHM9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsc2V0VXNlSGFzaDpmdW5jdGlvbiBCcyh0KXtJcz10fSx1c2VIYXNoOk5zLHNldEZha2VIYXNoOk9zLGdldEZha2VIYXNoOnpzfSk7Y29uc3QgSHM9Il9fdGFiX18iO2xldCBGcz17fTtmdW5jdGlvbiBWcygpe3JldHVybiBOcygpP3dpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpOnpzKCl9ZnVuY3Rpb24gVXModCl7Y29uc3QgZT17fTtyZXR1cm4gdC5zcGxpdCgiJiIpLmZvckVhY2goKHQ9Pntjb25zdCBuPXQuc3BsaXQoIj0iKTsxPT09bi5sZW5ndGg/ZS5fX3RhYl9fPW5bMF06Mj09PW4ubGVuZ3RoJiYoZVtkZWNvZGVVUklDb21wb25lbnQoblswXSldPWRlY29kZVVSSUNvbXBvbmVudChuWzFdKSl9KSksZX1mdW5jdGlvbiBqcyh0LGU9ITEpe2lmKE5zKCkpaWYoZSl7Y29uc3QgZT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtlLmhhc2g9dCx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsIiIsZS50b1N0cmluZygpKX1lbHNlIHdpbmRvdy5sb2NhdGlvbi5oYXNoPXQ7ZWxzZSBPcyh0KX1mdW5jdGlvbiBHcyh0KXtsZXQgZT0iIjt2b2lkIDAhPT10Ll9fdGFiX18mJihlKz10Ll9fdGFiX18pO2NvbnN0IG49T2JqZWN0LmtleXModCkubWFwKChlPT5bZSx0W2VdXSkpLmZpbHRlcigodD0+dFswXSE9PUhzKSkubWFwKCh0PT5lbmNvZGVVUklDb21wb25lbnQodFswXSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0WzFdKSkpLmpvaW4oIiYiKTtyZXR1cm4gbi5sZW5ndGg+MD9lKyImIituOmV9Q3MoKCgpPT57RnM9VXMoVnMoKSl9KSk7Y29uc3QgV3M9ImRpc2FtYmlndWF0b3IiLHtnZXQ6cXMsc2V0OllzLGdldEluaXRpYWxpemVyOlhzLGdldE9ic2VydmVyOiRzLGRpc3Bvc2VCaW5kaW5nOktzfT1kbCgodD0+dCksKHQ9PnQpKSx7Z2V0OlpzLHNldDpKcyxnZXRJbml0aWFsaXplcjpRcyxnZXRPYnNlcnZlcjp0bCxkaXNwb3NlQmluZGluZzplbH09ZGwoKHQ9PiJ0cnVlIj09PXR8fCJmYWxzZSIhPT10JiZ2b2lkIDApLCh0PT50LnRvU3RyaW5nKCkpKSx7Z2V0Om5sLHNldDppbCxnZXRJbml0aWFsaXplcjpybCxnZXRPYnNlcnZlcjpvbCxkaXNwb3NlQmluZGluZzphbH09ZGwoKHQ9Pit0KSwodD0+dC50b1N0cmluZygpKSkse2dldDpzbCxzZXQ6bGwsZ2V0SW5pdGlhbGl6ZXI6Y2wsZ2V0T2JzZXJ2ZXI6dWwsZGlzcG9zZUJpbmRpbmc6aGx9PWRsKCh0PT5KU09OLnBhcnNlKGF0b2IodCkpKSwodD0+YnRvYShKU09OLnN0cmluZ2lmeSh0KSkpKTtmdW5jdGlvbiBkbCh0LGUpe2NvbnN0IG49W10saT1bXTtmdW5jdGlvbiByKGUsbj17fSl7Y29uc3R7ZGVmYXVsdFZhbHVlOmksdXNlTG9jYWxTdG9yYWdlOnI9ITF9PW4sbz1yP3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTpVcyhWcygpKVtlXTtyZXR1cm4gbnVsbD09bz9DZS5leHBvcnRzLmNsb25lRGVlcChpKTp0KG8pfWZ1bmN0aW9uIG8odCxuLGk9e30pe2NvbnN0e2RlZmF1bHRWYWx1ZTpvLHVzZUxvY2FsU3RvcmFnZTphPSExLHVzZUxvY2F0aW9uUmVwbGFjZTpzPSExfT1pLGw9ZShuKTtpZihhKXdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0LGwpLGtzKCk7ZWxzZSBpZighQ2UuZXhwb3J0cy5pc0VxdWFsKG4scih0LHt1c2VMb2NhbFN0b3JhZ2U6YX0pKSlpZihDZS5leHBvcnRzLmlzRXF1YWwobixvKSkhKGZ1bmN0aW9uIGModCxlPSExKXtjb25zdCBuPVVzKFZzKCkpO2RlbGV0ZSBuW3RdLGpzKEdzKG4pLGUpfSkodCxzKTtlbHNle2NvbnN0IGU9VXMoVnMoKSk7ZVt0XT1sLGpzKEdzKGUpLHMpfX1yZXR1cm57Z2V0OnIsc2V0Om8sZ2V0SW5pdGlhbGl6ZXI6ZnVuY3Rpb24gYSh0LGUpe2NvbnN0IG89T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOmUuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp0LHVzZUxvY2FsU3RvcmFnZTohMX0sZSk7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgZT1wbCh0aGlzLHQpLGE9KCk9Pntjb25zdCB0PXIoZSxvKTtDZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzW28ucG9seW1lclByb3BlcnR5XSl8fCh0aGlzW28ucG9seW1lclByb3BlcnR5XT10KX0scz0oby51c2VMb2NhbFN0b3JhZ2U/QXM6Q3MpKCgoKT0+YSgpKSk7cmV0dXJuIG8udXNlTG9jYWxTdG9yYWdlP2kucHVzaChzKTpuLnB1c2gocyksYSgpLHRoaXNbby5wb2x5bWVyUHJvcGVydHldfX0sZ2V0T2JzZXJ2ZXI6ZnVuY3Rpb24gcyh0LGUpe2NvbnN0IG49T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOmUuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp0LHVzZUxvY2FsU3RvcmFnZTohMX0sZSk7cmV0dXJuIGZ1bmN0aW9uKCl7byhwbCh0aGlzLHQpLHRoaXNbbi5wb2x5bWVyUHJvcGVydHldLG4pfX0sZGlzcG9zZUJpbmRpbmc6ZnVuY3Rpb24gbCgpe24uZm9yRWFjaCgodD0+UHModCkpKSxpLmZvckVhY2goKHQ9PkxzKHQpKSl9fX1mdW5jdGlvbiBwbCh0LGUpe2NvbnN0IG49dC5kaXNhbWJpZ3VhdG9yO3JldHVybihudWxsPT1uP1tlXTpbbixlXSkuam9pbigiLiIpfWxldCBmbD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90YWdGaWx0ZXI9WHMoInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pLmNhbGwodGhpcyksdGhpcy5fdGFnRmlsdGVyT2JzZXJ2ZXI9JHMoInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pfV9jb21wdXRlVGFnRmlsdGVyKCl7cmV0dXJuIHRoaXMuX3RhZ0ZpbHRlcn19O2Z1bmN0aW9uIG1sKHQpe2NvbnN0e21vZHVsZU5hbWU6ZSxzdHlsZUNvbnRlbnQ6bn09dCxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIiksbz1bXTt0LnN0eWxlRGVwZW5kZW5jaWVzJiZ0LnN0eWxlRGVwZW5kZW5jaWVzLmZvckVhY2goKHQ9Pntjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS5zZXRBdHRyaWJ1dGUoImluY2x1ZGUiLHQpLG8ucHVzaChlKX0pKTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7T2JqZWN0LmFzc2lnbihhLHt0ZXh0Q29udGVudDpufSksby5mb3JFYWNoKCh0PT57ci5jb250ZW50LmFwcGVuZENoaWxkKHQpfSkpLHIuY29udGVudC5hcHBlbmRDaGlsZChhKSxpLmFwcGVuZENoaWxkKHIpLGkucmVnaXN0ZXIoZSl9ZnVuY3Rpb24gZ2wodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fbWF5YmVTZXREYXJrTW9kZSgpLHRoaXMub2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pnt0LnNvbWUoKHQ9PiJjbGFzcyI9PT10LmF0dHJpYnV0ZU5hbWUpKSYmdGhpcy5fbWF5YmVTZXREYXJrTW9kZSgpfSkpLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHthdHRyaWJ1dGVzOiEwfSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgdDtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLG51bGw9PT0odD10aGlzLm9ic2VydmVyKXx8dm9pZCAwPT09dHx8dC5kaXNjb25uZWN0KCl9X21heWJlU2V0RGFya01vZGUoKXt0aGlzLmNsYXNzTGlzdC50b2dnbGUoImRhcmstbW9kZSIsZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoImRhcmstbW9kZSIpKX19fWZsLnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWlucHV0CiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJGaWx0ZXIgdGFncyAocmVndWxhciBleHByZXNzaW9ucyBzdXBwb3J0ZWQpIgogICAgICB2YWx1ZT0ie3tfdGFnRmlsdGVyfX0iCiAgICAgIGNsYXNzPSJzZWFyY2gtaW5wdXQiCiAgICA+CiAgICAgIDxpcm9uLWljb24gcHJlZml4PSIiIGljb249InNlYXJjaCIgc2xvdD0icHJlZml4Ij48L2lyb24taWNvbj4KICAgIDwvcGFwZXItaW5wdXQ+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDEwcHggNXB4IDEwcHggMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxjb21wdXRlZDoiX2NvbXB1dGVUYWdGaWx0ZXIoX3RhZ0ZpbHRlcikifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZsLnByb3RvdHlwZSwidGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfdGFnRmlsdGVyT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZsLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSxmbD10KFtpKCJ0Zi10YWctZmlsdGVyZXIiKV0sZmwpLG1sKHttb2R1bGVOYW1lOiJkYXNoYm9hcmQtc3R5bGUiLHN0eWxlRGVwZW5kZW5jaWVzOlsiaXJvbi1mbGV4Il0sc3R5bGVDb250ZW50OiJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmc6IDE1cHg7XG4gICAgICAgIC0tc2lkZWJhci1sZWZ0LXBhZGRpbmc6IDMwcHg7XG4gICAgICB9XG5cbiAgICAgIFtzbG90PSdzaWRlYmFyJ10ge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG5cbiAgICAgIC5zZXR0aW5ncyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICAgIH1cblxuICAgICAgLnJ1bnMtc2VsZWN0b3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICAgICAgfVxuXG4gICAgICB0Zi1ydW5zLXNlbGVjdG9yIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgbGVmdDogdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmcpICogMik7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zZWFyY2gtaW5wdXQge1xuICAgICAgICBtYXJnaW46IDEwcHggNXB4IDAgMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCB2YXIoLS10Yi11aS1ib3JkZXIpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgMFxuICAgICAgICAgIHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b24ge1xuICAgICAgICBtYXJnaW46IDVweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gcGFwZXItYnV0dG9uOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gPiA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgNXB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgcGFwZXItY2hlY2tib3gge1xuICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICB9XG5cbiAgICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluayk7XG4gICAgICB9XG5cbiAgICAgIGE6dmlzaXRlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rLXZpc2l0ZWQpO1xuICAgICAgfVxuICAifSksbWwoe21vZHVsZU5hbWU6InNjcm9sbGJhci1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICAuc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgd2lkdGg6IDEwcHg7XG4gICAgfVxuXG4gICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTUwMCk7XG4gICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApO1xuICAgIH1cbiAgICAuc2Nyb2xsYmFyIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAifSk7Y29uc3QgX2w9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtfbC5zZXRBdHRyaWJ1dGUoImlzIiwiY3VzdG9tLXN0eWxlIiksX2wudGV4dENvbnRlbnQ9IlxuICA6cm9vdCB7XG4gICAgLS10Yi1vcmFuZ2Utd2VhazogI2ZmYTcyNjtcbiAgICAtLXRiLW9yYW5nZS1zdHJvbmc6ICNmNTdjMDA7XG4gICAgLS10Yi1vcmFuZ2UtZGFyazogI2RjNzMyMDtcbiAgICAtLXRiLWdyZXktZGFya2VyOiAjZTJlMmUyO1xuICAgIC0tdGItZ3JleS1saWdodGVyOiAjZjNmM2YzO1xuICAgIC0tdGItdWktZGFyay1hY2NlbnQ6ICM3NTc1NzU7XG4gICAgLS10Yi11aS1saWdodC1hY2NlbnQ6ICNlMGUwZTA7XG4gICAgLS10Yi11aS1ib3JkZXI6IHZhcigtLXBhcGVyLWdyZXktMzAwKTtcbiAgICAtLXRiLWdyYXBoLWZhZGVkOiAjZTBkNGIzO1xuICAgIC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktODAwKTtcbiAgICAtLXRiLXJhaXNlZC1idXR0b24tc2hhZG93LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTtcbiAgICAtLXRiLWxheW91dC1iYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIC0tdGItbGluazogIzE5NzZkMjsgLyogbWF0ZXJpYWwgYmx1ZSA3MDAuICovXG4gICAgLS10Yi1saW5rLXZpc2l0ZWQ6ICM3YjFmYTI7IC8qIG1hdGVyaWFsIHB1cnBsZSA3MDAuICovXG4gIH1cblxuICA6cm9vdCAuZGFyay1tb2RlIHtcbiAgICAtLXRiLXVpLWJvcmRlcjogdmFyKC0tcGFwZXItZ3JleS03MDApO1xuICAgIC0tdGItdWktZGFyay1hY2NlbnQ6IHZhcigtLXBhcGVyLWdyZXktNDAwKTtcbiAgICAtLXRiLXVpLWxpZ2h0LWFjY2VudDogdmFyKC0tcGFwZXItZ3JleS02MDApO1xuICAgIC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNDAwKTtcbiAgICAtLXRiLXJhaXNlZC1idXR0b24tc2hhZG93LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgLS1wcmltYXJ5LXRleHQtY29sb3I6ICNmZmY7XG4gICAgLS1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS00MDApO1xuICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMDMwOyAgLyogbWF0ZXJpYWwgZ3JleSBBNDAwLiAqL1xuICAgIC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7XG4gICAgLS10Yi1sYXlvdXQtYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTtcbiAgICAtLXRiLWxpbms6ICM0MmE1ZjU7IC8qIG1hdGVyaWFsIGJsdWUgNDAwLiAqL1xuICAgIC0tdGItbGluay12aXNpdGVkOiAjYmE2OGM4OyAvKiBtYXRlcmlhbCBwdXJwbGUgMzAwLiAqL1xuICAgIC8qIE92ZXJyaWRlcyBwYXBlci1tYXRlcmlhbCAqL1xuICAgIC0tc2hhZG93LWVsZXZhdGlvbi0yZHBfLV9ib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLFxuICAgICAgMCAxcHggNXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSxcbiAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgfVxuIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKF9sKTtsZXQgeWw9Y2xhc3MgZXh0ZW5kcyhnbCh3ZSkpe307eWwudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJzaWRlYmFyIj4KICAgICAgPHNsb3QgbmFtZT0ic2lkZWJhciI+PC9zbG90PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iY2VudGVyIj4KICAgICAgPHNsb3QgbmFtZT0iY2VudGVyIiBjbGFzcz0ic2NvbGxiYXIiPjwvc2xvdD4KICAgIDwvZGl2PgogICAgPHN0eWxlIGluY2x1ZGU9InNjcm9sbGJhci1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY29uZGFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgfQoKICAgICAgI3NpZGViYXIgewogICAgICAgIGZsZXg6IDAgMCB2YXIoLS10Zi1kYXNoYm9hcmQtbGF5b3V0LXNpZGViYXItYmFzaXMsIDI1JSk7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1heC13aWR0aDogdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLW1heC13aWR0aCwgMzUwcHgpOwogICAgICAgIG1pbi13aWR0aDogdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLW1pbi13aWR0aCwgMjcwcHgpOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgICNjZW50ZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOjpzbG90dGVkKFtzbG90PSdjZW50ZXInXSkgewogICAgICAgIGNvbnRhaW46IHN0cmljdDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgLnRmLWdyYXBoLWRhc2hib2FyZCAjY2VudGVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAseWw9dChbaSgidGYtZGFzaGJvYXJkLWxheW91dCIpXSx5bCk7Y29uc3Qgdmw9IlRGLlRlbnNvckJvYXJkLlBhZ2luYXRlZFZpZXcubGltaXQiO2xldCBibD1udWxsO2NvbnN0IHhsPW5ldyBTZXQ7ZnVuY3Rpb24gd2wodCl7eGwuYWRkKHQpfWZ1bmN0aW9uIFNsKHQpe3hsLmRlbGV0ZSh0KX1mdW5jdGlvbiBNbCgpe3JldHVybiBudWxsPT1ibCYmKGJsPW5sKHZsLHt1c2VMb2NhbFN0b3JhZ2U6ITB9KSwobnVsbD09Ymx8fCFpc0Zpbml0ZShibCl8fGJsPD0wKSYmKGJsPTEyKSksYmx9Y2xhc3MgRWwgZXh0ZW5kcyB3ZXt1cGRhdGVBcnJheVByb3AodCxlLG4pe2xldCBpPXRoaXMuZ2V0KHQpO2NvbnN0IHI9ZTtpZighQXJyYXkuaXNBcnJheShyKSl0aHJvdyBSYW5nZUVycm9yKGBFeHBlY3RlZCBuZXcgdmFsdWUgdG8gJyR7dH0nIHRvIGJlIGFuIGFycmF5LmApO0FycmF5LmlzQXJyYXkoaSl8fChpPVtdLHRoaXMuc2V0KHQsaSkpO2NvbnN0IG89bmV3IFNldChyLm1hcCgoKHQsZSk9Pm4odCxlKSkpKTtsZXQgYT0wLHM9MDtmb3IoO2E8aS5sZW5ndGgmJnM8ci5sZW5ndGg7KW8uaGFzKG4oaVthXSxhKSk/KG4oaVthXSxhKT09bihyW3NdLHMpP3RoaXMuc2V0KGAke3R9LiR7YX1gLHJbc10pOnRoaXMuc3BsaWNlKHQsYSwwLHJbc10pLHMrKyxhKyspOnRoaXMuc3BsaWNlKHQsYSwxKTthPGkubGVuZ3RoJiZ0aGlzLnNwbGljZSh0LGEpLHM8ci5sZW5ndGgmJnRoaXMucHVzaCh0LC4uLnIuc2xpY2UocykpfX1jbGFzcyBUbCBleHRlbmRzIEVse2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFzPSJpdGVtIix0aGlzLl9jb250ZW50QWN0aXZlPSEwLHRoaXMuX2RvbUJvb3RzdHJhcHBlZD0hMSx0aGlzLl9jdG9yPW51bGwsdGhpcy5fcmVuZGVyZWRJdGVtcz1bXSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdD1uZXcgTWFwLHRoaXMuX2xydUNhY2hlZEl0ZW1zPW5ldyBNYXAsdGhpcy5fY2FjaGVTaXplPTEwLHRoaXMuX2dldEl0ZW1LZXk9dD0+SlNPTi5zdHJpbmdpZnkodCksdGhpcy5faXNDb25uZWN0ZWQ9ITF9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSEwfXNldENhY2hlU2l6ZSh0KXt0aGlzLl9jYWNoZVNpemU9dH1zZXRHZXRJdGVtS2V5KHQpe3RoaXMuX2dldEl0ZW1LZXk9dH11cGRhdGVEb20odCl7dGhpcy51cGRhdGVBcnJheVByb3AoIl9yZW5kZXJlZEl0ZW1zIix0LHRoaXMuX2dldEl0ZW1LZXkpfV9lbnN1cmVUZW1wbGF0aXplZCgpe2lmKCF0aGlzLmlzQ29ubmVjdGVkKXJldHVybiExO2lmKCF0aGlzLl9jdG9yKXtjb25zdCB0PXRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTt0aGlzLl9jdG9yPWFvKHQsdGhpcyx7cGFyZW50TW9kZWw6ITAsaW5zdGFuY2VQcm9wczp7W3RoaXMuYXNdOiEwLGFjdGl2ZTp0aGlzLl9jb250ZW50QWN0aXZlfSxmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxlKXt0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5mb3JFYWNoKChuPT57bi5mb3J3YXJkSG9zdFByb3AodCxlKX0pKX19KX1yZXR1cm4hMH1fYm9vdHN0cmFwRG9tKCl7aWYoIXRoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCl8fHRoaXMuX2RvbUJvb3RzdHJhcHBlZClyZXR1cm47bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pntmb3IoY29uc3QgZSBvZiB0KWlmKCJjaGlsZExpc3QiPT09ZS50eXBlKWZvcihjb25zdCB0IG9mIEFycmF5LmZyb20oZS5hZGRlZE5vZGVzKSl0IGluc3RhbmNlb2YgRWxlbWVudCYmdC5zZXRBdHRyaWJ1dGUoInNsb3QiLCJpdGVtcyIpfSkpLm9ic2VydmUodGhpcyx7Y2hpbGRMaXN0OiEwfSksQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57dGhpcy5yZW1vdmVDaGlsZCh0KX0pKSx0aGlzLl9scnVDYWNoZWRJdGVtcy5jbGVhcigpLHRoaXMuX3JlbmRlcmVkSXRlbXMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX2luc2VydEl0ZW0odCxlKSkpLHRoaXMuX2RvbUJvb3RzdHJhcHBlZD0hMH1fdXBkYXRlQWN0aXZlKCl7dGhpcy5fZG9tQm9vdHN0cmFwcGVkJiZBcnJheS5mcm9tKHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LnZhbHVlcygpKS5mb3JFYWNoKCh0PT57dC5ub3RpZnlQYXRoKCJhY3RpdmUiLHRoaXMuX2NvbnRlbnRBY3RpdmUpfSkpfV91cGRhdGVEb20odCl7aWYodGhpcy5fZG9tQm9vdHN0cmFwcGVkJiYiX3JlbmRlcmVkSXRlbXMiIT10LnBhdGgmJiJfcmVuZGVyZWRJdGVtcy5sZW5ndGgiIT10LnBhdGgpaWYoIl9yZW5kZXJlZEl0ZW1zLnNwbGljZXMiPT09dC5wYXRoKXt0LnZhbHVlLmluZGV4U3BsaWNlcy5mb3JFYWNoKCh0PT57Y29uc3R7aW5kZXg6ZSxhZGRlZENvdW50Om4sb2JqZWN0OmkscmVtb3ZlZDpyfT10O3IuZm9yRWFjaCgodD0+e3RoaXMuX3JlbW92ZUl0ZW0odCx0aGlzLmNoaWxkcmVuW2VdKX0pKSxpLnNsaWNlKGUsZStuKS5mb3JFYWNoKCgodCxuKT0+dGhpcy5faW5zZXJ0SXRlbSh0LGUrbikpKSx0aGlzLl90cmltQ2FjaGUoKX0pKX1lbHNle2NvbnN0IGU9dGhpcy5fZ2V0SXRlbUtleSh0LnZhbHVlKTt0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5oYXMoZSk/dGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KGUpLm5vdGlmeVBhdGgodGhpcy5hcyx0LnZhbHVlKTpjb25zb2xlLndhcm4oYEV4cGVjdGVkICcke2V9JyB0byBleGlzdCBpbiB0aGUgRE9NIGJ1dCBjb3VsZCBub3QgZmluZCBvbmUuYCl9fV9pbnNlcnRJdGVtKHQsZSl7aWYoIXRoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0ZW1wbGF0aXplZCBiZWZvcmUgaW5zZXJ0aW5nIGFuIGl0ZW0iKTtsZXQgbjtjb25zdCBpPXRoaXMuX2dldEl0ZW1LZXkodCk7aWYodGhpcy5fbHJ1Q2FjaGVkSXRlbXMuaGFzKGkpKW49dGhpcy5fbHJ1Q2FjaGVkSXRlbXMuZ2V0KGkpLHRoaXMuX2xydUNhY2hlZEl0ZW1zLmRlbGV0ZShpKSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5nZXQoaSkubm90aWZ5UGF0aCgiYWN0aXZlIix0aGlzLl9jb250ZW50QWN0aXZlKTtlbHNle2NvbnN0IGU9bmV3IHRoaXMuX2N0b3Ioe1t0aGlzLmFzXTp0LGFjdGl2ZTp0aGlzLl9jb250ZW50QWN0aXZlfSk7bj1lLnJvb3QsdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3Quc2V0KGksZSl9aWYodGhpcy5jaGlsZHJlbltlXSl0aGlzLmluc2VydEJlZm9yZShuLHRoaXMuY2hpbGRyZW5bZV0pO2Vsc2V7KG4ubm9kZVR5cGU9PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT9BcnJheS5mcm9tKG4uY2hpbGRyZW4pOltuXSkuZm9yRWFjaCgodD0+dC5zZXRBdHRyaWJ1dGUoInNsb3QiLCJpdGVtcyIpKSksdGhpcy5hcHBlbmRDaGlsZChuKX19X3JlbW92ZUl0ZW0odCxlKXtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTtjb25zdCBuPXRoaXMuX2dldEl0ZW1LZXkodCk7dGhpcy5fbHJ1Q2FjaGVkSXRlbXMuc2V0KG4sZSksdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KG4pLm5vdGlmeVBhdGgoImFjdGl2ZSIsITEpfV90cmltQ2FjaGUoKXtmb3IoO3RoaXMuX2xydUNhY2hlZEl0ZW1zLnNpemU+dGhpcy5fY2FjaGVTaXplOyl7Y29uc3RbdF09dGhpcy5fbHJ1Q2FjaGVkSXRlbXMua2V5cygpO3RoaXMuX2xydUNhY2hlZEl0ZW1zLmRlbGV0ZSh0KSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5kZWxldGUodCl9fX10KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxUbC5wcm90b3R5cGUsImFzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxUbC5wcm90b3R5cGUsIml0ZW1zIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVGwucHJvdG90eXBlLCJfY29udGVudEFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfZG9tQm9vdHN0cmFwcGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRsLnByb3RvdHlwZSwiX2N0b3IiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFRsLnByb3RvdHlwZSwiX3JlbmRlcmVkSXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfcmVuZGVyZWRUZW1wbGF0ZUluc3QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfbHJ1Q2FjaGVkSXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVGwucHJvdG90eXBlLCJfY2FjaGVTaXplIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRsLnByb3RvdHlwZSwiX2dldEl0ZW1LZXkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRsLnByb3RvdHlwZSwiX2lzQ29ubmVjdGVkIix2b2lkIDApLHQoW2EoIl9pc0Nvbm5lY3RlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVGwucHJvdG90eXBlLCJfYm9vdHN0cmFwRG9tIixudWxsKSx0KFthKCJfY29udGVudEFjdGl2ZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVGwucHJvdG90eXBlLCJfdXBkYXRlQWN0aXZlIixudWxsKSx0KFthKCJfcmVuZGVyZWRJdGVtcy4qIiwiX2RvbUJvb3RzdHJhcHBlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtPYmplY3RdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVGwucHJvdG90eXBlLCJfdXBkYXRlRG9tIixudWxsKSx0KFthKCJfY2FjaGVTaXplIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxUbC5wcm90b3R5cGUsIl90cmltQ2FjaGUiLG51bGwpO2xldCBDbD1jbGFzcyBleHRlbmRzIFRse2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSExLHRoaXMuZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PkpTT04uc3RyaW5naWZ5KHQpLHRoaXMuX2xpbWl0PTEyLHRoaXMuX2FjdGl2ZUluZGV4PTAsdGhpcy5fcGFnZUlucHV0UmF3VmFsdWU9IiIsdGhpcy5fcGFnZUlucHV0Rm9jdXNlZD0hMX1fY29tcHV0ZUNvdW50KCl7cmV0dXJuIHRoaXMuY2F0ZWdvcnkuaXRlbXMubGVuZ3RofWdldCBfaGFzTXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fY291bnQ+MX1fdG9nZ2xlUGFuZSgpe3RoaXMub3BlbmVkPSF0aGlzLm9wZW5lZH1fY2hhbmdlQ29udGVudEFjdGl2ZSh0KXt0aGlzLl9jb250ZW50QWN0aXZlPXR9X29uUGFuZVJlbmRlcmVkQ2hhbmdlZCh0LGUpe3QmJnQhPT1lJiZ0aGlzLiQuaWZSZW5kZXJlZC5yZW5kZXIoKX1fY29tcHV0ZVBhbmVSZW5kZXJlZCh0KXtyZXR1cm4hKHQubWV0YWRhdGEudHlwZT09PUFyLlNFQVJDSF9SRVNVTFRTJiYiIj09PXQubmFtZSl9Z2V0IF9pdGVtc1JlbmRlcmVkKCl7cmV0dXJuIHRoaXMuX3BhbmVSZW5kZXJlZCYmdGhpcy5vcGVuZWR9X2NvbXB1dGVJc1NlYXJjaFJlc3VsdHModCl7cmV0dXJuIHQ9PT1Bci5TRUFSQ0hfUkVTVUxUU31fY29tcHV0ZUlzSW52YWxpZFNlYXJjaFJlc3VsdHModCl7cmV0dXJuIHQudHlwZT09PUFyLlNFQVJDSF9SRVNVTFRTJiYhdC52YWxpZFJlZ2V4fV9jb21wdXRlSXNVbml2ZXJzYWxTZWFyY2hRdWVyeSh0KXtyZXR1cm4gdC50eXBlPT09QXIuU0VBUkNIX1JFU1VMVFMmJnQudW5pdmVyc2FsUmVnZXh9X2lzQ29tcG9zaXRlU2VhcmNoKCl7Y29uc3R7dHlwZTp0LGNvbXBvc2l0ZVNlYXJjaDplfT10aGlzLmNhdGVnb3J5Lm1ldGFkYXRhO3JldHVybiBlJiZ0PT09QXIuU0VBUkNIX1JFU1VMVFN9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMub3BlbmVkPW51bGw9PXRoaXMuaW5pdGlhbE9wZW5lZHx8dGhpcy5pbml0aWFsT3BlbmVkLHRoaXMuX2xpbWl0TGlzdGVuZXI9KCk9Pnt0aGlzLnNldCgiX2xpbWl0IixNbCgpKX0sd2wodGhpcy5fbGltaXRMaXN0ZW5lciksdGhpcy5fbGltaXRMaXN0ZW5lcigpfWRldGFjaGVkKCl7U2wodGhpcy5fbGltaXRMaXN0ZW5lcil9X3VwZGF0ZVJlbmRlcmVkSXRlbXMoKXt2YXIgdD10aGlzLl9saW1pdCxlPXRoaXMuZGlzYWJsZVBhZ2luYXRpb247aWYoIXRoaXMuX2l0ZW1zUmVuZGVyZWQpcmV0dXJuO2NvbnN0IG49TWF0aC5mbG9vcih0aGlzLl9hY3RpdmVJbmRleC90KSxpPXRoaXMuY2F0ZWdvcnkuaXRlbXN8fFtdLHI9ZT9pOmkuc2xpY2Uobip0LChuKzEpKnQpO3RoaXMudXBkYXRlRG9tKHIpfV9saW1pdENoYW5nZWQodCl7dGhpcy5zZXRDYWNoZVNpemUoMip0KX1fZ2V0Q2F0ZWdvcnlJdGVtS2V5Q2hhbmdlZCgpe3RoaXMuc2V0R2V0SXRlbUtleSh0aGlzLmdldENhdGVnb3J5SXRlbUtleSl9Z2V0IF9jdXJyZW50UGFnZSgpe3JldHVybiBNYXRoLmZsb29yKHRoaXMuX2FjdGl2ZUluZGV4L3RoaXMuX2xpbWl0KSsxfV9jb21wdXRlUGFnZUNvdW50KHQsZSl7cmV0dXJuIHRoaXMuY2F0ZWdvcnk/TWF0aC5jZWlsKHRoaXMuY2F0ZWdvcnkuaXRlbXMubGVuZ3RoL2UpOjB9Z2V0IF9tdWx0aXBsZVBhZ2VzRXhpc3QoKXtyZXR1cm4hdGhpcy5kaXNhYmxlUGFnaW5hdGlvbiYmdGhpcy5fcGFnZUNvdW50PjF9Z2V0IF9oYXNQcmV2aW91c1BhZ2UoKXtyZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U+MX1nZXQgX2hhc05leHRQYWdlKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlPHRoaXMuX3BhZ2VDb3VudH1fY29tcHV0ZUlucHV0V2lkdGgodCl7cmV0dXJuYGNhbGMoJHt0LnRvU3RyaW5nKCkubGVuZ3RofWVtICsgMjBweClgfV9zZXRBY3RpdmVJbmRleCh0KXtjb25zdCBlPSh0aGlzLmNhdGVnb3J5Lml0ZW1zfHxbXSkubGVuZ3RoLTE7dD5lJiYodD1lKSx0PDAmJih0PTApLHRoaXMuc2V0KCJfYWN0aXZlSW5kZXgiLHQpfV9jbGFtcEFjdGl2ZUluZGV4KCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgpfV9wZXJmb3JtUHJldmlvdXNQYWdlKCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgtdGhpcy5fbGltaXQpfV9wZXJmb3JtTmV4dFBhZ2UoKXt0aGlzLl9zZXRBY3RpdmVJbmRleCh0aGlzLl9hY3RpdmVJbmRleCt0aGlzLl9saW1pdCl9X2NvbXB1dGVQYWdlSW5wdXRWYWx1ZSh0LGUsbil7cmV0dXJuIHQ/ZTpuLnRvU3RyaW5nKCl9X2hhbmRsZVBhZ2VJbnB1dEV2ZW50KHQpe3RoaXMuc2V0KCJfcGFnZUlucHV0UmF3VmFsdWUiLHQudGFyZ2V0LnZhbHVlKTtjb25zdCBlPU51bWJlcih0LnRhcmdldC52YWx1ZXx8TmFOKTtpZihpc05hTihlKSlyZXR1cm47Y29uc3Qgbj1NYXRoLm1heCgxLE1hdGgubWluKGUsdGhpcy5fcGFnZUNvdW50KSktMTt0aGlzLl9zZXRBY3RpdmVJbmRleCh0aGlzLl9saW1pdCpuKX1faGFuZGxlUGFnZUNoYW5nZUV2ZW50KCl7dGhpcy5zZXQoIl9wYWdlSW5wdXRSYXdWYWx1ZSIsdGhpcy5fY3VycmVudFBhZ2UudG9TdHJpbmcoKSl9X2hhbmRsZVBhZ2VGb2N1c0V2ZW50KCl7dGhpcy5zZXQoIl9wYWdlSW5wdXRSYXdWYWx1ZSIsdGhpcy5fcGFnZUlucHV0VmFsdWUpLHRoaXMuc2V0KCJfcGFnZUlucHV0Rm9jdXNlZCIsITApfV9oYW5kbGVQYWdlQmx1ckV2ZW50KCl7dGhpcy5zZXQoIl9wYWdlSW5wdXRGb2N1c2VkIiwhMSl9X3VwZGF0ZVBhZ2VJbnB1dFZhbHVlKHQpe2NvbnN0IGU9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNwYWdlLWlucHV0IGlucHV0Iik7ZSYmKGUudmFsdWU9dCl9X3VwZGF0ZUlucHV0V2lkdGgoKXt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXctcGFnZS1pbnB1dC13aWR0aCI6dGhpcy5faW5wdXRXaWR0aH0pfX07Q2wudGVtcGxhdGU9eGVgCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3BhbmVSZW5kZXJlZF1dIiBpZD0iaWZSZW5kZXJlZCI+CiAgICAgIDxidXR0b24gY2xhc3M9ImhlYWRpbmciIG9uLXRhcD0iX3RvZ2dsZVBhbmUiIG9wZW4tYnV0dG9uJD0iW1tvcGVuZWRdXSI+CiAgICAgICAgPHNwYW4gY2xhc3M9Im5hbWUiPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1NlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNDb21wb3NpdGVTZWFyY2goY2F0ZWdvcnkpXV0iPgogICAgICAgICAgICAgIDxzcGFuPlRhZ3MgbWF0Y2hpbmcgbXVsdGlwbGUgZXhwZXJpbWVudHM8L3NwYW4+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc0ludmFsaWRTZWFyY2hSZXN1bHRzXV0iPgogICAgICAgICAgICAgICAgPHNwYW4KICAgICAgICAgICAgICAgICAgPiZuYnNwOzxzdHJvbmc+KG1hbGZvcm1lZCByZWd1bGFyIGV4cHJlc3Npb24pPC9zdHJvbmc+PC9zcGFuCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfaXNDb21wb3NpdGVTZWFyY2goY2F0ZWdvcnkpXV0iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaWdodCI+VGFncyBtYXRjaGluZyAvPC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1uYW1lIiB0aXRsZSQ9IltbY2F0ZWdvcnkubmFtZV1dIgogICAgICAgICAgICAgICAgPltbY2F0ZWdvcnkubmFtZV1dPC9zcGFuCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaWdodCI+Lzwvc3Bhbj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVW5pdmVyc2FsU2VhcmNoUXVlcnldXSI+CiAgICAgICAgICAgICAgICA8c3Bhbj4gKGFsbCB0YWdzKTwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNJbnZhbGlkU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgICAgIDxzcGFuPiA8c3Ryb25nPihtYWxmb3JtZWQgcmVndWxhciBleHByZXNzaW9uKTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LW5hbWUiIHRpdGxlJD0iW1tjYXRlZ29yeS5uYW1lXV0iCiAgICAgICAgICAgICAgPltbY2F0ZWdvcnkubmFtZV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudCI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlXV0iPgogICAgICAgICAgICA8c3Bhbj5bW19jb3VudF1dPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDxpcm9uLWljb24gaWNvbj0iZXhwYW5kLW1vcmUiIGNsYXNzPSJleHBhbmQtYXJyb3ciPjwvaXJvbi1pY29uPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDwhLS0gVE9ETyhzdGVwaGFud2xlZSk6IGludmVzdGlnYXRlIGZ1cnRoZXIuIEZvciBzb21lIHJlYXNvbiwKICAgICAgICB0cmFuc2l0aW9uZW5kIHRoYXQgdGhlIGlyb24tY29sbGFwc2UgcmVsaWVzIG9uIHNvbWV0aW1lcyBkb2VzIG5vdAogICAgICAgIHRyaWdnZXIgd2hlbiByZW5kZXJpbmcgYSBjaGFydCB3aXRoIGEgc3Bpbm5lci4gQSB0b3kgZXhhbXBsZSBjYW5ub3QKICAgICAgICByZXByb2R1Y2UgdGhpcyBidWcuIC0tPgogICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Iltbb3BlbmVkXV0iIG5vLWFuaW1hdGlvbj0iIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICAgIDxzcGFuIGlkPSJ0b3Atb2YtY29udGFpbmVyIj48L3NwYW4+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX211bHRpcGxlUGFnZXNFeGlzdF1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmlnLXBhZ2UtYnV0dG9ucyIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDEwcHg7Ij4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtUHJldmlvdXNQYWdlIgogICAgICAgICAgICAgICAgZGlzYWJsZWQkPSJbWyFfaGFzUHJldmlvdXNQYWdlXV0iCiAgICAgICAgICAgICAgICA+UHJldmlvdXMgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgIG9uLXRhcD0iX3BlcmZvcm1OZXh0UGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc05leHRQYWdlXV0iCiAgICAgICAgICAgICAgICA+TmV4dCBwYWdlPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8ZGl2IGlkPSJpdGVtcyI+CiAgICAgICAgICAgIDxzbG90IG5hbWU9Iml0ZW1zIj48L3Nsb3Q+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbXVsdGlwbGVQYWdlc0V4aXN0XV0iPgogICAgICAgICAgICA8ZGl2IGlkPSJjb250cm9scy1jb250YWluZXIiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMCA1cHgiPgogICAgICAgICAgICAgICAgUGFnZQogICAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICAgIGlkPSJwYWdlLWlucHV0IgogICAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgICAgICAgICAgICAgIG1pbj0iMSIKICAgICAgICAgICAgICAgICAgbWF4PSJbW19wYWdlQ291bnRdXSIKICAgICAgICAgICAgICAgICAgdmFsdWU9IltbX3BhZ2VJbnB1dFZhbHVlXV0iCiAgICAgICAgICAgICAgICAgIG9uLWlucHV0PSJfaGFuZGxlUGFnZUlucHV0RXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWNoYW5nZT0iX2hhbmRsZVBhZ2VDaGFuZ2VFdmVudCIKICAgICAgICAgICAgICAgICAgb24tZm9jdXM9Il9oYW5kbGVQYWdlRm9jdXNFdmVudCIKICAgICAgICAgICAgICAgICAgb24tYmx1cj0iX2hhbmRsZVBhZ2VCbHVyRXZlbnQiCiAgICAgICAgICAgICAgICA+PC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgICAgIG9mIFtbX3BhZ2VDb3VudF1dCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmlnLXBhZ2UtYnV0dG9ucyIgc3R5bGU9Im1hcmdpbi10b3A6IDEwcHg7Ij4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtUHJldmlvdXNQYWdlIgogICAgICAgICAgICAgICAgZGlzYWJsZWQkPSJbWyFfaGFzUHJldmlvdXNQYWdlXV0iCiAgICAgICAgICAgICAgICA+UHJldmlvdXMgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgIG9uLXRhcD0iX3BlcmZvcm1OZXh0UGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc05leHRQYWdlXV0iCiAgICAgICAgICAgICAgICA+TmV4dCBwYWdlPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgPC90ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbjogMCA1cHggMXB4IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmaXJzdC1vZi10eXBlKSB7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgfQoKICAgICAgOmhvc3QoOmxhc3Qtb2YtdHlwZSkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDVweCB2YXIoLS10Yi1yYWlzZWQtYnV0dG9uLXNoYWRvdy1jb2xvcik7CiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgIH0KCiAgICAgIFtvcGVuLWJ1dHRvbl0gewogICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBbb3Blbi1idXR0b25dIC5leHBhbmQtYXJyb3cgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigxODBkZWcpOwogICAgICB9CgogICAgICAubmFtZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmxpZ2h0IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICB9CgogICAgICAuY2F0ZWdvcnktbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHBhZGRpbmc6IDJweCAwOwogICAgICB9CgogICAgICAuY291bnQgewogICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTUwMCk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgIH0KCiAgICAgIC5jb250ZW50IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWRlZGU7CiAgICAgICAgcGFkZGluZzogMTVweDsKICAgICAgfQoKICAgICAgLmxpZ2h0IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICB9CgogICAgICAjY29udHJvbHMtY29udGFpbmVyIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjY29udHJvbHMtY29udGFpbmVyIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAuYmlnLXBhZ2UtYnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgcGFwZXItYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsZXgtYmFzaXM6IDA7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgcGFwZXItYnV0dG9uW2Rpc2FibGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgfQoKICAgICAgc2xvdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQoKICAgICAgOjpzbG90dGVkKFtzbG90PSdpdGVtcyddKSB7CiAgICAgICAgLyogVG9vbHRpcCBmb3IgZGVzY3JpcHRpb25zIGFuZCBvdGhlcnMgYnJlYWsgd2l0aCBtb3JlIHN0cmljdCBvbmVzLiAqLwogICAgICAgIGNvbnRhaW46IHN0eWxlOwogICAgICB9CgogICAgICAjcGFnZS1pbnB1dCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiB2YXIoLS10Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldy1wYWdlLWlucHV0LXdpZHRoLCAxMDAlKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLENsLnByb3RvdHlwZSwiY2F0ZWdvcnkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsImluaXRpYWxPcGVuZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ2wucHJvdG90eXBlLCJvcGVuZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsImRpc2FibGVQYWdpbmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZUNvdW50KGNhdGVnb3J5Lml0ZW1zLiopIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxDbC5wcm90b3R5cGUsIl9jb3VudCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlUGFuZVJlbmRlcmVkKGNhdGVnb3J5KSIsb2JzZXJ2ZXI6Il9vblBhbmVSZW5kZXJlZENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsIl9wYW5lUmVuZGVyZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUlzU2VhcmNoUmVzdWx0cyhjYXRlZ29yeS5tZXRhZGF0YS50eXBlKSJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENsLnByb3RvdHlwZSwiX2lzU2VhcmNoUmVzdWx0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSXNJbnZhbGlkU2VhcmNoUmVzdWx0cyhjYXRlZ29yeS5tZXRhZGF0YSkifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsIl9pc0ludmFsaWRTZWFyY2hSZXN1bHRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVJc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5KGNhdGVnb3J5Lm1ldGFkYXRhKSJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENsLnByb3RvdHlwZSwiX2lzVW5pdmVyc2FsU2VhcmNoUXVlcnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9nZXRDYXRlZ29yeUl0ZW1LZXlDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxDbC5wcm90b3R5cGUsImdldENhdGVnb3J5SXRlbUtleSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixvYnNlcnZlcjoiX2xpbWl0Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQ2wucHJvdG90eXBlLCJfbGltaXQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQ2wucHJvdG90eXBlLCJfYWN0aXZlSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsY29tcHV0ZWQ6Il9jb21wdXRlUGFnZUNvdW50KGNhdGVnb3J5Lml0ZW1zLiosIF9saW1pdCkifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLENsLnByb3RvdHlwZSwiX3BhZ2VDb3VudCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVJbnB1dFdpZHRoKF9wYWdlQ291bnQpIixvYnNlcnZlcjoiX3VwZGF0ZUlucHV0V2lkdGgifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENsLnByb3RvdHlwZSwiX2lucHV0V2lkdGgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUGFnZUlucHV0VmFsdWUoX3BhZ2VJbnB1dEZvY3VzZWQsIF9wYWdlSW5wdXRSYXdWYWx1ZSwgX2N1cnJlbnRQYWdlKSIsb2JzZXJ2ZXI6Il91cGRhdGVQYWdlSW5wdXRWYWx1ZSJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ2wucHJvdG90eXBlLCJfcGFnZUlucHV0VmFsdWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ2wucHJvdG90eXBlLCJfcGFnZUlucHV0UmF3VmFsdWUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDbC5wcm90b3R5cGUsIl9wYWdlSW5wdXRGb2N1c2VkIix2b2lkIDApLHQoW3MoIl9jb3VudCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDbC5wcm90b3R5cGUsIl9oYXNNdWx0aXBsZSIsbnVsbCksdChbYSgib3BlbmVkIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW0Jvb2xlYW5dKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sQ2wucHJvdG90eXBlLCJfY2hhbmdlQ29udGVudEFjdGl2ZSIsbnVsbCksdChbcygib3BlbmVkIiwiX3BhbmVSZW5kZXJlZCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDbC5wcm90b3R5cGUsIl9pdGVtc1JlbmRlcmVkIixudWxsKSx0KFthKCJfaXRlbXNSZW5kZXJlZCIsImNhdGVnb3J5Lml0ZW1zLioiLCJfbGltaXQiLCJfYWN0aXZlSW5kZXgiLCJfcGFnZUNvdW50IiwiZGlzYWJsZVBhZ2luYXRpb24iKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLENsLnByb3RvdHlwZSwiX3VwZGF0ZVJlbmRlcmVkSXRlbXMiLG51bGwpLHQoW3MoIl9saW1pdCIsIl9hY3RpdmVJbmRleCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENsLnByb3RvdHlwZSwiX2N1cnJlbnRQYWdlIixudWxsKSx0KFtzKCJfcGFnZUNvdW50IiwiZGlzYWJsZVBhZ2luYXRpb24iKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQ2wucHJvdG90eXBlLCJfbXVsdGlwbGVQYWdlc0V4aXN0IixudWxsKSx0KFtzKCJfY3VycmVudFBhZ2UiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQ2wucHJvdG90eXBlLCJfaGFzUHJldmlvdXNQYWdlIixudWxsKSx0KFtzKCJfY3VycmVudFBhZ2UiLCJfcGFnZUNvdW50IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENsLnByb3RvdHlwZSwiX2hhc05leHRQYWdlIixudWxsKSx0KFthKCJjYXRlZ29yeS5pdGVtcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxDbC5wcm90b3R5cGUsIl9jbGFtcEFjdGl2ZUluZGV4IixudWxsKSxDbD10KFtpKCJ0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldyIpXSxDbCk7Y2xhc3MgQWx7Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lcj10fX1jbGFzcyBrbHtjb25zdHJ1Y3Rvcigpe3RoaXMucmVxdWVzdE1hbmFnZXI9bmV3IGJyKDEpLHRoaXMuX2xpc3RlbmVycz1uZXcgU2V0LHRoaXMuaW5pdGlhbGl6ZWQ9ITF9cmVmcmVzaCgpe3JldHVybiB0aGlzLmxvYWQoKS50aGVuKCgoKT0+e3RoaXMuaW5pdGlhbGl6ZWQ9ITB9KSl9YWRkTGlzdGVuZXIodCl7Y29uc3QgZT1uZXcgQWwodCk7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5hZGQoZSksZX1yZW1vdmVMaXN0ZW5lckJ5S2V5KHQpe3RoaXMuX2xpc3RlbmVycy5kZWxldGUodCl9ZW1pdENoYW5nZSgpe3RoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCh0PT57dHJ5e3QubGlzdGVuZXIoKX1jYXRjaCh0KXt9fSkpfX1jbGFzcyBQbCBleHRlbmRzIGtse2xvYWQoKXtjb25zdCB0PUVyKCkuZW52aXJvbm1lbnQoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9Pntjb25zdCBlPXtkYXRhTG9jYXRpb246dC5kYXRhX2xvY2F0aW9uLHdpbmRvd1RpdGxlOnQud2luZG93X3RpdGxlfTt2b2lkIDAhPT10LmV4cGVyaW1lbnRfbmFtZSYmKGUuZXhwZXJpbWVudE5hbWU9dC5leHBlcmltZW50X25hbWUpLHZvaWQgMCE9PXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiYmKGUuZXhwZXJpbWVudERlc2NyaXB0aW9uPXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiksdm9pZCAwIT09dC5jcmVhdGlvbl90aW1lJiYoZS5jcmVhdGlvblRpbWU9dC5jcmVhdGlvbl90aW1lKSxDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5lbnZpcm9ubWVudCxlKXx8KHRoaXMuZW52aXJvbm1lbnQ9ZSx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0RGF0YUxvY2F0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5kYXRhTG9jYXRpb246IiJ9Z2V0V2luZG93VGl0bGUoKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LndpbmRvd1RpdGxlOiIifWdldEV4cGVyaW1lbnROYW1lKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5leHBlcmltZW50TmFtZToiIn1nZXRFeHBlcmltZW50RGVzY3JpcHRpb24oKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LmV4cGVyaW1lbnREZXNjcmlwdGlvbjoiIn1nZXRDcmVhdGlvblRpbWUoKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudD90aGlzLmVudmlyb25tZW50LmNyZWF0aW9uVGltZTpudWxsfX1jb25zdCBMbD1uZXcgUGw7Y2xhc3MgSWwgZXh0ZW5kcyBrbHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcnVucz1bXX1sb2FkKCl7Y29uc3QgdD1FcigpLnJ1bnMoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5fcnVucyx0KXx8KHRoaXMuX3J1bnM9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0UnVucygpe3JldHVybiB0aGlzLl9ydW5zLnNsaWNlKCl9fWNvbnN0IE5sPW5ldyBJbDtmdW5jdGlvbiBSbCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBPbCh0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gUmwodChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKTwwP2k9bysxOnI9b31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKT4wP3I9bzppPW8rMX1yZXR1cm4gaX19fXZhciB6bD1PbChSbCksRGw9emwucmlnaHQsQmw9emwubGVmdDtmdW5jdGlvbiBIbCh0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIEZsKHQsZSxuKXt2YXIgaSxyLG8sYSxzPXQubGVuZ3RoLGw9ZS5sZW5ndGgsYz1uZXcgQXJyYXkocypsKTtmb3IobnVsbD09biYmKG49SGwpLGk9bz0wO2k8czsrK2kpZm9yKGE9dFtpXSxyPTA7cjxsOysrciwrK28pY1tvXT1uKGEsZVtyXSk7cmV0dXJuIGN9ZnVuY3Rpb24gVmwodCl7cmV0dXJuIG51bGw9PT10P05hTjordH1mdW5jdGlvbiBVbCh0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPTAsYT0tMSxzPTAsbD0wO2lmKG51bGw9PWUpZm9yKDsrK2E8cjspaXNOYU4obj1WbCh0W2FdKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtlbHNlIGZvcig7KythPHI7KWlzTmFOKG49VmwoZSh0W2FdLGEsdCkpKXx8KGwrPShpPW4tcykqKG4tKHMrPWkvKytvKSkpO2lmKG8+MSlyZXR1cm4gbC8oby0xKX1mdW5jdGlvbiBqbCh0LGUpe3ZhciBuPVVsKHQsZSk7cmV0dXJuIG4/TWF0aC5zcXJ0KG4pOm59ZnVuY3Rpb24gR2wodCxlKXt2YXIgbixpLHIsbz10Lmxlbmd0aCxhPS0xO2lmKG51bGw9PWUpe2Zvcig7KythPG87KWlmKG51bGwhPShuPXRbYV0pJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49dFthXSkmJihpPm4mJihpPW4pLHI8biYmKHI9bikpfWVsc2UgZm9yKDsrK2E8bzspaWYobnVsbCE9KG49ZSh0W2FdLGEsdCkpJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49ZSh0W2FdLGEsdCkpJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKTtyZXR1cm5baSxyXX12YXIgV2w9QXJyYXkucHJvdG90eXBlLHFsPVdsLnNsaWNlLFlsPVdsLm1hcDtmdW5jdGlvbiBYbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gJGwodCl7cmV0dXJuIHR9ZnVuY3Rpb24gS2wodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99dmFyIFpsPU1hdGguc3FydCg1MCksSmw9TWF0aC5zcXJ0KDEwKSxRbD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gdGModCxlLG4pe3ZhciBpLHIsbyxhLHM9LTE7aWYobj0rbiwodD0rdCk9PT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9ZWModCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gZWModCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1abD8xMDpvPj1KbD81Om8+PVFsPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49Wmw/MTA6bz49Smw/NTpvPj1RbD8yOjEpfWZ1bmN0aW9uIG5jKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1abD9yKj0xMDpvPj1KbD9yKj01Om8+PVFsJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24gaWModCl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gcmModCxlLG4pe2lmKG51bGw9PW4mJihuPVZsKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fWZ1bmN0aW9uIG9jKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288cjspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49dFtvXSkmJm4+aSYmKGk9bil9ZWxzZSBmb3IoOysrbzxyOylpZihudWxsIT0obj1lKHRbb10sbyx0KSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPmkmJihpPW4pO3JldHVybiBpfWZ1bmN0aW9uIGFjKHQpe2Zvcih2YXIgZSxuLGkscj10Lmxlbmd0aCxvPS0xLGE9MDsrK288cjspYSs9dFtvXS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpOy0tcj49MDspZm9yKGU9KGk9dFtyXSkubGVuZ3RoOy0tZT49MDspblstLWFdPWlbZV07cmV0dXJuIG59ZnVuY3Rpb24gc2ModCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxyOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj10W29dKSYmaT5uJiYoaT1uKX1lbHNlIGZvcig7KytvPHI7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj1lKHRbb10sbyx0KSkmJmk+biYmKGk9bik7cmV0dXJuIGl9ZnVuY3Rpb24gbGModCl7aWYoIShyPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIGU9LTEsbj1zYyh0LGNjKSxpPW5ldyBBcnJheShuKTsrK2U8bjspZm9yKHZhciByLG89LTEsYT1pW2VdPW5ldyBBcnJheShyKTsrK288cjspYVtvXT10W29dW2VdO3JldHVybiBpfWZ1bmN0aW9uIGNjKHQpe3JldHVybiB0Lmxlbmd0aH12YXIgdWM9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGhjKHQpe3JldHVybiB0fXZhciBkYz0xZS02O2Z1bmN0aW9uIHBjKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gZmModCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQrLjUpKyIpIn1mdW5jdGlvbiBtYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuK3QoZSl9fWZ1bmN0aW9uIGdjKHQpe3ZhciBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLGZ1bmN0aW9uKG4pe3JldHVybit0KG4pK2V9fWZ1bmN0aW9uIF9jKCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIHljKHQsZSl7dmFyIG49W10saT1udWxsLHI9bnVsbCxvPTYsYT02LHM9MyxsPTE9PT10fHw0PT09dD8tMToxLGM9ND09PXR8fDI9PT10PyJ4IjoieSIsdT0xPT09dHx8Mz09PXQ/cGM6ZmM7ZnVuY3Rpb24gaChoKXt2YXIgZD1udWxsPT1pP2UudGlja3M/ZS50aWNrcy5hcHBseShlLG4pOmUuZG9tYWluKCk6aSxwPW51bGw9PXI/ZS50aWNrRm9ybWF0P2UudGlja0Zvcm1hdC5hcHBseShlLG4pOmhjOnIsZj1NYXRoLm1heChvLDApK3MsbT1lLnJhbmdlKCksZz0rbVswXSsuNSxfPSttW20ubGVuZ3RoLTFdKy41LHk9KGUuYmFuZHdpZHRoP2djOm1jKShlLmNvcHkoKSksdj1oLnNlbGVjdGlvbj9oLnNlbGVjdGlvbigpOmgsYj12LnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSx4PXYuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoZCxlKS5vcmRlcigpLHc9eC5leGl0KCksUz14LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTT14LnNlbGVjdCgibGluZSIpLEU9eC5zZWxlY3QoInRleHQiKTtiPWIubWVyZ2UoYi5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKSkseD14Lm1lcmdlKFMpLE09TS5tZXJnZShTLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpLmF0dHIoYysiMiIsbCpvKSksRT1FLm1lcmdlKFMuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZmlsbCIsImN1cnJlbnRDb2xvciIpLmF0dHIoYyxsKmYpLmF0dHIoImR5IiwxPT09dD8iMGVtIjozPT09dD8iMC43MWVtIjoiMC4zMmVtIikpLGghPT12JiYoYj1iLnRyYW5zaXRpb24oaCkseD14LnRyYW5zaXRpb24oaCksTT1NLnRyYW5zaXRpb24oaCksRT1FLnRyYW5zaXRpb24oaCksdz13LnRyYW5zaXRpb24oaCkuYXR0cigib3BhY2l0eSIsZGMpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PXkodCkpP3UodCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLFMuYXR0cigib3BhY2l0eSIsZGMpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIHUoZSYmaXNGaW5pdGUoZT1lKHQpKT9lOnkodCkpfSkpKSx3LnJlbW92ZSgpLGIuYXR0cigiZCIsND09PXR8fDI9PXQ/YT8iTSIrbCphKyIsIitnKyJIMC41ViIrXysiSCIrbCphOiJNMC41LCIrZysiViIrXzphPyJNIitnKyIsIitsKmErIlYwLjVIIitfKyJWIitsKmE6Ik0iK2crIiwwLjVIIitfKSx4LmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiB1KHkodCkpfSkpLE0uYXR0cihjKyIyIixsKm8pLEUuYXR0cihjLGwqZikudGV4dChwKSx2LmZpbHRlcihfYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsMj09PXQ/InN0YXJ0Ijo0PT09dD8iZW5kIjoibWlkZGxlIiksdi5lYWNoKChmdW5jdGlvbigpe3RoaXMuX19heGlzPXl9KSl9cmV0dXJuIGguc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxoKTplfSxoLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIG49dWMuY2FsbChhcmd1bWVudHMpLGh9LGgudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P1tdOnVjLmNhbGwodCksaCk6bi5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOnVjLmNhbGwodCksaCk6aSYmaS5zbGljZSgpfSxoLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxoKTpyfSxoLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWE9K3QsaCk6b30saC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxoKTphfSxoLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGgpOnN9LGh9ZnVuY3Rpb24gdmModCl7cmV0dXJuIHljKDMsdCl9ZnVuY3Rpb24gYmModCl7cmV0dXJuIHljKDQsdCl9dmFyIHhjPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHdjKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IFNjKGkpfWZ1bmN0aW9uIFNjKHQpe3RoaXMuXz10fWZ1bmN0aW9uIE1jKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBFYyh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIFRjKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT14Yyx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9U2MucHJvdG90eXBlPXdjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6U2Msb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPU1jKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPVRjKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09VGMoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPUVjKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IFNjKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgQ2M9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLEFjPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpDYyx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIGtjKHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLEFjLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpBY1tlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIFBjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09Q2MmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PUNjP2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBMYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBJYyh0KXt2YXIgZT1rYyh0KTtyZXR1cm4oZS5sb2NhbD9MYzpQYykoZSl9ZnVuY3Rpb24gTmMoKXt9ZnVuY3Rpb24gUmModCl7cmV0dXJuIG51bGw9PXQ/TmM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBPYygpe3JldHVybltdfWZ1bmN0aW9uIHpjKHQpe3JldHVybiBudWxsPT10P09jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gRGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gQmModCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gSGModCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9SGMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpIYyxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTtmdW5jdGlvbiBGYyh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgSGModCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIFZjKHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBIYyh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIFVjKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIGpjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBHYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFdjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gcWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gWWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIFhjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uICRjKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBLYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBaYyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIEpjKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIFFjKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8JGModCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gdHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIGV1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBudSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBpdSh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gcnUodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgb3UodCl9ZnVuY3Rpb24gb3UodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPWl1KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gYXUodCxlKXtmb3IodmFyIG49cnUodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBzdSh0LGUpe2Zvcih2YXIgbj1ydSh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIGx1KHQpe3JldHVybiBmdW5jdGlvbigpe2F1KHRoaXMsdCl9fWZ1bmN0aW9uIGN1KHQpe3JldHVybiBmdW5jdGlvbigpe3N1KHRoaXMsdCl9fWZ1bmN0aW9uIHV1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP2F1OnN1KSh0aGlzLHQpfX1mdW5jdGlvbiBodSgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gZHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBwdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gZnUoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBtdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBndSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIF91KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIHl1KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gdnUoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBidSgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIHh1KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiB3dSgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9b3UucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgU3U9e30sTXU9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChTdT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gRXUodCxlLG4pe3JldHVybiB0PVR1KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gVHUodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1NdTtNdT1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtNdT1yfX19ZnVuY3Rpb24gQ3UodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gQXUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIGt1KHQsZSxuKXt2YXIgaT1TdS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0V1OlR1O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIFB1KHQsZSxuLGkpe3ZhciByPU11O3Quc291cmNlRXZlbnQ9TXUsTXU9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e011PXJ9fWZ1bmN0aW9uIEx1KHQsZSxuKXt2YXIgaT0kYyh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBJdSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBMdSh0aGlzLHQsZSl9fWZ1bmN0aW9uIE51KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEx1KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBSdT1bbnVsbF07ZnVuY3Rpb24gT3UodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24genUoKXtyZXR1cm4gbmV3IE91KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sUnUpfWZ1bmN0aW9uIER1KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgT3UoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBPdShbW3RdXSxSdSl9T3UucHJvdG90eXBlPXp1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6T3Usc2VsZWN0OmZ1bmN0aW9uIEJ1KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1SYyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IE91KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBIdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9emModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IE91KGkscil9LGZpbHRlcjpmdW5jdGlvbiBGdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9RGModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IE91KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gVnUodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/VmM6RmMsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBPdShzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gVXUoKXtyZXR1cm4gbmV3IE91KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKEJjKSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBqdSgpe3JldHVybiBuZXcgT3UodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChCYyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gR3UodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIFd1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IE91KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIHF1KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBZdSh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PVVjKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyBPdShyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gWHUoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uICR1KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBLdSgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gWnUoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIEp1KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIFF1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiB0aCh0LGUpe3ZhciBuPWtjKHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9HYzpqYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP1hjOlljOm4ubG9jYWw/cWM6V2MpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBlaCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/S2M6ImZ1bmN0aW9uIj09dHlwZW9mIGU/SmM6WmMpKHQsZSxudWxsPT1uPyIiOm4pKTpRYyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gbmgodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT90dToiZnVuY3Rpb24iPT10eXBlb2YgZT9udTpldSkodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gaWgodCxlKXt2YXIgbj1pdSh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT1ydSh0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT91dTplP2x1OmN1KShuLGUpKX0sdGV4dDpmdW5jdGlvbiByaCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9odTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/cHU6ZHUpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBvaCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9mdTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/Z3U6bXUpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIGFoKCl7cmV0dXJuIHRoaXMuZWFjaChfdSl9LGxvd2VyOmZ1bmN0aW9uIHNoKCl7cmV0dXJuIHRoaXMuZWFjaCh5dSl9LGFwcGVuZDpmdW5jdGlvbiBsaCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkljKHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBjaCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SWModCksaT1udWxsPT1lP3Z1OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6UmMoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiB1aCgpe3JldHVybiB0aGlzLmVhY2goYnUpfSxjbG9uZTpmdW5jdGlvbiBoaCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD93dTp4dSl9LGRhdHVtOmZ1bmN0aW9uIGRoKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gcGgodCxlLG4pe3ZhciBpLHIsbz1DdSh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9rdTpBdSxudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIGZoKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/TnU6SXUpKHQsZSkpfX07dmFyIG1oPTA7ZnVuY3Rpb24gZ2goKXtyZXR1cm4gbmV3IF9ofWZ1bmN0aW9uIF9oKCl7dGhpcy5fPSJAIisoKyttaCkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIHloKCl7Zm9yKHZhciB0LGU9TXU7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gdmgodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiBiaCh0KXt2YXIgZT15aCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSx2aCh0LGUpfWZ1bmN0aW9uIHhoKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgT3UoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgT3UoW251bGw9PXQ/W106dF0sUnUpfWZ1bmN0aW9uIHdoKHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT15aCgpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIGkscj0wLG89ZT9lLmxlbmd0aDowO3I8bzsrK3IpaWYoKGk9ZVtyXSkuaWRlbnRpZmllcj09PW4pcmV0dXJuIHZoKHQsaSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2goKXtNdS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBNaCgpe011LnByZXZlbnREZWZhdWx0KCksTXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gRWgodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1EdSh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLE1oLCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLE1oLCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBUaCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9RHUodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsTWgsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9pLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBDaCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQWgodCxlLG4saSxyLG8sYSxzLGwsYyl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnN1YmplY3Q9bix0aGlzLmlkZW50aWZpZXI9aSx0aGlzLmFjdGl2ZT1yLHRoaXMueD1vLHRoaXMueT1hLHRoaXMuZHg9cyx0aGlzLmR5PWwsdGhpcy5fPWN9ZnVuY3Rpb24ga2goKXtyZXR1cm4hTXUuY3RybEtleSYmIU11LmJ1dHRvbn1mdW5jdGlvbiBQaCgpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gTGgodCl7cmV0dXJuIG51bGw9PXQ/e3g6TXUueCx5Ok11Lnl9OnR9ZnVuY3Rpb24gSWgoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gTmgoKXt2YXIgdCxlLG4saSxyPWtoLG89UGgsYT1MaCxzPUloLGw9e30sYz13Yygic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGJoLHRoaXMsYXJndW1lbnRzKTthJiYoRHUoTXUudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxFaChNdS52aWV3KSxTaCgpLG49ITEsdD1NdS5jbGllbnRYLGU9TXUuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKE1oKCksIW4pe3ZhciBpPU11LmNsaWVudFgtdCxyPU11LmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe0R1KE11LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLFRoKE11LnZpZXcsbiksTWgoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj1NdS5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksd2gsdGhpcyxhcmd1bWVudHMpKSYmKFNoKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49TXUuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKE1oKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPU11LmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoU2goKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKFB1KG5ldyBBaChkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KE11LnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fVB1KG5ldyBBaChkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q2goISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNoKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNoKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q2goISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH1mdW5jdGlvbiBSaCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gT2godCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gemgoKXt9X2gucHJvdG90eXBlPWdoLnByb3RvdHlwZT17Y29uc3RydWN0b3I6X2gsZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl87IShlIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbZV19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0W3RoaXMuX109ZX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX0sQWgucHJvdG90eXBlLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fLm9uLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpO3JldHVybiB0PT09dGhpcy5fP3RoaXM6dH07dmFyIERoPS43LEJoPTEvRGgsSGg9IlxccyooWystXT9cXGQrKVxccyoiLEZoPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLFZoPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixVaD0vXiMoWzAtOWEtZl17Myw4fSkkLyxqaD1uZXcgUmVnRXhwKCJecmdiXFwoIitbSGgsSGgsSGhdKyJcXCkkIiksR2g9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1ZoLFZoLFZoXSsiXFwpJCIpLFdoPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbSGgsSGgsSGgsRmhdKyJcXCkkIikscWg9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tWaCxWaCxWaCxGaF0rIlxcKSQiKSxZaD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbRmgsVmgsVmhdKyJcXCkkIiksWGg9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tGaCxWaCxWaCxGaF0rIlxcKSQiKSwkaD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBLaCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFpoKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gSmgodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9VWguZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9RaChlKTozPT09bj9uZXcgaWQoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP3RkKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP3RkKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9amguZXhlYyh0KSk/bmV3IGlkKGVbMV0sZVsyXSxlWzNdLDEpOihlPUdoLmV4ZWModCkpP25ldyBpZCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1XaC5leGVjKHQpKT90ZChlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1xaC5leGVjKHQpKT90ZCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1ZaC5leGVjKHQpKT9zZChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVhoLmV4ZWModCkpP3NkKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6JGguaGFzT3duUHJvcGVydHkodCk/UWgoJGhbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBpZChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFFoKHQpe3JldHVybiBuZXcgaWQodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHRkKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgaWQodCxlLG4saSl9ZnVuY3Rpb24gZWQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB6aHx8KHQ9SmgodCkpLHQ/bmV3IGlkKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBpZH1mdW5jdGlvbiBuZCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/ZWQodCk6bmV3IGlkKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBpZCh0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gcmQoKXtyZXR1cm4iIyIrYWQodGhpcy5yKSthZCh0aGlzLmcpK2FkKHRoaXMuYil9ZnVuY3Rpb24gb2QoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBhZCh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHNkKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgdWQodCxlLG4saSl9ZnVuY3Rpb24gbGQodCl7aWYodCBpbnN0YW5jZW9mIHVkKXJldHVybiBuZXcgdWQodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2Ygemh8fCh0PUpoKHQpKSwhdClyZXR1cm4gbmV3IHVkO2lmKHQgaW5zdGFuY2VvZiB1ZClyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IHVkKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gY2QodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2xkKHQpOm5ldyB1ZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gdWQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGhkKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1SaCh6aCxKaCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpLaCxmb3JtYXRIZXg6S2gsZm9ybWF0SHNsOmZ1bmN0aW9uIGRkKCl7cmV0dXJuIGxkKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6WmgsdG9TdHJpbmc6Wmh9KSxSaChpZCxuZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9CaDpNYXRoLnBvdyhCaCx0KSxuZXcgaWQodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/RGg6TWF0aC5wb3coRGgsdCksbmV3IGlkKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6cmQsZm9ybWF0SGV4OnJkLGZvcm1hdFJnYjpvZCx0b1N0cmluZzpvZH0pKSxSaCh1ZCxjZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9CaDpNYXRoLnBvdyhCaCx0KSxuZXcgdWQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9EaDpNYXRoLnBvdyhEaCx0KSxuZXcgdWQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBpZChoZCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxoZCh0LHIsaSksaGQodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgcGQ9TWF0aC5QSS8xODAsZmQ9MTgwL01hdGguUEksbWQ9Ljk2NDIyLGdkPS44MjUyMSxfZD00LzI5LHlkPTYvMjksdmQ9Myp5ZCp5ZDtmdW5jdGlvbiBiZCh0KXtpZih0IGluc3RhbmNlb2Ygd2QpcmV0dXJuIG5ldyB3ZCh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBrZClyZXR1cm4gUGQodCk7dCBpbnN0YW5jZW9mIGlkfHwodD1lZCh0KSk7dmFyIGUsbixpPVRkKHQucikscj1UZCh0LmcpLG89VGQodC5iKSxhPVNkKCguMjIyNTA0NSppKy43MTY4Nzg2KnIrLjA2MDYxNjkqbykvMSk7cmV0dXJuIGk9PT1yJiZyPT09bz9lPW49YTooZT1TZCgoLjQzNjA3NDcqaSsuMzg1MDY0OSpyKy4xNDMwODA0Km8pL21kKSxuPVNkKCguMDEzOTMyMippKy4wOTcxMDQ1KnIrLjcxNDE3MzMqbykvZ2QpKSxuZXcgd2QoMTE2KmEtMTYsNTAwKihlLWEpLDIwMCooYS1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHhkKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9iZCh0KTpuZXcgd2QodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHdkKHQsZSxuLGkpe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBTZCh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L3ZkK19kfWZ1bmN0aW9uIE1kKHQpe3JldHVybiB0PnlkP3QqdCp0OnZkKih0LV9kKX1mdW5jdGlvbiBFZCh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIFRkKHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIENkKHQpe2lmKHQgaW5zdGFuY2VvZiBrZClyZXR1cm4gbmV3IGtkKHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHdkfHwodD1iZCh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IGtkKE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKmZkO3JldHVybiBuZXcga2QoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gQWQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0NkKHQpOm5ldyBrZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24ga2QodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFBkKHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyB3ZCh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKnBkO3JldHVybiBuZXcgd2QodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1SaCh3ZCx4ZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB3ZCh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHdkKHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBpZChFZCgzLjEzMzg1NjEqKGU9bWQqTWQoZSkpLTEuNjE2ODY2NyoodD0xKk1kKHQpKS0uNDkwNjE0Nioobj1nZCpNZChuKSkpLEVkKC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksRWQoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxSaChrZCxBZCxPaCh6aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrZCh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGtkKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIFBkKHRoaXMpLnJnYigpfX0pKTt2YXIgTGQ9LS4xNDg2MSxJZD0xLjc4Mjc3LE5kPS0uMjkyMjcsUmQ9LS45MDY0OSxPZD0xLjk3Mjk0LHpkPU9kKlJkLERkPU9kKklkLEJkPUlkKk5kLVJkKkxkO2Z1bmN0aW9uIEhkKHQpe2lmKHQgaW5zdGFuY2VvZiBWZClyZXR1cm4gbmV3IFZkKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIGlkfHwodD1lZCh0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oQmQqbit6ZCoodC5yLzI1NSktRGQqZSkvLTUuOTYxNTEyMjkxMixyPW4taSxvPShPZCooZS1pKS1OZCpyKS9SZCxhPU1hdGguc3FydChvKm8rcipyKS8oT2QqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSpmZC0xMjA6TmFOO3JldHVybiBuZXcgVmQoczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gRmQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0hkKHQpOm5ldyBWZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gVmQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFVkKHQsZSxuLGkscil7dmFyIG89dCp0LGE9byp0O3JldHVybigoMS0zKnQrMypvLWEpKmUrKDQtNipvKzMqYSkqbisoMSszKnQrMypvLTMqYSkqaSthKnIpLzZ9ZnVuY3Rpb24gamQodCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLHI9dFtpXSxvPXRbaSsxXTtyZXR1cm4gVWQoKG4taS9lKSplLGk+MD90W2ktMV06MipyLW8scixvLGk8ZS0xP3RbaSsyXToyKm8tcil9fWZ1bmN0aW9uIEdkKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1NYXRoLmZsb29yKCgobiU9MSk8MD8rK246bikqZSk7cmV0dXJuIFVkKChuLWkvZSkqZSx0WyhpK2UtMSklZV0sdFtpJWVdLHRbKGkrMSklZV0sdFsoaSsyKSVlXSl9fWZ1bmN0aW9uIFdkKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBxZCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIFlkKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP3FkKHQsbj4xODB8fG48LTE4MD9uLTM2MCpNYXRoLnJvdW5kKG4vMzYwKTpuKTpXZChpc05hTih0KT9lOnQpfWZ1bmN0aW9uIFhkKHQpe3JldHVybiAxPT0odD0rdCk/JGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6V2QoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gJGQodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/cWQodCxuKTpXZChpc05hTih0KT9lOnQpfVJoKFZkLEZkLE9oKHpoLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0JoOk1hdGgucG93KEJoLHQpLG5ldyBWZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0RoOk1hdGgucG93KERoLHQpLG5ldyBWZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqcGQsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IGlkKDI1NSooZStuKihMZCppK0lkKnIpKSwyNTUqKGUrbiooTmQqaStSZCpyKSksMjU1KihlK24qKE9kKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgS2Q9KGZ1bmN0aW9uIHQoZSl7dmFyIG49WGQoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9bmQodCkpLnIsKGU9bmQoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT0kZCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIFpkKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixpLHI9ZS5sZW5ndGgsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocikscz1uZXcgQXJyYXkocik7Zm9yKG49MDtuPHI7KytuKWk9bmQoZVtuXSksb1tuXT1pLnJ8fDAsYVtuXT1pLmd8fDAsc1tuXT1pLmJ8fDA7cmV0dXJuIG89dChvKSxhPXQoYSkscz10KHMpLGkub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiBpLnI9byh0KSxpLmc9YSh0KSxpLmI9cyh0KSxpKyIifX19dmFyIEpkPVpkKGpkKSxRZD1aZChHZCk7ZnVuY3Rpb24gdHAodCxlKXtlfHwoZT1bXSk7dmFyIG4saT10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLHI9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihvKXtmb3Iobj0wO248aTsrK24pcltuXT10W25dKigxLW8pK2Vbbl0qbztyZXR1cm4gcn19ZnVuY3Rpb24gZXAodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIG5wKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09Y3AodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBpcCh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gcnAodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gb3AodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPWNwKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIGFwPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxzcD1uZXcgUmVnRXhwKGFwLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIGxwKHQsZSl7dmFyIG4saSxyLG89YXAubGFzdEluZGV4PXNwLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1hcC5leGVjKHQpKSYmKGk9c3AuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OnJwKG4saSl9KSksbz1zcC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gY3AodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP1dkKGUpOigibnVtYmVyIj09PWk/cnA6InN0cmluZyI9PT1pPyhuPUpoKGUpKT8oZT1uLEtkKTpscDplIGluc3RhbmNlb2YgSmg/S2Q6ZSBpbnN0YW5jZW9mIERhdGU/aXA6ZXAoZSk/dHA6QXJyYXkuaXNBcnJheShlKT9ucDoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/b3A6cnApKHQsZSl9ZnVuY3Rpb24gdXAodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19dmFyIGhwLGRwLHBwLGZwLG1wPTE4MC9NYXRoLlBJLGdwPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIF9wKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKm1wLHNrZXdYOk1hdGguYXRhbihsKSptcCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24geXAodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpycCh0LHIpfSx7aTpsLTIseDpycChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OnJwKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpycCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6cnAodCxuKX0se2k6cy0yLHg6cnAoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIHZwPXlwKChmdW5jdGlvbiBicCh0KXtyZXR1cm4ibm9uZSI9PT10P2dwOihocHx8KGhwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGRwPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxwcD1kb2N1bWVudC5kZWZhdWx0VmlldyksaHAuc3R5bGUudHJhbnNmb3JtPXQsdD1wcC5nZXRDb21wdXRlZFN0eWxlKGRwLmFwcGVuZENoaWxkKGhwKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxkcC5yZW1vdmVDaGlsZChocCksX3AoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHhwPXlwKChmdW5jdGlvbiB3cCh0KXtyZXR1cm4gbnVsbD09dD9ncDooZnB8fChmcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxmcC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9ZnAudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/X3AoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6Z3ApfSksIiwgIiwiKSIsIikiKSxTcD1NYXRoLlNRUlQyO2Z1bmN0aW9uIE1wKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIEVwKHQsZSl7dmFyIG4saSxyPXRbMF0sbz10WzFdLGE9dFsyXSxzPWVbMl0sbD1lWzBdLXIsYz1lWzFdLW8sdT1sKmwrYypjO2lmKHU8MWUtMTIpaT1NYXRoLmxvZyhzL2EpL1NwLG49ZnVuY3Rpb24odCl7cmV0dXJuW3IrdCpsLG8rdCpjLGEqTWF0aC5leHAoU3AqdCppKV19O2Vsc2V7dmFyIGg9TWF0aC5zcXJ0KHUpLGQ9KHMqcy1hKmErNCp1KS8oMiphKjIqaCkscD0ocypzLWEqYS00KnUpLygyKnMqMipoKSxmPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCksbT1NYXRoLmxvZyhNYXRoLnNxcnQocCpwKzEpLXApO2k9KG0tZikvU3Asbj1mdW5jdGlvbih0KXt2YXIgZT10Kmksbj1NcChmKSxzPWEvKDIqaCkqKG4qKGZ1bmN0aW9uIHUodCl7cmV0dXJuKCh0PU1hdGguZXhwKDIqdCkpLTEpLyh0KzEpfSkoU3AqZStmKS0oZnVuY3Rpb24gZCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn0pKGYpKTtyZXR1cm5bcitzKmwsbytzKmMsYSpuL01wKFNwKmUrZildfX1yZXR1cm4gbi5kdXJhdGlvbj0xZTMqaSxufWZ1bmN0aW9uIFRwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9Y2QoZSkpLmgsKG49Y2QobikpLmgpLHI9JGQoZS5zLG4ucyksbz0kZChlLmwsbi5sKSxhPSRkKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5zPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBDcD1UcChZZCksQXA9VHAoJGQpO2Z1bmN0aW9uIGtwKHQsZSl7dmFyIG49JGQoKHQ9eGQodCkpLmwsKGU9eGQoZSkpLmwpLGk9JGQodC5hLGUuYSkscj0kZCh0LmIsZS5iKSxvPSRkKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWkoZSksdC5iPXIoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19ZnVuY3Rpb24gUHAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dCgoZT1BZChlKSkuaCwobj1BZChuKSkuaCkscj0kZChlLmMsbi5jKSxvPSRkKGUubCxuLmwpLGE9JGQoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9aSh0KSxlLmM9cih0KSxlLmw9byh0KSxlLm9wYWNpdHk9YSh0KSxlKyIifX19dmFyIExwPVBwKFlkKSxJcD1QcCgkZCk7ZnVuY3Rpb24gTnAodCl7cmV0dXJuKGZ1bmN0aW9uIGUobil7ZnVuY3Rpb24gaShlLGkpe3ZhciByPXQoKGU9RmQoZSkpLmgsKGk9RmQoaSkpLmgpLG89JGQoZS5zLGkucyksYT0kZChlLmwsaS5sKSxzPSRkKGUub3BhY2l0eSxpLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5zPW8odCksZS5sPWEoTWF0aC5wb3codCxuKSksZS5vcGFjaXR5PXModCksZSsiIn19cmV0dXJuIG49K24saS5nYW1tYT1lLGl9KSgxKX12YXIgUnA9TnAoWWQpLE9wPU5wKCRkKTt2YXIgenAsRHAsQnA9MCxIcD0wLEZwPTAsVnA9MCxVcD0wLGpwPTAsR3A9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsV3A9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gcXAoKXtyZXR1cm4gVXB8fChXcChZcCksVXA9R3Aubm93KCkranApfWZ1bmN0aW9uIFlwKCl7VXA9MH1mdW5jdGlvbiBYcCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gJHAodCxlLG4pe3ZhciBpPW5ldyBYcDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIEtwKCl7cXAoKSwrK0JwO2Zvcih2YXIgdCxlPXpwO2U7KSh0PVVwLWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1CcH1mdW5jdGlvbiBacCgpe1VwPShWcD1HcC5ub3coKSkranAsQnA9SHA9MDt0cnl7S3AoKX1maW5hbGx5e0JwPTAsKGZ1bmN0aW9uIHQoKXt2YXIgdCxlLG49enAsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6enA9ZSk7RHA9dCxRcChpKX0pKCksVXA9MH19ZnVuY3Rpb24gSnAoKXt2YXIgdD1HcC5ub3coKSxlPXQtVnA7ZT4xZTMmJihqcC09ZSxWcD10KX1mdW5jdGlvbiBRcCh0KXtCcHx8KEhwJiYoSHA9Y2xlYXJUaW1lb3V0KEhwKSksdC1VcD4yND8odDwxLzAmJihIcD1zZXRUaW1lb3V0KFpwLHQtR3Aubm93KCktanApKSxGcCYmKEZwPWNsZWFySW50ZXJ2YWwoRnApKSk6KEZwfHwoVnA9R3Aubm93KCksRnA9c2V0SW50ZXJ2YWwoSnAsMWUzKSksQnA9MSxXcChacCkpKX1mdW5jdGlvbiB0Zih0LGUsbil7dmFyIGk9bmV3IFhwO3JldHVybiBpLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe2kuc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLGl9WHAucHJvdG90eXBlPSRwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WHAscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP3FwKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fERwPT09dGhpc3x8KERwP0RwLl9uZXh0PXRoaXM6enA9dGhpcyxEcD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLFFwKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLFFwKCkpfX07dmFyIGVmPXdjKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLG5mPVtdO2Z1bmN0aW9uIHJmKHQsZSxuLGkscixvKXt2YXIgYT10Ll9fdHJhbnNpdGlvbjtpZihhKXtpZihuIGluIGEpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IShmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIG8odCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZhKHQtbi5kZWxheSl9ZnVuY3Rpb24gYShvKXt2YXIgYyx1LGgsZDtpZigxIT09bi5zdGF0ZSlyZXR1cm4gbCgpO2ZvcihjIGluIHIpaWYoKGQ9cltjXSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWQuc3RhdGUpcmV0dXJuIHRmKGEpOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSl9aWYodGYoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9JHAobywwLG4udGltZSl9KSh0LG4se25hbWU6ZSxpbmRleDppLGdyb3VwOnIsb246ZWYsdHdlZW46bmYsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIG9mKHQsZSl7dmFyIG49c2YodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhZih0LGUpe3ZhciBuPXNmKHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIHNmKHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gbGYodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBjZih0LGUpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9YWYodGhpcyx0KSxvPXIudHdlZW47aWYobyE9PW4pZm9yKHZhciBhPTAscz0oaT1uPW8pLmxlbmd0aDthPHM7KythKWlmKGlbYV0ubmFtZT09PWUpeyhpPWkuc2xpY2UoKSkuc3BsaWNlKGEsMSk7YnJlYWt9ci50d2Vlbj1pfX1mdW5jdGlvbiB1Zih0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89YWYodGhpcyx0KSxhPW8udHdlZW47aWYoYSE9PWkpe3I9KGk9YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKWlmKHJbbF0ubmFtZT09PWUpe3JbbF09czticmVha31sPT09YyYmci5wdXNoKHMpfW8udHdlZW49cn19ZnVuY3Rpb24gaGYodCxlLG4pe3ZhciBpPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9YWYodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxpKS52YWx1ZVtlXX19ZnVuY3Rpb24gZGYodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP3JwOmUgaW5zdGFuY2VvZiBKaD9LZDoobj1KaChlKSk/KGU9bixLZCk6bHApKHQsZSl9ZnVuY3Rpb24gcGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGZmKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gbWYodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gZ2YodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIF9mKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHlmKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gdmYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIGJmKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24geGYodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZiZih0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gd2YodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZ2Zih0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gU2YodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtvZih0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gTWYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe29mKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gRWYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXthZih0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gVGYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2FmKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gQ2YodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7YWYodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIEFmKHQsZSxuKXt2YXIgaSxyLG89KGZ1bmN0aW9uIGEodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfSkoZSk/b2Y6YWY7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIGtmPXp1LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBQZih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBMZih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxpKSxuKX19ZnVuY3Rpb24gSWYodCxlLG4pe3ZhciBpLHI7ZnVuY3Rpb24gbygpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09ciYmKGk9KHI9bykmJkxmKHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIE5mKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBSZih0KXt2YXIgZSxuO2Z1bmN0aW9uIGkoKXt2YXIgaT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PW4mJihlPShuPWkpJiZOZihpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciBPZj0wO2Z1bmN0aW9uIHpmKHQsZSxuLGkpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9aX1mdW5jdGlvbiBEZih0KXtyZXR1cm4genUoKS50cmFuc2l0aW9uKHQpfWZ1bmN0aW9uIEJmKCl7cmV0dXJuKytPZn12YXIgSGY9enUucHJvdG90eXBlO2Z1bmN0aW9uIEZmKHQpe3JldHVybit0fWZ1bmN0aW9uIFZmKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gVWYodCl7cmV0dXJuIHQqKDItdCl9ZnVuY3Rpb24gamYodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQ6LS10KigyLXQpKzEpLzJ9ZnVuY3Rpb24gR2YodCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIFdmKHQpe3JldHVybi0tdCp0KnQrMX1mdW5jdGlvbiBxZih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn16Zi5wcm90b3R5cGU9RGYucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp6ZixzZWxlY3Q6ZnVuY3Rpb24gWWYodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1SYyh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLHJmKGhbZF0sZSxuLGQsaCxzZihzLG4pKSk7cmV0dXJuIG5ldyB6ZihvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFhmKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9emModCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPVtdLGE9W10scz0wO3M8cjsrK3MpZm9yKHZhciBsLGM9aVtzXSx1PWMubGVuZ3RoLGg9MDtoPHU7KytoKWlmKGw9Y1toXSl7Zm9yKHZhciBkLHA9dC5jYWxsKGwsbC5fX2RhdGFfXyxoLGMpLGY9c2YobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZyZihkLGUsbixtLHAsZik7by5wdXNoKHApLGEucHVzaChsKX1yZXR1cm4gbmV3IHpmKG8sYSxlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24gJGYodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PURjKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyB6ZihpLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIEtmKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IHpmKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIFpmKCl7cmV0dXJuIG5ldyBrZih0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gSmYoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49QmYoKSxpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihhPXNbY10pe3ZhciB1PXNmKGEsZSk7cmYoYSx0LG4sYyxzLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyB6ZihpLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDpIZi5jYWxsLG5vZGVzOkhmLm5vZGVzLG5vZGU6SGYubm9kZSxzaXplOkhmLnNpemUsZW1wdHk6SGYuZW1wdHksZWFjaDpIZi5lYWNoLG9uOmZ1bmN0aW9uIFFmKHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9zZih0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2goQWYobix0LGUpKX0sYXR0cjpmdW5jdGlvbiB0bSh0LGUpe3ZhciBuPWtjKHQpLGk9InRyYW5zZm9ybSI9PT1uP3hwOmRmO3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3lmOl9mKShuLGksaGYodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/ZmY6cGYpKG4pOihuLmxvY2FsP2dmOm1mKShuLGksZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24gZW0odCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciBpPWtjKHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/eGY6d2YpKGksZSkpfSxzdHlsZTpmdW5jdGlvbiBubSh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/dnA6ZGY7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHIodCxlKXt2YXIgbixpLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89UWModGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLFFjKHRoaXMsdCkpO3JldHVybiBvPT09YT9udWxsOm89PT1uJiZhPT09aT9yOnI9ZShuPW8saT1hKX19KSh0LGkpKS5vbigiZW5kLnN0eWxlLiIrdCxQZih0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1RYyh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1RYyh0aGlzLHQpKSxhPT09bD9udWxsOmE9PT1pJiZsPT09cj9vOihyPWwsbz1lKGk9YSxzKSl9fSkodCxpLGhmKHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIG8odCxlKXt2YXIgbixpLHIsbyxhPSJzdHlsZS4iK2Uscz0iZW5kLiIrYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1hZih0aGlzLHQpLGM9bC5vbix1PW51bGw9PWwudmFsdWVbYV0/b3x8KG89UGYoZSkpOnZvaWQgMDtjPT09biYmcj09PXV8fChpPShuPWMpLmNvcHkoKSkub24ocyxyPXUpLGwub249aX19KSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPVFjKHRoaXMsdCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX0pKHQsaSxlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiBpbSh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxJZih0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gcm0odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSkoaGYodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIG9tKHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxSZih0KSl9LHJlbW92ZTpmdW5jdGlvbiBhbSgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBzbSh0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpLHI9c2YodGhpcy5ub2RlKCksbikudHdlZW4sbz0wLGE9ci5sZW5ndGg7bzxhOysrbylpZigoaT1yW29dKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP2NmOnVmKShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiBsbSh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1NmOk1mKShlLHQpKTpzZih0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gY20odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9FZjpUZikoZSx0KSk6c2YodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gdW0odCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKENmKGUsdCkpOnNmKHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBobSgpe3ZhciB0LGUsbj10aGlzLGk9bi5faWQscj1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8sYSl7dmFyIHM9e3ZhbHVlOmF9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1yJiZvKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49YWYodGhpcyxpKSxyPW4ub247ciE9PXQmJigoZT0odD1yKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChsKSksbi5vbj1lfSkpfSkpfX07dmFyIGRtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIE1hdGgucG93KHQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSxwbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCxlKX1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLGZtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LGUpOjItTWF0aC5wb3coMi10LGUpKS8yfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksbW09TWF0aC5QSSxnbT1tbS8yO2Z1bmN0aW9uIF9tKHQpe3JldHVybiAxPT0rdD8xOjEtTWF0aC5jb3ModCpnbSl9ZnVuY3Rpb24geW0odCl7cmV0dXJuIE1hdGguc2luKHQqZ20pfWZ1bmN0aW9uIHZtKHQpe3JldHVybigxLU1hdGguY29zKG1tKnQpKS8yfWZ1bmN0aW9uIGJtKHQpe3JldHVybiAxLjAwMDk3NzUxNzEwNjU0OTQqKE1hdGgucG93KDIsLTEwKnQpLS4wMDA5NzY1NjI1KX1mdW5jdGlvbiB4bSh0KXtyZXR1cm4gYm0oMS0rdCl9ZnVuY3Rpb24gd20odCl7cmV0dXJuIDEtYm0odCl9ZnVuY3Rpb24gU20odCl7cmV0dXJuKCh0Kj0yKTw9MT9ibSgxLXQpOjItYm0odC0xKSkvMn1mdW5jdGlvbiBNbSh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIEVtKHQpe3JldHVybiBNYXRoLnNxcnQoMS0gLS10KnQpfWZ1bmN0aW9uIFRtKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBDbT00LzExLEFtPTcuNTYyNTtmdW5jdGlvbiBrbSh0KXtyZXR1cm4gMS1QbSgxLXQpfWZ1bmN0aW9uIFBtKHQpe3JldHVybih0PSt0KTxDbT9BbSp0KnQ6dDwuNzI3MjcyNzI3MjcyNzI3Mz9BbSoodC09LjU0NTQ1NDU0NTQ1NDU0NTQpKnQrLjc1OnQ8LjkwOTA5MDkwOTA5MDkwOTE/QW0qKHQtPS44MTgxODE4MTgxODE4MTgyKSp0Ky45Mzc1OkFtKih0LT0uOTU0NTQ1NDU0NTQ1NDU0NikqdCsuOTg0Mzc1fWZ1bmN0aW9uIExtKHQpe3JldHVybigodCo9Mik8PTE/MS1QbSgxLXQpOlBtKHQtMSkrMSkvMn12YXIgSW09MS43MDE1OCxObT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybih0PSt0KSp0KihlKih0LTEpK3QpfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKEltKSxSbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybi0tdCp0KigodCsxKSplK3QpKzF9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoSW0pLE9tPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTwxP3QqdCooKGUrMSkqdC1lKToodC09MikqdCooKGUrMSkqdCtlKSsyKS8yfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKEltKSx6bT0yKk1hdGguUEksRG09KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPXptKTtmdW5jdGlvbiByKHQpe3JldHVybiBlKmJtKC0gLS10KSpNYXRoLnNpbigoaS10KS9uKX1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKnptKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLEJtPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz16bSk7ZnVuY3Rpb24gcih0KXtyZXR1cm4gMS1lKmJtKHQ9K3QpKk1hdGguc2luKCh0K2kpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qem0pfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksSG09KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPXptKTtmdW5jdGlvbiByKHQpe3JldHVybigodD0yKnQtMSk8MD9lKmJtKC10KSpNYXRoLnNpbigoaS10KS9uKToyLWUqYm0odCkqTWF0aC5zaW4oKGkrdCkvbikpLzJ9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbip6bSl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKSxGbT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxlYXNlTGluZWFyOkZmLGVhc2VRdWFkOmpmLGVhc2VRdWFkSW46VmYsZWFzZVF1YWRPdXQ6VWYsZWFzZVF1YWRJbk91dDpqZixlYXNlQ3ViaWM6cWYsZWFzZUN1YmljSW46R2YsZWFzZUN1YmljT3V0OldmLGVhc2VDdWJpY0luT3V0OnFmLGVhc2VQb2x5OmZtLGVhc2VQb2x5SW46ZG0sZWFzZVBvbHlPdXQ6cG0sZWFzZVBvbHlJbk91dDpmbSxlYXNlU2luOnZtLGVhc2VTaW5JbjpfbSxlYXNlU2luT3V0OnltLGVhc2VTaW5Jbk91dDp2bSxlYXNlRXhwOlNtLGVhc2VFeHBJbjp4bSxlYXNlRXhwT3V0OndtLGVhc2VFeHBJbk91dDpTbSxlYXNlQ2lyY2xlOlRtLGVhc2VDaXJjbGVJbjpNbSxlYXNlQ2lyY2xlT3V0OkVtLGVhc2VDaXJjbGVJbk91dDpUbSxlYXNlQm91bmNlOlBtLGVhc2VCb3VuY2VJbjprbSxlYXNlQm91bmNlT3V0OlBtLGVhc2VCb3VuY2VJbk91dDpMbSxlYXNlQmFjazpPbSxlYXNlQmFja0luOk5tLGVhc2VCYWNrT3V0OlJtLGVhc2VCYWNrSW5PdXQ6T20sZWFzZUVsYXN0aWM6Qm0sZWFzZUVsYXN0aWNJbjpEbSxlYXNlRWxhc3RpY091dDpCbSxlYXNlRWxhc3RpY0luT3V0OkhtfSksVm09e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOnFmfTtmdW5jdGlvbiBVbSh0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBWbS50aW1lPXFwKCksVm07cmV0dXJuIG59enUucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBqbSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2xmKHRoaXMsdCl9KSl9LHp1LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIEdtKHQpe3ZhciBlLG47dCBpbnN0YW5jZW9mIHpmPyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9QmYoKSwobj1WbSkudGltZT1xcCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJnJmKGEsdCxlLGMscyxufHxVbShhLGUpKTtyZXR1cm4gbmV3IHpmKGksdGhpcy5fcGFyZW50cyx0LGUpfTt2YXIgV209W251bGxdO2Z1bmN0aW9uIHFtKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBZbSh0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnNlbGVjdGlvbj1ufWZ1bmN0aW9uIFhtKCl7TXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gJG0oKXtNdS5wcmV2ZW50RGVmYXVsdCgpLE11LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfXZhciBLbT17bmFtZToiZHJhZyJ9LFptPXtuYW1lOiJzcGFjZSJ9LEptPXtuYW1lOiJoYW5kbGUifSxRbT17bmFtZToiY2VudGVyIn07ZnVuY3Rpb24gdGcodCl7cmV0dXJuWyt0WzBdLCt0WzFdXX1mdW5jdGlvbiBlZyh0KXtyZXR1cm5bdGcodFswXSksdGcodFsxXSldfWZ1bmN0aW9uIG5nKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gd2goZSxNdS50b3VjaGVzLHQpfX12YXIgaWc9e25hbWU6IngiLGhhbmRsZXM6WyJ3IiwiZSJdLm1hcChoZyksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbK3RbMF0sZVswXVsxXV0sWyt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LHJnPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoaGcpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/bnVsbDpbW2VbMF1bMF0sK3RbMF1dLFtlWzFdWzBdLCt0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxvZz17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwidyIsImUiLCJzIiwibnciLCJuZSIsInN3Iiwic2UiXS5tYXAoaGcpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P251bGw6ZWcodCl9LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH19LGFnPXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxzZz17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sbGc9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LGNnPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LHVnPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjotMSxlOm51bGwsczoxLHc6bnVsbCxudzotMSxuZTotMSxzZToxLHN3OjF9O2Z1bmN0aW9uIGhnKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGRnKCl7cmV0dXJuIU11LmN0cmxLZXkmJiFNdS5idXR0b259ZnVuY3Rpb24gcGcoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyh0PXQudmlld0JveC5iYXNlVmFsKS54LHQueV0sW3QueCt0LndpZHRoLHQueSt0LmhlaWdodF1dOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXX1mdW5jdGlvbiBmZygpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBtZyh0KXtmb3IoOyF0Ll9fYnJ1c2g7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gdC5fX2JydXNofWZ1bmN0aW9uIGdnKHQpe3JldHVybiB0WzBdWzBdPT09dFsxXVswXXx8dFswXVsxXT09PXRbMV1bMV19ZnVuY3Rpb24gX2codCl7dmFyIGU9dC5fX2JydXNoO3JldHVybiBlP2UuZGltLm91dHB1dChlLnNlbGVjdGlvbik6bnVsbH1mdW5jdGlvbiB5Zygpe3JldHVybiBiZyhyZyl9ZnVuY3Rpb24gdmcoKXtyZXR1cm4gYmcob2cpfWZ1bmN0aW9uIGJnKHQpe3ZhciBlLG49cGcsaT1kZyxyPWZnLG89ITAsYT13Yygic3RhcnQiLCJicnVzaCIsImVuZCIpLHM9NjtmdW5jdGlvbiBsKGUpe3ZhciBuPWUucHJvcGVydHkoIl9fYnJ1c2giLG0pLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFtoZygib3ZlcmxheSIpXSk7bi5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwib3ZlcmxheSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigiY3Vyc29yIixhZy5vdmVybGF5KS5tZXJnZShuKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW1nKHRoaXMpLmV4dGVudDtEdSh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksZS5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtoZygic2VsZWN0aW9uIildKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwic2VsZWN0aW9uIikuYXR0cigiY3Vyc29yIixhZy5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgaT1lLnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEodC5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO2kuZXhpdCgpLnJlbW92ZSgpLGkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gYWdbdC50eXBlXX0pKSxlLmVhY2goYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLGQpLmZpbHRlcihyKS5vbigidG91Y2hzdGFydC5icnVzaCIsZCkub24oInRvdWNobW92ZS5icnVzaCIscCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixmKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gYygpe3ZhciB0PUR1KHRoaXMpLGU9bWcodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1zLzI6ZVswXVswXS1zLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLXMvMjplWzBdWzFdLXMvMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStzOnN9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK3M6c30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIHUodCxlLG4pe3ZhciBpPXQuX19icnVzaC5lbWl0dGVyO3JldHVybiFpfHxuJiZpLmNsZWFuP25ldyBoKHQsZSxuKTppfWZ1bmN0aW9uIGgodCxlLG4pe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTAsdGhpcy5jbGVhbj1ufWZ1bmN0aW9uIGQoKXtpZigoIWV8fE11LnRvdWNoZXMpJiZpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG4scixhLHMsbCxoLGQscCxmLG0sZyxfPXRoaXMseT1NdS50YXJnZXQuX19kYXRhX18udHlwZSx2PSJzZWxlY3Rpb24iPT09KG8mJk11Lm1ldGFLZXk/eT0ib3ZlcmxheSI6eSk/S206byYmTXUuYWx0S2V5P1FtOkptLGI9dD09PXJnP251bGw6Y2dbeV0seD10PT09aWc/bnVsbDp1Z1t5XSx3PW1nKF8pLFM9dy5leHRlbnQsTT13LnNlbGVjdGlvbixFPVNbMF1bMF0sVD1TWzBdWzFdLEM9U1sxXVswXSxBPVNbMV1bMV0saz0wLFA9MCxMPWImJngmJm8mJk11LnNoaWZ0S2V5LEk9TXUudG91Y2hlcz9uZyhNdS5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyKTpiaCxOPUkoXyksUj1OLE89dShfLGFyZ3VtZW50cywhMCkuYmVmb3Jlc3RhcnQoKTsib3ZlcmxheSI9PT15PyhNJiYoZj0hMCksdy5zZWxlY3Rpb249TT1bW249dD09PXJnP0U6TlswXSxhPXQ9PT1pZz9UOk5bMV1dLFtsPXQ9PT1yZz9DOm4sZD10PT09aWc/QTphXV0pOihuPU1bMF1bMF0sYT1NWzBdWzFdLGw9TVsxXVswXSxkPU1bMV1bMV0pLHI9bixzPWEsaD1sLHA9ZDt2YXIgej1EdShfKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxEPXouc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIsYWdbeV0pO2lmKE11LnRvdWNoZXMpTy5tb3ZlZD1ILE8uZW5kZWQ9VjtlbHNle3ZhciBCPUR1KE11LnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEgsITApLm9uKCJtb3VzZXVwLmJydXNoIixWLCEwKTtvJiZCLm9uKCJrZXlkb3duLmJydXNoIixVLCEwKS5vbigia2V5dXAuYnJ1c2giLGosITApLEVoKE11LnZpZXcpfVhtKCksbGYoXyksYy5jYWxsKF8pLE8uc3RhcnQoKX1mdW5jdGlvbiBIKCl7dmFyIHQ9SShfKTshTHx8bXx8Z3x8KE1hdGguYWJzKHRbMF0tUlswXSk+TWF0aC5hYnModFsxXS1SWzFdKT9nPSEwOm09ITApLFI9dCxmPSEwLCRtKCksRigpfWZ1bmN0aW9uIEYoKXt2YXIgdDtzd2l0Y2goaz1SWzBdLU5bMF0sUD1SWzFdLU5bMV0sdil7Y2FzZSBabTpjYXNlIEttOmImJihrPU1hdGgubWF4KEUtbixNYXRoLm1pbihDLWwsaykpLHI9bitrLGg9bCtrKSx4JiYoUD1NYXRoLm1heChULWEsTWF0aC5taW4oQS1kLFApKSxzPWErUCxwPWQrUCk7YnJlYWs7Y2FzZSBKbTpiPDA/KGs9TWF0aC5tYXgoRS1uLE1hdGgubWluKEMtbixrKSkscj1uK2ssaD1sKTpiPjAmJihrPU1hdGgubWF4KEUtbCxNYXRoLm1pbihDLWwsaykpLHI9bixoPWwraykseDwwPyhQPU1hdGgubWF4KFQtYSxNYXRoLm1pbihBLWEsUCkpLHM9YStQLHA9ZCk6eD4wJiYoUD1NYXRoLm1heChULWQsTWF0aC5taW4oQS1kLFApKSxzPWEscD1kK1ApO2JyZWFrO2Nhc2UgUW06YiYmKHI9TWF0aC5tYXgoRSxNYXRoLm1pbihDLG4taypiKSksaD1NYXRoLm1heChFLE1hdGgubWluKEMsbCtrKmIpKSkseCYmKHM9TWF0aC5tYXgoVCxNYXRoLm1pbihBLGEtUCp4KSkscD1NYXRoLm1heChULE1hdGgubWluKEEsZCtQKngpKSl9aDxyJiYoYio9LTEsdD1uLG49bCxsPXQsdD1yLHI9aCxoPXQseSBpbiBzZyYmRC5hdHRyKCJjdXJzb3IiLGFnW3k9c2dbeV1dKSkscDxzJiYoeCo9LTEsdD1hLGE9ZCxkPXQsdD1zLHM9cCxwPXQseSBpbiBsZyYmRC5hdHRyKCJjdXJzb3IiLGFnW3k9bGdbeV1dKSksdy5zZWxlY3Rpb24mJihNPXcuc2VsZWN0aW9uKSxtJiYocj1NWzBdWzBdLGg9TVsxXVswXSksZyYmKHM9TVswXVsxXSxwPU1bMV1bMV0pLE1bMF1bMF09PT1yJiZNWzBdWzFdPT09cyYmTVsxXVswXT09PWgmJk1bMV1bMV09PT1wfHwody5zZWxlY3Rpb249W1tyLHNdLFtoLHBdXSxjLmNhbGwoXyksTy5icnVzaCgpKX1mdW5jdGlvbiBWKCl7aWYoWG0oKSxNdS50b3VjaGVzKXtpZihNdS50b3VjaGVzLmxlbmd0aClyZXR1cm47ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSw1MDApfWVsc2UgVGgoTXUudmlldyxmKSxCLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTt6LmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksRC5hdHRyKCJjdXJzb3IiLGFnLm92ZXJsYXkpLHcuc2VsZWN0aW9uJiYoTT13LnNlbGVjdGlvbiksZ2coTSkmJih3LnNlbGVjdGlvbj1udWxsLGMuY2FsbChfKSksTy5lbmQoKX1mdW5jdGlvbiBVKCl7c3dpdGNoKE11LmtleUNvZGUpe2Nhc2UgMTY6TD1iJiZ4O2JyZWFrO2Nhc2UgMTg6dj09PUptJiYoYiYmKGw9aC1rKmIsbj1yK2sqYikseCYmKGQ9cC1QKngsYT1zK1AqeCksdj1RbSxGKCkpO2JyZWFrO2Nhc2UgMzI6diE9PUptJiZ2IT09UW18fChiPDA/bD1oLWs6Yj4wJiYobj1yLWspLHg8MD9kPXAtUDp4PjAmJihhPXMtUCksdj1abSxELmF0dHIoImN1cnNvciIsYWcuc2VsZWN0aW9uKSxGKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufSRtKCl9ZnVuY3Rpb24gaigpe3N3aXRjaChNdS5rZXlDb2RlKXtjYXNlIDE2OkwmJihtPWc9TD0hMSxGKCkpO2JyZWFrO2Nhc2UgMTg6dj09PVFtJiYoYjwwP2w9aDpiPjAmJihuPXIpLHg8MD9kPXA6eD4wJiYoYT1zKSx2PUptLEYoKSk7YnJlYWs7Y2FzZSAzMjp2PT09Wm0mJihNdS5hbHRLZXk/KGImJihsPWgtaypiLG49citrKmIpLHgmJihkPXAtUCp4LGE9cytQKngpLHY9UW0pOihiPDA/bD1oOmI+MCYmKG49cikseDwwP2Q9cDp4PjAmJihhPXMpLHY9Sm0pLEQuYXR0cigiY3Vyc29yIixhZ1t5XSksRigpKTticmVhaztkZWZhdWx0OnJldHVybn0kbSgpfX1mdW5jdGlvbiBwKCl7dSh0aGlzLGFyZ3VtZW50cykubW92ZWQoKX1mdW5jdGlvbiBmKCl7dSh0aGlzLGFyZ3VtZW50cykuZW5kZWQoKX1mdW5jdGlvbiBtKCl7dmFyIGU9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiBlLmV4dGVudD1lZyhuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZS5kaW09dCxlfXJldHVybiBsLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7dSh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXt1KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1lLl9fYnJ1c2gscj11KGUsYXJndW1lbnRzKSxvPWkuc2VsZWN0aW9uLGE9dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGkuZXh0ZW50KSxzPWNwKG8sYSk7ZnVuY3Rpb24gbCh0KXtpLnNlbGVjdGlvbj0xPT09dCYmbnVsbD09PWE/bnVsbDpzKHQpLGMuY2FsbChlKSxyLmJydXNoKCl9cmV0dXJuIG51bGwhPT1vJiZudWxsIT09YT9sOmwoMSl9KSk6ZS5lYWNoKChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1hcmd1bWVudHMscj1lLl9fYnJ1c2gsbz10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkoZSxpKTpuLHIuZXh0ZW50KSxhPXUoZSxpKS5iZWZvcmVzdGFydCgpO2xmKGUpLHIuc2VsZWN0aW9uPW51bGw9PT1vP251bGw6byxjLmNhbGwoZSksYS5zdGFydCgpLmJydXNoKCkuZW5kKCl9KSl9LGwuY2xlYXI9ZnVuY3Rpb24odCl7bC5tb3ZlKHQsbnVsbCl9LGgucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpOnRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oZSl7UHUobmV3IFltKGwsZSx0Lm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLGEuYXBwbHksYSxbZSx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxsLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnFtKGVnKHQpKSxsKTpufSxsLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnFtKCEhdCksbCk6aX0sbC50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpxbSghIXQpLGwpOnJ9LGwuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxsKTpzfSxsLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0hIXQsbCk6b30sbC5vbj1mdW5jdGlvbigpe3ZhciB0PWEub24uYXBwbHkoYSxhcmd1bWVudHMpO3JldHVybiB0PT09YT9sOnR9LGx9dmFyIHhnPU1hdGguY29zLHdnPU1hdGguc2luLFNnPU1hdGguUEksTWc9U2cvMixFZz0yKlNnLFRnPU1hdGgubWF4O2Z1bmN0aW9uIENnKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19dmFyIEFnPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBrZyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIFBnPU1hdGguUEksTGc9MipQZyxJZz0xZS02LE5nPUxnLUlnO2Z1bmN0aW9uIFJnKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gT2coKXtyZXR1cm4gbmV3IFJnfWZ1bmN0aW9uIHpnKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBEZyh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gQmcodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIEhnKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gRmcodCl7cmV0dXJuIHQuZW5kQW5nbGV9UmcucHJvdG90eXBlPU9nLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UmcsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPklnKWlmKE1hdGguYWJzKHUqcy1sKmMpPklnJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKFBnLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPklnJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5JZ3x8TWF0aC5hYnModGhpcy5feTEtYyk+SWcpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVMZytMZyksaD5OZz90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5JZyYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49UGcpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgVmc9IiQiO2Z1bmN0aW9uIFVnKCl7fWZ1bmN0aW9uIGpnKHQsZSl7dmFyIG49bmV3IFVnO2lmKHQgaW5zdGFuY2VvZiBVZyl0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIEdnKCl7cmV0dXJue319ZnVuY3Rpb24gV2codCxlLG4pe3RbZV09bn1mdW5jdGlvbiBxZygpe3JldHVybiBqZygpfWZ1bmN0aW9uIFlnKHQsZSxuKXt0LnNldChlLG4pfWZ1bmN0aW9uIFhnKCl7fVVnLnByb3RvdHlwZT1qZy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVnLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gVmcrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbVmcrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzW1ZnK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPVZnK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PVZnJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09VmcmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1WZyYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT1WZylyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09VmcmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyICRnPWpnLnByb3RvdHlwZTtmdW5jdGlvbiBLZyh0LGUpe3ZhciBuPW5ldyBYZztpZih0IGluc3RhbmNlb2YgWGcpdC5lYWNoKChmdW5jdGlvbih0KXtuLmFkZCh0KX0pKTtlbHNlIGlmKHQpe3ZhciBpPS0xLHI9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxyOyluLmFkZCh0W2ldKTtlbHNlIGZvcig7KytpPHI7KW4uYWRkKGUodFtpXSxpLHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBaZyh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGV9WGcucHJvdG90eXBlPUtnLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WGcsaGFzOiRnLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbVmcrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6JGcucmVtb3ZlLGNsZWFyOiRnLmNsZWFyLHZhbHVlczokZy5rZXlzLHNpemU6JGcuc2l6ZSxlbXB0eTokZy5lbXB0eSxlYWNoOiRnLmVhY2h9O3ZhciBKZz1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gUWcodCxlKXtyZXR1cm4gdC1lfWZ1bmN0aW9uIHRfKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBlXyh0LGUpe2Zvcih2YXIgbixpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KWlmKG49bl8odCxlW2ldKSlyZXR1cm4gbjtyZXR1cm4gMH1mdW5jdGlvbiBuXyh0LGUpe2Zvcih2YXIgbj1lWzBdLGk9ZVsxXSxyPS0xLG89MCxhPXQubGVuZ3RoLHM9YS0xO288YTtzPW8rKyl7dmFyIGw9dFtvXSxjPWxbMF0sdT1sWzFdLGg9dFtzXSxkPWhbMF0scD1oWzFdO2lmKGlfKGwsaCxlKSlyZXR1cm4gMDt1PmkhPXA+aSYmbjwoZC1jKSooaS11KS8ocC11KStjJiYocj0tcil9cmV0dXJuIHJ9ZnVuY3Rpb24gaV8odCxlLG4pe3ZhciBpO3JldHVybihmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKT09KG5bMF0tdFswXSkqKGVbMV0tdFsxXSl9KSh0LGUsbikmJihmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdDw9ZSYmZTw9bnx8bjw9ZSYmZTw9dH0pKHRbaT0rKHRbMF09PT1lWzBdKV0sbltpXSxlW2ldKX1mdW5jdGlvbiByXygpe312YXIgb189W1tdLFtbWzEsMS41XSxbLjUsMV1dXSxbW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbLjUsMV1dXSxbW1sxLC41XSxbMS41LDFdXV0sW1tbMSwxLjVdLFsuNSwxXV0sW1sxLC41XSxbMS41LDFdXV0sW1tbMSwuNV0sWzEsMS41XV1dLFtbWzEsLjVdLFsuNSwxXV1dLFtbWy41LDFdLFsxLC41XV1dLFtbWzEsMS41XSxbMSwuNV1dXSxbW1suNSwxXSxbMSwuNV1dLFtbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbMS41LDFdXV0sW1tbLjUsMV0sWzEsMS41XV1dLFtdXTtmdW5jdGlvbiBhXygpe3ZhciB0PTEsZT0xLG49aWMsaT1zO2Z1bmN0aW9uIHIodCl7dmFyIGU9bih0KTtpZihBcnJheS5pc0FycmF5KGUpKWU9ZS5zbGljZSgpLnNvcnQoUWcpO2Vsc2V7dmFyIGk9R2wodCkscj1pWzBdLGE9aVsxXTtlPW5jKHIsYSxlKSxlPUtsKE1hdGguZmxvb3Ioci9lKSplLE1hdGguZmxvb3IoYS9lKSplLGUpfXJldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8odCxlKX0pKX1mdW5jdGlvbiBvKG4scil7dmFyIG89W10scz1bXTtyZXR1cm4oZnVuY3Rpb24gbChuLGkscil7dmFyIG8scyxsLGMsdSxoPW5ldyBBcnJheSxkPW5ldyBBcnJheTtvPXM9LTEsb19bKGw9blswXT49aSk8PDFdLmZvckVhY2gocCk7Zm9yKDsrK288dC0xOylvX1tsfChsPW5bbysxXT49aSk8PDFdLmZvckVhY2gocCk7b19bbDw8MF0uZm9yRWFjaChwKTtmb3IoOysrczxlLTE7KXtmb3Iobz0tMSxvX1sobD1uW3MqdCt0XT49aSk8PDF8KGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTsrK288dC0xOyl1PWMsb19bbHwobD1uW3MqdCt0K28rMV0+PWkpPDwxfChjPW5bcyp0K28rMV0+PWkpPDwyfHU8PDNdLmZvckVhY2gocCk7b19bbHxjPDwzXS5mb3JFYWNoKHApfW89LTEsb19bKGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTtmb3IoOysrbzx0LTE7KXU9YyxvX1soYz1uW3MqdCtvKzFdPj1pKTw8Mnx1PDwzXS5mb3JFYWNoKHApO2Z1bmN0aW9uIHAodCl7dmFyIGUsbixpPVt0WzBdWzBdK28sdFswXVsxXStzXSxsPVt0WzFdWzBdK28sdFsxXVsxXStzXSxjPWEoaSksdT1hKGwpOyhlPWRbY10pPyhuPWhbdV0pPyhkZWxldGUgZFtlLmVuZF0sZGVsZXRlIGhbbi5zdGFydF0sZT09PW4/KGUucmluZy5wdXNoKGwpLHIoZS5yaW5nKSk6aFtlLnN0YXJ0XT1kW24uZW5kXT17c3RhcnQ6ZS5zdGFydCxlbmQ6bi5lbmQscmluZzplLnJpbmcuY29uY2F0KG4ucmluZyl9KTooZGVsZXRlIGRbZS5lbmRdLGUucmluZy5wdXNoKGwpLGRbZS5lbmQ9dV09ZSk6KGU9aFt1XSk/KG49ZFtjXSk/KGRlbGV0ZSBoW2Uuc3RhcnRdLGRlbGV0ZSBkW24uZW5kXSxlPT09bj8oZS5yaW5nLnB1c2gobCkscihlLnJpbmcpKTpoW24uc3RhcnRdPWRbZS5lbmRdPXtzdGFydDpuLnN0YXJ0LGVuZDplLmVuZCxyaW5nOm4ucmluZy5jb25jYXQoZS5yaW5nKX0pOihkZWxldGUgaFtlLnN0YXJ0XSxlLnJpbmcudW5zaGlmdChpKSxoW2Uuc3RhcnQ9Y109ZSk6aFtjXT1kW3VdPXtzdGFydDpjLGVuZDp1LHJpbmc6W2ksbF19fW9fW2M8PDNdLmZvckVhY2gocCl9KShuLHIsKGZ1bmN0aW9uKHQpe2kodCxuLHIpLChmdW5jdGlvbiBlKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGgsaT10W24tMV1bMV0qdFswXVswXS10W24tMV1bMF0qdFswXVsxXTsrK2U8bjspaSs9dFtlLTFdWzFdKnRbZV1bMF0tdFtlLTFdWzBdKnRbZV1bMV07cmV0dXJuIGl9KSh0KT4wP28ucHVzaChbdF0pOnMucHVzaCh0KX0pKSxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTAsaT1vLmxlbmd0aDtuPGk7KytuKWlmKC0xIT09ZV8oKGU9b1tuXSlbMF0sdCkpcmV0dXJuIHZvaWQgZS5wdXNoKHQpfSkpLHt0eXBlOiJNdWx0aVBvbHlnb24iLHZhbHVlOnIsY29vcmRpbmF0ZXM6b319ZnVuY3Rpb24gYShlKXtyZXR1cm4gMiplWzBdK2VbMV0qKHQrMSkqNH1mdW5jdGlvbiBzKG4saSxyKXtuLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvLGE9blswXSxzPW5bMV0sbD0wfGEsYz0wfHMsdT1pW2MqdCtsXTthPjAmJmE8dCYmbD09PWEmJihuWzBdPWErKHItKG89aVtjKnQrbC0xXSkpLyh1LW8pLS41KSxzPjAmJnM8ZSYmYz09PXMmJihuWzFdPXMrKHItKG89aVsoYy0xKSp0K2xdKSkvKHUtbyktLjUpfSkpfXJldHVybiByLmNvbnRvdXI9byxyLnNpemU9ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW3QsZV07dmFyIGk9TWF0aC5jZWlsKG5bMF0pLG89TWF0aC5jZWlsKG5bMV0pO2lmKCEoaT4wJiZvPjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHQ9aSxlPW8scn0sci50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT90XyhKZy5jYWxsKHQpKTp0Xyh0KSxyKTpufSxyLnNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10P3M6cl8scik6aT09PXN9LHJ9ZnVuY3Rpb24gc18odCxlLG4pe2Zvcih2YXIgaT10LndpZHRoLHI9dC5oZWlnaHQsbz0xKyhuPDwxKSxhPTA7YTxyOysrYSlmb3IodmFyIHM9MCxsPTA7czxpK247KytzKXM8aSYmKGwrPXQuZGF0YVtzK2EqaV0pLHM+PW4mJihzPj1vJiYobC09dC5kYXRhW3MtbythKmldKSxlLmRhdGFbcy1uK2EqaV09bC9NYXRoLm1pbihzKzEsaS0xK28tcyxvKSl9ZnVuY3Rpb24gbF8odCxlLG4pe2Zvcih2YXIgaT10LndpZHRoLHI9dC5oZWlnaHQsbz0xKyhuPDwxKSxhPTA7YTxpOysrYSlmb3IodmFyIHM9MCxsPTA7czxyK247KytzKXM8ciYmKGwrPXQuZGF0YVthK3MqaV0pLHM+PW4mJihzPj1vJiYobC09dC5kYXRhW2ErKHMtbykqaV0pLGUuZGF0YVthKyhzLW4pKmldPWwvTWF0aC5taW4ocysxLHItMStvLXMsbykpfWZ1bmN0aW9uIGNfKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHVfKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGhfKCl7cmV0dXJuIDF9dmFyIGRfPXt9LHBfPXt9O2Z1bmN0aW9uIGZfKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oImQiLCJyZXR1cm4geyIrdC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpKyI6IGRbIitlKyddIHx8ICIiJ30pKS5qb2luKCIsIikrIn0iKX1mdW5jdGlvbiBtXyh0KXt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpLG49W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpIGluIHQpaSBpbiBlfHxuLnB1c2goZVtpXT1pKX0pKSxufWZ1bmN0aW9uIGdfKHQsZSl7dmFyIG49dCsiIixpPW4ubGVuZ3RoO3JldHVybiBpPGU/bmV3IEFycmF5KGUtaSsxKS5qb2luKDApK246bn1mdW5jdGlvbiBfXyh0KXt2YXIgZT10LmdldFVUQ0hvdXJzKCksbj10LmdldFVUQ01pbnV0ZXMoKSxpPXQuZ2V0VVRDU2Vjb25kcygpLHI9dC5nZXRVVENNaWxsaXNlY29uZHMoKTtyZXR1cm4gaXNOYU4odCk/IkludmFsaWQgRGF0ZSI6KGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ8MD8iLSIrZ18oLXQsNik6dD45OTk5PyIrIitnXyh0LDYpOmdfKHQsNCl9KSh0LmdldFVUQ0Z1bGxZZWFyKCkpKyItIitnXyh0LmdldFVUQ01vbnRoKCkrMSwyKSsiLSIrZ18odC5nZXRVVENEYXRlKCksMikrKHI/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIjoiK2dfKGksMikrIi4iK2dfKHIsMykrIloiOmk/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIjoiK2dfKGksMikrIloiOm58fGU/IlQiK2dfKGUsMikrIjoiK2dfKG4sMikrIloiOiIiKX1mdW5jdGlvbiB5Xyh0KXt2YXIgZT1uZXcgUmVnRXhwKCdbIicrdCsiXG5ccl0iKSxuPXQuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBpKHQsZSl7dmFyIGkscj1bXSxvPXQubGVuZ3RoLGE9MCxzPTAsbD1vPD0wLGM9ITE7ZnVuY3Rpb24gdSgpe2lmKGwpcmV0dXJuIHBfO2lmKGMpcmV0dXJuIGM9ITEsZF87dmFyIGUsaSxyPWE7aWYoMzQ9PT10LmNoYXJDb2RlQXQocikpe2Zvcig7YSsrPG8mJjM0IT09dC5jaGFyQ29kZUF0KGEpfHwzND09PXQuY2hhckNvZGVBdCgrK2EpOyk7cmV0dXJuKGU9YSk+PW8/bD0hMDoxMD09PShpPXQuY2hhckNvZGVBdChhKyspKT9jPSEwOjEzPT09aSYmKGM9ITAsMTA9PT10LmNoYXJDb2RlQXQoYSkmJisrYSksdC5zbGljZShyKzEsZS0xKS5yZXBsYWNlKC8iIi9nLCciJyl9Zm9yKDthPG87KXtpZigxMD09PShpPXQuY2hhckNvZGVBdChlPWErKykpKWM9ITA7ZWxzZSBpZigxMz09PWkpYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythO2Vsc2UgaWYoaSE9PW4pY29udGludWU7cmV0dXJuIHQuc2xpY2UocixlKX1yZXR1cm4gbD0hMCx0LnNsaWNlKHIsbyl9Zm9yKDEwPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbywxMz09PXQuY2hhckNvZGVBdChvLTEpJiYtLW87KGk9dSgpKSE9PXBfOyl7Zm9yKHZhciBoPVtdO2khPT1kXyYmaSE9PXBfOyloLnB1c2goaSksaT11KCk7ZSYmbnVsbD09KGg9ZShoLHMrKykpfHxyLnB1c2goaCl9cmV0dXJuIHJ9ZnVuY3Rpb24gcihlLG4pe3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYShlW3RdKX0pKS5qb2luKHQpfSkpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUubWFwKGEpLmpvaW4odCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbnVsbD09dD8iIjp0IGluc3RhbmNlb2YgRGF0ZT9fXyh0KTplLnRlc3QodCs9IiIpPyciJyt0LnJlcGxhY2UoLyIvZywnIiInKSsnIic6dH1yZXR1cm57cGFyc2U6ZnVuY3Rpb24gcyh0LGUpe3ZhciBuLHIsbz1pKHQsKGZ1bmN0aW9uKHQsaSl7aWYobilyZXR1cm4gbih0LGktMSk7cj10LG49ZT8oZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWZfKHQpO3JldHVybiBmdW5jdGlvbihpLHIpe3JldHVybiBlKG4oaSkscix0KX19KSh0LGUpOmZfKHQpfSkpO3JldHVybiBvLmNvbHVtbnM9cnx8W10sb30scGFyc2VSb3dzOmksZm9ybWF0OmZ1bmN0aW9uIGwoZSxuKXtyZXR1cm4gbnVsbD09biYmKG49bV8oZSkpLFtuLm1hcChhKS5qb2luKHQpXS5jb25jYXQocihlLG4pKS5qb2luKCJcbiIpfSxmb3JtYXRCb2R5OmZ1bmN0aW9uIGModCxlKXtyZXR1cm4gbnVsbD09ZSYmKGU9bV8odCkpLHIodCxlKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uIHUodCl7cmV0dXJuIHQubWFwKG8pLmpvaW4oIlxuIil9LGZvcm1hdFJvdzpvLGZvcm1hdFZhbHVlOmF9fXZhciB2Xz15XygiLCIpLGJfPXZfLnBhcnNlLHhfPXZfLnBhcnNlUm93cyx3Xz12Xy5mb3JtYXQsU189dl8uZm9ybWF0Qm9keSxNXz12Xy5mb3JtYXRSb3dzLEVfPXZfLmZvcm1hdFJvdyxUXz12Xy5mb3JtYXRWYWx1ZSxDXz15XygiXHQiKSxBXz1DXy5wYXJzZSxrXz1DXy5wYXJzZVJvd3MsUF89Q18uZm9ybWF0LExfPUNfLmZvcm1hdEJvZHksSV89Q18uZm9ybWF0Um93cyxOXz1DXy5mb3JtYXRSb3csUl89Q18uZm9ybWF0VmFsdWU7dmFyIE9fPW5ldyBEYXRlKCIyMDE5LTAxLTAxVDAwOjAwIikuZ2V0SG91cnMoKXx8bmV3IERhdGUoIjIwMTktMDctMDFUMDA6MDAiKS5nZXRIb3VycygpO2Z1bmN0aW9uIHpfKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5ibG9iKCl9ZnVuY3Rpb24gRF8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmFycmF5QnVmZmVyKCl9ZnVuY3Rpb24gQl8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiBIXyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oQl8pfWZ1bmN0aW9uIEZfKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGk9bixuPXZvaWQgMCksSF8oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLGkpfSkpfX12YXIgVl89Rl8oYl8pLFVfPUZfKEFfKTtmdW5jdGlvbiBqXyh0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IodC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7aWYoMjA0IT09dC5zdGF0dXMmJjIwNSE9PXQuc3RhdHVzKXJldHVybiB0Lmpzb24oKX1mdW5jdGlvbiBHXyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gSF8oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsdCl9KSl9fXZhciBXXz1HXygiYXBwbGljYXRpb24veG1sIikscV89R18oInRleHQvaHRtbCIpLFlfPUdfKCJpbWFnZS9zdmcreG1sIik7ZnVuY3Rpb24gWF8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uICRfKCl7cmV0dXJuIDFlLTYqKE1hdGgucmFuZG9tKCktLjUpfWZ1bmN0aW9uIEtfKHQsZSxuLGkpe2lmKGlzTmFOKGUpfHxpc05hTihuKSlyZXR1cm4gdDt2YXIgcixvLGEscyxsLGMsdSxoLGQscD10Ll9yb290LGY9e2RhdGE6aX0sbT10Ll94MCxnPXQuX3kwLF89dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1mLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWEscj1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHJbaF09Zix0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmbj09PWwpcmV0dXJuIGYubmV4dD1wLHI/cltoXT1mOnQuX3Jvb3Q9Zix0O2Rve3I9cj9yW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YX13aGlsZSgoaD11PDwxfGMpPT0oZD0obD49YSk8PDF8cz49bykpO3JldHVybiByW2RdPXAscltoXT1mLHR9ZnVuY3Rpb24gWl8odCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1uLHRoaXMueDE9aSx0aGlzLnkxPXJ9ZnVuY3Rpb24gSl8odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gUV8odCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gdHkodCxlLG4pe3ZhciBpPW5ldyBleShudWxsPT1lP0pfOmUsbnVsbD09bj9RXzpuLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/aTppLmFkZEFsbCh0KX1mdW5jdGlvbiBleSh0LGUsbixpLHIsbyl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIG55KHQpe2Zvcih2YXIgZT17ZGF0YTp0LmRhdGF9LG49ZTt0PXQubmV4dDspbj1uLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gZX12YXIgaXk9dHkucHJvdG90eXBlPWV5LnByb3RvdHlwZTtmdW5jdGlvbiByeSh0KXtyZXR1cm4gdC54K3Qudnh9ZnVuY3Rpb24gb3kodCl7cmV0dXJuIHQueSt0LnZ5fWZ1bmN0aW9uIGF5KHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIHN5KHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufWZ1bmN0aW9uIGx5KHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gY3kodCl7cmV0dXJuIHQueX1peS5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBleSh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9bnkoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1ueShlKSk7cmV0dXJuIG59LGl5LmFkZD1mdW5jdGlvbiB1eSh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIEtfKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGl5LmFkZEFsbD1mdW5jdGlvbiBoeSh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbilLXyh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30saXkuY292ZXI9ZnVuY3Rpb24gZHkodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LGl5LmRhdGE9ZnVuY3Rpb24gcHkoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxpeS5leHRlbnQ9ZnVuY3Rpb24gZnkodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LGl5LmZpbmQ9ZnVuY3Rpb24gbXkodCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgWl8obSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBaXyhtWzNdLGcsXyxhLHMpLG5ldyBaXyhtWzJdLHIsXyxnLHMpLG5ldyBaXyhtWzFdLGcsbyxhLF8pLG5ldyBaXyhtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxpeS5yZW1vdmU9ZnVuY3Rpb24gZ3kodCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LGl5LnJlbW92ZUFsbD1mdW5jdGlvbiBfeSh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LGl5LnJvb3Q9ZnVuY3Rpb24geXkoKXtyZXR1cm4gdGhpcy5fcm9vdH0saXkuc2l6ZT1mdW5jdGlvbiB2eSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGl5LnZpc2l0PWZ1bmN0aW9uIGJ5KHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBaXyhsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgWl8obixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgWl8obixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgWl8obixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgWl8obixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LGl5LnZpc2l0QWZ0ZXI9ZnVuY3Rpb24geHkodCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IFpfKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IFpfKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IFpfKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IFpfKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IFpfKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LGl5Lng9ZnVuY3Rpb24gd3kodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxpeS55PWZ1bmN0aW9uIFN5KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIE15PU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBFeSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBUeSh0KXtyZXR1cm4odD1FeShNYXRoLmFicyh0KSkpP3RbMV06TmFOfXZhciBDeSxBeT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBreSh0KXtpZighKGU9QXkuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgZTtyZXR1cm4gbmV3IFB5KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIFB5KHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uIEx5KHQsZSl7dmFyIG49RXkodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX1reS5wcm90b3R5cGU9UHkucHJvdG90eXBlLFB5LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBJeT17IiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uIE55KHQpe3JldHVybiBNYXRoLmFicyh0PU1hdGgucm91bmQodCkpPj0xZTIxP3QudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTp0LnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTHkoMTAwKnQsZSl9LHI6THksczpmdW5jdGlvbiBSeSh0LGUpe3ZhciBuPUV5KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShDeT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK0V5KHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIE95KHQpe3JldHVybiB0fXZhciB6eSxEeSxCeSxIeT1BcnJheS5wcm90b3R5cGUubWFwLEZ5PVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiBWeSh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9PeTooZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKEh5LmNhbGwodC5ncm91cGluZyxOdW1iZXIpLHQudGhvdXNhbmRzKyIiKSxpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixyPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixvPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLGE9dm9pZCAwPT09dC5udW1lcmFscz9PeTooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKEh5LmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxsPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGM9dm9pZCAwPT09dC5taW51cz8iLSI6dC5taW51cysiIix1PXZvaWQgMD09PXQubmFuPyJOYU4iOnQubmFuKyIiO2Z1bmN0aW9uIGgodCl7dmFyIG49KHQ9a3kodCkpLmZpbGwscz10LmFsaWduLGg9dC5zaWduLGQ9dC5zeW1ib2wscD10Lnplcm8sZj10LndpZHRoLG09dC5jb21tYSxnPXQucHJlY2lzaW9uLF89dC50cmltLHk9dC50eXBlOyJuIj09PXk/KG09ITAseT0iZyIpOkl5W3ldfHwodm9pZCAwPT09ZyYmKGc9MTIpLF89ITAseT0iZyIpLChwfHwiMCI9PT1uJiYiPSI9PT1zKSYmKHA9ITAsbj0iMCIscz0iPSIpO3ZhciB2PSIkIj09PWQ/aToiIyI9PT1kJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsYj0iJCI9PT1kP3I6L1slcF0vLnRlc3QoeSk/bDoiIix4PUl5W3ldLHc9L1tkZWZncHJzJV0vLnRlc3QoeSk7ZnVuY3Rpb24gUyh0KXt2YXIgaSxyLGwsZD12LFM9YjtpZigiYyI9PT15KVM9eCh0KStTLHQ9IiI7ZWxzZXt2YXIgTT0odD0rdCk8MHx8MS90PDA7aWYodD1pc05hTih0KT91OngoTWF0aC5hYnModCksZyksXyYmKHQ9KGZ1bmN0aW9uIEUodCl7dDpmb3IodmFyIGUsbj10Lmxlbmd0aCxpPTEscj0tMTtpPG47KytpKXN3aXRjaCh0W2ldKXtjYXNlIi4iOnI9ZT1pO2JyZWFrO2Nhc2UiMCI6MD09PXImJihyPWkpLGU9aTticmVhaztkZWZhdWx0OmlmKCErdFtpXSlicmVhayB0O3I+MCYmKHI9MCl9cmV0dXJuIHI+MD90LnNsaWNlKDAscikrdC5zbGljZShlKzEpOnR9KSh0KSksTSYmMD09K3QmJiIrIiE9PWgmJihNPSExKSxkPShNPyIoIj09PWg/aDpjOiItIj09PWh8fCIoIj09PWg/IiI6aCkrZCxTPSgicyI9PT15P0Z5WzgrQ3kvM106IiIpK1MrKE0mJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChpKSl8fGw+NTcpe1M9KDQ2PT09bD9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStTLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX1tJiYhcCYmKHQ9ZSh0LDEvMCkpO3ZhciBUPWQubGVuZ3RoK3QubGVuZ3RoK1MubGVuZ3RoLEM9VDxmP25ldyBBcnJheShmLVQrMSkuam9pbihuKToiIjtzd2l0Y2gobSYmcCYmKHQ9ZShDK3QsQy5sZW5ndGg/Zi1TLmxlbmd0aDoxLzApLEM9IiIpLHMpe2Nhc2UiPCI6dD1kK3QrUytDO2JyZWFrO2Nhc2UiPSI6dD1kK0MrdCtTO2JyZWFrO2Nhc2UiXiI6dD1DLnNsaWNlKDAsVD1DLmxlbmd0aD4+MSkrZCt0K1MrQy5zbGljZShUKTticmVhaztkZWZhdWx0OnQ9QytkK3QrU31yZXR1cm4gYSh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxTLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LFN9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBkKHQsZSl7dmFyIG49aCgoKHQ9a3kodCkpLnR5cGU9ImYiLHQpKSxpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFR5KGUpLzMpKSkscj1NYXRoLnBvdygxMCwtaSksbz1GeVs4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHIqdCkrb319fX1mdW5jdGlvbiBVeSh0KXtyZXR1cm4genk9VnkodCksRHk9enkuZm9ybWF0LEJ5PXp5LmZvcm1hdFByZWZpeCx6eX1mdW5jdGlvbiBqeSh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtVHkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBHeSh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFR5KGUpLzMpKSktVHkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBXeSh0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLFR5KGUpLVR5KHQpKSsxfWZ1bmN0aW9uIHF5KCl7cmV0dXJuIG5ldyBZeX1mdW5jdGlvbiBZeSgpe3RoaXMucmVzZXQoKX1VeSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSksWXkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZeSxyZXNldDpmdW5jdGlvbigpe3RoaXMucz10aGlzLnQ9MH0sYWRkOmZ1bmN0aW9uKHQpeyR5KFh5LHQsdGhpcy50KSwkeSh0aGlzLFh5LnMsdGhpcy5zKSx0aGlzLnM/dGhpcy50Kz1YeS50OnRoaXMucz1YeS50fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBYeT1uZXcgWXk7ZnVuY3Rpb24gJHkodCxlLG4pe3ZhciBpPXQucz1lK24scj1pLWU7dC50PWUtKGktcikrKG4tcil9dmFyIEt5PTFlLTYsWnk9MWUtMTIsSnk9TWF0aC5QSSxReT1KeS8yLHR2PUp5LzQsZXY9MipKeSxudj0xODAvSnksaXY9SnkvMTgwLHJ2PU1hdGguYWJzLG92PU1hdGguYXRhbixhdj1NYXRoLmF0YW4yLHN2PU1hdGguY29zLGx2PU1hdGguY2VpbCxjdj1NYXRoLmV4cCx1dj1NYXRoLmxvZyxodj1NYXRoLnBvdyxkdj1NYXRoLnNpbixwdj1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0sZnY9TWF0aC5zcXJ0LG12PU1hdGgudGFuO2Z1bmN0aW9uIGd2KHQpe3JldHVybiB0PjE/MDp0PC0xP0p5Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiBfdih0KXtyZXR1cm4gdD4xP1F5OnQ8LTE/LVF5Ok1hdGguYXNpbih0KX1mdW5jdGlvbiB5dih0KXtyZXR1cm4odD1kdih0LzIpKSp0fWZ1bmN0aW9uIHZ2KCl7fWZ1bmN0aW9uIGJ2KHQsZSl7dCYmd3YuaGFzT3duUHJvcGVydHkodC50eXBlKSYmd3ZbdC50eXBlXSh0LGUpfXZhciB4dj17RmVhdHVyZTpmdW5jdGlvbih0LGUpe2J2KHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylidihuW2ldLmdlb21ldHJ5LGUpfX0sd3Y9e1NwaGVyZTpmdW5jdGlvbih0LGUpe2Uuc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKHQsZSl7ZS5wb2ludCgodD10LmNvb3JkaW5hdGVzKVswXSx0WzFdLHRbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOyllLnBvaW50KCh0PW5baV0pWzBdLHRbMV0sdFsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtTdih0LmNvb3JkaW5hdGVzLGUsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspU3YobltpXSxlLDApfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7TXYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylNdihuW2ldLGUpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5nZW9tZXRyaWVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspYnYobltpXSxlKX19O2Z1bmN0aW9uIFN2KHQsZSxuKXt2YXIgaSxyPS0xLG89dC5sZW5ndGgtbjtmb3IoZS5saW5lU3RhcnQoKTsrK3I8bzspZS5wb2ludCgoaT10W3JdKVswXSxpWzFdLGlbMl0pO2UubGluZUVuZCgpfWZ1bmN0aW9uIE12KHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZS5wb2x5Z29uU3RhcnQoKTsrK248aTspU3YodFtuXSxlLDEpO2UucG9seWdvbkVuZCgpfWZ1bmN0aW9uIEV2KHQsZSl7dCYmeHYuaGFzT3duUHJvcGVydHkodC50eXBlKT94dlt0LnR5cGVdKHQsZSk6YnYodCxlKX12YXIgVHYsQ3YsQXYsa3YsUHYsTHY9cXkoKSxJdj1xeSgpLE52PXtwb2ludDp2dixsaW5lU3RhcnQ6dnYsbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtMdi5yZXNldCgpLE52LmxpbmVTdGFydD1SdixOdi5saW5lRW5kPU92fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9K0x2O0l2LmFkZCh0PDA/ZXYrdDp0KSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD12dn0sc3BoZXJlOmZ1bmN0aW9uKCl7SXYuYWRkKGV2KX19O2Z1bmN0aW9uIFJ2KCl7TnYucG9pbnQ9enZ9ZnVuY3Rpb24gT3YoKXtEdihUdixDdil9ZnVuY3Rpb24genYodCxlKXtOdi5wb2ludD1EdixUdj10LEN2PWUsQXY9dCo9aXYsa3Y9c3YoZT0oZSo9aXYpLzIrdHYpLFB2PWR2KGUpfWZ1bmN0aW9uIER2KHQsZSl7dmFyIG49KHQqPWl2KS1BdixpPW4+PTA/MTotMSxyPWkqbixvPXN2KGU9KGUqPWl2KS8yK3R2KSxhPWR2KGUpLHM9UHYqYSxsPWt2Km8rcypzdihyKSxjPXMqaSpkdihyKTtMdi5hZGQoYXYoYyxsKSksQXY9dCxrdj1vLFB2PWF9ZnVuY3Rpb24gQnYodCl7cmV0dXJuW2F2KHRbMV0sdFswXSksX3YodFsyXSldfWZ1bmN0aW9uIEh2KHQpe3ZhciBlPXRbMF0sbj10WzFdLGk9c3Yobik7cmV0dXJuW2kqc3YoZSksaSpkdihlKSxkdihuKV19ZnVuY3Rpb24gRnYodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19ZnVuY3Rpb24gVnYodCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfWZ1bmN0aW9uIFV2KHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRbMl0rPWVbMl19ZnVuY3Rpb24ganYodCxlKXtyZXR1cm5bdFswXSplLHRbMV0qZSx0WzJdKmVdfWZ1bmN0aW9uIEd2KHQpe3ZhciBlPWZ2KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIgV3YscXYsWXYsWHYsJHYsS3YsWnYsSnYsUXYsdGIsZWIsbmIsaWIscmIsb2IsYWIsc2IsbGIsY2IsdWIsaGIsZGIscGIsZmIsbWIsZ2IsX2I9cXkoKSx5Yj17cG9pbnQ6dmIsbGluZVN0YXJ0OnhiLGxpbmVFbmQ6d2IscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7eWIucG9pbnQ9U2IseWIubGluZVN0YXJ0PU1iLHliLmxpbmVFbmQ9RWIsX2IucmVzZXQoKSxOdi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe052LnBvbHlnb25FbmQoKSx5Yi5wb2ludD12Yix5Yi5saW5lU3RhcnQ9eGIseWIubGluZUVuZD13YixMdjwwPyhXdj0tKFl2PTE4MCkscXY9LShYdj05MCkpOl9iPkt5P1h2PTkwOl9iPC0xZS02JiYocXY9LTkwKSx0YlswXT1Xdix0YlsxXT1Zdn0sc3BoZXJlOmZ1bmN0aW9uKCl7V3Y9LShZdj0xODApLHF2PS0oWHY9OTApfX07ZnVuY3Rpb24gdmIodCxlKXtRdi5wdXNoKHRiPVtXdj10LFl2PXRdKSxlPHF2JiYocXY9ZSksZT5YdiYmKFh2PWUpfWZ1bmN0aW9uIGJiKHQsZSl7dmFyIG49SHYoW3QqaXYsZSppdl0pO2lmKEp2KXt2YXIgaT1WdihKdixuKSxyPVZ2KFtpWzFdLC1pWzBdLDBdLGkpO0d2KHIpLHI9QnYocik7dmFyIG8sYT10LSR2LHM9YT4wPzE6LTEsbD1yWzBdKm52KnMsYz1ydihhKT4xODA7Y14ocyokdjxsJiZsPHMqdCk/KG89clsxXSpudik+WHYmJihYdj1vKTpjXihzKiR2PChsPShsKzM2MCklMzYwLTE4MCkmJmw8cyp0KT8obz0tclsxXSpudik8cXYmJihxdj1vKTooZTxxdiYmKHF2PWUpLGU+WHYmJihYdj1lKSksYz90PCR2P1RiKFd2LHQpPlRiKFd2LFl2KSYmKFl2PXQpOlRiKHQsWXYpPlRiKFd2LFl2KSYmKFd2PXQpOll2Pj1Xdj8odDxXdiYmKFd2PXQpLHQ+WXYmJihZdj10KSk6dD4kdj9UYihXdix0KT5UYihXdixZdikmJihZdj10KTpUYih0LFl2KT5UYihXdixZdikmJihXdj10KX1lbHNlIFF2LnB1c2godGI9W1d2PXQsWXY9dF0pO2U8cXYmJihxdj1lKSxlPlh2JiYoWHY9ZSksSnY9biwkdj10fWZ1bmN0aW9uIHhiKCl7eWIucG9pbnQ9YmJ9ZnVuY3Rpb24gd2IoKXt0YlswXT1Xdix0YlsxXT1Zdix5Yi5wb2ludD12YixKdj1udWxsfWZ1bmN0aW9uIFNiKHQsZSl7aWYoSnYpe3ZhciBuPXQtJHY7X2IuYWRkKHJ2KG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2UgS3Y9dCxadj1lO052LnBvaW50KHQsZSksYmIodCxlKX1mdW5jdGlvbiBNYigpe052LmxpbmVTdGFydCgpfWZ1bmN0aW9uIEViKCl7U2IoS3YsWnYpLE52LmxpbmVFbmQoKSxydihfYik+S3kmJihXdj0tKFl2PTE4MCkpLHRiWzBdPVd2LHRiWzFdPVl2LEp2PW51bGx9ZnVuY3Rpb24gVGIodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIENiKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBBYih0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9dmFyIGtiPXtzcGhlcmU6dnYscG9pbnQ6UGIsbGluZVN0YXJ0OkliLGxpbmVFbmQ6T2IscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7a2IubGluZVN0YXJ0PXpiLGtiLmxpbmVFbmQ9RGJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtrYi5saW5lU3RhcnQ9SWIsa2IubGluZUVuZD1PYn19O2Z1bmN0aW9uIFBiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpO0xiKG4qc3YodCksbipkdih0KSxkdihlKSl9ZnVuY3Rpb24gTGIodCxlLG4peysrZWIsaWIrPSh0LWliKS9lYixyYis9KGUtcmIpL2ViLG9iKz0obi1vYikvZWJ9ZnVuY3Rpb24gSWIoKXtrYi5wb2ludD1OYn1mdW5jdGlvbiBOYih0LGUpe3QqPWl2O3ZhciBuPXN2KGUqPWl2KTtmYj1uKnN2KHQpLG1iPW4qZHYodCksZ2I9ZHYoZSksa2IucG9pbnQ9UmIsTGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIFJiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpLGk9bipzdih0KSxyPW4qZHYodCksbz1kdihlKSxhPWF2KGZ2KChhPW1iKm8tZ2IqcikqYSsoYT1nYippLWZiKm8pKmErKGE9ZmIqci1tYippKSphKSxmYippK21iKnIrZ2Iqbyk7bmIrPWEsYWIrPWEqKGZiKyhmYj1pKSksc2IrPWEqKG1iKyhtYj1yKSksbGIrPWEqKGdiKyhnYj1vKSksTGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIE9iKCl7a2IucG9pbnQ9UGJ9ZnVuY3Rpb24gemIoKXtrYi5wb2ludD1CYn1mdW5jdGlvbiBEYigpe0hiKGRiLHBiKSxrYi5wb2ludD1QYn1mdW5jdGlvbiBCYih0LGUpe2RiPXQscGI9ZSx0Kj1pdixlKj1pdixrYi5wb2ludD1IYjt2YXIgbj1zdihlKTtmYj1uKnN2KHQpLG1iPW4qZHYodCksZ2I9ZHYoZSksTGIoZmIsbWIsZ2IpfWZ1bmN0aW9uIEhiKHQsZSl7dCo9aXY7dmFyIG49c3YoZSo9aXYpLGk9bipzdih0KSxyPW4qZHYodCksbz1kdihlKSxhPW1iKm8tZ2IqcixzPWdiKmktZmIqbyxsPWZiKnItbWIqaSxjPWZ2KGEqYStzKnMrbCpsKSx1PV92KGMpLGg9YyYmLXUvYztjYis9aCphLHViKz1oKnMsaGIrPWgqbCxuYis9dSxhYis9dSooZmIrKGZiPWkpKSxzYis9dSoobWIrKG1iPXIpKSxsYis9dSooZ2IrKGdiPW8pKSxMYihmYixtYixnYil9ZnVuY3Rpb24gRmIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFZiKHQsZSl7ZnVuY3Rpb24gbihuLGkpe3JldHVybiBuPXQobixpKSxlKG5bMF0sblsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZlLmludmVydCYmKG4uaW52ZXJ0PWZ1bmN0aW9uKG4saSl7cmV0dXJuKG49ZS5pbnZlcnQobixpKSkmJnQuaW52ZXJ0KG5bMF0sblsxXSl9KSxufWZ1bmN0aW9uIFViKHQsZSl7cmV0dXJuW3J2KHQpPkp5P3QrTWF0aC5yb3VuZCgtdC9ldikqZXY6dCxlXX1mdW5jdGlvbiBqYih0LGUsbil7cmV0dXJuKHQlPWV2KT9lfHxuP1ZiKFdiKHQpLHFiKGUsbikpOldiKHQpOmV8fG4/cWIoZSxuKTpVYn1mdW5jdGlvbiBHYih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPkp5P2UtZXY6ZTwtSnk/ZStldjplLG5dfX1mdW5jdGlvbiBXYih0KXt2YXIgZT1HYih0KTtyZXR1cm4gZS5pbnZlcnQ9R2IoLXQpLGV9ZnVuY3Rpb24gcWIodCxlKXt2YXIgbj1zdih0KSxpPWR2KHQpLHI9c3YoZSksbz1kdihlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9c3YoZSkscz1zdih0KSphLGw9ZHYodCkqYSxjPWR2KGUpLHU9YypuK3MqaTtyZXR1cm5bYXYobCpyLXUqbyxzKm4tYyppKSxfdih1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9c3YoZSkscz1zdih0KSphLGw9ZHYodCkqYSxjPWR2KGUpLHU9YypyLWwqbztyZXR1cm5bYXYobCpyK2MqbyxzKm4rdSppKSxfdih1Km4tcyppKV19LGF9ZnVuY3Rpb24gWWIodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qaXYsZVsxXSppdikpWzBdKj1udixlWzFdKj1udixlfXJldHVybiB0PWpiKHRbMF0qaXYsdFsxXSppdix0Lmxlbmd0aD4yP3RbMl0qaXY6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSppdixlWzFdKml2KSlbMF0qPW52LGVbMV0qPW52LGV9LGV9ZnVuY3Rpb24gWGIodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPXN2KGUpLHM9ZHYoZSksbD1pKm47bnVsbD09cj8ocj1lK2kqZXYsbz1lLWwvMik6KHI9JGIoYSxyKSxvPSRiKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqZXYpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1CdihbYSwtcypzdih1KSwtcypkdih1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gJGIodCxlKXsoZT1IdihlKSlbMF0tPXQsR3YoZSk7dmFyIG49Z3YoLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStldi1LeSklZXZ9ZnVuY3Rpb24gS2IoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4saSl7dC5wdXNoKFtlLG4saV0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtlLnB1c2godD1bXSl9LGxpbmVFbmQ6dnYscmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgbj1lO3JldHVybiBlPVtdLHQ9bnVsbCxufX19ZnVuY3Rpb24gWmIodCxlKXtyZXR1cm4gcnYodFswXS1lWzBdKTxLeSYmcnYodFsxXS1lWzFdKTxLeX1mdW5jdGlvbiBKYih0LGUsbixpKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89bix0aGlzLmU9aSx0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIFFiKHQsZSxuLGkscil7dmFyIG8sYSxzPVtdLGw9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighKChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUsbixpPXRbMF0sYT10W2VdO2lmKFpiKGksYSkpe2lmKCFpWzJdJiYhYVsyXSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyZXR1cm4gdm9pZCByLmxpbmVFbmQoKX1hWzBdKz0yZS02fXMucHVzaChuPW5ldyBKYihpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IEpiKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IEpiKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgSmIoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksdHgocyksdHgobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIHR4KHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fVViLmludmVydD1VYjt2YXIgZXg9cXkoKTtmdW5jdGlvbiBueCh0KXtyZXR1cm4gcnYodFswXSk8PUp5P3RbMF06cHYodFswXSkqKChydih0WzBdKStKeSklZXYtSnkpfWZ1bmN0aW9uIGl4KHQsZSl7dmFyIG49bngoZSksaT1lWzFdLHI9ZHYoaSksbz1bZHYobiksLXN2KG4pLDBdLGE9MCxzPTA7ZXgucmVzZXQoKSwxPT09cj9pPVF5K0t5Oi0xPT09ciYmKGk9LVF5LUt5KTtmb3IodmFyIGw9MCxjPXQubGVuZ3RoO2w8YzsrK2wpaWYoaD0odT10W2xdKS5sZW5ndGgpZm9yKHZhciB1LGgsZD11W2gtMV0scD1ueChkKSxmPWRbMV0vMit0dixtPWR2KGYpLGc9c3YoZiksXz0wO188aDsrK18scD12LG09eCxnPXcsZD15KXt2YXIgeT11W19dLHY9bngoeSksYj15WzFdLzIrdHYseD1kdihiKSx3PXN2KGIpLFM9di1wLE09Uz49MD8xOi0xLEU9TSpTLFQ9RT5KeSxDPW0qeDtpZihleC5hZGQoYXYoQypNKmR2KEUpLGcqdytDKnN2KEUpKSksYSs9VD9TK00qZXY6UyxUXnA+PW5edj49bil7dmFyIEE9VnYoSHYoZCksSHYoeSkpO0d2KEEpO3ZhciBrPVZ2KG8sQSk7R3Yoayk7dmFyIFA9KFReUz49MD8tMToxKSpfdihrWzJdKTsoaT5QfHxpPT09UCYmKEFbMF18fEFbMV0pKSYmKHMrPVReUz49MD8xOi0xKX19cmV0dXJuKGE8LTFlLTZ8fGE8S3kmJmV4PC0xZS02KV4xJnN9ZnVuY3Rpb24gcngodCxlLG4saSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvLGEscyxsPWUociksYz1LYigpLHU9ZShjKSxoPSExLGQ9e3BvaW50OnAsbGluZVN0YXJ0Om0sbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2QucG9pbnQ9XyxkLmxpbmVTdGFydD15LGQubGluZUVuZD12LGE9W10sbz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2QucG9pbnQ9cCxkLmxpbmVTdGFydD1tLGQubGluZUVuZD1nLGE9YWMoYSk7dmFyIHQ9aXgobyxpKTthLmxlbmd0aD8oaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksUWIoYSxheCx0LG4scikpOnQmJihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCkpLGgmJihyLnBvbHlnb25FbmQoKSxoPSExKSxhPW89bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7ci5wb2x5Z29uU3RhcnQoKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCksci5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBwKGUsbil7dChlLG4pJiZyLnBvaW50KGUsbil9ZnVuY3Rpb24gZih0LGUpe2wucG9pbnQodCxlKX1mdW5jdGlvbiBtKCl7ZC5wb2ludD1mLGwubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZygpe2QucG9pbnQ9cCxsLmxpbmVFbmQoKX1mdW5jdGlvbiBfKHQsZSl7cy5wdXNoKFt0LGVdKSx1LnBvaW50KHQsZSl9ZnVuY3Rpb24geSgpe3UubGluZVN0YXJ0KCkscz1bXX1mdW5jdGlvbiB2KCl7XyhzWzBdWzBdLHNbMF1bMV0pLHUubGluZUVuZCgpO3ZhciB0LGUsbixpLGw9dS5jbGVhbigpLGQ9Yy5yZXN1bHQoKSxwPWQubGVuZ3RoO2lmKHMucG9wKCksby5wdXNoKHMpLHM9bnVsbCxwKWlmKDEmbCl7aWYoKGU9KG49ZFswXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KXIucG9pbnQoKGk9blt0XSlbMF0saVsxXSk7ci5saW5lRW5kKCl9fWVsc2UgcD4xJiYyJmwmJmQucHVzaChkLnBvcCgpLmNvbmNhdChkLnNoaWZ0KCkpKSxhLnB1c2goZC5maWx0ZXIob3gpKX1yZXR1cm4gZH19ZnVuY3Rpb24gb3godCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gYXgodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tUXktS3k6UXktdFsxXSktKChlPWUueClbMF08MD9lWzFdLVF5LUt5OlF5LWVbMV0pfXZhciBzeD1yeCgoZnVuY3Rpb24oKXtyZXR1cm4hMH0pLChmdW5jdGlvbiBseCh0KXt2YXIgZSxuPU5hTixpPU5hTixyPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0aW9uKG8sYSl7dmFyIHM9bz4wP0p5Oi1KeSxsPXJ2KG8tbik7cnYobC1KeSk8S3k/KHQucG9pbnQobixpPShpK2EpLzI+MD9ReTotUXkpLHQucG9pbnQocixpKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxpKSx0LnBvaW50KG8saSksZT0wKTpyIT09cyYmbD49SnkmJihydihuLXIpPEt5JiYobi09cipLeSkscnYoby1zKTxLeSYmKG8tPXMqS3kpLGk9KGZ1bmN0aW9uIGModCxlLG4saSl7dmFyIHIsbyxhPWR2KHQtbik7cmV0dXJuIHJ2KGEpPkt5P292KChkdihlKSoobz1zdihpKSkqZHYobiktZHYoaSkqKHI9c3YoZSkpKmR2KHQpKS8ocipvKmEpKTooZStpKS8yfSkobixpLG8sYSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLGU9MCksdC5wb2ludChuPW8saT1hKSxyPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxuPWk9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWV9fX0pLChmdW5jdGlvbiBjeCh0LGUsbixpKXt2YXIgcjtpZihudWxsPT10KWkucG9pbnQoLUp5LHI9bipReSksaS5wb2ludCgwLHIpLGkucG9pbnQoSnksciksaS5wb2ludChKeSwwKSxpLnBvaW50KEp5LC1yKSxpLnBvaW50KDAsLXIpLGkucG9pbnQoLUp5LC1yKSxpLnBvaW50KC1KeSwwKSxpLnBvaW50KC1KeSxyKTtlbHNlIGlmKHJ2KHRbMF0tZVswXSk+S3kpe3ZhciBvPXRbMF08ZVswXT9KeTotSnk7aS5wb2ludCgtbyxyPW4qby8yKSxpLnBvaW50KDAsciksaS5wb2ludChvLHIpfWVsc2UgaS5wb2ludChlWzBdLGVbMV0pfSksWy1KeSwtUXldKTtmdW5jdGlvbiB1eCh0KXt2YXIgZT1zdih0KSxuPTYqaXYsaT1lPjAscj1ydihlKT5LeTtmdW5jdGlvbiBvKHQsbil7cmV0dXJuIHN2KHQpKnN2KG4pPmV9ZnVuY3Rpb24gYSh0LG4saSl7dmFyIHI9WzEsMCwwXSxvPVZ2KEh2KHQpLEh2KG4pKSxhPUZ2KG8sbykscz1vWzBdLGw9YS1zKnM7aWYoIWwpcmV0dXJuIWkmJnQ7dmFyIGM9ZSphL2wsdT0tZSpzL2wsaD1WdihyLG8pLGQ9anYocixjKTtVdihkLGp2KG8sdSkpO3ZhciBwPWgsZj1GdihkLHApLG09RnYocCxwKSxnPWYqZi1tKihGdihkLGQpLTEpO2lmKCEoZzwwKSl7dmFyIF89ZnYoZykseT1qdihwLCgtZi1fKS9tKTtpZihVdih5LGQpLHk9QnYoeSksIWkpcmV0dXJuIHk7dmFyIHYsYj10WzBdLHg9blswXSx3PXRbMV0sUz1uWzFdO3g8YiYmKHY9YixiPXgseD12KTt2YXIgTT14LWIsRT1ydihNLUp5KTxLeTtpZighRSYmUzx3JiYodj13LHc9UyxTPXYpLEV8fE08S3k/RT93K1M+MF55WzFdPChydih5WzBdLWIpPEt5P3c6Uyk6dzw9eVsxXSYmeVsxXTw9UzpNPkp5XihiPD15WzBdJiZ5WzBdPD14KSl7dmFyIFQ9anYocCwoLWYrXykvbSk7cmV0dXJuIFV2KFQsZCksW3ksQnYoVCldfX19ZnVuY3Rpb24gcyhlLG4pe3ZhciByPWk/dDpKeS10LG89MDtyZXR1cm4gZTwtcj9vfD0xOmU+ciYmKG98PTIpLG48LXI/b3w9NDpuPnImJihvfD04KSxvfXJldHVybiByeChvLChmdW5jdGlvbiBsKHQpe3ZhciBlLG4sbCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9LHBvaW50OmZ1bmN0aW9uKGgsZCl7dmFyIHAsZj1baCxkXSxtPW8oaCxkKSxnPWk/bT8wOnMoaCxkKTptP3MoaCsoaDwwP0p5Oi1KeSksZCk6MDtpZighZSYmKGM9bD1tKSYmdC5saW5lU3RhcnQoKSxtIT09bCYmKCEocD1hKGUsZikpfHxaYihlLHApfHxaYihmLHApKSYmKGZbMl09MSksbSE9PWwpdT0wLG0/KHQubGluZVN0YXJ0KCkscD1hKGYsZSksdC5wb2ludChwWzBdLHBbMV0pKToocD1hKGUsZiksdC5wb2ludChwWzBdLHBbMV0sMiksdC5saW5lRW5kKCkpLGU9cDtlbHNlIGlmKHImJmUmJmlebSl7dmFyIF87ZyZufHwhKF89YShmLGUsITApKXx8KHU9MCxpPyh0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSx0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KF9bMF1bMF0sX1swXVsxXSwzKSkpfSFtfHxlJiZaYihlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXtYYihvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLUp5LHQtSnldKX12YXIgaHg9MWU5LGR4PS1oeDtmdW5jdGlvbiBweCh0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiBydihpWzBdLXQpPEt5P3I+MD8wOjM6cnYoaVswXS1uKTxLeT9yPjA/MjoxOnJ2KGlbMV0tZSk8S3k/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPUtiKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QyxjJiZjLnB1c2godT1bXSk7Xz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihDKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpO3gucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPWFjKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZRYihsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKTt2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBDKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KGR4LE1hdGgubWluKGh4LGYpKSxtPU1hdGgubWF4KGR4LE1hdGgubWluKGh4LG0pKV0sYj1bbz1NYXRoLm1heChkeCxNYXRoLm1pbihoeCxvKSksYT1NYXRoLm1heChkeCxNYXRoLm1pbihoeCxhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBmeCxteCxneCxfeD1xeSgpLHl4PXtzcGhlcmU6dnYscG9pbnQ6dnYsbGluZVN0YXJ0OmZ1bmN0aW9uIHZ4KCl7eXgucG9pbnQ9eHgseXgubGluZUVuZD1ieH0sbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6dnYscG9seWdvbkVuZDp2dn07ZnVuY3Rpb24gYngoKXt5eC5wb2ludD15eC5saW5lRW5kPXZ2fWZ1bmN0aW9uIHh4KHQsZSl7Zng9dCo9aXYsbXg9ZHYoZSo9aXYpLGd4PXN2KGUpLHl4LnBvaW50PXd4fWZ1bmN0aW9uIHd4KHQsZSl7dCo9aXY7dmFyIG49ZHYoZSo9aXYpLGk9c3YoZSkscj1ydih0LWZ4KSxvPXN2KHIpLGE9aSpkdihyKSxzPWd4Km4tbXgqaSpvLGw9bXgqbitneCppKm87X3guYWRkKGF2KGZ2KGEqYStzKnMpLGwpKSxmeD10LG14PW4sZ3g9aX1mdW5jdGlvbiBTeCh0KXtyZXR1cm4gX3gucmVzZXQoKSxFdih0LHl4KSwrX3h9dmFyIE14PVtudWxsLG51bGxdLEV4PXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpNeH07ZnVuY3Rpb24gVHgodCxlKXtyZXR1cm4gTXhbMF09dCxNeFsxXT1lLFN4KEV4KX12YXIgQ3g9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4ga3godC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGt4KG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxBeD17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFB4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKFB4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTHgodC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihMeChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEl4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoSXgobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGt4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBreCh0LGUpe3JldHVybiEoIXR8fCFBeC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmQXhbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIFB4KHQsZSl7cmV0dXJuIDA9PT1UeCh0LGUpfWZ1bmN0aW9uIEx4KHQsZSl7Zm9yKHZhciBuLGkscixvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtpZigwPT09KGk9VHgodFtvXSxlKSkpcmV0dXJuITA7aWYobz4wJiYocj1UeCh0W29dLHRbby0xXSkpPjAmJm48PXImJmk8PXImJihuK2ktcikqKDEtTWF0aC5wb3coKG4taSkvciwyKSk8WnkqcilyZXR1cm4hMDtuPWl9cmV0dXJuITF9ZnVuY3Rpb24gSXgodCxlKXtyZXR1cm4hIWl4KHQubWFwKE54KSxSeChlKSl9ZnVuY3Rpb24gTngodCl7cmV0dXJuKHQ9dC5tYXAoUngpKS5wb3AoKSx0fWZ1bmN0aW9uIFJ4KHQpe3JldHVyblt0WzBdKml2LHRbMV0qaXZdfWZ1bmN0aW9uIE94KHQsZSxuKXt2YXIgaT1LbCh0LGUtS3ksbikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblt0LGVdfSkpfX1mdW5jdGlvbiB6eCh0LGUsbil7dmFyIGk9S2wodCxlLUt5LG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gRHgoKXt2YXIgdCxlLG4saSxyLG8sYSxzLGwsYyx1LGgsZD0xMCxwPWQsZj05MCxtPTM2MCxnPTIuNTtmdW5jdGlvbiBfKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6eSgpfX1mdW5jdGlvbiB5KCl7cmV0dXJuIEtsKGx2KGkvZikqZixuLGYpLm1hcCh1KS5jb25jYXQoS2wobHYocy9tKSptLGEsbSkubWFwKGgpKS5jb25jYXQoS2wobHYoZS9kKSpkLHQsZCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gcnYodCVmKT5LeX0pKS5tYXAobCkpLmNvbmNhdChLbChsdihvL3ApKnAscixwKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBydih0JW0pPkt5fSkpLm1hcChjKSl9cmV0dXJuIF8ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSkpfSxfLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3UoaSkuY29uY2F0KGgoYSkuc2xpY2UoMSksdShuKS5yZXZlcnNlKCkuc2xpY2UoMSksaChzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LF8uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uZXh0ZW50TWFqb3IodCkuZXh0ZW50TWlub3IodCk6Xy5leHRlbnRNaW5vcigpfSxfLmV4dGVudE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0WzBdWzFdLGE9K3RbMV1bMV0sKGk9K3RbMF1bMF0pPihuPSt0WzFdWzBdKSYmKHQ9aSxpPW4sbj10KSxzPmEmJih0PXMscz1hLGE9dCksXy5wcmVjaXNpb24oZykpOltbaSxzXSxbbixhXV19LF8uZXh0ZW50TWlub3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K25bMF1bMV0scj0rblsxXVsxXSwoZT0rblswXVswXSk+KHQ9K25bMV1bMF0pJiYobj1lLGU9dCx0PW4pLG8+ciYmKG49byxvPXIscj1uKSxfLnByZWNpc2lvbihnKSk6W1tlLG9dLFt0LHJdXX0sXy5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uc3RlcE1ham9yKHQpLnN0ZXBNaW5vcih0KTpfLnN0ZXBNaW5vcigpfSxfLnN0ZXBNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdFswXSxtPSt0WzFdLF8pOltmLG1dfSxfLnN0ZXBNaW5vcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLF8pOltkLHBdfSxfLnByZWNpc2lvbj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rZCxsPU94KG8sciw5MCksYz16eChlLHQsZyksdT1PeChzLGEsOTApLGg9engoaSxuLGcpLF8pOmd9LF8uZXh0ZW50TWFqb3IoW1stMTgwLC04OS45OTk5OTldLFsxODAsODkuOTk5OTk5XV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAuMDAwMDAxXSxbMTgwLDgwLjAwMDAwMV1dKX1mdW5jdGlvbiBCeCh0KXtyZXR1cm4gdH12YXIgSHgsRngsVngsVXgsang9cXkoKSxHeD1xeSgpLFd4PXtwb2ludDp2dixsaW5lU3RhcnQ6dnYsbGluZUVuZDp2dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtXeC5saW5lU3RhcnQ9cXgsV3gubGluZUVuZD0keH0scG9seWdvbkVuZDpmdW5jdGlvbigpe1d4LmxpbmVTdGFydD1XeC5saW5lRW5kPVd4LnBvaW50PXZ2LGp4LmFkZChydihHeCkpLEd4LnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PWp4LzI7cmV0dXJuIGp4LnJlc2V0KCksdH19O2Z1bmN0aW9uIHF4KCl7V3gucG9pbnQ9WXh9ZnVuY3Rpb24gWXgodCxlKXtXeC5wb2ludD1YeCxIeD1WeD10LEZ4PVV4PWV9ZnVuY3Rpb24gWHgodCxlKXtHeC5hZGQoVXgqdC1WeCplKSxWeD10LFV4PWV9ZnVuY3Rpb24gJHgoKXtYeChIeCxGeCl9dmFyIEt4PVd4LFp4PTEvMCxKeD1aeCxReD0tWngsdHc9UXg7dmFyIGV3LG53LGl3LHJ3LG93PXtwb2ludDpmdW5jdGlvbiBhdyh0LGUpe3Q8WngmJihaeD10KTt0PlF4JiYoUXg9dCk7ZTxKeCYmKEp4PWUpO2U+dHcmJih0dz1lKX0sbGluZVN0YXJ0OnZ2LGxpbmVFbmQ6dnYscG9seWdvblN0YXJ0OnZ2LHBvbHlnb25FbmQ6dnYscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9W1taeCxKeF0sW1F4LHR3XV07cmV0dXJuIFF4PXR3PS0oSng9Wng9MS8wKSx0fX0sc3c9MCxsdz0wLGN3PTAsdXc9MCxodz0wLGR3PTAscHc9MCxmdz0wLG13PTAsZ3c9e3BvaW50Ol93LGxpbmVTdGFydDp5dyxsaW5lRW5kOnh3LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2d3LmxpbmVTdGFydD13dyxndy5saW5lRW5kPVN3fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Z3cucG9pbnQ9X3csZ3cubGluZVN0YXJ0PXl3LGd3LmxpbmVFbmQ9eHd9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PW13P1twdy9tdyxmdy9td106ZHc/W3V3L2R3LGh3L2R3XTpjdz9bc3cvY3csbHcvY3ddOltOYU4sTmFOXTtyZXR1cm4gc3c9bHc9Y3c9dXc9aHc9ZHc9cHc9Znc9bXc9MCx0fX07ZnVuY3Rpb24gX3codCxlKXtzdys9dCxsdys9ZSwrK2N3fWZ1bmN0aW9uIHl3KCl7Z3cucG9pbnQ9dnd9ZnVuY3Rpb24gdncodCxlKXtndy5wb2ludD1idyxfdyhpdz10LHJ3PWUpfWZ1bmN0aW9uIGJ3KHQsZSl7dmFyIG49dC1pdyxpPWUtcncscj1mdihuKm4raSppKTt1dys9ciooaXcrdCkvMixodys9cioocncrZSkvMixkdys9cixfdyhpdz10LHJ3PWUpfWZ1bmN0aW9uIHh3KCl7Z3cucG9pbnQ9X3d9ZnVuY3Rpb24gd3coKXtndy5wb2ludD1Nd31mdW5jdGlvbiBTdygpe0V3KGV3LG53KX1mdW5jdGlvbiBNdyh0LGUpe2d3LnBvaW50PUV3LF93KGV3PWl3PXQsbnc9cnc9ZSl9ZnVuY3Rpb24gRXcodCxlKXt2YXIgbj10LWl3LGk9ZS1ydyxyPWZ2KG4qbitpKmkpO3V3Kz1yKihpdyt0KS8yLGh3Kz1yKihydytlKS8yLGR3Kz1yLHB3Kz0ocj1ydyp0LWl3KmUpKihpdyt0KSxmdys9cioocncrZSksbXcrPTMqcixfdyhpdz10LHJ3PWUpfXZhciBUdz1ndztmdW5jdGlvbiBDdyh0KXt0aGlzLl9jb250ZXh0PXR9Q3cucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFkaXVzPXQsdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5tb3ZlVG8odCt0aGlzLl9yYWRpdXMsZSksdGhpcy5fY29udGV4dC5hcmModCxlLHRoaXMuX3JhZGl1cywwLGV2KX19LHJlc3VsdDp2dn07dmFyIEF3LGt3LFB3LEx3LEl3LE53PXF5KCksUnc9e3BvaW50OnZ2LGxpbmVTdGFydDpmdW5jdGlvbigpe1J3LnBvaW50PU93fSxsaW5lRW5kOmZ1bmN0aW9uKCl7QXcmJnp3KGt3LFB3KSxSdy5wb2ludD12dn0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7QXc9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtBdz1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rTnc7cmV0dXJuIE53LnJlc2V0KCksdH19O2Z1bmN0aW9uIE93KHQsZSl7UncucG9pbnQ9encsa3c9THc9dCxQdz1Jdz1lfWZ1bmN0aW9uIHp3KHQsZSl7TncuYWRkKGZ2KChMdy09dCkqTHcrKEl3LT1lKSpJdykpLEx3PXQsSXc9ZX12YXIgRHc9Unc7ZnVuY3Rpb24gQncoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gSHcodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gRncodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBWdztmb3IodmFyIGkgaW4gdCluW2ldPXRbaV07cmV0dXJuIG4uc3RyZWFtPWUsbn19ZnVuY3Rpb24gVncoKXt9ZnVuY3Rpb24gVXcodCxlLG4pe3ZhciBpPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPWkmJnQuY2xpcEV4dGVudChudWxsKSxFdihuLHQuc3RyZWFtKG93KSksZShvdy5yZXN1bHQoKSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KGkpLHR9ZnVuY3Rpb24gancodCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT1lWzFdWzBdLWVbMF1bMF0scj1lWzFdWzFdLWVbMF1bMV0sbz1NYXRoLm1pbihpLyhuWzFdWzBdLW5bMF1bMF0pLHIvKG5bMV1bMV0tblswXVsxXSkpLGE9K2VbMF1bMF0rKGktbyooblsxXVswXStuWzBdWzBdKSkvMixzPStlWzBdWzFdKyhyLW8qKG5bMV1bMV0rblswXVsxXSkpLzI7dC5zY2FsZSgxNTAqbykudHJhbnNsYXRlKFthLHNdKX0pLG4pfWZ1bmN0aW9uIEd3KHQsZSxuKXtyZXR1cm4gancodCxbWzAsMF0sZV0sbil9ZnVuY3Rpb24gV3codCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMF0tblswXVswXSksbz0oaS1yKihuWzFdWzBdK25bMF1bMF0pKS8yLGE9LXIqblswXVsxXTt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9ZnVuY3Rpb24gcXcodCxlLG4pe3JldHVybiBVdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMV0tblswXVsxXSksbz0tcipuWzBdWzBdLGE9KGktciooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9QncucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxfY2lyY2xlOkh3KDQuNSkscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpIT09dGhpcy5fcmFkaXVzJiYodGhpcy5fcmFkaXVzPXQsdGhpcy5fY2lyY2xlPW51bGwpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsZSk7YnJlYWs7ZGVmYXVsdDpudWxsPT10aGlzLl9jaXJjbGUmJih0aGlzLl9jaXJjbGU9SHcodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUsdGhpcy5fY2lyY2xlKX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9cmV0dXJuIG51bGx9fSxWdy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlZ3LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdHJlYW0ucG9pbnQodCxlKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBZdz1zdigzMCppdik7ZnVuY3Rpb24gWHcodCxlKXtyZXR1cm4rZT8oZnVuY3Rpb24gbih0LGUpe2Z1bmN0aW9uIG4oaSxyLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnKXt2YXIgXz1jLWkseT11LXIsdj1fKl8reSp5O2lmKHY+NCplJiZtLS0pe3ZhciBiPWErZCx4PXMrcCx3PWwrZixTPWZ2KGIqYit4Kngrdyp3KSxNPV92KHcvPVMpLEU9cnYocnYodyktMSk8S3l8fHJ2KG8taCk8S3k/KG8raCkvMjphdih4LGIpLFQ9dChFLE0pLEM9VFswXSxBPVRbMV0saz1DLWksUD1BLXIsTD15KmstXypQOyhMKkwvdj5lfHxydigoXyprK3kqUCkvdi0uNSk+LjN8fGEqZCtzKnArbCpmPFl3KSYmKG4oaSxyLG8sYSxzLGwsQyxBLEUsYi89Uyx4Lz1TLHcsbSxnKSxnLnBvaW50KEMsQSksbihDLEEsRSxiLHgsdyxjLHUsaCxkLHAsZixtLGcpKX19cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtPXtwb2ludDpnLGxpbmVTdGFydDpfLGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25TdGFydCgpLG0ubGluZVN0YXJ0PWJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25FbmQoKSxtLmxpbmVTdGFydD1ffX07ZnVuY3Rpb24gZyhuLGkpe249dChuLGkpLGUucG9pbnQoblswXSxuWzFdKX1mdW5jdGlvbiBfKCl7dT1OYU4sbS5wb2ludD15LGUubGluZVN0YXJ0KCl9ZnVuY3Rpb24geShpLHIpe3ZhciBvPUh2KFtpLHJdKSxhPXQoaSxyKTtuKHUsaCxjLGQscCxmLHU9YVswXSxoPWFbMV0sYz1pLGQ9b1swXSxwPW9bMV0sZj1vWzJdLDE2LGUpLGUucG9pbnQodSxoKX1mdW5jdGlvbiB2KCl7bS5wb2ludD1nLGUubGluZUVuZCgpfWZ1bmN0aW9uIGIoKXtfKCksbS5wb2ludD14LG0ubGluZUVuZD13fWZ1bmN0aW9uIHgodCxlKXt5KGk9dCxlKSxyPXUsbz1oLGE9ZCxzPXAsbD1mLG0ucG9pbnQ9eX1mdW5jdGlvbiB3KCl7bih1LGgsYyxkLHAsZixyLG8saSxhLHMsbCwxNixlKSxtLmxpbmVFbmQ9dix2KCl9cmV0dXJuIG19fSkodCxlKTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gRncoe3BvaW50OmZ1bmN0aW9uKGUsbil7ZT10KGUsbiksdGhpcy5zdHJlYW0ucG9pbnQoZVswXSxlWzFdKX19KX0pKHQpfXZhciAkdz1Gdyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0Kml2LGUqaXYpfX0pO2Z1bmN0aW9uIEt3KHQsZSxuLGkscil7ZnVuY3Rpb24gbyhvLGEpe3JldHVybltlK3QqKG8qPWkpLG4tdCooYSo9cildfXJldHVybiBvLmludmVydD1mdW5jdGlvbihvLGEpe3JldHVyblsoby1lKS90KmksKG4tYSkvdCpyXX0sb31mdW5jdGlvbiBadyh0LGUsbixpLHIsbyl7dmFyIGE9c3Yobykscz1kdihvKSxsPWEqdCxjPXMqdCx1PWEvdCxoPXMvdCxkPShzKm4tYSplKS90LHA9KHMqZSthKm4pL3Q7ZnVuY3Rpb24gZih0LG8pe3JldHVybltsKih0Kj1pKS1jKihvKj1yKStlLG4tYyp0LWwqb119cmV0dXJuIGYuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW2kqKHUqdC1oKmUrZCkscioocC1oKnQtdSplKV19LGZ9ZnVuY3Rpb24gSncodCl7cmV0dXJuIFF3KChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gUXcodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PTAsYj0xLHg9MSx3PW51bGwsUz1zeCxNPW51bGwsRT1CeCxUPS41O2Z1bmN0aW9uIEModCl7cmV0dXJuIGwodFswXSppdix0WzFdKml2KX1mdW5jdGlvbiBBKHQpe3JldHVybih0PWwuaW52ZXJ0KHRbMF0sdFsxXSkpJiZbdFswXSpudix0WzFdKm52XX1mdW5jdGlvbiBrKCl7dmFyIHQ9WncoaCwwLDAsYix4LHYpLmFwcGx5KG51bGwsZShmLG0pKSxpPSh2P1p3Okt3KShoLGQtdFswXSxwLXRbMV0sYix4LHYpO3JldHVybiBuPWpiKGcsXyx5KSxzPVZiKGUsaSksbD1WYihuLHMpLGE9WHcocyxUKSxQKCl9ZnVuY3Rpb24gUCgpe3JldHVybiBjPXU9bnVsbCxDfXJldHVybiBDLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gYyYmdT09PXQ/YzpjPSR3KChmdW5jdGlvbiBlKHQpe3JldHVybiBGdyh7cG9pbnQ6ZnVuY3Rpb24oZSxuKXt2YXIgaT10KGUsbik7cmV0dXJuIHRoaXMuc3RyZWFtLnBvaW50KGlbMF0saVsxXSl9fSl9KShuKShTKGEoRSh1PXQpKSkpKX0sQy5wcmVjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXQsdz12b2lkIDAsUCgpKTpTfSxDLnBvc3RjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPXQsTT1pPXI9bz1udWxsLFAoKSk6RX0sQy5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9K3Q/dXgodz10Kml2KToodz1udWxsLHN4KSxQKCkpOncqbnZ9LEMuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1udWxsPT10PyhNPWk9cj1vPW51bGwsQngpOnB4KE09K3RbMF1bMF0saT0rdFswXVsxXSxyPSt0WzFdWzBdLG89K3RbMV1bMV0pLFAoKSk6bnVsbD09TT9udWxsOltbTSxpXSxbcixvXV19LEMuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3QsaygpKTpofSxDLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLGsoKSk6W2QscF19LEMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXRbMF0lMzYwKml2LG09dFsxXSUzNjAqaXYsaygpKTpbZipudixtKm52XX0sQy5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9dFswXSUzNjAqaXYsXz10WzFdJTM2MCppdix5PXQubGVuZ3RoPjI/dFsyXSUzNjAqaXY6MCxrKCkpOltnKm52LF8qbnYseSpudl19LEMuYW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9dCUzNjAqaXYsaygpKTp2Km52fSxDLnJlZmxlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPXQ/LTE6MSxrKCkpOmI8MH0sQy5yZWZsZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD10Py0xOjEsaygpKTp4PDB9LEMucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPVh3KHMsVD10KnQpLFAoKSk6ZnYoVCl9LEMuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGp3KEMsdCxlKX0sQy5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd3KEMsdCxlKX0sQy5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiBXdyhDLHQsZSl9LEMuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHF3KEMsdCxlKX0sZnVuY3Rpb24oKXtyZXR1cm4gZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxDLmludmVydD1lLmludmVydCYmQSxrKCl9fWZ1bmN0aW9uIHRTKHQpe3ZhciBlPTAsbj1KeS8zLGk9UXcodCkscj1pKGUsbik7cmV0dXJuIHIucGFyYWxsZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2koZT10WzBdKml2LG49dFsxXSppdik6W2UqbnYsbipudl19LHJ9ZnVuY3Rpb24gZVModCxlKXt2YXIgbj1kdih0KSxpPShuK2R2KGUpKS8yO2lmKHJ2KGkpPEt5KXJldHVybihmdW5jdGlvbiByKHQpe3ZhciBlPXN2KHQpO2Z1bmN0aW9uIG4odCxuKXtyZXR1cm5bdCplLGR2KG4pL2VdfXJldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0L2UsX3YobiplKV19LG59KSh0KTt2YXIgbz0xK24qKDIqaS1uKSxhPWZ2KG8pL2k7ZnVuY3Rpb24gcyh0LGUpe3ZhciBuPWZ2KG8tMippKmR2KGUpKS9pO3JldHVybltuKmR2KHQqPWkpLGEtbipzdih0KV19cmV0dXJuIHMuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49YS1lLHI9YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoci09SnkqcHYodCkqcHYobikpLFtyL2ksX3YoKG8tKHQqdCtuKm4pKmkqaSkvKDIqaSkpXX0sc31mdW5jdGlvbiBuUygpe3JldHVybiB0UyhlUykuc2NhbGUoMTU1LjQyNCkuY2VudGVyKFswLDMzLjY0NDJdKX1mdW5jdGlvbiBpUygpe3JldHVybiBuUygpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfWZ1bmN0aW9uIHJTKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXN2KGUpLHI9c3Yobiksbz10KGkqcik7cmV0dXJuW28qcipkdihlKSxvKmR2KG4pXX19ZnVuY3Rpb24gb1ModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9ZnYoZSplK24qbikscj10KGkpLG89ZHYociksYT1zdihyKTtyZXR1cm5bYXYoZSpvLGkqYSksX3YoaSYmbipvL2kpXX19dmFyIGFTPXJTKChmdW5jdGlvbih0KXtyZXR1cm4gZnYoMi8oMSt0KSl9KSk7YVMuaW52ZXJ0PW9TKChmdW5jdGlvbih0KXtyZXR1cm4gMipfdih0LzIpfSkpO3ZhciBzUz1yUygoZnVuY3Rpb24odCl7cmV0dXJuKHQ9Z3YodCkpJiZ0L2R2KHQpfSkpO2Z1bmN0aW9uIGxTKHQsZSl7cmV0dXJuW3QsdXYobXYoKFF5K2UpLzIpKV19ZnVuY3Rpb24gY1ModCl7dmFyIGUsbixpLHI9SncodCksbz1yLmNlbnRlcixhPXIuc2NhbGUscz1yLnRyYW5zbGF0ZSxsPXIuY2xpcEV4dGVudCxjPW51bGw7ZnVuY3Rpb24gdSgpe3ZhciBvPUp5KmEoKSxzPXIoWWIoci5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIGwobnVsbD09Yz9bW3NbMF0tbyxzWzFdLW9dLFtzWzBdK28sc1sxXStvXV06dD09PWxTP1tbTWF0aC5tYXgoc1swXS1vLGMpLGVdLFtNYXRoLm1pbihzWzBdK28sbiksaV1dOltbYyxNYXRoLm1heChzWzFdLW8sZSldLFtuLE1hdGgubWluKHNbMV0rbyxpKV1dKX1yZXR1cm4gci5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSh0KSx1KCkpOmEoKX0sci50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHModCksdSgpKTpzKCl9LHIuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLHUoKSk6bygpfSxyLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/Yz1lPW49aT1udWxsOihjPSt0WzBdWzBdLGU9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSx1KCkpOm51bGw9PWM/bnVsbDpbW2MsZV0sW24saV1dfSx1KCl9ZnVuY3Rpb24gdVModCl7cmV0dXJuIG12KChReSt0KS8yKX1mdW5jdGlvbiBoUyh0LGUpe3ZhciBuPXN2KHQpLGk9dD09PWU/ZHYodCk6dXYobi9zdihlKSkvdXYodVMoZSkvdVModCkpLHI9bipodih1Uyh0KSxpKS9pO2lmKCFpKXJldHVybiBsUztmdW5jdGlvbiBvKHQsZSl7cj4wP2U8LVF5K0t5JiYoZT0tUXkrS3kpOmU+UXktS3kmJihlPVF5LUt5KTt2YXIgbj1yL2h2KHVTKGUpLGkpO3JldHVybltuKmR2KGkqdCksci1uKnN2KGkqdCldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPXItZSxvPXB2KGkpKmZ2KHQqdCtuKm4pLGE9YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoYS09SnkqcHYodCkqcHYobikpLFthL2ksMipvdihodihyL28sMS9pKSktUXldfSxvfWZ1bmN0aW9uIGRTKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gcFModCxlKXt2YXIgbj1zdih0KSxpPXQ9PT1lP2R2KHQpOihuLXN2KGUpKS8oZS10KSxyPW4vaSt0O2lmKHJ2KGkpPEt5KXJldHVybiBkUztmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKmR2KG8pLHItbipzdihvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89YXYodCxydihuKSkqcHYobik7cmV0dXJuIG4qaTwwJiYoby09SnkqcHYodCkqcHYobikpLFtvL2ksci1wdihpKSpmdih0KnQrbipuKV19LG99c1MuaW52ZXJ0PW9TKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxsUy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKm92KGN2KGUpKS1ReV19LGRTLmludmVydD1kUzt2YXIgZlM9MS4zNDAyNjQsbVM9LS4wODExMDYsZ1M9ODkzZS02LF9TPS4wMDM3OTYseVM9ZnYoMykvMjtmdW5jdGlvbiB2Uyh0LGUpe3ZhciBuPV92KHlTKmR2KGUpKSxpPW4qbixyPWkqaSppO3JldHVyblt0KnN2KG4pLyh5UyooZlMrMyptUyppK3IqKDcqZ1MrOSpfUyppKSkpLG4qKGZTK21TKmkrciooZ1MrX1MqaSkpXX1mdW5jdGlvbiBiUyh0LGUpe3ZhciBuPXN2KGUpLGk9c3YodCkqbjtyZXR1cm5bbipkdih0KS9pLGR2KGUpL2ldfWZ1bmN0aW9uIHhTKHQsZSl7dmFyIG49ZSplLGk9bipuO3JldHVyblt0KiguODcwNy0uMTMxOTc5Km4raSooaSooLjAwMzk3MSpuLS4wMDE1MjkqaSktLjAxMzc5MSkpLGUqKDEuMDA3MjI2K24qKC4wMTUwODUraSooLjAyODg3NCpuLS4wNDQ0NzUtLjAwNTkxNippKSkpXX1mdW5jdGlvbiB3Uyh0LGUpe3JldHVybltzdihlKSpkdih0KSxkdihlKV19ZnVuY3Rpb24gU1ModCxlKXt2YXIgbj1zdihlKSxpPTErc3YodCkqbjtyZXR1cm5bbipkdih0KS9pLGR2KGUpL2ldfWZ1bmN0aW9uIE1TKHQsZSl7cmV0dXJuW3V2KG12KChReStlKS8yKSksLXRdfWZ1bmN0aW9uIEVTKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIFRTKHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIENTKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS55KX1mdW5jdGlvbiBBUyh0KXt2YXIgZT0wLG49dC5jaGlsZHJlbixpPW4mJm4ubGVuZ3RoO2lmKGkpZm9yKDstLWk+PTA7KWUrPW5baV0udmFsdWU7ZWxzZSBlPTE7dC52YWx1ZT1lfWZ1bmN0aW9uIGtTKHQsZSl7dmFyIG4saSxyLG8sYSxzPW5ldyBOUyh0KSxsPSt0LnZhbHVlJiYocy52YWx1ZT10LnZhbHVlKSxjPVtzXTtmb3IobnVsbD09ZSYmKGU9UFMpO249Yy5wb3AoKTspaWYobCYmKG4udmFsdWU9K24uZGF0YS52YWx1ZSksKHI9ZShuLmRhdGEpKSYmKGE9ci5sZW5ndGgpKWZvcihuLmNoaWxkcmVuPW5ldyBBcnJheShhKSxvPWEtMTtvPj0wOy0tbyljLnB1c2goaT1uLmNoaWxkcmVuW29dPW5ldyBOUyhyW29dKSksaS5wYXJlbnQ9bixpLmRlcHRoPW4uZGVwdGgrMTtyZXR1cm4gcy5lYWNoQmVmb3JlKElTKX1mdW5jdGlvbiBQUyh0KXtyZXR1cm4gdC5jaGlsZHJlbn1mdW5jdGlvbiBMUyh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24gSVModCl7dmFyIGU9MDtkb3t0LmhlaWdodD1lfXdoaWxlKCh0PXQucGFyZW50KSYmdC5oZWlnaHQ8KytlKX1mdW5jdGlvbiBOUyh0KXt0aGlzLmRhdGE9dCx0aGlzLmRlcHRoPXRoaXMuaGVpZ2h0PTAsdGhpcy5wYXJlbnQ9bnVsbH12Uy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4saT1lLHI9aSppLG89cipyKnIsYT0wO2E8MTImJihvPShyPShpLT1uPShpKihmUyttUypyK28qKGdTK19TKnIpKS1lKS8oZlMrMyptUypyK28qKDcqZ1MrOSpfUypyKSkpKmkpKnIqciwhKHJ2KG4pPFp5KSk7KythKTtyZXR1cm5beVMqdCooZlMrMyptUypyK28qKDcqZ1MrOSpfUypyKSkvc3YoaSksX3YoZHYoaSkveVMpXX0sYlMuaW52ZXJ0PW9TKG92KSx4Uy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpPWUscj0yNTtkb3t2YXIgbz1pKmksYT1vKm87aS09bj0oaSooMS4wMDcyMjYrbyooLjAxNTA4NSthKiguMDI4ODc0Km8tLjA0NDQ3NS0uMDA1OTE2KmEpKSktZSkvKDEuMDA3MjI2K28qKC4wNDUyNTUrYSooLjI1OTg2NipvLS4zMTEzMjUtLjAwNTkxNioxMSphKSkpfXdoaWxlKHJ2KG4pPkt5JiYtLXI+MCk7cmV0dXJuW3QvKC44NzA3KyhvPWkqaSkqKG8qKG8qbypvKiguMDAzOTcxLS4wMDE1MjkqbyktLjAxMzc5MSktLjEzMTk3OSkpLGldfSx3Uy5pbnZlcnQ9b1MoX3YpLFNTLmludmVydD1vUygoZnVuY3Rpb24odCl7cmV0dXJuIDIqb3YodCl9KSksTVMuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqb3YoY3YodCkpLVF5XX0sTlMucHJvdG90eXBlPWtTLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TlMsY291bnQ6ZnVuY3Rpb24gUlMoKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoQVMpfSxlYWNoOmZ1bmN0aW9uIE9TKHQpe3ZhciBlLG4saSxyLG89dGhpcyxhPVtvXTtkb3tmb3IoZT1hLnJldmVyc2UoKSxhPVtdO289ZS5wb3AoKTspaWYodChvKSxuPW8uY2hpbGRyZW4pZm9yKGk9MCxyPW4ubGVuZ3RoO2k8cjsrK2kpYS5wdXNoKG5baV0pfXdoaWxlKGEubGVuZ3RoKTtyZXR1cm4gdGhpc30sZWFjaEFmdGVyOmZ1bmN0aW9uIHpTKHQpe2Zvcih2YXIgZSxuLGkscj10aGlzLG89W3JdLGE9W107cj1vLnBvcCgpOylpZihhLnB1c2gociksZT1yLmNoaWxkcmVuKWZvcihuPTAsaT1lLmxlbmd0aDtuPGk7KytuKW8ucHVzaChlW25dKTtmb3IoO3I9YS5wb3AoKTspdChyKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbiBEUyh0KXtmb3IodmFyIGUsbixpPXRoaXMscj1baV07aT1yLnBvcCgpOylpZih0KGkpLGU9aS5jaGlsZHJlbilmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKXIucHVzaChlW25dKTtyZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uIEJTKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPSt0KGUuZGF0YSl8fDAsaT1lLmNoaWxkcmVuLHI9aSYmaS5sZW5ndGg7LS1yPj0wOyluKz1pW3JdLnZhbHVlO2UudmFsdWU9bn0pKX0sc29ydDpmdW5jdGlvbiBIUyh0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24gRlModCl7Zm9yKHZhciBlPXRoaXMsbj0oZnVuY3Rpb24gaSh0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciBuPXQuYW5jZXN0b3JzKCksaT1lLmFuY2VzdG9ycygpLHI9bnVsbDt0PW4ucG9wKCksZT1pLnBvcCgpO2Zvcig7dD09PWU7KXI9dCx0PW4ucG9wKCksZT1pLnBvcCgpO3JldHVybiByfSkoZSx0KSxyPVtlXTtlIT09bjspci5wdXNoKGU9ZS5wYXJlbnQpO2Zvcih2YXIgbz1yLmxlbmd0aDt0IT09bjspci5zcGxpY2UobywwLHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHJ9LGFuY2VzdG9yczpmdW5jdGlvbiBWUygpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0KTtyZXR1cm4gZX0sZGVzY2VuZGFudHM6ZnVuY3Rpb24gVVMoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihlKXt0LnB1c2goZSl9KSksdH0sbGVhdmVzOmZ1bmN0aW9uIGpTKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaEJlZm9yZSgoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8dC5wdXNoKGUpfSkpLHR9LGxpbmtzOmZ1bmN0aW9uIEdTKCl7dmFyIHQ9dGhpcyxlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKG4pe24hPT10JiZlLnB1c2goe3NvdXJjZTpuLnBhcmVudCx0YXJnZXQ6bn0pfSkpLGV9LGNvcHk6ZnVuY3Rpb24gV1MoKXtyZXR1cm4ga1ModGhpcykuZWFjaEJlZm9yZShMUyl9fTt2YXIgcVM9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIFlTKHQpe2Zvcih2YXIgZSxuLGk9MCxyPSh0PShmdW5jdGlvbiBvKHQpe2Zvcih2YXIgZSxuLGk9dC5sZW5ndGg7aTspbj1NYXRoLnJhbmRvbSgpKmktLXwwLGU9dFtpXSx0W2ldPXRbbl0sdFtuXT1lO3JldHVybiB0fSkocVMuY2FsbCh0KSkpLmxlbmd0aCxhPVtdO2k8cjspZT10W2ldLG4mJktTKG4sZSk/KytpOihuPUpTKGE9WFMoYSxlKSksaT0wKTtyZXR1cm4gbn1mdW5jdGlvbiBYUyh0LGUpe3ZhciBuLGk7aWYoWlMoZSx0KSlyZXR1cm5bZV07Zm9yKG49MDtuPHQubGVuZ3RoOysrbilpZigkUyhlLHRbbl0pJiZaUyhRUyh0W25dLGUpLHQpKXJldHVyblt0W25dLGVdO2ZvcihuPTA7bjx0Lmxlbmd0aC0xOysrbilmb3IoaT1uKzE7aTx0Lmxlbmd0aDsrK2kpaWYoJFMoUVModFtuXSx0W2ldKSxlKSYmJFMoUVModFtuXSxlKSx0W2ldKSYmJFMoUVModFtpXSxlKSx0W25dKSYmWlModE0odFtuXSx0W2ldLGUpLHQpKXJldHVyblt0W25dLHRbaV0sZV07dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uICRTKHQsZSl7dmFyIG49dC5yLWUucixpPWUueC10Lngscj1lLnktdC55O3JldHVybiBuPDB8fG4qbjxpKmkrcipyfWZ1bmN0aW9uIEtTKHQsZSl7dmFyIG49dC5yLWUucisxZS02LGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG4+MCYmbipuPmkqaStyKnJ9ZnVuY3Rpb24gWlModCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoOysrbilpZighS1ModCxlW25dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBKUyh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm57eDp0LngseTp0Lnkscjp0LnJ9fSkodFswXSk7Y2FzZSAyOnJldHVybiBRUyh0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gdE0odFswXSx0WzFdLHRbMl0pfX1mdW5jdGlvbiBRUyh0LGUpe3ZhciBuPXQueCxpPXQueSxyPXQucixvPWUueCxhPWUueSxzPWUucixsPW8tbixjPWEtaSx1PXMtcixoPU1hdGguc3FydChsKmwrYypjKTtyZXR1cm57eDoobitvK2wvaCp1KS8yLHk6KGkrYStjL2gqdSkvMixyOihoK3IrcykvMn19ZnVuY3Rpb24gdE0odCxlLG4pe3ZhciBpPXQueCxyPXQueSxvPXQucixhPWUueCxzPWUueSxsPWUucixjPW4ueCx1PW4ueSxoPW4ucixkPWktYSxwPWktYyxmPXItcyxtPXItdSxnPWwtbyxfPWgtbyx5PWkqaStyKnItbypvLHY9eS1hKmEtcypzK2wqbCxiPXktYypjLXUqdStoKmgseD1wKmYtZCptLHc9KGYqYi1tKnYpLygyKngpLWksUz0obSpnLWYqXykveCxNPShwKnYtZCpiKS8oMip4KS1yLEU9KGQqXy1wKmcpL3gsVD1TKlMrRSpFLTEsQz0yKihvK3cqUytNKkUpLEE9dyp3K00qTS1vKm8saz0tKFQ/KEMrTWF0aC5zcXJ0KEMqQy00KlQqQSkpLygyKlQpOkEvQyk7cmV0dXJue3g6aSt3K1Mqayx5OnIrTStFKmsscjprfX1mdW5jdGlvbiBlTSh0LGUsbil7dmFyIGkscixvLGEscz10LngtZS54LGw9dC55LWUueSxjPXMqcytsKmw7Yz8ocj1lLnIrbi5yLGE9dC5yK24uciwocio9cik+KGEqPWEpPyhpPShjK2EtcikvKDIqYyksbz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxhL2MtaSppKSksbi54PXQueC1pKnMtbypsLG4ueT10LnktaSpsK28qcyk6KGk9KGMrci1hKS8oMipjKSxvPU1hdGguc3FydChNYXRoLm1heCgwLHIvYy1pKmkpKSxuLng9ZS54K2kqcy1vKmwsbi55PWUueStpKmwrbypzKSk6KG4ueD1lLngrbi5yLG4ueT1lLnkpfWZ1bmN0aW9uIG5NKHQsZSl7dmFyIG49dC5yK2Uuci0xZS02LGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG4+MCYmbipuPmkqaStyKnJ9ZnVuY3Rpb24gaU0odCl7dmFyIGU9dC5fLG49dC5uZXh0Ll8saT1lLnIrbi5yLHI9KGUueCpuLnIrbi54KmUucikvaSxvPShlLnkqbi5yK24ueSplLnIpL2k7cmV0dXJuIHIqcitvKm99ZnVuY3Rpb24gck0odCl7dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIG9NKHQpe2lmKCEocj10Lmxlbmd0aCkpcmV0dXJuIDA7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaDtpZigoZT10WzBdKS54PTAsZS55PTAsIShyPjEpKXJldHVybiBlLnI7aWYoZS54PS0obj10WzFdKS5yLG4ueD1lLnIsbi55PTAsIShyPjIpKXJldHVybiBlLnIrbi5yO2VNKG4sZSxpPXRbMl0pLGU9bmV3IHJNKGUpLG49bmV3IHJNKG4pLGk9bmV3IHJNKGkpLGUubmV4dD1pLnByZXZpb3VzPW4sbi5uZXh0PWUucHJldmlvdXM9aSxpLm5leHQ9bi5wcmV2aW91cz1lO3Q6Zm9yKHM9MztzPHI7KytzKXtlTShlLl8sbi5fLGk9dFtzXSksaT1uZXcgck0oaSksbD1uLm5leHQsYz1lLnByZXZpb3VzLHU9bi5fLnIsaD1lLl8ucjtkb3tpZih1PD1oKXtpZihuTShsLl8saS5fKSl7ZS5uZXh0PW49bCxuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9dSs9bC5fLnIsbD1sLm5leHR9ZWxzZXtpZihuTShjLl8saS5fKSl7KGU9YykubmV4dD1uLG4ucHJldmlvdXM9ZSwtLXM7Y29udGludWUgdH1oKz1jLl8ucixjPWMucHJldmlvdXN9fXdoaWxlKGwhPT1jLm5leHQpO2ZvcihpLnByZXZpb3VzPWUsaS5uZXh0PW4sZS5uZXh0PW4ucHJldmlvdXM9bj1pLG89aU0oZSk7KGk9aS5uZXh0KSE9PW47KShhPWlNKGkpKTxvJiYoZT1pLG89YSk7bj1lLm5leHR9Zm9yKGU9W24uX10saT1uOyhpPWkubmV4dCkhPT1uOyllLnB1c2goaS5fKTtmb3IoaT1ZUyhlKSxzPTA7czxyOysrcykoZT10W3NdKS54LT1pLngsZS55LT1pLnk7cmV0dXJuIGkucn1mdW5jdGlvbiBhTSh0KXtyZXR1cm4gbnVsbD09dD9udWxsOnNNKHQpfWZ1bmN0aW9uIHNNKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdH1mdW5jdGlvbiBsTSgpe3JldHVybiAwfWZ1bmN0aW9uIGNNKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB1TSh0KXtyZXR1cm4gTWF0aC5zcXJ0KHQudmFsdWUpfWZ1bmN0aW9uIGhNKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLmNoaWxkcmVufHwoZS5yPU1hdGgubWF4KDAsK3QoZSl8fDApKX19ZnVuY3Rpb24gZE0odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7aWYoaT1uLmNoaWxkcmVuKXt2YXIgaSxyLG8sYT1pLmxlbmd0aCxzPXQobikqZXx8MDtpZihzKWZvcihyPTA7cjxhOysrcilpW3JdLnIrPXM7aWYobz1vTShpKSxzKWZvcihyPTA7cjxhOysrcilpW3JdLnItPXM7bi5yPW8rc319fWZ1bmN0aW9uIHBNKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLnBhcmVudDtlLnIqPXQsbiYmKGUueD1uLngrdCplLngsZS55PW4ueSt0KmUueSl9fWZ1bmN0aW9uIGZNKHQpe3QueDA9TWF0aC5yb3VuZCh0LngwKSx0LnkwPU1hdGgucm91bmQodC55MCksdC54MT1NYXRoLnJvdW5kKHQueDEpLHQueTE9TWF0aC5yb3VuZCh0LnkxKX1mdW5jdGlvbiBtTSh0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKGktZSkvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueTA9bixvLnkxPXIsby54MD1lLG8ueDE9ZSs9by52YWx1ZSpjfXZhciBnTT17ZGVwdGg6LTF9LF9NPXt9O2Z1bmN0aW9uIHlNKHQpe3JldHVybiB0LmlkfWZ1bmN0aW9uIHZNKHQpe3JldHVybiB0LnBhcmVudElkfWZ1bmN0aW9uIGJNKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIHhNKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVswXTp0LnR9ZnVuY3Rpb24gd00odCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lW2UubGVuZ3RoLTFdOnQudH1mdW5jdGlvbiBTTSh0LGUsbil7dmFyIGk9bi8oZS5pLXQuaSk7ZS5jLT1pLGUucys9bix0LmMrPWksZS56Kz1uLGUubSs9bn1mdW5jdGlvbiBNTSh0LGUsbil7cmV0dXJuIHQuYS5wYXJlbnQ9PT1lLnBhcmVudD90LmE6bn1mdW5jdGlvbiBFTSh0LGUpe3RoaXMuXz10LHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1udWxsLHRoaXMuQT1udWxsLHRoaXMuYT10aGlzLHRoaXMuej0wLHRoaXMubT0wLHRoaXMuYz0wLHRoaXMucz0wLHRoaXMudD1udWxsLHRoaXMuaT1lfWZ1bmN0aW9uIFRNKHQsZSxuLGkscil7Zm9yKHZhciBvLGE9dC5jaGlsZHJlbixzPS0xLGw9YS5sZW5ndGgsYz10LnZhbHVlJiYoci1uKS90LnZhbHVlOysrczxsOykobz1hW3NdKS54MD1lLG8ueDE9aSxvLnkwPW4sby55MT1uKz1vLnZhbHVlKmN9RU0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTlMucHJvdG90eXBlKTt2YXIgQ009KDErTWF0aC5zcXJ0KDUpKS8yO2Z1bmN0aW9uIEFNKHQsZSxuLGkscixvKXtmb3IodmFyIGEscyxsLGMsdSxoLGQscCxmLG0sZyxfPVtdLHk9ZS5jaGlsZHJlbix2PTAsYj0wLHg9eS5sZW5ndGgsdz1lLnZhbHVlO3Y8eDspe2w9ci1uLGM9by1pO2Rve3U9eVtiKytdLnZhbHVlfXdoaWxlKCF1JiZiPHgpO2ZvcihoPWQ9dSxnPXUqdSoobT1NYXRoLm1heChjL2wsbC9jKS8odyp0KSksZj1NYXRoLm1heChkL2csZy9oKTtiPHg7KytiKXtpZih1Kz1zPXlbYl0udmFsdWUsczxoJiYoaD1zKSxzPmQmJihkPXMpLGc9dSp1Km0sKHA9TWF0aC5tYXgoZC9nLGcvaCkpPmYpe3UtPXM7YnJlYWt9Zj1wfV8ucHVzaChhPXt2YWx1ZTp1LGRpY2U6bDxjLGNoaWxkcmVuOnkuc2xpY2UodixiKX0pLGEuZGljZT9tTShhLG4saSxyLHc/aSs9Yyp1L3c6byk6VE0oYSxuLGksdz9uKz1sKnUvdzpyLG8pLHctPXUsdj1ifXJldHVybiBffXZhciBrTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbixpLHIsbyl7QU0oZSx0LG4saSxyLG8pfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShDTSk7dmFyIFBNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLGkscixvKXtpZigoYT10Ll9zcXVhcmlmeSkmJmEucmF0aW89PT1lKWZvcih2YXIgYSxzLGwsYyx1LGg9LTEsZD1hLmxlbmd0aCxwPXQudmFsdWU7KytoPGQ7KXtmb3IobD0ocz1hW2hdKS5jaGlsZHJlbixjPXMudmFsdWU9MCx1PWwubGVuZ3RoO2M8dTsrK2Mpcy52YWx1ZSs9bFtjXS52YWx1ZTtzLmRpY2U/bU0ocyxuLGkscixpKz0oby1pKSpzLnZhbHVlL3ApOlRNKHMsbixpLG4rPShyLW4pKnMudmFsdWUvcCxvKSxwLT1zLnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9YT1BTShlLHQsbixpLHIsbyksYS5yYXRpbz1lfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShDTSk7ZnVuY3Rpb24gTE0odCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pLShlWzFdLXRbMV0pKihuWzBdLXRbMF0pfWZ1bmN0aW9uIElNKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfWZ1bmN0aW9uIE5NKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVswLDFdLGk9MixyPTI7cjxlOysrcil7Zm9yKDtpPjEmJkxNKHRbbltpLTJdXSx0W25baS0xXV0sdFtyXSk8PTA7KS0taTtuW2krK109cn1yZXR1cm4gbi5zbGljZSgwLGkpfWZ1bmN0aW9uIFJNKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9dmFyIE9NPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuKXtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sMT09PWFyZ3VtZW50cy5sZW5ndGg/KG49dCx0PTApOm4tPXQsZnVuY3Rpb24oKXtyZXR1cm4gZSgpKm4rdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKSx6TT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7dmFyIGkscjtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgbztpZihudWxsIT1pKW89aSxpPW51bGw7ZWxzZSBkb3tpPTIqZSgpLTEsbz0yKmUoKS0xLHI9aSppK28qb313aGlsZSghcnx8cj4xKTtyZXR1cm4gdCtuKm8qTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHIpL3IpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLERNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4oKXt2YXIgdD16TS5zb3VyY2UoZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cCh0KCkpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLEJNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsaT0wO2k8dDsrK2kpbis9ZSgpO3JldHVybiBufX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUk0pLEhNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7dmFyIG49Qk0uc291cmNlKGUpKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKCkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKSxGTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybi1NYXRoLmxvZygxLWUoKSkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFJNKTtmdW5jdGlvbiBWTSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc31mdW5jdGlvbiBVTSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuaW50ZXJwb2xhdG9yKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5pbnRlcnBvbGF0b3IoZSkuZG9tYWluKHQpfXJldHVybiB0aGlzfXZhciBqTT1BcnJheS5wcm90b3R5cGUsR009ak0ubWFwLFdNPWpNLnNsaWNlLHFNPXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIFlNKCl7dmFyIHQ9amcoKSxlPVtdLG49W10saT1xTTtmdW5jdGlvbiByKHIpe3ZhciBvPXIrIiIsYT10LmdldChvKTtpZighYSl7aWYoaSE9PXFNKXJldHVybiBpO3Quc2V0KG8sYT1lLnB1c2gocikpfXJldHVybiBuWyhhLTEpJW4ubGVuZ3RoXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9amcoKTtmb3IodmFyIGksbyxhPS0xLHM9bi5sZW5ndGg7KythPHM7KXQuaGFzKG89KGk9blthXSkrIiIpfHx0LnNldChvLGUucHVzaChpKSk7cmV0dXJuIHJ9LHIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49V00uY2FsbCh0KSxyKTpuLnNsaWNlKCl9LHIudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHIpOml9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBZTShlLG4pLnVua25vd24oaSl9LFZNLmFwcGx5KHIsYXJndW1lbnRzKSxyfWZ1bmN0aW9uIFhNKCl7dmFyIHQsZSxuPVlNKCkudW5rbm93bih2b2lkIDApLGk9bi5kb21haW4scj1uLnJhbmdlLG89WzAsMV0sYT0hMSxzPTAsbD0wLGM9LjU7ZnVuY3Rpb24gdSgpe3ZhciBuPWkoKS5sZW5ndGgsdT1vWzFdPG9bMF0saD1vW3UtMF0sZD1vWzEtdV07dD0oZC1oKS9NYXRoLm1heCgxLG4tcysyKmwpLGEmJih0PU1hdGguZmxvb3IodCkpLGgrPShkLWgtdCoobi1zKSkqYyxlPXQqKDEtcyksYSYmKGg9TWF0aC5yb3VuZChoKSxlPU1hdGgucm91bmQoZSkpO3ZhciBwPUtsKG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGgrdCplfSkpO3JldHVybiByKHU/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSBuLnVua25vd24sbi5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCksdSgpKTppKCl9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89Wyt0WzBdLCt0WzFdXSx1KCkpOm8uc2xpY2UoKX0sbi5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBvPVsrdFswXSwrdFsxXV0sYT0hMCx1KCl9LG4uYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LG4uc3RlcD1mdW5jdGlvbigpe3JldHVybiB0fSxuLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhdCx1KCkpOmF9LG4ucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLGw9K3QpLHUoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSx0KSx1KCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSt0LHUoKSk6bH0sbi5hbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6Y30sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFhNKGkoKSxvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSxWTS5hcHBseSh1KCksYXJndW1lbnRzKX1mdW5jdGlvbiAkTSh0KXt2YXIgZT10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiAkTShlKCkpfSx0fWZ1bmN0aW9uIEtNKCl7cmV0dXJuICRNKFhNLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIFpNKHQpe3JldHVybit0fXZhciBKTT1bMCwxXTtmdW5jdGlvbiBRTSh0KXtyZXR1cm4gdH1mdW5jdGlvbiB0RSh0LGUpe3JldHVybihlLT10PSt0KT9mdW5jdGlvbihuKXtyZXR1cm4obi10KS9lfTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShpc05hTihlKT9OYU46LjUpfWZ1bmN0aW9uIGVFKHQpe3ZhciBlLG49dFswXSxpPXRbdC5sZW5ndGgtMV07cmV0dXJuIG4+aSYmKGU9bixuPWksaT1lKSxmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgobixNYXRoLm1pbihpLHQpKX19ZnVuY3Rpb24gbkUodCxlLG4pe3ZhciBpPXRbMF0scj10WzFdLG89ZVswXSxhPWVbMV07cmV0dXJuIHI8aT8oaT10RShyLGkpLG89bihhLG8pKTooaT10RShpLHIpLG89bihvLGEpKSxmdW5jdGlvbih0KXtyZXR1cm4gbyhpKHQpKX19ZnVuY3Rpb24gaUUodCxlLG4pe3ZhciBpPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9LTE7Zm9yKHRbaV08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrYTxpOylyW2FdPXRFKHRbYV0sdFthKzFdKSxvW2FdPW4oZVthXSxlW2ErMV0pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1EbCh0LGUsMSxpKS0xO3JldHVybiBvW25dKHJbbl0oZSkpfX1mdW5jdGlvbiByRSh0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5yYW5nZSh0LnJhbmdlKCkpLmludGVycG9sYXRlKHQuaW50ZXJwb2xhdGUoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBvRSgpe3ZhciB0LGUsbixpLHIsbyxhPUpNLHM9Sk0sbD1jcCxjPVFNO2Z1bmN0aW9uIHUoKXtyZXR1cm4gaT1NYXRoLm1pbihhLmxlbmd0aCxzLmxlbmd0aCk+Mj9pRTpuRSxyPW89bnVsbCxofWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP246KHJ8fChyPWkoYS5tYXAodCkscyxsKSkpKHQoYyhlKSkpfXJldHVybiBoLmludmVydD1mdW5jdGlvbihuKXtyZXR1cm4gYyhlKChvfHwobz1pKHMsYS5tYXAodCkscnApKSkobikpKX0saC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9R00uY2FsbCh0LFpNKSxjPT09UU18fChjPWVFKGEpKSx1KCkpOmEuc2xpY2UoKX0saC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1XTS5jYWxsKHQpLHUoKSk6cy5zbGljZSgpfSxoLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHM9V00uY2FsbCh0KSxsPXVwLHUoKX0saC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10P2VFKGEpOlFNLGgpOmMhPT1RTX0saC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LHUoKSk6bH0saC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaCk6bn0sZnVuY3Rpb24obixpKXtyZXR1cm4gdD1uLGU9aSx1KCl9fWZ1bmN0aW9uIGFFKHQsZSl7cmV0dXJuIG9FKCkodCxlKX1mdW5jdGlvbiBzRSh0LGUsbixpKXt2YXIgcixvPW5jKHQsZSxuKTtzd2l0Y2goKGk9a3kobnVsbD09aT8iLGYiOmkpKS50eXBlKXtjYXNlInMiOnZhciBhPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9R3kobyxhKSl8fChpLnByZWNpc2lvbj1yKSxCeShpLGEpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPWkucHJlY2lzaW9ufHxpc05hTihyPVd5KG8sTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChpLnByZWNpc2lvbj1yLSgiZSI9PT1pLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9ankobykpfHwoaS5wcmVjaXNpb249ci0yKigiJSI9PT1pLnR5cGUpKX1yZXR1cm4gRHkoaSl9ZnVuY3Rpb24gbEUodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiB0YyhuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7dmFyIGk9ZSgpO3JldHVybiBzRShpWzBdLGlbaS5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBpLHI9ZSgpLG89MCxhPXIubGVuZ3RoLTEscz1yW29dLGw9clthXTtyZXR1cm4gbDxzJiYoaT1zLHM9bCxsPWksaT1vLG89YSxhPWkpLChpPWVjKHMsbCxuKSk+MD9pPWVjKHM9TWF0aC5mbG9vcihzL2kpKmksbD1NYXRoLmNlaWwobC9pKSppLG4pOmk8MCYmKGk9ZWMocz1NYXRoLmNlaWwocyppKS9pLGw9TWF0aC5mbG9vcihsKmkpL2ksbikpLGk+MD8ocltvXT1NYXRoLmZsb29yKHMvaSkqaSxyW2FdPU1hdGguY2VpbChsL2kpKmksZShyKSk6aTwwJiYocltvXT1NYXRoLmNlaWwocyppKS9pLHJbYV09TWF0aC5mbG9vcihsKmkpL2ksZShyKSksdH0sdH1mdW5jdGlvbiBjRSgpe3ZhciB0PWFFKFFNLFFNKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHJFKHQsY0UoKSl9LFZNLmFwcGx5KHQsYXJndW1lbnRzKSxsRSh0KX1mdW5jdGlvbiB1RSh0LGUpe3ZhciBuLGk9MCxyPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W2ldLGE9dFtyXTtyZXR1cm4gYTxvJiYobj1pLGk9cixyPW4sbj1vLG89YSxhPW4pLHRbaV09ZS5mbG9vcihvKSx0W3JdPWUuY2VpbChhKSx0fWZ1bmN0aW9uIGhFKHQpe3JldHVybiBNYXRoLmxvZyh0KX1mdW5jdGlvbiBkRSh0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gcEUodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBmRSh0KXtyZXR1cm4tTWF0aC5leHAoLXQpfWZ1bmN0aW9uIG1FKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBnRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiBfRSh0KXt2YXIgZSxuLGk9dChoRSxkRSkscj1pLmRvbWFpbixvPTEwO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9KShvKSxuPShmdW5jdGlvbiBzKHQpe3JldHVybiAxMD09PXQ/bUU6dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3codCxlKX19KShvKSxyKClbMF08MD8oZT1nRShlKSxuPWdFKG4pLHQocEUsZkUpKTp0KGhFLGRFKSxpfXJldHVybiBpLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsYSgpKTpvfSxpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSxhKCkpOnIoKX0saS50aWNrcz1mdW5jdGlvbih0KXt2YXIgaSxhPXIoKSxzPWFbMF0sbD1hW2EubGVuZ3RoLTFdOyhpPWw8cykmJihkPXMscz1sLGw9ZCk7dmFyIGMsdSxoLGQ9ZShzKSxwPWUobCksZj1udWxsPT10PzEwOit0LG09W107aWYoIShvJTEpJiZwLWQ8Zil7aWYoZD1NYXRoLnJvdW5kKGQpLTEscD1NYXRoLnJvdW5kKHApKzEscz4wKXtmb3IoO2Q8cDsrK2QpZm9yKHU9MSxjPW4oZCk7dTxvOysrdSlpZighKChoPWMqdSk8cykpe2lmKGg+bClicmVhazttLnB1c2goaCl9fWVsc2UgZm9yKDtkPHA7KytkKWZvcih1PW8tMSxjPW4oZCk7dT49MTstLXUpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIG09dGMoZCxwLE1hdGgubWluKHAtZCxmKSkubWFwKG4pO3JldHVybiBpP20ucmV2ZXJzZSgpOm19LGkudGlja0Zvcm1hdD1mdW5jdGlvbih0LHIpe2lmKG51bGw9PXImJihyPTEwPT09bz8iLjBlIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj1EeShyKSksdD09PTEvMClyZXR1cm4gcjtudWxsPT10JiYodD0xMCk7dmFyIGE9TWF0aC5tYXgoMSxvKnQvaS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPXQvbihNYXRoLnJvdW5kKGUodCkpKTtyZXR1cm4gaSpvPG8tLjUmJihpKj1vKSxpPD1hP3IodCk6IiJ9fSxpLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gcih1RShyKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguZmxvb3IoZSh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguY2VpbChlKHQpKSl9fSkpfSxpfWZ1bmN0aW9uIHlFKCl7dmFyIHQ9X0Uob0UoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiByRSh0LHlFKCkpLmJhc2UodC5iYXNlKCkpfSxWTS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiB2RSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmxvZzFwKE1hdGguYWJzKGUvdCkpfX1mdW5jdGlvbiBiRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmV4cG0xKE1hdGguYWJzKGUpKSp0fX1mdW5jdGlvbiB4RSh0KXt2YXIgZT0xLG49dCh2RShlKSxiRShlKSk7cmV0dXJuIG4uY29uc3RhbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dCh2RShlPStuKSxiRShlKSk6ZX0sbEUobil9ZnVuY3Rpb24gd0UodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LU1hdGgucG93KC1lLHQpOk1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIFNFKHQpe3JldHVybiB0PDA/LU1hdGguc3FydCgtdCk6TWF0aC5zcXJ0KHQpfWZ1bmN0aW9uIE1FKHQpe3JldHVybiB0PDA/LXQqdDp0KnR9ZnVuY3Rpb24gRUUodCl7dmFyIGU9dChRTSxRTSksbj0xO2Z1bmN0aW9uIGkoKXtyZXR1cm4gMT09PW4/dChRTSxRTSk6LjU9PT1uP3QoU0UsTUUpOnQod0Uobiksd0UoMS9uKSl9cmV0dXJuIGUuZXhwb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsaSgpKTpufSxsRShlKX1mdW5jdGlvbiBURSgpe3ZhciB0PUVFKG9FKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gckUodCxURSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxWTS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiBDRSgpe3ZhciB0LGU9W10sbj1bXSxpPVtdO2Z1bmN0aW9uIHIoKXt2YXIgdD0wLHI9TWF0aC5tYXgoMSxuLmxlbmd0aCk7Zm9yKGk9bmV3IEFycmF5KHItMSk7Kyt0PHI7KWlbdC0xXT1yYyhlLHQvcik7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/dDpuW0RsKGksZSldfXJldHVybiBvLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgcj1uLmluZGV4T2YodCk7cmV0dXJuIHI8MD9bTmFOLE5hTl06W3I+MD9pW3ItMV06ZVswXSxyPGkubGVuZ3RoP2lbcl06ZVtlLmxlbmd0aC0xXV19LG8uZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4saT0wLG89dC5sZW5ndGg7aTxvOysraSludWxsPT0obj10W2ldKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KFJsKSxyKCl9LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49V00uY2FsbCh0KSxyKCkpOm4uc2xpY2UoKX0sby51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbyk6dH0sby5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaS5zbGljZSgpfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQ0UoKS5kb21haW4oZSkucmFuZ2UobikudW5rbm93bih0KX0sVk0uYXBwbHkobyxhcmd1bWVudHMpfWZ1bmN0aW9uIEFFKCl7dmFyIHQsZT0wLG49MSxpPTEscj1bLjVdLG89WzAsMV07ZnVuY3Rpb24gYShlKXtyZXR1cm4gZTw9ZT9vW0RsKHIsZSwwLGkpXTp0fWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1XTS5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6YX0sYS50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEFFKCkuZG9tYWluKFtlLG5dKS5yYW5nZShvKS51bmtub3duKHQpfSxWTS5hcHBseShsRShhKSxhcmd1bWVudHMpfXZhciBrRT1uZXcgRGF0ZSxQRT1uZXcgRGF0ZTtmdW5jdGlvbiBMRSh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBMRSgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBrRS5zZXRUaW1lKCtlKSxQRS5zZXRUaW1lKCtpKSx0KGtFKSx0KFBFKSxNYXRoLmZsb29yKG4oa0UsUEUpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgSUU9TEUoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtJRS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP0xFKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOklFOm51bGx9O3ZhciBORT1JRSxSRT1JRS5yYW5nZSxPRT0xZTMsekU9NmU0LERFPTM2ZTUsQkU9ODY0ZTUsSEU9NjA0OGU1LEZFPUxFKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKk9FKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL09FfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxWRT1GRSxVRT1GRS5yYW5nZSxqRT1MRSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpPRSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSp6RSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS96RX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksR0U9akUsV0U9akUucmFuZ2UscUU9TEUoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqT0UtdC5nZXRNaW51dGVzKCkqekUpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqREUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvREV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxZRT1xRSxYRT1xRS5yYW5nZSwkRT1MRSgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnpFKS9CRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKSxLRT0kRSxaRT0kRS5yYW5nZTtmdW5jdGlvbiBKRSh0KXtyZXR1cm4gTEUoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnpFKS9IRX0pKX12YXIgUUU9SkUoMCksdFQ9SkUoMSksZVQ9SkUoMiksblQ9SkUoMyksaVQ9SkUoNCksclQ9SkUoNSksb1Q9SkUoNiksYVQ9UUUucmFuZ2Usc1Q9dFQucmFuZ2UsbFQ9ZVQucmFuZ2UsY1Q9blQucmFuZ2UsdVQ9aVQucmFuZ2UsaFQ9clQucmFuZ2UsZFQ9b1QucmFuZ2UscFQ9TEUoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxmVD1wVCxtVD1wVC5yYW5nZSxnVD1MRSgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7Z1QuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9MRSgoZnVuY3Rpb24oZSl7ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS90KSp0KSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIF9UPWdULHlUPWdULnJhbmdlLHZUPUxFKChmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnpFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3pFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbnV0ZXMoKX0pKSxiVD12VCx4VD12VC5yYW5nZSx3VD1MRSgoZnVuY3Rpb24odCl7dC5zZXRVVENNaW51dGVzKDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkRFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0RFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9KSksU1Q9d1QsTVQ9d1QucmFuZ2UsRVQ9TEUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9CRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKSxUVD1FVCxDVD1FVC5yYW5nZTtmdW5jdGlvbiBBVCh0KXtyZXR1cm4gTEUoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0hFfSkpfXZhciBrVD1BVCgwKSxQVD1BVCgxKSxMVD1BVCgyKSxJVD1BVCgzKSxOVD1BVCg0KSxSVD1BVCg1KSxPVD1BVCg2KSx6VD1rVC5yYW5nZSxEVD1QVC5yYW5nZSxCVD1MVC5yYW5nZSxIVD1JVC5yYW5nZSxGVD1OVC5yYW5nZSxWVD1SVC5yYW5nZSxVVD1PVC5yYW5nZSxqVD1MRSgoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ01vbnRoKCktdC5nZXRVVENNb250aCgpKzEyKihlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpfSkpLEdUPWpULFdUPWpULnJhbmdlLHFUPUxFKChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtxVC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0xFKChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWVQ9cVQsWFQ9cVQucmFuZ2U7ZnVuY3Rpb24gJFQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIEtUKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpfWZ1bmN0aW9uIFpUKHQsZSxuKXtyZXR1cm57eTp0LG06ZSxkOm4sSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiBKVCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz11QyhyKSx1PWhDKHIpLGg9dUMobyksZD1oQyhvKSxwPXVDKGEpLGY9aEMoYSksbT11QyhzKSxnPWhDKHMpLF89dUMobCkseT1oQyhsKSx2PXthOmZ1bmN0aW9uIGIodCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24geCh0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sYjpmdW5jdGlvbiB3KHQpe3JldHVybiBsW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDpJQyxlOklDLGY6REMsZzpYQyxHOktDLEg6TkMsSTpSQyxqOk9DLEw6ekMsbTpCQyxNOkhDLHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBFKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTp2QSxzOmJBLFM6RkMsdTpWQyxVOlVDLFY6R0MsdzpXQyxXOnFDLHg6bnVsbCxYOm51bGwseTpZQyxZOiRDLFo6WkMsIiUiOnlBfSxUPXthOmZ1bmN0aW9uIEModCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQSh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBrKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gUCh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpKQyxlOkpDLGY6aUEsZzpmQSxHOmdBLEg6UUMsSTp0QSxqOmVBLEw6bkEsbTpyQSxNOm9BLHA6ZnVuY3Rpb24gTCh0KXtyZXR1cm4gclsrKHQuZ2V0VVRDSG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBJKHQpe3JldHVybiAxK35+KHQuZ2V0VVRDTW9udGgoKS8zKX0sUTp2QSxzOmJBLFM6YUEsdTpzQSxVOmxBLFY6dUEsdzpoQSxXOmRBLHg6bnVsbCxYOm51bGwseTpwQSxZOm1BLFo6X0EsIiUiOnlBfSxOPXthOmZ1bmN0aW9uIFIodCxlLG4pe3ZhciBpPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWZbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbiBPKHQsZSxuKXt2YXIgaT1oLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1kW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGI6ZnVuY3Rpb24geih0LGUsbil7dmFyIGk9Xy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09eVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxCOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPW0uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPWdbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbiBCKHQsbixpKXtyZXR1cm4gRyh0LGUsbixpKX0sZDp3QyxlOndDLGY6QUMsZzp5QyxHOl9DLEg6TUMsSTpNQyxqOlNDLEw6Q0MsbTp4QyxNOkVDLHA6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIGk9Yy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnA9dVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxxOmJDLFE6UEMsczpMQyxTOlRDLHU6cEMsVTpmQyxWOm1DLHc6ZEMsVzpnQyx4OmZ1bmN0aW9uIEYodCxlLGkpe3JldHVybiBHKHQsbixlLGkpfSxYOmZ1bmN0aW9uIFYodCxlLG4pe3JldHVybiBHKHQsaSxlLG4pfSx5OnlDLFk6X0MsWjp2QywiJSI6a0N9O2Z1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvLGE9W10scz0tMSxsPTAsYz10Lmxlbmd0aDtmb3IobiBpbnN0YW5jZW9mIERhdGV8fChuPW5ldyBEYXRlKCtuKSk7KytzPGM7KTM3PT09dC5jaGFyQ29kZUF0KHMpJiYoYS5wdXNoKHQuc2xpY2UobCxzKSksbnVsbCE9KHI9ckNbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPVpUKDE5MDAsdm9pZCAwLDEpO2lmKEcobyx0LG4rPSIiLDApIT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBvKXJldHVybiBuZXcgRGF0ZShvLlEpO2lmKCJzImluIG8pcmV0dXJuIG5ldyBEYXRlKDFlMypvLnMrKCJMImluIG8/by5MOjApKTtpZihlJiYhKCJaImluIG8pJiYoby5aPTApLCJwImluIG8mJihvLkg9by5IJTEyKzEyKm8ucCksdm9pZCAwPT09by5tJiYoby5tPSJxImluIG8/by5xOjApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPUtUKFpUKG8ueSwwLDEpKSkuZ2V0VVRDRGF5KCksaT1yPjR8fDA9PT1yP1BULmNlaWwoaSk6UFQoaSksaT1UVC5vZmZzZXQoaSw3KihvLlYtMSkpLG8ueT1pLmdldFVUQ0Z1bGxZZWFyKCksby5tPWkuZ2V0VVRDTW9udGgoKSxvLmQ9aS5nZXRVVENEYXRlKCkrKG8udys2KSU3KToocj0oaT0kVChaVChvLnksMCwxKSkpLmdldERheSgpLGk9cj40fHwwPT09cj90VC5jZWlsKGkpOnRUKGkpLGk9S0Uub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP0tUKFpUKG8ueSwwLDEpKS5nZXRVVENEYXkoKTokVChaVChvLnksMCwxKSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxLVChvKSk6JFQobyl9fWZ1bmN0aW9uIEcodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPU5bciBpbiByQz9lLmNoYXJBdChhKyspOnJdKXx8KGk9byh0LG4saSkpPDApcmV0dXJuLTF9ZWxzZSBpZihyIT1uLmNoYXJDb2RlQXQoaSsrKSlyZXR1cm4tMX1yZXR1cm4gaX1yZXR1cm4gdi54PVUobix2KSx2Llg9VShpLHYpLHYuYz1VKGUsdiksVC54PVUobixUKSxULlg9VShpLFQpLFQuYz1VKGUsVCkse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLHYpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLFQpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX12YXIgUVQsdEMsZUMsbkMsaUMsckM9eyItIjoiIixfOiIgIiwwOiIwIn0sb0M9L15ccypcZCsvLGFDPS9eJS8sc0M9L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIGxDKHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIGNDKHQpe3JldHVybiB0LnJlcGxhY2Uoc0MsIlxcJCYiKX1mdW5jdGlvbiB1Qyh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoY0MpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBoQyh0KXtmb3IodmFyIGU9e30sbj0tMSxpPXQubGVuZ3RoOysrbjxpOyllW3Rbbl0udG9Mb3dlckNhc2UoKV09bjtyZXR1cm4gZX1mdW5jdGlvbiBkQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBwQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBtQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVj0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBnQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBfQyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbis0KSk7cmV0dXJuIGk/KHQueT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5Qyh0LGUsbil7dmFyIGk9b0MuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQueT0raVswXSsoK2lbMF0+Njg/MTkwMDoyZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHZDKHQsZSxuKXt2YXIgaT0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuWj1pWzFdPzA6LShpWzJdKyhpWzNdfHwiMDAiKSksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYkModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnE9MyppWzBdLTMsbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geEModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lm09aVswXS0xLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFNDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5tPTAsdC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE1DKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5IPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEVDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFRDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5TPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5MPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtDKHQsZSxuKXt2YXIgaT1hQy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT9uK2lbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIFBDKHQsZSxuKXt2YXIgaT1vQy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LlE9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTEModCxlLG4pe3ZhciBpPW9DLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQucz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJQyh0LGUpe3JldHVybiBsQyh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIE5DKHQsZSl7cmV0dXJuIGxDKHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIFJDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0SG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBPQyh0LGUpe3JldHVybiBsQygxK0tFLmNvdW50KF9UKHQpLHQpLGUsMyl9ZnVuY3Rpb24gekModCxlKXtyZXR1cm4gbEModC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIERDKHQsZSl7cmV0dXJuIHpDKHQsZSkrIjAwMCJ9ZnVuY3Rpb24gQkModCxlKXtyZXR1cm4gbEModC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBIQyh0LGUpe3JldHVybiBsQyh0LmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIEZDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gVkModCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIFVDKHQsZSl7cmV0dXJuIGxDKFFFLmNvdW50KF9UKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBqQyh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiBlPj00fHwwPT09ZT9pVCh0KTppVC5jZWlsKHQpfWZ1bmN0aW9uIEdDKHQsZSl7cmV0dXJuIHQ9akModCksbEMoaVQuY291bnQoX1QodCksdCkrKDQ9PT1fVCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBXQyh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBxQyh0LGUpe3JldHVybiBsQyh0VC5jb3VudChfVCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gWUModCxlKXtyZXR1cm4gbEModC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIFhDKHQsZSl7cmV0dXJuIGxDKCh0PWpDKHQpKS5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uICRDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBLQyh0LGUpe3ZhciBuPXQuZ2V0RGF5KCk7cmV0dXJuIGxDKCh0PW4+PTR8fDA9PT1uP2lUKHQpOmlULmNlaWwodCkpLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gWkModCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStsQyhlLzYwfDAsIjAiLDIpK2xDKGUlNjAsIjAiLDIpfWZ1bmN0aW9uIEpDKHQsZSl7cmV0dXJuIGxDKHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gUUModCxlKXtyZXR1cm4gbEModC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gdEEodCxlKXtyZXR1cm4gbEModC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIGVBKHQsZSl7cmV0dXJuIGxDKDErVFQuY291bnQoWVQodCksdCksZSwzKX1mdW5jdGlvbiBuQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gaUEodCxlKXtyZXR1cm4gbkEodCxlKSsiMDAwIn1mdW5jdGlvbiByQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIG9BKHQsZSl7cmV0dXJuIGxDKHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gYUEodCxlKXtyZXR1cm4gbEModC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBzQSh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gbEEodCxlKXtyZXR1cm4gbEMoa1QuY291bnQoWVQodCktMSx0KSxlLDIpfWZ1bmN0aW9uIGNBKHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP05UKHQpOk5ULmNlaWwodCl9ZnVuY3Rpb24gdUEodCxlKXtyZXR1cm4gdD1jQSh0KSxsQyhOVC5jb3VudChZVCh0KSx0KSsoND09PVlUKHQpLmdldFVUQ0RheSgpKSxlLDIpfWZ1bmN0aW9uIGhBKHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGRBKHQsZSl7cmV0dXJuIGxDKFBULmNvdW50KFlUKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBwQSh0LGUpe3JldHVybiBsQyh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gZkEodCxlKXtyZXR1cm4gbEMoKHQ9Y0EodCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gbUEodCxlKXtyZXR1cm4gbEModC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGdBKHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gbEMoKHQ9bj49NHx8MD09PW4/TlQodCk6TlQuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBfQSgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24geUEoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gdkEodCl7cmV0dXJuK3R9ZnVuY3Rpb24gYkEodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiB4QSh0KXtyZXR1cm4gUVQ9SlQodCksdEM9UVQuZm9ybWF0LGVDPVFULnBhcnNlLG5DPVFULnV0Y0Zvcm1hdCxpQz1RVC51dGNQYXJzZSxRVH14QSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciB3QT0iJVktJW0tJWRUJUg6JU06JVMuJUxaIjt2YXIgU0E9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24gTUEodCl7cmV0dXJuIHQudG9JU09TdHJpbmcoKX06bkMod0EpO3ZhciBFQT0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uIFRBKHQpe3ZhciBlPW5ldyBEYXRlKHQpO3JldHVybiBpc05hTihlKT9udWxsOmV9OmlDKHdBKSxDQT0xZTMsQUE9NmU0LGtBPTM2ZTUsUEE9ODY0ZTUsTEE9MjU5MmU2LElBPTMxNTM2ZTY7ZnVuY3Rpb24gTkEodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIFJBKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT8rdDorbmV3IERhdGUoK3QpfWZ1bmN0aW9uIE9BKHQsZSxuLGkscixvLGEscyxsKXt2YXIgYz1hRShRTSxRTSksdT1jLmludmVydCxoPWMuZG9tYWluLGQ9bCgiLiVMIikscD1sKCI6JVMiKSxmPWwoIiVJOiVNIiksbT1sKCIlSSAlcCIpLGc9bCgiJWEgJWQiKSxfPWwoIiViICVkIikseT1sKCIlQiIpLHY9bCgiJVkiKSxiPVtbYSwxLENBXSxbYSw1LDVlM10sW2EsMTUsMTVlM10sW2EsMzAsM2U0XSxbbywxLEFBXSxbbyw1LDNlNV0sW28sMTUsOWU1XSxbbywzMCwxOGU1XSxbciwxLGtBXSxbciwzLDEwOGU1XSxbciw2LDIxNmU1XSxbciwxMiw0MzJlNV0sW2ksMSxQQV0sW2ksMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLExBXSxbZSwzLDc3NzZlNl0sW3QsMSxJQV1dO2Z1bmN0aW9uIHgocyl7cmV0dXJuKGEocyk8cz9kOm8ocyk8cz9wOnIocyk8cz9mOmkocyk8cz9tOmUocyk8cz9uKHMpPHM/ZzpfOnQocyk8cz95OnYpKHMpfWZ1bmN0aW9uIHcoZSxuLGkscil7aWYobnVsbD09ZSYmKGU9MTApLCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIG89TWF0aC5hYnMoaS1uKS9lLGE9T2woKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KGIsbyk7YT09PWIubGVuZ3RoPyhyPW5jKG4vSUEsaS9JQSxlKSxlPXQpOmE/KHI9KGE9YltvL2JbYS0xXVsyXTxiW2FdWzJdL28/YS0xOmFdKVsxXSxlPWFbMF0pOihyPU1hdGgubWF4KG5jKG4saSxlKSwxKSxlPXMpfXJldHVybiBudWxsPT1yP2U6ZS5ldmVyeShyKX1yZXR1cm4gYy5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHUodCkpfSxjLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9oKEdNLmNhbGwodCxSQSkpOmgoKS5tYXAoTkEpfSxjLnRpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1oKCkscj1pWzBdLG89aVtpLmxlbmd0aC0xXSxhPW88cjtyZXR1cm4gYSYmKG49cixyPW8sbz1uKSxuPShuPXcodCxyLG8sZSkpP24ucmFuZ2UocixvKzEpOltdLGE/bi5yZXZlcnNlKCk6bn0sYy50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/eDpsKGUpfSxjLm5pY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj1oKCk7cmV0dXJuKHQ9dyh0LG5bMF0sbltuLmxlbmd0aC0xXSxlKSk/aCh1RShuLHQpKTpjfSxjLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gckUoYyxPQSh0LGUsbixpLHIsbyxhLHMsbCkpfSxjfWZ1bmN0aW9uIHpBKCl7cmV0dXJuIFZNLmFwcGx5KE9BKF9ULGZULFFFLEtFLFlFLEdFLFZFLE5FLHRDKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBEQSgpe3ZhciB0LGUsbixpLHIsbz0wLGE9MSxzPVFNLGw9ITE7ZnVuY3Rpb24gYyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/cjpzKDA9PT1uPy41OihlPShpKGUpLXQpKm4sbD9NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpOmUpKX1yZXR1cm4gYy5kb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9aShvPStyWzBdKSxlPWkoYT0rclsxXSksbj10PT09ZT8wOjEvKGUtdCksYyk6W28sYV19LGMuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ISF0LGMpOmx9LGMuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsYyk6c30sYy51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsYyk6cn0sZnVuY3Rpb24ocil7cmV0dXJuIGk9cix0PXIobyksZT1yKGEpLG49dD09PWU/MDoxLyhlLXQpLGN9fWZ1bmN0aW9uIEJBKHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLmludGVycG9sYXRvcih0LmludGVycG9sYXRvcigpKS5jbGFtcCh0LmNsYW1wKCkpLnVua25vd24odC51bmtub3duKCkpfWZ1bmN0aW9uIEhBKCl7dmFyIHQ9RUUoREEoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBCQSh0LEhBKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LFVNLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBGQSgpe3ZhciB0LGUsbixpLHIsbyxhLHM9MCxsPS41LGM9MSx1PVFNLGg9ITE7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gaXNOYU4odD0rdCk/YToodD0uNSsoKHQ9K28odCkpLWUpKih0PGU/aTpyKSx1KGg/TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKTp0KSl9cmV0dXJuIGQuZG9tYWluPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW8ocz0rYVswXSksZT1vKGw9K2FbMV0pLG49byhjPSthWzJdKSxpPXQ9PT1lPzA6LjUvKGUtdCkscj1lPT09bj8wOi41LyhuLWUpLGQpOltzLGwsY119LGQuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ISF0LGQpOmh9LGQuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsZCk6dX0sZC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsZCk6YX0sZnVuY3Rpb24oYSl7cmV0dXJuIG89YSx0PWEocyksZT1hKGwpLG49YShjKSxpPXQ9PT1lPzA6LjUvKGUtdCkscj1lPT09bj8wOi41LyhuLWUpLGR9fWZ1bmN0aW9uIFZBKCl7dmFyIHQ9RUUoRkEoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBCQSh0LFZBKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LFVNLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBVQSh0KXtmb3IodmFyIGU9dC5sZW5ndGgvNnwwLG49bmV3IEFycmF5KGUpLGk9MDtpPGU7KW5baV09IiMiK3Quc2xpY2UoNippLDYqKytpKTtyZXR1cm4gbn12YXIgakE9VUEoIjFmNzdiNGZmN2YwZTJjYTAyY2Q2MjcyODk0NjdiZDhjNTY0YmUzNzdjMjdmN2Y3ZmJjYmQyMjE3YmVjZiIpLEdBPVVBKCI3ZmM5N2ZiZWFlZDRmZGMwODZmZmZmOTkzODZjYjBmMDAyN2ZiZjViMTc2NjY2NjYiKSxXQT1VQSgiMWI5ZTc3ZDk1ZjAyNzU3MGIzZTcyOThhNjZhNjFlZTZhYjAyYTY3NjFkNjY2NjY2IikscUE9VUEoImE2Y2VlMzFmNzhiNGIyZGY4YTMzYTAyY2ZiOWE5OWUzMWExY2ZkYmY2ZmZmN2YwMGNhYjJkNjZhM2Q5YWZmZmY5OWIxNTkyOCIpLFlBPVVBKCJmYmI0YWViM2NkZTNjY2ViYzVkZWNiZTRmZWQ5YTZmZmZmY2NlNWQ4YmRmZGRhZWNmMmYyZjIiKSxYQT1VQSgiYjNlMmNkZmRjZGFjY2JkNWU4ZjRjYWU0ZTZmNWM5ZmZmMmFlZjFlMmNjY2NjY2NjIiksJEE9VUEoImU0MWExYzM3N2ViODRkYWY0YTk4NGVhM2ZmN2YwMGZmZmYzM2E2NTYyOGY3ODFiZjk5OTk5OSIpLEtBPVVBKCI2NmMyYTVmYzhkNjI4ZGEwY2JlNzhhYzNhNmQ4NTRmZmQ5MmZlNWM0OTRiM2IzYjMiKSxaQT1VQSgiOGRkM2M3ZmZmZmIzYmViYWRhZmI4MDcyODBiMWQzZmRiNDYyYjNkZTY5ZmNjZGU1ZDlkOWQ5YmM4MGJkY2NlYmM1ZmZlZDZmIiksSkE9VUEoIjRlNzlhN2YyOGUyY2UxNTc1OTc2YjdiMjU5YTE0ZmVkYzk0OWFmN2FhMWZmOWRhNzljNzU1ZmJhYjBhYiIpO2Z1bmN0aW9uIFFBKHQpe3JldHVybiBKZCh0W3QubGVuZ3RoLTFdKX12YXIgdGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZDhiMzY1ZjVmNWY1NWFiNGFjIiwiYTY2MTFhZGZjMjdkODBjZGMxMDE4NTcxIiwiYTY2MTFhZGZjMjdkZjVmNWY1ODBjZGMxMDE4NTcxIiwiOGM1MTBhZDhiMzY1ZjZlOGMzYzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhZDhiMzY1ZjZlOGMzZjVmNWY1YzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIikubWFwKFVBKSxlaz1RQSh0ayksbms9bmV3IEFycmF5KDMpLmNvbmNhdCgiYWY4ZGMzZjdmN2Y3N2ZiZjdiIiwiN2IzMjk0YzJhNWNmYTZkYmEwMDA4ODM3IiwiN2IzMjk0YzJhNWNmZjdmN2Y3YTZkYmEwMDA4ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZjdmN2Y3ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIikubWFwKFVBKSxpaz1RQShuaykscms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTlhM2M5ZjdmN2Y3YTFkNzZhIiwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2IiwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2IiwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IikubWFwKFVBKSxvaz1RQShyayksYWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiOTk4ZWMzZjdmN2Y3ZjFhMzQwIiwiNWUzYzk5YjJhYmQyZmRiODYzZTY2MTAxIiwiNWUzYzk5YjJhYmQyZjdmN2Y3ZmRiODYzZTY2MTAxIiwiNTQyNzg4OTk4ZWMzZDhkYWViZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4OTk4ZWMzZDhkYWViZjdmN2Y3ZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IikubWFwKFVBKSxzaz1RQShhayksbGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZjdmN2Y3NjdhOWNmIiwiY2EwMDIwZjRhNTgyOTJjNWRlMDU3MWIwIiwiY2EwMDIwZjRhNTgyZjdmN2Y3OTJjNWRlMDU3MWIwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZWY4YTYyZmRkYmM3ZjdmN2Y3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIikubWFwKFVBKSxjaz1RQShsayksdWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZmZmZmZmOTk5OTk5IiwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwIiwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIikubWFwKFVBKSxoaz1RQSh1ayksZGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFiZmRiIiwiZDcxOTFjZmRhZTYxYWJkOWU5MmM3YmI2IiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkOWU5MmM3YmI2IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZmZmZmJmZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IikubWFwKFVBKSxwaz1RQShkayksZms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFjZjYwIiwiZDcxOTFjZmRhZTYxYTZkOTZhMWE5NjQxIiwiZDcxOTFjZmRhZTYxZmZmZmJmYTZkOTZhMWE5NjQxIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZmZmZmJmZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IikubWFwKFVBKSxtaz1RQShmayksZ2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTlkNTk0IiwiZDcxOTFjZmRhZTYxYWJkZGE0MmI4M2JhIiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkZGE0MmI4M2JhIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZmZmZmJmZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIikubWFwKFVBKSxfaz1RQShnaykseWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWY5OTlkOGM5MmNhMjVmIiwiZWRmOGZiYjJlMmUyNjZjMmE0MjM4YjQ1IiwiZWRmOGZiYjJlMmUyNjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKFVBKSx2az1RQSh5ayksYms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBlY2Y0OWViY2RhODg1NmE3IiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg0MTlkIiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkODEwZjdjNGQwMDRiIikubWFwKFVBKSx4az1RQShiayksd2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBmM2RiYThkZGI1NDNhMmNhIiwiZjBmOWU4YmFlNGJjN2JjY2M0MmI4Y2JlIiwiZjBmOWU4YmFlNGJjN2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg2OGFjMDg0MDgxIikubWFwKFVBKSxTaz1RQSh3ayksTWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlOGM4ZmRiYjg0ZTM0YTMzIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZDczMDFmIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmYjMwMDAwN2YwMDAwIikubWFwKFVBKSxFaz1RQShNayksVGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlMmYwYTZiZGRiMWM5MDk5IiwiZjZlZmY3YmRjOWUxNjdhOWNmMDI4MThhIiwiZjZlZmY3YmRjOWUxNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2YzU5MDE0NjM2IikubWFwKFVBKSxDaz1RQShUayksQWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlN2YyYTZiZGRiMmI4Y2JlIiwiZjFlZWY2YmRjOWUxNzRhOWNmMDU3MGIwIiwiZjFlZWY2YmRjOWUxNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDQ1YThkMDIzODU4IikubWFwKFVBKSxraz1RQShBayksUGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTdlMWVmYzk5NGM3ZGQxYzc3IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwY2UxMjU2IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTgwMDQzNjcwMDFmIikubWFwKFVBKSxMaz1RQShQayksSWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmRlMGRkZmE5ZmI1YzUxYjhhIiwiZmVlYmUyZmJiNGI5Zjc2OGExYWUwMTdlIiwiZmVlYmUyZmJiNGI5Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3NDkwMDZhIikubWFwKFVBKSxOaz1RQShJayksUms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWRmOGIxN2ZjZGJiMmM3ZmI4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MjI1ZWE4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MjUzNDk0MDgxZDU4IikubWFwKFVBKSxPaz1RQShSayksems9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjdmY2I5YWRkZDhlMzFhMzU0IiwiZmZmZmNjYzJlNjk5NzhjNjc5MjM4NDQzIiwiZmZmZmNjYzJlNjk5NzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA2ODM3MDA0NTI5IikubWFwKFVBKSxEaz1RQSh6ayksQms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZmN2JjZmVjNDRmZDk1ZjBlIiwiZmZmZmQ0ZmVkOThlZmU5OTI5Y2M0YzAyIiwiZmZmZmQ0ZmVkOThlZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOTkzNDA0NjYyNTA2IikubWFwKFVBKSxIaz1RQShCayksRms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZlZGEwZmViMjRjZjAzYjIwIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZTMxYTFjIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYmQwMDI2ODAwMDI2IikubWFwKFVBKSxWaz1RQShGayksVWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKFVBKSxqaz1RQShVayksR2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWUwYTFkOTliMzFhMzU0IiwiZWRmOGU5YmFlNGIzNzRjNDc2MjM4YjQ1IiwiZWRmOGU5YmFlNGIzNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKFVBKSxXaz1RQShHaykscWs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKFVBKSxZaz1RQShxayksWGs9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWZlZGY1YmNiZGRjNzU2YmIxIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NmE1MWEzIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNTQyNzhmM2YwMDdkIikubWFwKFVBKSwkaz1RQShYayksS2s9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlMGQyZmM5MjcyZGUyZDI2IiwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkIiwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkIikubWFwKFVBKSxaaz1RQShLayksSms9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlNmNlZmRhZTZiZTY1NTBkIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0IikubWFwKFVBKSxRaz1RQShKayk7dmFyIHRQPU9wKEZkKDMwMCwuNSwwKSxGZCgtMjQwLC41LDEpKSxlUD1PcChGZCgtMTAwLC43NSwuMzUpLEZkKDgwLDEuNSwuOCkpLG5QPU9wKEZkKDI2MCwuNzUsLjM1KSxGZCg4MCwxLjUsLjgpKSxpUD1GZCgpO3ZhciByUD1uZCgpLG9QPU1hdGguUEkvMyxhUD0yKk1hdGguUEkvMztmdW5jdGlvbiBzUCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihuKmUpKSldfX12YXIgbFA9c1AoVUEoIjQ0MDE1NDQ0MDI1NjQ1MDQ1NzQ1MDU1OTQ2MDc1YTQ2MDg1YzQ2MGE1ZDQ2MGI1ZTQ3MGQ2MDQ3MGU2MTQ3MTA2MzQ3MTE2NDQ3MTM2NTQ4MTQ2NzQ4MTY2ODQ4MTc2OTQ4MTg2YTQ4MWE2YzQ4MWI2ZDQ4MWM2ZTQ4MWQ2ZjQ4MWY3MDQ4MjA3MTQ4MjE3MzQ4MjM3NDQ4MjQ3NTQ4MjU3NjQ4MjY3NzQ4Mjg3ODQ4Mjk3OTQ3MmE3YTQ3MmM3YTQ3MmQ3YjQ3MmU3YzQ3MmY3ZDQ2MzA3ZTQ2MzI3ZTQ2MzM3ZjQ2MzQ4MDQ1MzU4MTQ1Mzc4MTQ1Mzg4MjQ0Mzk4MzQ0M2E4MzQ0M2I4NDQzM2Q4NDQzM2U4NTQyM2Y4NTQyNDA4NjQyNDE4NjQxNDI4NzQxNDQ4NzQwNDU4ODQwNDY4ODNmNDc4ODNmNDg4OTNlNDk4OTNlNGE4OTNlNGM4YTNkNGQ4YTNkNGU4YTNjNGY4YTNjNTA4YjNiNTE4YjNiNTI4YjNhNTM4YjNhNTQ4YzM5NTU4YzM5NTY4YzM4NTg4YzM4NTk4YzM3NWE4YzM3NWI4ZDM2NWM4ZDM2NWQ4ZDM1NWU4ZDM1NWY4ZDM0NjA4ZDM0NjE4ZDMzNjI4ZDMzNjM4ZDMyNjQ4ZTMyNjU4ZTMxNjY4ZTMxNjc4ZTMxNjg4ZTMwNjk4ZTMwNmE4ZTJmNmI4ZTJmNmM4ZTJlNmQ4ZTJlNmU4ZTJlNmY4ZTJkNzA4ZTJkNzE4ZTJjNzE4ZTJjNzI4ZTJjNzM4ZTJiNzQ4ZTJiNzU4ZTJhNzY4ZTJhNzc4ZTJhNzg4ZTI5Nzk4ZTI5N2E4ZTI5N2I4ZTI4N2M4ZTI4N2Q4ZTI3N2U4ZTI3N2Y4ZTI3ODA4ZTI2ODE4ZTI2ODI4ZTI2ODI4ZTI1ODM4ZTI1ODQ4ZTI1ODU4ZTI0ODY4ZTI0ODc4ZTIzODg4ZTIzODk4ZTIzOGE4ZDIyOGI4ZDIyOGM4ZDIyOGQ4ZDIxOGU4ZDIxOGY4ZDIxOTA4ZDIxOTE4YzIwOTI4YzIwOTI4YzIwOTM4YzFmOTQ4YzFmOTU4YjFmOTY4YjFmOTc4YjFmOTg4YjFmOTk4YTFmOWE4YTFlOWI4YTFlOWM4OTFlOWQ4OTFmOWU4OTFmOWY4ODFmYTA4ODFmYTE4ODFmYTE4NzFmYTI4NzIwYTM4NjIwYTQ4NjIxYTU4NTIxYTY4NTIyYTc4NTIyYTg4NDIzYTk4MzI0YWE4MzI1YWI4MjI1YWM4MjI2YWQ4MTI3YWQ4MTI4YWU4MDI5YWY3ZjJhYjA3ZjJjYjE3ZTJkYjI3ZDJlYjM3YzJmYjQ3YzMxYjU3YjMyYjY3YTM0YjY3OTM1Yjc3OTM3Yjg3ODM4Yjk3NzNhYmE3NjNiYmI3NTNkYmM3NDNmYmM3MzQwYmQ3MjQyYmU3MTQ0YmY3MDQ2YzA2ZjQ4YzE2ZTRhYzE2ZDRjYzI2YzRlYzM2YjUwYzQ2YTUyYzU2OTU0YzU2ODU2YzY2NzU4Yzc2NTVhYzg2NDVjYzg2MzVlYzk2MjYwY2E2MDYzY2I1ZjY1Y2I1ZTY3Y2M1YzY5Y2Q1YjZjY2Q1YTZlY2U1ODcwY2Y1NzczZDA1Njc1ZDA1NDc3ZDE1MzdhZDE1MTdjZDI1MDdmZDM0ZTgxZDM0ZDg0ZDQ0Yjg2ZDU0OTg5ZDU0ODhiZDY0NjhlZDY0NTkwZDc0MzkzZDc0MTk1ZDg0MDk4ZDgzZTliZDkzYzlkZDkzYmEwZGEzOWEyZGEzN2E1ZGIzNmE4ZGIzNGFhZGMzMmFkZGMzMGIwZGQyZmIyZGQyZGI1ZGUyYmI4ZGUyOWJhZGUyOGJkZGYyNmMwZGYyNWMyZGYyM2M1ZTAyMWM4ZTAyMGNhZTExZmNkZTExZGQwZTExY2QyZTIxYmQ1ZTIxYWQ4ZTIxOWRhZTMxOWRkZTMxOGRmZTMxOGUyZTQxOGU1ZTQxOWU3ZTQxOWVhZTUxYWVjZTUxYmVmZTUxY2YxZTUxZGY0ZTYxZWY2ZTYyMGY4ZTYyMWZiZTcyM2ZkZTcyNSIpKSxjUD1zUChVQSgiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTA5MDIwMjBiMDIwMjBkMDMwMzBmMDMwMzEyMDQwNDE0MDUwNDE2MDYwNTE4MDYwNTFhMDcwNjFjMDgwNzFlMDkwNzIwMGEwODIyMGIwOTI0MGMwOTI2MGQwYTI5MGUwYjJiMTAwYjJkMTEwYzJmMTIwZDMxMTMwZDM0MTQwZTM2MTUwZTM4MTYwZjNiMTgwZjNkMTkxMDNmMWExMDQyMWMxMDQ0MWQxMTQ3MWUxMTQ5MjAxMTRiMjExMTRlMjIxMTUwMjQxMjUzMjUxMjU1MjcxMjU4MjkxMTVhMmExMTVjMmMxMTVmMmQxMTYxMmYxMTYzMzExMTY1MzMxMDY3MzQxMDY5MzYxMDZiMzgxMDZjMzkwZjZlM2IwZjcwM2QwZjcxM2YwZjcyNDAwZjc0NDIwZjc1NDQwZjc2NDUxMDc3NDcxMDc4NDkxMDc4NGExMDc5NGMxMTdhNGUxMTdiNGYxMjdiNTExMjdjNTIxMzdjNTQxMzdkNTYxNDdkNTcxNTdlNTkxNTdlNWExNjdlNWMxNjdmNWQxNzdmNWYxODdmNjAxODgwNjIxOTgwNjQxYTgwNjUxYTgwNjcxYjgwNjgxYzgxNmExYzgxNmIxZDgxNmQxZDgxNmUxZTgxNzAxZjgxNzIxZjgxNzMyMDgxNzUyMTgxNzYyMTgxNzgyMjgxNzkyMjgyN2IyMzgyN2MyMzgyN2UyNDgyODAyNTgyODEyNTgxODMyNjgxODQyNjgxODYyNzgxODgyNzgxODkyODgxOGIyOTgxOGMyOTgxOGUyYTgxOTAyYTgxOTEyYjgxOTMyYjgwOTQyYzgwOTYyYzgwOTgyZDgwOTkyZDgwOWIyZTdmOWMyZTdmOWUyZjdmYTAyZjdmYTEzMDdlYTMzMDdlYTUzMTdlYTYzMTdkYTgzMjdkYWEzMzdkYWIzMzdjYWQzNDdjYWUzNDdiYjAzNTdiYjIzNTdiYjMzNjdhYjUzNjdhYjczNzc5YjgzNzc5YmEzODc4YmMzOTc4YmQzOTc3YmYzYTc3YzAzYTc2YzIzYjc1YzQzYzc1YzUzYzc0YzczZDczYzgzZTczY2EzZTcyY2MzZjcxY2Q0MDcxY2Y0MDcwZDA0MTZmZDI0MjZmZDM0MzZlZDU0NDZkZDY0NTZjZDg0NTZjZDk0NjZiZGI0NzZhZGM0ODY5ZGU0OTY4ZGY0YTY4ZTA0YzY3ZTI0ZDY2ZTM0ZTY1ZTQ0ZjY0ZTU1MDY0ZTc1MjYzZTg1MzYyZTk1NDYyZWE1NjYxZWI1NzYwZWM1ODYwZWQ1YTVmZWU1YjVlZWY1ZDVlZjA1ZjVlZjE2MDVkZjI2MjVkZjI2NDVjZjM2NTVjZjQ2NzVjZjQ2OTVjZjU2YjVjZjY2YzVjZjY2ZTVjZjc3MDVjZjc3MjVjZjg3NDVjZjg3NjVjZjk3ODVkZjk3OTVkZjk3YjVkZmE3ZDVlZmE3ZjVlZmE4MTVmZmI4MzVmZmI4NTYwZmI4NzYxZmM4OTYxZmM4YTYyZmM4YzYzZmM4ZTY0ZmM5MDY1ZmQ5MjY2ZmQ5NDY3ZmQ5NjY4ZmQ5ODY5ZmQ5YTZhZmQ5YjZiZmU5ZDZjZmU5ZjZkZmVhMTZlZmVhMzZmZmVhNTcxZmVhNzcyZmVhOTczZmVhYTc0ZmVhYzc2ZmVhZTc3ZmViMDc4ZmViMjdhZmViNDdiZmViNjdjZmViNzdlZmViOTdmZmViYjgxZmViZDgyZmViZjg0ZmVjMTg1ZmVjMjg3ZmVjNDg4ZmVjNjhhZmVjODhjZmVjYThkZmVjYzhmZmVjZDkwZmVjZjkyZmVkMTk0ZmVkMzk1ZmVkNTk3ZmVkNzk5ZmVkODlhZmRkYTljZmRkYzllZmRkZWEwZmRlMGExZmRlMmEzZmRlM2E1ZmRlNWE3ZmRlN2E5ZmRlOWFhZmRlYmFjZmNlY2FlZmNlZWIwZmNmMGIyZmNmMmI0ZmNmNGI2ZmNmNmI4ZmNmN2I5ZmNmOWJiZmNmYmJkZmNmZGJmIikpLHVQPXNQKFVBKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMGEwMjAyMGMwMjAyMGUwMzAyMTAwNDAzMTIwNDAzMTQwNTA0MTcwNjA0MTkwNzA1MWIwODA1MWQwOTA2MWYwYTA3MjIwYjA3MjQwYzA4MjYwZDA4MjkwZTA5MmIxMDA5MmQxMTBhMzAxMjBhMzIxNDBiMzQxNTBiMzcxNjBiMzkxODBjM2MxOTBjM2UxYjBjNDExYzBjNDMxZTBjNDUxZjBjNDgyMTBjNGEyMzBjNGMyNDBjNGYyNjBjNTEyODBiNTMyOTBiNTUyYjBiNTcyZDBiNTkyZjBhNWIzMTBhNWMzMjBhNWUzNDBhNWYzNjA5NjEzODA5NjIzOTA5NjMzYjA5NjQzZDA5NjUzZTA5NjY0MDBhNjc0MjBhNjg0NDBhNjg0NTBhNjk0NzBiNmE0OTBiNmE0YTBjNmI0YzBjNmI0ZDBkNmM0ZjBkNmM1MTBlNmM1MjBlNmQ1NDBmNmQ1NTBmNmQ1NzEwNmU1OTEwNmU1YTExNmU1YzEyNmU1ZDEyNmU1ZjEzNmU2MTEzNmU2MjE0NmU2NDE1NmU2NTE1NmU2NzE2NmU2OTE2NmU2YTE3NmU2YzE4NmU2ZDE4NmU2ZjE5NmU3MTE5NmU3MjFhNmU3NDFhNmU3NTFiNmU3NzFjNmQ3ODFjNmQ3YTFkNmQ3YzFkNmQ3ZDFlNmQ3ZjFlNmM4MDFmNmM4MjIwNmM4NDIwNmI4NTIxNmI4NzIxNmI4ODIyNmE4YTIyNmE4YzIzNjk4ZDIzNjk4ZjI0Njk5MDI1Njg5MjI1Njg5MzI2Njc5NTI2Njc5NzI3NjY5ODI3NjY5YTI4NjU5YjI5NjQ5ZDI5NjQ5ZjJhNjNhMDJhNjNhMjJiNjJhMzJjNjFhNTJjNjBhNjJkNjBhODJlNWZhOTJlNWVhYjJmNWVhZDMwNWRhZTMwNWNiMDMxNWJiMTMyNWFiMzMyNWFiNDMzNTliNjM0NThiNzM1NTdiOTM1NTZiYTM2NTViYzM3NTRiZDM4NTNiZjM5NTJjMDNhNTFjMTNhNTBjMzNiNGZjNDNjNGVjNjNkNGRjNzNlNGNjODNmNGJjYTQwNGFjYjQxNDljYzQyNDhjZTQzNDdjZjQ0NDZkMDQ1NDVkMjQ2NDRkMzQ3NDNkNDQ4NDJkNTRhNDFkNzRiM2ZkODRjM2VkOTRkM2RkYTRlM2NkYjUwM2JkZDUxM2FkZTUyMzhkZjUzMzdlMDU1MzZlMTU2MzVlMjU3MzRlMzU5MzNlNDVhMzFlNTVjMzBlNjVkMmZlNzVlMmVlODYwMmRlOTYxMmJlYTYzMmFlYjY0MjllYjY2MjhlYzY3MjZlZDY5MjVlZTZhMjRlZjZjMjNlZjZlMjFmMDZmMjBmMTcxMWZmMTczMWRmMjc0MWNmMzc2MWJmMzc4MTlmNDc5MThmNTdiMTdmNTdkMTVmNjdlMTRmNjgwMTNmNzgyMTJmNzg0MTBmODg1MGZmODg3MGVmODg5MGNmOThiMGJmOThjMGFmOThlMDlmYTkwMDhmYTkyMDdmYTk0MDdmYjk2MDZmYjk3MDZmYjk5MDZmYjliMDZmYjlkMDdmYzlmMDdmY2ExMDhmY2EzMDlmY2E1MGFmY2E2MGNmY2E4MGRmY2FhMGZmY2FjMTFmY2FlMTJmY2IwMTRmY2IyMTZmY2I0MThmYmI2MWFmYmI4MWRmYmJhMWZmYmJjMjFmYmJlMjNmYWMwMjZmYWMyMjhmYWM0MmFmYWM2MmRmOWM3MmZmOWM5MzJmOWNiMzVmOGNkMzdmOGNmM2FmN2QxM2RmN2QzNDBmNmQ1NDNmNmQ3NDZmNWQ5NDlmNWRiNGNmNGRkNGZmNGRmNTNmNGUxNTZmM2UzNWFmM2U1NWRmMmU2NjFmMmU4NjVmMmVhNjlmMWVjNmRmMWVkNzFmMWVmNzVmMWYxNzlmMmYyN2RmMmY0ODJmM2Y1ODZmM2Y2OGFmNGY4OGVmNWY5OTJmNmZhOTZmOGZiOWFmOWZjOWRmYWZkYTFmY2ZmYTQiKSksaFA9c1AoVUEoIjBkMDg4NzEwMDc4ODEzMDc4OTE2MDc4YTE5MDY4YzFiMDY4ZDFkMDY4ZTIwMDY4ZjIyMDY5MDI0MDY5MTI2MDU5MTI4MDU5MjJhMDU5MzJjMDU5NDJlMDU5NTJmMDU5NjMxMDU5NzMzMDU5NzM1MDQ5ODM3MDQ5OTM4MDQ5YTNhMDQ5YTNjMDQ5YjNlMDQ5YzNmMDQ5YzQxMDQ5ZDQzMDM5ZTQ0MDM5ZTQ2MDM5ZjQ4MDM5ZjQ5MDNhMDRiMDNhMTRjMDJhMTRlMDJhMjUwMDJhMjUxMDJhMzUzMDJhMzU1MDJhNDU2MDFhNDU4MDFhNDU5MDFhNTViMDFhNTVjMDFhNjVlMDFhNjYwMDFhNjYxMDBhNzYzMDBhNzY0MDBhNzY2MDBhNzY3MDBhODY5MDBhODZhMDBhODZjMDBhODZlMDBhODZmMDBhODcxMDBhODcyMDFhODc0MDFhODc1MDFhODc3MDFhODc4MDFhODdhMDJhODdiMDJhODdkMDNhODdlMDNhODgwMDRhODgxMDRhNzgzMDVhNzg0MDVhNzg2MDZhNjg3MDdhNjg4MDhhNjhhMDlhNThiMGFhNThkMGJhNThlMGNhNDhmMGRhNDkxMGVhMzkyMGZhMzk0MTBhMjk1MTFhMTk2MTNhMTk4MTRhMDk5MTU5ZjlhMTY5ZjljMTc5ZTlkMTg5ZDllMTk5ZGEwMWE5Y2ExMWI5YmEyMWQ5YWEzMWU5YWE1MWY5OWE2MjA5OGE3MjE5N2E4MjI5NmFhMjM5NWFiMjQ5NGFjMjY5NGFkMjc5M2FlMjg5MmIwMjk5MWIxMmE5MGIyMmI4ZmIzMmM4ZWI0MmU4ZGI1MmY4Y2I2MzA4YmI3MzE4YWI4MzI4OWJhMzM4OGJiMzQ4OGJjMzU4N2JkMzc4NmJlMzg4NWJmMzk4NGMwM2E4M2MxM2I4MmMyM2M4MWMzM2Q4MGM0M2U3ZmM1NDA3ZWM2NDE3ZGM3NDI3Y2M4NDM3YmM5NDQ3YWNhNDU3YWNiNDY3OWNjNDc3OGNjNDk3N2NkNGE3NmNlNGI3NWNmNGM3NGQwNGQ3M2QxNGU3MmQyNGY3MWQzNTE3MWQ0NTI3MGQ1NTM2ZmQ1NTQ2ZWQ2NTU2ZGQ3NTY2Y2Q4NTc2YmQ5NTg2YWRhNWE2YWRhNWI2OWRiNWM2OGRjNWQ2N2RkNWU2NmRlNWY2NWRlNjE2NGRmNjI2M2UwNjM2M2UxNjQ2MmUyNjU2MWUyNjY2MGUzNjg1ZmU0Njk1ZWU1NmE1ZGU1NmI1ZGU2NmM1Y2U3NmU1YmU3NmY1YWU4NzA1OWU5NzE1OGU5NzI1N2VhNzQ1N2ViNzU1NmViNzY1NWVjNzc1NGVkNzk1M2VkN2E1MmVlN2I1MWVmN2M1MWVmN2U1MGYwN2Y0ZmYwODA0ZWYxODE0ZGYxODM0Y2YyODQ0YmYzODU0YmYzODc0YWY0ODg0OWY0ODk0OGY1OGI0N2Y1OGM0NmY2OGQ0NWY2OGY0NGY3OTA0NGY3OTE0M2Y3OTM0MmY4OTQ0MWY4OTU0MGY5OTczZmY5OTgzZWY5OWEzZWZhOWIzZGZhOWMzY2ZhOWUzYmZiOWYzYWZiYTEzOWZiYTIzOGZjYTMzOGZjYTUzN2ZjYTYzNmZjYTgzNWZjYTkzNGZkYWIzM2ZkYWMzM2ZkYWUzMmZkYWYzMWZkYjEzMGZkYjIyZmZkYjQyZmZkYjUyZWZlYjcyZGZlYjgyY2ZlYmEyY2ZlYmIyYmZlYmQyYWZlYmUyYWZlYzAyOWZkYzIyOWZkYzMyOGZkYzUyN2ZkYzYyN2ZkYzgyN2ZkY2EyNmZkY2IyNmZjY2QyNWZjY2UyNWZjZDAyNWZjZDIyNWZiZDMyNGZiZDUyNGZiZDcyNGZhZDgyNGZhZGEyNGY5ZGMyNGY5ZGQyNWY4ZGYyNWY4ZTEyNWY3ZTIyNWY3ZTQyNWY2ZTYyNmY2ZTgyNmY1ZTkyNmY1ZWIyN2Y0ZWQyN2YzZWUyN2YzZjAyN2YyZjIyN2YxZjQyNmYxZjUyNWYwZjcyNGYwZjkyMSIpKTtmdW5jdGlvbiBkUCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX12YXIgcFA9TWF0aC5hYnMsZlA9TWF0aC5hdGFuMixtUD1NYXRoLmNvcyxnUD1NYXRoLm1heCxfUD1NYXRoLm1pbix5UD1NYXRoLnNpbix2UD1NYXRoLnNxcnQsYlA9MWUtMTIseFA9TWF0aC5QSSx3UD14UC8yLFNQPTIqeFA7ZnVuY3Rpb24gTVAodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/eFA6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIEVQKHQpe3JldHVybiB0Pj0xP3dQOnQ8PS0xPy13UDpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gVFAodCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gQ1AodCl7cmV0dXJuIHQub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gQVAodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBrUCh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBQUCh0KXtyZXR1cm4gdCYmdC5wYWRBbmdsZX1mdW5jdGlvbiBMUCh0LGUsbixpLHIsbyxhLHMpe3ZhciBsPW4tdCxjPWktZSx1PWEtcixoPXMtbyxkPWgqbC11KmM7aWYoIShkKmQ8YlApKXJldHVyblt0KyhkPSh1KihlLW8pLWgqKHQtcikpL2QpKmwsZStkKmNdfWZ1bmN0aW9uIElQKHQsZSxuLGkscixvLGEpe3ZhciBzPXQtbixsPWUtaSxjPShhP286LW8pL3ZQKHMqcytsKmwpLHU9YypsLGg9LWMqcyxkPXQrdSxwPWUraCxmPW4rdSxtPWkraCxnPShkK2YpLzIsXz0ocCttKS8yLHk9Zi1kLHY9bS1wLGI9eSp5K3Yqdix4PXItbyx3PWQqbS1mKnAsUz0odjwwPy0xOjEpKnZQKGdQKDAseCp4KmItdyp3KSksTT0odyp2LXkqUykvYixFPSgtdyp5LXYqUykvYixUPSh3KnYreSpTKS9iLEM9KC13KnkrdipTKS9iLEE9TS1nLGs9RS1fLFA9VC1nLEw9Qy1fO3JldHVybiBBKkErayprPlAqUCtMKkwmJihNPVQsRT1DKSx7Y3g6TSxjeTpFLHgwMTotdSx5MDE6LWgseDExOk0qKHIveC0xKSx5MTE6RSooci94LTEpfX1mdW5jdGlvbiBOUCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gUlAodCl7cmV0dXJuIG5ldyBOUCh0KX1mdW5jdGlvbiBPUCh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiB6UCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBEUCgpe3ZhciB0PU9QLGU9elAsbj1kUCghMCksaT1udWxsLHI9UlAsbz1udWxsO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHU9YS5sZW5ndGgsaD0hMTtmb3IobnVsbD09aSYmKG89cihjPU9nKCkpKSxzPTA7czw9dTsrK3MpIShzPHUmJm4obD1hW3NdLHMsYSkpPT09aCYmKChoPSFoKT9vLmxpbmVTdGFydCgpOm8ubGluZUVuZCgpKSxoJiZvLnBvaW50KCt0KGwscyxhKSwrZShsLHMsYSkpO2lmKGMpcmV0dXJuIG89bnVsbCxjKyIifHxudWxsfXJldHVybiBhLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpkUCgrZSksYSk6dH0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZFAoK3QpLGEpOmV9LGEuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRQKCEhdCksYSk6bn0sYS5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG51bGwhPWkmJihvPXIoaSkpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9pPW89bnVsbDpvPXIoaT10KSxhKTppfSxhfWZ1bmN0aW9uIEJQKCl7dmFyIHQ9T1AsZT1udWxsLG49ZFAoMCksaT16UCxyPWRQKCEwKSxvPW51bGwsYT1SUCxzPW51bGw7ZnVuY3Rpb24gbChsKXt2YXIgYyx1LGgsZCxwLGY9bC5sZW5ndGgsbT0hMSxnPW5ldyBBcnJheShmKSxfPW5ldyBBcnJheShmKTtmb3IobnVsbD09byYmKHM9YShwPU9nKCkpKSxjPTA7Yzw9ZjsrK2Mpe2lmKCEoYzxmJiZyKGQ9bFtjXSxjLGwpKT09PW0paWYobT0hbSl1PWMscy5hcmVhU3RhcnQoKSxzLmxpbmVTdGFydCgpO2Vsc2V7Zm9yKHMubGluZUVuZCgpLHMubGluZVN0YXJ0KCksaD1jLTE7aD49dTstLWgpcy5wb2ludChnW2hdLF9baF0pO3MubGluZUVuZCgpLHMuYXJlYUVuZCgpfW0mJihnW2NdPSt0KGQsYyxsKSxfW2NdPStuKGQsYyxsKSxzLnBvaW50KGU/K2UoZCxjLGwpOmdbY10saT8raShkLGMsbCk6X1tjXSkpfWlmKHApcmV0dXJuIHM9bnVsbCxwKyIifHxudWxsfWZ1bmN0aW9uIGMoKXtyZXR1cm4gRFAoKS5kZWZpbmVkKHIpLmN1cnZlKGEpLmNvbnRleHQobyl9cmV0dXJuIGwueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmRQKCtuKSxlPW51bGwsbCk6dH0sbC54MD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRQKCtlKSxsKTp0fSxsLngxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmRQKCt0KSxsKTplfSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkUCgrdCksaT1udWxsLGwpOm59LGwueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkUCgrdCksbCk6bn0sbC55MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkUCgrdCksbCk6aX0sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShuKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShpKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShuKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZFAoISF0KSxsKTpyfSxsLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbnVsbCE9byYmKHM9YShvKSksbCk6YX0sbC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289cz1udWxsOnM9YShvPXQpLGwpOm99LGx9ZnVuY3Rpb24gSFAodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gRlAodCl7cmV0dXJuIHR9TlAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX07dmFyIFZQPWpQKFJQKTtmdW5jdGlvbiBVUCh0KXt0aGlzLl9jdXJ2ZT10fWZ1bmN0aW9uIGpQKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIG5ldyBVUCh0KGUpKX1yZXR1cm4gZS5fY3VydmU9dCxlfWZ1bmN0aW9uIEdQKHQpe3ZhciBlPXQuY3VydmU7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKGpQKHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIFdQKCl7cmV0dXJuIEdQKERQKCkuY3VydmUoVlApKX1mdW5jdGlvbiBxUCgpe3ZhciB0PUJQKCkuY3VydmUoVlApLGU9dC5jdXJ2ZSxuPXQubGluZVgwLGk9dC5saW5lWDEscj10LmxpbmVZMCxvPXQubGluZVkxO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQuc3RhcnRBbmdsZT10LngwLGRlbGV0ZSB0LngwLHQuZW5kQW5nbGU9dC54MSxkZWxldGUgdC54MSx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmlubmVyUmFkaXVzPXQueTAsZGVsZXRlIHQueTAsdC5vdXRlclJhZGl1cz10LnkxLGRlbGV0ZSB0LnkxLHQubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gR1AobigpKX0sZGVsZXRlIHQubGluZVgwLHQubGluZUVuZEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIEdQKGkoKSl9LGRlbGV0ZSB0LmxpbmVYMSx0LmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBHUChyKCkpfSxkZWxldGUgdC5saW5lWTAsdC5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gR1AobygpKX0sZGVsZXRlIHQubGluZVkxLHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShqUCh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBZUCh0LGUpe3JldHVyblsoZT0rZSkqTWF0aC5jb3ModC09TWF0aC5QSS8yKSxlKk1hdGguc2luKHQpXX1VUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl9jdXJ2ZS5wb2ludChlKk1hdGguc2luKHQpLGUqLU1hdGguY29zKHQpKX19O3ZhciBYUD1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gJFAodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIEtQKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBaUCh0KXt2YXIgZT0kUCxuPUtQLGk9T1Ascj16UCxvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9WFAuY2FsbChhcmd1bWVudHMpLGw9ZS5hcHBseSh0aGlzLHMpLGM9bi5hcHBseSh0aGlzLHMpO2lmKG98fChvPWE9T2coKSksdChvLCtpLmFwcGx5KHRoaXMsKHNbMF09bCxzKSksK3IuYXBwbHkodGhpcyxzKSwraS5hcHBseSh0aGlzLChzWzBdPWMscykpLCtyLmFwcGx5KHRoaXMscykpLGEpcmV0dXJuIG89bnVsbCxhKyIifHxudWxsfXJldHVybiBhLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGEpOmV9LGEudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsYSk6bn0sYS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZFAoK3QpLGEpOml9LGEueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRQKCt0KSxhKTpyfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX1mdW5jdGlvbiBKUCh0LGUsbixpLHIpe3QubW92ZVRvKGUsbiksdC5iZXppZXJDdXJ2ZVRvKGU9KGUraSkvMixuLGUscixpLHIpfWZ1bmN0aW9uIFFQKHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZSxuPShuK3IpLzIsaSxuLGkscil9ZnVuY3Rpb24gdEwodCxlLG4saSxyKXt2YXIgbz1ZUChlLG4pLGE9WVAoZSxuPShuK3IpLzIpLHM9WVAoaSxuKSxsPVlQKGkscik7dC5tb3ZlVG8ob1swXSxvWzFdKSx0LmJlemllckN1cnZlVG8oYVswXSxhWzFdLHNbMF0sc1sxXSxsWzBdLGxbMV0pfXZhciBlTD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3hQKTt0Lm1vdmVUbyhuLDApLHQuYXJjKDAsMCxuLDAsU1ApfX0sbkw9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS81KS8yO3QubW92ZVRvKC0zKm4sLW4pLHQubGluZVRvKC1uLC1uKSx0LmxpbmVUbygtbiwtMypuKSx0LmxpbmVUbyhuLC0zKm4pLHQubGluZVRvKG4sLW4pLHQubGluZVRvKDMqbiwtbiksdC5saW5lVG8oMypuLG4pLHQubGluZVRvKG4sbiksdC5saW5lVG8obiwzKm4pLHQubGluZVRvKC1uLDMqbiksdC5saW5lVG8oLW4sbiksdC5saW5lVG8oLTMqbixuKSx0LmNsb3NlUGF0aCgpfX0saUw9TWF0aC5zcXJ0KDEvMyksckw9MippTCxvTD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3JMKSxpPW4qaUw7dC5tb3ZlVG8oMCwtbiksdC5saW5lVG8oaSwwKSx0LmxpbmVUbygwLG4pLHQubGluZVRvKC1pLDApLHQuY2xvc2VQYXRoKCl9fSxhTD1NYXRoLnNpbih4UC8xMCkvTWF0aC5zaW4oNyp4UC8xMCksc0w9TWF0aC5zaW4oU1AvMTApKmFMLGxMPS1NYXRoLmNvcyhTUC8xMCkqYUwsY0w9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqZSksaT1zTCpuLHI9bEwqbjt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLHIpO2Zvcih2YXIgbz0xO288NTsrK28pe3ZhciBhPVNQKm8vNSxzPU1hdGguY29zKGEpLGw9TWF0aC5zaW4oYSk7dC5saW5lVG8obCpuLC1zKm4pLHQubGluZVRvKHMqaS1sKnIsbCppK3Mqcil9dC5jbG9zZVBhdGgoKX19LHVMPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUpLGk9LW4vMjt0LnJlY3QoaSxpLG4sbil9fSxoTD1NYXRoLnNxcnQoMyksZEw9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj0tTWF0aC5zcXJ0KGUvKDMqaEwpKTt0Lm1vdmVUbygwLDIqbiksdC5saW5lVG8oLWhMKm4sLW4pLHQubGluZVRvKGhMKm4sLW4pLHQuY2xvc2VQYXRoKCl9fSxwTD0tLjUsZkw9TWF0aC5zcXJ0KDMpLzIsbUw9MS9NYXRoLnNxcnQoMTIpLGdMPTMqKG1MLzIrMSksX0w9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS9nTCksaT1uLzIscj1uKm1MLG89aSxhPW4qbUwrbixzPS1vLGw9YTt0Lm1vdmVUbyhpLHIpLHQubGluZVRvKG8sYSksdC5saW5lVG8ocyxsKSx0LmxpbmVUbyhwTCppLWZMKnIsZkwqaStwTCpyKSx0LmxpbmVUbyhwTCpvLWZMKmEsZkwqbytwTCphKSx0LmxpbmVUbyhwTCpzLWZMKmwsZkwqcytwTCpsKSx0LmxpbmVUbyhwTCppK2ZMKnIscEwqci1mTCppKSx0LmxpbmVUbyhwTCpvK2ZMKmEscEwqYS1mTCpvKSx0LmxpbmVUbyhwTCpzK2ZMKmwscEwqbC1mTCpzKSx0LmNsb3NlUGF0aCgpfX0seUw9W2VMLG5MLG9MLHVMLGNMLGRMLF9MXTtmdW5jdGlvbiB2TCgpe31mdW5jdGlvbiBiTCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErbikvNil9ZnVuY3Rpb24geEwodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHdMKHQpe3JldHVybiBuZXcgeEwodCl9ZnVuY3Rpb24gU0wodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIE1MKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBFTCh0LGUpe3RoaXMuX2Jhc2lzPW5ldyB4TCh0KSx0aGlzLl9iZXRhPWV9eEwucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpiTCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpiTCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sU0wucHJvdG90eXBlPXthcmVhU3RhcnQ6dkwsYXJlYUVuZDp2TCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSx0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzYpO2JyZWFrO2RlZmF1bHQ6YkwodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LE1MLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBuPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsaT0odGhpcy5feTArNCp0aGlzLl95MStlKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obixpKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLGkpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6YkwodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LEVMLnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxlPXRoaXMuX3ksbj10Lmxlbmd0aC0xO2lmKG4+MClmb3IodmFyIGkscj10WzBdLG89ZVswXSxhPXRbbl0tcixzPWVbbl0tbyxsPS0xOysrbDw9bjspdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2xdKygxLXRoaXMuX2JldGEpKihyKyhpPWwvbikqYSksdGhpcy5fYmV0YSplW2xdKygxLXRoaXMuX2JldGEpKihvK2kqcykpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fTt2YXIgVEw9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMT09PWU/bmV3IHhMKHQpOm5ldyBFTCh0LGUpfXJldHVybiBuLmJldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjg1KTtmdW5jdGlvbiBDTCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIEFMKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1BTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6Q0wodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OkNMKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIga0w9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IEFMKHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiBQTCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9UEwucHJvdG90eXBlPXthcmVhU3RhcnQ6dkwsYXJlYUVuZDp2TCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0OkNMKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgTEw9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IFBMKHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiBJTCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9SUwucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6Q0wodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBOTD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgSUwodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIFJMKHQsZSxuKXt2YXIgaT10Ll94MSxyPXQuX3kxLG89dC5feDIsYT10Ll95MjtpZih0Ll9sMDFfYT5iUCl7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7aT0oaSpzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wscj0ocipzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+YlApe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLHU9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO289KG8qYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3UsYT0oYSpjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvdX10Ll9jb250ZXh0LmJlemllckN1cnZlVG8oaSxyLG8sYSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gT0wodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1PTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OlJMKHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHpMPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IE9MKHQsZSk6bmV3IEFMKHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIERMKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9REwucHJvdG90eXBlPXthcmVhU3RhcnQ6dkwsYXJlYUVuZDp2TCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVsdDpSTCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBCTD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBETCh0LGUpOm5ldyBQTCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtmdW5jdGlvbiBITCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfUhMLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxpPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4raSppLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpSTCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBGTD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBITCh0LGUpOm5ldyBJTCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtmdW5jdGlvbiBWTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gVUwodCl7cmV0dXJuIHQ8MD8tMToxfWZ1bmN0aW9uIGpMKHQsZSxuKXt2YXIgaT10Ll94MS10Ll94MCxyPWUtdC5feDEsbz0odC5feTEtdC5feTApLyhpfHxyPDAmJi0wKSxhPShuLXQuX3kxKS8ocnx8aTwwJiYtMCkscz0obypyK2EqaSkvKGkrcik7cmV0dXJuKFVMKG8pK1VMKGEpKSpNYXRoLm1pbihNYXRoLmFicyhvKSxNYXRoLmFicyhhKSwuNSpNYXRoLmFicyhzKSl8fDB9ZnVuY3Rpb24gR0wodCxlKXt2YXIgbj10Ll94MS10Ll94MDtyZXR1cm4gbj8oMyoodC5feTEtdC5feTApL24tZSkvMjplfWZ1bmN0aW9uIFdMKHQsZSxuKXt2YXIgaT10Ll94MCxyPXQuX3gxLG89dC5feTEsYT0oci1pKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpK2EsdC5feTArYSplLHItYSxvLWEqbixyLG8pfWZ1bmN0aW9uIHFMKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBZTCh0KXt0aGlzLl9jb250ZXh0PW5ldyBYTCh0KX1mdW5jdGlvbiBYTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gJEwodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEtMKHQpe3ZhciBlLG4saT10Lmxlbmd0aC0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpO2ZvcihyWzBdPTAsb1swXT0yLGFbMF09dFswXSsyKnRbMV0sZT0xO2U8aS0xOysrZSlyW2VdPTEsb1tlXT00LGFbZV09NCp0W2VdKzIqdFtlKzFdO2ZvcihyW2ktMV09MixvW2ktMV09NyxhW2ktMV09OCp0W2ktMV0rdFtpXSxlPTE7ZTxpOysrZSlvW2VdLT1uPXJbZV0vb1tlLTFdLGFbZV0tPW4qYVtlLTFdO2ZvcihyW2ktMV09YVtpLTFdL29baS0xXSxlPWktMjtlPj0wOy0tZSlyW2VdPShhW2VdLXJbZSsxXSkvb1tlXTtmb3Iob1tpLTFdPSh0W2ldK3JbaS0xXSkvMixlPTA7ZTxpLTE7KytlKW9bZV09Mip0W2UrMV0tcltlKzFdO3JldHVybltyLG9dfWZ1bmN0aW9uIFpMKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX3Q9ZX1mdW5jdGlvbiBKTCh0LGUpe2lmKChyPXQubGVuZ3RoKT4xKWZvcih2YXIgbixpLHIsbz0xLGE9dFtlWzBdXSxzPWEubGVuZ3RoO288cjsrK28pZm9yKGk9YSxhPXRbZVtvXV0sbj0wO248czsrK24pYVtuXVsxXSs9YVtuXVswXT1pc05hTihpW25dWzFdKT9pW25dWzBdOmlbbl1bMV19ZnVuY3Rpb24gUUwodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpOy0tZT49MDspbltlXT1lO3JldHVybiBufWZ1bmN0aW9uIHRJKHQsZSl7cmV0dXJuIHRbZV19ZnVuY3Rpb24gZUkodCl7dmFyIGU9dC5tYXAobkkpO3JldHVybiBRTCh0KS5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdLWVbbl19KSl9ZnVuY3Rpb24gbkkodCl7Zm9yKHZhciBlLG49LTEsaT0wLHI9dC5sZW5ndGgsbz0tMS8wOysrbjxyOykoZT0rdFtuXVsxXSk+byYmKG89ZSxpPW4pO3JldHVybiBpfWZ1bmN0aW9uIGlJKHQpe3ZhciBlPXQubWFwKHJJKTtyZXR1cm4gUUwodCkuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XS1lW25dfSkpfWZ1bmN0aW9uIHJJKHQpe2Zvcih2YXIgZSxuPTAsaT0tMSxyPXQubGVuZ3RoOysraTxyOykoZT0rdFtpXVsxXSkmJihuKz1lKTtyZXR1cm4gbn1mdW5jdGlvbiBvSSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gYUkodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gc0kodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gbEkoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBjSSh0KXt0LlU9dC5DPXQuTD10LlI9dC5QPXQuTj1udWxsfWZ1bmN0aW9uIHVJKHQsZSl7dmFyIG49ZSxpPWUuUixyPW4uVTtyP3IuTD09PW4/ci5MPWk6ci5SPWk6dC5fPWksaS5VPXIsbi5VPWksbi5SPWkuTCxuLlImJihuLlIuVT1uKSxpLkw9bn1mdW5jdGlvbiBoSSh0LGUpe3ZhciBuPWUsaT1lLkwscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uTD1pLlIsbi5MJiYobi5MLlU9biksaS5SPW59ZnVuY3Rpb24gZEkodCl7Zm9yKDt0Lkw7KXQ9dC5MO3JldHVybiB0fWZ1bmN0aW9uIHBJKHQsZSxuLGkpe3ZhciByPVtudWxsLG51bGxdLG89REkucHVzaChyKS0xO3JldHVybiByLmxlZnQ9dCxyLnJpZ2h0PWUsbiYmbUkocix0LGUsbiksaSYmbUkocixlLHQsaSksT0lbdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksT0lbZS5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobykscn1mdW5jdGlvbiBmSSh0LGUsbil7dmFyIGk9W2Usbl07cmV0dXJuIGkubGVmdD10LGl9ZnVuY3Rpb24gbUkodCxlLG4saSl7dFswXXx8dFsxXT90LmxlZnQ9PT1uP3RbMV09aTp0WzBdPWk6KHRbMF09aSx0LmxlZnQ9ZSx0LnJpZ2h0PW4pfWZ1bmN0aW9uIGdJKHQsZSxuLGkscil7dmFyIG8sYT10WzBdLHM9dFsxXSxsPWFbMF0sYz1hWzFdLHU9MCxoPTEsZD1zWzBdLWwscD1zWzFdLWM7aWYobz1lLWwsZHx8IShvPjApKXtpZihvLz1kLGQ8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYoZD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1pLWwsZHx8IShvPDApKXtpZihvLz1kLGQ8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYoZD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9aWYobz1uLWMscHx8IShvPjApKXtpZihvLz1wLHA8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYocD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1yLWMscHx8IShvPDApKXtpZihvLz1wLHA8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYocD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9cmV0dXJuISh1PjB8fGg8MSl8fCh1PjAmJih0WzBdPVtsK3UqZCxjK3UqcF0pLGg8MSYmKHRbMV09W2wraCpkLGMraCpwXSksITApfX19fX1mdW5jdGlvbiBfSSh0LGUsbixpLHIpe3ZhciBvPXRbMV07aWYobylyZXR1cm4hMDt2YXIgYSxzLGw9dFswXSxjPXQubGVmdCx1PXQucmlnaHQsaD1jWzBdLGQ9Y1sxXSxwPXVbMF0sZj11WzFdLG09KGgrcCkvMjtpZihmPT09ZCl7aWYobTxlfHxtPj1pKXJldHVybjtpZihoPnApe2lmKGwpe2lmKGxbMV0+PXIpcmV0dXJufWVsc2UgbD1bbSxuXTtvPVttLHJdfWVsc2V7aWYobCl7aWYobFsxXTxuKXJldHVybn1lbHNlIGw9W20scl07bz1bbSxuXX19ZWxzZSBpZihzPShkK2YpLzItKGE9KGgtcCkvKGYtZCkpKm0sYTwtMXx8YT4xKWlmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVsobi1zKS9hLG5dO289WyhyLXMpL2Escl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bKHItcykvYSxyXTtvPVsobi1zKS9hLG5dfWVsc2UgaWYoZDxmKXtpZihsKXtpZihsWzBdPj1pKXJldHVybn1lbHNlIGw9W2UsYSplK3NdO289W2ksYSppK3NdfWVsc2V7aWYobCl7aWYobFswXTxlKXJldHVybn1lbHNlIGw9W2ksYSppK3NdO289W2UsYSplK3NdfXJldHVybiB0WzBdPWwsdFsxXT1vLCEwfWZ1bmN0aW9uIHlJKHQsZSl7dmFyIG49dC5zaXRlLGk9ZS5sZWZ0LHI9ZS5yaWdodDtyZXR1cm4gbj09PXImJihyPWksaT1uKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KG49PT1pPyhpPWVbMV0scj1lWzBdKTooaT1lWzBdLHI9ZVsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24gdkkodCxlKXtyZXR1cm4gZVsrKGUubGVmdCE9PXQuc2l0ZSldfWZ1bmN0aW9uIGJJKHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQ9PT10LnNpdGUpXX1WTC5wcm90b3R5cGU9e2FyZWFTdGFydDp2TCxhcmVhRW5kOnZMLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LHFMLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpXTCh0aGlzLHRoaXMuX3QwLEdMKHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxXTCh0aGlzLEdMKHRoaXMsbj1qTCh0aGlzLHQsZSkpLG4pO2JyZWFrO2RlZmF1bHQ6V0wodGhpcyx0aGlzLl90MCxuPWpMKHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPW59fX0sKFlMLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHFMLnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7cUwucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfSxYTC5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhlLHQsaSxuLG8scil9fSwkTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgaT1LTCh0KSxyPUtMKGUpLG89MCxhPTE7YTxuOysrbywrK2EpdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGlbMF1bb10sclswXVtvXSxpWzFdW29dLHJbMV1bb10sdFthXSxlW2FdKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1uKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxaTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fSxsSS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmxJLGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscjtpZih0KXtpZihlLlA9dCxlLk49dC5OLHQuTiYmKHQuTi5QPWUpLHQuTj1lLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPWV9ZWxzZSB0LlI9ZTtuPXR9ZWxzZSB0aGlzLl8/KHQ9ZEkodGhpcy5fKSxlLlA9bnVsbCxlLk49dCx0LlA9dC5MPWUsbj10KTooZS5QPWUuTj1udWxsLHRoaXMuXz1lLG49bnVsbCk7Zm9yKGUuTD1lLlI9bnVsbCxlLlU9bixlLkM9ITAsdD1lO24mJm4uQzspbj09PShpPW4uVSkuTD8ocj1pLlIpJiZyLkM/KG4uQz1yLkM9ITEsaS5DPSEwLHQ9aSk6KHQ9PT1uLlImJih1SSh0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCxoSSh0aGlzLGkpKToocj1pLkwpJiZyLkM/KG4uQz1yLkM9ITEsaS5DPSEwLHQ9aSk6KHQ9PT1uLkwmJihoSSh0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCx1SSh0aGlzLGkpKSxuPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUsbixpLHI9dC5VLG89dC5MLGE9dC5SO2lmKG49bz9hP2RJKGEpOm86YSxyP3IuTD09PXQ/ci5MPW46ci5SPW46dGhpcy5fPW4sbyYmYT8oaT1uLkMsbi5DPXQuQyxuLkw9byxvLlU9bixuIT09YT8ocj1uLlUsbi5VPXQuVSxyLkw9dD1uLlIsbi5SPWEsYS5VPW4pOihuLlU9cixyPW4sdD1uLlIpKTooaT10LkMsdD1uKSx0JiYodC5VPXIpLCFpKWlmKHQmJnQuQyl0LkM9ITE7ZWxzZXtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1yLkwpe2lmKChlPXIuUikuQyYmKGUuQz0hMSxyLkM9ITAsdUkodGhpcyxyKSxlPXIuUiksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5SJiZlLlIuQ3x8KGUuTC5DPSExLGUuQz0hMCxoSSh0aGlzLGUpLGU9ci5SKSxlLkM9ci5DLHIuQz1lLlIuQz0hMSx1SSh0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKChlPXIuTCkuQyYmKGUuQz0hMSxyLkM9ITAsaEkodGhpcyxyKSxlPXIuTCksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7ZS5MJiZlLkwuQ3x8KGUuUi5DPSExLGUuQz0hMCx1SSh0aGlzLGUpLGU9ci5MKSxlLkM9ci5DLHIuQz1lLkwuQz0hMSxoSSh0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfWUuQz0hMCx0PXIscj1yLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX07dmFyIHhJLHdJPVtdO2Z1bmN0aW9uIFNJKCl7Y0kodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1udWxsfWZ1bmN0aW9uIE1JKHQpe3ZhciBlPXQuUCxuPXQuTjtpZihlJiZuKXt2YXIgaT1lLnNpdGUscj10LnNpdGUsbz1uLnNpdGU7aWYoaSE9PW8pe3ZhciBhPXJbMF0scz1yWzFdLGw9aVswXS1hLGM9aVsxXS1zLHU9b1swXS1hLGg9b1sxXS1zLGQ9MioobCpoLWMqdSk7aWYoIShkPj0tSEkpKXt2YXIgcD1sKmwrYypjLGY9dSp1K2gqaCxtPShoKnAtYypmKS9kLGc9KGwqZi11KnApL2QsXz13SS5wb3AoKXx8bmV3IFNJO18uYXJjPXQsXy5zaXRlPXIsXy54PW0rYSxfLnk9KF8uY3k9ZytzKStNYXRoLnNxcnQobSptK2cqZyksdC5jaXJjbGU9Xztmb3IodmFyIHk9bnVsbCx2PXpJLl87djspaWYoXy55PHYueXx8Xy55PT09di55JiZfLng8PXYueCl7aWYoIXYuTCl7eT12LlA7YnJlYWt9dj12Lkx9ZWxzZXtpZighdi5SKXt5PXY7YnJlYWt9dj12LlJ9ekkuaW5zZXJ0KHksXykseXx8KHhJPV8pfX19fWZ1bmN0aW9uIEVJKHQpe3ZhciBlPXQuY2lyY2xlO2UmJihlLlB8fCh4ST1lLk4pLHpJLnJlbW92ZShlKSx3SS5wdXNoKGUpLGNJKGUpLHQuY2lyY2xlPW51bGwpfXZhciBUST1bXTtmdW5jdGlvbiBDSSgpe2NJKHRoaXMpLHRoaXMuZWRnZT10aGlzLnNpdGU9dGhpcy5jaXJjbGU9bnVsbH1mdW5jdGlvbiBBSSh0KXt2YXIgZT1USS5wb3AoKXx8bmV3IENJO3JldHVybiBlLnNpdGU9dCxlfWZ1bmN0aW9uIGtJKHQpe0VJKHQpLFJJLnJlbW92ZSh0KSxUSS5wdXNoKHQpLGNJKHQpfWZ1bmN0aW9uIFBJKHQpe3ZhciBlPXQuY2lyY2xlLG49ZS54LGk9ZS5jeSxyPVtuLGldLG89dC5QLGE9dC5OLHM9W3RdO2tJKHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZNYXRoLmFicyhuLWwuY2lyY2xlLngpPEJJJiZNYXRoLmFicyhpLWwuY2lyY2xlLmN5KTxCSTspbz1sLlAscy51bnNoaWZ0KGwpLGtJKGwpLGw9bztzLnVuc2hpZnQobCksRUkobCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJk1hdGguYWJzKG4tYy5jaXJjbGUueCk8QkkmJk1hdGguYWJzKGktYy5jaXJjbGUuY3kpPEJJOylhPWMuTixzLnB1c2goYyksa0koYyksYz1hO3MucHVzaChjKSxFSShjKTt2YXIgdSxoPXMubGVuZ3RoO2Zvcih1PTE7dTxoOysrdSltSSgoYz1zW3VdKS5lZGdlLChsPXNbdS0xXSkuc2l0ZSxjLnNpdGUscik7KGM9c1toLTFdKS5lZGdlPXBJKChsPXNbMF0pLnNpdGUsYy5zaXRlLG51bGwsciksTUkobCksTUkoYyl9ZnVuY3Rpb24gTEkodCl7Zm9yKHZhciBlLG4saSxyLG89dFswXSxhPXRbMV0scz1SSS5fO3M7KWlmKChpPUlJKHMsYSktbyk+Qkkpcz1zLkw7ZWxzZXtpZighKChyPW8tTkkocyxhKSk+QkkpKXtpPi1CST8oZT1zLlAsbj1zKTpyPi1CST8oZT1zLG49cy5OKTplPW49czticmVha31pZighcy5SKXtlPXM7YnJlYWt9cz1zLlJ9IShmdW5jdGlvbiBsKHQpe3JldHVybiBPSVt0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19KSh0KTt2YXIgYz1BSSh0KTtpZihSSS5pbnNlcnQoZSxjKSxlfHxuKXtpZihlPT09bilyZXR1cm4gRUkoZSksbj1BSShlLnNpdGUpLFJJLmluc2VydChjLG4pLGMuZWRnZT1uLmVkZ2U9cEkoZS5zaXRlLGMuc2l0ZSksTUkoZSksdm9pZCBNSShuKTtpZihuKXtFSShlKSxFSShuKTt2YXIgdT1lLnNpdGUsaD11WzBdLGQ9dVsxXSxwPXRbMF0taCxmPXRbMV0tZCxtPW4uc2l0ZSxnPW1bMF0taCxfPW1bMV0tZCx5PTIqKHAqXy1mKmcpLHY9cCpwK2YqZixiPWcqZytfKl8seD1bKF8qdi1mKmIpL3kraCwocCpiLWcqdikveStkXTttSShuLmVkZ2UsdSxtLHgpLGMuZWRnZT1wSSh1LHQsbnVsbCx4KSxuLmVkZ2U9cEkodCxtLG51bGwseCksTUkoZSksTUkobil9ZWxzZSBjLmVkZ2U9cEkoZS5zaXRlLGMuc2l0ZSl9fWZ1bmN0aW9uIElJKHQsZSl7dmFyIG49dC5zaXRlLGk9blswXSxyPW5bMV0sbz1yLWU7aWYoIW8pcmV0dXJuIGk7dmFyIGE9dC5QO2lmKCFhKXJldHVybi0xLzA7dmFyIHM9KG49YS5zaXRlKVswXSxsPW5bMV0sYz1sLWU7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1pLGg9MS9vLTEvYyxkPXUvYztyZXR1cm4gaD8oLWQrTWF0aC5zcXJ0KGQqZC0yKmgqKHUqdS8oLTIqYyktbCtjLzIrci1vLzIpKSkvaCtpOihpK3MpLzJ9ZnVuY3Rpb24gTkkodCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gSUkobixlKTt2YXIgaT10LnNpdGU7cmV0dXJuIGlbMV09PT1lP2lbMF06MS8wfXZhciBSSSxPSSx6SSxESSxCST0xZS02LEhJPTFlLTEyO2Z1bmN0aW9uIEZJKHQsZSxuKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS10WzFdKS0odFswXS1lWzBdKSooblsxXS10WzFdKX1mdW5jdGlvbiBWSSh0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiBVSSh0LGUpe3ZhciBuLGkscixvPXQuc29ydChWSSkucG9wKCk7Zm9yKERJPVtdLE9JPW5ldyBBcnJheSh0Lmxlbmd0aCksUkk9bmV3IGxJLHpJPW5ldyBsSTs7KWlmKHI9eEksbyYmKCFyfHxvWzFdPHIueXx8b1sxXT09PXIueSYmb1swXTxyLngpKW9bMF09PT1uJiZvWzFdPT09aXx8KExJKG8pLG49b1swXSxpPW9bMV0pLG89dC5wb3AoKTtlbHNle2lmKCFyKWJyZWFrO1BJKHIuYXJjKX1pZigoZnVuY3Rpb24gYSgpe2Zvcih2YXIgdCxlLG4saSxyPTAsbz1PSS5sZW5ndGg7cjxvOysrcilpZigodD1PSVtyXSkmJihpPShlPXQuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgYT1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKWFbbl09bixzW25dPXlJKHQsRElbZVtuXV0pO2ZvcihhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxpOysrbilzW25dPWVbYVtuXV07Zm9yKG49MDtuPGk7KytuKWVbbl09c1tuXX19KSgpLGUpe3ZhciBzPStlWzBdWzBdLGw9K2VbMF1bMV0sYz0rZVsxXVswXSx1PStlWzFdWzFdOyEoZnVuY3Rpb24gaCh0LGUsbixpKXtmb3IodmFyIHIsbz1ESS5sZW5ndGg7by0tOylfSShyPURJW29dLHQsZSxuLGkpJiZnSShyLHQsZSxuLGkpJiYoTWF0aC5hYnMoclswXVswXS1yWzFdWzBdKT5CSXx8TWF0aC5hYnMoclswXVsxXS1yWzFdWzFdKT5CSSl8fGRlbGV0ZSBESVtvXX0pKHMsbCxjLHUpLChmdW5jdGlvbiBkKHQsZSxuLGkpe3ZhciByLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnPU9JLmxlbmd0aCxfPSEwO2ZvcihyPTA7cjxnOysrcilpZihvPU9JW3JdKXtmb3IoYT1vLnNpdGUscz0obD1vLmhhbGZlZGdlcykubGVuZ3RoO3MtLTspRElbbFtzXV18fGwuc3BsaWNlKHMsMSk7Zm9yKHM9MCxjPWwubGVuZ3RoO3M8YzspZj0ocD1iSShvLERJW2xbc11dKSlbMF0sbT1wWzFdLGg9KHU9dkkobyxESVtsWysrcyVjXV0pKVswXSxkPXVbMV0sKE1hdGguYWJzKGYtaCk+Qkl8fE1hdGguYWJzKG0tZCk+QkkpJiYobC5zcGxpY2UocywwLERJLnB1c2goZkkoYSxwLE1hdGguYWJzKGYtdCk8QkkmJmktbT5CST9bdCxNYXRoLmFicyhoLXQpPEJJP2Q6aV06TWF0aC5hYnMobS1pKTxCSSYmbi1mPkJJP1tNYXRoLmFicyhkLWkpPEJJP2g6bixpXTpNYXRoLmFicyhmLW4pPEJJJiZtLWU+Qkk/W24sTWF0aC5hYnMoaC1uKTxCST9kOmVdOk1hdGguYWJzKG0tZSk8QkkmJmYtdD5CST9bTWF0aC5hYnMoZC1lKTxCST9oOnQsZV06bnVsbCkpLTEpLCsrYyk7YyYmKF89ITEpfWlmKF8pe3ZhciB5LHYsYix4PTEvMDtmb3Iocj0wLF89bnVsbDtyPGc7KytyKShvPU9JW3JdKSYmKGI9KHk9KGE9by5zaXRlKVswXS10KSp5Kyh2PWFbMV0tZSkqdik8eCYmKHg9YixfPW8pO2lmKF8pe3ZhciB3PVt0LGVdLFM9W3QsaV0sTT1bbixpXSxFPVtuLGVdO18uaGFsZmVkZ2VzLnB1c2goREkucHVzaChmSShhPV8uc2l0ZSx3LFMpKS0xLERJLnB1c2goZkkoYSxTLE0pKS0xLERJLnB1c2goZkkoYSxNLEUpKS0xLERJLnB1c2goZkkoYSxFLHcpKS0xKX19Zm9yKHI9MDtyPGc7KytyKShvPU9JW3JdKSYmKG8uaGFsZmVkZ2VzLmxlbmd0aHx8ZGVsZXRlIE9JW3JdKX0pKHMsbCxjLHUpfXRoaXMuZWRnZXM9REksdGhpcy5jZWxscz1PSSxSST16ST1EST1PST1udWxsfWZ1bmN0aW9uIGpJKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBHSSh0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnRyYW5zZm9ybT1ufWZ1bmN0aW9uIFdJKHQsZSxuKXt0aGlzLms9dCx0aGlzLng9ZSx0aGlzLnk9bn1VSS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVJLHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuaGFsZmVkZ2VzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHZJKGUsdFtuXSl9KSk7cmV0dXJuIG4uZGF0YT1lLnNpdGUuZGF0YSxufSkpfSx0cmlhbmdsZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtpZihvPShyPW4uaGFsZmVkZ2VzKS5sZW5ndGgpZm9yKHZhciByLG8sYSxzPW4uc2l0ZSxsPS0xLGM9ZVtyW28tMV1dLHU9Yy5sZWZ0PT09cz9jLnJpZ2h0OmMubGVmdDsrK2w8bzspYT11LHU9KGM9ZVtyW2xdXSkubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQsYSYmdSYmaTxhLmluZGV4JiZpPHUuaW5kZXgmJkZJKHMsYSx1KTwwJiZ0LnB1c2goW3MuZGF0YSxhLmRhdGEsdS5kYXRhXSl9KSksdH0sbGlua3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJpZ2h0fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTp0LmxlZnQuZGF0YSx0YXJnZXQ6dC5yaWdodC5kYXRhfX0pKX0sZmluZDpmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpLHIsbz10aGlzLGE9by5fZm91bmR8fDAscz1vLmNlbGxzLmxlbmd0aDshKHI9by5jZWxsc1thXSk7KWlmKCsrYT49cylyZXR1cm4gbnVsbDt2YXIgbD10LXIuc2l0ZVswXSxjPWUtci5zaXRlWzFdLHU9bCpsK2MqYztkb3tyPW8uY2VsbHNbaT1hXSxhPW51bGwsci5oYWxmZWRnZXMuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9by5lZGdlc1tuXSxzPWkubGVmdDtpZihzIT09ci5zaXRlJiZzfHwocz1pLnJpZ2h0KSl7dmFyIGw9dC1zWzBdLGM9ZS1zWzFdLGg9bCpsK2MqYztoPHUmJih1PWgsYT1zLmluZGV4KX19KSl9d2hpbGUobnVsbCE9PWEpO3JldHVybiBvLl9mb3VuZD1pLG51bGw9PW58fHU8PW4qbj9yLnNpdGU6bnVsbH19LFdJLnByb3RvdHlwZT17Y29uc3RydWN0b3I6V0ksc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IFdJKHRoaXMuayp0LHRoaXMueCx0aGlzLnkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PXQmMD09PWU/dGhpczpuZXcgV0kodGhpcy5rLHRoaXMueCt0aGlzLmsqdCx0aGlzLnkrdGhpcy5rKmUpfSxhcHBseTpmdW5jdGlvbih0KXtyZXR1cm5bdFswXSp0aGlzLmsrdGhpcy54LHRbMV0qdGhpcy5rK3RoaXMueV19LGFwcGx5WDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy54fSxhcHBseVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueX0saW52ZXJ0OmZ1bmN0aW9uKHQpe3JldHVyblsodFswXS10aGlzLngpL3RoaXMuaywodFsxXS10aGlzLnkpL3RoaXMua119LGludmVydFg6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy54KS90aGlzLmt9LGludmVydFk6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy55KS90aGlzLmt9LHJlc2NhbGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0scmVzY2FsZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIit0aGlzLngrIiwiK3RoaXMueSsiKSBzY2FsZSgiK3RoaXMuaysiKSJ9fTt2YXIgcUk9bmV3IFdJKDEsMCwwKTtmdW5jdGlvbiBZSSh0KXtmb3IoOyF0Ll9fem9vbTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHFJO3JldHVybiB0Ll9fem9vbX1mdW5jdGlvbiBYSSgpe011LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uICRJKCl7TXUucHJldmVudERlZmF1bHQoKSxNdS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBLSSgpe3JldHVybiFNdS5jdHJsS2V5JiYhTXUuYnV0dG9ufWZ1bmN0aW9uIFpJKCl7dmFyIHQ9dGhpcztyZXR1cm4gdCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ/KHQ9dC5vd25lclNWR0VsZW1lbnR8fHQpLmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dOltbMCwwXSxbdC5jbGllbnRXaWR0aCx0LmNsaWVudEhlaWdodF1dfWZ1bmN0aW9uIEpJKCl7cmV0dXJuIHRoaXMuX196b29tfHxxSX1mdW5jdGlvbiBRSSgpe3JldHVybi1NdS5kZWx0YVkqKDE9PT1NdS5kZWx0YU1vZGU/LjA1Ok11LmRlbHRhTW9kZT8xOi4wMDIpfWZ1bmN0aW9uIHROKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGVOKHQsZSxuKXt2YXIgaT10LmludmVydFgoZVswXVswXSktblswXVswXSxyPXQuaW52ZXJ0WChlWzFdWzBdKS1uWzFdWzBdLG89dC5pbnZlcnRZKGVbMF1bMV0pLW5bMF1bMV0sYT10LmludmVydFkoZVsxXVsxXSktblsxXVsxXTtyZXR1cm4gdC50cmFuc2xhdGUocj5pPyhpK3IpLzI6TWF0aC5taW4oMCxpKXx8TWF0aC5tYXgoMCxyKSxhPm8/KG8rYSkvMjpNYXRoLm1pbigwLG8pfHxNYXRoLm1heCgwLGEpKX1mdW5jdGlvbiBuTigpe3ZhciB0LGUsbj1LSSxpPVpJLHI9ZU4sbz1RSSxhPXROLHM9WzAsMS8wXSxsPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLGM9MjUwLHU9RXAsaD13Yygic3RhcnQiLCJ6b29tIiwiZW5kIiksZD01MDAscD0wO2Z1bmN0aW9uIGYodCl7dC5wcm9wZXJ0eSgiX196b29tIixKSSkub24oIndoZWVsLnpvb20iLHgpLm9uKCJtb3VzZWRvd24uem9vbSIsdykub24oImRibGNsaWNrLnpvb20iLFMpLmZpbHRlcihhKS5vbigidG91Y2hzdGFydC56b29tIixNKS5vbigidG91Y2htb3ZlLnpvb20iLEUpLm9uKCJ0b3VjaGVuZC56b29tIHRvdWNoY2FuY2VsLnpvb20iLFQpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBtKHQsZSl7cmV0dXJuKGU9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUpKSk9PT10Lms/dDpuZXcgV0koZSx0LngsdC55KX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgaT1lWzBdLW5bMF0qdC5rLHI9ZVsxXS1uWzFdKnQuaztyZXR1cm4gaT09PXQueCYmcj09PXQueT90Om5ldyBXSSh0LmssaSxyKX1mdW5jdGlvbiBfKHQpe3JldHVyblsoK3RbMF1bMF0rICt0WzFdWzBdKS8yLCgrdFswXVsxXSsgK3RbMV1bMV0pLzJdfWZ1bmN0aW9uIHkodCxlLG4pe3Qub24oInN0YXJ0Lnpvb20iLChmdW5jdGlvbigpe3YodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIiwoZnVuY3Rpb24oKXt2KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2Vlbigiem9vbSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cyxvPXYodCxyKSxhPWkuYXBwbHkodCxyKSxzPW51bGw9PW4/XyhhKToiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHQscik6bixsPU1hdGgubWF4KGFbMV1bMF0tYVswXVswXSxhWzFdWzFdLWFbMF1bMV0pLGM9dC5fX3pvb20saD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHQscik6ZSxkPXUoYy5pbnZlcnQocykuY29uY2F0KGwvYy5rKSxoLmludmVydChzKS5jb25jYXQobC9oLmspKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYoMT09PXQpdD1oO2Vsc2V7dmFyIGU9ZCh0KSxuPWwvZVsyXTt0PW5ldyBXSShuLHNbMF0tZVswXSpuLHNbMV0tZVsxXSpuKX1vLnpvb20obnVsbCx0KX19KSl9ZnVuY3Rpb24gdih0LGUsbil7cmV0dXJuIW4mJnQuX196b29taW5nfHxuZXcgYih0LGUpfWZ1bmN0aW9uIGIodCxlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLmFjdGl2ZT0wLHRoaXMuZXh0ZW50PWkuYXBwbHkodCxlKSx0aGlzLnRhcHM9MH1mdW5jdGlvbiB4KCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXYodGhpcyxhcmd1bWVudHMpLGU9dGhpcy5fX3pvb20saT1NYXRoLm1heChzWzBdLE1hdGgubWluKHNbMV0sZS5rKk1hdGgucG93KDIsby5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksYT1iaCh0aGlzKTtpZih0LndoZWVsKXQubW91c2VbMF1bMF09PT1hWzBdJiZ0Lm1vdXNlWzBdWzFdPT09YVsxXXx8KHQubW91c2VbMV09ZS5pbnZlcnQodC5tb3VzZVswXT1hKSksY2xlYXJUaW1lb3V0KHQud2hlZWwpO2Vsc2V7aWYoZS5rPT09aSlyZXR1cm47dC5tb3VzZT1bYSxlLmludmVydChhKV0sbGYodGhpcyksdC5zdGFydCgpfSRJKCksdC53aGVlbD1zZXRUaW1lb3V0KGMsMTUwKSx0Lnpvb20oIm1vdXNlIixyKGcobShlLGkpLHQubW91c2VbMF0sdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIGMoKXt0LndoZWVsPW51bGwsdC5lbmQoKX19ZnVuY3Rpb24gdygpe2lmKCFlJiZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9dih0aGlzLGFyZ3VtZW50cywhMCksaT1EdShNdS52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLGMsITApLm9uKCJtb3VzZXVwLnpvb20iLHUsITApLG89YmgodGhpcyksYT1NdS5jbGllbnRYLHM9TXUuY2xpZW50WTtFaChNdS52aWV3KSxYSSgpLHQubW91c2U9W28sdGhpcy5fX3pvb20uaW52ZXJ0KG8pXSxsZih0aGlzKSx0LnN0YXJ0KCl9ZnVuY3Rpb24gYygpe2lmKCRJKCksIXQubW92ZWQpe3ZhciBlPU11LmNsaWVudFgtYSxuPU11LmNsaWVudFktczt0Lm1vdmVkPWUqZStuKm4+cH10Lnpvb20oIm1vdXNlIixyKGcodC50aGF0Ll9fem9vbSx0Lm1vdXNlWzBdPWJoKHQudGhhdCksdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIHUoKXtpLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLFRoKE11LnZpZXcsdC5tb3ZlZCksJEkoKSx0LmVuZCgpfX1mdW5jdGlvbiBTKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXRoaXMuX196b29tLGU9YmgodGhpcyksbz10LmludmVydChlKSxhPXQuayooTXUuc2hpZnRLZXk/LjU6Mikscz1yKGcobSh0LGEpLGUsbyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCk7JEkoKSxjPjA/RHUodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGMpLmNhbGwoeSxzLGUpOkR1KHRoaXMpLmNhbGwoZi50cmFuc2Zvcm0scyl9fWZ1bmN0aW9uIE0oKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGUsaSxyLG8sYT1NdS50b3VjaGVzLHM9YS5sZW5ndGgsbD12KHRoaXMsYXJndW1lbnRzLE11LmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09PXMpO2ZvcihYSSgpLGk9MDtpPHM7KytpKW89W289d2godGhpcyxhLChyPWFbaV0pLmlkZW50aWZpZXIpLHRoaXMuX196b29tLmludmVydChvKSxyLmlkZW50aWZpZXJdLGwudG91Y2gwP2wudG91Y2gxfHxsLnRvdWNoMFsyXT09PW9bMl18fChsLnRvdWNoMT1vLGwudGFwcz0wKToobC50b3VjaDA9byxlPSEwLGwudGFwcz0xKyEhdCk7dCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxlJiYobC50YXBzPDImJih0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dD1udWxsfSksZCkpLGxmKHRoaXMpLGwuc3RhcnQoKSl9fWZ1bmN0aW9uIEUoKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIGUsbixpLG8sYT12KHRoaXMsYXJndW1lbnRzKSxzPU11LmNoYW5nZWRUb3VjaGVzLGM9cy5sZW5ndGg7Zm9yKCRJKCksdCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxhLnRhcHM9MCxlPTA7ZTxjOysrZSlpPXdoKHRoaXMscywobj1zW2VdKS5pZGVudGlmaWVyKSxhLnRvdWNoMCYmYS50b3VjaDBbMl09PT1uLmlkZW50aWZpZXI/YS50b3VjaDBbMF09aTphLnRvdWNoMSYmYS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJihhLnRvdWNoMVswXT1pKTtpZihuPWEudGhhdC5fX3pvb20sYS50b3VjaDEpe3ZhciB1PWEudG91Y2gwWzBdLGg9YS50b3VjaDBbMV0sZD1hLnRvdWNoMVswXSxwPWEudG91Y2gxWzFdLGY9KGY9ZFswXS11WzBdKSpmKyhmPWRbMV0tdVsxXSkqZixfPShfPXBbMF0taFswXSkqXysoXz1wWzFdLWhbMV0pKl87bj1tKG4sTWF0aC5zcXJ0KGYvXykpLGk9Wyh1WzBdK2RbMF0pLzIsKHVbMV0rZFsxXSkvMl0sbz1bKGhbMF0rcFswXSkvMiwoaFsxXStwWzFdKS8yXX1lbHNle2lmKCFhLnRvdWNoMClyZXR1cm47aT1hLnRvdWNoMFswXSxvPWEudG91Y2gwWzFdfWEuem9vbSgidG91Y2giLHIoZyhuLGksbyksYS5leHRlbnQsbCkpfX1mdW5jdGlvbiBUKCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciB0LG4saT12KHRoaXMsYXJndW1lbnRzKSxyPU11LmNoYW5nZWRUb3VjaGVzLG89ci5sZW5ndGg7Zm9yKFhJKCksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSxkKSx0PTA7dDxvOysrdCluPXJbdF0saS50b3VjaDAmJmkudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2RlbGV0ZSBpLnRvdWNoMDppLnRvdWNoMSYmaS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJmRlbGV0ZSBpLnRvdWNoMTtpZihpLnRvdWNoMSYmIWkudG91Y2gwJiYoaS50b3VjaDA9aS50b3VjaDEsZGVsZXRlIGkudG91Y2gxKSxpLnRvdWNoMClpLnRvdWNoMFsxXT10aGlzLl9fem9vbS5pbnZlcnQoaS50b3VjaDBbMF0pO2Vsc2UgaWYoaS5lbmQoKSwyPT09aS50YXBzKXt2YXIgYT1EdSh0aGlzKS5vbigiZGJsY2xpY2suem9vbSIpO2EmJmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19cmV0dXJuIGYudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10LnNlbGVjdGlvbj90LnNlbGVjdGlvbigpOnQ7aS5wcm9wZXJ0eSgiX196b29tIixKSSksdCE9PWk/eSh0LGUsbik6aS5pbnRlcnJ1cHQoKS5lYWNoKChmdW5jdGlvbigpe3YodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCkuem9vbShudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUpLmVuZCgpfSkpfSxmLnNjYWxlQnk9ZnVuY3Rpb24odCxlLG4pe2Yuc2NhbGVUbyh0LChmdW5jdGlvbigpe3ZhciB0PXRoaXMuX196b29tLmssbj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplO3JldHVybiB0Km59KSxuKX0sZi5zY2FsZVRvPWZ1bmN0aW9uKHQsZSxuKXtmLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLG89dGhpcy5fX3pvb20sYT1udWxsPT1uP18odCk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bixzPW8uaW52ZXJ0KGEpLGM9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gcihnKG0obyxjKSxhLHMpLHQsbCl9KSxuKX0sZi50cmFuc2xhdGVCeT1mdW5jdGlvbih0LGUsbil7Zi50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9fem9vbS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSwiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKX0pKX0sZi50cmFuc2xhdGVUbz1mdW5jdGlvbih0LGUsbixvKXtmLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9dGhpcy5fX3pvb20scz1udWxsPT1vP18odCk6ImZ1bmN0aW9uIj09dHlwZW9mIG8/by5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bztyZXR1cm4gcihxSS50cmFuc2xhdGUoc1swXSxzWzFdKS5zY2FsZShhLmspLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgZT8tZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LWUsImZ1bmN0aW9uIj09dHlwZW9mIG4/LW4uYXBwbHkodGhpcyxhcmd1bWVudHMpOi1uKSx0LGwpfSksbyl9LGIucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy50aGF0Ll9fem9vbWluZz10aGlzLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1vdXNlJiYibW91c2UiIT09dCYmKHRoaXMubW91c2VbMV09ZS5pbnZlcnQodGhpcy5tb3VzZVswXSkpLHRoaXMudG91Y2gwJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gwWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT10JiYodGhpcy50b3VjaDFbMV09ZS5pbnZlcnQodGhpcy50b3VjaDFbMF0pKSx0aGlzLnRoYXQuX196b29tPWUsdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy50aGF0Ll9fem9vbWluZyx0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpe1B1KG5ldyBHSShmLHQsdGhpcy50aGF0Ll9fem9vbSksaC5hcHBseSxoLFt0LHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LGYud2hlZWxEZWx0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmpJKCt0KSxmKTpvfSxmLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmpJKCEhdCksZik6bn0sZi50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpqSSghIXQpLGYpOmF9LGYuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6akkoW1srdFswXVswXSwrdFswXVsxXV0sWyt0WzFdWzBdLCt0WzFdWzFdXV0pLGYpOml9LGYuc2NhbGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHNbMF09K3RbMF0sc1sxXT0rdFsxXSxmKTpbc1swXSxzWzFdXX0sZi50cmFuc2xhdGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGxbMF1bMF09K3RbMF1bMF0sbFsxXVswXT0rdFsxXVswXSxsWzBdWzFdPSt0WzBdWzFdLGxbMV1bMV09K3RbMV1bMV0sZik6W1tsWzBdWzBdLGxbMF1bMV1dLFtsWzFdWzBdLGxbMV1bMV1dXX0sZi5jb25zdHJhaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxmKTpyfSxmLmR1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSt0LGYpOmN9LGYuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxmKTp1fSxmLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9aC5vbi5hcHBseShoLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1oP2Y6dH0sZi5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSh0PSt0KSp0LGYpOk1hdGguc3FydChwKX0sZn1ZSS5wcm90b3R5cGU9V0kucHJvdG90eXBlO3ZhciBpTj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCx2ZXJzaW9uOiI1LjcuMCIsYmlzZWN0OkRsLGJpc2VjdFJpZ2h0OkRsLGJpc2VjdExlZnQ6QmwsYXNjZW5kaW5nOlJsLGJpc2VjdG9yOk9sLGNyb3NzOkZsLGRlc2NlbmRpbmc6ZnVuY3Rpb24gck4odCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59LGRldmlhdGlvbjpqbCxleHRlbnQ6R2wsaGlzdG9ncmFtOmZ1bmN0aW9uIG9OKCl7dmFyIHQ9JGwsZT1HbCxuPWljO2Z1bmN0aW9uIGkoaSl7dmFyIHIsbyxhPWkubGVuZ3RoLHM9bmV3IEFycmF5KGEpO2ZvcihyPTA7cjxhOysrcilzW3JdPXQoaVtyXSxyLGkpO3ZhciBsPWUocyksYz1sWzBdLHU9bFsxXSxoPW4ocyxjLHUpO0FycmF5LmlzQXJyYXkoaCl8fChoPW5jKGMsdSxoKSxoPUtsKE1hdGguY2VpbChjL2gpKmgsdSxoKSk7Zm9yKHZhciBkPWgubGVuZ3RoO2hbMF08PWM7KWguc2hpZnQoKSwtLWQ7Zm9yKDtoW2QtMV0+dTspaC5wb3AoKSwtLWQ7dmFyIHAsZj1uZXcgQXJyYXkoZCsxKTtmb3Iocj0wO3I8PWQ7KytyKShwPWZbcl09W10pLngwPXI+MD9oW3ItMV06YyxwLngxPXI8ZD9oW3JdOnU7Zm9yKHI9MDtyPGE7KytyKWM8PShvPXNbcl0pJiZvPD11JiZmW0RsKGgsbywwLGQpXS5wdXNoKGlbcl0pO3JldHVybiBmfXJldHVybiBpLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WGwoZSksaSk6dH0saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYbChbdFswXSx0WzFdXSksaSk6ZX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9YbChxbC5jYWxsKHQpKTpYbCh0KSxpKTpufSxpfSx0aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzOmZ1bmN0aW9uIGFOKHQsZSxuKXtyZXR1cm4gdD1ZbC5jYWxsKHQsVmwpLnNvcnQoUmwpLE1hdGguY2VpbCgobi1lKS8oMioocmModCwuNzUpLXJjKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdGhyZXNob2xkU2NvdHQ6ZnVuY3Rpb24gc04odCxlLG4pe3JldHVybiBNYXRoLmNlaWwoKG4tZSkvKDMuNSpqbCh0KSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfSx0aHJlc2hvbGRTdHVyZ2VzOmljLG1heDpvYyxtZWFuOmZ1bmN0aW9uIGxOKHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPWksbz0tMSxhPTA7aWYobnVsbD09ZSlmb3IoOysrbzxpOylpc05hTihuPVZsKHRbb10pKT8tLXI6YSs9bjtlbHNlIGZvcig7KytvPGk7KWlzTmFOKG49VmwoZSh0W29dLG8sdCkpKT8tLXI6YSs9bjtpZihyKXJldHVybiBhL3J9LG1lZGlhbjpmdW5jdGlvbiBjTih0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj0tMSxvPVtdO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspaXNOYU4obj1WbCh0W3JdKSl8fG8ucHVzaChuKTtlbHNlIGZvcig7KytyPGk7KWlzTmFOKG49VmwoZSh0W3JdLHIsdCkpKXx8by5wdXNoKG4pO3JldHVybiByYyhvLnNvcnQoUmwpLC41KX0sbWVyZ2U6YWMsbWluOnNjLHBhaXJzOmZ1bmN0aW9uIHVOKHQsZSl7bnVsbD09ZSYmKGU9SGwpO2Zvcih2YXIgbj0wLGk9dC5sZW5ndGgtMSxyPXRbMF0sbz1uZXcgQXJyYXkoaTwwPzA6aSk7bjxpOylvW25dPWUocixyPXRbKytuXSk7cmV0dXJuIG99LHBlcm11dGU6ZnVuY3Rpb24gaE4odCxlKXtmb3IodmFyIG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobik7bi0tOylpW25dPXRbZVtuXV07cmV0dXJuIGl9LHF1YW50aWxlOnJjLHJhbmdlOktsLHNjYW46ZnVuY3Rpb24gZE4odCxlKXtpZihuPXQubGVuZ3RoKXt2YXIgbixpLHI9MCxvPTAsYT10W29dO2ZvcihudWxsPT1lJiYoZT1SbCk7KytyPG47KShlKGk9dFtyXSxhKTwwfHwwIT09ZShhLGEpKSYmKGE9aSxvPXIpO3JldHVybiAwPT09ZShhLGEpP286dm9pZCAwfX0sc2h1ZmZsZTpmdW5jdGlvbiBwTih0LGUsbil7Zm9yKHZhciBpLHIsbz0obnVsbD09bj90Lmxlbmd0aDpuKS0oZT1udWxsPT1lPzA6K2UpO287KXI9TWF0aC5yYW5kb20oKSpvLS18MCxpPXRbbytlXSx0W28rZV09dFtyK2VdLHRbcitlXT1pO3JldHVybiB0fSxzdW06ZnVuY3Rpb24gZk4odCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspKG49K3Rbcl0pJiYobys9bik7ZWxzZSBmb3IoOysrcjxpOykobj0rZSh0W3JdLHIsdCkpJiYobys9bik7cmV0dXJuIG99LHRpY2tzOnRjLHRpY2tJbmNyZW1lbnQ6ZWMsdGlja1N0ZXA6bmMsdHJhbnNwb3NlOmxjLHZhcmlhbmNlOlVsLHppcDpmdW5jdGlvbiBtTigpe3JldHVybiBsYyhhcmd1bWVudHMpfSxheGlzVG9wOmZ1bmN0aW9uIGdOKHQpe3JldHVybiB5YygxLHQpfSxheGlzUmlnaHQ6ZnVuY3Rpb24gX04odCl7cmV0dXJuIHljKDIsdCl9LGF4aXNCb3R0b206dmMsYXhpc0xlZnQ6YmMsYnJ1c2g6dmcsYnJ1c2hYOmZ1bmN0aW9uIHlOKCl7cmV0dXJuIGJnKGlnKX0sYnJ1c2hZOnlnLGJydXNoU2VsZWN0aW9uOl9nLGNob3JkOmZ1bmN0aW9uIHZOKCl7dmFyIHQ9MCxlPW51bGwsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscyxsLGMsdSxoPXIubGVuZ3RoLGQ9W10scD1LbChoKSxmPVtdLG09W10sZz1tLmdyb3Vwcz1uZXcgQXJyYXkoaCksXz1uZXcgQXJyYXkoaCpoKTtmb3Iobz0wLGM9LTE7KytjPGg7KXtmb3IoYT0wLHU9LTE7Kyt1PGg7KWErPXJbY11bdV07ZC5wdXNoKGEpLGYucHVzaChLbChoKSksbys9YX1mb3IoZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGRbdF0sZFtuXSl9KSksbiYmZi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbihyW2VdW3RdLHJbZV1baV0pfSkpfSkpLGw9KG89VGcoMCxFZy10KmgpL28pP3Q6RWcvaCxhPTAsYz0tMTsrK2M8aDspe2ZvcihzPWEsdT0tMTsrK3U8aDspe3ZhciB5PXBbY10sdj1mW3ldW3VdLGI9clt5XVt2XSx4PWEsdz1hKz1iKm87X1t2KmgreV09e2luZGV4Onksc3ViaW5kZXg6dixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpifX1nW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTphLHZhbHVlOmRbeV19LGErPWx9Zm9yKGM9LTE7KytjPGg7KWZvcih1PWMtMTsrK3U8aDspe3ZhciBTPV9bdSpoK2NdLE09X1tjKmgrdV07KFMudmFsdWV8fE0udmFsdWUpJiZtLnB1c2goUy52YWx1ZTxNLnZhbHVlP3tzb3VyY2U6TSx0YXJnZXQ6U306e3NvdXJjZTpTLHRhcmdldDpNfSl9cmV0dXJuIGk/bS5zb3J0KGkpOm19cmV0dXJuIHIucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9VGcoMCxlKSxyKTp0fSxyLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxyKTpufSxyLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1udWxsOihpPUNnKHQpKS5fPXQscik6aSYmaS5ffSxyfSxyaWJib246ZnVuY3Rpb24gYk4oKXt2YXIgdD16ZyxlPURnLG49QmcsaT1IZyxyPUZnLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz1BZy5jYWxsKGFyZ3VtZW50cyksbD10LmFwcGx5KHRoaXMscyksYz1lLmFwcGx5KHRoaXMscyksdT0rbi5hcHBseSh0aGlzLChzWzBdPWwscykpLGg9aS5hcHBseSh0aGlzLHMpLU1nLGQ9ci5hcHBseSh0aGlzLHMpLU1nLHA9dSp4ZyhoKSxmPXUqd2coaCksbT0rbi5hcHBseSh0aGlzLChzWzBdPWMscykpLGc9aS5hcHBseSh0aGlzLHMpLU1nLF89ci5hcHBseSh0aGlzLHMpLU1nO2lmKG98fChvPWE9T2coKSksby5tb3ZlVG8ocCxmKSxvLmFyYygwLDAsdSxoLGQpLGg9PT1nJiZkPT09X3x8KG8ucXVhZHJhdGljQ3VydmVUbygwLDAsbSp4ZyhnKSxtKndnKGcpKSxvLmFyYygwLDAsbSxnLF8pKSxvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLHAsZiksby5jbG9zZVBhdGgoKSxhKXJldHVybiBvPW51bGwsYSsiInx8bnVsbH1yZXR1cm4gYS5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprZygrdCksYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6a2coK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprZygrdCksYSk6cn0sYS5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxhKTp0fSxhLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGEpOmV9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfSxuZXN0OmZ1bmN0aW9uIHhOKCl7dmFyIHQsZSxuLGk9W10scj1bXTtmdW5jdGlvbiBvKG4scixhLHMpe2lmKHI+PWkubGVuZ3RoKXJldHVybiBudWxsIT10JiZuLnNvcnQodCksbnVsbCE9ZT9lKG4pOm47Zm9yKHZhciBsLGMsdSxoPS0xLGQ9bi5sZW5ndGgscD1pW3IrK10sZj1qZygpLG09YSgpOysraDxkOykodT1mLmdldChsPXAoYz1uW2hdKSsiIikpP3UucHVzaChjKTpmLnNldChsLFtjXSk7cmV0dXJuIGYuZWFjaCgoZnVuY3Rpb24odCxlKXtzKG0sZSxvKHQscixhLHMpKX0pKSxtfWZ1bmN0aW9uIGEodCxuKXtpZigrK24+aS5sZW5ndGgpcmV0dXJuIHQ7dmFyIG8scz1yW24tMV07cmV0dXJuIG51bGwhPWUmJm4+PWkubGVuZ3RoP289dC5lbnRyaWVzKCk6KG89W10sdC5lYWNoKChmdW5jdGlvbih0LGUpe28ucHVzaCh7a2V5OmUsdmFsdWVzOmEodCxuKX0pfSkpKSxudWxsIT1zP28uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LmtleSxlLmtleSl9KSk6b31yZXR1cm4gbj17b2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCxHZyxXZyl9LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0LDAscWcsWWcpfSxlbnRyaWVzOmZ1bmN0aW9uKHQpe3JldHVybiBhKG8odCwwLHFnLFlnKSwwKX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiBpLnB1c2godCksbn0sc29ydEtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIHJbaS5sZW5ndGgtMV09dCxufSxzb3J0VmFsdWVzOmZ1bmN0aW9uKGUpe3JldHVybiB0PWUsbn0scm9sbHVwOmZ1bmN0aW9uKHQpe3JldHVybiBlPXQsbn19fSxzZXQ6S2csbWFwOmpnLGtleXM6WmcsdmFsdWVzOmZ1bmN0aW9uIHdOKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh0W25dKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbiBTTih0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2goe2tleTpuLHZhbHVlOnRbbl19KTtyZXR1cm4gZX0sY29sb3I6SmgscmdiOm5kLGhzbDpjZCxsYWI6eGQsaGNsOkFkLGxjaDpmdW5jdGlvbiBNTih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Q2QodCk6bmV3IGtkKG4sZSx0LG51bGw9PWk/MTppKX0sZ3JheTpmdW5jdGlvbiBFTih0LGUpe3JldHVybiBuZXcgd2QodCwwLDAsbnVsbD09ZT8xOmUpfSxjdWJlaGVsaXg6RmQsY29udG91cnM6YV8sY29udG91ckRlbnNpdHk6ZnVuY3Rpb24gVE4oKXt2YXIgdD1jXyxlPXVfLG49aF8saT05NjAscj01MDAsbz0yMCxhPTIscz0zKm8sbD1pKzIqcz4+YSxjPXIrMipzPj5hLHU9dF8oMjApO2Z1bmN0aW9uIGgoaSl7dmFyIHI9bmV3IEZsb2F0MzJBcnJheShsKmMpLGg9bmV3IEZsb2F0MzJBcnJheShsKmMpO2kuZm9yRWFjaCgoZnVuY3Rpb24oaSxvLHUpe3ZhciBoPSt0KGksbyx1KStzPj5hLGQ9K2UoaSxvLHUpK3M+PmEscD0rbihpLG8sdSk7aD49MCYmaDxsJiZkPj0wJiZkPGMmJihyW2grZCpsXSs9cCl9KSksc18oe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LG8+PmEpLGxfKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSxvPj5hKSxzXyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0sbz4+YSksbF8oe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LG8+PmEpLHNfKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSxvPj5hKSxsXyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0sbz4+YSk7dmFyIHA9dShyKTtpZighQXJyYXkuaXNBcnJheShwKSl7dmFyIGY9b2Mocik7cD1uYygwLGYscCksKHA9S2woMCxNYXRoLmZsb29yKGYvcCkqcCxwKSkuc2hpZnQoKX1yZXR1cm4gYV8oKS50aHJlc2hvbGRzKHApLnNpemUoW2wsY10pKHIpLm1hcChkKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LnZhbHVlKj1NYXRoLnBvdygyLC0yKmEpLHQuY29vcmRpbmF0ZXMuZm9yRWFjaChwKSx0fWZ1bmN0aW9uIHAodCl7dC5mb3JFYWNoKGYpfWZ1bmN0aW9uIGYodCl7dC5mb3JFYWNoKG0pfWZ1bmN0aW9uIG0odCl7dFswXT10WzBdKk1hdGgucG93KDIsYSktcyx0WzFdPXRbMV0qTWF0aC5wb3coMixhKS1zfWZ1bmN0aW9uIGcoKXtyZXR1cm4gbD1pKzIqKHM9MypvKT4+YSxjPXIrMipzPj5hLGh9cmV0dXJuIGgueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnRfKCtlKSxoKTp0fSxoLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0XygrdCksaCk6ZX0saC53ZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0XygrdCksaCk6bn0saC5zaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltpLHJdO3ZhciBlPU1hdGguY2VpbCh0WzBdKSxuPU1hdGguY2VpbCh0WzFdKTtpZighKGU+PTB8fGU+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIGk9ZSxyPW4sZygpfSxoLmNlbGxTaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiAxPDxhO2lmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2VsbCBzaXplIik7cmV0dXJuIGE9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksZygpfSxoLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP3RfKEpnLmNhbGwodCkpOnRfKHQpLGgpOnV9LGguYmFuZHdpZHRoPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBNYXRoLnNxcnQobyoobysxKSk7aWYoISgodD0rdCk+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBiYW5kd2lkdGgiKTtyZXR1cm4gbz1NYXRoLnJvdW5kKChNYXRoLnNxcnQoNCp0KnQrMSktMSkvMiksZygpfSxofSxkaXNwYXRjaDp3YyxkcmFnOk5oLGRyYWdEaXNhYmxlOkVoLGRyYWdFbmFibGU6VGgsZHN2Rm9ybWF0OnlfLGNzdlBhcnNlOmJfLGNzdlBhcnNlUm93czp4Xyxjc3ZGb3JtYXQ6d18sY3N2Rm9ybWF0Qm9keTpTXyxjc3ZGb3JtYXRSb3dzOk1fLGNzdkZvcm1hdFJvdzpFXyxjc3ZGb3JtYXRWYWx1ZTpUXyx0c3ZQYXJzZTpBXyx0c3ZQYXJzZVJvd3M6a18sdHN2Rm9ybWF0OlBfLHRzdkZvcm1hdEJvZHk6TF8sdHN2Rm9ybWF0Um93czpJXyx0c3ZGb3JtYXRSb3c6Tl8sdHN2Rm9ybWF0VmFsdWU6Ul8sYXV0b1R5cGU6ZnVuY3Rpb24gQ04odCl7Zm9yKHZhciBlIGluIHQpe3ZhciBuLGkscj10W2VdLnRyaW0oKTtpZihyKWlmKCJ0cnVlIj09PXIpcj0hMDtlbHNlIGlmKCJmYWxzZSI9PT1yKXI9ITE7ZWxzZSBpZigiTmFOIj09PXIpcj1OYU47ZWxzZSBpZihpc05hTihuPStyKSl7aWYoIShpPXIubWF0Y2goL14oWy0rXVxkezJ9KT9cZHs0fSgtXGR7Mn0oLVxkezJ9KT8pPyhUXGR7Mn06XGR7Mn0oOlxkezJ9KFwuXGR7M30pPyk/KFp8Wy0rXVxkezJ9OlxkezJ9KT8pPyQvKSkpY29udGludWU7T18mJmlbNF0mJiFpWzddJiYocj1yLnJlcGxhY2UoLy0vZywiLyIpLnJlcGxhY2UoL1QvLCIgIikpLHI9bmV3IERhdGUocil9ZWxzZSByPW47ZWxzZSByPW51bGw7dFtlXT1yfXJldHVybiB0fSxlYXNlTGluZWFyOkZmLGVhc2VRdWFkOmpmLGVhc2VRdWFkSW46VmYsZWFzZVF1YWRPdXQ6VWYsZWFzZVF1YWRJbk91dDpqZixlYXNlQ3ViaWM6cWYsZWFzZUN1YmljSW46R2YsZWFzZUN1YmljT3V0OldmLGVhc2VDdWJpY0luT3V0OnFmLGVhc2VQb2x5OmZtLGVhc2VQb2x5SW46ZG0sZWFzZVBvbHlPdXQ6cG0sZWFzZVBvbHlJbk91dDpmbSxlYXNlU2luOnZtLGVhc2VTaW5JbjpfbSxlYXNlU2luT3V0OnltLGVhc2VTaW5Jbk91dDp2bSxlYXNlRXhwOlNtLGVhc2VFeHBJbjp4bSxlYXNlRXhwT3V0OndtLGVhc2VFeHBJbk91dDpTbSxlYXNlQ2lyY2xlOlRtLGVhc2VDaXJjbGVJbjpNbSxlYXNlQ2lyY2xlT3V0OkVtLGVhc2VDaXJjbGVJbk91dDpUbSxlYXNlQm91bmNlOlBtLGVhc2VCb3VuY2VJbjprbSxlYXNlQm91bmNlT3V0OlBtLGVhc2VCb3VuY2VJbk91dDpMbSxlYXNlQmFjazpPbSxlYXNlQmFja0luOk5tLGVhc2VCYWNrT3V0OlJtLGVhc2VCYWNrSW5PdXQ6T20sZWFzZUVsYXN0aWM6Qm0sZWFzZUVsYXN0aWNJbjpEbSxlYXNlRWxhc3RpY091dDpCbSxlYXNlRWxhc3RpY0luT3V0OkhtLGJsb2I6ZnVuY3Rpb24gQU4odCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKHpfKX0sYnVmZmVyOmZ1bmN0aW9uIGtOKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbihEXyl9LGRzdjpmdW5jdGlvbiBQTih0LGUsbixpKXszPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihpPW4sbj12b2lkIDApO3ZhciByPXlfKHQpO3JldHVybiBIXyhlLG4pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiByLnBhcnNlKHQsaSl9KSl9LGNzdjpWXyx0c3Y6VV8saW1hZ2U6ZnVuY3Rpb24gTE4odCxlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7dmFyIHI9bmV3IEltYWdlO2Zvcih2YXIgbyBpbiBlKXJbb109ZVtvXTtyLm9uZXJyb3I9aSxyLm9ubG9hZD1mdW5jdGlvbigpe24ocil9LHIuc3JjPXR9KSl9LGpzb246ZnVuY3Rpb24gSU4odCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKGpfKX0sdGV4dDpIXyx4bWw6V18saHRtbDpxXyxzdmc6WV8sZm9yY2VDZW50ZXI6ZnVuY3Rpb24gTk4odCxlKXt2YXIgbjtmdW5jdGlvbiBpKCl7dmFyIGkscixvPW4ubGVuZ3RoLGE9MCxzPTA7Zm9yKGk9MDtpPG87KytpKWErPShyPW5baV0pLngscys9ci55O2ZvcihhPWEvby10LHM9cy9vLWUsaT0wO2k8bzsrK2kpKHI9bltpXSkueC09YSxyLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihlPTApLGkuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXR9LGkueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxpKTp0fSxpLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3QsaSk6ZX0saX0sZm9yY2VDb2xsaWRlOmZ1bmN0aW9uIFJOKHQpe3ZhciBlLG4saT0xLHI9MTtmdW5jdGlvbiBvKCl7Zm9yKHZhciB0LG8scyxsLGMsdSxoLGQ9ZS5sZW5ndGgscD0wO3A8cjsrK3ApZm9yKG89dHkoZSxyeSxveSkudmlzaXRBZnRlcihhKSx0PTA7dDxkOysrdCloPSh1PW5bKHM9ZVt0XSkuaW5kZXhdKSp1LGw9cy54K3MudngsYz1zLnkrcy52eSxvLnZpc2l0KGYpO2Z1bmN0aW9uIGYodCxlLG4scixvKXt2YXIgYT10LmRhdGEsZD10LnIscD11K2Q7aWYoIWEpcmV0dXJuIGU+bCtwfHxyPGwtcHx8bj5jK3B8fG88Yy1wO2lmKGEuaW5kZXg+cy5pbmRleCl7dmFyIGY9bC1hLngtYS52eCxtPWMtYS55LWEudnksZz1mKmYrbSptO2c8cCpwJiYoMD09PWYmJihnKz0oZj0kXygpKSpmKSwwPT09bSYmKGcrPShtPSRfKCkpKm0pLGc9KHAtKGc9TWF0aC5zcXJ0KGcpKSkvZyppLHMudngrPShmKj1nKSoocD0oZCo9ZCkvKGgrZCkpLHMudnkrPShtKj1nKSpwLGEudngtPWYqKHA9MS1wKSxhLnZ5LT1tKnApfX19ZnVuY3Rpb24gYSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgaSxyLG89ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKW5bKHI9ZVtpXSkuaW5kZXhdPSt0KHIsaSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhfKG51bGw9PXQ/MTordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbyk6cn0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlhfKCtlKSxzKCksbyk6dH0sb30sZm9yY2VMaW5rOmZ1bmN0aW9uIE9OKHQpe3ZhciBlLG4saSxyLG8sYT1heSxzPWZ1bmN0aW9uIGwodCl7cmV0dXJuIDEvTWF0aC5taW4oclt0LnNvdXJjZS5pbmRleF0sclt0LnRhcmdldC5pbmRleF0pfSxjPVhfKDMwKSx1PTE7ZnVuY3Rpb24gaChpKXtmb3IodmFyIHI9MCxhPXQubGVuZ3RoO3I8dTsrK3IpZm9yKHZhciBzLGwsYyxoLGQscCxmLG09MDttPGE7KyttKWg9KGM9KHM9dFttXSkudGFyZ2V0KS54K2MudngtKGw9cy5zb3VyY2UpLngtbC52eHx8JF8oKSxkPWMueStjLnZ5LWwueS1sLnZ5fHwkXygpLGQqPXA9KChwPU1hdGguc3FydChoKmgrZCpkKSktblttXSkvcCppKmVbbV0sYy52eC09KGgqPXApKihmPW9bbV0pLGMudnktPWQqZixsLnZ4Kz1oKihmPTEtZiksbC52eSs9ZCpmfWZ1bmN0aW9uIGQoKXtpZihpKXt2YXIgcyxsLGM9aS5sZW5ndGgsdT10Lmxlbmd0aCxoPWpnKGksYSk7Zm9yKHM9MCxyPW5ldyBBcnJheShjKTtzPHU7KytzKShsPXRbc10pLmluZGV4PXMsIm9iamVjdCIhPXR5cGVvZiBsLnNvdXJjZSYmKGwuc291cmNlPXN5KGgsbC5zb3VyY2UpKSwib2JqZWN0IiE9dHlwZW9mIGwudGFyZ2V0JiYobC50YXJnZXQ9c3koaCxsLnRhcmdldCkpLHJbbC5zb3VyY2UuaW5kZXhdPShyW2wuc291cmNlLmluZGV4XXx8MCkrMSxyW2wudGFyZ2V0LmluZGV4XT0ocltsLnRhcmdldC5pbmRleF18fDApKzE7Zm9yKHM9MCxvPW5ldyBBcnJheSh1KTtzPHU7KytzKW9bc109clsobD10W3NdKS5zb3VyY2UuaW5kZXhdLyhyW2wuc291cmNlLmluZGV4XStyW2wudGFyZ2V0LmluZGV4XSk7ZT1uZXcgQXJyYXkodSkscCgpLG49bmV3IEFycmF5KHUpLGYoKX19ZnVuY3Rpb24gcCgpe2lmKGkpZm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7KytuKWVbbl09K3ModFtuXSxuLHQpfWZ1bmN0aW9uIGYoKXtpZihpKWZvcih2YXIgZT0wLHI9dC5sZW5ndGg7ZTxyOysrZSluW2VdPStjKHRbZV0sZSx0KX1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGguaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtpPXQsZCgpfSxoLmxpbmtzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsZCgpLGgpOnR9LGguaWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxoKTphfSxoLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3QsaCk6dX0saC5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxwKCksaCk6c30saC5kaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxmKCksaCk6Y30saH0sZm9yY2VNYW55Qm9keTpmdW5jdGlvbiB6Tigpe3ZhciB0LGUsbixpLHI9WF8oLTMwKSxvPTEsYT0xLzAscz0uODE7ZnVuY3Rpb24gbChpKXt2YXIgcixvPXQubGVuZ3RoLGE9dHkodCxseSxjeSkudmlzaXRBZnRlcih1KTtmb3Iobj1pLHI9MDtyPG87KytyKWU9dFtyXSxhLnZpc2l0KGgpfWZ1bmN0aW9uIGMoKXtpZih0KXt2YXIgZSxuLG89dC5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG8pLGU9MDtlPG87KytlKWlbKG49dFtlXSkuaW5kZXhdPStyKG4sZSx0KX19ZnVuY3Rpb24gdSh0KXt2YXIgZSxuLHIsbyxhLHM9MCxsPTA7aWYodC5sZW5ndGgpe2ZvcihyPW89YT0wO2E8NDsrK2EpKGU9dFthXSkmJihuPU1hdGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsbCs9bixyKz1uKmUueCxvKz1uKmUueSk7dC54PXIvbCx0Lnk9by9sfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97cys9aVtlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24gaCh0LHIsbCxjKXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgdT10LngtZS54LGg9dC55LWUueSxkPWMtcixwPXUqdStoKmg7aWYoZCpkL3M8cClyZXR1cm4gcDxhJiYoMD09PXUmJihwKz0odT0kXygpKSp1KSwwPT09aCYmKHArPShoPSRfKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpLGUudngrPXUqdC52YWx1ZSpuL3AsZS52eSs9aCp0LnZhbHVlKm4vcCksITA7aWYoISh0Lmxlbmd0aHx8cD49YSkpeyh0LmRhdGEhPT1lfHx0Lm5leHQpJiYoMD09PXUmJihwKz0odT0kXygpKSp1KSwwPT09aCYmKHArPShoPSRfKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpKTtkb3t0LmRhdGEhPT1lJiYoZS52eCs9dSooZD1pW3QuZGF0YS5pbmRleF0qbi9wKSxlLnZ5Kz1oKmQpfXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIGwuaW5pdGlhbGl6ZT1mdW5jdGlvbihlKXt0PWUsYygpfSxsLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WF8oK3QpLGMoKSxsKTpyfSxsLmRpc3RhbmNlTWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQqdCxsKTpNYXRoLnNxcnQobyl9LGwuZGlzdGFuY2VNYXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCp0LGwpOk1hdGguc3FydChhKX0sbC50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10KnQsbCk6TWF0aC5zcXJ0KHMpfSxsfSxmb3JjZVJhZGlhbDpmdW5jdGlvbiBETih0LGUsbil7dmFyIGkscixvLGE9WF8oLjEpO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgbD1pW2FdLGM9bC54LWV8fDFlLTYsdT1sLnktbnx8MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxkPShvW2FdLWgpKnJbYV0qdC9oO2wudngrPWMqZCxsLnZ5Kz11KmR9fWZ1bmN0aW9uIGwoKXtpZihpKXt2YXIgZSxuPWkubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxlPTA7ZTxuOysrZSlvW2VdPSt0KGlbZV0sZSxpKSxyW2VdPWlzTmFOKG9bZV0pPzA6K2EoaVtlXSxlLGkpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WF8oK3QpKSxudWxsPT1lJiYoZT0wKSxudWxsPT1uJiYobj0wKSxzLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxsKCkscyk6YX0scy5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpYXygrZSksbCgpLHMpOnR9LHMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscyk6bn0sc30sZm9yY2VTaW11bGF0aW9uOmZ1bmN0aW9uIEJOKHQpe3ZhciBlLG49MSxpPS4wMDEscj0xLU1hdGgucG93KGksMS8zMDApLG89MCxhPS42LHM9amcoKSxsPSRwKHUpLGM9d2MoInRpY2siLCJlbmQiKTtmdW5jdGlvbiB1KCl7aCgpLGMuY2FsbCgidGljayIsZSksbjxpJiYobC5zdG9wKCksYy5jYWxsKCJlbmQiLGUpKX1mdW5jdGlvbiBoKGkpe3ZhciBsLGMsdT10Lmxlbmd0aDt2b2lkIDA9PT1pJiYoaT0xKTtmb3IodmFyIGg9MDtoPGk7KytoKWZvcihuKz0oby1uKSpyLHMuZWFjaCgoZnVuY3Rpb24odCl7dChuKX0pKSxsPTA7bDx1OysrbCludWxsPT0oYz10W2xdKS5meD9jLngrPWMudngqPWE6KGMueD1jLmZ4LGMudng9MCksbnVsbD09Yy5meT9jLnkrPWMudnkqPWE6KGMueT1jLmZ5LGMudnk9MCk7cmV0dXJuIGV9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgZSxuPTAsaT10Lmxlbmd0aDtuPGk7KytuKXtpZigoZT10W25dKS5pbmRleD1uLG51bGwhPWUuZngmJihlLng9ZS5meCksbnVsbCE9ZS5meSYmKGUueT1lLmZ5KSxpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgcj0xMCpNYXRoLnNxcnQobiksbz1uKk15O2UueD1yKk1hdGguY29zKG8pLGUueT1yKk1hdGguc2luKG8pfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZCgpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZCgpLHMuZWFjaChwKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUpOityfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtdCxlKToxLWF9LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LHAobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixvLGEscyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1pP2k9MS8wOmkqPWksYz0wO2M8dTsrK2MpKGE9KHI9ZS0ocz10W2NdKS54KSpyKyhvPW4tcy55KSpvKTxpJiYobD1zLGk9YSk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbih0LG4pLGUpOmMub24odCl9fX0sZm9yY2VYOmZ1bmN0aW9uIEhOKHQpe3ZhciBlLG4saSxyPVhfKC4xKTtmdW5jdGlvbiBvKHQpe2Zvcih2YXIgcixvPTAsYT1lLmxlbmd0aDtvPGE7KytvKShyPWVbb10pLnZ4Kz0oaVtvXS1yLngpKm5bb10qdH1mdW5jdGlvbiBhKCl7aWYoZSl7dmFyIG8sYT1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSksaT1uZXcgQXJyYXkoYSksbz0wO288YTsrK28pbltvXT1pc05hTihpW29dPSt0KGVbb10sbyxlKSk/MDorcihlW29dLG8sZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1YXyhudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhfKCt0KSxhKCksbyk6cn0sby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WF8oK2UpLGEoKSxvKTp0fSxvfSxmb3JjZVk6ZnVuY3Rpb24gRk4odCl7dmFyIGUsbixpLHI9WF8oLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciByLG89MCxhPWUubGVuZ3RoO288YTsrK28pKHI9ZVtvXSkudnkrPShpW29dLXIueSkqbltvXSp0fWZ1bmN0aW9uIGEoKXtpZihlKXt2YXIgbyxhPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKSxpPW5ldyBBcnJheShhKSxvPTA7bzxhOysrbyluW29dPWlzTmFOKGlbb109K3QoZVtvXSxvLGUpKT8wOityKGVbb10sbyxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhfKG51bGw9PXQ/MDordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQsYSgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WF8oK3QpLGEoKSxvKTpyfSxvLnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpYXygrZSksYSgpLG8pOnR9LG99LGZvcm1hdERlZmF1bHRMb2NhbGU6VXksZ2V0IGZvcm1hdCgpe3JldHVybiBEeX0sZ2V0IGZvcm1hdFByZWZpeCgpe3JldHVybiBCeX0sZm9ybWF0TG9jYWxlOlZ5LGZvcm1hdFNwZWNpZmllcjpreSxGb3JtYXRTcGVjaWZpZXI6UHkscHJlY2lzaW9uRml4ZWQ6ankscHJlY2lzaW9uUHJlZml4Okd5LHByZWNpc2lvblJvdW5kOld5LGdlb0FyZWE6ZnVuY3Rpb24gVk4odCl7cmV0dXJuIEl2LnJlc2V0KCksRXYodCxOdiksMipJdn0sZ2VvQm91bmRzOmZ1bmN0aW9uIFVOKHQpe3ZhciBlLG4saSxyLG8sYSxzO2lmKFh2PVl2PS0oV3Y9cXY9MS8wKSxRdj1bXSxFdih0LHliKSxuPVF2Lmxlbmd0aCl7Zm9yKFF2LnNvcnQoQ2IpLGU9MSxvPVtpPVF2WzBdXTtlPG47KytlKUFiKGksKHI9UXZbZV0pWzBdKXx8QWIoaSxyWzFdKT8oVGIoaVswXSxyWzFdKT5UYihpWzBdLGlbMV0pJiYoaVsxXT1yWzFdKSxUYihyWzBdLGlbMV0pPlRiKGlbMF0saVsxXSkmJihpWzBdPXJbMF0pKTpvLnB1c2goaT1yKTtmb3IoYT0tMS8wLGU9MCxpPW9bbj1vLmxlbmd0aC0xXTtlPD1uO2k9ciwrK2UpKHM9VGIoaVsxXSwocj1vW2VdKVswXSkpPmEmJihhPXMsV3Y9clswXSxZdj1pWzFdKX1yZXR1cm4gUXY9dGI9bnVsbCxXdj09PTEvMHx8cXY9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbV3YscXZdLFtZdixYdl1dfSxnZW9DZW50cm9pZDpmdW5jdGlvbiBqTih0KXtlYj1uYj1pYj1yYj1vYj1hYj1zYj1sYj1jYj11Yj1oYj0wLEV2KHQsa2IpO3ZhciBlPWNiLG49dWIsaT1oYixyPWUqZStuKm4raSppO3JldHVybiByPFp5JiYoZT1hYixuPXNiLGk9bGIsbmI8S3kmJihlPWliLG49cmIsaT1vYiksKHI9ZSplK24qbitpKmkpPFp5KT9bTmFOLE5hTl06W2F2KG4sZSkqbnYsX3YoaS9mdihyKSkqbnZdfSxnZW9DaXJjbGU6ZnVuY3Rpb24gR04oKXt2YXIgdCxlLG49RmIoWzAsMF0pLGk9RmIoOTApLHI9RmIoNiksbz17cG9pbnQ6ZnVuY3Rpb24gYShuLGkpe3QucHVzaChuPWUobixpKSksblswXSo9bnYsblsxXSo9bnZ9fTtmdW5jdGlvbiBzKCl7dmFyIGE9bi5hcHBseSh0aGlzLGFyZ3VtZW50cykscz1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSppdixsPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpKml2O3JldHVybiB0PVtdLGU9amIoLWFbMF0qaXYsLWFbMV0qaXYsMCkuaW52ZXJ0LFhiKG8scyxsLDEpLGE9e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt0XX0sdD1lPW51bGwsYX1yZXR1cm4gcy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpGYihbK3RbMF0sK3RbMV1dKSxzKTpufSxzLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZiKCt0KSxzKTppfSxzLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZiKCt0KSxzKTpyfSxzfSxnZW9DbGlwQW50aW1lcmlkaWFuOnN4LGdlb0NsaXBDaXJjbGU6dXgsZ2VvQ2xpcEV4dGVudDpmdW5jdGlvbiBXTigpe3ZhciB0LGUsbixpPTAscj0wLG89OTYwLGE9NTAwO3JldHVybiBuPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD1weChpLHIsbyxhKShlPW4pfSxleHRlbnQ6ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3NbMF1bMF0scj0rc1swXVsxXSxvPStzWzFdWzBdLGE9K3NbMV1bMV0sdD1lPW51bGwsbik6W1tpLHJdLFtvLGFdXX19fSxnZW9DbGlwUmVjdGFuZ2xlOnB4LGdlb0NvbnRhaW5zOmZ1bmN0aW9uIHFOKHQsZSl7cmV0dXJuKHQmJkN4Lmhhc093blByb3BlcnR5KHQudHlwZSk/Q3hbdC50eXBlXTpreCkodCxlKX0sZ2VvRGlzdGFuY2U6VHgsZ2VvR3JhdGljdWxlOkR4LGdlb0dyYXRpY3VsZTEwOmZ1bmN0aW9uIFlOKCl7cmV0dXJuIER4KCkoKX0sZ2VvSW50ZXJwb2xhdGU6ZnVuY3Rpb24gWE4odCxlKXt2YXIgbj10WzBdKml2LGk9dFsxXSppdixyPWVbMF0qaXYsbz1lWzFdKml2LGE9c3YoaSkscz1kdihpKSxsPXN2KG8pLGM9ZHYobyksdT1hKnN2KG4pLGg9YSpkdihuKSxkPWwqc3YocikscD1sKmR2KHIpLGY9Mipfdihmdih5dihvLWkpK2EqbCp5dihyLW4pKSksbT1kdihmKSxnPWY/ZnVuY3Rpb24odCl7dmFyIGU9ZHYodCo9ZikvbSxuPWR2KGYtdCkvbSxpPW4qdStlKmQscj1uKmgrZSpwLG89bipzK2UqYztyZXR1cm5bYXYocixpKSpudixhdihvLGZ2KGkqaStyKnIpKSpudl19OmZ1bmN0aW9uKCl7cmV0dXJuW24qbnYsaSpudl19O3JldHVybiBnLmRpc3RhbmNlPWYsZ30sZ2VvTGVuZ3RoOlN4LGdlb1BhdGg6ZnVuY3Rpb24gJE4odCxlKXt2YXIgbixpLHI9NC41O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgciYmaS5wb2ludFJhZGl1cygrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLEV2KHQsbihpKSkpLGkucmVzdWx0KCl9cmV0dXJuIG8uYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKEt4KSksS3gucmVzdWx0KCl9LG8ubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKER3KSksRHcucmVzdWx0KCl9LG8uYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBFdih0LG4ob3cpKSxvdy5yZXN1bHQoKX0sby5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gRXYodCxuKFR3KSksVHcucmVzdWx0KCl9LG8ucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT1lPyh0PW51bGwsQngpOih0PWUpLnN0cmVhbSxvKTp0fSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8oZT1udWxsLG5ldyBCdyk6bmV3IEN3KGU9dCksImZ1bmN0aW9uIiE9dHlwZW9mIHImJmkucG9pbnRSYWRpdXMociksbyk6ZX0sby5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbyk6cn0sby5wcm9qZWN0aW9uKHQpLmNvbnRleHQoZSl9LGdlb0FsYmVyczppUyxnZW9BbGJlcnNVc2E6ZnVuY3Rpb24gS04oKXt2YXIgdCxlLG4saSxyLG8sYT1pUygpLHM9blMoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGw9blMoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksYz17cG9pbnQ6ZnVuY3Rpb24odCxlKXtvPVt0LGVdfX07ZnVuY3Rpb24gdSh0KXt2YXIgZT10WzBdLGE9dFsxXTtyZXR1cm4gbz1udWxsLG4ucG9pbnQoZSxhKSxvfHwoaS5wb2ludChlLGEpLG8pfHwoci5wb2ludChlLGEpLG8pfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdD1lPW51bGwsdX1yZXR1cm4gdS5pbnZlcnQ9ZnVuY3Rpb24odCl7dmFyIGU9YS5zY2FsZSgpLG49YS50cmFuc2xhdGUoKSxpPSh0WzBdLW5bMF0pL2Uscj0odFsxXS1uWzFdKS9lO3JldHVybihyPj0uMTImJnI8LjIzNCYmaT49LS40MjUmJmk8LS4yMTQ/czpyPj0uMTY2JiZyPC4yMzQmJmk+PS0uMjE0JiZpPC0uMTE1P2w6YSkuaW52ZXJ0KHQpfSx1LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDp0PShmdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybntwb2ludDpmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj0tMTsrK3I8ZTspdFtyXS5wb2ludChuLGkpfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5wb2x5Z29uRW5kKCl9fX0pKFthLnN0cmVhbShlPW4pLHMuc3RyZWFtKG4pLGwuc3RyZWFtKG4pXSl9LHUucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnByZWNpc2lvbih0KSxzLnByZWNpc2lvbih0KSxsLnByZWNpc2lvbih0KSxoKCkpOmEucHJlY2lzaW9uKCl9LHUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEuc2NhbGUodCkscy5zY2FsZSguMzUqdCksbC5zY2FsZSh0KSx1LnRyYW5zbGF0ZShhLnRyYW5zbGF0ZSgpKSk6YS5zY2FsZSgpfSx1LnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYS50cmFuc2xhdGUoKTt2YXIgZT1hLnNjYWxlKCksbz0rdFswXSx1PSt0WzFdO3JldHVybiBuPWEudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1tvLS40NTUqZSx1LS4yMzgqZV0sW28rLjQ1NSplLHUrLjIzOCplXV0pLnN0cmVhbShjKSxpPXMudHJhbnNsYXRlKFtvLS4zMDcqZSx1Ky4yMDEqZV0pLmNsaXBFeHRlbnQoW1tvLS40MjUqZStLeSx1Ky4xMiplK0t5XSxbby0uMjE0KmUtS3ksdSsuMjM0KmUtS3ldXSkuc3RyZWFtKGMpLHI9bC50cmFuc2xhdGUoW28tLjIwNSplLHUrLjIxMiplXSkuY2xpcEV4dGVudChbW28tLjIxNCplK0t5LHUrLjE2NiplK0t5XSxbby0uMTE1KmUtS3ksdSsuMjM0KmUtS3ldXSkuc3RyZWFtKGMpLGgoKX0sdS5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gancodSx0LGUpfSx1LmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3codSx0LGUpfSx1LmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFd3KHUsdCxlKX0sdS5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcXcodSx0LGUpfSx1LnNjYWxlKDEwNzApfSxnZW9BemltdXRoYWxFcXVhbEFyZWE6ZnVuY3Rpb24gWk4oKXtyZXR1cm4gSncoYVMpLnNjYWxlKDEyNC43NSkuY2xpcEFuZ2xlKDE3OS45OTkpfSxnZW9BemltdXRoYWxFcXVhbEFyZWFSYXc6YVMsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQ6ZnVuY3Rpb24gSk4oKXtyZXR1cm4gSncoc1MpLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6c1MsZ2VvQ29uaWNDb25mb3JtYWw6ZnVuY3Rpb24gUU4oKXtyZXR1cm4gdFMoaFMpLnNjYWxlKDEwOS41KS5wYXJhbGxlbHMoWzMwLDMwXSl9LGdlb0NvbmljQ29uZm9ybWFsUmF3OmhTLGdlb0NvbmljRXF1YWxBcmVhOm5TLGdlb0NvbmljRXF1YWxBcmVhUmF3OmVTLGdlb0NvbmljRXF1aWRpc3RhbnQ6ZnVuY3Rpb24gdFIoKXtyZXR1cm4gdFMocFMpLnNjYWxlKDEzMS4xNTQpLmNlbnRlcihbMCwxMy45Mzg5XSl9LGdlb0NvbmljRXF1aWRpc3RhbnRSYXc6cFMsZ2VvRXF1YWxFYXJ0aDpmdW5jdGlvbiBlUigpe3JldHVybiBKdyh2Uykuc2NhbGUoMTc3LjE1OCl9LGdlb0VxdWFsRWFydGhSYXc6dlMsZ2VvRXF1aXJlY3Rhbmd1bGFyOmZ1bmN0aW9uIG5SKCl7cmV0dXJuIEp3KGRTKS5zY2FsZSgxNTIuNjMpfSxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6ZFMsZ2VvR25vbW9uaWM6ZnVuY3Rpb24gaVIoKXtyZXR1cm4gSncoYlMpLnNjYWxlKDE0NC4wNDkpLmNsaXBBbmdsZSg2MCl9LGdlb0dub21vbmljUmF3OmJTLGdlb0lkZW50aXR5OmZ1bmN0aW9uIHJSKCl7dmFyIHQsZSxuLGkscixvLGEscz0xLGw9MCxjPTAsdT0xLGg9MSxkPTAscD1udWxsLGY9MSxtPTEsZz1Gdyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj12KFt0LGVdKTt0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pLF89Qng7ZnVuY3Rpb24geSgpe3JldHVybiBmPXMqdSxtPXMqaCxvPWE9bnVsbCx2fWZ1bmN0aW9uIHYobil7dmFyIGk9blswXSpmLHI9blsxXSptO2lmKGQpe3ZhciBvPXIqdC1pKmU7aT1pKnQrciplLHI9b31yZXR1cm5baStsLHIrY119cmV0dXJuIHYuaW52ZXJ0PWZ1bmN0aW9uKG4pe3ZhciBpPW5bMF0tbCxyPW5bMV0tYztpZihkKXt2YXIgbz1yKnQraSplO2k9aSp0LXIqZSxyPW99cmV0dXJuW2kvZixyL21dfSx2LnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gbyYmYT09PXQ/bzpvPWcoXyhhPXQpKX0sdi5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz10LHA9bj1pPXI9bnVsbCx5KCkpOl99LHYuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz1udWxsPT10PyhwPW49aT1yPW51bGwsQngpOnB4KHA9K3RbMF1bMF0sbj0rdFswXVsxXSxpPSt0WzFdWzBdLHI9K3RbMV1bMV0pLHkoKSk6bnVsbD09cD9udWxsOltbcCxuXSxbaSxyXV19LHYuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QseSgpKTpzfSx2LnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdFswXSxjPSt0WzFdLHkoKSk6W2wsY119LHYuYW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ZHYoZD1uJTM2MCppdiksdD1zdihkKSx5KCkpOmQqbnZ9LHYucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dD8tMToxLHkoKSk6dTwwfSx2LnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXQ/LTE6MSx5KCkpOmg8MH0sdi5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gancodix0LGUpfSx2LmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gR3codix0LGUpfSx2LmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFd3KHYsdCxlKX0sdi5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcXcodix0LGUpfSx2fSxnZW9Qcm9qZWN0aW9uOkp3LGdlb1Byb2plY3Rpb25NdXRhdG9yOlF3LGdlb01lcmNhdG9yOmZ1bmN0aW9uIG9SKCl7cmV0dXJuIGNTKGxTKS5zY2FsZSg5NjEvZXYpfSxnZW9NZXJjYXRvclJhdzpsUyxnZW9OYXR1cmFsRWFydGgxOmZ1bmN0aW9uIGFSKCl7cmV0dXJuIEp3KHhTKS5zY2FsZSgxNzUuMjk1KX0sZ2VvTmF0dXJhbEVhcnRoMVJhdzp4UyxnZW9PcnRob2dyYXBoaWM6ZnVuY3Rpb24gc1IoKXtyZXR1cm4gSncod1MpLnNjYWxlKDI0OS41KS5jbGlwQW5nbGUoOTAuMDAwMDAxKX0sZ2VvT3J0aG9ncmFwaGljUmF3OndTLGdlb1N0ZXJlb2dyYXBoaWM6ZnVuY3Rpb24gbFIoKXtyZXR1cm4gSncoU1MpLnNjYWxlKDI1MCkuY2xpcEFuZ2xlKDE0Mil9LGdlb1N0ZXJlb2dyYXBoaWNSYXc6U1MsZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yOmZ1bmN0aW9uIGNSKCl7dmFyIHQ9Y1MoTVMpLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6TVMsZ2VvUm90YXRpb246WWIsZ2VvU3RyZWFtOkV2LGdlb1RyYW5zZm9ybTpmdW5jdGlvbiB1Uih0KXtyZXR1cm57c3RyZWFtOkZ3KHQpfX0sY2x1c3RlcjpmdW5jdGlvbiBoUigpe3ZhciB0PUVTLGU9MSxuPTEsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvLGE9MDtyLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZS5jaGlsZHJlbjtuPyhlLng9KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVkdWNlKFRTLDApL3QubGVuZ3RofSkobiksZS55PShmdW5jdGlvbiByKHQpe3JldHVybiAxK3QucmVkdWNlKENTLDApfSkobikpOihlLng9bz9hKz10KGUsbyk6MCxlLnk9MCxvPWUpfSkpO3ZhciBzPShmdW5jdGlvbiBsKHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVswXTtyZXR1cm4gdH0pKHIpLGM9KGZ1bmN0aW9uIHUodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lW2UubGVuZ3RoLTFdO3JldHVybiB0fSkociksaD1zLngtdChzLGMpLzIsZD1jLngrdChjLHMpLzI7cmV0dXJuIHIuZWFjaEFmdGVyKGk/ZnVuY3Rpb24odCl7dC54PSh0Lngtci54KSplLHQueT0oci55LXQueSkqbn06ZnVuY3Rpb24odCl7dC54PSh0LngtaCkvKGQtaCkqZSx0Lnk9KDEtKHIueT90Lnkvci55OjEpKSpufSl9cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LGhpZXJhcmNoeTprUyxwYWNrOmZ1bmN0aW9uIGRSKCl7dmFyIHQ9bnVsbCxlPTEsbj0xLGk9bE07ZnVuY3Rpb24gcihyKXtyZXR1cm4gci54PWUvMixyLnk9bi8yLHQ/ci5lYWNoQmVmb3JlKGhNKHQpKS5lYWNoQWZ0ZXIoZE0oaSwuNSkpLmVhY2hCZWZvcmUocE0oMSkpOnIuZWFjaEJlZm9yZShoTSh1TSkpLmVhY2hBZnRlcihkTShsTSwxKSkuZWFjaEFmdGVyKGRNKGksci5yL01hdGgubWluKGUsbikpKS5lYWNoQmVmb3JlKHBNKE1hdGgubWluKGUsbikvKDIqci5yKSkpLHJ9cmV0dXJuIHIucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFNKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHIpOltlLG5dfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjTSgrdCkscik6aX0scn0scGFja1NpYmxpbmdzOmZ1bmN0aW9uIHBSKHQpe3JldHVybiBvTSh0KSx0fSxwYWNrRW5jbG9zZTpZUyxwYXJ0aXRpb246ZnVuY3Rpb24gZlIoKXt2YXIgdD0xLGU9MSxuPTAsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvPXIuaGVpZ2h0KzE7cmV0dXJuIHIueDA9ci55MD1uLHIueDE9dCxyLnkxPWUvbyxyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZnVuY3Rpb24oaSl7aS5jaGlsZHJlbiYmbU0oaSxpLngwLHQqKGkuZGVwdGgrMSkvZSxpLngxLHQqKGkuZGVwdGgrMikvZSk7dmFyIHI9aS54MCxvPWkueTAsYT1pLngxLW4scz1pLnkxLW47YTxyJiYocj1hPShyK2EpLzIpLHM8byYmKG89cz0obytzKS8yKSxpLngwPXIsaS55MD1vLGkueDE9YSxpLnkxPXN9fSkoZSxvKSksaSYmci5lYWNoQmVmb3JlKGZNKSxyfXJldHVybiByLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEhdCxyKTppfSxyLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K25bMF0sZT0rblsxXSxyKTpbdCxlXX0sci5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHIpOm59LHJ9LHN0cmF0aWZ5OmZ1bmN0aW9uIG1SKCl7dmFyIHQ9eU0sZT12TTtmdW5jdGlvbiBuKG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9bi5sZW5ndGgsaD1uZXcgQXJyYXkodSksZD17fTtmb3Iocj0wO3I8dTsrK3Ipcz1oW3JdPW5ldyBOUyhpPW5bcl0pLG51bGwhPShsPXQoaSxyLG4pKSYmKGwrPSIiKSYmKGRbYz0iJCIrKHMuaWQ9bCldPWMgaW4gZD9fTTpzKTtmb3Iocj0wO3I8dTsrK3IpaWYocz1oW3JdLG51bGwhPShsPWUobltyXSxyLG4pKSYmKGwrPSIiKSl7aWYoIShhPWRbIiQiK2xdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbCk7aWYoYT09PV9NKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2wpO2EuY2hpbGRyZW4/YS5jaGlsZHJlbi5wdXNoKHMpOmEuY2hpbGRyZW49W3NdLHMucGFyZW50PWF9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPXN9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9Z00sby5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS11fSkpLmVhY2hCZWZvcmUoSVMpLG8ucGFyZW50PW51bGwsdT4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb31yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1zTShlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXNNKHQpLG4pOmV9LG59LHRyZWU6ZnVuY3Rpb24gZ1IoKXt2YXIgdD1iTSxlPTEsbj0xLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBsPShmdW5jdGlvbiBjKHQpe2Zvcih2YXIgZSxuLGkscixvLGE9bmV3IEVNKHQsMCkscz1bYV07ZT1zLnBvcCgpOylpZihpPWUuXy5jaGlsZHJlbilmb3IoZS5jaGlsZHJlbj1uZXcgQXJyYXkobz1pLmxlbmd0aCkscj1vLTE7cj49MDstLXIpcy5wdXNoKG49ZS5jaGlsZHJlbltyXT1uZXcgRU0oaVtyXSxyKSksbi5wYXJlbnQ9ZTtyZXR1cm4oYS5wYXJlbnQ9bmV3IEVNKG51bGwsMCkpLmNoaWxkcmVuPVthXSxhfSkocik7aWYobC5lYWNoQWZ0ZXIobyksbC5wYXJlbnQubT0tbC56LGwuZWFjaEJlZm9yZShhKSxpKXIuZWFjaEJlZm9yZShzKTtlbHNle3ZhciB1PXIsaD1yLGQ9cjtyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueDx1LngmJih1PXQpLHQueD5oLngmJihoPXQpLHQuZGVwdGg+ZC5kZXB0aCYmKGQ9dCl9KSk7dmFyIHA9dT09PWg/MTp0KHUsaCkvMixmPXAtdS54LG09ZS8oaC54K3ArZiksZz1uLyhkLmRlcHRofHwxKTtyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueD0odC54K2YpKm0sdC55PXQuZGVwdGgqZ30pKX1yZXR1cm4gcn1mdW5jdGlvbiBvKGUpe3ZhciBuPWUuY2hpbGRyZW4saT1lLnBhcmVudC5jaGlsZHJlbixyPWUuaT9pW2UuaS0xXTpudWxsO2lmKG4peyEoZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUsbj0wLGk9MCxyPXQuY2hpbGRyZW4sbz1yLmxlbmd0aDstLW8+PTA7KShlPXJbb10pLnorPW4sZS5tKz1uLG4rPWUucysoaSs9ZS5jKX0pKGUpO3ZhciBhPShuWzBdLnorbltuLmxlbmd0aC0xXS56KS8yO3I/KGUuej1yLnordChlLl8sci5fKSxlLm09ZS56LWEpOmUuej1hfWVsc2UgciYmKGUuej1yLnordChlLl8sci5fKSk7ZS5wYXJlbnQuQT0oZnVuY3Rpb24gcyhlLG4saSl7aWYobil7Zm9yKHZhciByLG89ZSxhPWUscz1uLGw9by5wYXJlbnQuY2hpbGRyZW5bMF0sYz1vLm0sdT1hLm0saD1zLm0sZD1sLm07cz13TShzKSxvPXhNKG8pLHMmJm87KWw9eE0obCksKGE9d00oYSkpLmE9ZSwocj1zLnoraC1vLnotYyt0KHMuXyxvLl8pKT4wJiYoU00oTU0ocyxlLGkpLGUsciksYys9cix1Kz1yKSxoKz1zLm0sYys9by5tLGQrPWwubSx1Kz1hLm07cyYmIXdNKGEpJiYoYS50PXMsYS5tKz1oLXUpLG8mJiF4TShsKSYmKGwudD1vLGwubSs9Yy1kLGk9ZSl9cmV0dXJuIGl9KShlLHIsZS5wYXJlbnQuQXx8aVswXSl9ZnVuY3Rpb24gYSh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gcyh0KXt0LngqPWUsdC55PXQuZGVwdGgqbn1yZXR1cm4gci5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K3RbMF0sbj0rdFsxXSxyKTppP251bGw6W2Usbl19LHIubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rdFswXSxuPSt0WzFdLHIpOmk/W2Usbl06bnVsbH0scn0sdHJlZW1hcDpmdW5jdGlvbiBfUigpe3ZhciB0PWtNLGU9ITEsbj0xLGk9MSxyPVswXSxvPWxNLGE9bE0scz1sTSxsPWxNLGM9bE07ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC54MD10LnkwPTAsdC54MT1uLHQueTE9aSx0LmVhY2hCZWZvcmUoaCkscj1bMF0sZSYmdC5lYWNoQmVmb3JlKGZNKSx0fWZ1bmN0aW9uIGgoZSl7dmFyIG49cltlLmRlcHRoXSxpPWUueDArbix1PWUueTArbixoPWUueDEtbixkPWUueTEtbjtoPGkmJihpPWg9KGkraCkvMiksZDx1JiYodT1kPSh1K2QpLzIpLGUueDA9aSxlLnkwPXUsZS54MT1oLGUueTE9ZCxlLmNoaWxkcmVuJiYobj1yW2UuZGVwdGgrMV09byhlKS8yLGkrPWMoZSktbix1Kz1hKGUpLW4sKGgtPXMoZSktbik8aSYmKGk9aD0oaStoKS8yKSwoZC09bChlKS1uKTx1JiYodT1kPSh1K2QpLzIpLHQoZSxpLHUsaCxkKSl9cmV0dXJuIHUucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ISF0LHUpOmV9LHUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdFswXSxpPSt0WzFdLHUpOltuLGldfSx1LnRpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9c00oZSksdSk6dH0sdS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ0lubmVyKHQpLnBhZGRpbmdPdXRlcih0KTp1LnBhZGRpbmdJbm5lcigpfSx1LnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpvfSx1LnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdUb3AodCkucGFkZGluZ1JpZ2h0KHQpLnBhZGRpbmdCb3R0b20odCkucGFkZGluZ0xlZnQodCk6dS5wYWRkaW5nVG9wKCl9LHUucGFkZGluZ1RvcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTphfSx1LnBhZGRpbmdSaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpzfSx1LnBhZGRpbmdCb3R0b209ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjTSgrdCksdSk6bH0sdS5wYWRkaW5nTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNNKCt0KSx1KTpjfSx1fSx0cmVlbWFwQmluYXJ5OmZ1bmN0aW9uIHlSKHQsZSxuLGkscil7dmFyIG8sYSxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEpO2ZvcihjWzBdPWE9bz0wO288bDsrK28pY1tvKzFdPWErPXNbb10udmFsdWU7IShmdW5jdGlvbiB0KGUsbixpLHIsbyxhLGwpe2lmKGU+PW4tMSl7dmFyIHU9c1tlXTtyZXR1cm4gdS54MD1yLHUueTA9byx1LngxPWEsdm9pZCh1LnkxPWwpfXZhciBoPWNbZV0sZD1pLzIraCxwPWUrMSxmPW4tMTtmb3IoO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6bU0sdHJlZW1hcFNsaWNlOlRNLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gdlIodCxlLG4saSxyKXsoMSZ0LmRlcHRoP1RNOm1NKSh0LGUsbixpLHIpfSx0cmVlbWFwU3F1YXJpZnk6a00sdHJlZW1hcFJlc3F1YXJpZnk6UE0saW50ZXJwb2xhdGU6Y3AsaW50ZXJwb2xhdGVBcnJheTpmdW5jdGlvbiBiUih0LGUpe3JldHVybihlcChlKT90cDpucCkodCxlKX0saW50ZXJwb2xhdGVCYXNpczpqZCxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOkdkLGludGVycG9sYXRlRGF0ZTppcCxpbnRlcnBvbGF0ZURpc2NyZXRlOmZ1bmN0aW9uIHhSKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fSxpbnRlcnBvbGF0ZUh1ZTpmdW5jdGlvbiB3Uih0LGUpe3ZhciBuPVlkKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fSxpbnRlcnBvbGF0ZU51bWJlcjpycCxpbnRlcnBvbGF0ZU51bWJlckFycmF5OnRwLGludGVycG9sYXRlT2JqZWN0Om9wLGludGVycG9sYXRlUm91bmQ6dXAsaW50ZXJwb2xhdGVTdHJpbmc6bHAsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M6dnAsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6eHAsaW50ZXJwb2xhdGVab29tOkVwLGludGVycG9sYXRlUmdiOktkLGludGVycG9sYXRlUmdiQmFzaXM6SmQsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpRZCxpbnRlcnBvbGF0ZUhzbDpDcCxpbnRlcnBvbGF0ZUhzbExvbmc6QXAsaW50ZXJwb2xhdGVMYWI6a3AsaW50ZXJwb2xhdGVIY2w6THAsaW50ZXJwb2xhdGVIY2xMb25nOklwLGludGVycG9sYXRlQ3ViZWhlbGl4OlJwLGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzpPcCxwaWVjZXdpc2U6ZnVuY3Rpb24gU1IodCxlKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoLTEscj1lWzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT10KHIscj1lWysrbl0pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKGktMSxNYXRoLmZsb29yKHQqPWkpKSk7cmV0dXJuIG9bZV0odC1lKX19LHF1YW50aXplOmZ1bmN0aW9uIE1SKHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6T2cscG9seWdvbkFyZWE6ZnVuY3Rpb24gRVIodCl7Zm9yKHZhciBlLG49LTEsaT10Lmxlbmd0aCxyPXRbaS0xXSxvPTA7KytuPGk7KW8rPShlPXIpWzFdKihyPXRbbl0pWzBdLWVbMF0qclsxXTtyZXR1cm4gby8yfSxwb2x5Z29uQ2VudHJvaWQ6ZnVuY3Rpb24gVFIodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89MCxhPTAscz10W3ItMV0sbD0wOysraTxyOylsKz1uPShlPXMpWzBdKihzPXRbaV0pWzFdLXNbMF0qZVsxXSxvKz0oZVswXStzWzBdKSpuLGErPShlWzFdK3NbMV0pKm47cmV0dXJuW28vKGwqPTMpLGEvbF19LHBvbHlnb25IdWxsOmZ1bmN0aW9uIENSKHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQoSU0pLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPU5NKGkpLGE9Tk0ocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBBUih0LGUpe2Zvcih2YXIgbixpLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1lWzBdLHM9ZVsxXSxsPW9bMF0sYz1vWzFdLHU9ITEsaD0wO2g8cjsrK2gpbj0obz10W2hdKVswXSwoaT1vWzFdKT5zIT1jPnMmJmE8KGwtbikqKHMtaSkvKGMtaSkrbiYmKHU9IXUpLGw9bixjPWk7cmV0dXJuIHV9LHBvbHlnb25MZW5ndGg6ZnVuY3Rpb24ga1IodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9b1swXSxzPW9bMV0sbD0wOysraTxyOyllPWEsbj1zLGUtPWE9KG89dFtpXSlbMF0sbi09cz1vWzFdLGwrPU1hdGguc3FydChlKmUrbipuKTtyZXR1cm4gbH0scXVhZHRyZWU6dHkscmFuZG9tVW5pZm9ybTpPTSxyYW5kb21Ob3JtYWw6ek0scmFuZG9tTG9nTm9ybWFsOkRNLHJhbmRvbUJhdGVzOkhNLHJhbmRvbUlyd2luSGFsbDpCTSxyYW5kb21FeHBvbmVudGlhbDpGTSxzY2FsZUJhbmQ6WE0sc2NhbGVQb2ludDpLTSxzY2FsZUlkZW50aXR5OmZ1bmN0aW9uIHQoZSl7dmFyIG47ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaXNOYU4odD0rdCk/bjp0fXJldHVybiBpLmludmVydD1pLGkuZG9tYWluPWkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9R00uY2FsbCh0LFpNKSxpKTplLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUpLnVua25vd24obil9LGU9YXJndW1lbnRzLmxlbmd0aD9HTS5jYWxsKGUsWk0pOlswLDFdLGxFKGkpfSxzY2FsZUxpbmVhcjpjRSxzY2FsZUxvZzp5RSxzY2FsZVN5bWxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9eEUob0UoKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiByRShlLHQoKSkuY29uc3RhbnQoZS5jb25zdGFudCgpKX0sVk0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZU9yZGluYWw6WU0sc2NhbGVJbXBsaWNpdDpxTSxzY2FsZVBvdzpURSxzY2FsZVNxcnQ6ZnVuY3Rpb24gUFIoKXtyZXR1cm4gVEUuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVRdWFudGlsZTpDRSxzY2FsZVF1YW50aXplOkFFLHNjYWxlVGhyZXNob2xkOmZ1bmN0aW9uIHQoKXt2YXIgZSxuPVsuNV0saT1bMCwxXSxyPTE7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw9dD9pW0RsKG4sdCwwLHIpXTplfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1XTS5jYWxsKHQpLHI9TWF0aC5taW4obi5sZW5ndGgsaS5sZW5ndGgtMSksbyk6bi5zbGljZSgpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPVdNLmNhbGwodCkscj1NYXRoLm1pbihuLmxlbmd0aCxpLmxlbmd0aC0xKSxvKTppLnNsaWNlKCl9LG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWkuaW5kZXhPZih0KTtyZXR1cm5bbltlLTFdLG5bZV1dfSxvLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihuKS5yYW5nZShpKS51bmtub3duKGUpfSxWTS5hcHBseShvLGFyZ3VtZW50cyl9LHNjYWxlVGltZTp6QSxzY2FsZVV0YzpmdW5jdGlvbiBMUigpe3JldHVybiBWTS5hcHBseShPQShZVCxHVCxrVCxUVCxTVCxiVCxWRSxORSxuQykuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbDpmdW5jdGlvbiB0KCl7dmFyIGU9bEUoREEoKShRTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbExvZzpmdW5jdGlvbiB0KCl7dmFyIGU9X0UoREEoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBCQShlLHQoKSkuYmFzZShlLmJhc2UoKSl9LFVNLmFwcGx5KGUsYXJndW1lbnRzKX0sc2NhbGVTZXF1ZW50aWFsUG93OkhBLHNjYWxlU2VxdWVudGlhbFNxcnQ6ZnVuY3Rpb24gSVIoKXtyZXR1cm4gSEEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVTZXF1ZW50aWFsU3ltbG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT14RShEQSgpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJBKGUsdCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbFF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVFNO2Z1bmN0aW9uIGkodCl7aWYoIWlzTmFOKHQ9K3QpKXJldHVybiBuKChEbChlLHQpLTEpLyhlLmxlbmd0aC0xKSl9cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4scj0wLG89dC5sZW5ndGg7cjxvOysrciludWxsPT0obj10W3JdKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KFJsKSxpfSxpLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KG4pLmRvbWFpbihlKX0sVU0uYXBwbHkoaSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZzpmdW5jdGlvbiB0KCl7dmFyIGU9bEUoRkEoKShRTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpfSxVTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlRGl2ZXJnaW5nTG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT1fRShGQSgpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJBKGUsdCgpKS5iYXNlKGUuYmFzZSgpKX0sVU0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZ1BvdzpWQSxzY2FsZURpdmVyZ2luZ1NxcnQ6ZnVuY3Rpb24gTlIoKXtyZXR1cm4gVkEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVEaXZlcmdpbmdTeW1sb2c6ZnVuY3Rpb24gdCgpe3ZhciBlPXhFKEZBKCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQkEoZSx0KCkpLmNvbnN0YW50KGUuY29uc3RhbnQoKSl9LFVNLmFwcGx5KGUsYXJndW1lbnRzKX0sdGlja0Zvcm1hdDpzRSxzY2hlbWVDYXRlZ29yeTEwOmpBLHNjaGVtZUFjY2VudDpHQSxzY2hlbWVEYXJrMjpXQSxzY2hlbWVQYWlyZWQ6cUEsc2NoZW1lUGFzdGVsMTpZQSxzY2hlbWVQYXN0ZWwyOlhBLHNjaGVtZVNldDE6JEEsc2NoZW1lU2V0MjpLQSxzY2hlbWVTZXQzOlpBLHNjaGVtZVRhYmxlYXUxMDpKQSxpbnRlcnBvbGF0ZUJyQkc6ZWssc2NoZW1lQnJCRzp0ayxpbnRlcnBvbGF0ZVBSR246aWssc2NoZW1lUFJHbjpuayxpbnRlcnBvbGF0ZVBpWUc6b2ssc2NoZW1lUGlZRzpyayxpbnRlcnBvbGF0ZVB1T3I6c2ssc2NoZW1lUHVPcjphayxpbnRlcnBvbGF0ZVJkQnU6Y2ssc2NoZW1lUmRCdTpsayxpbnRlcnBvbGF0ZVJkR3k6aGssc2NoZW1lUmRHeTp1ayxpbnRlcnBvbGF0ZVJkWWxCdTpwayxzY2hlbWVSZFlsQnU6ZGssaW50ZXJwb2xhdGVSZFlsR246bWssc2NoZW1lUmRZbEduOmZrLGludGVycG9sYXRlU3BlY3RyYWw6X2ssc2NoZW1lU3BlY3RyYWw6Z2ssaW50ZXJwb2xhdGVCdUduOnZrLHNjaGVtZUJ1R246eWssaW50ZXJwb2xhdGVCdVB1OnhrLHNjaGVtZUJ1UHU6YmssaW50ZXJwb2xhdGVHbkJ1OlNrLHNjaGVtZUduQnU6d2ssaW50ZXJwb2xhdGVPclJkOkVrLHNjaGVtZU9yUmQ6TWssaW50ZXJwb2xhdGVQdUJ1R246Q2ssc2NoZW1lUHVCdUduOlRrLGludGVycG9sYXRlUHVCdTprayxzY2hlbWVQdUJ1OkFrLGludGVycG9sYXRlUHVSZDpMayxzY2hlbWVQdVJkOlBrLGludGVycG9sYXRlUmRQdTpOayxzY2hlbWVSZFB1OklrLGludGVycG9sYXRlWWxHbkJ1Ok9rLHNjaGVtZVlsR25CdTpSayxpbnRlcnBvbGF0ZVlsR246RGssc2NoZW1lWWxHbjp6ayxpbnRlcnBvbGF0ZVlsT3JCcjpIayxzY2hlbWVZbE9yQnI6QmssaW50ZXJwb2xhdGVZbE9yUmQ6Vmssc2NoZW1lWWxPclJkOkZrLGludGVycG9sYXRlQmx1ZXM6amssc2NoZW1lQmx1ZXM6VWssaW50ZXJwb2xhdGVHcmVlbnM6V2ssc2NoZW1lR3JlZW5zOkdrLGludGVycG9sYXRlR3JleXM6WWssc2NoZW1lR3JleXM6cWssaW50ZXJwb2xhdGVQdXJwbGVzOiRrLHNjaGVtZVB1cnBsZXM6WGssaW50ZXJwb2xhdGVSZWRzOlprLHNjaGVtZVJlZHM6S2ssaW50ZXJwb2xhdGVPcmFuZ2VzOlFrLHNjaGVtZU9yYW5nZXM6SmssaW50ZXJwb2xhdGVDaXZpZGlzOmZ1bmN0aW9uIFJSKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoLTQuNTQtdCooMzUuMzQtdCooMjM4MS43My10Kig2NDAyLjctdCooNzAyNC43Mi0yNzEwLjU3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgzMi40OSt0KigxNzAuNzMrdCooNTIuODItdCooMTMxLjQ2LXQqKDE3Ni41OC02Ny4zNyp0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoODEuMjQrdCooNDQyLjM2LXQqKDI0ODIuNDMtdCooNjE2Ny4yNC10Kig2NjE0Ljk0LTI0NzUuNjcqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6dFAsaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIE9SKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gaVAuaD0zNjAqdC0xMDAsaVAucz0xLjUtMS41KmUsaVAubD0uOC0uOSplLGlQKyIifSxpbnRlcnBvbGF0ZVdhcm06ZVAsaW50ZXJwb2xhdGVDb29sOm5QLGludGVycG9sYXRlU2luZWJvdzpmdW5jdGlvbiB6Uih0KXt2YXIgZTtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxyUC5yPTI1NSooZT1NYXRoLnNpbih0KSkqZSxyUC5nPTI1NSooZT1NYXRoLnNpbih0K29QKSkqZSxyUC5iPTI1NSooZT1NYXRoLnNpbih0K2FQKSkqZSxyUCsiIn0saW50ZXJwb2xhdGVUdXJibzpmdW5jdGlvbiBEUih0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDM0LjYxK3QqKDExNzIuMzMtdCooMTA3OTMuNTYtdCooMzMzMDAuMTItdCooMzgzOTQuNDktMTQ4MjUuMDUqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDIzLjMxK3QqKDU1Ny4zMyt0KigxMjI1LjMzLXQqKDM1NzQuOTYtdCooMTA3My43Nys3MDcuNTYqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI3LjIrdCooMzIxMS4xLXQqKDE1MzI3Ljk3LXQqKDI3ODE0LXQqKDIyNTY5LjE4LTY4MzguNjYqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZVZpcmlkaXM6bFAsaW50ZXJwb2xhdGVNYWdtYTpjUCxpbnRlcnBvbGF0ZUluZmVybm86dVAsaW50ZXJwb2xhdGVQbGFzbWE6aFAsY3JlYXRlOmZ1bmN0aW9uIEJSKHQpe3JldHVybiBEdShJYyh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfSxjcmVhdG9yOkljLGxvY2FsOmdoLG1hdGNoZXI6RGMsbW91c2U6YmgsbmFtZXNwYWNlOmtjLG5hbWVzcGFjZXM6QWMsY2xpZW50UG9pbnQ6dmgsc2VsZWN0OkR1LHNlbGVjdEFsbDp4aCxzZWxlY3Rpb246enUsc2VsZWN0b3I6UmMsc2VsZWN0b3JBbGw6emMsc3R5bGU6UWMsdG91Y2g6d2gsdG91Y2hlczpmdW5jdGlvbiBIUih0LGUpe251bGw9PWUmJihlPXloKCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPXZoKHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzokYyxnZXQgZXZlbnQoKXtyZXR1cm4gTXV9LGN1c3RvbUV2ZW50OlB1LGFyYzpmdW5jdGlvbiBGUigpe3ZhciB0PVRQLGU9Q1Asbj1kUCgwKSxpPW51bGwscj1BUCxvPWtQLGE9UFAscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktd1AscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS13UCxmPXBQKHAtZCksbT1wPmQ7aWYoc3x8KHM9bD1PZygpKSxoPHUmJihjPWgsaD11LHU9YyksaD5iUClpZihmPlNQLWJQKXMubW92ZVRvKGgqbVAoZCksaCp5UChkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1PmJQJiYocy5tb3ZlVG8odSptUChwKSx1KnlQKHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPmJQJiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dlAodSp1K2gqaCkpLFQ9X1AocFAoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPmJQKXt2YXIgaz1FUChFL3UqeVAoTSkpLFA9RVAoRS9oKnlQKE0pKTsody09MiprKT5iUD8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKlApPmJQPyh5Kz1QKj1tPzE6LTEsdi09UCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIEw9aCptUCh5KSxJPWgqeVAoeSksTj11Km1QKHgpLFI9dSp5UCh4KTtpZihUPmJQKXt2YXIgTyx6PWgqbVAodiksRD1oKnlQKHYpLEI9dSptUChiKSxIPXUqeVAoYik7aWYoZjx4UCYmKE89TFAoTCxJLEIsSCx6LEQsTixSKSkpe3ZhciBGPUwtT1swXSxWPUktT1sxXSxVPXotT1swXSxqPUQtT1sxXSxHPTEveVAoTVAoKEYqVStWKmopLyh2UChGKkYrVipWKSp2UChVKlUraipqKSkpLzIpLFc9dlAoT1swXSpPWzBdK09bMV0qT1sxXSk7Qz1fUChULCh1LVcpLyhHLTEpKSxBPV9QKFQsKGgtVykvKEcrMSkpfX1TPmJQP0E+YlA/KGc9SVAoQixILEwsSSxoLEEsbSksXz1JUCh6LEQsTixSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxmUChnLnkwMSxnLngwMSksZlAoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsZlAoZy55MDEsZy54MDEpLGZQKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsZlAoZy5jeStnLnkxMSxnLmN4K2cueDExKSxmUChfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxmUChfLnkxMSxfLngxMSksZlAoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhMLEkpLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKEwsSSksdT5iUCYmdz5iUD9DPmJQPyhnPUlQKE4sUix6LEQsdSwtQyxtKSxfPUlQKEwsSSxCLEgsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxmUChnLnkwMSxnLngwMSksZlAoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsZlAoZy55MDEsZy54MDEpLGZQKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsZlAoZy5jeStnLnkxMSxnLmN4K2cueDExKSxmUChfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLGZQKF8ueTExLF8ueDExKSxmUChfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKE4sUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIteFAvMjtyZXR1cm5bbVAoaSkqbix5UChpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRQKCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZFAoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZFAoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmRQKCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkUCgrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRQKCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZFAoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOkJQLGxpbmU6RFAscGllOmZ1bmN0aW9uIFZSKCl7dmFyIHQ9RlAsZT1IUCxuPW51bGwsaT1kUCgwKSxyPWRQKFNQKSxvPWRQKDApO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHUsaCxkPWEubGVuZ3RoLHA9MCxmPW5ldyBBcnJheShkKSxtPW5ldyBBcnJheShkKSxnPStpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxfPU1hdGgubWluKFNQLE1hdGgubWF4KC1TUCxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSkseT1NYXRoLm1pbihNYXRoLmFicyhfKS9kLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx2PXkqKF88MD8tMToxKTtmb3Iocz0wO3M8ZDsrK3MpKGg9bVtmW3NdPXNdPSt0KGFbc10scyxhKSk+MCYmKHArPWgpO2ZvcihudWxsIT1lP2Yuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShtW3RdLG1bbl0pfSkpOm51bGwhPW4mJmYuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihhW3RdLGFbZV0pfSkpLHM9MCxjPXA/KF8tZCp2KS9wOjA7czxkOysrcyxnPXUpbVtsPWZbc11dPXtkYXRhOmFbbF0saW5kZXg6cyx2YWx1ZTpoPW1bbF0sc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnU9ZysoaD4wP2gqYzowKSt2LHBhZEFuZ2xlOnl9O3JldHVybiBtfXJldHVybiBhLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZFAoK2UpLGEpOnR9LGEuc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZFAoK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkUCgrdCksYSk6cn0sYS5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRQKCt0KSxhKTpvfSxhfSxhcmVhUmFkaWFsOnFQLHJhZGlhbEFyZWE6cVAsbGluZVJhZGlhbDpXUCxyYWRpYWxMaW5lOldQLHBvaW50UmFkaWFsOllQLGxpbmtIb3Jpem9udGFsOmZ1bmN0aW9uIFVSKCl7cmV0dXJuIFpQKEpQKX0sbGlua1ZlcnRpY2FsOmZ1bmN0aW9uIGpSKCl7cmV0dXJuIFpQKFFQKX0sbGlua1JhZGlhbDpmdW5jdGlvbiBHUigpe3ZhciB0PVpQKHRMKTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSxzeW1ib2w6ZnVuY3Rpb24gV1IoKXt2YXIgdD1kUChlTCksZT1kUCg2NCksbj1udWxsO2Z1bmN0aW9uIGkoKXt2YXIgaTtpZihufHwobj1pPU9nKCkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLmRyYXcobiwrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGkpcmV0dXJuIG49bnVsbCxpKyIifHxudWxsfXJldHVybiBpLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpkUChlKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkUCgrdCksaSk6ZX0saS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDp0LGkpOm59LGl9LHN5bWJvbHM6eUwsc3ltYm9sQ2lyY2xlOmVMLHN5bWJvbENyb3NzOm5MLHN5bWJvbERpYW1vbmQ6b0wsc3ltYm9sU3F1YXJlOnVMLHN5bWJvbFN0YXI6Y0wsc3ltYm9sVHJpYW5nbGU6ZEwsc3ltYm9sV3llOl9MLGN1cnZlQmFzaXNDbG9zZWQ6ZnVuY3Rpb24gcVIodCl7cmV0dXJuIG5ldyBTTCh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24gWVIodCl7cmV0dXJuIG5ldyBNTCh0KX0sY3VydmVCYXNpczp3TCxjdXJ2ZUJ1bmRsZTpUTCxjdXJ2ZUNhcmRpbmFsQ2xvc2VkOkxMLGN1cnZlQ2FyZGluYWxPcGVuOk5MLGN1cnZlQ2FyZGluYWw6a0wsY3VydmVDYXRtdWxsUm9tQ2xvc2VkOkJMLGN1cnZlQ2F0bXVsbFJvbU9wZW46RkwsY3VydmVDYXRtdWxsUm9tOnpMLGN1cnZlTGluZWFyQ2xvc2VkOmZ1bmN0aW9uIFhSKHQpe3JldHVybiBuZXcgVkwodCl9LGN1cnZlTGluZWFyOlJQLGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uICRSKHQpe3JldHVybiBuZXcgcUwodCl9LGN1cnZlTW9ub3RvbmVZOmZ1bmN0aW9uIEtSKHQpe3JldHVybiBuZXcgWUwodCl9LGN1cnZlTmF0dXJhbDpmdW5jdGlvbiBaUih0KXtyZXR1cm4gbmV3ICRMKHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gSlIodCl7cmV0dXJuIG5ldyBaTCh0LC41KX0sY3VydmVTdGVwQWZ0ZXI6ZnVuY3Rpb24gUVIodCl7cmV0dXJuIG5ldyBaTCh0LDEpfSxjdXJ2ZVN0ZXBCZWZvcmU6ZnVuY3Rpb24gdE8odCl7cmV0dXJuIG5ldyBaTCh0LDApfSxzdGFjazpmdW5jdGlvbiBlTygpe3ZhciB0PWRQKFtdKSxlPVFMLG49SkwsaT10STtmdW5jdGlvbiByKHIpe3ZhciBvLGEscz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXkoYyk7Zm9yKG89MDtvPGM7KytvKXtmb3IodmFyIGgsZD1zW29dLHA9dVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpcFtmXT1oPVswLCtpKHJbZl0sZCxmLHIpXSxoLmRhdGE9cltmXTtwLmtleT1kfWZvcihvPTAsYT1lKHUpO288YzsrK28pdVthW29dXS5pbmRleD1vO3JldHVybiBuKHUsYSksdX1yZXR1cm4gci5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZFAoWFAuY2FsbChlKSkscik6dH0sci52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRQKCt0KSxyKTppfSxyLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/UUw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkUChYUC5jYWxsKHQpKSxyKTplfSxyLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P0pMOnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gbk8odCxlKXtpZigoaT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT10WzBdLmxlbmd0aDtvPGE7KytvKXtmb3Iocj1uPTA7bjxpOysrbilyKz10W25dW29dWzFdfHwwO2lmKHIpZm9yKG49MDtuPGk7KytuKXRbbl1bb11bMV0vPXJ9SkwodCxlKX19LHN0YWNrT2Zmc2V0RGl2ZXJnaW5nOmZ1bmN0aW9uIGlPKHQsZSl7aWYoKHM9dC5sZW5ndGgpPjApZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT4wPyhpWzBdPW8saVsxXT1vKz1yKTpyPDA/KGlbMV09YSxpWzBdPWErPXIpOihpWzBdPTAsaVsxXT1yKX0sc3RhY2tPZmZzZXROb25lOkpMLHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZTpmdW5jdGlvbiByTyh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfUpMKHQsZSl9fSxzdGFja09mZnNldFdpZ2dsZTpmdW5jdGlvbiBvTyh0LGUpe2lmKChyPXQubGVuZ3RoKT4wJiYoaT0obj10W2VbMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9MTthPGk7KythKXtmb3IodmFyIHM9MCxsPTAsYz0wO3M8cjsrK3Mpe2Zvcih2YXIgdT10W2Vbc11dLGg9dVthXVsxXXx8MCxkPShoLSh1W2EtMV1bMV18fDApKS8yLHA9MDtwPHM7KytwKXt2YXIgZj10W2VbcF1dO2QrPShmW2FdWzFdfHwwKS0oZlthLTFdWzFdfHwwKX1sKz1oLGMrPWQqaH1uW2EtMV1bMV0rPW5bYS0xXVswXT1vLGwmJihvLT1jL2wpfW5bYS0xXVsxXSs9blthLTFdWzBdPW8sSkwodCxlKX19LHN0YWNrT3JkZXJBcHBlYXJhbmNlOmVJLHN0YWNrT3JkZXJBc2NlbmRpbmc6aUksc3RhY2tPcmRlckRlc2NlbmRpbmc6ZnVuY3Rpb24gYU8odCl7cmV0dXJuIGlJKHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBzTyh0KXt2YXIgZSxuLGk9dC5sZW5ndGgscj10Lm1hcChySSksbz1lSSh0KSxhPTAscz0wLGw9W10sYz1bXTtmb3IoZT0wO2U8aTsrK2Upbj1vW2VdLGE8cz8oYSs9cltuXSxsLnB1c2gobikpOihzKz1yW25dLGMucHVzaChuKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChsKX0sc3RhY2tPcmRlck5vbmU6UUwsc3RhY2tPcmRlclJldmVyc2U6ZnVuY3Rpb24gbE8odCl7cmV0dXJuIFFMKHQpLnJldmVyc2UoKX0sdGltZUludGVydmFsOkxFLHRpbWVNaWxsaXNlY29uZDpORSx0aW1lTWlsbGlzZWNvbmRzOlJFLHV0Y01pbGxpc2Vjb25kOk5FLHV0Y01pbGxpc2Vjb25kczpSRSx0aW1lU2Vjb25kOlZFLHRpbWVTZWNvbmRzOlVFLHV0Y1NlY29uZDpWRSx1dGNTZWNvbmRzOlVFLHRpbWVNaW51dGU6R0UsdGltZU1pbnV0ZXM6V0UsdGltZUhvdXI6WUUsdGltZUhvdXJzOlhFLHRpbWVEYXk6S0UsdGltZURheXM6WkUsdGltZVdlZWs6UUUsdGltZVdlZWtzOmFULHRpbWVTdW5kYXk6UUUsdGltZVN1bmRheXM6YVQsdGltZU1vbmRheTp0VCx0aW1lTW9uZGF5czpzVCx0aW1lVHVlc2RheTplVCx0aW1lVHVlc2RheXM6bFQsdGltZVdlZG5lc2RheTpuVCx0aW1lV2VkbmVzZGF5czpjVCx0aW1lVGh1cnNkYXk6aVQsdGltZVRodXJzZGF5czp1VCx0aW1lRnJpZGF5OnJULHRpbWVGcmlkYXlzOmhULHRpbWVTYXR1cmRheTpvVCx0aW1lU2F0dXJkYXlzOmRULHRpbWVNb250aDpmVCx0aW1lTW9udGhzOm1ULHRpbWVZZWFyOl9ULHRpbWVZZWFyczp5VCx1dGNNaW51dGU6YlQsdXRjTWludXRlczp4VCx1dGNIb3VyOlNULHV0Y0hvdXJzOk1ULHV0Y0RheTpUVCx1dGNEYXlzOkNULHV0Y1dlZWs6a1QsdXRjV2Vla3M6elQsdXRjU3VuZGF5OmtULHV0Y1N1bmRheXM6elQsdXRjTW9uZGF5OlBULHV0Y01vbmRheXM6RFQsdXRjVHVlc2RheTpMVCx1dGNUdWVzZGF5czpCVCx1dGNXZWRuZXNkYXk6SVQsdXRjV2VkbmVzZGF5czpIVCx1dGNUaHVyc2RheTpOVCx1dGNUaHVyc2RheXM6RlQsdXRjRnJpZGF5OlJULHV0Y0ZyaWRheXM6VlQsdXRjU2F0dXJkYXk6T1QsdXRjU2F0dXJkYXlzOlVULHV0Y01vbnRoOkdULHV0Y01vbnRoczpXVCx1dGNZZWFyOllULHV0Y1llYXJzOlhULHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOnhBLGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHRDfSxnZXQgdGltZVBhcnNlKCl7cmV0dXJuIGVDfSxnZXQgdXRjRm9ybWF0KCl7cmV0dXJuIG5DfSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gaUN9LHRpbWVGb3JtYXRMb2NhbGU6SlQsaXNvRm9ybWF0OlNBLGlzb1BhcnNlOkVBLG5vdzpxcCx0aW1lcjokcCx0aW1lckZsdXNoOktwLHRpbWVvdXQ6dGYsaW50ZXJ2YWw6ZnVuY3Rpb24gY08odCxlLG4pe3ZhciBpPW5ldyBYcCxyPWU7cmV0dXJuIG51bGw9PWU/KGkucmVzdGFydCh0LGUsbiksaSk6KGU9K2Usbj1udWxsPT1uP3FwKCk6K24saS5yZXN0YXJ0KChmdW5jdGlvbiBvKGEpe2ErPXIsaS5yZXN0YXJ0KG8scis9ZSxuKSx0KGEpfSksZSxuKSxpKX0sdHJhbnNpdGlvbjpEZixhY3RpdmU6ZnVuY3Rpb24gdU8odCxlKXt2YXIgbixpLHI9dC5fX3RyYW5zaXRpb247aWYocilmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLHIpaWYoKG49cltpXSkuc3RhdGU+MSYmbi5uYW1lPT09ZSlyZXR1cm4gbmV3IHpmKFtbdF1dLFdtLGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6bGYsdm9yb25vaTpmdW5jdGlvbiBoTygpe3ZhciB0PWFJLGU9c0ksbj1udWxsO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIG5ldyBVSShpLm1hcCgoZnVuY3Rpb24obixyKXt2YXIgbz1bTWF0aC5yb3VuZCh0KG4scixpKS9CSSkqQkksTWF0aC5yb3VuZChlKG4scixpKS9CSSkqQkldO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpvSSgrZSksaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6b0koK3QpLGkpOmV9LGkuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDpbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSxpKTpuJiZbW25bMF1bMF0sblswXVsxXV0sW25bMV1bMF0sblsxXVsxXV1dfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbMCwwXSxbK3RbMF0sK3RbMV1dXSxpKTpuJiZbblsxXVswXS1uWzBdWzBdLG5bMV1bMV0tblswXVsxXV19LGl9LHpvb206bk4sem9vbVRyYW5zZm9ybTpZSSx6b29tSWRlbnRpdHk6cUl9KTtjbGFzcyBkTyBleHRlbmRzIGtse2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBlcmltZW50cz1bXX1sb2FkKCl7Y29uc3QgdD1FcigpLmV4cGVyaW1lbnRzKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57Q2UuZXhwb3J0cy5pc0VxdWFsKHRoaXMuX2V4cGVyaW1lbnRzLHQpfHwodGhpcy5fZXhwZXJpbWVudHM9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0RXhwZXJpbWVudHMoKXtyZXR1cm4gdGhpcy5fZXhwZXJpbWVudHMuc2xpY2UoKX19Y29uc3QgcE89bmV3IGRPLGZPPVsiI2ZmNzA0MyIsIiMwMDc3YmIiLCIjY2MzMzExIiwiIzMzYmJlZSIsIiNlZTMzNzciLCIjMDA5OTg4IiwiI2JiYmJiYiJdO2NsYXNzIG1Pe2NvbnN0cnVjdG9yKHQ9Zk8pe3RoaXMucGFsZXR0ZT10LHRoaXMuaWRlbnRpZmllcnM9amcoKX1zZXREb21haW4odCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnM9amcoKSx0LmZvckVhY2goKCh0LGUpPT57dGhpcy5pZGVudGlmaWVycy5zZXQodCx0aGlzLnBhbGV0dGVbZSV0aGlzLnBhbGV0dGUubGVuZ3RoXSl9KSksdGhpc31nZXRDb2xvcih0KXtpZighdGhpcy5pZGVudGlmaWVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHt0fSB3YXMgbm90IGluIHRoZSBkb21haW4uYCk7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnMuZ2V0KHQpfX1mdW5jdGlvbiBnTyh0LGUpe2NvbnN0IG49bmV3IG1PO2Z1bmN0aW9uIGkoKXtuLnNldERvbWFpbihlKCkpfXJldHVybiB0LmFkZExpc3RlbmVyKGkpLGkoKSx0PT5uLmdldENvbG9yKHQpfWNvbnN0IF9PPWdPKE5sLCgoKT0+TmwuZ2V0UnVucygpKSk7Z08ocE8sKCgpPT5wTy5nZXRFeHBlcmltZW50cygpLm1hcCgoKHtuYW1lOnR9KT0+dCkpKSksbWwoe21vZHVsZU5hbWU6InJ1bi1jb2xvci1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBbY29sb3ItY2xhc3M9J2xpZ2h0LWJsdWUnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1saWdodC1ibHVlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdyZWQnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2dyZWVuJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3B1cnBsZSddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7XG4gICAgfVxuICAgIFtjb2xvci1jbGFzcz0ndGVhbCddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXRlYWwtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3BpbmsnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdvcmFuZ2UnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2Jyb3duJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2luZGlnbyddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7XG4gICAgfVxuICAifSk7bGV0IHlPPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5uYW1lcz1bXSx0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjooKT0+IiJ9LHRoaXMucmVnZXg9IiIsdGhpcy5zZWxlY3Rpb25TdGF0ZT17fSx0aGlzLm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ9NDAsdGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2U9dGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2VJbXBsKCl9X2RlYm91bmNlZFJlZ2V4Q2hhbmdlSW1wbCgpe3ZhciB0PUNlLmV4cG9ydHMuZGVib3VuY2UoKHQ9Pnt0aGlzLnJlZ2V4PXR9KSwxNTAse2xlYWRpbmc6ITF9KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLiQkKCIjbmFtZXMtcmVnZXgiKS52YWx1ZTsiIj09ZT90aGlzLmFzeW5jKCgoKT0+e3RoaXMucmVnZXg9ZX0pLDMwKTp0KGUpfX1nZXQgX3JlZ2V4KCl7dmFyIHQ9dGhpcy5yZWdleDt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fV9zZXRJc29sYXRvckljb24oKXt2YXIgdD10aGlzLnNlbGVjdGlvblN0YXRlLGU9Q2UuZXhwb3J0cy5maWx0ZXIoQ2UuZXhwb3J0cy52YWx1ZXModCkpLmxlbmd0aDtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmlzb2xhdG9yIikpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uaWNvbj0xPT09ZSYmdFtuLm5hbWVdPyJyYWRpby1idXR0b24tY2hlY2tlZCI6InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQifSkpfWNvbXB1dGVOYW1lc01hdGNoaW5nUmVnZXgodCxlKXtjb25zdCBuPXRoaXMuX3JlZ2V4O3JldHVybiBuP3RoaXMubmFtZXMuZmlsdGVyKCh0PT5uLnRlc3QodCkpKTp0aGlzLm5hbWVzfWNvbXB1dGVPdXRTZWxlY3RlZCh0LGUpe3ZhciBuPXRoaXMuc2VsZWN0aW9uU3RhdGUsaT10aGlzLm5hbWVzTWF0Y2hpbmdSZWdleC5sZW5ndGg8PXRoaXMubWF4TmFtZXNUb0VuYWJsZUJ5RGVmYXVsdDtyZXR1cm4gdGhpcy5uYW1lc01hdGNoaW5nUmVnZXguZmlsdGVyKCh0PT5udWxsPT1uW3RdP2k6blt0XSkpfXN5bmNocm9uaXplQ29sb3JzKHQpe3RoaXMuX3NldElzb2xhdG9ySWNvbigpO3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci1jaGVja2JveCIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRoaXMuY29sb3JpbmcuZ2V0Q29sb3IodC5uYW1lKTt0LnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IiOmUsIi0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvciI6ZX0pfSkpO3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuaXNvbGF0b3IiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLmNvbG9yaW5nLmdldENvbG9yKHQubmFtZSk7dC5zdHlsZS5jb2xvcj1lfSkpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy51cGRhdGVTdHlsZXMoKX0pKX1faXNvbGF0ZU5hbWUodCl7dmFyIGU9dC50YXJnZXQubmFtZSxuPXt9O3RoaXMubmFtZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7blt0XT10PT1lfSkpLHRoaXMuc2VsZWN0aW9uU3RhdGU9bn1fY2hlY2tib3hDaGFuZ2UodCl7dmFyIGU9dC50YXJnZXQ7Y29uc3Qgbj1DZS5leHBvcnRzLmNsb25lKHRoaXMuc2VsZWN0aW9uU3RhdGUpO25bZS5uYW1lXT1lLmNoZWNrZWQsdGhpcy5zZWxlY3Rpb25TdGF0ZT1ufV9pc0NoZWNrZWQodCxlKXtyZXR1cm4tMSE9dGhpcy5vdXRTZWxlY3RlZC5pbmRleE9mKHQpfXRvZ2dsZUFsbCgpe2NvbnN0IHQ9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXguc29tZSgodD0+dGhpcy5vdXRTZWxlY3RlZC5pbmNsdWRlcyh0KSkpLGU9e307dGhpcy5uYW1lcy5mb3JFYWNoKChuPT57ZVtuXT0hdH0pKSx0aGlzLnNlbGVjdGlvblN0YXRlPWV9fTt5Ty50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0icnVuLWNvbG9yLXN0eWxlIj48L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dAogICAgICBpZD0ibmFtZXMtcmVnZXgiCiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJXcml0ZSBhIHJlZ2V4IHRvIGZpbHRlciBydW5zIgogICAgICB2YWx1ZT0iW1tyZWdleF1dIgogICAgICBvbi1iaW5kLXZhbHVlLWNoYW5nZWQ9Il9kZWJvdW5jZWRSZWdleENoYW5nZSIKICAgID48L3BhcGVyLWlucHV0PgogICAgPGRpdiBpZD0ib3V0ZXItY29udGFpbmVyIiBjbGFzcz0ic2Nyb2xsYmFyIj4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9IltbbmFtZXNNYXRjaGluZ1JlZ2V4XV0iCiAgICAgICAgb24tZG9tLWNoYW5nZT0ic3luY2hyb25pemVDb2xvcnMiCiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lLXJvdyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJpY29uLWNvbnRhaW5lciBjaGVja2JveC1jb250YWluZXIgdmVydGljYWwtYWxpZ24tY29udGFpbmVyIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjbGFzcz0iY2hlY2tib3ggdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIGlkJD0iY2hlY2tib3gtW1tpdGVtXV0iCiAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtXV0iCiAgICAgICAgICAgICAgY2hlY2tlZCQ9IltbX2lzQ2hlY2tlZChpdGVtLCBzZWxlY3Rpb25TdGF0ZS4qKV1dIgogICAgICAgICAgICAgIG9uLWNoYW5nZT0iX2NoZWNrYm94Q2hhbmdlIgogICAgICAgICAgICA+PC9wYXBlci1jaGVja2JveD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iaWNvbi1jb250YWluZXIgaXNvbGF0b3ItY29udGFpbmVyIHZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgaWNvbj0icmFkaW8tYnV0dG9uLXVuY2hlY2tlZCIKICAgICAgICAgICAgICBjbGFzcz0iaXNvbGF0b3IgdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIG9uLXRhcD0iX2lzb2xhdGVOYW1lIgogICAgICAgICAgICAgIG5hbWU9IltbaXRlbV1dIgogICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbS1sYWJlbC1jb250YWluZXIiPgogICAgICAgICAgICA8c3Bhbj5bW2l0ZW1dXTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAjb3V0ZXItY29udGFpbmVyIHsKICAgICAgICBjb250YWluOiBjb250ZW50OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgfQogICAgICAubmFtZS1yb3cgewogICAgICAgIGNvbnRhaW46IGNvbnRlbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOyAvKiBtYWtlcyB3cmFwcGluZyBvZiBoeXBlcnBhcmFtIHN0cmluZ3MgYmV0dGVyICovCiAgICAgIH0KICAgICAgLmljb24tY29udGFpbmVyIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgIH0KICAgICAgLmNoZWNrYm94IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgIH0KICAgICAgLmlzb2xhdG9yIHsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICB9CiAgICAgIC5pc29sYXRvci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKICAgICAgfQogICAgICAuY2hlY2tib3gtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAuaXRlbS1sYWJlbC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICB3aWR0aDogMHB4OyAvKiBoYWNrIHRvIGdldCB0aGUgZmxleC1ncm93IHRvIHdvcmsgcHJvcGVybHkgKi8KICAgICAgfQogICAgICAudG9vbHRpcC12YWx1ZS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICB9CiAgICAgIC52ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tY2VudGVyIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tdG9wIHsKICAgICAgICBhbGlnbi1zZWxmOiBzdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5Ty5wcm90b3R5cGUsIm5hbWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlPLnByb3RvdHlwZSwiY29sb3JpbmciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlPLnByb3RvdHlwZSwicmVnZXgiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxjb21wdXRlZDoiY29tcHV0ZU5hbWVzTWF0Y2hpbmdSZWdleChuYW1lcy4qLCBfcmVnZXgpIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlPLnByb3RvdHlwZSwibmFtZXNNYXRjaGluZ1JlZ2V4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx5Ty5wcm90b3R5cGUsInNlbGVjdGlvblN0YXRlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwLGNvbXB1dGVkOiJjb21wdXRlT3V0U2VsZWN0ZWQobmFtZXNNYXRjaGluZ1JlZ2V4LiosIHNlbGVjdGlvblN0YXRlLiopIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlPLnByb3RvdHlwZSwib3V0U2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0seU8ucHJvdG90eXBlLCJtYXhOYW1lc1RvRW5hYmxlQnlEZWZhdWx0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlPLnByb3RvdHlwZSwiX2RlYm91bmNlZFJlZ2V4Q2hhbmdlIix2b2lkIDApLHQoW3MoInJlZ2V4IiksZSgiZGVzaWduOnR5cGUiLFJlZ0V4cCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0seU8ucHJvdG90eXBlLCJfcmVnZXgiLG51bGwpLHQoW2EoInNlbGVjdGlvblN0YXRlIiwibmFtZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHlPLnByb3RvdHlwZSwiX3NldElzb2xhdG9ySWNvbiIsbnVsbCkseU89dChbaSgidGYtbXVsdGktY2hlY2tib3giKV0seU8pO2xldCB2Tz1jbGFzcyBleHRlbmRzIHdle2dldCBfcGFydHMoKXt2YXIgdD10aGlzLnZhbHVlLGU9dGhpcy5kZWxpbWl0ZXJQYXR0ZXJuO2NvbnN0IG49W107Zm9yKDs7KXtjb25zdCBpPW5ldyBSZWdFeHAoZSwiZyIpO2lmKGkudGVzdCh0KSwwPT09aS5sYXN0SW5kZXgpe24ucHVzaCh0KTticmVha31uLnB1c2godC5zbGljZSgwLGkubGFzdEluZGV4KSksdD10LnNsaWNlKGkubGFzdEluZGV4KX1yZXR1cm4gbn19O3ZPLnRlbXBsYXRlPXhlYAogICAgPCEtLQogICAgICBUaGlzIHVnbHkgZm9ybWF0dGluZyBpcyByZXF1aXJlZCB0byBwcmV2ZW50IHNwYWNlcyBmcm9tIHNsaXBwaW5nCiAgICAgIGludG8gdGhlIEhUTUwuCiAgICAtLT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3BhcnRzXV0iIGFzPSJwYXJ0IgogICAgICA+W1twYXJ0XV08d2JyCiAgICAvPjwvdGVtcGxhdGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2Ty5wcm90b3R5cGUsInZhbHVlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZPLnByb3RvdHlwZSwiZGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtzKCJ2YWx1ZSIsImRlbGltaXRlclBhdHRlcm4iKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHZPLnByb3RvdHlwZSwiX3BhcnRzIixudWxsKSx2Tz10KFtpKCJ0Zi13YnItc3RyaW5nIildLHZPKTtsZXQgYk89Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJ1blNlbGVjdGlvblN0YXRlPWNsKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pLmNhbGwodGhpcyksdGhpcy5yZWdleElucHV0PVhzKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSkuY2FsbCh0aGlzKSx0aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoPTI1MCx0aGlzLl9kYXRhTG9jYXRpb25EZWxpbWl0ZXJQYXR0ZXJuPSJbLz1fLC1dIix0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjpfT30sdGhpcy5fc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZT11bCgicnVuU2VsZWN0aW9uU3RhdGUiLHtkZWZhdWx0VmFsdWU6e319KSx0aGlzLl9yZWdleE9ic2VydmVyPSRzKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSl9YXR0YWNoZWQoKXt0aGlzLl9ydW5TdG9yZUxpc3RlbmVyPU5sLmFkZExpc3RlbmVyKCgoKT0+e3RoaXMuc2V0KCJydW5zIixObC5nZXRSdW5zKCkpfSkpLHRoaXMuc2V0KCJydW5zIixObC5nZXRSdW5zKCkpLHRoaXMuX2VudlN0b3JlTGlzdGVuZXI9TGwuYWRkTGlzdGVuZXIoKCgpPT57dGhpcy5zZXQoImRhdGFMb2NhdGlvbiIsTGwuZ2V0RGF0YUxvY2F0aW9uKCkpfSkpLHRoaXMuc2V0KCJkYXRhTG9jYXRpb24iLExsLmdldERhdGFMb2NhdGlvbigpKX1kZXRhY2hlZCgpe05sLnJlbW92ZUxpc3RlbmVyQnlLZXkodGhpcy5fcnVuU3RvcmVMaXN0ZW5lciksTGwucmVtb3ZlTGlzdGVuZXJCeUtleSh0aGlzLl9lbnZTdG9yZUxpc3RlbmVyKX1fdG9nZ2xlQWxsKCl7dGhpcy4kLm11bHRpQ2hlY2tib3gudG9nZ2xlQWxsKCl9Z2V0IF9jbGlwcGVkRGF0YUxvY2F0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhTG9jYXRpb24sZT10aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQubGVuZ3RoPmU/dC5zdWJzdHJpbmcoMCxlKTp0fV9vcGVuRGF0YUxvY2F0aW9uRGlhbG9nKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLiQkKCIjZGF0YS1sb2NhdGlvbi1kaWFsb2ciKS5vcGVuKCl9X3Nob3VsZFNob3dFeHBhbmREYXRhTG9jYXRpb25CdXR0b24odCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg+ZX19O2JPLnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWRpYWxvZyB3aXRoLWJhY2tkcm9wPSIiIGlkPSJkYXRhLWxvY2F0aW9uLWRpYWxvZyI+CiAgICAgIDxoMj5EYXRhIExvY2F0aW9uPC9oMj4KICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICB2YWx1ZT0iW1tkYXRhTG9jYXRpb25dXSIKICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICA+CiAgICAgIDwvdGYtd2JyLXN0cmluZwogICAgPjwvcGFwZXItZGlhbG9nPgogICAgPGRpdiBpZD0idG9wLXRleHQiPgogICAgICA8aDMgaWQ9InRvb2x0aXAtaGVscCIgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5SdW5zPC9oMz4KICAgIDwvZGl2PgogICAgPHRmLW11bHRpLWNoZWNrYm94CiAgICAgIGlkPSJtdWx0aUNoZWNrYm94IgogICAgICBuYW1lcz0iW1tydW5zXV0iCiAgICAgIHNlbGVjdGlvbi1zdGF0ZT0ie3tydW5TZWxlY3Rpb25TdGF0ZX19IgogICAgICBvdXQtc2VsZWN0ZWQ9Int7c2VsZWN0ZWRSdW5zfX0iCiAgICAgIHJlZ2V4PSJ7e3JlZ2V4SW5wdXR9fSIKICAgICAgY29sb3Jpbmc9IltbY29sb3JpbmddXSIKICAgID48L3RmLW11bHRpLWNoZWNrYm94PgogICAgPHBhcGVyLWJ1dHRvbiBjbGFzcz0ieC1idXR0b24iIGlkPSJ0b2dnbGUtYWxsIiBvbi10YXA9Il90b2dnbGVBbGwiPgogICAgICBUb2dnbGUgQWxsIFJ1bnMKICAgIDwvcGFwZXItYnV0dG9uPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2RhdGFMb2NhdGlvbl1dIj4KICAgICAgPGRpdiBpZD0iZGF0YS1sb2NhdGlvbiI+CiAgICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICAgIHZhbHVlPSJbW19jbGlwcGVkRGF0YUxvY2F0aW9uXV0iCiAgICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICAgID48L3RmLXdici1zdHJpbmcKICAgICAgICA+PCEtLQogICAgICAgICAgV2UgdXNlIEhUTUwgY29tbWVudHMgdG8gcmVtb3ZlIHNwYWNlcyBiZWZvcmUgdGhlIGVsbGlwc2lzLgogICAgICAgIC0tPjx0ZW1wbGF0ZQogICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgIGlmPSJbW19zaG91bGRTaG93RXhwYW5kRGF0YUxvY2F0aW9uQnV0dG9uKGRhdGFMb2NhdGlvbiwgX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgpXV0iCiAgICAgICAgICA+PCEtLQogICAgICAgICAgLS0+PGEgaHJlZj0iIiBvbi1jbGljaz0iX29wZW5EYXRhTG9jYXRpb25EaWFsb2ciPuKApjwvYT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgICAjdG9wLXRleHQgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgICB0Zi13YnItc3RyaW5nIHsKICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIHRmLW11bHRpLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC54LWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgfQogICAgICAjdG9vbHRpcC1oZWxwIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KICAgICAgcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgfQogICAgICAjZGF0YS1sb2NhdGlvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luOiA1cHggMCAwIDA7CiAgICAgICAgbWF4LXdpZHRoOiAyODhweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYk8ucHJvdG90eXBlLCJydW5TZWxlY3Rpb25TdGF0ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX3JlZ2V4T2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGJPLnByb3RvdHlwZSwicmVnZXhJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGJPLnByb3RvdHlwZSwic2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxiTy5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGJPLnByb3RvdHlwZSwiZGF0YUxvY2F0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGJPLnByb3RvdHlwZSwiX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYk8ucHJvdG90eXBlLCJfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxiTy5wcm90b3R5cGUsImNvbG9yaW5nIix2b2lkIDApLHQoW3MoImRhdGFMb2NhdGlvbiIsIl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sYk8ucHJvdG90eXBlLCJfY2xpcHBlZERhdGFMb2NhdGlvbiIsbnVsbCksYk89dChbaSgidGYtcnVucy1zZWxlY3RvciIpXSxiTyk7Y2xhc3MgeE97Y29uc3RydWN0b3IoKXt0aGlzLmNhbmNlbGxhdGlvbkNvdW50PTB9Y2FuY2VsbGFibGUodCl7Y29uc3QgZT10aGlzLmNhbmNlbGxhdGlvbkNvdW50O3JldHVybiBuPT50KHt2YWx1ZTpuLGNhbmNlbGxlZDp0aGlzLmNhbmNlbGxhdGlvbkNvdW50IT09ZX0pfWNhbmNlbEFsbCgpe3RoaXMuY2FuY2VsbGF0aW9uQ291bnQrK319bGV0IHdPPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5odG1sPSIifWdldCBzYW5pdGl6ZWRIdG1sKCl7cmV0dXJuIHRoaXMuaHRtbH1hdHRhY2hlZCgpe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLm1hcmtkb3duLCEwKX0pKX19O2Z1bmN0aW9uIFNPKHQpe3JldHVybiB0P3QudG9TdHJpbmcoKS5yZXBsYWNlKC9HTVQtXGQrIFwoKFteKV0rKVwpLywiJDEiKToiIn1mdW5jdGlvbiBNTyh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe2lmKCF0KXJldHVybiBudWxsO2xldCBlPXQubWF0Y2goL14jKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pJC8pO2lmKCFlKXJldHVybiBudWxsO2lmKDQ9PXQubGVuZ3RoKWZvcih2YXIgbj0xO248PTM7bisrKWVbbl09ZVtuXStlW25dO3JldHVybltwYXJzZUludChlWzFdLDE2KSxwYXJzZUludChlWzJdLDE2KSxwYXJzZUludChlWzNdLDE2KV19KSh0KTtpZighZSlyZXR1cm4iaW5oZXJpdCI7cmV0dXJuIE1hdGgucm91bmQoKDI5OSplWzBdKzU4NyplWzFdKzExNCplWzJdKS8xZTMpPjEyNT8iaW5oZXJpdCI6IiNlZWUifXdPLnRlbXBsYXRlPXhlYAogICAgPGRpdiBpZD0ibWFya2Rvd24iIGlubmVyLWgtdC1tLWw9Iltbc2FuaXRpemVkSHRtbF1dIj48L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLyoKICAgICAgICogUmVkdWNlIHRvcG1vc3QgYW5kIGJvdHRvbW1vc3QgbWFyZ2lucyBmcm9tIDE2cHggdG8gMC4zZW0gKHJlbmRlcnMKICAgICAgICogYXQgYWJvdXQgNC44cHgpIHRvIGtlZXAgdGhlIGxheW91dCBjb21wYWN0LiBUaGlzIGltcHJvdmVzIHRoZQogICAgICAgKiBhcHBlYXJhbmNlIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgbGluZSBvZiB0ZXh0OyBzdGFuZGFyZCBNYXJrZG93bgogICAgICAgKiByZW5kZXJlcnMgd2lsbCBzdGlsbCBpbmNsdWRlIGEgXGA8cD5cYCBlbGVtZW50LgogICAgICAgKgogICAgICAgKiBCeSB0YXJnZXRpbmcgb25seSB0aGUgdG9wLWxldmVsLCBleHRyZW1hbCBlbGVtZW50cywgd2UgcHJlc2VydmUgYW55CiAgICAgICAqIGFjdHVhbCBwYXJhZ3JhcGggYnJlYWtzIGFuZCBvbmx5IGNoYW5nZSB0aGUgcGFkZGluZyBhZ2FpbnN0IHRoZQogICAgICAgKiBjb21wb25lbnQgZWRnZXMuCiAgICAgICAqLwogICAgICAjbWFya2Rvd24gPiBwOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwLjNlbTsKICAgICAgfQogICAgICAjbWFya2Rvd24gPiBwOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDAuM2VtOwogICAgICB9CgogICAgICAvKiBQbGVhc2FudCBzdHlsZXMgZm9yIE1hcmtkb3duIHRhYmxlcy4gKi8KICAgICAgI21hcmtkb3duIHRhYmxlIHsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CiAgICAgICNtYXJrZG93biB0YWJsZSB0aCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdGgsCiAgICAgICNtYXJrZG93biB0YWJsZSB0ZCB7CiAgICAgICAgcGFkZGluZzogNnB4IDEzcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGItdWktYm9yZGVyLCAjZGZlMmU1KTsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdHIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRiLXVpLWJvcmRlciwgI2M2Y2JkMSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3Ty5wcm90b3R5cGUsImh0bWwiLHZvaWQgMCksdChbcygiaHRtbCIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHdPLnByb3RvdHlwZSwic2FuaXRpemVkSHRtbCIsbnVsbCksd089dChbaSgidGYtbWFya2Rvd24tdmlldyIpXSx3TyksbWwoe21vZHVsZU5hbWU6InRmLWNhcmQtaGVhZGluZy1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBmaWdjYXB0aW9uIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8qKiBIb3Jpem9udGFsIGxpbmUgb2YgbGFiZWxzLiAqL1xuICAgIC5oZWFkaW5nLXJvdyB7XG4gICAgICBtYXJnaW4tdG9wOiAtNHB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuXG4gICAgLyoqIFBpZWNlIG9mIHRleHQgaW4gdGhlIGZpZ3VyZSBjYXB0aW9uLiAqL1xuICAgIC5oZWFkaW5nLWxhYmVsIHtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB9XG5cbiAgICAvKiogTWFrZXMgbGFiZWwgc2hvdyBvbiB0aGUgcmlnaHQuICovXG4gICAgLmhlYWRpbmctcmlnaHQge1xuICAgICAgZmxleC1ncm93OiAwO1xuICAgIH1cbiAgIn0pO2xldCBFTz1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmRpc3BsYXlOYW1lPW51bGwsdGhpcy50YWc9bnVsbCx0aGlzLnJ1bj1udWxsLHRoaXMuZGVzY3JpcHRpb249bnVsbCx0aGlzLmNvbG9yPW51bGx9X3VwZGF0ZUhlYWRpbmdTdHlsZSgpe3RoaXMudXBkYXRlU3R5bGVzKHsiLS10Zi1jYXJkLWhlYWRpbmctYmFja2dyb3VuZC1jb2xvciI6dGhpcy5fcnVuQmFja2dyb3VuZCwiLS10Zi1jYXJkLWhlYWRpbmctY29sb3IiOnRoaXMuX3J1bkNvbG9yfSl9X2NvbXB1dGVSdW5CYWNrZ3JvdW5kKHQpe3JldHVybiB0fHwibm9uZSJ9X2NvbXB1dGVSdW5Db2xvcih0KXtyZXR1cm4gTU8odCl9Z2V0IF9uYW1lTGFiZWwoKXtyZXR1cm4gdGhpcy5kaXNwbGF5TmFtZXx8dGhpcy50YWd8fCIifWdldCBfdGFnTGFiZWwoKXt2YXIgdD10aGlzLnRhZztyZXR1cm4gdCYmdCE9PXRoaXMuZGlzcGxheU5hbWU/dDoiIn1fdG9nZ2xlRGVzY3JpcHRpb25EaWFsb2codCl7Y29uc3QgZT10aGlzLiQuZGVzY3JpcHRpb25EaWFsb2c7ZS5wb3NpdGlvblRhcmdldD10LnRhcmdldCxlLnRvZ2dsZSgpfX07RU8udGVtcGxhdGU9eGVgCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZmlnY2FwdGlvbiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19uYW1lTGFiZWxdXSI+CiAgICAgICAgICAgIDxkaXYgaXRlbXByb3A9Im5hbWUiIGNsYXNzPSJoZWFkaW5nLWxhYmVsIG5hbWUiPltbX25hbWVMYWJlbF1dPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3J1bl1dIj4KICAgICAgICAgICAgPCEtLSBFeHRyYSB3cmFwcGluZyBzcGFuIG5lZWRlZCB0byBhdm9pZCBmbGV4Ym94IGJsb2NraWZpY2F0aW9uLiAtLT4KICAgICAgICAgICAgPCEtLSAoc2VlIGZsZXhib3ggc3BlYywgc2VjdGlvbiA0ICJGbGV4IEl0ZW1zIikgLS0+CiAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICBpdGVtcHJvcD0icnVuIgogICAgICAgICAgICAgICAgaWQ9ImhlYWRpbmctcnVuIgogICAgICAgICAgICAgICAgY2xhc3M9ImhlYWRpbmctbGFiZWwgaGVhZGluZy1yaWdodCBydW4iCiAgICAgICAgICAgICAgICA+W1tydW5dXTwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3RhZ0xhYmVsXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgICB0YWc6IDxzcGFuIGl0ZW1wcm9wPSJ0YWciPltbX3RhZ0xhYmVsXV08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZmlnY2FwdGlvbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2Rlc2NyaXB0aW9uXV0iPgogICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgaWNvbj0iaW5mbyIKICAgICAgICAgIG9uLXRhcD0iX3RvZ2dsZURlc2NyaXB0aW9uRGlhbG9nIgogICAgICAgICAgdGl0bGU9IlNob3cgc3VtbWFyeSBkZXNjcmlwdGlvbiIKICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHBhcGVyLWRpYWxvZwogICAgICAgIGlkPSJkZXNjcmlwdGlvbkRpYWxvZyIKICAgICAgICBuby1vdmVybGFwPSIiCiAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0iYXV0byIKICAgICAgICB2ZXJ0aWNhbC1hbGlnbj0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZT4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbZGVzY3JpcHRpb25dXSI+PC90Zi1tYXJrZG93bi12aWV3PgogICAgICAgIDwvcGFwZXItZGlhbG9nLXNjcm9sbGFibGU+CiAgICAgIDwvcGFwZXItZGlhbG9nPgogICAgPC9kaXY+CiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAuY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAubmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIC5ydW4gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgcGFkZGluZzogMXB4IDRweCAycHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICBwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSB7CiAgICAgICAgbWF4LXdpZHRoOiA2NDBweDsKICAgICAgfQogICAgICAjaGVhZGluZy1ydW4gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRmLWNhcmQtaGVhZGluZy1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBjb2xvcjogdmFyKC0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEVPLnByb3RvdHlwZSwiZGlzcGxheU5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJkZXNjcmlwdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxFTy5wcm90b3R5cGUsImNvbG9yIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVJ1bkJhY2tncm91bmQoY29sb3IpIixyZWFkT25seTohMCxvYnNlcnZlcjoiX3VwZGF0ZUhlYWRpbmdTdHlsZSJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRU8ucHJvdG90eXBlLCJfcnVuQmFja2dyb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihjb2xvcikiLHJlYWRPbmx5OiEwLG9ic2VydmVyOiJfdXBkYXRlSGVhZGluZ1N0eWxlIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxFTy5wcm90b3R5cGUsIl9ydW5Db2xvciIsdm9pZCAwKSx0KFtzKCJkaXNwbGF5TmFtZSIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEVPLnByb3RvdHlwZSwiX25hbWVMYWJlbCIsbnVsbCksdChbcygiZGlzcGxheU5hbWUiLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxFTy5wcm90b3R5cGUsIl90YWdMYWJlbCIsbnVsbCksRU89dChbaSgidGYtY2FyZC1oZWFkaW5nIildLEVPKTtsZXQgVE89Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9tZXRhZGF0YUNhbmNlbGxlcj1uZXcgeE8sdGhpcy5fc3RlcHM9W10sdGhpcy5fYXR0YWNoZWQ9ITF9Z2V0IF9ydW5Db2xvcigpe3JldHVybiBfTyh0aGlzLnJ1bil9Z2V0IF9oYXNBdExlYXN0T25lU3RlcCgpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiEhdCYmdC5sZW5ndGg+MH1nZXQgX2hhc011bHRpcGxlU3RlcHMoKXt2YXIgdD10aGlzLl9zdGVwcztyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9tYXhTdGVwSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RlcHMubGVuZ3RoLTF9Z2V0IF9jdXJyZW50RGF0dW0oKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XX1nZXQgX3NhbXBsZVRleHQoKXtyZXR1cm5gJHt0aGlzLnNhbXBsZSsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXtyZXR1cm4gdGhpcy50b3RhbFNhbXBsZXM+MX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwLHRoaXMucmVsb2FkKCl9X3JlbG9hZE9uUnVuVGFnQ2hhbmdlKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5fYXR0YWNoZWQpcmV0dXJuO3RoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgiYXVkaW8iLCIvYXVkaW8iLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOlN0cmluZyh0aGlzLnNhbXBsZSl9KSksZT10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixlKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZS5sZW5ndGgtMSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXModC5xdWVyeSk7ZS5hcHBlbmQoInRzIixTdHJpbmcodC53YWxsX3RpbWUpKTtjb25zdCBuPUVyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL2luZGl2aWR1YWxBdWRpbyIsZSk7cmV0dXJue3dhbGxfdGltZTpTTyhuZXcgRGF0ZSgxZTMqdC53YWxsX3RpbWUpKSxzdGVwOnQuc3RlcCxsYWJlbDp0LmxhYmVsLGNvbnRlbnRUeXBlOnQuY29udGVudFR5cGUsdXJsOm59fX07VE8udGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTYW1wbGVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW3RvdGFsU2FtcGxlc11dCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcCA8c3Ryb25nPltbX2N1cnJlbnREYXR1bS5zdGVwXV08L3N0cm9uZz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50RGF0dW0ud2FsbF90aW1lXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICAgIFtbX2N1cnJlbnREYXR1bS53YWxsX3RpbWVdXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIgogICAgICAgICAgICBzbmFwcz0iIgogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgIDxhdWRpbwogICAgICAgIGNvbnRyb2xzPSIiCiAgICAgICAgc3JjJD0iW1tfY3VycmVudERhdHVtLnVybF1dIgogICAgICAgIHR5cGUkPSJbW19jdXJyZW50RGF0dW0uY29udGVudFR5cGVdXSIKICAgICAgPjwvYXVkaW8+CiAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbX2N1cnJlbnREYXR1bS5sYWJlbF1dIj48L3RmLW1hcmtkb3duLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBpZD0ibWFpbi1hdWRpby1jb250YWluZXIiPjwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yOiAjNDI0MjQyOwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAjc3RlcHMgewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcGFkZGluZzogMCA1cHg7IC8qIHNvIHRoZSBzbGlkZXIga25vYiBkb2Vzbid0IGJ1dHQgb3V0ICovCiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFRPLnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFRPLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwidG90YWxTYW1wbGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFRPLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxUTy5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sVE8ucHJvdG90eXBlLCJfbWV0YWRhdGFDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFRPLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFRPLnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxUTy5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFRPLnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFtzKCJfc3RlcHMiLCJfc3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfY3VycmVudERhdHVtIixudWxsKSx0KFtzKCJzYW1wbGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxUTy5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJ0b3RhbFNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVE8ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTYW1wbGVzIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFRPLnByb3RvdHlwZSwiX3JlbG9hZE9uUnVuVGFnQ2hhbmdlIixudWxsKSxUTz10KFtpKCJ0Zi1hdWRpby1sb2FkZXIiKV0sVE8pO2xldCBDTz1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90YWdGaWx0ZXI9IiIsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRBdWRpbygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1mcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCl9KSl9X3JlbG9hZEF1ZGlvKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWF1ZGlvLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIENlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LHRvdGFsU2FtcGxlczpufSkpKX1yZXR1cm4gTnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07Q08udGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3IKICAgICAgICAgICAgaWQ9InJ1bnMtc2VsZWN0b3IiCiAgICAgICAgICAgIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319IgogICAgICAgICAgPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBhdWRpbyBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgYXVkaW8gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWF1ZGlvLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iCiAgICAgICAgICAgICAgICAgIHRvdGFsLXNhbXBsZXM9IltbaXRlbS50b3RhbFNhbXBsZXNdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWF1ZGlvLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDTy5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLENPLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxDTy5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDTy5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ08ucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sQ08ucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDTy5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxDTz10KFtpKCJ0Zi1hdWRpby1kYXNoYm9hcmQiKV0sQ08pO2xldCBBTz1jbGFzcyBleHRlbmRzKGNyKHdlKSl7YXR0YWNoZWQoKXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHQsInRhcCIsIl9zZWxlY3RUYXJnZXQiKX0uYmluZCh0aGlzKSl9KSl9X3NlbGVjdFRhcmdldCh0KXt0aGlzLnNlbGVjdGVkSWQ9dC5jdXJyZW50VGFyZ2V0LmlkfV9zZWxlY3RlZElkQ2hhbmdlZCgpe3ZhciB0PXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigiIyIrdGhpcy5zZWxlY3RlZElkKTt0JiYodGhpcy5nZXRFZmZlY3RpdmVDaGlsZHJlbigpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKX0pKSx0LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIikpfX07ZnVuY3Rpb24ga08odCxlKXtsZXQgbjtjb25zdCBpPXt9O09iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pntjb25zdCByPXRbZV07dm9pZCAwPT09biYmKG49ci5kaXNwbGF5TmFtZSksbiE9PXIuZGlzcGxheU5hbWUmJihuPW51bGwpLHZvaWQgMD09PWlbci5kZXNjcmlwdGlvbl0mJihpW3IuZGVzY3JpcHRpb25dPVtdKSxpW3IuZGVzY3JpcHRpb25dLnB1c2goZSl9KSk7cmV0dXJue2Rpc3BsYXlOYW1lOm51bGwhPW4/bjplLGRlc2NyaXB0aW9uOigoKT0+e2NvbnN0IHQ9T2JqZWN0LmtleXMoaSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiIiO2lmKDE9PT10Lmxlbmd0aClyZXR1cm4gdFswXTtyZXR1cm5gJHsiPHA+PHN0cm9uZz5NdWx0aXBsZSBkZXNjcmlwdGlvbnM6PC9zdHJvbmc+PC9wPiJ9PHVsPiR7dC5tYXAoKHQ9Pntjb25zdCBlPWlbdF0ubWFwKCh0PT5gPGNvZGU+JHt0LnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyYvZywiJmFtcDsiKX08L2NvZGU+YCkpLG49ZS5sZW5ndGg+Mj9lLnNsaWNlKDAsZS5sZW5ndGgtMSkuam9pbigiLCAiKSsiLCBhbmQgIitlW2UubGVuZ3RoLTFdOmUuam9pbigiIGFuZCAiKTtyZXR1cm5gPGxpPjxwPkZvciAkeyhmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4gMT09PXQ/ZTpufSkoZS5sZW5ndGgsInJ1biIsInJ1bnMiKX0gJHtufTo8L3A+JHt0fTwvbGk+YH0pKS5qb2luKCIiKX08L3VsPmB9KSgpfX1BTy50ZW1wbGF0ZT14ZWAKICAgIDxkaXYgaWQ9IndyYXAiPgogICAgICA8aDM+W1tuYW1lXV08L2gzPgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXBwZXIiPjxzbG90Pjwvc2xvdD48L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCguc2VsZWN0ZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGgzIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIG1hcmdpbjogMCAwIDVweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEFPLnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWxlY3RlZElkQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQU8ucHJvdG90eXBlLCJzZWxlY3RlZElkIix2b2lkIDApLEFPPXQoW2koInRmLW9wdGlvbi1zZWxlY3RvciIpXSxBTyk7bGV0IFBPPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMud2VpZ2h0PS42LHRoaXMuX3VwZGF0ZVdlaWdodD1DZS5leHBvcnRzLmRlYm91bmNlKChmdW5jdGlvbih0KXt0aGlzLndlaWdodD10fSksMjUwKX1faW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJDaGFuZ2VkKCl7dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PXRoaXMuX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyLnRvU3RyaW5nKCksdGhpcy5fdXBkYXRlV2VpZ2h0LmNhbGwodGhpcyx0aGlzLl9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcil9X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dENoYW5nZWQoKXsrdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PDA/dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PSIwIjordGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PjEmJih0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ9IjEiKTt2YXIgdD0rdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0O2lzTmFOKHQpfHx0aGlzLl91cGRhdGVXZWlnaHQuY2FsbCh0aGlzLHQpfX07ZnVuY3Rpb24gTE8odCxlKXtjb25zdCBuPU9iamVjdC5rZXlzKGUpLnNvcnQoKS5maWx0ZXIoKHQ9PnZvaWQgMCE9PWVbdF0pKTtpZighbi5sZW5ndGgpcmV0dXJuIHQ7Y29uc3QgaT0tMSE9PXQuaW5kZXhPZigiPyIpPyImIjoiPyI7cmV0dXJuIHQraStbXS5jb25jYXQoLi4ubi5tYXAoKHQ9Pntjb25zdCBuPWVbdF07cmV0dXJuKEFycmF5LmlzQXJyYXkobik/bjpbbl0pLm1hcCgoZT0+YCR7dH09JHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpfSkoZSl9YCkpfSkpKS5qb2luKCImIil9UE8udGVtcGxhdGU9eGVgCiAgICA8aDMgY2xhc3M9InRpdGxlIj5TbW9vdGhpbmc8L2gzPgogICAgPGRpdiBjbGFzcz0ic21vb3RoaW5nLWJsb2NrIj4KICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgIGlkPSJzbGlkZXIiCiAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcn19IgogICAgICAgIG1heD0iW1ttYXhdXSIKICAgICAgICBtaW49IltbbWluXV0iCiAgICAgICAgcGluCiAgICAgICAgc3RlcD0iW1tzdGVwXV0iCiAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgIHZhbHVlPSJ7e3dlaWdodH19IgogICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgIDxwYXBlci1pbnB1dAogICAgICAgIGlkPSJpbnB1dCIKICAgICAgICBsYWJlbD0id2VpZ2h0IgogICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgdmFsdWU9Int7X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dH19IgogICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICBzdGVwPSJbW3N0ZXBdXSIKICAgICAgICBtaW49IltbbWluXV0iCiAgICAgICAgbWF4PSJbW21heF1dIgogICAgICA+PC9wYXBlci1pbnB1dD4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAudGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgLnNtb290aGluZy1ibG9jayB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICAtLXBhcGVyLXNsaWRlci1hY3RpdmUtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1tYXJrZXJzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgZmxleC1ncm93OiAyOwogICAgICB9CgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUE8ucHJvdG90eXBlLCJzdGVwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFBPLnByb3RvdHlwZSwibWF4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFBPLnByb3RvdHlwZSwibWluIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxQTy5wcm90b3R5cGUsIndlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlckNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFBPLnByb3RvdHlwZSwiX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxvYnNlcnZlcjoiX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFBPLnByb3RvdHlwZSwiX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dCIsdm9pZCAwKSxQTz10KFtpKCJ0Zi1zbW9vdGhpbmctaW5wdXQiKV0sUE8pO3ZhciBJTz17fSxOTz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlCiAgICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZQogICAgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBUSElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCiAgICBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVECiAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLAogICAgTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC4KCiAgICBTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKICAgIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovdmFyIFJPPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uIHQoZSl7Zm9yKHZhciBuLGk9MSxyPWFyZ3VtZW50cy5sZW5ndGg7aTxyO2krKylmb3IodmFyIG8gaW4gbj1hcmd1bWVudHNbaV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJihlW29dPW5bb10pO3JldHVybiBlfTtmdW5jdGlvbiBPTyh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19ZnVuY3Rpb24gek8odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIGkscixvPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KWEucHVzaChpLnZhbHVlKX1jYXRjaCh0KXtyPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYobj1vLnJldHVybikmJm4uY2FsbChvKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gRE8odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBETz8odGhpcy52PXQsdGhpcyk6bmV3IERPKHQpfXZhciBCTz1NZShPYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxfX2V4dGVuZHM6ZnVuY3Rpb24gSE8odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fU5PKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxfX2Fzc2lnbjpSTyxfX3Jlc3Q6ZnVuY3Rpb24gRk8odCxlKXt2YXIgbj17fTtmb3IodmFyIGkgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmZS5pbmRleE9mKGkpPDAmJihuW2ldPXRbaV0pO2lmKG51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj0wO2ZvcihpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7cjxpLmxlbmd0aDtyKyspZS5pbmRleE9mKGlbcl0pPDAmJihuW2lbcl1dPXRbaVtyXV0pfXJldHVybiBufSxfX2RlY29yYXRlOmZ1bmN0aW9uIFZPKHQsZSxuLGkpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aCxhPW88Mz9lOm51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOmk7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4saSk7ZWxzZSBmb3IodmFyIHM9dC5sZW5ndGgtMTtzPj0wO3MtLSkocj10W3NdKSYmKGE9KG88Mz9yKGEpOm8+Mz9yKGUsbixhKTpyKGUsbikpfHxhKTtyZXR1cm4gbz4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGEpLGF9LF9fcGFyYW06ZnVuY3Rpb24gVU8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtlKG4saSx0KX19LF9fbWV0YWRhdGE6ZnVuY3Rpb24gak8odCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9LF9fYXdhaXRlcjpmdW5jdGlvbiBHTyh0LGUsbixpKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24ocixvKXtmdW5jdGlvbiBhKHQpe3RyeXtsKGkubmV4dCh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChpLnRocm93KHQpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9yKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxzKX1sKChpPWkuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9LF9fZ2VuZXJhdG9yOmZ1bmN0aW9uIFdPKHQsZSl7dmFyIG4saSxyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZyWzBdKXRocm93IHJbMV07cmV0dXJuIHJbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuKGZ1bmN0aW9uIGwobyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthOyl0cnl7aWYobj0xLGkmJihyPWlbMiZvWzBdPyJyZXR1cm4iOm9bMF0/InRocm93IjoibmV4dCJdKSYmIShyPXIuY2FsbChpLG9bMV0pKS5kb25lKXJldHVybiByO3N3aXRjaChpPTAsciYmKG89WzAsci52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6cj1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssaT1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocj1hLnRyeXMsKHI9ci5sZW5ndGg+MCYmcltyLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFyfHxvWzFdPnJbMF0mJm9bMV08clszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxyWzFdKXthLmxhYmVsPXJbMV0scj1vO2JyZWFrfWlmKHImJmEubGFiZWw8clsyXSl7YS5sYWJlbD1yWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9clsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89ZS5jYWxsKHQsYSl9Y2F0Y2godCl7bz1bNix0XSxpPTB9ZmluYWxseXtuPXI9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0pKFtvLHNdKX19fSxfX2V4cG9ydFN0YXI6ZnVuY3Rpb24gcU8odCxlKXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX0sX192YWx1ZXM6T08sX19yZWFkOnpPLF9fc3ByZWFkOmZ1bmN0aW9uIFlPKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoek8oYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9LF9fYXdhaXQ6RE8sX19hc3luY0dlbmVyYXRvcjpmdW5jdGlvbiBYTyh0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBpLHI9bi5hcHBseSh0LGV8fFtdKSxvPVtdO3JldHVybiBpPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGk7ZnVuY3Rpb24gYSh0KXtyW3RdJiYoaVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7by5wdXNoKFt0LGUsbixpXSk+MXx8cyh0LGUpfSkpfSl9ZnVuY3Rpb24gcyh0LGUpe3RyeXshKGZ1bmN0aW9uIG4odCl7dC52YWx1ZSBpbnN0YW5jZW9mIERPP1Byb21pc2UucmVzb2x2ZSh0LnZhbHVlLnYpLnRoZW4obCxjKTp1KG9bMF1bMl0sdCl9KShyW3RdKGUpKX1jYXRjaCh0KXt1KG9bMF1bM10sdCl9fWZ1bmN0aW9uIGwodCl7cygibmV4dCIsdCl9ZnVuY3Rpb24gYyh0KXtzKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gdSh0LGUpe3QoZSksby5zaGlmdCgpLG8ubGVuZ3RoJiZzKG9bMF1bMF0sb1swXVsxXSl9fSxfX2FzeW5jRGVsZWdhdG9yOmZ1bmN0aW9uICRPKHQpe3ZhciBlLG47cmV0dXJuIGU9e30saSgibmV4dCIpLGkoInRocm93IiwoZnVuY3Rpb24odCl7dGhyb3cgdH0pKSxpKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiBpKGkscil7dFtpXSYmKGVbaV09ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTpETyh0W2ldKGUpKSxkb25lOiJyZXR1cm4iPT09aX06cj9yKGUpOmV9KX19LF9fYXN5bmNWYWx1ZXM6ZnVuY3Rpb24gS08odCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBlP2UuY2FsbCh0KTpPTyh0KX0sX19tYWtlVGVtcGxhdGVPYmplY3Q6ZnVuY3Rpb24gWk8odCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyYXciLHt2YWx1ZTplfSk6dC5yYXc9ZSx0fX0pKTtmdW5jdGlvbiBKTyh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBRTyh0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gSk8odChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKTwwP2k9bysxOnI9b31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKT4wP3I9bzppPW8rMX1yZXR1cm4gaX19fXZhciB0ej1RTyhKTyksZXo9dHoucmlnaHQsbno9dHoubGVmdDtmdW5jdGlvbiBpeih0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIHJ6KHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24gb3oodCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0wLGE9LTEscz0wLGw9MDtpZihudWxsPT1lKWZvcig7KythPHI7KWlzTmFOKG49cnoodFthXSkpfHwobCs9KGk9bi1zKSoobi0ocys9aS8rK28pKSk7ZWxzZSBmb3IoOysrYTxyOylpc05hTihuPXJ6KGUodFthXSxhLHQpKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtpZihvPjEpcmV0dXJuIGwvKG8tMSl9ZnVuY3Rpb24gYXoodCxlKXt2YXIgbj1veih0LGUpO3JldHVybiBuP01hdGguc3FydChuKTpufWZ1bmN0aW9uIHN6KHQsZSl7dmFyIG4saSxyLG89dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxvOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPXRbYV0pJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKX1lbHNlIGZvcig7KythPG87KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPWUodFthXSxhLHQpKSYmKGk+biYmKGk9bikscjxuJiYocj1uKSk7cmV0dXJuW2kscl19dmFyIGx6PUFycmF5LnByb3RvdHlwZSxjej1sei5zbGljZSx1ej1sei5tYXA7ZnVuY3Rpb24gaHoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGR6KHQpe3JldHVybiB0fWZ1bmN0aW9uIHB6KHQsZSxuKXt0PSt0LGU9K2Usbj0ocj1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOnI8Mz8xOituO2Zvcih2YXIgaT0tMSxyPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLG89bmV3IEFycmF5KHIpOysraTxyOylvW2ldPXQraSpuO3JldHVybiBvfXZhciBmej1NYXRoLnNxcnQoNTApLG16PU1hdGguc3FydCgxMCksZ3o9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIF96KHQsZSxuKXt2YXIgaT0oZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApLG89aS9NYXRoLnBvdygxMCxyKTtyZXR1cm4gcj49MD8obz49Zno/MTA6bz49bXo/NTpvPj1nej8yOjEpKk1hdGgucG93KDEwLHIpOi1NYXRoLnBvdygxMCwtcikvKG8+PWZ6PzEwOm8+PW16PzU6bz49Z3o/MjoxKX1mdW5jdGlvbiB5eih0LGUsbil7dmFyIGk9TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApKSxvPWkvcjtyZXR1cm4gbz49Zno/cio9MTA6bz49bXo/cio9NTpvPj1neiYmKHIqPTIpLGU8dD8tcjpyfWZ1bmN0aW9uIHZ6KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIGJ6KHQsZSxuKXtpZihudWxsPT1uJiYobj1yeiksaT10Lmxlbmd0aCl7aWYoKGU9K2UpPD0wfHxpPDIpcmV0dXJuK24odFswXSwwLHQpO2lmKGU+PTEpcmV0dXJuK24odFtpLTFdLGktMSx0KTt2YXIgaSxyPShpLTEpKmUsbz1NYXRoLmZsb29yKHIpLGE9K24odFtvXSxvLHQpO3JldHVybiBhKygrbih0W28rMV0sbysxLHQpLWEpKihyLW8pfX1mdW5jdGlvbiB4eih0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPHI7KWlmKG51bGwhPShuPXRbb10pJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPXRbb10pJiZpPm4mJihpPW4pfWVsc2UgZm9yKDsrK288cjspaWYobnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmaT5uJiYoaT1uKTtyZXR1cm4gaX1mdW5jdGlvbiB3eih0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIgZT0tMSxuPXh6KHQsU3opLGk9bmV3IEFycmF5KG4pOysrZTxuOylmb3IodmFyIHIsbz0tMSxhPWlbZV09bmV3IEFycmF5KHIpOysrbzxyOylhW29dPXRbb11bZV07cmV0dXJuIGl9ZnVuY3Rpb24gU3oodCl7cmV0dXJuIHQubGVuZ3RofXZhciBNej1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gRXoodCl7cmV0dXJuIHR9dmFyIFR6PTFlLTY7ZnVuY3Rpb24gQ3oodCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Ky41KSsiLDApIn1mdW5jdGlvbiBBeih0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIGt6KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4rdChlKX19ZnVuY3Rpb24gUHoodCl7dmFyIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTEpLzI7cmV0dXJuIHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSksZnVuY3Rpb24obil7cmV0dXJuK3QobikrZX19ZnVuY3Rpb24gTHooKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gSXoodCxlKXt2YXIgbj1bXSxpPW51bGwscj1udWxsLG89NixhPTYscz0zLGw9MT09PXR8fDQ9PT10Py0xOjEsYz00PT09dHx8Mj09PXQ/IngiOiJ5Iix1PTE9PT10fHwzPT09dD9DejpBejtmdW5jdGlvbiBoKGgpe3ZhciBkPW51bGw9PWk/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTppLHA9bnVsbD09cj9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6RXo6cixmPU1hdGgubWF4KG8sMCkrcyxtPWUucmFuZ2UoKSxnPSttWzBdKy41LF89K21bbS5sZW5ndGgtMV0rLjUseT0oZS5iYW5kd2lkdGg/UHo6a3opKGUuY29weSgpKSx2PWguc2VsZWN0aW9uP2guc2VsZWN0aW9uKCk6aCxiPXYuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLHg9di5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShkLGUpLm9yZGVyKCksdz14LmV4aXQoKSxTPXguZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxNPXguc2VsZWN0KCJsaW5lIiksRT14LnNlbGVjdCgidGV4dCIpO2I9Yi5tZXJnZShiLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsIiMwMDAiKSkseD14Lm1lcmdlKFMpLE09TS5tZXJnZShTLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsIiMwMDAiKS5hdHRyKGMrIjIiLGwqbykpLEU9RS5tZXJnZShTLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCIjMDAwIikuYXR0cihjLGwqZikuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSksaCE9PXYmJihiPWIudHJhbnNpdGlvbihoKSx4PXgudHJhbnNpdGlvbihoKSxNPU0udHJhbnNpdGlvbihoKSxFPUUudHJhbnNpdGlvbihoKSx3PXcudHJhbnNpdGlvbihoKS5hdHRyKCJvcGFjaXR5IixUeikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9eSh0KSk/dSh0KTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSksUy5hdHRyKCJvcGFjaXR5IixUeikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gdShlJiZpc0Zpbml0ZShlPWUodCkpP2U6eSh0KSl9KSkpLHcucmVtb3ZlKCksYi5hdHRyKCJkIiw0PT09dHx8Mj09dD8iTSIrbCphKyIsIitnKyJIMC41ViIrXysiSCIrbCphOiJNIitnKyIsIitsKmErIlYwLjVIIitfKyJWIitsKmEpLHguYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIHUoeSh0KSl9KSksTS5hdHRyKGMrIjIiLGwqbyksRS5hdHRyKGMsbCpmKS50ZXh0KHApLHYuZmlsdGVyKEx6KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSx2LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9eX0pKX1yZXR1cm4gaC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGgpOmV9LGgudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1Nei5jYWxsKGFyZ3VtZW50cyksaH0saC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106TXouY2FsbCh0KSxoKTpuLnNsaWNlKCl9LGgudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6TXouY2FsbCh0KSxoKTppJiZpLnNsaWNlKCl9LGgudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGgpOnJ9LGgudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YT0rdCxoKTpvfSxoLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsaCk6b30saC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LGgpOmF9LGgudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QsaCk6c30saH12YXIgTno9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gUnooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgT3ooaSl9ZnVuY3Rpb24gT3oodCl7dGhpcy5fPXR9ZnVuY3Rpb24genoodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIER6KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gQnoodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPU56LHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1Pei5wcm90b3R5cGU9UnoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPeixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9enoodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09QnooaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT1CeihpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49RHooaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgT3oodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBIej0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsRno9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOkh6LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gVnoodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksRnouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOkZ6W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gVXoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1IeiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09SHo/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIGp6KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEd6KHQpe3ZhciBlPVZ6KHQpO3JldHVybihlLmxvY2FsP2p6OlV6KShlKX1mdW5jdGlvbiBXeigpe31mdW5jdGlvbiBxeih0KXtyZXR1cm4gbnVsbD09dD9XejpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIFl6KCl7cmV0dXJuW119ZnVuY3Rpb24gWHoodCl7cmV0dXJuIG51bGw9PXQ/WXo6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiAkeih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBLeih0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBaeih0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1aei5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlp6LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIEp6KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBaeih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gUXoodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IFp6KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gdEQodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gZUQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG5EKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gaUQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiByRCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBvRCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gYUQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gc0QodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGxEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIGNEKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gdUQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gaEQodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxzRCh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBkRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gcEQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIGZEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIG1EKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBnRCh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBfRCh0KX1mdW5jdGlvbiBfRCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9bUQodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB5RCh0LGUpe2Zvcih2YXIgbj1nRCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIHZEKHQsZSl7Zm9yKHZhciBuPWdEKHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gYkQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7eUQodGhpcyx0KX19ZnVuY3Rpb24geEQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dkQodGhpcyx0KX19ZnVuY3Rpb24gd0QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/eUQ6dkQpKHRoaXMsdCl9fWZ1bmN0aW9uIFNEKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBNRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIEVEKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBURCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIENEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIEFEKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24ga0QoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUEQoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBMRCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIElEKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gTkQoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIFJEKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1fRC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBPRD17fSx6RD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KE9EPXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTtmdW5jdGlvbiBERCh0LGUsbil7cmV0dXJuIHQ9QkQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBCRCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPXpEO3pEPWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e3pEPXJ9fX1mdW5jdGlvbiBIRCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBGRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gVkQodCxlLG4pe3ZhciBpPU9ELmhhc093blByb3BlcnR5KHQudHlwZSk/REQ6QkQ7cmV0dXJuIGZ1bmN0aW9uKHIsbyxhKXt2YXIgcyxsPXRoaXMuX19vbixjPWkoZSxvLGEpO2lmKGwpZm9yKHZhciB1PTAsaD1sLmxlbmd0aDt1PGg7Kyt1KWlmKChzPWxbdV0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gVUQodCxlLG4pe3ZhciBpPXNEKHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIGpEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFVEKHRoaXMsdCxlKX19ZnVuY3Rpb24gR0QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVUQodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIFdEPVtudWxsXTtmdW5jdGlvbiBxRCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBZRCgpe3JldHVybiBuZXcgcUQoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxXRCl9ZnVuY3Rpb24gWEQodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBxRChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHFEKFtbdF1dLFdEKX1mdW5jdGlvbiAkRCh0KXt2YXIgZT0oZnVuY3Rpb24gbigpe2Zvcih2YXIgdCxlPXpEO3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfSkoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksKGZ1bmN0aW9uIGkodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX0pKHQsZSl9ZnVuY3Rpb24gS0QoKXt6RC5wcmV2ZW50RGVmYXVsdCgpLHpELnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIFpEKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49WEQodCkub24oImRyYWdzdGFydC5kcmFnIixLRCwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixLRCwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gSkQodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPVhEKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLEtELCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gUUQodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIHRCKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uIGVCKCl7fXFELnByb3RvdHlwZT1ZRC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnFELHNlbGVjdDpmdW5jdGlvbiBuQih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cXoodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyBxRChpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gaUIodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVh6KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1bXSxyPVtdLG89MDtvPG47KytvKWZvcih2YXIgYSxzPWVbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmKGkucHVzaCh0LmNhbGwoYSxhLl9fZGF0YV9fLGMscykpLHIucHVzaChhKSk7cmV0dXJuIG5ldyBxRChpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gckIodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PSR6KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyBxRChpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIG9CKHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP1F6Okp6LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgcUQocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGFCKCl7cmV0dXJuIG5ldyBxRCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChLeiksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gc0IoKXtyZXR1cm4gbmV3IHFEKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoS3opLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIGxCKHQsZSxuKXt2YXIgaT10aGlzLmVudGVyKCkscj10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTppLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYocj1lKHIpKSxudWxsPT1uP28ucmVtb3ZlKCk6bihvKSxpJiZyP2kubWVyZ2Uocikub3JkZXIoKTpyfSxtZXJnZTpmdW5jdGlvbiBjQih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBxRChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiB1Qigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJjReaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gaEIodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD10RCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgcUQocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIGRCKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBwQigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gZkIoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIG1CKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBnQigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBfQih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24geUIodCxlKXt2YXIgbj1Weih0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/bkQ6ZUQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9hRDpvRDpuLmxvY2FsP3JEOmlEKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gdkIodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2xEOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3VEOmNEKSh0LGUsbnVsbD09bj8iIjpuKSk6aEQodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIGJCKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/ZEQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZkQ6cEQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIHhCKHQsZSl7dmFyIG49bUQodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9Z0QodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/d0Q6ZT9iRDp4RCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gd0IodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/U0Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0VEOk1EKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gU0IodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/VEQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0FEOkNEKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBNQigpe3JldHVybiB0aGlzLmVhY2goa0QpfSxsb3dlcjpmdW5jdGlvbiBFQigpe3JldHVybiB0aGlzLmVhY2goUEQpfSxhcHBlbmQ6ZnVuY3Rpb24gVEIodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHeih0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gQ0IodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Okd6KHQpLGk9bnVsbD09ZT9MRDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOnF6KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gQUIoKXtyZXR1cm4gdGhpcy5lYWNoKElEKX0sY2xvbmU6ZnVuY3Rpb24ga0IodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/UkQ6TkQpfSxkYXR1bTpmdW5jdGlvbiBQQih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIExCKHQsZSxuKXt2YXIgaSxyLG89SEQodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/VkQ6RkQsbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBJQih0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP0dEOmpEKSh0LGUpKX19O3ZhciBOQj0uNyxSQj0xL05CLE9CPSJcXHMqKFsrLV0/XFxkKylcXHMqIix6Qj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixEQj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsQkI9L14jKFswLTlhLWZdezMsOH0pJC8sSEI9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW09CLE9CLE9CXSsiXFwpJCIpLEZCPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tEQixEQixEQl0rIlxcKSQiKSxWQj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW09CLE9CLE9CLHpCXSsiXFwpJCIpLFVCPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbREIsREIsREIsekJdKyJcXCkkIiksakI9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW3pCLERCLERCXSsiXFwpJCIpLEdCPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbekIsREIsREIsekJdKyJcXCkkIiksV0I9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gcUIoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBZQigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFhCKHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPUJCLmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/JEIoZSk6Mz09PW4/bmV3IFFCKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9LQihlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9LQihlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPUhCLmV4ZWModCkpP25ldyBRQihlWzFdLGVbMl0sZVszXSwxKTooZT1GQi5leGVjKHQpKT9uZXcgUUIoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9VkIuZXhlYyh0KSk/S0IoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9VUIuZXhlYyh0KSk/S0IoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9akIuZXhlYyh0KSk/aUgoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1HQi5leGVjKHQpKT9pSChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOldCLmhhc093blByb3BlcnR5KHQpPyRCKFdCW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgUUIoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiAkQih0KXtyZXR1cm4gbmV3IFFCKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBLQih0LGUsbixpKXtyZXR1cm4gaTw9MCYmKHQ9ZT1uPU5hTiksbmV3IFFCKHQsZSxuLGkpfWZ1bmN0aW9uIFpCKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZUJ8fCh0PVhCKHQpKSx0P25ldyBRQigodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgUUJ9ZnVuY3Rpb24gSkIodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1pCKHQpOm5ldyBRQih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gUUIodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIHRIKCl7cmV0dXJuIiMiK25IKHRoaXMucikrbkgodGhpcy5nKStuSCh0aGlzLmIpfWZ1bmN0aW9uIGVIKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gbkgodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBpSCh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IG9IKHQsZSxuLGkpfWZ1bmN0aW9uIHJIKHQpe2lmKHQgaW5zdGFuY2VvZiBvSClyZXR1cm4gbmV3IG9IKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGVCfHwodD1YQih0KSksIXQpcmV0dXJuIG5ldyBvSDtpZih0IGluc3RhbmNlb2Ygb0gpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBvSChhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIG9IKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBhSCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gc0godCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGxIKHQpe3JldHVybiAxPT0odD0rdCk/Y0g6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6c0goaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gY0godCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX0pKHQsbik6c0goaXNOYU4odCk/ZTp0KX1RRChlQixYQix7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpxQixmb3JtYXRIZXg6cUIsZm9ybWF0SHNsOmZ1bmN0aW9uIHVIKCl7cmV0dXJuIHJIKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6WUIsdG9TdHJpbmc6WUJ9KSxRRChRQixKQix0QihlQix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SQjpNYXRoLnBvdyhSQix0KSxuZXcgUUIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/TkI6TWF0aC5wb3coTkIsdCksbmV3IFFCKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6dEgsZm9ybWF0SGV4OnRILGZvcm1hdFJnYjplSCx0b1N0cmluZzplSH0pKSxRRChvSCwoZnVuY3Rpb24gaEgodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JIKHQpOm5ldyBvSCh0LGUsbixudWxsPT1pPzE6aSl9KSx0QihlQix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SQjpNYXRoLnBvdyhSQix0KSxuZXcgb0godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9OQjpNYXRoLnBvdyhOQix0KSxuZXcgb0godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBRQihhSCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxhSCh0LHIsaSksYUgodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgZEg9KGZ1bmN0aW9uIHQoZSl7dmFyIG49bEgoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9SkIodCkpLnIsKGU9SkIoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1jSCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIHBIKHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIGZIKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09eEgodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBtSCh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gZ0godCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gX0godCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPXhIKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHlIPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyx2SD1uZXcgUmVnRXhwKHlILnNvdXJjZSwiZyIpO2Z1bmN0aW9uIGJIKHQsZSl7dmFyIG4saSxyLG89eUgubGFzdEluZGV4PXZILmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj15SC5leGVjKHQpKSYmKGk9dkguZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmdIKG4saSl9KSksbz12SC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24geEgodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP3NIKGUpOigibnVtYmVyIj09PWk/Z0g6InN0cmluZyI9PT1pPyhuPVhCKGUpKT8oZT1uLGRIKTpiSDplIGluc3RhbmNlb2YgWEI/ZEg6ZSBpbnN0YW5jZW9mIERhdGU/bUg6KGZ1bmN0aW9uIHIodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/cEg6QXJyYXkuaXNBcnJheShlKT9mSDoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/X0g6Z0gpKHQsZSl9dmFyIHdILFNILE1ILEVILFRIPTE4MC9NYXRoLlBJLENIPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIEFIKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKlRILHNrZXdYOk1hdGguYXRhbihsKSpUSCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24ga0godCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpnSCh0LHIpfSx7aTpsLTIseDpnSChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmdIKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpnSCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6Z0godCxuKX0se2k6cy0yLHg6Z0goZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIFBILExILElIPWtIKChmdW5jdGlvbiBOSCh0KXtyZXR1cm4ibm9uZSI9PT10P0NIOih3SHx8KHdIPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLFNIPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxNSD1kb2N1bWVudC5kZWZhdWx0Vmlldyksd0guc3R5bGUudHJhbnNmb3JtPXQsdD1NSC5nZXRDb21wdXRlZFN0eWxlKFNILmFwcGVuZENoaWxkKHdIKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxTSC5yZW1vdmVDaGlsZCh3SCksQUgoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLFJIPWtIKChmdW5jdGlvbiBPSCh0KXtyZXR1cm4gbnVsbD09dD9DSDooRUh8fChFSD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxFSC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9RUgudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/QUgoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6Q0gpfSksIiwgIiwiKSIsIikiKSx6SD0wLERIPTAsQkg9MCxISD0wLEZIPTAsVkg9MCxVSD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxqSD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBHSCgpe3JldHVybiBGSHx8KGpIKFdIKSxGSD1VSC5ub3coKStWSCl9ZnVuY3Rpb24gV0goKXtGSD0wfWZ1bmN0aW9uIHFIKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBZSCh0LGUsbil7dmFyIGk9bmV3IHFIO3JldHVybiBpLnJlc3RhcnQodCxlLG4pLGl9ZnVuY3Rpb24gWEgoKXtGSD0oSEg9VUgubm93KCkpK1ZILHpIPURIPTA7dHJ5eyEoZnVuY3Rpb24gdCgpe0dIKCksKyt6SDtmb3IodmFyIHQsZT1QSDtlOykodD1GSC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tekh9KSgpfWZpbmFsbHl7ekg9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj1QSCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpQSD1lKTtMSD10LEtIKGkpfSkoKSxGSD0wfX1mdW5jdGlvbiAkSCgpe3ZhciB0PVVILm5vdygpLGU9dC1ISDtlPjFlMyYmKFZILT1lLEhIPXQpfWZ1bmN0aW9uIEtIKHQpe3pIfHwoREgmJihESD1jbGVhclRpbWVvdXQoREgpKSx0LUZIPjI0Pyh0PDEvMCYmKERIPXNldFRpbWVvdXQoWEgsdC1VSC5ub3coKS1WSCkpLEJIJiYoQkg9Y2xlYXJJbnRlcnZhbChCSCkpKTooQkh8fChISD1VSC5ub3coKSxCSD1zZXRJbnRlcnZhbCgkSCwxZTMpKSx6SD0xLGpIKFhIKSkpfWZ1bmN0aW9uIFpIKHQsZSxuKXt2YXIgaT1uZXcgcUg7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1xSC5wcm90b3R5cGU9WUgucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxSCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/R0goKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8TEg9PT10aGlzfHwoTEg/TEguX25leHQ9dGhpczpQSD10aGlzLExIPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sS0goKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsS0goKSl9fTt2YXIgSkg9UnooInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksUUg9W107ZnVuY3Rpb24gdEYodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX1mdW5jdGlvbiBhKG8pe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBsKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gWkgoYSk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKX1pZihaSCgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQocyxuLmRlbGF5LG4udGltZSkscyhvKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLGk9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLGM9MCx1PS0xO2M8aDsrK2MpKGQ9bi50d2VlbltjXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKGlbKyt1XT1kKTtpLmxlbmd0aD11KzF9fWZ1bmN0aW9uIHMoZSl7Zm9yKHZhciByPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChsKSxuLnN0YXRlPTUsMSksbz0tMSxhPWkubGVuZ3RoOysrbzxhOylpW29dLmNhbGwodCxyKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxsKCkpfWZ1bmN0aW9uIGwoKXtmb3IodmFyIGkgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSByW2VdLHIpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1yW2VdPW4sbi50aW1lcj1ZSChvLDAsbi50aW1lKX0pKHQsbix7bmFtZTplLGluZGV4OmksZ3JvdXA6cixvbjpKSCx0d2VlbjpRSCx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gZUYodCxlKXt2YXIgbj1pRih0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIG5GKHQsZSl7dmFyIG49aUYodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gaUYodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiByRih0LGUpe3ZhciBuLGkscixvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKHIgaW4gZT1udWxsPT1lP251bGw6ZSsiIixvKShuPW9bcl0pLm5hbWU9PT1lPyhpPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgb1tyXSk6YT0hMTthJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIG9GKHQsZSl7dmFyIG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1uRih0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIGFGKHQsZSxuKXt2YXIgaSxyO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1uRih0aGlzLHQpLGE9by50d2VlbjtpZihhIT09aSl7cj0oaT1hKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGw9MCxjPXIubGVuZ3RoO2w8YzsrK2wpaWYocltsXS5uYW1lPT09ZSl7cltsXT1zO2JyZWFrfWw9PT1jJiZyLnB1c2gocyl9by50d2Vlbj1yfX1mdW5jdGlvbiBzRih0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1uRih0aGlzLGkpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBpRih0LGkpLnZhbHVlW2VdfX1mdW5jdGlvbiBsRih0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/Z0g6ZSBpbnN0YW5jZW9mIFhCP2RIOihuPVhCKGUpKT8oZT1uLGRIKTpiSCkodCxlKX1mdW5jdGlvbiBjRih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gdUYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBoRih0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBkRih0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gcEYodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PShzPWwrIiIpP251bGw6YT09PWkmJnM9PT1yP286KHI9cyxvPWUoaT1hLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gZkYodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBtRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gZ0YodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBfRih0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJmdGKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiB5Rih0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJm1GKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiB2Rih0LGUpe3JldHVybiBmdW5jdGlvbigpe2VGKHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBiRih0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7ZUYodGhpcyx0KS5kZWxheT1lfX1mdW5jdGlvbiB4Rih0LGUpe3JldHVybiBmdW5jdGlvbigpe25GKHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB3Rih0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7bkYodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiBTRih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtuRih0aGlzLHQpLmVhc2U9ZX19ZnVuY3Rpb24gTUYodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9lRjpuRjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1vKHRoaXMsdCkscz1hLm9uO3MhPT1pJiYocj0oaT1zKS5jb3B5KCkpLm9uKGUsbiksYS5vbj1yfX12YXIgRUY9WUQucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIFRGKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIENGKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLGkpLG4pfX1mdW5jdGlvbiBBRih0LGUsbil7dmFyIGkscjtmdW5jdGlvbiBvKCl7dmFyIG89ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1yJiYoaT0ocj1vKSYmQ0YodCxvLG4pKSxpfXJldHVybiBvLl92YWx1ZT1lLG99ZnVuY3Rpb24ga0YodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIFBGKHQpe3ZhciBlLG47ZnVuY3Rpb24gaSgpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09biYmKGU9KG49aSkmJmtGKGkpKSxlfXJldHVybiBpLl92YWx1ZT10LGl9dmFyIExGPTA7ZnVuY3Rpb24gSUYodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIE5GKCl7cmV0dXJuKytMRn12YXIgUkY9WUQucHJvdG90eXBlO0lGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SUYsc2VsZWN0OmZ1bmN0aW9uIE9GKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cXoodCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbCxjPWlbYV0sdT1jLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWNbZF0pJiYobD10LmNhbGwocyxzLl9fZGF0YV9fLGQsYykpJiYoIl9fZGF0YV9fImluIHMmJihsLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZF09bCx0RihoW2RdLGUsbixkLGgsaUYocyxuKSkpO3JldHVybiBuZXcgSUYobyx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbiB6Rih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVh6KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPHI7KytzKWZvcih2YXIgbCxjPWlbc10sdT1jLmxlbmd0aCxoPTA7aDx1OysraClpZihsPWNbaF0pe2Zvcih2YXIgZCxwPXQuY2FsbChsLGwuX19kYXRhX18saCxjKSxmPWlGKGwsbiksbT0wLGc9cC5sZW5ndGg7bTxnOysrbSkoZD1wW21dKSYmdEYoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBJRihvLGEsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIERGKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0keih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgSUYoaSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbiBCRih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBJRihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBIRigpe3JldHVybiBuZXcgRUYodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIEZGKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPU5GKCksaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpaWYoYT1zW2NdKXt2YXIgdT1pRihhLGUpO3RGKGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgSUYoaSx0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6UkYuY2FsbCxub2RlczpSRi5ub2Rlcyxub2RlOlJGLm5vZGUsc2l6ZTpSRi5zaXplLGVtcHR5OlJGLmVtcHR5LGVhY2g6UkYuZWFjaCxvbjpmdW5jdGlvbiBWRih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aUYodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKE1GKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24gVUYodCxlKXt2YXIgbj1Weih0KSxpPSJ0cmFuc2Zvcm0iPT09bj9SSDpsRjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9mRjpwRikobixpLHNGKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP3VGOmNGKShuKToobi5sb2NhbD9kRjpoRikobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIGpGKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgaT1Weih0KTtyZXR1cm4gdGhpcy50d2VlbihuLChpLmxvY2FsP19GOnlGKShpLGUpKX0sc3R5bGU6ZnVuY3Rpb24gR0YodCxlLG4pe3ZhciBpPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP0lIOmxGO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiByKHQsZSl7dmFyIG4saSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWhEKHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxoRCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsVEYodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBhKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9aEQodGhpcyx0KSxzPW4odGhpcyksbD1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsPXM9aEQodGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxzRih0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKChmdW5jdGlvbiBvKHQsZSl7dmFyIG4saSxyLG8sYT0ic3R5bGUuIitlLHM9ImVuZC4iK2E7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9bkYodGhpcyx0KSxjPWwub24sdT1udWxsPT1sLnZhbHVlW2FdP298fChvPVRGKGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1oRCh0aGlzLHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19KSh0LGksZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24gV0YodCxlLG4pe3ZhciBpPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihpPXRoaXMudHdlZW4oaSkpJiZpLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKGksbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGksQUYodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIHFGKHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKHNGKHRoaXMsInRleHQiLHQpKTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fSkobnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbiBZRih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsUEYodCkpfSxyZW1vdmU6ZnVuY3Rpb24gWEYoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PWUpcmV0dXJuO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9fSkodGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24gJEYodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPWlGKHRoaXMubm9kZSgpLG4pLnR3ZWVuLG89MCxhPXIubGVuZ3RoO288YTsrK28paWYoKGk9cltvXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9vRjphRikobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gS0YodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD92RjpiRikoZSx0KSk6aUYodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIFpGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/eEY6d0YpKGUsdCkpOmlGKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIEpGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChTRihlLHQpKTppRih0aGlzLm5vZGUoKSxlKS5lYXNlfSxlbmQ6ZnVuY3Rpb24gUUYoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPW5GKHRoaXMsaSkscj1uLm9uO3IhPT10JiYoKGU9KHQ9cikuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2gobCkpLG4ub249ZX0pKX0pKX19O3ZhciB0Vj17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6cWZ9O2Z1bmN0aW9uIGVWKHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHRWLnRpbWU9R0goKSx0VjtyZXR1cm4gbn1mdW5jdGlvbiBuVih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gaVYodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zZWxlY3Rpb249bn1mdW5jdGlvbiByVigpe3pELnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIG9WKCl7ekQucHJldmVudERlZmF1bHQoKSx6RC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1ZRC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIGFWKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7ckYodGhpcyx0KX0pKX0sWUQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gc1YodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgSUY/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1ORigpLChuPXRWKS50aW1lPUdIKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmdEYoYSx0LGUsYyxzLG58fGVWKGEsZSkpO3JldHVybiBuZXcgSUYoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBsVj17bmFtZToiZHJhZyJ9LGNWPXtuYW1lOiJzcGFjZSJ9LHVWPXtuYW1lOiJoYW5kbGUifSxoVj17bmFtZToiY2VudGVyIn0sZFY9e25hbWU6IngiLGhhbmRsZXM6WyJlIiwidyJdLm1hcChiViksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmW1t0WzBdLGVbMF1bMV1dLFt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LHBWPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoYlYpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJltbZVswXVswXSx0WzBdXSxbZVsxXVswXSx0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxmVj17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwiZSIsInMiLCJ3IiwibnciLCJuZSIsInNlIiwic3ciXS5tYXAoYlYpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxtVj17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sZ1Y9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LF9WPXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSx5Vj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSx2Vj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiBiVih0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiB4Vigpe3JldHVybiF6RC5idXR0b259ZnVuY3Rpb24gd1YoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm5bWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gU1YodCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiBNVih0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfWZ1bmN0aW9uIEVWKHQpe3ZhciBlLG49d1YsaT14VixyPVJ6KGEsInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxvPTY7ZnVuY3Rpb24gYShlKXt2YXIgbj1lLnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbYlYoIm92ZXJsYXkiKV0pO24uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsbVYub3ZlcmxheSkubWVyZ2UobikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1TVih0aGlzKS5leHRlbnQ7WEQodGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLGUuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbYlYoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsbVYuc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIGk9ZS5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKHQuaGFuZGxlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pKTtpLmV4aXQoKS5yZW1vdmUoKSxpLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIit0LnR5cGV9KSkuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuIG1WW3QudHlwZV19KSksZS5lYWNoKHMpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2ggdG91Y2hzdGFydC5icnVzaCIsdSl9ZnVuY3Rpb24gcygpe3ZhciB0PVhEKHRoaXMpLGU9U1YodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1vLzI6ZVswXVswXS1vLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLW8vMjplWzBdWzFdLW8vMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStvOm99KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK286b30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdC5fX2JydXNoLmVtaXR0ZXJ8fG5ldyBjKHQsZSl9ZnVuY3Rpb24gYyh0LGUpe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTB9ZnVuY3Rpb24gdSgpe2lmKHpELnRvdWNoZXMpe2lmKHpELmNoYW5nZWRUb3VjaGVzLmxlbmd0aDx6RC50b3VjaGVzLmxlbmd0aClyZXR1cm4gb1YoKX1lbHNlIGlmKGUpcmV0dXJuO2lmKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixyLG8sYSxjLHUsaCxkLHAsZixtLGcsXyx5PXRoaXMsdj16RC50YXJnZXQuX19kYXRhX18udHlwZSxiPSJzZWxlY3Rpb24iPT09KHpELm1ldGFLZXk/dj0ib3ZlcmxheSI6dik/bFY6ekQuYWx0S2V5P2hWOnVWLHg9dD09PXBWP251bGw6eVZbdl0sdz10PT09ZFY/bnVsbDp2Vlt2XSxTPVNWKHkpLE09Uy5leHRlbnQsRT1TLnNlbGVjdGlvbixUPU1bMF1bMF0sQz1NWzBdWzFdLEE9TVsxXVswXSxrPU1bMV1bMV0sUD14JiZ3JiZ6RC5zaGlmdEtleSxMPSREKHkpLEk9TCxOPWwoeSxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCk7Im92ZXJsYXkiPT09dj9TLnNlbGVjdGlvbj1FPVtbbj10PT09cFY/VDpMWzBdLG89dD09PWRWP0M6TFsxXV0sW2M9dD09PXBWP0E6bixoPXQ9PT1kVj9rOm9dXToobj1FWzBdWzBdLG89RVswXVsxXSxjPUVbMV1bMF0saD1FWzFdWzFdKSxyPW4sYT1vLHU9YyxkPWg7dmFyIFI9WEQoeSkuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksTz1SLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLG1WW3ZdKTtpZih6RC50b3VjaGVzKVIub24oInRvdWNobW92ZS5icnVzaCIsRCwhMCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixILCEwKTtlbHNle3ZhciB6PVhEKHpELnZpZXcpLm9uKCJrZXlkb3duLmJydXNoIixGLCEwKS5vbigia2V5dXAuYnJ1c2giLFYsITApLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEQsITApLm9uKCJtb3VzZXVwLmJydXNoIixILCEwKTtaRCh6RC52aWV3KX1yVigpLHJGKHkpLHMuY2FsbCh5KSxOLnN0YXJ0KCl9ZnVuY3Rpb24gRCgpe3ZhciB0PSREKHkpOyFQfHxnfHxffHwoTWF0aC5hYnModFswXS1JWzBdKT5NYXRoLmFicyh0WzFdLUlbMV0pP189ITA6Zz0hMCksST10LG09ITAsb1YoKSxCKCl9ZnVuY3Rpb24gQigpe3ZhciB0O3N3aXRjaChwPUlbMF0tTFswXSxmPUlbMV0tTFsxXSxiKXtjYXNlIGNWOmNhc2UgbFY6eCYmKHA9TWF0aC5tYXgoVC1uLE1hdGgubWluKEEtYyxwKSkscj1uK3AsdT1jK3ApLHcmJihmPU1hdGgubWF4KEMtbyxNYXRoLm1pbihrLWgsZikpLGE9bytmLGQ9aCtmKTticmVhaztjYXNlIHVWOng8MD8ocD1NYXRoLm1heChULW4sTWF0aC5taW4oQS1uLHApKSxyPW4rcCx1PWMpOng+MCYmKHA9TWF0aC5tYXgoVC1jLE1hdGgubWluKEEtYyxwKSkscj1uLHU9YytwKSx3PDA/KGY9TWF0aC5tYXgoQy1vLE1hdGgubWluKGstbyxmKSksYT1vK2YsZD1oKTp3PjAmJihmPU1hdGgubWF4KEMtaCxNYXRoLm1pbihrLWgsZikpLGE9byxkPWgrZik7YnJlYWs7Y2FzZSBoVjp4JiYocj1NYXRoLm1heChULE1hdGgubWluKEEsbi1wKngpKSx1PU1hdGgubWF4KFQsTWF0aC5taW4oQSxjK3AqeCkpKSx3JiYoYT1NYXRoLm1heChDLE1hdGgubWluKGssby1mKncpKSxkPU1hdGgubWF4KEMsTWF0aC5taW4oayxoK2YqdykpKX11PHImJih4Kj0tMSx0PW4sbj1jLGM9dCx0PXIscj11LHU9dCx2IGluIGdWJiZPLmF0dHIoImN1cnNvciIsbVZbdj1nVlt2XV0pKSxkPGEmJih3Kj0tMSx0PW8sbz1oLGg9dCx0PWEsYT1kLGQ9dCx2IGluIF9WJiZPLmF0dHIoImN1cnNvciIsbVZbdj1fVlt2XV0pKSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLGcmJihyPUVbMF1bMF0sdT1FWzFdWzBdKSxfJiYoYT1FWzBdWzFdLGQ9RVsxXVsxXSksRVswXVswXT09PXImJkVbMF1bMV09PT1hJiZFWzFdWzBdPT09dSYmRVsxXVsxXT09PWR8fChTLnNlbGVjdGlvbj1bW3IsYV0sW3UsZF1dLHMuY2FsbCh5KSxOLmJydXNoKCkpfWZ1bmN0aW9uIEgoKXtpZihyVigpLHpELnRvdWNoZXMpe2lmKHpELnRvdWNoZXMubGVuZ3RoKXJldHVybjtlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbH0pLDUwMCksUi5vbigidG91Y2htb3ZlLmJydXNoIHRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixudWxsKX1lbHNlIEpEKHpELnZpZXcsbSksei5vbigia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaCIsbnVsbCk7Ui5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLE8uYXR0cigiY3Vyc29yIixtVi5vdmVybGF5KSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLE1WKEUpJiYoUy5zZWxlY3Rpb249bnVsbCxzLmNhbGwoeSkpLE4uZW5kKCl9ZnVuY3Rpb24gRigpe3N3aXRjaCh6RC5rZXlDb2RlKXtjYXNlIDE2OlA9eCYmdzticmVhaztjYXNlIDE4OmI9PT11ViYmKHgmJihjPXUtcCp4LG49citwKngpLHcmJihoPWQtZip3LG89YStmKncpLGI9aFYsQigpKTticmVhaztjYXNlIDMyOmIhPT11ViYmYiE9PWhWfHwoeDwwP2M9dS1wOng+MCYmKG49ci1wKSx3PDA/aD1kLWY6dz4wJiYobz1hLWYpLGI9Y1YsTy5hdHRyKCJjdXJzb3IiLG1WLnNlbGVjdGlvbiksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1vVigpfWZ1bmN0aW9uIFYoKXtzd2l0Y2goekQua2V5Q29kZSl7Y2FzZSAxNjpQJiYoZz1fPVA9ITEsQigpKTticmVhaztjYXNlIDE4OmI9PT1oViYmKHg8MD9jPXU6eD4wJiYobj1yKSx3PDA/aD1kOnc+MCYmKG89YSksYj11VixCKCkpO2JyZWFrO2Nhc2UgMzI6Yj09PWNWJiYoekQuYWx0S2V5Pyh4JiYoYz11LXAqeCxuPXIrcCp4KSx3JiYoaD1kLWYqdyxvPWErZip3KSxiPWhWKTooeDwwP2M9dTp4PjAmJihuPXIpLHc8MD9oPWQ6dz4wJiYobz1hKSxiPXVWKSxPLmF0dHIoImN1cnNvciIsbVZbdl0pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59b1YoKX19ZnVuY3Rpb24gaCgpe3ZhciBlPXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gZS5leHRlbnQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS5kaW09dCxlfXJldHVybiBhLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7bCh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXtsKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1lLl9fYnJ1c2gscj1sKGUsYXJndW1lbnRzKSxvPWkuc2VsZWN0aW9uLGE9dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGkuZXh0ZW50KSxjPXhIKG8sYSk7ZnVuY3Rpb24gdSh0KXtpLnNlbGVjdGlvbj0xPT09dCYmTVYoYSk/bnVsbDpjKHQpLHMuY2FsbChlKSxyLmJydXNoKCl9cmV0dXJuIG8mJmE/dTp1KDEpfSkpOmUuZWFjaCgoZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLHI9ZS5fX2JydXNoLG89dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KGUsaSk6bixyLmV4dGVudCksYT1sKGUsaSkuYmVmb3Jlc3RhcnQoKTtyRihlKSxyLnNlbGVjdGlvbj1udWxsPT1vfHxNVihvKT9udWxsOm8scy5jYWxsKGUpLGEuc3RhcnQoKS5icnVzaCgpLmVuZCgpfSkpfSxjLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnRpbmcmJih0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKGUpeyEoZnVuY3Rpb24gbih0LGUsaSxyKXt2YXIgbz16RDt0LnNvdXJjZUV2ZW50PXpELHpEPXQ7dHJ5e3JldHVybiBlLmFwcGx5KGkscil9ZmluYWxseXt6RD1vfX0pKG5ldyBpVihhLGUsdC5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxyLmFwcGx5LHIsW2UsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sYS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpuVihbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksYSk6bn0sYS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpuVighIXQpLGEpOml9LGEuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxhKTpvfSxhLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9ci5vbi5hcHBseShyLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1yP2E6dH0sYX1mdW5jdGlvbiBUVih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBDVih0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb30hKGZ1bmN0aW9uIEFWKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBUVih0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19KShUVik7dmFyIGtWPU1hdGguY29zLFBWPU1hdGguc2luLExWPU1hdGguUEksSVY9TFYvMixOVj0yKkxWLFJWPU1hdGgubWF4O2Z1bmN0aW9uIE9WKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19dmFyIHpWPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBEVih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIEJWPU1hdGguUEksSFY9MipCVixGVj0xZS02LFZWPUhWLUZWO2Z1bmN0aW9uIFVWKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24galYoKXtyZXR1cm4gbmV3IFVWfWZ1bmN0aW9uIEdWKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBXVih0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gcVYodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIFlWKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gWFYodCl7cmV0dXJuIHQuZW5kQW5nbGV9VVYucHJvdG90eXBlPWpWLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VVYsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPkZWKWlmKE1hdGguYWJzKHUqcy1sKmMpPkZWJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKEJWLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPkZWJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5GVnx8TWF0aC5hYnModGhpcy5feTEtYyk+RlYpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVIVitIViksaD5WVj90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5GViYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49QlYpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgJFY9IiQiO2Z1bmN0aW9uIEtWKCl7fWZ1bmN0aW9uIFpWKHQsZSl7dmFyIG49bmV3IEtWO2lmKHQgaW5zdGFuY2VvZiBLVil0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIEpWKCl7cmV0dXJue319ZnVuY3Rpb24gUVYodCxlLG4pe3RbZV09bn1mdW5jdGlvbiB0VSgpe3JldHVybiBaVigpfWZ1bmN0aW9uIGVVKHQsZSxuKXt0LnNldChlLG4pfWZ1bmN0aW9uIG5VKCl7fUtWLnByb3RvdHlwZT1aVi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOktWLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gJFYrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbJFYrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzWyRWK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPSRWK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PSRWJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09JFYmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT0kViYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT0kVilyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09JFYmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIGlVPVpWLnByb3RvdHlwZTtmdW5jdGlvbiByVSh0LGUpe3ZhciBuPW5ldyBuVTtpZih0IGluc3RhbmNlb2YgblUpdC5lYWNoKChmdW5jdGlvbih0KXtuLmFkZCh0KX0pKTtlbHNlIGlmKHQpe3ZhciBpPS0xLHI9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxyOyluLmFkZCh0W2ldKTtlbHNlIGZvcig7KytpPHI7KW4uYWRkKGUodFtpXSxpLHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBvVSh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gYVUodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gc1UoKXt9blUucHJvdG90eXBlPXJVLnByb3RvdHlwZT17Y29uc3RydWN0b3I6blUsaGFzOmlVLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbJFYrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6aVUucmVtb3ZlLGNsZWFyOmlVLmNsZWFyLHZhbHVlczppVS5rZXlzLHNpemU6aVUuc2l6ZSxlbXB0eTppVS5lbXB0eSxlYWNoOmlVLmVhY2h9O3ZhciBsVT0uNyxjVT0xL2xVLHVVPSJcXHMqKFsrLV0/XFxkKylcXHMqIixoVT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixkVT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIscFU9L14jKFswLTlhLWZdezN9KSQvLGZVPS9eIyhbMC05YS1mXXs2fSkkLyxtVT1uZXcgUmVnRXhwKCJecmdiXFwoIitbdVUsdVUsdVVdKyJcXCkkIiksZ1U9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2RVLGRVLGRVXSsiXFwpJCIpLF9VPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbdVUsdVUsdVUsaFVdKyJcXCkkIikseVU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tkVSxkVSxkVSxoVV0rIlxcKSQiKSx2VT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbaFUsZFUsZFVdKyJcXCkkIiksYlU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1toVSxkVSxkVSxoVV0rIlxcKSQiKSx4VT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB3VSh0KXt2YXIgZTtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9cFUuZXhlYyh0KSk/bmV3IENVKChlPXBhcnNlSW50KGVbMV0sMTYpKT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOihlPWZVLmV4ZWModCkpP1NVKHBhcnNlSW50KGVbMV0sMTYpKTooZT1tVS5leGVjKHQpKT9uZXcgQ1UoZVsxXSxlWzJdLGVbM10sMSk6KGU9Z1UuZXhlYyh0KSk/bmV3IENVKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPV9VLmV4ZWModCkpP01VKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXlVLmV4ZWModCkpP01VKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPXZVLmV4ZWModCkpP0FVKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9YlUuZXhlYyh0KSk/QVUoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTp4VS5oYXNPd25Qcm9wZXJ0eSh0KT9TVSh4VVt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IENVKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gU1UodCl7cmV0dXJuIG5ldyBDVSh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gTVUodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBDVSh0LGUsbixpKX1mdW5jdGlvbiBFVSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHNVfHwodD13VSh0KSksdD9uZXcgQ1UoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IENVfWZ1bmN0aW9uIFRVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9FVSh0KTpuZXcgQ1UodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIENVKHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBBVSh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IExVKHQsZSxuLGkpfWZ1bmN0aW9uIGtVKHQpe2lmKHQgaW5zdGFuY2VvZiBMVSlyZXR1cm4gbmV3IExVKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHNVfHwodD13VSh0KSksIXQpcmV0dXJuIG5ldyBMVTtpZih0IGluc3RhbmNlb2YgTFUpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBMVShhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFBVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9rVSh0KTpuZXcgTFUodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIExVKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBJVSh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9b1Uoc1Usd1Use2Rpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKSsiIn19KSxvVShDVSxUVSxhVShzVSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9jVTpNYXRoLnBvdyhjVSx0KSxuZXcgQ1UodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bFU6TWF0aC5wb3cobFUsdCksbmV3IENVKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiAwPD10aGlzLnImJnRoaXMucjw9MjU1JiYwPD10aGlzLmcmJnRoaXMuZzw9MjU1JiYwPD10aGlzLmImJnRoaXMuYjw9MjU1JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSksb1UoTFUsUFUsYVUoc1Use2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Y1U6TWF0aC5wb3coY1UsdCksbmV3IExVKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bFU6TWF0aC5wb3cobFUsdCksbmV3IExVKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgQ1UoSVUodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksSVUodCxyLGkpLElVKHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9fSkpO3ZhciBOVT1NYXRoLlBJLzE4MCxSVT0xODAvTWF0aC5QSSxPVT0uOTUwNDcselU9MS4wODg4MyxEVT00LzI5LEJVPTYvMjksSFU9MypCVSpCVTtmdW5jdGlvbiBGVSh0KXtpZih0IGluc3RhbmNlb2YgVVUpcmV0dXJuIG5ldyBVVSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiAkVSl7dmFyIGU9dC5oKk5VO3JldHVybiBuZXcgVVUodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX10IGluc3RhbmNlb2YgQ1V8fCh0PUVVKHQpKTt2YXIgbj1xVSh0LnIpLGk9cVUodC5nKSxyPXFVKHQuYiksbz1qVSgoLjQxMjQ1NjQqbisuMzU3NTc2MSppKy4xODA0Mzc1KnIpL09VKSxhPWpVKCguMjEyNjcyOSpuKy43MTUxNTIyKmkrLjA3MjE3NSpyKS8xKTtyZXR1cm4gbmV3IFVVKDExNiphLTE2LDUwMCooby1hKSwyMDAqKGEtalUoKC4wMTkzMzM5Km4rLjExOTE5MippKy45NTAzMDQxKnIpL3pVKSksdC5vcGFjaXR5KX1mdW5jdGlvbiBWVSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/RlUodCk6bmV3IFVVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBVVSh0LGUsbixpKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24galUodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC9IVStEVX1mdW5jdGlvbiBHVSh0KXtyZXR1cm4gdD5CVT90KnQqdDpIVSoodC1EVSl9ZnVuY3Rpb24gV1UodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBxVSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBZVSh0KXtpZih0IGluc3RhbmNlb2YgJFUpcmV0dXJuIG5ldyAkVSh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBVVXx8KHQ9RlUodCkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqUlU7cmV0dXJuIG5ldyAkVShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBYVSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WVUodCk6bmV3ICRVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiAkVSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9b1UoVVUsVlUsYVUoc1Use2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVVUodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBVVSh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiB0PTEqR1UodCksbmV3IENVKFdVKDMuMjQwNDU0MiooZT1PVSpHVShlKSktMS41MzcxMzg1KnQtLjQ5ODUzMTQqKG49elUqR1UobikpKSxXVSgtLjk2OTI2NiplKzEuODc2MDEwOCp0Ky4wNDE1NTYqbiksV1UoLjA1NTY0MzQqZS0uMjA0MDI1OSp0KzEuMDU3MjI1MipuKSx0aGlzLm9wYWNpdHkpfX0pKSxvVSgkVSxYVSxhVShzVSx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyAkVSh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3ICRVKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIEZVKHRoaXMpLnJnYigpfX0pKTt2YXIgS1U9LS4xNDg2MSxaVT0xLjc4Mjc3LEpVPS0uMjkyMjcsUVU9LS45MDY0OSx0aj0xLjk3Mjk0LGVqPXRqKlFVLG5qPXRqKlpVLGlqPVpVKkpVLVFVKktVO2Z1bmN0aW9uIHJqKHQpe2lmKHQgaW5zdGFuY2VvZiBhailyZXR1cm4gbmV3IGFqKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIENVfHwodD1FVSh0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oaWoqbitlaioodC5yLzI1NSktbmoqZSkvLTUuOTYxNTEyMjkxMixyPW4taSxvPSh0aiooZS1pKS1KVSpyKS9RVSxhPU1hdGguc3FydChvKm8rcipyKS8odGoqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSpSVS0xMjA6TmFOO3JldHVybiBuZXcgYWooczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gb2oodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JqKHQpOm5ldyBhaih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gYWoodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfW9VKGFqLG9qLGFVKHNVLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2NVOk1hdGgucG93KGNVLHQpLG5ldyBhaih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2xVOk1hdGgucG93KGxVLHQpLG5ldyBhaih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqTlUsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IENVKDI1NSooZStuKihLVSppK1pVKnIpKSwyNTUqKGUrbiooSlUqaStRVSpyKSksMjU1KihlK24qKHRqKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgc2o9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gbGooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IGNqKGkpfWZ1bmN0aW9uIGNqKHQpe3RoaXMuXz10fWZ1bmN0aW9uIHVqKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBoaih0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIGRqKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1zaix0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9Y2oucHJvdG90eXBlPWxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Y2osb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPXVqKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPWRqKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09ZGooaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPWhqKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IGNqKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgcGo9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gZmooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgbWooaSl9ZnVuY3Rpb24gbWoodCl7dGhpcy5fPXR9ZnVuY3Rpb24gZ2oodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIF9qKHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24geWoodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPXBqLHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1tai5wcm90b3R5cGU9ZmoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjptaixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9Z2oodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09eWooaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT15aihpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49X2ooaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgbWoodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciB2aj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsYmo9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnZqLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24geGoodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksYmouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmJqW2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gd2oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT12aiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09dmo/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIFNqKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIE1qKHQpe3ZhciBlPXhqKHQpO3JldHVybihlLmxvY2FsP1NqOndqKShlKX1mdW5jdGlvbiBFaigpe31mdW5jdGlvbiBUaih0KXtyZXR1cm4gbnVsbD09dD9FajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIENqKCl7cmV0dXJuW119ZnVuY3Rpb24gQWoodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24ga2oodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9a2oucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpraixhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTtmdW5jdGlvbiBQaih0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcga2oodCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIExqKHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBraih0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIElqKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIE5qKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBSaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIE9qKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gemoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gRGoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIEJqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIEhqKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBGaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBWaih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIFVqKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIGpqKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8SGoodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gR2oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIFdqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBxaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBZaih0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gWGoodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgJGoodCl9ZnVuY3Rpb24gJGoodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPVlqKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gS2oodCxlKXtmb3IodmFyIG49WGoodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBaaih0LGUpe2Zvcih2YXIgbj1Yaih0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIEpqKHQpe3JldHVybiBmdW5jdGlvbigpe0tqKHRoaXMsdCl9fWZ1bmN0aW9uIFFqKHQpe3JldHVybiBmdW5jdGlvbigpe1pqKHRoaXMsdCl9fWZ1bmN0aW9uIHRHKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP0tqOlpqKSh0aGlzLHQpfX1mdW5jdGlvbiBlRygpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gbkcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBpRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gckcoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBvRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBhRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHNHKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIGxHKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gY0coKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB1Rygpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIGhHKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBkRygpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9JGoucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgcEc9e30sZkc9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChwRz17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gbUcodCxlLG4pe3JldHVybiB0PWdHKHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gZ0codCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1mRztmRz1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtmRz1yfX19ZnVuY3Rpb24gX0codCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24geUcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIHZHKHQsZSxuKXt2YXIgaT1wRy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP21HOmdHO3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGJHKHQsZSxuLGkpe3ZhciByPWZHO3Quc291cmNlRXZlbnQ9ZkcsZkc9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e2ZHPXJ9fWZ1bmN0aW9uIHhHKHQsZSxuKXt2YXIgaT1Iaih0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiB3Ryh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4Ryh0aGlzLHQsZSl9fWZ1bmN0aW9uIFNHKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHhHKHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBNRz1bbnVsbF07ZnVuY3Rpb24gRUcodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gVEcodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBFRyhbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEVHKFtbdF1dLE1HKX1mdW5jdGlvbiBDRygpe2Zvcih2YXIgdCxlPWZHO3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIEFHKHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24ga0codCl7dmFyIGU9Q0coKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksQUcodCxlKX1mdW5jdGlvbiBQRyh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9Q0coKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBBRyh0LGkpO3JldHVybiBudWxsfWZ1bmN0aW9uIExHKCl7Zkcuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gSUcoKXtmRy5wcmV2ZW50RGVmYXVsdCgpLGZHLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIE5HKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49VEcodCkub24oImRyYWdzdGFydC5kcmFnIixJRywhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixJRywhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gUkcodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPVRHKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLElHLCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gT0codCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHpHKHQsZSxuLGkscixvLGEscyxsLGMpe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zdWJqZWN0PW4sdGhpcy5pZGVudGlmaWVyPWksdGhpcy5hY3RpdmU9cix0aGlzLng9byx0aGlzLnk9YSx0aGlzLmR4PXMsdGhpcy5keT1sLHRoaXMuXz1jfWZ1bmN0aW9uIERHKCl7cmV0dXJuIWZHLmJ1dHRvbn1mdW5jdGlvbiBCRygpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gSEcodCl7cmV0dXJuIG51bGw9PXQ/e3g6ZkcueCx5OmZHLnl9OnR9ZnVuY3Rpb24gRkcoKXtyZXR1cm4ib250b3VjaHN0YXJ0ImluIHRoaXN9RUcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpFRyxzZWxlY3Q6ZnVuY3Rpb24gVkcodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVRqKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgRUcoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFVHKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbnVsbD09dD9DajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSkodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPVtdLG89W10sYT0wO2E8aTsrK2EpZm9yKHZhciBzLGw9blthXSxjPWwubGVuZ3RoLHU9MDt1PGM7Kyt1KShzPWxbdV0pJiYoci5wdXNoKHQuY2FsbChzLHMuX19kYXRhX18sdSxsKSksby5wdXNoKHMpKTtyZXR1cm4gbmV3IEVHKHIsbyl9LGZpbHRlcjpmdW5jdGlvbiBqRyh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19KSh0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109W10sdT0wO3U8bDsrK3UpKGE9c1t1XSkmJnQuY2FsbChhLGEuX19kYXRhX18sdSxzKSYmYy5wdXNoKGEpO3JldHVybiBuZXcgRUcocix0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBHRyh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9MajpQaixpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IEVHKHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBXRygpe3JldHVybiBuZXcgRUcodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoQWopLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIHFHKCl7cmV0dXJuIG5ldyBFRyh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKEFqKSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBZRyh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gWEcodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgRUcobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gJEcoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIEtHKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9SWopO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IEVHKHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBaRygpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gSkcoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIFFHKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiB0Vygpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gZVcoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gblcodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGlXKHQsZSl7dmFyIG49eGoodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP1JqOk5qOiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/Qmo6RGo6bi5sb2NhbD96ajpPaikobixlKSl9LHN0eWxlOmZ1bmN0aW9uIHJXKHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9GajoiZnVuY3Rpb24iPT10eXBlb2YgZT9VajpWaikodCxlLG51bGw9PW4/IiI6bikpOmpqKHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBvVyh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0dqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3FqOldqKSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBhVyh0LGUpe3ZhciBuPVlqKHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPVhqKHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP3RHOmU/Smo6UWopKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIHNXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2VHOigiZnVuY3Rpb24iPT10eXBlb2YgdD9pRzpuRykodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGxXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P3JHOigiZnVuY3Rpb24iPT10eXBlb2YgdD9hRzpvRykodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gY1coKXtyZXR1cm4gdGhpcy5lYWNoKHNHKX0sbG93ZXI6ZnVuY3Rpb24gdVcoKXtyZXR1cm4gdGhpcy5lYWNoKGxHKX0sYXBwZW5kOmZ1bmN0aW9uIGhXKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TWoodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIGRXKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpNaih0KSxpPW51bGw9PWU/Y0c6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpUaihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIHBXKCl7cmV0dXJuIHRoaXMuZWFjaCh1Ryl9LGNsb25lOmZ1bmN0aW9uIGZXKHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P2RHOmhHKX0sZGF0dW06ZnVuY3Rpb24gbVcodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBnVyh0LGUsbil7dmFyIGkscixvPV9HKHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP3ZHOnlHLG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gX1codCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9TRzp3RykodCxlKSl9fSx6Ry5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT10aGlzLl8/dGhpczp0fTt2YXIgeVc9e30sdlc9e307ZnVuY3Rpb24gYlcodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK2UrIl0ifSkpLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIHhXKHQpe3ZhciBlPW5ldyBSZWdFeHAoJ1siJyt0KyJcblxyXSIpLG49dC5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIGkodCxlKXt2YXIgaSxyPVtdLG89dC5sZW5ndGgsYT0wLHM9MCxsPW88PTAsYz0hMTtmdW5jdGlvbiB1KCl7aWYobClyZXR1cm4gdlc7aWYoYylyZXR1cm4gYz0hMSx5Vzt2YXIgZSxpLHI9YTtpZigzND09PXQuY2hhckNvZGVBdChyKSl7Zm9yKDthKys8byYmMzQhPT10LmNoYXJDb2RlQXQoYSl8fDM0PT09dC5jaGFyQ29kZUF0KCsrYSk7KTtyZXR1cm4oZT1hKT49bz9sPSEwOjEwPT09KGk9dC5jaGFyQ29kZUF0KGErKykpP2M9ITA6MTM9PT1pJiYoYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythKSx0LnNsaWNlKHIrMSxlLTEpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2E8bzspe2lmKDEwPT09KGk9dC5jaGFyQ29kZUF0KGU9YSsrKSkpYz0hMDtlbHNlIGlmKDEzPT09aSljPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2E7ZWxzZSBpZihpIT09biljb250aW51ZTtyZXR1cm4gdC5zbGljZShyLGUpfXJldHVybiBsPSEwLHQuc2xpY2UocixvKX1mb3IoMTA9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vLDEzPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbzsoaT11KCkpIT09dlc7KXtmb3IodmFyIGg9W107aSE9PXlXJiZpIT09dlc7KWgucHVzaChpKSxpPXUoKTtlJiZudWxsPT0oaD1lKGgscysrKSl8fHIucHVzaChoKX1yZXR1cm4gcn1mdW5jdGlvbiByKGUpe3JldHVybiBlLm1hcChvKS5qb2luKHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PXQ/IiI6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uIGEodCxlKXt2YXIgbixyLG89aSh0LChmdW5jdGlvbih0LGkpe2lmKG4pcmV0dXJuIG4odCxpLTEpO3I9dCxuPWU/KGZ1bmN0aW9uIG8odCxlKXt2YXIgbj1iVyh0KTtyZXR1cm4gZnVuY3Rpb24oaSxyKXtyZXR1cm4gZShuKGkpLHIsdCl9fSkodCxlKTpiVyh0KX0pKTtyZXR1cm4gby5jb2x1bW5zPXJ8fFtdLG99LHBhcnNlUm93czppLGZvcm1hdDpmdW5jdGlvbiBzKGUsbil7cmV0dXJuIG51bGw9PW4mJihuPShmdW5jdGlvbiBpKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGkgaW4gdClpIGluIGV8fG4ucHVzaChlW2ldPWkpfSkpLG59KShlKSksW24ubWFwKG8pLmpvaW4odCldLmNvbmNhdChlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbyhlW3RdKX0pKS5qb2luKHQpfSkpKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uIGwodCl7cmV0dXJuIHQubWFwKHIpLmpvaW4oIlxuIil9fX12YXIgd1c9eFcoIiwiKSxTVz13Vy5wYXJzZSxNVz13Vy5wYXJzZVJvd3MsRVc9d1cuZm9ybWF0LFRXPXdXLmZvcm1hdFJvd3MsQ1c9eFcoIlx0IiksQVc9Q1cucGFyc2Usa1c9Q1cucGFyc2VSb3dzLFBXPUNXLmZvcm1hdCxMVz1DVy5mb3JtYXRSb3dzO2Z1bmN0aW9uIElXKHQpe3JldHVybigodCo9Mik8PTE/dCp0Oi0tdCooMi10KSsxKS8yfWZ1bmN0aW9uIE5XKHQpe3JldHVybigodCo9Mik8PTE/dCp0KnQ6KHQtPTIpKnQqdCsyKS8yfXZhciBSVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksT1c9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMS1NYXRoLnBvdygxLXQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSx6Vz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3codCxlKToyLU1hdGgucG93KDItdCxlKSkvMn1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLERXPU1hdGguUEksQlc9RFcvMjtmdW5jdGlvbiBIVyh0KXtyZXR1cm4oMS1NYXRoLmNvcyhEVyp0KSkvMn1mdW5jdGlvbiBGVyh0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KDIsMTAqdC0xMCk6Mi1NYXRoLnBvdygyLDEwLTEwKnQpKS8yfWZ1bmN0aW9uIFZXKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBVVz00LzExLGpXPTcuNTYyNTtmdW5jdGlvbiBHVyh0KXtyZXR1cm4odD0rdCk8VVc/alcqdCp0OnQ8LjcyNzI3MjcyNzI3MjcyNzM/alcqKHQtPS41NDU0NTQ1NDU0NTQ1NDU0KSp0Ky43NTp0PC45MDkwOTA5MDkwOTA5MDkxP2pXKih0LT0uODE4MTgxODE4MTgxODE4MikqdCsuOTM3NTpqVyoodC09Ljk1NDU0NTQ1NDU0NTQ1NDYpKnQrLjk4NDM3NX12YXIgV1c9MS43MDE1OCxxVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiB0KnQqKChlKzEpKnQtZSl9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoV1cpLFlXPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuLS10KnQqKChlKzEpKnQrZSkrMX1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KShXVyksWFc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4oKHQqPTIpPDE/dCp0KigoZSsxKSp0LWUpOih0LT0yKSp0KigoZSsxKSp0K2UpKzIpLzJ9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoV1cpLCRXPTIqTWF0aC5QSSxLVz0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89JFcpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIGUqTWF0aC5wb3coMiwxMCotLXQpKk1hdGguc2luKChpLXQpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qJFcpfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksWlc9KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPSRXKTtmdW5jdGlvbiByKHQpe3JldHVybiAxLWUqTWF0aC5wb3coMiwtMTAqKHQ9K3QpKSpNYXRoLnNpbigodCtpKS9uKX1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKiRXKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLEpXPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz0kVyk7ZnVuY3Rpb24gcih0KXtyZXR1cm4oKHQ9Mip0LTEpPDA/ZSpNYXRoLnBvdygyLDEwKnQpKk1hdGguc2luKChpLXQpL24pOjItZSpNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigoaSt0KS9uKSkvMn1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKiRXKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpO2Z1bmN0aW9uIFFXKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB0cSgpe3JldHVybiAxZS02KihNYXRoLnJhbmRvbSgpLS41KX1mdW5jdGlvbiBlcSh0LGUsbixpKXtpZihpc05hTihlKXx8aXNOYU4obikpcmV0dXJuIHQ7dmFyIHIsbyxhLHMsbCxjLHUsaCxkLHA9dC5fcm9vdCxmPXtkYXRhOml9LG09dC5feDAsZz10Ll95MCxfPXQuX3gxLHk9dC5feTE7aWYoIXApcmV0dXJuIHQuX3Jvb3Q9Zix0O2Zvcig7cC5sZW5ndGg7KWlmKChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hLHI9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiByW2hdPWYsdDtpZihzPSt0Ll94LmNhbGwobnVsbCxwLmRhdGEpLGw9K3QuX3kuY2FsbChudWxsLHAuZGF0YSksZT09PXMmJm49PT1sKXJldHVybiBmLm5leHQ9cCxyP3JbaF09Zjp0Ll9yb290PWYsdDtkb3tyPXI/cltoXT1uZXcgQXJyYXkoNCk6dC5fcm9vdD1uZXcgQXJyYXkoNCksKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWF9d2hpbGUoKGg9dTw8MXxjKT09KGQ9KGw+PWEpPDwxfHM+PW8pKTtyZXR1cm4gcltkXT1wLHJbaF09Zix0fWZ1bmN0aW9uIG5xKHQsZSxuLGkscil7dGhpcy5ub2RlPXQsdGhpcy54MD1lLHRoaXMueTA9bix0aGlzLngxPWksdGhpcy55MT1yfWZ1bmN0aW9uIGlxKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHJxKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIG9xKHQsZSxuKXt2YXIgaT1uZXcgYXEobnVsbD09ZT9pcTplLG51bGw9PW4/cnE6bixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P2k6aS5hZGRBbGwodCl9ZnVuY3Rpb24gYXEodCxlLG4saSxyLG8pe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiBzcSh0KXtmb3IodmFyIGU9e2RhdGE6dC5kYXRhfSxuPWU7dD10Lm5leHQ7KW49bi5uZXh0PXtkYXRhOnQuZGF0YX07cmV0dXJuIGV9dmFyIGxxPW9xLnByb3RvdHlwZT1hcS5wcm90b3R5cGU7ZnVuY3Rpb24gY3EodCl7cmV0dXJuIHQueCt0LnZ4fWZ1bmN0aW9uIHVxKHQpe3JldHVybiB0LnkrdC52eX1scS5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBhcSh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9c3EoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1zcShlKSk7cmV0dXJuIG59LGxxLmFkZD1mdW5jdGlvbiBocSh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIGVxKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGxxLmFkZEFsbD1mdW5jdGlvbiBkcSh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbillcSh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30sbHEuY292ZXI9ZnVuY3Rpb24gcHEodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LGxxLmRhdGE9ZnVuY3Rpb24gZnEoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxscS5leHRlbnQ9ZnVuY3Rpb24gbXEodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LGxxLmZpbmQ9ZnVuY3Rpb24gZ3EodCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgbnEobSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBucShtWzNdLGcsXyxhLHMpLG5ldyBucShtWzJdLHIsXyxnLHMpLG5ldyBucShtWzFdLGcsbyxhLF8pLG5ldyBucShtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxscS5yZW1vdmU9ZnVuY3Rpb24gX3EodCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LGxxLnJlbW92ZUFsbD1mdW5jdGlvbiB5cSh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LGxxLnJvb3Q9ZnVuY3Rpb24gdnEoKXtyZXR1cm4gdGhpcy5fcm9vdH0sbHEuc2l6ZT1mdW5jdGlvbiBicSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGxxLnZpc2l0PWZ1bmN0aW9uIHhxKHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBucShsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgbnEobixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgbnEobixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgbnEobixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgbnEobixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LGxxLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24gd3EodCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IG5xKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IG5xKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IG5xKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IG5xKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IG5xKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LGxxLng9ZnVuY3Rpb24gU3EodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxscS55PWZ1bmN0aW9uIE1xKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIEVxPSIkIjtmdW5jdGlvbiBUcSgpe31mdW5jdGlvbiBDcSh0LGUpe3ZhciBuPW5ldyBUcTtpZih0IGluc3RhbmNlb2YgVHEpdC5lYWNoKChmdW5jdGlvbih0LGUpe24uc2V0KGUsdCl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgaSxyPS0xLG89dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysrcjxvOyluLnNldChyLHRbcl0pO2Vsc2UgZm9yKDsrK3I8bzspbi5zZXQoZShpPXRbcl0scix0KSxpKX1lbHNlIGlmKHQpZm9yKHZhciBhIGluIHQpbi5zZXQoYSx0W2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBBcSgpe31UcS5wcm90b3R5cGU9Q3EucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUcSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIEVxK3QgaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0VxK3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1tFcSt0XT1lLHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT1FcSt0O3JldHVybiBlIGluIHRoaXMmJmRlbGV0ZSB0aGlzW2VdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1FcSYmZGVsZXRlIHRoaXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJnQucHVzaChlLnNsaWNlKDEpKTtyZXR1cm4gdH0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUVxJiZ0LnB1c2godGhpc1tlXSk7cmV0dXJuIHR9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0pO3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09RXEmJisrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcylpZih0WzBdPT09RXEpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUVxJiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3ZhciBrcT1DcS5wcm90b3R5cGU7ZnVuY3Rpb24gUHEodCl7cmV0dXJuIHQuaW5kZXh9ZnVuY3Rpb24gTHEodCxlKXt2YXIgbj10LmdldChlKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrZSk7cmV0dXJuIG59QXEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpBcSxoYXM6a3EuaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tFcSsodCs9IiIpXT10LHRoaXN9LHJlbW92ZTprcS5yZW1vdmUsY2xlYXI6a3EuY2xlYXIsdmFsdWVzOmtxLmtleXMsc2l6ZTprcS5zaXplLGVtcHR5OmtxLmVtcHR5LGVhY2g6a3EuZWFjaH07dmFyIElxPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIE5xKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IFJxKGkpfWZ1bmN0aW9uIFJxKHQpe3RoaXMuXz10fWZ1bmN0aW9uIE9xKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiB6cSh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIERxKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1JcSx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9UnEucHJvdG90eXBlPU5xLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UnEsb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPU9xKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPURxKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09RHEoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPXpxKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IFJxKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgQnEsSHEsRnE9MCxWcT0wLFVxPTAsanE9MCxHcT0wLFdxPTAscXE9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsWXE9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gWHEoKXtyZXR1cm4gR3F8fChZcSgkcSksR3E9cXEubm93KCkrV3EpfWZ1bmN0aW9uICRxKCl7R3E9MH1mdW5jdGlvbiBLcSgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gWnEodCxlLG4pe3ZhciBpPW5ldyBLcTtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIEpxKCl7R3E9KGpxPXFxLm5vdygpKStXcSxGcT1WcT0wO3RyeXshKGZ1bmN0aW9uIHQoKXtYcSgpLCsrRnE7Zm9yKHZhciB0LGU9QnE7ZTspKHQ9R3EtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUZxfSkoKX1maW5hbGx5e0ZxPTAsKGZ1bmN0aW9uIGUoKXt2YXIgdCxlLG49QnEsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6QnE9ZSk7SHE9dCx0WShpKX0pKCksR3E9MH19ZnVuY3Rpb24gUXEoKXt2YXIgdD1xcS5ub3coKSxlPXQtanE7ZT4xZTMmJihXcS09ZSxqcT10KX1mdW5jdGlvbiB0WSh0KXtGcXx8KFZxJiYoVnE9Y2xlYXJUaW1lb3V0KFZxKSksdC1HcT4yND8odDwxLzAmJihWcT1zZXRUaW1lb3V0KEpxLHQtcXEubm93KCktV3EpKSxVcSYmKFVxPWNsZWFySW50ZXJ2YWwoVXEpKSk6KFVxfHwoanE9cXEubm93KCksVXE9c2V0SW50ZXJ2YWwoUXEsMWUzKSksRnE9MSxZcShKcSkpKX1mdW5jdGlvbiBlWSh0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIG5ZKHQpe3JldHVybiB0Lnl9S3EucHJvdG90eXBlPVpxLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S3EscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP1hxKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fEhxPT09dGhpc3x8KEhxP0hxLl9uZXh0PXRoaXM6QnE9dGhpcyxIcT10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHRZKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLHRZKCkpfX07dmFyIGlZLHJZPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBvWSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBhWSh0KXtyZXR1cm4odD1vWShNYXRoLmFicyh0KSkpP3RbMV06TmFOfWZ1bmN0aW9uIHNZKHQsZSl7dmFyIG49b1kodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX12YXIgbFk9eyIiOmZ1bmN0aW9uIGNZKHQsZSl7dDpmb3IodmFyIG4saT0odD10LnRvUHJlY2lzaW9uKGUpKS5sZW5ndGgscj0xLG89LTE7cjxpOysrcilzd2l0Y2godFtyXSl7Y2FzZSIuIjpvPW49cjticmVhaztjYXNlIjAiOjA9PT1vJiYobz1yKSxuPXI7YnJlYWs7Y2FzZSJlIjpicmVhayB0O2RlZmF1bHQ6bz4wJiYobz0wKX1yZXR1cm4gbz4wP3Quc2xpY2UoMCxvKSt0LnNsaWNlKG4rMSk6dH0sIiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gc1koMTAwKnQsZSl9LHI6c1ksczpmdW5jdGlvbiB1WSh0LGUpe3ZhciBuPW9ZKHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShpWT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK29ZKHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19LGhZPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLVwoIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KFthLXolXSk/JC9pO2Z1bmN0aW9uIGRZKHQpe3JldHVybiBuZXcgcFkodCl9ZnVuY3Rpb24gcFkodCl7aWYoIShlPWhZLmV4ZWModCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGUsbj1lWzFdfHwiICIsaT1lWzJdfHwiPiIscj1lWzNdfHwiLSIsbz1lWzRdfHwiIixhPSEhZVs1XSxzPWVbNl0mJitlWzZdLGw9ISFlWzddLGM9ZVs4XSYmK2VbOF0uc2xpY2UoMSksdT1lWzldfHwiIjsibiI9PT11PyhsPSEwLHU9ImciKTpsWVt1XXx8KHU9IiIpLChhfHwiMCI9PT1uJiYiPSI9PT1pKSYmKGE9ITAsbj0iMCIsaT0iPSIpLHRoaXMuZmlsbD1uLHRoaXMuYWxpZ249aSx0aGlzLnNpZ249cix0aGlzLnN5bWJvbD1vLHRoaXMuemVybz1hLHRoaXMud2lkdGg9cyx0aGlzLmNvbW1hPWwsdGhpcy5wcmVjaXNpb249Yyx0aGlzLnR5cGU9dX1mdW5jdGlvbiBmWSh0KXtyZXR1cm4gdH1kWS5wcm90b3R5cGU9cFkucHJvdG90eXBlLHBZLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyhudWxsPT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsobnVsbD09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpK3RoaXMudHlwZX07dmFyIG1ZLGdZLF9ZLHlZPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiB2WSh0KXt2YXIgZT10Lmdyb3VwaW5nJiZ0LnRob3VzYW5kcz8oZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKHQuZ3JvdXBpbmcsdC50aG91c2FuZHMpOmZZLGk9dC5jdXJyZW5jeSxyPXQuZGVjaW1hbCxvPXQubnVtZXJhbHM/KGZ1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0WytlXX0pKX19KSh0Lm51bWVyYWxzKTpmWSxzPXQucGVyY2VudHx8IiUiO2Z1bmN0aW9uIGwodCl7dmFyIG49KHQ9ZFkodCkpLmZpbGwsYT10LmFsaWduLGw9dC5zaWduLGM9dC5zeW1ib2wsdT10Lnplcm8saD10LndpZHRoLGQ9dC5jb21tYSxwPXQucHJlY2lzaW9uLGY9dC50eXBlLG09IiQiPT09Yz9pWzBdOiIjIj09PWMmJi9bYm94WF0vLnRlc3QoZik/IjAiK2YudG9Mb3dlckNhc2UoKToiIixnPSIkIj09PWM/aVsxXTovWyVwXS8udGVzdChmKT9zOiIiLF89bFlbZl0seT0hZnx8L1tkZWZncHJzJV0vLnRlc3QoZik7ZnVuY3Rpb24gdih0KXt2YXIgaSxzLGMsdj1tLGI9ZztpZigiYyI9PT1mKWI9Xyh0KStiLHQ9IiI7ZWxzZXt2YXIgeD0odD0rdCk8MDtpZih0PV8oTWF0aC5hYnModCkscCkseCYmMD09K3QmJih4PSExKSx2PSh4PyIoIj09PWw/bDoiLSI6Ii0iPT09bHx8IigiPT09bD8iIjpsKSt2LGI9KCJzIj09PWY/eVlbOCtpWS8zXToiIikrYisoeCYmIigiPT09bD8iKSI6IiIpLHkpZm9yKGk9LTEscz10Lmxlbmd0aDsrK2k8czspaWYoNDg+KGM9dC5jaGFyQ29kZUF0KGkpKXx8Yz41Nyl7Yj0oNDY9PT1jP3IrdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK2IsdD10LnNsaWNlKDAsaSk7YnJlYWt9fWQmJiF1JiYodD1lKHQsMS8wKSk7dmFyIHc9di5sZW5ndGgrdC5sZW5ndGgrYi5sZW5ndGgsUz13PGg/bmV3IEFycmF5KGgtdysxKS5qb2luKG4pOiIiO3N3aXRjaChkJiZ1JiYodD1lKFMrdCxTLmxlbmd0aD9oLWIubGVuZ3RoOjEvMCksUz0iIiksYSl7Y2FzZSI8Ijp0PXYrdCtiK1M7YnJlYWs7Y2FzZSI9Ijp0PXYrUyt0K2I7YnJlYWs7Y2FzZSJeIjp0PVMuc2xpY2UoMCx3PVMubGVuZ3RoPj4xKSt2K3QrYitTLnNsaWNlKHcpO2JyZWFrO2RlZmF1bHQ6dD1TK3YrdCtifXJldHVybiBvKHQpfXJldHVybiBwPW51bGw9PXA/Zj82OjEyOi9bZ3Byc10vLnRlc3QoZik/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxwKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxwKSksdi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSx2fXJldHVybntmb3JtYXQ6bCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gYyh0LGUpe3ZhciBuPWwoKCh0PWRZKHQpKS50eXBlPSJmIix0KSksaT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihhWShlKS8zKSkpLHI9TWF0aC5wb3coMTAsLWkpLG89eVlbOCtpLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihyKnQpK299fX19ZnVuY3Rpb24gYlkodCl7cmV0dXJuIG1ZPXZZKHQpLGdZPW1ZLmZvcm1hdCxfWT1tWS5mb3JtYXRQcmVmaXgsbVl9ZnVuY3Rpb24geFkoKXtyZXR1cm4gbmV3IHdZfWZ1bmN0aW9uIHdZKCl7dGhpcy5yZXNldCgpfWJZKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pLHdZLnByb3RvdHlwZT17Y29uc3RydWN0b3I6d1kscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXtNWShTWSx0LHRoaXMudCksTVkodGhpcyxTWS5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9U1kudDp0aGlzLnM9U1kudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgU1k9bmV3IHdZO2Z1bmN0aW9uIE1ZKHQsZSxuKXt2YXIgaT10LnM9ZStuLHI9aS1lO3QudD1lLShpLXIpKyhuLXIpfXZhciBFWT0xZS02LFRZPU1hdGguUEksQ1k9VFkvMixBWT1UWS80LGtZPTIqVFksUFk9MTgwL1RZLExZPVRZLzE4MCxJWT1NYXRoLmFicyxOWT1NYXRoLmF0YW4sUlk9TWF0aC5hdGFuMixPWT1NYXRoLmNvcyx6WT1NYXRoLmNlaWwsRFk9TWF0aC5leHAsQlk9TWF0aC5sb2csSFk9TWF0aC5wb3csRlk9TWF0aC5zaW4sVlk9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LFVZPU1hdGguc3FydCxqWT1NYXRoLnRhbjtmdW5jdGlvbiBHWSh0KXtyZXR1cm4gdD4xPzA6dDwtMT9UWTpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gV1kodCl7cmV0dXJuIHQ+MT9DWTp0PC0xPy1DWTpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gcVkodCl7cmV0dXJuKHQ9RlkodC8yKSkqdH1mdW5jdGlvbiBZWSgpe31mdW5jdGlvbiBYWSh0LGUpe3QmJktZLmhhc093blByb3BlcnR5KHQudHlwZSkmJktZW3QudHlwZV0odCxlKX12YXIgJFk9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtYWSh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmZlYXR1cmVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspWFkobltpXS5nZW9tZXRyeSxlKX19LEtZPXtTcGhlcmU6ZnVuY3Rpb24odCxlKXtlLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LGUpe2UucG9pbnQoKHQ9dC5jb29yZGluYXRlcylbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspZS5wb2ludCgodD1uW2ldKVswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7WlkodC5jb29yZGluYXRlcyxlLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVpZKG5baV0sZSwwKX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe0pZKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspSlkobltpXSxlKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVhZKG5baV0sZSl9fTtmdW5jdGlvbiBaWSh0LGUsbil7dmFyIGkscj0tMSxvPXQubGVuZ3RoLW47Zm9yKGUubGluZVN0YXJ0KCk7KytyPG87KWUucG9pbnQoKGk9dFtyXSlbMF0saVsxXSxpWzJdKTtlLmxpbmVFbmQoKX1mdW5jdGlvbiBKWSh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGUucG9seWdvblN0YXJ0KCk7KytuPGk7KVpZKHRbbl0sZSwxKTtlLnBvbHlnb25FbmQoKX1mdW5jdGlvbiBRWSh0LGUpe3QmJiRZLmhhc093blByb3BlcnR5KHQudHlwZSk/JFlbdC50eXBlXSh0LGUpOlhZKHQsZSl9dmFyIHRYLGVYLG5YLGlYLHJYLG9YPXhZKCksYVg9eFkoKSxzWD17cG9pbnQ6WVksbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7b1gucmVzZXQoKSxzWC5saW5lU3RhcnQ9bFgsc1gubGluZUVuZD1jWH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStvWDthWC5hZGQodDwwP2tZK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9WVl9LHNwaGVyZTpmdW5jdGlvbigpe2FYLmFkZChrWSl9fTtmdW5jdGlvbiBsWCgpe3NYLnBvaW50PXVYfWZ1bmN0aW9uIGNYKCl7aFgodFgsZVgpfWZ1bmN0aW9uIHVYKHQsZSl7c1gucG9pbnQ9aFgsdFg9dCxlWD1lLG5YPXQqPUxZLGlYPU9ZKGU9KGUqPUxZKS8yK0FZKSxyWD1GWShlKX1mdW5jdGlvbiBoWCh0LGUpe3ZhciBuPSh0Kj1MWSktblgsaT1uPj0wPzE6LTEscj1pKm4sbz1PWShlPShlKj1MWSkvMitBWSksYT1GWShlKSxzPXJYKmEsbD1pWCpvK3MqT1kociksYz1zKmkqRlkocik7b1guYWRkKFJZKGMsbCkpLG5YPXQsaVg9byxyWD1hfWZ1bmN0aW9uIGRYKHQpe3JldHVybltSWSh0WzFdLHRbMF0pLFdZKHRbMl0pXX1mdW5jdGlvbiBwWCh0KXt2YXIgZT10WzBdLG49dFsxXSxpPU9ZKG4pO3JldHVybltpKk9ZKGUpLGkqRlkoZSksRlkobildfWZ1bmN0aW9uIGZYKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdfWZ1bmN0aW9uIG1YKHQsZSl7cmV0dXJuW3RbMV0qZVsyXS10WzJdKmVbMV0sdFsyXSplWzBdLXRbMF0qZVsyXSx0WzBdKmVbMV0tdFsxXSplWzBdXX1mdW5jdGlvbiBnWCh0LGUpe3RbMF0rPWVbMF0sdFsxXSs9ZVsxXSx0WzJdKz1lWzJdfWZ1bmN0aW9uIF9YKHQsZSl7cmV0dXJuW3RbMF0qZSx0WzFdKmUsdFsyXSplXX1mdW5jdGlvbiB5WCh0KXt2YXIgZT1VWSh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSk7dFswXS89ZSx0WzFdLz1lLHRbMl0vPWV9dmFyIHZYLGJYLHhYLHdYLFNYLE1YLEVYLFRYLENYLEFYLGtYLFBYLExYLElYLE5YLFJYLE9YLHpYLERYLEJYLEhYLEZYLFZYLFVYLGpYLEdYLFdYPXhZKCkscVg9e3BvaW50OllYLGxpbmVTdGFydDokWCxsaW5lRW5kOktYLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3FYLnBvaW50PVpYLHFYLmxpbmVTdGFydD1KWCxxWC5saW5lRW5kPVFYLFdYLnJlc2V0KCksc1gucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtzWC5wb2x5Z29uRW5kKCkscVgucG9pbnQ9WVgscVgubGluZVN0YXJ0PSRYLHFYLmxpbmVFbmQ9S1gsb1g8MD8odlg9LSh4WD0xODApLGJYPS0od1g9OTApKTpXWD5FWT93WD05MDpXWDwtMWUtNiYmKGJYPS05MCksQVhbMF09dlgsQVhbMV09eFh9fTtmdW5jdGlvbiBZWCh0LGUpe0NYLnB1c2goQVg9W3ZYPXQseFg9dF0pLGU8YlgmJihiWD1lKSxlPndYJiYod1g9ZSl9ZnVuY3Rpb24gWFgodCxlKXt2YXIgbj1wWChbdCpMWSxlKkxZXSk7aWYoVFgpe3ZhciBpPW1YKFRYLG4pLHI9bVgoW2lbMV0sLWlbMF0sMF0saSk7eVgocikscj1kWChyKTt2YXIgbyxhPXQtU1gscz1hPjA/MTotMSxsPXJbMF0qUFkqcyxjPUlZKGEpPjE4MDtjXihzKlNYPGwmJmw8cyp0KT8obz1yWzFdKlBZKT53WCYmKHdYPW8pOmNeKHMqU1g8KGw9KGwrMzYwKSUzNjAtMTgwKSYmbDxzKnQpPyhvPS1yWzFdKlBZKTxiWCYmKGJYPW8pOihlPGJYJiYoYlg9ZSksZT53WCYmKHdYPWUpKSxjP3Q8U1g/dCQodlgsdCk+dCQodlgseFgpJiYoeFg9dCk6dCQodCx4WCk+dCQodlgseFgpJiYodlg9dCk6eFg+PXZYPyh0PHZYJiYodlg9dCksdD54WCYmKHhYPXQpKTp0PlNYP3QkKHZYLHQpPnQkKHZYLHhYKSYmKHhYPXQpOnQkKHQseFgpPnQkKHZYLHhYKSYmKHZYPXQpfWVsc2UgQ1gucHVzaChBWD1bdlg9dCx4WD10XSk7ZTxiWCYmKGJYPWUpLGU+d1gmJih3WD1lKSxUWD1uLFNYPXR9ZnVuY3Rpb24gJFgoKXtxWC5wb2ludD1YWH1mdW5jdGlvbiBLWCgpe0FYWzBdPXZYLEFYWzFdPXhYLHFYLnBvaW50PVlYLFRYPW51bGx9ZnVuY3Rpb24gWlgodCxlKXtpZihUWCl7dmFyIG49dC1TWDtXWC5hZGQoSVkobik+MTgwP24rKG4+MD8zNjA6LTM2MCk6bil9ZWxzZSBNWD10LEVYPWU7c1gucG9pbnQodCxlKSxYWCh0LGUpfWZ1bmN0aW9uIEpYKCl7c1gubGluZVN0YXJ0KCl9ZnVuY3Rpb24gUVgoKXtaWChNWCxFWCksc1gubGluZUVuZCgpLElZKFdYKT5FWSYmKHZYPS0oeFg9MTgwKSksQVhbMF09dlgsQVhbMV09eFgsVFg9bnVsbH1mdW5jdGlvbiB0JCh0LGUpe3JldHVybihlLT10KTwwP2UrMzYwOmV9ZnVuY3Rpb24gZSQodCxlKXtyZXR1cm4gdFswXS1lWzBdfWZ1bmN0aW9uIG4kKHQsZSl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9ZSYmZTw9dFsxXTplPHRbMF18fHRbMV08ZX12YXIgaSQ9e3NwaGVyZTpZWSxwb2ludDpyJCxsaW5lU3RhcnQ6YSQsbGluZUVuZDpjJCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtpJC5saW5lU3RhcnQ9dSQsaSQubGluZUVuZD1oJH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2kkLmxpbmVTdGFydD1hJCxpJC5saW5lRW5kPWMkfX07ZnVuY3Rpb24gciQodCxlKXt0Kj1MWTt2YXIgbj1PWShlKj1MWSk7byQobipPWSh0KSxuKkZZKHQpLEZZKGUpKX1mdW5jdGlvbiBvJCh0LGUsbil7KytrWCxMWCs9KHQtTFgpL2tYLElYKz0oZS1JWCkva1gsTlgrPShuLU5YKS9rWH1mdW5jdGlvbiBhJCgpe2kkLnBvaW50PXMkfWZ1bmN0aW9uIHMkKHQsZSl7dCo9TFk7dmFyIG49T1koZSo9TFkpO1VYPW4qT1kodCksalg9bipGWSh0KSxHWD1GWShlKSxpJC5wb2ludD1sJCxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gbCQodCxlKXt0Kj1MWTt2YXIgbj1PWShlKj1MWSksaT1uKk9ZKHQpLHI9bipGWSh0KSxvPUZZKGUpLGE9UlkoVVkoKGE9algqby1HWCpyKSphKyhhPUdYKmktVVgqbykqYSsoYT1VWCpyLWpYKmkpKmEpLFVYKmkralgqcitHWCpvKTtQWCs9YSxSWCs9YSooVVgrKFVYPWkpKSxPWCs9YSooalgrKGpYPXIpKSx6WCs9YSooR1grKEdYPW8pKSxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gYyQoKXtpJC5wb2ludD1yJH1mdW5jdGlvbiB1JCgpe2kkLnBvaW50PWQkfWZ1bmN0aW9uIGgkKCl7cCQoRlgsVlgpLGkkLnBvaW50PXIkfWZ1bmN0aW9uIGQkKHQsZSl7Rlg9dCxWWD1lLHQqPUxZLGUqPUxZLGkkLnBvaW50PXAkO3ZhciBuPU9ZKGUpO1VYPW4qT1kodCksalg9bipGWSh0KSxHWD1GWShlKSxvJChVWCxqWCxHWCl9ZnVuY3Rpb24gcCQodCxlKXt0Kj1MWTt2YXIgbj1PWShlKj1MWSksaT1uKk9ZKHQpLHI9bipGWSh0KSxvPUZZKGUpLGE9algqby1HWCpyLHM9R1gqaS1VWCpvLGw9VVgqci1qWCppLGM9VVkoYSphK3MqcytsKmwpLHU9V1koYyksaD1jJiYtdS9jO0RYKz1oKmEsQlgrPWgqcyxIWCs9aCpsLFBYKz11LFJYKz11KihVWCsoVVg9aSkpLE9YKz11KihqWCsoalg9cikpLHpYKz11KihHWCsoR1g9bykpLG8kKFVYLGpYLEdYKX1mdW5jdGlvbiBmJCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gbSQodCxlKXtmdW5jdGlvbiBuKG4saSl7cmV0dXJuIG49dChuLGkpLGUoblswXSxuWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYobi5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm4obj1lLmludmVydChuLGkpKSYmdC5pbnZlcnQoblswXSxuWzFdKX0pLG59ZnVuY3Rpb24gZyQodCxlKXtyZXR1cm5bdD5UWT90LWtZOnQ8LVRZP3Qra1k6dCxlXX1mdW5jdGlvbiBfJCh0LGUsbil7cmV0dXJuKHQlPWtZKT9lfHxuP20kKHYkKHQpLGIkKGUsbikpOnYkKHQpOmV8fG4/YiQoZSxuKTpnJH1mdW5jdGlvbiB5JCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPlRZP2Uta1k6ZTwtVFk/ZStrWTplLG5dfX1mdW5jdGlvbiB2JCh0KXt2YXIgZT15JCh0KTtyZXR1cm4gZS5pbnZlcnQ9eSQoLXQpLGV9ZnVuY3Rpb24gYiQodCxlKXt2YXIgbj1PWSh0KSxpPUZZKHQpLHI9T1koZSksbz1GWShlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9T1koZSkscz1PWSh0KSphLGw9RlkodCkqYSxjPUZZKGUpLHU9YypuK3MqaTtyZXR1cm5bUlkobCpyLXUqbyxzKm4tYyppKSxXWSh1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9T1koZSkscz1PWSh0KSphLGw9RlkodCkqYSxjPUZZKGUpLHU9YypyLWwqbztyZXR1cm5bUlkobCpyK2MqbyxzKm4rdSppKSxXWSh1Km4tcyppKV19LGF9ZnVuY3Rpb24geCQodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qTFksZVsxXSpMWSkpWzBdKj1QWSxlWzFdKj1QWSxlfXJldHVybiB0PV8kKHRbMF0qTFksdFsxXSpMWSx0Lmxlbmd0aD4yP3RbMl0qTFk6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSpMWSxlWzFdKkxZKSlbMF0qPVBZLGVbMV0qPVBZLGV9LGV9ZnVuY3Rpb24gdyQodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPU9ZKGUpLHM9RlkoZSksbD1pKm47bnVsbD09cj8ocj1lK2kqa1ksbz1lLWwvMik6KHI9UyQoYSxyKSxvPVMkKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqa1kpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1kWChbYSwtcypPWSh1KSwtcypGWSh1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gUyQodCxlKXsoZT1wWChlKSlbMF0tPXQseVgoZSk7dmFyIG49R1koLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStrWS1FWSkla1l9ZnVuY3Rpb24gTSQoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4pe3QucHVzaChbZSxuXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0sbGluZUVuZDpZWSxyZWpvaW46ZnVuY3Rpb24oKXtlLmxlbmd0aD4xJiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBuPWU7cmV0dXJuIGU9W10sdD1udWxsLG59fX1mdW5jdGlvbiBFJCh0LGUpe3JldHVybiBJWSh0WzBdLWVbMF0pPEVZJiZJWSh0WzFdLWVbMV0pPEVZfWZ1bmN0aW9uIFQkKHQsZSxuLGkpe3RoaXMueD10LHRoaXMuej1lLHRoaXMubz1uLHRoaXMuZT1pLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24gQyQodCxlLG4saSxyKXt2YXIgbyxhLHM9W10sbD1bXTtpZih0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCEoKGU9dC5sZW5ndGgtMSk8PTApKXt2YXIgZSxuLGk9dFswXSxhPXRbZV07aWYoRSQoaSxhKSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyLmxpbmVFbmQoKX1lbHNlIHMucHVzaChuPW5ldyBUJChpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IFQkKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IFQkKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgVCQoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksQSQocyksQSQobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIEEkKHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fWckLmludmVydD1nJDt2YXIgayQ9eFkoKTtmdW5jdGlvbiBQJCh0LGUpe3ZhciBuPWVbMF0saT1lWzFdLHI9W0ZZKG4pLC1PWShuKSwwXSxvPTAsYT0wO2skLnJlc2V0KCk7Zm9yKHZhciBzPTAsbD10Lmxlbmd0aDtzPGw7KytzKWlmKHU9KGM9dFtzXSkubGVuZ3RoKWZvcih2YXIgYyx1LGg9Y1t1LTFdLGQ9aFswXSxwPWhbMV0vMitBWSxmPUZZKHApLG09T1kocCksZz0wO2c8dTsrK2csZD15LGY9YixtPXgsaD1fKXt2YXIgXz1jW2ddLHk9X1swXSx2PV9bMV0vMitBWSxiPUZZKHYpLHg9T1kodiksdz15LWQsUz13Pj0wPzE6LTEsTT1TKncsRT1NPlRZLFQ9ZipiO2lmKGskLmFkZChSWShUKlMqRlkoTSksbSp4K1QqT1koTSkpKSxvKz1FP3crUyprWTp3LEVeZD49bl55Pj1uKXt2YXIgQz1tWChwWChoKSxwWChfKSk7eVgoQyk7dmFyIEE9bVgocixDKTt5WChBKTt2YXIgaz0oRV53Pj0wPy0xOjEpKldZKEFbMl0pOyhpPmt8fGk9PT1rJiYoQ1swXXx8Q1sxXSkpJiYoYSs9RV53Pj0wPzE6LTEpfX1yZXR1cm4obzwtMWUtNnx8bzxFWSYmayQ8LTFlLTYpXjEmYX1mdW5jdGlvbiBMJCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBJJCh0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb31mdW5jdGlvbiBOJCh0KXtmb3IodmFyIGUsbixpLHI9dC5sZW5ndGgsbz0tMSxhPTA7KytvPHI7KWErPXRbb10ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKTstLXI+PTA7KWZvcihlPShpPXRbcl0pLmxlbmd0aDstLWU+PTA7KW5bLS1hXT1pW2VdO3JldHVybiBufWZ1bmN0aW9uIFIkKHQsZSxuLGkpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbyxhLHMsbD1lKHIpLGM9TSQoKSx1PWUoYyksaD0hMSxkPXtwb2ludDpwLGxpbmVTdGFydDptLGxpbmVFbmQ6Zyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtkLnBvaW50PV8sZC5saW5lU3RhcnQ9eSxkLmxpbmVFbmQ9dixhPVtdLG89W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtkLnBvaW50PXAsZC5saW5lU3RhcnQ9bSxkLmxpbmVFbmQ9ZyxhPU4kKGEpO3ZhciB0PVAkKG8saSk7YS5sZW5ndGg/KGh8fChyLnBvbHlnb25TdGFydCgpLGg9ITApLEMkKGEseiQsdCxuLHIpKTp0JiYoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpKSxoJiYoci5wb2x5Z29uRW5kKCksaD0hMSksYT1vPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe3IucG9seWdvblN0YXJ0KCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpLHIucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gcChlLG4pe3QoZSxuKSYmci5wb2ludChlLG4pfWZ1bmN0aW9uIGYodCxlKXtsLnBvaW50KHQsZSl9ZnVuY3Rpb24gbSgpe2QucG9pbnQ9ZixsLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGcoKXtkLnBvaW50PXAsbC5saW5lRW5kKCl9ZnVuY3Rpb24gXyh0LGUpe3MucHVzaChbdCxlXSksdS5wb2ludCh0LGUpfWZ1bmN0aW9uIHkoKXt1LmxpbmVTdGFydCgpLHM9W119ZnVuY3Rpb24gdigpe18oc1swXVswXSxzWzBdWzFdKSx1LmxpbmVFbmQoKTt2YXIgdCxlLG4saSxsPXUuY2xlYW4oKSxkPWMucmVzdWx0KCkscD1kLmxlbmd0aDtpZihzLnBvcCgpLG8ucHVzaChzKSxzPW51bGwscClpZigxJmwpe2lmKChlPShuPWRbMF0pLmxlbmd0aC0xKT4wKXtmb3IoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSx0PTA7dDxlOysrdClyLnBvaW50KChpPW5bdF0pWzBdLGlbMV0pO3IubGluZUVuZCgpfX1lbHNlIHA+MSYmMiZsJiZkLnB1c2goZC5wb3AoKS5jb25jYXQoZC5zaGlmdCgpKSksYS5wdXNoKGQuZmlsdGVyKE8kKSl9cmV0dXJuIGR9fWZ1bmN0aW9uIE8kKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIHokKHQsZSl7cmV0dXJuKCh0PXQueClbMF08MD90WzFdLUNZLUVZOkNZLXRbMV0pLSgoZT1lLngpWzBdPDA/ZVsxXS1DWS1FWTpDWS1lWzFdKX0hKGZ1bmN0aW9uIEQkKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBMJCh0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19KShMJCk7dmFyIEIkPVIkKChmdW5jdGlvbigpe3JldHVybiEwfSksKGZ1bmN0aW9uIEgkKHQpe3ZhciBlLG49TmFOLGk9TmFOLHI9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGU9MX0scG9pbnQ6ZnVuY3Rpb24obyxhKXt2YXIgcz1vPjA/VFk6LVRZLGw9SVkoby1uKTtJWShsLVRZKTxFWT8odC5wb2ludChuLGk9KGkrYSkvMj4wP0NZOi1DWSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLHQucG9pbnQobyxpKSxlPTApOnIhPT1zJiZsPj1UWSYmKElZKG4tcik8RVkmJihuLT1yKkVZKSxJWShvLXMpPEVZJiYoby09cypFWSksaT0oZnVuY3Rpb24gYyh0LGUsbixpKXt2YXIgcixvLGE9RlkodC1uKTtyZXR1cm4gSVkoYSk+RVk/TlkoKEZZKGUpKihvPU9ZKGkpKSpGWShuKS1GWShpKSoocj1PWShlKSkqRlkodCkpLyhyKm8qYSkpOihlK2kpLzJ9KShuLGksbyxhKSx0LnBvaW50KHIsaSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHMsaSksZT0wKSx0LnBvaW50KG49byxpPWEpLHI9c30sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVuZCgpLG49aT1OYU59LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIDItZX19fSksKGZ1bmN0aW9uIEYkKHQsZSxuLGkpe3ZhciByO2lmKG51bGw9PXQpaS5wb2ludCgtVFkscj1uKkNZKSxpLnBvaW50KDAsciksaS5wb2ludChUWSxyKSxpLnBvaW50KFRZLDApLGkucG9pbnQoVFksLXIpLGkucG9pbnQoMCwtciksaS5wb2ludCgtVFksLXIpLGkucG9pbnQoLVRZLDApLGkucG9pbnQoLVRZLHIpO2Vsc2UgaWYoSVkodFswXS1lWzBdKT5FWSl7dmFyIG89dFswXTxlWzBdP1RZOi1UWTtpLnBvaW50KC1vLHI9bipvLzIpLGkucG9pbnQoMCxyKSxpLnBvaW50KG8scil9ZWxzZSBpLnBvaW50KGVbMF0sZVsxXSl9KSxbLVRZLC1DWV0pO2Z1bmN0aW9uIFYkKHQpe3ZhciBlPU9ZKHQpLG49NipMWSxpPWU+MCxyPUlZKGUpPkVZO2Z1bmN0aW9uIG8odCxuKXtyZXR1cm4gT1kodCkqT1kobik+ZX1mdW5jdGlvbiBhKHQsbixpKXt2YXIgcj1bMSwwLDBdLG89bVgocFgodCkscFgobikpLGE9ZlgobyxvKSxzPW9bMF0sbD1hLXMqcztpZighbClyZXR1cm4haSYmdDt2YXIgYz1lKmEvbCx1PS1lKnMvbCxoPW1YKHIsbyksZD1fWChyLGMpO2dYKGQsX1gobyx1KSk7dmFyIHA9aCxmPWZYKGQscCksbT1mWChwLHApLGc9ZipmLW0qKGZYKGQsZCktMSk7aWYoIShnPDApKXt2YXIgXz1VWShnKSx5PV9YKHAsKC1mLV8pL20pO2lmKGdYKHksZCkseT1kWCh5KSwhaSlyZXR1cm4geTt2YXIgdixiPXRbMF0seD1uWzBdLHc9dFsxXSxTPW5bMV07eDxiJiYodj1iLGI9eCx4PXYpO3ZhciBNPXgtYixFPUlZKE0tVFkpPEVZO2lmKCFFJiZTPHcmJih2PXcsdz1TLFM9diksRXx8TTxFWT9FP3crUz4wXnlbMV08KElZKHlbMF0tYik8RVk/dzpTKTp3PD15WzFdJiZ5WzFdPD1TOk0+VFleKGI8PXlbMF0mJnlbMF08PXgpKXt2YXIgVD1fWChwLCgtZitfKS9tKTtyZXR1cm4gZ1goVCxkKSxbeSxkWChUKV19fX1mdW5jdGlvbiBzKGUsbil7dmFyIHI9aT90OlRZLXQsbz0wO3JldHVybiBlPC1yP298PTE6ZT5yJiYob3w9Miksbjwtcj9vfD00Om4+ciYmKG98PTgpLG99cmV0dXJuIFIkKG8sKGZ1bmN0aW9uIGwodCl7dmFyIGUsbixsLGMsdTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7Yz1sPSExLHU9MX0scG9pbnQ6ZnVuY3Rpb24oaCxkKXt2YXIgcCxmPVtoLGRdLG09byhoLGQpLGc9aT9tPzA6cyhoLGQpOm0/cyhoKyhoPDA/VFk6LVRZKSxkKTowO2lmKCFlJiYoYz1sPW0pJiZ0LmxpbmVTdGFydCgpLG0hPT1sJiYoIShwPWEoZSxmKSl8fEUkKGUscCl8fEUkKGYscCkpJiYoZlswXSs9RVksZlsxXSs9RVksbT1vKGZbMF0sZlsxXSkpLG0hPT1sKXU9MCxtPyh0LmxpbmVTdGFydCgpLHA9YShmLGUpLHQucG9pbnQocFswXSxwWzFdKSk6KHA9YShlLGYpLHQucG9pbnQocFswXSxwWzFdKSx0LmxpbmVFbmQoKSksZT1wO2Vsc2UgaWYociYmZSYmaV5tKXt2YXIgXztnJm58fCEoXz1hKGYsZSwhMCkpfHwodT0wLGk/KHQubGluZVN0YXJ0KCksdC5wb2ludChfWzBdWzBdLF9bMF1bMV0pLHQucG9pbnQoX1sxXVswXSxfWzFdWzFdKSx0LmxpbmVFbmQoKSk6KHQucG9pbnQoX1sxXVswXSxfWzFdWzFdKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSkpfSFtfHxlJiZFJChlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXt3JChvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLVRZLHQtVFldKX12YXIgVSQ9MWU5LGokPS1VJDtmdW5jdGlvbiBHJCh0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiBJWShpWzBdLXQpPEVZP3I+MD8wOjM6SVkoaVswXS1uKTxFWT9yPjA/MjoxOklZKGlbMV0tZSk8RVk/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPU0kKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QyxjJiZjLnB1c2godT1bXSk7Xz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihDKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpO3gucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPU4kKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZDJChsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKTt2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBDKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KGokLE1hdGgubWluKFUkLGYpKSxtPU1hdGgubWF4KGokLE1hdGgubWluKFUkLG0pKV0sYj1bbz1NYXRoLm1heChqJCxNYXRoLm1pbihVJCxvKSksYT1NYXRoLm1heChqJCxNYXRoLm1pbihVJCxhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBXJCxxJCxZJCxYJD14WSgpLCQkPXtzcGhlcmU6WVkscG9pbnQ6WVksbGluZVN0YXJ0OmZ1bmN0aW9uIEskKCl7JCQucG9pbnQ9SiQsJCQubGluZUVuZD1aJH0sbGluZUVuZDpZWSxwb2x5Z29uU3RhcnQ6WVkscG9seWdvbkVuZDpZWX07ZnVuY3Rpb24gWiQoKXskJC5wb2ludD0kJC5saW5lRW5kPVlZfWZ1bmN0aW9uIEokKHQsZSl7VyQ9dCo9TFkscSQ9RlkoZSo9TFkpLFkkPU9ZKGUpLCQkLnBvaW50PVEkfWZ1bmN0aW9uIFEkKHQsZSl7dCo9TFk7dmFyIG49RlkoZSo9TFkpLGk9T1koZSkscj1JWSh0LVckKSxvPU9ZKHIpLGE9aSpGWShyKSxzPVkkKm4tcSQqaSpvLGw9cSQqbitZJCppKm87WCQuYWRkKFJZKFVZKGEqYStzKnMpLGwpKSxXJD10LHEkPW4sWSQ9aX1mdW5jdGlvbiB0Syh0KXtyZXR1cm4gWCQucmVzZXQoKSxRWSh0LCQkKSwrWCR9dmFyIGVLPVtudWxsLG51bGxdLG5LPXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczplS307ZnVuY3Rpb24gaUsodCxlKXtyZXR1cm4gZUtbMF09dCxlS1sxXT1lLHRLKG5LKX12YXIgcks9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYUsodC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGFLKG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxvSz17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNLKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKHNLKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbEsodC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihsSyhuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNLKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoY0sobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGFLKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBhSyh0LGUpe3JldHVybiEoIXR8fCFvSy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmb0tbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIHNLKHQsZSl7cmV0dXJuIDA9PT1pSyh0LGUpfWZ1bmN0aW9uIGxLKHQsZSl7dmFyIG49aUsodFswXSx0WzFdKTtyZXR1cm4gaUsodFswXSxlKStpSyhlLHRbMV0pPD1uK0VZfWZ1bmN0aW9uIGNLKHQsZSl7cmV0dXJuISFQJCh0Lm1hcCh1SyksaEsoZSkpfWZ1bmN0aW9uIHVLKHQpe3JldHVybih0PXQubWFwKGhLKSkucG9wKCksdH1mdW5jdGlvbiBoSyh0KXtyZXR1cm5bdFswXSpMWSx0WzFdKkxZXX1mdW5jdGlvbiBkSyh0LGUsbil7dmFyIGk9SSQodCxlLUVZLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bdCxlXX0pKX19ZnVuY3Rpb24gcEsodCxlLG4pe3ZhciBpPUkkKHQsZS1FWSxuKS5jb25jYXQoZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdF19KSl9fWZ1bmN0aW9uIGZLKCl7dmFyIHQsZSxuLGkscixvLGEscyxsLGMsdSxoLGQ9MTAscD1kLGY9OTAsbT0zNjAsZz0yLjU7ZnVuY3Rpb24gXygpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnkoKX19ZnVuY3Rpb24geSgpe3JldHVybiBJJCh6WShpL2YpKmYsbixmKS5tYXAodSkuY29uY2F0KEkkKHpZKHMvbSkqbSxhLG0pLm1hcChoKSkuY29uY2F0KEkkKHpZKGUvZCkqZCx0LGQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIElZKHQlZik+RVl9KSkubWFwKGwpKS5jb25jYXQoSSQoelkoby9wKSpwLHIscCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gSVkodCVtKT5FWX0pKS5tYXAoYykpfXJldHVybiBfLmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHkoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fX0pKX0sXy5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt1KGkpLmNvbmNhdChoKGEpLnNsaWNlKDEpLHUobikucmV2ZXJzZSgpLnNsaWNlKDEpLGgocykucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSxfLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLmV4dGVudE1ham9yKHQpLmV4dGVudE1pbm9yKHQpOl8uZXh0ZW50TWlub3IoKX0sXy5leHRlbnRNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdFswXVsxXSxhPSt0WzFdWzFdLChpPSt0WzBdWzBdKT4obj0rdFsxXVswXSkmJih0PWksaT1uLG49dCkscz5hJiYodD1zLHM9YSxhPXQpLF8ucHJlY2lzaW9uKGcpKTpbW2ksc10sW24sYV1dfSxfLmV4dGVudE1pbm9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPStuWzBdWzFdLHI9K25bMV1bMV0sKGU9K25bMF1bMF0pPih0PStuWzFdWzBdKSYmKG49ZSxlPXQsdD1uKSxvPnImJihuPW8sbz1yLHI9biksXy5wcmVjaXNpb24oZykpOltbZSxvXSxbdCxyXV19LF8uc3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLnN0ZXBNYWpvcih0KS5zdGVwTWlub3IodCk6Xy5zdGVwTWlub3IoKX0sXy5zdGVwTWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9K3RbMF0sbT0rdFsxXSxfKTpbZixtXX0sXy5zdGVwTWlub3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0scD0rdFsxXSxfKTpbZCxwXX0sXy5wcmVjaXNpb249ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K2QsbD1kSyhvLHIsOTApLGM9cEsoZSx0LGcpLHU9ZEsocyxhLDkwKSxoPXBLKGksbixnKSxfKTpnfSxfLmV4dGVudE1ham9yKFtbLTE4MCwtODkuOTk5OTk5XSxbMTgwLDg5Ljk5OTk5OV1dKS5leHRlbnRNaW5vcihbWy0xODAsLTgwLjAwMDAwMV0sWzE4MCw4MC4wMDAwMDFdXSl9ZnVuY3Rpb24gbUsodCl7cmV0dXJuIHR9dmFyIGdLLF9LLHlLLHZLLGJLPXhZKCkseEs9eFkoKSx3Sz17cG9pbnQ6WVksbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7d0subGluZVN0YXJ0PVNLLHdLLmxpbmVFbmQ9VEt9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt3Sy5saW5lU3RhcnQ9d0subGluZUVuZD13Sy5wb2ludD1ZWSxiSy5hZGQoSVkoeEspKSx4Sy5yZXNldCgpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1iSy8yO3JldHVybiBiSy5yZXNldCgpLHR9fTtmdW5jdGlvbiBTSygpe3dLLnBvaW50PU1LfWZ1bmN0aW9uIE1LKHQsZSl7d0sucG9pbnQ9RUssZ0s9eUs9dCxfSz12Sz1lfWZ1bmN0aW9uIEVLKHQsZSl7eEsuYWRkKHZLKnQteUsqZSkseUs9dCx2Sz1lfWZ1bmN0aW9uIFRLKCl7RUsoZ0ssX0spfXZhciBDSz0xLzAsQUs9Q0ssa0s9LUNLLFBLPWtLLExLPXtwb2ludDpmdW5jdGlvbiBJSyh0LGUpe3Q8Q0smJihDSz10KTt0PmtLJiYoa0s9dCk7ZTxBSyYmKEFLPWUpO2U+UEsmJihQSz1lKX0sbGluZVN0YXJ0OllZLGxpbmVFbmQ6WVkscG9seWdvblN0YXJ0OllZLHBvbHlnb25FbmQ6WVkscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9W1tDSyxBS10sW2tLLFBLXV07cmV0dXJuIGtLPVBLPS0oQUs9Q0s9MS8wKSx0fX07dmFyIE5LLFJLLE9LLHpLLERLPTAsQks9MCxISz0wLEZLPTAsVks9MCxVSz0wLGpLPTAsR0s9MCxXSz0wLHFLPXtwb2ludDpZSyxsaW5lU3RhcnQ6WEssbGluZUVuZDpaSyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtxSy5saW5lU3RhcnQ9SksscUsubGluZUVuZD1RS30scG9seWdvbkVuZDpmdW5jdGlvbigpe3FLLnBvaW50PVlLLHFLLmxpbmVTdGFydD1YSyxxSy5saW5lRW5kPVpLfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1XSz9baksvV0ssR0svV0tdOlVLP1tGSy9VSyxWSy9VS106SEs/W0RLL0hLLEJLL0hLXTpbTmFOLE5hTl07cmV0dXJuIERLPUJLPUhLPUZLPVZLPVVLPWpLPUdLPVdLPTAsdH19O2Z1bmN0aW9uIFlLKHQsZSl7REsrPXQsQksrPWUsKytIS31mdW5jdGlvbiBYSygpe3FLLnBvaW50PSRLfWZ1bmN0aW9uICRLKHQsZSl7cUsucG9pbnQ9S0ssWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBLSyh0LGUpe3ZhciBuPXQtT0ssaT1lLXpLLHI9VVkobipuK2kqaSk7RksrPXIqKE9LK3QpLzIsVksrPXIqKHpLK2UpLzIsVUsrPXIsWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBaSygpe3FLLnBvaW50PVlLfWZ1bmN0aW9uIEpLKCl7cUsucG9pbnQ9dFp9ZnVuY3Rpb24gUUsoKXtlWihOSyxSSyl9ZnVuY3Rpb24gdFoodCxlKXtxSy5wb2ludD1lWixZSyhOSz1PSz10LFJLPXpLPWUpfWZ1bmN0aW9uIGVaKHQsZSl7dmFyIG49dC1PSyxpPWUteksscj1VWShuKm4raSppKTtGSys9ciooT0srdCkvMixWSys9ciooeksrZSkvMixVSys9cixqSys9KHI9eksqdC1PSyplKSooT0srdCksR0srPXIqKHpLK2UpLFdLKz0zKnIsWUsoT0s9dCx6Sz1lKX1mdW5jdGlvbiBuWih0KXt0aGlzLl9jb250ZXh0PXR9bloucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFkaXVzPXQsdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5tb3ZlVG8odCt0aGlzLl9yYWRpdXMsZSksdGhpcy5fY29udGV4dC5hcmModCxlLHRoaXMuX3JhZGl1cywwLGtZKX19LHJlc3VsdDpZWX07dmFyIGlaLHJaLG9aLGFaLHNaLGxaPXhZKCksY1o9e3BvaW50OllZLGxpbmVTdGFydDpmdW5jdGlvbigpe2NaLnBvaW50PXVafSxsaW5lRW5kOmZ1bmN0aW9uKCl7aVomJmhaKHJaLG9aKSxjWi5wb2ludD1ZWX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7aVo9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtpWj1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rbFo7cmV0dXJuIGxaLnJlc2V0KCksdH19O2Z1bmN0aW9uIHVaKHQsZSl7Y1oucG9pbnQ9aFosclo9YVo9dCxvWj1zWj1lfWZ1bmN0aW9uIGhaKHQsZSl7bFouYWRkKFVZKChhWi09dCkqYVorKHNaLT1lKSpzWikpLGFaPXQsc1o9ZX1mdW5jdGlvbiBkWigpe3RoaXMuX3N0cmluZz1bXX1mdW5jdGlvbiBwWih0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiBmWih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49bmV3IG1aO2Zvcih2YXIgaSBpbiB0KW5baV09dFtpXTtyZXR1cm4gbi5zdHJlYW09ZSxufX1mdW5jdGlvbiBtWigpe31mdW5jdGlvbiBnWih0LGUsbil7dmFyIGk9dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTtyZXR1cm4gdC5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KG51bGwpLFFZKG4sdC5zdHJlYW0oTEspKSxlKExLLnJlc3VsdCgpKSxudWxsIT1pJiZ0LmNsaXBFeHRlbnQoaSksdH1mdW5jdGlvbiBfWih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbMV1bMF0tZVswXVswXSxyPWVbMV1bMV0tZVswXVsxXSxvPU1hdGgubWluKGkvKG5bMV1bMF0tblswXVswXSksci8oblsxXVsxXS1uWzBdWzFdKSksYT0rZVswXVswXSsoaS1vKihuWzFdWzBdK25bMF1bMF0pKS8yLHM9K2VbMF1bMV0rKHItbyooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpvKS50cmFuc2xhdGUoW2Esc10pfSksbil9ZnVuY3Rpb24geVoodCxlLG4pe3JldHVybiBfWih0LFtbMCwwXSxlXSxuKX1mdW5jdGlvbiB2Wih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVswXS1uWzBdWzBdKSxvPShpLXIqKG5bMV1bMF0rblswXVswXSkpLzIsYT0tcipuWzBdWzFdO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1mdW5jdGlvbiBiWih0LGUsbil7cmV0dXJuIGdaKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVsxXS1uWzBdWzFdKSxvPS1yKm5bMF1bMF0sYT0oaS1yKihuWzFdWzFdK25bMF1bMV0pKS8yO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1kWi5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6cFooNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztkZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT1wWih0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LG1aLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bVoscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIHhaPU9ZKDMwKkxZKTtmdW5jdGlvbiB3Wih0LGUpe3JldHVybitlPyhmdW5jdGlvbiBuKHQsZSl7ZnVuY3Rpb24gbihpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtLGcpe3ZhciBfPWMtaSx5PXUtcix2PV8qXyt5Knk7aWYodj40KmUmJm0tLSl7dmFyIGI9YStkLHg9cytwLHc9bCtmLFM9VVkoYipiK3gqeCt3KncpLE09V1kody89UyksRT1JWShJWSh3KS0xKTxFWXx8SVkoby1oKTxFWT8obytoKS8yOlJZKHgsYiksVD10KEUsTSksQz1UWzBdLEE9VFsxXSxrPUMtaSxQPUEtcixMPXkqay1fKlA7KEwqTC92PmV8fElZKChfKmsreSpQKS92LS41KT4uM3x8YSpkK3MqcCtsKmY8eFopJiYobihpLHIsbyxhLHMsbCxDLEEsRSxiLz1TLHgvPVMsdyxtLGcpLGcucG9pbnQoQyxBKSxuKEMsQSxFLGIseCx3LGMsdSxoLGQscCxmLG0sZykpfX1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGkscixvLGEscyxsLGMsdSxoLGQscCxmLG09e3BvaW50OmcsbGluZVN0YXJ0Ol8sbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksbS5saW5lU3RhcnQ9Yn0scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLG0ubGluZVN0YXJ0PV99fTtmdW5jdGlvbiBnKG4saSl7bj10KG4saSksZS5wb2ludChuWzBdLG5bMV0pfWZ1bmN0aW9uIF8oKXt1PU5hTixtLnBvaW50PXksZS5saW5lU3RhcnQoKX1mdW5jdGlvbiB5KGkscil7dmFyIG89cFgoW2kscl0pLGE9dChpLHIpO24odSxoLGMsZCxwLGYsdT1hWzBdLGg9YVsxXSxjPWksZD1vWzBdLHA9b1sxXSxmPW9bMl0sMTYsZSksZS5wb2ludCh1LGgpfWZ1bmN0aW9uIHYoKXttLnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24gYigpe18oKSxtLnBvaW50PXgsbS5saW5lRW5kPXd9ZnVuY3Rpb24geCh0LGUpe3koaT10LGUpLHI9dSxvPWgsYT1kLHM9cCxsPWYsbS5wb2ludD15fWZ1bmN0aW9uIHcoKXtuKHUsaCxjLGQscCxmLHIsbyxpLGEscyxsLDE2LGUpLG0ubGluZUVuZD12LHYoKX1yZXR1cm4gbX19KSh0LGUpOihmdW5jdGlvbiBpKHQpe3JldHVybiBmWih7cG9pbnQ6ZnVuY3Rpb24oZSxuKXtlPXQoZSxuKSx0aGlzLnN0cmVhbS5wb2ludChlWzBdLGVbMV0pfX0pfSkodCl9dmFyIFNaPWZaKHtwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuc3RyZWFtLnBvaW50KHQqTFksZSpMWSl9fSk7ZnVuY3Rpb24gTVoodCl7cmV0dXJuIEVaKChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gRVoodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PW51bGwsYj1CJCx4PW51bGwsdz1tSyxTPS41LE09d1ooQyxTKTtmdW5jdGlvbiBFKHQpe3JldHVyblsodD1vKHRbMF0qTFksdFsxXSpMWSkpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gVCh0KXtyZXR1cm4odD1vLmludmVydCgodFswXS1uKS9oLChpLXRbMV0pL2gpKSYmW3RbMF0qUFksdFsxXSpQWV19ZnVuY3Rpb24gQyh0LHIpe3JldHVyblsodD1lKHQscikpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gQSgpe289bSQocj1fJChnLF8seSksZSk7dmFyIHQ9ZShmLG0pO3JldHVybiBuPWQtdFswXSpoLGk9cCt0WzFdKmgsaygpfWZ1bmN0aW9uIGsoKXtyZXR1cm4gYz11PW51bGwsRX1yZXR1cm4gRS5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIGMmJnU9PT10P2M6Yz1TWigoZnVuY3Rpb24gZSh0KXtyZXR1cm4gZlooe3BvaW50OmZ1bmN0aW9uKGUsbil7dmFyIGk9dChlLG4pO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChpWzBdLGlbMV0pfX0pfSkocikoYihNKHcodT10KSkpKSl9LEUucHJlY2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj10LHY9dm9pZCAwLGsoKSk6Yn0sRS5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz10LHg9YT1zPWw9bnVsbCxrKCkpOnd9LEUuY2xpcEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPSt0P1YkKHY9dCpMWSk6KHY9bnVsbCxCJCksaygpKTp2KlBZfSxFLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9bnVsbD09dD8oeD1hPXM9bD1udWxsLG1LKTpHJCh4PSt0WzBdWzBdLGE9K3RbMF1bMV0scz0rdFsxXVswXSxsPSt0WzFdWzFdKSxrKCkpOm51bGw9PXg/bnVsbDpbW3gsYV0sW3MsbF1dfSxFLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LEEoKSk6aH0sRS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0scD0rdFsxXSxBKCkpOltkLHBdfSxFLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj10WzBdJTM2MCpMWSxtPXRbMV0lMzYwKkxZLEEoKSk6W2YqUFksbSpQWV19LEUucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPXRbMF0lMzYwKkxZLF89dFsxXSUzNjAqTFkseT10Lmxlbmd0aD4yP3RbMl0lMzYwKkxZOjAsQSgpKTpbZypQWSxfKlBZLHkqUFldfSxFLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT13WihDLFM9dCp0KSxrKCkpOlVZKFMpfSxFLmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiBfWihFLHQsZSl9LEUuZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5WihFLHQsZSl9LEUuZml0V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdlooRSx0LGUpfSxFLmZpdEhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBiWihFLHQsZSl9LGZ1bmN0aW9uKCl7cmV0dXJuIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksRS5pbnZlcnQ9ZS5pbnZlcnQmJlQsQSgpfX1mdW5jdGlvbiBUWih0KXt2YXIgZT0wLG49VFkvMyxpPUVaKHQpLHI9aShlLG4pO3JldHVybiByLnBhcmFsbGVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9pKGU9dFswXSpMWSxuPXRbMV0qTFkpOltlKlBZLG4qUFldfSxyfWZ1bmN0aW9uIENaKHQsZSl7dmFyIG49RlkodCksaT0obitGWShlKSkvMjtpZihJWShpKTxFWSlyZXR1cm4oZnVuY3Rpb24gcih0KXt2YXIgZT1PWSh0KTtmdW5jdGlvbiBuKHQsbil7cmV0dXJuW3QqZSxGWShuKS9lXX1yZXR1cm4gbi5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bdC9lLFdZKG4qZSldfSxufSkodCk7dmFyIG89MStuKigyKmktbiksYT1VWShvKS9pO2Z1bmN0aW9uIHModCxlKXt2YXIgbj1VWShvLTIqaSpGWShlKSkvaTtyZXR1cm5bbipGWSh0Kj1pKSxhLW4qT1kodCldfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPWEtZTtyZXR1cm5bUlkodCxJWShuKSkvaSpWWShuKSxXWSgoby0odCp0K24qbikqaSppKS8oMippKSldfSxzfWZ1bmN0aW9uIEFaKCl7cmV0dXJuIFRaKENaKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIGtaKCl7cmV0dXJuIEFaKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gUFoodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9T1koZSkscj1PWShuKSxvPXQoaSpyKTtyZXR1cm5bbypyKkZZKGUpLG8qRlkobildfX1mdW5jdGlvbiBMWih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT1VWShlKmUrbipuKSxyPXQoaSksbz1GWShyKSxhPU9ZKHIpO3JldHVybltSWShlKm8saSphKSxXWShpJiZuKm8vaSldfX12YXIgSVo9UFooKGZ1bmN0aW9uKHQpe3JldHVybiBVWSgyLygxK3QpKX0pKTtJWi5pbnZlcnQ9TFooKGZ1bmN0aW9uKHQpe3JldHVybiAyKldZKHQvMil9KSk7dmFyIE5aPVBaKChmdW5jdGlvbih0KXtyZXR1cm4odD1HWSh0KSkmJnQvRlkodCl9KSk7ZnVuY3Rpb24gUloodCxlKXtyZXR1cm5bdCxCWShqWSgoQ1krZSkvMikpXX1mdW5jdGlvbiBPWih0KXt2YXIgZSxuLGkscj1NWih0KSxvPXIuY2VudGVyLGE9ci5zY2FsZSxzPXIudHJhbnNsYXRlLGw9ci5jbGlwRXh0ZW50LGM9bnVsbDtmdW5jdGlvbiB1KCl7dmFyIG89VFkqYSgpLHM9cih4JChyLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gbChudWxsPT1jP1tbc1swXS1vLHNbMV0tb10sW3NbMF0rbyxzWzFdK29dXTp0PT09Ulo/W1tNYXRoLm1heChzWzBdLW8sYyksZV0sW01hdGgubWluKHNbMF0rbyxuKSxpXV06W1tjLE1hdGgubWF4KHNbMV0tbyxlKV0sW24sTWF0aC5taW4oc1sxXStvLGkpXV0pfXJldHVybiByLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhKHQpLHUoKSk6YSgpfSxyLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0KSx1KCkpOnMoKX0sci5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8odCksdSgpKTpvKCl9LHIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9jPWU9bj1pPW51bGw6KGM9K3RbMF1bMF0sZT0rdFswXVsxXSxuPSt0WzFdWzBdLGk9K3RbMV1bMV0pLHUoKSk6bnVsbD09Yz9udWxsOltbYyxlXSxbbixpXV19LHUoKX1mdW5jdGlvbiB6Wih0KXtyZXR1cm4galkoKENZK3QpLzIpfWZ1bmN0aW9uIERaKHQsZSl7dmFyIG49T1kodCksaT10PT09ZT9GWSh0KTpCWShuL09ZKGUpKS9CWSh6WihlKS96Wih0KSkscj1uKkhZKHpaKHQpLGkpL2k7aWYoIWkpcmV0dXJuIFJaO2Z1bmN0aW9uIG8odCxlKXtyPjA/ZTwtQ1krRVkmJihlPS1DWStFWSk6ZT5DWS1FWSYmKGU9Q1ktRVkpO3ZhciBuPXIvSFkoelooZSksaSk7cmV0dXJuW24qRlkoaSp0KSxyLW4qT1koaSp0KV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89VlkoaSkqVVkodCp0K24qbik7cmV0dXJuW1JZKHQsSVkobikpL2kqVlkobiksMipOWShIWShyL28sMS9pKSktQ1ldfSxvfWZ1bmN0aW9uIEJaKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gSFoodCxlKXt2YXIgbj1PWSh0KSxpPXQ9PT1lP0ZZKHQpOihuLU9ZKGUpKS8oZS10KSxyPW4vaSt0O2lmKElZKGkpPEVZKXJldHVybiBCWjtmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKkZZKG8pLHItbipPWShvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lO3JldHVybltSWSh0LElZKG4pKS9pKlZZKG4pLHItVlkoaSkqVVkodCp0K24qbildfSxvfWZ1bmN0aW9uIEZaKHQsZSl7dmFyIG49T1koZSksaT1PWSh0KSpuO3JldHVybltuKkZZKHQpL2ksRlkoZSkvaV19ZnVuY3Rpb24gVloodCxlLG4saSl7cmV0dXJuIDE9PT10JiYxPT09ZSYmMD09PW4mJjA9PT1pP21LOmZaKHtwb2ludDpmdW5jdGlvbihyLG8pe3RoaXMuc3RyZWFtLnBvaW50KHIqdCtuLG8qZStpKX19KX1mdW5jdGlvbiBVWih0LGUpe3ZhciBuPWUqZSxpPW4qbjtyZXR1cm5bdCooLjg3MDctLjEzMTk3OSpuK2kqKGkqKC4wMDM5NzEqbi0uMDAxNTI5KmkpLS4wMTM3OTEpKSxlKigxLjAwNzIyNituKiguMDE1MDg1K2kqKC4wMjg4NzQqbi0uMDQ0NDc1LS4wMDU5MTYqaSkpKV19ZnVuY3Rpb24galoodCxlKXtyZXR1cm5bT1koZSkqRlkodCksRlkoZSldfWZ1bmN0aW9uIEdaKHQsZSl7dmFyIG49T1koZSksaT0xK09ZKHQpKm47cmV0dXJuW24qRlkodCkvaSxGWShlKS9pXX1mdW5jdGlvbiBXWih0LGUpe3JldHVybltCWShqWSgoQ1krZSkvMikpLC10XX1mdW5jdGlvbiBxWih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBZWih0LGUpe3JldHVybiB0K2UueH1mdW5jdGlvbiBYWih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUueSl9ZnVuY3Rpb24gJFoodCl7dmFyIGU9MCxuPXQuY2hpbGRyZW4saT1uJiZuLmxlbmd0aDtpZihpKWZvcig7LS1pPj0wOyllKz1uW2ldLnZhbHVlO2Vsc2UgZT0xO3QudmFsdWU9ZX1mdW5jdGlvbiBLWih0LGUpe3ZhciBuLGkscixvLGEscz1uZXcgdEoodCksbD0rdC52YWx1ZSYmKHMudmFsdWU9dC52YWx1ZSksYz1bc107Zm9yKG51bGw9PWUmJihlPVpaKTtuPWMucG9wKCk7KWlmKGwmJihuLnZhbHVlPStuLmRhdGEudmFsdWUpLChyPWUobi5kYXRhKSkmJihhPXIubGVuZ3RoKSlmb3Iobi5jaGlsZHJlbj1uZXcgQXJyYXkoYSksbz1hLTE7bz49MDstLW8pYy5wdXNoKGk9bi5jaGlsZHJlbltvXT1uZXcgdEoocltvXSkpLGkucGFyZW50PW4saS5kZXB0aD1uLmRlcHRoKzE7cmV0dXJuIHMuZWFjaEJlZm9yZShRWil9ZnVuY3Rpb24gWloodCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVuY3Rpb24gSloodCl7dC5kYXRhPXQuZGF0YS5kYXRhfWZ1bmN0aW9uIFFaKHQpe3ZhciBlPTA7ZG97dC5oZWlnaHQ9ZX13aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrZSl9ZnVuY3Rpb24gdEoodCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9TlouaW52ZXJ0PUxaKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxSWi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKk5ZKERZKGUpKS1DWV19LEJaLmludmVydD1CWixGWi5pbnZlcnQ9TFooTlkpLFVaLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuLGk9ZSxyPTI1O2Rve3ZhciBvPWkqaSxhPW8qbztpLT1uPShpKigxLjAwNzIyNitvKiguMDE1MDg1K2EqKC4wMjg4NzQqby0uMDQ0NDc1LS4wMDU5MTYqYSkpKS1lKS8oMS4wMDcyMjYrbyooLjA0NTI1NSthKiguMjU5ODY2Km8tLjMxMTMyNS0uMDA1OTE2KjExKmEpKSl9d2hpbGUoSVkobik+RVkmJi0tcj4wKTtyZXR1cm5bdC8oLjg3MDcrKG89aSppKSoobyoobypvKm8qKC4wMDM5NzEtLjAwMTUyOSpvKS0uMDEzNzkxKS0uMTMxOTc5KSksaV19LGpaLmludmVydD1MWihXWSksR1ouaW52ZXJ0PUxaKChmdW5jdGlvbih0KXtyZXR1cm4gMipOWSh0KX0pKSxXWi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bLWUsMipOWShEWSh0KSktQ1ldfSx0Si5wcm90b3R5cGU9S1oucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0Sixjb3VudDpmdW5jdGlvbiBlSigpe3JldHVybiB0aGlzLmVhY2hBZnRlcigkWil9LGVhY2g6ZnVuY3Rpb24gbkoodCl7dmFyIGUsbixpLHIsbz10aGlzLGE9W29dO2Rve2ZvcihlPWEucmV2ZXJzZSgpLGE9W107bz1lLnBvcCgpOylpZih0KG8pLG49by5jaGlsZHJlbilmb3IoaT0wLHI9bi5sZW5ndGg7aTxyOysraSlhLnB1c2gobltpXSl9d2hpbGUoYS5sZW5ndGgpO3JldHVybiB0aGlzfSxlYWNoQWZ0ZXI6ZnVuY3Rpb24gaUoodCl7Zm9yKHZhciBlLG4saSxyPXRoaXMsbz1bcl0sYT1bXTtyPW8ucG9wKCk7KWlmKGEucHVzaChyKSxlPXIuY2hpbGRyZW4pZm9yKG49MCxpPWUubGVuZ3RoO248aTsrK24pby5wdXNoKGVbbl0pO2Zvcig7cj1hLnBvcCgpOyl0KHIpO3JldHVybiB0aGlzfSxlYWNoQmVmb3JlOmZ1bmN0aW9uIHJKKHQpe2Zvcih2YXIgZSxuLGk9dGhpcyxyPVtpXTtpPXIucG9wKCk7KWlmKHQoaSksZT1pLmNoaWxkcmVuKWZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pci5wdXNoKGVbbl0pO3JldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24gb0oodCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKChmdW5jdGlvbihlKXtmb3IodmFyIG49K3QoZS5kYXRhKXx8MCxpPWUuY2hpbGRyZW4scj1pJiZpLmxlbmd0aDstLXI+PTA7KW4rPWlbcl0udmFsdWU7ZS52YWx1ZT1ufSkpfSxzb3J0OmZ1bmN0aW9uIGFKKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc29ydCh0KX0pKX0scGF0aDpmdW5jdGlvbiBzSih0KXtmb3IodmFyIGU9dGhpcyxuPShmdW5jdGlvbiBpKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIG49dC5hbmNlc3RvcnMoKSxpPWUuYW5jZXN0b3JzKCkscj1udWxsO3Q9bi5wb3AoKSxlPWkucG9wKCk7Zm9yKDt0PT09ZTspcj10LHQ9bi5wb3AoKSxlPWkucG9wKCk7cmV0dXJuIHJ9KShlLHQpLHI9W2VdO2UhPT1uOylyLnB1c2goZT1lLnBhcmVudCk7Zm9yKHZhciBvPXIubGVuZ3RoO3QhPT1uOylyLnNwbGljZShvLDAsdCksdD10LnBhcmVudDtyZXR1cm4gcn0sYW5jZXN0b3JzOmZ1bmN0aW9uIGxKKCl7Zm9yKHZhciB0PXRoaXMsZT1bdF07dD10LnBhcmVudDspZS5wdXNoKHQpO3JldHVybiBlfSxkZXNjZW5kYW50czpmdW5jdGlvbiBjSigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pKSx0fSxsZWF2ZXM6ZnVuY3Rpb24gdUooKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVufHx0LnB1c2goZSl9KSksdH0sbGlua3M6ZnVuY3Rpb24gaEooKXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24obil7biE9PXQmJmUucHVzaCh7c291cmNlOm4ucGFyZW50LHRhcmdldDpufSl9KSksZX0sY29weTpmdW5jdGlvbiBkSigpe3JldHVybiBLWih0aGlzKS5lYWNoQmVmb3JlKEpaKX19O3ZhciBwSj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gZkoodCl7Zm9yKHZhciBlLG4saT0wLHI9KHQ9KGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG4saT10Lmxlbmd0aDtpOyluPU1hdGgucmFuZG9tKCkqaS0tfDAsZT10W2ldLHRbaV09dFtuXSx0W25dPWU7cmV0dXJuIHR9KShwSi5jYWxsKHQpKSkubGVuZ3RoLGE9W107aTxyOyllPXRbaV0sbiYmX0oobixlKT8rK2k6KG49dkooYT1tSihhLGUpKSxpPTApO3JldHVybiBufWZ1bmN0aW9uIG1KKHQsZSl7dmFyIG4saTtpZih5SihlLHQpKXJldHVybltlXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKWlmKGdKKGUsdFtuXSkmJnlKKGJKKHRbbl0sZSksdCkpcmV0dXJuW3Rbbl0sZV07Zm9yKG49MDtuPHQubGVuZ3RoLTE7KytuKWZvcihpPW4rMTtpPHQubGVuZ3RoOysraSlpZihnSihiSih0W25dLHRbaV0pLGUpJiZnSihiSih0W25dLGUpLHRbaV0pJiZnSihiSih0W2ldLGUpLHRbbl0pJiZ5Sih4Sih0W25dLHRbaV0sZSksdCkpcmV0dXJuW3Rbbl0sdFtpXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gZ0oodCxlKXt2YXIgbj10LnItZS5yLGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG48MHx8bipuPGkqaStyKnJ9ZnVuY3Rpb24gX0oodCxlKXt2YXIgbj10LnItZS5yKzFlLTYsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+aSppK3Iqcn1mdW5jdGlvbiB5Sih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKWlmKCFfSih0LGVbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHZKKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybihmdW5jdGlvbiBlKHQpe3JldHVybnt4OnQueCx5OnQueSxyOnQucn19KSh0WzBdKTtjYXNlIDI6cmV0dXJuIGJKKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiB4Sih0WzBdLHRbMV0sdFsyXSl9fWZ1bmN0aW9uIGJKKHQsZSl7dmFyIG49dC54LGk9dC55LHI9dC5yLG89ZS54LGE9ZS55LHM9ZS5yLGw9by1uLGM9YS1pLHU9cy1yLGg9TWF0aC5zcXJ0KGwqbCtjKmMpO3JldHVybnt4OihuK28rbC9oKnUpLzIseTooaSthK2MvaCp1KS8yLHI6KGgrcitzKS8yfX1mdW5jdGlvbiB4Sih0LGUsbil7dmFyIGk9dC54LHI9dC55LG89dC5yLGE9ZS54LHM9ZS55LGw9ZS5yLGM9bi54LHU9bi55LGg9bi5yLGQ9aS1hLHA9aS1jLGY9ci1zLG09ci11LGc9bC1vLF89aC1vLHk9aSppK3Iqci1vKm8sdj15LWEqYS1zKnMrbCpsLGI9eS1jKmMtdSp1K2gqaCx4PXAqZi1kKm0sdz0oZipiLW0qdikvKDIqeCktaSxTPShtKmctZipfKS94LE09KHAqdi1kKmIpLygyKngpLXIsRT0oZCpfLXAqZykveCxUPVMqUytFKkUtMSxDPTIqKG8rdypTK00qRSksQT13KncrTSpNLW8qbyxrPS0oVD8oQytNYXRoLnNxcnQoQypDLTQqVCpBKSkvKDIqVCk6QS9DKTtyZXR1cm57eDppK3crUyprLHk6citNK0UqayxyOmt9fWZ1bmN0aW9uIHdKKHQsZSxuKXt2YXIgaT10Lngscj10Lnksbz1lLnIrbi5yLGE9dC5yK24ucixzPWUueC1pLGw9ZS55LXIsYz1zKnMrbCpsO2lmKGMpe3ZhciB1PS41KygoYSo9YSktKG8qPW8pKS8oMipjKSxoPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyooYStjKS0oYS09YykqYS1vKm8pKS8oMipjKTtuLng9aSt1KnMraCpsLG4ueT1yK3UqbC1oKnN9ZWxzZSBuLng9aSthLG4ueT1yfWZ1bmN0aW9uIFNKKHQsZSl7dmFyIG49ZS54LXQueCxpPWUueS10Lnkscj10LnIrZS5yO3JldHVybiByKnItMWUtNj5uKm4raSppfWZ1bmN0aW9uIE1KKHQpe3ZhciBlPXQuXyxuPXQubmV4dC5fLGk9ZS5yK24ucixyPShlLngqbi5yK24ueCplLnIpL2ksbz0oZS55Km4ucituLnkqZS5yKS9pO3JldHVybiByKnIrbypvfWZ1bmN0aW9uIEVKKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbH1mdW5jdGlvbiBUSih0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybiAwO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGg7aWYoKGU9dFswXSkueD0wLGUueT0wLCEocj4xKSlyZXR1cm4gZS5yO2lmKGUueD0tKG49dFsxXSkucixuLng9ZS5yLG4ueT0wLCEocj4yKSlyZXR1cm4gZS5yK24ucjt3SihuLGUsaT10WzJdKSxlPW5ldyBFSihlKSxuPW5ldyBFSihuKSxpPW5ldyBFSihpKSxlLm5leHQ9aS5wcmV2aW91cz1uLG4ubmV4dD1lLnByZXZpb3VzPWksaS5uZXh0PW4ucHJldmlvdXM9ZTt0OmZvcihzPTM7czxyOysrcyl7d0ooZS5fLG4uXyxpPXRbc10pLGk9bmV3IEVKKGkpLGw9bi5uZXh0LGM9ZS5wcmV2aW91cyx1PW4uXy5yLGg9ZS5fLnI7ZG97aWYodTw9aCl7aWYoU0oobC5fLGkuXykpe2UubmV4dD1uPWwsbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fXUrPWwuXy5yLGw9bC5uZXh0fWVsc2V7aWYoU0ooYy5fLGkuXykpeyhlPWMpLm5leHQ9bixuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9Yy5fLnIsYz1jLnByZXZpb3VzfX13aGlsZShsIT09Yy5uZXh0KTtmb3IoaS5wcmV2aW91cz1lLGkubmV4dD1uLGUubmV4dD1uLnByZXZpb3VzPW49aSxvPU1KKGUpOyhpPWkubmV4dCkhPT1uOykoYT1NSihpKSk8byYmKGU9aSxvPWEpO249ZS5uZXh0fWZvcihlPVtuLl9dLGk9bjsoaT1pLm5leHQpIT09bjspZS5wdXNoKGkuXyk7Zm9yKGk9ZkooZSkscz0wO3M8cjsrK3MpKGU9dFtzXSkueC09aS54LGUueS09aS55O3JldHVybiBpLnJ9ZnVuY3Rpb24gQ0oodCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpBSih0KX1mdW5jdGlvbiBBSih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24ga0ooKXtyZXR1cm4gMH1mdW5jdGlvbiBQSih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gTEoodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBJSih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8KGUucj1NYXRoLm1heCgwLCt0KGUpfHwwKSl9fWZ1bmN0aW9uIE5KKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKGk9bi5jaGlsZHJlbil7dmFyIGkscixvLGE9aS5sZW5ndGgscz10KG4pKmV8fDA7aWYocylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yKz1zO2lmKG89VEooaSkscylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yLT1zO24ucj1vK3N9fX1mdW5jdGlvbiBSSih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5wYXJlbnQ7ZS5yKj10LG4mJihlLng9bi54K3QqZS54LGUueT1uLnkrdCplLnkpfX1mdW5jdGlvbiBPSih0KXt0LngwPU1hdGgucm91bmQodC54MCksdC55MD1NYXRoLnJvdW5kKHQueTApLHQueDE9TWF0aC5yb3VuZCh0LngxKSx0LnkxPU1hdGgucm91bmQodC55MSl9ZnVuY3Rpb24gekoodCxlLG4saSxyKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHM9LTEsbD1hLmxlbmd0aCxjPXQudmFsdWUmJihpLWUpL3QudmFsdWU7KytzPGw7KShvPWFbc10pLnkwPW4sby55MT1yLG8ueDA9ZSxvLngxPWUrPW8udmFsdWUqY312YXIgREo9e2RlcHRoOi0xfSxCSj17fTtmdW5jdGlvbiBISih0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBGSih0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiBWSih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBVSih0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbMF06dC50fWZ1bmN0aW9uIGpKKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVtlLmxlbmd0aC0xXTp0LnR9ZnVuY3Rpb24gR0oodCxlLG4pe3ZhciBpPW4vKGUuaS10LmkpO2UuYy09aSxlLnMrPW4sdC5jKz1pLGUueis9bixlLm0rPW59ZnVuY3Rpb24gV0oodCxlLG4pe3JldHVybiB0LmEucGFyZW50PT09ZS5wYXJlbnQ/dC5hOm59ZnVuY3Rpb24gcUoodCxlKXt0aGlzLl89dCx0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLkE9bnVsbCx0aGlzLmE9dGhpcyx0aGlzLno9MCx0aGlzLm09MCx0aGlzLmM9MCx0aGlzLnM9MCx0aGlzLnQ9bnVsbCx0aGlzLmk9ZX1mdW5jdGlvbiBZSih0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKHItbikvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueDA9ZSxvLngxPWksby55MD1uLG8ueTE9bis9by52YWx1ZSpjfXFKLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRKLnByb3RvdHlwZSk7dmFyIFhKPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiAkSih0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHMsbCxjLHUsaCxkLHAsZixtLGcsXz1bXSx5PWUuY2hpbGRyZW4sdj0wLGI9MCx4PXkubGVuZ3RoLHc9ZS52YWx1ZTt2PHg7KXtsPXItbixjPW8taTtkb3t1PXlbYisrXS52YWx1ZX13aGlsZSghdSYmYjx4KTtmb3IoaD1kPXUsZz11KnUqKG09TWF0aC5tYXgoYy9sLGwvYykvKHcqdCkpLGY9TWF0aC5tYXgoZC9nLGcvaCk7Yjx4OysrYil7aWYodSs9cz15W2JdLnZhbHVlLHM8aCYmKGg9cykscz5kJiYoZD1zKSxnPXUqdSptLChwPU1hdGgubWF4KGQvZyxnL2gpKT5mKXt1LT1zO2JyZWFrfWY9cH1fLnB1c2goYT17dmFsdWU6dSxkaWNlOmw8YyxjaGlsZHJlbjp5LnNsaWNlKHYsYil9KSxhLmRpY2U/ekooYSxuLGkscix3P2krPWMqdS93Om8pOllKKGEsbixpLHc/bis9bCp1L3c6cixvKSx3LT11LHY9Yn1yZXR1cm4gX312YXIgS0o9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4saSxyLG8peyRKKGUsdCxuLGkscixvKX1yZXR1cm4gbi5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxufSkoWEopO3ZhciBaSj0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbixpLHIsbyl7aWYoKGE9dC5fc3F1YXJpZnkpJiZhLnJhdGlvPT09ZSlmb3IodmFyIGEscyxsLGMsdSxoPS0xLGQ9YS5sZW5ndGgscD10LnZhbHVlOysraDxkOyl7Zm9yKGw9KHM9YVtoXSkuY2hpbGRyZW4sYz1zLnZhbHVlPTAsdT1sLmxlbmd0aDtjPHU7KytjKXMudmFsdWUrPWxbY10udmFsdWU7cy5kaWNlP3pKKHMsbixpLHIsaSs9KG8taSkqcy52YWx1ZS9wKTpZSihzLG4saSxuKz0oci1uKSpzLnZhbHVlL3AsbykscC09cy52YWx1ZX1lbHNlIHQuX3NxdWFyaWZ5PWE9JEooZSx0LG4saSxyLG8pLGEucmF0aW89ZX1yZXR1cm4gbi5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxufSkoWEopO2Z1bmN0aW9uIEpKKHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBRSih0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgaSBpbiBlKW5baV09ZVtpXTtyZXR1cm4gbn1mdW5jdGlvbiB0USgpe312YXIgZVE9LjcsblE9MS9lUSxpUT0iXFxzKihbKy1dP1xcZCspXFxzKiIsclE9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsb1E9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGFRPS9eIyhbMC05YS1mXXszLDh9KSQvLHNRPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tpUSxpUSxpUV0rIlxcKSQiKSxsUT1uZXcgUmVnRXhwKCJecmdiXFwoIitbb1Esb1Esb1FdKyJcXCkkIiksY1E9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tpUSxpUSxpUSxyUV0rIlxcKSQiKSx1UT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW29RLG9RLG9RLHJRXSsiXFwpJCIpLGhRPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tyUSxvUSxvUV0rIlxcKSQiKSxkUT1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW3JRLG9RLG9RLHJRXSsiXFwpJCIpLHBRPXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIGZRKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gbVEoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBnUSh0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1hUS5leGVjKHQpKT8obj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT1uP19RKGUpOjM9PT1uP25ldyB4UShlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/eVEoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwoMjU1JmUpLzI1NSk6ND09PW4/eVEoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1zUS5leGVjKHQpKT9uZXcgeFEoZVsxXSxlWzJdLGVbM10sMSk6KGU9bFEuZXhlYyh0KSk/bmV3IHhRKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPWNRLmV4ZWModCkpP3lRKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXVRLmV4ZWModCkpP3lRKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPWhRLmV4ZWModCkpP0VRKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9ZFEuZXhlYyh0KSk/RVEoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpwUS5oYXNPd25Qcm9wZXJ0eSh0KT9fUShwUVt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IHhRKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gX1EodCl7cmV0dXJuIG5ldyB4USh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24geVEodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyB4USh0LGUsbixpKX1mdW5jdGlvbiB2USh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRRfHwodD1nUSh0KSksdD9uZXcgeFEoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IHhRfWZ1bmN0aW9uIGJRKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD92USh0KTpuZXcgeFEodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHhRKHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiB3USgpe3JldHVybiIjIitNUSh0aGlzLnIpK01RKHRoaXMuZykrTVEodGhpcy5iKX1mdW5jdGlvbiBTUSgpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIE1RKHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVuY3Rpb24gRVEodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBBUSh0LGUsbixpKX1mdW5jdGlvbiBUUSh0KXtpZih0IGluc3RhbmNlb2YgQVEpcmV0dXJuIG5ldyBBUSh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiB0UXx8KHQ9Z1EodCkpLCF0KXJldHVybiBuZXcgQVE7aWYodCBpbnN0YW5jZW9mIEFRKXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LG49dC5nLzI1NSxpPXQuYi8yNTUscj1NYXRoLm1pbihlLG4saSksbz1NYXRoLm1heChlLG4saSksYT1OYU4scz1vLXIsbD0obytyKS8yO3JldHVybiBzPyhhPWU9PT1vPyhuLWkpL3MrNioobjxpKTpuPT09bz8oaS1lKS9zKzI6KGUtbikvcys0LHMvPWw8LjU/bytyOjItby1yLGEqPTYwKTpzPWw+MCYmbDwxPzA6YSxuZXcgQVEoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiBDUSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VFEodCk6bmV3IEFRKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBBUSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24ga1EodCxlLG4pe3JldHVybiAyNTUqKHQ8NjA/ZSsobi1lKSp0LzYwOnQ8MTgwP246dDwyNDA/ZSsobi1lKSooMjQwLXQpLzYwOmUpfUpKKHRRLGdRLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmZRLGZvcm1hdEhleDpmUSxmb3JtYXRIc2w6ZnVuY3Rpb24gUFEoKXtyZXR1cm4gVFEodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjptUSx0b1N0cmluZzptUX0pLEpKKHhRLGJRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P25ROk1hdGgucG93KG5RLHQpLG5ldyB4USh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9lUTpNYXRoLnBvdyhlUSx0KSxuZXcgeFEodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDp3USxmb3JtYXRIZXg6d1EsZm9ybWF0UmdiOlNRLHRvU3RyaW5nOlNRfSkpLEpKKEFRLENRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P25ROk1hdGgucG93KG5RLHQpLG5ldyBBUSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2VROk1hdGgucG93KGVRLHQpLG5ldyBBUSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxpPW4rKG48LjU/bjoxLW4pKmUscj0yKm4taTtyZXR1cm4gbmV3IHhRKGtRKHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLGtRKHQscixpKSxrUSh0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBMUT1NYXRoLlBJLzE4MCxJUT0xODAvTWF0aC5QSSxOUT0uOTY0MjIsUlE9LjgyNTIxLE9RPTQvMjkselE9Ni8yOSxEUT0zKnpRKnpRO2Z1bmN0aW9uIEJRKHQpe2lmKHQgaW5zdGFuY2VvZiBGUSlyZXR1cm4gbmV3IEZRKHQubCx0LmEsdC5iLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIFlRKXJldHVybiBYUSh0KTt0IGluc3RhbmNlb2YgeFF8fCh0PXZRKHQpKTt2YXIgZSxuLGk9R1EodC5yKSxyPUdRKHQuZyksbz1HUSh0LmIpLGE9VlEoKC4yMjI1MDQ1KmkrLjcxNjg3ODYqcisuMDYwNjE2OSpvKS8xKTtyZXR1cm4gaT09PXImJnI9PT1vP2U9bj1hOihlPVZRKCguNDM2MDc0NyppKy4zODUwNjQ5KnIrLjE0MzA4MDQqbykvTlEpLG49VlEoKC4wMTM5MzIyKmkrLjA5NzEwNDUqcisuNzE0MTczMypvKS9SUSkpLG5ldyBGUSgxMTYqYS0xNiw1MDAqKGUtYSksMjAwKihhLW4pLHQub3BhY2l0eSl9ZnVuY3Rpb24gSFEodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0JRKHQpOm5ldyBGUSh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gRlEodCxlLG4saSl7dGhpcy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFZRKHQpe3JldHVybiB0Pi4wMDg4NTY0NTE2NzkwMzU2MzE/TWF0aC5wb3codCwxLzMpOnQvRFErT1F9ZnVuY3Rpb24gVVEodCl7cmV0dXJuIHQ+elE/dCp0KnQ6RFEqKHQtT1EpfWZ1bmN0aW9uIGpRKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gR1EodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gV1EodCl7aWYodCBpbnN0YW5jZW9mIFlRKXJldHVybiBuZXcgWVEodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgRlF8fCh0PUJRKHQpKSwwPT09dC5hJiYwPT09dC5iKXJldHVybiBuZXcgWVEoTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqSVE7cmV0dXJuIG5ldyBZUShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBxUSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/V1EodCk6bmV3IFlRKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBZUSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gWFEodCl7aWYoaXNOYU4odC5oKSlyZXR1cm4gbmV3IEZRKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgZT10LmgqTFE7cmV0dXJuIG5ldyBGUSh0LmwsTWF0aC5jb3MoZSkqdC5jLE1hdGguc2luKGUpKnQuYyx0Lm9wYWNpdHkpfUpKKEZRLEhRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZRKHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRlEodGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsZT1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLG49aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gbmV3IHhRKGpRKDMuMTMzODU2MSooZT1OUSpVUShlKSktMS42MTY4NjY3Kih0PTEqVVEodCkpLS40OTA2MTQ2KihuPVJRKlVRKG4pKSksalEoLS45Nzg3Njg0KmUrMS45MTYxNDE1KnQrLjAzMzQ1NCpuKSxqUSguMDcxOTQ1MyplLS4yMjg5OTE0KnQrMS40MDUyNDI3Km4pLHRoaXMub3BhY2l0eSl9fSkpLEpKKFlRLHFRLFFKKHRRLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFlRKHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWVEodGhpcy5oLHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gWFEodGhpcykucmdiKCl9fSkpO3ZhciAkUT0tLjE0ODYxLEtRPTEuNzgyNzcsWlE9LS4yOTIyNyxKUT0tLjkwNjQ5LFFRPTEuOTcyOTQsdDE9UVEqSlEsZTE9UVEqS1EsbjE9S1EqWlEtSlEqJFE7ZnVuY3Rpb24gaTEodCl7aWYodCBpbnN0YW5jZW9mIG8xKXJldHVybiBuZXcgbzEodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgeFF8fCh0PXZRKHQpKTt2YXIgZT10LmcvMjU1LG49dC5iLzI1NSxpPShuMSpuK3QxKih0LnIvMjU1KS1lMSplKS8tNS45NjE1MTIyOTEyLHI9bi1pLG89KFFRKihlLWkpLVpRKnIpL0pRLGE9TWF0aC5zcXJ0KG8qbytyKnIpLyhRUSppKigxLWkpKSxzPWE/TWF0aC5hdGFuMihvLHIpKklRLTEyMDpOYU47cmV0dXJuIG5ldyBvMShzPDA/cyszNjA6cyxhLGksdC5vcGFjaXR5KX1mdW5jdGlvbiByMSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/aTEodCk6bmV3IG8xKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBvMSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gYTEodCxlLG4saSxyKXt2YXIgbz10KnQsYT1vKnQ7cmV0dXJuKCgxLTMqdCszKm8tYSkqZSsoNC02Km8rMyphKSpuKygxKzMqdCszKm8tMyphKSppK2EqcikvNn1mdW5jdGlvbiBzMSh0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSkscj10W2ldLG89dFtpKzFdO3JldHVybiBhMSgobi1pL2UpKmUsaT4wP3RbaS0xXToyKnItbyxyLG8saTxlLTE/dFtpKzJdOjIqby1yKX19ZnVuY3Rpb24gbDEodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKTtyZXR1cm4gYTEoKG4taS9lKSplLHRbKGkrZS0xKSVlXSx0W2klZV0sdFsoaSsxKSVlXSx0WyhpKzIpJWVdKX19ZnVuY3Rpb24gYzEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHUxKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19ZnVuY3Rpb24gaDEodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/dTEodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOmMxKGlzTmFOKHQpP2U6dCl9ZnVuY3Rpb24gZDEodCl7cmV0dXJuIDE9PSh0PSt0KT9wMTpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpjMShpc05hTihlKT9uOmUpfX1mdW5jdGlvbiBwMSh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj91MSh0LG4pOmMxKGlzTmFOKHQpP2U6dCl9SkoobzEscjEsUUoodFEse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/blE6TWF0aC5wb3coblEsdCksbmV3IG8xKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/ZVE6TWF0aC5wb3coZVEsdCksbmV3IG8xKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpMUSxlPSt0aGlzLmwsbj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksaT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpO3JldHVybiBuZXcgeFEoMjU1KihlK24qKCRRKmkrS1EqcikpLDI1NSooZStuKihaUSppK0pRKnIpKSwyNTUqKGUrbiooUVEqaSkpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciBmMT0oZnVuY3Rpb24gdChlKXt2YXIgbj1kMShlKTtmdW5jdGlvbiBpKHQsZSl7dmFyIGk9bigodD1iUSh0KSkuciwoZT1iUShlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPXAxKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPWkoZSksdC5nPXIoZSksdC5iPW8oZSksdC5vcGFjaXR5PWEoZSksdCsiIn19cmV0dXJuIGkuZ2FtbWE9dCxpfSkoMSk7ZnVuY3Rpb24gbTEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGkscj1lLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxzPW5ldyBBcnJheShyKTtmb3Iobj0wO248cjsrK24paT1iUShlW25dKSxvW25dPWkucnx8MCxhW25dPWkuZ3x8MCxzW25dPWkuYnx8MDtyZXR1cm4gbz10KG8pLGE9dChhKSxzPXQocyksaS5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIGkucj1vKHQpLGkuZz1hKHQpLGkuYj1zKHQpLGkrIiJ9fX12YXIgZzE9bTEoczEpLF8xPW0xKGwxKTtmdW5jdGlvbiB5MSh0LGUpe3ZhciBuLGk9ZT9lLmxlbmd0aDowLHI9dD9NYXRoLm1pbihpLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxyOysrbilvW25dPUUxKHRbbl0sZVtuXSk7Zm9yKDtuPGk7KytuKWFbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG49MDtuPHI7KytuKWFbbl09b1tuXSh0KTtyZXR1cm4gYX19ZnVuY3Rpb24gdjEodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gZS09dD0rdCxmdW5jdGlvbihpKXtyZXR1cm4gbi5zZXRUaW1lKHQrZSppKSxufX1mdW5jdGlvbiBiMSh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24geDEodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPUUxKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHcxPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxTMT1uZXcgUmVnRXhwKHcxLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIE0xKHQsZSl7dmFyIG4saSxyLG89dzEubGFzdEluZGV4PVMxLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj13MS5leGVjKHQpKSYmKGk9UzEuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmIxKG4saSl9KSksbz1TMS5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gRTEodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP2MxKGUpOigibnVtYmVyIj09PWk/YjE6InN0cmluZyI9PT1pPyhuPWdRKGUpKT8oZT1uLGYxKTpNMTplIGluc3RhbmNlb2YgZ1E/ZjE6ZSBpbnN0YW5jZW9mIERhdGU/djE6QXJyYXkuaXNBcnJheShlKT95MToiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/eDE6YjEpKHQsZSl9dmFyIFQxLEMxLEExLGsxLFAxPTE4MC9NYXRoLlBJLEwxPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIEkxKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKlAxLHNrZXdYOk1hdGguYXRhbihsKSpQMSxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gTjEodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpiMSh0LHIpfSx7aTpsLTIseDpiMShpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmIxKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpiMSh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6YjEodCxuKX0se2k6cy0yLHg6YjEoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIFIxPU4xKChmdW5jdGlvbiBPMSh0KXtyZXR1cm4ibm9uZSI9PT10P0wxOihUMXx8KFQxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLEMxPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxBMT1kb2N1bWVudC5kZWZhdWx0VmlldyksVDEuc3R5bGUudHJhbnNmb3JtPXQsdD1BMS5nZXRDb21wdXRlZFN0eWxlKEMxLmFwcGVuZENoaWxkKFQxKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxDMS5yZW1vdmVDaGlsZChUMSksSTEoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLHoxPU4xKChmdW5jdGlvbiBEMSh0KXtyZXR1cm4gbnVsbD09dD9MMTooazF8fChrMT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxrMS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9azEudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/STEoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6TDEpfSksIiwgIiwiKSIsIikiKSxCMT1NYXRoLlNRUlQyO2Z1bmN0aW9uIEgxKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIEYxKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9Q1EoZSkpLmgsKG49Q1EobikpLmgpLHI9cDEoZS5zLG4ucyksbz1wMShlLmwsbi5sKSxhPXAxKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5zPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBWMT1GMShoMSksVTE9RjEocDEpO2Z1bmN0aW9uIGoxKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9cVEoZSkpLmgsKG49cVEobikpLmgpLHI9cDEoZS5jLG4uYyksbz1wMShlLmwsbi5sKSxhPXAxKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5jPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBHMT1qMShoMSksVzE9ajEocDEpO2Z1bmN0aW9uIHExKHQpe3JldHVybihmdW5jdGlvbiBlKG4pe2Z1bmN0aW9uIGkoZSxpKXt2YXIgcj10KChlPXIxKGUpKS5oLChpPXIxKGkpKS5oKSxvPXAxKGUucyxpLnMpLGE9cDEoZS5sLGkubCkscz1wMShlLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1yKHQpLGUucz1vKHQpLGUubD1hKE1hdGgucG93KHQsbikpLGUub3BhY2l0eT1zKHQpLGUrIiJ9fXJldHVybiBuPStuLGkuZ2FtbWE9ZSxpfSkoMSl9dmFyIFkxPXExKGgxKSxYMT1xMShwMSk7dmFyICQxPU1hdGguUEksSzE9MiokMSxaMT0xZS02LEoxPUsxLVoxO2Z1bmN0aW9uIFExKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gdDAoKXtyZXR1cm4gbmV3IFExfWZ1bmN0aW9uIGUwKHQsZSxuKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKS0oZVsxXS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBuMCh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX1mdW5jdGlvbiBpMCh0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj1bMCwxXSxpPTIscj0yO3I8ZTsrK3Ipe2Zvcig7aT4xJiZlMCh0W25baS0yXV0sdFtuW2ktMV1dLHRbcl0pPD0wOyktLWk7bltpKytdPXJ9cmV0dXJuIG4uc2xpY2UoMCxpKX1mdW5jdGlvbiByMCh0LGUsbixpKXtpZihpc05hTihlKXx8aXNOYU4obikpcmV0dXJuIHQ7dmFyIHIsbyxhLHMsbCxjLHUsaCxkLHA9dC5fcm9vdCxmPXtkYXRhOml9LG09dC5feDAsZz10Ll95MCxfPXQuX3gxLHk9dC5feTE7aWYoIXApcmV0dXJuIHQuX3Jvb3Q9Zix0O2Zvcig7cC5sZW5ndGg7KWlmKChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hLHI9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiByW2hdPWYsdDtpZihzPSt0Ll94LmNhbGwobnVsbCxwLmRhdGEpLGw9K3QuX3kuY2FsbChudWxsLHAuZGF0YSksZT09PXMmJm49PT1sKXJldHVybiBmLm5leHQ9cCxyP3JbaF09Zjp0Ll9yb290PWYsdDtkb3tyPXI/cltoXT1uZXcgQXJyYXkoNCk6dC5fcm9vdD1uZXcgQXJyYXkoNCksKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWF9d2hpbGUoKGg9dTw8MXxjKT09KGQ9KGw+PWEpPDwxfHM+PW8pKTtyZXR1cm4gcltkXT1wLHJbaF09Zix0fWZ1bmN0aW9uIG8wKHQsZSxuLGkscil7dGhpcy5ub2RlPXQsdGhpcy54MD1lLHRoaXMueTA9bix0aGlzLngxPWksdGhpcy55MT1yfWZ1bmN0aW9uIGEwKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHMwKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGwwKHQsZSxuKXt2YXIgaT1uZXcgYzAobnVsbD09ZT9hMDplLG51bGw9PW4/czA6bixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P2k6aS5hZGRBbGwodCl9ZnVuY3Rpb24gYzAodCxlLG4saSxyLG8pe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiB1MCh0KXtmb3IodmFyIGU9e2RhdGE6dC5kYXRhfSxuPWU7dD10Lm5leHQ7KW49bi5uZXh0PXtkYXRhOnQuZGF0YX07cmV0dXJuIGV9UTEucHJvdG90eXBlPXQwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UTEsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPloxKWlmKE1hdGguYWJzKHUqcy1sKmMpPloxJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKCQxLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPloxJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5aMXx8TWF0aC5hYnModGhpcy5feTEtYyk+WjEpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVLMStLMSksaD5KMT90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5aMSYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49JDEpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgaDA9bDAucHJvdG90eXBlPWMwLnByb3RvdHlwZTtoMC5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBjMCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9dTAoaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT11MChlKSk7cmV0dXJuIG59LGgwLmFkZD1mdW5jdGlvbiBkMCh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIHIwKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LGgwLmFkZEFsbD1mdW5jdGlvbiBwMCh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2Zvcih1PGwmJihsPXRoaXMuX3gwLHU9dGhpcy5feDEpLGg8YyYmKGM9dGhpcy5feTAsaD10aGlzLl95MSksdGhpcy5jb3ZlcihsLGMpLmNvdmVyKHUsaCksbj0wO248bzsrK24pcjAodGhpcyxhW25dLHNbbl0sdFtuXSk7cmV0dXJuIHRoaXN9LGgwLmNvdmVyPWZ1bmN0aW9uIGYwKHQsZSl7aWYoaXNOYU4odD0rdCl8fGlzTmFOKGU9K2UpKXJldHVybiB0aGlzO3ZhciBuPXRoaXMuX3gwLGk9dGhpcy5feTAscj10aGlzLl94MSxvPXRoaXMuX3kxO2lmKGlzTmFOKG4pKXI9KG49TWF0aC5mbG9vcih0KSkrMSxvPShpPU1hdGguZmxvb3IoZSkpKzE7ZWxzZXtpZighKG4+dHx8dD5yfHxpPmV8fGU+bykpcmV0dXJuIHRoaXM7dmFyIGEscyxsPXItbixjPXRoaXMuX3Jvb3Q7c3dpdGNoKHM9KGU8KGkrbykvMik8PDF8dDwobityKS8yKXtjYXNlIDA6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShvPWkrKGwqPTIpLHQ+KHI9bitsKXx8ZT5vKTticmVhaztjYXNlIDE6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShvPWkrKGwqPTIpLChuPXItbCk+dHx8ZT5vKTticmVhaztjYXNlIDI6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShpPW8tKGwqPTIpLHQ+KHI9bitsKXx8aT5lKTticmVhaztjYXNlIDM6ZG97KGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YX13aGlsZShpPW8tKGwqPTIpLChuPXItbCk+dHx8aT5lKX10aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9Yyl9cmV0dXJuIHRoaXMuX3gwPW4sdGhpcy5feTA9aSx0aGlzLl94MT1yLHRoaXMuX3kxPW8sdGhpc30saDAuZGF0YT1mdW5jdGlvbiBtMCgpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97dC5wdXNoKGUuZGF0YSl9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGgwLmV4dGVudD1mdW5jdGlvbiBnMCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0saDAuZmluZD1mdW5jdGlvbiBfMCh0LGUsbil7dmFyIGkscixvLGEscyxsLGMsdT10aGlzLl94MCxoPXRoaXMuX3kwLGQ9dGhpcy5feDEscD10aGlzLl95MSxmPVtdLG09dGhpcy5fcm9vdDtmb3IobSYmZi5wdXNoKG5ldyBvMChtLHUsaCxkLHApKSxudWxsPT1uP249MS8wOih1PXQtbixoPWUtbixkPXQrbixwPWUrbixuKj1uKTtsPWYucG9wKCk7KWlmKCEoIShtPWwubm9kZSl8fChyPWwueDApPmR8fChvPWwueTApPnB8fChhPWwueDEpPHV8fChzPWwueTEpPGgpKWlmKG0ubGVuZ3RoKXt2YXIgZz0ocithKS8yLF89KG8rcykvMjtmLnB1c2gobmV3IG8wKG1bM10sZyxfLGEscyksbmV3IG8wKG1bMl0scixfLGcscyksbmV3IG8wKG1bMV0sZyxvLGEsXyksbmV3IG8wKG1bMF0scixvLGcsXykpLChjPShlPj1fKTw8MXx0Pj1nKSYmKGw9ZltmLmxlbmd0aC0xXSxmW2YubGVuZ3RoLTFdPWZbZi5sZW5ndGgtMS1jXSxmW2YubGVuZ3RoLTEtY109bCl9ZWxzZXt2YXIgeT10LSt0aGlzLl94LmNhbGwobnVsbCxtLmRhdGEpLHY9ZS0rdGhpcy5feS5jYWxsKG51bGwsbS5kYXRhKSxiPXkqeSt2KnY7aWYoYjxuKXt2YXIgeD1NYXRoLnNxcnQobj1iKTt1PXQteCxoPWUteCxkPXQreCxwPWUreCxpPW0uZGF0YX19cmV0dXJuIGl9LGgwLnJlbW92ZT1mdW5jdGlvbiB5MCh0KXtpZihpc05hTihvPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKGE9K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxuLGkscixvLGEscyxsLGMsdSxoLGQscD10aGlzLl9yb290LGY9dGhpcy5feDAsbT10aGlzLl95MCxnPXRoaXMuX3gxLF89dGhpcy5feTE7aWYoIXApcmV0dXJuIHRoaXM7aWYocC5sZW5ndGgpZm9yKDs7KXtpZigoYz1vPj0ocz0oZitnKS8yKSk/Zj1zOmc9cywodT1hPj0obD0obStfKS8yKSk/bT1sOl89bCxlPXAsIShwPXBbaD11PDwxfGNdKSlyZXR1cm4gdGhpcztpZighcC5sZW5ndGgpYnJlYWs7KGVbaCsxJjNdfHxlW2grMiYzXXx8ZVtoKzMmM10pJiYobj1lLGQ9aCl9Zm9yKDtwLmRhdGEhPT10OylpZihpPXAsIShwPXAubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKHI9cC5uZXh0KSYmZGVsZXRlIHAubmV4dCxpPyhyP2kubmV4dD1yOmRlbGV0ZSBpLm5leHQsdGhpcyk6ZT8ocj9lW2hdPXI6ZGVsZXRlIGVbaF0sKHA9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJnA9PT0oZVszXXx8ZVsyXXx8ZVsxXXx8ZVswXSkmJiFwLmxlbmd0aCYmKG4/bltkXT1wOnRoaXMuX3Jvb3Q9cCksdGhpcyk6KHRoaXMuX3Jvb3Q9cix0aGlzKX0saDAucmVtb3ZlQWxsPWZ1bmN0aW9uIHYwKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSl0aGlzLnJlbW92ZSh0W2VdKTtyZXR1cm4gdGhpc30saDAucm9vdD1mdW5jdGlvbiBiMCgpe3JldHVybiB0aGlzLl9yb290fSxoMC5zaXplPWZ1bmN0aW9uIHgwKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRveysrdH13aGlsZShlPWUubmV4dCl9KSksdH0saDAudmlzaXQ9ZnVuY3Rpb24gdzAodCl7dmFyIGUsbixpLHIsbyxhLHM9W10sbD10aGlzLl9yb290O2ZvcihsJiZzLnB1c2gobmV3IG8wKGwsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPXMucG9wKCk7KWlmKCF0KGw9ZS5ub2RlLGk9ZS54MCxyPWUueTAsbz1lLngxLGE9ZS55MSkmJmwubGVuZ3RoKXt2YXIgYz0oaStvKS8yLHU9KHIrYSkvMjsobj1sWzNdKSYmcy5wdXNoKG5ldyBvMChuLGMsdSxvLGEpKSwobj1sWzJdKSYmcy5wdXNoKG5ldyBvMChuLGksdSxjLGEpKSwobj1sWzFdKSYmcy5wdXNoKG5ldyBvMChuLGMscixvLHUpKSwobj1sWzBdKSYmcy5wdXNoKG5ldyBvMChuLGkscixjLHUpKX1yZXR1cm4gdGhpc30saDAudmlzaXRBZnRlcj1mdW5jdGlvbiBTMCh0KXt2YXIgZSxuPVtdLGk9W107Zm9yKHRoaXMuX3Jvb3QmJm4ucHVzaChuZXcgbzAodGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9bi5wb3AoKTspe3ZhciByPWUubm9kZTtpZihyLmxlbmd0aCl7dmFyIG8sYT1lLngwLHM9ZS55MCxsPWUueDEsYz1lLnkxLHU9KGErbCkvMixoPShzK2MpLzI7KG89clswXSkmJm4ucHVzaChuZXcgbzAobyxhLHMsdSxoKSksKG89clsxXSkmJm4ucHVzaChuZXcgbzAobyx1LHMsbCxoKSksKG89clsyXSkmJm4ucHVzaChuZXcgbzAobyxhLGgsdSxjKSksKG89clszXSkmJm4ucHVzaChuZXcgbzAobyx1LGgsbCxjKSl9aS5wdXNoKGUpfWZvcig7ZT1pLnBvcCgpOyl0KGUubm9kZSxlLngwLGUueTAsZS54MSxlLnkxKTtyZXR1cm4gdGhpc30saDAueD1mdW5jdGlvbiBNMCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feD10LHRoaXMpOnRoaXMuX3h9LGgwLnk9ZnVuY3Rpb24gRTAodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fTt2YXIgVDA9W10uc2xpY2UsQzA9e307ZnVuY3Rpb24gQTAodCl7dGhpcy5fc2l6ZT10LHRoaXMuX2NhbGw9dGhpcy5fZXJyb3I9bnVsbCx0aGlzLl90YXNrcz1bXSx0aGlzLl9kYXRhPVtdLHRoaXMuX3dhaXRpbmc9dGhpcy5fYWN0aXZlPXRoaXMuX2VuZGVkPXRoaXMuX3N0YXJ0PTB9ZnVuY3Rpb24gazAodCl7aWYoIXQuX3N0YXJ0KXRyeXshKGZ1bmN0aW9uIGUodCl7Zm9yKDt0Ll9zdGFydD10Ll93YWl0aW5nJiZ0Ll9hY3RpdmU8dC5fc2l6ZTspe3ZhciBlPXQuX2VuZGVkK3QuX2FjdGl2ZSxuPXQuX3Rhc2tzW2VdLGk9bi5sZW5ndGgtMSxyPW5baV07bltpXT1QMCh0LGUpLC0tdC5fd2FpdGluZywrK3QuX2FjdGl2ZSxuPXIuYXBwbHkobnVsbCxuKSx0Ll90YXNrc1tlXSYmKHQuX3Rhc2tzW2VdPW58fEMwKX19KSh0KX1jYXRjaChlKXtpZih0Ll90YXNrc1t0Ll9lbmRlZCt0Ll9hY3RpdmUtMV0pTDAodCxlKTtlbHNlIGlmKCF0Ll9kYXRhKXRocm93IGV9fWZ1bmN0aW9uIFAwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dC5fdGFza3NbZV0mJigtLXQuX2FjdGl2ZSwrK3QuX2VuZGVkLHQuX3Rhc2tzW2VdPW51bGwsbnVsbD09dC5fZXJyb3ImJihudWxsIT1uP0wwKHQsbik6KHQuX2RhdGFbZV09aSx0Ll93YWl0aW5nP2swKHQpOkkwKHQpKSkpfX1mdW5jdGlvbiBMMCh0LGUpe3ZhciBuLGk9dC5fdGFza3MubGVuZ3RoO2Zvcih0Ll9lcnJvcj1lLHQuX2RhdGE9dm9pZCAwLHQuX3dhaXRpbmc9TmFOOy0taT49MDspaWYoKG49dC5fdGFza3NbaV0pJiYodC5fdGFza3NbaV09bnVsbCxuLmFib3J0KSl0cnl7bi5hYm9ydCgpfWNhdGNoKGUpe310Ll9hY3RpdmU9TmFOLEkwKHQpfWZ1bmN0aW9uIEkwKHQpe2lmKCF0Ll9hY3RpdmUmJnQuX2NhbGwpe3ZhciBlPXQuX2RhdGE7dC5fZGF0YT12b2lkIDAsdC5fY2FsbCh0Ll9lcnJvcixlKX19ZnVuY3Rpb24gTjAodCl7aWYobnVsbD09dCl0PTEvMDtlbHNlIGlmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY29uY3VycmVuY3kiKTtyZXR1cm4gbmV3IEEwKHQpfWZ1bmN0aW9uIFIwKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9QTAucHJvdG90eXBlPU4wLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QTAsZGVmZXI6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrIik7aWYodGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3IoImRlZmVyIGFmdGVyIGF3YWl0Iik7aWYobnVsbCE9dGhpcy5fZXJyb3IpcmV0dXJuIHRoaXM7dmFyIGU9VDAuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGUucHVzaCh0KSwrK3RoaXMuX3dhaXRpbmcsdGhpcy5fdGFza3MucHVzaChlKSxrMCh0aGlzKSx0aGlzfSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9lcnJvciYmTDAodGhpcyxuZXcgRXJyb3IoImFib3J0IikpLHRoaXN9LGF3YWl0OmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjayIpO2lmKHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yKCJtdWx0aXBsZSBhd2FpdCIpO3JldHVybiB0aGlzLl9jYWxsPWZ1bmN0aW9uKGUsbil7dC5hcHBseShudWxsLFtlXS5jb25jYXQobikpfSxJMCh0aGlzKSx0aGlzfSxhd2FpdEFsbDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKTtpZih0aGlzLl9jYWxsKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgYXdhaXQiKTtyZXR1cm4gdGhpcy5fY2FsbD10LEkwKHRoaXMpLHRoaXN9fTt2YXIgTzA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4pe3JldHVybiB0PW51bGw9PXQ/MDordCxuPW51bGw9PW4/MTorbiwxPT09YXJndW1lbnRzLmxlbmd0aD8obj10LHQ9MCk6bi09dCxmdW5jdGlvbigpe3JldHVybiBlKCkqbit0fX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUjApLHowPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuKXt2YXIgaSxyO3JldHVybiB0PW51bGw9PXQ/MDordCxuPW51bGw9PW4/MTorbixmdW5jdGlvbigpe3ZhciBvO2lmKG51bGwhPWkpbz1pLGk9bnVsbDtlbHNlIGRve2k9MiplKCktMSxvPTIqZSgpLTEscj1pKmkrbypvfXdoaWxlKCFyfHxyPjEpO3JldHVybiB0K24qbypNYXRoLnNxcnQoLTIqTWF0aC5sb2cocikvcil9fXJldHVybiBuLnNvdXJjZT10LG59KShSMCksRDA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbigpe3ZhciB0PXowLnNvdXJjZShlKS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKHQoKSl9fXJldHVybiBuLnNvdXJjZT10LG59KShSMCksQjA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49MCxpPTA7aTx0OysraSluKz1lKCk7cmV0dXJuIG59fXJldHVybiBuLnNvdXJjZT10LG59KShSMCksSDA9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXt2YXIgbj1CMC5zb3VyY2UoZSkodCk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4oKS90fX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUjApLEYwPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLU1hdGgubG9nKDEtZSgpKS90fX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoUjApO2Z1bmN0aW9uIFYwKHQsZSl7dmFyIG4saSxyLG8sYT13YygiYmVmb3Jlc2VuZCIsInByb2dyZXNzIiwibG9hZCIsImVycm9yIikscz1qZygpLGw9bmV3IFhNTEh0dHBSZXF1ZXN0LGM9bnVsbCx1PW51bGwsaD0wO2Z1bmN0aW9uIGQodCl7dmFyIGUsaT1sLnN0YXR1cztpZighaSYmKGZ1bmN0aW9uIG8odCl7dmFyIGU9dC5yZXNwb25zZVR5cGU7cmV0dXJuIGUmJiJ0ZXh0IiE9PWU/dC5yZXNwb25zZTp0LnJlc3BvbnNlVGV4dH0pKGwpfHxpPj0yMDAmJmk8MzAwfHwzMDQ9PT1pKXtpZihyKXRyeXtlPXIuY2FsbChuLGwpfWNhdGNoKHQpe3JldHVybiB2b2lkIGEuY2FsbCgiZXJyb3IiLG4sdCl9ZWxzZSBlPWw7YS5jYWxsKCJsb2FkIixuLGUpfWVsc2UgYS5jYWxsKCJlcnJvciIsbix0KX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIFhEb21haW5SZXF1ZXN0JiYhKCJ3aXRoQ3JlZGVudGlhbHMiaW4gbCkmJi9eKGh0dHAocyk/Oik/XC9cLy8udGVzdCh0KSYmKGw9bmV3IFhEb21haW5SZXF1ZXN0KSwib25sb2FkImluIGw/bC5vbmxvYWQ9bC5vbmVycm9yPWwub250aW1lb3V0PWQ6bC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24odCl7bC5yZWFkeVN0YXRlPjMmJmQodCl9LGwub25wcm9ncmVzcz1mdW5jdGlvbih0KXthLmNhbGwoInByb2dyZXNzIixuLHQpfSxuPXtoZWFkZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD0odCsiIikudG9Mb3dlckNhc2UoKSxhcmd1bWVudHMubGVuZ3RoPDI/cy5nZXQodCk6KG51bGw9PWU/cy5yZW1vdmUodCk6cy5zZXQodCxlKyIiKSxuKX0sbWltZVR5cGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOnQrIiIsbik6aX0scmVzcG9uc2VUeXBlOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbik6b30sdGltZW91dDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdCxuKTpofSx1c2VyOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/YzooYz1udWxsPT10P251bGw6dCsiIixuKX0scGFzc3dvcmQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT91Oih1PW51bGw9PXQ/bnVsbDp0KyIiLG4pfSxyZXNwb25zZTpmdW5jdGlvbih0KXtyZXR1cm4gcj10LG59LGdldDpmdW5jdGlvbih0LGUpe3JldHVybiBuLnNlbmQoIkdFVCIsdCxlKX0scG9zdDpmdW5jdGlvbih0LGUpe3JldHVybiBuLnNlbmQoIlBPU1QiLHQsZSl9LHNlbmQ6ZnVuY3Rpb24oZSxyLGQpe3JldHVybiBsLm9wZW4oZSx0LCEwLGMsdSksbnVsbD09aXx8cy5oYXMoImFjY2VwdCIpfHxzLnNldCgiYWNjZXB0IixpKyIsKi8qIiksbC5zZXRSZXF1ZXN0SGVhZGVyJiZzLmVhY2goKGZ1bmN0aW9uKHQsZSl7bC5zZXRSZXF1ZXN0SGVhZGVyKGUsdCl9KSksbnVsbCE9aSYmbC5vdmVycmlkZU1pbWVUeXBlJiZsLm92ZXJyaWRlTWltZVR5cGUoaSksbnVsbCE9byYmKGwucmVzcG9uc2VUeXBlPW8pLGg+MCYmKGwudGltZW91dD1oKSxudWxsPT1kJiYiZnVuY3Rpb24iPT10eXBlb2YgciYmKGQ9cixyPW51bGwpLG51bGwhPWQmJjE9PT1kLmxlbmd0aCYmKGQ9KGZ1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dChudWxsPT1lP246bnVsbCl9fSkoZCkpLG51bGwhPWQmJm4ub24oImVycm9yIixkKS5vbigibG9hZCIsKGZ1bmN0aW9uKHQpe2QobnVsbCx0KX0pKSxhLmNhbGwoImJlZm9yZXNlbmQiLG4sbCksbC5zZW5kKG51bGw9PXI/bnVsbDpyKSxufSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiBsLmFib3J0KCksbn0sb246ZnVuY3Rpb24oKXt2YXIgdD1hLm9uLmFwcGx5KGEsYXJndW1lbnRzKTtyZXR1cm4gdD09PWE/bjp0fX0sbnVsbCE9ZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO3JldHVybiBuLmdldChlKX1yZXR1cm4gbn1mdW5jdGlvbiBVMCh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3ZhciByPVYwKG4pLm1pbWVUeXBlKHQpLnJlc3BvbnNlKGUpO2lmKG51bGwhPWkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitpKTtyZXR1cm4gci5nZXQoaSl9cmV0dXJuIHJ9fXZhciBqMD1VMCgidGV4dC9odG1sIiwoZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHQucmVzcG9uc2VUZXh0KX0pKSxHMD1VMCgiYXBwbGljYXRpb24vanNvbiIsKGZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnBhcnNlKHQucmVzcG9uc2VUZXh0KX0pKSxXMD1VMCgidGV4dC9wbGFpbiIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc3BvbnNlVGV4dH0pKSxxMD1VMCgiYXBwbGljYXRpb24veG1sIiwoZnVuY3Rpb24odCl7dmFyIGU9dC5yZXNwb25zZVhNTDtpZighZSl0aHJvdyBuZXcgRXJyb3IoInBhcnNlIGVycm9yIik7cmV0dXJuIGV9KSk7ZnVuY3Rpb24gWTAodCxlKXtyZXR1cm4gZnVuY3Rpb24obixpLHIpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKHI9aSxpPW51bGwpO3ZhciBvPVYwKG4pLm1pbWVUeXBlKHQpO3JldHVybiBvLnJvdz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9vLnJlc3BvbnNlKFgwKGUsaT10KSk6aX0sby5yb3coaSkscj9vLmdldChyKTpvfX1mdW5jdGlvbiBYMCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChuLnJlc3BvbnNlVGV4dCxlKX19dmFyICQwPVkwKCJ0ZXh0L2NzdiIsYl8pLEswPVkwKCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIixBXyk7ZnVuY3Rpb24gWjAodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gSjAodCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIFowKHQoZSksbil9fSkodCkpLHtsZWZ0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik8MD9pPW8rMTpyPW99cmV0dXJuIGl9LHJpZ2h0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik+MD9yPW86aT1vKzF9cmV0dXJuIGl9fX12YXIgUTA9SjAoWjApLnJpZ2h0O2Z1bmN0aW9uIHQyKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9dmFyIGUyPU1hdGguc3FydCg1MCksbjI9TWF0aC5zcXJ0KDEwKSxpMj1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gcjIodCxlLG4pe3ZhciBpLHIsbyxhLHM9LTE7aWYobj0rbiwodD0rdCk9PT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9bzIodCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gbzIodCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1lMj8xMDpvPj1uMj81Om8+PWkyPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49ZTI/MTA6bz49bjI/NTpvPj1pMj8yOjEpfWZ1bmN0aW9uIGEyKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1lMj9yKj0xMDpvPj1uMj9yKj01Om8+PWkyJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24gczIodCxlLG4pe2lmKG51bGw9PW4mJihuPXQyKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fXZhciBsMj0iJCI7ZnVuY3Rpb24gYzIoKXt9ZnVuY3Rpb24gdTIodCxlKXt2YXIgbj1uZXcgYzI7aWYodCBpbnN0YW5jZW9mIGMyKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGkscj0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK3I8bzspbi5zZXQocix0W3JdKTtlbHNlIGZvcig7KytyPG87KW4uc2V0KGUoaT10W3JdLHIsdCksaSl9ZWxzZSBpZih0KWZvcih2YXIgYSBpbiB0KW4uc2V0KGEsdFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gaDIoKXt9YzIucHJvdG90eXBlPXUyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YzIsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBsMit0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tsMit0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbbDIrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9bDIrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09bDImJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWwyJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1sMiYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWwyJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWwyJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PWwyKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1sMiYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTt2YXIgZDI9dTIucHJvdG90eXBlO2gyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aDIsaGFzOmQyLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbbDIrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6ZDIucmVtb3ZlLGNsZWFyOmQyLmNsZWFyLHZhbHVlczpkMi5rZXlzLHNpemU6ZDIuc2l6ZSxlbXB0eTpkMi5lbXB0eSxlYWNoOmQyLmVhY2h9O3ZhciBwMj1BcnJheS5wcm90b3R5cGUsZjI9cDIubWFwLG0yPXAyLnNsaWNlLGcyPXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIF8yKHQpe3ZhciBlPXUyKCksbj1bXSxpPWcyO2Z1bmN0aW9uIHIocil7dmFyIG89cisiIixhPWUuZ2V0KG8pO2lmKCFhKXtpZihpIT09ZzIpcmV0dXJuIGk7ZS5zZXQobyxhPW4ucHVzaChyKSl9cmV0dXJuIHRbKGEtMSkldC5sZW5ndGhdfXJldHVybiB0PW51bGw9PXQ/W106bTIuY2FsbCh0KSxyLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5zbGljZSgpO249W10sZT11MigpO2Zvcih2YXIgaSxvLGE9LTEscz10Lmxlbmd0aDsrK2E8czspZS5oYXMobz0oaT10W2FdKSsiIil8fGUuc2V0KG8sbi5wdXNoKGkpKTtyZXR1cm4gcn0sci5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1tMi5jYWxsKGUpLHIpOnQuc2xpY2UoKX0sci51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQscik6aX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIF8yKCkuZG9tYWluKG4pLnJhbmdlKHQpLnVua25vd24oaSl9LHJ9ZnVuY3Rpb24geTIoKXt2YXIgdCxlLG49XzIoKS51bmtub3duKHZvaWQgMCksaT1uLmRvbWFpbixyPW4ucmFuZ2Usbz1bMCwxXSxhPSExLHM9MCxsPTAsYz0uNTtmdW5jdGlvbiB1KCl7dmFyIG49aSgpLmxlbmd0aCx1PW9bMV08b1swXSxoPW9bdS0wXSxkPW9bMS11XTt0PShkLWgpL01hdGgubWF4KDEsbi1zKzIqbCksYSYmKHQ9TWF0aC5mbG9vcih0KSksaCs9KGQtaC10KihuLXMpKSpjLGU9dCooMS1zKSxhJiYoaD1NYXRoLnJvdW5kKGgpLGU9TWF0aC5yb3VuZChlKSk7dmFyIHA9KGZ1bmN0aW9uIGYodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99KShuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBoK3QqZX0pKTtyZXR1cm4gcih1P3AucmV2ZXJzZSgpOnApfXJldHVybiBkZWxldGUgbi51bmtub3duLG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLHUoKSk6aSgpfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPVsrdFswXSwrdFsxXV0sdSgpKTpvLnNsaWNlKCl9LG4ucmFuZ2VSb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gbz1bK3RbMF0sK3RbMV1dLGE9ITAsdSgpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBlfSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbi5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIXQsdSgpKTphfSxuLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSx1KCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksdSgpKTpsfSxuLmFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksdSgpKTpjfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4geTIoKS5kb21haW4oaSgpKS5yYW5nZShvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSx1KCl9ZnVuY3Rpb24gdjIodCl7dmFyIGU9dC5jb3B5O3JldHVybiB0LnBhZGRpbmc9dC5wYWRkaW5nT3V0ZXIsZGVsZXRlIHQucGFkZGluZ0lubmVyLGRlbGV0ZSB0LnBhZGRpbmdPdXRlcix0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdjIoZSgpKX0sdH1mdW5jdGlvbiBiMih0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24geDIodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gdzIoKXt9dmFyIFMyPS43LE0yPTEvUzIsRTI9IlxccyooWystXT9cXGQrKVxccyoiLFQyPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLEMyPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixBMj0vXiMoWzAtOWEtZl17Myw4fSkkLyxrMj1uZXcgUmVnRXhwKCJecmdiXFwoIitbRTIsRTIsRTJdKyJcXCkkIiksUDI9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0MyLEMyLEMyXSsiXFwpJCIpLEwyPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbRTIsRTIsRTIsVDJdKyJcXCkkIiksSTI9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tDMixDMixDMixUMl0rIlxcKSQiKSxOMj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbVDIsQzIsQzJdKyJcXCkkIiksUjI9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tUMixDMixDMixUMl0rIlxcKSQiKSxPMj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB6Migpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEQyKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gQjIodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9QTIuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9IMihlKTozPT09bj9uZXcgajIoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0YyKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP0YyKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9azIuZXhlYyh0KSk/bmV3IGoyKGVbMV0sZVsyXSxlWzNdLDEpOihlPVAyLmV4ZWModCkpP25ldyBqMigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1MMi5leGVjKHQpKT9GMihlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1JMi5leGVjKHQpKT9GMigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1OMi5leGVjKHQpKT9ZMihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVIyLmV4ZWModCkpP1kyKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6TzIuaGFzT3duUHJvcGVydHkodCk/SDIoTzJbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBqMihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEgyKHQpe3JldHVybiBuZXcgajIodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIEYyKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgajIodCxlLG4saSl9ZnVuY3Rpb24gVjIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB3Mnx8KHQ9QjIodCkpLHQ/bmV3IGoyKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBqMn1mdW5jdGlvbiBVMih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VjIodCk6bmV3IGoyKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBqMih0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gRzIoKXtyZXR1cm4iIyIrcTIodGhpcy5yKStxMih0aGlzLmcpK3EyKHRoaXMuYil9ZnVuY3Rpb24gVzIoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBxMih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFkyKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgJDIodCxlLG4saSl9ZnVuY3Rpb24gWDIodCl7aWYodCBpbnN0YW5jZW9mICQyKXJldHVybiBuZXcgJDIodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgdzJ8fCh0PUIyKHQpKSwhdClyZXR1cm4gbmV3ICQyO2lmKHQgaW5zdGFuY2VvZiAkMilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3ICQyKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gJDIodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIEsyKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1iMih3MixCMix7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDp6Mixmb3JtYXRIZXg6ejIsZm9ybWF0SHNsOmZ1bmN0aW9uIFoyKCl7cmV0dXJuIFgyKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6RDIsdG9TdHJpbmc6RDJ9KSxiMihqMixVMix4Mih3Mix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9NMjpNYXRoLnBvdyhNMix0KSxuZXcgajIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UzI6TWF0aC5wb3coUzIsdCksbmV3IGoyKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6RzIsZm9ybWF0SGV4OkcyLGZvcm1hdFJnYjpXMix0b1N0cmluZzpXMn0pKSxiMigkMiwoZnVuY3Rpb24gSjIodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1gyKHQpOm5ldyAkMih0LGUsbixudWxsPT1pPzE6aSl9KSx4Mih3Mix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9NMjpNYXRoLnBvdyhNMix0KSxuZXcgJDIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9TMjpNYXRoLnBvdyhTMix0KSxuZXcgJDIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBqMihLMih0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxLMih0LHIsaSksSzIodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgUTI9TWF0aC5QSS8xODAsdDU9MTgwL01hdGguUEksZTU9LS4xNDg2MSxuNT0xLjc4Mjc3LGk1PS0uMjkyMjcscjU9LS45MDY0OSxvNT0xLjk3Mjk0LGE1PW81KnI1LHM1PW81Km41LGw1PW41Kmk1LXI1KmU1O2Z1bmN0aW9uIGM1KHQpe2lmKHQgaW5zdGFuY2VvZiBoNSlyZXR1cm4gbmV3IGg1KHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIGoyfHwodD1WMih0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0obDUqbithNSoodC5yLzI1NSktczUqZSkvKGw1K2E1LXM1KSxyPW4taSxvPShvNSooZS1pKS1pNSpyKS9yNSxhPU1hdGguc3FydChvKm8rcipyKS8obzUqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSp0NS0xMjA6TmFOO3JldHVybiBuZXcgaDUoczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gdTUodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M1KHQpOm5ldyBoNSh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gaDUodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGQ1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBwNSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIGY1KHQpe3JldHVybiAxPT0odD0rdCk/bTU6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6ZDUoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gbTUodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/cDUodCxuKTpkNShpc05hTih0KT9lOnQpfWIyKGg1LHU1LHgyKHcyLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P00yOk1hdGgucG93KE0yLHQpLG5ldyBoNSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P1MyOk1hdGgucG93KFMyLHQpLG5ldyBoNSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqUTIsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IGoyKDI1NSooZStuKihlNSppK241KnIpKSwyNTUqKGUrbiooaTUqaStyNSpyKSksMjU1KihlK24qKG81KmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgZzU9KGZ1bmN0aW9uIHQoZSl7dmFyIG49ZjUoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9VTIodCkpLnIsKGU9VTIoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1tNSh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIF81KHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIHk1KHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09RTUodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiB2NSh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gYjUodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24geDUodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPUU1KHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHc1PS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxTNT1uZXcgUmVnRXhwKHc1LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIE01KHQsZSl7dmFyIG4saSxyLG89dzUubGFzdEluZGV4PVM1Lmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj13NS5leGVjKHQpKSYmKGk9UzUuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmI1KG4saSl9KSksbz1TNS5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gRTUodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP2Q1KGUpOigibnVtYmVyIj09PWk/YjU6InN0cmluZyI9PT1pPyhuPUIyKGUpKT8oZT1uLGc1KTpNNTplIGluc3RhbmNlb2YgQjI/ZzU6ZSBpbnN0YW5jZW9mIERhdGU/djU6KGZ1bmN0aW9uIHIodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/XzU6QXJyYXkuaXNBcnJheShlKT95NToiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/eDU6YjUpKHQsZSl9ZnVuY3Rpb24gVDUodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19ZnVuY3Rpb24gQzUodCl7cmV0dXJuKGZ1bmN0aW9uIGUobil7ZnVuY3Rpb24gaShlLGkpe3ZhciByPXQoKGU9dTUoZSkpLmgsKGk9dTUoaSkpLmgpLG89bTUoZS5zLGkucyksYT1tNShlLmwsaS5sKSxzPW01KGUub3BhY2l0eSxpLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5zPW8odCksZS5sPWEoTWF0aC5wb3codCxuKSksZS5vcGFjaXR5PXModCksZSsiIn19cmV0dXJuIG49K24saS5nYW1tYT1lLGl9KSgxKX1DNSgoZnVuY3Rpb24gQTUodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/cDUodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOmQ1KGlzTmFOKHQpP2U6dCl9KSk7dmFyIGs1PUM1KG01KTtmdW5jdGlvbiBQNSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gTDUodCl7cmV0dXJuK3R9dmFyIEk1PVswLDFdO2Z1bmN0aW9uIE41KHQsZSl7cmV0dXJuKGUtPXQ9K3QpP2Z1bmN0aW9uKG4pe3JldHVybihuLXQpL2V9OlA1KGUpfWZ1bmN0aW9uIFI1KHQsZSxuLGkpe3ZhciByPXRbMF0sbz10WzFdLGE9ZVswXSxzPWVbMV07cmV0dXJuIG88cj8ocj1uKG8sciksYT1pKHMsYSkpOihyPW4ocixvKSxhPWkoYSxzKSksZnVuY3Rpb24odCl7cmV0dXJuIGEocih0KSl9fWZ1bmN0aW9uIE81KHQsZSxuLGkpe3ZhciByPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KHIpLHM9LTE7Zm9yKHRbcl08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrczxyOylvW3NdPW4odFtzXSx0W3MrMV0pLGFbc109aShlW3NdLGVbcysxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVEwKHQsZSwxLHIpLTE7cmV0dXJuIGFbbl0ob1tuXShlKSl9fWZ1bmN0aW9uIHo1KHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLnJhbmdlKHQucmFuZ2UoKSkuaW50ZXJwb2xhdGUodC5pbnRlcnBvbGF0ZSgpKS5jbGFtcCh0LmNsYW1wKCkpfWZ1bmN0aW9uIEQ1KHQsZSl7dmFyIG4saSxyLG89STUsYT1JNSxzPUU1LGw9ITE7ZnVuY3Rpb24gYygpe3JldHVybiBuPU1hdGgubWluKG8ubGVuZ3RoLGEubGVuZ3RoKT4yP081OlI1LGk9cj1udWxsLHV9ZnVuY3Rpb24gdShlKXtyZXR1cm4oaXx8KGk9bihvLGEsbD8oZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT10KGU9K2Usbj0rbik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD1lPzA6dD49bj8xOmkodCl9fX0pKHQpOnQscykpKSgrZSl9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybihyfHwocj1uKGEsbyxONSxsPyhmdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoZT0rZSxuPStuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTA/ZTp0Pj0xP246aSh0KX19fSkoZSk6ZSkpKSgrdCl9LHUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWYyLmNhbGwodCxMNSksYygpKTpvLnNsaWNlKCl9LHUucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bTIuY2FsbCh0KSxjKCkpOmEuc2xpY2UoKX0sdS5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhPW0yLmNhbGwodCkscz1UNSxjKCl9LHUuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ISF0LGMoKSk6bH0sdS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGMoKSk6c30sYygpfWZ1bmN0aW9uIEI1KHQsZSl7aWYoKG49KHQ9ZT90LnRvRXhwb25lbnRpYWwoZS0xKTp0LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBuLGk9dC5zbGljZSgwLG4pO3JldHVybltpLmxlbmd0aD4xP2lbMF0raS5zbGljZSgyKTppLCt0LnNsaWNlKG4rMSldfWZ1bmN0aW9uIEg1KHQpe3JldHVybih0PUI1KE1hdGguYWJzKHQpKSk/dFsxXTpOYU59dmFyIEY1LFY1PS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIFU1KHQpe2lmKCEoZT1WNS5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgajUoe2ZpbGw6ZVsxXSxhbGlnbjplWzJdLHNpZ246ZVszXSxzeW1ib2w6ZVs0XSx6ZXJvOmVbNV0sd2lkdGg6ZVs2XSxjb21tYTplWzddLHByZWNpc2lvbjplWzhdJiZlWzhdLnNsaWNlKDEpLHRyaW06ZVs5XSx0eXBlOmVbMTBdfSl9ZnVuY3Rpb24gajUodCl7dGhpcy5maWxsPXZvaWQgMD09PXQuZmlsbD8iICI6dC5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09dC5hbGlnbj8iPiI6dC5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09dC5zaWduPyItIjp0LnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09dC5zeW1ib2w/IiI6dC5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhdC56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09dC53aWR0aD92b2lkIDA6K3Qud2lkdGgsdGhpcy5jb21tYT0hIXQuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09dC5wcmVjaXNpb24/dm9pZCAwOit0LnByZWNpc2lvbix0aGlzLnRyaW09ISF0LnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PXQudHlwZT8iIjp0LnR5cGUrIiJ9ZnVuY3Rpb24gRzUodCxlKXt2YXIgbj1CNSh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciBpPW5bMF0scj1uWzFdO3JldHVybiByPDA/IjAuIituZXcgQXJyYXkoLXIpLmpvaW4oIjAiKStpOmkubGVuZ3RoPnIrMT9pLnNsaWNlKDAscisxKSsiLiIraS5zbGljZShyKzEpOmkrbmV3IEFycmF5KHItaS5sZW5ndGgrMikuam9pbigiMCIpfVU1LnByb3RvdHlwZT1qNS5wcm90b3R5cGUsajUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07dmFyIFc1PXsiJSI6ZnVuY3Rpb24odCxlKXtyZXR1cm4oMTAwKnQpLnRvRml4ZWQoZSl9LGI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24odCl7cmV0dXJuIHQrIiJ9LGQ6ZnVuY3Rpb24gcTUodCl7cmV0dXJuIE1hdGguYWJzKHQ9TWF0aC5yb3VuZCh0KSk+PTFlMjE/dC50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOnQudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LGc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b1ByZWNpc2lvbihlKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LGUpe3JldHVybiBHNSgxMDAqdCxlKX0scjpHNSxzOmZ1bmN0aW9uIFk1KHQsZSl7dmFyIG49QjUodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXSxvPXItKEY1PTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKHIvMykpKSkrMSxhPWkubGVuZ3RoO3JldHVybiBvPT09YT9pOm8+YT9pK25ldyBBcnJheShvLWErMSkuam9pbigiMCIpOm8+MD9pLnNsaWNlKDAsbykrIi4iK2kuc2xpY2Uobyk6IjAuIituZXcgQXJyYXkoMS1vKS5qb2luKCIwIikrQjUodCxNYXRoLm1heCgwLGUrby0xKSlbMF19LFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gWDUodCl7cmV0dXJuIHR9dmFyICQ1LEs1LFo1LEo1PUFycmF5LnByb3RvdHlwZS5tYXAsUTU9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIHQzKHQpe3ZhciBlPXZvaWQgMD09PXQuZ3JvdXBpbmd8fHZvaWQgMD09PXQudGhvdXNhbmRzP1g1OihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7Zm9yKHZhciByPW4ubGVuZ3RoLG89W10sYT0wLHM9dFswXSxsPTA7cj4wJiZzPjAmJihsK3MrMT5pJiYocz1NYXRoLm1heCgxLGktbCkpLG8ucHVzaChuLnN1YnN0cmluZyhyLT1zLHIrcykpLCEoKGwrPXMrMSk+aSkpOylzPXRbYT0oYSsxKSV0Lmxlbmd0aF07cmV0dXJuIG8ucmV2ZXJzZSgpLmpvaW4oZSl9fSkoSjUuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksdC50aG91c2FuZHMrIiIpLGk9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzBdKyIiLHI9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIiLG89dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIsYT12b2lkIDA9PT10Lm51bWVyYWxzP1g1OihmdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFsrZV19KSl9fSkoSjUuY2FsbCh0Lm51bWVyYWxzLFN0cmluZykpLGw9dm9pZCAwPT09dC5wZXJjZW50PyIlIjp0LnBlcmNlbnQrIiIsYz12b2lkIDA9PT10Lm1pbnVzPyItIjp0Lm1pbnVzKyIiLHU9dm9pZCAwPT09dC5uYW4/Ik5hTiI6dC5uYW4rIiI7ZnVuY3Rpb24gaCh0KXt2YXIgbj0odD1VNSh0KSkuZmlsbCxzPXQuYWxpZ24saD10LnNpZ24sZD10LnN5bWJvbCxwPXQuemVybyxmPXQud2lkdGgsbT10LmNvbW1hLGc9dC5wcmVjaXNpb24sXz10LnRyaW0seT10LnR5cGU7Im4iPT09eT8obT0hMCx5PSJnIik6VzVbeV18fCh2b2lkIDA9PT1nJiYoZz0xMiksXz0hMCx5PSJnIiksKHB8fCIwIj09PW4mJiI9Ij09PXMpJiYocD0hMCxuPSIwIixzPSI9Iik7dmFyIHY9IiQiPT09ZD9pOiIjIj09PWQmJi9bYm94WF0vLnRlc3QoeSk/IjAiK3kudG9Mb3dlckNhc2UoKToiIixiPSIkIj09PWQ/cjovWyVwXS8udGVzdCh5KT9sOiIiLHg9VzVbeV0sdz0vW2RlZmdwcnMlXS8udGVzdCh5KTtmdW5jdGlvbiBTKHQpe3ZhciBpLHIsbCxkPXYsUz1iO2lmKCJjIj09PXkpUz14KHQpK1MsdD0iIjtlbHNle3ZhciBNPSh0PSt0KTwwfHwxL3Q8MDtpZih0PWlzTmFOKHQpP3U6eChNYXRoLmFicyh0KSxnKSxfJiYodD0oZnVuY3Rpb24gRSh0KXt0OmZvcih2YXIgZSxuPXQubGVuZ3RoLGk9MSxyPS0xO2k8bjsrK2kpc3dpdGNoKHRbaV0pe2Nhc2UiLiI6cj1lPWk7YnJlYWs7Y2FzZSIwIjowPT09ciYmKHI9aSksZT1pO2JyZWFrO2RlZmF1bHQ6aWYoISt0W2ldKWJyZWFrIHQ7cj4wJiYocj0wKX1yZXR1cm4gcj4wP3Quc2xpY2UoMCxyKSt0LnNsaWNlKGUrMSk6dH0pKHQpKSxNJiYwPT0rdCYmIisiIT09aCYmKE09ITEpLGQ9KE0/IigiPT09aD9oOmM6Ii0iPT09aHx8IigiPT09aD8iIjpoKStkLFM9KCJzIj09PXk/UTVbOCtGNS8zXToiIikrUysoTSYmIigiPT09aD8iKSI6IiIpLHcpZm9yKGk9LTEscj10Lmxlbmd0aDsrK2k8cjspaWYoNDg+KGw9dC5jaGFyQ29kZUF0KGkpKXx8bD41Nyl7Uz0oNDY9PT1sP28rdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK1MsdD10LnNsaWNlKDAsaSk7YnJlYWt9fW0mJiFwJiYodD1lKHQsMS8wKSk7dmFyIFQ9ZC5sZW5ndGgrdC5sZW5ndGgrUy5sZW5ndGgsQz1UPGY/bmV3IEFycmF5KGYtVCsxKS5qb2luKG4pOiIiO3N3aXRjaChtJiZwJiYodD1lKEMrdCxDLmxlbmd0aD9mLVMubGVuZ3RoOjEvMCksQz0iIikscyl7Y2FzZSI8Ijp0PWQrdCtTK0M7YnJlYWs7Y2FzZSI9Ijp0PWQrQyt0K1M7YnJlYWs7Y2FzZSJeIjp0PUMuc2xpY2UoMCxUPUMubGVuZ3RoPj4xKStkK3QrUytDLnNsaWNlKFQpO2JyZWFrO2RlZmF1bHQ6dD1DK2QrdCtTfXJldHVybiBhKHQpfXJldHVybiBnPXZvaWQgMD09PWc/NjovW2dwcnNdLy50ZXN0KHkpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsZykpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsZykpLFMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0sU31yZXR1cm57Zm9ybWF0OmgsZm9ybWF0UHJlZml4OmZ1bmN0aW9uIGQodCxlKXt2YXIgbj1oKCgodD1VNSh0KSkudHlwZT0iZiIsdCkpLGk9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoSDUoZSkvMykpKSxyPU1hdGgucG93KDEwLC1pKSxvPVE1WzgraS8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4ocip0KStvfX19fWZ1bmN0aW9uIGUzKHQsZSxuKXt2YXIgaSxyPXRbMF0sbz10W3QubGVuZ3RoLTFdLGE9YTIocixvLG51bGw9PWU/MTA6ZSk7c3dpdGNoKChuPVU1KG51bGw9PW4/IixmIjpuKSkudHlwZSl7Y2FzZSJzIjp2YXIgcz1NYXRoLm1heChNYXRoLmFicyhyKSxNYXRoLmFicyhvKSk7cmV0dXJuIG51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoSDUoZSkvMykpKS1INShNYXRoLmFicyh0KSkpfSkoYSxzKSl8fChuLnByZWNpc2lvbj1pKSxaNShuLHMpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsSDUoZSktSDUodCkpKzF9KShhLE1hdGgubWF4KE1hdGguYWJzKHIpLE1hdGguYWJzKG8pKSkpfHwobi5wcmVjaXNpb249aS0oImUiPT09bi50eXBlKSk7YnJlYWs7Y2FzZSJmIjpjYXNlIiUiOm51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiB1KHQpe3JldHVybiBNYXRoLm1heCgwLC1INShNYXRoLmFicyh0KSkpfSkoYSkpfHwobi5wcmVjaXNpb249aS0yKigiJSI9PT1uLnR5cGUpKX1yZXR1cm4gSzUobil9ZnVuY3Rpb24gbjModCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiByMihuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUzKGUoKSx0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBpLHI9ZSgpLG89MCxhPXIubGVuZ3RoLTEscz1yW29dLGw9clthXTtyZXR1cm4gbDxzJiYoaT1zLHM9bCxsPWksaT1vLG89YSxhPWkpLChpPW8yKHMsbCxuKSk+MD9pPW8yKHM9TWF0aC5mbG9vcihzL2kpKmksbD1NYXRoLmNlaWwobC9pKSppLG4pOmk8MCYmKGk9bzIocz1NYXRoLmNlaWwocyppKS9pLGw9TWF0aC5mbG9vcihsKmkpL2ksbikpLGk+MD8ocltvXT1NYXRoLmZsb29yKHMvaSkqaSxyW2FdPU1hdGguY2VpbChsL2kpKmksZShyKSk6aTwwJiYocltvXT1NYXRoLmNlaWwocyppKS9pLHJbYV09TWF0aC5mbG9vcihsKmkpL2ksZShyKSksdH0sdH1mdW5jdGlvbiBpMyh0LGUpe3ZhciBuLGk9MCxyPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W2ldLGE9dFtyXTtyZXR1cm4gYTxvJiYobj1pLGk9cixyPW4sbj1vLG89YSxhPW4pLHRbaV09ZS5mbG9vcihvKSx0W3JdPWUuY2VpbChhKSx0fWZ1bmN0aW9uIHIzKHQsZSl7cmV0dXJuKGU9TWF0aC5sb2coZS90KSk/ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubG9nKG4vdCkvZX06UDUoZSl9ZnVuY3Rpb24gbzModCxlKXtyZXR1cm4gdDwwP2Z1bmN0aW9uKG4pe3JldHVybi1NYXRoLnBvdygtZSxuKSpNYXRoLnBvdygtdCwxLW4pfTpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3coZSxuKSpNYXRoLnBvdyh0LDEtbil9fWZ1bmN0aW9uIGEzKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBzMyh0KXtyZXR1cm4gMTA9PT10P2EzOnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fWZ1bmN0aW9uIGwzKHQpe3JldHVybiB0PT09TWF0aC5FP01hdGgubG9nOjEwPT09dCYmTWF0aC5sb2cxMHx8Mj09PXQmJk1hdGgubG9nMnx8KHQ9TWF0aC5sb2codCksZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpL3R9KX1mdW5jdGlvbiBjMyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiB1Myh0LGUpe3JldHVybiB0PDA/LU1hdGgucG93KC10LGUpOk1hdGgucG93KHQsZSl9ZnVuY3Rpb24gaDMoKXt2YXIgdD0xLGU9RDUoKGZ1bmN0aW9uIG4oZSxpKXtyZXR1cm4oaT11MyhpLHQpLShlPXUzKGUsdCkpKT9mdW5jdGlvbihuKXtyZXR1cm4odTMobix0KS1lKS9pfTpQNShpKX0pLChmdW5jdGlvbiBpKGUsbil7cmV0dXJuIG49dTMobix0KS0oZT11MyhlLHQpKSxmdW5jdGlvbihpKXtyZXR1cm4gdTMoZStuKmksMS90KX19KSkscj1lLmRvbWFpbjtyZXR1cm4gZS5leHBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxyKHIoKSkpOnR9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiB6NShlLGgzKCkuZXhwb25lbnQodCkpfSxuMyhlKX0hKGZ1bmN0aW9uIGQzKHQpe3JldHVybiAkNT10Myh0KSxLNT0kNS5mb3JtYXQsWjU9JDUuZm9ybWF0UHJlZml4LCQ1fSkoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pO3ZhciBwMz1uZXcgRGF0ZSxmMz1uZXcgRGF0ZTtmdW5jdGlvbiBtMyh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBtMygoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBwMy5zZXRUaW1lKCtlKSxmMy5zZXRUaW1lKCtpKSx0KHAzKSx0KGYzKSxNYXRoLmZsb29yKG4ocDMsZjMpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgZzM9bTMoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtnMy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP20zKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOmczOm51bGx9O3ZhciBfMz1nMyx5Mz0xZTMsdjM9NmU0LGIzPTM2ZTUseDM9ODY0ZTUsdzM9NjA0OGU1LFMzPW0zKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnkzKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3kzfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxNMz1tMygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSp5Myl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSp2Myl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS92M30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksRTM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqeTMtdC5nZXRNaW51dGVzKCkqdjMpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqYjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvYjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxUMz1tMygoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnYzKS94M30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtmdW5jdGlvbiBDMyh0KXtyZXR1cm4gbTMoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnYzKS93M30pKX12YXIgQTM9QzMoMCksazM9QzMoMSk7QzMoMiksQzMoMyk7dmFyIFAzPUMzKDQpO0MzKDUpLEMzKDYpO3ZhciBMMz1tMygoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSkpLEkzPW0zKChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtJMy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP20zKChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgTjM9STMsUjM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqdjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpLE8zPW0zKChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqYjMpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvYjN9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKSx6Mz1tMygoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3gzfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIEQzKHQpe3JldHVybiBtMygoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdzN9KSl9dmFyIEIzPUQzKDApLEgzPUQzKDEpO0QzKDIpLEQzKDMpO3ZhciBGMz1EMyg0KTtEMyg1KSxEMyg2KTt2YXIgVjM9bTMoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSgxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMiooZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0pKSxVMz1tMygoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7VTMuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9tMygoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGozPVUzO2Z1bmN0aW9uIEczKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBXMyh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBxMyh0LGUsbil7cmV0dXJue3k6dCxtOmUsZDpuLEg6MCxNOjAsUzowLEw6MH19dmFyIFkzLFgzLCQzLEszPXsiLSI6IiIsXzoiICIsMDoiMCJ9LFozPS9eXHMqXGQrLyxKMz0vXiUvLFEzPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiB0NCh0LGUsbil7dmFyIGk9dDwwPyItIjoiIixyPShpPy10OnQpKyIiLG89ci5sZW5ndGg7cmV0dXJuIGkrKG88bj9uZXcgQXJyYXkobi1vKzEpLmpvaW4oZSkrcjpyKX1mdW5jdGlvbiBlNCh0KXtyZXR1cm4gdC5yZXBsYWNlKFEzLCJcXCQmIil9ZnVuY3Rpb24gbjQodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKGU0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gaTQodCl7Zm9yKHZhciBlPXt9LG49LTEsaT10Lmxlbmd0aDsrK248aTspZVt0W25dLnRvTG93ZXJDYXNlKCldPW47cmV0dXJuIGV9ZnVuY3Rpb24gcjQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbzQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYTQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gczQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbDQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Llc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYzQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiBpPyh0Lnk9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdTQodCxlLG4pe3ZhciBpPVozLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBoNCh0LGUsbil7dmFyIGk9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Llo9aVsxXT8wOi0oaVsyXSsoaVszXXx8IjAwIikpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGQ0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC5xPTMqaVswXS0zLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHA0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBtNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQubT0wLHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBnNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBfNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuTT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuUz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB2NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBiNCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuTD1NYXRoLmZsb29yKGlbMF0vMWUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4NCh0LGUsbil7dmFyIGk9SjMuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/bitpWzBdLmxlbmd0aDotMX1mdW5jdGlvbiB3NCh0LGUsbil7dmFyIGk9WjMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFM0KHQsZSxuKXt2YXIgaT1aMy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTTQodCxlKXtyZXR1cm4gdDQodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBFNCh0LGUpe3JldHVybiB0NCh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBUNCh0LGUpe3JldHVybiB0NCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gQzQodCxlKXtyZXR1cm4gdDQoMStUMy5jb3VudChOMyh0KSx0KSxlLDMpfWZ1bmN0aW9uIEE0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBrNCh0LGUpe3JldHVybiBBNCh0LGUpKyIwMDAifWZ1bmN0aW9uIFA0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gTDQodCxlKXtyZXR1cm4gdDQodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBJNCh0LGUpe3JldHVybiB0NCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIE40KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBSNCh0LGUpe3JldHVybiB0NChBMy5jb3VudChOMyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gTzQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/UDModCk6UDMuY2VpbCh0KX1mdW5jdGlvbiB6NCh0LGUpe3JldHVybiB0PU80KHQpLHQ0KFAzLmNvdW50KE4zKHQpLHQpKyg0PT09TjModCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gRDQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gQjQodCxlKXtyZXR1cm4gdDQoazMuY291bnQoTjModCktMSx0KSxlLDIpfWZ1bmN0aW9uIEg0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBGNCh0LGUpe3JldHVybiB0NCgodD1PNCh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBWNCh0LGUpe3JldHVybiB0NCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gVTQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0NCgodD1uPj00fHwwPT09bj9QMyh0KTpQMy5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGo0KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrdDQoZS82MHwwLCIwIiwyKSt0NChlJTYwLCIwIiwyKX1mdW5jdGlvbiBHNCh0LGUpe3JldHVybiB0NCh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIFc0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIHE0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBZNCh0LGUpe3JldHVybiB0NCgxK3ozLmNvdW50KGozKHQpLHQpLGUsMyl9ZnVuY3Rpb24gWDQodCxlKXtyZXR1cm4gdDQodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uICQ0KHQsZSl7cmV0dXJuIFg0KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gSzQodCxlKXtyZXR1cm4gdDQodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBaNCh0LGUpe3JldHVybiB0NCh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIEo0KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gUTQodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIHQ2KHQsZSl7cmV0dXJuIHQ0KEIzLmNvdW50KGozKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBlNih0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9GMyh0KTpGMy5jZWlsKHQpfWZ1bmN0aW9uIG42KHQsZSl7cmV0dXJuIHQ9ZTYodCksdDQoRjMuY291bnQoajModCksdCkrKDQ9PT1qMyh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiBpNih0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiByNih0LGUpe3JldHVybiB0NChIMy5jb3VudChqMyh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gbzYodCxlKXtyZXR1cm4gdDQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGE2KHQsZSl7cmV0dXJuIHQ0KCh0PWU2KHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIHM2KHQsZSl7cmV0dXJuIHQ0KHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBsNih0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHQ0KCh0PW4+PTR8fDA9PT1uP0YzKHQpOkYzLmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gYzYoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIHU2KCl7cmV0dXJuIiUifWZ1bmN0aW9uIGg2KHQpe3JldHVybit0fWZ1bmN0aW9uIGQ2KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9IShmdW5jdGlvbiBwNih0KXtyZXR1cm4gWTM9KGZ1bmN0aW9uIGUodCl7dmFyIGU9dC5kYXRlVGltZSxuPXQuZGF0ZSxpPXQudGltZSxyPXQucGVyaW9kcyxvPXQuZGF5cyxhPXQuc2hvcnREYXlzLHM9dC5tb250aHMsbD10LnNob3J0TW9udGhzLGM9bjQociksdT1pNChyKSxoPW40KG8pLGQ9aTQobykscD1uNChhKSxmPWk0KGEpLG09bjQocyksZz1pNChzKSxfPW40KGwpLHk9aTQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6TTQsZTpNNCxmOms0LGc6RjQsRzpVNCxIOkU0LEk6VDQsajpDNCxMOkE0LG06UDQsTTpMNCxwOmZ1bmN0aW9uIE0odCl7cmV0dXJuIHJbKyh0LmdldEhvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gRSh0KXtyZXR1cm4gMSt+fih0LmdldE1vbnRoKCkvMyl9LFE6aDYsczpkNixTOkk0LHU6TjQsVTpSNCxWOno0LHc6RDQsVzpCNCx4Om51bGwsWDpudWxsLHk6SDQsWTpWNCxaOmo0LCIlIjp1Nn0sVD17YTpmdW5jdGlvbiBDKHQpe3JldHVybiBhW3QuZ2V0VVRDRGF5KCldfSxBOmZ1bmN0aW9uIEEodCl7cmV0dXJuIG9bdC5nZXRVVENEYXkoKV19LGI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gbFt0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uIFAodCl7cmV0dXJuIHNbdC5nZXRVVENNb250aCgpXX0sYzpudWxsLGQ6RzQsZTpHNCxmOiQ0LGc6YTYsRzpsNixIOlc0LEk6cTQsajpZNCxMOlg0LG06SzQsTTpaNCxwOmZ1bmN0aW9uIEwodCl7cmV0dXJuIHJbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gSSh0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6aDYsczpkNixTOko0LHU6UTQsVTp0NixWOm42LHc6aTYsVzpyNix4Om51bGwsWDpudWxsLHk6bzYsWTpzNixaOmM2LCIlIjp1Nn0sTj17YTpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1wLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1mW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZFtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBpPV8uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPXlbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbiBEKHQsZSxuKXt2YXIgaT1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT1nW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24gQih0LG4saSl7cmV0dXJuIEcodCxlLG4saSl9LGQ6ZjQsZTpmNCxmOmI0LGc6dTQsRzpjNCxIOmc0LEk6ZzQsajptNCxMOnY0LG06cDQsTTpfNCxwOmZ1bmN0aW9uIEgodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0scTpkNCxROnc0LHM6UzQsUzp5NCx1Om80LFU6YTQsVjpzNCx3OnI0LFc6bDQseDpmdW5jdGlvbiBGKHQsZSxpKXtyZXR1cm4gRyh0LG4sZSxpKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gRyh0LGksZSxuKX0seTp1NCxZOmM0LFo6aDQsIiUiOng0fTtmdW5jdGlvbiBVKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbyxhPVtdLHM9LTEsbD0wLGM9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczxjOykzNz09PXQuY2hhckNvZGVBdChzKSYmKGEucHVzaCh0LnNsaWNlKGwscykpLG51bGwhPShyPUszW2k9dC5jaGFyQXQoKytzKV0pP2k9dC5jaGFyQXQoKytzKTpyPSJlIj09PWk/IiAiOiIwIiwobz1lW2ldKSYmKGk9byhuLHIpKSxhLnB1c2goaSksbD1zKzEpO3JldHVybiBhLnB1c2godC5zbGljZShsLHMpKSxhLmpvaW4oIiIpfX1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbz1xMygxOTAwLHZvaWQgMCwxKTtpZihHKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicyJpbiBvKXJldHVybiBuZXcgRGF0ZSgxZTMqby5zKygiTCJpbiBvP28uTDowKSk7aWYoZSYmISgiWiJpbiBvKSYmKG8uWj0wKSwicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLHZvaWQgMD09PW8ubSYmKG8ubT0icSJpbiBvP28ucTowKSwiViJpbiBvKXtpZihvLlY8MXx8by5WPjUzKXJldHVybiBudWxsOyJ3ImluIG98fChvLnc9MSksIloiaW4gbz8ocj0oaT1XMyhxMyhvLnksMCwxKSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9IMy5jZWlsKGkpOkgzKGkpLGk9ejMub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9RzMocTMoby55LDAsMSkpKS5nZXREYXkoKSxpPXI+NHx8MD09PXI/azMuY2VpbChpKTprMyhpKSxpPVQzLm9mZnNldChpLDcqKG8uVi0xKSksby55PWkuZ2V0RnVsbFllYXIoKSxvLm09aS5nZXRNb250aCgpLG8uZD1pLmdldERhdGUoKSsoby53KzYpJTcpfWVsc2UoIlciaW4gb3x8IlUiaW4gbykmJigidyJpbiBvfHwoby53PSJ1ImluIG8/by51JTc6IlciaW4gbz8xOjApLHI9IloiaW4gbz9XMyhxMyhvLnksMCwxKSkuZ2V0VVRDRGF5KCk6RzMocTMoby55LDAsMSkpLmdldERheSgpLG8ubT0wLG8uZD0iVyJpbiBvPyhvLncrNiklNys3Km8uVy0ocis1KSU3Om8udys3Km8uVS0ocis2KSU3KTtyZXR1cm4iWiJpbiBvPyhvLkgrPW8uWi8xMDB8MCxvLk0rPW8uWiUxMDAsVzMobykpOkczKG8pfX1mdW5jdGlvbiBHKHQsZSxuLGkpe2Zvcih2YXIgcixvLGE9MCxzPWUubGVuZ3RoLGw9bi5sZW5ndGg7YTxzOyl7aWYoaT49bClyZXR1cm4tMTtpZigzNz09PShyPWUuY2hhckNvZGVBdChhKyspKSl7aWYocj1lLmNoYXJBdChhKyspLCEobz1OW3IgaW4gSzM/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1VKG4sdiksdi5YPVUoaSx2KSx2LmM9VShlLHYpLFQueD1VKG4sVCksVC5YPVUoaSxUKSxULmM9VShlLFQpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIixUKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19KSh0KSxYMz1ZMy5mb3JtYXQsJDM9WTMudXRjRm9ybWF0LFkzfSkoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgZjY9MWUzLG02PTZlNCxnNj0zNmU1LF82PTg2NGU1LHk2PTI1OTJlNix2Nj0zMTUzNmU2O2Z1bmN0aW9uIGI2KHQpe3JldHVybiBuZXcgRGF0ZSh0KX1mdW5jdGlvbiB4Nih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiB3Nih0LGUsbixpLHIsbyxhLHMsbCl7dmFyIGM9RDUoTjUsYjUpLHU9Yy5pbnZlcnQsaD1jLmRvbWFpbixkPWwoIi4lTCIpLHA9bCgiOiVTIiksZj1sKCIlSTolTSIpLG09bCgiJUkgJXAiKSxnPWwoIiVhICVkIiksXz1sKCIlYiAlZCIpLHk9bCgiJUIiKSx2PWwoIiVZIiksYj1bW2EsMSxmNl0sW2EsNSw1ZTNdLFthLDE1LDE1ZTNdLFthLDMwLDNlNF0sW28sMSxtNl0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW3IsMSxnNl0sW3IsMywxMDhlNV0sW3IsNiwyMTZlNV0sW3IsMTIsNDMyZTVdLFtpLDEsXzZdLFtpLDIsMTcyOGU1XSxbbiwxLDYwNDhlNV0sW2UsMSx5Nl0sW2UsMyw3Nzc2ZTZdLFt0LDEsdjZdXTtmdW5jdGlvbiB4KHMpe3JldHVybihhKHMpPHM/ZDpvKHMpPHM/cDpyKHMpPHM/ZjppKHMpPHM/bTplKHMpPHM/bihzKTxzP2c6Xzp0KHMpPHM/eTp2KShzKX1mdW5jdGlvbiB3KGUsbixpLHIpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKGktbikvZSxhPUowKChmdW5jdGlvbih0KXtyZXR1cm4gdFsyXX0pKS5yaWdodChiLG8pO2E9PT1iLmxlbmd0aD8ocj1hMihuL3Y2LGkvdjYsZSksZT10KTphPyhyPShhPWJbby9iW2EtMV1bMl08YlthXVsyXS9vP2EtMTphXSlbMV0sZT1hWzBdKToocj1NYXRoLm1heChhMihuLGksZSksMSksZT1zKX1yZXR1cm4gbnVsbD09cj9lOmUuZXZlcnkocil9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh1KHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aChmMi5jYWxsKHQseDYpKTpoKCkubWFwKGI2KX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGk9aCgpLHI9aVswXSxvPWlbaS5sZW5ndGgtMV0sYT1vPHI7cmV0dXJuIGEmJihuPXIscj1vLG89biksbj0obj13KHQscixvLGUpKT9uLnJhbmdlKHIsbysxKTpbXSxhP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3g6bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49aCgpO3JldHVybih0PXcodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2goaTMobix0KSk6Y30sYy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHo1KGMsdzYodCxlLG4saSxyLG8sYSxzLGwpKX0sY31mdW5jdGlvbiBTNih0KXtyZXR1cm4gdC5tYXRjaCgvLns2fS9nKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIjIit0fSkpfXZhciBNNj1TNigiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmIiksRTY9UzYoIjM5M2I3OTUyNTRhMzZiNmVjZjljOWVkZTYzNzkzOThjYTI1MmI1Y2Y2YmNlZGI5YzhjNmQzMWJkOWUzOWU3YmE1MmU3Y2I5NDg0M2MzOWFkNDk0YWQ2NjE2YmU3OTY5YzdiNDE3M2E1NTE5NGNlNmRiZGRlOWVkNiIpLFQ2PVM2KCIzMTgyYmQ2YmFlZDY5ZWNhZTFjNmRiZWZlNjU1MGRmZDhkM2NmZGFlNmJmZGQwYTIzMWEzNTQ3NGM0NzZhMWQ5OWJjN2U5YzA3NTZiYjE5ZTlhYzhiY2JkZGNkYWRhZWI2MzYzNjM5Njk2OTZiZGJkYmRkOWQ5ZDkiKSxDNj1TNigiMWY3N2I0YWVjN2U4ZmY3ZjBlZmZiYjc4MmNhMDJjOThkZjhhZDYyNzI4ZmY5ODk2OTQ2N2JkYzViMGQ1OGM1NjRiYzQ5Yzk0ZTM3N2MyZjdiNmQyN2Y3ZjdmYzdjN2M3YmNiZDIyZGJkYjhkMTdiZWNmOWVkYWU1IiksQTY9azUodTUoMzAwLC41LDApLHU1KC0yNDAsLjUsMSkpLGs2PWs1KHU1KC0xMDAsLjc1LC4zNSksdTUoODAsMS41LC44KSksUDY9azUodTUoMjYwLC43NSwuMzUpLHU1KDgwLDEuNSwuOCkpLEw2PXU1KCk7ZnVuY3Rpb24gSTYodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0W01hdGgubWF4KDAsTWF0aC5taW4oZS0xLE1hdGguZmxvb3IobiplKSkpXX19dmFyIE42PUk2KFM2KCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSksUjY9STYoUzYoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwOTAyMDIwYjAyMDIwZDAzMDMwZjAzMDMxMjA0MDQxNDA1MDQxNjA2MDUxODA2MDUxYTA3MDYxYzA4MDcxZTA5MDcyMDBhMDgyMjBiMDkyNDBjMDkyNjBkMGEyOTBlMGIyYjEwMGIyZDExMGMyZjEyMGQzMTEzMGQzNDE0MGUzNjE1MGUzODE2MGYzYjE4MGYzZDE5MTAzZjFhMTA0MjFjMTA0NDFkMTE0NzFlMTE0OTIwMTE0YjIxMTE0ZTIyMTE1MDI0MTI1MzI1MTI1NTI3MTI1ODI5MTE1YTJhMTE1YzJjMTE1ZjJkMTE2MTJmMTE2MzMxMTE2NTMzMTA2NzM0MTA2OTM2MTA2YjM4MTA2YzM5MGY2ZTNiMGY3MDNkMGY3MTNmMGY3MjQwMGY3NDQyMGY3NTQ0MGY3NjQ1MTA3NzQ3MTA3ODQ5MTA3ODRhMTA3OTRjMTE3YTRlMTE3YjRmMTI3YjUxMTI3YzUyMTM3YzU0MTM3ZDU2MTQ3ZDU3MTU3ZTU5MTU3ZTVhMTY3ZTVjMTY3ZjVkMTc3ZjVmMTg3ZjYwMTg4MDYyMTk4MDY0MWE4MDY1MWE4MDY3MWI4MDY4MWM4MTZhMWM4MTZiMWQ4MTZkMWQ4MTZlMWU4MTcwMWY4MTcyMWY4MTczMjA4MTc1MjE4MTc2MjE4MTc4MjI4MTc5MjI4MjdiMjM4MjdjMjM4MjdlMjQ4MjgwMjU4MjgxMjU4MTgzMjY4MTg0MjY4MTg2Mjc4MTg4Mjc4MTg5Mjg4MThiMjk4MThjMjk4MThlMmE4MTkwMmE4MTkxMmI4MTkzMmI4MDk0MmM4MDk2MmM4MDk4MmQ4MDk5MmQ4MDliMmU3ZjljMmU3ZjllMmY3ZmEwMmY3ZmExMzA3ZWEzMzA3ZWE1MzE3ZWE2MzE3ZGE4MzI3ZGFhMzM3ZGFiMzM3Y2FkMzQ3Y2FlMzQ3YmIwMzU3YmIyMzU3YmIzMzY3YWI1MzY3YWI3Mzc3OWI4Mzc3OWJhMzg3OGJjMzk3OGJkMzk3N2JmM2E3N2MwM2E3NmMyM2I3NWM0M2M3NWM1M2M3NGM3M2Q3M2M4M2U3M2NhM2U3MmNjM2Y3MWNkNDA3MWNmNDA3MGQwNDE2ZmQyNDI2ZmQzNDM2ZWQ1NDQ2ZGQ2NDU2Y2Q4NDU2Y2Q5NDY2YmRiNDc2YWRjNDg2OWRlNDk2OGRmNGE2OGUwNGM2N2UyNGQ2NmUzNGU2NWU0NGY2NGU1NTA2NGU3NTI2M2U4NTM2MmU5NTQ2MmVhNTY2MWViNTc2MGVjNTg2MGVkNWE1ZmVlNWI1ZWVmNWQ1ZWYwNWY1ZWYxNjA1ZGYyNjI1ZGYyNjQ1Y2YzNjU1Y2Y0Njc1Y2Y0Njk1Y2Y1NmI1Y2Y2NmM1Y2Y2NmU1Y2Y3NzA1Y2Y3NzI1Y2Y4NzQ1Y2Y4NzY1Y2Y5Nzg1ZGY5Nzk1ZGY5N2I1ZGZhN2Q1ZWZhN2Y1ZWZhODE1ZmZiODM1ZmZiODU2MGZiODc2MWZjODk2MWZjOGE2MmZjOGM2M2ZjOGU2NGZjOTA2NWZkOTI2NmZkOTQ2N2ZkOTY2OGZkOTg2OWZkOWE2YWZkOWI2YmZlOWQ2Y2ZlOWY2ZGZlYTE2ZWZlYTM2ZmZlYTU3MWZlYTc3MmZlYTk3M2ZlYWE3NGZlYWM3NmZlYWU3N2ZlYjA3OGZlYjI3YWZlYjQ3YmZlYjY3Y2ZlYjc3ZWZlYjk3ZmZlYmI4MWZlYmQ4MmZlYmY4NGZlYzE4NWZlYzI4N2ZlYzQ4OGZlYzY4YWZlYzg4Y2ZlY2E4ZGZlY2M4ZmZlY2Q5MGZlY2Y5MmZlZDE5NGZlZDM5NWZlZDU5N2ZlZDc5OWZlZDg5YWZkZGE5Y2ZkZGM5ZWZkZGVhMGZkZTBhMWZkZTJhM2ZkZTNhNWZkZTVhN2ZkZTdhOWZkZTlhYWZkZWJhY2ZjZWNhZWZjZWViMGZjZjBiMmZjZjJiNGZjZjRiNmZjZjZiOGZjZjdiOWZjZjliYmZjZmJiZGZjZmRiZiIpKSxPNj1JNihTNigiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTBhMDIwMjBjMDIwMjBlMDMwMjEwMDQwMzEyMDQwMzE0MDUwNDE3MDYwNDE5MDcwNTFiMDgwNTFkMDkwNjFmMGEwNzIyMGIwNzI0MGMwODI2MGQwODI5MGUwOTJiMTAwOTJkMTEwYTMwMTIwYTMyMTQwYjM0MTUwYjM3MTYwYjM5MTgwYzNjMTkwYzNlMWIwYzQxMWMwYzQzMWUwYzQ1MWYwYzQ4MjEwYzRhMjMwYzRjMjQwYzRmMjYwYzUxMjgwYjUzMjkwYjU1MmIwYjU3MmQwYjU5MmYwYTViMzEwYTVjMzIwYTVlMzQwYTVmMzYwOTYxMzgwOTYyMzkwOTYzM2IwOTY0M2QwOTY1M2UwOTY2NDAwYTY3NDIwYTY4NDQwYTY4NDUwYTY5NDcwYjZhNDkwYjZhNGEwYzZiNGMwYzZiNGQwZDZjNGYwZDZjNTEwZTZjNTIwZTZkNTQwZjZkNTUwZjZkNTcxMDZlNTkxMDZlNWExMTZlNWMxMjZlNWQxMjZlNWYxMzZlNjExMzZlNjIxNDZlNjQxNTZlNjUxNTZlNjcxNjZlNjkxNjZlNmExNzZlNmMxODZlNmQxODZlNmYxOTZlNzExOTZlNzIxYTZlNzQxYTZlNzUxYjZlNzcxYzZkNzgxYzZkN2ExZDZkN2MxZDZkN2QxZTZkN2YxZTZjODAxZjZjODIyMDZjODQyMDZiODUyMTZiODcyMTZiODgyMjZhOGEyMjZhOGMyMzY5OGQyMzY5OGYyNDY5OTAyNTY4OTIyNTY4OTMyNjY3OTUyNjY3OTcyNzY2OTgyNzY2OWEyODY1OWIyOTY0OWQyOTY0OWYyYTYzYTAyYTYzYTIyYjYyYTMyYzYxYTUyYzYwYTYyZDYwYTgyZTVmYTkyZTVlYWIyZjVlYWQzMDVkYWUzMDVjYjAzMTViYjEzMjVhYjMzMjVhYjQzMzU5YjYzNDU4YjczNTU3YjkzNTU2YmEzNjU1YmMzNzU0YmQzODUzYmYzOTUyYzAzYTUxYzEzYTUwYzMzYjRmYzQzYzRlYzYzZDRkYzczZTRjYzgzZjRiY2E0MDRhY2I0MTQ5Y2M0MjQ4Y2U0MzQ3Y2Y0NDQ2ZDA0NTQ1ZDI0NjQ0ZDM0NzQzZDQ0ODQyZDU0YTQxZDc0YjNmZDg0YzNlZDk0ZDNkZGE0ZTNjZGI1MDNiZGQ1MTNhZGU1MjM4ZGY1MzM3ZTA1NTM2ZTE1NjM1ZTI1NzM0ZTM1OTMzZTQ1YTMxZTU1YzMwZTY1ZDJmZTc1ZTJlZTg2MDJkZTk2MTJiZWE2MzJhZWI2NDI5ZWI2NjI4ZWM2NzI2ZWQ2OTI1ZWU2YTI0ZWY2YzIzZWY2ZTIxZjA2ZjIwZjE3MTFmZjE3MzFkZjI3NDFjZjM3NjFiZjM3ODE5ZjQ3OTE4ZjU3YjE3ZjU3ZDE1ZjY3ZTE0ZjY4MDEzZjc4MjEyZjc4NDEwZjg4NTBmZjg4NzBlZjg4OTBjZjk4YjBiZjk4YzBhZjk4ZTA5ZmE5MDA4ZmE5MjA3ZmE5NDA3ZmI5NjA2ZmI5NzA2ZmI5OTA2ZmI5YjA2ZmI5ZDA3ZmM5ZjA3ZmNhMTA4ZmNhMzA5ZmNhNTBhZmNhNjBjZmNhODBkZmNhYTBmZmNhYzExZmNhZTEyZmNiMDE0ZmNiMjE2ZmNiNDE4ZmJiNjFhZmJiODFkZmJiYTFmZmJiYzIxZmJiZTIzZmFjMDI2ZmFjMjI4ZmFjNDJhZmFjNjJkZjljNzJmZjljOTMyZjljYjM1ZjhjZDM3ZjhjZjNhZjdkMTNkZjdkMzQwZjZkNTQzZjZkNzQ2ZjVkOTQ5ZjVkYjRjZjRkZDRmZjRkZjUzZjRlMTU2ZjNlMzVhZjNlNTVkZjJlNjYxZjJlODY1ZjJlYTY5ZjFlYzZkZjFlZDcxZjFlZjc1ZjFmMTc5ZjJmMjdkZjJmNDgyZjNmNTg2ZjNmNjhhZjRmODhlZjVmOTkyZjZmYTk2ZjhmYjlhZjlmYzlkZmFmZGExZmNmZmE0IikpLHo2PUk2KFM2KCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSk7dmFyIEQ2PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixCNj17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6RDYseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBINih0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxCNi5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6QjZbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBGNih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PUQ2JiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1ENj9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gVjYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gVTYodCl7dmFyIGU9SDYodCk7cmV0dXJuKGUubG9jYWw/VjY6RjYpKGUpfWZ1bmN0aW9uIGo2KCl7fWZ1bmN0aW9uIEc2KHQpe3JldHVybiBudWxsPT10P2o2OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24gVzYoKXtyZXR1cm5bXX1mdW5jdGlvbiBxNih0KXtyZXR1cm4gbnVsbD09dD9XNjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fXZhciBZNj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl7dmFyIFg2PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZighWDYubWF0Y2hlcyl7dmFyICQ2PVg2LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8WDYubXNNYXRjaGVzU2VsZWN0b3J8fFg2Lm1vek1hdGNoZXNTZWxlY3Rvcnx8WDYub01hdGNoZXNTZWxlY3RvcjtZNj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gJDYuY2FsbCh0aGlzLHQpfX19fXZhciBLNj1ZNjtmdW5jdGlvbiBaNih0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBKNih0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1KNi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOko2LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIFE2KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBKNih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gdDkodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IEo2KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gZTkodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gbjkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGk5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcjkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBvOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBhOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gczkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gbDkodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGM5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIHU5KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gaDkodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gZDkodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxsOSh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBwOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gZjkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIG05KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIGc5KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBfOSh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyB5OSh0KX1mdW5jdGlvbiB5OSh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9ZzkodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB2OSh0LGUpe2Zvcih2YXIgbj1fOSh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIGI5KHQsZSl7Zm9yKHZhciBuPV85KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24geDkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7djkodGhpcyx0KX19ZnVuY3Rpb24gdzkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7YjkodGhpcyx0KX19ZnVuY3Rpb24gUzkodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/djk6YjkpKHRoaXMsdCl9fWZ1bmN0aW9uIE05KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBFOSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFQ5KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBDOSgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIEE5KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIGs5KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gUDkoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gTDkoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBJOSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIE45KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUjkoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMSksdGhpcy5uZXh0U2libGluZyl9ZnVuY3Rpb24gTzkoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMCksdGhpcy5uZXh0U2libGluZyl9eTkucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgejk9e30sRDk9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fCh6OT17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gQjkodCxlLG4pe3JldHVybiB0PUg5KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gSDkodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1EOTtEOT1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtEOT1yfX19ZnVuY3Rpb24gRjkodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gVjkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIFU5KHQsZSxuKXt2YXIgaT16OS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0I5Okg5O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGo5KHQsZSxuKXt2YXIgaT1sOSh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBHOSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBqOSh0aGlzLHQsZSl9fWZ1bmN0aW9uIFc5KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGo5KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBxOT1bbnVsbF07ZnVuY3Rpb24gWTkodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gWDkoKXtyZXR1cm4gbmV3IFk5KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0scTkpfWZ1bmN0aW9uICQ5KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgWTkoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBZOShbW3RdXSxxOSl9WTkucHJvdG90eXBlPVg5LnByb3RvdHlwZT17Y29uc3RydWN0b3I6WTksc2VsZWN0OmZ1bmN0aW9uIEs5KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1HNih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IFk5KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBaOSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cTYodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IFk5KGkscil9LGZpbHRlcjpmdW5jdGlvbiBKOSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SzYodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IFk5KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gUTkodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/dDk6UTYsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBZOShzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gdDgoKXtyZXR1cm4gbmV3IFk5KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKFo2KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBlOCgpe3JldHVybiBuZXcgWTkodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChaNiksdGhpcy5fcGFyZW50cyl9LG1lcmdlOmZ1bmN0aW9uIG44KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFk5KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIGk4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmYSE9PWkubmV4dFNpYmxpbmcmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIHI4KHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9ZTkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IFk5KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBvOCgpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gYTgoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIHM4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBsOCgpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gYzgoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gdTgodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGg4KHQsZSl7dmFyIG49SDYodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP2k5Om45OiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/czk6YTk6bi5sb2NhbD9vOTpyOSkobixlKSl9LHN0eWxlOmZ1bmN0aW9uIGQ4KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9jOToiZnVuY3Rpb24iPT10eXBlb2YgZT9oOTp1OSkodCxlLG51bGw9PW4/IiI6bikpOmQ5KHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBwOCh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP3A5OiJmdW5jdGlvbiI9PXR5cGVvZiBlP205OmY5KSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBmOCh0LGUpe3ZhciBuPWc5KHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPV85KHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1M5OmU/eDk6dzkpKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIG04KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P005OigiZnVuY3Rpb24iPT10eXBlb2YgdD9UOTpFOSkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGc4KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P0M5OigiZnVuY3Rpb24iPT10eXBlb2YgdD9rOTpBOSkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gXzgoKXtyZXR1cm4gdGhpcy5lYWNoKFA5KX0sbG93ZXI6ZnVuY3Rpb24geTgoKXtyZXR1cm4gdGhpcy5lYWNoKEw5KX0sYXBwZW5kOmZ1bmN0aW9uIHY4KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTYodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIGI4KHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVNih0KSxpPW51bGw9PWU/STk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpHNihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIHg4KCl7cmV0dXJuIHRoaXMuZWFjaChOOSl9LGNsb25lOmZ1bmN0aW9uIHc4KHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P085OlI5KX0sZGF0dW06ZnVuY3Rpb24gUzgodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBNOCh0LGUsbil7dmFyIGkscixvPUY5KHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP1U5OlY5LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gRTgodCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9XOTpHOSkodCxlKSl9fTt2YXIgVDg9MDtmdW5jdGlvbiBDOCgpe3JldHVybiBuZXcgQTh9ZnVuY3Rpb24gQTgoKXt0aGlzLl89IkAiKygrK1Q4KS50b1N0cmluZygzNil9ZnVuY3Rpb24gazgoKXtmb3IodmFyIHQsZT1EOTt0PWUuc291cmNlRXZlbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBQOCh0LGUpe3ZhciBuPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKG4uY3JlYXRlU1ZHUG9pbnQpe3ZhciBpPW4uY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gaS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZLFsoaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsaS55XX12YXIgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltlLmNsaWVudFgtci5sZWZ0LXQuY2xpZW50TGVmdCxlLmNsaWVudFktci50b3AtdC5jbGllbnRUb3BdfUE4LnByb3RvdHlwZT1DOC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkE4LGdldDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fOyEoZSBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W2VdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFt0aGlzLl9dPWV9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBMOD1NYXRoLlBJLEk4PTIqTDgsTjg9MWUtNixSOD1JOC1OODtmdW5jdGlvbiBPOCgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIHo4KCl7cmV0dXJuIG5ldyBPOH1mdW5jdGlvbiBEOCh0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybiB0fX1POC5wcm90b3R5cGU9ejgucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPOCxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0raSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyAraSsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHM9KG49K24pLSh0PSt0KSxsPShpPStpKS0oZT0rZSksYz1vLXQsdT1hLWUsaD1jKmMrdSp1O2lmKChyPStyKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+TjgpaWYoTWF0aC5hYnModSpzLWwqYyk+TjgmJnIpe3ZhciBkPW4tbyxwPWktYSxmPXMqcytsKmwsbT1kKmQrcCpwLGc9TWF0aC5zcXJ0KGYpLF89TWF0aC5zcXJ0KGgpLHk9cipNYXRoLnRhbigoTDgtTWF0aC5hY29zKChmK2gtbSkvKDIqZypfKSkpLzIpLHY9eS9fLGI9eS9nO01hdGguYWJzKHYtMSk+TjgmJih0aGlzLl8rPSJMIisodCt2KmMpKyIsIisoZSt2KnUpKSx0aGlzLl8rPSJBIityKyIsIityKyIsMCwwLCIrICsodSpkPmMqcCkrIiwiKyh0aGlzLl94MT10K2IqcykrIiwiKyh0aGlzLl95MT1lK2IqbCl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlO30sYXJjOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0PSt0LGU9K2Usbz0hIW87dmFyIGE9KG49K24pKk1hdGguY29zKGkpLHM9bipNYXRoLnNpbihpKSxsPXQrYSxjPWUrcyx1PTFebyxoPW8/aS1yOnItaTtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPk44fHxNYXRoLmFicyh0aGlzLl95MS1jKT5OOCkmJih0aGlzLl8rPSJMIitsKyIsIitjKSxuJiYoaDwwJiYoaD1oJUk4K0k4KSxoPlI4P3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodC1hKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpoPk44JiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1MOCkrIiwiK3UrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MocikpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKHIpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtpKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBCOD1NYXRoLmFicyxIOD1NYXRoLmF0YW4yLEY4PU1hdGguY29zLFY4PU1hdGgubWF4LFU4PU1hdGgubWluLGo4PU1hdGguc2luLEc4PU1hdGguc3FydCxXOD0xZS0xMixxOD1NYXRoLlBJLFk4PXE4LzIsWDg9MipxODtmdW5jdGlvbiAkOCh0KXtyZXR1cm4gdD4xPzA6dDwtMT9xODpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gSzgodCl7cmV0dXJuIHQ+PTE/WTg6dDw9LTE/LVk4Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBaOCh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBKOCh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBROCh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIHQ3KHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIGU3KHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIG43KHQsZSxuLGkscixvLGEscyl7dmFyIGw9bi10LGM9aS1lLHU9YS1yLGg9cy1vLGQ9KHUqKGUtbyktaCoodC1yKSkvKGgqbC11KmMpO3JldHVyblt0K2QqbCxlK2QqY119ZnVuY3Rpb24gaTcodCxlLG4saSxyLG8sYSl7dmFyIHM9dC1uLGw9ZS1pLGM9KGE/bzotbykvRzgocypzK2wqbCksdT1jKmwsaD0tYypzLGQ9dCt1LHA9ZStoLGY9bit1LG09aStoLGc9KGQrZikvMixfPShwK20pLzIseT1mLWQsdj1tLXAsYj15Knkrdip2LHg9ci1vLHc9ZCptLWYqcCxTPSh2PDA/LTE6MSkqRzgoVjgoMCx4KngqYi13KncpKSxNPSh3KnYteSpTKS9iLEU9KC13KnktdipTKS9iLFQ9KHcqdit5KlMpL2IsQz0oLXcqeSt2KlMpL2IsQT1NLWcsaz1FLV8sUD1ULWcsTD1DLV87cmV0dXJuIEEqQStrKms+UCpQK0wqTCYmKE09VCxFPUMpLHtjeDpNLGN5OkUseDAxOi11LHkwMTotaCx4MTE6TSooci94LTEpLHkxMTpFKihyL3gtMSl9fWZ1bmN0aW9uIHI3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBvNyh0KXtyZXR1cm4gbmV3IHI3KHQpfWZ1bmN0aW9uIGE3KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHM3KHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGw3KCl7dmFyIHQ9YTcsZT1zNyxuPUQ4KCEwKSxpPW51bGwscj1vNyxvPW51bGw7ZnVuY3Rpb24gYShhKXt2YXIgcyxsLGMsdT1hLmxlbmd0aCxoPSExO2ZvcihudWxsPT1pJiYobz1yKGM9ejgoKSkpLHM9MDtzPD11OysrcykhKHM8dSYmbihsPWFbc10scyxhKSk9PT1oJiYoKGg9IWgpP28ubGluZVN0YXJ0KCk6by5saW5lRW5kKCkpLGgmJm8ucG9pbnQoK3QobCxzLGEpLCtlKGwscyxhKSk7aWYoYylyZXR1cm4gbz1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIGEueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxhKTp0fSxhLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6ZX0sYS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoISF0KSxhKTpufSxhLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbnVsbCE9aSYmKG89cihpKSksYSk6cn0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bz1udWxsOm89cihpPXQpLGEpOml9LGF9ZnVuY3Rpb24gYzcoKXt2YXIgdD1hNyxlPW51bGwsbj1EOCgwKSxpPXM3LHI9RDgoITApLG89bnVsbCxhPW83LHM9bnVsbDtmdW5jdGlvbiBsKGwpe3ZhciBjLHUsaCxkLHAsZj1sLmxlbmd0aCxtPSExLGc9bmV3IEFycmF5KGYpLF89bmV3IEFycmF5KGYpO2ZvcihudWxsPT1vJiYocz1hKHA9ejgoKSkpLGM9MDtjPD1mOysrYyl7aWYoIShjPGYmJnIoZD1sW2NdLGMsbCkpPT09bSlpZihtPSFtKXU9YyxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxoPWMtMTtoPj11Oy0taClzLnBvaW50KGdbaF0sX1toXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9bSYmKGdbY109K3QoZCxjLGwpLF9bY109K24oZCxjLGwpLHMucG9pbnQoZT8rZShkLGMsbCk6Z1tjXSxpPytpKGQsYyxsKTpfW2NdKSl9aWYocClyZXR1cm4gcz1udWxsLHArIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiBsNygpLmRlZmluZWQocikuY3VydmUoYSkuY29udGV4dChvKX1yZXR1cm4gbC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246RDgoK24pLGU9bnVsbCxsKTp0fSxsLngwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RDgoK2UpLGwpOnR9LGwueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmV9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxpPW51bGwsbCk6bn0sbC55MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTpufSxsLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTppfSxsLmxpbmVYMD1sLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KG4pfSxsLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KGkpfSxsLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KG4pfSxsLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCghIXQpLGwpOnJ9LGwuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxudWxsIT1vJiYocz1hKG8pKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/bz1zPW51bGw6cz1hKG89dCksbCk6b30sbH1mdW5jdGlvbiB1Nyh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBoNyh0KXtyZXR1cm4gdH1yNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKX19fTt2YXIgZDc9ZjcobzcpO2Z1bmN0aW9uIHA3KHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24gZjcodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gbmV3IHA3KHQoZSkpfXJldHVybiBlLl9jdXJ2ZT10LGV9ZnVuY3Rpb24gbTcodCl7dmFyIGU9dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoZjcodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gZzcoKXtyZXR1cm4gbTcobDcoKS5jdXJ2ZShkNykpfWZ1bmN0aW9uIF83KCl7dmFyIHQ9YzcoKS5jdXJ2ZShkNyksZT10LmN1cnZlLG49dC5saW5lWDAsaT10LmxpbmVYMSxyPXQubGluZVkwLG89dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmdsZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRpdXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBtNyhuKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gbTcoaSgpKX0sZGVsZXRlIHQubGluZVgxLHQubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIG03KHIoKSl9LGRlbGV0ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBtNyhvKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKGY3KHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIHk3KHQsZSl7cmV0dXJuWyhlPStlKSpNYXRoLmNvcyh0LT1NYXRoLlBJLzIpLGUqTWF0aC5zaW4odCldfXA3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYVN0YXJ0KCl9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhRW5kKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX2N1cnZlLnBvaW50KGUqTWF0aC5zaW4odCksZSotTWF0aC5jb3ModCkpfX07dmFyIHY3PUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBiNyh0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24geDcodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIHc3KHQpe3ZhciBlPWI3LG49eDcsaT1hNyxyPXM3LG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz12Ny5jYWxsKGFyZ3VtZW50cyksbD1lLmFwcGx5KHRoaXMscyksYz1uLmFwcGx5KHRoaXMscyk7aWYob3x8KG89YT16OCgpKSx0KG8sK2kuYXBwbHkodGhpcywoc1swXT1sLHMpKSwrci5hcHBseSh0aGlzLHMpLCtpLmFwcGx5KHRoaXMsKHNbMF09YyxzKSksK3IuYXBwbHkodGhpcyxzKSksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEuc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYSk6ZX0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxhKTpufSxhLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6aX0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfWZ1bmN0aW9uIFM3KHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZT0oZStpKS8yLG4sZSxyLGkscil9ZnVuY3Rpb24gTTcodCxlLG4saSxyKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlLG49KG4rcikvMixpLG4saSxyKX1mdW5jdGlvbiBFNyh0LGUsbixpLHIpe3ZhciBvPXk3KGUsbiksYT15NyhlLG49KG4rcikvMikscz15NyhpLG4pLGw9eTcoaSxyKTt0Lm1vdmVUbyhvWzBdLG9bMV0pLHQuYmV6aWVyQ3VydmVUbyhhWzBdLGFbMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9dmFyIFQ3PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvcTgpO3QubW92ZVRvKG4sMCksdC5hcmMoMCwwLG4sMCxYOCl9fSxDNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlLzUpLzI7dC5tb3ZlVG8oLTMqbiwtbiksdC5saW5lVG8oLW4sLW4pLHQubGluZVRvKC1uLC0zKm4pLHQubGluZVRvKG4sLTMqbiksdC5saW5lVG8obiwtbiksdC5saW5lVG8oMypuLC1uKSx0LmxpbmVUbygzKm4sbiksdC5saW5lVG8obixuKSx0LmxpbmVUbyhuLDMqbiksdC5saW5lVG8oLW4sMypuKSx0LmxpbmVUbygtbixuKSx0LmxpbmVUbygtMypuLG4pLHQuY2xvc2VQYXRoKCl9fSxBNz1NYXRoLnNxcnQoMS8zKSxrNz0yKkE3LFA3PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvazcpLGk9bipBNzt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLDApLHQubGluZVRvKDAsbiksdC5saW5lVG8oLWksMCksdC5jbG9zZVBhdGgoKX19LEw3PU1hdGguc2luKHE4LzEwKS9NYXRoLnNpbig3KnE4LzEwKSxJNz1NYXRoLnNpbihYOC8xMCkqTDcsTjc9LU1hdGguY29zKFg4LzEwKSpMNyxSNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydCguODkwODEzMDkxNTI5Mjg1MiplKSxpPUk3Km4scj1ONypuO3QubW92ZVRvKDAsLW4pLHQubGluZVRvKGkscik7Zm9yKHZhciBvPTE7bzw1Oysrbyl7dmFyIGE9WDgqby81LHM9TWF0aC5jb3MoYSksbD1NYXRoLnNpbihhKTt0LmxpbmVUbyhsKm4sLXMqbiksdC5saW5lVG8ocyppLWwqcixsKmkrcypyKX10LmNsb3NlUGF0aCgpfX0sTzc9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZSksaT0tbi8yO3QucmVjdChpLGksbixuKX19LHo3PU1hdGguc3FydCgzKSxENz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPS1NYXRoLnNxcnQoZS8oMyp6NykpO3QubW92ZVRvKDAsMipuKSx0LmxpbmVUbygtejcqbiwtbiksdC5saW5lVG8oejcqbiwtbiksdC5jbG9zZVBhdGgoKX19LEI3PS0uNSxINz1NYXRoLnNxcnQoMykvMixGNz0xL01hdGguc3FydCgxMiksVjc9MyooRjcvMisxKSxVNz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL1Y3KSxpPW4vMixyPW4qRjcsbz1pLGE9bipGNytuLHM9LW8sbD1hO3QubW92ZVRvKGksciksdC5saW5lVG8obyxhKSx0LmxpbmVUbyhzLGwpLHQubGluZVRvKEI3KmktSDcqcixINyppK0I3KnIpLHQubGluZVRvKEI3Km8tSDcqYSxINypvK0I3KmEpLHQubGluZVRvKEI3KnMtSDcqbCxINypzK0I3KmwpLHQubGluZVRvKEI3KmkrSDcqcixCNypyLUg3KmkpLHQubGluZVRvKEI3Km8rSDcqYSxCNyphLUg3Km8pLHQubGluZVRvKEI3KnMrSDcqbCxCNypsLUg3KnMpLHQuY2xvc2VQYXRoKCl9fSxqNz1bVDcsQzcsUDcsTzcsUjcsRDcsVTddO2Z1bmN0aW9uIEc3KCl7fWZ1bmN0aW9uIFc3KHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErZSkvNiwodC5feTArNCp0Ll95MStuKS82KX1mdW5jdGlvbiBxNyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gWTcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFg3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiAkNyh0LGUpe3RoaXMuX2Jhc2lzPW5ldyBxNyh0KSx0aGlzLl9iZXRhPWV9cTcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpXNyh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpXNyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sWTcucHJvdG90eXBlPXthcmVhU3RhcnQ6RzcsYXJlYUVuZDpHNyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSx0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzYpO2JyZWFrO2RlZmF1bHQ6VzcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LFg3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBuPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsaT0odGhpcy5feTArNCp0aGlzLl95MStlKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obixpKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLGkpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6VzcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LCQ3LnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxlPXRoaXMuX3ksbj10Lmxlbmd0aC0xO2lmKG4+MClmb3IodmFyIGkscj10WzBdLG89ZVswXSxhPXRbbl0tcixzPWVbbl0tbyxsPS0xOysrbDw9bjspdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2xdKygxLXRoaXMuX2JldGEpKihyKyhpPWwvbikqYSksdGhpcy5fYmV0YSplW2xdKygxLXRoaXMuX2JldGEpKihvK2kqcykpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fTt2YXIgSzc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMT09PWU/bmV3IHE3KHQpOm5ldyAkNyh0LGUpfXJldHVybiBuLmJldGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjg1KTtmdW5jdGlvbiBaNyh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIEo3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1KNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6WjcodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Olo3KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgUTc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IEo3KHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiB0dHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fXR0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpHNyxhcmVhRW5kOkc3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6WjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBldHQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IHR0dCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gbnR0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1udHQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6WjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBpdHQ9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IG50dCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gcnR0KHQsZSxuKXt2YXIgaT10Ll94MSxyPXQuX3kxLG89dC5feDIsYT10Ll95MjtpZih0Ll9sMDFfYT5XOCl7dmFyIHM9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsbD0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7aT0oaSpzLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2wscj0ocipzLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2x9aWYodC5fbDIzX2E+Vzgpe3ZhciBjPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLHU9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO289KG8qYyt0Ll94MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3UsYT0oYSpjK3QuX3kxKnQuX2wyM18yYS1uKnQuX2wxMl8yYSkvdX10Ll9jb250ZXh0LmJlemllckN1cnZlVG8oaSxyLG8sYSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gb3R0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9b3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGF0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBvdHQodCxlKTpuZXcgSjcodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gc3R0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9c3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0Okc3LGFyZWFFbmQ6RzcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGx0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBzdHQodCxlKTpuZXcgdHR0KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGN0dCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfWN0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6cnR0KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHV0dD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBjdHQodCxlKTpuZXcgbnR0KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGh0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gZHR0KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBwdHQodCxlLG4pe3ZhciBpPXQuX3gxLXQuX3gwLHI9ZS10Ll94MSxvPSh0Ll95MS10Ll95MCkvKGl8fHI8MCYmLTApLGE9KG4tdC5feTEpLyhyfHxpPDAmJi0wKSxzPShvKnIrYSppKS8oaStyKTtyZXR1cm4oZHR0KG8pK2R0dChhKSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnMoYSksLjUqTWF0aC5hYnMocykpfHwwfWZ1bmN0aW9uIGZ0dCh0LGUpe3ZhciBuPXQuX3gxLXQuX3gwO3JldHVybiBuPygzKih0Ll95MS10Ll95MCkvbi1lKS8yOmV9ZnVuY3Rpb24gbXR0KHQsZSxuKXt2YXIgaT10Ll94MCxyPXQuX3gxLG89dC5feTEsYT0oci1pKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpK2EsdC5feTArYSplLHItYSxvLWEqbixyLG8pfWZ1bmN0aW9uIGd0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gX3R0KHQpe3RoaXMuX2NvbnRleHQ9bmV3IHl0dCh0KX1mdW5jdGlvbiB5dHQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHZ0dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gYnR0KHQpe3ZhciBlLG4saT10Lmxlbmd0aC0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpO2ZvcihyWzBdPTAsb1swXT0yLGFbMF09dFswXSsyKnRbMV0sZT0xO2U8aS0xOysrZSlyW2VdPTEsb1tlXT00LGFbZV09NCp0W2VdKzIqdFtlKzFdO2ZvcihyW2ktMV09MixvW2ktMV09NyxhW2ktMV09OCp0W2ktMV0rdFtpXSxlPTE7ZTxpOysrZSlvW2VdLT1uPXJbZV0vb1tlLTFdLGFbZV0tPW4qYVtlLTFdO2ZvcihyW2ktMV09YVtpLTFdL29baS0xXSxlPWktMjtlPj0wOy0tZSlyW2VdPShhW2VdLXJbZSsxXSkvb1tlXTtmb3Iob1tpLTFdPSh0W2ldK3JbaS0xXSkvMixlPTA7ZTxpLTE7KytlKW9bZV09Mip0W2UrMV0tcltlKzFdO3JldHVybltyLG9dfWZ1bmN0aW9uIHh0dCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PWV9ZnVuY3Rpb24gd3R0KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvPTEsYT10W2VbMF1dLHM9YS5sZW5ndGg7bzxyOysrbylmb3IoaT1hLGE9dFtlW29dXSxuPTA7bjxzOysrbilhW25dWzFdKz1hW25dWzBdPWlzTmFOKGlbbl1bMV0pP2lbbl1bMF06aVtuXVsxXX1mdW5jdGlvbiBTdHQodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpOy0tZT49MDspbltlXT1lO3JldHVybiBufWZ1bmN0aW9uIE10dCh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIEV0dCh0KXt2YXIgZT10Lm1hcChUdHQpO3JldHVybiBTdHQodCkuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XS1lW25dfSkpfWZ1bmN0aW9uIFR0dCh0KXtmb3IodmFyIGUsbj0wLGk9LTEscj10Lmxlbmd0aDsrK2k8cjspKGU9K3RbaV1bMV0pJiYobis9ZSk7cmV0dXJuIG59aHR0LnByb3RvdHlwZT17YXJlYVN0YXJ0Okc3LGFyZWFFbmQ6RzcsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0sZ3R0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzptdHQodGhpcyx0aGlzLl90MCxmdHQodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1OYU47aWYoZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLG10dCh0aGlzLGZ0dCh0aGlzLG49cHR0KHRoaXMsdCxlKSksbik7YnJlYWs7ZGVmYXVsdDptdHQodGhpcyx0aGlzLl90MCxuPXB0dCh0aGlzLHQsZSkpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZSx0aGlzLl90MD1ufX19LChfdHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZ3R0LnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7Z3R0LnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsZSx0KX0seXR0LnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxpLG4sbyxyKX19LHZ0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgaT1idHQodCkscj1idHQoZSksbz0wLGE9MTthPG47KytvLCsrYSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oaVswXVtvXSxyWzBdW29dLGlbMV1bb10sclsxXVtvXSx0W2FdLGVbYV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PW4pJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LHh0dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTt2YXIgQ3R0PW5ldyBEYXRlLEF0dD1uZXcgRGF0ZTtmdW5jdGlvbiBrdHQodCxlLG4saSl7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX1yZXR1cm4gci5mbG9vcj1yLHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGt0dCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBDdHQuc2V0VGltZSgrZSksQXR0LnNldFRpbWUoK2kpLHQoQ3R0KSx0KEF0dCksTWF0aC5mbG9vcihuKEN0dCxBdHQpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgUHR0PWt0dCgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10fSkpO1B0dC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2t0dCgoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpQdHQ6bnVsbH07dmFyIEx0dD1QdHQucmFuZ2UsSXR0PTFlMyxOdHQ9NmU0LFJ0dD0zNmU1LE90dD04NjRlNSx6dHQ9NjA0OGU1LER0dD1rdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvSXR0KSpJdHQpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqSXR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0l0dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSksQnR0PUR0dC5yYW5nZSxIdHQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFRpbWUoTWF0aC5mbG9vcih0L050dCkqTnR0KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKk50dCl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9OdHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpLEZ0dD1IdHQucmFuZ2UsVnR0PWt0dCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpKk50dCVSdHQ7ZTwwJiYoZSs9UnR0KSx0LnNldFRpbWUoTWF0aC5mbG9vcigoK3QtZSkvUnR0KSpSdHQrZSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpSdHQpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvUnR0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSksVXR0PVZ0dC5yYW5nZSxqdHQ9a3R0KChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqTnR0KS9PdHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSksR3R0PWp0dC5yYW5nZTtmdW5jdGlvbiBXdHQodCl7cmV0dXJuIGt0dCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqTnR0KS96dHR9KSl9dmFyIHF0dD1XdHQoMCksWXR0PVd0dCgxKSxYdHQ9V3R0KDIpLCR0dD1XdHQoMyksS3R0PVd0dCg0KSxadHQ9V3R0KDUpLEp0dD1XdHQoNiksUXR0PXF0dC5yYW5nZSx0ZXQ9WXR0LnJhbmdlLGVldD1YdHQucmFuZ2UsbmV0PSR0dC5yYW5nZSxpZXQ9S3R0LnJhbmdlLHJldD1adHQucmFuZ2Usb2V0PUp0dC5yYW5nZSxhZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksc2V0PWFldC5yYW5nZSxjZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtjZXQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9rdHQoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciB1ZXQ9Y2V0LnJhbmdlLGhldD1rdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqTnR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL050dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSksZGV0PWhldC5yYW5nZSxwZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqUnR0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL1J0dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkpLGZldD1wZXQucmFuZ2UsbWV0PWt0dCgoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL090dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKSxnZXQ9bWV0LnJhbmdlO2Z1bmN0aW9uIF9ldCh0KXtyZXR1cm4ga3R0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS96dHR9KSl9dmFyIHlldD1fZXQoMCksdmV0PV9ldCgxKSxiZXQ9X2V0KDIpLHhldD1fZXQoMyksd2V0PV9ldCg0KSxNZXQ9X2V0KDUpLEVldD1fZXQoNiksVGV0PXlldC5yYW5nZSxDZXQ9dmV0LnJhbmdlLEFldD1iZXQucmFuZ2Usa2V0PXhldC5yYW5nZSxQZXQ9d2V0LnJhbmdlLExldD1NZXQucmFuZ2UsSWV0PUVldC5yYW5nZSxOZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSksUmV0PU5ldC5yYW5nZSxPZXQ9a3R0KChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtPZXQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9rdHQoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciB6ZXQ9T2V0LnJhbmdlLERldD1uZXcgRGF0ZSxCZXQ9bmV3IERhdGU7ZnVuY3Rpb24gSGV0KHQsZSxuLGkpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQoZT0wPT09YXJndW1lbnRzLmxlbmd0aD9uZXcgRGF0ZTpuZXcgRGF0ZSgrZSkpLGV9cmV0dXJuIHIuZmxvb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSkpLGV9LHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIEhldCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBEZXQuc2V0VGltZSgrZSksQmV0LnNldFRpbWUoK2kpLHQoRGV0KSx0KEJldCksTWF0aC5mbG9vcihuKERldCxCZXQpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgRmV0PTg2NGU1LFZldD02MDQ4ZTUsVWV0PUhldCgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtNmU0KihlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvRmV0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSkpO2Z1bmN0aW9uIGpldCh0KXtyZXR1cm4gSGV0KChmdW5jdGlvbihlKXtlLnNldERhdGUoZS5nZXREYXRlKCktKGUuZ2V0RGF5KCkrNy10KSU3KSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LTZlNCooZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpL1ZldH0pKX12YXIgR2V0PWpldCgwKSxXZXQ9amV0KDEpO2pldCgyKSxqZXQoMyk7dmFyIHFldD1qZXQoNCk7amV0KDUpLGpldCg2KTt2YXIgWWV0PUhldCgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7WWV0LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/SGV0KChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWGV0PVlldCwkZXQ9SGV0KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvRmV0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIEtldCh0KXtyZXR1cm4gSGV0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9WZXR9KSl9dmFyIFpldD1LZXQoMCksSmV0PUtldCgxKTtLZXQoMiksS2V0KDMpO3ZhciBRZXQ9S2V0KDQpO0tldCg1KSxLZXQoNik7dmFyIHRudD1IZXQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO3RudC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0hldCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGVudD10bnQ7ZnVuY3Rpb24gbm50KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBpbnQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gcm50KHQpe3JldHVybnt5OnQsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIG9udCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1fbnQociksdT15bnQociksaD1fbnQobyksZD15bnQobykscD1fbnQoYSksZj15bnQoYSksbT1fbnQocyksZz15bnQocyksXz1fbnQobCkseT15bnQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6Qm50LGU6Qm50LGY6am50LEg6SG50LEk6Rm50LGo6Vm50LEw6VW50LG06R250LE06V250LHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0sUTp2aXQsczpiaXQsUzpxbnQsdTpZbnQsVTpYbnQsVjokbnQsdzpLbnQsVzpabnQseDpudWxsLFg6bnVsbCx5OkpudCxZOlFudCxaOnRpdCwiJSI6eWl0fSxFPXthOmZ1bmN0aW9uIFQodCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQyh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBBKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDplaXQsZTplaXQsZjphaXQsSDpuaXQsSTppaXQsajpyaXQsTDpvaXQsbTpzaXQsTTpsaXQscDpmdW5jdGlvbiBQKHQpe3JldHVybiByWysodC5nZXRVVENIb3VycygpPj0xMildfSxROnZpdCxzOmJpdCxTOmNpdCx1OnVpdCxVOmhpdCxWOmRpdCx3OnBpdCxXOmZpdCx4Om51bGwsWDpudWxsLHk6bWl0LFk6Z2l0LFo6X2l0LCIlIjp5aXR9LEw9e2E6ZnVuY3Rpb24gSSh0LGUsbil7dmFyIGk9cC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZltpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIE4odCxlLG4pe3ZhciBpPWguZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWRbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1fLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT15W2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09Z1tpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIHoodCxuLGkpe3JldHVybiBVKHQsZSxuLGkpfSxkOkFudCxlOkFudCxmOlJudCxIOlBudCxJOlBudCxqOmtudCxMOk5udCxtOkNudCxNOkxudCxwOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sUTp6bnQsczpEbnQsUzpJbnQsdTpibnQsVTp4bnQsVjp3bnQsdzp2bnQsVzpTbnQseDpmdW5jdGlvbiBCKHQsZSxpKXtyZXR1cm4gVSh0LG4sZSxpKX0sWDpmdW5jdGlvbiBIKHQsZSxuKXtyZXR1cm4gVSh0LGksZSxuKX0seTpFbnQsWTpNbnQsWjpUbnQsIiUiOk9udH07ZnVuY3Rpb24gRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgaSxyLG8sYT1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihhLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0ocj1obnRbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIFYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPXJudCgxOTAwKTtpZihVKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPWludChybnQoby55KSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9KZXQuY2VpbChpKTpKZXQoaSksaT0kZXQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9ZShybnQoby55KSkpLmdldERheSgpLGk9cj40fHwwPT09cj9XZXQuY2VpbChpKTpXZXQoaSksaT1VZXQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP2ludChybnQoby55KSkuZ2V0VVRDRGF5KCk6ZShybnQoby55KSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxpbnQobykpOmUobyl9fWZ1bmN0aW9uIFUodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPUxbciBpbiBobnQ/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1GKG4sdiksdi5YPUYoaSx2KSx2LmM9RihlLHYpLEUueD1GKG4sRSksRS5YPUYoaSxFKSxFLmM9RihlLEUpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9Rih0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1WKHQrPSIiLG5udCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPUYodCs9IiIsRSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9Vih0LGludCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX19fXZhciBhbnQsc250LGxudCxjbnQsdW50LGhudD17Ii0iOiIiLF86IiAiLDA6IjAifSxkbnQ9L15ccypcZCsvLHBudD0vXiUvLGZudD0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gbW50KHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIGdudCh0KXtyZXR1cm4gdC5yZXBsYWNlKGZudCwiXFwkJiIpfWZ1bmN0aW9uIF9udCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoZ250KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24geW50KHQpe2Zvcih2YXIgZT17fSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIHZudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYm50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4bnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5VPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU250KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBNbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gaT8odC55PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEVudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUbnQodCxlLG4pe3ZhciBpPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5aPWlbMV0/MDotKGlbMl0rKGlbM118fCIwMCIpKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBBbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lm09MCx0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUG50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBMbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEludCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTm50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSbnQodCxlLG4pe3ZhciBpPWRudC5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE9udCh0LGUsbil7dmFyIGk9cG50LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpP24raVswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gem50KHQsZSxuKXt2YXIgaT1kbnQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIERudCh0LGUsbil7dmFyIGk9ZG50LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQuUT0xZTMqK2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQm50KHQsZSl7cmV0dXJuIG1udCh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIEhudCh0LGUpe3JldHVybiBtbnQodC5nZXRIb3VycygpLGUsMil9ZnVuY3Rpb24gRm50KHQsZSl7cmV0dXJuIG1udCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gVm50KHQsZSl7cmV0dXJuIG1udCgxK1VldC5jb3VudChYZXQodCksdCksZSwzKX1mdW5jdGlvbiBVbnQodCxlKXtyZXR1cm4gbW50KHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBqbnQodCxlKXtyZXR1cm4gVW50KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gR250KHQsZSl7cmV0dXJuIG1udCh0LmdldE1vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIFdudCh0LGUpe3JldHVybiBtbnQodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBxbnQodCxlKXtyZXR1cm4gbW50KHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gWW50KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBYbnQodCxlKXtyZXR1cm4gbW50KEdldC5jb3VudChYZXQodCksdCksZSwyKX1mdW5jdGlvbiAkbnQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0PW4+PTR8fDA9PT1uP3FldCh0KTpxZXQuY2VpbCh0KSxtbnQocWV0LmNvdW50KFhldCh0KSx0KSsoND09PVhldCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBLbnQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gWm50KHQsZSl7cmV0dXJuIG1udChXZXQuY291bnQoWGV0KHQpLHQpLGUsMil9ZnVuY3Rpb24gSm50KHQsZSl7cmV0dXJuIG1udCh0LmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gUW50KHQsZSl7cmV0dXJuIG1udCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdGl0KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrbW50KGUvNjB8MCwiMCIsMikrbW50KGUlNjAsIjAiLDIpfWZ1bmN0aW9uIGVpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENEYXRlKCksZSwyKX1mdW5jdGlvbiBuaXQodCxlKXtyZXR1cm4gbW50KHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIGlpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIHJpdCh0LGUpe3JldHVybiBtbnQoMSskZXQuY291bnQoZW50KHQpLHQpLGUsMyl9ZnVuY3Rpb24gb2l0KHQsZSl7cmV0dXJuIG1udCh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gYWl0KHQsZSl7cmV0dXJuIG9pdCh0LGUpKyIwMDAifWZ1bmN0aW9uIHNpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBsaXQodCxlKXtyZXR1cm4gbW50KHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gY2l0KHQsZSl7cmV0dXJuIG1udCh0LmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIHVpdCh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gaGl0KHQsZSl7cmV0dXJuIG1udChaZXQuY291bnQoZW50KHQpLHQpLGUsMil9ZnVuY3Rpb24gZGl0KHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gdD1uPj00fHwwPT09bj9RZXQodCk6UWV0LmNlaWwodCksbW50KFFldC5jb3VudChlbnQodCksdCkrKDQ9PT1lbnQodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gcGl0KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGZpdCh0LGUpe3JldHVybiBtbnQoSmV0LmNvdW50KGVudCh0KSx0KSxlLDIpfWZ1bmN0aW9uIG1pdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGdpdCh0LGUpe3JldHVybiBtbnQodC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIF9pdCgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24geWl0KCl7cmV0dXJuIiUifWZ1bmN0aW9uIHZpdCh0KXtyZXR1cm4rdH1mdW5jdGlvbiBiaXQodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiB4aXQodCl7cmV0dXJuIGFudD1vbnQodCksc250PWFudC5mb3JtYXQsbG50PWFudC5wYXJzZSxjbnQ9YW50LnV0Y0Zvcm1hdCx1bnQ9YW50LnV0Y1BhcnNlLGFudH14aXQoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgd2l0PSIlWS0lbS0lZFQlSDolTTolUy4lTFoiO3ZhciBTaXQ9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24gTWl0KHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9OmNudCh3aXQpO3ZhciBFaXQsVGl0LENpdD0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uIEFpdCh0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfTp1bnQod2l0KSxraXQ9MCxQaXQ9MCxMaXQ9MCxJaXQ9MCxOaXQ9MCxSaXQ9MCxPaXQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUseml0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIERpdCgpe3JldHVybiBOaXR8fCh6aXQoQml0KSxOaXQ9T2l0Lm5vdygpK1JpdCl9ZnVuY3Rpb24gQml0KCl7Tml0PTB9ZnVuY3Rpb24gSGl0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBGaXQodCxlLG4pe3ZhciBpPW5ldyBIaXQ7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBWaXQoKXtEaXQoKSwrK2tpdDtmb3IodmFyIHQsZT1FaXQ7ZTspKHQ9Tml0LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1raXR9ZnVuY3Rpb24gVWl0KCl7Tml0PShJaXQ9T2l0Lm5vdygpKStSaXQsa2l0PVBpdD0wO3RyeXtWaXQoKX1maW5hbGx5e2tpdD0wLChmdW5jdGlvbiB0KCl7dmFyIHQsZSxuPUVpdCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpFaXQ9ZSk7VGl0PXQsR2l0KGkpfSkoKSxOaXQ9MH19ZnVuY3Rpb24gaml0KCl7dmFyIHQ9T2l0Lm5vdygpLGU9dC1JaXQ7ZT4xZTMmJihSaXQtPWUsSWl0PXQpfWZ1bmN0aW9uIEdpdCh0KXtraXR8fChQaXQmJihQaXQ9Y2xlYXJUaW1lb3V0KFBpdCkpLHQtTml0PjI0Pyh0PDEvMCYmKFBpdD1zZXRUaW1lb3V0KFVpdCx0LU9pdC5ub3coKS1SaXQpKSxMaXQmJihMaXQ9Y2xlYXJJbnRlcnZhbChMaXQpKSk6KExpdHx8KElpdD1PaXQubm93KCksTGl0PXNldEludGVydmFsKGppdCwxZTMpKSxraXQ9MSx6aXQoVWl0KSkpfUhpdC5wcm90b3R5cGU9Rml0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6SGl0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9EaXQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8VGl0PT09dGhpc3x8KFRpdD9UaXQuX25leHQ9dGhpczpFaXQ9dGhpcyxUaXQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixHaXQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsR2l0KCkpfX07dmFyIFdpdD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIscWl0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpXaXQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBZaXQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSkscWl0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpxaXRbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBYaXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1XaXQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVdpdD9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gJGl0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEtpdCh0KXt2YXIgZT1ZaXQodCk7cmV0dXJuKGUubG9jYWw/JGl0OlhpdCkoZSl9ZnVuY3Rpb24gWml0KCl7fWZ1bmN0aW9uIEppdCh0KXtyZXR1cm4gbnVsbD09dD9aaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBRaXQoKXtyZXR1cm5bXX1mdW5jdGlvbiB0cnQodCl7cmV0dXJuIG51bGw9PXQ/UWl0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gZXJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIG5ydCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBpcnQodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9aXJ0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6aXJ0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIHJydCh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgaXJ0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBvcnQodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IGlydCh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIGFydCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBzcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGxydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGNydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIHVydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBocnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIGRydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBwcnQodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGZydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBtcnQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBncnQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gX3J0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8cHJ0KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIHlydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gdnJ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBicnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24geHJ0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiB3cnQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgU3J0KHQpfWZ1bmN0aW9uIFNydCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9eHJ0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gTXJ0KHQsZSl7Zm9yKHZhciBuPXdydCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIEVydCh0LGUpe2Zvcih2YXIgbj13cnQodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBUcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7TXJ0KHRoaXMsdCl9fWZ1bmN0aW9uIENydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtFcnQodGhpcyx0KX19ZnVuY3Rpb24gQXJ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP01ydDpFcnQpKHRoaXMsdCl9fWZ1bmN0aW9uIGtydCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gUHJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gTHJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBJcnQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBOcnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gUnJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gT3J0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIHpydCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIERydCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEJydCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIEhydCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gRnJ0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1TcnQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgVnJ0PXt9OyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KFZydD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gVXJ0KHQsZSxuKXtyZXR1cm4gdD1qcnQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBqcnQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7fX19ZnVuY3Rpb24gR3J0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIFdydCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gcXJ0KHQsZSxuKXt2YXIgaT1WcnQuaGFzT3duUHJvcGVydHkodC50eXBlKT9VcnQ6anJ0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIFlydCh0LGUsbil7dmFyIGk9cHJ0KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIFhydCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBZcnQodGhpcyx0LGUpfX1mdW5jdGlvbiAkcnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWXJ0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBLcnQ9W251bGxdO2Z1bmN0aW9uIFpydCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBKcnQoKXtyZXR1cm4gbmV3IFpydChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLEtydCl9WnJ0LnByb3RvdHlwZT1KcnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpacnQsc2VsZWN0OmZ1bmN0aW9uIFFydCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Sml0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgWnJ0KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiB0b3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXRydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9W10scj1bXSxvPTA7bzxuOysrbylmb3IodmFyIGEscz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJihpLnB1c2godC5jYWxsKGEsYS5fX2RhdGFfXyxjLHMpKSxyLnB1c2goYSkpO3JldHVybiBuZXcgWnJ0KGkscil9LGZpbHRlcjpmdW5jdGlvbiBlb3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWVydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgWnJ0KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gbm90KHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP29ydDpycnQsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBacnQocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGlvdCgpe3JldHVybiBuZXcgWnJ0KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKG5ydCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gcm90KCl7cmV0dXJuIG5ldyBacnQodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChucnQpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIG9vdCh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gYW90KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFpydChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBzb3QoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIGxvdCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PWFydCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgWnJ0KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBjb3QoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIHVvdCgpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gaG90KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBkb3QoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIHBvdCgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBmb3QodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIG1vdCh0LGUpe3ZhciBuPVlpdCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/bHJ0OnNydDoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP2RydDpocnQ6bi5sb2NhbD91cnQ6Y3J0KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gZ290KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9mcnQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/Z3J0Om1ydCkodCxlLG51bGw9PW4/IiI6bikpOl9ydCh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gX290KHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/eXJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2JydDp2cnQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIHlvdCh0LGUpe3ZhciBuPXhydCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT13cnQodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/QXJ0OmU/VHJ0OkNydCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gdm90KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2tydDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/THJ0OlBydCkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIGJvdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9JcnQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1JydDpOcnQpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIHhvdCgpe3JldHVybiB0aGlzLmVhY2goT3J0KX0sbG93ZXI6ZnVuY3Rpb24gd290KCl7cmV0dXJuIHRoaXMuZWFjaCh6cnQpfSxhcHBlbmQ6ZnVuY3Rpb24gU290KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S2l0KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBNb3QodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OktpdCh0KSxpPW51bGw9PWU/RHJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Sml0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gRW90KCl7cmV0dXJuIHRoaXMuZWFjaChCcnQpfSxjbG9uZTpmdW5jdGlvbiBUb3QodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/RnJ0OkhydCl9LGRhdHVtOmZ1bmN0aW9uIENvdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIEFvdCh0LGUsbil7dmFyIGkscixvPUdydCh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9xcnQ6V3J0LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24ga290KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/JHJ0OlhydCkodCxlKSl9fTt2YXIgUG90PXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIExvdCgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBJb3QoaSl9ZnVuY3Rpb24gSW90KHQpe3RoaXMuXz10fWZ1bmN0aW9uIE5vdCh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gUm90KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gT290KHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1Qb3QsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fUlvdC5wcm90b3R5cGU9TG90LnByb3RvdHlwZT17Y29uc3RydWN0b3I6SW90LG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj1Ob3QodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09T290KGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09T290KGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1Sb3QoaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgSW90KHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgem90LERvdCxCb3Q9MCxIb3Q9MCxGb3Q9MCxWb3Q9MCxVb3Q9MCxqb3Q9MCxHb3Q9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsV290PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIHFvdCgpe3JldHVybiBVb3R8fChXb3QoWW90KSxVb3Q9R290Lm5vdygpK2pvdCl9ZnVuY3Rpb24gWW90KCl7VW90PTB9ZnVuY3Rpb24gWG90KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiAkb3QodCxlLG4pe3ZhciBpPW5ldyBYb3Q7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBLb3QoKXtVb3Q9KFZvdD1Hb3Qubm93KCkpK2pvdCxCb3Q9SG90PTA7dHJ5eyEoZnVuY3Rpb24gdCgpe3FvdCgpLCsrQm90O2Zvcih2YXIgdCxlPXpvdDtlOykodD1Vb3QtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUJvdH0pKCl9ZmluYWxseXtCb3Q9MCwoZnVuY3Rpb24gZSgpe3ZhciB0LGUsbj16b3QsaT0xLzA7Zm9yKDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6em90PWUpO0RvdD10LEpvdChpKX0pKCksVW90PTB9fWZ1bmN0aW9uIFpvdCgpe3ZhciB0PUdvdC5ub3coKSxlPXQtVm90O2U+MWUzJiYoam90LT1lLFZvdD10KX1mdW5jdGlvbiBKb3QodCl7Qm90fHwoSG90JiYoSG90PWNsZWFyVGltZW91dChIb3QpKSx0LVVvdD4yND8odDwxLzAmJihIb3Q9c2V0VGltZW91dChLb3QsdC1Hb3Qubm93KCktam90KSksRm90JiYoRm90PWNsZWFySW50ZXJ2YWwoRm90KSkpOihGb3R8fChWb3Q9R290Lm5vdygpLEZvdD1zZXRJbnRlcnZhbChab3QsMWUzKSksQm90PTEsV290KEtvdCkpKX1mdW5jdGlvbiBRb3QodCxlLG4pe3ZhciBpPW5ldyBYb3Q7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1Yb3QucHJvdG90eXBlPSRvdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlhvdCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/cW90KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fERvdD09PXRoaXN8fChEb3Q/RG90Ll9uZXh0PXRoaXM6em90PXRoaXMsRG90PXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sSm90KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLEpvdCgpKX19O3ZhciB0YXQ9TG90KCJzdGFydCIsImVuZCIsImludGVycnVwdCIpLGVhdD1bXTtmdW5jdGlvbiBuYXQodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJmEodC1uLmRlbGF5KX1mdW5jdGlvbiBhKG8pe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBsKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gUW90KGEpOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGRlbGV0ZSByW2NdKX1pZihRb3QoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKG51bGwscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9JG90KG8sMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOnRhdCx0d2VlbjplYXQsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIGlhdCh0LGUpe3ZhciBuPW9hdCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHJhdCh0LGUpe3ZhciBuPW9hdCh0LGUpO2lmKG4uc3RhdGU+Mil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHN0YXJ0ZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBvYXQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBhYXQodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksaSYmbi5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBvW3JdKTphPSExO2EmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gc2F0KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBsYXQodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gY2F0KCl7fXZhciB1YXQ9LjcsaGF0PTEvdWF0LGRhdD0iXFxzKihbKy1dP1xcZCspXFxzKiIscGF0PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLGZhdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsbWF0PS9eIyhbMC05YS1mXXszLDh9KSQvLGdhdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbZGF0LGRhdCxkYXRdKyJcXCkkIiksX2F0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tmYXQsZmF0LGZhdF0rIlxcKSQiKSx5YXQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tkYXQsZGF0LGRhdCxwYXRdKyJcXCkkIiksdmF0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbZmF0LGZhdCxmYXQscGF0XSsiXFwpJCIpLGJhdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbcGF0LGZhdCxmYXRdKyJcXCkkIikseGF0PW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbcGF0LGZhdCxmYXQscGF0XSsiXFwpJCIpLHdhdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBTYXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBNYXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBFYXQodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9bWF0LmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/VGF0KGUpOjM9PT1uP25ldyBQYXQoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0NhdChlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9DYXQoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1nYXQuZXhlYyh0KSk/bmV3IFBhdChlWzFdLGVbMl0sZVszXSwxKTooZT1fYXQuZXhlYyh0KSk/bmV3IFBhdCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT15YXQuZXhlYyh0KSk/Q2F0KGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPXZhdC5leGVjKHQpKT9DYXQoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9YmF0LmV4ZWModCkpP1JhdChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXhhdC5leGVjKHQpKT9SYXQoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTp3YXQuaGFzT3duUHJvcGVydHkodCk/VGF0KHdhdFt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IFBhdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFRhdCh0KXtyZXR1cm4gbmV3IFBhdCh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gQ2F0KHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgUGF0KHQsZSxuLGkpfWZ1bmN0aW9uIEFhdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGNhdHx8KHQ9RWF0KHQpKSx0P25ldyBQYXQoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IFBhdH1mdW5jdGlvbiBrYXQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0FhdCh0KTpuZXcgUGF0KHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBQYXQodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIExhdCgpe3JldHVybiIjIitOYXQodGhpcy5yKStOYXQodGhpcy5nKStOYXQodGhpcy5iKX1mdW5jdGlvbiBJYXQoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBOYXQodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBSYXQodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyB6YXQodCxlLG4saSl9ZnVuY3Rpb24gT2F0KHQpe2lmKHQgaW5zdGFuY2VvZiB6YXQpcmV0dXJuIG5ldyB6YXQodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgY2F0fHwodD1FYXQodCkpLCF0KXJldHVybiBuZXcgemF0O2lmKHQgaW5zdGFuY2VvZiB6YXQpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyB6YXQoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiB6YXQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIERhdCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gQmF0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBIYXQodCl7cmV0dXJuIDE9PSh0PSt0KT9GYXQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6QmF0KGlzTmFOKGUpP246ZSl9fWZ1bmN0aW9uIEZhdCh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj8oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fSkodCxuKTpCYXQoaXNOYU4odCk/ZTp0KX1zYXQoY2F0LEVhdCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpTYXQsZm9ybWF0SGV4OlNhdCxmb3JtYXRIc2w6ZnVuY3Rpb24gVmF0KCl7cmV0dXJuIE9hdCh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOk1hdCx0b1N0cmluZzpNYXR9KSxzYXQoUGF0LGthdCxsYXQoY2F0LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2hhdDpNYXRoLnBvdyhoYXQsdCksbmV3IFBhdCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD91YXQ6TWF0aC5wb3codWF0LHQpLG5ldyBQYXQodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpMYXQsZm9ybWF0SGV4OkxhdCxmb3JtYXRSZ2I6SWF0LHRvU3RyaW5nOklhdH0pKSxzYXQoemF0LChmdW5jdGlvbiBVYXQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP09hdCh0KTpuZXcgemF0KHQsZSxuLG51bGw9PWk/MTppKX0pLGxhdChjYXQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/aGF0Ok1hdGgucG93KGhhdCx0KSxuZXcgemF0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/dWF0Ok1hdGgucG93KHVhdCx0KSxuZXcgemF0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgUGF0KERhdCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxEYXQodCxyLGkpLERhdCh0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBqYXQ9KGZ1bmN0aW9uIHQoZSl7dmFyIG49SGF0KGUpO2Z1bmN0aW9uIGkodCxlKXt2YXIgaT1uKCh0PWthdCh0KSkuciwoZT1rYXQoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1GYXQodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gaS5nYW1tYT10LGl9KSgxKTtmdW5jdGlvbiBHYXQodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19dmFyIFdhdD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2cscWF0PW5ldyBSZWdFeHAoV2F0LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFlhdCh0LGUpe3ZhciBuLGkscixvPVdhdC5sYXN0SW5kZXg9cWF0Lmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1XYXQuZXhlYyh0KSkmJihpPXFhdC5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6R2F0KG4saSl9KSksbz1xYXQubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYocj1lLnNsaWNlKG8pLHNbYV0/c1thXSs9cjpzWysrYV09cikscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpPTA7aTxlOysraSlzWyhuPWxbaV0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfXZhciBYYXQsJGF0LEthdCxaYXQsSmF0PTE4MC9NYXRoLlBJLFFhdD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiB0c3QodCxlLG4saSxyLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89YSxlLz1hKSwobD10Km4rZSppKSYmKG4tPXQqbCxpLT1lKmwpLChzPU1hdGguc3FydChuKm4raSppKSkmJihuLz1zLGkvPXMsbC89cyksdCppPGUqbiYmKHQ9LXQsZT0tZSxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOnIsdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqSmF0LHNrZXdYOk1hdGguYXRhbihsKSpKYXQsc2NhbGVYOmEsc2NhbGVZOnN9fWZ1bmN0aW9uIGVzdCh0LGUsbixpKXtmdW5jdGlvbiByKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1bXSxsPVtdO3JldHVybiBvPXQobyksYT10KGEpLChmdW5jdGlvbiBjKHQsaSxyLG8sYSxzKXtpZih0IT09cnx8aSE9PW8pe3ZhciBsPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmwtNCx4OkdhdCh0LHIpfSx7aTpsLTIseDpHYXQoaSxvKX0pfWVsc2Uocnx8bykmJmEucHVzaCgidHJhbnNsYXRlKCIrcitlK28rbil9KShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gdSh0LGUsbixvKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOm4ucHVzaChyKG4pKyJyb3RhdGUoIixudWxsLGkpLTIseDpHYXQodCxlKX0pKTplJiZuLnB1c2gocihuKSsicm90YXRlKCIrZStpKX0pKG8ucm90YXRlLGEucm90YXRlLHMsbCksKGZ1bmN0aW9uIGgodCxlLG4sbyl7dCE9PWU/by5wdXNoKHtpOm4ucHVzaChyKG4pKyJza2V3WCgiLG51bGwsaSktMix4OkdhdCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6R2F0KHQsbil9LHtpOnMtMix4OkdhdChlLGkpfSl9ZWxzZSAxPT09biYmMT09PWl8fG8ucHVzaChyKG8pKyJzY2FsZSgiK24rIiwiK2krIikiKX0pKG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHMsbCksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEsaT1sLmxlbmd0aDsrK248aTspc1soZT1sW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgbnN0PWVzdCgoZnVuY3Rpb24gaXN0KHQpe3JldHVybiJub25lIj09PXQ/UWF0OihYYXR8fChYYXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksJGF0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxLYXQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFhhdC5zdHlsZS50cmFuc2Zvcm09dCx0PUthdC5nZXRDb21wdXRlZFN0eWxlKCRhdC5hcHBlbmRDaGlsZChYYXQpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLCRhdC5yZW1vdmVDaGlsZChYYXQpLHRzdCgrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIikscnN0PWVzdCgoZnVuY3Rpb24gb3N0KHQpe3JldHVybiBudWxsPT10P1FhdDooWmF0fHwoWmF0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLFphdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9WmF0LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP3RzdCgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpRYXQpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBhc3QodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXJhdCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIHNzdCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89cmF0KHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIGxzdCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1yYXQodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gb2F0KHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIGNzdCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/R2F0OmUgaW5zdGFuY2VvZiBFYXQ/amF0OihuPUVhdChlKSk/KGU9bixqYXQpOllhdCkodCxlKX1mdW5jdGlvbiB1c3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGhzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGRzdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fWZ1bmN0aW9uIHBzdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1uP251bGw6bz09PWk/cjpyPWUoaT1vLG4pfX1mdW5jdGlvbiBmc3QodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBtc3QodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09cz9udWxsOmE9PT1pJiZzPT09cj9vOm89ZShpPWEscj1zKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGdzdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGkoZSkpfX1yZXR1cm4gbi5fdmFsdWU9ZSxufWZ1bmN0aW9uIF9zdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlKHQsaShlKSl9fXJldHVybiBuLl92YWx1ZT1lLG59ZnVuY3Rpb24geXN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7aWF0KHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB2c3QodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2lhdCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIGJzdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JhdCh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24geHN0KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtyYXQodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiB3c3QodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7cmF0KHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBTc3QodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9pYXQ6cmF0O3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSxzPWEub247cyE9PWkmJihyPShpPXMpLmNvcHkoKSkub24oZSxuKSxhLm9uPXJ9fXZhciBNc3Q9SnJ0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBFc3QodCxlLG4pe2Z1bmN0aW9uIGkoKXt2YXIgaT10aGlzLHI9ZS5hcHBseShpLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKGUpe2kuc3R5bGUuc2V0UHJvcGVydHkodCxyKGUpLG4pfX1yZXR1cm4gaS5fdmFsdWU9ZSxpfXZhciBUc3Q9MDtmdW5jdGlvbiBDc3QodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIEFzdCh0KXtyZXR1cm4gSnJ0KCkudHJhbnNpdGlvbih0KX1mdW5jdGlvbiBrc3QoKXtyZXR1cm4rK1RzdH12YXIgUHN0PUpydC5wcm90b3R5cGU7Q3N0LnByb3RvdHlwZT1Bc3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDc3Qsc2VsZWN0OmZ1bmN0aW9uIExzdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUppdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLG5hdChoW2RdLGUsbixkLGgsb2F0KHMsbikpKTtyZXR1cm4gbmV3IENzdChvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIElzdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXRydCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj1vYXQobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZuYXQoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBDc3QobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBOc3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWVydCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgQ3N0KGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gUnN0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IENzdChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBPc3QoKXtyZXR1cm4gbmV3IE1zdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24genN0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPWtzdCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9b2F0KGEsZSk7bmF0KGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgQ3N0KGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOlBzdC5jYWxsLG5vZGVzOlBzdC5ub2Rlcyxub2RlOlBzdC5ub2RlLHNpemU6UHN0LnNpemUsZW1wdHk6UHN0LmVtcHR5LGVhY2g6UHN0LmVhY2gsb246ZnVuY3Rpb24gRHN0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vYXQodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKFNzdChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIEJzdCh0LGUpe3ZhciBuPVlpdCh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9yc3Q6Y3N0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP21zdDpmc3QpKG4saSxsc3QodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/aHN0OnVzdCkobik6KG4ubG9jYWw/cHN0OmRzdCkobixpLGUrIiIpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIEhzdCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9WWl0KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/Z3N0Ol9zdCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uIEZzdCh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/bnN0OmNzdDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1fcnQodGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLF9ydCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsKGZ1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19KSh0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1fcnQodGhpcyx0KSxzPW4odGhpcyk7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHM9X3J0KHRoaXMsdCkpLGE9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpfX0pKHQsaSxsc3QodGhpcywic3R5bGUuIit0LGUpKTooZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1fcnQodGhpcyx0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fSkodCxpLGUrIiIpLG4pfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIFZzdCh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxFc3QodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIFVzdCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShsc3QodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0scmVtb3ZlOmZ1bmN0aW9uIGpzdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBHc3QodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPW9hdCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/YXN0OnNzdCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gV3N0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/eXN0OnZzdCkoZSx0KSk6b2F0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBxc3QodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9ic3Q6eHN0KShlLHQpKTpvYXQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gWXN0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCh3c3QoZSx0KSk6b2F0KHRoaXMubm9kZSgpLGUpLmVhc2V9fTt2YXIgWHN0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpxZn07ZnVuY3Rpb24gJHN0KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIFhzdC50aW1lPXFvdCgpLFhzdDtyZXR1cm4gbn1KcnQucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBLc3QodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXthYXQodGhpcyx0KX0pKX0sSnJ0LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIFpzdCh0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBDc3Q/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1rc3QoKSwobj1Yc3QpLnRpbWU9cW90KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmbmF0KGEsdCxlLGMscyxufHwkc3QoYSxlKSk7cmV0dXJuIG5ldyBDc3QoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBKc3Q9W251bGxdO2Z1bmN0aW9uIFFzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdGx0KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIGVsdCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBubHQoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBpbHQodCl7dC5VPXQuQz10Lkw9dC5SPXQuUD10Lk49bnVsbH1mdW5jdGlvbiBybHQodCxlKXt2YXIgbj1lLGk9ZS5SLHI9bi5VO3I/ci5MPT09bj9yLkw9aTpyLlI9aTp0Ll89aSxpLlU9cixuLlU9aSxuLlI9aS5MLG4uUiYmKG4uUi5VPW4pLGkuTD1ufWZ1bmN0aW9uIG9sdCh0LGUpe3ZhciBuPWUsaT1lLkwscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uTD1pLlIsbi5MJiYobi5MLlU9biksaS5SPW59ZnVuY3Rpb24gYWx0KHQpe2Zvcig7dC5MOyl0PXQuTDtyZXR1cm4gdH1mdW5jdGlvbiBzbHQodCxlLG4saSl7dmFyIHI9W251bGwsbnVsbF0sbz1MbHQucHVzaChyKS0xO3JldHVybiByLmxlZnQ9dCxyLnJpZ2h0PWUsbiYmY2x0KHIsdCxlLG4pLGkmJmNsdChyLGUsdCxpKSxrbHRbdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksa2x0W2UuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLHJ9ZnVuY3Rpb24gbGx0KHQsZSxuKXt2YXIgaT1bZSxuXTtyZXR1cm4gaS5sZWZ0PXQsaX1mdW5jdGlvbiBjbHQodCxlLG4saSl7dFswXXx8dFsxXT90LmxlZnQ9PT1uP3RbMV09aTp0WzBdPWk6KHRbMF09aSx0LmxlZnQ9ZSx0LnJpZ2h0PW4pfWZ1bmN0aW9uIHVsdCh0LGUsbixpLHIpe3ZhciBvLGE9dFswXSxzPXRbMV0sbD1hWzBdLGM9YVsxXSx1PTAsaD0xLGQ9c1swXS1sLHA9c1sxXS1jO2lmKG89ZS1sLGR8fCEobz4wKSl7aWYoby89ZCxkPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKGQ+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89aS1sLGR8fCEobzwwKSl7aWYoby89ZCxkPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGQ+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWlmKG89bi1jLHB8fCEobz4wKSl7aWYoby89cCxwPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKHA+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89ci1jLHB8fCEobzwwKSl7aWYoby89cCxwPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKHA+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfXJldHVybiEodT4wfHxoPDEpfHwodT4wJiYodFswXT1bbCt1KmQsYyt1KnBdKSxoPDEmJih0WzFdPVtsK2gqZCxjK2gqcF0pLCEwKX19fX19ZnVuY3Rpb24gaGx0KHQsZSxuLGkscil7dmFyIG89dFsxXTtpZihvKXJldHVybiEwO3ZhciBhLHMsbD10WzBdLGM9dC5sZWZ0LHU9dC5yaWdodCxoPWNbMF0sZD1jWzFdLHA9dVswXSxmPXVbMV0sbT0oaCtwKS8yO2lmKGY9PT1kKXtpZihtPGV8fG0+PWkpcmV0dXJuO2lmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVttLG5dO289W20scl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bbSxyXTtvPVttLG5dfX1lbHNlIGlmKHM9KGQrZikvMi0oYT0oaC1wKS8oZi1kKSkqbSxhPC0xfHxhPjEpaWYoaD5wKXtpZihsKXtpZihsWzFdPj1yKXJldHVybn1lbHNlIGw9WyhuLXMpL2Esbl07bz1bKHItcykvYSxyXX1lbHNle2lmKGwpe2lmKGxbMV08bilyZXR1cm59ZWxzZSBsPVsoci1zKS9hLHJdO289WyhuLXMpL2Esbl19ZWxzZSBpZihkPGYpe2lmKGwpe2lmKGxbMF0+PWkpcmV0dXJufWVsc2UgbD1bZSxhKmUrc107bz1baSxhKmkrc119ZWxzZXtpZihsKXtpZihsWzBdPGUpcmV0dXJufWVsc2UgbD1baSxhKmkrc107bz1bZSxhKmUrc119cmV0dXJuIHRbMF09bCx0WzFdPW8sITB9ZnVuY3Rpb24gZGx0KHQsZSl7dmFyIG49dC5zaXRlLGk9ZS5sZWZ0LHI9ZS5yaWdodDtyZXR1cm4gbj09PXImJihyPWksaT1uKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KG49PT1pPyhpPWVbMV0scj1lWzBdKTooaT1lWzBdLHI9ZVsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24gcGx0KHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQhPT10LnNpdGUpXX1mdW5jdGlvbiBmbHQodCxlKXtyZXR1cm4gZVsrKGUubGVmdD09PXQuc2l0ZSldfW5sdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm5sdCxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI7aWYodCl7aWYoZS5QPXQsZS5OPXQuTix0Lk4mJih0Lk4uUD1lKSx0Lk49ZSx0LlIpe2Zvcih0PXQuUjt0Lkw7KXQ9dC5MO3QuTD1lfWVsc2UgdC5SPWU7bj10fWVsc2UgdGhpcy5fPyh0PWFsdCh0aGlzLl8pLGUuUD1udWxsLGUuTj10LHQuUD10Lkw9ZSxuPXQpOihlLlA9ZS5OPW51bGwsdGhpcy5fPWUsbj1udWxsKTtmb3IoZS5MPWUuUj1udWxsLGUuVT1uLGUuQz0hMCx0PWU7biYmbi5DOyluPT09KGk9bi5VKS5MPyhyPWkuUikmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uUiYmKHJsdCh0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCxvbHQodGhpcyxpKSk6KHI9aS5MKSYmci5DPyhuLkM9ci5DPSExLGkuQz0hMCx0PWkpOih0PT09bi5MJiYob2x0KHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLHJsdCh0aGlzLGkpKSxuPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUsbixpLHI9dC5VLG89dC5MLGE9dC5SO2lmKG49bz9hP2FsdChhKTpvOmEscj9yLkw9PT10P3IuTD1uOnIuUj1uOnRoaXMuXz1uLG8mJmE/KGk9bi5DLG4uQz10LkMsbi5MPW8sby5VPW4sbiE9PWE/KHI9bi5VLG4uVT10LlUsci5MPXQ9bi5SLG4uUj1hLGEuVT1uKToobi5VPXIscj1uLHQ9bi5SKSk6KGk9dC5DLHQ9biksdCYmKHQuVT1yKSwhaSlpZih0JiZ0LkMpdC5DPSExO2Vsc2V7ZG97aWYodD09PXRoaXMuXylicmVhaztpZih0PT09ci5MKXtpZigoZT1yLlIpLkMmJihlLkM9ITEsci5DPSEwLHJsdCh0aGlzLHIpLGU9ci5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLlImJmUuUi5DfHwoZS5MLkM9ITEsZS5DPSEwLG9sdCh0aGlzLGUpLGU9ci5SKSxlLkM9ci5DLHIuQz1lLlIuQz0hMSxybHQodGhpcyxyKSx0PXRoaXMuXzticmVha319ZWxzZSBpZigoZT1yLkwpLkMmJihlLkM9ITEsci5DPSEwLG9sdCh0aGlzLHIpLGU9ci5MKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5SLkM9ITEsZS5DPSEwLHJsdCh0aGlzLGUpLGU9ci5MKSxlLkM9ci5DLHIuQz1lLkwuQz0hMSxvbHQodGhpcyxyKSx0PXRoaXMuXzticmVha31lLkM9ITAsdD1yLHI9ci5VfXdoaWxlKCF0LkMpO3QmJih0LkM9ITEpfX19O3ZhciBtbHQsZ2x0PVtdO2Z1bmN0aW9uIF9sdCgpe2lsdCh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24geWx0KHQpe3ZhciBlPXQuUCxuPXQuTjtpZihlJiZuKXt2YXIgaT1lLnNpdGUscj10LnNpdGUsbz1uLnNpdGU7aWYoaSE9PW8pe3ZhciBhPXJbMF0scz1yWzFdLGw9aVswXS1hLGM9aVsxXS1zLHU9b1swXS1hLGg9b1sxXS1zLGQ9MioobCpoLWMqdSk7aWYoIShkPj0tTmx0KSl7dmFyIHA9bCpsK2MqYyxmPXUqdStoKmgsbT0oaCpwLWMqZikvZCxnPShsKmYtdSpwKS9kLF89Z2x0LnBvcCgpfHxuZXcgX2x0O18uYXJjPXQsXy5zaXRlPXIsXy54PW0rYSxfLnk9KF8uY3k9ZytzKStNYXRoLnNxcnQobSptK2cqZyksdC5jaXJjbGU9Xztmb3IodmFyIHk9bnVsbCx2PVBsdC5fO3Y7KWlmKF8ueTx2Lnl8fF8ueT09PXYueSYmXy54PD12Lngpe2lmKCF2Lkwpe3k9di5QO2JyZWFrfXY9di5MfWVsc2V7aWYoIXYuUil7eT12O2JyZWFrfXY9di5SfVBsdC5pbnNlcnQoeSxfKSx5fHwobWx0PV8pfX19fWZ1bmN0aW9uIHZsdCh0KXt2YXIgZT10LmNpcmNsZTtlJiYoZS5QfHwobWx0PWUuTiksUGx0LnJlbW92ZShlKSxnbHQucHVzaChlKSxpbHQoZSksdC5jaXJjbGU9bnVsbCl9dmFyIGJsdD1bXTtmdW5jdGlvbiB4bHQoKXtpbHQodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIHdsdCh0KXt2YXIgZT1ibHQucG9wKCl8fG5ldyB4bHQ7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gU2x0KHQpe3ZsdCh0KSxBbHQucmVtb3ZlKHQpLGJsdC5wdXNoKHQpLGlsdCh0KX1mdW5jdGlvbiBNbHQodCl7dmFyIGU9dC5jaXJjbGUsbj1lLngsaT1lLmN5LHI9W24saV0sbz10LlAsYT10Lk4scz1bdF07U2x0KHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZNYXRoLmFicyhuLWwuY2lyY2xlLngpPElsdCYmTWF0aC5hYnMoaS1sLmNpcmNsZS5jeSk8SWx0OylvPWwuUCxzLnVuc2hpZnQobCksU2x0KGwpLGw9bztzLnVuc2hpZnQobCksdmx0KGwpO2Zvcih2YXIgYz1hO2MuY2lyY2xlJiZNYXRoLmFicyhuLWMuY2lyY2xlLngpPElsdCYmTWF0aC5hYnMoaS1jLmNpcmNsZS5jeSk8SWx0OylhPWMuTixzLnB1c2goYyksU2x0KGMpLGM9YTtzLnB1c2goYyksdmx0KGMpO3ZhciB1LGg9cy5sZW5ndGg7Zm9yKHU9MTt1PGg7Kyt1KWNsdCgoYz1zW3VdKS5lZGdlLChsPXNbdS0xXSkuc2l0ZSxjLnNpdGUscik7KGM9c1toLTFdKS5lZGdlPXNsdCgobD1zWzBdKS5zaXRlLGMuc2l0ZSxudWxsLHIpLHlsdChsKSx5bHQoYyl9ZnVuY3Rpb24gRWx0KHQpe2Zvcih2YXIgZSxuLGkscixvPXRbMF0sYT10WzFdLHM9QWx0Ll87czspaWYoKGk9VGx0KHMsYSktbyk+SWx0KXM9cy5MO2Vsc2V7aWYoISgocj1vLUNsdChzLGEpKT5JbHQpKXtpPi1JbHQ/KGU9cy5QLG49cyk6cj4tSWx0PyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hKGZ1bmN0aW9uIGwodCl7cmV0dXJuIGtsdFt0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19KSh0KTt2YXIgYz13bHQodCk7aWYoQWx0Lmluc2VydChlLGMpLGV8fG4pe2lmKGU9PT1uKXJldHVybiB2bHQoZSksbj13bHQoZS5zaXRlKSxBbHQuaW5zZXJ0KGMsbiksYy5lZGdlPW4uZWRnZT1zbHQoZS5zaXRlLGMuc2l0ZSkseWx0KGUpLHZvaWQgeWx0KG4pO2lmKG4pe3ZsdChlKSx2bHQobik7dmFyIHU9ZS5zaXRlLGg9dVswXSxkPXVbMV0scD10WzBdLWgsZj10WzFdLWQsbT1uLnNpdGUsZz1tWzBdLWgsXz1tWzFdLWQseT0yKihwKl8tZipnKSx2PXAqcCtmKmYsYj1nKmcrXypfLHg9WyhfKnYtZipiKS95K2gsKHAqYi1nKnYpL3krZF07Y2x0KG4uZWRnZSx1LG0seCksYy5lZGdlPXNsdCh1LHQsbnVsbCx4KSxuLmVkZ2U9c2x0KHQsbSxudWxsLHgpLHlsdChlKSx5bHQobil9ZWxzZSBjLmVkZ2U9c2x0KGUuc2l0ZSxjLnNpdGUpfX1mdW5jdGlvbiBUbHQodCxlKXt2YXIgbj10LnNpdGUsaT1uWzBdLHI9blsxXSxvPXItZTtpZighbylyZXR1cm4gaTt2YXIgYT10LlA7aWYoIWEpcmV0dXJuLTEvMDt2YXIgcz0obj1hLnNpdGUpWzBdLGw9blsxXSxjPWwtZTtpZighYylyZXR1cm4gczt2YXIgdT1zLWksaD0xL28tMS9jLGQ9dS9jO3JldHVybiBoPygtZCtNYXRoLnNxcnQoZCpkLTIqaCoodSp1LygtMipjKS1sK2MvMityLW8vMikpKS9oK2k6KGkrcykvMn1mdW5jdGlvbiBDbHQodCxlKXt2YXIgbj10Lk47aWYobilyZXR1cm4gVGx0KG4sZSk7dmFyIGk9dC5zaXRlO3JldHVybiBpWzFdPT09ZT9pWzBdOjEvMH12YXIgQWx0LGtsdCxQbHQsTGx0LElsdD0xZS02LE5sdD0xZS0xMjtmdW5jdGlvbiBSbHQodCxlLG4pe3JldHVybih0WzBdLW5bMF0pKihlWzFdLXRbMV0pLSh0WzBdLWVbMF0pKihuWzFdLXRbMV0pfWZ1bmN0aW9uIE9sdCh0LGUpe3JldHVybiBlWzFdLXRbMV18fGVbMF0tdFswXX1mdW5jdGlvbiB6bHQodCxlKXt2YXIgbixpLHIsbz10LnNvcnQoT2x0KS5wb3AoKTtmb3IoTGx0PVtdLGtsdD1uZXcgQXJyYXkodC5sZW5ndGgpLEFsdD1uZXcgbmx0LFBsdD1uZXcgbmx0OzspaWYocj1tbHQsbyYmKCFyfHxvWzFdPHIueXx8b1sxXT09PXIueSYmb1swXTxyLngpKW9bMF09PT1uJiZvWzFdPT09aXx8KEVsdChvKSxuPW9bMF0saT1vWzFdKSxvPXQucG9wKCk7ZWxzZXtpZighcilicmVhaztNbHQoci5hcmMpfWlmKChmdW5jdGlvbiBhKCl7Zm9yKHZhciB0LGUsbixpLHI9MCxvPWtsdC5sZW5ndGg7cjxvOysrcilpZigodD1rbHRbcl0pJiYoaT0oZT10LmhhbGZlZGdlcykubGVuZ3RoKSl7dmFyIGE9bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxpOysrbilhW25dPW4sc1tuXT1kbHQodCxMbHRbZVtuXV0pO2ZvcihhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNbZV0tc1t0XX0pKSxuPTA7bjxpOysrbilzW25dPWVbYVtuXV07Zm9yKG49MDtuPGk7KytuKWVbbl09c1tuXX19KSgpLGUpe3ZhciBzPStlWzBdWzBdLGw9K2VbMF1bMV0sYz0rZVsxXVswXSx1PStlWzFdWzFdOyEoZnVuY3Rpb24gaCh0LGUsbixpKXtmb3IodmFyIHIsbz1MbHQubGVuZ3RoO28tLTspaGx0KHI9TGx0W29dLHQsZSxuLGkpJiZ1bHQocix0LGUsbixpKSYmKE1hdGguYWJzKHJbMF1bMF0tclsxXVswXSk+SWx0fHxNYXRoLmFicyhyWzBdWzFdLXJbMV1bMV0pPklsdCl8fGRlbGV0ZSBMbHRbb119KShzLGwsYyx1KSwoZnVuY3Rpb24gZCh0LGUsbixpKXt2YXIgcixvLGEscyxsLGMsdSxoLGQscCxmLG0sZz1rbHQubGVuZ3RoLF89ITA7Zm9yKHI9MDtyPGc7KytyKWlmKG89a2x0W3JdKXtmb3IoYT1vLnNpdGUscz0obD1vLmhhbGZlZGdlcykubGVuZ3RoO3MtLTspTGx0W2xbc11dfHxsLnNwbGljZShzLDEpO2ZvcihzPTAsYz1sLmxlbmd0aDtzPGM7KWY9KHA9Zmx0KG8sTGx0W2xbc11dKSlbMF0sbT1wWzFdLGg9KHU9cGx0KG8sTGx0W2xbKytzJWNdXSkpWzBdLGQ9dVsxXSwoTWF0aC5hYnMoZi1oKT5JbHR8fE1hdGguYWJzKG0tZCk+SWx0KSYmKGwuc3BsaWNlKHMsMCxMbHQucHVzaChsbHQoYSxwLE1hdGguYWJzKGYtdCk8SWx0JiZpLW0+SWx0P1t0LE1hdGguYWJzKGgtdCk8SWx0P2Q6aV06TWF0aC5hYnMobS1pKTxJbHQmJm4tZj5JbHQ/W01hdGguYWJzKGQtaSk8SWx0P2g6bixpXTpNYXRoLmFicyhmLW4pPElsdCYmbS1lPklsdD9bbixNYXRoLmFicyhoLW4pPElsdD9kOmVdOk1hdGguYWJzKG0tZSk8SWx0JiZmLXQ+SWx0P1tNYXRoLmFicyhkLWUpPElsdD9oOnQsZV06bnVsbCkpLTEpLCsrYyk7YyYmKF89ITEpfWlmKF8pe3ZhciB5LHYsYix4PTEvMDtmb3Iocj0wLF89bnVsbDtyPGc7KytyKShvPWtsdFtyXSkmJihiPSh5PShhPW8uc2l0ZSlbMF0tdCkqeSsodj1hWzFdLWUpKnYpPHgmJih4PWIsXz1vKTtpZihfKXt2YXIgdz1bdCxlXSxTPVt0LGldLE09W24saV0sRT1bbixlXTtfLmhhbGZlZGdlcy5wdXNoKExsdC5wdXNoKGxsdChhPV8uc2l0ZSx3LFMpKS0xLExsdC5wdXNoKGxsdChhLFMsTSkpLTEsTGx0LnB1c2gobGx0KGEsTSxFKSktMSxMbHQucHVzaChsbHQoYSxFLHcpKS0xKX19Zm9yKHI9MDtyPGc7KytyKShvPWtsdFtyXSkmJihvLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBrbHRbcl0pfSkocyxsLGMsdSl9dGhpcy5lZGdlcz1MbHQsdGhpcy5jZWxscz1rbHQsQWx0PVBsdD1MbHQ9a2x0PW51bGx9emx0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6emx0LHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuaGFsZmVkZ2VzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHBsdChlLHRbbl0pfSkpO3JldHVybiBuLmRhdGE9ZS5zaXRlLmRhdGEsbn0pKX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aWYobz0ocj1uLmhhbGZlZGdlcykubGVuZ3RoKWZvcih2YXIgcixvLGEscz1uLnNpdGUsbD0tMSxjPWVbcltvLTFdXSx1PWMubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQ7KytsPG87KWE9dSx1PShjPWVbcltsXV0pLmxlZnQ9PT1zP2MucmlnaHQ6Yy5sZWZ0LGEmJnUmJmk8YS5pbmRleCYmaTx1LmluZGV4JiZSbHQocyxhLHUpPDAmJnQucHVzaChbcy5kYXRhLGEuZGF0YSx1LmRhdGFdKX0pKSx0fSxsaW5rczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQucmlnaHR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOnQubGVmdC5kYXRhLHRhcmdldDp0LnJpZ2h0LmRhdGF9fSkpfSxmaW5kOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscixvPXRoaXMsYT1vLl9mb3VuZHx8MCxzPW8uY2VsbHMubGVuZ3RoOyEocj1vLmNlbGxzW2FdKTspaWYoKythPj1zKXJldHVybiBudWxsO3ZhciBsPXQtci5zaXRlWzBdLGM9ZS1yLnNpdGVbMV0sdT1sKmwrYypjO2Rve3I9by5jZWxsc1tpPWFdLGE9bnVsbCxyLmhhbGZlZGdlcy5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1vLmVkZ2VzW25dLHM9aS5sZWZ0O2lmKHMhPT1yLnNpdGUmJnN8fChzPWkucmlnaHQpKXt2YXIgbD10LXNbMF0sYz1lLXNbMV0saD1sKmwrYypjO2g8dSYmKHU9aCxhPXMuaW5kZXgpfX0pKX13aGlsZShudWxsIT09YSk7cmV0dXJuIG8uX2ZvdW5kPWksbnVsbD09bnx8dTw9bipuP3Iuc2l0ZTpudWxsfX07dmFyIERsdD17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBCbHQoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgSGx0KGkpfWZ1bmN0aW9uIEhsdCh0KXt0aGlzLl89dH1mdW5jdGlvbiBGbHQodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIFZsdCh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIFVsdCh0LGUsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKHRbaV0ubmFtZT09PWUpe3RbaV09RGx0LHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1IbHQucHJvdG90eXBlPUJsdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkhsdCxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9Rmx0KHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPVVsdChpW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gaSlpW25dPVVsdChpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49Vmx0KGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IEhsdCh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4saSxyPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbylyW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKG89MCxuPShpPXRoaXMuX1t0XSkubGVuZ3RoO288bjsrK28paVtvXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIGk9dGhpcy5fW3RdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3IpaVtyXS52YWx1ZS5hcHBseShlLG4pfX07dmFyIGpsdD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsR2x0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpqbHQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBXbHQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksR2x0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpHbHRbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBxbHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1qbHQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PWpsdD9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gWWx0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFhsdCh0KXt2YXIgZT1XbHQodCk7cmV0dXJuKGUubG9jYWw/WWx0OnFsdCkoZSl9ZnVuY3Rpb24gJGx0KCl7fWZ1bmN0aW9uIEtsdCh0KXtyZXR1cm4gbnVsbD09dD8kbHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBabHQoKXtyZXR1cm5bXX1mdW5jdGlvbiBKbHQodCl7cmV0dXJuIG51bGw9PXQ/Wmx0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gUWx0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIHRjdCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBlY3QodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZWN0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZWN0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIG5jdCh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgZWN0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBpY3QodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IGVjdCh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIHJjdCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBvY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGFjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHNjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIGxjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBjY3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIHVjdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBoY3QodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGRjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBwY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBmY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gbWN0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8aGN0KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIGdjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gX2N0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiB5Y3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gdmN0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBiY3QodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgeGN0KHQpfWZ1bmN0aW9uIHhjdCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9dmN0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gd2N0KHQsZSl7Zm9yKHZhciBuPWJjdCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIFNjdCh0LGUpe2Zvcih2YXIgbj1iY3QodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBNY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7d2N0KHRoaXMsdCl9fWZ1bmN0aW9uIEVjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtTY3QodGhpcyx0KX19ZnVuY3Rpb24gVGN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP3djdDpTY3QpKHRoaXMsdCl9fWZ1bmN0aW9uIENjdCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gQWN0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24ga2N0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBQY3QoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBMY3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gSWN0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gTmN0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIFJjdCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIE9jdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIHpjdCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIERjdCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gQmN0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH14Y3QucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgSGN0PXt9LEZjdD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KEhjdD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7ZnVuY3Rpb24gVmN0KHQsZSxuKXtyZXR1cm4gdD1VY3QodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBVY3QodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1GY3Q7RmN0PWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e0ZjdD1yfX19ZnVuY3Rpb24gamN0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIEdjdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gV2N0KHQsZSxuKXt2YXIgaT1IY3QuaGFzT3duUHJvcGVydHkodC50eXBlKT9WY3Q6VWN0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIHFjdCh0LGUsbil7dmFyIGk9aGN0KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIFljdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBxY3QodGhpcyx0LGUpfX1mdW5jdGlvbiBYY3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcWN0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciAkY3Q9W251bGxdO2Z1bmN0aW9uIEtjdCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBaY3QoKXtyZXR1cm4gbmV3IEtjdChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCRjdCl9ZnVuY3Rpb24gSmN0KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgS2N0KFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgS2N0KFtbdF1dLCRjdCl9ZnVuY3Rpb24gUWN0KCl7Zm9yKHZhciB0LGU9RmN0O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIHR1dCh0LGUpe3ZhciBuPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKG4uY3JlYXRlU1ZHUG9pbnQpe3ZhciBpPW4uY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gaS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZLFsoaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsaS55XX12YXIgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltlLmNsaWVudFgtci5sZWZ0LXQuY2xpZW50TGVmdCxlLmNsaWVudFktci50b3AtdC5jbGllbnRUb3BdfWZ1bmN0aW9uIGV1dCh0KXt2YXIgZT1RY3QoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksdHV0KHQsZSl9ZnVuY3Rpb24gbnV0KHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT1RY3QoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiB0dXQodCxpKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBpdXQoKXtGY3QucHJldmVudERlZmF1bHQoKSxGY3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gcnV0KHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49SmN0KHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsaXV0LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLGl1dCwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gb3V0KHQsZSl7dmFyIG49dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaT1KY3QodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsaXV0LCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gYXV0KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBzdXQodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gbHV0KCl7fUtjdC5wcm90b3R5cGU9WmN0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2N0LHNlbGVjdDpmdW5jdGlvbiBjdXQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUtsdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IEtjdChpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gdXV0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1KbHQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IEtjdChpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gaHV0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1RbHQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IEtjdChpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIGR1dCh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9pY3Q6bmN0LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgS2N0KHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBwdXQoKXtyZXR1cm4gbmV3IEtjdCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcCh0Y3QpLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIGZ1dCgpe3JldHVybiBuZXcgS2N0KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAodGN0KSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBtdXQodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIGd1dCh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBLY3Qobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gX3V0KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiB5dXQodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1yY3QpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IEtjdChyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gdnV0KCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBidXQoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIHh1dCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gd3V0KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBTdXQoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gTXV0KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBFdXQodCxlKXt2YXIgbj1XbHQodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP2FjdDpvY3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD91Y3Q6Y2N0Om4ubG9jYWw/bGN0OnNjdCkobixlKSl9LHN0eWxlOmZ1bmN0aW9uIFR1dCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/ZGN0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2ZjdDpwY3QpKHQsZSxudWxsPT1uPyIiOm4pKTptY3QodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIEN1dCh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2djdDoiZnVuY3Rpb24iPT10eXBlb2YgZT95Y3Q6X2N0KSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBBdXQodCxlKXt2YXIgbj12Y3QodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9YmN0KHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1RjdDplP01jdDpFY3QpKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIGt1dCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9DY3Q6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P2tjdDpBY3QpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBQdXQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/UGN0OigiZnVuY3Rpb24iPT10eXBlb2YgdD9JY3Q6TGN0KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBMdXQoKXtyZXR1cm4gdGhpcy5lYWNoKE5jdCl9LGxvd2VyOmZ1bmN0aW9uIEl1dCgpe3JldHVybiB0aGlzLmVhY2goUmN0KX0sYXBwZW5kOmZ1bmN0aW9uIE51dCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhsdCh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gUnV0KHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYbHQodCksaT1udWxsPT1lP09jdDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOktsdChlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIE91dCgpe3JldHVybiB0aGlzLmVhY2goemN0KX0sY2xvbmU6ZnVuY3Rpb24genV0KHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P0JjdDpEY3QpfSxkYXR1bTpmdW5jdGlvbiBEdXQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBCdXQodCxlLG4pe3ZhciBpLHIsbz1qY3QodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/V2N0OkdjdCxudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIEh1dCh0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1hjdDpZY3QpKHQsZSkpfX07dmFyIEZ1dD0uNyxWdXQ9MS9GdXQsVXV0PSJcXHMqKFsrLV0/XFxkKylcXHMqIixqdXQ9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsR3V0PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixXdXQ9L14jKFswLTlhLWZdezMsOH0pJC8scXV0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tVdXQsVXV0LFV1dF0rIlxcKSQiKSxZdXQ9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0d1dCxHdXQsR3V0XSsiXFwpJCIpLFh1dD1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW1V1dCxVdXQsVXV0LGp1dF0rIlxcKSQiKSwkdXQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tHdXQsR3V0LEd1dCxqdXRdKyJcXCkkIiksS3V0PW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tqdXQsR3V0LEd1dF0rIlxcKSQiKSxadXQ9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tqdXQsR3V0LEd1dCxqdXRdKyJcXCkkIiksSnV0PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIFF1dCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIHRodCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIGVodCh0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1XdXQuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9uaHQoZSk6Mz09PW4/bmV3IGFodChlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/aWh0KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP2lodChlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPXF1dC5leGVjKHQpKT9uZXcgYWh0KGVbMV0sZVsyXSxlWzNdLDEpOihlPVl1dC5leGVjKHQpKT9uZXcgYWh0KDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPVh1dC5leGVjKHQpKT9paHQoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9JHV0LmV4ZWModCkpP2lodCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1LdXQuZXhlYyh0KSk/dWh0KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9WnV0LmV4ZWModCkpP3VodChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOkp1dC5oYXNPd25Qcm9wZXJ0eSh0KT9uaHQoSnV0W3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgYWh0KE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gbmh0KHQpe3JldHVybiBuZXcgYWh0KHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBpaHQodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBhaHQodCxlLG4saSl9ZnVuY3Rpb24gcmh0KHQpe3JldHVybiB0IGluc3RhbmNlb2YgbHV0fHwodD1laHQodCkpLHQ/bmV3IGFodCgodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgYWh0fWZ1bmN0aW9uIG9odCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/cmh0KHQpOm5ldyBhaHQodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIGFodCh0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gc2h0KCl7cmV0dXJuIiMiK2NodCh0aGlzLnIpK2NodCh0aGlzLmcpK2NodCh0aGlzLmIpfWZ1bmN0aW9uIGxodCgpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIGNodCh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHVodCh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IGRodCh0LGUsbixpKX1mdW5jdGlvbiBoaHQodCl7aWYodCBpbnN0YW5jZW9mIGRodClyZXR1cm4gbmV3IGRodCh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBsdXR8fCh0PWVodCh0KSksIXQpcmV0dXJuIG5ldyBkaHQ7aWYodCBpbnN0YW5jZW9mIGRodClyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IGRodChhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIGRodCh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gcGh0KHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBmaHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIG1odCh0KXtyZXR1cm4gMT09KHQ9K3QpP2dodDpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpmaHQoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gZ2h0KHQsZSl7dmFyIG49ZS10O3JldHVybiBuPyhmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19KSh0LG4pOmZodChpc05hTih0KT9lOnQpfWF1dChsdXQsZWh0LHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OlF1dCxmb3JtYXRIZXg6UXV0LGZvcm1hdEhzbDpmdW5jdGlvbiBfaHQoKXtyZXR1cm4gaGh0KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6dGh0LHRvU3RyaW5nOnRodH0pLGF1dChhaHQsb2h0LHN1dChsdXQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/VnV0Ok1hdGgucG93KFZ1dCx0KSxuZXcgYWh0KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0Z1dDpNYXRoLnBvdyhGdXQsdCksbmV3IGFodCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OnNodCxmb3JtYXRIZXg6c2h0LGZvcm1hdFJnYjpsaHQsdG9TdHJpbmc6bGh0fSkpLGF1dChkaHQsKGZ1bmN0aW9uIHlodCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/aGh0KHQpOm5ldyBkaHQodCxlLG4sbnVsbD09aT8xOmkpfSksc3V0KGx1dCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9WdXQ6TWF0aC5wb3coVnV0LHQpLG5ldyBkaHQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9GdXQ6TWF0aC5wb3coRnV0LHQpLG5ldyBkaHQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBhaHQocGh0KHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLHBodCh0LHIsaSkscGh0KHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7dmFyIHZodD0oZnVuY3Rpb24gdChlKXt2YXIgbj1taHQoZSk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPW4oKHQ9b2h0KHQpKS5yLChlPW9odChlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPWdodCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0pKDEpO2Z1bmN0aW9uIGJodCh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX12YXIgeGh0PS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyx3aHQ9bmV3IFJlZ0V4cCh4aHQuc291cmNlLCJnIik7ZnVuY3Rpb24gU2h0KHQsZSl7dmFyIG4saSxyLG89eGh0Lmxhc3RJbmRleD13aHQubGFzdEluZGV4PTAsYT0tMSxzPVtdLGw9W107Zm9yKHQrPSIiLGUrPSIiOyhuPXhodC5leGVjKHQpKSYmKGk9d2h0LmV4ZWMoZSkpOykocj1pLmluZGV4KT5vJiYocj1lLnNsaWNlKG8sciksc1thXT9zW2FdKz1yOnNbKythXT1yKSwobj1uWzBdKT09PShpPWlbMF0pP3NbYV0/c1thXSs9aTpzWysrYV09aTooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpiaHQobixpKX0pKSxvPXdodC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9dmFyIE1odCxFaHQsVGh0LENodCxBaHQ9MTgwL01hdGguUEksa2h0PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIFBodCh0LGUsbixpLHIsbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1hLGUvPWEpLChsPXQqbitlKmkpJiYobi09dCpsLGktPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitpKmkpKSYmKG4vPXMsaS89cyxsLz1zKSx0Kmk8ZSpuJiYodD0tdCxlPS1lLGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6cix0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIoZSx0KSpBaHQsc2tld1g6TWF0aC5hdGFuKGwpKkFodCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gTGh0KHQsZSxuLGkpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihvLGEpe3ZhciBzPVtdLGw9W107cmV0dXJuIG89dChvKSxhPXQoYSksKGZ1bmN0aW9uIGModCxpLHIsbyxhLHMpe2lmKHQhPT1yfHxpIT09byl7dmFyIGw9YS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6Ymh0KHQscil9LHtpOmwtMix4OmJodChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmJodCh0LGUpfSkpOmUmJm4ucHVzaChyKG4pKyJyb3RhdGUoIitlK2kpfSkoby5yb3RhdGUsYS5yb3RhdGUscyxsKSwoZnVuY3Rpb24gaCh0LGUsbixvKXt0IT09ZT9vLnB1c2goe2k6bi5wdXNoKHIobikrInNrZXdYKCIsbnVsbCxpKS0yLHg6Ymh0KHQsZSl9KTplJiZuLnB1c2gocihuKSsic2tld1goIitlK2kpfSkoby5za2V3WCxhLnNrZXdYLHMsbCksKGZ1bmN0aW9uIGQodCxlLG4saSxvLGEpe2lmKHQhPT1ufHxlIT09aSl7dmFyIHM9by5wdXNoKHIobykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2EucHVzaCh7aTpzLTQseDpiaHQodCxuKX0se2k6cy0yLHg6Ymh0KGUsaSl9KX1lbHNlIDE9PT1uJiYxPT09aXx8by5wdXNoKHIobykrInNjYWxlKCIrbisiLCIraSsiKSIpfSkoby5zY2FsZVgsby5zY2FsZVksYS5zY2FsZVgsYS5zY2FsZVkscyxsKSxvPWE9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxpPWwubGVuZ3RoOysrbjxpOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBJaHQ9TGh0KChmdW5jdGlvbiBOaHQodCl7cmV0dXJuIm5vbmUiPT09dD9raHQ6KE1odHx8KE1odD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxFaHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFRodD1kb2N1bWVudC5kZWZhdWx0VmlldyksTWh0LnN0eWxlLnRyYW5zZm9ybT10LHQ9VGh0LmdldENvbXB1dGVkU3R5bGUoRWh0LmFwcGVuZENoaWxkKE1odCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksRWh0LnJlbW92ZUNoaWxkKE1odCksUGh0KCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxSaHQ9TGh0KChmdW5jdGlvbiBPaHQodCl7cmV0dXJuIG51bGw9PXQ/a2h0OihDaHR8fChDaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksQ2h0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1DaHQudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/UGh0KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOmtodCl9KSwiLCAiLCIpIiwiKSIpLHpodD1NYXRoLlNRUlQyO2Z1bmN0aW9uIERodCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn1mdW5jdGlvbiBCaHQodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvemh0LG49ZnVuY3Rpb24odCl7cmV0dXJuW3IrdCpsLG8rdCpjLGEqTWF0aC5leHAoemh0KnQqaSldfTtlbHNle3ZhciBoPU1hdGguc3FydCh1KSxkPShzKnMtYSphKzQqdSkvKDIqYSoyKmgpLHA9KHMqcy1hKmEtNCp1KS8oMipzKjIqaCksZj1NYXRoLmxvZyhNYXRoLnNxcnQoZCpkKzEpLWQpLG09TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKTtpPShtLWYpL3podCxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPURodChmKSxzPWEvKDIqaCkqKG4qKGZ1bmN0aW9uIHUodCl7cmV0dXJuKCh0PU1hdGguZXhwKDIqdCkpLTEpLyh0KzEpfSkoemh0KmUrZiktKGZ1bmN0aW9uIGQodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKS0xL3QpLzJ9KShmKSk7cmV0dXJuW3IrcypsLG8rcypjLGEqbi9EaHQoemh0KmUrZildfX1yZXR1cm4gbi5kdXJhdGlvbj0xZTMqaSxufXZhciBIaHQsRmh0LFZodD0wLFVodD0wLGpodD0wLEdodD0wLFdodD0wLHFodD0wLFlodD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxYaHQ9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gJGh0KCl7cmV0dXJuIFdodHx8KFhodChLaHQpLFdodD1ZaHQubm93KCkrcWh0KX1mdW5jdGlvbiBLaHQoKXtXaHQ9MH1mdW5jdGlvbiBaaHQoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIEpodCh0LGUsbil7dmFyIGk9bmV3IFpodDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIFFodCgpe1dodD0oR2h0PVlodC5ub3coKSkrcWh0LFZodD1VaHQ9MDt0cnl7IShmdW5jdGlvbiB0KCl7JGh0KCksKytWaHQ7Zm9yKHZhciB0LGU9SGh0O2U7KSh0PVdodC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tVmh0fSkoKX1maW5hbGx5e1ZodD0wLChmdW5jdGlvbiBlKCl7dmFyIHQsZSxuPUhodCxpPTEvMDtmb3IoO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpIaHQ9ZSk7Rmh0PXQsZWR0KGkpfSkoKSxXaHQ9MH19ZnVuY3Rpb24gdGR0KCl7dmFyIHQ9WWh0Lm5vdygpLGU9dC1HaHQ7ZT4xZTMmJihxaHQtPWUsR2h0PXQpfWZ1bmN0aW9uIGVkdCh0KXtWaHR8fChVaHQmJihVaHQ9Y2xlYXJUaW1lb3V0KFVodCkpLHQtV2h0PjI0Pyh0PDEvMCYmKFVodD1zZXRUaW1lb3V0KFFodCx0LVlodC5ub3coKS1xaHQpKSxqaHQmJihqaHQ9Y2xlYXJJbnRlcnZhbChqaHQpKSk6KGpodHx8KEdodD1ZaHQubm93KCksamh0PXNldEludGVydmFsKHRkdCwxZTMpKSxWaHQ9MSxYaHQoUWh0KSkpfWZ1bmN0aW9uIG5kdCh0LGUsbil7dmFyIGk9bmV3IFpodDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfVpodC5wcm90b3R5cGU9Smh0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Wmh0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj8kaHQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8Rmh0PT09dGhpc3x8KEZodD9GaHQuX25leHQ9dGhpczpIaHQ9dGhpcyxGaHQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixlZHQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsZWR0KCkpfX07dmFyIGlkdD1CbHQoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IikscmR0PVtdO2Z1bmN0aW9uIG9kdCh0LGUsbixpLHIsbyl7dmFyIGE9dC5fX3RyYW5zaXRpb247aWYoYSl7aWYobiBpbiBhKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscj10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmYSh0LW4uZGVsYXkpfWZ1bmN0aW9uIGEobyl7dmFyIGMsdSxoLGQ7aWYoMSE9PW4uc3RhdGUpcmV0dXJuIGwoKTtmb3IoYyBpbiByKWlmKChkPXJbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1kLnN0YXRlKXJldHVybiBuZHQoYSk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKX1pZihuZHQoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KHMsbi5kZWxheSxuLnRpbWUpLHMobykpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQobCksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksbCgpKX1mdW5jdGlvbiBsKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9Smh0KG8sMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOmlkdCx0d2VlbjpyZHQsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIGFkdCh0LGUpe3ZhciBuPWxkdCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIHNkdCh0LGUpe3ZhciBuPWxkdCh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBsZHQodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBjZHQodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiB1ZHQodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXNkdCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIGhkdCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89c2R0KHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIGRkdCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1zZHQodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gbGR0KHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIHBkdCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/Ymh0OmUgaW5zdGFuY2VvZiBlaHQ/dmh0OihuPWVodChlKSk/KGU9bix2aHQpOlNodCkodCxlKX1mdW5jdGlvbiBmZHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG1kdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGdkdCh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBfZHQodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIHlkdCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKGE9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB2ZHQodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBiZHQodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHhkdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHdkdCh0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJnhkdCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gU2R0KHQsZSl7dmFyIG4saTtmdW5jdGlvbiByKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1pJiYobj0oaT1yKSYmYmR0KHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiBNZHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXthZHQodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEVkdCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7YWR0KHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gVGR0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7c2R0KHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBDZHQodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe3NkdCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIEFkdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtzZHQodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIGtkdCh0LGUsbil7dmFyIGkscixvPShmdW5jdGlvbiBhKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP2FkdDpzZHQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIFBkdD1aY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIExkdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBJZHQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZS5jYWxsKHRoaXMsaSksbil9fWZ1bmN0aW9uIE5kdCh0LGUsbil7dmFyIGkscjtmdW5jdGlvbiBvKCl7dmFyIG89ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1yJiYoaT0ocj1vKSYmSWR0KHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIFJkdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gT2R0KHQpe3ZhciBlLG47ZnVuY3Rpb24gaSgpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09biYmKGU9KG49aSkmJlJkdChpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciB6ZHQ9MDtmdW5jdGlvbiBEZHQodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIEJkdCgpe3JldHVybisremR0fXZhciBIZHQ9WmN0LnByb3RvdHlwZTtEZHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpEZHQsc2VsZWN0OmZ1bmN0aW9uIEZkdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUtsdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLG9kdChoW2RdLGUsbixkLGgsbGR0KHMsbikpKTtyZXR1cm4gbmV3IERkdChvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFZkdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUpsdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj1sZHQobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZvZHQoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBEZHQobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBVZHQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVFsdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gamR0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IERkdChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBHZHQoKXtyZXR1cm4gbmV3IFBkdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gV2R0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUJkdCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9bGR0KGEsZSk7b2R0KGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOkhkdC5jYWxsLG5vZGVzOkhkdC5ub2Rlcyxub2RlOkhkdC5ub2RlLHNpemU6SGR0LnNpemUsZW1wdHk6SGR0LmVtcHR5LGVhY2g6SGR0LmVhY2gsb246ZnVuY3Rpb24gcWR0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9sZHQodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKGtkdChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIFlkdCh0LGUpe3ZhciBuPVdsdCh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9SaHQ6cGR0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3ZkdDp5ZHQpKG4saSxkZHQodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/bWR0OmZkdCkobik6KG4ubG9jYWw/X2R0OmdkdCkobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIFhkdCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9V2x0KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/d2R0OlNkdCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uICRkdCh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/SWh0OnBkdDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcih0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1tY3QodGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLG1jdCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsTGR0KHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gYSh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW1jdCh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1tY3QodGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxkZHQodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaCgoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscixvLGE9InN0eWxlLiIrZSxzPSJlbmQuIithO3JldHVybiBmdW5jdGlvbigpe3ZhciBsPXNkdCh0aGlzLHQpLGM9bC5vbix1PW51bGw9PWwudmFsdWVbYV0/b3x8KG89TGR0KGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1tY3QodGhpcyx0KTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fSkodCxpLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIEtkdCh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxOZHQodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIFpkdCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShkZHQodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIEpkdCh0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsT2R0KHQpKX0scmVtb3ZlOmZ1bmN0aW9uIFFkdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiB0cHQodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPWxkdCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/dWR0OmhkdCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gZXB0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/TWR0OkVkdCkoZSx0KSk6bGR0KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBucHQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9UZHQ6Q2R0KShlLHQpKTpsZHQodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gaXB0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChBZHQoZSx0KSk6bGR0KHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBycHQoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPXNkdCh0aGlzLGkpLHI9bi5vbjtyIT09dCYmKChlPSh0PXIpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGwpKSxuLm9uPWV9KSl9KSl9fTt2YXIgb3B0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpxZn07ZnVuY3Rpb24gYXB0KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIG9wdC50aW1lPSRodCgpLG9wdDtyZXR1cm4gbn1mdW5jdGlvbiBzcHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGxwdCh0LGUsbil7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnRyYW5zZm9ybT1ufWZ1bmN0aW9uIGNwdCh0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59WmN0LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24gdXB0KHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y2R0KHRoaXMsdCl9KSl9LFpjdC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiBocHQodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgRGR0PyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9QmR0KCksKG49b3B0KS50aW1lPSRodCgpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJm9kdChhLHQsZSxjLHMsbnx8YXB0KGEsZSkpO3JldHVybiBuZXcgRGR0KGksdGhpcy5fcGFyZW50cyx0LGUpfSxjcHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjcHQsc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IGNwdCh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3IGNwdCh0aGlzLmssdGhpcy54K3RoaXMuayp0LHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKHQpe3JldHVyblt0WzBdKnRoaXMuayt0aGlzLngsdFsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24odCl7cmV0dXJuWyh0WzBdLXRoaXMueCkvdGhpcy5rLCh0WzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSxyZXNjYWxlWTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19O3ZhciBkcHQ9bmV3IGNwdCgxLDAsMCk7ZnVuY3Rpb24gcHB0KHQpe3JldHVybiB0Ll9fem9vbXx8ZHB0fWZ1bmN0aW9uIGZwdCgpe0ZjdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBtcHQoKXtGY3QucHJldmVudERlZmF1bHQoKSxGY3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gZ3B0KCl7cmV0dXJuIUZjdC5idXR0b259ZnVuY3Rpb24gX3B0KCl7dmFyIHQsZSxuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PShuPW4ub3duZXJTVkdFbGVtZW50fHxuKS53aWR0aC5iYXNlVmFsLnZhbHVlLGU9bi5oZWlnaHQuYmFzZVZhbC52YWx1ZSk6KHQ9bi5jbGllbnRXaWR0aCxlPW4uY2xpZW50SGVpZ2h0KSxbWzAsMF0sW3QsZV1dfWZ1bmN0aW9uIHlwdCgpe3JldHVybiB0aGlzLl9fem9vbXx8ZHB0fWZ1bmN0aW9uIHZwdCgpe3JldHVybi1GY3QuZGVsdGFZKihGY3QuZGVsdGFNb2RlPzEyMDoxKS81MDB9ZnVuY3Rpb24gYnB0KCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIHhwdCh0LGUsbil7dmFyIGk9dC5pbnZlcnRYKGVbMF1bMF0pLW5bMF1bMF0scj10LmludmVydFgoZVsxXVswXSktblsxXVswXSxvPXQuaW52ZXJ0WShlWzBdWzFdKS1uWzBdWzFdLGE9dC5pbnZlcnRZKGVbMV1bMV0pLW5bMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKHI+aT8oaStyKS8yOk1hdGgubWluKDAsaSl8fE1hdGgubWF4KDAsciksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9cHB0LnByb3RvdHlwZT1jcHQucHJvdG90eXBlO3ZhciB3cHQ9TWUoT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsdmVyc2lvbjoiNC4xMy4wIixiaXNlY3Q6ZXosYmlzZWN0UmlnaHQ6ZXosYmlzZWN0TGVmdDpueixhc2NlbmRpbmc6Sk8sYmlzZWN0b3I6UU8sY3Jvc3M6ZnVuY3Rpb24gU3B0KHQsZSxuKXt2YXIgaSxyLG8sYSxzPXQubGVuZ3RoLGw9ZS5sZW5ndGgsYz1uZXcgQXJyYXkocypsKTtmb3IobnVsbD09biYmKG49aXopLGk9bz0wO2k8czsrK2kpZm9yKGE9dFtpXSxyPTA7cjxsOysrciwrK28pY1tvXT1uKGEsZVtyXSk7cmV0dXJuIGN9LGRlc2NlbmRpbmc6ZnVuY3Rpb24gTXB0KHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxkZXZpYXRpb246YXosZXh0ZW50OnN6LGhpc3RvZ3JhbTpmdW5jdGlvbiBFcHQoKXt2YXIgdD1keixlPXN6LG49dno7ZnVuY3Rpb24gaShpKXt2YXIgcixvLGE9aS5sZW5ndGgscz1uZXcgQXJyYXkoYSk7Zm9yKHI9MDtyPGE7KytyKXNbcl09dChpW3JdLHIsaSk7dmFyIGw9ZShzKSxjPWxbMF0sdT1sWzFdLGg9bihzLGMsdSk7QXJyYXkuaXNBcnJheShoKXx8KGg9eXooYyx1LGgpLGg9cHooTWF0aC5jZWlsKGMvaCkqaCxNYXRoLmZsb29yKHUvaCkqaCxoKSk7Zm9yKHZhciBkPWgubGVuZ3RoO2hbMF08PWM7KWguc2hpZnQoKSwtLWQ7Zm9yKDtoW2QtMV0+dTspaC5wb3AoKSwtLWQ7dmFyIHAsZj1uZXcgQXJyYXkoZCsxKTtmb3Iocj0wO3I8PWQ7KytyKShwPWZbcl09W10pLngwPXI+MD9oW3ItMV06YyxwLngxPXI8ZD9oW3JdOnU7Zm9yKHI9MDtyPGE7KytyKWM8PShvPXNbcl0pJiZvPD11JiZmW2V6KGgsbywwLGQpXS5wdXNoKGlbcl0pO3JldHVybiBmfXJldHVybiBpLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6aHooZSksaSk6dH0saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpoeihbdFswXSx0WzFdXSksaSk6ZX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9oeihjei5jYWxsKHQpKTpoeih0KSxpKTpufSxpfSx0aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzOmZ1bmN0aW9uIFRwdCh0LGUsbil7cmV0dXJuIHQ9dXouY2FsbCh0LHJ6KS5zb3J0KEpPKSxNYXRoLmNlaWwoKG4tZSkvKDIqKGJ6KHQsLjc1KS1ieih0LC4yNSkpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFNjb3R0OmZ1bmN0aW9uIENwdCh0LGUsbil7cmV0dXJuIE1hdGguY2VpbCgobi1lKS8oMy41KmF6KHQpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFN0dXJnZXM6dnosbWF4OmZ1bmN0aW9uIEFwdCh0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPHI7KWlmKG51bGwhPShuPXRbb10pJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPXRbb10pJiZuPmkmJihpPW4pfWVsc2UgZm9yKDsrK288cjspaWYobnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmbj5pJiYoaT1uKTtyZXR1cm4gaX0sbWVhbjpmdW5jdGlvbiBrcHQodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9aSxvPS0xLGE9MDtpZihudWxsPT1lKWZvcig7KytvPGk7KWlzTmFOKG49cnoodFtvXSkpPy0tcjphKz1uO2Vsc2UgZm9yKDsrK288aTspaXNOYU4obj1yeihlKHRbb10sbyx0KSkpPy0tcjphKz1uO2lmKHIpcmV0dXJuIGEvcn0sbWVkaWFuOmZ1bmN0aW9uIFBwdCh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj0tMSxvPVtdO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspaXNOYU4obj1yeih0W3JdKSl8fG8ucHVzaChuKTtlbHNlIGZvcig7KytyPGk7KWlzTmFOKG49cnooZSh0W3JdLHIsdCkpKXx8by5wdXNoKG4pO3JldHVybiBieihvLnNvcnQoSk8pLC41KX0sbWVyZ2U6ZnVuY3Rpb24gTHB0KHQpe2Zvcih2YXIgZSxuLGkscj10Lmxlbmd0aCxvPS0xLGE9MDsrK288cjspYSs9dFtvXS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpOy0tcj49MDspZm9yKGU9KGk9dFtyXSkubGVuZ3RoOy0tZT49MDspblstLWFdPWlbZV07cmV0dXJuIG59LG1pbjp4eixwYWlyczpmdW5jdGlvbiBJcHQodCxlKXtudWxsPT1lJiYoZT1peik7Zm9yKHZhciBuPTAsaT10Lmxlbmd0aC0xLHI9dFswXSxvPW5ldyBBcnJheShpPDA/MDppKTtuPGk7KW9bbl09ZShyLHI9dFsrK25dKTtyZXR1cm4gb30scGVybXV0ZTpmdW5jdGlvbiBOcHQodCxlKXtmb3IodmFyIG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobik7bi0tOylpW25dPXRbZVtuXV07cmV0dXJuIGl9LHF1YW50aWxlOmJ6LHJhbmdlOnB6LHNjYW46ZnVuY3Rpb24gUnB0KHQsZSl7aWYobj10Lmxlbmd0aCl7dmFyIG4saSxyPTAsbz0wLGE9dFtvXTtmb3IobnVsbD09ZSYmKGU9Sk8pOysrcjxuOykoZShpPXRbcl0sYSk8MHx8MCE9PWUoYSxhKSkmJihhPWksbz1yKTtyZXR1cm4gMD09PWUoYSxhKT9vOnZvaWQgMH19LHNodWZmbGU6ZnVuY3Rpb24gT3B0KHQsZSxuKXtmb3IodmFyIGkscixvPShudWxsPT1uP3QubGVuZ3RoOm4pLShlPW51bGw9PWU/MDorZSk7bzspcj1NYXRoLnJhbmRvbSgpKm8tLXwwLGk9dFtvK2VdLHRbbytlXT10W3IrZV0sdFtyK2VdPWk7cmV0dXJuIHR9LHN1bTpmdW5jdGlvbiB6cHQodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK3I8aTspKG49K3Rbcl0pJiYobys9bik7ZWxzZSBmb3IoOysrcjxpOykobj0rZSh0W3JdLHIsdCkpJiYobys9bik7cmV0dXJuIG99LHRpY2tzOmZ1bmN0aW9uIERwdCh0LGUsbil7dmFyIGkscixvLGEscz0tMTtpZihuPStuLCh0PSt0KT09PShlPStlKSYmbj4wKXJldHVyblt0XTtpZigoaT1lPHQpJiYocj10LHQ9ZSxlPXIpLDA9PT0oYT1feih0LGUsbikpfHwhaXNGaW5pdGUoYSkpcmV0dXJuW107aWYoYT4wKWZvcih0PU1hdGguY2VpbCh0L2EpLGU9TWF0aC5mbG9vcihlL2EpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKGUtdCsxKSk7KytzPHI7KW9bc109KHQrcykqYTtlbHNlIGZvcih0PU1hdGguZmxvb3IodCphKSxlPU1hdGguY2VpbChlKmEpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKHQtZSsxKSk7KytzPHI7KW9bc109KHQtcykvYTtyZXR1cm4gaSYmby5yZXZlcnNlKCksb30sdGlja0luY3JlbWVudDpfeix0aWNrU3RlcDp5eix0cmFuc3Bvc2U6d3osdmFyaWFuY2U6b3osemlwOmZ1bmN0aW9uIEJwdCgpe3JldHVybiB3eihhcmd1bWVudHMpfSxheGlzVG9wOmZ1bmN0aW9uIEhwdCh0KXtyZXR1cm4gSXooMSx0KX0sYXhpc1JpZ2h0OmZ1bmN0aW9uIEZwdCh0KXtyZXR1cm4gSXooMix0KX0sYXhpc0JvdHRvbTpmdW5jdGlvbiBWcHQodCl7cmV0dXJuIEl6KDMsdCl9LGF4aXNMZWZ0OmZ1bmN0aW9uIFVwdCh0KXtyZXR1cm4gSXooNCx0KX0sYnJ1c2g6ZnVuY3Rpb24ganB0KCl7cmV0dXJuIEVWKGZWKX0sYnJ1c2hYOmZ1bmN0aW9uIEdwdCgpe3JldHVybiBFVihkVil9LGJydXNoWTpmdW5jdGlvbiBXcHQoKXtyZXR1cm4gRVYocFYpfSxicnVzaFNlbGVjdGlvbjpmdW5jdGlvbiBxcHQodCl7dmFyIGU9dC5fX2JydXNoO3JldHVybiBlP2UuZGltLm91dHB1dChlLnNlbGVjdGlvbik6bnVsbH0sY2hvcmQ6ZnVuY3Rpb24gWXB0KCl7dmFyIHQ9MCxlPW51bGwsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscyxsLGMsdSxoPXIubGVuZ3RoLGQ9W10scD1DVihoKSxmPVtdLG09W10sZz1tLmdyb3Vwcz1uZXcgQXJyYXkoaCksXz1uZXcgQXJyYXkoaCpoKTtmb3Iobz0wLGM9LTE7KytjPGg7KXtmb3IoYT0wLHU9LTE7Kyt1PGg7KWErPXJbY11bdV07ZC5wdXNoKGEpLGYucHVzaChDVihoKSksbys9YX1mb3IoZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGRbdF0sZFtuXSl9KSksbiYmZi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbihyW2VdW3RdLHJbZV1baV0pfSkpfSkpLGw9KG89UlYoMCxOVi10KmgpL28pP3Q6TlYvaCxhPTAsYz0tMTsrK2M8aDspe2ZvcihzPWEsdT0tMTsrK3U8aDspe3ZhciB5PXBbY10sdj1mW3ldW3VdLGI9clt5XVt2XSx4PWEsdz1hKz1iKm87X1t2KmgreV09e2luZGV4Onksc3ViaW5kZXg6dixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpifX1nW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTphLHZhbHVlOmRbeV19LGErPWx9Zm9yKGM9LTE7KytjPGg7KWZvcih1PWMtMTsrK3U8aDspe3ZhciBTPV9bdSpoK2NdLE09X1tjKmgrdV07KFMudmFsdWV8fE0udmFsdWUpJiZtLnB1c2goUy52YWx1ZTxNLnZhbHVlP3tzb3VyY2U6TSx0YXJnZXQ6U306e3NvdXJjZTpTLHRhcmdldDpNfSl9cmV0dXJuIGk/bS5zb3J0KGkpOm19cmV0dXJuIHIucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9UlYoMCxlKSxyKTp0fSxyLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxyKTpufSxyLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1udWxsOihpPU9WKHQpKS5fPXQscik6aSYmaS5ffSxyfSxyaWJib246ZnVuY3Rpb24gWHB0KCl7dmFyIHQ9R1YsZT1XVixuPXFWLGk9WVYscj1YVixvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9elYuY2FsbChhcmd1bWVudHMpLGw9dC5hcHBseSh0aGlzLHMpLGM9ZS5hcHBseSh0aGlzLHMpLHU9K24uYXBwbHkodGhpcywoc1swXT1sLHMpKSxoPWkuYXBwbHkodGhpcyxzKS1JVixkPXIuYXBwbHkodGhpcyxzKS1JVixwPXUqa1YoaCksZj11KlBWKGgpLG09K24uYXBwbHkodGhpcywoc1swXT1jLHMpKSxnPWkuYXBwbHkodGhpcyxzKS1JVixfPXIuYXBwbHkodGhpcyxzKS1JVjtpZihvfHwobz1hPWpWKCkpLG8ubW92ZVRvKHAsZiksby5hcmMoMCwwLHUsaCxkKSxoPT09ZyYmZD09PV98fChvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLG0qa1YoZyksbSpQVihnKSksby5hcmMoMCwwLG0sZyxfKSksby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxwLGYpLG8uY2xvc2VQYXRoKCksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RFYoK3QpLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkRWKCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RFYoK3QpLGEpOnJ9LGEuc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxhKTplfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX0sbmVzdDpmdW5jdGlvbiAkcHQoKXt2YXIgdCxlLG4saT1bXSxyPVtdO2Z1bmN0aW9uIG8obixyLGEscyl7aWYocj49aS5sZW5ndGgpcmV0dXJuIG51bGwhPXQmJm4uc29ydCh0KSxudWxsIT1lP2Uobik6bjtmb3IodmFyIGwsYyx1LGg9LTEsZD1uLmxlbmd0aCxwPWlbcisrXSxmPVpWKCksbT1hKCk7KytoPGQ7KSh1PWYuZ2V0KGw9cChjPW5baF0pKyIiKSk/dS5wdXNoKGMpOmYuc2V0KGwsW2NdKTtyZXR1cm4gZi5lYWNoKChmdW5jdGlvbih0LGUpe3MobSxlLG8odCxyLGEscykpfSkpLG19ZnVuY3Rpb24gYSh0LG4pe2lmKCsrbj5pLmxlbmd0aClyZXR1cm4gdDt2YXIgbyxzPXJbbi0xXTtyZXR1cm4gbnVsbCE9ZSYmbj49aS5sZW5ndGg/bz10LmVudHJpZXMoKToobz1bXSx0LmVhY2goKGZ1bmN0aW9uKHQsZSl7by5wdXNoKHtrZXk6ZSx2YWx1ZXM6YSh0LG4pfSl9KSkpLG51bGwhPXM/by5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBzKHQua2V5LGUua2V5KX0pKTpvfXJldHVybiBuPXtvYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCwwLEpWLFFWKX0sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCx0VSxlVSl9LGVudHJpZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGEobyh0LDAsdFUsZVUpLDApfSxrZXk6ZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaCh0KSxufSxzb3J0S2V5czpmdW5jdGlvbih0KXtyZXR1cm4gcltpLmxlbmd0aC0xXT10LG59LHNvcnRWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZSxufSxyb2xsdXA6ZnVuY3Rpb24odCl7cmV0dXJuIGU9dCxufX19LHNldDpyVSxtYXA6WlYsa2V5czpmdW5jdGlvbiBLcHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKG4pO3JldHVybiBlfSx2YWx1ZXM6ZnVuY3Rpb24gWnB0KHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh0W25dKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbiBKcHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHtrZXk6bix2YWx1ZTp0W25dfSk7cmV0dXJuIGV9LGNvbG9yOndVLHJnYjpUVSxoc2w6UFUsbGFiOlZVLGhjbDpYVSxjdWJlaGVsaXg6b2osZGlzcGF0Y2g6bGosZHJhZzpmdW5jdGlvbiBRcHQoKXt2YXIgdCxlLG4saSxyPURHLG89QkcsYT1IRyxzPUZHLGw9e30sYz1maigic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGtHLHRoaXMsYXJndW1lbnRzKTthJiYoVEcoZkcudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxORyhmRy52aWV3KSxMRygpLG49ITEsdD1mRy5jbGllbnRYLGU9ZkcuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKElHKCksIW4pe3ZhciBpPWZHLmNsaWVudFgtdCxyPWZHLmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe1RHKGZHLnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLFJHKGZHLnZpZXcsbiksSUcoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj1mRy5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksUEcsdGhpcyxhcmd1bWVudHMpKSYmKExHKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49ZkcuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKElHKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPWZHLmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoTEcoKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKGJHKG5ldyB6RyhkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KGZHLnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fWJHKG5ldyB6RyhkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6T0coISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9HKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9HKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6T0coISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH0sZHJhZ0Rpc2FibGU6TkcsZHJhZ0VuYWJsZTpSRyxkc3ZGb3JtYXQ6eFcsY3N2UGFyc2U6U1csY3N2UGFyc2VSb3dzOk1XLGNzdkZvcm1hdDpFVyxjc3ZGb3JtYXRSb3dzOlRXLHRzdlBhcnNlOkFXLHRzdlBhcnNlUm93czprVyx0c3ZGb3JtYXQ6UFcsdHN2Rm9ybWF0Um93czpMVyxlYXNlTGluZWFyOmZ1bmN0aW9uIHRmdCh0KXtyZXR1cm4rdH0sZWFzZVF1YWQ6SVcsZWFzZVF1YWRJbjpmdW5jdGlvbiBlZnQodCl7cmV0dXJuIHQqdH0sZWFzZVF1YWRPdXQ6ZnVuY3Rpb24gbmZ0KHQpe3JldHVybiB0KigyLXQpfSxlYXNlUXVhZEluT3V0OklXLGVhc2VDdWJpYzpOVyxlYXNlQ3ViaWNJbjpmdW5jdGlvbiBpZnQodCl7cmV0dXJuIHQqdCp0fSxlYXNlQ3ViaWNPdXQ6ZnVuY3Rpb24gcmZ0KHQpe3JldHVybi0tdCp0KnQrMX0sZWFzZUN1YmljSW5PdXQ6TlcsZWFzZVBvbHk6elcsZWFzZVBvbHlJbjpSVyxlYXNlUG9seU91dDpPVyxlYXNlUG9seUluT3V0OnpXLGVhc2VTaW46SFcsZWFzZVNpbkluOmZ1bmN0aW9uIG9mdCh0KXtyZXR1cm4gMS1NYXRoLmNvcyh0KkJXKX0sZWFzZVNpbk91dDpmdW5jdGlvbiBhZnQodCl7cmV0dXJuIE1hdGguc2luKHQqQlcpfSxlYXNlU2luSW5PdXQ6SFcsZWFzZUV4cDpGVyxlYXNlRXhwSW46ZnVuY3Rpb24gc2Z0KHQpe3JldHVybiBNYXRoLnBvdygyLDEwKnQtMTApfSxlYXNlRXhwT3V0OmZ1bmN0aW9uIGxmdCh0KXtyZXR1cm4gMS1NYXRoLnBvdygyLC0xMCp0KX0sZWFzZUV4cEluT3V0OkZXLGVhc2VDaXJjbGU6VlcsZWFzZUNpcmNsZUluOmZ1bmN0aW9uIGNmdCh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfSxlYXNlQ2lyY2xlT3V0OmZ1bmN0aW9uIHVmdCh0KXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tdCp0KX0sZWFzZUNpcmNsZUluT3V0OlZXLGVhc2VCb3VuY2U6R1csZWFzZUJvdW5jZUluOmZ1bmN0aW9uIGhmdCh0KXtyZXR1cm4gMS1HVygxLXQpfSxlYXNlQm91bmNlT3V0OkdXLGVhc2VCb3VuY2VJbk91dDpmdW5jdGlvbiBkZnQodCl7cmV0dXJuKCh0Kj0yKTw9MT8xLUdXKDEtdCk6R1codC0xKSsxKS8yfSxlYXNlQmFjazpYVyxlYXNlQmFja0luOnFXLGVhc2VCYWNrT3V0OllXLGVhc2VCYWNrSW5PdXQ6WFcsZWFzZUVsYXN0aWM6WlcsZWFzZUVsYXN0aWNJbjpLVyxlYXNlRWxhc3RpY091dDpaVyxlYXNlRWxhc3RpY0luT3V0OkpXLGZvcmNlQ2VudGVyOmZ1bmN0aW9uIHBmdCh0LGUpe3ZhciBuO2Z1bmN0aW9uIGkoKXt2YXIgaSxyLG89bi5sZW5ndGgsYT0wLHM9MDtmb3IoaT0wO2k8bzsrK2kpYSs9KHI9bltpXSkueCxzKz1yLnk7Zm9yKGE9YS9vLXQscz1zL28tZSxpPTA7aTxvOysraSkocj1uW2ldKS54LT1hLHIueS09c31yZXR1cm4gbnVsbD09dCYmKHQ9MCksbnVsbD09ZSYmKGU9MCksaS5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dH0saS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStlLGkpOnR9LGkueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxpKTplfSxpfSxmb3JjZUNvbGxpZGU6ZnVuY3Rpb24gZmZ0KHQpe3ZhciBlLG4saT0xLHI9MTtmdW5jdGlvbiBvKCl7Zm9yKHZhciB0LG8scyxsLGMsdSxoLGQ9ZS5sZW5ndGgscD0wO3A8cjsrK3ApZm9yKG89b3EoZSxjcSx1cSkudmlzaXRBZnRlcihhKSx0PTA7dDxkOysrdCloPSh1PW5bKHM9ZVt0XSkuaW5kZXhdKSp1LGw9cy54K3MudngsYz1zLnkrcy52eSxvLnZpc2l0KGYpO2Z1bmN0aW9uIGYodCxlLG4scixvKXt2YXIgYT10LmRhdGEsZD10LnIscD11K2Q7aWYoIWEpcmV0dXJuIGU+bCtwfHxyPGwtcHx8bj5jK3B8fG88Yy1wO2lmKGEuaW5kZXg+cy5pbmRleCl7dmFyIGY9bC1hLngtYS52eCxtPWMtYS55LWEudnksZz1mKmYrbSptO2c8cCpwJiYoMD09PWYmJihnKz0oZj10cSgpKSpmKSwwPT09bSYmKGcrPShtPXRxKCkpKm0pLGc9KHAtKGc9TWF0aC5zcXJ0KGcpKSkvZyppLHMudngrPShmKj1nKSoocD0oZCo9ZCkvKGgrZCkpLHMudnkrPShtKj1nKSpwLGEudngtPWYqKHA9MS1wKSxhLnZ5LT1tKnApfX19ZnVuY3Rpb24gYSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgaSxyLG89ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKW5bKHI9ZVtpXSkuaW5kZXhdPSt0KHIsaSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVFXKG51bGw9PXQ/MTordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbyk6cn0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxzKCksbyk6dH0sb30sZm9yY2VMaW5rOmZ1bmN0aW9uIG1mdCh0KXt2YXIgZSxuLGkscixvLGE9UHEscz1mdW5jdGlvbiBsKHQpe3JldHVybiAxL01hdGgubWluKHJbdC5zb3VyY2UuaW5kZXhdLHJbdC50YXJnZXQuaW5kZXhdKX0sYz1RVygzMCksdT0xO2Z1bmN0aW9uIGgoaSl7Zm9yKHZhciByPTAsYT10Lmxlbmd0aDtyPHU7KytyKWZvcih2YXIgcyxsLGMsaCxkLHAsZixtPTA7bTxhOysrbSloPShjPShzPXRbbV0pLnRhcmdldCkueCtjLnZ4LShsPXMuc291cmNlKS54LWwudnh8fHRxKCksZD1jLnkrYy52eS1sLnktbC52eXx8dHEoKSxkKj1wPSgocD1NYXRoLnNxcnQoaCpoK2QqZCkpLW5bbV0pL3AqaSplW21dLGMudngtPShoKj1wKSooZj1vW21dKSxjLnZ5LT1kKmYsbC52eCs9aCooZj0xLWYpLGwudnkrPWQqZn1mdW5jdGlvbiBkKCl7aWYoaSl7dmFyIHMsbCxjPWkubGVuZ3RoLHU9dC5sZW5ndGgsaD1DcShpLGEpO2ZvcihzPTAscj1uZXcgQXJyYXkoYyk7czx1OysrcykobD10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgbC5zb3VyY2UmJihsLnNvdXJjZT1McShoLGwuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBsLnRhcmdldCYmKGwudGFyZ2V0PUxxKGgsbC50YXJnZXQpKSxyW2wuc291cmNlLmluZGV4XT0ocltsLnNvdXJjZS5pbmRleF18fDApKzEscltsLnRhcmdldC5pbmRleF09KHJbbC50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsbz1uZXcgQXJyYXkodSk7czx1OysrcylvW3NdPXJbKGw9dFtzXSkuc291cmNlLmluZGV4XS8ocltsLnNvdXJjZS5pbmRleF0rcltsLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KHUpLHAoKSxuPW5ldyBBcnJheSh1KSxmKCl9fWZ1bmN0aW9uIHAoKXtpZihpKWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBmKCl7aWYoaSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxoLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGQoKX0saC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGQoKSxoKTp0fSxoLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsaCk6YX0saC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGgpOnV9LGguc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCkscCgpLGgpOnN9LGguZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksZigpLGgpOmN9LGh9LGZvcmNlTWFueUJvZHk6ZnVuY3Rpb24gZ2Z0KCl7dmFyIHQsZSxuLGkscj1RVygtMzApLG89MSxhPTEvMCxzPS44MTtmdW5jdGlvbiBsKGkpe3ZhciByLG89dC5sZW5ndGgsYT1vcSh0LGVZLG5ZKS52aXNpdEFmdGVyKHUpO2ZvcihuPWkscj0wO3I8bzsrK3IpZT10W3JdLGEudmlzaXQoaCl9ZnVuY3Rpb24gYygpe2lmKHQpe3ZhciBlLG4sbz10Lmxlbmd0aDtmb3IoaT1uZXcgQXJyYXkobyksZT0wO2U8bzsrK2UpaVsobj10W2VdKS5pbmRleF09K3IobixlLHQpfX1mdW5jdGlvbiB1KHQpe3ZhciBlLG4scixvLGEscz0wLGw9MDtpZih0Lmxlbmd0aCl7Zm9yKHI9bz1hPTA7YTw0OysrYSkoZT10W2FdKSYmKG49TWF0aC5hYnMoZS52YWx1ZSkpJiYocys9ZS52YWx1ZSxsKz1uLHIrPW4qZS54LG8rPW4qZS55KTt0Lng9ci9sLHQueT1vL2x9ZWxzZXsoZT10KS54PWUuZGF0YS54LGUueT1lLmRhdGEueTtkb3tzKz1pW2UuZGF0YS5pbmRleF19d2hpbGUoZT1lLm5leHQpfXQudmFsdWU9c31mdW5jdGlvbiBoKHQscixsLGMpe2lmKCF0LnZhbHVlKXJldHVybiEwO3ZhciB1PXQueC1lLngsaD10LnktZS55LGQ9Yy1yLHA9dSp1K2gqaDtpZihkKmQvczxwKXJldHVybiBwPGEmJigwPT09dSYmKHArPSh1PXRxKCkpKnUpLDA9PT1oJiYocCs9KGg9dHEoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSksZS52eCs9dSp0LnZhbHVlKm4vcCxlLnZ5Kz1oKnQudmFsdWUqbi9wKSwhMDtpZighKHQubGVuZ3RofHxwPj1hKSl7KHQuZGF0YSE9PWV8fHQubmV4dCkmJigwPT09dSYmKHArPSh1PXRxKCkpKnUpLDA9PT1oJiYocCs9KGg9dHEoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSkpO2Rve3QuZGF0YSE9PWUmJihlLnZ4Kz11KihkPWlbdC5kYXRhLmluZGV4XSpuL3ApLGUudnkrPWgqZCl9d2hpbGUodD10Lm5leHQpfX1yZXR1cm4gbC5pbml0aWFsaXplPWZ1bmN0aW9uKGUpe3Q9ZSxjKCl9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYygpLGwpOnJ9LGwuZGlzdGFuY2VNaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCp0LGwpOk1hdGguc3FydChvKX0sbC5kaXN0YW5jZU1heD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10KnQsbCk6TWF0aC5zcXJ0KGEpfSxsLnRoZXRhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQqdCxsKTpNYXRoLnNxcnQocyl9LGx9LGZvcmNlUmFkaWFsOmZ1bmN0aW9uIF9mdCh0LGUsbil7dmFyIGkscixvLGE9UVcoLjEpO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgbD1pW2FdLGM9bC54LWV8fDFlLTYsdT1sLnktbnx8MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxkPShvW2FdLWgpKnJbYV0qdC9oO2wudngrPWMqZCxsLnZ5Kz11KmR9fWZ1bmN0aW9uIGwoKXtpZihpKXt2YXIgZSxuPWkubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxlPTA7ZTxuOysrZSlvW2VdPSt0KGlbZV0sZSxpKSxyW2VdPWlzTmFOKG9bZV0pPzA6K2EoaVtlXSxlLGkpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcoK3QpKSxudWxsPT1lJiYoZT0wKSxudWxsPT1uJiYobj0wKSxzLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFXKCt0KSxsKCkscyk6YX0scy5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpRVygrZSksbCgpLHMpOnR9LHMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscyk6bn0sc30sZm9yY2VTaW11bGF0aW9uOmZ1bmN0aW9uIHlmdCh0KXt2YXIgZSxuPTEsaT0uMDAxLHI9MS1NYXRoLnBvdyhpLDEvMzAwKSxvPTAsYT0uNixzPUNxKCksbD1acSh1KSxjPU5xKCJ0aWNrIiwiZW5kIik7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLGUpLG48aSYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIixlKSl9ZnVuY3Rpb24gaCgpe3ZhciBlLGksbD10Lmxlbmd0aDtmb3Iobis9KG8tbikqcixzLmVhY2goKGZ1bmN0aW9uKHQpe3Qobil9KSksZT0wO2U8bDsrK2UpbnVsbD09KGk9dFtlXSkuZng/aS54Kz1pLnZ4Kj1hOihpLng9aS5meCxpLnZ4PTApLG51bGw9PWkuZnk/aS55Kz1pLnZ5Kj1hOihpLnk9aS5meSxpLnZ5PTApfWZ1bmN0aW9uIGQoKXtmb3IodmFyIGUsbj0wLGk9dC5sZW5ndGg7bjxpOysrbil7aWYoKGU9dFtuXSkuaW5kZXg9bixpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgcj0xMCpNYXRoLnNxcnQobiksbz1uKnJZO2UueD1yKk1hdGguY29zKG8pLGUueT1yKk1hdGguc2luKG8pfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZCgpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZCgpLHMuZWFjaChwKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUpOityfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtdCxlKToxLWF9LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LHAobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixvLGEscyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1pP2k9MS8wOmkqPWksYz0wO2M8dTsrK2MpKGE9KHI9ZS0ocz10W2NdKS54KSpyKyhvPW4tcy55KSpvKTxpJiYobD1zLGk9YSk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbih0LG4pLGUpOmMub24odCl9fX0sZm9yY2VYOmZ1bmN0aW9uIHZmdCh0KXt2YXIgZSxuLGkscj1RVyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eCs9KGlbb10tci54KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYSgpLG8pOnJ9LG8ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxhKCksbyk6dH0sb30sZm9yY2VZOmZ1bmN0aW9uIGJmdCh0KXt2YXIgZSxuLGkscj1RVyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eSs9KGlbb10tci55KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UVcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRVygrdCksYSgpLG8pOnJ9LG8ueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlFXKCtlKSxhKCksbyk6dH0sb30sZm9ybWF0RGVmYXVsdExvY2FsZTpiWSxnZXQgZm9ybWF0KCl7cmV0dXJuIGdZfSxnZXQgZm9ybWF0UHJlZml4KCl7cmV0dXJuIF9ZfSxmb3JtYXRMb2NhbGU6dlksZm9ybWF0U3BlY2lmaWVyOmRZLHByZWNpc2lvbkZpeGVkOmZ1bmN0aW9uIHhmdCh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtYVkoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUHJlZml4OmZ1bmN0aW9uIHdmdCh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGFZKGUpLzMpKSktYVkoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUm91bmQ6ZnVuY3Rpb24gU2Z0KHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsYVkoZSktYVkodCkpKzF9LGdlb0FyZWE6ZnVuY3Rpb24gTWZ0KHQpe3JldHVybiBhWC5yZXNldCgpLFFZKHQsc1gpLDIqYVh9LGdlb0JvdW5kczpmdW5jdGlvbiBFZnQodCl7dmFyIGUsbixpLHIsbyxhLHM7aWYod1g9eFg9LSh2WD1iWD0xLzApLENYPVtdLFFZKHQscVgpLG49Q1gubGVuZ3RoKXtmb3IoQ1guc29ydChlJCksZT0xLG89W2k9Q1hbMF1dO2U8bjsrK2UpbiQoaSwocj1DWFtlXSlbMF0pfHxuJChpLHJbMV0pPyh0JChpWzBdLHJbMV0pPnQkKGlbMF0saVsxXSkmJihpWzFdPXJbMV0pLHQkKHJbMF0saVsxXSk+dCQoaVswXSxpWzFdKSYmKGlbMF09clswXSkpOm8ucHVzaChpPXIpO2ZvcihhPS0xLzAsZT0wLGk9b1tuPW8ubGVuZ3RoLTFdO2U8PW47aT1yLCsrZSkocz10JChpWzFdLChyPW9bZV0pWzBdKSk+YSYmKGE9cyx2WD1yWzBdLHhYPWlbMV0pfXJldHVybiBDWD1BWD1udWxsLHZYPT09MS8wfHxiWD09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1t2WCxiWF0sW3hYLHdYXV19LGdlb0NlbnRyb2lkOmZ1bmN0aW9uIFRmdCh0KXtrWD1QWD1MWD1JWD1OWD1SWD1PWD16WD1EWD1CWD1IWD0wLFFZKHQsaSQpO3ZhciBlPURYLG49QlgsaT1IWCxyPWUqZStuKm4raSppO3JldHVybiByPDFlLTEyJiYoZT1SWCxuPU9YLGk9elgsUFg8RVkmJihlPUxYLG49SVgsaT1OWCksKHI9ZSplK24qbitpKmkpPDFlLTEyKT9bTmFOLE5hTl06W1JZKG4sZSkqUFksV1koaS9VWShyKSkqUFldfSxnZW9DaXJjbGU6ZnVuY3Rpb24gQ2Z0KCl7dmFyIHQsZSxuPWYkKFswLDBdKSxpPWYkKDkwKSxyPWYkKDYpLG89e3BvaW50OmZ1bmN0aW9uIGEobixpKXt0LnB1c2gobj1lKG4saSkpLG5bMF0qPVBZLG5bMV0qPVBZfX07ZnVuY3Rpb24gcygpe3ZhciBhPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHM9aS5hcHBseSh0aGlzLGFyZ3VtZW50cykqTFksbD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpMWTtyZXR1cm4gdD1bXSxlPV8kKC1hWzBdKkxZLC1hWzFdKkxZLDApLmludmVydCx3JChvLHMsbCwxKSxhPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdF19LHQ9ZT1udWxsLGF9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZiQoWyt0WzBdLCt0WzFdXSkscyk6bn0scy5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmJCgrdCkscyk6aX0scy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmJCgrdCkscyk6cn0sc30sZ2VvQ2xpcEFudGltZXJpZGlhbjpCJCxnZW9DbGlwQ2lyY2xlOlYkLGdlb0NsaXBFeHRlbnQ6ZnVuY3Rpb24gQWZ0KCl7dmFyIHQsZSxuLGk9MCxyPTAsbz05NjAsYT01MDA7cmV0dXJuIG49e3N0cmVhbTpmdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDp0PUckKGkscixvLGEpKGU9bil9LGV4dGVudDpmdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rc1swXVswXSxyPStzWzBdWzFdLG89K3NbMV1bMF0sYT0rc1sxXVsxXSx0PWU9bnVsbCxuKTpbW2kscl0sW28sYV1dfX19LGdlb0NsaXBSZWN0YW5nbGU6RyQsZ2VvQ29udGFpbnM6ZnVuY3Rpb24ga2Z0KHQsZSl7cmV0dXJuKHQmJnJLLmhhc093blByb3BlcnR5KHQudHlwZSk/cktbdC50eXBlXTphSykodCxlKX0sZ2VvRGlzdGFuY2U6aUssZ2VvR3JhdGljdWxlOmZLLGdlb0dyYXRpY3VsZTEwOmZ1bmN0aW9uIFBmdCgpe3JldHVybiBmSygpKCl9LGdlb0ludGVycG9sYXRlOmZ1bmN0aW9uIExmdCh0LGUpe3ZhciBuPXRbMF0qTFksaT10WzFdKkxZLHI9ZVswXSpMWSxvPWVbMV0qTFksYT1PWShpKSxzPUZZKGkpLGw9T1kobyksYz1GWShvKSx1PWEqT1kobiksaD1hKkZZKG4pLGQ9bCpPWShyKSxwPWwqRlkociksZj0yKldZKFVZKHFZKG8taSkrYSpsKnFZKHItbikpKSxtPUZZKGYpLGc9Zj9mdW5jdGlvbih0KXt2YXIgZT1GWSh0Kj1mKS9tLG49RlkoZi10KS9tLGk9bip1K2UqZCxyPW4qaCtlKnAsbz1uKnMrZSpjO3JldHVybltSWShyLGkpKlBZLFJZKG8sVVkoaSppK3IqcikpKlBZXX06ZnVuY3Rpb24oKXtyZXR1cm5bbipQWSxpKlBZXX07cmV0dXJuIGcuZGlzdGFuY2U9ZixnfSxnZW9MZW5ndGg6dEssZ2VvUGF0aDpmdW5jdGlvbiBJZnQodCxlKXt2YXIgbixpLHI9NC41O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgciYmaS5wb2ludFJhZGl1cygrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLFFZKHQsbihpKSkpLGkucmVzdWx0KCl9cmV0dXJuIG8uYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKHdLKSksd0sucmVzdWx0KCl9LG8ubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKGNaKSksY1oucmVzdWx0KCl9LG8uYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBRWSh0LG4oTEspKSxMSy5yZXN1bHQoKX0sby5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gUVkodCxuKHFLKSkscUsucmVzdWx0KCl9LG8ucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT1lPyh0PW51bGwsbUspOih0PWUpLnN0cmVhbSxvKTp0fSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8oZT1udWxsLG5ldyBkWik6bmV3IG5aKGU9dCksImZ1bmN0aW9uIiE9dHlwZW9mIHImJmkucG9pbnRSYWRpdXMociksbyk6ZX0sby5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbyk6cn0sby5wcm9qZWN0aW9uKHQpLmNvbnRleHQoZSl9LGdlb0FsYmVyczprWixnZW9BbGJlcnNVc2E6ZnVuY3Rpb24gTmZ0KCl7dmFyIHQsZSxuLGkscixvLGE9a1ooKSxzPUFaKCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxsPUFaKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9uKHQsZSl7bz1bdCxlXX19O2Z1bmN0aW9uIHUodCl7dmFyIGU9dFswXSxhPXRbMV07cmV0dXJuIG89bnVsbCxuLnBvaW50KGUsYSksb3x8KGkucG9pbnQoZSxhKSxvKXx8KHIucG9pbnQoZSxhKSxvKX1mdW5jdGlvbiBoKCl7cmV0dXJuIHQ9ZT1udWxsLHV9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPWEuc2NhbGUoKSxuPWEudHJhbnNsYXRlKCksaT0odFswXS1uWzBdKS9lLHI9KHRbMV0tblsxXSkvZTtyZXR1cm4ocj49LjEyJiZyPC4yMzQmJmk+PS0uNDI1JiZpPC0uMjE0P3M6cj49LjE2NiYmcjwuMjM0JiZpPj0tLjIxNCYmaTwtLjExNT9sOmEpLmludmVydCh0KX0sdS5zdHJlYW09ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD0oZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixpKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9pbnQobixpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvbkVuZCgpfX19KShbYS5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxsLnN0cmVhbShuKV0pfSx1LnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5wcmVjaXNpb24odCkscy5wcmVjaXNpb24odCksbC5wcmVjaXNpb24odCksaCgpKTphLnByZWNpc2lvbigpfSx1LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnNjYWxlKHQpLHMuc2NhbGUoLjM1KnQpLGwuc2NhbGUodCksdS50cmFuc2xhdGUoYS50cmFuc2xhdGUoKSkpOmEuc2NhbGUoKX0sdS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEudHJhbnNsYXRlKCk7dmFyIGU9YS5zY2FsZSgpLG89K3RbMF0sdT0rdFsxXTtyZXR1cm4gbj1hLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbby0uNDU1KmUsdS0uMjM4KmVdLFtvKy40NTUqZSx1Ky4yMzgqZV1dKS5zdHJlYW0oYyksaT1zLnRyYW5zbGF0ZShbby0uMzA3KmUsdSsuMjAxKmVdKS5jbGlwRXh0ZW50KFtbby0uNDI1KmUrRVksdSsuMTIqZStFWV0sW28tLjIxNCplLUVZLHUrLjIzNCplLUVZXV0pLnN0cmVhbShjKSxyPWwudHJhbnNsYXRlKFtvLS4yMDUqZSx1Ky4yMTIqZV0pLmNsaXBFeHRlbnQoW1tvLS4yMTQqZStFWSx1Ky4xNjYqZStFWV0sW28tLjExNSplLUVZLHUrLjIzNCplLUVZXV0pLnN0cmVhbShjKSxoKCl9LHUuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF9aKHUsdCxlKX0sdS5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHlaKHUsdCxlKX0sdS5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiB2Wih1LHQsZSl9LHUuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJaKHUsdCxlKX0sdS5zY2FsZSgxMDcwKX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhOmZ1bmN0aW9uIFJmdCgpe3JldHVybiBNWihJWikuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LGdlb0F6aW11dGhhbEVxdWFsQXJlYVJhdzpJWixnZW9BemltdXRoYWxFcXVpZGlzdGFudDpmdW5jdGlvbiBPZnQoKXtyZXR1cm4gTVooTlopLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6TlosZ2VvQ29uaWNDb25mb3JtYWw6ZnVuY3Rpb24gemZ0KCl7cmV0dXJuIFRaKERaKS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfSxnZW9Db25pY0NvbmZvcm1hbFJhdzpEWixnZW9Db25pY0VxdWFsQXJlYTpBWixnZW9Db25pY0VxdWFsQXJlYVJhdzpDWixnZW9Db25pY0VxdWlkaXN0YW50OmZ1bmN0aW9uIERmdCgpe3JldHVybiBUWihIWikuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX0sZ2VvQ29uaWNFcXVpZGlzdGFudFJhdzpIWixnZW9FcXVpcmVjdGFuZ3VsYXI6ZnVuY3Rpb24gQmZ0KCl7cmV0dXJuIE1aKEJaKS5zY2FsZSgxNTIuNjMpfSxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6QlosZ2VvR25vbW9uaWM6ZnVuY3Rpb24gSGZ0KCl7cmV0dXJuIE1aKEZaKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSxnZW9Hbm9tb25pY1JhdzpGWixnZW9JZGVudGl0eTpmdW5jdGlvbiBGZnQoKXt2YXIgdCxlLG4saSxyLG8sYT0xLHM9MCxsPTAsYz0xLHU9MSxoPW1LLGQ9bnVsbCxwPW1LO2Z1bmN0aW9uIGYoKXtyZXR1cm4gaT1yPW51bGwsb31yZXR1cm4gbz17c3RyZWFtOmZ1bmN0aW9uKHQpe3JldHVybiBpJiZyPT09dD9pOmk9aChwKHI9dCkpfSxwb3N0Y2xpcDpmdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1pLGQ9dD1lPW49bnVsbCxmKCkpOnB9LGNsaXBFeHRlbnQ6ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bnVsbD09aT8oZD10PWU9bj1udWxsLG1LKTpHJChkPStpWzBdWzBdLHQ9K2lbMF1bMV0sZT0raVsxXVswXSxuPStpWzFdWzFdKSxmKCkpOm51bGw9PWQ/bnVsbDpbW2QsdF0sW2Usbl1dfSxzY2FsZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWigoYT0rdCkqYyxhKnUscyxsKSxmKCkpOmF9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWihhKmMsYSp1LHM9K3RbMF0sbD0rdFsxXSksZigpKTpbcyxsXX0scmVmbGVjdFg6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9VlooYSooYz10Py0xOjEpLGEqdSxzLGwpLGYoKSk6YzwwfSxyZWZsZWN0WTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1WWihhKmMsYSoodT10Py0xOjEpLHMsbCksZigpKTp1PDB9LGZpdEV4dGVudDpmdW5jdGlvbih0LGUpe3JldHVybiBfWihvLHQsZSl9LGZpdFNpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm4geVoobyx0LGUpfSxmaXRXaWR0aDpmdW5jdGlvbih0LGUpe3JldHVybiB2WihvLHQsZSl9LGZpdEhlaWdodDpmdW5jdGlvbih0LGUpe3JldHVybiBiWihvLHQsZSl9fX0sZ2VvUHJvamVjdGlvbjpNWixnZW9Qcm9qZWN0aW9uTXV0YXRvcjpFWixnZW9NZXJjYXRvcjpmdW5jdGlvbiBWZnQoKXtyZXR1cm4gT1ooUlopLnNjYWxlKDk2MS9rWSl9LGdlb01lcmNhdG9yUmF3OlJaLGdlb05hdHVyYWxFYXJ0aDE6ZnVuY3Rpb24gVWZ0KCl7cmV0dXJuIE1aKFVaKS5zY2FsZSgxNzUuMjk1KX0sZ2VvTmF0dXJhbEVhcnRoMVJhdzpVWixnZW9PcnRob2dyYXBoaWM6ZnVuY3Rpb24gamZ0KCl7cmV0dXJuIE1aKGpaKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9LGdlb09ydGhvZ3JhcGhpY1JhdzpqWixnZW9TdGVyZW9ncmFwaGljOmZ1bmN0aW9uIEdmdCgpe3JldHVybiBNWihHWikuc2NhbGUoMjUwKS5jbGlwQW5nbGUoMTQyKX0sZ2VvU3RlcmVvZ3JhcGhpY1JhdzpHWixnZW9UcmFuc3ZlcnNlTWVyY2F0b3I6ZnVuY3Rpb24gV2Z0KCl7dmFyIHQ9T1ooV1opLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6V1osZ2VvUm90YXRpb246eCQsZ2VvU3RyZWFtOlFZLGdlb1RyYW5zZm9ybTpmdW5jdGlvbiBxZnQodCl7cmV0dXJue3N0cmVhbTpmWih0KX19LGNsdXN0ZXI6ZnVuY3Rpb24gWWZ0KCl7dmFyIHQ9cVosZT0xLG49MSxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG8sYT0wO3IuZWFjaEFmdGVyKChmdW5jdGlvbihlKXt2YXIgbj1lLmNoaWxkcmVuO24/KGUueD0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5yZWR1Y2UoWVosMCkvdC5sZW5ndGh9KShuKSxlLnk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIDErdC5yZWR1Y2UoWFosMCl9KShuKSk6KGUueD1vP2ErPXQoZSxvKTowLGUueT0wLG89ZSl9KSk7dmFyIHM9KGZ1bmN0aW9uIGwodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lWzBdO3JldHVybiB0fSkociksYz0oZnVuY3Rpb24gdSh0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbZS5sZW5ndGgtMV07cmV0dXJuIHR9KShyKSxoPXMueC10KHMsYykvMixkPWMueCt0KGMscykvMjtyZXR1cm4gci5lYWNoQWZ0ZXIoaT9mdW5jdGlvbih0KXt0Lng9KHQueC1yLngpKmUsdC55PShyLnktdC55KSpufTpmdW5jdGlvbih0KXt0Lng9KHQueC1oKS8oZC1oKSplLHQueT0oMS0oci55P3QueS9yLnk6MSkpKm59KX1yZXR1cm4gci5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K3RbMF0sbj0rdFsxXSxyKTppP251bGw6W2Usbl19LHIubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rdFswXSxuPSt0WzFdLHIpOmk/W2Usbl06bnVsbH0scn0saGllcmFyY2h5OktaLHBhY2s6ZnVuY3Rpb24gWGZ0KCl7dmFyIHQ9bnVsbCxlPTEsbj0xLGk9a0o7ZnVuY3Rpb24gcihyKXtyZXR1cm4gci54PWUvMixyLnk9bi8yLHQ/ci5lYWNoQmVmb3JlKElKKHQpKS5lYWNoQWZ0ZXIoTkooaSwuNSkpLmVhY2hCZWZvcmUoUkooMSkpOnIuZWFjaEJlZm9yZShJSihMSikpLmVhY2hBZnRlcihOSihrSiwxKSkuZWFjaEFmdGVyKE5KKGksci5yL01hdGgubWluKGUsbikpKS5lYWNoQmVmb3JlKFJKKE1hdGgubWluKGUsbikvKDIqci5yKSkpLHJ9cmV0dXJuIHIucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PUNKKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHIpOltlLG5dfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpQSigrdCkscik6aX0scn0scGFja1NpYmxpbmdzOmZ1bmN0aW9uICRmdCh0KXtyZXR1cm4gVEoodCksdH0scGFja0VuY2xvc2U6ZkoscGFydGl0aW9uOmZ1bmN0aW9uIEtmdCgpe3ZhciB0PTEsZT0xLG49MCxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG89ci5oZWlnaHQrMTtyZXR1cm4gci54MD1yLnkwPW4sci54MT10LHIueTE9ZS9vLHIuZWFjaEJlZm9yZSgoZnVuY3Rpb24gYSh0LGUpe3JldHVybiBmdW5jdGlvbihpKXtpLmNoaWxkcmVuJiZ6SihpLGkueDAsdCooaS5kZXB0aCsxKS9lLGkueDEsdCooaS5kZXB0aCsyKS9lKTt2YXIgcj1pLngwLG89aS55MCxhPWkueDEtbixzPWkueTEtbjthPHImJihyPWE9KHIrYSkvMiksczxvJiYobz1zPShvK3MpLzIpLGkueDA9cixpLnkwPW8saS54MT1hLGkueTE9c319KShlLG8pKSxpJiZyLmVhY2hCZWZvcmUoT0opLHJ9cmV0dXJuIHIucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ISF0LHIpOml9LHIuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rblswXSxlPStuWzFdLHIpOlt0LGVdfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscik6bn0scn0sc3RyYXRpZnk6ZnVuY3Rpb24gWmZ0KCl7dmFyIHQ9SEosZT1GSjtmdW5jdGlvbiBuKG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9bi5sZW5ndGgsaD1uZXcgQXJyYXkodSksZD17fTtmb3Iocj0wO3I8dTsrK3Ipcz1oW3JdPW5ldyB0SihpPW5bcl0pLG51bGwhPShsPXQoaSxyLG4pKSYmKGwrPSIiKSYmKGRbYz0iJCIrKHMuaWQ9bCldPWMgaW4gZD9CSjpzKTtmb3Iocj0wO3I8dTsrK3IpaWYocz1oW3JdLG51bGwhPShsPWUobltyXSxyLG4pKSYmKGwrPSIiKSl7aWYoIShhPWRbIiQiK2xdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbCk7aWYoYT09PUJKKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2wpO2EuY2hpbGRyZW4/YS5jaGlsZHJlbi5wdXNoKHMpOmEuY2hpbGRyZW49W3NdLHMucGFyZW50PWF9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPXN9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9REosby5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS11fSkpLmVhY2hCZWZvcmUoUVopLG8ucGFyZW50PW51bGwsdT4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb31yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BSihlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFKKHQpLG4pOmV9LG59LHRyZWU6ZnVuY3Rpb24gSmZ0KCl7dmFyIHQ9VkosZT0xLG49MSxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbD0oZnVuY3Rpb24gYyh0KXtmb3IodmFyIGUsbixpLHIsbyxhPW5ldyBxSih0LDApLHM9W2FdO2U9cy5wb3AoKTspaWYoaT1lLl8uY2hpbGRyZW4pZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KG89aS5sZW5ndGgpLHI9by0xO3I+PTA7LS1yKXMucHVzaChuPWUuY2hpbGRyZW5bcl09bmV3IHFKKGlbcl0scikpLG4ucGFyZW50PWU7cmV0dXJuKGEucGFyZW50PW5ldyBxSihudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0pKHIpO2lmKGwuZWFjaEFmdGVyKG8pLGwucGFyZW50Lm09LWwueixsLmVhY2hCZWZvcmUoYSksaSlyLmVhY2hCZWZvcmUocyk7ZWxzZXt2YXIgdT1yLGg9cixkPXI7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng8dS54JiYodT10KSx0Lng+aC54JiYoaD10KSx0LmRlcHRoPmQuZGVwdGgmJihkPXQpfSkpO3ZhciBwPXU9PT1oPzE6dCh1LGgpLzIsZj1wLXUueCxtPWUvKGgueCtwK2YpLGc9bi8oZC5kZXB0aHx8MSk7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng9KHQueCtmKSptLHQueT10LmRlcHRoKmd9KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lLmNoaWxkcmVuLGk9ZS5wYXJlbnQuY2hpbGRyZW4scj1lLmk/aVtlLmktMV06bnVsbDtpZihuKXshKGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG49MCxpPTAscj10LmNoaWxkcmVuLG89ci5sZW5ndGg7LS1vPj0wOykoZT1yW29dKS56Kz1uLGUubSs9bixuKz1lLnMrKGkrPWUuYyl9KShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtyPyhlLno9ci56K3QoZS5fLHIuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIHImJihlLno9ci56K3QoZS5fLHIuXykpO2UucGFyZW50LkE9KGZ1bmN0aW9uIHMoZSxuLGkpe2lmKG4pe2Zvcih2YXIgcixvPWUsYT1lLHM9bixsPW8ucGFyZW50LmNoaWxkcmVuWzBdLGM9by5tLHU9YS5tLGg9cy5tLGQ9bC5tO3M9akoocyksbz1VSihvKSxzJiZvOylsPVVKKGwpLChhPWpKKGEpKS5hPWUsKHI9cy56K2gtby56LWMrdChzLl8sby5fKSk+MCYmKEdKKFdKKHMsZSxpKSxlLHIpLGMrPXIsdSs9ciksaCs9cy5tLGMrPW8ubSxkKz1sLm0sdSs9YS5tO3MmJiFqSihhKSYmKGEudD1zLGEubSs9aC11KSxvJiYhVUoobCkmJihsLnQ9byxsLm0rPWMtZCxpPWUpfXJldHVybiBpfSkoZSxyLGUucGFyZW50LkF8fGlbMF0pfWZ1bmN0aW9uIGEodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHModCl7dC54Kj1lLHQueT10LmRlcHRoKm59cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LHRyZWVtYXA6ZnVuY3Rpb24gUWZ0KCl7dmFyIHQ9S0osZT0hMSxuPTEsaT0xLHI9WzBdLG89a0osYT1rSixzPWtKLGw9a0osYz1rSjtmdW5jdGlvbiB1KHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPW4sdC55MT1pLHQuZWFjaEJlZm9yZShoKSxyPVswXSxlJiZ0LmVhY2hCZWZvcmUoT0opLHR9ZnVuY3Rpb24gaChlKXt2YXIgbj1yW2UuZGVwdGhdLGk9ZS54MCtuLHU9ZS55MCtuLGg9ZS54MS1uLGQ9ZS55MS1uO2g8aSYmKGk9aD0oaStoKS8yKSxkPHUmJih1PWQ9KHUrZCkvMiksZS54MD1pLGUueTA9dSxlLngxPWgsZS55MT1kLGUuY2hpbGRyZW4mJihuPXJbZS5kZXB0aCsxXT1vKGUpLzIsaSs9YyhlKS1uLHUrPWEoZSktbiwoaC09cyhlKS1uKTxpJiYoaT1oPShpK2gpLzIpLChkLT1sKGUpLW4pPHUmJih1PWQ9KHUrZCkvMiksdChlLGksdSxoLGQpKX1yZXR1cm4gdS5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsdSk6ZX0sdS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0WzBdLGk9K3RbMV0sdSk6W24saV19LHUudGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BSihlKSx1KTp0fSx1LnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOnUucGFkZGluZ0lubmVyKCl9LHUucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UEooK3QpLHUpOm99LHUucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmlnaHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTp1LnBhZGRpbmdUb3AoKX0sdS5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UEooK3QpLHUpOmF9LHUucGFkZGluZ1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UEooK3QpLHUpOnN9LHUucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlBKKCt0KSx1KTpsfSx1LnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UEooK3QpLHUpOmN9LHV9LHRyZWVtYXBCaW5hcnk6ZnVuY3Rpb24gdG10KHQsZSxuLGkscil7dmFyIG8sYSxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEpO2ZvcihjWzBdPWE9bz0wO288bDsrK28pY1tvKzFdPWErPXNbb10udmFsdWU7IShmdW5jdGlvbiB0KGUsbixpLHIsbyxhLGwpe2lmKGU+PW4tMSl7dmFyIHU9c1tlXTtyZXR1cm4gdS54MD1yLHUueTA9byx1LngxPWEsdm9pZCh1LnkxPWwpfXZhciBoPWNbZV0sZD1pLzIraCxwPWUrMSxmPW4tMTtmb3IoO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6ekosdHJlZW1hcFNsaWNlOllKLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gZW10KHQsZSxuLGkscil7KDEmdC5kZXB0aD9ZSjp6SikodCxlLG4saSxyKX0sdHJlZW1hcFNxdWFyaWZ5OktKLHRyZWVtYXBSZXNxdWFyaWZ5OlpKLGludGVycG9sYXRlOkUxLGludGVycG9sYXRlQXJyYXk6eTEsaW50ZXJwb2xhdGVCYXNpczpzMSxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOmwxLGludGVycG9sYXRlRGF0ZTp2MSxpbnRlcnBvbGF0ZU51bWJlcjpiMSxpbnRlcnBvbGF0ZU9iamVjdDp4MSxpbnRlcnBvbGF0ZVJvdW5kOmZ1bmN0aW9uIG5tdCh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQrZSpuKX19LGludGVycG9sYXRlU3RyaW5nOk0xLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOlIxLGludGVycG9sYXRlVHJhbnNmb3JtU3ZnOnoxLGludGVycG9sYXRlWm9vbTpmdW5jdGlvbiBpbXQodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvQjEsbj1mdW5jdGlvbih0KXtyZXR1cm5bcit0Kmwsbyt0KmMsYSpNYXRoLmV4cChCMSp0KmkpXX07ZWxzZXt2YXIgaD1NYXRoLnNxcnQodSksZD0ocypzLWEqYSs0KnUpLygyKmEqMipoKSxwPShzKnMtYSphLTQqdSkvKDIqcyoyKmgpLGY9TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSxtPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCk7aT0obS1mKS9CMSxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPUgxKGYpLHM9YS8oMipoKSoobiooZnVuY3Rpb24gdSh0KXtyZXR1cm4oKHQ9TWF0aC5leHAoMip0KSktMSkvKHQrMSl9KShCMSplK2YpLShmdW5jdGlvbiBkKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfSkoZikpO3JldHVybltyK3MqbCxvK3MqYyxhKm4vSDEoQjEqZStmKV19fXJldHVybiBuLmR1cmF0aW9uPTFlMyppLG59LGludGVycG9sYXRlUmdiOmYxLGludGVycG9sYXRlUmdiQmFzaXM6ZzEsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpfMSxpbnRlcnBvbGF0ZUhzbDpWMSxpbnRlcnBvbGF0ZUhzbExvbmc6VTEsaW50ZXJwb2xhdGVMYWI6ZnVuY3Rpb24gcm10KHQsZSl7dmFyIG49cDEoKHQ9SFEodCkpLmwsKGU9SFEoZSkpLmwpLGk9cDEodC5hLGUuYSkscj1wMSh0LmIsZS5iKSxvPXAxKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWkoZSksdC5iPXIoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19LGludGVycG9sYXRlSGNsOkcxLGludGVycG9sYXRlSGNsTG9uZzpXMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeDpZMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc6WDEscXVhbnRpemU6ZnVuY3Rpb24gb210KHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6dDAscG9seWdvbkFyZWE6ZnVuY3Rpb24gYW10KHQpe2Zvcih2YXIgZSxuPS0xLGk9dC5sZW5ndGgscj10W2ktMV0sbz0wOysrbjxpOylvKz0oZT1yKVsxXSoocj10W25dKVswXS1lWzBdKnJbMV07cmV0dXJuIG8vMn0scG9seWdvbkNlbnRyb2lkOmZ1bmN0aW9uIHNtdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz0wLGE9MCxzPXRbci0xXSxsPTA7KytpPHI7KWwrPW49KGU9cylbMF0qKHM9dFtpXSlbMV0tc1swXSplWzFdLG8rPShlWzBdK3NbMF0pKm4sYSs9KGVbMV0rc1sxXSkqbjtyZXR1cm5bby8obCo9MyksYS9sXX0scG9seWdvbkh1bGw6ZnVuY3Rpb24gbG10KHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQobjApLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPWkwKGkpLGE9aTAocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBjbXQodCxlKXtmb3IodmFyIG4saSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9ZVswXSxzPWVbMV0sbD1vWzBdLGM9b1sxXSx1PSExLGg9MDtoPHI7KytoKW49KG89dFtoXSlbMF0sKGk9b1sxXSk+cyE9Yz5zJiZhPChsLW4pKihzLWkpLyhjLWkpK24mJih1PSF1KSxsPW4sYz1pO3JldHVybiB1fSxwb2x5Z29uTGVuZ3RoOmZ1bmN0aW9uIHVtdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1vWzBdLHM9b1sxXSxsPTA7KytpPHI7KWU9YSxuPXMsZS09YT0obz10W2ldKVswXSxuLT1zPW9bMV0sbCs9TWF0aC5zcXJ0KGUqZStuKm4pO3JldHVybiBsfSxxdWFkdHJlZTpsMCxxdWV1ZTpOMCxyYW5kb21Vbmlmb3JtOk8wLHJhbmRvbU5vcm1hbDp6MCxyYW5kb21Mb2dOb3JtYWw6RDAscmFuZG9tQmF0ZXM6SDAscmFuZG9tSXJ3aW5IYWxsOkIwLHJhbmRvbUV4cG9uZW50aWFsOkYwLHJlcXVlc3Q6VjAsaHRtbDpqMCxqc29uOkcwLHRleHQ6VzAseG1sOnEwLGNzdjokMCx0c3Y6SzAsc2NhbGVCYW5kOnkyLHNjYWxlUG9pbnQ6ZnVuY3Rpb24gaG10KCl7cmV0dXJuIHYyKHkyKCkucGFkZGluZ0lubmVyKDEpKX0sc2NhbGVJZGVudGl0eTpmdW5jdGlvbiB0KCl7dmFyIGU9WzAsMV07ZnVuY3Rpb24gbih0KXtyZXR1cm4rdH1yZXR1cm4gbi5pbnZlcnQ9bixuLmRvbWFpbj1uLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWYyLmNhbGwodCxMNSksbik6ZS5zbGljZSgpfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihlKX0sbjMobil9LHNjYWxlTGluZWFyOmZ1bmN0aW9uIHQoKXt2YXIgZT1ENShONSxiNSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiB6NShlLHQoKSl9LG4zKGUpfSxzY2FsZUxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9RDUocjMsbzMpLmRvbWFpbihbMSwxMF0pLG49ZS5kb21haW4saT0xMCxyPWwzKDEwKSxvPXMzKDEwKTtmdW5jdGlvbiBhKCl7cmV0dXJuIHI9bDMoaSksbz1zMyhpKSxuKClbMF08MCYmKHI9YzMociksbz1jMyhvKSksZX1yZXR1cm4gZS5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LGEoKSk6aX0sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4odCksYSgpKTpuKCl9LGUudGlja3M9ZnVuY3Rpb24odCl7dmFyIGUsYT1uKCkscz1hWzBdLGw9YVthLmxlbmd0aC0xXTsoZT1sPHMpJiYoZD1zLHM9bCxsPWQpO3ZhciBjLHUsaCxkPXIocykscD1yKGwpLGY9bnVsbD09dD8xMDordCxtPVtdO2lmKCEoaSUxKSYmcC1kPGYpe2lmKGQ9TWF0aC5yb3VuZChkKS0xLHA9TWF0aC5yb3VuZChwKSsxLHM+MCl7Zm9yKDtkPHA7KytkKWZvcih1PTEsYz1vKGQpO3U8aTsrK3UpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIGZvcig7ZDxwOysrZClmb3IodT1pLTEsYz1vKGQpO3U+PTE7LS11KWlmKCEoKGg9Yyp1KTxzKSl7aWYoaD5sKWJyZWFrO20ucHVzaChoKX19ZWxzZSBtPXIyKGQscCxNYXRoLm1pbihwLWQsZikpLm1hcChvKTtyZXR1cm4gZT9tLnJldmVyc2UoKTptfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXtpZihudWxsPT1uJiYobj0xMD09PWk/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49SzUobikpLHQ9PT0xLzApcmV0dXJuIG47bnVsbD09dCYmKHQ9MTApO3ZhciBhPU1hdGgubWF4KDEsaSp0L2UudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10L28oTWF0aC5yb3VuZChyKHQpKSk7cmV0dXJuIGUqaTxpLS41JiYoZSo9aSksZTw9YT9uKHQpOiIifX0sZS5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG4oaTMobigpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmZsb29yKHIodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmNlaWwocih0KSkpfX0pKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHo1KGUsdCgpLmJhc2UoaSkpfSxlfSxzY2FsZU9yZGluYWw6XzIsc2NhbGVJbXBsaWNpdDpnMixzY2FsZVBvdzpoMyxzY2FsZVNxcnQ6ZnVuY3Rpb24gZG10KCl7cmV0dXJuIGgzKCkuZXhwb25lbnQoLjUpfSxzY2FsZVF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVtdLGk9W107ZnVuY3Rpb24gcigpe3ZhciB0PTAscj1NYXRoLm1heCgxLG4ubGVuZ3RoKTtmb3IoaT1uZXcgQXJyYXkoci0xKTsrK3Q8cjspaVt0LTFdPXMyKGUsdC9yKTtyZXR1cm4gb31mdW5jdGlvbiBvKHQpe2lmKCFpc05hTih0PSt0KSlyZXR1cm4gbltRMChpLHQpXX1yZXR1cm4gby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIHI9bi5pbmRleE9mKHQpO3JldHVybiByPDA/W05hTixOYU5dOltyPjA/aVtyLTFdOmVbMF0scjxpLmxlbmd0aD9pW3JdOmVbZS5sZW5ndGgtMV1dfSxvLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W107Zm9yKHZhciBuLGk9MCxvPXQubGVuZ3RoO2k8bzsrK2kpbnVsbD09KG49dFtpXSl8fGlzTmFOKG49K24pfHxlLnB1c2gobik7cmV0dXJuIGUuc29ydChaMCkscigpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW0yLmNhbGwodCkscigpKTpuLnNsaWNlKCl9LG8ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LG99LHNjYWxlUXVhbnRpemU6ZnVuY3Rpb24gdCgpe3ZhciBlPTAsbj0xLGk9MSxyPVsuNV0sbz1bMCwxXTtmdW5jdGlvbiBhKHQpe2lmKHQ8PXQpcmV0dXJuIG9bUTAocix0LDAsaSldfWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1tMi5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oW2Usbl0pLnJhbmdlKG8pfSxuMyhhKX0sc2NhbGVUaHJlc2hvbGQ6ZnVuY3Rpb24gdCgpe3ZhciBlPVsuNV0sbj1bMCwxXSxpPTE7ZnVuY3Rpb24gcih0KXtpZih0PD10KXJldHVybiBuW1EwKGUsdCwwLGkpXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bTIuY2FsbCh0KSxpPU1hdGgubWluKGUubGVuZ3RoLG4ubGVuZ3RoLTEpLHIpOmUuc2xpY2UoKX0sci5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1tMi5jYWxsKHQpLGk9TWF0aC5taW4oZS5sZW5ndGgsbi5sZW5ndGgtMSkscik6bi5zbGljZSgpfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgaT1uLmluZGV4T2YodCk7cmV0dXJuW2VbaS0xXSxlW2ldXX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LHJ9LHNjYWxlVGltZTpmdW5jdGlvbiBwbXQoKXtyZXR1cm4gdzYoTjMsTDMsQTMsVDMsRTMsTTMsUzMsXzMsWDMpLmRvbWFpbihbbmV3IERhdGUoMmUzLDAsMSksbmV3IERhdGUoMmUzLDAsMildKX0sc2NhbGVVdGM6ZnVuY3Rpb24gZm10KCl7cmV0dXJuIHc2KGozLFYzLEIzLHozLE8zLFIzLFMzLF8zLCQzKS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSl9LHNjaGVtZUNhdGVnb3J5MTA6TTYsc2NoZW1lQ2F0ZWdvcnkyMGI6RTYsc2NoZW1lQ2F0ZWdvcnkyMGM6VDYsc2NoZW1lQ2F0ZWdvcnkyMDpDNixpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6QTYsaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIG1tdCh0KXsodDwwfHx0PjEpJiYodC09TWF0aC5mbG9vcih0KSk7dmFyIGU9TWF0aC5hYnModC0uNSk7cmV0dXJuIEw2Lmg9MzYwKnQtMTAwLEw2LnM9MS41LTEuNSplLEw2Lmw9LjgtLjkqZSxMNisiIn0saW50ZXJwb2xhdGVXYXJtOms2LGludGVycG9sYXRlQ29vbDpQNixpbnRlcnBvbGF0ZVZpcmlkaXM6TjYsaW50ZXJwb2xhdGVNYWdtYTpSNixpbnRlcnBvbGF0ZUluZmVybm86TzYsaW50ZXJwb2xhdGVQbGFzbWE6ejYsc2NhbGVTZXF1ZW50aWFsOmZ1bmN0aW9uIHQoZSl7dmFyIG49MCxpPTEscj0hMTtmdW5jdGlvbiBvKHQpe3ZhciBvPSh0LW4pLyhpLW4pO3JldHVybiBlKHI/TWF0aC5tYXgoMCxNYXRoLm1pbigxLG8pKTpvKX1yZXR1cm4gby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0saT0rdFsxXSxvKTpbbixpXX0sby5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsbyk6cn0sby5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdChlKS5kb21haW4oW24saV0pLmNsYW1wKHIpfSxuMyhvKX0sY3JlYXRlOmZ1bmN0aW9uIGdtdCh0KXtyZXR1cm4gJDkoVTYodCkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKX0sY3JlYXRvcjpVNixsb2NhbDpDOCxtYXRjaGVyOks2LG1vdXNlOmZ1bmN0aW9uIF9tdCh0KXt2YXIgZT1rOCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSxQOCh0LGUpfSxuYW1lc3BhY2U6SDYsbmFtZXNwYWNlczpCNixjbGllbnRQb2ludDpQOCxzZWxlY3Q6JDksc2VsZWN0QWxsOmZ1bmN0aW9uIHltdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IFk5KFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IFk5KFtudWxsPT10P1tdOnRdLHE5KX0sc2VsZWN0aW9uOlg5LHNlbGVjdG9yOkc2LHNlbGVjdG9yQWxsOnE2LHN0eWxlOmQ5LHRvdWNoOmZ1bmN0aW9uIHZtdCh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9azgoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBQOCh0LGkpO3JldHVybiBudWxsfSx0b3VjaGVzOmZ1bmN0aW9uIGJtdCh0LGUpe251bGw9PWUmJihlPWs4KCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPVA4KHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzpsOSxnZXQgZXZlbnQoKXtyZXR1cm4gRDl9LGN1c3RvbUV2ZW50OmZ1bmN0aW9uIHhtdCh0LGUsbixpKXt2YXIgcj1EOTt0LnNvdXJjZUV2ZW50PUQ5LEQ5PXQ7dHJ5e3JldHVybiBlLmFwcGx5KG4saSl9ZmluYWxseXtEOT1yfX0sYXJjOmZ1bmN0aW9uIHdtdCgpe3ZhciB0PVo4LGU9Sjgsbj1EOCgwKSxpPW51bGwscj1ROCxvPXQ3LGE9ZTcscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktWTgscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1ZOCxmPUI4KHAtZCksbT1wPmQ7aWYoc3x8KHM9bD16OCgpKSxoPHUmJihjPWgsaD11LHU9YyksaD5XOClpZihmPlg4LVc4KXMubW92ZVRvKGgqRjgoZCksaCpqOChkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1Plc4JiYocy5tb3ZlVG8odSpGOChwKSx1Kmo4KHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPlc4JiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6RzgodSp1K2gqaCkpLFQ9VTgoQjgoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPlc4KXt2YXIgaz1LOChFL3UqajgoTSkpLFA9SzgoRS9oKmo4KE0pKTsody09MiprKT5XOD8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKlApPlc4Pyh5Kz1QKj1tPzE6LTEsdi09UCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIEw9aCpGOCh5KSxJPWgqajgoeSksTj11KkY4KHgpLFI9dSpqOCh4KTtpZihUPlc4KXt2YXIgTz1oKkY4KHYpLHo9aCpqOCh2KSxEPXUqRjgoYiksQj11Kmo4KGIpO2lmKGY8cTgpe3ZhciBIPXc+Vzg/bjcoTCxJLEQsQixPLHosTixSKTpbTixSXSxGPUwtSFswXSxWPUktSFsxXSxVPU8tSFswXSxqPXotSFsxXSxHPTEvajgoJDgoKEYqVStWKmopLyhHOChGKkYrVipWKSpHOChVKlUraipqKSkpLzIpLFc9RzgoSFswXSpIWzBdK0hbMV0qSFsxXSk7Qz1VOChULCh1LVcpLyhHLTEpKSxBPVU4KFQsKGgtVykvKEcrMSkpfX1TPlc4P0E+Vzg/KGc9aTcoRCxCLEwsSSxoLEEsbSksXz1pNyhPLHosTixSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxIOChnLnkwMSxnLngwMSksSDgoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsSDgoZy55MDEsZy54MDEpLEg4KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsSDgoZy5jeStnLnkxMSxnLmN4K2cueDExKSxIOChfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxIOChfLnkxMSxfLngxMSksSDgoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhMLEkpLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKEwsSSksdT5XOCYmdz5XOD9DPlc4PyhnPWk3KE4sUixPLHosdSwtQyxtKSxfPWk3KEwsSSxELEIsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxIOChnLnkwMSxnLngwMSksSDgoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsSDgoZy55MDEsZy54MDEpLEg4KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsSDgoZy5jeStnLnkxMSxnLmN4K2cueDExKSxIOChfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLEg4KF8ueTExLF8ueDExKSxIOChfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKE4sUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItcTgvMjtyZXR1cm5bRjgoaSkqbixqOChpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOmM3LGxpbmU6bDcscGllOmZ1bmN0aW9uIFNtdCgpe3ZhciB0PWg3LGU9dTcsbj1udWxsLGk9RDgoMCkscj1EOChYOCksbz1EOCgwKTtmdW5jdGlvbiBhKGEpe3ZhciBzLGwsYyx1LGgsZD1hLmxlbmd0aCxwPTAsZj1uZXcgQXJyYXkoZCksbT1uZXcgQXJyYXkoZCksZz0raS5hcHBseSh0aGlzLGFyZ3VtZW50cyksXz1NYXRoLm1pbihYOCxNYXRoLm1heCgtWDgsci5hcHBseSh0aGlzLGFyZ3VtZW50cyktZykpLHk9TWF0aC5taW4oTWF0aC5hYnMoXykvZCxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdj15KihfPDA/LTE6MSk7Zm9yKHM9MDtzPGQ7KytzKShoPW1bZltzXT1zXT0rdChhW3NdLHMsYSkpPjAmJihwKz1oKTtmb3IobnVsbCE9ZT9mLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUobVt0XSxtW25dKX0pKTpudWxsIT1uJiZmLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oYVt0XSxhW2VdKX0pKSxzPTAsYz1wPyhfLWQqdikvcDowO3M8ZDsrK3MsZz11KW1bbD1mW3NdXT17ZGF0YTphW2xdLGluZGV4OnMsdmFsdWU6aD1tW2xdLHN0YXJ0QW5nbGU6ZyxlbmRBbmdsZTp1PWcrKGg+MD9oKmM6MCkrdixwYWRBbmdsZTp5fTtyZXR1cm4gbX1yZXR1cm4gYS52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KCtlKSxhKTp0fSxhLnNvcnRWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuPW51bGwsYSk6ZX0sYS5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RDgoK3QpLGEpOnJ9LGEucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCksYSk6b30sYX0sYXJlYVJhZGlhbDpfNyxyYWRpYWxBcmVhOl83LGxpbmVSYWRpYWw6ZzcscmFkaWFsTGluZTpnNyxwb2ludFJhZGlhbDp5NyxsaW5rSG9yaXpvbnRhbDpmdW5jdGlvbiBNbXQoKXtyZXR1cm4gdzcoUzcpfSxsaW5rVmVydGljYWw6ZnVuY3Rpb24gRW10KCl7cmV0dXJuIHc3KE03KX0sbGlua1JhZGlhbDpmdW5jdGlvbiBUbXQoKXt2YXIgdD13NyhFNyk7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdH0sc3ltYm9sOmZ1bmN0aW9uIENtdCgpe3ZhciB0PUQ4KFQ3KSxlPUQ4KDY0KSxuPW51bGw7ZnVuY3Rpb24gaSgpe3ZhciBpO2lmKG58fChuPWk9ejgoKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhuLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksaSlyZXR1cm4gbj1udWxsLGkrIiJ8fG51bGx9cmV0dXJuIGkudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KGUpLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KCt0KSxpKTplfSxpLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOnQsaSk6bn0saX0sc3ltYm9sczpqNyxzeW1ib2xDaXJjbGU6VDcsc3ltYm9sQ3Jvc3M6Qzcsc3ltYm9sRGlhbW9uZDpQNyxzeW1ib2xTcXVhcmU6Tzcsc3ltYm9sU3RhcjpSNyxzeW1ib2xUcmlhbmdsZTpENyxzeW1ib2xXeWU6VTcsY3VydmVCYXNpc0Nsb3NlZDpmdW5jdGlvbiBBbXQodCl7cmV0dXJuIG5ldyBZNyh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24ga210KHQpe3JldHVybiBuZXcgWDcodCl9LGN1cnZlQmFzaXM6ZnVuY3Rpb24gUG10KHQpe3JldHVybiBuZXcgcTcodCl9LGN1cnZlQnVuZGxlOks3LGN1cnZlQ2FyZGluYWxDbG9zZWQ6ZXR0LGN1cnZlQ2FyZGluYWxPcGVuOml0dCxjdXJ2ZUNhcmRpbmFsOlE3LGN1cnZlQ2F0bXVsbFJvbUNsb3NlZDpsdHQsY3VydmVDYXRtdWxsUm9tT3Blbjp1dHQsY3VydmVDYXRtdWxsUm9tOmF0dCxjdXJ2ZUxpbmVhckNsb3NlZDpmdW5jdGlvbiBMbXQodCl7cmV0dXJuIG5ldyBodHQodCl9LGN1cnZlTGluZWFyOm83LGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uIEltdCh0KXtyZXR1cm4gbmV3IGd0dCh0KX0sY3VydmVNb25vdG9uZVk6ZnVuY3Rpb24gTm10KHQpe3JldHVybiBuZXcgX3R0KHQpfSxjdXJ2ZU5hdHVyYWw6ZnVuY3Rpb24gUm10KHQpe3JldHVybiBuZXcgdnR0KHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gT210KHQpe3JldHVybiBuZXcgeHR0KHQsLjUpfSxjdXJ2ZVN0ZXBBZnRlcjpmdW5jdGlvbiB6bXQodCl7cmV0dXJuIG5ldyB4dHQodCwxKX0sY3VydmVTdGVwQmVmb3JlOmZ1bmN0aW9uIERtdCh0KXtyZXR1cm4gbmV3IHh0dCh0LDApfSxzdGFjazpmdW5jdGlvbiBCbXQoKXt2YXIgdD1EOChbXSksZT1TdHQsbj13dHQsaT1NdHQ7ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbD1yLmxlbmd0aCxjPXMubGVuZ3RoLHU9bmV3IEFycmF5KGMpO2ZvcihvPTA7bzxjOysrbyl7Zm9yKHZhciBoLGQ9c1tvXSxwPXVbb109bmV3IEFycmF5KGwpLGY9MDtmPGw7KytmKXBbZl09aD1bMCwraShyW2ZdLGQsZixyKV0saC5kYXRhPXJbZl07cC5rZXk9ZH1mb3Iobz0wLGE9ZSh1KTtvPGM7KytvKXVbYVtvXV0uaW5kZXg9bztyZXR1cm4gbih1LGEpLHV9cmV0dXJuIHIua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkQ4KHY3LmNhbGwoZSkpLHIpOnR9LHIudmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEOCgrdCkscik6aX0sci5vcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P1N0dDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkQ4KHY3LmNhbGwodCkpLHIpOmV9LHIub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/d3R0OnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gSG10KHQsZSl7aWYoKGk9dC5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9dFswXS5sZW5ndGg7bzxhOysrbyl7Zm9yKHI9bj0wO248aTsrK24pcis9dFtuXVtvXVsxXXx8MDtpZihyKWZvcihuPTA7bjxpOysrbil0W25dW29dWzFdLz1yfXd0dCh0LGUpfX0sc3RhY2tPZmZzZXREaXZlcmdpbmc6ZnVuY3Rpb24gRm10KHQsZSl7aWYoKHM9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT49MD8oaVswXT1vLGlbMV09bys9cik6cjwwPyhpWzFdPWEsaVswXT1hKz1yKTppWzBdPW99LHN0YWNrT2Zmc2V0Tm9uZTp3dHQsc3RhY2tPZmZzZXRTaWxob3VldHRlOmZ1bmN0aW9uIFZtdCh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfXd0dCh0LGUpfX0sc3RhY2tPZmZzZXRXaWdnbGU6ZnVuY3Rpb24gVW10KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjAmJihpPShuPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT0xO2E8aTsrK2Epe2Zvcih2YXIgcz0wLGw9MCxjPTA7czxyOysrcyl7Zm9yKHZhciB1PXRbZVtzXV0saD11W2FdWzFdfHwwLGQ9KGgtKHVbYS0xXVsxXXx8MCkpLzIscD0wO3A8czsrK3Ape3ZhciBmPXRbZVtwXV07ZCs9KGZbYV1bMV18fDApLShmW2EtMV1bMV18fDApfWwrPWgsYys9ZCpofW5bYS0xXVsxXSs9blthLTFdWzBdPW8sbCYmKG8tPWMvbCl9blthLTFdWzFdKz1uW2EtMV1bMF09byx3dHQodCxlKX19LHN0YWNrT3JkZXJBc2NlbmRpbmc6RXR0LHN0YWNrT3JkZXJEZXNjZW5kaW5nOmZ1bmN0aW9uIGptdCh0KXtyZXR1cm4gRXR0KHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBHbXQodCl7dmFyIGUsbixpPXQubGVuZ3RoLHI9dC5tYXAoVHR0KSxvPVN0dCh0KS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiByW2VdLXJbdF19KSksYT0wLHM9MCxsPVtdLGM9W107Zm9yKGU9MDtlPGk7KytlKW49b1tlXSxhPHM/KGErPXJbbl0sbC5wdXNoKG4pKToocys9cltuXSxjLnB1c2gobikpO3JldHVybiBjLnJldmVyc2UoKS5jb25jYXQobCl9LHN0YWNrT3JkZXJOb25lOlN0dCxzdGFja09yZGVyUmV2ZXJzZTpmdW5jdGlvbiBXbXQodCl7cmV0dXJuIFN0dCh0KS5yZXZlcnNlKCl9LHRpbWVJbnRlcnZhbDprdHQsdGltZU1pbGxpc2Vjb25kOlB0dCx0aW1lTWlsbGlzZWNvbmRzOkx0dCx1dGNNaWxsaXNlY29uZDpQdHQsdXRjTWlsbGlzZWNvbmRzOkx0dCx0aW1lU2Vjb25kOkR0dCx0aW1lU2Vjb25kczpCdHQsdXRjU2Vjb25kOkR0dCx1dGNTZWNvbmRzOkJ0dCx0aW1lTWludXRlOkh0dCx0aW1lTWludXRlczpGdHQsdGltZUhvdXI6VnR0LHRpbWVIb3VyczpVdHQsdGltZURheTpqdHQsdGltZURheXM6R3R0LHRpbWVXZWVrOnF0dCx0aW1lV2Vla3M6UXR0LHRpbWVTdW5kYXk6cXR0LHRpbWVTdW5kYXlzOlF0dCx0aW1lTW9uZGF5Oll0dCx0aW1lTW9uZGF5czp0ZXQsdGltZVR1ZXNkYXk6WHR0LHRpbWVUdWVzZGF5czplZXQsdGltZVdlZG5lc2RheTokdHQsdGltZVdlZG5lc2RheXM6bmV0LHRpbWVUaHVyc2RheTpLdHQsdGltZVRodXJzZGF5czppZXQsdGltZUZyaWRheTpadHQsdGltZUZyaWRheXM6cmV0LHRpbWVTYXR1cmRheTpKdHQsdGltZVNhdHVyZGF5czpvZXQsdGltZU1vbnRoOmFldCx0aW1lTW9udGhzOnNldCx0aW1lWWVhcjpjZXQsdGltZVllYXJzOnVldCx1dGNNaW51dGU6aGV0LHV0Y01pbnV0ZXM6ZGV0LHV0Y0hvdXI6cGV0LHV0Y0hvdXJzOmZldCx1dGNEYXk6bWV0LHV0Y0RheXM6Z2V0LHV0Y1dlZWs6eWV0LHV0Y1dlZWtzOlRldCx1dGNTdW5kYXk6eWV0LHV0Y1N1bmRheXM6VGV0LHV0Y01vbmRheTp2ZXQsdXRjTW9uZGF5czpDZXQsdXRjVHVlc2RheTpiZXQsdXRjVHVlc2RheXM6QWV0LHV0Y1dlZG5lc2RheTp4ZXQsdXRjV2VkbmVzZGF5czprZXQsdXRjVGh1cnNkYXk6d2V0LHV0Y1RodXJzZGF5czpQZXQsdXRjRnJpZGF5Ok1ldCx1dGNGcmlkYXlzOkxldCx1dGNTYXR1cmRheTpFZXQsdXRjU2F0dXJkYXlzOklldCx1dGNNb250aDpOZXQsdXRjTW9udGhzOlJldCx1dGNZZWFyOk9ldCx1dGNZZWFyczp6ZXQsdGltZUZvcm1hdERlZmF1bHRMb2NhbGU6eGl0LGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHNudH0sZ2V0IHRpbWVQYXJzZSgpe3JldHVybiBsbnR9LGdldCB1dGNGb3JtYXQoKXtyZXR1cm4gY250fSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gdW50fSx0aW1lRm9ybWF0TG9jYWxlOm9udCxpc29Gb3JtYXQ6U2l0LGlzb1BhcnNlOkNpdCxub3c6RGl0LHRpbWVyOkZpdCx0aW1lckZsdXNoOlZpdCx0aW1lb3V0OmZ1bmN0aW9uIHFtdCh0LGUsbil7dmFyIGk9bmV3IEhpdDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfSxpbnRlcnZhbDpmdW5jdGlvbiBZbXQodCxlLG4pe3ZhciBpPW5ldyBIaXQscj1lO3JldHVybiBudWxsPT1lPyhpLnJlc3RhcnQodCxlLG4pLGkpOihlPStlLG49bnVsbD09bj9EaXQoKTorbixpLnJlc3RhcnQoKGZ1bmN0aW9uIG8oYSl7YSs9cixpLnJlc3RhcnQobyxyKz1lLG4pLHQoYSl9KSxlLG4pLGkpfSx0cmFuc2l0aW9uOkFzdCxhY3RpdmU6ZnVuY3Rpb24gWG10KHQsZSl7dmFyIG4saSxyPXQuX190cmFuc2l0aW9uO2lmKHIpZm9yKGkgaW4gZT1udWxsPT1lP251bGw6ZSsiIixyKWlmKChuPXJbaV0pLnN0YXRlPjEmJm4ubmFtZT09PWUpcmV0dXJuIG5ldyBDc3QoW1t0XV0sSnN0LGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6YWF0LHZvcm9ub2k6ZnVuY3Rpb24gJG10KCl7dmFyIHQ9dGx0LGU9ZWx0LG49bnVsbDtmdW5jdGlvbiBpKGkpe3JldHVybiBuZXcgemx0KGkubWFwKChmdW5jdGlvbihuLHIpe3ZhciBvPVtNYXRoLnJvdW5kKHQobixyLGkpL0lsdCkqSWx0LE1hdGgucm91bmQoZShuLHIsaSkvSWx0KSpJbHRdO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpRc3QoK2UpLGkpOnR9LGkueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFzdCgrdCksaSk6ZX0saS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dLGkpOm4mJltbblswXVswXSxuWzBdWzFdXSxbblsxXVswXSxuWzFdWzFdXV19LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6W1swLDBdLFsrdFswXSwrdFsxXV1dLGkpOm4mJltuWzFdWzBdLW5bMF1bMF0sblsxXVsxXS1uWzBdWzFdXX0saX0sem9vbTpmdW5jdGlvbiBLbXQoKXt2YXIgdCxlLG49Z3B0LGk9X3B0LHI9eHB0LG89dnB0LGE9YnB0LHM9WzAsMS8wXSxsPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLGM9MjUwLHU9Qmh0LGg9W10sZD1CbHQoInN0YXJ0Iiwiem9vbSIsImVuZCIpLHA9NTAwLGY9MDtmdW5jdGlvbiBtKHQpe3QucHJvcGVydHkoIl9fem9vbSIseXB0KS5vbigid2hlZWwuem9vbSIsdykub24oIm1vdXNlZG93bi56b29tIixTKS5vbigiZGJsY2xpY2suem9vbSIsTSkuZmlsdGVyKGEpLm9uKCJ0b3VjaHN0YXJ0Lnpvb20iLEUpLm9uKCJ0b3VjaG1vdmUuem9vbSIsVCkub24oInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbSIsQykuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4oZT1NYXRoLm1heChzWzBdLE1hdGgubWluKHNbMV0sZSkpKT09PXQuaz90Om5ldyBjcHQoZSx0LngsdC55KX1mdW5jdGlvbiBfKHQsZSxuKXt2YXIgaT1lWzBdLW5bMF0qdC5rLHI9ZVsxXS1uWzFdKnQuaztyZXR1cm4gaT09PXQueCYmcj09PXQueT90Om5ldyBjcHQodC5rLGkscil9ZnVuY3Rpb24geSh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB2KHQsZSxuKXt0Lm9uKCJzdGFydC56b29tIiwoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsKGZ1bmN0aW9uKCl7Yih0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oInpvb20iLChmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHMsbz1iKHQsciksYT1pLmFwcGx5KHQscikscz1ufHx5KGEpLGw9TWF0aC5tYXgoYVsxXVswXS1hWzBdWzBdLGFbMV1bMV0tYVswXVsxXSksYz10Ll9fem9vbSxoPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodCxyKTplLGQ9dShjLmludmVydChzKS5jb25jYXQobC9jLmspLGguaW52ZXJ0KHMpLmNvbmNhdChsL2guaykpO3JldHVybiBmdW5jdGlvbih0KXtpZigxPT09dCl0PWg7ZWxzZXt2YXIgZT1kKHQpLG49bC9lWzJdO3Q9bmV3IGNwdChuLHNbMF0tZVswXSpuLHNbMV0tZVsxXSpuKX1vLnpvb20obnVsbCx0KX19KSl9ZnVuY3Rpb24gYih0LGUpe2Zvcih2YXIgbixpPTAscj1oLmxlbmd0aDtpPHI7KytpKWlmKChuPWhbaV0pLnRoYXQ9PT10KXJldHVybiBuO3JldHVybiBuZXcgeCh0LGUpfWZ1bmN0aW9uIHgodCxlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLmluZGV4PS0xLHRoaXMuYWN0aXZlPTAsdGhpcy5leHRlbnQ9aS5hcHBseSh0LGUpfWZ1bmN0aW9uIHcoKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9Yih0aGlzLGFyZ3VtZW50cyksZT10aGlzLl9fem9vbSxpPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlLmsqTWF0aC5wb3coMixvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpKSxhPWV1dCh0aGlzKTtpZih0LndoZWVsKXQubW91c2VbMF1bMF09PT1hWzBdJiZ0Lm1vdXNlWzBdWzFdPT09YVsxXXx8KHQubW91c2VbMV09ZS5pbnZlcnQodC5tb3VzZVswXT1hKSksY2xlYXJUaW1lb3V0KHQud2hlZWwpO2Vsc2V7aWYoZS5rPT09aSlyZXR1cm47dC5tb3VzZT1bYSxlLmludmVydChhKV0sY2R0KHRoaXMpLHQuc3RhcnQoKX1tcHQoKSx0LndoZWVsPXNldFRpbWVvdXQoYywxNTApLHQuem9vbSgibW91c2UiLHIoXyhnKGUsaSksdC5tb3VzZVswXSx0Lm1vdXNlWzFdKSx0LmV4dGVudCxsKSl9ZnVuY3Rpb24gYygpe3Qud2hlZWw9bnVsbCx0LmVuZCgpfX1mdW5jdGlvbiBTKCl7aWYoIWUmJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD1iKHRoaXMsYXJndW1lbnRzKSxpPUpjdChGY3Qudmlldykub24oIm1vdXNlbW92ZS56b29tIixjLCEwKS5vbigibW91c2V1cC56b29tIix1LCEwKSxvPWV1dCh0aGlzKSxhPUZjdC5jbGllbnRYLHM9RmN0LmNsaWVudFk7cnV0KEZjdC52aWV3KSxmcHQoKSx0Lm1vdXNlPVtvLHRoaXMuX196b29tLmludmVydChvKV0sY2R0KHRoaXMpLHQuc3RhcnQoKX1mdW5jdGlvbiBjKCl7aWYobXB0KCksIXQubW92ZWQpe3ZhciBlPUZjdC5jbGllbnRYLWEsbj1GY3QuY2xpZW50WS1zO3QubW92ZWQ9ZSplK24qbj5mfXQuem9vbSgibW91c2UiLHIoXyh0LnRoYXQuX196b29tLHQubW91c2VbMF09ZXV0KHQudGhhdCksdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIHUoKXtpLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLG91dChGY3Qudmlldyx0Lm1vdmVkKSxtcHQoKSx0LmVuZCgpfX1mdW5jdGlvbiBNKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXRoaXMuX196b29tLGU9ZXV0KHRoaXMpLG89dC5pbnZlcnQoZSksYT10LmsqKEZjdC5zaGlmdEtleT8uNToyKSxzPXIoXyhnKHQsYSksZSxvKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKTttcHQoKSxjPjA/SmN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjKS5jYWxsKHYscyxlKTpKY3QodGhpcykuY2FsbChtLnRyYW5zZm9ybSxzKX19ZnVuY3Rpb24gRSgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgZSxpLHIsbyxhPWIodGhpcyxhcmd1bWVudHMpLHM9RmN0LmNoYW5nZWRUb3VjaGVzLGw9cy5sZW5ndGg7Zm9yKGZwdCgpLGk9MDtpPGw7KytpKW89W289bnV0KHRoaXMscywocj1zW2ldKS5pZGVudGlmaWVyKSx0aGlzLl9fem9vbS5pbnZlcnQobyksci5pZGVudGlmaWVyXSxhLnRvdWNoMD9hLnRvdWNoMXx8KGEudG91Y2gxPW8pOihhLnRvdWNoMD1vLGU9ITApO2lmKHQmJih0PWNsZWFyVGltZW91dCh0KSwhYS50b3VjaDEpKXJldHVybiBhLmVuZCgpLHZvaWQoKG89SmN0KHRoaXMpLm9uKCJkYmxjbGljay56b29tIikpJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSk7ZSYmKHQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0PW51bGx9KSxwKSxjZHQodGhpcyksYS5zdGFydCgpKX19ZnVuY3Rpb24gVCgpe3ZhciBlLG4saSxvLGE9Yih0aGlzLGFyZ3VtZW50cykscz1GY3QuY2hhbmdlZFRvdWNoZXMsYz1zLmxlbmd0aDtmb3IobXB0KCksdCYmKHQ9Y2xlYXJUaW1lb3V0KHQpKSxlPTA7ZTxjOysrZSlpPW51dCh0aGlzLHMsKG49c1tlXSkuaWRlbnRpZmllciksYS50b3VjaDAmJmEudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2EudG91Y2gwWzBdPWk6YS50b3VjaDEmJmEudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiYoYS50b3VjaDFbMF09aSk7aWYobj1hLnRoYXQuX196b29tLGEudG91Y2gxKXt2YXIgdT1hLnRvdWNoMFswXSxoPWEudG91Y2gwWzFdLGQ9YS50b3VjaDFbMF0scD1hLnRvdWNoMVsxXSxmPShmPWRbMF0tdVswXSkqZisoZj1kWzFdLXVbMV0pKmYsbT0obT1wWzBdLWhbMF0pKm0rKG09cFsxXS1oWzFdKSptO249ZyhuLE1hdGguc3FydChmL20pKSxpPVsodVswXStkWzBdKS8yLCh1WzFdK2RbMV0pLzJdLG89WyhoWzBdK3BbMF0pLzIsKGhbMV0rcFsxXSkvMl19ZWxzZXtpZighYS50b3VjaDApcmV0dXJuO2k9YS50b3VjaDBbMF0sbz1hLnRvdWNoMFsxXX1hLnpvb20oInRvdWNoIixyKF8obixpLG8pLGEuZXh0ZW50LGwpKX1mdW5jdGlvbiBDKCl7dmFyIHQsbixpPWIodGhpcyxhcmd1bWVudHMpLHI9RmN0LmNoYW5nZWRUb3VjaGVzLG89ci5sZW5ndGg7Zm9yKGZwdCgpLGUmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSkscCksdD0wO3Q8bzsrK3Qpbj1yW3RdLGkudG91Y2gwJiZpLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9kZWxldGUgaS50b3VjaDA6aS50b3VjaDEmJmkudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiZkZWxldGUgaS50b3VjaDE7aS50b3VjaDEmJiFpLnRvdWNoMCYmKGkudG91Y2gwPWkudG91Y2gxLGRlbGV0ZSBpLnRvdWNoMSksaS50b3VjaDA/aS50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KGkudG91Y2gwWzBdKTppLmVuZCgpfXJldHVybiBtLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dDtuLnByb3BlcnR5KCJfX3pvb20iLHlwdCksdCE9PW4/dih0LGUpOm4uaW50ZXJydXB0KCkuZWFjaCgoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKS5lbmQoKX0pKX0sbS5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSl7bS5zY2FsZVRvKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX3pvb20uayxuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIHQqbn0pKX0sbS5zY2FsZVRvPWZ1bmN0aW9uKHQsZSl7bS50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPXRoaXMuX196b29tLG89eSh0KSxhPW4uaW52ZXJ0KG8pLHM9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gcihfKGcobixzKSxvLGEpLHQsbCl9KSl9LG0udHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLG4pe20udHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCl9KSl9LG0udHJhbnNsYXRlVG89ZnVuY3Rpb24odCxlLG4pe20udHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz10aGlzLl9fem9vbSxhPXkodCk7cmV0dXJuIHIoZHB0LnRyYW5zbGF0ZShhWzBdLGFbMV0pLnNjYWxlKG8uaykudHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlPy1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotZSwiZnVuY3Rpb24iPT10eXBlb2Ygbj8tbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LW4pLHQsbCl9KSl9LHgucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5pbmRleD1oLnB1c2godGhpcyktMSx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPWUuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1lLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1lLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoaC5zcGxpY2UodGhpcy5pbmRleCwxKSx0aGlzLmluZGV4PS0xLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24odCl7IShmdW5jdGlvbiBlKHQsbixpLHIpe3ZhciBvPUZjdDt0LnNvdXJjZUV2ZW50PUZjdCxGY3Q9dDt0cnl7cmV0dXJuIG4uYXBwbHkoaSxyKX1maW5hbGx5e0ZjdD1vfX0pKG5ldyBscHQobSx0LHRoaXMudGhhdC5fX3pvb20pLGQuYXBwbHksZCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxtLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzcHQoK3QpLG0pOm99LG0uZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c3B0KCEhdCksbSk6bn0sbS50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpzcHQoISF0KSxtKTphfSxtLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnNwdChbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksbSk6aX0sbS5zY2FsZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oc1swXT0rdFswXSxzWzFdPSt0WzFdLG0pOltzWzBdLHNbMV1dfSxtLnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obFswXVswXT0rdFswXVswXSxsWzFdWzBdPSt0WzFdWzBdLGxbMF1bMV09K3RbMF1bMV0sbFsxXVsxXT0rdFsxXVsxXSxtKTpbW2xbMF1bMF0sbFswXVsxXV0sW2xbMV1bMF0sbFsxXVsxXV1dfSxtLmNvbnN0cmFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG0pOnJ9LG0uZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsbSk6Y30sbS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG0pOnV9LG0ub249ZnVuY3Rpb24oKXt2YXIgdD1kLm9uLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gdD09PWQ/bTp0fSxtLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9KHQ9K3QpKnQsbSk6TWF0aC5zcXJ0KGYpfSxtfSx6b29tVHJhbnNmb3JtOnBwdCx6b29tSWRlbnRpdHk6ZHB0fSkpOwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqCiAgICAgKiBAZmlsZW92ZXJ2aWV3IG1hbnVhbGx5IGFkZCBkMy1zZWxlY3Rpb24tbXVsdGkgdG8gZDMgZGVmYXVsdCBidW5kbGUuIE1vc3Qgb2YgdGhpcyBjb2RlIGlzCiAgICAgKiBjb3BpZWQgZnJvbSBkMy1zZWxlY3Rpb24tbXVsdGlAMS4wLjAuCiAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNlbGVjdGlvbi1tdWx0aS9pc3N1ZXMvMTEgZm9yIHdoeSB3ZSBoYXZlIHRvIGRvIHRoaXMKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBabXQ9d3B0LEptdD13cHQ7ZnVuY3Rpb24gUW10KHQsZSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPVptdC5zZWxlY3QodGhpcyk7Zm9yKHZhciBpIGluIHQpbi5hdHRyKGksdFtpXSl9KSl9ZnVuY3Rpb24gdGd0KHQsZSl7Zm9yKHZhciBuIGluIGUpdC5hdHRyKG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gZWd0KHQsZSxuKXtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGk9Wm10LnNlbGVjdCh0aGlzKTtmb3IodmFyIHIgaW4gdClpLnN0eWxlKHIsdFtyXSxuKX0pKX1mdW5jdGlvbiBuZ3QodCxlLG4pe2Zvcih2YXIgaSBpbiBlKXQuc3R5bGUoaSxlW2ldLG4pO3JldHVybiB0fWZ1bmN0aW9uIGlndCh0LGUpe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1abXQuc2VsZWN0KHRoaXMpO2Zvcih2YXIgaSBpbiB0KW4ucHJvcGVydHkoaSx0W2ldKX0pKX1mdW5jdGlvbiByZ3QodCxlKXtmb3IodmFyIG4gaW4gZSl0LnByb3BlcnR5KG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gb2d0KHQsZSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPVptdC5zZWxlY3QodGhpcykudHJhbnNpdGlvbih0KTtmb3IodmFyIHIgaW4gbilpLmF0dHIocixuW3JdKX0pKX1mdW5jdGlvbiBhZ3QodCxlKXtmb3IodmFyIG4gaW4gZSl0LmF0dHIobixlW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBzZ3QodCxlLG4pe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscj1abXQuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24odCk7Zm9yKHZhciBvIGluIGkpci5zdHlsZShvLGlbb10sbil9KSl9ZnVuY3Rpb24gbGd0KHQsZSxuKXtmb3IodmFyIGkgaW4gZSl0LnN0eWxlKGksZVtpXSxuKTtyZXR1cm4gdH1abXQuc2VsZWN0aW9uLnByb3RvdHlwZS5hdHRycz1mdW5jdGlvbiBjZ3QodCl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1FtdDp0Z3QpKHRoaXMsdCl9LFptdC5zZWxlY3Rpb24ucHJvdG90eXBlLnN0eWxlcz1mdW5jdGlvbiB1Z3QodCxlKXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZWd0Om5ndCkodGhpcyx0LG51bGw9PWU/IiI6ZSl9LFptdC5zZWxlY3Rpb24ucHJvdG90eXBlLnByb3BlcnRpZXM9ZnVuY3Rpb24gaGd0KHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9pZ3Q6cmd0KSh0aGlzLHQpfSxKbXQudHJhbnNpdGlvbi5wcm90b3R5cGUuYXR0cnM9ZnVuY3Rpb24gZGd0KHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9vZ3Q6YWd0KSh0aGlzLHQpfSxKbXQudHJhbnNpdGlvbi5wcm90b3R5cGUuc3R5bGVzPWZ1bmN0aW9uIHBndCh0LGUpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9zZ3Q6bGd0KSh0aGlzLHQsbnVsbD09ZT8iIjplKX07dmFyIGZndD17fSxtZ3Q9e30sZ2d0PU1lKEZtKSxfZ3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KF9ndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHlndD13cHQ7X2d0LmNvZXJjZUV4dGVybmFsRDM9ZnVuY3Rpb24gdmd0KHQpe2lmKG51bGw9PXQuYXR0cnMpe2lmKG51bGw9PXQubm9kZXMpe3ZhciBlPVtdO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7ZS5wdXNoKHRoaXMpfSkpLHlndC5zZWxlY3RBbGwoZSl9cmV0dXJuIHlndC5zZWxlY3RBbGwodC5ub2RlcygpKX1yZXR1cm4gdH07dmFyIGJndD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoYmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxiZ3QubWFrZUVudW09ZnVuY3Rpb24geGd0KHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT1lLHR9KSx7fSl9LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgd2d0PV9ndCxTZ3Q9e2xpbmVhcjpnZ3QuZWFzZUxpbmVhcixxdWFkOmdndC5lYXNlUXVhZCxxdWFkSW46Z2d0LmVhc2VRdWFkSW4scXVhZE91dDpnZ3QuZWFzZVF1YWRPdXQscXVhZEluT3V0OmdndC5lYXNlUXVhZEluT3V0LGN1YmljOmdndC5lYXNlQ3ViaWMsY3ViaWNJbjpnZ3QuZWFzZUN1YmljSW4sY3ViaWNPdXQ6Z2d0LmVhc2VDdWJpY091dCxjdWJpY0luT3V0OmdndC5lYXNlQ3ViaWNJbk91dCxwb2x5OmdndC5lYXNlUG9seSxwb2x5SW46Z2d0LmVhc2VQb2x5SW4scG9seU91dDpnZ3QuZWFzZVBvbHlPdXQscG9seUluT3V0OmdndC5lYXNlUG9seUluT3V0LHNpbjpnZ3QuZWFzZVNpbixzaW5JbjpnZ3QuZWFzZVNpbkluLHNpbk91dDpnZ3QuZWFzZVNpbk91dCxzaW5Jbk91dDpnZ3QuZWFzZVNpbkluT3V0LGV4cDpnZ3QuZWFzZUV4cCxleHBJbjpnZ3QuZWFzZUV4cEluLGV4cE91dDpnZ3QuZWFzZUV4cE91dCxleHBJbk91dDpnZ3QuZWFzZUV4cEluT3V0LGNpcmNsZTpnZ3QuZWFzZUNpcmNsZSxjaXJjbGVJbjpnZ3QuZWFzZUNpcmNsZUluLGNpcmNsZU91dDpnZ3QuZWFzZUNpcmNsZU91dCxjaXJjbGVJbk91dDpnZ3QuZWFzZUNpcmNsZUluT3V0LGJvdW5jZTpnZ3QuZWFzZUJvdW5jZSxib3VuY2VJbjpnZ3QuZWFzZUJvdW5jZUluLGJvdW5jZU91dDpnZ3QuZWFzZUJvdW5jZU91dCxib3VuY2VJbk91dDpnZ3QuZWFzZUJvdW5jZUluT3V0LGJhY2s6Z2d0LmVhc2VCYWNrLGJhY2tJbjpnZ3QuZWFzZUJhY2tJbixiYWNrT3V0OmdndC5lYXNlQmFja091dCxiYWNrSW5PdXQ6Z2d0LmVhc2VCYWNrSW5PdXQsZWxhc3RpYzpnZ3QuZWFzZUVsYXN0aWMsZWxhc3RpY0luOmdndC5lYXNlRWxhc3RpY0luLGVsYXN0aWNPdXQ6Z2d0LmVhc2VFbGFzdGljT3V0LGVsYXN0aWNJbk91dDpnZ3QuZWFzZUVsYXN0aWNJbk91dH07bWd0LkVhc2VOYW1lPWJndC5tYWtlRW51bShbImxpbmVhciIsInF1YWQiLCJxdWFkSW4iLCJxdWFkT3V0IiwicXVhZEluT3V0IiwiY3ViaWMiLCJjdWJpY0luIiwiY3ViaWNPdXQiLCJjdWJpY0luT3V0IiwicG9seSIsInBvbHlJbiIsInBvbHlPdXQiLCJwb2x5SW5PdXQiLCJzaW4iLCJzaW5JbiIsInNpbk91dCIsInNpbkluT3V0IiwiZXhwIiwiZXhwSW4iLCJleHBPdXQiLCJleHBJbk91dCIsImNpcmNsZSIsImNpcmNsZUluIiwiY2lyY2xlT3V0IiwiY2lyY2xlSW5PdXQiLCJib3VuY2UiLCJib3VuY2VJbiIsImJvdW5jZU91dCIsImJvdW5jZUluT3V0IiwiYmFjayIsImJhY2tJbiIsImJhY2tPdXQiLCJiYWNrSW5PdXQiLCJlbGFzdGljIiwiZWxhc3RpY0luIiwiZWxhc3RpY091dCIsImVsYXN0aWNJbk91dCJdKTt2YXIgTWd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9zdGFydERlbGF5PXQuX0RFRkFVTFRfU1RBUlRfREVMQVlfTUlMTElTRUNPTkRTLHRoaXMuX3N0ZXBEdXJhdGlvbj10Ll9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTLHRoaXMuX3N0ZXBEZWxheT10Ll9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFMsdGhpcy5fbWF4VG90YWxEdXJhdGlvbj10Ll9ERUZBVUxUX01BWF9UT1RBTF9EVVJBVElPTl9NSUxMSVNFQ09ORFMsdGhpcy5fZWFzaW5nTW9kZT10Ll9ERUZBVUxUX0VBU0lOR19NT0RFfXJldHVybiB0LnByb3RvdHlwZS50b3RhbFRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0QWRqdXN0ZWRJdGVyYXRpdmVEZWxheSh0KTtyZXR1cm4gdGhpcy5zdGFydERlbGF5KCkrZSpNYXRoLm1heCh0LTEsMCkrdGhpcy5zdGVwRHVyYXRpb24oKX0sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT0odD13Z3QuY29lcmNlRXh0ZXJuYWxEMyh0KSkuc2l6ZSgpLHI9dGhpcy5fZ2V0QWRqdXN0ZWRJdGVyYXRpdmVEZWxheShpKTtyZXR1cm4gdC50cmFuc2l0aW9uKCkuZWFzZSh0aGlzLl9nZXRFYXNlRmFjdG9yeSgpKS5kdXJhdGlvbih0aGlzLnN0ZXBEdXJhdGlvbigpKS5kZWxheSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zdGFydERlbGF5KCkrciplfSkpLmF0dHJzKGUpfSx0LnByb3RvdHlwZS5zdGFydERlbGF5PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N0YXJ0RGVsYXk6KHRoaXMuX3N0YXJ0RGVsYXk9dCx0aGlzKX0sdC5wcm90b3R5cGUuc3RlcER1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P01hdGgubWluKHRoaXMuX3N0ZXBEdXJhdGlvbix0aGlzLl9tYXhUb3RhbER1cmF0aW9uKToodGhpcy5fc3RlcER1cmF0aW9uPXQsdGhpcyl9LHQucHJvdG90eXBlLnN0ZXBEZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGVwRGVsYXk6KHRoaXMuX3N0ZXBEZWxheT10LHRoaXMpfSx0LnByb3RvdHlwZS5tYXhUb3RhbER1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heFRvdGFsRHVyYXRpb246KHRoaXMuX21heFRvdGFsRHVyYXRpb249dCx0aGlzKX0sdC5wcm90b3R5cGUuZWFzaW5nTW9kZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lYXNpbmdNb2RlOih0aGlzLl9lYXNpbmdNb2RlPXQsdGhpcyl9LHQucHJvdG90eXBlLl9nZXRFYXNlRmFjdG9yeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWFzaW5nTW9kZSgpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGU9U2d0W3RdO3JldHVybiBudWxsPT1lP1NndC5saW5lYXI6ZX1yZXR1cm4gdH0sdC5wcm90b3R5cGUuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXhUb3RhbER1cmF0aW9uKCktdGhpcy5zdGVwRHVyYXRpb24oKSxuPShlPU1hdGgubWF4KGUsMCkpL01hdGgubWF4KHQtMSwxKTtyZXR1cm4gTWF0aC5taW4odGhpcy5zdGVwRGVsYXkoKSxuKX0sdC5fREVGQVVMVF9TVEFSVF9ERUxBWV9NSUxMSVNFQ09ORFM9MCx0Ll9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTPTMwMCx0Ll9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFM9MTUsdC5fREVGQVVMVF9NQVhfVE9UQUxfRFVSQVRJT05fTUlMTElTRUNPTkRTPTEvMCx0Ll9ERUZBVUxUX0VBU0lOR19NT0RFPSJleHBPdXQiLHR9KSgpO21ndC5FYXNpbmc9TWd0O3ZhciBFZ3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEVndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFRndD1fZ3QsQ2d0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnRvdGFsVGltZT1mdW5jdGlvbih0KXtyZXR1cm4gMH0sdC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybih0PVRndC5jb2VyY2VFeHRlcm5hbEQzKHQpKS5hdHRycyhlKX0sdH0pKCk7RWd0Lk51bGw9Q2d0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKG1ndCx0KSxlLl9fZXhwb3J0U3RhcihFZ3QsdCl9KShmZ3QpO3ZhciBBZ3Q9e30sa2d0PXt9LFBndD17fSxMZ3Q9e30sSWd0PXt9LE5ndD17fSxSZ3Q9e30sT2d0PXt9LHpndD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoemd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRGd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jYWNoZT17fSx0aGlzLmNvbXB1dGU9dH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhY2hlLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5jYWNoZVt0XT10aGlzLmNvbXB1dGUodCkpLHRoaXMuY2FjaGVbdF19LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FjaGU9e30sdGhpc30sdH0pKCk7emd0LkNhY2hlPURndDt2YXIgQmd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBIZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcnJheUVxPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dHx8bnVsbD09ZSlyZXR1cm4gdD09PWU7aWYodC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5vYmpFcT1mdW5jdGlvbihlLG4pe2lmKG51bGw9PWV8fG51bGw9PW4pcmV0dXJuIGU9PT1uO3ZhciBpPU9iamVjdC5rZXlzKGUpLnNvcnQoKSxyPU9iamVjdC5rZXlzKG4pLnNvcnQoKSxvPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKSxhPXIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gblt0XX0pKTtyZXR1cm4gdC5hcnJheUVxKGkscikmJnQuYXJyYXlFcShvLGEpfSx0LnN0cmljdEVxPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfSx0LmRlZmF1bHRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7dmFyIGk9T2JqZWN0KHQpO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpZm9yKHZhciBlIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJihpW2VdPXRbZV0pfSkpLGl9LHR9KSgpO0JndC5NZXRob2RzPUhndDt2YXIgRmd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShGZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBWZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5jb21iaW5lV2hpdGVzcGFjZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bIFx0XSsvZywiICIpfSx0LmlzTm90RW1wdHlTdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiIiIT09dC50cmltKCl9LHQudHJpbVN0YXJ0PWZ1bmN0aW9uKGUsbil7aWYoIWUpcmV0dXJuIGU7dmFyIGk9ZS5zcGxpdCgiIikscj1uP2Z1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KG4pLnNvbWUodC5pc05vdEVtcHR5U3RyaW5nKX06dC5pc05vdEVtcHR5U3RyaW5nO3JldHVybiBpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcih0K2UpP3QrZTp0fSksIiIpfSx0LnRyaW1FbmQ9ZnVuY3Rpb24oZSxuKXtpZighZSlyZXR1cm4gZTt2YXIgaT1lLnNwbGl0KCIiKTtyZXR1cm4gaS5yZXZlcnNlKCksKGk9dC50cmltU3RhcnQoaS5qb2luKCIiKSxuKS5zcGxpdCgiIikpLnJldmVyc2UoKSxpLmpvaW4oIiIpfSx0fSkoKTtGZ3QuU3RyaW5nTWV0aG9kcz1WZ3Q7dmFyIFVndD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgamd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLldvcmREaXZpZGVyUmVnRXhwPW5ldyBSZWdFeHAoIlxcVyIpLHRoaXMuV2hpdGVzcGFjZVJlZ0V4cD1uZXcgUmVnRXhwKCJcXHMiKX1yZXR1cm4gdC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdC5zcGxpdCgiIikucmVkdWNlKChmdW5jdGlvbih0LG4pe3JldHVybiB0LnNsaWNlKDAsLTEpLmNvbmNhdChlLnNob3VsZENyZWF0ZU5ld1Rva2VuKHRbdC5sZW5ndGgtMV0sbikpfSksWyIiXSl9LHQucHJvdG90eXBlLnNob3VsZENyZWF0ZU5ld1Rva2VuPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuW2VdO3ZhciBuPXRbdC5sZW5ndGgtMV07cmV0dXJuIHRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KG4pJiZ0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChlKT9bdCtlXTp0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChuKXx8dGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3QoZSk/W3QsZV06dGhpcy5Xb3JkRGl2aWRlclJlZ0V4cC50ZXN0KG4pP249PT1lP1t0K2VdOlt0LGVdOlt0K2VdfSx0fSkoKTtVZ3QuVG9rZW5pemVyPWpndCwoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtmb3IodmFyIG4gaW4gZSl0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lW25dKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZSh6Z3QpLGUoQmd0KSxlKEZndCksZShVZ3QpfSkoT2d0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUmd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgR2d0PU9ndCxXZ3Q9e3RleHRSb3RhdGlvbjowLHRleHRTaGVhcjowLHhBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AifSxxZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fbWVhc3VyZXI9dCx0aGlzLl9wZW5GYWN0b3J5PWUsdGhpcy5fd3JhcHBlcj1ufXJldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWVhc3VyZXI9dCx0aGlzfSx0LnByb3RvdHlwZS53cmFwcGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl93cmFwcGVyPXQsdGhpc30sdC5wcm90b3R5cGUucGVuRmFjdG9yeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGVuRmFjdG9yeT10LHRoaXN9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsbixpLHIsbyl7aWYodm9pZCAwPT09ciYmKHI9e30pLHI9R2d0Lk1ldGhvZHMuZGVmYXVsdHMoe30sV2d0LHIpLC0xPT09dC5TdXBwb3J0ZWRSb3RhdGlvbi5pbmRleE9mKHIudGV4dFJvdGF0aW9uKSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHJvdGF0aW9uIC0gIityLnRleHRSb3RhdGlvbisiLiBTdXBwb3J0ZWQgcm90YXRpb25zIGFyZSAiK3QuU3VwcG9ydGVkUm90YXRpb24uam9pbigiLCAiKSk7aWYobnVsbCE9ci50ZXh0U2hlYXImJnIudGV4dFNoZWFyPC04MHx8ci50ZXh0U2hlYXI+ODApdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBzaGVhciBhbmdsZSAtICIrci50ZXh0U2hlYXIrIi4gTXVzdCBiZSBiZXR3ZWVuIC04MCBhbmQgODAiKTt2YXIgYT1NYXRoLmFicyhNYXRoLmFicyhyLnRleHRSb3RhdGlvbiktOTApPjQ1LHM9YT9uOmksbD1hP2k6bixjPXIudGV4dFNoZWFyLHU9YypNYXRoLlBJLzE4MCxoPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsZD1oKk1hdGgudGFuKHUpLHA9cy9NYXRoLmNvcyh1KS1NYXRoLmFicyhkKSxmPWwqTWF0aC5jb3ModSksbT1HZ3QuU3RyaW5nTWV0aG9kcy5jb21iaW5lV2hpdGVzcGFjZShlKSxnPSh0aGlzLl93cmFwcGVyP3RoaXMuX3dyYXBwZXIud3JhcChtLHRoaXMuX21lYXN1cmVyLHAsZikud3JhcHBlZFRleHQ6bSkuc3BsaXQoIlxuIiksXz10LlhPZmZzZXRGYWN0b3Jbci54QWxpZ25dKnAqTWF0aC5zaW4odSktdC5ZT2Zmc2V0RmFjdG9yW3IueUFsaWduXSooZi1nLmxlbmd0aCpoKSx5PVswLDBdLHY9ci50ZXh0Um90YXRpb24rYztzd2l0Y2goci50ZXh0Um90YXRpb24pe2Nhc2UgOTA6eT1bbitfLDBdO2JyZWFrO2Nhc2UtOTA6eT1bLV8saV07YnJlYWs7Y2FzZSAxODA6eT1bbixpK19dO2JyZWFrO2RlZmF1bHQ6eT1bMCwtX119dmFyIGI9dGhpcy5fcGVuRmFjdG9yeS5jcmVhdGVQZW4oZSx7dHJhbnNsYXRlOnkscm90YXRlOnZ9LG8pO3RoaXMud3JpdGVMaW5lcyhnLGIscCxoLGQsci54QWxpZ24pLG51bGwhPWIuZGVzdHJveSYmYi5kZXN0cm95KCl9LHQucHJvdG90eXBlLndyaXRlTGluZXM9ZnVuY3Rpb24odCxlLG4saSxyLG8pe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxhKXtlLndyaXRlKHQsbixvLHI+MD8oYSsxKSpyOmEqciwoYSsxKSppKX0pKX0sdH0pKCk7cWd0LlhPZmZzZXRGYWN0b3I9e2NlbnRlcjouNSxsZWZ0OjAscmlnaHQ6MX0scWd0LllPZmZzZXRGYWN0b3I9e2JvdHRvbToxLGNlbnRlcjouNSx0b3A6MH0scWd0LlN1cHBvcnRlZFJvdGF0aW9uPVstOTAsMCwxODAsOTBdLFJndC5Xcml0ZXI9cWd0LChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksKGZ1bmN0aW9uIGUobil7Zm9yKHZhciBpIGluIG4pdC5oYXNPd25Qcm9wZXJ0eShpKXx8KHRbaV09bltpXSl9KShSZ3QpfSkoTmd0KTt2YXIgWWd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShZZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBYZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcHBlbmQ9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIGk9W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspaVtyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz10LmNyZWF0ZS5hcHBseSh0LFtuXS5jb25jYXQoaSkpO3JldHVybiBlLmFwcGVuZENoaWxkKG8pLG99LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIHQuYWRkQ2xhc3Nlcy5hcHBseSh0LFtyXS5jb25jYXQobikpLHJ9LHQuYWRkQ2xhc3Nlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTtlPWUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSxudWxsIT10LmNsYXNzTGlzdD9lLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuY2xhc3NMaXN0LmFkZChlKX0pKTp0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLGUuam9pbigiICIpKX0sdC5nZXREaW1lbnNpb25zPWZ1bmN0aW9uKHQpe2lmKHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXRyeXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH19Y2F0Y2godCl7fXJldHVybntoZWlnaHQ6MCx3aWR0aDowfX0sdH0pKCk7WWd0Lkh0bWxVdGlscz1YZ3Q7dmFyICRndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0hMSk7dmFyIGk9dGhpczt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNsYXNzTmFtZT1lLHRoaXMuYWRkVGl0bGU9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPVhndC5hcHBlbmQoaS5lbGVtZW50LCJzcGFuIiwidGV4dC10bXAiLGkuY2xhc3NOYW1lKTtlLnRleHRDb250ZW50PXQ7dmFyIG49WGd0LmdldERpbWVuc2lvbnMoZSk7cmV0dXJuIGkuZWxlbWVudC5yZW1vdmVDaGlsZChlKSxufX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24odCxlLG4pe251bGw9PW4mJihuPWkuZWxlbWVudCk7dmFyIHI9WGd0LmFwcGVuZChuLCJkaXYiLCJ0ZXh0LWJsb2NrIixpLmNsYXNzTmFtZSk7cmV0dXJuIHIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixyLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIC0xZW0pIHRyYW5zbGF0ZSgiK2UudHJhbnNsYXRlWzBdKyJweCwgIitlLnRyYW5zbGF0ZVsxXSsicHgpIHJvdGF0ZSgiK2Uucm90YXRlKyJkZWcpIixyLnN0eWxlLnRyYW5zZm9ybU9yaWdpbj0iMCAxLjJlbSIsaS5hZGRUaXRsZSYmci5zZXRBdHRyaWJ1dGUoInRpdGxlIix0KSxpLmNyZWF0ZUh0bWxMaW5lUGVuKHIpfX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0QWRkVGl0bGU9ZnVuY3Rpb24odCl7dGhpcy5hZGRUaXRsZT10fSx0LnByb3RvdHlwZS5jcmVhdGVIdG1sTGluZVBlbj1mdW5jdGlvbih0KXtyZXR1cm57d3JpdGU6ZnVuY3Rpb24oZSxuLGkscixvKXt2YXIgYT1YZ3QuYXBwZW5kKHQsImRpdiIsInRleHQtbGluZSIpO2EudGV4dENvbnRlbnQ9ZSxhLnN0eWxlLndpZHRoPW4rInB4IixhLnN0eWxlLnRleHRBbGlnbj1pLGEuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixhLnN0eWxlLndoaXRlU3BhY2U9Im5vd3JhcCIsYS5zdHlsZS50b3A9bysicHgiLGEuc3R5bGUubGVmdD1yKyJweCJ9fX0sdH0pKCk7WWd0Lkh0bWxDb250ZXh0PSRndCxPYmplY3QuZGVmaW5lUHJvcGVydHkoSWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS2d0PU5ndCxaZ3Q9WWd0LEpndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmFwcGVuZD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgaT1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKylpW3ItMl09YXJndW1lbnRzW3JdO3ZhciBvPXQuY3JlYXRlLmFwcGx5KHQsW25dLmNvbmNhdChpKSk7cmV0dXJuIGUuYXBwZW5kQ2hpbGQobyksb30sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHX05TLGUpO3JldHVybiBaZ3QuSHRtbFV0aWxzLmFkZENsYXNzZXMuYXBwbHkoWmd0Lkh0bWxVdGlscyxbcl0uY29uY2F0KG4pKSxyfSx0LmdldERpbWVuc2lvbnM9ZnVuY3Rpb24odCl7aWYodC5nZXRCQm94KXRyeXt2YXIgZT10LmdldEJCb3goKTtyZXR1cm57d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9fWNhdGNoKHQpe31yZXR1cm57aGVpZ2h0OjAsd2lkdGg6MH19LHR9KSgpO0pndC5TVkdfTlM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixJZ3QuU3ZnVXRpbHM9Smd0O3ZhciBRZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXRoaXM7dGhpcy5lbGVtZW50PXQsdGhpcy5jbGFzc05hbWU9ZSx0aGlzLmFkZFRpdGxlRWxlbWVudD1uLHRoaXMuY3JlYXRlUnVsZXI9ZnVuY3Rpb24oKXt2YXIgdD1pLmdldFRleHRFbGVtZW50cyhpLmVsZW1lbnQpLGU9dC5wYXJlbnRFbGVtZW50LG49dC5jb250YWluZXJFbGVtZW50LHI9dC50ZXh0RWxlbWVudDtyZXR1cm4gZnVuY3Rpb24odCl7ZS5hcHBlbmRDaGlsZChuKSxyLnRleHRDb250ZW50PXQ7dmFyIGk9Smd0LmdldERpbWVuc2lvbnMocik7cmV0dXJuIGUucmVtb3ZlQ2hpbGQobiksaX19LHRoaXMuY3JlYXRlUGVuPWZ1bmN0aW9uKHQsZSxuKXtudWxsPT1uJiYobj1pLmVsZW1lbnQpO3ZhciByPUpndC5hcHBlbmQobiwiZyIsInRleHQtY29udGFpbmVyIixpLmNsYXNzTmFtZSk7aS5hZGRUaXRsZUVsZW1lbnQmJihKZ3QuYXBwZW5kKHIsInRpdGxlIikudGV4dENvbnRlbnQ9dCxyLnNldEF0dHJpYnV0ZSgidGl0bGUiLHQpKTt2YXIgbz1KZ3QuYXBwZW5kKHIsImciLCJ0ZXh0LWFyZWEiKTtyZXR1cm4gby5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2UudHJhbnNsYXRlWzBdKyIsIitlLnRyYW5zbGF0ZVsxXSsiKXJvdGF0ZSgiK2Uucm90YXRlKyIpIiksaS5jcmVhdGVTdmdMaW5lUGVuKG8pfX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0QWRkVGl0bGVFbGVtZW50PWZ1bmN0aW9uKHQpe3RoaXMuYWRkVGl0bGVFbGVtZW50PXR9LHQucHJvdG90eXBlLmNyZWF0ZVN2Z0xpbmVQZW49ZnVuY3Rpb24oZSl7cmV0dXJue3dyaXRlOmZ1bmN0aW9uKG4saSxyLG8sYSl7bys9aSpLZ3QuV3JpdGVyLlhPZmZzZXRGYWN0b3Jbcl07dmFyIHM9Smd0LmFwcGVuZChlLCJ0ZXh0IiwidGV4dC1saW5lIik7cy50ZXh0Q29udGVudD1uLHMuc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsdC5BbmNob3JNYXBbcl0pLHMuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvKyIsIithKyIpIikscy5zZXRBdHRyaWJ1dGUoInkiLCItMC4yNWVtIil9fX0sdC5wcm90b3R5cGUuZ2V0VGV4dEVsZW1lbnRzPWZ1bmN0aW9uKHQpe2lmKCJ0ZXh0Ij09PXQudGFnTmFtZSlyZXR1cm4gbnVsbD09KGU9dC5wYXJlbnRFbGVtZW50KSYmKGU9dC5wYXJlbnROb2RlKSxlLnJlbW92ZUNoaWxkKHQpLHtjb250YWluZXJFbGVtZW50OnQscGFyZW50RWxlbWVudDplLHRleHRFbGVtZW50OnR9O3ZhciBlLG49dC5xdWVyeVNlbGVjdG9yKCJ0ZXh0Iik7aWYobnVsbCE9bilyZXR1cm4gbnVsbD09KGU9bi5wYXJlbnRFbGVtZW50KSYmKGU9bi5wYXJlbnROb2RlKSxlLnJlbW92ZUNoaWxkKG4pLHtjb250YWluZXJFbGVtZW50Om4scGFyZW50RWxlbWVudDplLHRleHRFbGVtZW50Om59O3ZhciBpPUpndC5jcmVhdGUoInRleHQiLHRoaXMuY2xhc3NOYW1lKTtyZXR1cm57Y29udGFpbmVyRWxlbWVudDppLHBhcmVudEVsZW1lbnQ6dCx0ZXh0RWxlbWVudDppfX0sdH0pKCk7UWd0LkFuY2hvck1hcD17Y2VudGVyOiJtaWRkbGUiLGxlZnQ6InN0YXJ0IixyaWdodDoiZW5kIn0sSWd0LlN2Z0NvbnRleHQ9UWd0O3ZhciB0X3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHRfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGVfdD1OZ3Qsbl90PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZvaWQgMD09PWUmJihlPTEwKSx2b2lkIDA9PT1uJiYobj17fSk7dmFyIGk9dGhpczt0aGlzLmN0eD10LHRoaXMubGluZUhlaWdodD1lLHRoaXMuc3R5bGU9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLmN0eC5mb250PWkuc3R5bGUuZm9udCx7d2lkdGg6aS5jdHgubWVhc3VyZVRleHQodCkud2lkdGgsaGVpZ2h0OmkubGluZUhlaWdodH19fSx0aGlzLmNyZWF0ZVBlbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG51bGw9PW4mJihuPWkuY3R4KSxuLnNhdmUoKSxuLnRyYW5zbGF0ZShlLnRyYW5zbGF0ZVswXSxlLnRyYW5zbGF0ZVsxXSksbi5yb3RhdGUoZS5yb3RhdGUqTWF0aC5QSS8xODApLGkuY3JlYXRlQ2FudmFzUGVuKG4pfSx2b2lkIDA9PT10aGlzLnN0eWxlLmZpbGwmJih0aGlzLnN0eWxlLmZpbGw9IiM0NDQiKX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlQ2FudmFzUGVuPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJue2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0LnJlc3RvcmUoKX0sd3JpdGU6ZnVuY3Rpb24obixpLHIsbyxhKXtvKz1pKmVfdC5Xcml0ZXIuWE9mZnNldEZhY3RvcltyXSx0LnRleHRBbGlnbj1yLG51bGwhPWUuc3R5bGUuZm9udCYmKHQuZm9udD1lLnN0eWxlLmZvbnQpLG51bGwhPWUuc3R5bGUuZmlsbCYmKHQuZmlsbFN0eWxlPWUuc3R5bGUuZmlsbCx0LmZpbGxUZXh0KG4sbyxhKSksbnVsbCE9ZS5zdHlsZS5zdHJva2UmJih0LnN0cm9rZVN0eWxlPWUuc3R5bGUuZmlsbCx0LnN0cm9rZVRleHQobixvLGEpKX19fSx0fSkoKTt0X3QuQ2FudmFzQ29udGV4dD1uX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoSWd0KSxlKHRfdCksZShZZ3QpfSkoTGd0KTt2YXIgaV90PXt9LHJfdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocl90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb190PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5ydWxlcj1udWxsIT10LmNyZWF0ZVJ1bGVyP3QuY3JlYXRlUnVsZXIoKTp0fXJldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT10LkhFSUdIVF9URVhUKSx0aGlzLnJ1bGVyKGUpfSx0fSkoKTtvX3QuSEVJR0hUX1RFWFQ9ImJkcHFsIixyX3QuQWJzdHJhY3RNZWFzdXJlcj1vX3Q7dmFyIGFfdD17fSxzX3Q9e30sbF90PXt9LGNfdD1TZSYmU2UuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGxfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHVfdD1yX3QsaF90PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBpLnVzZUd1YXJkcz1uLGl9cmV0dXJuIGNfdChlLHQpLGUucHJvdG90eXBlLl9hZGRHdWFyZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHVfdC5BYnN0cmFjdE1lYXN1cmVyLkhFSUdIVF9URVhUK3QrdV90LkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFR9LGUucHJvdG90eXBlLl9tZWFzdXJlTGluZT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT10aGlzLnVzZUd1YXJkc3x8bnx8L15bXHQgXSQvLnRlc3QoZSkscj1pP3RoaXMuX2FkZEd1YXJkcyhlKTplLG89dC5wcm90b3R5cGUubWVhc3VyZS5jYWxsKHRoaXMscik7cmV0dXJuIG8ud2lkdGgtPWk/Mip0aGlzLmdldEd1YXJkV2lkdGgoKTowLG99LGUucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih2b2lkIDA9PT10JiYodD11X3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCksIiI9PT10LnRyaW0oKSlyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIG49dC50cmltKCkuc3BsaXQoIlxuIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbWVhc3VyZUxpbmUodCl9KSk7cmV0dXJue2hlaWdodDpuLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmhlaWdodH0pLDApLHdpZHRoOm4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUud2lkdGgpfSksMCl9fSxlLnByb3RvdHlwZS5nZXRHdWFyZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuZ3VhcmRXaWR0aCYmKHRoaXMuZ3VhcmRXaWR0aD10LnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcykud2lkdGgpLHRoaXMuZ3VhcmRXaWR0aH0sZX0pKHVfdC5BYnN0cmFjdE1lYXN1cmVyKTtsX3QuTWVhc3VyZXI9aF90O3ZhciBkX3Q9U2UmJlNlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBwX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBkX3QoZSx0KSxlLnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX21lYXN1cmVMaW5lLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX21lYXN1cmVMaW5lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9tZWFzdXJlQ2hhcmFjdGVyKHQpfSkpO3JldHVybntoZWlnaHQ6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS5oZWlnaHQpfSksMCksd2lkdGg6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS53aWR0aH0pLDApfX0sZX0pKGxfdC5NZWFzdXJlcik7c190LkNoYXJhY3Rlck1lYXN1cmVyPXBfdDt2YXIgZl90PVNlJiZTZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihpLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgaSl9fSkoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYV90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbV90PU9ndCxnX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLmNhY2hlPW5ldyBtX3QuQ2FjaGUoKGZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlKHQpfSkpLGl9cmV0dXJuIGZfdChlLHQpLGUucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlci5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhY2hlLmdldCh0KX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmNhY2hlLmNsZWFyKCl9LGV9KShzX3QuQ2hhcmFjdGVyTWVhc3VyZXIpO2FfdC5DYWNoZUNoYXJhY3Rlck1lYXN1cmVyPWdfdDt2YXIgX190PXt9LHlfdD1TZSYmU2UuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KF9fdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZfdD1PZ3QsYl90PXJfdCx4X3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uZGltQ2FjaGU9bmV3IHZfdC5DYWNoZSgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVOb3RGcm9tQ2FjaGUodCl9KSksbn1yZXR1cm4geV90KGUsdCksZS5wcm90b3R5cGUuX21lYXN1cmVOb3RGcm9tQ2FjaGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLm1lYXN1cmUuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1iX3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCksdGhpcy5kaW1DYWNoZS5nZXQodCl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5kaW1DYWNoZS5jbGVhcigpLHQucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyl9LGV9KShhX3QuQ2FjaGVDaGFyYWN0ZXJNZWFzdXJlcik7X190LkNhY2hlTWVhc3VyZXI9eF90LChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe2Zvcih2YXIgbiBpbiBlKXQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlKHJfdCksZShhX3QpLGUoX190KSxlKHNfdCksZShsX3QpfSkoaV90KTt2YXIgd190PXt9LFNfdD17fSxNX3Q9e30sRV90PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShFX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBUX3Q9T2d0LENfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5tYXhMaW5lcygxLzApLHRoaXMudGV4dFRyaW1taW5nKCJlbGxpcHNpcyIpLHRoaXMuYWxsb3dCcmVha2luZ1dvcmRzKCExKSx0aGlzLl90b2tlbml6ZXI9bmV3IFRfdC5Ub2tlbml6ZXIsdGhpcy5fYnJlYWtpbmdDaGFyYWN0ZXI9Ii0ifXJldHVybiB0LnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhMaW5lczoodGhpcy5fbWF4TGluZXM9dCx0aGlzKX0sdC5wcm90b3R5cGUudGV4dFRyaW1taW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RleHRUcmltbWluZztpZigiZWxsaXBzaXMiIT09dCYmIm5vbmUiIT09dCl0aHJvdyBuZXcgRXJyb3IodCsiIC0gdW5zdXBwb3J0ZWQgdGV4dCB0cmltbWluZyBvcHRpb24uIik7cmV0dXJuIHRoaXMuX3RleHRUcmltbWluZz10LHRoaXN9LHQucHJvdG90eXBlLmFsbG93QnJlYWtpbmdXb3Jkcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbGxvd0JyZWFraW5nV29yZHM6KHRoaXMuX2FsbG93QnJlYWtpbmdXb3Jkcz10LHRoaXMpfSx0LnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXM7dm9pZCAwPT09aSYmKGk9MS8wKTt2YXIgbz17bm9Ccm9rZVdvcmRzOjAsbm9MaW5lczowLG9yaWdpbmFsVGV4dDp0LHRydW5jYXRlZFRleHQ6IiIsd3JhcHBlZFRleHQ6IiJ9LGE9e2F2YWlsYWJsZUxpbmVzOk1hdGgubWluKE1hdGguZmxvb3IoaS9lLm1lYXN1cmUoKS5oZWlnaHQpLHRoaXMuX21heExpbmVzKSxhdmFpbGFibGVXaWR0aDpuLGNhbkZpdFRleHQ6ITAsY3VycmVudExpbmU6IiIsd3JhcHBpbmc6b30scz10LnNwbGl0KCJcbiIpO3JldHVybiBzLnJlZHVjZSgoZnVuY3Rpb24odCxuLGkpe3JldHVybiByLmJyZWFrTGluZVRvRml0V2lkdGgodCxuLGkhPT1zLmxlbmd0aC0xLGUpfSksYSkud3JhcHBpbmd9LHQucHJvdG90eXBlLmJyZWFrTGluZVRvRml0V2lkdGg9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dGhpczt0LmNhbkZpdFRleHR8fCIiPT09dC53cmFwcGluZy50cnVuY2F0ZWRUZXh0fHwodC53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz0iXG4iKSx0PXRoaXMuX3Rva2VuaXplci50b2tlbml6ZShlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIud3JhcE5leHRUb2tlbihlLHQsaSl9KSx0KTt2YXIgbz1UX3QuU3RyaW5nTWV0aG9kcy50cmltRW5kKHQuY3VycmVudExpbmUpO3JldHVybiB0LndyYXBwaW5nLm5vTGluZXMrPSsoIiIhPT1vKSx0LndyYXBwaW5nLm5vTGluZXM9PT10LmF2YWlsYWJsZUxpbmVzJiYibm9uZSIhPT10aGlzLl90ZXh0VHJpbW1pbmcmJm4/dC5jYW5GaXRUZXh0PSExOnQud3JhcHBpbmcud3JhcHBlZFRleHQrPW8sdC5jdXJyZW50TGluZT0iXG4iLHR9LHQucHJvdG90eXBlLmNhbkZpdFRva2VuPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dC5zcGxpdCgiIikubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBuIT09dC5sZW5ndGgtMT9lK2kuX2JyZWFraW5nQ2hhcmFjdGVyOmV9KSk7cmV0dXJuIG4ubWVhc3VyZSh0KS53aWR0aDw9ZXx8ci5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIG4ubWVhc3VyZSh0KS53aWR0aDw9ZX0pKX0sdC5wcm90b3R5cGUuYWRkRWxsaXBzaXM9ZnVuY3Rpb24odCxlLG4pe2lmKCJub25lIj09PXRoaXMuX3RleHRUcmltbWluZylyZXR1cm57cmVtYWluaW5nVG9rZW46IiIsd3JhcHBlZFRva2VuOnR9O3ZhciBpPXQuc3Vic3RyaW5nKDApLnRyaW0oKSxyPW4ubWVhc3VyZShpKS53aWR0aCxvPW4ubWVhc3VyZSgiLi4uIikud2lkdGgsYT10Lmxlbmd0aD4wJiYiXG4iPT09dFswXT8iXG4iOiIiO2lmKGU8PW8pe3ZhciBzPU1hdGguZmxvb3IoZS8oby8zKSk7cmV0dXJue3JlbWFpbmluZ1Rva2VuOnQsd3JhcHBlZFRva2VuOmErIi4uLiIuc3Vic3RyKDAscyl9fWZvcig7citvPmU7KWk9VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZChpLnN1YnN0cigwLGkubGVuZ3RoLTEpKSxyPW4ubWVhc3VyZShpKS53aWR0aDtyZXR1cm57cmVtYWluaW5nVG9rZW46VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZCh0LnN1YnN0cmluZyhpLmxlbmd0aCksIi0iKS50cmltKCksd3JhcHBlZFRva2VuOmEraSsiLi4uIn19LHQucHJvdG90eXBlLndyYXBOZXh0VG9rZW49ZnVuY3Rpb24odCxlLG4pe2lmKCFlLmNhbkZpdFRleHR8fGUuYXZhaWxhYmxlTGluZXM9PT1lLndyYXBwaW5nLm5vTGluZXN8fCF0aGlzLmNhbkZpdFRva2VuKHQsZS5hdmFpbGFibGVXaWR0aCxuKSlyZXR1cm4gdGhpcy5maW5pc2hXcmFwcGluZyh0LGUsbik7Zm9yKHZhciBpPXQ7aTspe3ZhciByPXRoaXMuYnJlYWtUb2tlblRvRml0SW5XaWR0aChpLGUuY3VycmVudExpbmUsZS5hdmFpbGFibGVXaWR0aCxuKTtpZihlLmN1cnJlbnRMaW5lPXIubGluZSxudWxsIT0oaT1yLnJlbWFpbmluZ1Rva2VuKSl7aWYoZS53cmFwcGluZy5ub0Jyb2tlV29yZHMrPStyLmJyZWFrV29yZCwrK2Uud3JhcHBpbmcubm9MaW5lcyxlLmF2YWlsYWJsZUxpbmVzPT09ZS53cmFwcGluZy5ub0xpbmVzKXt2YXIgbz10aGlzLmFkZEVsbGlwc2lzKGUuY3VycmVudExpbmUsZS5hdmFpbGFibGVXaWR0aCxuKTtyZXR1cm4gZS53cmFwcGluZy53cmFwcGVkVGV4dCs9by53cmFwcGVkVG9rZW4sZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1vLnJlbWFpbmluZ1Rva2VuK2ksZS5jdXJyZW50TGluZT0iXG4iLGV9ZS53cmFwcGluZy53cmFwcGVkVGV4dCs9VF90LlN0cmluZ01ldGhvZHMudHJpbUVuZChlLmN1cnJlbnRMaW5lKSxlLmN1cnJlbnRMaW5lPSJcbiJ9fXJldHVybiBlfSx0LnByb3RvdHlwZS5maW5pc2hXcmFwcGluZz1mdW5jdGlvbih0LGUsbil7aWYoZS5jYW5GaXRUZXh0JiZlLmF2YWlsYWJsZUxpbmVzIT09ZS53cmFwcGluZy5ub0xpbmVzJiYibm9uZSIhPT10aGlzLl90ZXh0VHJpbW1pbmcpe3ZhciBpPXRoaXMuYWRkRWxsaXBzaXMoZS5jdXJyZW50TGluZSt0LGUuYXZhaWxhYmxlV2lkdGgsbik7ZS53cmFwcGluZy53cmFwcGVkVGV4dCs9aS53cmFwcGVkVG9rZW4sZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1pLnJlbWFpbmluZ1Rva2VuLGUud3JhcHBpbmcubm9Ccm9rZVdvcmRzKz0rKGkucmVtYWluaW5nVG9rZW4ubGVuZ3RoPHQubGVuZ3RoKSxlLndyYXBwaW5nLm5vTGluZXMrPSsoaS53cmFwcGVkVG9rZW4ubGVuZ3RoPjApLGUuY3VycmVudExpbmU9IiJ9ZWxzZSBlLndyYXBwaW5nLnRydW5jYXRlZFRleHQrPXQ7cmV0dXJuIGUuY2FuRml0VGV4dD0hMSxlfSx0LnByb3RvdHlwZS5icmVha1Rva2VuVG9GaXRJbldpZHRoPWZ1bmN0aW9uKHQsZSxuLGkscil7aWYodm9pZCAwPT09ciYmKHI9dGhpcy5fYnJlYWtpbmdDaGFyYWN0ZXIpLGkubWVhc3VyZShlK3QpLndpZHRoPD1uKXJldHVybnticmVha1dvcmQ6ITEsbGluZTplK3QscmVtYWluaW5nVG9rZW46bnVsbH07aWYoIiI9PT10LnRyaW0oKSlyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSxyZW1haW5pbmdUb2tlbjoiIn07aWYoIXRoaXMuX2FsbG93QnJlYWtpbmdXb3JkcyYmIiIhPT1lLnRyaW0oKSlyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSxyZW1haW5pbmdUb2tlbjp0fTtmb3IodmFyIG89MDtvPHQubGVuZ3RoJiZpLm1lYXN1cmUoZSt0LnN1YnN0cmluZygwLG8rMSkrcikud2lkdGg8PW47KSsrbzt2YXIgYT0iIjtyZXR1cm4gbz4wJiYoYT1yKSx7YnJlYWtXb3JkOm8+MCxsaW5lOmUrdC5zdWJzdHJpbmcoMCxvKSthLHJlbWFpbmluZ1Rva2VuOnQuc3Vic3RyaW5nKG8pfX0sdH0pKCk7RV90LldyYXBwZXI9Q190O3ZhciBBX3Q9U2UmJlNlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShNX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrX3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBBX3QoZSx0KSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKG4saSxyLG8pe3ZhciBhPXRoaXM7aWYodm9pZCAwPT09byYmKG89MS8wKSxuLnNwbGl0KCJcbiIpLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiU2luZ2xlTGluZVdyYXBwZXIgaXMgZGVzaWduZWQgdG8gd29yayBvbmx5IG9uIHNpbmdsZSBsaW5lIik7dmFyIHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLndyYXAuY2FsbChhLG4saSxlLG8pfSxsPXMocik7aWYobC5ub0xpbmVzPDIpcmV0dXJuIGw7Zm9yKHZhciBjPTAsdT1yLGg9MDtoPGUuTk9fV1JBUF9JVEVSQVRJT05TJiZ1PmM7KytoKXt2YXIgZD0odStjKS8yLHA9cyhkKTt0aGlzLmFyZVNhbWVSZXN1bHRzKGwscCk/KHU9ZCxsPXApOmM9ZH1yZXR1cm4gbH0sZS5wcm90b3R5cGUuYXJlU2FtZVJlc3VsdHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5ub0xpbmVzPT09ZS5ub0xpbmVzJiZ0LnRydW5jYXRlZFRleHQ9PT1lLnRydW5jYXRlZFRleHR9LGV9KShFX3QuV3JhcHBlcik7a190Lk5PX1dSQVBfSVRFUkFUSU9OUz01LE1fdC5TaW5nbGVMaW5lV3JhcHBlcj1rX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoTV90KSxlKEVfdCl9KShTX3QpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3X3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBQX3Q9TGd0LExfdD1pX3QsSV90PVNfdCxOX3Q9Tmd0LFJfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY29udGV4dD10LHRoaXMubWVhc3VyZXI9bmV3IExfdC5DYWNoZU1lYXN1cmVyKHRoaXMuY29udGV4dCksdGhpcy53cmFwcGVyPW5ldyBJX3QuV3JhcHBlcix0aGlzLndyaXRlcj1uZXcgTl90LldyaXRlcih0aGlzLm1lYXN1cmVyLHRoaXMuY29udGV4dCx0aGlzLndyYXBwZXIpfXJldHVybiB0LnN2Zz1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG5ldyB0KG5ldyBQX3QuU3ZnQ29udGV4dChlLG4saSkpfSx0LmNhbnZhcz1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG5ldyB0KG5ldyBQX3QuQ2FudmFzQ29udGV4dChlLG4saSkpfSx0Lmh0bWw9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBuZXcgdChuZXcgUF90Lkh0bWxDb250ZXh0KGUsbixpKSl9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxuLGkscil7dGhpcy53cml0ZXIud3JpdGUodCxlLG4saSxyKX0sdC5wcm90b3R5cGUuY2xlYXJNZWFzdXJlckNhY2hlPWZ1bmN0aW9uKCl7dGhpcy5tZWFzdXJlci5yZXNldCgpfSx0fSkoKTt3X3QuVHlwZXNldHRlcj1SX3QsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoTGd0KSxlKGlfdCksZSh3X3QpLGUoT2d0KSxlKFNfdCksZShOZ3QpfSkoUGd0KTt2YXIgT190PXt9LHpfdD17fSxEX3Q9e30sQl90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoQl90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSF90PXdwdCxGX3Q9d2luZG93LkFycmF5O0JfdC5hZGQ9ZnVuY3Rpb24gVl90KHQsZSl7aWYodC5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImF0dGVtcHRlZCB0byBhZGQgYXJyYXlzIG9mIHVuZXF1YWwgbGVuZ3RoIik7cmV0dXJuIHQubWFwKChmdW5jdGlvbihuLGkpe3JldHVybiB0W2ldK2VbaV19KSl9LEJfdC51bmlxPWZ1bmN0aW9uIFVfdCh0KXt2YXIgZT1IX3Quc2V0KCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmhhcyhTdHJpbmcodCkpfHwoZS5hZGQoU3RyaW5nKHQpKSxuLnB1c2godCkpfSkpLG59LEJfdC5mbGF0dGVuPWZ1bmN0aW9uIGpfdCh0KXtyZXR1cm4gRl90LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sdCl9LEJfdC5jcmVhdGVGaWxsZWRBcnJheT1mdW5jdGlvbiBHX3QodCxlKXtmb3IodmFyIG49W10saT0wO2k8ZTtpKyspbltpXT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOnQ7cmV0dXJuIG59O3ZhciBXX3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFdfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHFfdD13cHQsWV90PXdpbmRvdy5NYXRoO2Z1bmN0aW9uIFhfdCh0KXt2YXIgZT1xX3QucmdiKHQpLG49ZnVuY3Rpb24odCl7cmV0dXJuKHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOllfdC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX07cmV0dXJuLjIxMjYqbihlLnIpKy43MTUyKm4oZS5nKSsuMDcyMipuKGUuYil9V190LmNvbnRyYXN0PWZ1bmN0aW9uICRfdCh0LGUpe3ZhciBuPVhfdCh0KSsuMDUsaT1YX3QoZSkrLjA1O3JldHVybiBuPmk/bi9pOmkvbn0sV190LmxpZ2h0ZW5Db2xvcj1mdW5jdGlvbiBLX3QodCxlKXtyZXR1cm4gcV90LmNvbG9yKHQpLmJyaWdodGVyKGUpLnJnYigpLnRvU3RyaW5nKCl9LFdfdC5jb2xvclRlc3Q9ZnVuY3Rpb24gWl90KHQsZSl7dC5jbGFzc2VkKGUsITApO3ZhciBuPXQuc3R5bGUoImJhY2tncm91bmQtY29sb3IiKTtpZigidHJhbnNwYXJlbnQiPT09bilyZXR1cm4gbnVsbDt2YXIgaT0vXCgoLispXCkvLmV4ZWMobik7aWYoIWkpcmV0dXJuIG51bGw7dmFyIHI9aVsxXS5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9K3Qsbj1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gZTwxNj8iMCIrbjpufSkpO2lmKDQ9PT1yLmxlbmd0aCYmIjAwIj09PXJbM10pcmV0dXJuIG51bGw7dmFyIG89IiMiK3Iuam9pbigiIik7cmV0dXJuIHQuY2xhc3NlZChlLCExKSxvfTt2YXIgSl90PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT13cHQsbj13aW5kb3cuTWF0aDtmdW5jdGlvbiBpKHQpe3ZhciBlO3RyeXtlPXQubm9kZSgpLmdldEJCb3goKX1jYXRjaCh0KXtlPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fXJldHVybiBlfXQuY29udGFpbnM9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj1lO251bGwhPW4mJm4hPT10OyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbj09PXR9LHQuZWxlbWVudEJCb3g9aSx0LmVudGl0eUJvdW5kcz1mdW5jdGlvbiBvKHQpe2lmKHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50KXJldHVybiBpKGUuc2VsZWN0KHQpKTtpZih0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe3ZhciBuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3g6bi5sZWZ0LHk6bi50b3Asd2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9fXJldHVybnt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fSx0LlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTPTFlMy82MCx0LnJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsPWZ1bmN0aW9uIGEoZSl7bnVsbCE9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpOnNldFRpbWVvdXQoZSx0LlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTKX0sdC5lbGVtZW50V2lkdGg9ZnVuY3Rpb24gcyh0KXt2YXIgbj10IGluc3RhbmNlb2YgZS5zZWxlY3Rpb24/dC5ub2RlKCk6dCxpPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG4pO3JldHVybiBtKGksIndpZHRoIikrbShpLCJwYWRkaW5nLWxlZnQiKSttKGksInBhZGRpbmctcmlnaHQiKSttKGksImJvcmRlci1sZWZ0LXdpZHRoIikrbShpLCJib3JkZXItcmlnaHQtd2lkdGgiKX0sdC5lbGVtZW50SGVpZ2h0PWZ1bmN0aW9uIGwodCl7dmFyIG49dCBpbnN0YW5jZW9mIGUuc2VsZWN0aW9uP3Qubm9kZSgpOnQsaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuKTtyZXR1cm4gbShpLCJoZWlnaHQiKSttKGksInBhZGRpbmctdG9wIikrbShpLCJwYWRkaW5nLWJvdHRvbSIpK20oaSwiYm9yZGVyLXRvcC13aWR0aCIpK20oaSwiYm9yZGVyLWJvdHRvbS13aWR0aCIpfTt2YXIgYz0iKD86Wy0rXT9bMC05XSpcXC4/WzAtOV0rKSIsdT0iKD86KD86XFxzKyw/XFxzKil8KD86LFxccyopKSIsaD1uZXcgUmVnRXhwKCJ0cmFuc2xhdGVcXHMqXFwoXFxzKigiK2MrIikoPzoiK3UrIigiK2MrIikpPyIrIlxccypcXCkiKSxkPW5ldyBSZWdFeHAoInJvdGF0ZVxccypcXChcXHMqKCIrYysiKSIrIlxccypcXCkiKSxwPW5ldyBSZWdFeHAoInNjYWxlXFxzKlxcKFxccyooIitjKyIpKD86Iit1KyIoIitjKyIpKT8iKyJcXHMqXFwpIik7ZnVuY3Rpb24gZih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpe3JldHVybnttaW46dCxtYXg6dH19aWYodCBpbnN0YW5jZW9mIE9iamVjdCYmIm1pbiJpbiB0JiYibWF4ImluIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJpbnB1dCAnIit0KyInIGNhbid0IGJlIHBhcnNlZCBhcyBhbiBSYW5nZSIpfWZ1bmN0aW9uIG0odCxlKXt2YXIgbj10LmdldFByb3BlcnR5VmFsdWUoZSk7cmV0dXJuIHBhcnNlRmxvYXQobil8fDB9dC5nZXRUcmFuc2xhdGVWYWx1ZXM9ZnVuY3Rpb24gZyh0KXt2YXIgZT1oLmV4ZWModC5hdHRyKCJ0cmFuc2Zvcm0iKSk7aWYobnVsbCE9ZSl7dmFyIG49ZVsyXTtyZXR1cm5bK2VbMV0sKyh2b2lkIDA9PT1uPzA6bildfXJldHVyblswLDBdfSx0LmdldFJvdGF0ZT1mdW5jdGlvbiBfKHQpe3ZhciBlPWQuZXhlYyh0LmF0dHIoInRyYW5zZm9ybSIpKTtyZXR1cm4gbnVsbCE9ZT8rZVsxXTowfSx0LmdldFNjYWxlVmFsdWVzPWZ1bmN0aW9uIHkodCl7dmFyIGU9cC5leGVjKHQuYXR0cigidHJhbnNmb3JtIikpO2lmKG51bGwhPWUpe3ZhciBuPWVbMV0saT1lWzJdO3JldHVyblsrbixudWxsPT1pPytuOitpXX1yZXR1cm5bMCwwXX0sdC5jbGllbnRSZWN0c092ZXJsYXA9ZnVuY3Rpb24gdih0LGUpe3JldHVybiEobi5mbG9vcih0LnJpZ2h0KTw9bi5jZWlsKGUubGVmdCkpJiYoIShuLmNlaWwodC5sZWZ0KT49bi5mbG9vcihlLnJpZ2h0KSkmJighKG4uZmxvb3IodC5ib3R0b20pPD1uLmNlaWwoZS50b3ApKSYmIShuLmNlaWwodC50b3ApPj1uLmZsb29yKGUuYm90dG9tKSkpKX0sdC5leHBhbmRSZWN0PWZ1bmN0aW9uIGIodCxlKXtyZXR1cm57bGVmdDp0LmxlZnQtZSx0b3A6dC50b3AtZSxyaWdodDp0LnJpZ2h0K2UsYm90dG9tOnQuYm90dG9tK2Usd2lkdGg6dC53aWR0aCsyKmUsaGVpZ2h0OnQuaGVpZ2h0KzIqZX19LHQuY2xpZW50UmVjdEluc2lkZT1mdW5jdGlvbiB4KHQsZSl7cmV0dXJuIG4uZmxvb3IoZS5sZWZ0KTw9bi5jZWlsKHQubGVmdCkmJm4uZmxvb3IoZS50b3ApPD1uLmNlaWwodC50b3ApJiZuLmZsb29yKHQucmlnaHQpPD1uLmNlaWwoZS5yaWdodCkmJm4uZmxvb3IodC5ib3R0b20pPD1uLmNlaWwoZS5ib3R0b20pfSx0LmludGVyc2VjdHNCQm94PWZ1bmN0aW9uIHcodCxlLG4saSl7dm9pZCAwPT09aSYmKGk9LjUpO3ZhciByPWYodCksbz1mKGUpO3JldHVybiBuLngrbi53aWR0aD49ci5taW4taSYmbi54PD1yLm1heCtpJiZuLnkrbi5oZWlnaHQ+PW8ubWluLWkmJm4ueTw9by5tYXgraX0sdC5nZXRIdG1sRWxlbWVudEFuY2VzdG9ycz1mdW5jdGlvbiBTKHQpe2Zvcih2YXIgZT1bXTt0JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7KWUucHVzaCh0KSx0PXQucGFyZW50RWxlbWVudDtyZXR1cm4gZX0sdC5nZXRFbGVtZW50VHJhbnNmb3JtPWZ1bmN0aW9uIE0odCl7dmFyIGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCxudWxsKTtyZXR1cm4oZnVuY3Rpb24gbih0KXtpZihudWxsPT10fHwibm9uZSI9PT10KXJldHVybiBudWxsO3ZhciBlPXQubWF0Y2goRSk7aWYobnVsbD09ZXx8ZS5sZW5ndGg8MilyZXR1cm4gbnVsbDt2YXIgbj1lWzFdLnNwbGl0KFQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSk7aWYoNiE9bi5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIG59KShlLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW1vei10cmFuc2Zvcm0iKXx8ZS5nZXRQcm9wZXJ0eVZhbHVlKCItbXMtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW8tdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikpfTt2YXIgRT0vXm1hdHJpeFwoKFteKV0rKVwpJC8sVD0vWywgXSsvfSkoSl90KTt2YXIgUV90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShRX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0eXQ9d3B0LGV5dD1KX3Qsbnl0PXdpbmRvdy5NYXRoLGl5dD1bMSwwLDAsMSwwLDBdO2Z1bmN0aW9uIHJ5dCh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfWZ1bmN0aW9uIG95dCh0LGUpe3JldHVyblt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbMF0qZVswXSt0WzJdKmVbMV0rdFs0XSx0WzFdKmVbMF0rdFszXSplWzFdK3RbNV1dfWZ1bmN0aW9uIGF5dCh0KXt2YXIgZT10WzBdKnRbM10tdFsxXSp0WzJdO2lmKDA9PT1lKXRocm93IG5ldyBFcnJvcigic2luZ3VsYXIgbWF0cml4Iik7dmFyIG49MS9lO3JldHVybltuKnRbM10sbiotdFsxXSxuKi10WzJdLG4qdFswXSxuKigtdFszXSp0WzRdK3RbMl0qdFs1XSksbioodFsxXSp0WzRdKy10WzBdKnRbNV0pXX1RX3QuaW5SYW5nZT1mdW5jdGlvbiBzeXQodCxlLG4pe3JldHVybiBueXQubWluKGUsbik8PXQmJnQ8PW55dC5tYXgoZSxuKX0sUV90LmNsYW1wPWZ1bmN0aW9uIGx5dCh0LGUsbil7cmV0dXJuIG55dC5taW4obnl0Lm1heChlLHQpLG4pfSxRX3QubWF4PWZ1bmN0aW9uIGN5dCh0LGUsbil7dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHI9bnVsbD09aT9lOm4sbz1udWxsPT1pP3R5dC5tYXgodCk6dHl0Lm1heCh0LGkpO3JldHVybiB2b2lkIDAhPT1vP286cn0sUV90Lm1pbj1mdW5jdGlvbiB1eXQodCxlLG4pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCxyPW51bGw9PWk/ZTpuLG89bnVsbD09aT90eXQubWluKHQpOnR5dC5taW4odCxpKTtyZXR1cm4gdm9pZCAwIT09bz9vOnJ9LFFfdC5pc05hTj1mdW5jdGlvbiBoeXQodCl7cmV0dXJuIHQhPXR9LFFfdC5pc1ZhbGlkTnVtYmVyPWZ1bmN0aW9uIGR5dCh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQtdDwxfSxRX3QucmFuZ2U9ZnVuY3Rpb24gcHl0KHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0xKSwwPT09bil0aHJvdyBuZXcgRXJyb3IoInN0ZXAgY2Fubm90IGJlIDAiKTtmb3IodmFyIGk9bnl0Lm1heChueXQuY2VpbCgoZS10KS9uKSwwKSxyPVtdLG89MDtvPGk7KytvKXJbb109dCtuKm87cmV0dXJuIHJ9LFFfdC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24gZnl0KHQsZSl7cmV0dXJuIG55dC5wb3coZS55LXQueSwyKStueXQucG93KGUueC10LngsMil9LFFfdC5kZWdyZWVzVG9SYWRpYW5zPWZ1bmN0aW9uIG15dCh0KXtyZXR1cm4gdC8zNjAqbnl0LlBJKjJ9LFFfdC53aXRoaW49ZnVuY3Rpb24gZ3l0KHQsZSl7cmV0dXJuIGUudG9wTGVmdC54PD10LngmJmUuYm90dG9tUmlnaHQueD49dC54JiZlLnRvcExlZnQueTw9dC55JiZlLmJvdHRvbVJpZ2h0Lnk+PXQueX0sUV90LmJvdW5kc0ludGVyc2VjdHM9ZnVuY3Rpb24gX3l0KHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHQ8PXIrYSYmcjw9dCtuJiZlPD1vK3MmJm88PWUraX0sUV90LmdldEN1bXVsYXRpdmVUcmFuc2Zvcm09ZnVuY3Rpb24geXl0KHQpe2Zvcih2YXIgZT1leXQuZ2V0SHRtbEVsZW1lbnRBbmNlc3RvcnModCksbj1peXQsaT1udWxsLHI9MCxvPWU7cjxvLmxlbmd0aDtyKyspe3ZhciBhPW9bcl0scz1leXQuZ2V0RWxlbWVudFRyYW5zZm9ybShhKTtpZihudWxsIT1zKXt2YXIgbD1hLmNsaWVudFdpZHRoLzIsYz1hLmNsaWVudEhlaWdodC8yO249b3l0KG4sW2wsY10pLG49b3l0KG49cnl0KG4sYXl0KHMpKSxbLWwsLWNdKX12YXIgdT1hLnNjcm9sbExlZnQsaD1hLnNjcm9sbFRvcDtudWxsIT09aSYmYSE9PWl8fCh1LT1hLm9mZnNldExlZnQrYS5jbGllbnRMZWZ0LGgtPWEub2Zmc2V0VG9wK2EuY2xpZW50VG9wLGk9YS5vZmZzZXRQYXJlbnQpLG49b3l0KG4sW3UsaF0pfXJldHVybiBufSxRX3QubXVsdGlwbHlNYXRyaXg9cnl0LFFfdC5wcmVtdWx0aXBseVRyYW5zbGF0ZT1mdW5jdGlvbiB2eXQodCxlKXtyZXR1cm5bZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdK3RbMF0sZVs1XSt0WzFdXX0sUV90Lm11bHRpcGx5VHJhbnNsYXRlPW95dCxRX3QuaW52ZXJ0TWF0cml4PWF5dCxRX3QuYXBwbHlUcmFuc2Zvcm09ZnVuY3Rpb24gYnl0KHQsZSl7cmV0dXJue3g6dFswXSplLngrdFsyXSplLnkrdFs0XSx5OnRbMV0qZS54K3RbM10qZS55K3RbNV19fTt2YXIgeHl0PXt9LHd5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHd5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFN5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1NYXRoLmNlaWwodC5sZW5ndGgvMiksaT0wO2k8bjtpKyspZVswXS5pbnNlcnQodFtpXSk7Zm9yKGk9bjtpPHQubGVuZ3RoO2krKyllWzFdLmluc2VydCh0W2ldKX0sdH0pKCk7d3l0LlNwbGl0U3RyYXRlZ3lUcml2aWFsPVN5dDt2YXIgTXl0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHQ9dC5zbGljZSgpLHRoaXMuY2hvb3NlRmlyc3RTcGxpdCh0LGUpO3QubGVuZ3RoPjA7KXRoaXMuYWRkTmV4dCh0LGUpfSx0LnByb3RvdHlwZS5jaG9vc2VGaXJzdFNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTAsaT0wLHI9dC5sZW5ndGgtMSxvPXQubGVuZ3RoLTEsYT0xO2E8dC5sZW5ndGgtMTthKyspe3ZhciBzPXRbYV07cy5ib3VuZHMueGw+dFtyXS5ib3VuZHMueGw/cj1hOnMuYm91bmRzLnhoPHRbbl0uYm91bmRzLnhoJiYobj1hKSxzLmJvdW5kcy55bD50W29dLmJvdW5kcy55bD9vPWE6cy5ib3VuZHMueWg8dFtpXS5ib3VuZHMueWgmJihpPWEpfXZhciBsPU1hdGguYWJzKHRbbl0uYm91bmRzLnhoLXRbcl0uYm91bmRzLnhsKT5NYXRoLmFicyh0W2ldLmJvdW5kcy55aC10W29dLmJvdW5kcy55bCk/W24scl06W2ksb10sYz1sWzBdLHU9bFsxXTtjPT09dSYmKGM9MCx1PXQubGVuZ3RoLTEpLGVbMF0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWF4KGMsdSksMSlbMF0pLGVbMV0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWluKGMsdSksMSlbMF0pfSx0LnByb3RvdHlwZS5hZGROZXh0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPW51bGwsaT1udWxsLHI9bnVsbCxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBhPXRbb10scz1lWzBdLnVuaW9uQXJlYURpZmZlcmVuY2UoYS5ib3VuZHMpLGw9ZVsxXS51bmlvbkFyZWFEaWZmZXJlbmNlKGEuYm91bmRzKTsoczxpfHxudWxsPT1uKSYmKG49byxpPXMscj1lWzBdKSxsPGkmJihuPW8saT1sLHI9ZVsxXSl9ci5pbnNlcnQodC5zcGxpY2UobiwxKVswXSl9LHR9KSgpO3d5dC5TcGxpdFN0cmF0ZWd5TGluZWFyPU15dCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZSxuPW5ldyB3eXQuU3BsaXRTdHJhdGVneUxpbmVhcjtmdW5jdGlvbiBpKHQsbixpKXt2YXIgcj0xLzAsbz0xLzA7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBzPW4oYS5ib3VuZHMsdCksbD1pKGEuYm91bmRzLHQpO3JldHVybiBudWxsIT1hLnZhbHVlP3M8cj8ocj1zLG89bCxlLlBBU1NfQU5EX09WRVJXUklURSk6cz09PXI/ZS5QQVNTOmUuRkFJTDpzPm8/ZS5GQUlMOihvPU1hdGgubWF4KGwsbyksZS5QQVNTKX19ZnVuY3Rpb24gcih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBlKGkuYm91bmRzLHQpLWUobi5ib3VuZHMsdCl9fSEoZnVuY3Rpb24odCl7dFt0LlBBU1M9MF09IlBBU1MiLHRbdC5GQUlMPTFdPSJGQUlMIix0W3QuUEFTU19BTkRfT1ZFUldSSVRFPTJdPSJQQVNTX0FORF9PVkVSV1JJVEUifSkoZT10LlF1ZXJ5UHJlZGljYXRlUmVzdWx0fHwodC5RdWVyeVByZWRpY2F0ZVJlc3VsdD17fSkpLHQuY3JlYXRlTWluaW1pemluZ05vZGVQcmVkaWNhdGU9aSx0LmNyZWF0ZU5vZGVTb3J0PXI7dmFyIG89KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PTUpLHZvaWQgMD09PWUmJihlPW4pLHRoaXMubWF4Tm9kZUNoaWxkcmVuPXQsdGhpcy5zcGxpdFN0cmF0ZWd5PWUsdGhpcy5yb290PW5ldyBhKCEwKSx0aGlzLnNpemU9MH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3R9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5yb290PW5ldyBhKCEwKSx0aGlzLnNpemU9MH0sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMucm9vdDshbi5sZWFmOyluPW4uc3VidHJlZSh0KTt2YXIgaT1hLnZhbHVlTm9kZSh0LGUpO2ZvcihuLmluc2VydChpKSx0aGlzLnNpemUrPTE7bi5vdmVyZmxvdyh0aGlzLm1heE5vZGVDaGlsZHJlbik7KW51bGw9PShuPW4uc3BsaXQodGhpcy5zcGxpdFN0cmF0ZWd5KSkucGFyZW50JiYodGhpcy5yb290PW4pO3JldHVybiBpfSx0LnByb3RvdHlwZS5sb2NhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnRhaW5zKHQpfSkpfSx0LnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPWkodCxzLmRpc3RhbmNlU3F1YXJlZFRvTmVhckVkZ2Uscy5kaXN0YW5jZVNxdWFyZWRUb0ZhckVkZ2UpO3JldHVybiB0aGlzLnF1ZXJ5Tm9kZXMoZSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKX0sdC5wcm90b3R5cGUubG9jYXRlTmVhcmVzdFg9ZnVuY3Rpb24odCl7dmFyIGU9aSh0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYLHMuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVgpLG49dGhpcy5xdWVyeU5vZGVzKGUpO3JldHVybiBuLnNvcnQocih0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKSksbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpfSx0LnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0WT1mdW5jdGlvbih0KXt2YXIgZT1pKHQscy5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVkscy5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWSksbj10aGlzLnF1ZXJ5Tm9kZXMoZSk7cmV0dXJuIG4uc29ydChyKHQscy5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgpKSxuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMuaXNCb3VuZHNPdmVybGFwQm91bmRzKGUsdCl9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBzLmlzQm91bmRzT3ZlcmxhcFgoZSx0KX0pKX0sdC5wcm90b3R5cGUuaW50ZXJzZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMuaXNCb3VuZHNPdmVybGFwWShlLHQpfSkpfSx0LnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0KXt2YXIgZT1bXTtpZihudWxsIT10aGlzLnJvb3QuYm91bmRzJiYhdCh0aGlzLnJvb3QuYm91bmRzKSlyZXR1cm4gZTtmb3IodmFyIG49W3RoaXMucm9vdF07bi5sZW5ndGg+MDspZm9yKHZhciBpPW4uc2hpZnQoKSxyPTA7cjxpLmVudHJpZXMubGVuZ3RoO3IrKyl7dmFyIG89aS5lbnRyaWVzW3JdO3Qoby5ib3VuZHMpJiYoaS5sZWFmP2UucHVzaChvLnZhbHVlKTpuLnB1c2gobykpfXJldHVybiBlfSx0LnByb3RvdHlwZS5xdWVyeU5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBuPVtdO2lmKG51bGwhPXRoaXMucm9vdC5ib3VuZHMmJnQodGhpcy5yb290KT09PWUuRkFJTClyZXR1cm4gbjtmb3IodmFyIGk9W3RoaXMucm9vdF07aS5sZW5ndGg+MDspZm9yKHZhciByPWkuc2hpZnQoKSxvPTA7bzxyLmVudHJpZXMubGVuZ3RoO28rKyl7dmFyIGE9ci5lbnRyaWVzW29dLHM9dChhKTtzPT09ZS5QQVNTX0FORF9PVkVSV1JJVEUmJihuPVtdKSxzIT09ZS5QQVNTJiZzIT09ZS5QQVNTX0FORF9PVkVSV1JJVEV8fChyLmxlYWY/bi5wdXNoKGEpOmkucHVzaChhKSl9cmV0dXJuIG59LHR9KSgpO3QuUlRyZWU9bzt2YXIgYT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMubGVhZj10LHRoaXMuYm91bmRzPW51bGwsdGhpcy5lbnRyaWVzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy52YWx1ZT1udWxsfXJldHVybiB0LnZhbHVlTm9kZT1mdW5jdGlvbihlLG4pe3ZhciBpPW5ldyB0KCEwKTtyZXR1cm4gaS5ib3VuZHM9ZSxpLnZhbHVlPW4saX0sdC5wcm90b3R5cGUub3ZlcmZsb3c9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW50cmllcy5sZW5ndGg+dH0sdC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQpe3RoaXMuZW50cmllcy5wdXNoKHQpLHQucGFyZW50PXRoaXM7Zm9yKHZhciBlPXRoaXM7bnVsbCE9ZTspZS5ib3VuZHM9cy51bmlvbkFsbChbZS5ib3VuZHMsdC5ib3VuZHNdKSxlPWUucGFyZW50O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbnRyaWVzLmluZGV4T2YodCk7aWYoZT49MCl7dGhpcy5lbnRyaWVzLnNwbGljZShlLDEpO2Zvcih2YXIgbj10aGlzO251bGwhPW47KW4uYm91bmRzPXMudW5pb25BbGwobi5lbnRyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYm91bmRzfSkpKSxuPW4ucGFyZW50fXJldHVybiB0aGlzfSx0LnByb3RvdHlwZS5zdWJ0cmVlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xLzAsbj1udWxsLGk9MDtpPHRoaXMuZW50cmllcy5sZW5ndGg7aSsrKXt2YXIgcj10aGlzLmVudHJpZXNbaV0sbz1yLnVuaW9uQXJlYURpZmZlcmVuY2UodCk7KG88ZXx8bz09PWUmJm51bGwhPW4mJnIuZW50cmllcy5sZW5ndGg8bi5lbnRyaWVzLmxlbmd0aCkmJihuPXIpfXJldHVybiBufSx0LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihlKXtudWxsIT10aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpO3ZhciBuPVtuZXcgdCh0aGlzLmxlYWYpLG5ldyB0KHRoaXMubGVhZildO2Uuc3BsaXQodGhpcy5lbnRyaWVzLG4pO3ZhciBpPW51bGwhPXRoaXMucGFyZW50P3RoaXMucGFyZW50Om5ldyB0KCExKTtyZXR1cm4gaS5pbnNlcnQoblswXSksaS5pbnNlcnQoblsxXSksaS5sZWFmPSExLGl9LHQucHJvdG90eXBlLnVuaW9uQXJlYURpZmZlcmVuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHMudW5pb24odGhpcy5ib3VuZHMsdCkuYXJlYSgpLXRoaXMuYm91bmRzLmFyZWEoKSl9LHQucHJvdG90eXBlLm1heERlcHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVhZj8xOjErdGhpcy5lbnRyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubWF4RGVwdGgoKX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSl9LHR9KSgpO3QuUlRyZWVOb2RlPWE7dmFyIHM9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixpKXt0aGlzLnhsPXQsdGhpcy55bD1lLHRoaXMueGg9bix0aGlzLnloPWksdGhpcy53aWR0aD10aGlzLnhoLXRoaXMueGwsdGhpcy5oZWlnaHQ9dGhpcy55aC10aGlzLnlsfXJldHVybiB0Lnh5d2g9ZnVuY3Rpb24oZSxuLGkscil7cmV0dXJuIG5ldyB0KGUsbixlK2ksbityKX0sdC5lbnRpdHlCb3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KGUueCxlLnksZS54K2Uud2lkdGgsZS55K2UuaGVpZ2h0KX0sdC5ib3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucG9pbnRQYWlyKGUudG9wTGVmdCxlLmJvdHRvbVJpZ2h0KX0sdC5wb2ludFBhaXI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbmV3IHQoTWF0aC5taW4oZS54LG4ueCksTWF0aC5taW4oZS55LG4ueSksTWF0aC5tYXgoZS54LG4ueCksTWF0aC5tYXgoZS55LG4ueSkpfSx0LnBvaW50cz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigibmVlZCBhdCBsZWFzdCAyIHBvaW50cyB0byBjcmVhdGUgYm91bmRzIik7dmFyIG49ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSksaT1lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKTtyZXR1cm4gbmV3IHQobi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZSl9KSksaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsZSl9KSksbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSksaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZSl9KSkpfSx0LnVuaW9uPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG5ldyB0KE1hdGgubWluKGUueGwsbi54bCksTWF0aC5taW4oZS55bCxuLnlsKSxNYXRoLm1heChlLnhoLG4ueGgpLE1hdGgubWF4KGUueWgsbi55aCkpfSx0LnVuaW9uQWxsPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpKS5sZW5ndGg/bnVsbDplLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC51bmlvbihlLG4pfSkpfSx0LmlzQm91bmRzT3ZlcmxhcEJvdW5kcz1mdW5jdGlvbihlLG4pe3JldHVybiB0LmlzQm91bmRzT3ZlcmxhcFgoZSxuKSYmdC5pc0JvdW5kc092ZXJsYXBZKGUsbil9LHQuaXNCb3VuZHNPdmVybGFwWD1mdW5jdGlvbih0LGUpe3JldHVybiEodC54aDxlLnhsfHx0LnhsPmUueGgpfSx0LmlzQm91bmRzT3ZlcmxhcFk9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKHQueWg8ZS55bHx8dC55bD5lLnloKX0sdC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVg9ZnVuY3Rpb24odCxlKXt2YXIgbj10LndpZHRoLzI7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKGUueC0odC54bCtuKSktbiwwKX0sdC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVk9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmhlaWdodC8yO3JldHVybiBNYXRoLm1heChNYXRoLmFicyhlLnktKHQueWwrbikpLW4sMCl9LHQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVg9ZnVuY3Rpb24oZSxuKXt2YXIgaT10LmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWChlLG4pO3JldHVybiAwPT09aT8wOmkrZS53aWR0aH0sdC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWT1mdW5jdGlvbihlLG4pe3ZhciBpPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKGUsbik7cmV0dXJuIDA9PT1pPzA6aStlLmhlaWdodH0sdC5kaXN0YW5jZVNxdWFyZWRUb05lYXJFZGdlPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgoZSxuKSxyPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZKGUsbik7cmV0dXJuIGkqaStyKnJ9LHQuZGlzdGFuY2VTcXVhcmVkVG9GYXJFZGdlPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWChlLG4pLHI9dC5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWShlLG4pO3JldHVybiBpKmkrcipyfSx0LnByb3RvdHlwZS5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuYXJlYUNhY2hlZCYmKHRoaXMuYXJlYUNhY2hlZD0odGhpcy54aC10aGlzLnhsKSoodGhpcy55aC10aGlzLnlsKSksdGhpcy5hcmVhQ2FjaGVkfSx0LnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54bDw9dC54JiZ0aGlzLnhoPj10LngmJnRoaXMueWw8PXQueSYmdGhpcy55aD49dC55fSx0fSkoKTt0LlJUcmVlQm91bmRzPXN9KSh4eXQpO3ZhciBFeXQ9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXdwdCxuPUNlLmV4cG9ydHMsaT1EX3Q7dC5JU3RhY2tpbmdPcmRlcj1iZ3QubWFrZUVudW0oWyJ0b3Bkb3duIiwiYm90dG9tdXAiXSk7dmFyIHI9d2luZG93Lk1hdGg7dC5zdGFjaz1mdW5jdGlvbiBvKG4scixhLHMpe3ZvaWQgMD09PXMmJihzPSJib3R0b211cCIpO3ZhciBsPWUubWFwKCksYz1lLm1hcCgpLHU9bmV3IGkuTWFwOyJ0b3Bkb3duIj09PXMmJihuPW4uc2xpY2UoKSkucmV2ZXJzZSgpO2Zvcih2YXIgaD0wLGQ9bjtoPGQubGVuZ3RoO2grKyl7Zm9yKHZhciBwPWRbaF0sZj1uZXcgaS5NYXAsbT1wLmRhdGEoKSxnPW0ubGVuZ3RoLF89MDtfPGc7XysrKXt2YXIgeT1tW19dLHY9cih5LF8scCksYj10Lm5vcm1hbGl6ZUtleSh2KSx4PSthKHksXyxwKSx3PXZvaWQgMCxTPXg+PTA/bDpjO1MuaGFzKGIpPyh3PVMuZ2V0KGIpLFMuc2V0KGIsdyt4KSk6KHc9MCxTLnNldChiLHgpKSxmLnNldChiLHtvZmZzZXQ6dyx2YWx1ZTp4LGF4aXNWYWx1ZTp2LG9yaWdpbmFsRGF0dW06eSxvcmlnaW5hbERhdGFzZXQ6cCxvcmlnaW5hbEluZGV4Ol99KX11LnNldChwLGYpfXJldHVybiB1fSx0LnN0YWNrZWRFeHRlbnRzPWZ1bmN0aW9uIGEodCl7dmFyIGU9bmV3IGkuTWFwLG49bmV3IGkuTWFwO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXt2YXIgbz10Lm9mZnNldCt0LnZhbHVlLGE9aS5NYXRoLm1heChbbyx0Lm9mZnNldF0sdC5vZmZzZXQpLHM9aS5NYXRoLm1pbihbbyx0Lm9mZnNldF0sdC5vZmZzZXQpLGw9dC5heGlzVmFsdWU7ZS5oYXMocik/ZS5nZXQocikuZXh0ZW50PGEmJmUuc2V0KHIse2V4dGVudDphLGF4aXNWYWx1ZTpsLHN0YWNrZWREYXR1bTp0fSk6ZS5zZXQocix7ZXh0ZW50OmEsYXhpc1ZhbHVlOmwsc3RhY2tlZERhdHVtOnR9KSxuLmhhcyhyKT9uLmdldChyKS5leHRlbnQ+cyYmbi5zZXQocix7ZXh0ZW50OnMsYXhpc1ZhbHVlOmwsc3RhY2tlZERhdHVtOnR9KTpuLnNldChyLHtleHRlbnQ6cyxheGlzVmFsdWU6bCxzdGFja2VkRGF0dW06dH0pfSkpfSkpLHttYXhpbXVtRXh0ZW50czplLG1pbmltdW1FeHRlbnRzOm59fSx0LnN0YWNrZWRFeHRlbnQ9ZnVuY3Rpb24gcyhlLG4sbyl7dmFyIGE9W107ZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2Zvcih2YXIgcj1pLmRhdGEoKSxzPXIubGVuZ3RoLGw9MDtsPHM7bCsrKXt2YXIgYz1yW2xdO2lmKG51bGw9PW98fG8oYyxsLGkpKXt2YXIgdT1lLmdldCh0Lm5vcm1hbGl6ZUtleShuKGMsbCxpKSkpO2EucHVzaCh1LnZhbHVlK3Uub2Zmc2V0KX19fSkpO3ZhciBzPWkuTWF0aC5tYXgoYSwwKSxsPWkuTWF0aC5taW4oYSwwKTtyZXR1cm5bci5taW4obCwwKSxyLm1heCgwLHMpXX0sdC5ub3JtYWxpemVLZXk9bi5tZW1vaXplKChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfSkpfSkoRXl0KTt2YXIgVHl0PXt9LEN5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KEN5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQ3l0LlNIT1dfV0FSTklOR1M9ITAsQ3l0LkFERF9USVRMRV9FTEVNRU5UUz0hMCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KFR5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEF5dD1DeXQ7ZnVuY3Rpb24ga3l0KHQpe0F5dC5TSE9XX1dBUk5JTkdTJiZjb25zb2xlLndhcm4odCl9ZnVuY3Rpb24gUHl0KHQsZSl7Zm9yKHZhciBuPVtdLGk9MjtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baS0yXT1hcmd1bWVudHNbaV07cmV0dXJuIDA9PT1lPyh0KG4pLC0xKTp3aW5kb3cuc2V0VGltZW91dCh0LGUsbil9VHl0Lndhcm49a3l0LFR5dC5zZXRUaW1lb3V0PVB5dCxUeXQuZGVib3VuY2U9ZnVuY3Rpb24gTHl0KHQsZSxuKXt2YXIgaT1udWxsLHI9W10sbz1mdW5jdGlvbigpe2UuYXBwbHkobixyKX07cmV0dXJuIGZ1bmN0aW9uKCl7cj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGNsZWFyVGltZW91dChpKSxpPVB5dChvLHQpfX0sVHl0LmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gSXl0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0iIiksa3l0KCJNZXRob2QgIit0KyIgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB2ZXJzaW9uICIrZSsiLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHJlbGVhc2Ugbm90ZXMuICIrbil9O3ZhciBOeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KE55dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFJ5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmVudHJ5SW5kZXg9dCx0aGlzLmV4aXRJbmRleD10LHRoaXMubWluSW5kZXg9dCx0aGlzLm1heEluZGV4PXQsdGhpcy5idWNrZXRWYWx1ZT1lLHRoaXMubWluVmFsdWU9bix0aGlzLm1heFZhbHVlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzSW5CdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXRoaXMuYnVja2V0VmFsdWV9LHQucHJvdG90eXBlLmFkZFRvQnVja2V0PWZ1bmN0aW9uKHQsZSl7dDx0aGlzLm1pblZhbHVlJiYodGhpcy5taW5WYWx1ZT10LHRoaXMubWluSW5kZXg9ZSksdD50aGlzLm1heFZhbHVlJiYodGhpcy5tYXhWYWx1ZT10LHRoaXMubWF4SW5kZXg9ZSksdGhpcy5leGl0SW5kZXg9ZX0sdC5wcm90b3R5cGUuZ2V0VW5pcXVlSW5kaWNlcz1mdW5jdGlvbigpe3ZhciB0PVt0aGlzLmVudHJ5SW5kZXgsdGhpcy5tYXhJbmRleCx0aGlzLm1pbkluZGV4LHRoaXMuZXhpdEluZGV4XTtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIDA9PW58fGUhPXRbbi0xXX0pKX0sdH0pKCk7Tnl0LkJ1Y2tldD1SeXQ7dmFyIE95dD17fSx6eXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6eXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBEeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuU2V0P3RoaXMuX2VzNlNldD1uZXcgd2luZG93LlNldDp0aGlzLl92YWx1ZXM9W10sdGhpcy5zaXplPTB9cmV0dXJuIHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5fZXM2U2V0Pyh0aGlzLl9lczZTZXQuYWRkKHQpLHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSx0aGlzKToodGhpcy5oYXModCl8fCh0aGlzLl92YWx1ZXMucHVzaCh0KSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCksdGhpcyl9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZTZXQpe3ZhciBlPXRoaXMuX2VzNlNldC5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSxlfXZhciBuPXRoaXMuX3ZhbHVlcy5pbmRleE9mKHQpO3JldHVybi0xIT09biYmKHRoaXMuX3ZhbHVlcy5zcGxpY2UobiwxKSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCwhMCl9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dGhpcy5fZXM2U2V0P3RoaXMuX2VzNlNldC5oYXModCk6LTEhPT10aGlzLl92YWx1ZXMuaW5kZXhPZih0KX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYobnVsbD09dGhpcy5fZXM2U2V0KXRoaXMuX3ZhbHVlcy5mb3JFYWNoKChmdW5jdGlvbihpKXt0LmNhbGwoZSxpLGksbil9KSk7ZWxzZXt0aGlzLl9lczZTZXQuZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXtyZXR1cm4gdC5jYWxsKGUsaSxyLG4pfSksZSl9fSx0fSkoKTt6eXQuU2V0PUR5dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KE95dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEJ5dD1CTyxIeXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBCeXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuY2FsbENhbGxiYWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5hcHBseSh0LGUpfSkpLHRoaXN9LGV9KSh6eXQuU2V0KTtPeXQuQ2FsbGJhY2tTZXQ9SHl0O3ZhciBGeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFZ5dD14eXQsVXl0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9lbnRpdGllcz1bXSx0aGlzLl9ydHJlZT1uZXcgVnl0LlJUcmVlfXJldHVybiB0LnByb3RvdHlwZS5hZGRBbGw9ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuX2VudGl0aWVzPXRoaXMuX2VudGl0aWVzLmNvbmNhdCh0KSx2b2lkIDAhPT1uKWZvcih2YXIgaT1WeXQuUlRyZWVCb3VuZHMuYm91bmRzKG4pLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89Vnl0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyhlKGE9dFtyXSkpO1Z5dC5SVHJlZUJvdW5kcy5pc0JvdW5kc092ZXJsYXBCb3VuZHMoaSxvKSYmdGhpcy5fcnRyZWUuaW5zZXJ0KG8sYSl9ZWxzZSBmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYTtvPVZ5dC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMoZShhPXRbcl0pKTt0aGlzLl9ydHJlZS5pbnNlcnQobyxhKX19LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmxvY2F0ZU5lYXJlc3QodCkucG9wKCl9LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3RYPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5sb2NhdGVOZWFyZXN0WCh0KS5wb3AoKX0sdC5wcm90b3R5cGUuZW50aXR5TmVhcmVzdFk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmxvY2F0ZU5lYXJlc3RZKHQpLnBvcCgpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3QoVnl0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LHQucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3RYKFZ5dC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHModCkpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUuaW50ZXJzZWN0WShWeXQuUlRyZWVCb3VuZHMuZW50aXR5Qm91bmRzKHQpKX0sdC5wcm90b3R5cGUuZW50aXRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW50aXRpZXN9LHR9KSgpO0Z5dC5FbnRpdHlTdG9yZT1VeXQ7dmFyIGp5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoanl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgR3l0PVFfdCxXeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuTWFwP3RoaXMuX2VzNk1hcD1uZXcgd2luZG93Lk1hcDp0aGlzLl9rZXlWYWx1ZVBhaXJzPVtdfXJldHVybiB0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtpZihHeXQuaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJOYU4gbWF5IG5vdCBiZSB1c2VkIGFzIGEga2V5IHRvIHRoZSBNYXAiKTtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5zZXQodCxlKSx0aGlzO2Zvcih2YXIgbj0wO248dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7bisrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbbl0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlyc1tuXS52YWx1ZT1lLHRoaXM7cmV0dXJuIHRoaXMuX2tleVZhbHVlUGFpcnMucHVzaCh7a2V5OnQsdmFsdWU6ZX0pLHRoaXN9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5nZXQodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtlKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tlXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzW2VdLnZhbHVlfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuaGFzKHQpO2Zvcih2YXIgZT0wO2U8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbZV0ua2V5PT09dClyZXR1cm4hMDtyZXR1cm4hMX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYobnVsbD09dGhpcy5fZXM2TWFwKXRoaXMuX2tleVZhbHVlUGFpcnMuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dC5jYWxsKGUsaS52YWx1ZSxpLmtleSxuKX0pKTtlbHNle3RoaXMuX2VzNk1hcC5mb3JFYWNoKChmdW5jdGlvbihpLHIpe3JldHVybiB0LmNhbGwoZSxpLHIsbil9KSxlKX19LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLl9lczZNYXApcmV0dXJuIHRoaXMuX2VzNk1hcC5kZWxldGUodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtlKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tlXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzLnNwbGljZShlLDEpLCEwO3JldHVybiExfSx0fSkoKTtqeXQuTWFwPVd5dDt2YXIgcXl0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShxeXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHF5dC5hc3NpZ249ZnVuY3Rpb24gWXl0KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2Zvcih2YXIgbj17fSxpPTAscj10O2k8ci5sZW5ndGg7aSsrKWZvcih2YXIgbz1yW2ldLGE9T2JqZWN0LmtleXMobykscz0wLGw9YTtzPGwubGVuZ3RoO3MrKyl7dmFyIGM9bFtzXTtuW2NdPW9bY119cmV0dXJuIG59O3ZhciBYeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFh5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyICR5dD1EX3QsS3l0PSJfX1Bsb3R0YWJsZV9DbGllbnRUcmFuc2xhdG9yIjtYeXQuZ2V0VHJhbnNsYXRvcj1mdW5jdGlvbiBaeXQodCl7dmFyIGU9dC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCksbj1lW0t5dF07cmV0dXJuIG51bGw9PW4mJihuPW5ldyBKeXQoZSksZVtLeXRdPW4pLG59O3ZhciBKeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yb290RWxlbWVudD10fXJldHVybiB0LnByb3RvdHlwZS5jb21wdXRlUG9zaXRpb249ZnVuY3Rpb24odCxlKXt2YXIgbj17eDp0LHk6ZX0saT0keXQuTWF0aC5nZXRDdW11bGF0aXZlVHJhbnNmb3JtKHRoaXMuX3Jvb3RFbGVtZW50KTtyZXR1cm4gbnVsbD09aT9uOiR5dC5NYXRoLmFwcGx5VHJhbnNmb3JtKGksbil9LHQuaXNFdmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiAkeXQuRE9NLmNvbnRhaW5zKHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLGUudGFyZ2V0KX0sdH0pKCk7WHl0LlRyYW5zbGF0b3I9Snl0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO3QuQXJyYXk9Ql90LHQuQ29sb3I9V190LHQuRE9NPUpfdCx0Lk1hdGg9UV90LHQuUlRyZWU9eHl0LHQuU3RhY2tpbmc9RXl0LHQuV2luZG93PVR5dCxlLl9fZXhwb3J0U3RhcihOeXQsdCksZS5fX2V4cG9ydFN0YXIoT3l0LHQpLGUuX19leHBvcnRTdGFyKF9ndCx0KSxlLl9fZXhwb3J0U3RhcihGeXQsdCksZS5fX2V4cG9ydFN0YXIoanl0LHQpLGUuX19leHBvcnRTdGFyKHF5dCx0KSxlLl9fZXhwb3J0U3Rhcih6eXQsdCksZS5fX2V4cG9ydFN0YXIoWHl0LHQpfSkoRF90KTt2YXIgUXl0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShReXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0dnQ9RF90LGV2dD16X3QsbnZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe2V2dC5mbHVzaCgpfSx0fSkoKTtReXQuSW1tZWRpYXRlPW52dDt2YXIgaXZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3R2dC5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoZXZ0LmZsdXNoKX0sdH0pKCk7UXl0LkFuaW1hdGlvbkZyYW1lPWl2dDt2YXIgcnZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl90aW1lb3V0TXNlYz10dnQuRE9NLlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTfXJldHVybiB0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGV2dC5mbHVzaCx0aGlzLl90aW1lb3V0TXNlYyl9LHR9KSgpO1F5dC5UaW1lb3V0PXJ2dCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1EX3Qsbj1iZ3QsaT1ReXQscj1uZXcgZS5TZXQsbz1uZXcgZS5TZXQsYT0hMSxzPSExO3QuUG9saWN5PW4ubWFrZUVudW0oWyJpbW1lZGlhdGUiLCJhbmltYXRpb25GcmFtZSIsInRpbWVvdXQiXSk7dmFyIGw9bmV3IGkuQW5pbWF0aW9uRnJhbWU7ZnVuY3Rpb24gYyh0KXtvLmFkZCh0KSxyLmFkZCh0KSx1KCl9ZnVuY3Rpb24gdSgpe2F8fChhPSEwLGwucmVuZGVyKCkpfXQucmVuZGVyUG9saWN5PWZ1bmN0aW9uIGgobil7aWYobnVsbD09bilyZXR1cm4gbDtzd2l0Y2gobil7Y2FzZSB0LlBvbGljeS5pbW1lZGlhdGU6bD1uZXcgaS5JbW1lZGlhdGU7YnJlYWs7Y2FzZSB0LlBvbGljeS5hbmltYXRpb25GcmFtZTpsPW5ldyBpLkFuaW1hdGlvbkZyYW1lO2JyZWFrO2Nhc2UgdC5Qb2xpY3kudGltZW91dDpsPW5ldyBpLlRpbWVvdXQ7YnJlYWs7ZGVmYXVsdDplLldpbmRvdy53YXJuKCJVbnJlY29nbml6ZWQgcmVuZGVyUG9saWN5OiAiK24pfX0sdC5yZWdpc3RlclRvUmVuZGVyPWZ1bmN0aW9uIGQodCl7cyYmZS5XaW5kb3cud2FybigiUmVnaXN0ZXJlZCB0byByZW5kZXIgd2hpbGUgb3RoZXIgY29tcG9uZW50cyBhcmUgZmx1c2hpbmc6IHJlcXVlc3QgbWF5IGJlIGlnbm9yZWQiKSxyLmFkZCh0KSx1KCl9LHQucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXI9Yyx0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0PWZ1bmN0aW9uIHAodCl7Yyh0KX0sdC5mbHVzaD1mdW5jdGlvbiBmKCl7aWYoYSl7by5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wdXRlTGF5b3V0KCl9KSksci5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW5kZXIoKX0pKSxzPSEwO3ZhciB0PW5ldyBlLlNldDtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RyeXtlLnJlbmRlckltbWVkaWF0ZWx5KCl9Y2F0Y2gobil7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgbn0pLDApLHQuYWRkKGUpfX0pKSxvPW5ldyBlLlNldCxyPXQsYT0hMSxzPSExfX19KSh6X3QpLAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoT190LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb3Z0PXdwdCxhdnQ9el90LHN2dD1EX3QsbHZ0PUNlLmV4cG9ydHMsY3Z0PV9ndCx1dnQ9Ymd0O09fdC5YQWxpZ25tZW50PXV2dC5tYWtlRW51bShbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdKSxPX3QuWUFsaWdubWVudD11dnQubWFrZUVudW0oWyJ0b3AiLCJjZW50ZXIiLCJib3R0b20iXSk7dmFyIGh2dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fb3ZlcmZsb3dIaWRkZW49ITEsdGhpcy5fb3JpZ2luPXt4OjAseTowfSx0aGlzLl94QWxpZ25tZW50PSJsZWZ0Iix0aGlzLl95QWxpZ25tZW50PSJ0b3AiLHRoaXMuX2lzU2V0dXA9ITEsdGhpcy5faXNBbmNob3JlZD0hMSx0aGlzLl9jc3NDbGFzc2VzPW5ldyBzdnQuU2V0LHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkFuY2hvckNhbGxiYWNrcz1uZXcgc3Z0LkNhbGxiYWNrU2V0LHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzPW5ldyBzdnQuQ2FsbGJhY2tTZXQsdGhpcy5fY3NzQ2xhc3Nlcy5hZGQoImNvbXBvbmVudCIpfXJldHVybiB0LnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24odCl7aWYodD1jdnQuY29lcmNlRXh0ZXJuYWxEMyh0KSx0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW4ndCByZXVzZSBkZXN0cm95KCktZWQgQ29tcG9uZW50cyEiKTtyZXR1cm4gdGhpcy5pc1Jvb3QoKSYmKHRoaXMuX3Jvb3RFbGVtZW50PXQsdGhpcy5fcm9vdEVsZW1lbnQuY2xhc3NlZCgicGxvdHRhYmxlIiwhMCkpLG51bGwhPXRoaXMuX2VsZW1lbnQ/dC5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudC5ub2RlKCkpOih0aGlzLl9lbGVtZW50PXQuYXBwZW5kKCJkaXYiKSx0aGlzLl9zZXR1cCgpKSx0aGlzLl9pc0FuY2hvcmVkPSEwLHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyksdGhpc30sdC5wcm90b3R5cGUub25BbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2lzQW5jaG9yZWQmJnQodGhpcyksdGhpcy5fb25BbmNob3JDYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZkFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25BbmNob3JDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5faXNTZXR1cHx8KHRoaXMuX2Nzc0NsYXNzZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5fZWxlbWVudC5jbGFzc2VkKGUsITApfSkpLHRoaXMuX2Nzc0NsYXNzZXM9bmV3IHN2dC5TZXQsdGhpcy5fYmFja2dyb3VuZENvbnRhaW5lcj10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiYmFja2dyb3VuZC1jb250YWluZXIiLCEwKSx0aGlzLl9jb250ZW50PXRoaXMuX2VsZW1lbnQuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJjb250ZW50IiwhMCksdGhpcy5fZm9yZWdyb3VuZENvbnRhaW5lcj10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiZm9yZWdyb3VuZC1jb250YWluZXIiLCEwKSx0aGlzLl9jb250ZW50LmNsYXNzZWQodGhpcy5fb3ZlcmZsb3dIaWRkZW4/ImNvbXBvbmVudC1vdmVyZmxvdy1oaWRkZW4iOiJjb21wb25lbnQtb3ZlcmZsb3ctdmlzaWJsZSIsITApLHRoaXMuX2lzU2V0dXA9ITApfSx0LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfX0sdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7aWYobnVsbD09ZXx8bnVsbD09bnx8bnVsbD09aSl7aWYobnVsbD09dGhpcy5fZWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoImFuY2hvcigpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBjb21wdXRlTGF5b3V0KCkiKTtpZihudWxsPT10aGlzLl9yb290RWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoIm51bGwgYXJndW1lbnRzIGNhbm5vdCBiZSBwYXNzZWQgdG8gY29tcHV0ZUxheW91dCgpIG9uIGEgbm9uLXJvb3QsIHVuYW5jaG9yZWQgbm9kZSIpO2U9e3g6MCx5OjB9O3ZhciByPXRoaXMuX3Jvb3RFbGVtZW50Lm5vZGUoKTtuPXN2dC5ET00uZWxlbWVudFdpZHRoKHIpLGk9c3Z0LkRPTS5lbGVtZW50SGVpZ2h0KHIpfXZhciBvPXRoaXMuX3NpemVGcm9tT2ZmZXIobixpKSxhPW8uaGVpZ2h0LHM9by53aWR0aDtyZXR1cm4gdGhpcy5zZXRCb3VuZHMocyxhLGUueCsobi1zKSp0Ll94QWxpZ25Ub1Byb3BvcnRpb25bdGhpcy5feEFsaWdubWVudF0sZS55KyhpLWEpKnQuX3lBbGlnblRvUHJvcG9ydGlvblt0aGlzLl95QWxpZ25tZW50XSksdGhpc30sdC5wcm90b3R5cGUuc2V0Qm91bmRzPWZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT0wKSx0aGlzLl93aWR0aD10LHRoaXMuX2hlaWdodD1lLHRoaXMuX29yaWdpbj17eDpuLHk6aX0sbnVsbCE9dGhpcy5fZWxlbWVudCYmdGhpcy5fZWxlbWVudC5zdHlsZXMoe2xlZnQ6bisicHgiLGhlaWdodDplKyJweCIsdG9wOmkrInB4Iix3aWR0aDp0KyJweCJ9KSxudWxsIT10aGlzLl9yZXNpemVIYW5kbGVyJiZ0aGlzLl9yZXNpemVIYW5kbGVyKHt3aWR0aDp0LGhlaWdodDplfSksdGhpc30sdC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnJlcXVlc3RlZFNwYWNlKHQsZSk7cmV0dXJue3dpZHRoOnRoaXMuZml4ZWRXaWR0aCgpP01hdGgubWluKHQsbi5taW5XaWR0aCk6dCxoZWlnaHQ6dGhpcy5maXhlZEhlaWdodCgpP01hdGgubWluKGUsbi5taW5IZWlnaHQpOmV9fSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNBbmNob3JlZCYmdGhpcy5faXNTZXR1cCYmdGhpcy53aWR0aCgpPj0wJiZ0aGlzLmhlaWdodCgpPj0wJiZhdnQucmVnaXN0ZXJUb1JlbmRlcih0aGlzKSx0aGlzfSx0LnByb3RvdHlwZS5yZW5kZXJMb3dQcmlvcml0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcigpfSx0LnByb3RvdHlwZS5fc2NoZWR1bGVDb21wdXRlTGF5b3V0PWZ1bmN0aW9uKCl7dGhpcy5faXNBbmNob3JlZCYmdGhpcy5faXNTZXR1cCYmYXZ0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyKHRoaXMpfSx0LnByb3RvdHlwZS5vblJlc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzaXplSGFuZGxlcj10LHRoaXN9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiYodGhpcy5pc1Jvb3QoKT90aGlzLl9zY2hlZHVsZUNvbXB1dGVMYXlvdXQoKTp0aGlzLnBhcmVudCgpLnJlZHJhdygpKSx0aGlzfSx0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLnJlbmRlclRvPWZ1bmN0aW9uKHQpe2lmKHRoaXMuZGV0YWNoKCksbnVsbCE9dCl7dmFyIGU9dm9pZCAwO2lmKCEoZT0ic3RyaW5nIj09dHlwZW9mIHR8fGx2dC5pc0VsZW1lbnQodCk/b3Z0LnNlbGVjdCh0KTpjdnQuY29lcmNlRXh0ZXJuYWxEMyh0KSkubm9kZSgpfHxudWxsPT1lLm5vZGUoKS5ub2RlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlBsb3R0YWJsZSByZXF1aXJlcyBhIHZhbGlkIEVsZW1lbnQgdG8gcmVuZGVyVG8iKTtpZigic3ZnIj09PWUubm9kZSgpLm5vZGVOYW1lKXRocm93IG5ldyBFcnJvcigiUGxvdHRhYmxlIDMueCBhbmQgbGF0ZXIgY2FuIG9ubHkgcmVuZGVyVG8gYW4gSFRNTCBjb21wb25lbnQ7IHBhc3MgYSBkaXYgaW5zdGVhZCEiKTt0aGlzLmFuY2hvcihlKX1pZihudWxsPT10aGlzLl9lbGVtZW50KXRocm93IG5ldyBFcnJvcigiSWYgYSBDb21wb25lbnQgaGFzIG5ldmVyIGJlZW4gcmVuZGVyZWQgYmVmb3JlLCB0aGVuIHJlbmRlclRvIG11c3QgYmUgZ2l2ZW4gYSBub2RlIHRvIHJlbmRlciB0bywgb3IgYSBkMy5TZWxlY3Rpb24sIG9yIGEgc2VsZWN0b3Igc3RyaW5nIik7cmV0dXJuIGF2dC5yZWdpc3RlclRvQ29tcHV0ZUxheW91dEFuZFJlbmRlcih0aGlzKSxhdnQuZmx1c2goKSx0aGlzfSx0LnByb3RvdHlwZS54QWxpZ25tZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHRoaXMuX3hBbGlnbm1lbnQ7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbD09dC5feEFsaWduVG9Qcm9wb3J0aW9uW2VdKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK2UpO3JldHVybiB0aGlzLl94QWxpZ25tZW50PWUsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS55QWxpZ25tZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHRoaXMuX3lBbGlnbm1lbnQ7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbD09dC5feUFsaWduVG9Qcm9wb3J0aW9uW2VdKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK2UpO3JldHVybiB0aGlzLl95QWxpZ25tZW50PWUsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmKG51bGw9PXRoaXMuX2VsZW1lbnQ/dGhpcy5fY3NzQ2xhc3Nlcy5oYXModCk6dGhpcy5fZWxlbWVudC5jbGFzc2VkKHQpKX0sdC5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fChudWxsPT10aGlzLl9lbGVtZW50P3RoaXMuX2Nzc0NsYXNzZXMuYWRkKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0LCEwKSksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fChudWxsPT10aGlzLl9lbGVtZW50P3RoaXMuX2Nzc0NsYXNzZXMuZGVsZXRlKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0LCExKSksdGhpc30sdC5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiExfSx0LnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiExfSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQobnVsbCksdGhpcy5faXNBbmNob3JlZCYmdGhpcy5fZWxlbWVudC5yZW1vdmUoKSx0aGlzLl9pc0FuY2hvcmVkPSExLHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyksdGhpc30sdC5wcm90b3R5cGUub25EZXRhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEZXRhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRGV0YWNoQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5wYXJlbnQ9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dClyZXR1cm4gdGhpcy5fcGFyZW50O2lmKG51bGwhPT10JiYhdC5oYXModGhpcykpdGhyb3cgbmV3IEVycm9yKCJQYXNzZWQgaW52YWxpZCBwYXJlbnQiKTtyZXR1cm4gdGhpcy5fcGFyZW50PXQsdGhpc30sdC5wcm90b3R5cGUuYm91bmRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcmlnaW4oKTtyZXR1cm57dG9wTGVmdDp0LGJvdHRvbVJpZ2h0Ont4OnQueCt0aGlzLndpZHRoKCkseTp0LnkrdGhpcy5oZWlnaHQoKX19fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZGV0YWNoKCl9LHQucHJvdG90eXBlLndpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dpZHRofSx0LnByb3RvdHlwZS5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0fSx0LnByb3RvdHlwZS5vcmlnaW49ZnVuY3Rpb24oKXtyZXR1cm57eDp0aGlzLl9vcmlnaW4ueCx5OnRoaXMuX29yaWdpbi55fX0sdC5wcm90b3R5cGUub3JpZ2luVG9Sb290PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMub3JpZ2luKCksZT10aGlzLnBhcmVudCgpO251bGwhPWU7KXt2YXIgbj1lLm9yaWdpbigpO3QueCs9bi54LHQueSs9bi55LGU9ZS5wYXJlbnQoKX1yZXR1cm4gdH0sdC5wcm90b3R5cGUucm9vdD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzOyF0LmlzUm9vdCgpOyl0PXQucGFyZW50KCk7cmV0dXJuIHR9LHQucHJvdG90eXBlLmlzUm9vdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLnBhcmVudCgpfSx0LnByb3RvdHlwZS5mb3JlZ3JvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvcmVncm91bmRDb250YWluZXJ9LHQucHJvdG90eXBlLmNvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGVudH0sdC5wcm90b3R5cGUuZWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGVtZW50fSx0LnByb3RvdHlwZS5yb290RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3QoKS5fcm9vdEVsZW1lbnR9LHQucHJvdG90eXBlLmJhY2tncm91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbnRhaW5lcn0sdC5feEFsaWduVG9Qcm9wb3J0aW9uPXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9LHQuX3lBbGlnblRvUHJvcG9ydGlvbj17dG9wOjAsY2VudGVyOi41LGJvdHRvbToxfSx0fSkoKTtPX3QuQ29tcG9uZW50PWh2dDt2YXIgZHZ0PXt9LHB2dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHB2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGZ2dD13cHQ7ZnVuY3Rpb24gbXZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9GaXhlZCh0KX19ZnVuY3Rpb24gZ3Z0KHQpe2lmKHQ8MHx8dD4yMCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKTtpZih0IT09TWF0aC5mbG9vcih0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGFuIGludGVnZXIiKX0KLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9wdnQuY3VycmVuY3k9ZnVuY3Rpb24gX3Z0KHQsZSxuKXt2b2lkIDA9PT10JiYodD0yKSx2b2lkIDA9PT1lJiYoZT0iJCIpLHZvaWQgMD09PW4mJihuPSEwKTt2YXIgaT1tdnQodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPWkoTWF0aC5hYnModCkpO3JldHVybiIiIT09ciYmKG4/cj1lK3I6cis9ZSx0PDAmJihyPSItIityKSkscn19LHB2dC5maXhlZD1tdnQscHZ0LmdlbmVyYWw9ZnVuY3Rpb24geXZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7aWYoIm51bWJlciI9PXR5cGVvZiBlKXt2YXIgbj1NYXRoLnBvdygxMCx0KTtyZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoZSpuKS9uKX1yZXR1cm4gU3RyaW5nKGUpfX0scHZ0LmlkZW50aXR5PWZ1bmN0aW9uIHZ2dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfX0scHZ0LnBlcmNlbnRhZ2U9ZnVuY3Rpb24gYnZ0KHQpe3ZvaWQgMD09PXQmJih0PTApO3ZhciBlPW12dCh0KTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49MTAwKnQsaT10LnRvU3RyaW5nKCkscj1NYXRoLnBvdygxMCxpLmxlbmd0aC0oaS5pbmRleE9mKCIuIikrMSkpO3JldHVybiBuPXBhcnNlSW50KChuKnIpLnRvU3RyaW5nKCksMTApL3IsZShuKSsiJSJ9fSxwdnQuc2lTdWZmaXg9ZnVuY3Rpb24geHZ0KHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxndnQodCksZnVuY3Rpb24oZSl7cmV0dXJuIGZ2dC5mb3JtYXQoIi4iK3QrInMiKShlKX19LHB2dC5zaG9ydFNjYWxlPWZ1bmN0aW9uIHd2dCh0KXt2b2lkIDA9PT10JiYodD0zKSxndnQodCk7dmFyIGU9IktNQlRRIixuPWZ2dC5mb3JtYXQoIi4iK3QrImUiKSxpPWZ2dC5mb3JtYXQoIi4iK3QrImYiKSxyPU1hdGgucG93KDEwLDMqKGUubGVuZ3RoKzEpKSxvPU1hdGgucG93KDEwLC10KTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGE9TWF0aC5hYnModCk7aWYoKGE8b3x8YT49cikmJjAhPT1hKXJldHVybiBuKHQpO2Zvcih2YXIgcz0tMTthPj1NYXRoLnBvdygxZTMscysyKSYmczxlLmxlbmd0aC0xOylzKys7dmFyIGw9IiI7cmV0dXJuIGw9LTE9PT1zP2kodCk6aSh0L01hdGgucG93KDFlMyxzKzEpKStlW3NdLCh0PjAmJiIxMDAwIj09PWwuc3Vic3RyKDAsNCl8fHQ8MCYmIi0xMDAwIj09PWwuc3Vic3RyKDAsNSkpJiYoczxlLmxlbmd0aC0xPyhzKyssbD1pKHQvTWF0aC5wb3coMWUzLHMrMSkpK2Vbc10pOmw9bih0KSksbH19LHB2dC5tdWx0aVRpbWU9ZnVuY3Rpb24gU3Z0KCl7dmFyIHQ9W3tzcGVjaWZpZXI6Ii4lTCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaWxsaXNlY29uZHMoKX19LHtzcGVjaWZpZXI6IjolUyIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRTZWNvbmRzKCl9fSx7c3BlY2lmaWVyOiIlSTolTSIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaW51dGVzKCl9fSx7c3BlY2lmaWVyOiIlSSAlcCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRIb3VycygpfX0se3NwZWNpZmllcjoiJWEgJWQiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0RGF5KCkmJjEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViICVkIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10LmdldE1vbnRoKCl9fV07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmVkaWNhdGUoZSl9KSk7cmV0dXJuIGZ2dC50aW1lRm9ybWF0KG4ubGVuZ3RoPjA/blswXS5zcGVjaWZpZXI6IiVZIikoZSl9fSxwdnQudGltZT1mdW5jdGlvbiBNdnQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZmFsc2UpLGU/ZnZ0LnV0Y0Zvcm1hdCh0KTpmdnQudGltZUZvcm1hdCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGR2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEV2dD1CTyxUdnQ9d3B0LEN2dD1QZ3QsQXZ0PU9fdCxrdnQ9cHZ0LFB2dD1EX3Q7ZHZ0LkF4aXNPcmllbnRhdGlvbj1iZ3QubWFrZUVudW0oWyJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AiXSk7dmFyIEx2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpZihpLl9lbmRUaWNrTGVuZ3RoPTUsaS5faW5uZXJUaWNrTGVuZ3RoPTUsaS5fdGlja0xhYmVsUGFkZGluZz0xMCxpLl9tYXJnaW49MTUsaS5fc2hvd0VuZFRpY2tMYWJlbHM9ITEsaS5fYW5ub3RhdGlvbnNFbmFibGVkPSExLGkuX2Fubm90YXRpb25UaWVyQ291bnQ9MSxudWxsPT1lfHxudWxsPT1uKXRocm93IG5ldyBFcnJvcigiQXhpcyByZXF1aXJlcyBhIHNjYWxlIGFuZCBvcmllbnRhdGlvbiIpO3JldHVybiBpLl9zY2FsZT1lLGkub3JpZW50YXRpb24obiksaS5fc2V0RGVmYXVsdEFsaWdubWVudCgpLGkuYWRkQ2xhc3MoImF4aXMiKSxpLmlzSG9yaXpvbnRhbCgpP2kuYWRkQ2xhc3MoIngtYXhpcyIpOmkuYWRkQ2xhc3MoInktYXhpcyIpLGkuZm9ybWF0dGVyKGt2dC5pZGVudGl0eSgpKSxpLl9yZXNjYWxlQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX3Jlc2NhbGUoKX0saS5fc2NhbGUub25VcGRhdGUoaS5fcmVzY2FsZUNhbGxiYWNrKSxpLl9hbm5vdGF0ZWRUaWNrcz1bXSxpLl9hbm5vdGF0aW9uRm9ybWF0dGVyPWt2dC5pZGVudGl0eSgpLGl9cmV0dXJuIEV2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3NjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZXNjYWxlQ2FsbGJhY2spfSxlLnByb3RvdHlwZS50aWNrTGFiZWxEYXRhT25FbGVtZW50PWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe2Zvcih2YXIgbjtudWxsIT10JiZ0LmNsYXNzTGlzdCYmdm9pZCAwPT09bjspdC5jbGFzc0xpc3QuY29udGFpbnMoZS5USUNLX0xBQkVMX0NMQVNTKT9uPXQ6dD10LnBhcmVudE5vZGU7cmV0dXJuIHZvaWQgMD09PXQ/dm9pZCAwOlR2dC5zZWxlY3QodCkuZGF0dW0oKX19LGUucHJvdG90eXBlLl9jb21wdXRlV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCl9LGUucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LG4pe3ZhciBpPTAscj0wO3RoaXMuaXNIb3Jpem9udGFsKCk/KHI9dGhpcy5fY29tcHV0ZUhlaWdodCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpJiYocis9KHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HKSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSkpOihpPXRoaXMuX2NvbXB1dGVXaWR0aCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpJiYoaSs9KHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HKSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSkpO3JldHVybnttaW5XaWR0aDppLG1pbkhlaWdodDpyfX0sZS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKX0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzSG9yaXpvbnRhbCgpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe3RoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5pc0hvcml6b250YWwoKT90aGlzLl9zY2FsZS5yYW5nZShbMCx0aGlzLndpZHRoKCldKTp0aGlzLl9zY2FsZS5yYW5nZShbdGhpcy5oZWlnaHQoKSwwXSksdGhpc30sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnJlcXVlc3RlZFNwYWNlKHQsZSk7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCk/e3dpZHRoOnQsaGVpZ2h0Om4ubWluSGVpZ2h0fTp7aGVpZ2h0OmUsd2lkdGg6bi5taW5XaWR0aH19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3RpY2tNYXJrQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5USUNLX01BUktfQ0xBU1MrIi1jb250YWluZXIiLCEwKSx0aGlzLl90aWNrTGFiZWxDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLlRJQ0tfTEFCRUxfQ0xBU1MrIi1jb250YWluZXIiLCEwKSx0aGlzLl9iYXNlbGluZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1jb250YWluZXIiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tbGluZS1jb250YWluZXIiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tY2lyY2xlLWNvbnRhaW5lciIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIsITApO3ZhciBuPXRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiLCEwKSxpPW5ldyBDdnQuU3ZnQ29udGV4dChuLm5vZGUoKSk7dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyPW5ldyBDdnQuQ2FjaGVNZWFzdXJlcihpKSx0aGlzLl9hbm5vdGF0aW9uV3JpdGVyPW5ldyBDdnQuV3JpdGVyKHRoaXMuX2Fubm90YXRpb25NZWFzdXJlcixpKX0sZS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRUaWNrVmFsdWVzKCksbj10aGlzLl90aWNrTWFya0NvbnRhaW5lci5zZWxlY3RBbGwoIi4iK2UuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLGk9bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoZS5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKG4pO3JldHVybiBpLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpKSxUdnQuc2VsZWN0KGkubm9kZXMoKVswXSkuY2xhc3NlZChlLkVORF9USUNLX01BUktfQ0xBU1MsITApLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCghMCkpLFR2dC5zZWxlY3QoaS5ub2RlcygpW3QubGVuZ3RoLTFdKS5jbGFzc2VkKGUuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCEwKSksbi5leGl0KCkucmVtb3ZlKCksdGhpcy5fYmFzZWxpbmUuYXR0cnModGhpcy5fZ2VuZXJhdGVCYXNlbGluZUF0dHJIYXNoKCkpLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCk/dGhpcy5fZHJhd0Fubm90YXRpb25zKCk6dGhpcy5fcmVtb3ZlQW5ub3RhdGlvbnMoKSx0aGlzfSxlLnByb3RvdHlwZS5hbm5vdGF0ZWRUaWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbm5vdGF0ZWRUaWNrczoodGhpcy5fYW5ub3RhdGVkVGlja3M9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Fubm90YXRpb25Gb3JtYXR0ZXI6KHRoaXMuX2Fubm90YXRpb25Gb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYW5ub3RhdGlvbnNFbmFibGVkOih0aGlzLl9hbm5vdGF0aW9uc0VuYWJsZWQ9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5hbm5vdGF0aW9uVGllckNvdW50PWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2Fubm90YXRpb25UaWVyQ291bnQ7aWYodDwwKXRocm93IG5ldyBFcnJvcigiYW5ub3RhdGlvblRpZXJDb3VudCBjYW5ub3QgYmUgbmVnYXRpdmUiKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvblRpZXJDb3VudD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuX2RyYXdBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1lLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcsaT1uZXcgUHZ0Lk1hcCxyPXRoaXMuX2Fubm90YXRlZFRpY2tzVG9SZW5kZXIoKTtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPXQuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKHQuYW5ub3RhdGlvbkZvcm1hdHRlcigpKGUpKTtpLnNldChlLHt3aWR0aDpyLndpZHRoKzIqbixoZWlnaHQ6ci5oZWlnaHQrMipufSl9KSk7dmFyIG89dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMipuLGE9dGhpcy5fYW5ub3RhdGlvblRvVGllcihpKSxzPW5ldyBQdnQuU2V0LGw9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxjPXRoaXMuX2NvcmVTaXplKCksdT1NYXRoLm1pbih0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSxNYXRoLmZsb29yKChsLWMpL28pKTthLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7KC0xPT09dHx8dD49dSkmJnMuYWRkKGUpfSkpO3ZhciBoLGQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXQuc2VsZWN0QWxsKCIuIituKS5kYXRhKHIpLG89aS5lbnRlcigpLmFwcGVuZChlKS5jbGFzc2VkKG4sITApLm1lcmdlKGkpO3JldHVybiBpLmV4aXQoKS5yZW1vdmUoKSxvfSxwPWZ1bmN0aW9uKGUpe3N3aXRjaCh0Lm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpyZXR1cm4gYS5nZXQoZSkqbytjO2Nhc2UidG9wIjpjYXNlImxlZnQiOnJldHVybiBsLWMtYS5nZXQoZSkqb319LGY9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3NjYWxlLnNjYWxlKGUpfSxtPWZ1bmN0aW9uKHQpe3JldHVybiBzLmhhcyh0KT8iaGlkZGVuIjoidmlzaWJsZSJ9O3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpoPTA7YnJlYWs7Y2FzZSJ0b3AiOmg9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlImxlZnQiOmg9dGhpcy53aWR0aCgpfXZhciBnPXRoaXMuaXNIb3Jpem9udGFsKCk7ZCh0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdCgiLmFubm90YXRpb24tbGluZS1jb250YWluZXIiKSwibGluZSIsZS5BTk5PVEFUSU9OX0xJTkVfQ0xBU1MpLmF0dHJzKHt4MTpnP2Y6aCx4MjpnP2Y6cCx5MTpnP2g6Zix5MjpnP3A6Zix2aXNpYmlsaXR5Om19KSxkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1jaXJjbGUtY29udGFpbmVyIiksImNpcmNsZSIsZS5BTk5PVEFUSU9OX0NJUkNMRV9DTEFTUykuYXR0cnMoe2N4Omc/ZjpoLGN5Omc/aDpmLHI6M30pO3ZhciBfPWZ1bmN0aW9uKGUpe3N3aXRjaCh0Lm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpyZXR1cm4gcChlKTtjYXNlInRvcCI6Y2FzZSJsZWZ0IjpyZXR1cm4gcChlKS1pLmdldChlKS5oZWlnaHR9fTtkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIpLCJyZWN0IixlLkFOTk9UQVRJT05fUkVDVF9DTEFTUykuYXR0cnMoe3g6Zz9mOl8seTpnP186Zix3aWR0aDpnP2Z1bmN0aW9uKHQpe3JldHVybiBpLmdldCh0KS53aWR0aH06ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLmhlaWdodH0saGVpZ2h0Omc/ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLmhlaWdodH06ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLndpZHRofSx2aXNpYmlsaXR5Om19KTt2YXIgeT10aGlzLl9hbm5vdGF0aW9uV3JpdGVyLHY9dGhpcy5hbm5vdGF0aW9uRm9ybWF0dGVyKCksYj1kKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiKSwiZyIsZS5BTk5PVEFUSU9OX0xBQkVMX0NMQVNTKTtiLnNlbGVjdEFsbCgiLnRleHQtY29udGFpbmVyIikucmVtb3ZlKCksYi5hdHRycyh7dHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIisoZz9mKHQpOl8odCkpKyIsIisoZz9fKHQpOmYodCkpKyIpIn0sdmlzaWJpbGl0eTptfSkuZWFjaCgoZnVuY3Rpb24odCl7eS53cml0ZSh2KHQpLGc/aS5nZXQodCkud2lkdGg6aS5nZXQodCkuaGVpZ2h0LGc/aS5nZXQodCkuaGVpZ2h0OmkuZ2V0KHQpLndpZHRoLHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIiLHRleHRSb3RhdGlvbjpnPzA6OTB9LFR2dC5zZWxlY3QodGhpcykubm9kZSgpKX0pKX0sZS5wcm90b3R5cGUuX2Fubm90YXRlZFRpY2tzVG9SZW5kZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fc2NhbGUucmFuZ2UoKTtyZXR1cm4gUHZ0LkFycmF5LnVuaXEodGhpcy5hbm5vdGF0ZWRUaWNrcygpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIG51bGwhPW4mJlB2dC5NYXRoLmluUmFuZ2UodC5fc2NhbGUuc2NhbGUobiksZVswXSxlWzFdKX0pKSl9LGUucHJvdG90eXBlLl9jb3JlU2l6ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCksZT10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX2NvbXB1dGVIZWlnaHQoKTp0aGlzLl9jb21wdXRlV2lkdGgoKTtyZXR1cm4gTWF0aC5taW4oZSx0KX0sZS5wcm90b3R5cGUuX2Fubm90YXRpb25UaWVySGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HfSxlLnByb3RvdHlwZS5fYW5ub3RhdGlvblRvVGllcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49W1tdXSxpPW5ldyBQdnQuTWFwLHI9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLndpZHRoKCk6dGhpcy5oZWlnaHQoKTtyZXR1cm4gdGhpcy5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcigpLmZvckVhY2goKGZ1bmN0aW9uKG8pe3ZhciBhPWUuX3NjYWxlLnNjYWxlKG8pLHM9dC5nZXQobykud2lkdGg7aWYoYTwwfHxhK3M+cilpLnNldChvLC0xKTtlbHNle2Zvcih2YXIgbD0wO25bbF0uc29tZSgoZnVuY3Rpb24obil7dmFyIGk9ZS5fc2NhbGUuc2NhbGUobikscj10LmdldChuKS53aWR0aDtyZXR1cm4gYStzPj1pJiZhPD1pK3J9KSk7KWwrKyxuLmxlbmd0aD09PWwmJm4ucHVzaChbXSk7bltsXS5wdXNoKG8pLGkuc2V0KG8sbCl9fSkpLGl9LGUucHJvdG90eXBlLl9yZW1vdmVBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3RoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1saW5lIikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWNpcmNsZSIpLnJlbW92ZSgpLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1yZWN0IikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWxhYmVsIikucmVtb3ZlKCl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2g9ZnVuY3Rpb24oKXt2YXIgdD17eDE6MCx5MTowLHgyOjAseTI6MH07c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6dC54Mj10aGlzLndpZHRoKCk7YnJlYWs7Y2FzZSJ0b3AiOnQueDI9dGhpcy53aWR0aCgpLHQueTE9dGhpcy5oZWlnaHQoKSx0LnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJsZWZ0Ijp0LngxPXRoaXMud2lkdGgoKSx0LngyPXRoaXMud2lkdGgoKSx0LnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJyaWdodCI6dC55Mj10aGlzLmhlaWdodCgpfXJldHVybiB0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPXt4MTowLHkxOjAseDI6MCx5MjowfSxpPWZ1bmN0aW9uKHQpe3JldHVybiBlLl9zY2FsZS5zY2FsZSh0KX07dGhpcy5pc0hvcml6b250YWwoKT8obi54MT1pLG4ueDI9aSk6KG4ueTE9aSxuLnkyPWkpO3ZhciByPXQ/dGhpcy5fZW5kVGlja0xlbmd0aDp0aGlzLl9pbm5lclRpY2tMZW5ndGg7c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6bi55Mj1yO2JyZWFrO2Nhc2UidG9wIjpuLnkxPXRoaXMuaGVpZ2h0KCksbi55Mj10aGlzLmhlaWdodCgpLXI7YnJlYWs7Y2FzZSJsZWZ0IjpuLngxPXRoaXMud2lkdGgoKSxuLngyPXRoaXMud2lkdGgoKS1yO2JyZWFrO2Nhc2UicmlnaHQiOm4ueDI9cn1yZXR1cm4gbn0sZS5wcm90b3R5cGUuX3NldERlZmF1bHRBbGlnbm1lbnQ9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjp0aGlzLnlBbGlnbm1lbnQoInRvcCIpO2JyZWFrO2Nhc2UidG9wIjp0aGlzLnlBbGlnbm1lbnQoImJvdHRvbSIpO2JyZWFrO2Nhc2UibGVmdCI6dGhpcy54QWxpZ25tZW50KCJyaWdodCIpO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMueEFsaWdubWVudCgibGVmdCIpfX0sZS5wcm90b3R5cGUuaXNIb3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuInRvcCI9PT10aGlzLl9vcmllbnRhdGlvbnx8ImJvdHRvbSI9PT10aGlzLl9vcmllbnRhdGlvbn0sZS5wcm90b3R5cGUuZ2V0U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2NhbGV9LGUucHJvdG90eXBlLmZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9mb3JtYXR0ZXI6KHRoaXMuX2Zvcm1hdHRlcj10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLmlubmVyVGlja0xlbmd0aD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9pbm5lclRpY2tMZW5ndGg7aWYodDwwKXRocm93IG5ldyBFcnJvcigiaW5uZXIgdGljayBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl9pbm5lclRpY2tMZW5ndGg9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLmVuZFRpY2tMZW5ndGg9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fZW5kVGlja0xlbmd0aDtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJlbmQgdGljayBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl9lbmRUaWNrTGVuZ3RoPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5fbWF4TGFiZWxUaWNrTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvd0VuZFRpY2tMYWJlbHMoKT9NYXRoLm1heCh0aGlzLmlubmVyVGlja0xlbmd0aCgpLHRoaXMuZW5kVGlja0xlbmd0aCgpKTp0aGlzLmlubmVyVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS50aWNrTGFiZWxQYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBhZGRpbmc7aWYodDwwKXRocm93IG5ldyBFcnJvcigidGljayBsYWJlbCBwYWRkaW5nIG11c3QgYmUgcG9zaXRpdmUiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsUGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUubWFyZ2luPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX21hcmdpbjtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJtYXJnaW4gc2l6ZSBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX21hcmdpbj10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fb3JpZW50YXRpb247dmFyIGU9dC50b0xvd2VyQ2FzZSgpO2lmKCJ0b3AiIT09ZSYmImJvdHRvbSIhPT1lJiYibGVmdCIhPT1lJiYicmlnaHQiIT09ZSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIG9yaWVudGF0aW9uIik7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5zaG93RW5kVGlja0xhYmVscz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zaG93RW5kVGlja0xhYmVsczoodGhpcy5fc2hvd0VuZFRpY2tMYWJlbHM9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2hvd0FsbFRpY2tNYXJrcz1mdW5jdGlvbigpe3RoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLmVhY2goKGZ1bmN0aW9uKCl7VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKX0pKX0sZS5wcm90b3R5cGUuX3Nob3dBbGxUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKS5lYWNoKChmdW5jdGlvbigpe1R2dC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0Iil9KSl9LGUucHJvdG90eXBlLl9oaWRlT3ZlcmZsb3dpbmdUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50KCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKTtuLmVtcHR5KCl8fG4uZWFjaCgoZnVuY3Rpb24oZSxuKXtQdnQuRE9NLmNsaWVudFJlY3RJbnNpZGUodGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KXx8VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSkpfSxlLnByb3RvdHlwZS5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLG49dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49VHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJpbmhlcml0Ij09PW58fCJ2aXNpYmxlIj09PW59KSkuZGF0YSgpO3QuZWFjaCgoZnVuY3Rpb24odCxlKXstMT09PW4uaW5kZXhPZih0KSYmVHZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSkpfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIucmVzZXQoKX0sZS5FTkRfVElDS19NQVJLX0NMQVNTPSJlbmQtdGljay1tYXJrIixlLlRJQ0tfTUFSS19DTEFTUz0idGljay1tYXJrIixlLlRJQ0tfTEFCRUxfQ0xBU1M9InRpY2stbGFiZWwiLGUuQU5OT1RBVElPTl9MSU5FX0NMQVNTPSJhbm5vdGF0aW9uLWxpbmUiLGUuQU5OT1RBVElPTl9SRUNUX0NMQVNTPSJhbm5vdGF0aW9uLXJlY3QiLGUuQU5OT1RBVElPTl9DSVJDTEVfQ0xBU1M9ImFubm90YXRpb24tY2lyY2xlIixlLkFOTk9UQVRJT05fTEFCRUxfQ0xBU1M9ImFubm90YXRpb24tbGFiZWwiLGUuX0FOTk9UQVRJT05fTEFCRUxfUEFERElORz00LGV9KShBdnQuQ29tcG9uZW50KTtkdnQuQXhpcz1MdnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShrZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBJdnQ9Qk8sTnZ0PXdwdCxSdnQ9UGd0LE92dD1PX3QsenZ0PURfdCxEdnQ9ZHZ0LEJ2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZvaWQgMD09PW4mJihuPSJib3R0b20iKTt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLl90aWNrTGFiZWxBbmdsZT0wLGkuX3RpY2tMYWJlbFNoZWFyQW5nbGU9MCxpLmFkZENsYXNzKCJjYXRlZ29yeS1heGlzIiksaX1yZXR1cm4gSXZ0Ll9fZXh0ZW5kcyhlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX3dyYXBwZXIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgUnZ0LldyYXBwZXI7cmV0dXJuIG51bGwhPXRoaXMuX3RpY2tMYWJlbE1heExpbmVzJiZ0Lm1heExpbmVzKHRoaXMuX3RpY2tMYWJlbE1heExpbmVzKSx0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiX3dyaXRlciIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgUnZ0LldyaXRlcih0aGlzLl9tZWFzdXJlcix0aGlzLl90eXBlc2V0dGVyQ29udGV4dCx0aGlzLl93cmFwcGVyKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90eXBlc2V0dGVyQ29udGV4dD1uZXcgUnZ0LlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSksdGhpcy5fbWVhc3VyZXI9bmV3IFJ2dC5DYWNoZU1lYXN1cmVyKHRoaXMuX3R5cGVzZXR0ZXJDb250ZXh0KX0sZS5wcm90b3R5cGUuX3Jlc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWRyYXcoKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmlzSG9yaXpvbnRhbCgpPzA6dGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSt0aGlzLm1hcmdpbigpLGk9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpK3RoaXMubWFyZ2luKCk6MDtpZigwPT09dGhpcy5fc2NhbGUuZG9tYWluKCkubGVuZ3RoKXJldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfTtpZih0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpKXt2YXIgcj10aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpO3RoaXMuaXNIb3Jpem9udGFsKCk/aSs9cjpuKz1yfXZhciBvPXRoaXMuX21lYXN1cmVUaWNrTGFiZWxzKHQsZSk7cmV0dXJue21pbldpZHRoOm8udXNlZFdpZHRoK24sbWluSGVpZ2h0Om8udXNlZEhlaWdodCtpfX0sZS5wcm90b3R5cGUuX2NvcmVTaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxlPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5yZXF1ZXN0ZWRTcGFjZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSkubWluSGVpZ2h0OnRoaXMucmVxdWVzdGVkU3BhY2UodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkpLm1pbldpZHRoLG49dGhpcy5tYXJnaW4oKSt0aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpO3JldHVybiBNYXRoLm1pbihlLW4sdCl9LGUucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RG93bnNhbXBsZUluZm8oKS5kb21haW59LGUucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE92dC5Db21wb25lbnQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyLmNhbGwodGhpcyx0LGUpfSxlLnByb3RvdHlwZS5nZXREb3duc2FtcGxlSW5mbz1mdW5jdGlvbih0LG4pe3ZvaWQgMD09PXQmJih0PXRoaXMuX3NjYWxlKSx2b2lkIDA9PT1uJiYobj10LmludmVydFJhbmdlKCkpO3ZhciBpPTA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT8xOjEvTWF0aC5jb3ModGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZS8xODAqTWF0aC5QSSkscj1NYXRoLmNlaWwoZS5fTUlOSU1VTV9XSURUSF9QRVJfTEFCRUxfUFgqaS90LnN0ZXBXaWR0aCgpKTtyZXR1cm57ZG9tYWluOm4uZmlsdGVyKChmdW5jdGlvbih0LGUpe3JldHVybiBlJXI9PTB9KSksc3RlcFdpZHRoOnIqdC5zdGVwV2lkdGgoKX19LGUucHJvdG90eXBlLnRpY2tMYWJlbEFuZ2xlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbEFuZ2xlO2lmKDAhPT10JiY5MCE9PXQmJi05MCE9PXQpdGhyb3cgbmV3IEVycm9yKCJBbmdsZSAiK3QrIiBub3Qgc3VwcG9ydGVkOyBvbmx5IDAsIDkwLCBhbmQgLTkwIGFyZSB2YWxpZCB2YWx1ZXMiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsQW5nbGU9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnRpY2tMYWJlbFNoZWFyQW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZTtpZih0PC04MHx8dD44MCl0aHJvdyBuZXcgRXJyb3IoIkFuZ2xlICIrdCsiIG5vdCBzdXBwb3J0ZWQ7IE11c3QgYmUgYmV0d2VlbiBbLTgwLCA4MF0iKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsU2hlYXJBbmdsZT10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudGlja0xhYmVsTWF4V2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX3RpY2tMYWJlbE1heFdpZHRoOih0aGlzLl90aWNrTGFiZWxNYXhXaWR0aD10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLnRpY2tMYWJlbE1heExpbmVzPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl90aWNrTGFiZWxNYXhMaW5lczoodGhpcy5fdGlja0xhYmVsTWF4TGluZXM9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5fdGlja1NwYWNlUmVxdWlyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCl9LGUucHJvdG90eXBlLl9kcmF3VGlja3M9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dGhpcztzd2l0Y2godGhpcy50aWNrTGFiZWxBbmdsZSgpKXtjYXNlIDA6bj17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iix0b3A6ImNlbnRlciIsYm90dG9tOiJjZW50ZXIifSxpPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoiYm90dG9tIixib3R0b206InRvcCJ9O2JyZWFrO2Nhc2UgOTA6bj17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6InJpZ2h0Iixib3R0b206ImxlZnQifSxpPXtsZWZ0OiJ0b3AiLHJpZ2h0OiJib3R0b20iLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9O2JyZWFrO2Nhc2UtOTA6bj17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6ImxlZnQiLGJvdHRvbToicmlnaHQifSxpPXtsZWZ0OiJib3R0b20iLHJpZ2h0OiJ0b3AiLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9fWUuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIG89TnZ0LnNlbGVjdCh0aGlzKSxhPXIuaXNIb3Jpem9udGFsKCk/dDpyLndpZHRoKCktci5fdGlja1NwYWNlUmVxdWlyZWQoKSxzPXIuaXNIb3Jpem9udGFsKCk/ci5oZWlnaHQoKS1yLl90aWNrU3BhY2VSZXF1aXJlZCgpOnQsbD17eEFsaWduOm5bci5vcmllbnRhdGlvbigpXSx5QWxpZ246aVtyLm9yaWVudGF0aW9uKCldLHRleHRSb3RhdGlvbjpyLnRpY2tMYWJlbEFuZ2xlKCksdGV4dFNoZWFyOnIudGlja0xhYmVsU2hlYXJBbmdsZSgpfTtpZihudWxsIT1yLl90aWNrTGFiZWxNYXhXaWR0aCl7aWYoImxlZnQiPT09ci5vcmllbnRhdGlvbigpJiZhPnIuX3RpY2tMYWJlbE1heFdpZHRoKXt2YXIgYz1hLXIuX3RpY2tMYWJlbE1heFdpZHRoLHU9by5hdHRyKCJ0cmFuc2Zvcm0iKSsiIHRyYW5zbGF0ZSgiK2MrIiwgMCkiO28uYXR0cigidHJhbnNmb3JtIix1KX1hPU1hdGgubWluKGEsci5fdGlja0xhYmVsTWF4V2lkdGgpfXIuX3dyaXRlci53cml0ZShyLmZvcm1hdHRlcigpKGUpLGEscyxsLG8ubm9kZSgpKX0pKX0sZS5wcm90b3R5cGUuX21lYXN1cmVUaWNrTGFiZWxzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX3NjYWxlLmNsb25lV2l0aG91dFByb3ZpZGVycygpLnJhbmdlKFswLHRoaXMuaXNIb3Jpem9udGFsKCk/dDplXSkscj10aGlzLmdldERvd25zYW1wbGVJbmZvKGkpLG89ci5kb21haW4sYT1yLnN0ZXBXaWR0aCxzPXQtdGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKTt0aGlzLmlzSG9yaXpvbnRhbCgpJiYocz1hLDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKHM9ZS10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpKSxzPU1hdGgubWF4KHMsMCkpO3ZhciBsPWE7dGhpcy5pc0hvcml6b250YWwoKSYmKGw9ZS10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpLDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKGw9dC10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpKSxsPU1hdGgubWF4KGwsMCkpLG51bGwhPXRoaXMuX3RpY2tMYWJlbE1heFdpZHRoJiYocz1NYXRoLm1pbihzLHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoKSk7dmFyIGMsdT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX3dyYXBwZXIud3JhcChuLmZvcm1hdHRlcigpKHQpLG4uX21lYXN1cmVyLHMsbCl9KSksaD10aGlzLmlzSG9yaXpvbnRhbCgpJiYwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/TnZ0LnN1bTp6dnQuTWF0aC5tYXgsZD10aGlzLmlzSG9yaXpvbnRhbCgpJiYwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/enZ0Lk1hdGgubWF4Ok52dC5zdW0scD1oKHUsKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9tZWFzdXJlci5tZWFzdXJlKHQud3JhcHBlZFRleHQpLndpZHRofSksMCksZj1kKHUsKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9tZWFzdXJlci5tZWFzdXJlKHQud3JhcHBlZFRleHQpLmhlaWdodH0pLDApO3JldHVybiAwIT09dGhpcy5fdGlja0xhYmVsQW5nbGUmJihwPShjPVtmLHBdKVswXSxmPWNbMV0pLHt1c2VkV2lkdGg6cCx1c2VkSGVpZ2h0OmZ9fSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbj10aGlzLl9zY2FsZSxpPXRoaXMuZ2V0RG93bnNhbXBsZUluZm8obikscj1pLmRvbWFpbixvPWkuc3RlcFdpZHRoLGE9bzt0aGlzLmlzSG9yaXpvbnRhbCgpJiZudWxsIT10aGlzLl90aWNrTGFiZWxNYXhXaWR0aCYmKGE9TWF0aC5taW4oYSx0aGlzLl90aWNrTGFiZWxNYXhXaWR0aCkpO3ZhciBzPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK0R2dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEociksbD1zLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChEdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTLCEwKS5tZXJnZShzKTtzLmV4aXQoKS5yZW1vdmUoKSxsLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsaSl7dmFyIHI9bi5zY2FsZSh0KS1hLzI7cmV0dXJuInRyYW5zbGF0ZSgiKyhlLmlzSG9yaXpvbnRhbCgpP3I6MCkrIiwiKyhlLmlzSG9yaXpvbnRhbCgpPzA6cikrIikifSkpLGwudGV4dCgiIiksdGhpcy5fZHJhd1RpY2tzKG8sbCk7dmFyIGM9InJpZ2h0Ij09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjAsdT0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjA7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitjKyIsIit1KyIpIiksdGhpcy5fc2hvd0FsbFRpY2tNYXJrcygpLHRoaXMuX3Nob3dBbGxUaWNrTGFiZWxzKCksdGhpcy5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbCgpLHRoaXN9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5pc0hvcml6b250YWwoKXx8dGhpcy5fc2NhbGUucmFuZ2UoWzAsdGhpcy5oZWlnaHQoKV0pLHRoaXN9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGUuX01JTklNVU1fV0lEVEhfUEVSX0xBQkVMX1BYPTE1LGV9KShEdnQuQXhpcyk7a2d0LkNhdGVnb3J5PUJ2dDt2YXIgSHZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShIdnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGdnQ9Qk8sVnZ0PXdwdCxVdnQ9UGd0LGp2dD1wdnQsR3Z0PURfdCxXdnQ9ZHZ0LHF2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPSJjZW50ZXIiLGkuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPSExLGkuZm9ybWF0dGVyKGp2dC5nZW5lcmFsKCkpLGl9cmV0dXJuIEZ2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt2YXIgZT1uZXcgVXZ0LlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSxXdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKTt0aGlzLl9tZWFzdXJlcj1uZXcgVXZ0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JhcHBlcj0obmV3IFV2dC5XcmFwcGVyKS5tYXhMaW5lcygxKX0sZS5wcm90b3R5cGUuX2NvbXB1dGVXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uP3RoaXMuX2NvbXB1dGVBcHByb3hpbWF0ZVRleHRXaWR0aCgpOnRoaXMuX2NvbXB1dGVFeGFjdFRleHRXaWR0aCgpO3JldHVybiJjZW50ZXIiPT09dGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc/dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrdDpNYXRoLm1heCh0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSx0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0KX0sZS5wcm90b3R5cGUuX2NvbXB1dGVFeGFjdFRleHRXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXRUaWNrVmFsdWVzKCkubWFwKChmdW5jdGlvbihlKXt2YXIgbj10LmZvcm1hdHRlcigpKGUpO3JldHVybiB0Ll9tZWFzdXJlci5tZWFzdXJlKG4pLndpZHRofSkpO3JldHVybiBHdnQuTWF0aC5tYXgoZSwwKX0sZS5wcm90b3R5cGUuX2NvbXB1dGVBcHByb3hpbWF0ZVRleHRXaWR0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXRUaWNrVmFsdWVzKCksbj10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCJNIikud2lkdGgsaT1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZm9ybWF0dGVyKCkoZSkubGVuZ3RoKm59KSk7cmV0dXJuIEd2dC5NYXRoLm1heChpLDApfSxlLnByb3RvdHlwZS5fY29tcHV0ZUhlaWdodD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQ7cmV0dXJuImNlbnRlciI9PT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz90aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0Ok1hdGgubWF4KHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpLHRoaXMudGlja0xhYmVsUGFkZGluZygpK3QpfSxlLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3NjYWxlLGU9dC5kb21haW4oKSxuPWVbMF08PWVbMV0/ZVswXTplWzFdLGk9ZVswXT49ZVsxXT9lWzBdOmVbMV07cmV0dXJuIHQudGlja3MoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Pj1uJiZ0PD1pfSkpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX2lzU2V0dXApe2lmKCF0aGlzLmlzSG9yaXpvbnRhbCgpKXt2YXIgdD10aGlzLl9jb21wdXRlV2lkdGgoKTtpZih0PnRoaXMud2lkdGgoKXx8dDx0aGlzLndpZHRoKCktdGhpcy5tYXJnaW4oKSlyZXR1cm4gdm9pZCB0aGlzLnJlZHJhdygpfXRoaXMucmVuZGVyKCl9fSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbj17eDowLHk6MCxkeDoiMGVtIixkeToiMC4zZW0ifSxpPXRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpLHI9dGhpcy50aWNrTGFiZWxQYWRkaW5nKCksbz0ibWlkZGxlIixhPTAscz0wLGw9MCxjPTA7aWYodGhpcy5pc0hvcml6b250YWwoKSlzd2l0Y2godGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmcpe2Nhc2UibGVmdCI6bz0iZW5kIixhPS1yLGM9cjticmVhaztjYXNlImNlbnRlciI6Yz1pK3I7YnJlYWs7Y2FzZSJyaWdodCI6bz0ic3RhcnQiLGE9cixjPXJ9ZWxzZSBzd2l0Y2godGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmcpe2Nhc2UidG9wIjpuLmR5PSItMC4zZW0iLGw9cixzPS1yO2JyZWFrO2Nhc2UiY2VudGVyIjpsPWkrcjticmVhaztjYXNlImJvdHRvbSI6bi5keT0iMWVtIixsPXIscz1yfXZhciB1PXRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpO3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpuLng9dS54MSxuLmR5PSIwLjk1ZW0iLHM9dS55MStjO2JyZWFrO2Nhc2UidG9wIjpuLng9dS54MSxuLmR5PSItLjI1ZW0iLHM9dS55MS1jO2JyZWFrO2Nhc2UibGVmdCI6bz0iZW5kIixhPXUueDEtbCxuLnk9dS55MTticmVhaztjYXNlInJpZ2h0IjpvPSJzdGFydCIsYT11LngxK2wsbi55PXUueTF9dmFyIGg9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLGQ9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrV3Z0LkF4aXMuVElDS19MQUJFTF9DTEFTUykuZGF0YShoKTtyZXR1cm4gZC5leGl0KCkucmVtb3ZlKCksZC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoV3Z0LkF4aXMuVElDS19MQUJFTF9DTEFTUywhMCkubWVyZ2UoZCkuc3R5bGUoInRleHQtYW5jaG9yIixvKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKS5hdHRycyhuKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JtYXR0ZXIoKSh0KX0pKSx0aGlzLl90aWNrTGFiZWxDb250YWluZXIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYSsiLCAiK3MrIikiKSx0aGlzLl9zaG93QWxsVGlja01hcmtzKCksdGhpcy5zaG93RW5kVGlja0xhYmVscygpfHx0aGlzLl9oaWRlRW5kVGlja0xhYmVscygpLHRoaXMuX2hpZGVPdmVyZmxvd2luZ1RpY2tMYWJlbHMoKSx0aGlzLl9oaWRlT3ZlcmxhcHBpbmdUaWNrTGFiZWxzKCksImNlbnRlciIhPT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZyYmdGhpcy5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbCgpLHRoaXN9LGUucHJvdG90eXBlLnRpY2tMYWJlbFBvc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nO3ZhciBlPXQudG9Mb3dlckNhc2UoKTtpZih0aGlzLmlzSG9yaXpvbnRhbCgpKXtpZigibGVmdCIhPT1lJiYiY2VudGVyIiE9PWUmJiJyaWdodCIhPT1lKXRocm93IG5ldyBFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSBob3Jpem9udGFsIE51bWVyaWNBeGlzIil9ZWxzZSBpZigidG9wIiE9PWUmJiJjZW50ZXIiIT09ZSYmImJvdHRvbSIhPT1lKXRocm93IG5ldyBFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSB2ZXJ0aWNhbCBOdW1lcmljQXhpcyIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz1lLHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudXNlc1RleHRXaWR0aEFwcHJveGltYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fdXNlc1RleHRXaWR0aEFwcHJveGltYXRpb246KHRoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPXQsdGhpcyl9LGUucHJvdG90eXBlLl9oaWRlRW5kVGlja0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK1d2dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpO2lmKDAhPT1lLnNpemUoKSl7dmFyIG49ZS5ub2RlcygpWzBdO0d2dC5ET00uY2xpZW50UmVjdEluc2lkZShuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxWdnQuc2VsZWN0KG4pLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7dmFyIGk9ZS5ub2RlcygpW2Uuc2l6ZSgpLTFdO0d2dC5ET00uY2xpZW50UmVjdEluc2lkZShpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxWdnQuc2VsZWN0KGkpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9fSxlLnByb3RvdHlwZS5faGlkZU92ZXJsYXBwaW5nVGlja0xhYmVscz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitXdnQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49VnZ0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJpbmhlcml0Ij09PW58fCJ2aXNpYmxlIj09PW59KSksZT10Lm5vZGVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0pKSxuPTE7IXRoaXMuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWwobixlKSYmbjxlLmxlbmd0aDspbis9MTt0LmVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9VnZ0LnNlbGVjdCh0aGlzKTtlJW4hPTAmJmkuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pKX0sZS5wcm90b3R5cGUuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49ImNlbnRlciI9PT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTozKnRoaXMudGlja0xhYmVsUGFkZGluZygpLGk9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBHdnQuRE9NLmV4cGFuZFJlY3QodCxuKX0pKSxyPTA7cjxpLmxlbmd0aC10O3IrPXQpe2lmKEd2dC5ET00uY2xpZW50UmVjdHNPdmVybGFwKGlbcl0saVtyK3RdKSlyZXR1cm4hMX1yZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZX0pKFd2dC5BeGlzKTtIdnQuTnVtZXJpYz1xdnQ7dmFyIFl2dD17fSxYdnQ9e30sJHZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoJHZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS3Z0PURfdDskdnQuaW50ZXJ2YWxUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uIFp2dCh0KXtpZih0PD0wKXRocm93IG5ldyBFcnJvcigiaW50ZXJ2YWwgbXVzdCBiZSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5kb21haW4oKSxpPU1hdGgubWluKG5bMF0sblsxXSkscj1NYXRoLm1heChuWzBdLG5bMV0pLG89TWF0aC5jZWlsKGkvdCkqdCxhPU1hdGguZmxvb3IoKHItbykvdCkrMSxzPWkldD09MD9bXTpbaV0sbD1LdnQuTWF0aC5yYW5nZSgwLGEpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8rZSp0fSkpLGM9ciV0PT0wP1tdOltyXTtyZXR1cm4gcy5jb25jYXQobCkuY29uY2F0KGMpfX0sJHZ0LmludGVnZXJUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uIEp2dCgpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10LmRlZmF1bHRUaWNrcygpO3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24odCxuKXtyZXR1cm4gdCUxPT0wfHwwPT09bnx8bj09PWUubGVuZ3RoLTF9KSl9fTt2YXIgUXZ0PXt9LHRidD17fTtmdW5jdGlvbiBlYnQodCxlLG4pe3JldHVybiBuLShuLXQpKmV9ZnVuY3Rpb24gbmJ0KHQsZSxuKXtyZXR1cm4odCplLW4pLyhlLTEpfWZ1bmN0aW9uIGlidCh0LGUsbixpKXt2YXIgcj1lPjEsbz1yP2k6bjtpZihudWxsPT1vKXJldHVybiBlO3ZhciBhPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxzPU1hdGguYWJzKGFbMV0tYVswXSk7cmV0dXJuKHI/TWF0aC5taW46TWF0aC5tYXgpKGUsby9zKX1mdW5jdGlvbiByYnQodCxlLG4saSxyKXtpZihlPD0xKXJldHVybntjZW50ZXJQb2ludDpuLHpvb21BbW91bnQ6ZX07aWYobnVsbD09aSYmbnVsbD09cilyZXR1cm57Y2VudGVyUG9pbnQ6bix6b29tQW1vdW50OmV9O3ZhciBvPW9idCh0KSxhPShmdW5jdGlvbiBzKHQpe3ZhciBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKTtyZXR1cm4gZVsxXTxlWzBdfSkodCk7aT1udWxsPT1pP2E/MS8wOi0xLzA6aSxyPW51bGw9PXI/YT8tMS8wOjEvMDpyO3ZhciBsPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxjPWxbMF0sdT1sWzFdLGg9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpLGQ9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHUpLHA9ZWJ0KGQsZSxuKSxmPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihpKSxtPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihjKSxnPWVidChtLGUsbiksXz1NYXRoLmFicyhoLWYpO2lmKE1hdGguYWJzKHAtZyk+Xyl7dmFyIHk9KGgtZikvKGQtbSk7cmV0dXJuIDEhPT15P3tjZW50ZXJQb2ludDpuYnQoZCx5LGgpLHpvb21BbW91bnQ6eX06e2NlbnRlclBvaW50Om4sem9vbUFtb3VudDp5fX1yZXR1cm4gcD5oIT1vP3tjZW50ZXJQb2ludDpuYnQoZCxlLGgpLHpvb21BbW91bnQ6ZX06ZzxmIT1vP3tjZW50ZXJQb2ludDpuYnQobSxlLGYpLHpvb21BbW91bnQ6ZX06e2NlbnRlclBvaW50Om4sem9vbUFtb3VudDplfX1mdW5jdGlvbiBvYnQodCl7dmFyIGU9dC5yYW5nZSgpO3JldHVybiBlWzFdPGVbMF19Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHRidC56b29tT3V0PWVidCx0YnQuY29uc3RyYWluZWRab29tPWZ1bmN0aW9uIGFidCh0LGUsbixpLHIsbyxhKXtyZXR1cm4gcmJ0KHQsZT1pYnQodCxlLGksciksbixvLGEpfSx0YnQuY29uc3RyYWluWm9vbUV4dGVudHM9aWJ0LHRidC5jb25zdHJhaW5ab29tVmFsdWVzPXJidCx0YnQuY29uc3RyYWluZWRUcmFuc2xhdGlvbj1mdW5jdGlvbiBzYnQodCxlLG4saSl7dmFyIHIsbz10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksYT1vWzBdLHM9b1sxXSxsPW9idCh0KTtpZihlPjAhPT1sKXtpZihudWxsIT0ocj1pKSl7dmFyIGM9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHMpLHU9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpO2U9KGw/TWF0aC5tYXg6TWF0aC5taW4pKGMrZSx1KS1jfX1lbHNlIGlmKG51bGwhPShyPW4pKXt2YXIgaD10LnNjYWxlVHJhbnNmb3JtYXRpb24oYSksZD10LnNjYWxlVHJhbnNmb3JtYXRpb24ocik7ZT0obD9NYXRoLm1pbjpNYXRoLm1heCkoaCtlLGQpLWh9cmV0dXJuIGV9O3ZhciBsYnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KGxidCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGNidD1EX3QsdWJ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseT0hMCx0aGlzLl9kb21haW5Nb2RpZmljYXRpb25JblByb2dyZXNzPSExLHRoaXMuX3VwZGF0ZUlkPTAsdGhpcy5fY2FsbGJhY2tzPW5ldyBjYnQuQ2FsbGJhY2tTZXQsdGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnM9bmV3IGNidC5TZXR9cmV0dXJuIHQucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybltdfSx0LnByb3RvdHlwZS5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49W107cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciByPWkoZSx0KTtuPW4uY29uY2F0KHIpfSkpLG59LHQucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdC5wcm90b3R5cGUub25VcGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcy5hZGQodCksdGhpc30sdC5wcm90b3R5cGUub2ZmVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLl9kaXNwYXRjaFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUlkKyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LHQucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITAsdGhpcy5fc2V0RG9tYWluKHRoaXMuX2dldEV4dGVudCgpKSx0aGlzfSx0LnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlPWZ1bmN0aW9uKCl7dGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHkmJnRoaXMuYXV0b0RvbWFpbigpfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHNjYWxlIil9LHQucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LHQucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXREb21haW4oKToodGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITEsdGhpcy5fc2V0RG9tYWluKHQpLHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RG9tYWluIil9LHQucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzc3x8KHRoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3M9ITAsdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKHQpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMSl9LHQucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfYmFja2luZ0RvbWFpbiIpfSx0LnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRSYW5nZSgpOih0aGlzLl9zZXRSYW5nZSh0KSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0UmFuZ2UiKX0sdC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX3NldFJhbmdlIil9LHQucHJvdG90eXBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmFkZCh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5kZWxldGUodCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sdC5wcm90b3R5cGUudXBkYXRlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlSWR9LHR9KSgpO2xidC5TY2FsZT11YnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShRdnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBoYnQ9Qk8sZGJ0PXdwdCxwYnQ9dGJ0LGZidD1EX3QsbWJ0PVswLDFdLGdidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztuLl9yYW5nZT1bMCwxXSxuLl9kM1NjYWxlPWRidC5zY2FsZUJhbmQoKSxuLl9kM1NjYWxlLnJhbmdlKG1idCksbi5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlPWRidC5zY2FsZUxpbmVhcigpLG4uX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4obWJ0KTtyZXR1cm4gbi5faW5uZXJQYWRkaW5nPWUuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZyguMyksbi5fb3V0ZXJQYWRkaW5nPWUuX2NvbnZlcnRUb1Bsb3R0YWJsZU91dGVyUGFkZGluZyguNSwuMyksbn1yZXR1cm4gaGJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNsb25lV2l0aG91dFByb3ZpZGVycz1mdW5jdGlvbigpe3ZhciB0PShuZXcgZSkuZG9tYWluKHRoaXMuZG9tYWluKCkpLnJhbmdlKHRoaXMucmFuZ2UoKSkuaW5uZXJQYWRkaW5nKHRoaXMuaW5uZXJQYWRkaW5nKCkpLm91dGVyUGFkZGluZyh0aGlzLm91dGVyUGFkZGluZygpKTtyZXR1cm4gdC5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKCkpLHR9LGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBmYnQuQXJyYXkudW5pcSh0KX0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybiBmYnQuQXJyYXkudW5pcSh0aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpKX0sZS5wcm90b3R5cGUuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5kb21haW4uY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5pbnZlcnRSYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0PXRoaXMucmFuZ2UoKSk7dmFyIG49dGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSxpPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0WzBdKSxyPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0WzFdKSxvPXRoaXMuX2QzU2NhbGUuZG9tYWluKCksYT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2QzU2NhbGUodCkrbi8yfSkpLHM9ZGJ0LmJpc2VjdChhLGkpLGw9ZGJ0LmJpc2VjdChhLHIpO3JldHVybiBvLnNsaWNlKHMsbCl9LGUucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5yYW5nZS5jYWxsKHRoaXMsZSl9LGUuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gMS8oMS10KS0xfSxlLl9jb252ZXJ0VG9QbG90dGFibGVPdXRlclBhZGRpbmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC8oMS1lKX0sZS5wcm90b3R5cGUuX3NldEJhbmRzPWZ1bmN0aW9uKCl7dmFyIHQ9MS0xLygxK3RoaXMuaW5uZXJQYWRkaW5nKCkpLGU9dGhpcy5vdXRlclBhZGRpbmcoKS8oMSt0aGlzLmlubmVyUGFkZGluZygpKTt0aGlzLl9kM1NjYWxlLnBhZGRpbmdJbm5lcih0KSx0aGlzLl9kM1NjYWxlLnBhZGRpbmdPdXRlcihlKX0sZS5wcm90b3R5cGUucmFuZ2VCYW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2NhbGVCYW5kKHRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkpfSxlLnByb3RvdHlwZS5zdGVwV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzY2FsZUJhbmQodGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSooMSt0aGlzLmlubmVyUGFkZGluZygpKSl9LGUucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLmlubmVyUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9pbm5lclBhZGRpbmc6KHRoaXMuX2lubmVyUGFkZGluZz10LHRoaXMucmFuZ2UodGhpcy5yYW5nZSgpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5vdXRlclBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fb3V0ZXJQYWRkaW5nOih0aGlzLl9vdXRlclBhZGRpbmc9dCx0aGlzLnJhbmdlKHRoaXMucmFuZ2UoKSksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZDNTY2FsZSh0KSt0aGlzLl9kM1NjYWxlLmJhbmR3aWR0aCgpLzI7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZShlKX0sZS5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UoKS5tYXAoKGZ1bmN0aW9uKGkpe3JldHVybiBuLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuaW52ZXJ0KHBidC56b29tT3V0KGksdCxlKSl9KSkpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LGUucHJvdG90eXBlLnBhbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gZS5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmludmVydChuK3QpfSkpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUodCl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIG1idH0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbigpfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKHQpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcy5fc2V0QmFuZHMoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhbmdlfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fcmFuZ2U9dCx0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UodCksdGhpcy5fc2V0QmFuZHMoKX0sZS5wcm90b3R5cGUuX3Jlc2NhbGVCYW5kPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUodCktdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKDApKX0sZX0pKGxidC5TY2FsZSk7UXZ0LkNhdGVnb3J5PWdidDt2YXIgX2J0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShfYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB5YnQ9Qk8sdmJ0PXdwdCxiYnQ9RF90LHhidD1sYnQsd2J0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvdW50PTAsdGhpcy50cmFja2VyPXt9fXJldHVybiB0LnByb3RvdHlwZS5nZXRJbmRleD1mdW5jdGlvbih0KXtpZihudWxsIT10aGlzLnRyYWNrZXJbdF0pcmV0dXJuIHRoaXMudHJhY2tlclt0XTt2YXIgZT10aGlzLmNvdW50O3JldHVybiB0aGlzLnRyYWNrZXJbdF09ZSx0aGlzLmNvdW50Kz0xLGV9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5jb3VudD0wLHRoaXMudHJhY2tlcj17fX0sdH0pKCksU2J0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpLHI9dC5jYWxsKHRoaXMpfHx0aGlzO3N3aXRjaChyLl9yYW5nZUxlbmd0aD0xLHIuX3RyYWNrZXI9bmV3IHdidCxuKXtjYXNlIG51bGw6Y2FzZSB2b2lkIDA6bnVsbD09ZS5fcGxvdHRhYmxlQ29sb3JDYWNoZSYmKGUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9ZS5fZ2V0UGxvdHRhYmxlQ29sb3JzKCkpLGk9dmJ0LnNjYWxlT3JkaW5hbCgpLnJhbmdlKGUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGUpO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkxMCI6Y2FzZSJjYXRlZ29yeTEwIjpjYXNlIjEwIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MTApO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMCI6Y2FzZSJjYXRlZ29yeTIwIjpjYXNlIjIwIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MjApO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMGIiOmNhc2UiY2F0ZWdvcnkyMGIiOmNhc2UiMjBiIjppPXZidC5zY2FsZU9yZGluYWwodmJ0LnNjaGVtZUNhdGVnb3J5MjBiKTticmVhaztjYXNlIkNhdGVnb3J5MjBjIjpjYXNlImNhdGVnb3J5MjBjIjpjYXNlIjIwYyI6aT12YnQuc2NhbGVPcmRpbmFsKHZidC5zY2hlbWVDYXRlZ29yeTIwYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvbG9yU2NhbGUgdHlwZSIpfXJldHVybiByLl9kM1NjYWxlPWksci5fcmFuZ2VMZW5ndGg9ci5fZDNTY2FsZS5yYW5nZSgpLmxlbmd0aCxyfXJldHVybiB5YnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGJidC5BcnJheS51bmlxKHQpfSxlLnByb3RvdHlwZS5fZ2V0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGJidC5BcnJheS51bmlxKHRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCkpfSxlLmludmFsaWRhdGVDb2xvckNhY2hlPWZ1bmN0aW9uKCl7ZS5fcGxvdHRhYmxlQ29sb3JDYWNoZT1udWxsfSxlLl9nZXRQbG90dGFibGVDb2xvcnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT12YnQuc2VsZWN0KCJib2R5IikuYXBwZW5kKCJwbG90dGFibGUtY29sb3ItdGVzdGVyIiksbj1iYnQuQ29sb3IuY29sb3JUZXN0KGUsIiIpLGk9MCxyPWJidC5Db2xvci5jb2xvclRlc3QoZSwicGxvdHRhYmxlLWNvbG9ycy0wIik7bnVsbCE9ciYmaTx0aGlzLl9NQVhJTVVNX0NPTE9SU19GUk9NX0NTUyYmKHIhPT1ufHxyIT09dFt0Lmxlbmd0aC0xXSk7KXQucHVzaChyKSxpKysscj1iYnQuQ29sb3IuY29sb3JUZXN0KGUsInBsb3R0YWJsZS1jb2xvcnMtIitpKTtyZXR1cm4gZS5yZW1vdmUoKSx0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLl9kM1NjYWxlKHQpLGk9dGhpcy5fdHJhY2tlci5nZXRJbmRleCh0KSxyPU1hdGguZmxvb3IoaS90aGlzLl9yYW5nZUxlbmd0aCk7aWYoMD09PXIpcmV0dXJuIG47dmFyIG89TWF0aC5sb2cociplLl9MT09QX0xJR0hURU5fRkFDVE9SKzEpO3JldHVybiBiYnQuQ29sb3IubGlnaHRlbkNvbG9yKG4sbyl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcy5fdHJhY2tlci5jbGVhcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KSx0aGlzLl9yYW5nZUxlbmd0aD10Lmxlbmd0aH0sZS5fTE9PUF9MSUdIVEVOX0ZBQ1RPUj0xLjYsZS5fTUFYSU1VTV9DT0xPUlNfRlJPTV9DU1M9MjU2LGV9KSh4YnQuU2NhbGUpO19idC5Db2xvcj1TYnQ7dmFyIE1idD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoTWJ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRWJ0PUJPLFRidD13cHQsQ2J0PURfdCxBYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dm9pZCAwPT09biYmKG49ImxpbmVhciIpO3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztzd2l0Y2gobil7Y2FzZSJsaW5lYXIiOmkuX2NvbG9yU2NhbGU9VGJ0LnNjYWxlTGluZWFyKCk7YnJlYWs7Y2FzZSJsb2ciOmkuX2NvbG9yU2NhbGU9VGJ0LnNjYWxlTG9nKCk7YnJlYWs7Y2FzZSJzcXJ0IjppLl9jb2xvclNjYWxlPVRidC5zY2FsZVNxcnQoKTticmVhaztjYXNlInBvdyI6aS5fY29sb3JTY2FsZT1UYnQuc2NhbGVQb3coKX1pZihudWxsPT1pLl9jb2xvclNjYWxlKXRocm93IG5ldyBFcnJvcigidW5rbm93biBRdWFudGl0YXRpdmVTY2FsZSBzY2FsZSB0eXBlICIrbik7cmV0dXJuIGkucmFuZ2UoZS5SRURTKSxpfXJldHVybiBFYnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9VGJ0LmV4dGVudCh0KTtyZXR1cm4gbnVsbD09ZVswXXx8bnVsbD09ZVsxXT9bXTplfSxlLnByb3RvdHlwZS5fZDNJbnRlcnBvbGF0ZWRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlLnJhbmdlKFswLDFdKS5pbnRlcnBvbGF0ZSh0aGlzLl9pbnRlcnBvbGF0ZUNvbG9ycygpKX0sZS5wcm90b3R5cGUuX2ludGVycG9sYXRlQ29sb3JzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29sb3JSYW5nZTtpZih0Lmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiQ29sb3Igc2NhbGUgYXJyYXlzIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuIik7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPShlPU1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpKih0Lmxlbmd0aC0xKSxpPU1hdGguZmxvb3Iobikscj1NYXRoLmNlaWwobiksbz1uLWk7cmV0dXJuIFRidC5pbnRlcnBvbGF0ZUxhYih0W2ldLHRbcl0pKG8pfX19LGUucHJvdG90eXBlLl9yZXNldFNjYWxlPWZ1bmN0aW9uKCl7dGhpcy5fZDNTY2FsZT10aGlzLl9kM0ludGVycG9sYXRlZFNjYWxlKCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX0sZS5wcm90b3R5cGUuYXV0b0RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCk7cmV0dXJuIHQubGVuZ3RoPjAmJnRoaXMuX3NldERvbWFpbihbQ2J0Lk1hdGgubWluKHQsMCksQ2J0Lk1hdGgubWF4KHQsMCldKSx0aGlzfSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbG9yUmFuZ2V9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9jb2xvclJhbmdlPXQsdGhpcy5fcmVzZXRTY2FsZSgpfSxlLlJFRFM9WyIjRkZGRkZGIiwiI0ZGRjZFMSIsIiNGRUY0QzAiLCIjRkVEOTc2IiwiI0ZFQjI0QyIsIiNGRDhEM0MiLCIjRkM0RTJBIiwiI0UzMUExQyIsIiNCMTAwMjYiXSxlLkJMVUVTPVsiI0ZGRkZGRiIsIiNDQ0ZGRkYiLCIjQTVGRkZEIiwiIzg1RjdGQiIsIiM2RUQzRUYiLCIjNTVBN0UwIiwiIzQxN0ZEMCIsIiMyNTQ1RDMiLCIjMEIwMkUxIl0sZS5QT1NORUc9WyIjMEIwMkUxIiwiIzI1NDVEMyIsIiM0MTdGRDAiLCIjNTVBN0UwIiwiIzZFRDNFRiIsIiM4NUY3RkIiLCIjQTVGRkZEIiwiI0NDRkZGRiIsIiNGRkZGRkYiLCIjRkZGNkUxIiwiI0ZFRjRDMCIsIiNGRUQ5NzYiLCIjRkVCMjRDIiwiI0ZEOEQzQyIsIiNGQzRFMkEiLCIjRTMxQTFDIiwiI0IxMDAyNiJdLGV9KShsYnQuU2NhbGUpO01idC5JbnRlcnBvbGF0ZWRDb2xvcj1BYnQ7dmFyIGtidD17fSxQYnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShQYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBMYnQ9Qk8sSWJ0PXdwdCxOYnQ9dGJ0LFJidD1EX3QsT2J0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl90aWNrR2VuZXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlZmF1bHRUaWNrcygpfSxlLl9wYWRQcm9wb3J0aW9uPS4wNSxlLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9ITAsZS5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnM9bmV3IFJidC5TZXQsZX1yZXR1cm4gTGJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZG9tYWluTWluPW51bGwsdGhpcy5fZG9tYWluTWF4PW51bGwsdC5wcm90b3R5cGUuYXV0b0RvbWFpbi5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGU9ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9kb21haW5NaW58fG51bGw9PXRoaXMuX2RvbWFpbk1heCl7dmFyIGU9dGhpcy5fZ2V0RXh0ZW50KCk7aWYobnVsbCE9dGhpcy5fZG9tYWluTWluKXt2YXIgbj1lWzFdO3JldHVybiB0aGlzLl9kb21haW5NaW4+PW4mJihuPXRoaXMuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluKFt0aGlzLl9kb21haW5NaW4sdGhpcy5fZG9tYWluTWluXSlbMV0pLHZvaWQgdGhpcy5fc2V0RG9tYWluKFt0aGlzLl9kb21haW5NaW4sbl0pfWlmKG51bGwhPXRoaXMuX2RvbWFpbk1heCl7dmFyIGk9ZVswXTtyZXR1cm4gdGhpcy5fZG9tYWluTWF4PD1pJiYoaT10aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihbdGhpcy5fZG9tYWluTWF4LHRoaXMuX2RvbWFpbk1heF0pWzBdKSx2b2lkIHRoaXMuX3NldERvbWFpbihbaSx0aGlzLl9kb21haW5NYXhdKX10LnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlLmNhbGwodGhpcyl9ZWxzZSB0aGlzLl9zZXREb21haW4oW3RoaXMuX2RvbWFpbk1pbix0aGlzLl9kb21haW5NYXhdKX0sZS5wcm90b3R5cGUuX2dldFVuYm91bmRlZEV4dGVudD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCksbj10aGlzLl9kZWZhdWx0RXh0ZW50KCk7aWYoMCE9PWUubGVuZ3RoKXt2YXIgaT1bUmJ0Lk1hdGgubWluKGUsblswXSksUmJ0Lk1hdGgubWF4KGUsblsxXSldO249dGhpcy5fcGFkRG9tYWluKGkpfXJldHVybiBufSxlLnByb3RvdHlwZS5fZ2V0RXh0ZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCk7cmV0dXJuIG51bGwhPXRoaXMuX2RvbWFpbk1pbiYmKHRbMF09dGhpcy5fZG9tYWluTWluKSxudWxsIT10aGlzLl9kb21haW5NYXgmJih0WzFdPXRoaXMuX2RvbWFpbk1heCksdH0sZS5wcm90b3R5cGUuYWRkUGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnMuYWRkKHQpLHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzLmRlbGV0ZSh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSxlLnByb3RvdHlwZS5wYWRQcm9wb3J0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3BhZFByb3BvcnRpb247aWYodDwwKXRocm93IG5ldyBFcnJvcigicGFkUHJvcG9ydGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9wYWRQcm9wb3J0aW9uPXQsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sZS5wcm90b3R5cGUuX3BhZERvbWFpbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRbMF0udmFsdWVPZigpPT09dFsxXS52YWx1ZU9mKCkpcmV0dXJuIHRoaXMuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluKHQpO2lmKDA9PT10aGlzLl9wYWRQcm9wb3J0aW9uKXJldHVybiB0O3ZhciBuPXRoaXMuX3BhZFByb3BvcnRpb24vMixpPXRbMF0scj10WzFdLG89ITEsYT0hMTt0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5mb3JFYWNoKChmdW5jdGlvbih0KXt0KGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudmFsdWVPZigpPT09aS52YWx1ZU9mKCkmJihvPSEwKSx0LnZhbHVlT2YoKT09PXIudmFsdWVPZigpJiYoYT0hMCl9KSl9KSk7dmFyIHM9dGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCk7dGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKHQpO3ZhciBsPW8/aTp0aGlzLmludmVydCh0aGlzLnNjYWxlKGkpLSh0aGlzLnNjYWxlKHIpLXRoaXMuc2NhbGUoaSkpKm4pLGM9YT9yOnRoaXMuaW52ZXJ0KHRoaXMuc2NhbGUocikrKHRoaXMuc2NhbGUociktdGhpcy5zY2FsZShpKSkqbik7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbihzKSx0aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ/dGhpcy5fbmljZURvbWFpbihbbCxjXSk6W2wsY119LGUucHJvdG90eXBlLnNuYXBwaW5nRG9tYWluRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ6KHRoaXMuX3NuYXBwaW5nRG9tYWluRW5hYmxlZD10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUucHJvdG90eXBlLmludmVydD1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIGludmVydCIpfSxlLnByb3RvdHlwZS5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJih0aGlzLl9kb21haW5NaW49ZVswXSx0aGlzLl9kb21haW5NYXg9ZVsxXSksdC5wcm90b3R5cGUuZG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuZG9tYWluTWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tYWluKClbMF06KHRoaXMuX2RvbWFpbk1pbj10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb21haW5NYXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5kb21haW4oKVsxXToodGhpcy5fZG9tYWluTWF4PXQsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcyl9LGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciBlPUlidC5leHRlbnQodC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBSYnQuTWF0aC5pc1ZhbGlkTnVtYmVyKCt0KX0pKSk7cmV0dXJuIG51bGw9PWVbMF18fG51bGw9PWVbMV0/W106ZX0sZS5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5kb21haW4odGhpcy5yYW5nZSgpLm1hcCgoZnVuY3Rpb24oaSl7cmV0dXJuIG4uaW52ZXJ0KE5idC56b29tT3V0KGksdCxlKSl9KSkpfSxlLnByb3RvdHlwZS5wYW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmRvbWFpbih0aGlzLnJhbmdlKCkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gZS5pbnZlcnQobit0KX0pKSl9LGUucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzY2FsZVRyYW5zZm9ybWF0aW9uIil9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnRlZFRyYW5zZm9ybWF0aW9uIil9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBnZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCIpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4iKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbiIpfSxlLnByb3RvdHlwZS5fc2V0RG9tYWluPWZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiBSYnQuTWF0aC5pc05hTih0KXx8dD09PTEvMHx8dD09PS0xLzB9O24oZVswXSl8fG4oZVsxXSk/UmJ0LldpbmRvdy53YXJuKCJXYXJuaW5nOiBRdWFudGl0YXRpdmVTY2FsZXMgY2Fubm90IHRha2UgTmFOIG9yIEluZmluaXR5IGFzIGEgZG9tYWluIHZhbHVlLiBJZ25vcmluZy4iKTp0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RGVmYXVsdFRpY2tzIil9LGUucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpY2tHZW5lcmF0b3IodGhpcyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQsZSl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfbmljZURvbWFpbiIpfSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2RlZmF1bHRFeHRlbnQiKX0sZS5wcm90b3R5cGUudGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl90aWNrR2VuZXJhdG9yOih0aGlzLl90aWNrR2VuZXJhdG9yPXQsdGhpcyl9LGUuX0RFRkFVTFRfTlVNX1RJQ0tTPTEwLGV9KShsYnQuU2NhbGUpO1BidC5RdWFudGl0YXRpdmVTY2FsZT1PYnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShrYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6YnQ9Qk8sRGJ0PXdwdCxCYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2QzU2NhbGU9RGJ0LnNjYWxlTGluZWFyKCksZX1yZXR1cm4gemJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9kZWZhdWx0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuWzAsMV19LGUucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PXRbMV0/W3RbMF0tMSx0WzFdKzFdOnR9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHQpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCEwKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhpcy5kb21haW4odCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhlLl9ERUZBVUxUX05VTV9USUNLUyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuY29weSgpLmRvbWFpbih0KS5uaWNlKGUpLmRvbWFpbigpfSxlfSkoUGJ0LlF1YW50aXRhdGl2ZVNjYWxlKTtrYnQuTGluZWFyPUJidDt2YXIgSGJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShIYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGYnQ9Qk8sVmJ0PXdwdCxVYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9MTApO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZDNTY2FsZT1WYnQuc2NhbGVMb2coKS5iYXNlKGUpLG4uX3NldERvbWFpbihuLl9kZWZhdWx0RXh0ZW50KCkpLG59cmV0dXJuIEZidC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblsxLHRoaXMuX2QzU2NhbGUuYmFzZSgpXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09dFsxXT9bdFswXS90aGlzLl9kM1NjYWxlLmJhc2UoKSx0WzFdKnRoaXMuX2QzU2NhbGUuYmFzZSgpXTp0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuZG9tYWluKHQpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydCh0KX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3MoZS5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9kM1NjYWxlLmNvcHkoKS5kb21haW4odCkubmljZSgpLmRvbWFpbigpfSxlfSkoUGJ0LlF1YW50aXRhdGl2ZVNjYWxlKTtIYnQuTG9nPVVidDt2YXIgamJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShqYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBHYnQ9Qk8sV2J0PXdwdCxxYnQ9RF90LFlidD1YdnQsWGJ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPTEwKTt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fbG9nVGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuW3QsZSxuXS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSlbMV19LGk9cWJ0Lk1hdGgubWluKG4uX3VudHJhbnNmb3JtZWREb21haW4sMCkscj1xYnQuTWF0aC5tYXgobi5fdW50cmFuc2Zvcm1lZERvbWFpbiwwKSxvPWksYT1lKGksciwtbi5fcGl2b3QpLHM9ZShpLHIsbi5fcGl2b3QpLGw9cixjPW4uX2xvZ1RpY2tzKC1hLC1vKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybi10fSkpLnJldmVyc2UoKSx1PW4uX2xvZ1RpY2tzKHMsbCksaD1NYXRoLm1heChpLC1uLl9waXZvdCksZD1NYXRoLm1pbihyLG4uX3Bpdm90KSxwPVdidC5zY2FsZUxpbmVhcigpLmRvbWFpbihbaCxkXSkudGlja3Mobi5faG93TWFueVRpY2tzKGgsZCkpLGY9Yy5jb25jYXQocCkuY29uY2F0KHUpO3JldHVybiBmLmxlbmd0aDw9MSYmKGY9V2J0LnNjYWxlTGluZWFyKCkuZG9tYWluKFtpLHJdKS50aWNrcyhZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKSksZn0sbi5fZDNTY2FsZT1XYnQuc2NhbGVMaW5lYXIoKSxuLl9iYXNlPWUsbi5fcGl2b3Q9bi5fYmFzZSxuLl9zZXREb21haW4obi5fZGVmYXVsdEV4dGVudCgpKSxuLnRpY2tHZW5lcmF0b3Iobi5fbG9nVGlja0dlbmVyYXRvciksZTw9MSl0aHJvdyBuZXcgRXJyb3IoIk1vZGlmaWVkTG9nU2NhbGU6IFRoZSBiYXNlIG11c3QgYmUgPiAxIik7cmV0dXJuIG59cmV0dXJuIEdidC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYWRqdXN0ZWRMb2c9ZnVuY3Rpb24odCl7dmFyIGU9dDwwPy0xOjE7cmV0dXJuKHQqPWUpPHRoaXMuX3Bpdm90JiYodCs9KHRoaXMuX3Bpdm90LXQpL3RoaXMuX3Bpdm90KSx0PU1hdGgubG9nKHQpL01hdGgubG9nKHRoaXMuX2Jhc2UpLHQqPWV9LGUucHJvdG90eXBlLl9pbnZlcnRlZEFkanVzdGVkTG9nPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MD8tMToxO3JldHVybiB0Kj1lLCh0PU1hdGgucG93KHRoaXMuX2Jhc2UsdCkpPHRoaXMuX3Bpdm90JiYodD10aGlzLl9waXZvdCoodC0xKS8odGhpcy5fcGl2b3QtMSkpLHQqPWV9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHRoaXMuX2FkanVzdGVkTG9nKHQpKX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZlcnRlZEFkanVzdGVkTG9nKHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpKX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuZG9tYWluKHQpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VudHJhbnNmb3JtZWREb21haW59LGUucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24oZSl7dGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbj1lO3ZhciBuPVt0aGlzLl9hZGp1c3RlZExvZyhlWzBdKSx0aGlzLl9hZGp1c3RlZExvZyhlWzFdKV07dC5wcm90b3R5cGUuX3NldERvbWFpbi5jYWxsKHRoaXMsbil9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9sb2dUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl9ob3dNYW55VGlja3ModCxlKTtpZigwPT09aSlyZXR1cm5bXTt2YXIgcj1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKHRoaXMuX2Jhc2UpKSxvPU1hdGguY2VpbChNYXRoLmxvZyhlKS9NYXRoLmxvZyh0aGlzLl9iYXNlKSksYT1XYnQucmFuZ2UobyxyLC1NYXRoLmNlaWwoKG8tcikvaSkpLHM9V2J0LnJhbmdlKHRoaXMuX2Jhc2UsMSwtKHRoaXMuX2Jhc2UtMSkpLm1hcChNYXRoLmZsb29yKSxsPXFidC5BcnJheS51bmlxKHMpLGM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBsLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KG4uX2Jhc2UsdC0xKSplfSkpfSkpO3JldHVybiBxYnQuQXJyYXkuZmxhdHRlbihjKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiB0PD1uJiZuPD1lfSkpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKX0sZS5wcm90b3R5cGUuX2hvd01hbnlUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2FkanVzdGVkTG9nKHFidC5NYXRoLm1pbih0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluLDApKSxpPXRoaXMuX2FkanVzdGVkTG9nKHFidC5NYXRoLm1heCh0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluLDApKSxyPXRoaXMuX2FkanVzdGVkTG9nKHQpLG89dGhpcy5fYWRqdXN0ZWRMb2coZSk7cmV0dXJuIE1hdGguY2VpbCgoby1yKS8oaS1uKSpZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZS5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bMCx0aGlzLl9iYXNlXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe2lmKHRbMF09PT10WzFdKXt2YXIgZT10WzBdO3JldHVybiBlPjA/W2UvdGhpcy5fYmFzZSxlKnRoaXMuX2Jhc2VdOjA9PT1lP1stdGhpcy5fYmFzZSx0aGlzLl9iYXNlXTpbZSp0aGlzLl9iYXNlLGUvdGhpcy5fYmFzZV19cmV0dXJuIHR9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhZYnQuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZX0pKFBidC5RdWFudGl0YXRpdmVTY2FsZSk7amJ0Lk1vZGlmaWVkTG9nPVhidDt2YXIgJGJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBLYnQ9Qk8sWmJ0PXdwdCxKYnQ9WXZ0LFFidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZDNTY2FsZT1aYnQuc2NhbGVUaW1lKCksZS5hdXRvRG9tYWluKCksZX1yZXR1cm4gS2J0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnRpY2tJbnRlcnZhbD1mdW5jdGlvbih0LG4saSl7dm9pZCAwPT09biYmKG49MSksdm9pZCAwPT09aSYmKGk9ITEpO3ZhciByPVpidC5zY2FsZVRpbWUoKSxvPWUudGltZUludGVydmFsVG9EM1RpbWUodCxpKS5ldmVyeShuKTtyZXR1cm4gci5kb21haW4odGhpcy5kb21haW4oKSksci5yYW5nZSh0aGlzLnJhbmdlKCkpLHIudGlja3Mobyl9LGUucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24oZSl7aWYoZVsxXTxlWzBdKXRocm93IG5ldyBFcnJvcigiU2NhbGUuVGltZSBkb21haW4gdmFsdWVzIG11c3QgYmUgaW4gY2hyb25vbG9naWNhbCBvcmRlciIpO3JldHVybiB0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bbmV3IERhdGUoIjE5NzAtMDEtMDEiKSxuZXcgRGF0ZSgiMTk3MC0wMS0wMiIpXX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0uZ2V0VGltZSgpLG49dFsxXS5nZXRUaW1lKCk7aWYoZT09PW4pe3ZhciBpPW5ldyBEYXRlKGUpO2kuc2V0RGF0ZShpLmdldERhdGUoKS0xKTt2YXIgcj1uZXcgRGF0ZShuKTtyZXR1cm4gci5zZXREYXRlKHIuZ2V0RGF0ZSgpKzEpLFtpLHJdfXJldHVybiB0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZShuZXcgRGF0ZSh0KSl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52ZXJ0KHQpLmdldFRpbWUoKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApO3JldHVyblt0WzBdLnZhbHVlT2YoKSx0WzFdLnZhbHVlT2YoKV19LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb21haW4oKTtyZXR1cm5bdFswXS52YWx1ZU9mKCksdFsxXS52YWx1ZU9mKCldfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt2YXIgZT10WzFdO3RoaXMuZG9tYWluKFtuZXcgRGF0ZSh0WzBdKSxuZXcgRGF0ZShlKV0pfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydCh0KX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3MoZS5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5jb3B5KCkuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKX0sZS50aW1lSW50ZXJ2YWxUb0QzVGltZT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlIEpidC5UaW1lSW50ZXJ2YWwuc2Vjb25kOnJldHVybiBlP1pidC51dGNTZWNvbmQ6WmJ0LnRpbWVTZWNvbmQ7Y2FzZSBKYnQuVGltZUludGVydmFsLm1pbnV0ZTpyZXR1cm4gZT9aYnQudXRjTWludXRlOlpidC50aW1lTWludXRlO2Nhc2UgSmJ0LlRpbWVJbnRlcnZhbC5ob3VyOnJldHVybiBlP1pidC51dGNIb3VyOlpidC50aW1lSG91cjtjYXNlIEpidC5UaW1lSW50ZXJ2YWwuZGF5OnJldHVybiBlP1pidC51dGNEYXk6WmJ0LnRpbWVEYXk7Y2FzZSBKYnQuVGltZUludGVydmFsLndlZWs6cmV0dXJuIGU/WmJ0LnV0Y1dlZWs6WmJ0LnRpbWVXZWVrO2Nhc2UgSmJ0LlRpbWVJbnRlcnZhbC5tb250aDpyZXR1cm4gZT9aYnQudXRjTW9udGg6WmJ0LnRpbWVNb250aDtjYXNlIEpidC5UaW1lSW50ZXJ2YWwueWVhcjpyZXR1cm4gZT9aYnQudXRjWWVhcjpaYnQudGltZVllYXI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVGltZUludGVydmFsIHNwZWNpZmllZCBkb2VzIG5vdCBleGlzdDogIit0KX19LGV9KShQYnQuUXVhbnRpdGF0aXZlU2NhbGUpOyRidC5UaW1lPVFidCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTzt0LlRpY2tHZW5lcmF0b3JzPSR2dCxlLl9fZXhwb3J0U3RhcihRdnQsdCksZS5fX2V4cG9ydFN0YXIoX2J0LHQpLGUuX19leHBvcnRTdGFyKE1idCx0KSxlLl9fZXhwb3J0U3RhcihrYnQsdCksZS5fX2V4cG9ydFN0YXIoSGJ0LHQpLGUuX19leHBvcnRTdGFyKGpidCx0KSxlLl9fZXhwb3J0U3RhcigkYnQsdCk7dmFyIG49UXZ0LGk9UGJ0O3QuaXNUcmFuc2Zvcm1hYmxlPWZ1bmN0aW9uIHIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBpLlF1YW50aXRhdGl2ZVNjYWxlfHx0IGluc3RhbmNlb2Ygbi5DYXRlZ29yeX19KShYdnQpLChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPLG49d3B0LGk9UGd0LHI9cHZ0LG89WHZ0LGE9RF90LHM9Ymd0LGw9ZHZ0O3QuVGltZUludGVydmFsPXMubWFrZUVudW0oWyJzZWNvbmQiLCJtaW51dGUiLCJob3VyIiwiZGF5Iiwid2VlayIsIm1vbnRoIiwieWVhciJdKSx0LlRpbWVBeGlzT3JpZW50YXRpb249cy5tYWtlRW51bShbInRvcCIsImJvdHRvbSJdKSx0LlRpZXJMYWJlbFBvc2l0aW9uPXMubWFrZUVudW0oWyJiZXR3ZWVuIiwiY2VudGVyIl0pO3ZhciBjLHU9KGZ1bmN0aW9uKHMpe2Z1bmN0aW9uIHUodCxlLG4pe3ZhciBpPXMuY2FsbCh0aGlzLHQsZSl8fHRoaXM7cmV0dXJuIGkuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbj1udWxsLGkuX3RpZXJMYWJlbFBvc2l0aW9ucz1bXSxpLl91c2VVVEM9bixpLmFkZENsYXNzKCJ0aW1lLWF4aXMiKSxpLnRpY2tMYWJlbFBhZGRpbmcoNSksaS5heGlzQ29uZmlndXJhdGlvbnModS5fREVGQVVMVF9USU1FX0FYSVNfQ09ORklHVVJBVElPTlMoaS5fdXNlVVRDKSksaS5hbm5vdGF0aW9uRm9ybWF0dGVyKHIudGltZSgiJWEgJWIgJWQsICVZIixpLl91c2VVVEMpKSxpfXJldHVybiBlLl9fZXh0ZW5kcyh1LHMpLHUucHJvdG90eXBlLnRpZXJMYWJlbFBvc2l0aW9ucz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90aWVyTGFiZWxQb3NpdGlvbnM7aWYoIXQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiJiZXR3ZWVuIj09PXQudG9Mb3dlckNhc2UoKXx8ImNlbnRlciI9PT10LnRvTG93ZXJDYXNlKCl9KSkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBwb3NpdGlvbiBmb3IgdGllciBsYWJlbHMiKTtyZXR1cm4gdGhpcy5fdGllckxhYmVsUG9zaXRpb25zPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSx1LnByb3RvdHlwZS5tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uOih0aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249dCx0aGlzLnJlZHJhdygpLHRoaXMpfSx1LnByb3RvdHlwZS5jdXJyZW50QXhpc0NvbmZpZ3VyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXhdfSx1LnByb3RvdHlwZS5heGlzQ29uZmlndXJhdGlvbnM9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zO3RoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucz10LHRoaXMuX251bVRpZXJzPWEuTWF0aC5tYXgodGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpLDApLHRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX3NldHVwRG9tRWxlbWVudHMoKTtmb3IodmFyIGU9dGhpcy50aWVyTGFiZWxQb3NpdGlvbnMoKSxuPVtdLGk9MDtpPHRoaXMuX251bVRpZXJzO2krKyluLnB1c2goZVtpXXx8ImJldHdlZW4iKTtyZXR1cm4gdGhpcy50aWVyTGFiZWxQb3NpdGlvbnMobiksdGhpcy5yZWRyYXcoKSx0aGlzfSx1LnByb3RvdHlwZS5fZ2V0TW9zdFByZWNpc2VDb25maWd1cmF0aW9uSW5kZXg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aDtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aTxlJiZuLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gdC5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uKGUpfSkpJiYoZT1pKX0pKSxlPT09dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aCYmKGEuV2luZG93Lndhcm4oInpvb21lZCBvdXQgdG9vIGZhcjogY291bGQgbm90IGZpbmQgc3VpdGFibGUgaW50ZXJ2YWwgdG8gZGlzcGxheSBsYWJlbHMiKSwtLWUpLGV9LHUucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKHQpe2lmKHQmJigicmlnaHQiPT09dC50b0xvd2VyQ2FzZSgpfHwibGVmdCI9PT10LnRvTG93ZXJDYXNlKCkpKXRocm93IG5ldyBFcnJvcih0KyIgaXMgbm90IGEgc3VwcG9ydGVkIG9yaWVudGF0aW9uIGZvciBUaW1lQXhpcyAtIG9ubHkgaG9yaXpvbnRhbCBvcmllbnRhdGlvbnMgYXJlIHN1cHBvcnRlZCIpO3JldHVybiBzLnByb3RvdHlwZS5vcmllbnRhdGlvbi5jYWxsKHRoaXMsdCl9LHUucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodDt0aGlzLl90aWVySGVpZ2h0cz1bXTtmb3IodmFyIGU9MDtlPHRoaXMuX251bVRpZXJzO2UrKyl0aGlzLl90aWVySGVpZ2h0cy5wdXNoKHQrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrKCJiZXR3ZWVuIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT8wOnRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpKSk7cmV0dXJuIG4uc3VtKHRoaXMuX3RpZXJIZWlnaHRzKX0sdS5wcm90b3R5cGUuX2dldEludGVydmFsTGVuZ3RoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NjYWxlLmRvbWFpbigpWzBdLG49by5UaW1lLnRpbWVJbnRlcnZhbFRvRDNUaW1lKHQuaW50ZXJ2YWwsdGhpcy5fdXNlVVRDKS5vZmZzZXQoZSx0LnN0ZXApO3JldHVybiBuPnRoaXMuX3NjYWxlLmRvbWFpbigpWzFdP3RoaXMud2lkdGgoKTpNYXRoLmFicyh0aGlzLl9zY2FsZS5zY2FsZShuKS10aGlzLl9zY2FsZS5zY2FsZShlKSl9LHUucHJvdG90eXBlLl9tYXhXaWR0aEZvckludGVydmFsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tZWFzdXJlci5tZWFzdXJlKHQuZm9ybWF0dGVyKHUuX0xPTkdfREFURSkpLndpZHRofSx1LnByb3RvdHlwZS5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbil7dmFyIGU9dS5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVhbdGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uXSxuPXUuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYW3QuaW50ZXJ2YWxdO2lmKG51bGwhPWUmJm51bGwhPW4mJm48ZSlyZXR1cm4hMX12YXIgaT10aGlzLl9tYXhXaWR0aEZvckludGVydmFsKHQpKzIqdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7cmV0dXJuIE1hdGgubWluKHRoaXMuX2dldEludGVydmFsTGVuZ3RoKHQpLHRoaXMud2lkdGgoKSk+PWl9LHUucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7dmFyIG49cy5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLHQsZSksaT10aGlzLl90aWVySGVpZ2h0cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxpLHIpe3JldHVybiB0K2U+bi5oZWlnaHQ/dDp0K2V9KSkscj10aGlzLm1hcmdpbigpKyh0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpP3RoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKnRoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCk6MCk7cmV0dXJuIG4uaGVpZ2h0PU1hdGgubWluKG4uaGVpZ2h0LGkrciksbn0sdS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cy5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc2V0dXBEb21FbGVtZW50cygpfSx1LnByb3RvdHlwZS5fc2V0dXBEb21FbGVtZW50cz1mdW5jdGlvbigpe3RoaXMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIrdS5USU1FX0FYSVNfVElFUl9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckxhYmVsQ29udGFpbmVycz1bXSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnM9W10sdGhpcy5fdGllckJhc2VsaW5lcz1bXSx0aGlzLl90aWNrTGFiZWxDb250YWluZXIucmVtb3ZlKCksdGhpcy5fYmFzZWxpbmUucmVtb3ZlKCk7Zm9yKHZhciB0PTA7dDx0aGlzLl9udW1UaWVyczsrK3Qpe3ZhciBlPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQodS5USU1FX0FYSVNfVElFUl9DTEFTUywhMCk7dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5wdXNoKGUuYXBwZW5kKCJnIikuY2xhc3NlZChsLkF4aXMuVElDS19MQUJFTF9DTEFTUysiLWNvbnRhaW5lciIsITApKSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnMucHVzaChlLmFwcGVuZCgiZyIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApKSx0aGlzLl90aWVyQmFzZWxpbmVzLnB1c2goZS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApKX12YXIgbj1uZXcgaS5TdmdDb250ZXh0KHRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbMF0ubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgaS5DYWNoZU1lYXN1cmVyKG4pfSx1LnByb3RvdHlwZS5fZ2V0VGlja0ludGVydmFsVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zY2FsZS50aWNrSW50ZXJ2YWwodC5pbnRlcnZhbCx0LnN0ZXAsdGhpcy5fdXNlVVRDKX0sdS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnNbdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleF0ucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlLmNvbmNhdCh0Ll9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXMobikpfSksW10pfSx1LnByb3RvdHlwZS5fY2xlYW5UaWVycz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5sZW5ndGg7dCsrKXRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbdF0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19MQUJFTF9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllck1hcmtDb250YWluZXJzW3RdLnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTUFSS19DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckJhc2VsaW5lc1t0XS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSx1LnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlc0ZvckNvbmZpZ3VyYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2NhbGUudGlja0ludGVydmFsKHQuaW50ZXJ2YWwsdC5zdGVwLHRoaXMuX3VzZVVUQyksbj10aGlzLl9zY2FsZS5kb21haW4oKSxpPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZU9mKCl9KSk7cmV0dXJuLTE9PT1pLmluZGV4T2YoblswXS52YWx1ZU9mKCkpJiZlLnVuc2hpZnQoblswXSksLTE9PT1pLmluZGV4T2YoblsxXS52YWx1ZU9mKCkpJiZlLnB1c2goblsxXSksZX0sdS5wcm90b3R5cGUuX3JlbmRlclRpZXJMYWJlbHM9ZnVuY3Rpb24odCxlLGkpe3ZhciByPXRoaXMsbz10aGlzLl9nZXRUaWNrVmFsdWVzRm9yQ29uZmlndXJhdGlvbihlKSxhPVtdOyJiZXR3ZWVuIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXSYmMT09PWUuc3RlcD9vLm1hcCgoZnVuY3Rpb24odCxlKXtlKzE+PW8ubGVuZ3RofHxhLnB1c2gobmV3IERhdGUoKG9bZSsxXS52YWx1ZU9mKCktb1tlXS52YWx1ZU9mKCkpLzIrb1tlXS52YWx1ZU9mKCkpKX0pKTphPW87dmFyIHM9dC5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5kYXRhKGEsKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodC52YWx1ZU9mKCkpfSkpLGM9cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsITApO2MuYXBwZW5kKCJ0ZXh0Iik7dmFyIHUsaD0iY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXXx8MT09PWUuc3RlcD8wOnRoaXMudGlja0xhYmVsUGFkZGluZygpO3U9ImJvdHRvbSI9PT10aGlzLm9yaWVudGF0aW9uKCk/bi5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKzEpKS10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKToiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXT90aGlzLmhlaWdodCgpLW4uc3VtKHRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsaSkpLXRoaXMudGlja0xhYmVsUGFkZGluZygpLXRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpOnRoaXMuaGVpZ2h0KCktbi5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7dmFyIGQ9cy5tZXJnZShjKSxwPWQuc2VsZWN0QWxsKCJ0ZXh0Iik7cC5zaXplKCk+MCYmcC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitoKyIsIit1KyIpIikscy5leGl0KCkucmVtb3ZlKCksZC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrci5fc2NhbGUuc2NhbGUodCkrIiwwKSJ9KSk7dmFyIGY9ImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbaV18fDE9PT1lLnN0ZXA/Im1pZGRsZSI6InN0YXJ0IjtkLnNlbGVjdEFsbCgidGV4dCIpLnRleHQoZS5mb3JtYXR0ZXIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZil9LHUucHJvdG90eXBlLl9yZW5kZXJUaWNrTWFya3M9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl90aWVyTWFya0NvbnRhaW5lcnNbZV0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLHI9aS5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2UoaSksbz10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKSxhPXRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTsiYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT8oby55MT1hLG8ueTI9YSsoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5pbm5lclRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpOihvLnkxPXRoaXMuaGVpZ2h0KCktYSxvLnkyPXRoaXMuaGVpZ2h0KCktKGErKCJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2VdP3RoaXMuaW5uZXJUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbZV0pKSksci5hdHRycyhvKSwiYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT8oby55MT1hLG8ueTI9YSsoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5lbmRUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbZV0pKTooby55MT10aGlzLmhlaWdodCgpLWEsby55Mj10aGlzLmhlaWdodCgpLShhKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT90aGlzLmVuZFRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpKSxuLnNlbGVjdChyLm5vZGVzKClbMF0pLmF0dHJzKG8pLG4uc2VsZWN0KHIubm9kZXMoKVtyLnNpemUoKS0xXSkuYXR0cnMobyksbi5zZWxlY3Qoci5ub2RlcygpWzBdKS5jbGFzc2VkKGwuQXhpcy5FTkRfVElDS19NQVJLX0NMQVNTLCEwKSxuLnNlbGVjdChyLm5vZGVzKClbci5zaXplKCktMV0pLmNsYXNzZWQobC5BeGlzLkVORF9USUNLX01BUktfQ0xBU1MsITApLGkuZXhpdCgpLnJlbW92ZSgpfSx1LnByb3RvdHlwZS5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTUFSS19DTEFTUykuZGF0YSh0KSxuPWUuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKGwuQXhpcy5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKGUpLGk9dGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCk7aS55Mj0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTp0aGlzLmhlaWdodCgpLXRoaXMudGlja0xhYmVsUGFkZGluZygpLG4uYXR0cnMoaSksZS5leGl0KCkucmVtb3ZlKCl9LHUucHJvdG90eXBlLl9nZW5lcmF0ZUxhYmVsbGVzc1RpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXg8MT9bXTp0aGlzLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXModGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXgtMV1bMF0pfSx1LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleD10aGlzLl9nZXRNb3N0UHJlY2lzZUNvbmZpZ3VyYXRpb25JbmRleCgpO3ZhciBlPXRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XTt0aGlzLl9jbGVhblRpZXJzKCksZS5mb3JFYWNoKChmdW5jdGlvbihlLG4pe3JldHVybiB0Ll9yZW5kZXJUaWVyTGFiZWxzKHQuX3RpZXJMYWJlbENvbnRhaW5lcnNbbl0sZSxuKX0pKTtmb3IodmFyIG49ZS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uKGUpfSkpLGk9MCxyPTA7cjxNYXRoLm1heChlLmxlbmd0aCwxKTsrK3Ipe3ZhciBvPXRoaXMuX2dlbmVyYXRlQmFzZWxpbmVBdHRySGFzaCgpO28ueTErPSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP2k6LWksby55Mj1vLnkxLHRoaXMuX3RpZXJCYXNlbGluZXNbcl0uYXR0cnMobykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0IiksaSs9dGhpcy5fdGllckhlaWdodHNbcl19dmFyIGE9W10scz10aGlzLl9zY2FsZS5kb21haW4oKSxsPXRoaXMuX3NjYWxlLnNjYWxlKHNbMV0pLXRoaXMuX3NjYWxlLnNjYWxlKHNbMF0pOzEuNSp0aGlzLl9nZXRJbnRlcnZhbExlbmd0aChlWzBdKT49bCYmKGE9dGhpcy5fZ2VuZXJhdGVMYWJlbGxlc3NUaWNrcygpKSx0aGlzLl9yZW5kZXJMYWJlbGxlc3NUaWNrTWFya3MoYSksdGhpcy5faGlkZU92ZXJmbG93aW5nVGllcnMoKTtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXRoaXMuX3JlbmRlclRpY2tNYXJrcyhuW3JdLHIpLHRoaXMuX2hpZGVPdmVybGFwcGluZ0FuZEN1dE9mZkxhYmVscyhyKTtyZXR1cm4gdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpLHRoaXN9LHUucHJvdG90eXBlLl9oaWRlT3ZlcmZsb3dpbmdUaWVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmhlaWdodCgpLG49MDt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIi4iK3UuVElNRV9BWElTX1RJRVJfQ0xBU1MpLmF0dHIoInZpc2liaWxpdHkiLChmdW5jdGlvbihpLHIpe3JldHVybihuKz10Ll90aWVySGVpZ2h0c1tyXSk8PWU/ImluaGVyaXQiOiJoaWRkZW4ifSkpfSx1LnByb3RvdHlwZS5faGlkZU92ZXJsYXBwaW5nQW5kQ3V0T2ZmTGFiZWxzPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcyxyPXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXRoaXMuX3RpZXJNYXJrQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX01BUktfQ0xBU1MpLmZpbHRlcigoZnVuY3Rpb24odCxlKXt2YXIgaT1uLnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiJ2aXNpYmxlIj09PWl8fCJpbmhlcml0Ij09PWl9KSkubm9kZXMoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSkpO3RoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbdF0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKChmdW5jdGlvbih0LGUpe3ZhciBpPW4uc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuInZpc2libGUiPT09aXx8ImluaGVyaXQiPT09aX0pKS5lYWNoKChmdW5jdGlvbih0LHMpe3ZhciBsLGM9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx1PW4uc2VsZWN0KHRoaXMpLGg9b1tzXSxkPW9bcysxXSxwPW51bGwhPWUmJmEuRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChjLGUpLGY9bnVsbCE9aCYmYS5ET00uY2xpZW50UmVjdHNPdmVybGFwKGMsaCksbT1udWxsIT1kJiZhLkRPTS5jbGllbnRSZWN0c092ZXJsYXAoYyxkKTtsPWMsIShNYXRoLmZsb29yKHIubGVmdCk8PU1hdGguY2VpbChsLmxlZnQpJiZNYXRoLmZsb29yKHIudG9wKTw9TWF0aC5jZWlsKGwudG9wKSYmTWF0aC5mbG9vcihsLnJpZ2h0KTw9TWF0aC5jZWlsKHIubGVmdCtpLndpZHRoKCkpJiZNYXRoLmZsb29yKGwuYm90dG9tKTw9TWF0aC5jZWlsKHIudG9wK2kuaGVpZ2h0KCkpKXx8cHx8Znx8bT91LnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik6KGU9Yyx1LnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpKX0pKX0sdS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7cy5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sdS5USU1FX0FYSVNfVElFUl9DTEFTUz0idGltZS1heGlzLXRpZXIiLHUuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYPSgoYz17fSlbdC5UaW1lSW50ZXJ2YWwuc2Vjb25kXT0wLGNbdC5UaW1lSW50ZXJ2YWwubWludXRlXT0xLGNbdC5UaW1lSW50ZXJ2YWwuaG91cl09MixjW3QuVGltZUludGVydmFsLmRheV09MyxjW3QuVGltZUludGVydmFsLndlZWtdPTQsY1t0LlRpbWVJbnRlcnZhbC5tb250aF09NSxjW3QuVGltZUludGVydmFsLnllYXJdPTYsYyksdS5fREVGQVVMVF9USU1FX0FYSVNfQ09ORklHVVJBVElPTlM9ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHIudGltZSh0LGUpfTtyZXR1cm5bW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSTolTTolUyAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnNlY29uZCxzdGVwOjUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MzAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUk6JU0gJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDo1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjEwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjE1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjMwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDozLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDo2LGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmhvdXIsc3RlcDoxMixmb3JtYXR0ZXI6bigiJUkgJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlYSAlZSIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlZSIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlYiIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1vbnRoLHN0ZXA6Myxmb3JtYXR0ZXI6bigiJWIiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjYsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIleSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjI1LGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NTAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoyMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDo1MDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxZTMsZm9ybWF0dGVyOm4oIiVZIil9XV19LHUuX0xPTkdfREFURT1uZXcgRGF0ZSg5OTk5LDgsMjksMTIsNTksOTk5OSksdX0pKGwuQXhpcyk7dC5UaW1lPXV9KShZdnQpLChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKGtndCx0KSxlLl9fZXhwb3J0U3RhcihIdnQsdCksZS5fX2V4cG9ydFN0YXIoWXZ0LHQpfSkoQWd0KTt2YXIgdHh0PXt9LGV4dD17fSxueHQ9e30saXh0PXt9LHJ4dD17fSxveHQ9e30sYXh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoYXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgc3h0PURfdCxseHQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb249e30sdGhpcy5fZXZlbnRUYXJnZXQ9ZG9jdW1lbnQsdGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldD17fSx0aGlzLl9jb25uZWN0ZWQ9ITF9cmV0dXJuIHQucHJvdG90eXBlLl9oYXNOb0NhbGxiYWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyh0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0KSxlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoMCE9PXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdFtlXV0uc2l6ZSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5wcm90b3R5cGUuX2Nvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2Nvbm5lY3RlZHx8KE9iamVjdC5rZXlzKHRoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb24pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuX2V2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZSx0Ll9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2VdLCJ3aGVlbCI9PT1lP3twYXNzaXZlOiExfTp2b2lkIDApfSkpLHRoaXMuX2Nvbm5lY3RlZD0hMCl9LHQucHJvdG90eXBlLl9kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9jb25uZWN0ZWQmJnRoaXMuX2hhc05vQ2FsbGJhY2tzKCkmJihPYmplY3Qua2V5cyh0aGlzLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0Ll9ldmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlXSl9KSksdGhpcy5fY29ubmVjdGVkPSExKX0sdC5wcm90b3R5cGUuX2FkZENhbGxiYWNrRm9yRXZlbnQ9ZnVuY3Rpb24odCxlKXtudWxsPT10aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdJiYodGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XT1uZXcgc3h0LkNhbGxiYWNrU2V0KSx0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdLmFkZChlKSx0aGlzLl9jb25uZWN0KCl9LHQucHJvdG90eXBlLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50PWZ1bmN0aW9uKHQsZSl7bnVsbCE9dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XSYmdGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XS5kZWxldGUoZSksdGhpcy5fZGlzY29ubmVjdCgpfSx0LnByb3RvdHlwZS5fY2FsbENhbGxiYWNrc0ZvckV2ZW50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3ZhciBpPXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF07bnVsbCE9aSYmaS5jYWxsQ2FsbGJhY2tzLmFwcGx5KGksZSl9LHR9KSgpO2F4dC5EaXNwYXRjaGVyPWx4dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KG94dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGN4dD1CTyx1eHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZRE9XTl9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fcHJvY2Vzc0tleWRvd24odCl9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZVVBfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIG4uX3Byb2Nlc3NLZXl1cCh0KX0sbn1yZXR1cm4gY3h0Ll9fZXh0ZW5kcyhlLHQpLGUuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50W2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09dCYmKHQ9bmV3IGUsZG9jdW1lbnRbZS5fRElTUEFUQ0hFUl9LRVldPXQpLHR9LGUucHJvdG90eXBlLl9wcm9jZXNzS2V5ZG93bj1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZRE9XTl9FVkVOVF9OQU1FLHQua2V5Q29kZSx0KX0sZS5wcm90b3R5cGUuX3Byb2Nlc3NLZXl1cD1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZVVBfRVZFTlRfTkFNRSx0LmtleUNvZGUsdCl9LGUucHJvdG90eXBlLm9uS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25LZXlVcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlVUF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX0tFWVVQX0VWRU5UX05BTUUsdCksdGhpc30sZS5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfS2V5IixlLl9LRVlET1dOX0VWRU5UX05BTUU9ImtleWRvd24iLGUuX0tFWVVQX0VWRU5UX05BTUU9ImtleXVwIixlfSkoYXh0LkRpc3BhdGNoZXIpO294dC5LZXk9dXh0O3ZhciBoeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KGh4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGR4dD1CTyxweHQ9RF90LGZ4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7aS5fbGFzdE1vdXNlUG9zaXRpb249e3g6LTEseTotMX0saS5fdHJhbnNsYXRvcj1weHQuZ2V0VHJhbnNsYXRvcihuKTt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSwicGFnZSIpfTtyZXR1cm4gaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9NT1VTRU9WRVJfRVZFTlRfTkFNRV09cixpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFTU9WRV9FVkVOVF9OQU1FXT1yLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VPVVRfRVZFTlRfTkFNRV09cixpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFRE9XTl9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRURPV05fRVZFTlRfTkFNRSl9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VVUF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9NT1VTRVVQX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9XSEVFTF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9XSEVFTF9FVkVOVF9OQU1FKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9EQkxDTElDS19FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9EQkxDTElDS19FVkVOVF9OQU1FKX0saX1yZXR1cm4gZHh0Ll9fZXh0ZW5kcyhlLHQpLGUuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbih0KXt2YXIgbj10LnJvb3QoKS5yb290RWxlbWVudCgpLGk9bltlLl9ESVNQQVRDSEVSX0tFWV07cmV0dXJuIG51bGw9PWkmJihpPW5ldyBlKHQpLG5bZS5fRElTUEFUQ0hFUl9LRVldPWkpLGl9LGUucHJvdG90eXBlLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFTU9WRV9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZk1vdXNlTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbk1vdXNlRG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRURPV05fRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZNb3VzZURvd249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Nb3VzZVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFVVBfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZNb3VzZVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFVVBfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbldoZWVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1dIRUVMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmV2hlZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fV0hFRUxfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRibENsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX0RCTENMSUNLX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmRGJsQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5fbWVhc3VyZUFuZERpc3BhdGNoPWZ1bmN0aW9uKHQsZSxuLGkpe2lmKHZvaWQgMD09PWkmJihpPSJlbGVtZW50IiksInBhZ2UiIT09aSYmImVsZW1lbnQiIT09aSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NvcGUgJyIraSsiJywgbXVzdCBiZSAnZWxlbWVudCcgb3IgJ3BhZ2UnIik7aWYoInBhZ2UiPT09aXx8dGhpcy5ldmVudEluc2lkZSh0LGUpKXt2YXIgcj10aGlzLl90cmFuc2xhdG9yLmNvbXB1dGVQb3NpdGlvbihlLmNsaWVudFgsZS5jbGllbnRZKTt0aGlzLl9sYXN0TW91c2VQb3NpdGlvbj1yLHRoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChuLHRoaXMubGFzdE1vdXNlUG9zaXRpb24oKSxlKX19LGUucHJvdG90eXBlLmV2ZW50SW5zaWRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHB4dC5UcmFuc2xhdG9yLmlzRXZlbnRJbnNpZGUodCxlKX0sZS5wcm90b3R5cGUubGFzdE1vdXNlUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFzdE1vdXNlUG9zaXRpb259LGUuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX01vdXNlIixlLl9NT1VTRU9WRVJfRVZFTlRfTkFNRT0ibW91c2VvdmVyIixlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRT0ibW91c2Vtb3ZlIixlLl9NT1VTRU9VVF9FVkVOVF9OQU1FPSJtb3VzZW91dCIsZS5fTU9VU0VET1dOX0VWRU5UX05BTUU9Im1vdXNlZG93biIsZS5fTU9VU0VVUF9FVkVOVF9OQU1FPSJtb3VzZXVwIixlLl9XSEVFTF9FVkVOVF9OQU1FPSJ3aGVlbCIsZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRT0iZGJsY2xpY2siLGV9KShheHQuRGlzcGF0Y2hlcik7aHh0Lk1vdXNlPWZ4dDt2YXIgbXh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShteHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBneHQ9Qk8sX3h0PURfdCx5eHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl90cmFuc2xhdG9yPV94dC5nZXRUcmFuc2xhdG9yKG4pLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSEVORF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSEVORF9FVkVOVF9OQU1FLCJwYWdlIil9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRSwicGFnZSIpfSxpfXJldHVybiBneHQuX19leHRlbmRzKGUsdCksZS5nZXREaXNwYXRjaGVyPWZ1bmN0aW9uKHQpe3ZhciBuPXQucm9vdCgpLnJvb3RFbGVtZW50KCksaT1uW2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09aSYmKGk9bmV3IGUodCksbltlLl9ESVNQQVRDSEVSX0tFWV09aSksaX0sZS5wcm90b3R5cGUub25Ub3VjaFN0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZUb3VjaFN0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vblRvdWNoTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZUb3VjaE1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Ub3VjaEVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSEVORF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIRU5EX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Ub3VjaENhbmNlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoQ2FuY2VsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUuX21lYXN1cmVBbmREaXNwYXRjaD1mdW5jdGlvbih0LGUsbixpKXtpZih2b2lkIDA9PT1pJiYoaT0iZWxlbWVudCIpLCJwYWdlIiE9PWkmJiJlbGVtZW50IiE9PWkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNjb3BlICciK2krIicsIG11c3QgYmUgJ2VsZW1lbnQnIG9yICdwYWdlJyIpO2lmKCJlbGVtZW50IiE9PWl8fHRoaXMuZXZlbnRJbnNpZGUodCxlKSl7Zm9yKHZhciByPWUuY2hhbmdlZFRvdWNoZXMsbz17fSxhPVtdLHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGw9cltzXSxjPWwuaWRlbnRpZmllcix1PXRoaXMuX3RyYW5zbGF0b3IuY29tcHV0ZVBvc2l0aW9uKGwuY2xpZW50WCxsLmNsaWVudFkpO251bGwhPXUmJihvW2NdPXUsYS5wdXNoKGMpKX1hLmxlbmd0aD4wJiZ0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQobixhLG8sZSl9fSxlLnByb3RvdHlwZS5ldmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiBfeHQuVHJhbnNsYXRvci5pc0V2ZW50SW5zaWRlKHQsZSl9LGUuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX1RvdWNoIixlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUU9InRvdWNoc3RhcnQiLGUuX1RPVUNITU9WRV9FVkVOVF9OQU1FPSJ0b3VjaG1vdmUiLGUuX1RPVUNIRU5EX0VWRU5UX05BTUU9InRvdWNoZW5kIixlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FPSJ0b3VjaGNhbmNlbCIsZX0pKGF4dC5EaXNwYXRjaGVyKTtteHQuVG91Y2g9eXh0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKG94dCx0KSxlLl9fZXhwb3J0U3RhcihoeHQsdCksZS5fX2V4cG9ydFN0YXIobXh0LHQpfSkocnh0KTt2YXIgdnh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2eHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBieHQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciB0PXRoaXM7dGhpcy5fYW5jaG9yQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2FuY2hvcihlKX0sdGhpcy5fZW5hYmxlZD0hMH1yZXR1cm4gdC5wcm90b3R5cGUuYXR0YWNoVG89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvPXQsdGhpcy5fY29ubmVjdCgpLHRoaXN9LHQucHJvdG90eXBlLmRldGFjaEZyb209ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGV0YWNoKCl9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kaXNjb25uZWN0KCksdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbz1udWxsLHRoaXN9LHQucHJvdG90eXBlLmVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZW5hYmxlZDoodGhpcy5fZW5hYmxlZD10LHRoaXMuX2VuYWJsZWQ/dGhpcy5fY29ubmVjdCgpOnRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzKX0sdC5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbih0KXt0aGlzLl9pc0FuY2hvcmVkPSEwfSx0LnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0aGlzLl9pc0FuY2hvcmVkPSExfSx0LnByb3RvdHlwZS5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLm9yaWdpblRvUm9vdCgpO3JldHVybnt4OnQueC1lLngseTp0LnktZS55fX0sdC5wcm90b3R5cGUuX2lzSW5zaWRlQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiAwPD10LngmJjA8PXQueSYmdC54PD10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkmJnQueTw9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX0sdC5wcm90b3R5cGUuX2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQoKSYmbnVsbCE9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyYmIXRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ub25BbmNob3IodGhpcy5fYW5jaG9yQ2FsbGJhY2spfSx0LnByb3RvdHlwZS5fZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX3VuYW5jaG9yKCksbnVsbCE9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyYmdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5vZmZBbmNob3IodGhpcy5fYW5jaG9yQ2FsbGJhY2spfSx0fSkoKTt2eHQuSW50ZXJhY3Rpb249Ynh0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoaXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeHh0PUJPLHd4dD1yeHQsU3h0PURfdCxNeHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT1udWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX2NsaWNrZWREb3duPSExLGUuX2RvdWJsZUNsaWNraW5nPSExLGUuX29uQ2xpY2tDYWxsYmFja3M9bmV3IFN4dC5DYWxsYmFja1NldCxlLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzPW5ldyBTeHQuQ2FsbGJhY2tTZXQsZS5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2tEb3duKHQsbil9LGUuX21vdXNlVXBDYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVDbGlja1VwKHQsbil9LGUuX2RibENsaWNrQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlRGJsQ2xpY2sodCxuKX0sZS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2tEb3duKG5bdFswXV0saSl9LGUuX3RvdWNoRW5kQ2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVDbGlja1VwKG5bdFswXV0saSl9LGUuX3RvdWNoQ2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5fY2xpY2tlZERvd249ITF9LGV9cmV0dXJuIHh4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj13eHQuTW91c2UuZ2V0RGlzcGF0Y2hlcihlKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlVXAodGhpcy5fbW91c2VVcENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25EYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9d3h0LlRvdWNoLmdldERpc3BhdGNoZXIoZSksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoQ2FuY2VsKHRoaXMuX3RvdWNoQ2FuY2VsQ2FsbGJhY2spfSxlLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZEYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVDbGlja0Rvd249ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KG4pJiYodGhpcy5fY2xpY2tlZERvd249ITAsdGhpcy5fY2xpY2tlZFBvaW50PW4pfSxlLnByb3RvdHlwZS5faGFuZGxlQ2xpY2tVcD1mdW5jdGlvbih0LG4pe3ZhciBpPXRoaXMscj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2NsaWNrZWREb3duJiZlLl9wb2ludHNFcXVhbChyLHRoaXMuX2NsaWNrZWRQb2ludCkmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5fZG91YmxlQ2xpY2tpbmd8fGkuX29uQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLG4pfSksMCksdGhpcy5fY2xpY2tlZERvd249ITF9LGUucHJvdG90eXBlLl9oYW5kbGVEYmxDbGljaz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2RvdWJsZUNsaWNraW5nPSEwLHRoaXMuX29uRG91YmxlQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhpLGUpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2RvdWJsZUNsaWNraW5nPSExfSksMCl9LGUuX3BvaW50c0VxdWFsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fSxlLnByb3RvdHlwZS5vbkNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkNsaWNrQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25DbGlja0NhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25Eb3VibGVDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRG91YmxlQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uRG91YmxlQ2xpY2tDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGV9KSh2eHQuSW50ZXJhY3Rpb24pO2l4dC5DbGljaz1NeHQ7dmFyIEV4dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoRXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVHh0PUJPLEN4dD1yeHQsQXh0PURfdCxreHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9kcmFnZ2luZz0hMSxpLl9jb25zdHJhaW5lZFRvQ29tcG9uZW50PSEwLGkuX21vdXNlRmlsdGVyPWUuX0RFRkFVTFRfTU9VU0VfRklMVEVSLGkuX2RyYWdTdGFydENhbGxiYWNrcz1uZXcgQXh0LkNhbGxiYWNrU2V0LGkuX2RyYWdDYWxsYmFja3M9bmV3IEF4dC5DYWxsYmFja1NldCxpLl9kcmFnRW5kQ2FsbGJhY2tzPW5ldyBBeHQuQ2FsbGJhY2tTZXQsaS5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fc3RhcnREcmFnKHQsZSl9LGkuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2RvRHJhZyh0LGUpfSxpLl9tb3VzZVVwQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fZW5kRHJhZyh0LGUpfSxpLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9zdGFydERyYWcoZVt0WzBdXSxuKX0saS5fdG91Y2hNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9kb0RyYWcoZVt0WzBdXSxuKX0saS5fdG91Y2hFbmRDYWxsYmFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkuX2VuZERyYWcoZVt0WzBdXSxuKX0saS5fbW91c2VCdXR0b249dm9pZCAwIT09bj9uOjAsaX1yZXR1cm4gVHh0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fbW91c2VEaXNwYXRjaGVyPUN4dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlRG93bih0aGlzLl9tb3VzZURvd25DYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPUN4dC5Ub3VjaC5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoU3RhcnQodGhpcy5fdG91Y2hTdGFydENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spfSxlLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1udWxsfSxlLnByb3RvdHlwZS5fdHJhbnNsYXRlQW5kQ29uc3RyYWluPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7cmV0dXJuIHRoaXMuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ/e3g6QXh0Lk1hdGguY2xhbXAoZS54LDAsdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpKSx5OkF4dC5NYXRoLmNsYW1wKGUueSwwLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8uaGVpZ2h0KCkpfTplfSxlLnByb3RvdHlwZS5fc3RhcnREcmFnPWZ1bmN0aW9uKHQsZSl7aWYoIShlIGluc3RhbmNlb2YgTW91c2VFdmVudCl8fHRoaXMuX21vdXNlRmlsdGVyKGUpKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KG4pJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RyYWdnaW5nPSEwLHRoaXMuX2RyYWdPcmlnaW49bix0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luKSl9fSxlLnByb3RvdHlwZS5fZG9EcmFnPWZ1bmN0aW9uKHQsZSl7dGhpcy5fZHJhZ2dpbmcmJnRoaXMuX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luLHRoaXMuX3RyYW5zbGF0ZUFuZENvbnN0cmFpbih0KSl9LGUucHJvdG90eXBlLl9lbmREcmFnPWZ1bmN0aW9uKHQsZSl7ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQmJmUuYnV0dG9uIT09dGhpcy5fbW91c2VCdXR0b258fHRoaXMuX2RyYWdnaW5nJiYodGhpcy5fZHJhZ2dpbmc9ITEsdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMuX2RyYWdPcmlnaW4sdGhpcy5fdHJhbnNsYXRlQW5kQ29uc3RyYWluKHQpKSl9LGUucHJvdG90eXBlLmNvbnN0cmFpbmVkVG9Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudDoodGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudD10LHRoaXMpfSxlLnByb3RvdHlwZS5tb3VzZUZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbW91c2VGaWx0ZXI6KHRoaXMuX21vdXNlRmlsdGVyPXQsdGhpcyl9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5fREVGQVVMVF9NT1VTRV9GSUxURVI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LmJ1dHRvbn0sZX0pKHZ4dC5JbnRlcmFjdGlvbik7RXh0LkRyYWc9a3h0O3ZhciBQeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFB4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEx4dD1CTyxJeHQ9cnh0LE54dD1EX3QsUnh0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLl9rZXlQcmVzc0NhbGxiYWNrcz17fSxlLl9rZXlSZWxlYXNlQ2FsbGJhY2tzPXt9LGUuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiExfSxlLl9kb3duZWRLZXlzPW5ldyBOeHQuU2V0LGUuX2tleURvd25DYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVLZXlEb3duRXZlbnQodCxuKX0sZS5fa2V5VXBDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5faGFuZGxlS2V5VXBFdmVudCh0KX0sZX1yZXR1cm4gTHh0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPUl4dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5vbk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlcj1JeHQuS2V5LmdldERpc3BhdGNoZXIoKSx0aGlzLl9rZXlEaXNwYXRjaGVyLm9uS2V5RG93bih0aGlzLl9rZXlEb3duQ2FsbGJhY2spLHRoaXMuX2tleURpc3BhdGNoZXIub25LZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKX0sZS5wcm90b3R5cGUuX3VuYW5jaG9yPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3VuYW5jaG9yLmNhbGwodGhpcyksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLm9mZk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPW51bGwsdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlEb3duKHRoaXMuX2tleURvd25DYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5sYXN0TW91c2VQb3NpdGlvbigpKTt0aGlzLl9pc0luc2lkZUNvbXBvbmVudChuKSYmIWUucmVwZWF0JiYodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0mJnRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmNhbGxDYWxsYmFja3ModCksdGhpcy5fZG93bmVkS2V5cy5hZGQodCkpfSxlLnByb3RvdHlwZS5faGFuZGxlS2V5VXBFdmVudD1mdW5jdGlvbih0KXt0aGlzLl9kb3duZWRLZXlzLmhhcyh0KSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XS5jYWxsQ2FsbGJhY2tzKHQpLHRoaXMuX2Rvd25lZEtleXMuZGVsZXRlKHQpfSxlLnByb3RvdHlwZS5vbktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF09bmV3IE54dC5DYWxsYmFja1NldCksdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uYWRkKGUpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmRlbGV0ZShlKSwwPT09dGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uc2l6ZSYmZGVsZXRlIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLHRoaXN9LGUucHJvdG90eXBlLm9uS2V5UmVsZWFzZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XT1uZXcgTnh0LkNhbGxiYWNrU2V0KSx0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLmFkZChlKSx0aGlzfSxlLnByb3RvdHlwZS5vZmZLZXlSZWxlYXNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF0uZGVsZXRlKGUpLDA9PT10aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLnNpemUmJmRlbGV0ZSB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLHRoaXN9LGV9KSh2eHQuSW50ZXJhY3Rpb24pO1B4dC5LZXk9Unh0O3ZhciBPeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KE94dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHp4dD1CTyxEeHQ9d3B0LEJ4dD1yeHQsSHh0PVh2dCxGeHQ9RF90LFZ4dD1ueHQsVXh0PXRidCxqeHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX3doZWVsRmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiEwfSxpLl93aGVlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2hhbmRsZVdoZWVsRXZlbnQodCxlKX0saS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hTdGFydCh0LGUsbil9LGkuX3RvdWNoTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlUGluY2godCxlLG4pfSxpLl90b3VjaEVuZENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl90b3VjaENhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl9wYW5FbmRDYWxsYmFja3M9bmV3IEZ4dC5DYWxsYmFja1NldCxpLl96b29tRW5kQ2FsbGJhY2tzPW5ldyBGeHQuQ2FsbGJhY2tTZXQsaS5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcz1uZXcgRnh0LkNhbGxiYWNrU2V0LGkuX3hTY2FsZXM9bmV3IEZ4dC5TZXQsaS5feVNjYWxlcz1uZXcgRnh0LlNldCxpLl9kcmFnSW50ZXJhY3Rpb249bmV3IFZ4dC5EcmFnLGkuX3NldHVwRHJhZ0ludGVyYWN0aW9uKCksaS5fdG91Y2hJZHM9RHh0Lm1hcCgpLGkuX21pbkRvbWFpbkV4dGVudHM9bmV3IEZ4dC5NYXAsaS5fbWF4RG9tYWluRXh0ZW50cz1uZXcgRnh0Lk1hcCxpLl9taW5Eb21haW5WYWx1ZXM9bmV3IEZ4dC5NYXAsaS5fbWF4RG9tYWluVmFsdWVzPW5ldyBGeHQuTWFwLG51bGwhPWUmJmkuYWRkWFNjYWxlKGUpLG51bGwhPW4mJmkuYWRkWVNjYWxlKG4pLGl9cmV0dXJuIHp4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufSxlLnByb3RvdHlwZS53aGVlbEZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fd2hlZWxGaWx0ZXI6KHRoaXMuX3doZWVsRmlsdGVyPXQsdGhpcyl9LGUucHJvdG90eXBlLnBhbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24ucGFuKGUuX2NvbnN0cmFpbmVkVHJhbnNsYXRpb24obix0LngpKX0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuLnBhbihlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uKG4sdC55KSl9KSksdGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCl9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz10aGlzO3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksbnVsbCE9ZSYmKGk9ZS54LHI9ZS55LG4mJih0aGlzLnhTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LGkpO2k9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LHIpO3I9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSkpLHRoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmFuZ2UoKTtlLnpvb20odCxudWxsPT1pPyhuWzFdK25bMF0pLzI6aSl9KSksdGhpcy55U2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yYW5nZSgpO2Uuem9vbSh0LG51bGw9PXI/KG5bMV0rblswXSkvMjpyKX0pKSx0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKSx7em9vbUFtb3VudDp0LGNlbnRlclZhbHVlOntjZW50ZXJYOmksY2VudGVyWTpyfX19LGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1CeHQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9Qnh0LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZXaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGwsdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpfSxlLnByb3RvdHlwZS5faGFuZGxlVG91Y2hTdGFydD1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aCYmdGhpcy5fdG91Y2hJZHMuc2l6ZSgpPDI7aSsrKXt2YXIgcj10W2ldO3RoaXMuX3RvdWNoSWRzLnNldChyLnRvU3RyaW5nKCksdGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShlW3JdKSl9fSxlLnByb3RvdHlwZS5faGFuZGxlUGluY2g9ZnVuY3Rpb24odCxuLGkpe3ZhciByPXRoaXM7aWYoISh0aGlzLl90b3VjaElkcy5zaXplKCk8Mikpe3ZhciBvPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpO2lmKHRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uob1swXSkpJiZ0aGlzLl9pc0luc2lkZUNvbXBvbmVudCh0aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKG9bMV0pKSl7dmFyIGE9ZS5fcG9pbnREaXN0YW5jZShvWzBdLG9bMV0pO2lmKDAhPT1hKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3IuX3RvdWNoSWRzLmhhcyh0LnRvU3RyaW5nKCkpJiZyLl90b3VjaElkcy5zZXQodC50b1N0cmluZygpLHIuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uoblt0XSkpfSkpO3ZhciBzPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpLGw9ZS5fcG9pbnREaXN0YW5jZShzWzBdLHNbMV0pO2lmKDAhPT1sKXt2YXIgYz1hL2wsdT1zLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDoodC54LW9bZV0ueCkvYyx5Oih0Lnktb1tlXS55KS9jfX0pKSxoPWUuY2VudGVyUG9pbnQob1swXSxvWzFdKSxkPXRoaXMuem9vbShjLGgpLHA9ZC5jZW50ZXJWYWx1ZSxmPWQuem9vbUFtb3VudCxtPXAuY2VudGVyWCxnPXAuY2VudGVyWSxfPW8ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybnt4OnVbZV0ueCpmK3QueCx5OnVbZV0ueSpmK3QueX19KSk7dGhpcy5wYW4oe3g6bS0oX1swXS54K19bMV0ueCkvMix5OmctKF9bMF0ueStfWzFdLnkpLzJ9KX19fX19LGUuY2VudGVyUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLm1pbih0LngsZS54KSxpPU1hdGgubWF4KHQueCxlLngpLHI9TWF0aC5taW4odC55LGUueSk7cmV0dXJue3g6KG4raSkvMix5OihNYXRoLm1heCh0LnksZS55KStyKS8yfX0sZS5fcG9pbnREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgubWluKHQueCxlLngpLGk9TWF0aC5tYXgodC54LGUueCkscj1NYXRoLm1pbih0LnksZS55KSxvPU1hdGgubWF4KHQueSxlLnkpO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coaS1uLDIpK01hdGgucG93KG8tciwyKSl9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEVuZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuX3RvdWNoSWRzLnJlbW92ZSh0LnRvU3RyaW5nKCkpfSkpLHRoaXMuX3RvdWNoSWRzLnNpemUoKT4wJiZ0aGlzLl96b29tRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX0sZS5wcm90b3R5cGUuX2hhbmRsZVdoZWVsRXZlbnQ9ZnVuY3Rpb24odCxuKXtpZih0aGlzLl93aGVlbEZpbHRlcihuKSl7dmFyIGk9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZSh0KTtpZih0aGlzLl9pc0luc2lkZUNvbXBvbmVudChpKSl7bi5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPU1hdGgucG93KDIsLjAwMiooKDAhPT1uLmRlbHRhWT9uLmRlbHRhWTpuLmRlbHRhWCkqKG4uZGVsdGFNb2RlP2UuX1BJWEVMU19QRVJfTElORToxKSkpO3RoaXMuem9vbShyLGkpLHRoaXMuX3pvb21FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfX19LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFpvb209ZnVuY3Rpb24odCxlLG4pe3JldHVybiBVeHQuY29uc3RyYWluZWRab29tKHQsZSxuLHRoaXMubWluRG9tYWluRXh0ZW50KHQpLHRoaXMubWF4RG9tYWluRXh0ZW50KHQpLHRoaXMubWluRG9tYWluVmFsdWUodCksdGhpcy5tYXhEb21haW5WYWx1ZSh0KSl9LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFV4dC5jb25zdHJhaW5lZFRyYW5zbGF0aW9uKHQsZSx0aGlzLm1pbkRvbWFpblZhbHVlKHQpLHRoaXMubWF4RG9tYWluVmFsdWUodCkpfSxlLnByb3RvdHlwZS5fc2V0dXBEcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXM7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmNvbnN0cmFpbmVkVG9Db21wb25lbnQoITEpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydCgoZnVuY3Rpb24oKXtyZXR1cm4gdD1udWxsfSkpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcoKGZ1bmN0aW9uKG4saSl7ZS5fdG91Y2hJZHMuc2l6ZSgpPj0yfHwoZS5wYW4oe3g6KG51bGw9PXQ/bi54OnQueCktaS54LHk6KG51bGw9PXQ/bi55OnQueSktaS55fSksdD1pKX0pKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnRW5kKChmdW5jdGlvbigpe3JldHVybiBlLl9wYW5FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfSkpfSxlLnByb3RvdHlwZS5fbm9uTGluZWFyU2NhbGVXaXRoRXh0ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4hKG51bGw9PXRoaXMubWluRG9tYWluRXh0ZW50KHQpfHxudWxsPT10aGlzLm1heERvbWFpbkV4dGVudCh0KXx8dCBpbnN0YW5jZW9mIEh4dC5MaW5lYXJ8fHQgaW5zdGFuY2VvZiBIeHQuVGltZSl9LGUucHJvdG90eXBlLnhTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feFNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feFNjYWxlcz1uZXcgRnh0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWFNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLnlTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feVNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feVNjYWxlcz1uZXcgRnh0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWVNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLmFkZFhTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5feFNjYWxlcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlWFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl94U2NhbGVzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5WYWx1ZXMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpblZhbHVlcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuYWRkWVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl95U2NhbGVzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVZU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3lTY2FsZXMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpblZhbHVlcy5kZWxldGUodCksdGhpcy5fbWF4RG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5taW5Eb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9taW5Eb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTwwKXRocm93IG5ldyBFcnJvcigiZXh0ZW50IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7dmFyIG49dGhpcy5tYXhEb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmbi52YWx1ZU9mKCk8ZS52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtaW5Eb21haW5FeHRlbnQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4RG9tYWluRXh0ZW50IGZvciB0aGUgc2FtZSBTY2FsZSIpO3JldHVybiB0aGlzLl9ub25MaW5lYXJTY2FsZVdpdGhFeHRlbnRzKHQpJiZGeHQuV2luZG93Lndhcm4oIlBhbm5pbmcgYW5kIHpvb21pbmcgd2l0aCBleHRlbnRzIG9uIGEgbm9ubGluZWFyIHNjYWxlIG1heSBoYXZlIHVuaW50ZW5kZWQgYmVoYXZpb3IuIiksdGhpcy5fbWluRG9tYWluRXh0ZW50cy5zZXQodCxlKSx0aGlzfSxlLnByb3RvdHlwZS5tYXhEb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9tYXhEb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTw9MCl0aHJvdyBuZXcgRXJyb3IoImV4dGVudCBtdXN0IGJlIHBvc2l0aXZlIik7dmFyIG49dGhpcy5taW5Eb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmZS52YWx1ZU9mKCk8bi52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtYXhEb21haW5FeHRlbnQgbXVzdCBiZSBsYXJnZXIgdGhhbiBtaW5Eb21haW5FeHRlbnQgZm9yIHRoZSBzYW1lIFNjYWxlIik7cmV0dXJuIHRoaXMuX25vbkxpbmVhclNjYWxlV2l0aEV4dGVudHModCkmJkZ4dC5XaW5kb3cud2FybigiUGFubmluZyBhbmQgem9vbWluZyB3aXRoIGV4dGVudHMgb24gYSBub25saW5lYXIgc2NhbGUgbWF5IGhhdmUgdW5pbnRlbmRlZCBiZWhhdmlvci4iKSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLnNldCh0LGUpLHRoaXN9LGUucHJvdG90eXBlLm1pbkRvbWFpblZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/dGhpcy5fbWluRG9tYWluVmFsdWVzLmdldCh0KToodGhpcy5fbWluRG9tYWluVmFsdWVzLnNldCh0LGUpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhEb21haW5WYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3RoaXMuX21heERvbWFpblZhbHVlcy5nZXQodCk6KHRoaXMuX21heERvbWFpblZhbHVlcy5zZXQodCxlKSx0aGlzKX0sZS5wcm90b3R5cGUuc2V0TWluTWF4RG9tYWluVmFsdWVzVG89ZnVuY3Rpb24odCl7dGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5WYWx1ZXMuZGVsZXRlKHQpO3ZhciBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxuPWVbMV07cmV0dXJuIHRoaXMubWluRG9tYWluVmFsdWUodCxlWzBdKSx0aGlzLm1heERvbWFpblZhbHVlKHQsbiksdGhpc30sZS5wcm90b3R5cGUub25QYW5FbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhbkVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUGFuRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5FbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25QYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZQYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLl9QSVhFTFNfUEVSX0xJTkU9MTIwLGV9KSh2eHQuSW50ZXJhY3Rpb24pO094dC5QYW5ab29tPWp4dDt2YXIgR3h0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShHeHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBXeHQ9Qk8scXh0PXJ4dCxZeHQ9RF90LFh4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fb3ZlckNvbXBvbmVudD0hMSxlLl9wb2ludGVyRW50ZXJDYWxsYmFja3M9bmV3IFl4dC5DYWxsYmFja1NldCxlLl9wb2ludGVyTW92ZUNhbGxiYWNrcz1uZXcgWXh0LkNhbGxiYWNrU2V0LGUuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzPW5ldyBZeHQuQ2FsbGJhY2tTZXQsZS5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlTW91c2VFdmVudCh0LG4pfSxlLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVUb3VjaEV2ZW50KG5bdFswXV0saSl9LGV9cmV0dXJuIFd4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1xeHQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1xeHQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fbW91c2VEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdG91Y2hEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVQb2ludGVyRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpLGk9dGhpcy5faXNJbnNpZGVDb21wb25lbnQobik7aSYmZT8odGhpcy5fb3ZlckNvbXBvbmVudHx8dGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobiksdGhpcy5fcG9pbnRlck1vdmVDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSk6dGhpcy5fb3ZlckNvbXBvbmVudCYmdGhpcy5fcG9pbnRlckV4aXRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSx0aGlzLl9vdmVyQ29tcG9uZW50PWkmJmV9LGUucHJvdG90eXBlLm9uUG9pbnRlckVudGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRW50ZXJDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlBvaW50ZXJFbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyTW92ZUNhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlck1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJFeGl0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRXhpdENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlckV4aXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlfSkodnh0LkludGVyYWN0aW9uKTtHeHQuUG9pbnRlcj1YeHQsKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87ZS5fX2V4cG9ydFN0YXIoaXh0LHQpLGUuX19leHBvcnRTdGFyKEV4dCx0KSxlLl9fZXhwb3J0U3RhcihQeHQsdCksZS5fX2V4cG9ydFN0YXIoT3h0LHQpLGUuX19leHBvcnRTdGFyKEd4dCx0KSx0Lnpvb21PdXQ9dGJ0Lnpvb21PdXR9KShueHQpO3ZhciAkeHQ9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLG49Qk8saT1EX3Qscj1PX3Q7IShmdW5jdGlvbih0KXt0W3QuVkFMVUU9MF09IlZBTFVFIix0W3QuUElYRUw9MV09IlBJWEVMIn0pKGU9dC5Qcm9wZXJ0eU1vZGV8fCh0LlByb3BlcnR5TW9kZT17fSkpO3ZhciBvPShmdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9ib3hWaXNpYmxlPSExLG4uX2JveEJvdW5kcz17dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6MCx5OjB9fSxuLl94Qm91bmRzTW9kZT1lLlBJWEVMLG4uX3lCb3VuZHNNb2RlPWUuUElYRUwsbi5hZGRDbGFzcygic2VsZWN0aW9uLWJveC1sYXllciIpLG4uX2FkanVzdEJvdW5kc0NhbGxiYWNrPWZ1bmN0aW9uKCl7bi5yZW5kZXIoKX0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5feEV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbi5feUV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbn1yZXR1cm4gbi5fX2V4dGVuZHMocix0KSxyLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9ib3g9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2VsZWN0aW9uLWJveCIsITApLnJlbW92ZSgpLHRoaXMuX2JveEFyZWE9dGhpcy5fYm94LmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInNlbGVjdGlvbi1hcmVhIiwhMCl9LHIucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3dpZHRoOnQsaGVpZ2h0OmV9fSxyLnByb3RvdHlwZS5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZ2V0Qm91bmRzKCk6KHRoaXMuX3NldEJvdW5kcyh0KSx0aGlzLl94Qm91bmRzTW9kZT1lLlBJWEVMLHRoaXMuX3lCb3VuZHNNb2RlPWUuUElYRUwsdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUuX3NldEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT17eDpNYXRoLm1pbih0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5taW4odC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX0sbj17eDpNYXRoLm1heCh0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5tYXgodC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX07dGhpcy5fYm94Qm91bmRzPXt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn19LHIucHJvdG90eXBlLl9nZXRCb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDp0aGlzLl94Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1pbih0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueTpudWxsPT10aGlzLl95U2NhbGU/MDpNYXRoLm1pbih0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzBdKSx0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzFdKSl9LGJvdHRvbVJpZ2h0Ont4OnRoaXMuX3hCb3VuZHNNb2RlPT09ZS5QSVhFTD90aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1heCh0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0Lnk6bnVsbD09dGhpcy5feVNjYWxlPzA6TWF0aC5tYXgodGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVswXSksdGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVsxXSkpfX19LHIucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7aWYodC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9ib3hWaXNpYmxlKXt2YXIgZT10aGlzLmJvdW5kcygpLG49ZS50b3BMZWZ0Lnkscj1lLmJvdHRvbVJpZ2h0Lnksbz1lLnRvcExlZnQueCxhPWUuYm90dG9tUmlnaHQueDtpZighKGkuTWF0aC5pc1ZhbGlkTnVtYmVyKG4pJiZpLk1hdGguaXNWYWxpZE51bWJlcihyKSYmaS5NYXRoLmlzVmFsaWROdW1iZXIobykmJmkuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpKSl0aHJvdyBuZXcgRXJyb3IoImJvdW5kcyBoYXZlIG5vdCBiZWVuIHByb3Blcmx5IHNldCIpO3RoaXMuX2JveEFyZWEuYXR0cnMoe3g6byx5Om4sd2lkdGg6YS1vLGhlaWdodDpyLW59KSx0aGlzLmNvbnRlbnQoKS5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fYm94Lm5vZGUoKSl9ZWxzZSB0aGlzLl9ib3gucmVtb3ZlKCk7cmV0dXJuIHRoaXN9LHIucHJvdG90eXBlLmJveFZpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYm94VmlzaWJsZToodGhpcy5fYm94VmlzaWJsZT10LHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3hTY2FsZToobnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl94U2NhbGU9dCx0aGlzLl94Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3hTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3lTY2FsZToobnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl95U2NhbGU9dCx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3lTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRYRXh0ZW50KCk6KHRoaXMuX3NldFhFeHRlbnQodCksdGhpcy5feEJvdW5kc01vZGU9ZS5WQUxVRSx0aGlzLnJlbmRlcigpLHRoaXMpfSxyLnByb3RvdHlwZS5fZ2V0WEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl94Qm91bmRzTW9kZT09PWUuVkFMVUU/dGhpcy5feEV4dGVudDpudWxsPT10aGlzLl94U2NhbGU/W3ZvaWQgMCx2b2lkIDBdOlt0aGlzLl94U2NhbGUuaW52ZXJ0KHRoaXMuX2JveEJvdW5kcy50b3BMZWZ0LngpLHRoaXMuX3hTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0LngpXX0sci5wcm90b3R5cGUuX3NldFhFeHRlbnQ9ZnVuY3Rpb24odCl7dGhpcy5feEV4dGVudD10fSxyLnByb3RvdHlwZS55RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2dldFlFeHRlbnQoKToodGhpcy5fc2V0WUV4dGVudCh0KSx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLl9nZXRZRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3lCb3VuZHNNb2RlPT09ZS5WQUxVRT90aGlzLl95RXh0ZW50Om51bGw9PXRoaXMuX3lTY2FsZT9bdm9pZCAwLHZvaWQgMF06W3RoaXMuX3lTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLnRvcExlZnQueSksdGhpcy5feVNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueSldfSxyLnByb3RvdHlwZS5fc2V0WUV4dGVudD1mdW5jdGlvbih0KXt0aGlzLl95RXh0ZW50PXR9LHIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLnhTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLnlTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayl9LHJ9KShyLkNvbXBvbmVudCk7dC5TZWxlY3Rpb25Cb3hMYXllcj1vfSkoJHh0KSwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEt4dD1CTyxaeHQ9bnh0LEp4dD1EX3QsUXh0PV9ndCx0d3Q9dHh0LGV3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZGV0ZWN0aW9uUmFkaXVzPTMsZS5fcmVzaXphYmxlPSExLGUuX21vdmFibGU9ITEsZS5faGFzQ29ybmVycz0hMCxlLmFkZENsYXNzKCJkcmFnLWJveC1sYXllciIpLGUuX2RyYWdJbnRlcmFjdGlvbj1uZXcgWnh0LkRyYWcsZS5fc2V0VXBDYWxsYmFja3MoKSxlLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8oZSksZS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBKeHQuQ2FsbGJhY2tTZXQsZS5fZHJhZ0NhbGxiYWNrcz1uZXcgSnh0LkNhbGxiYWNrU2V0LGUuX2RyYWdFbmRDYWxsYmFja3M9bmV3IEp4dC5DYWxsYmFja1NldCxlfXJldHVybiBLeHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldFVwQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLG89MCxhPTEscz0yLGw9byxjPWZ1bmN0aW9uKGMpe3Q9ci5fZ2V0UmVzaXppbmdFZGdlcyhjKTt2YXIgdT1yLmJvdW5kcygpLGg9dS50b3BMZWZ0Lng8PWMueCYmYy54PD11LmJvdHRvbVJpZ2h0LngmJnUudG9wTGVmdC55PD1jLnkmJmMueTw9dS5ib3R0b21SaWdodC55O3IuYm94VmlzaWJsZSgpJiYodC50b3B8fHQuYm90dG9tfHx0LmxlZnR8fHQucmlnaHQpP2w9YTpyLmJveFZpc2libGUoKSYmci5tb3ZhYmxlKCkmJmg/bD1zOihsPW8sci5fc2V0Qm91bmRzKHt0b3BMZWZ0OmMsYm90dG9tUmlnaHQ6Y30pLHIuX3hCb3VuZHNNb2RlPT09dHd0LlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9ci54U2NhbGUoKSYmci5fc2V0WEV4dGVudChbci54U2NhbGUoKS5pbnZlcnQoYy54KSxyLnhTY2FsZSgpLmludmVydChjLngpXSksci5feUJvdW5kc01vZGU9PT10d3QuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnlTY2FsZSgpJiZyLl9zZXRZRXh0ZW50KFtyLnlTY2FsZSgpLmludmVydChjLnkpLHIueVNjYWxlKCkuaW52ZXJ0KGMueSldKSxyLnJlbmRlcigpKSxyLmJveFZpc2libGUoITApLHU9ci5ib3VuZHMoKSxlPXt4OnUudG9wTGVmdC54LHk6dS50b3BMZWZ0Lnl9LG49e3g6dS5ib3R0b21SaWdodC54LHk6dS5ib3R0b21SaWdodC55fSxpPWMsci5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModSl9LHU9ZnVuY3Rpb24oYyx1KXtzd2l0Y2gobCl7Y2FzZSBvOm4ueD11Lngsbi55PXUueTticmVhaztjYXNlIGE6dC5ib3R0b20/bi55PXUueTp0LnRvcCYmKGUueT11LnkpLHQucmlnaHQ/bi54PXUueDp0LmxlZnQmJihlLng9dS54KTticmVhaztjYXNlIHM6dmFyIGg9dS54LWkueCxkPXUueS1pLnk7ZS54Kz1oLGUueSs9ZCxuLngrPWgsbi55Kz1kLGk9dX1yLl9zZXRCb3VuZHMoe3RvcExlZnQ6ZSxib3R0b21SaWdodDpufSksci5feEJvdW5kc01vZGU9PT10d3QuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnhTY2FsZSgpJiZyLl9zZXRYRXh0ZW50KFtyLnhTY2FsZSgpLmludmVydChlLngpLHIueFNjYWxlKCkuaW52ZXJ0KG4ueCldKSxyLl95Qm91bmRzTW9kZT09PXR3dC5Qcm9wZXJ0eU1vZGUuVkFMVUUmJm51bGwhPXIueVNjYWxlKCkmJnIuX3NldFlFeHRlbnQoW3IueVNjYWxlKCkuaW52ZXJ0KGUueSksci55U2NhbGUoKS5pbnZlcnQobi55KV0pLHIucmVuZGVyKCksci5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHIuYm91bmRzKCkpfSxoPWZ1bmN0aW9uKHQsZSl7bD09PW8mJnQueD09PWUueCYmdC55PT09ZS55JiZyLmJveFZpc2libGUoITEpLHIuX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLmJvdW5kcygpKX07dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KGMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcodSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChoKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KGMpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKHUpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGgpLHIuX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fYm94LmFwcGVuZCgibGluZSIpLnN0eWxlcyh7b3BhY2l0eTowLHN0cm9rZToicGluayIsInBvaW50ZXItZXZlbnRzIjoidmlzaWJsZVN0cm9rZSJ9KX07aWYodGhpcy5fZGV0ZWN0aW9uRWRnZVQ9bigpLmNsYXNzZWQoImRyYWctZWRnZS10YiIsITApLHRoaXMuX2RldGVjdGlvbkVkZ2VCPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtdGIiLCEwKSx0aGlzLl9kZXRlY3Rpb25FZGdlTD1uKCkuY2xhc3NlZCgiZHJhZy1lZGdlLWxyIiwhMCksdGhpcy5fZGV0ZWN0aW9uRWRnZVI9bigpLmNsYXNzZWQoImRyYWctZWRnZS1sciIsITApLHRoaXMuX2hhc0Nvcm5lcnMpe3ZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2JveC5hcHBlbmQoImNpcmNsZSIpLnN0eWxlcyh7b3BhY2l0eTowLGZpbGw6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVGaWxsIn0pfTt0aGlzLl9kZXRlY3Rpb25Db3JuZXJUTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdGwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdHIiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYmwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYnIiLCEwKX19LGUucHJvdG90eXBlLl9nZXRSZXNpemluZ0VkZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXt0b3A6ITEsYm90dG9tOiExLGxlZnQ6ITEscmlnaHQ6ITF9O2lmKCF0aGlzLnJlc2l6YWJsZSgpKXJldHVybiBlO3ZhciBuPXRoaXMuYm91bmRzKCksaT1uLnRvcExlZnQueSxyPW4uYm90dG9tUmlnaHQueSxvPW4udG9wTGVmdC54LGE9bi5ib3R0b21SaWdodC54LHM9dGhpcy5fZGV0ZWN0aW9uUmFkaXVzO3JldHVybiBvLXM8PXQueCYmdC54PD1hK3MmJihlLnRvcD1pLXM8PXQueSYmdC55PD1pK3MsZS5ib3R0b209ci1zPD10LnkmJnQueTw9citzKSxpLXM8PXQueSYmdC55PD1yK3MmJihlLmxlZnQ9by1zPD10LngmJnQueDw9bytzLGUucmlnaHQ9YS1zPD10LngmJnQueDw9YStzKSxlfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe2lmKHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5ib3hWaXNpYmxlKCkpe3ZhciBlPXRoaXMuYm91bmRzKCksbj1lLnRvcExlZnQueSxpPWUuYm90dG9tUmlnaHQueSxyPWUudG9wTGVmdC54LG89ZS5ib3R0b21SaWdodC54O3RoaXMuX2RldGVjdGlvbkVkZ2VULmF0dHJzKHt4MTpyLHkxOm4seDI6byx5MjpuLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uRWRnZUIuYXR0cnMoe3gxOnIseTE6aSx4MjpvLHkyOmksInN0cm9rZS13aWR0aCI6Mip0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25FZGdlTC5hdHRycyh7eDE6cix5MTpuLHgyOnIseTI6aSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkVkZ2VSLmF0dHJzKHt4MTpvLHkxOm4seDI6byx5MjppLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5faGFzQ29ybmVycyYmKHRoaXMuX2RldGVjdGlvbkNvcm5lclRMLmF0dHJzKHtjeDpyLGN5Om4scjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUi5hdHRycyh7Y3g6byxjeTpuLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQkwuYXR0cnMoe2N4OnIsY3k6aSxyOnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkNvcm5lckJSLmF0dHJzKHtjeDpvLGN5Omkscjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUucmVzaXphYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Jlc2l6YWJsZToodGhpcy5fcmVzaXphYmxlPXQsdGhpcy5fc2V0UmVzaXphYmxlQ2xhc3Nlcyh0KSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldFJlc2l6YWJsZUNsYXNzZXM9ZnVuY3Rpb24odCl7dCYmdGhpcy5lbmFibGVkKCk/KHRoaXMuYWRkQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5hZGRDbGFzcygieS1yZXNpemFibGUiKSk6KHRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5yZW1vdmVDbGFzcygieS1yZXNpemFibGUiKSl9LGUucHJvdG90eXBlLm1vdmFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbW92YWJsZToodGhpcy5fbW92YWJsZT10LHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0TW92YWJsZUNsYXNzPWZ1bmN0aW9uKCl7dGhpcy5tb3ZhYmxlKCkmJnRoaXMuZW5hYmxlZCgpP3RoaXMuYWRkQ2xhc3MoIm1vdmFibGUiKTp0aGlzLnJlbW92ZUNsYXNzKCJtb3ZhYmxlIil9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuZHJhZ0ludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdJbnRlcmFjdGlvbn0sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCgpOih0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCh0KSx0aGlzLl9zZXRSZXNpemFibGVDbGFzc2VzKHRoaXMucmVzaXphYmxlKCkpLHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnRW5kQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb24oKX0sZS5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2V0U3RhdGUoKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCksdC5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcyksdGhpc30sZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKGUpe3JldHVybiBlPVF4dC5jb2VyY2VFeHRlcm5hbEQzKGUpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXN9LGUucHJvdG90eXBlLl9yZXNldFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5ib3VuZHMoe3RvcExlZnQ6e3g6MCx5OjB9LGJvdHRvbVJpZ2h0Ont4OjAseTowfX0pfSxlfSkoJHh0LlNlbGVjdGlvbkJveExheWVyKTtleHQuRHJhZ0JveExheWVyPWV3dDt2YXIgbnd0PXt9LGl3dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGl3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHJ3dCxvd3Q9Qk8sYXd0PURfdCxzd3Q9T190OyEoZnVuY3Rpb24odCl7dFt0LlZBTFVFPTBdPSJWQUxVRSIsdFt0LlBJWEVMPTFdPSJQSVhFTCJ9KShyd3R8fChyd3Q9e30pKTt2YXIgbHd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpZihpLl9tb2RlPXJ3dC5WQUxVRSxuIT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTCYmbiE9PWUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTCl0aHJvdyBuZXcgRXJyb3IobisiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBHdWlkZUxpbmVMYXllciIpO3JldHVybiBpLl9vcmllbnRhdGlvbj1uLGkuX292ZXJmbG93SGlkZGVuPSEwLGkuYWRkQ2xhc3MoImd1aWRlLWxpbmUtbGF5ZXIiKSxpLl9pc1ZlcnRpY2FsKCk/aS5hZGRDbGFzcygidmVydGljYWwiKTppLmFkZENsYXNzKCJob3Jpem9udGFsIiksaS5fc2NhbGVVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe2kuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSxpLnJlbmRlcigpfSxpfXJldHVybiBvd3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZ3VpZGVMaW5lPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImd1aWRlLWxpbmUiLCEwKX0sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLl9pc1ZlcnRpY2FsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTH0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLG51bGwhPXRoaXMuc2NhbGUoKSYmKHRoaXMuX2lzVmVydGljYWwoKT90aGlzLnNjYWxlKCkucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk6dGhpcy5zY2FsZSgpLnJhbmdlKFt0aGlzLmhlaWdodCgpLDBdKSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5fZ3VpZGVMaW5lLmF0dHJzKHt4MTp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6MCx5MTp0aGlzLl9pc1ZlcnRpY2FsKCk/MDp0aGlzLnBpeGVsUG9zaXRpb24oKSx4Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6dGhpcy53aWR0aCgpLHkyOnRoaXMuX2lzVmVydGljYWwoKT90aGlzLmhlaWdodCgpOnRoaXMucGl4ZWxQb3NpdGlvbigpfSksdGhpc30sZS5wcm90b3R5cGUuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWU9ZnVuY3Rpb24oKXtudWxsIT10aGlzLnNjYWxlKCkmJih0aGlzLl9tb2RlPT09cnd0LlZBTFVFJiZudWxsIT10aGlzLnZhbHVlKCk/dGhpcy5fcGl4ZWxQb3NpdGlvbj10aGlzLnNjYWxlKCkuc2NhbGUodGhpcy52YWx1ZSgpKTp0aGlzLl9tb2RlPT09cnd0LlBJWEVMJiZudWxsIT10aGlzLnBpeGVsUG9zaXRpb24oKSYmKHRoaXMuX3ZhbHVlPXRoaXMuc2NhbGUoKS5pbnZlcnQodGhpcy5waXhlbFBvc2l0aW9uKCkpKSl9LGUucHJvdG90eXBlLl9zZXRQaXhlbFBvc2l0aW9uV2l0aG91dENoYW5naW5nTW9kZT1mdW5jdGlvbih0KXt0aGlzLl9waXhlbFBvc2l0aW9uPXQsbnVsbCE9dGhpcy5zY2FsZSgpJiYodGhpcy5fdmFsdWU9dGhpcy5zY2FsZSgpLmludmVydCh0aGlzLnBpeGVsUG9zaXRpb24oKSkpLHRoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3NjYWxlO3ZhciBlPXRoaXMuX3NjYWxlO3JldHVybiBudWxsIT1lJiZlLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKSx0aGlzLl9zY2FsZT10LHRoaXMuX3NjYWxlLm9uVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3ZhbHVlOih0aGlzLl92YWx1ZT10LHRoaXMuX21vZGU9cnd0LlZBTFVFLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5waXhlbFBvc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb247aWYoIWF3dC5NYXRoLmlzVmFsaWROdW1iZXIodCkpdGhyb3cgbmV3IEVycm9yKCJwaXhlbFBvc2l0aW9uIG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyIik7cmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb249dCx0aGlzLl9tb2RlPXJ3dC5QSVhFTCx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLG51bGwhPXRoaXMuc2NhbGUoKSYmdGhpcy5zY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKX0sZS5PUklFTlRBVElPTl9WRVJUSUNBTD0idmVydGljYWwiLGUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsZX0pKHN3dC5Db21wb25lbnQpO2l3dC5HdWlkZUxpbmVMYXllcj1sd3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShud3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBjd3Q9Qk8sdXd0PW54dCxod3Q9RF90LGR3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyxlKXx8dGhpcztuLl9kZXRlY3Rpb25SYWRpdXM9MyxuLl9lbmFibGVkPSEwLG4uYWRkQ2xhc3MoImRyYWctbGluZS1sYXllciIpLG4uYWRkQ2xhc3MoImVuYWJsZWQiKSxuLl9kcmFnSW50ZXJhY3Rpb249bmV3IHV3dC5EcmFnLG4uX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyhuKTt2YXIgaT0hMSxyPWZ1bmN0aW9uKHQpeyhmdW5jdGlvbih0KXtyZXR1cm4gbi5faXNWZXJ0aWNhbCgpJiZuLnBpeGVsUG9zaXRpb24oKS1uLmRldGVjdGlvblJhZGl1cygpPD10LngmJnQueDw9bi5waXhlbFBvc2l0aW9uKCkrbi5kZXRlY3Rpb25SYWRpdXMoKXx8IW4uX2lzVmVydGljYWwoKSYmbi5waXhlbFBvc2l0aW9uKCktbi5kZXRlY3Rpb25SYWRpdXMoKTw9dC55JiZ0Lnk8PW4ucGl4ZWxQb3NpdGlvbigpK24uZGV0ZWN0aW9uUmFkaXVzKCl9KSh0KSYmKGk9ITAsbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtuLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQocik7dmFyIG89ZnVuY3Rpb24odCxlKXtpJiYobi5fc2V0UGl4ZWxQb3NpdGlvbldpdGhvdXRDaGFuZ2luZ01vZGUobi5faXNWZXJ0aWNhbCgpP2UueDplLnkpLG4uX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSl9O24uX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcobyk7dmFyIGE9ZnVuY3Rpb24odCxlKXtpJiYoaT0hMSxuLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtyZXR1cm4gbi5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChhKSxuLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtuLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KHIpLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKG8pLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGEpLG4uX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX0sbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBod3QuQ2FsbGJhY2tTZXQsbi5fZHJhZ0NhbGxiYWNrcz1uZXcgaHd0LkNhbGxiYWNrU2V0LG4uX2RyYWdFbmRDYWxsYmFja3M9bmV3IGh3dC5DYWxsYmFja1NldCxufXJldHVybiBjd3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5zdHlsZXMoe29wYWNpdHk6MCxzdHJva2U6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVTdHJva2UifSkuY2xhc3NlZCgiZHJhZy1lZGdlIiwhMCl9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmFibGVkOih0aGlzLl9lbmFibGVkPXQsdD90aGlzLmFkZENsYXNzKCJlbmFibGVkIik6dGhpcy5yZW1vdmVDbGFzcygiZW5hYmxlZCIpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5lbmFibGVkKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0NhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uKCl9LGV9KShpd3QuR3VpZGVMaW5lTGF5ZXIpO253dC5EcmFnTGluZUxheWVyPWR3dDt2YXIgcHd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShwd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBmd3Q9Qk87ZnVuY3Rpb24gbXd0KHQsZSxuKXt2YXIgaT17fTtpZih2b2lkIDAhPT1uKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXtpW25bcl1dPW5bci0xXX1yZXR1cm4gZnVuY3Rpb24obil7dmFyIHIsbz10LnNjYWxlKG4pO2lmKCFlKXJldHVybiBvO3ZhciBhPXZvaWQgMD09PWlbbl0/dm9pZCAwOnQuc2NhbGUoaVtuXSk7cmV0dXJuIHZvaWQgMCE9PWEmJihyPWErKG8tYSkvMikscn19dmFyIGd3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5hZGRDbGFzcygiZ3JpZGxpbmVzIiksaS5feFNjYWxlPWUsaS5feVNjYWxlPW4saS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGkucmVuZGVyKCl9LGkuX3hTY2FsZSYmaS5feFNjYWxlLm9uVXBkYXRlKGkuX3JlbmRlckNhbGxiYWNrKSxpLl95U2NhbGUmJmkuX3lTY2FsZS5vblVwZGF0ZShpLl9yZW5kZXJDYWxsYmFjayksaX1yZXR1cm4gZnd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmJldHdlZW5YPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMuX2JldHdlZW5YOih0IT09dGhpcy5fYmV0d2VlblgmJih0aGlzLl9iZXR3ZWVuWD10LHRoaXMucmVuZGVyKCkpLHRoaXMpfSxlLnByb3RvdHlwZS5iZXR3ZWVuWT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLl9iZXR3ZWVuWToodCE9PXRoaXMuX2JldHdlZW5ZJiYodGhpcy5fYmV0d2Vlblk9dCx0aGlzLnJlbmRlcigpKSx0aGlzKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSx0aGlzLl95U2NhbGUmJnRoaXMuX3lTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3hMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWdyaWRsaW5lcyIsITApLHRoaXMuX3lMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ5LWdyaWRsaW5lcyIsITApfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuX3JlZHJhd1hMaW5lcygpLHRoaXMuX3JlZHJhd1lMaW5lcygpLHRoaXN9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LGUucHJvdG90eXBlLl9yZWRyYXdYTGluZXM9ZnVuY3Rpb24oKXtpZih0aGlzLl94U2NhbGUpe3ZhciB0PXRoaXMuYmV0d2VlblgoKSxlPXRoaXMuX3hTY2FsZS50aWNrcygpLnNsaWNlKHQ/MTowKSxuPXRoaXMuX3hMaW5lc0NvbnRhaW5lci5zZWxlY3RBbGwoImxpbmUiKS5kYXRhKGUpO24uZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5tZXJnZShuKS5hdHRyKCJ4MSIsbXd0KHRoaXMuX3hTY2FsZSx0LHRoaXMuX3hTY2FsZS50aWNrcygpKSkuYXR0cigieTEiLDApLmF0dHIoIngyIixtd3QodGhpcy5feFNjYWxlLHQsdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MiIsdGhpcy5oZWlnaHQoKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLHQpLmNsYXNzZWQoInplcm9saW5lIiwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fSkpLG4uZXhpdCgpLnJlbW92ZSgpfX0sZS5wcm90b3R5cGUuX3JlZHJhd1lMaW5lcz1mdW5jdGlvbigpe2lmKHRoaXMuX3lTY2FsZSl7dmFyIHQ9dGhpcy5iZXR3ZWVuWSgpLGU9dGhpcy5feVNjYWxlLnRpY2tzKCkuc2xpY2UodD8xOjApLG49dGhpcy5feUxpbmVzQ29udGFpbmVyLnNlbGVjdEFsbCgibGluZSIpLmRhdGEoZSk7bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLm1lcmdlKG4pLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsbXd0KHRoaXMuX3lTY2FsZSx0LHRoaXMuX3lTY2FsZS50aWNrcygpKSkuYXR0cigieDIiLHRoaXMud2lkdGgoKSkuYXR0cigieTIiLG13dCh0aGlzLl95U2NhbGUsdCx0aGlzLl95U2NhbGUudGlja3MoKSkpLmNsYXNzZWQoImJldHdlZW5saW5lIix0KS5jbGFzc2VkKCJ6ZXJvbGluZSIsKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH0pKSxuLmV4aXQoKS5yZW1vdmUoKX19LGV9KShPX3QuQ29tcG9uZW50KTtwd3QuR3JpZGxpbmVzPWd3dDt2YXIgX3d0PXt9LHl3dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHl3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZ3dD1CTyxid3Q9X2d0LHh3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZGV0YWNoQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGUucmVtb3ZlKHQpfSxlfXJldHVybiB2d3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7cmV0dXJuIGU9Ynd0LmNvZXJjZUV4dGVybmFsRDMoZSksdC5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hbmNob3Iobi5lbGVtZW50KCkpfSkpLHRoaXN9LGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW5kZXIoKX0pKSx0aGlzfSxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJoYXMoKSBpcyBub3QgaW1wbGVtZW50ZWQgb24gQ29tcG9uZW50Q29udGFpbmVyIil9LGUucHJvdG90eXBlLl9hZG9wdEFuZEFuY2hvcj1mdW5jdGlvbih0KXt0LnBhcmVudCh0aGlzKSx0Lm9uRGV0YWNoKHRoaXMuX2RldGFjaENhbGxiYWNrKSx0aGlzLl9pc0FuY2hvcmVkJiZ0LmFuY2hvcih0aGlzLmVsZW1lbnQoKSl9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXModCkmJih0Lm9mZkRldGFjaCh0aGlzLl9kZXRhY2hDYWxsYmFjayksdGhpcy5fcmVtb3ZlKHQpLHQuZGV0YWNoKCksdGhpcy5yZWRyYXcoKSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJfZm9yRWFjaCgpIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBDb21wb25lbnRDb250YWluZXIiKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSl9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3RoaXMuX2ZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmludmFsaWRhdGVDYWNoZSgpfSkpfSxlfSkoT190LkNvbXBvbmVudCk7eXd0LkNvbXBvbmVudENvbnRhaW5lcj14d3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShfd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB3d3Q9Qk8sU3d0PURfdCxNd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fY29tcG9uZW50cz1bXSxuLmFkZENsYXNzKCJjb21wb25lbnQtZ3JvdXAiKSxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBuLmFwcGVuZCh0KX0pKSxufXJldHVybiB3d3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaCh0KX0sZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmluZGV4T2YodCk+PTB9LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fY29tcG9uZW50cy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcXVlc3RlZFNwYWNlKHQsZSl9KSk7cmV0dXJue21pbldpZHRoOlN3dC5NYXRoLm1heChuLChmdW5jdGlvbih0KXtyZXR1cm4gdC5taW5XaWR0aH0pLDApLG1pbkhlaWdodDpTd3QuTWF0aC5tYXgobiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubWluSGVpZ2h0fSksMCl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb21wdXRlTGF5b3V0KHt4OjAseTowfSxyLndpZHRoKCksci5oZWlnaHQoKSl9KSksdGhpc30sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZml4ZWRXaWR0aCgpfSkpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5maXhlZEhlaWdodCgpfSkpfSxlLnByb3RvdHlwZS5jb21wb25lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuc2xpY2UoKX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHx0aGlzLmhhcyh0KXx8KHQuZGV0YWNoKCksdGhpcy5fY29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2Fkb3B0QW5kQW5jaG9yKHQpLHRoaXMucmVkcmF3KCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY29tcG9uZW50cy5pbmRleE9mKHQpO3JldHVybiBlPj0wJiYodGhpcy5fY29tcG9uZW50cy5zcGxpY2UoZSwxKSwhMCl9LGV9KSh5d3QuQ29tcG9uZW50Q29udGFpbmVyKTtfd3QuR3JvdXA9TXd0O3ZhciBFd3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEV3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFR3dD1CTyxDd3Q9UGd0LEF3dD1DeXQsa3d0PXB2dCxQd3Q9RF90LEx3dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fdGV4dFBhZGRpbmc9NSxudWxsPT1lKXRocm93IG5ldyBFcnJvcigiSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQgcmVxdWlyZXMgYSBpbnRlcnBvbGF0ZWRDb2xvclNjYWxlIik7cmV0dXJuIG4uX3NjYWxlPWUsbi5fcmVkcmF3Q2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVkcmF3KCl9LG4uX3NjYWxlLm9uVXBkYXRlKG4uX3JlZHJhd0NhbGxiYWNrKSxuLl9mb3JtYXR0ZXI9a3d0LmdlbmVyYWwoKSxuLl9vcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIsbi5fZXhwYW5kcz0hMSxuLmFkZENsYXNzKCJsZWdlbmQiKSxuLmFkZENsYXNzKCJpbnRlcnBvbGF0ZWQtY29sb3ItbGVnZW5kIiksbn1yZXR1cm4gVHd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fc2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuZXhwYW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9leHBhbmRzOih0aGlzLl9leHBhbmRzPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5fZW5zdXJlT3JpZW50YXRpb249ZnVuY3Rpb24odCl7aWYoImhvcml6b250YWwiPT09KHQ9dC50b0xvd2VyQ2FzZSgpKXx8ImxlZnQiPT09dHx8InJpZ2h0Ij09PXQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCciJyt0KyciIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBJbnRlcnBvbGF0ZWRDb2xvckxlZ2VuZCcpfSxlLnByb3RvdHlwZS5vcmllbnRhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9vcmllbnRhdGlvbjoodGhpcy5fb3JpZW50YXRpb249ZS5fZW5zdXJlT3JpZW50YXRpb24odCksdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8dGhpcy5faXNWZXJ0aWNhbCgpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8IXRoaXMuX2lzVmVydGljYWwoKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlVGlja3M9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ZS5fREVGQVVMVF9OVU1fU1dBVENIRVMpO3ZhciBuPXRoaXMuX3NjYWxlLmRvbWFpbigpO2lmKDE9PT10KXJldHVybltuWzBdXTtmb3IodmFyIGk9KG5bMV0tblswXSkvKHQtMSkscj1bXSxvPTA7bzx0O28rKylyLnB1c2goblswXStpKm8pO3JldHVybiByfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9zd2F0Y2hDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic3dhdGNoLWNvbnRhaW5lciIsITApLHRoaXMuX3N3YXRjaEJvdW5kaW5nQm94PXRoaXMuY29udGVudCgpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInN3YXRjaC1ib3VuZGluZy1ib3giLCEwKSx0aGlzLl9sb3dlckxhYmVsPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfTEFCRUxfQ0xBU1MsITApLHRoaXMuX3VwcGVyTGFiZWw9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9MQUJFTF9DTEFTUywhMCk7dmFyIG49bmV3IEN3dC5TdmdDb250ZXh0KHRoaXMuY29udGVudCgpLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IEN3dC5NZWFzdXJlcihuKSx0aGlzLl93cmFwcGVyPW5ldyBDd3QuV3JhcHBlcix0aGlzLl93cml0ZXI9bmV3IEN3dC5Xcml0ZXIodGhpcy5fbWVhc3VyZXIsbix0aGlzLl93cmFwcGVyKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxuKXt2YXIgaSxyLG89dGhpcyxhPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQscz1hLGw9dGhpcy5fc2NhbGUuZG9tYWluKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gby5fbWVhc3VyZXIubWVhc3VyZShvLl9mb3JtYXR0ZXIodCkpLndpZHRofSkpLGM9ZS5fREVGQVVMVF9OVU1fU1dBVENIRVM7aWYodGhpcy5faXNWZXJ0aWNhbCgpKXt2YXIgdT1Qd3QuTWF0aC5tYXgobCwwKTtyPXMrYSt0aGlzLl90ZXh0UGFkZGluZyt1K3RoaXMuX3RleHRQYWRkaW5nLGk9YyphfWVsc2UgaT1zK2ErcyxyPXRoaXMuX3RleHRQYWRkaW5nK2xbMF0rYyphK2xbMV0rdGhpcy5fdGV4dFBhZGRpbmc7cmV0dXJue21pbldpZHRoOnIsbWluSGVpZ2h0Oml9fSxlLnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiJob3Jpem9udGFsIiE9PXRoaXMuX29yaWVudGF0aW9ufSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbixpLHIsbyxhLHMsbD10aGlzLl9zY2FsZS5kb21haW4oKSxjPXRoaXMuX2Zvcm1hdHRlcihsWzBdKSx1PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoYykud2lkdGgsaD10aGlzLl9mb3JtYXR0ZXIobFsxXSksZD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKGgpLndpZHRoLHA9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCxmPXRoaXMuX3RleHRQYWRkaW5nLG09e3g6MCx5OjB9LGc9e3g6MCx5OjB9LF89e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LHk9e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LHY9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH07aWYodGhpcy5faXNWZXJ0aWNhbCgpKXtzPU1hdGguZmxvb3IodGhpcy5oZWlnaHQoKSk7dmFyIGI9TWF0aC5tYXgodSxkKTthPSh0aGlzLndpZHRoKCktYi0yKnRoaXMuX3RleHRQYWRkaW5nKS8yLG49TWF0aC5tYXgodGhpcy53aWR0aCgpLWEtMipmLWIsMCksaT0xLG89ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5oZWlnaHQoKS0obisxKX0seS55QWxpZ249InRvcCIsbS55PTAsXy55QWxpZ249ImJvdHRvbSIsZy55PTAsImxlZnQiPT09dGhpcy5fb3JpZW50YXRpb24/KHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZitiK2Z9LHkueEFsaWduPSJyaWdodCIsbS54PS0oYStuK2YpLF8ueEFsaWduPSJyaWdodCIsZy54PS0oYStuK2YpKToocj1mdW5jdGlvbih0LGUpe3JldHVybiBhfSx5LnhBbGlnbj0ibGVmdCIsbS54PWErbitmLF8ueEFsaWduPSJsZWZ0IixnLng9YStuK2YpLHYud2lkdGg9bix2LmhlaWdodD1zKml9ZWxzZSBhPU1hdGgubWF4KGYsKHRoaXMuaGVpZ2h0KCktcCkvMikscz1NYXRoLm1heChNYXRoLmZsb29yKHRoaXMud2lkdGgoKS00KmYtdS1kKSwwKSxuPTEsaT1NYXRoLm1heCh0aGlzLmhlaWdodCgpLTIqYSwwKSxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodSsyKmYpK2V9LG89ZnVuY3Rpb24odCxlKXtyZXR1cm4gYX0seS54QWxpZ249InJpZ2h0IixtLng9LWYsXy54QWxpZ249ImxlZnQiLGcueD1mLHYueT1hLHYud2lkdGg9cypuLHYuaGVpZ2h0PWk7di54PXIobnVsbCwwKSx0aGlzLl91cHBlckxhYmVsLnRleHQoIiIpLHRoaXMuX3dyaXRlci53cml0ZShoLHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpLHksdGhpcy5fdXBwZXJMYWJlbC5ub2RlKCkpLHRoaXMuX3VwcGVyTGFiZWwuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbS54KyIsICIrbS55KyIpIiksdGhpcy5fbG93ZXJMYWJlbC50ZXh0KCIiKSx0aGlzLl93cml0ZXIud3JpdGUoYyx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSxfLHRoaXMuX2xvd2VyTGFiZWwubm9kZSgpKSx0aGlzLl9sb3dlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2cueCsiLCAiK2cueSsiKSIpLHRoaXMuX3N3YXRjaEJvdW5kaW5nQm94LmF0dHJzKHYpO3ZhciB4PXRoaXMuX2dlbmVyYXRlVGlja3Mocyksdz10aGlzLl9zd2F0Y2hDb250YWluZXIuc2VsZWN0QWxsKCJyZWN0LnN3YXRjaCIpLmRhdGEoeCksUz13LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic3dhdGNoIiwhMCksTT13Lm1lcmdlKFMpO3JldHVybiB3LmV4aXQoKS5yZW1vdmUoKSxNLmF0dHJzKHtmaWxsOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuX3NjYWxlLnNjYWxlKHQpfSx3aWR0aDpuLGhlaWdodDppLHg6cix5Om8sInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMifSksQXd0LkFERF9USVRMRV9FTEVNRU5UUyYmUy5hcHBlbmQoInRpdGxlIikudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2Zvcm1hdHRlcih0KX0pKSx0aGlzfSxlLl9ERUZBVUxUX05VTV9TV0FUQ0hFUz0xMSxlLkxFR0VORF9MQUJFTF9DTEFTUz0ibGVnZW5kLWxhYmVsIixlfSkoT190LkNvbXBvbmVudCk7RXd0LkludGVycG9sYXRlZENvbG9yTGVnZW5kPUx3dDt2YXIgSXd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShJd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBOd3Q9Qk8sUnd0PVBndCxPd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2b2lkIDA9PT1lJiYoZT0iIiksdm9pZCAwPT09biYmKG49MCk7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLmFkZENsYXNzKCJsYWJlbCIpLGkudGV4dChlKSxpLmFuZ2xlKG4pLGkueEFsaWdubWVudCgiY2VudGVyIikueUFsaWdubWVudCgiY2VudGVyIiksaS5fcGFkZGluZz0wLGl9cmV0dXJuIE53dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUodGhpcy5fdGV4dCk7cmV0dXJue21pbldpZHRoOigwPT09dGhpcy5hbmdsZSgpP24ud2lkdGg6bi5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbWluSGVpZ2h0OigwPT09dGhpcy5hbmdsZSgpP24uaGVpZ2h0Om4ud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCl9fSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90ZXh0Q29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpO3ZhciBlPW5ldyBSd3QuU3ZnQ29udGV4dCh0aGlzLl90ZXh0Q29udGFpbmVyLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IFJ3dC5DYWNoZU1lYXN1cmVyKGUpLHRoaXMuX3dyYXBwZXI9bmV3IFJ3dC5XcmFwcGVyLHRoaXMuX3dyaXRlcj1uZXcgUnd0LldyaXRlcih0aGlzLl9tZWFzdXJlcixlLHRoaXMuX3dyYXBwZXIpLHRoaXMudGV4dCh0aGlzLl90ZXh0KX0sZS5wcm90b3R5cGUudGV4dD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90ZXh0O2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkxhYmVsLnRleHQoKSBvbmx5IHRha2VzIHN0cmluZ3MgYXMgaW5wdXQiKTtyZXR1cm4gdGhpcy5fdGV4dD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuYW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5nbGU7aWYoKHQlPTM2MCk+MTgwP3QtPTM2MDp0PC0xODAmJih0Kz0zNjApLC05MCE9PXQmJjAhPT10JiY5MCE9PXQpdGhyb3cgbmV3IEVycm9yKHQrIiBpcyBub3QgYSB2YWxpZCBhbmdsZSBmb3IgTGFiZWwiKTtyZXR1cm4gdGhpcy5fYW5nbGU9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnBhZGRpbmc9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcGFkZGluZztpZigodD0rdCk8MCl0aHJvdyBuZXcgRXJyb3IodCsiIGlzIG5vdCBhIHZhbGlkIHBhZGRpbmcgdmFsdWUuIENhbm5vdCBiZSBsZXNzIHRoYW4gMC4iKTtyZXR1cm4gdGhpcy5fcGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fdGV4dENvbnRhaW5lci5zZWxlY3RBbGwoImciKS5yZW1vdmUoKTt2YXIgZT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKHRoaXMuX3RleHQpLG49TWF0aC5tYXgoTWF0aC5taW4oKHRoaXMuaGVpZ2h0KCktZS5oZWlnaHQpLzIsdGhpcy5wYWRkaW5nKCkpLDApLGk9TWF0aC5tYXgoTWF0aC5taW4oKHRoaXMud2lkdGgoKS1lLndpZHRoKS8yLHRoaXMucGFkZGluZygpKSwwKTt0aGlzLl90ZXh0Q29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2krIiwiK24rIikiKTt2YXIgcj10aGlzLndpZHRoKCktMippLG89dGhpcy5oZWlnaHQoKS0yKm4sYT17eEFsaWduOnRoaXMueEFsaWdubWVudCgpLHlBbGlnbjp0aGlzLnlBbGlnbm1lbnQoKSx0ZXh0Um90YXRpb246dGhpcy5hbmdsZSgpfTtyZXR1cm4gdGhpcy5fd3JpdGVyLndyaXRlKHRoaXMuX3RleHQscixvLGEpLHRoaXN9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGV9KShPX3QuQ29tcG9uZW50KTtJd3QuTGFiZWw9T3d0O3ZhciB6d3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixpKXt2YXIgcj10LmNhbGwodGhpcyxuLGkpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKGUuVElUTEVfTEFCRUxfQ0xBU1MpLHJ9cmV0dXJuIE53dC5fX2V4dGVuZHMoZSx0KSxlLlRJVExFX0xBQkVMX0NMQVNTPSJ0aXRsZS1sYWJlbCIsZX0pKE93dCk7SXd0LlRpdGxlTGFiZWw9end0O3ZhciBEd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixpKXt2YXIgcj10LmNhbGwodGhpcyxuLGkpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKGUuQVhJU19MQUJFTF9DTEFTUykscn1yZXR1cm4gTnd0Ll9fZXh0ZW5kcyhlLHQpLGUuQVhJU19MQUJFTF9DTEFTUz0iYXhpcy1sYWJlbCIsZX0pKE93dCk7SXd0LkF4aXNMYWJlbD1Ed3Q7dmFyIEJ3dD17fSxId3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShId3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGd3Q9d3B0O0h3dC5jaXJjbGU9ZnVuY3Rpb24gVnd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sQ2lyY2xlKS5zaXplKE1hdGguUEkqTWF0aC5wb3codC8yLDIpKX19LEh3dC5zcXVhcmU9ZnVuY3Rpb24gVXd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sU3F1YXJlKS5zaXplKE1hdGgucG93KHQsMikpfX0sSHd0LmNyb3NzPWZ1bmN0aW9uIGp3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbENyb3NzKS5zaXplKDUvOSpNYXRoLnBvdyh0LDIpKX19LEh3dC5kaWFtb25kPWZ1bmN0aW9uIEd3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbERpYW1vbmQpLnNpemUoTWF0aC50YW4oTWF0aC5QSS82KSpNYXRoLnBvdyh0LDIpLzIpfX0sSHd0LnRyaWFuZ2xlPWZ1bmN0aW9uIFd3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbFRyaWFuZ2xlKS5zaXplKE1hdGguc3FydCgzKSpNYXRoLnBvdyh0LzIsMikpfX07SHd0LnN0YXI9ZnVuY3Rpb24gcXd0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBGd3Quc3ltYm9sKCkudHlwZShGd3Quc3ltYm9sU3Rhcikuc2l6ZSguODkwODEzMDkxNTI5Mjg1MipNYXRoLnBvdyh0LzIsMikpfX07dmFyIFl3dD0zKigxL01hdGguc3FydCgxMikvMisxKTtId3Qud3llPWZ1bmN0aW9uIFh3dCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gRnd0LnN5bWJvbCgpLnR5cGUoRnd0LnN5bWJvbFd5ZSkuc2l6ZShZd3QqTWF0aC5wb3codC8yLjQsMikpfX0sCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkd3Q9Qk8sS3d0PXdwdCxad3Q9UGd0LEp3dD1DeXQsUXd0PXB2dCx0U3Q9SHd0LGVTdD1EX3QsblN0PU9fdCxpU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTEvMCksdGhpcy5jb2x1bW5zPXQsdGhpcy5ib3R0b21QYWRkaW5nPWUsdGhpcy5tYXhXaWR0aD1ufXJldHVybiB0LnByb3RvdHlwZS5hZGRDb2x1bW49ZnVuY3Rpb24odCl7dmFyIGU9dC53aWR0aCxuPXRoaXMuZ2V0V2lkdGhBdmFpbGFibGUoKTt0LndpZHRoPU1hdGgubWluKG4sZSksdGhpcy5jb2x1bW5zLnB1c2godCl9LHQucHJvdG90eXBlLmdldEJvdW5kcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5jb2x1bW5zW3RdLG49MCxpPTA7aTx0O2krKyluKz10aGlzLmNvbHVtbnNbaV0ud2lkdGg7cmV0dXJue3RvcExlZnQ6e3g6bix5OjB9LGJvdHRvbVJpZ2h0Ont4Om4rZS53aWR0aCx5OmUuaGVpZ2h0fX19LHQucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBlU3QuTWF0aC5tYXgodGhpcy5jb2x1bW5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkpLDApK3RoaXMuYm90dG9tUGFkZGluZ30sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLndpZHRofSksMCksdGhpcy5tYXhXaWR0aCl9LHQucHJvdG90eXBlLmdldFdpZHRoQXZhaWxhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRXaWR0aCgpO3JldHVybiBNYXRoLm1heCh0aGlzLm1heFdpZHRoLXQsMCl9LHR9KSgpLHJTdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLGkpe3ZvaWQgMD09PXQmJih0PTEvMCksdm9pZCAwPT09ZSYmKGU9MS8wKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT1bXSksdGhpcy5tYXhXaWR0aD10LHRoaXMubWF4SGVpZ2h0PWUsdGhpcy5wYWRkaW5nPW4sdGhpcy5yb3dzPWl9cmV0dXJuIHQucHJvdG90eXBlLmFkZFJvdz1mdW5jdGlvbih0KXt0Lm1heFdpZHRoPXRoaXMubWF4V2lkdGgtMip0aGlzLnBhZGRpbmcsdGhpcy5yb3dzLnB1c2godCl9LHQucHJvdG90eXBlLmdldENvbHVtbkJvdW5kcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0Um93Qm91bmRzKHQpLGk9dGhpcy5yb3dzW3RdLmdldEJvdW5kcyhlKTtyZXR1cm4gaS50b3BMZWZ0LngrPW4udG9wTGVmdC54LGkuYm90dG9tUmlnaHQueCs9bi50b3BMZWZ0LngsaS50b3BMZWZ0LnkrPW4udG9wTGVmdC55LGkuYm90dG9tUmlnaHQueSs9bi50b3BMZWZ0LnksaX0sdC5wcm90b3R5cGUuZ2V0Um93Qm91bmRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnBhZGRpbmcsbj10aGlzLnBhZGRpbmcsaT0wO2k8dDtpKyspbis9dGhpcy5yb3dzW2ldLmdldEhlaWdodCgpO3JldHVybnt0b3BMZWZ0Ont4OmUseTpufSxib3R0b21SaWdodDp7eDplK3RoaXMucm93c1t0XS5nZXRXaWR0aCgpLHk6bit0aGlzLnJvd3NbdF0uZ2V0SGVpZ2h0KCl9fX0sdC5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMucm93cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5nZXRIZWlnaHQoKX0pLDApKzIqdGhpcy5wYWRkaW5nLHRoaXMubWF4SGVpZ2h0KX0sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4oZVN0Lk1hdGgubWF4KHRoaXMucm93cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFdpZHRoKCl9KSksMCkrMip0aGlzLnBhZGRpbmcsdGhpcy5tYXhXaWR0aCl9LHR9KSgpLG9TdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7aWYobi5fcGFkZGluZz01LG4uX3Jvd0JvdHRvbVBhZGRpbmc9MyxuLmFkZENsYXNzKCJsZWdlbmQiKSxuLm1heEVudHJpZXNQZXJSb3coMSksbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIkxlZ2VuZCByZXF1aXJlcyBhIGNvbG9yU2NhbGUiKTtyZXR1cm4gbi5fY29sb3JTY2FsZT1lLG4uX3JlZHJhd0NhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBuLnJlZHJhdygpfSxuLl9jb2xvclNjYWxlLm9uVXBkYXRlKG4uX3JlZHJhd0NhbGxiYWNrKSxuLl9mb3JtYXR0ZXI9UXd0LmlkZW50aXR5KCksbi5tYXhMaW5lc1BlckVudHJ5KDEpLG4ueEFsaWdubWVudCgicmlnaHQiKS55QWxpZ25tZW50KCJ0b3AiKSxuLmNvbXBhcmF0b3IoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5fY29sb3JTY2FsZS5kb21haW4oKS5zbGljZSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX2Zvcm1hdHRlcih0KX0pKTtyZXR1cm4gaS5pbmRleE9mKHQpLWkuaW5kZXhPZihlKX0pKSxuLl9zeW1ib2xGYWN0b3J5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdFN0LmNpcmNsZSgpfSxuLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gMX0sbn1yZXR1cm4gJHd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciBuPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfUk9XX0NMQVNTLCEwKTtuLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLmFwcGVuZCgidGV4dCIpO3ZhciBpPW5ldyBad3QuU3ZnQ29udGV4dChuLm5vZGUoKSxudWxsLEp3dC5BRERfVElUTEVfRUxFTUVOVFMpO3RoaXMuX21lYXN1cmVyPW5ldyBad3QuQ2FjaGVNZWFzdXJlcihpKSx0aGlzLl93cmFwcGVyPShuZXcgWnd0LldyYXBwZXIpLm1heExpbmVzKHRoaXMubWF4TGluZXNQZXJFbnRyeSgpKSx0aGlzLl93cml0ZXI9bmV3IFp3dC5Xcml0ZXIodGhpcy5fbWVhc3VyZXIsaSx0aGlzLl93cmFwcGVyKX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4RW50cmllc1BlclJvdz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhFbnRyaWVzUGVyUm93Oih0aGlzLl9tYXhFbnRyaWVzUGVyUm93PXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4TGluZXNQZXJFbnRyeT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhMaW5lc1BlckVudHJ5Oih0aGlzLl9tYXhMaW5lc1BlckVudHJ5PXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4V2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4V2lkdGg6KHRoaXMuX21heFdpZHRoPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuY29tcGFyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jb21wYXJhdG9yOih0aGlzLl9jb21wYXJhdG9yPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuY29sb3JTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dD8odGhpcy5fY29sb3JTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spLHRoaXMuX2NvbG9yU2NhbGU9dCx0aGlzLl9jb2xvclNjYWxlLm9uVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKSx0aGlzLnJlZHJhdygpLHRoaXMpOnRoaXMuX2NvbG9yU2NhbGV9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fY29sb3JTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spfSxlLnByb3RvdHlwZS5fYnVpbGRMZWdlbmRUYWJsZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LHI9bmV3IHJTdCh0LGUsdGhpcy5fcGFkZGluZyksbz10aGlzLl9jb2xvclNjYWxlLmRvbWFpbigpLnNsaWNlKCkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5fY29tcGFyYXRvcihuLl9mb3JtYXR0ZXIodCksbi5fZm9ybWF0dGVyKGUpKX0pKSxhPW5ldyBpU3Q7cmV0dXJuIHIuYWRkUm93KGEpLGEuYm90dG9tUGFkZGluZz10aGlzLl9yb3dCb3R0b21QYWRkaW5nLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXthLmNvbHVtbnMubGVuZ3RoLzI9PT1uLm1heEVudHJpZXNQZXJSb3coKSYmKChhPW5ldyBpU3QpLmJvdHRvbVBhZGRpbmc9bi5fcm93Qm90dG9tUGFkZGluZyxyLmFkZFJvdyhhKSk7dmFyIG89YS5nZXRXaWR0aEF2YWlsYWJsZSgpLHM9bi5fZm9ybWF0dGVyKHQpLGw9bi5fbWVhc3VyZXIubWVhc3VyZShzKS53aWR0aDtvLWktbDwwJiZhLmNvbHVtbnMubGVuZ3RoPjEmJigoYT1uZXcgaVN0KS5ib3R0b21QYWRkaW5nPW4uX3Jvd0JvdHRvbVBhZGRpbmcsci5hZGRSb3coYSkpLGEuYWRkQ29sdW1uKHt3aWR0aDppLGhlaWdodDppLGRhdGE6e25hbWU6dCx0eXBlOiJzeW1ib2wifX0pLG89YS5nZXRXaWR0aEF2YWlsYWJsZSgpO3ZhciBjPU1hdGgubWluKG8sbCk7bi5fd3JhcHBlci5tYXhMaW5lcyhuLm1heExpbmVzUGVyRW50cnkoKSk7dmFyIHU9bi5fd3JhcHBlci53cmFwKHMsbi5fbWVhc3VyZXIsYykubm9MaW5lczthLmFkZENvbHVtbih7d2lkdGg6YyxoZWlnaHQ6dSppLGRhdGE6e25hbWU6dCx0eXBlOiJ0ZXh0In19KX0pKSxyfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2J1aWxkTGVnZW5kVGFibGUoZVN0Lk1hdGgubWluKFt0aGlzLm1heFdpZHRoKCksdF0sdCksZSk7cmV0dXJue21pbkhlaWdodDpuLmdldEhlaWdodCgpLG1pbldpZHRoOm4uZ2V0V2lkdGgoKX19LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztpZighdGhpcy5faXNTZXR1cClyZXR1cm5bXTt2YXIgaT10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTtyZXR1cm4gaS5yb3dzLnJlZHVjZSgoZnVuY3Rpb24ocixvLGEpe2lmKDAhPT1yLmxlbmd0aClyZXR1cm4gcjt2YXIgcz1pLmdldFJvd0JvdW5kcyhhKTtyZXR1cm4gZVN0Lk1hdGgud2l0aGluKHQscyk/by5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24ocixvLHMpe3ZhciBsPWkuZ2V0Q29sdW1uQm91bmRzKGEscyk7aWYoZVN0Lk1hdGgud2l0aGluKHQsbCkpe3ZhciBjPW4uY29udGVudCgpLnNlbGVjdEFsbCgiLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5ub2RlcygpW2FdLHU9S3d0LnNlbGVjdChjKS5zZWxlY3RBbGwoIi4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5ub2RlcygpW01hdGguZmxvb3Iocy8yKV0saD1Ld3Quc2VsZWN0KHUpLnNlbGVjdCgiLiIrZS5MRUdFTkRfU1lNQk9MX0NMQVNTKSxkPWVTdC5ET00uZ2V0VHJhbnNsYXRlVmFsdWVzKEt3dC5zZWxlY3QoYykpLHA9ZVN0LkRPTS5nZXRUcmFuc2xhdGVWYWx1ZXMoaCk7cmV0dXJuW3tib3VuZHM6ZVN0LkRPTS5lbGVtZW50QkJveChLd3Quc2VsZWN0KGMpKSxkYXR1bTpvLmRhdGEubmFtZSxwb3NpdGlvbjp7eDpkWzBdK3BbMF0seTpkWzFdK3BbMV19LHNlbGVjdGlvbjpLd3Quc2VsZWN0KHUpLGNvbXBvbmVudDpufV19cmV0dXJuIHJ9KSxyKTpyfSksW10pfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG49dGhpcy5fYnVpbGRMZWdlbmRUYWJsZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSk7dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7dmFyIGk9dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCJnLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5kYXRhKG4ucm93cykscj1pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9ST1dfQ0xBU1MsITApLm1lcmdlKGkpO2kuZXhpdCgpLnJlbW92ZSgpLHIuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgaT1uLmdldFJvd0JvdW5kcyhlKTtyZXR1cm4idHJhbnNsYXRlKCIraS50b3BMZWZ0LngrIiwgIitpLnRvcExlZnQueSsiKSJ9KSk7dmFyIG89dGhpcztyZXR1cm4gci5lYWNoKChmdW5jdGlvbih0LGkpe2Zvcih2YXIgcj1bXSxhPTA7YTx0LmNvbHVtbnMubGVuZ3RoO2ErPTIpci5wdXNoKFt0LmNvbHVtbnNbYV0sdC5jb2x1bW5zW2ErMV1dKTt2YXIgcz1Ld3Quc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5kYXRhKHIpLGw9cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLm1lcmdlKHMpO2wuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtyZXR1cm4gby5zeW1ib2woKShuLmRhdGEubmFtZSxpKSguNipuLmhlaWdodCkobnVsbCl9KSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLG89bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZihyKTtyZXR1cm4idHJhbnNsYXRlKCIrKG4uZ2V0Q29sdW1uQm91bmRzKGksbykudG9wTGVmdC54K3Iud2lkdGgvMikrIiwgIityLmhlaWdodC8yKyIpIn0pKS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIG8uX2NvbG9yU2NhbGUuc2NhbGUodFswXS5kYXRhLm5hbWUpfSkpLmF0dHIoIm9wYWNpdHkiLChmdW5jdGlvbih0LGUpe3JldHVybiBvLnN5bWJvbE9wYWNpdHkoKSh0WzBdLmRhdGEubmFtZSxpKX0pKS5jbGFzc2VkKGUuTEVHRU5EX1NZTUJPTF9DTEFTUywhMCksbC5hcHBlbmQoImciKS5jbGFzc2VkKCJ0ZXh0LWNvbnRhaW5lciIsITApLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZih0WzFdKTtyZXR1cm4idHJhbnNsYXRlKCIrbi5nZXRDb2x1bW5Cb3VuZHMoaSxyKS50b3BMZWZ0LngrIiwgMCkifSkpLmVhY2goKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1Ld3Quc2VsZWN0KHRoaXMpLHI9dFsxXTtvLl93cml0ZXIud3JpdGUoby5fZm9ybWF0dGVyKHIuZGF0YS5uYW1lKSxyLndpZHRoLG8uaGVpZ2h0KCkse3hBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AiLHRleHRSb3RhdGlvbjowfSxpLm5vZGUoKSl9KSkscy5leGl0KCkucmVtb3ZlKCl9KSksdGhpc30sZS5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N5bWJvbEZhY3RvcnlBY2Nlc3NvcjoodGhpcy5fc3ltYm9sRmFjdG9yeUFjY2Vzc29yPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3ltYm9sT3BhY2l0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I6KHRoaXMuX3N5bWJvbE9wYWNpdHlBY2Nlc3Nvcj0ibnVtYmVyIj09dHlwZW9mIHQ/ZnVuY3Rpb24oKXtyZXR1cm4gdH06dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGUuTEVHRU5EX1JPV19DTEFTUz0ibGVnZW5kLXJvdyIsZS5MRUdFTkRfRU5UUllfQ0xBU1M9ImxlZ2VuZC1lbnRyeSIsZS5MRUdFTkRfU1lNQk9MX0NMQVNTPSJsZWdlbmQtc3ltYm9sIixlfSkoblN0LkNvbXBvbmVudCk7Qnd0LkxlZ2VuZD1vU3Q7dmFyIGFTdD17fSxzU3Q9e30sbFN0PXt9OyEoZnVuY3Rpb24odCl7dmFyIGU7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwoZT10LkFuaW1hdG9yfHwodC5BbmltYXRvcj17fSkpLk1BSU49Im1haW4iLGUuUkVTRVQ9InJlc2V0In0pKGxTdCk7dmFyIGNTdD17fSx1U3Q9e30saFN0PXt9LGRTdD1mdW5jdGlvbiB0KGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiExPT09QXJyYXkuaXNBcnJheShlKX07ZnVuY3Rpb24gcFN0KHQpe3JldHVybiEwPT09ZFN0KHQpJiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgZlN0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZlN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbVN0PURfdCxnU3Q9MCxfU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PVtdKSx2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5fdXBkYXRlSWQ9Z1N0KyssdGhpcy5fZGF0YT10LHRoaXMuX21ldGFkYXRhPWUsdGhpcy5fY2FsbGJhY2tzPW5ldyBtU3QuQ2FsbGJhY2tTZXR9cmV0dXJuIHQucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZlVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2RhdGE6KHRoaXMuX2RhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS5tZXRhZGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tZXRhZGF0YToodGhpcy5fbWV0YWRhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS51cGRhdGVJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVJZH0sdC5wcm90b3R5cGUuX2Rpc3BhdGNoVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSWQ9Z1N0KyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LHR9KSgpO2ZTdC5EYXRhc2V0PV9TdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgdGhlIFNpZ25hdHVyZSBBUEkgdG8gaGVscCBpbiBjb21wYXJpbmcgd2hlbiB0d28KICAgICAqIFBsb3R0YWJsZSBvYmplY3RzIGhhdmUgImNoYW5nZWQiLgogICAgICoKICAgICAqIE1lbW9pemF0aW9uIGluIFBsb3R0YWJsZSBpcyBjb21wbGljYXRlZCBieSBtdXRhYmxlIHNjYWxlcyBhbmQgZGF0YXNldHMuIFdlIGNhbm5vdCBzaW1wbHkKICAgICAqIHJlZmVyZW5jZSBjb21wYXJlIHR3byBlLmcuIHNjYWxlcyBzaW5jZSBpdCBtYXkgaGF2ZSBpbnRlcm5hbGx5IG11dGF0ZWQuIFRvIHJlc29sdmUgdGhpcywKICAgICAqIHdlIHdyaXRlIGEgcmVjdXJzaXZlIFNpZ25hdHVyZSBpbnRlcmZhY2UgdGhhdCBob2xkcyBhbiBpbW11dGFibGUgc25hcHNob3Qgb2Ygd2hhdGV2ZXIKICAgICAqIHN0YXRlIHRoZSBzY2FsZS9kYXRhIHdhcyBpbiBhdCB0aGUgdGltZS4gVGhlbiBvbiBtZW1vaXplZCBmdW5jdGlvbiBpbnZvY2F0aW9uIHdlIHNpZ24gdGhlCiAgICAgKiBuZXcgaW5wdXRzIGFuZCBjb21wYXJlIHRoZSBzaWduYXR1cmVzIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgcmVjb21wdXRlLgogICAgICoKICAgICAqIFdlIG11c3QgaGFuZC13cml0ZSBhIHNpZ25hdHVyZSBmb3IgZWFjaCBjdXN0b20gY2xhc3Mgd2Ugd2lzaCB0byBzdXBwb3J0LgogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShoU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB5U3Q9Qk8sdlN0PWZ1bmN0aW9uIHQoZSl7dmFyIG4saTtyZXR1cm4hMSE9PXBTdChlKSYmKCJmdW5jdGlvbiI9PXR5cGVvZihuPWUuY29uc3RydWN0b3IpJiYoITEhPT1wU3QoaT1uLnByb3RvdHlwZSkmJiExIT09aS5oYXNPd25Qcm9wZXJ0eSgiaXNQcm90b3R5cGVPZiIpKSl9LGJTdD1mU3QseFN0PWxidDtmdW5jdGlvbiB3U3QodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBBU3Q/dDp0IGluc3RhbmNlb2YgRGF0ZT9FU3QodC52YWx1ZU9mKCkpOnQgaW5zdGFuY2VvZiB4U3QuU2NhbGU/U1N0KHQpOnQgaW5zdGFuY2VvZiBiU3QuRGF0YXNldD9NU3QodCk6dlN0KHQpP0NTdCh0KTpBcnJheS5pc0FycmF5KHQpP1RTdCh0KTpFU3QodCl9ZnVuY3Rpb24gU1N0KHQpe3JldHVybiBDU3Qoe2RvbWFpbjp0LmRvbWFpbigpLHJhbmdlOnQucmFuZ2UoKSx1cGRhdGVJZDp0LnVwZGF0ZUlkKCkscmVmOkVTdCh0KX0pfWZ1bmN0aW9uIE1TdCh0KXtyZXR1cm4gQ1N0KHtyZWY6RVN0KHQpLHVwZGF0ZUlkOnQudXBkYXRlSWQoKX0pfWZ1bmN0aW9uIEVTdCh0KXtyZXR1cm4gbmV3IFBTdCh0KX1mdW5jdGlvbiBUU3QodCl7cmV0dXJuIG5ldyBrU3QodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB3U3QodCl9KSkpfWZ1bmN0aW9uIENTdCh0KXt2YXIgZT17fTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYoZVtuXT13U3QodFtuXSkpO3JldHVybiBuZXcgTFN0KGUpfWhTdC5zaWduPXdTdCxoU3Quc2lnblNjYWxlPVNTdCxoU3Quc2lnbkRhdGFzZXQ9TVN0LGhTdC5zaWduUmVmPUVTdCxoU3Quc2lnbkFycmF5PVRTdCxoU3Quc2lnbk9iaj1DU3Q7dmFyIEFTdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5pc0RpZmZlcmVudD1mdW5jdGlvbih0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKXx8dGhpcy5pc1NpZ25hdHVyZURpZmZlcmVudCh0KX0sdH0pKCk7aFN0LlNpZ25hdHVyZT1BU3Q7dmFyIGtTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uYXJyYXk9ZSxufXJldHVybiB5U3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7aWYodC5hcnJheS5sZW5ndGghPT10aGlzLmFycmF5Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGU9MDtlPHRoaXMuYXJyYXkubGVuZ3RoO2UrKylpZih0aGlzLmFycmF5W2VdLmlzRGlmZmVyZW50KHQuYXJyYXlbZV0pKXJldHVybiEwO3JldHVybiExfSxlfSkoQVN0KTtoU3QuQXJyYXlTaWduYXR1cmU9a1N0O3ZhciBQU3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLnJlZj1lLG59cmV0dXJuIHlTdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5pc1NpZ25hdHVyZURpZmZlcmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWYhPT10LnJlZn0sZX0pKEFTdCk7aFN0LlJlZmVyZW5jZVNpZ25hdHVyZT1QU3Q7dmFyIExTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4ub2JqPWUsbn1yZXR1cm4geVN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmlzU2lnbmF0dXJlRGlmZmVyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5rZXlzKHRoaXMub2JqKSxuPU9iamVjdC5rZXlzKHQub2JqKTtpZihlLmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgaT0wLHI9ZTtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXTtpZighdC5vYmouaGFzT3duUHJvcGVydHkobykpcmV0dXJuITA7aWYodGhpcy5vYmpbb10uaXNEaWZmZXJlbnQodC5vYmpbb10pKXJldHVybiEwfXJldHVybiExfSxlfSkoQVN0KTtoU3QuT2JqZWN0U2lnbmF0dXJlPUxTdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgYSBmdW5jdGlvbiBtZW1vaXplciB1c2luZyB0aGUgU2lnbmF0dXJlIEFQSS4KICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodVN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSVN0PWhTdDt1U3QubWVtb2l6ZT1mdW5jdGlvbiBOU3QodCl7dmFyIGUsbj12b2lkIDAsaT0hMSxyPSExLG89ZnVuY3Rpb24oKXtmb3IodmFyIG89W10sYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspb1thXT1hcmd1bWVudHNbYV07aWYoaSlyZXR1cm4gZTt2YXIgcz1JU3Quc2lnbkFycmF5KG8pO3JldHVybiB2b2lkIDA9PT1ufHxuLmlzRGlmZmVyZW50KHMpPyhyJiZjb25zb2xlLndhcm4oImNhY2hlIG1pc3MhIGNvbXB1dGluZyIpLG49cyxlPXQuYXBwbHkodGhpcyxvKSk6ciYmY29uc29sZS53YXJuKCJjYWNoZSBoaXQhIiksZX07cmV0dXJuIG8uZG9Mb2NrZWQ9ZnVuY3Rpb24odCl7aWYoaSl0aHJvdyBuZXcgRXJyb3IoIkxvY2tpbmcgYW4gYWxyZWFkeSBsb2NrZWQgbWVtb2l6ZSBmdW5jdGlvbiEiKTtpPSEwO3ZhciBlPXQuYXBwbHkodGhpcyk7cmV0dXJuIGk9ITEsZX0sby5sb2dQZXJmb3JtYW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLHI9dCx0aGlzfSxvfTt2YXIgUlN0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShSU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBPU3Q9Q2UuZXhwb3J0cyx6U3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWFwPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5leGlzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdGhpcy5tYXBbdF0sZGVsZXRlIHRoaXMuZXhpc3RzW3RdLCEwfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwW3RdfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLmV4aXN0c1t0XX0sdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubWFwW3RdPWUsdGhpcy5leGlzdHNbdF09ITAsdGhpc30sdH0pKCksRFN0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm1hcD1uZXcgelN0fXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLmdldCh0WzBdKS5nZXQodFsxXSl9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pJiZ0aGlzLm1hcC5nZXQodFswXSkuaGFzKHRbMV0pfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pfHx0aGlzLm1hcC5zZXQodFswXSxuZXcgelN0KSx0aGlzLm1hcC5nZXQodFswXSkuc2V0KHRbMV0sZSksdGhpc30sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcC5oYXModFswXSkmJnRoaXMubWFwLmdldCh0WzBdKS5kZWxldGUodFsxXSksITB9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5tYXA9bmV3IHpTdH0sdC5yZXNvbHZlcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuW24udXBkYXRlSWQoKSxlXX0sdH0pKCk7ZnVuY3Rpb24gQlN0KHQpe3ZhciBlPU9TdC5tZW1vaXplKHQsRFN0LnJlc29sdmVyKTtyZXR1cm4gZS5jYWNoZT1uZXcgRFN0LGV9UlN0Lm1lbW9pemVQcm9qZWN0b3I9QlN0LFJTdC5tZW1vaXplUHJvamVjdG9ycz1mdW5jdGlvbiBIU3QodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09QlN0KHRbZV0pfSkpLHR9O3ZhciBGU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIGEgY29udmVuaWVudCB0aHVuayBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNvbW1vbiBjYXNlCiAgICAgKiBvZiBjcmVhdGluZyBhIG1lbW9pemVkIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaXRzIGlucHV0cyBmcm9tIG11dGFibGUgY2xhc3MgcHJvcGVydGllcy4KICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShGU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBWU3Q9Y1N0O0ZTdC5tZW1UaHVuaz1mdW5jdGlvbiBVU3QoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49dC5zbGljZSgwLC0xKSxpPXRbdC5sZW5ndGgtMV0scj1WU3QubWVtb2l6ZShpKSxvPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW4ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBseSh0KX0pKTtyZXR1cm4gci5hcHBseSh2b2lkIDAsZSl9O3JldHVybiBvfSwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTztlLl9fZXhwb3J0U3Rhcih1U3QsdCksZS5fX2V4cG9ydFN0YXIoUlN0LHQpLGUuX19leHBvcnRTdGFyKEZTdCx0KSx0LnNpZ249aFN0LnNpZ259KShjU3QpO3ZhciBqU3Q9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXdwdCxuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fZHJhd1N0ZXA9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0RHJhd1N0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhd1N0ZXB9LHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt2YXIgbj1lW2UubGVuZ3RoLTFdLmF0dHJUb0FwcGxpZWRQcm9qZWN0b3I7dGhpcy5fY29udGV4dC5zYXZlKCksdGhpcy5fZHJhd1N0ZXAodGhpcy5fY29udGV4dCx0LG4pLHRoaXMuX2NvbnRleHQucmVzdG9yZSgpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe30sdH0pKCk7ZnVuY3Rpb24gaSh0LGUsbixpKXtmb3IodmFyIHI9e30sbz0wLGE9ZTtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXTt0Lmhhc093blByb3BlcnR5KHMpJiYocltzXT10W3NdKG4saSkpfXJldHVybiByfWZ1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwhPXRbInN0cm9rZS13aWR0aCJdP3BhcnNlRmxvYXQodFsic3Ryb2tlLXdpZHRoIl0pOjF9ZnVuY3Rpb24gbyh0KXt2YXIgZT10WyJzdHJva2UtZGFzaGFycmF5Il07aWYobnVsbCE9ZSl0cnl7cmV0dXJuIGUuc3BsaXQoL1sgLF0rLykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9KSl9Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoImdldFN0cm9rZURhc2hBcnJheSBmYWlsZWQgd2l0aDogIit0KSxbXX1yZXR1cm5bXX1mdW5jdGlvbiBhKHQsbil7aWYobi5zdHJva2Upe3QubGluZVdpZHRoPXIobik7dmFyIGk9ZS5jb2xvcihuLnN0cm9rZSksYT1vKG4pO3Quc2V0TGluZURhc2goYSksaS5vcGFjaXR5Kj0oZnVuY3Rpb24gcyh0KXt2YXIgZT1udWxsIT10Lm9wYWNpdHk/cGFyc2VGbG9hdCh0Lm9wYWNpdHkpOjE7cmV0dXJuKG51bGwhPXRbInN0cm9rZS1vcGFjaXR5Il0/cGFyc2VGbG9hdCh0WyJzdHJva2Utb3BhY2l0eSJdKToxKSplfSkobiksdC5zdHJva2VTdHlsZT1pLnRvU3RyaW5nKCksdC5zdHJva2UoKX1pZihuLmZpbGwpe3ZhciBsPWUuY29sb3Iobi5maWxsKTtsLm9wYWNpdHkqPShmdW5jdGlvbiBjKHQpe3ZhciBlPW51bGwhPXQub3BhY2l0eT9wYXJzZUZsb2F0KHQub3BhY2l0eSk6MTtyZXR1cm4obnVsbCE9dFsiZmlsbC1vcGFjaXR5Il0/cGFyc2VGbG9hdCh0WyJmaWxsLW9wYWNpdHkiXSk6MSkqZX0pKG4pLHQuZmlsbFN0eWxlPWwudG9TdHJpbmcoKSx0LmZpbGwoKX19dC5DYW52YXNEcmF3ZXI9bix0LkNvbnRleHRTdHlsZUF0dHJzPVsiZmlsbC1vcGFjaXR5IiwiZmlsbCIsIm9wYWNpdHkiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZS13aWR0aCIsInN0cm9rZSIsInN0cm9rZS1kYXNoYXJyYXkiXSx0LnJlc29sdmVBdHRyaWJ1dGVzU3Vic2V0V2l0aFN0eWxlcz1mdW5jdGlvbiBzKGUsbixyLG8pe3JldHVybiBpKGUsdC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQobikscixvKX0sdC5yZXNvbHZlQXR0cmlidXRlcz1pLHQuZ2V0U3Ryb2tlV2lkdGg9cix0LmdldFN0cm9rZURhc2hBcnJheT1vLHQucmVuZGVyQXJlYT1mdW5jdGlvbiBsKHQsZSxuLGkpe3Quc2F2ZSgpLHQuYmVnaW5QYXRoKCksZS5jb250ZXh0KHQpLGUobiksdC5saW5lSm9pbj0icm91bmQiLGEodCxpKSx0LnJlc3RvcmUoKX0sdC5yZW5kZXJMaW5lPWZ1bmN0aW9uIGModCxlLG4saSl7dC5zYXZlKCksdC5iZWdpblBhdGgoKSxlLmNvbnRleHQodCksZShuKSx0LmxpbmVKb2luPSJyb3VuZCIsYSh0LGkpLHQucmVzdG9yZSgpfSx0LnJlbmRlclBhdGhXaXRoU3R5bGU9YX0pKGpTdCk7dmFyIEdTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoR1N0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgV1N0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9zdmdEcmF3ZXJGYWN0b3J5PXQsdGhpcy5fY2FudmFzRHJhd2VyRmFjdG9yeT1lfXJldHVybiB0LnByb3RvdHlwZS51c2VTVkc9ZnVuY3Rpb24odCl7bnVsbCE9dGhpcy5fY3VycmVudERyYXdlciYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKTt2YXIgZT10aGlzLl9zdmdEcmF3ZXJGYWN0b3J5KCk7ZS5hdHRhY2hUbyh0KSx0aGlzLl9jdXJyZW50RHJhd2VyPWV9LHQucHJvdG90eXBlLnVzZUNhbnZhcz1mdW5jdGlvbih0KXtudWxsIT10aGlzLl9jdXJyZW50RHJhd2VyJiZ0aGlzLl9jdXJyZW50RHJhd2VyLnJlbW92ZSgpLHRoaXMuX2N1cnJlbnREcmF3ZXI9dGhpcy5fY2FudmFzRHJhd2VyRmFjdG9yeSh0Lm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpKX0sdC5wcm90b3R5cGUuZ2V0RHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnREcmF3ZXJ9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe251bGwhPXRoaXMuX2N1cnJlbnREcmF3ZXImJnRoaXMuX2N1cnJlbnREcmF3ZXIucmVtb3ZlKCl9LHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt0aGlzLl9jdXJyZW50RHJhd2VyLmRyYXcodCxlKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyLmdldFZpc3VhbFByaW1pdGl2ZXMoKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3VycmVudERyYXdlci5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4KHQpfSx0fSkoKTtHU3QuUHJveHlEcmF3ZXI9V1N0O3ZhciBxU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHFTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFlTdD13cHQsWFN0PURfdCwkU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3Jvb3Q9WVN0LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx0aGlzLl9jbGFzc05hbWU9ZSx0aGlzLl9zdmdFbGVtZW50TmFtZT10fXJldHVybiB0LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0aGlzLl9jcmVhdGVBbmREZXN0cm95RE9NRWxlbWVudHModCk7Zm9yKHZhciBpPTAscj1lLmxlbmd0aCxvPWZ1bmN0aW9uKHIpe3ZhciBvPWVbcl07WFN0LldpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuLl9kcmF3U3RlcChvKX0pLGkpLGkrPW8uYW5pbWF0b3IudG90YWxUaW1lKHQubGVuZ3RoKX0sYT0wO2E8cjthKyspbyhhKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXMmJih0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9dGhpcy5fc2VsZWN0aW9uLm5vZGVzKCkpLHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlc30sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXA/bnVsbDp0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZU1hcC5nZXQodCl9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3Jvb3QucmVtb3ZlKCl9LHQucHJvdG90eXBlLmF0dGFjaFRvPWZ1bmN0aW9uKHQpe3Qubm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX3Jvb3Qubm9kZSgpKX0sdC5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSx0LnByb3RvdHlwZS5zZWxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdmdFbGVtZW50TmFtZX0sdC5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5fY3JlYXRlQW5kRGVzdHJveURPTUVsZW1lbnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT10P3tkOnQsaTplfTpudWxsfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSksbj10aGlzLl9yb290LnNlbGVjdEFsbCh0aGlzLnNlbGVjdG9yKCkpLmRhdGEoZSk7dGhpcy5fc2VsZWN0aW9uPW4uZW50ZXIoKS5hcHBlbmQodGhpcy5fc3ZnRWxlbWVudE5hbWUpLm1lcmdlKG4pLG4uZXhpdCgpLnJlbW92ZSgpO3ZhciBpPW5ldyBYU3QuTWFwO3RoaXMuX3NlbGVjdGlvbi5lYWNoKChmdW5jdGlvbih0KXtpLnNldCh0LmksdGhpcyl9KSksdGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXA9aSx0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9bnVsbCx0aGlzLl9zZWxlY3Rpb24uZGF0YSh0aGlzLl9zZWxlY3Rpb24uZGF0YSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZH0pKSksbnVsbCE9dGhpcy5fY2xhc3NOYW1lJiZ0aGlzLl9zZWxlY3Rpb24uY2xhc3NlZCh0aGlzLl9jbGFzc05hbWUsITApLHRoaXMuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXModGhpcy5fc2VsZWN0aW9uKX0sdC5wcm90b3R5cGUuX2RyYXdTdGVwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7WyJmaWxsIiwic3Ryb2tlIl0uZm9yRWFjaCgoZnVuY3Rpb24obil7bnVsbCE9dC5hdHRyVG9BcHBsaWVkUHJvamVjdG9yW25dJiZlLl9zZWxlY3Rpb24uYXR0cihuLHQuYXR0clRvQXBwbGllZFByb2plY3RvcltuXSl9KSksdC5hbmltYXRvci5hbmltYXRlKHRoaXMuX3NlbGVjdGlvbix0LmF0dHJUb0FwcGxpZWRQcm9qZWN0b3IpLG51bGwhPXRoaXMuX2NsYXNzTmFtZSYmdGhpcy5fc2VsZWN0aW9uLmNsYXNzZWQodGhpcy5fY2xhc3NOYW1lLCEwKX0sdH0pKCk7cVN0LlNWR0RyYXdlcj0kU3Q7dmFyIEtTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoS1N0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWlN0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdD10aGlzO3RoaXMuc2NhbGU9MCx0aGlzLnRyYW5zbGF0ZT0wLHRoaXMuY2FjaGVkRG9tYWluPVtudWxsLG51bGxdLHRoaXMubGFzdFNlZW5Eb21haW49W251bGwsbnVsbF0sdGhpcy51cGRhdGVEb21haW49ZnVuY3Rpb24oZSl7dC5sYXN0U2VlbkRvbWFpbj1lLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7dmFyIG49ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzFdKS1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLGk9ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQubGFzdFNlZW5Eb21haW5bMV0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKTt0LnNjYWxlPW4vaXx8MSx0LnRyYW5zbGF0ZT1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKSp0LnNjYWxlfHwwfX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnNjYWxlPTEsdGhpcy50cmFuc2xhdGU9MCx0aGlzLmNhY2hlZERvbWFpbj10aGlzLmxhc3RTZWVuRG9tYWlufSx0LnByb3RvdHlwZS5zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5jYWNoZWREb21haW49dC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpfSx0fSkoKSxKU3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZhciBpPXRoaXM7dGhpcy5yZW5kZXJDYWxsYmFjaz1lLHRoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjaz1uLHRoaXMuZG9tYWluVHJhbnNmb3JtWD1uZXcgWlN0LHRoaXMuZG9tYWluVHJhbnNmb3JtWT1uZXcgWlN0LHRoaXMucmVuZGVyRGVmZXJyZWQ9ZnVuY3Rpb24oKXtpLmFwcGx5VHJhbnNmb3JtKCksY2xlYXJUaW1lb3V0KGkudGltZW91dFRva2VuKSxpLnRpbWVvdXRUb2tlbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kucmVuZGVyQ2FsbGJhY2soKX0pLHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZKX19cmV0dXJuIHQucHJvdG90eXBlLnNldERvbWFpbnM9ZnVuY3Rpb24odCxlKXt0JiZ0aGlzLmRvbWFpblRyYW5zZm9ybVguc2V0RG9tYWluKHQpLGUmJnRoaXMuZG9tYWluVHJhbnNmb3JtWS5zZXREb21haW4oZSksdGhpcy5yZW5kZXJEZWZlcnJlZCgpfSx0LnByb3RvdHlwZS51cGRhdGVEb21haW5zPWZ1bmN0aW9uKHQsZSl7dCYmdGhpcy5kb21haW5UcmFuc2Zvcm1YLnVwZGF0ZURvbWFpbih0KSxlJiZ0aGlzLmRvbWFpblRyYW5zZm9ybVkudXBkYXRlRG9tYWluKGUpLHRoaXMucmVuZGVyRGVmZXJyZWQoKX0sdC5wcm90b3R5cGUucmVzZXRUcmFuc2Zvcm1zPWZ1bmN0aW9uKCl7dGhpcy5kb21haW5UcmFuc2Zvcm1YLnJlc2V0KCksdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnJlc2V0KCksdGhpcy5hcHBseVRyYW5zZm9ybSgpfSx0LnByb3RvdHlwZS5hcHBseVRyYW5zZm9ybT1mdW5jdGlvbigpe3RoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjayh0aGlzLmRvbWFpblRyYW5zZm9ybVgudHJhbnNsYXRlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS50cmFuc2xhdGUsdGhpcy5kb21haW5UcmFuc2Zvcm1YLnNjYWxlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS5zY2FsZSl9LHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZPTIwMCx0fSkoKTtLU3QuRGVmZXJyZWRSZW5kZXJlcj1KU3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShzU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBRU3Q9Qk8sdE10PXdwdCxlTXQ9Zmd0LG5NdD1EX3QsaU10PWxTdCxyTXQ9Y1N0LG9NdD1PX3QsYU10PWpTdCxzTXQ9R1N0LGxNdD1xU3QsY010PV9ndCx1TXQ9S1N0O3NTdC5SZW5kZXJlcj1iZ3QubWFrZUVudW0oWyJzdmciLCJjYW52YXMiXSk7dmFyIGhNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztuLl9kYXRhQ2hhbmdlZD0hMSxuLl9hdHRyRXh0ZW50cz17fSxuLl9hbmltYXRlPSExLG4uX2FuaW1hdG9ycz17fSxuLl9wcm9wZXJ0eUV4dGVudHM9e30sbi5fcmVzZXRFbnRpdHlTdG9yZT1mdW5jdGlvbigpe24uX2NhY2hlZEVudGl0eVN0b3JlPXZvaWQgMH0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5hZGRDbGFzcygicGxvdCIpLG4uX2RhdGFzZXRUb0RyYXdlcj1uZXcgbk10Lk1hcCxuLl9hdHRyQmluZGluZ3M9dE10Lm1hcCgpLG4uX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5faW5jbHVkZWRWYWx1ZXNGb3JTY2FsZSh0LGUpfSxuLl9yZW5kZXJDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLnJlbmRlcigpfSxuLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLl9vbkRhdGFzZXRVcGRhdGUoKX0sbi5fcHJvcGVydHlCaW5kaW5ncz10TXQubWFwKCk7dmFyIGk9KG5ldyBlTXQuRWFzaW5nKS5tYXhUb3RhbER1cmF0aW9uKGUuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pO3JldHVybiBuLmFuaW1hdG9yKGlNdC5BbmltYXRvci5NQUlOLGkpLG4uYW5pbWF0b3IoaU10LkFuaW1hdG9yLlJFU0VULG5ldyBlTXQuTnVsbCksbi5fZGVmZXJyZWRSZXNldEVudGl0eVN0b3JlPW5NdC5XaW5kb3cuZGVib3VuY2UodU10LkRlZmVycmVkUmVuZGVyZXIuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZLG4uX3Jlc2V0RW50aXR5U3RvcmUpLG59cmV0dXJuIFFTdC5fX2V4dGVuZHMoZSx0KSxlLmdldFRvdGFsRHJhd1RpbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrbi5hbmltYXRvci50b3RhbFRpbWUodC5sZW5ndGgpfSksMCl9LGUuYXBwbHlEcmF3U3RlcHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuYXR0clRvUHJvamVjdG9yLGk9e307cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lbdF09ZnVuY3Rpb24oaSxyKXtyZXR1cm4gblt0XShpLHIsZSl9fSkpLHthdHRyVG9BcHBsaWVkUHJvamVjdG9yOmksYW5pbWF0b3I6dC5hbmltYXRvcn19KSl9LGUucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihlKXtyZXR1cm4gZT1jTXQuY29lcmNlRXh0ZXJuYWxEMyhlKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX2RhdGFDaGFuZ2VkPSEwLHRoaXMuX3Jlc2V0RW50aXR5U3RvcmUoKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9pc1NldHVwfHwodC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksbnVsbCE9dGhpcy5fY2FudmFzJiZ0aGlzLl9hcHBlbmRDYW52YXNOb2RlKCksdGhpcy5fcmVuZGVyQXJlYT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJyZW5kZXItYXJlYSIsITApLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0KHQpfSkpKX0sZS5wcm90b3R5cGUuX2FwcGVuZENhbnZhc05vZGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQoKS5zZWxlY3QoIi5wbG90LWNhbnZhcy1jb250YWluZXIiKTt0LmVtcHR5KCkmJih0PXRoaXMuZWxlbWVudCgpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgicGxvdC1jYW52YXMtY29udGFpbmVyIiwhMCkpLm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMubm9kZSgpKX0sZS5wcm90b3R5cGUuc2V0Qm91bmRzPWZ1bmN0aW9uKGUsbixpLHIpe2lmKHQucHJvdG90eXBlLnNldEJvdW5kcy5jYWxsKHRoaXMsZSxuLGksciksdGhpcy5fdXBkYXRlRXh0ZW50cygpLG51bGwhPXRoaXMuX2NhbnZhcyl7aWYodGhpcy5fYnVmZmVyQ2FudmFzJiYhdGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQpe3RoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJ3aWR0aCIsdGhpcy5fY2FudmFzLmF0dHIoIndpZHRoIikpLHRoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJoZWlnaHQiLHRoaXMuX2NhbnZhcy5hdHRyKCJoZWlnaHQiKSk7dmFyIG89dGhpcy5fYnVmZmVyQ2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpO2lmKG8pe3ZhciBhPXRoaXMuX2NhbnZhcy5ub2RlKCk7YS53aWR0aD4wJiZhLmhlaWdodD4wP28uY2FudmFzLndpZHRoPjAmJm8uY2FudmFzLmhlaWdodD4wJiZvLmRyYXdJbWFnZShhLDAsMCk6Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gZmlsbCBidWZmZXIgY2FudmFzIHdpdGggd2l0aCAweDAgY2FudmFzIil9dGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQ9ITB9dmFyIHM9bnVsbCE9d2luZG93LmRldmljZVBpeGVsUmF0aW8/d2luZG93LmRldmljZVBpeGVsUmF0aW86MTt0aGlzLl9jYW52YXMuYXR0cigid2lkdGgiLGUqcyksdGhpcy5fY2FudmFzLmF0dHIoImhlaWdodCIsbipzKTt2YXIgbD10aGlzLl9jYW52YXMubm9kZSgpLmdldENvbnRleHQoIjJkIik7aWYobCYmKGwuc2V0VHJhbnNmb3JtKHMsMCwwLHMsMCwwKSx0aGlzLl9idWZmZXJDYW52YXMpKXt2YXIgYz10aGlzLl9idWZmZXJDYW52YXMubm9kZSgpO2Mud2lkdGg+MCYmYy5oZWlnaHQ+MD9sLmNhbnZhcy53aWR0aD4wJiZsLmNhbnZhcy5oZWlnaHQ+MCYmbC5kcmF3SW1hZ2UoYywwLDAsZSxuKTpjb25zb2xlLndhcm4oIkZhaWxlZCB0byBmaWxsIGNhbnZhcyB3aXRoIDB4MCBidWZmZXIgY2FudmFzIil9fXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fc2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQub2ZmVXBkYXRlKGUuX3JlbmRlckNhbGxiYWNrKX0pKSx0aGlzLmRhdGFzZXRzKFtdKX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpO3JldHVybiJzdmciPT09dGhpcy5yZW5kZXJlcigpP2UudXNlU1ZHKHRoaXMuX3JlbmRlckFyZWEpOmUudXNlQ2FudmFzKHRoaXMuX2NhbnZhcyksZX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHNNdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxNdC5TVkdEcmF3ZXIoInBhdGgiLCIiKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGFNdC5DYW52YXNEcmF3ZXIodCwoZnVuY3Rpb24oKXt9KSl9KSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpJiZ0aGlzLl9hbmltYXRvcnNbdF18fG5ldyBlTXQuTnVsbH0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMCx0aGlzLl9yZXNldEVudGl0eVN0b3JlKCksdGhpcy5yZW5kZXJMb3dQcmlvcml0eSgpfSxlLnByb3RvdHlwZS5hdHRyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbD09ZT90aGlzLl9hdHRyQmluZGluZ3MuZ2V0KHQpOih0aGlzLl9iaW5kQXR0cih0LGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2JpbmRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0KSxvPW51bGwhPXI/ci5zY2FsZTpudWxsO3RoaXMuX3Byb3BlcnR5QmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bixwb3N0U2NhbGU6aX0pLG51bGwhPW8mJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KG8sdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fYmluZEF0dHI9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2F0dHJCaW5kaW5ncy5nZXQodCkscj1udWxsIT1pP2kuc2NhbGU6bnVsbDt0aGlzLl9hdHRyQmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bn0pLG51bGwhPXImJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KHIsdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3J9LGUucHJvdG90eXBlLl9nZXRBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3Ipe3ZhciB0PXRoaXMuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCk7ZS5PUFRJTUlaRV9NRU1PSVpFX1BST0pFQ1RPUlMmJih0PXJNdC5tZW1vaXplUHJvamVjdG9ycyh0KSksdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yPXR9cmV0dXJuIG5NdC5hc3NpZ24oe30sdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9e307dGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKG4saSl7dFtpXT1lLl9zY2FsZWRBY2Nlc3NvcihuKX0pKTt2YXIgbj10aGlzLl9wcm9wZXJ0eVByb2plY3RvcnMoKTtyZXR1cm4gT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bnVsbD09dFtlXSYmKHRbZV09bltlXSl9KSksdH0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9pc0FuY2hvcmVkJiYodGhpcy5fcGFpbnQoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVyTG93UHJpb3JpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyQ2FsbGJhY2soKSx0aGlzfSxlLnByb3RvdHlwZS5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbmltYXRlOih0aGlzLl9hbmltYXRlPXQsdGhpcyl9LGUucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXRhY2guY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NjYWxlcz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLl9hdHRyQmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaT1lLnNjYWxlO251bGwhPWkmJi0xPT09dC5pbmRleE9mKGkpJiZ0LnB1c2goaSl9KSksdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5lYWNoKChmdW5jdGlvbihlLG4pe3ZhciBpPWUuc2NhbGU7bnVsbCE9aSYmLTE9PT10LmluZGV4T2YoaSkmJnQucHVzaChpKX0pKSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlRXh0ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpLHRoaXMuX3NjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodC5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcil9KSl9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvckF0dHI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10aGlzLl9hdHRyRXh0ZW50c1t0XSl7dmFyIG49ck10Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fYXR0ckJpbmRpbmdzLmdldCh0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lfHxudWxsPT1lLmFjY2Vzc29yP251bGw6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBkTXQodCxlLG51bGwpfSkpfSkpO3RoaXMuX2F0dHJFeHRlbnRzW3RdPW59cmV0dXJuIHRoaXMuX2F0dHJFeHRlbnRzW3RdKCl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKG51bGw9PXRoaXMuX3Byb3BlcnR5RXh0ZW50c1t0XSl7dmFyIG49ck10Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fcHJvcGVydHlCaW5kaW5ncy5nZXQodCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZmlsdGVyRm9yUHJvcGVydHkodCl9KSwoZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsPT1lfHxudWxsPT1lLmFjY2Vzc29yP251bGw6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBkTXQodCxlLG4pfSkpfSkpO3RoaXMuX3Byb3BlcnR5RXh0ZW50c1t0XT1ufXJldHVybiB0aGlzLl9wcm9wZXJ0eUV4dGVudHNbdF0oKX0sZS5wcm90b3R5cGUuX2luY2x1ZGVkVmFsdWVzRm9yU2NhbGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKCF0aGlzLl9pc0FuY2hvcmVkJiYhZSlyZXR1cm5bXTt2YXIgaT1bXTtyZXR1cm4gdGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKGUscil7aWYoZS5zY2FsZT09PXQpe3ZhciBvPW4uZ2V0RXh0ZW50c0ZvckF0dHIocik7bnVsbCE9byYmKGk9aS5jb25jYXQodE10Lm1lcmdlKG8pKSl9fSkpLHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxyKXtpZihlLnNjYWxlPT09dCl7dmFyIG89bi5nZXRFeHRlbnRzRm9yUHJvcGVydHkocik7bnVsbCE9byYmKGk9aS5jb25jYXQodE10Lm1lcmdlKG8pKSl9fSkpLGl9LGUucHJvdG90eXBlLmFuaW1hdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5fYW5pbWF0b3JzW3RdOih0aGlzLl9hbmltYXRvcnNbdF09ZSx0aGlzKX0sZS5wcm90b3R5cGUucmVuZGVyZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdm9pZCAwPT09dD9udWxsPT10aGlzLl9jYW52YXM/InN2ZyI6ImNhbnZhcyI6KG51bGw9PXRoaXMuX2NhbnZhcyYmImNhbnZhcyI9PT10Pyh0aGlzLl9jYW52YXM9dE10LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkuY2xhc3NlZCgicGxvdC1jYW52YXMiLCEwKSx0aGlzLl9idWZmZXJDYW52YXM9dE10LnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSksbnVsbCE9dGhpcy5lbGVtZW50KCkmJnRoaXMuX2FwcGVuZENhbnZhc05vZGUoKSx0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC51c2VDYW52YXMoZS5fY2FudmFzKX0pKSx0aGlzLnJlbmRlcigpKTpudWxsIT10aGlzLl9jYW52YXMmJiJzdmciPT10JiYodGhpcy5fY2FudmFzLnJlbW92ZSgpLHRoaXMuX2NhbnZhcz1udWxsLHRoaXMuX2J1ZmZlckNhbnZhcz1udWxsLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnVzZVNWRyhlLl9yZW5kZXJBcmVhKX0pKSx0aGlzLnJlbmRlcigpKSx0aGlzKX0sZS5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkRGF0YXNldCh0KSx0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKSx0aGlzfSxlLnByb3RvdHlwZS5fYWRkRGF0YXNldD1mdW5jdGlvbih0KXt0aGlzLl9yZW1vdmVEYXRhc2V0KHQpO3ZhciBlPXRoaXMuX2NyZWF0ZURyYXdlcih0KTtyZXR1cm4gdGhpcy5fZGF0YXNldFRvRHJhd2VyLnNldCh0LGUpLHRoaXMuX2lzU2V0dXAmJnRoaXMuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldCh0KSx0Lm9uVXBkYXRlKHRoaXMuX29uRGF0YXNldFVwZGF0ZUNhbGxiYWNrKSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVEYXRhc2V0KHQpLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybi0xPT09dGhpcy5kYXRhc2V0cygpLmluZGV4T2YodCl8fCh0aGlzLl9yZW1vdmVEYXRhc2V0Tm9kZXModCksdC5vZmZVcGRhdGUodGhpcy5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2spLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5kZWxldGUodCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24odCl7dGhpcy5fZGF0YXNldFRvRHJhd2VyLmdldCh0KS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuZGF0YXNldHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVtdO3JldHVybiB0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5wdXNoKGUpfSkpLG51bGw9PXQ/bjoobi5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fcmVtb3ZlRGF0YXNldCh0KX0pKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9hZGREYXRhc2V0KHQpfSkpLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgZU10Lk51bGx9XX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt9LGUucHJvdG90eXBlLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2Zvcih2YXIgcj1lLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpLG89MCxhPXQuZGF0YSgpLHM9YS5sZW5ndGgsbD1mdW5jdGlvbihzKXt2YXIgbD1hW3NdLGM9ZS5fcGl4ZWxQb2ludChsLHMsdCk7aWYobk10Lk1hdGguaXNOYU4oYy54KXx8bk10Lk1hdGguaXNOYU4oYy55KSlyZXR1cm4iY29udGludWUiO3ZhciB1PWU7bi5wdXNoKHtkYXR1bTpsLGdldCBwb3NpdGlvbigpe3JldHVybiB1Ll9waXhlbFBvaW50LmNhbGwodSxsLHMsdCl9LGluZGV4OnMsZGF0YXNldDp0LGRhdGFzZXRJbmRleDppLGNvbXBvbmVudDplLGRyYXdlcjpyLHZhbGlkRGF0dW1JbmRleDpvfSksbysrfSxjPTA7YzxzO2MrKylsKGMpfSkpLG59LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG5NdC5NYXA7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXQoZSxlLmRhdGEoKSl9KSksdH0sZS5wcm90b3R5cGUuX3BhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztkZWxldGUgdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yO3ZhciBuPXRoaXMuX2dlbmVyYXRlRHJhd1N0ZXBzKCksaT10aGlzLl9nZXREYXRhVG9EcmF3KCkscj10aGlzLmRhdGFzZXRzKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fZGF0YXNldFRvRHJhd2VyLmdldChlKX0pKTtpZigiY2FudmFzIj09PXRoaXMucmVuZGVyZXIoKSl7dmFyIG89dGhpcy5fY2FudmFzLm5vZGUoKTtvLmdldENvbnRleHQoIjJkIikuY2xlYXJSZWN0KDAsMCxvLmNsaWVudFdpZHRoLG8uY2xpZW50SGVpZ2h0KSx0aGlzLl9idWZmZXJDYW52YXNWYWxpZD0hMX10aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgYT1lLmFwcGx5RHJhd1N0ZXBzKG4sdCk7cltvXS5kcmF3KGkuZ2V0KHQpLGEpfSkpO3ZhciBhPXRoaXMuZGF0YXNldHMoKS5tYXAoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuZ2V0VG90YWxEcmF3VGltZShpLmdldCh0KSxuKX0pKSxzPW5NdC5NYXRoLm1heChhLDApO3RoaXMuX2FkZGl0aW9uYWxQYWludChzKX0sZS5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHZvaWQgMD09PXQmJih0PXRoaXMuZGF0YXNldHMoKSksImNhbnZhcyI9PT10aGlzLnJlbmRlcmVyKCkpcmV0dXJuIHRNdC5zZWxlY3RBbGwoKTt2YXIgbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT1lLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpO2lmKG51bGwhPWkpe3ZhciByPWkuZ2V0VmlzdWFsUHJpbWl0aXZlcygpO24ucHVzaC5hcHBseShuLHIpfX0pKSx0TXQuc2VsZWN0QWxsKG4pfSxlLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9nZXRFbnRpdHlTdG9yZSh0KS5lbnRpdGllcygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuZmlsdGVyRW50aXRpZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllcygpLmZpbHRlcih0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLl9nZXRFbnRpdHlTdG9yZT1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMsaT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fZW50aXR5Qm91bmRzKHQpfTtyZXR1cm4gdm9pZCAwIT09dD8oKGU9bmV3IG5NdC5FbnRpdHlTdG9yZSkuYWRkQWxsKHRoaXMuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXModCksaSx0aGlzLl9sb2NhbE9yaWdpbkJvdW5kcygpKSxlKToodm9pZCAwPT09dGhpcy5fY2FjaGVkRW50aXR5U3RvcmUmJigoZT1uZXcgbk10LkVudGl0eVN0b3JlKS5hZGRBbGwodGhpcy5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcyh0aGlzLmRhdGFzZXRzKCkpLGksdGhpcy5fbG9jYWxPcmlnaW5Cb3VuZHMoKSksdGhpcy5fY2FjaGVkRW50aXR5U3RvcmU9ZSksdGhpcy5fY2FjaGVkRW50aXR5U3RvcmUpfSxlLnByb3RvdHlwZS5fbG9jYWxPcmlnaW5Cb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6dGhpcy5oZWlnaHQoKX19fSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BpeGVsUG9pbnQodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCk7cmV0dXJue3g6ZS54LHk6ZS55LHdpZHRoOjAsaGVpZ2h0OjB9fSxlLnByb3RvdHlwZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5PWZ1bmN0aW9uKHQpe3JldHVybntib3VuZHM6dGhpcy5fZW50aXR5Qm91bmRzKHQpLGNvbXBvbmVudDp0LmNvbXBvbmVudCxkYXRhc2V0OnQuZGF0YXNldCxkYXRhc2V0SW5kZXg6dC5kYXRhc2V0SW5kZXgsZGF0dW06dC5kYXR1bSxpbmRleDp0LmluZGV4LHBvc2l0aW9uOnQucG9zaXRpb24sc2VsZWN0aW9uOnRNdC5zZWxlY3QodC5kcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleCh0LnZhbGlkRGF0dW1JbmRleCkpfX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoInBsb3RzIG11c3QgaW1wbGVtZW50IGVudGl0aWVzQXQiKX0sZS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3QodCk7cmV0dXJuIHZvaWQgMD09PWU/dm9pZCAwOnRoaXMuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShlKX0sZS5wcm90b3R5cGUuZW50aXRpZXNJbj1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKG51bGw9PWUpe249e3g6dC50b3BMZWZ0LngseTp0LnRvcExlZnQueSx3aWR0aDp0LmJvdHRvbVJpZ2h0LngtdC50b3BMZWZ0LngsaGVpZ2h0OnQuYm90dG9tUmlnaHQueS10LnRvcExlZnQueX19ZWxzZXtuPXt4OnQubWluLHk6ZS5taW4sd2lkdGg6dC5tYXgtdC5taW4saGVpZ2h0OmUubWF4LWUubWlufX1yZXR1cm4gdGhpcy5lbnRpdGllc0luQm91bmRzKG4pfSxlLnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5Cb3VuZHModCk7aWYobilyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5YQm91bmRzKHQpO2lmKG4pcmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KHQpfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luWUJvdW5kcyh0KTtpZihuKXJldHVybiBuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuX3VuaW5zdGFsbFNjYWxlRm9yS2V5PWZ1bmN0aW9uKHQsZSl7dC5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHQub2ZmVXBkYXRlKHRoaXMuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZSksdC5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfSxlLnByb3RvdHlwZS5faW5zdGFsbFNjYWxlRm9yS2V5PWZ1bmN0aW9uKHQsZSl7dC5vblVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayksdC5vblVwZGF0ZSh0aGlzLl9kZWZlcnJlZFJlc2V0RW50aXR5U3RvcmUpLHQuYWRkSW5jbHVkZWRWYWx1ZXNQcm92aWRlcih0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3JldHVybnt9fSxlLl9zY2FsZWRBY2Nlc3Nvcj1mdW5jdGlvbih0KXt2YXIgZT10LnNjYWxlLG49dC5hY2Nlc3NvcixpPXQucG9zdFNjYWxlLHI9bnVsbD09ZT9uOmZ1bmN0aW9uKHQsaSxyKXtyZXR1cm4gZS5zY2FsZShuKHQsaSxyKSl9O3JldHVybiBudWxsPT1pP3I6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpKHIodCxlLG4pLHQsZSxuKX19LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm57eDowLHk6MH19LGUucHJvdG90eXBlLl9hbmltYXRlT25OZXh0UmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGUmJnRoaXMuX2RhdGFDaGFuZ2VkfSxlLk9QVElNSVpFX01FTU9JWkVfUFJPSkVDVE9SUz0hMSxlLl9BTklNQVRJT05fTUFYX0RVUkFUSU9OPTYwMCxlfSkob010LkNvbXBvbmVudCk7ZnVuY3Rpb24gZE10KHQsZSxuKXt2YXIgaT1lLmFjY2Vzc29yLHI9ZS5zY2FsZTtpZihudWxsPT1yKXJldHVybltdO3ZhciBvPXQuZGF0YSgpO251bGwhPW4mJihvPW8uZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiBuKGUsaSx0KX0pKSk7dmFyIGE9by5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGkoZSxuLHQpfSkpO3JldHVybiByLmV4dGVudE9mVmFsdWVzKGEpfQovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL3NTdC5QbG90PWhNdCxPYmplY3QuZGVmaW5lUHJvcGVydHkoYVN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcE10PUJPLGZNdD1zU3QsbU10PURfdCxnTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBwTXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZSxuPTEvMDtyZXR1cm4gdGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dmFyIHI9aS5lbnRpdHlOZWFyZXN0KHQpO2lmKG51bGwhPXIpe3ZhciBvPW1NdC5NYXRoLmRpc3RhbmNlU3F1YXJlZChyLnBvc2l0aW9uLHQpO288PW4mJihuPW8sZT1yKX19KSksZX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUpe2lmKG51bGwhPWUmJiEoZSBpbnN0YW5jZW9mIGZNdC5QbG90KSl0aHJvdyBuZXcgRXJyb3IoIlBsb3QgR3JvdXAgb25seSBhY2NlcHRzIHBsb3RzIik7cmV0dXJuIHQucHJvdG90eXBlLmFwcGVuZC5jYWxsKHRoaXMsZSksdGhpc30sZX0pKF93dC5Hcm91cCk7YVN0LlBsb3RHcm91cD1nTXQ7dmFyIF9NdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoX010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeU10PUJPLHZNdD13cHQsYk10PURfdCx4TXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fcm93UGFkZGluZz0wLG4uX2NvbHVtblBhZGRpbmc9MCxuLl9yb3dzPVtdLG4uX3Jvd1dlaWdodHM9W10sbi5fY29sdW1uV2VpZ2h0cz1bXSxuLl9uUm93cz0wLG4uX25Db2xzPTAsbi5fY2FsY3VsYXRlZExheW91dD1udWxsLG4uYWRkQ2xhc3MoInRhYmxlIiksZS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZuLmFkZCh0LGUsaSl9KSl9KSksbn1yZXR1cm4geU10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5fblJvd3M7ZSsrKWZvcih2YXIgbj0wO248dGhpcy5fbkNvbHM7bisrKW51bGwhPXRoaXMuX3Jvd3NbZV1bbl0mJnQodGhpcy5fcm93c1tlXVtuXSl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4hMDtyZXR1cm4hMX0sZS5wcm90b3R5cGUuY29tcG9uZW50QXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdDwwfHx0Pj10aGlzLl9uUm93c3x8ZTwwfHxlPj10aGlzLl9uQ29scz9udWxsOnRoaXMuX3Jvd3NbdF1bZV19LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09dCl0aHJvdyBFcnJvcigiQ2Fubm90IGFkZCBudWxsIHRvIGEgdGFibGUgY2VsbCIpO2lmKCF0aGlzLmhhcyh0KSl7aWYobnVsbCE9KHRoaXMuX3Jvd3NbZV0mJnRoaXMuX3Jvd3NbZV1bbl0pKXRocm93IG5ldyBFcnJvcigiY2VsbCBpcyBvY2N1cGllZCIpO3QuZGV0YWNoKCksdGhpcy5fblJvd3M9TWF0aC5tYXgoZSsxLHRoaXMuX25Sb3dzKSx0aGlzLl9uQ29scz1NYXRoLm1heChuKzEsdGhpcy5fbkNvbHMpLHRoaXMuX3BhZFRhYmxlVG9TaXplKHRoaXMuX25Sb3dzLHRoaXMuX25Db2xzKSx0aGlzLl9yb3dzW2VdW25dPXQsdGhpcy5fYWRvcHRBbmRBbmNob3IodCksdGhpcy5yZWRyYXcoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4gdGhpcy5fcm93c1tlXVtuXT1udWxsLCEwO3JldHVybiExfSxlLnByb3RvdHlwZS5faXRlcmF0ZUxheW91dD1mdW5jdGlvbih0LG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO2Zvcih2YXIgcixvLGEscyxsLGM9dGhpcy5fcm93cyx1PXZNdC50cmFuc3Bvc2UodGhpcy5fcm93cyksaD10LXRoaXMuX2NvbHVtblBhZGRpbmcqKHRoaXMuX25Db2xzLTEpLGQ9bi10aGlzLl9yb3dQYWRkaW5nKih0aGlzLl9uUm93cy0xKSxwPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX3Jvd1dlaWdodHMsYywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKSxmPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX2NvbHVtbldlaWdodHMsdSwoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRXaWR0aCgpfSkpLG09Zi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLGc9cC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKG0saCkseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoZyxkKSx2PWJNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Db2xzKSxiPWJNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Sb3dzKSx4PTA7Oyl7dmFyIHc9Yk10LkFycmF5LmFkZChiLHkpLFM9Yk10LkFycmF5LmFkZCh2LF8pO3Y9KGE9dGhpcy5fZGV0ZXJtaW5lR3VhcmFudGVlcyhTLHcsaSkpLmd1YXJhbnRlZWRXaWR0aHMsYj1hLmd1YXJhbnRlZWRIZWlnaHRzLHM9YS53YW50c1dpZHRoQXJyLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLGw9YS53YW50c0hlaWdodEFyci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTt2YXIgTT1yLEU9bztyPWgtdk10LnN1bShhLmd1YXJhbnRlZWRXaWR0aHMpLG89ZC12TXQuc3VtKGEuZ3VhcmFudGVlZEhlaWdodHMpO3ZhciBUPXZvaWQgMDtzPyhUPWEud2FudHNXaWR0aEFyci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Py4xOjB9KSksVD1iTXQuQXJyYXkuYWRkKFQsZikpOlQ9Zjt2YXIgQz12b2lkIDA7aWYobD8oQz1hLndhbnRzSGVpZ2h0QXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ/LjE6MH0pKSxDPWJNdC5BcnJheS5hZGQoQyxwKSk6Qz1wLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKFQscikseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoQyxvKSx4KyssIShyPjAmJnIhPT1NKSYmIShvPjAmJm8hPT1FKSlicmVhaztpZih4PjUpYnJlYWt9cmV0dXJuIHI9aC12TXQuc3VtKGEuZ3VhcmFudGVlZFdpZHRocyksbz1kLXZNdC5zdW0oYS5ndWFyYW50ZWVkSGVpZ2h0cykse2NvbFByb3BvcnRpb25hbFNwYWNlOl89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKGYscikscm93UHJvcG9ydGlvbmFsU3BhY2U6eT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UocCxvKSxndWFyYW50ZWVkV2lkdGhzOmEuZ3VhcmFudGVlZFdpZHRocyxndWFyYW50ZWVkSGVpZ2h0czphLmd1YXJhbnRlZWRIZWlnaHRzLHdhbnRzV2lkdGg6cyx3YW50c0hlaWdodDpsfX0sZS5wcm90b3R5cGUuX2RldGVybWluZUd1YXJhbnRlZXM9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uQ29scykscj1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uUm93cyksbz1iTXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoITEsdGhpcy5fbkNvbHMpLGE9Yk10LkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KCExLHRoaXMuX25Sb3dzKTtyZXR1cm4gdGhpcy5fcm93cy5mb3JFYWNoKChmdW5jdGlvbihzLGwpe3MuZm9yRWFjaCgoZnVuY3Rpb24ocyxjKXt2YXIgdTt1PW51bGwhPXM/cy5yZXF1ZXN0ZWRTcGFjZSh0W2NdLGVbbF0pOnttaW5XaWR0aDowLG1pbkhlaWdodDowfTt2YXIgaD1uP01hdGgubWluKHUubWluV2lkdGgsdFtjXSk6dS5taW5XaWR0aDtpW2NdPU1hdGgubWF4KGlbY10saCk7dmFyIGQ9bj9NYXRoLm1pbih1Lm1pbkhlaWdodCxlW2xdKTp1Lm1pbkhlaWdodDtyW2xdPU1hdGgubWF4KHJbbF0sZCksb1tjXT1vW2NdfHx1Lm1pbldpZHRoPnRbY10sYVtsXT1hW2xdfHx1Lm1pbkhlaWdodD5lW2xdfSkpfSkpLHtndWFyYW50ZWVkV2lkdGhzOmksZ3VhcmFudGVlZEhlaWdodHM6cix3YW50c1dpZHRoQXJyOm8sd2FudHNIZWlnaHRBcnI6YX19LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQ9dGhpcy5faXRlcmF0ZUxheW91dCh0LGUpLHttaW5XaWR0aDp2TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksbWluSGVpZ2h0OnZNdC5zdW0odGhpcy5fY2FsY3VsYXRlZExheW91dC5ndWFyYW50ZWVkSGVpZ2h0cyl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3QucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKTt2YXIgbz12TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksYT12TXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZEhlaWdodHMpLHM9dGhpcy5fY2FsY3VsYXRlZExheW91dDsobz50aGlzLndpZHRoKCl8fGE+dGhpcy5oZWlnaHQoKSkmJihzPXRoaXMuX2l0ZXJhdGVMYXlvdXQodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCksITApKTt2YXIgbD0wLGM9Yk10LkFycmF5LmFkZChzLnJvd1Byb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZEhlaWdodHMpLHU9Yk10LkFycmF5LmFkZChzLmNvbFByb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZFdpZHRocyk7cmV0dXJuIHRoaXMuX3Jvd3MuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgbj0wO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZ0LmNvbXB1dGVMYXlvdXQoe3g6bix5Omx9LHVbaV0sY1tlXSksbis9dVtpXStyLl9jb2x1bW5QYWRkaW5nfSkpLGwrPWNbZV0rci5fcm93UGFkZGluZ30pKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dQYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Jvd1BhZGRpbmc7aWYoIWJNdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigicm93UGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dQYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5QYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2NvbHVtblBhZGRpbmc7aWYoIWJNdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigiY29sdW1uUGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5QYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dXZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdO2lmKCFiTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoInJvd1dlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5XZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdO2lmKCFiTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoImNvbHVtbldlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9dk10LnRyYW5zcG9zZSh0aGlzLl9yb3dzKTtyZXR1cm4gZS5fZml4ZWRTcGFjZSh0LChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8dC5maXhlZFdpZHRoKCl9KSl9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZpeGVkU3BhY2UodGhpcy5fcm93cywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKX0sZS5wcm90b3R5cGUuX3BhZFRhYmxlVG9TaXplPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjx0O24rKyl7dm9pZCAwPT09dGhpcy5fcm93c1tuXSYmKHRoaXMuX3Jvd3Nbbl09W10sdGhpcy5fcm93V2VpZ2h0c1tuXT1udWxsKTtmb3IodmFyIGk9MDtpPGU7aSsrKXZvaWQgMD09PXRoaXMuX3Jvd3Nbbl1baV0mJih0aGlzLl9yb3dzW25dW2ldPW51bGwpfWZvcihpPTA7aTxlO2krKyl2b2lkIDA9PT10aGlzLl9jb2x1bW5XZWlnaHRzW2ldJiYodGhpcy5fY29sdW1uV2VpZ2h0c1tpXT1udWxsKX0sZS5fY2FsY0NvbXBvbmVudFdlaWdodHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbnVsbCE9dD90OmVbaV0ubWFwKG4pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmZX0pLCEwKT8wOjF9KSl9LGUuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXZNdC5zdW0odCk7cmV0dXJuIDA9PT1uP2JNdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHQubGVuZ3RoKTp0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUqdC9ufSkpfSxlLl9maXhlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZlfSksITApfTtyZXR1cm4gbih0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4odC5tYXAoZSkpfSkpKX0sZX0pKHl3dC5Db21wb25lbnRDb250YWluZXIpO19NdC5UYWJsZT14TXQ7dmFyIHdNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkod010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgU010PUJPLE1NdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fbWF4TGluZXM9MixlfXJldHVybiBTTXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt0aGlzLl93cmFwcGVyLm1heExpbmVzKHRoaXMuX21heExpbmVzKTt2YXIgbj0wPT09dGhpcy5hbmdsZSgpP3Q6ZTswPT09biYmKG49MS8wKTt2YXIgaT10aGlzLl93cmFwcGVyLndyYXAodGhpcy5fdGV4dCx0aGlzLl9tZWFzdXJlcixuKSxyPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoaS53cmFwcGVkVGV4dCk7cmV0dXJue21pbldpZHRoOigwPT09dGhpcy5hbmdsZSgpP3Iud2lkdGg6ci5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbWluSGVpZ2h0OigwPT09dGhpcy5hbmdsZSgpP3IuaGVpZ2h0OnIud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCl9fSxlLnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbWF4TGluZXM6KHRoaXMuX21heExpbmVzPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZX0pKEl3dC5MYWJlbCk7d010LldyYXBwZWRMYWJlbD1NTXQ7dmFyIEVNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoRU10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVE10PUJPLENNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygieC1kcmFnLWJveC1sYXllciIpLGUuX2hhc0Nvcm5lcnM9ITEsZX1yZXR1cm4gVE10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0Qm91bmRzKHRoaXMuYm91bmRzKCkpLHRoaXN9LGUucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3NldEJvdW5kcy5jYWxsKHRoaXMse3RvcExlZnQ6e3g6ZS50b3BMZWZ0LngseTowfSxib3R0b21SaWdodDp7eDplLmJvdHRvbVJpZ2h0LngseTp0aGlzLmhlaWdodCgpfX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ4LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnlTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS55U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInlTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBYRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnlFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueUV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWERyYWdCb3hMYXllciBoYXMgbm8geUV4dGVudCIpfSxlfSkoZXh0LkRyYWdCb3hMYXllcik7RU10LlhEcmFnQm94TGF5ZXI9Q010O3ZhciBBTXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEFNdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGtNdD1CTyxQTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuYWRkQ2xhc3MoInktZHJhZy1ib3gtbGF5ZXIiKSxlLl9oYXNDb3JuZXJzPSExLGV9cmV0dXJuIGtNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3NldEJvdW5kcyh0aGlzLmJvdW5kcygpKSx0aGlzfSxlLnByb3RvdHlwZS5fc2V0Qm91bmRzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9zZXRCb3VuZHMuY2FsbCh0aGlzLHt0b3BMZWZ0Ont4OjAseTplLnRvcExlZnQueX0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6ZS5ib3R0b21SaWdodC55fX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ5LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoInktcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnhTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS54U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInhTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBZRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnhFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueEV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWURyYWdCb3hMYXllciBoYXMgbm8geEV4dGVudCIpfSxlfSkoZXh0LkRyYWdCb3hMYXllcik7QU10LllEcmFnQm94TGF5ZXI9UE10LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKGV4dCx0KSxlLl9fZXhwb3J0U3Rhcihud3QsdCksZS5fX2V4cG9ydFN0YXIocHd0LHQpLGUuX19leHBvcnRTdGFyKF93dCx0KSxlLl9fZXhwb3J0U3Rhcihpd3QsdCksZS5fX2V4cG9ydFN0YXIoRXd0LHQpLGUuX19leHBvcnRTdGFyKEl3dCx0KSxlLl9fZXhwb3J0U3RhcihCd3QsdCksZS5fX2V4cG9ydFN0YXIoYVN0LHQpLGUuX19leHBvcnRTdGFyKCR4dCx0KSxlLl9fZXhwb3J0U3RhcihfTXQsdCksZS5fX2V4cG9ydFN0YXIod010LHQpLGUuX19leHBvcnRTdGFyKEVNdCx0KSxlLl9fZXhwb3J0U3RhcihBTXQsdCl9KSh0eHQpO3ZhciBMTXQ9e30sSU10PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoSU10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTk10PUJPLFJNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcywicGF0aCIsImFyYyBmaWxsIil8fHRoaXN9cmV0dXJuIE5NdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJzdHJva2UiLCJub25lIil9LGV9KShxU3QuU1ZHRHJhd2VyKTtJTXQuQXJjU1ZHRHJhd2VyPVJNdDt2YXIgT010PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShPTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6TXQ9Qk8sRE10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwiYXJjIG91dGxpbmUiKXx8dGhpc31yZXR1cm4gek10Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe3Quc3R5bGUoImZpbGwiLCJub25lIil9LGV9KShxU3QuU1ZHRHJhd2VyKTtPTXQuQXJjT3V0bGluZVNWR0RyYXdlcj1ETXQ7dmFyIEJNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoQk10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSE10PUJPLEZNdD1qU3QsVk10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwiYXJlYSIpfHx0aGlzfXJldHVybiBITXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7dC5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sZX0pKHFTdC5TVkdEcmF3ZXIpO0JNdC5BcmVhU1ZHRHJhd2VyPVZNdDt2YXIgVU10PVsib3BhY2l0eSIsImZpbGwiLCJmaWxsLW9wYWNpdHkiXSxqTXQ9WyJvcGFjaXR5Iiwic3Ryb2tlIiwic3Ryb2tlLXdpZHRoIl07Qk10Lm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24gR010KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz1GTXQucmVzb2x2ZUF0dHJpYnV0ZXMocixVTXQsaVswXSwwKTtGTXQucmVuZGVyQXJlYShuLHQoKSxpWzBdLG8pO3ZhciBhPUZNdC5yZXNvbHZlQXR0cmlidXRlcyhyLGpNdCxpWzBdLDApO0ZNdC5yZW5kZXJMaW5lKG4sZSgpLGlbMF0sYSl9fTt2YXIgV010PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShXTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBxTXQ9Qk8sWU10PWpTdCxYTXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJsaW5lIil8fHRoaXN9cmV0dXJuIHFNdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJmaWxsIiwibm9uZSIpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sZX0pKHFTdC5TVkdEcmF3ZXIpO1dNdC5MaW5lU1ZHRHJhd2VyPVhNdDt2YXIgJE10PVsib3BhY2l0eSIsInN0cm9rZS1vcGFjaXR5Iiwic3Ryb2tlLXdpZHRoIiwic3Ryb2tlIiwic3Ryb2tlLWRhc2hhcnJheSJdO1dNdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uIEtNdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3ZhciByPVlNdC5yZXNvbHZlQXR0cmlidXRlcyhpLCRNdCxuWzBdLDApO1lNdC5yZW5kZXJMaW5lKGUsdCgpLG5bMF0scil9fTt2YXIgWk10PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1CTyxuPWpTdCxpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgbj10LmNhbGwodGhpcywicmVjdCIsIiIpfHx0aGlzO3JldHVybiBuLl9yb290Q2xhc3NOYW1lPWUsbi5fcm9vdC5jbGFzc2VkKG4uX3Jvb3RDbGFzc05hbWUsITApLG59cmV0dXJuIGUuX19leHRlbmRzKG4sdCksbn0pKHFTdC5TVkdEcmF3ZXIpO3QuUmVjdGFuZ2xlU1ZHRHJhd2VyPWk7dmFyIHI9bi5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0Il0pO3QuUmVjdGFuZ2xlQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24odCxlLGkpe3Quc2F2ZSgpO2Zvcih2YXIgbz1lLmxlbmd0aCxhPTA7YTxvO2ErKyl7dmFyIHM9ZVthXTtpZihudWxsIT1zKXt2YXIgbD1uLnJlc29sdmVBdHRyaWJ1dGVzKGkscixzLGEpO3QuYmVnaW5QYXRoKCksdC5yZWN0KGwueCxsLnksbC53aWR0aCxsLmhlaWdodCksbi5yZW5kZXJQYXRoV2l0aFN0eWxlKHQsbCl9fXQucmVzdG9yZSgpfTt2YXIgbz0oZnVuY3Rpb24obil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gbi5jYWxsKHRoaXMsZSx0LlJlY3RhbmdsZUNhbnZhc0RyYXdTdGVwKXx8dGhpc31yZXR1cm4gZS5fX2V4dGVuZHMoaSxuKSxpfSkobi5DYW52YXNEcmF3ZXIpO3QuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyPW99KShaTXQpO3ZhciBKTXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEpNdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFFNdD1CTyx0RXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsImxpbmUiLCIiKXx8dGhpc31yZXR1cm4gUU10Ll9fZXh0ZW5kcyhlLHQpLGV9KShxU3QuU1ZHRHJhd2VyKTtKTXQuU2VnbWVudFNWR0RyYXdlcj10RXQ7dmFyIGVFdD17fSxuRXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpRXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4saSl7dm9pZCAwPT09aSYmKGk9d2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuc2NyZWVuV2lkdGg9ZSx0aGlzLnNjcmVlbkhlaWdodD1uLHRoaXMuZGV2aWNlUGl4ZWxSYXRpbz1pLHRoaXMucGl4ZWxXaWR0aD1lKmksdGhpcy5waXhlbEhlaWdodD1uKmksdGhpcy5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSx0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLGkpfXJldHVybiB0LnNpemVQaXhlbHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC5jYW52YXM7ci53aWR0aD1lKmksci5oZWlnaHQ9bippLHIuc3R5bGUud2lkdGg9ZSsicHgiLHIuc3R5bGUuaGVpZ2h0PW4rInB4Iix0LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdC5zY2FsZShpLGkpfSx0LnByb3RvdHlwZS5ibGl0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj0wKSx0LmRyYXdJbWFnZSh0aGlzLmNhbnZhcyxlLG4sdGhpcy5zY3JlZW5XaWR0aCx0aGlzLnNjcmVlbkhlaWdodCl9LHQucHJvdG90eXBlLmJsaXRDZW50ZXI9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTApLHRoaXMuYmxpdCh0LE1hdGguZmxvb3IoZS10aGlzLnNjcmVlbldpZHRoLzIpLE1hdGguZmxvb3Iobi10aGlzLnNjcmVlbkhlaWdodC8yKSl9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO3ZhciByPXRoaXMuZGV2aWNlUGl4ZWxSYXRpbztyZXR1cm4gdGhpcy5zY3JlZW5XaWR0aD1lLHRoaXMuc2NyZWVuSGVpZ2h0PW4sdGhpcy5waXhlbFdpZHRoPWUqcix0aGlzLnBpeGVsSGVpZ2h0PW4qcix0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLHIpLGkmJnRoaXMuY3R4LnRyYW5zbGF0ZShlLzIsZS8yKSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5waXhlbFdpZHRoLGk9ZS5waXhlbEhlaWdodCxyPWUuY3R4O3JldHVybiByLnNhdmUoKSxyLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksbnVsbD09dD9yLmNsZWFyUmVjdCgwLDAsbixpKTooci5maWxsU3R5bGU9dCxyLmZpbGxSZWN0KDAsMCxuLGkpKSxyLnJlc3RvcmUoKSx0aGlzfSx0LnByb3RvdHlwZS5nZXRJbWFnZURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguZ2V0SW1hZ2VEYXRhKDAsMCx0aGlzLnBpeGVsV2lkdGgsdGhpcy5waXhlbEhlaWdodCl9LHR9KSgpO25FdC5DYW52YXNCdWZmZXI9aUV0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZUV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgckV0PUJPLG9FdD1qU3QsYUV0PW5FdCxzRXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJzeW1ib2wiKXx8dGhpc31yZXR1cm4gckV0Ll9fZXh0ZW5kcyhlLHQpLGV9KShxU3QuU1ZHRHJhd2VyKTtlRXQuU3ltYm9sU1ZHRHJhd2VyPXNFdDt2YXIgbEV0PW9FdC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSJdKTtmdW5jdGlvbiBjRXQodCxlLG4saSxyKXtyZXR1cm4gbityPj0wJiZuLXI8PXQmJmkrcj49MCYmaS1yPD1lfWZ1bmN0aW9uIHVFdCh0LGUsbil7aWYobnVsbD09dClyZXR1cm4hMTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIHI9bltpXTtpZih0W3JdIT1lW3JdKXJldHVybiExfXJldHVybiEwfWVFdC5tYWtlU3ltYm9sQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24gaEV0KHQsZSxuLGkpe3ZhciByPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKG8sYSxzKXtmb3IodmFyIGw9by5jYW52YXMsYz1sLmNsaWVudFdpZHRoLHU9bC5jbGllbnRIZWlnaHQsaD12b2lkIDA9PT1pP25ldyBhRXQuQ2FudmFzQnVmZmVyKDAsMCk6aSxkPWUoKSxwPW4oKSxmPW51bGwsbT1udWxsLGc9bnVsbCxfPTA7XzxhLmxlbmd0aDtfKyspe3ZhciB5PWFbX107aWYobnVsbCE9eSl7dmFyIHY9b0V0LnJlc29sdmVBdHRyaWJ1dGVzKHMsbEV0LHksXyksYj1wKHksXyx0KTtpZihjRXQoYyx1LHYueCx2LnksYikpe3ZhciB4PXVFdChmLHYsb0V0LkNvbnRleHRTdHlsZUF0dHJzKSx3PWQoeSxfLHIuX2RhdGFzZXQpO2lmKHgmJmc9PWImJm09PXcpO2Vsc2V7dmFyIFM9YitvRXQuZ2V0U3Ryb2tlV2lkdGgodikrMTsoUz5oLnNjcmVlbldpZHRofHxTPmguc2NyZWVuSGVpZ2h0KSYmaC5yZXNpemUoUyxTLCEwKSxoLmNsZWFyKCk7dmFyIE09aC5jdHg7TS5iZWdpblBhdGgoKSx3KGIpLmNvbnRleHQoTSkobnVsbCksTS5jbG9zZVBhdGgoKSxvRXQucmVuZGVyUGF0aFdpdGhTdHlsZShNLHYpLG09dyxnPWIsZj12fWguYmxpdENlbnRlcihvLHYueCx2LnkpfX19fX0sKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87ZS5fX2V4cG9ydFN0YXIoSU10LHQpLGUuX19leHBvcnRTdGFyKE9NdCx0KSxlLl9fZXhwb3J0U3RhcihCTXQsdCksZS5fX2V4cG9ydFN0YXIoalN0LHQpLGUuX19leHBvcnRTdGFyKEdTdCx0KSxlLl9fZXhwb3J0U3RhcihXTXQsdCksZS5fX2V4cG9ydFN0YXIoWk10LHQpLGUuX19leHBvcnRTdGFyKEpNdCx0KSxlLl9fZXhwb3J0U3RhcihxU3QsdCksZS5fX2V4cG9ydFN0YXIoZUV0LHQpfSkoTE10KTt2YXIgZEV0PXt9LHBFdD17fSxmRXQ9e30sbUV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobUV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZ0V0PUJPLF9FdD1YdnQseUV0PURfdCx2RXQ9S1N0LGJFdD1zU3QseEV0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLGUuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITEsZS5fZGVmZXJyZWRSZW5kZXJpbmc9ITEsZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybT1mdW5jdGlvbih0LG4saSxyKXtlLl9pc0FuY2hvcmVkJiYobnVsbCE9ZS5fcmVuZGVyQXJlYSYmZS5fcmVuZGVyQXJlYS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyIsICIrbisiKSBzY2FsZSgiK2krIiwgIityKyIpIiksbnVsbCE9ZS5fY2FudmFzJiZlLl9jYW52YXMuc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QrInB4LCAiK24rInB4KSBzY2FsZSgiK2krIiwgIityKyIpIikpfSxlLmFkZENsYXNzKCJ4eS1wbG90IiksZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVgoKX0sZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKX0sZS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtpZihlLmRlZmVycmVkUmVuZGVyaW5nKCkpe3ZhciB0PWUueCgpJiZlLngoKS5zY2FsZSxuPWUueSgpJiZlLnkoKS5zY2FsZTtlLl9kZWZlcnJlZFJlbmRlcmVyLnVwZGF0ZURvbWFpbnModCxuKX1lbHNlIGUucmVuZGVyKCl9LGUuX2RlZmVycmVkUmVuZGVyZXI9bmV3IHZFdC5EZWZlcnJlZFJlbmRlcmVyKChmdW5jdGlvbigpe3JldHVybiBlLnJlbmRlcigpfSksZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybSksZX1yZXR1cm4gZ0V0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmVycmVkUmVuZGVyaW5nKCkmJnRoaXMuX2RlZmVycmVkUmVuZGVyZXIucmVzZXRUcmFuc2Zvcm1zKCksdC5wcm90b3R5cGUucmVuZGVyLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLmRlZmVycmVkUmVuZGVyaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2RlZmVycmVkUmVuZGVyaW5nO2lmKHQpe3ZhciBlPXRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSxuPXRoaXMueSgpJiZ0aGlzLnkoKS5zY2FsZTt0aGlzLl9kZWZlcnJlZFJlbmRlcmVyLnNldERvbWFpbnMoZSxuKX1yZXR1cm4gdGhpcy5fZGVmZXJyZWRSZW5kZXJpbmc9dCx0aGlzfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsbixpKXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9YX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KGUuX1hfS0VZLHQsbixpKTt2YXIgcj10aGlzLndpZHRoKCk7cmV0dXJuIG51bGwhPW4mJm51bGwhPXImJm4ucmFuZ2UoWzAscl0pLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW4mJnRoaXMuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbigpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUueT1mdW5jdGlvbih0LG4saSl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWV9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZX0tFWSx0LG4saSk7dmFyIHI9dGhpcy5oZWlnaHQoKTtyZXR1cm4gbnVsbCE9biYmbnVsbCE9ciYmbi5yYW5nZShuIGluc3RhbmNlb2YgX0V0LkNhdGVnb3J5P1swLHJdOltyLDBdKSx0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4ieCI9PT10JiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluP3RoaXMuX21ha2VGaWx0ZXJCeVByb3BlcnR5KCJ5Iik6InkiIT09dCYmInkwIiE9PXR8fCF0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluP251bGw6dGhpcy5fbWFrZUZpbHRlckJ5UHJvcGVydHkoIngiKX0sZS5wcm90b3R5cGUuX21ha2VGaWx0ZXJCeVByb3BlcnR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQpO2lmKG51bGwhPWUpe3ZhciBuPWUuYWNjZXNzb3IsaT1lLnNjYWxlO2lmKG51bGwhPWkpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1pLnJhbmdlKCk7cmV0dXJuIHlFdC5NYXRoLmluUmFuZ2UoaS5zY2FsZShuKHQsZSxyKSksb1swXSxvWzFdKX19cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsbixpKSxuLm9mZlVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLG4saSksbi5vblVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy54KCkuc2NhbGUmJnRoaXMueCgpLnNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RZRG9tYWluT25DaGFuZ2VGcm9tWENhbGxiYWNrKSx0aGlzLnkoKS5zY2FsZSYmdGhpcy55KCkuc2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLmF1dG9yYW5nZU1vZGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj8ieCI6dGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj8ieSI6Im5vbmUiO3N3aXRjaCh0KXtjYXNlIngiOnRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITAsdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj0hMSx0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWSgpO2JyZWFrO2Nhc2UieSI6dGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMSx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSEwLHRoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YKCk7YnJlYWs7Y2FzZSJub25lIjp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NhbGUgbmFtZSAnIit0KyInLCBtdXN0IGJlICd4JywgJ3knIG9yICdub25lJyIpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSk7dmFyIHI9dGhpcy54KCksbz1yJiZyLnNjYWxlO251bGwhPW8mJm8ucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk7dmFyIGE9dGhpcy55KCkscz1hJiZhLnNjYWxlO3JldHVybiBudWxsIT1zJiZzLnJhbmdlKHMgaW5zdGFuY2VvZiBfRXQuQ2F0ZWdvcnk/WzAsdGhpcy5oZWlnaHQoKV06W3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LGUucHJvdG90eXBlLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLngoKS5zY2FsZTtudWxsIT10JiZ0LmF1dG9Eb21haW4oKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMueSgpLnNjYWxlO251bGwhPXQmJnQuYXV0b0RvbWFpbigpfSxlLnByb3RvdHlwZS5zaG93QWxsRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzfSxlLnByb3RvdHlwZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVg9ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSYmdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCl9LGUucHJvdG90eXBlLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWT1mdW5jdGlvbigpe3RoaXMuX3Byb2plY3RvcnNSZWFkeSgpJiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKX0sZS5wcm90b3R5cGUuX3Byb2plY3RvcnNSZWFkeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMueCgpLGU9dGhpcy55KCk7cmV0dXJuIG51bGwhPXQmJm51bGwhPXQuYWNjZXNzb3ImJm51bGwhPWUmJm51bGwhPWUuYWNjZXNzb3J9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1iRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHI9YkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTtyZXR1cm57eDppKHQsZSxuKSx5OnIodCxlLG4pfX0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKSxpPXRoaXMuYXR0cigiZGVmaW5lZCIpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5zZXQodCxuLmdldCh0KS5maWx0ZXIoKGZ1bmN0aW9uKG4scil7cmV0dXJuKGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1iRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS54KCkpKHQsbixyKSxhPWJFdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnkoKSkodCxuLHIpO3JldHVybighaXx8ITEhPT1pLmFjY2Vzc29yKHQsbixyKSkmJnlFdC5NYXRoLmlzVmFsaWROdW1iZXIobykmJnlFdC5NYXRoLmlzVmFsaWROdW1iZXIoYSl9KShuLHIsdCl9KSkpfSkpLG59LGUuX1hfS0VZPSJ4IixlLl9ZX0tFWT0ieSIsZX0pKGJFdC5QbG90KTttRXQuWFlQbG90PXhFdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGZFdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHdFdD1CTyxTRXQ9d3B0LE1FdD1mZ3QsRUV0PUxNdCxURXQ9R1N0LENFdD1XTXQsQUV0PVh2dCxrRXQ9UGJ0LFBFdD1EX3QsTEV0PWRFdCxJRXQ9c1N0LE5FdD1tRXQsUkV0PXtsaW5lYXI6U0V0LmN1cnZlTGluZWFyLGxpbmVhckNsb3NlZDpTRXQuY3VydmVMaW5lYXJDbG9zZWQsc3RlcDpTRXQuY3VydmVTdGVwLHN0ZXBCZWZvcmU6U0V0LmN1cnZlU3RlcEJlZm9yZSxzdGVwQWZ0ZXI6U0V0LmN1cnZlU3RlcEFmdGVyLGJhc2lzOlNFdC5jdXJ2ZUJhc2lzLGJhc2lzT3BlbjpTRXQuY3VydmVCYXNpc09wZW4sYmFzaXNDbG9zZWQ6U0V0LmN1cnZlQmFzaXNDbG9zZWQsYnVuZGxlOlNFdC5jdXJ2ZUJ1bmRsZSxjYXJkaW5hbDpTRXQuY3VydmVDYXJkaW5hbCxjYXJkaW5hbE9wZW46U0V0LmN1cnZlQ2FyZGluYWxPcGVuLGNhcmRpbmFsQ2xvc2VkOlNFdC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkLG1vbm90b25lOlNFdC5jdXJ2ZU1vbm90b25lWH07ZkV0LkN1cnZlTmFtZT1iZ3QubWFrZUVudW0oWyJsaW5lYXIiLCJsaW5lYXJDbG9zZWQiLCJzdGVwIiwic3RlcEJlZm9yZSIsInN0ZXBBZnRlciIsImJhc2lzIiwiYmFzaXNPcGVuIiwiYmFzaXNDbG9zZWQiLCJidW5kbGUiLCJjYXJkaW5hbCIsImNhcmRpbmFsT3BlbiIsImNhcmRpbmFsQ2xvc2VkIiwibW9ub3RvbmUiXSk7dmFyIE9FdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztlLl9jdXJ2ZT0ibGluZWFyIixlLl9hdXRvcmFuZ2VTbW9vdGg9ITEsZS5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ9ITAsZS5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkPSExLGUuX2Rvd25zYW1wbGluZ0VuYWJsZWQ9ITEsZS5hZGRDbGFzcygibGluZS1wbG90Iik7dmFyIG49bmV3IE1FdC5FYXNpbmc7cmV0dXJuIG4uc3RlcER1cmF0aW9uKElFdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxuLmVhc2luZ01vZGUoImV4cEluT3V0Iiksbi5tYXhUb3RhbER1cmF0aW9uKElFdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxlLmFuaW1hdG9yKExFdC5BbmltYXRvci5NQUlOLG4pLGUuYXR0cigic3Ryb2tlIiwobmV3IEFFdC5Db2xvcikucmFuZ2UoKVswXSksZS5hdHRyKCJzdHJva2Utd2lkdGgiLCIycHgiKSxlfXJldHVybiB3RXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUueD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOih0LnByb3RvdHlwZS54LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS55LmNhbGwodGhpcyk6KHQucHJvdG90eXBlLnkuY2FsbCh0aGlzLGUsbixpKSx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLmF1dG9yYW5nZU1vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZS5jYWxsKHRoaXMpOih0LnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlLmNhbGwodGhpcyxlKSx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLmF1dG9yYW5nZVNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hdXRvcmFuZ2VTbW9vdGg6KHRoaXMuX2F1dG9yYW5nZVNtb290aD10LHRoaXMuX3NldFNjYWxlU25hcHBpbmcoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldFNjYWxlU25hcHBpbmc9ZnVuY3Rpb24oKXsieCI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmdGhpcy54KCkmJnRoaXMueCgpLnNjYWxlJiZ0aGlzLngoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy54KCkuc2NhbGUuc25hcHBpbmdEb21haW5FbmFibGVkKCF0aGlzLmF1dG9yYW5nZVNtb290aCgpKSwieSI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmdGhpcy55KCkmJnRoaXMueSgpLnNjYWxlJiZ0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy55KCkuc2NhbGUuc25hcHBpbmdEb21haW5FbmFibGVkKCF0aGlzLmF1dG9yYW5nZVNtb290aCgpKX0sZS5wcm90b3R5cGUuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY3VydmU6KHRoaXMuX2N1cnZlPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuZG93bnNhbXBsaW5nRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kb3duc2FtcGxpbmdFbmFibGVkOih0aGlzLl9kb3duc2FtcGxpbmdFbmFibGVkPXQsdGhpcyl9LGUucHJvdG90eXBlLmNyb3BwZWRSZW5kZXJpbmdFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkOih0aGlzLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmNvbGxhcHNlRGVuc2VMaW5lc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkOih0aGlzLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBURXQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDRXQuTGluZVNWR0RyYXdlcn0pLChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IEVFdC5DYW52YXNEcmF3ZXIobixDRXQubWFrZUxpbmVDYW52YXNEcmF3U3RlcCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZDNMaW5lRmFjdG9yeSh0KX0pKSl9KSl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXt2YXIgbj10LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLGUpO2lmKCF0aGlzLl9hdXRvcmFuZ2VTbW9vdGgpcmV0dXJuIG47aWYodGhpcy5hdXRvcmFuZ2VNb2RlKCkhPT1lKXJldHVybiBuO2lmKCJ4IiE9PXRoaXMuYXV0b3JhbmdlTW9kZSgpJiYieSIhPT10aGlzLmF1dG9yYW5nZU1vZGUoKSlyZXR1cm4gbjt2YXIgaSxyPXRoaXMuX2dldEVkZ2VJbnRlcnNlY3Rpb25Qb2ludHMoKTtyZXR1cm4gaT0ieSI9PT10aGlzLmF1dG9yYW5nZU1vZGUoKT9yLmxlZnQuY29uY2F0KHIucmlnaHQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pKTpyLnRvcC5jb25jYXQoci5ib3R0b20pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueH0pKSxuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFNFdC5leHRlbnQoU0V0Lm1lcmdlKFt0LGldKSl9KSl9LGUucHJvdG90eXBlLl9nZXRFZGdlSW50ZXJzZWN0aW9uUG9pbnRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighKHRoaXMueSgpLnNjYWxlIGluc3RhbmNlb2Yga0V0LlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLngoKS5zY2FsZSBpbnN0YW5jZW9mIGtFdC5RdWFudGl0YXRpdmVTY2FsZSkpcmV0dXJue2xlZnQ6W10scmlnaHQ6W10sdG9wOltdLGJvdHRvbTpbXX07dmFyIGU9dGhpcy55KCkuc2NhbGUsbj10aGlzLngoKS5zY2FsZSxpPXtsZWZ0OltdLHJpZ2h0OltdLHRvcDpbXSxib3R0b206W119LHI9bi5zY2FsZShuLmRvbWFpbigpWzBdKSxvPW4uc2NhbGUobi5kb21haW4oKVsxXSksYT1lLnNjYWxlKGUuZG9tYWluKClbMF0pLHM9ZS5zY2FsZShlLmRvbWFpbigpWzFdKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGwpe2Zvcih2YXIgYyx1LGgsZCxwPWwuZGF0YSgpLGY9MTtmPHAubGVuZ3RoO2YrKyljPWh8fG4uc2NhbGUodC54KCkuYWNjZXNzb3IocFtmLTFdLGYtMSxsKSksdT1kfHxlLnNjYWxlKHQueSgpLmFjY2Vzc29yKHBbZi0xXSxmLTEsbCkpLGg9bi5zY2FsZSh0LngoKS5hY2Nlc3NvcihwW2ZdLGYsbCkpLGQ9ZS5zY2FsZSh0LnkoKS5hY2Nlc3NvcihwW2ZdLGYsbCkpLGM8cj09cjw9aCYmaS5sZWZ0LnB1c2goe3g6cix5OmUuaW52ZXJ0KHUrKHItYykqKGQtdSkvKGgtYykpfSksYzxvPT1vPD1oJiZpLnJpZ2h0LnB1c2goe3g6byx5OmUuaW52ZXJ0KHUrKG8tYykqKGQtdSkvKGgtYykpfSksdTxzPT1zPD1kJiZpLnRvcC5wdXNoKHt4Om4uaW52ZXJ0KGMrKHMtdSkqKGgtYykvKGQtdSkpLHk6c30pLHU8YT09YTw9ZCYmaS5ib3R0b20ucHVzaCh7eDpuLmludmVydChjKyhhLXUpKihoLWMpLyhkLXUpKSx5OmF9KX0pKSxpfSxlLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnkoKS5zY2FsZS5kb21haW4oKSxlPU1hdGgubWF4KHRbMF0sdFsxXSksbj1NYXRoLm1pbih0WzBdLHRbMV0pLGk9ZTwwJiZlfHxuPjAmJm58fDAscj10aGlzLnkoKS5zY2FsZS5zY2FsZShpKTtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe3JldHVybiByfX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihJRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoTEV0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihMRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYoImQiIT09dCl7dmFyIG49ZVt0XTtlW3RdPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5sZW5ndGg+MD9uKHRbMF0sZSxpKTpudWxsfX19KSksZX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmVudGl0eU5lYXJlc3RCeVhUaGVuWSh0KTtyZXR1cm4gbnVsbCE9ZT9bZV06W119LGUucHJvdG90eXBlLmVudGl0eU5lYXJlc3RCeVhUaGVuWT1mdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLzAsaT0xLzAscj10aGlzLmJvdW5kcygpLG89dGhpcy5lbnRpdGllcygpLGE9by5sZW5ndGgscz0wO3M8YTtzKyspe3ZhciBsPW9bc107aWYoUEV0Lk1hdGgud2l0aGluKGwucG9zaXRpb24scikpe3ZhciBjPU1hdGguYWJzKHQueC1sLnBvc2l0aW9uLngpLHU9TWF0aC5hYnModC55LWwucG9zaXRpb24ueSk7KGM8bnx8Yz09PW4mJnU8aSkmJihlPWwsbj1jLGk9dSl9fXJldHVybiBlfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiBlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihJRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLElFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpLGV9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gZnVuY3Rpb24oaSxyLG8pe3JldHVybiBuLl9kM0xpbmVGYWN0b3J5KG8sdCxlKShpKX19LGUucHJvdG90eXBlLl9kM0xpbmVGYWN0b3J5PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT1JRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpKSx2b2lkIDA9PT1uJiYobj1JRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKTtyZXR1cm4gU0V0LmxpbmUoKS54KChmdW5jdGlvbihuLGkpe3JldHVybiBlKG4saSx0KX0pKS55KChmdW5jdGlvbihlLGkpe3JldHVybiBuKGUsaSx0KX0pKS5jdXJ2ZSh0aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKSkuZGVmaW5lZCgoZnVuY3Rpb24oaSxyKXtyZXR1cm4oZnVuY3Rpb24odCxpLHIpe3ZhciBvPWUodCxpLHIpLGE9bih0LGkscik7cmV0dXJuIFBFdC5NYXRoLmlzVmFsaWROdW1iZXIobykmJlBFdC5NYXRoLmlzVmFsaWROdW1iZXIoYSl9KShpLHIsdCl9KSl9LGUucHJvdG90eXBlLl9nZXRDdXJ2ZUZhY3Rvcnk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnZlKCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgZT1SRXRbdF07cmV0dXJuIG51bGw9PWU/UkV0LmxpbmVhcjplfXJldHVybiB0fSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1uZXcgUEV0Lk1hcDtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0YSgpO2lmKHQuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkfHx0Ll9kb3duc2FtcGxpbmdFbmFibGVkKXtmb3IodmFyIHI9W10sbz1pLmxlbmd0aCxhPTA7YTxvO2ErKylyW2FdPWE7dC5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQmJihyPXQuX2ZpbHRlckNyb3BwZWRSZW5kZXJpbmcobixyKSksdC5fZG93bnNhbXBsaW5nRW5hYmxlZCYmKHI9dC5fZmlsdGVyRG93bnNhbXBsaW5nKG4scikpLHQuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZCYmKHI9dC5fZmlsdGVyRGVuc2VMaW5lcyhuLHIpKTt2YXIgcz1bXSxsPXIubGVuZ3RoO2ZvcihhPTA7YTxsO2ErKyl7c1thXT1pW3JbYV1dfWUuc2V0KG4sW3NdKX1lbHNlIGUuc2V0KG4sW2ldKX0pKSxlfSxlLnByb3RvdHlwZS5fZmlsdGVyQ3JvcHBlZFJlbmRlcmluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLGk9SUV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPUlFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksbz10LmRhdGEoKSxhPVtdLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUEV0Lk1hdGguaW5SYW5nZSh0LDAsbi53aWR0aCgpKSYmUEV0Lk1hdGguaW5SYW5nZShlLDAsbi5oZWlnaHQoKSl9LGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9cyhpKG9bZVtsXV0sZVtsXSx0KSxyKG9bZVtsXV0sZVtsXSx0KSk7aWYoIWMmJm51bGwhPWVbbC0xXSYmbnVsbCE9b1tlW2wtMV1dKXt2YXIgdT1pKG9bZVtsLTFdXSxlW2wtMV0sdCksaD1yKG9bZVtsLTFdXSxlW2wtMV0sdCk7Yz1jfHxzKHUsaCl9aWYoIWMmJm51bGwhPWVbbCsxXSYmbnVsbCE9b1tlW2wrMV1dKXt2YXIgZD1pKG9bZVtsKzFdXSxlW2wrMV0sdCkscD1yKG9bZVtsKzFdXSxlW2wrMV0sdCk7Yz1jfHxzKGQscCl9YyYmYS5wdXNoKGVbbF0pfXJldHVybiBhfSxlLnByb3RvdHlwZS5fZmlsdGVyRG93bnNhbXBsaW5nPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgbj10LmRhdGEoKSxpPUlFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkscj1JRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLG89W2VbMF1dLGE9ZnVuY3Rpb24obyxhKXt2YXIgcz1pKG5bZVtvXV0sZVtvXSx0KSxsPXIobltlW29dXSxlW29dLHQpLGM9aShuW2VbbysxXV0sZVtvKzFdLHQpLHU9cihuW2VbbysxXV0sZVtvKzFdLHQpO2lmKGE9PT0xLzApcmV0dXJuIE1hdGguZmxvb3Iocyk9PT1NYXRoLmZsb29yKGMpO3ZhciBoPWwrKGMtcykqYTtyZXR1cm4gTWF0aC5mbG9vcih1KT09PU1hdGguZmxvb3IoaCl9LHM9MDtzPGUubGVuZ3RoLTE7KXtmb3IodmFyIGw9ZVtzXSxjPWkobltlW3NdXSxlW3NdLHQpLHU9cihuW2Vbc11dLGVbc10sdCksaD1pKG5bZVtzKzFdXSxlW3MrMV0sdCksZD1yKG5bZVtzKzFdXSxlW3MrMV0sdCkscD1NYXRoLmZsb29yKGMpPT09TWF0aC5mbG9vcihoKT8xLzA6KGQtdSkvKGgtYyksZj1lW3NdLG09cD09PTEvMD91OmMsZz1mLF89bSx5PSEwO3M8ZS5sZW5ndGgtMSYmKHl8fGEocyxwKSk7KXtzKysseT0hMTt2YXIgdj1wPT09MS8wP3IobltlW3NdXSxlW3NdLHQpOmkobltlW3NdXSxlW3NdLHQpO3Y+XyYmKF89dixnPWVbc10pLHY8bSYmKG09dixmPWVbc10pfXZhciBiPWVbc107ZiE9PWwmJm8ucHVzaChmKSxnIT09ZiYmZyE9PWwmJm8ucHVzaChnKSxiIT09bCYmYiE9PWYmJmIhPT1nJiZvLnB1c2goYil9cmV0dXJuIG99LGUucHJvdG90eXBlLl9maWx0ZXJEZW5zZUxpbmVzPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciBuPXQuZGF0YSgpLGk9SUV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPUlFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIHRoaXMuX2J1Y2tldEJ5WCh0LGUsKGZ1bmN0aW9uKGUpe3JldHVybiBpKG5bZV0sZSx0KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gcihuW2VdLGUsdCl9KSl9LGUucHJvdG90eXBlLl9idWNrZXRCeVg9ZnVuY3Rpb24odCxlLG4saSl7Zm9yKHZhciByPVtdLG89dC5kYXRhKCksYT1udWxsLHM9ZS5sZW5ndGgsbD0wO2w8PXM7KytsKXt2YXIgYz1lW2xdO2lmKG51bGwhPW9bY10pe3ZhciB1PU1hdGguZmxvb3IobihjKSksaD1pKGMpO251bGw9PWE/YT1uZXcgUEV0LkJ1Y2tldChjLHUsaCk6YS5pc0luQnVja2V0KHUpP2EuYWRkVG9CdWNrZXQoaCxjKTooci5wdXNoLmFwcGx5KHIsYS5nZXRVbmlxdWVJbmRpY2VzKCkpLGE9bmV3IFBFdC5CdWNrZXQoYyx1LGgpKX19cmV0dXJuIG51bGwhPWEmJnIucHVzaC5hcHBseShyLGEuZ2V0VW5pcXVlSW5kaWNlcygpKSxyfSxlfSkoTkV0LlhZUGxvdCk7ZkV0LkxpbmU9T0V0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkocEV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgekV0PUJPLERFdD13cHQsQkV0PVh2dCxIRXQ9RF90LEZFdD1MTXQsVkV0PUJNdCxVRXQ9R1N0LGpFdD1XTXQsR0V0PWRFdCxXRXQ9c1N0LHFFdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygiYXJlYS1wbG90IiksZS55MCgwKSxlLmF0dHIoImZpbGwtb3BhY2l0eSIsLjI1KSxlLmF0dHIoImZpbGwiLChuZXcgQkV0LkNvbG9yKS5yYW5nZSgpWzBdKSxlLl9saW5lRHJhd2Vycz1uZXcgSEV0Lk1hcCxlfXJldHVybiB6RXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUueT1mdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnkuY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4saSksbnVsbCE9aSl7dmFyIHI9dGhpcy55MCgpLmFjY2Vzc29yO251bGwhPXImJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMF9LRVkscixpKSx0aGlzLl91cGRhdGVZU2NhbGUoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUueTA9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWTBfS0VZKTt2YXIgbj10aGlzLnkoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1kwX0tFWSx0LG4mJm4uc2NhbGUpLHRoaXMuX3VwZGF0ZVlTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVZU2NhbGUoKX0sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fbGluZURyYXdlcnMuc2V0KGUsbmV3IEZFdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpFdC5MaW5lU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRkV0LkNhbnZhc0RyYXdlcih0LGpFdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwKChmdW5jdGlvbigpe3ZhciB0PVdFdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihuLngoKSksaT1XRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi55KCkpO3JldHVybiBuLl9kM0xpbmVGYWN0b3J5KGUsdCxpKX0pKSl9KSkpLHQucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzfSxlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xpbmVEcmF3ZXJzLmdldChlKTtyZXR1cm4ic3ZnIj09PXRoaXMucmVuZGVyZXIoKT9uLnVzZVNWRyh0aGlzLl9yZW5kZXJBcmVhKTpuLnVzZUNhbnZhcyh0aGlzLl9jYW52YXMpLG59LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsZSksdGhpcy5fbGluZURyYXdlcnMuZ2V0KGUpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dlbmVyYXRlTGluZURyYXdTdGVwcygpLG49dGhpcy5fZ2V0RGF0YVRvRHJhdygpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihpKXt2YXIgcj1XRXQuUGxvdC5hcHBseURyYXdTdGVwcyhlLGkpO3QuX2xpbmVEcmF3ZXJzLmdldChpKS5kcmF3KG4uZ2V0KGkpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoR0V0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihHRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJuIHQuZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSksdH0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgVUV0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgVkV0LkFyZWFTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBGRXQuQ2FudmFzRHJhd2VyKG4sVkV0Lm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXAoKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89blsyXSxhPWUuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoaSxyKTtyZXR1cm4gZS5fY3JlYXRlQXJlYUdlbmVyYXRvcihpLHIsbyxhLHQpfSksKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89ZS5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihpLHIpO3JldHVybiBlLl9jcmVhdGVUb3BMaW5lR2VuZXJhdG9yKGkscixvLHQpfSkpKX0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0QXJlYVByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoR0V0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihHRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRFeHRlbnRzRm9yUHJvcGVydHkoInkwIiksZT1IRXQuQXJyYXkuZmxhdHRlbih0KSxuPUhFdC5BcnJheS51bmlxKGUpLGk9MT09PW4ubGVuZ3RoP25bMF06bnVsbCxyPXRoaXMueSgpLG89ciYmci5zY2FsZTtudWxsIT1vJiYobnVsbCE9dGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXImJihvLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXIpLHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyPW51bGwpLG51bGwhPWkmJih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltpXX0sby5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSkpfSxlLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSl9LGUucHJvdG90eXBlLl9jb29yZGluYXRlUHJvamVjdG9ycz1mdW5jdGlvbigpe3JldHVybltXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksV0V0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSldfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49dGhpcy5fY29vcmRpbmF0ZVByb2plY3RvcnMoKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IoblswXSxuWzFdLG5bMl0pLGV9LGUucHJvdG90eXBlLnNlbGVjdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZih2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLCJjYW52YXMiPT09dGhpcy5yZW5kZXJlcigpKXJldHVybiBERXQuc2VsZWN0QWxsKCk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9saW5lRHJhd2Vycy5nZXQodCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoLmFwcGx5KGksdC5nZXRWaXN1YWxQcmltaXRpdmVzKCkpfSkpLERFdC5zZWxlY3RBbGwoaSl9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dGhpcy5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihXRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLFdFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpO3JldHVybiBmdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2NyZWF0ZUFyZWFHZW5lcmF0b3IodCxlLG4scixzKShvKX19LGUucHJvdG90eXBlLl9jcmVhdGVEZWZpbmVkUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz10KG4saSxyKSxhPWUobixpLHIpO3JldHVybiBIRXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG8pJiZIRXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpfX0sZS5wcm90b3R5cGUuX2NyZWF0ZUFyZWFHZW5lcmF0b3I9ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gREV0LmFyZWEoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixyKX0pKS55MSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG4scil9KSkueTAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxlLHIpfSkpLmN1cnZlKG8pLmRlZmluZWQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCxlLHIpfSkpfSxlLnByb3RvdHlwZS5fY3JlYXRlVG9wTGluZUdlbmVyYXRvcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gREV0LmxpbmUoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixpKX0pKS55KChmdW5jdGlvbih0LG4pe3JldHVybiBlKHQsbixpKX0pKS5jdXJ2ZShyKS5kZWZpbmVkKChmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsZSxpKX0pKX0sZS5fWTBfS0VZPSJ5MCIsZX0pKGZFdC5MaW5lKTtwRXQuQXJlYT1xRXQ7dmFyIFlFdD17fTshKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk8sbj13cHQsaT1QZ3Qscj1mZ3Qsbz1wdnQsYT1MTXQscz1HU3QsbD1aTXQsYz1jU3QsdT1YdnQsaD1QYnQsZD1EX3QscD1iZ3QsZj1kRXQsbT1zU3QsZz1tRXQ7dC5CYXJPcmllbnRhdGlvbj1wLm1ha2VFbnVtKFsidmVydGljYWwiLCJob3Jpem9udGFsIl0pLHQuTGFiZWxzUG9zaXRpb249cC5tYWtlRW51bShbInN0YXJ0IiwibWlkZGxlIiwiZW5kIiwib3V0c2lkZSJdKSx0LkJhckFsaWdubWVudD1wLm1ha2VFbnVtKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSk7dmFyIF89KGZ1bmN0aW9uKHApe2Z1bmN0aW9uIGcoZSl7dm9pZCAwPT09ZSYmKGU9InZlcnRpY2FsIik7dmFyIG49cC5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX2xhYmVsRm9ybWF0dGVyPW8uaWRlbnRpdHkoKSxuLl9sYWJlbHNFbmFibGVkPSExLG4uX2xhYmVsc1Bvc2l0aW9uPXQuTGFiZWxzUG9zaXRpb24uZW5kLG4uX2hpZGVCYXJzSWZBbnlBcmVUb29XaWRlPSEwLG4uX2JhckFsaWdubWVudD0ibWlkZGxlIixuLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3M9Yy5tZW1vaXplKHkpLG4uX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsbi5hZGRDbGFzcygiYmFyLXBsb3QiKSwidmVydGljYWwiIT09ZSYmImhvcml6b250YWwiIT09ZSl0aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBQbG90cy5CYXIiKTtyZXR1cm4gbi5faXNWZXJ0aWNhbD0idmVydGljYWwiPT09ZSxuLmFuaW1hdG9yKCJiYXNlbGluZSIsbmV3IHIuTnVsbCksbi5hdHRyKCJmaWxsIiwobmV3IHUuQ29sb3IpLnJhbmdlKClbMF0pLG4uYXR0cihnLl9CQVJfVEhJQ0tORVNTX0tFWSwoZnVuY3Rpb24oKXtyZXR1cm4gbi5fYmFyUGl4ZWxUaGlja25lc3MoKX0pKSxuLl9sYWJlbENvbmZpZz1uZXcgZC5NYXAsbi5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuW24uYmFzZWxpbmVWYWx1ZSgpXX0sbn1yZXR1cm4gZS5fX2V4dGVuZHMoZyxwKSxnLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gcC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsdCxlLG4pLHRoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzfSxnLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/cC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOihudWxsPT1lP3AucHJvdG90eXBlLnguY2FsbCh0aGlzLHQpOnAucHJvdG90eXBlLnguY2FsbCh0aGlzLHQsZSksdGhpcy5fdXBkYXRlVGhpY2tuZXNzQXR0cigpLHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcyl9LGcucHJvdG90eXBlLnk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9wLnByb3RvdHlwZS55LmNhbGwodGhpcyk6KG51bGw9PWU/cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCk6cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCxlKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMpfSxnLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLnkoKTp0aGlzLngoKX0sZy5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLngoKTp0aGlzLnkoKX0sZy5wcm90b3R5cGUuYmFyRW5kPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGcuX0JBUl9FTkRfS0VZKTt2YXIgZT10aGlzLnBvc2l0aW9uKCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShnLl9CQVJfRU5EX0tFWSx0LGUmJmUuc2NhbGUpLHRoaXMuX3VwZGF0ZVRoaWNrbmVzc0F0dHIoKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYmFyQWxpZ25tZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2JhckFsaWdubWVudDoodGhpcy5fYmFyQWxpZ25tZW50PXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LGcucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHMuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsLlJlY3RhbmdsZVNWR0RyYXdlcihnLl9CQVJfQVJFQV9DTEFTUyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLlJlY3RhbmdsZUNhbnZhc0RyYXdlcih0KX0pKX0sZy5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fYmFzZWxpbmU9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApfSxnLnByb3RvdHlwZS5iYXNlbGluZVZhbHVlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpe2lmKG51bGwhPXRoaXMuX2Jhc2VsaW5lVmFsdWUpcmV0dXJuIHRoaXMuX2Jhc2VsaW5lVmFsdWU7aWYoIXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXJldHVybiAwO3ZhciBlPXRoaXMubGVuZ3RoKCkuc2NhbGU7cmV0dXJuIGUmJmUgaW5zdGFuY2VvZiB1LlRpbWU/bmV3IERhdGUoMCk6MH1yZXR1cm4gdGhpcy5fYmFzZWxpbmVWYWx1ZT10LHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsdCksdGhpc30sZy5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBwLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQuY2FsbCh0aGlzLHQpLHRoaXN9LGcucHJvdG90eXBlLmRhdGFzZXRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3AucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyk6KHAucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyx0KSx0aGlzKX0sZy5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCxudWxsIT1lJiYodGhpcy5fbGFiZWxzUG9zaXRpb249ZSksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLmxhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsRm9ybWF0dGVyOih0aGlzLl9sYWJlbEZvcm1hdHRlcj10LHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxnLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXAucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLHQpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKGcuX0xBQkVMX0FSRUFfQ0xBU1MsITApLHI9bmV3IGkuU3ZnQ29udGV4dChuLm5vZGUoKSksbz1uZXcgaS5DYWNoZU1lYXN1cmVyKHIpLGE9bmV3IGkuV3JpdGVyKG8scik7cmV0dXJuIHRoaXMuX2xhYmVsQ29uZmlnLnNldCh0LHtsYWJlbEFyZWE6bixtZWFzdXJlcjpvLHdyaXRlcjphfSksZX0sZy5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbih0KXtwLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyx0KTt2YXIgZT10aGlzLl9sYWJlbENvbmZpZy5nZXQodCk7bnVsbCE9ZSYmKGUubGFiZWxBcmVhLnJlbW92ZSgpLHRoaXMuX2xhYmVsQ29uZmlnLmRlbGV0ZSh0KSl9LGcucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7dmFyIG49ZS5faXNWZXJ0aWNhbD9lLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3RYKHQpOmUuX2dldEVudGl0eVN0b3JlKCkuZW50aXR5TmVhcmVzdFkodCk7cmV0dXJuIHZvaWQgMD09PW4/dm9pZCAwOmUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShuKX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKG4pOm4oKX0sZy5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fZW50aXRpZXNJbnRlcnNlY3RpbmcodC54LHQueSl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChuKTpuKCl9LGcucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7cmV0dXJuIHAucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJbllCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzKCkscj1pLmxlbmd0aCxvPTA7bzxyO28rKyl7dmFyIGE9aVtvXTtkLkRPTS5pbnRlcnNlY3RzQkJveCh0LGUsdGhpcy5fZW50aXR5Qm91bmRzKGEpKSYmbi5wdXNoKHRoaXMuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShhKSl9cmV0dXJuIG59LGcucHJvdG90eXBlLl91cGRhdGVMZW5ndGhTY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXt2YXIgdD10aGlzLmxlbmd0aCgpLnNjYWxlO3QgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlJiYodC5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlciksdC5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlcikpfX0sZy5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9iYXJQaXhlbFRoaWNrbmVzcygpLHRoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZCgoZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0KX0pKX0sZy5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT17eDE6dGhpcy5faXNWZXJ0aWNhbD8wOm4seTE6dGhpcy5faXNWZXJ0aWNhbD9uOjAseDI6dGhpcy5faXNWZXJ0aWNhbD90aGlzLndpZHRoKCk6bix5Mjp0aGlzLl9pc1ZlcnRpY2FsP246dGhpcy5oZWlnaHQoKX07dGhpcy5fZ2V0QW5pbWF0b3IoImJhc2VsaW5lIikuYW5pbWF0ZSh0aGlzLl9iYXNlbGluZSxpKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xhYmVsQ29uZmlnLmdldCh0KS5sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCl9KSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmZC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCl9LGcucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMscj1wLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLHQpO2lmKCJ4Ij09PXQmJnRoaXMuX2lzVmVydGljYWwpZT10aGlzLngoKTtlbHNle2lmKCJ5IiE9PXR8fHRoaXMuX2lzVmVydGljYWwpcmV0dXJuIHI7ZT10aGlzLnkoKX1pZighKGUmJmUuc2NhbGUmJmUuc2NhbGUgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlKSlyZXR1cm4gcjt2YXIgbz1lLnNjYWxlLGE9dGhpcy5fYmFyUGl4ZWxUaGlja25lc3MoKTtyZXR1cm4gcj1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uZXh0ZW50KFtvLmludmVydChpLl9nZXRQb3NpdGlvbkF0dHIoby5zY2FsZSh0WzBdKSxhKSksby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFswXSksYSkrYSksby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFsxXSksYSkpLG8uaW52ZXJ0KGkuX2dldFBvc2l0aW9uQXR0cihvLnNjYWxlKHRbMV0pLGEpK2EpXSl9KSl9LGcucHJvdG90eXBlLl9nZXRQb3NpdGlvbkF0dHI9ZnVuY3Rpb24odCxlKXtzd2l0Y2godGhpcy5faXNWZXJ0aWNhbHx8KHQtPWUsZSo9LTEpLHRoaXMuX2JhckFsaWdubWVudCl7Y2FzZSJzdGFydCI6cmV0dXJuIHQ7Y2FzZSJlbmQiOnJldHVybiB0LWU7Y2FzZSJtaWRkbGUiOmRlZmF1bHQ6cmV0dXJuIHQtZS8yfX0sZy5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fZ2V0RGF0YVRvRHJhdygpLG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT10aGlzLmRhdGFzZXRzKCkuc29tZSgoZnVuY3Rpb24oaSl7cmV0dXJuIGUuZ2V0KGkpLnNvbWUoKGZ1bmN0aW9uKGUscil7cmV0dXJuIG51bGwhPWUmJnQuX2RyYXdMYWJlbChlLHIsaSxuKX0pKX0pKTt0aGlzLl9oaWRlQmFyc0lmQW55QXJlVG9vV2lkZSYmaSYmdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9sYWJlbENvbmZpZy5nZXQoZSkubGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSkpfSxnLnByb3RvdHlwZS5fZHJhd0xhYmVsPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXMuX2xhYmVsQ29uZmlnLmdldChuKSxvPXIubGFiZWxBcmVhLGE9ci5tZWFzdXJlcixzPXIud3JpdGVyLGw9KDAsdGhpcy5sZW5ndGgoKS5hY2Nlc3NvcikodCxlLG4pLGM9dGhpcy5sZW5ndGgoKS5zY2FsZSx1PW51bGwhPWM/Yy5zY2FsZShsKTpsLGg9bnVsbCE9Yz9jLnNjYWxlKHRoaXMuYmFzZWxpbmVWYWx1ZSgpKTp0aGlzLmJhc2VsaW5lVmFsdWUoKSxkPXt4OmkueCh0LGUsbikseTppLnkodCxlLG4pfSxwPXt3aWR0aDppLndpZHRoKHQsZSxuKSxoZWlnaHQ6aS5oZWlnaHQodCxlLG4pfSxmPXRoaXMuX2xhYmVsRm9ybWF0dGVyKGwsdCxlLG4pLG09YS5tZWFzdXJlKGYpLGc9dGhpcy5fc2hvdWxkU2hvd0xhYmVsT25CYXIoZCxwLG0pLF89dGhpcy5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzKGQscCxtLGcsdGhpcy5faXNWZXJ0aWNhbD91PD1oOnU8aCkseT1fLmNvbnRhaW5lckRpbWVuc2lvbnMsdj1fLmxhYmVsQ29udGFpbmVyT3JpZ2luLGI9Xy5sYWJlbE9yaWdpbix4PV8uYWxpZ25tZW50LHc9aS5maWxsKHQsZSxuKSxTPXRoaXMuX2NyZWF0ZUxhYmVsQ29udGFpbmVyKG8sdixiLG0sZyx3KTtyZXR1cm4gcy53cml0ZShmLHkud2lkdGgseS5oZWlnaHQse3hBbGlnbjp4LngseUFsaWduOngueX0sUy5ub2RlKCkpLHRoaXMuX2lzVmVydGljYWw/cC53aWR0aDxtLndpZHRoOnAuaGVpZ2h0PG0uaGVpZ2h0fSxnLnByb3RvdHlwZS5fc2hvdWxkU2hvd0xhYmVsT25CYXI9ZnVuY3Rpb24oZSxuLGkpe2lmKHRoaXMuX2xhYmVsc1Bvc2l0aW9uPT09dC5MYWJlbHNQb3NpdGlvbi5vdXRzaWRlKXJldHVybiExO3ZhciByPXRoaXMuX2lzVmVydGljYWw/ZS55OmUueCxvPXRoaXMuX2lzVmVydGljYWw/bi5oZWlnaHQ6bi53aWR0aCxhPXRoaXMuX2lzVmVydGljYWw/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCkscz1yK28sbD1vO3JldHVybiBzPmE/bD1hLXI6cjwwJiYobD1zKSwodGhpcy5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoKStnLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUjw9bH0sZy5wcm90b3R5cGUuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcz1mdW5jdGlvbihlLG4saSxyLG8pe3ZhciBhPXRoaXMscz10aGlzLl9pc1ZlcnRpY2FsP2UueTplLngsbD10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0Om4ud2lkdGgsYz10aGlzLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgsdT0iY2VudGVyIixoPWwsZD1zLHA9cyxmPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlInRvcExlZnQiOnJldHVybiB1PWEuX2lzVmVydGljYWw/InRvcCI6ImxlZnQiLGQrPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLHZvaWQocCs9Zy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIpO2Nhc2UiY2VudGVyIjpyZXR1cm4gdm9pZChwKz0obCtjKS8yKTtjYXNlImJvdHRvbVJpZ2h0IjpyZXR1cm4gdT1hLl9pc1ZlcnRpY2FsPyJib3R0b20iOiJyaWdodCIsZC09Zy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIsdm9pZChwKz1oLWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLWMpfX07aWYocilzd2l0Y2godGhpcy5fbGFiZWxzUG9zaXRpb24pe2Nhc2UgdC5MYWJlbHNQb3NpdGlvbi5zdGFydDpmKG8/ImJvdHRvbVJpZ2h0IjoidG9wTGVmdCIpO2JyZWFrO2Nhc2UgdC5MYWJlbHNQb3NpdGlvbi5taWRkbGU6ZigiY2VudGVyIik7YnJlYWs7Y2FzZSB0LkxhYmVsc1Bvc2l0aW9uLmVuZDpmKG8/InRvcExlZnQiOiJib3R0b21SaWdodCIpfWVsc2Ugbz8odT10aGlzLl9pc1ZlcnRpY2FsPyJ0b3AiOiJsZWZ0IixoPWwrZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrYyxkLT1nLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUitjLHAtPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK2MpOih1PXRoaXMuX2lzVmVydGljYWw/ImJvdHRvbSI6InJpZ2h0IixoPWwrZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrYyxwKz1sK2cuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSKTtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6dGhpcy5faXNWZXJ0aWNhbD9uLndpZHRoOmgsaGVpZ2h0OnRoaXMuX2lzVmVydGljYWw/aDpuLmhlaWdodH0sbGFiZWxDb250YWluZXJPcmlnaW46e3g6dGhpcy5faXNWZXJ0aWNhbD9lLng6ZCx5OnRoaXMuX2lzVmVydGljYWw/ZDplLnl9LGxhYmVsT3JpZ2luOnt4OnRoaXMuX2lzVmVydGljYWw/ZS54K24ud2lkdGgvMi1pLndpZHRoLzI6cCx5OnRoaXMuX2lzVmVydGljYWw/cDplLnkrbi5oZWlnaHQvMi1pLmhlaWdodC8yfSxhbGlnbm1lbnQ6e3g6dGhpcy5faXNWZXJ0aWNhbD8iY2VudGVyIjp1LHk6dGhpcy5faXNWZXJ0aWNhbD91OiJjZW50ZXIifX19LGcucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGE9dC5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLngrIiwgIitlLnkrIikiKTtpZihyKXthLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApO3ZhciBzPTEuNipkLkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsbyk8ZC5Db2xvci5jb250cmFzdCgiYmxhY2siLG8pO2EuY2xhc3NlZChzPyJkYXJrLWxhYmVsIjoibGlnaHQtbGFiZWwiLCEwKX1lbHNlIGEuY2xhc3NlZCgib2ZmLWJhci1sYWJlbCIsITApO3JldHVybiBhfSxnLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT10aGlzLl9pc1ZlcnRpY2FsPyJoZWlnaHQiOiJ3aWR0aCI7ZVt0aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCJdPWZ1bmN0aW9uKCl7cmV0dXJuIG59LGVbaV09ZnVuY3Rpb24oKXtyZXR1cm4gMH0sdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6ZSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihmLkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihmLkFuaW1hdG9yLk1BSU4pfSksdH0sZy5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXAucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscj10aGlzLl9pc1ZlcnRpY2FsPyJ4IjoieSIsbz1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMucG9zaXRpb24oKSksYT1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMubGVuZ3RoKCkpLHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBNYXRoLmFicyhuLWEodCxlLGkpKX0sbD1lW2cuX0JBUl9USElDS05FU1NfS0VZXSxjPWUuZ2FwLHU9bnVsbD09Yz9sOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1sKHQsZSxuKTtyZXR1cm4gaTxnLl9CQVJfR0FQTEVTU19USFJFU0hPTERfUFg/aTppLWModCxlLG4pfTtyZXR1cm4gZS53aWR0aD10aGlzLl9pc1ZlcnRpY2FsP3U6cyxlLmhlaWdodD10aGlzLl9pc1ZlcnRpY2FsP3M6dSxlW2ldPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj1hKHQsZSxpKTtyZXR1cm4gcj5uP246cn0sZVtyXT1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQuX2dldFBvc2l0aW9uQXR0cihvKGUsbixpKSxsKGUsbixpKSl9LGV9LGcucHJvdG90eXBlLl91cGRhdGVUaGlja25lc3NBdHRyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMucG9zaXRpb24oKSxuPXRoaXMuYmFyRW5kKCk7bnVsbCE9ZSYmbnVsbCE9bj8odGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz0hMSx0aGlzLmF0dHIoZy5fQkFSX1RISUNLTkVTU19LRVksKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1lLmFjY2Vzc29yKHQsaSxyKSxhPW4uYWNjZXNzb3IodCxpLHIpO3JldHVybiBvPWUuc2NhbGU/ZS5zY2FsZS5zY2FsZShvKTpvLGE9bi5zY2FsZT9uLnNjYWxlLnNjYWxlKGEpOmEsTWF0aC5hYnMoYS1vKX0pKSk6KHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsdGhpcy5hdHRyKGcuX0JBUl9USElDS05FU1NfS0VZLChmdW5jdGlvbigpe3JldHVybiB0Ll9iYXJQaXhlbFRoaWNrbmVzcygpfSkpKX0sZy5wcm90b3R5cGUuX2JhclBpeGVsVGhpY2tuZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3MmJnRoaXMuX3Byb2plY3RvcnNSZWFkeSgpP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcyh0aGlzLnBvc2l0aW9uKCksdGhpcy5kYXRhc2V0cygpLHRoaXMuX2lzVmVydGljYWw/dGhpcy53aWR0aCgpOnRoaXMuaGVpZ2h0KCkpOjB9LGcucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD10aGlzLmRhdGFzZXRzKCkpLHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpP3AucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyx0KTpbXX0sZy5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGl4ZWxCb3VuZHModC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCl9LGcucHJvdG90eXBlLl9waXhlbEJvdW5kcz1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJue3g6aS54KHQsZSxuKSx5OmkueSh0LGUsbiksd2lkdGg6aS53aWR0aCh0LGUsbiksaGVpZ2h0OmkuaGVpZ2h0KHQsZSxuKX19LGcucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9waXhlbEJvdW5kcyh0LGUsbikscj1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuX2lzVmVydGljYWw/dGhpcy55KCk6dGhpcy54KCkpKHQsZSxuKSxvPSh0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpLnNjYWxlOnRoaXMueCgpLnNjYWxlKS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk7cmV0dXJuIHRoaXMuX3BpeGVsUG9pbnRCYXIocixvLGkpfSxnLnByb3RvdHlwZS5fcGl4ZWxQb2ludEJhcj1mdW5jdGlvbih0LGUsbil7dmFyIGkscjtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD8oaT1uLngrbi53aWR0aC8yLHI9dDw9ZT9uLnk6bi55K24uaGVpZ2h0KTooaT10Pj1lP24ueCtuLndpZHRoOm4ueCxyPW4ueStuLmhlaWdodC8yKSx7eDppLHk6cn19LGcucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbih0LGUpe3AucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsdCxlKX0sZy5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9bmV3IGQuTWFwLG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT10aGlzLndpZHRoKCkscj10aGlzLmhlaWdodCgpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9by5kYXRhKCkubWFwKChmdW5jdGlvbihlLGEpe3JldHVybiB0Ll9pc0RhdHVtT25TY3JlZW4obixpLHIsZSxhLG8pP2U6bnVsbH0pKTtlLnNldChvLGEpfSkpLGV9LGcucHJvdG90eXBlLl9pc0RhdHVtT25TY3JlZW49ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBhPXQueChpLHIsbykscz10LnkoaSxyLG8pLGw9dC53aWR0aChpLHIsbyksYz10LmhlaWdodChpLHIsbyk7cmV0dXJuISEoZC5NYXRoLmlzVmFsaWROdW1iZXIoYSkmJmQuTWF0aC5pc1ZhbGlkTnVtYmVyKHMpJiZkLk1hdGguaXNWYWxpZE51bWJlcihsKSYmZC5NYXRoLmlzVmFsaWROdW1iZXIoYykpJiZkLk1hdGguYm91bmRzSW50ZXJzZWN0cyhhLHMsbCxjLDAsMCxlLG4pfSxnLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3AucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fbGFiZWxDb25maWcuZ2V0KGUpLm1lYXN1cmVyLnJlc2V0KCl9KSl9LGcuX0JBUl9USElDS05FU1NfUkFUSU89Ljk1LGcuX0JBUl9HQVBMRVNTX1RIUkVTSE9MRF9QWD0zLGcuX1NJTkdMRV9CQVJfRElNRU5TSU9OX1JBVElPPS40LGcuX0JBUl9BUkVBX0NMQVNTPSJiYXItYXJlYSIsZy5fQkFSX0VORF9LRVk9ImJhckVuZCIsZy5fQkFSX1RISUNLTkVTU19LRVk9IndpZHRoIixnLl9MQUJFTF9BUkVBX0NMQVNTPSJiYXItbGFiZWwtdGV4dC1hcmVhIixnLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUj0xMCxnfSkoZy5YWVBsb3QpO2Z1bmN0aW9uIHkodCxlLGkpe3ZhciByLG89dC5zY2FsZTtpZihvIGluc3RhbmNlb2YgdS5DYXRlZ29yeSlyPW8ucmFuZ2VCYW5kKCk7ZWxzZXt2YXIgYT10LmFjY2Vzc29yLHM9bi5zZXQoZC5BcnJheS5mbGF0dGVuKGUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhKCkubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBhKGUsbix0KX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWVPZigpfSkpfSkpKSkudmFsdWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4rdH0pKTtzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKTt2YXIgbD1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8uc2NhbGUodCl9KSksYz1uLnBhaXJzKGwpO3I9ZC5NYXRoLm1pbihjLChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmFicyh0WzFdLXRbMF0pfSksaSpfLl9TSU5HTEVfQkFSX0RJTUVOU0lPTl9SQVRJTykscio9Xy5fQkFSX1RISUNLTkVTU19SQVRJT31yZXR1cm4gcn10LkJhcj1ffSkoWUV0KTt2YXIgWEV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShYRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkRXQ9Qk8sS0V0PVh2dCxaRXQ9RF90LEpFdD1ZRXQsUUV0PXNTdCx0VHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9InZlcnRpY2FsIik7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uX2NsdXN0ZXJPZmZzZXRzPW5ldyBaRXQuTWFwLG59cmV0dXJuICRFdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksaT10aGlzLl9tYWtlSW5uZXJTY2FsZSgpLHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5yYW5nZUJhbmQoKX07bi53aWR0aD10aGlzLl9pc1ZlcnRpY2FsP3I6bi53aWR0aCxuLmhlaWdodD10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0OnI7dmFyIG89bi54LGE9bi55O3JldHVybiBuLng9dGhpcy5faXNWZXJ0aWNhbD9mdW5jdGlvbih0LG4saSl7cmV0dXJuIG8odCxuLGkpK2UuX2NsdXN0ZXJPZmZzZXRzLmdldChpKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiBvKHQsZSxuKX0sbi55PXRoaXMuX2lzVmVydGljYWw/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBhKHQsZSxuKX06ZnVuY3Rpb24odCxuLGkpe3JldHVybiBhKHQsbixpKStlLl9jbHVzdGVyT2Zmc2V0cy5nZXQoaSl9LG59LGUucHJvdG90eXBlLl91cGRhdGVDbHVzdGVyUG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fbWFrZUlubmVyU2NhbGUoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtyZXR1cm4gdC5fY2x1c3Rlck9mZnNldHMuc2V0KG4sZS5zY2FsZShTdHJpbmcoaSkpLWUucmFuZ2VCYW5kKCkvMil9KSl9LGUucHJvdG90eXBlLl9tYWtlSW5uZXJTY2FsZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBLRXQuQ2F0ZWdvcnk7dC5kb21haW4odGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nKGUpfSkpKTt2YXIgZT1RRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5hdHRyKEpFdC5CYXIuX0JBUl9USElDS05FU1NfS0VZKSk7cmV0dXJuIHQucmFuZ2UoWzAsZShudWxsLDAsbnVsbCldKSx0fSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVDbHVzdGVyUG9zaXRpb24oKSx0LnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdy5jYWxsKHRoaXMpfSxlfSkoSkV0LkJhcik7WEV0LkNsdXN0ZXJlZEJhcj10VHQ7dmFyIGVUdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoZVR0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgblR0PUJPLGlUdD13cHQsclR0PVBndCxvVHQ9Zmd0LGFUdD1wdnQsc1R0PVh2dCxsVHQ9RF90LGNUdD1JTXQsdVR0PU9NdCxoVHQ9R1N0LGRUdD1UeXQscFR0PXNTdCxmVHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX3N0YXJ0QW5nbGU9MCxlLl9lbmRBbmdsZT0yKk1hdGguUEksZS5fbGFiZWxGb3JtYXR0ZXI9YVR0LmlkZW50aXR5KCksZS5fbGFiZWxzRW5hYmxlZD0hMSxlLmlubmVyUmFkaXVzKDApLGUub3V0ZXJSYWRpdXMoKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5fcGllQ2VudGVyKCk7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGUud2lkdGgoKS10LngsdC54KSxNYXRoLm1heChlLmhlaWdodCgpLXQueSx0LnkpKX0pKSxlLmFkZENsYXNzKCJwaWUtcGxvdCIpLGUuYXR0cigiZmlsbCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZyhlKX0pLG5ldyBzVHQuQ29sb3IpLGUuX3N0cm9rZURyYXdlcnM9bmV3IGxUdC5NYXAsZX1yZXR1cm4gblR0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc3Ryb2tlRHJhd2Vycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hdHRhY2hUbyhlLl9yZW5kZXJBcmVhKX0pKX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7dC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpO3ZhciByPXRoaXMuX3BpZUNlbnRlcigpO3RoaXMuX3JlbmRlckFyZWEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrci54KyIsIityLnkrIikiKTt2YXIgbz1NYXRoLm1pbihNYXRoLm1heCh0aGlzLndpZHRoKCktci54LHIueCksTWF0aC5tYXgodGhpcy5oZWlnaHQoKS1yLnksci55KSk7cmV0dXJuIG51bGwhPXRoaXMuaW5uZXJSYWRpdXMoKS5zY2FsZSYmdGhpcy5pbm5lclJhZGl1cygpLnNjYWxlLnJhbmdlKFswLG9dKSxudWxsIT10aGlzLm91dGVyUmFkaXVzKCkuc2NhbGUmJnRoaXMub3V0ZXJSYWRpdXMoKS5zY2FsZS5yYW5nZShbMCxvXSksdGhpc30sZS5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMuZGF0YXNldHMoKS5sZW5ndGgpcmV0dXJuIGxUdC5XaW5kb3cud2FybigiT25seSBvbmUgZGF0YXNldCBpcyBzdXBwb3J0ZWQgaW4gUGllIHBsb3RzIiksdGhpczt0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0LnByb3RvdHlwZS5fYWRkRGF0YXNldC5jYWxsKHRoaXMsZSk7dmFyIG49bmV3IHVUdC5BcmNPdXRsaW5lU1ZHRHJhd2VyO3JldHVybiB0aGlzLl9pc1NldHVwJiZuLmF0dGFjaFRvKHRoaXMuX3JlbmRlckFyZWEpLHRoaXMuX3N0cm9rZURyYXdlcnMuc2V0KGUsbiksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUucmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmdldChlKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmRlbGV0ZShlKSx0aGlzLl9zdGFydEFuZ2xlcz1bXSx0aGlzLl9lbmRBbmdsZXM9W10sdGhpc30sZS5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXRoaXMuZGF0YXNldHMoKSk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLl9zdHJva2VEcmF3ZXJzLmdldCh0KTtudWxsIT1lJiZpLnB1c2guYXBwbHkoaSxlLmdldFZpc3VhbFByaW1pdGl2ZXMoKSl9KSksaVR0LnNlbGVjdEFsbChpKX0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoVHQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjVHQuQXJjU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGRUdC53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBQaWUgUGxvdCEiKSxudWxsfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLHQucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyxlKS5tYXAoKGZ1bmN0aW9uKHQpe3QucG9zaXRpb24ueCs9bi53aWR0aCgpLzIsdC5wb3NpdGlvbi55Kz1uLmhlaWdodCgpLzI7dmFyIGU9aVR0LnNlbGVjdChuLl9zdHJva2VEcmF3ZXJzLmdldCh0LmRhdGFzZXQpLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgodC5pbmRleCkpLGk9dDtyZXR1cm4gaS5zdHJva2VTZWxlY3Rpb249ZSxpfSkpfSxlLnByb3RvdHlwZS5zZWN0b3JWYWx1ZT1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NFQ1RPUl9WQUxVRV9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fU0VDVE9SX1ZBTFVFX0tFWSx0LG4pLHRoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmlubmVyUmFkaXVzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fSU5ORVJfUkFESVVTX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9JTk5FUl9SQURJVVNfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9PVVRFUl9SQURJVVNfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX09VVEVSX1JBRElVU19LRVksdCxuKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N0YXJ0QW5nbGU6KHRoaXMuX3N0YXJ0QW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmRBbmdsZToodGhpcy5fZW5kQW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbEZvcm1hdHRlcjoodGhpcy5fbGFiZWxGb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMud2lkdGgoKS8yLG49dGhpcy5oZWlnaHQoKS8yLGk9dGhpcy5fc2xpY2VJbmRleEZvclBvaW50KHt4OnQueC1lLHk6dC55LW59KTtyZXR1cm4gbnVsbD09aT9bXTpbdGhpcy5lbnRpdGllcygpW2ldXX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksaT1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSxyPXBUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLm91dGVyUmFkaXVzKCkpO3JldHVybiBuLmQ9ZnVuY3Rpb24odCxuLG8pe3JldHVybiBpVHQuYXJjKCkuaW5uZXJSYWRpdXMoaSh0LG4sbykpLm91dGVyUmFkaXVzKHIodCxuLG8pKS5zdGFydEFuZ2xlKGUuX3N0YXJ0QW5nbGVzW25dKS5lbmRBbmdsZShlLl9lbmRBbmdsZXNbbl0pKHQsbil9LG59LGUucHJvdG90eXBlLl91cGRhdGVQaWVBbmdsZXM9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnNlY3RvclZhbHVlKCkmJjAhPT10aGlzLmRhdGFzZXRzKCkubGVuZ3RoKXt2YXIgdD1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxlPXRoaXMuZGF0YXNldHMoKVswXSxuPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoZSksaT1pVHQucGllKCkuc29ydChudWxsKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKS52YWx1ZSgoZnVuY3Rpb24obixpKXtyZXR1cm4gdChuLGksZSl9KSkobik7dGhpcy5fc3RhcnRBbmdsZXM9aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9KSksdGhpcy5fZW5kQW5nbGVzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5lbmRBbmdsZX0pKX19LGUucHJvdG90eXBlLl9waWVDZW50ZXI9ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fc3RhcnRBbmdsZTp0aGlzLl9lbmRBbmdsZSxvPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fZW5kQW5nbGU6dGhpcy5fc3RhcnRBbmdsZSxhPU1hdGguc2luKHIpLHM9TWF0aC5jb3MociksbD1NYXRoLnNpbihvKSxjPU1hdGguY29zKG8pO3JldHVybiBhPj0wJiZsPj0wP3M+PTAmJmM+PTA/KHQ9cyxlPTAsaT0wLG49bCk6czwwJiZjPDA/KHQ9MCxlPS1jLGk9MCxuPWEpOnM+PTAmJmM8MD8odD1zLGU9LWMsaT0wLG49YSk6czwwJiZjPj0wJiYodD0xLGU9MSxpPTEsbj1NYXRoLm1heChhLGwpKTphPj0wJiZsPDA/cz49MCYmYz49MD8odD1NYXRoLm1heChzLGMpLGU9MSxpPTEsbj0xKTpzPDAmJmM8MD8odD0wLGU9MSxpPS1sLG49YSk6cz49MCYmYzwwPyh0PXMsZT0xLGk9LWwsbj0xKTpzPDAmJmM+PTAmJih0PWMsZT0xLGk9MSxuPWEpOmE8MCYmbD49MD9zPj0wJiZjPj0wPyh0PTEsZT0wLGk9LWEsbj1sKTpzPDAmJmM8MD8odD0xLGU9TWF0aC5tYXgoLXMsLWMpLGk9MSxuPTEpOnM+PTAmJmM8MD8odD0xLGU9LWMsaT0tYSxuPTEpOnM8MCYmYz49MCYmKHQ9MSxlPS1zLGk9MSxuPWwpOmE8MCYmbDwwJiYocz49MCYmYz49MD8odD1jLGU9MCxpPS1hLG49MCk6czwwJiZjPDA/KHQ9MCxlPS1zLGk9LWwsbj0wKTpzPj0wJiZjPDA/KHQ9MSxlPTEsaT1NYXRoLm1heChzLC1jKSxuPTEpOnM8MCYmYz49MCYmKHQ9YyxlPS1zLGk9MSxuPTApKSx7eDppK249PTA/MDppLyhpK24pKnRoaXMud2lkdGgoKSx5OnQrZT09MD8wOnQvKHQrZSkqdGhpcy5oZWlnaHQoKX19LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKTtpZigwPT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aClyZXR1cm4gbjt2YXIgaT1wVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxyPXRoaXMuZGF0YXNldHMoKVswXSxvPW4uZ2V0KHIpLmZpbHRlcigoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faXNWYWxpZERhdGEoaSh0LG4scikpfSkpO3JldHVybiBuLnNldChyLG8pLG59LGUuX2lzVmFsaWREYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBsVHQuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0Pj0wfSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LG4saSl7dmFyIHI9cFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSk7aWYoIWUuX2lzVmFsaWREYXRhKHIodCxuLGkpKSlyZXR1cm57eDpOYU4seTpOYU59O3ZhciBvPShwVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSh0LG4saSkrcFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMub3V0ZXJSYWRpdXMoKSkodCxuLGkpKS8yLGE9aVR0LnBpZSgpLnNvcnQobnVsbCkudmFsdWUoKGZ1bmN0aW9uKHQsbil7dmFyIG89cih0LG4saSk7cmV0dXJuIGUuX2lzVmFsaWREYXRhKG8pP286MH0pKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKShpLmRhdGEoKSkscz0oYVtuXS5zdGFydEFuZ2xlK2Fbbl0uZW5kQW5nbGUpLzI7cmV0dXJue3g6bypNYXRoLnNpbihzKSx5Oi1vKk1hdGguY29zKHMpfX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3JlbmRlckFyZWEuc2VsZWN0KCIubGFiZWwtYXJlYSIpLnJlbW92ZSgpLHRoaXMuX2xhYmVsc0VuYWJsZWQmJmxUdC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCk7dmFyIG49dGhpcy5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHMoKSxpPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9cFR0LlBsb3QuYXBwbHlEcmF3U3RlcHMobix0KTtlLl9zdHJva2VEcmF3ZXJzLmdldCh0KS5kcmF3KGkuZ2V0KHQpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgb1R0Lk51bGx9XX0sZS5wcm90b3R5cGUuX3NsaWNlSW5kZXhGb3JQb2ludD1mdW5jdGlvbih0KXt2YXIgZSxuPU1hdGguc3FydChNYXRoLnBvdyh0LngsMikrTWF0aC5wb3codC55LDIpKSxpPU1hdGguYWNvcygtdC55L24pO3QueDwwJiYoaT0yKk1hdGguUEktaSk7Zm9yKHZhciByPTA7cjx0aGlzLl9zdGFydEFuZ2xlcy5sZW5ndGg7cisrKWlmKHRoaXMuX3N0YXJ0QW5nbGVzW3JdPGkmJnRoaXMuX2VuZEFuZ2xlc1tyXT5pKXtlPXI7YnJlYWt9aWYodm9pZCAwIT09ZSl7dmFyIG89dGhpcy5kYXRhc2V0cygpWzBdLGE9by5kYXRhKClbZV0scz10aGlzLmlubmVyUmFkaXVzKCkuYWNjZXNzb3IoYSxlLG8pLGw9dGhpcy5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGEsZSxvKTtpZihuPnMmJm48bClyZXR1cm4gZX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKCJsYWJlbC1hcmVhIiwhMCksaT1uZXcgclR0LlN2Z0NvbnRleHQobi5ub2RlKCkpLHI9bmV3IHJUdC5DYWNoZU1lYXN1cmVyKGkpLG89bmV3IHJUdC5Xcml0ZXIocixpKSxhPXRoaXMuZGF0YXNldHMoKVswXSxzPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoYSksbD1zLmxlbmd0aCxjPWZ1bmN0aW9uKGkpe3ZhciBsPXNbaV0sYz11LnNlY3RvclZhbHVlKCkuYWNjZXNzb3IobCxpLGEpO2lmKCFsVHQuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpKXJldHVybiJjb250aW51ZSI7Yz11Ll9sYWJlbEZvcm1hdHRlcihjLGwsaSxhKTt2YXIgaD1yLm1lYXN1cmUoYyksZD0odS5fZW5kQW5nbGVzW2ldK3UuX3N0YXJ0QW5nbGVzW2ldKS8yLHA9dS5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1Lm91dGVyUmFkaXVzKCkuc2NhbGUmJihwPXUub3V0ZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShwKSk7dmFyIGY9dS5pbm5lclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1LmlubmVyUmFkaXVzKCkuc2NhbGUmJihmPXUuaW5uZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShmKSk7dmFyIG09KHArZikvMixnPU1hdGguc2luKGQpKm0taC53aWR0aC8yLF89LU1hdGguY29zKGQpKm0taC5oZWlnaHQvMix5PVt7eDpnLHk6X30se3g6Zyx5Ol8raC5oZWlnaHR9LHt4OmcraC53aWR0aCx5Ol99LHt4OmcraC53aWR0aCx5Ol8raC5oZWlnaHR9XSx2PXkuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhlLngpPD10LndpZHRoKCkvMiYmTWF0aC5hYnMoZS55KTw9dC5oZWlnaHQoKS8yfSkpO3YmJih2PXkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fc2xpY2VJbmRleEZvclBvaW50KGUpfSkpLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWl9KSkpO3ZhciBiPWUuZmlsbChsLGksYSkseD0xLjYqbFR0LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsYik8bFR0LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsYiksdz1uLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2crIiwiK18rIikiKTt3LmNsYXNzZWQoeD8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCksdy5zdHlsZSgidmlzaWJpbGl0eSIsdj8iaW5oZXJpdCI6ImhpZGRlbiIpLG8ud3JpdGUoYyxoLndpZHRoLGguaGVpZ2h0LHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSx3Lm5vZGUoKSl9LHU9dGhpcyxoPTA7aDxsO2grKyljKGgpfSxlLl9JTk5FUl9SQURJVVNfS0VZPSJpbm5lci1yYWRpdXMiLGUuX09VVEVSX1JBRElVU19LRVk9Im91dGVyLXJhZGl1cyIsZS5fU0VDVE9SX1ZBTFVFX0tFWT0ic2VjdG9yLXZhbHVlIixlfSkocFR0LlBsb3QpO2VUdC5QaWU9ZlR0O3ZhciBtVHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KG1UdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGdUdD1CTyxfVHQ9d3B0LHlUdD1QZ3QsdlR0PWZndCxiVHQ9TE10LHhUdD1HU3Qsd1R0PVpNdCxTVHQ9WHZ0LE1UdD1EX3QsRVR0PXNTdCxUVHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5fbGFiZWw9bnVsbCxlLmFuaW1hdG9yKCJyZWN0YW5nbGVzIixuZXcgdlR0Lk51bGwpLGUuYWRkQ2xhc3MoInJlY3RhbmdsZS1wbG90IiksZS5hdHRyKCJmaWxsIiwobmV3IFNUdC5Db2xvcikucmFuZ2UoKVswXSksZX1yZXR1cm4gZ1R0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHhUdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHdUdC5SZWN0YW5nbGVTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBiVHQuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyKHQpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLGk9dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcykscj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG89aVtlLl9YMl9LRVldLGE9RVR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxzPWlbZS5fWTJfS0VZXSxsPXRoaXMueCgpLnNjYWxlLGM9dGhpcy55KCkuc2NhbGU7cmV0dXJuIG51bGwhPW8/KGkud2lkdGg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhvKHQsZSxuKS1yKHQsZSxuKSl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG8odCxlLG4pLHIodCxlLG4pKX0pOihpLndpZHRoPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbi5fcmVjdGFuZ2xlV2lkdGgobCl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIodCxlLG4pLS41Kmkud2lkdGgodCxlLG4pfSksbnVsbCE9cz8oaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhzKHQsZSxuKS1hKHQsZSxuKSl9LGkueT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWF4KHModCxlLG4pLGEodCxlLG4pKS1pLmhlaWdodCh0LGUsbil9KTooaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuLl9yZWN0YW5nbGVXaWR0aChjKX0saS55PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYSh0LGUsbiktLjUqaS5oZWlnaHQodCxlLG4pfSksZGVsZXRlIGlbZS5fWDJfS0VZXSxkZWxldGUgaVtlLl9ZMl9LRVldLGl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKCJyZWN0YW5nbGVzIil9XX0sZS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLCJ4MiI9PT1lPyJ4IjoieTIiPT09ZT8ieSI6ZSl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24obixpLHIpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnguY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnguY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnguY2FsbCh0aGlzLG4saSxyKSxudWxsIT1pKXt2YXIgbz10aGlzLngyKCksYT1vJiZvLmFjY2Vzc29yO251bGwhPWEmJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9YMl9LRVksYSxpLG8ucG9zdFNjYWxlKX1yZXR1cm4gaSBpbnN0YW5jZW9mIFNUdC5DYXRlZ29yeSYmaS5pbm5lclBhZGRpbmcoMCkub3V0ZXJQYWRkaW5nKDApLHRoaXN9LGUucHJvdG90eXBlLngyPWZ1bmN0aW9uKHQsbil7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWDJfS0VZKTt2YXIgaT10aGlzLngoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSx0LGkmJmkuc2NhbGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKG4saSxyKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS55LmNhbGwodGhpcyk7aWYobnVsbD09aT90LnByb3RvdHlwZS55LmNhbGwodGhpcyxuKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGksciksbnVsbCE9aSl7dmFyIG89dGhpcy55MigpLGE9byYmby5hY2Nlc3NvcjtudWxsIT1hJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLGEsaSxvLnBvc3RTY2FsZSl9cmV0dXJuIGkgaW5zdGFuY2VvZiBTVHQuQ2F0ZWdvcnkmJmkuaW5uZXJQYWRkaW5nKDApLm91dGVyUGFkZGluZygwKSx0aGlzfSxlLnByb3RvdHlwZS55Mj1mdW5jdGlvbih0LG4pe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1kyX0tFWSk7dmFyIGk9dGhpcy55KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMl9LRVksdCxpJiZpLnNjYWxlLG4pLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5lbnRpdGllcygpLmZpbHRlcigoZnVuY3Rpb24obil7dmFyIGk9bi5kYXR1bSxyPW4uaW5kZXgsbz1uLmRhdGFzZXQsYT1lLngoaSxyLG8pLHM9ZS55KGkscixvKSxsPWUud2lkdGgoaSxyLG8pLGM9ZS5oZWlnaHQoaSxyLG8pO3JldHVybiBhPD10LngmJnQueDw9YStsJiZzPD10LnkmJnQueTw9cytjfSkpfSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lbnRpdHlCQm94KHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQsdGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCkpfSxlLnByb3RvdHlwZS5fZW50aXR5QkJveD1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm57eDppLngodCxlLG4pLHk6aS55KHQsZSxuKSx3aWR0aDppLndpZHRoKHQsZSxuKSxoZWlnaHQ6aS5oZWlnaHQodCxlLG4pfX0sZS5wcm90b3R5cGUubGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWw6KHRoaXMuX2xhYmVsPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKTtyZXR1cm4gbnVsbCE9dGhpcy54MigpJiYoZS54Mj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSksbnVsbCE9dGhpcy55MigpJiYoZS55Mj1FVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSksZX0sZS5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLHI9aS54KHQsZSxuKSxvPWkueSh0LGUsbik7cmV0dXJue3g6citpLndpZHRoKHQsZSxuKS8yLHk6bytpLmhlaWdodCh0LGUsbikvMn19LGUucHJvdG90eXBlLl9yZWN0YW5nbGVXaWR0aD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgU1R0LkNhdGVnb3J5KXJldHVybiB0LnJhbmdlQmFuZCgpO3ZhciBlPXQ9PT10aGlzLngoKS5zY2FsZT90aGlzLngoKS5hY2Nlc3Nvcjp0aGlzLnkoKS5hY2Nlc3NvcixuPV9UdC5zZXQoTVR0LkFycmF5LmZsYXR0ZW4odGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSgpLm1hcCgoZnVuY3Rpb24obixpKXtyZXR1cm4gZShuLGksdCkudmFsdWVPZigpfSkpfSkpKSkudmFsdWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4rdH0pKSxpPU1UdC5NYXRoLm1pbihuLDApLHI9TVR0Lk1hdGgubWF4KG4sMCksbz10LnNjYWxlKGkpO3JldHVybih0LnNjYWxlKHIpLW8pL01hdGguYWJzKHItaSl9LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IE1UdC5NYXAsZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0YSgpLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLngodCxpLG4pKSYmTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLnkodCxpLG4pKSYmTVR0Lk1hdGguaXNWYWxpZE51bWJlcihlLndpZHRoKHQsaSxuKSkmJk1UdC5NYXRoLmlzVmFsaWROdW1iZXIoZS5oZWlnaHQodCxpLG4pKT90Om51bGx9KSk7dC5zZXQobixpKX0pKSx0fSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fcmVuZGVyQXJlYS5zZWxlY3RBbGwoIi5sYWJlbC1hcmVhIikucmVtb3ZlKCksdGhpcy5fbGFiZWxzRW5hYmxlZCYmbnVsbCE9dGhpcy5sYWJlbCgpJiZNVHQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXREYXRhVG9EcmF3KCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQuX2RyYXdMYWJlbChlLG4saSl9KSl9LGUucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLG89bmV3IHlUdC5TdmdDb250ZXh0KHIubm9kZSgpKSxhPW5ldyB5VHQuQ2FjaGVNZWFzdXJlcihvKSxzPW5ldyB5VHQuV3JpdGVyKGEsbyksbD10aGlzLngoKS5zY2FsZS5yYW5nZSgpLGM9dGhpcy55KCkuc2NhbGUucmFuZ2UoKSx1PU1hdGgubWluLmFwcGx5KG51bGwsbCksaD1NYXRoLm1heC5hcHBseShudWxsLGwpLGQ9TWF0aC5taW4uYXBwbHkobnVsbCxjKSxwPU1hdGgubWF4LmFwcGx5KG51bGwsYyksZj10LmdldChlKSxtPWYubGVuZ3RoLGc9MDtnPG07ZysrKXt2YXIgXz1mW2ddO2lmKG51bGwhPV8pe3ZhciB5PSIiK3RoaXMubGFiZWwoKShfLGcsZSksdj1hLm1lYXN1cmUoeSksYj1pLngoXyxnLGUpLHg9aS55KF8sZyxlKSx3PWkud2lkdGgoXyxnLGUpLFM9aS5oZWlnaHQoXyxnLGUpO2lmKHYuaGVpZ2h0PD1TJiZ2LndpZHRoPD13KXt2YXIgTT17bWluOmIrPSh3LXYud2lkdGgpLzIsbWF4OmIrdi53aWR0aH0sRT17bWluOngrPShTLXYuaGVpZ2h0KS8yLG1heDp4K3YuaGVpZ2h0fTtpZihNLm1pbjx1fHxNLm1heD5ofHxFLm1pbjxkfHxFLm1heD5wKWNvbnRpbnVlO2lmKHRoaXMuX292ZXJsYXlMYWJlbChNLEUsZyxuLHQpKWNvbnRpbnVlO3ZhciBUPWkuZmlsbChfLGcsZSksQz0xLjYqTVR0LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsVCk8TVR0LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsVCksQT1yLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2IrIiwiK3grIikiKTtBLmNsYXNzZWQoQz8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCkscy53cml0ZSh5LHYud2lkdGgsdi5oZWlnaHQse3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciJ9LEEubm9kZSgpKX19fX0sZS5wcm90b3R5cGUuX292ZXJsYXlMYWJlbD1mdW5jdGlvbih0LGUsbixpLHIpe2Zvcih2YXIgbz10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhPXRoaXMuZGF0YXNldHMoKSxzPWk7czxhLmxlbmd0aDtzKyspZm9yKHZhciBsPWFbc10sYz1yLmdldChsKSx1PWMubGVuZ3RoLGg9cz09PWk/bisxOjA7aDx1O2grKylpZihNVHQuRE9NLmludGVyc2VjdHNCQm94KHQsZSx0aGlzLl9lbnRpdHlCQm94KGNbaF0saCxsLG8pKSlyZXR1cm4hMDtyZXR1cm4hMX0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKG1FdC5YWVBsb3QpO21UdC5SZWN0YW5nbGU9VFR0O3ZhciBDVHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KENUdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEFUdD1CTyxrVHQ9UGd0LFBUdD1wdnQsTFR0PUh3dCxJVHQ9R1N0LE5UdD1lRXQsUlR0PWZndCxPVHQ9TE10LHpUdD1YdnQsRFR0PURfdCxCVHQ9ZEV0LEhUdD1zU3QsRlR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO2UuX2xhYmVsRm9ybWF0dGVyPVBUdC5pZGVudGl0eSgpLGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5hZGRDbGFzcygic2NhdHRlci1wbG90Iik7dmFyIG49bmV3IFJUdC5FYXNpbmc7bi5zdGFydERlbGF5KDUpLG4uc3RlcER1cmF0aW9uKDI1MCksbi5tYXhUb3RhbER1cmF0aW9uKEhUdC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxlLmFuaW1hdG9yKEJUdC5BbmltYXRvci5NQUlOLG4pLGUuYXR0cigib3BhY2l0eSIsLjYpLGUuYXR0cigiZmlsbCIsKG5ldyB6VHQuQ29sb3IpLnJhbmdlKClbMF0pLGUuc2l6ZSg2KTt2YXIgaT1MVHQuY2lyY2xlKCk7cmV0dXJuIGUuc3ltYm9sKChmdW5jdGlvbigpe3JldHVybiBpfSkpLGUuX2xhYmVsQ29uZmlnPW5ldyBEVHQuTWFwLGV9cmV0dXJuIEFUdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB0LnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcy5jYWxsKHRoaXMsZSkubWFwKChmdW5jdGlvbih0KXt2YXIgZT1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5zaXplKCkpKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpO3JldHVybiB0LmRpYW1ldGVyPWUsdH0pKX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgSVR0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgTlR0LlN5bWJvbFNWR0RyYXdlcn0pLChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IE9UdC5DYW52YXNEcmF3ZXIobixOVHQubWFrZVN5bWJvbENhbnZhc0RyYXdTdGVwKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIEhUdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnN5bWJvbCgpKX0pLChmdW5jdGlvbigpe3JldHVybiBIVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS5zaXplKCkpfSkpKX0pKX0sZS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NJWkVfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX1NJWkVfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NZTUJPTF9LRVkpOih0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLnNldChlLl9TWU1CT0xfS0VZLHthY2Nlc3Nvcjp0fSksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxuPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKTtlLmQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuKHQsZSxpKSgwKShudWxsKX0sdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6ZSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihCVHQuQW5pbWF0b3IuUkVTRVQpfSl9cmV0dXJuIHQucHVzaCh7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKEJUdC5BbmltYXRvci5NQUlOKX0pLHR9LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksbj1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLGk9SFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTtyZXR1cm4gZS54PW4sZS55PWksZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3JldHVybiJ0cmFuc2xhdGUoIituKHQsZSxyKSsiLCIraSh0LGUscikrIikifSxlLmQ9dGhpcy5fY29uc3RydWN0U3ltYm9sR2VuZXJhdG9yKCksZX0sZS5wcm90b3R5cGUuX2NvbnN0cnVjdFN5bWJvbEdlbmVyYXRvcj1mdW5jdGlvbigpe3ZhciB0PUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKSxlPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSk7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXtyZXR1cm4gdChuLGkscikoZShuLGkscikpKG51bGwpfX0sZS5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm57eDp0LnBvc2l0aW9uLngtdC5kaWFtZXRlci8yLHk6dC5wb3NpdGlvbi55LXQuZGlhbWV0ZXIvMix3aWR0aDp0LmRpYW1ldGVyLGhlaWdodDp0LmRpYW1ldGVyfX0sZS5wcm90b3R5cGUuX2VudGl0eVZpc2libGVPblBsb3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj17bWluOmUudG9wTGVmdC54LG1heDplLmJvdHRvbVJpZ2h0Lnh9LGk9e21pbjplLnRvcExlZnQueSxtYXg6ZS5ib3R0b21SaWdodC55fSxyPXRoaXMuX2VudGl0eUJvdW5kcyh0KTtyZXR1cm4gRFR0LkRPTS5pbnRlcnNlY3RzQkJveChuLGkscil9LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIGU9SFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxuPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksaT1IVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zaXplKCkpO3JldHVybiB0aGlzLmVudGl0aWVzKCkuZmlsdGVyKChmdW5jdGlvbihyKXt2YXIgbz1yLmRhdHVtLGE9ci5pbmRleCxzPXIuZGF0YXNldCxsPWUobyxhLHMpLGM9bihvLGEscyksdT1pKG8sYSxzKTtyZXR1cm4gbC11LzI8PXQueCYmdC54PD1sK3UvMiYmYy11LzI8PXQueSYmdC55PD1jK3UvMn0pKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24obil7dmFyIGk9dC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMsbikscj10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5fTEFCRUxfQVJFQV9DTEFTUywhMCksbz1uZXcga1R0LlN2Z0NvbnRleHQoci5ub2RlKCkpLGE9bmV3IGtUdC5DYWNoZU1lYXN1cmVyKG8pLHM9bmV3IGtUdC5Xcml0ZXIoYSxvKTtyZXR1cm4gdGhpcy5fbGFiZWxDb25maWcuc2V0KG4se2xhYmVsQXJlYTpyLG1lYXN1cmVyOmEsd3JpdGVyOnN9KSxpfSxlLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xhYmVsQ29uZmlnLmdldChlKTtudWxsIT1uJiYobi5sYWJlbEFyZWEucmVtb3ZlKCksdGhpcy5fbGFiZWxDb25maWcuZGVsZXRlKGUpKX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGFiZWxDb25maWcuZ2V0KHQpLmxhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0pKSx0aGlzLl9sYWJlbHNFbmFibGVkJiZEVHQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXREYXRhVG9EcmF3KCksbj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7Zm9yKHZhciByPWUuZ2V0KGkpLG89ci5sZW5ndGgsYT0wO2E8bzthKyspe3ZhciBzPXJbYV07bnVsbCE9cyYmdC5fZHJhd0xhYmVsKHMsYSxpLG4pfX0pKX0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbD1mdW5jdGlvbih0LGUsbixpKXtpZihudWxsIT10LmxhYmVsKXt2YXIgcj10aGlzLl9sYWJlbENvbmZpZy5nZXQobiksbz1yLmxhYmVsQXJlYSxhPXIubWVhc3VyZXIscz1yLndyaXRlcixsPXt4OmkueCh0LGUsbikseTppLnkodCxlLG4pfSxjPUhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSkodCxlLG4pLHU9dGhpcy5fbGFiZWxGb3JtYXR0ZXIodC5sYWJlbCx0LGUsbiksaD1hLm1lYXN1cmUodSksZD10aGlzLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXMobCxjLGgpLHA9ZC5jb250YWluZXJEaW1lbnNpb25zLGY9ZC5hbGlnbm1lbnQsbT10aGlzLl9jcmVhdGVMYWJlbENvbnRhaW5lcihvLGQubGFiZWxDb250YWluZXJPcmlnaW4sZC5sYWJlbE9yaWdpbixoKTtzLndyaXRlKHUscC53aWR0aCxwLmhlaWdodCx7eEFsaWduOmYueCx5QWxpZ246Zi55fSxtLm5vZGUoKSl9fSxlLnByb3RvdHlwZS5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGxhYmVsQ29udGFpbmVyT3JpZ2luOnt4OnQueC1pLndpZHRoLzIseTp0LnktaS5oZWlnaHQvMisobjxpLmhlaWdodD9uLzIrZS5fTEFCRUxfTUFSR0lOX0ZST01fQlVCQkxFOjApfSxsYWJlbE9yaWdpbjp7eDp0LngseTp0Lnl9LGFsaWdubWVudDp7eDoiY2VudGVyIix5OiJjZW50ZXIifX19LGUucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10LmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2UueCsiLCAiK2UueSsiKSIpO3JldHVybiByLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApLHJ9LGUuX1NJWkVfS0VZPSJzaXplIixlLl9TWU1CT0xfS0VZPSJzeW1ib2wiLGUuX0xBQkVMX0FSRUFfQ0xBU1M9InNjYXR0ZXItbGFiZWwtdGV4dC1hcmVhIixlLl9MQUJFTF9NQVJHSU5fRlJPTV9CVUJCTEU9MTUsZX0pKG1FdC5YWVBsb3QpO0NUdC5TY2F0dGVyPUZUdDt2YXIgVlR0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShWVHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBVVHQ9Qk8salR0PWZndCxHVHQ9R1N0LFdUdD1KTXQscVR0PVh2dCxZVHQ9VHl0LFhUdD1zU3QsJFR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLmFkZENsYXNzKCJzZWdtZW50LXBsb3QiKSxlLmF0dHIoInN0cm9rZSIsKG5ldyBxVHQuQ29sb3IpLnJhbmdlKClbMF0pLGUuYXR0cigic3Ryb2tlLXdpZHRoIiwiMnB4IiksZX1yZXR1cm4gVVR0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdUdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFdUdC5TZWdtZW50U1ZHRHJhd2VyfSksKGZ1bmN0aW9uKCl7cmV0dXJuIFlUdC53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBTZWdtZW50IFBsb3QhIiksbnVsbH0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6bmV3IGpUdC5OdWxsfV19LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcywieDIiPT09ZT8ieCI6InkyIj09PWU/InkiOmUpfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gdC5wcm90b3R5cGUueC5jYWxsKHRoaXMpO2lmKG51bGw9PWkpdC5wcm90b3R5cGUueC5jYWxsKHRoaXMsbik7ZWxzZXt0LnByb3RvdHlwZS54LmNhbGwodGhpcyxuLGkpO3ZhciByPXRoaXMueDIoKSxvPXImJnIuYWNjZXNzb3I7bnVsbCE9byYmdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSxvLGkpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS54Mj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9YMl9LRVkpO3ZhciBuPXRoaXMueCgpO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkoZS5fWDJfS0VZLHQsbiYmbi5zY2FsZSksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gdC5wcm90b3R5cGUueS5jYWxsKHRoaXMpO2lmKG51bGw9PWkpdC5wcm90b3R5cGUueS5jYWxsKHRoaXMsbik7ZWxzZXt0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGkpO3ZhciByPXRoaXMueTIoKSxvPXImJnIuYWNjZXNzb3I7bnVsbCE9byYmdGhpcy5fYmluZFByb3BlcnR5KGUuX1kyX0tFWSxvLGkpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS55Mj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9ZMl9LRVkpO3ZhciBuPXRoaXMueSgpO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLHQsbiYmbi5zY2FsZSksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiBlLngxPVhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksZS54Mj1udWxsPT10aGlzLngyKCk/WFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKTpYVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSxlLnkxPVhUdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksZS55Mj1udWxsPT10aGlzLnkyKCk/WFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTpYVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSxlfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW50aXR5TmVhcmVzdCh0KTtyZXR1cm4gbnVsbCE9ZT9bZV06W119LGUucHJvdG90eXBlLmVudGl0aWVzSW49ZnVuY3Rpb24odCxlKXt2YXIgbixpO2lmKG51bGw9PWUpe249e21pbjp0LnRvcExlZnQueCxtYXg6dC5ib3R0b21SaWdodC54fSxpPXttaW46dC50b3BMZWZ0LnksbWF4OnQuYm90dG9tUmlnaHQueX19ZWxzZSBuPXQsaT1lO3JldHVybiB0aGlzLl9lbnRpdGllc0ludGVyc2VjdGluZyhuLGkpfSxlLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuZW50aXRpZXMoKSxvPXIubGVuZ3RoLGE9MDthPG87YSsrKXt2YXIgcz1yW2FdO3RoaXMuX2xpbmVJbnRlcnNlY3RzQm94KHMsdCxlLGkpJiZuLnB1c2gocyl9cmV0dXJuIG59LGUucHJvdG90eXBlLl9saW5lSW50ZXJzZWN0c0JveD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLG89aS54MSh0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KSxhPWkueDIodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCkscz1pLnkxKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpLGw9aS55Mih0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KTtpZihlLm1pbjw9byYmbzw9ZS5tYXgmJm4ubWluPD1zJiZzPD1uLm1heHx8ZS5taW48PWEmJmE8PWUubWF4JiZuLm1pbjw9bCYmbDw9bi5tYXgpcmV0dXJuITA7dmFyIGM9e3g6byx5OnN9LHU9e3g6YSx5Omx9LGg9W3t4OmUubWluLHk6bi5taW59LHt4OmUubWluLHk6bi5tYXh9LHt4OmUubWF4LHk6bi5tYXh9LHt4OmUubWF4LHk6bi5taW59XTtyZXR1cm4gaC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDAhPT1lJiYoci5fbGluZUludGVyc2VjdHNTZWdtZW50KGMsdSx0LGhbZS0xXSkmJnIuX2xpbmVJbnRlcnNlY3RzU2VnbWVudCh0LGhbZS0xXSxjLHUpKX0pKS5sZW5ndGg+MH0sZS5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzU2VnbWVudD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuKGUueC10LngpKihuLnktZS55KS0oZS55LXQueSkqKG4ueC1lLngpfTtyZXR1cm4gcih0LGUsbikqcih0LGUsaSk8MH0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKG1FdC5YWVBsb3QpO1ZUdC5TZWdtZW50PSRUdDt2YXIgS1R0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShLVHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBaVHQ9Qk8sSlR0PXdwdCxRVHQ9Zmd0LHRDdD1jU3QsZUN0PURfdCxuQ3Q9c1N0LGlDdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fc3RhY2tpbmdSZXN1bHQ9dEN0Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS54KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS55KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fc3RhY2tpbmdPcmRlcn0pLChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gZUN0LlN0YWNraW5nLnN0YWNrKHQsZSxuLGkpfSkpLGUuX3N0YWNrZWRFeHRlbnQ9dEN0Lm1lbVRodW5rKGUuX3N0YWNraW5nUmVzdWx0LChmdW5jdGlvbigpe3JldHVybiBlLngoKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBlLl9maWx0ZXJGb3JQcm9wZXJ0eSgieSIpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZUN0LlN0YWNraW5nLnN0YWNrZWRFeHRlbnQodCxlLG4pfSkpLGUuX2Jhc2VsaW5lVmFsdWU9MCxlLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsZS5hZGRDbGFzcygic3RhY2tlZC1hcmVhLXBsb3QiKSxlLl9iYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5bZS5fYmFzZWxpbmVWYWx1ZV19LGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQoITEpLGV9cmV0dXJuIFpUdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMpOmU/KGVDdC5XaW5kb3cud2FybigiV2FybmluZzogU3RhY2tlZCBBcmVhIFBsb3QgZG9lcyBub3Qgc3VwcG9ydCBjcm9wcGVkIHJlbmRlcmluZy4iKSx0aGlzKTp0LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFFUdC5OdWxsfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9iYXNlbGluZT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS54LmNhbGwodGhpcyk6KG51bGw9PW4/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSk6dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSxuKSx0aGlzLl9jaGVja1NhbWVEb21haW4oKSx0aGlzKX0sZS5wcm90b3R5cGUueT1mdW5jdGlvbihlLG4pe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzKToobnVsbD09bj90LnByb3RvdHlwZS55LmNhbGwodGhpcyxlKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxlLG4pLHRoaXMuX2NoZWNrU2FtZURvbWFpbigpLHRoaXMpfSxlLnByb3RvdHlwZS55T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fc3RhY2tpbmdSZXN1bHQoKTtpZihudWxsIT1uKXt2YXIgaT1uLmdldCh0KTtpZihudWxsIT1pKXt2YXIgcj1pLmdldChTdHJpbmcoZSkpO2lmKG51bGwhPXIpcmV0dXJuIHIub2Zmc2V0fX19LGUucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj10LHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLmRvd25zYW1wbGluZ0VuYWJsZWQuY2FsbCh0aGlzKTooZUN0LldpbmRvdy53YXJuKCJXYXJuaW5nOiBTdGFja2VkIEFyZWEgUGxvdCBkb2VzIG5vdCBzdXBwb3J0IGRvd25zYW1wbGluZyIpLHRoaXMpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCkuc2NhbGUuc2NhbGUodGhpcy5fYmFzZWxpbmVWYWx1ZSksZT17eDE6MCx5MTp0LHgyOnRoaXMud2lkdGgoKSx5Mjp0fTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLGUpfSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCksZT10JiZ0LnNjYWxlO251bGwhPWUmJihlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSxlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tTYW1lRG9tYWluKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9zdGFja2VkRXh0ZW50KCldOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jaGVja1NhbWVEb21haW49ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIHQ9dGhpcy5kYXRhc2V0cygpLG49dGhpcy54KCkuYWNjZXNzb3IsaT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEpUdC5zZXQodC5kYXRhKCkubWFwKChmdW5jdGlvbihlLGkpe3JldHVybiBlQ3QuU3RhY2tpbmcubm9ybWFsaXplS2V5KG4oZSxpLHQpKX0pKSkudmFsdWVzKCl9KSkscj1lLl9kb21haW5LZXlzKHQsbik7aS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGghPT1yLmxlbmd0aH0pKSYmZUN0LldpbmRvdy53YXJuKCJ0aGUgZG9tYWlucyBhY3Jvc3MgdGhlIGRhdGFzZXRzIGFyZSBub3QgdGhlIHNhbWUuIFBsb3QgbWF5IHByb2R1Y2UgdW5pbnRlbmRlZCBiZWhhdmlvci4iKX19LGUuX2RvbWFpbktleXM9ZnVuY3Rpb24odCxlKXt2YXIgbj1KVHQuc2V0KCk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpPXQuZGF0YSgpLHI9aS5sZW5ndGgsbz0wO288cjtvKyspe24uYWRkKGUoaVtvXSxvLHQpKX19KSksbi52YWx1ZXMoKX0sZS5wcm90b3R5cGUuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW5DdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksbj10aGlzLnkoKS5hY2Nlc3NvcixpPXRoaXMueCgpLmFjY2Vzc29yLHI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlQ3QuU3RhY2tpbmcubm9ybWFsaXplS2V5KGkodCxlLG4pKX0sbz10aGlzLl9zdGFja2luZ1Jlc3VsdCgpO3JldHVybltlLGZ1bmN0aW9uKGUsaSxhKXt2YXIgcz0rbihlLGksYSksbD1vLmdldChhKS5nZXQocihlLGksYSkpLm9mZnNldDtyZXR1cm4gdC55KCkuc2NhbGUuc2NhbGUocytsKX0sZnVuY3Rpb24oZSxuLGkpe3ZhciBhPW8uZ2V0KGkpLmdldChyKGUsbixpKSkub2Zmc2V0O3JldHVybiB0LnkoKS5zY2FsZS5zY2FsZShhKX1dfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49dGhpcy5fY29vcmRpbmF0ZVByb2plY3RvcnMoKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IoblswXSxuWzFdLG5bMl0pLGV9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10LnByb3RvdHlwZS5fcGl4ZWxQb2ludC5jYWxsKHRoaXMsZSxuLGkpLG89dGhpcy54KCkuYWNjZXNzb3IoZSxuLGkpLGE9dGhpcy55KCkuYWNjZXNzb3IoZSxuLGkpLHM9dGhpcy55KCkuc2NhbGUuc2NhbGUoK2ErdGhpcy5fc3RhY2tpbmdSZXN1bHQoKS5nZXQoaSkuZ2V0KGVDdC5TdGFja2luZy5ub3JtYWxpemVLZXkobykpLm9mZnNldCk7cmV0dXJue3g6ci54LHk6c319LGV9KShwRXQuQXJlYSk7S1R0LlN0YWNrZWRBcmVhPWlDdDt2YXIgckN0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShyQ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvQ3Q9Qk8sYUN0PVBndCxzQ3Q9cHZ0LGxDdD1jU3QsY0N0PURfdCx1Q3Q9WUV0LGhDdD1zU3QsZEN0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPSJ2ZXJ0aWNhbCIpO3ZhciBuPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBuLl9leHRyZW1hRm9ybWF0dGVyPXNDdC5pZGVudGl0eSgpLG4uX3N0YWNraW5nUmVzdWx0PWxDdC5tZW1UaHVuaygoZnVuY3Rpb24oKXtyZXR1cm4gbi5kYXRhc2V0cygpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucG9zaXRpb24oKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBuLmxlbmd0aCgpLmFjY2Vzc29yfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX3N0YWNraW5nT3JkZXJ9KSwoZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIGNDdC5TdGFja2luZy5zdGFjayh0LGUsbixpKX0pKSxuLl9zdGFja2VkRXh0ZW50PWxDdC5tZW1UaHVuayhuLl9zdGFja2luZ1Jlc3VsdCwoZnVuY3Rpb24oKXtyZXR1cm4gbi5wb3NpdGlvbigpLmFjY2Vzc29yfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2ZpbHRlckZvclByb3BlcnR5KG4uX2lzVmVydGljYWw/InkiOiJ4Iil9KSwoZnVuY3Rpb24odCxlLG4pe3JldHVybiBjQ3QuU3RhY2tpbmcuc3RhY2tlZEV4dGVudCh0LGUsbil9KSksbi5hZGRDbGFzcygic3RhY2tlZC1iYXItcGxvdCIpLG4uX3N0YWNraW5nT3JkZXI9ImJvdHRvbXVwIixufXJldHVybiBvQ3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuc3RhY2tpbmdPcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGFja2luZ09yZGVyOih0aGlzLl9zdGFja2luZ09yZGVyPXQsdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpcyl9LGUucHJvdG90eXBlLmV4dHJlbWFGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX2V4dHJlbWFGb3JtYXR0ZXI6KHRoaXMuX2V4dHJlbWFGb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9sYWJlbEFyZWE9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKHVDdC5CYXIuX0xBQkVMX0FSRUFfQ0xBU1MsITApO3ZhciBlPW5ldyBhQ3QuU3ZnQ29udGV4dCh0aGlzLl9sYWJlbEFyZWEubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgYUN0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JpdGVyPW5ldyBhQ3QuV3JpdGVyKHRoaXMuX21lYXN1cmVyLGUpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dC5wcm90b3R5cGUuX2RyYXdMYWJlbHMuY2FsbCh0aGlzKSx0aGlzLl9sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCk7dmFyIGk9K3RoaXMuYmFzZWxpbmVWYWx1ZSgpLHI9dGhpcy5wb3NpdGlvbigpLnNjYWxlLG89dGhpcy5sZW5ndGgoKS5zY2FsZSxhPWNDdC5TdGFja2luZy5zdGFja2VkRXh0ZW50cyh0aGlzLl9zdGFja2luZ1Jlc3VsdCgpKSxzPWEubWluaW11bUV4dGVudHMsbD1bXSxjPWZ1bmN0aW9uKHQsZSl7dmFyIGE9bi5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IoKSxzPW4ud2lkdGgoKSxjPW4uaGVpZ2h0KCk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0LmV4dGVudCE9PWkpe3ZhciB1PW4uZXh0cmVtYUZvcm1hdHRlcigpKHQuZXh0ZW50KSxoPW4uX21lYXN1cmVyLm1lYXN1cmUodSksZD10LnN0YWNrZWREYXR1bSxwPWQub3JpZ2luYWxEYXR1bSxmPWQub3JpZ2luYWxJbmRleCxtPWQub3JpZ2luYWxEYXRhc2V0O2lmKCFuLl9pc0RhdHVtT25TY3JlZW4oYSxzLGMscCxmLG0pKXJldHVybjt2YXIgZz1oQ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5hdHRyKHVDdC5CYXIuX0JBUl9USElDS05FU1NfS0VZKSkocCxmLG0pLF89by5zY2FsZSh0LmV4dGVudCkseT1uLl9nZXRQb3NpdGlvbkF0dHIoci5zY2FsZSh0LmF4aXNWYWx1ZSksZykrZy8yLHY9ZShuLl9pc1ZlcnRpY2FsP3t4OnkseTpffTp7eDpfLHk6eX0saCxnKSxiPShmdW5jdGlvbih0LGUsaSl7dmFyIHI9ZS50b3BMZWZ0LG89ci54LGE9ci55LHM9ZS5ib3R0b21SaWdodC54LWUudG9wTGVmdC54LGw9ZS5ib3R0b21SaWdodC55LWUudG9wTGVmdC55LGM9bi5faXNWZXJ0aWNhbD9zPmk6bD5pO2lmKCFjKXt2YXIgdT1uLl9sYWJlbEFyZWEuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbysiLCAiK2ErIikiKTt1LmNsYXNzZWQoInN0YWNrZWQtYmFyLWxhYmVsIiwhMCksbi5fd3JpdGVyLndyaXRlKHQscyxsLHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSx1Lm5vZGUoKSl9cmV0dXJuIGN9KSh1LHt0b3BMZWZ0OnYsYm90dG9tUmlnaHQ6e3g6di54K2gud2lkdGgseTp2LnkraC5oZWlnaHR9fSxnKTtsLnB1c2goYil9fSkpfTtjKGEubWF4aW11bUV4dGVudHMsKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1uLl9pc1ZlcnRpY2FsP2kud2lkdGg6aS5oZWlnaHQ7cmV0dXJue3g6bi5faXNWZXJ0aWNhbD90Lngtby8yOnQueCtlLl9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUix5Om4uX2lzVmVydGljYWw/dC55LShuLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgpOnQueS1vLzJ9fSkpLGMocywoZnVuY3Rpb24odCxpLHIpe3ZhciBvPW4uX2lzVmVydGljYWw/aS53aWR0aDppLmhlaWdodDtyZXR1cm57eDpuLl9pc1ZlcnRpY2FsP3QueC1vLzI6dC54LShuLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgpLHk6bi5faXNWZXJ0aWNhbD90LnkrZS5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVI6dC55LW8vMn19KSksbC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSYmdGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksaT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscj10aGlzLmxlbmd0aCgpLnNjYWxlLG89dGhpcy5sZW5ndGgoKS5hY2Nlc3NvcixhPXRoaXMucG9zaXRpb24oKS5hY2Nlc3NvcixzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY0N0LlN0YWNraW5nLm5vcm1hbGl6ZUtleShhKHQsZSxuKSl9LGw9dGhpcy5fc3RhY2tpbmdSZXN1bHQoKSxjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5zY2FsZShsLmdldChuKS5nZXQocyh0LGUsbikpLm9mZnNldCl9LHU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByLnNjYWxlKCtvKHQsZSxuKStsLmdldChuKS5nZXQocyh0LGUsbikpLm9mZnNldCl9LGg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyh1KHQsZSxuKS1jKHQsZSxuKSl9O25bdGhpcy5faXNWZXJ0aWNhbD8iaGVpZ2h0Ijoid2lkdGgiXT1oO3ZhciBkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4rbyh0LGUsbik8MD9jKHQsZSxuKTp1KHQsZSxuKX07cmV0dXJuIG5baV09ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9pc1ZlcnRpY2FsP2QodCxuLGkpOmQodCxuLGkpLWgodCxuLGkpfSxufSxlLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0odGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiKT9bdGhpcy5fc3RhY2tlZEV4dGVudCgpXTp0LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9tZWFzdXJlci5yZXNldCgpfSxlLl9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUj01LGV9KSh1Q3QuQmFyKTtyQ3QuU3RhY2tlZEJhcj1kQ3Q7dmFyIHBDdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkocEN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZkN0PUJPLG1DdD1EX3QsZ0N0PXNTdCxfQ3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2Nvbm5lY3RvcnNFbmFibGVkPSExLGUuYWRkQ2xhc3MoIndhdGVyZmFsbC1wbG90IiksZX1yZXR1cm4gZkN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbm5lY3RvcnNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Nvbm5lY3RvcnNFbmFibGVkOih0aGlzLl9jb25uZWN0b3JzRW5hYmxlZD10LHRoaXMpfSxlLnByb3RvdHlwZS50b3RhbD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9UT1RBTF9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fVE9UQUxfS0VZLHQsbnVsbCksdGhpcyl9LGUucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9jb25uZWN0b3JBcmVhLnNlbGVjdEFsbCgibGluZSIpLnJlbW92ZSgpLHRoaXMuX2Nvbm5lY3RvcnNFbmFibGVkJiZtQ3QuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdDb25uZWN0b3JzKCl9KSx0KX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihuKXt2YXIgaT10LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxuKTtyZXR1cm4gdGhpcy5fY29ubmVjdG9yQXJlYT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5fQ09OTkVDVE9SX0FSRUFfQ0xBU1MsITApLGl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9leHRlbnRdOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciBuPXRoaXMsaT10LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxyPXRoaXMueSgpLnNjYWxlLG89Z0N0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMudG90YWwoKSk7cmV0dXJuIG51bGw9PXRoaXMuYXR0cigieSIpJiYoaS55PWZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1uLnkoKS5hY2Nlc3Nvcih0LGUsaSk7aWYobyh0LGUsaSkpcmV0dXJuIE1hdGgubWluKHIuc2NhbGUoYSksci5zY2FsZSgwKSk7dmFyIHM9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiByLnNjYWxlKGE8MD9zLWE6cyk7dmFyIGw9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIHIuc2NhbGUocz5sP3M6bCl9KSxudWxsPT10aGlzLmF0dHIoImhlaWdodCIpJiYoaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBhPW8odCxlLGkpLHM9bi55KCkuYWNjZXNzb3IodCxlLGkpO2lmKGEpcmV0dXJuIE1hdGguYWJzKHIuc2NhbGUocyktci5zY2FsZSgwKSk7dmFyIGw9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiBNYXRoLmFicyhyLnNjYWxlKGwpLXIuc2NhbGUobC1zKSk7dmFyIGM9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIE1hdGguYWJzKHIuc2NhbGUobCktci5zY2FsZShjKSl9KSxpLmNsYXNzPWZ1bmN0aW9uKHQsaSxyKXt2YXIgYT0iIjtyZXR1cm4gbnVsbCE9bi5hdHRyKCJjbGFzcyIpJiYoYT1uLmF0dHIoImNsYXNzIikuYWNjZXNzb3IodCxpLHIpKyIgIiksbyh0LGkscik/YStlLl9CQVJfVE9UQUxfQ0xBU1M6YSsobi55KCkuYWNjZXNzb3IodCxpLHIpPjA/ZS5fQkFSX0dST1dUSF9DTEFTUzplLl9CQVJfREVDTElORV9DTEFTUyl9LGl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlU3VidG90YWxzKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLl9jYWxjdWxhdGVTdWJ0b3RhbHNBbmRFeHRlbnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFLGk9MCxyPSExLG89dC5kYXRhKCksYT1vLmxlbmd0aCxzPTA7czxhO3MrKyl7dmFyIGw9b1tzXSxjPXRoaXMueSgpLmFjY2Vzc29yKGwscyx0KSx1PXRoaXMudG90YWwoKS5hY2Nlc3NvcihsLHMsdCk7aWYodSYmMCE9PXN8fChpKz1jKSx0aGlzLl9zdWJ0b3RhbHMucHVzaChpKSxpPGUmJihlPWkpLGk+biYmKG49aSksdSYmKGM8ZSYmKGU9YyksYz5uJiYobj1jKSksIXImJnUpe2Zvcih2YXIgaD1jLWksZD0wO2Q8dGhpcy5fc3VidG90YWxzLmxlbmd0aDtkKyspdGhpcy5fc3VidG90YWxzW2RdKz1oO3I9ITAsaSs9aCxlKz1oLG4rPWh9fXRoaXMuX2V4dGVudD1bZSxuXX0sZS5wcm90b3R5cGUuX2RyYXdDb25uZWN0b3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5kYXRhc2V0cygpWzBdLGk9MTtpPG4uZGF0YSgpLmxlbmd0aDtpKyspe3ZhciByPWktMSxvPW4uZGF0YSgpW2ldLGE9bi5kYXRhKClbcl0scz10LngoYSxyLG4pLGw9dC54KG8saSxuKSt0LndpZHRoKG8saSxuKSxjPXQueShvLGksbik7KHRoaXMuX3N1YnRvdGFsc1tpXT4wJiZ0aGlzLl9zdWJ0b3RhbHNbaV0+dGhpcy5fc3VidG90YWxzW3JdfHx0aGlzLl9zdWJ0b3RhbHNbaV08MCYmdGhpcy5fc3VidG90YWxzW2ldPj10aGlzLl9zdWJ0b3RhbHNbcl0pJiYoYz10LnkobyxpLG4pK3QuaGVpZ2h0KG8saSxuKSksdGhpcy5fY29ubmVjdG9yQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKGUuX0NPTk5FQ1RPUl9DTEFTUywhMCkuYXR0cigieDEiLHMpLmF0dHIoIngyIixsKS5hdHRyKCJ5MSIsYykuYXR0cigieTIiLGMpfX0sZS5wcm90b3R5cGUuX3VwZGF0ZVN1YnRvdGFscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YXNldHMoKTtpZih0Lmxlbmd0aD4wKXt2YXIgZT10W3QubGVuZ3RoLTFdO3RoaXMuX3N1YnRvdGFscz1uZXcgQXJyYXksdGhpcy5fY2FsY3VsYXRlU3VidG90YWxzQW5kRXh0ZW50KGUpfX0sZS5fQkFSX0RFQ0xJTkVfQ0xBU1M9IndhdGVyZmFsbC1kZWNsaW5lIixlLl9CQVJfR1JPV1RIX0NMQVNTPSJ3YXRlcmZhbGwtZ3Jvd3RoIixlLl9CQVJfVE9UQUxfQ0xBU1M9IndhdGVyZmFsbC10b3RhbCIsZS5fQ09OTkVDVE9SX0NMQVNTPSJjb25uZWN0b3IiLGUuX0NPTk5FQ1RPUl9BUkVBX0NMQVNTPSJjb25uZWN0b3ItYXJlYSIsZS5fVE9UQUxfS0VZPSJ0b3RhbCIsZX0pKFlFdC5CYXIpO3BDdC5XYXRlcmZhbGw9X0N0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPUJPO2UuX19leHBvcnRTdGFyKHBFdCx0KSxlLl9fZXhwb3J0U3RhcihZRXQsdCksZS5fX2V4cG9ydFN0YXIobFN0LHQpLGUuX19leHBvcnRTdGFyKFhFdCx0KSxlLl9fZXhwb3J0U3RhcihmRXQsdCksZS5fX2V4cG9ydFN0YXIoZVR0LHQpLGUuX19leHBvcnRTdGFyKG1UdCx0KSxlLl9fZXhwb3J0U3RhcihDVHQsdCksZS5fX2V4cG9ydFN0YXIoVlR0LHQpLGUuX19leHBvcnRTdGFyKEtUdCx0KSxlLl9fZXhwb3J0U3RhcihyQ3QsdCksZS5fX2V4cG9ydFN0YXIocEN0LHQpfSkoZEV0KTt2YXIgeUN0LHZDdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9mdW5jdGlvbiBiQ3QodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5sb2FkS2V5PSIiLHRoaXMuZGF0YVRvTG9hZD1bXSx0aGlzLmdldERhdGFMb2FkTmFtZT10PT5TdHJpbmcodCksdGhpcy5kYXRhTG9hZGluZz0hMSx0aGlzLmRhdGFMb2FkZWRBdExlYXN0T25jZT0hMSx0aGlzLl9pc0Nvbm5lY3RlZD0hMSx0aGlzLl9kYXRhTG9hZFN0YXRlPW5ldyBNYXAsdGhpcy5fY2FuY2VsbGVyPW5ldyB4Tyx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwsdGhpcy5fbG9hZERhdGE9Q2UuZXhwb3J0cy50aHJvdHRsZSh0aGlzLl9sb2FkRGF0YUltcGwsMTAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSEwfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9pc0Nvbm5lY3RlZD0hMX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57YWN0aXZlOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9sb2FkRGF0YUlmQWN0aXZlIn0sX2lzQ29ubmVjdGVkOnt0eXBlOkJvb2xlYW59LGxvYWRLZXk6e3R5cGU6U3RyaW5nfSxkYXRhVG9Mb2FkOnt0eXBlOkFycmF5fSxnZXREYXRhTG9hZE5hbWU6e3R5cGU6T2JqZWN0fSxsb2FkRGF0YUNhbGxiYWNrOnt0eXBlOk9iamVjdH0scmVxdWVzdERhdGE6e3R5cGU6T2JqZWN0fX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9kYXRhVG9Mb2FkQ2hhbmdlZChfaXNDb25uZWN0ZWQsIGRhdGFUb0xvYWQuKikiXX1vbkxvYWRGaW5pc2goKXt9cmVsb2FkKCl7dGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2xvYWREYXRhKCl9cmVzZXQoKXtudWxsIT10aGlzLl9sb2FkRGF0YUFzeW5jJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCksdGhpcy5fY2FuY2VsbGVyJiZ0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5fZGF0YUxvYWRTdGF0ZSYmdGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfV9kYXRhVG9Mb2FkQ2hhbmdlZCgpe3RoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfWRldGFjaGVkKCl7bnVsbCE9dGhpcy5fbG9hZERhdGFBc3luYyYmKGNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwpfV9sb2FkRGF0YUlmQWN0aXZlKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2xvYWREYXRhKCl9X2xvYWREYXRhSW1wbCgpe3RoaXMuYWN0aXZlJiYobnVsbCE9PXRoaXMuX2xvYWREYXRhQXN5bmMmJmNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPXNldFRpbWVvdXQodGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO3RoaXMuZGF0YUxvYWRpbmc9ITA7Y29uc3QgZT10aGlzLmRhdGFUb0xvYWQuZmlsdGVyKCh0PT57Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTtyZXR1cm4hdGhpcy5fZGF0YUxvYWRTdGF0ZS5oYXMoZSl9KSk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTt0aGlzLl9kYXRhTG9hZFN0YXRlLnNldChlLHlDdC5MT0FESU5HKX1jb25zdCBuPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdHtpdGVtOmUsZGF0YTpufT10LnZhbHVlLGk9dGhpcy5nZXREYXRhTG9hZE5hbWUoZSk7dGhpcy5fZGF0YUxvYWRTdGF0ZS5zZXQoaSx5Q3QuTE9BREVEKSx0aGlzLmxvYWREYXRhQ2FsbGJhY2sodGhpcyxlLG4pfSkpLGk9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYoIXQuY2FuY2VsbGVkKXtjb25zdCB0PW5ldyBTZXQoZS5tYXAoKHQ9PnRoaXMuZ2V0RGF0YUxvYWROYW1lKHQpKSkpO3RoaXMuZGF0YVRvTG9hZC5zb21lKChlPT50Lmhhcyh0aGlzLmdldERhdGFMb2FkTmFtZShlKSkpKSYmdGhpcy5vbkxvYWRGaW5pc2goKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwsdGhpcy5kYXRhTG9hZGVkQXRMZWFzdE9uY2U9ITB9QXJyYXkuZnJvbSh0aGlzLl9kYXRhTG9hZFN0YXRlLnZhbHVlcygpKS5pbmNsdWRlcyh5Q3QuTE9BRElORyl8fCh0aGlzLmRhdGFMb2FkaW5nPSExKX0pKTt0aGlzLnJlcXVlc3REYXRhKGUsbiwoKCk9Pmkodm9pZCAwKSkpfSkpKSl9fX1PYmplY3QuZGVmaW5lUHJvcGVydHkodkN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx2Q3QudmVyc2lvbj0iMy45LjAiLChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Qk87dC5BbmltYXRvcnM9Zmd0LHQuQXhlcz1BZ3QsdC5Db21wb25lbnRzPXR4dCx0LkNvbmZpZ3M9Q3l0LHQuRm9ybWF0dGVycz1wdnQsdC5SZW5kZXJDb250cm9sbGVyPXpfdCx0LlJlbmRlclBvbGljaWVzPVF5dCx0LlN5bWJvbEZhY3Rvcmllcz1Id3QsdC5EaXNwYXRjaGVycz1yeHQsdC5EcmF3ZXJzPUxNdCx0LkludGVyYWN0aW9ucz1ueHQsdC5QbG90cz1kRXQsdC5TY2FsZXM9WHZ0LHQuVXRpbHM9RF90LGUuX19leHBvcnRTdGFyKGR2dCx0KSx0LlRpbWVJbnRlcnZhbD1ZdnQuVGltZUludGVydmFsLGUuX19leHBvcnRTdGFyKE9fdCx0KSxlLl9fZXhwb3J0U3Rhcih5d3QsdCksZS5fX2V4cG9ydFN0YXIoZlN0LHQpLHQudmVyc2lvbj12Q3QudmVyc2lvbixlLl9fZXhwb3J0U3RhcihheHQsdCksZS5fX2V4cG9ydFN0YXIoR1N0LHQpLGUuX19leHBvcnRTdGFyKHZ4dCx0KSxlLl9fZXhwb3J0U3RhcihQeHQsdCksZS5fX2V4cG9ydFN0YXIobUV0LHQpLGUuX19leHBvcnRTdGFyKHNTdCx0KSxlLl9fZXhwb3J0U3RhcihQYnQsdCksZS5fX2V4cG9ydFN0YXIobGJ0LHQpfSkoSU8pLChmdW5jdGlvbih0KXt0W3QuTE9BRElORz0wXT0iTE9BRElORyIsdFt0LkxPQURFRD0xXT0iTE9BREVEIn0pKHlDdHx8KHlDdD17fSkpO2NvbnN0IHhDdD1be2NoYXJhY3Rlcjoi4pe8IixtZXRob2Q6SU8uU3ltYm9sRmFjdG9yaWVzLnNxdWFyZX0se2NoYXJhY3Rlcjoi4peGIixtZXRob2Q6SU8uU3ltYm9sRmFjdG9yaWVzLmRpYW1vbmR9LHtjaGFyYWN0ZXI6IuKWsiIsbWV0aG9kOklPLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZX0se2NoYXJhY3Rlcjoi4piFIixtZXRob2Q6SU8uU3ltYm9sRmFjdG9yaWVzLnN0YXJ9LHtjaGFyYWN0ZXI6IuKcmiIsbWV0aG9kOklPLlN5bWJvbEZhY3Rvcmllcy5jcm9zc31dO3ZhciB3Q3Q7IShmdW5jdGlvbih0KXt0LlNURVA9InN0ZXAiLHQuUkVMQVRJVkU9InJlbGF0aXZlIix0LldBTExfVElNRT0id2FsbF90aW1lIn0pKHdDdHx8KHdDdD17fSkpO2Z1bmN0aW9uIFNDdCh0KXtyZXR1cm4gZT0+e2xldCBuLGk9TWF0aC5hYnMoZSk7cmV0dXJuIGk8MWUtMTUmJihpPTApLG49RHkoaT49MWU0fHxpPjAmJmk8LjAxPyIuIit0KyJ+ZSI6Ii4iK3QrIn5nIiksbihlKX19Y29uc3QgTUN0PUR5KCIuNH5zIik7ZnVuY3Rpb24gRUN0KCl7bGV0IHQ9bmV3IElPLlNjYWxlcy5MaW5lYXI7dC50aWNrR2VuZXJhdG9yKElPLlNjYWxlcy5UaWNrR2VuZXJhdG9ycy5pbnRlZ2VyVGlja0dlbmVyYXRvcigpKTtsZXQgZT1uZXcgSU8uQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpO3JldHVybiBlLmZvcm1hdHRlcihNQ3QpLHtzY2FsZTp0LGF4aXM6ZSxhY2Nlc3Nvcjp0PT50LnN0ZXB9fWxldCBUQ3Q9SU8uRm9ybWF0dGVycy50aW1lKCIlYSAlYiAlZSwgJUg6JU06JVMiKTtsZXQgQ0N0PSh0LGUsbik9PntpZihudWxsIT10LnJlbGF0aXZlKXJldHVybiB0LnJlbGF0aXZlO2xldCBpPW4uZGF0YSgpO3JldHVybigrdC53YWxsX3RpbWUtKGkubGVuZ3RoPjA/K2lbMF0ud2FsbF90aW1lOjApKS8zNmU1fSxBQ3Q9dD0+e2xldCBlPSIiLG49TWF0aC5mbG9vcih0LzI0KTt0LT0yNCpuLG4mJihlKz1uKyJkICIpO2xldCBpPU1hdGguZmxvb3IodCk7dC09aSx0Kj02MCwoaXx8bikmJihlKz1pKyJoICIpO2xldCByPU1hdGguZmxvb3IodCk7cmV0dXJuIHQtPXIsdCo9NjAsKHJ8fGl8fG4pJiYoZSs9cisibSAiKSxlK01hdGguZmxvb3IodCkrInMifTtmdW5jdGlvbiBrQ3QodCl7c3dpdGNoKHQpe2Nhc2Ugd0N0LlNURVA6cmV0dXJuIEVDdCgpO2Nhc2Ugd0N0LldBTExfVElNRTpyZXR1cm4oZnVuY3Rpb24gZSgpe2xldCB0PW5ldyBJTy5TY2FsZXMuVGltZTtyZXR1cm57c2NhbGU6dCxheGlzOm5ldyBJTy5BeGVzLlRpbWUodCwiYm90dG9tIiksYWNjZXNzb3I6dD0+dC53YWxsX3RpbWV9fSkoKTtjYXNlIHdDdC5SRUxBVElWRTpyZXR1cm4oZnVuY3Rpb24gbigpe2xldCB0PW5ldyBJTy5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IElPLkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKSxhY2Nlc3NvcjpDQ3R9fSkoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW52YWxpZCB4VHlwZTogIit0KX19Y29uc3QgUEN0PVsxLDAsMCwxLDAsMF07ZnVuY3Rpb24gTEN0KHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1bXTtmb3IoO3QmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDspaWYoZS5wdXNoKHQpLHQuYXNzaWduZWRTbG90KXQ9dC5hc3NpZ25lZFNsb3Q7ZWxzZSBpZih0LnBhcmVudEVsZW1lbnQpdD10LnBhcmVudEVsZW1lbnQ7ZWxzZXtjb25zdCBlPXQucGFyZW50Tm9kZTt0PWUgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50P2UuaG9zdDplIT09dD9lOm51bGx9cmV0dXJuIGV9KSh0KTtsZXQgaT1QQ3Qscj1udWxsO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9SU8uVXRpbHMuRE9NLmdldEVsZW1lbnRUcmFuc2Zvcm0odCk7aWYobnVsbCE9ZSl7Y29uc3Qgbj10LmNsaWVudFdpZHRoLzIscj10LmNsaWVudEhlaWdodC8yO2k9SU8uVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShpLFtuLHJdKSxpPUlPLlV0aWxzLk1hdGgubXVsdGlwbHlNYXRyaXgoaSxJTy5VdGlscy5NYXRoLmludmVydE1hdHJpeChlKSksaT1JTy5VdGlscy5NYXRoLm11bHRpcGx5VHJhbnNsYXRlKGksWy1uLC1yXSl9bGV0IG49dC5zY3JvbGxMZWZ0LG89dC5zY3JvbGxUb3A7bnVsbCE9PXImJnQhPT1yfHwobi09dC5vZmZzZXRMZWZ0K3QuY2xpZW50TGVmdCxvLT10Lm9mZnNldFRvcCt0LmNsaWVudFRvcCxyPXQub2Zmc2V0UGFyZW50KSxpPUlPLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUoaSxbbixvXSl9cmV0dXJuIGl9Y2xhc3MgSUN0IGV4dGVuZHMgSU8uVXRpbHMuVHJhbnNsYXRvcntjb21wdXRlUG9zaXRpb24odCxlKXtjb25zdCBuPXt4OnQseTplfSxpPUxDdCh0aGlzLl9yb290RWxlbWVudCk7aWYobnVsbD09aSlyZXR1cm4gbjtyZXR1cm4gSU8uVXRpbHMuTWF0aC5hcHBseVRyYW5zZm9ybShpLG4pfX1jbGFzcyBOQ3QgZXh0ZW5kcyBJTy5EaXNwYXRjaGVycy5Nb3VzZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9ldmVudFRhcmdldD10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSx0aGlzLl90cmFuc2xhdG9yPW5ldyBJQ3QodC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCkpfXN0YXRpYyBnZXREaXNwYXRjaGVyKHQpe2NvbnN0IGU9dC5yb290KCkucm9vdEVsZW1lbnQoKTtsZXQgbj1lW05DdC5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBufHwobj1uZXcgTkN0KHQpLGVbTkN0Ll9ESVNQQVRDSEVSX0tFWV09biksbn19Y2xhc3MgUkN0IGV4dGVuZHMgSU8uRGlzcGF0Y2hlcnMuVG91Y2h7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5fZXZlbnRUYXJnZXQ9dC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCksdGhpcy5fdHJhbnNsYXRvcj1uZXcgSUN0KHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpKX1zdGF0aWMgZ2V0RGlzcGF0Y2hlcih0KXtjb25zdCBlPXQucm9vdCgpLnJvb3RFbGVtZW50KCk7bGV0IG49ZVtSQ3QuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnx8KG49bmV3IFJDdCh0KSxlW1JDdC5fRElTUEFUQ0hFUl9LRVldPW4pLG59fUlPLkludGVyYWN0aW9uLnByb3RvdHlwZS5faXNJbnNpZGVDb21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA8PXQueCYmMDw9dC55JiZ0Lng8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpJiZ0Lnk8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX07Y2xhc3MgT0N0IGV4dGVuZHMgSU8uSW50ZXJhY3Rpb25zLlBvaW50ZXJ7X2FuY2hvcih0KXtjb25zdCBlPXRoaXM7ZS5faXNBbmNob3JlZD0hMCxlLl9tb3VzZURpc3BhdGNoZXI9TkN0LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKGUuX21vdXNlTW92ZUNhbGxiYWNrKSxlLl90b3VjaERpc3BhdGNoZXI9UkN0LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydChlLl90b3VjaFN0YXJ0Q2FsbGJhY2spfX12YXIgekN0OyEoZnVuY3Rpb24odCl7dC5BVVRPPSJhdXRvIix0LkJPVFRPTT0iYm90dG9tIix0LlJJR0hUPSJyaWdodCJ9KSh6Q3R8fCh6Q3Q9e30pKTtjb25zdCBEQ3Q9e2JveFNoYWRvdzoiMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgLjMpIixvcGFjaXR5OjAscG9zaXRpb246ImZpeGVkIix3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0iLHpJbmRleDo1fTtsZXQgQkN0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5wb3NpdGlvbj16Q3QuQVVUTyx0aGlzLm1pbkRpc3RGcm9tRWRnZT0xNSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9cmVhZHkoKXt0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9YXR0YWNoZWQoKXt0aGlzLl90dW5uZWw9dGhpcy5fY3JlYXRlVHVubmVsKCksdGhpcy5faGlkZU9uQmx1cj0oKT0+e2RvY3VtZW50LmhpZGRlbiYmdGhpcy5oaWRlKCl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1kZXRhY2hlZCgpe3RoaXMuaGlkZSgpLHRoaXMuX3JlbW92ZVR1bm5lbCh0aGlzLl90dW5uZWwpLHRoaXMuX3R1bm5lbD1udWxsLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1jb250ZW50KCl7cmV0dXJuIHRoaXMuX3R1bm5lbC5zaGFkb3dSb290fWhpZGUoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fdHVubmVsLnN0eWxlLm9wYWNpdHk9MH11cGRhdGVBbmRQb3NpdGlvbih0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9yYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX3JlcG9zaXRpb25JbXBsKHQpfSkpfV9yZXBvc2l0aW9uSW1wbCh0KXtjb25zdCBlPXRoaXMuX3R1bm5lbCxuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9d2luZG93LmlubmVySGVpZ2h0LG89ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxhPW4udG9wLHM9YStuLmhlaWdodCxsPWkuaGVpZ2h0KzIwO2xldCBjPW51bGwsdT1NYXRoLm1heCh0aGlzLm1pbkRpc3RGcm9tRWRnZSxuLmxlZnQpLGg9bnVsbCxkPWE7dGhpcy5wb3NpdGlvbj09ekN0LlJJR0hUP3U9bi5yaWdodDooZD1zKzIwLG88dStpLndpZHRoK3RoaXMubWluRGlzdEZyb21FZGdlJiYodT1udWxsLGg9dGhpcy5taW5EaXN0RnJvbUVkZ2UpKSx0aGlzLnBvc2l0aW9uPT16Q3QuQVVUTyYmbi50b3AtbD4wJiZyPG4udG9wK24uaGVpZ2h0K2wmJihkPW51bGwsYz1yLWErMjApO2NvbnN0IHA9e2NvbnRhaW46ImNvbnRlbnQiLG9wYWNpdHk6MSxsZWZ0OnU/YCR7dX1weGA6bnVsbCxyaWdodDpoP2Ake2h9cHhgOm51bGwsdG9wOmQ/YCR7ZH1weGA6bnVsbCxib3R0b206Yz9gJHtjfXB4YDpudWxsfTtDZS5leHBvcnRzLmlzRXF1YWwodGhpcy5fc3R5bGVDYWNoZSxwKXx8KE9iamVjdC5hc3NpZ24oZS5zdHlsZSxwKSx0aGlzLl9zdHlsZUNhY2hlPXApfV9jcmVhdGVUdW5uZWwoKXtpZighdGhpcy5jb250ZW50Q29tcG9uZW50TmFtZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVxdWlyZSBgY29udGVudENvbXBvbmVudE5hbWVgIHRvIGJlIGEgbmFtZSBvZiBhIFBvbHltZXIgY29tcG9uZW50Iik7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY29udGVudENvbXBvbmVudE5hbWUpO3JldHVybiBPYmplY3QuYXNzaWduKHQuc3R5bGUsREN0KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLHR9X3JlbW92ZVR1bm5lbCh0KXtkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpfX07dChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQkN0LnByb3RvdHlwZSwiY29udGVudENvbXBvbmVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQkN0LnByb3RvdHlwZSwicG9zaXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQkN0LnByb3RvdHlwZSwibWluRGlzdEZyb21FZGdlIix2b2lkIDApLEJDdD10KFtpKCJ2ei1jaGFydC10b29sdGlwIildLEJDdCk7Y29uc3QgSEN0PUR5KCIuMn5lIiksRkN0PUR5KCIuNH5yIiksVkN0PUR5KCIsfiIpO2Z1bmN0aW9uIFVDdCh0KXtpZigwPT09dClyZXR1cm4iMCI7Y29uc3QgZT1NYXRoLmFicyh0KTtyZXR1cm4gZT49MWU0fHxlPC4wMDE/SEN0KHQpOkZDdCh0KX1jb25zdCBqQ3Q9e2Zvcm1hdFRpY2s6VUN0LGZvcm1hdFNob3J0OlVDdCxmb3JtYXRSZWFkYWJsZSh0KXtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj0xZTR8fGU8LjAwMT9IQ3QodCk6VkN0KHQpfSxmb3JtYXRMb25nOlZDdH07RHkoIjAuM35zIiksRHkoIiwuM35mIiksRHkoIi40fiIpO2NvbnN0IEdDdD16QSgpLnRpY2tGb3JtYXQoKTtsZXQgV0N0O2NvbnN0IHFDdD17Zm9ybWF0VGljazp0PT5HQ3QobmV3IERhdGUodCkpLGZvcm1hdFNob3J0OnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKFdDdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pLGZvcm1hdFJlYWRhYmxlOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKFdDdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pLGZvcm1hdExvbmc6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoV0N0LHt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCIsZnJhY3Rpb25hbFNlY29uZERpZ2l0czozfSl9O3ZhciBZQ3Q7IShmdW5jdGlvbih0KXt0W3QuTElORUFSPTBdPSJMSU5FQVIiLHRbdC5MT0cxMD0xXT0iTE9HMTAiLHRbdC5USU1FPTJdPSJUSU1FIn0pKFlDdHx8KFlDdD17fSkpO2NsYXNzIFhDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1qQ3R9dHJhbnNmb3JtKHQsZSxuKXtjb25zdFtpLHJdPXQsbz1yLWksW2Esc109ZTtyZXR1cm4gMD09PW8/YToocy1hKS9vKihuLWkpK2F9Zm9yd2FyZCh0LGUsbil7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHQsZSxuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oZSx0LG4pfW5pY2VEb21haW4odCl7bGV0W2Usbl09dDtpZihuPGUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7aWYobj09PWUpcmV0dXJuIDA9PT1lP1stMSwxXTplPDA/WzIqZSwwXTpbMCwyKmVdO2NvbnN0IGk9Y0UoKSxyPS4wNSoobi1lK051bWJlci5FUFNJTE9OKSxbbyxhXT1pLmRvbWFpbihbZS1yLG4rcl0pLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bbyxhXX10aWNrcyh0LGUpe3JldHVybiBjRSgpLmRvbWFpbih0KS50aWNrcyhlKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19Y2xhc3MgJEN0e2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPWpDdH10cmFuc2Zvcm0odCl7cmV0dXJuIE1hdGgubG9nMTAodD4wP3Q6TnVtYmVyLk1JTl9WQUxVRSl9dW50cmFuc2Zvcm0odCl7cmV0dXJuIE1hdGguZXhwKHQvTWF0aC5MT0cxMEUpfWZvcndhcmQodCxlLG4pe2lmKG48PTApcmV0dXJuIGVbMF07Y29uc3RbaSxyXT10LFtvLGFdPWUscz10aGlzLnRyYW5zZm9ybShpKSxsPXRoaXMudHJhbnNmb3JtKHIpLXMsYz1hLW87cmV0dXJuIG49dGhpcy50cmFuc2Zvcm0obiksYy8obCtOdW1iZXIuRVBTSUxPTikqKG4tcykrb31yZXZlcnNlKHQsZSxuKXtjb25zdFtpLHJdPXQsW28sYV09ZSxzPXRoaXMudHJhbnNmb3JtKGkpLGw9dGhpcy50cmFuc2Zvcm0ocik7cmV0dXJuIHRoaXMudW50cmFuc2Zvcm0oKGwtcykvKGEtbytOdW1iZXIuRVBTSUxPTikqKG4tbykrcyl9bmljZURvbWFpbih0KXtjb25zdFtlLG5dPXQ7aWYoZT5uKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBpbnB1dDogbWluIGlzIGxhcmdlciB0aGFuIG1heCIpO2NvbnN0IGk9TWF0aC5tYXgoZSxOdW1iZXIuTUlOX1ZBTFVFKSxyPU1hdGgubWF4KG4sTnVtYmVyLk1JTl9WQUxVRSk7cmV0dXJuIG48PTA/W051bWJlci5NSU5fVkFMVUUsMV06W01hdGgubWF4KE51bWJlci5NSU5fVkFMVUUsLjUqaSksMipyXX10aWNrcyh0LGUpe2NvbnN0IG49dFswXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMF0saT10WzFdPD0wP051bWJlci5NSU5fVkFMVUU6dFsxXSxyPXlFKCkuZG9tYWluKFtuLGldKS50aWNrcyhlKTtyZXR1cm4gci5sZW5ndGg/cjp0fWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpJiZ0PjB9fWNsYXNzIEtDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2NhbGU9ekEoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9cUN0fWZvcndhcmQodCxlLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKShuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkuaW52ZXJ0KG4pLmdldFRpbWUoKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltlLmdldFRpbWUoKSxuLmdldFRpbWUoKV19dGlja3ModCxlKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MoZSkubWFwKCh0PT50LmdldFRpbWUoKSkpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1jbGFzcyBaQ3QgZXh0ZW5kcyBJTy5TY2FsZXMuTGluZWFye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9pZ25vcmVPdXRsaWVyPSExLHRoaXMucGFkUHJvcG9ydGlvbiguMil9c2V0VmFsdWVQcm92aWRlckZvckRvbWFpbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbj10LHRoaXN9X25pY2VEb21haW4odCxlKXtjb25zdFtuLGldPXQ7cmV0dXJuKGZ1bmN0aW9uIHIodCl7c3dpdGNoKHQpe2Nhc2UgWUN0LkxJTkVBUjpyZXR1cm4gbmV3IFhDdDtjYXNlIFlDdC5MT0cxMDpyZXR1cm4gbmV3ICRDdDtjYXNlIFlDdC5USU1FOnJldHVybiBuZXcgS0N0O2RlZmF1bHQ6dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFNjYWxlVHlwZSAke3R9IG5vdCBzdXBwb3J0ZWQuYCl9fSkoWUN0LkxJTkVBUikubmljZURvbWFpbihbbixpXSl9X2dldFVuYm91bmRlZEV4dGVudCh0KXtjb25zdCBlPXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKHQpO2xldCBuPXRoaXMuX2RlZmF1bHRFeHRlbnQoKTtpZigwIT09ZS5sZW5ndGgpe2NvbnN0IHQ9W0lPLlV0aWxzLk1hdGgubWluKGUsblswXSksSU8uVXRpbHMuTWF0aC5tYXgoZSxuWzFdKV07bj10aGlzLl9uaWNlRG9tYWluKHQpfXJldHVybiBufV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtjb25zdCBlPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKGUpfWV4dGVudE9mVmFsdWVzKHQpe2NvbnN0IGU9dC5maWx0ZXIoKHQ9PklPLlV0aWxzLk1hdGguaXNWYWxpZE51bWJlcih0KSkpO2xldCBuPWU7aWYodGhpcy5pZ25vcmVPdXRsaWVyKCkpe2NvbnN0IHQ9ZS5zb3J0KCgodCxlKT0+dC1lKSksaT1yYyh0LC4wNSkscj1yYyh0LC45NSk7bj1lLmZpbHRlcigodD0+dD49aSYmdDw9cikpfWNvbnN0IGk9R2wobik7cmV0dXJuIG51bGw9PWlbMF18fG51bGw9PWlbMV0/W106aX1pZ25vcmVPdXRsaWVyKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfX1jbGFzcyBKQ3QgZXh0ZW5kcyBJTy5RdWFudGl0YXRpdmVTY2FsZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5faWdub3JlT3V0bGllcj0hMX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKHQpe3JldHVybiB0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPXQsdGhpc31pZ25vcmVPdXRsaWVyKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtjb25zdCBlPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKGUpfX1jb25zdCBRQ3Q9TWF0aC5wb3coMiwtMTA3NCk7ZnVuY3Rpb24gdEF0KHQpe3JldHVybiBNYXRoLmxvZzEwKHQpfWZ1bmN0aW9uIGVBdCh0KXtyZXR1cm4gTWF0aC5wb3coMTAsdCl9Y2xhc3MgbkF0IGV4dGVuZHMgSkN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9kM0xvZ1NjYWxlPXlFKCksdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zY2FsZSh0KXtyZXR1cm4gdDw9MD9OYU46dGhpcy5fZDNMb2dTY2FsZSh0KX1pbnZlcnQodCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUuaW52ZXJ0KHQpfXNjYWxlVHJhbnNmb3JtYXRpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUodCl9aW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9Z2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKXtyZXR1cm4gdGhpcy5kb21haW4oKX1zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbih0KXt0aGlzLmRvbWFpbih0KX1nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCgpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfV9nZXREb21haW4oKXtyZXR1cm4gdGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbn1fc2V0RG9tYWluKHQpe3RoaXMuX3VudHJhbnNmb3JtZWREb21haW49dDtjb25zdFtlLG5dPXQ7c3VwZXIuX3NldERvbWFpbihbTWF0aC5tYXgoUUN0LGUpLG5dKX1fbmljZURvbWFpbih0LGUpe2NvbnN0W24saV09dCxyPU1hdGgubWF4KHRBdChRQ3QpLHRBdChuKSksbz10QXQoaSksYT1vLXIscz1hP2EqdGhpcy5wYWRQcm9wb3J0aW9uKCk6MTtyZXR1cm5bZUF0KE1hdGgubWF4KHRBdChRQ3QpLHItcykpLGVBdChvK3MpXX1fZ2V0VW5ib3VuZGVkRXh0ZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCk7bGV0IG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7Y29uc3QgdD1bSU8uVXRpbHMuTWF0aC5taW4oZSxuWzBdKSxJTy5VdGlscy5NYXRoLm1heChlLG5bMV0pXTtuPXRoaXMuX25pY2VEb21haW4odCl9cmV0dXJuIG59X2dldEFsbEluY2x1ZGVkVmFsdWVzKHQ9ITEpe3JldHVybiBzdXBlci5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKS5tYXAoKHQ9PnQ+MD90OlFDdCkpfV9kZWZhdWx0RXh0ZW50KCl7cmV0dXJuWzEsMTBdfV9iYWNraW5nU2NhbGVEb21haW4odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNMb2dTY2FsZS5kb21haW4oKToodGhpcy5fZDNMb2dTY2FsZS5kb21haW4odCksdGhpcyl9X2dldFJhbmdlKCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUucmFuZ2UoKX1fc2V0UmFuZ2UodCl7dGhpcy5fZDNMb2dTY2FsZS5yYW5nZSh0KX1kZWZhdWx0VGlja3MoKXtyZXR1cm4gdGhpcy5fZDNMb2dTY2FsZS50aWNrcygxKX10aWNrcygpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnRpY2tzKCl9ZXh0ZW50T2ZWYWx1ZXModCl7Y29uc3QgZT10LmZpbHRlcigodD0+SU8uVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0PjApKTtsZXQgbj1lO2lmKHRoaXMuaWdub3JlT3V0bGllcigpKXtjb25zdCB0PWUubWFwKHRBdCkuc29ydCgoKHQsZSk9PnQtZSkpLGk9cmModCwuMDUpLHI9cmModCwuOTUpO249dC5maWx0ZXIoKHQ9PnQ+PWkmJnQ8PXIpKS5tYXAoZUF0KX1jb25zdCBpPUdsKG4pO3JldHVybiBudWxsPT1pWzBdfHxudWxsPT1pWzFdP1tdOml9fWNsYXNzIGlBdCBleHRlbmRzIElPLkNvbXBvbmVudHMuU2VsZWN0aW9uQm94TGF5ZXJ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5lYXNlRm49cWYsdGhpcy5fYW5pbWF0aW9uVGltZT03NTAsdGhpcy54U2NhbGUodCksdGhpcy55U2NhbGUoZSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uPW5ldyBJTy5JbnRlcmFjdGlvbnMuRHJhZyx0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uPW5ldyBJTy5JbnRlcmFjdGlvbnMuQ2xpY2ssdGhpcy5zZXR1cENhbGxiYWNrcygpLHRoaXMudW56b29tTWV0aG9kPW4sdGhpcy5vbkRldGFjaCgoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyl9KSksdGhpcy5vbkFuY2hvcigoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKX0pKX1pbnRlcmFjdGlvblN0YXJ0KHQpe3RoaXMub25TdGFydD10fWludGVyYWN0aW9uRW5kKHQpe3RoaXMub25FbmQ9dH1kcmFnSW50ZXJhY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufXNldHVwQ2FsbGJhY2tzKCl7bGV0IHQ9ITE7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KCh0PT57dGhpcy5ib3VuZHMoe3RvcExlZnQ6dCxib3R0b21SaWdodDp0fSksdGhpcy5vblN0YXJ0KCl9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZygoKGUsbik9Pnt0aGlzLmJvdW5kcyh7dG9wTGVmdDplLGJvdHRvbVJpZ2h0Om59KSx0aGlzLmJveFZpc2libGUoITApLHQ9ITB9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZCgoKGUsbik9Pnt0aGlzLmJveFZpc2libGUoITEpLHRoaXMuYm91bmRzKHt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn0pLHQ/dGhpcy56b29tKCk6dGhpcy5vbkVuZCgpLHQ9ITF9KSksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5vbkRvdWJsZUNsaWNrKHRoaXMudW56b29tLmJpbmQodGhpcykpfWFuaW1hdGlvblRpbWUodCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5pbWF0aW9uVGltZTtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJhbmltYXRpb25UaW1lIGNhbm5vdCBiZSBuZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9hbmltYXRpb25UaW1lPXQsdGhpc31lYXNlKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiZWFzZSBmdW5jdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gMD09PXQoMCkmJjE9PT10KDEpfHxJTy5VdGlscy5XaW5kb3cud2FybigiRWFzaW5nIGZ1bmN0aW9uIGRvZXMgbm90IG1haW50YWluIGludmFyaWFudCBmKDApPT0wICYmIGYoMSk9PTEuIEJhZCBiZWhhdmlvciBtYXkgcmVzdWx0LiIpLHRoaXMuZWFzZUZuPXQsdGhpc316b29tKCl7bGV0IHQ9dGhpcy54RXh0ZW50KClbMF0udmFsdWVPZigpLGU9dGhpcy54RXh0ZW50KClbMV0udmFsdWVPZigpLG49dGhpcy55RXh0ZW50KClbMV0udmFsdWVPZigpLGk9dGhpcy55RXh0ZW50KClbMF0udmFsdWVPZigpO3QhPT1lJiZuIT09aSYmdGhpcy5pbnRlcnBvbGF0ZVpvb20odCxlLG4saSl9dW56b29tKCl7bGV0IHQ9dGhpcy54U2NhbGUoKTt0Ll9kb21haW5NaW49bnVsbCx0Ll9kb21haW5NYXg9bnVsbDtsZXQgZT10Ll9nZXRFeHRlbnQoKTt0aGlzLnhTY2FsZSgpLmRvbWFpbihlKSx0aGlzLnVuem9vbU1ldGhvZCgpfWlzWm9vbWluZyh0KXt0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCghdCksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5lbmFibGVkKCF0KX1pbnRlcnBvbGF0ZVpvb20odCxlLG4saSl7bGV0IHI9dGhpcy54U2NhbGUoKS5kb21haW4oKVswXS52YWx1ZU9mKCksbz10aGlzLnhTY2FsZSgpLmRvbWFpbigpWzFdLnZhbHVlT2YoKSxhPXRoaXMueVNjYWxlKCkuZG9tYWluKClbMF0udmFsdWVPZigpLHM9dGhpcy55U2NhbGUoKS5kb21haW4oKVsxXS52YWx1ZU9mKCksbD10aGlzLmVhc2VGbixjPSh0LGUsbik9PnJwKHQsZSkobChuKSk7dGhpcy5pc1pvb21pbmcoITApO2xldCB1PURhdGUubm93KCksaD0oKT0+e2xldCBsPURhdGUubm93KCksZD0wPT09dGhpcy5fYW5pbWF0aW9uVGltZT8xOk1hdGgubWluKDEsKGwtdSkvdGhpcy5fYW5pbWF0aW9uVGltZSkscD1jKHIsdCxkKSxmPWMobyxlLGQpLG09YyhhLG4sZCksZz1jKHMsaSxkKTt0aGlzLnhTY2FsZSgpLmRvbWFpbihbcCxmXSksdGhpcy55U2NhbGUoKS5kb21haW4oW20sZ10pLGQ8MT9JTy5VdGlscy5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoaCk6KHRoaXMub25FbmQoKSx0aGlzLmlzWm9vbWluZyghMSkpfTtoKCl9fXZhciByQXQsb0F0LGFBdDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5QQU5OSU5HPTJdPSJQQU5OSU5HIn0pKHJBdHx8KHJBdD17fSkpO2NsYXNzIHNBdCBleHRlbmRzIElPLkNvbXBvbmVudHMuR3JvdXB7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5zdGF0ZT1yQXQuTk9ORSx0aGlzLnBhblN0YXJ0Q2FsbGJhY2s9bmV3IElPLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuRW5kQ2FsbGJhY2s9bmV3IElPLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuWm9vbT1uZXcgSU8uSW50ZXJhY3Rpb25zLlBhblpvb20odCxlKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkubW91c2VGaWx0ZXIoKHQ9PnNBdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5wYW5ab29tLndoZWVsRmlsdGVyKHRoaXMuY2FuU2Nyb2xsWm9vbSksdGhpcy5kcmFnWm9vbUxheWVyPW5ldyBpQXQodCxlLG4pLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5tb3VzZUZpbHRlcigodD0+IXNBdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5hcHBlbmQodGhpcy5kcmFnWm9vbUxheWVyKTtjb25zdCBpPXRoaXMub25XaGVlbC5iaW5kKHRoaXMpO3RoaXMub25BbmNob3IoKCgpPT57dGhpcy5fbW91c2VEaXNwYXRjaGVyPUlPLkRpc3BhdGNoZXJzLk1vdXNlLmdldERpc3BhdGNoZXIodGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uV2hlZWwoaSksdGhpcy5wYW5ab29tLmF0dGFjaFRvKHRoaXMpfSkpLHRoaXMub25EZXRhY2goKCgpPT57dGhpcy5wYW5ab29tLmRldGFjaEZyb20odGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyJiYodGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZldoZWVsKGkpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsKX0pKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnU3RhcnQoKCgpPT57dGhpcy5zdGF0ZT09ckF0Lk5PTkUmJnRoaXMuc2V0U3RhdGUockF0LlBBTk5JTkcpfSkpLHRoaXMucGFuWm9vbS5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdFbmQoKCgpPT57dGhpcy5zdGF0ZT09ckF0LlBBTk5JTkcmJnRoaXMuc2V0U3RhdGUockF0Lk5PTkUpfSkpLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdTdGFydCgoKCk9Pnt0aGlzLnN0YXRlPT1yQXQuTk9ORSYmdGhpcy5zZXRTdGF0ZShyQXQuRFJBR19aT09NSU5HKX0pKSx0aGlzLmRyYWdab29tTGF5ZXIuZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnRW5kKCgoKT0+e3RoaXMuc3RhdGU9PXJBdC5EUkFHX1pPT01JTkcmJnRoaXMuc2V0U3RhdGUockF0Lk5PTkUpfSkpfW9uV2hlZWwodCxlKXtpZih0aGlzLmNhblNjcm9sbFpvb20oZSkpcmV0dXJuO2NvbnN0IG49dGhpcy5lbGVtZW50KCk7aWYoIW4uc2VsZWN0KCIuaGVscCIpLmVtcHR5KCkpcmV0dXJuO2NvbnN0IGk9bi5hcHBlbmQoImRpdiIpLmNsYXNzZWQoImhlbHAiLCEwKTtpLmFwcGVuZCgic3BhbiIpLnRleHQoIkFsdCArIFNjcm9sbCB0byBab29tIiksaS5vbigiYW5pbWF0aW9uZW5kIiwoKCk9PntpLnJlbW92ZSgpfSkpfXN0YXRpYyBpc1BhbktleSh0KXtyZXR1cm4gQm9vbGVhbih0LmFsdEtleSl8fEJvb2xlYW4odC5zaGlmdEtleSl9Y2FuU2Nyb2xsWm9vbSh0KXtyZXR1cm4gdC5hbHRLZXl9c2V0U3RhdGUodCl7aWYodGhpcy5zdGF0ZT09dClyZXR1cm47Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGU9dCx0aGlzLnJvb3QoKS5yZW1vdmVDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKGUpKSx0aGlzLnJvb3QoKS5hZGRDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKHQpKSxlPT1yQXQuUEFOTklORyYmdGhpcy5wYW5FbmRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCksdD09ckF0LlBBTk5JTkcmJnRoaXMucGFuU3RhcnRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCl9c3RhdGVDbGFzc05hbWUodCl7c3dpdGNoKHQpe2Nhc2UgckF0LlBBTk5JTkc6cmV0dXJuInBhbm5pbmciO2Nhc2UgckF0LkRSQUdfWk9PTUlORzpyZXR1cm4iZHJhZy16b29taW5nIjtjYXNlIHJBdC5OT05FOmRlZmF1bHQ6cmV0dXJuIiJ9fW9uUGFuU3RhcnQodCl7dGhpcy5wYW5TdGFydENhbGxiYWNrLmFkZCh0KX1vblBhbkVuZCh0KXt0aGlzLnBhbkVuZENhbGxiYWNrLmFkZCh0KX1vblNjcm9sbFpvb20odCl7dGhpcy5wYW5ab29tLm9uWm9vbUVuZCh0KX1vbkRyYWdab29tU3RhcnQodCl7dGhpcy5kcmFnWm9vbUxheWVyLmludGVyYWN0aW9uU3RhcnQodCl9b25EcmFnWm9vbUVuZCh0KXt0aGlzLmRyYWdab29tTGF5ZXIuaW50ZXJhY3Rpb25FbmQodCl9fSEoZnVuY3Rpb24odCl7dFt0LlRFWFQ9MF09IlRFWFQiLHRbdC5ET009MV09IkRPTSJ9KShvQXR8fChvQXQ9e30pKSwoZnVuY3Rpb24odCl7dC5MT0c9ImxvZyIsdC5MSU5FQVI9ImxpbmVhciJ9KShhQXR8fChhQXQ9e30pKTtjbGFzcyBsQXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyx1KXt0aGlzLmRpcnR5RGF0YXNldHM9bmV3IFNldCx0aGlzLnNlcmllc05hbWVzPVtdLHRoaXMubmFtZTJkYXRhc2V0cz17fSx0aGlzLmNvbG9yU2NhbGU9aSx0aGlzLnRvb2x0aXA9cix0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX2lnbm9yZVlPdXRsaWVycz0hMSx0aGlzLmxhc3RQb2ludHNEYXRhc2V0PW5ldyBJTy5EYXRhc2V0LHRoaXMubmFuRGF0YXNldD1uZXcgSU8uRGF0YXNldCx0aGlzLnlWYWx1ZUFjY2Vzc29yPWUsdGhpcy5zeW1ib2xGdW5jdGlvbj1jLHRoaXMuX2RlZmF1bHRYUmFuZ2U9cyx0aGlzLl9kZWZhdWx0WVJhbmdlPWwsdGhpcy50b29sdGlwQ29sdW1ucz1vLHRoaXMuYnVpbGRDaGFydCh0LGUsbixhLHUpfWJ1aWxkQ2hhcnQodCxlLG4saSxyKXt0aGlzLmRlc3Ryb3koKTtjb25zdCBvPXQoKTt0aGlzLnhBY2Nlc3Nvcj1vLmFjY2Vzc29yLHRoaXMueFNjYWxlPW8uc2NhbGUsdGhpcy54QXhpcz1vLmF4aXMsdGhpcy54QXhpcy5tYXJnaW4oMSkudGlja0xhYmVsUGFkZGluZygzKSxyJiZ0aGlzLnhBeGlzLmZvcm1hdHRlcihyKSx0aGlzLnlTY2FsZT1sQXQuZ2V0WVNjYWxlRnJvbVR5cGUobiksdGhpcy55U2NhbGUuc2V0VmFsdWVQcm92aWRlckZvckRvbWFpbigoKCk9PnRoaXMuZ2V0VmFsdWVzRm9yWUF4aXNEb21haW5Db21wdXRlKCkpKSx0aGlzLnlBeGlzPW5ldyBJTy5BeGVzLk51bWVyaWModGhpcy55U2NhbGUsImxlZnQiKTtsZXQgYT1TQ3QoMyk7dGhpcy55QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZyg1KS5mb3JtYXR0ZXIoYSksdGhpcy55QXhpcy51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbighMCksdGhpcy5maWxsQXJlYT1pO2NvbnN0IHM9bmV3IHNBdCh0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSwoKCk9PnRoaXMucmVzZXREb21haW4oKSkpO3RoaXMudG9vbHRpcEludGVyYWN0aW9uPXRoaXMuY3JlYXRlVG9vbHRpcEludGVyYWN0aW9uKHMpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudD1uZXcgSU8uQ29tcG9uZW50O2NvbnN0IGw9dGhpcy5idWlsZFBsb3QodGhpcy54U2NhbGUsdGhpcy55U2NhbGUsaSk7dGhpcy5ncmlkbGluZXM9bmV3IElPLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKTtsZXQgYz1udWxsO24hPT1hQXQuTE9HJiYoYz1uZXcgSU8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigiaG9yaXpvbnRhbCIpLGMuc2NhbGUodGhpcy55U2NhbGUpLnZhbHVlKDApKTtsZXQgdT1uZXcgSU8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigidmVydGljYWwiKTt1LnNjYWxlKHRoaXMueFNjYWxlKS52YWx1ZSgwKSx0aGlzLmNlbnRlcj1uZXcgSU8uQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsYyx1LGwsdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LHNdKSx0aGlzLmNlbnRlci5hZGRDbGFzcygibWFpbiIpLHRoaXMub3V0ZXI9bmV3IElPLkNvbXBvbmVudHMuVGFibGUoW1t0aGlzLnlBeGlzLHRoaXMuY2VudGVyXSxbbnVsbCx0aGlzLnhBeGlzXV0pfWJ1aWxkUGxvdCh0LGUsbil7biYmKHRoaXMubWFyZ2luQXJlYVBsb3Q9bmV3IElPLlBsb3RzLkFyZWEsdGhpcy5tYXJnaW5BcmVhUGxvdC54KHRoaXMueEFjY2Vzc29yLHQpLHRoaXMubWFyZ2luQXJlYVBsb3QueShuLmhpZ2hlckFjY2Vzc29yLGUpLHRoaXMubWFyZ2luQXJlYVBsb3QueTAobi5sb3dlckFjY2Vzc29yKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJnaW5BcmVhUGxvdC5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoInN0cm9rZS13aWR0aCIsMCkpLHRoaXMuc21vb3RoZWRBY2Nlc3Nvcj10PT50LnNtb290aGVkO2xldCBpPW5ldyBJTy5QbG90cy5MaW5lO2kueCh0aGlzLnhBY2Nlc3Nvcix0KSxpLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxpLmF0dHIoInN0cm9rZSIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLm1ldGFkYXRhKCkubmFtZSkpKSx0aGlzLmxpbmVQbG90PWksdGhpcy5zZXR1cFRvb2x0aXBzKGkpO2xldCByPW5ldyBJTy5QbG90cy5MaW5lO2lmKHIueCh0aGlzLnhBY2Nlc3Nvcix0KSxyLnkodGhpcy5zbW9vdGhlZEFjY2Vzc29yLGUpLHIuYXR0cigic3Ryb2tlIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5uYW1lKSkpLHRoaXMuc21vb3RoTGluZVBsb3Q9cix0aGlzLnN5bWJvbEZ1bmN0aW9uKXtjb25zdCBuPW5ldyBJTy5QbG90cy5TY2F0dGVyO24ueCh0aGlzLnhBY2Nlc3Nvcix0KSxuLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxuLmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksbi5hdHRyKCJvcGFjaXR5IiwxKSxuLnNpemUoOCksbi5zeW1ib2woKCh0LGUsbik9PnRoaXMuc3ltYm9sRnVuY3Rpb24obi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3Q9bn1sZXQgbz1uZXcgSU8uUGxvdHMuU2NhdHRlcjtvLngodGhpcy54QWNjZXNzb3IsdCksby55KHRoaXMueVZhbHVlQWNjZXNzb3IsZSksby5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQubmFtZSkpKSxvLmF0dHIoIm9wYWNpdHkiLDEpLG8uc2l6ZSg4KSxvLmRhdGFzZXRzKFt0aGlzLmxhc3RQb2ludHNEYXRhc2V0XSksdGhpcy5zY2F0dGVyUGxvdD1vO2xldCBhPW5ldyBJTy5QbG90cy5TY2F0dGVyO2EueCh0aGlzLnhBY2Nlc3Nvcix0KSxhLnkoKHQ9PnQuZGlzcGxheVkpLGUpLGEuYXR0cigiZmlsbCIsKHQ9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh0Lm5hbWUpKSksYS5hdHRyKCJvcGFjaXR5IiwxKSxhLnNpemUoMTIpLGEuZGF0YXNldHMoW3RoaXMubmFuRGF0YXNldF0pLGEuc3ltYm9sKElPLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZSksdGhpcy5uYW5EaXNwbGF5PWE7Y29uc3Qgcz1bYSxvLHIsaV07cmV0dXJuIHRoaXMubWFyZ2luQXJlYVBsb3QmJnMucHVzaCh0aGlzLm1hcmdpbkFyZWFQbG90KSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmcy5wdXNoKHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90KSxuZXcgSU8uQ29tcG9uZW50cy5Hcm91cChzKX1pZ25vcmVZT3V0bGllcnModCl7dCE9PXRoaXMuX2lnbm9yZVlPdXRsaWVycyYmKHRoaXMuX2lnbm9yZVlPdXRsaWVycz10LHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy55U2NhbGUuaWdub3JlT3V0bGllcih0KSx0aGlzLnJlc2V0WURvbWFpbigpKX1nZXRWYWx1ZXNGb3JZQXhpc0RvbWFpbkNvbXB1dGUoKXtjb25zdCB0PXRoaXMuZ2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCk7cmV0dXJuIENlLmV4cG9ydHMuZmxhdHRlbkRlZXAodGhpcy5kYXRhc2V0cy5tYXAoKGU9PnQubWFwKCh0PT5lLmRhdGEoKS5tYXAoKG49PnQobiwtMSxlKSkpKSkpKSkuZmlsdGVyKGlzRmluaXRlKX11cGRhdGVTcGVjaWFsRGF0YXNldHMoKXtjb25zdCB0PXRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpO2xldCBlPXRoaXMuZGF0YXNldHMubWFwKChlPT57bGV0IG49bnVsbCxpPWUuZGF0YSgpLmZpbHRlcigobj0+IWlzTmFOKHQobiwtMSxlKSkpKTtpZihpLmxlbmd0aD4wKXtuPWlbaS5sZW5ndGgtMV0sbi5uYW1lPWUubWV0YWRhdGEoKS5uYW1lLG4ucmVsYXRpdmU9Q0N0KG4sMCxlKX1yZXR1cm4gbn0pKS5maWx0ZXIoKHQ9Pm51bGwhPXQpKTt0aGlzLmxhc3RQb2ludHNEYXRhc2V0LmRhdGEoZSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMubWFwKHRoaXMuY3JlYXRlU2FtcGxlZERhdGFzZXRGb3JNYXJrZXJzKSk7bGV0IG49Q2UuZXhwb3J0cy5mbGF0dGVuKHRoaXMuZGF0YXNldHMubWFwKChlPT57bGV0IG49bnVsbCxpPWUuZGF0YSgpLHI9MDtmb3IoO3I8aS5sZW5ndGgmJm51bGw9PW47KWlzTmFOKHQoaVtyXSwtMSxlKSl8fChuPXQoaVtyXSwtMSxlKSkscisrO251bGw9PW4mJihuPTApO2xldCBvPVtdO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspaXNOYU4odChpW3JdLC0xLGUpKT8oaVtyXS5uYW1lPWUubWV0YWRhdGEoKS5uYW1lLGlbcl0uZGlzcGxheVk9bixpW3JdLnJlbGF0aXZlPUNDdChpW3JdLDAsZSksby5wdXNoKGlbcl0pKTpuPXQoaVtyXSwtMSxlKTtyZXR1cm4gb30pKSk7dGhpcy5uYW5EYXRhc2V0LmRhdGEobil9cmVzZXREb21haW4oKXt0aGlzLnJlc2V0WERvbWFpbigpLHRoaXMucmVzZXRZRG9tYWluKCl9cmVzZXRYRG9tYWluKCl7bGV0IHQ7aWYobnVsbCE9dGhpcy5fZGVmYXVsdFhSYW5nZSl0PXRoaXMuX2RlZmF1bHRYUmFuZ2U7ZWxzZXtjb25zdCBlPXRoaXMueFNjYWxlO2UuX2RvbWFpbk1pbj1udWxsLGUuX2RvbWFpbk1heD1udWxsLHQ9ZS5fZ2V0RXh0ZW50KCl9dGhpcy54U2NhbGUuZG9tYWluKHQpfXJlc2V0WURvbWFpbigpe251bGwhPXRoaXMuX2RlZmF1bHRZUmFuZ2U/dGhpcy55U2NhbGUuZG9tYWluKHRoaXMuX2RlZmF1bHRZUmFuZ2UpOih0aGlzLnlTY2FsZS5hdXRvRG9tYWluKCksdGhpcy55U2NhbGUuZG9tYWluKHRoaXMueVNjYWxlLmRvbWFpbigpKSl9Z2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCl7Y29uc3QgdD1bdGhpcy5nZXRZQXhpc0FjY2Vzc29yKCldO3JldHVybiB0aGlzLmZpbGxBcmVhJiZ0LnB1c2godGhpcy5maWxsQXJlYS5sb3dlckFjY2Vzc29yLHRoaXMuZmlsbEFyZWEuaGlnaGVyQWNjZXNzb3IpLHR9Z2V0WUF4aXNBY2Nlc3Nvcigpe3JldHVybiB0aGlzLnNtb290aGluZ0VuYWJsZWQ/dGhpcy5zbW9vdGhlZEFjY2Vzc29yOnRoaXMueVZhbHVlQWNjZXNzb3J9Y3JlYXRlVG9vbHRpcEludGVyYWN0aW9uKHQpe2NvbnN0IGU9bmV3IE9DdCxuPSgpPT57ZS5lbmFibGVkKCExKSx0aGlzLmhpZGVUb29sdGlwcygpfSxpPSgpPT5lLmVuYWJsZWQoITApO3JldHVybiB0Lm9uUGFuU3RhcnQobiksdC5vbkRyYWdab29tU3RhcnQobiksdC5vblBhbkVuZChpKSx0Lm9uRHJhZ1pvb21FbmQoaSksdC5vblNjcm9sbFpvb20oKCgpPT50aGlzLnVwZGF0ZVRvb2x0aXBDb250ZW50KHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uKSkpLGUub25Qb2ludGVyTW92ZSgodD0+e3RoaXMuX2xhc3RNb3VzZVBvc2l0aW9uPXQsdGhpcy51cGRhdGVUb29sdGlwQ29udGVudCh0KX0pKSxlLm9uUG9pbnRlckV4aXQoKCgpPT50aGlzLmhpZGVUb29sdGlwcygpKSksZX11cGRhdGVUb29sdGlwQ29udGVudCh0KXt0aGlzLmxpbmVQbG90JiYod2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57bGV0IGU9e3g6dC54LHk6dC55LGRhdHVtOm51bGwsZGF0YXNldDpudWxsfSxuPXRoaXMuZ3JpZGxpbmVzLmNvbnRlbnQoKS5ub2RlKCkuZ2V0QkJveCgpLGk9dGhpcy5saW5lUGxvdC5kYXRhc2V0cygpLm1hcCgodD0+dGhpcy5maW5kQ2xvc2VzdFBvaW50KGUsdCkpKS5maWx0ZXIoQm9vbGVhbikscj1JTy5VdGlscy5ET00uaW50ZXJzZWN0c0JCb3gsbz1pLmZpbHRlcigodD0+cih0LngsdC55LG4pfHxpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpLGE9by5maWx0ZXIoKHQ9PiFpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpO2lmKDAhPT1pLmxlbmd0aCl7dGhpcy5zY2F0dGVyUGxvdC5hdHRyKCJkaXNwbGF5Iiwibm9uZSIpO2NvbnN0IHQ9dGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LmNvbnRlbnQoKS5zZWxlY3RBbGwoIi5wb2ludCIpLmRhdGEoYSwodD0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpO3QuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmNsYXNzZWQoInBvaW50IiwhMCksdC5hdHRyKCJyIiw0KS5hdHRyKCJjeCIsKHQ9PnQueCkpLmF0dHIoImN5IiwodD0+dC55KSkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSksdC5leGl0KCkucmVtb3ZlKCksdGhpcy5kcmF3VG9vbHRpcHMobyxlLHRoaXMudG9vbHRpcENvbHVtbnMpfWVsc2UgdGhpcy5oaWRlVG9vbHRpcHMoKX0pKSl9aGlkZVRvb2x0aXBzKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy50b29sdGlwLmhpZGUoKSx0aGlzLnNjYXR0ZXJQbG90LmF0dHIoImRpc3BsYXkiLCJibG9jayIpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudC5jb250ZW50KCkuc2VsZWN0QWxsKCIucG9pbnQiKS5yZW1vdmUoKX1zZXR1cFRvb2x0aXBzKHQpe3Qub25EZXRhY2goKCgpPT57dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0KSx0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbi5lbmFibGVkKCExKX0pKSx0Lm9uQW5jaG9yKCgoKT0+e3RoaXMudG9vbHRpcEludGVyYWN0aW9uLmF0dGFjaFRvKHQpLHRoaXMudG9vbHRpcEludGVyYWN0aW9uLmVuYWJsZWQoITApfSkpfWRyYXdUb29sdGlwcyh0LGUsbil7aWYoIXQubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMudG9vbHRpcC5oaWRlKCk7Y29uc3R7Y29sb3JTY2FsZTppfT10aGlzO249W3t0aXRsZToiIixzdGF0aWM6ITEsZXZhbFR5cGU6b0F0LkRPTSxldmFsdWF0ZSh0KXtyZXR1cm4gRHUodGhpcykuc2VsZWN0KCJzcGFuIikuc3R5bGUoImJhY2tncm91bmQtY29sb3IiLCgoKT0+aS5zY2FsZSh0LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSkpLCIifSxlbnRlcih0KXtEdSh0aGlzKS5hcHBlbmQoInNwYW4iKS5jbGFzc2VkKCJzd2F0Y2giLCEwKS5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsKCgpPT5pLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSl9fSwuLi5uXTtjb25zdCByPXQ9Pk1hdGgucG93KHQueC1lLngsMikrTWF0aC5wb3codC55LWUueSwyKSxvPUNlLmV4cG9ydHMubWluKHQubWFwKHIpKSxhPXRoaXMuc21vb3RoaW5nRW5hYmxlZD90aGlzLnNtb290aGVkQWNjZXNzb3I6dGhpcy55VmFsdWVBY2Nlc3Nvcjt0PSJhc2NlbmRpbmciPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD9DZS5leHBvcnRzLnNvcnRCeSh0LCh0PT5hKHQuZGF0dW0sLTEsdC5kYXRhc2V0KSkpOiJkZXNjZW5kaW5nIj09PXRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q/Q2UuZXhwb3J0cy5zb3J0QnkodCwodD0+YSh0LmRhdHVtLC0xLHQuZGF0YXNldCkpKS5yZXZlcnNlKCk6Im5lYXJlc3QiPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD9DZS5leHBvcnRzLnNvcnRCeSh0LHIpOnQuc2xpY2UoMCkucmV2ZXJzZSgpO2NvbnN0IHM9dGhpcyxsPUR1KHRoaXMudG9vbHRpcC5jb250ZW50KCkpLnNlbGVjdCgidGFibGUiKSxjPWwuc2VsZWN0KCJ0aGVhZCIpLnNlbGVjdEFsbCgidGgiKS5kYXRhKG4sKCh0LGUsbik9PnQudGl0bGUpKTtjLmVudGVyKCkuYXBwZW5kKCJ0aCIpLnRleHQoKHQ9PnQudGl0bGUpKS5ub2RlcygpLGMuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IHU9bC5zZWxlY3QoInRib2R5Iikuc2VsZWN0QWxsKCJ0ciIpLmRhdGEodCwoKHQsZSxuKT0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpO3UuY2xhc3NlZCgiZGlzdGFudCIsKHQ9PntsZXQgbj10LmRhdGFzZXQuZGF0YSgpWzBdLGk9Q2UuZXhwb3J0cy5sYXN0KHQuZGF0YXNldC5kYXRhKCkpLHI9dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IobiwwLHQuZGF0YXNldCkpLG89dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IoaSwwLHQuZGF0YXNldCkpLGE9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3QuZGF0dW0uc21vb3RoZWQ6dGhpcy55VmFsdWVBY2Nlc3Nvcih0LmRhdHVtLDAsdC5kYXRhc2V0KTtyZXR1cm4gZS54PHJ8fGUueD5vfHxpc05hTihhKX0pKS5jbGFzc2VkKCJjbG9zZXN0IiwodD0+cih0KT09PW8pKS5lYWNoKChmdW5jdGlvbih0KXtzLmRyYXdUb29sdGlwUm93KHRoaXMsbix0KX0pKS5vcmRlcigpLHUuZXhpdCgpLnJlbW92ZSgpLHUuZW50ZXIoKS5hcHBlbmQoInRyIikuZWFjaCgoZnVuY3Rpb24odCl7cy5kcmF3VG9vbHRpcFJvdyh0aGlzLG4sdCl9KSkubm9kZXMoKSx0aGlzLnRvb2x0aXAudXBkYXRlQW5kUG9zaXRpb24odGhpcy50YXJnZXRTVkcubm9kZSgpKX1kcmF3VG9vbHRpcFJvdyh0LGUsbil7Y29uc3QgaT10aGlzLHI9RHUodCkuc2VsZWN0QWxsKCJ0ZCIpLmRhdGEoZSk7ci5lYWNoKChmdW5jdGlvbih0KXt0LnN0YXRpY3x8aS5kcmF3VG9vbHRpcENvbHVtbi5jYWxsKGksdGhpcyx0LG4pfSkpLHIuZXhpdCgpLnJlbW92ZSgpLHIuZW50ZXIoKS5hcHBlbmQoInRkIikuZWFjaCgoZnVuY3Rpb24odCl7aWYoImVudGVyImluIHQmJnQuZW50ZXIpe3QuZW50ZXIuY2FsbCh0aGlzLG4pfWkuZHJhd1Rvb2x0aXBDb2x1bW4uY2FsbChpLHRoaXMsdCxuKX0pKX1kcmF3VG9vbHRpcENvbHVtbih0LGUsbil7Y29uc3R7c21vb3RoaW5nRW5hYmxlZDppfT10aGlzOyJldmFsVHlwZSJpbiBlJiZlLmV2YWxUeXBlPT1vQXQuRE9NP2UuZXZhbHVhdGUuY2FsbCh0LG4se3Ntb290aGluZ0VuYWJsZWQ6aX0pOkR1KHQpLnRleHQoZS5ldmFsdWF0ZS5jYWxsKHQsbix7c21vb3RoaW5nRW5hYmxlZDppfSkpfWZpbmRDbG9zZXN0UG9pbnQodCxlKXtjb25zdCBuPWUuZGF0YSgpLm1hcCgoKHQsbik9PnRoaXMueFNjYWxlLnNjYWxlKHRoaXMueEFjY2Vzc29yKHQsbixlKSkpKTtsZXQgaT1DZS5leHBvcnRzLnNvcnRlZEluZGV4KG4sdC54KTtpZigwPT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZihpPT09bi5sZW5ndGgpaS09MTtlbHNlIGlmKDAhPT1pKXtpPU1hdGguYWJzKG5baS0xXS10LngpPE1hdGguYWJzKG5baV0tdC54KT9pLTE6aX1jb25zdCByPWUuZGF0YSgpW2ldLG89dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3NvcihyLGksZSk6dGhpcy55VmFsdWVBY2Nlc3NvcihyLGksZSk7cmV0dXJue3g6bltpXSx5OnRoaXMueVNjYWxlLnNjYWxlKG8pLGRhdHVtOnIsZGF0YXNldDplfX1yZXNtb290aERhdGFzZXQodCl7bGV0IGU9dC5kYXRhKCk7Y29uc3Qgbj10aGlzLnNtb290aGluZ1dlaWdodDtsZXQgaT1lLmxlbmd0aD4wPzA6TmFOLHI9MDtjb25zdCBvPWUubWFwKCgoZSxuKT0+dGhpcy55VmFsdWVBY2Nlc3NvcihlLG4sdCkpKSxhPW8uZXZlcnkoKHQ9PnQ9PW9bMF0pKTtlLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgcz1vW2VdO2lmKGF8fCFOdW1iZXIuaXNGaW5pdGUocykpdC5zbW9vdGhlZD1zO2Vsc2V7aT1pKm4rKDEtbikqcyxyKys7bGV0IGU9MTsxIT09biYmKGU9MS1NYXRoLnBvdyhuLHIpKSx0LnNtb290aGVkPWkvZX19KSl9Z2V0RGF0YXNldCh0KXtyZXR1cm4gdm9pZCAwPT09dGhpcy5uYW1lMmRhdGFzZXRzW3RdJiYodGhpcy5uYW1lMmRhdGFzZXRzW3RdPW5ldyBJTy5EYXRhc2V0KFtdLHtuYW1lOnQsbWV0YTpudWxsfSkpLHRoaXMubmFtZTJkYXRhc2V0c1t0XX1zdGF0aWMgZ2V0WVNjYWxlRnJvbVR5cGUodCl7aWYodD09PWFBdC5MT0cpcmV0dXJuIG5ldyBuQXQ7aWYodD09PWFBdC5MSU5FQVIpcmV0dXJuIG5ldyBaQ3Q7dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgeVNjYWxlIHR5cGUgIit0KX1zZXRWaXNpYmxlU2VyaWVzKHQpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSwodD10LnNvcnQoKSkucmV2ZXJzZSgpLHRoaXMuc2VyaWVzTmFtZXM9dH1kaXNhYmxlQ2hhbmdlcygpe3RoaXMuZGlydHlEYXRhc2V0cy5zaXplfHwodGhpcy5saW5lUGxvdC5kYXRhc2V0cyhbXSksdGhpcy5zbW9vdGhMaW5lUGxvdCYmdGhpcy5zbW9vdGhMaW5lUGxvdC5kYXRhc2V0cyhbXSksdGhpcy5tYXJnaW5BcmVhUGxvdCYmdGhpcy5tYXJnaW5BcmVhUGxvdC5kYXRhc2V0cyhbXSkpfWNvbW1pdENoYW5nZXMoKXt0aGlzLmRhdGFzZXRzPXRoaXMuc2VyaWVzTmFtZXMubWFwKCh0PT50aGlzLmdldERhdGFzZXQodCkpKSxbLi4udGhpcy5kaXJ0eURhdGFzZXRzXS5mb3JFYWNoKCh0PT57dGhpcy5zbW9vdGhpbmdFbmFibGVkJiZ0aGlzLnJlc21vb3RoRGF0YXNldCh0aGlzLmdldERhdGFzZXQodCkpfSkpLHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy5saW5lUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSx0aGlzLnNtb290aGluZ0VuYWJsZWQmJnRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyksdGhpcy5tYXJnaW5BcmVhUGxvdCYmdGhpcy5tYXJnaW5BcmVhUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSx0aGlzLm1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0SW5SYWYoKSx0aGlzLmRpcnR5RGF0YXNldHMuY2xlYXIoKX1jcmVhdGVTYW1wbGVkRGF0YXNldEZvck1hcmtlcnModCl7Y29uc3QgZT10LmRhdGEoKTtpZihlLmxlbmd0aDw9MjApcmV0dXJuIHQ7Y29uc3Qgbj1NYXRoLmNlaWwoZS5sZW5ndGgvMjApLGk9bmV3IEFycmF5KE1hdGguZmxvb3IoZS5sZW5ndGgvbikpO2ZvcihsZXQgdD0wLHI9MDt0PGkubGVuZ3RoO3QrKyxyKz1uKWlbdF09ZVtyXTtyZXR1cm4gbmV3IElPLkRhdGFzZXQoaSx0Lm1ldGFkYXRhKCkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmRpc2FibGVDaGFuZ2VzKCksdGhpcy5nZXREYXRhc2V0KHQpLmRhdGEoZSksdGhpcy5kaXJ0eURhdGFzZXRzLmFkZCh0KX1zZXRTZXJpZXNNZXRhZGF0YSh0LGUpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSx0aGlzLmdldERhdGFzZXQodCkubWV0YWRhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuZ2V0RGF0YXNldCh0KS5tZXRhZGF0YSgpKSx7bWV0YTplfSkpLHRoaXMuZGlydHlEYXRhc2V0cy5hZGQodCl9c21vb3RoaW5nVXBkYXRlKHQpe3RoaXMuc21vb3RoaW5nV2VpZ2h0PXQsdGhpcy5kYXRhc2V0cy5mb3JFYWNoKCh0PT50aGlzLnJlc21vb3RoRGF0YXNldCh0KSkpLHRoaXMuc21vb3RoaW5nRW5hYmxlZHx8KHRoaXMubGluZVBsb3QuYWRkQ2xhc3MoImdob3N0IiksdGhpcy5zY2F0dGVyUGxvdC55KHRoaXMuc21vb3RoZWRBY2Nlc3Nvcix0aGlzLnlTY2FsZSksdGhpcy5zbW9vdGhpbmdFbmFibGVkPSEwLHRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cykpLHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90JiZ0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdC55KHRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpLHRoaXMueVNjYWxlKSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpfXNtb290aGluZ0Rpc2FibGUoKXt0aGlzLnNtb290aGluZ0VuYWJsZWQmJih0aGlzLmxpbmVQbG90LnJlbW92ZUNsYXNzKCJnaG9zdCIpLHRoaXMuc2NhdHRlclBsb3QueSh0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlKSx0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITEsdGhpcy51cGRhdGVTcGVjaWFsRGF0YXNldHMoKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LnkodGhpcy5nZXRZQXhpc0FjY2Vzc29yKCksdGhpcy55U2NhbGUpfXNldENvbG9yU2NhbGUodCl7dGhpcy5jb2xvclNjYWxlPXR9c2V0VG9vbHRpcENvbHVtbnModCl7dGhpcy50b29sdGlwQ29sdW1ucz10fXNldFRvb2x0aXBTb3J0aW5nTWV0aG9kKHQpe3RoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q9dH1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCksbnVsbCE9dGhpcy5fZGVmYXVsdFhSYW5nZSYmdGhpcy5yZXNldFhEb21haW4oKSxudWxsIT10aGlzLl9kZWZhdWx0WVJhbmdlJiZ0aGlzLnJlc2V0WURvbWFpbigpLHRoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXRJblJhZigpfXJlZHJhdygpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKSx0aGlzLm91dGVyLnJlZHJhdygpfSkpfW1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0SW5SYWYoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5faW52YWxpZGF0ZUxheW91dFJhZiksdGhpcy5faW52YWxpZGF0ZUxheW91dFJhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKX0pKX1tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpe2lmKHRoaXMuX2xhc3REcmF3QkJveCl7Y29uc3R7d2lkdGg6dH09dGhpcy5fbGFzdERyYXdCQm94LHt3aWR0aDplfT10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7MD09dCYmdDxlJiZ0aGlzLm91dGVyLmludmFsaWRhdGVDYWNoZSgpfXRoaXMuX2xhc3REcmF3QkJveD10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZGVzdHJveSgpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmKSx0aGlzLm91dGVyJiZ0aGlzLm91dGVyLmRlc3Ryb3koKX1vbkFuY2hvcih0KXt0aGlzLm91dGVyJiZ0aGlzLm91dGVyLm9uQW5jaG9yKHQpfWlzRGF0YUZpdFRvRG9tYWluKCl7cmV0dXJuIHQodGhpcy54QXhpcy5nZXRTY2FsZSgpKSYmdCh0aGlzLnlBeGlzLmdldFNjYWxlKCkpO2Z1bmN0aW9uIHQodCl7Y29uc3QgZT10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksbj10LmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50KCk7cmV0dXJuIG5bMF09PT1lWzBdJiZuWzFdPT09ZVsxXX19fXZhciBjQXQ7bWwoe21vZHVsZU5hbWU6InBsb3R0YWJsZS1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBcbi5wbG90dGFibGUtY29sb3JzLTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTI3OWM3OyAvKiBJTkRJR08gKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZDM3M2U7IC8qIENPUkFMX1JFRCAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYzYzI2MTsgLyogRkVSTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZDQxOTsgLyogQlJJR0hUX1NVTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmI2ZjsgLyogSkFDQVJUQSAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNzkzOTsgLyogQlVSTklOR19PUkFOR0UgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjJlNjU7IC8qIENFUklTRV9SRUQgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5OWNlNTA7IC8qIENPTklGRVIgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtOCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NjI1NjU7IC8qIFJPWUFMX0hFQVRIICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZjY2NjOyAvKiBST0JJTlNfRUdHX0JMVUUgKi9cbn1cblxuLyoqXG4gKiBVc2VyLXN1cHBsaWVkIHJlbmRlclRvIGVsZW1lbnQuXG4gKi9cbi5wbG90dGFibGUge1xuICBkaXNwbGF5OiBibG9jazsgLyogbXVzdCBiZSBibG9jayBlbGVtZW50cyBmb3Igd2lkdGgvaGVpZ2h0IGNhbGN1bGF0aW9ucyB0byB3b3JrIGluIEZpcmVmb3guICovXG4gIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlRmlsbDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKipcbiAgICogUHJlIDMuMCwgdXNlcnMgY291bGQgc2V0IHRoZSBkaW1lbnNpb24gb2YgdGhlIHJvb3QgZWxlbWVudCBpbiB0d28gd2F5czogZWl0aGVyIHVzaW5nIENTU1xuICAgKiAoaW5saW5lIG9yIHRocm91Z2ggYSBzdHlsZXNoZWV0KSwgb3IgdXNpbmcgdGhlIFNWRyB3aWR0aC9oZWlnaHQgYXR0cmlidXRlcy4gQnkgZGVmYXVsdCwgd2VcbiAgICogc2V0IHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgdG8gMTAwJS5cbiAgICpcbiAgICogUG9zdCAzLjAgdGhlIHJvb3QgZWxlbWVudCBpcyBhbHdheXMgYSBub3JtYWwgZGl2IGFuZCB0aGUgb25seSB3YXkgdG8gc2V0IHRoZSBkaW1lbnNpb25zIGlzXG4gICAqIHRvIHVzZSBDU1MuIFRvIHJlcGxpY2F0ZSB0aGUgXCIxMDAlLWJ5LWRlZmF1bHRcIiBiZWhhdmlvciwgd2UgYXBwbHkgd2lkdGgvaGVpZ2h0IDEwMCUuXG4gICAqL1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKipcbiAqIFRoZSBfZWxlbWVudCB0aGF0IHJvb3RzIGVhY2ggQ29tcG9uZW50J3MgRE9NLlxuICovXG4ucGxvdHRhYmxlIC5jb21wb25lbnQge1xuICAvKiBBbGxvdyBjb21wb25lbnRzIHRvIGJlIHBvc2l0aW9uZWQgd2l0aCBleHBsaWNpdCBsZWZ0L3RvcC93aWR0aC9oZWlnaHQgc3R5bGVzICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLnBsb3R0YWJsZSAuYmFja2dyb3VuZC1jb250YWluZXIsXG4ucGxvdHRhYmxlIC5jb250ZW50LFxuLnBsb3R0YWJsZSAuZm9yZWdyb3VuZC1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qKlxuICogRG9uJ3QgYWxsb3cgc3ZnIGVsZW1lbnRzIGFib3ZlIHRoZSBjb250ZW50IHRvIHN0ZWFsIGV2ZW50c1xuICovXG4ucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ucGxvdHRhYmxlIC5jb21wb25lbnQtb3ZlcmZsb3ctaGlkZGVuIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAuY29tcG9uZW50LW92ZXJmbG93LXZpc2libGUge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAvKipcbiAgICogUGxheSB3ZWxsIHdpdGggZGVmZXJyZWQgcmVuZGVyaW5nLlxuICAgKi9cbiAgdHJhbnNmb3JtLW9yaWdpbjogMHB4IDBweCAwcHg7XG59XG5cbi5wbG90dGFibGUgdGV4dCB7XG4gIHRleHQtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247XG59XG5cbi5wbG90dGFibGUgLmxhYmVsIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItbGFiZWwtdGV4dC1hcmVhIHRleHQsXG4ucGxvdHRhYmxlIC5zY2F0dGVyLWxhYmVsLXRleHQtYXJlYSB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4ucGxvdHRhYmxlIC5sYWJlbC1hcmVhIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5wbG90dGFibGUgLmxpZ2h0LWxhYmVsIHRleHQge1xuICBmaWxsOiB3aGl0ZTtcbn1cblxuLnBsb3R0YWJsZSAuZGFyay1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAub2ZmLWJhci1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItbGFiZWwgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItcGxvdCAub2ZmLWJhci1sYWJlbCB7XG4gIC8qIEhBQ0tIQUNLICMyNzk1OiBjb3JyZWN0IG9mZi1iYXIgbGFiZWwgbG9naWMgdG8gYmUgaW1wbGVtZW50ZWQgb24gU3RhY2tlZEJhciAqL1xuICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcy1sYWJlbCB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnBsb3R0YWJsZSAudGl0bGUtbGFiZWwgdGV4dCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS5iYXNlbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS50aWNrLW1hcmsge1xuICBzdHJva2U6ICNDQ0M7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4ucGxvdHRhYmxlIC5heGlzIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tY2lyY2xlIHtcbiAgZmlsbDogd2hpdGU7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICBzdHJva2U6ICNDQ0M7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tcmVjdCB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIGZpbGw6IHdoaXRlO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItcGxvdCAuYmFzZWxpbmUge1xuICBzdHJva2U6ICM5OTk7XG59XG5cbi5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHtcbiAgc3Ryb2tlOiAjM0MzQzNDOyAvKiBoYWNraGFjazogZ3JpZGxpbmVzIHNob3VsZCBiZSBzb2xpZDsgc2VlICM4MjAgKi9cbiAgb3BhY2l0eTogMC4yNTtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLnNlbGVjdGlvbi1ib3gtbGF5ZXIgLnNlbGVjdGlvbi1hcmVhIHtcbiAgZmlsbDogYmxhY2s7XG4gIGZpbGwtb3BhY2l0eTogMC4wMztcbiAgc3Ryb2tlOiAjQ0NDO1xufVxuLyogRHJhZ0JveExheWVyICovXG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZSAuZHJhZy1lZGdlLWxyIHtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci55LXJlc2l6YWJsZSAuZHJhZy1lZGdlLXRiIHtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci10bCB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItdHIge1xuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xufVxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLWJsIHtcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcbn1cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci1iciB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLm1vdmFibGUgLnNlbGVjdGlvbi1hcmVhIHtcbiAgY3Vyc29yOiBtb3ZlOyAvKiBJRSBmYWxsYmFjayAqL1xuICBjdXJzb3I6IC1tb3otZ3JhYjtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gIGN1cnNvcjogZ3JhYjtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIubW92YWJsZSAuc2VsZWN0aW9uLWFyZWE6YWN0aXZlIHtcbiAgY3Vyc29yOiAtbW96LWdyYWJiaW5nO1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG4gIGN1cnNvcjogZ3JhYmJpbmc7XG59XG4vKiAvRHJhZ0JveExheWVyICovXG5cbi5wbG90dGFibGUgLmd1aWRlLWxpbmUtbGF5ZXIgbGluZS5ndWlkZS1saW5lIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQudmVydGljYWwgbGluZS5kcmFnLWVkZ2Uge1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQuaG9yaXpvbnRhbCBsaW5lLmRyYWctZWRnZSB7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xufVxuXG4ucGxvdHRhYmxlIC5sZWdlbmQgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmludGVycG9sYXRlZC1jb2xvci1sZWdlbmQgcmVjdC5zd2F0Y2gtYm91bmRpbmctYm94IHtcbiAgZmlsbDogbm9uZTtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5wbG90dGFibGUgLndhdGVyZmFsbC1wbG90IGxpbmUuY29ubmVjdG9yIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAucGllLXBsb3QgLmFyYy5vdXRsaW5lIHtcbiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbn1cblxuIn0pLChmdW5jdGlvbih0KXt0LkdST1VQPSJHIix0LkRJVj0iRElWIix0LlNWRz0iU1ZHIix0LlRFWFQ9IlRFWFQifSkoY0F0fHwoY0F0PXt9KSk7Y2xhc3MgdUF0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy51bmlxdWVJZD0wLHRoaXMucm9vdD10fWV4cG9ydEFzU3RyaW5nKCl7Y29uc3QgdD10aGlzLmNvbnZlcnQodGhpcy5yb290KTtpZighdClyZXR1cm4iIjtjb25zdCBlPXRoaXMuY3JlYXRlUm9vdFN2ZygpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLGUub3V0ZXJIVE1MfWNyZWF0ZVVuaXF1ZUlkKHQpe3JldHVybmAke3R9XyR7dGhpcy51bmlxdWVJZCsrfWB9Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y3JlYXRlUm9vdFN2Zygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ZnIiksZT10aGlzLmdldFNpemUoKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGVOUygic3ZnIiwidmlld0JveCIsYDAgMCAke2Uud2lkdGh9ICR7ZS5oZWlnaHR9YCksdC5zZXRBdHRyaWJ1dGUoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSx0fWNvbnZlcnQodCl7bGV0IGU9bnVsbDtjb25zdCBuPXQubm9kZU5hbWUudG9VcHBlckNhc2UoKTtpZih0Lm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERXx8biE9Y0F0LkRJViYmbiE9Y0F0LlNWRyllPXQuY2xvbmVOb2RlKCk7ZWxzZXtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY0F0LkdST1VQKTtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLGk9cGFyc2VJbnQobi5sZWZ0LDEwKSxyPXBhcnNlSW50KG4udG9wLDEwKTtpZihpfHxyKXtjb25zdCB0PXRoaXMuY3JlYXRlVW5pcXVlSWQoImNsaXAiKTtlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7aX0sICR7cn0pYCksZS5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsYHVybCgjJHt0fSlgKTtjb25zdCBvPXBhcnNlSW50KG4ud2lkdGgsMTApLGE9cGFyc2VJbnQobi5oZWlnaHQsMTApLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicmVjdCIpO3Muc2V0QXR0cmlidXRlKCJ3aWR0aCIsU3RyaW5nKG8pKSxzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixTdHJpbmcoYSkpO2NvbnN0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJzdmciLCJjbGlwUGF0aCIpO2wuaWQ9dCxsLmFwcGVuZENoaWxkKHMpLGUuYXBwZW5kQ2hpbGQobCl9fUFycmF5LmZyb20odC5jaGlsZE5vZGVzKS5tYXAoKHQ9PnRoaXMuY29udmVydCh0KSkpLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKCh0PT5lLmFwcGVuZENoaWxkKHQpKSk7cmV0dXJuIGUubm9kZU5hbWUudG9VcHBlckNhc2UoKT09Y0F0LkdST1VQJiYhZS5oYXNDaGlsZE5vZGVzKCl8fHRoaXMuc2hvdWxkT21pdE5vZGUodCk/bnVsbDp0aGlzLnN0cmlwQ2xhc3ModGhpcy50cmFuc2ZlclN0eWxlKHQsZSkpfXN0cmlwQ2xhc3ModCl7cmV0dXJuIHQubm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKSx0fXRyYW5zZmVyU3R5bGUodCxlKXtpZihlLm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gZTtjb25zdCBuPWUsaT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkscj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtyZXR1cm4gaT09Y0F0LlRFWFQmJk9iamVjdC5hc3NpZ24obi5zdHlsZSx7Zm9udEZhbWlseTpyLmZvbnRGYW1pbHksZm9udFNpemU6ci5mb250U2l6ZSxmb250V2VpZ2h0OnIuZm9udFdlaWdodH0pLGkhPWNBdC5HUk9VUCYmKG4uc2V0QXR0cmlidXRlKCJmaWxsIixyLmZpbGwpLG4uc2V0QXR0cmlidXRlKCJzdHJva2UiLHIuc3Ryb2tlKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixyLnN0cm9rZVdpZHRoKSksIjEiIT1yLm9wYWNpdHkmJm4uc2V0QXR0cmlidXRlKCJvcGFjaXR5IixyLm9wYWNpdHkpLGV9c2hvdWxkT21pdE5vZGUodCl7cmV0dXJuITF9fXtzaG91bGRPbWl0Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09Tm9kZS5FTEVNRU5UX05PREUmJnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY2F0dGVyLXBsb3QiKX19bWwoe21vZHVsZU5hbWU6InZ6LXBhbi16b29tLXN0eWxlIixzdHlsZUNvbnRlbnQ6IlxuICAgIC5oZWxwIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLW91dDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC42KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbGVmdDogMDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAuaGVscCA+IHNwYW4ge1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y29uc3QgaEF0PVNDdCg0KSxkQXQ9dD0+aXNOYU4odCk/Ik5hTiI6aEF0KHQpLHBBdD1be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlNtb290aGVkIixldmFsdWF0ZSh0LGUpe2NvbnN0e3Ntb290aGluZ0VuYWJsZWQ6bn09ZTtyZXR1cm4gZEF0KG4/dC5kYXR1bS5zbW9vdGhlZDp0LmRhdHVtLnNjYWxhcil9fSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5kQXQodC5kYXR1bS5zY2FsYXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9Pk1DdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PlRDdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkFDdChDQ3QodC5kYXR1bSwwLHQuZGF0YXNldCkpfV07bGV0IGZBdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29sb3JTY2FsZT0obmV3IElPLlNjYWxlcy5Db2xvcikucmFuZ2UoakEuc2xpY2UoMCkpLHRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMSx0aGlzLnNtb290aGluZ1dlaWdodD0uNix0aGlzLnhUeXBlPW51bGwsdGhpcy54Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kPW51bGwsdGhpcy55VmFsdWVBY2Nlc3Nvcj10PT50LnNjYWxhcix0aGlzLnRvb2x0aXBDb2x1bW5zPXBBdCx0aGlzLnlTY2FsZVR5cGU9YUF0LkxJTkVBUix0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kPSJkZWZhdWx0Iix0aGlzLnRvb2x0aXBQb3NpdGlvbj16Q3QuQk9UVE9NLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fc2VyaWVzTWV0YWRhdGFDYWNoZT17fSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLmNoYXJ0ZGl2LCEwKX1hdHRhY2hlZCgpe2NvbnN0IHQ9e2NhcHR1cmU6ITAscGFzc2l2ZTohMH07dGhpcy5fbGlzdGVuKHRoaXMsIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZURvd24uYmluZCh0aGlzKSx0KSx0aGlzLl9saXN0ZW4odGhpcywibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5dXAiLHRoaXMuX29uS2V5VXAuYmluZCh0aGlzKSx0KX1kZXRhY2hlZCgpe3RoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKSx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LmRlc3Ryb3koKSx0aGlzLl9jaGFydD12b2lkIDApLHRoaXMuX2xpc3RlbmVycyYmKHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCgoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4saSl9KSksdGhpcy5fbGlzdGVuZXJzLmNsZWFyKCkpfV9saXN0ZW4odCxlLG4saT17fSl7dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBTZXQpLHRoaXMuX2xpc3RlbmVycy5hZGQoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLGkpfV9vbktleURvd24odCl7dGhpcy50b2dnbGVDbGFzcygicGFua2V5IixzQXQuaXNQYW5LZXkodCkpfV9vbktleVVwKHQpe3RoaXMudG9nZ2xlQ2xhc3MoInBhbmtleSIsc0F0LmlzUGFuS2V5KHQpKX1fb25Nb3VzZURvd24odCl7dGhpcy50b2dnbGVDbGFzcygibW91c2Vkb3duIiwhMCl9X29uTW91c2VVcCh0KXt0aGlzLnRvZ2dsZUNsYXNzKCJtb3VzZWRvd24iLCExKX1pc0RhdGFGaXRUb0RvbWFpbigpe3JldHVybiF0aGlzLl9jaGFydHx8dGhpcy5fY2hhcnQuaXNEYXRhRml0VG9Eb21haW4oKX1zZXRWaXNpYmxlU2VyaWVzKHQpe0NlLmV4cG9ydHMuaXNFcXVhbCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUsdCl8fCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1lLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdPWUsdGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFNlcmllc01ldGFkYXRhKHQsZSl9Y29tbWl0Q2hhbmdlcygpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5jb21taXRDaGFuZ2VzKCl9cmVzZXREb21haW4oKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVzZXREb21haW4oKX1yZWRyYXcoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVkcmF3KCl9X21ha2VDaGFydCgpe251bGwhPT10aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD10aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsO2xldCB0PXRoaXMueENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZDtpZih0aGlzLnhUeXBlfHx0P3RoaXMueFR5cGUmJih0PSgpPT5rQ3QodGhpcy54VHlwZSkpOnQ9RUN0LHQmJnRoaXMueVZhbHVlQWNjZXNzb3ImJnRoaXMudG9vbHRpcENvbHVtbnMpe3ZhciBlPW5ldyBsQXQodCx0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlVHlwZSx0aGlzLmNvbG9yU2NhbGUsdGhpcy4kLnRvb2x0aXAsdGhpcy50b29sdGlwQ29sdW1ucyx0aGlzLmZpbGxBcmVhLHRoaXMuZGVmYXVsdFhSYW5nZSx0aGlzLmRlZmF1bHRZUmFuZ2UsdGhpcy5zeW1ib2xGdW5jdGlvbix0aGlzLnhBeGlzRm9ybWF0dGVyKSxuPUR1KHRoaXMuJC5jaGFydGRpdik7ZS5yZW5kZXJUbyhuKSx0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpLHRoaXMuX2NoYXJ0PWUsdGhpcy5fY2hhcnQub25BbmNob3IoKCgpPT50aGlzLmZpcmUoImNoYXJ0LWF0dGFjaGVkIikpKX19KSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LHRoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XXx8W10pfSkpLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5maWx0ZXIoKHQ9PnRoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbdF0pKS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzTWV0YWRhdGEodCx0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdKX0pKSx0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZSksdGhpcy5fY2hhcnQuY29tbWl0Q2hhbmdlcygpKX1fc21vb3RoaW5nQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiYodGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuX2NoYXJ0LnNtb290aGluZ1VwZGF0ZSh0aGlzLnNtb290aGluZ1dlaWdodCk6dGhpcy5fY2hhcnQuc21vb3RoaW5nRGlzYWJsZSgpKX1fb3V0bGllcnNDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0Lmlnbm9yZVlPdXRsaWVycyh0aGlzLmlnbm9yZVlPdXRsaWVycyl9X2NvbG9yU2NhbGVDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRDb2xvclNjYWxlKHRoaXMuY29sb3JTY2FsZSksdGhpcy5fY2hhcnQucmVkcmF3KCkpfV90b29sdGlwQ29sdW1uc0NoYW5nZWQoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0VG9vbHRpcENvbHVtbnModGhpcy50b29sdGlwQ29sdW1ucyl9X3Rvb2x0aXBTb3J0aW5nTWV0aG9kQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRUb29sdGlwU29ydGluZ01ldGhvZCh0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kKX1nZXRFeHBvcnRlcigpe3JldHVybiBuZXcgdUF0KHRoaXMuJC5jaGFydGRpdil9fTtmQXQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJjaGFydGRpdiI+PC9kaXY+CiAgICA8dnotY2hhcnQtdG9vbHRpcAogICAgICBpZD0idG9vbHRpcCIKICAgICAgcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgIGNvbnRlbnQtY29tcG9uZW50LW5hbWU9InZ6LWxpbmUtY2hhcnQtdG9vbHRpcCIKICAgID48L3Z6LWNoYXJ0LXRvb2x0aXA+CiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZ6LXBhbi16b29tLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICBkaXYgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgICNjaGFydGRpdiAubWFpbiB7CiAgICAgICAgY29udGFpbjogc3RyaWN0OwogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICA6aG9zdCgucGFua2V5KSAjY2hhcnRkaXYgOm5vdCguZHJhZy16b29taW5nKSAubWFpbiB7CiAgICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgICAgICAgY3Vyc29yOiBncmFiOwogICAgICB9CgogICAgICA6aG9zdCgubW91c2Vkb3duKSAjY2hhcnRkaXYgLnBhbm5pbmcgLm1haW4gewogICAgICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsKICAgICAgICBjdXJzb3I6IGdyYWJiaW5nOwogICAgICB9CgogICAgICAjY2hhcnRkaXYgewogICAgICAgIGNvbnRhaW46IHN0cmljdDsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IGxpbmUuZ3VpZGUtbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjOTk5OwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2OmhvdmVyIC5tYWluIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLnBsb3R0YWJsZSAuYXhpcyB0ZXh0IHsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLElPLlNjYWxlcy5Db2xvcildLGZBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQXQucHJvdG90eXBlLCJzeW1ib2xGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmQXQucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGZBdC5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZBdC5wcm90b3R5cGUsInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQXQucHJvdG90eXBlLCJ4QXhpc0Zvcm1hdHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZBdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxmQXQucHJvdG90eXBlLCJ0b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJmaWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkF0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkF0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQXQucHJvdG90eXBlLCJ5U2NhbGVUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZkF0LnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZBdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGZBdC5wcm90b3R5cGUsIl92aXNpYmxlU2VyaWVzQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZkF0LnByb3RvdHlwZSwiX3Nlcmllc0RhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQXQucHJvdG90eXBlLCJfc2VyaWVzTWV0YWRhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmQXQucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApLHQoW2EoInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLCJ4VHlwZSIsInlWYWx1ZUFjY2Vzc29yIiwieVNjYWxlVHlwZSIsImlzQXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIsIl92aXNpYmxlU2VyaWVzQ2FjaGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9yZWxvYWRGcm9tQ2FjaGUiLG51bGwpLHQoW2EoInNtb290aGluZ0VuYWJsZWQiLCJzbW9vdGhpbmdXZWlnaHQiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9zbW9vdGhpbmdDaGFuZ2VkIixudWxsKSx0KFthKCJpZ25vcmVZT3V0bGllcnMiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9vdXRsaWVyc0NoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yU2NhbGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlQ2hhbmdlZCIsbnVsbCksdChbYSgidG9vbHRpcENvbHVtbnMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZBdC5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1uc0NoYW5nZWQiLG51bGwpLHQoW2EoInRvb2x0aXBTb3J0aW5nTWV0aG9kIiwiX2NoYXJ0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxmQXQucHJvdG90eXBlLCJfdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkIixudWxsKSxmQXQ9dChbaSgidnotbGluZS1jaGFydDIiKV0sZkF0KTtsZXQgbUF0PWNsYXNzIGV4dGVuZHMgd2V7fTttQXQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgPHRhYmxlPgogICAgICAgIDx0aGVhZD48L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIHRib2R5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICB9CgogICAgICAuc3dhdGNoIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICB9CgogICAgICAuY2xvc2VzdCAuc3dhdGNoIHsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2ZmZjsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIC5kaXN0YW50IHRkOm5vdCguc3dhdGNoKSB7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLG1BdD10KFtpKCJ2ei1saW5lLWNoYXJ0LXRvb2x0aXAiKV0sbUF0KTtjb25zdCBnQXQ9W107Y29uc3QgX0F0PUNlLmV4cG9ydHMudGhyb3R0bGUoKGZ1bmN0aW9uIHQoKXtpZigwPT1nQXQubGVuZ3RoKXJldHVybjtjb25zdCBlPWdBdC5zaGlmdCgpO2UmJmUuYWN0aXZlJiYoZS5yZWRyYXcoKSxlLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMSksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKDApLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KSwxMDApO2xldCB5QXQ9Y2xhc3MgZXh0ZW5kcyhiQ3QoY3Iod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlZHJhd1JhZj1udWxsLHRoaXMuYWN0aXZlPSExLHRoaXMubG9nU2NhbGVBY3RpdmU9ITEsdGhpcy5jb2xvclNjYWxlPXtzY2FsZTpfT30sdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwLHRoaXMuX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlPSExfW9uTG9hZEZpbmlzaCgpe3RoaXMuY29tbWl0Q2hhbmdlcygpLHRoaXMuZGF0YVRvTG9hZC5sZW5ndGg+MCYmdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkJiYodGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSExLHRoaXMuZ2V0Q2hhcnQoKS5yZXNldERvbWFpbigpKSx0aGlzLnJlZHJhdygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpfWV4cG9ydEFzU3ZnU3RyaW5nKCl7cmV0dXJuIHRoaXMuZ2V0Q2hhcnQoKS5nZXRFeHBvcnRlcigpLmV4cG9ydEFzU3RyaW5nKCl9Z2V0Q2hhcnQoKXtyZXR1cm4gdGhpcy4kLmNoYXJ0fXJlc2V0RG9tYWluKCl7dGhpcy5nZXRDaGFydCgpLnJlc2V0RG9tYWluKCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLmdldENoYXJ0KCkuc2V0U2VyaWVzTWV0YWRhdGEodCxlKX1jb21taXRDaGFuZ2VzKCl7dGhpcy5nZXRDaGFydCgpLmNvbW1pdENoYW5nZXMoKX1yZWRyYXcoKXtudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuYWN0aXZlP3RoaXMuZ2V0Q2hhcnQoKS5yZWRyYXcoKTp0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMH0pKX1fbG9hZEtleUNoYW5nZWQoKXt0aGlzLnJlc2V0KCksdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwfV9kYXRhU2VyaWVzQ2hhbmdlZCgpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuZGF0YVNlcmllcyl9X2xvZ1NjYWxlQ2hhbmdlZCh0KXt0aGlzLmdldENoYXJ0KCkueVNjYWxlVHlwZT10P2FBdC5MT0c6YUF0LkxJTkVBUix0aGlzLnJlZHJhdygpfV9maXhCYWRTdGF0ZVdoZW5BY3RpdmUoKXt0aGlzLmFjdGl2ZSYmdGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGUmJihnQXQucHVzaCh0aGlzKSxfQXQoKSl9X29uQ2hhcnRBdHRhY2hlZCgpe3RoaXMuYWN0aXZlfHwodGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGU9ITApfX07eUF0LnRlbXBsYXRlPXhlYAogICAgPGRpdiBpZD0iY2hhcnQtYW5kLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgPHZ6LWxpbmUtY2hhcnQyCiAgICAgICAgaWQ9ImNoYXJ0IgogICAgICAgIGRhdGEtbG9hZGluZyQ9IltbZGF0YUxvYWRpbmddXSIKICAgICAgICBkYXRhLWxvYWRlZC1vbmNlJD0iW1tkYXRhTG9hZGVkQXRMZWFzdE9uY2VdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tjb2xvclNjYWxlXV0iCiAgICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW2RlZmF1bHRYUmFuZ2VdXSIKICAgICAgICBkZWZhdWx0LXktcmFuZ2U9IltbZGVmYXVsdFlSYW5nZV1dIgogICAgICAgIGZpbGwtYXJlYT0iW1tmaWxsQXJlYV1dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIG9uLWNoYXJ0LWF0dGFjaGVkPSJfb25DaGFydEF0dGFjaGVkIgogICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tzeW1ib2xGdW5jdGlvbl1dIgogICAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1t0b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtY29tcG9uZW50cy1jcmVhdGlvbi1tZXRob2Q9IltbeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICAgIHktdmFsdWUtYWNjZXNzb3I9IltbeVZhbHVlQWNjZXNzb3JdXSIKICAgICAgPjwvdnotbGluZS1jaGFydDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tkYXRhTG9hZGluZ11dIj4KICAgICAgICA8ZGl2IGlkPSJsb2FkaW5nLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlPSIiPjwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICA6aG9zdChbX21heWJlLXJlbmRlcmVkLWluLWJhZC1zdGF0ZV0pIHZ6LWxpbmUtY2hhcnQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgI2NoYXJ0LWFuZC1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjbG9hZGluZy1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDIgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDJbZGF0YS1sb2FkaW5nXSB7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfZml4QmFkU3RhdGVXaGVuQWN0aXZlIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5QXQucHJvdG90eXBlLCJkYXRhU2VyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0seUF0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfbG9nU2NhbGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwibG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seUF0LnByb3RvdHlwZSwieENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5QXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlBdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsImZpbGxBcmVhIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUF0LnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx5QXQucHJvdG90eXBlLCJzbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlBdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlBdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUF0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUF0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlBdC5wcm90b3R5cGUsInN5bWJvbEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx5QXQucHJvdG90eXBlLCJfcmVzZXREb21haW5Pbk5leHRMb2FkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlBdC5wcm90b3R5cGUsIl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZSIsdm9pZCAwKSx0KFthKCJsb2FkS2V5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx5QXQucHJvdG90eXBlLCJfbG9hZEtleUNoYW5nZWQiLG51bGwpLHQoW2EoImRhdGFTZXJpZXMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0seUF0LnByb3RvdHlwZSwiX2RhdGFTZXJpZXNDaGFuZ2VkIixudWxsKSx5QXQ9dChbaSgidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpXSx5QXQpLG1sKHttb2R1bGVOYW1lOiJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgOmhvc3Qge1xuICAgICAgbWFyZ2luOiA1cHggMTBweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiAzMzBweDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICB9XG5cbiAgICA6aG9zdChbX2V4cGFuZGVkXSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgOmhvc3QoW19leHBhbmRlZF0pICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IDQwMHB4O1xuICAgIH1cblxuICAgIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogMTlweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxuXG4gICAgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAjYnV0dG9ucyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbiB7XG4gICAgICBjb2xvcjogIzIxOTZmMztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICB3aWR0aDogMzJweDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0ge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3Mge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgYSB7XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICBtYXJnaW46IDJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgcGFwZXItZHJvcGRvd24tbWVudSB7XG4gICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y2xhc3MgdkF0e2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5ydW49dCx0aGlzLnRhZz1lLHRoaXMubmFtZT1uLHRoaXMuc2NhbGFyRGF0YT1pLHRoaXMuc3ltYm9sPXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLm5hbWV9c2V0RGF0YSh0KXt0aGlzLnNjYWxhckRhdGE9dH1nZXREYXRhKCl7cmV0dXJuIHRoaXMuc2NhbGFyRGF0YX1nZXRSdW4oKXtyZXR1cm4gdGhpcy5ydW59Z2V0VGFnKCl7cmV0dXJuIHRoaXMudGFnfWdldFN5bWJvbCgpe3JldHVybiB0aGlzLnN5bWJvbH19ZnVuY3Rpb24gYkF0KHQsZSl7cmV0dXJuYCR7ZX0gKCR7dH0pYH1jbGFzcyB4QXR7Y29uc3RydWN0b3IodCl7dGhpcy5ydW5CYXNlZENvbG9yU2NhbGU9dH1zY2FsZSh0KXtyZXR1cm4gdGhpcy5ydW5CYXNlZENvbG9yU2NhbGUuc2NhbGUodGhpcy5wYXJzZVJ1bk5hbWUodCkpfXBhcnNlUnVuTmFtZSh0KXtjb25zdCBlPXQubWF0Y2goL1woKC4qKVwpJC8pO3JldHVybiBlP2VbMV06IiJ9fWxldCB3QXQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFjdGl2ZT0hMCx0aGlzLl9jb2xvclNjYWxlPW5ldyB4QXQoe3NjYWxlOl9PfSksdGhpcy5fbmFtZVRvRGF0YVNlcmllcz17fSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57Y29uc3QgaT1FcigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPUxPKGkse3RhZzp0aGlzLl90YWdGaWx0ZXIscnVuOnR9KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleD17fSx0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZD0hMSx0aGlzLl9maWxsQXJlYT17bG93ZXJBY2Nlc3Nvcjp0PT50Lmxvd2VyLGhpZ2hlckFjY2Vzc29yOnQ9PnQudXBwZXJ9LHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9U0N0KDQpLGU9ZT0+aXNOYU4oZSk/Ik5hTiI6dChlKTtyZXR1cm5be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0uc2NhbGFyKX0se3RpdGxlOiJMb3dlciBNYXJnaW4iLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5sb3dlcil9LHt0aXRsZToiVXBwZXIgTWFyZ2luIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0udXBwZXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9Pk1DdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PlRDdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkFDdChDQ3QodC5kYXR1bSwwLHQuZGF0YXNldCkpfV19KSgpLHRoaXMuX21pc3NpbmdUYWdzPVtdLHRoaXMuX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQ9ITF9cmVsb2FkKCl7dGhpcy4kLmxvYWRlci5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLiQubG9hZGVyLnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX1fcmVzZXREb21haW4oKXtjb25zdCB0PXRoaXMuJC5sb2FkZXI7dCYmdC5yZXNldERvbWFpbigpfV9jc3ZVcmwodCxlKXtpZighZSlyZXR1cm4iIjtyZXR1cm4gTE8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pfV9qc29uVXJsKHQsZSl7aWYoIWUpcmV0dXJuIiI7cmV0dXJuIExPKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LGUpe2NvbnN0IG49dFtlXSxpPXt0YWc6bi5nZXRUYWcoKSxydW46bi5nZXRSdW4oKX07cmV0dXJuIExPKEVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2Rvd25sb2FkX2RhdGEiKSxpKX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbih0KXtyZXR1cm4oZSxuLGkpPT57aWYoIWkucmVnZXhfdmFsaWQpcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl90YWdGaWx0ZXJJbnZhbGlkIiwhMCk7Y29uc3Qgcj1DZS5leHBvcnRzLmNsb25lKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLG89W107Q2UuZXhwb3J0cy5mb3JFYWNoKHQsKHQ9PntsZXQgZT0hMTtjb25zdCBhPWkudGFnX3RvX2V2ZW50c1t0LnZhbHVlXSxzPWkudGFnX3RvX2V2ZW50c1t0Lmxvd2VyXSxsPWkudGFnX3RvX2V2ZW50c1t0LnVwcGVyXTtpZihDZS5leHBvcnRzLmlzVW5kZWZpbmVkKGEpJiYoby5wdXNoKHQudmFsdWUpLGU9ITApLENlLmV4cG9ydHMuaXNVbmRlZmluZWQocykmJihvLnB1c2godC5sb3dlciksZT0hMCksQ2UuZXhwb3J0cy5pc1VuZGVmaW5lZChsKSYmKG8ucHVzaCh0LnVwcGVyKSxlPSEwKSxlKXJldHVybjtjb25zdCBjPXQ9PnRbMV0sdT10aGlzLl9maW5kU3RlcE1pc21hdGNoKHQsYS5tYXAoYykscy5tYXAoYyksbC5tYXAoYykpO2lmKHUpcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl9zdGVwc01pc21hdGNoIix1KTtjb25zdCBoPXQ9PnRbMl0sZD1hLm1hcCgoKHQsZSk9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0WzBdKSxzdGVwOmModCksc2NhbGFyOmgodCksbG93ZXI6aChzW2VdKSx1cHBlcjpoKGxbZV0pfSkpKSxwPWJBdChuLHQudmFsdWUpLGY9cltwXTtpZihmKWYuc2V0RGF0YShkKTtlbHNle2NvbnN0IGU9dGhpcy5fY3JlYXRlTmV3RGF0YVNlcmllcyhuLHQudmFsdWUscCxkKTtyW3BdPWV9fSkpLHRoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIscik7Y29uc3QgYT1DZS5leHBvcnRzLmZpbmRJbmRleCh0aGlzLl9taXNzaW5nVGFncywodD0+dC5ydW49PT1uKSk7aWYoby5sZW5ndGgmJjMhPW8ubGVuZ3RoKXtjb25zdCB0PXtydW46bix0YWdzOm99O2E+PTA/dGhpcy5zcGxpY2UoIl9taXNzaW5nVGFncyIsYSwxLHQpOnRoaXMucHVzaCgiX21pc3NpbmdUYWdzIix0KX1lbHNlIGE+PTAmJnRoaXMuc3BsaWNlKCJfbWlzc2luZ1RhZ3MiLGEsMSl9fV9maW5kU3RlcE1pc21hdGNoKHQsZSxuLGkpe3JldHVybiBDZS5leHBvcnRzLmlzRXF1YWwobixlKSYmQ2UuZXhwb3J0cy5pc0VxdWFsKGksZSk/bnVsbDp7c2VyaWVzT2JqZWN0OnQsdmFsdWVTdGVwczplLGxvd2VyU3RlcHM6bix1cHBlclN0ZXBzOml9fV9jcmVhdGVOZXdEYXRhU2VyaWVzKHQsZSxuLGkpe3RoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3RdfD0wO2NvbnN0IHI9bmV3IHZBdCh0LGUsbixpLHhDdFt0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFt0XV0pO3JldHVybiB0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFt0XT0odGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbdF0rMSkleEN0Lmxlbmd0aCxyfV91cGRhdGVDaGFydCgpe0NlLmV4cG9ydHMuZm9yT3duKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMsKHQ9Pnt0aGlzLiQubG9hZGVyLnNldFNlcmllc0RhdGEodC5nZXROYW1lKCksdC5nZXREYXRhKCkpfSkpLHRoaXMuJC5sb2FkZXIuY29tbWl0Q2hhbmdlcygpfWdldCBfc2VyaWVzTmFtZXMoKXtjb25zdCB0PW5ldyBTZXQodGhpcy5ydW5zKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5fbmFtZVRvRGF0YVNlcmllcykuZmlsdGVyKCgoW2Usbl0pPT50LmhhcyhuLnJ1bikpKS5tYXAoKChbdF0pPT50KSl9X2RldGVybWluZUNvbG9yKHQsZSl7cmV0dXJuIHQuc2NhbGUoZSl9X3JlZnJlc2hEYXRhU2VyaWVzKCl7dGhpcy5zZXQoIl9uYW1lVG9EYXRhU2VyaWVzIix7fSl9X2NyZWF0ZVN5bWJvbEZ1bmN0aW9uKCl7cmV0dXJuIHQ9PnRoaXMuX25hbWVUb0RhdGFTZXJpZXNbdF0uZ2V0U3ltYm9sKCkubWV0aG9kKCl9X2RldGVybWluZVN5bWJvbCh0LGUpe3JldHVybiB0W2VdLmdldFN5bWJvbCgpLmNoYXJhY3Rlcn1nZXQgX3RhZ0ZpbHRlcigpe3JldHVybiBDZS5leHBvcnRzLmZsYXR0ZW4odGhpcy5tYXJnaW5DaGFydFNlcmllcy5tYXAoKHQ9Plt0LnZhbHVlLHQubG93ZXIsdC51cHBlcl0pKSkubWFwKCh0PT4iKCIrdGhpcy5fZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKHQpKyIpIikpLmpvaW4oInwiKX1fZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKHQpe3JldHVybiB0LnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIil9X2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3RvZ2dsZU1hdGNoZXNPcGVuKCl7dGhpcy5zZXQoIl9tYXRjaGVzTGlzdE9wZW5lZCIsIXRoaXMuX21hdGNoZXNMaXN0T3BlbmVkKX1nZXQgX3RpdGxlRGlzcGxheVN0cmluZygpe3JldHVybiB0aGlzLnRpdGxlfHwidW50aXRsZWQifV9zZXBhcmF0ZVdpdGhDb21tYXModCl7cmV0dXJuIHQuam9pbigiLCAiKX1fdG9nZ2xlTWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW4oKXt0aGlzLnNldCgiX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQiLCF0aGlzLl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkKX1fbWF0Y2hMaXN0RW50cnlDb2xvclVwZGF0ZWQoKXtjb25zdCB0PXRoaXMuJCQoIiNtYXRjaC1saXN0LXJlcGVhdCIpO3QmJnRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIubWF0Y2gtbGlzdC1lbnRyeSIpLmZvckVhY2goKGU9Pntjb25zdCBuPXQuaXRlbUZvckVsZW1lbnQoZSk7ZS5zdHlsZS5jb2xvcj10aGlzLl9kZXRlcm1pbmVDb2xvcih0aGlzLl9jb2xvclNjYWxlLG4pfSkpfX07d0F0LnRlbXBsYXRlPXhlYAogICAgPHRmLWNhcmQtaGVhZGluZyBkaXNwbGF5LW5hbWU9IltbX3RpdGxlRGlzcGxheVN0cmluZ11dIj48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgICAgIGRhdGEtc2VyaWVzPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgIGZpbGwtYXJlYT0iW1tfZmlsbEFyZWFdXSIKICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tpZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICBsb2FkLWtleT0iW1tfdGFnRmlsdGVyXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24obWFyZ2luQ2hhcnRTZXJpZXMpXV0iCiAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgc3ltYm9sLWZ1bmN0aW9uPSJbW19jcmVhdGVTeW1ib2xGdW5jdGlvbigpXV0iCiAgICAgICAgdG9vbHRpcC1jb2x1bW5zPSJbW190b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICB4LXR5cGU9IltbeFR5cGVdXSIKICAgICAgPgogICAgICA8L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImJ1dHRvbnMiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBpY29uPSJsaW5lLXdlaWdodCIKICAgICAgICBvbi10YXA9Il90b2dnbGVMb2dTY2FsZSIKICAgICAgICB0aXRsZT0iVG9nZ2xlIHktYXhpcyBsb2cgc2NhbGUiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iRml0IGRvbWFpbiB0byBkYXRhIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHNwYW4gc3R5bGU9ImZsZXgtZ3JvdzogMSI+PC9zcGFuPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZG93bmxvYWQtbGlua3MiPgogICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgICAgICAgIGxhYmVsPSJzZXJpZXMgdG8gZG93bmxvYWQiCiAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZH19IgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgICAgICAgICAgYXM9ImRhdGFTZXJpZXNOYW1lIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICAgICAgICA+W1tkYXRhU2VyaWVzTmFtZV1dPC9wYXBlci1pdGVtCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmNzdiIKICAgICAgICAgICAgaHJlZj0iW1tfY3N2VXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIgogICAgICAgICAgICA+Q1NWPC9hCiAgICAgICAgICA+CiAgICAgICAgICA8YQogICAgICAgICAgICBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uanNvbiIKICAgICAgICAgICAgaHJlZj0iW1tfanNvblVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkpTT048L2EKICAgICAgICAgID4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDwhLS0gaGVyZSAtLT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbWlzc2luZ1RhZ3MubGVuZ3RoXV0iPgogICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzaWJsZS1saXN0LXRpdGxlIj4KICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbihfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCldXSIKICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlTWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW4iCiAgICAgICAgICBjbGFzcz0idG9nZ2xlLWNvbGxhcHNpYmxlLWJ1dHRvbiIKICAgICAgICA+CiAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY29sbGFwc2libGUtdGl0bGUtdGV4dCI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4gTWlzc2luZyBUYWdzCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLWNvbnRlbnQiPgogICAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfbWlzc2luZ1RhZ3NdXSIgYXM9Im1pc3NpbmdFbnRyeSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pc3NpbmctdGFncy1mb3ItcnVuLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgUnVuICJbW21pc3NpbmdFbnRyeS5ydW5dXSIgbGFja3MgZGF0YSBmb3IgdGFncwogICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgICAgaXRlbXM9IltbbWlzc2luZ0VudHJ5LnRhZ3NdXSIKICAgICAgICAgICAgICAgICAgYXM9InRhZyIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPGxpPltbdGFnXV08L2xpPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgIDwvdGVtcGxhdGU+CgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW190YWdGaWx0ZXJJbnZhbGlkXV0iPgogICAgICA8ZGl2IGNsYXNzPSJlcnJvci1jb250ZW50Ij4KICAgICAgICA8aXJvbi1pY29uIGNsYXNzPSJlcnJvci1pY29uIiBpY29uPSJpY29uczplcnJvciI+PC9pcm9uLWljb24+CiAgICAgICAgVGhpcyByZWd1bGFyIGV4cHJlc2lvbiBpcyBpbnZhbGlkOjxiciAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJpbnZhbGlkLXJlZ2V4Ij5bW190YWdGaWx0ZXJdXTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc3RlcHNNaXNtYXRjaF1dIj4KICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItY29udGVudCI+CiAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgIFRoZSBzdGVwcyBmb3IgdmFsdWUsIGxvd2VyLCBhbmQgdXBwZXIgdGFncyBkbyBub3QgbWF0Y2g6CiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFnLW5hbWUiPltbX3N0ZXBzTWlzbWF0Y2guc2VyaWVzT2JqZWN0LnZhbHVlXV08L3NwYW4+OgogICAgICAgICAgICBbW19zZXBhcmF0ZVdpdGhDb21tYXMoX3N0ZXBzTWlzbWF0Y2gudmFsdWVTdGVwcyldXQogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhZy1uYW1lIj5bW19zdGVwc01pc21hdGNoLnNlcmllc09iamVjdC5sb3dlcl1dPC9zcGFuPjoKICAgICAgICAgICAgW1tfc2VwYXJhdGVXaXRoQ29tbWFzKF9zdGVwc01pc21hdGNoLmxvd2VyU3RlcHMpXV0KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGk+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWctbmFtZSI+W1tfc3RlcHNNaXNtYXRjaC5zZXJpZXNPYmplY3QudXBwZXJdXTwvc3Bhbj46CiAgICAgICAgICAgIFtbX3NlcGFyYXRlV2l0aENvbW1hcyhfc3RlcHNNaXNtYXRjaC51cHBlclN0ZXBzKV1dCiAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8ZGl2IGlkPSJtYXRjaGVzLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbGxhcHNpYmxlLWxpc3QtdGl0bGUiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbihfbWF0Y2hlc0xpc3RPcGVuZWQpXV0iCiAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlTWF0Y2hlc09wZW4iCiAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtbWF0Y2hlcy1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDxzcGFuIGNsYXNzPSJjb2xsYXBzaWJsZS10aXRsZS10ZXh0Ij4KICAgICAgICAgIE1hdGNoZXMgKFtbX3Nlcmllc05hbWVzLmxlbmd0aF1dKQogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWF0Y2hlc0xpc3RPcGVuZWRdXSI+CiAgICAgICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QiPgogICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICBhcz0ic2VyaWVzTmFtZSIKICAgICAgICAgICAgICBpZD0ibWF0Y2gtbGlzdC1yZXBlYXQiCiAgICAgICAgICAgICAgb24tZG9tLWNoYW5nZT0iX21hdGNoTGlzdEVudHJ5Q29sb3JVcGRhdGVkIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0Y2gtbGlzdC1lbnRyeSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2gtZW50cnktc3ltYm9sIj4KICAgICAgICAgICAgICAgICAgW1tfZGV0ZXJtaW5lU3ltYm9sKF9uYW1lVG9EYXRhU2VyaWVzLCBzZXJpZXNOYW1lKV1dCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICBbW3Nlcmllc05hbWVdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWN1c3RvbS1zY2FsYXItY2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLmVycm9yLWNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6ICNmMDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIG1hcmdpbjogMTBweCAwIDAgMDsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CgogICAgICAuZXJyb3ItaWNvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICBtYXJnaW46IDAgYXV0byA1cHggYXV0bzsKICAgICAgfQoKICAgICAgLmludmFsaWQtcmVnZXggewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CgogICAgICAuZXJyb3ItY29udGVudCB1bCB7CiAgICAgICAgbWFyZ2luOiAxcHggMCAwIDA7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTlweDsKICAgICAgfQoKICAgICAgLnRhZy1uYW1lIHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLmNvbGxhcHNpYmxlLWxpc3QtdGl0bGUgewogICAgICAgIG1hcmdpbjogMTBweCAwIDVweCAwOwogICAgICB9CgogICAgICAuY29sbGFwc2libGUtdGl0bGUtdGV4dCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQoKICAgICAgI21hdGNoZXMtbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLm1hdGNoLWxpc3QtZW50cnkgewogICAgICAgIG1hcmdpbjogMCAwIDVweCAwOwogICAgICB9CgogICAgICAubWF0Y2gtZW50cnktc3ltYm9sIHsKICAgICAgICBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICB9CgogICAgICAubWlzc2luZy10YWdzLWZvci1ydW4tY29udGFpbmVyIHsKICAgICAgICBtYXJnaW46IDhweCAwIDAgMDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdBdC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdBdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJtYXJnaW5DaGFydFNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdBdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLHdBdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwic2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd0F0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfdGFnRmlsdGVySW52YWxpZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3QXQucHJvdG90eXBlLCJfbmFtZVRvRGF0YVNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfbG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSx3QXQucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0F0LnByb3RvdHlwZSwiX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0F0LnByb3RvdHlwZSwiX21hdGNoZXNMaXN0T3BlbmVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdBdC5wcm90b3R5cGUsIl9maWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd0F0LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx3QXQucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3QXQucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3QXQucHJvdG90eXBlLCJfc3RlcHNNaXNtYXRjaCIsdm9pZCAwKSx0KFthKCJfbmFtZVRvRGF0YVNlcmllcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sd0F0LnByb3RvdHlwZSwiX3VwZGF0ZUNoYXJ0IixudWxsKSx0KFtzKCJfbmFtZVRvRGF0YVNlcmllcyIsInJ1bnMiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3QXQucHJvdG90eXBlLCJfc2VyaWVzTmFtZXMiLG51bGwpLHQoW2EoIl90YWdGaWx0ZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHdBdC5wcm90b3R5cGUsIl9yZWZyZXNoRGF0YVNlcmllcyIsbnVsbCksdChbcygibWFyZ2luQ2hhcnRTZXJpZXMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3QXQucHJvdG90eXBlLCJfdGFnRmlsdGVyIixudWxsKSx0KFtzKCJ0aXRsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHdBdC5wcm90b3R5cGUsIl90aXRsZURpc3BsYXlTdHJpbmciLG51bGwpLHdBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkIildLHdBdCk7dmFyIFNBdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxUWVBFUzpbXSxnZXRSdW5zTmFtZWQ6ZnVuY3Rpb24gTUF0KHQpe3JldHVybiBDZS5leHBvcnRzLmtleXModCkuc29ydCh1cil9LGdldFRhZ3M6ZnIsZmlsdGVyVGFnczpmdW5jdGlvbiBFQXQodCxlKXtsZXQgbj1bXTtyZXR1cm4gZS5mb3JFYWNoKChlPT5uPW4uY29uY2F0KHRbZV0pKSksQ2UuZXhwb3J0cy51bmlxKG4pLnNvcnQodXIpfSxMaXN0ZW5LZXk6QWwsQmFzZVN0b3JlOmtsLENhbmNlbGxlcjp4TyxFbnZpcm9ubWVudFN0b3JlOlBsLGVudmlyb25tZW50U3RvcmU6TGwsRXhwZXJpbWVudHNTdG9yZTpkTyxleHBlcmltZW50c1N0b3JlOnBPLFJlcXVlc3RDYW5jZWxsYXRpb25FcnJvcjptcixJbnZhbGlkUmVxdWVzdE9wdGlvbnNFcnJvcjpncixSZXF1ZXN0TmV0d29ya0Vycm9yOl9yLGdldCBIdHRwTWV0aG9kVHlwZSgpe3JldHVybiB5cn0sUmVxdWVzdE9wdGlvbnM6dnIsUmVxdWVzdE1hbmFnZXI6YnIsY3JlYXRlUm91dGVyOk1yLGdldFJvdXRlcjpFcixzZXRSb3V0ZXI6ZnVuY3Rpb24gVEF0KHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKCJSb3V0ZXIgcmVxdWlyZWQsIGJ1dCBnb3Q6ICIrdCk7U3I9dH0sY3JlYXRlU2VhcmNoUGFyYW06Q3IsUnVuc1N0b3JlOklsLHJ1bnNTdG9yZTpObCxhZGRQYXJhbXM6TE99KTtsZXQgQ0F0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hY3RpdmU9ITAsdGhpcy5fY29sb3JTY2FsZT1uZXcgeEF0KHtzY2FsZTpfT30pLHRoaXMuX25hbWVUb0RhdGFTZXJpZXM9e30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fcmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvc2NhbGFycyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1MTyhpLHt0YWc6dGhpcy5fdGFnRmlsdGVyLHJ1bjp0fSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXg9e30sdGhpcy5fbWF0Y2hlc0xpc3RPcGVuZWQ9ITF9cmVsb2FkKCl7dGhpcy4kLmxvYWRlci5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLiQubG9hZGVyLnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX1fcmVzZXREb21haW4oKXtjb25zdCB0PXRoaXMuJC5sb2FkZXI7dCYmdC5yZXNldERvbWFpbigpfV9jc3ZVcmwodCxlKXtpZighZSlyZXR1cm4iIjtyZXR1cm4gTE8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pfV9qc29uVXJsKHQsZSl7aWYoIWUpcmV0dXJuIiI7cmV0dXJuIExPKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LGUpe2NvbnN0IG49dFtlXSxpPXt0YWc6bi5nZXRUYWcoKSxydW46bi5nZXRSdW4oKX07cmV0dXJuIExPKEVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2Rvd25sb2FkX2RhdGEiKSxpKX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybih0LGUsbik9PntpZihuLnJlZ2V4X3ZhbGlkKXtjb25zdCB0PUNlLmV4cG9ydHMuY2xvbmUodGhpcy5fbmFtZVRvRGF0YVNlcmllcyk7Q2UuZXhwb3J0cy5mb3JPd24obi50YWdfdG9fZXZlbnRzLCgobixpKT0+e2NvbnN0IHI9bi5tYXAoKHQ9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0WzBdKSxzdGVwOnRbMV0sc2NhbGFyOnRbMl19KSkpLG89YkF0KGUsaSksYT10W29dO2lmKGEpYS5zZXREYXRhKHIpO2Vsc2V7Q2UuZXhwb3J0cy5pc1VuZGVmaW5lZCh0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXSkmJih0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXT0wKTtjb25zdCBuPW5ldyB2QXQoZSxpLG8scix4Q3RbdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZV1dKTt0W29dPW47dGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZV09KHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W2VdKzEpJXhDdC5sZW5ndGh9fSkpLHRoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIsdCl9fX1fdXBkYXRlQ2hhcnQoKXtPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5mb3JFYWNoKCgoW3QsZV0pPT57dGhpcy4kLmxvYWRlci5zZXRTZXJpZXNEYXRhKHQsZS5nZXREYXRhKCkpfSkpLHRoaXMuJC5sb2FkZXIuY29tbWl0Q2hhbmdlcygpfV9jb21wdXRlU2VsZWN0ZWRSdW5zU2V0KHQpe2NvbnN0IGU9e307cmV0dXJuIENlLmV4cG9ydHMuZm9yRWFjaCh0LCh0PT57ZVt0XT0xfSkpLGV9Z2V0IF9zZXJpZXNOYW1lcygpe2NvbnN0IHQ9bmV3IFNldCh0aGlzLnJ1bnMpO3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5maWx0ZXIoKChbZSxuXSk9PnQuaGFzKG4ucnVuKSkpLm1hcCgoKFt0XSk9PnQpKX1fZGV0ZXJtaW5lQ29sb3IodCxlKXtyZXR1cm4gdC5zY2FsZShlKX1fcmVmcmVzaERhdGFTZXJpZXMoKXt0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHt9KX1fY3JlYXRlU3ltYm9sRnVuY3Rpb24oKXtyZXR1cm4gdD0+dGhpcy5fbmFtZVRvRGF0YVNlcmllc1t0XS5nZXRTeW1ib2woKS5tZXRob2QoKX1fZGV0ZXJtaW5lU3ltYm9sKHQsZSl7cmV0dXJuIHRbZV0uZ2V0U3ltYm9sKCkuY2hhcmFjdGVyfWdldCBfdGFnRmlsdGVyKCl7dmFyIHQ9dGhpcy50YWdSZWdleGVzO3JldHVybiAxPT09dC5sZW5ndGg/dFswXTp0Lm1hcCgodD0+IigiK3QrIikiKSkuam9pbigifCIpfV9nZXRUb2dnbGVNYXRjaGVzSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3RvZ2dsZU1hdGNoZXNPcGVuKCl7dGhpcy5zZXQoIl9tYXRjaGVzTGlzdE9wZW5lZCIsIXRoaXMuX21hdGNoZXNMaXN0T3BlbmVkKX1nZXQgX3RpdGxlRGlzcGxheVN0cmluZygpe3JldHVybiB0aGlzLnRpdGxlfHwidW50aXRsZWQifV9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCh0KXtjb25zdCBlPXRoaXMuJCQoIiNtYXRjaC1saXN0LXJlcGVhdCIpO2UmJnRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIubWF0Y2gtbGlzdC1lbnRyeSIpLmZvckVhY2goKHQ9Pntjb25zdCBuPWUuaXRlbUZvckVsZW1lbnQodCk7dC5zdHlsZS5jb2xvcj10aGlzLl9kZXRlcm1pbmVDb2xvcih0aGlzLl9jb2xvclNjYWxlLG4pfSkpfX07Q0F0LnRlbXBsYXRlPXhlYAogICAgPHRmLWNhcmQtaGVhZGluZyBkaXNwbGF5LW5hbWU9IltbX3RpdGxlRGlzcGxheVN0cmluZ11dIj48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgICAgIGRhdGEtc2VyaWVzPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIGxvYWQta2V5PSJbW190YWdGaWx0ZXJdXSIKICAgICAgICBkYXRhLXRvLWxvYWQ9IltbcnVuc11dIgogICAgICAgIHJlcXVlc3QtZGF0YT0iW1tfcmVxdWVzdERhdGFdXSIKICAgICAgICBsb2ctc2NhbGUtYWN0aXZlPSJbW19sb2dTY2FsZUFjdGl2ZV1dIgogICAgICAgIGxvYWQtZGF0YS1jYWxsYmFjaz0iW1tfY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpXV0iCiAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9Iltbc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgIHNtb290aGluZy13ZWlnaHQ9Iltbc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgc3ltYm9sLWZ1bmN0aW9uPSJbW19jcmVhdGVTeW1ib2xGdW5jdGlvbigpXV0iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICA+CiAgICAgIDwvdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcj4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0iYnV0dG9ucyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19sb2dTY2FsZUFjdGl2ZV1dIgogICAgICAgIGljb249ImxpbmUtd2VpZ2h0IgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUxvZ1NjYWxlIgogICAgICAgIHRpdGxlPSJUb2dnbGUgeS1heGlzIGxvZyBzY2FsZSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIGljb249InNldHRpbmdzLW92ZXJzY2FuIgogICAgICAgIG9uLXRhcD0iX3Jlc2V0RG9tYWluIgogICAgICAgIHRpdGxlPSJGaXQgZG9tYWluIHRvIGRhdGEiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8c3BhbiBzdHlsZT0iZmxleC1ncm93OiAxIj48L3NwYW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZC1saW5rcyI+CiAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICBuby1sYWJlbC1mbG9hdD0idHJ1ZSIKICAgICAgICAgICAgbGFiZWw9InNlcmllcyB0byBkb3dubG9hZCIKICAgICAgICAgICAgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkfX0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgICAgICAgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iCiAgICAgICAgICAgICAgICBhcz0iZGF0YVNlcmllc05hbWUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0gbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgICAgICAgICAgICAgID5bW2RhdGFTZXJpZXNOYW1lXV08L3BhcGVyLWl0ZW0KICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICA8YQogICAgICAgICAgICBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uY3N2IgogICAgICAgICAgICBocmVmPSJbW19jc3ZVcmwoX25hbWVUb0RhdGFTZXJpZXMsIF9kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWQpXV0iCiAgICAgICAgICAgID5DU1Y8L2EKICAgICAgICAgID4KICAgICAgICAgIDxhCiAgICAgICAgICAgIGRvd25sb2FkPSJbW19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWRdXS5qc29uIgogICAgICAgICAgICBocmVmPSJbW19qc29uVXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIgogICAgICAgICAgICA+SlNPTjwvYQogICAgICAgICAgPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJtYXRjaGVzLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgaWQ9Im1hdGNoZXMtbGlzdC10aXRsZSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgaWNvbj0iW1tfZ2V0VG9nZ2xlTWF0Y2hlc0ljb24oX21hdGNoZXNMaXN0T3BlbmVkKV1dIgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZU1hdGNoZXNPcGVuIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLW1hdGNoZXMtYnV0dG9uIgogICAgICAgICAgPgogICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2hlcy10ZXh0Ij4gTWF0Y2hlcyAoW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0pIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWF0Y2hlc0xpc3RPcGVuZWRdXSI+CiAgICAgICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QiPgogICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICBhcz0ic2VyaWVzTmFtZSIKICAgICAgICAgICAgICBpZD0ibWF0Y2gtbGlzdC1yZXBlYXQiCiAgICAgICAgICAgICAgb24tZG9tLWNoYW5nZT0iX21hdGNoTGlzdEVudHJ5Q29sb3JVcGRhdGVkIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0Y2gtbGlzdC1lbnRyeSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2gtZW50cnktc3ltYm9sIj4KICAgICAgICAgICAgICAgICAgW1tfZGV0ZXJtaW5lU3ltYm9sKF9uYW1lVG9EYXRhU2VyaWVzLCBzZXJpZXNOYW1lKV1dCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICBbW3Nlcmllc05hbWVdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWN1c3RvbS1zY2FsYXItY2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgI21hdGNoZXMtbGlzdC10aXRsZSB7CiAgICAgICAgbWFyZ2luOiAxMHB4IDAgNXB4IDA7CiAgICAgIH0KCiAgICAgICNtYXRjaGVzLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5tYXRjaC1saXN0LWVudHJ5IHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggMDsKICAgICAgfQoKICAgICAgLm1hdGNoLWVudHJ5LXN5bWJvbCB7CiAgICAgICAgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgfQoKICAgICAgLm1hdGNoZXMtdGV4dCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxDQXQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENBdC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ0F0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENBdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxDQXQucHJvdG90eXBlLCJ0YWdSZWdleGVzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ0F0LnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sQ0F0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDQXQucHJvdG90eXBlLCJzaG93RG93bmxvYWRMaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENBdC5wcm90b3R5cGUsInNtb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQ0F0LnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLENBdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENBdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhBdCldLENBdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLENBdC5wcm90b3R5cGUsIl9uYW1lVG9EYXRhU2VyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENBdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENBdC5wcm90b3R5cGUsIl9sb2dTY2FsZUFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLENBdC5wcm90b3R5cGUsIl9yZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxDQXQucHJvdG90eXBlLCJfcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDQXQucHJvdG90eXBlLCJfbWF0Y2hlc0xpc3RPcGVuZWQiLHZvaWQgMCksdChbYSgiX25hbWVUb0RhdGFTZXJpZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLENBdC5wcm90b3R5cGUsIl91cGRhdGVDaGFydCIsbnVsbCksdChbcygiX25hbWVUb0RhdGFTZXJpZXMiLCJydW5zIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQ0F0LnByb3RvdHlwZSwiX3Nlcmllc05hbWVzIixudWxsKSx0KFthKCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxDQXQucHJvdG90eXBlLCJfcmVmcmVzaERhdGFTZXJpZXMiLG51bGwpLHQoW3MoInRhZ1JlZ2V4ZXMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDQXQucHJvdG90eXBlLCJfdGFnRmlsdGVyIixudWxsKSx0KFtzKCJ0aXRsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENBdC5wcm90b3R5cGUsIl90aXRsZURpc3BsYXlTdHJpbmciLG51bGwpLENBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLW11bHRpLWxpbmUtY2hhcnQtY2FyZCIpXSxDQXQpO2xldCBBQXQ9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyKDUwKSx0aGlzLl9jYW5jZWxsZXI9bmV3IHhPLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzPVFzKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl9zbW9vdGhpbmdXZWlnaHQ9cmwoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KS5jYWxsKHRoaXMpLHRoaXMuX2lnbm9yZVlPdXRsaWVycz1RcygiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3hUeXBlPSJzdGVwIix0aGlzLl9hY3RpdmU9ITAsdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXI9dGwoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSx0aGlzLl9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlcj1vbCgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLHRoaXMuX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyPXRsKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7Y29uc3QgdD1FcigpLnBsdWdpbnNMaXN0aW5nKCksZT10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9Pnt0LmNhbmNlbGxlZHx8KHRoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwhdC52YWx1ZS5jdXN0b21fc2NhbGFycyksdGhpcy5fZGF0YU5vdEZvdW5kfHx0aGlzLl9yZXRyaWV2ZUxheW91dEFuZERhdGEoKSl9KSk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKGUpfV9yZWxvYWRDaGFydHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtY3VzdG9tLXNjYWxhci1tYXJnaW4tY2hhcnQtY2FyZCwgdGYtY3VzdG9tLXNjYWxhci1tdWx0aS1saW5lLWNoYXJ0LWNhcmQiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fcmV0cmlldmVMYXlvdXRBbmREYXRhKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9sYXlvdXQiKSxlPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e3QuY2FuY2VsbGVkfHwodGhpcy5zZXQoIl9sYXlvdXQiLHQudmFsdWUpLHRoaXMuX2RhdGFOb3RGb3VuZHx8dGhpcy5fcmVsb2FkQ2hhcnRzKCkpfSkpO3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihlKX1nZXQgX3Ntb290aGluZ0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5fc21vb3RoaW5nV2VpZ2h0PjB9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fbGF5b3V0O2lmKCF0LmNhdGVnb3J5KXJldHVybltdO2xldCBlPSExO3RoaXMuX29wZW5lZENhdGVnb3JpZXN8fChlPSEwLHRoaXMuX29wZW5lZENhdGVnb3JpZXM9e30pO3JldHVybiB0LmNhdGVnb3J5Lm1hcCgodD0+KGUmJiF0LmNsb3NlZCYmKHRoaXMuX29wZW5lZENhdGVnb3JpZXNbdC50aXRsZV09ITApLHtuYW1lOnQudGl0bGUsaXRlbXM6dC5jaGFydCxtZXRhZGF0YTp7dHlwZTpBci5QUkVGSVhfR1JPVVAsb3BlbmVkOiEhdGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1t0LnRpdGxlXX19KSkpfV9jYXRlZ29yeU9wZW5lZFRvZ2dsZWQodCl7Y29uc3QgZT10LnRhcmdldDtlLm9wZW5lZD90aGlzLl9vcGVuZWRDYXRlZ29yaWVzW2UuY2F0ZWdvcnkubmFtZV09ITA6ZGVsZXRlIHRoaXMuX29wZW5lZENhdGVnb3JpZXNbZS5jYXRlZ29yeS5uYW1lXX19O0FBdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19zaG93RG93bmxvYWRMaW5rc319IgogICAgICAgICAgICAgICAgPlNob3cgZGF0YSBkb3dubG9hZCBsaW5rczwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19pZ25vcmVZT3V0bGllcnN9fSIKICAgICAgICAgICAgICAgID5JZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZzwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ0b29sdGlwLXNvcnRpbmciPgogICAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZy1sYWJlbCI+VG9vbHRpcCBzb3J0aW5nIG1ldGhvZDo8L2Rpdj4KICAgICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9IiIKICAgICAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3Rvb2x0aXBTb3J0aW5nTWV0aG9kfX0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSIwIgogICAgICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZWZhdWx0PC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5hc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPm5lYXJlc3Q8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLXNtb290aGluZy1pbnB1dAogICAgICAgICAgICAgIHdlaWdodD0ie3tfc21vb3RoaW5nV2VpZ2h0fX0iCiAgICAgICAgICAgICAgc3RlcD0iMC4wMDEiCiAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgIG1heD0iMSIKICAgICAgICAgICAgPjwvdGYtc21vb3RoaW5nLWlucHV0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9IngtdHlwZS1zZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIb3Jpem9udGFsIEF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIiBpZD0iY2F0ZWdvcmllcy1jb250YWluZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPlRoZSBjdXN0b20gc2NhbGFycyBkYXNoYm9hcmQgaXMgaW5hY3RpdmUuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPG9sPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW4ndCBsYWlkIG91dCB0aGUgZGFzaGJvYXJkLjwvbGk+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgc2NhbGFyIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L29sPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgVG8gbGF5IG91dCB0aGUgZGFzaGJvYXJkLCBwYXNzIGEgPGNvZGU+TGF5b3V0PC9jb2RlPiBwcm90b2J1ZmZlcgogICAgICAgICAgICAgIHRvIHRoZSA8Y29kZT5zZXRfbGF5b3V0PC9jb2RlPiBtZXRob2QuIEZvciBleGFtcGxlLAogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwcmU+CmZyb20gdGVuc29yYm9hcmQgaW1wb3J0IHN1bW1hcnkKZnJvbSB0ZW5zb3Jib2FyZC5wbHVnaW5zLmN1c3RvbV9zY2FsYXIgaW1wb3J0IGxheW91dF9wYjIKLi4uCiMgVGhpcyBhY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBwZXJmb3JtZWQgYXQgZXZlcnkgc3RlcCwgc28gdGhlIGFjdGlvbiBpcyBub3QKIyB0YWtlbiBjYXJlIG9mIGJ5IGFuIG9wIGluIHRoZSBncmFwaC4gV2Ugb25seSBuZWVkIHRvIHNwZWNpZnkgdGhlIGxheW91dCBvbmNlCiMgKGluc3RlYWQgb2YgcGVyIHN0ZXApLgpsYXlvdXRfc3VtbWFyeSA9IHN1bW1hcnlfbGliLmN1c3RvbV9zY2FsYXJfcGIobGF5b3V0X3BiMi5MYXlvdXQoCiAgY2F0ZWdvcnk9WwogICAgbGF5b3V0X3BiMi5DYXRlZ29yeSgKICAgICAgdGl0bGU9J2xvc3NlcycsCiAgICAgIGNoYXJ0PVsKICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J2xvc3NlcycsCiAgICAgICAgICAgICAgbXVsdGlsaW5lPWxheW91dF9wYjIuTXVsdGlsaW5lQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgdGFnPVtyJ2xvc3MuKiddLAogICAgICAgICAgICAgICkpLAogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0nYmF6JywKICAgICAgICAgICAgICBtYXJnaW49bGF5b3V0X3BiMi5NYXJnaW5DaGFydENvbnRlbnQoCiAgICAgICAgICAgICAgICBzZXJpZXM9WwogICAgICAgICAgICAgICAgICBsYXlvdXRfcGIyLk1hcmdpbkNoYXJ0Q29udGVudC5TZXJpZXMoCiAgICAgICAgICAgICAgICAgICAgdmFsdWU9J2xvc3MvYmF6L3NjYWxhcl9zdW1tYXJ5JywKICAgICAgICAgICAgICAgICAgICBsb3dlcj0nYmF6X2xvd2VyL2Jhei9zY2FsYXJfc3VtbWFyeScsCiAgICAgICAgICAgICAgICAgICAgdXBwZXI9J2Jhel91cHBlci9iYXovc2NhbGFyX3N1bW1hcnknKSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgKSksCiAgICAgIF0pLAogICAgbGF5b3V0X3BiMi5DYXRlZ29yeSgKICAgICAgdGl0bGU9J3RyaWcgZnVuY3Rpb25zJywKICAgICAgY2hhcnQ9WwogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0nd2F2ZSB0cmlnIGZ1bmN0aW9ucycsCiAgICAgICAgICAgICAgbXVsdGlsaW5lPWxheW91dF9wYjIuTXVsdGlsaW5lQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgdGFnPVtyJ3RyaWdGdW5jdGlvbnMvY29zaW5lJywgcid0cmlnRnVuY3Rpb25zL3NpbmUnXSwKICAgICAgICAgICAgICApKSwKICAgICAgICAgICMgVGhlIHJhbmdlIG9mIHRhbmdlbnQgaXMgZGlmZmVyZW50LiBMZXQncyBnaXZlIGl0IGl0cyBvd24gY2hhcnQuCiAgICAgICAgICBsYXlvdXRfcGIyLkNoYXJ0KAogICAgICAgICAgICAgIHRpdGxlPSd0YW4nLAogICAgICAgICAgICAgIG11bHRpbGluZT1sYXlvdXRfcGIyLk11bHRpbGluZUNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHRhZz1bcid0cmlnRnVuY3Rpb25zL3RhbmdlbnQnXSwKICAgICAgICAgICAgICApKSwKICAgICAgXSwKICAgICAgIyBUaGlzIGNhdGVnb3J5IHdlIGNhcmUgbGVzcyBhYm91dC4gTGV0J3MgbWFrZSBpdCBpbml0aWFsbHkgY2xvc2VkLgogICAgICBjbG9zZWQ9VHJ1ZSksCiAgXSkpCndyaXRlci5hZGRfc3VtbWFyeShsYXlvdXRfc3VtbWFyeSkKPC9wcmUKICAgICAgICAgICAgPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGFzPSJjaGFydCIKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGRpc2FibGUtcGFnaW5hdGlvbgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW2NhdGVnb3J5Lm1ldGFkYXRhLm9wZW5lZF1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJ0Lm11bHRpbGluZV1dIj4KICAgICAgICAgICAgICAgICAgPHRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgICBydW5zPSJbW19zZWxlY3RlZFJ1bnNdXSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iW1tjaGFydC50aXRsZV1dIgogICAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgICAgICAgICAgICAgIHNtb290aGluZy13ZWlnaHQ9IltbX3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgICAgICAgICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICAgICAgICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tfaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgICAgICAgICAgICAgc2hvdy1kb3dubG9hZC1saW5rcz0iW1tfc2hvd0Rvd25sb2FkTGlua3NdXSIKICAgICAgICAgICAgICAgICAgICB0YWctcmVnZXhlcz0iW1tjaGFydC5tdWx0aWxpbmUudGFnXV0iCiAgICAgICAgICAgICAgICAgID48L3RmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFydC5tYXJnaW5dXSI+CiAgICAgICAgICAgICAgICAgIDx0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgICBydW5zPSJbW19zZWxlY3RlZFJ1bnNdXSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iW1tjaGFydC50aXRsZV1dIgogICAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgICAgICAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgICAgICAgICAgICAgIHNob3ctZG93bmxvYWQtbGlua3M9IltbX3Nob3dEb3dubG9hZExpbmtzXV0iCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWNoYXJ0LXNlcmllcz0iW1tjaGFydC5tYXJnaW4uc2VyaWVzXV0iCiAgICAgICAgICAgICAgICAgID48L3RmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQ+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQogICAgICAjdG9vbHRpcC1zb3J0aW5nIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICB3aWR0aDogMTA1cHg7CiAgICAgIH0KICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sQUF0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sQUF0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sQUF0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsIl9zaG93RG93bmxvYWRMaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQUF0LnByb3RvdHlwZSwiX3Ntb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9pZ25vcmVZT3V0bGllcnNPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsIl9pZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQUF0LnByb3RvdHlwZSwiX3hUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEFBdC5wcm90b3R5cGUsIl9sYXlvdXQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxBQXQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEFBdC5wcm90b3R5cGUsIl9vcGVuZWRDYXRlZ29yaWVzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQUF0LnByb3RvdHlwZSwiX2FjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFBdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbcygiX3Ntb290aGluZ1dlaWdodCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxBQXQucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsbnVsbCksdChbcygiX2xheW91dCIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQUF0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLEFBdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLWRhc2hib2FyZCIpXSxBQXQpO2NsYXNzIGtBdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucnVuMmRhdGFzZXRzPXt9LHRoaXMuY29sb3JTY2FsZT1lLHRoaXMuYnVpbGRDaGFydCh0KX1nZXREYXRhc2V0KHQpe3JldHVybiB2b2lkIDA9PT10aGlzLnJ1bjJkYXRhc2V0c1t0XSYmKHRoaXMucnVuMmRhdGFzZXRzW3RdPW5ldyBJTy5EYXRhc2V0KFtdLHtydW46dH0pKSx0aGlzLnJ1bjJkYXRhc2V0c1t0XX1idWlsZENoYXJ0KHQpe3RoaXMub3V0ZXImJnRoaXMub3V0ZXIuZGVzdHJveSgpO2xldCBlPWtDdCh0KTt0aGlzLnhBY2Nlc3Nvcj1lLmFjY2Vzc29yLHRoaXMueFNjYWxlPWUuc2NhbGUsdGhpcy54QXhpcz1lLmF4aXMsdGhpcy54QXhpcy5tYXJnaW4oMCksdGhpcy54QXhpcy50aWNrTGFiZWxQYWRkaW5nKDMpLHRoaXMueVNjYWxlPW5ldyBJTy5TY2FsZXMuTGluZWFyLHRoaXMueUF4aXM9bmV3IElPLkF4ZXMuTnVtZXJpYyh0aGlzLnlTY2FsZSwibGVmdCIpO2xldCBuPVNDdCgzKTt0aGlzLnlBeGlzLm1hcmdpbigwKS50aWNrTGFiZWxQYWRkaW5nKDUpLmZvcm1hdHRlcihuKSx0aGlzLnlBeGlzLnVzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uKCEwKTtsZXQgaT10aGlzLmJ1aWxkUGxvdCh0aGlzLnhBY2Nlc3Nvcix0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSk7dGhpcy5ncmlkbGluZXM9bmV3IElPLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKSx0aGlzLmNlbnRlcj1uZXcgSU8uQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsaV0pLHRoaXMub3V0ZXI9bmV3IElPLkNvbXBvbmVudHMuVGFibGUoW1t0aGlzLnlBeGlzLHRoaXMuY2VudGVyXSxbbnVsbCx0aGlzLnhBeGlzXV0pfWJ1aWxkUGxvdCh0LGUsbil7bGV0IGk9WzAsMjI4LDE1ODcsMzA4NSw1ZTMsNjkxNSw4NDEzLDk3NzIsMWU0XSxyPUNlLmV4cG9ydHMucmFuZ2UoaS5sZW5ndGgtMSkubWFwKCh0PT4oaVt0KzFdLWlbdF0pLzI1MDApKSxvPWkubWFwKCgodCxlKT0+dD0+dFtlXVsxXSkpLGE9b1s0XSxzPUNlLmV4cG9ydHMucmFuZ2Uoby5sZW5ndGgtMSkubWFwKChpPT57bGV0IGE9bmV3IElPLlBsb3RzLkFyZWE7YS54KHQsZSk7bGV0IHM9aT40P29baV06b1tpKzFdO3JldHVybiBhLnkoaT40P29baSsxXTpvW2ldLG4pLGEueTAocyksYS5hdHRyKCJmaWxsIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5ydW4pKSksYS5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLnJ1bikpKSxhLmF0dHIoInN0cm9rZS13ZWlnaHQiLCgodCxlLG4pPT4iMC41cHgiKSksYS5hdHRyKCJzdHJva2Utb3BhY2l0eSIsKCgpPT5yW2ldKSksYS5hdHRyKCJmaWxsLW9wYWNpdHkiLCgoKT0+cltpXSkpLGF9KSksbD1uZXcgSU8uUGxvdHMuTGluZTtyZXR1cm4gbC54KHQsZSksbC55KGEsbiksbC5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5ydW4pKSksdGhpcy5wbG90cz1zLG5ldyBJTy5Db21wb25lbnRzLkdyb3VwKHMpfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5ydW5zPXQ7bGV0IGU9dC5tYXAoKHQ9PnRoaXMuZ2V0RGF0YXNldCh0KSkpO3RoaXMucGxvdHMuZm9yRWFjaCgodD0+dC5kYXRhc2V0cyhlKSkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmdldERhdGFzZXQodCkuZGF0YShlKX1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCl9cmVkcmF3KCl7dGhpcy5vdXRlci5yZWRyYXcoKX1kZXN0cm95KCl7dGhpcy5vdXRlci5kZXN0cm95KCl9fWxldCBQQXQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9KG5ldyBJTy5TY2FsZXMuQ29sb3IpLnJhbmdlKGpBLnNsaWNlKCkpLHRoaXMueFR5cGU9InN0ZXAiLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGx9c2V0VmlzaWJsZVNlcmllcyh0KXt0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModCksdGhpcy5yZWRyYXcoKSl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1lLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsZSl9cmVkcmF3KCl7dGhpcy5fY2hhcnQucmVkcmF3KCl9X21ha2VDaGFydCgpe3ZhciB0PXRoaXMueFR5cGUsZT10aGlzLmNvbG9yU2NhbGUsbj10aGlzLl9hdHRhY2hlZDtudWxsPT09dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkJiZ0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPXRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7aWYodGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwsbil7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LmRlc3Ryb3koKTt2YXIgaT1uZXcga0F0KHQsZSkscj1EdSh0aGlzLiQuY2hhcnRkaXYpO2kucmVuZGVyVG8ociksdGhpcy5fY2hhcnQ9aX19KSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlKSx0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsdGhpcy5fc2VyaWVzRGF0YUNhY2hlW3RdfHxbXSl9LmJpbmQodGhpcykpKX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwfWRldGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITF9fTtQQXQudGVtcGxhdGU9eGVgCiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPGRpdiBpZD0iY2hhcnRkaXYiPjwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICAgICNjaGFydGRpdiB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgfQogICAgICAucGxvdHRhYmxlIC5heGlzIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLElPLlNjYWxlcy5Db2xvcildLFBBdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUEF0LnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxQQXQucHJvdG90eXBlLCJfYXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsa0F0KV0sUEF0LnByb3RvdHlwZSwiX2NoYXJ0Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxQQXQucHJvdG90eXBlLCJfdmlzaWJsZVNlcmllc0NhY2hlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFBBdC5wcm90b3R5cGUsIl9zZXJpZXNEYXRhQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUEF0LnByb3RvdHlwZSwiX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCIsdm9pZCAwKSx0KFthKCJ4VHlwZSIsImNvbG9yU2NhbGUiLCJfYXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFBBdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUEF0LnByb3RvdHlwZSwiX3JlbG9hZEZyb21DYWNoZSIsbnVsbCksUEF0PXQoW2koInZ6LWRpc3RyaWJ1dGlvbi1jaGFydCIpXSxQQXQpO2xldCBMQXQ9Y2xhc3MgZXh0ZW5kcyhiQ3QoY3Iod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuZ2V0RGF0YUxvYWROYW1lPSh7cnVuOnR9KT0+dCx0aGlzLnJlcXVlc3REYXRhPSh0LGUsbik9Pntjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoImRpc3RyaWJ1dGlvbnMiLCIvZGlzdHJpYnV0aW9ucyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1MTyhpLHt0YWc6dC50YWcscnVuOnQucnVufSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5sb2FkRGF0YUNhbGxiYWNrPSh0LGUsbik9Pntjb25zdCBpPW4ubWFwKCh0PT57Y29uc3RbZSxuLGldPXQ7cmV0dXJuIGkud2FsbF90aW1lPW5ldyBEYXRlKDFlMyplKSxpLnN0ZXA9bixpfSkpLHI9dGhpcy5nZXREYXRhTG9hZE5hbWUoZSk7dGhpcy4kLmNoYXJ0LnNldFNlcmllc0RhdGEocixpKSx0aGlzLiQuY2hhcnQuc2V0VmlzaWJsZVNlcmllcyhbcl0pfSx0aGlzLl9jb2xvclNjYWxlPXtzY2FsZTpfT30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fY2FuY2VsbGVyPW5ldyB4T31fcmVsb2FkT25SdW5UYWdDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dGhpcy5kYXRhVG9Mb2FkPVt7cnVuOnRoaXMucnVuLHRhZzp0aGlzLnRhZ31dfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZS5zY2FsZSh0aGlzLnJ1bil9cmVkcmF3KCl7dGhpcy4kLmNoYXJ0LnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9fTtMQXQudGVtcGxhdGU9eGVgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8IS0tCiAgICAgIFRoZSBtYWluIGRpc3RyaWJ1dGlvbiB0aGF0IHdlIHJlbmRlci4gRGF0YSBpcyBzZXQgZGlyZWN0bHkgd2l0aAogICAgICBcYHNldFNlcmllc0RhdGFcYCwgbm90IHdpdGggYSBib3VuZCBwcm9wZXJ0eS4KICAgIC0tPgogICAgPHZ6LWRpc3RyaWJ1dGlvbi1jaGFydAogICAgICBpZD0iY2hhcnQiCiAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgPjwvdnotZGlzdHJpYnV0aW9uLWNoYXJ0PgogICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogMzMwcHg7CiAgICAgICAgaGVpZ2h0OiAyMzVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiA3MDBweDsKICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICB2ei1oaXN0b2dyYW0tdGltZXNlcmllcyB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQoKICAgICAgdGYtY2FyZC1oZWFkaW5nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTEF0LnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLExBdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMQXQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxMQXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMQXQucHJvdG90eXBlLCJnZXREYXRhTG9hZE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTEF0LnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMQXQucHJvdG90eXBlLCJfY29sb3JTY2FsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxMQXQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxMQXQucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIix4TyldLExBdC5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxMQXQucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdDaGFuZ2UiLG51bGwpLHQoW2EoInJ1biIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sTEF0LnByb3RvdHlwZSwiX3VwZGF0ZURhdGFUb0xvYWQiLG51bGwpLHQoW3MoInJ1biIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLExBdC5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksTEF0PXQoW2koInRmLWRpc3RyaWJ1dGlvbi1sb2FkZXIiKV0sTEF0KTtsZXQgSUF0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3hUeXBlPSJzdGVwIix0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZERpc3RyaWJ1dGlvbnMoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJkaXN0cmlidXRpb25zIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1DZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpLG49ZnIoZSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1uLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZyIsZSksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkRGlzdHJpYnV0aW9ucygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1kaXN0cmlidXRpb24tbG9hZGVyIikuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9Z2V0IF9jYXRlZ29yaWVzKCl7cmV0dXJuIE5yKHRoaXMuX3J1blRvVGFnLHRoaXMuX3NlbGVjdGVkUnVucyx0aGlzLl90YWdGaWx0ZXIpfV90YWdNZXRhZGF0YSh0LGUsbil7cmV0dXJuIHRbZV1bbl19fTtJQXQudGVtcGxhdGU9eGVgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ4VHlwZVNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ikhvcml6b250YWwgYXhpcyIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfeFR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGRpc3RyaWJ1dGlvbiBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBoaXN0b2dyYW0gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLgogICAgICAgICAgICAgICAgKEhpc3RvZ3JhbXMgYW5kIGRpc3RyaWJ1dGlvbnMgYm90aCB1c2UgdGhlIGhpc3RvZ3JhbSBzdW1tYXJ5CiAgICAgICAgICAgICAgICBvcGVyYXRpb24uKQogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1kaXN0cmlidXRpb24tbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1kaXN0cmlidXRpb24tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJQXQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLElBdC5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sSUF0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxJQXQucHJvdG90eXBlLCJfcnVuVG9UYWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSUF0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLElBdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSUF0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLElBdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxJQXQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxJQXQucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksSUF0PXQoW2koInRmLWRpc3RyaWJ1dGlvbi1kYXNoYm9hcmQiKV0sSUF0KTt2YXIgTkF0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLExpc3RlbktleTpNcyxhZGRIYXNoTGlzdGVuZXI6Q3MsYWRkU3RvcmFnZUxpc3RlbmVyOkFzLGZpcmVTdG9yYWdlQ2hhbmdlZDprcyxyZW1vdmVIYXNoTGlzdGVuZXJCeUtleTpQcyxyZW1vdmVTdG9yYWdlTGlzdGVuZXJCeUtleTpMcyxnZXRVcmxIYXNoRGljdDpmdW5jdGlvbiBSQXQoKXtyZXR1cm4gRnN9LERJU0FNQklHVUFUT1I6V3MsZ2V0U3RyaW5nOnFzLHNldFN0cmluZzpZcyxnZXRTdHJpbmdJbml0aWFsaXplcjpYcyxnZXRTdHJpbmdPYnNlcnZlcjokcyxkaXNwb3NlU3RyaW5nQmluZGluZzpLcyxnZXRCb29sZWFuOlpzLHNldEJvb2xlYW46SnMsZ2V0Qm9vbGVhbkluaXRpYWxpemVyOlFzLGdldEJvb2xlYW5PYnNlcnZlcjp0bCxkaXNwb3NlQm9vbGVhbkJpbmRpbmc6ZWwsZ2V0TnVtYmVyOm5sLHNldE51bWJlcjppbCxnZXROdW1iZXJJbml0aWFsaXplcjpybCxnZXROdW1iZXJPYnNlcnZlcjpvbCxkaXNwb3NlTnVtYmVyQmluZGluZzphbCxnZXRPYmplY3Q6c2wsc2V0T2JqZWN0OmxsLGdldE9iamVjdEluaXRpYWxpemVyOmNsLGdldE9iamVjdE9ic2VydmVyOnVsLGRpc3Bvc2VPYmplY3RCaW5kaW5nOmhsLG1ha2VCaW5kaW5nczpkbCxtaWdyYXRlTGVnYWN5VVJMU2NoZW1lOmZ1bmN0aW9uIE9BdCgpe2NvbnN0IHQ9bmV3IFNldChbImV4YW1wbGVzUGF0aCIsImhpZGVNb2RlbFBhbmUyIiwibW9kZWxOYW1lMSIsIm1vZGVsTmFtZTIiLCJpbmZlcmVuY2VBZGRyZXNzMSIsImluZmVyZW5jZUFkZHJlc3MyIiwibW9kZWxUeXBlIiwibW9kZWxWZXJzaW9uMSIsIm1vZGVsVmVyc2lvbjIiLCJtb2RlbFNpZ25hdHVyZTEiLCJtb2RlbFNpZ25hdHVyZTIiLCJtYXhFeGFtcGxlcyIsImxhYmVsVm9jYWJQYXRoIiwibXVsdGlDbGFzcyIsInNlcXVlbmNlRXhhbXBsZXMiLCJtYXhDbGFzc2VzVG9EaXNwbGF5Iiwic2FtcGxpbmdPZGRzIiwidXNlUHJlZGljdEFwaSIsInByZWRpY3RJbnB1dFRlbnNvciIsInByZWRpY3RPdXRwdXRUZW5zb3IiXSksZT1VcyhWcygpKTtpZigid2hhdGlmIj09PWUuX190YWJfXylmb3IobGV0IG4gb2YgdClpZihuIGluIGUpe2VbYHAud2hhdGlmLiR7bn1gXT1lW25dfWpzKEdzKGUpKSwoZnVuY3Rpb24gbih0KXtGcz10fSkoZSl9fSk7dmFyIHpBdCxEQXQ7IShmdW5jdGlvbih0KXt0LkZFVENIX1BCVFhUX0JZVEVTPSJGRVRDSF9QQlRYVF9CWVRFUyIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU09IkZFVENIX1BCVFhUX0JZVEVTX0ZST01fRklMRVNZU1RFTSIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX1NFUlZFUj0iRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIiLHQuUEFSU0VfUEJUWFRfSU5UT19PQkpFQ1Q9IlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUIix0LkZFVENIX01FVEFEQVRBX1BCVFhUX0JZVEVTPSJGRVRDSF9NRVRBREFUQV9QQlRYVF9CWVRFUyIsdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVD0iUEFSU0VfTUVUQURBVEFfUEJUWFRfSU5UT19PQkpFQ1QiLHQuTk9STUFMSVpJTkdfTkFNRVM9Ik5PUk1BTElaSU5HX05BTUVTIix0LkJVSUxEX1NMSU1fR1JBUEg9IkJVSUxEX1NMSU1fR1JBUEgiLHQuSElFUkFSQ0hZX0FERF9OT0RFUz0iSElFUkFSQ0hZX0FERF9OT0RFUyIsdC5ISUVSQVJDSFlfREVURUNUX1NFUklFUz0iSElFUkFSQ0hZX0RFVEVDVF9TRVJJRVMiLHQuSElFUkFSQ0hZX0FERF9FREdFUz0iSElFUkFSQ0hZX0FERF9FREdFUyIsdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUz0iSElFUkFSQ0hZX0ZJTkRfU0lNSUxBUl9TVUJHUkFQSFMiLHQuUkVOREVSX0JVSUxEX0hJRVJBUkNIWT0iUkVOREVSX0JVSUxEX0hJRVJBUkNIWSIsdC5SRU5ERVJfU0NFTkVfTEFZT1VUPSJSRU5ERVJfU0NFTkVfTEFZT1VUIix0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORT0iUkVOREVSX1NDRU5FX0JVSUxEX1NDRU5FIix0LkdSQVBIX0xPQURfU1VDQ0VFREVEPSJHUkFQSF9MT0FEX1NVQ0NFRURFRCIsdC5HUkFQSF9MT0FEX0ZBSUxFRD0iR1JBUEhfTE9BRF9GQUlMRUQifSkoekF0fHwoekF0PXt9KSksKGZ1bmN0aW9uKHQpe3QuTk9ERV9FWFBBTlNJT05fVE9HR0xFRD0iTk9ERV9FWFBBTlNJT05fVE9HR0xFRCIsdC5OT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRD0iTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUQiLHQuTk9ERV9BVVhJTElBUllfRVhUUkFDVElPTl9DSEFOR0VEPSJOT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQiLHQuR1JBUEhfVFlQRV9DSEFOR0VEPSJHUkFQSF9UWVBFX0NIQU5HRUQiLHQuVFJBQ0VfSU5QVVRfTU9ERV9UT0dHTEVEPSJUUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUQiLHQuTk9ERV9DT0xPUl9NT0RFX0NIQU5HRUQ9Ik5PREVfQ09MT1JfTU9ERV9DSEFOR0VEIix0LlVQTE9BREVEX0dSQVBIX0ZST01fRklMRVNZU1RFTT0iVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNIn0pKERBdHx8KERBdD17fSkpO2NvbnN0IEJBdD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sekF0KSxEQXQpO3ZhciBIQXQ9ZnVuY3Rpb24gRkF0KHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfSxWQXQ9SEF0O3ZhciBVQXQ9ZnVuY3Rpb24gakF0KHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoO24tLTspaWYoVkF0KHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9LEdBdD1VQXQsV0F0PUFycmF5LnByb3RvdHlwZS5zcGxpY2U7dmFyIHFBdD1VQXQ7dmFyIFlBdD1VQXQ7dmFyIFhBdD1VQXQ7dmFyICRBdD1mdW5jdGlvbiBLQXQodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPUdBdChlLHQpO3JldHVybiEobjwwKSYmKG49PWUubGVuZ3RoLTE/ZS5wb3AoKTpXQXQuY2FsbChlLG4sMSksLS10aGlzLnNpemUsITApfSxaQXQ9ZnVuY3Rpb24gSkF0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1xQXQoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfSxRQXQ9ZnVuY3Rpb24gdGt0KHQpe3JldHVybiBZQXQodGhpcy5fX2RhdGFfXyx0KT4tMX0sZWt0PWZ1bmN0aW9uIG5rdCh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX18saT1YQXQobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc307ZnVuY3Rpb24gaWt0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWlrdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gcmt0KCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0saWt0LnByb3RvdHlwZS5kZWxldGU9JEF0LGlrdC5wcm90b3R5cGUuZ2V0PVpBdCxpa3QucHJvdG90eXBlLmhhcz1RQXQsaWt0LnByb3RvdHlwZS5zZXQ9ZWt0O3ZhciBva3Q9aWt0LGFrdD1va3Q7dmFyIHNrdD1mdW5jdGlvbiBsa3QoKXt0aGlzLl9fZGF0YV9fPW5ldyBha3QsdGhpcy5zaXplPTB9O3ZhciBja3Q9ZnVuY3Rpb24gdWt0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufTt2YXIgaGt0PWZ1bmN0aW9uIGRrdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9O3ZhciBwa3Q9ZnVuY3Rpb24gZmt0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX0sbWt0PSJvYmplY3QiPT10eXBlb2YgU2UmJlNlJiZTZS5PYmplY3Q9PT1PYmplY3QmJlNlLGdrdD0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLF9rdD1ta3R8fGdrdHx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSx5a3Q9X2t0LlN5bWJvbCx2a3Q9T2JqZWN0LnByb3RvdHlwZSxia3Q9dmt0Lmhhc093blByb3BlcnR5LHhrdD12a3QudG9TdHJpbmcsd2t0PXlrdD95a3QudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBTa3Q9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgTWt0PWZ1bmN0aW9uIEVrdCh0KXt2YXIgZT1ia3QuY2FsbCh0LHdrdCksbj10W3drdF07dHJ5e3Rbd2t0XT12b2lkIDA7dmFyIGk9ITB9Y2F0Y2godCl7fXZhciByPXhrdC5jYWxsKHQpO3JldHVybiBpJiYoZT90W3drdF09bjpkZWxldGUgdFt3a3RdKSxyfSxUa3Q9ZnVuY3Rpb24gQ2t0KHQpe3JldHVybiBTa3QuY2FsbCh0KX0sQWt0PXlrdD95a3QudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBra3Q9ZnVuY3Rpb24gUGt0KHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOkFrdCYmQWt0IGluIE9iamVjdCh0KT9Na3QodCk6VGt0KHQpfTt2YXIgTGt0PWZ1bmN0aW9uIElrdCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX0sTmt0PWtrdCxSa3Q9TGt0O3ZhciBPa3Qsemt0PWZ1bmN0aW9uIERrdCh0KXtpZighUmt0KHQpKXJldHVybiExO3ZhciBlPU5rdCh0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IFByb3h5XSI9PWV9LEJrdD1fa3RbIl9fY29yZS1qc19zaGFyZWRfXyJdLEhrdD0oT2t0PS9bXi5dKyQvLmV4ZWMoQmt0JiZCa3Qua2V5cyYmQmt0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIitPa3Q6IiI7dmFyIEZrdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7dmFyIFZrdD1mdW5jdGlvbiBVa3QodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBGa3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9LGprdD16a3QsR2t0PWZ1bmN0aW9uIFdrdCh0KXtyZXR1cm4hIUhrdCYmSGt0IGluIHR9LHFrdD1Ma3QsWWt0PVZrdCxYa3Q9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sJGt0PVJlZ0V4cCgiXiIrRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dmFyIEtrdD1mdW5jdGlvbiBaa3QodCl7cmV0dXJuISghcWt0KHQpfHxHa3QodCkpJiYoamt0KHQpPyRrdDpYa3QpLnRlc3QoWWt0KHQpKX0sSmt0PWZ1bmN0aW9uIFFrdCh0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfTt2YXIgdFB0PWZ1bmN0aW9uIGVQdCh0LGUpe3ZhciBuPUprdCh0LGUpO3JldHVybiBLa3Qobik/bjp2b2lkIDB9LG5QdD10UHQoX2t0LCJNYXAiKSxpUHQ9dFB0KE9iamVjdCwiY3JlYXRlIiksclB0PWlQdDt2YXIgb1B0PWlQdCxhUHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgc1B0PWlQdCxsUHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgY1B0PWlQdDt2YXIgdVB0PWZ1bmN0aW9uIGhQdCh0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sZFB0PWZ1bmN0aW9uIHBQdCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKG9QdCl7dmFyIG49ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1uP3ZvaWQgMDpufXJldHVybiBhUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxmUHQ9ZnVuY3Rpb24gbVB0KHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHNQdD92b2lkIDAhPT1lW3RdOmxQdC5jYWxsKGUsdCl9LGdQdD1mdW5jdGlvbiBfUHQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxuW3RdPWNQdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTtmdW5jdGlvbiB5UHQodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19eVB0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiB2UHQoKXt0aGlzLl9fZGF0YV9fPXJQdD9yUHQobnVsbCk6e30sdGhpcy5zaXplPTB9LHlQdC5wcm90b3R5cGUuZGVsZXRlPXVQdCx5UHQucHJvdG90eXBlLmdldD1kUHQseVB0LnByb3RvdHlwZS5oYXM9ZlB0LHlQdC5wcm90b3R5cGUuc2V0PWdQdDt2YXIgYlB0PXlQdCx4UHQ9b2t0LHdQdD1uUHQ7dmFyIFNQdD1mdW5jdGlvbiBNUHQodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PWV8fCJudW1iZXIiPT1lfHwic3ltYm9sIj09ZXx8ImJvb2xlYW4iPT1lPyJfX3Byb3RvX18iIT09dDpudWxsPT09dH07dmFyIEVQdD1mdW5jdGlvbiBUUHQodCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybiBTUHQoZSk/blsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpuLm1hcH0sQ1B0PUVQdDt2YXIgQVB0PUVQdDt2YXIga1B0PUVQdDt2YXIgUFB0PUVQdDt2YXIgTFB0PWZ1bmN0aW9uIElQdCh0KXt2YXIgZT1DUHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTlB0PWZ1bmN0aW9uIFJQdCh0KXtyZXR1cm4gQVB0KHRoaXMsdCkuZ2V0KHQpfSxPUHQ9ZnVuY3Rpb24gelB0KHQpe3JldHVybiBrUHQodGhpcyx0KS5oYXModCl9LERQdD1mdW5jdGlvbiBCUHQodCxlKXt2YXIgbj1QUHQodGhpcyx0KSxpPW4uc2l6ZTtyZXR1cm4gbi5zZXQodCxlKSx0aGlzLnNpemUrPW4uc2l6ZT09aT8wOjEsdGhpc307ZnVuY3Rpb24gSFB0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fUhQdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gRlB0KCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgYlB0LG1hcDpuZXcod1B0fHx4UHQpLHN0cmluZzpuZXcgYlB0fX0sSFB0LnByb3RvdHlwZS5kZWxldGU9TFB0LEhQdC5wcm90b3R5cGUuZ2V0PU5QdCxIUHQucHJvdG90eXBlLmhhcz1PUHQsSFB0LnByb3RvdHlwZS5zZXQ9RFB0O3ZhciBWUHQ9SFB0LFVQdD1va3QsalB0PW5QdCxHUHQ9VlB0O3ZhciBXUHQ9b2t0LHFQdD1ja3QsWVB0PWhrdCxYUHQ9cGt0LCRQdD1mdW5jdGlvbiBLUHQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBVUHQpe3ZhciBpPW4uX19kYXRhX187aWYoIWpQdHx8aS5sZW5ndGg8MTk5KXJldHVybiBpLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK24uc2l6ZSx0aGlzO249dGhpcy5fX2RhdGFfXz1uZXcgR1B0KGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307ZnVuY3Rpb24gWlB0KHQpe3ZhciBlPXRoaXMuX19kYXRhX189bmV3IFdQdCh0KTt0aGlzLnNpemU9ZS5zaXplfVpQdC5wcm90b3R5cGUuY2xlYXI9c2t0LFpQdC5wcm90b3R5cGUuZGVsZXRlPXFQdCxaUHQucHJvdG90eXBlLmdldD1ZUHQsWlB0LnByb3RvdHlwZS5oYXM9WFB0LFpQdC5wcm90b3R5cGUuc2V0PSRQdDt2YXIgSlB0PVpQdDt2YXIgUVB0PWZ1bmN0aW9uIHRMdCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fSxlTHQ9dFB0LG5MdD0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9ZUx0KE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSkoKSxpTHQ9bkx0O3ZhciByTHQ9ZnVuY3Rpb24gb0x0KHQsZSxuKXsiX19wcm90b19fIj09ZSYmaUx0P2lMdCh0LGUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTp0W2VdPW59LGFMdD1yTHQsc0x0PUhBdCxsTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgY0x0PWZ1bmN0aW9uIHVMdCh0LGUsbil7dmFyIGk9dFtlXTtsTHQuY2FsbCh0LGUpJiZzTHQoaSxuKSYmKHZvaWQgMCE9PW58fGUgaW4gdCl8fGFMdCh0LGUsbil9LGhMdD1jTHQsZEx0PXJMdDt2YXIgcEx0PWZ1bmN0aW9uIGZMdCh0LGUsbixpKXt2YXIgcj0hbjtufHwobj17fSk7Zm9yKHZhciBvPS0xLGE9ZS5sZW5ndGg7KytvPGE7KXt2YXIgcz1lW29dLGw9aT9pKG5bc10sdFtzXSxzLG4sdCk6dm9pZCAwO3ZvaWQgMD09PWwmJihsPXRbc10pLHI/ZEx0KG4scyxsKTpoTHQobixzLGwpfXJldHVybiBufTt2YXIgbUx0PWZ1bmN0aW9uIGdMdCh0LGUpe2Zvcih2YXIgbj0tMSxpPUFycmF5KHQpOysrbjx0OylpW25dPWUobik7cmV0dXJuIGl9O3ZhciBfTHQ9ZnVuY3Rpb24geUx0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9LHZMdD1ra3QsYkx0PV9MdDt2YXIgeEx0PWZ1bmN0aW9uIHdMdCh0KXtyZXR1cm4gYkx0KHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09dkx0KHQpfSxTTHQ9X0x0LE1MdD1PYmplY3QucHJvdG90eXBlLEVMdD1NTHQuaGFzT3duUHJvcGVydHksVEx0PU1MdC5wcm9wZXJ0eUlzRW51bWVyYWJsZSxDTHQ9eEx0KChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KSgpKT94THQ6ZnVuY3Rpb24odCl7cmV0dXJuIFNMdCh0KSYmRUx0LmNhbGwodCwiY2FsbGVlIikmJiFUTHQuY2FsbCh0LCJjYWxsZWUiKX0sQUx0PUFycmF5LmlzQXJyYXksa0x0PXtleHBvcnRzOnt9fTt2YXIgUEx0PWZ1bmN0aW9uIExMdCgpe3JldHVybiExfTshKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiZ0JiYhdC5ub2RlVHlwZSYmdCxyPWkmJmkuZXhwb3J0cz09PW4/X2t0LkJ1ZmZlcjp2b2lkIDA7dC5leHBvcnRzPShyP3IuaXNCdWZmZXI6dm9pZCAwKXx8UEx0fSkoa0x0LGtMdC5leHBvcnRzKTt2YXIgSUx0PS9eKD86MHxbMS05XVxkKikkLzt2YXIgTkx0PWZ1bmN0aW9uIFJMdCh0LGUpe3ZhciBuPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT85MDA3MTk5MjU0NzQwOTkxOmUpJiYoIm51bWJlciI9PW58fCJzeW1ib2wiIT1uJiZJTHQudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfTt2YXIgT0x0PWZ1bmN0aW9uIHpMdCh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9OTAwNzE5OTI1NDc0MDk5MX0sREx0PWtrdCxCTHQ9T0x0LEhMdD1fTHQsRkx0PXt9O0ZMdFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09Rkx0WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1GTHRbIltvYmplY3QgSW50OEFycmF5XSJdPUZMdFsiW29iamVjdCBJbnQxNkFycmF5XSJdPUZMdFsiW29iamVjdCBJbnQzMkFycmF5XSJdPUZMdFsiW29iamVjdCBVaW50OEFycmF5XSJdPUZMdFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1GTHRbIltvYmplY3QgVWludDE2QXJyYXldIl09Rkx0WyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLEZMdFsiW29iamVjdCBBcmd1bWVudHNdIl09Rkx0WyJbb2JqZWN0IEFycmF5XSJdPUZMdFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1GTHRbIltvYmplY3QgQm9vbGVhbl0iXT1GTHRbIltvYmplY3QgRGF0YVZpZXddIl09Rkx0WyJbb2JqZWN0IERhdGVdIl09Rkx0WyJbb2JqZWN0IEVycm9yXSJdPUZMdFsiW29iamVjdCBGdW5jdGlvbl0iXT1GTHRbIltvYmplY3QgTWFwXSJdPUZMdFsiW29iamVjdCBOdW1iZXJdIl09Rkx0WyJbb2JqZWN0IE9iamVjdF0iXT1GTHRbIltvYmplY3QgUmVnRXhwXSJdPUZMdFsiW29iamVjdCBTZXRdIl09Rkx0WyJbb2JqZWN0IFN0cmluZ10iXT1GTHRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgVkx0PWZ1bmN0aW9uIFVMdCh0KXtyZXR1cm4gSEx0KHQpJiZCTHQodC5sZW5ndGgpJiYhIUZMdFtETHQodCldfTt2YXIgakx0PWZ1bmN0aW9uIEdMdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9fSxXTHQ9e2V4cG9ydHM6e319OyEoZnVuY3Rpb24odCxlKXt2YXIgbj1lJiYhZS5ub2RlVHlwZSYmZSxpPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHI9aSYmaS5leHBvcnRzPT09biYmbWt0LnByb2Nlc3Msbz0oZnVuY3Rpb24oKXt0cnl7dmFyIHQ9aSYmaS5yZXF1aXJlJiZpLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gdHx8ciYmci5iaW5kaW5nJiZyLmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSkoKTt0LmV4cG9ydHM9b30pKFdMdCxXTHQuZXhwb3J0cyk7dmFyIHFMdD1WTHQsWUx0PVdMdC5leHBvcnRzLFhMdD1ZTHQmJllMdC5pc1R5cGVkQXJyYXksJEx0PVhMdD9qTHQoWEx0KTpxTHQsS0x0PW1MdCxaTHQ9Q0x0LEpMdD1BTHQsUUx0PWtMdC5leHBvcnRzLHRJdD1OTHQsZUl0PSRMdCxuSXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgaUl0PWZ1bmN0aW9uIHJJdCh0LGUpe3ZhciBuPUpMdCh0KSxpPSFuJiZaTHQodCkscj0hbiYmIWkmJlFMdCh0KSxvPSFuJiYhaSYmIXImJmVJdCh0KSxhPW58fGl8fHJ8fG8scz1hP0tMdCh0Lmxlbmd0aCxTdHJpbmcpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIHQpIWUmJiFuSXQuY2FsbCh0LGMpfHxhJiYoImxlbmd0aCI9PWN8fHImJigib2Zmc2V0Ij09Y3x8InBhcmVudCI9PWMpfHxvJiYoImJ1ZmZlciI9PWN8fCJieXRlTGVuZ3RoIj09Y3x8ImJ5dGVPZmZzZXQiPT1jKXx8dEl0KGMsbCkpfHxzLnB1c2goYyk7cmV0dXJuIHN9LG9JdD1PYmplY3QucHJvdG90eXBlO3ZhciBhSXQ9ZnVuY3Rpb24gc0l0KHQpe3ZhciBlPXQmJnQuY29uc3RydWN0b3I7cmV0dXJuIHQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUucHJvdG90eXBlfHxvSXQpfTt2YXIgbEl0PWZ1bmN0aW9uIGNJdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChlKG4pKX19LHVJdD1sSXQoT2JqZWN0LmtleXMsT2JqZWN0KSxoSXQ9YUl0LGRJdD11SXQscEl0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGZJdD1mdW5jdGlvbiBtSXQodCl7aWYoIWhJdCh0KSlyZXR1cm4gZEl0KHQpO3ZhciBlPVtdO2Zvcih2YXIgbiBpbiBPYmplY3QodCkpcEl0LmNhbGwodCxuKSYmImNvbnN0cnVjdG9yIiE9biYmZS5wdXNoKG4pO3JldHVybiBlfSxnSXQ9emt0LF9JdD1PTHQ7dmFyIHlJdD1mdW5jdGlvbiB2SXQodCl7cmV0dXJuIG51bGwhPXQmJl9JdCh0Lmxlbmd0aCkmJiFnSXQodCl9LGJJdD1pSXQseEl0PWZJdCx3SXQ9eUl0O3ZhciBTSXQ9ZnVuY3Rpb24gTUl0KHQpe3JldHVybiB3SXQodCk/Ykl0KHQpOnhJdCh0KX0sRUl0PXBMdCxUSXQ9U0l0O3ZhciBDSXQ9ZnVuY3Rpb24gQUl0KHQsZSl7cmV0dXJuIHQmJkVJdChlLFRJdChlKSx0KX07dmFyIGtJdD1Ma3QsUEl0PWFJdCxMSXQ9ZnVuY3Rpb24gSUl0KHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIE9iamVjdCh0KSllLnB1c2gobik7cmV0dXJuIGV9LE5JdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBSSXQ9aUl0LE9JdD1mdW5jdGlvbiB6SXQodCl7aWYoIWtJdCh0KSlyZXR1cm4gTEl0KHQpO3ZhciBlPVBJdCh0KSxuPVtdO2Zvcih2YXIgaSBpbiB0KSgiY29uc3RydWN0b3IiIT1pfHwhZSYmTkl0LmNhbGwodCxpKSkmJm4ucHVzaChpKTtyZXR1cm4gbn0sREl0PXlJdDt2YXIgQkl0PWZ1bmN0aW9uIEhJdCh0KXtyZXR1cm4gREl0KHQpP1JJdCh0LCEwKTpPSXQodCl9LEZJdD1wTHQsVkl0PUJJdDt2YXIgVUl0PWZ1bmN0aW9uIGpJdCh0LGUpe3JldHVybiB0JiZGSXQoZSxWSXQoZSksdCl9LEdJdD17ZXhwb3J0czp7fX07IShmdW5jdGlvbih0LGUpe3ZhciBuPWUmJiFlLm5vZGVUeXBlJiZlLGk9biYmdCYmIXQubm9kZVR5cGUmJnQscj1pJiZpLmV4cG9ydHM9PT1uP19rdC5CdWZmZXI6dm9pZCAwLG89cj9yLmFsbG9jVW5zYWZlOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24gYSh0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgbj10Lmxlbmd0aCxpPW8/byhuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9fSkoR0l0LEdJdC5leHBvcnRzKTt2YXIgV0l0PWZ1bmN0aW9uIHFJdCh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGV8fChlPUFycmF5KGkpKTsrK248aTspZVtuXT10W25dO3JldHVybiBlfTt2YXIgWUl0PWZ1bmN0aW9uIFhJdCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl07ZShhLG4sdCkmJihvW3IrK109YSl9cmV0dXJuIG99O3ZhciAkSXQ9ZnVuY3Rpb24gS0l0KCl7cmV0dXJuW119LFpJdD1ZSXQsSkl0PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsUUl0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsdE50PVFJdD9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksWkl0KFFJdCh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIEpJdC5jYWxsKHQsZSl9KSkpfTokSXQsZU50PXBMdCxuTnQ9dE50O3ZhciBpTnQ9ZnVuY3Rpb24gck50KHQsZSl7cmV0dXJuIGVOdCh0LG5OdCh0KSxlKX07dmFyIG9OdD1mdW5jdGlvbiBhTnQodCxlKXtmb3IodmFyIG49LTEsaT1lLmxlbmd0aCxyPXQubGVuZ3RoOysrbjxpOyl0W3Irbl09ZVtuXTtyZXR1cm4gdH0sc050PWxJdChPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KSxsTnQ9b050LGNOdD1zTnQsdU50PXROdCxoTnQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspbE50KGUsdU50KHQpKSx0PWNOdCh0KTtyZXR1cm4gZX06JEl0LGROdD1wTHQscE50PWhOdDt2YXIgZk50PWZ1bmN0aW9uIG1OdCh0LGUpe3JldHVybiBkTnQodCxwTnQodCksZSl9LGdOdD1vTnQsX050PUFMdDt2YXIgeU50PWZ1bmN0aW9uIHZOdCh0LGUsbil7dmFyIGk9ZSh0KTtyZXR1cm4gX050KHQpP2k6Z050KGksbih0KSl9LGJOdD15TnQseE50PXROdCx3TnQ9U0l0O3ZhciBTTnQ9ZnVuY3Rpb24gTU50KHQpe3JldHVybiBiTnQodCx3TnQseE50KX0sRU50PXlOdCxUTnQ9aE50LENOdD1CSXQ7dmFyIEFOdD1mdW5jdGlvbiBrTnQodCl7cmV0dXJuIEVOdCh0LENOdCxUTnQpfSxQTnQ9dFB0KF9rdCwiRGF0YVZpZXciKSxMTnQ9dFB0KF9rdCwiUHJvbWlzZSIpLElOdD10UHQoX2t0LCJTZXQiKSxOTnQ9UE50LFJOdD1uUHQsT050PUxOdCx6TnQ9SU50LEROdD10UHQoX2t0LCJXZWFrTWFwIiksQk50PWtrdCxITnQ9Vmt0LEZOdD0iW29iamVjdCBNYXBdIixWTnQ9IltvYmplY3QgUHJvbWlzZV0iLFVOdD0iW29iamVjdCBTZXRdIixqTnQ9IltvYmplY3QgV2Vha01hcF0iLEdOdD0iW29iamVjdCBEYXRhVmlld10iLFdOdD1ITnQoTk50KSxxTnQ9SE50KFJOdCksWU50PUhOdChPTnQpLFhOdD1ITnQoek50KSwkTnQ9SE50KEROdCksS050PUJOdDsoTk50JiZLTnQobmV3IE5OdChuZXcgQXJyYXlCdWZmZXIoMSkpKSE9R050fHxSTnQmJktOdChuZXcgUk50KSE9Rk50fHxPTnQmJktOdChPTnQucmVzb2x2ZSgpKSE9Vk50fHx6TnQmJktOdChuZXcgek50KSE9VU50fHxETnQmJktOdChuZXcgRE50KSE9ak50KSYmKEtOdD1mdW5jdGlvbih0KXt2YXIgZT1CTnQodCksbj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxpPW4/SE50KG4pOiIiO2lmKGkpc3dpdGNoKGkpe2Nhc2UgV050OnJldHVybiBHTnQ7Y2FzZSBxTnQ6cmV0dXJuIEZOdDtjYXNlIFlOdDpyZXR1cm4gVk50O2Nhc2UgWE50OnJldHVybiBVTnQ7Y2FzZSAkTnQ6cmV0dXJuIGpOdH1yZXR1cm4gZX0pO3ZhciBaTnQ9S050LEpOdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBRTnQ9ZnVuY3Rpb24gdFJ0KHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmSk50LmNhbGwodCwiaW5kZXgiKSYmKG4uaW5kZXg9dC5pbmRleCxuLmlucHV0PXQuaW5wdXQpLG59LGVSdD1fa3QuVWludDhBcnJheSxuUnQ9ZVJ0O3ZhciBpUnQ9ZnVuY3Rpb24gclJ0KHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBuUnQoZSkuc2V0KG5ldyBuUnQodCkpLGV9LG9SdD1pUnQ7dmFyIGFSdD0vXHcqJC87dmFyIHNSdD15a3Q/eWt0LnByb3RvdHlwZTp2b2lkIDAsbFJ0PXNSdD9zUnQudmFsdWVPZjp2b2lkIDA7dmFyIGNSdD1pUnQ7dmFyIHVSdD1mdW5jdGlvbiBoUnQodCxlKXt2YXIgbj1lP2NSdCh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX0sZFJ0PWlSdCxwUnQ9ZnVuY3Rpb24gZlJ0KHQsZSl7dmFyIG49ZT9vUnQodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSxtUnQ9ZnVuY3Rpb24gZ1J0KHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLGFSdC5leGVjKHQpKTtyZXR1cm4gZS5sYXN0SW5kZXg9dC5sYXN0SW5kZXgsZX0sX1J0PWZ1bmN0aW9uIHlSdCh0KXtyZXR1cm4gbFJ0P09iamVjdChsUnQuY2FsbCh0KSk6e319LHZSdD11UnQ7dmFyIGJSdD1mdW5jdGlvbiB4UnQodCxlLG4pe3ZhciBpPXQuY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiBkUnQodCk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgaSgrdCk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIHBSdCh0LG4pO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiB2UnQodCxuKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyBpO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBpKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4gbVJ0KHQpO2Nhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IGk7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOnJldHVybiBfUnQodCl9fSx3UnQ9TGt0LFNSdD1PYmplY3QuY3JlYXRlLE1SdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihlKXtpZighd1J0KGUpKXJldHVybnt9O2lmKFNSdClyZXR1cm4gU1J0KGUpO3QucHJvdG90eXBlPWU7dmFyIG49bmV3IHQ7cmV0dXJuIHQucHJvdG90eXBlPXZvaWQgMCxufX0pKCksRVJ0PU1SdCxUUnQ9c050LENSdD1hSXQ7dmFyIEFSdD1mdW5jdGlvbiBrUnQodCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fENSdCh0KT97fTpFUnQoVFJ0KHQpKX0sUFJ0PVpOdCxMUnQ9X0x0O3ZhciBJUnQ9ZnVuY3Rpb24gTlJ0KHQpe3JldHVybiBMUnQodCkmJiJbb2JqZWN0IE1hcF0iPT1QUnQodCl9LFJSdD1XTHQuZXhwb3J0cyxPUnQ9UlJ0JiZSUnQuaXNNYXAselJ0PU9SdD9qTHQoT1J0KTpJUnQsRFJ0PVpOdCxCUnQ9X0x0O3ZhciBIUnQ9ZnVuY3Rpb24gRlJ0KHQpe3JldHVybiBCUnQodCkmJiJbb2JqZWN0IFNldF0iPT1EUnQodCl9LFZSdD1XTHQuZXhwb3J0cyxVUnQ9VlJ0JiZWUnQuaXNTZXQsalJ0PVVSdD9qTHQoVVJ0KTpIUnQsR1J0PUpQdCxXUnQ9UVB0LHFSdD1jTHQsWVJ0PUNJdCxYUnQ9VUl0LCRSdD1HSXQuZXhwb3J0cyxLUnQ9V0l0LFpSdD1pTnQsSlJ0PWZOdCxRUnQ9U050LHRPdD1BTnQsZU90PVpOdCxuT3Q9UU50LGlPdD1iUnQsck90PUFSdCxvT3Q9QUx0LGFPdD1rTHQuZXhwb3J0cyxzT3Q9elJ0LGxPdD1Ma3QsY090PWpSdCx1T3Q9U0l0LGhPdD1CSXQsZE90PSJbb2JqZWN0IEFyZ3VtZW50c10iLHBPdD0iW29iamVjdCBGdW5jdGlvbl0iLGZPdD0iW29iamVjdCBPYmplY3RdIixtT3Q9e307bU90W2RPdF09bU90WyJbb2JqZWN0IEFycmF5XSJdPW1PdFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1tT3RbIltvYmplY3QgRGF0YVZpZXddIl09bU90WyJbb2JqZWN0IEJvb2xlYW5dIl09bU90WyJbb2JqZWN0IERhdGVdIl09bU90WyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1tT3RbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPW1PdFsiW29iamVjdCBJbnQ4QXJyYXldIl09bU90WyJbb2JqZWN0IEludDE2QXJyYXldIl09bU90WyJbb2JqZWN0IEludDMyQXJyYXldIl09bU90WyJbb2JqZWN0IE1hcF0iXT1tT3RbIltvYmplY3QgTnVtYmVyXSJdPW1PdFtmT3RdPW1PdFsiW29iamVjdCBSZWdFeHBdIl09bU90WyJbb2JqZWN0IFNldF0iXT1tT3RbIltvYmplY3QgU3RyaW5nXSJdPW1PdFsiW29iamVjdCBTeW1ib2xdIl09bU90WyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09bU90WyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPW1PdFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1tT3RbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsbU90WyJbb2JqZWN0IEVycm9yXSJdPW1PdFtwT3RdPW1PdFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBnT3Q9ZnVuY3Rpb24gdChlLG4saSxyLG8sYSl7dmFyIHMsbD0xJm4sYz0yJm4sdT00Jm47aWYoaSYmKHM9bz9pKGUscixvLGEpOmkoZSkpLHZvaWQgMCE9PXMpcmV0dXJuIHM7aWYoIWxPdChlKSlyZXR1cm4gZTt2YXIgaD1vT3QoZSk7aWYoaCl7aWYocz1uT3QoZSksIWwpcmV0dXJuIEtSdChlLHMpfWVsc2V7dmFyIGQ9ZU90KGUpLHA9ZD09cE90fHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1kO2lmKGFPdChlKSlyZXR1cm4gJFJ0KGUsbCk7aWYoZD09Zk90fHxkPT1kT3R8fHAmJiFvKXtpZihzPWN8fHA/e306ck90KGUpLCFsKXJldHVybiBjP0pSdChlLFhSdChzLGUpKTpaUnQoZSxZUnQocyxlKSl9ZWxzZXtpZighbU90W2RdKXJldHVybiBvP2U6e307cz1pT3QoZSxkLGwpfX1hfHwoYT1uZXcgR1J0KTt2YXIgZj1hLmdldChlKTtpZihmKXJldHVybiBmO2Euc2V0KGUscyksY090KGUpP2UuZm9yRWFjaCgoZnVuY3Rpb24ocil7cy5hZGQodChyLG4saSxyLGUsYSkpfSkpOnNPdChlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3Muc2V0KG8sdChyLG4saSxvLGUsYSkpfSkpO3ZhciBtPWg/dm9pZCAwOih1P2M/dE90OlFSdDpjP2hPdDp1T3QpKGUpO3JldHVybiBXUnQobXx8ZSwoZnVuY3Rpb24ocixvKXttJiYocj1lW289cl0pLHFSdChzLG8sdChyLG4saSxvLGUsYSkpfSkpLHN9LF9PdD1nT3Q7dmFyIHlPdD1mdW5jdGlvbiB2T3QodCl7cmV0dXJuIF9PdCh0LDQpfTt2YXIgYk90PWZ1bmN0aW9uIHhPdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19O3ZhciB3T3Q9KGZ1bmN0aW9uIFNPdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgcj0tMSxvPU9iamVjdChlKSxhPWkoZSkscz1hLmxlbmd0aDtzLS07KXt2YXIgbD1hW3Q/czorK3JdO2lmKCExPT09bihvW2xdLGwsbykpYnJlYWt9cmV0dXJuIGV9fSkoKSxNT3Q9d090LEVPdD1TSXQ7dmFyIFRPdD1mdW5jdGlvbiBDT3QodCxlKXtyZXR1cm4gdCYmTU90KHQsZSxFT3QpfSxBT3Q9eUl0O3ZhciBrT3Q9KGZ1bmN0aW9uIFBPdCh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIG47aWYoIUFPdChuKSlyZXR1cm4gdChuLGkpO2Zvcih2YXIgcj1uLmxlbmd0aCxvPWU/cjotMSxhPU9iamVjdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fSkoVE90KTt2YXIgTE90PWZ1bmN0aW9uIElPdCh0KXtyZXR1cm4gdH0sTk90PUxPdDt2YXIgUk90PWZ1bmN0aW9uIE9PdCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok5PdH0sek90PVFQdCxET3Q9a090LEJPdD1ST3QsSE90PUFMdDt2YXIgRk90PWZ1bmN0aW9uIFZPdCh0LGUpe3JldHVybihIT3QodCk/ek90OkRPdCkodCxCT3QoZSkpfSxVT3Q9Rk90LGpPdD1rT3Q7dmFyIEdPdD1mdW5jdGlvbiBXT3QodCxlKXt2YXIgbj1bXTtyZXR1cm4gak90KHQsKGZ1bmN0aW9uKHQsaSxyKXtlKHQsaSxyKSYmbi5wdXNoKHQpfSkpLG59O3ZhciBxT3Q9VlB0LFlPdD1mdW5jdGlvbiBYT3QodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTtmdW5jdGlvbiAkT3QodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IHFPdDsrK2U8bjspdGhpcy5hZGQodFtlXSl9JE90LnByb3RvdHlwZS5hZGQ9JE90LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uIEtPdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LCRPdC5wcm90b3R5cGUuaGFzPVlPdDt2YXIgWk90PSRPdDt2YXIgSk90PWZ1bmN0aW9uIFFPdCh0LGUpe3JldHVybiB0LmhhcyhlKX0sdHp0PVpPdCxlenQ9ZnVuY3Rpb24gbnp0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpOylpZihlKHRbbl0sbix0KSlyZXR1cm4hMDtyZXR1cm4hMX0saXp0PUpPdDt2YXIgcnp0PWZ1bmN0aW9uIG96dCh0LGUsbixpLHIsbyl7dmFyIGE9MSZuLHM9dC5sZW5ndGgsbD1lLmxlbmd0aDtpZihzIT1sJiYhKGEmJmw+cykpcmV0dXJuITE7dmFyIGM9by5nZXQodCksdT1vLmdldChlKTtpZihjJiZ1KXJldHVybiBjPT1lJiZ1PT10O3ZhciBoPS0xLGQ9ITAscD0yJm4/bmV3IHR6dDp2b2lkIDA7Zm9yKG8uc2V0KHQsZSksby5zZXQoZSx0KTsrK2g8czspe3ZhciBmPXRbaF0sbT1lW2hdO2lmKGkpdmFyIGc9YT9pKG0sZixoLGUsdCxvKTppKGYsbSxoLHQsZSxvKTtpZih2b2lkIDAhPT1nKXtpZihnKWNvbnRpbnVlO2Q9ITE7YnJlYWt9aWYocCl7aWYoIWV6dChlLChmdW5jdGlvbih0LGUpe2lmKCFpenQocCxlKSYmKGY9PT10fHxyKGYsdCxuLGksbykpKXJldHVybiBwLnB1c2goZSl9KSkpe2Q9ITE7YnJlYWt9fWVsc2UgaWYoZiE9PW0mJiFyKGYsbSxuLGksbykpe2Q9ITE7YnJlYWt9fXJldHVybiBvLmRlbGV0ZSh0KSxvLmRlbGV0ZShlKSxkfTt2YXIgYXp0PWZ1bmN0aW9uIHN6dCh0KXt2YXIgZT0tMSxuPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7blsrK2VdPXR9KSksbn0sbHp0PWVSdCxjenQ9SEF0LHV6dD1yenQsaHp0PWZ1bmN0aW9uIGR6dCh0KXt2YXIgZT0tMSxuPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtuWysrZV09W2ksdF19KSksbn0scHp0PWF6dCxmenQ9eWt0P3lrdC5wcm90b3R5cGU6dm9pZCAwLG16dD1menQ/Znp0LnZhbHVlT2Y6dm9pZCAwO3ZhciBnenQ9U050LF96dD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciB5enQ9SlB0LHZ6dD1yenQsYnp0PWZ1bmN0aW9uIHh6dCh0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhbyhuZXcgbHp0KHQpLG5ldyBsenQoZSkpKTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiBjenQoK3QsK2UpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09ZSsiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIHM9aHp0O2Nhc2UiW29iamVjdCBTZXRdIjppZihzfHwocz1wenQpLHQuc2l6ZSE9ZS5zaXplJiYhKDEmaSkpcmV0dXJuITE7dmFyIGw9YS5nZXQodCk7aWYobClyZXR1cm4gbD09ZTtpfD0yLGEuc2V0KHQsZSk7dmFyIGM9dXp0KHModCkscyhlKSxpLHIsbyxhKTtyZXR1cm4gYS5kZWxldGUodCksYztjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYobXp0KXJldHVybiBtenQuY2FsbCh0KT09bXp0LmNhbGwoZSl9cmV0dXJuITF9LHd6dD1mdW5jdGlvbiBTenQodCxlLG4saSxyLG8pe3ZhciBhPTEmbixzPWd6dCh0KSxsPXMubGVuZ3RoO2lmKGwhPWd6dChlKS5sZW5ndGgmJiFhKXJldHVybiExO2Zvcih2YXIgYz1sO2MtLTspe3ZhciB1PXNbY107aWYoIShhP3UgaW4gZTpfenQuY2FsbChlLHUpKSlyZXR1cm4hMX12YXIgaD1vLmdldCh0KSxkPW8uZ2V0KGUpO2lmKGgmJmQpcmV0dXJuIGg9PWUmJmQ9PXQ7dmFyIHA9ITA7by5zZXQodCxlKSxvLnNldChlLHQpO2Zvcih2YXIgZj1hOysrYzxsOyl7dmFyIG09dFt1PXNbY11dLGc9ZVt1XTtpZihpKXZhciBfPWE/aShnLG0sdSxlLHQsbyk6aShtLGcsdSx0LGUsbyk7aWYoISh2b2lkIDA9PT1fP209PT1nfHxyKG0sZyxuLGksbyk6Xykpe3A9ITE7YnJlYWt9Znx8KGY9ImNvbnN0cnVjdG9yIj09dSl9aWYocCYmIWYpe3ZhciB5PXQuY29uc3RydWN0b3Isdj1lLmNvbnN0cnVjdG9yO3k9PXZ8fCEoImNvbnN0cnVjdG9yImluIHQpfHwhKCJjb25zdHJ1Y3RvciJpbiBlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIHkmJnkgaW5zdGFuY2VvZiB5JiYiZnVuY3Rpb24iPT10eXBlb2YgdiYmdiBpbnN0YW5jZW9mIHZ8fChwPSExKX1yZXR1cm4gby5kZWxldGUodCksby5kZWxldGUoZSkscH0sTXp0PVpOdCxFenQ9QUx0LFR6dD1rTHQuZXhwb3J0cyxDenQ9JEx0LEF6dD0iW29iamVjdCBBcmd1bWVudHNdIixrenQ9IltvYmplY3QgQXJyYXldIixQenQ9IltvYmplY3QgT2JqZWN0XSIsTHp0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEl6dD1mdW5jdGlvbiBOenQodCxlLG4saSxyLG8pe3ZhciBhPUV6dCh0KSxzPUV6dChlKSxsPWE/a3p0Ok16dCh0KSxjPXM/a3p0Ok16dChlKSx1PShsPWw9PUF6dD9QenQ6bCk9PVB6dCxoPShjPWM9PUF6dD9QenQ6Yyk9PVB6dCxkPWw9PWM7aWYoZCYmVHp0KHQpKXtpZighVHp0KGUpKXJldHVybiExO2E9ITAsdT0hMX1pZihkJiYhdSlyZXR1cm4gb3x8KG89bmV3IHl6dCksYXx8Q3p0KHQpP3Z6dCh0LGUsbixpLHIsbyk6Ynp0KHQsZSxsLG4saSxyLG8pO2lmKCEoMSZuKSl7dmFyIHA9dSYmTHp0LmNhbGwodCwiX193cmFwcGVkX18iKSxmPWgmJkx6dC5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYocHx8Zil7dmFyIG09cD90LnZhbHVlKCk6dCxnPWY/ZS52YWx1ZSgpOmU7cmV0dXJuIG98fChvPW5ldyB5enQpLHIobSxnLG4saSxvKX19cmV0dXJuISFkJiYob3x8KG89bmV3IHl6dCksd3p0KHQsZSxuLGkscixvKSl9LFJ6dD1fTHQ7dmFyIE96dD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7cmV0dXJuIGU9PT1ufHwobnVsbD09ZXx8bnVsbD09bnx8IVJ6dChlKSYmIVJ6dChuKT9lIT1lJiZuIT1uOkl6dChlLG4saSxyLHQsbykpfSx6enQ9SlB0LER6dD1PenQ7dmFyIEJ6dD1Ma3Q7dmFyIEh6dD1mdW5jdGlvbiBGenQodCl7cmV0dXJuIHQ9PXQmJiFCenQodCl9LFZ6dD1IenQsVXp0PVNJdDt2YXIganp0PWZ1bmN0aW9uIEd6dCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmKG5bdF09PT1lJiYodm9pZCAwIT09ZXx8dCBpbiBPYmplY3QobikpKX19LFd6dD1mdW5jdGlvbiBxenQodCxlLG4saSl7dmFyIHI9bi5sZW5ndGgsbz1yLGE9IWk7aWYobnVsbD09dClyZXR1cm4hbztmb3IodD1PYmplY3QodCk7ci0tOyl7dmFyIHM9bltyXTtpZihhJiZzWzJdP3NbMV0hPT10W3NbMF1dOiEoc1swXWluIHQpKXJldHVybiExfWZvcig7KytyPG87KXt2YXIgbD0ocz1uW3JdKVswXSxjPXRbbF0sdT1zWzFdO2lmKGEmJnNbMl0pe2lmKHZvaWQgMD09PWMmJiEobCBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBoPW5ldyB6enQ7aWYoaSl2YXIgZD1pKGMsdSxsLHQsZSxoKTtpZighKHZvaWQgMD09PWQ/RHp0KHUsYywzLGksaCk6ZCkpcmV0dXJuITF9fXJldHVybiEwfSxZenQ9ZnVuY3Rpb24gWHp0KHQpe2Zvcih2YXIgZT1VenQodCksbj1lLmxlbmd0aDtuLS07KXt2YXIgaT1lW25dLHI9dFtpXTtlW25dPVtpLHIsVnp0KHIpXX1yZXR1cm4gZX0sJHp0PWp6dDt2YXIgS3p0PWZ1bmN0aW9uIFp6dCh0KXt2YXIgZT1ZenQodCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdPyR6dChlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09dHx8V3p0KG4sdCxlKX19LEp6dD1ra3QsUXp0PV9MdDt2YXIgdER0PWZ1bmN0aW9uIGVEdCh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fFF6dCh0KSYmIltvYmplY3QgU3ltYm9sXSI9PUp6dCh0KX0sbkR0PUFMdCxpRHQ9dER0LHJEdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxvRHQ9L15cdyokLzt2YXIgYUR0PWZ1bmN0aW9uIHNEdCh0LGUpe2lmKG5EdCh0KSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1uJiYic3ltYm9sIiE9biYmImJvb2xlYW4iIT1uJiZudWxsIT10JiYhaUR0KHQpKXx8KG9EdC50ZXN0KHQpfHwhckR0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpKX0sbER0PVZQdDtmdW5jdGlvbiBjRHQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzLHI9ZT9lLmFwcGx5KHRoaXMsaSk6aVswXSxvPW4uY2FjaGU7aWYoby5oYXMocikpcmV0dXJuIG8uZ2V0KHIpO3ZhciBhPXQuYXBwbHkodGhpcyxpKTtyZXR1cm4gbi5jYWNoZT1vLnNldChyLGEpfHxvLGF9O3JldHVybiBuLmNhY2hlPW5ldyhjRHQuQ2FjaGV8fGxEdCksbn1jRHQuQ2FjaGU9bER0O3ZhciB1RHQ9Y0R0O3ZhciBoRHQ9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csZER0PS9cXChcXCk/L2cscER0PShmdW5jdGlvbiBmRHQodCl7dmFyIGU9dUR0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1uLnNpemUmJm4uY2xlYXIoKSx0fSkpLG49ZS5jYWNoZTtyZXR1cm4gZX0pKChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGhEdCwoZnVuY3Rpb24odCxuLGkscil7ZS5wdXNoKGk/ci5yZXBsYWNlKGREdCwiJDEiKTpufHx0KX0pKSxlfSkpO3ZhciBtRHQ9ZnVuY3Rpb24gZ0R0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9QXJyYXkoaSk7KytuPGk7KXJbbl09ZSh0W25dLG4sdCk7cmV0dXJuIHJ9LF9EdD1tRHQseUR0PUFMdCx2RHQ9dER0LGJEdD15a3Q/eWt0LnByb3RvdHlwZTp2b2lkIDAseER0PWJEdD9iRHQudG9TdHJpbmc6dm9pZCAwO3ZhciB3RHQ9ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoeUR0KGUpKXJldHVybiBfRHQoZSx0KSsiIjtpZih2RHQoZSkpcmV0dXJuIHhEdD94RHQuY2FsbChlKToiIjt2YXIgbj1lKyIiO3JldHVybiIwIj09biYmMS9lPT0tSW5maW5pdHk/Ii0wIjpufTt2YXIgU0R0PWZ1bmN0aW9uIE1EdCh0KXtyZXR1cm4gbnVsbD09dD8iIjp3RHQodCl9LEVEdD1BTHQsVER0PWFEdCxDRHQ9cER0LEFEdD1TRHQ7dmFyIGtEdD1mdW5jdGlvbiBQRHQodCxlKXtyZXR1cm4gRUR0KHQpP3Q6VER0KHQsZSk/W3RdOkNEdChBRHQodCkpfSxMRHQ9dER0O3ZhciBJRHQ9ZnVuY3Rpb24gTkR0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8TER0KHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1JbmZpbml0eT8iLTAiOmV9LFJEdD1rRHQsT0R0PUlEdDt2YXIgekR0PWZ1bmN0aW9uIEREdCh0LGUpe2Zvcih2YXIgbj0wLGk9KGU9UkR0KGUsdCkpLmxlbmd0aDtudWxsIT10JiZuPGk7KXQ9dFtPRHQoZVtuKytdKV07cmV0dXJuIG4mJm49PWk/dDp2b2lkIDB9LEJEdD16RHQ7dmFyIEhEdD1rRHQsRkR0PUNMdCxWRHQ9QUx0LFVEdD1OTHQsakR0PU9MdCxHRHQ9SUR0O3ZhciBXRHQ9ZnVuY3Rpb24gcUR0KHQsZSxuKXtmb3IodmFyIGk9LTEscj0oZT1IRHQoZSx0KSkubGVuZ3RoLG89ITE7KytpPHI7KXt2YXIgYT1HRHQoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJmpEdChyKSYmVUR0KGEscikmJihWRHQodCl8fEZEdCh0KSl9LFlEdD1mdW5jdGlvbiBYRHQodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9LCREdD1XRHQ7dmFyIEtEdD1mdW5jdGlvbiBaRHQodCxlKXtyZXR1cm4gbnVsbCE9dCYmJER0KHQsZSxZRHQpfSxKRHQ9T3p0LFFEdD1mdW5jdGlvbiB0QnQodCxlLG4pe3ZhciBpPW51bGw9PXQ/dm9pZCAwOkJEdCh0LGUpO3JldHVybiB2b2lkIDA9PT1pP246aX0sZUJ0PUtEdCxuQnQ9YUR0LGlCdD1IenQsckJ0PWp6dCxvQnQ9SUR0O3ZhciBhQnQ9ZnVuY3Rpb24gc0J0KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZVt0XX19LGxCdD16RHQ7dmFyIGNCdD1hQnQsdUJ0PWZ1bmN0aW9uIGhCdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGxCdChlLHQpfX0sZEJ0PWFEdCxwQnQ9SUR0O3ZhciBmQnQ9S3p0LG1CdD1mdW5jdGlvbiBnQnQodCxlKXtyZXR1cm4gbkJ0KHQpJiZpQnQoZSk/ckJ0KG9CdCh0KSxlKTpmdW5jdGlvbihuKXt2YXIgaT1RRHQobix0KTtyZXR1cm4gdm9pZCAwPT09aSYmaT09PWU/ZUJ0KG4sdCk6SkR0KGUsaSwzKX19LF9CdD1MT3QseUJ0PUFMdCx2QnQ9ZnVuY3Rpb24gYkJ0KHQpe3JldHVybiBkQnQodCk/Y0J0KHBCdCh0KSk6dUJ0KHQpfTt2YXIgeEJ0PWZ1bmN0aW9uIHdCdCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/X0J0OiJvYmplY3QiPT10eXBlb2YgdD95QnQodCk/bUJ0KHRbMF0sdFsxXSk6ZkJ0KHQpOnZCdCh0KX0sU0J0PVlJdCxNQnQ9R090LEVCdD14QnQsVEJ0PUFMdDt2YXIgQ0J0PWZ1bmN0aW9uIEFCdCh0LGUpe3JldHVybihUQnQodCk/U0J0Ok1CdCkodCxFQnQoZSkpfSxrQnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgUEJ0PWZ1bmN0aW9uIExCdCh0LGUpe3JldHVybiBudWxsIT10JiZrQnQuY2FsbCh0LGUpfSxJQnQ9V0R0O3ZhciBOQnQ9ZnVuY3Rpb24gUkJ0KHQsZSl7cmV0dXJuIG51bGwhPXQmJklCdCh0LGUsUEJ0KX0sT0J0PWZJdCx6QnQ9Wk50LERCdD1DTHQsQkJ0PUFMdCxIQnQ9eUl0LEZCdD1rTHQuZXhwb3J0cyxWQnQ9YUl0LFVCdD0kTHQsakJ0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEdCdD1mdW5jdGlvbiBXQnQodCl7aWYobnVsbD09dClyZXR1cm4hMDtpZihIQnQodCkmJihCQnQodCl8fCJzdHJpbmciPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuc3BsaWNlfHxGQnQodCl8fFVCdCh0KXx8REJ0KHQpKSlyZXR1cm4hdC5sZW5ndGg7dmFyIGU9ekJ0KHQpO2lmKCJbb2JqZWN0IE1hcF0iPT1lfHwiW29iamVjdCBTZXRdIj09ZSlyZXR1cm4hdC5zaXplO2lmKFZCdCh0KSlyZXR1cm4hT0J0KHQpLmxlbmd0aDtmb3IodmFyIG4gaW4gdClpZihqQnQuY2FsbCh0LG4pKXJldHVybiExO3JldHVybiEwfTt2YXIgcUJ0PWZ1bmN0aW9uIFlCdCh0KXtyZXR1cm4gdm9pZCAwPT09dH0sWEJ0PWtPdCwkQnQ9eUl0O3ZhciBLQnQ9ZnVuY3Rpb24gWkJ0KHQsZSl7dmFyIG49LTEsaT0kQnQodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiBYQnQodCwoZnVuY3Rpb24odCxyLG8pe2lbKytuXT1lKHQscixvKX0pKSxpfSxKQnQ9bUR0LFFCdD14QnQsdEh0PUtCdCxlSHQ9QUx0O3ZhciBuSHQ9ZnVuY3Rpb24gaUh0KHQsZSl7cmV0dXJuKGVIdCh0KT9KQnQ6dEh0KSh0LFFCdChlKSl9O3ZhciBySHQ9ZnVuY3Rpb24gb0h0KHQsZSxuLGkpe3ZhciByPS0xLG89bnVsbD09dD8wOnQubGVuZ3RoO2ZvcihpJiZvJiYobj10Wysrcl0pOysrcjxvOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59LGFIdD1rT3Qsc0h0PXhCdCxsSHQ9ZnVuY3Rpb24gY0h0KHQsZSxuLGkscil7cmV0dXJuIHIodCwoZnVuY3Rpb24odCxyLG8pe249aT8oaT0hMSx0KTplKG4sdCxyLG8pfSkpLG59LHVIdD1BTHQ7dmFyIGhIdD1mdW5jdGlvbiBkSHQodCxlLG4pe3ZhciBpPXVIdCh0KT9ySHQ6bEh0LHI9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBpKHQsc0h0KGUpLG4scixhSHQpfSxwSHQ9a2t0LGZIdD1BTHQsbUh0PV9MdDt2YXIgZ0h0PWZ1bmN0aW9uIF9IdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCFmSHQodCkmJm1IdCh0KSYmIltvYmplY3QgU3RyaW5nXSI9PXBIdCh0KX0seUh0PWFCdCgibGVuZ3RoIiksdkh0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgYkh0PWZ1bmN0aW9uIHhIdCh0KXtyZXR1cm4gdkh0LnRlc3QodCl9LHdIdD0iW1xcdWQ4MDAtXFx1ZGZmZl0iLFNIdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLE1IdD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixFSHQ9IlteXFx1ZDgwMC1cXHVkZmZmXSIsVEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixDSHQ9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEFIdD0iKD86IitTSHQrInwiK01IdCsiKSIrIj8iLGtIdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFBIdD1rSHQrQUh0KygiKD86XFx1MjAwZCg/OiIrW0VIdCxUSHQsQ0h0XS5qb2luKCJ8IikrIikiK2tIdCtBSHQrIikqIiksTEh0PSIoPzoiK1tFSHQrU0h0KyI/IixTSHQsVEh0LENIdCx3SHRdLmpvaW4oInwiKSsiKSIsSUh0PVJlZ0V4cChNSHQrIig/PSIrTUh0KyIpfCIrTEh0K1BIdCwiZyIpO3ZhciBOSHQ9eUh0LFJIdD1iSHQsT0h0PWZ1bmN0aW9uIHpIdCh0KXtmb3IodmFyIGU9SUh0Lmxhc3RJbmRleD0wO0lIdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9O3ZhciBESHQ9Zkl0LEJIdD1aTnQsSEh0PXlJdCxGSHQ9Z0h0LFZIdD1mdW5jdGlvbiBVSHQodCl7cmV0dXJuIFJIdCh0KT9PSHQodCk6Tkh0KHQpfTt2YXIgakh0PWZ1bmN0aW9uIEdIdCh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEhIdCh0KSlyZXR1cm4gRkh0KHQpP1ZIdCh0KTp0Lmxlbmd0aDt2YXIgZT1CSHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lP3Quc2l6ZTpESHQodCkubGVuZ3RofSxXSHQ9UVB0LHFIdD1NUnQsWUh0PVRPdCxYSHQ9eEJ0LCRIdD1zTnQsS0h0PUFMdCxaSHQ9a0x0LmV4cG9ydHMsSkh0PXprdCxRSHQ9TGt0LHRGdD0kTHQ7dmFyIGVGdD1mdW5jdGlvbiBuRnQodCxlLG4pe3ZhciBpPUtIdCh0KSxyPWl8fFpIdCh0KXx8dEZ0KHQpO2lmKGU9WEh0KGUpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106UUh0KHQpJiZKSHQobyk/cUh0KCRIdCh0KSk6e319cmV0dXJuKHI/V0h0OllIdCkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LGlGdD1DTHQsckZ0PUFMdCxvRnQ9eWt0P3lrdC5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwO3ZhciBhRnQ9b050LHNGdD1mdW5jdGlvbiBsRnQodCl7cmV0dXJuIHJGdCh0KXx8aUZ0KHQpfHwhIShvRnQmJnQmJnRbb0Z0XSl9O3ZhciBjRnQ9ZnVuY3Rpb24gdChlLG4saSxyLG8pe3ZhciBhPS0xLHM9ZS5sZW5ndGg7Zm9yKGl8fChpPXNGdCksb3x8KG89W10pOysrYTxzOyl7dmFyIGw9ZVthXTtuPjAmJmkobCk/bj4xP3QobCxuLTEsaSxyLG8pOmFGdChvLGwpOnJ8fChvW28ubGVuZ3RoXT1sKX1yZXR1cm4gb307dmFyIHVGdD1mdW5jdGlvbiBoRnQodCxlLG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwoZSk7Y2FzZSAxOnJldHVybiB0LmNhbGwoZSxuWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIHQuYXBwbHkoZSxuKX0sZEZ0PU1hdGgubWF4O3ZhciBwRnQ9ZnVuY3Rpb24gZkZ0KHQsZSxuKXtyZXR1cm4gZT1kRnQodm9pZCAwPT09ZT90Lmxlbmd0aC0xOmUsMCksZnVuY3Rpb24oKXtmb3IodmFyIGk9YXJndW1lbnRzLHI9LTEsbz1kRnQoaS5sZW5ndGgtZSwwKSxhPUFycmF5KG8pOysrcjxvOylhW3JdPWlbZStyXTtyPS0xO2Zvcih2YXIgcz1BcnJheShlKzEpOysrcjxlOylzW3JdPWlbcl07cmV0dXJuIHNbZV09bihhKSx1RnQodCx0aGlzLHMpfX0sbUZ0PWJPdCxnRnQ9bkx0LF9GdD1EYXRlLm5vdzt2YXIgeUZ0PShmdW5jdGlvbiB2RnQodCl7dmFyIGU9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9X0Z0KCkscj0xNi0oaS1uKTtpZihuPWkscj4wKXtpZigrK2U+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgZT0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0pKGdGdD9mdW5jdGlvbih0LGUpe3JldHVybiBnRnQodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTptRnQoZSksd3JpdGFibGU6ITB9KX06TE90KSxiRnQ9TE90LHhGdD1wRnQsd0Z0PXlGdDt2YXIgU0Z0PWZ1bmN0aW9uIE1GdCh0LGUpe3JldHVybiB3RnQoeEZ0KHQsZSxiRnQpLHQrIiIpfTt2YXIgRUZ0PWZ1bmN0aW9uIFRGdCh0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1uKyhpPzE6LTEpO2k/by0tOisrbzxyOylpZihlKHRbb10sbyx0KSlyZXR1cm4gbztyZXR1cm4tMX07dmFyIENGdD1FRnQsQUZ0PWZ1bmN0aW9uIGtGdCh0KXtyZXR1cm4gdCE9dH0sUEZ0PWZ1bmN0aW9uIExGdCh0LGUsbil7Zm9yKHZhciBpPW4tMSxyPXQubGVuZ3RoOysraTxyOylpZih0W2ldPT09ZSlyZXR1cm4gaTtyZXR1cm4tMX07dmFyIElGdD1mdW5jdGlvbiBORnQodCxlLG4pe3JldHVybiBlPT1lP1BGdCh0LGUsbik6Q0Z0KHQsQUZ0LG4pfTt2YXIgUkZ0PWZ1bmN0aW9uIE9GdCh0LGUpe3JldHVybiEhKG51bGw9PXQ/MDp0Lmxlbmd0aCkmJklGdCh0LGUsMCk+LTF9O3ZhciB6RnQ9ZnVuY3Rpb24gREZ0KHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIEJGdD1JTnQsSEZ0PWZ1bmN0aW9uIEZGdCgpe30sVkZ0PUJGdCYmMS9henQobmV3IEJGdChbLC0wXSkpWzFdPT0xLzA/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCRnQodCl9OkhGdCxVRnQ9Wk90LGpGdD1SRnQsR0Z0PXpGdCxXRnQ9Sk90LHFGdD1WRnQsWUZ0PWF6dDt2YXIgWEZ0PXlJdCwkRnQ9X0x0O3ZhciBLRnQ9ZnVuY3Rpb24gWkZ0KHQpe3JldHVybiAkRnQodCkmJlhGdCh0KX0sSkZ0PWNGdCxRRnQ9ZnVuY3Rpb24gdFZ0KHQsZSxuKXt2YXIgaT0tMSxyPWpGdCxvPXQubGVuZ3RoLGE9ITAscz1bXSxsPXM7aWYobilhPSExLHI9R0Z0O2Vsc2UgaWYobz49MjAwKXt2YXIgYz1lP251bGw6cUZ0KHQpO2lmKGMpcmV0dXJuIFlGdChjKTthPSExLHI9V0Z0LGw9bmV3IFVGdH1lbHNlIGw9ZT9bXTpzO3Q6Zm9yKDsrK2k8bzspe3ZhciB1PXRbaV0saD1lP2UodSk6dTtpZih1PW58fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9bC5sZW5ndGg7ZC0tOylpZihsW2RdPT09aCljb250aW51ZSB0O2UmJmwucHVzaChoKSxzLnB1c2godSl9ZWxzZSByKGwsaCxuKXx8KGwhPT1zJiZsLnB1c2goaCkscy5wdXNoKHUpKX1yZXR1cm4gc30sZVZ0PUtGdCxuVnQ9U0Z0KChmdW5jdGlvbih0KXtyZXR1cm4gUUZ0KEpGdCh0LDEsZVZ0LCEwKSl9KSksaVZ0PW1EdDt2YXIgclZ0PWZ1bmN0aW9uIG9WdCh0LGUpe3JldHVybiBpVnQoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9LGFWdD1TSXQ7dmFyIHNWdCxsVnQ9ZnVuY3Rpb24gY1Z0KHQpe3JldHVybiBudWxsPT10P1tdOnJWdCh0LGFWdCh0KSl9O3RyeXtzVnQ9e2Nsb25lOnlPdCxjb25zdGFudDpiT3QsZWFjaDpVT3QsZmlsdGVyOkNCdCxoYXM6TkJ0LGlzQXJyYXk6QUx0LGlzRW1wdHk6R0J0LGlzRnVuY3Rpb246emt0LGlzVW5kZWZpbmVkOnFCdCxrZXlzOlNJdCxtYXA6bkh0LHJlZHVjZTpoSHQsc2l6ZTpqSHQsdHJhbnNmb3JtOmVGdCx1bmlvbjpuVnQsdmFsdWVzOmxWdH19Y2F0Y2godCl7fXNWdHx8KHNWdD13aW5kb3cuXyk7dmFyIHVWdD1zVnQsaFZ0PXVWdCxkVnQ9ZlZ0LHBWdD0iXDAiO2Z1bmN0aW9uIGZWdCh0KXt0aGlzLl9pc0RpcmVjdGVkPSFoVnQuaGFzKHQsImRpcmVjdGVkIil8fHQuZGlyZWN0ZWQsdGhpcy5faXNNdWx0aWdyYXBoPSEhaFZ0Lmhhcyh0LCJtdWx0aWdyYXBoIikmJnQubXVsdGlncmFwaCx0aGlzLl9pc0NvbXBvdW5kPSEhaFZ0Lmhhcyh0LCJjb21wb3VuZCIpJiZ0LmNvbXBvdW5kLHRoaXMuX2xhYmVsPXZvaWQgMCx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49aFZ0LmNvbnN0YW50KHZvaWQgMCksdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPWhWdC5jb25zdGFudCh2b2lkIDApLHRoaXMuX25vZGVzPXt9LHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9wYXJlbnQ9e30sdGhpcy5fY2hpbGRyZW49e30sdGhpcy5fY2hpbGRyZW5bIlwwIl09e30pLHRoaXMuX2luPXt9LHRoaXMuX3ByZWRzPXt9LHRoaXMuX291dD17fSx0aGlzLl9zdWNzPXt9LHRoaXMuX2VkZ2VPYmpzPXt9LHRoaXMuX2VkZ2VMYWJlbHM9e319ZnVuY3Rpb24gbVZ0KHQsZSl7dFtlXT90W2VdKys6dFtlXT0xfWZ1bmN0aW9uIGdWdCh0LGUpey0tdFtlXXx8ZGVsZXRlIHRbZV19ZnVuY3Rpb24gX1Z0KHQsZSxuLGkpe3ZhciByPSIiK2Usbz0iIituO2lmKCF0JiZyPm8pe3ZhciBhPXI7cj1vLG89YX1yZXR1cm4gcisiASIrbysiASIrKGhWdC5pc1VuZGVmaW5lZChpKT8iXDAiOmkpfWZ1bmN0aW9uIHlWdCh0LGUsbixpKXt2YXIgcj0iIitlLG89IiIrbjtpZighdCYmcj5vKXt2YXIgYT1yO3I9byxvPWF9dmFyIHM9e3Y6cix3Om99O3JldHVybiBpJiYocy5uYW1lPWkpLHN9ZnVuY3Rpb24gdlZ0KHQsZSl7cmV0dXJuIF9WdCh0LGUudixlLncsZS5uYW1lKX1mVnQucHJvdG90eXBlLl9ub2RlQ291bnQ9MCxmVnQucHJvdG90eXBlLl9lZGdlQ291bnQ9MCxmVnQucHJvdG90eXBlLmlzRGlyZWN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNEaXJlY3RlZH0sZlZ0LnByb3RvdHlwZS5pc011bHRpZ3JhcGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNNdWx0aWdyYXBofSxmVnQucHJvdG90eXBlLmlzQ29tcG91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNDb21wb3VuZH0sZlZ0LnByb3RvdHlwZS5zZXRHcmFwaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGFiZWw9dCx0aGlzfSxmVnQucHJvdG90eXBlLmdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhYmVsfSxmVnQucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIGhWdC5pc0Z1bmN0aW9uKHQpfHwodD1oVnQuY29uc3RhbnQodCkpLHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbj10LHRoaXN9LGZWdC5wcm90b3R5cGUubm9kZUNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vZGVDb3VudH0sZlZ0LnByb3RvdHlwZS5ub2Rlcz1mdW5jdGlvbigpe3JldHVybiBoVnQua2V5cyh0aGlzLl9ub2Rlcyl9LGZWdC5wcm90b3R5cGUuc291cmNlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIGhWdC5maWx0ZXIodGhpcy5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gaFZ0LmlzRW1wdHkodC5faW5bZV0pfSkpfSxmVnQucHJvdG90eXBlLnNpbmtzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gaFZ0LmZpbHRlcih0aGlzLm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBoVnQuaXNFbXB0eSh0Ll9vdXRbZV0pfSkpfSxmVnQucHJvdG90eXBlLnNldE5vZGVzPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLGk9dGhpcztyZXR1cm4gaFZ0LmVhY2godCwoZnVuY3Rpb24odCl7bi5sZW5ndGg+MT9pLnNldE5vZGUodCxlKTppLnNldE5vZGUodCl9KSksdGhpc30sZlZ0LnByb3RvdHlwZS5zZXROb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGhWdC5oYXModGhpcy5fbm9kZXMsdCk/KGFyZ3VtZW50cy5sZW5ndGg+MSYmKHRoaXMuX25vZGVzW3RdPWUpLHRoaXMpOih0aGlzLl9ub2Rlc1t0XT1hcmd1bWVudHMubGVuZ3RoPjE/ZTp0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4odCksdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3BhcmVudFt0XT1wVnQsdGhpcy5fY2hpbGRyZW5bdF09e30sdGhpcy5fY2hpbGRyZW5bIlwwIl1bdF09ITApLHRoaXMuX2luW3RdPXt9LHRoaXMuX3ByZWRzW3RdPXt9LHRoaXMuX291dFt0XT17fSx0aGlzLl9zdWNzW3RdPXt9LCsrdGhpcy5fbm9kZUNvdW50LHRoaXMpfSxmVnQucHJvdG90eXBlLm5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25vZGVzW3RdfSxmVnQucHJvdG90eXBlLmhhc05vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGhWdC5oYXModGhpcy5fbm9kZXMsdCl9LGZWdC5wcm90b3R5cGUucmVtb3ZlTm9kZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKGhWdC5oYXModGhpcy5fbm9kZXMsdCkpe3ZhciBuPWZ1bmN0aW9uKHQpe2UucmVtb3ZlRWRnZShlLl9lZGdlT2Jqc1t0XSl9O2RlbGV0ZSB0aGlzLl9ub2Rlc1t0XSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksZGVsZXRlIHRoaXMuX3BhcmVudFt0XSxoVnQuZWFjaCh0aGlzLmNoaWxkcmVuKHQpLChmdW5jdGlvbih0KXtlLnNldFBhcmVudCh0KX0pKSxkZWxldGUgdGhpcy5fY2hpbGRyZW5bdF0pLGhWdC5lYWNoKGhWdC5rZXlzKHRoaXMuX2luW3RdKSxuKSxkZWxldGUgdGhpcy5faW5bdF0sZGVsZXRlIHRoaXMuX3ByZWRzW3RdLGhWdC5lYWNoKGhWdC5rZXlzKHRoaXMuX291dFt0XSksbiksZGVsZXRlIHRoaXMuX291dFt0XSxkZWxldGUgdGhpcy5fc3Vjc1t0XSwtLXRoaXMuX25vZGVDb3VudH1yZXR1cm4gdGhpc30sZlZ0LnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5faXNDb21wb3VuZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoIik7aWYoaFZ0LmlzVW5kZWZpbmVkKGUpKWU9cFZ0O2Vsc2V7Zm9yKHZhciBuPWUrPSIiOyFoVnQuaXNVbmRlZmluZWQobik7bj10aGlzLnBhcmVudChuKSlpZihuPT09dCl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgIitlKyIgYXMgcGFyZW50IG9mICIrdCsiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlIik7dGhpcy5zZXROb2RlKGUpfXJldHVybiB0aGlzLnNldE5vZGUodCksdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksdGhpcy5fcGFyZW50W3RdPWUsdGhpcy5fY2hpbGRyZW5bZV1bdF09ITAsdGhpc30sZlZ0LnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Q9ZnVuY3Rpb24odCl7ZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RoaXMuX3BhcmVudFt0XV1bdF19LGZWdC5wcm90b3R5cGUucGFyZW50PWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lzQ29tcG91bmQpe3ZhciBlPXRoaXMuX3BhcmVudFt0XTtpZihlIT09cFZ0KXJldHVybiBlfX0sZlZ0LnByb3RvdHlwZS5jaGlsZHJlbj1mdW5jdGlvbih0KXtpZihoVnQuaXNVbmRlZmluZWQodCkmJih0PXBWdCksdGhpcy5faXNDb21wb3VuZCl7dmFyIGU9dGhpcy5fY2hpbGRyZW5bdF07aWYoZSlyZXR1cm4gaFZ0LmtleXMoZSl9ZWxzZXtpZih0PT09cFZ0KXJldHVybiB0aGlzLm5vZGVzKCk7aWYodGhpcy5oYXNOb2RlKHQpKXJldHVybltdfX0sZlZ0LnByb3RvdHlwZS5wcmVkZWNlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcHJlZHNbdF07aWYoZSlyZXR1cm4gaFZ0LmtleXMoZSl9LGZWdC5wcm90b3R5cGUuc3VjY2Vzc29ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zdWNzW3RdO2lmKGUpcmV0dXJuIGhWdC5rZXlzKGUpfSxmVnQucHJvdG90eXBlLm5laWdoYm9ycz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnByZWRlY2Vzc29ycyh0KTtpZihlKXJldHVybiBoVnQudW5pb24oZSx0aGlzLnN1Y2Nlc3NvcnModCkpfSxmVnQucHJvdG90eXBlLmlzTGVhZj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PSh0aGlzLmlzRGlyZWN0ZWQoKT90aGlzLnN1Y2Nlc3NvcnModCk6dGhpcy5uZWlnaGJvcnModCkpLmxlbmd0aH0sZlZ0LnByb3RvdHlwZS5maWx0ZXJOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7ZGlyZWN0ZWQ6dGhpcy5faXNEaXJlY3RlZCxtdWx0aWdyYXBoOnRoaXMuX2lzTXVsdGlncmFwaCxjb21wb3VuZDp0aGlzLl9pc0NvbXBvdW5kfSk7ZS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO3ZhciBuPXRoaXM7aFZ0LmVhY2godGhpcy5fbm9kZXMsKGZ1bmN0aW9uKG4saSl7dChpKSYmZS5zZXROb2RlKGksbil9KSksaFZ0LmVhY2godGhpcy5fZWRnZU9ianMsKGZ1bmN0aW9uKHQpe2UuaGFzTm9kZSh0LnYpJiZlLmhhc05vZGUodC53KSYmZS5zZXRFZGdlKHQsbi5lZGdlKHQpKX0pKTt2YXIgaT17fTtmdW5jdGlvbiByKHQpe3ZhciBvPW4ucGFyZW50KHQpO3JldHVybiB2b2lkIDA9PT1vfHxlLmhhc05vZGUobyk/KGlbdF09byxvKTpvIGluIGk/aVtvXTpyKG8pfXJldHVybiB0aGlzLl9pc0NvbXBvdW5kJiZoVnQuZWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe2Uuc2V0UGFyZW50KHQscih0KSl9KSksZX0sZlZ0LnByb3RvdHlwZS5zZXREZWZhdWx0RWRnZUxhYmVsPWZ1bmN0aW9uKHQpe3JldHVybiBoVnQuaXNGdW5jdGlvbih0KXx8KHQ9aFZ0LmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm49dCx0aGlzfSxmVnQucHJvdG90eXBlLmVkZ2VDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lZGdlQ291bnR9LGZWdC5wcm90b3R5cGUuZWRnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaFZ0LnZhbHVlcyh0aGlzLl9lZGdlT2Jqcyl9LGZWdC5wcm90b3R5cGUuc2V0UGF0aD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT1hcmd1bWVudHM7cmV0dXJuIGhWdC5yZWR1Y2UodCwoZnVuY3Rpb24odCxyKXtyZXR1cm4gaS5sZW5ndGg+MT9uLnNldEVkZ2UodCxyLGUpOm4uc2V0RWRnZSh0LHIpLHJ9KSksdGhpc30sZlZ0LnByb3RvdHlwZS5zZXRFZGdlPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj0hMSxvPWFyZ3VtZW50c1swXTsib2JqZWN0Ij09dHlwZW9mIG8mJm51bGwhPT1vJiYidiJpbiBvPyh0PW8udixlPW8udyxuPW8ubmFtZSwyPT09YXJndW1lbnRzLmxlbmd0aCYmKGk9YXJndW1lbnRzWzFdLHI9ITApKToodD1vLGU9YXJndW1lbnRzWzFdLG49YXJndW1lbnRzWzNdLGFyZ3VtZW50cy5sZW5ndGg+MiYmKGk9YXJndW1lbnRzWzJdLHI9ITApKSx0PSIiK3QsZT0iIitlLGhWdC5pc1VuZGVmaW5lZChuKXx8KG49IiIrbik7dmFyIGE9X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO2lmKGhWdC5oYXModGhpcy5fZWRnZUxhYmVscyxhKSlyZXR1cm4gciYmKHRoaXMuX2VkZ2VMYWJlbHNbYV09aSksdGhpcztpZighaFZ0LmlzVW5kZWZpbmVkKG4pJiYhdGhpcy5faXNNdWx0aWdyYXBoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZSIpO3RoaXMuc2V0Tm9kZSh0KSx0aGlzLnNldE5vZGUoZSksdGhpcy5fZWRnZUxhYmVsc1thXT1yP2k6dGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHQsZSxuKTt2YXIgcz15VnQodGhpcy5faXNEaXJlY3RlZCx0LGUsbik7cmV0dXJuIHQ9cy52LGU9cy53LE9iamVjdC5mcmVlemUocyksdGhpcy5fZWRnZU9ianNbYV09cyxtVnQodGhpcy5fcHJlZHNbZV0sdCksbVZ0KHRoaXMuX3N1Y3NbdF0sZSksdGhpcy5faW5bZV1bYV09cyx0aGlzLl9vdXRbdF1bYV09cyx0aGlzLl9lZGdlQ291bnQrKyx0aGlzfSxmVnQucHJvdG90eXBlLmVkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP3ZWdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiB0aGlzLl9lZGdlTGFiZWxzW2ldfSxmVnQucHJvdG90eXBlLmhhc0VkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP3ZWdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6X1Z0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiBoVnQuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsaSl9LGZWdC5wcm90b3R5cGUucmVtb3ZlRWRnZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9MT09PWFyZ3VtZW50cy5sZW5ndGg/dlZ0KHRoaXMuX2lzRGlyZWN0ZWQsYXJndW1lbnRzWzBdKTpfVnQodGhpcy5faXNEaXJlY3RlZCx0LGUsbikscj10aGlzLl9lZGdlT2Jqc1tpXTtyZXR1cm4gciYmKHQ9ci52LGU9ci53LGRlbGV0ZSB0aGlzLl9lZGdlTGFiZWxzW2ldLGRlbGV0ZSB0aGlzLl9lZGdlT2Jqc1tpXSxnVnQodGhpcy5fcHJlZHNbZV0sdCksZ1Z0KHRoaXMuX3N1Y3NbdF0sZSksZGVsZXRlIHRoaXMuX2luW2VdW2ldLGRlbGV0ZSB0aGlzLl9vdXRbdF1baV0sdGhpcy5fZWRnZUNvdW50LS0pLHRoaXN9LGZWdC5wcm90b3R5cGUuaW5FZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2luW3RdO2lmKG4pe3ZhciBpPWhWdC52YWx1ZXMobik7cmV0dXJuIGU/aFZ0LmZpbHRlcihpLChmdW5jdGlvbih0KXtyZXR1cm4gdC52PT09ZX0pKTppfX0sZlZ0LnByb3RvdHlwZS5vdXRFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX291dFt0XTtpZihuKXt2YXIgaT1oVnQudmFsdWVzKG4pO3JldHVybiBlP2hWdC5maWx0ZXIoaSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudz09PWV9KSk6aX19LGZWdC5wcm90b3R5cGUubm9kZUVkZ2VzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5pbkVkZ2VzKHQsZSk7aWYobilyZXR1cm4gbi5jb25jYXQodGhpcy5vdXRFZGdlcyh0LGUpKX07dmFyIGJWdD17R3JhcGg6ZFZ0LHZlcnNpb246IjIuMS44In0seFZ0PXVWdCx3VnQ9ZFZ0LFNWdD17d3JpdGU6ZnVuY3Rpb24gTVZ0KHQpe3ZhciBlPXtvcHRpb25zOntkaXJlY3RlZDp0LmlzRGlyZWN0ZWQoKSxtdWx0aWdyYXBoOnQuaXNNdWx0aWdyYXBoKCksY29tcG91bmQ6dC5pc0NvbXBvdW5kKCl9LG5vZGVzOlRWdCh0KSxlZGdlczpDVnQodCl9O3hWdC5pc1VuZGVmaW5lZCh0LmdyYXBoKCkpfHwoZS52YWx1ZT14VnQuY2xvbmUodC5ncmFwaCgpKSk7cmV0dXJuIGV9LHJlYWQ6ZnVuY3Rpb24gRVZ0KHQpe3ZhciBlPW5ldyB3VnQodC5vcHRpb25zKS5zZXRHcmFwaCh0LnZhbHVlKTtyZXR1cm4geFZ0LmVhY2godC5ub2RlcywoZnVuY3Rpb24odCl7ZS5zZXROb2RlKHQudix0LnZhbHVlKSx0LnBhcmVudCYmZS5zZXRQYXJlbnQodC52LHQucGFyZW50KX0pKSx4VnQuZWFjaCh0LmVkZ2VzLChmdW5jdGlvbih0KXtlLnNldEVkZ2Uoe3Y6dC52LHc6dC53LG5hbWU6dC5uYW1lfSx0LnZhbHVlKX0pKSxlfX07ZnVuY3Rpb24gVFZ0KHQpe3JldHVybiB4VnQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLGk9dC5wYXJlbnQoZSkscj17djplfTtyZXR1cm4geFZ0LmlzVW5kZWZpbmVkKG4pfHwoci52YWx1ZT1uKSx4VnQuaXNVbmRlZmluZWQoaSl8fChyLnBhcmVudD1pKSxyfSkpfWZ1bmN0aW9uIENWdCh0KXtyZXR1cm4geFZ0Lm1hcCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKSxpPXt2OmUudix3OmUud307cmV0dXJuIHhWdC5pc1VuZGVmaW5lZChlLm5hbWUpfHwoaS5uYW1lPWUubmFtZSkseFZ0LmlzVW5kZWZpbmVkKG4pfHwoaS52YWx1ZT1uKSxpfSkpfXZhciBBVnQ9dVZ0LGtWdD1mdW5jdGlvbiBQVnQodCl7dmFyIGUsbj17fSxpPVtdO2Z1bmN0aW9uIHIoaSl7QVZ0LmhhcyhuLGkpfHwobltpXT0hMCxlLnB1c2goaSksQVZ0LmVhY2godC5zdWNjZXNzb3JzKGkpLHIpLEFWdC5lYWNoKHQucHJlZGVjZXNzb3JzKGkpLHIpKX1yZXR1cm4gQVZ0LmVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtlPVtdLHIodCksZS5sZW5ndGgmJmkucHVzaChlKX0pKSxpfTt2YXIgTFZ0PXVWdCxJVnQ9TlZ0O2Z1bmN0aW9uIE5WdCgpe3RoaXMuX2Fycj1bXSx0aGlzLl9rZXlJbmRpY2VzPXt9fU5WdC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnIubGVuZ3RofSxOVnQucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSkpfSxOVnQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gTFZ0Lmhhcyh0aGlzLl9rZXlJbmRpY2VzLHQpfSxOVnQucHJvdG90eXBlLnByaW9yaXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2tleUluZGljZXNbdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gdGhpcy5fYXJyW2VdLnByaW9yaXR5fSxOVnQucHJvdG90eXBlLm1pbj1mdW5jdGlvbigpe2lmKDA9PT10aGlzLnNpemUoKSl0aHJvdyBuZXcgRXJyb3IoIlF1ZXVlIHVuZGVyZmxvdyIpO3JldHVybiB0aGlzLl9hcnJbMF0ua2V5fSxOVnQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2tleUluZGljZXM7aWYodD1TdHJpbmcodCksIUxWdC5oYXMobix0KSl7dmFyIGk9dGhpcy5fYXJyLHI9aS5sZW5ndGg7cmV0dXJuIG5bdF09cixpLnB1c2goe2tleTp0LHByaW9yaXR5OmV9KSx0aGlzLl9kZWNyZWFzZShyKSwhMH1yZXR1cm4hMX0sTlZ0LnByb3RvdHlwZS5yZW1vdmVNaW49ZnVuY3Rpb24oKXt0aGlzLl9zd2FwKDAsdGhpcy5fYXJyLmxlbmd0aC0xKTt2YXIgdD10aGlzLl9hcnIucG9wKCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW3Qua2V5XSx0aGlzLl9oZWFwaWZ5KDApLHQua2V5fSxOVnQucHJvdG90eXBlLmRlY3JlYXNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fa2V5SW5kaWNlc1t0XTtpZihlPnRoaXMuX2FycltuXS5wcmlvcml0eSl0aHJvdyBuZXcgRXJyb3IoIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gS2V5OiAiK3QrIiBPbGQ6ICIrdGhpcy5fYXJyW25dLnByaW9yaXR5KyIgTmV3OiAiK2UpO3RoaXMuX2FycltuXS5wcmlvcml0eT1lLHRoaXMuX2RlY3JlYXNlKG4pfSxOVnQucHJvdG90eXBlLl9oZWFwaWZ5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FycixuPTIqdCxpPW4rMSxyPXQ7bjxlLmxlbmd0aCYmKHI9ZVtuXS5wcmlvcml0eTxlW3JdLnByaW9yaXR5P246cixpPGUubGVuZ3RoJiYocj1lW2ldLnByaW9yaXR5PGVbcl0ucHJpb3JpdHk/aTpyKSxyIT09dCYmKHRoaXMuX3N3YXAodCxyKSx0aGlzLl9oZWFwaWZ5KHIpKSl9LE5WdC5wcm90b3R5cGUuX2RlY3JlYXNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXRoaXMuX2FycixpPW5bdF0ucHJpb3JpdHk7MCE9PXQmJiEobltlPXQ+PjFdLnByaW9yaXR5PGkpOyl0aGlzLl9zd2FwKHQsZSksdD1lfSxOVnQucHJvdG90eXBlLl9zd2FwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYXJyLGk9dGhpcy5fa2V5SW5kaWNlcyxyPW5bdF0sbz1uW2VdO25bdF09byxuW2VdPXIsaVtvLmtleV09dCxpW3Iua2V5XT1lfTt2YXIgUlZ0PUlWdCxPVnQ9ZnVuY3Rpb24gelZ0KHQsZSxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGkpe3ZhciByLG8sYT17fSxzPW5ldyBSVnQsbD1mdW5jdGlvbih0KXt2YXIgZT10LnYhPT1yP3Qudjp0LncsaT1hW2VdLGw9bih0KSxjPW8uZGlzdGFuY2UrbDtpZihsPDApdGhyb3cgbmV3IEVycm9yKCJkaWprc3RyYSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBlZGdlIHdlaWdodHMuIEJhZCBlZGdlOiAiK3QrIiBXZWlnaHQ6ICIrbCk7YzxpLmRpc3RhbmNlJiYoaS5kaXN0YW5jZT1jLGkucHJlZGVjZXNzb3I9cixzLmRlY3JlYXNlKGUsYykpfTt0Lm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dD09PWU/MDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7YVt0XT17ZGlzdGFuY2U6bn0scy5hZGQodCxuKX0pKTtmb3IoO3Muc2l6ZSgpPjAmJihyPXMucmVtb3ZlTWluKCksKG89YVtyXSkuZGlzdGFuY2UhPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOylpKHIpLmZvckVhY2gobCk7cmV0dXJuIGF9KSh0LFN0cmluZyhlKSxufHxEVnQsaXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX0sRFZ0PXVWdC5jb25zdGFudCgxKTt2YXIgQlZ0PU9WdCxIVnQ9dVZ0LEZWdD1mdW5jdGlvbiBWVnQodCxlLG4pe3JldHVybiBIVnQudHJhbnNmb3JtKHQubm9kZXMoKSwoZnVuY3Rpb24oaSxyKXtpW3JdPUJWdCh0LHIsZSxuKX0pLHt9KX07dmFyIFVWdD11VnQsalZ0PWZ1bmN0aW9uIEdWdCh0KXt2YXIgZT0wLG49W10saT17fSxyPVtdO2Z1bmN0aW9uIG8oYSl7dmFyIHM9aVthXT17b25TdGFjazohMCxsb3dsaW5rOmUsaW5kZXg6ZSsrfTtpZihuLnB1c2goYSksdC5zdWNjZXNzb3JzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe1VWdC5oYXMoaSx0KT9pW3RdLm9uU3RhY2smJihzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0uaW5kZXgpKToobyh0KSxzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0ubG93bGluaykpfSkpLHMubG93bGluaz09PXMuaW5kZXgpe3ZhciBsLGM9W107ZG97bD1uLnBvcCgpLGlbbF0ub25TdGFjaz0hMSxjLnB1c2gobCl9d2hpbGUoYSE9PWwpO3IucHVzaChjKX19cmV0dXJuIHQubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtVVnQuaGFzKGksdCl8fG8odCl9KSkscn07dmFyIFdWdD11VnQscVZ0PWpWdCxZVnQ9ZnVuY3Rpb24gWFZ0KHQpe3JldHVybiBXVnQuZmlsdGVyKHFWdCh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPjF8fDE9PT1lLmxlbmd0aCYmdC5oYXNFZGdlKGVbMF0sZVswXSl9KSl9O3ZhciAkVnQ9ZnVuY3Rpb24gS1Z0KHQsZSxuKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7dmFyIGk9e30scj10Lm5vZGVzKCk7cmV0dXJuIHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7aVt0XT17fSxpW3RdW3RdPXtkaXN0YW5jZTowfSxyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QhPT1lJiYoaVt0XVtlXT17ZGlzdGFuY2U6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfSl9KSksbih0KS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uLnY9PT10P24udzpuLnYsbz1lKG4pO2lbdF1bcl09e2Rpc3RhbmNlOm8scHJlZGVjZXNzb3I6dH19KSl9KSksci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1pW3RdO3IuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG89aVtuXTtyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPWVbbl0scj1vW25dLGE9b1t0XS5kaXN0YW5jZStpLmRpc3RhbmNlO2E8ci5kaXN0YW5jZSYmKHIuZGlzdGFuY2U9YSxyLnByZWRlY2Vzc29yPWkucHJlZGVjZXNzb3IpfSkpfSkpfSkpLGl9KSh0LGV8fFpWdCxufHxmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlKX0pfSxaVnQ9dVZ0LmNvbnN0YW50KDEpO3ZhciBKVnQ9dVZ0LFFWdD10VXQ7ZnVuY3Rpb24gdFV0KHQpe3ZhciBlPXt9LG49e30saT1bXTtpZihKVnQuZWFjaCh0LnNpbmtzKCksKGZ1bmN0aW9uIHIobyl7aWYoSlZ0LmhhcyhuLG8pKXRocm93IG5ldyBlVXQ7SlZ0LmhhcyhlLG8pfHwobltvXT0hMCxlW29dPSEwLEpWdC5lYWNoKHQucHJlZGVjZXNzb3JzKG8pLHIpLGRlbGV0ZSBuW29dLGkucHVzaChvKSl9KSksSlZ0LnNpemUoZSkhPT10Lm5vZGVDb3VudCgpKXRocm93IG5ldyBlVXQ7cmV0dXJuIGl9ZnVuY3Rpb24gZVV0KCl7fXRVdC5DeWNsZUV4Y2VwdGlvbj1lVXQsZVV0LnByb3RvdHlwZT1uZXcgRXJyb3I7dmFyIG5VdD1RVnQ7dmFyIGlVdD11VnQsclV0PWZ1bmN0aW9uIG9VdCh0LGUsbil7aVV0LmlzQXJyYXkoZSl8fChlPVtlXSk7dmFyIGk9KHQuaXNEaXJlY3RlZCgpP3Quc3VjY2Vzc29yczp0Lm5laWdoYm9ycykuYmluZCh0KSxyPVtdLG89e307cmV0dXJuIGlVdC5lYWNoKGUsKGZ1bmN0aW9uKGUpe2lmKCF0Lmhhc05vZGUoZSkpdGhyb3cgbmV3IEVycm9yKCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6ICIrZSk7YVV0KHQsZSwicG9zdCI9PT1uLG8saSxyKX0pKSxyfTtmdW5jdGlvbiBhVXQodCxlLG4saSxyLG8pe2lVdC5oYXMoaSxlKXx8KGlbZV09ITAsbnx8by5wdXNoKGUpLGlVdC5lYWNoKHIoZSksKGZ1bmN0aW9uKGUpe2FVdCh0LGUsbixpLHIsbyl9KSksbiYmby5wdXNoKGUpKX12YXIgc1V0PXJVdDt2YXIgbFV0PXJVdDt2YXIgY1V0PXVWdCx1VXQ9ZFZ0LGhVdD1JVnQ7dmFyIGRVdCxwVXQ9e0dyYXBoOmJWdC5HcmFwaCxqc29uOlNWdCxhbGc6e2NvbXBvbmVudHM6a1Z0LGRpamtzdHJhOk9WdCxkaWprc3RyYUFsbDpGVnQsZmluZEN5Y2xlczpZVnQsZmxveWRXYXJzaGFsbDokVnQsaXNBY3ljbGljOmZ1bmN0aW9uIGZVdCh0KXt0cnl7blV0KHQpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBuVXQuQ3ljbGVFeGNlcHRpb24pcmV0dXJuITE7dGhyb3cgdH1yZXR1cm4hMH0scG9zdG9yZGVyOmZ1bmN0aW9uIG1VdCh0LGUpe3JldHVybiBzVXQodCxlLCJwb3N0Iil9LHByZW9yZGVyOmZ1bmN0aW9uIGdVdCh0LGUpe3JldHVybiBsVXQodCxlLCJwcmUiKX0scHJpbTpmdW5jdGlvbiBfVXQodCxlKXt2YXIgbixpPW5ldyB1VXQscj17fSxvPW5ldyBoVXQ7ZnVuY3Rpb24gYSh0KXt2YXIgaT10LnY9PT1uP3Qudzp0LnYsYT1vLnByaW9yaXR5KGkpO2lmKHZvaWQgMCE9PWEpe3ZhciBzPWUodCk7czxhJiYocltpXT1uLG8uZGVjcmVhc2UoaSxzKSl9fWlmKDA9PT10Lm5vZGVDb3VudCgpKXJldHVybiBpO2NVdC5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7by5hZGQodCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGkuc2V0Tm9kZSh0KX0pKSxvLmRlY3JlYXNlKHQubm9kZXMoKVswXSwwKTt2YXIgcz0hMTtmb3IoO28uc2l6ZSgpPjA7KXtpZihuPW8ucmVtb3ZlTWluKCksY1V0LmhhcyhyLG4pKWkuc2V0RWRnZShuLHJbbl0pO2Vsc2V7aWYocyl0aHJvdyBuZXcgRXJyb3IoIklucHV0IGdyYXBoIGlzIG5vdCBjb25uZWN0ZWQ6ICIrdCk7cz0hMH10Lm5vZGVFZGdlcyhuKS5mb3JFYWNoKGEpfXJldHVybiBpfSx0YXJqYW46alZ0LHRvcHNvcnQ6UVZ0fSx2ZXJzaW9uOmJWdC52ZXJzaW9ufTt0cnl7ZFV0PXBVdH1jYXRjaCh0KXt9ZFV0fHwoZFV0PXdpbmRvdy5ncmFwaGxpYik7dmFyIHlVdD1kVXQsdlV0PWdPdDt2YXIgYlV0PWZ1bmN0aW9uIHhVdCh0KXtyZXR1cm4gdlV0KHQsNSl9LHdVdD1IQXQsU1V0PXlJdCxNVXQ9Tkx0LEVVdD1Ma3Q7dmFyIFRVdD1mdW5jdGlvbiBDVXQodCxlLG4pe2lmKCFFVXQobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/U1V0KG4pJiZNVXQoZSxuLmxlbmd0aCk6InN0cmluZyI9PWkmJmUgaW4gbikmJndVdChuW2VdLHQpfSxBVXQ9SEF0LGtVdD1UVXQsUFV0PUJJdCxMVXQ9T2JqZWN0LnByb3RvdHlwZSxJVXQ9TFV0Lmhhc093blByb3BlcnR5LE5VdD1TRnQoKGZ1bmN0aW9uKHQsZSl7dD1PYmplY3QodCk7dmFyIG49LTEsaT1lLmxlbmd0aCxyPWk+Mj9lWzJdOnZvaWQgMDtmb3IociYma1V0KGVbMF0sZVsxXSxyKSYmKGk9MSk7KytuPGk7KWZvcih2YXIgbz1lW25dLGE9UFV0KG8pLHM9LTEsbD1hLmxlbmd0aDsrK3M8bDspe3ZhciBjPWFbc10sdT10W2NdOyh2b2lkIDA9PT11fHxBVXQodSxMVXRbY10pJiYhSVV0LmNhbGwodCxjKSkmJih0W2NdPW9bY10pfXJldHVybiB0fSkpLFJVdD14QnQsT1V0PXlJdCx6VXQ9U0l0O3ZhciBEVXQ9L1xzLzt2YXIgQlV0PWZ1bmN0aW9uIEhVdCh0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZEVXQudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0sRlV0PS9eXHMrLzt2YXIgVlV0PWZ1bmN0aW9uIFVVdCh0KXtyZXR1cm4gdD90LnNsaWNlKDAsQlV0KHQpKzEpLnJlcGxhY2UoRlV0LCIiKTp0fSxqVXQ9TGt0LEdVdD10RHQsV1V0PS9eWy0rXTB4WzAtOWEtZl0rJC9pLHFVdD0vXjBiWzAxXSskL2ksWVV0PS9eMG9bMC03XSskL2ksWFV0PXBhcnNlSW50O3ZhciAkVXQ9ZnVuY3Rpb24gS1V0KHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihHVXQodCkpcmV0dXJuIE5hTjtpZihqVXQodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWpVdChlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9VlV0KHQpO3ZhciBuPXFVdC50ZXN0KHQpO3JldHVybiBufHxZVXQudGVzdCh0KT9YVXQodC5zbGljZSgyKSxuPzI6OCk6V1V0LnRlc3QodCk/TmFOOit0fSxaVXQ9MS8wO3ZhciBKVXQ9ZnVuY3Rpb24gUVV0KHQpe3JldHVybiB0Pyh0PSRVdCh0KSk9PT1aVXR8fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH0sdGp0PUpVdDt2YXIgZWp0PUVGdCxuanQ9eEJ0LGlqdD1mdW5jdGlvbiByanQodCl7dmFyIGU9dGp0KHQpLG49ZSUxO3JldHVybiBlPT1lP24/ZS1uOmU6MH0sb2p0PU1hdGgubWF4O3ZhciBhanQ9KGZ1bmN0aW9uIGxqdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3ZhciByPU9iamVjdChlKTtpZighT1V0KGUpKXt2YXIgbz1SVXQobik7ZT16VXQoZSksbj1mdW5jdGlvbih0KXtyZXR1cm4gbyhyW3RdLHQscil9fXZhciBhPXQoZSxuLGkpO3JldHVybiBhPi0xP3Jbbz9lW2FdOmFdOnZvaWQgMH19KSgoZnVuY3Rpb24gc2p0KHQsZSxuKXt2YXIgaT1udWxsPT10PzA6dC5sZW5ndGg7aWYoIWkpcmV0dXJuLTE7dmFyIHI9bnVsbD09bj8wOmlqdChuKTtyZXR1cm4gcjwwJiYocj1vanQoaStyLDApKSxlanQodCxuanQoZSkscil9KSksY2p0PWNGdDt2YXIgdWp0PWZ1bmN0aW9uIGhqdCh0KXtyZXR1cm4obnVsbD09dD8wOnQubGVuZ3RoKT9janQodCwxKTpbXX0sZGp0PXdPdCxwanQ9Uk90LGZqdD1CSXQ7dmFyIG1qdD1mdW5jdGlvbiBnanQodCxlKXtyZXR1cm4gbnVsbD09dD90OmRqdCh0LHBqdChlKSxmanQpfTt2YXIgX2p0PWZ1bmN0aW9uIHlqdCh0KXt2YXIgZT1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIGU/dFtlLTFdOnZvaWQgMH0sdmp0PXJMdCxianQ9VE90LHhqdD14QnQ7dmFyIHdqdD1mdW5jdGlvbiBTanQodCxlKXt2YXIgbj17fTtyZXR1cm4gZT14anQoZSksYmp0KHQsKGZ1bmN0aW9uKHQsaSxyKXt2anQobixpLGUodCxpLHIpKX0pKSxufSxNanQ9dER0O3ZhciBFanQ9ZnVuY3Rpb24gVGp0KHQsZSxuKXtmb3IodmFyIGk9LTEscj10Lmxlbmd0aDsrK2k8cjspe3ZhciBvPXRbaV0sYT1lKG8pO2lmKG51bGwhPWEmJih2b2lkIDA9PT1zP2E9PWEmJiFNanQoYSk6bihhLHMpKSl2YXIgcz1hLGw9b31yZXR1cm4gbH07dmFyIENqdD1FanQsQWp0PWZ1bmN0aW9uIGtqdCh0LGUpe3JldHVybiB0PmV9LFBqdD1MT3Q7dmFyIExqdD1mdW5jdGlvbiBJanQodCl7cmV0dXJuIHQmJnQubGVuZ3RoP0NqdCh0LFBqdCxBanQpOnZvaWQgMH0sTmp0PXJMdCxSanQ9SEF0O3ZhciBPanQ9ZnVuY3Rpb24gemp0KHQsZSxuKXsodm9pZCAwIT09biYmIVJqdCh0W2VdLG4pfHx2b2lkIDA9PT1uJiYhKGUgaW4gdCkpJiZOanQodCxlLG4pfSxEanQ9a2t0LEJqdD1zTnQsSGp0PV9MdCxGanQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLFZqdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFVqdD1GanQuY2FsbChPYmplY3QpO3ZhciBqanQ9ZnVuY3Rpb24gR2p0KHQsZSl7aWYoKCJjb25zdHJ1Y3RvciIhPT1lfHwiZnVuY3Rpb24iIT10eXBlb2YgdFtlXSkmJiJfX3Byb3RvX18iIT1lKXJldHVybiB0W2VdfSxXanQ9cEx0LHFqdD1CSXQ7dmFyIFlqdD1PanQsWGp0PUdJdC5leHBvcnRzLCRqdD11UnQsS2p0PVdJdCxaanQ9QVJ0LEpqdD1DTHQsUWp0PUFMdCx0R3Q9S0Z0LGVHdD1rTHQuZXhwb3J0cyxuR3Q9emt0LGlHdD1Ma3Qsckd0PWZ1bmN0aW9uIG9HdCh0KXtpZighSGp0KHQpfHwiW29iamVjdCBPYmplY3RdIiE9RGp0KHQpKXJldHVybiExO3ZhciBlPUJqdCh0KTtpZihudWxsPT09ZSlyZXR1cm4hMDt2YXIgbj1WanQuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmRmp0LmNhbGwobik9PVVqdH0sYUd0PSRMdCxzR3Q9amp0LGxHdD1mdW5jdGlvbiBjR3QodCl7cmV0dXJuIFdqdCh0LHFqdCh0KSl9O3ZhciB1R3Q9SlB0LGhHdD1PanQsZEd0PXdPdCxwR3Q9ZnVuY3Rpb24gZkd0KHQsZSxuLGkscixvLGEpe3ZhciBzPXNHdCh0LG4pLGw9c0d0KGUsbiksYz1hLmdldChsKTtpZihjKVlqdCh0LG4sYyk7ZWxzZXt2YXIgdT1vP28ocyxsLG4rIiIsdCxlLGEpOnZvaWQgMCxoPXZvaWQgMD09PXU7aWYoaCl7dmFyIGQ9UWp0KGwpLHA9IWQmJmVHdChsKSxmPSFkJiYhcCYmYUd0KGwpO3U9bCxkfHxwfHxmP1FqdChzKT91PXM6dEd0KHMpP3U9S2p0KHMpOnA/KGg9ITEsdT1YanQobCwhMCkpOmY/KGg9ITEsdT0kanQobCwhMCkpOnU9W106ckd0KGwpfHxKanQobCk/KHU9cyxKanQocyk/dT1sR3Qocyk6aUd0KHMpJiYhbkd0KHMpfHwodT1aanQobCkpKTpoPSExfWgmJihhLnNldChsLHUpLHIodSxsLGksbyxhKSxhLmRlbGV0ZShsKSksWWp0KHQsbix1KX19LG1HdD1Ma3QsZ0d0PUJJdCxfR3Q9amp0O3ZhciB5R3Q9U0Z0LHZHdD1UVXQ7dmFyIGJHdD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7ZSE9PW4mJmRHdChuLChmdW5jdGlvbihhLHMpe2lmKG98fChvPW5ldyB1R3QpLG1HdChhKSlwR3QoZSxuLHMsaSx0LHIsbyk7ZWxzZXt2YXIgbD1yP3IoX0d0KGUscyksYSxzKyIiLGUsbixvKTp2b2lkIDA7dm9pZCAwPT09bCYmKGw9YSksaEd0KGUscyxsKX19KSxnR3QpfSx4R3Q9KGZ1bmN0aW9uIHdHdCh0KXtyZXR1cm4geUd0KChmdW5jdGlvbihlLG4pe3ZhciBpPS0xLHI9bi5sZW5ndGgsbz1yPjE/bltyLTFdOnZvaWQgMCxhPXI+Mj9uWzJdOnZvaWQgMDtmb3Iobz10Lmxlbmd0aD4zJiYiZnVuY3Rpb24iPT10eXBlb2Ygbz8oci0tLG8pOnZvaWQgMCxhJiZ2R3QoblswXSxuWzFdLGEpJiYobz1yPDM/dm9pZCAwOm8scj0xKSxlPU9iamVjdChlKTsrK2k8cjspe3ZhciBzPW5baV07cyYmdChlLHMsaSxvKX1yZXR1cm4gZX0pKX0pKChmdW5jdGlvbih0LGUsbil7Ykd0KHQsZSxuKX0pKTt2YXIgU0d0PWZ1bmN0aW9uIE1HdCh0LGUpe3JldHVybiB0PGV9LEVHdD1FanQsVEd0PVNHdCxDR3Q9TE90O3ZhciBBR3Q9ZnVuY3Rpb24ga0d0KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9FR3QodCxDR3QsVEd0KTp2b2lkIDB9LFBHdD1FanQsTEd0PXhCdCxJR3Q9U0d0O3ZhciBOR3Q9ZnVuY3Rpb24gUkd0KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP1BHdCh0LExHdChlKSxJR3QpOnZvaWQgMH0sT0d0PV9rdCx6R3Q9ZnVuY3Rpb24oKXtyZXR1cm4gT0d0LkRhdGUubm93KCl9LERHdD1jTHQsQkd0PWtEdCxIR3Q9Tkx0LEZHdD1Ma3QsVkd0PUlEdDt2YXIgVUd0PXpEdCxqR3Q9ZnVuY3Rpb24gR0d0KHQsZSxuLGkpe2lmKCFGR3QodCkpcmV0dXJuIHQ7Zm9yKHZhciByPS0xLG89KGU9Qkd0KGUsdCkpLmxlbmd0aCxhPW8tMSxzPXQ7bnVsbCE9cyYmKytyPG87KXt2YXIgbD1WR3QoZVtyXSksYz1uO2lmKCJfX3Byb3RvX18iPT09bHx8ImNvbnN0cnVjdG9yIj09PWx8fCJwcm90b3R5cGUiPT09bClyZXR1cm4gdDtpZihyIT1hKXt2YXIgdT1zW2xdO3ZvaWQgMD09PShjPWk/aSh1LGwscyk6dm9pZCAwKSYmKGM9Rkd0KHUpP3U6SEd0KGVbcisxXSk/W106e30pfURHdChzLGwsYykscz1zW2xdfXJldHVybiB0fSxXR3Q9a0R0O3ZhciBxR3Q9ZnVuY3Rpb24gWUd0KHQsZSxuKXtmb3IodmFyIGk9LTEscj1lLmxlbmd0aCxvPXt9OysraTxyOyl7dmFyIGE9ZVtpXSxzPVVHdCh0LGEpO24ocyxhKSYmakd0KG8sV0d0KGEsdCkscyl9cmV0dXJuIG99LFhHdD1LRHQ7dmFyICRHdD11anQsS0d0PXBGdCxaR3Q9eUZ0O3ZhciBKR3Q9ZnVuY3Rpb24gUUd0KHQsZSl7cmV0dXJuIHFHdCh0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIFhHdCh0LG4pfSkpfSx0V3Q9KGZ1bmN0aW9uIGVXdCh0KXtyZXR1cm4gWkd0KEtHdCh0LHZvaWQgMCwkR3QpLHQrIiIpfSkoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/e306Skd0KHQsZSl9KSksbld0PU1hdGguY2VpbCxpV3Q9TWF0aC5tYXg7dmFyIHJXdD1mdW5jdGlvbiBvV3QodCxlLG4saSl7Zm9yKHZhciByPS0xLG89aVd0KG5XdCgoZS10KS8obnx8MSkpLDApLGE9QXJyYXkobyk7by0tOylhW2k/bzorK3JdPXQsdCs9bjtyZXR1cm4gYX0sYVd0PVRVdCxzV3Q9SlV0O3ZhciBsV3Q9KGZ1bmN0aW9uIGNXdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3JldHVybiBpJiYibnVtYmVyIiE9dHlwZW9mIGkmJmFXdChlLG4saSkmJihuPWk9dm9pZCAwKSxlPXNXdChlKSx2b2lkIDA9PT1uPyhuPWUsZT0wKTpuPXNXdChuKSxpPXZvaWQgMD09PWk/ZTxuPzE6LTE6c1d0KGkpLHJXdChlLG4saSx0KX19KSgpO3ZhciB1V3Q9dER0O3ZhciBoV3Q9ZnVuY3Rpb24gZFd0KHQsZSl7aWYodCE9PWUpe3ZhciBuPXZvaWQgMCE9PXQsaT1udWxsPT09dCxyPXQ9PXQsbz11V3QodCksYT12b2lkIDAhPT1lLHM9bnVsbD09PWUsbD1lPT1lLGM9dVd0KGUpO2lmKCFzJiYhYyYmIW8mJnQ+ZXx8byYmYSYmbCYmIXMmJiFjfHxpJiZhJiZsfHwhbiYmbHx8IXIpcmV0dXJuIDE7aWYoIWkmJiFvJiYhYyYmdDxlfHxjJiZuJiZyJiYhaSYmIW98fHMmJm4mJnJ8fCFhJiZyfHwhbClyZXR1cm4tMX1yZXR1cm4gMH07dmFyIHBXdD1tRHQsZld0PXpEdCxtV3Q9eEJ0LGdXdD1LQnQsX1d0PWZ1bmN0aW9uIHlXdCh0LGUpe3ZhciBuPXQubGVuZ3RoO2Zvcih0LnNvcnQoZSk7bi0tOyl0W25dPXRbbl0udmFsdWU7cmV0dXJuIHR9LHZXdD1qTHQsYld0PWZ1bmN0aW9uIHhXdCh0LGUsbil7Zm9yKHZhciBpPS0xLHI9dC5jcml0ZXJpYSxvPWUuY3JpdGVyaWEsYT1yLmxlbmd0aCxzPW4ubGVuZ3RoOysraTxhOyl7dmFyIGw9aFd0KHJbaV0sb1tpXSk7aWYobClyZXR1cm4gaT49cz9sOmwqKCJkZXNjIj09bltpXT8tMToxKX1yZXR1cm4gdC5pbmRleC1lLmluZGV4fSx3V3Q9TE90LFNXdD1BTHQ7dmFyIE1XdD1jRnQsRVd0PWZ1bmN0aW9uIFRXdCh0LGUsbil7ZT1lLmxlbmd0aD9wV3QoZSwoZnVuY3Rpb24odCl7cmV0dXJuIFNXdCh0KT9mdW5jdGlvbihlKXtyZXR1cm4gZld0KGUsMT09PXQubGVuZ3RoP3RbMF06dCl9OnR9KSk6W3dXdF07dmFyIGk9LTE7ZT1wV3QoZSx2V3QobVd0KSk7dmFyIHI9Z1d0KHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6cFd0KGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLGluZGV4OisraSx2YWx1ZTp0fX0pKTtyZXR1cm4gX1d0KHIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJXdCh0LGUsbil9KSl9LENXdD1UVXQsQVd0PVNGdCgoZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybltdO3ZhciBuPWUubGVuZ3RoO3JldHVybiBuPjEmJkNXdCh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJkNXdChlWzBdLGVbMV0sZVsyXSkmJihlPVtlWzBdXSksRVd0KHQsTVd0KGUsMSksW10pfSkpLGtXdD1TRHQsUFd0PTA7dmFyIExXdD1mdW5jdGlvbiBJV3QodCl7dmFyIGU9KytQV3Q7cmV0dXJuIGtXdCh0KStlfTt2YXIgTld0PWNMdCxSV3Q9ZnVuY3Rpb24gT1d0KHQsZSxuKXtmb3IodmFyIGk9LTEscj10Lmxlbmd0aCxvPWUubGVuZ3RoLGE9e307KytpPHI7KXtuKGEsdFtpXSxpPG8/ZVtpXTp2b2lkIDApfXJldHVybiBhfTt2YXIgeld0LERXdD1mdW5jdGlvbiBCV3QodCxlKXtyZXR1cm4gUld0KHR8fFtdLGV8fFtdLE5XdCl9O3RyeXt6V3Q9e2Nsb25lRGVlcDpiVXQsY29uc3RhbnQ6Yk90LGRlZmF1bHRzOk5VdCxlYWNoOlVPdCxmaWx0ZXI6Q0J0LGZpbmQ6YWp0LGZsYXR0ZW46dWp0LGZvckVhY2g6Rk90LGZvckluOm1qdCxoYXM6TkJ0LGlzVW5kZWZpbmVkOnFCdCxsYXN0Ol9qdCxtYXA6bkh0LG1hcFZhbHVlczp3anQsbWF4OkxqdCxtZXJnZTp4R3QsbWluOkFHdCxtaW5CeTpOR3Qsbm93OnpHdCxwaWNrOnRXdCxyYW5nZTpsV3QscmVkdWNlOmhIdCxzb3J0Qnk6QVd0LHVuaXF1ZUlkOkxXdCx2YWx1ZXM6bFZ0LHppcE9iamVjdDpEV3R9fWNhdGNoKHQpe316V3R8fCh6V3Q9d2luZG93Ll8pO3ZhciBIV3Q9eld0LEZXdD1WV3Q7ZnVuY3Rpb24gVld0KCl7dmFyIHQ9e307dC5fbmV4dD10Ll9wcmV2PXQsdGhpcy5fc2VudGluZWw9dH1mdW5jdGlvbiBVV3QodCl7dC5fcHJldi5fbmV4dD10Ll9uZXh0LHQuX25leHQuX3ByZXY9dC5fcHJldixkZWxldGUgdC5fbmV4dCxkZWxldGUgdC5fcHJldn1mdW5jdGlvbiBqV3QodCxlKXtpZigiX25leHQiIT09dCYmIl9wcmV2IiE9PXQpcmV0dXJuIGV9Vld0LnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2VudGluZWwsZT10Ll9wcmV2O2lmKGUhPT10KXJldHVybiBVV3QoZSksZX0sVld0LnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NlbnRpbmVsO3QuX3ByZXYmJnQuX25leHQmJlVXdCh0KSx0Ll9uZXh0PWUuX25leHQsZS5fbmV4dC5fcHJldj10LGUuX25leHQ9dCx0Ll9wcmV2PWV9LFZXdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT10aGlzLl9zZW50aW5lbCxuPWUuX3ByZXY7biE9PWU7KXQucHVzaChKU09OLnN0cmluZ2lmeShuLGpXdCkpLG49bi5fcHJldjtyZXR1cm4iWyIrdC5qb2luKCIsICIpKyJdIn07dmFyIEdXdD1IV3QsV1d0PXlVdC5HcmFwaCxxV3Q9Rld0LFlXdD1mdW5jdGlvbiBYV3QodCxlKXtpZih0Lm5vZGVDb3VudCgpPD0xKXJldHVybltdO3ZhciBuPShmdW5jdGlvbiBpKHQsZSl7dmFyIG49bmV3IFdXdCxpPTAscj0wO0dXdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7bi5zZXROb2RlKHQse3Y6dCxpbjowLG91dDowfSl9KSksR1d0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbz1uLmVkZ2UodC52LHQudyl8fDAsYT1lKHQpO24uc2V0RWRnZSh0LnYsdC53LG8rYSkscj1NYXRoLm1heChyLG4ubm9kZSh0LnYpLm91dCs9YSksaT1NYXRoLm1heChpLG4ubm9kZSh0LncpLmluKz1hKX0pKTt2YXIgbz1HV3QucmFuZ2UocitpKzMpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHFXdH0pKSxhPWkrMTtyZXR1cm4gR1d0LmZvckVhY2gobi5ub2RlcygpLChmdW5jdGlvbih0KXtaV3QobyxhLG4ubm9kZSh0KSl9KSkse2dyYXBoOm4sYnVja2V0czpvLHplcm9JZHg6YX19KSh0LGV8fCRXdCkscj0oZnVuY3Rpb24gbyh0LGUsbil7dmFyIGkscj1bXSxvPWVbZS5sZW5ndGgtMV0sYT1lWzBdO2Zvcig7dC5ub2RlQ291bnQoKTspe2Zvcig7aT1hLmRlcXVldWUoKTspS1d0KHQsZSxuLGkpO2Zvcig7aT1vLmRlcXVldWUoKTspS1d0KHQsZSxuLGkpO2lmKHQubm9kZUNvdW50KCkpZm9yKHZhciBzPWUubGVuZ3RoLTI7cz4wOy0tcylpZihpPWVbc10uZGVxdWV1ZSgpKXtyPXIuY29uY2F0KEtXdCh0LGUsbixpLCEwKSk7YnJlYWt9fXJldHVybiByfSkobi5ncmFwaCxuLmJ1Y2tldHMsbi56ZXJvSWR4KTtyZXR1cm4gR1d0LmZsYXR0ZW4oR1d0Lm1hcChyLChmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlLnYsZS53KX0pKSwhMCl9LCRXdD1HV3QuY29uc3RhbnQoMSk7ZnVuY3Rpb24gS1d0KHQsZSxuLGkscil7dmFyIG89cj9bXTp2b2lkIDA7cmV0dXJuIEdXdC5mb3JFYWNoKHQuaW5FZGdlcyhpLnYpLChmdW5jdGlvbihpKXt2YXIgYT10LmVkZ2UoaSkscz10Lm5vZGUoaS52KTtyJiZvLnB1c2goe3Y6aS52LHc6aS53fSkscy5vdXQtPWEsWld0KGUsbixzKX0pKSxHV3QuZm9yRWFjaCh0Lm91dEVkZ2VzKGkudiksKGZ1bmN0aW9uKGkpe3ZhciByPXQuZWRnZShpKSxvPXQubm9kZShpLncpO28uaW4tPXIsWld0KGUsbixvKX0pKSx0LnJlbW92ZU5vZGUoaS52KSxvfWZ1bmN0aW9uIFpXdCh0LGUsbil7bi5vdXQ/bi5pbj90W24ub3V0LW4uaW4rZV0uZW5xdWV1ZShuKTp0W3QubGVuZ3RoLTFdLmVucXVldWUobik6dFswXS5lbnF1ZXVlKG4pfXZhciBKV3Q9SFd0LFFXdD1ZV3QsdHF0PXtydW46ZnVuY3Rpb24gZXF0KHQpe3ZhciBlPSJncmVlZHkiPT09dC5ncmFwaCgpLmFjeWNsaWNlcj9RV3QodCwoZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuZWRnZShlKS53ZWlnaHR9fSkodCkpOihmdW5jdGlvbiBpKHQpe3ZhciBlPVtdLG49e30saT17fTtmdW5jdGlvbiByKG8pe0pXdC5oYXMoaSxvKXx8KGlbb109ITAsbltvXT0hMCxKV3QuZm9yRWFjaCh0Lm91dEVkZ2VzKG8pLChmdW5jdGlvbih0KXtKV3QuaGFzKG4sdC53KT9lLnB1c2godCk6cih0LncpfSkpLGRlbGV0ZSBuW29dKX1yZXR1cm4gSld0LmZvckVhY2godC5ub2RlcygpLHIpLGV9KSh0KTtKV3QuZm9yRWFjaChlLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7dC5yZW1vdmVFZGdlKGUpLG4uZm9yd2FyZE5hbWU9ZS5uYW1lLG4ucmV2ZXJzZWQ9ITAsdC5zZXRFZGdlKGUudyxlLnYsbixKV3QudW5pcXVlSWQoInJldiIpKX0pKX0sdW5kbzpmdW5jdGlvbiBucXQodCl7Sld0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi5yZXZlcnNlZCl7dC5yZW1vdmVFZGdlKGUpO3ZhciBpPW4uZm9yd2FyZE5hbWU7ZGVsZXRlIG4ucmV2ZXJzZWQsZGVsZXRlIG4uZm9yd2FyZE5hbWUsdC5zZXRFZGdlKGUudyxlLnYsbixpKX19KSl9fTt2YXIgaXF0PUhXdCxycXQ9eVV0LkdyYXBoLG9xdD17YWRkRHVtbXlOb2RlOnlxdCxzaW1wbGlmeTpmdW5jdGlvbiBhcXQodCl7dmFyIGU9KG5ldyBycXQpLnNldEdyYXBoKHQuZ3JhcGgoKSk7cmV0dXJuIGlxdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7ZS5zZXROb2RlKG4sdC5ub2RlKG4pKX0pKSxpcXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPWUuZWRnZShuLnYsbi53KXx8e3dlaWdodDowLG1pbmxlbjoxfSxyPXQuZWRnZShuKTtlLnNldEVkZ2Uobi52LG4udyx7d2VpZ2h0Omkud2VpZ2h0K3Iud2VpZ2h0LG1pbmxlbjpNYXRoLm1heChpLm1pbmxlbixyLm1pbmxlbil9KX0pKSxlfSxhc05vbkNvbXBvdW5kR3JhcGg6ZnVuY3Rpb24gc3F0KHQpe3ZhciBlPW5ldyBycXQoe211bHRpZ3JhcGg6dC5pc011bHRpZ3JhcGgoKX0pLnNldEdyYXBoKHQuZ3JhcGgoKSk7cmV0dXJuIGlxdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dC5jaGlsZHJlbihuKS5sZW5ndGh8fGUuc2V0Tm9kZShuLHQubm9kZShuKSl9KSksaXF0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXtlLnNldEVkZ2Uobix0LmVkZ2UobikpfSkpLGV9LHN1Y2Nlc3NvcldlaWdodHM6ZnVuY3Rpb24gbHF0KHQpe3ZhciBlPWlxdC5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4gaXF0LmZvckVhY2godC5vdXRFZGdlcyhlKSwoZnVuY3Rpb24oZSl7bltlLnddPShuW2Uud118fDApK3QuZWRnZShlKS53ZWlnaHR9KSksbn0pKTtyZXR1cm4gaXF0LnppcE9iamVjdCh0Lm5vZGVzKCksZSl9LHByZWRlY2Vzc29yV2VpZ2h0czpmdW5jdGlvbiBjcXQodCl7dmFyIGU9aXF0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXt9O3JldHVybiBpcXQuZm9yRWFjaCh0LmluRWRnZXMoZSksKGZ1bmN0aW9uKGUpe25bZS52XT0obltlLnZdfHwwKSt0LmVkZ2UoZSkud2VpZ2h0fSkpLG59KSk7cmV0dXJuIGlxdC56aXBPYmplY3QodC5ub2RlcygpLGUpfSxpbnRlcnNlY3RSZWN0OmZ1bmN0aW9uIHVxdCh0LGUpe3ZhciBuLGkscj10Lngsbz10LnksYT1lLngtcixzPWUueS1vLGw9dC53aWR0aC8yLGM9dC5oZWlnaHQvMjtpZighYSYmIXMpdGhyb3cgbmV3IEVycm9yKCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUiKTtNYXRoLmFicyhzKSpsPk1hdGguYWJzKGEpKmM/KHM8MCYmKGM9LWMpLG49YyphL3MsaT1jKTooYTwwJiYobD0tbCksbj1sLGk9bCpzL2EpO3JldHVybnt4OnIrbix5Om8raX19LGJ1aWxkTGF5ZXJNYXRyaXg6ZnVuY3Rpb24gaHF0KHQpe3ZhciBlPWlxdC5tYXAoaXF0LnJhbmdlKHZxdCh0KSsxKSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKTtyZXR1cm4gaXF0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobikscj1pLnJhbms7aXF0LmlzVW5kZWZpbmVkKHIpfHwoZVtyXVtpLm9yZGVyXT1uKX0pKSxlfSxub3JtYWxpemVSYW5rczpmdW5jdGlvbiBkcXQodCl7dmFyIGU9aXF0Lm1pbihpcXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKTtpcXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKTtpcXQuaGFzKGksInJhbmsiKSYmKGkucmFuay09ZSl9KSl9LHJlbW92ZUVtcHR5UmFua3M6ZnVuY3Rpb24gcHF0KHQpe3ZhciBlPWlxdC5taW4oaXF0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSksbj1bXTtpcXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGkpe3ZhciByPXQubm9kZShpKS5yYW5rLWU7bltyXXx8KG5bcl09W10pLG5bcl0ucHVzaChpKX0pKTt2YXIgaT0wLHI9dC5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO2lxdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKGUsbil7aXF0LmlzVW5kZWZpbmVkKGUpJiZuJXIhPTA/LS1pOmkmJmlxdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3Qubm9kZShlKS5yYW5rKz1pfSkpfSkpfSxhZGRCb3JkZXJOb2RlOmZ1bmN0aW9uIGZxdCh0LGUsbixpKXt2YXIgcj17d2lkdGg6MCxoZWlnaHQ6MH07YXJndW1lbnRzLmxlbmd0aD49NCYmKHIucmFuaz1uLHIub3JkZXI9aSk7cmV0dXJuIHlxdCh0LCJib3JkZXIiLHIsZSl9LG1heFJhbms6dnF0LHBhcnRpdGlvbjpmdW5jdGlvbiBtcXQodCxlKXt2YXIgbj17bGhzOltdLHJoczpbXX07cmV0dXJuIGlxdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe2UodCk/bi5saHMucHVzaCh0KTpuLnJocy5wdXNoKHQpfSkpLG59LHRpbWU6ZnVuY3Rpb24gZ3F0KHQsZSl7dmFyIG49aXF0Lm5vdygpO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7Y29uc29sZS5sb2codCsiIHRpbWU6ICIrKGlxdC5ub3coKS1uKSsibXMiKX19LG5vdGltZTpmdW5jdGlvbiBfcXQodCxlKXtyZXR1cm4gZSgpfX07ZnVuY3Rpb24geXF0KHQsZSxuLGkpe3ZhciByO2Rve3I9aXF0LnVuaXF1ZUlkKGkpfXdoaWxlKHQuaGFzTm9kZShyKSk7cmV0dXJuIG4uZHVtbXk9ZSx0LnNldE5vZGUocixuKSxyfWZ1bmN0aW9uIHZxdCh0KXtyZXR1cm4gaXF0Lm1heChpcXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLnJhbms7aWYoIWlxdC5pc1VuZGVmaW5lZChuKSlyZXR1cm4gbn0pKSl9dmFyIGJxdD1IV3QseHF0PW9xdCx3cXQ9e3J1bjpmdW5jdGlvbiBTcXQodCl7dC5ncmFwaCgpLmR1bW15Q2hhaW5zPVtdLGJxdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7IShmdW5jdGlvbiBuKHQsZSl7dmFyIG4saSxyLG89ZS52LGE9dC5ub2RlKG8pLnJhbmsscz1lLncsbD10Lm5vZGUocykucmFuayxjPWUubmFtZSx1PXQuZWRnZShlKSxoPXUubGFiZWxSYW5rO2lmKGw9PT1hKzEpcmV0dXJuO2Zvcih0LnJlbW92ZUVkZ2UoZSkscj0wLCsrYTthPGw7KytyLCsrYSl1LnBvaW50cz1bXSxuPXhxdC5hZGREdW1teU5vZGUodCwiZWRnZSIsaT17d2lkdGg6MCxoZWlnaHQ6MCxlZGdlTGFiZWw6dSxlZGdlT2JqOmUscmFuazphfSwiX2QiKSxhPT09aCYmKGkud2lkdGg9dS53aWR0aCxpLmhlaWdodD11LmhlaWdodCxpLmR1bW15PSJlZGdlLWxhYmVsIixpLmxhYmVscG9zPXUubGFiZWxwb3MpLHQuc2V0RWRnZShvLG4se3dlaWdodDp1LndlaWdodH0sYyksMD09PXImJnQuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKG4pLG89bjt0LnNldEVkZ2UobyxzLHt3ZWlnaHQ6dS53ZWlnaHR9LGMpfSkodCxlKX0pKX0sdW5kbzpmdW5jdGlvbiBNcXQodCl7YnF0LmZvckVhY2godC5ncmFwaCgpLmR1bW15Q2hhaW5zLChmdW5jdGlvbihlKXt2YXIgbixpPXQubm9kZShlKSxyPWkuZWRnZUxhYmVsO2Zvcih0LnNldEVkZ2UoaS5lZGdlT2JqLHIpO2kuZHVtbXk7KW49dC5zdWNjZXNzb3JzKGUpWzBdLHQucmVtb3ZlTm9kZShlKSxyLnBvaW50cy5wdXNoKHt4OmkueCx5OmkueX0pLCJlZGdlLWxhYmVsIj09PWkuZHVtbXkmJihyLng9aS54LHIueT1pLnksci53aWR0aD1pLndpZHRoLHIuaGVpZ2h0PWkuaGVpZ2h0KSxpPXQubm9kZShlPW4pfSkpfX07dmFyIEVxdD1IV3QsVHF0PXtsb25nZXN0UGF0aDpmdW5jdGlvbiBDcXQodCl7dmFyIGU9e307RXF0LmZvckVhY2godC5zb3VyY2VzKCksKGZ1bmN0aW9uIG4oaSl7dmFyIHI9dC5ub2RlKGkpO2lmKEVxdC5oYXMoZSxpKSlyZXR1cm4gci5yYW5rO2VbaV09ITA7dmFyIG89RXF0Lm1pbihFcXQubWFwKHQub3V0RWRnZXMoaSksKGZ1bmN0aW9uKGUpe3JldHVybiBuKGUudyktdC5lZGdlKGUpLm1pbmxlbn0pKSk7cmV0dXJuIG8hPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJm51bGwhPW98fChvPTApLHIucmFuaz1vfSkpfSxzbGFjazpmdW5jdGlvbiBBcXQodCxlKXtyZXR1cm4gdC5ub2RlKGUudykucmFuay10Lm5vZGUoZS52KS5yYW5rLXQuZWRnZShlKS5taW5sZW59fTt2YXIga3F0PUhXdCxQcXQ9eVV0LkdyYXBoLExxdD1UcXQuc2xhY2ssSXF0PWZ1bmN0aW9uIE5xdCh0KXt2YXIgZSxuLGk9bmV3IFBxdCh7ZGlyZWN0ZWQ6ITF9KSxyPXQubm9kZXMoKVswXSxvPXQubm9kZUNvdW50KCk7aS5zZXROb2RlKHIse30pO2Zvcig7UnF0KGksdCk8bzspZT1PcXQoaSx0KSxuPWkuaGFzTm9kZShlLnYpP0xxdCh0LGUpOi1McXQodCxlKSx6cXQoaSx0LG4pO3JldHVybiBpfTtmdW5jdGlvbiBScXQodCxlKXtyZXR1cm4ga3F0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbiBuKGkpe2txdC5mb3JFYWNoKGUubm9kZUVkZ2VzKGkpLChmdW5jdGlvbihyKXt2YXIgbz1yLnYsYT1pPT09bz9yLnc6bzt0Lmhhc05vZGUoYSl8fExxdChlLHIpfHwodC5zZXROb2RlKGEse30pLHQuc2V0RWRnZShpLGEse30pLG4oYSkpfSkpfSkpLHQubm9kZUNvdW50KCl9ZnVuY3Rpb24gT3F0KHQsZSl7cmV0dXJuIGtxdC5taW5CeShlLmVkZ2VzKCksKGZ1bmN0aW9uKG4pe2lmKHQuaGFzTm9kZShuLnYpIT09dC5oYXNOb2RlKG4udykpcmV0dXJuIExxdChlLG4pfSkpfWZ1bmN0aW9uIHpxdCh0LGUsbil7a3F0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtlLm5vZGUodCkucmFuays9bn0pKX12YXIgRHF0PUhXdCxCcXQ9SXF0LEhxdD1UcXQuc2xhY2ssRnF0PVRxdC5sb25nZXN0UGF0aCxWcXQ9eVV0LmFsZy5wcmVvcmRlcixVcXQ9eVV0LmFsZy5wb3N0b3JkZXIsanF0PW9xdC5zaW1wbGlmeSxHcXQ9V3F0O2Z1bmN0aW9uIFdxdCh0KXt0PWpxdCh0KSxGcXQodCk7dmFyIGUsbj1CcXQodCk7Zm9yKFhxdChuKSxxcXQobix0KTtlPUtxdChuKTspSnF0KG4sdCxlLFpxdChuLHQsZSkpfWZ1bmN0aW9uIHFxdCh0LGUpe3ZhciBuPVVxdCh0LHQubm9kZXMoKSk7bj1uLnNsaWNlKDAsbi5sZW5ndGgtMSksRHF0LmZvckVhY2gobiwoZnVuY3Rpb24obil7IShmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT10Lm5vZGUobik7dC5lZGdlKG4saS5wYXJlbnQpLmN1dHZhbHVlPVlxdCh0LGUsbil9KSh0LGUsbil9KSl9ZnVuY3Rpb24gWXF0KHQsZSxuKXt2YXIgaT10Lm5vZGUobikucGFyZW50LHI9ITAsbz1lLmVkZ2UobixpKSxhPTA7cmV0dXJuIG98fChyPSExLG89ZS5lZGdlKGksbikpLGE9by53ZWlnaHQsRHF0LmZvckVhY2goZS5ub2RlRWRnZXMobiksKGZ1bmN0aW9uKG8pe3ZhciBzPW8udj09PW4sbD1zP28udzpvLnY7aWYobCE9PWkpe3ZhciBjPXM9PT1yLHU9ZS5lZGdlKG8pLndlaWdodDtpZihhKz1jP3U6LXUsKGZ1bmN0aW9uIGgodCxlLG4pe3JldHVybiB0Lmhhc0VkZ2UoZSxuKX0pKHQsbixsKSl7dmFyIGQ9dC5lZGdlKG4sbCkuY3V0dmFsdWU7YSs9Yz8tZDpkfX19KSksYX1mdW5jdGlvbiBYcXQodCxlKXthcmd1bWVudHMubGVuZ3RoPDImJihlPXQubm9kZXMoKVswXSksJHF0KHQse30sMSxlKX1mdW5jdGlvbiAkcXQodCxlLG4saSxyKXt2YXIgbz1uLGE9dC5ub2RlKGkpO3JldHVybiBlW2ldPSEwLERxdC5mb3JFYWNoKHQubmVpZ2hib3JzKGkpLChmdW5jdGlvbihyKXtEcXQuaGFzKGUscil8fChuPSRxdCh0LGUsbixyLGkpKX0pKSxhLmxvdz1vLGEubGltPW4rKyxyP2EucGFyZW50PXI6ZGVsZXRlIGEucGFyZW50LG59ZnVuY3Rpb24gS3F0KHQpe3JldHVybiBEcXQuZmluZCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkuY3V0dmFsdWU8MH0pKX1mdW5jdGlvbiBacXQodCxlLG4pe3ZhciBpPW4udixyPW4udztlLmhhc0VkZ2UoaSxyKXx8KGk9bi53LHI9bi52KTt2YXIgbz10Lm5vZGUoaSksYT10Lm5vZGUocikscz1vLGw9ITE7by5saW0+YS5saW0mJihzPWEsbD0hMCk7dmFyIGM9RHF0LmZpbHRlcihlLmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBsPT09UXF0KHQsdC5ub2RlKGUudikscykmJmwhPT1RcXQodCx0Lm5vZGUoZS53KSxzKX0pKTtyZXR1cm4gRHF0Lm1pbkJ5KGMsKGZ1bmN0aW9uKHQpe3JldHVybiBIcXQoZSx0KX0pKX1mdW5jdGlvbiBKcXQodCxlLG4saSl7dC5yZW1vdmVFZGdlKG4udixuLncpLHQuc2V0RWRnZShpLnYsaS53LHt9KSxYcXQodCkscXF0KHQsZSksKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj1EcXQuZmluZCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe3JldHVybiFlLm5vZGUodCkucGFyZW50fSkpLGk9VnF0KHQsbik7aT1pLnNsaWNlKDEpLERxdC5mb3JFYWNoKGksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKS5wYXJlbnQscj1lLmVkZ2UobixpKSxvPSExO3J8fChyPWUuZWRnZShpLG4pLG89ITApLGUubm9kZShuKS5yYW5rPWUubm9kZShpKS5yYW5rKyhvP3IubWlubGVuOi1yLm1pbmxlbil9KSl9KSh0LGUpfWZ1bmN0aW9uIFFxdCh0LGUsbil7cmV0dXJuIG4ubG93PD1lLmxpbSYmZS5saW08PW4ubGltfVdxdC5pbml0TG93TGltVmFsdWVzPVhxdCxXcXQuaW5pdEN1dFZhbHVlcz1xcXQsV3F0LmNhbGNDdXRWYWx1ZT1ZcXQsV3F0LmxlYXZlRWRnZT1LcXQsV3F0LmVudGVyRWRnZT1acXQsV3F0LmV4Y2hhbmdlRWRnZXM9SnF0O3ZhciB0WXQ9VHF0Lmxvbmdlc3RQYXRoLGVZdD1JcXQsbll0PUdxdCxpWXQ9ZnVuY3Rpb24gcll0KHQpe3N3aXRjaCh0LmdyYXBoKCkucmFua2VyKXtjYXNlIm5ldHdvcmstc2ltcGxleCI6YVl0KHQpO2JyZWFrO2Nhc2UidGlnaHQtdHJlZSI6IShmdW5jdGlvbiBlKHQpe3RZdCh0KSxlWXQodCl9KSh0KTticmVhaztjYXNlImxvbmdlc3QtcGF0aCI6b1l0KHQpO2JyZWFrO2RlZmF1bHQ6YVl0KHQpfX07dmFyIG9ZdD10WXQ7ZnVuY3Rpb24gYVl0KHQpe25ZdCh0KX12YXIgc1l0PUhXdDt2YXIgbFl0PUhXdCxjWXQ9b3F0O2Z1bmN0aW9uIHVZdCh0LGUsbixpLHIsbyxhKXt2YXIgcz10LmNoaWxkcmVuKGEpO2lmKHMubGVuZ3RoKXt2YXIgbD1jWXQuYWRkQm9yZGVyTm9kZSh0LCJfYnQiKSxjPWNZdC5hZGRCb3JkZXJOb2RlKHQsIl9iYiIpLHU9dC5ub2RlKGEpO3Quc2V0UGFyZW50KGwsYSksdS5ib3JkZXJUb3A9bCx0LnNldFBhcmVudChjLGEpLHUuYm9yZGVyQm90dG9tPWMsbFl0LmZvckVhY2gocywoZnVuY3Rpb24ocyl7dVl0KHQsZSxuLGkscixvLHMpO3ZhciB1PXQubm9kZShzKSxoPXUuYm9yZGVyVG9wP3UuYm9yZGVyVG9wOnMsZD11LmJvcmRlckJvdHRvbT91LmJvcmRlckJvdHRvbTpzLHA9dS5ib3JkZXJUb3A/aToyKmksZj1oIT09ZD8xOnItb1thXSsxO3Quc2V0RWRnZShsLGgse3dlaWdodDpwLG1pbmxlbjpmLG5lc3RpbmdFZGdlOiEwfSksdC5zZXRFZGdlKGQsYyx7d2VpZ2h0OnAsbWlubGVuOmYsbmVzdGluZ0VkZ2U6ITB9KX0pKSx0LnBhcmVudChhKXx8dC5zZXRFZGdlKGUsbCx7d2VpZ2h0OjAsbWlubGVuOnIrb1thXX0pfWVsc2UgYSE9PWUmJnQuc2V0RWRnZShlLGEse3dlaWdodDowLG1pbmxlbjpufSl9dmFyIGhZdD1IV3QsZFl0PW9xdCxwWXQ9ZnVuY3Rpb24gZll0KHQpe2hZdC5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24gZShuKXt2YXIgaT10LmNoaWxkcmVuKG4pLHI9dC5ub2RlKG4pO2lmKGkubGVuZ3RoJiZoWXQuZm9yRWFjaChpLGUpLGhZdC5oYXMociwibWluUmFuayIpKXtyLmJvcmRlckxlZnQ9W10sci5ib3JkZXJSaWdodD1bXTtmb3IodmFyIG89ci5taW5SYW5rLGE9ci5tYXhSYW5rKzE7bzxhOysrbyltWXQodCwiYm9yZGVyTGVmdCIsIl9ibCIsbixyLG8pLG1ZdCh0LCJib3JkZXJSaWdodCIsIl9iciIsbixyLG8pfX0pKX07ZnVuY3Rpb24gbVl0KHQsZSxuLGkscixvKXt2YXIgYT1yW2VdW28tMV0scz1kWXQuYWRkRHVtbXlOb2RlKHQsImJvcmRlciIse3dpZHRoOjAsaGVpZ2h0OjAscmFuazpvLGJvcmRlclR5cGU6ZX0sbik7cltlXVtvXT1zLHQuc2V0UGFyZW50KHMsaSksYSYmdC5zZXRFZGdlKGEscyx7d2VpZ2h0OjF9KX12YXIgZ1l0PUhXdDtmdW5jdGlvbiBfWXQodCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt5WXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3lZdCh0LmVkZ2UoZSkpfSkpfWZ1bmN0aW9uIHlZdCh0KXt2YXIgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQsdC5oZWlnaHQ9ZX1mdW5jdGlvbiB2WXQodCl7dC55PS10Lnl9ZnVuY3Rpb24gYll0KHQpe3ZhciBlPXQueDt0Lng9dC55LHQueT1lfXZhciB4WXQ9SFd0O3ZhciB3WXQ9SFd0O2Z1bmN0aW9uIFNZdCh0LGUsbil7Zm9yKHZhciBpPXdZdC56aXBPYmplY3Qobix3WXQubWFwKG4sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSkpLHI9d1l0LmZsYXR0ZW4od1l0Lm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gd1l0LnNvcnRCeSh3WXQubWFwKHQub3V0RWRnZXMoZSksKGZ1bmN0aW9uKGUpe3JldHVybntwb3M6aVtlLnddLHdlaWdodDp0LmVkZ2UoZSkud2VpZ2h0fX0pKSwicG9zIil9KSksITApLG89MTtvPG4ubGVuZ3RoOylvPDw9MTt2YXIgYT0yKm8tMTtvLT0xO3ZhciBzPXdZdC5tYXAobmV3IEFycmF5KGEpLChmdW5jdGlvbigpe3JldHVybiAwfSkpLGw9MDtyZXR1cm4gd1l0LmZvckVhY2goci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnBvcytvO3NbZV0rPXQud2VpZ2h0O2Zvcih2YXIgbj0wO2U+MDspZSUyJiYobis9c1tlKzFdKSxzW2U9ZS0xPj4xXSs9dC53ZWlnaHQ7bCs9dC53ZWlnaHQqbn0pKSksbH12YXIgTVl0PUhXdDt2YXIgRVl0PUhXdDt2YXIgVFl0PUhXdCxDWXQ9b3F0O2Z1bmN0aW9uIEFZdCh0LGUsbil7Zm9yKHZhciBpO2UubGVuZ3RoJiYoaT1UWXQubGFzdChlKSkuaTw9bjspZS5wb3AoKSx0LnB1c2goaS52cyksbisrO3JldHVybiBufXZhciBrWXQ9SFd0LFBZdD1mdW5jdGlvbiBMWXQodCxlKXtyZXR1cm4gTVl0Lm1hcChlLChmdW5jdGlvbihlKXt2YXIgbj10LmluRWRnZXMoZSk7aWYobi5sZW5ndGgpe3ZhciBpPU1ZdC5yZWR1Y2UobiwoZnVuY3Rpb24oZSxuKXt2YXIgaT10LmVkZ2Uobikscj10Lm5vZGUobi52KTtyZXR1cm57c3VtOmUuc3VtK2kud2VpZ2h0KnIub3JkZXIsd2VpZ2h0OmUud2VpZ2h0K2kud2VpZ2h0fX0pLHtzdW06MCx3ZWlnaHQ6MH0pO3JldHVybnt2OmUsYmFyeWNlbnRlcjppLnN1bS9pLndlaWdodCx3ZWlnaHQ6aS53ZWlnaHR9fXJldHVybnt2OmV9fSkpfSxJWXQ9ZnVuY3Rpb24gTll0KHQsZSl7dmFyIG49e307cmV0dXJuIEVZdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9blt0LnZdPXtpbmRlZ3JlZTowLGluOltdLG91dDpbXSx2czpbdC52XSxpOmV9O0VZdC5pc1VuZGVmaW5lZCh0LmJhcnljZW50ZXIpfHwoaS5iYXJ5Y2VudGVyPXQuYmFyeWNlbnRlcixpLndlaWdodD10LndlaWdodCl9KSksRVl0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgZT1uW3Qudl0saT1uW3Qud107RVl0LmlzVW5kZWZpbmVkKGUpfHxFWXQuaXNVbmRlZmluZWQoaSl8fChpLmluZGVncmVlKyssZS5vdXQucHVzaChuW3Qud10pKX0pKSwoZnVuY3Rpb24gaSh0KXt2YXIgZT1bXTtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLm1lcmdlZHx8KEVZdC5pc1VuZGVmaW5lZChlLmJhcnljZW50ZXIpfHxFWXQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKXx8ZS5iYXJ5Y2VudGVyPj10LmJhcnljZW50ZXIpJiYoZnVuY3Rpb24gbih0LGUpe3ZhciBuPTAsaT0wO3Qud2VpZ2h0JiYobis9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LGkrPXQud2VpZ2h0KTtlLndlaWdodCYmKG4rPWUuYmFyeWNlbnRlciplLndlaWdodCxpKz1lLndlaWdodCk7dC52cz1lLnZzLmNvbmNhdCh0LnZzKSx0LmJhcnljZW50ZXI9bi9pLHQud2VpZ2h0PWksdC5pPU1hdGgubWluKGUuaSx0LmkpLGUubWVyZ2VkPSEwfSkodCxlKX19ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24obil7bi5pbi5wdXNoKGUpLDA9PS0tbi5pbmRlZ3JlZSYmdC5wdXNoKG4pfX1mb3IoO3QubGVuZ3RoOyl7dmFyIHI9dC5wb3AoKTtlLnB1c2gociksRVl0LmZvckVhY2goci5pbi5yZXZlcnNlKCksbihyKSksRVl0LmZvckVhY2goci5vdXQsaShyKSl9cmV0dXJuIEVZdC5tYXAoRVl0LmZpbHRlcihlLChmdW5jdGlvbih0KXtyZXR1cm4hdC5tZXJnZWR9KSksKGZ1bmN0aW9uKHQpe3JldHVybiBFWXQucGljayh0LFsidnMiLCJpIiwiYmFyeWNlbnRlciIsIndlaWdodCJdKX0pKX0pKEVZdC5maWx0ZXIobiwoZnVuY3Rpb24odCl7cmV0dXJuIXQuaW5kZWdyZWV9KSkpfSxSWXQ9ZnVuY3Rpb24gT1l0KHQsZSl7dmFyIG49Q1l0LnBhcnRpdGlvbih0LChmdW5jdGlvbih0KXtyZXR1cm4gVFl0Lmhhcyh0LCJiYXJ5Y2VudGVyIil9KSksaT1uLmxocyxyPVRZdC5zb3J0Qnkobi5yaHMsKGZ1bmN0aW9uKHQpe3JldHVybi10Lml9KSksbz1bXSxhPTAscz0wLGw9MDtpLnNvcnQoKGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuYmFyeWNlbnRlcjxuLmJhcnljZW50ZXI/LTE6ZS5iYXJ5Y2VudGVyPm4uYmFyeWNlbnRlcj8xOnQ/bi5pLWUuaTplLmktbi5pfX0pKCEhZSkpLGw9QVl0KG8scixsKSxUWXQuZm9yRWFjaChpLChmdW5jdGlvbih0KXtsKz10LnZzLmxlbmd0aCxvLnB1c2godC52cyksYSs9dC5iYXJ5Y2VudGVyKnQud2VpZ2h0LHMrPXQud2VpZ2h0LGw9QVl0KG8scixsKX0pKTt2YXIgdT17dnM6VFl0LmZsYXR0ZW4obywhMCl9O3MmJih1LmJhcnljZW50ZXI9YS9zLHUud2VpZ2h0PXMpO3JldHVybiB1fTt2YXIgell0PUhXdCxEWXQ9eVV0LkdyYXBoO3ZhciBCWXQ9SFd0O3ZhciBIWXQ9SFd0LEZZdD1mdW5jdGlvbiBWWXQodCl7dmFyIGU9e30sbj14WXQuZmlsdGVyKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIXQuY2hpbGRyZW4oZSkubGVuZ3RofSkpLGk9eFl0Lm1heCh4WXQubWFwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSkscj14WXQubWFwKHhZdC5yYW5nZShpKzEpLChmdW5jdGlvbigpe3JldHVybltdfSkpO2Z1bmN0aW9uIG8obil7aWYoIXhZdC5oYXMoZSxuKSl7ZVtuXT0hMDt2YXIgaT10Lm5vZGUobik7cltpLnJhbmtdLnB1c2gobikseFl0LmZvckVhY2godC5zdWNjZXNzb3JzKG4pLG8pfX12YXIgYT14WXQuc29ydEJ5KG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKTtyZXR1cm4geFl0LmZvckVhY2goYSxvKSxyfSxVWXQ9ZnVuY3Rpb24gall0KHQsZSl7Zm9yKHZhciBuPTAsaT0xO2k8ZS5sZW5ndGg7KytpKW4rPVNZdCh0LGVbaS0xXSxlW2ldKTtyZXR1cm4gbn0sR1l0PWZ1bmN0aW9uIHQoZSxuLGkscil7dmFyIG89ZS5jaGlsZHJlbihuKSxhPWUubm9kZShuKSxzPWE/YS5ib3JkZXJMZWZ0OnZvaWQgMCxsPWE/YS5ib3JkZXJSaWdodDp2b2lkIDAsYz17fTtzJiYobz1rWXQuZmlsdGVyKG8sKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09cyYmdCE9PWx9KSkpO3ZhciB1PVBZdChlLG8pO2tZdC5mb3JFYWNoKHUsKGZ1bmN0aW9uKG4pe2lmKGUuY2hpbGRyZW4obi52KS5sZW5ndGgpe3ZhciBvPXQoZSxuLnYsaSxyKTtjW24udl09byxrWXQuaGFzKG8sImJhcnljZW50ZXIiKSYmKGZ1bmN0aW9uIGEodCxlKXtrWXQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKT8odC5iYXJ5Y2VudGVyPWUuYmFyeWNlbnRlcix0LndlaWdodD1lLndlaWdodCk6KHQuYmFyeWNlbnRlcj0odC5iYXJ5Y2VudGVyKnQud2VpZ2h0K2UuYmFyeWNlbnRlciplLndlaWdodCkvKHQud2VpZ2h0K2Uud2VpZ2h0KSx0LndlaWdodCs9ZS53ZWlnaHQpfSkobixvKX19KSk7dmFyIGg9SVl0KHUsaSk7IShmdW5jdGlvbiBkKHQsZSl7a1l0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dC52cz1rWXQuZmxhdHRlbih0LnZzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ZVt0XS52czp0fSkpLCEwKX0pKX0pKGgsYyk7dmFyIHA9Ull0KGgscik7aWYocyYmKHAudnM9a1l0LmZsYXR0ZW4oW3MscC52cyxsXSwhMCksZS5wcmVkZWNlc3NvcnMocykubGVuZ3RoKSl7dmFyIGY9ZS5ub2RlKGUucHJlZGVjZXNzb3JzKHMpWzBdKSxtPWUubm9kZShlLnByZWRlY2Vzc29ycyhsKVswXSk7a1l0LmhhcyhwLCJiYXJ5Y2VudGVyIil8fChwLmJhcnljZW50ZXI9MCxwLndlaWdodD0wKSxwLmJhcnljZW50ZXI9KHAuYmFyeWNlbnRlcipwLndlaWdodCtmLm9yZGVyK20ub3JkZXIpLyhwLndlaWdodCsyKSxwLndlaWdodCs9Mn1yZXR1cm4gcH0sV1l0PWZ1bmN0aW9uIHFZdCh0LGUsbil7dmFyIGk9KGZ1bmN0aW9uIHIodCl7dmFyIGU7Zm9yKDt0Lmhhc05vZGUoZT16WXQudW5pcXVlSWQoIl9yb290IikpOyk7cmV0dXJuIGV9KSh0KSxvPW5ldyBEWXQoe2NvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3Jvb3Q6aX0pLnNldERlZmF1bHROb2RlTGFiZWwoKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSl9KSk7cmV0dXJuIHpZdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24ocil7dmFyIGE9dC5ub2RlKHIpLHM9dC5wYXJlbnQocik7KGEucmFuaz09PWV8fGEubWluUmFuazw9ZSYmZTw9YS5tYXhSYW5rKSYmKG8uc2V0Tm9kZShyKSxvLnNldFBhcmVudChyLHN8fGkpLHpZdC5mb3JFYWNoKHRbbl0ociksKGZ1bmN0aW9uKGUpe3ZhciBuPWUudj09PXI/ZS53OmUudixpPW8uZWRnZShuLHIpLGE9ell0LmlzVW5kZWZpbmVkKGkpPzA6aS53ZWlnaHQ7by5zZXRFZGdlKG4scix7d2VpZ2h0OnQuZWRnZShlKS53ZWlnaHQrYX0pfSkpLHpZdC5oYXMoYSwibWluUmFuayIpJiZvLnNldE5vZGUocix7Ym9yZGVyTGVmdDphLmJvcmRlckxlZnRbZV0sYm9yZGVyUmlnaHQ6YS5ib3JkZXJSaWdodFtlXX0pKX0pKSxvfSxZWXQ9ZnVuY3Rpb24gWFl0KHQsZSxuKXt2YXIgaSxyPXt9O0JZdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKG4pe2Zvcih2YXIgbyxhLHM9dC5wYXJlbnQobik7czspe2lmKChvPXQucGFyZW50KHMpKT8oYT1yW29dLHJbb109cyk6KGE9aSxpPXMpLGEmJmEhPT1zKXJldHVybiB2b2lkIGUuc2V0RWRnZShhLHMpO3M9b319KSl9LCRZdD15VXQuR3JhcGgsS1l0PW9xdDtmdW5jdGlvbiBaWXQodCxlLG4pe3JldHVybiBIWXQubWFwKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBXWXQodCxlLG4pfSkpfWZ1bmN0aW9uIEpZdCh0LGUpe3ZhciBuPW5ldyAkWXQ7SFl0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dmFyIGk9dC5ncmFwaCgpLnJvb3Qscj1HWXQodCxpLG4sZSk7SFl0LmZvckVhY2goci52cywoZnVuY3Rpb24oZSxuKXt0Lm5vZGUoZSkub3JkZXI9bn0pKSxZWXQodCxuLHIudnMpfSkpfWZ1bmN0aW9uIFFZdCh0LGUpe0hZdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe0hZdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUsbil7dC5ub2RlKGUpLm9yZGVyPW59KSl9KSl9dmFyIHRYdD1IV3QsZVh0PXlVdC5HcmFwaCxuWHQ9b3F0LGlYdD1mdW5jdGlvbiByWHQodCl7dmFyIGUsbj1uWHQuYnVpbGRMYXllck1hdHJpeCh0KSxpPXRYdC5tZXJnZShvWHQodCxuKSxhWHQodCxuKSkscj17fTt0WHQuZm9yRWFjaChbInUiLCJkIl0sKGZ1bmN0aW9uKG8pe2U9InUiPT09bz9uOnRYdC52YWx1ZXMobikucmV2ZXJzZSgpLHRYdC5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obil7InIiPT09biYmKGU9dFh0Lm1hcChlLChmdW5jdGlvbih0KXtyZXR1cm4gdFh0LnZhbHVlcyh0KS5yZXZlcnNlKCl9KSkpO3ZhciBhPSgidSI9PT1vP3QucHJlZGVjZXNzb3JzOnQuc3VjY2Vzc29ycykuYmluZCh0KSxzPWNYdCh0LGUsaSxhKSxsPXVYdCh0LGUscy5yb290LHMuYWxpZ24sInIiPT09bik7InIiPT09biYmKGw9dFh0Lm1hcFZhbHVlcyhsLChmdW5jdGlvbih0KXtyZXR1cm4tdH0pKSkscltvK25dPWx9KSl9KSk7dmFyIG89aFh0KHQscik7cmV0dXJuIGRYdChyLG8pLHBYdChyLHQuZ3JhcGgoKS5hbGlnbil9O2Z1bmN0aW9uIG9YdCh0LGUpe3ZhciBuPXt9O3JldHVybiB0WHQucmVkdWNlKGUsKGZ1bmN0aW9uIGkoZSxyKXt2YXIgbz0wLGE9MCxzPWUubGVuZ3RoLGw9dFh0Lmxhc3Qocik7cmV0dXJuIHRYdC5mb3JFYWNoKHIsKGZ1bmN0aW9uKGUsaSl7dmFyIGM9KGZ1bmN0aW9uIHUodCxlKXtpZih0Lm5vZGUoZSkuZHVtbXkpcmV0dXJuIHRYdC5maW5kKHQucHJlZGVjZXNzb3JzKGUpLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLmR1bW15fSkpfSkodCxlKSxoPWM/dC5ub2RlKGMpLm9yZGVyOnM7KGN8fGU9PT1sKSYmKHRYdC5mb3JFYWNoKHIuc2xpY2UoYSxpKzEpLChmdW5jdGlvbihlKXt0WHQuZm9yRWFjaCh0LnByZWRlY2Vzc29ycyhlKSwoZnVuY3Rpb24oaSl7dmFyIHI9dC5ub2RlKGkpLGE9ci5vcmRlcjshKGE8b3x8aDxhKXx8ci5kdW1teSYmdC5ub2RlKGUpLmR1bW15fHxzWHQobixpLGUpfSkpfSkpLGE9aSsxLG89aCl9KSkscn0pKSxufWZ1bmN0aW9uIGFYdCh0LGUpe3ZhciBuPXt9O2Z1bmN0aW9uIGkoZSxpLHIsbyxhKXt2YXIgczt0WHQuZm9yRWFjaCh0WHQucmFuZ2UoaSxyKSwoZnVuY3Rpb24oaSl7dC5ub2RlKHM9ZVtpXSkuZHVtbXkmJnRYdC5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKHMpLChmdW5jdGlvbihlKXt2YXIgaT10Lm5vZGUoZSk7aS5kdW1teSYmKGkub3JkZXI8b3x8aS5vcmRlcj5hKSYmc1h0KG4sZSxzKX0pKX0pKX1yZXR1cm4gdFh0LnJlZHVjZShlLChmdW5jdGlvbiByKGUsbil7dmFyIHIsbz0tMSxhPTA7cmV0dXJuIHRYdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKHMsbCl7aWYoImJvcmRlciI9PT10Lm5vZGUocykuZHVtbXkpe3ZhciBjPXQucHJlZGVjZXNzb3JzKHMpO2MubGVuZ3RoJiYocj10Lm5vZGUoY1swXSkub3JkZXIsaShuLGEsbCxvLHIpLGE9bCxvPXIpfWkobixhLG4ubGVuZ3RoLHIsZS5sZW5ndGgpfSkpLG59KSksbn1mdW5jdGlvbiBzWHQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXZhciByPXRbZV07cnx8KHRbZV09cj17fSkscltuXT0hMH1mdW5jdGlvbiBsWHQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXJldHVybiB0WHQuaGFzKHRbZV0sbil9ZnVuY3Rpb24gY1h0KHQsZSxuLGkpe3ZhciByPXt9LG89e30sYT17fTtyZXR1cm4gdFh0LmZvckVhY2goZSwoZnVuY3Rpb24odCl7dFh0LmZvckVhY2godCwoZnVuY3Rpb24odCxlKXtyW3RdPXQsb1t0XT10LGFbdF09ZX0pKX0pKSx0WHQuZm9yRWFjaChlLChmdW5jdGlvbih0KXt2YXIgZT0tMTt0WHQuZm9yRWFjaCh0LChmdW5jdGlvbih0KXt2YXIgcz1pKHQpO2lmKHMubGVuZ3RoKWZvcih2YXIgbD0oKHM9dFh0LnNvcnRCeShzLChmdW5jdGlvbih0KXtyZXR1cm4gYVt0XX0pKSkubGVuZ3RoLTEpLzIsYz1NYXRoLmZsb29yKGwpLHU9TWF0aC5jZWlsKGwpO2M8PXU7KytjKXt2YXIgaD1zW2NdO29bdF09PT10JiZlPGFbaF0mJiFsWHQobix0LGgpJiYob1toXT10LG9bdF09clt0XT1yW2hdLGU9YVtoXSl9fSkpfSkpLHtyb290OnIsYWxpZ246b319ZnVuY3Rpb24gdVh0KHQsZSxuLGkscil7dmFyIG89e30sYT0oZnVuY3Rpb24gcyh0LGUsbixpKXt2YXIgcj1uZXcgZVh0LG89dC5ncmFwaCgpLGE9KGZ1bmN0aW9uIHModCxlLG4pe3JldHVybiBmdW5jdGlvbihpLHIsbyl7dmFyIGEscz1pLm5vZGUociksbD1pLm5vZGUobyksYz0wO2lmKGMrPXMud2lkdGgvMix0WHQuaGFzKHMsImxhYmVscG9zIikpc3dpdGNoKHMubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjphPS1zLndpZHRoLzI7YnJlYWs7Y2FzZSJyIjphPXMud2lkdGgvMn1pZihhJiYoYys9bj9hOi1hKSxhPTAsYys9KHMuZHVtbXk/ZTp0KS8yLGMrPShsLmR1bW15P2U6dCkvMixjKz1sLndpZHRoLzIsdFh0LmhhcyhsLCJsYWJlbHBvcyIpKXN3aXRjaChsLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6YT1sLndpZHRoLzI7YnJlYWs7Y2FzZSJyIjphPS1sLndpZHRoLzJ9cmV0dXJuIGEmJihjKz1uP2E6LWEpLGE9MCxjfX0pKG8ubm9kZXNlcCxvLmVkZ2VzZXAsaSk7cmV0dXJuIHRYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBpO3RYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciBvPW5bZV07aWYoci5zZXROb2RlKG8pLGkpe3ZhciBzPW5baV0sbD1yLmVkZ2UocyxvKTtyLnNldEVkZ2UocyxvLE1hdGgubWF4KGEodCxlLGkpLGx8fDApKX1pPWV9KSl9KSkscn0pKHQsZSxuLHIpLGw9cj8iYm9yZGVyTGVmdCI6ImJvcmRlclJpZ2h0IjtmdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciBuPWEubm9kZXMoKSxpPW4ucG9wKCkscj17fTtpOylyW2ldP3QoaSk6KHJbaV09ITAsbi5wdXNoKGkpLG49bi5jb25jYXQoZShpKSkpLGk9bi5wb3AoKX1yZXR1cm4gYygoZnVuY3Rpb24gdSh0KXtvW3RdPWEuaW5FZGdlcyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsb1tlLnZdK2EuZWRnZShlKSl9KSwwKX0pLGEucHJlZGVjZXNzb3JzLmJpbmQoYSkpLGMoKGZ1bmN0aW9uIGgoZSl7dmFyIG49YS5vdXRFZGdlcyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluKHQsb1tlLnddLWEuZWRnZShlKSl9KSxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGk9dC5ub2RlKGUpO24hPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJmkuYm9yZGVyVHlwZSE9PWwmJihvW2VdPU1hdGgubWF4KG9bZV0sbikpfSksYS5zdWNjZXNzb3JzLmJpbmQoYSkpLHRYdC5mb3JFYWNoKGksKGZ1bmN0aW9uKHQpe29bdF09b1tuW3RdXX0pKSxvfWZ1bmN0aW9uIGhYdCh0LGUpe3JldHVybiB0WHQubWluQnkodFh0LnZhbHVlcyhlKSwoZnVuY3Rpb24oZSl7dmFyIG49TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3JldHVybiB0WHQuZm9ySW4oZSwoZnVuY3Rpb24oZSxyKXt2YXIgbz0oZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0Lm5vZGUoZSkud2lkdGh9KSh0LHIpLzI7bj1NYXRoLm1heChlK28sbiksaT1NYXRoLm1pbihlLW8saSl9KSksbi1pfSkpfWZ1bmN0aW9uIGRYdCh0LGUpe3ZhciBuPXRYdC52YWx1ZXMoZSksaT10WHQubWluKG4pLHI9dFh0Lm1heChuKTt0WHQuZm9yRWFjaChbInUiLCJkIl0sKGZ1bmN0aW9uKG4pe3RYdC5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obyl7dmFyIGEscz1uK28sbD10W3NdO2lmKGwhPT1lKXt2YXIgYz10WHQudmFsdWVzKGwpOyhhPSJsIj09PW8/aS10WHQubWluKGMpOnItdFh0Lm1heChjKSkmJih0W3NdPXRYdC5tYXBWYWx1ZXMobCwoZnVuY3Rpb24odCl7cmV0dXJuIHQrYX0pKSl9fSkpfSkpfWZ1bmN0aW9uIHBYdCh0LGUpe3JldHVybiB0WHQubWFwVmFsdWVzKHQudWwsKGZ1bmN0aW9uKG4saSl7aWYoZSlyZXR1cm4gdFtlLnRvTG93ZXJDYXNlKCldW2ldO3ZhciByPXRYdC5zb3J0QnkodFh0Lm1hcCh0LGkpKTtyZXR1cm4oclsxXStyWzJdKS8yfSkpfXZhciBmWHQ9SFd0LG1YdD1vcXQsZ1h0PWlYdDt2YXIgX1h0PUhXdCx5WHQ9dHF0LHZYdD13cXQsYlh0PWlZdCx4WHQ9b3F0Lm5vcm1hbGl6ZVJhbmtzLHdYdD1mdW5jdGlvbiBTWHQodCl7dmFyIGU9KGZ1bmN0aW9uIG4odCl7dmFyIGU9e30sbj0wO2Z1bmN0aW9uIGkocil7dmFyIG89bjtzWXQuZm9yRWFjaCh0LmNoaWxkcmVuKHIpLGkpLGVbcl09e2xvdzpvLGxpbTpuKyt9fXJldHVybiBzWXQuZm9yRWFjaCh0LmNoaWxkcmVuKCksaSksZX0pKHQpO3NZdC5mb3JFYWNoKHQuZ3JhcGgoKS5kdW1teUNoYWlucywoZnVuY3Rpb24obil7Zm9yKHZhciBpPXQubm9kZShuKSxyPWkuZWRnZU9iaixvPShmdW5jdGlvbiBhKHQsZSxuLGkpe3ZhciByLG8sYT1bXSxzPVtdLGw9TWF0aC5taW4oZVtuXS5sb3csZVtpXS5sb3cpLGM9TWF0aC5tYXgoZVtuXS5saW0sZVtpXS5saW0pO3I9bjtkb3tyPXQucGFyZW50KHIpLGEucHVzaChyKX13aGlsZShyJiYoZVtyXS5sb3c+bHx8Yz5lW3JdLmxpbSkpO289cixyPWk7Zm9yKDsocj10LnBhcmVudChyKSkhPT1vOylzLnB1c2gocik7cmV0dXJue3BhdGg6YS5jb25jYXQocy5yZXZlcnNlKCkpLGxjYTpvfX0pKHQsZSxyLnYsci53KSxzPW8ucGF0aCxsPW8ubGNhLGM9MCx1PXNbY10saD0hMDtuIT09ci53Oyl7aWYoaT10Lm5vZGUobiksaCl7Zm9yKDsodT1zW2NdKSE9PWwmJnQubm9kZSh1KS5tYXhSYW5rPGkucmFuazspYysrO3U9PT1sJiYoaD0hMSl9aWYoIWgpe2Zvcig7YzxzLmxlbmd0aC0xJiZ0Lm5vZGUodT1zW2MrMV0pLm1pblJhbms8PWkucmFuazspYysrO3U9c1tjXX10LnNldFBhcmVudChuLHUpLG49dC5zdWNjZXNzb3JzKG4pWzBdfX0pKX0sTVh0PW9xdC5yZW1vdmVFbXB0eVJhbmtzLEVYdD17cnVuOmZ1bmN0aW9uIFRYdCh0KXt2YXIgZT1jWXQuYWRkRHVtbXlOb2RlKHQsInJvb3QiLHt9LCJfcm9vdCIpLG49KGZ1bmN0aW9uIGkodCl7dmFyIGU9e307ZnVuY3Rpb24gbihpLHIpe3ZhciBvPXQuY2hpbGRyZW4oaSk7byYmby5sZW5ndGgmJmxZdC5mb3JFYWNoKG8sKGZ1bmN0aW9uKHQpe24odCxyKzEpfSkpLGVbaV09cn1yZXR1cm4gbFl0LmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbih0KXtuKHQsMSl9KSksZX0pKHQpLHI9bFl0Lm1heChsWXQudmFsdWVzKG4pKS0xLG89MipyKzE7dC5ncmFwaCgpLm5lc3RpbmdSb290PWUsbFl0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt0LmVkZ2UoZSkubWlubGVuKj1vfSkpO3ZhciBhPShmdW5jdGlvbiBzKHQpe3JldHVybiBsWXQucmVkdWNlKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSt0LmVkZ2Uobikud2VpZ2h0fSksMCl9KSh0KSsxO2xZdC5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24oaSl7dVl0KHQsZSxvLGEscixuLGkpfSkpLHQuZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1vfSxjbGVhbnVwOmZ1bmN0aW9uIENYdCh0KXt2YXIgZT10LmdyYXBoKCk7dC5yZW1vdmVOb2RlKGUubmVzdGluZ1Jvb3QpLGRlbGV0ZSBlLm5lc3RpbmdSb290LGxZdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dC5lZGdlKGUpLm5lc3RpbmdFZGdlJiZ0LnJlbW92ZUVkZ2UoZSl9KSl9fSxBWHQ9cFl0LGtYdD17YWRqdXN0OmZ1bmN0aW9uIFBYdCh0KXt2YXIgZT10LmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJsciIhPT1lJiYicmwiIT09ZXx8X1l0KHQpfSx1bmRvOmZ1bmN0aW9uIExYdCh0KXt2YXIgZT10LmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJidCIhPT1lJiYicmwiIT09ZXx8KGZ1bmN0aW9uIG4odCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXt2WXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtnWXQuZm9yRWFjaChuLnBvaW50cyx2WXQpLGdZdC5oYXMobiwieSIpJiZ2WXQobil9KSl9KSh0KTsibHIiIT09ZSYmInJsIiE9PWV8fCghKGZ1bmN0aW9uIGkodCl7Z1l0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtiWXQodC5ub2RlKGUpKX0pKSxnWXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtnWXQuZm9yRWFjaChuLnBvaW50cyxiWXQpLGdZdC5oYXMobiwieCIpJiZiWXQobil9KSl9KSh0KSxfWXQodCkpfX0sSVh0PWZ1bmN0aW9uIE5YdCh0KXt2YXIgZT1LWXQubWF4UmFuayh0KSxuPVpZdCh0LEhZdC5yYW5nZSgxLGUrMSksImluRWRnZXMiKSxpPVpZdCh0LEhZdC5yYW5nZShlLTEsLTEsLTEpLCJvdXRFZGdlcyIpLHI9Rll0KHQpO1FZdCh0LHIpO2Zvcih2YXIgbyxhPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzPTAsbD0wO2w8NDsrK3MsKytsKXtKWXQocyUyP246aSxzJTQ+PTIpLHI9S1l0LmJ1aWxkTGF5ZXJNYXRyaXgodCk7dmFyIGM9VVl0KHQscik7YzxhJiYobD0wLG89SFl0LmNsb25lRGVlcChyKSxhPWMpfVFZdCh0LG8pfSxSWHQ9ZnVuY3Rpb24gT1h0KHQpeyhmdW5jdGlvbiBlKHQpe3ZhciBlPW1YdC5idWlsZExheWVyTWF0cml4KHQpLG49dC5ncmFwaCgpLnJhbmtzZXAsaT0wO2ZYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3ZhciByPWZYdC5tYXgoZlh0Lm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLmhlaWdodH0pKSk7Zlh0LmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dC5ub2RlKGUpLnk9aStyLzJ9KSksaSs9citufSkpfSkodD1tWHQuYXNOb25Db21wb3VuZEdyYXBoKHQpKSxmWHQuZm9yRWFjaChnWHQodCksKGZ1bmN0aW9uKGUsbil7dC5ub2RlKG4pLng9ZX0pKX0selh0PW9xdCxEWHQ9eVV0LkdyYXBoLEJYdD1mdW5jdGlvbiBIWHQodCxlKXt2YXIgbj1lJiZlLmRlYnVnVGltaW5nP3pYdC50aW1lOnpYdC5ub3RpbWU7bigibGF5b3V0IiwoZnVuY3Rpb24oKXt2YXIgZT1uKCIgIGJ1aWxkTGF5b3V0R3JhcGgiLChmdW5jdGlvbigpe3JldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPW5ldyBEWHQoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KSxuPSRYdCh0LmdyYXBoKCkpO3JldHVybiBlLnNldEdyYXBoKF9YdC5tZXJnZSh7fSxWWHQsWFh0KG4sRlh0KSxfWHQucGljayhuLFVYdCkpKSxfWHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPSRYdCh0Lm5vZGUobikpO2Uuc2V0Tm9kZShuLF9YdC5kZWZhdWx0cyhYWHQoaSxqWHQpLEdYdCkpLGUuc2V0UGFyZW50KG4sdC5wYXJlbnQobikpfSkpLF9YdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9JFh0KHQuZWRnZShuKSk7ZS5zZXRFZGdlKG4sX1h0Lm1lcmdlKHt9LHFYdCxYWHQoaSxXWHQpLF9YdC5waWNrKGksWVh0KSkpfSkpLGV9KSh0KX0pKTtuKCIgIHJ1bkxheW91dCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUsbil7bigiICAgIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCk7bi5yYW5rc2VwLz0yLF9YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5lZGdlKHQpO2kubWlubGVuKj0yLCJjIiE9PWkubGFiZWxwb3MudG9Mb3dlckNhc2UoKSYmKCJUQiI9PT1uLnJhbmtkaXJ8fCJCVCI9PT1uLnJhbmtkaXI/aS53aWR0aCs9aS5sYWJlbG9mZnNldDppLmhlaWdodCs9aS5sYWJlbG9mZnNldCl9KSl9KShlKX0pKSxuKCIgICAgcmVtb3ZlU2VsZkVkZ2VzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXtpZih0LnY9PT10Lncpe3ZhciBuPWUubm9kZSh0LnYpO24uc2VsZkVkZ2VzfHwobi5zZWxmRWRnZXM9W10pLG4uc2VsZkVkZ2VzLnB1c2goe2U6dCxsYWJlbDplLmVkZ2UodCl9KSxlLnJlbW92ZUVkZ2UodCl9fSkpfSkoZSl9KSksbigiICAgIGFjeWNsaWMiLChmdW5jdGlvbigpe3lYdC5ydW4oZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5ydW4iLChmdW5jdGlvbigpe0VYdC5ydW4oZSl9KSksbigiICAgIHJhbmsiLChmdW5jdGlvbigpe2JYdCh6WHQuYXNOb25Db21wb3VuZEdyYXBoKGUpKX0pKSxuKCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe19YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKG4ud2lkdGgmJm4uaGVpZ2h0KXt2YXIgaT1lLm5vZGUodC52KSxyPWUubm9kZSh0LncpO3pYdC5hZGREdW1teU5vZGUoZSwiZWRnZS1wcm94eSIse3Jhbms6KHIucmFuay1pLnJhbmspLzIraS5yYW5rLGU6dH0sIl9lcCIpfX0pKX0pKGUpfSkpLG4oIiAgICByZW1vdmVFbXB0eVJhbmtzIiwoZnVuY3Rpb24oKXtNWHQoZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwIiwoZnVuY3Rpb24oKXtFWHQuY2xlYW51cChlKX0pKSxuKCIgICAgbm9ybWFsaXplUmFua3MiLChmdW5jdGlvbigpe3hYdChlKX0pKSxuKCIgICAgYXNzaWduUmFua01pbk1heCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPTA7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgaT1lLm5vZGUodCk7aS5ib3JkZXJUb3AmJihpLm1pblJhbms9ZS5ub2RlKGkuYm9yZGVyVG9wKS5yYW5rLGkubWF4UmFuaz1lLm5vZGUoaS5ib3JkZXJCb3R0b20pLnJhbmssbj1fWHQubWF4KG4saS5tYXhSYW5rKSl9KSksZS5ncmFwaCgpLm1heFJhbms9bn0pKGUpfSkpLG4oIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLm5vZGUodCk7ImVkZ2UtcHJveHkiPT09bi5kdW1teSYmKGUuZWRnZShuLmUpLmxhYmVsUmFuaz1uLnJhbmssZS5yZW1vdmVOb2RlKHQpKX0pKX0pKGUpfSkpLG4oIiAgICBub3JtYWxpemUucnVuIiwoZnVuY3Rpb24oKXt2WHQucnVuKGUpfSkpLG4oIiAgICBwYXJlbnREdW1teUNoYWlucyIsKGZ1bmN0aW9uKCl7d1h0KGUpfSkpLG4oIiAgICBhZGRCb3JkZXJTZWdtZW50cyIsKGZ1bmN0aW9uKCl7QVh0KGUpfSkpLG4oIiAgICBvcmRlciIsKGZ1bmN0aW9uKCl7SVh0KGUpfSkpLG4oIiAgICBpbnNlcnRTZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj16WHQuYnVpbGRMYXllck1hdHJpeChlKTtfWHQuZm9yRWFjaChuLChmdW5jdGlvbih0KXt2YXIgbj0wO19YdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsaSl7dmFyIHI9ZS5ub2RlKHQpO3Iub3JkZXI9aStuLF9YdC5mb3JFYWNoKHIuc2VsZkVkZ2VzLChmdW5jdGlvbih0KXt6WHQuYWRkRHVtbXlOb2RlKGUsInNlbGZlZGdlIix7d2lkdGg6dC5sYWJlbC53aWR0aCxoZWlnaHQ6dC5sYWJlbC5oZWlnaHQscmFuazpyLnJhbmssb3JkZXI6aSsgKytuLGU6dC5lLGxhYmVsOnQubGFiZWx9LCJfc2UiKX0pKSxkZWxldGUgci5zZWxmRWRnZXN9KSl9KSl9KShlKX0pKSxuKCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbSIsKGZ1bmN0aW9uKCl7a1h0LmFkanVzdChlKX0pKSxuKCIgICAgcG9zaXRpb24iLChmdW5jdGlvbigpe1JYdChlKX0pKSxuKCIgICAgcG9zaXRpb25TZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtfWHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KTtpZigic2VsZmVkZ2UiPT09bi5kdW1teSl7dmFyIGk9ZS5ub2RlKG4uZS52KSxyPWkueCtpLndpZHRoLzIsbz1pLnksYT1uLngtcixzPWkuaGVpZ2h0LzI7ZS5zZXRFZGdlKG4uZSxuLmxhYmVsKSxlLnJlbW92ZU5vZGUodCksbi5sYWJlbC5wb2ludHM9W3t4OnIrMiphLzMseTpvLXN9LHt4OnIrNSphLzYseTpvLXN9LHt4OnIrYSx5Om99LHt4OnIrNSphLzYseTpvK3N9LHt4OnIrMiphLzMseTpvK3N9XSxuLmxhYmVsLng9bi54LG4ubGFiZWwueT1uLnl9fSkpfSkoZSl9KSksbigiICAgIHJlbW92ZUJvcmRlck5vZGVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtpZihlLmNoaWxkcmVuKHQpLmxlbmd0aCl7dmFyIG49ZS5ub2RlKHQpLGk9ZS5ub2RlKG4uYm9yZGVyVG9wKSxyPWUubm9kZShuLmJvcmRlckJvdHRvbSksbz1lLm5vZGUoX1h0Lmxhc3Qobi5ib3JkZXJMZWZ0KSksYT1lLm5vZGUoX1h0Lmxhc3Qobi5ib3JkZXJSaWdodCkpO24ud2lkdGg9TWF0aC5hYnMoYS54LW8ueCksbi5oZWlnaHQ9TWF0aC5hYnMoci55LWkueSksbi54PW8ueCtuLndpZHRoLzIsbi55PWkueStuLmhlaWdodC8yfX0pKSxfWHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpeyJib3JkZXIiPT09ZS5ub2RlKHQpLmR1bW15JiZlLnJlbW92ZU5vZGUodCl9KSl9KShlKX0pKSxuKCIgICAgbm9ybWFsaXplLnVuZG8iLChmdW5jdGlvbigpe3ZYdC51bmRvKGUpfSkpLG4oIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe19YdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKF9YdC5oYXMobiwieCIpKXN3aXRjaCgibCIhPT1uLmxhYmVscG9zJiYiciIhPT1uLmxhYmVscG9zfHwobi53aWR0aC09bi5sYWJlbG9mZnNldCksbi5sYWJlbHBvcyl7Y2FzZSJsIjpuLngtPW4ud2lkdGgvMituLmxhYmVsb2Zmc2V0O2JyZWFrO2Nhc2UiciI6bi54Kz1uLndpZHRoLzIrbi5sYWJlbG9mZnNldH19KSl9KShlKX0pKSxuKCIgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW0iLChmdW5jdGlvbigpe2tYdC51bmRvKGUpfSkpLG4oIiAgICB0cmFuc2xhdGVHcmFwaCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxpPTAscj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbz0wLGE9ZS5ncmFwaCgpLHM9YS5tYXJnaW54fHwwLGw9YS5tYXJnaW55fHwwO2Z1bmN0aW9uIGModCl7dmFyIGU9dC54LGE9dC55LHM9dC53aWR0aCxsPXQuaGVpZ2h0O249TWF0aC5taW4obixlLXMvMiksaT1NYXRoLm1heChpLGUrcy8yKSxyPU1hdGgubWluKHIsYS1sLzIpLG89TWF0aC5tYXgobyxhK2wvMil9X1h0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtjKGUubm9kZSh0KSl9KSksX1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7X1h0LmhhcyhuLCJ4IikmJmMobil9KSksbi09cyxyLT1sLF9YdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5ub2RlKHQpO2kueC09bixpLnktPXJ9KSksX1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgaT1lLmVkZ2UodCk7X1h0LmZvckVhY2goaS5wb2ludHMsKGZ1bmN0aW9uKHQpe3QueC09bix0LnktPXJ9KSksX1h0LmhhcyhpLCJ4IikmJihpLngtPW4pLF9YdC5oYXMoaSwieSIpJiYoaS55LT1yKX0pKSxhLndpZHRoPWktbitzLGEuaGVpZ2h0PW8tcitsfSkoZSl9KSksbigiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbixpLHI9ZS5lZGdlKHQpLG89ZS5ub2RlKHQudiksYT1lLm5vZGUodC53KTtyLnBvaW50cz8obj1yLnBvaW50c1swXSxpPXIucG9pbnRzW3IucG9pbnRzLmxlbmd0aC0xXSk6KHIucG9pbnRzPVtdLG49YSxpPW8pLHIucG9pbnRzLnVuc2hpZnQoelh0LmludGVyc2VjdFJlY3QobyxuKSksci5wb2ludHMucHVzaCh6WHQuaW50ZXJzZWN0UmVjdChhLGkpKX0pKX0pKGUpfSkpLG4oIiAgICByZXZlcnNlUG9pbnRzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7X1h0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7bi5yZXZlcnNlZCYmbi5wb2ludHMucmV2ZXJzZSgpfSkpfSkoZSl9KSksbigiICAgIGFjeWNsaWMudW5kbyIsKGZ1bmN0aW9uKCl7eVh0LnVuZG8oZSl9KSl9KShlLG4pfSkpLG4oIiAgdXBkYXRlSW5wdXRHcmFwaCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiBuKHQsZSl7X1h0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobikscj1lLm5vZGUobik7aSYmKGkueD1yLngsaS55PXIueSxlLmNoaWxkcmVuKG4pLmxlbmd0aCYmKGkud2lkdGg9ci53aWR0aCxpLmhlaWdodD1yLmhlaWdodCkpfSkpLF9YdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5lZGdlKG4pLHI9ZS5lZGdlKG4pO2kucG9pbnRzPXIucG9pbnRzLF9YdC5oYXMociwieCIpJiYoaS54PXIueCxpLnk9ci55KX0pKSx0LmdyYXBoKCkud2lkdGg9ZS5ncmFwaCgpLndpZHRoLHQuZ3JhcGgoKS5oZWlnaHQ9ZS5ncmFwaCgpLmhlaWdodH0pKHQsZSl9KSl9KSl9O3ZhciBGWHQ9WyJub2Rlc2VwIiwiZWRnZXNlcCIsInJhbmtzZXAiLCJtYXJnaW54IiwibWFyZ2lueSJdLFZYdD17cmFua3NlcDo1MCxlZGdlc2VwOjIwLG5vZGVzZXA6NTAscmFua2RpcjoidGIifSxVWHQ9WyJhY3ljbGljZXIiLCJyYW5rZXIiLCJyYW5rZGlyIiwiYWxpZ24iXSxqWHQ9WyJ3aWR0aCIsImhlaWdodCJdLEdYdD17d2lkdGg6MCxoZWlnaHQ6MH0sV1h0PVsibWlubGVuIiwid2VpZ2h0Iiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbG9mZnNldCJdLHFYdD17bWlubGVuOjEsd2VpZ2h0OjEsd2lkdGg6MCxoZWlnaHQ6MCxsYWJlbG9mZnNldDoxMCxsYWJlbHBvczoiciJ9LFlYdD1bImxhYmVscG9zIl07ZnVuY3Rpb24gWFh0KHQsZSl7cmV0dXJuIF9YdC5tYXBWYWx1ZXMoX1h0LnBpY2sodCxlKSxOdW1iZXIpfWZ1bmN0aW9uICRYdCh0KXt2YXIgZT17fTtyZXR1cm4gX1h0LmZvckVhY2godCwoZnVuY3Rpb24odCxuKXtlW24udG9Mb3dlckNhc2UoKV09dH0pKSxlfXZhciBLWHQ9SFd0LFpYdD1vcXQsSlh0PXlVdC5HcmFwaDt2YXIgUVh0LHQkdD17Z3JhcGhsaWI6eVV0LGxheW91dDpCWHQsZGVidWc6e2RlYnVnT3JkZXJpbmc6ZnVuY3Rpb24gZSR0KHQpe3ZhciBlPVpYdC5idWlsZExheWVyTWF0cml4KHQpLG49bmV3IEpYdCh7Y29tcG91bmQ6ITAsbXVsdGlncmFwaDohMH0pLnNldEdyYXBoKHt9KTtyZXR1cm4gS1h0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtuLnNldE5vZGUoZSx7bGFiZWw6ZX0pLG4uc2V0UGFyZW50KGUsImxheWVyIit0Lm5vZGUoZSkucmFuayl9KSksS1h0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbih0KXtuLnNldEVkZ2UodC52LHQudyx7fSx0Lm5hbWUpfSkpLEtYdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKHQsZSl7bi5zZXROb2RlKCJsYXllciIrZSx7cmFuazoic2FtZSJ9KSxLWHQucmVkdWNlKHQsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2V0RWRnZSh0LGUse3N0eWxlOiJpbnZpcyJ9KSxlfSkpfSkpLG59fSx1dGlsOnt0aW1lOm9xdC50aW1lLG5vdGltZTpvcXQubm90aW1lfSx2ZXJzaW9uOiIwLjguNSJ9OyEoZnVuY3Rpb24odCl7dC5PUF9HUkFQSD0ib3BfZ3JhcGgiLHQuQ09OQ0VQVFVBTF9HUkFQSD0iY29uY2VwdHVhbF9ncmFwaCIsdC5QUk9GSUxFPSJwcm9maWxlIn0pKFFYdHx8KFFYdD17fSkpO2xldCBuJHQ9e05vZGU6e0NPTlRBSU5FUjoibm9kZXMiLEdST1VQOiJub2RlIixTSEFQRToibm9kZXNoYXBlIixDT0xPUl9UQVJHRVQ6Im5vZGVjb2xvcnRhcmdldCIsTEFCRUw6Im5vZGVsYWJlbCIsQlVUVE9OX0NPTlRBSU5FUjoiYnV0dG9uY29udGFpbmVyIixCVVRUT05fQ0lSQ0xFOiJidXR0b25jaXJjbGUiLEVYUEFORF9CVVRUT046ImV4cGFuZGJ1dHRvbiIsQ09MTEFQU0VfQlVUVE9OOiJjb2xsYXBzZWJ1dHRvbiJ9LEVkZ2U6e0NPTlRBSU5FUjoiZWRnZXMiLEdST1VQOiJlZGdlIixMSU5FOiJlZGdlbGluZSIsUkVGRVJFTkNFX0VER0U6InJlZmVyZW5jZWVkZ2UiLFJFRl9MSU5FOiJyZWZsaW5lIixTRUxFQ1RBQkxFOiJzZWxlY3RhYmxlZWRnZSIsU0VMRUNURUQ6InNlbGVjdGVkZWRnZSIsU1RSVUNUVVJBTDoic3RydWN0dXJhbCJ9LEFubm90YXRpb246e09VVEJPWDoib3V0LWFubm90YXRpb25zIixJTkJPWDoiaW4tYW5ub3RhdGlvbnMiLEdST1VQOiJhbm5vdGF0aW9uIixOT0RFOiJhbm5vdGF0aW9uLW5vZGUiLEVER0U6ImFubm90YXRpb24tZWRnZSIsQ09OVFJPTF9FREdFOiJhbm5vdGF0aW9uLWNvbnRyb2wtZWRnZSIsTEFCRUw6ImFubm90YXRpb24tbGFiZWwiLEVMTElQU0lTOiJhbm5vdGF0aW9uLWVsbGlwc2lzIn0sU2NlbmU6e0dST1VQOiJzY2VuZSIsQ09SRToiY29yZSIsRlVOQ1RJT05fTElCUkFSWToiZnVuY3Rpb24tbGlicmFyeSIsSU5FWFRSQUNUOiJpbi1leHRyYWN0IixPVVRFWFRSQUNUOiJvdXQtZXh0cmFjdCJ9LFN1YnNjZW5lOntHUk9VUDoic3Vic2NlbmUifSxPUE5PREU6Im9wIixNRVRBTk9ERToibWV0YSIsU0VSSUVTTk9ERToic2VyaWVzIixCUklER0VOT0RFOiJicmlkZ2UiLEVMTElQU0lTTk9ERToiZWxsaXBzaXMifTtjb25zdCBpJHQ9e0xBQkVMOjV9LHIkdD17RVhQQU5ERURfTEFCRUw6OSxTRVJJRVNfTEFCRUw6OCxPUF9MQUJFTDo2LEhFQUxUSF9QSUxMX1NUQVRfTEFCRUw6NH0sbyR0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7ZnVuY3Rpb24gYSR0KHQsZSxuKXtsZXQgaT10Lm5vZGUoKS5jaGlsZE5vZGVzO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgcj1pW3RdO2lmKHIudGFnTmFtZT09PWUpaWYobiBpbnN0YW5jZW9mIEFycmF5KXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl0PXQmJnIuY2xhc3NMaXN0LmNvbnRhaW5zKG5bZV0pO2lmKHQpcmV0dXJuIER1KHIpfWVsc2UgaWYoIW58fHIuY2xhc3NMaXN0LmNvbnRhaW5zKG4pKXJldHVybiBEdShyKX1yZXR1cm4gRHUobnVsbCl9ZnVuY3Rpb24gcyR0KHQsZSxuLGkpe2xldCByPWEkdCh0LGUsbik7aWYoIXIuZW1wdHkoKSlyZXR1cm4gcjtsZXQgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixlKTtpZihuIGluc3RhbmNlb2YgQXJyYXkpZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspby5jbGFzc0xpc3QuYWRkKG5bdF0pO2Vsc2Ugby5jbGFzc0xpc3QuYWRkKG4pO3JldHVybiBpP3Qubm9kZSgpLmluc2VydEJlZm9yZShvLGkpOnQubm9kZSgpLmFwcGVuZENoaWxkKG8pLER1KG8pLmRhdHVtKHQuZGF0dW0oKSl9Y2xhc3MgbCR0e2NvbnN0cnVjdG9yKHQpe3RoaXMudG90YWxCeXRlcz0wLHRoaXMub3V0cHV0U2l6ZT10fWFkZEV4ZWN1dGlvblRpbWUodCxlKXt0aGlzLnN0YXJ0VGltZT1udWxsIT10aGlzLnN0YXJ0VGltZT9NYXRoLm1pbih0aGlzLnN0YXJ0VGltZSx0KTp0LHRoaXMuZW5kVGltZT1udWxsIT10aGlzLmVuZFRpbWU/TWF0aC5tYXgodGhpcy5lbmRUaW1lLGUpOmV9YWRkQnl0ZXNBbGxvY2F0aW9uKHQpe3RoaXMudG90YWxCeXRlcz1udWxsIT10aGlzLnRvdGFsQnl0ZXM/TWF0aC5tYXgodGhpcy50b3RhbEJ5dGVzLHQpOnR9Y29tYmluZSh0KXtudWxsIT10LnRvdGFsQnl0ZXMmJih0aGlzLnRvdGFsQnl0ZXMrPXQudG90YWxCeXRlcyksbnVsbCE9dC5nZXRUb3RhbE1pY3JvcygpJiZ0aGlzLmFkZEV4ZWN1dGlvblRpbWUodC5zdGFydFRpbWUsdC5lbmRUaW1lKX1nZXRUb3RhbE1pY3Jvcygpe3JldHVybiBudWxsPT10aGlzLnN0YXJ0VGltZXx8bnVsbD09dGhpcy5lbmRUaW1lP251bGw6dGhpcy5lbmRUaW1lLXRoaXMuc3RhcnRUaW1lfX1jb25zdCBjJHQ9Ljc1LHUkdD1URSgpLmV4cG9uZW50KC4zKS5kb21haW4oWzEsNWU2XSkucmFuZ2UoW2MkdCwxMl0pLmNsYW1wKCEwKTtmdW5jdGlvbiBoJHQodCl7IShmdW5jdGlvbiBlKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJ0aW1pbmdJZCIpfSkodCl9ZnVuY3Rpb24gZCR0KHQsZSxuKXtsZXQgaT1EYXRlLm5vdygpLHI9ZSgpO2NvbnN0IG89RGF0ZS5ub3coKS1pO3JldHVybiBjb25zb2xlLmxvZyh0LCI6IixvLCJtcyIpLG4mJmgkdCh7dGltaW5nSWQ6bixldmVudFZhbHVlOm99KSxyfWZ1bmN0aW9uIHAkdCh0KXtyZXR1cm57c2V0TWVzc2FnZTpmdW5jdGlvbihlKXt0LnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTp0LnByb2dyZXNzLnZhbHVlLG1zZzplfSl9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKGUpe3Quc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUrZSxtc2c6dC5wcm9ncmVzcy5tc2d9KX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxuKXtjb25zb2xlLmVycm9yKG4uc3RhY2spLHQuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUsbXNnOmUsZXJyb3I6ITB9KX19fWZ1bmN0aW9uIGYkdCh0LGUsbil7cmV0dXJue3NldE1lc3NhZ2U6ZnVuY3Rpb24oZSl7dC5zZXRNZXNzYWdlKG4rIjogIitlKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24obil7dC51cGRhdGVQcm9ncmVzcyhuKmUvMTAwKX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxpKXt0LnJlcG9ydEVycm9yKG4rIjogIitlLGkpfX19ZnVuY3Rpb24gbSR0KHQsZSxuLGkscil7cmV0dXJuIG5ldyBQcm9taXNlKCgobyxhKT0+e2kuc2V0TWVzc2FnZSh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RyeXtsZXQgYT1kJHQodCxuLHIpO2kudXBkYXRlUHJvZ3Jlc3MoZSksbyhhKX1jYXRjaChlKXtpLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pLDIwKX0pKX1mdW5jdGlvbiBnJHQodCxlLG4saSxyKXtyZXR1cm4gbmV3IFByb21pc2UoKChvLGEpPT57bGV0IHM9ZnVuY3Rpb24oZSl7aS5yZXBvcnRFcnJvcigiRmFpbGVkICIrdCxlKSxhKGUpfTtpLnNldE1lc3NhZ2UodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7bGV0IGE9RGF0ZS5ub3coKTtuKCkudGhlbigoZnVuY3Rpb24obil7Y29uc3Qgcz1EYXRlLm5vdygpLWE7Y29uc29sZS5sb2codCwiOiIscywibXMiKSxpLnVwZGF0ZVByb2dyZXNzKGUpLGgkdCh7dGltaW5nSWQ6cixldmVudFZhbHVlOnN9KSxvKG4pfSkpLmNhdGNoKHMpfWNhdGNoKHQpe3ModCl9fSksMjApfSkpfWNvbnN0IF8kdD1be3N5bWJvbDoiQiJ9LHtzeW1ib2w6IktCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJNQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiR0IiLG51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IlRCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJQQiIsbnVtVW5pdHM6MTAyNH1dLHkkdD1be3N5bWJvbDoiwrVzIn0se3N5bWJvbDoibXMiLG51bVVuaXRzOjFlM30se3N5bWJvbDoicyIsbnVtVW5pdHM6MWUzfSx7c3ltYm9sOiJtaW4iLG51bVVuaXRzOjYwfSx7c3ltYm9sOiJociIsbnVtVW5pdHM6NjB9LHtzeW1ib2w6ImRheXMiLG51bVVuaXRzOjI0fV07ZnVuY3Rpb24gdiR0KHQsZSxuPTApe3JldHVybiBuKzE8ZS5sZW5ndGgmJnQ+PWVbbisxXS5udW1Vbml0cz92JHQodC9lW24rMV0ubnVtVW5pdHMsZSxuKzEpOk51bWJlcih0LnRvUHJlY2lzaW9uKDMpKSsiICIrZVtuXS5zeW1ib2x9ZnVuY3Rpb24gYiR0KHQpe3JldHVybiEoIXR8fCEodC50b3RhbEJ5dGVzPjB8fHQuZ2V0VG90YWxNaWNyb3MoKT4wfHx0Lm91dHB1dFNpemUpKX1mdW5jdGlvbiB4JHQodCl7aWYodC5sZW5ndGg8MilyZXR1cm4gdDtsZXQgZT0wLG49MCxpPUNlLmV4cG9ydHMubWluKENlLmV4cG9ydHMubWFwKHQsKHQ9PnQubGVuZ3RoKSkpO2Zvcig7Oyl7ZSsrO2xldCByPUNlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKDAsZSkpKTtpZighci5ldmVyeSgoKHQsZSk9PjA9PT1lfHx0PT09cltlLTFdKSkpYnJlYWs7aWYoZT49aSlyZXR1cm4gdDtuPWV9cmV0dXJuIENlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKG4pKSl9Y29uc3QgdyR0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7ZnVuY3Rpb24gUyR0KHQsZSl7cmV0dXJuIHckdC5mb250PWAke2V9cHggUm9ib3RvLCBzYW5zLXNlcmlmYCx3JHQubWVhc3VyZVRleHQodCkud2lkdGh9Y29uc3QgTSR0PSIvIixFJHQ9Il9fcm9vdF9fIixUJHQ9Il9fZnVuY3Rpb25fbGlicmFyeV9fIjt2YXIgQyR0LEEkdCxrJHQsUCR0OyEoZnVuY3Rpb24odCl7dFt0LkZVTEw9MF09IkZVTEwiLHRbdC5FTUJFRERFRD0xXT0iRU1CRURERUQiLHRbdC5NRVRBPTJdPSJNRVRBIix0W3QuU0VSSUVTPTNdPSJTRVJJRVMiLHRbdC5DT1JFPTRdPSJDT1JFIix0W3QuU0hBRE9XPTVdPSJTSEFET1ciLHRbdC5CUklER0U9Nl09IkJSSURHRSIsdFt0LkVER0U9N109IkVER0UifSkoQyR0fHwoQyR0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5NRVRBPTBdPSJNRVRBIix0W3QuT1A9MV09Ik9QIix0W3QuU0VSSUVTPTJdPSJTRVJJRVMiLHRbdC5CUklER0U9M109IkJSSURHRSIsdFt0LkVMTElQU0lTPTRdPSJFTExJUFNJUyJ9KShBJHR8fChBJHQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LklOQ0xVREU9MF09IklOQ0xVREUiLHRbdC5FWENMVURFPTFdPSJFWENMVURFIix0W3QuVU5TUEVDSUZJRUQ9Ml09IlVOU1BFQ0lGSUVEIn0pKGskdHx8KGskdD17fSkpLChmdW5jdGlvbih0KXt0W3QuR1JPVVA9MF09IkdST1VQIix0W3QuVU5HUk9VUD0xXT0iVU5HUk9VUCJ9KShQJHR8fChQJHQ9e30pKTtjb25zdCBMJHQ9Il9vdXRwdXRfc2hhcGVzIixJJHQ9Il9YbGFDbHVzdGVyIjtjbGFzcyBOJHR7Y29uc3RydWN0b3IoKXt0aGlzLm5vZGVzPXt9LHRoaXMuZWRnZXM9W119fWNsYXNzIFIkdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9QSR0LkVMTElQU0lTLHRoaXMuaXNHcm91cE5vZGU9ITEsdGhpcy5jYXJkaW5hbGl0eT0xLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuc3RhdHM9bnVsbCx0aGlzLnNldE51bU1vcmVOb2Rlcyh0KSx0aGlzLmluY2x1ZGU9ayR0LlVOU1BFQ0lGSUVEfXNldE51bU1vcmVOb2Rlcyh0KXt0aGlzLm51bU1vcmVOb2Rlcz10LHRoaXMubmFtZT0iLi4uICIrdCsiIG1vcmUifX1jbGFzcyBPJHR7Y29uc3RydWN0b3IodCl7dGhpcy5vcD10Lm9wLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5kZXZpY2U9dC5kZXZpY2UsdGhpcy5hdHRyPXQuYXR0cix0aGlzLmlucHV0cz0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPVtdO2xldCBuPW51bGw7Zm9yKGxldCBpIG9mIHR8fFtdKXtjb25zdCB0PWkuc3RhcnRzV2l0aCgiXiIpO3QmJihpPWkuc3Vic3RyaW5nKDEpKTtsZXQgcj1pLG89IjAiO2NvbnN0IGE9aS5pbmNsdWRlcygiOiIpJiZpLm1hdGNoKGokdCk7YSYmKHI9YVsxXSxvPWFbMl0pLG4hPT1yJiYobj1yLGUucHVzaCh7bmFtZTpyLG91dHB1dFRlbnNvcktleTpvLGlzQ29udHJvbERlcGVuZGVuY3k6dH0pKX1yZXR1cm4gZX0pKHQuaW5wdXQpLHRoaXMub3V0cHV0U2hhcGVzPShmdW5jdGlvbiBuKHQpe2lmKCF0KXJldHVybiBudWxsO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXR7a2V5Om4sdmFsdWU6aX09dFtlXTtpZihuPT09TCR0KXtpZighaS5saXN0fHwhaS5saXN0LnNoYXBlKXJldHVybiBudWxsO2xldCBuPWkubGlzdC5zaGFwZS5tYXAoKHQ9PnQudW5rbm93bl9yYW5rP251bGw6bnVsbD09dC5kaW18fDE9PT10LmRpbS5sZW5ndGgmJm51bGw9PXQuZGltWzBdLnNpemU/W106dC5kaW0ubWFwKCh0PT50LnNpemUpKSkpO3JldHVybiB0LnNwbGljZShlLDEpLG59fXJldHVybiBudWxsfSkodC5hdHRyKSx0aGlzLnhsYUNsdXN0ZXI9KGZ1bmN0aW9uIGkodCl7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5rZXk9PT1JJHQpcmV0dXJuIHRbZV0udmFsdWUuc3x8bnVsbDtyZXR1cm4gbnVsbH0pKHQuYXR0ciksdGhpcy5jb21wYXRpYmxlPSExLHRoaXMudHlwZT1BJHQuT1AsdGhpcy5pc0dyb3VwTm9kZT0hMSx0aGlzLmNhcmRpbmFsaXR5PTEsdGhpcy5pbkVtYmVkZGluZ3M9W10sdGhpcy5vdXRFbWJlZGRpbmdzPVtdLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuaW5jbHVkZT1rJHQuVU5TUEVDSUZJRUQsdGhpcy5vd25pbmdTZXJpZXM9bnVsbH19ZnVuY3Rpb24geiR0KHQsZT17fSl7cmV0dXJuIG5ldyBEJHQodCxlKX1jbGFzcyBEJHR7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLm5hbWU9dCx0aGlzLnR5cGU9QSR0Lk1FVEEsdGhpcy5kZXB0aD0xLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPVkkdCh0LEMkdC5NRVRBLGUpLHRoaXMuYnJpZGdlZ3JhcGg9bnVsbCx0aGlzLm9wSGlzdG9ncmFtPXt9LHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy50ZW1wbGF0ZUlkPW51bGwsdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPWskdC5VTlNQRUNJRklFRCx0aGlzLmFzc29jaWF0ZWRGdW5jdGlvbj0iIn1nZXRGaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5tZXRhZ3JhcGgubm9kZXMoKVswXSl9Z2V0Um9vdE9wKCl7bGV0IHQ9dGhpcy5uYW1lLnNwbGl0KCIvIik7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5uYW1lKyIvKCIrdFt0Lmxlbmd0aC0xXSsiKSIpfWxlYXZlcygpe2xldCB0LGU9W10sbj1bdGhpc107Zm9yKDtuLmxlbmd0aDspe2xldCBpPW4uc2hpZnQoKTtpLmlzR3JvdXBOb2RlPyh0PWkubWV0YWdyYXBoLENlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzKCksKGU9Pm4ucHVzaCh0Lm5vZGUoZSkpKSkpOmUucHVzaChpLm5hbWUpfXJldHVybiBlfX1mdW5jdGlvbiBCJHQodCxlKXtyZXR1cm4gbmV3IEgkdCh0LGUpfWNsYXNzIEgkdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudj10LHRoaXMudz1lLHRoaXMuYmFzZUVkZ2VMaXN0PVtdLHRoaXMuaW5ib3VuZD1udWxsLHRoaXMubnVtUmVndWxhckVkZ2VzPTAsdGhpcy5udW1Db250cm9sRWRnZXM9MCx0aGlzLm51bVJlZkVkZ2VzPTAsdGhpcy50b3RhbFNpemU9MH1hZGRCYXNlRWRnZSh0LGUpe3RoaXMuYmFzZUVkZ2VMaXN0LnB1c2godCksdC5pc0NvbnRyb2xEZXBlbmRlbmN5P3RoaXMubnVtQ29udHJvbEVkZ2VzKz0xOnRoaXMubnVtUmVndWxhckVkZ2VzKz0xLHQuaXNSZWZlcmVuY2VFZGdlJiYodGhpcy5udW1SZWZFZGdlcys9MSksdGhpcy50b3RhbFNpemUrPUgkdC5jb21wdXRlU2l6ZU9mRWRnZSh0LGUpLGUubWF4TWV0YUVkZ2VTaXplPU1hdGgubWF4KGUubWF4TWV0YUVkZ2VTaXplLHRoaXMudG90YWxTaXplKX1zdGF0aWMgY29tcHV0ZVNpemVPZkVkZ2UodCxlKXtsZXQgbj1lLm5vZGUodC52KTtpZighbi5vdXRwdXRTaGFwZXMpcmV0dXJuIDE7ZS5oYXNTaGFwZUluZm89ITA7Y29uc3QgaT1PYmplY3Qua2V5cyhuLm91dHB1dFNoYXBlcykubWFwKCh0PT5uLm91dHB1dFNoYXBlc1t0XSkpLm1hcCgodD0+bnVsbD09dD8xOnQucmVkdWNlKCgodCxlKT0+KC0xPT09ZSYmKGU9MSksdCplKSksMSkpKTtyZXR1cm4gQ2UuZXhwb3J0cy5zdW0oaSl9fWZ1bmN0aW9uIEYkdCh0LGUsbixpLHIsbyl7cmV0dXJuIG5ldyBVJHQodCxlLG4saSxyLG8pfWZ1bmN0aW9uIFYkdCh0LGUsbixpLHIpe3JldHVybihuP24rIi8iOiIiKSsodCsodm9pZCAwIT09aSYmdm9pZCAwIT09cj8iWyIraSsiLSIrcisiXSI6IiMiKStlKX1jbGFzcyBVJHR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMubmFtZT1yfHxWJHQodCxlLG4pLHRoaXMudHlwZT1BJHQuU0VSSUVTLHRoaXMuaGFzTG9vcD0hMSx0aGlzLnByZWZpeD10LHRoaXMuc3VmZml4PWUsdGhpcy5jbHVzdGVySWQ9aSx0aGlzLmlkcz1bXSx0aGlzLnBhcmVudD1uLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPVkkdChyLEMkdC5TRVJJRVMsbyksdGhpcy5icmlkZ2VncmFwaD1udWxsLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPWskdC5VTlNQRUNJRklFRH19Y29uc3QgaiR0PS9eKFteOl0rKTooKFx3Kzp8KVxkKykkLztmdW5jdGlvbiBHJHQodCxlLG4saSxyLG8pe2lmKGU9PT1uLm5hbWUpcmV0dXJuO3QuZWRnZXMucHVzaCh7djplLHc6bi5uYW1lLG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc0NvbnRyb2xEZXBlbmRlbmN5OmkuaXNDb250cm9sRGVwZW5kZW5jeSxpc1JlZmVyZW5jZUVkZ2U6ITA9PT1yLnJlZkVkZ2VzW24ub3ArIiAiK29dfSl9Y29uc3QgVyR0PXtlbmFibGVFbWJlZGRpbmc6ITAsaW5FbWJlZGRpbmdUeXBlczpbIkNvbnN0Il0sb3V0RW1iZWRkaW5nVHlwZXM6WyJeW2EtekEtWl0rU3VtbWFyeSQiXSxyZWZFZGdlczp7IkFzc2lnbiAwIjohMCwiQXNzaWduQWRkIDAiOiEwLCJBc3NpZ25TdWIgMCI6ITAsImFzc2lnbiAwIjohMCwiYXNzaWduX2FkZCAwIjohMCwiYXNzaWduX3N1YiAwIjohMCwiY291bnRfdXBfdG8gMCI6ITAsIlNjYXR0ZXJBZGQgMCI6ITAsIlNjYXR0ZXJTdWIgMCI6ITAsIlNjYXR0ZXJVcGRhdGUgMCI6ITAsInNjYXR0ZXJfYWRkIDAiOiEwLCJzY2F0dGVyX3N1YiAwIjohMCwic2NhdHRlcl91cGRhdGUgMCI6ITB9fTtmdW5jdGlvbiBxJHQodCxlLG4pe2xldCBpPXt9LHI9e30sbz17fSxhPVgkdChlLmluRW1iZWRkaW5nVHlwZXMpLHM9WCR0KGUub3V0RW1iZWRkaW5nVHlwZXMpLGw9W10sYz10Lm5vZGUsdT1uZXcgQXJyYXkoYy5sZW5ndGgpO3JldHVybiBtJHQoIk5vcm1hbGl6aW5nIG5hbWVzIiwzMCwoKCk9PntsZXQgZT1uZXcgQXJyYXkoYy5sZW5ndGgpLG49MDtjb25zdCBoPXQ9PntsZXQgYz1uZXcgTyR0KHQpO3JldHVybiBhKGMpPyhsLnB1c2goYy5uYW1lKSxpW2MubmFtZV09YyxjKTpzKGMpPyhsLnB1c2goYy5uYW1lKSxyW2MubmFtZV09YyxDZS5leHBvcnRzLmVhY2goYy5pbnB1dHMsKHQ9PntsZXQgZT10Lm5hbWU7b1tlXT1vW2VdfHxbXSxvW2VdLnB1c2goYyl9KSksYyk6KGVbbl09Yyx1W25dPWMubmFtZSxuKyssYyl9O0NlLmV4cG9ydHMuZWFjaChjLGgpO2NvbnN0IGQ9dD0+e2NvbnN0IGU9VCR0K3Quc2lnbmF0dXJlLm5hbWU7aWYoaCh7bmFtZTplLGlucHV0OltdLGRldmljZToiIixvcDoiIixhdHRyOltdfSksdC5zaWduYXR1cmUuaW5wdXRfYXJnKXtsZXQgbj0wO2NvbnN0IGk9dD0+e2goe25hbWU6ZStNJHQrdC5uYW1lLGlucHV0OltdLGRldmljZToiIixvcDoiaW5wdXRfYXJnIixhdHRyOlt7a2V5OiJUIix2YWx1ZTp7dHlwZTp0LnR5cGV9fV19KS5mdW5jdGlvbklucHV0SW5kZXg9bixuKyt9O3Quc2lnbmF0dXJlLmlucHV0X2FyZy5uYW1lP2kodC5zaWduYXR1cmUuaW5wdXRfYXJnKTpDZS5leHBvcnRzLmVhY2godC5zaWduYXR1cmUuaW5wdXRfYXJnLGkpfWxldCBuPTA7Y29uc3QgaT17fTtpZih0LnNpZ25hdHVyZS5vdXRwdXRfYXJnKXtjb25zdCByPXQ9PntpW2UrTSR0K3QubmFtZV09bixuKyt9O3Quc2lnbmF0dXJlLm91dHB1dF9hcmcubmFtZT9yKHQuc2lnbmF0dXJlLm91dHB1dF9hcmcpOkNlLmV4cG9ydHMuZWFjaCh0LnNpZ25hdHVyZS5vdXRwdXRfYXJnLHIpfUNlLmV4cG9ydHMuZWFjaCh0Lm5vZGVfZGVmLCh0PT57dC5uYW1lPWUrIi8iK3QubmFtZSwic3RyaW5nIj09dHlwZW9mIHQuaW5wdXQmJih0LmlucHV0PVt0LmlucHV0XSk7Y29uc3Qgbj1oKHQpO0NlLmV4cG9ydHMuaXNOdW1iZXIoaVt0Lm5hbWVdKSYmKG4uZnVuY3Rpb25PdXRwdXRJbmRleD1pW3QubmFtZV0pLENlLmV4cG9ydHMuZWFjaChuLmlucHV0cywodD0+e3QubmFtZT1lK00kdCt0Lm5hbWV9KSl9KSl9O3JldHVybiB0LmxpYnJhcnkmJnQubGlicmFyeS5mdW5jdGlvbiYmQ2UuZXhwb3J0cy5lYWNoKHQubGlicmFyeS5mdW5jdGlvbixkKSxlLnNwbGljZShuKSx1LnNwbGljZShuKSxlfSksbixCQXQuTk9STUFMSVpJTkdfTkFNRVMpLnRoZW4oKHQ9Pm0kdCgiQnVpbGRpbmcgdGhlIGRhdGEgc3RydWN0dXJlIiw3MCwoKCk9PntsZXQgbj0oZnVuY3Rpb24gYSh0LGUpe2xldCBuPXt9LGk9e307dC5zb3J0KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aC0xOysrZSl7bGV0IHI9dFtlXTtDZS5leHBvcnRzLmVhY2goWiR0KHIpLnNsaWNlKDAsLTEpLCh0PT57aVt0XT0hMH0pKTtmb3IobGV0IGk9ZSsxO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKCFDZS5leHBvcnRzLnN0YXJ0c1dpdGgoZSxyKSlicmVhaztpZihlLmxlbmd0aD5yLmxlbmd0aCYmZS5jaGFyQXQoci5sZW5ndGgpPT09TSR0KXtuW3JdPSQkdChyKTticmVha319fXJldHVybiBDZS5leHBvcnRzLmVhY2goZSwodD0+e3QgaW4gaSYmKG5bdF09JCR0KHQpKX0pKSxufSkodSxsKSxzPW5ldyBOJHQ7cmV0dXJuIENlLmV4cG9ydHMuZWFjaCh0LCh0PT57bGV0IGU9blt0Lm5hbWVdfHx0Lm5hbWU7cy5ub2Rlc1tlXT10LHQubmFtZSBpbiBvJiYodC5vdXRFbWJlZGRpbmdzPW9bdC5uYW1lXSxDZS5leHBvcnRzLmVhY2godC5vdXRFbWJlZGRpbmdzLCh0PT57dC5uYW1lPW5bdC5uYW1lXXx8dC5uYW1lfSkpKSx0Lm5hbWU9ZX0pKSxDZS5leHBvcnRzLmVhY2godCwodD0+e0NlLmV4cG9ydHMuZWFjaCh0LmlucHV0cywoKG8sYSk9PntsZXQgbD1vLm5hbWU7aWYobCBpbiBpKXtsZXQgcj1pW2xdO3QuaW5FbWJlZGRpbmdzLnB1c2gocik7Zm9yKGxldCBpIG9mIHIuaW5wdXRzKUckdChzLG5baS5uYW1lXXx8aS5uYW1lLHQsaSxlLGEpfWVsc2UgaWYobCBpbiByKXtsZXQgaT1yW2xdO2ZvcihsZXQgciBvZiBpLmlucHV0cylHJHQocyxuW3IubmFtZV18fHIubmFtZSx0LG8sZSxhKX1lbHNlIEckdChzLG5bbF18fGwsdCxvLGUsYSl9KSl9KSksQ2UuZXhwb3J0cy5lYWNoKGksKCh0LGUpPT57dC5uYW1lPW5bdC5uYW1lXXx8dC5uYW1lfSkpLHN9KSxuLEJBdC5CVUlMRF9TTElNX0dSQVBIKSkpfWZ1bmN0aW9uIFkkdCh0LGUsbj17fSl7Y29uc3QgaT1uZXcgdCR0LmdyYXBobGliLkdyYXBoKG4pO3JldHVybiBpLnNldEdyYXBoKHtuYW1lOnQscmFua2RpcjpuLnJhbmtkaXJ8fCJCVCIsdHlwZTplfSksaX1mdW5jdGlvbiBYJHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT1uZXcgUmVnRXhwKHRbbl0pO2lmKCJzdHJpbmciPT10eXBlb2YgZS5vcCYmZS5vcC5tYXRjaChpKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gJCR0KHQpe2xldCBlPXQuc3BsaXQoTSR0KTtyZXR1cm4gdCtNJHQrIigiK2VbZS5sZW5ndGgtMV0rIikifWZ1bmN0aW9uIEskdCh0KXtsZXQgZT10Lm5vZGVzKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5uZWlnaGJvcnMoZSkubGVuZ3RofSkpO3JldHVybiBlLnNvcnQoKSxlfWZ1bmN0aW9uIFokdCh0LGUpe2xldCBuPVtdLGk9dC5pbmRleE9mKE0kdCk7Zm9yKDtpPj0wOyluLnB1c2godC5zdWJzdHJpbmcoMCxpKSksaT10LmluZGV4T2YoTSR0LGkrMSk7aWYoZSl7bGV0IGk9ZVt0XTtpJiZuLnB1c2goaSl9cmV0dXJuIG4ucHVzaCh0KSxufWZ1bmN0aW9uIEokdCh0KXtyZXR1cm4gdD09PWskdC5FWENMVURFPyJBZGQgdG8gbWFpbiBncmFwaCI6IlJlbW92ZSBmcm9tIG1haW4gZ3JhcGgifWZ1bmN0aW9uIFEkdCh0LGUpe2xldCBuPShmdW5jdGlvbiByKHQsZSl7cmV0dXJuIENlLmV4cG9ydHMucmVkdWNlKHQsKGZ1bmN0aW9uKHQsbil7bGV0IGk9blswXSxyPVtdO3JldHVybiBuWzFdLm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bisrKXtpZighZXx8ZUt0KHJbbl0ubWV0YW5vZGUubWV0YWdyYXBoLHQubWV0YWdyYXBoKSlyZXR1cm4gdC50ZW1wbGF0ZUlkPXJbbl0ubWV0YW5vZGUudGVtcGxhdGVJZCx2b2lkIHJbbl0ubWVtYmVycy5wdXNoKHQubmFtZSl9dC50ZW1wbGF0ZUlkPWkrIlsiK3IubGVuZ3RoKyJdIixyLnB1c2goe21ldGFub2RlOnQsbWVtYmVyczpbdC5uYW1lXX0pfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlLm1ldGFub2RlLnRlbXBsYXRlSWRdPXtsZXZlbDpuWzFdLmxldmVsLG5vZGVzOmUubWVtYmVyc319KSksdH0pLHt9KX0pKChmdW5jdGlvbiBpKHQpe2NvbnN0IGU9dC5nZXROb2RlTWFwKCk7bGV0IG49T2JqZWN0LmtleXMoZSkucmVkdWNlKCgodCxuKT0+e2NvbnN0IGk9ZVtuXTtpZihpLnR5cGUhPT1BJHQuTUVUQSlyZXR1cm4gdDtsZXQgcj1uLnNwbGl0KCIvIikubGVuZ3RoLTEsbz0oZnVuY3Rpb24gYSh0KXtsZXQgZT1DZS5leHBvcnRzLm1hcCh7ZGVwdGg6dC5kZXB0aCwifFZ8Ijp0Lm1ldGFncmFwaC5ub2RlcygpLmxlbmd0aCwifEV8Ijp0Lm1ldGFncmFwaC5lZGdlcygpLmxlbmd0aH0sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUrIj0iK3R9KSkuam9pbigiICIpLG49Q2UuZXhwb3J0cy5tYXAodC5vcEhpc3RvZ3JhbSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsiPSIrdH0pKS5qb2luKCIsIik7cmV0dXJuIGUrIiBbb3BzXSAiK259KShpKSxzPXRbb118fHtub2RlczpbXSxsZXZlbDpyfTtyZXR1cm4gdFtvXT1zLHMubm9kZXMucHVzaChpKSxzLmxldmVsPnImJihzLmxldmVsPXIpLHR9KSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLm1hcCgodD0+W3Qsblt0XV0pKS5maWx0ZXIoKChbdCxlXSk9Pntjb25zdHtub2RlczpufT1lO2lmKG4ubGVuZ3RoPjEpcmV0dXJuITA7Y29uc3QgaT1uWzBdO3JldHVybiBpLnR5cGU9PT1BJHQuTUVUQSYmaS5hc3NvY2lhdGVkRnVuY3Rpb259KSkuc29ydCgoKFt0LGVdKT0+ZS5ub2Rlc1swXS5kZXB0aCkpfSkodCksZSk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLnNvcnQoKHQ9Pm5bdF0ubGV2ZWwpKS5yZWR1Y2UoKCh0LGUpPT4odFtlXT1uW2VdLHQpKSx7fSl9ZnVuY3Rpb24gdEt0KHQsZSxuKXtyZXR1cm4gQ2UuZXhwb3J0cy5zb3J0QnkodCxbdD0+ZS5ub2RlKHQpLm9wLHQ9PmUubm9kZSh0KS50ZW1wbGF0ZUlkLHQ9PmUubmVpZ2hib3JzKHQpLmxlbmd0aCx0PT5lLnByZWRlY2Vzc29ycyh0KS5sZW5ndGgsdD0+ZS5zdWNjZXNzb3JzKHQpLmxlbmd0aCx0PT50LnN1YnN0cihuLmxlbmd0aCldKX1mdW5jdGlvbiBlS3QodCxlKXtpZighKGZ1bmN0aW9uIG4odCxlKXtsZXQgbj1LJHQodCksaT1LJHQoZSk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XSE9PWlbdF0pcmV0dXJuITE7cmV0dXJuITB9KSh0LGUpKXJldHVybiExO2xldCBpPXQuZ3JhcGgoKS5uYW1lLHI9ZS5ncmFwaCgpLm5hbWUsbz17fSxhPXt9LHM9W107ZnVuY3Rpb24gbCh0LGUpe2xldCBuPXQuc3Vic3RyKGkubGVuZ3RoKSxsPWUuc3Vic3RyKHIubGVuZ3RoKTtyZXR1cm4gb1tuXV5hW2xdPyhjb25zb2xlLndhcm4oImRpZmZlcmVudCB2aXNpdCBwYXR0ZXJuIiwiWyIraSsiXSIsbiwiWyIrcisiXSIsbCksITApOihvW25dfHwob1tuXT1hW2xdPSEwLHMucHVzaCh7bjE6dCxuMjplfSkpLCExKX1sZXQgYz10LnNvdXJjZXMoKSx1PWUuc291cmNlcygpO2lmKGMubGVuZ3RoIT09dS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCJkaWZmZXJlbnQgc291cmNlIGxlbmd0aCIpLCExO2M9dEt0KGMsdCxpKSx1PXRLdCh1LGUscik7Zm9yKGxldCB0PTA7dDxjLmxlbmd0aDt0Kyspe2lmKGwoY1t0XSx1W3RdKSlyZXR1cm4hMX1mb3IoO3MubGVuZ3RoPjA7KXtsZXQgbj1zLnBvcCgpO2lmKCFuS3QodC5ub2RlKG4ubjEpLGUubm9kZShuLm4yKSkpcmV0dXJuITE7bGV0IG89dC5zdWNjZXNzb3JzKG4ubjEpLGE9ZS5zdWNjZXNzb3JzKG4ubjIpO2lmKG8ubGVuZ3RoIT09YS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCIjIG9mIHN1Y2Nlc3NvcnMgbWlzbWF0Y2giLG8sYSksITE7bz10S3Qobyx0LGkpLGE9dEt0KGEsZSxyKTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7aWYobChvW3RdLGFbdF0pKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBuS3QodCxlKXtpZih0LnR5cGU9PT1BJHQuTUVUQSl7bGV0IG49dCxpPWU7cmV0dXJuIG4udGVtcGxhdGVJZCYmaS50ZW1wbGF0ZUlkJiZuLnRlbXBsYXRlSWQ9PT1pLnRlbXBsYXRlSWR9aWYodC50eXBlPT09QSR0Lk9QJiZlLnR5cGU9PT1BJHQuT1ApcmV0dXJuIHQub3A9PT1lLm9wO2lmKHQudHlwZT09PUEkdC5TRVJJRVMmJmUudHlwZT09PUEkdC5TRVJJRVMpe2xldCBuPXQsaT1lLHI9bi5tZXRhZ3JhcGgubm9kZUNvdW50KCk7cmV0dXJuIHI9PT1pLm1ldGFncmFwaC5ub2RlQ291bnQoKSYmKDA9PT1yfHxuLm1ldGFncmFwaC5ub2RlKG4ubWV0YWdyYXBoLm5vZGVzKClbMF0pLm9wPT09aS5tZXRhZ3JhcGgubm9kZShpLm1ldGFncmFwaC5ub2RlcygpWzBdKS5vcCl9cmV0dXJuITF9dmFyIGlLdDshKGZ1bmN0aW9uKHQpe3RbdC5URU1QTEFURVNfVVBEQVRFRD0wXT0iVEVNUExBVEVTX1VQREFURUQifSkoaUt0fHwoaUt0PXt9KSk7Y2xhc3Mgckt0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzPW5ldyBNYXB9Z2V0TGlzdGVuZXJzKHQpe3JldHVybiB0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLmhhcyh0KXx8dGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5zZXQodCxbXSksdGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5nZXQodCl9YWRkTGlzdGVuZXIodCxlKXt0aGlzLmdldExpc3RlbmVycyh0KS5wdXNoKGUpfXJlbW92ZUxpc3RlbmVyKHQsZSl7Y29uc3Qgbj10aGlzLmdldExpc3RlbmVycyh0KS5maWx0ZXIoKHQ9PnQhPT1lKSk7dGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5zZXQodCxuKX1kaXNwYXRjaEV2ZW50KHQsZSl7Zm9yKGNvbnN0IG4gb2YgdGhpcy5nZXRMaXN0ZW5lcnModCkpbihlKX19e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5oYXNTaGFwZUluZm89ITEsdGhpcy5tYXhNZXRhRWRnZVNpemU9MSx0aGlzLmdyYXBoT3B0aW9ucz17fSx0aGlzLnRlbXBsYXRlcz1udWxsLHRoaXMuZ3JhcGhPcHRpb25zLmNvbXBvdW5kPSEwLHRoaXMuZ3JhcGhPcHRpb25zLnJhbmtkaXI9dC5yYW5rRGlyZWN0aW9uLHRoaXMucm9vdD16JHQoRSR0LHRoaXMuZ3JhcGhPcHRpb25zKSx0aGlzLmxpYnJhcnlGdW5jdGlvbnM9e30sdGhpcy5zZXJpZXNHcm91cE1hcD1uZXcgTWFwKHQuc2VyaWVzTWFwKSx0aGlzLmRldmljZXM9bnVsbCx0aGlzLnhsYUNsdXN0ZXJzPW51bGwsdGhpcy52ZXJpZnlUZW1wbGF0ZT10LnZlcmlmeVRlbXBsYXRlLHRoaXMuaW5kZXg9e30sdGhpcy5pbmRleC5fX3Jvb3RfXz10aGlzLnJvb3QsdGhpcy5vcmRlcmluZ3M9e319Z2V0U2VyaWVzR3JvdXBUeXBlKHQpe3ZhciBlO3JldHVybiBudWxsIT09KGU9dGhpcy5zZXJpZXNHcm91cE1hcC5nZXQodCkpJiZ2b2lkIDAhPT1lP2U6UCR0LkdST1VQfXNldFNlcmllc0dyb3VwVHlwZSh0LGUpe3JldHVybiB0aGlzLnNlcmllc0dyb3VwTWFwLnNldCh0LGUpfWJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpe2NvbnN0IGU9dGhpcy5nZXRTZXJpZXNHcm91cFR5cGUodCk9PT1QJHQuR1JPVVA/UCR0LlVOR1JPVVA6UCR0LkdST1VQO3JldHVybiBuZXcgTWFwKFsuLi50aGlzLnNlcmllc0dyb3VwTWFwLFt0LGVdXSl9Z2V0Tm9kZU1hcCgpe3JldHVybiB0aGlzLmluZGV4fW5vZGUodCl7cmV0dXJuIHRoaXMuaW5kZXhbdF19c2V0Tm9kZSh0LGUpe3RoaXMuaW5kZXhbdF09ZX1nZXRCcmlkZ2VncmFwaCh0KXtsZXQgZT10aGlzLmluZGV4W3RdO2lmKCFlKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBub2RlIGluIGhpZXJhcmNoeTogIit0KTtpZighKCJtZXRhZ3JhcGgiaW4gZSkpcmV0dXJuIG51bGw7aWYoZS5icmlkZ2VncmFwaClyZXR1cm4gZS5icmlkZ2VncmFwaDtsZXQgbj1lLmJyaWRnZWdyYXBoPVkkdCgiQlJJREdFR1JBUEgiLEMkdC5CUklER0UsdGhpcy5ncmFwaE9wdGlvbnMpO2lmKCFlLnBhcmVudE5vZGV8fCEoIm1ldGFncmFwaCJpbiBlLnBhcmVudE5vZGUpKXJldHVybiBuO2xldCBpPWUucGFyZW50Tm9kZSxyPWkubWV0YWdyYXBoLG89dGhpcy5nZXRCcmlkZ2VncmFwaChpLm5hbWUpO3JldHVybiBDZS5leHBvcnRzLmVhY2goW3Isb10sKGU9PntlLmVkZ2VzKCkuZmlsdGVyKChlPT5lLnY9PT10fHxlLnc9PT10KSkuZm9yRWFjaCgoaT0+e2xldCByPWkudz09PXQsbz1lLmVkZ2UoaSk7Q2UuZXhwb3J0cy5lYWNoKG8uYmFzZUVkZ2VMaXN0LChlPT57bGV0W28sYV09cj9bZS53LGkudl06W2UudixpLnddLHM9dGhpcy5nZXRDaGlsZE5hbWUodCxvKSxsPXt2OnI/YTpzLHc6cj9zOmF9LGM9bi5lZGdlKGwpO2N8fChjPUIkdChsLnYsbC53KSxjLmluYm91bmQ9cixuLnNldEVkZ2UobC52LGwudyxjKSksYy5hZGRCYXNlRWRnZShlLHRoaXMpfSkpfSkpfSkpLG59Z2V0Q2hpbGROYW1lKHQsZSl7bGV0IG49dGhpcy5pbmRleFtlXTtmb3IoO247KXtpZihuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5uYW1lPT09dClyZXR1cm4gbi5uYW1lO249bi5wYXJlbnROb2RlfXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBpbW1lZGlhdGUgY2hpbGQgZm9yIGRlc2NlbmRhbnQ6ICIrZSl9Z2V0UHJlZGVjZXNzb3JzKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3QpO2xldCBuPXRoaXMuZ2V0T25lV2F5RWRnZXMoZSwhMCk7cmV0dXJuIGUuaXNHcm91cE5vZGV8fENlLmV4cG9ydHMuZWFjaChlLmluRW1iZWRkaW5ncywoaT0+e0NlLmV4cG9ydHMuZWFjaChlLmlucHV0cywoZT0+e2lmKGUubmFtZT09PWkubmFtZSl7bGV0IHI9bmV3IEgkdChpLm5hbWUsdCk7ci5hZGRCYXNlRWRnZSh7aXNDb250cm9sRGVwZW5kZW5jeTplLmlzQ29udHJvbERlcGVuZGVuY3ksb3V0cHV0VGVuc29yS2V5OmUub3V0cHV0VGVuc29yS2V5LGlzUmVmZXJlbmNlRWRnZTohMSx2OmkubmFtZSx3OnR9LHRoaXMpLG4ucmVndWxhci5wdXNoKHIpfX0pKX0pKSxufWdldFN1Y2Nlc3NvcnModCl7bGV0IGU9dGhpcy5pbmRleFt0XTtpZighZSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIrdCk7bGV0IG49dGhpcy5nZXRPbmVXYXlFZGdlcyhlLCExKTtyZXR1cm4gZS5pc0dyb3VwTm9kZXx8Q2UuZXhwb3J0cy5lYWNoKGUub3V0RW1iZWRkaW5ncywoZT0+e0NlLmV4cG9ydHMuZWFjaChlLmlucHV0cywoaT0+e2lmKGkubmFtZT09PXQpe2xldCByPW5ldyBIJHQodCxlLm5hbWUpO3IuYWRkQmFzZUVkZ2Uoe2lzQ29udHJvbERlcGVuZGVuY3k6aS5pc0NvbnRyb2xEZXBlbmRlbmN5LG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc1JlZmVyZW5jZUVkZ2U6ITEsdjp0LHc6ZS5uYW1lfSx0aGlzKSxuLnJlZ3VsYXIucHVzaChyKX19KSl9KSksbn1nZXRPbmVXYXlFZGdlcyh0LGUpe2xldCBuPXtjb250cm9sOltdLHJlZ3VsYXI6W119O2lmKCF0LnBhcmVudE5vZGV8fCF0LnBhcmVudE5vZGUuaXNHcm91cE5vZGUpcmV0dXJuIG47bGV0IGk9dC5wYXJlbnROb2RlLHI9aS5tZXRhZ3JhcGgsbz10aGlzLmdldEJyaWRnZWdyYXBoKGkubmFtZSk7cmV0dXJuIG9LdChyLHQsZSxuKSxvS3Qobyx0LGUsbiksbn1nZXRUb3BvbG9naWNhbE9yZGVyaW5nKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3QpO2lmKCFlLmlzR3JvdXBOb2RlKXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5vcmRlcmluZ3MpcmV0dXJuIHRoaXMub3JkZXJpbmdzW3RdO2xldCBuPXt9LGk9e30scj1lLm1ldGFncmFwaDtDZS5leHBvcnRzLmVhY2goci5lZGdlcygpLCh0PT57ci5lZGdlKHQpLm51bVJlZ3VsYXJFZGdlcyYmKHQudiBpbiBufHwoblt0LnZdPVtdKSxuW3Qudl0ucHVzaCh0LncpLGlbdC53XT0hMCl9KSk7bGV0IG89Q2UuZXhwb3J0cy5kaWZmZXJlbmNlKENlLmV4cG9ydHMua2V5cyhuKSxDZS5leHBvcnRzLmtleXMoaSkpLGE9dGhpcy5vcmRlcmluZ3NbdF09e30scz0wO2Zvcig7by5sZW5ndGg7KXtsZXQgdD1vLnNoaWZ0KCk7YVt0XT1zKyssQ2UuZXhwb3J0cy5lYWNoKG5bdF0sKHQ9Pm8ucHVzaCh0KSkpLGRlbGV0ZSBuW3RdfXJldHVybiBhfWdldFRlbXBsYXRlSW5kZXgoKXtpZighdGhpcy50ZW1wbGF0ZXMpcmV0dXJuIG51bGw7bGV0IHQ9WmcodGhpcy50ZW1wbGF0ZXMpO2lmKCF0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgZT1ZTSgpLmRvbWFpbih0KS5yYW5nZShLbCgwLHQubGVuZ3RoKSk7cmV0dXJuIHQ9PmUodCl9dXBkYXRlVGVtcGxhdGVzKCl7ZCR0KCJGaW5kaW5nIHNpbWlsYXIgc3ViZ3JhcGhzIiwoKCk9Pnt0aGlzLnRlbXBsYXRlcz1RJHQodGhpcyx0aGlzLnZlcmlmeVRlbXBsYXRlKSx0aGlzLmRpc3BhdGNoRXZlbnQoaUt0LlRFTVBMQVRFU19VUERBVEVEKX0pLEJBdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUyl9fWZ1bmN0aW9uIG9LdCh0LGUsbixpKXtsZXQgcj1uP3QuaW5FZGdlcyhlLm5hbWUpOnQub3V0RWRnZXMoZS5uYW1lKTtDZS5leHBvcnRzLmVhY2gociwoZT0+e2xldCBuPXQuZWRnZShlKTsobi5udW1SZWd1bGFyRWRnZXM/aS5yZWd1bGFyOmkuY29udHJvbCkucHVzaChuKX0pKX1jb25zdCBhS3Q9e3ZlcmlmeVRlbXBsYXRlOiEwLHNlcmllc05vZGVNaW5TaXplOjUsc2VyaWVzTWFwOm5ldyBNYXAscmFua0RpcmVjdGlvbjoiQlQiLHVzZUdlbmVyYWxpemVkU2VyaWVzUGF0dGVybnM6ITF9O2Z1bmN0aW9uIHNLdCh0LGUsbil7Y29uc3QgaT1uZXcgckt0KGUpLHI9e307cmV0dXJuIG0kdCgiQWRkaW5nIG5vZGVzIiwzMCwoKCk9PntsZXQgZT17fSxuPXt9O0NlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzLCgodCxpKT0+e3QuZGV2aWNlJiYoZVt0LmRldmljZV09ITApLHQueGxhQ2x1c3RlciYmKG5bdC54bGFDbHVzdGVyXT0hMCl9KSksaS5kZXZpY2VzPUNlLmV4cG9ydHMua2V5cyhlKSxpLnhsYUNsdXN0ZXJzPUNlLmV4cG9ydHMua2V5cyhuKSwoZnVuY3Rpb24gcih0LGUpe2NvbnN0IG49e307Q2UuZXhwb3J0cy5lYWNoKGUubm9kZXMsKChlLGkpPT57bGV0IHI9WiR0KGUubmFtZSksbz10LnJvb3Q7by5kZXB0aD1NYXRoLm1heChyLmxlbmd0aCxvLmRlcHRoKSxuW2Uub3BdfHwobltlLm9wXT1bXSksbltlLm9wXS5wdXNoKGUpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGgmJihvLmRlcHRoPU1hdGgubWF4KG8uZGVwdGgsci5sZW5ndGgtaSksby5jYXJkaW5hbGl0eSs9ZS5jYXJkaW5hbGl0eSxvLm9wSGlzdG9ncmFtW2Uub3BdPShvLm9wSGlzdG9ncmFtW2Uub3BdfHwwKSsxLG51bGwhPWUuZGV2aWNlJiYoby5kZXZpY2VIaXN0b2dyYW1bZS5kZXZpY2VdPShvLmRldmljZUhpc3RvZ3JhbVtlLmRldmljZV18fDApKzEpLG51bGwhPWUueGxhQ2x1c3RlciYmKG8ueGxhQ2x1c3Rlckhpc3RvZ3JhbVtlLnhsYUNsdXN0ZXJdPShvLnhsYUNsdXN0ZXJIaXN0b2dyYW1bZS54bGFDbHVzdGVyXXx8MCkrMSksZS5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxLENlLmV4cG9ydHMuZWFjaChlLmluRW1iZWRkaW5ncywodD0+e3QuY29tcGF0aWJsZT9vLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6by5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxDZS5leHBvcnRzLmVhY2goZS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxfSkpLGkhPT1yLmxlbmd0aC0xKTtpKyspe2xldCBlPXJbaV0sYT10Lm5vZGUoZSk7aWYoIWEmJihhPXokdChlLHQuZ3JhcGhPcHRpb25zKSxhLnBhcmVudE5vZGU9byx0LnNldE5vZGUoZSxhKSxvLm1ldGFncmFwaC5zZXROb2RlKGUsYSksMD09PWUuaW5kZXhPZihUJHQpJiZvLm5hbWU9PT1FJHQpKXtjb25zdCBpPWUuc3Vic3RyaW5nKFQkdC5sZW5ndGgpO25baV18fChuW2ldPVtdKSx0LmxpYnJhcnlGdW5jdGlvbnNbaV09e25vZGU6YSx1c2FnZXM6bltpXX0sYS5hc3NvY2lhdGVkRnVuY3Rpb249aX1vPWF9dC5zZXROb2RlKGUubmFtZSxlKSxlLnBhcmVudE5vZGU9byxvLm1ldGFncmFwaC5zZXROb2RlKGUubmFtZSxlKSxDZS5leHBvcnRzLmVhY2goZS5pbkVtYmVkZGluZ3MsKGZ1bmN0aW9uKG4pe3Quc2V0Tm9kZShuLm5hbWUsbiksbi5wYXJlbnROb2RlPWV9KSksQ2UuZXhwb3J0cy5lYWNoKGUub3V0RW1iZWRkaW5ncywoZnVuY3Rpb24obil7dC5zZXROb2RlKG4ubmFtZSxuKSxuLnBhcmVudE5vZGU9ZX0pKX0pKX0pKGksdCl9KSxuLEJBdC5ISUVSQVJDSFlfQUREX05PREVTKS50aGVuKCgoKT0+bSR0KCJEZXRlY3Qgc2VyaWVzIiwzMCwoKCk9PntlLnNlcmllc05vZGVNaW5TaXplPjAmJmxLdChpLnJvb3QsaSxyLGUuc2VyaWVzTm9kZU1pblNpemUsZS5zZXJpZXNNYXAsZS51c2VHZW5lcmFsaXplZFNlcmllc1BhdHRlcm5zKX0pLG4sQkF0LkhJRVJBUkNIWV9ERVRFQ1RfU0VSSUVTKSkpLnRoZW4oKCgpPT5tJHQoIkFkZGluZyBlZGdlcyIsNDAsKCgpPT57IShmdW5jdGlvbiBlKHQsbixpKXtsZXQgcj10LmdldE5vZGVNYXAoKSxvPVtdLGE9W10scz0odCxlKT0+e2xldCBuPTA7Zm9yKDt0OyllW24rK109dC5uYW1lLHQ9dC5wYXJlbnROb2RlO3JldHVybiBuLTF9O0NlLmV4cG9ydHMuZWFjaChuLmVkZ2VzLChlPT57bGV0IGk9cyhuLm5vZGVzW2Uudl0sbyksbD1zKG4ubm9kZXNbZS53XSxhKTtpZigtMT09PWl8fC0xPT09bClyZXR1cm47Zm9yKDtvW2ldPT09YVtsXTspaWYoaS0tLGwtLSxpPDB8fGw8MCl0aHJvdyBFcnJvcigiTm8gZGlmZmVyZW5jZSBmb3VuZCBiZXR3ZWVuIGFuY2VzdG9yIHBhdGhzLiIpO2xldCBjPXJbb1tpKzFdXSx1PW9baV0saD1hW2xdLGQ9Yy5tZXRhZ3JhcGguZWRnZSh1LGgpO2R8fChkPUIkdCh1LGgpLGMubWV0YWdyYXBoLnNldEVkZ2UodSxoLGQpKSxjLmhhc05vbkNvbnRyb2xFZGdlc3x8ZS5pc0NvbnRyb2xEZXBlbmRlbmN5fHwoYy5oYXNOb25Db250cm9sRWRnZXM9ITApLGQuYWRkQmFzZUVkZ2UoZSx0KX0pKX0pKGksdCl9KSxuLEJBdC5ISUVSQVJDSFlfQUREX0VER0VTKSkpLnRoZW4oKCgpPT5pKSl9ZnVuY3Rpb24gbEt0KHQsZSxuLGkscixvKXtsZXQgYT10Lm1ldGFncmFwaDtDZS5leHBvcnRzLmVhY2goYS5ub2RlcygpLCh0PT57bGV0IHM9YS5ub2RlKHQpO3MudHlwZT09PUEkdC5NRVRBJiZsS3QocyxlLG4saSxyLG8pfSkpO2xldCBzPShmdW5jdGlvbiBsKHQpe2xldCBlPXt9O3JldHVybiBDZS5leHBvcnRzLnJlZHVjZSh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkudHlwZT09PUEkdC5NRVRBKXJldHVybiBlO2xldCByPWkub3A7cmV0dXJuIHImJihlW3JdPWVbcl18fFtdLGVbcl0ucHVzaChpLm5hbWUpKSxlfSksZSl9KShhKTtsZXQgYz0obz91S3Q6Y0t0KShzLGEsZS5ncmFwaE9wdGlvbnMpO0NlLmV4cG9ydHMuZWFjaChjLChmdW5jdGlvbih0LHIpe2xldCBvPXQubWV0YWdyYXBoLm5vZGVzKCk7Q2UuZXhwb3J0cy5lYWNoKG8sKHQ9PntsZXQgZT1hLm5vZGUodCk7ZS5vd25pbmdTZXJpZXN8fChlLm93bmluZ1Nlcmllcz1yKX0pKSxvLmxlbmd0aDxpJiZlLmdldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUpPT09UCR0LkdST1VQJiZlLnNldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUsUCR0LlVOR1JPVVApLGUuZ2V0U2VyaWVzR3JvdXBUeXBlKHQubmFtZSkhPT1QJHQuVU5HUk9VUCYmKGUuc2V0Tm9kZShyLHQpLGEuc2V0Tm9kZShyLHQpLENlLmV4cG9ydHMuZWFjaChvLChlPT57bGV0IGk9YS5ub2RlKGUpO3QubWV0YWdyYXBoLnNldE5vZGUoZSxpKSx0LnBhcmVudE5vZGU9aS5wYXJlbnROb2RlLHQuY2FyZGluYWxpdHkrKyxudWxsIT1pLmRldmljZSYmKHQuZGV2aWNlSGlzdG9ncmFtW2kuZGV2aWNlXT0odC5kZXZpY2VIaXN0b2dyYW1baS5kZXZpY2VdfHwwKSsxKSxudWxsIT1pLnhsYUNsdXN0ZXImJih0LnhsYUNsdXN0ZXJIaXN0b2dyYW1baS54bGFDbHVzdGVyXT0odC54bGFDbHVzdGVySGlzdG9ncmFtW2kueGxhQ2x1c3Rlcl18fDApKzEpLGkuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMSxDZS5leHBvcnRzLmVhY2goaS5pbkVtYmVkZGluZ3MsKGU9PntlLmNvbXBhdGlibGU/dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOnQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSksQ2UuZXhwb3J0cy5lYWNoKGkub3V0RW1iZWRkaW5ncywoZT0+e2UuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxpLnBhcmVudE5vZGU9dCxuW2VdPXIsYS5yZW1vdmVOb2RlKGUpfSkpKX0pKX1mdW5jdGlvbiBjS3QodCxlLG4pe2xldCBpPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2godCwoZnVuY3Rpb24odCxyKXtpZih0Lmxlbmd0aDw9MSlyZXR1cm47bGV0IG89e307Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9IioiPT09dC5jaGFyQXQodC5sZW5ndGgtMSksaT10LnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLGE9aS5zbGljZSgwLGkubGVuZ3RoLTEpLmpvaW4oIi8iKSxzPXIubWF0Y2goL14oXEQqKShcZCspJC8pO2xldCBsLGMsdT0iIjtzPyhsPXNbMV0sYz1zWzJdKToobD1lP3Iuc3Vic3RyKDAsci5sZW5ndGgtMSk6cixjPTAsdT1lPyIqIjoiIik7Y29uc3QgaD1WJHQobCx1LGEpO29baF09b1toXXx8W107Y29uc3QgZD1GJHQobCx1LGEsK2MsdCxuKTtvW2hdLnB1c2goZCl9KSksQ2UuZXhwb3J0cy5lYWNoKG8sKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oaEt0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9aEt0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gdUt0KHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gQ2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQscil7aWYodC5sZW5ndGg8PTEpcmV0dXJuO2xldCBvPXt9LGE9e307Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2xldCBlPSIqIj09PXQuY2hhckF0KHQubGVuZ3RoLTEpLGk9dC5zcGxpdCgiLyIpLHI9aVtpLmxlbmd0aC0xXSxzPWkuc2xpY2UoMCxpLmxlbmd0aC0xKS5qb2luKCIvIik7Y29uc3QgbD0vKFxkKykvZztsZXQgYyx1LGgsZCxwLGY9MDtmb3IoO2M9bC5leGVjKHIpOykrK2YsdT1yLnNsaWNlKDAsYy5pbmRleCksaD1jWzBdLGQ9ci5zbGljZShjLmluZGV4K2NbMF0ubGVuZ3RoKSxwPVYkdCh1LGQscyksb1twXT1vW3BdLG9bcF18fChvW3BdPUYkdCh1LGQscywraCx0LG4pKSxvW3BdLmlkcy5wdXNoKGgpLGFbdF09YVt0XXx8W10sYVt0XS5wdXNoKFtwLGhdKTtmPDEmJih1PWU/ci5zdWJzdHIoMCxyLmxlbmd0aC0xKTpyLGg9MCxkPWU/IioiOiIiLHA9ViR0KHUsZCxzKSxvW3BdPW9bcF0sb1twXXx8KG9bcF09RiR0KHUsZCxzLCtoLHQsbikpLG9bcF0uaWRzLnB1c2goaCksYVt0XT1hW3RdfHxbXSxhW3RdLnB1c2goW3AsaF0pKX0pKTt2YXIgcz17fTtDZS5leHBvcnRzLmVhY2goYSwoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZVswXV0uaWRzLmxlbmd0aC1vW3RbMF1dLmlkcy5sZW5ndGh9KSk7dmFyIGk9dFswXVswXSxyPXRbMF1bMV07c1tpXT1zW2ldfHxbXTtjb25zdCBhPWUuc3BsaXQoIi8iKSxsPWEuc2xpY2UoMCxhLmxlbmd0aC0xKS5qb2luKCIvIik7dmFyIGM9RiR0KG9baV0ucHJlZml4LG9baV0uc3VmZml4LGwsK3IsZSxuKTtzW2ldLnB1c2goYyl9KSksQ2UuZXhwb3J0cy5lYWNoKHMsKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oaEt0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9aEt0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gaEt0KHQsZSxuLGkscil7aWYodC5sZW5ndGg+MSl7bGV0IG89ViR0KHRbMF0ucHJlZml4LHRbMF0uc3VmZml4LHRbMF0ucGFyZW50LHRbMF0uY2x1c3RlcklkLHRbdC5sZW5ndGgtMV0uY2x1c3RlcklkKSxhPUYkdCh0WzBdLnByZWZpeCx0WzBdLnN1ZmZpeCx0WzBdLnBhcmVudCxuLG8scik7Q2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2EuaWRzLnB1c2godC5jbHVzdGVySWQpLGEubWV0YWdyYXBoLnNldE5vZGUodC5uYW1lLGkubm9kZSh0Lm5hbWUpKX0pKSxlW29dPWF9fWxldCBkS3Q9IiNmZmZmZmYiLHBLdD0iI2IyYjJiMiIsZkt0PSIjMGY5ZDU4IixtS3Q9IiNkYjQ0MzciLGdLdD17REVGQVVMVF9GSUxMOiIjZDlkOWQ5IixERUZBVUxUX1NUUk9LRToiI2E2YTZhNiIsU0FUVVJBVElPTjouNixMSUdIVE5FU1M6Ljg1LEVYUEFOREVEX0NPTE9SOiIjZjBmMGYwIixIVUVTOlsyMjAsMTAwLDE4MCw0MCwyMCwzNDAsMjYwLDMwMCwxNDAsNjBdLFNUUlVDVFVSRV9QQUxFVFRFKHQsZSl7bGV0IG49Z0t0LkhVRVMsaT1uW3Qlbi5sZW5ndGhdLHI9TWF0aC5zaW4oaSpNYXRoLlBJLzM2MCk7cmV0dXJuIGNkKGksLjAxKihlPzMwOjkwLTYwKnIpLC4wMSooZT85NTo4MCkpLnRvU3RyaW5nKCl9LERFVklDRV9QQUxFVFRFOnQ9PmdLdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxYTEFfQ0xVU1RFUl9QQUxFVFRFOnQ9PmdLdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxVTktOT1dOOiIjZWVlIixHUkFESUVOVF9PVVRMSU5FOiIjODg4In0sX0t0PSJ3aGl0ZSIseUt0PSIjYjJiMmIyIjtjb25zdCB2S3Q9MTUsYkt0PTUseEt0PTQsd0t0PTQsU0t0PVsiTm9PcCJdLE1LdD1bXSxFS3Q9WyIjZmZmNWYwIiwiI2ZiNmE0YSJdLFRLdD01LENLdD1uZXcgUmVnRXhwKCJeKD86X19mdW5jdGlvbl9saWJyYXJ5X18pPyhcXHcrKV9bYS16MC05XXs4fSg/Ol9cXGQrKT8kIik7Y2xhc3MgQUt0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmhpZXJhcmNoeT10LHRoaXMuZGlzcGxheWluZ1N0YXRzPWUsdGhpcy5hdXRvRXh0cmFjdE5vZGVzPW4sdGhpcy5pbmRleD17fSx0aGlzLnJlbmRlcmVkT3BOYW1lcz1bXSx0aGlzLmNvbXB1dGVTY2FsZXMoKSx0aGlzLmhhc1N1YmhpZXJhcmNoeT17fSx0aGlzLnJvb3Q9bmV3IHpLdCh0LnJvb3QsdC5ncmFwaE9wdGlvbnMpLHRoaXMuaW5kZXhbdC5yb290Lm5hbWVdPXRoaXMucm9vdCx0aGlzLnJlbmRlcmVkT3BOYW1lcy5wdXNoKHQucm9vdC5uYW1lKSx0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KHQucm9vdC5uYW1lKSx0aGlzLnJvb3QuZXhwYW5kZWQ9ITAsdGhpcy50cmFjZUlucHV0cz0hMX1jb21wdXRlU2NhbGVzKCl7dGhpcy5kZXZpY2VDb2xvck1hcD1ZTSgpLmRvbWFpbih0aGlzLmhpZXJhcmNoeS5kZXZpY2VzKS5yYW5nZShDZS5leHBvcnRzLm1hcChLbCh0aGlzLmhpZXJhcmNoeS5kZXZpY2VzLmxlbmd0aCksZ0t0LkRFVklDRV9QQUxFVFRFKSksdGhpcy54bGFDbHVzdGVyQ29sb3JNYXA9WU0oKS5kb21haW4odGhpcy5oaWVyYXJjaHkueGxhQ2x1c3RlcnMpLnJhbmdlKENlLmV4cG9ydHMubWFwKEtsKHRoaXMuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aCksZ0t0LlhMQV9DTFVTVEVSX1BBTEVUVEUpKTtsZXQgdD10aGlzLmhpZXJhcmNoeS5yb290Lm1ldGFncmFwaCxlPW9jKHQubm9kZXMoKSwoKGUsbik9PntsZXQgaT10Lm5vZGUoZSk7aWYobnVsbCE9aS5zdGF0cylyZXR1cm4gaS5zdGF0cy50b3RhbEJ5dGVzfSkpO3RoaXMubWVtb3J5VXNhZ2VTY2FsZT1jRSgpLmRvbWFpbihbMCxlXSkucmFuZ2UoRUt0KTtsZXQgbj1vYyh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKGUpO2lmKG51bGwhPWkuc3RhdHMpcmV0dXJuIGkuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKX0pKTt0aGlzLmNvbXB1dGVUaW1lU2NhbGU9Y0UoKS5kb21haW4oWzAsbl0pLnJhbmdlKEVLdCksdGhpcy5lZGdlV2lkdGhTaXplZEJhc2VkU2NhbGU9dGhpcy5oaWVyYXJjaHkuaGFzU2hhcGVJbmZvP3UkdDpjRSgpLmRvbWFpbihbMSx0aGlzLmhpZXJhcmNoeS5tYXhNZXRhRWRnZVNpemVdKS5yYW5nZShbYyR0LDEyXSl9Z2V0UmVuZGVyTm9kZUJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5pbmRleFt0XX1nZXROb2RlQnlOYW1lKHQpe3JldHVybiB0aGlzLmhpZXJhcmNoeS5ub2RlKHQpfWNvbG9ySGlzdG9ncmFtKHQsZSl7aWYoT2JqZWN0LmtleXModCkubGVuZ3RoPjApe2NvbnN0IG49Q2UuZXhwb3J0cy5zdW0oT2JqZWN0LmtleXModCkubWFwKChlPT50W2VdKSkpO3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoKGk9Pih7Y29sb3I6ZShpKSxwcm9wb3J0aW9uOnRbaV0vbn0pKSl9cmV0dXJuIG51bGx9Z2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5pbmRleClyZXR1cm4gdGhpcy5pbmRleFt0XTtsZXQgZT10aGlzLmhpZXJhcmNoeS5ub2RlKHQpO2lmKCFlKXJldHVybiBudWxsO2xldCBuPWUuaXNHcm91cE5vZGU/bmV3IHpLdChlLHRoaXMuaGllcmFyY2h5LmdyYXBoT3B0aW9ucyk6bmV3IElLdChlKTt0aGlzLmluZGV4W3RdPW4sdGhpcy5yZW5kZXJlZE9wTmFtZXMucHVzaCh0KSxlLnN0YXRzJiYobi5tZW1vcnlDb2xvcj10aGlzLm1lbW9yeVVzYWdlU2NhbGUoZS5zdGF0cy50b3RhbEJ5dGVzKSxuLmNvbXB1dGVUaW1lQ29sb3I9dGhpcy5jb21wdXRlVGltZVNjYWxlKGUuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKSkpLG4uaXNGYWRlZE91dD10aGlzLmRpc3BsYXlpbmdTdGF0cyYmIWIkdChlLnN0YXRzKTt2YXIgaT1udWxsLHI9bnVsbCxvPW51bGw7aWYoZS5pc0dyb3VwTm9kZSl7aT1lLmRldmljZUhpc3RvZ3JhbSxyPWUueGxhQ2x1c3Rlckhpc3RvZ3JhbTtsZXQgdD1lLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZSxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU7MD09dCYmMD09bnx8KG89dC8odCtuKSl9ZWxzZXtsZXQgdD1uLm5vZGUuZGV2aWNlO3QmJihpPXtbdF06MX0pO2xldCBlPW4ubm9kZS54bGFDbHVzdGVyO2UmJihyPXtbZV06MX0pLG4ubm9kZS50eXBlPT09QSR0Lk9QJiYobz1uLm5vZGUuY29tcGF0aWJsZT8xOjApfXJldHVybiBpJiYobi5kZXZpY2VDb2xvcnM9dGhpcy5jb2xvckhpc3RvZ3JhbShpLHRoaXMuZGV2aWNlQ29sb3JNYXApKSxyJiYobi54bGFDbHVzdGVyQ29sb3JzPXRoaXMuY29sb3JIaXN0b2dyYW0ocix0aGlzLnhsYUNsdXN0ZXJDb2xvck1hcCkpLG51bGwhPW8mJihuLmNvbXBhdGliaWxpdHlDb2xvcnM9W3tjb2xvcjpmS3QscHJvcG9ydGlvbjpvfSx7Y29sb3I6bUt0LHByb3BvcnRpb246MS1vfV0pLHRoaXMuaW5kZXhbdF19Z2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KXtsZXQgZT1aJHQodCksbj0wLGk9bnVsbCxyPXQ7Zm9yKDtuPGUubGVuZ3RoJiYocj1lW25dLGk9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKHIpLGkuZXhwYW5kZWQpO24rKyk7aWYobj09ZS5sZW5ndGgtMil7bGV0IHQ9ZVtuKzFdO2lmKGkuaW5Bbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHQ7aWYoaS5vdXRBbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHR9cmV0dXJuIHJ9c2V0RGVwdGgodCl7REt0KHRoaXMucm9vdCwrdCl9aXNOb2RlQXV4aWxpYXJ5KHQpe2xldCBlPXRoaXMuZ2V0UmVuZGVyTm9kZUJ5TmFtZSh0Lm5vZGUucGFyZW50Tm9kZS5uYW1lKSxuPUNlLmV4cG9ydHMuZmluZChlLmlzb2xhdGVkSW5FeHRyYWN0LChlPT5lLm5vZGUubmFtZT09PXQubm9kZS5uYW1lKSk7cmV0dXJuISFufHwobj1DZS5leHBvcnRzLmZpbmQoZS5pc29sYXRlZE91dEV4dHJhY3QsKGU9PmUubm9kZS5uYW1lPT09dC5ub2RlLm5hbWUpKSwhIW4pfWdldE5hbWVzT2ZSZW5kZXJlZE9wcygpe3JldHVybiB0aGlzLnJlbmRlcmVkT3BOYW1lc31jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKHQsZSxuLGkpe2NvbnN0IHI9bi5uYW1lLnJlcGxhY2UoZSxpKTtsZXQgbz10Lm1ldGFncmFwaC5ub2RlKHIpO2lmKG8pcmV0dXJuIG87bz1uZXcgTyR0KHtuYW1lOnIsaW5wdXQ6W10sZGV2aWNlOm4uZGV2aWNlLG9wOm4ub3AsYXR0cjpDZS5leHBvcnRzLmNsb25lRGVlcChuLmF0dHIpfSksby5jYXJkaW5hbGl0eT1uLmNhcmRpbmFsaXR5LG8uaW5jbHVkZT1uLmluY2x1ZGUsby5vdXRwdXRTaGFwZXM9Q2UuZXhwb3J0cy5jbG9uZURlZXAobi5vdXRwdXRTaGFwZXMpLG8ueGxhQ2x1c3Rlcj1uLnhsYUNsdXN0ZXIsby5mdW5jdGlvbklucHV0SW5kZXg9bi5mdW5jdGlvbklucHV0SW5kZXgsby5mdW5jdGlvbk91dHB1dEluZGV4PW4uZnVuY3Rpb25PdXRwdXRJbmRleCxvLmlucHV0cz1uLmlucHV0cy5tYXAoKHQ9Pntjb25zdCBuPUNlLmV4cG9ydHMuY2xvbmUodCk7cmV0dXJuIG4ubmFtZT10Lm5hbWUucmVwbGFjZShlLGkpLG59KSksby5wYXJlbnROb2RlPXQsdC5tZXRhZ3JhcGguc2V0Tm9kZShvLm5hbWUsbyksdGhpcy5oaWVyYXJjaHkuc2V0Tm9kZShvLm5hbWUsbyk7Y29uc3QgYT1uPT50aGlzLmNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUodCxlLG4saSk7cmV0dXJuIG8uaW5FbWJlZGRpbmdzPW4uaW5FbWJlZGRpbmdzLm1hcChhKSxvLm91dEVtYmVkZGluZ3M9bi5vdXRFbWJlZGRpbmdzLm1hcChhKSxvfWNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUodCxlLG4saSxyKXtjb25zdCBvPXt9LGE9dGhpcy5jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKTtyZXR1cm4gQ2UuZXhwb3J0cy5pc0VtcHR5KG8pfHx0aGlzLnBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKGUsbyksYX1jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKXtjb25zdCBhPXokdChuLm5hbWUucmVwbGFjZShpLHIpKTtyZXR1cm4gYS5kZXB0aD1uLmRlcHRoLGEuY2FyZGluYWxpdHk9bi5jYXJkaW5hbGl0eSxhLnRlbXBsYXRlSWQ9bi50ZW1wbGF0ZUlkLGEub3BIaXN0b2dyYW09Q2UuZXhwb3J0cy5jbG9uZShuLm9wSGlzdG9ncmFtKSxhLmRldmljZUhpc3RvZ3JhbT1DZS5leHBvcnRzLmNsb25lKG4uZGV2aWNlSGlzdG9ncmFtKSxhLnhsYUNsdXN0ZXJIaXN0b2dyYW09Q2UuZXhwb3J0cy5jbG9uZShuLnhsYUNsdXN0ZXJIaXN0b2dyYW0pLGEuaGFzTm9uQ29udHJvbEVkZ2VzPW4uaGFzTm9uQ29udHJvbEVkZ2VzLGEuaW5jbHVkZT1uLmluY2x1ZGUsYS5ub2RlQXR0cmlidXRlcz1DZS5leHBvcnRzLmNsb25lKG4ubm9kZUF0dHJpYnV0ZXMpLGEuYXNzb2NpYXRlZEZ1bmN0aW9uPW4uYXNzb2NpYXRlZEZ1bmN0aW9uLENlLmV4cG9ydHMuZWFjaChuLm1ldGFncmFwaC5ub2RlcygpLChzPT57Y29uc3QgbD1uLm1ldGFncmFwaC5ub2RlKHMpO3N3aXRjaChsLnR5cGUpe2Nhc2UgQSR0Lk1FVEE6Y29uc3Qgbj10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGVIZWxwZXIodCxlLGwsaSxyLG8pO24ucGFyZW50Tm9kZT1hLGEubWV0YWdyYXBoLnNldE5vZGUobi5uYW1lLG4pLHRoaXMuaGllcmFyY2h5LnNldE5vZGUobi5uYW1lLG4pO2JyZWFrO2Nhc2UgQSR0Lk9QOmNvbnN0IHM9dGhpcy5jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKGEsaSxsLHIpO0NlLmV4cG9ydHMuaXNOdW1iZXIocy5mdW5jdGlvbklucHV0SW5kZXgpJiZ0aGlzLnBhdGNoRWRnZXNJbnRvRnVuY3Rpb25JbnB1dHMoZSxzKSxDZS5leHBvcnRzLmlzTnVtYmVyKHMuZnVuY3Rpb25PdXRwdXRJbmRleCkmJihvW3MuZnVuY3Rpb25PdXRwdXRJbmRleF09cyk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4obC5uYW1lKyIgaXMgb2RkbHkgbmVpdGhlciBhIG1ldGFub2RlIG5vciBhbiBvcG5vZGUuIil9fSkpLHRoaXMuY2xvbmVMaWJyYXJ5TWV0YW5vZGVFZGdlcyhuLGEsaSxyKSxhfWNsb25lTGlicmFyeU1ldGFub2RlRWRnZXModCxlLG4saSl7Q2UuZXhwb3J0cy5lYWNoKHQubWV0YWdyYXBoLmVkZ2VzKCksKHI9Pntjb25zdCBvPXQubWV0YWdyYXBoLmVkZ2UociksYT1vLnYucmVwbGFjZShuLGkpLHM9by53LnJlcGxhY2UobixpKSxsPW5ldyBIJHQoYSxzKTtsLmluYm91bmQ9by5pbmJvdW5kLGwubnVtUmVndWxhckVkZ2VzPW8ubnVtUmVndWxhckVkZ2VzLGwubnVtQ29udHJvbEVkZ2VzPW8ubnVtQ29udHJvbEVkZ2VzLGwubnVtUmVmRWRnZXM9by5udW1SZWZFZGdlcyxsLnRvdGFsU2l6ZT1vLnRvdGFsU2l6ZSxvLmJhc2VFZGdlTGlzdCYmKGwuYmFzZUVkZ2VMaXN0PW8uYmFzZUVkZ2VMaXN0Lm1hcCgodD0+e2NvbnN0IGU9Q2UuZXhwb3J0cy5jbG9uZSh0KTtyZXR1cm4gZS52PXQudi5yZXBsYWNlKG4saSksZS53PXQudy5yZXBsYWNlKG4saSksZX0pKSksZS5tZXRhZ3JhcGgubm9kZShzKT9lLm1ldGFncmFwaC5zZXRFZGdlKGEscyxsKTplLm1ldGFncmFwaC5zZXRFZGdlKHMsYSxsKX0pKX1wYXRjaEVkZ2VzSW50b0Z1bmN0aW9uSW5wdXRzKHQsZSl7bGV0IG49TWF0aC5taW4oZS5mdW5jdGlvbklucHV0SW5kZXgsdC5pbnB1dHMubGVuZ3RoLTEpLGk9Q2UuZXhwb3J0cy5jbG9uZSh0LmlucHV0c1tuXSk7Zm9yKDtpLmlzQ29udHJvbERlcGVuZGVuY3k7KW4rKyxpPXQuaW5wdXRzW25dO2UuaW5wdXRzLnB1c2goaSk7Y29uc3Qgcj10aGlzLmhpZXJhcmNoeS5nZXRQcmVkZWNlc3NvcnModC5uYW1lKTtsZXQgbyxhPTA7Q2UuZXhwb3J0cy5lYWNoKHIucmVndWxhciwodD0+e2lmKGErPXQubnVtUmVndWxhckVkZ2VzLGE+bilyZXR1cm4gbz10LCExfSkpLENlLmV4cG9ydHMuZWFjaChvLmJhc2VFZGdlTGlzdCwobj0+e24udz09PXQubmFtZSYmKG4udz1lLm5hbWUpLG4udj09PXQubmFtZSYmKG4udj1lLm5hbWUpfSkpfXBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKHQsZSl7Y29uc3Qgbj10aGlzLmhpZXJhcmNoeS5nZXRTdWNjZXNzb3JzKHQubmFtZSk7Q2UuZXhwb3J0cy5lYWNoKG4ucmVndWxhciwobj0+e0NlLmV4cG9ydHMuZWFjaChuLmJhc2VFZGdlTGlzdCwobj0+e2NvbnN0IGk9dGhpcy5oaWVyYXJjaHkubm9kZShuLncpO0NlLmV4cG9ydHMuZWFjaChpLmlucHV0cywoaT0+e2lmKGkubmFtZT09PXQubmFtZSl7aS5uYW1lPWVbaS5vdXRwdXRUZW5zb3JLZXldLm5hbWUsaS5vdXRwdXRUZW5zb3JLZXk9bi5vdXRwdXRUZW5zb3JLZXl9fSkpfSkpLENlLmV4cG9ydHMuZWFjaChuLmJhc2VFZGdlTGlzdCwodD0+e3Qudj1lW3Qub3V0cHV0VGVuc29yS2V5XS5uYW1lLHQub3V0cHV0VGVuc29yS2V5PSIwIn0pKX0pKX1idWlsZFN1YmhpZXJhcmNoeSh0KXtpZih0IGluIHRoaXMuaGFzU3ViaGllcmFyY2h5KXJldHVybjt0aGlzLmhhc1N1YmhpZXJhcmNoeVt0XT0hMDtsZXQgZT10aGlzLmluZGV4W3RdO2lmKGUubm9kZS50eXBlIT09QSR0Lk1FVEEmJmUubm9kZS50eXBlIT09QSR0LlNFUklFUylyZXR1cm47bGV0IG49ZSxpPW4ubm9kZS5tZXRhZ3JhcGgscj1uLmNvcmVHcmFwaDtjb25zdCBvPVtdLGE9W107Q2UuZXhwb3J0cy5pc0VtcHR5KHRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnMpfHwoQ2UuZXhwb3J0cy5lYWNoKGkubm9kZXMoKSwodD0+e2NvbnN0IGU9aS5ub2RlKHQpLG49dGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9uc1tlLm9wXTtpZighbilyZXR1cm47aWYoMD09PXQuaW5kZXhPZihUJHQpKXJldHVybjtjb25zdCByPXRoaXMuY2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZShpLGUsbi5ub2RlLG4ubm9kZS5uYW1lLGUubmFtZSk7by5wdXNoKGUpLGEucHVzaChyKX0pKSxDZS5leHBvcnRzLmVhY2goYSwoKHQsZSk9Pntjb25zdCBuPW9bZV07dC5wYXJlbnROb2RlPW4ucGFyZW50Tm9kZSxpLnNldE5vZGUobi5uYW1lLHQpLHRoaXMuaGllcmFyY2h5LnNldE5vZGUobi5uYW1lLHQpfSkpKSxDZS5leHBvcnRzLmVhY2goaS5ub2RlcygpLCh0PT57bGV0IGU9dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCksbj1lLm5vZGU7ci5zZXROb2RlKHQsZSksbi5pc0dyb3VwTm9kZXx8KENlLmV4cG9ydHMuZWFjaChuLmluRW1iZWRkaW5ncywodD0+e2xldCBuPW5ldyBOS3QobnVsbCksaT1uZXcgSUt0KHQpO1JLdChlLHQsaSxuLFBLdC5DT05TVEFOVCksdGhpcy5pbmRleFt0Lm5hbWVdPWl9KSksQ2UuZXhwb3J0cy5lYWNoKG4ub3V0RW1iZWRkaW5ncywodD0+e2xldCBuPW5ldyBOS3QobnVsbCksaT1uZXcgSUt0KHQpO09LdChlLHQsaSxuLFBLdC5TVU1NQVJZKSx0aGlzLmluZGV4W3QubmFtZV09aX0pKSl9KSksQ2UuZXhwb3J0cy5lYWNoKGkuZWRnZXMoKSwodD0+e2xldCBlPWkuZWRnZSh0KSxuPW5ldyBOS3QoZSk7bi5pc0ZhZGVkT3V0PXRoaXMuaW5kZXhbdC52XS5pc0ZhZGVkT3V0fHx0aGlzLmluZGV4W3Qud10uaXNGYWRlZE91dCxyLnNldEVkZ2UodC52LHQudyxuKX0pKSxuLm5vZGUudHlwZT09PUEkdC5NRVRBJiYoZnVuY3Rpb24gcyh0LGUpeyhmdW5jdGlvbiBuKHQpe2xldCBlPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChlLm5vZGVzKCksKG49PntlLm5vZGUobikubm9kZS5pbmNsdWRlIT09ayR0LkVYQ0xVREV8fG4uc3RhcnRzV2l0aChUJHQpfHwodC5jb3JlR3JhcGgub3V0RWRnZXMobikubGVuZ3RoPnQuY29yZUdyYXBoLmluRWRnZXMobikubGVuZ3RoP0hLdCh0LG4pOkZLdCh0LG4pKX0pKX0pKHQpLFNLdC5sZW5ndGgmJihmdW5jdGlvbiBpKHQpe2xldCBlPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChlLm5vZGVzKCksKG49PntsZXQgaT1lLm5vZGUobik7aS5ub2RlLmluY2x1ZGU9PT1rJHQuVU5TUEVDSUZJRUQmJlZLdChpLm5vZGUsU0t0KSYmSEt0KHQsbil9KSl9KSh0KTtNS3QubGVuZ3RoJiYoZnVuY3Rpb24gcih0KXtsZXQgZT10LmNvcmVHcmFwaDtDZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLChuPT57bGV0IGk9ZS5ub2RlKG4pO2kubm9kZS5pbmNsdWRlPT09ayR0LlVOU1BFQ0lGSUVEJiZWS3QoaS5ub2RlLE1LdCkmJkZLdCh0LG4pfSkpfSkodCk7ZSYmKGZ1bmN0aW9uIG8odCl7bGV0IGU9dC5jb3JlR3JhcGgsbj17fSxpPXt9LHI9MDtpZihDZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLCh0PT57aWYoZS5ub2RlKHQpLm5vZGUuaW5jbHVkZSE9PWskdC5VTlNQRUNJRklFRClyZXR1cm47bGV0IG89Q2UuZXhwb3J0cy5yZWR1Y2UoZS5wcmVkZWNlc3NvcnModCksKChuLGkpPT5uKyhlLmVkZ2UoaSx0KS5tZXRhZWRnZS5udW1SZWd1bGFyRWRnZXM/MTowKSksMCk7MD09PW8mJmUucHJlZGVjZXNzb3JzKHQpLmxlbmd0aD4wJiYobz1lLnByZWRlY2Vzc29ycyh0KS5sZW5ndGgpO2xldCBhPUNlLmV4cG9ydHMucmVkdWNlKGUuc3VjY2Vzc29ycyh0KSwoKG4saSk9Pm4rKGUuZWRnZSh0LGkpLm1ldGFlZGdlLm51bVJlZ3VsYXJFZGdlcz8xOjApKSwwKTswPT09YSYmZS5zdWNjZXNzb3JzKHQpLmxlbmd0aD4wJiYoYT1lLnN1Y2Nlc3NvcnModCkubGVuZ3RoKSxuW3RdPW8saVt0XT1hLHIrK30pKSxyPHZLdClyZXR1cm47bGV0IG89Ykt0LTEsYT1NYXRoLnJvdW5kKC43NSpyKSxzPU1hdGgucm91bmQoLjI1KnIpLGw9T2JqZWN0LmtleXMobikuc29ydCgoKHQsZSk9Pm5bdF0tbltlXSkpLGM9bltsW2FdXSx1PWMrYy1uW2xbc11dO3U9TWF0aC5tYXgodSxvKTtmb3IobGV0IGU9ci0xO25bbFtlXV0+dTtlLS0pRkt0KHQsbFtlXSk7bGV0IGg9T2JqZWN0LmtleXMoaSkuc29ydCgoKHQsZSk9PmlbdF0taVtlXSkpLGQ9aVtoW2FdXSxwPWQrNCooZC1pW2hbc11dKTtwPU1hdGgubWF4KHAsbyk7Zm9yKGxldCBuPXItMTtpW2hbbl1dPnA7bi0tKXtsZXQgaT1lLm5vZGUoaFtuXSk7aSYmIWkuaXNJbkV4dHJhY3QmJkhLdCh0LGhbbl0pfX0pKHQpOyEoZnVuY3Rpb24gYSh0KXtsZXQgZT10LmNvcmVHcmFwaCxuPXt9O0NlLmV4cG9ydHMuZWFjaChlLmVkZ2VzKCksKHQ9PntlLmVkZ2UodCkubWV0YWVkZ2UubnVtUmVndWxhckVkZ2VzfHwoKG5bdC52XT1uW3Qudl18fFtdKS5wdXNoKHQpLChuW3Qud109blt0LnddfHxbXSkucHVzaCh0KSl9KSksQ2UuZXhwb3J0cy5lYWNoKG4sKCh0LG4pPT57dC5sZW5ndGg+eEt0JiZDZS5leHBvcnRzLmVhY2godCwodD0+Qkt0KGUsdC52LHQudykpKX0pKX0pKHQpO2xldCBzPXQuY29yZUdyYXBoO0NlLmV4cG9ydHMuZWFjaChzLm5vZGVzKCksKGU9PntsZXQgbj1zLm5vZGUoZSksaT1zLm5laWdoYm9ycyhlKS5sZW5ndGg7aWYobi5ub2RlLmluY2x1ZGU9PT1rJHQuVU5TUEVDSUZJRUQmJjA9PT1pKXtsZXQgaT1uLm91dEFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAscj1uLmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MDtuLmlzSW5FeHRyYWN0Pyh0Lmlzb2xhdGVkSW5FeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKTpuLmlzT3V0RXh0cmFjdD8odC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpOmkmJiFyPyhuLmlzSW5FeHRyYWN0PSEwLHQuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpOnImJiFpJiYobi5pc091dEV4dHJhY3Q9ITAsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChuKSxuLm5vZGUuaW5jbHVkZT1rJHQuRVhDTFVERSxzLnJlbW92ZU5vZGUoZSkpfX0pKX0pKG4sdGhpcy5hdXRvRXh0cmFjdE5vZGVzKSxDZS5leHBvcnRzLmlzRW1wdHkodGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9ucyl8fHRoaXMuYnVpbGRTdWJoaWVyYXJjaGllc0Zvck5lZWRlZEZ1bmN0aW9ucyhpKSx0PT09RSR0JiZDZS5leHBvcnRzLmZvck93bih0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zLCgodCxlKT0+e2NvbnN0IGk9dC5ub2RlLG89dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtuLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LnB1c2gobyksby5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUsci5yZW1vdmVOb2RlKGkubmFtZSl9KSk7bGV0IGw9bi5ub2RlLnBhcmVudE5vZGU7aWYoIWwpcmV0dXJuO2xldCBjPXRoaXMuaW5kZXhbbC5uYW1lXSx1PSh0LC4uLmUpPT5lLmNvbmNhdChbdD8iSU4iOiJPVVQiXSkuam9pbigifn4iKSxoPXRoaXMuaGllcmFyY2h5LmdldEJyaWRnZWdyYXBoKHQpLGQ9e2luOnt9LG91dDp7fSxjb250cm9sOnt9fTtDZS5leHBvcnRzLmVhY2goaC5lZGdlcygpLCh0PT57bGV0IGU9ISFpLm5vZGUodC53KSxuPWU/dC52OnQudztoLmVkZ2UodCkubnVtUmVndWxhckVkZ2VzP2U/ZC5vdXRbbl09KGQub3V0W25dfHwwKSsxOmQuaW5bbl09KGQuaW5bbl18fDApKzE6ZC5jb250cm9sW25dPShkLmNvbnRyb2xbbl18fDApKzF9KSk7bGV0IHA9dGhpcy5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO0NlLmV4cG9ydHMuZWFjaChoLmVkZ2VzKCksKG49PntsZXQgbz1oLmVkZ2UobiksYT0hIWkubm9kZShuLncpLFtzLGZdPWE/W24udyxuLnZdOltuLnYsbi53XSxtPXRoaXMuaW5kZXhbc10sZz10aGlzLmluZGV4W2ZdLF89Zz9nLm5vZGU6cFtmXSx5PSFvLm51bVJlZ3VsYXJFZGdlcyYmZC5jb250cm9sW2ZdPnhLdCxbLHZdPWE/W2UuaW5Bbm5vdGF0aW9ucyxtLmluQW5ub3RhdGlvbnNdOltlLm91dEFubm90YXRpb25zLG0ub3V0QW5ub3RhdGlvbnNdLGI9bnVsbCx4PSExO2lmKCEoKGE/ZC5vdXQ6ZC5pbilbZl0+d0t0KSYmIXkmJm0uaXNJbkNvcmUoKSl7bGV0IGU9ZT0+Yy5jb3JlR3JhcGguZWRnZShhP3t2OmUsdzp0fTp7djp0LHc6ZX0pO2I9ZShmKSxifHwoYj1lKHUoYSxmLGwubmFtZSkpKSx4PSEhYn1sZXQgdz0hMTtpZihiJiYhby5udW1SZWd1bGFyRWRnZXMpe2xldCB0PWIsZT1jLm5vZGU7Zm9yKDt0LmFkam9pbmluZ01ldGFlZGdlOyl0PXQuYWRqb2luaW5nTWV0YWVkZ2UsZT1lLnBhcmVudE5vZGU7bGV0IG49dGhpcy5oaWVyYXJjaHkuZ2V0VG9wb2xvZ2ljYWxPcmRlcmluZyhlLm5hbWUpLGk9dC5tZXRhZWRnZTt3PW5baS52XT5uW2kud119aWYoeD14JiYhdywheClyZXR1cm4gdm9pZCB2LnB1c2gobmV3IGtLdChfLGcsbmV3IE5LdChvKSxQS3QuU0hPUlRDVVQsYSkpO2xldCBTPXUoYSx0KSxNPXUoYSxmLHQpLEU9ci5ub2RlKE0pO2lmKCFFKXtsZXQgdD1yLm5vZGUoUyk7aWYoIXQpe3Q9bmV3IElLdCh7bmFtZTpTLHR5cGU6QSR0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eTowLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6ayR0LlVOU1BFQ0lGSUVELGluYm91bmQ6YSxub2RlQXR0cmlidXRlczp7fX0pLHRoaXMuaW5kZXhbU109dCxyLnNldE5vZGUoUyx0KX1FPW5ldyBJS3Qoe25hbWU6TSx0eXBlOkEkdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOmskdC5VTlNQRUNJRklFRCxpbmJvdW5kOmEsbm9kZUF0dHJpYnV0ZXM6e319KSx0aGlzLmluZGV4W01dPUUsci5zZXROb2RlKE0sRSksci5zZXRQYXJlbnQoTSxTKSx0Lm5vZGUuY2FyZGluYWxpdHkrK31sZXQgVD1uZXcgTkt0KG8pO1QuYWRqb2luaW5nTWV0YWVkZ2U9YixhP3Iuc2V0RWRnZShNLHMsVCk6ci5zZXRFZGdlKHMsTSxUKX0pKSxDZS5leHBvcnRzLmVhY2goWyEwLCExXSwoZT0+e2xldCBuPXUoZSx0KSxpPXIubm9kZShuKTtpJiZDZS5leHBvcnRzLmVhY2goci5ub2RlcygpLChvPT57aWYoci5ub2RlKG8pLm5vZGUudHlwZT09PUEkdC5CUklER0UpcmV0dXJuO2lmKCEoZT8hci5wcmVkZWNlc3NvcnMobykubGVuZ3RoOiFyLnN1Y2Nlc3NvcnMobykubGVuZ3RoKSlyZXR1cm47bGV0IGE9dShlLHQsIlNUUlVDVFVSQUxfVEFSR0VUIikscz1yLm5vZGUoYSk7aWYoIXMpe3M9bmV3IElLdCh7bmFtZTphLHR5cGU6QSR0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eToxLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6ayR0LlVOU1BFQ0lGSUVELGluYm91bmQ6ZSxub2RlQXR0cmlidXRlczp7fX0pLHMuc3RydWN0dXJhbD0hMCx0aGlzLmluZGV4W2FdPXMsci5zZXROb2RlKGEscyksaS5ub2RlLmNhcmRpbmFsaXR5Kyssci5zZXRQYXJlbnQoYSxuKX1sZXQgbD1uZXcgTkt0KG51bGwpO2wuc3RydWN0dXJhbD0hMCxsLndlaWdodC0tLGU/ci5zZXRFZGdlKGEsbyxsKTpyLnNldEVkZ2UobyxhLGwpfSkpfSkpfWJ1aWxkU3ViaGllcmFyY2hpZXNGb3JOZWVkZWRGdW5jdGlvbnModCl7Q2UuZXhwb3J0cy5lYWNoKHQuZWRnZXMoKSwoZT0+e2xldCBuPXQuZWRnZShlKSxpPW5ldyBOS3Qobik7Q2UuZXhwb3J0cy5mb3JFYWNoKGkubWV0YWVkZ2UuYmFzZUVkZ2VMaXN0LCh0PT57Y29uc3QgZT10LnYuc3BsaXQoTSR0KTtmb3IobGV0IHQ9ZS5sZW5ndGg7dD49MDt0LS0pe2NvbnN0IG49ZS5zbGljZSgwLHQpLGk9dGhpcy5oaWVyYXJjaHkubm9kZShuLmpvaW4oTSR0KSk7aWYoaSl7aWYoaS50eXBlPT09QSR0Lk9QJiZ0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zW2kub3BdKWZvcihsZXQgdD0xO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uc2xpY2UoMCx0KS5qb2luKE0kdCk7ZSYmdGhpcy5idWlsZFN1YmhpZXJhcmNoeShlKX1icmVha319fSkpfSkpfX1jbGFzcyBrS3R7Y29uc3RydWN0b3IodCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLnJlbmRlck5vZGVJbmZvPWUsdGhpcy5yZW5kZXJNZXRhZWRnZUluZm89bix0aGlzLmFubm90YXRpb25UeXBlPWksdGhpcy5keD0wLHRoaXMuZHk9MCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCxuJiZuLm1ldGFlZGdlJiYodGhpcy52PW4ubWV0YWVkZ2Uudix0aGlzLnc9bi5tZXRhZWRnZS53KSx0aGlzLmlzSW49cix0aGlzLnBvaW50cz1bXX19dmFyIFBLdDshKGZ1bmN0aW9uKHQpe3RbdC5TSE9SVENVVD0wXT0iU0hPUlRDVVQiLHRbdC5DT05TVEFOVD0xXT0iQ09OU1RBTlQiLHRbdC5TVU1NQVJZPTJdPSJTVU1NQVJZIix0W3QuRUxMSVBTSVM9M109IkVMTElQU0lTIn0pKFBLdHx8KFBLdD17fSkpO2NsYXNzIExLdHtjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdD1bXSx0aGlzLm5vZGVOYW1lcz17fX1wdXNoKHQpe2lmKHQubm9kZS5uYW1lIGluIHRoaXMubm9kZU5hbWVzKXJldHVybjtpZih0aGlzLm5vZGVOYW1lc1t0Lm5vZGUubmFtZV09ITAsdGhpcy5saXN0Lmxlbmd0aDxUS3QpcmV0dXJuIHZvaWQgdGhpcy5saXN0LnB1c2godCk7bGV0IGU9dGhpcy5saXN0W3RoaXMubGlzdC5sZW5ndGgtMV07aWYoZS5hbm5vdGF0aW9uVHlwZT09PVBLdC5FTExJUFNJUyl7bGV0IHQ9ZS5ub2RlO3JldHVybiB2b2lkIHQuc2V0TnVtTW9yZU5vZGVzKCsrdC5udW1Nb3JlTm9kZXMpfWxldCBuPW5ldyBSJHQoMSk7dGhpcy5saXN0LnB1c2gobmV3IGtLdChuLG5ldyBJS3QobiksbnVsbCxQS3QuRUxMSVBTSVMsdC5pc0luKSl9fWNsYXNzIElLdHtjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLm5vZGU9dCx0aGlzLmV4cGFuZGVkPSExLHRoaXMuaW5Bbm5vdGF0aW9ucz1uZXcgTEt0LHRoaXMub3V0QW5ub3RhdGlvbnM9bmV3IExLdCx0aGlzLng9MCx0aGlzLnk9MCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCx0aGlzLmluYm94V2lkdGg9MCx0aGlzLm91dGJveFdpZHRoPTAsdGhpcy5leGNsdWRlZD0hMSx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy5sYWJlbE9mZnNldD0wLHRoaXMucmFkaXVzPTAsdGhpcy5sYWJlbEhlaWdodD0wLHRoaXMucGFkZGluZ1RvcD0wLHRoaXMucGFkZGluZ0xlZnQ9MCx0aGlzLnBhZGRpbmdSaWdodD0wLHRoaXMucGFkZGluZ0JvdHRvbT0wLHRoaXMuaXNJbkV4dHJhY3Q9ITEsdGhpcy5pc091dEV4dHJhY3Q9ITEsdGhpcy5jb3JlQm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLmlzRmFkZWRPdXQ9ITEsdGhpcy5kaXNwbGF5TmFtZT10Lm5hbWUuc3Vic3RyaW5nKHQubmFtZS5sYXN0SW5kZXhPZihNJHQpKzEpLHQudHlwZT09PUEkdC5NRVRBJiZ0LmFzc29jaWF0ZWRGdW5jdGlvbil7Y29uc3QgdD10aGlzLmRpc3BsYXlOYW1lLm1hdGNoKENLdCk7dD90aGlzLmRpc3BsYXlOYW1lPXRbMV06Q2UuZXhwb3J0cy5zdGFydHNXaXRoKHRoaXMuZGlzcGxheU5hbWUsVCR0KSYmKHRoaXMuZGlzcGxheU5hbWU9dGhpcy5kaXNwbGF5TmFtZS5zdWJzdHJpbmcoVCR0Lmxlbmd0aCkpfX1pc0luQ29yZSgpe3JldHVybiF0aGlzLmlzSW5FeHRyYWN0JiYhdGhpcy5pc091dEV4dHJhY3QmJiF0aGlzLmlzTGlicmFyeUZ1bmN0aW9ufX1jbGFzcyBOS3R7Y29uc3RydWN0b3IodCl7dGhpcy5tZXRhZWRnZT10LHRoaXMuYWRqb2luaW5nTWV0YWVkZ2U9bnVsbCx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy53ZWlnaHQ9MSx0aGlzLmlzRmFkZWRPdXQ9ITF9fWZ1bmN0aW9uIFJLdCh0LGUsbixpLHIpe2xldCBvPW5ldyBrS3QoZSxuLGksciwhMCk7dC5pbkFubm90YXRpb25zLnB1c2gobyl9ZnVuY3Rpb24gT0t0KHQsZSxuLGkscil7bGV0IG89bmV3IGtLdChlLG4saSxyLCExKTt0Lm91dEFubm90YXRpb25zLnB1c2gobyl9Y2xhc3Mgekt0IGV4dGVuZHMgSUt0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCk7bGV0IG49dC5tZXRhZ3JhcGguZ3JhcGgoKTt0aGlzLmNvcmVHcmFwaD1ZJHQobi5uYW1lLEMkdC5DT1JFLGUpLHRoaXMuaW5FeHRyYWN0Qm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLm91dEV4dHJhY3RCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMubGlicmFyeUZ1bmN0aW9uc0JveD17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5pc29sYXRlZEluRXh0cmFjdD1bXSx0aGlzLmlzb2xhdGVkT3V0RXh0cmFjdD1bXSx0aGlzLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0PVtdfX1mdW5jdGlvbiBES3QodCxlKXt0LmNvcmVHcmFwaCYmKGZ1bmN0aW9uIG4odCxlKXtDZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChuPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkuZXhwYW5kZWQ9ZT4xLGU+MClzd2l0Y2goaS5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk1FVEE6Y2FzZSBBJHQuU0VSSUVTOkRLdChpLGUtMSl9fSkpfSkodC5jb3JlR3JhcGgsZSl9ZnVuY3Rpb24gQkt0KHQsZSxuKXtsZXQgaT10Lm5vZGUoZSkscj10Lm5vZGUobiksbz10LmVkZ2UoZSxuKTsoaS5ub2RlLmluY2x1ZGUhPT1rJHQuSU5DTFVERSYmci5ub2RlLmluY2x1ZGUhPT1rJHQuSU5DTFVERXx8aS5ub2RlLmluY2x1ZGU9PT1rJHQuRVhDTFVERXx8ci5ub2RlLmluY2x1ZGU9PT1rJHQuRVhDTFVERSkmJihPS3QoaSxyLm5vZGUscixvLFBLdC5TSE9SVENVVCksUkt0KHIsaS5ub2RlLGksbyxQS3QuU0hPUlRDVVQpLHQucmVtb3ZlRWRnZShlLG4pKX1mdW5jdGlvbiBIS3QodCxlLG4pe2xldCBpPXQuY29yZUdyYXBoLHI9aS5ub2RlKGUpO3IuaXNPdXRFeHRyYWN0PSEwLENlLmV4cG9ydHMuZWFjaChpLnByZWRlY2Vzc29ycyhlKSwoKHQsbik9PntCS3QoaSx0LGUpfSkpLENlLmV4cG9ydHMuZWFjaChpLnN1Y2Nlc3NvcnMoZSksKCh0LG4pPT57Qkt0KGksZSx0KX0pKSwwPT09aS5uZWlnaGJvcnMoZSkubGVuZ3RoJiYoci5ub2RlLmluY2x1ZGU9ayR0LkVYQ0xVREUsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIEZLdCh0LGUsbil7bGV0IGk9dC5jb3JlR3JhcGgscj1pLm5vZGUoZSk7ci5pc0luRXh0cmFjdD0hMCxDZS5leHBvcnRzLmVhY2goaS5zdWNjZXNzb3JzKGUpLCgodCxuKT0+e0JLdChpLGUsdCl9KSksQ2UuZXhwb3J0cy5lYWNoKGkucHJlZGVjZXNzb3JzKGUpLCgodCxuKT0+e0JLdChpLHQsZSl9KSksMD09PWkubmVpZ2hib3JzKGUpLmxlbmd0aCYmKHIubm9kZS5pbmNsdWRlPWskdC5FWENMVURFLHQuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIFZLdCh0LGUpe2lmKHQudHlwZT09PUEkdC5PUCl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYodC5vcD09PWVbbl0pcmV0dXJuITB9ZWxzZSBpZih0LnR5cGU9PT1BJHQuTUVUQSl7bGV0IG49dC5nZXRSb290T3AoKTtpZihuKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKG4ub3A9PT1lW3RdKXJldHVybiEwfXJldHVybiExfWNvbnN0IFVLdD17YW5pbWF0aW9uOntkdXJhdGlvbjoyNTB9LGdyYXBoOnttZXRhOntub2RlU2VwOjUscmFua1NlcDoyNSxlZGdlU2VwOjV9LHNlcmllczp7bm9kZVNlcDo1LHJhbmtTZXA6MjUsZWRnZVNlcDo1fSxwYWRkaW5nOntwYWRkaW5nVG9wOjQwLHBhZGRpbmdMZWZ0OjIwfX0sc3Vic2NlbmU6e21ldGE6e3BhZGRpbmdUb3A6MTAscGFkZGluZ0JvdHRvbToxMCxwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAsbGFiZWxIZWlnaHQ6MjAsZXh0cmFjdFhPZmZzZXQ6MTUsZXh0cmFjdFlPZmZzZXQ6MjB9LHNlcmllczp7cGFkZGluZ1RvcDoxMCxwYWRkaW5nQm90dG9tOjEwLHBhZGRpbmdMZWZ0OjEwLHBhZGRpbmdSaWdodDoxMCxsYWJlbEhlaWdodDoxMH19LG5vZGVTaXplOnttZXRhOntyYWRpdXM6NSx3aWR0aDo2MCxtYXhMYWJlbFdpZHRoOjUyLGhlaWdodDpjRSgpLmRvbWFpbihbMSwyMDBdKS5yYW5nZShbMTUsNjBdKS5jbGFtcCghMCksZXhwYW5kQnV0dG9uUmFkaXVzOjN9LG9wOnt3aWR0aDoxNSxoZWlnaHQ6NixyYWRpdXM6MyxsYWJlbE9mZnNldDotOCxtYXhMYWJlbFdpZHRoOjMwfSxzZXJpZXM6e2V4cGFuZGVkOntyYWRpdXM6MTAsbGFiZWxPZmZzZXQ6MH0sdmVydGljYWw6e3dpZHRoOjE2LGhlaWdodDoxMyxsYWJlbE9mZnNldDotMTN9LGhvcml6b250YWw6e3dpZHRoOjI0LGhlaWdodDo4LHJhZGl1czoxMCxsYWJlbE9mZnNldDotMTB9fSxicmlkZ2U6e3dpZHRoOjIwLGhlaWdodDoyMCxyYWRpdXM6MixsYWJlbE9mZnNldDowfX0sc2hvcnRjdXRTaXplOntvcDp7d2lkdGg6MTAsaGVpZ2h0OjR9LG1ldGE6e3dpZHRoOjEyLGhlaWdodDo0LHJhZGl1czoxfSxzZXJpZXM6e3dpZHRoOjE0LGhlaWdodDo0fX0sYW5ub3RhdGlvbnM6e2luYm94V2lkdGg6NTAsb3V0Ym94V2lkdGg6NTAseE9mZnNldDoxMCx5T2Zmc2V0OjMsbGFiZWxPZmZzZXQ6MixtYXhMYWJlbFdpZHRoOjQwfSxjb25zdGFudDp7c2l6ZTp7d2lkdGg6NCxoZWlnaHQ6NH19LHNlcmllczp7bWF4U3RhY2tDb3VudDozLHBhcmFsbGVsU3RhY2tPZmZzZXRSYXRpbzouMix0b3dlclN0YWNrT2Zmc2V0UmF0aW86LjV9LG1pbmltYXA6e3NpemU6MTUwfX0sakt0PTE0MDtmdW5jdGlvbiBHS3QodCl7dC5ub2RlLmlzR3JvdXBOb2RlJiYoZnVuY3Rpb24gZSh0KXtsZXQgZT10LmNvcmVHcmFwaC5ub2RlcygpLm1hcCgoZT0+dC5jb3JlR3JhcGgubm9kZShlKSkpLmNvbmNhdCh0Lmlzb2xhdGVkSW5FeHRyYWN0LHQuaXNvbGF0ZWRPdXRFeHRyYWN0LHQubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QpO0NlLmV4cG9ydHMuZWFjaChlLCh0PT57c3dpdGNoKHQubm9kZS50eXBlKXtjYXNlIEEkdC5PUDpDZS5leHBvcnRzLmV4dGVuZCh0LFVLdC5ub2RlU2l6ZS5vcCk7YnJlYWs7Y2FzZSBBJHQuQlJJREdFOkNlLmV4cG9ydHMuZXh0ZW5kKHQsVUt0Lm5vZGVTaXplLmJyaWRnZSk7YnJlYWs7Y2FzZSBBJHQuTUVUQTppZih0LmV4cGFuZGVkKXtHS3QodCl9ZWxzZSBDZS5leHBvcnRzLmV4dGVuZCh0LFVLdC5ub2RlU2l6ZS5tZXRhKSx0LmhlaWdodD1VS3Qubm9kZVNpemUubWV0YS5oZWlnaHQodC5ub2RlLmNhcmRpbmFsaXR5KTticmVhaztjYXNlIEEkdC5TRVJJRVM6aWYodC5leHBhbmRlZCl7Q2UuZXhwb3J0cy5leHRlbmQodCxVS3Qubm9kZVNpemUuc2VyaWVzLmV4cGFuZGVkKSxHS3QodCl9ZWxzZXtDZS5leHBvcnRzLmV4dGVuZCh0LHQubm9kZS5oYXNOb25Db250cm9sRWRnZXM/VUt0Lm5vZGVTaXplLnNlcmllcy52ZXJ0aWNhbDpVS3Qubm9kZVNpemUuc2VyaWVzLmhvcml6b250YWwpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfXQuZXhwYW5kZWR8fChmdW5jdGlvbiBlKHQpe3QuaW5ib3hXaWR0aD10LmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MD9VS3QuYW5ub3RhdGlvbnMuaW5ib3hXaWR0aDowLHQub3V0Ym94V2lkdGg9dC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wP1VLdC5hbm5vdGF0aW9ucy5vdXRib3hXaWR0aDowLHQuY29yZUJveC53aWR0aD10LndpZHRoLHQuY29yZUJveC5oZWlnaHQ9dC5oZWlnaHQsdC53aWR0aD1NYXRoLm1heCh0LmNvcmVCb3gud2lkdGgrdC5pbmJveFdpZHRoK3Qub3V0Ym94V2lkdGgsMyp0LmRpc3BsYXlOYW1lLmxlbmd0aCl9KSh0KSwoZnVuY3Rpb24gbih0KXtpZih0LmV4cGFuZGVkKXJldHVybjtsZXQgZT10LmluQW5ub3RhdGlvbnMubGlzdCxuPXQub3V0QW5ub3RhdGlvbnMubGlzdDtDZS5leHBvcnRzLmVhY2goZSwodD0+cUt0KHQpKSksQ2UuZXhwb3J0cy5lYWNoKG4sKHQ9PnFLdCh0KSkpO2xldCBpPVVLdC5hbm5vdGF0aW9ucyxyPUNlLmV4cG9ydHMucmVkdWNlKGUsKChlLG4scik9PntsZXQgbz1yPjA/aS55T2Zmc2V0OjA7cmV0dXJuIG4uZHg9LSh0LmNvcmVCb3gud2lkdGgrbi53aWR0aCkvMi1pLnhPZmZzZXQsbi5keT1lK28rbi5oZWlnaHQvMixlK28rbi5oZWlnaHR9KSwwKTtDZS5leHBvcnRzLmVhY2goZSwodD0+e3QuZHktPXIvMix0LmxhYmVsT2Zmc2V0PWkubGFiZWxPZmZzZXR9KSk7bGV0IG89Q2UuZXhwb3J0cy5yZWR1Y2UobiwoKGUsbixyKT0+e2xldCBvPXI+MD9pLnlPZmZzZXQ6MDtyZXR1cm4gbi5keD0odC5jb3JlQm94LndpZHRoK24ud2lkdGgpLzIraS54T2Zmc2V0LG4uZHk9ZStvK24uaGVpZ2h0LzIsZStvK24uaGVpZ2h0fSksMCk7Q2UuZXhwb3J0cy5lYWNoKG4sKHQ9Pnt0LmR5LT1vLzIsdC5sYWJlbE9mZnNldD1pLmxhYmVsT2Zmc2V0fSkpO2xldCBhPU1hdGgubWluKHQuaGVpZ2h0LzItdC5yYWRpdXMsci8yKTthPWE8MD8wOmE7bGV0IHM9Y0UoKS5kb21haW4oWzAsZS5sZW5ndGgtMV0pLnJhbmdlKFstYSxhXSk7Q2UuZXhwb3J0cy5lYWNoKGUsKChuLGkpPT57bi5wb2ludHM9W3tkeDpuLmR4K24ud2lkdGgvMixkeTpuLmR5fSx7ZHg6LXQuY29yZUJveC53aWR0aC8yLGR5OmUubGVuZ3RoPjE/cyhpKTowfV19KSk7bGV0IGw9TWF0aC5taW4odC5oZWlnaHQvMi10LnJhZGl1cyxvLzIpO2w9bDwwPzA6bDtsZXQgYz1jRSgpLmRvbWFpbihbMCxuLmxlbmd0aC0xXSkucmFuZ2UoWy1sLGxdKTtDZS5leHBvcnRzLmVhY2gobiwoKGUsaSk9PntlLnBvaW50cz1be2R4OnQuY29yZUJveC53aWR0aC8yLGR5Om4ubGVuZ3RoPjE/YyhpKTowfSx7ZHg6ZS5keC1lLndpZHRoLzIsZHk6ZS5keX1dfSkpLHQuaGVpZ2h0PU1hdGgubWF4KHQuaGVpZ2h0LHIsbyl9KSh0KX0pKX0pKHQpLHQubm9kZS50eXBlPT09QSR0Lk1FVEE/KGZ1bmN0aW9uIG4odCl7bGV0IGU9VUt0LnN1YnNjZW5lLm1ldGE7Q2UuZXhwb3J0cy5leHRlbmQodCxlKSxDZS5leHBvcnRzLmV4dGVuZCh0LmNvcmVCb3gsV0t0KHQuY29yZUdyYXBoLFVLdC5ncmFwaC5tZXRhKSk7bGV0IG49dC5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg/Q2UuZXhwb3J0cy5tYXhCeSh0Lmlzb2xhdGVkSW5FeHRyYWN0LCh0PT50LndpZHRoKSkud2lkdGg6bnVsbDt0LmluRXh0cmFjdEJveC53aWR0aD1udWxsIT1uP246MCx0LmluRXh0cmFjdEJveC5oZWlnaHQ9Q2UuZXhwb3J0cy5yZWR1Y2UodC5pc29sYXRlZEluRXh0cmFjdCwoKHQsbixpKT0+e2xldCByPWk+MD9lLmV4dHJhY3RZT2Zmc2V0OjA7cmV0dXJuIG4ueD0wLG4ueT10K3Irbi5oZWlnaHQvMix0K3Irbi5oZWlnaHR9KSwwKTtsZXQgaT10Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg/Q2UuZXhwb3J0cy5tYXhCeSh0Lmlzb2xhdGVkT3V0RXh0cmFjdCwodD0+dC53aWR0aCkpLndpZHRoOm51bGw7dC5vdXRFeHRyYWN0Qm94LndpZHRoPW51bGwhPWk/aTowLHQub3V0RXh0cmFjdEJveC5oZWlnaHQ9Q2UuZXhwb3J0cy5yZWR1Y2UodC5pc29sYXRlZE91dEV4dHJhY3QsKCh0LG4saSk9PntsZXQgcj1pPjA/ZS5leHRyYWN0WU9mZnNldDowO3JldHVybiBuLng9MCxuLnk9dCtyK24uaGVpZ2h0LzIsdCtyK24uaGVpZ2h0fSksMCk7bGV0IHI9dC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg/Q2UuZXhwb3J0cy5tYXhCeSh0LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LCh0PT50LndpZHRoKSkud2lkdGg6bnVsbDt0LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGg9bnVsbCE9cj9yOjAsdC5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodD1DZS5leHBvcnRzLnJlZHVjZSh0LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LCgodCxuLGkpPT57bGV0IHI9aT4wP2UuZXh0cmFjdFlPZmZzZXQ6MDtyZXR1cm4gbi54PTAsbi55PXQrcituLmhlaWdodC8yLHQrcituLmhlaWdodH0pLDApO2xldCBvPTA7dC5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg+MCYmbysrO3QuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aD4wJiZvKys7dC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg+MCYmbysrO3QuY29yZUdyYXBoLm5vZGVDb3VudCgpPjAmJm8rKztsZXQgYT1VS3Quc3Vic2NlbmUubWV0YS5leHRyYWN0WE9mZnNldCxzPW88PTE/MDpvKmE7Y29uc3QgbD1NYXRoLm1heChqS3QsdC5pbkV4dHJhY3RCb3gud2lkdGgrdC5vdXRFeHRyYWN0Qm94LndpZHRoKTt0LmNvcmVCb3gud2lkdGgrPWwrcyt0LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgrcyx0LmNvcmVCb3guaGVpZ2h0PWUubGFiZWxIZWlnaHQrTWF0aC5tYXgodC5pbkV4dHJhY3RCb3guaGVpZ2h0LHQuY29yZUJveC5oZWlnaHQsdC5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodCx0Lm91dEV4dHJhY3RCb3guaGVpZ2h0KSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtlLnBhZGRpbmdMZWZ0K2UucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQucGFkZGluZ1RvcCt0LmNvcmVCb3guaGVpZ2h0K3QucGFkZGluZ0JvdHRvbX0pKHQpOnQubm9kZS50eXBlPT09QSR0LlNFUklFUyYmKGZ1bmN0aW9uIGkodCl7bGV0IGU9dC5jb3JlR3JhcGgsbj1VS3Quc3Vic2NlbmUuc2VyaWVzO0NlLmV4cG9ydHMuZXh0ZW5kKHQsbiksQ2UuZXhwb3J0cy5leHRlbmQodC5jb3JlQm94LFdLdCh0LmNvcmVHcmFwaCxVS3QuZ3JhcGguc2VyaWVzKSksQ2UuZXhwb3J0cy5lYWNoKGUubm9kZXMoKSwodD0+e2Uubm9kZSh0KS5leGNsdWRlZD0hMX0pKSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtuLnBhZGRpbmdMZWZ0K24ucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQuY29yZUJveC5oZWlnaHQrbi5wYWRkaW5nVG9wK24ucGFkZGluZ0JvdHRvbX0pKHQpfWZ1bmN0aW9uIFdLdCh0LGUpe0NlLmV4cG9ydHMuZXh0ZW5kKHQuZ3JhcGgoKSx7bm9kZXNlcDplLm5vZGVTZXAscmFua3NlcDplLnJhbmtTZXAsZWRnZXNlcDplLmVkZ2VTZXB9KTtsZXQgbj1bXTtpZihDZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChlPT57dC5ub2RlKGUpLm5vZGUudHlwZT09PUEkdC5CUklER0V8fG4ucHVzaChlKX0pKSwhbi5sZW5ndGgpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3QkdC5sYXlvdXQodCk7bGV0IGk9MS8wLHI9MS8wLG89LTEvMCxhPS0xLzA7cmV0dXJuIENlLmV4cG9ydHMuZWFjaChuLChlPT57bGV0IG49dC5ub2RlKGUpLHM9LjUqbi53aWR0aCxsPW4ueC1zLGM9bi54K3M7aT1sPGk/bDppLG89Yz5vP2M6bztsZXQgdT0uNSpuLmhlaWdodCxoPW4ueS11LGQ9bi55K3U7cj1oPHI/aDpyLGE9ZD5hP2Q6YX0pKSxDZS5leHBvcnRzLmVhY2godC5lZGdlcygpLChlPT57bGV0IG49dC5lZGdlKGUpO2lmKG4uc3RydWN0dXJhbClyZXR1cm47bGV0IHM9dC5ub2RlKG4ubWV0YWVkZ2UudiksbD10Lm5vZGUobi5tZXRhZWRnZS53KTtpZigzPT09bi5wb2ludHMubGVuZ3RoJiYoZnVuY3Rpb24gYyh0KXtsZXQgZT1YS3QodFswXSx0WzFdKTtmb3IobGV0IG49MTtuPHQubGVuZ3RoLTE7bisrKXtsZXQgaT1YS3QodFtuXSx0W24rMV0pO2lmKE1hdGguYWJzKGktZSk+MSlyZXR1cm4hMTtlPWl9cmV0dXJuITB9KShuLnBvaW50cykpe2lmKG51bGwhPXMpe2xldCB0PXMuZXhwYW5kZWQ/cy54OllLdChzKTtuLnBvaW50c1swXS54PXR9aWYobnVsbCE9bCl7bGV0IHQ9bC5leHBhbmRlZD9sLng6WUt0KGwpO24ucG9pbnRzWzJdLng9dH1uLnBvaW50cz1bbi5wb2ludHNbMF0sbi5wb2ludHNbMV1dfW51bGwhPWwmJihuLnBvaW50c1tuLnBvaW50cy5sZW5ndGgtMV09JEt0KG4ucG9pbnRzW24ucG9pbnRzLmxlbmd0aC0yXSxsKSksbnVsbCE9cyYmKG4ucG9pbnRzWzBdPSRLdChuLnBvaW50c1sxXSxzKSksQ2UuZXhwb3J0cy5lYWNoKG4ucG9pbnRzLCh0PT57aT10Lng8aT90Lng6aSxvPXQueD5vP3QueDpvLHI9dC55PHI/dC55OnIsYT10Lnk+YT90Lnk6YX0pKX0pKSxDZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChlPT57bGV0IG49dC5ub2RlKGUpO24ueC09aSxuLnktPXJ9KSksQ2UuZXhwb3J0cy5lYWNoKHQuZWRnZXMoKSwoZT0+e0NlLmV4cG9ydHMuZWFjaCh0LmVkZ2UoZSkucG9pbnRzLCh0PT57dC54LT1pLHQueS09cn0pKX0pKSx7d2lkdGg6by1pLGhlaWdodDphLXJ9fWZ1bmN0aW9uIHFLdCh0KXtzd2l0Y2godC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBQS3QuQ09OU1RBTlQ6Q2UuZXhwb3J0cy5leHRlbmQodCxVS3QuY29uc3RhbnQuc2l6ZSk7YnJlYWs7Y2FzZSBQS3QuU0hPUlRDVVQ6aWYodC5ub2RlLnR5cGU9PT1BJHQuT1ApQ2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLm9wKTtlbHNlIGlmKHQubm9kZS50eXBlPT09QSR0Lk1FVEEpQ2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLm1ldGEpO2Vsc2V7aWYodC5ub2RlLnR5cGUhPT1BJHQuU0VSSUVTKXRocm93IEVycm9yKCJJbnZhbGlkIG5vZGUgdHlwZTogIit0Lm5vZGUudHlwZSk7Q2UuZXhwb3J0cy5leHRlbmQodCxVS3Quc2hvcnRjdXRTaXplLnNlcmllcyl9YnJlYWs7Y2FzZSBQS3QuU1VNTUFSWTpDZS5leHBvcnRzLmV4dGVuZCh0LFVLdC5jb25zdGFudC5zaXplKX19ZnVuY3Rpb24gWUt0KHQpe2lmKHQuZXhwYW5kZWQpcmV0dXJuIHQueDtyZXR1cm4gdC54LXQud2lkdGgvMisodC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoP3QuaW5ib3hXaWR0aDowKSt0LmNvcmVCb3gud2lkdGgvMn1mdW5jdGlvbiBYS3QodCxlKXtyZXR1cm4gMTgwKk1hdGguYXRhbigoZS55LXQueSkvKGUueC10LngpKS9NYXRoLlBJfWZ1bmN0aW9uICRLdCh0LGUpe2xldCBuLGkscj1lLmV4cGFuZGVkP2UueDpZS3QoZSksbz1lLnksYT10LngtcixzPXQueS1vLGw9ZS5leHBhbmRlZD9lLndpZHRoOmUuY29yZUJveC53aWR0aCxjPWUuZXhwYW5kZWQ/ZS5oZWlnaHQ6ZS5jb3JlQm94LmhlaWdodDtyZXR1cm4gTWF0aC5hYnMocykqbC8yPk1hdGguYWJzKGEpKmMvMj8oczwwJiYoYz0tYyksbj0wPT09cz8wOmMvMiphL3MsaT1jLzIpOihhPDAmJihsPS1sKSxuPWwvMixpPTA9PT1hPzA6bC8yKnMvYSkse3g6cituLHk6bytpfX1jb25zdCBLS3Q9YSR0LFpLdD1uJHQ7bGV0IEpLdD1be2JhY2tncm91bmRfY29sb3I6IiNDQzJGMkMiLGxhYmVsOiJOYU4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0ZGOEQwMCIsbGFiZWw6Ii3iiJ4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0VBRUFFQSIsbGFiZWw6Ii0ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0E1QTVBNSIsbGFiZWw6IjAifSx7YmFja2dyb3VuZF9jb2xvcjoiIzI2MjYyNiIsbGFiZWw6IisifSx7YmFja2dyb3VuZF9jb2xvcjoiIzAwM0VENCIsbGFiZWw6IiviiJ4ifV07ZnVuY3Rpb24gUUt0KHQsZSxuKXtudWxsIT10LmF0dHIoInRyYW5zZm9ybSIpJiYodD10LnRyYW5zaXRpb24oInBvc2l0aW9uIikpLHQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZSsiLCIrbisiKSIpfWZ1bmN0aW9uIHRadCh0LGUsbixpLHIpe3QudHJhbnNpdGlvbigpLmF0dHIoIngiLGUtaS8yKS5hdHRyKCJ5IixuLXIvMikuYXR0cigid2lkdGgiLGkpLmF0dHIoImhlaWdodCIscil9ZnVuY3Rpb24gZVp0KHQsZSxuLGkscil7dC50cmFuc2l0aW9uKCkuYXR0cigiY3giLGUpLmF0dHIoImN5IixuKS5hdHRyKCJyeCIsaS8yKS5hdHRyKCJyeSIsci8yKX1mdW5jdGlvbiBuWnQodCxlKXtyZXR1cm4gZT90LnRvRml4ZWQoMCk6TWF0aC5hYnModCk+PTE/dC50b0ZpeGVkKDEpOnQudG9FeHBvbmVudGlhbCgxKX1mdW5jdGlvbiBpWnQodCxlLG4saSxyPTYwLG89MTAsYT0wLHMpe2lmKER1KHQucGFyZW50Tm9kZSkuc2VsZWN0QWxsKCIuaGVhbHRoLXBpbGwiKS5yZW1vdmUoKSwhZSlyZXR1cm47Y29uc3QgbD1lLnZhbHVlLGM9bC5zbGljZSgyLDgpLHU9Y1swXSxoPWNbMV0sZD1jWzVdO2xldCBwPWxbMV07Y29uc3QgZj17bWluOmxbOF0sbWF4OmxbOV0sbWVhbjpsWzEwXSxzdGRkZXY6TWF0aC5zcXJ0KGxbMTFdKX07bnVsbD09ciYmKHI9NjApLG51bGw9PW8mJihvPTEwKSxudWxsPT1hJiYoYT0wKSxudWxsIT1uJiZuLm5vZGUudHlwZT09PUEkdC5PUCYmKHIvPTIsby89Mik7bGV0IG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwiZyIpO20uY2xhc3NMaXN0LmFkZCgiaGVhbHRoLXBpbGwiKTtsZXQgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJkZWZzIik7bS5hcHBlbmRDaGlsZChnKTtsZXQgXz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJsaW5lYXJHcmFkaWVudCIpO2NvbnN0IHk9ImhlYWx0aC1waWxsLWdyYWRpZW50LSIraTtfLnNldEF0dHJpYnV0ZSgiaWQiLHkpO2xldCB2PTAsYj0iMCUiO2ZvcihsZXQgdD0wO3Q8Yy5sZW5ndGg7dCsrKXtpZighY1t0XSljb250aW51ZTt2Kz1jW3RdO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInN0b3AiKTtlLnNldEF0dHJpYnV0ZSgib2Zmc2V0IixiKSxlLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsSkt0W3RdLmJhY2tncm91bmRfY29sb3IpLF8uYXBwZW5kQ2hpbGQoZSk7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwic3RvcCIpLGk9MTAwKnYvcCsiJSI7bi5zZXRBdHRyaWJ1dGUoIm9mZnNldCIsaSksbi5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLEpLdFt0XS5iYWNrZ3JvdW5kX2NvbG9yKSxfLmFwcGVuZENoaWxkKG4pLGI9aX1nLmFwcGVuZENoaWxkKF8pO2xldCB4PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInJlY3QiKTt4LnNldEF0dHJpYnV0ZSgiZmlsbCIsInVybCgjIit5KyIpIikseC5zZXRBdHRyaWJ1dGUoIndpZHRoIixTdHJpbmcocikpLHguc2V0QXR0cmlidXRlKCJoZWlnaHQiLFN0cmluZyhvKSkseC5zZXRBdHRyaWJ1dGUoInkiLFN0cmluZyhhKSksbS5hcHBlbmRDaGlsZCh4KTtsZXQgdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobyR0LCJ0aXRsZSIpO3cudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIFModCxlLG4saSl7bGV0IHI9IkRldmljZTogIit0LmRldmljZV9uYW1lKyJcbiI7cis9ImR0eXBlOiAiK3QuZHR5cGUrIlxuIjtsZXQgbz0iKHNjYWxhcikiO3Quc2hhcGUubGVuZ3RoPjAmJihvPSIoIit0LnNoYXBlLmpvaW4oIiwiKSsiKSIpLHIrPSJcbnNoYXBlOiAiK28rIlxuXG4iLHIrPSIjKGVsZW1lbnRzKTogIitlKyJcbiI7Y29uc3QgYT1bXTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdPjAmJmEucHVzaCgiIygiK0pLdFt0XS5sYWJlbCsiKTogIituW3RdKTtyZXR1cm4gcis9YS5qb2luKCIsICIpKyJcblxuIixpLm1heD49aS5taW4mJihyKz0ibWluOiAiK2kubWluKyIsIG1heDogIitpLm1heCsiXG4iLHIrPSJtZWFuOiAiK2kubWVhbisiLCBzdGRkZXY6ICIraS5zdGRkZXYpLHJ9KShlLHAsYyxmKSxtLmFwcGVuZENoaWxkKHcpO2xldCBNPSExO2lmKG51bGwhPW4pe2xldCB0PW4ueS1vLW4uaGVpZ2h0LzItMjtpZihuLmxhYmVsT2Zmc2V0PDAmJih0Kz1uLmxhYmVsT2Zmc2V0KSxtLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKG4ueC1yLzIpKyIsICIrdCsiKSIpLGNbMl18fGNbM118fGNbNF0pe2xldCB0PW4ubm9kZS5hdHRyO2lmKHQmJnQubGVuZ3RoKWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCJUIj09PXRbZV0ua2V5KXtsZXQgbj10W2VdLnZhbHVlLnR5cGU7TT1uJiYvXkRUXyhCT09MfElOVHxVSU5UKS8udGVzdChuKTticmVha319fWxldCBFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvJHQsInRleHQiKTtpZihOdW1iZXIuaXNGaW5pdGUoZi5taW4pJiZOdW1iZXIuaXNGaW5pdGUoZi5tYXgpKXtjb25zdCB0PW5adChmLm1pbixNKSxlPW5adChmLm1heCxNKTtpZihFLnRleHRDb250ZW50PXA+MT90KyIgfiAiK2U6dCx1PjB8fGg+MHx8ZD4wKXtFLnRleHRDb250ZW50Kz0iICgiO2NvbnN0IHQ9W107dT4wJiZ0LnB1c2goYE5hTsOXJHt1fWApLGg+MCYmdC5wdXNoKGAt4oiew5cke2h9YCksZD4wJiZ0LnB1c2goYCviiJ7DlyR7ZH1gKSxFLnRleHRDb250ZW50Kz10LmpvaW4oIjsgIikrIikifX1lbHNlIEUudGV4dENvbnRlbnQ9IihObyBmaW5pdGUgZWxlbWVudHMpIjtFLmNsYXNzTGlzdC5hZGQoImhlYWx0aC1waWxsLXN0YXRzIiksbnVsbD09cyYmKHM9ci8yKSxFLnNldEF0dHJpYnV0ZSgieCIsU3RyaW5nKHMpKSxFLnNldEF0dHJpYnV0ZSgieSIsU3RyaW5nKGEtMikpLG0uYXBwZW5kQ2hpbGQoRSksZXIodC5wYXJlbnROb2RlKS5hcHBlbmRDaGlsZChtKX12YXIgclp0O2Z1bmN0aW9uIG9adCh0LGUpe2NvbnN0IG49dC5nZXRDb250ZXh0TWVudSgpLGk9RHUodC5nZXRDb250ZXh0TWVudSgpKTtyZXR1cm4gZnVuY3Rpb24ocixvKXtsZXQgYT1NdTtjb25zdCBzPShmdW5jdGlvbiBsKHQpe2xldCBlPTAsbj0wLGk9dDtmb3IoO2kmJmkub2Zmc2V0TGVmdD49MCYmaS5vZmZzZXRUb3A+PTA7KWUrPWkub2Zmc2V0TGVmdC1pLnNjcm9sbExlZnQsbis9aS5vZmZzZXRUb3AtaS5zY3JvbGxUb3AsaT1pLm9mZnNldFBhcmVudDtyZXR1cm57bGVmdDplLHRvcDpufX0pKHQpO2Z1bmN0aW9uIGModCl7dCYmdC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhuKXx8KGkuc3R5bGUoImRpc3BsYXkiLCJub25lIiksZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGMse2NhcHR1cmU6ITB9KSl9aS5zdHlsZSgiZGlzcGxheSIsImJsb2NrIikuc3R5bGUoImxlZnQiLGEuY2xpZW50WC1zLmxlZnQrMSsicHgiKS5zdHlsZSgidG9wIixhLmNsaWVudFktcy50b3ArMSsicHgiKSxhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSxkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsYyx7Y2FwdHVyZTohMH0pLGkuaHRtbCgiIiksaS5hcHBlbmQoInVsIikuc2VsZWN0QWxsKCJsaSIpLmRhdGEoZSkuZW50ZXIoKS5hcHBlbmQoImxpIikub24oImNsaWNrIiwoKHQsZSk9Pnt0LmFjdGlvbih0aGlzLHIsbyksYygpfSkpLmh0bWwoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpdGxlKHIpfSkpfX0hKGZ1bmN0aW9uKHQpe3QuTk9ORT0ibm9uZSIsdC5DT01QVVRFX1RJTUU9ImNvbXB1dGVfdGltZSIsdC5ERVZJQ0U9ImRldmljZSIsdC5NRU1PUlk9Im1lbW9yeSIsdC5PUF9DT01QQVRJQklMSVRZPSJvcF9jb21wYXRpYmlsaXR5Iix0LlNUUlVDVFVSRT0ic3RydWN0dXJlIix0LlhMQV9DTFVTVEVSPSJ4bGFfY2x1c3RlciJ9KShyWnR8fChyWnQ9e30pKTtsZXQgYVp0PUFFKCkuZG9tYWluKFtjJHQsMTJdKS5yYW5nZShbInNtYWxsIiwibWVkaXVtIiwibGFyZ2UiLCJ4bGFyZ2UiXSk7ZnVuY3Rpb24gc1p0KHQpe3JldHVybiB0LnYrIi0tIit0Lnd9ZnVuY3Rpb24gbFp0KHQsZSxuKXtjb25zdCBpPW47bGV0IHI9W107cj1DZS5leHBvcnRzLnJlZHVjZShlLmVkZ2VzKCksKCh0LG4pPT57bGV0IGk9ZS5lZGdlKG4pO3JldHVybiB0LnB1c2goe3Y6bi52LHc6bi53LGxhYmVsOml9KSx0fSkscik7bGV0IG89cyR0KHQsImciLG4kdC5FZGdlLkNPTlRBSU5FUikuc2VsZWN0QWxsKChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KSkuZGF0YShyLHNadCk7cmV0dXJuIG8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsbiR0LkVkZ2UuR1JPVVApLmF0dHIoImRhdGEtZWRnZSIsc1p0KS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTt0LmxhYmVsLmVkZ2VHcm91cD1lLGkuX2VkZ2VHcm91cEluZGV4W3NadCh0KV09ZSxpLmhhbmRsZUVkZ2VTZWxlY3RlZCYmZS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksaS5maXJlKCJlZGdlLXNlbGVjdCIse2VkZ2VEYXRhOnQsZWRnZUdyb3VwOmV9KX0pKSxwWnQoZSx0LGkpfSkpLm1lcmdlKG8pLmVhY2goKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUsbil7RHUobikuc2VsZWN0KCJwYXRoLiIrbiR0LkVkZ2UuTElORSkudHJhbnNpdGlvbigpLmF0dHJUd2VlbigiZCIsKGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4oZnVuY3Rpb24gcih0LGUsbixpLG8pe2xldCBhPW4ubGFiZWwscz1hLmFkam9pbmluZ01ldGFlZGdlLGw9YS5wb2ludHM7Y29uc3R7c2hhZG93Um9vdDpjfT10O24ubGFiZWwuc3RhcnRNYXJrZXJJZCYmKGw9ZFp0KGwsRHUoYy5xdWVyeVNlbGVjdG9yKCIjIituLmxhYmVsLnN0YXJ0TWFya2VySWQpKSwhMCkpO24ubGFiZWwuZW5kTWFya2VySWQmJihsPWRadChsLER1KGMucXVlcnlTZWxlY3RvcigiIyIrbi5sYWJlbC5lbmRNYXJrZXJJZCkpLCExKSk7aWYoIXMpcmV0dXJuIGNwKG8sZlp0KGwpKTtsZXQgdT1zLmVkZ2VHcm91cC5ub2RlKCkuZmlyc3RDaGlsZCxoPWEubWV0YWVkZ2UuaW5ib3VuZDtyZXR1cm4gZnVuY3Rpb24odCl7bGV0IG49dS5nZXRQb2ludEF0TGVuZ3RoKGg/dS5nZXRUb3RhbExlbmd0aCgpOjApLm1hdHJpeFRyYW5zZm9ybSh1LmdldENUTSgpKS5tYXRyaXhUcmFuc2Zvcm0oZS5nZXRDVE0oKS5pbnZlcnNlKCkpLGk9aD8wOmwubGVuZ3RoLTE7cmV0dXJuIGxbaV0ueD1uLngsbFtpXS55PW4ueSxmWnQobCl9fSkoZSx0aGlzLHQsMCxpKX0pKX0pKG4sdGhpcyl9KSkuZWFjaCgoZnVuY3Rpb24odCl7IShmdW5jdGlvbiBlKHQsbixpKXt0LmNsYXNzZWQoImZhZGVkIixuLmxhYmVsLmlzRmFkZWRPdXQpO2xldCByPW4ubGFiZWwubWV0YWVkZ2U7dC5zZWxlY3QoInBhdGguIituJHQuRWRnZS5MSU5FKS5jbGFzc2VkKCJjb250cm9sLWRlcCIsciYmIXIubnVtUmVndWxhckVkZ2VzKX0pKER1KHRoaXMpLHQpfSkpLG8uZXhpdCgpLmVhY2goKHQ9PntkZWxldGUgaS5fZWRnZUdyb3VwSW5kZXhbc1p0KHQpXX0pKS5yZW1vdmUoKSxvfWZ1bmN0aW9uIGNadCh0LGUpe2xldCBuPWUuZ2V0Tm9kZUJ5TmFtZSh0LnYpO2lmKG51bGw9PW4ub3V0cHV0U2hhcGVzfHxDZS5leHBvcnRzLmlzRW1wdHkobi5vdXRwdXRTaGFwZXMpKXJldHVybiBudWxsO2xldCBpPW4ub3V0cHV0U2hhcGVzW3Qub3V0cHV0VGVuc29yS2V5XTtyZXR1cm4gbnVsbD09aT9udWxsOjA9PT1pLmxlbmd0aD8ic2NhbGFyIjppLm1hcCgodD0+LTE9PT10PyI/Ijp0KSkuam9pbigiw5ciKX1mdW5jdGlvbiB1WnQodCxlKXtpZihlLmVkZ2VMYWJlbEZ1bmN0aW9uKXJldHVybiBlLmVkZ2VMYWJlbEZ1bmN0aW9uKHQsZSk7cmV0dXJuIHQuYmFzZUVkZ2VMaXN0Lmxlbmd0aD4xP3QuYmFzZUVkZ2VMaXN0Lmxlbmd0aCsiIHRlbnNvcnMiOmNadCh0LmJhc2VFZGdlTGlzdFswXSxlKX1mdW5jdGlvbiBoWnQodCxlLG4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG8kdCwicGF0aCIpO2ZvcihsZXQgcj0xO3I8dC5sZW5ndGg7cisrKWlmKGkuc2V0QXR0cmlidXRlKCJkIixuKHQuc2xpY2UoMCxyKSkpLGkuZ2V0VG90YWxMZW5ndGgoKT5lKXJldHVybiByLTE7cmV0dXJuIHQubGVuZ3RoLTF9ZnVuY3Rpb24gZFp0KHQsZSxuKXtsZXQgaT1EUCgpLngoKHQ9PnQueCkpLnkoKHQ9PnQueSkpLHI9RHUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInBhdGgiKSkuYXR0cigiZCIsaSh0KSksbz0rZS5hdHRyKCJtYXJrZXJXaWR0aCIpLGE9ZS5hdHRyKCJ2aWV3Qm94Iikuc3BsaXQoIiAiKS5tYXAoTnVtYmVyKSxzPWFbMl0tYVswXSxsPStlLmF0dHIoInJlZlgiKSxjPXIubm9kZSgpO2lmKG4pe2NvbnN0IGU9byooMS1sL3MpLG49Yy5nZXRQb2ludEF0TGVuZ3RoKGUpLHI9aFp0KHQsZSxpKTtyZXR1cm4gdFtyLTFdPXt4Om4ueCx5Om4ueX0sdC5zbGljZShyLTEpfXtjb25zdCBlPTEtbC9zLG49Yy5nZXRUb3RhbExlbmd0aCgpLW8qZSxyPWMuZ2V0UG9pbnRBdExlbmd0aChuKSxhPWhadCh0LG4saSk7cmV0dXJuIHRbYV09e3g6ci54LHk6ci55fSx0LnNsaWNlKDAsYSsxKX19ZnVuY3Rpb24gcFp0KHQsZSxuLGkpe2k9aXx8biR0LkVkZ2UuTElORSxlLmxhYmVsJiZlLmxhYmVsLnN0cnVjdHVyYWwmJihpKz0iICIrbiR0LkVkZ2UuU1RSVUNUVVJBTCksZS5sYWJlbCYmZS5sYWJlbC5tZXRhZWRnZSYmZS5sYWJlbC5tZXRhZWRnZS5udW1SZWZFZGdlcyYmKGkrPSIgIituJHQuRWRnZS5SRUZFUkVOQ0VfRURHRSksbi5oYW5kbGVFZGdlU2VsZWN0ZWQmJihpKz0iICIrbiR0LkVkZ2UuU0VMRUNUQUJMRSk7bGV0IHIsbz0icGF0aF8iK3NadChlKTtpZihuLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhGdW5jdGlvbilyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aEZ1bmN0aW9uKGUsaSk7ZWxzZXtsZXQgdD0xO251bGwhPWUubGFiZWwmJm51bGwhPWUubGFiZWwubWV0YWVkZ2UmJih0PWUubGFiZWwubWV0YWVkZ2UudG90YWxTaXplKSxyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aFNpemVkQmFzZWRTY2FsZSh0KX1sZXQgYT10LmFwcGVuZCgicGF0aCIpLmF0dHIoImlkIixvKS5hdHRyKCJjbGFzcyIsaSkuc3R5bGUoInN0cm9rZS13aWR0aCIscisicHgiKTtpZihlLmxhYmVsJiZlLmxhYmVsLm1ldGFlZGdlKWlmKGUubGFiZWwubWV0YWVkZ2UubnVtUmVmRWRnZXMpe2NvbnN0IHQ9YHJlZmVyZW5jZS1hcnJvd2hlYWQtJHthWnQocil9YDthLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dH0pYCksZS5sYWJlbC5zdGFydE1hcmtlcklkPXR9ZWxzZXtjb25zdCB0PWBkYXRhZmxvdy1hcnJvd2hlYWQtJHthWnQocil9YDthLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3R9KWApLGUubGFiZWwuZW5kTWFya2VySWQ9dH1pZihudWxsPT1lLmxhYmVsfHxudWxsPT1lLmxhYmVsLm1ldGFlZGdlKXJldHVybjtsZXQgcz11WnQoZS5sYWJlbC5tZXRhZWRnZSxuLnJlbmRlckhpZXJhcmNoeSk7bnVsbCE9cyYmdC5hcHBlbmQoInRleHQiKS5hcHBlbmQoInRleHRQYXRoIikuYXR0cigieGxpbms6aHJlZiIsIiMiK28pLmF0dHIoInN0YXJ0T2Zmc2V0IiwiNTAlIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImNlbnRyYWwiKS50ZXh0KHMpfWxldCBmWnQ9RFAoKS5jdXJ2ZSh3TCkueCgodD0+dC54KSkueSgodD0+dC55KSk7ZnVuY3Rpb24gbVp0KHQsZSxuKXtsZXQgaT1zJHQodCwiZyIsbiR0Lk5vZGUuQ09OVEFJTkVSKS5zZWxlY3RBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pKS5kYXRhKGUsKHQ9PnQubm9kZS5uYW1lKyI6Iit0Lm5vZGUudHlwZSkpO3JldHVybiBpLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiZGF0YS1uYW1lIiwodD0+dC5ub2RlLm5hbWUpKS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTtuLmFkZE5vZGVHcm91cCh0Lm5vZGUubmFtZSxlKX0pKS5tZXJnZShpKS5hdHRyKCJjbGFzcyIsKHQ9Pm4kdC5Ob2RlLkdST1VQKyIgIitUWnQodCkpKS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1EdSh0aGlzKTt6WnQocyR0KGUsImciLG4kdC5Bbm5vdGF0aW9uLklOQk9YKSx0LmluQW5ub3RhdGlvbnMsdCxuKSx6WnQocyR0KGUsImciLG4kdC5Bbm5vdGF0aW9uLk9VVEJPWCksdC5vdXRBbm5vdGF0aW9ucyx0LG4pO2xldCBpPUVadChlLHQsbiR0Lk5vZGUuU0hBUEUpO3Qubm9kZS5pc0dyb3VwTm9kZSYmKGZ1bmN0aW9uIHIodCxlLG4pe2xldCBpPXMkdCh0LCJnIixuJHQuTm9kZS5CVVRUT05fQ09OVEFJTkVSKTtzJHQoaSwiY2lyY2xlIixuJHQuTm9kZS5CVVRUT05fQ0lSQ0xFKSxzJHQoaSwicGF0aCIsbiR0Lk5vZGUuRVhQQU5EX0JVVFRPTikuYXR0cigiZCIsIk0wLC0yLjIgVjIuMiBNLTIuMiwwIEgyLjIiKSxzJHQoaSwicGF0aCIsbiR0Lk5vZGUuQ09MTEFQU0VfQlVUVE9OKS5hdHRyKCJkIiwiTS0yLjIsMCBIMi4yIiksaS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksbi5maXJlKCJub2RlLXRvZ2dsZS1leHBhbmQiLHtuYW1lOnQubm9kZS5uYW1lfSl9KSksKGZ1bmN0aW9uIHIodCxlKXtsZXQgbj1ZS3QoZSkrKGUuZXhwYW5kZWQ/ZS53aWR0aDplLmNvcmVCb3gud2lkdGgpLzItNixpPWUueS0oZS5leHBhbmRlZD9lLmhlaWdodDplLmNvcmVCb3guaGVpZ2h0KS8yKzY7ZS5ub2RlLnR5cGUhPT1BJHQuU0VSSUVTfHxlLmV4cGFuZGVkfHwobis9MTAsaS09Mik7bGV0IHI9InRyYW5zbGF0ZSgiK24rIiwiK2krIikiO3Quc2VsZWN0QWxsKCJwYXRoIikudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsciksdC5zZWxlY3QoImNpcmNsZSIpLnRyYW5zaXRpb24oKS5hdHRyKHtjeDpuLGN5OmkscjpVS3Qubm9kZVNpemUubWV0YS5leHBhbmRCdXR0b25SYWRpdXN9KX0pKGksZSl9KShpLHQsbiksX1p0KGksdCxuKSwoZnVuY3Rpb24gbyh0LGUsbil7aWYoZS5ub2RlLmlzR3JvdXBOb2RlKXtpZihlLmV4cGFuZGVkKXJldHVybiBCWnQodCxlLG4sbiR0LlN1YnNjZW5lLkdST1VQKTtLS3QodCwiZyIsbiR0LlN1YnNjZW5lLkdST1VQKS5yZW1vdmUoKX1yZXR1cm4gbnVsbH0pKGUsdCxuKSxfWnQoKGZ1bmN0aW9uIGEodCxlLG4pe2xldCBpPWUuZGlzcGxheU5hbWUscj1lLm5vZGUudHlwZT09PUEkdC5NRVRBJiYhZS5leHBhbmRlZCxvPXMkdCh0LCJ0ZXh0IixuJHQuTm9kZS5MQUJFTCksYT1vLm5vZGUoKTthLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYSksby5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKTtsZXQgcz04O3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBBJHQuTUVUQTpzPWUuZXhwYW5kZWQ/ciR0LkVYUEFOREVEX0xBQkVMOnIkdC5TRVJJRVNfTEFCRUw7YnJlYWs7Y2FzZSBBJHQuT1A6cz1yJHQuT1BfTEFCRUx9aWYocil7aS5sZW5ndGg+bi5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoJiYoaT1pLnN1YnN0cigwLG4ubWF4TWV0YW5vZGVMYWJlbExlbmd0aC0yKSsi4oCmIik7bGV0IHQ9KGZ1bmN0aW9uIGwodCl7U1p0fHwoU1p0PWNFKCkuZG9tYWluKFt0Lm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQsdC5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoXSkucmFuZ2UoW3QubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplLHQubWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplXSkuY2xhbXAoITApKTtyZXR1cm4gU1p0fSkobik7by5hdHRyKCJmb250LXNpemUiLHQoaS5sZW5ndGgpKyJweCIpLHM9dChpLmxlbmd0aCl9cmV0dXJuIHdadChvLnRleHQoaSksZS5ub2RlLnR5cGUscyxlKSxvfSkoZSx0LG4pLHQsbix0Lm5vZGUudHlwZT09PUEkdC5NRVRBKSxQWnQoZSx0LG4pLChmdW5jdGlvbiBzKHQsZSl7bGV0IG49S0t0KHQsImciLG4kdC5Ob2RlLlNIQVBFKSxpPVlLdChlKTtzd2l0Y2goZS5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk9QOntjb25zdCByPWUubm9kZTtpZihDZS5leHBvcnRzLmlzTnVtYmVyKHIuZnVuY3Rpb25JbnB1dEluZGV4KXx8Q2UuZXhwb3J0cy5pc051bWJlcihyLmZ1bmN0aW9uT3V0cHV0SW5kZXgpKXshKGZ1bmN0aW9uIHIodCxlLG4saSxvKXtjb25zdCBhPW8vMixzPWkvMixsPVtbZSxuLWFdLFtlK3MsbithXSxbZS1zLG4rYV1dO3QudHJhbnNpdGlvbigpLmF0dHIoInBvaW50cyIsbC5tYXAoKHQ9PnQuam9pbigiLCIpKSkuam9pbigiICIpKX0pKEtLdChuLCJwb2x5Z29uIiksZS54LGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCl9ZWxzZXtlWnQoS0t0KG4sImVsbGlwc2UiKSxpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCl9TVp0KHQsaSxlLnksZS5sYWJlbE9mZnNldCk7YnJlYWt9Y2FzZSBBJHQuTUVUQTp7bGV0IHI9bi5zZWxlY3RBbGwoInJlY3QiKTtlLmV4cGFuZGVkPyh0WnQocixlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpLGdadCh0LGUpLE1adCh0LGksZS55LC1lLmhlaWdodC8yK2UubGFiZWxIZWlnaHQvMikpOih0WnQocixpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCksTVp0KHQsaSxlLnksMCkpO2JyZWFrfWNhc2UgQSR0LlNFUklFUzp7bGV0IHI9S0t0KG4sInVzZSIpO2UuZXhwYW5kZWQ/KHRadChyLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCksZ1p0KHQsZSksTVp0KHQsaSxlLnksLWUuaGVpZ2h0LzIrZS5sYWJlbEhlaWdodC8yKSk6KHRadChyLGksZS55LGUuY29yZUJveC53aWR0aCxlLmNvcmVCb3guaGVpZ2h0KSxNWnQodCxpLGUueSxlLmxhYmVsT2Zmc2V0KSk7YnJlYWt9Y2FzZSBBJHQuQlJJREdFOnRadChLS3QobiwicmVjdCIpLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIG5vZGUgdHlwZTogIitlLm5vZGUudHlwZSl9fSkoZSx0KX0pKSxpLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtuLnJlbW92ZU5vZGVHcm91cCh0Lm5vZGUubmFtZSk7bGV0IGU9RHUodGhpcyk7dC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAmJmUuc2VsZWN0KCIuIituJHQuQW5ub3RhdGlvbi5JTkJPWCkuc2VsZWN0QWxsKCIuIituJHQuQW5ub3RhdGlvbi5HUk9VUCkuZWFjaCgoZT0+e24ucmVtb3ZlQW5ub3RhdGlvbkdyb3VwKGUsdCl9KSksdC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wJiZlLnNlbGVjdCgiLiIrbiR0LkFubm90YXRpb24uT1VUQk9YKS5zZWxlY3RBbGwoIi4iK24kdC5Bbm5vdGF0aW9uLkdST1VQKS5lYWNoKChlPT57bi5yZW1vdmVBbm5vdGF0aW9uR3JvdXAoZSx0KX0pKX0pKS5yZW1vdmUoKSxpfWZ1bmN0aW9uIGdadCh0LGUpe2xldCBuPWUueC1lLndpZHRoLzIrZS5wYWRkaW5nTGVmdCxpPWUueS1lLmhlaWdodC8yK2UucGFkZGluZ1RvcDtRS3QoS0t0KHQsImciLG4kdC5TdWJzY2VuZS5HUk9VUCksbixpKX1mdW5jdGlvbiBfWnQodCxlLG4saSl7aWYoaSlyZXR1cm4gdm9pZCB0LmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO2xldCByPW9adChuLHladChlLm5vZGUsbikpO3Qub24oImRibGNsaWNrIiwodD0+e24uZmlyZSgibm9kZS10b2dnbGUtZXhwYW5kIix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJtb3VzZW92ZXIiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLWhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWV9KX0pKS5vbigibW91c2VvdXQiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLXVuaGlnaGxpZ2h0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjbGljayIsKHQ9PntNdS5zdG9wUHJvcGFnYXRpb24oKSxuLmZpcmUoIm5vZGUtc2VsZWN0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjb250ZXh0bWVudSIsKCh0LGUpPT57bi5maXJlKCJub2RlLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWV9KSxyLmNhbGwodCxlKX0pKX1mdW5jdGlvbiB5WnQodCxlKXtsZXQgbj1be3RpdGxlOmU9PkokdCh0LmluY2x1ZGUpLGFjdGlvbjoobixpLHIpPT57ZS5maXJlKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix7bmFtZTp0Lm5hbWV9KX19XTtyZXR1cm4gZS5ub2RlQ29udGV4dE1lbnVJdGVtcyYmKG49bi5jb25jYXQoZS5ub2RlQ29udGV4dE1lbnVJdGVtcykpLHZadCh0KSYmbi5wdXNoKHt0aXRsZTplPT54WnQodCksYWN0aW9uOihuLGkscik9PntlLmZpcmUoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix7bmFtZTpiWnQodCl9KX19KSxufWZ1bmN0aW9uIHZadCh0KXtyZXR1cm4gbnVsbCE9PWJadCh0KX1mdW5jdGlvbiBiWnQodCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC50eXBlPT09QSR0LlNFUklFUylyZXR1cm4gdC5uYW1lO2lmKHQudHlwZT09PUEkdC5PUCl7cmV0dXJuIHQub3duaW5nU2VyaWVzfXJldHVybiBudWxsfWZ1bmN0aW9uIHhadCh0KXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gdD09PVAkdC5HUk9VUD8iVW5ncm91cCB0aGlzIHNlcmllcyBvZiBub2RlcyI6Ikdyb3VwIHRoaXMgc2VyaWVzIG9mIG5vZGVzIn0pKG51bGwhPT0oZnVuY3Rpb24gZSh0KXtsZXQgZT1udWxsO3JldHVybiB0Pyh0LnR5cGU9PT1BJHQuU0VSSUVTP2U9dDp0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS50eXBlPT09QSR0LlNFUklFUyYmKGU9dC5wYXJlbnROb2RlKSxlKTpudWxsfSkodCk/UCR0LkdST1VQOlAkdC5VTkdST1VQKX1mdW5jdGlvbiB3WnQodCxlLG4saSl7bGV0IHI9dC5ub2RlKCksbz1yLnRleHRDb250ZW50LGE9bnVsbDtzd2l0Y2goZSl7Y2FzZSBBJHQuTUVUQTppJiYhaS5leHBhbmRlZCYmKGE9VUt0Lm5vZGVTaXplLm1ldGEubWF4TGFiZWxXaWR0aCk7YnJlYWs7Y2FzZSBBJHQuT1A6YT1VS3Qubm9kZVNpemUub3AubWF4TGFiZWxXaWR0aDticmVhaztjYXNlLTE6YT1VS3QuYW5ub3RhdGlvbnMubWF4TGFiZWxXaWR0aH1pZihudWxsIT09YSlyZXR1cm4gci50ZXh0Q29udGVudD0oZnVuY3Rpb24gcyh0LGUsbil7aWYoIXQpcmV0dXJuIiI7aWYoUyR0KHQsZSk8PW4pcmV0dXJuIHQ7bGV0IGk9MCxyPXQubGVuZ3RoO2Zvcig7aTxyOyl7Y29uc3Qgbz1pK01hdGgucm91bmQoKHItaSkvMik7UyR0KHQuc2xpY2UoMCxvKSsi4oCmIixlKTw9bj9pPW86cj1vLTF9cmV0dXJuIDA9PT1pP3RbMF06dC5zbGljZSgwLGkpKyLigKYifSkoci50ZXh0Q29udGVudCxuLGEpLHQuYXBwZW5kKCJ0aXRsZSIpLnRleHQobyl9bGV0IFNadD1udWxsO2Z1bmN0aW9uIE1adCh0LGUsbixpKXtLS3QodCwidGV4dCIsbiR0Lk5vZGUuTEFCRUwpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixlKS5hdHRyKCJ5IixuK2kpfWZ1bmN0aW9uIEVadCh0LGUsbil7bGV0IGk9cyR0KHQsImciLG4pO3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBBJHQuT1A6Y29uc3QgdD1lLm5vZGU7aWYoQ2UuZXhwb3J0cy5pc051bWJlcih0LmZ1bmN0aW9uSW5wdXRJbmRleCl8fENlLmV4cG9ydHMuaXNOdW1iZXIodC5mdW5jdGlvbk91dHB1dEluZGV4KSl7cyR0KGksInBvbHlnb24iLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWt9cyR0KGksImVsbGlwc2UiLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWs7Y2FzZSBBJHQuU0VSSUVTOmxldCBuPSJhbm5vdGF0aW9uIixyPWU7ci5jb3JlR3JhcGgmJihuPXIubm9kZS5oYXNOb25Db250cm9sRWRnZXM/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCIpO2xldCBvPVtuJHQuTm9kZS5DT0xPUl9UQVJHRVRdO3IuaXNGYWRlZE91dCYmby5wdXNoKCJmYWRlZC1lbGxpcHNlIikscyR0KGksInVzZSIsbykuYXR0cigieGxpbms6aHJlZiIsIiNvcC1zZXJpZXMtIituKyItc3RhbXAiKSxzJHQoaSwicmVjdCIsbiR0Lk5vZGUuQ09MT1JfVEFSR0VUKS5hdHRyKCJyeCIsZS5yYWRpdXMpLmF0dHIoInJ5IixlLnJhZGl1cyk7YnJlYWs7Y2FzZSBBJHQuQlJJREdFOmNhc2UgQSR0Lk1FVEE6cyR0KGksInJlY3QiLG4kdC5Ob2RlLkNPTE9SX1RBUkdFVCkuYXR0cigicngiLGUucmFkaXVzKS5hdHRyKCJyeSIsZS5yYWRpdXMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrZS5ub2RlLnR5cGUpfXJldHVybiBpfWZ1bmN0aW9uIFRadCh0KXtzd2l0Y2godC5ub2RlLnR5cGUpe2Nhc2UgQSR0Lk9QOnJldHVybiBuJHQuT1BOT0RFO2Nhc2UgQSR0Lk1FVEE6cmV0dXJuIG4kdC5NRVRBTk9ERTtjYXNlIEEkdC5TRVJJRVM6cmV0dXJuIG4kdC5TRVJJRVNOT0RFO2Nhc2UgQSR0LkJSSURHRTpyZXR1cm4gbiR0LkJSSURHRU5PREU7Y2FzZSBBJHQuRUxMSVBTSVM6cmV0dXJuIG4kdC5FTExJUFNJU05PREV9dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfWZ1bmN0aW9uIENadCh0LGUsbil7bGV0IGk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQucmVwbGFjZSgvKFs6LlxbXF0sL1xcXChcKV0pL2csIlxcJDEiKX0pKHQpO2lmKCFuKXJldHVybmB1cmwoIyR7aX0pYDtsZXQgbz1EdShuKSxhPW8uc2VsZWN0KCJkZWZzI19ncmFwaC1ncmFkaWVudHMiKTthLmVtcHR5KCkmJihhPW8uYXBwZW5kKCJkZWZzIikuYXR0cigiaWQiLCJfZ3JhcGgtZ3JhZGllbnRzIikpO2xldCBzPWEuc2VsZWN0KCJsaW5lYXJHcmFkaWVudCMiK2kpO2lmKHMuZW1wdHkoKSl7cz1hLmFwcGVuZCgibGluZWFyR3JhZGllbnQiKS5hdHRyKCJpZCIsdCkscy5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTtsZXQgbj0wO0NlLmV4cG9ydHMuZWFjaChlLCh0PT57bGV0IGU9dC5jb2xvcjtzLmFwcGVuZCgic3RvcCIpLmF0dHIoIm9mZnNldCIsbikuYXR0cigic3RvcC1jb2xvciIsZSkscy5hcHBlbmQoInN0b3AiKS5hdHRyKCJvZmZzZXQiLG4rdC5wcm9wb3J0aW9uKS5hdHRyKCJzdG9wLWNvbG9yIixlKSxuKz10LnByb3BvcnRpb259KSl9cmV0dXJuYHVybCgjJHtpfSlgfWZ1bmN0aW9uIEFadCh0KXtEdSh0KS5zZWxlY3QoImRlZnMjX2dyYXBoLWdyYWRpZW50cyIpLnJlbW92ZSgpfWZ1bmN0aW9uIGtadCh0LGUsbixpLHIpe2xldCBvPWdLdDtzd2l0Y2godD10fHwoKCk9PjApLGUpe2Nhc2Ugclp0Lk5PTkU6Y2FzZSByWnQuU1RSVUNUVVJFOmlmKG4ubm9kZS50eXBlPT09QSR0Lk1FVEEpe2xldCByPW4ubm9kZS50ZW1wbGF0ZUlkO3JldHVybiBlPT09clp0LlNUUlVDVFVSRSYmbnVsbCE9PXI/by5TVFJVQ1RVUkVfUEFMRVRURSh0KHIpLGkpOm8uVU5LTk9XTn1yZXR1cm4gbi5ub2RlLnR5cGU9PT1BJHQuU0VSSUVTP2k/by5FWFBBTkRFRF9DT0xPUjoid2hpdGUiOm4ubm9kZS50eXBlPT09QSR0LkJSSURHRT9uLnN0cnVjdHVyYWw/IiNmMGUiOm4ubm9kZS5pbmJvdW5kPyIjMGVmIjoiI2ZlMCI6Q2UuZXhwb3J0cy5pc051bWJlcihuLm5vZGUuZnVuY3Rpb25JbnB1dEluZGV4KT8iIzc5NTU0OCI6Q2UuZXhwb3J0cy5pc051bWJlcihuLm5vZGUuZnVuY3Rpb25PdXRwdXRJbmRleCk/IiMwMDk2ODgiOiJ3aGl0ZSI7Y2FzZSByWnQuREVWSUNFOnJldHVybiBudWxsPT1uLmRldmljZUNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOkNadCgiZGV2aWNlLSIrbi5ub2RlLm5hbWUsbi5kZXZpY2VDb2xvcnMscik7Y2FzZSByWnQuWExBX0NMVVNURVI6cmV0dXJuIG51bGw9PW4ueGxhQ2x1c3RlckNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOkNadCgieGxhLSIrbi5ub2RlLm5hbWUsbi54bGFDbHVzdGVyQ29sb3JzLHIpO2Nhc2Ugclp0LkNPTVBVVEVfVElNRTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4uY29tcHV0ZVRpbWVDb2xvcnx8by5VTktOT1dOO2Nhc2Ugclp0Lk1FTU9SWTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4ubWVtb3J5Q29sb3J8fG8uVU5LTk9XTjtjYXNlIHJadC5PUF9DT01QQVRJQklMSVRZOnJldHVybiBudWxsPT1uLmNvbXBhdGliaWxpdHlDb2xvcnM/by5VTktOT1dOOmk/by5FWFBBTkRFRF9DT0xPUjpDWnQoIm9wLWNvbXBhdC0iK24ubm9kZS5uYW1lLG4uY29tcGF0aWJpbGl0eUNvbG9ycyxyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBjYXNlIHRvIGNvbG9yIG5vZGVzIGJ5Iil9fWZ1bmN0aW9uIFBadCh0LGUsbixpKXtpPWl8fG4kdC5Ob2RlLlNIQVBFO2NvbnN0IHI9bi5pc05vZGVIaWdobGlnaHRlZChlLm5vZGUubmFtZSksbz1uLmlzTm9kZVNlbGVjdGVkKGUubm9kZS5uYW1lKSxhPWUuaXNJbkV4dHJhY3R8fGUuaXNPdXRFeHRyYWN0fHxlLmlzTGlicmFyeUZ1bmN0aW9uLHM9ZS5leHBhbmRlZCYmaSE9PW4kdC5Bbm5vdGF0aW9uLk5PREUsbD1lLmlzRmFkZWRPdXQ7dC5jbGFzc2VkKCJoaWdobGlnaHRlZCIsciksdC5jbGFzc2VkKCJzZWxlY3RlZCIsbyksdC5jbGFzc2VkKCJleHRyYWN0IixhKSx0LmNsYXNzZWQoImV4cGFuZGVkIixzKSx0LmNsYXNzZWQoImZhZGVkIixsKTtjb25zdCBjPXQuc2VsZWN0KCIuIitpKyIgLiIrbiR0Lk5vZGUuQ09MT1JfVEFSR0VUKSx1PWtadChuLnRlbXBsYXRlSW5kZXgsbi5jb2xvckJ5LGUscyxuLmdldEdyYXBoU3ZnUm9vdCgpKTtjLnN0eWxlKCJmaWxsIix1KSxjLnN0eWxlKCJzdHJva2UiLG8/bnVsbDpMWnQodSkpfWZ1bmN0aW9uIExadCh0KXtyZXR1cm4idXJsIj09PXQuc3Vic3RyaW5nKDAsMyk/Z0t0LkdSQURJRU5UX09VVExJTkU6bmQodCkuZGFya2VyKCkudG9TdHJpbmcoKX1mdW5jdGlvbiBJWnQodCxlLG4saSl7Y29uc3Qgcj1EdSh0KTtpZihyLnNlbGVjdEFsbCgiLmlucHV0LWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIubm9uLWlucHV0IikuY2xhc3NlZCgibm9uLWlucHV0IiwhMSksci5zZWxlY3RBbGwoIi5pbnB1dC1wYXJlbnQiKS5jbGFzc2VkKCJpbnB1dC1wYXJlbnQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWNoaWxkIikuY2xhc3NlZCgiaW5wdXQtY2hpbGQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWVkZ2UtaGlnaGxpZ2h0IikuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCExKSxyLnNlbGVjdEFsbCgiLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIikuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIiwhMSksIWV8fCFpfHwhbilyZXR1cm47bGV0IG89Tlp0KG4sZSksYT17fTtDZS5leHBvcnRzLmVhY2gobywoZnVuY3Rpb24obil7YT1SWnQodCxlLG4sYSl9KSk7bGV0IHM9T2JqZWN0LmtleXMoYSksbD0oZnVuY3Rpb24gYyh0LGUpe2xldCBuPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2goZSwoZnVuY3Rpb24oZSl7bGV0IGk9dC5nZXROb2RlQnlOYW1lKGUpLHI9T1p0KHQsaSk7bltyLm5hbWVdPXJ9KSksbn0pKGUscyk7IShmdW5jdGlvbiB1KHQsZSl7Q2UuZXhwb3J0cy5mb3JPd24oZSwoZnVuY3Rpb24oZSl7bGV0IG49ZTtmb3IoO24ubmFtZSE9PUUkdDspe2NvbnN0IGU9RHUodCkuc2VsZWN0KGAubm9kZVtkYXRhLW5hbWU9IiR7bi5uYW1lfSJdYCk7IWUubm9kZXMoKS5sZW5ndGh8fGUuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0Iil8fGUuY2xhc3NlZCgic2VsZWN0ZWQiKXx8ZS5jbGFzc2VkKCJvcCIpfHxlLmNsYXNzZWQoImlucHV0LXBhcmVudCIsITApLG49bi5wYXJlbnROb2RlfX0pKX0pKHQsbCksci5zZWxlY3RBbGwoImcubm9kZTpub3QoLnNlbGVjdGVkKTpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1wYXJlbnQpOm5vdCguaW5wdXQtY2hpbGRyZW4pIikuY2xhc3NlZCgibm9uLWlucHV0IiwhMCkuZWFjaCgoZnVuY3Rpb24odCl7ci5zZWxlY3RBbGwoYFtkYXRhLW5hbWU9IiR7dC5ub2RlLm5hbWV9Il1gKS5jbGFzc2VkKCJub24taW5wdXQiLCEwKX0pKSxyLnNlbGVjdEFsbCgiZy5lZGdlOm5vdCguaW5wdXQtZWRnZS1oaWdobGlnaHQpIikuY2xhc3NlZCgibm9uLWlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCl9ZnVuY3Rpb24gTlp0KHQsZSl7bGV0IG49W10saT1lLmdldE5vZGVCeU5hbWUodCk7aWYoaSBpbnN0YW5jZW9mIE8kdClyZXR1cm5baV0uY29uY2F0KGkuaW5FbWJlZGRpbmdzKTtsZXQgcj1pLm1ldGFncmFwaC5ub2RlcygpO3JldHVybiBDZS5leHBvcnRzLmVhY2gociwoZnVuY3Rpb24odCl7bj1uLmNvbmNhdChOWnQodCxlKSl9KSksbn1mdW5jdGlvbiBSWnQodCxlLG4saSl7aWYoaVtuLm5hbWVdKXJldHVybiBpO2lbbi5uYW1lXT0hMDtsZXQgcj1uLmlucHV0cyxvPU9adChlLG4pO0R1KHQpLnNlbGVjdChgLm5vZGVbZGF0YS1uYW1lPSIke28ubmFtZX0iXWApLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITApO2xldCBhPXt9O0NlLmV4cG9ydHMuZWFjaChyLChmdW5jdGlvbih0KXtsZXQgbj1lLmdldE5vZGVCeU5hbWUodC5uYW1lKTtpZih2b2lkIDA9PT1uKXJldHVybjtpZihuIGluc3RhbmNlb2YgRCR0KXtsZXQgdD0kJHQobi5uYW1lKTtuPWUuZ2V0Tm9kZUJ5TmFtZSh0KX1sZXQgaT1PWnQoZSxuKSxyPWFbaS5uYW1lXTtyP3Iub3BOb2Rlcy5wdXNoKG4pOmFbaS5uYW1lXT17dmlzaWJsZVBhcmVudDppLG9wTm9kZXM6W25dfX0pKTtsZXQgcz17fSxsPVtvXTtzW28ubmFtZV09e3RyYWNlZDohMSxpbmRleDowLGNvbm5lY3Rpb25FbmRwb2ludHM6W119O2xldCBjPW87Zm9yKGxldCB0PTE7Yy5uYW1lIT09RSR0O3QrKyljPWMucGFyZW50Tm9kZSxzW2MubmFtZV09e3RyYWNlZDohMSxpbmRleDp0LGNvbm5lY3Rpb25FbmRwb2ludHM6W119LGxbdF09YztyZXR1cm4gQ2UuZXhwb3J0cy5mb3JPd24oYSwoZnVuY3Rpb24obixyKXtsZXQgYT1uLnZpc2libGVQYXJlbnQ7Q2UuZXhwb3J0cy5lYWNoKG4ub3BOb2RlcywoZnVuY3Rpb24obil7aT1SWnQodCxlLG4saSl9KSksYS5uYW1lIT09by5uYW1lJiYoZnVuY3Rpb24gYyh0LGUsbixpKXtsZXQgcj1lLG89ZSxhPVtdO2Zvcig7IW5bci5uYW1lXTspby5uYW1lIT09ci5uYW1lJiZhLnB1c2goW28scl0pLG89cixyPXIucGFyZW50Tm9kZTtsZXQgcz1uW3IubmFtZV0uaW5kZXgsbD1pW01hdGgubWF4KHMtMSwwKV0ubmFtZSxjPWwsdT1vLm5hbWUsaD1vLm5hbWU7Y29uc3QgZD1EdSh0KTtkLnNlbGVjdEFsbChgW2RhdGEtZWRnZT0iJHtofS0tJHtsfSJdYCkuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCEwKSxDZS5leHBvcnRzLmVhY2goYSwoZnVuY3Rpb24odCl7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7dFswXS5uYW1lfS0tJHtjfX5+JHt0WzFdLm5hbWV9fn5PVVQiXWApLmNsYXNzZWQoImlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCl9KSk7Zm9yKGxldCB0PTE7dDxzO3QrKyl7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7dX1+fiR7aVt0XS5uYW1lfX5+SU4tLSR7aVt0LTFdLm5hbWV9Il1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfX0pKHQsYSxzLGwpfSkpLGl9ZnVuY3Rpb24gT1p0KHQsZSl7bGV0IG49ITEsaT1lO2Zvcig7IW47KWlmKGk9KGU9aSkucGFyZW50Tm9kZSx2b2lkIDA9PT1pKW49ITA7ZWxzZXtsZXQgZT10LmdldFJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtlJiYoZS5leHBhbmRlZHx8aSBpbnN0YW5jZW9mIE8kdCkmJihuPSEwKX1yZXR1cm4gZX1mdW5jdGlvbiB6WnQodCxlLG4saSl7bGV0IHI9dC5zZWxlY3RBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pKS5kYXRhKGUubGlzdCwodD0+dC5ub2RlLm5hbWUpKTtyZXR1cm4gci5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImRhdGEtbmFtZSIsKHQ9PnQubm9kZS5uYW1lKSkuZWFjaCgoZnVuY3Rpb24odCl7bGV0IGU9RHUodGhpcyk7aS5hZGRBbm5vdGF0aW9uR3JvdXAodCxuLGUpO2xldCByPW4kdC5Bbm5vdGF0aW9uLkVER0Usbz10LnJlbmRlck1ldGFlZGdlSW5mbyYmdC5yZW5kZXJNZXRhZWRnZUluZm8ubWV0YWVkZ2U7byYmIW8ubnVtUmVndWxhckVkZ2VzJiYocis9IiAiK24kdC5Bbm5vdGF0aW9uLkNPTlRST0xfRURHRSksbyYmby5udW1SZWZFZGdlcyYmKHIrPSIgIituJHQuRWRnZS5SRUZfTElORSkscFp0KGUsdCxpLHIpLHQuYW5ub3RhdGlvblR5cGUhPT1QS3QuRUxMSVBTSVM/KCEoZnVuY3Rpb24gYSh0LGUpe2xldCBuPWUubm9kZS5uYW1lLnNwbGl0KCIvIik7cmV0dXJuIERadCh0LG5bbi5sZW5ndGgtMV0sZSxudWxsKX0pKGUsdCksKGZ1bmN0aW9uIHModCxlKXtpZihlLmFubm90YXRpb25UeXBlPT09UEt0LlNVTU1BUlkpe3MkdCh0LCJ1c2UiKS5hdHRyKCJjbGFzcyIsInN1bW1hcnkiKS5hdHRyKCJ4bGluazpocmVmIiwiI3N1bW1hcnktaWNvbiIpLmF0dHIoImN1cnNvciIsInBvaW50ZXIiKX1lbHNle3MkdChFWnQodCxlLG4kdC5Bbm5vdGF0aW9uLk5PREUpLCJ0aXRsZSIpLnRleHQoZS5ub2RlLm5hbWUpfX0pKGUsdCkpOkRadChlLHQubm9kZS5uYW1lLHQsbiR0LkFubm90YXRpb24uRUxMSVBTSVMpfSkpLm1lcmdlKHIpLmF0dHIoImNsYXNzIiwodD0+biR0LkFubm90YXRpb24uR1JPVVArIiAiKyhmdW5jdGlvbiBlKHQpe3JldHVybihQS3RbdF18fCIiKS50b0xvd2VyQ2FzZSgpfHxudWxsfSkodC5hbm5vdGF0aW9uVHlwZSkrIiAiK1RadCh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPUR1KHRoaXMpOyEoZnVuY3Rpb24gcih0LGUsbixpKXtsZXQgcj1ZS3QoZSk7bi5yZW5kZXJOb2RlSW5mbyYmbi5hbm5vdGF0aW9uVHlwZSE9PVBLdC5FTExJUFNJUyYmUFp0KHQsbi5yZW5kZXJOb2RlSW5mbyxpLG4kdC5Bbm5vdGF0aW9uLk5PREUpO24uYW5ub3RhdGlvblR5cGU9PT1QS3QuU1VNTUFSWSYmKG4ud2lkdGgrPTEwKTt0LnNlbGVjdCgidGV4dC4iK24kdC5Bbm5vdGF0aW9uLkxBQkVMKS50cmFuc2l0aW9uKCkuYXR0cigieCIscituLmR4KyhuLmlzSW4/LTE6MSkqKG4ud2lkdGgvMituLmxhYmVsT2Zmc2V0KSkuYXR0cigieSIsZS55K24uZHkpLHQuc2VsZWN0KCJ1c2Uuc3VtbWFyeSIpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixyK24uZHgtMykuYXR0cigieSIsZS55K24uZHktNiksZVp0KHQuc2VsZWN0KCIuIituJHQuQW5ub3RhdGlvbi5OT0RFKyIgZWxsaXBzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSx0WnQodC5zZWxlY3QoIi4iK24kdC5Bbm5vdGF0aW9uLk5PREUrIiByZWN0IikscituLmR4LGUueStuLmR5LG4ud2lkdGgsbi5oZWlnaHQpLHRadCh0LnNlbGVjdCgiLiIrbiR0LkFubm90YXRpb24uTk9ERSsiIHVzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSx0LnNlbGVjdCgicGF0aC4iK24kdC5Bbm5vdGF0aW9uLkVER0UpLnRyYW5zaXRpb24oKS5hdHRyKCJkIiwodD0+e2xldCBuPXQucG9pbnRzLm1hcCgodD0+KHt4OnQuZHgrcix5OnQuZHkrZS55fSkpKTtyZXR1cm4gZlp0KG4pfSkpfSkoZSxuLHQsaSksdC5hbm5vdGF0aW9uVHlwZSE9PVBLdC5FTExJUFNJUyYmKGZ1bmN0aW9uIG8odCxlLG4saSl7dC5vbigibW91c2VvdmVyIiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHtuYW1lOnQubm9kZS5uYW1lLGhvc3ROYW1lOmUubm9kZS5uYW1lfSl9KSkub24oIm1vdXNlb3V0IiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi11bmhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKS5vbigiY2xpY2siLCh0PT57TXUuc3RvcFByb3BhZ2F0aW9uKCksaS5maXJlKCJhbm5vdGF0aW9uLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKSxuLmFubm90YXRpb25UeXBlIT09UEt0LlNVTU1BUlkmJm4uYW5ub3RhdGlvblR5cGUhPT1QS3QuQ09OU1RBTlQmJnQub24oImNvbnRleHRtZW51IixvWnQoaSx5WnQobi5ub2RlLGkpKSl9KShlLG4sdCxpKX0pKSxyLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtpLnJlbW92ZUFubm90YXRpb25Hcm91cCh0LG4pfSkpLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gRFp0KHQsZSxuLGkpe2xldCByPW4kdC5Bbm5vdGF0aW9uLkxBQkVMO3JldHVybiBpJiYocis9IiAiK2kpLHdadCh0LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIixyKS5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLG4uaXNJbj8iZW5kIjoic3RhcnQiKS50ZXh0KGUpLC0xLGkkdC5MQUJFTCl9ZnVuY3Rpb24gQlp0KHQsZSxuLGkpe2xldCByPWEkdCh0LCJnIixpPWl8fG4kdC5TY2VuZS5HUk9VUCkuZW1wdHkoKSxvPXMkdCh0LCJnIixpKSxhPXMkdChvLCJnIixuJHQuU2NlbmUuQ09SRSkscz1DZS5leHBvcnRzLnJlZHVjZShlLmNvcmVHcmFwaC5ub2RlcygpLCgodCxuKT0+e2xldCBpPWUuY29yZUdyYXBoLm5vZGUobik7cmV0dXJuIGkuZXhjbHVkZWR8fHQucHVzaChpKSx0fSksW10pO2lmKGUubm9kZS50eXBlPT09QSR0LlNFUklFUyYmcy5yZXZlcnNlKCksbFp0KGEsZS5jb3JlR3JhcGgsbiksbVp0KGEscyxuKSxlLmlzb2xhdGVkSW5FeHRyYWN0Lmxlbmd0aD4wKXttWnQocyR0KG8sImciLG4kdC5TY2VuZS5JTkVYVFJBQ1QpLGUuaXNvbGF0ZWRJbkV4dHJhY3Qsbil9ZWxzZSBhJHQobywiZyIsbiR0LlNjZW5lLklORVhUUkFDVCkucmVtb3ZlKCk7aWYoZS5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoPjApe21adChzJHQobywiZyIsbiR0LlNjZW5lLk9VVEVYVFJBQ1QpLGUuaXNvbGF0ZWRPdXRFeHRyYWN0LG4pfWVsc2UgYSR0KG8sImciLG4kdC5TY2VuZS5PVVRFWFRSQUNUKS5yZW1vdmUoKTtpZihlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD4wKXttWnQocyR0KG8sImciLG4kdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKSxlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LG4pfWVsc2UgYSR0KG8sImciLG4kdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKS5yZW1vdmUoKTtyZXR1cm4oZnVuY3Rpb24gbCh0LGUpe2xldCBuPWUubm9kZS50eXBlPT09QSR0LlNFUklFUz8wOlVLdC5zdWJzY2VuZS5tZXRhLmxhYmVsSGVpZ2h0O1FLdChLS3QodCwiZyIsWkt0LlNjZW5lLkNPUkUpLDAsbik7bGV0IGk9ZS5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg+MCxyPWUuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aD4wLG89ZS5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg+MCxhPVVLdC5zdWJzY2VuZS5tZXRhLmV4dHJhY3RYT2Zmc2V0LHM9MDtpZihpJiYocys9ZS5vdXRFeHRyYWN0Qm94LndpZHRoKSxyJiYocys9ZS5vdXRFeHRyYWN0Qm94LndpZHRoKSxpKXtsZXQgaT1lLmNvcmVCb3gud2lkdGg7aT1zPGpLdD9pLWpLdCtlLmluRXh0cmFjdEJveC53aWR0aC8yOmktZS5pbkV4dHJhY3RCb3gud2lkdGgvMi1lLm91dEV4dHJhY3RCb3gud2lkdGgtKHI/YTowKSxpPWktZS5saWJyYXJ5RnVuY3Rpb25zQm94LndpZHRoLShvP2E6MCksUUt0KEtLdCh0LCJnIixaS3QuU2NlbmUuSU5FWFRSQUNUKSxpLG4pfWlmKHIpe2xldCBpPWUuY29yZUJveC53aWR0aDtzPGpLdD9pPWktakt0K2Uub3V0RXh0cmFjdEJveC53aWR0aC8yOmktPWUub3V0RXh0cmFjdEJveC53aWR0aC8yLGk9aS1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgtKG8/YTowKSxRS3QoS0t0KHQsImciLFpLdC5TY2VuZS5PVVRFWFRSQUNUKSxpLG4pfWlmKG8pe2xldCBpPWUuY29yZUJveC53aWR0aC1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgvMjtRS3QoS0t0KHQsImciLFpLdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKSxpLG4pfX0pKG8sZSksciYmby5hdHRyKCJvcGFjaXR5IiwwKS50cmFuc2l0aW9uKCkuYXR0cigib3BhY2l0eSIsMSksb31jbGFzcyBIWnR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMuc3ZnPXQsdGhpcy5sYWJlbFBhZGRpbmc9byx0aGlzLnpvb21HPWUsdGhpcy5tYWluWm9vbT1uLHRoaXMubWF4V2FuZEg9cjtsZXQgYT1EdShpLnNoYWRvd1Jvb3QpLHM9YS5zZWxlY3QoInN2ZyIpLGw9cy5zZWxlY3QoInJlY3QiKTt0aGlzLnZpZXdwb2ludENvb3JkPXt4OjAseTowfTtsZXQgYz1OaCgpLnN1YmplY3QoT2JqZWN0KS5vbigiZHJhZyIsKHQ9Pnt0aGlzLnZpZXdwb2ludENvb3JkLng9TXUueCx0aGlzLnZpZXdwb2ludENvb3JkLnk9TXUueSx0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpO2wuZGF0dW0odGhpcy52aWV3cG9pbnRDb29yZCkuY2FsbChjKSxzLm9uKCJjbGljayIsKCgpPT57aWYoTXUuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47bGV0IHQ9TnVtYmVyKGwuYXR0cigid2lkdGgiKSksZT1OdW1iZXIobC5hdHRyKCJoZWlnaHQiKSksbj1iaChzLm5vZGUoKSk7dGhpcy52aWV3cG9pbnRDb29yZC54PW5bMF0tdC8yLHRoaXMudmlld3BvaW50Q29vcmQueT1uWzFdLWUvMix0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpLHRoaXMudmlld3BvaW50PWwubm9kZSgpLHRoaXMubWluaW1hcFN2Zz1zLm5vZGUoKSx0aGlzLm1pbmltYXA9aSx0aGlzLmNhbnZhcz1hLnNlbGVjdCgiY2FudmFzLmZpcnN0Iikubm9kZSgpLHRoaXMuY2FudmFzQnVmZmVyPWEuc2VsZWN0KCJjYW52YXMuc2Vjb25kIikubm9kZSgpLHRoaXMuZG93bmxvYWRDYW52YXM9YS5zZWxlY3QoImNhbnZhcy5kb3dubG9hZCIpLm5vZGUoKSxEdSh0aGlzLmRvd25sb2FkQ2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZVZpZXdwb2ludCgpe0R1KHRoaXMudmlld3BvaW50KS5hdHRyKCJ4Iix0aGlzLnZpZXdwb2ludENvb3JkLngpLmF0dHIoInkiLHRoaXMudmlld3BvaW50Q29vcmQueSk7bGV0IHQ9LXRoaXMudmlld3BvaW50Q29vcmQueCp0aGlzLnNjYWxlTWFpbi90aGlzLnNjYWxlTWluaW1hcCxlPS10aGlzLnZpZXdwb2ludENvb3JkLnkqdGhpcy5zY2FsZU1haW4vdGhpcy5zY2FsZU1pbmltYXA7RHUodGhpcy5zdmcpLmNhbGwodGhpcy5tYWluWm9vbS50cmFuc2Zvcm0scUkudHJhbnNsYXRlKHQsZSkuc2NhbGUodGhpcy5zY2FsZU1haW4pKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9Pnt0aGlzLmRvd25sb2FkQ2FudmFzLnRvQmxvYigoZT0+e3QoZSl9KSwiaW1hZ2UvcG5nIil9KSl9dXBkYXRlKCl7bGV0IHQ9bnVsbDt0cnl7aWYodD10aGlzLnpvb21HLmdldEJCb3goKSwwPT09dC53aWR0aClyZXR1cm59Y2F0Y2godCl7cmV0dXJufWxldCBlPUR1KHRoaXMuc3ZnKSxuPSIiO2NvbnN0IGk9dGhpcy5zdmcscj0oaS5nZXRSb290Tm9kZT9pLmdldFJvb3ROb2RlKCk6dGhpcy5zdmcucGFyZW50Tm9kZSkuc3R5bGVTaGVldHM7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0KyspdHJ5e2xldCBlPXJbdF0uY3NzUnVsZXN8fHJbdF0ucnVsZXM7aWYobnVsbD09ZSljb250aW51ZTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluKz1lW3RdLmNzc1RleHQucmVwbGFjZSgvID90Zi1bXHctXSsgPy9nLCIiKSsiXG4ifWNhdGNoKHQpe2lmKCJTZWN1cml0eUVycm9yIiE9PXQubmFtZSl0aHJvdyB0fWxldCBvPWUuYXBwZW5kKCJzdHlsZSIpO28udGV4dChuKTtsZXQgYT1EdSh0aGlzLnpvb21HKSxzPWEuYXR0cigidHJhbnNmb3JtIik7YS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpLHQuaGVpZ2h0Kz10LnksdC53aWR0aCs9dC54LHQuaGVpZ2h0Kz0yKnRoaXMubGFiZWxQYWRkaW5nLHQud2lkdGgrPTIqdGhpcy5sYWJlbFBhZGRpbmcsZS5hdHRyKCJ3aWR0aCIsdC53aWR0aCkuYXR0cigiaGVpZ2h0Iix0LmhlaWdodCksdGhpcy5zY2FsZU1pbmltYXA9dGhpcy5tYXhXYW5kSC9NYXRoLm1heCh0LndpZHRoLHQuaGVpZ2h0KSx0aGlzLm1pbmltYXBTaXplPXt3aWR0aDp0LndpZHRoKnRoaXMuc2NhbGVNaW5pbWFwLGhlaWdodDp0LmhlaWdodCp0aGlzLnNjYWxlTWluaW1hcH0sRHUodGhpcy5taW5pbWFwU3ZnKS5hdHRyKHRoaXMubWluaW1hcFNpemUpLER1KHRoaXMuY2FudmFzQnVmZmVyKS5hdHRyKHRoaXMubWluaW1hcFNpemUpO2NvbnN0IGw9RHUodGhpcy5kb3dubG9hZENhbnZhcyk7bC5zdHlsZSgid2lkdGgiLHQud2lkdGgpLGwuc3R5bGUoImhlaWdodCIsdC5oZWlnaHQpLGwuYXR0cigid2lkdGgiLDMqdC53aWR0aCksbC5hdHRyKCJoZWlnaHQiLDMqdC5oZWlnaHQpLG51bGwhPXRoaXMudHJhbnNsYXRlJiZudWxsIT10aGlzLnpvb20mJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuem9vbSgpKSk7bGV0IGM9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyh0aGlzLnN2Zyk7by5yZW1vdmUoKSxlLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpLGEuYXR0cigidHJhbnNmb3JtIixzKTtsZXQgdT1uZXcgSW1hZ2U7dS5vbmxvYWQ9KCk9PntsZXQgdD10aGlzLmNhbnZhc0J1ZmZlci5nZXRDb250ZXh0KCIyZCIpO3QuY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhc0J1ZmZlci53aWR0aCx0aGlzLmNhbnZhc0J1ZmZlci5oZWlnaHQpLHQuZHJhd0ltYWdlKHUsMCwwLHRoaXMubWluaW1hcFNpemUud2lkdGgsdGhpcy5taW5pbWFwU2l6ZS5oZWlnaHQpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntEdSh0aGlzLmNhbnZhc0J1ZmZlcikuc3R5bGUoImRpc3BsYXkiLG51bGwpLER1KHRoaXMuY2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSxbdGhpcy5jYW52YXMsdGhpcy5jYW52YXNCdWZmZXJdPVt0aGlzLmNhbnZhc0J1ZmZlcix0aGlzLmNhbnZhc119KSk7bGV0IGU9dGhpcy5kb3dubG9hZENhbnZhcy5nZXRDb250ZXh0KCIyZCIpO2UuY2xlYXJSZWN0KDAsMCx0aGlzLmRvd25sb2FkQ2FudmFzLndpZHRoLHRoaXMuZG93bmxvYWRDYW52YXMuaGVpZ2h0KSxlLmRyYXdJbWFnZSh1LDAsMCx0aGlzLmRvd25sb2FkQ2FudmFzLndpZHRoLHRoaXMuZG93bmxvYWRDYW52YXMuaGVpZ2h0KX0sdS5vbmVycm9yPSgpPT57bGV0IHQ9bmV3IEJsb2IoW2NdLHt0eXBlOiJpbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgifSk7dS5zcmM9VVJMLmNyZWF0ZU9iamVjdFVSTCh0KX0sdS5zcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCIrZW5jb2RlVVJJQ29tcG9uZW50KGMpfXpvb20odCl7aWYobnVsbD09dGhpcy5zY2FsZU1pbmltYXApcmV0dXJuO3QmJih0aGlzLnRyYW5zbGF0ZT1bdC54LHQueV0sdGhpcy5zY2FsZU1haW49dC5rKTtsZXQgZT10aGlzLnN2Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPUR1KHRoaXMudmlld3BvaW50KTt0aGlzLnZpZXdwb2ludENvb3JkLng9LXRoaXMudHJhbnNsYXRlWzBdKnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluLHRoaXMudmlld3BvaW50Q29vcmQueT0tdGhpcy50cmFuc2xhdGVbMV0qdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW47bGV0IGk9ZS53aWR0aCp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbixyPWUuaGVpZ2h0KnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluO24uYXR0cigieCIsdGhpcy52aWV3cG9pbnRDb29yZC54KS5hdHRyKCJ5Iix0aGlzLnZpZXdwb2ludENvb3JkLnkpLmF0dHIoIndpZHRoIixpKS5hdHRyKCJoZWlnaHQiLHIpO2xldCBvPXRoaXMubWluaW1hcFNpemUud2lkdGgsYT10aGlzLm1pbmltYXBTaXplLmhlaWdodCxzPXRoaXMudmlld3BvaW50Q29vcmQueCxsPXRoaXMudmlld3BvaW50Q29vcmQueTsoTWF0aC5taW4oTWF0aC5tYXgoMCxzK2kpLG8pLU1hdGgubWluKE1hdGgubWF4KDAscyksbykpKihNYXRoLm1pbihNYXRoLm1heCgwLGwrciksYSktTWF0aC5taW4oTWF0aC5tYXgoMCxsKSxhKSkvKG8qYSk8Ljg/dGhpcy5taW5pbWFwLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOnRoaXMubWluaW1hcC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19bGV0IEZadD1jbGFzcyBleHRlbmRzIHdle2luaXQodCxlLG4saSxyKXtyZXR1cm4gbmV3IEhadCh0LGUsbix0aGlzLGkscil9fTtGWnQudGVtcGxhdGU9eGVgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCguaGlkZGVuKSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgY2FudmFzIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogICAgICB9CgogICAgICByZWN0IHsKICAgICAgICBmaWxsOiB3aGl0ZTsKICAgICAgICBzdHJva2U6ICMxMTExMTE7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7CiAgICAgICAgZmlsbC1vcGFjaXR5OiAwOwogICAgICAgIGZpbHRlcjogdXJsKCNtaW5pbWFwRHJvcFNoYWRvdyk7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzdmc+CiAgICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIKICAgICAgICAgIGlkPSJtaW5pbWFwRHJvcFNoYWRvdyIKICAgICAgICAgIHg9Ii0yMCUiCiAgICAgICAgICB5PSItMjAlIgogICAgICAgICAgd2lkdGg9IjE1MCUiCiAgICAgICAgICBoZWlnaHQ9IjE1MCUiCiAgICAgICAgPgogICAgICAgICAgPGZlT2Zmc2V0IHJlc3VsdD0ib2ZmT3V0IiBpbj0iU291cmNlR3JhcGhpYyIgZHg9IjEiIGR5PSIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgPGZlQ29sb3JNYXRyaXgKICAgICAgICAgICAgcmVzdWx0PSJtYXRyaXhPdXQiCiAgICAgICAgICAgIGluPSJvZmZPdXQiCiAgICAgICAgICAgIHR5cGU9Im1hdHJpeCIKICAgICAgICAgICAgdmFsdWVzPSIwLjEgMCAwIDAgMCAwIDAuMSAwIDAgMCAwIDAgMC4xIDAgMCAwIDAgMCAwLjUgMCIKICAgICAgICAgID48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIKICAgICAgICAgICAgcmVzdWx0PSJibHVyT3V0IgogICAgICAgICAgICBpbj0ibWF0cml4T3V0IgogICAgICAgICAgICBzdGREZXZpYXRpb249IjIiCiAgICAgICAgICA+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgIDxmZUJsZW5kIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImJsdXJPdXQiIG1vZGU9Im5vcm1hbCI+PC9mZUJsZW5kPgogICAgICAgIDwvZmlsdGVyPgogICAgICA8L2RlZnM+CiAgICAgIDxyZWN0PjwvcmVjdD4KICAgIDwvc3ZnPgogICAgPGNhbnZhcyBjbGFzcz0iZmlyc3QiPjwvY2FudmFzPgogICAgPCEtLSBBZGRpdGlvbmFsIGNhbnZhcyB0byB1c2UgYXMgYnVmZmVyIHRvIGF2b2lkIGZsaWNrZXJpbmcgYmV0d2VlbiB1cGRhdGVzIC0tPgogICAgPGNhbnZhcyBjbGFzcz0ic2Vjb25kIj48L2NhbnZhcz4KICAgIDxjYW52YXMgY2xhc3M9ImRvd25sb2FkIj48L2NhbnZhcz4KICBgLEZadD10KFtpKCJ0Zi1ncmFwaC1taW5pbWFwIildLEZadCk7Y29uc3QgVlp0PXhlYAogIDxzdHlsZT4KICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgZmlsdGVyOiBpbnZlcnQoMSk7CiAgICB9CgogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI3N2ZyB7CiAgICAgIGZsZXg6IDE7CiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI2hpZGRlbiB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiAwcHg7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICB0ZXh0IHsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogLS0tIE5vZGUgYW5kIGFubm90YXRpb24tbm9kZSBmb3IgTWV0YW5vZGUgLS0tICovCgogICAgLm1ldGEgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5tZXRhID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6IGhzbCgwLCAwJSwgNzAlKTsKICAgIH0KICAgIC5ub2RlLm1ldGEuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5ub2RlLm1ldGEuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgIH0KICAgIC5tZXRhLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAubWV0YS5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDM7CiAgICB9CiAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZC5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZC5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogNDsKICAgIH0KCiAgICAuZmFkZWQsCiAgICAuZmFkZWQgcmVjdCwKICAgIC5mYWRlZCBlbGxpcHNlLAogICAgLmZhZGVkIHBhdGgsCiAgICAuZmFkZWQgdXNlLAogICAgI3JlY3RIYXRjaCBsaW5lLAogICAgI2VsbGlwc2VIYXRjaCBsaW5lIHsKICAgICAgY29sb3I6ICNlMGQ0YjMgIWltcG9ydGFudDsKICAgICAgZmlsbDogd2hpdGU7CiAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCBwYXRoIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxcHggIWltcG9ydGFudDsKICAgIH0KCiAgICAuZmFkZWQgcmVjdCB7CiAgICAgIGZpbGw6IHVybCgjcmVjdEhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCBlbGxpcHNlLAogICAgLmZhZGVkIHVzZSB7CiAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCB0ZXh0IHsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICAvKiBSdWxlcyB1c2VkIGZvciBpbnB1dC10cmFjaW5nLiAqLwogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiByZWN0LAogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiBlbGxpcHNlLAogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiB1c2UgewogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiAjZmY5ODAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogIC0gRmFkZWQgbm9uLWlucHV0IHN0eWxpbmcgKi8KICAgIC5ub24taW5wdXQgPiAqID4gcmVjdCwKLm5vbi1pbnB1dCA+ICogPiBlbGxpcHNlLAoubm9uLWlucHV0ID4gKiA+IHVzZSwKLyogRm9yIENvbnN0IG5vZGVzLiAqLwoubm9uLWlucHV0ID4gKiA+IC5jb25zdGFudDpub3QoW2NsYXNzKj0iaW5wdXQtaGlnaGxpZ2h0Il0pID4KICAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSwKLyogRm9yIHN0eWxpbmcgb2YgYW5ub3RhdGlvbiBub2RlcyBvZiBub24taW5wdXQgbm9kZXMuICovCi5ub24taW5wdXQgPiBnID4gLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICBzdHJva2Utd2lkdGg6IGluaGVyaXQ7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IGluaGVyaXQ7CiAgICB9CgogICAgLm5vbi1pbnB1dCBwYXRoIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIC5ub24taW5wdXQgPiAubm9kZXNoYXBlID4gcmVjdCwKLm5vbi1pbnB1dCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0LAovKiBGb3Igc3R5bGluZyBvZiBhbm5vdGF0aW9uIG5vZGVzIG9mIG5vbi1pbnB1dCBub2Rlcy4gKi8KLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLm5vbi1pbnB1dCBlbGxpcHNlLAogICAgLm5vbi1pbnB1dCB1c2UgewogICAgICBmaWxsOiB1cmwoI2VsbGlwc2VIYXRjaCkgIWltcG9ydGFudDsKICAgIH0KCiAgICAubm9uLWlucHV0ID4gdGV4dCB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICB9CgogICAgLm5vbi1pbnB1dCAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICBtYXJrZXItZW5kOiB1cmwoI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgIH0KCiAgICAubm9uLWlucHV0IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLyogSW5wdXQgZWRnZXMuICovCiAgICAuaW5wdXQtZWRnZS1oaWdobGlnaHQgPiB0ZXh0IHsKICAgICAgZmlsbDogYmxhY2sgIWltcG9ydGFudDsKICAgIH0KICAgIC5pbnB1dC1oaWdobGlnaHQgPiAuaW4tYW5ub3RhdGlvbnMgPiAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UsCiAgICAuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkCiAgICAgID4gLmluLWFubm90YXRpb25zCiAgICAgID4gLmFubm90YXRpb24KICAgICAgPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgc3Ryb2tlOiAjOTk5ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogTm9uLWlucHV0IGVkZ2VzLiAqLwogICAgLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCwKLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IHBhdGgsCi8qIEFubm90YXRpb24gc3R5bGVzIChsYWJlbCBhbmQgZWRnZXMgcmVzcGVjdGl2ZWx5KS4gKi8KLm5vbi1pbnB1dCA+IGcgPgouYW5ub3RhdGlvbjpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1oaWdobGlnaHQtc2VsZWN0ZWQpID4KLmFubm90YXRpb24tbGFiZWwKLyouYW5ub3RhdGlvbi1lZGdlKi8gewogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB9CgogICAgLyogLS0tIE9wIE5vZGUgLS0tICovCgogICAgLm9wID4gLm5vZGVzaGFwZSA+IC5ub2RlY29sb3J0YXJnZXQsCiAgICAub3AgPiAuYW5ub3RhdGlvbi1ub2RlID4gLm5vZGVjb2xvcnRhcmdldCB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmlsbDogI2ZmZjsKICAgICAgc3Ryb2tlOiAjY2NjOwogICAgfQoKICAgIC5vcC5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgLm9wLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQoKICAgIC5vcC5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgLm9wLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLyogLS0tIFNlcmllcyBOb2RlIC0tLSAqLwoKICAgIC8qIEJ5IGRlZmF1bHQsIGRvbid0IHNob3cgdGhlIHNlcmllcyBiYWNrZ3JvdW5kIDxyZWN0Pi4gKi8KICAgIC5zZXJpZXMgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgIGZpbGw6IGhzbCgwLCAwJSwgNzAlKTsKICAgICAgZmlsbC1vcGFjaXR5OiAwOwogICAgICBzdHJva2UtZGFzaGFycmF5OiA1LCA1OwogICAgICBzdHJva2Utb3BhY2l0eTogMDsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQoKICAgIC8qIE9uY2UgZXhwYW5kZWQsIHNob3cgdGhlIHNlcmllcyBiYWNrZ3JvdW5kIDxyZWN0PiBhbmQgaGlkZSB0aGUgPHVzZT4uICovCiAgICAuc2VyaWVzLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBmaWxsLW9wYWNpdHk6IDAuMTU7CiAgICAgIHN0cm9rZTogaHNsKDAsIDAlLCA3MCUpOwogICAgICBzdHJva2Utb3BhY2l0eTogMTsKICAgIH0KICAgIC5zZXJpZXMuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gdXNlIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIC8qKgogKiBUT0RPOiBTaW1wbGlmeSB0aGlzIGJ5IGFwcGx5aW5nIGEgc3RhYmxlIGNsYXNzIG5hbWUgdG8gYWxsIDxnPgogKiBlbGVtZW50cyB0aGF0IGN1cnJlbnRseSBoYXZlIGVpdGhlciB0aGUgbm9kZXNoYXBlIG9yIGFubm90YXRpb24tbm9kZSBjbGFzc2VzLgogKi8KICAgIC5zZXJpZXMgPiAubm9kZXNoYXBlID4gdXNlLAogICAgLnNlcmllcyA+IC5hbm5vdGF0aW9uLW5vZGUgPiB1c2UgewogICAgICBzdHJva2U6ICNjY2M7CiAgICB9CiAgICAuc2VyaWVzLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IHVzZSwKICAgIC5zZXJpZXMuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLnNlcmllcy5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAuc2VyaWVzLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHVzZSB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLnNlcmllcy5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAuYW5ub3RhdGlvbi5zZXJpZXMuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAvKiAtLS0gQnJpZGdlIE5vZGUgLS0tICovCiAgICAuYnJpZGdlID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBzdHJva2U6ICNmMGY7CiAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gU3RydWN0dXJhbCBFbGVtZW50cyAtLS0gKi8KICAgIC5lZGdlID4gcGF0aC5lZGdlbGluZS5zdHJ1Y3R1cmFsIHsKICAgICAgc3Ryb2tlOiAjZjBmOwogICAgICBvcGFjaXR5OiAwLjI7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLyogUmVmZXJlbmNlIEVkZ2UgKi8KICAgIC5lZGdlID4gcGF0aC5lZGdlbGluZS5yZWZlcmVuY2VlZGdlIHsKICAgICAgc3Ryb2tlOiAjZmZiNzRkOwogICAgICBvcGFjaXR5OiAxOwogICAgfQoKICAgIC8qIC0tLSBTZXJpZXMgTm9kZXMgLS0tICovCgogICAgLyogSGlkZSB0aGUgcmVjdCBmb3IgYSBzZXJpZXMnIGFubm90YXRpb24uICovCiAgICAuc2VyaWVzID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC8qIC0tLSBOb2RlIGxhYmVsIC0tLSAqLwoKICAgIC5ub2RlIHsKICAgICAgLyogUHJvdmlkZSBhIGhpbnQgdG8gYnJvd3NlcnMgdG8gYXZvaWQgdXNpbmcgdGhlaXIgc3RhdGljIHJhc3Rlcml6YXRpb24KICAgICAgYXQgaW5pdGlhbCBzY2FsZSwgd2hpY2ggbG9va3MgdmVyeSBwaXhlbGF0ZWQgb24gQ2hyb21pdW0gd2hlbiB6b29tZWQgaW4uCiAgICAgIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGRvICpub3QqIHVzZSAnd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybScgYW5kCiAgICAgICd0cmFuc2xhdGVaKDApIGhlcmUsIHdoaWNoIGludHJvZHVjZSBibHVycmluZXNzIG9uIEZpcmVmb3guCiAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvNDc0NCAqLwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMXB4KTsKICAgIH0KCiAgICAubm9kZSA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiAjNDQ0OwogICAgfQoKICAgIC5tZXRhLmV4cGFuZGVkID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBmb250LXNpemU6IDlweDsKICAgIH0KCiAgICAuc2VyaWVzID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBmb250LXNpemU6IDhweDsKICAgIH0KCiAgICAub3AgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGZvbnQtc2l6ZTogNnB4OwogICAgfQoKICAgIC5icmlkZ2UgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLm5vZGUubWV0YS5leHBhbmRlZCA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgY3Vyc29yOiBub3JtYWw7CiAgICB9CgogICAgLmFubm90YXRpb24ubWV0YS5oaWdobGlnaHRlZCA+IHRleHQuYW5ub3RhdGlvbi1sYWJlbCB7CiAgICAgIGZpbGw6ICM1MGEzZjc7CiAgICB9CgogICAgLmFubm90YXRpb24ubWV0YS5zZWxlY3RlZCA+IHRleHQuYW5ub3RhdGlvbi1sYWJlbCB7CiAgICAgIGZpbGw6ICM0Mjg1ZjQ7CiAgICB9CgogICAgLyogLS0tIEFubm90YXRpb24gLS0tICovCgogICAgLyogb25seSBhcHBsaWVkIGZvciBhbm5vdGF0aW9ucyB0aGF0IGFyZSBub3Qgc3VtbWFyeSBvciBjb25zdGFudC4KKC5zdW1tYXJ5LCAuY29uc3RhbnQgZ2V0cyBvdmVycmlkZGVuIGJlbG93KSAqLwogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gKiB7CiAgICAgIHN0cm9rZS13aWR0aDogMC41OwogICAgICBzdHJva2UtZGFzaGFycmF5OiAxLCAxOwogICAgfQoKICAgIC5hbm5vdGF0aW9uLnN1bW1hcnkgPiAuYW5ub3RhdGlvbi1ub2RlID4gKiwKICAgIC5hbm5vdGF0aW9uLmNvbnN0YW50ID4gLmFubm90YXRpb24tbm9kZSA+ICogewogICAgICBzdHJva2Utd2lkdGg6IDE7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgZmlsbDogbm9uZTsKICAgICAgc3Ryb2tlOiAjYWFhOwogICAgICBzdHJva2Utd2lkdGg6IDAuNTsKICAgICAgbWFya2VyLWVuZDogdXJsKCNhbm5vdGF0aW9uLWFycm93aGVhZCk7CiAgICB9CgogICAgLmZhZGVkIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZSB7CiAgICAgIG1hcmtlci1lbmQ6IHVybCgjYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgfQoKICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZCk7CiAgICB9CgogICAgLmZhZGVkIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1jb250cm9sLWVkZ2UgewogICAgICBzdHJva2UtZGFzaGFycmF5OiAxLCAxOwogICAgfQoKICAgICNhbm5vdGF0aW9uLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNhYWE7CiAgICB9CgogICAgI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIHsKICAgICAgZmlsbDogI2UwZDRiMzsKICAgIH0KCiAgICAjcmVmLWFubm90YXRpb24tYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2FhYTsKICAgIH0KCiAgICAjcmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIHsKICAgICAgZmlsbDogI2UwZDRiMzsKICAgIH0KCiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWxhYmVsIHsKICAgICAgZm9udC1zaXplOiA1cHg7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbGFiZWwuYW5ub3RhdGlvbi1lbGxpcHNpcyB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KCiAgICAvKiBIaWRlIGFubm90YXRpb25zIG9uIGV4cGFuZGVkIG1ldGEgbm9kZXMgc2luY2UgdGhleSdyZSByZWR1bmRhbnQuICovCiAgICAuZXhwYW5kZWQgPiAuaW4tYW5ub3RhdGlvbnMsCiAgICAuZXhwYW5kZWQgPiAub3V0LWFubm90YXRpb25zIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gQW5ub3RhdGlvbjogQ29uc3RhbnQgLS0tICovCgogICAgLmNvbnN0YW50ID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6IHdoaXRlOwogICAgICBzdHJva2U6ICM4NDg0ODQ7CiAgICB9CgogICAgLmNvbnN0YW50LnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICB9CgogICAgLmNvbnN0YW50LmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgIH0KCiAgICAvKiAtLS0gQW5ub3RhdGlvbjogU3VtbWFyeSAtLS0gKi8KCiAgICAuc3VtbWFyeSA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiAjZGI0NDM3OwogICAgICBzdHJva2U6ICNkYjQ0Mzc7CiAgICB9CgogICAgLnN1bW1hcnkuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIGZpbGw6ICNhNTI3MTQ7CiAgICAgIHN0cm9rZTogI2E1MjcxNDsKICAgIH0KCiAgICAuc3VtbWFyeS5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxLjU7CiAgICB9CgogICAgLyogLS0tIEVkZ2UgLS0tICovCgogICAgLmVkZ2UgPiBwYXRoLmVkZ2VsaW5lIHsKICAgICAgZmlsbDogbm9uZTsKICAgICAgc3Ryb2tlOiAjYmJiOwogICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgIHN0cm9rZS13aWR0aDogMC43NTsKICAgIH0KCiAgICAuZWRnZSAuc2VsZWN0YWJsZWVkZ2UgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgLnNlbGVjdGVkZWRnZSA+IHBhdGguZWRnZWxpbmUgewogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIHN0cm9rZTogI2YwMDsKICAgIH0KCiAgICAuZWRnZS5zZWxlY3RlZGVkZ2UgdGV4dCB7CiAgICAgIGZpbGw6ICMwMDA7CiAgICB9CgogICAgLyogTGFiZWxzIHNob3dpbmcgdGVuc29yIHNoYXBlcyBvbiBlZGdlcyAqLwogICAgLmVkZ2UgPiB0ZXh0IHsKICAgICAgZm9udC1zaXplOiAzLjVweDsKICAgICAgZmlsbDogIzY2NjsKICAgIH0KCiAgICAuZGF0YWZsb3ctYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2JiYjsKICAgIH0KCiAgICAucmVmZXJlbmNlLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNmZmI3NGQ7CiAgICB9CgogICAgLnNlbGVjdGVkLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNmMDA7CiAgICB9CgogICAgLmVkZ2UgLmNvbnRyb2wtZGVwIHsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMiwgMjsKICAgIH0KCiAgICAvKiAtLS0gR3JvdXAgbm9kZSBleHBhbmQvY29sbGFwc2UgYnV0dG9uIC0tLSAqLwoKICAgIC8qIEhpZGVzIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIHdoZW4gYSBub2RlIGlzbid0IGV4cGFuZGVkIG9yIGhpZ2hsaWdodGVkLiBVc2luZwogICBpbmNyZWRpYmx5IHNtYWxsIG9wYWNpdHkgc28gdGhhdCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSA8Zz4gcGFyZW50IHN0aWxsIHRha2VzCiAgIHRoaXMgY29udGFpbmVyIGludG8gYWNjb3VudCBldmVuIHdoZW4gaXQgaXNuJ3QgdmlzaWJsZSAqLwogICAgLm5vZGU6bm90KC5oaWdobGlnaHRlZCk6bm90KC5leHBhbmRlZCkgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciB7CiAgICAgIG9wYWNpdHk6IDAuMDE7CiAgICB9CiAgICAubm9kZS5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogICAgLmJ1dHRvbmNpcmNsZSB7CiAgICAgIGZpbGw6ICNlNzgxMWQ7CiAgICB9CiAgICAuYnV0dG9uY2lyY2xlOmhvdmVyIHsKICAgICAgZmlsbDogI2I5NjcxNzsKICAgIH0KICAgIC5leHBhbmRidXR0b24sCiAgICAuY29sbGFwc2VidXR0b24gewogICAgICBzdHJva2U6IHdoaXRlOwogICAgfQogICAgLyogRG8gbm90IGxldCB0aGUgcGF0aCBlbGVtZW50cyBpbiB0aGUgYnV0dG9uIHRha2UgcG9pbnRlciBmb2N1cyAqLwogICAgLm5vZGUgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5leHBhbmRidXR0b24sCiAgICAubm9kZSA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyID4gLmNvbGxhcHNlYnV0dG9uIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CiAgICAvKiBPbmx5IHNob3cgdGhlIGV4cGFuZCBidXR0b24gd2hlbiBhIG5vZGUgaXMgY29sbGFwc2VkIGFuZCBvbmx5IHNob3cgdGhlCiAgIGNvbGxhcHNlIGJ1dHRvbiB3aGVuIGEgbm9kZSBpcyBleHBhbmRlZC4gKi8KICAgIC5ub2RlLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuZXhwYW5kYnV0dG9uIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgIC5ub2RlOm5vdCguZXhwYW5kZWQpID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuY29sbGFwc2VidXR0b24gewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5oZWFsdGgtcGlsbC1zdGF0cyB7CiAgICAgIGZvbnQtc2l6ZTogNHB4OwogICAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgfQoKICAgIC5oZWFsdGgtcGlsbCByZWN0IHsKICAgICAgZmlsdGVyOiB1cmwoI2hlYWx0aC1waWxsLXNoYWRvdyk7CiAgICAgIHJ4OiAzOwogICAgICByeTogMzsKICAgIH0KCiAgICAudGl0bGVDb250YWluZXIgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHRvcDogMjBweDsKICAgIH0KCiAgICAudGl0bGUsCiAgICAuYXV4VGl0bGUsCiAgICAuZnVuY3Rpb25MaWJyYXJ5VGl0bGUgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB9CgogICAgI21pbmltYXAgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHJpZ2h0OiAyMHB4OwogICAgICBib3R0b206IDIwcHg7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNGQ0ZDQ7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB1bCB7CiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgbWFyZ2luOiAwOwogICAgICBwYWRkaW5nOiAwOwogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB1bCBsaSB7CiAgICAgIHBhZGRpbmc6IDRweCAxNnB4OwogICAgfQoKICAgIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjM5MTNlOwogICAgICBjb2xvcjogd2hpdGU7CiAgICB9CiAgPC9zdHlsZT4KICA8ZGl2IGNsYXNzPSJ0aXRsZUNvbnRhaW5lciI+CiAgICA8ZGl2IGlkPSJ0aXRsZSIgY2xhc3M9InRpdGxlIj5NYWluIEdyYXBoPC9kaXY+CiAgICA8ZGl2IGlkPSJhdXhUaXRsZSIgY2xhc3M9ImF1eFRpdGxlIj5BdXhpbGlhcnkgTm9kZXM8L2Rpdj4KICAgIDxkaXYgaWQ9ImZ1bmN0aW9uTGlicmFyeVRpdGxlIiBjbGFzcz0iZnVuY3Rpb25MaWJyYXJ5VGl0bGUiPkZ1bmN0aW9uczwvZGl2PgogIDwvZGl2PgogIDxzdmcgaWQ9InN2ZyI+CiAgICA8ZGVmcz4KICAgICAgPCEtLSBBcnJvdyBoZWFkcyBmb3IgcmVmZXJlbmNlIGVkZ2UgcGF0aHMgb2YgZGlmZmVyZW50IHByZWRlZmluZWQgc2l6ZXMgcGVyIGNvbG9yLiAtLT4KICAgICAgPHBhdGgKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIgogICAgICAgIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIKICAgICAgPjwvcGF0aD4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIgogICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLXNtYWxsIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQtbWVkaXVtIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMTMiCiAgICAgICAgbWFya2VySGVpZ2h0PSIxMyIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0icmVmZXJlbmNlLWFycm93aGVhZCIKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjE2IgogICAgICAgIG1hcmtlckhlaWdodD0iMTYiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQteGxhcmdlIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMjAiCiAgICAgICAgbWFya2VySGVpZ2h0PSIyMCIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CgogICAgICA8IS0tIEFycm93IGhlYWRzIGZvciBkYXRhZmxvdyBlZGdlIHBhdGhzIG9mIGRpZmZlcmVudCBwcmVkZWZpbmVkIHNpemVzIHBlciBjb2xvci4gLS0+CiAgICAgIDxwYXRoCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1wYXRoIgogICAgICAgIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIKICAgICAgPjwvcGF0aD4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1zbWFsbCIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLW1lZGl1bSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjEzIgogICAgICAgIG1hcmtlckhlaWdodD0iMTMiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0iZGF0YWZsb3ctYXJyb3doZWFkIgogICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtbGFyZ2UiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIxNiIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjE2IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLXhsYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjIwIgogICAgICAgIG1hcmtlckhlaWdodD0iMjAiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CgogICAgICA8IS0tIEFycm93IGhlYWQgZm9yIGFubm90YXRpb24gZWRnZSBwYXRocy4gLS0+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0iYW5ub3RhdGlvbi1hcnJvd2hlYWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjUiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgNSwyLjUgTCAwLDUgTCAwLDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0iYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjUiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgNSwyLjUgTCAwLDUgTCAwLDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0icmVmLWFubm90YXRpb24tYXJyb3doZWFkIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSIwIgogICAgICAgIHJlZlk9IjIuNSIKICAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgID4KICAgICAgICA8cGF0aCBkPSJNIDUsMCBMIDAsMi41IEwgNSw1IEwgNSwwIj48L3BhdGg+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgaWQ9InJlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMCIKICAgICAgICByZWZZPSIyLjUiCiAgICAgICAgb3JpZW50PSJhdXRvIgogICAgICA+CiAgICAgICAgPHBhdGggZD0iTSA1LDAgTCAwLDIuNSBMIDUsNSBMIDUsMCI+PC9wYXRoPgogICAgICA8L21hcmtlcj4KICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBlbGxpcHNlLiAtLT4KICAgICAgPGVsbGlwc2UKICAgICAgICBpZD0ib3Atbm9kZS1zdGFtcCIKICAgICAgICByeD0iNy41IgogICAgICAgIHJ5PSIzIgogICAgICAgIHN0cm9rZT0iaW5oZXJpdCIKICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICA+PC9lbGxpcHNlPgogICAgICA8IS0tIFRlbXBsYXRlIGZvciBhbiBPcCBub2RlIGFubm90YXRpb24gZWxsaXBzZSAoc21hbGxlcikuIC0tPgogICAgICA8ZWxsaXBzZQogICAgICAgIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiCiAgICAgICAgcng9IjUiCiAgICAgICAgcnk9IjIiCiAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgIGZpbGw9ImluaGVyaXQiCiAgICAgID48L2VsbGlwc2U+CiAgICAgIDwhLS0gVmVydGljYWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLXZlcnRpY2FsLXN0YW1wIj4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI5Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI2Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSIzIj48L3VzZT4KICAgICAgPC9nPgogICAgICA8IS0tIEhvcml6b250YWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjE2IiB5PSI0Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxMiIgeT0iNCI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iNCI+PC91c2U+CiAgICAgIDwvZz4KICAgICAgPCEtLSBIb3Jpem9udGFsbHkgc3RhY2tlZCBzZXJpZXMgb2YgT3Agbm9kZXMgZm9yIGFubm90YXRpb24uIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLWFubm90YXRpb24tc3RhbXAiPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIgeD0iOSIgeT0iMiI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1hbm5vdGF0aW9uLXN0YW1wIiB4PSI3IiB5PSIyIj48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjUiIHk9IjIiPjwvdXNlPgogICAgICA8L2c+CiAgICAgIDxzdmcKICAgICAgICBpZD0ic3VtbWFyeS1pY29uIgogICAgICAgIGZpbGw9IiM4NDg0ODQiCiAgICAgICAgaGVpZ2h0PSIxMiIKICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgd2lkdGg9IjEyIgogICAgICA+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiCiAgICAgICAgPjwvcGF0aD4KICAgICAgPC9zdmc+CgogICAgICA8IS0tIEhhdGNoIHBhdHRlcm5zIGZvciBmYWRlZCBvdXQgbm9kZXMuIC0tPgogICAgICA8cGF0dGVybgogICAgICAgIGlkPSJyZWN0SGF0Y2giCiAgICAgICAgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiCiAgICAgICAgd2lkdGg9IjUiCiAgICAgICAgaGVpZ2h0PSI1IgogICAgICAgIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iNSIgc3R5bGU9InN0cm9rZS13aWR0aDogMSI+PC9saW5lPgogICAgICA8L3BhdHRlcm4+CiAgICAgIDxwYXR0ZXJuCiAgICAgICAgaWQ9ImVsbGlwc2VIYXRjaCIKICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIKICAgICAgICB3aWR0aD0iMiIKICAgICAgICBoZWlnaHQ9IjIiCiAgICAgICAgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSIyIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgIDwvcGF0dGVybj4KCiAgICAgIDwhLS0gQSBzaGFkb3cgZm9yIGhlYWx0aCBwaWxscy4gLS0+CiAgICAgIDxmaWx0ZXIKICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc2hhZG93IgogICAgICAgIHg9Ii00MCUiCiAgICAgICAgeT0iLTQwJSIKICAgICAgICB3aWR0aD0iMTgwJSIKICAgICAgICBoZWlnaHQ9IjE4MCUiCiAgICAgID4KICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgaW49IlNvdXJjZUFscGhhIiBzdGREZXZpYXRpb249IjAuOCI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIwIiByZXN1bHQ9Im9mZnNldGJsdXIiPjwvZmVPZmZzZXQ+CiAgICAgICAgPGZlRmxvb2QgZmxvb2QtY29sb3I9IiMwMDAwMDAiPjwvZmVGbG9vZD4KICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPSJvZmZzZXRibHVyIiBvcGVyYXRvcj0iaW4iPjwvZmVDb21wb3NpdGU+CiAgICAgICAgPGZlTWVyZ2U+CiAgICAgICAgICA8ZmVNZXJnZU5vZGU+PC9mZU1lcmdlTm9kZT4KICAgICAgICAgIDxmZU1lcmdlTm9kZSBpbj0iU291cmNlR3JhcGhpYyI+PC9mZU1lcmdlTm9kZT4KICAgICAgICA8L2ZlTWVyZ2U+CiAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPCEtLSBNYWtlIGEgbGFyZ2UgcmVjdGFuZ2xlIHRoYXQgZmlsbHMgdGhlIHN2ZyBzcGFjZSBzbyB0aGF0CiAgem9vbSBldmVudHMgZ2V0IGNhcHR1cmVkIG9uIHNhZmFyaSAtLT4KICAgIDxyZWN0IGZpbGw9IndoaXRlIiB3aWR0aD0iMTAwMDAiIGhlaWdodD0iMTAwMDAiPjwvcmVjdD4KICAgIDxnIGlkPSJyb290Ij48L2c+CiAgPC9zdmc+CiAgPHRmLWdyYXBoLW1pbmltYXAgaWQ9Im1pbmltYXAiPjwvdGYtZ3JhcGgtbWluaW1hcD4KICA8ZGl2IGlkPSJjb250ZXh0TWVudSIgY2xhc3M9ImNvbnRleHQtbWVudSI+PC9kaXY+CmA7bGV0IFVadD1jbGFzcyBleHRlbmRzKGNyKGdsKHdlKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl96b29tZWQ9ITEsdGhpcy5fem9vbVN0YXJ0Q29vcmRzPW51bGwsdGhpcy5fem9vbVRyYW5zZm9ybT1udWxsLHRoaXMuX21heFpvb21EaXN0YW5jZUZvckNsaWNrPTIwLHRoaXMuX25vZGVHcm91cEluZGV4PXt9LHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4PXt9LHRoaXMuX2VkZ2VHcm91cEluZGV4PXt9LHRoaXMubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplPTksdGhpcy5taW5NZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemU9Nix0aGlzLm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQ9MTEsdGhpcy5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoPTE4fWdldE5vZGUodCl7cmV0dXJuIHRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUodCl9aXNOb2RlRXhwYW5kZWQodCl7cmV0dXJuIHQuZXhwYW5kZWR9c2V0Tm9kZUV4cGFuZGVkKHQpe3RoaXMuX2J1aWxkKHRoaXMucmVuZGVySGllcmFyY2h5KSx0aGlzLl91cGRhdGVMYWJlbHMoIXRoaXMuX3pvb21lZCl9cGFuVG9Ob2RlKHQpeyhmdW5jdGlvbiBlKHQsbixpLHIpe2NvbnN0IG89RHUobikuc2VsZWN0KGBbZGF0YS1uYW1lPSIke3R9Il1gKS5ub2RlKCk7aWYoIW8pcmV0dXJuIGNvbnNvbGUud2FybihgcGFuVG9Ob2RlKCkgZmFpbGVkIGZvciBub2RlIG5hbWUgIiR7dH0iYCksITE7bGV0IGE9by5nZXRCQm94KCkscz1vLmdldFNjcmVlbkNUTSgpLGw9bi5jcmVhdGVTVkdQb2ludCgpLGM9bi5jcmVhdGVTVkdQb2ludCgpO2wueD1hLngsbC55PWEueSxjLng9YS54K2Eud2lkdGgsYy55PWEueSthLmhlaWdodCxsPWwubWF0cml4VHJhbnNmb3JtKHMpLGM9Yy5tYXRyaXhUcmFuc2Zvcm0ocyk7bGV0IHU9KHQsZSxuLGkpPT4hKHQ+biYmZTxpKSxoPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y29uc3QgZD1oLnRvcCtoLmhlaWdodC0xNTA7aWYodShsLngsYy54LGgubGVmdCxoLmxlZnQraC53aWR0aC0zMjApfHx1KGwueSxjLnksaC50b3AsZCkpe2xldCB0PWgubGVmdCtoLndpZHRoLzItKGwueCtjLngpLzIsZT1oLnRvcCtoLmhlaWdodC8yLShsLnkrYy55KS8yO2NvbnN0IGk9WUkobik7cmV0dXJuIER1KG4pLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLmNhbGwoci50cmFuc2xhdGVCeSx0L2kuayxlL2kuayksITB9cmV0dXJuITF9KSh0LHRoaXMuJC5zdmcsMCx0aGlzLl96b29tKSYmKHRoaXMuX3pvb21lZD0hMCl9Z2V0R3JhcGhTdmdSb290KCl7cmV0dXJuIHRoaXMuJC5zdmd9Z2V0Q29udGV4dE1lbnUoKXtyZXR1cm4gdGhpcy4kLmNvbnRleHRNZW51fV9yZXNldFN0YXRlKCl7dGhpcy5fbm9kZUdyb3VwSW5kZXg9e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXg9e30sdGhpcy5fZWRnZUdyb3VwSW5kZXg9e30sdGhpcy5fdXBkYXRlTGFiZWxzKCExKSxEdSh0aGlzLiQuc3ZnKS5zZWxlY3QoIiNyb290Iikuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCksQVp0KHRoaXMuJC5zdmcpfV9idWlsZCh0KXt0aGlzLnRlbXBsYXRlSW5kZXg9dC5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLGQkdCgidGYtZ3JhcGgtc2NlbmUgKGxheW91dCk6IixmdW5jdGlvbigpe0dLdCh0LnJvb3QpfS5iaW5kKHRoaXMpLEJBdC5SRU5ERVJfU0NFTkVfTEFZT1VUKSxkJHQoInRmLWdyYXBoLXNjZW5lIChidWlsZCBzY2VuZSk6IixmdW5jdGlvbigpe0JadChEdSh0aGlzLiQucm9vdCksdC5yb290LHRoaXMpLChmdW5jdGlvbiBlKHQsbil7RHUodCkub24oImNsaWNrIiwoKCk9PntuLmZpcmUoImdyYXBoLXNlbGVjdCIpfSkpfSkodGhpcy4kLnN2Zyx0aGlzKSx0aGlzLl91cGRhdGVJbnB1dFRyYWNlKCl9LmJpbmQodGhpcyksQkF0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORSksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUhlYWx0aFBpbGxzKHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpLHRoaXMubWluaW1hcC51cGRhdGUoKX0uYmluZCh0aGlzKSxVS3QuYW5pbWF0aW9uLmR1cmF0aW9uKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fem9vbT1uTigpLm9uKCJlbmQiLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVN0YXJ0Q29vcmRzJiYoTWF0aC5zcXJ0KE1hdGgucG93KHRoaXMuX3pvb21TdGFydENvb3Jkcy54LXRoaXMuX3pvb21UcmFuc2Zvcm0ueCwyKStNYXRoLnBvdyh0aGlzLl96b29tU3RhcnRDb29yZHMueS10aGlzLl96b29tVHJhbnNmb3JtLnksMikpPHRoaXMuX21heFpvb21EaXN0YW5jZUZvckNsaWNrP3RoaXMuX2ZpcmVFbmFibGVDbGljaygpOnNldFRpbWVvdXQodGhpcy5fZmlyZUVuYWJsZUNsaWNrLmJpbmQodGhpcyksNTApKTt0aGlzLl96b29tU3RhcnRDb29yZHM9bnVsbH0uYmluZCh0aGlzKSkub24oInpvb20iLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVRyYW5zZm9ybT1NdS50cmFuc2Zvcm0sdGhpcy5fem9vbVN0YXJ0Q29vcmRzfHwodGhpcy5fem9vbVN0YXJ0Q29vcmRzPXRoaXMuX3pvb21UcmFuc2Zvcm0sdGhpcy5maXJlKCJkaXNhYmxlLWNsaWNrIikpLHRoaXMuX3pvb21lZD0hMCxEdSh0aGlzLiQucm9vdCkuYXR0cigidHJhbnNmb3JtIixNdS50cmFuc2Zvcm0pLHRoaXMubWluaW1hcC56b29tKE11LnRyYW5zZm9ybSl9LmJpbmQodGhpcykpLER1KHRoaXMuJC5zdmcpLmNhbGwodGhpcy5fem9vbSkub24oImRibGNsaWNrLnpvb20iLG51bGwpLER1KHdpbmRvdykub24oInJlc2l6ZSIsZnVuY3Rpb24oKXt0aGlzLm1pbmltYXAuem9vbSgpfS5iaW5kKHRoaXMpKSx0aGlzLm1pbmltYXA9dGhpcy4kLm1pbmltYXAuaW5pdCh0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20sVUt0Lm1pbmltYXAuc2l6ZSxVS3Quc3Vic2NlbmUubWV0YS5sYWJlbEhlaWdodCl9YXR0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCEwKX1kZXRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITEpfV9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5yZW5kZXJIaWVyYXJjaHk7dGhpcy5faGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2U9ITEsdGhpcy5fcmVzZXRTdGF0ZSgpLHRoaXMuX2J1aWxkKHQpfV9hbmltYXRlQW5kRml0KCl7IXRoaXMuX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlJiZ0aGlzLl9pc0F0dGFjaGVkJiZzZXRUaW1lb3V0KHRoaXMuZml0LmJpbmQodGhpcyksVUt0LmFuaW1hdGlvbi5kdXJhdGlvbil9X3VwZGF0ZUxhYmVscyh0KXt2YXIgZT10aGlzLiQkKCIudGl0bGUiKSxuPWUuc3R5bGUsaT10aGlzLiQkKCIuYXV4VGl0bGUiKSxyPWkuc3R5bGUsbz10aGlzLiQkKCIuZnVuY3Rpb25MaWJyYXJ5VGl0bGUiKS5zdHlsZTtjb25zdCBhPUR1KHRoaXMuJC5zdmcpO3ZhciBzPWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuQ09SRSkubm9kZSgpO2lmKHQmJnMmJnRoaXMucHJvZ3Jlc3MmJjEwMD09PXRoaXMucHJvZ3Jlc3MudmFsdWUpe3ZhciBsPWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuSU5FWFRSQUNUKS5ub2RlKCl8fGEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuT1VURVhUUkFDVCkubm9kZSgpLGM9cy5nZXRDVE0oKS5lLHU9bD9sLmdldENUTSgpLmU6bnVsbDtuLmRpc3BsYXk9ImlubGluZSIsbi5sZWZ0PWMrInB4IixudWxsIT09dSYmdSE9PWM/KHIuZGlzcGxheT0iaW5saW5lIix1PU1hdGgubWF4KGMrZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx1KSxyLmxlZnQ9dSsicHgiKTpyLmRpc3BsYXk9Im5vbmUiO2xldCB0PWEuc2VsZWN0KCIuIitaS3QuU2NlbmUuR1JPVVArIj4uIitaS3QuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSkubm9kZSgpLGg9dD90LmdldENUTSgpLmU6bnVsbDtudWxsIT09aCYmaCE9PXU/KG8uZGlzcGxheT0iaW5saW5lIixoPU1hdGgubWF4KHUraS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxoKSxvLmxlZnQ9aCsicHgiKTpvLmRpc3BsYXk9Im5vbmUifWVsc2Ugbi5kaXNwbGF5PSJub25lIixyLmRpc3BsYXk9Im5vbmUiLG8uZGlzcGxheT0ibm9uZSJ9bm9kZUNvbG9yc0NoYW5nZWQoKXtudWxsIT10aGlzLnJlbmRlckhpZXJhcmNoeSYmKHRoaXMudGVtcGxhdGVJbmRleD10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLENlLmV4cG9ydHMuZWFjaCh0aGlzLl9ub2RlR3JvdXBJbmRleCwoKHQsZSk9Pnt0aGlzLl91cGRhdGVOb2RlU3RhdGUoZSl9KSksdGhpcy5taW5pbWFwLnVwZGF0ZSgpKX1maXQoKXt0aGlzLl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZT0hMCwoZnVuY3Rpb24gdChlLG4saSxyKXtsZXQgbz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9bnVsbDt0cnl7aWYoYT1uLmdldEJCb3goKSwwPT09YS53aWR0aClyZXR1cm59Y2F0Y2godCl7cmV0dXJufWxldCBzPS45Kk1hdGgubWluKG8ud2lkdGgvYS53aWR0aCxvLmhlaWdodC9hLmhlaWdodCwyKSxsPVVLdC5ncmFwaDtjb25zdCBjPXFJLnNjYWxlKHMpLnRyYW5zbGF0ZShsLnBhZGRpbmcucGFkZGluZ0xlZnQsbC5wYWRkaW5nLnBhZGRpbmdUb3ApO0R1KGUpLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLmNhbGwoaS50cmFuc2Zvcm0sYykub24oImVuZC5maXR0ZWQiLCgoKT0+e2kub24oImVuZC5maXR0ZWQiLG51bGwpLHIoKX0pKX0pKHRoaXMuJC5zdmcsdGhpcy4kLnJvb3QsdGhpcy5fem9vbSxmdW5jdGlvbigpe3RoaXMuX3pvb21lZD0hMX0uYmluZCh0aGlzKSl9Z2V0SW1hZ2VCbG9iKCl7cmV0dXJuIHRoaXMubWluaW1hcC5nZXRJbWFnZUJsb2IoKX1pc05vZGVTZWxlY3RlZCh0KXtyZXR1cm4gdD09PXRoaXMuc2VsZWN0ZWROb2RlfWlzTm9kZUhpZ2hsaWdodGVkKHQpe3JldHVybiB0PT09dGhpcy5oaWdobGlnaHRlZE5vZGV9YWRkQW5ub3RhdGlvbkdyb3VwKHQsZSxuKXt2YXIgaT10Lm5vZGUubmFtZTt0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXT10aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXXx8e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbaV1bZS5ub2RlLm5hbWVdPW59Z2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFt0XX1yZW1vdmVBbm5vdGF0aW9uR3JvdXAodCxlKXtkZWxldGUgdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbdC5ub2RlLm5hbWVdW2Uubm9kZS5uYW1lXX1hZGROb2RlR3JvdXAodCxlKXt0aGlzLl9ub2RlR3JvdXBJbmRleFt0XT1lfWdldE5vZGVHcm91cCh0KXtyZXR1cm4gdGhpcy5fbm9kZUdyb3VwSW5kZXhbdF19cmVtb3ZlTm9kZUdyb3VwKHQpe2RlbGV0ZSB0aGlzLl9ub2RlR3JvdXBJbmRleFt0XX1hZGRFZGdlR3JvdXAodCxlKXt0aGlzLl9lZGdlR3JvdXBJbmRleFt0XT1lfWdldEVkZ2VHcm91cCh0KXtyZXR1cm4gdGhpcy5fZWRnZUdyb3VwSW5kZXhbdF19X3VwZGF0ZUhlYWx0aFBpbGxzKCl7IShmdW5jdGlvbiB0KGUsbixpKXtpZighbilyZXR1cm47bGV0IHI9MTtEdShlKS5zZWxlY3RBbGwoImcubm9kZXNoYXBlIikuZWFjaCgoZnVuY3Rpb24odCl7Y29uc3QgZT1uW3Qubm9kZS5uYW1lXTtpWnQodGhpcyxlP2VbaV06bnVsbCx0LHIrKyl9KSl9KSh0aGlzLiQuc3ZnLHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpfV91cGRhdGVOb2RlU3RhdGUodCl7dmFyIGU9dGhpcy5nZXROb2RlKHQpLG49dGhpcy5nZXROb2RlR3JvdXAodCk7KG4mJlBadChuLGUsdGhpcyksZS5ub2RlLnR5cGU9PT1BJHQuTUVUQSYmZS5ub2RlLmFzc29jaWF0ZWRGdW5jdGlvbiYmIWUuaXNMaWJyYXJ5RnVuY3Rpb24pJiZQWnQoRHUoIi4iK1pLdC5TY2VuZS5HUk9VUCsiPi4iK1pLdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKycgZ1tkYXRhLW5hbWU9IicrKFQkdCtlLm5vZGUuYXNzb2NpYXRlZEZ1bmN0aW9uKSsnIl0nKSxlLHRoaXMpO3ZhciBpPXRoaXMuZ2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpO0NlLmV4cG9ydHMuZWFjaChpLCgodCxuKT0+e1BadCh0LGUsdGhpcyxaS3QuQW5ub3RhdGlvbi5OT0RFKX0pKX1fc2VsZWN0ZWROb2RlQ2hhbmdlZCh0LGUpe2lmKHQhPT1lJiYoZSYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKGUpLHQpKXt0aGlzLm1pbmltYXAudXBkYXRlKCk7Zm9yKHZhciBuLGk9dGhpcy5yZW5kZXJIaWVyYXJjaHkuaGllcmFyY2h5Lm5vZGUodCkscj1bXTtudWxsIT1pLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5uYW1lIT1FJHQ7KXIucHVzaCgoaT1pLnBhcmVudE5vZGUpLm5hbWUpO0NlLmV4cG9ydHMuZm9yRWFjaFJpZ2h0KHIsKHQ9Pnt0aGlzLnJlbmRlckhpZXJhcmNoeS5idWlsZFN1YmhpZXJhcmNoeSh0KTt2YXIgZT10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpO2Uubm9kZS5pc0dyb3VwTm9kZSYmIWUuZXhwYW5kZWQmJihlLmV4cGFuZGVkPSEwLG58fChuPWUpKX0pKSxuJiYodGhpcy5zZXROb2RlRXhwYW5kZWQobiksdGhpcy5fem9vbWVkPSEwKSx0JiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUodCksc2V0VGltZW91dCgoKCk9Pnt0aGlzLnBhblRvTm9kZSh0KX0pLFVLdC5hbmltYXRpb24uZHVyYXRpb24pfX1faGlnaGxpZ2h0ZWROb2RlQ2hhbmdlZCh0LGUpe3QhPT1lJiYodCYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKHQpLGUmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZShlKSl9X29uWm9vbUNoYW5nZWQoKXt0aGlzLl91cGRhdGVMYWJlbHMoIXRoaXMuX3pvb21lZCl9X2ZpcmVFbmFibGVDbGljaygpe3RoaXMuZmlyZSgiZW5hYmxlLWNsaWNrIil9X3VwZGF0ZUlucHV0VHJhY2UoKXtJWnQodGhpcy5nZXRHcmFwaFN2Z1Jvb3QoKSx0aGlzLnJlbmRlckhpZXJhcmNoeSx0aGlzLnNlbGVjdGVkTm9kZSx0aGlzLnRyYWNlSW5wdXRzKX19O1VadC50ZW1wbGF0ZT1WWnQsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsQUt0KV0sVVp0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFVadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sVVp0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFVadC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVVp0LnByb3RvdHlwZSwiX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVVp0LnByb3RvdHlwZSwiX2lzQXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX3pvb20iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9oaWdobGlnaHRlZE5vZGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVWnQucHJvdG90eXBlLCJoaWdobGlnaHRlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9zZWxlY3RlZE5vZGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiaGFuZGxlRWRnZVNlbGVjdGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX29uWm9vbUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxVWnQucHJvdG90eXBlLCJfem9vbWVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFVadC5wcm90b3R5cGUsIl96b29tU3RhcnRDb29yZHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX3pvb21UcmFuc2Zvcm0iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwiX21heFpvb21EaXN0YW5jZUZvckNsaWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sVVp0LnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxVWnQucHJvdG90eXBlLCJfbm9kZUdyb3VwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwiX2Fubm90YXRpb25Hcm91cEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFVadC5wcm90b3R5cGUsIl9lZGdlR3JvdXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxVWnQucHJvdG90eXBlLCJtYXhNZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwibWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFVadC5wcm90b3R5cGUsIm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVVp0LnByb3RvdHlwZSwibWF4TWV0YW5vZGVMYWJlbExlbmd0aCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxVWnQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sVVp0LnByb3RvdHlwZSwibm9kZUNvbnRleHRNZW51SXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVVp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxVWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW2EoInJlbmRlckhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVVp0LnByb3RvdHlwZSwiX3JlbmRlckhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLHQoW2EoIl9pc0F0dGFjaGVkIiwicmVuZGVySGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfYW5pbWF0ZUFuZEZpdCIsbnVsbCksdChbYSgiY29sb3JCeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sVVp0LnByb3RvdHlwZSwibm9kZUNvbG9yc0NoYW5nZWQiLG51bGwpLHQoW2EoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLCJoZWFsdGhQaWxsU3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfdXBkYXRlSGVhbHRoUGlsbHMiLG51bGwpLHQoW2EoInRyYWNlSW5wdXRzIiwic2VsZWN0ZWROb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxVWnQucHJvdG90eXBlLCJfdXBkYXRlSW5wdXRUcmFjZSIsbnVsbCksVVp0PXQoW2koInRmLWdyYXBoLXNjZW5lIildLFVadCk7bGV0IGpadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlbmRlckRlcHRoPTEsdGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMCx0aGlzLmVkZ2VXaWR0aEZ1bmN0aW9uPSIiLHRoaXMuaGFuZGxlTm9kZVNlbGVjdGVkPSIiLHRoaXMuZWRnZUxhYmVsRnVuY3Rpb249IiIsdGhpcy5oYW5kbGVFZGdlU2VsZWN0ZWQ9IiJ9cGFuVG9Ob2RlKHQpe3RoaXMuJCQoInRmLWdyYXBoLXNjZW5lIikucGFuVG9Ob2RlKHQpfV9hdXRvRXh0cmFjdE5vZGVzQ2hhbmdlZCgpe3ZhciB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7aWYodCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmdldE5vZGVNYXAoKSkpZS5pbmNsdWRlPWskdC5VTlNQRUNJRklFRDt0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0KX19X2J1aWxkTmV3UmVuZGVySGllcmFyY2h5KCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTt0JiZ0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0KX1fc3RhdHNDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5zdGF0cyxlPXRoaXMuZGV2aWNlc0ZvclN0YXRzO3RoaXMuZ3JhcGhIaWVyYXJjaHkmJih0JiZlJiYoIShmdW5jdGlvbiBuKHQsZSxpKXtDZS5leHBvcnRzLmVhY2godC5ub2RlcywodD0+e3Quc3RhdHM9bnVsbH0pKSxDZS5leHBvcnRzLmVhY2goZS5kZXZfc3RhdHMsKGU9PntpJiYhaVtlLmRldmljZV18fENlLmV4cG9ydHMuZWFjaChlLm5vZGVfc3RhdHMsKG49PntsZXQgaT1uLm5vZGVfbmFtZSBpbiB0Lm5vZGVzP24ubm9kZV9uYW1lOiQkdChuLm5vZGVfbmFtZSk7aWYoIShpIGluIHQubm9kZXMpKXJldHVybjtsZXQgcj0wO24ubWVtb3J5JiZDZS5leHBvcnRzLmVhY2gobi5tZW1vcnksKHQ9Pnt0LnRvdGFsX2J5dGVzJiYodC50b3RhbF9ieXRlcz4wP3IrPU51bWJlcih0LnRvdGFsX2J5dGVzKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgbWVtb3J5IGFsbG9jYXRpb24gZm9yICIraSkpfSkpO2xldCBvPW51bGw7bi5vdXRwdXQmJihvPUNlLmV4cG9ydHMubWFwKG4ub3V0cHV0LCh0PT5DZS5leHBvcnRzLm1hcCh0LnRlbnNvcl9kZXNjcmlwdGlvbi5zaGFwZS5kaW0sKHQ9Pk51bWJlcih0LnNpemUpKSkpKSksdC5ub2Rlc1tpXS5kZXZpY2U9ZS5kZXZpY2UsbnVsbD09dC5ub2Rlc1tpXS5zdGF0cyYmKHQubm9kZXNbaV0uc3RhdHM9bmV3IGwkdChvKSksdC5ub2Rlc1tpXS5zdGF0cy5hZGRCeXRlc0FsbG9jYXRpb24ociksbi5hbGxfZW5kX3JlbF9taWNyb3MmJihuLmFsbF9lbmRfcmVsX21pY3Jvcz4wP3Qubm9kZXNbaV0uc3RhdHMuYWRkRXhlY3V0aW9uVGltZShuLmFsbF9zdGFydF9taWNyb3Msbi5hbGxfc3RhcnRfbWljcm9zK24uYWxsX2VuZF9yZWxfbWljcm9zKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgcnVudGltZSBmb3IgIitpKSl9KSl9KSl9KSh0aGlzLmJhc2ljR3JhcGgsdCxlKSwoZnVuY3Rpb24gaSh0LGUpe2xldCBuPXt9LGk9e307Q2UuZXhwb3J0cy5lYWNoKHQucm9vdC5sZWF2ZXMoKSwoZT0+e2xldCByPXQubm9kZShlKTtudWxsIT1yLmRldmljZSYmKG5bci5kZXZpY2VdPSEwKSxudWxsIT1yLnhsYUNsdXN0ZXImJihpW3IueGxhQ2x1c3Rlcl09ITApfSkpLHQuZGV2aWNlcz1DZS5leHBvcnRzLmtleXMobiksdC54bGFDbHVzdGVycz1DZS5leHBvcnRzLmtleXMoaSksQ2UuZXhwb3J0cy5lYWNoKHQuZ2V0Tm9kZU1hcCgpLCgodCxlKT0+e3QuaXNHcm91cE5vZGUmJih0LnN0YXRzPW5ldyBsJHQobnVsbCksdC5kZXZpY2VIaXN0b2dyYW09e30pfSkpLENlLmV4cG9ydHMuZWFjaCh0LnJvb3QubGVhdmVzKCksKGU9PntsZXQgbj10Lm5vZGUoZSksaT1uO2Zvcig7bnVsbCE9aS5wYXJlbnROb2RlOyl7aWYobnVsbCE9bi5kZXZpY2Upe2xldCB0PWkucGFyZW50Tm9kZS5kZXZpY2VIaXN0b2dyYW07dFtuLmRldmljZV09KHRbbi5kZXZpY2VdfHwwKSsxfWlmKG51bGwhPW4ueGxhQ2x1c3Rlcil7bGV0IHQ9aS5wYXJlbnROb2RlLnhsYUNsdXN0ZXJIaXN0b2dyYW07dFtuLnhsYUNsdXN0ZXJdPSh0W24ueGxhQ2x1c3Rlcl18fDApKzF9bnVsbCE9bi5zdGF0cyYmaS5wYXJlbnROb2RlLnN0YXRzLmNvbWJpbmUobi5zdGF0cyksaT1pLnBhcmVudE5vZGV9fSkpfSkodGhpcy5ncmFwaEhpZXJhcmNoeSkpLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJncmFwaC1zZWxlY3QiLHRoaXMuX2dyYXBoU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJkaXNhYmxlLWNsaWNrIix0aGlzLl9kaXNhYmxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUtY2xpY2siLHRoaXMuX2VuYWJsZUNsaWNrLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtZXhwYW5kIix0aGlzLl9ub2RlVG9nZ2xlRXhwYW5kLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1zZWxlY3QiLHRoaXMuX25vZGVTZWxlY3RlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtaGlnaGxpZ2h0Iix0aGlzLl9ub2RlSGlnaGxpZ2h0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXVuaGlnaGxpZ2h0Iix0aGlzLl9ub2RlVW5oaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLWV4dHJhY3QiLHRoaXMuX25vZGVUb2dnbGVFeHRyYWN0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHRoaXMuX25vZGVUb2dnbGVTZXJpZXNHcm91cC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImVkZ2Utc2VsZWN0Iix0aGlzLl9lZGdlU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJhbm5vdGF0aW9uLXNlbGVjdCIsdGhpcy5fbm9kZVNlbGVjdGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHRoaXMuX25vZGVIaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFubm90YXRpb24tdW5oaWdobGlnaHQiLHRoaXMuX25vZGVVbmhpZ2hsaWdodGVkLmJpbmQodGhpcykpfV9idWlsZFJlbmRlckhpZXJhcmNoeSh0KXtpZih0LnJvb3QudHlwZSE9PUEkdC5NRVRBKXJldHVybjtjb25zdCBlPXRoaXMsbj1kJHQoIm5ldyB0Zl9ncmFwaF9yZW5kZXIuSGllcmFyY2h5IiwoKCk9Pntjb25zdCBuPW5ldyBBS3QodCwhIXRoaXMuc3RhdHMsdGhpcy5hdXRvRXh0cmFjdE5vZGVzKTtmdW5jdGlvbiBpKHQpe3JldHVybnttaW5WYWx1ZTp0LmRvbWFpbigpWzBdLG1heFZhbHVlOnQuZG9tYWluKClbMV0sc3RhcnRDb2xvcjp0LnJhbmdlKClbMF0sZW5kQ29sb3I6dC5yYW5nZSgpWzFdfX1yZXR1cm4gbi5lZGdlTGFiZWxGdW5jdGlvbj10aGlzLmVkZ2VMYWJlbEZ1bmN0aW9uLG4uZWRnZVdpZHRoRnVuY3Rpb249dGhpcy5lZGdlV2lkdGhGdW5jdGlvbixlLl9zZXRDb2xvckJ5UGFyYW1zKHtjb21wdXRlX3RpbWU6aShuLmNvbXB1dGVUaW1lU2NhbGUpLG1lbW9yeTppKG4ubWVtb3J5VXNhZ2VTY2FsZSksZGV2aWNlOkNlLmV4cG9ydHMubWFwKG4uZGV2aWNlQ29sb3JNYXAuZG9tYWluKCksKGZ1bmN0aW9uKHQpe3JldHVybntkZXZpY2U6dCxjb2xvcjpuLmRldmljZUNvbG9yTWFwKHQpfX0pKSx4bGFfY2x1c3RlcjpDZS5leHBvcnRzLm1hcChuLnhsYUNsdXN0ZXJDb2xvck1hcC5kb21haW4oKSwoZnVuY3Rpb24odCl7cmV0dXJue3hsYV9jbHVzdGVyOnQsY29sb3I6bi54bGFDbHVzdGVyQ29sb3JNYXAodCl9fSkpfSksbn0pLEJBdC5SRU5ERVJfQlVJTERfSElFUkFSQ0hZKTtlLl9zZXRSZW5kZXJIaWVyYXJjaHkobil9X2dldFZpc2libGUodCl7cmV0dXJuIHQ/dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KTp0fWZpdCgpe3RoaXMuJC5zY2VuZS5maXQoKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gdGhpcy4kLnNjZW5lLmdldEltYWdlQmxvYigpfV9ncmFwaENoYW5nZWQoKXt0aGlzLmdyYXBoSGllcmFyY2h5JiYodGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcihpS3QuVEVNUExBVEVTX1VQREFURUQsKCgpPT57dGhpcy4kLnNjZW5lLm5vZGVDb2xvcnNDaGFuZ2VkKCl9KSksdGhpcy5maXJlKCJncmFwaC1zZWxlY3QiKSl9X2dyYXBoU2VsZWN0ZWQodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmKHRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG51bGwpLHRoaXMuc2V0KCJzZWxlY3RlZEVkZ2UiLG51bGwpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9kaXNhYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMX1fZW5hYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH1fc2VsZWN0ZWROb2RlQ2hhbmdlZCgpe3RoaXMuaGFuZGxlTm9kZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZU5vZGVTZWxlY3RlZCh0aGlzLnNlbGVjdGVkTm9kZSl9X3NlbGVjdGVkRWRnZUNoYW5nZWQoKXt2YXIgdD10aGlzLnNlbGVjdGVkRWRnZTt0aGlzLl9kZXNlbGVjdFByZXZpb3VzRWRnZSgpLHQmJih0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuY2xhc3NlZChaS3QuRWRnZS5TRUxFQ1RFRCwhMCksdGhpcy5fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCkpLHRoaXMuaGFuZGxlRWRnZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZUVkZ2VTZWxlY3RlZCh0KX1fbm9kZVNlbGVjdGVkKHQpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3QmJnRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLHQuZGV0YWlsLm5hbWUpLHRoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITB9X2VkZ2VTZWxlY3RlZCh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0JiYodGhpcy5zZXQoIl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAiLHQuZGV0YWlsLmVkZ2VHcm91cCksdGhpcy5zZXQoInNlbGVjdGVkRWRnZSIsdC5kZXRhaWwuZWRnZURhdGEpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9ub2RlSGlnaGxpZ2h0ZWQodCl7dGhpcy5zZXQoImhpZ2hsaWdodGVkTm9kZSIsdC5kZXRhaWwubmFtZSl9X25vZGVVbmhpZ2hsaWdodGVkKHQpe3RoaXMuc2V0KCJoaWdobGlnaHRlZE5vZGUiLG51bGwpfV9ub2RlVG9nZ2xlRXhwYW5kKHQpe3RoaXMuX25vZGVTZWxlY3RlZCh0KTt2YXIgZT10LmRldGFpbC5uYW1lLG49dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZShlKTtuLm5vZGUudHlwZSE9PUEkdC5PUCYmKHRoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KGUpLG4uZXhwYW5kZWQ9IW4uZXhwYW5kZWQsdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLiQuc2NlbmUuc2V0Tm9kZUV4cGFuZGVkKG4pfSksNzUpLGgkdCh7YWN0aW9uSWQ6QkF0Lk5PREVfRVhQQU5TSU9OX1RPR0dMRUQsZXZlbnRMYWJlbDpuLmV4cGFuZGVkPyJleHBhbmRlZCI6ImNvbGxhcHNlZCJ9KSl9X25vZGVUb2dnbGVFeHRyYWN0KHQpe3RoaXMubm9kZVRvZ2dsZUV4dHJhY3QodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZUV4dHJhY3QodCl7Y29uc3QgZT10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpO2Uubm9kZS5pbmNsdWRlPWUubm9kZS5pbmNsdWRlPT1rJHQuSU5DTFVERT9rJHQuRVhDTFVERTplLm5vZGUuaW5jbHVkZT09ayR0LkVYQ0xVREV8fHRoaXMucmVuZGVySGllcmFyY2h5LmlzTm9kZUF1eGlsaWFyeShlKT9rJHQuSU5DTFVERTprJHQuRVhDTFVERSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KSxoJHQoe2FjdGlvbklkOkJBdC5OT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQsZXZlbnRMYWJlbDplLm5vZGUuaW5jbHVkZT09PWskdC5JTkNMVURFPyJBdXhpbGlhcnkgdG8gTWFpbiI6Ik1haW4gdG8gQXV4aWxpYXJ5In0pfV9ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodCl7dGhpcy5ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZVNlcmllc0dyb3VwKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7dmFyIGU9ZiR0KHAkdCh0aGlzKSwxMDAsIk5hbWVzcGFjZSBoaWVyYXJjaHkiKTtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmhpZXJhcmNoeVBhcmFtcykse3Nlcmllc01hcDp0aGlzLmdyYXBoSGllcmFyY2h5LmJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpfSk7c0t0KHRoaXMuYmFzaWNHcmFwaCxuLGUpLnRoZW4oZnVuY3Rpb24odCl7dGhpcy5zZXQoImdyYXBoSGllcmFyY2h5Iix0KSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KX0uYmluZCh0aGlzKSl9X2Rlc2VsZWN0UHJldmlvdXNFZGdlKCl7RHUoIi4iK1pLdC5FZGdlLlNFTEVDVEVEKS5jbGFzc2VkKFpLdC5FZGdlLlNFTEVDVEVELCExKS5lYWNoKCgodCxlKT0+e2lmKHQubGFiZWwpe2NvbnN0IGU9RHUodGhpcykuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIik7dC5sYWJlbC5zdGFydE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dC5sYWJlbC5zdGFydE1hcmtlcklkfSlgKSx0LmxhYmVsLmVuZE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3QubGFiZWwuZW5kTWFya2VySWR9KWApfX0pKX1fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCl7aWYodC5sYWJlbCl7Y29uc3QgZT10LmxhYmVsLnN0YXJ0TWFya2VySWR8fHQubGFiZWwuZW5kTWFya2VySWQ7aWYoZSl7Y29uc3Qgbj1lLnJlcGxhY2UoImRhdGFmbG93LSIsInNlbGVjdGVkLSIpO2xldCBpPXRoaXMuJCQoIiMiK24pO2lmKCFpKXtjb25zdCB0PXRoaXMuJC5zY2VuZS5xdWVyeVNlbGVjdG9yKCIjIitlKTtpPXQuY2xvbmVOb2RlKCEwKSxpLnNldEF0dHJpYnV0ZSgiaWQiLG4pLGkuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQtYXJyb3doZWFkIiksdC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGkpfWNvbnN0IHI9dC5sYWJlbC5zdGFydE1hcmtlcklkPyJtYXJrZXItc3RhcnQiOiJtYXJrZXItZW5kIjt0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIikuc3R5bGUocixgdXJsKCMke259KWApfX19bm90KHQpe3JldHVybiF0fX07alp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICB9CgogICAgICAuYXV0byB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3RpdGxlXV0iPgogICAgICAgICAgPGgyPltbdGl0bGVdXTwvaDI+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGYtZ3JhcGgtc2NlbmUKICAgICAgICAgIGlkPSJzY2VuZSIKICAgICAgICAgIGNsYXNzPSJhdXRvIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9IltbX2dldFZpc2libGUoaGlnaGxpZ2h0ZWROb2RlKV1dIgogICAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICAgIHNlbGVjdGVkLWVkZ2U9Int7c2VsZWN0ZWRFZGdlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBwcm9ncmVzcz0iW1twcm9ncmVzc11dIgogICAgICAgICAgbm9kZS1jb250ZXh0LW1lbnUtaXRlbXM9Iltbbm9kZUNvbnRleHRNZW51SXRlbXNdXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgaGFuZGxlLWVkZ2Utc2VsZWN0ZWQ9IltbaGFuZGxlRWRnZVNlbGVjdGVkXV0iCiAgICAgICAgICB0cmFjZS1pbnB1dHM9IltbdHJhY2VJbnB1dHNdXSIKICAgICAgICA+PC90Zi1ncmFwaC1zY2VuZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxvYnNlcnZlcjoiX2dyYXBoQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsckt0KV0salp0LnByb3RvdHlwZSwiZ3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsTiR0KV0salp0LnByb3RvdHlwZSwiYmFzaWNHcmFwaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJzdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJkZXZpY2VzRm9yU3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxqWnQucHJvdG90eXBlLCJ0aXRsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0salp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJzZWxlY3RlZEVkZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwiX2xhc3RTZWxlY3RlZEVkZ2VHcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0salp0LnByb3RvdHlwZSwiaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGpadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGpadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGpadC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0salp0LnByb3RvdHlwZSwiYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0salp0LnByb3RvdHlwZSwibm9kZUNvbnRleHRNZW51SXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0salp0LnByb3RvdHlwZSwiX3JlbmRlckRlcHRoIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0salp0LnByb3RvdHlwZSwiX2FsbG93R3JhcGhTZWxlY3QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0salp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxqWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImVkZ2VXaWR0aEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpadC5wcm90b3R5cGUsImhhbmRsZU5vZGVTZWxlY3RlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJlZGdlTGFiZWxGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqWnQucHJvdG90eXBlLCJoYW5kbGVFZGdlU2VsZWN0ZWQiLHZvaWQgMCksdChbYSgiYXV0b0V4dHJhY3ROb2RlcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXNDaGFuZ2VkIixudWxsKSx0KFthKCJncmFwaEhpZXJhcmNoeSIsImVkZ2VXaWR0aEZ1bmN0aW9uIiwiaGFuZGxlTm9kZVNlbGVjdGVkIiwiZWRnZUxhYmVsRnVuY3Rpb24iLCJoYW5kbGVFZGdlU2VsZWN0ZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGpadC5wcm90b3R5cGUsIl9idWlsZE5ld1JlbmRlckhpZXJhcmNoeSIsbnVsbCksdChbYSgic3RhdHMiLCJkZXZpY2VzRm9yU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGpadC5wcm90b3R5cGUsIl9zdGF0c0NoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkTm9kZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUNoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkRWRnZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0salp0LnByb3RvdHlwZSwiX3NlbGVjdGVkRWRnZUNoYW5nZWQiLG51bGwpLGpadD10KFtpKCJ0Zi1ncmFwaCIpXSxqWnQpO2xldCBHWnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA9MCx0aGlzLmhlYWx0aFBpbGxFbnRyaWVzPUpLdH1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5Db250YWluZXIiKSxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRmLWRhc2hib2FyZC1sYXlvdXQgLnNjcm9sbGJhciIpO3QmJmUmJih0LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpfV9oZWFsdGhQaWxsc0F2YWlsYWJsZSh0LGUpe3JldHVybiB0JiZlfV9jb21wdXRlVGVuc29yQ291bnRTdHJpbmcodCxlKXtyZXR1cm4gdD90W2VdLnRvRml4ZWQoMCk6IiJ9Z2V0IGhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGUoKXt2YXIgdD10aGlzLnNlbGVjdGVkTm9kZTtpZih0aGlzLmFyZUhlYWx0aFBpbGxzTG9hZGluZylyZXR1cm4gbnVsbDtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxsc1t0XTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBuPWVbdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPzA6dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4XTtyZXR1cm4gbj9uLnZhbHVlLnNsaWNlKDIsOCk6bnVsbH1nZXQgX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlKCl7dmFyIHQ9dGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzLGU9dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4LG49dGhpcy5hcmVIZWFsdGhQaWxsc0xvYWRpbmc7aWYodGhpcy5hbGxTdGVwc01vZGVFbmFibGVkKXJldHVybiB0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXAudG9GaXhlZCgwKTtpZihuKXJldHVybiAwO2ZvcihsZXQgbiBpbiB0KXJldHVybiB0W25dW2VdLnN0ZXAudG9GaXhlZCgwKTtyZXR1cm4gMH1nZXQgX2JpZ2dlc3RTdGVwRXZlclNlZW4oKXt2YXIgdD10aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHM7Zm9yKGxldCBuIGluIHQpe3ZhciBlPXRbbl07cmV0dXJuIE1hdGgubWF4KHRoaXMuX2JpZ2dlc3RTdGVwRXZlclNlZW4sZVtlLmxlbmd0aC0xXS5zdGVwKX1yZXR1cm4gdGhpcy5fYmlnZ2VzdFN0ZXBFdmVyU2Vlbnx8MH1nZXQgX21heFN0ZXBJbmRleCgpe3ZhciB0PXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscztmb3IobGV0IGUgaW4gdClyZXR1cm4gdFtlXS5sZW5ndGgtMTtyZXR1cm4gMH1faGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKHQpe3JldHVybiB0JiZ0Lmxlbmd0aH1fdXBkYXRlQWxlcnRzTGlzdCgpe3ZhciB0PXRoaXMuZGVidWdnZXJOdW1lcmljQWxlcnRzLGU9dGhpcy4kJCgiI251bWVyaWMtYWxlcnRzLWJvZHkiKTtpZihlKXtlLmlubmVyVGV4dD0iIjtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO28uaW5uZXJUZXh0PShmPWkuZmlyc3RfdGltZXN0YW1wLG09dm9pZCAwLChtPStuZXcgRGF0ZS0rbmV3IERhdGUoZi8xZTMpKTwzZTQ/Imp1c3Qgbm93IjptPDZlND9NYXRoLmZsb29yKG0vMWUzKSsiIHNlY29uZHMgYWdvIjptPDEyZTQ/ImEgbWludXRlIGFnbyI6bTwzNmU1P01hdGguZmxvb3IobS82ZTQpKyIgbWludXRlcyBhZ28iOjE9PU1hdGguZmxvb3IobS8zNmU1KT8iYW4gaG91ciBhZ28iOm08ODY0ZTU/TWF0aC5mbG9vcihtLzM2ZTUpKyIgaG91cnMgYWdvIjptPDE3MjhlNT8ieWVzdGVyZGF5IjpNYXRoLmZsb29yKG0vODY0ZTUpKyIgZGF5cyBhZ28iKSxvLmNsYXNzTGlzdC5hZGQoImZpcnN0LW9mZmVuc2UtdGQiKSxyLmFwcGVuZENoaWxkKG8pO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7YS5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3ItZGV2aWNlLXRkIik7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cy5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUiKSxzLmlubmVyVGV4dD1pLnRlbnNvcl9uYW1lLHRoaXMuX2FkZE9wRXhwYW5zaW9uTGlzdGVuZXIocyxpLnRlbnNvcl9uYW1lKSxhLmFwcGVuZENoaWxkKHMpO3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuY2xhc3NMaXN0LmFkZCgiZGV2aWNlLXNlY3Rpb24td2l0aGluLXRhYmxlIiksbC5pbm5lclRleHQ9IigiK2kuZGV2aWNlX25hbWUrIikiLGEuYXBwZW5kQ2hpbGQobCksci5hcHBlbmRDaGlsZChhKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLmNsYXNzTGlzdC5hZGQoIm1pbmktaGVhbHRoLXBpbGwiKTt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO2lmKHUuY2xhc3NMaXN0LmFkZCgibWluaS1oZWFsdGgtcGlsbC10ZCIpLHUuYXBwZW5kQ2hpbGQoYyksci5hcHBlbmRDaGlsZCh1KSxpLm5lZ19pbmZfZXZlbnRfY291bnQpe3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2guY2xhc3NMaXN0LmFkZCgibmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiIpLGguaW5uZXJUZXh0PWkubmVnX2luZl9ldmVudF9jb3VudCxoLnNldEF0dHJpYnV0ZSgidGl0bGUiLGkubmVnX2luZl9ldmVudF9jb3VudCsiIGV2ZW50cyB3aXRoIC3iiJ4iKSxjLmFwcGVuZENoaWxkKGgpfWlmKGkucG9zX2luZl9ldmVudF9jb3VudCl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc0xpc3QuYWRkKCJwb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIiksZC5pbm5lclRleHQ9aS5wb3NfaW5mX2V2ZW50X2NvdW50LGQuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaS5wb3NfaW5mX2V2ZW50X2NvdW50KyIgZXZlbnRzIHdpdGggK+KIniIpLGMuYXBwZW5kQ2hpbGQoZCl9aWYoaS5uYW5fZXZlbnRfY291bnQpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3AuY2xhc3NMaXN0LmFkZCgibmFuLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiIpLHAuaW5uZXJUZXh0PWkubmFuX2V2ZW50X2NvdW50LHAuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaS5uYW5fZXZlbnRfY291bnQrIiBldmVudHMgd2l0aCBOYU4iKSxjLmFwcGVuZENoaWxkKHApfWVyKGUpLmFwcGVuZENoaWxkKHIpfXZhciBmLG19fV9hZGRPcEV4cGFuc2lvbkxpc3RlbmVyKHQsZSl7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCgpPT57dmFyIHQsbj0oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3QgaT1uLnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLm1hdGNoKC8oLiopOlx3Ky8pOzI9PT1yLmxlbmd0aCYmKGlbaS5sZW5ndGgtMV09clsxXSk7bGV0IG89aVswXSxhPWUuZ2V0UmVuZGVyTm9kZUJ5TmFtZShvKTtmb3IobGV0IG49MTtuPGkubGVuZ3RoJiZhLm5vZGUudHlwZSE9PUEkdC5PUDtuKyspZS5idWlsZFN1YmhpZXJhcmNoeShvKSxhLmV4cGFuZGVkPSEwLHQuc2V0Tm9kZUV4cGFuZGVkKGEpLG8rPSIvIitpW25dLGE9ZS5nZXRSZW5kZXJOb2RlQnlOYW1lKG8pO3JldHVybiBhLm5vZGUubmFtZX0pKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2VuZSIpLHRoaXMucmVuZGVySGllcmFyY2h5LGUpLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidGYtZ3JhcGgtaW5mbyNncmFwaC1pbmZvIik7ciYmKHQ9ci5zY3JvbGxIZWlnaHQtci5zY3JvbGxUb3ApO3ZhciBvPXRoaXMuc2VsZWN0ZWROb2RlO3RoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG4pO3ZhciBhPSgpPT57ci5zY3JvbGxUb3A9ci5zY3JvbGxIZWlnaHQtdH07ciYmKG8/YSgpOndpbmRvdy5zZXRUaW1lb3V0KGEsMjApKX0pKX19O3ZhciBXWnQ7R1p0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIHsKICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgewogICAgICAgIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWVudHJ5IC5jb2xvci1wcmV2aWV3IHsKICAgICAgICB3aWR0aDogMjZweDsKICAgICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW46IDAgMTBweCAwIDA7CiAgICAgIH0KCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAuY29sb3ItbGFiZWwsCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAudGVuc29yLWNvdW50IHsKICAgICAgICBjb2xvcjogIzc3NzsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICBsaW5lLWhlaWdodDogMjZweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgLnRlbnNvci1jb3VudCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAjaGVhbHRoLXBpbGwtc3RlcC1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyogMzEgY29tZXMgZnJvbSBhZGRpbmcgYSBwYWRkaW5nIG9mIDE1cHggZnJvbSBib3RoIHNpZGVzIG9mIHRoZSBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nCiAgICogMXB4IHNvIHRoYXQgdGhlIHNsaWRlciB3aWR0aCBhbGlnbnMgd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwKICAgKiBhbmQgYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICogQXBwYXJlbnRseSwgdGhlIHBhcGVyLXNsaWRlciBsYWNrcyBhIG1peGluIGZvciB0aG9zZSBwYWRkaW5nIHZhbHVlcy4gKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgIH0KCiAgICAgICNoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI2hlYWx0aC1waWxsLXN0ZXAtbnVtYmVyLWlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgICNudW1lcmljLWFsZXJ0cy10YWJsZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlIHRkIHsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAjbnVtZXJpYy1hbGVydHMtdGFibGUgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICB9CgogICAgICAudGVuc29yLWRldmljZS10ZCB7CiAgICAgICAgbWF4LXdpZHRoOiAxNDBweDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGU6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5kZXZpY2Utc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCB7CiAgICAgICAgd2lkdGg6IDEzMHB4OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCA+IGRpdiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgI2V2ZW50LWNvdW50cy10aCB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgfQoKICAgICAgLm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUsIDE0MSwgMCk7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5wb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMCwgNjIsIDIxMik7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjA0LCA0NywgNDQpOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAubmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiwKICAgICAgLnBvc2l0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24sCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgMTBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5uby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24gewogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJjYXJkIGhlYWx0aC1waWxsLWxlZ2VuZCI+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICBFbmFibGUgYWxsIChub3QganVzdCBzYW1wbGVkKSBzdGVwcy4gUmVxdWlyZXMgc2xvdyBkaXNrIHJlYWQuCiAgICAgIDwvZGl2PgogICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgIGlkPSJlbmFibGVBbGxTdGVwc01vZGVUb2dnbGUiCiAgICAgICAgY2hlY2tlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgID4KICAgICAgPC9wYXBlci10b2dnbGUtYnV0dG9uPgogICAgICA8aDI+CiAgICAgICAgU3RlcCBvZiBIZWFsdGggUGlsbHM6CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc3RlcC1udW1iZXItaW5wdXQiCiAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgbWF4PSJbW19iaWdnZXN0U3RlcEV2ZXJTZWVuXV0iCiAgICAgICAgICAgIHZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXA6OmlucHV0fX0iCiAgICAgICAgICAvPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFhbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgICAgW1tfY3VycmVudFN0ZXBEaXNwbGF5VmFsdWVdXQogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHBhcGVyLXNwaW5uZXItbGl0ZQogICAgICAgICAgYWN0aXZlCiAgICAgICAgICBoaWRkZW4kPSJbWyFhcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIgogICAgICAgID48L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgPC9oMj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgaWQ9ImhlYWx0aC1waWxsLXN0ZXAtc2xpZGVyIgogICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXB9fSIKICAgICAgICAgIG1heD0iW1tfYmlnZ2VzdFN0ZXBFdmVyU2Vlbl1dIgogICAgICAgICAgc25hcHMKICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICB2YWx1ZT0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWFsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19tYXhTdGVwSW5kZXhdXSI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbC1zdGVwLXNsaWRlciIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxoMj4KICAgICAgICBIZWFsdGggUGlsbAogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlXV0iPgogICAgICAgICAgQ291bnRzIGZvciBTZWxlY3RlZCBOb2RlCiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGVdXSI+CiAgICAgICAgICBMZWdlbmQKICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2gyPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW2hlYWx0aFBpbGxFbnRyaWVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWx0aC1waWxsLWVudHJ5Ij4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9ImNvbG9yLXByZXZpZXciCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOltbaXRlbS5iYWNrZ3JvdW5kX2NvbG9yXV0iCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sYWJlbCI+W1tpdGVtLmxhYmVsXV08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRlbnNvci1jb3VudCI+CiAgICAgICAgICAgIFtbX2NvbXB1dGVUZW5zb3JDb3VudFN0cmluZyhoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlLAogICAgICAgICAgICBpbmRleCldXQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgaGlkZGVuJD0iW1shX2hhc0RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyhkZWJ1Z2dlck51bWVyaWNBbGVydHMpXV0iPgogICAgICAgIDxoMiBpZD0ibnVtZXJpYy1hbGVydHMtaGVhZGVyIj5OdW1lcmljIEFsZXJ0czwvaDI+CiAgICAgICAgPHA+QWxlcnRzIGFyZSBzb3J0ZWQgZnJvbSB0b3AgdG8gYm90dG9tIGJ5IGluY3JlYXNpbmcgdGltZXN0YW1wLjwvcD4KICAgICAgICA8ZGl2IGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZS1jb250YWluZXIiPgogICAgICAgICAgPHRhYmxlIGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZSI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+Rmlyc3QgT2ZmZW5zZTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+VGVuc29yIChEZXZpY2UpPC90aD4KICAgICAgICAgICAgICAgIDx0aCBpZD0iZXZlbnQtY291bnRzLXRoIj5FdmVudCBDb3VudHM8L3RoPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keSBpZD0ibnVtZXJpYy1hbGVydHMtYm9keSI+PC90Ym9keT4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgIGlmPSJbWyFfaGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKGRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyldXSIKICAgICAgPgogICAgICAgIDxwIGNsYXNzPSJuby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24iPgogICAgICAgICAgTm8gbnVtZXJpYyBhbGVydHMgc28gZmFyLiBUaGF0IGlzIGxpa2VseSBnb29kLiBBbGVydHMgaW5kaWNhdGUgdGhlCiAgICAgICAgICBwcmVzZW5jZSBvZiBOYU4gb3IgKCsvLSkgSW5maW5pdHkgdmFsdWVzLCB3aGljaCBtYXkgYmUgY29uY2VybmluZy4KICAgICAgICA8L3A+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3BhcGVyLW1hdGVyaWFsPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsQUt0KV0sR1p0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEdadC5wcm90b3R5cGUsImRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHWnQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxHWnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEdadC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sR1p0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sR1p0LnByb3RvdHlwZSwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxHWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsRW50cmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEdadC5wcm90b3R5cGUsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLHZvaWQgMCksdChbcygibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsImhlYWx0aFBpbGxTdGVwSW5kZXgiLCJzZWxlY3RlZE5vZGUiLCJhbGxTdGVwc01vZGVFbmFibGVkIiwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxHWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlIixudWxsKSx0KFtzKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIiwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sR1p0LnByb3RvdHlwZSwiX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlIixudWxsKSx0KFtzKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sR1p0LnByb3RvdHlwZSwiX2JpZ2dlc3RTdGVwRXZlclNlZW4iLG51bGwpLHQoW3MoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxHWnQucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFthKCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEdadC5wcm90b3R5cGUsIl91cGRhdGVBbGVydHNMaXN0IixudWxsKSxHWnQ9dChbaSgidGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkIildLEdadCksKGZ1bmN0aW9uKHQpe3QuQ09OU1Q9IkNPTlNUIix0Lk1FVEE9Ik1FVEEiLHQuT1A9Ik9QIix0LlNFUklFUz0iU0VSSUVTIix0LlNVTU1BUlk9IlNVTU1BUlkifSkoV1p0fHwoV1p0PXt9KSk7bGV0IHFadD1jbGFzcyBleHRlbmRzKGNyKGdsKHdlKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnZlcnRpY2FsPSExLHRoaXMuZmlsbE92ZXJyaWRlPW51bGwsdGhpcy5zdHJva2VPdmVycmlkZT1udWxsLHRoaXMuaGVpZ2h0PTIwLHRoaXMuZmFkZWQ9ITF9Z2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLiQuc3ZnRGVmc31nZXQgX2ZpbGwoKXt2YXIgdD10aGlzLmZpbGxPdmVycmlkZTtpZihudWxsIT10KXJldHVybiB0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgV1p0Lk1FVEE6cmV0dXJuIGdLdC5ERUZBVUxUX0ZJTEw7Y2FzZSBXWnQuU0VSSUVTOnJldHVybiBfS3Q7ZGVmYXVsdDpyZXR1cm4gZEt0fX1nZXQgX3N0cm9rZSgpe3ZhciB0PXRoaXMuc3Ryb2tlT3ZlcnJpZGU7aWYobnVsbCE9dClyZXR1cm4gdDtzd2l0Y2godGhpcy50eXBlKXtjYXNlIFdadC5NRVRBOnJldHVybiBnS3QuREVGQVVMVF9TVFJPS0U7Y2FzZSBXWnQuU0VSSUVTOnJldHVybiB5S3Q7ZGVmYXVsdDpyZXR1cm4gcEt0fX1faXNUeXBlKHQsZSl7cmV0dXJuIHQ9PT1lfV9mYWRlZENsYXNzKHQsZSl7cmV0dXJuIHQ/ImZhZGVkLSIrZToiIn19O3FadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtc2l6ZTogMDsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgc3ZnIHsKICAgICAgICBmaWx0ZXI6IGludmVydCgxKTsKICAgICAgfQoKICAgICAgLmZhZGVkLXJlY3QgewogICAgICAgIGZpbGw6IHVybCgjcmVjdEhhdGNoKTsKICAgICAgfQoKICAgICAgLmZhZGVkLWVsbGlwc2UgewogICAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKTsKICAgICAgfQoKICAgICAgLmZhZGVkLXJlY3QsCiAgICAgIC5mYWRlZC1lbGxpcHNlLAogICAgICAuZmFkZWQtc2VyaWVzIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLWdyYXBoLWZhZGVkKSAhaW1wb3J0YW50OwogICAgICB9CiAgICAgICNyZWN0SGF0Y2ggbGluZSwKICAgICAgI2VsbGlwc2VIYXRjaCBsaW5lIHsKICAgICAgICBjb2xvcjogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICAgIGZpbGw6IHdoaXRlOwogICAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPCEtLSBTVkcgZm9yIGRlZmluaXRpb25zIC0tPgogICAgPHN2ZyBoZWlnaHQ9IjAiIHdpZHRoPSIwIiBpZD0ic3ZnRGVmcyI+CiAgICAgIDxkZWZzPgogICAgICAgIDwhLS0gSGF0Y2ggcGF0dGVybnMgZm9yIGZhZGVkIG91dCBub2Rlcy4gLS0+CiAgICAgICAgPHBhdHRlcm4KICAgICAgICAgIGlkPSJyZWN0SGF0Y2giCiAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIKICAgICAgICAgIHdpZHRoPSI1IgogICAgICAgICAgaGVpZ2h0PSI1IgogICAgICAgICAgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgICA+CiAgICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iNSIgc3R5bGU9InN0cm9rZS13aWR0aDogMSI+PC9saW5lPgogICAgICAgIDwvcGF0dGVybj4KICAgICAgICA8cGF0dGVybgogICAgICAgICAgaWQ9ImVsbGlwc2VIYXRjaCIKICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIgogICAgICAgICAgd2lkdGg9IjIiCiAgICAgICAgICBoZWlnaHQ9IjIiCiAgICAgICAgICBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgID4KICAgICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSIyIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgICAgPC9wYXR0ZXJuPgogICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgZWxsaXBzZS4gLS0+CiAgICAgICAgPGVsbGlwc2UKICAgICAgICAgIGlkPSJvcC1ub2RlLXN0YW1wIgogICAgICAgICAgcng9IjcuNSIKICAgICAgICAgIHJ5PSIzIgogICAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgICA+PC9lbGxpcHNlPgogICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgYW5ub3RhdGlvbiBlbGxpcHNlIChzbWFsbGVyKS4gLS0+CiAgICAgICAgPGVsbGlwc2UKICAgICAgICAgIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiCiAgICAgICAgICByeD0iNSIKICAgICAgICAgIHJ5PSIyIgogICAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgICA+PC9lbGxpcHNlPgogICAgICAgIDwhLS0gVmVydGljYWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iOSI+PC91c2U+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI2Ij48L3VzZT4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjMiPjwvdXNlPgogICAgICAgIDwvZz4KICAgICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTYiIHk9IjQiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTIiIHk9IjQiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iNCI+PC91c2U+CiAgICAgICAgPC9nPgogICAgICAgIDxnCiAgICAgICAgICBpZD0ic3VtbWFyeS1pY29uIgogICAgICAgICAgZmlsbD0iIzg0ODQ4NCIKICAgICAgICAgIGhlaWdodD0iMTIiCiAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgICB3aWR0aD0iMTIiCiAgICAgICAgPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIKICAgICAgICAgID48L3BhdGg+CiAgICAgICAgPC9nPgogICAgICA8L2RlZnM+CiAgICA8L3N2Zz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdDT05TVCcpXV0iPgogICAgICA8c3ZnCiAgICAgICAgaGVpZ2h0JD0iW1toZWlnaHRdXSIKICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgPgogICAgICAgIDxjaXJjbGUKICAgICAgICAgIGN4PSI1IgogICAgICAgICAgY3k9IjUiCiAgICAgICAgICByPSIzIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgID48L2NpcmNsZT4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ1NVTU1BUlknKV1dIj4KICAgICAgPHN2ZwogICAgICAgIHdpZHRoJD0iW1toZWlnaHRdXSIKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICBmaWxsPSIjODQ4NDg0IgogICAgICA+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiCiAgICAgICAgPjwvcGF0aD4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ09QJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDE2IDgiCiAgICAgID4KICAgICAgICA8dXNlCiAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAnZWxsaXBzZScpfX0iCiAgICAgICAgICB4PSI4IgogICAgICAgICAgeT0iNCIKICAgICAgICA+PC91c2U+CiAgICAgIDwvc3ZnPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdNRVRBJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDM3IDE2IgogICAgICA+CiAgICAgICAgPHJlY3QKICAgICAgICAgIHg9IjEiCiAgICAgICAgICB5PSIxIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAncmVjdCcpfX0iCiAgICAgICAgICBzdHJva2Utd2lkdGg9IjJweCIKICAgICAgICAgIGhlaWdodD0iMTQiCiAgICAgICAgICB3aWR0aD0iMzUiCiAgICAgICAgICByeD0iNSIKICAgICAgICAgIHJ5PSI1IgogICAgICAgID48L3JlY3Q+CiAgICAgIDwvc3ZnPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdTRVJJRVMnKV1dIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3ZlcnRpY2FsXV0iPgogICAgICAgIDxzdmcKICAgICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgdmlld0JveD0iMCAwIDE2IDE1IgogICAgICAgID4KICAgICAgICAgIDx1c2UKICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiCiAgICAgICAgICAgIGZpbGwkPSJbW19maWxsXV0iCiAgICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgICBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdzZXJpZXMnKX19IgogICAgICAgICAgICB4PSIwIgogICAgICAgICAgICB5PSIyIgogICAgICAgICAgPjwvdXNlPgogICAgICAgIDwvc3ZnPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIXZlcnRpY2FsXV0iPgogICAgICAgIDxzdmcKICAgICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgdmlld0JveD0iMCAwIDI0IDEwIgogICAgICAgID4KICAgICAgICAgIDx1c2UKICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1zZXJpZXMtaG9yaXpvbnRhbC1zdGFtcCIKICAgICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICAgIGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhmYWRlZCwgJ3NlcmllcycpfX0iCiAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgIHk9IjEiCiAgICAgICAgICA+PC91c2U+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RlbXBsYXRlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scVp0LnByb3RvdHlwZSwidHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHFadC5wcm90b3R5cGUsInZlcnRpY2FsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHFadC5wcm90b3R5cGUsImZpbGxPdmVycmlkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxxWnQucHJvdG90eXBlLCJzdHJva2VPdmVycmlkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxxWnQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxxWnQucHJvdG90eXBlLCJmYWRlZCIsdm9pZCAwKSx0KFtzKCJ0eXBlIiwiZmlsbE92ZXJyaWRlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scVp0LnByb3RvdHlwZSwiX2ZpbGwiLG51bGwpLHQoW3MoInR5cGUiLCJzdHJva2VPdmVycmlkZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHFadC5wcm90b3R5cGUsIl9zdHJva2UiLG51bGwpLHFadD10KFtpKCJ0Zi1ncmFwaC1pY29uIildLHFadCk7dmFyIFladD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxnZXQgR3JhcGhJY29uVHlwZSgpe3JldHVybiBXWnR9fSk7bGV0IFhadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubm9kZT1udWxsLHRoaXMucmVuZGVySW5mbz1udWxsLHRoaXMuY29sb3JCeT1yWnQuU1RSVUNUVVJFLHRoaXMudGVtcGxhdGVJbmRleD1udWxsLHRoaXMudHlwZT1udWxsLHRoaXMudmVydGljYWw9ITEsdGhpcy5jb25zdD0hMSx0aGlzLnN1bW1hcnk9ITEsdGhpcy5maWxsPW51bGwsdGhpcy5oZWlnaHQ9MjB9X2NvbXB1dGVGaWxsT3ZlcnJpZGUodCxlLG4saSxyKXtyZXR1cm4gdCYmZSYmaT9rWnQoaSxuLGUsITEpOnJ9X2dldFN0cm9rZU92ZXJyaWRlKHQpe3JldHVybiB0P0xadCh0KTpudWxsfV9nZXRUeXBlKHQsZSxuLGkpe2NvbnN0e0dyYXBoSWNvblR5cGU6cn09WVp0O2lmKHQpc3dpdGNoKHQudHlwZSl7Y2FzZSBBJHQuT1A6e2NvbnN0IGk9dC5vcDtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGk/ci5PUDoiQ29uc3QiPT09aXx8bj9yLkNPTlNUOmkuZW5kc1dpdGgoIlN1bW1hcnkiKXx8ZT9yLlNVTU1BUlk6ci5PUH1jYXNlIEEkdC5NRVRBOnJldHVybiByLk1FVEE7Y2FzZSBBJHQuU0VSSUVTOnJldHVybiByLlNFUklFU31yZXR1cm4gaX1faXNWZXJ0aWNhbCh0LGUpe3JldHVybiB0P3QuaGFzTm9uQ29udHJvbEVkZ2VzOiEhZX1fZ2V0RmFkZWQodCl7cmV0dXJuIHQmJnQuaXNGYWRlZE91dH1fb25GaWxsT3ZlcnJpZGVDaGFuZ2VkKHQsZSl7Y29uc3R7bm9kZTpuLHJlbmRlckluZm86aSxjb2xvckJ5OnIsdGVtcGxhdGVJbmRleDpvfT10aGlzO3QhPT1lJiZBWnQodGhpcy4kLmljb24uZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpKSxuJiZpJiZvJiZrWnQobyxyLGksITEsdGhpcy4kLmljb24uZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpKX19O1hadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgLS10Yi1ncmFwaC1mYWRlZDogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRmLWdyYXBoLWljb24KICAgICAgaWQ9Imljb24iCiAgICAgIHR5cGU9IltbX2dldFR5cGUobm9kZSwgc3VtbWFyeSwgY29uc3QsIHR5cGUpXV0iCiAgICAgIGhlaWdodD0iW1toZWlnaHRdXSIKICAgICAgZmlsbC1vdmVycmlkZT0iW1tfZmlsbE92ZXJyaWRlXV0iCiAgICAgIHN0cm9rZS1vdmVycmlkZT0iW1tfZ2V0U3Ryb2tlT3ZlcnJpZGUoX2ZpbGxPdmVycmlkZSldXSIKICAgICAgZmFkZWQ9IltbX2dldEZhZGVkKHJlbmRlckluZm8pXV0iCiAgICAgIHZlcnRpY2FsPSJbW19pc1ZlcnRpY2FsKG5vZGUsIHZlcnRpY2FsKV1dIgogICAgPjwvdGYtZ3JhcGgtaWNvbj4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFhadC5wcm90b3R5cGUsIm5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWFp0LnByb3RvdHlwZSwicmVuZGVySW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYWnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sWFp0LnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYWnQucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWFp0LnByb3RvdHlwZSwidmVydGljYWwiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxYWnQucHJvdG90eXBlLCJjb25zdCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFhadC5wcm90b3R5cGUsInN1bW1hcnkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWFp0LnByb3RvdHlwZSwiZmlsbCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxYWnQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlRmlsbE92ZXJyaWRlKG5vZGUsIHJlbmRlckluZm8sIGNvbG9yQnksIHRlbXBsYXRlSW5kZXgsIGZpbGwpIixvYnNlcnZlcjoiX29uRmlsbE92ZXJyaWRlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWFp0LnByb3RvdHlwZSwiX2ZpbGxPdmVycmlkZSIsdm9pZCAwKSxYWnQ9dChbaSgidGYtbm9kZS1pY29uIildLFhadCk7bGV0ICRadD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7X2l0ZW1UeXBlQ2hhbmdlZCgpeyJzdWJub2RlIiE9PXRoaXMuaXRlbVR5cGU/dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QuYWRkKCJjbGlja2FibGUiKTp0aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5yZW1vdmUoImNsaWNrYWJsZSIpfV9ub2RlTGlzdGVuZXIodCl7dGhpcy5maXJlKCJub2RlLWxpc3QtaXRlbS0iK3QudHlwZSx7bm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfV9mYWRlZENsYXNzKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXQ/ImZhZGVkIjoiIn19OyRadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgI2xpc3QtaXRlbSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogNDBweDsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbS5leGNsdWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuLmVkZ2UtbGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmZhZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1mYWRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdgogICAgICBpZD0ibGlzdC1pdGVtIgogICAgICBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciIKICAgID4KICAgICAgPGRpdiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoaXRlbVJlbmRlckluZm8pfX0iPgogICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICBoZWlnaHQ9IjEyIgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIG5vZGU9IltbaXRlbU5vZGVdXSIKICAgICAgICAgIHJlbmRlci1pbmZvPSJbW2l0ZW1SZW5kZXJJbmZvXV0iCiAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgPgogICAgICAgIDwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiaXRlbU5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sJFp0LnByb3RvdHlwZSwiZWRnZUxhYmVsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLCRadC5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9pdGVtVHlwZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsIml0ZW1UeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJFp0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLCRadC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksJFp0PXQoW2koInRmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0iKV0sJFp0KTtsZXQgS1p0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSEwLHRoaXMuX29wQ29tcGF0Q29sb3I9Zkt0LHRoaXMuX29wSW5jb21wYXRDb2xvcj1tS3QsdGhpcy5fdGVtcGxhdGVJbmRleD1udWxsfV9nZXROb2RlKHQsZSl7cmV0dXJuIGUubm9kZSh0KX1fZ2V0UmVuZGVySW5mbyh0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCl9X3RvZ2dsZUV4cGFuZGVkKCl7dGhpcy5fZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfV9nZXRUb2dnbGVJY29uKHQpe3JldHVybiB0PyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn1fcmVzaXplTGlzdCh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2UmJmUuZmlyZSgiaXJvbi1yZXNpemUiKX1nZXQgX2luY29tcGF0aWJsZU9wTm9kZXMoKXtjb25zdCB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHQmJnQucm9vdD8odGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcywiI2luY29tcGF0aWJsZU9wc0xpc3QiKSksKGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXSxuPXt9O3JldHVybiBDZS5leHBvcnRzLmVhY2godC5yb290LmxlYXZlcygpLChpPT57bGV0IHI9dC5ub2RlKGkpO2lmKHIudHlwZT09QSR0Lk9QKXtsZXQgaT1yO2lmKCFpLmNvbXBhdGlibGUpaWYoaS5vd25pbmdTZXJpZXMpe2lmKHQuZ2V0U2VyaWVzR3JvdXBUeXBlKGkub3duaW5nU2VyaWVzKT09PVAkdC5VTkdST1VQKWUucHVzaChpKTtlbHNlIGlmKCFuW2kub3duaW5nU2VyaWVzXSl7bGV0IHI9dC5ub2RlKGkub3duaW5nU2VyaWVzKTtyJiYobltpLm93bmluZ1Nlcmllc109cixlLnB1c2gocikpfX1lbHNlIGUucHVzaChpKTtDZS5leHBvcnRzLmVhY2goaS5pbkVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGV8fGUucHVzaCh0KX0pKSxDZS5leHBvcnRzLmVhY2goaS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlfHxlLnB1c2godCl9KSl9fSkpLGV9KSh0KSk6W119Z2V0IF9vcENvbXBhdFNjb3JlKCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0JiZ0LnJvb3Qpe3ZhciBlPXQucm9vdCxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlLGk9ZS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZTtyZXR1cm4gMD09biYmMD09aT8wOk1hdGguZmxvb3IoMTAwKm4vKG4raSkpLzEwMH1yZXR1cm4gMH1nZXQgX29wQ29tcGF0U2NvcmVMYWJlbCgpe3ZhciB0PXRoaXMuX29wQ29tcGF0U2NvcmU7cmV0dXJuIER5KCIuMCUiKSh0KX1nZXQgX3RvdGFsSW5jb21wYXRPcHMoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5O3JldHVybiB0JiZ0LnJvb3Q/dC5yb290LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlOjB9X2dyYXBoSGllcmFyY2h5Q2hhbmdlZCgpe3RoaXMuX3RlbXBsYXRlSW5kZXg9dGhpcy5ncmFwaEhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCksdGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcihpS3QuVEVNUExBVEVTX1VQREFURUQsKCgpPT57dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKX0pKX19O0tadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICAuaW5jb21wYXRpYmxlLW9wcy1saXN0IHsKICAgICAgICBoZWlnaHQ6IDM1MHB4OwogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KCiAgICAgIGlyb24tbGlzdCB7CiAgICAgICAgZmxleDogMSAxIGF1dG87CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICB9CgogICAgICBwYXBlci1pdGVtLWJvZHlbdHdvLWxpbmVdIHsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4IDRweDsKICAgICAgfQoKICAgICAgLmV4cGFuZGVkSW5mbyB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDEycHQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5ub2RlLW5hbWUgewogICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIGZvbnQtc2l6ZTogMTRwdDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5ub24tY29udHJvbC1saXN0LWl0ZW0gewogICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgICAgfQoKICAgICAgZGl2Lm9wLWNvbXBhdC1kaXNwbGF5IHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNhZGx5LCBiZWNhdXNlIHRoZSB3aG9sZSBib2R5IGlzIGludmVydGVkIGluIGNvbG9yLCBsZWdlbmRzIGFsc28gbmVlZAogICAgICAgKiB0byBiZSBpbnZlcnRlZC4KICAgICAgICoqLwogICAgICA6aG9zdCguZGFyay1tb2RlKSBkaXYub3AtY29tcGF0LWRpc3BsYXkgewogICAgICAgIGZpbHRlcjogaW52ZXJ0KDEpOwogICAgICB9CgogICAgICBzdmcub3AtY29tcGF0IHsKICAgICAgICB3aWR0aDogMjUwcHg7CiAgICAgICAgaGVpZ2h0OiAyNXB4OwogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CgogICAgICBkaXYub3AtY29tcGF0LXZhbHVlIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogYmxhY2s7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHBhcGVyLWl0ZW0+CiAgICAgIDxwYXBlci1pdGVtLWJvZHkgdHdvLWxpbmU+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICBpY29uPSJ7e19nZXRUb2dnbGVJY29uKF9leHBhbmRlZCl9fSIKICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm9kZS1uYW1lIiBpZD0ibm9kZXRpdGxlIj5bW25vZGVUaXRsZV1dPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzZWNvbmRhcnk+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLWNvbXBhdC1kaXNwbGF5Ij4KICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICBjbGFzcz0ib3AtY29tcGF0IgogICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNTAgMjUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ib3AtY29tcGF0LWZpbGwiPgogICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvciQ9IltbX29wQ29tcGF0Q29sb3JdXSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQkPSJbW19vcENvbXBhdFNjb3JlXV0iCiAgICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yJD0iW1tfb3BDb21wYXRDb2xvcl1dIgogICAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCQ9IltbX29wQ29tcGF0U2NvcmVdXSIKICAgICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19vcEluY29tcGF0Q29sb3JdXSIKICAgICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvciQ9IltbX29wSW5jb21wYXRDb2xvciBdXSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgPHJlY3QKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIyNSIKICAgICAgICAgICAgICAgICAgd2lkdGg9IjI1MCIKICAgICAgICAgICAgICAgICAgcng9IjUiCiAgICAgICAgICAgICAgICAgIHJ5PSI1IgogICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbDogdXJsKCcjb3AtY29tcGF0LWZpbGwnKTsiCiAgICAgICAgICAgICAgICA+PC9yZWN0PgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLWNvbXBhdC12YWx1ZSI+W1tfb3BDb21wYXRTY29yZUxhYmVsXV08L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9wYXBlci1pdGVtLWJvZHk+CiAgICA8L3BhcGVyLWl0ZW0+CgogICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19leHBhbmRlZH19Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19leHBhbmRlZH19IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJleHBhbmRlZEluZm8iPgogICAgICAgICAgSW5jb21wYXRpYmxlIE9wZXJhdGlvbnM6ICg8c3Bhbj5bW190b3RhbEluY29tcGF0T3BzXV08L3NwYW4+KQogICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICBjbGFzcz0iaW5jb21wYXRpYmxlLW9wcy1saXN0IgogICAgICAgICAgICBpZD0iaW5jb21wYXRpYmxlT3BzTGlzdCIKICAgICAgICAgICAgaXRlbXM9IltbX2luY29tcGF0aWJsZU9wTm9kZXNdXSIKICAgICAgICAgID4KICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgIDx0Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW1dXSIKICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbX2dldFJlbmRlckluZm8oaXRlbS5uYW1lLCByZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0iaW5jb21wYXRpYmxlLW9wcyIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2lyb24tY29sbGFwc2U+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxLWnQucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixBS3QpXSxLWnQucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS1p0LnByb3RvdHlwZSwibm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS1p0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEtadC5wcm90b3R5cGUsIl9vcENvbXBhdENvbG9yIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEtadC5wcm90b3R5cGUsIl9vcEluY29tcGF0Q29sb3IiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxLWnQucHJvdG90eXBlLCJfdGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtzKCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS1p0LnByb3RvdHlwZSwiX2luY29tcGF0aWJsZU9wTm9kZXMiLG51bGwpLHQoW3MoImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS1p0LnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmUiLG51bGwpLHQoW3MoIl9vcENvbXBhdFNjb3JlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sS1p0LnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmVMYWJlbCIsbnVsbCksdChbcygiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxLWnQucHJvdG90eXBlLCJfdG90YWxJbmNvbXBhdE9wcyIsbnVsbCksdChbYSgiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEtadC5wcm90b3R5cGUsIl9ncmFwaEhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLEtadD10KFtpKCJ0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZCIpXSxLWnQpO2xldCBaWnQ9Y2xhc3MgZXh0ZW5kcyhjcihnbCh3ZSkpKXtfaXRlbVR5cGVDaGFuZ2VkKCl7InN1Ym5vZGUiIT09dGhpcy5pdGVtVHlwZT90aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5hZGQoImNsaWNrYWJsZSIpOnRoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LnJlbW92ZSgiY2xpY2thYmxlIil9X25vZGVMaXN0ZW5lcih0KXt0aGlzLmZpcmUoIm5vZGUtbGlzdC1pdGVtLSIrdC50eXBlLHtjYXJkTm9kZTp0aGlzLmNhcmROb2RlLm5hbWUsbm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfV9mYWRlZENsYXNzKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXQ/ImZhZGVkIjoiIn19O1padC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgI2xpc3QtaXRlbSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpICNsaXN0LWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXllbGxvdy05MDApOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICB9CgogICAgICAuY2xpY2thYmxlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3BhbiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0uZXhjbHVkZWQgc3BhbiB7CiAgICAgICAgY29sb3I6ICM5OTk7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3Bhbi5lZGdlLWxhYmVsIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgIH0KCiAgICAgIC5ub2RlLWljb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDFweDsKICAgICAgICBsZWZ0OiAycHg7CiAgICAgIH0KCiAgICAgIC5mYWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdgogICAgICBpZD0ibGlzdC1pdGVtIgogICAgICBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciIKICAgID4KICAgICAgPGRpdiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoaXRlbVJlbmRlckluZm8pfX0iPgogICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICBoZWlnaHQ9IjEyIgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIG5vZGU9IltbaXRlbU5vZGVdXSIKICAgICAgICAgIHJlbmRlci1pbmZvPSJbW2l0ZW1SZW5kZXJJbmZvXV0iCiAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgPjwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJlZGdlLWxhYmVsIj5bW2VkZ2VMYWJlbF1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWlp0LnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWlp0LnByb3RvdHlwZSwiaXRlbU5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWlp0LnByb3RvdHlwZSwiZWRnZUxhYmVsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFpadC5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpadC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9pdGVtVHlwZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpadC5wcm90b3R5cGUsIml0ZW1UeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWlp0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaWnQucHJvdG90eXBlLCJ0ZW1wbGF0ZUluZGV4Iix2b2lkIDApLFpadD10KFtpKCJ0Zi1ub2RlLWxpc3QtaXRlbSIpXSxaWnQpO2xldCBKWnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBhbmRlZD0hMCx0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hMSx0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hMSx0aGlzLl90ZW1wbGF0ZUluZGV4PW51bGx9ZXhwYW5kTm9kZSgpe3RoaXMuZmlyZSgiX25vZGUuZXhwYW5kIix0aGlzLm5vZGUpfV9nZXROb2RlKHQsZSl7cmV0dXJuIGUubm9kZSh0KX1fZ2V0Tm9kZVN0YXRzKHQsZSl7dmFyIG49dGhpcy5fZ2V0Tm9kZSh0LGUpO3JldHVybiBuP24uc3RhdHM6bnVsbH1fZ2V0VG90YWxNaWNyb3ModCl7cmV0dXJuIHQ/dC5nZXRUb3RhbE1pY3JvcygpOjB9Z2V0IF9oYXNEaXNwbGF5YWJsZU5vZGVTdGF0cygpe3JldHVybiBiJHQodGhpcy5fbm9kZVN0YXRzKX1nZXQgX25vZGVTdGF0c0Zvcm1hdHRlZEJ5dGVzKCl7dmFyIHQ9dGhpcy5fbm9kZVN0YXRzO2lmKHQmJnQudG90YWxCeXRlcylyZXR1cm4gdiR0KHQudG90YWxCeXRlcyxfJHQpfWdldCBfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWUoKXt2YXIgdD10aGlzLl9ub2RlU3RhdHM7aWYodCYmdC5nZXRUb3RhbE1pY3JvcygpKXJldHVybiB2JHQodC5nZXRUb3RhbE1pY3JvcygpLHkkdCl9Z2V0IF9ub2RlU3RhdHNGb3JtYXR0ZWRPdXRwdXRTaXplcygpe3ZhciB0PXRoaXMuX25vZGVTdGF0cztpZih0JiZ0Lm91dHB1dFNpemUmJnQub3V0cHV0U2l6ZS5sZW5ndGgpcmV0dXJuIENlLmV4cG9ydHMubWFwKHQub3V0cHV0U2l6ZSwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10Lmxlbmd0aD8ic2NhbGFyIjoiWyIrdC5qb2luKCIsICIpKyJdIn0pKX1fZ2V0UmVuZGVySW5mbyh0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCl9Z2V0IF9hdHRyaWJ1dGVzKCl7dmFyIHQ9dGhpcy5fbm9kZTtpZih0aGlzLmFzeW5jKHRoaXMuX3Jlc2l6ZUxpc3QuYmluZCh0aGlzLCIjYXR0cmlidXRlc0xpc3QiKSksIXR8fCF0LmF0dHIpcmV0dXJuW107dmFyIGU9W107cmV0dXJuIENlLmV4cG9ydHMuZWFjaCh0LmF0dHIsKGZ1bmN0aW9uKHQpeyJfdG9vX2xhcmdlX2F0dHJzIj09PXQua2V5P2U9ZS5jb25jYXQodC52YWx1ZS5saXN0LnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm57a2V5OnQsdmFsdWU6IlRvbyBsYXJnZSB0byBzaG93Li4uIn19KSkpOmUucHVzaCh7a2V5OnQua2V5LHZhbHVlOkpTT04uc3RyaW5naWZ5KHQudmFsdWUpfSl9KSksZX1nZXQgX2RldmljZSgpe3ZhciB0PXRoaXMuX25vZGU7cmV0dXJuIHQ/dC5kZXZpY2U6bnVsbH1nZXQgX3N1Y2Nlc3NvcnMoKXt2YXIgdD10aGlzLl9ub2RlLGU9dGhpcy5ncmFwaEhpZXJhcmNoeTtyZXR1cm4gdGhpcy5fcmVmcmVzaE5vZGVJdGVtTGlzdCgiaW5wdXRzTGlzdCIpLHQ/dGhpcy5fY29udmVydEVkZ2VMaXN0VG9FZGdlSW5mb0xpc3QoZS5nZXRTdWNjZXNzb3JzKHQubmFtZSksITEsdC5pc0dyb3VwTm9kZSk6e3JlZ3VsYXI6W10sY29udHJvbDpbXX19Z2V0IF9wcmVkZWNlc3NvcnMoKXt2YXIgdD10aGlzLl9ub2RlLGU9dGhpcy5ncmFwaEhpZXJhcmNoeTtyZXR1cm4gdGhpcy5fcmVmcmVzaE5vZGVJdGVtTGlzdCgib3V0cHV0c0xpc3QiKSx0P3RoaXMuX2NvbnZlcnRFZGdlTGlzdFRvRWRnZUluZm9MaXN0KGUuZ2V0UHJlZGVjZXNzb3JzKHQubmFtZSksITAsdC5pc0dyb3VwTm9kZSk6e3JlZ3VsYXI6W10sY29udHJvbDpbXX19Z2V0IF9mdW5jdGlvblVzYWdlcygpe3ZhciB0PXRoaXMuX25vZGUsZT10aGlzLmdyYXBoSGllcmFyY2h5O2lmKHRoaXMuX3JlZnJlc2hOb2RlSXRlbUxpc3QoImZ1bmN0aW9uVXNhZ2VzTGlzdCIpLCF0fHx0LnR5cGUhPT1BJHQuTUVUQSlyZXR1cm5bXTtjb25zdCBuPWUubGlicmFyeUZ1bmN0aW9uc1t0LmFzc29jaWF0ZWRGdW5jdGlvbl07cmV0dXJuIG4/bi51c2FnZXM6W119X3JlZnJlc2hOb2RlSXRlbUxpc3QodCl7dGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcyxgIyR7dH1gKSl9X2NvbnZlcnRFZGdlTGlzdFRvRWRnZUluZm9MaXN0KHQsZSxuKXt2YXIgaT10PT5DZS5leHBvcnRzLm1hcCh0LmJhc2VFZGdlTGlzdCwodD0+e3ZhciBuPWU/dC52OnQudztyZXR1cm57bmFtZTpuLG5vZGU6dGhpcy5fZ2V0Tm9kZShuLHRoaXMuZ3JhcGhIaWVyYXJjaHkpLGVkZ2VMYWJlbDpjWnQodCx0aGlzLnJlbmRlckhpZXJhcmNoeSkscmVuZGVySW5mbzp0aGlzLl9nZXRSZW5kZXJJbmZvKG4sdGhpcy5yZW5kZXJIaWVyYXJjaHkpfX0pKSxyPWZ1bmN0aW9uKHQpe3ZhciByPVtdO3JldHVybiBDZS5leHBvcnRzLmVhY2godCwodD0+e3ZhciBvPWU/dC52OnQudztuJiYxIT10LmJhc2VFZGdlTGlzdC5sZW5ndGg/ci5wdXNoKHtuYW1lOm8sbm9kZTp0aGlzLl9nZXROb2RlKG8sdGhpcy5ncmFwaEhpZXJhcmNoeSksZWRnZUxhYmVsOnVadCh0LHRoaXMucmVuZGVySGllcmFyY2h5KSxyZW5kZXJJbmZvOnRoaXMuX2dldFJlbmRlckluZm8obyx0aGlzLnJlbmRlckhpZXJhcmNoeSl9KTpyPXIuY29uY2F0KGkodCkpfSkpLHJ9LmJpbmQodGhpcyk7cmV0dXJue3JlZ3VsYXI6cih0LnJlZ3VsYXIpLGNvbnRyb2w6cih0LmNvbnRyb2wpfX1nZXQgX3N1Ym5vZGVzKCl7dmFyIHQ9dGhpcy5fbm9kZTtyZXR1cm4gdCYmdC5tZXRhZ3JhcGg/dC5tZXRhZ3JhcGgubm9kZXMoKTpudWxsfWdldCBfdG90YWxQcmVkZWNlc3NvcnMoKXt2YXIgdD10aGlzLl9wcmVkZWNlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1nZXQgX3RvdGFsU3VjY2Vzc29ycygpe3ZhciB0PXRoaXMuX3N1Y2Nlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1fdG9nZ2xlQ29udHJvbFByZWQoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hdGhpcy5fb3BlbmVkQ29udHJvbFByZWR9X3RvZ2dsZUNvbnRyb2xTdWNjKCl7dGhpcy5fb3BlbmVkQ29udHJvbFN1Y2M9IXRoaXMuX29wZW5lZENvbnRyb2xTdWNjfV90b2dnbGVFeHBhbmRlZCgpe3RoaXMuX2V4cGFuZGVkPSF0aGlzLl9leHBhbmRlZH1fZ2V0VG9nZ2xlSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3Jlc2V0U3RhdGUoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hMSx0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hMSx0aGlzLnNldCgiX2dyb3VwQnV0dG9uVGV4dCIseFp0KHRoaXMuX25vZGUpKX1fcmVzaXplTGlzdCh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2UmJmUuZmlyZSgiaXJvbi1yZXNpemUiKX1fdG9nZ2xlSW5jbHVkZSgpe3RoaXMuZmlyZSgibm9kZS10b2dnbGUtaW5jbHVzaW9uIix7bmFtZTp0aGlzLmdyYXBoTm9kZU5hbWV9KX1fbm9kZUluY2x1ZGVTdGF0ZUNoYW5nZWQodCxlKXt0aGlzLnNldCgiX2F1eEJ1dHRvblRleHQiLEokdCh0KSl9X3RvZ2dsZUdyb3VwKCl7dmFyIHQ9Ylp0KHRoaXMuX25vZGUpO3RoaXMuZmlyZSgibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHtuYW1lOnR9KX1faXNMaWJyYXJ5RnVuY3Rpb24odCl7cmV0dXJuIHQmJnQubmFtZS5zdGFydHNXaXRoKFQkdCl9X2lzSW5TZXJpZXModCl7cmV0dXJuIHZadCh0KX1fZ3JhcGhIaWVyYXJjaHlDaGFuZ2VkKCl7dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKSx0aGlzLmdyYXBoSGllcmFyY2h5LmFkZExpc3RlbmVyKGlLdC5URU1QTEFURVNfVVBEQVRFRCwoKCk9Pnt0aGlzLl90ZW1wbGF0ZUluZGV4PXRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpfSkpfX07Slp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICAuc3ViLWxpc3QtZ3JvdXAgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICB9CgogICAgICAuYXR0ci1sZWZ0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogMzAlOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICB9CgogICAgICAuYXR0ci1yaWdodCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDMwJTsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICB9CgogICAgICAuc3ViLWxpc3QtdGFibGUgewogICAgICAgIGRpc3BsYXk6IHRhYmxlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuc3ViLWxpc3QtdGFibGUtcm93IHsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZS1yb3cgLnN1Yi1saXN0LXRhYmxlLWNlbGw6bGFzdC1jaGlsZCB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZS1jZWxsIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDsKICAgICAgICBwYWRkaW5nOiAwIDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbSB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICB9CgogICAgICBwYXBlci1pdGVtLWJvZHlbdHdvLWxpbmVdIHsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4IDRweDsKICAgICAgfQoKICAgICAgLmV4cGFuZGVkSW5mbyB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgIH0KCiAgICAgIC5jb250cm9sRGVwcyB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgOHB4OwogICAgICB9CgogICAgICAubm9kZS1uYW1lIHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBmb250LXNpemU6IDE0cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICB9CgogICAgICAuY29udHJvbExpbmUgewogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLXRvZ2dsZS1idXR0b24gewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZS1ncm91cCB7CiAgICAgICAgcGFkZGluZy10b3A6IDRweDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1pbmNsdWRlIHsKICAgICAgICBtYXJnaW46IDVweCA2cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgcGFkZGluZzogNHB4IDZweDsKICAgICAgICBmb250LXNpemU6IDEwcHQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsKICAgICAgICBjb2xvcjogIzY2NjsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1pbmNsdWRlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5ub24tY29udHJvbC1saXN0LWl0ZW0gewogICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxwYXBlci1pdGVtPgogICAgICA8cGFwZXItaXRlbS1ib2R5IHR3by1saW5lPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfZXhwYW5kZWQpfX0iCiAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtYnV0dG9uIgogICAgICAgICAgPgogICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vZGUtbmFtZSI+CiAgICAgICAgICAgIDx0Zi13YnItc3RyaW5nIHZhbHVlPSJbW19ub2RlLm5hbWVdXSIgZGVsaW1pdGVyLXBhdHRlcm49Ii8iPgogICAgICAgICAgICA8L3RmLXdici1zdHJpbmc+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNlY29uZGFyeT4KICAgICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgICAgY2xhc3M9Im5vZGUtaWNvbiIKICAgICAgICAgICAgbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICByZW5kZXItaW5mbz0iW1tfZ2V0UmVuZGVySW5mbyhncmFwaE5vZGVOYW1lLCByZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgID48L3RmLW5vZGUtaWNvbj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfbm9kZS5vcH19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3VidGl0bGUiPgogICAgICAgICAgICAgIE9wZXJhdGlvbjoKICAgICAgICAgICAgICA8c3Bhbj5bW19ub2RlLm9wXV08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfbm9kZS5tZXRhZ3JhcGh9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgICBTdWJncmFwaDoKICAgICAgICAgICAgICA8c3Bhbj5bW19ub2RlLmNhcmRpbmFsaXR5XV08L3NwYW4+IG5vZGVzCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9wYXBlci1pdGVtLWJvZHk+CiAgICA8L3BhcGVyLWl0ZW0+CiAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X2V4cGFuZGVkfX0iPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2V4cGFuZGVkfX0iIHJlc3RhbXA9InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9ImV4cGFuZGVkSW5mbyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBhdHRyaWJ1dGVzIj4KICAgICAgICAgICAgQXR0cmlidXRlcyAoPHNwYW4+W1tfYXR0cmlidXRlcy5sZW5ndGhdXTwvc3Bhbj4pCiAgICAgICAgICAgIDxpcm9uLWxpc3QKICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgaWQ9ImF0dHJpYnV0ZXNMaXN0IgogICAgICAgICAgICAgIGl0ZW1zPSJbW19hdHRyaWJ1dGVzXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLWxlZnQiPltbaXRlbS5rZXldXTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLXJpZ2h0Ij5bW2l0ZW0udmFsdWVdXTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2RldmljZX19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgZGV2aWNlIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLWxlZnQiPkRldmljZTwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF0dHItcmlnaHQiPltbX2RldmljZV1dPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBwcmVkZWNlc3NvcnMiPgogICAgICAgICAgICBJbnB1dHMgKDxzcGFuPltbX3RvdGFsUHJlZGVjZXNzb3JzXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgIGlkPSJpbnB1dHNMaXN0IgogICAgICAgICAgICAgIGl0ZW1zPSJbW19wcmVkZWNlc3NvcnMucmVndWxhcl1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iCiAgICAgICAgICAgICAgICAgIGVkZ2UtbGFiZWw9IltbaXRlbS5lZGdlTGFiZWxdXSIKICAgICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIKICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJwcmVkZWNlc3NvcnMiCiAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfcHJlZGVjZXNzb3JzLmNvbnRyb2wubGVuZ3RoXV0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xEZXBzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xMaW5lIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfb3BlbmVkQ29udHJvbFByZWQpfX0iCiAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVDb250cm9sUHJlZCIKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY29udHJvbC10b2dnbGUtYnV0dG9uIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgICAgIENvbnRyb2wgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0ie3tfb3BlbmVkQ29udHJvbFByZWR9fSIgbm8tYW5pbWF0aW9uPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgICAgICAgICAgICAgIGlmPSJ7e19vcGVuZWRDb250cm9sUHJlZH19IgogICAgICAgICAgICAgICAgICAgIHJlc3RhbXA9InRydWUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgICAgICAgICBpdGVtcz0iW1tfcHJlZGVjZXNzb3JzLmNvbnRyb2xdXSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIgogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJwcmVkZWNlc3NvcnMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2lyb24tY29sbGFwc2U+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBzdWNjZXNzb3JzIj4KICAgICAgICAgICAgT3V0cHV0cyAoPHNwYW4+W1tfdG90YWxTdWNjZXNzb3JzXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgIGlkPSJvdXRwdXRzTGlzdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfc3VjY2Vzc29ycy5yZWd1bGFyXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgY2xhc3M9Im5vbi1jb250cm9sLWxpc3QtaXRlbSIKICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIKICAgICAgICAgICAgICAgICAgZWRnZS1sYWJlbD0iW1tpdGVtLmVkZ2VMYWJlbF1dIgogICAgICAgICAgICAgICAgICBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIgogICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9InN1Y2Nlc3NvciIKICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zdWNjZXNzb3JzLmNvbnRyb2wubGVuZ3RoXV0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xEZXBzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xMaW5lIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfb3BlbmVkQ29udHJvbFN1Y2MpfX0iCiAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVDb250cm9sU3VjYyIKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY29udHJvbC10b2dnbGUtYnV0dG9uIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgICAgIENvbnRyb2wgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0ie3tfb3BlbmVkQ29udHJvbFN1Y2N9fSIgbm8tYW5pbWF0aW9uPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgICAgICAgICAgICAgIGlmPSJ7e19vcGVuZWRDb250cm9sU3VjY319IgogICAgICAgICAgICAgICAgICAgIHJlc3RhbXA9InRydWUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8aXJvbi1saXN0IGNsYXNzPSJzdWItbGlzdCIgaXRlbXM9IltbX3N1Y2Nlc3NvcnMuY29udHJvbF1dIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW0ubm9kZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9InN1Y2Nlc3NvcnMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2lyb24tY29sbGFwc2U+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfaGFzRGlzcGxheWFibGVOb2RlU3RhdHN9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIG5vZGUtc3RhdHMiPgogICAgICAgICAgICAgIE5vZGUgU3RhdHMKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZSI+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGVTdGF0cy50b3RhbEJ5dGVzfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPk1lbW9yeTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPgogICAgICAgICAgICAgICAgICAgICAgW1tfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXNdXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2dldFRvdGFsTWljcm9zKF9ub2RlU3RhdHMpfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPkNvbXB1dGUgVGltZTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPgogICAgICAgICAgICAgICAgICAgICAgW1tfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWVdXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGVTdGF0cy5vdXRwdXRTaXplfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPlRlbnNvciBPdXRwdXQgU2l6ZXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM9Int7X25vZGVTdGF0c0Zvcm1hdHRlZE91dHB1dFNpemVzfX0iCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFtbaXRlbV1dIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19mdW5jdGlvblVzYWdlcy5sZW5ndGhdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIHByZWRlY2Vzc29ycyI+CiAgICAgICAgICAgICAgVXNhZ2VzIG9mIHRoZSBGdW5jdGlvbiAoPHNwYW4+W1tfZnVuY3Rpb25Vc2FnZXMubGVuZ3RoXV08L3NwYW4+KQogICAgICAgICAgICAgIDxpcm9uLWxpc3QKICAgICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICAgIGlkPSJmdW5jdGlvblVzYWdlc0xpc3QiCiAgICAgICAgICAgICAgICBpdGVtcz0iW1tfZnVuY3Rpb25Vc2FnZXNdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW1dXSIKICAgICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0iZnVuY3Rpb25Vc2FnZXMiCiAgICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9pc0xpYnJhcnlGdW5jdGlvbihfbm9kZSldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1pbmNsdWRlLWdyb3VwIj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICByYWlzZWQKICAgICAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtaW5jbHVkZSIKICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlSW5jbHVkZSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3Bhbj5bW19hdXhCdXR0b25UZXh0XV08L3NwYW4+CiAgICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2lzSW5TZXJpZXMoX25vZGUpfX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtaW5jbHVkZS1ncm91cCI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgcmFpc2VkCiAgICAgICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWluY2x1ZGUiCiAgICAgICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUdyb3VwIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzcGFuPltbX2dyb3VwQnV0dG9uVGV4dF1dPC9zcGFuPgogICAgICAgICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2lyb24tY29sbGFwc2U+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxKWnQucHJvdG90eXBlLCJncmFwaE5vZGVOYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHJLdCldLEpadC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxKWnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfZ2V0Tm9kZShncmFwaE5vZGVOYW1lLCBncmFwaEhpZXJhcmNoeSkiLG9ic2VydmVyOiJfcmVzZXRTdGF0ZSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSlp0LnByb3RvdHlwZSwiX25vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QsY29tcHV0ZWQ6Il9nZXROb2RlU3RhdHMoZ3JhcGhOb2RlTmFtZSwgZ3JhcGhIaWVyYXJjaHkpIixvYnNlcnZlcjoiX3Jlc2V0U3RhdGUifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpadC5wcm90b3R5cGUsIl9ub2RlU3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9ub2RlSW5jbHVkZVN0YXRlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSlp0LnByb3RvdHlwZSwibm9kZUluY2x1ZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKWnQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKWnQucHJvdG90eXBlLCJfb3BlbmVkQ29udHJvbFByZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKWnQucHJvdG90eXBlLCJfb3BlbmVkQ29udHJvbFN1Y2MiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSlp0LnByb3RvdHlwZSwiX2F1eEJ1dHRvblRleHQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSlp0LnByb3RvdHlwZSwiX2dyb3VwQnV0dG9uVGV4dCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLEpadC5wcm90b3R5cGUsIl90ZW1wbGF0ZUluZGV4Iix2b2lkIDApLHQoW3MoIl9ub2RlU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX2hhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzIixudWxsKSx0KFtzKCJfbm9kZVN0YXRzIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX25vZGVTdGF0c0Zvcm1hdHRlZEJ5dGVzIixudWxsKSx0KFtzKCJfbm9kZVN0YXRzIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX25vZGVTdGF0c0Zvcm1hdHRlZENvbXB1dGVUaW1lIixudWxsKSx0KFtzKCJfbm9kZVN0YXRzIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfbm9kZVN0YXRzRm9ybWF0dGVkT3V0cHV0U2l6ZXMiLG51bGwpLHQoW3MoIl9ub2RlIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfYXR0cmlidXRlcyIsbnVsbCksdChbcygiX25vZGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfZGV2aWNlIixudWxsKSx0KFtzKCJfbm9kZSIsImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX3N1Y2Nlc3NvcnMiLG51bGwpLHQoW3MoIl9ub2RlIiwiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfcHJlZGVjZXNzb3JzIixudWxsKSx0KFtzKCJfbm9kZSIsImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfZnVuY3Rpb25Vc2FnZXMiLG51bGwpLHQoW3MoIl9ub2RlIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfc3Vibm9kZXMiLG51bGwpLHQoW3MoIl9wcmVkZWNlc3NvcnMiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKWnQucHJvdG90eXBlLCJfdG90YWxQcmVkZWNlc3NvcnMiLG51bGwpLHQoW3MoIl9zdWNjZXNzb3JzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlp0LnByb3RvdHlwZSwiX3RvdGFsU3VjY2Vzc29ycyIsbnVsbCksdChbYSgiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEpadC5wcm90b3R5cGUsIl9ncmFwaEhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLEpadD10KFtpKCJ0Zi1ub2RlLWluZm8iKV0sSlp0KTtsZXQgUVp0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtyZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLWxpc3QtaXRlbS1jbGljayIsdGhpcy5fbm9kZUxpc3RJdGVtQ2xpY2tlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtbGlzdC1pdGVtLW1vdXNlb3ZlciIsdGhpcy5fbm9kZUxpc3RJdGVtTW91c2VvdmVyLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1saXN0LWl0ZW0tbW91c2VvdXQiLHRoaXMuX25vZGVMaXN0SXRlbU1vdXNlb3V0LmJpbmQodGhpcykpfV9ub2RlTGlzdEl0ZW1DbGlja2VkKHQpe3RoaXMuc2VsZWN0ZWROb2RlPXQuZGV0YWlsLm5vZGVOYW1lfV9ub2RlTGlzdEl0ZW1Nb3VzZW92ZXIodCl7dGhpcy5oaWdobGlnaHRlZE5vZGU9dC5kZXRhaWwubm9kZU5hbWV9X25vZGVMaXN0SXRlbU1vdXNlb3V0KCl7dGhpcy5oaWdobGlnaHRlZE5vZGU9bnVsbH1faGVhbHRoUGlsbHNBdmFpbGFibGUodCxlKXtyZXR1cm4gdCYmZSYmT2JqZWN0LmtleXMoZSkubGVuZ3RoPjB9X2VxdWFscyh0LGUpe3JldHVybiB0PT09ZX19O1FadC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNlY29uZGFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWF4LWhlaWdodDogNjUwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7c2VsZWN0ZWROb2RlfX0iPgogICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0iY2FyZCI+CiAgICAgICAgPHRmLW5vZGUtaW5mbwogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW2dyYXBoSGllcmFyY2h5XV0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgICAgZmxhdC1ncmFwaD0iW1tncmFwaF1dIgogICAgICAgICAgZ3JhcGgtbm9kZS1uYW1lPSJbW3NlbGVjdGVkTm9kZV1dIgogICAgICAgICAgbm9kZS1pbmNsdWRlPSJbW3NlbGVjdGVkTm9kZUluY2x1ZGVdXSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7aGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgPgogICAgICAgIDwvdGYtbm9kZS1pbmZvPgogICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdvcF9jb21wYXRpYmlsaXR5JyldXSI+CiAgICAgIDx0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZAogICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIgogICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgIG5vZGUtdGl0bGU9IltbY29tcGF0Tm9kZVRpdGxlXV0iCiAgICAgID4KICAgICAgPC90Zi1ncmFwaC1vcC1jb21wYXQtY2FyZD4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUKICAgICAgaXM9ImRvbS1pZiIKICAgICAgaWY9IltbX2hlYWx0aFBpbGxzQXZhaWxhYmxlKGRlYnVnZ2VyRGF0YUVuYWJsZWQsIG5vZGVOYW1lc1RvSGVhbHRoUGlsbHMpXV0iCiAgICA+CiAgICAgIDx0Zi1ncmFwaC1kZWJ1Z2dlci1kYXRhLWNhcmQKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgIGRlYnVnZ2VyLW51bWVyaWMtYWxlcnRzPSJbW2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7aGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIgogICAgICAgIGFsbC1zdGVwcy1tb2RlLWVuYWJsZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IgogICAgICAgIHNwZWNpZmljLWhlYWx0aC1waWxsLXN0ZXA9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICA+CiAgICAgIDwvdGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkPgogICAgPC90ZW1wbGF0ZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHJLdCldLFFadC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE4kdCldLFFadC5wcm90b3R5cGUsImdyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEFLdCldLFFadC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRWnQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxRWnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUVp0LnByb3RvdHlwZSwiY29tcGF0Tm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxRWnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFadC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUVp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFadC5wcm90b3R5cGUsImRlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksUVp0PXQoW2koInRmLWdyYXBoLWluZm8iKV0sUVp0KTtjb25zdCB0SnQ9e01BWF9OT0RFX0NPVU5UOjFlNCxNQVhfRURHRV9DT1VOVDoxZTR9O2xldCBlSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmhpZXJhcmNoeVBhcmFtcz1hS3QsdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPSExLHRoaXMuc3BlY2lmaWNIZWFsdGhQaWxsU3RlcD0wLHRoaXMuY29tcGF0Tm9kZVRpdGxlPSJUUFUgQ29tcGF0aWJpbGl0eSJ9Zml0KCl7dGhpcy4kLmdyYXBoLmZpdCgpfWRvd25sb2FkQXNJbWFnZSh0KXtyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9eWllbGQgdGhpcy4kLmdyYXBoLmdldEltYWdlQmxvYigpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24uaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGUpLG4uZG93bmxvYWQ9dCxuLmNsaWNrKCksVVJMLnJldm9rZU9iamVjdFVSTChuLmhyZWYpfSkpfV9pc05vdENvbXBsZXRlKHQpe3JldHVybiB0LnZhbHVlPDEwMH1fZ2V0Q29udGFpbmVyQ2xhc3ModCl7dmFyIGU9ImNvbnRhaW5lciI7cmV0dXJuIHQuZXJyb3ImJihlKz0iIGVycm9yIiksdGhpcy5faXNOb3RDb21wbGV0ZSh0KSYmKGUrPSIgbG9hZGluZyIpLGV9X29uTm9kZUluY2x1c2lvblRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVFeHRyYWN0KHQuZGV0YWlsLm5hbWUpfV9vbk5vZGVTZXJpZXNHcm91cFRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVTZXJpZXNHcm91cCh0LmRldGFpbC5uYW1lKX1fdXBkYXRlTm9kZUluY2x1ZGUoKXtjb25zdCB0PXRoaXMucmVuZGVySGllcmFyY2h5P3RoaXMucmVuZGVySGllcmFyY2h5LmdldE5vZGVCeU5hbWUodGhpcy5zZWxlY3RlZE5vZGUpOm51bGw7dGhpcy5fc2VsZWN0ZWROb2RlSW5jbHVkZT10P3QuaW5jbHVkZTprJHQuVU5TUEVDSUZJRUR9X3NsaW1HcmFwaENoYW5nZWQoKXtpZighdGhpcy5ncmFwaClyZXR1cm47Y29uc3R7TUFYX05PREVfQ09VTlQ6dCxNQVhfRURHRV9DT1VOVDplfT10SnQ7T2JqZWN0LmtleXModGhpcy5ncmFwaC5ub2RlcykubGVuZ3RoPnQmJnRoaXMuZ3JhcGguZWRnZXMubGVuZ3RoPmUmJnRoaXMuY29sb3JCeT09PXJadC5TVFJVQ1RVUkUmJih0aGlzLmNvbG9yQnk9clp0Lk5PTkUpfV9lbnN1cmVUZW1wbGF0ZXMoKXt0aGlzLmdyYXBoSGllcmFyY2h5JiZ0aGlzLmNvbG9yQnk9PT1yWnQuU1RSVUNUVVJFJiYodGhpcy5ncmFwaEhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCl8fHRoaXMuZ3JhcGhIaWVyYXJjaHkudXBkYXRlVGVtcGxhdGVzKCkpfX07ZUp0LnRlbXBsYXRlPXhlYAogICAgPHN0eWxlPgogICAgICA6Omhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAvZGVlcC8gLmNsb3NlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGxlZnQ6IDE1cHg7CiAgICAgICAgYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nIHsKICAgICAgICBjdXJzb3I6IHByb2dyZXNzOwogICAgICAgIG9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nLmVycm9yIHsKICAgICAgICBjdXJzb3I6IGF1dG87CiAgICAgIH0KCiAgICAgICNpbmZvIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDVweDsKICAgICAgICB0b3A6IDVweDsKICAgICAgICBwYWRkaW5nOiAwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAzODBweDsKICAgICAgICBtaW4td2lkdGg6IDMyMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgfQoKICAgICAgI21haW4gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNDBweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLW1zZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLXByb2dyZXNzIHsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQ6IDZweDsKICAgICAgICAtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvcjogI2YzOTEzZTsKICAgICAgfQoKICAgICAgLmNvbnRleHQtbWVudSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q0ZDRkNDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgewogICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIGxpIHsKICAgICAgICBwYWRkaW5nOiA0cHggMTZweDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzkxM2U7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc05vdENvbXBsZXRlKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtYmFyIj4KICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1tc2ciPltbcHJvZ3Jlc3MubXNnXV08L2Rpdj4KICAgICAgICA8cGFwZXItcHJvZ3Jlc3MgdmFsdWU9IltbcHJvZ3Jlc3MudmFsdWVdXSI+PC9wYXBlci1wcm9ncmVzcz4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBjbGFzcyQ9IltbX2dldENvbnRhaW5lckNsYXNzKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0ibWFpbiI+CiAgICAgICAgPHRmLWdyYXBoCiAgICAgICAgICBpZD0iZ3JhcGgiCiAgICAgICAgICBncmFwaC1oaWVyYXJjaHk9Int7Z3JhcGhIaWVyYXJjaHl9fSIKICAgICAgICAgIGJhc2ljLWdyYXBoPSJbW2dyYXBoXV0iCiAgICAgICAgICBoaWVyYXJjaHktcGFyYW1zPSJbW2hpZXJhcmNoeVBhcmFtc11dIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0ie3tyZW5kZXJIaWVyYXJjaHl9fSIKICAgICAgICAgIGRldmljZXMtZm9yLXN0YXRzPSJbW2RldmljZXNGb3JTdGF0c11dIgogICAgICAgICAgc3RhdHM9Iltbc3RhdHNdXSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJ7e19oaWdobGlnaHRlZE5vZGV9fSIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0ie3tjb2xvckJ5UGFyYW1zfX0iCiAgICAgICAgICBwcm9ncmVzcz0ie3twcm9ncmVzc319IgogICAgICAgICAgZWRnZS1sYWJlbC1mdW5jdGlvbj0iW1tlZGdlTGFiZWxGdW5jdGlvbl1dIgogICAgICAgICAgZWRnZS13aWR0aC1mdW5jdGlvbj0iW1tlZGdlV2lkdGhGdW5jdGlvbl1dIgogICAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0iW1toZWFsdGhQaWxsU3RlcEluZGV4XV0iCiAgICAgICAgICBoYW5kbGUtbm9kZS1zZWxlY3RlZD0iW1toYW5kbGVOb2RlU2VsZWN0ZWRdXSIKICAgICAgICAgIGhhbmRsZS1lZGdlLXNlbGVjdGVkPSJbW2hhbmRsZUVkZ2VTZWxlY3RlZF1dIgogICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW3RyYWNlSW5wdXRzXV0iCiAgICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9IltbYXV0b0V4dHJhY3ROb2Rlc11dIgogICAgICAgID48L3RmLWdyYXBoPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iaW5mbyI+CiAgICAgICAgPHRmLWdyYXBoLWluZm8KICAgICAgICAgIGlkPSJncmFwaC1pbmZvIgogICAgICAgICAgdGl0bGU9InNlbGVjdGVkIgogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW2dyYXBoSGllcmFyY2h5XV0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgICAgZ3JhcGg9IltbZ3JhcGhdXSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlLWluY2x1ZGU9Int7X3NlbGVjdGVkTm9kZUluY2x1ZGV9fSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7X2hpZ2hsaWdodGVkTm9kZX19IgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIGRlYnVnZ2VyLWRhdGEtZW5hYmxlZD0iW1tkZWJ1Z2dlckRhdGFFbmFibGVkXV0iCiAgICAgICAgICBhcmUtaGVhbHRoLXBpbGxzLWxvYWRpbmc9IltbYXJlSGVhbHRoUGlsbHNMb2FkaW5nXV0iCiAgICAgICAgICBkZWJ1Z2dlci1udW1lcmljLWFsZXJ0cz0iW1tkZWJ1Z2dlck51bWVyaWNBbGVydHNdXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGFsbC1zdGVwcy1tb2RlLWVuYWJsZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IgogICAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgIGNvbXBhdC1ub2RlLXRpdGxlPSJbW2NvbXBhdE5vZGVUaXRsZV1dIgogICAgICAgICAgb24tbm9kZS10b2dnbGUtaW5jbHVzaW9uPSJfb25Ob2RlSW5jbHVzaW9uVG9nZ2xlZCIKICAgICAgICAgIG9uLW5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwPSJfb25Ob2RlU2VyaWVzR3JvdXBUb2dnbGVkIgogICAgICAgID48L3RmLWdyYXBoLWluZm8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxlSnQucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixOJHQpXSxlSnQucHJvdG90eXBlLCJncmFwaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlSnQucHJvdG90eXBlLCJoaWVyYXJjaHlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwic3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVKdC5wcm90b3R5cGUsImF1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVKdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVKdC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGVKdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVKdC5wcm90b3R5cGUsImRlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJhcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxlSnQucHJvdG90eXBlLCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlSnQucHJvdG90eXBlLCJhbGxTdGVwc01vZGVFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxlSnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGVKdC5wcm90b3R5cGUsImhlYWx0aFBpbGxTdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVKdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlSnQucHJvdG90eXBlLCJjb21wYXROb2RlVGl0bGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiZWRnZVdpZHRoRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZUp0LnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUluY2x1ZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZUp0LnByb3RvdHlwZSwiX2hpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlSnQucHJvdG90eXBlLCJoYW5kbGVOb2RlU2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiZWRnZUxhYmVsRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZUp0LnByb3RvdHlwZSwiaGFuZGxlRWRnZVNlbGVjdGVkIix2b2lkIDApLHQoW2EoInNlbGVjdGVkTm9kZSIsInJlbmRlckhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX3VwZGF0ZU5vZGVJbmNsdWRlIixudWxsKSx0KFthKCJncmFwaCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX3NsaW1HcmFwaENoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yQnkiLCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZUp0LnByb3RvdHlwZSwiX2Vuc3VyZVRlbXBsYXRlcyIsbnVsbCksZUp0PXQoW2koInRmLWdyYXBoLWJvYXJkIildLGVKdCk7Y2xhc3Mgbkp0e2lzTm90VHB1T3AodCl7cmV0dXJuLTEhPXQudG9Mb3dlckNhc2UoKS5zZWFyY2goImNwdToiKXx8KC0xIT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJncHU6Iil8fC0xPT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJ0cHUiKSl9b3BWYWxpZCh0KXtyZXR1cm4gMD09dC5uYW1lLnNlYXJjaChUJHQpfHwoIXQub3B8fCghKCF0LmRldmljZXx8IXRoaXMuaXNOb3RUcHVPcCh0LmRldmljZSkpfHwoISghdC5kZXZpY2V8fC0xPT10LmRldmljZS5zZWFyY2goIlRQVV9TWVNURU0iKSl8fENlLmV4cG9ydHMuaW5jbHVkZXMobkp0LldISVRFTElTVCx0Lm9wKSkpKX19bkp0LldISVRFTElTVD1bIkFicyIsIkFjb3MiLCJBY29zaCIsIkFkZCIsIkFkZE4iLCJBZGRWMiIsIkFkanVzdENvbnRyYXN0djIiLCJBZGp1c3RIdWUiLCJBZGp1c3RTYXR1cmF0aW9uIiwiQWxsIiwiQWxsVG9BbGwiLCJBbmdsZSIsIkFueSIsIkFwcHJveGltYXRlRXF1YWwiLCJBcmdNYXgiLCJBcmdNaW4iLCJBc2luIiwiQXNpbmgiLCJBc3NlcnQiLCJBc3NpZ25BZGRWYXJpYWJsZU9wIiwiQXNzaWduU3ViVmFyaWFibGVPcCIsIkFzc2lnblZhcmlhYmxlT3AiLCJBdGFuIiwiQXRhbjIiLCJBdGFuaCIsIkF2Z1Bvb2wiLCJBdmdQb29sM0QiLCJBdmdQb29sM0RHcmFkIiwiQXZnUG9vbEdyYWQiLCJCYXRjaE1hdE11bCIsIkJhdGNoTWF0TXVsVjIiLCJCYXRjaFRvU3BhY2UiLCJCYXRjaFRvU3BhY2VORCIsIkJlc3NlbEkwZSIsIkJlc3NlbEkxZSIsIkJldGFpbmMiLCJCaWFzQWRkIiwiQmlhc0FkZEdyYWQiLCJCaWFzQWRkVjEiLCJCaXRjYXN0IiwiQml0d2lzZUFuZCIsIkJpdHdpc2VPciIsIkJpdHdpc2VYb3IiLCJCcm9hZGNhc3RBcmdzIiwiQnJvYWRjYXN0R3JhZGllbnRBcmdzIiwiQnJvYWRjYXN0VG8iLCJCdWNrZXRpemUiLCJDYXNlIiwiQ2FzdCIsIkNlaWwiLCJDaGVja051bWVyaWNzIiwiQ2hvbGVza3kiLCJDbGlwQnlWYWx1ZSIsIkNvbGxlY3RpdmVQZXJtdXRlIiwiQ29sbGVjdGl2ZVJlZHVjZVYyIiwiQ29tcGxleCIsIkNvbXBsZXhBYnMiLCJDb25jYXQiLCJDb25jYXRPZmZzZXQiLCJDb25jYXRWMiIsIkNvbmoiLCJDb25qdWdhdGVUcmFuc3Bvc2UiLCJDb25zdCIsIkNvbnRyb2xUcmlnZ2VyIiwiQ29udjJEIiwiQ29udjJEQmFja3Byb3BGaWx0ZXIiLCJDb252MkRCYWNrcHJvcElucHV0IiwiQ29udjNEIiwiQ29udjNEQmFja3Byb3BGaWx0ZXJWMiIsIkNvbnYzREJhY2twcm9wSW5wdXRWMiIsIkNvcyIsIkNvc2giLCJDcm9zcyIsIkNyb3NzUmVwbGljYVN1bSIsIkN1bXByb2QiLCJDdW1zdW0iLCJEYXRhRm9ybWF0RGltTWFwIiwiRGF0YUZvcm1hdFZlY1Blcm11dGUiLCJEZXB0aFRvU3BhY2UiLCJEZXB0aHdpc2VDb252MmROYXRpdmUiLCJEZXB0aHdpc2VDb252MmROYXRpdmVCYWNrcHJvcEZpbHRlciIsIkRlcHRod2lzZUNvbnYyZE5hdGl2ZUJhY2twcm9wSW5wdXQiLCJEZXF1YW50aXplIiwiRGV2aWNlSW5kZXgiLCJEaWFnIiwiRGlhZ1BhcnQiLCJEaWdhbW1hIiwiRGl2IiwiRGl2Tm9OYW4iLCJEeW5hbWljU3RpdGNoIiwiRWluc3VtIiwiRWx1IiwiRWx1R3JhZCIsIkVtcHR5IiwiRW1wdHlUZW5zb3JMaXN0IiwiRW5zdXJlU2hhcGUiLCJFcXVhbCIsIkVyZiIsIkVyZmMiLCJFcmZpbnYiLCJFeHAiLCJFeHBhbmREaW1zIiwiRXhwbTEiLCJFeHRyYWN0SW1hZ2VQYXRjaGVzIiwiRkZUIiwiRkZUMkQiLCJGRlQzRCIsIkZha2VQYXJhbSIsIkZha2VRdWFudFdpdGhNaW5NYXhBcmdzIiwiRmFrZVF1YW50V2l0aE1pbk1heEFyZ3NHcmFkaWVudCIsIkZha2VRdWFudFdpdGhNaW5NYXhWYXJzIiwiRmFrZVF1YW50V2l0aE1pbk1heFZhcnNHcmFkaWVudCIsIkZpbGwiLCJGbG9vciIsIkZsb29yRGl2IiwiRmxvb3JNb2QiLCJGdXNlZEJhdGNoTm9ybSIsIkZ1c2VkQmF0Y2hOb3JtR3JhZCIsIkZ1c2VkQmF0Y2hOb3JtR3JhZFYyIiwiRnVzZWRCYXRjaE5vcm1HcmFkVjMiLCJGdXNlZEJhdGNoTm9ybVYyIiwiRnVzZWRCYXRjaE5vcm1WMyIsIkdhdGhlciIsIkdhdGhlck5kIiwiR2F0aGVyVjIiLCJHZXRJdGVtIiwiR3JlYXRlciIsIkdyZWF0ZXJFcXVhbCIsIkhTVlRvUkdCIiwiSUZGVCIsIklGRlQyRCIsIklGRlQzRCIsIklSRkZUIiwiSVJGRlQyRCIsIklSRkZUM0QiLCJJZGVudGl0eSIsIklkZW50aXR5TiIsIklmIiwiSWdhbW1hIiwiSWdhbW1hR3JhZEEiLCJJZ2FtbWFjIiwiSW1hZyIsIkluVG9wS1YyIiwiSW5mZWVkRGVxdWV1ZSIsIkluZmVlZERlcXVldWVUdXBsZSIsIklucGxhY2VBZGQiLCJJbnBsYWNlVXBkYXRlIiwiSW52IiwiSW52ZXJ0IiwiSW52ZXJ0UGVybXV0YXRpb24iLCJJc0Zpbml0ZSIsIklzSW5mIiwiSXNOYW4iLCJLdGhPcmRlclN0YXRpc3RpYyIsIkwyTG9zcyIsIkxSTiIsIkxSTkdyYWQiLCJMZWFreVJlbHUiLCJMZWFreVJlbHVHcmFkIiwiTGVmdFNoaWZ0IiwiTGVzcyIsIkxlc3NFcXVhbCIsIkxnYW1tYSIsIkxpblNwYWNlIiwiTGlzdERpZmYiLCJMb2ciLCJMb2cxcCIsIkxvZ1NvZnRtYXgiLCJMb2dpY2FsQW5kIiwiTG9naWNhbE5vdCIsIkxvZ2ljYWxPciIsIkxvd2VyQm91bmQiLCJNYWtlVW5pcXVlIiwiTWF0TXVsIiwiTWF0cml4QmFuZFBhcnQiLCJNYXRyaXhEaWFnIiwiTWF0cml4RGlhZ1BhcnQiLCJNYXRyaXhEaWFnUGFydFYyIiwiTWF0cml4RGlhZ1BhcnRWMyIsIk1hdHJpeERpYWdWMiIsIk1hdHJpeERpYWdWMyIsIk1hdHJpeEludmVyc2UiLCJNYXRyaXhTZXREaWFnIiwiTWF0cml4U2V0RGlhZ1YyIiwiTWF0cml4U2V0RGlhZ1YzIiwiTWF0cml4U29sdmUiLCJNYXRyaXhUcmlhbmd1bGFyU29sdmUiLCJNYXgiLCJNYXhQb29sIiwiTWF4UG9vbDNEIiwiTWF4UG9vbDNER3JhZCIsIk1heFBvb2wzREdyYWRHcmFkIiwiTWF4UG9vbEdyYWQiLCJNYXhQb29sR3JhZEdyYWQiLCJNYXhQb29sR3JhZEdyYWRWMiIsIk1heFBvb2xHcmFkVjIiLCJNYXhQb29sVjIiLCJNYXhpbXVtIiwiTWVhbiIsIk1pbiIsIk1pbmltdW0iLCJNaXJyb3JQYWQiLCJNaXJyb3JQYWRHcmFkIiwiTW9kIiwiTXVsIiwiTXVsTm9OYW4iLCJNdWx0aW5vbWlhbCIsIk5kdHJpIiwiTmVnIiwiTmV4dEFmdGVyIiwiTm9PcCIsIk5vbk1heFN1cHByZXNzaW9uVjQiLCJOb3RFcXVhbCIsIk9uZUhvdCIsIk9uZXNMaWtlIiwiT3V0ZmVlZEVucXVldWUiLCJPdXRmZWVkRW5xdWV1ZVR1cGxlIiwiUGFjayIsIlBhZCIsIlBhZFYyIiwiUGFyYWxsZWxEeW5hbWljU3RpdGNoIiwiUGFyYW1ldGVyaXplZFRydW5jYXRlZE5vcm1hbCIsIlBhcnRpdGlvbmVkQ2FsbCIsIlBsYWNlaG9sZGVyV2l0aERlZmF1bHQiLCJQb2x5Z2FtbWEiLCJQb3B1bGF0aW9uQ291bnQiLCJQb3ciLCJQcmV2ZW50R3JhZGllbnQiLCJQcm9kIiwiUXIiLCJRdWFudGl6ZUFuZERlcXVhbnRpemVWMiIsIlF1YW50aXplQW5kRGVxdWFudGl6ZVYzIiwiUkZGVCIsIlJGRlQyRCIsIlJGRlQzRCIsIlJHQlRvSFNWIiwiUmFuZG9tR2FtbWFHcmFkIiwiUmFuZG9tU2h1ZmZsZSIsIlJhbmRvbVN0YW5kYXJkTm9ybWFsIiwiUmFuZG9tVW5pZm9ybSIsIlJhbmRvbVVuaWZvcm1JbnQiLCJSYW5nZSIsIlJhbmsiLCJSZWFkVmFyaWFibGVPcCIsIlJlYWwiLCJSZWFsRGl2IiwiUmVjaXByb2NhbCIsIlJlY2lwcm9jYWxHcmFkIiwiUmVsdSIsIlJlbHU2IiwiUmVsdTZHcmFkIiwiUmVsdUdyYWQiLCJSZXNoYXBlIiwiUmVzaXplQmlsaW5lYXIiLCJSZXNpemVCaWxpbmVhckdyYWQiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3IiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3JHcmFkIiwiUmVzb3VyY2VBcHBseUFkYU1heCIsIlJlc291cmNlQXBwbHlBZGFkZWx0YSIsIlJlc291cmNlQXBwbHlBZGFncmFkIiwiUmVzb3VyY2VBcHBseUFkYWdyYWREQSIsIlJlc291cmNlQXBwbHlBZGFncmFkVjIiLCJSZXNvdXJjZUFwcGx5QWRhbSIsIlJlc291cmNlQXBwbHlBZGRTaWduIiwiUmVzb3VyY2VBcHBseUNlbnRlcmVkUk1TUHJvcCIsIlJlc291cmNlQXBwbHlGdHJsIiwiUmVzb3VyY2VBcHBseUZ0cmxWMiIsIlJlc291cmNlQXBwbHlHcmFkaWVudERlc2NlbnQiLCJSZXNvdXJjZUFwcGx5S2VyYXNNb21lbnR1bSIsIlJlc291cmNlQXBwbHlNb21lbnR1bSIsIlJlc291cmNlQXBwbHlQb3dlclNpZ24iLCJSZXNvdXJjZUFwcGx5UHJveGltYWxBZGFncmFkIiwiUmVzb3VyY2VBcHBseVByb3hpbWFsR3JhZGllbnREZXNjZW50IiwiUmVzb3VyY2VBcHBseVJNU1Byb3AiLCJSZXNvdXJjZUdhdGhlciIsIlJlc291cmNlU2NhdHRlckFkZCIsIlJlc291cmNlU2NhdHRlckRpdiIsIlJlc291cmNlU2NhdHRlck1heCIsIlJlc291cmNlU2NhdHRlck1pbiIsIlJlc291cmNlU2NhdHRlck11bCIsIlJlc291cmNlU2NhdHRlck5kQWRkIiwiUmVzb3VyY2VTY2F0dGVyTmRTdWIiLCJSZXNvdXJjZVNjYXR0ZXJOZFVwZGF0ZSIsIlJlc291cmNlU2NhdHRlclN1YiIsIlJlc291cmNlU2NhdHRlclVwZGF0ZSIsIlJlc291cmNlU3RyaWRlZFNsaWNlQXNzaWduIiwiUmV2ZXJzZSIsIlJldmVyc2VTZXF1ZW5jZSIsIlJldmVyc2VWMiIsIlJpZ2h0U2hpZnQiLCJSaW50IiwiUm5nUmVhZEFuZFNraXAiLCJSbmdTa2lwIiwiUm9sbCIsIlJvdW5kIiwiUnNxcnQiLCJSc3FydEdyYWQiLCJTY2F0dGVyTmQiLCJTZWxlY3QiLCJTZWxlY3RWMiIsIlNlbGZBZGpvaW50RWlnVjIiLCJTZWx1IiwiU2VsdUdyYWQiLCJTaGFwZSIsIlNoYXBlTiIsIlNpZ21vaWQiLCJTaWdtb2lkR3JhZCIsIlNpZ24iLCJTaW4iLCJTaW5oIiwiU2l6ZSIsIlNsaWNlIiwiU25hcHNob3QiLCJTb2Z0bWF4IiwiU29mdG1heENyb3NzRW50cm9weVdpdGhMb2dpdHMiLCJTb2Z0cGx1cyIsIlNvZnRwbHVzR3JhZCIsIlNvZnRzaWduIiwiU29mdHNpZ25HcmFkIiwiU3BhY2VUb0JhdGNoIiwiU3BhY2VUb0JhdGNoTkQiLCJTcGFjZVRvRGVwdGgiLCJTcGFyc2VNYXRNdWwiLCJTcGFyc2VTb2Z0bWF4Q3Jvc3NFbnRyb3B5V2l0aExvZ2l0cyIsIlNwYXJzZVRvRGVuc2UiLCJTcGxpdCIsIlNwbGl0ViIsIlNxcnQiLCJTcXJ0R3JhZCIsIlNxdWFyZSIsIlNxdWFyZWREaWZmZXJlbmNlIiwiU3F1ZWV6ZSIsIlN0YWNrQ2xvc2VWMiIsIlN0YWNrUG9wVjIiLCJTdGFja1B1c2hWMiIsIlN0YWNrVjIiLCJTdGF0ZWZ1bFBhcnRpdGlvbmVkQ2FsbCIsIlN0YXRlZnVsU3RhbmRhcmROb3JtYWxWMiIsIlN0YXRlZnVsVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVmdWxVbmlmb3JtIiwiU3RhdGVmdWxVbmlmb3JtRnVsbEludCIsIlN0YXRlZnVsVW5pZm9ybUludCIsIlN0YXRlbGVzc0Nhc2UiLCJTdGF0ZWxlc3NJZiIsIlN0YXRlbGVzc011bHRpbm9taWFsIiwiU3RhdGVsZXNzUmFuZG9tR2V0QWxnIiwiU3RhdGVsZXNzUmFuZG9tR2V0S2V5Q291bnRlciIsIlN0YXRlbGVzc1JhbmRvbUdldEtleUNvdW50ZXJBbGciLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWwiLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWxWMiIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm0iLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtRnVsbEludCIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1GdWxsSW50VjIiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtSW50IiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybUludFYyIiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybVYyIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsVjIiLCJTdGF0ZWxlc3NXaGlsZSIsIlN0b3BHcmFkaWVudCIsIlN0cmlkZWRTbGljZSIsIlN0cmlkZWRTbGljZUdyYWQiLCJTdWIiLCJTdW0iLCJTdmQiLCJTeW1ib2xpY0dyYWRpZW50IiwiVFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJUYW4iLCJUYW5oIiwiVGFuaEdyYWQiLCJUZW5zb3JBcnJheUNsb3NlVjMiLCJUZW5zb3JBcnJheUNvbmNhdFYzIiwiVGVuc29yQXJyYXlHYXRoZXJWMyIsIlRlbnNvckFycmF5R3JhZFYzIiwiVGVuc29yQXJyYXlSZWFkVjMiLCJUZW5zb3JBcnJheVNjYXR0ZXJWMyIsIlRlbnNvckFycmF5U2l6ZVYzIiwiVGVuc29yQXJyYXlTcGxpdFYzIiwiVGVuc29yQXJyYXlWMyIsIlRlbnNvckFycmF5V3JpdGVWMyIsIlRlbnNvckxpc3RDb25jYXRWMiIsIlRlbnNvckxpc3RFbGVtZW50U2hhcGUiLCJUZW5zb3JMaXN0RnJvbVRlbnNvciIsIlRlbnNvckxpc3RHYXRoZXIiLCJUZW5zb3JMaXN0R2V0SXRlbSIsIlRlbnNvckxpc3RMZW5ndGgiLCJUZW5zb3JMaXN0UG9wQmFjayIsIlRlbnNvckxpc3RQdXNoQmFjayIsIlRlbnNvckxpc3RSZXNlcnZlIiwiVGVuc29yTGlzdFNldEl0ZW0iLCJUZW5zb3JMaXN0U3BsaXQiLCJUZW5zb3JMaXN0U3RhY2siLCJUZW5zb3JTY2F0dGVyQWRkIiwiVGVuc29yU2NhdHRlck1heCIsIlRlbnNvclNjYXR0ZXJNaW4iLCJUZW5zb3JTY2F0dGVyU3ViIiwiVGVuc29yU2NhdHRlclVwZGF0ZSIsIlRlbnNvclN0cmlkZWRTbGljZVVwZGF0ZSIsIlRpbGUiLCJUb3BLVW5pcXVlIiwiVG9wS1YyIiwiVG9wS1dpdGhVbmlxdWUiLCJUcmFuc3Bvc2UiLCJUcmlkaWFnb25hbFNvbHZlIiwiVHJ1bmNhdGVEaXYiLCJUcnVuY2F0ZU1vZCIsIlRydW5jYXRlZE5vcm1hbCIsIlVuaXF1ZSIsIlVucGFjayIsIlVuc29ydGVkU2VnbWVudE1heCIsIlVuc29ydGVkU2VnbWVudE1pbiIsIlVuc29ydGVkU2VnbWVudFByb2QiLCJVbnNvcnRlZFNlZ21lbnRTdW0iLCJVcHBlckJvdW5kIiwiVmFySXNJbml0aWFsaXplZE9wIiwiVmFyaWFibGVTaGFwZSIsIldoZXJlIiwiV2hpbGUiLCJYZGl2eSIsIlhsYUJyb2FkY2FzdEhlbHBlciIsIlhsYUNvbnYiLCJYbGFDb252VjIiLCJYbGFEZXF1YW50aXplIiwiWGxhRG90IiwiWGxhRG90VjIiLCJYbGFEeW5hbWljU2xpY2UiLCJYbGFEeW5hbWljVXBkYXRlU2xpY2UiLCJYbGFFaW5zdW0iLCJYbGFHYXRoZXIiLCJYbGFIb3N0Q29tcHV0ZSIsIlhsYUlmIiwiWGxhS2V5VmFsdWVTb3J0IiwiWGxhUGFkIiwiWGxhUmVjdiIsIlhsYVJlY3ZGcm9tSG9zdCIsIlhsYVJlZHVjZSIsIlhsYVJlZHVjZVdpbmRvdyIsIlhsYVJlcGxpY2FJZCIsIlhsYVNjYXR0ZXIiLCJYbGFTZWxlY3RBbmRTY2F0dGVyIiwiWGxhU2VsZkFkam9pbnRFaWciLCJYbGFTZW5kIiwiWGxhU2VuZFRvSG9zdCIsIlhsYVNldEJvdW5kIiwiWGxhU2V0RHluYW1pY0RpbWVuc2lvblNpemUiLCJYbGFTaGFyZGluZyIsIlhsYVNvcnQiLCJYbGFTcG1kRnVsbFRvU2hhcmRTaGFwZSIsIlhsYVNwbWRTaGFyZFRvRnVsbFNoYXBlIiwiWGxhU3ZkIiwiWGxhVmFyaWFkaWNSZWR1Y2UiLCJYbGFWYXJpYWRpY1NvcnQiLCJYbGFXaGlsZSIsIlhsb2cxcHkiLCJYbG9neSIsIlplcm9zTGlrZSIsIlpldGEiLCJFbnRlciIsIkV4aXQiLCJMb29wQ29uZCIsIk1lcmdlIiwiTmV4dEl0ZXJhdGlvbiIsIlN3aXRjaCIsIl9BcmciLCJfQXJyYXlUb0xpc3QiLCJfRnVzZWRCYXRjaE5vcm1FeCIsIl9MaXN0VG9BcnJheSIsIl9QYXJhbGxlbENvbmNhdFVwZGF0ZSIsIl9SZWN2VFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJfUmVjdlRQVUVtYmVkZGluZ0RlZHVwbGljYXRpb25EYXRhIiwiX1JldHZhbCIsIl9TZW5kVFBVRW1iZWRkaW5nR3JhZGllbnRzIiwiX1RQVUNvbXBpbGUiLCJfVFBVRXhlY3V0ZSIsIl9VbmFyeU9wc0NvbXBvc2l0aW9uIiwiVFBVQ29tcGlsYXRpb25SZXN1bHQiLCJUUFVSZXBsaWNhdGVkSW5wdXQiLCJUUFVSZXBsaWNhdGVkT3V0cHV0IiwiVFBVUmVwbGljYXRlTWV0YWRhdGEiLCJNZXJnZVYyQ2hlY2twb2ludHMiLCJSZXN0b3JlVjIiLCJTYXZlVjIiLCJBYm9ydCIsIkFzc2VydCIsIkFzc2lnbiIsIlBsYWNlaG9sZGVyIiwiUGxhY2Vob2xkZXJWMiIsIlNoYXJkZWRGaWxlbmFtZSIsIlN0cmluZ0pvaW4iLCJWYXJpYWJsZSIsIlZhcmlhYmxlVjIiLCJWYXJIYW5kbGVPcCIsIkF1ZGlvU3VtbWFyeSIsIkF1ZGlvU3VtbWFyeVYyIiwiRGVidWdOdW1lcmljU3VtbWFyeSIsIkhpc3RvZ3JhbVN1bW1hcnkiLCJJbWFnZVN1bW1hcnkiLCJNZXJnZVN1bW1hcnkiLCJTY2FsYXJTdW1tYXJ5IiwiU3RhdHNBZ2dyZWdhdG9yU3VtbWFyeSJdO2xldCBpSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yYXdSZWdleElucHV0PSIiLHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD0iIix0aGlzLl9zZWFyY2hUaW1lb3V0RGVsYXk9MTUwLHRoaXMuX21heFJlZ2V4UmVzdWx0cz00Mn1nZXQgX3JlZ2V4SW5wdXQoKXtyZXR1cm4gdGhpcy5fcmF3UmVnZXhJbnB1dC50cmltKCl9X3JlZ2V4SW5wdXRDaGFuZ2VkKCl7dGhpcy5fcmVxdWVzdFNlYXJjaCgpfV9jbGVhclNlYXJjaFJlc3VsdHMoKXt0aGlzLnNldCgiX3JlZ2V4TWF0Y2hlcyIsW10pfV9yZXF1ZXN0U2VhcmNoKCl7dGhpcy5fc2VhcmNoUGVuZGluZ3x8KHRoaXMuX3JlZ2V4SW5wdXQhPT10aGlzLl9wcmV2aW91c1JlZ2V4SW5wdXQ/KHRoaXMuX3NlYXJjaFBlbmRpbmc9ITAsdGhpcy5fZXhlY3V0ZVNlYXJjaCgpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5fc2VhcmNoUGVuZGluZz0hMSx0aGlzLl9yZXF1ZXN0U2VhcmNoKCl9KSx0aGlzLl9zZWFyY2hUaW1lb3V0RGVsYXkpKTp0aGlzLl9zZWFyY2hQZW5kaW5nPSExKX1fZXhlY3V0ZVNlYXJjaCgpe2lmKHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD10aGlzLl9yZWdleElucHV0LCF0aGlzLl9yZWdleElucHV0KXJldHVybiB2b2lkIHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpO3RyeXt2YXIgdD1uZXcgUmVnRXhwKHRoaXMuX3JlZ2V4SW5wdXQpfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpfWNvbnN0IGU9W10sbj10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO0NlLmV4cG9ydHMuZWFjaChuLCgobixpKT0+e2lmKGUubGVuZ3RoPj10aGlzLl9tYXhSZWdleFJlc3VsdHMpcmV0dXJuITE7dC50ZXN0KGkpJiZlLnB1c2goaSl9KSksdGhpcy5zZXQoIl9yZWdleE1hdGNoZXMiLGUpfV9tYXRjaENsaWNrZWQodCl7dGhpcy5zZXQoInNlbGVjdGVkTm9kZSIsdC5tb2RlbC5pdGVtKSxoJHQoe2FjdGlvbklkOkJBdC5OT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRH0pfX07aUp0LnRlbXBsYXRlPXhlYAogICAgPGRpdiBpZD0ic2VhcmNoLWNvbnRhaW5lciI+CiAgICAgIDxwYXBlci1pbnB1dAogICAgICAgIGlkPSJydW5zLXJlZ2V4IgogICAgICAgIGxhYmVsPSJTZWFyY2ggbm9kZXMgKHJlZ2V4KSIKICAgICAgICB2YWx1ZT0ie3tfcmF3UmVnZXhJbnB1dH19IgogICAgICA+CiAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgIDxkaXYgaWQ9InNlYXJjaC1yZXN1bHRzLWFuY2hvciI+CiAgICAgICAgPGRpdiBpZD0ic2VhcmNoLXJlc3VsdHMiPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcmVnZXhNYXRjaGVzXV0iPgogICAgICAgICAgICA8ZGl2IGlkPSJzZWFyY2gtbWF0Y2giIG9uLWNsaWNrPSJfbWF0Y2hDbGlja2VkIj5bW2l0ZW1dXTwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgI3NlYXJjaC1jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CgogICAgICAjcnVucy1yZWdleCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtcmVzdWx0cy1hbmNob3IgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgI3NlYXJjaC1yZXN1bHRzIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtbWF0Y2ggewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBkaXJlY3Rpb246IHJ0bDsKICAgICAgfQoKICAgICAgI3NlYXJjaC1tYXRjaDpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItb3JhbmdlLXdlYWspOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlKdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saUp0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGlKdC5wcm90b3R5cGUsIl9yYXdSZWdleElucHV0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGlKdC5wcm90b3R5cGUsIl9wcmV2aW91c1JlZ2V4SW5wdXQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0saUp0LnByb3RvdHlwZSwiX3NlYXJjaFRpbWVvdXREZWxheSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGlKdC5wcm90b3R5cGUsIl9zZWFyY2hQZW5kaW5nIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGlKdC5wcm90b3R5cGUsIl9tYXhSZWdleFJlc3VsdHMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGlKdC5wcm90b3R5cGUsIl9yZWdleE1hdGNoZXMiLHZvaWQgMCksdChbcygicmVuZGVySGllcmFyY2h5IiwiX3Jhd1JlZ2V4SW5wdXQiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxpSnQucHJvdG90eXBlLCJfcmVnZXhJbnB1dCIsbnVsbCksdChbYSgiX3JlZ2V4SW5wdXQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlKdC5wcm90b3R5cGUsIl9yZWdleElucHV0Q2hhbmdlZCIsbnVsbCksaUp0PXQoW2koInRmLWdyYXBoLW5vZGUtc2VhcmNoIildLGlKdCk7Y29uc3Qgckp0PS9kZXZpY2U6KFteOl0rOlswLTldKykkLyxvSnQ9W3tyZWdleDpySnR9XSxhSnQ9W10sc0p0PW5ldyBTZXQoW3JadC5DT01QVVRFX1RJTUUsclp0Lk1FTU9SWV0pO2xldCBsSnQ9Y2xhc3MgZXh0ZW5kcyhjcihnbCh3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5Db2xvckJ5PXJadCx0aGlzLnN0YXRzPW51bGwsdGhpcy5kZXZpY2VzRm9yU3RhdHM9bnVsbCx0aGlzLmNvbG9yQnk9clp0LlNUUlVDVFVSRSx0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX3NlbGVjdGVkUnVuSW5kZXg9MCx0aGlzLnRyYWNlSW5wdXRzPSExLHRoaXMuYXV0b0V4dHJhY3ROb2Rlcz0hMCx0aGlzLl9zZWxlY3RlZFRhZ0luZGV4PTAsdGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGU9UVh0Lk9QX0dSQVBILHRoaXMuc2hvd1Nlc3Npb25SdW5zRHJvcGRvd249ITAsdGhpcy5zaG93VXBsb2FkQnV0dG9uPSEwLHRoaXMuX2xlZ2VuZE9wZW5lZD0hMCx0aGlzLl9kb3dubG9hZEZpbGVuYW1lPSJncmFwaC5wbmcifV9vbkdyYXBoVHlwZUNoYW5nZWRCeVVzZXJHZXN0dXJlKCl7aCR0KHthY3Rpb25JZDpCQXQuR1JBUEhfVFlQRV9DSEFOR0VELGV2ZW50TGFiZWw6dGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGV9KX1fb25Db2xvckJ5Q2hhbmdlZEJ5VXNlckdlc3R1cmUoKXtoJHQoe2FjdGlvbklkOkJBdC5OT0RFX0NPTE9SX01PREVfQ0hBTkdFRCxldmVudExhYmVsOnRoaXMuY29sb3JCeX0pfV9vblRyYWNlSW5wdXRzQ2hhbmdlZEJ5VXNlckdlc3R1cmUoKXtoJHQoe2FjdGlvbklkOkJBdC5UUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUR9KX1feGxhQ2x1c3RlcnNQcm92aWRlZCh0KXtyZXR1cm4gdCYmdC5oaWVyYXJjaHkmJnQuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aD4wfV9zdGF0c0NoYW5nZWQodCl7aWYobnVsbCE9dCl7dmFyIGU9e307Q2UuZXhwb3J0cy5lYWNoKHQuZGV2X3N0YXRzLChmdW5jdGlvbih0KXt2YXIgbj1DZS5leHBvcnRzLnNvbWUob0p0LChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWdleC50ZXN0KHQuZGV2aWNlKX0pKSxpPUNlLmV4cG9ydHMuc29tZShhSnQsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZ2V4LnRlc3QodC5kZXZpY2UpfSkpO24mJiFpJiYoZVt0LmRldmljZV09ITApfSkpLHRoaXMuc2V0KCJkZXZpY2VzRm9yU3RhdHMiLGUpfX1nZXQgX2N1cnJlbnREZXZpY2VzKCl7dmFyIHQ9dGhpcy5kZXZpY2VzRm9yU3RhdHM7Y29uc3QgZT10aGlzLnN0YXRzLG49KGU/ZS5kZXZfc3RhdHM6W10pLm1hcCgodD0+dC5kZXZpY2UpKS5maWx0ZXIoKHQ9Pm9KdC5zb21lKChlPT5lLnJlZ2V4LnRlc3QodCkpKSkpLGk9eCR0KG4pO2lmKDE9PWkubGVuZ3RoKXtjb25zdCB0PWlbMF0ubWF0Y2gockp0KTt0JiYoaVswXT10WzFdKX1yZXR1cm4gbi5tYXAoKChlLG4pPT57bGV0IHI9bnVsbDtyZXR1cm4gYUp0LmZvckVhY2goKHQ9Pnt0LnJlZ2V4LnRlc3QoZSkmJihyPXQubXNnKX0pKSx7ZGV2aWNlOmUsc3VmZml4Omlbbl0sdXNlZDp0W2VdLGlnbm9yZWRNc2c6cn19KSl9X2RldmljZUNoZWNrYm94Q2xpY2tlZCh0KXtjb25zdCBlPXQudGFyZ2V0LG49T2JqZWN0LmFzc2lnbih7fSx0aGlzLmRldmljZXNGb3JTdGF0cyksaT1lLnZhbHVlO2UuY2hlY2tlZD9uW2ldPSEwOmRlbGV0ZSBuW2ldLHRoaXMuc2V0KCJkZXZpY2VzRm9yU3RhdHMiLG4pfV9udW1UYWdzKHQsZSl7cmV0dXJuIHRoaXMuX2dldFRhZ3ModCxlKS5sZW5ndGh9X2dldFRhZ3ModCxlKXtyZXR1cm4gdCYmdFtlXT90W2VdLnRhZ3M6W119X2ZpdCgpe3RoaXMuZmlyZSgiZml0LXRhcCIpfV9pc0dyYWRpZW50Q29sb3JpbmcodCxlKXtyZXR1cm4gc0p0LmhhcyhlKSYmbnVsbCE9dH1fZXF1YWxzKHQsZSl7cmV0dXJuIHQ9PT1lfWdldCBfY3VycmVudERldmljZVBhcmFtcygpe2NvbnN0IHQ9dGhpcy5jb2xvckJ5UGFyYW1zLmRldmljZS5maWx0ZXIoKHQ9Pm9KdC5zb21lKChlPT5lLnJlZ2V4LnRlc3QodC5kZXZpY2UpKSkpKSxlPXgkdCh0Lm1hcCgodD0+dC5kZXZpY2UpKSk7aWYoMT09ZS5sZW5ndGgpe3ZhciBuPWVbMF0ubWF0Y2gockp0KTtuJiYoZVswXT1uWzFdKX1yZXR1cm4gdC5tYXAoKCh0LG4pPT4oe2RldmljZTplW25dLGNvbG9yOnQuY29sb3J9KSkpfWdldCBfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXMoKXtyZXR1cm4gdGhpcy5jb2xvckJ5UGFyYW1zLnhsYV9jbHVzdGVyfWdldCBfY3VycmVudEdyYWRpZW50UGFyYW1zKCl7dmFyIHQ9dGhpcy5jb2xvckJ5UGFyYW1zLGU9dGhpcy5jb2xvckJ5O2lmKCF0aGlzLl9pc0dyYWRpZW50Q29sb3JpbmcodGhpcy5zdGF0cyxlKSlyZXR1cm47Y29uc3Qgbj10W2VdO2xldCBpPW4ubWluVmFsdWUscj1uLm1heFZhbHVlO3JldHVybiBlPT09clp0Lk1FTU9SWT8oaT12JHQoaSxfJHQpLHI9diR0KHIsXyR0KSk6ZT09PXJadC5DT01QVVRFX1RJTUUmJihpPXYkdChpLHkkdCkscj12JHQocix5JHQpKSx7bWluVmFsdWU6aSxtYXhWYWx1ZTpyLHN0YXJ0Q29sb3I6bi5zdGFydENvbG9yLGVuZENvbG9yOm4uZW5kQ29sb3J9fWRvd25sb2FkKCl7dGhpcy5maXJlKCJkb3dubG9hZC1pbWFnZS1yZXF1ZXN0ZWQiLHRoaXMuX2Rvd25sb2FkRmlsZW5hbWUpfV91cGRhdGVGaWxlSW5wdXQodCl7Y29uc3QgZT10LnRhcmdldC5maWxlc1swXTtpZighZSlyZXR1cm47bGV0IG49ZS5uYW1lO2NvbnN0IGk9bi5sYXN0SW5kZXhPZigiLiIpO2k+PTAmJihuPW4uc3Vic3RyaW5nKDAsaSkpO2NvbnN0IHI9bi5sYXN0SW5kZXhPZigiLyIpO3I+PTAmJihuPW4uc3Vic3RyaW5nKHIrMSkpLHRoaXMuX3NldERvd25sb2FkRmlsZW5hbWUobiksdGhpcy5zZXQoInNlbGVjdGVkRmlsZSIsdCksaCR0KHthY3Rpb25JZDpCQXQuVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNfSl9X2RhdGFzZXRzQ2hhbmdlZCh0LGUpe3ZhciBuO251bGwhPWUmJih0aGlzLl9zZWxlY3RlZFJ1bkluZGV4PTApLHRoaXMuX3NldERvd25sb2FkRmlsZW5hbWUobnVsbD09PShuPXRoaXMuZGF0YXNldHNbdGhpcy5fc2VsZWN0ZWRSdW5JbmRleF0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm5hbWUpfV9jb21wdXRlU2VsZWN0aW9uKHQsZSxuLGkpe3JldHVybiB0W2VdJiZ0W2VdLnRhZ3Nbbl0/e3J1bjp0W2VdLm5hbWUsdGFnOnRbZV0udGFnc1tuXS50YWcsdHlwZTppfTpudWxsfV9zZWxlY3RlZFJ1bkluZGV4Q2hhbmdlZCh0KXt2YXIgZTt0aGlzLmRhdGFzZXRzJiYodGhpcy5jb2xvckJ5PXJadC5TVFJVQ1RVUkUsdGhpcy5fc2VsZWN0ZWRUYWdJbmRleD0wLHRoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXRoaXMuX2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCksdGhpcy50cmFjZUlucHV0cz0hMSx0aGlzLl9zZXREb3dubG9hZEZpbGVuYW1lKG51bGw9PT0oZT10aGlzLmRhdGFzZXRzW3RdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5uYW1lKSl9X3NlbGVjdGVkVGFnSW5kZXhDaGFuZ2VkKCl7dGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGU9dGhpcy5fZ2V0RGVmYXVsdFNlbGVjdGlvblR5cGUoKX1fZ2V0RGVmYXVsdFNlbGVjdGlvblR5cGUoKXtjb25zdHtkYXRhc2V0czp0LF9zZWxlY3RlZFJ1bkluZGV4OmUsX3NlbGVjdGVkVGFnSW5kZXg6bn09dGhpcztpZighdHx8IXRbZV18fCF0W2VdLnRhZ3Nbbl18fHRbZV0udGFnc1tuXS5vcEdyYXBoKXJldHVybiBRWHQuT1BfR1JBUEg7Y29uc3QgaT10W2VdO3JldHVybiBpLnRhZ3Nbbl0ucHJvZmlsZT9RWHQuUFJPRklMRTppLnRhZ3Nbbl0uY29uY2VwdHVhbEdyYXBoP1FYdC5DT05DRVBUVUFMX0dSQVBIOlFYdC5PUF9HUkFQSH1fZ2V0RmlsZSgpe3RoaXMuJCQoIiNmaWxlIikuY2xpY2soKX1fc2V0RG93bmxvYWRGaWxlbmFtZSh0KXt0aGlzLl9kb3dubG9hZEZpbGVuYW1lPSh0fHwiZ3JhcGgiKSsiLnBuZyJ9X3N0YXRzTm90TnVsbCh0KXtyZXR1cm4gbnVsbCE9PXR9X3RvZ2dsZUxlZ2VuZE9wZW4oKXt0aGlzLnNldCgiX2xlZ2VuZE9wZW5lZCIsIXRoaXMuX2xlZ2VuZE9wZW5lZCl9X2dldFRvZ2dsZUxlZ2VuZEljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1tb3JlIjoiZXhwYW5kLWxlc3MifV9nZXRTZWxlY3Rpb25PcEdyYXBoRGlzYWJsZWQodCxlLG4pe3JldHVybiF0W2VdfHwhdFtlXS50YWdzW25dfHwhdFtlXS50YWdzW25dLm9wR3JhcGh9X2dldFNlbGVjdGlvblByb2ZpbGVEaXNhYmxlZCh0LGUsbil7cmV0dXJuIXRbZV18fCF0W2VdLnRhZ3Nbbl18fCF0W2VdLnRhZ3Nbbl0ucHJvZmlsZX1fZ2V0U2VsZWN0aW9uQ29uY2VwdHVhbEdyYXBoRGlzYWJsZWQodCxlLG4pe3JldHVybiF0W2VdfHwhdFtlXS50YWdzW25dfHwhdFtlXS50YWdzW25dLmNvbmNlcHR1YWxHcmFwaH19O2Z1bmN0aW9uIGNKdCh0KXtyZXR1cm4gbmV3IFByb21pc2UoKChlLG4pPT57ZmV0Y2godCkudGhlbigodD0+e3Qub2s/dC5hcnJheUJ1ZmZlcigpLnRoZW4oZSxuKTp0LnRleHQoKS50aGVuKG4sbil9KSl9KSl9ZnVuY3Rpb24gdUp0KHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLGkscixvKXtyLnNldE1lc3NhZ2UodCk7dHJ5e2xldCBuPWQkdCh0LGksbyk7cmV0dXJuIHIudXBkYXRlUHJvZ3Jlc3MoZSksbn1jYXRjaChlKXtyLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pKCJSZWFkaW5nIG1ldGFkYXRhIHBidHh0Iiw0MCwoKCk9Pm51bGw9PXQ/UHJvbWlzZS5yZXNvbHZlKG51bGwpOmNKdCh0KSksZSxCQXQuRkVUQ0hfTUVUQURBVEFfUEJUWFRfQllURVMpLnRoZW4oKHQ9PmckdCgiUGFyc2luZyBtZXRhZGF0YS5wYnR4dCIsNjAsKCgpPT5udWxsIT10PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmSnQodCxwSnQpLnRoZW4oKHQ9PnQuc3RlcF9zdGF0cykpfSkodCk6UHJvbWlzZS5yZXNvbHZlKG51bGwpKSxlLEJBdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVCkpKX1mdW5jdGlvbiBoSnQodCxlLGkpe3JldHVybiBnJHQoIlJlYWRpbmcgZ3JhcGggcGJ0eHQiLDQwLCgoKT0+bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IG49RGF0ZS5ub3coKTtpZihlKXtjb25zdCB0PXlpZWxkIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG4pe2xldCBpPW5ldyBGaWxlUmVhZGVyO2kub25sb2FkPSgpPT50KGkucmVzdWx0KSxpLm9uZXJyb3I9KCk9Pm4oaS5lcnJvciksaS5yZWFkQXNBcnJheUJ1ZmZlcihlKX0pKTtyZXR1cm4gaCR0KHt0aW1pbmdJZDpCQXQuRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9GSUxFU1lTVEVNLGV2ZW50VmFsdWU6RGF0ZS5ub3coKS1ufSksdH1jb25zdCBpPXlpZWxkIGNKdCh0KTtyZXR1cm4gaCR0KHt0aW1pbmdJZDpCQXQuRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIsZXZlbnRWYWx1ZTpEYXRlLm5vdygpLW59KSxpfSkpKSxpLEJBdC5GRVRDSF9QQlRYVF9CWVRFUykudGhlbigodD0+ZyR0KCJQYXJzaW5nIGdyYXBoLnBidHh0Iiw2MCwoKCk9PihmdW5jdGlvbiBlKHQpe3JldHVybiBmSnQodCxkSnQpfSkodCkpLGksQkF0LlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUKSkpfWxKdC50ZW1wbGF0ZT14ZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiAjNTU1OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10aXRsZS1jb2xvcjogIzAwMDsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLWxlZ2VuZC10ZXh0LWNvbG9yOiAjMDAwOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtdGV4dC1jb2xvcjogIzU1NTsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXN1YnRpdGxlLWZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1zaGFyZWQtaW5wdXQtc3R5bGVfLV9mb250LXNpemU6IDE0cHg7CiAgICAgICAgLS1wYXBlci1mb250LXN1YmhlYWRfLV9mb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtbGVnZW5kLXRleHQtY29sb3I6ICNmM2YzZjM7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10ZXh0LWNvbG9yOiAjZWVlOwogICAgICB9CgogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaW5wdXQ6IHsKICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICBjb2xvcjogZ3JheTsKICAgICAgICB9CiAgICAgICAgLS1pcm9uLWljb24td2lkdGg6IDE1cHg7CiAgICAgICAgLS1pcm9uLWljb24taGVpZ2h0OiAxNXB4OwogICAgICAgIC0tcHJpbWFyeS10ZXh0LWNvbG9yOiBncmF5OwogICAgICAgIC0tcGFwZXItaXRlbS1taW4taGVpZ2h0OiAzMHB4OwogICAgICB9CgogICAgICBwYXBlci1idXR0b25bcmFpc2VkXS5rZXlib2FyZC1mb2N1cyB7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgfQoKICAgICAgLnJ1bi1kcm9wZG93biB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXI6IHsKICAgICAgICAgIHBhZGRpbmc6IDVweCAwIDVweCA1cHg7CiAgICAgICAgfQogICAgICB9CgogICAgICB0YWJsZSB7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgfQoKICAgICAgdGFibGUgdHIgewogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgfQoKICAgICAgdGFibGUgdGQgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgewogICAgICAgIHBhZGRpbmc6IDAgMjBweCAyMHB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICAubGVnZW5kLWhvbGRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRleHQtY29sb3IpOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubGVnZW5kLXRvb2xiYXIgewogICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYzsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsKICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1sZWdlbmQtdGV4dC1jb2xvcik7CiAgICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubGVnZW5kLXRvb2xiYXIsCiAgICAgIC5sZWdlbmQtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGVnZW5kLWJ1dHRvbiB7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1sZWdlbmQtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1zdWJ0aXRsZS1mb250LXNpemUpOwogICAgICB9CgogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgfQogICAgICBzdmcuaWNvbiwKICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICB9CiAgICAgIC5kb21haW5WYWx1ZXMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDE2NXB4OwogICAgICB9CiAgICAgIC5kb21haW5TdGFydCB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIH0KICAgICAgLmRvbWFpbkVuZCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CiAgICAgIC5jb2xvckJveCB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5pbWFnZS1pY29uIHsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC5oZWxwLWljb24gewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLmdyYXkgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtdGl0bGUtZm9udC1zaXplKTsKICAgICAgICBtYXJnaW46IDhweCA1cHggOHB4IDA7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWNvbG9yKTsKICAgICAgfQogICAgICAudGl0bGUgc21hbGwgewogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgIH0KICAgICAgLmRldmljZUxpc3QsCiAgICAgIC54bGFDbHVzdGVyTGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgI2ZpbGUgewogICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICB9CgogICAgICAuY29sb3ItbGVnZW5kLXJvdyB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBjbGVhcjogYm90aDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgIH0KCiAgICAgIC5jb2xvci1sZWdlbmQtcm93IC5sYWJlbCwKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgc3ZnLAogICAgICAuY29sb3ItbGVnZW5kLXJvdyB0Zi1ncmFwaC1pY29uIHsKICAgICAgICBmbGV4OiAwIDAgNDBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5kZXZpY2VzLWNoZWNrYm94IGlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLWhvbGRlciAuaWNvbi1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtc3VidGl0bGUtZm9udC1zaXplKTsKICAgICAgICBtYXJnaW46IDAgLTVweDsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRleHQtY29sb3IpOwogICAgICB9CgogICAgICAuYnV0dG9uLXRleHQgewogICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgfQoKICAgICAgLnVwbG9hZC1idXR0b24gewogICAgICAgIHdpZHRoOiAxNjVweDsKICAgICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICAuYnV0dG9uLWljb24gewogICAgICAgIHdpZHRoOiAyNnB4OwogICAgICAgIGhlaWdodDogMjZweDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7CiAgICAgIH0KCiAgICAgIC5oaWRkZW4taW5wdXQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAuY29udHJvbC1ob2xkZXIgewogICAgICAgIGNsZWFyOiBib3RoOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgLmNvbnRyb2wtaG9sZGVyLmNvbnRyb2wtb3B0aW9ucyB7CiAgICAgICAgcGFkZGluZzogMCAwIDE1cHggMTVweDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgLmNvbnRyb2wtaG9sZGVyIHBhcGVyLXRvZ2dsZS1idXR0b24gewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgc3Bhbi5jb3VudGVyIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXN1YnRpdGxlLWZvbnQtc2l6ZSk7CiAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgICAgfQoKICAgICAgLnJ1bnMtcm93IC50aXRsZSwKICAgICAgLnRhZ3Mtcm93IC50aXRsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC5ydW5zLXJvdyBwYXBlci1pdGVtLAogICAgICAudGFncy1yb3cgcGFwZXItaXRlbSB7CiAgICAgICAgLS1wYXBlci1pdGVtOiB7CiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGFibGUuY29udHJvbC1ob2xkZXIgewogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CgogICAgICB0YWJsZS50Zi1ncmFwaC1jb250cm9scyB0ZC5pbnB1dC1lbGVtZW50LXRhYmxlLWRhdGEgewogICAgICAgIHBhZGRpbmc6IDAgMCAwIDIwcHg7CiAgICAgIH0KCiAgICAgIC5zcGFjZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQoKICAgICAgLmNvbG9yLXRleHQgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5jb2xvci10ZXh0LmdyYWRpZW50LWNvbnRhaW5lciB7CiAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgICAgfQoKICAgICAgLyoqIE92ZXJyaWRlIGlubGluZSBzdHlsZXMgdGhhdCBzdXBwcmVzcyBwb2ludGVyIGV2ZW50cyBmb3IgZGlzYWJsZWQgYnV0dG9ucy4gT3RoZXJ3aXNlLCB0aGUgKi8KICAgICAgLyogIHRvb2x0aXBzIGRvIG5vdCBhcHBlYXIuICovCiAgICAgIHBhcGVyLXJhZGlvLWdyb3VwIHBhcGVyLXJhZGlvLWJ1dHRvbiB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmxlZ2VuZC1jbGFyaWZpZXIgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogaGVscDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5sZWdlbmQtY2xhcmlmaWVyIHBhcGVyLXRvb2x0aXAgewogICAgICAgIHdpZHRoOiAxNTBweDsKICAgICAgfQoKICAgICAgLyoqIE90aGVyd2lzZSwgcG9seW1lciBVSSBjb250cm9scyBhcHBlYXIgYXRvcCBub2RlIHNlYXJjaC4gKi8KICAgICAgdGYtZ3JhcGgtbm9kZS1zZWFyY2ggewogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJhbGxjb250cm9scyI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8dGYtZ3JhcGgtbm9kZS1zZWFyY2gKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgID48L3RmLWdyYXBoLW5vZGUtc2VhcmNoPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDxwYXBlci1idXR0b24gY2xhc3M9Imljb24tYnV0dG9uIiBvbi10YXA9Il9maXQiIGFsdD0iRml0IHRvIHNjcmVlbiI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImFzcGVjdC1yYXRpbyIgY2xhc3M9ImJ1dHRvbi1pY29uIj48L2lyb24taWNvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCI+Rml0IHRvIHNjcmVlbjwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICBjbGFzcz0iaWNvbi1idXR0b24iCiAgICAgICAgICBvbi1jbGljaz0iZG93bmxvYWQiCiAgICAgICAgICBhbHQ9IkRvd25sb2FkIFBORyIKICAgICAgICA+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImZpbGUtZG93bmxvYWQiIGNsYXNzPSJidXR0b24taWNvbiI+PC9pcm9uLWljb24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPkRvd25sb2FkIFBORzwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93VXBsb2FkQnV0dG9uXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgY2xhc3M9Imljb24tYnV0dG9uIgogICAgICAgICAgICBvbi1jbGljaz0iX2dldEZpbGUiCiAgICAgICAgICAgIGFsdD0iVXBsb2FkIGZpbGUiCiAgICAgICAgICAgIHRpdGxlPSJVcGxvYWQgYSBwYnR4dCBmaWxlIHRvIHZpZXcgYSBncmFwaCBmcm9tIHRoZSBsb2NhbCBmaWxlc3lzdGVtIgogICAgICAgICAgPgogICAgICAgICAgICA8aXJvbi1pY29uIGljb249ImZpbGUtdXBsb2FkIiBjbGFzcz0iYnV0dG9uLWljb24iPjwvaXJvbi1pY29uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPlVwbG9hZCBmaWxlPC9zcGFuPgogICAgICAgICAgPC9wYXBlci1idXR0b24+CgogICAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuLWlucHV0Ij4KICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgdHlwZT0iZmlsZSIKICAgICAgICAgICAgICBpZD0iZmlsZSIKICAgICAgICAgICAgICBuYW1lPSJmaWxlIgogICAgICAgICAgICAgIG9uLWNoYW5nZT0iX3VwZGF0ZUZpbGVJbnB1dCIKICAgICAgICAgICAgICBhY2NlcHQ9Ii5wYnR4dCIKICAgICAgICAgICAgLz4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciBydW5zLXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgogICAgICAgICAgUnVuIDxzcGFuIGNsYXNzPSJjb3VudGVyIj4oW1tkYXRhc2V0cy5sZW5ndGhdXSk8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgICBuby1hbmltYXRpb25zCiAgICAgICAgICBub2luawogICAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCIKICAgICAgICAgIGNsYXNzPSJydW4tZHJvcGRvd24iCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFJ1bkluZGV4fX0iCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICA+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbZGF0YXNldHNdXSI+CiAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+W1tpdGVtLm5hbWVdXTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd1Nlc3Npb25SdW5zRHJvcGRvd25dXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgdGFncy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgogICAgICAgICAgICBUYWcKICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvdW50ZXIiCiAgICAgICAgICAgICAgPihbW19udW1UYWdzKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCldXSk8L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgICAgICBuby1hbmltYXRpb25zCiAgICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgICAgIG5vaW5rCiAgICAgICAgICAgIGNsYXNzPSJydW4tZHJvcGRvd24iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVGFnSW5kZXh9fSIKICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19nZXRUYWdzKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCldXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5bW2l0ZW0uZGlzcGxheU5hbWVdXTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5HcmFwaCB0eXBlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIGNvbnRyb2wtb3B0aW9ucyI+CiAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRHcmFwaFR5cGV9fSIKICAgICAgICAgIG9uLXBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQ9Il9vbkdyYXBoVHlwZUNoYW5nZWRCeVVzZXJHZXN0dXJlIgogICAgICAgID4KICAgICAgICAgIDwhLS0gTm90ZSB0aGF0IHRoZSBuYW1lIGhhcyB0byBtYXRjaCB0aGF0IG9mIHRmX2dyYXBoX2NvbW1vbi5TZWxlY3Rpb25UeXBlLiAtLT4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0ib3BfZ3JhcGgiCiAgICAgICAgICAgIGRpc2FibGVkPSJbW19nZXRTZWxlY3Rpb25PcEdyYXBoRGlzYWJsZWQoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCldXSIKICAgICAgICAgICAgPk9wIGdyYXBoPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0iY29uY2VwdHVhbF9ncmFwaCIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvbkNvbmNlcHR1YWxHcmFwaERpc2FibGVkKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgpXV0iCiAgICAgICAgICAgID5Db25jZXB0dWFsIGdyYXBoPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0icHJvZmlsZSIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvblByb2ZpbGVEaXNhYmxlZChkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4KV1dIgogICAgICAgICAgICA+UHJvZmlsZTwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CiAgICAgICAgPC9wYXBlci1yYWRpby1ncm91cD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5Ob2RlIG9wdGlvbnM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgY29udHJvbC1vcHRpb25zIj4KICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgICAgY2hlY2tlZD0ie3t0cmFjZUlucHV0c319IgogICAgICAgICAgb24tY2hhbmdlPSJfb25UcmFjZUlucHV0c0NoYW5nZWRCeVVzZXJHZXN0dXJlIgogICAgICAgID4KICAgICAgICAgIFRyYWNlIGlucHV0cwogICAgICAgIDwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBjaGVja2VkPSJ7e2F1dG9FeHRyYWN0Tm9kZXN9fSI+CiAgICAgICAgICBBdXRvLWV4dHJhY3QgaGlnaC1kZWdyZWUgbm9kZXMKICAgICAgICA8L3BhcGVyLXRvZ2dsZS1idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaGVhbHRoUGlsbHNGZWF0dXJlRW5hYmxlZF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBjaGVja2VkPSJ7e2hlYWx0aFBpbGxzVG9nZ2xlZE9ufX0iCiAgICAgICAgICAgID5TaG93IGhlYWx0aCBwaWxsczwvcGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgICAgPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Q29sb3IgYnk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgY29udHJvbC1vcHRpb25zIj4KICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgIHNlbGVjdGVkPSJ7e2NvbG9yQnl9fSIKICAgICAgICAgIG9uLXBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQ9Il9vbkNvbG9yQnlDaGFuZ2VkQnlVc2VyR2VzdHVyZSIKICAgICAgICA+CiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IltbQ29sb3JCeS5OT05FXV0iPk5vbmU8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IltbQ29sb3JCeS5TVFJVQ1RVUkVdXSIKICAgICAgICAgICAgPlN0cnVjdHVyZTwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJbW0NvbG9yQnkuREVWSUNFXV0iCiAgICAgICAgICAgID5EZXZpY2U8L3BhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9InhsYS1jbHVzdGVyLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5LlhMQV9DTFVTVEVSXV0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbWyFfeGxhQ2x1c3RlcnNQcm92aWRlZChyZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICA+CiAgICAgICAgICAgIFhMQSBjbHVzdGVyCiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJ4bGEtY2x1c3Rlci1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSBYTEEgY2x1c3RlciBpcyBvbmx5IGVuYWJsZWQgaWYgYXQgbGVhc3QgMSBvcCBzcGVjaWZpZXMKICAgICAgICAgICAgYW4gWExBIGNsdXN0ZXIuCiAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBpZD0iY29tcHV0ZS10aW1lLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5LkNPTVBVVEVfVElNRV1dIgogICAgICAgICAgICBkaXNhYmxlZD0iW1shc3RhdHNdXSIKICAgICAgICAgID4KICAgICAgICAgICAgQ29tcHV0ZSB0aW1lCiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJjb21wdXRlLXRpbWUtcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgID4KICAgICAgICAgICAgQ29sb3JpbmcgYnkgY29tcHV0ZSB0aW1lIGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgUnVuTWV0YWRhdGEgcHJvdG8gaXMKICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBGaWxlV3JpdGVyIHdoZW4gYSBzcGVjaWZpYyBzZXNzaW9uIGlzIHJ1bi4KICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIGlkPSJtZW1vcnktcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBuYW1lPSJbW0NvbG9yQnkuTUVNT1JZXV0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbWyFzdGF0c11dIgogICAgICAgICAgPgogICAgICAgICAgICBNZW1vcnkKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9Im1lbW9yeS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSBtZW1vcnkgaXMgb25seSBlbmFibGVkIGlmIHRoZSBSdW5NZXRhZGF0YSBwcm90byBpcwogICAgICAgICAgICBwYXNzZWQgdG8gdGhlIEZpbGVXcml0ZXIgd2hlbiBhIHNwZWNpZmljIHNlc3Npb24gaXMgcnVuLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9InRwdS1jb21wYXRpYmlsaXR5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5Lk9QX0NPTVBBVElCSUxJVFldXSIKICAgICAgICAgID4KICAgICAgICAgICAgVFBVIGNvbXBhdGliaWxpdHkKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9InRwdS1jb21wYXRpYmlsaXR5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICA+CiAgICAgICAgICAgIENvbG9yaW5nIGJ5IHdoZXRoZXIgYW4gb3BlcmF0aW9uIGlzIGNvbXBhdGlibGUgZm9yIHRoZSBUUFUgZGV2aWNlLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgPHNwYW4gY2xhc3M9InNwYWNlciI+PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibGVnZW5kLWhvbGRlciI+CiAgICAgIDxidXR0b24gY2xhc3M9ImxlZ2VuZC10b29sYmFyIiBvbi1jbGljaz0iX3RvZ2dsZUxlZ2VuZE9wZW4iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0b2dnbGUtbGVnZW5kLXRleHQiPkxlZ2VuZDwvc3Bhbj4KICAgICAgICA8aXJvbi1pY29uCiAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVMZWdlbmRJY29uKF9sZWdlbmRPcGVuZWQpXV0iCiAgICAgICAgICBjbGFzcz0idG9nZ2xlLWxlZ2VuZC1idXR0b24iCiAgICAgICAgPgogICAgICAgIDwvaXJvbi1pY29uPgogICAgICA8L2J1dHRvbj4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19sZWdlbmRPcGVuZWRdXSIgY2xhc3M9ImxlZ2VuZC1jb250ZW50Ij4KICAgICAgICA8IS0tIENvbG9yLW1vZGUtc3BlY2lmaWMgbGVnZW5kIGl0ZW1zIC0tPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzR3JhZGllbnRDb2xvcmluZyhzdGF0cywgY29sb3JCeSldXSI+CiAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE0MCIgaGVpZ2h0PSIyMCIgY2xhc3M9ImNvbG9yLXRleHQgZ3JhZGllbnQtY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICAgICAgICAgICBpZD0ibGluZWFyR3JhZGllbnQiCiAgICAgICAgICAgICAgICAgIHgxPSIwJSIKICAgICAgICAgICAgICAgICAgeTE9IjAlIgogICAgICAgICAgICAgICAgICB4Mj0iMTAwJSIKICAgICAgICAgICAgICAgICAgeTI9IjAlIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJzdGFydCIKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAlIgogICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19jdXJyZW50R3JhZGllbnRQYXJhbXMuc3RhcnRDb2xvcl1dIgogICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJlbmQiCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIxMDAlIgogICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19jdXJyZW50R3JhZGllbnRQYXJhbXMuZW5kQ29sb3JdXSIKICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgIDxyZWN0CiAgICAgICAgICAgICAgICB4PSIwIgogICAgICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgICAgIHdpZHRoPSIxMzUiCiAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwIgogICAgICAgICAgICAgICAgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudCkiCiAgICAgICAgICAgICAgICBzdHJva2U9ImJsYWNrIgogICAgICAgICAgICAgID48L3JlY3Q+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW5WYWx1ZXMgY29sb3ItdGV4dCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluU3RhcnQiPltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5taW5WYWx1ZV1dPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluRW5kIj5bW19jdXJyZW50R3JhZGllbnRQYXJhbXMubWF4VmFsdWVdXTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJyIHN0eWxlPSJjbGVhcjogYm90aCIgLz4KICAgICAgICAgICAgPGRpdj5EZXZpY2VzIGluY2x1ZGVkIGluIHN0YXRzOjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXZpY2VMaXN0Ij4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jdXJyZW50RGV2aWNlc11dIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3cgZGV2aWNlcy1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICAgICAgPjxpbnB1dAogICAgICAgICAgICAgICAgICAgICAgdHlwZT0iY2hlY2tib3giCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSQ9IltbaXRlbS5kZXZpY2VdXSIKICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQkPSJbW2l0ZW0udXNlZF1dIgogICAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9Il9kZXZpY2VDaGVja2JveENsaWNrZWQiCiAgICAgICAgICAgICAgICAgIC8+PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3Bhbj5bW2l0ZW0uc3VmZml4XV08L3NwYW4+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tpdGVtLmlnbm9yZWRNc2ddXSI+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgICBpY29uPSJoZWxwIgogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImhlbHAtaWNvbiIKICAgICAgICAgICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgPltbaXRlbS5pZ25vcmVkTXNnXV08L3BhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAnc3RydWN0dXJlJyldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLXRleHQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj4gY29sb3JzIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnNhbWUgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iI2VlZSIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjYTZhNmE2IgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnVuaXF1ZSBzdWJzdHJ1Y3R1cmU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdkZXZpY2UnKV1dIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jdXJyZW50RGV2aWNlUGFyYW1zXV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IltbaXRlbS5jb2xvcl1dIgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2E2YTZhNiIKICAgICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+W1tpdGVtLmRldmljZV1dPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgIHR5cGU9Ik1FVEEiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNlZWUiCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2E2YTZhNiIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bmtub3duIGRldmljZTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ3hsYV9jbHVzdGVyJyldXSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXNdXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgICAgPHN2Zz4KICAgICAgICAgICAgICAgICAgICA8dXNlCiAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9IiN1bmZpbGxlZC1yZWN0IgogICAgICAgICAgICAgICAgICAgICAgeD0iMCIKICAgICAgICAgICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbDpbW2l0ZW0uY29sb3JdXSIKICAgICAgICAgICAgICAgICAgICA+PC91c2U+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5bW2l0ZW0ueGxhX2NsdXN0ZXJdXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8c3ZnPgogICAgICAgICAgICAgICAgICA8dXNlCiAgICAgICAgICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj0iI2dyZXktcmVjdCIKICAgICAgICAgICAgICAgICAgICB4PSIwIgogICAgICAgICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICAgICAgID48L3VzZT4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW5rbm93biBYTEEgY2x1c3Rlcjwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ29wX2NvbXBhdGliaWxpdHknKV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItdGV4dCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICB0eXBlPSJPUCIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iIzBmOWQ1OCIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjY2NjIgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPlZhbGlkIE9wPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iT1AiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNkYjQ0MzciCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2NjYyIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5JbnZhbGlkIE9wPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N0YXRzTm90TnVsbChzdGF0cyldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9Ik1FVEEiIGhlaWdodD0iMTYiIGZhZGVkPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bnVzZWQgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gQ29tbW9uIGxlZ2VuZCBpdGVtcyAtLT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHRhYmxlPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+KCogPSBleHBhbmRhYmxlKTwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNkOWQ5ZDkiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjY2NjIgogICAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgTmFtZXNwYWNlPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFbmNhcHN1bGF0ZXMgYSBzZXQgb2Ygbm9kZXMuIE5hbWVzcGFjZSBpcyBoaWVyYXJjaGljYWwgYW5kCiAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBzY29wZS4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iT1AiIGhlaWdodD0iMTYiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIE9wTm9kZQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgTm9kZSB0aGF0IHBlcmZvcm1zIGFuIG9wZXJhdGlvbi4gVGhlc2Ugbm9kZXMgY2Fubm90CiAgICAgICAgICAgICAgICAgICAgICBleHBhbmQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNFUklFUyIgaGVpZ2h0PSIxNiI+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgVW5jb25uZWN0ZWQgc2VyaWVzPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSBvZiBudW1iZXJlZCBub2RlcyB0aGF0IGFyZSBub3QgY29ubmVjdGVkIHRvIGVhY2gKICAgICAgICAgICAgICAgICAgICAgIG90aGVyLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICAgIHR5cGU9IlNFUklFUyIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsCiAgICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBDb25uZWN0ZWQgc2VyaWVzPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSBvZiBudW1iZXJlZCBub2RlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gZWFjaAogICAgICAgICAgICAgICAgICAgICAgb3RoZXIuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iPgogICAgICAgICAgICAgICAgICAgIDxjaXJjbGUKICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IndoaXRlIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjODQ4NDg0IgogICAgICAgICAgICAgICAgICAgICAgY3g9IjEwIgogICAgICAgICAgICAgICAgICAgICAgY3k9IjEwIgogICAgICAgICAgICAgICAgICAgICAgcj0iNSIKICAgICAgICAgICAgICAgICAgICA+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgQ29uc3RhbnQKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIE5vZGUgdGhhdCBvdXRwdXRzIGEgY29uc3RhbnQgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNVTU1BUlkiIGhlaWdodD0iMjAiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIFN1bW1hcnkKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIE5vZGUgdGhhdCBjb2xsZWN0cyBkYXRhIGZvciB2aXN1YWxpemF0aW9uIHdpdGhpbgogICAgICAgICAgICAgICAgICAgICAgVGVuc29yQm9hcmQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaWNvbiIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE1cHgiCiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMTUgMTUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgIDxtYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1sZWdlbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiNiYmIiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcldpZHRoPSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySGVpZ2h0PSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWD0iOSIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWT0iNSIKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICBtYXJrZXItZW5kPSJ1cmwoI2RhdGFmbG93LWFycm93aGVhZC1sZWdlbmQpIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjYmJiIgogICAgICAgICAgICAgICAgICAgICAgZD0iTTIgOSBsIDI5IDAiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBEYXRhZmxvdyBlZGdlCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFZGdlIHNob3dpbmcgdGhlIGRhdGEgZmxvdyBiZXR3ZWVuIG9wZXJhdGlvbnMuIEVkZ2VzIGZsb3cKICAgICAgICAgICAgICAgICAgICAgIHVwd2FyZHMgdW5sZXNzIGFycm93aGVhZHMgc3BlY2lmeSBvdGhlcndpc2UuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaWNvbiIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE1cHgiCiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMTUgMTUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjYmJiIgogICAgICAgICAgICAgICAgICAgICAgZD0iTTIgOSBsIDI5IDAiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5PSIyLCAyIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgQ29udHJvbCBkZXBlbmRlbmN5IGVkZ2UKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGUgY29udHJvbCBkZXBlbmRlbmN5IGJldHdlZW4gb3BlcmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHN2ZwogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpY29uIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTVweCIKICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAxNSAxNSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgPG1hcmtlcgogICAgICAgICAgICAgICAgICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sZWdlbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiNGRkI3NEQiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcldpZHRoPSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySGVpZ2h0PSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWD0iOSIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWT0iNSIKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICBtYXJrZXItZW5kPSJ1cmwoI3JlZmVyZW5jZS1hcnJvd2hlYWQtbGVnZW5kKSIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0iI0ZGQjc0RCIKICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0yIDkgbCAyOSAwIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIGVkZ2UKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGF0IHRoZSBvdXRnb2luZyBvcGVyYXRpb24gbm9kZSBjYW4gbXV0YXRlCiAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5jb21pbmcgdGVuc29yLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tY29sbGFwc2U+CiAgICA8L2Rpdj4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RhdHNDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsSnQucHJvdG90eXBlLCJzdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbEp0LnByb3RvdHlwZSwiZGV2aWNlc0ZvclN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxsSnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsSnQucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksb2JzZXJ2ZXI6Il9kYXRhc2V0c0NoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGxKdC5wcm90b3R5cGUsImRhdGFzZXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEFLdCldLGxKdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITAscmVhZE9ubHk6ITAsY29tcHV0ZWQ6Il9jb21wdXRlU2VsZWN0aW9uKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgsIF9zZWxlY3RlZEdyYXBoVHlwZSkifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGxKdC5wcm90b3R5cGUsInNlbGVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbEp0LnByb3RvdHlwZSwic2VsZWN0ZWRGaWxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG9ic2VydmVyOiJfc2VsZWN0ZWRSdW5JbmRleENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGxKdC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bkluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsImF1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9zZWxlY3RlZFRhZ0luZGV4Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sbEp0LnByb3RvdHlwZSwiX3NlbGVjdGVkVGFnSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sbEp0LnByb3RvdHlwZSwiX3NlbGVjdGVkR3JhcGhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxsSnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxsSnQucHJvdG90eXBlLCJzaG93U2Vzc2lvblJ1bnNEcm9wZG93biIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsInNob3dVcGxvYWRCdXR0b24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxsSnQucHJvdG90eXBlLCJoZWFsdGhQaWxsc0ZlYXR1cmVFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxKdC5wcm90b3R5cGUsImhlYWx0aFBpbGxzVG9nZ2xlZE9uIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbEp0LnByb3RvdHlwZSwiX2xlZ2VuZE9wZW5lZCIsdm9pZCAwKSx0KFtzKCJkZXZpY2VzRm9yU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGxKdC5wcm90b3R5cGUsIl9jdXJyZW50RGV2aWNlcyIsbnVsbCksdChbcygiY29sb3JCeVBhcmFtcyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbEp0LnByb3RvdHlwZSwiX2N1cnJlbnREZXZpY2VQYXJhbXMiLG51bGwpLHQoW3MoImNvbG9yQnlQYXJhbXMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGxKdC5wcm90b3R5cGUsIl9jdXJyZW50WGxhQ2x1c3RlclBhcmFtcyIsbnVsbCksdChbcygiY29sb3JCeVBhcmFtcyIsImNvbG9yQnkiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxsSnQucHJvdG90eXBlLCJfY3VycmVudEdyYWRpZW50UGFyYW1zIixudWxsKSxsSnQ9dChbaSgidGYtZ3JhcGgtY29udHJvbHMiKV0sbEp0KTtjb25zdCBkSnQ9eyJsaWJyYXJ5LmZ1bmN0aW9uIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuaW5wdXQiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5iIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuZiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LmZ1bmMiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5pIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QucyI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnNoYXBlIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3Quc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QudGVuc29yIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QudHlwZSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5zaGFwZS5kaW0iOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUudGVuc29yLnN0cmluZ192YWwiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUudGVuc29yLnRlbnNvcl9zaGFwZS5kaW0iOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLnNpZ25hdHVyZS5pbnB1dF9hcmciOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLnNpZ25hdHVyZS5vdXRwdXRfYXJnIjohMCwibGlicmFyeS52ZXJzaW9ucyI6ITAsbm9kZTohMCwibm9kZS5pbnB1dCI6ITAsIm5vZGUuYXR0ciI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmIiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5mIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuZnVuYyI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmkiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5zIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3Quc2hhcGUiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5zaGFwZS5kaW0iOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC50ZW5zb3IiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC50eXBlIjohMCwibm9kZS5hdHRyLnZhbHVlLnNoYXBlLmRpbSI6ITAsIm5vZGUuYXR0ci52YWx1ZS50ZW5zb3Iuc3RyaW5nX3ZhbCI6ITAsIm5vZGUuYXR0ci52YWx1ZS50ZW5zb3IudGVuc29yX3NoYXBlLmRpbSI6ITB9LHBKdD17InN0ZXBfc3RhdHMuZGV2X3N0YXRzIjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cyI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMub3V0cHV0IjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cy5tZW1vcnkiOiEwLCJzdGVwX3N0YXRzLmRldl9zdGF0cy5ub2RlX3N0YXRzLm91dHB1dC50ZW5zb3JfZGVzY3JpcHRpb24uc2hhcGUuZGltIjohMH07ZnVuY3Rpb24gZkp0KHQsZSl7bGV0IG49e30saT1bXSxyPVtdLG89bjtmdW5jdGlvbiBhKHQpe2xldCBlPXQuaW5kZXhPZigiOiIpO3JldHVybntuYW1lOnQuc3Vic3RyaW5nKDAsZSkudHJpbSgpLHZhbHVlOihmdW5jdGlvbiBuKHQpe2lmKCJ0cnVlIj09PXQpcmV0dXJuITA7aWYoImZhbHNlIj09PXQpcmV0dXJuITE7aWYoJyInPT09dFswXSlyZXR1cm4gdC5zdWJzdHJpbmcoMSx0Lmxlbmd0aC0xKTtsZXQgZT1wYXJzZUZsb2F0KHQpO3JldHVybiBpc05hTihlKT90OmV9KSh0LnN1YnN0cmluZyhlKzIpLnRyaW0oKSl9fWZ1bmN0aW9uIHModCxuLGkscil7bGV0IG89dFtuXTtudWxsPT1vP3Rbbl09ci5qb2luKCIuIilpbiBlP1tpXTppOkFycmF5LmlzQXJyYXkobyk/by5wdXNoKGkpOnRbbl09W28saV19cmV0dXJuKGZ1bmN0aW9uIGwodCxlLG49MWU2LGk9IlxuIil7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyEoZnVuY3Rpb24gYShzLGwsYyl7Y29uc3QgdT1jPj10LmJ5dGVMZW5ndGgsaD1sLnNwbGl0KGkpO2hbMF09cytoWzBdO2NvbnN0IGQ9dT8iIjpoLnBvcCgpO2ZvcihsZXQgdCBvZiBoKXRyeXtlKHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIG8odCl9aWYodSlyZXR1cm4gdm9pZCByKCEwKTtjb25zdCBwPW5ldyBCbG9iKFt0LnNsaWNlKGMsYytuKV0pLGY9bmV3IEZpbGVSZWFkZXI7Zi5vbmxvYWQ9ZnVuY3Rpb24odCl7YShkLHQudGFyZ2V0LnJlc3VsdCxjK24pfSxmLnJlYWRBc1RleHQocCl9KSgiIiwiIiwwKX0pKX0pKHQsKGZ1bmN0aW9uKHQpe2lmKHQ9dC50cmltKCkpc3dpdGNoKHRbdC5sZW5ndGgtMV0pe2Nhc2UieyI6bGV0IGU9dC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKS50cmltKCksbj17fTtpLnB1c2gobyksci5wdXNoKGUpLHMobyxlLG4sciksbz1uO2JyZWFrO2Nhc2UifSI6bz1pLnBvcCgpLHIucG9wKCk7YnJlYWs7ZGVmYXVsdDpsZXQgbD1hKHQpO3MobyxsLm5hbWUsbC52YWx1ZSxyLmNvbmNhdChsLm5hbWUpKX19KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX1mdW5jdGlvbiBtSnQodCxlLGkscj1uZXcgbkp0LG89YUt0KXtjb25zdCBhPWYkdCh0LDMwLCJEYXRhIikscz1mJHQodCwyMCwiR3JhcGgiKSxsPWYkdCh0LDUwLCJOYW1lc3BhY2UgaGllcmFyY2h5IiksYz1EYXRlLm5vdygpO3JldHVybiBoSnQoZSxpLGEpLnRoZW4oKGZ1bmN0aW9uKHQpe2lmKCF0Lm5vZGUpdGhyb3cgbmV3IEVycm9yKCJUaGUgZ3JhcGggaXMgZW1wdHkuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIFRlbnNvckZsb3cgY291bGQgbm90IHRyYWNlIGFueSBncmFwaC4gUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2lzc3Vlcy8xOTYxIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpO3JldHVybiBxJHQodCxXJHQscyl9KSwoKCk9Pnt0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBHcmFwaERlZi4gVGhpcyBjYW4gc29tZXRpbWVzIGJlIGNhdXNlZCBieSBhIGJhZCBuZXR3b3JrIGNvbm5lY3Rpb24gb3IgZGlmZmljdWx0eSByZWNvbmNpbGluZyBtdWx0aXBsZSBHcmFwaERlZnM7IGZvciB0aGUgbGF0dGVyIGNhc2UsIHBsZWFzZSByZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvMTkyOS4iKX0pKS50aGVuKCh0PT5uKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7IShmdW5jdGlvbiBlKHQsbil7aWYobnVsbD09PW4pdGhyb3cgbmV3IEVycm9yKCJDb21wYXRpYmlsaXR5IHByb3ZpZGVyIHJlcXVpcmVkLCBidXQgZ290OiAiK24pO0NlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzLCh0PT57dC5jb21wYXRpYmxlPW4ub3BWYWxpZCh0KSxDZS5leHBvcnRzLmVhY2godC5pbkVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGU9bi5vcFZhbGlkKHQpfSkpLENlLmV4cG9ydHMuZWFjaCh0Lm91dEVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGU9bi5vcFZhbGlkKHQpfSkpfSkpfSkodCxyKTtjb25zdCBuPXlpZWxkIHNLdCh0LG8sbCk7cmV0dXJuIGgkdCh7dGltaW5nSWQ6QkF0LkdSQVBIX0xPQURfU1VDQ0VFREVELGV2ZW50VmFsdWU6RGF0ZS5ub3coKS1jfSkse2dyYXBoOnQsZ3JhcGhIaWVyYXJjaHk6bn19KSkpKS5jYXRjaCgoZT0+e3Rocm93IHQucmVwb3J0RXJyb3IoYEdyYXBoIHZpc3VhbGl6YXRpb24gZmFpbGVkLlxuXG4ke2V9YCxlKSxoJHQoe3RpbWluZ0lkOkJBdC5HUkFQSF9MT0FEX0ZBSUxFRCxldmVudFZhbHVlOkRhdGUubm93KCktY30pLGV9KSl9bGV0IGdKdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29tcGF0aWJpbGl0eVByb3ZpZGVyPW5ldyBuSnQsdGhpcy5oaWVyYXJjaHlQYXJhbXM9YUt0LHRoaXMuX3RlbXBsYXRlPW51bGx9X3NlbGVjdGlvbkNoYW5nZWQoKXt0aGlzLnNlbGVjdGlvbiYmdGhpcy5kZWJvdW5jZSgic2VsZWN0aW9uY2hhbmdlIiwoKCk9Pnt0aGlzLl9sb2FkKHRoaXMuc2VsZWN0aW9uKX0pKX1fbG9hZCh0KXtjb25zdHtydW46ZSx0YWc6bix0eXBlOml9PXQ7c3dpdGNoKGkpe2Nhc2UgUVh0Lk9QX0dSQVBIOmNhc2UgUVh0LkNPTkNFUFRVQUxfR1JBUEg6eyhmdW5jdGlvbigpe3RoaXMuX3NldE91dFN0YXRzKG51bGwpfSkuYmluZCh0aGlzKSgpO2NvbnN0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtczt0LnNldCgicnVuIixlKSx0LnNldCgiY29uY2VwdHVhbCIsU3RyaW5nKGk9PT1RWHQuQ09OQ0VQVFVBTF9HUkFQSCkpLG4mJnQuc2V0KCJ0YWciLG4pO2NvbnN0IHI9RXIoKS5wbHVnaW5Sb3V0ZSgiZ3JhcGhzIiwiL2dyYXBoIix0KTtyZXR1cm4gdGhpcy5fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaChyKS50aGVuKCgoKT0+e3RoaXMuX2dyYXBoUnVuVGFnPXtydW46ZSx0YWc6bn19KSl9Y2FzZSBRWHQuUFJPRklMRTp7Y29uc3R7dGFnczp0fT10aGlzLmRhdGFzZXRzLmZpbmQoKCh7bmFtZTp0fSk9PnQ9PT1lKSksaT10LmZpbmQoKHQ9PnQudGFnPT09bikpLm9wR3JhcGg/bjpudWxsO2NvbnNvbGUuYXNzZXJ0KHQuZmluZCgodD0+dC50YWc9PT1pKSksYFJlcXVpcmVkIHRhZyAoJHtpfSkgaXMgbWlzc2luZy5gKTtjb25zdCByPSF0aGlzLl9ncmFwaFJ1blRhZ3x8dGhpcy5fZ3JhcGhSdW5UYWcucnVuIT09ZXx8dGhpcy5fZ3JhcGhSdW5UYWcudGFnIT09aT90aGlzLl9sb2FkKHtydW46ZSx0YWc6aSx0eXBlOlFYdC5PUF9HUkFQSH0pOlByb21pc2UucmVzb2x2ZSgpLG89bmV3IFVSTFNlYXJjaFBhcmFtcztvLnNldCgidGFnIixuKSxvLnNldCgicnVuIixlKTtjb25zdCBhPUVyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ydW5fbWV0YWRhdGEiLG8pO3JldHVybiByLnRoZW4oKCgpPT50aGlzLl9yZWFkQW5kUGFyc2VNZXRhZGF0YShhKSkpfWRlZmF1bHQ6cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgVW5rbm93biBzZWxlY3Rpb24gdHlwZTogJHtpfWApKX19X3JlYWRBbmRQYXJzZU1ldGFkYXRhKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSksdUp0KHQscCR0KHRoaXMpKS50aGVuKGZ1bmN0aW9uKHQpe3RoaXMuX3NldE91dFN0YXRzKHQpfS5iaW5kKHRoaXMpKX1fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaCh0LGUpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7cmV0dXJuIG1KdChwJHQodGhpcyksdCxlLHRoaXMuY29tcGF0aWJpbGl0eVByb3ZpZGVyLHRoaXMuaGllcmFyY2h5UGFyYW1zKS50aGVuKGZ1bmN0aW9uKHtncmFwaDp0LGdyYXBoSGllcmFyY2h5OmV9KXt0aGlzLl9zZXRPdXRHcmFwaCh0KSx0aGlzLl9zZXRPdXRHcmFwaEhpZXJhcmNoeShlKX0uYmluZCh0aGlzKSl9X3NlbGVjdGVkRmlsZUNoYW5nZWQoKXt2YXIgdD10aGlzLnNlbGVjdGVkRmlsZTtpZighdClyZXR1cm47Y29uc3QgZT10LnRhcmdldCxuPWUuZmlsZXNbMF07biYmKGUudmFsdWU9IiIsdGhpcy5fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaChudWxsLG4pKX19O3QoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxnSnQucHJvdG90eXBlLCJkYXRhc2V0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwic2VsZWN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsInNlbGVjdGVkRmlsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnSnQucHJvdG90eXBlLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0p0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixyS3QpXSxnSnQucHJvdG90eXBlLCJvdXRHcmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTiR0KV0sZ0p0LnByb3RvdHlwZSwib3V0R3JhcGgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsIm91dFN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdKdC5wcm90b3R5cGUsIl9ncmFwaFJ1blRhZyIsdm9pZCAwKSx0KFthKCJzZWxlY3Rpb24iLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGdKdC5wcm90b3R5cGUsIl9zZWxlY3Rpb25DaGFuZ2VkIixudWxsKSx0KFthKCJzZWxlY3RlZEZpbGUiLCJjb21wYXRpYmlsaXR5UHJvdmlkZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGdKdC5wcm90b3R5cGUsIl9zZWxlY3RlZEZpbGVDaGFuZ2VkIixudWxsKSxnSnQ9dChbaSgidGYtZ3JhcGgtZGFzaGJvYXJkLWxvYWRlciIpXSxnSnQpO2xldCBfSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9kYXRhc2V0cz1bXSx0aGlzLl9kYXRhc2V0c0ZldGNoZWQ9ITEsdGhpcy5fc2VsZWN0ZWREYXRhc2V0PTAsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyLHRoaXMuX2NhbmNlbGxlcj1uZXcgeE8sdGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwPTAsdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbj0hMSx0aGlzLl9kZWJ1Z2dlck51bWVyaWNBbGVydHM9W10sdGhpcy5fbm9kZU5hbWVzVG9IZWFsdGhQaWxscz17fSx0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkPTEsdGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJEZWxheT01MDAsdGhpcy5ydW49WHMoInJ1biIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITF9KS5jYWxsKHRoaXMpLHRoaXMuX3J1bk9ic2VydmVyPSRzKCJydW4iLHtkZWZhdWx0VmFsdWU6IiIscG9seW1lclByb3BlcnR5OiJydW4iLHVzZUxvY2FsU3RvcmFnZTohMX0pfWF0dGFjaGVkKCl7dGhpcy5zZXQoIl9pc0F0dGFjaGVkIiwhMCl9ZGV0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCExKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXRvZ2dsZS1leHBhbmQiLHRoaXMuX2hhbmRsZU5vZGVUb2dnbGVFeHBhbmQuYmluZCh0aGlzKSl9cmVsb2FkKCl7dGhpcy5fZGVidWdnZXJEYXRhRW5hYmxlZHx8dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChFcigpLnBsdWdpbnNMaXN0aW5nKCkpLnRoZW4odGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57dC5jYW5jZWxsZWR8fHQudmFsdWUuZGVidWdnZXImJnRoaXMuc2V0KCJfZGVidWdnZXJEYXRhRW5hYmxlZCIsITApfSkpKSx0aGlzLl9tYXliZUZldGNoSGVhbHRoUGlsbHMoKX1fZml0KCl7dGhpcy4kJCgiI2dyYXBoYm9hcmQiKS5maXQoKX1fb25Eb3dubG9hZEltYWdlUmVxdWVzdGVkKHQpe3RoaXMuJCQoIiNncmFwaGJvYXJkIikuZG93bmxvYWRBc0ltYWdlKHQuZGV0YWlsKX1fZ2V0R3JhcGhEaXNwbGF5Q2xhc3NOYW1lKHQsZSl7cmV0dXJuIHR8fGUubGVuZ3RoPyIiOiJuby1ncmFwaCJ9X2ZldGNoRGF0YXNldCgpe3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KEVyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9pbmZvIikpfV9mZXRjaEhlYWx0aFBpbGxzKHQsZSl7Y29uc3Qgbj17bm9kZV9uYW1lczpKU09OLnN0cmluZ2lmeSh0KSxydW46Il9fZGVidWdnZXJfZGF0YV9fIn07dm9pZCAwIT09ZSYmKG4uc3RlcD1lKTtjb25zdCBpPUVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL2hlYWx0aF9waWxscyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGksbil9X2ZldGNoRGVidWdnZXJOdW1lcmljc0FsZXJ0cygpe3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KEVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL251bWVyaWNzX2FsZXJ0X3JlcG9ydCIpKX1fZ3JhcGhVcmwodCxlLG4pe3JldHVybiBFcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvZ3JhcGgiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3J1bjp0LGxpbWl0X2F0dHJfc2l6ZTplLGxhcmdlX2F0dHJzX2tleTpufSkpfV9zaG91bGRSZXF1ZXN0SGVhbHRoUGlsbHMoKXtyZXR1cm4gdGhpcy5fZGVidWdnZXJEYXRhRW5hYmxlZCYmdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbiYmdGhpcy5fcmVuZGVySGllcmFyY2h5JiZ0aGlzLl9kYXRhc2V0c1N0YXRlKHRoaXMuX2RhdGFzZXRzRmV0Y2hlZCx0aGlzLl9kYXRhc2V0cywiUFJFU0VOVCIpfV9tYXliZUluaXRpYWxpemVEYXNoYm9hcmQoKXshdGhpcy5faW5pdGlhbGl6ZWQmJnRoaXMuX2lzQXR0YWNoZWQmJih0aGlzLnNldCgiX2NvbXBhdGliaWxpdHlQcm92aWRlciIsbmV3IG5KdCksdGhpcy5faW5pdGlhbGl6ZWQ9ITAsdGhpcy5fZmV0Y2hEYXRhc2V0KCkudGhlbigodD0+e2NvbnN0IGU9T2JqZWN0LmtleXModCk7dGhpcy5fZGF0YXNldHM9ZS5zb3J0KHVyKS5tYXAoKGU9Pntjb25zdCBuPXRbZV0saT1PYmplY3Qua2V5cyhuLnRhZ3MpLnNvcnQodXIpLm1hcCgodD0+bi50YWdzW3RdKSkubWFwKCgoe3RhZzp0LGNvbmNlcHR1YWxfZ3JhcGg6ZSxvcF9ncmFwaDpuLHByb2ZpbGU6aX0pPT4oe3RhZzp0LGRpc3BsYXlOYW1lOnQsY29uY2VwdHVhbEdyYXBoOmUsb3BHcmFwaDpuLHByb2ZpbGU6aX0pKSk7cmV0dXJue25hbWU6ZSx0YWdzOm4ucnVuX2dyYXBoP1t7dGFnOm51bGwsZGlzcGxheU5hbWU6IkRlZmF1bHQiLGNvbmNlcHR1YWxHcmFwaDohMSxvcEdyYXBoOiEwLHByb2ZpbGU6ITF9LC4uLmldOml9fSkpLHRoaXMuX2RhdGFzZXRzRmV0Y2hlZD0hMH0pKSl9X2RldGVybWluZVNlbGVjdGVkRGF0YXNldCgpe3ZhciB0PXRoaXMuX2RhdGFzZXRzRmV0Y2hlZCxlPXRoaXMuX2RhdGFzZXRzLG49dGhpcy5ydW47aWYoIW4pcmV0dXJuIHZvaWQgdGhpcy5zZXQoIl9zZWxlY3RlZERhdGFzZXQiLDApO2NvbnN0IGk9ZS5maW5kSW5kZXgoKHQ9PnQubmFtZT09PW4pKTtpZigtMSE9PWkpdGhpcy5zZXQoIl9zZWxlY3RlZERhdGFzZXQiLGkpO2Vsc2UgaWYodCl7Y29uc3QgdD10aGlzLiQkKCIjZXJyb3ItZGlhbG9nIik7dC50ZXh0Q29udGVudD1gTm8gZGF0YXNldCBuYW1lZCAiJHtufSIgY291bGQgYmUgZm91bmQuYCx0Lm9wZW4oKX19X3VwZGF0ZVNlbGVjdGVkRGF0YXNldE5hbWUoKXt2YXIgdD10aGlzLl9kYXRhc2V0cyxlPXRoaXMuX3NlbGVjdGVkRGF0YXNldDt0aGlzLl9kYXRhc2V0c0ZldGNoZWQmJih0Lmxlbmd0aDw9ZXx8dGhpcy5zZXQoInJ1biIsdFtlXS5uYW1lKSl9X3JlcXVlc3RIZWFsdGhQaWxscygpe3RoaXMuc2V0KCJfYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiwhMCk7dmFyIHQ9Kyt0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkO251bGwhPT10aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkJiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkKSx0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGwpLHRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGwsdGhpcy5faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKHQpfS5iaW5kKHRoaXMpLHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVyRGVsYXkpOnRoaXMuX2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyh0KX1faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKHQpe2lmKHRoaXMuX2hlYWx0aFBpbGxSZXF1ZXN0SWQhPT10KXJldHVybjtjb25zdCBlPXRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA6dm9pZCAwLG49dGhpcy5fZmV0Y2hIZWFsdGhQaWxscyh0aGlzLl9yZW5kZXJIaWVyYXJjaHkuZ2V0TmFtZXNPZlJlbmRlcmVkT3BzKCksZSksaT10aGlzLl9mZXRjaERlYnVnZ2VyTnVtZXJpY3NBbGVydHMoKTtQcm9taXNlLmFsbChbbixpXSkudGhlbihmdW5jdGlvbihlKXt2YXIgbj1lWzBdLGk9ZVsxXTtpZih0aGlzLmhlYWx0aFBpbGxzVG9nZ2xlZE9uJiZ0PT09dGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZCl7Zm9yKHZhciByIGluIG4pe3RoaXMuc2V0KCJfaGVhbHRoUGlsbFN0ZXBJbmRleCIsbltyXS5sZW5ndGgtMSk7YnJlYWt9dGhpcy5zZXQoIl9kZWJ1Z2dlck51bWVyaWNBbGVydHMiLGkpLHRoaXMuc2V0KCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsbiksdGhpcy5zZXQoIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLCExKSx0aGlzLnNldCgiX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQiLG51bGwpfX0uYmluZCh0aGlzKSl9X2RhdGFzZXRzU3RhdGUodCxlLG4pe3JldHVybiB0P2UmJmUubGVuZ3RoPyJQUkVTRU5UIj09PW46IkVNUFRZIj09PW46Ik5PVF9MT0FERUQiPT09bn1fcmVuZGVySGllcmFyY2h5Q2hhbmdlZCh0KXt0aGlzLnJlbG9hZCgpfV9oYW5kbGVOb2RlVG9nZ2xlRXhwYW5kKCl7dGhpcy5fbWF5YmVGZXRjaEhlYWx0aFBpbGxzKCl9X2hlYWx0aFBpbGxzVG9nZ2xlZE9uQ2hhbmdlZCh0KXt0P3RoaXMucmVsb2FkKCk6dGhpcy5zZXQoIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix7fSl9X21heWJlRmV0Y2hIZWFsdGhQaWxscygpe3RoaXMuX3Nob3VsZFJlcXVlc3RIZWFsdGhQaWxscygpJiZ0aGlzLl9yZXF1ZXN0SGVhbHRoUGlsbHMoKX19O19KdC50ZW1wbGF0ZT14ZWAKICAgIDxwYXBlci1kaWFsb2cgaWQ9ImVycm9yLWRpYWxvZyIgd2l0aC1iYWNrZHJvcD48L3BhcGVyLWRpYWxvZz4KICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8dGYtZ3JhcGgtY29udHJvbHMKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgY2xhc3M9InNpZGViYXIiCiAgICAgICAgc2xvdD0ic2lkZWJhciIKICAgICAgICBkZXZpY2VzLWZvci1zdGF0cz0ie3tfZGV2aWNlc0ZvclN0YXRzfX0iCiAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW19jb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgc3RhdHM9IltbX3N0YXRzXV0iCiAgICAgICAgY29sb3ItYnk9Int7X2NvbG9yQnl9fSIKICAgICAgICBkYXRhc2V0cz0iW1tfZGF0YXNldHNdXSIKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW19yZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICBzZWxlY3Rpb249Int7X3NlbGVjdGlvbn19IgogICAgICAgIHNlbGVjdGVkLWZpbGU9Int7X3NlbGVjdGVkRmlsZX19IgogICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgIGhlYWx0aC1waWxscy1mZWF0dXJlLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICBoZWFsdGgtcGlsbHMtdG9nZ2xlZC1vbj0ie3toZWFsdGhQaWxsc1RvZ2dsZWRPbn19IgogICAgICAgIG9uLWZpdC10YXA9Il9maXQiCiAgICAgICAgdHJhY2UtaW5wdXRzPSJ7e190cmFjZUlucHV0c319IgogICAgICAgIGF1dG8tZXh0cmFjdC1ub2Rlcz0ie3tfYXV0b0V4dHJhY3ROb2Rlc319IgogICAgICAgIG9uLWRvd25sb2FkLWltYWdlLXJlcXVlc3RlZD0iX29uRG93bmxvYWRJbWFnZVJlcXVlc3RlZCIKICAgICAgPjwvdGYtZ3JhcGgtY29udHJvbHM+CiAgICAgIDxkaXYKICAgICAgICBjbGFzcyQ9ImNlbnRlciBbW19nZXRHcmFwaERpc3BsYXlDbGFzc05hbWUoX3NlbGVjdGVkRmlsZSwgX2RhdGFzZXRzKV1dIgogICAgICAgIHNsb3Q9ImNlbnRlciIKICAgICAgPgogICAgICAgIDx0Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyCiAgICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgICAgZGF0YXNldHM9IltbX2RhdGFzZXRzXV0iCiAgICAgICAgICBzZWxlY3Rpb249IltbX3NlbGVjdGlvbl1dIgogICAgICAgICAgc2VsZWN0ZWQtZmlsZT0iW1tfc2VsZWN0ZWRGaWxlXV0iCiAgICAgICAgICBvdXQtZ3JhcGgtaGllcmFyY2h5PSJ7e19ncmFwaEhpZXJhcmNoeX19IgogICAgICAgICAgb3V0LWdyYXBoPSJ7e19ncmFwaH19IgogICAgICAgICAgb3V0LXN0YXRzPSJ7e19zdGF0c319IgogICAgICAgICAgcHJvZ3Jlc3M9Int7X3Byb2dyZXNzfX0iCiAgICAgICAgICBoaWVyYXJjaHktcGFyYW1zPSJbW19oaWVyYXJjaHlQYXJhbXNdXSIKICAgICAgICAgIGNvbXBhdGliaWxpdHktcHJvdmlkZXI9IltbX2NvbXBhdGliaWxpdHlQcm92aWRlcl1dIgogICAgICAgID48L3RmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXI+CiAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS1tZXNzYWdlIj4KICAgICAgICAgIDxoMz5ObyBncmFwaCBkZWZpbml0aW9uIGZpbGVzIHdlcmUgZm91bmQuPC9oMz4KICAgICAgICAgIDxwPgogICAgICAgICAgICBUbyBzdG9yZSBhIGdyYXBoLCBjcmVhdGUgYQogICAgICAgICAgICA8Y29kZT50Zi5zdW1tYXJ5LkZpbGVXcml0ZXI8L2NvZGU+CiAgICAgICAgICAgIGFuZCBwYXNzIHRoZSBncmFwaCBlaXRoZXIgdmlhIHRoZSBjb25zdHJ1Y3Rvciwgb3IgYnkgY2FsbGluZyBpdHMKICAgICAgICAgICAgPGNvZGU+YWRkX2dyYXBoKCk8L2NvZGU+IG1ldGhvZC4gWW91IG1heSB3YW50IHRvIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvdGVuc29yYm9hcmQvZ3JhcGhzIgogICAgICAgICAgICAgID5leGFtaW5pbmcgdGhlIFRlbnNvckZsb3cgZ3JhcGggdHV0b3JpYWw8L2EKICAgICAgICAgICAgPi4KICAgICAgICAgIDwvcD4KCiAgICAgICAgICA8cD4KICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8gYWRkCiAgICAgICAgICAgIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICA+LgogICAgICAgICAgPC9wPgoKICAgICAgICAgIDxwPgogICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgIDwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmFwaGJvYXJkIj4KICAgICAgICAgIDx0Zi1ncmFwaC1ib2FyZAogICAgICAgICAgICBpZD0iZ3JhcGhib2FyZCIKICAgICAgICAgICAgZGV2aWNlcy1mb3Itc3RhdHM9IltbX2RldmljZXNGb3JTdGF0c11dIgogICAgICAgICAgICBjb2xvci1ieT0ie3tfY29sb3JCeX19IgogICAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9Int7X2NvbG9yQnlQYXJhbXN9fSIKICAgICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW19ncmFwaEhpZXJhcmNoeV1dIgogICAgICAgICAgICBncmFwaD0iW1tfZ3JhcGhdXSIKICAgICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1tfaGllcmFyY2h5UGFyYW1zXV0iCiAgICAgICAgICAgIHByb2dyZXNzPSJbW19wcm9ncmVzc11dIgogICAgICAgICAgICBkZWJ1Z2dlci1kYXRhLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW19hcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgICAgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbX2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tfbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgICBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIKICAgICAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9IltbX2hlYWx0aFBpbGxTdGVwSW5kZXhdXSIKICAgICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0ie3tfcmVuZGVySGllcmFyY2h5fX0iCiAgICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgICBzdGF0cz0iW1tfc3RhdHNdXSIKICAgICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW190cmFjZUlucHV0c11dIgogICAgICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9IltbX2F1dG9FeHRyYWN0Tm9kZXNdXSIKICAgICAgICAgID48L3RmLWdyYXBoLWJvYXJkPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgL2RlZXAvIHsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmNlbnRlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgcGFwZXItZGlhbG9nIHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICB9CgogICAgICAubm8tZGF0YS1tZXNzYWdlIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmdyYXBoYm9hcmQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vLWdyYXBoIC5ncmFwaGJvYXJkIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAuY2VudGVyOm5vdCgubm8tZ3JhcGgpIC5uby1kYXRhLW1lc3NhZ2UgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIGEgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rKTsKICAgICAgfQoKICAgICAgYTp2aXNpdGVkIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluay12aXNpdGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJfZGF0YXNldHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfSnQucHJvdG90eXBlLCJfZGF0YXNldHNGZXRjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9zZWxlY3RlZERhdGFzZXQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixBS3QpXSxfSnQucHJvdG90eXBlLCJfcmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sX0p0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0sX0p0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9kZWJ1Z2dlckRhdGFFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxfSnQucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2hlYWx0aFBpbGxzVG9nZ2xlZE9uQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsImhlYWx0aFBpbGxzVG9nZ2xlZE9uIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfSnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfSnQucHJvdG90eXBlLCJfaXNBdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9pbml0aWFsaXplZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9KdC5wcm90b3R5cGUsIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJfZGVidWdnZXJOdW1lcmljQWxlcnRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF9KdC5wcm90b3R5cGUsIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsUmVxdWVzdElkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLF9KdC5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lckRlbGF5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfSnQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxvYnNlcnZlcjoiX3J1bk9ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfSnQucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0p0LnByb3RvdHlwZSwiX3NlbGVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfSnQucHJvdG90eXBlLCJfY29tcGF0aWJpbGl0eVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiX3RyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0p0LnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0p0LnByb3RvdHlwZSwiX3NlbGVjdGVkRmlsZSIsdm9pZCAwKSx0KFthKCJfaXNBdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sX0p0LnByb3RvdHlwZSwiX21heWJlSW5pdGlhbGl6ZURhc2hib2FyZCIsbnVsbCksdChbYSgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsInJ1biIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sX0p0LnByb3RvdHlwZSwiX2RldGVybWluZVNlbGVjdGVkRGF0YXNldCIsbnVsbCksdChbYSgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsIl9zZWxlY3RlZERhdGFzZXQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLF9KdC5wcm90b3R5cGUsIl91cGRhdGVTZWxlY3RlZERhdGFzZXROYW1lIixudWxsKSxfSnQ9dChbaSgidGYtZ3JhcGgtZGFzaGJvYXJkIildLF9KdCk7Y29uc3QgeUp0PWlOO2xldCB2SnQ9Y2xhc3MgZXh0ZW5kcyhjcihnbCh3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5tb2RlPSJvZmZzZXQiLHRoaXMudGltZVByb3BlcnR5PSJzdGVwIix0aGlzLmJpbnM9ImJpbnMiLHRoaXMueD0ieCIsdGhpcy5keD0iZHgiLHRoaXMueT0ieSIsdGhpcy5jb2xvclNjYWxlPXlKdC5zY2FsZU9yZGluYWwoeUp0LnNjaGVtZUNhdGVnb3J5MTApLHRoaXMubW9kZVRyYW5zaXRpb25EdXJhdGlvbj01MDAsdGhpcy5fbmFtZT1udWxsLHRoaXMuX2RhdGE9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLnN2ZywhMCl9YXR0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMH1kZXRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSExfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLl9uYW1lPXQsdGhpcy5fZGF0YT1lLHRoaXMucmVkcmF3KCl9X3JlZHJhd09uQ2hhbmdlKCl7dGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLl9kcmF3KDApfV9tb2RlUmVkcmF3KCl7dGhpcy5fZHJhdyh0aGlzLm1vZGVUcmFuc2l0aW9uRHVyYXRpb24pfV9kcmF3KHQpe2lmKCF0aGlzLl9hdHRhY2hlZHx8IXRoaXMuX2RhdGEpcmV0dXJuO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJ2ei1oaXN0b2dyYW0tdGltZXNlcmllcyBfZHJhdyBuZWVkcyBkdXJhdGlvbiIpO2lmKHRoaXMuX2RhdGEubGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiTm90IGVub3VnaCBzdGVwcyBpbiB0aGUgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdLmhhc093blByb3BlcnR5KHRoaXMuYmlucykpdGhyb3cgbmV3IEVycm9yKCJObyBiaW5zIHByb3BlcnR5IG9mICciK3RoaXMuYmlucysiJyBpbiBkYXRhIik7aWYodGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYmluIGluIGJpbnMgaW4gZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy54KSl0aHJvdyBuZXcgRXJyb3IoIk5vIHggcHJvcGVydHkgJyIrdGhpcy54KyInIG9uIGJpbnMgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy5keCkpdGhyb3cgbmV3IEVycm9yKCJObyBkeCBwcm9wZXJ0eSAnIit0aGlzLmR4KyInIG9uIGJpbnMgZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy55KSl0aHJvdyBuZXcgRXJyb3IoIk5vIHkgcHJvcGVydHkgJyIrdGhpcy55KyInIG9uIGJpbnMgZGF0YSIpO3ZhciBlPXRoaXMudGltZVByb3BlcnR5LG49dGhpcy54LGk9dGhpcy5iaW5zLHI9dGhpcy5keCxvPXRoaXMueSxhPXRoaXMuX2RhdGEscz10aGlzLm1vZGUsbD15SnQuaGNsKHRoaXMuY29sb3JTY2FsZSh0aGlzLl9uYW1lKSksYz15SnQuc2VsZWN0KHRoaXMuJC50b29sdGlwKSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0W25dfSxoPWZ1bmN0aW9uKHQpe3JldHVybiB0W29dfSxkPWZ1bmN0aW9uKHQpe3JldHVybiB0W25dK3Rbcl19LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHRbZV19OyJyZWxhdGl2ZSI9PT1lJiYocD1mdW5jdGlvbih0KXtyZXR1cm4gdC53YWxsX3RpbWUtYVswXS53YWxsX3RpbWV9KTt2YXIgZixtPXRoaXMuJC5zdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZz1tLndpZHRoLF89bS5oZWlnaHQseT17dG9wOjUscmlnaHQ6NjAsYm90dG9tOjIwLGxlZnQ6MjR9OyJvZmZzZXQiPT09cz95LnRvcD0oZj1fLzIuNSkrNTpmPV8teS50b3AteS5ib3R0b207dmFyIHY9Zy15LmxlZnQteS5yaWdodCxiPV8teS50b3AteS5ib3R0b207eUp0Lm1pbihhLHUpLHlKdC5tYXgoYSxkKTt2YXIgeD15SnQuZm9ybWF0KCIuM24iKSx3PXlKdC5mb3JtYXQoIi4wZiIpOyJ3YWxsX3RpbWUiPT09ZT93PXlKdC50aW1lRm9ybWF0KCIlbS8lZCAlWCIpOiJyZWxhdGl2ZSI9PT1lJiYodz1mdW5jdGlvbih0KXtyZXR1cm4geUp0LmZvcm1hdCgiLjFyIikodC8zNmU1KSsiaCJ9KTt2YXIgUz1hLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5beUp0Lm1pbih0W2ldLHUpLHlKdC5tYXgodFtpXSxkKV19KSksTT1hLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHlKdC5leHRlbnQodFtpXSxoKX0pKSxFPTUwMCxUPXlKdC5leHRlbnQoYSxwKSxDPSgid2FsbF90aW1lIj09PWU/eUp0LnNjYWxlVGltZSgpOnlKdC5zY2FsZUxpbmVhcigpKS5kb21haW4oVCkucmFuZ2UoWzAsIm9mZnNldCI9PT1zP2I6MF0pLEE9eUp0LnNjYWxlTGluZWFyKCkuZG9tYWluKFswLHlKdC5tYXgoYSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gTVtlXVsxXX0pKV0pLnJhbmdlKFtmLDBdKSxrPXlKdC5zY2FsZUxpbmVhcigpLmRvbWFpbihBLmRvbWFpbigpKS5yYW5nZShbRSwwXSksUD15SnQuc2NhbGVMaW5lYXIoKS5kb21haW4oW3lKdC5taW4oYSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gU1tlXVswXX0pKSx5SnQubWF4KGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFNbZV1bMV19KSldKS5uaWNlKCkucmFuZ2UoWzAsdl0pLEw9eUp0LnNjYWxlTGluZWFyKCkuZG9tYWluKFAuZG9tYWluKCkpLnJhbmdlKFswLEVdKTtjb25zdCBJPXlKdC5zY2FsZUxpbmVhcigpLmRvbWFpbih5SnQuZXh0ZW50KGEscCkpLnJhbmdlKFtsLmJyaWdodGVyKCksbC5kYXJrZXIoKV0pLmludGVycG9sYXRlKHlKdC5pbnRlcnBvbGF0ZUhjbCk7dmFyIE49eUp0LmF4aXNCb3R0b20oUCkudGlja3MoTWF0aC5tYXgoMix2LzIwKSksUj15SnQuYXhpc1JpZ2h0KEMpLnRpY2tzKE1hdGgubWF4KDIsYi8xNSkpLnRpY2tGb3JtYXQodyksTz15SnQuYXhpc1JpZ2h0KEEpLnRpY2tzKE1hdGgubWF4KDIsYi8xNSkpLnRpY2tTaXplKHYrNSkudGlja0Zvcm1hdCh4KSx6PWZ1bmN0aW9uKHQpe3JldHVybiB0W25dK3Rbcl0vMn0sRD15SnQubGluZSgpLngoKGZ1bmN0aW9uKHQpe3JldHVybiBMKHoodCkpfSkpLnkoKGZ1bmN0aW9uKHQpe3JldHVybiBrKHRbb10pfSkpLEI9dGhpcy4kLnN2ZyxIPXlKdC5zZWxlY3QoQiksRj1ILnRyYW5zaXRpb24oKS5kdXJhdGlvbih0KSxWPUguc2VsZWN0KCJnIikuY2xhc3NlZCgic21hbGwiLChmdW5jdGlvbigpe3JldHVybiB2PjAmJnY8PTE1MH0pKS5jbGFzc2VkKCJtZWRpdW0iLChmdW5jdGlvbigpe3JldHVybiB2PjE1MCYmdjw9MzAwfSkpLmNsYXNzZWQoImxhcmdlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdj4zMDB9KSksVT1GLnNlbGVjdCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3kubGVmdCsiLCIreS50b3ArIikiKSxqPXlKdC5iaXNlY3RvcihkKS5sZWZ0LEc9Vi5zZWxlY3QoIi5zdGFnZSIpLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigpe0ouc3R5bGUoIm9wYWNpdHkiLDEpLGV0LnN0eWxlKCJvcGFjaXR5IiwxKSxydC5zdHlsZSgib3BhY2l0eSIsMSksc3Quc3R5bGUoIm9wYWNpdHkiLDEpLGMuc3R5bGUoIm9wYWNpdHkiLDEpfSkpLm9uKCJtb3VzZW91dCIsKGZ1bmN0aW9uKCl7Si5zdHlsZSgib3BhY2l0eSIsMCksZXQuc3R5bGUoIm9wYWNpdHkiLDApLHJ0LnN0eWxlKCJvcGFjaXR5IiwwKSxzdC5zdHlsZSgib3BhY2l0eSIsMCksSi5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IiwhMSksSy5jbGFzc2VkKCJvdXRsaW5lLWhvdmVyIiwhMSksYy5zdHlsZSgib3BhY2l0eSIsMCl9KSkub24oIm1vdXNlbW92ZSIsKGZ1bmN0aW9uIFcoKXt2YXIgdCxhPXlKdC5tb3VzZSh0aGlzKSxsPVAuaW52ZXJ0KGFbMF0pO2Z1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGgubWluKHRbaV0ubGVuZ3RoLTEsaih0W2ldLGwpKX1DLmludmVydChhWzFdKTt2YXIgaCxkPTEvMDtKLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKGUsbCl7dmFyIGM9dShlKTtoPWU7dmFyIG09UChlW2ldW2NdW25dK2VbaV1bY11bcl0vMiksZz1BKGVbaV1bY11bb10pLF89Im9mZnNldCI9PT1zP0MocChlKSktKGYtZyk6Zyx5PU1hdGguYWJzKGFbMV0tXyk7cmV0dXJuIHk8ZCYmKGQ9eSx0PWUpLCJ0cmFuc2xhdGUoIittKyIsIitnKyIpIn0pKSxKLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7cmV0dXJuIHRbaV1bZV1bb119KSksSi5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10fSkpLEsuY2xhc3NlZCgib3V0bGluZS1ob3ZlciIsKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pKTt2YXIgbT11KGgpO2V0LmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIitQKGhbaV1bbV1bbl0raFtpXVttXVtyXS8yKSsiLCAiK2IrIikifSkpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB4KGhbaV1bbV1bbl0raFtpXVttXVtyXS8yKX0pKTt2YXIgZz1SLnRpY2tGb3JtYXQoKTtydC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrdisiLCAiKygib2Zmc2V0Ij09PXM/QyhwKHQpKTowKSsiKSJ9KSkuc3R5bGUoImRpc3BsYXkiLCJvZmZzZXQiPT09cz8iIjoibm9uZSIpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKGUpe3JldHVybiBnKHAodCkpfSkpO3ZhciBfPU8udGlja0Zvcm1hdCgpO3N0LmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIit2KyIsICIrKCJvZmZzZXQiPT09cz8wOkEodFtpXVttXVtvXSkpKyIpIn0pKS5zdHlsZSgiZGlzcGxheSIsIm9mZnNldCI9PT1zPyJub25lIjoiIikuc2VsZWN0KCJ0ZXh0IikudGV4dCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odFtpXVttXVtvXSl9KSk7dmFyIHk9eUp0Lm1vdXNlKEIpO2Muc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyh5WzBdKzE1KSsicHgsIisoeVsxXS0xNSkrInB4KSIpLnNlbGVjdCgic3BhbiIpLnRleHQoIm9mZnNldCI9PT1zP18odFtpXVttXVtvXSk6KCJzdGVwIj09PWU/InN0ZXAgIjoiIikrZyhwKHQpKSl9KSk7Ry5zZWxlY3QoIi5iYWNrZ3JvdW5kIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLXkubGVmdCsiLCIrLXkudG9wKyIpIikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhlaWdodCIsXyk7dmFyIHE9Ry5zZWxlY3RBbGwoIi5oaXN0b2dyYW0iKS5kYXRhKGEpO3EuZXhpdCgpLnJlbW92ZSgpO3ZhciBZPXEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImhpc3RvZ3JhbSIpLFg9WS5tZXJnZShxKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBwKHQpLXAoZSl9KSksJD1VLnNlbGVjdEFsbCgiLmhpc3RvZ3JhbSIpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1zP0MocCh0KSktZjowKSsiKSJ9KSk7WS5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsImJhc2VsaW5lIiksJC5zZWxlY3QoIi5iYXNlbGluZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3JldHVybiJvZmZzZXQiPT09cz8uMTowfSkpLmF0dHIoInkxIixmKS5hdHRyKCJ5MiIsZikuYXR0cigieDIiLHYpLFkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJvdXRsaW5lIik7dmFyIEs9WC5zZWxlY3QoIi5vdXRsaW5lIikuYXR0cigidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmF0dHIoImQiLChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24odCl7cmV0dXJuIk0iK0woeih0WzBdKSkrIiwiK2soMCkrIkwiK0QodCkuc2xpY2UoMSkrIkwiK0woeih0W3QubGVuZ3RoLTFdKSkrIiwiK2soMCl9KSh0W2ldKX0pKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKTskLnNlbGVjdCgiLm91dGxpbmUiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSgiK3YvRSsiLCAiK2YvRSsiKSIpLnN0eWxlKCJzdHJva2UiLChmdW5jdGlvbih0KXtyZXR1cm4ib2Zmc2V0Ij09PXM/IiI6SShwKHQpKX0pKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJuIm9mZnNldCI9PT1zPzE6MH0pKS5zdHlsZSgiZmlsbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBJKHAodCkpfSkpO3ZhciBaPVkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJob3ZlciIpLEo9WC5zZWxlY3QoIi5ob3ZlciIpLnN0eWxlKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIEkocCh0KSl9KSk7Wi5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLDIpLFouYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigiZHgiLDQpO3ZhciBRPVYuc2VsZWN0KCIueC1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieCJdKSx0dD1RLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLGV0PVEubWVyZ2UodHQpO3R0LmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0yMCkuYXR0cigieSIsNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSx0dC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDApLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsNiksdHQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHkiLDE4KTt2YXIgbnQ9Vi5zZWxlY3QoIi55LWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGl0PW50LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHJ0PW50Lm1lcmdlKGl0KTtpdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxpdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksaXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KTt2YXIgb3Q9Vi5zZWxlY3QoIi55LXNsaWNlLWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGF0PW90LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHN0PW90Lm1lcmdlKGF0KTthdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxhdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksYXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KSxVLnNlbGVjdCgiLnkuYXhpcy5zbGljZSIpLnN0eWxlKCJvcGFjaXR5Iiwib2Zmc2V0Ij09PXM/MDoxKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1zPy1mOjApKyIpIikuY2FsbChPKSxVLnNlbGVjdCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCAiK2IrIikiKS5jYWxsKE4pLFUuc2VsZWN0KCIueS5heGlzIikuc3R5bGUoIm9wYWNpdHkiLCJvZmZzZXQiPT09cz8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3YrIiwgIisoIm9mZnNldCI9PT1zPzA6YikrIikiKS5jYWxsKFIpLFUuc2VsZWN0QWxsKCIudGljayB0ZXh0IikuYXR0cigiZmlsbCIsIiNhYWEiKSxVLnNlbGVjdEFsbCgiLmF4aXMgcGF0aC5kb21haW4iKS5hdHRyKCJzdHJva2UiLCJub25lIil9fTtmdW5jdGlvbiBiSnQodCl7Y29uc3RbZSxuLGldPXQ7cmV0dXJue3dhbGxfdGltZTplLHN0ZXA6bixtaW46c2MoaS5tYXAoKChbdCwsXSk9PnQpKSksbWF4Om9jKGkubWFwKCgoWyx0XSk9PnQpKSksYnVja2V0czppLm1hcCgoKFt0LGUsbl0pPT4oe2xlZnQ6dCxyaWdodDplLGNvdW50Om59KSkpfX1mdW5jdGlvbiB4SnQodCxlLG4saT0zMCl7dm9pZCAwIT09ZSYmbnVsbCE9bnx8KGU9MCxuPTApLG49PT1lJiYobj0xLjEqZSsxLGU9ZS8xLjEtMSk7Y29uc3Qgcj0obi1lKS9pO2xldCBvPTA7Y29uc3QgYT1bXTtmb3IobGV0IHM9MDtzPGk7cysrKXtjb25zdCBpPWUrcypyLGw9aStyO2xldCBjPTA7Zm9yKDtvPHQuYnVja2V0cy5sZW5ndGg7KXtjb25zdCByPU1hdGgubWluKG4sdC5idWNrZXRzW29dLnJpZ2h0KSxhPU1hdGgubWF4KGUsdC5idWNrZXRzW29dLmxlZnQpO2lmKHItYT4wKXtjb25zdCBlPU1hdGgubWluKHIsbCktTWF0aC5tYXgoYSxpKSxuPWUvKHItYSkqdC5idWNrZXRzW29dLmNvdW50O2MrPWU+MD9uOjB9ZWxzZXtjb25zdCBlPWw+PW47Yys9aTw9YSYmKGU/cjw9bDpyPGwpP3QuYnVja2V0c1tvXS5jb3VudDowfWlmKHI+bClicmVhaztvKyt9YS5wdXNoKHt4OmksZHg6cix5OmN9KX1yZXR1cm4gYX12SnQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJ0b29sdGlwIj48c3Bhbj48L3NwYW4+PC9kaXY+CiAgICA8c3ZnIGlkPSJzdmciPgogICAgICA8Zz4KICAgICAgICA8ZyBjbGFzcz0iYXhpcyB4Ij48L2c+CiAgICAgICAgPGcgY2xhc3M9ImF4aXMgeSI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJheGlzIHkgc2xpY2UiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ic3RhZ2UiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImJhY2tncm91bmQiPjwvcmVjdD4KICAgICAgICA8L2c+CiAgICAgICAgPGcgY2xhc3M9IngtYXhpcy1ob3ZlciI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJ5LWF4aXMtaG92ZXIiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ieS1zbGljZS1heGlzLWhvdmVyIj48L2c+CiAgICAgIDwvZz4KICAgIDwvc3ZnPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6ICNmZmY7CiAgICAgICAgLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcjogIzAwMDsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6IHZhcigKICAgICAgICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yCiAgICAgICAgKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLW91dGxpbmUtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNjAwKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3I6ICNmZmY7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgZm9udC1mYW1pbHk6IHJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLmJhY2tncm91bmQgewogICAgICAgIGZpbGwtb3BhY2l0eTogMDsKICAgICAgICBmaWxsOiByZWQ7CiAgICAgIH0KCiAgICAgIC5oaXN0b2dyYW0gewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuaG92ZXIgewogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGRvbWluYW50LWJhc2VsaW5lOiBtaWRkbGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyIGNpcmNsZSB7CiAgICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICAgIHN0cm9rZS13aWR0aDogMXB4OwogICAgICB9CgogICAgICAuaG92ZXIgdGV4dCB7CiAgICAgICAgZmlsbDogYmxhY2s7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyLmhvdmVyLWNsb3Nlc3QgY2lyY2xlIHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1vdXRsaW5lLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuaG92ZXIuaG92ZXItY2xvc2VzdCB0ZXh0IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuYmFzZWxpbmUgewogICAgICAgIHN0cm9rZTogYmxhY2s7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLm91dGxpbmUgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yKTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAub3V0bGluZS5vdXRsaW5lLWhvdmVyIHsKICAgICAgICBzdHJva2U6IHZhcigtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3IpICFpbXBvcnRhbnQ7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIsCiAgICAgIC55LWF4aXMtaG92ZXIsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIC5sYWJlbCwKICAgICAgLnktYXhpcy1ob3ZlciAubGFiZWwsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgLmxhYmVsIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB0ZXh0LWFuY2hvcjogZW5kOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHRleHQgewogICAgICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIgbGluZSwKICAgICAgLnktYXhpcy1ob3ZlciBsaW5lLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIGxpbmUgewogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHJlY3QsCiAgICAgIC55LWF4aXMtaG92ZXIgcmVjdCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciByZWN0IHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1iZy1jb2xvcik7CiAgICAgIH0KCiAgICAgICN0b29sdGlwLAogICAgICAueC1heGlzLWhvdmVyIHRleHQsCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICBjb2xvcjogdmFyKC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcik7CiAgICAgIH0KCiAgICAgIC5heGlzIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC5heGlzIHBhdGguZG9tYWluIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICB9CgogICAgICAuYXhpcyAudGljayBsaW5lIHsKICAgICAgICBzdHJva2U6ICNkZGQ7CiAgICAgIH0KCiAgICAgIC5heGlzLnNsaWNlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAuYXhpcy5zbGljZSAudGljayBsaW5lIHsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAyOwogICAgICB9CgogICAgICAuc21hbGwgLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6Zmlyc3Qtb2YtdHlwZSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6bGFzdC1vZi10eXBlIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5tZWRpdW0gLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAubWVkaXVtIC5heGlzIC50aWNrOm50aC1jaGlsZCgybiArIDEpIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyAudGljazpudGgtY2hpbGQoMm4gKyAxKSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZKdC5wcm90b3R5cGUsIm1vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdkp0LnByb3RvdHlwZSwidGltZVByb3BlcnR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZKdC5wcm90b3R5cGUsImJpbnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdkp0LnByb3RvdHlwZSwieCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJkeCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHZKdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sdkp0LnByb3RvdHlwZSwibW9kZVRyYW5zaXRpb25EdXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHZKdC5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2SnQucHJvdG90eXBlLCJfbmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sdkp0LnByb3RvdHlwZSwiX2RhdGEiLHZvaWQgMCksdChbYSgidGltZVByb3BlcnR5IiwiY29sb3JTY2FsZSIsIl9hdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdkp0LnByb3RvdHlwZSwiX3JlZHJhd09uQ2hhbmdlIixudWxsKSx0KFthKCJtb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx2SnQucHJvdG90eXBlLCJfbW9kZVJlZHJhdyIsbnVsbCksdkp0PXQoW2koInZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIildLHZKdCk7bGV0IHdKdD1jbGFzcyBleHRlbmRzKGJDdChjcih3ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5nZXREYXRhTG9hZE5hbWU9KHtydW46dH0pPT50LHRoaXMucmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi9oaXN0b2dyYW1zIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPUxPKGkse3RhZzp0LnRhZyxydW46dC5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLmxvYWREYXRhQ2FsbGJhY2s9KHQsZSxuKT0+e2NvbnN0IGk9KGZ1bmN0aW9uIHIodCl7Y29uc3QgZT10Lm1hcChiSnQpLG49c2MoZSwodD0+dC5taW4pKSxpPW9jKGUsKHQ9PnQubWF4KSk7cmV0dXJuIGUubWFwKCh0PT4oe3dhbGxfdGltZTp0LndhbGxfdGltZSxzdGVwOnQuc3RlcCxiaW5zOnhKdCh0LG4saSl9KSkpfSkobiksbz10aGlzLmdldERhdGFMb2FkTmFtZShlKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShvLGkpfSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249X08sdGhpcy5fZXhwYW5kZWQ9ITF9X3JlbG9hZE9uUnVuVGFnUmVxdWVzdE1hbmFnZXJDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dGhpcy5kYXRhVG9Mb2FkPVt7cnVuOnRoaXMucnVuLHRhZzp0aGlzLnRhZ31dfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKHRoaXMucnVuKX1yZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX19O3dKdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDwhLS0KICAgICAgVGhlIG1haW4gaGlzdG9ncmFtIHRoYXQgd2UgcmVuZGVyLiBEYXRhIGlzIHNldCBkaXJlY3RseSB3aXRoCiAgICAgIFxgc2V0U2VyaWVzRGF0YVxgLCBub3Qgd2l0aCBhIGJvdW5kIHByb3BlcnR5LgogICAgLS0+CiAgICA8dnotaGlzdG9ncmFtLXRpbWVzZXJpZXMKICAgICAgaWQ9ImNoYXJ0IgogICAgICB0aW1lLXByb3BlcnR5PSJbW3RpbWVQcm9wZXJ0eV1dIgogICAgICBtb2RlPSJbW2hpc3RvZ3JhbU1vZGVdXSIKICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIgogICAgPjwvdnotaGlzdG9ncmFtLXRpbWVzZXJpZXM+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdKdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3SnQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0p0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJyKV0sd0p0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0p0LnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3SnQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3SnQucHJvdG90eXBlLCJ0aW1lUHJvcGVydHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd0p0LnByb3RvdHlwZSwiaGlzdG9ncmFtTW9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHdKdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0p0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW2EoInJ1biIsInRhZyIsInJlcXVlc3RNYW5hZ2VyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx3SnQucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdSZXF1ZXN0TWFuYWdlckNoYW5nZSIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx3SnQucHJvdG90eXBlLCJfdXBkYXRlRGF0YVRvTG9hZCIsbnVsbCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sd0p0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx3SnQ9dChbaSgidGYtaGlzdG9ncmFtLWxvYWRlciIpXSx3SnQpO2xldCBTSnQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5faGlzdG9ncmFtTW9kZT0ib2Zmc2V0Iix0aGlzLl90aW1lUHJvcGVydHk9InN0ZXAiLHRoaXMuX3Jlc3RhbXA9ITEsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGJyfV9yZWRyYXdDYXRlZ29yeVBhbmUodCxlKXtlJiZ0LnRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIikuZm9yRWFjaCgodD0+dC5yZWRyYXcoKSkpfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRIaXN0b2dyYW1zKCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9Q2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxuPWZyKGUpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09bi5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLGUpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZEhpc3RvZ3JhbXMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtaGlzdG9ncmFtLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3JldHVybiBOcih0aGlzLl9ydW5Ub1RhZyx0aGlzLl9zZWxlY3RlZFJ1bnMsdGhpcy5fdGFnRmlsdGVyKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07U0p0LnRlbXBsYXRlPXhlYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJoaXN0b2dyYW1Nb2RlU2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iSGlzdG9ncmFtIG1vZGUiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X2hpc3RvZ3JhbU1vZGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9Im92ZXJsYXkiPm92ZXJsYXk8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJvZmZzZXQiPm9mZnNldDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ0aW1lUHJvcGVydHlTZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJPZmZzZXQgdGltZSBheGlzIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e190aW1lUHJvcGVydHl9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gaGlzdG9ncmFtIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGhpc3RvZ3JhbSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtaGlzdG9ncmFtLWxvYWRlcgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHRpbWUtcHJvcGVydHk9IltbX3RpbWVQcm9wZXJ0eV1dIgogICAgICAgICAgICAgICAgICBoaXN0b2dyYW0tbW9kZT0iW1tfaGlzdG9ncmFtTW9kZV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1oaXN0b2dyYW0tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTSnQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNKdC5wcm90b3R5cGUsIl9oaXN0b2dyYW1Nb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNKdC5wcm90b3R5cGUsIl90aW1lUHJvcGVydHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFNKdC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sU0p0LnByb3RvdHlwZSwiX3J1blRvVGFnIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFNKdC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTSnQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNKdC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTSnQucHJvdG90eXBlLCJfcmVzdGFtcCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFNKdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxTSnQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxTSnQucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksU0p0PXQoW2koInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQiKV0sU0p0KTtjbGFzcyBNSnR7Y29uc3RydWN0b3IodCxlLG49ITApe3RoaXMuX2FwaVVybD10LHRoaXMuX3JlcXVlc3RNYW5hZ2VyPWUsdGhpcy5fdXNlSHR0cEdldD1ufWdldEV4cGVyaW1lbnQodCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJleHBlcmltZW50Iix0KX1nZXREb3dubG9hZFVybCh0LGUsbil7cmV0dXJuIHRoaXMuX2FwaVVybCsiL2Rvd25sb2FkX2RhdGE/IituZXcgVVJMU2VhcmNoUGFyYW1zKHtmb3JtYXQ6dCxjb2x1bW5zVmlzaWJpbGl0eTpKU09OLnN0cmluZ2lmeShuKSxyZXF1ZXN0OkpTT04uc3RyaW5naWZ5KGUpfSl9bGlzdFNlc3Npb25Hcm91cHModCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJzZXNzaW9uX2dyb3VwcyIsdCl9bGlzdE1ldHJpY0V2YWxzKHQpe3JldHVybiB0aGlzLl9zZW5kUmVxdWVzdCgibWV0cmljX2V2YWxzIix0KX1fc2VuZFJlcXVlc3QodCxlKXtpZih0aGlzLl91c2VIdHRwR2V0KXtjb25zdCBuPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShlKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodGhpcy5fYXBpVXJsKyIvIit0KyI/cmVxdWVzdD0iK24pfWNvbnN0IG49bmV3IHZyO24ud2l0aENyZWRlbnRpYWxzPSEwLG4ubWV0aG9kVHlwZT15ci5QT1NULG4uY29udGVudFR5cGU9InRleHQvcGxhaW4iLG4uYm9keT1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdFdpdGhPcHRpb25zKHRoaXMuX2FwaVVybCsiLyIrdCxuKX19bGV0IEVKdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm9yaWVudGF0aW9uPSJob3Jpem9udGFsIn19O2Z1bmN0aW9uIFRKdCh0KXtyZXR1cm4iIiE9PXQuZGlzcGxheU5hbWUmJnZvaWQgMCE9PXQuZGlzcGxheU5hbWU/dC5kaXNwbGF5TmFtZTp0Lm5hbWV9ZnVuY3Rpb24gQ0p0KHQpe2lmKCIiIT09dC5kaXNwbGF5TmFtZSYmdm9pZCAwIT09dC5kaXNwbGF5TmFtZSlyZXR1cm4gdC5kaXNwbGF5TmFtZTtsZXQgZT10Lm5hbWUuZ3JvdXAsbj10Lm5hbWUudGFnO3JldHVybiB2b2lkIDA9PT1lJiYoZT0iIiksdm9pZCAwPT09biYmKG49IiIpLCIiPT09ZT9uOmUrIi4iK259ZnVuY3Rpb24gQUp0KHQsZSl7aWYoZTx0LmhwYXJhbUNvbHVtbnMubGVuZ3RoKXJldHVybiBUSnQodC5ocGFyYW1Db2x1bW5zW2VdLmhwYXJhbUluZm8pO3JldHVybiBDSnQodC5tZXRyaWNDb2x1bW5zW2UtdC5ocGFyYW1Db2x1bW5zLmxlbmd0aF0ubWV0cmljSW5mbyl9ZnVuY3Rpb24ga0p0KHQpe3JldHVybiB0LmhwYXJhbUNvbHVtbnMubGVuZ3RofWZ1bmN0aW9uIFBKdCh0KXtyZXR1cm4gdC5tZXRyaWNDb2x1bW5zLmxlbmd0aH1mdW5jdGlvbiBMSnQodCl7cmV0dXJuIGtKdCh0KStQSnQodCl9ZnVuY3Rpb24gSUp0KHQsZSl7cmV0dXJuIHRbZV19ZnVuY3Rpb24gTkp0KHQsZSl7cmV0dXJuIHQuZmluZCgodD0+Q2UuZXhwb3J0cy5pc0VxdWFsKHQubmFtZSxlKSkpfWZ1bmN0aW9uIFJKdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUNvbHVtbnNbbl0uaHBhcmFtSW5mby5uYW1lXX1mdW5jdGlvbiBPSnQodCxlLG4pe2NvbnN0IGk9Tkp0KGUubWV0cmljVmFsdWVzLHQubWV0cmljQ29sdW1uc1tuXS5tZXRyaWNJbmZvLm5hbWUpO3JldHVybiB2b2lkIDA9PT1pP3ZvaWQgMDppLnZhbHVlfWZ1bmN0aW9uIHpKdCh0LGUsbil7cmV0dXJuIG48dC5ocGFyYW1Db2x1bW5zLmxlbmd0aD9SSnQodCxlLG4pOk9KdCh0LGUsbi10LmhwYXJhbUNvbHVtbnMubGVuZ3RoKX1mdW5jdGlvbiBESnQodCxlLG4pe3JldHVybiBHbChlLChlPT56SnQodCxlLG4pKSl9ZnVuY3Rpb24gQkp0KHQsZSxuKXtsZXQgaTtpZihuPGUuaHBhcmFtSW5mb3MubGVuZ3RoKWk9dC5ocGFyYW1Db2x1bW5zLmZpbmRJbmRleCgodD0+dC5ocGFyYW1JbmZvLm5hbWU9PT1lLmhwYXJhbUluZm9zW25dLm5hbWUpKTtlbHNle2NvbnN0IHI9ZS5tZXRyaWNJbmZvc1tuLWUuaHBhcmFtSW5mb3MubGVuZ3RoXS5uYW1lO2k9dC5ocGFyYW1Db2x1bW5zLmxlbmd0aCt0Lm1ldHJpY0NvbHVtbnMuZmluZEluZGV4KCh0PT50Lm1ldHJpY0luZm8ubmFtZT09PXIpKX1yZXR1cm4gY29uc29sZS5hc3NlcnQoLTEhPT1pKSxpfWZ1bmN0aW9uIEhKdCh0KXtyZXR1cm4gdC5ocGFyYW1JbmZvcy5sZW5ndGh9ZnVuY3Rpb24gRkp0KHQpe3JldHVybiB0Lm1ldHJpY0luZm9zLmxlbmd0aH1mdW5jdGlvbiBWSnQodCxlLG4pe3JldHVybiBHbChlLChlPT5XSnQodCxlLG4pKSl9ZnVuY3Rpb24gVUp0KHQsZSl7cmV0dXJuIHQuZmluZCgodD0+dC5uYW1lPT09ZSkpfWZ1bmN0aW9uIGpKdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUluZm9zW25dLm5hbWVdfWZ1bmN0aW9uIEdKdCh0LGUsbil7Y29uc3QgaT1OSnQoZS5tZXRyaWNWYWx1ZXMsdC5tZXRyaWNJbmZvc1tuXS5uYW1lKTtyZXR1cm4gdm9pZCAwPT09aT92b2lkIDA6aS52YWx1ZX1mdW5jdGlvbiBXSnQodCxlLG4pe3JldHVybiBuPHQuaHBhcmFtSW5mb3MubGVuZ3RoP2pKdCh0LGUsbik6R0p0KHQsZSxuLXQuaHBhcmFtSW5mb3MubGVuZ3RoKX1mdW5jdGlvbiBxSnQodCl7cmV0dXJuIENlLmV4cG9ydHMuaXNOdW1iZXIodCk/dC50b1ByZWNpc2lvbig1KTp2b2lkIDA9PT10PyIiOnQudG9TdHJpbmcoKX1mdW5jdGlvbiBZSnQodCxlKXtyZXR1cm4gdCp0K2UqZX1mdW5jdGlvbiBYSnQodCxlLG4saSl7cmV0dXJuIE1hdGguc3FydChZSnQodC1uLGUtaSkpfWZ1bmN0aW9uICRKdCh0LGUsbixpLHIsbyl7aWYodDxuJiZlPGkpcmV0dXJuIFhKdCh0LGUsbixpKTtpZihuPD10JiZ0PHImJmU8aSlyZXR1cm4gaS1lO2lmKHI8PXQmJmU8aSlyZXR1cm4gWEp0KHQsZSxyLGkpO2lmKHQ8biYmaTw9ZSYmZTxvKXJldHVybiBuLXQ7aWYobjw9dCYmdDxyJiZpPD1lJiZlPG8pcmV0dXJuIDA7aWYocjw9dCYmaTw9ZSYmZTxvKXJldHVybiB0LXI7aWYodDxuJiZvPD1lKXJldHVybiBYSnQodCxlLG4sbyk7aWYobjw9dCYmdDxyJiZvPD1lKXJldHVybiBlLW87aWYocjw9dCYmbzw9ZSlyZXR1cm4gWEp0KHQsZSxyLG8pO3Rocm93IlBvaW50ICh4LHkpIG11c3QgYmUgaW4gb25lIG9mIHRoZSByZWdpb25zIGRlZmluZWQgYWJvdmUuIn1mdW5jdGlvbiBLSnQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZT8idHJhbnNsYXRlKCIrdCsiKSI6InRyYW5zbGF0ZSgiK3QrIiwiK2UrIikifWZ1bmN0aW9uIFpKdCh0LGUsbil7Y29uc3QgaT10LmdldChlLHQpO0FycmF5LmlzQXJyYXkoaSk/dC5zcGxpY2UuYXBwbHkodCxbZSwwLGkubGVuZ3RoXS5jb25jYXQobikpOnQuc2V0KGUsbil9ZnVuY3Rpb24gSkp0KHQpe2xldCBlPTA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pZT0zMSplK3QuY2hhckNvZGVBdChuKSY0Mjk0OTY3Mjk1O3JldHVybiBlK01hdGgucG93KDIsMzEpfUVKdC50ZW1wbGF0ZT14ZWAKICAgIDxzbG90IG5hbWU9ImNvbnRlbnQiPjwvc2xvdD4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3Qgc2xvdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIDpob3N0IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSBzbG90IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgc2xvdCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyOiAwIHNvbGlkIHZhcigtLWRpdmlkZXItY29sb3IsICNjY2MpOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pIDo6c2xvdHRlZCgqOm5vdCg6bGFzdC1jaGlsZCkpIHsKICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiA1cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA1cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZyxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRUp0LnByb3RvdHlwZSwib3JpZW50YXRpb24iLHZvaWQgMCksRUp0PXQoW2koImhwYXJhbXMtc3BsaXQtbGF5b3V0IildLEVKdCk7dmFyIFFKdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxocGFyYW1OYW1lOlRKdCxtZXRyaWNOYW1lOkNKdCxzY2hlbWFDb2x1bW5OYW1lOkFKdCxudW1IUGFyYW1zOmtKdCxudW1NZXRyaWNzOlBKdCxudW1Db2x1bW5zOkxKdCxocGFyYW1WYWx1ZUJ5TmFtZTpJSnQsbWV0cmljVmFsdWVCeU5hbWU6Tkp0LGhwYXJhbVZhbHVlQnlJbmRleDpSSnQsbWV0cmljVmFsdWVCeUluZGV4Ok9KdCxjb2x1bW5WYWx1ZUJ5SW5kZXg6ekp0LG51bWVyaWNDb2x1bW5FeHRlbnQ6REp0LGdldEFic29sdXRlQ29sdW1uSW5kZXg6Qkp0LHNjaGVtYVZpc2libGVDb2x1bW5OYW1lOmZ1bmN0aW9uIHRRdCh0LGUpe3JldHVybiBlPHQuaHBhcmFtSW5mb3MubGVuZ3RoP1RKdCh0LmhwYXJhbUluZm9zW2VdKTpDSnQodC5tZXRyaWNJbmZvc1tlLXQuaHBhcmFtSW5mb3MubGVuZ3RoXSl9LG51bVZpc2libGVIUGFyYW1zOkhKdCxudW1WaXNpYmxlTWV0cmljczpGSnQsbnVtVmlzaWJsZUNvbHVtbnM6ZnVuY3Rpb24gZVF0KHQpe3JldHVybiBISnQodCkrRkp0KHQpfSx2aXNpYmxlTnVtZXJpY0NvbHVtbkV4dGVudDpWSnQscHJldHR5UHJpbnRIUGFyYW1WYWx1ZUJ5TmFtZTpmdW5jdGlvbiBuUXQodCxlKXtyZXR1cm4gcUp0KElKdCh0LGUpKX0scHJldHR5UHJpbnRNZXRyaWNWYWx1ZUJ5TmFtZTpmdW5jdGlvbiBpUXQodCxlKXtyZXR1cm4gcUp0KE5KdCh0LGUpKX0sc2Vzc2lvbkdyb3VwV2l0aE5hbWU6VUp0LGhwYXJhbVZhbHVlQnlWaXNpYmxlSW5kZXg6akp0LG1ldHJpY1ZhbHVlQnlWaXNpYmxlSW5kZXg6R0p0LGNvbHVtblZhbHVlQnlWaXNpYmxlSW5kZXg6V0p0LHByZXR0eVByaW50OnFKdCxsMk5vcm1TcXVhcmVkOllKdCxldWNsaWRlYW5EaXN0OlhKdCxwb2ludFRvUmVjdGFuZ2xlRGlzdDokSnQsdHJhbnNsYXRlU3RyOktKdCxyb3RhdGVTdHI6ZnVuY3Rpb24gclF0KHQsZSxuKXtsZXQgaT0icm90YXRlKCIrdDtyZXR1cm4gdm9pZCAwIT09ZSYmdm9pZCAwIT09biYmKGk9aSsiLCIrZSsiLCIrbiksaSs9IikiLGl9LGlzTnVsbE9yVW5kZWZpbmVkOmZ1bmN0aW9uIG9RdCh0KXtyZXR1cm4gbnVsbD09dH0scXVhZFRyZWVWaXNpdFBvaW50c0luUmVjdDpmdW5jdGlvbiBhUXQodCxlLG4saSxyLG8pe3QudmlzaXQoKChhLHMsbCxjLHUpPT57aWYodm9pZCAwPT09YS5sZW5ndGgpe2Rve2NvbnN0IHM9dC54KCkoYS5kYXRhKSxsPXQueSgpKGEuZGF0YSk7ZTw9cyYmczxpJiZuPD1sJiZsPHImJm8oYS5kYXRhKX13aGlsZShhPWEubmV4dCk7cmV0dXJuITB9cmV0dXJuIHM+PWl8fGM8PWV8fGw+PXJ8fHU8PW59KSl9LHF1YWRUcmVlVmlzaXRQb2ludHNJbkRpc2s6ZnVuY3Rpb24gc1F0KHQsZSxuLGkscil7dC52aXNpdCgoKG8sYSxzLGwsYyk9PntpZih2b2lkIDA9PT1vLmxlbmd0aCl7ZG97Y29uc3QgYT10LngoKShvLmRhdGEpLHM9dC55KCkoby5kYXRhKSxsPVhKdChlLG4sYSxzKTtsPD1pJiZyKG8uZGF0YSxsKX13aGlsZShvPW8ubmV4dCk7cmV0dXJuITB9cmV0dXJuICRKdChlLG4sYSxzLGwsYyk+aX0pKX0sZmlsdGVyU2V0OmZ1bmN0aW9uIGxRdCh0LGUpe2NvbnN0IG49bmV3IFNldDtyZXR1cm4gdC5mb3JFYWNoKCh0PT57ZSh0KSYmbi5hZGQodCl9KSksbn0sc2V0QXJyYXlPYnNlcnZhYmx5OlpKdCxoYXNoT2ZTdHJpbmc6Skp0fSk7bGV0IGNRdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29uZmlndXJhdGlvbj17c2NoZW1hOntocGFyYW1Db2x1bW5zOltdLG1ldHJpY0NvbHVtbnM6W119LGNvbHVtbnNWaXNpYmlsaXR5OltdLHZpc2libGVTY2hlbWE6e2hwYXJhbUluZm9zOltdLG1ldHJpY0luZm9zOltdfX0sdGhpcy5zZXNzaW9uR3JvdXBzPVtdLHRoaXMuZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXM9ITEsdGhpcy5kYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcz0hMSx0aGlzLl9zdGF0dXNlcz1be3ZhbHVlOiJTVEFUVVNfVU5LTk9XTiIsZGlzcGxheU5hbWU6IlVua25vd24iLGFsbG93ZWQ6ITB9LHt2YWx1ZToiU1RBVFVTX1NVQ0NFU1MiLGRpc3BsYXlOYW1lOiJTdWNjZXNzIixhbGxvd2VkOiEwfSx7dmFsdWU6IlNUQVRVU19GQUlMVVJFIixkaXNwbGF5TmFtZToiRmFpbHVyZSIsYWxsb3dlZDohMH0se3ZhbHVlOiJTVEFUVVNfUlVOTklORyIsZGlzcGxheU5hbWU6IlJ1bm5pbmciLGFsbG93ZWQ6ITB9XSx0aGlzLl9nZXRFeHBlcmltZW50UmVzb2x2ZWQ9bmV3IFByb21pc2UoKHQ9Pnt0aGlzLl9yZXNvbHZlR2V0RXhwZXJpbWVudD10fSkpLHRoaXMuX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyPW5ldyB4Tyx0aGlzLl9wYWdlU2l6ZUlucHV0PXt2YWx1ZToiMTAwIixpbnZhbGlkOiExfSx0aGlzLl9wYWdlTnVtYmVySW5wdXQ9e3ZhbHVlOiIxIixpbnZhbGlkOiExfSx0aGlzLl9wYWdlQ291bnRTdHI9Ij8iLHRoaXMuX2hwYXJhbU5hbWU9VEp0LHRoaXMuX21ldHJpY05hbWU9Q0p0LHRoaXMuX3ByZXR0eVByaW50PXFKdH1yZWxvYWQoKXt0aGlzLl9xdWVyeVNlcnZlcigpfV9jc3ZVcmwodCxlKXtyZXR1cm4gdGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSwiY3N2Iil9X2pzb25VcmwodCxlKXtyZXR1cm4gdGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSwianNvbiIpfV9sYXRleFVybCh0LGUpe3JldHVybiB0aGlzLl9kb3dubG9hZERhdGFVcmwodCxlLCJsYXRleCIpfV9kb3dubG9hZERhdGFVcmwodCxlLG4pe3JldHVybiB0aGlzLmJhY2tlbmQuZ2V0RG93bmxvYWRVcmwobix0LGUuY29sdW1uc1Zpc2liaWxpdHkpfV9jb21wdXRlRXhwZXJpbWVudEFuZFJlbGF0ZWRQcm9wcygpe2NvbnN0IHQ9UUp0O2lmKHQuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5iYWNrZW5kKXx8dC5pc051bGxPclVuZGVmaW5lZCh0aGlzLmV4cGVyaW1lbnROYW1lKSlyZXR1cm47dGhpcy5iYWNrZW5kLmdldEV4cGVyaW1lbnQoe2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWV9KS50aGVuKCh0PT57Q2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fZXhwZXJpbWVudCl8fCh0aGlzLnNldCgiX2V4cGVyaW1lbnQiLHQpLHRoaXMuX2NvbXB1dGVIUGFyYW1zKCksdGhpcy5fY29tcHV0ZU1ldHJpY3MoKSx0aGlzLl9xdWVyeVNlcnZlcigpLHRoaXMuX3Jlc29sdmVHZXRFeHBlcmltZW50KCkpfSkpLmZpbmFsbHkoKCgpPT57dGhpcy5fY29tcHV0ZURhdGFGb3VuZCgpfSkpfV9jb21wdXRlRGF0YUZvdW5kKCl7Y29uc3QgdD1Cb29sZWFuKHRoaXMuX2V4cGVyaW1lbnQmJnRoaXMuX2V4cGVyaW1lbnQuaHBhcmFtSW5mb3MmJnRoaXMuX2V4cGVyaW1lbnQuaHBhcmFtSW5mb3MubGVuZ3RoPjAmJnRoaXMuX2V4cGVyaW1lbnQubWV0cmljSW5mb3MmJnRoaXMuX2V4cGVyaW1lbnQubWV0cmljSW5mb3MubGVuZ3RoPjApO3RoaXMuc2V0KCJkYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtcyIsdCksdGhpcy5zZXQoImRhdGFMb2FkZWRXaXRoRW1wdHlIcGFyYW1zIiwhdCl9X2NvbXB1dGVIUGFyYW1zKCl7Y29uc3QgdD1bXTt0aGlzLl9leHBlcmltZW50LmhwYXJhbUluZm9zLmZvckVhY2goKChlLG4pPT57Y29uc3QgaT17aW5mbzplLGRpc3BsYXllZDpuPDUsZmlsdGVyOnt9fTtpLmluZm8uaGFzT3duUHJvcGVydHkoImRvbWFpbkRpc2NyZXRlIik/KGkuZmlsdGVyLmRvbWFpbkRpc2NyZXRlPVtdLGkuaW5mby5kb21haW5EaXNjcmV0ZS5mb3JFYWNoKCh0PT57aS5maWx0ZXIuZG9tYWluRGlzY3JldGUucHVzaCh7dmFsdWU6dCxjaGVja2VkOiEwfSl9KSkpOiJEQVRBX1RZUEVfQk9PTCI9PT1pLmluZm8udHlwZT9pLmZpbHRlci5kb21haW5EaXNjcmV0ZT1be3ZhbHVlOiExLGNoZWNrZWQ6ITB9LHt2YWx1ZTohMCxjaGVja2VkOiEwfV06IkRBVEFfVFlQRV9GTE9BVDY0Ij09PWkuaW5mby50eXBlP2kuZmlsdGVyLmludGVydmFsPXttaW46e3ZhbHVlOiIiLGludmFsaWQ6ITF9LG1heDp7dmFsdWU6IiIsaW52YWxpZDohMX19OiJEQVRBX1RZUEVfU1RSSU5HIj09PWkuaW5mby50eXBlP2kuZmlsdGVyLnJlZ2V4cD0iIjpjb25zb2xlLndhcm4oInVua25vd24gaHBhcmFtLmluZm8udHlwZTogJXMiLGkuaW5mby50eXBlKSx0LnB1c2goaSl9KSksdGhpcy5zZXQoIl9ocGFyYW1zIix0KX1fY29tcHV0ZU1ldHJpY3MoKXtjb25zdCB0PVtdO3RoaXMuX2V4cGVyaW1lbnQubWV0cmljSW5mb3MuZm9yRWFjaCgoKGUsbik9Pnt0LnB1c2goe2luZm86ZSxmaWx0ZXI6e2ludGVydmFsOnttaW46e3ZhbHVlOiIiLGludmFsaWQ6ITF9LG1heDp7dmFsdWU6IiIsaW52YWxpZDohMX19fSxkaXNwbGF5ZWQ6bjw1fSl9KSksdGhpcy5zZXQoIl9tZXRyaWNzIix0KX1fY29tcHV0ZVNjaGVtYSgpe3JldHVybiB0aGlzLl9ocGFyYW1zJiZ0aGlzLl9tZXRyaWNzP3tocGFyYW1Db2x1bW5zOnRoaXMuX2hwYXJhbXMubWFwKCh0PT4oe2hwYXJhbUluZm86dC5pbmZvfSkpKSxtZXRyaWNDb2x1bW5zOnRoaXMuX21ldHJpY3MubWFwKCh0PT4oe21ldHJpY0luZm86dC5pbmZvfSkpKX06e2hwYXJhbUNvbHVtbnM6W10sbWV0cmljQ29sdW1uczpbXX19X3VwZGF0ZUNvbmZpZ3VyYXRpb24oKXt0aGlzLmRlYm91bmNlKCJfdXBkYXRlQ29uZmlndXJhdGlvbiIsKCgpPT57dGhpcy5jb25maWd1cmF0aW9uPXtzY2hlbWE6dGhpcy5fY29tcHV0ZVNjaGVtYSgpLGNvbHVtbnNWaXNpYmlsaXR5OnRoaXMuX2NvbXB1dGVDb2x1bW5zVmlzaWJpbGl0eSgpLHZpc2libGVTY2hlbWE6dGhpcy5fY29tcHV0ZVZpc2libGVTY2hlbWEoKX19KSl9X2NvbXB1dGVDb2x1bW5zVmlzaWJpbGl0eSgpe3JldHVybiB0aGlzLl9ocGFyYW1zJiZ0aGlzLl9tZXRyaWNzP3RoaXMuX2hwYXJhbXMubWFwKCh0PT50LmRpc3BsYXllZCkpLmNvbmNhdCh0aGlzLl9tZXRyaWNzLm1hcCgodD0+dC5kaXNwbGF5ZWQpKSk6W119X2NvbXB1dGVWaXNpYmxlU2NoZW1hKCl7aWYoIXRoaXMuX2hwYXJhbXN8fCF0aGlzLl9tZXRyaWNzKXJldHVybntocGFyYW1JbmZvczpbXSxtZXRyaWNJbmZvczpbXX07cmV0dXJue2hwYXJhbUluZm9zOnRoaXMuX2hwYXJhbXMuZmlsdGVyKCh0PT50LmRpc3BsYXllZCkpLm1hcCgodD0+dC5pbmZvKSksbWV0cmljSW5mb3M6dGhpcy5fbWV0cmljcy5maWx0ZXIoKHQ9PnQuZGlzcGxheWVkKSkubWFwKCh0PT50LmluZm8pKX19X3F1ZXJ5U2VydmVyKCl7dGhpcy5kZWJvdW5jZSgicXVlcnlTZXJ2ZXIiLCgoKT0+dGhpcy5fcXVlcnlTZXJ2ZXJOb0RlYm91bmNlKCkpLDEwMCl9X3F1ZXJ5U2VydmVyTm9EZWJvdW5jZSgpe2lmKHRoaXMuX2hwYXJhbXMmJnRoaXMuX21ldHJpY3MpcmV0dXJuIHRoaXMuX3NlbmRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKS50aGVuKHRoaXMuX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKCgoe3ZhbHVlOnQsY2FuY2VsbGVkOmV9KT0+e2lmKCFlKXtpZih0LnRvdGFsU2l6ZT49MCl7dGhpcy5zZXQoIl9wYWdlQ291bnRTdHIiLFN0cmluZyhNYXRoLmNlaWwodC50b3RhbFNpemUvK3RoaXMuX3BhZ2VTaXplSW5wdXQudmFsdWUpKSksdGhpcy5zZXQoIl90b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0ciIsdC50b3RhbFNpemUpfWVsc2UgdGhpcy5zZXQoIl9wYWdlQ291bnRTdHIiLCI/IiksdGhpcy5zZXQoIl90b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0ciIsIlVua25vd24iKTtaSnQodGhpcywic2Vzc2lvbkdyb3VwcyIsdC5zZXNzaW9uR3JvdXBzKX19KSkpfV9zZW5kTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCl7Y29uc3QgdD10aGlzLl9idWlsZExpc3RTZXNzaW9uR3JvdXBzUmVxdWVzdCgpO2lmKG51bGwhPT10KXJldHVybiB0aGlzLnNldCgiX3Nlc3Npb25Hcm91cHNSZXF1ZXN0Iix0KSx0aGlzLl9saXN0U2Vzc2lvbkdyb3Vwc0NhbmNlbGxlci5jYW5jZWxBbGwoKSx0aGlzLmJhY2tlbmQubGlzdFNlc3Npb25Hcm91cHModCl9X2J1aWxkTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCl7Y29uc3QgdD10aGlzO2xldCBlPSEwO2Z1bmN0aW9uIG4obil7Y29uc3QgaT10LmdldChuKyIubWluLnZhbHVlIik7Y29uc29sZS5hc3NlcnQodm9pZCAwIT09aSk7Y29uc3Qgcj0iIj09PWk/Ii1JbmZpbml0eSI6K2k7dC5zZXQobisiLm1pbi5pbnZhbGlkIixpc05hTihyKSksZT1lJiYhaXNOYU4ocik7Y29uc3Qgbz10LmdldChuKyIubWF4LnZhbHVlIik7Y29uc29sZS5hc3NlcnQodm9pZCAwIT09byk7Y29uc3QgYT0iIj09PW8/IkluZmluaXR5IjorbztyZXR1cm4gdC5zZXQobisiLm1heC5pbnZhbGlkIixpc05hTihhKSksZT1lJiYhaXNOYU4oYSksaXNOYU4ocil8fGlzTmFOKGEpP251bGw6e21pblZhbHVlOnIsbWF4VmFsdWU6YX19ZnVuY3Rpb24gaShuKXtjb25zdCBpPXQuZ2V0KG4rIi52YWx1ZSIpO2NvbnNvbGUuYXNzZXJ0KHZvaWQgMCE9PWkpO2NvbnN0IHI9K2ksbz1OdW1iZXIuaXNJbnRlZ2VyKHIpJiZyPjA7cmV0dXJuIHQuc2V0KG4rIi5pbnZhbGlkIiwhbyksZT1lJiZvLG8/cjpudWxsfWNvbnN0IHI9dGhpcy5fc3RhdHVzZXMuZmlsdGVyKCh0PT50LmFsbG93ZWQpKS5tYXAoKHQ9PnQudmFsdWUpKTtsZXQgbz1bXTtpZih0aGlzLl9ocGFyYW1zLmZvckVhY2goKCh0LGUpPT57bGV0IGk9e2hwYXJhbTp0LmluZm8ubmFtZX07aWYodC5maWx0ZXIuZG9tYWluRGlzY3JldGUpaS5maWx0ZXJEaXNjcmV0ZT1bXSx0LmZpbHRlci5kb21haW5EaXNjcmV0ZS5mb3JFYWNoKCh0PT57dC5jaGVja2VkJiZpLmZpbHRlckRpc2NyZXRlLnB1c2godC52YWx1ZSl9KSk7ZWxzZSBpZih0LmZpbHRlci5pbnRlcnZhbClpLmZpbHRlckludGVydmFsPW4oIl9ocGFyYW1zLiIrZSsiLmZpbHRlci5pbnRlcnZhbCIpO2Vsc2V7aWYoIXQuZmlsdGVyLnJlZ2V4cClyZXR1cm4gY29uc29sZS5lcnJvcigiaHBhcmFtLmZpbHRlciB3aXRoIG5vIGRvbWFpbkRpc2NyZXRlLCBpbnRlcnZhbCBvciByZWdleHAgcHJvcGVydGllcyBzZXQ6ICVzIix0KSxudWxsO2kuZmlsdGVyUmVnZXhwPXQuZmlsdGVyLnJlZ2V4cH1vLnB1c2goaSl9KSksdGhpcy5fbWV0cmljcy5mb3JFYWNoKCgodCxlKT0+e2xldCBpPXttZXRyaWM6dC5pbmZvLm5hbWUsZmlsdGVySW50ZXJ2YWw6bigiX21ldHJpY3MuIitlKyIuZmlsdGVyLmludGVydmFsIil9O28ucHVzaChpKX0pKSx2b2lkIDAhPT10aGlzLl9zb3J0QnlJbmRleCYmdm9pZCAwIT09dGhpcy5fc29ydERpcmVjdGlvbil7aWYoISh0aGlzLl9zb3J0QnlJbmRleCBpbiBvKSlyZXR1cm4gY29uc29sZS5lcnJvcigiTm8gY29sdW1uIGluIGNvbFBhcmFtcyB3aXRoIGluZGV4IHNvcnRCeUluZGV4OiAlcyIsdGhpcy5fc29ydEJ5SW5kZXgpLG51bGw7b1t0aGlzLl9zb3J0QnlJbmRleF0ub3JkZXI9MD09PXRoaXMuX3NvcnREaXJlY3Rpb24/Ik9SREVSX0FTQyI6Ik9SREVSX0RFU0MifWNvbnN0IGE9aSgiX3BhZ2VOdW1iZXJJbnB1dCIpLHM9aSgiX3BhZ2VTaXplSW5wdXQiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm57ZXhwZXJpbWVudE5hbWU6dGhpcy5leHBlcmltZW50TmFtZSxhbGxvd2VkU3RhdHVzZXM6cixjb2xQYXJhbXM6byxzdGFydEluZGV4OnMqKGEtMSksc2xpY2VTaXplOnN9fV9tZXRyaWNTb3J0QnlJbmRleCh0KXtyZXR1cm4gdCt0aGlzLl9ocGFyYW1zLmxlbmd0aH19O2NRdC50ZW1wbGF0ZT14ZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dCBvcmllbnRhdGlvbj0idmVydGljYWwiPgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIGh5cGVycGFyYW1ldGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SHlwZXJwYXJhbWV0ZXJzPC9kaXY+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tfaHBhcmFtc319IiBhcz0iaHBhcmFtIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhwYXJhbSI+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgIGNoZWNrZWQ9Int7aHBhcmFtLmRpc3BsYXllZH19IgogICAgICAgICAgICAgIGNsYXNzPSJocGFyYW0tY2hlY2tib3giCiAgICAgICAgICAgID4KICAgICAgICAgICAgICBbW19ocGFyYW1OYW1lKGhwYXJhbS5pbmZvKV1dCiAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICAgIDwhLS0gUHJlY2lzZWx5IG9uZSBvZiB0aGUgdGVtcGxhdGVzIGJlbG93IHdpbGwgYmUgc3RhbXBlZC4tLT4KICAgICAgICAgICAgPCEtLSAxLiBBIGxpc3Qgb2YgY2hlY2tib3hlcyAtLT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIuZG9tYWluRGlzY3JldGVdXSI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW2hwYXJhbS5maWx0ZXIuZG9tYWluRGlzY3JldGVdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICAgICAgY2hlY2tlZD0ie3tpdGVtLmNoZWNrZWR9fSIKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRpc2NyZXRlLXZhbHVlLWNoZWNrYm94IgogICAgICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgW1tfcHJldHR5UHJpbnQoaXRlbS52YWx1ZSldXQogICAgICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8IS0tIDIuIEEgbnVtZXJpYyBpbnRlcnZhbCAtLT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWxdXSI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWluIgogICAgICAgICAgICAgICAgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5pbnRlcnZhbC5taW4udmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWRfcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWluLmludmFsaWRdXSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSItaW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWF4IgogICAgICAgICAgICAgICAgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5pbnRlcnZhbC5tYXgudmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWRfcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWF4LmludmFsaWRdXSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSIraW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwhLS0gMy4gQSByZWdleHAgLS0+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tocGFyYW0uZmlsdGVyLnJlZ2V4cF1dIj4KICAgICAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgICAgIGxhYmVsPSJSZWd1bGFyIGV4cHJlc3Npb24iCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tocGFyYW0uZmlsdGVyLnJlZ2V4cH19IgogICAgICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gbWV0cmljcyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+TWV0cmljczwvZGl2PgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9Int7X21ldHJpY3N9fSIgYXM9Im1ldHJpYyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMiPgogICAgICAgICAgICA8IS0tIFRPRE8oZXJleik6IE1ha2UgaXQgZWFzaWVyIHRvIGhhbmRsZSBhIGxhcmdlIG51bWJlciBvZgogICAgICAgICAgICAgICAgICBtZXRyaWNzOgogICAgICAgICAgICAgICAgICAxLiBBZGQgYW4gJ2lzb2xhdG9yJyByYWRpby1idXR0b24gdG8gc2VsZWN0IGp1c3Qgb25lCiAgICAgICAgICAgICAgICAgIG1ldHJpYyBhbmQKICAgICAgICAgICAgICAgICAgaGlkZSBhbGwgdGhlIHJlc3QKICAgICAgICAgICAgICAgICAgMi4gQWRkIGEgJ3RvZ2dsZS1hbGwnIGJ1dHRvbiB0aGF0IHdpbGwgaGlkZS91bmhpZGUKICAgICAgICAgICAgICAgICAgICBhbGwgdGhlCiAgICAgICAgICAgICAgICAgIG1ldHJpY3MuCiAgICAgICAgICAgICAgICAgIFVzZSBzaW1pbGFyIGxvZ2ljL2FwcGVhcmFuY2UgdG8gdGhlIHJ1bi1zZWxlY3RvciBvZgogICAgICAgICAgICAgICAgICBzY2FsYXJzLi0tPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjaGVja2VkPSJ7e21ldHJpYy5kaXNwbGF5ZWR9fSIKICAgICAgICAgICAgICBjbGFzcz0ibWV0cmljLWNoZWNrYm94IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgW1tfbWV0cmljTmFtZShtZXRyaWMuaW5mbyldXQogICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWluIgogICAgICAgICAgICAgICAgdmFsdWU9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5taW4udmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWluLmludmFsaWR9fSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSItaW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWF4IgogICAgICAgICAgICAgICAgYWxsb3dlZC1wYXR0ZXJuPSJbMC05LmVcXC1dIgogICAgICAgICAgICAgICAgdmFsdWU9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5tYXgudmFsdWV9fSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWF4LmludmFsaWR9fSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSIraW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gc3RhdHVzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TdGF0dXM8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19zdGF0dXNlc11dIiBhcz0ic3RhdHVzIj4KICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e3N0YXR1cy5hbGxvd2VkfX0iIG9uLWNoYW5nZT0iX3F1ZXJ5U2VydmVyIj4KICAgICAgICAgICAgW1tzdGF0dXMuZGlzcGxheU5hbWVdXQogICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBzb3J0aW5nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Tb3J0aW5nPC9kaXY+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIGxhYmVsPSJTb3J0IGJ5IgogICAgICAgICAgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICBob3Jpem9udGFsLWFsaWduPSJsZWZ0IgogICAgICAgID4KICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzZWxlY3RlZD0ie3tfc29ydEJ5SW5kZXh9fSIKICAgICAgICAgICAgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICA+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2hwYXJhbXNdXSIgYXM9ImhwYXJhbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+IFtbX2hwYXJhbU5hbWUoaHBhcmFtLmluZm8pXV0gPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19tZXRyaWNzXV0iIGFzPSJtZXRyaWMiPgogICAgICAgICAgICAgIDxwYXBlci1pdGVtPiBbW19tZXRyaWNOYW1lKG1ldHJpYy5pbmZvKV1dIDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIGxhYmVsPSJEaXJlY3Rpb24iCiAgICAgICAgICBvbi1zZWxlY3RlZC1pdGVtLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zb3J0RGlyZWN0aW9ufX0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1pdGVtPkFzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+RGVzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIHBhZ2luZyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UGFnaW5nPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgIE51bWJlciBvZiBtYXRjaGluZyBzZXNzaW9uIGdyb3VwczogW1tfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHJdXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50IHBhZ2UtbnVtYmVyLWlucHV0Ij4KICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICBsYWJlbD0iUGFnZSAjIgogICAgICAgICAgICB2YWx1ZT0ie3tfcGFnZU51bWJlcklucHV0LnZhbHVlfX0iCiAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOV0iCiAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgIGludmFsaWQ9IltbX3BhZ2VOdW1iZXJJbnB1dC5pbnZhbGlkXV0iCiAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgID4KICAgICAgICAgICAgPGRpdiBzbG90PSJzdWZmaXgiIGNsYXNzPSJwYWdlLXN1ZmZpeCI+LyBbW19wYWdlQ291bnRTdHJdXTwvZGl2PgogICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCBwYWdlLXNpemUtaW5wdXQiPgogICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgIGxhYmVsPSJNYXggIyBvZiBzZXNzaW9uIGdyb3VwcyBwZXIgcGFnZToiCiAgICAgICAgICAgIHZhbHVlPSJ7e19wYWdlU2l6ZUlucHV0LnZhbHVlfX0iCiAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOV0iCiAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgIGludmFsaWQ9IltbX3BhZ2VTaXplSW5wdXQuaW52YWxpZF1dIgogICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBkb3dubG9hZCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXNzaW9uR3JvdXBzUmVxdWVzdF1dIj4KICAgICAgICAgIERvd25sb2FkIGRhdGEgYXMKICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGlkPSJjc3ZMaW5rIgogICAgICAgICAgICAgIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLmNzdiIKICAgICAgICAgICAgICBocmVmPSJbW19jc3ZVcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIgogICAgICAgICAgICAgID5DU1Y8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGlkPSJqc29uTGluayIKICAgICAgICAgICAgICBkb3dubG9hZD0iaHBhcmFtc190YWJsZS5qc29uIgogICAgICAgICAgICAgIGhyZWY9IltbX2pzb25VcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIgogICAgICAgICAgICAgID5KU09OPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBpZD0ibGF0ZXhMaW5rIgogICAgICAgICAgICAgIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLnRleCIKICAgICAgICAgICAgICBocmVmPSJbW19sYXRleFVybChfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QsIGNvbmZpZ3VyYXRpb24pXV0iCiAgICAgICAgICAgICAgPkxhVGVYPC9hCiAgICAgICAgICAgID4KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA3cHg7CiAgICAgIH0KICAgICAgLmRpc2NyZXRlLXZhbHVlLWNoZWNrYm94LAogICAgICAubWV0cmljLWNoZWNrYm94LAogICAgICAuaHBhcmFtLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuZGlzY3JldGUtdmFsdWUtY2hlY2tib3ggewogICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgICB9CiAgICAgIC5ocGFyYW0sCiAgICAgIC5tZXRyaWMgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5pbmxpbmUtZWxlbWVudCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiA0MCU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgICAgLnBhZ2UtbnVtYmVyLWlucHV0IHsKICAgICAgICB3aWR0aDogMjAlOwogICAgICB9CiAgICAgIC5wYWdlLXNpemUtaW5wdXQgewogICAgICAgIHdpZHRoOiA2MCU7CiAgICAgIH0KICAgICAgdmFhZGluLXNwbGl0LWxheW91dCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIHBhcGVyLWxpc3Rib3ggewogICAgICAgIG1heC1oZWlnaHQ6IDE1ZW07CiAgICAgIH0KICAgICAgLnBhZ2Utc3VmZml4IHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sY1F0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNRdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1F0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxjUXQucHJvdG90eXBlLCJkYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxjUXQucHJvdG90eXBlLCJkYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUXQucHJvdG90eXBlLCJfZXhwZXJpbWVudCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sY1F0LnByb3RvdHlwZSwiX2hwYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGNRdC5wcm90b3R5cGUsIl9tZXRyaWNzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1F0LnByb3RvdHlwZSwiX3N0YXR1c2VzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNRdC5wcm90b3R5cGUsIl9nZXRFeHBlcmltZW50UmVzb2x2ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxjUXQucHJvdG90eXBlLCJfcmVzb2x2ZUdldEV4cGVyaW1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1F0LnByb3RvdHlwZSwiX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGNRdC5wcm90b3R5cGUsIl9zb3J0QnlJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxjUXQucHJvdG90eXBlLCJfc29ydERpcmVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUXQucHJvdG90eXBlLCJfcGFnZVNpemVJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUXQucHJvdG90eXBlLCJfcGFnZU51bWJlcklucHV0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGNRdC5wcm90b3R5cGUsIl9wYWdlQ291bnRTdHIiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sY1F0LnByb3RvdHlwZSwiX3RvdGFsU2Vzc2lvbkdyb3Vwc0NvdW50U3RyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNRdC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBzUmVxdWVzdCIsdm9pZCAwKSx0KFthKCJiYWNrZW5kIiwiZXhwZXJpbWVudE5hbWUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGNRdC5wcm90b3R5cGUsIl9jb21wdXRlRXhwZXJpbWVudEFuZFJlbGF0ZWRQcm9wcyIsbnVsbCksdChbYSgiX2hwYXJhbXMuKiIsIl9tZXRyaWNzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGNRdC5wcm90b3R5cGUsIl91cGRhdGVDb25maWd1cmF0aW9uIixudWxsKSxjUXQ9dChbaSgidGYtaHBhcmFtcy1xdWVyeS1wYW5lIildLGNRdCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KY29uc3QgdVF0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZudWxsIT13aW5kb3cuY3VzdG9tRWxlbWVudHMmJnZvaWQgMCE9PXdpbmRvdy5jdXN0b21FbGVtZW50cy5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrLGhRdD0odCxlLG49bnVsbCk9Pntmb3IoO2UhPT1uOyl7Y29uc3Qgbj1lLm5leHRTaWJsaW5nO3QucmVtb3ZlQ2hpbGQoZSksZT1ufX0sZFF0PWB7e2xpdC0ke1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKX19fWAscFF0PWBceDNjIS0tJHtkUXR9LS1ceDNlYCxmUXQ9bmV3IFJlZ0V4cChgJHtkUXR9fCR7cFF0fWApLG1RdD0iJGxpdCQiO2NsYXNzIGdRdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucGFydHM9W10sdGhpcy5lbGVtZW50PWU7Y29uc3Qgbj1bXSxpPVtdLHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLmNvbnRlbnQsMTMzLG51bGwsITEpO2xldCBvPTAsYT0tMSxzPTA7Y29uc3R7c3RyaW5nczpsLHZhbHVlczp7bGVuZ3RoOmN9fT10O2Zvcig7czxjOyl7Y29uc3QgdD1yLm5leHROb2RlKCk7aWYobnVsbCE9PXQpe2lmKGErKywxPT09dC5ub2RlVHlwZSl7aWYodC5oYXNBdHRyaWJ1dGVzKCkpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLHtsZW5ndGg6bn09ZTtsZXQgaT0wO2ZvcihsZXQgdD0wO3Q8bjt0KyspX1F0KGVbdF0ubmFtZSxtUXQpJiZpKys7Zm9yKDtpLS0gPjA7KXtjb25zdCBlPWJRdC5leGVjKGxbc10pWzJdLG49ZS50b0xvd2VyQ2FzZSgpK21RdCxpPXQuZ2V0QXR0cmlidXRlKG4pO3QucmVtb3ZlQXR0cmlidXRlKG4pO2NvbnN0IHI9aS5zcGxpdChmUXQpO3RoaXMucGFydHMucHVzaCh7dHlwZToiYXR0cmlidXRlIixpbmRleDphLG5hbWU6ZSxzdHJpbmdzOnJ9KSxzKz1yLmxlbmd0aC0xfX0iVEVNUExBVEUiPT09dC50YWdOYW1lJiYoaS5wdXNoKHQpLHIuY3VycmVudE5vZGU9dC5jb250ZW50KX1lbHNlIGlmKDM9PT10Lm5vZGVUeXBlKXtjb25zdCBlPXQuZGF0YTtpZihlLmluZGV4T2YoZFF0KT49MCl7Y29uc3QgaT10LnBhcmVudE5vZGUscj1lLnNwbGl0KGZRdCksbz1yLmxlbmd0aC0xO2ZvcihsZXQgZT0wO2U8bztlKyspe2xldCBuLG89cltlXTtpZigiIj09PW8pbj12UXQoKTtlbHNle2NvbnN0IHQ9YlF0LmV4ZWMobyk7bnVsbCE9PXQmJl9RdCh0WzJdLG1RdCkmJihvPW8uc2xpY2UoMCx0LmluZGV4KSt0WzFdK3RbMl0uc2xpY2UoMCwtbVF0Lmxlbmd0aCkrdFszXSksbj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShvKX1pLmluc2VydEJlZm9yZShuLHQpLHRoaXMucGFydHMucHVzaCh7dHlwZToibm9kZSIsaW5kZXg6KythfSl9IiI9PT1yW29dPyhpLmluc2VydEJlZm9yZSh2UXQoKSx0KSxuLnB1c2godCkpOnQuZGF0YT1yW29dLHMrPW99fWVsc2UgaWYoOD09PXQubm9kZVR5cGUpaWYodC5kYXRhPT09ZFF0KXtjb25zdCBlPXQucGFyZW50Tm9kZTtudWxsIT09dC5wcmV2aW91c1NpYmxpbmcmJmEhPT1vfHwoYSsrLGUuaW5zZXJ0QmVmb3JlKHZRdCgpLHQpKSxvPWEsdGhpcy5wYXJ0cy5wdXNoKHt0eXBlOiJub2RlIixpbmRleDphfSksbnVsbD09PXQubmV4dFNpYmxpbmc/dC5kYXRhPSIiOihuLnB1c2godCksYS0tKSxzKyt9ZWxzZXtsZXQgZT0tMTtmb3IoOy0xIT09KGU9dC5kYXRhLmluZGV4T2YoZFF0LGUrMSkpOyl0aGlzLnBhcnRzLnB1c2goe3R5cGU6Im5vZGUiLGluZGV4Oi0xfSkscysrfX1lbHNlIHIuY3VycmVudE5vZGU9aS5wb3AoKX1mb3IoY29uc3QgdCBvZiBuKXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX19Y29uc3QgX1F0PSh0LGUpPT57Y29uc3Qgbj10Lmxlbmd0aC1lLmxlbmd0aDtyZXR1cm4gbj49MCYmdC5zbGljZShuKT09PWV9LHlRdD10PT4tMSE9PXQuaW5kZXgsdlF0PSgpPT5kb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSxiUXQ9LyhbIFx4MDlceDBhXHgwY1x4MGRdKShbXlwwLVx4MUZceDdGLVx4OUYgIic+PS9dKykoWyBceDA5XHgwYVx4MGNceDBkXSo9WyBceDA5XHgwYVx4MGNceDBkXSooPzpbXiBceDA5XHgwYVx4MGNceDBkIidgPD49XSp8IlteIl0qfCdbXiddKikpJC87ZnVuY3Rpb24geFF0KHQsZSl7Y29uc3R7ZWxlbWVudDp7Y29udGVudDpufSxwYXJ0czppfT10LHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihuLDEzMyxudWxsLCExKTtsZXQgbz1TUXQoaSksYT1pW29dLHM9LTEsbD0wO2NvbnN0IGM9W107bGV0IHU9bnVsbDtmb3IoO3IubmV4dE5vZGUoKTspe3MrKztjb25zdCB0PXIuY3VycmVudE5vZGU7Zm9yKHQucHJldmlvdXNTaWJsaW5nPT09dSYmKHU9bnVsbCksZS5oYXModCkmJihjLnB1c2godCksbnVsbD09PXUmJih1PXQpKSxudWxsIT09dSYmbCsrO3ZvaWQgMCE9PWEmJmEuaW5kZXg9PT1zOylhLmluZGV4PW51bGwhPT11Py0xOmEuaW5kZXgtbCxvPVNRdChpLG8pLGE9aVtvXX1jLmZvckVhY2goKHQ9PnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSkpfWNvbnN0IHdRdD10PT57bGV0IGU9MTE9PT10Lm5vZGVUeXBlPzA6MTtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodCwxMzMsbnVsbCwhMSk7Zm9yKDtuLm5leHROb2RlKCk7KWUrKztyZXR1cm4gZX0sU1F0PSh0LGU9LTEpPT57Zm9yKGxldCBuPWUrMTtuPHQubGVuZ3RoO24rKyl7aWYoeVF0KHRbbl0pKXJldHVybiBufXJldHVybi0xfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqLwpjb25zdCBNUXQ9bmV3IFdlYWtNYXAsRVF0PXt9LFRRdD17fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqLwpjbGFzcyBDUXR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX19wYXJ0cz1bXSx0aGlzLnRlbXBsYXRlPXQsdGhpcy5wcm9jZXNzb3I9ZSx0aGlzLm9wdGlvbnM9bn11cGRhdGUodCl7bGV0IGU9MDtmb3IoY29uc3QgbiBvZiB0aGlzLl9fcGFydHMpdm9pZCAwIT09biYmbi5zZXRWYWx1ZSh0W2VdKSxlKys7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fX3BhcnRzKXZvaWQgMCE9PXQmJnQuY29tbWl0KCl9X2Nsb25lKCl7Y29uc3QgdD11UXQ/dGhpcy50ZW1wbGF0ZS5lbGVtZW50LmNvbnRlbnQuY2xvbmVOb2RlKCEwKTpkb2N1bWVudC5pbXBvcnROb2RlKHRoaXMudGVtcGxhdGUuZWxlbWVudC5jb250ZW50LCEwKSxlPVtdLG49dGhpcy50ZW1wbGF0ZS5wYXJ0cyxpPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodCwxMzMsbnVsbCwhMSk7bGV0IHIsbz0wLGE9MCxzPWkubmV4dE5vZGUoKTtmb3IoO288bi5sZW5ndGg7KWlmKHI9bltvXSx5UXQocikpe2Zvcig7YTxyLmluZGV4OylhKyssIlRFTVBMQVRFIj09PXMubm9kZU5hbWUmJihlLnB1c2gocyksaS5jdXJyZW50Tm9kZT1zLmNvbnRlbnQpLG51bGw9PT0ocz1pLm5leHROb2RlKCkpJiYoaS5jdXJyZW50Tm9kZT1lLnBvcCgpLHM9aS5uZXh0Tm9kZSgpKTtpZigibm9kZSI9PT1yLnR5cGUpe2NvbnN0IHQ9dGhpcy5wcm9jZXNzb3IuaGFuZGxlVGV4dEV4cHJlc3Npb24odGhpcy5vcHRpb25zKTt0Lmluc2VydEFmdGVyTm9kZShzLnByZXZpb3VzU2libGluZyksdGhpcy5fX3BhcnRzLnB1c2godCl9ZWxzZSB0aGlzLl9fcGFydHMucHVzaCguLi50aGlzLnByb2Nlc3Nvci5oYW5kbGVBdHRyaWJ1dGVFeHByZXNzaW9ucyhzLHIubmFtZSxyLnN0cmluZ3MsdGhpcy5vcHRpb25zKSk7bysrfWVsc2UgdGhpcy5fX3BhcnRzLnB1c2godm9pZCAwKSxvKys7cmV0dXJuIHVRdCYmKGRvY3VtZW50LmFkb3B0Tm9kZSh0KSxjdXN0b21FbGVtZW50cy51cGdyYWRlKHQpKSx0fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqL2NvbnN0IEFRdD13aW5kb3cudHJ1c3RlZFR5cGVzJiZ0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJsaXQtaHRtbCIse2NyZWF0ZUhUTUw6dD0+dH0pLGtRdD1gICR7ZFF0fSBgO2NsYXNzIFBRdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl9fcGVuZGluZ1ZhbHVlPXZvaWQgMCx0aGlzLm9wdGlvbnM9dH1hcHBlbmRJbnRvKHQpe3RoaXMuc3RhcnROb2RlPXQuYXBwZW5kQ2hpbGQodlF0KCkpLHRoaXMuZW5kTm9kZT10LmFwcGVuZENoaWxkKHZRdCgpKX1pbnNlcnRBZnRlck5vZGUodCl7dGhpcy5zdGFydE5vZGU9dCx0aGlzLmVuZE5vZGU9dC5uZXh0U2libGluZ31hcHBlbmRJbnRvUGFydCh0KXt0Ll9faW5zZXJ0KHRoaXMuc3RhcnROb2RlPXZRdCgpKSx0Ll9faW5zZXJ0KHRoaXMuZW5kTm9kZT12UXQoKSl9aW5zZXJ0QWZ0ZXJQYXJ0KHQpe3QuX19pbnNlcnQodGhpcy5zdGFydE5vZGU9dlF0KCkpLHRoaXMuZW5kTm9kZT10LmVuZE5vZGUsdC5lbmROb2RlPXRoaXMuc3RhcnROb2RlfXNldFZhbHVlKHQpe3RoaXMuX19wZW5kaW5nVmFsdWU9dH1jb21taXQoKXtpZihudWxsPT09dGhpcy5zdGFydE5vZGUucGFyZW50Tm9kZSlyZXR1cm47Zm9yKDsiZnVuY3Rpb24iPT10eXBlb2YodD10aGlzLl9fcGVuZGluZ1ZhbHVlKSYmTVF0Lmhhcyh0KTspe2NvbnN0IHQ9dGhpcy5fX3BlbmRpbmdWYWx1ZTt0aGlzLl9fcGVuZGluZ1ZhbHVlPUVRdCx0KHRoaXMpfXZhciB0O2NvbnN0IGU9dGhpcy5fX3BlbmRpbmdWYWx1ZTtlIT09RVF0JiYoKHQ9Pm51bGw9PT10fHwhKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKShlKT9lIT09dGhpcy52YWx1ZSYmdGhpcy5fX2NvbW1pdFRleHQoZSk6ZSBpbnN0YW5jZW9mIGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMuc3RyaW5ncz10LHRoaXMudmFsdWVzPWUsdGhpcy50eXBlPW4sdGhpcy5wcm9jZXNzb3I9aX1nZXRIVE1MKCl7Y29uc3QgdD10aGlzLnN0cmluZ3MubGVuZ3RoLTE7bGV0IGU9IiIsbj0hMTtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PXRoaXMuc3RyaW5nc1tpXSxyPXQubGFzdEluZGV4T2YoIlx4M2MhLS0iKTtuPShyPi0xfHxuKSYmLTE9PT10LmluZGV4T2YoIi0tXHgzZSIscisxKTtjb25zdCBvPWJRdC5leGVjKHQpO2UrPW51bGw9PT1vP3QrKG4/a1F0OnBRdCk6dC5zdWJzdHIoMCxvLmluZGV4KStvWzFdK29bMl0rbVF0K29bM10rZFF0fXJldHVybiBlKz10aGlzLnN0cmluZ3NbdF0sZX1nZXRUZW1wbGF0ZUVsZW1lbnQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7bGV0IGU9dGhpcy5nZXRIVE1MKCk7cmV0dXJuIHZvaWQgMCE9PUFRdCYmKGU9QVF0LmNyZWF0ZUhUTUwoZSkpLHQuaW5uZXJIVE1MPWUsdH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8/dGhpcy5fX2NvbW1pdFRlbXBsYXRlUmVzdWx0KGUpOmUgaW5zdGFuY2VvZiBOb2RlP3RoaXMuX19jb21taXROb2RlKGUpOih0PT5BcnJheS5pc0FycmF5KHQpfHwhKCF0fHwhdFtTeW1ib2wuaXRlcmF0b3JdKSkoZSk/dGhpcy5fX2NvbW1pdEl0ZXJhYmxlKGUpOmU9PT1UUXQ/KHRoaXMudmFsdWU9VFF0LHRoaXMuY2xlYXIoKSk6dGhpcy5fX2NvbW1pdFRleHQoZSkpfV9faW5zZXJ0KHQpe3RoaXMuZW5kTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHRoaXMuZW5kTm9kZSl9X19jb21taXROb2RlKHQpe3RoaXMudmFsdWUhPT10JiYodGhpcy5jbGVhcigpLHRoaXMuX19pbnNlcnQodCksdGhpcy52YWx1ZT10KX1fX2NvbW1pdFRleHQodCl7Y29uc3QgZT10aGlzLnN0YXJ0Tm9kZS5uZXh0U2libGluZyxuPSJzdHJpbmciPT10eXBlb2YodD1udWxsPT10PyIiOnQpP3Q6U3RyaW5nKHQpO2U9PT10aGlzLmVuZE5vZGUucHJldmlvdXNTaWJsaW5nJiYzPT09ZS5ub2RlVHlwZT9lLmRhdGE9bjp0aGlzLl9fY29tbWl0Tm9kZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSksdGhpcy52YWx1ZT10fV9fY29tbWl0VGVtcGxhdGVSZXN1bHQodCl7Y29uc3QgZT10aGlzLm9wdGlvbnMudGVtcGxhdGVGYWN0b3J5KHQpO2lmKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBDUXQmJnRoaXMudmFsdWUudGVtcGxhdGU9PT1lKXRoaXMudmFsdWUudXBkYXRlKHQudmFsdWVzKTtlbHNle2NvbnN0IG49bmV3IENRdChlLHQucHJvY2Vzc29yLHRoaXMub3B0aW9ucyksaT1uLl9jbG9uZSgpO24udXBkYXRlKHQudmFsdWVzKSx0aGlzLl9fY29tbWl0Tm9kZShpKSx0aGlzLnZhbHVlPW59fV9fY29tbWl0SXRlcmFibGUodCl7QXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKXx8KHRoaXMudmFsdWU9W10sdGhpcy5jbGVhcigpKTtjb25zdCBlPXRoaXMudmFsdWU7bGV0IG4saT0wO2Zvcihjb25zdCByIG9mIHQpbj1lW2ldLHZvaWQgMD09PW4mJihuPW5ldyBQUXQodGhpcy5vcHRpb25zKSxlLnB1c2gobiksMD09PWk/bi5hcHBlbmRJbnRvUGFydCh0aGlzKTpuLmluc2VydEFmdGVyUGFydChlW2ktMV0pKSxuLnNldFZhbHVlKHIpLG4uY29tbWl0KCksaSsrO2k8ZS5sZW5ndGgmJihlLmxlbmd0aD1pLHRoaXMuY2xlYXIobiYmbi5lbmROb2RlKSl9Y2xlYXIodD10aGlzLnN0YXJ0Tm9kZSl7aFF0KHRoaXMuc3RhcnROb2RlLnBhcmVudE5vZGUsdC5uZXh0U2libGluZyx0aGlzLmVuZE5vZGUpfX1sZXQgTFF0PSExOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCmZ1bmN0aW9uIElRdCh0KXtsZXQgZT1OUXQuZ2V0KHQudHlwZSk7dm9pZCAwPT09ZSYmKGU9e3N0cmluZ3NBcnJheTpuZXcgV2Vha01hcCxrZXlTdHJpbmc6bmV3IE1hcH0sTlF0LnNldCh0LnR5cGUsZSkpO2xldCBuPWUuc3RyaW5nc0FycmF5LmdldCh0LnN0cmluZ3MpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG47Y29uc3QgaT10LnN0cmluZ3Muam9pbihkUXQpO3JldHVybiBuPWUua2V5U3RyaW5nLmdldChpKSx2b2lkIDA9PT1uJiYobj1uZXcgZ1F0KHQsdC5nZXRUZW1wbGF0ZUVsZW1lbnQoKSksZS5rZXlTdHJpbmcuc2V0KGksbikpLGUuc3RyaW5nc0FycmF5LnNldCh0LnN0cmluZ3Msbiksbn0oKCk9Pnt0cnl7Y29uc3QgdD17Z2V0IGNhcHR1cmUoKXtyZXR1cm4gTFF0PSEwLCExfX07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHQsdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLHQsdCl9Y2F0Y2godCl7fX0pKCk7Y29uc3QgTlF0PW5ldyBNYXAsUlF0PW5ldyBXZWFrTWFwOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cubGl0SHRtbFZlcnNpb25zfHwod2luZG93LmxpdEh0bWxWZXJzaW9ucz1bXSkpLnB1c2goIjEuNC4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi9jb25zdCBPUXQ9KHQsZSk9PmAke3R9LS0ke2V9YDtsZXQgelF0PSEwO3ZvaWQgMD09PXdpbmRvdy5TaGFkeUNTUz96UXQ9ITE6dm9pZCAwPT09d2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZURvbSYmKGNvbnNvbGUud2FybigiSW5jb21wYXRpYmxlIFNoYWR5Q1NTIHZlcnNpb24gZGV0ZWN0ZWQuIFBsZWFzZSB1cGRhdGUgdG8gYXQgbGVhc3QgQHdlYmNvbXBvbmVudHMvd2ViY29tcG9uZW50c2pzQDIuMC4yIGFuZCBAd2ViY29tcG9uZW50cy9zaGFkeWNzc0AxLjMuMS4iKSx6UXQ9ITEpO2NvbnN0IERRdD10PT5lPT57Y29uc3Qgbj1PUXQoZS50eXBlLHQpO2xldCBpPU5RdC5nZXQobik7dm9pZCAwPT09aSYmKGk9e3N0cmluZ3NBcnJheTpuZXcgV2Vha01hcCxrZXlTdHJpbmc6bmV3IE1hcH0sTlF0LnNldChuLGkpKTtsZXQgcj1pLnN0cmluZ3NBcnJheS5nZXQoZS5zdHJpbmdzKTtpZih2b2lkIDAhPT1yKXJldHVybiByO2NvbnN0IG89ZS5zdHJpbmdzLmpvaW4oZFF0KTtpZihyPWkua2V5U3RyaW5nLmdldChvKSx2b2lkIDA9PT1yKXtjb25zdCBuPWUuZ2V0VGVtcGxhdGVFbGVtZW50KCk7elF0JiZ3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlRG9tKG4sdCkscj1uZXcgZ1F0KGUsbiksaS5rZXlTdHJpbmcuc2V0KG8scil9cmV0dXJuIGkuc3RyaW5nc0FycmF5LnNldChlLnN0cmluZ3Mscikscn0sQlF0PVsiaHRtbCIsInN2ZyJdLEhRdD1uZXcgU2V0LEZRdD0odCxlLG4pPT57SFF0LmFkZCh0KTtjb25zdCBpPW4/bi5lbGVtZW50OmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIikscj1lLnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikse2xlbmd0aDpvfT1yO2lmKDA9PT1vKXJldHVybiB2b2lkIHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVTdHlsZXMoaSx0KTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Zm9yKGxldCB0PTA7dDxvO3QrKyl7Y29uc3QgZT1yW3RdO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxhLnRleHRDb250ZW50Kz1lLnRleHRDb250ZW50fSh0PT57QlF0LmZvckVhY2goKGU9Pntjb25zdCBuPU5RdC5nZXQoT1F0KGUsdCkpO3ZvaWQgMCE9PW4mJm4ua2V5U3RyaW5nLmZvckVhY2goKHQ9Pntjb25zdHtlbGVtZW50Ontjb250ZW50OmV9fT10LG49bmV3IFNldDtBcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKSkuZm9yRWFjaCgodD0+e24uYWRkKHQpfSkpLHhRdCh0LG4pfSkpfSkpfSkodCk7Y29uc3Qgcz1pLmNvbnRlbnQ7bj8oZnVuY3Rpb24gbCh0LGUsbj1udWxsKXtjb25zdHtlbGVtZW50Ontjb250ZW50Oml9LHBhcnRzOnJ9PXQ7aWYobnVsbD09bilyZXR1cm4gdm9pZCBpLmFwcGVuZENoaWxkKGUpO2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihpLDEzMyxudWxsLCExKTtsZXQgYT1TUXQocikscz0wLGw9LTE7Zm9yKDtvLm5leHROb2RlKCk7KWZvcihsKyssby5jdXJyZW50Tm9kZT09PW4mJihzPXdRdChlKSxuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsbikpOy0xIT09YSYmclthXS5pbmRleD09PWw7KXtpZihzPjApe2Zvcig7LTEhPT1hOylyW2FdLmluZGV4Kz1zLGE9U1F0KHIsYSk7cmV0dXJufWE9U1F0KHIsYSl9fSkobixhLHMuZmlyc3RDaGlsZCk6cy5pbnNlcnRCZWZvcmUoYSxzLmZpcnN0Q2hpbGQpLHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVTdHlsZXMoaSx0KTtjb25zdCBjPXMucXVlcnlTZWxlY3Rvcigic3R5bGUiKTtpZih3aW5kb3cuU2hhZHlDU1MubmF0aXZlU2hhZG93JiZudWxsIT09YyllLmluc2VydEJlZm9yZShjLmNsb25lTm9kZSghMCksZS5maXJzdENoaWxkKTtlbHNlIGlmKG4pe3MuaW5zZXJ0QmVmb3JlKGEscy5maXJzdENoaWxkKTtjb25zdCB0PW5ldyBTZXQ7dC5hZGQoYSkseFF0KG4sdCl9fTt3aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eT0odCxlKT0+dDtjb25zdCBWUXQ9e3RvQXR0cmlidXRlKHQsZSl7c3dpdGNoKGUpe2Nhc2UgQm9vbGVhbjpyZXR1cm4gdD8iIjpudWxsO2Nhc2UgT2JqZWN0OmNhc2UgQXJyYXk6cmV0dXJuIG51bGw9PXQ/dDpKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gdH0sZnJvbUF0dHJpYnV0ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIG51bGwhPT10O2Nhc2UgTnVtYmVyOnJldHVybiBudWxsPT09dD9udWxsOk51bWJlcih0KTtjYXNlIE9iamVjdDpjYXNlIEFycmF5OnJldHVybiBKU09OLnBhcnNlKHQpfXJldHVybiB0fX0sVVF0PSh0LGUpPT5lIT09dCYmKGU9PWV8fHQ9PXQpLGpRdD17YXR0cmlidXRlOiEwLHR5cGU6U3RyaW5nLGNvbnZlcnRlcjpWUXQscmVmbGVjdDohMSxoYXNDaGFuZ2VkOlVRdH0sR1F0PSJmaW5hbGl6ZWQiO2NsYXNzIFdRdCBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmluaXRpYWxpemUoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3RoaXMuZmluYWxpemUoKTtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9jbGFzc1Byb3BlcnRpZXMuZm9yRWFjaCgoKGUsbik9Pntjb25zdCBpPXRoaXMuX2F0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eShuLGUpO3ZvaWQgMCE9PWkmJih0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLnNldChpLG4pLHQucHVzaChpKSl9KSksdH1zdGF0aWMgX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9jbGFzc1Byb3BlcnRpZXMiLHRoaXMpKSl7dGhpcy5fY2xhc3NQcm9wZXJ0aWVzPW5ldyBNYXA7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2NsYXNzUHJvcGVydGllczt2b2lkIDAhPT10JiZ0LmZvckVhY2goKCh0LGUpPT50aGlzLl9jbGFzc1Byb3BlcnRpZXMuc2V0KGUsdCkpKX19c3RhdGljIGNyZWF0ZVByb3BlcnR5KHQsZT1qUXQpe2lmKHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2NsYXNzUHJvcGVydGllcy5zZXQodCxlKSxlLm5vQWNjZXNzb3J8fHRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KHQpKXJldHVybjtjb25zdCBuPSJzeW1ib2wiPT10eXBlb2YgdD9TeW1ib2woKTpgX18ke3R9YCxpPXRoaXMuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsbixlKTt2b2lkIDAhPT1pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wcm90b3R5cGUsdCxpKX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsZSxuKXtyZXR1cm57Z2V0KCl7cmV0dXJuIHRoaXNbZV19LHNldChpKXtjb25zdCByPXRoaXNbdF07dGhpc1tlXT1pLHRoaXMucmVxdWVzdFVwZGF0ZUludGVybmFsKHQscixuKX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9fXN0YXRpYyBnZXRQcm9wZXJ0eU9wdGlvbnModCl7cmV0dXJuIHRoaXMuX2NsYXNzUHJvcGVydGllcyYmdGhpcy5fY2xhc3NQcm9wZXJ0aWVzLmdldCh0KXx8alF0fXN0YXRpYyBmaW5hbGl6ZSgpe2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKHQuaGFzT3duUHJvcGVydHkoR1F0KXx8dC5maW5hbGl6ZSgpLHRoaXMuZmluYWxpemVkPSEwLHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXA9bmV3IE1hcCx0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInByb3BlcnRpZXMiLHRoaXMpKSl7Y29uc3QgdD10aGlzLnByb3BlcnRpZXMsZT1bLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksLi4uImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTpbXV07Zm9yKGNvbnN0IG4gb2YgZSl0aGlzLmNyZWF0ZVByb3BlcnR5KG4sdFtuXSl9fXN0YXRpYyBfYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQsZSl7Y29uc3Qgbj1lLmF0dHJpYnV0ZTtyZXR1cm4hMT09PW4/dm9pZCAwOiJzdHJpbmciPT10eXBlb2Ygbj9uOiJzdHJpbmciPT10eXBlb2YgdD90LnRvTG93ZXJDYXNlKCk6dm9pZCAwfXN0YXRpYyBfdmFsdWVIYXNDaGFuZ2VkKHQsZSxuPVVRdCl7cmV0dXJuIG4odCxlKX1zdGF0aWMgX3Byb3BlcnR5VmFsdWVGcm9tQXR0cmlidXRlKHQsZSl7Y29uc3Qgbj1lLmNvbnZlcnRlcnx8VlF0LGk9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpuLmZyb21BdHRyaWJ1dGU7cmV0dXJuIGk/aSh0LGUudHlwZSk6dH1zdGF0aWMgX3Byb3BlcnR5VmFsdWVUb0F0dHJpYnV0ZSh0LGUpe2lmKHZvaWQgMD09PWUucmVmbGVjdClyZXR1cm47Y29uc3Qgbj1lLmNvbnZlcnRlcjtyZXR1cm4obiYmbi50b0F0dHJpYnV0ZXx8VlF0LnRvQXR0cmlidXRlKSh0LGUudHlwZSl9aW5pdGlhbGl6ZSgpe3RoaXMuX3VwZGF0ZVN0YXRlPTAsdGhpcy5fdXBkYXRlUHJvbWlzZT1uZXcgUHJvbWlzZSgodD0+dGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcj10KSksdGhpcy5fY2hhbmdlZFByb3BlcnRpZXM9bmV3IE1hcCx0aGlzLl9zYXZlSW5zdGFuY2VQcm9wZXJ0aWVzKCksdGhpcy5yZXF1ZXN0VXBkYXRlSW50ZXJuYWwoKX1fc2F2ZUluc3RhbmNlUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuX2NsYXNzUHJvcGVydGllcy5mb3JFYWNoKCgodCxlKT0+e2lmKHRoaXMuaGFzT3duUHJvcGVydHkoZSkpe2NvbnN0IHQ9dGhpc1tlXTtkZWxldGUgdGhpc1tlXSx0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXN8fCh0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXM9bmV3IE1hcCksdGhpcy5faW5zdGFuY2VQcm9wZXJ0aWVzLnNldChlLHQpfX0pKX1fYXBwbHlJbnN0YW5jZVByb3BlcnRpZXMoKXt0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXMuZm9yRWFjaCgoKHQsZSk9PnRoaXNbZV09dCkpLHRoaXMuX2luc3RhbmNlUHJvcGVydGllcz12b2lkIDB9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLmVuYWJsZVVwZGF0aW5nKCl9ZW5hYmxlVXBkYXRpbmcoKXt2b2lkIDAhPT10aGlzLl9lbmFibGVVcGRhdGluZ1Jlc29sdmVyJiYodGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcigpLHRoaXMuX2VuYWJsZVVwZGF0aW5nUmVzb2x2ZXI9dm9pZCAwKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe31hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe2UhPT1uJiZ0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsbil9X3Byb3BlcnR5VG9BdHRyaWJ1dGUodCxlLG49alF0KXtjb25zdCBpPXRoaXMuY29uc3RydWN0b3Iscj1pLl9hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCxuKTtpZih2b2lkIDAhPT1yKXtjb25zdCB0PWkuX3Byb3BlcnR5VmFsdWVUb0F0dHJpYnV0ZShlLG4pO2lmKHZvaWQgMD09PXQpcmV0dXJuO3RoaXMuX3VwZGF0ZVN0YXRlPTh8dGhpcy5fdXBkYXRlU3RhdGUsbnVsbD09dD90aGlzLnJlbW92ZUF0dHJpYnV0ZShyKTp0aGlzLnNldEF0dHJpYnV0ZShyLHQpLHRoaXMuX3VwZGF0ZVN0YXRlPS05JnRoaXMuX3VwZGF0ZVN0YXRlfX1fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LGUpe2lmKDgmdGhpcy5fdXBkYXRlU3RhdGUpcmV0dXJuO2NvbnN0IG49dGhpcy5jb25zdHJ1Y3RvcixpPW4uX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuZ2V0KHQpO2lmKHZvaWQgMCE9PWkpe2NvbnN0IHQ9bi5nZXRQcm9wZXJ0eU9wdGlvbnMoaSk7dGhpcy5fdXBkYXRlU3RhdGU9MTZ8dGhpcy5fdXBkYXRlU3RhdGUsdGhpc1tpXT1uLl9wcm9wZXJ0eVZhbHVlRnJvbUF0dHJpYnV0ZShlLHQpLHRoaXMuX3VwZGF0ZVN0YXRlPS0xNyZ0aGlzLl91cGRhdGVTdGF0ZX19cmVxdWVzdFVwZGF0ZUludGVybmFsKHQsZSxuKXtsZXQgaT0hMDtpZih2b2lkIDAhPT10KXtjb25zdCByPXRoaXMuY29uc3RydWN0b3I7bj1ufHxyLmdldFByb3BlcnR5T3B0aW9ucyh0KSxyLl92YWx1ZUhhc0NoYW5nZWQodGhpc1t0XSxlLG4uaGFzQ2hhbmdlZCk/KHRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzLmhhcyh0KXx8dGhpcy5fY2hhbmdlZFByb3BlcnRpZXMuc2V0KHQsZSksITAhPT1uLnJlZmxlY3R8fDE2JnRoaXMuX3VwZGF0ZVN0YXRlfHwodm9pZCAwPT09dGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMmJih0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcz1uZXcgTWFwKSx0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcy5zZXQodCxuKSkpOmk9ITF9IXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZSYmaSYmKHRoaXMuX3VwZGF0ZVByb21pc2U9dGhpcy5fZW5xdWV1ZVVwZGF0ZSgpKX1yZXF1ZXN0VXBkYXRlKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdFVwZGF0ZUludGVybmFsKHQsZSksdGhpcy51cGRhdGVDb21wbGV0ZX1hc3luYyBfZW5xdWV1ZVVwZGF0ZSgpe3RoaXMuX3VwZGF0ZVN0YXRlPTR8dGhpcy5fdXBkYXRlU3RhdGU7dHJ5e2F3YWl0IHRoaXMuX3VwZGF0ZVByb21pc2V9Y2F0Y2godCl7fWNvbnN0IHQ9dGhpcy5wZXJmb3JtVXBkYXRlKCk7cmV0dXJuIG51bGwhPXQmJmF3YWl0IHQsIXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZX1nZXQgX2hhc1JlcXVlc3RlZFVwZGF0ZSgpe3JldHVybiA0JnRoaXMuX3VwZGF0ZVN0YXRlfWdldCBoYXNVcGRhdGVkKCl7cmV0dXJuIDEmdGhpcy5fdXBkYXRlU3RhdGV9cGVyZm9ybVVwZGF0ZSgpe2lmKCF0aGlzLl9oYXNSZXF1ZXN0ZWRVcGRhdGUpcmV0dXJuO3RoaXMuX2luc3RhbmNlUHJvcGVydGllcyYmdGhpcy5fYXBwbHlJbnN0YW5jZVByb3BlcnRpZXMoKTtsZXQgdD0hMTtjb25zdCBlPXRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzO3RyeXt0PXRoaXMuc2hvdWxkVXBkYXRlKGUpLHQ/dGhpcy51cGRhdGUoZSk6dGhpcy5fbWFya1VwZGF0ZWQoKX1jYXRjaChlKXt0aHJvdyB0PSExLHRoaXMuX21hcmtVcGRhdGVkKCksZX10JiYoMSZ0aGlzLl91cGRhdGVTdGF0ZXx8KHRoaXMuX3VwZGF0ZVN0YXRlPTF8dGhpcy5fdXBkYXRlU3RhdGUsdGhpcy5maXJzdFVwZGF0ZWQoZSkpLHRoaXMudXBkYXRlZChlKSl9X21hcmtVcGRhdGVkKCl7dGhpcy5fY2hhbmdlZFByb3BlcnRpZXM9bmV3IE1hcCx0aGlzLl91cGRhdGVTdGF0ZT0tNSZ0aGlzLl91cGRhdGVTdGF0ZX1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5fZ2V0VXBkYXRlQ29tcGxldGUoKX1fZ2V0VXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdldFVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2V9c2hvdWxkVXBkYXRlKHQpe3JldHVybiEwfXVwZGF0ZSh0KXt2b2lkIDAhPT10aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcyYmdGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuc2l6ZT4wJiYodGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3Byb3BlcnR5VG9BdHRyaWJ1dGUoZSx0aGlzW2VdLHQpKSksdGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXM9dm9pZCAwKSx0aGlzLl9tYXJrVXBkYXRlZCgpfXVwZGF0ZWQodCl7fWZpcnN0VXBkYXRlZCh0KXt9fVdRdC5maW5hbGl6ZWQ9ITA7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxOSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBxUXQ9d2luZG93LlNoYWRvd1Jvb3QmJih2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1N8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUsWVF0PVN5bWJvbCgpO2NsYXNzIFhRdHtjb25zdHJ1Y3Rvcih0LGUpe2lmKGUhPT1ZUXQpdGhyb3cgbmV3IEVycm9yKCJDU1NSZXN1bHQgaXMgbm90IGNvbnN0cnVjdGFibGUuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYCBpbnN0ZWFkLiIpO3RoaXMuY3NzVGV4dD10fWdldCBzdHlsZVNoZWV0KCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX3N0eWxlU2hlZXQmJihxUXQ/KHRoaXMuX3N0eWxlU2hlZXQ9bmV3IENTU1N0eWxlU2hlZXQsdGhpcy5fc3R5bGVTaGVldC5yZXBsYWNlU3luYyh0aGlzLmNzc1RleHQpKTp0aGlzLl9zdHlsZVNoZWV0PW51bGwpLHRoaXMuX3N0eWxlU2hlZXR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jc3NUZXh0fX1jb25zdCAkUXQ9KHQsLi4uZSk9Pntjb25zdCBuPWUucmVkdWNlKCgoZSxuLGkpPT5lKyh0PT57aWYodCBpbnN0YW5jZW9mIFhRdClyZXR1cm4gdC5jc3NUZXh0O2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIHBhc3NlZCB0byAnY3NzJyBmdW5jdGlvbiBtdXN0IGJlIGEgJ2NzcycgZnVuY3Rpb24gcmVzdWx0OiAke3R9LiBVc2UgJ3Vuc2FmZUNTUycgdG8gcGFzcyBub24tbGl0ZXJhbCB2YWx1ZXMsIGJ1dFxuICAgICAgICAgICAgdGFrZSBjYXJlIHRvIGVuc3VyZSBwYWdlIHNlY3VyaXR5LmApfSkobikrdFtpKzFdKSx0WzBdKTtyZXR1cm4gbmV3IFhRdChuLFlRdCl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCih3aW5kb3cubGl0RWxlbWVudFZlcnNpb25zfHwod2luZG93LmxpdEVsZW1lbnRWZXJzaW9ucz1bXSkpLnB1c2goIjIuNS4xIik7Y29uc3QgS1F0PXt9O2NsYXNzIFpRdCBleHRlbmRzIFdRdHtzdGF0aWMgZ2V0U3R5bGVzKCl7cmV0dXJuIHRoaXMuc3R5bGVzfXN0YXRpYyBfZ2V0VW5pcXVlU3R5bGVzKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfc3R5bGVzIix0aGlzKSkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nZXRTdHlsZXMoKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPSh0LG4pPT50LnJlZHVjZVJpZ2h0KCgodCxuKT0+QXJyYXkuaXNBcnJheShuKT9lKG4sdCk6KHQuYWRkKG4pLHQpKSxuKSxuPWUodCxuZXcgU2V0KSxpPVtdO24uZm9yRWFjaCgodD0+aS51bnNoaWZ0KHQpKSksdGhpcy5fc3R5bGVzPWl9ZWxzZSB0aGlzLl9zdHlsZXM9dm9pZCAwPT09dD9bXTpbdF07dGhpcy5fc3R5bGVzPXRoaXMuX3N0eWxlcy5tYXAoKHQ9PntpZih0IGluc3RhbmNlb2YgQ1NTU3R5bGVTaGVldCYmIXFRdCl7cmV0dXJuKHQ9Pm5ldyBYUXQoU3RyaW5nKHQpLFlRdCkpKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuY3NzUnVsZXMpLnJlZHVjZSgoKHQsZSk9PnQrZS5jc3NUZXh0KSwiIikpfXJldHVybiB0fSkpfWluaXRpYWxpemUoKXtzdXBlci5pbml0aWFsaXplKCksdGhpcy5jb25zdHJ1Y3Rvci5fZ2V0VW5pcXVlU3R5bGVzKCksdGhpcy5yZW5kZXJSb290PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpLHdpbmRvdy5TaGFkb3dSb290JiZ0aGlzLnJlbmRlclJvb3QgaW5zdGFuY2VvZiB3aW5kb3cuU2hhZG93Um9vdCYmdGhpcy5hZG9wdFN0eWxlcygpfWNyZWF0ZVJlbmRlclJvb3QoKXtyZXR1cm4gdGhpcy5hdHRhY2hTaGFkb3codGhpcy5jb25zdHJ1Y3Rvci5zaGFkb3dSb290T3B0aW9ucyl9YWRvcHRTdHlsZXMoKXtjb25zdCB0PXRoaXMuY29uc3RydWN0b3IuX3N0eWxlczswIT09dC5sZW5ndGgmJih2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1N8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3c/cVF0P3RoaXMucmVuZGVyUm9vdC5hZG9wdGVkU3R5bGVTaGVldHM9dC5tYXAoKHQ9PnQgaW5zdGFuY2VvZiBDU1NTdHlsZVNoZWV0P3Q6dC5zdHlsZVNoZWV0KSk6dGhpcy5fbmVlZHNTaGltQWRvcHRlZFN0eWxlU2hlZXRzPSEwOndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbS5wcmVwYXJlQWRvcHRlZENzc1RleHQodC5tYXAoKHQ9PnQuY3NzVGV4dCkpLHRoaXMubG9jYWxOYW1lKSl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaGFzVXBkYXRlZCYmdm9pZCAwIT09d2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpfXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMucmVuZGVyKCk7c3VwZXIudXBkYXRlKHQpLGUhPT1LUXQmJnRoaXMuY29uc3RydWN0b3IucmVuZGVyKGUsdGhpcy5yZW5kZXJSb290LHtzY29wZU5hbWU6dGhpcy5sb2NhbE5hbWUsZXZlbnRDb250ZXh0OnRoaXN9KSx0aGlzLl9uZWVkc1NoaW1BZG9wdGVkU3R5bGVTaGVldHMmJih0aGlzLl9uZWVkc1NoaW1BZG9wdGVkU3R5bGVTaGVldHM9ITEsdGhpcy5jb25zdHJ1Y3Rvci5fc3R5bGVzLmZvckVhY2goKHQ9Pntjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS50ZXh0Q29udGVudD10LmNzc1RleHQsdGhpcy5yZW5kZXJSb290LmFwcGVuZENoaWxkKGUpfSkpKX1yZW5kZXIoKXtyZXR1cm4gS1F0fX1aUXQuZmluYWxpemVkPSEwLFpRdC5yZW5kZXI9KHQsZSxuKT0+e2lmKCFufHwib2JqZWN0IiE9dHlwZW9mIG58fCFuLnNjb3BlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgc2NvcGVOYW1lYCBvcHRpb24gaXMgcmVxdWlyZWQuIik7Y29uc3QgaT1uLnNjb3BlTmFtZSxyPVJRdC5oYXMoZSksbz16UXQmJjExPT09ZS5ub2RlVHlwZSYmISFlLmhvc3QsYT1vJiYhSFF0LmhhcyhpKSxzPWE/ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOmU7aWYoKCh0LGUsbik9PntsZXQgaT1SUXQuZ2V0KGUpO3ZvaWQgMD09PWkmJihoUXQoZSxlLmZpcnN0Q2hpbGQpLFJRdC5zZXQoZSxpPW5ldyBQUXQoT2JqZWN0LmFzc2lnbih7dGVtcGxhdGVGYWN0b3J5OklRdH0sbikpKSxpLmFwcGVuZEludG8oZSkpLGkuc2V0VmFsdWUodCksaS5jb21taXQoKX0pKHQscyxPYmplY3QuYXNzaWduKHt0ZW1wbGF0ZUZhY3Rvcnk6RFF0KGkpfSxuKSksYSl7Y29uc3QgdD1SUXQuZ2V0KHMpO1JRdC5kZWxldGUocyk7RlF0KGkscyx0LnZhbHVlIGluc3RhbmNlb2YgQ1F0P3QudmFsdWUudGVtcGxhdGU6dm9pZCAwKSxoUXQoZSxlLmZpcnN0Q2hpbGQpLGUuYXBwZW5kQ2hpbGQocyksUlF0LnNldChlLHQpfSFyJiZvJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KGUuaG9zdCl9LFpRdC5zaGFkb3dSb290T3B0aW9ucz17bW9kZToib3BlbiJ9O2xldCBKUXQ9MDtjb25zdCBRUXQ9e30sdDF0PSh0LGUsbik9Pntjb25zdCBpPW4mJm4ubW9kdWxlSWR8fCJjdXN0b20tc3R5bGUtbW9kdWxlLSIrSlF0Kys7QXJyYXkuaXNBcnJheShlKXx8KGU9ZT9bZV06W10pLGUuZm9yRWFjaCgodD0+e2lmKCEodCBpbnN0YW5jZW9mIFhRdCkpdGhyb3cgbmV3IEVycm9yKCJBbiBpdGVtIGluIHN0eWxlcyBpcyBub3Qgb2YgdHlwZSBDU1NSZXN1bHQuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYC4iKTtpZighUVF0W3RdKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKTtlLmlubmVySFRNTD1gXG4gICAgICAgIDx0ZW1wbGF0ZT5cbiAgICAgICAgICA8c3R5bGU+JHt0LnRvU3RyaW5nKCl9PC9zdHlsZT5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIGA7Y29uc3Qgbj0iY3VzdG9tLXN0eWxlLW1vZHVsZS0iK0pRdCsrO2UucmVnaXN0ZXIobiksUVF0W3RdPW59fSkpO2NvbnN0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZG9tLW1vZHVsZSIpO2lmKHQpe2NvbnN0IGU9Y3VzdG9tRWxlbWVudHMuZ2V0KHQpO2UmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfX2ZpbmFsaXplZCIpJiZjb25zb2xlLndhcm4oYFRoZSBjdXN0b20gZWxlbWVudCBkZWZpbml0aW9uIGZvciAiJHt0fSJcbiAgICAgIHdhcyBmaW5hbGl6ZWQgYmVmb3JlIGEgc3R5bGUgbW9kdWxlIHdhcyByZWdpc3RlcmVkLlxuICAgICAgTWFrZSBzdXJlIHRvIGFkZCBjb21wb25lbnQgc3BlY2lmaWMgc3R5bGUgbW9kdWxlcyBiZWZvcmVcbiAgICAgIGltcG9ydGluZyB0aGUgY29ycmVzcG9uZGluZyBjdXN0b20gZWxlbWVudC5gKSxyLnNldEF0dHJpYnV0ZSgidGhlbWUtZm9yIix0KX1yLmlubmVySFRNTD1gXG4gICAgPHRlbXBsYXRlPlxuICAgICAgJHsobiYmbi5pbmNsdWRlfHxbXSkubWFwKCh0PT5gPHN0eWxlIGluY2x1ZGU9JHt0fT48L3N0eWxlPmApKX1cbiAgICAgICR7ZS5tYXAoKHQ9PmA8c3R5bGUgaW5jbHVkZT0ke1FRdFt0XX0+PC9zdHlsZT5gKSl9XG4gICAgPC90ZW1wbGF0ZT5cbiAgYCxyLnJlZ2lzdGVyKGkpfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY2xhc3MgZTF0IGV4dGVuZHMgSFRNTEVsZW1lbnR7c3RhdGljIGdldCB2ZXJzaW9uKCl7cmV0dXJuIjIwLjAuMiJ9fWN1c3RvbUVsZW1lbnRzLmRlZmluZSgidmFhZGluLWx1bW8tc3R5bGVzIixlMXQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCBuMXQ9JFF0YAogIDpob3N0IHsKICAgIC8qIEJhc2UgKGJhY2tncm91bmQpICovCiAgICAtLWx1bW8tYmFzZS1jb2xvcjogI2ZmZjsKCiAgICAvKiBUaW50ICovCiAgICAtLWx1bW8tdGludC01cGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjMpOwogICAgLS1sdW1vLXRpbnQtMTBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMzcpOwogICAgLS1sdW1vLXRpbnQtMjBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNDQpOwogICAgLS1sdW1vLXRpbnQtMzBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNSk7CiAgICAtLWx1bW8tdGludC00MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC41Nyk7CiAgICAtLWx1bW8tdGludC01MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC42NCk7CiAgICAtLWx1bW8tdGludC02MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC43KTsKICAgIC0tbHVtby10aW50LTcwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjc3KTsKICAgIC0tbHVtby10aW50LTgwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjg0KTsKICAgIC0tbHVtby10aW50LTkwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjkpOwogICAgLS1sdW1vLXRpbnQ6ICNmZmY7CgogICAgLyogU2hhZGUgKi8KICAgIC0tbHVtby1zaGFkZS01cGN0OiBoc2xhKDIxNCwgNjElLCAyNSUsIDAuMDUpOwogICAgLS1sdW1vLXNoYWRlLTEwcGN0OiBoc2xhKDIxNCwgNTclLCAyNCUsIDAuMSk7CiAgICAtLWx1bW8tc2hhZGUtMjBwY3Q6IGhzbGEoMjE0LCA1MyUsIDIzJSwgMC4xNik7CiAgICAtLWx1bW8tc2hhZGUtMzBwY3Q6IGhzbGEoMjE0LCA1MCUsIDIyJSwgMC4yNik7CiAgICAtLWx1bW8tc2hhZGUtNDBwY3Q6IGhzbGEoMjE0LCA0NyUsIDIxJSwgMC4zOCk7CiAgICAtLWx1bW8tc2hhZGUtNTBwY3Q6IGhzbGEoMjE0LCA0NSUsIDIwJSwgMC41KTsKICAgIC0tbHVtby1zaGFkZS02MHBjdDogaHNsYSgyMTQsIDQzJSwgMTklLCAwLjYxKTsKICAgIC0tbHVtby1zaGFkZS03MHBjdDogaHNsYSgyMTQsIDQyJSwgMTglLCAwLjcyKTsKICAgIC0tbHVtby1zaGFkZS04MHBjdDogaHNsYSgyMTQsIDQxJSwgMTclLCAwLjgzKTsKICAgIC0tbHVtby1zaGFkZS05MHBjdDogaHNsYSgyMTQsIDQwJSwgMTYlLCAwLjk0KTsKICAgIC0tbHVtby1zaGFkZTogaHNsKDIxNCwgMzUlLCAxNSUpOwoKICAgIC8qIENvbnRyYXN0ICovCiAgICAtLWx1bW8tY29udHJhc3QtNXBjdDogdmFyKC0tbHVtby1zaGFkZS01cGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0xMHBjdDogdmFyKC0tbHVtby1zaGFkZS0xMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMjBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTMwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTMwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC00MHBjdDogdmFyKC0tbHVtby1zaGFkZS00MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNTBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTYwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTYwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC03MHBjdDogdmFyKC0tbHVtby1zaGFkZS03MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtODBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtODBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTkwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTkwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdDogdmFyKC0tbHVtby1zaGFkZSk7CgogICAgLyogVGV4dCAqLwogICAgLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0KTsKICAgIC0tbHVtby1ib2R5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtOTBwY3QpOwogICAgLS1sdW1vLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTcwcGN0KTsKICAgIC0tbHVtby10ZXJ0aWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTUwcGN0KTsKICAgIC0tbHVtby1kaXNhYmxlZC10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKCiAgICAvKiBQcmltYXJ5ICovCiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvcjogaHNsKDIxNCwgOTAlLCA1MiUpOwogICAgLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3Q6IGhzbGEoMjE0LCA5MCUsIDUyJSwgMC41KTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTEwcGN0OiBoc2xhKDIxNCwgOTAlLCA1MiUsIDAuMSk7CiAgICAtLWx1bW8tcHJpbWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3IpOwogICAgLS1sdW1vLXByaW1hcnktY29udHJhc3QtY29sb3I6ICNmZmY7CgogICAgLyogRXJyb3IgKi8KICAgIC0tbHVtby1lcnJvci1jb2xvcjogaHNsKDMsIDEwMCUsIDYxJSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItNTBwY3Q6IGhzbGEoMywgMTAwJSwgNjAlLCAwLjUpOwogICAgLS1sdW1vLWVycm9yLWNvbG9yLTEwcGN0OiBoc2xhKDMsIDEwMCUsIDYwJSwgMC4xKTsKICAgIC0tbHVtby1lcnJvci10ZXh0LWNvbG9yOiBoc2woMywgOTIlLCA1MyUpOwogICAgLS1sdW1vLWVycm9yLWNvbnRyYXN0LWNvbG9yOiAjZmZmOwoKICAgIC8qIFN1Y2Nlc3MgKi8KICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yOiBoc2woMTQ1LCA4MCUsIDQyJSk7IC8qIGhzbCgxNDQsODIlLDM3JSk7ICovCiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci01MHBjdDogaHNsYSgxNDUsIDc2JSwgNDQlLCAwLjU1KTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTEwcGN0OiBoc2xhKDE0NSwgNzYlLCA0NCUsIDAuMTIpOwogICAgLS1sdW1vLXN1Y2Nlc3MtdGV4dC1jb2xvcjogaHNsKDE0NSwgMTAwJSwgMzIlKTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbnRyYXN0LWNvbG9yOiAjZmZmOwogIH0KYCxpMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtpMXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtuMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChpMXQuY29udGVudCk7dDF0KCIiLCRRdGAKICBbdGhlbWV+PSdkYXJrJ10gewogICAgLyogQmFzZSAoYmFja2dyb3VuZCkgKi8KICAgIC0tbHVtby1iYXNlLWNvbG9yOiBoc2woMjE0LCAzNSUsIDIxJSk7CgogICAgLyogVGludCAqLwogICAgLS1sdW1vLXRpbnQtNXBjdDogaHNsYSgyMTQsIDY1JSwgODUlLCAwLjA2KTsKICAgIC0tbHVtby10aW50LTEwcGN0OiBoc2xhKDIxNCwgNjAlLCA4MCUsIDAuMTQpOwogICAgLS1sdW1vLXRpbnQtMjBwY3Q6IGhzbGEoMjE0LCA2NCUsIDgyJSwgMC4yMyk7CiAgICAtLWx1bW8tdGludC0zMHBjdDogaHNsYSgyMTQsIDY5JSwgODQlLCAwLjMyKTsKICAgIC0tbHVtby10aW50LTQwcGN0OiBoc2xhKDIxNCwgNzMlLCA4NiUsIDAuNDEpOwogICAgLS1sdW1vLXRpbnQtNTBwY3Q6IGhzbGEoMjE0LCA3OCUsIDg4JSwgMC41KTsKICAgIC0tbHVtby10aW50LTYwcGN0OiBoc2xhKDIxNCwgODIlLCA5MCUsIDAuNik7CiAgICAtLWx1bW8tdGludC03MHBjdDogaHNsYSgyMTQsIDg3JSwgOTIlLCAwLjcpOwogICAgLS1sdW1vLXRpbnQtODBwY3Q6IGhzbGEoMjE0LCA5MSUsIDk0JSwgMC44KTsKICAgIC0tbHVtby10aW50LTkwcGN0OiBoc2xhKDIxNCwgOTYlLCA5NiUsIDAuOSk7CiAgICAtLWx1bW8tdGludDogaHNsKDIxNCwgMTAwJSwgOTglKTsKCiAgICAvKiBTaGFkZSAqLwogICAgLS1sdW1vLXNoYWRlLTVwY3Q6IGhzbGEoMjE0LCAwJSwgMCUsIDAuMDcpOwogICAgLS1sdW1vLXNoYWRlLTEwcGN0OiBoc2xhKDIxNCwgNCUsIDIlLCAwLjE1KTsKICAgIC0tbHVtby1zaGFkZS0yMHBjdDogaHNsYSgyMTQsIDglLCA0JSwgMC4yMyk7CiAgICAtLWx1bW8tc2hhZGUtMzBwY3Q6IGhzbGEoMjE0LCAxMiUsIDYlLCAwLjMyKTsKICAgIC0tbHVtby1zaGFkZS00MHBjdDogaHNsYSgyMTQsIDE2JSwgOCUsIDAuNDEpOwogICAgLS1sdW1vLXNoYWRlLTUwcGN0OiBoc2xhKDIxNCwgMjAlLCAxMCUsIDAuNSk7CiAgICAtLWx1bW8tc2hhZGUtNjBwY3Q6IGhzbGEoMjE0LCAyNCUsIDEyJSwgMC42KTsKICAgIC0tbHVtby1zaGFkZS03MHBjdDogaHNsYSgyMTQsIDI4JSwgMTMlLCAwLjcpOwogICAgLS1sdW1vLXNoYWRlLTgwcGN0OiBoc2xhKDIxNCwgMzIlLCAxMyUsIDAuOCk7CiAgICAtLWx1bW8tc2hhZGUtOTBwY3Q6IGhzbGEoMjE0LCAzMyUsIDEzJSwgMC45KTsKICAgIC0tbHVtby1zaGFkZTogaHNsKDIxNCwgMzMlLCAxMyUpOwoKICAgIC8qIENvbnRyYXN0ICovCiAgICAtLWx1bW8tY29udHJhc3QtNXBjdDogdmFyKC0tbHVtby10aW50LTVwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTEwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTIwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTMwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTQwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNDBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTUwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTYwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTcwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTgwcGN0OiB2YXIoLS1sdW1vLXRpbnQtODBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTkwcGN0OiB2YXIoLS1sdW1vLXRpbnQtOTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0OiB2YXIoLS1sdW1vLXRpbnQpOwoKICAgIC8qIFRleHQgKi8KICAgIC0tbHVtby1oZWFkZXItdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdCk7CiAgICAtLWx1bW8tYm9keS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTkwcGN0KTsKICAgIC0tbHVtby1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC03MHBjdCk7CiAgICAtLWx1bW8tdGVydGlhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC01MHBjdCk7CiAgICAtLWx1bW8tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CgogICAgLyogUHJpbWFyeSAqLwogICAgLS1sdW1vLXByaW1hcnktY29sb3I6IGhzbCgyMTQsIDg2JSwgNTUlKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0OiBoc2xhKDIxNCwgODYlLCA1NSUsIDAuNSk7CiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdDogaHNsYSgyMTQsIDkwJSwgNjMlLCAwLjEpOwogICAgLS1sdW1vLXByaW1hcnktdGV4dC1jb2xvcjogaHNsKDIxNCwgMTAwJSwgNzAlKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yOiAjZmZmOwoKICAgIC8qIEVycm9yICovCiAgICAtLWx1bW8tZXJyb3ItY29sb3I6IGhzbCgzLCA5MCUsIDYzJSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItNTBwY3Q6IGhzbGEoMywgOTAlLCA2MyUsIDAuNSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItMTBwY3Q6IGhzbGEoMywgOTAlLCA2MyUsIDAuMSk7CiAgICAtLWx1bW8tZXJyb3ItdGV4dC1jb2xvcjogaHNsKDMsIDEwMCUsIDY3JSk7CgogICAgLyogU3VjY2VzcyAqLwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3I6IGhzbCgxNDUsIDY1JSwgNDIlKTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTUwcGN0OiBoc2xhKDE0NSwgNjUlLCA0MiUsIDAuNSk7CiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci0xMHBjdDogaHNsYSgxNDUsIDY1JSwgNDIlLCAwLjEpOwogICAgLS1sdW1vLXN1Y2Nlc3MtdGV4dC1jb2xvcjogaHNsKDE0NSwgODUlLCA0NyUpOwogIH0KCiAgaHRtbCB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICB9CgogIFt0aGVtZX49J2RhcmsnXSB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICB9CgogIGgxLAogIGgyLAogIGgzLAogIGg0LAogIGg1LAogIGg2IHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yKTsKICB9CgogIGEgewogICAgY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS10ZXh0LWNvbG9yKTsKICB9CgogIGJsb2NrcXVvdGUgewogICAgY29sb3I6IHZhcigtLWx1bW8tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogIH0KCiAgY29kZSwKICBwcmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtbSk7CiAgfQpgLHttb2R1bGVJZDoibHVtby1jb2xvciJ9KTt0MXQoIiIsJFF0YAogIDpob3N0IHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcikgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcikgIWltcG9ydGFudDsKICB9CmAse21vZHVsZUlkOiJsdW1vLWNvbG9yLWxlZ2FjeSIsaW5jbHVkZTpbImx1bW8tY29sb3IiXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCByMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyMXQuaW5uZXJIVE1MPSdcbiAgPHN0eWxlPlxuICAgIEBmb250LWZhY2Uge1xuICAgICAgZm9udC1mYW1pbHk6IFwnbHVtby1pY29uc1wnO1xuICAgICAgc3JjOiB1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUJFY0FBc0FBQUFBSWl3QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJIVTFWQ0FBQUJDQUFBQURzQUFBQlVJSXNsZWs5VEx6SUFBQUZFQUFBQVF3QUFBRlpBSVV1S1kyMWhjQUFBQVlnQUFBRDRBQUFEcnNDVThkNW5iSGxtQUFBQ2dBQUFDMk1BQUJkNGg5VG8yV2hsWVdRQUFBM2tBQUFBTUFBQUFEWmEvNlNzYUdobFlRQUFEaFFBQUFBZEFBQUFKQWJwQTM1b2JYUjRBQUFPTkFBQUFCQUFBQUNzcEJBQUFHeHZZMkVBQUE1RUFBQUFXQUFBQUZoNTVJQXNiV0Y0Y0FBQURwd0FBQUFmQUFBQUlBRktBWEJ1WVcxbEFBQU92QUFBQVRFQUFBSXVVVUpaQ0hCdmMzUUFBQS93QUFBQkt3QUFBZWxtOFN6VmVKeGpZR1JnWU9CaU1HQ3dZMkJ5Y2ZNSlllRExTU3pKWTVCaVlHR0FBSkE4TXBzeEp6TTlrWUVEeGdQS3NZQnBEaUJtZzRnQ0FDWTdCVWdBZUp4allHUyt5RGlCZ1pXQmdhbUthUThEQTBNUGhHWjh3R0RJeUFRVVpXQmxac0FLQXRKY1V4Z2NYakcrMG1JTytwL0ZFTVVjeERBTktNd0lrZ01BQm44TUxRQjRuTzNTV1c2RE1BQkYwVXR3Q0VuSVBNL3poTEs4THFoZlhSeWJTUDE0WFVZdEhWOWhHWVF3UUJOSW8zY1VJUGtoUWVNN3JpYjFla3FuWGc5ODFYdUMxcXZ5ODRsem9qbGVoM3B1eEwwaFBqR2pSVTQ3M3RlbG9FZWZBVU5Hakprd1pjYWNCVXRXck5td1pjZWVBMGRPbkxsdzVjYWRCMDllbFBHaEdmK2owTlRJLzY1S2ZYZXJUNkpocUtucFJLdGdPcHVxYVRydEtqUFVscUhtaHRvMjFJN3BMNmk2aGxxWTNxN3FHV3JmVUFlR09qVFVrYUdPRFhWaXFGTkRuUm5xM0ZBWGhybzAxSldocmcxMVk2aGJROTBaNnQ1UUQ0WjZOTlNUb1o0TjlXS29WME85R2VyZFVCK0cralRVbDZHV1J2a0wyNEJrRVhpY3RWaDliRnZWRmIvbnh2YnorN1JmL042ekhjZDJiQ2ZQK1dnYzFaOU4wanBObkVMNmtiUlZTNkhBMmhRWUdoOVRHUjFDYkNxYTJyWHJXT2tRRS9zSE5KZ210WnZvVk5acUUxQjFETkh4elRReENlaFVUWWlKVFF5RU51aTBxU0xlenIzUGR1eVFmZ21SV09mZGU4Kzk1NTF6N3Jubi9PNGpMb0ovYlJQMFVhS1FNTEZKanBCQXZwaExaQzNEazBvazdXQnpSMi91cEpzN1J5dy9uZkZibG4vdXVOL2FwQ3Z3cktMclN2VXFSdWZibTVwbjBmczB3NGdZeG5HVlA2cUhuTzRiV2lEUUdRZ3d0UzZsbTNsQjNRb1gxTTJ2d0VtdXppckYzOXkrRXMyK0RKOGQxcGt5cUJJcW96ZTNEMStaejREckZvYXp4SThkV3dNckRsWjJETXFRQVI5QVJPc0pVKzJjbWxUUGF6VGNvNTJGMXhUYTJhMitLOHZ2cTkyZFZIbXRMb1BlUVgvQVpQUllHdGhEWU9lWmpCaktvRnNWR3VsUjNsV1U5NVdlQ0s0NHFIVTdNaFdVR1VLWkRUM29LVWNHMkdXdWgrRUREZlVZQS9qaEFobDBUT3NKTllTRXU3bVFtaTNVemZYd1pLQTRCc1ZzSExYUVlHZ1JXOTV1RXRwSjFWZm45WGlMcmlSQmxGRXF4c0RqQTA5eUNOVW9ReHh3ZDdLV1NUdDJ5M0dUS2lmbHFIUlNvV1pjM20xMVdhL2ZKZEZnWEQ0c1NZZmxlSkJLZDhHTXo3SjhkWm4vY0dSQ2NLR0RuQTJHZTNmS3pjdmxuVEROdGhHV0xYelgvV2FYdFVBbVJnZUxsSFNyMzByMEc5VVRYTWIwQXRtd3pPb3k3M2ZrU2xIWmtkdXcvVFl1VTljQUQ0WXV0UG94VFRzQTM3OTd3VnI0Wi8xTkM1ekFSSHI0dnR4Smp4SWZpWk1oTWtiV2srMTRCbkpaS3dxR1p3RGZzd0x5eFdEU2cxMXJGTEpGN05vcHhqZDFoMS9RT1Qrb2V6Z2Z1M1lxK0hrK2R1ZjV4KzQwbzFHVGthSWdpa0svSUVuQzZhWXhDVUJhWkpTTjRYVFlGalUvWU1OSUtxSndoREdPQ0NJOEZEWG5YbVhqdEdoR0p5U2hxakFPbkJPa1cySkc5UzdHZ1llTVdBVTVKemhuV21CT2FPTStDS0VQb3FTZkZEQzJVbnErRExsVWdVVlVGRkxaR0pnNmp0bG9qc2RzYThrUE9iUHVKZGk1ZG5CZEJzTEpNR1RXRGE0dDJKdnR3dVBvOXMrWTg2c3V2L1czM1FHMXJBYU9BVVYrdng0SzZmMkQwNFBWS2xDN1dMU3JaekFpNDVaVjZsSUM3V29YcW1SeXZVcW9Wd3J6VW9Wc0lqZVRYV1F2K1JINUdUbEJYaUIvSW44bG4wSWJCQ0FGT2FqQUpyZ1pZeU9IV3FPZlVlL2FIakkxMlI2T1FvMWpDZ3QyMTVsKzRmNlhQYiswTU5vdTBWKzQzbjJGNzd0U2ZSYjI0ZDd6aXRnbkttdllIczY5enVnYVB2Qnd2NmlvWGtiMkxkTDY1QXR3NTF1TGtYbHUxYmhNTVJjWFNQY1lvcUtJUmxoMzRsUVA4LzVKYnVVRnllNHZ4RDYvNk14RkYxMUMwdVZMcjlVbGd3NDR0UzNwTVZpTkxVRXhieWNGZ0xJY3QrUURNaWJSaW14MXlkVXo4RlhaaXVPSURCT01WWDJuVVpjK2h1TkU1WFVKODF1aUpvaWFid3FhVkYwdWFjS2JhdS9wbDRSMlZXMFhYbEpyYTZib1ZyWUc2NDZURjVOWXp3eTR2akVOVnJEbGNOcFpQbDhESDZYWDhYV0N4MG12V1ZaWTZLRkxydnNZNjYvelBpY3Q1Rm54YU5VUi9qdXZaQ00zVHZENjBFMlcxdFppemJYVFBEdWFiY20wbmJienBXS3BtQTFheUJROGdpZWRMVU0rQTBrTmpCalFqbXVZejdZcmdJWFl2bUY2M1pMQndTWHJwbjlUYjl3d2RkL1UxSDBQTVFLM1hjTzh1bDNXVDdQeVBQZHB5MFRlbUt4TlJjSk5hdWlYSm5uVURwVXBwUVdzNFNuVUl5MEVFU0dZcUpZUUxHSHh6YUdXd1ZJYVM2WTdtUUZNOFpqWURRM2F4amY2MVNXalUzM0p3T1pBMXB3YUcxTDltemY3MWFIUmRYMUpIdzZGcDBhWGhOd2JxeWVHTmc0TmJkekdDQnhvejRaWGp5NE51NjlacjZzRFk2dk1yTFU1bkExUDhKa2JkV1hKNkVSZk1yeXZOaDFKZlE5K1Q0ZEloR3ZLOXczZHhqQkJ6YXRzUS9NbE9IVklEbllwRHo2b2RBWGxRMDF0MlBhNUlhZmQ4TU1weEFlREtQMEM2Q2pnVkxUNW9zQjZpY1V4MDFsV2pYeHpUL0d5UkYyd2VsRU01Wi83akczVmpRMVNyTm41SWJ5ek9HNWRvYkIzL1FIeHladnNYY296OElvRXdTN3BsQ2crenhIUWs0MjRxOUJmRXBrRVNKYkZIUXVzREJTV0ZrdUJrb1BPMGtMS3dSVllqeEdYbEhUY1REUU1KL0g2VFg5YWZrTzdtbnJhVE8xZmVUblpBWEx1NGNwN0hBWE1tTkcxeWVGazlUZ1MvTkhoWlIvNFFvQlRyL1pCKzZoQ2d5bDE1TnExVWJONm5FMS9ablAxVTJjaXpDQnB2czhjSlFaSjRMa1l4NU4veVpQQVVaTlFRMFY0ZjNCUWxsV3JLM1lSemwzMGRPVDZSVm4ydXBOdXI2d29TYThDcXBkVC9hS25CTTRvM2pOdXI5ZDl4cXRVVDZ2ZUJFdDlDYTlhdCtFUnpFRWhVa1I4c2E1bVE0YVZ2Sm9WZUVBOHpJNGVpNW1VTFhGR3lVN3ovNlRBZVlMVmNwelNXWlk4UFlZRjV5clRWNjBzVDArWFYxNDF2WCsrV2YxNlYyYkZlR1ZQWlh4RnBrdnllS1RXTGx6ZlcwbW5LeHNZNlkzMjk0LzA5OThTQ2ZYMWJsbTVwYmN2RkdscS9yMDdNUkFNaFlJRGlXNUpGS1dXM3ZkckVwQ3NaU0pHK29tN1p1L1BTU2NaSmhOa0xibVc1V3NyMTJwV3FXNXpLdGx3UlM0YkZPeFV3MTdtQ3p5Nmxza0NEbDFXWU9HV0RZckFEck1BN0JERHdlV1dOZDVrb2lKblIxZHoreXRMUDJxMFNxUEIxbG5LMmNjQjdSWWU0RlNvUGtzM2lCM3Q0dHhUU0hjdGIyc3kxaXZrMHB2SHVDTm02dzFmNnd4djMrT0NnTjc4THFkUW5VVmg3UjBvVEFwMHpPZjJyYlc3NzBWdTVDMmRJeUdkVG5Ibzh6U2ppN2RwcGowVVNvVkN6K2xoUk1UaDUzVGVxOVZiR2ZianVTYkFvb1NkWGF5WTRQWUhnMzc0QzZmN2dsMUIvRFh1SjQvUVh4T0JkSkZKc3BGc0kzZWdwb1dVVUNqbFRJRm5OWU5sK1p5WkttQmVZS0dIa0QxUXlEbGhhS2JLd0tjSUpxSjRUTEoyT21kWS9KV1hhZTREZEdCdzhIWjdlWGNnRkYyenIyU29hbERyeTVpS3FvYTBQdWhlM2hQUTJzM2VsVFlNK01JK24zckswS2dMNy9MYTNHZU1MdDZtN3U5MTJ2R252dE9SaUlhMHFCbWhxVmkrWFc5WE5CbXFiOGVWZ0t6SUhmR0k1Yk5vRzdYMFVDemVJU21xSWNPL25ZOEZIN1U4YXZYOWZ4L1NUK2h4MHNlelB3OVF5OE11bTNHV2YyTjRVeS95SVlHVkJYYkpIV0lacDdkZlRjcHRkTVRyOVFtcTdEYWlLL3VrcUNMNGt0NFJVZlM1WFBuTXRtVDIyL21RRnFGN2VtU3F0cmx1OFNWRWx4RFJKclpPRGtwdXdlMFZmVGZqZEVwMWY3QTd2K2Zvek5CWFVKLzZXVHVLMlR0RmxwRlZaQVozTGNGdlVpMVoycDJZVCtFTUFrR0pWU3RPekxUQVBnNElxV0lBbHpSU2pPQmtsMnp4ajNUS3ljcHpUL01udlgzdWFTTVdNK2dVMHJrWGpvaGhlZlZSTWFwczMva0xNU0t2MjNsVDIzdXhRcmtRanlPSmxlTURzZGhBbkQ2WkdFbFdaNU1qQ1h6Q0UvaGtXWCtXRjRrbnpHaFZPeUsyZVFaZWtWM2V5bzB6TDhrdVlXQ25EQ3ZqamhBa2NUUE9CRFhWZG9hdjNIVmNGblFqTHZ0VjlTMnAwekE2SmVnUHdNUXh0K3lGYjNsbDl6R2xxLzVkUktiM2NFeVFZb2FOWXBoYXJKN3hDQjdBV3hzTFkzampaWFkwWHNaajBXandjOUk2UFAvZEtBQm5DWmFxSHBhWkVBQ3hrNFplTFpTS05nWkFCbCtsWVFYMXNKUU9TWDNuNnI0MTBldmNvdWQ1SmVBR1VYVlA5SDF0Wk9LZWpUcTRPbm8wejBlcnJvMUZybk9wb2h2YTFkL2hUZHRWc1FkS041VzlSbFQzTmpEMG56bnlLTlRnS0FNZldOV2N5b2RWMElHTFBJSE9GMG80SnlxdWZhSzR6NldJSXp1R2gzZDhjOGN3UWc4RVIrT1Z4eXJqZG04dk51aHRzNExvT2loR3hJTXVVZGd6d2lZTjd4aGgxK29abkpOdVRHN2dRWnZ1NFhXWjlHQVpaakdFdWJ3ZVBxWWh0S0RUSCs5VlFrbDE3L2lHeWJzbkorOCtzS3R5UHJjbGw5dHk2NVpzZHN0LzlpcXBFS2g3TTVWZEJ4aDNjc09kTmM2dFczSTF1eU0xUHpPWGVnU09yTEZzRk5JMk8yN00rVEYyQXBuTjlNVXY1dWQ2TGp4SXZFUW5IUnp4SXU0SXNBOU1MRmtKbjJ0Y1pvWjdPTjdkWGU3dWpyYzhIcnVzUEthbWxxWHdkNzdsUVV1THBpbGF1NFBVTWFwdWVCYjdpclU0Um9VWEVZWHVWdUlHbFJHbU9wKzJsTmthUlBWemlPcW1sYVp2YXFHNGRGZ1NqMGp4RUpXcnYxMklVV250bXcrcmZRYXJSRTBBcGg0b2NJNm5sVWxHcXMrdTMvK1QvZXRoVzYyUHBIcDJlSGJac3RuaC93T085NXlEQUhpY1kyQmtZR0FBNHBtSjZRSHgvRFpmR2JpWlh3QkZHR3BVTnpRaTZQK3ZtYWN5M1FKeU9SaVlRS0lBTm9VTFZYaWNZMkJrWUdBTytwOEZKRjh3QUFIelZBWkdCbFNnRFFCVzlnTnZBQUFBZUp4allHQmdZSDR4TkRBQXp3UW1qd0FBQUFBQVRnQ2FBT2dCQ2dFc0FVNEJjQUdhQWNRQjdnSWFBcHdDNkFTYUJMd0UxZ1R5QlE0RktnVjZCZEFGL2daRUJtWUd0Z2NZQjVBSUdBaFNDR29JL2dsR0NiNEoyZ29FQ2p3S2dncTRDdkFMVUF1V0M3eDRuR05nWkdCZzBHWk1ZUkJsQUFFbUlPWUNRZ2FHLzJBK0F3QVlsQUc4QUhpY2JaRTlUc013R0liZjlBL1JTZ2dFWW1IeEFndHErak4yWkdqM0R0M1QxR2xUT1hIa3VCVzlBeWZnRUJ5Q2dUTndDQTdCVy9OSmxWQnR5ZC9qeCs4WEt3bUFhM3dod25GRTZJYjFPQnE0NE82UG02UWI0UmI1UWJpTkhoNkZPL1JENFM2ZU1SSHU0UmFhVDRoYWx6UjNlQlZ1NEFwdndrMzZkK0VXK1VPNGpYdDhDbmZvdjRXN1dPQkh1SWVuNk1Yc0N0dlBVMXZXYzczZW1jU2R4SWtXMnRXNUxkVW9IcDdrVEpmYUpWNnYxUEtnNnYxNjdIMm1NbWNMTmJXbDE4WllWVG03MWFtUE45NVhrOEVnRXgrbnRvREJEZ1VzK3NpUnNwYW9NZWY3cnVrTkVyaXppWE51d1M3SG1vZTl3Z2d4ditlNTVJekpNcVFUZU5ZVjAwc2N1TmJZOCtZeHJVZkdmY2FNWmIvQ05QUWUwNGJUMGxUaGJFdVQwc2ZZaEs2Sy8yM0FtZjNMeCtIMjRoY2o0R1NjQUFBQWVKeHRqdGx1Z3pBUVJia0pVRUpJdXUvN3ZxUjhsR05QQWNXeDBZQWI1ZS9Ma2xSOTZFZ2VuU3VmR1kwMzhQcUt2ZjlyaGdHRzhCRWd4QTRpakJCampBUVRUTEdMUGV6akFJYzR3akZPY0lvem5PTUNsN2pDTlc1d2l6dmM0d0dQZU1Jelh2Q0tON3pqQXpOOGVvblFSV1pTU2FZbWp2dWc2YXNlOThoRmx0ZXhNSm1tVk5tVjJXQnZkTmdaVWMrdWpBV3pYVzNVRG51MXc0M2FzU3RIYzhHcHpBWFgvcHkwanFUUVpKVGdrY3hKTHBhQ0YwbEQzMnhOdCs0M3RBc24yOURmdDAydURLUzJjakdVTmdzazI2cUsybEZ0aFlvVTI3SU5QcW1pRHFnNWdvZTBwcVI1cVNvcU1kZWsvQ1VaRnl3TDQ2ckVzaUltbGVxaXFvTXl0NGJhWGx1LzFHTGRORmY1emJjTm1kcjFZVVdDWmU0N28relVtYi9Eb1N0YnczY1ZzZWY5QUxqamlQUUEpIGZvcm1hdChcJ3dvZmZcJyk7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIH1cblxuICAgIGh0bWwge1xuICAgICAgLS1sdW1vLWljb25zLWFsaWduLWNlbnRlcjogIlxcZWEwMSI7XG4gICAgICAtLWx1bW8taWNvbnMtYWxpZ24tbGVmdDogIlxcZWEwMiI7XG4gICAgICAtLWx1bW8taWNvbnMtYWxpZ24tcmlnaHQ6ICJcXGVhMDMiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLWRvd246ICJcXGVhMDQiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLWxlZnQ6ICJcXGVhMDUiO1xuICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLXJpZ2h0OiAiXFxlYTA2IjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS11cDogIlxcZWEwNyI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctZG93bjogIlxcZWEwOCI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctbGVmdDogIlxcZWEwOSI7XG4gICAgICAtLWx1bW8taWNvbnMtYXJyb3ctcmlnaHQ6ICJcXGVhMGEiO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LXVwOiAiXFxlYTBiIjtcbiAgICAgIC0tbHVtby1pY29ucy1iYXItY2hhcnQ6ICJcXGVhMGMiO1xuICAgICAgLS1sdW1vLWljb25zLWJlbGw6ICJcXGVhMGQiO1xuICAgICAgLS1sdW1vLWljb25zLWNhbGVuZGFyOiAiXFxlYTBlIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGVja21hcms6ICJcXGVhMGYiO1xuICAgICAgLS1sdW1vLWljb25zLWNoZXZyb24tZG93bjogIlxcZWExMCI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi1sZWZ0OiAiXFxlYTExIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLXJpZ2h0OiAiXFxlYTEyIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLXVwOiAiXFxlYTEzIjtcbiAgICAgIC0tbHVtby1pY29ucy1jbG9jazogIlxcZWExNCI7XG4gICAgICAtLWx1bW8taWNvbnMtY29nOiAiXFxlYTE1IjtcbiAgICAgIC0tbHVtby1pY29ucy1jcm9zczogIlxcZWExNiI7XG4gICAgICAtLWx1bW8taWNvbnMtZG93bmxvYWQ6ICJcXGVhMTciO1xuICAgICAgLS1sdW1vLWljb25zLWRyb3Bkb3duOiAiXFxlYTE4IjtcbiAgICAgIC0tbHVtby1pY29ucy1lZGl0OiAiXFxlYTE5IjtcbiAgICAgIC0tbHVtby1pY29ucy1lcnJvcjogIlxcZWExYSI7XG4gICAgICAtLWx1bW8taWNvbnMtZXllOiAiXFxlYTFiIjtcbiAgICAgIC0tbHVtby1pY29ucy1leWUtZGlzYWJsZWQ6ICJcXGVhMWMiO1xuICAgICAgLS1sdW1vLWljb25zLW1lbnU6ICJcXGVhMWQiO1xuICAgICAgLS1sdW1vLWljb25zLW1pbnVzOiAiXFxlYTFlIjtcbiAgICAgIC0tbHVtby1pY29ucy1vcmRlcmVkLWxpc3Q6ICJcXGVhMWYiO1xuICAgICAgLS1sdW1vLWljb25zLXBob25lOiAiXFxlYTIwIjtcbiAgICAgIC0tbHVtby1pY29ucy1waG90bzogIlxcZWEyMSI7XG4gICAgICAtLWx1bW8taWNvbnMtcGxheTogIlxcZWEyMiI7XG4gICAgICAtLWx1bW8taWNvbnMtcGx1czogIlxcZWEyMyI7XG4gICAgICAtLWx1bW8taWNvbnMtcmVkbzogIlxcZWEyNCI7XG4gICAgICAtLWx1bW8taWNvbnMtcmVsb2FkOiAiXFxlYTI1IjtcbiAgICAgIC0tbHVtby1pY29ucy1zZWFyY2g6ICJcXGVhMjYiO1xuICAgICAgLS1sdW1vLWljb25zLXVuZG86ICJcXGVhMjciO1xuICAgICAgLS1sdW1vLWljb25zLXVub3JkZXJlZC1saXN0OiAiXFxlYTI4IjtcbiAgICAgIC0tbHVtby1pY29ucy11cGxvYWQ6ICJcXGVhMjkiO1xuICAgICAgLS1sdW1vLWljb25zLXVzZXI6ICJcXGVhMmEiO1xuICAgIH1cbiAgPC9zdHlsZT5cbicsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyMXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IG8xdD0kUXRgCiAgOmhvc3QgewogICAgLS1sdW1vLXNpemUteHM6IDEuNjI1cmVtOwogICAgLS1sdW1vLXNpemUtczogMS44NzVyZW07CiAgICAtLWx1bW8tc2l6ZS1tOiAyLjI1cmVtOwogICAgLS1sdW1vLXNpemUtbDogMi43NXJlbTsKICAgIC0tbHVtby1zaXplLXhsOiAzLjVyZW07CgogICAgLyogSWNvbnMgKi8KICAgIC0tbHVtby1pY29uLXNpemUtczogMS4yNWVtOwogICAgLS1sdW1vLWljb24tc2l6ZS1tOiAxLjVlbTsKICAgIC0tbHVtby1pY29uLXNpemUtbDogMi4yNWVtOwogICAgLyogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCiAgICAtLWx1bW8taWNvbi1zaXplOiB2YXIoLS1sdW1vLWljb24tc2l6ZS1tKTsKICB9CmAsYTF0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7YTF0LmlubmVySFRNTD1gPHN0eWxlPiR7bzF0LnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYTF0LmNvbnRlbnQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCBzMXQ9JFF0YAogIDpob3N0IHsKICAgIC8qIFNxdWFyZSAqLwogICAgLS1sdW1vLXNwYWNlLXhzOiAwLjI1cmVtOwogICAgLS1sdW1vLXNwYWNlLXM6IDAuNXJlbTsKICAgIC0tbHVtby1zcGFjZS1tOiAxcmVtOwogICAgLS1sdW1vLXNwYWNlLWw6IDEuNXJlbTsKICAgIC0tbHVtby1zcGFjZS14bDogMi41cmVtOwoKICAgIC8qIFdpZGUgKi8KICAgIC0tbHVtby1zcGFjZS13aWRlLXhzOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpIC8gMikgdmFyKC0tbHVtby1zcGFjZS14cyk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS1zOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UtcykgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLXMpOwogICAgLS1sdW1vLXNwYWNlLXdpZGUtbTogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLW0pIC8gMikgdmFyKC0tbHVtby1zcGFjZS1tKTsKICAgIC0tbHVtby1zcGFjZS13aWRlLWw6IGNhbGModmFyKC0tbHVtby1zcGFjZS1sKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UtbCk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS14bDogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhsKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UteGwpOwoKICAgIC8qIFRhbGwgKi8KICAgIC0tbHVtby1zcGFjZS10YWxsLXhzOiB2YXIoLS1sdW1vLXNwYWNlLXhzKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC1zOiB2YXIoLS1sdW1vLXNwYWNlLXMpIGNhbGModmFyKC0tbHVtby1zcGFjZS1zKSAvIDIpOwogICAgLS1sdW1vLXNwYWNlLXRhbGwtbTogdmFyKC0tbHVtby1zcGFjZS1tKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UtbSkgLyAyKTsKICAgIC0tbHVtby1zcGFjZS10YWxsLWw6IHZhcigtLWx1bW8tc3BhY2UtbCkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLWwpIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC14bDogdmFyKC0tbHVtby1zcGFjZS14bCkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhsKSAvIDIpOwogIH0KYCxsMXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtsMXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtzMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsMXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IGMxdD0kUXRgCiAgOmhvc3QgewogICAgLyogQm9yZGVyIHJhZGl1cyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtczogMC4yNWVtOyAvKiBDaGVja2JveCwgYmFkZ2UsIGRhdGUtcGlja2VyIHllYXIgaW5kaWNhdG9yLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLW06IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cywgMC4yNWVtKTsgLyogQnV0dG9uLCB0ZXh0IGZpZWxkLCBtZW51IG92ZXJsYXksIGV0YyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtbDogMC41ZW07IC8qIERpYWxvZywgbm90aWZpY2F0aW9uLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzOiAwLjI1ZW07IC8qIERlcHJlY2F0ZWQgKi8KCiAgICAvKiBTaGFkb3cgKi8KICAgIC0tbHVtby1ib3gtc2hhZG93LXhzOiAwIDFweCA0cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTUwcGN0KTsKICAgIC0tbHVtby1ib3gtc2hhZG93LXM6IDAgMnB4IDRweCAtMXB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDNweCAxMnB4IC0xcHggdmFyKC0tbHVtby1zaGFkZS0zMHBjdCk7CiAgICAtLWx1bW8tYm94LXNoYWRvdy1tOiAwIDJweCA2cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCA4cHggMjRweCAtNHB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3ctbDogMCAzcHggMThweCAtMnB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDEycHggNDhweCAtNnB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3cteGw6IDAgNHB4IDI0cHggLTNweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCAxOHB4IDY0cHggLThweCB2YXIoLS1sdW1vLXNoYWRlLTQwcGN0KTsKCiAgICAvKiBDbGlja2FibGUgZWxlbWVudCBjdXJzb3IgKi8KICAgIC0tbHVtby1jbGlja2FibGUtY3Vyc29yOiBkZWZhdWx0OwogIH0KYCx1MXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTt1MXQuaW5uZXJIVE1MPWA8c3R5bGU+JHtjMXQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh1MXQuY29udGVudCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IGgxdD0kUXRgCiAgOmhvc3QgewogICAgLyogcHJldHRpZXItaWdub3JlICovCiAgICAtLWx1bW8tZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1JvYm90bycsICdTZWdvZSBVSScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnOwoKICAgIC8qIEZvbnQgc2l6ZXMgKi8KICAgIC0tbHVtby1mb250LXNpemUteHhzOiAwLjc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14czogMC44MTI1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS1zOiAwLjg3NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUtbTogMXJlbTsKICAgIC0tbHVtby1mb250LXNpemUtbDogMS4xMjVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLXhsOiAxLjM3NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUteHhsOiAxLjc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14eHhsOiAyLjVyZW07CgogICAgLyogTGluZSBoZWlnaHRzICovCiAgICAtLWx1bW8tbGluZS1oZWlnaHQteHM6IDEuMjU7CiAgICAtLWx1bW8tbGluZS1oZWlnaHQtczogMS4zNzU7CiAgICAtLWx1bW8tbGluZS1oZWlnaHQtbTogMS42MjU7CiAgfQpgLGQxdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2QxdC5pbm5lckhUTUw9YDxzdHlsZT4ke2gxdC50b1N0cmluZygpLnJlcGxhY2UoIjpob3N0IiwiaHRtbCIpfTwvc3R5bGU+YCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGQxdC5jb250ZW50KTt0MXQoIiIsJFF0YAogIGh0bWwgewogICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZSwgdmFyKC0tbHVtby1mb250LXNpemUtbSkpOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQtbSk7CiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiAgfQoKICAvKiBDYW7igJl0IGNvbWJpbmUgd2l0aCB0aGUgYWJvdmUgc2VsZWN0b3IgYmVjYXVzZSB0aGF0IGRvZXNu4oCZdCB3b3JrIGluIGJyb3dzZXJzIHdpdGhvdXQgbmF0aXZlIHNoYWRvdyBkb20gKi8KICA6aG9zdCB7CiAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLCB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1tKSk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1tKTsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICB9CgogIHNtYWxsLAogIFt0aGVtZX49J2ZvbnQtc2l6ZS1zJ10gewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1zKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXMpOwogIH0KCiAgW3RoZW1lfj0nZm9udC1zaXplLXhzJ10gewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14cyk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC14cyk7CiAgfQoKICBoMSwKICBoMiwKICBoMywKICBoNCwKICBoNSwKICBoNiB7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQteHMpOwogICAgbWFyZ2luLXRvcDogMS4yNWVtOwogIH0KCiAgaDEgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14eHhsKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTsKICB9CgogIGgyIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHhsKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOwogIH0KCiAgaDMgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14bCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICB9CgogIGg0IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICB9CgogIGg1IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07CiAgfQoKICBoNiB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXhzKTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICB9CgogIHAsCiAgYmxvY2txdW90ZSB7CiAgICBtYXJnaW4tdG9wOiAwLjVlbTsKICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTsKICB9CgogIGEgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgYTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB9CgogIGhyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIGhlaWdodDogMXB4OwogICAgYm9yZGVyOiAwOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogdmFyKC0tbHVtby1zcGFjZS1zKSBjYWxjKHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1tKSAvIDIpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgfQoKICBibG9ja3F1b3RlIHsKICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgfQoKICBiLAogIHN0cm9uZyB7CiAgICBmb250LXdlaWdodDogNjAwOwogIH0KCiAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwoKICBibG9ja3F1b3RlW2Rpcj0ncnRsJ10gewogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICB9CmAse21vZHVsZUlkOiJsdW1vLXR5cG9ncmFwaHkifSksdDF0KCJ2YWFkaW4tY2hlY2tib3giLCRRdGAKICAgIDpob3N0IHsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICBbcGFydD0nbGFiZWwnXTpub3QoW2VtcHR5XSkgewogICAgICBtYXJnaW46IDAuMTg3NWVtIDAuODc1ZW0gMC4xODc1ZW0gMC4zNzVlbTsKICAgIH0KCiAgICBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHdpZHRoOiBjYWxjKDFlbSArIDJweCk7CiAgICAgIGhlaWdodDogY2FsYygxZW0gKyAycHgpOwogICAgICBtYXJnaW46IDAuMTg3NWVtOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0yMHBjdCk7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGN1YmljLWJlemllcigwLjEyLCAwLjMyLCAwLjU0LCAyKSwgYmFja2dyb3VuZC1jb2xvciAwLjE1czsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB9CgogICAgOmhvc3QoW2luZGV0ZXJtaW5hdGVdKSBbcGFydD0nY2hlY2tib3gnXSwKICAgIDpob3N0KFtjaGVja2VkXSkgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3IpOwogICAgfQoKICAgIC8qIE5lZWRlZCB0byBhbGlnbiB0aGUgY2hlY2tib3ggbmljZWx5IG9uIHRoZSBiYXNlbGluZSAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcXDIwMDMnOwogICAgfQoKICAgIC8qIENoZWNrbWFyayAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgY29udGVudDogJyc7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgd2lkdGg6IDA7CiAgICAgIGhlaWdodDogMDsKICAgICAgYm9yZGVyOiAwIHNvbGlkIHZhcigtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcik7CiAgICAgIGJvcmRlci13aWR0aDogMC4xODc1ZW0gMCAwIDAuMTg3NWVtOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwLjgxMjVlbTsKICAgICAgbGVmdDogMC41ZW07CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NSkgcm90YXRlKC0xMzVkZWcpOwogICAgICBvcGFjaXR5OiAwOwogICAgfQoKICAgIDpob3N0KFtjaGVja2VkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgd2lkdGg6IDAuNjI1ZW07CiAgICAgIGhlaWdodDogMS4wNjI1ZW07CiAgICB9CgogICAgLyogSW5kZXRlcm1pbmF0ZSBjaGVja21hcmsgKi8KICAgIDpob3N0KFtpbmRldGVybWluYXRlXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICBvcGFjaXR5OiAxOwogICAgICB0b3A6IDQ1JTsKICAgICAgaGVpZ2h0OiAxMCU7CiAgICAgIGxlZnQ6IDIyJTsKICAgICAgcmlnaHQ6IDIyJTsKICAgICAgd2lkdGg6IGF1dG87CiAgICAgIGJvcmRlcjogMDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yKTsKICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1czsKICAgIH0KCiAgICAvKiBGb2N1cyByaW5nICovCiAgICA6aG9zdChbZm9jdXMtcmluZ10pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICB9CgogICAgLyogRGlzYWJsZWQgKi8KICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLWRpc2FibGVkLXRleHQtY29sb3IpOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdsYWJlbCddIDo6c2xvdHRlZCgqKSB7CiAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICA6aG9zdChbaW5kZXRlcm1pbmF0ZV1bZGlzYWJsZWRdKSBbcGFydD0nY2hlY2tib3gnXTo6YWZ0ZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnQ9J2xhYmVsJ106bm90KFtlbXB0eV0pIHsKICAgICAgbWFyZ2luOiAwLjE4NzVlbSAwLjM3NWVtIDAuMTg3NWVtIDAuODc1ZW07CiAgICB9CgogICAgLyogVHJhbnNpdGlvbiB0aGUgY2hlY2ttYXJrIGlmIGFjdGl2YXRlZCB3aXRoIHRoZSBtb3VzZSAoZGlzYWJsZWQgZm9yIGdyaWQgc2VsZWN0LWFsbCB0aGlzIHdheSkgKi8KICAgIDpob3N0KDpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgaGVpZ2h0IDAuMjVzOwogICAgfQoKICAgIC8qIFVzZWQgZm9yIGFjdGl2YXRpb24gImhhbG8iICovCiAgICBbcGFydD0nY2hlY2tib3gnXTo6YmVmb3JlIHsKICAgICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS40KTsKICAgICAgb3BhY2l0eTogMDsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMsIG9wYWNpdHkgMC44czsKICAgIH0KCiAgICAvKiBIb3ZlciAqLwogICAgOmhvc3QoOm5vdChbY2hlY2tlZF0pOm5vdChbaW5kZXRlcm1pbmF0ZV0pOm5vdChbZGlzYWJsZWRdKTpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgIH0KCiAgICAvKiBEaXNhYmxlIGhvdmVyIGZvciB0b3VjaCBkZXZpY2VzICovCiAgICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkgewogICAgICA6aG9zdCg6bm90KFtjaGVja2VkXSk6bm90KFtpbmRldGVybWluYXRlXSk6bm90KFtkaXNhYmxlZF0pOmhvdmVyKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0yMHBjdCk7CiAgICAgIH0KICAgIH0KCiAgICAvKiBBY3RpdmUgKi8KICAgIDpob3N0KFthY3RpdmVdKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wNXM7CiAgICB9CgogICAgOmhvc3QoW2FjdGl2ZV1bY2hlY2tlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgfQoKICAgIDpob3N0KFthY3RpdmVdOm5vdChbY2hlY2tlZF0pKSBbcGFydD0nY2hlY2tib3gnXTo6YmVmb3JlIHsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMXMsIDAuMDFzOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICBvcGFjaXR5OiAwLjQ7CiAgICB9CiAgYCx7bW9kdWxlSWQ6Imx1bW8tY2hlY2tib3gifSk7Y29uc3QgcDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57dGhlbWU6e3R5cGU6U3RyaW5nLHJlYWRPbmx5OiEwfX19YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJ0aGVtZSI9PT10JiZ0aGlzLl9zZXRUaGVtZShuKX19LGYxdD10PT5jbGFzcyBleHRlbmRzKHAxdCh0KSl7c3RhdGljIGZpbmFsaXplKCl7c3VwZXIuZmluYWxpemUoKTtjb25zdCB0PXRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZSxlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuX3RlbXBsYXRlO2UmJkFycmF5LmZyb20oZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlW2luY2x1ZGVdIikpLmZvckVhY2goKGU9Pnt0aGlzLl9pbmNsdWRlU3R5bGUoZS5nZXRBdHRyaWJ1dGUoImluY2x1ZGUiKSx0KX0pKSx0aGlzLl9pbmNsdWRlTWF0Y2hpbmdUaGVtZXModCl9c3RhdGljIF9pbmNsdWRlTWF0Y2hpbmdUaGVtZXModCl7Y29uc3QgZT1CLnByb3RvdHlwZS5tb2R1bGVzO2xldCBuPSExO2NvbnN0IGk9dGhpcy5pcysiLWRlZmF1bHQtdGhlbWUiO09iamVjdC5rZXlzKGUpLnNvcnQoKCh0LGUpPT57Y29uc3Qgbj0wPT09dC5pbmRleE9mKCJ2YWFkaW4tIiksaT0wPT09ZS5pbmRleE9mKCJ2YWFkaW4tIikscj1bImx1bW8tIiwibWF0ZXJpYWwtIl0sbz1yLmZpbHRlcigoZT0+MD09PXQuaW5kZXhPZihlKSkpLmxlbmd0aD4wLGE9ci5maWx0ZXIoKHQ9PjA9PT1lLmluZGV4T2YodCkpKS5sZW5ndGg+MDtyZXR1cm4gbiE9PWk/bj8tMToxOm8hPT1hP28/LTE6MTowfSkpLmZvckVhY2goKHI9PntpZihyIT09aSl7Y29uc3QgaT1lW3JdLmdldEF0dHJpYnV0ZSgidGhlbWUtZm9yIik7aSYmaS5zcGxpdCgiICIpLmZvckVhY2goKGU9PntuZXcgUmVnRXhwKCJeIitlLnNwbGl0KCIqIikuam9pbigiLioiKSsiJCIpLnRlc3QodGhpcy5pcykmJihuPSEwLHRoaXMuX2luY2x1ZGVTdHlsZShyLHQpKX0pKX19KSksIW4mJmVbaV0mJnRoaXMuX2luY2x1ZGVTdHlsZShpLHQpfXN0YXRpYyBfaW5jbHVkZVN0eWxlKHQsZSl7aWYoZSYmIWUuY29udGVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtpbmNsdWRlPSIke3R9Il1gKSl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO24uc2V0QXR0cmlidXRlKCJpbmNsdWRlIix0KSxlLmNvbnRlbnQuYXBwZW5kQ2hpbGQobil9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi87bGV0IG0xdD0hMTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKCgpPT57bTF0PSEwfSkse2NhcHR1cmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PnttMXQ9ITF9KSx7Y2FwdHVyZTohMH0pO2NvbnN0IGcxdD10PT5jbGFzcyBleHRlbmRzKCh0PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3RhYmluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX3RhYmluZGV4Q2hhbmdlZCJ9fX19KSh0KSl7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2F1dG9mb2N1czp7dHlwZTpCb29sZWFufSxfcHJldmlvdXNUYWJJbmRleDp7dHlwZTpOdW1iZXJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9kaXNhYmxlZENoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sX2lzU2hpZnRUYWJiaW5nOnt0eXBlOkJvb2xlYW59fX1yZWFkeSgpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsKHQ9Pnt0LmNvbXBvc2VkUGF0aCgpWzBdPT09dGhpcz90aGlzLmNvbnRhaW5zKHQucmVsYXRlZFRhcmdldCl8fHRoaXMuX2ZvY3VzKCk6LTE9PT10LmNvbXBvc2VkUGF0aCgpLmluZGV4T2YodGhpcy5mb2N1c0VsZW1lbnQpfHx0aGlzLmRpc2FibGVkfHx0aGlzLl9zZXRGb2N1c2VkKCEwKX0pKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IiwoKCk9PnRoaXMuX3NldEZvY3VzZWQoITEpKSksc3VwZXIucmVhZHkoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCh0PT57IXQuZGVmYXVsdFByZXZlbnRlZCYmOT09PXQua2V5Q29kZSYmdC5zaGlmdEtleSYmKHRoaXMuX2lzU2hpZnRUYWJiaW5nPSEwLEhUTUxFbGVtZW50LnByb3RvdHlwZS5mb2N1cy5hcHBseSh0aGlzKSx0aGlzLl9zZXRGb2N1c2VkKCExKSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5faXNTaGlmdFRhYmJpbmc9ITEpLDApKX0pKSx0aGlzLmF1dG9mb2N1cyYmIXRoaXMuZGlzYWJsZWQmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSx0aGlzLnNldEF0dHJpYnV0ZSgiZm9jdXMtcmluZyIsIiIpfSkpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhc0F0dHJpYnV0ZSgiZm9jdXNlZCIpJiZ0aGlzLl9zZXRGb2N1c2VkKCExKX1fc2V0Rm9jdXNlZCh0KXt0P3RoaXMuc2V0QXR0cmlidXRlKCJmb2N1c2VkIiwiIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImZvY3VzZWQiKSx0JiZtMXQ/dGhpcy5zZXRBdHRyaWJ1dGUoImZvY3VzLXJpbmciLCIiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZm9jdXMtcmluZyIpfWdldCBmb2N1c0VsZW1lbnQoKXtyZXR1cm4gd2luZG93LmNvbnNvbGUud2FybihgUGxlYXNlIGltcGxlbWVudCB0aGUgJ2ZvY3VzRWxlbWVudCcgcHJvcGVydHkgaW4gPCR7dGhpcy5sb2NhbE5hbWV9PmApLHRoaXN9X2ZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLl9pc1NoaWZ0VGFiYmluZyYmKHRoaXMuZm9jdXNFbGVtZW50LmZvY3VzKCksdGhpcy5fc2V0Rm9jdXNlZCghMCkpfWZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5mb2N1c0VsZW1lbnQuZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSl9Ymx1cigpe3RoaXMuZm9jdXNFbGVtZW50JiYodGhpcy5mb2N1c0VsZW1lbnQuYmx1cigpLHRoaXMuX3NldEZvY3VzZWQoITEpKX1fZGlzYWJsZWRDaGFuZ2VkKHQpe3RoaXMuZm9jdXNFbGVtZW50LmRpc2FibGVkPXQsdD8odGhpcy5ibHVyKCksdGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4LHRoaXMudGFiaW5kZXg9LTEsdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIikpOih2b2lkIDAhPT10aGlzLl9wcmV2aW91c1RhYkluZGV4JiYodGhpcy50YWJpbmRleD10aGlzLl9wcmV2aW91c1RhYkluZGV4KSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIpKX1fdGFiaW5kZXhDaGFuZ2VkKHQpe3ZvaWQgMCE9PXQmJih0aGlzLmZvY3VzRWxlbWVudC50YWJJbmRleD10KSx0aGlzLmRpc2FibGVkJiZ0aGlzLnRhYmluZGV4JiYoLTEhPT10aGlzLnRhYmluZGV4JiYodGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4KSx0aGlzLnRhYmluZGV4PXQ9dm9pZCAwKX1jbGljaygpe3RoaXMuZGlzYWJsZWR8fHN1cGVyLmNsaWNrKCl9fSxfMXQ9L1wvXCpcKlxzK3ZhYWRpbi1kZXYtbW9kZTpzdGFydChbXHNcU10qKXZhYWRpbi1kZXYtbW9kZTplbmRccytcKlwqXC8vaSx5MXQ9d2luZG93LlZhYWRpbiYmd2luZG93LlZhYWRpbi5GbG93JiZ3aW5kb3cuVmFhZGluLkZsb3cuY2xpZW50cztmdW5jdGlvbiB2MXQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdClyZXR1cm47Y29uc3Qgbj1fMXQuZXhlYyh0LnRvU3RyaW5nKCkpO2lmKG4pdHJ5e3Q9bmV3IEZ1bmN0aW9uKG5bMV0pfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJ2YWFkaW4tZGV2ZWxvcG1lbnQtbW9kZS1kZXRlY3RvcjogdW5jb21tZW50QW5kUnVuKCkgZmFpbGVkIix0KX1yZXR1cm4gdChlKX13aW5kb3cuVmFhZGluPXdpbmRvdy5WYWFkaW58fHt9O2NvbnN0IGIxdD1mdW5jdGlvbih0LGUpe2lmKHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlKXJldHVybiB2MXQodCxlKX07ZnVuY3Rpb24geDF0KCl7fXZvaWQgMD09PXdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlJiYod2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGU9KGZ1bmN0aW9uIHcxdCgpe3RyeXtyZXR1cm4hIShmdW5jdGlvbiB0KCl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ2YWFkaW4uZGV2ZWxvcG1lbnRtb2RlLmZvcmNlIil9KSgpfHwhIShmdW5jdGlvbiBlKCl7cmV0dXJuWyJsb2NhbGhvc3QiLCIxMjcuMC4wLjEiXS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+PTB9KSgpJiYoeTF0PyEoZnVuY3Rpb24gbigpe3JldHVybiEhKHkxdCYmT2JqZWN0LmtleXMoeTF0KS5tYXAoKHQ9PnkxdFt0XSkpLmZpbHRlcigodD0+dC5wcm9kdWN0aW9uTW9kZSkpLmxlbmd0aD4wKX0pKCk6IShmdW5jdGlvbiBpKCl7cmV0dXJuIHYxdCgoZnVuY3Rpb24gdCgpe3JldHVybiEwfSkpfSkoKSl9Y2F0Y2godCl7cmV0dXJuITF9fSkoKSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNsYXNzIFMxdHtzdGF0aWMgZGV0ZWN0U2Nyb2xsVHlwZSgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC50ZXh0Q29udGVudD0iQUJDRCIsdC5kaXI9InJ0bCIsdC5zdHlsZS5mb250U2l6ZT0iMTRweCIsdC5zdHlsZS53aWR0aD0iNHB4Iix0LnN0eWxlLmhlaWdodD0iMXB4Iix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS50b3A9Ii0xMDAwcHgiLHQuc3R5bGUub3ZlcmZsb3c9InNjcm9sbCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtsZXQgZT0icmV2ZXJzZSI7cmV0dXJuIHQuc2Nyb2xsTGVmdD4wP2U9ImRlZmF1bHQiOih0LnNjcm9sbExlZnQ9Mix0LnNjcm9sbExlZnQ8MiYmKGU9Im5lZ2F0aXZlIikpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCksZX1zdGF0aWMgZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCxlLG4pe2NvbnN0e3Njcm9sbExlZnQ6aX09bjtpZigicnRsIiE9PWV8fCF0KXJldHVybiBpO3N3aXRjaCh0KXtjYXNlIm5lZ2F0aXZlIjpyZXR1cm4gbi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRoK2k7Y2FzZSJyZXZlcnNlIjpyZXR1cm4gbi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRoLWl9cmV0dXJuIGl9c3RhdGljIHNldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQsZSxuLGkpe2lmKCJydGwiPT09ZSYmdClzd2l0Y2godCl7Y2FzZSJuZWdhdGl2ZSI6bi5zY3JvbGxMZWZ0PW4uY2xpZW50V2lkdGgtbi5zY3JvbGxXaWR0aCtpO2JyZWFrO2Nhc2UicmV2ZXJzZSI6bi5zY3JvbGxMZWZ0PW4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aC1pO2JyZWFrO2RlZmF1bHQ6bi5zY3JvbGxMZWZ0PWl9ZWxzZSBuLnNjcm9sbExlZnQ9aX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovY29uc3QgTTF0PVtdO2xldCBFMXQ7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7Y29uc3QgdD1DMXQoKTtNMXQuZm9yRWFjaCgoZT0+e1QxdChlLHQpfSkpfSkpLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImRpciJdfSk7Y29uc3QgVDF0PWZ1bmN0aW9uKHQsZSxuPXQuZ2V0QXR0cmlidXRlKCJkaXIiKSl7ZT90LnNldEF0dHJpYnV0ZSgiZGlyIixlKTpudWxsIT1uJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiZGlyIil9LEMxdD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKX0sQTF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGlyOnt0eXBlOlN0cmluZyx2YWx1ZToiIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fX1zdGF0aWMgZmluYWxpemUoKXtzdXBlci5maW5hbGl6ZSgpLEUxdHx8KEUxdD1TMXQuZGV0ZWN0U2Nyb2xsVHlwZSgpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5oYXNBdHRyaWJ1dGUoImRpciIpfHwodGhpcy5fX3N1YnNjcmliZSgpLFQxdCh0aGlzLEMxdCgpLG51bGwpKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe2lmKHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbiksImRpciIhPT10KXJldHVybjtjb25zdCBpPUMxdCgpLHI9bj09PWkmJi0xPT09TTF0LmluZGV4T2YodGhpcyksbz0hbiYmZSYmLTE9PT1NMXQuaW5kZXhPZih0aGlzKSxhPW4hPT1pJiZlPT09aTtyfHxvPyh0aGlzLl9fc3Vic2NyaWJlKCksVDF0KHRoaXMsaSxuKSk6YSYmdGhpcy5fX3N1YnNjcmliZSghMSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX19zdWJzY3JpYmUoITEpLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJkaXIiKX1fdmFsdWVUb05vZGVBdHRyaWJ1dGUodCxlLG4peygiZGlyIiE9PW58fCIiIT09ZXx8dC5oYXNBdHRyaWJ1dGUoImRpciIpKSYmc3VwZXIuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsZSxuKX1fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LGUsbil7ImRpciIhPT10fHxlP3N1cGVyLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKTp0aGlzLmRpcj0iIn1fX3N1YnNjcmliZSh0PSEwKXt0Py0xPT09TTF0LmluZGV4T2YodGhpcykmJk0xdC5wdXNoKHRoaXMpOk0xdC5pbmRleE9mKHRoaXMpPi0xJiZNMXQuc3BsaWNlKE0xdC5pbmRleE9mKHRoaXMpLDEpfV9fZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCl7cmV0dXJuIFMxdC5nZXROb3JtYWxpemVkU2Nyb2xsTGVmdChFMXQsdGhpcy5nZXRBdHRyaWJ1dGUoImRpciIpfHwibHRyIix0KX1fX3NldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQsZSl7cmV0dXJuIFMxdC5zZXROb3JtYWxpemVkU2Nyb2xsTGVmdChFMXQsdGhpcy5nZXRBdHRyaWJ1dGUoImRpciIpfHwibHRyIix0LGUpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi87bGV0IGsxdDt3aW5kb3cuVmFhZGluPXdpbmRvdy5WYWFkaW58fHt9LHdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9ucz13aW5kb3cuVmFhZGluLnJlZ2lzdHJhdGlvbnN8fFtdLHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2s9d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja3x8e30sd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXT1mdW5jdGlvbigpe2IxdCh4MXQpfTtjb25zdCBQMXQ9bmV3IFNldCxMMXQ9dD0+Y2xhc3MgZXh0ZW5kcyhBMXQodCkpe3N0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCk7Y29uc3R7aXM6dH09dGhpczt0JiYhUDF0Lmhhcyh0KSYmKHdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9ucy5wdXNoKHRoaXMpLFAxdC5hZGQodCksd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFjayYmKGsxdD1Jbi5kZWJvdW5jZShrMXQseXQsKCgpPT57d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXSgpfSkpLFJuKGsxdCkpKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksbnVsbD09PWRvY3VtZW50LmRvY3R5cGUmJmNvbnNvbGUud2FybignVmFhZGluIGNvbXBvbmVudHMgcmVxdWlyZSB0aGUgInN0YW5kYXJkcyBtb2RlIiBkZWNsYXJhdGlvbi4gUGxlYXNlIGFkZCA8IURPQ1RZUEUgaHRtbD4gdG8gdGhlIEhUTUwgZG9jdW1lbnQuJyl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLztjbGFzcyBJMXQgZXh0ZW5kcyhMMXQoZzF0KGYxdChiaSh3ZSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4geGVgCiAgICAgIDxzdHlsZT4KICAgICAgICA6aG9zdCB7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgbGFiZWwgewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIH0KCiAgICAgICAgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgZmxleDogbm9uZTsKICAgICAgICB9CgogICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10gewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgdG9wOiAwOwogICAgICAgICAgbGVmdDogMDsKICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgY3Vyc29yOiBpbmhlcml0OwogICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgIDwvc3R5bGU+CgogICAgICA8bGFiZWw+CiAgICAgICAgPHNwYW4gcGFydD0iY2hlY2tib3giPgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9ImNoZWNrYm94IgogICAgICAgICAgICBjaGVja2VkPSJ7e2NoZWNrZWQ6OmNoYW5nZX19IgogICAgICAgICAgICBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIKICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZT0ie3tpbmRldGVybWluYXRlOjpjaGFuZ2V9fSIKICAgICAgICAgICAgcm9sZT0icHJlc2VudGF0aW9uIgogICAgICAgICAgICB0YWJpbmRleD0iLTEiCiAgICAgICAgICAvPgogICAgICAgIDwvc3Bhbj4KCiAgICAgICAgPHNwYW4gcGFydD0ibGFiZWwiPgogICAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9sYWJlbD4KICAgIGB9c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tY2hlY2tib3gifXN0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyMC4wLjIifXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntjaGVja2VkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfY2hlY2tlZENoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0saW5kZXRlcm1pbmF0ZTp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX2luZGV0ZXJtaW5hdGVDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToib24ifSxfbmF0aXZlQ2hlY2tib3g6e3R5cGU6T2JqZWN0fX19Y29uc3RydWN0b3IoKXtzdXBlcigpfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuY2hlY2tlZD90aGlzLl9zdG9yZWROYW1lOiIifXNldCBuYW1lKHQpe3RoaXMuX3N0b3JlZE5hbWU9dH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjaGVja2JveCIpLHRoaXMuX25hdGl2ZUNoZWNrYm94PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJyksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGFuZGxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5fYWRkQWN0aXZlTGlzdGVuZXJzKCk7Y29uc3QgdD10aGlzLmdldEF0dHJpYnV0ZSgibmFtZSIpO3QmJih0aGlzLm5hbWU9dCksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0ibGFiZWwiXScpLnF1ZXJ5U2VsZWN0b3IoInNsb3QiKS5hZGRFdmVudExpc3RlbmVyKCJzbG90Y2hhbmdlIix0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZS5iaW5kKHRoaXMpKSx0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpfV91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpe2NvbnN0IHQ9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0ibGFiZWwiXScpLGU9dC5maXJzdEVsZW1lbnRDaGlsZC5hc3NpZ25lZE5vZGVzKCk7dGhpcy5faXNBc3NpZ25lZE5vZGVzRW1wdHkoZSk/dC5zZXRBdHRyaWJ1dGUoImVtcHR5IiwiIik6dC5yZW1vdmVBdHRyaWJ1dGUoImVtcHR5Iil9X2lzQXNzaWduZWROb2Rlc0VtcHR5KHQpe3JldHVybiAwPT09dC5sZW5ndGh8fDE9PXQubGVuZ3RoJiZ0WzBdLm5vZGVUeXBlPT1Ob2RlLlRFWFRfTk9ERSYmIiI9PT10WzBdLnRleHRDb250ZW50LnRyaW0oKX1fY2hlY2tlZENoYW5nZWQodCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtY2hlY2tlZCIsdGhpcy5pbmRldGVybWluYXRlPyJtaXhlZCI6Qm9vbGVhbih0KSl9X2luZGV0ZXJtaW5hdGVDaGFuZ2VkKHQpe3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWNoZWNrZWQiLHQ/Im1peGVkIjp0aGlzLmNoZWNrZWQpfV9hZGRBY3RpdmVMaXN0ZW5lcnMoKXt0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsImRvd24iLCh0PT57dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJnRoaXMuc2V0QXR0cmlidXRlKCJhY3RpdmUiLCIiKX0pKSx0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsInVwIiwoKCk9PnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhY3RpdmUiKSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKHQ9Pnt0aGlzLl9faW50ZXJhY3Rpb25zQWxsb3dlZCh0KSYmMzI9PT10LmtleUNvZGUmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5zZXRBdHRyaWJ1dGUoImFjdGl2ZSIsIiIpKX0pKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwodD0+e3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYzMj09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLl90b2dnbGVDaGVja2VkKCksdGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFjdGl2ZSIpLHRoaXMuaW5kZXRlcm1pbmF0ZSYmKHRoaXMuaW5kZXRlcm1pbmF0ZT0hMSkpfSkpfWdldCBmb2N1c0VsZW1lbnQoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iil9X19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpe3JldHVybiF0aGlzLmRpc2FibGVkJiYiYSIhPT10LnRhcmdldC5sb2NhbE5hbWV9X2hhbmRsZUNsaWNrKHQpe3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYodGhpcy5pbmRldGVybWluYXRlPyh0aGlzLmluZGV0ZXJtaW5hdGU9ITEsdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSk6dC5jb21wb3NlZFBhdGgoKVswXSE9PXRoaXMuX25hdGl2ZUNoZWNrYm94JiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSkpfV90b2dnbGVDaGVja2VkKCl7dGhpcy5jaGVja2VkPSF0aGlzLmNoZWNrZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7Y29tcG9zZWQ6ITEsYnViYmxlczohMH0pKX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKEkxdC5pcyxJMXQpLHQxdCgidmFhZGluLWdyaWQiLCRRdGAKICAgIDpob3N0IHsKICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pOwogICAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1zKTsKICAgICAgY29sb3I6IHZhcigtLWx1bW8tYm9keS10ZXh0LWNvbG9yKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKCiAgICAgIC8qIEZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTIwcGN0KTsKICAgICAgLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAgIC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdCk7CiAgICB9CgogICAgLyogTm8gKG91dGVyKSBib3JkZXIgKi8KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLWJvcmRlciddKSkgewogICAgICBib3JkZXI6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogQ2VsbCBzdHlsZXMgKi8KCiAgICBbcGFydH49J2NlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1tKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgcGFkZGluZzogdmFyKC0tbHVtby1zcGFjZS14cykgdmFyKC0tbHVtby1zcGFjZS1tKTsKICAgIH0KCiAgICAvKiBBcHBseSByb3cgYm9yZGVycyBieSBkZWZhdWx0IGFuZCBpbnRyb2R1Y2UgdGhlICJuby1yb3ctYm9yZGVycyIgdmFyaWFudCAqLwogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm9yZGVyLXRvcDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogSGlkZSBmaXJzdCBib2R5IHJvdyB0b3AgYm9yZGVyICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J11bZmlyc3RdIFtwYXJ0fj0nY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJvcmRlci10b3A6IDA7CiAgICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tbHVtby1zaXplLW0pIC0gdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpKTsKICAgIH0KCiAgICAvKiBGb2N1cy1yaW5nICovCgogICAgW3BhcnR+PSdjZWxsJ106Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIDpob3N0KFtuYXZpZ2F0aW5nXSkgW3BhcnR+PSdjZWxsJ106Zm9jdXM6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIC8qIERyYWcgYW5kIERyb3Agc3R5bGVzICovCiAgICA6aG9zdChbZHJhZ292ZXJdKTo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB6LWluZGV4OiAxMDA7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXJdIHsKICAgICAgei1pbmRleDogMTAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcl0gW3BhcnR+PSdjZWxsJ10gewogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdvdmVyXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgKyAycHgpOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0KTsKICAgIH0KCiAgICA6aG9zdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSBbZHJhZ292ZXJdIFtwYXJ0fj0nY2VsbCddOjphZnRlciB7CiAgICAgIGhlaWdodDogMnB4OwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXI9J2JlbG93J10gW3BhcnR+PSdjZWxsJ106OmFmdGVyIHsKICAgICAgdG9wOiAxMDAlOwogICAgICBib3R0b206IGF1dG87CiAgICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcj0nYWJvdmUnXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICB0b3A6IGF1dG87CiAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RldGFpbHMtb3BlbmVkXVtkcmFnb3Zlcj0nYmVsb3cnXSBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSk6OmFmdGVyLAogICAgW3BhcnR+PSdyb3cnXVtkZXRhaWxzLW9wZW5lZF1bZHJhZ292ZXI9J2Fib3ZlJ10gW3BhcnR+PSdkZXRhaWxzLWNlbGwnXTo6YWZ0ZXIgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXJdW2RyYWdvdmVyPSdvbi10b3AnXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICBoZWlnaHQ6IDEwMCU7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIHsKICAgICAgLyogQWRkIGJvdHRvbS1zcGFjZSB0byB0aGUgcm93IHNvIHRoZSBkcmFnIG51bWJlciBkb2Vzbid0IGdldCBjbGlwcGVkLiBOZWVkZWQgZm9yIElFL0VkZ2UgKi8KICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIHotaW5kZXg6IDEwMCAhaW1wb3J0YW50OwogICAgICBvcGFjaXR5OiAwLjk7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddIHsKICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ11bbGFzdC1jb2x1bW5dIHsKICAgICAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpIDA7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddW2ZpcnN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMCAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgIH0KCiAgICBbaW9zXSBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ10gewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgICNzY3JvbGxlcjpub3QoW2lvc10pIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XTpub3QoW2RyYWdzdGFydD0nJ10pOjphZnRlciB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGxlZnQ6IHZhcigtLV9ncmlkLWRyYWctc3RhcnQteCk7CiAgICAgIHRvcDogdmFyKC0tX2dyaWQtZHJhZy1zdGFydC15KTsKICAgICAgei1pbmRleDogMTAwOwogICAgICBjb250ZW50OiBhdHRyKGRyYWdzdGFydCk7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwYWRkaW5nOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpICogMC44KTsKICAgICAgY29sb3I6IHZhcigtLWx1bW8tZXJyb3ItY29udHJhc3QtY29sb3IpOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWVycm9yLWNvbG9yKTsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLW0pOwogICAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHhzKTsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsOwogICAgICBsZXR0ZXItc3BhY2luZzogaW5pdGlhbDsKICAgICAgbWluLXdpZHRoOiBjYWxjKHZhcigtLWx1bW8tc2l6ZS1zKSAqIDAuNyk7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAvKiBIZWFkZXJzIGFuZCBmb290ZXJzICovCgogICAgW3BhcnR+PSdoZWFkZXItY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgW3BhcnR+PSdmb290ZXItY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgW3BhcnR+PSdyZW9yZGVyLWdob3N0J10gewogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXMpOwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgfQoKICAgIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICB9CgogICAgW3BhcnQ9J3JvdyddOm9ubHktY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgbWluLWhlaWdodDogdmFyKC0tbHVtby1zaXplLXhsKTsKICAgIH0KCiAgICAvKiBIZWFkZXIgYm9yZGVycyAqLwoKICAgIC8qIEhpZGUgZmlyc3QgaGVhZGVyIHJvdyB0b3AgYm9yZGVyICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcDogMDsKICAgIH0KCiAgICBbcGFydD0ncm93J106bGFzdC1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBib3JkZXItYm90dG9tOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnQ7CiAgICB9CgogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnQ9J3JvdyddOmxhc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBPdmVyZmxvdyB1c2VzIGEgc3Ryb25nZXIgYm9yZGVyIGNvbG9yICovCiAgICA6aG9zdChbb3ZlcmZsb3d+PSd0b3AnXSkgW3BhcnQ9J3JvdyddOmxhc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIEZvb3RlciBib3JkZXJzICovCgogICAgW3BhcnQ9J3JvdyddOmZpcnN0LWNoaWxkIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSB7CiAgICAgIGJvcmRlci10b3A6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIH0KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdmb290ZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBPdmVyZmxvdyB1c2VzIGEgc3Ryb25nZXIgYm9yZGVyIGNvbG9yICovCiAgICA6aG9zdChbb3ZlcmZsb3d+PSdib3R0b20nXSkgW3BhcnQ9J3JvdyddOmZpcnN0LWNoaWxkIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSB7CiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBDb2x1bW4gcmVvcmRlcmluZyAqLwoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdjZWxsJ10gewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgfQoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdjZWxsJ11bcmVvcmRlci1zdGF0dXM9J2FsbG93ZWQnXSB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgICB9CgogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXVtyZW9yZGVyLXN0YXR1cz0nZHJhZ2dpbmcnXSB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpLCB2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgfQoKICAgIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgb3BhY2l0eTogMC44NTsKICAgICAgYm94LXNoYWRvdzogdmFyKC0tbHVtby1ib3gtc2hhZG93LXMpOwogICAgICAvKiBUT0RPIFVzZSB0aGUgc2FtZSBzdHlsZXMgYXMgZm9yIHRoZSBjZWxsIGVsZW1lbnQgKHJlb3JkZXItZ2hvc3QgY29waWVzIHN0eWxlcyBmcm9tIHRoZSBjZWxsIGVsZW1lbnQpICovCiAgICAgIHBhZGRpbmc6IHZhcigtLWx1bW8tc3BhY2UtcykgdmFyKC0tbHVtby1zcGFjZS1tKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIENvbHVtbiByZXNpemluZyAqLwoKICAgIFtwYXJ0PSdyZXNpemUtaGFuZGxlJ10gewogICAgICB3aWR0aDogM3B4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgICBvcGFjaXR5OiAwOwogICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSAqOm5vdChbY29sdW1uLXJlc2l6aW5nXSkgW3BhcnR+PSdjZWxsJ106aG92ZXIgW3BhcnQ9J3Jlc2l6ZS1oYW5kbGUnXSwKICAgIFtwYXJ0PSdyZXNpemUtaGFuZGxlJ106YWN0aXZlIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4xNXM7CiAgICB9CgogICAgLyogQ29sdW1uIGJvcmRlcnMgKi8KCiAgICA6aG9zdChbdGhlbWV+PSdjb2x1bW4tYm9yZGVycyddKSBbcGFydH49J2NlbGwnXTpub3QoW2xhc3QtY29sdW1uXSk6bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBGcm96ZW4gY29sdW1ucyAqLwoKICAgIFtsYXN0LWZyb3plbl0gewogICAgICBib3JkZXItcmlnaHQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICA6aG9zdChbb3ZlcmZsb3d+PSdsZWZ0J10pIFtwYXJ0fj0nY2VsbCddW2xhc3QtZnJvemVuXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBSb3cgc3RyaXBlcyAqLwoKICAgIDpob3N0KFt0aGVtZX49J3Jvdy1zdHJpcGVzJ10pIFtwYXJ0fj0ncm93J106bm90KFtvZGRdKSBbcGFydH49J2JvZHktY2VsbCddLAogICAgOmhvc3QoW3RoZW1lfj0ncm93LXN0cmlwZXMnXSkgW3BhcnR+PSdyb3cnXTpub3QoW29kZF0pIFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10gewogICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbHVtby1jb250cmFzdC01cGN0KSwgdmFyKC0tbHVtby1jb250cmFzdC01cGN0KSk7CiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIH0KCiAgICAvKiBTZWxlY3RlZCByb3cgKi8KCiAgICAvKiBSYWlzZSB0aGUgc2VsZWN0ZWQgcm93cyBhYm92ZSB1bnNlbGVjdGVkIHJvd3MgKHNvIHRoYXQgYm94LXNoYWRvdyBjYW4gY292ZXIgdW5zZWxlY3RlZCByb3dzKSAqLwogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSBbcGFydH49J3JvdyddW3NlbGVjdGVkXSB7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSBbcGFydH49J3JvdyddW3NlbGVjdGVkXSBbcGFydH49J2JvZHktY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1fbHVtby1ncmlkLXNlbGVjdGVkLXJvdy1jb2xvciksIHZhcigtLV9sdW1vLWdyaWQtc2VsZWN0ZWQtcm93LWNvbG9yKSk7CiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CiAgICB9CgogICAgLyogQ292ZXIgdGhlIGJvcmRlciBvZiBhbiB1bnNlbGVjdGVkIHJvdyAqLwogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnR+PSdyb3cnXVtzZWxlY3RlZF0gW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm94LXNoYWRvdzogMCB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgMCAwIHZhcigtLV9sdW1vLWdyaWQtc2VsZWN0ZWQtcm93LWNvbG9yKTsKICAgIH0KCiAgICAvKiBDb21wYWN0ICovCgogICAgOmhvc3QoW3RoZW1lfj0nY29tcGFjdCddKSBbcGFydD0ncm93J106b25seS1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBtaW4taGVpZ2h0OiB2YXIoLS1sdW1vLXNpemUtbSk7CiAgICB9CgogICAgOmhvc3QoW3RoZW1lfj0nY29tcGFjdCddKSBbcGFydH49J2NlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1zKTsKICAgIH0KCiAgICA6aG9zdChbdGhlbWV+PSdjb21wYWN0J10pIFtwYXJ0PSdyb3cnXVtmaXJzdF0gW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1sdW1vLXNpemUtcykgLSB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkpOwogICAgfQoKICAgIDpob3N0KFt0aGVtZX49J2NvbXBhY3QnXSkgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBwYWRkaW5nOiB2YXIoLS1sdW1vLXNwYWNlLXhzKSB2YXIoLS1sdW1vLXNwYWNlLXMpOwogICAgfQoKICAgIC8qIFdyYXAgY2VsbCBjb250ZW50cyAqLwoKICAgIDpob3N0KFt0aGVtZX49J3dyYXAtY2VsbC1jb250ZW50J10pIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgIH0KCiAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XSBbcGFydH49J2NlbGwnXVtsYXN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMCAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddW2ZpcnN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXVt0aGVtZX49J2NvbHVtbi1ib3JkZXJzJ10pIFtwYXJ0fj0nY2VsbCddOm5vdChbbGFzdC1jb2x1bW5dKTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgIGJvcmRlci1sZWZ0OiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtZnJvemVuXSB7CiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXVtvdmVyZmxvd349J3JpZ2h0J10pIFtwYXJ0fj0nY2VsbCddW2xhc3QtZnJvemVuXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQogIGAse21vZHVsZUlkOiJsdW1vLWdyaWQifSksdDF0KCJ2YWFkaW4tY2hlY2tib3giLCRRdGAKICAgIDpob3N0KC52YWFkaW4tZ3JpZC1zZWxlY3QtYWxsLWNoZWNrYm94KSB7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICB9CiAgYCx7bW9kdWxlSWQ6InZhYWRpbi1ncmlkLXNlbGVjdC1hbGwtY2hlY2tib3gtbHVtbyJ9KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgTjF0PW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86aG9uZXxhZDsoPzogVTspPyBDUFUpIE9TIChcZCspLyksUjF0PU4xdCYmTjF0WzFdPj04LE8xdD1Vcih7YmVoYXZpb3JzOltDbywkb10sX3JhdGlvOi41LF9zY3JvbGxlclBhZGRpbmdUb3A6MCxfc2Nyb2xsUG9zaXRpb246MCxfcGh5c2ljYWxTaXplOjAsX3BoeXNpY2FsQXZlcmFnZTowLF9waHlzaWNhbEF2ZXJhZ2VDb3VudDowLF9waHlzaWNhbFRvcDowLF92aXJ0dWFsQ291bnQ6MCxfZXN0U2Nyb2xsSGVpZ2h0OjAsX3Njcm9sbEhlaWdodDowLF92aWV3cG9ydEhlaWdodDowLF92aWV3cG9ydFdpZHRoOjAsX3BoeXNpY2FsSXRlbXM6bnVsbCxfcGh5c2ljYWxTaXplczpudWxsLF9maXJzdFZpc2libGVJbmRleFZhbDpudWxsLF9sYXN0VmlzaWJsZUluZGV4VmFsOm51bGwsX21heFBhZ2VzOjIsX2ZvY3VzZWRWaXJ0dWFsSW5kZXg6LTEsX3RlbXBsYXRlQ29zdDowLGdldCBfcGh5c2ljYWxCb3R0b20oKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fcGh5c2ljYWxTaXplfSxnZXQgX3Njcm9sbEJvdHRvbSgpe3JldHVybiB0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF92aXJ0dWFsRW5kKCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTF9LGdldCBfaGlkZGVuQ29udGVudFNpemUoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxTaXplLXRoaXMuX3ZpZXdwb3J0SGVpZ2h0fSxnZXQgX21heFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fdmlld3BvcnRIZWlnaHQrdGhpcy5fc2Nyb2xsT2Zmc2V0fSxnZXQgX21heFZpcnR1YWxTdGFydCgpe3JldHVybiBNYXRoLm1heCgwLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl9waHlzaWNhbENvdW50KX0sc2V0IF92aXJ0dWFsU3RhcnQodCl7dD10aGlzLl9jbGFtcCh0LDAsdGhpcy5fbWF4VmlydHVhbFN0YXJ0KSx0aGlzLl92aXJ0dWFsU3RhcnRWYWw9dH0sZ2V0IF92aXJ0dWFsU3RhcnQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0VmFsfHwwfSxzZXQgX3BoeXNpY2FsU3RhcnQodCl7KHQlPXRoaXMuX3BoeXNpY2FsQ291bnQpPDAmJih0PXRoaXMuX3BoeXNpY2FsQ291bnQrdCksdGhpcy5fcGh5c2ljYWxTdGFydFZhbD10fSxnZXQgX3BoeXNpY2FsU3RhcnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxTdGFydFZhbHx8MH0sZ2V0IF9waHlzaWNhbEVuZCgpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMSkldGhpcy5fcGh5c2ljYWxDb3VudH0sc2V0IF9waHlzaWNhbENvdW50KHQpe3RoaXMuX3BoeXNpY2FsQ291bnRWYWw9dH0sZ2V0IF9waHlzaWNhbENvdW50KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsQ291bnRWYWx8fDB9LGdldCBfb3B0UGh5c2ljYWxTaXplKCl7cmV0dXJuIDA9PT10aGlzLl92aWV3cG9ydEhlaWdodD8xLzA6dGhpcy5fdmlld3BvcnRIZWlnaHQqdGhpcy5fbWF4UGFnZXN9LGdldCBfaXNWaXNpYmxlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5vZmZzZXRXaWR0aHx8dGhpcy5vZmZzZXRIZWlnaHQpfSxnZXQgZmlyc3RWaXNpYmxlSW5kZXgoKXtsZXQgdD10aGlzLl9maXJzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtsZXQgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dD10aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsbil7aWYoZSs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSxlPnRoaXMuX3Njcm9sbFBvc2l0aW9uKXJldHVybiBufSkpfHwwLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPXR9cmV0dXJuIHR9LGdldCBsYXN0VmlzaWJsZUluZGV4KCl7bGV0IHQ9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtsZXQgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihuLGkpe2U8dGhpcy5fc2Nyb2xsQm90dG9tJiYodD1pKSxlKz10aGlzLl9waHlzaWNhbFNpemVzW25dfSkpLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dH1yZXR1cm4gdH0sZ2V0IF9zY3JvbGxPZmZzZXQoKXtyZXR1cm4gdGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpLHRoaXMubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKX0sdXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7Y29uc3QgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKTt0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3A9dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzPzA6cGFyc2VJbnQodFsicGFkZGluZy10b3AiXSwxMCksdGhpcy5faXNSVEw9Qm9vbGVhbigicnRsIj09PXQuZGlyZWN0aW9uKSx0aGlzLl92aWV3cG9ydFdpZHRoPXRoaXMuJC5pdGVtcy5vZmZzZXRXaWR0aCx0aGlzLl92aWV3cG9ydEhlaWdodD10aGlzLl9zY3JvbGxUYXJnZXRIZWlnaHR9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uKCl7Y29uc3QgdD1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuX21heFNjcm9sbFRvcCx0aGlzLl9zY3JvbGxUb3ApKTtsZXQgZT10LXRoaXMuX3Njcm9sbFBvc2l0aW9uO2NvbnN0IG49ZT49MDtpZih0aGlzLl9zY3JvbGxQb3NpdGlvbj10LHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLE1hdGguYWJzKGUpPnRoaXMuX3BoeXNpY2FsU2l6ZSYmdGhpcy5fcGh5c2ljYWxTaXplPjApe2UtPXRoaXMuX3Njcm9sbE9mZnNldDtjb25zdCB0PU1hdGgucm91bmQoZS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrdCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrdCx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLHRoaXMuX3VwZGF0ZSgpfWVsc2UgaWYodGhpcy5fcGh5c2ljYWxDb3VudD4wKXtjb25zdHtwaHlzaWNhbFRvcDp0LGluZGV4ZXM6ZX09dGhpcy5fZ2V0UmV1c2FibGVzKG4pO24/KHRoaXMuX3BoeXNpY2FsVG9wPXQsdGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtlLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrZS5sZW5ndGgpOih0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0LWUubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydC1lLmxlbmd0aCksdGhpcy5fdXBkYXRlKGUsbj9udWxsOmUpLHRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcywwKSx2dCl9fSxfZ2V0UmV1c2FibGVzOmZ1bmN0aW9uKHQpe2xldCBlLG4saTtjb25zdCByPVtdLG89dGhpcy5faGlkZGVuQ29udGVudFNpemUqdGhpcy5fcmF0aW8sYT10aGlzLl92aXJ0dWFsU3RhcnQscz10aGlzLl92aXJ0dWFsRW5kLGw9dGhpcy5fcGh5c2ljYWxDb3VudDtsZXQgYz10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7Y29uc3QgdT10aGlzLl9zY3JvbGxUb3AsaD10aGlzLl9zY3JvbGxCb3R0b207Zm9yKHQ/KGU9dGhpcy5fcGh5c2ljYWxTdGFydCxuPXUtYyk6KGU9dGhpcy5fcGh5c2ljYWxFbmQsbj10aGlzLl9waHlzaWNhbEJvdHRvbSt0aGlzLl9zY3JvbGxPZmZzZXQtaCk7aT10aGlzLl9waHlzaWNhbFNpemVzW2VdLG4tPWksIShyLmxlbmd0aD49bHx8bjw9byk7KWlmKHQpe2lmKHMrci5sZW5ndGgrMT49dGhpcy5fdmlydHVhbENvdW50KWJyZWFrO2lmKGMraT49dS10aGlzLl9zY3JvbGxPZmZzZXQpYnJlYWs7ci5wdXNoKGUpLGMrPWksZT0oZSsxKSVsfWVsc2V7aWYoYS1yLmxlbmd0aDw9MClicmVhaztpZihjK3RoaXMuX3BoeXNpY2FsU2l6ZS1pPD1oKWJyZWFrO3IucHVzaChlKSxjLT1pLGU9MD09PWU/bC0xOmUtMX1yZXR1cm57aW5kZXhlczpyLHBoeXNpY2FsVG9wOmMtdGhpcy5fc2Nyb2xsT2Zmc2V0fX0sX3VwZGF0ZTpmdW5jdGlvbih0LGUpe2lmKCEodCYmMD09PXQubGVuZ3RofHwwPT09dGhpcy5fcGh5c2ljYWxDb3VudCkpe2lmKHRoaXMuX2Fzc2lnbk1vZGVscyh0KSx0aGlzLl91cGRhdGVNZXRyaWNzKHQpLGUpZm9yKDtlLmxlbmd0aDspe2NvbnN0IHQ9ZS5wb3AoKTt0aGlzLl9waHlzaWNhbFRvcC09dGhpcy5fcGh5c2ljYWxTaXplc1t0XX10aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9fSxfaXNDbGllbnRGdWxsOmZ1bmN0aW9uKCl7cmV0dXJuIDAhPXRoaXMuX3Njcm9sbEJvdHRvbSYmdGhpcy5fcGh5c2ljYWxCb3R0b20tMT49dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbFRvcDw9dGhpcy5fc2Nyb2xsUG9zaXRpb259LF9pbmNyZWFzZVBvb2xJZk5lZWRlZDpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2NsYW1wKHRoaXMuX3BoeXNpY2FsQ291bnQrdCwzLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQpLXRoaXMuX3BoeXNpY2FsQ291bnQ7bGV0IG49TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KTtpZighKGU8MCkpe2lmKGU+MCl7Y29uc3QgdD13aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7W10ucHVzaC5hcHBseSh0aGlzLl9waHlzaWNhbEl0ZW1zLHRoaXMuX2NyZWF0ZVBvb2woZSkpO2ZvcihsZXQgdD0wO3Q8ZTt0KyspdGhpcy5fcGh5c2ljYWxTaXplcy5wdXNoKDApO3RoaXMuX3BoeXNpY2FsQ291bnQ9dGhpcy5fcGh5c2ljYWxDb3VudCtlLHRoaXMuX3BoeXNpY2FsU3RhcnQ+dGhpcy5fcGh5c2ljYWxFbmQmJnRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KSYmdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KTx0aGlzLl9waHlzaWNhbEVuZCYmKHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtlKSx0aGlzLl91cGRhdGUoKSx0aGlzLl90ZW1wbGF0ZUNvc3Q9KHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKS10KS9lLG49TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KX10aGlzLl92aXJ0dWFsRW5kPj10aGlzLl92aXJ0dWFsQ291bnQtMXx8MD09PW58fCh0aGlzLl9pc0NsaWVudEZ1bGwoKT90aGlzLl9waHlzaWNhbFNpemU8dGhpcy5fb3B0UGh5c2ljYWxTaXplJiZ0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsdGhpcy5fY2xhbXAoTWF0aC5yb3VuZCg1MC90aGlzLl90ZW1wbGF0ZUNvc3QpLDEsbikpLHl0KTp0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsbiksdnQpKX19LF9yZW5kZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2lzVmlzaWJsZSlpZigwIT09dGhpcy5fcGh5c2ljYWxDb3VudCl7Y29uc3R7cGh5c2ljYWxUb3A6dCxpbmRleGVzOmV9PXRoaXMuX2dldFJldXNhYmxlcyghMCk7dGhpcy5fcGh5c2ljYWxUb3A9dCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2UubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtlLmxlbmd0aCx0aGlzLl91cGRhdGUoZSksdGhpcy5fdXBkYXRlKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCl9ZWxzZSB0aGlzLl92aXJ0dWFsQ291bnQ+MCYmKHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMykpfSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpeyJpdGVtcyI9PT10LnBhdGgmJih0aGlzLl92aXJ0dWFsU3RhcnQ9MCx0aGlzLl9waHlzaWNhbFRvcD0wLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdGhpcy5fcGh5c2ljYWxJbmRleEZvcktleT17fSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnR8fDAsdGhpcy5fcGh5c2ljYWxJdGVtcz10aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSx0aGlzLl9waHlzaWNhbFNpemVzPXRoaXMuX3BoeXNpY2FsU2l6ZXN8fFtdLHRoaXMuX3BoeXNpY2FsU3RhcnQ9MCx0aGlzLl9zY3JvbGxUb3A+dGhpcy5fc2Nyb2xsT2Zmc2V0JiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKDApLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpKX0sX2l0ZXJhdGVJdGVtczpmdW5jdGlvbih0LGUpe2xldCBuLGkscixvO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiZlKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWlmKG49ZVtvXSxpPXRoaXMuX2NvbXB1dGVWaWR4KG4pLG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfWVsc2V7Zm9yKG49dGhpcy5fcGh5c2ljYWxTdGFydCxpPXRoaXMuX3ZpcnR1YWxTdGFydDtuPHRoaXMuX3BoeXNpY2FsQ291bnQ7bisrLGkrKylpZihudWxsIT0ocj10LmNhbGwodGhpcyxuLGkpKSlyZXR1cm4gcjtmb3Iobj0wO248dGhpcy5fcGh5c2ljYWxTdGFydDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByfX0sX2NvbXB1dGVWaWR4OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl9waHlzaWNhbFN0YXJ0P3RoaXMuX3ZpcnR1YWxTdGFydCsodC10aGlzLl9waHlzaWNhbFN0YXJ0KTp0aGlzLl92aXJ0dWFsU3RhcnQrKHRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fcGh5c2ljYWxTdGFydCkrdH0sX3VwZGF0ZU1ldHJpY3M6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2lzVmlzaWJsZSlyZXR1cm47V2koKTtsZXQgZT0wLG49MDtjb25zdCBpPXRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50LHI9dGhpcy5fcGh5c2ljYWxBdmVyYWdlO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCl7bis9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSx0aGlzLl9waHlzaWNhbFNpemVzW3RdPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF0ub2Zmc2V0SGVpZ2h0LGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0/MTowfSksdCksdGhpcy5fcGh5c2ljYWxTaXplPXRoaXMuX3BoeXNpY2FsU2l6ZStlLW4sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQhPT1pJiYodGhpcy5fcGh5c2ljYWxBdmVyYWdlPU1hdGgucm91bmQoKHIqaStlKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCkpfSxfcG9zaXRpb25JdGVtczpmdW5jdGlvbigpe3RoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKCk7bGV0IHQ9dGhpcy5fcGh5c2ljYWxUb3A7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihlKXt0aGlzLnRyYW5zbGF0ZTNkKDAsdCsicHgiLDAsdGhpcy5fcGh5c2ljYWxJdGVtc1tlXSksdCs9dGhpcy5fcGh5c2ljYWxTaXplc1tlXX0pKX0sX2FkanVzdFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7Y29uc3QgdD0wPT09dGhpcy5fdmlydHVhbFN0YXJ0P3RoaXMuX3BoeXNpY2FsVG9wOk1hdGgubWluKHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3BoeXNpY2FsVG9wLDApO2lmKDAhPT10KXt0aGlzLl9waHlzaWNhbFRvcD10aGlzLl9waHlzaWNhbFRvcC10O2NvbnN0IGU9dGhpcy5fc2Nyb2xsVG9wOyFSMXQmJmU+MCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbihlLXQpfX0sX3Jlc2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxUYXJnZXQmJnQ+PTAmJih0aGlzLl9zY3JvbGxUb3A9dCx0aGlzLl9zY3JvbGxQb3NpdGlvbj10aGlzLl9zY3JvbGxUb3ApfSxfdXBkYXRlU2Nyb2xsZXJTaXplOmZ1bmN0aW9uKHQpe3RoaXMuX2VzdFNjcm9sbEhlaWdodD10aGlzLl9waHlzaWNhbEJvdHRvbStNYXRoLm1heCh0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQsMCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLCgodD0odD10fHwwPT09dGhpcy5fc2Nyb2xsSGVpZ2h0KXx8dGhpcy5fc2Nyb2xsUG9zaXRpb24+PXRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9waHlzaWNhbFNpemUpfHxNYXRoLmFicyh0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fc2Nyb2xsSGVpZ2h0KT49dGhpcy5fdmlld3BvcnRIZWlnaHQpJiYodGhpcy4kLml0ZW1zLnN0eWxlLmhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQrInB4Iix0aGlzLl9zY3JvbGxIZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KX0sc2Nyb2xsVG9JbmRleDpmdW5jdGlvbih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHR8fHQ8MHx8dD50aGlzLml0ZW1zLmxlbmd0aC0xKXJldHVybjtpZihXaSgpLDA9PT10aGlzLl9waHlzaWNhbENvdW50KXJldHVybjt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl92aXJ0dWFsQ291bnQtMSksKCF0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHQ+PXRoaXMuX21heFZpcnR1YWxTdGFydCkmJih0aGlzLl92aXJ0dWFsU3RhcnQ9dC0xKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl91cGRhdGVNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZTtsZXQgZT10aGlzLl9waHlzaWNhbFN0YXJ0LG49dGhpcy5fdmlydHVhbFN0YXJ0LGk9MDtjb25zdCByPXRoaXMuX2hpZGRlbkNvbnRlbnRTaXplO2Zvcig7bjx0JiZpPD1yOylpKz10aGlzLl9waHlzaWNhbFNpemVzW2VdLGU9KGUrMSkldGhpcy5fcGh5c2ljYWxDb3VudCxuKys7dGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCEwKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQraSksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGx9LF9yZXNldEF2ZXJhZ2U6ZnVuY3Rpb24oKXt0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9MCx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudD0wfSxfcmVzaXplSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIiwoZnVuY3Rpb24oKXt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLnVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcygpLHRoaXMuX2lzVmlzaWJsZT8odGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMCksdGhpcy5fcmVzZXRBdmVyYWdlKCksdGhpcy5fcmVuZGVyKCkpOnRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEpfSksX3QpfSxfaXNJbmRleFJlbmRlcmVkOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLl92aXJ0dWFsU3RhcnQmJnQ8PXRoaXMuX3ZpcnR1YWxFbmR9LF9nZXRQaHlzaWNhbEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0Kyh0LXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnR9LF9jbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LF9kZWJvdW5jZTpmdW5jdGlvbih0LGUsbil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPUluLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbixlLmJpbmQodGhpcykpLFJuKHRoaXMuX2RlYm91bmNlcnNbdF0pfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjbGFzcyB6MXQgZXh0ZW5kcyBPMXR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3NpemU6e3R5cGU6TnVtYmVyLG5vdGlmeTohMH0sX3ZpZHhPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2VmZmVjdGl2ZVNpemVDaGFuZ2VkKF9lZmZlY3RpdmVTaXplKSJdfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCl9X3VwZGF0ZVNjcm9sbGVySXRlbSgpe31fYWZ0ZXJTY3JvbGwoKXt9X2dldFJvd1RhcmdldCgpe31fY3JlYXRlU2Nyb2xsZXJSb3dzKCl7fV9jYW5Qb3B1bGF0ZSgpe31zY3JvbGxUb0luZGV4KHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJzY3JvbGxUb0luZGV4IiksdGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMCx0PU1hdGgubWluKE1hdGgubWF4KHQsMCksdGhpcy5fZWZmZWN0aXZlU2l6ZS0xKSx0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXQvdGhpcy5fZWZmZWN0aXZlU2l6ZSoodGhpcy4kLnRhYmxlLnNjcm9sbEhlaWdodC10aGlzLiQudGFibGUub2Zmc2V0SGVpZ2h0KSx0aGlzLl9zY3JvbGxIYW5kbGVyKCksdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9tYXhTY3JvbGxUb3ApKSYmdGhpcy5fdmlydHVhbENvdW50PHRoaXMuX2VmZmVjdGl2ZVNpemUmJnRoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCgxZTYpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIuc2Nyb2xsVG9JbmRleCh0LXRoaXMuX3ZpZHhPZmZzZXQpKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpO2NvbnN0IGU9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+ZS5pbmRleD09PXQpKVswXTtpZihlKXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO01hdGguYWJzKHQpPjEmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz10LHRoaXMuX3Njcm9sbEhhbmRsZXIoKSl9dGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMX1fZWZmZWN0aXZlU2l6ZUNoYW5nZWQodCl7bGV0IGUsbj0wO2lmKHRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsaSk9PntpZihpPT09dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpe2NvbnN0IGk9dGhpcy5fcGh5c2ljYWxJdGVtc1t0XTtlPWkuaW5kZXgsbj1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH19KSksdGhpcy5pdGVtcyYmdDx0aGlzLml0ZW1zLmxlbmd0aCYmKHRoaXMuX3Njcm9sbFRvcD0wKSwhQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSl7dGhpcy5pdGVtcz17bGVuZ3RoOk1hdGgubWluKHQsMWU1KX19dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT5zdXBlci5faXRlbXNDaGFuZ2VkKHtwYXRoOiJpdGVtcyJ9KSkpLHRoaXMuX3ZpcnR1YWxDb3VudD1NYXRoLm1pbih0aGlzLml0ZW1zLmxlbmd0aCx0KXx8MCwwPT09dGhpcy5fc2Nyb2xsVG9wJiYodGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9zY3JvbGxUb0luZGV4KE1hdGgubWluKHQtMSxlKSkpKSx0aGlzLl9pdGVyYXRlSXRlbXMoKHQ9Pntjb25zdCBpPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07aWYoaS5pbmRleD09PWUmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1NYXRoLnJvdW5kKGkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLW4pKSxpLmluZGV4PT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCYmdGhpcy5faXRlbXNGb2N1c2FibGUmJnRoaXMuJC5pdGVtcy5jb250YWlucyh0aGlzLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCkpe2NvbnN0IHQ9QXJyYXkuZnJvbSh0aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnRFbGVtZW50LmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuX2l0ZW1zRm9jdXNhYmxlKTtpLmNoaWxkcmVuW3RdLmZvY3VzKCl9fSkpKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl91cGRhdGUoKSkpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9wb3NpdGlvbkl0ZW1zKCl7bGV0IHQ7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKSxpc05hTih0aGlzLl9waHlzaWNhbFRvcCkmJih0PSEwLHRoaXMuX3BoeXNpY2FsVG9wPTApO2xldCBlPXRoaXMuX3BoeXNpY2FsVG9wO3RoaXMuX2l0ZXJhdGVJdGVtcygodD0+e3RoaXMuX3BoeXNpY2FsSXRlbXNbdF0uc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVZKCR7ZX1weClgLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF19KSksdCYmdGhpcy5fc2Nyb2xsVG9JbmRleCgwKX1faW5jcmVhc2VQb29sSWZOZWVkZWQodCl7MD09PXQmJnRoaXMuX3Njcm9sbGluZ1RvSW5kZXh8fCF0aGlzLl9jYW5Qb3B1bGF0ZSgpfHwhdGhpcy5fZWZmZWN0aXZlU2l6ZXx8KHRoaXMuX2luaXRpYWxQb29sQ3JlYXRlZD90aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJih0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbD1Jbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCxfdCwoKCk9Pnt0aGlzLl91cGRhdGVNZXRyaWNzKCk7bGV0IHQ9TWF0aC5jZWlsKCh0aGlzLl9vcHRQaHlzaWNhbFNpemUtdGhpcy5fcGh5c2ljYWxTaXplKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3BoeXNpY2FsQ291bnQrdD50aGlzLl9lZmZlY3RpdmVTaXplJiYodD1NYXRoLm1heCgwLHRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fcGh5c2ljYWxDb3VudCkpLHRoaXMuX3BoeXNpY2FsU2l6ZSYmdD4wJiZ0aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJihzdXBlci5faW5jcmVhc2VQb29sSWZOZWVkZWQodCksdGhpcy5fX3Jlb3JkZXJDaGlsZE5vZGVzKCkpfSkpKToodGhpcy5faW5pdGlhbFBvb2xDcmVhdGVkPSEwLHN1cGVyLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgyNSkpKX1fX3Jlb3JkZXJDaGlsZE5vZGVzKCl7Y29uc3QgdD1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZE5vZGVzKTshIXQucmVkdWNlKCgodCxlLG4saSk9PntpZigwPT09bnx8aVtuLTFdLmluZGV4PT09ZS5pbmRleC0xKXJldHVybiB0fSksITApfHx0LnNvcnQoKCh0LGUpPT50LmluZGV4LWUuaW5kZXgpKS5mb3JFYWNoKCh0PT50aGlzLiQuaXRlbXMuYXBwZW5kQ2hpbGQodCkpKX1fY3JlYXRlUG9vbCh0KXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPXRoaXMuX2NyZWF0ZVNjcm9sbGVyUm93cyh0KTtuLmZvckVhY2goKHQ9PmUuYXBwZW5kQ2hpbGQodCkpKSx0aGlzLl9nZXRSb3dUYXJnZXQoKS5hcHBlbmRDaGlsZChlKTtjb25zdCBpPXRoaXMucXVlcnlTZWxlY3RvcigiW3Nsb3RdIik7aWYoaSl7Y29uc3QgdD1pLmdldEF0dHJpYnV0ZSgic2xvdCIpO2kuc2V0QXR0cmlidXRlKCJzbG90IiwiZm9vLWJhciIpLGkuc2V0QXR0cmlidXRlKCJzbG90Iix0KX1yZXR1cm4gRGkodGhpcywoKCk9PnRoaXMubm90aWZ5UmVzaXplKCkpKSxufV9hc3NpZ25Nb2RlbHModCl7dGhpcy5faXRlcmF0ZUl0ZW1zKCgodCxlKT0+e2NvbnN0IG49dGhpcy5fcGh5c2ljYWxJdGVtc1t0XTt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImhpZGRlbiIsZT49dGhpcy5fZWZmZWN0aXZlU2l6ZSxuKSx0aGlzLl91cGRhdGVTY3JvbGxlckl0ZW0obixlKyh0aGlzLl92aWR4T2Zmc2V0fHwwKSl9KSx0KX1fc2Nyb2xsSGFuZGxlcigpe2NvbnN0IHQ9dGhpcy4kLnRhYmxlLnNjcm9sbFRvcC10aGlzLl9zY3JvbGxQb3NpdGlvbjt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSShzdXBlci5fc2Nyb2xsSGFuZGxlcik7Y29uc3QgZT10aGlzLl92aWR4T2Zmc2V0O3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+dGhpcy5fbWF4U2Nyb2xsVG9wKSkmJnRoaXMuX3ZpcnR1YWxDb3VudDx0aGlzLl9lZmZlY3RpdmVTaXplP3RoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCh0KTp0aGlzLl92aWR4T2Zmc2V0PTAsdGhpcy5fdmlkeE9mZnNldCE9PWUmJnRoaXMuX3VwZGF0ZSgpLHRoaXMuX2FmdGVyU2Nyb2xsKCl9X2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCh0KXtpZihNYXRoLmFicyh0KT4xZTQpe2lmKHRoaXMuX25vU2NhbGUpcmV0dXJuIHZvaWQodGhpcy5fbm9TY2FsZT0hMSk7Y29uc3QgdD10aGlzLiQudGFibGUuc2Nyb2xsVG9wLyh0aGlzLiQudGFibGUuc2Nyb2xsSGVpZ2h0LXRoaXMuJC50YWJsZS5vZmZzZXRIZWlnaHQpO3RoaXMuX3ZpZHhPZmZzZXQ9TWF0aC5yb3VuZCh0KnRoaXMuX2VmZmVjdGl2ZVNpemUtdCp0aGlzLl92aXJ0dWFsQ291bnQpfWVsc2V7Y29uc3QgdD10aGlzLl92aWR4T2Zmc2V0fHwwLGU9MWUzLG49MTAwOzA9PT10aGlzLl9zY3JvbGxUb3A/KHRoaXMuX3ZpZHhPZmZzZXQ9MCx0IT09dGhpcy5fdmlkeE9mZnNldCYmc3VwZXIuc2Nyb2xsVG9JbmRleCgwKSk6dGhpcy5maXJzdFZpc2libGVJbmRleDxlJiZ0aGlzLl92aWR4T2Zmc2V0PjAmJih0aGlzLl92aWR4T2Zmc2V0LT1NYXRoLm1pbih0aGlzLl92aWR4T2Zmc2V0LG4pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgrKHQtdGhpcy5fdmlkeE9mZnNldCkpLHRoaXMuX25vU2NhbGU9ITApO2NvbnN0IGk9dGhpcy5fZWZmZWN0aXZlU2l6ZS10aGlzLl92aXJ0dWFsQ291bnQ7dGhpcy5fc2Nyb2xsVG9wPj10aGlzLl9tYXhTY3JvbGxUb3AmJnRoaXMuX21heFNjcm9sbFRvcD4wPyh0aGlzLl92aWR4T2Zmc2V0PWksdCE9PXRoaXMuX3ZpZHhPZmZzZXQmJnN1cGVyLnNjcm9sbFRvSW5kZXgodGhpcy5fdmlydHVhbENvdW50KSk6dGhpcy5maXJzdFZpc2libGVJbmRleD50aGlzLl92aXJ0dWFsQ291bnQtZSYmdGhpcy5fdmlkeE9mZnNldDxpJiYodGhpcy5fdmlkeE9mZnNldCs9TWF0aC5taW4oaS10aGlzLl92aWR4T2Zmc2V0LG4pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgtKHRoaXMuX3ZpZHhPZmZzZXQtdCkpLHRoaXMuX25vU2NhbGU9ITApfX1fYWNjZXNzSXJvbkxpc3RBUEkodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3NBc3luY0VuYWJsZWQ9ITE7Y29uc3QgZT10LmFwcGx5KHRoaXMpO3JldHVybiB0aGlzLl9kZWJvdW5jZXJXYXJuUHJpdmF0ZUFQSUFjY2Vzcz1Jbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJXYXJuUHJpdmF0ZUFQSUFjY2VzcyxfdCwoKCk9PnRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkPSEwKSksZX1fZGVib3VuY2VSZW5kZXIodCxlKXtzdXBlci5fZGVib3VuY2VSZW5kZXIoKCgpPT50aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSh0KSksZSl9X3dhcm5Qcml2YXRlQVBJQWNjZXNzKHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkJiZjb25zb2xlLndhcm4oYEFjY2Vzc2luZyBwcml2YXRlIEFQSSAoJHt0fSkhYCl9X3JlbmRlcigpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZW5kZXIpfV9pdGVtc0NoYW5nZWQoKXt9Z2V0IF9maXJzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLmZpcnN0VmlzaWJsZUluZGV4KSl9Z2V0IF9sYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIubGFzdFZpc2libGVJbmRleCkpfV9zY3JvbGxUb0luZGV4KHQpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+dGhpcy5zY3JvbGxUb0luZGV4KHQpKSl9Z2V0IGZpcnN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJmaXJzdFZpc2libGVJbmRleCIpLHN1cGVyLmZpcnN0VmlzaWJsZUluZGV4fXNldCBmaXJzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygiZmlyc3RWaXNpYmxlSW5kZXgiKSxzdXBlci5maXJzdFZpc2libGVJbmRleD10fWdldCBsYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJsYXN0VmlzaWJsZUluZGV4Iiksc3VwZXIubGFzdFZpc2libGVJbmRleH1zZXQgbGFzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygibGFzdFZpc2libGVJbmRleCIpLHN1cGVyLmxhc3RWaXNpYmxlSW5kZXg9dH11cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygidXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzIiksc3VwZXIudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1fcmVzaXplSGFuZGxlcigpe3N1cGVyLl9yZXNpemVIYW5kbGVyKCksV2koKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovY29uc3QgRDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2ExMXlVcGRhdGVHcmlkU2l6ZShzaXplLCBfY29sdW1uVHJlZSwgX2NvbHVtblRyZWUuKikiXX1fYTExeUdldEhlYWRlclJvd0NvdW50KHQpe3JldHVybiB0LmZpbHRlcigodD0+dC5zb21lKCh0PT50Ll9oZWFkZXJUZW1wbGF0ZXx8dC5oZWFkZXJSZW5kZXJlcnx8dC5wYXRofHx0LmhlYWRlcikpKSkubGVuZ3RofV9hMTF5R2V0Rm9vdGVyUm93Q291bnQodCl7cmV0dXJuIHQuZmlsdGVyKCh0PT50LnNvbWUoKHQ9PnQuX2hlYWRlclRlbXBsYXRlfHx0LmhlYWRlclJlbmRlcmVyKSkpKS5sZW5ndGh9X2ExMXlVcGRhdGVHcmlkU2l6ZSh0LGUpe2lmKHZvaWQgMD09PXR8fHZvaWQgMD09PWUpcmV0dXJuO2NvbnN0IG49ZVtlLmxlbmd0aC0xXTt0aGlzLiQudGFibGUuc2V0QXR0cmlidXRlKCJhcmlhLXJvd2NvdW50Iix0K3RoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudChlKSt0aGlzLl9hMTF5R2V0Rm9vdGVyUm93Q291bnQoZSkpLHRoaXMuJC50YWJsZS5zZXRBdHRyaWJ1dGUoImFyaWEtY29sY291bnQiLG4mJm4ubGVuZ3RofHwwKSx0aGlzLl9hMTF5VXBkYXRlSGVhZGVyUm93cygpLHRoaXMuX2ExMXlVcGRhdGVGb290ZXJSb3dzKCl9X2ExMXlVcGRhdGVIZWFkZXJSb3dzKCl7QXJyYXkuZnJvbSh0aGlzLiQuaGVhZGVyLmNoaWxkcmVuKS5mb3JFYWNoKCgodCxlKT0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgiLGUrMSkpKX1fYTExeVVwZGF0ZUZvb3RlclJvd3MoKXtBcnJheS5mcm9tKHRoaXMuJC5mb290ZXIuY2hpbGRyZW4pLmZvckVhY2goKCh0LGUpPT50LnNldEF0dHJpYnV0ZSgiYXJpYS1yb3dpbmRleCIsdGhpcy5fYTExeUdldEhlYWRlclJvd0NvdW50KHRoaXMuX2NvbHVtblRyZWUpK3RoaXMuc2l6ZStlKzEpKSl9X2ExMXlVcGRhdGVSb3dSb3dpbmRleCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLXJvd2luZGV4IixlK3RoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0aGlzLl9jb2x1bW5UcmVlKSsxKX1fYTExeVVwZGF0ZVJvd1NlbGVjdGVkKHQsZSl7dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLEJvb2xlYW4oZSkpLEFycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLEJvb2xlYW4oZSkpKSl9X2ExMXlVcGRhdGVSb3dMZXZlbCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLWxldmVsIixlKzEpfV9hMTF5VXBkYXRlUm93RGV0YWlsc09wZW5lZCh0LGUpe0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+eyJib29sZWFuIj09dHlwZW9mIGU/dC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLGUpOnQuaGFzQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIikmJnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIil9KSl9X2ExMXlTZXRSb3dEZXRhaWxzQ2VsbCh0LGUpe0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QhPT1lJiZ0LnNldEF0dHJpYnV0ZSgiYXJpYS1jb250cm9scyIsZS5pZCl9KSl9X2ExMXlVcGRhdGVDZWxsQ29sc3Bhbih0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLWNvbHNwYW4iLE51bWJlcihlKSl9X2ExMXlVcGRhdGVTb3J0ZXJzKCl7QXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoInZhYWRpbi1ncmlkLXNvcnRlciIpKS5mb3JFYWNoKCh0PT57bGV0IGU9dC5wYXJlbnROb2RlO2Zvcig7ZSYmInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIhPT1lLmxvY2FsTmFtZTspZT1lLnBhcmVudE5vZGU7aWYoZSYmZS5hc3NpZ25lZFNsb3Qpe2UuYXNzaWduZWRTbG90LnBhcmVudE5vZGUuc2V0QXR0cmlidXRlKCJhcmlhLXNvcnQiLHthc2M6ImFzY2VuZGluZyIsZGVzYzoiZGVzY2VuZGluZyJ9W1N0cmluZyh0LmRpcmVjdGlvbildfHwibm9uZSIpfX0pKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEIxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2FjdGl2ZUl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMCx2YWx1ZTpudWxsfX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuJC5zY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fb25DbGljay5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNlbGwtYWN0aXZhdGUiLHRoaXMuX2FjdGl2YXRlSXRlbS5iaW5kKHRoaXMpKX1fYWN0aXZhdGVJdGVtKHQpe2NvbnN0IGU9dC5kZXRhaWwubW9kZWwsbj1lP2UuaXRlbTpudWxsO24mJih0aGlzLmFjdGl2ZUl0ZW09dGhpcy5faXRlbXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sbik/bnVsbDpuKX1fb25DbGljayh0KXtpZih0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKSxuPWVbZS5pbmRleE9mKHRoaXMuJC50YWJsZSktM107aWYoIW58fG4uZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZigiZGV0YWlscy1jZWxsIik+LTEpcmV0dXJuO2NvbnN0IGk9bi5fY29udGVudCxyPXRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50O2kuY29udGFpbnMocil8fHRoaXMuX2lzRm9jdXNhYmxlKHQudGFyZ2V0KXx8dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1hY3RpdmF0ZSIse2RldGFpbDp7bW9kZWw6dGhpcy5fX2dldFJvd01vZGVsKG4ucGFyZW50RWxlbWVudCl9fSkpfV9pc0ZvY3VzYWJsZSh0KXtyZXR1cm4gSDF0KHQpfX0sSDF0PXQ9PntpZighdC5wYXJlbnROb2RlKXJldHVybiExO2NvbnN0IGU9LTEhPT1BcnJheS5mcm9tKHQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCJbdGFiaW5kZXhdLCBidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBvYmplY3QsIGlmcmFtZSwgbGFiZWwsIGFbaHJlZl0sIGFyZWFbaHJlZl0iKSkuZmlsdGVyKCh0PT4iY2VsbCBib2R5LWNlbGwiIT09dC5nZXRBdHRyaWJ1dGUoInBhcnQiKSkpLmluZGV4T2YodCk7cmV0dXJuIXQuZGlzYWJsZWQmJmV9LEYxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOkFycmF5fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2l0ZW1zQ2hhbmdlZChpdGVtcywgaXRlbXMuKiwgaXNBdHRhY2hlZCkiXX1faXRlbXNDaGFuZ2VkKHQsZSxuKXtpZihuKXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbnVsbD09dCYmKHRoaXMuc2l6ZT0wKSx2b2lkKHRoaXMuZGF0YVByb3ZpZGVyPT09dGhpcy5fYXJyYXlEYXRhUHJvdmlkZXImJih0aGlzLmRhdGFQcm92aWRlcj12b2lkIDApKTt0aGlzLnNpemU9dC5sZW5ndGgsdGhpcy5kYXRhUHJvdmlkZXI9dGhpcy5kYXRhUHJvdmlkZXJ8fHRoaXMuX2FycmF5RGF0YVByb3ZpZGVyLHRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfX1fYXJyYXlEYXRhUHJvdmlkZXIodCxlKXtsZXQgbj0oQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKT90aGlzLml0ZW1zOltdKS5zbGljZSgwKTt0aGlzLl9maWx0ZXJzJiZ0aGlzLl9jaGVja1BhdGhzKHRoaXMuX2ZpbHRlcnMsImZpbHRlcmluZyIsbikmJihuPXRoaXMuX2ZpbHRlcihuKSksdGhpcy5zaXplPW4ubGVuZ3RoLHQuc29ydE9yZGVycy5sZW5ndGgmJnRoaXMuX2NoZWNrUGF0aHModGhpcy5fc29ydGVycywic29ydGluZyIsbikmJihuPW4uc29ydCh0aGlzLl9tdWx0aVNvcnQuYmluZCh0aGlzKSkpO2NvbnN0IGk9dC5wYWdlKnQucGFnZVNpemU7ZShuLnNsaWNlKGksaSt0LnBhZ2VTaXplKSxuLmxlbmd0aCl9X2NoZWNrUGF0aHModCxlLG4pe2lmKCFuLmxlbmd0aClyZXR1cm4hMTtsZXQgaT0hMDtmb3IobGV0IHIgaW4gdCl7Y29uc3Qgbz10W3JdLnBhdGg7aWYoIW98fC0xPT09by5pbmRleE9mKCIuIikpY29udGludWU7Y29uc3QgYT1vLnJlcGxhY2UoL1wuW14uXSokLywiIik7dm9pZCAwPT09RW8uZ2V0KGEsblswXSkmJihjb25zb2xlLndhcm4oYFBhdGggIiR7b30iIHVzZWQgZm9yICR7ZX0gZG9lcyBub3QgZXhpc3QgaW4gYWxsIG9mIHRoZSBpdGVtcywgJHtlfSBpcyBkaXNhYmxlZC5gKSxpPSExKX1yZXR1cm4gaX1fbXVsdGlTb3J0KHQsZSl7cmV0dXJuIHRoaXMuX3NvcnRlcnMubWFwKChuPT4iYXNjIj09PW4uZGlyZWN0aW9uP3RoaXMuX2NvbXBhcmUoRW8uZ2V0KG4ucGF0aCx0KSxFby5nZXQobi5wYXRoLGUpKToiZGVzYyI9PT1uLmRpcmVjdGlvbj90aGlzLl9jb21wYXJlKEVvLmdldChuLnBhdGgsZSksRW8uZ2V0KG4ucGF0aCx0KSk6MCkpLnJlZHVjZSgoKHQsZSk9PnR8fGUpLDApfV9ub3JtYWxpemVFbXB0eVZhbHVlKHQpe3JldHVyblt2b2lkIDAsbnVsbF0uaW5kZXhPZih0KT49MD8iIjppc05hTih0KT90LnRvU3RyaW5nKCk6dH1fY29tcGFyZSh0LGUpe3JldHVybih0PXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUodCkpPChlPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZSkpPy0xOnQ+ZT8xOjB9X2ZpbHRlcih0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PjA9PT10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+e2NvbnN0IG49dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShFby5nZXQoZS5wYXRoLHQpKSxpPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZS52YWx1ZSkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xPT09bi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpKX0pKS5sZW5ndGgpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFYxdD10PT5jbGFzcyBleHRlbmRzKGJpKHQpKXtyZWFkeSgpe3N1cGVyLnJlYWR5KCk7Y29uc3QgdD10aGlzLiQuc2Nyb2xsZXI7Y2kodCwidHJhY2siLHRoaXMuX29uSGVhZGVyVHJhY2suYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLChlPT50Lmhhc0F0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIikmJmUucHJldmVudERlZmF1bHQoKSkpLHQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCh0PT4icmVzaXplLWhhbmRsZSI9PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKHQ9PiJyZXNpemUtaGFuZGxlIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKX1fb25IZWFkZXJUcmFjayh0KXtjb25zdCBlPXQudGFyZ2V0O2lmKCJyZXNpemUtaGFuZGxlIj09PWUuZ2V0QXR0cmlidXRlKCJwYXJ0Iikpe2xldCBuPWUucGFyZW50RWxlbWVudC5fY29sdW1uO2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImNvbHVtbi1yZXNpemluZyIsITAsdGhpcy4kLnNjcm9sbGVyKTsidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PW4ubG9jYWxOYW1lOyluPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4uX2NoaWxkQ29sdW1ucywwKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9vcmRlci1lLl9vcmRlcn0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LmhpZGRlbn0pKS5wb3AoKTtjb25zdCBpPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49InJvdyJdOmxhc3QtY2hpbGQgW3BhcnR+PSJjZWxsIl0nKSkscj1pLmZpbHRlcigodD0+dC5fY29sdW1uPT09bikpWzBdO2lmKHIub2Zmc2V0V2lkdGgpe2NvbnN0IGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUociksaT0xMCtwYXJzZUludChlLnBhZGRpbmdMZWZ0KStwYXJzZUludChlLnBhZGRpbmdSaWdodCkrcGFyc2VJbnQoZS5ib3JkZXJMZWZ0V2lkdGgpK3BhcnNlSW50KGUuYm9yZGVyUmlnaHRXaWR0aCkrcGFyc2VJbnQoZS5tYXJnaW5MZWZ0KStwYXJzZUludChlLm1hcmdpblJpZ2h0KSxvPXIub2Zmc2V0V2lkdGgrKHRoaXMuX19pc1JUTD9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdC5kZXRhaWwueDp0LmRldGFpbC54LXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpO24ud2lkdGg9TWF0aC5tYXgoaSxvKSsicHgiLG4uZmxleEdyb3c9MH1pLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX2NvbHVtbi5fb3JkZXItZS5fY29sdW1uLl9vcmRlcn0pKS5mb3JFYWNoKChmdW5jdGlvbih0LGUsbil7ZTxuLmluZGV4T2YocikmJih0Ll9jb2x1bW4ud2lkdGg9dC5vZmZzZXRXaWR0aCsicHgiLHQuX2NvbHVtbi5mbGV4R3Jvdz0wKX0pKSwiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiYodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciLCExLHRoaXMuJC5zY3JvbGxlciksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29sdW1uLXJlc2l6ZSIse2RldGFpbDp7cmVzaXplZENvbHVtbjpufX0pKSksdGhpcy5fcmVzaXplSGFuZGxlcigpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFUxdD1jbGFzcyB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmdyaWQ9dCx0aGlzLnBhcmVudENhY2hlPWUsdGhpcy5wYXJlbnRJdGVtPW4sdGhpcy5pdGVtQ2FjaGVzPXt9LHRoaXMuaXRlbXM9e30sdGhpcy5lZmZlY3RpdmVTaXplPTAsdGhpcy5zaXplPTAsdGhpcy5wZW5kaW5nUmVxdWVzdHM9e319aXNMb2FkaW5nKCl7cmV0dXJuIEJvb2xlYW4oT2JqZWN0LmtleXModGhpcy5wZW5kaW5nUmVxdWVzdHMpLmxlbmd0aHx8T2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5maWx0ZXIoKHQ9PnRoaXMuaXRlbUNhY2hlc1t0XS5pc0xvYWRpbmcoKSkpWzBdKX1nZXRJdGVtRm9ySW5kZXgodCl7Y29uc3R7Y2FjaGU6ZSxzY2FsZWRJbmRleDpufT10aGlzLmdldENhY2hlQW5kSW5kZXgodCk7cmV0dXJuIGUuaXRlbXNbbl19dXBkYXRlU2l6ZSgpe3RoaXMuZWZmZWN0aXZlU2l6ZT0hdGhpcy5wYXJlbnRJdGVtfHx0aGlzLmdyaWQuX2lzRXhwYW5kZWQodGhpcy5wYXJlbnRJdGVtKT90aGlzLnNpemUrT2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3Qgbj10aGlzLml0ZW1DYWNoZXNbZV07cmV0dXJuIG4udXBkYXRlU2l6ZSgpLHQrbi5lZmZlY3RpdmVTaXplfSksMCk6MH1lbnN1cmVTdWJDYWNoZUZvclNjYWxlZEluZGV4KGUpe2lmKCF0aGlzLml0ZW1DYWNoZXNbZV0pe2NvbnN0IG49bmV3IHQodGhpcy5ncmlkLHRoaXMsdGhpcy5pdGVtc1tlXSk7dGhpcy5pdGVtQ2FjaGVzW2VdPW4sdGhpcy5ncmlkLl9sb2FkUGFnZSgwLG4pfX1nZXRDYWNoZUFuZEluZGV4KHQpe2xldCBlPXQ7Y29uc3Qgbj1PYmplY3Qua2V5cyh0aGlzLml0ZW1DYWNoZXMpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPU51bWJlcihuW3RdKSxyPXRoaXMuaXRlbUNhY2hlc1tpXTtpZihlPD1pKXJldHVybntjYWNoZTp0aGlzLHNjYWxlZEluZGV4OmV9O2lmKGU8PWkrci5lZmZlY3RpdmVTaXplKXJldHVybiByLmdldENhY2hlQW5kSW5kZXgoZS1pLTEpO2UtPXIuZWZmZWN0aXZlU2l6ZX1yZXR1cm57Y2FjaGU6dGhpcyxzY2FsZWRJbmRleDplfX19LGoxdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3BhZ2VTaXplOnt0eXBlOk51bWJlcix2YWx1ZTo1MCxvYnNlcnZlcjoiX3BhZ2VTaXplQ2hhbmdlZCJ9LGRhdGFQcm92aWRlcjp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLG9ic2VydmVyOiJfZGF0YVByb3ZpZGVyQ2hhbmdlZCJ9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfY2FjaGU6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBVMXQodGhpcyl9fSxpdGVtSWRQYXRoOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxleHBhbmRlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6KCk9PltdfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zaXplQ2hhbmdlZChzaXplKSIsIl9pdGVtSWRQYXRoQ2hhbmdlZChpdGVtSWRQYXRoKSIsIl9leHBhbmRlZEl0ZW1zQ2hhbmdlZChleHBhbmRlZEl0ZW1zLiopIl19X3NpemVDaGFuZ2VkKHQpe2NvbnN0IGU9dC10aGlzLl9jYWNoZS5zaXplO3RoaXMuX2NhY2hlLnNpemUrPWUsdGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSs9ZSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCl9X2dldEl0ZW0odCxlKXtpZih0Pj10aGlzLl9lZmZlY3RpdmVTaXplKXJldHVybjtlLmluZGV4PXQ7Y29uc3R7Y2FjaGU6bixzY2FsZWRJbmRleDppfT10aGlzLl9jYWNoZS5nZXRDYWNoZUFuZEluZGV4KHQpLHI9bi5pdGVtc1tpXTtyPyh0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCExLGUpLHRoaXMuX3VwZGF0ZUl0ZW0oZSxyKSx0aGlzLl9pc0V4cGFuZGVkKHIpJiZuLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgoaSkpOih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCEwLGUpLHRoaXMuX2xvYWRQYWdlKHRoaXMuX2dldFBhZ2VGb3JJbmRleChpKSxuKSl9X2V4cGFuZGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXt2b2lkIDAhPT10Lml0ZW0mJihlP3RoaXMuZXhwYW5kSXRlbSh0Lml0ZW0pOnRoaXMuY29sbGFwc2VJdGVtKHQuaXRlbSkpfWdldEl0ZW1JZCh0KXtyZXR1cm4gdGhpcy5pdGVtSWRQYXRoP3RoaXMuZ2V0KHRoaXMuaXRlbUlkUGF0aCx0KTp0fV9pc0V4cGFuZGVkKHQpe3JldHVybiB0aGlzLl9fZXhwYW5kZWRLZXlzLmhhcyh0aGlzLmdldEl0ZW1JZCh0KSl9X2V4cGFuZGVkSXRlbXNDaGFuZ2VkKCl7dGhpcy5fX2NhY2hlRXhwYW5kZWRLZXlzKCksdGhpcy5fY2FjaGUudXBkYXRlU2l6ZSgpLHRoaXMuX2VmZmVjdGl2ZVNpemU9dGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSx0aGlzLl9hc3NpZ25Nb2RlbHMoKX1faXRlbUlkUGF0aENoYW5nZWQoKXt0aGlzLl9fY2FjaGVFeHBhbmRlZEtleXMoKX1fX2NhY2hlRXhwYW5kZWRLZXlzKCl7dGhpcy5leHBhbmRlZEl0ZW1zJiYodGhpcy5fX2V4cGFuZGVkS2V5cz1uZXcgU2V0LHRoaXMuZXhwYW5kZWRJdGVtcy5mb3JFYWNoKCh0PT57dGhpcy5fX2V4cGFuZGVkS2V5cy5hZGQodGhpcy5nZXRJdGVtSWQodCkpfSkpKX1leHBhbmRJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCl8fCh0aGlzLmV4cGFuZGVkSXRlbXM9Wy4uLnRoaXMuZXhwYW5kZWRJdGVtcyx0XSl9Y29sbGFwc2VJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCkmJih0aGlzLmV4cGFuZGVkSXRlbXM9dGhpcy5leHBhbmRlZEl0ZW1zLmZpbHRlcigoZT0+IXRoaXMuX2l0ZW1zRXF1YWwoZSx0KSkpKX1fZ2V0SW5kZXhMZXZlbCh0KXtsZXR7Y2FjaGU6ZX09dGhpcy5fY2FjaGUuZ2V0Q2FjaGVBbmRJbmRleCh0KSxuPTA7Zm9yKDtlLnBhcmVudENhY2hlOyllPWUucGFyZW50Q2FjaGUsbisrO3JldHVybiBufV9jYW5Qb3B1bGF0ZSgpe3JldHVybiBCb29sZWFuKHRoaXMuX2hhc0RhdGEmJnRoaXMuX2NvbHVtblRyZWUpfV9sb2FkUGFnZSh0LGUpe2lmKCFlLnBlbmRpbmdSZXF1ZXN0c1t0XSYmdGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMuX3NldExvYWRpbmcoITApLGUucGVuZGluZ1JlcXVlc3RzW3RdPSEwO2NvbnN0IG49e3BhZ2U6dCxwYWdlU2l6ZTp0aGlzLnBhZ2VTaXplLHNvcnRPcmRlcnM6dGhpcy5fbWFwU29ydGVycygpLGZpbHRlcnM6dGhpcy5fbWFwRmlsdGVycygpLHBhcmVudEl0ZW06ZS5wYXJlbnRJdGVtfTt0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCYmdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wuZmx1c2goKSx0aGlzLmRhdGFQcm92aWRlcihuLCgoaSxyKT0+e3ZvaWQgMCE9PXI/ZS5zaXplPXI6bi5wYXJlbnRJdGVtJiYoZS5zaXplPWkubGVuZ3RoKTtjb25zdCBvPUFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5tYXAoKHQ9PnQuX2l0ZW0pKTtpLmZvckVhY2goKChuLGkpPT57Y29uc3Qgcj10KnRoaXMucGFnZVNpemUraTtlLml0ZW1zW3JdPW4sdGhpcy5faXNFeHBhbmRlZChuKSYmby5pbmRleE9mKG4pPi0xJiZlLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgocil9KSksdGhpcy5faGFzRGF0YT0hMCxkZWxldGUgZS5wZW5kaW5nUmVxdWVzdHNbdF0sdGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhPUluLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckFwcGx5Q2FjaGVkRGF0YSxndC5hZnRlcigwKSwoKCk9Pnt0aGlzLl9zZXRMb2FkaW5nKCExKSx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5fZWZmZWN0aXZlU2l6ZT10aGlzLl9jYWNoZS5lZmZlY3RpdmVTaXplLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLmZvckVhY2goKHQ9Pnt0aGlzLl9jYWNoZS5nZXRJdGVtRm9ySW5kZXgodC5pbmRleCkmJnRoaXMuX2dldEl0ZW0odC5pbmRleCx0KX0pKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKX0pKSx0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKXx8dGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhLmZsdXNoKCksdGhpcy5fX2l0ZW1zUmVjZWl2ZWQoKX0pKX19X2dldFBhZ2VGb3JJbmRleCh0KXtyZXR1cm4gTWF0aC5mbG9vcih0L3RoaXMucGFnZVNpemUpfWNsZWFyQ2FjaGUoKXt0aGlzLl9jYWNoZT1uZXcgVTF0KHRoaXMpLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57dC5faW5zdGFuY2UmJnQuX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoIml0ZW0iLHt9LCExKX0pKX0pKSx0aGlzLl9jYWNoZS5zaXplPXRoaXMuc2l6ZXx8MCx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5faGFzRGF0YT0hMSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl9lZmZlY3RpdmVTaXplJiZ0aGlzLl9pbml0aWFsUG9vbENyZWF0ZWR8fHRoaXMuX2xvYWRQYWdlKDAsdGhpcy5fY2FjaGUpfV9wYWdlU2l6ZUNoYW5nZWQodCxlKXt2b2lkIDAhPT1lJiZ0IT09ZSYmdGhpcy5jbGVhckNhY2hlKCl9X2NoZWNrU2l6ZSgpe3ZvaWQgMD09PXRoaXMuc2l6ZSYmMD09PXRoaXMuX2VmZmVjdGl2ZVNpemUmJmNvbnNvbGUud2FybigiVGhlIDx2YWFkaW4tZ3JpZD4gbmVlZHMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiBvcmRlciB0byBkaXNwbGF5IHJvd3MuIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRvIHRoZSBgc2l6ZWAgcHJvcGVydHksIG9yIHByb3ZpZGUgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBgZGF0YVByb3ZpZGVyYOKAmXMgYGNhbGxiYWNrYCBjYWxsLiIpfV9kYXRhUHJvdmlkZXJDaGFuZ2VkKHQsZSl7dm9pZCAwIT09ZSYmdGhpcy5jbGVhckNhY2hlKCksdCYmdGhpcy5pdGVtcyYmdGhpcy5pdGVtcy5sZW5ndGgmJnRoaXMuX3Njcm9sbFRvSW5kZXgodGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpLHRoaXMuX2RlYm91bmNlckNoZWNrU2l6ZT1Jbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJDaGVja1NpemUsZ3QuYWZ0ZXIoMmUzKSx0aGlzLl9jaGVja1NpemUuYmluZCh0aGlzKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfV9lbnN1cmVGaXJzdFBhZ2VMb2FkZWQoKXt0aGlzLl9oYXNEYXRhfHx0aGlzLl9sb2FkUGFnZSgwLHRoaXMuX2NhY2hlKX1faXRlbXNFcXVhbCh0LGUpe3JldHVybiB0aGlzLmdldEl0ZW1JZCh0KT09PXRoaXMuZ2V0SXRlbUlkKGUpfV9nZXRJdGVtSW5kZXhJbkFycmF5KHQsZSl7bGV0IG49LTE7cmV0dXJuIGUuZm9yRWFjaCgoKGUsaSk9Pnt0aGlzLl9pdGVtc0VxdWFsKGUsdCkmJihuPWkpfSkpLG59c2Nyb2xsVG9JbmRleCh0KXtzdXBlci5zY3JvbGxUb0luZGV4KHQpLGlzTmFOKHQpfHwhdGhpcy5fY2FjaGUuaXNMb2FkaW5nKCkmJnRoaXMuY2xpZW50SGVpZ2h0fHwodGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4PXQpfV9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKXtpZih0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgmJnRoaXMuJC5pdGVtcy5jaGlsZHJlbi5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4O2RlbGV0ZSB0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgsdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCksdGhpcy5zY3JvbGxUb0luZGV4KHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEcxdD10PT5jbGFzcyBleHRlbmRzIHR7cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2FkZE5vZGVPYnNlcnZlcigpfV9oYXNDb2x1bW5Hcm91cHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT10W2VdLmxvY2FsTmFtZSlyZXR1cm4hMDtyZXR1cm4hMX1fZ2V0Q2hpbGRDb2x1bW5zKHQpe3JldHVybiBHaS5nZXRGbGF0dGVuZWROb2Rlcyh0KS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KX1fZmxhdHRlbkNvbHVtbkdyb3Vwcyh0KXtyZXR1cm4gdC5tYXAoKHQ9PiJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09dC5sb2NhbE5hbWU/dGhpcy5fZ2V0Q2hpbGRDb2x1bW5zKHQpOlt0XSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSxbXSl9X2dldENvbHVtblRyZWUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT1HaS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzKS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KTt0LnB1c2goZSksdGhpcy5faGFzQ29sdW1uR3JvdXBzKGUpOyllPXRoaXMuX2ZsYXR0ZW5Db2x1bW5Hcm91cHMoZSk7cmV0dXJuIHR9X3VwZGF0ZUNvbHVtblRyZWUoKXtjb25zdCB0PXRoaXMuX2dldENvbHVtblRyZWUoKTt0aGlzLl9hcnJheUVxdWFscyh0LHRoaXMuX2NvbHVtblRyZWUpfHwodGhpcy5fY29sdW1uVHJlZT10KX1fYWRkTm9kZU9ic2VydmVyKCl7dGhpcy5fb2JzZXJ2ZXI9bmV3IEdpKHRoaXMsKHQ9Pntjb25zdCBlPXQuYWRkZWROb2Rlcy5maWx0ZXIoKHQ9PiJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZSYmdC5jbGFzc0xpc3QuY29udGFpbnMoInJvdy1kZXRhaWxzIikpKVswXTtlJiZ0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUhPT1lJiYodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlPWUpO2NvbnN0IG49dD0+dC5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KS5sZW5ndGg+MDtpZihuKHQuYWRkZWROb2Rlcyl8fG4odC5yZW1vdmVkTm9kZXMpKXtjb25zdCBlPXQucmVtb3ZlZE5vZGVzLmZsYXRNYXAoKHQ9PnQuX2FsbENlbGxzKSksbj10PT5lLmZpbHRlcigoZT0+ZS5fY29udGVudC5jb250YWlucyh0KSkpLmxlbmd0aDt0aGlzLl9fcmVtb3ZlU29ydGVycyh0aGlzLl9zb3J0ZXJzLmZpbHRlcihuKSksdGhpcy5fX3JlbW92ZUZpbHRlcnModGhpcy5fZmlsdGVycy5maWx0ZXIobikpLHRoaXMuX3VwZGF0ZUNvbHVtblRyZWUoKX10aGlzLl9kZWJvdW5jZXJDaGVja0ltcG9ydHM9SW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2hlY2tJbXBvcnRzLGd0LmFmdGVyKDJlMyksdGhpcy5fY2hlY2tJbXBvcnRzLmJpbmQodGhpcykpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfSkpfV9hcnJheUVxdWFscyh0LGUpe2lmKCF0fHwhZXx8dC5sZW5ndGghPWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25daW5zdGFuY2VvZiBBcnJheSYmZVtuXWluc3RhbmNlb2YgQXJyYXkpe2lmKCF0aGlzLl9hcnJheUVxdWFscyh0W25dLGVbbl0pKXJldHVybiExfWVsc2UgaWYodFtuXSE9ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1fY2hlY2tJbXBvcnRzKCl7WyJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiLCJ2YWFkaW4tZ3JpZC1maWx0ZXIiLCJ2YWFkaW4tZ3JpZC1maWx0ZXItY29sdW1uIiwidmFhZGluLWdyaWQtdHJlZS10b2dnbGUiLCJ2YWFkaW4tZ3JpZC1zZWxlY3Rpb24tY29sdW1uIiwidmFhZGluLWdyaWQtc29ydC1jb2x1bW4iLCJ2YWFkaW4tZ3JpZC1zb3J0ZXIiXS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLnF1ZXJ5U2VsZWN0b3IodCk7IWV8fGUgaW5zdGFuY2VvZiB3ZXx8Y29uc29sZS53YXJuKGBNYWtlIHN1cmUgeW91IGhhdmUgaW1wb3J0ZWQgdGhlIHJlcXVpcmVkIG1vZHVsZSBmb3IgPCR7dH0+IGVsZW1lbnQuYCl9KSl9X3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpe0FycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIikpLmZvckVhY2goKHQ9PnRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbkZvclJvdyh0KSkpfV91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl7QXJyYXkuZnJvbSh0LnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iY2VsbCJdOm5vdChbcGFydH49ImRldGFpbHMtY2VsbCJdKScpKS5zb3J0KCgodCxlKT0+dC5fY29sdW1uLl9vcmRlci1lLl9jb2x1bW4uX29yZGVyKSkuZm9yRWFjaCgoKHQsZSxuKT0+e3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QtY29sdW1uIiwwPT09ZSx0KSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxhc3QtY29sdW1uIixlPT09bi5sZW5ndGgtMSx0KX0pKX1faXNDb2x1bW5FbGVtZW50KHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJi9cYmNvbHVtblxiLy50ZXN0KHQubG9jYWxOYW1lKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFcxdD10PT5jbGFzcyBleHRlbmRzIHR7Z2V0RXZlbnRDb250ZXh0KHQpe2NvbnN0IGU9e30sbj10LmNvbXBvc2VkUGF0aCgpLGk9bltuLmluZGV4T2YodGhpcy4kLnRhYmxlKS0zXTtyZXR1cm4gaT8oZS5zZWN0aW9uPVsiYm9keSIsImhlYWRlciIsImZvb3RlciIsImRldGFpbHMiXS5maWx0ZXIoKHQ9PmkuZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZih0KT4tMSkpWzBdLGkuX2NvbHVtbiYmKGUuY29sdW1uPWkuX2NvbHVtbiksImJvZHkiIT09ZS5zZWN0aW9uJiYiZGV0YWlscyIhPT1lLnNlY3Rpb258fE9iamVjdC5hc3NpZ24oZSx0aGlzLl9fZ2V0Um93TW9kZWwoaS5wYXJlbnRFbGVtZW50KSksZSk6ZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLHExdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19maWx0ZXJzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZmlsdGVyLWNoYW5nZWQiLHRoaXMuX2ZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSl9X2ZpbHRlckNoYW5nZWQodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9fYWRkRmlsdGVyKHQudGFyZ2V0KSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCl9X19yZW1vdmVGaWx0ZXJzKHQpezAhPXQubGVuZ3RoJiYodGhpcy5fZmlsdGVycz10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+dC5pbmRleE9mKGUpPDApKSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCkpfV9fYWRkRmlsdGVyKHQpey0xPT09dGhpcy5fZmlsdGVycy5pbmRleE9mKHQpJiZ0aGlzLl9maWx0ZXJzLnB1c2godCl9X19hcHBseUZpbHRlcnMoKXt0aGlzLmRhdGFQcm92aWRlciYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLmNsZWFyQ2FjaGUoKX1fbWFwRmlsdGVycygpe3JldHVybiB0aGlzLl9maWx0ZXJzLm1hcCgodD0+KHtwYXRoOnQucGF0aCx2YWx1ZTp0LnZhbHVlfSkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovO2NsYXNzIFkxdCBleHRlbmRzIHdle3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQtdGVtcGxhdGl6ZXIifXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkYXRhSG9zdDpPYmplY3QsdGVtcGxhdGU6T2JqZWN0LF90ZW1wbGF0ZUluc3RhbmNlczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX3BhcmVudFBhdGhWYWx1ZXM6e3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue319fSxfZ3JpZDpPYmplY3R9fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfdGVtcGxhdGVJbnN0YW5jZXNDaGFuZ2VkKF90ZW1wbGF0ZUluc3RhbmNlcy4qLCBfcGFyZW50UGF0aFZhbHVlcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9pbnN0YW5jZVByb3BzPXtkZXRhaWxzT3BlbmVkOiEwLGluZGV4OiEwLGl0ZW06ITAsc2VsZWN0ZWQ6ITAsZXhwYW5kZWQ6ITAsbGV2ZWw6ITB9fWNyZWF0ZUluc3RhbmNlKCl7dGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKTtjb25zdCB0PW5ldyB0aGlzLl9UZW1wbGF0ZUNsYXNzKHt9KTtyZXR1cm4gdGhpcy5hZGRJbnN0YW5jZSh0KSx0fWFkZEluc3RhbmNlKHQpey0xPT09dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KSYmKHRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLnB1c2godCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5ub3RpZnlQYXRoKCJfdGVtcGxhdGVJbnN0YW5jZXMuKiIsdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMpKSkpfXJlbW92ZUluc3RhbmNlKHQpe2NvbnN0IGU9dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KTt0aGlzLnNwbGljZSgiX3RlbXBsYXRlSW5zdGFuY2VzIixlLDEpfV9lbnN1cmVUZW1wbGF0aXplZCgpe3RoaXMuX1RlbXBsYXRlQ2xhc3N8fCh0aGlzLl9UZW1wbGF0ZUNsYXNzPWFvKHRoaXMudGVtcGxhdGUsdGhpcyx7aW5zdGFuY2VQcm9wczp0aGlzLl9pbnN0YW5jZVByb3BzLHBhcmVudE1vZGVsOiEwLGZvcndhcmRIb3N0UHJvcDpmdW5jdGlvbih0LGUpe3RoaXMuX2ZvcndhcmRQYXJlbnRQcm9wKHQsZSksdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMmJnRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmZvckVhY2goKG49Pm4ubm90aWZ5UGF0aCh0LGUpKSl9LG5vdGlmeUluc3RhbmNlUHJvcDpmdW5jdGlvbih0LGUsbil7aWYoImluZGV4Ij09PWV8fCJpdGVtIj09PWUpcmV0dXJuO2NvbnN0IGk9YF9fJHtlfV9fYDtpZih0W2ldPT09bilyZXR1cm47dFtpXT1uO2NvbnN0IHI9QXJyYXkuZnJvbSh0aGlzLl9ncmlkLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+dGhpcy5fZ3JpZC5faXRlbXNFcXVhbChlLl9pdGVtLHQuaXRlbSkpKVswXTtyJiZBcnJheS5mcm9tKHIuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0Ll9pbnN0YW5jZSYmKHQuX2luc3RhbmNlW2ldPW4sdC5faW5zdGFuY2Uubm90aWZ5UGF0aChlLG4pKX0pKTtjb25zdCBvPSJpdGVtLiI7aWYoQXJyYXkuaXNBcnJheSh0aGlzLl9ncmlkLml0ZW1zKSYmMD09PWUuaW5kZXhPZihvKSl7Y29uc3QgaT10aGlzLl9ncmlkLml0ZW1zLmluZGV4T2YodC5pdGVtKSxyPWUuc2xpY2Uoby5sZW5ndGgpO3RoaXMuX2dyaWQubm90aWZ5UGF0aChgaXRlbXMuJHtpfS4ke3J9YCxuKX1jb25zdCBhPWBfJHtlfUluc3RhbmNlQ2hhbmdlZENhbGxiYWNrYDt0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkW2FdJiZ0aGlzLl9ncmlkW2FdKHQsbil9fSkpfV9mb3J3YXJkUGFyZW50UHJvcCh0LGUpe3RoaXMuX3BhcmVudFBhdGhWYWx1ZXNbdF09ZSx0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5mb3JFYWNoKChuPT5uLm5vdGlmeVBhdGgodCxlKSkpfV90ZW1wbGF0ZUluc3RhbmNlc0NoYW5nZWQodCl7bGV0IGUsbjtpZigiX3RlbXBsYXRlSW5zdGFuY2VzIj09PXQucGF0aCllPTAsbj10aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5sZW5ndGg7ZWxzZXtpZigiX3RlbXBsYXRlSW5zdGFuY2VzLnNwbGljZXMiIT09dC5wYXRoKXJldHVybjtlPXQudmFsdWUuaW5kZXgsbj10LnZhbHVlLmFkZGVkQ291bnR9T2JqZWN0LmtleXModGhpcy5fcGFyZW50UGF0aFZhbHVlc3x8e30pLmZvckVhY2goKHQ9Pntmb3IobGV0IGk9ZTtpPGUrbjtpKyspdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXNbaV0uc2V0KHQsdGhpcy5fcGFyZW50UGF0aFZhbHVlc1t0XSl9KSl9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShZMXQuaXMsWTF0KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgWDF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGV0YWlsc09wZW5lZEl0ZW1zOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfcm93RGV0YWlsc1RlbXBsYXRlOk9iamVjdCxyb3dEZXRhaWxzUmVuZGVyZXI6RnVuY3Rpb24sX2RldGFpbHNDZWxsczp7dHlwZTpBcnJheX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZChkZXRhaWxzT3BlbmVkSXRlbXMuKiwgX3Jvd0RldGFpbHNUZW1wbGF0ZSwgcm93RGV0YWlsc1JlbmRlcmVyKSIsIl9yb3dEZXRhaWxzVGVtcGxhdGVPclJlbmRlcmVyQ2hhbmdlZChfcm93RGV0YWlsc1RlbXBsYXRlLCByb3dEZXRhaWxzUmVuZGVyZXIpIl19X3Jvd0RldGFpbHNUZW1wbGF0ZU9yUmVuZGVyZXJDaGFuZ2VkKHQsZSl7aWYodCYmZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBzaG91bGQgb25seSB1c2UgZWl0aGVyIGEgcmVuZGVyZXIgb3IgYSB0ZW1wbGF0ZSBmb3Igcm93IGRldGFpbHMiKTtpZih0fHxlKXtpZih0JiYhdC50ZW1wbGF0aXplcil7Y29uc3QgZT1uZXcgWTF0O2UuX2dyaWQ9dGhpcyxlLmRhdGFIb3N0PXRoaXMuZGF0YUhvc3QsZS50ZW1wbGF0ZT10LHQudGVtcGxhdGl6ZXI9ZX10aGlzLl9jb2x1bW5UcmVlJiZBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QucXVlcnlTZWxlY3RvcigiW3BhcnR+PWRldGFpbHMtY2VsbF0iKXx8KHRoaXMuX3VwZGF0ZVJvdyh0LHRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsITEpKSxkZWxldGUgdC5xdWVyeVNlbGVjdG9yKCJbcGFydH49ZGV0YWlscy1jZWxsXSIpLl9pbnN0YW5jZX0pKSx0aGlzLmRldGFpbHNPcGVuZWRJdGVtcy5sZW5ndGgmJihBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCh0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCx0aGlzKSx0aGlzLl91cGRhdGUoKSl9fV9kZXRhaWxzT3BlbmVkSXRlbXNDaGFuZ2VkKHQpeyJkZXRhaWxzT3BlbmVkSXRlbXMubGVuZ3RoIiE9PXQucGF0aCYmdC52YWx1ZSYmQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCh0LHQuX2l0ZW0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsdGhpcy5faXNEZXRhaWxzT3BlbmVkKHQuX2l0ZW0pKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRldGFpbHMtb3BlbmVkIix0aGlzLl9pc0RldGFpbHNPcGVuZWQodC5faXRlbSksdCl9KSl9X2NvbmZpZ3VyZURldGFpbHNDZWxsKHQpe3Quc2V0QXR0cmlidXRlKCJwYXJ0IiwiY2VsbCBkZXRhaWxzLWNlbGwiKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIsITAsdCl9X3RvZ2dsZURldGFpbHNDZWxsKHQsZSl7Y29uc3Qgbj10LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKTtpZighbilyZXR1cm47Y29uc3QgaT0hdGhpcy5faXNEZXRhaWxzT3BlbmVkKGUpLHI9ISFuLmhpZGRlbiE9PWk7KG4uX2luc3RhbmNlfHxuLl9yZW5kZXJlcikmJm4uaGlkZGVuPT09aXx8KG4uaGlkZGVuPWksaT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIpOih0aGlzLnJvd0RldGFpbHNSZW5kZXJlcj8obi5fcmVuZGVyZXI9dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIsbi5fcmVuZGVyZXIuY2FsbCh0aGlzLG4uX2NvbnRlbnQsdGhpcyx7aW5kZXg6dC5pbmRleCxpdGVtOmV9KSk6dGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlJiYhbi5faW5zdGFuY2UmJihuLl9pbnN0YW5jZT10aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKSxuLl9jb250ZW50LmlubmVySFRNTD0iIixuLl9jb250ZW50LmFwcGVuZENoaWxkKG4uX2luc3RhbmNlLnJvb3QpLHRoaXMuX3VwZGF0ZUl0ZW0odCxlKSksV2koKSx0LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7bi5vZmZzZXRIZWlnaHR9cHhgKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLm5vdGlmeVJlc2l6ZSgpKSkpKSxyJiYodGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSl9X3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl06bm90KFtoaWRkZW5dKScpKS5mb3JFYWNoKCh0PT57dC5wYXJlbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7dC5vZmZzZXRIZWlnaHR9cHhgKX0pKX1faXNEZXRhaWxzT3BlbmVkKHQpe3JldHVybiB0aGlzLmRldGFpbHNPcGVuZWRJdGVtcyYmLTEhPT10aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHQsdGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMpfW9wZW5JdGVtRGV0YWlscyh0KXt0aGlzLl9pc0RldGFpbHNPcGVuZWQodCl8fCh0aGlzLmRldGFpbHNPcGVuZWRJdGVtcz1bLi4udGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMsdF0pfWNsb3NlSXRlbURldGFpbHModCl7dGhpcy5faXNEZXRhaWxzT3BlbmVkKHQpJiYodGhpcy5kZXRhaWxzT3BlbmVkSXRlbXM9dGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMuZmlsdGVyKChlPT4hdGhpcy5faXRlbXNFcXVhbChlLHQpKSkpfV9kZXRhaWxzT3BlbmVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXtlP3RoaXMub3Blbkl0ZW1EZXRhaWxzKHQuaXRlbSk6dGhpcy5jbG9zZUl0ZW1EZXRhaWxzKHQuaXRlbSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLywkMXQ9NTAwLEsxdD01MDAsWjF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X2Zyb3plbkNlbGxzOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXX0sX3Jvd1dpdGhGb2N1c2VkRWxlbWVudDpFbGVtZW50LF9kZWx0YVlBY2M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF91c2VTdGlja3k6e3R5cGU6Qm9vbGVhbix2YWx1ZTp3aW5kb3cuQ1NTJiZ3aW5kb3cuQ1NTLnN1cHBvcnRzJiYod2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCJzdGlja3kiKXx8d2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCItd2Via2l0LXN0aWNreSIpKX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKF92aWV3cG9ydEhlaWdodCkiXX1zZXQgX3Njcm9sbFRvcCh0KXt0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXR9Z2V0IF9zY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy4kLnRhYmxlLnNjcm9sbFRvcH1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc2Nyb2xsTGluZUhlaWdodD10aGlzLl9nZXRTY3JvbGxMaW5lSGVpZ2h0KCl9X2dldFNjcm9sbExpbmVIZWlnaHQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc3R5bGUuZm9udFNpemU9ImluaXRpYWwiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtjb25zdCBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmZvbnRTaXplO3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLGU/d2luZG93LnBhcnNlSW50KGUpOnZvaWQgMH1fc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKHQpe3RoaXMuX3Njcm9sbFBhZ2VIZWlnaHQ9dC10aGlzLiQuaGVhZGVyLmNsaWVudEhlaWdodC10aGlzLiQuZm9vdGVyLmNsaWVudEhlaWdodC10aGlzLl9zY3JvbGxMaW5lSGVpZ2h0fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLiQub3V0ZXJzY3JvbGxlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNjcm9sbFRhcmdldD10aGlzLiQudGFibGUsdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsdGhpcy5fb25XaGVlbCksdGhpcy4kLml0ZW1zLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLCh0PT57Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLmluZGV4T2YodGhpcy4kLml0ZW1zKTt0aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dC5jb21wb3NlZFBhdGgoKVtlLTFdfSkpLHRoaXMuJC5pdGVtcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsKCgpPT50aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dm9pZCAwKSksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PnRoaXMuX19tb3VzZURvd249ITApKSx0aGlzLnNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwoKCk9Pnt0aGlzLl9fbW91c2VEb3duPSExLHRoaXMuX19wZW5kaW5nUmVvcmRlciYmKHRoaXMuX19wZW5kaW5nUmVvcmRlcj0hMSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5fcmVvcmRlclJvd3MoKSksJDF0KSl9KSl9c2Nyb2xsVG9JbmRleCh0KXt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLnNjcm9sbFRvSW5kZXgodCkpKX1fb25XaGVlbCh0KXtpZih0LmN0cmxLZXl8fHRoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IodC50YXJnZXQsdC5kZWx0YVgsdC5kZWx0YVkpKXJldHVybjtjb25zdCBlPXRoaXMuJC50YWJsZTtsZXQgbj10LmRlbHRhWTtpZih0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU/bio9dGhpcy5fc2Nyb2xsTGluZUhlaWdodDp0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0UmJihuKj10aGlzLl9zY3JvbGxQYWdlSGVpZ2h0KSx0aGlzLl93aGVlbEFuaW1hdGlvbkZyYW1lKXJldHVybiB0aGlzLl9kZWx0YVlBY2MrPW4sdm9pZCB0LnByZXZlbnREZWZhdWx0KCk7bis9dGhpcy5fZGVsdGFZQWNjLHRoaXMuX2RlbHRhWUFjYz0wLHRoaXMuX3doZWVsQW5pbWF0aW9uRnJhbWU9ITAsdGhpcy5fZGVib3VuY2VyV2hlZWxBbmltYXRpb25GcmFtZT1Jbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJXaGVlbEFuaW1hdGlvbkZyYW1lLF90LCgoKT0+dGhpcy5fd2hlZWxBbmltYXRpb25GcmFtZT0hMSkpO2NvbnN0IGk9TWF0aC5hYnModC5kZWx0YVgpK01hdGguYWJzKG4pO3RoaXMuX2NhblNjcm9sbChlLHQuZGVsdGFYLG4pPyh0LnByZXZlbnREZWZhdWx0KCksZS5zY3JvbGxUb3ArPW4sZS5zY3JvbGxMZWZ0Kz10LmRlbHRhWCx0aGlzLl9zY3JvbGxIYW5kbGVyKCksdGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bT0hMCx0aGlzLl9pZ25vcmVOZXdXaGVlbD0hMCx0aGlzLl9kZWJvdW5jZXJJZ25vcmVOZXdXaGVlbD1Jbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJJZ25vcmVOZXdXaGVlbCxndC5hZnRlcihLMXQpLCgoKT0+dGhpcy5faWdub3JlTmV3V2hlZWw9ITEpKSk6dGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bSYmaTw9dGhpcy5fcHJldmlvdXNNb21lbnR1bXx8dGhpcy5faWdub3JlTmV3V2hlZWw/dC5wcmV2ZW50RGVmYXVsdCgpOmk+dGhpcy5fcHJldmlvdXNNb21lbnR1bSYmKHRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW09ITEpLHRoaXMuX3ByZXZpb3VzTW9tZW50dW09aX1faGFzU2Nyb2xsZWRBbmNlc3Rvcih0LGUsbil7cmV0dXJuInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIhPT10LmxvY2FsTmFtZSYmKCEoIXRoaXMuX2NhblNjcm9sbCh0LGUsbil8fC0xPT09WyJhdXRvIiwic2Nyb2xsIl0uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKHQpLm92ZXJmbG93KSl8fCh0IT09dGhpcyYmdC5wYXJlbnRFbGVtZW50P3RoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IodC5wYXJlbnRFbGVtZW50LGUsbik6dm9pZCAwKSl9X2NhblNjcm9sbCh0LGUsbil7cmV0dXJuIG4+MCYmdC5zY3JvbGxUb3A8dC5zY3JvbGxIZWlnaHQtdC5vZmZzZXRIZWlnaHR8fG48MCYmdC5zY3JvbGxUb3A+MHx8ZT4wJiZ0LnNjcm9sbExlZnQ8dC5zY3JvbGxXaWR0aC10Lm9mZnNldFdpZHRofHxlPDAmJnQuc2Nyb2xsTGVmdD4wfV9zY2hlZHVsZVNjcm9sbGluZygpe3RoaXMuX3Njcm9sbGluZ0ZyYW1lfHwodGhpcy5fc2Nyb2xsaW5nRnJhbWU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzY3JvbGxpbmciLCEwLHRoaXMuJC5zY3JvbGxlcikpKSksdGhpcy5fZGVib3VuY2VTY3JvbGxpbmc9SW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VTY3JvbGxpbmcsZ3QuYWZ0ZXIoJDF0KSwoKCk9PntjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY3JvbGxpbmdGcmFtZSksZGVsZXRlIHRoaXMuX3Njcm9sbGluZ0ZyYW1lLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwhMSx0aGlzLiQuc2Nyb2xsZXIpLHRoaXMuX3Jlb3JkZXJSb3dzKCl9KSl9X2FmdGVyU2Nyb2xsKCl7dGhpcy5fdHJhbnNsYXRlU3RhdGlvbmFyeUVsZW1lbnRzKCksdGhpcy5oYXNBdHRyaWJ1dGUoInJlb3JkZXJpbmciKXx8dGhpcy5fc2NoZWR1bGVTY3JvbGxpbmcoKSx0aGlzLl91cGRhdGVPdmVyZmxvdygpfV91cGRhdGVPdmVyZmxvdygpe2xldCB0PSIiO2NvbnN0IGU9dGhpcy4kLnRhYmxlO2Uuc2Nyb2xsVG9wPGUuc2Nyb2xsSGVpZ2h0LWUuY2xpZW50SGVpZ2h0JiYodCs9IiBib3R0b20iKSxlLnNjcm9sbFRvcD4wJiYodCs9IiB0b3AiKSxlLnNjcm9sbExlZnQ8ZS5zY3JvbGxXaWR0aC1lLmNsaWVudFdpZHRoJiYodCs9IiByaWdodCIpLGUuc2Nyb2xsTGVmdD4wJiYodCs9IiBsZWZ0IiksdGhpcy5fZGVib3VuY2VPdmVyZmxvdz1Jbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZU92ZXJmbG93LF90LCgoKT0+e2NvbnN0IGU9dC50cmltKCk7ZS5sZW5ndGg+MCYmdGhpcy5nZXRBdHRyaWJ1dGUoIm92ZXJmbG93IikhPT1lP3RoaXMuc2V0QXR0cmlidXRlKCJvdmVyZmxvdyIsZSk6MD09ZS5sZW5ndGgmJnRoaXMuaGFzQXR0cmlidXRlKCJvdmVyZmxvdyIpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZSgib3ZlcmZsb3ciKX0pKX1fcmVvcmRlclJvd3MoKXtpZih0aGlzLl9fbW91c2VEb3duKXJldHVybiB2b2lkKHRoaXMuX19wZW5kaW5nUmVvcmRlcj0hMCk7Y29uc3QgdD10aGlzLiQuaXRlbXMsZT10LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIik7aWYoIWUubGVuZ3RoKXJldHVybjtjb25zdCBuPXRoaXMuX3ZpcnR1YWxTdGFydCt0aGlzLl92aWR4T2Zmc2V0LGk9dGhpcy5fcm93V2l0aEZvY3VzZWRFbGVtZW50fHxBcnJheS5mcm9tKGUpLmZpbHRlcigodD0+IXQuaGlkZGVuKSlbMF07aWYoIWkpcmV0dXJuO2NvbnN0IHI9aS5pbmRleC1uLG89QXJyYXkuZnJvbShlKS5pbmRleE9mKGkpLXI7aWYobz4wKWZvcihsZXQgbj0wO248bztuKyspdC5hcHBlbmRDaGlsZChlW25dKTtlbHNlIGlmKG88MClmb3IobGV0IG49ZS5sZW5ndGgrbztuPGUubGVuZ3RoO24rKyl0Lmluc2VydEJlZm9yZShlW25dLGVbMF0pO2lmKHRoaXMuX3NhZmFyaSl7Y29uc3R7dHJhbnNmb3JtOnR9PXRoaXMuJC5oZWFkZXIuc3R5bGU7dGhpcy4kLmhlYWRlci5zdHlsZS50cmFuc2Zvcm09IiIsc2V0VGltZW91dCgoKCk9PnRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPXQpKX19X2Zyb3plbkNlbGxzQ2hhbmdlZCgpe3RoaXMuX2RlYm91bmNlckNhY2hlRWxlbWVudHM9SW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2FjaGVFbGVtZW50cyx2dCwoKCk9PntBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49ImNlbGwiXScpKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnN0eWxlLnRyYW5zZm9ybT0iIn0pKSx0aGlzLl9mcm96ZW5DZWxscz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLiQudGFibGUucXVlcnlTZWxlY3RvckFsbCgiW2Zyb3plbl0iKSksdGhpcy5fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKSx0aGlzLl90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKX0pKSx0aGlzLl91cGRhdGVMYXN0RnJvemVuKCl9X3VwZGF0ZVNjcm9sbGVyTWVhc3VyZW1lbnRzKCl7dGhpcy5fZnJvemVuQ2VsbHMubGVuZ3RoPjAmJnRoaXMuX19pc1JUTCYmKHRoaXMuX19zY3JvbGxlck1ldHJpY3M9e3Njcm9sbFdpZHRoOnRoaXMuJC50YWJsZS5zY3JvbGxXaWR0aCxjbGllbnRXaWR0aDp0aGlzLiQudGFibGUuY2xpZW50V2lkdGh9KX1fdXBkYXRlTGFzdEZyb3plbigpe2lmKCF0aGlzLl9jb2x1bW5UcmVlKXJldHVybjtjb25zdCB0PXRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0uc2xpY2UoMCk7dC5zb3J0KCgodCxlKT0+dC5fb3JkZXItZS5fb3JkZXIpKTtjb25zdCBlPXQucmVkdWNlKCgodCxlLG4pPT4oZS5fbGFzdEZyb3plbj0hMSxlLmZyb3plbiYmIWUuaGlkZGVuP246dCkpLHZvaWQgMCk7dm9pZCAwIT09ZSYmKHRbZV0uX2xhc3RGcm96ZW49ITApfV90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKXtjb25zdCB0PU1hdGgubWF4KDAsdGhpcy5fc2Nyb2xsTGVmdCksZT1NYXRoLm1heCgwLHRoaXMuX3Njcm9sbFRvcCk7bGV0IG49MCxpPTAscj0wO2lmKHRoaXMuX3VzZVN0aWNreXx8KG49dCxpPWUscj10aGlzLiQudGFibGUuY2xpZW50SGVpZ2h0LXRoaXMuJC5mb290ZXIub2Zmc2V0SGVpZ2h0LXRoaXMuJC5mb290ZXIub2Zmc2V0VG9wKSx0aGlzLiQuaGVhZGVyLnN0eWxlLnRyYW5zZm9ybT10aGlzLl9nZXRUcmFuc2xhdGUoLXQrbixpKSx0aGlzLiQuZm9vdGVyLnN0eWxlLnRyYW5zZm9ybT10aGlzLl9nZXRUcmFuc2xhdGUoLXQrbixpK3IpLHRoaXMuJC5pdGVtcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5fZ2V0VHJhbnNsYXRlKC10K24sMCksdGhpcy5fZnJvemVuQ2VsbHMubGVuZ3RoPjApe2NvbnN0IHQ9dGhpcy5fX2lzUlRMP3RoaXMuX19nZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0aGlzLiQudGFibGUpK3RoaXMuX19zY3JvbGxlck1ldHJpY3MuY2xpZW50V2lkdGgtdGhpcy5fX3Njcm9sbGVyTWV0cmljcy5zY3JvbGxXaWR0aDp0aGlzLl9zY3JvbGxMZWZ0LGU9dGhpcy5fZ2V0VHJhbnNsYXRlKHQsMCk7Zm9yKGxldCB0PTA7dDx0aGlzLl9mcm96ZW5DZWxscy5sZW5ndGg7dCsrKXRoaXMuX2Zyb3plbkNlbGxzW3RdLnN0eWxlLnRyYW5zZm9ybT1lfX1fZ2V0VHJhbnNsYXRlKHQsZSl7cmV0dXJuYHRyYW5zbGF0ZSgke3R9cHgsICR7ZX1weClgfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8sSjF0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57c2VsZWN0ZWRJdGVtczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHZhbHVlOigpPT5bXX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfc2VsZWN0ZWRJdGVtc0NoYW5nZWQoc2VsZWN0ZWRJdGVtcy4qKSJdfV9pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuX2dldEl0ZW1JbmRleEluQXJyYXkodCx0aGlzLnNlbGVjdGVkSXRlbXMpPi0xfXNlbGVjdEl0ZW0odCl7dGhpcy5faXNTZWxlY3RlZCh0KXx8KHRoaXMuc2VsZWN0ZWRJdGVtcz1bLi4udGhpcy5zZWxlY3RlZEl0ZW1zLHRdKX1kZXNlbGVjdEl0ZW0odCl7dGhpcy5faXNTZWxlY3RlZCh0KSYmKHRoaXMuc2VsZWN0ZWRJdGVtcz10aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChlPT4hdGhpcy5faXRlbXNFcXVhbChlLHQpKSkpfV90b2dnbGVJdGVtKHQpey0xPT09dGhpcy5fZ2V0SXRlbUluZGV4SW5BcnJheSh0LHRoaXMuc2VsZWN0ZWRJdGVtcyk/dGhpcy5zZWxlY3RJdGVtKHQpOnRoaXMuZGVzZWxlY3RJdGVtKHQpfV9zZWxlY3RlZEl0ZW1zQ2hhbmdlZCh0KXshdGhpcy4kLml0ZW1zLmNoaWxkcmVuLmxlbmd0aHx8InNlbGVjdGVkSXRlbXMiIT09dC5wYXRoJiYic2VsZWN0ZWRJdGVtcy5zcGxpY2VzIiE9PXQucGF0aHx8QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLl91cGRhdGVJdGVtKHQsdC5faXRlbSl9KSl9X3NlbGVjdGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXtlP3RoaXMuc2VsZWN0SXRlbSh0Lml0ZW0pOnRoaXMuZGVzZWxlY3RJdGVtKHQuaXRlbSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyxRMXQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdWx0aVNvcnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3NvcnRlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9wcmV2aW91c1NvcnRlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJzb3J0ZXItY2hhbmdlZCIsdGhpcy5fb25Tb3J0ZXJDaGFuZ2VkKX1fb25Tb3J0ZXJDaGFuZ2VkKHQpe2NvbnN0IGU9dC50YXJnZXQ7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9fdXBkYXRlU29ydGVyKGUpLHRoaXMuX19hcHBseVNvcnRlcnMoKX1fX3JlbW92ZVNvcnRlcnModCl7MCE9dC5sZW5ndGgmJih0aGlzLl9zb3J0ZXJzPXRoaXMuX3NvcnRlcnMuZmlsdGVyKChlPT50LmluZGV4T2YoZSk8MCkpLHRoaXMubXVsdGlTb3J0JiZ0aGlzLl9fdXBkYXRlU29ydE9yZGVycygpLHRoaXMuX19hcHBseVNvcnRlcnMoKSl9X191cGRhdGVTb3J0T3JkZXJzKCl7dGhpcy5fc29ydGVycy5mb3JFYWNoKCgodCxlKT0+dC5fb3JkZXI9dGhpcy5fc29ydGVycy5sZW5ndGg+MT9lOm51bGwpLHRoaXMpfV9fdXBkYXRlU29ydGVyKHQpe2lmKHQuZGlyZWN0aW9ufHwtMSE9PXRoaXMuX3NvcnRlcnMuaW5kZXhPZih0KSlpZih0Ll9vcmRlcj1udWxsLHRoaXMubXVsdGlTb3J0KXRoaXMuX3JlbW92ZUFycmF5SXRlbSh0aGlzLl9zb3J0ZXJzLHQpLHQuZGlyZWN0aW9uJiZ0aGlzLl9zb3J0ZXJzLnVuc2hpZnQodCksdGhpcy5fX3VwZGF0ZVNvcnRPcmRlcnMoKTtlbHNlIGlmKHQuZGlyZWN0aW9uKXtjb25zdCBlPXRoaXMuX3NvcnRlcnMuZmlsdGVyKChlPT5lIT10KSk7dGhpcy5fc29ydGVycz1bdF0sZS5mb3JFYWNoKCh0PT57dC5fb3JkZXI9bnVsbCx0LmRpcmVjdGlvbj1udWxsfSkpfX1fX2FwcGx5U29ydGVycygpe3RoaXMuZGF0YVByb3ZpZGVyJiZ0aGlzLmlzQXR0YWNoZWQmJkpTT04uc3RyaW5naWZ5KHRoaXMuX3ByZXZpb3VzU29ydGVycykhPT1KU09OLnN0cmluZ2lmeSh0aGlzLl9tYXBTb3J0ZXJzKCkpJiZ0aGlzLmNsZWFyQ2FjaGUoKSx0aGlzLl9hMTF5VXBkYXRlU29ydGVycygpLHRoaXMuX3ByZXZpb3VzU29ydGVycz10aGlzLl9tYXBTb3J0ZXJzKCl9X21hcFNvcnRlcnMoKXtyZXR1cm4gdGhpcy5fc29ydGVycy5tYXAoKHQ9Pih7cGF0aDp0LnBhdGgsZGlyZWN0aW9uOnQuZGlyZWN0aW9ufSkpKX1fcmVtb3ZlQXJyYXlJdGVtKHQsZSl7Y29uc3Qgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLHQwdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2NlbGxDbGFzc05hbWVHZW5lcmF0b3I6RnVuY3Rpb259fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfX2NlbGxDbGFzc05hbWVHZW5lcmF0b3JDaGFuZ2VkKGNlbGxDbGFzc05hbWVHZW5lcmF0b3IpIl19X19jZWxsQ2xhc3NOYW1lR2VuZXJhdG9yQ2hhbmdlZCgpe3RoaXMuZ2VuZXJhdGVDZWxsQ2xhc3NOYW1lcygpfWdlbmVyYXRlQ2VsbENsYXNzTmFtZXMoKXtBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5mb3JFYWNoKCh0PT50aGlzLl9nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKHQsdGhpcy5fX2dldFJvd01vZGVsKHQpKSkpfV9nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKHQsZSl7QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57aWYodC5fX2dlbmVyYXRlZENsYXNzZXMmJnQuX19nZW5lcmF0ZWRDbGFzc2VzLmZvckVhY2goKGU9PnQuY2xhc3NMaXN0LnJlbW92ZShlKSkpLHRoaXMuY2VsbENsYXNzTmFtZUdlbmVyYXRvcil7Y29uc3Qgbj10aGlzLmNlbGxDbGFzc05hbWVHZW5lcmF0b3IodC5fY29sdW1uLGUpO3QuX19nZW5lcmF0ZWRDbGFzc2VzPW4mJm4uc3BsaXQoIiAiKS5maWx0ZXIoKHQ9PnQubGVuZ3RoPjApKSx0Ll9fZ2VuZXJhdGVkQ2xhc3NlcyYmdC5fX2dlbmVyYXRlZENsYXNzZXMuZm9yRWFjaCgoZT0+dC5jbGFzc0xpc3QuYWRkKGUpKSl9fSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8sZTB0PSJiZXR3ZWVuIixuMHQ9Im9uLXRvcC1vci1iZXR3ZWVuIixpMHQ9Im9uLWdyaWQiLHIwdD0ib24tdG9wIixvMHQ9ImFib3ZlIixhMHQ9ImJlbG93IixzMHQ9ImVtcHR5IixsMHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkcm9wTW9kZTpTdHJpbmcscm93c0RyYWdnYWJsZTpCb29sZWFuLGRyYWdGaWx0ZXI6RnVuY3Rpb24sZHJvcEZpbHRlcjpGdW5jdGlvbixfX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQ6e3ZhbHVlOjUwfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9kcmFnRHJvcEFjY2Vzc0NoYW5nZWQocm93c0RyYWdnYWJsZSwgZHJvcE1vZGUsIGRyYWdGaWx0ZXIsIGRyb3BGaWx0ZXIpIl19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuX29uRHJhZ1N0YXJ0LmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW5kIix0aGlzLl9vbkRyYWdFbmQuYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIix0aGlzLl9vbkRyYWdPdmVyLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLHRoaXMuX29uRHJhZ0xlYXZlLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcm9wIix0aGlzLl9vbkRyb3AuYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbnRlciIsKHQ9Pnt0aGlzLmRyb3BNb2RlJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfSkpfV9vbkRyYWdTdGFydCh0KXtpZih0aGlzLnJvd3NEcmFnZ2FibGUpe2xldCBlPXQudGFyZ2V0O2lmKCJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiPT09ZS5sb2NhbE5hbWUmJihlPWUuYXNzaWduZWRTbG90LnBhcmVudE5vZGUucGFyZW50Tm9kZSksZS5wYXJlbnROb2RlIT09dGhpcy4kLml0ZW1zKXJldHVybjtpZih0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJhZ2dpbmctcm93cyIsITAsdGhpcyksdGhpcy5fc2FmYXJpKXtjb25zdCB0PWUuc3R5bGUudHJhbnNmb3JtO2Uuc3R5bGUudG9wPS90cmFuc2xhdGVZXCgoLiopXCkvLmV4ZWModClbMV0sZS5zdHlsZS50cmFuc2Zvcm09Im5vbmUiLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntlLnN0eWxlLnRvcD0iIixlLnN0eWxlLnRyYW5zZm9ybT10fSkpfWNvbnN0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLl9pb3M/dC5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGUpOnQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShlLHQuY2xpZW50WC1uLmxlZnQsdC5jbGllbnRZLW4udG9wKTtsZXQgaT1bZV07dGhpcy5faXNTZWxlY3RlZChlLl9pdGVtKSYmKGk9dGhpcy5fX2dldFZpZXdwb3J0Um93cygpLmZpbHRlcigodD0+dGhpcy5faXNTZWxlY3RlZCh0Ll9pdGVtKSkpLmZpbHRlcigodD0+IXRoaXMuZHJhZ0ZpbHRlcnx8dGhpcy5kcmFnRmlsdGVyKHRoaXMuX19nZXRSb3dNb2RlbCh0KSkpKSksdC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dCIsdGhpcy5fX2Zvcm1hdERlZmF1bHRUcmFuc2ZlckRhdGEoaSkpLGUuc2V0QXR0cmlidXRlKCJkcmFnc3RhcnQiLGkubGVuZ3RoPjE/aS5sZW5ndGg6IiIpLHRoaXMudXBkYXRlU3R5bGVzKHsiLS1fZ3JpZC1kcmFnLXN0YXJ0LXgiOnQuY2xpZW50WC1uLmxlZnQrMjArInB4IiwiLS1fZ3JpZC1kcmFnLXN0YXJ0LXkiOnQuY2xpZW50WS1uLnRvcCsxMCsicHgifSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e2UucmVtb3ZlQXR0cmlidXRlKCJkcmFnc3RhcnQiKSx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tX2dyaWQtZHJhZy1zdGFydC14IjoiIiwiLS1fZ3JpZC1kcmFnLXN0YXJ0LXkiOiIifSl9KSk7Y29uc3Qgcj1uZXcgQ3VzdG9tRXZlbnQoImdyaWQtZHJhZ3N0YXJ0Iix7ZGV0YWlsOntkcmFnZ2VkSXRlbXM6aS5tYXAoKHQ9PnQuX2l0ZW0pKSxzZXREcmFnRGF0YTooZSxuKT0+dC5kYXRhVHJhbnNmZXIuc2V0RGF0YShlLG4pLHNldERyYWdnZWRJdGVtc0NvdW50OnQ9PmUuc2V0QXR0cmlidXRlKCJkcmFnc3RhcnQiLHQpfX0pO3Iub3JpZ2luYWxFdmVudD10LHRoaXMuZGlzcGF0Y2hFdmVudChyKX19X29uRHJhZ0VuZCh0KXt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyYWdnaW5nLXJvd3MiLCExLHRoaXMpLHQuc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQoImdyaWQtZHJhZ2VuZCIpO2Uub3JpZ2luYWxFdmVudD10LHRoaXMuZGlzcGF0Y2hFdmVudChlKX1fb25EcmFnTGVhdmUodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9jbGVhckRyYWdTdHlsZXMoKX1fb25EcmFnT3Zlcih0KXtpZih0aGlzLmRyb3BNb2RlKXtpZih0aGlzLl9kcm9wTG9jYXRpb249dm9pZCAwLHRoaXMuX2RyYWdPdmVySXRlbT12b2lkIDAsdGhpcy5fX2RuZEF1dG9TY3JvbGwodC5jbGllbnRZKSlyZXR1cm4gdm9pZCB0aGlzLl9jbGVhckRyYWdTdHlsZXMoKTtsZXQgZT10LmNvbXBvc2VkUGF0aCgpLmZpbHRlcigodD0+InRyIj09PXQubG9jYWxOYW1lKSlbMF07aWYodGhpcy5fZWZmZWN0aXZlU2l6ZSYmdGhpcy5kcm9wTW9kZSE9PWkwdClpZihlJiZlLnBhcmVudE5vZGU9PT10aGlzLiQuaXRlbXMpe2NvbnN0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih0aGlzLl9kcm9wTG9jYXRpb249cjB0LHRoaXMuZHJvcE1vZGU9PT1lMHQpe3RoaXMuX2Ryb3BMb2NhdGlvbj10LmNsaWVudFktbi50b3A8bi5ib3R0b20tdC5jbGllbnRZP28wdDphMHR9ZWxzZSB0aGlzLmRyb3BNb2RlPT09bjB0JiYodC5jbGllbnRZLW4udG9wPG4uaGVpZ2h0LzM/dGhpcy5fZHJvcExvY2F0aW9uPW8wdDp0LmNsaWVudFktbi50b3A+bi5oZWlnaHQvMyoyJiYodGhpcy5fZHJvcExvY2F0aW9uPWEwdCkpfWVsc2V7aWYoZSlyZXR1cm47aWYodGhpcy5kcm9wTW9kZSE9PWUwdCYmdGhpcy5kcm9wTW9kZSE9PW4wdClyZXR1cm47ZT1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5wb3AoKSx0aGlzLl9kcm9wTG9jYXRpb249YTB0fWVsc2UgdGhpcy5fZHJvcExvY2F0aW9uPXMwdDtpZihlJiZlLmhhc0F0dHJpYnV0ZSgiZHJvcC1kaXNhYmxlZCIpKXJldHVybiB2b2lkKHRoaXMuX2Ryb3BMb2NhdGlvbj12b2lkIDApO3Quc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2Ryb3BMb2NhdGlvbj09PXMwdD90aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyYWdvdmVyIiwhMCx0aGlzKTplPyh0aGlzLl9kcmFnT3Zlckl0ZW09ZS5faXRlbSxlLmdldEF0dHJpYnV0ZSgiZHJhZ292ZXIiKSE9PXRoaXMuX2Ryb3BMb2NhdGlvbiYmZS5zZXRBdHRyaWJ1dGUoImRyYWdvdmVyIix0aGlzLl9kcm9wTG9jYXRpb24pKTp0aGlzLl9jbGVhckRyYWdTdHlsZXMoKX19X19kbmRBdXRvU2Nyb2xsKHQpe2lmKHRoaXMuX19kbmRBdXRvU2Nyb2xsaW5nKXJldHVybiEwO2NvbnN0IGU9dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sbj10aGlzLiQuZm9vdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCxpPWUtdCt0aGlzLl9fZG5kQXV0b1Njcm9sbFRocmVzaG9sZCxyPXQtbit0aGlzLl9fZG5kQXV0b1Njcm9sbFRocmVzaG9sZDtsZXQgbz0wO2lmKHI+MD9vPTIqcjppPjAmJihvPTIqLWkpLG8pe2NvbnN0IHQ9dGhpcy4kLnRhYmxlLnNjcm9sbFRvcDt0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1vO2lmKHQhPT10aGlzLiQudGFibGUuc2Nyb2xsVG9wKXJldHVybiB0aGlzLl9fZG5kQXV0b1Njcm9sbGluZz0hMCxzZXRUaW1lb3V0KCgoKT0+dGhpcy5fX2RuZEF1dG9TY3JvbGxpbmc9ITEpLDIwKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCksITB9fV9fZ2V0Vmlld3BvcnRSb3dzKCl7Y29uc3QgdD10aGlzLiQuaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSxlPXRoaXMuJC5mb290ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO3JldHVybiBBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKChuPT57Y29uc3QgaT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBpLmJvdHRvbT50JiZpLnRvcDxlfSkpfV9jbGVhckRyYWdTdHlsZXMoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZHJhZ292ZXIiKSxBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+dC5yZW1vdmVBdHRyaWJ1dGUoImRyYWdvdmVyIikpKX1fb25Ecm9wKHQpe2lmKHRoaXMuZHJvcE1vZGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dC5kYXRhVHJhbnNmZXIudHlwZXMmJkFycmF5LmZyb20odC5kYXRhVHJhbnNmZXIudHlwZXMpLm1hcCgoZT0+KHt0eXBlOmUsZGF0YTp0LmRhdGFUcmFuc2Zlci5nZXREYXRhKGUpfSkpKTt0aGlzLl9jbGVhckRyYWdTdHlsZXMoKTtjb25zdCBuPW5ldyBDdXN0b21FdmVudCgiZ3JpZC1kcm9wIix7YnViYmxlczp0LmJ1YmJsZXMsY2FuY2VsYWJsZTp0LmNhbmNlbGFibGUsZGV0YWlsOntkcm9wVGFyZ2V0SXRlbTp0aGlzLl9kcmFnT3Zlckl0ZW0sZHJvcExvY2F0aW9uOnRoaXMuX2Ryb3BMb2NhdGlvbixkcmFnRGF0YTplfX0pO24ub3JpZ2luYWxFdmVudD10LHRoaXMuZGlzcGF0Y2hFdmVudChuKX19X19mb3JtYXREZWZhdWx0VHJhbnNmZXJEYXRhKHQpe3JldHVybiB0Lm1hcCgodD0+QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbiYmLTE9PT10LmdldEF0dHJpYnV0ZSgicGFydCIpLmluZGV4T2YoImRldGFpbHMtY2VsbCIpKSkuc29ydCgoKHQsZSk9PnQuX2NvbHVtbi5fb3JkZXI+ZS5fY29sdW1uLl9vcmRlcj8xOi0xKSkubWFwKCh0PT50Ll9jb250ZW50LnRleHRDb250ZW50LnRyaW0oKSkpLmZpbHRlcigodD0+dCkpLmpvaW4oIlx0IikpKS5qb2luKCJcbiIpfV9kcmFnRHJvcEFjY2Vzc0NoYW5nZWQoKXt0aGlzLmZpbHRlckRyYWdBbmREcm9wKCl9ZmlsdGVyRHJhZ0FuZERyb3AoKXtBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5mb3JFYWNoKCh0PT57dGhpcy5fZmlsdGVyRHJhZ0FuZERyb3AodCx0aGlzLl9fZ2V0Um93TW9kZWwodCkpfSkpfV9maWx0ZXJEcmFnQW5kRHJvcCh0LGUpe2NvbnN0IG49IXRoaXMucm93c0RyYWdnYWJsZXx8dGhpcy5kcmFnRmlsdGVyJiYhdGhpcy5kcmFnRmlsdGVyKGUpLGk9IXRoaXMuZHJvcE1vZGV8fHRoaXMuZHJvcEZpbHRlciYmIXRoaXMuZHJvcEZpbHRlcihlKTtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLm1hcCgodD0+dC5fY29udGVudCkpLmZvckVhY2goKHQ9PntuP3QucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKTp0LnNldEF0dHJpYnV0ZSgiZHJhZ2dhYmxlIiwhMCl9KSksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcmFnLWRpc2FibGVkIixuLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJvcC1kaXNhYmxlZCIsaSx0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLGMwdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19oZWFkZXJGb2N1c2FibGU6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfZm9jdXNhYmxlQ2hhbmdlZCJ9LF9pdGVtc0ZvY3VzYWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9mb2N1c2FibGVDaGFuZ2VkIn0sX2Zvb3RlckZvY3VzYWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9mb2N1c2FibGVDaGFuZ2VkIn0sX25hdmlnYXRpbmdJc0hpZGRlbjpCb29sZWFuLF9mb2N1c2VkSXRlbUluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowfSxfZm9jdXNlZENvbHVtbk9yZGVyOk51bWJlcixpbnRlcmFjdGluZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMCxvYnNlcnZlcjoiX2ludGVyYWN0aW5nQ2hhbmdlZCJ9fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5faW9zfHx0aGlzLl9hbmRyb2lkfHwodGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleURvd24pLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuX29uS2V5VXApLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25Gb2N1c0luKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLl9vbkZvY3VzT3V0KSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25DZWxsRm9jdXNJbi5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLHRoaXMuX29uQ2VsbEZvY3VzT3V0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9Pnt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCExLHRoaXMpLHRoaXMuX2lzTW91c2Vkb3duPSEwfSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsKCgpPT50aGlzLl9pc01vdXNlZG93bj0hMSkpKX1fZm9jdXNhYmxlQ2hhbmdlZCh0LGUpe2UmJmUuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksdCYmdGhpcy5fdXBkYXRlR3JpZFNlY3Rpb25Gb2N1c1RhcmdldCh0KX1faW50ZXJhY3RpbmdDaGFuZ2VkKCl7dGhpcy5fdXBkYXRlR3JpZFNlY3Rpb25Gb2N1c1RhcmdldCh0aGlzLl9oZWFkZXJGb2N1c2FibGUpLHRoaXMuX3VwZGF0ZUdyaWRTZWN0aW9uRm9jdXNUYXJnZXQodGhpcy5faXRlbXNGb2N1c2FibGUpLHRoaXMuX3VwZGF0ZUdyaWRTZWN0aW9uRm9jdXNUYXJnZXQodGhpcy5fZm9vdGVyRm9jdXNhYmxlKX1fb25LZXlEb3duKHQpe2NvbnN0IGU9dC5rZXk7bGV0IG47c3dpdGNoKGUpe2Nhc2UiQXJyb3dVcCI6Y2FzZSJBcnJvd0Rvd24iOmNhc2UiQXJyb3dMZWZ0IjpjYXNlIkFycm93UmlnaHQiOmNhc2UiUGFnZVVwIjpjYXNlIlBhZ2VEb3duIjpjYXNlIkhvbWUiOmNhc2UiRW5kIjpuPSJOYXZpZ2F0aW9uIjticmVhaztjYXNlIkVudGVyIjpjYXNlIkVzY2FwZSI6Y2FzZSJGMiI6bj0iSW50ZXJhY3Rpb24iO2JyZWFrO2Nhc2UiVGFiIjpuPSJUYWIiO2JyZWFrO2Nhc2UiICI6bj0iU3BhY2UifXRoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpLHRoaXMuaW50ZXJhY3RpbmcmJiJJbnRlcmFjdGlvbiIhPT1uJiYobj12b2lkIDApLG4mJnRoaXNbYF9vbiR7bn1LZXlEb3duYF0odCxlKX1fZW5zdXJlU2Nyb2xsZWRUb0luZGV4KHQpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKGU9PmUuaW5kZXg9PT10KSlbMF18fHRoaXMuX3Njcm9sbFRvSW5kZXgodCl9X29uTmF2aWdhdGlvbktleURvd24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHQucGFyZW50Tm9kZS5jaGlsZHJlbix0KX10aGlzLl9zY3JvbGxIYW5kbGVyKCksdC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGk9dGhpcy5fbGFzdFZpc2libGVJbmRleC10aGlzLl9maXJzdFZpc2libGVJbmRleC0xO2xldCByPTAsbz0wO3N3aXRjaChlKXtjYXNlIkFycm93UmlnaHQiOnI9dGhpcy5fX2lzUlRMPy0xOjE7YnJlYWs7Y2FzZSJBcnJvd0xlZnQiOnI9dGhpcy5fX2lzUlRMPzE6LTE7YnJlYWs7Y2FzZSJIb21lIjpyPS0xLzAsdC5jdHJsS2V5JiYobz0tMS8wKTticmVhaztjYXNlIkVuZCI6cj0xLzAsdC5jdHJsS2V5JiYobz0xLzApO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjpvPTE7YnJlYWs7Y2FzZSJBcnJvd1VwIjpvPS0xO2JyZWFrO2Nhc2UiUGFnZURvd24iOm89aTticmVhaztjYXNlIlBhZ2VVcCI6bz0taX1jb25zdCBhPXQuY29tcG9zZWRQYXRoKClbMF0scz1uKGEpLGw9dGhpcy5fZWxlbWVudE1hdGNoZXMoYSwnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXScpLGM9YS5wYXJlbnROb2RlLHU9Yy5wYXJlbnROb2RlLGg9KHU9PT10aGlzLiQuaXRlbXM/dGhpcy5fZWZmZWN0aXZlU2l6ZTp1LmNoaWxkcmVuLmxlbmd0aCktMSxkPXU9PT10aGlzLiQuaXRlbXM/dm9pZCAwIT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleD90aGlzLl9mb2N1c2VkSXRlbUluZGV4OmMuaW5kZXg6bihjKTtsZXQgcD1NYXRoLm1heCgwLE1hdGgubWluKGQrbyxoKSksZj0hMTtpZih1PT09dGhpcy4kLml0ZW1zKXtjb25zdCB0PWMuX2l0ZW0sZT10aGlzLl9jYWNoZS5nZXRJdGVtRm9ySW5kZXgocCk7Zj1sPzA9PT1vOjE9PT1vJiZ0aGlzLl9pc0RldGFpbHNPcGVuZWQodCl8fC0xPT09byYmcCE9PWQmJnRoaXMuX2lzRGV0YWlsc09wZW5lZChlKSxmIT09bCYmKDE9PT1vJiZmfHwtMT09PW8mJiFmKSYmKHA9ZCl9aWYodSE9PXRoaXMuJC5pdGVtcylpZihwPmQpZm9yKDtwPGgmJnUuY2hpbGRyZW5bcF0uaGlkZGVuOylwKys7ZWxzZSBpZihwPGQpZm9yKDtwPjAmJnUuY2hpbGRyZW5bcF0uaGlkZGVuOylwLS07dm9pZCAwPT09dGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyJiYodGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyPWw/MDp0aGlzLl9nZXRDb2x1bW5zKHUsZCkuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVtzXS5fb3JkZXIpO2NvbnN0IG09dGhpcy5fZ2V0Q29sdW1ucyh1LHApLmZpbHRlcigodD0+IXQuaGlkZGVuKSksZz1tLm1hcCgodD0+dC5fb3JkZXIpKS5zb3J0KCgodCxlKT0+dC1lKSksXz1nLmxlbmd0aC0xLHk9Zy5pbmRleE9mKGcuc2xpY2UoMCkuc29ydCgoKHQsZSk9Pk1hdGguYWJzKHQtdGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyKS1NYXRoLmFicyhlLXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcikpKVswXSksdj0wPT09byYmbD95Ok1hdGgubWF4KDAsTWF0aC5taW4oeStyLF8pKTt2IT09eSYmKHRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcj12b2lkIDApLHU9PT10aGlzLiQuaXRlbXMmJnRoaXMuX2Vuc3VyZVNjcm9sbGVkVG9JbmRleChwKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpO2NvbnN0IGI9bS5yZWR1Y2UoKCh0LGUsbik9Pih0W2UuX29yZGVyXT1uLHQpKSx7fSlbZ1t2XV0seD11PT09dGhpcy4kLml0ZW1zP0FycmF5LmZyb20odS5jaGlsZHJlbikuZmlsdGVyKCh0PT50LmluZGV4PT09cCkpWzBdOnUuY2hpbGRyZW5bcF07aWYoIXgpcmV0dXJuO2NvbnN0IHc9Zj9BcnJheS5mcm9tKHguY2hpbGRyZW4pLmZpbHRlcigodD0+dGhpcy5fZWxlbWVudE1hdGNoZXModCwnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXScpKSlbMF06eC5jaGlsZHJlbltiXTtpZih0aGlzLl9zY3JvbGxIb3Jpem9udGFsbHlUb0NlbGwodyksdT09PXRoaXMuJC5pdGVtcyYmKHRoaXMuX2ZvY3VzZWRJdGVtSW5kZXg9cCksdT09PXRoaXMuJC5pdGVtcyl7Y29uc3QgdD13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy4kLmZvb3Rlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Asbj10aGlzLiQuaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTt0LmJvdHRvbT5lPyh0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz10LmJvdHRvbS1lLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSk6dC50b3A8biYmKHRoaXMuJC50YWJsZS5zY3JvbGxUb3AtPW4tdC50b3AsdGhpcy5fc2Nyb2xsSGFuZGxlcigpKX13LmZvY3VzKCl9X29uSW50ZXJhY3Rpb25LZXlEb3duKHQsZSl7Y29uc3Qgbj10LmNvbXBvc2VkUGF0aCgpWzBdLGk9ImlucHV0Ij09PW4ubG9jYWxOYW1lJiYhL14oYnV0dG9ufGNoZWNrYm94fGNvbG9yfGZpbGV8aW1hZ2V8cmFkaW98cmFuZ2V8cmVzZXR8c3VibWl0KSQvaS50ZXN0KG4udHlwZSk7bGV0IHI7c3dpdGNoKGUpe2Nhc2UiRW50ZXIiOnI9IXRoaXMuaW50ZXJhY3Rpbmd8fCFpO2JyZWFrO2Nhc2UiRXNjYXBlIjpyPSExO2JyZWFrO2Nhc2UiRjIiOnI9IXRoaXMuaW50ZXJhY3Rpbmd9Y29uc3R7Y2VsbDpvfT10aGlzLl9nZXRHcmlkRXZlbnRMb2NhdGlvbih0KTtpZih0aGlzLmludGVyYWN0aW5nIT09ciYmbnVsbCE9PW8paWYocil7Y29uc3QgZT1vLl9jb250ZW50LnF1ZXJ5U2VsZWN0b3IoIltmb2N1cy10YXJnZXRdIil8fG8uX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQ7ZSYmKHQucHJldmVudERlZmF1bHQoKSxlLmZvY3VzKCksdGhpcy5fc2V0SW50ZXJhY3RpbmcoITApLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcykpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcj12b2lkIDAsby5mb2N1cygpLHRoaXMuX3NldEludGVyYWN0aW5nKCExKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpfV9wcmVkaWN0Rm9jdXNTdGVwVGFyZ2V0KHQsZSl7Y29uc3Qgbj1bdGhpcy4kLnRhYmxlLHRoaXMuX2hlYWRlckZvY3VzYWJsZSx0aGlzLl9pdGVtc0ZvY3VzYWJsZSx0aGlzLl9mb290ZXJGb2N1c2FibGUsdGhpcy4kLmZvY3VzZXhpdF07bGV0IGk9bi5pbmRleE9mKHQpO2ZvcihpKz1lO2k+PTAmJmk8PW4ubGVuZ3RoLTEmJighbltpXXx8bltpXS5wYXJlbnROb2RlLmhpZGRlbik7KWkrPWU7cmV0dXJuIG5baV19X29uVGFiS2V5RG93bih0KXtjb25zdCBlPXRoaXMuX3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQodC5jb21wb3NlZFBhdGgoKVswXSx0LnNoaWZ0S2V5Py0xOjEpO2lmKGU9PT10aGlzLiQudGFibGUpdGhpcy4kLnRhYmxlLmZvY3VzKCk7ZWxzZSBpZihlPT09dGhpcy4kLmZvY3VzZXhpdCl0aGlzLiQuZm9jdXNleGl0LmZvY3VzKCk7ZWxzZSBpZihlPT09dGhpcy5faXRlbXNGb2N1c2FibGUpe2xldCBuPWU7Y29uc3QgaT10aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnROb2RlO2lmKHRoaXMuX2Vuc3VyZVNjcm9sbGVkVG9JbmRleCh0aGlzLl9mb2N1c2VkSXRlbUluZGV4KSxpLmluZGV4IT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCl7Y29uc3QgdD1BcnJheS5mcm9tKGkuY2hpbGRyZW4pLmluZGV4T2YodGhpcy5faXRlbXNGb2N1c2FibGUpLGU9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgpKVswXTtlJiYobj1lLmNoaWxkcmVuW3RdKX10LnByZXZlbnREZWZhdWx0KCksbi5mb2N1cygpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLGUuZm9jdXMoKTt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpfV9vblNwYWNlS2V5RG93bih0KXt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpWzBdO2UuX2NvbnRlbnQmJmUuX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGR8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtYWN0aXZhdGUiLHtkZXRhaWw6e21vZGVsOnRoaXMuX19nZXRSb3dNb2RlbChlLnBhcmVudEVsZW1lbnQpfX0pKX1fb25LZXlVcCh0KXtpZighL14oIHxTcGFjZUJhcikkLy50ZXN0KHQua2V5KSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKVswXTtpZihlLl9jb250ZW50JiZlLl9jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKXtjb25zdCB0PXRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIik7ZS5fY29udGVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGljaygpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsdCx0aGlzKX19X29uRm9jdXNJbih0KXt0aGlzLl9pc01vdXNlZG93bnx8dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKTtjb25zdCBlPXQuY29tcG9zZWRQYXRoKClbMF07ZT09PXRoaXMuJC50YWJsZXx8ZT09PXRoaXMuJC5mb2N1c2V4aXQ/KHRoaXMuX3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQoZSxlPT09dGhpcy4kLnRhYmxlPzE6LTEpLmZvY3VzKCksdGhpcy5fc2V0SW50ZXJhY3RpbmcoITEpKTp0aGlzLl9kZXRlY3RJbnRlcmFjdGluZyh0KX1fb25Gb2N1c091dCh0KXt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCExLHRoaXMpLHRoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpfV9vbkNlbGxGb2N1c0luKHQpe2NvbnN0e3NlY3Rpb246ZSxjZWxsOm59PXRoaXMuX2dldEdyaWRFdmVudExvY2F0aW9uKHQpO3RoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpLGUmJm4mJih0aGlzLl9hY3RpdmVSb3dHcm91cD1lLHRoaXMuJC5oZWFkZXI9PT1lP3RoaXMuX2hlYWRlckZvY3VzYWJsZT1uOnRoaXMuJC5pdGVtcz09PWU/dGhpcy5faXRlbXNGb2N1c2FibGU9bjp0aGlzLiQuZm9vdGVyPT09ZSYmKHRoaXMuX2Zvb3RlckZvY3VzYWJsZT1uKSxuLl9jb250ZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsLWZvY3VzaW4iLHtidWJibGVzOiExfSkpLG4uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtZm9jdXMiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpKSx0aGlzLl9kZXRlY3RGb2N1c2VkSXRlbUluZGV4KHQpfV9vbkNlbGxGb2N1c091dCh0KXtpZigzPT09dC5jb21wb3NlZFBhdGgoKS5pbmRleE9mKHRoaXMuJC50YWJsZSkpe3QuY29tcG9zZWRQYXRoKClbMF0uX2NvbnRlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtZm9jdXNvdXQiLHtidWJibGVzOiExfSkpfX1fZGV0ZWN0SW50ZXJhY3RpbmcodCl7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLnNvbWUoKHQ9PiJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiPT09dC5sb2NhbE5hbWUpKTt0aGlzLl9zZXRJbnRlcmFjdGluZyhlKX1fZGV0ZWN0Rm9jdXNlZEl0ZW1JbmRleCh0KXtjb25zdHtzZWN0aW9uOmUscm93Om59PXRoaXMuX2dldEdyaWRFdmVudExvY2F0aW9uKHQpO2U9PT10aGlzLiQuaXRlbXMmJih0aGlzLl9mb2N1c2VkSXRlbUluZGV4PW4uaW5kZXgpfV91cGRhdGVHcmlkU2VjdGlvbkZvY3VzVGFyZ2V0KHQpe2lmKCF0KXJldHVybjtjb25zdCBlPXRoaXMuX2dldEdyaWRTZWN0aW9uRnJvbUZvY3VzVGFyZ2V0KHQpO3QudGFiSW5kZXg9dGhpcy5pbnRlcmFjdGluZyYmZT09PXRoaXMuX2FjdGl2ZVJvd0dyb3VwPy0xOjB9X3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsZSl7dC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgmJnRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIikmJnRoaXMuX2FjdGl2ZVJvd0dyb3VwPT09dGhpcy4kLml0ZW1zJiYodGhpcy5fbmF2aWdhdGluZ0lzSGlkZGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcykpLGU9PT10aGlzLl9mb2N1c2VkSXRlbUluZGV4JiZ0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW4mJih0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW49ITEsdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKSl9X2dldENvbHVtbnModCxlKXtsZXQgbj10aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xO3JldHVybiB0PT09dGhpcy4kLmhlYWRlcj9uPWU6dD09PXRoaXMuJC5mb290ZXImJihuPXRoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTEtZSksdGhpcy5fY29sdW1uVHJlZVtuXX1fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKXtpZih0aGlzLiQuaGVhZGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5faGVhZGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSksdGhpcy4kLml0ZW1zLmZpcnN0RWxlbWVudENoaWxkKXtjb25zdCB0PXRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsZSk9PntpZih0aGlzLl9maXJzdFZpc2libGVJbmRleD09PWUpcmV0dXJuIHRoaXMuJC5pdGVtcy5jaGlsZHJlblt0XX0pKTt0JiYodGhpcy5faXRlbXNGb2N1c2FibGU9QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpWzBdKX10aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5fZm9vdGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmZvb3Rlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSl9X3Njcm9sbEhvcml6b250YWxseVRvQ2VsbCh0KXtpZih0Lmhhc0F0dHJpYnV0ZSgiZnJvemVuIil8fHRoaXMuX2VsZW1lbnRNYXRjaGVzKHQsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSlyZXR1cm47Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC5wYXJlbnROb2RlLGk9QXJyYXkuZnJvbShuLmNoaWxkcmVuKS5pbmRleE9mKHQpLHI9dGhpcy4kLnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBvPXIubGVmdCxhPXIucmlnaHQ7Zm9yKGxldCB0PWktMTt0Pj0wO3QtLSl7Y29uc3QgZT1uLmNoaWxkcmVuW3RdO2lmKCFlLmhhc0F0dHJpYnV0ZSgiaGlkZGVuIikmJiF0aGlzLl9lbGVtZW50TWF0Y2hlcyhlLCdbcGFydH49ImRldGFpbHMtY2VsbCJdJykmJmUuaGFzQXR0cmlidXRlKCJmcm96ZW4iKSl7bz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0O2JyZWFrfX1mb3IobGV0IHQ9aSsxO3Q8bi5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uY2hpbGRyZW5bdF07aWYoIWUuaGFzQXR0cmlidXRlKCJoaWRkZW4iKSYmIXRoaXMuX2VsZW1lbnRNYXRjaGVzKGUsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSYmZS5oYXNBdHRyaWJ1dGUoImZyb3plbiIpKXthPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDticmVha319ZS5sZWZ0PG8mJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9TWF0aC5yb3VuZChlLmxlZnQtbykpLGUucmlnaHQ+YSYmKHRoaXMuJC50YWJsZS5zY3JvbGxMZWZ0Kz1NYXRoLnJvdW5kKGUucmlnaHQtYSkpfV9lbGVtZW50TWF0Y2hlcyh0LGUpe3JldHVybiB0Lm1hdGNoZXM/dC5tYXRjaGVzKGUpOi0xIT09QXJyYXkuZnJvbSh0LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbChlKSkuaW5kZXhPZih0KX1fZ2V0R3JpZEV2ZW50TG9jYXRpb24odCl7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLG49ZS5pbmRleE9mKHRoaXMuJC50YWJsZSk7cmV0dXJue3NlY3Rpb246bj49MT9lW24tMV06bnVsbCxyb3c6bj49Mj9lW24tMl06bnVsbCxjZWxsOm4+PTM/ZVtuLTNdOm51bGx9fV9nZXRHcmlkU2VjdGlvbkZyb21Gb2N1c1RhcmdldCh0KXtyZXR1cm4gdD09PXRoaXMuX2hlYWRlckZvY3VzYWJsZT90aGlzLiQuaGVhZGVyOnQ9PT10aGlzLl9pdGVtc0ZvY3VzYWJsZT90aGlzLiQuaXRlbXM6dD09PXRoaXMuX2Zvb3RlckZvY3VzYWJsZT90aGlzLiQuZm9vdGVyOm51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLzsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgdTB0PXQ9PmNsYXNzIGV4dGVuZHMoYmkodCkpe3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntjb2x1bW5SZW9yZGVyaW5nQWxsb3dlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfb3JkZXJCYXNlU2NvcGU6e3R5cGU6TnVtYmVyLHZhbHVlOjFlN319fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfdXBkYXRlT3JkZXJzKF9jb2x1bW5UcmVlLCBfY29sdW1uVHJlZS4qKSJdfXJlYWR5KCl7c3VwZXIucmVhZHkoKSxjaSh0aGlzLCJ0cmFjayIsdGhpcy5fb25UcmFja0V2ZW50KSx0aGlzLl9yZW9yZGVyR2hvc3Q9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0PSJyZW9yZGVyLWdob3N0Il0nKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fb25Ub3VjaEVuZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9vbkNvbnRleHRNZW51LmJpbmQodGhpcykpfV9vbkNvbnRleHRNZW51KHQpe3RoaXMuaGFzQXR0cmlidXRlKCJyZW9yZGVyaW5nIikmJnQucHJldmVudERlZmF1bHQoKX1fb25Ub3VjaFN0YXJ0KHQpe3RoaXMuX3N0YXJ0VG91Y2hSZW9yZGVyVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX29uVHJhY2tTdGFydCh7ZGV0YWlsOnt4OnQudG91Y2hlc1swXS5jbGllbnRYLHk6dC50b3VjaGVzWzBdLmNsaWVudFl9fSl9KSwxMDApfV9vblRvdWNoTW92ZSh0KXt0aGlzLl9kcmFnZ2VkQ29sdW1uJiZ0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuX3N0YXJ0VG91Y2hSZW9yZGVyVGltZW91dCl9X29uVG91Y2hFbmQoKXtjbGVhclRpbWVvdXQodGhpcy5fc3RhcnRUb3VjaFJlb3JkZXJUaW1lb3V0KSx0aGlzLl9vblRyYWNrRW5kKCl9X29uVHJhY2tFdmVudCh0KXtpZigic3RhcnQiPT09dC5kZXRhaWwuc3RhdGUpe2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKSxuPWVbZS5pbmRleE9mKHRoaXMuJC5oZWFkZXIpLTJdO2lmKCFufHwhbi5fY29udGVudClyZXR1cm47aWYobi5fY29udGVudC5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCkpcmV0dXJuO2lmKHRoaXMuJC5zY3JvbGxlci5oYXNBdHRyaWJ1dGUoImNvbHVtbi1yZXNpemluZyIpKXJldHVybjt0aGlzLl90b3VjaERldmljZXx8dGhpcy5fb25UcmFja1N0YXJ0KHQpfWVsc2UidHJhY2siPT09dC5kZXRhaWwuc3RhdGU/dGhpcy5fb25UcmFjayh0KToiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiZ0aGlzLl9vblRyYWNrRW5kKHQpfV9vblRyYWNrU3RhcnQodCl7aWYoIXRoaXMuY29sdW1uUmVvcmRlcmluZ0FsbG93ZWQpcmV0dXJuO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgmJnQuY29tcG9zZWRQYXRoKCk7aWYoZSYmZS5maWx0ZXIoKHQ9PnQuaGFzQXR0cmlidXRlJiZ0Lmhhc0F0dHJpYnV0ZSgiZHJhZ2dhYmxlIikpKVswXSlyZXR1cm47Y29uc3Qgbj10aGlzLl9jZWxsRnJvbVBvaW50KHQuZGV0YWlsLngsdC5kZXRhaWwueSk7aWYobiYmLTEhPT1uLmdldEF0dHJpYnV0ZSgicGFydCIpLmluZGV4T2YoImhlYWRlci1jZWxsIikpe2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCEwLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW49bi5fY29sdW1uOzE9PT10aGlzLl9kcmFnZ2VkQ29sdW1uLnBhcmVudEVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQ7KXRoaXMuX2RyYWdnZWRDb2x1bW49dGhpcy5fZHJhZ2dlZENvbHVtbi5wYXJlbnRFbGVtZW50O3RoaXMuX3NldFNpYmxpbmdzUmVvcmRlclN0YXR1cyh0aGlzLl9kcmFnZ2VkQ29sdW1uLCJhbGxvd2VkIiksdGhpcy5fZHJhZ2dlZENvbHVtbi5fcmVvcmRlclN0YXR1cz0iZHJhZ2dpbmciLHRoaXMuX3VwZGF0ZUdob3N0KG4pLHRoaXMuX3Jlb3JkZXJHaG9zdC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKHQuZGV0YWlsLngsdGhpcy5fdG91Y2hEZXZpY2U/dC5kZXRhaWwueS01MDp0LmRldGFpbC55KSx0aGlzLl9hdXRvU2Nyb2xsZXIoKX19X29uVHJhY2sodCl7aWYoIXRoaXMuX2RyYWdnZWRDb2x1bW4pcmV0dXJuO2NvbnN0IGU9dGhpcy5fY2VsbEZyb21Qb2ludCh0LmRldGFpbC54LHQuZGV0YWlsLnkpO2lmKCFlKXJldHVybjtjb25zdCBuPXRoaXMuX2dldFRhcmdldENvbHVtbihlLHRoaXMuX2RyYWdnZWRDb2x1bW4pO3RoaXMuX2lzU3dhcEFsbG93ZWQodGhpcy5fZHJhZ2dlZENvbHVtbixuKSYmdGhpcy5faXNTd2FwcGFibGVCeVBvc2l0aW9uKG4sdC5kZXRhaWwueCkmJnRoaXMuX3N3YXBDb2x1bW5PcmRlcnModGhpcy5fZHJhZ2dlZENvbHVtbixuKSx0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKHQuZGV0YWlsLngsdGhpcy5fdG91Y2hEZXZpY2U/dC5kZXRhaWwueS01MDp0LmRldGFpbC55KSx0aGlzLl9sYXN0RHJhZ0NsaWVudFg9dC5kZXRhaWwueH1fb25UcmFja0VuZCgpe3RoaXMuX2RyYWdnZWRDb2x1bW4mJih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCExLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW4uX3Jlb3JkZXJTdGF0dXM9IiIsdGhpcy5fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHRoaXMuX2RyYWdnZWRDb2x1bW4sIiIpLHRoaXMuX2RyYWdnZWRDb2x1bW49bnVsbCx0aGlzLl9sYXN0RHJhZ0NsaWVudFg9bnVsbCx0aGlzLl9yZW9yZGVyR2hvc3Quc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb2x1bW4tcmVvcmRlciIse2RldGFpbDp7Y29sdW1uczp0aGlzLl9nZXRDb2x1bW5zSW5PcmRlcigpfX0pKSl9X2dldENvbHVtbnNJbk9yZGVyKCl7cmV0dXJuIHRoaXMuX2NvbHVtblRyZWUuc2xpY2UoMCkucG9wKCkuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5zb3J0KCgodCxlKT0+dC5fb3JkZXItZS5fb3JkZXIpKX1fY2VsbEZyb21Qb2ludCh0LGUpe3Q9dHx8MCxlPWV8fDAsdGhpcy5fZHJhZ2dlZENvbHVtbnx8dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuby1jb250ZW50LXBvaW50ZXItZXZlbnRzIiwhMCx0aGlzLiQuc2Nyb2xsZXIpO2NvbnN0IG49dGhpcy5zaGFkb3dSb290LmVsZW1lbnRGcm9tUG9pbnQodCxlKTtpZih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5vLWNvbnRlbnQtcG9pbnRlci1ldmVudHMiLCExLHRoaXMuJC5zY3JvbGxlciksbiYmbi5fY29sdW1uKXJldHVybiBufV91cGRhdGVHaG9zdFBvc2l0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLl9yZW9yZGVyR2hvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT10LW4ud2lkdGgvMixyPWUtbi5oZWlnaHQvMixvPXBhcnNlSW50KHRoaXMuX3Jlb3JkZXJHaG9zdC5fbGVmdHx8MCksYT1wYXJzZUludCh0aGlzLl9yZW9yZGVyR2hvc3QuX3RvcHx8MCk7dGhpcy5fcmVvcmRlckdob3N0Ll9sZWZ0PW8tKG4ubGVmdC1pKSx0aGlzLl9yZW9yZGVyR2hvc3QuX3RvcD1hLShuLnRvcC1yKSx0aGlzLl9yZW9yZGVyR2hvc3Quc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoJHt0aGlzLl9yZW9yZGVyR2hvc3QuX2xlZnR9cHgsICR7dGhpcy5fcmVvcmRlckdob3N0Ll90b3B9cHgpYH1fdXBkYXRlR2hvc3QodCl7Y29uc3QgZT10aGlzLl9yZW9yZGVyR2hvc3Q7ZS50ZXh0Q29udGVudD10Ll9jb250ZW50LmlubmVyVGV4dDtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpO3JldHVyblsiYm94U2l6aW5nIiwiZGlzcGxheSIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZCIsImFsaWduSXRlbXMiLCJwYWRkaW5nIiwiYm9yZGVyIiwiZmxleC1kaXJlY3Rpb24iLCJvdmVyZmxvdyJdLmZvckVhY2goKHQ9PmUuc3R5bGVbdF09blt0XSkpLGV9X3VwZGF0ZU9yZGVycyh0LGUpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWUmJih0WzBdLmZvckVhY2goKHQ9PnQuX29yZGVyPTApKSwoZnVuY3Rpb24gbih0LGUsaSl7bGV0IHI9MTt0LmZvckVhY2goKHQ9PntyJTEwPT0wJiZyKyssdC5fb3JkZXI9aStyKmUscisrfSkpfSkodFswXSx0aGlzLl9vcmRlckJhc2VTY29wZSwwKSl9X3NldFNpYmxpbmdzUmVvcmRlclN0YXR1cyh0LGUpe0FycmF5LmZyb20odC5wYXJlbnROb2RlLmNoaWxkcmVuKS5maWx0ZXIoKGU9Pi9jb2x1bW4vLnRlc3QoZS5sb2NhbE5hbWUpJiZ0aGlzLl9pc1N3YXBBbGxvd2VkKGUsdCkpKS5mb3JFYWNoKCh0PT50Ll9yZW9yZGVyU3RhdHVzPWUpKX1fYXV0b1Njcm9sbGVyKCl7aWYodGhpcy5fbGFzdERyYWdDbGllbnRYKXtjb25zdCB0PXRoaXMuX2xhc3REcmFnQ2xpZW50WC10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KzUwLGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LXRoaXMuX2xhc3REcmFnQ2xpZW50WCs1MDt0PjA/dGhpcy4kLnRhYmxlLnNjcm9sbExlZnQrPXQvMTA6ZT4wJiYodGhpcy4kLnRhYmxlLnNjcm9sbExlZnQtPWUvMTApLHRoaXMuX3Njcm9sbEhhbmRsZXIoKX10aGlzLl9kcmFnZ2VkQ29sdW1uJiZ0aGlzLmFzeW5jKHRoaXMuX2F1dG9TY3JvbGxlciwxMCl9X2lzU3dhcEFsbG93ZWQodCxlKXtpZih0JiZlKXtjb25zdCBuPXQucGFyZW50RWxlbWVudD09PWUucGFyZW50RWxlbWVudCxpPXQuZnJvemVuPT09ZS5mcm96ZW47cmV0dXJuIHQhPT1lJiZuJiZpfX1faXNTd2FwcGFibGVCeVBvc2l0aW9uKHQsZSl7Y29uc3Qgbj1BcnJheS5mcm9tKHRoaXMuJC5oZWFkZXIucXVlcnlTZWxlY3RvckFsbCgndHI6bm90KFtoaWRkZW5dKSBbcGFydH49ImNlbGwiXScpKS5maWx0ZXIoKGU9PnQuY29udGFpbnMoZS5fY29sdW1uKSkpWzBdLGk9dGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yKCJ0cjpub3QoW2hpZGRlbl0pIFtyZW9yZGVyLXN0YXR1cz1kcmFnZ2luZ10iKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIHIubGVmdD5pLmxlZnQ/ZT5yLnJpZ2h0LWkud2lkdGg6ZTxyLmxlZnQraS53aWR0aH1fc3dhcENvbHVtbk9yZGVycyh0LGUpe2NvbnN0IG49dC5fb3JkZXI7dC5fb3JkZXI9ZS5fb3JkZXIsZS5fb3JkZXI9bix0aGlzLl91cGRhdGVMYXN0RnJvemVuKCksdGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uKCl9X2dldFRhcmdldENvbHVtbih0LGUpe2lmKHQmJmUpe2xldCBuPXQuX2NvbHVtbjtmb3IoO24ucGFyZW50RWxlbWVudCE9PWUucGFyZW50RWxlbWVudCYmbiE9PXRoaXM7KW49bi5wYXJlbnRFbGVtZW50O3JldHVybiBuLnBhcmVudEVsZW1lbnQ9PT1lLnBhcmVudEVsZW1lbnQ/bjp0Ll9jb2x1bW59fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8saDB0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57cmVzaXphYmxlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ZnVuY3Rpb24oKXtpZigidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PXRoaXMubG9jYWxOYW1lKXJldHVybjtjb25zdCB0PXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gdCYmInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT10LmxvY2FsTmFtZSYmdC5yZXNpemFibGV8fCExfX0sX2hlYWRlclRlbXBsYXRlOnt0eXBlOk9iamVjdH0sX2Zvb3RlclRlbXBsYXRlOnt0eXBlOk9iamVjdH0sZnJvemVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGhpZGRlbjp7dHlwZTpCb29sZWFufSxoZWFkZXI6e3R5cGU6U3RyaW5nfSx0ZXh0QWxpZ246e3R5cGU6U3RyaW5nfSxfbGFzdEZyb3plbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfb3JkZXI6TnVtYmVyLF9yZW9yZGVyU3RhdHVzOkJvb2xlYW4sX2VtcHR5Q2VsbHM6QXJyYXksX2hlYWRlckNlbGw6T2JqZWN0LF9mb290ZXJDZWxsOk9iamVjdCxfZ3JpZDpPYmplY3QsaGVhZGVyUmVuZGVyZXI6RnVuY3Rpb24sZm9vdGVyUmVuZGVyZXI6RnVuY3Rpb259fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfd2lkdGhDaGFuZ2VkKHdpZHRoLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9mcm96ZW5DaGFuZ2VkKGZyb3plbiwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiLCJfZmxleEdyb3dDaGFuZ2VkKGZsZXhHcm93LCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9wYXRoT3JIZWFkZXJDaGFuZ2VkKHBhdGgsIGhlYWRlciwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKiwgcmVuZGVyZXIsIGhlYWRlclJlbmRlcmVyLCBfYm9keVRlbXBsYXRlLCBfaGVhZGVyVGVtcGxhdGUpIiwiX3RleHRBbGlnbkNoYW5nZWQodGV4dEFsaWduLCBfY2VsbHMuKiwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsKSIsIl9vcmRlckNoYW5nZWQoX29yZGVyLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9sYXN0RnJvemVuQ2hhbmdlZChfbGFzdEZyb3plbikiLCJfc2V0Qm9keVRlbXBsYXRlT3JSZW5kZXJlcihfYm9keVRlbXBsYXRlLCByZW5kZXJlciwgX2NlbGxzLCBfY2VsbHMuKikiLCJfc2V0SGVhZGVyVGVtcGxhdGVPclJlbmRlcmVyKF9oZWFkZXJUZW1wbGF0ZSwgaGVhZGVyUmVuZGVyZXIsIF9oZWFkZXJDZWxsKSIsIl9zZXRGb290ZXJUZW1wbGF0ZU9yUmVuZGVyZXIoX2Zvb3RlclRlbXBsYXRlLCBmb290ZXJSZW5kZXJlciwgX2Zvb3RlckNlbGwpIiwiX3Jlc2l6YWJsZUNoYW5nZWQocmVzaXphYmxlLCBfaGVhZGVyQ2VsbCkiLCJfcmVvcmRlclN0YXR1c0NoYW5nZWQoX3Jlb3JkZXJTdGF0dXMsIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIiwiX2hpZGRlbkNoYW5nZWQoaGlkZGVuLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSJdfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9ib2R5VGVtcGxhdGUmJih0aGlzLl9ib2R5VGVtcGxhdGUudGVtcGxhdGl6ZXIuX2dyaWQ9dGhpcy5fZ3JpZCksdGhpcy5faGVhZGVyVGVtcGxhdGUmJih0aGlzLl9oZWFkZXJUZW1wbGF0ZS50ZW1wbGF0aXplci5fZ3JpZD10aGlzLl9ncmlkKSx0aGlzLl9mb290ZXJUZW1wbGF0ZSYmKHRoaXMuX2Zvb3RlclRlbXBsYXRlLnRlbXBsYXRpemVyLl9ncmlkPXRoaXMuX2dyaWQpLHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXIuZmx1c2goKSx0aGlzLl9ib2R5VGVtcGxhdGV8fHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXIuY2FsbGJhY2soKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgodD0+e3QuX2NvbnRlbnQucGFyZW50Tm9kZXx8dGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5hcHBlbmRDaGlsZCh0Ll9jb250ZW50KX0pKX0pKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2ZpbmRIb3N0R3JpZCgpfHx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKCh0PT57dC5fY29udGVudC5wYXJlbnROb2RlJiZ0Ll9jb250ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5fY29udGVudCl9KSl9KSksdGhpcy5fZ3JpZFZhbHVlPXZvaWQgMH1fZmluZEhvc3RHcmlkKCl7bGV0IHQ9dGhpcztmb3IoO3QmJiEvXnZhYWRpbi4qZ3JpZCgtcHJvKT8kLy50ZXN0KHQubG9jYWxOYW1lKTspdD10LmFzc2lnbmVkU2xvdD90LmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlOnQucGFyZW50Tm9kZTtyZXR1cm4gdHx8dm9pZCAwfWdldCBfZ3JpZCgpe3JldHVybiB0aGlzLl9ncmlkVmFsdWV8fCh0aGlzLl9ncmlkVmFsdWU9dGhpcy5fZmluZEhvc3RHcmlkKCkpLHRoaXMuX2dyaWRWYWx1ZX1nZXQgX2FsbENlbGxzKCl7cmV0dXJuW10uY29uY2F0KHRoaXMuX2NlbGxzfHxbXSkuY29uY2F0KHRoaXMuX2VtcHR5Q2VsbHN8fFtdKS5jb25jYXQodGhpcy5faGVhZGVyQ2VsbCkuY29uY2F0KHRoaXMuX2Zvb3RlckNlbGwpLmZpbHRlcigodD0+dCkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl90ZW1wbGF0ZU9ic2VydmVyPW5ldyBHaSh0aGlzLCgoKT0+e3RoaXMuX2hlYWRlclRlbXBsYXRlPXRoaXMuX3ByZXBhcmVIZWFkZXJUZW1wbGF0ZSgpLHRoaXMuX2Zvb3RlclRlbXBsYXRlPXRoaXMuX3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpLHRoaXMuX2JvZHlUZW1wbGF0ZT10aGlzLl9wcmVwYXJlQm9keVRlbXBsYXRlKCl9KSl9X3ByZXBhcmVIZWFkZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCExLCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVCb2R5VGVtcGxhdGUoKXtyZXR1cm4gdGhpcy5fcHJlcGFyZVRlbXBsYXRpemVyKHRoaXMuX2ZpbmRUZW1wbGF0ZSgpfHxudWxsKX1fcHJlcGFyZVRlbXBsYXRpemVyKHQsZSl7aWYodCYmIXQudGVtcGxhdGl6ZXIpe2NvbnN0IG49bmV3IFkxdDtuLl9ncmlkPXRoaXMuX2dyaWQsbi5kYXRhSG9zdD10aGlzLmRhdGFIb3N0LG4uX2luc3RhbmNlUHJvcHM9ZXx8bi5faW5zdGFuY2VQcm9wcyxuLnRlbXBsYXRlPXQsdC50ZW1wbGF0aXplcj1ufXJldHVybiB0fV9yZW5kZXJIZWFkZXJBbmRGb290ZXIoKXt0aGlzLmhlYWRlclJlbmRlcmVyJiZ0aGlzLl9oZWFkZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5oZWFkZXJSZW5kZXJlcix0aGlzLl9oZWFkZXJDZWxsKSx0aGlzLmZvb3RlclJlbmRlcmVyJiZ0aGlzLl9mb290ZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5mb290ZXJSZW5kZXJlcix0aGlzLl9mb290ZXJDZWxsKX1fX3J1blJlbmRlcmVyKHQsZSxuKXtjb25zdCBpPVtlLl9jb250ZW50LHRoaXNdO24mJm4uaXRlbSYmaS5wdXNoKG4pLHQuYXBwbHkodGhpcyxpKX1fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7aWYoIXRoaXMuaGlkZGVuKXtpZih0JiZlKXRocm93IG5ldyBFcnJvcigiWW91IHNob3VsZCBvbmx5IHVzZSBlaXRoZXIgYSByZW5kZXJlciBvciBhIHRlbXBsYXRlIik7bi5mb3JFYWNoKChuPT57Y29uc3QgaT10aGlzLl9ncmlkLl9fZ2V0Um93TW9kZWwobi5wYXJlbnRFbGVtZW50KTtpZihlKW4uX3JlbmRlcmVyPWUsKGkuaXRlbXx8ZT09PXRoaXMuaGVhZGVyUmVuZGVyZXJ8fGU9PT10aGlzLmZvb3RlclJlbmRlcmVyKSYmdGhpcy5fX3J1blJlbmRlcmVyKGUsbixpKTtlbHNlIGlmKG4uX3RlbXBsYXRlIT09dCl7bi5fdGVtcGxhdGU9dCxuLl9jb250ZW50LmlubmVySFRNTD0iIix0LnRlbXBsYXRpemVyLl9ncmlkPXQudGVtcGxhdGl6ZXIuX2dyaWR8fHRoaXMuX2dyaWQ7Y29uc3QgZT10LnRlbXBsYXRpemVyLmNyZWF0ZUluc3RhbmNlKCk7bi5fY29udGVudC5hcHBlbmRDaGlsZChlLnJvb3QpLG4uX2luc3RhbmNlPWUsaS5pdGVtJiZuLl9pbnN0YW5jZS5zZXRQcm9wZXJ0aWVzKGkpfX0pKX19X3NldEJvZHlUZW1wbGF0ZU9yUmVuZGVyZXIodCxlLG4peyh0fHxlKSYmbiYmdGhpcy5fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil9X3NldEhlYWRlclRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7KHR8fGUpJiZuJiZ0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHQsZSxbbl0pfV9zZXRGb290ZXJUZW1wbGF0ZU9yUmVuZGVyZXIodCxlLG4peyh0fHxlKSYmbiYmKHRoaXMuX19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIodCxlLFtuXSksdGhpcy5fZ3JpZC5fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkobi5wYXJlbnRFbGVtZW50KSl9X3NlbGVjdEZpcnN0VGVtcGxhdGUodD0hMSxlPSExKXtyZXR1cm4gR2kuZ2V0RmxhdHRlbmVkTm9kZXModGhpcykuZmlsdGVyKChuPT4idGVtcGxhdGUiPT09bi5sb2NhbE5hbWUmJm4uY2xhc3NMaXN0LmNvbnRhaW5zKCJoZWFkZXIiKT09PXQmJm4uY2xhc3NMaXN0LmNvbnRhaW5zKCJmb290ZXIiKT09PWUpKVswXX1fZmluZFRlbXBsYXRlKHQsZSl7Y29uc3Qgbj10aGlzLl9zZWxlY3RGaXJzdFRlbXBsYXRlKHQsZSk7cmV0dXJuIG4mJnRoaXMuZGF0YUhvc3QmJihuLl9yb290RGF0YUhvc3Q9dGhpcy5kYXRhSG9zdC5fcm9vdERhdGFIb3N0fHx0aGlzLmRhdGFIb3N0KSxufV9mbGV4R3Jvd0NoYW5nZWQodCl7dGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkJiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkKCJmbGV4R3JvdyIpLHRoaXMuX2FsbENlbGxzLmZvckVhY2goKGU9PmUuc3R5bGUuZmxleEdyb3c9dCkpfV9vcmRlckNoYW5nZWQodCl7dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zdHlsZS5vcmRlcj10KSl9X3dpZHRoQ2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoIndpZHRoIiksdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zdHlsZS53aWR0aD10KSksdGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5fX2ZvcmNlUmVmbG93JiZ0aGlzLl9ncmlkLl9fZm9yY2VSZWZsb3coKX1fZnJvemVuQ2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImZyb3plbiIsdCksdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJmcm96ZW4iLHQsZSkpKSx0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkLl9mcm96ZW5DZWxsc0NoYW5nZWQmJnRoaXMuX2dyaWQuX2Zyb3plbkNlbGxzQ2hhbmdlZCgpfV9sYXN0RnJvemVuQ2hhbmdlZCh0KXt0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT50aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxhc3QtZnJvemVuIix0LGUpKSksdGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkJiYodGhpcy5wYXJlbnRFbGVtZW50Ll9sYXN0RnJvemVuPXQpfV9wYXRoT3JIZWFkZXJDaGFuZ2VkKHQsZSxuLGkscixvLGEscyxsKXtjb25zdCBjPXZvaWQgMCE9PWU7aWYoIWEmJiFsJiZjJiZuJiZ0aGlzLl9fc2V0VGV4dENvbnRlbnQobi5fY29udGVudCxlKSx0JiZyLnZhbHVlKXtpZighbyYmIXMpe3RoaXMuX19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIodm9pZCAwLCgoZSxuLHtpdGVtOml9KT0+dGhpcy5fX3NldFRleHRDb250ZW50KGUsdGhpcy5nZXQodCxpKSkpLHIudmFsdWUpfWF8fGx8fGN8fCFufHxudWxsPT09ZXx8dGhpcy5fX3NldFRleHRDb250ZW50KG4uX2NvbnRlbnQsdGhpcy5fZ2VuZXJhdGVIZWFkZXIodCkpfW4mJnRoaXMuX2dyaWQuX191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KG4ucGFyZW50RWxlbWVudCl9X19zZXRUZXh0Q29udGVudCh0LGUpe3QudGV4dENvbnRlbnQhPT1lJiYodC50ZXh0Q29udGVudD1lKX1fZ2VuZXJhdGVIZWFkZXIodCl7cmV0dXJuIHQuc3Vic3RyKHQubGFzdEluZGV4T2YoIi4iKSsxKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLS9nLCIgIikucmVwbGFjZSgvXi4vLCh0PT50LnRvVXBwZXJDYXNlKCkpKX1fdG9nZ2xlQXR0cmlidXRlKHQsZSxuKXtuLmhhc0F0dHJpYnV0ZSh0KT09PSFlJiYoZT9uLnNldEF0dHJpYnV0ZSh0LCIiKTpuLnJlbW92ZUF0dHJpYnV0ZSh0KSl9X3Jlb3JkZXJTdGF0dXNDaGFuZ2VkKHQpe3RoaXMuX2FsbENlbGxzLmZvckVhY2goKGU9PmUuc2V0QXR0cmlidXRlKCJyZW9yZGVyLXN0YXR1cyIsdCkpKX1fcmVzaXphYmxlQ2hhbmdlZCh0LGUpe3ZvaWQgMCE9PXQmJnZvaWQgMCE9PWUmJmUmJltlXS5jb25jYXQodGhpcy5fZW1wdHlDZWxscykuZm9yRWFjaCgoZT0+e2lmKGUpe2NvbnN0IG49ZS5xdWVyeVNlbGVjdG9yKCdbcGFydH49InJlc2l6ZS1oYW5kbGUiXScpO2lmKG4mJmUucmVtb3ZlQ2hpbGQobiksdCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LnNldEF0dHJpYnV0ZSgicGFydCIsInJlc2l6ZS1oYW5kbGUiKSxlLmFwcGVuZENoaWxkKHQpfX19KSl9X3RleHRBbGlnbkNoYW5nZWQodCl7aWYodm9pZCAwPT09dClyZXR1cm47aWYoLTE9PT1bInN0YXJ0IiwiZW5kIiwiY2VudGVyIl0uaW5kZXhPZih0KSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oJ3RleHRBbGlnbiBjYW4gb25seSBiZSBzZXQgYXMgInN0YXJ0IiwgImVuZCIgb3IgImNlbnRlciInKTtsZXQgZTsibHRyIj09PWdldENvbXB1dGVkU3R5bGUodGhpcy5fZ3JpZCkuZGlyZWN0aW9uPyJzdGFydCI9PT10P2U9ImxlZnQiOiJlbmQiPT09dCYmKGU9InJpZ2h0Iik6InN0YXJ0Ij09PXQ/ZT0icmlnaHQiOiJlbmQiPT09dCYmKGU9ImxlZnQiKSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChuPT57bi5fY29udGVudC5zdHlsZS50ZXh0QWxpZ249dCxnZXRDb21wdXRlZFN0eWxlKG4uX2NvbnRlbnQpLnRleHRBbGlnbiE9PXQmJihuLl9jb250ZW50LnN0eWxlLnRleHRBbGlnbj1lKX0pKX1faGlkZGVuQ2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImhpZGRlbiIsdCksISF0IT0hIXRoaXMuX3ByZXZpb3VzSGlkZGVuJiZ0aGlzLl9ncmlkJiYoITA9PT10JiZ0aGlzLl9hbGxDZWxscy5mb3JFYWNoKCh0PT57dC5fY29udGVudC5wYXJlbnROb2RlJiZ0Ll9jb250ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5fY29udGVudCl9KSksdGhpcy5fZ3JpZC5fZGVib3VuY2VySGlkZGVuQ2hhbmdlZD1Jbi5kZWJvdW5jZSh0aGlzLl9ncmlkLl9kZWJvdW5jZXJIaWRkZW5DaGFuZ2VkLF90LCgoKT0+e3RoaXMuX2dyaWQmJnRoaXMuX2dyaWQuX3JlbmRlckNvbHVtblRyZWUmJnRoaXMuX2dyaWQuX3JlbmRlckNvbHVtblRyZWUodGhpcy5fZ3JpZC5fY29sdW1uVHJlZSl9KSksdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbiYmdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbigpLHRoaXMuX2dyaWQubm90aWZ5UmVzaXplJiZ0aGlzLl9ncmlkLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX2dyaWQuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uJiZ0aGlzLl9ncmlkLl9yZXNldEtleWJvYXJkTmF2aWdhdGlvbigpKSx0aGlzLl9wcmV2aW91c0hpZGRlbj10fX07Y2xhc3MgZDB0IGV4dGVuZHMoaDB0KEExdCh3ZSkpKXtzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuInZhYWRpbi1ncmlkLWNvbHVtbiJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3dpZHRoOnt0eXBlOlN0cmluZyx2YWx1ZToiMTAwcHgifSxmbGV4R3Jvdzp7dHlwZTpOdW1iZXIsdmFsdWU6MX0scmVuZGVyZXI6RnVuY3Rpb24scGF0aDp7dHlwZTpTdHJpbmd9LGF1dG9XaWR0aDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYm9keVRlbXBsYXRlOnt0eXBlOk9iamVjdH0sX2NlbGxzOkFycmF5fX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKGQwdC5pcyxkMHQpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwp0MXQoInZhYWRpbi1ncmlkIiwkUXRgCiAgICBAa2V5ZnJhbWVzIHZhYWRpbi1ncmlkLWFwcGVhciB7CiAgICAgIHRvIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CiAgICB9CgogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgYW5pbWF0aW9uOiAxbXMgdmFhZGluLWdyaWQtYXBwZWFyOwogICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQoKICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2Nyb2xsZXIgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICB3aWR0aDogYXV0bzsKICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgIH0KCiAgICA6aG9zdChbaGVpZ2h0LWJ5LXJvd3NdKSB7CiAgICAgIGhlaWdodDogYXV0bzsKICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgZmxleC1ncm93OiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KCiAgICA6aG9zdChbaGVpZ2h0LWJ5LXJvd3NdKSAjc2Nyb2xsZXIgewogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgI3RhYmxlIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgLyogV29ya2Fyb3VuZCBmb3IgYSBEZXNrdG9wIFNhZmFyaSBidWc6IG5ldyBzdGFja2luZyBjb250ZXh0IGhlcmUgcHJldmVudHMgdGhlIHNjcm9sbGJhciBmcm9tIGdldHRpbmcgaGlkZGVuICovCiAgICAgIHotaW5kZXg6IDA7CiAgICB9CgogICAgI2hlYWRlciwKICAgICNmb290ZXIgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwogICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICBsZWZ0OiAwOwogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgI2hlYWRlciB7CiAgICAgIHRvcDogMDsKICAgIH0KCiAgICB0aCB7CiAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgICB9CgogICAgLyogU2FmYXJpIGRvZXNuJ3Qgd29yayB3aXRoICJpbmhlcml0IiAqLwogICAgW3NhZmFyaV0gdGggewogICAgICB0ZXh0LWFsaWduOiBpbml0aWFsOwogICAgfQoKICAgICNmb290ZXIgewogICAgICBib3R0b206IDA7CiAgICB9CgogICAgI2l0ZW1zIHsKICAgICAgZmxleC1ncm93OiAxOwogICAgICBmbGV4LXNocmluazogMDsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsKICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGxlZnQ6IDA7CiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J10gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgbWFyZ2luOiAwOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bbG9hZGluZ10gW3BhcnR+PSdib2R5LWNlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICB9CgogICAgI2l0ZW1zIFtwYXJ0fj0ncm93J10gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB9CgogICAgI2l0ZW1zIFtwYXJ0fj0ncm93J106ZW1wdHkgewogICAgICBoZWlnaHQ6IDFlbTsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBmbGV4LXNocmluazogMDsKICAgICAgZmxleC1ncm93OiAxOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBwYWRkaW5nOiAwOwogICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgfQoKICAgIFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHBhZGRpbmc6IDA7CiAgICB9CgogICAgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgfQoKICAgIFtoaWRkZW5dIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIFtmcm96ZW5dIHsKICAgICAgei1pbmRleDogMjsKICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgIH0KCiAgICBbbm8tc2Nyb2xsYmFyc11bc2FmYXJpXSAjdGFibGUsCiAgICBbbm8tc2Nyb2xsYmFyc11bZmlyZWZveF0gI3RhYmxlIHsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAvKiBSZW9yZGVyaW5nIHN0eWxlcyAqLwogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSwKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ10sCiAgICAjc2Nyb2xsZXJbbm8tY29udGVudC1wb2ludGVyLWV2ZW50c10gW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KCiAgICBbcGFydH49J3Jlb3JkZXItZ2hvc3QnXSB7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgb3BhY2l0eTogMC41OwoKICAgICAgLyogUHJldmVudCBvdmVyZmxvd2luZyB0aGUgZ3JpZCBpbiBGaXJlZm94ICovCiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgIH0KCiAgICA6aG9zdChbcmVvcmRlcmluZ10pIHsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogUmVzaXppbmcgc3R5bGVzICovCiAgICBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBjdXJzb3I6IGNvbC1yZXNpemU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29udGVudDogJyc7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgd2lkdGg6IDM1cHg7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIH0KCiAgICBbbGFzdC1jb2x1bW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUsCiAgICBbbGFzdC1mcm96ZW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUgewogICAgICB3aWR0aDogMThweDsKICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICByaWdodDogMDsKICAgIH0KCiAgICAjc2Nyb2xsZXJbY29sdW1uLXJlc2l6aW5nXSB7CiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogU2l6ZXIgc3R5bGVzICovCiAgICAjc2l6ZXIgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ11baGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ10gewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBtYXgtaGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0nY2VsbCddOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnLSc7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIFJUTCBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2l0ZW1zLAogICAgOmhvc3QoW2Rpcj0ncnRsJ10pICNoZWFkZXIsCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2Zvb3RlciB7CiAgICAgIGxlZnQ6IGF1dG87CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgbGVmdDogYXV0bzsKICAgICAgcmlnaHQ6IDA7CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddIHsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IGF1dG87CiAgICB9CgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUgewogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAlKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtY29sdW1uXSBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXTo6YmVmb3JlLAogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtsYXN0LWZyb3plbl0gW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQogIGAse21vZHVsZUlkOiJ2YWFkaW4tZ3JpZC1zdHlsZXMifSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNvbnN0IHAwdD0oKCk9Pnt0cnl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJUb3VjaEV2ZW50IiksITB9Y2F0Y2godCl7cmV0dXJuITF9fSkoKTtjbGFzcyBmMHQgZXh0ZW5kcyhMMXQoZjF0KGoxdChGMXQoRzF0KEIxdChaMXQoSjF0KFExdChYMXQoYzB0KEQxdChxMXQodTB0KFYxdChXMXQobDB0KHQwdCh6MXQpKSkpKSkpKSkpKSkpKSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4geGVgCiAgICAgIDxkaXYKICAgICAgICBpZD0ic2Nyb2xsZXIiCiAgICAgICAgc2FmYXJpJD0iW1tfc2FmYXJpXV0iCiAgICAgICAgaW9zJD0iW1tfaW9zXV0iCiAgICAgICAgbG9hZGluZyQ9IltbbG9hZGluZ11dIgogICAgICAgIGNvbHVtbi1yZW9yZGVyaW5nLWFsbG93ZWQkPSJbW2NvbHVtblJlb3JkZXJpbmdBbGxvd2VkXV0iCiAgICAgID4KICAgICAgICA8dGFibGUgaWQ9InRhYmxlIiByb2xlPSJncmlkIiBhcmlhLW11bHRpc2VsZWN0YWJsZT0idHJ1ZSIgdGFiaW5kZXg9IjAiPgogICAgICAgICAgPGNhcHRpb24gaWQ9InNpemVyIiBwYXJ0PSJyb3ciPjwvY2FwdGlvbj4KICAgICAgICAgIDx0aGVhZCBpZD0iaGVhZGVyIiByb2xlPSJyb3dncm91cCI+PC90aGVhZD4KICAgICAgICAgIDx0Ym9keSBpZD0iaXRlbXMiIHJvbGU9InJvd2dyb3VwIj48L3Rib2R5PgogICAgICAgICAgPHRmb290IGlkPSJmb290ZXIiIHJvbGU9InJvd2dyb3VwIj48L3Rmb290PgogICAgICAgIDwvdGFibGU+CgogICAgICAgIDxkaXYgcGFydD0icmVvcmRlci1naG9zdCI+PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBpZD0iZm9jdXNleGl0IiB0YWJpbmRleD0iMCI+PC9kaXY+CiAgICBgfXN0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQifXN0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyMC4wLjIifXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfY29sdW1uVHJlZUNoYW5nZWQoX2NvbHVtblRyZWUsIF9jb2x1bW5UcmVlLiopIl19c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19zYWZhcmk6e3R5cGU6Qm9vbGVhbix2YWx1ZTovXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfSxfaW9zOnt0eXBlOkJvb2xlYW4sdmFsdWU6L2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF3aW5kb3cuTVNTdHJlYW18fCJNYWNJbnRlbCI9PT1uYXZpZ2F0b3IucGxhdGZvcm0mJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4xfSxfZmlyZWZveDp7dHlwZTpCb29sZWFuLHZhbHVlOm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJmaXJlZm94Iik+LTF9LF9hbmRyb2lkOnt0eXBlOkJvb2xlYW4sdmFsdWU6L2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfSxfdG91Y2hEZXZpY2U6e3R5cGU6Qm9vbGVhbix2YWx1ZTpwMHR9LGhlaWdodEJ5Um93czp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2hlaWdodEJ5Um93c0NoYW5nZWQifSxfcmVjYWxjdWxhdGVDb2x1bW5XaWR0aE9uY2VMb2FkaW5nRmluaXNoZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH19fWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsdGhpcy5fb25BbmltYXRpb25FbmQpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJkaXIiPT09dCYmKHRoaXMuX19pc1JUTD0icnRsIj09PW4sdGhpcy5fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKSl9X19oYXNSb3dzV2l0aENsaWVudEhlaWdodCgpe3JldHVybiEhQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5jbGllbnRIZWlnaHQpKS5sZW5ndGh9X19pdGVtc1JlY2VpdmVkKCl7dGhpcy5fcmVjYWxjdWxhdGVDb2x1bW5XaWR0aE9uY2VMb2FkaW5nRmluaXNoZWQmJiF0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSYmdGhpcy5fX2hhc1Jvd3NXaXRoQ2xpZW50SGVpZ2h0KCkmJih0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZD0hMSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCkpfV9yZWNhbGN1bGF0ZUNvbHVtbldpZHRocyh0KXt0LmZvckVhY2goKHQ9Pnt0LndpZHRoPSJhdXRvIix0Ll9vcmlnRmxleEdyb3c9dC5mbGV4R3Jvdyx0LmZsZXhHcm93PTB9KSksdC5mb3JFYWNoKCh0PT57dC5fY3VycmVudFdpZHRoPTAsdC5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+e3QuX2N1cnJlbnRXaWR0aD1NYXRoLm1heCh0Ll9jdXJyZW50V2lkdGgsZS5vZmZzZXRXaWR0aCsxKX0pKX0pKSx0LmZvckVhY2goKHQ9Pnt0LndpZHRoPWAke3QuX2N1cnJlbnRXaWR0aH1weGAsdC5mbGV4R3Jvdz10Ll9vcmlnRmxleEdyb3csdC5fY3VycmVudFdpZHRoPXZvaWQgMCx0Ll9vcmlnRmxleEdyb3c9dm9pZCAwfSkpfXJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl7aWYodGhpcy5fY29sdW1uVHJlZSlpZih0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSl0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZD0hMDtlbHNle2NvbnN0IHQ9dGhpcy5fZ2V0Q29sdW1ucygpLmZpbHRlcigodD0+IXQuaGlkZGVuJiZ0LmF1dG9XaWR0aCkpO3RoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHQpfX1fY3JlYXRlU2Nyb2xsZXJSb3dzKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0O24rKyl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO3Quc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksdC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl91cGRhdGVSb3codCx0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLCJib2R5IiwhMSwhMCksZS5wdXNoKHQpfXJldHVybiB0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLmZvckVhY2goKHQ9PnQuaXNDb25uZWN0ZWQmJnQubm90aWZ5UGF0aCYmdC5ub3RpZnlQYXRoKCJfY2VsbHMuKiIsdC5fY2VsbHMpKSksKGZ1bmN0aW9uIG4odCxlLGkpe0lpfHxPaSgpLE5pLnB1c2goW3QsZSxpXSl9KSh0aGlzLCgoKT0+e3RoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpLHRoaXMuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uKCl9KSksZX1fZ2V0Um93VGFyZ2V0KCl7cmV0dXJuIHRoaXMuJC5pdGVtc31fY3JlYXRlQ2VsbCh0KXtjb25zdCBlPSJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQtIisodGhpcy5fY29udGVudEluZGV4PXRoaXMuX2NvbnRlbnRJbmRleCsxfHwwKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIpO24uc2V0QXR0cmlidXRlKCJzbG90IixlKTtjb25zdCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7aS5pZD1lLnJlcGxhY2UoIi1jb250ZW50LSIsIi0iKSxpLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGkuc2V0QXR0cmlidXRlKCJyb2xlIiwidGQiPT09dD8iZ3JpZGNlbGwiOiJjb2x1bW5oZWFkZXIiKTtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNsb3QiKTtyZXR1cm4gci5zZXRBdHRyaWJ1dGUoIm5hbWUiLGUpLGkuYXBwZW5kQ2hpbGQociksaS5fY29udGVudD1uLG4uYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PntpZih3aW5kb3cuY2hyb21lKXtjb25zdCB0PSgpPT57bi5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCl8fGkuZm9jdXMoKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LCEwKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdCwhMCl9ZWxzZSBzZXRUaW1lb3V0KCgoKT0+e24uY29udGFpbnModGhpcy5nZXRSb290Tm9kZSgpLmFjdGl2ZUVsZW1lbnQpfHxpLmZvY3VzKCl9KSl9KSksaX1fdXBkYXRlUm93KHQsZSxuLGkscil7bj1ufHwiYm9keSI7Y29uc3Qgbz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT50Ll92YWNhbnQ9ITApKSx0LmlubmVySFRNTD0iIiwic2l6ZXIiIT09dC5pZCYmKHQuaGlkZGVuPSEwKSxlLmZpbHRlcigodD0+IXQuaGlkZGVuKSkuZm9yRWFjaCgoKGUsYSxzKT0+e2xldCBsO2lmKCJib2R5Ij09PW4pe2lmKGUuX2NlbGxzPWUuX2NlbGxzfHxbXSxsPWUuX2NlbGxzLmZpbHRlcigodD0+dC5fdmFjYW50KSlbMF0sbHx8KGw9dGhpcy5fY3JlYXRlQ2VsbCgidGQiKSxlLl9jZWxscy5wdXNoKGwpKSxsLnNldEF0dHJpYnV0ZSgicGFydCIsImNlbGwgYm9keS1jZWxsIiksdC5hcHBlbmRDaGlsZChsKSxhPT09cy5sZW5ndGgtMSYmKHRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZXx8dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIpKXt0aGlzLl9kZXRhaWxzQ2VsbHM9dGhpcy5fZGV0YWlsc0NlbGxzfHxbXTtjb25zdCBlPXRoaXMuX2RldGFpbHNDZWxscy5maWx0ZXIoKHQ9PnQuX3ZhY2FudCkpWzBdfHx0aGlzLl9jcmVhdGVDZWxsKCJ0ZCIpOy0xPT09dGhpcy5fZGV0YWlsc0NlbGxzLmluZGV4T2YoZSkmJnRoaXMuX2RldGFpbHNDZWxscy5wdXNoKGUpLGUuX2NvbnRlbnQucGFyZW50RWxlbWVudHx8by5hcHBlbmRDaGlsZChlLl9jb250ZW50KSx0aGlzLl9jb25maWd1cmVEZXRhaWxzQ2VsbChlKSx0LmFwcGVuZENoaWxkKGUpLHRoaXMuX2ExMXlTZXRSb3dEZXRhaWxzQ2VsbCh0LGUpLGUuX3ZhY2FudD0hMX1lLm5vdGlmeVBhdGgmJiFyJiZlLm5vdGlmeVBhdGgoIl9jZWxscy4qIixlLl9jZWxscyl9ZWxzZXtjb25zdCByPSJoZWFkZXIiPT09bj8idGgiOiJ0ZCI7aXx8InZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT1lLmxvY2FsTmFtZT8obD1lW2BfJHtufUNlbGxgXXx8dGhpcy5fY3JlYXRlQ2VsbChyKSxsLl9jb2x1bW49ZSx0LmFwcGVuZENoaWxkKGwpLGVbYF8ke259Q2VsbGBdPWwpOihlLl9lbXB0eUNlbGxzPWUuX2VtcHR5Q2VsbHN8fFtdLGw9ZS5fZW1wdHlDZWxscy5maWx0ZXIoKHQ9PnQuX3ZhY2FudCkpWzBdfHx0aGlzLl9jcmVhdGVDZWxsKHIpLGwuX2NvbHVtbj1lLHQuYXBwZW5kQ2hpbGQobCksLTE9PT1lLl9lbXB0eUNlbGxzLmluZGV4T2YobCkmJmUuX2VtcHR5Q2VsbHMucHVzaChsKSksbC5zZXRBdHRyaWJ1dGUoInBhcnQiLGBjZWxsICR7bn0tY2VsbGApLHRoaXMuX191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KHQpfWwuX2NvbnRlbnQucGFyZW50RWxlbWVudHx8by5hcHBlbmRDaGlsZChsLl9jb250ZW50KSxsLl92YWNhbnQ9ITEsbC5fY29sdW1uPWV9KSksdGhpcy5hcHBlbmRDaGlsZChvKSx0aGlzLl9mcm96ZW5DZWxsc0NoYW5nZWQoKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl9X191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KHQpe2lmKCF0KXJldHVybjtjb25zdCBlPUFycmF5LmZyb20odC5jaGlsZHJlbikuZmlsdGVyKChlPT57Y29uc3Qgbj1lLl9jb2x1bW47aWYobi5fZW1wdHlDZWxscyYmbi5fZW1wdHlDZWxscy5pbmRleE9mKGUpPi0xKXJldHVybiExO2lmKHQucGFyZW50RWxlbWVudD09PXRoaXMuJC5oZWFkZXIpe2lmKG4uaGVhZGVyUmVuZGVyZXJ8fG4uX2hlYWRlclRlbXBsYXRlKXJldHVybiEwO2lmKG51bGw9PT1uLmhlYWRlcilyZXR1cm4hMTtpZihuLnBhdGh8fHZvaWQgMCE9PW4uaGVhZGVyKXJldHVybiEwfWVsc2UgaWYobi5mb290ZXJSZW5kZXJlcnx8bi5fZm9vdGVyVGVtcGxhdGUpcmV0dXJuITB9KSk7dC5oaWRkZW4hPT0hZS5sZW5ndGgmJih0LmhpZGRlbj0hZS5sZW5ndGgsdGhpcy5ub3RpZnlSZXNpemUoKSl9X3VwZGF0ZVNjcm9sbGVySXRlbSh0LGUpe3RoaXMuX3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsZSksdGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QiLDA9PT1lLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgib2RkIixlJTIsdCksdGhpcy5fYTExeVVwZGF0ZVJvd1Jvd2luZGV4KHQsZSksdGhpcy5fZ2V0SXRlbShlLHQpKX1fY29sdW1uVHJlZUNoYW5nZWQodCl7dGhpcy5fcmVuZGVyQ29sdW1uVHJlZSh0KSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl9X3JlbmRlckNvbHVtblRyZWUodCl7Zm9yKEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKChlPT50aGlzLl91cGRhdGVSb3coZSx0W3QubGVuZ3RoLTFdLG51bGwsITEsITApKSk7dGhpcy4kLmhlYWRlci5jaGlsZHJlbi5sZW5ndGg8dC5sZW5ndGg7KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7dC5zZXRBdHRyaWJ1dGUoInBhcnQiLCJyb3ciKSx0LnNldEF0dHJpYnV0ZSgicm9sZSIsInJvdyIpLHRoaXMuJC5oZWFkZXIuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO2Uuc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksZS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLiQuZm9vdGVyLmFwcGVuZENoaWxkKGUpfWZvcig7dGhpcy4kLmhlYWRlci5jaGlsZHJlbi5sZW5ndGg+dC5sZW5ndGg7KXRoaXMuJC5oZWFkZXIucmVtb3ZlQ2hpbGQodGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZCksdGhpcy4kLmZvb3Rlci5yZW1vdmVDaGlsZCh0aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkKTtBcnJheS5mcm9tKHRoaXMuJC5oZWFkZXIuY2hpbGRyZW4pLmZvckVhY2goKChlLG4pPT50aGlzLl91cGRhdGVSb3coZSx0W25dLCJoZWFkZXIiLG49PT10Lmxlbmd0aC0xKSkpLEFycmF5LmZyb20odGhpcy4kLmZvb3Rlci5jaGlsZHJlbikuZm9yRWFjaCgoKGUsbik9PnRoaXMuX3VwZGF0ZVJvdyhlLHRbdC5sZW5ndGgtMS1uXSwiZm9vdGVyIiwwPT09bikpKSx0aGlzLl91cGRhdGVSb3codGhpcy4kLnNpemVyLHRbdC5sZW5ndGgtMV0pLHRoaXMuX3Jlc2l6ZUhhbmRsZXIoKSx0aGlzLl9mcm96ZW5DZWxsc0NoYW5nZWQoKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW4oKSx0aGlzLl9yZXNldEtleWJvYXJkTmF2aWdhdGlvbigpLHRoaXMuX2ExMXlVcGRhdGVIZWFkZXJSb3dzKCksdGhpcy5fYTExeVVwZGF0ZUZvb3RlclJvd3MoKSx0aGlzLl9fdXBkYXRlRm9vdGVyUG9zaXRpb25pbmcoKX1fX3VwZGF0ZUZvb3RlclBvc2l0aW9uaW5nKCl7aWYodGhpcy5fZmlyZWZveCYmKHRoaXMuJC5pdGVtcy5zdHlsZS5wYWRkaW5nQm90dG9tPTAsdGhpcy5oZWlnaHRCeVJvd3N8fCh0aGlzLiQuaXRlbXMuc3R5bGUucGFkZGluZ0JvdHRvbT1gJHt0aGlzLiQuZm9vdGVyLm9mZnNldEhlaWdodH1weGApKSx0aGlzLl9pb3MpeyF3aW5kb3cuQ1NTLnN1cHBvcnRzKCJwb3NpdGlvbiIsInN0aWNreSIpJiYodGhpcy4kLnRhYmxlLnN0eWxlLmhlaWdodD0iIix0aGlzLiQudGFibGUuc3R5bGUubWluSGVpZ2h0PSIxMDAlIix0aGlzLiQudGFibGUuc3R5bGUubWF4SGVpZ2h0PSIxMDAlIixzZXRUaW1lb3V0KCgoKT0+dGhpcy4kLnRhYmxlLnN0eWxlLmhlaWdodD1gJHt0aGlzLiQuc2Nyb2xsZXIub2Zmc2V0SGVpZ2h0fXB4YCkpKX19X3VwZGF0ZUl0ZW0odCxlKXt0Ll9pdGVtPWU7Y29uc3Qgbj10aGlzLl9fZ2V0Um93TW9kZWwodCk7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzZWxlY3RlZCIsbi5zZWxlY3RlZCx0KSx0aGlzLl9hMTF5VXBkYXRlUm93U2VsZWN0ZWQodCxuLnNlbGVjdGVkKSx0aGlzLl9hMTF5VXBkYXRlUm93TGV2ZWwodCxuLmxldmVsKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImV4cGFuZGVkIixuLmV4cGFuZGVkLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZGV0YWlscy1vcGVuZWQiLHRoaXMuX2lzRGV0YWlsc09wZW5lZChlKSx0KSwodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlfHx0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX3RvZ2dsZURldGFpbHNDZWxsKHQsZSksdGhpcy5fZ2VuZXJhdGVDZWxsQ2xhc3NOYW1lcyh0LG4pLHRoaXMuX2ZpbHRlckRyYWdBbmREcm9wKHQsbiksQXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57aWYodC5fcmVuZGVyZXIpe2NvbnN0IGU9dC5fY29sdW1ufHx0aGlzO3QuX3JlbmRlcmVyLmNhbGwoZSx0Ll9jb250ZW50LGUsbil9ZWxzZSB0Ll9pbnN0YW5jZSYmKHQuX2luc3RhbmNlLl9fZGV0YWlsc09wZW5lZF9fPW4uZGV0YWlsc09wZW5lZCx0Ll9pbnN0YW5jZS5fX3NlbGVjdGVkX189bi5zZWxlY3RlZCx0Ll9pbnN0YW5jZS5fX2xldmVsX189bi5sZXZlbCx0Ll9pbnN0YW5jZS5fX2V4cGFuZGVkX189bi5leHBhbmRlZCx0Ll9pbnN0YW5jZS5zZXRQcm9wZXJ0aWVzKG4pKX0pKSx0aGlzLl9kZWJvdW5jZXJVcGRhdGVIZWlnaHRzPUluLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlclVwZGF0ZUhlaWdodHMsZ3QuYWZ0ZXIoMSksKCgpPT57dGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX0pKX1fcmVzaXplSGFuZGxlcigpe3RoaXMuX3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZXNpemVIYW5kbGVyLCEwKSx0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9vbkFuaW1hdGlvbkVuZCh0KXswPT09dC5hbmltYXRpb25OYW1lLmluZGV4T2YoInZhYWRpbi1ncmlkLWFwcGVhciIpJiYodGhpcy5fcmVuZGVyKCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pdGVtc1JlY2VpdmVkKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX19zY3JvbGxUb1BlbmRpbmdJbmRleCgpLHRoaXMuJC50YWJsZS5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZz0idG91Y2gifSkpKX1fdG9nZ2xlQXR0cmlidXRlKHQsZSxuKXtuLmhhc0F0dHJpYnV0ZSh0KT09PSFlJiYoZT9uLnNldEF0dHJpYnV0ZSh0LCIiKTpuLnJlbW92ZUF0dHJpYnV0ZSh0KSl9X19nZXRSb3dNb2RlbCh0KXtyZXR1cm57aW5kZXg6dC5pbmRleCxpdGVtOnQuX2l0ZW0sbGV2ZWw6dGhpcy5fZ2V0SW5kZXhMZXZlbCh0LmluZGV4KSxleHBhbmRlZDp0aGlzLl9pc0V4cGFuZGVkKHQuX2l0ZW0pLHNlbGVjdGVkOnRoaXMuX2lzU2VsZWN0ZWQodC5faXRlbSksZGV0YWlsc09wZW5lZDohKCF0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUmJiF0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX2lzRGV0YWlsc09wZW5lZCh0Ll9pdGVtKX19cmVuZGVyKCl7dGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX2NvbHVtblRyZWUuZm9yRWFjaCgodD0+e3QuZm9yRWFjaCgodD0+dC5fcmVuZGVySGVhZGVyQW5kRm9vdGVyKCkpKX0pKSx0aGlzLl91cGRhdGUoKSl9bm90aWZ5UmVzaXplKCl7c3VwZXIubm90aWZ5UmVzaXplKCl9X2hlaWdodEJ5Um93c0NoYW5nZWQodCxlKXsodHx8ZSkmJnRoaXMubm90aWZ5UmVzaXplKCl9X19mb3JjZVJlZmxvdygpe3RoaXMuX2RlYm91bmNlckZvcmNlUmVmbG93PUluLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckZvcmNlUmVmbG93LF90LCgoKT0+e3RoaXMuJC5zY3JvbGxlci5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixzZXRUaW1lb3V0KCgoKT0+dGhpcy4kLnNjcm9sbGVyLnN0eWxlLm92ZXJmbG93PSIiKSl9KSl9fWZ1bmN0aW9uIG0wdCh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIFZyKHt9LGNyKGUpLHQpfSkodCxlKX1jdXN0b21FbGVtZW50cy5kZWZpbmUoZjB0LmlzLGYwdCk7bGV0IGcwdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ydW49IiJ9X2NzdlVybCh0LGUsbil7cmV0dXJuIGU/TE8obih0LGUpLHtmb3JtYXQ6ImNzdiJ9KToiIn1fanNvblVybCh0LGUsbil7cmV0dXJuIGU/bih0LGUpOiIifV9jc3ZOYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9LmNzdmA6IiJ9X2pzb25OYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9Lmpzb25gOiIifX07ZzB0LnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgIGxhYmVsPSJydW4gdG8gZG93bmxvYWQiCiAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3J1bn19IgogICAgPgogICAgICA8cGFwZXItbGlzdGJveCBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW3J1bnNdXSI+CiAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+W1tpdGVtXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ydW5dXSI+CiAgICAgIDxhIGRvd25sb2FkPSJbW19jc3ZOYW1lKHRhZywgX3J1bildXSIgaHJlZj0iW1tfY3N2VXJsKHRhZywgX3J1biwgdXJsRm4pXV0iCiAgICAgICAgPkNTVjwvYQogICAgICA+PCEtLQogICAgICAtLT48YQogICAgICAgIGRvd25sb2FkPSJbW19qc29uTmFtZSh0YWcsIF9ydW4pXV0iCiAgICAgICAgaHJlZj0iW1tfanNvblVybCh0YWcsIF9ydW4sIHVybEZuKV1dIgogICAgICAgID5KU09OPC9hCiAgICAgID4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQogICAgICBhIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAwIDAuMmVtOwogICAgICB9CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxnMHQucHJvdG90eXBlLCJfcnVuIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxnMHQucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGcwdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnMHQucHJvdG90eXBlLCJ1cmxGbiIsdm9pZCAwKSxnMHQ9dChbaSgidGYtZG93bmxvYWRlciIpXSxnMHQpO25ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7bGV0IF8wdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9bnVsbCx0aGlzLl9sb2FkRGF0YUNhbGxiYWNrPSh0LGUsbik9PntpZihudWxsPT1uKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBsb2FkIGRhdGEgZm9yOiIsZSk7Y29uc3QgaT1uLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnRbMF0pLHN0ZXA6dFsxXSxzY2FsYXI6dFsyXX0pKSkscj10aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKGUpO3Quc2V0U2VyaWVzTWV0YWRhdGEocixlKSx0LnNldFNlcmllc0RhdGEocixpKX0sdGhpcy5nZXREYXRhTG9hZFVybD0oe3RhZzp0LHJ1bjplfSk9PkVyKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvc2NhbGFycyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnQscnVuOmV9KSksdGhpcy5fZG93bmxvYWRVcmxGbj0odCxlKT0+dGhpcy5nZXREYXRhTG9hZFVybCh7dGFnOnQscnVuOmV9KSx0aGlzLnJlcXVlc3REYXRhPSh0LGUsbik9PnRoaXMuaW5Db2xhYj90aGlzLl9yZXF1ZXN0RGF0YUdldCh0LGUsbik6dGhpcy5fcmVxdWVzdERhdGFQb3N0KHQsZSxuKSx0aGlzLl9yZXF1ZXN0RGF0YUdldD0odCxlLG4pPT57Y29uc3QgaT1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49TE8oaSx7dGFnOnQudGFnLHJ1bjp0LnJ1bn0pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QobikudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKX0pKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX3JlcXVlc3REYXRhUG9zdD0odCxlLG4pPT57dmFyIGk7Y29uc3Qgcj1FcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnNfbXVsdGlydW4iKSxvPW5ldyBNYXA7Zm9yKGNvbnN0e3RhZzplLHJ1bjpufW9mIHQpe2xldCB0PW8uZ2V0KGUpO251bGw9PXQmJm8uc2V0KGUsdD1bXSksdC5wdXNoKG4pfWNvbnN0IGE9bnVsbCE9PShpPXRoaXMuYmF0Y2hTaXplKSYmdm9pZCAwIT09aT9pOjY0LHM9W107Zm9yKGNvbnN0W3QsZV1vZiBvKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9YSlzLnB1c2goe3RhZzp0LHJ1bnM6ZS5zbGljZShuLG4rYSl9KTtQcm9taXNlLmFsbChzLm1hcCgoKHt0YWc6dCxydW5zOm59KT0+dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHIse3RhZzp0LHJ1bnM6bn0pLnRoZW4oKGk9Pntmb3IoY29uc3QgciBvZiBuKXtjb25zdCBuPXt0YWc6dCxydW46cn07T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscik/ZSh7aXRlbTpuLGRhdGE6aVtyXX0pOmUoe2l0ZW06bixkYXRhOm51bGx9KX19KSkpKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX2dldERhdGFMb2FkTmFtZT10PT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHQpLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9cEF0LnNsaWNlKCksZT10LmZpbmRJbmRleCgodD0+Ik5hbWUiPT10LnRpdGxlKSk7cmV0dXJuIHQuc3BsaWNlKGUsMSx7dGl0bGU6Ik5hbWUiLGV2YWx1YXRlOnQ9Pntjb25zdCBlPXQuZGF0YXNldC5tZXRhZGF0YSgpLm1ldGE7cmV0dXJuIHRoaXMuX2dldFNlcmllc0Rpc3BsYXlOYW1lRnJvbURhdHVtKGUpfX0pLHR9KSgpfV9nZXRDaGFydERhdGFMb2FkZXIoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKX1yZWxvYWQoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7Y29uc3QgdD10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTt0JiZ0LnJlc2V0RG9tYWluKCl9X3VwZGF0ZURvd25sb2FkTGluaygpe2NvbnN0IHQ9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkuZXhwb3J0QXNTdmdTdHJpbmcoKTt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3N2Z0xpbmsiKS5ocmVmPWBkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCR7YnRvYSh0KX1gfV9ydW5zRnJvbURhdGEodCl7cmV0dXJuIHQubWFwKCh0PT50LnJ1bikpfV9nZXREYXRhU2VyaWVzKCl7cmV0dXJuIHRoaXMuZGF0YVRvTG9hZC5tYXAoKHQ9PnRoaXMuX2dldFNlcmllc05hbWVGcm9tRGF0dW0odCkpKX1fZ2V0U2VyaWVzTmFtZUZyb21EYXR1bSh7cnVuOnQsZXhwZXJpbWVudDplPXtuYW1lOiJfZGVmYXVsdCJ9fSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFtlLm5hbWUsdF0pfV9nZXRTZXJpZXNEaXNwbGF5TmFtZUZyb21EYXR1bSh0KXtyZXR1cm4gdC5ydW59X2dldENvbG9yU2NhbGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuY29sb3JTY2FsZT90aGlzLmNvbG9yU2NhbGU6e3NjYWxlOnQ9Pntjb25zdFssZV09SlNPTi5wYXJzZSh0KTtyZXR1cm4gX08oZSl9fX19O18wdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2dldENvbG9yU2NhbGUoY29sb3JTY2FsZSldXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfZ2V0RGF0YVNlcmllcyhkYXRhVG9Mb2FkLiopXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW2RhdGFUb0xvYWRdXSIKICAgICAgICBnZXQtZGF0YS1sb2FkLW5hbWU9IltbX2dldERhdGFMb2FkTmFtZV1dIgogICAgICAgIGdldC1kYXRhLWxvYWQtdXJsPSJbW2dldERhdGFMb2FkVXJsXV0iCiAgICAgICAgcmVxdWVzdC1kYXRhPSJbW3JlcXVlc3REYXRhXV0iCiAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19sb2FkRGF0YUNhbGxiYWNrXV0iCiAgICAgICAgbG9hZC1rZXk9IltbdGFnXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tzbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICB0YWctbWV0YWRhdGE9IltbdGFnTWV0YWRhdGFdXSIKICAgICAgICB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iCiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj0iYXV0byIKICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgID4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgaWNvbj0ibGluZS13ZWlnaHQiCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiCiAgICAgICAgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8cGFwZXItbWVudS1idXR0b24gb24tcGFwZXItZHJvcGRvd24tb3Blbj0iX3VwZGF0ZURvd25sb2FkTGluayI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIGljb249ImZpbGUtZG93bmxvYWQiCiAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgPGEgaWQ9InN2Z0xpbmsiIGRvd25sb2FkPSJbW3RhZ11dLnN2ZyI+CiAgICAgICAgICAgICAgICBEb3dubG9hZCBDdXJyZW50IENoYXJ0IGFzIFNWRwogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9wYXBlci1pdGVtPgogICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgIDwvcGFwZXItbWVudS1idXR0b24+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxzcGFuIHN0eWxlPSJmbGV4LWdyb3c6IDEiPjwvc3Bhbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dEb3dubG9hZExpbmtzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkLWxpbmtzIj4KICAgICAgICAgIDx0Zi1kb3dubG9hZGVyCiAgICAgICAgICAgIHJ1bnM9IltbX3J1bnNGcm9tRGF0YShkYXRhVG9Mb2FkKV1dIgogICAgICAgICAgICB0YWc9IltbdGFnXV0iCiAgICAgICAgICAgIHVybC1mbj0iW1tfZG93bmxvYWRVcmxGbl1dIgogICAgICAgICAgPjwvdGYtZG93bmxvYWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgbWFyZ2luOiA1cHg7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDMzMHB4OwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICB9CgogICAgICAjdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQoKICAgICAgI2J1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgYSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBtYXJnaW46IDJweDsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgcGFwZXItbWVudS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgICAgcGFwZXItaXRlbSBhIHsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLF8wdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sXzB0LnByb3RvdHlwZSwiZGF0YVRvTG9hZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfMHQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLF8wdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sXzB0LnByb3RvdHlwZSwic2hvd0Rvd25MaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsInNtb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sXzB0LnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sXzB0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sXzB0LnByb3RvdHlwZSwiYmF0Y2hTaXplIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxfMHQucHJvdG90eXBlLCJpbkNvbGFiIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF8wdC5wcm90b3R5cGUsIl9sb2FkRGF0YUNhbGxiYWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sXzB0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWRVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sXzB0LnByb3RvdHlwZSwiX2Rvd25sb2FkVXJsRm4iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxfMHQucHJvdG90eXBlLCJyZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfMHQucHJvdG90eXBlLCJfZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF8wdC5wcm90b3R5cGUsIl9sb2dTY2FsZUFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sXzB0LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLF8wdD10KFtpKCJ0Zi1zY2FsYXItY2FyZCIpXSxfMHQpO2xldCB5MHQ9Y2xhc3MgZXh0ZW5kcyhtMHQoW0FvXSx3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlc3Npb25Hcm91cD1udWxsLHRoaXMuX3hUeXBlPXdDdC5TVEVQLHRoaXMuX25vTXVsdGlFeHBlcmltZW50cz0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57UHJvbWlzZS5hbGwodC5tYXAoKHQ9PnRoaXMuYmFja2VuZC5saXN0TWV0cmljRXZhbHMoe2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWUsc2Vzc2lvbk5hbWU6dC5ydW4sbWV0cmljTmFtZTp0LnRhZ30pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSkpKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX2NvbG9yU2NhbGU9e3NjYWxlOnQ9Pntjb25zdCBlPUpTT04ucGFyc2UodClbMV0sbj10aGlzLl9pbmRleE9mU2Vzc2lvbi5nZXQoZSk7cmV0dXJuIGZPWyh0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaCtuKSVmTy5sZW5ndGhdfX19Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMucmVkcmF3LmJpbmQodGhpcykpfXJlZHJhdygpe3RoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2goKHQ9PnQucmVkcmF3KCkpKX1fc2Vzc2lvbkdyb3VwQ2hhbmdlZCgpe3RoaXMuc2Vzc2lvbkdyb3VwJiYwIT1PYmplY3Qua2V5cyh0aGlzLnNlc3Npb25Hcm91cCkubGVuZ3RoPyh0aGlzLl9pbmRleE9mU2Vzc2lvbj1uZXcgTWFwKHRoaXMuc2Vzc2lvbkdyb3VwLnNlc3Npb25zLm1hcCgoKHQsZSk9Plt0Lm5hbWUsZV0pKSksdGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2g9Skp0KHRoaXMuc2Vzc2lvbkdyb3VwLm5hbWUpKToodGhpcy5faW5kZXhPZlNlc3Npb249bmV3IE1hcCx0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaD0wKSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LG49ZS5nZXQoInRhZyIpO2Uuc2V0KCJ0YWciLCIiKSxlLnNldCgidGFnIixuKX0pKX1faGF2ZU1ldHJpY3MoKXtyZXR1cm4gdGhpcy52aXNpYmxlU2NoZW1hJiZBcnJheS5pc0FycmF5KHRoaXMudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcykmJnRoaXMudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcy5sZW5ndGg+MH1faGF2ZU1ldHJpY3NBbmRTZXNzaW9uR3JvdXAoKXtyZXR1cm4gdGhpcy5zZXNzaW9uR3JvdXAmJnRoaXMuX2hhdmVNZXRyaWNzKCl9X2NvbXB1dGVTZXJpZXNGb3JTZXNzaW9uR3JvdXBNZXRyaWModCxlKXtyZXR1cm4gbnVsbD09PXR8fDA9PU9iamVjdC5rZXlzKHQpLmxlbmd0aHx8bnVsbD09PWU/W106dC5zZXNzaW9ucy5maWx0ZXIoKHQ9PnZvaWQgMCE9PU5KdCh0Lm1ldHJpY1ZhbHVlcyxlLm5hbWUpKSkubWFwKCh0PT4oe3RhZzplLm5hbWUscnVuOnQubmFtZX0pKSl9X2NvbXB1dGVUYWdNZXRhZGF0YSh0KXtyZXR1cm57ZGlzcGxheU5hbWU6Q0p0KHQpLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb258fCIifX19O3kwdC50ZW1wbGF0ZT14ZWAKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shc2Vzc2lvbkdyb3VwXV0iPgogICAgICA8ZGl2PgogICAgICAgIDxoMz5ObyBzZXNzaW9uIGdyb3VwIHNlbGVjdGVkPC9oMz4KICAgICAgICA8cD5QbGVhc2Ugc2VsZWN0IGEgc2Vzc2lvbiBncm91cCB0byBzZWUgaXRzIG1ldHJpYy1ncmFwaHMgaGVyZS48L3A+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2hhdmVNZXRyaWNzKHZpc2libGVTY2hlbWEuKildXSI+CiAgICAgIDxkaXY+CiAgICAgICAgPGgzPk5vIG1ldHJpY3MgYXJlIGVuYWJsZWQ8L2gzPgogICAgICAgIDxwPlBsZWFzZSBlbmFibGUgc29tZSBtZXRyaWNzIHRvIHNlZSBjb250ZW50IGhlcmUuPC9wPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJsYXlvdXQgaG9yaXpvbnRhbCB3cmFwIHNlc3Npb24tZ3JvdXAtZGV0YWlscyI+CiAgICAgIDx0ZW1wbGF0ZQogICAgICAgIGlzPSJkb20taWYiCiAgICAgICAgaWY9IltbX2hhdmVNZXRyaWNzQW5kU2Vzc2lvbkdyb3VwKHZpc2libGVTY2hlbWEuKiwgc2Vzc2lvbkdyb3VwKV1dIgogICAgICA+CiAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgIGl0ZW1zPSJbW3Zpc2libGVTY2hlbWEubWV0cmljSW5mb3NdXSIKICAgICAgICAgIGFzPSJtZXRyaWNJbmZvIgogICAgICAgID4KICAgICAgICAgIDwhLS0gTm90ZSB0aGF0IHdlIGRvIG5vdCBwcm92aWRlIGEgcmVxdWVzdC1tYW5hZ2VyIGF0dHJpYnV0ZSBzaW5jZQogICAgICAgICAgICAgICB3ZSBwcm92aWRlIGEgZnVuY3Rpb24gaW4gcmVxdWVzdC1kYXRhIGZvciBjYWxsaW5nIHRoZSBiYWNrZW5kCiAgICAgICAgICAgICAgIHRvIGdldCB0aGUgbWV0cmljcyBkYXRhLgogICAgICAgICAgICAtLT4KICAgICAgICAgIDx0Zi1zY2FsYXItY2FyZAogICAgICAgICAgICBjbGFzcz0ic2NhbGFyLWNhcmQiCiAgICAgICAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlXV0iCiAgICAgICAgICAgIGRhdGEtdG8tbG9hZD0iW1tfY29tcHV0ZVNlcmllc0ZvclNlc3Npb25Hcm91cE1ldHJpYyhzZXNzaW9uR3JvdXAsIG1ldHJpY0luZm8pXV0iCiAgICAgICAgICAgIHRhZz0iW1ttZXRyaWNJbmZvLm5hbWUudGFnXV0iCiAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfY29tcHV0ZVRhZ01ldGFkYXRhKG1ldHJpY0luZm8pXV0iCiAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgbXVsdGktZXhwZXJpbWVudHM9IltbX25vTXVsdGlFeHBlcmltZW50c11dIgogICAgICAgICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgICAgICAgIGFjdGl2ZQogICAgICAgICAgPgogICAgICAgICAgPC90Zi1zY2FsYXItY2FyZD4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8IS0tICJpcm9uLWZsZXgiIGlzIG5lZWRlZCB0byB1c2UgdGhlIGxheW91dCBjbGFzc2VzIGluIHRoZSBkaXYgYWJvdmUgLS0+CiAgICA8c3R5bGUgaW5jbHVkZT0iaXJvbi1mbGV4Ij4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seTB0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5MHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx5MHQucHJvdG90eXBlLCJ2aXNpYmxlU2NoZW1hIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHkwdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5MHQucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx5MHQucHJvdG90eXBlLCJfbm9NdWx0aUV4cGVyaW1lbnRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHkwdC5wcm90b3R5cGUsIl9pbmRleE9mU2Vzc2lvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx5MHQucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3VwTmFtZUhhc2giLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSx5MHQucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seTB0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCksdChbYSgic2Vzc2lvbkdyb3VwLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHkwdC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBDaGFuZ2VkIixudWxsKSx5MHQ9dChbaSgidGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMiKV0seTB0KTtsZXQgdjB0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2hwYXJhbU5hbWU9VEp0LHRoaXMuX21ldHJpY05hbWU9Q0p0fV92aXNpYmxlU2NoZW1hT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCgpe2NvbnN0IHQ9dGhpcy4kLnNlc3Npb25Hcm91cHNUYWJsZS5nZXQoImRldGFpbHNPcGVuZWRJdGVtcyIpO3RoaXMuJC5zZXNzaW9uR3JvdXBzVGFibGUuc2V0KCJkZXRhaWxzT3BlbmVkSXRlbXMiLFtdKSxXaSgpO2NvbnN0IGU9bmV3IE1hcDt0aGlzLnNlc3Npb25Hcm91cHMuZm9yRWFjaCgodD0+e2Uuc2V0KHQubmFtZSx0KX0pKSx0aGlzLiQuc2Vzc2lvbkdyb3Vwc1RhYmxlLnNldCgiZGV0YWlsc09wZW5lZEl0ZW1zIix0Lm1hcCgodD0+ZS5nZXQodC5uYW1lKSkpLmZpbHRlcihCb29sZWFuKSl9X3Nlc3Npb25Hcm91cEhQYXJhbSh0LGUpe3JldHVybiBudWxsIT10JiYwIT1PYmplY3Qua2V5cyh0KS5sZW5ndGgmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LmhwYXJhbXMsZSk/cUp0KHQuaHBhcmFtc1tlXSk6IiJ9X3Nlc3Npb25Hcm91cE1ldHJpYyh0LGUpe2lmKG51bGw9PXR8fDA9PU9iamVjdC5rZXlzKHQpLmxlbmd0aClyZXR1cm4iIjtmb3IobGV0IG49MDtuPHQubWV0cmljVmFsdWVzLmxlbmd0aDsrK24pe2xldCBpPXQubWV0cmljVmFsdWVzW25dO2lmKGkubmFtZS5ncm91cD09PWUuZ3JvdXAmJmkubmFtZS50YWc9PWUudGFnKXJldHVybiBxSnQoaS52YWx1ZSl9cmV0dXJuIiJ9X3Jvd051bWJlcih0KXtyZXR1cm4gdCsxfX07djB0LnRlbXBsYXRlPXhlYAogICAgPHZhYWRpbi1ncmlkCiAgICAgIGNsYXNzPSJzZXNzaW9uLWdyb3VwLXRhYmxlIgogICAgICBpZD0ic2Vzc2lvbkdyb3Vwc1RhYmxlIgogICAgICBjb2x1bW4tcmVvcmRlcmluZy1hbGxvd2VkPSIiCiAgICAgIGl0ZW1zPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgID4KICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjAiIHdpZHRoPSIxMGVtIiByZXNpemFibGU9IiI+CiAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPlRyaWFsIElEPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jZWxsIj5bW2l0ZW0ubmFtZV1dPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlbmFibGVTaG93TWV0cmljc11dIj4KICAgICAgICA8dmFhZGluLWdyaWQtY29sdW1uIGZsZXgtZ3Jvdz0iMCIgYXV0b1dpZHRoPSIiIHJlc2l6YWJsZT0iIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPlNob3cgTWV0cmljczwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNsYXNzPSJ0YWJsZS1jZWxsIiBjaGVja2VkPSJ7e2RldGFpbHNPcGVuZWR9fSI+CiAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICBpdGVtcz0iW1t2aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zXV0iCiAgICAgICAgYXM9ImhwYXJhbUluZm8iCiAgICAgICAgaW5kZXgtYXM9ImhwYXJhbUluZGV4IgogICAgICA+CiAgICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjIiIHdpZHRoPSIxMGVtIiByZXNpemFibGU9IiI+CiAgICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19ocGFyYW1OYW1lKGhwYXJhbUluZm8pXV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19zZXNzaW9uR3JvdXBIUGFyYW0oaXRlbSwgaHBhcmFtSW5mby5uYW1lKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3ZhYWRpbi1ncmlkLWNvbHVtbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9Int7dmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc319IgogICAgICAgIGFzPSJtZXRyaWNJbmZvIgogICAgICAgIGluZGV4LWFzPSJtZXRyaWNJbmRleCIKICAgICAgPgogICAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIyIiB3aWR0aD0iMTBlbSIgcmVzaXphYmxlPSIiPgogICAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1oZWFkZXIgdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfbWV0cmljTmFtZShtZXRyaWNJbmZvKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfc2Vzc2lvbkdyb3VwTWV0cmljKGl0ZW0sIG1ldHJpY0luZm8ubmFtZSldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0icm93LWRldGFpbHMiPgogICAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscwogICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgIHNlc3Npb24tZ3JvdXA9IltbaXRlbV1dIgogICAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbdmlzaWJsZVNjaGVtYV1dIgogICAgICAgICAgY2xhc3M9InNlc3Npb24tZ3JvdXAtZGV0YWlscyIKICAgICAgICA+CiAgICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdmFhZGluLWdyaWQ+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lOwogICAgICB9CgogICAgICA6aG9zdCguZGFyay1tb2RlKSB7CiAgICAgICAgLS1sdW1vLWJhc2UtY29sb3I6ICMzMDMwMzA7CiAgICAgICAgLS1sdW1vLWJvZHktdGV4dC1jb2xvcjogI2ZmZjsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgdmFhZGluLWdyaWQgewogICAgICAgIC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiAjNTA1MDUwOwogICAgICB9CgogICAgICAudGFibGUtY2VsbCB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC50YWJsZS1oZWFkZXIgewogICAgICAgIC8qIGxpbmUtYnJlYWsgb3ZlcmZsb3dpbmcgY29sdW1uIGhlYWRlcnMgKi8KICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KICAgICAgLnNlc3Npb24tZ3JvdXAtdGFibGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuc2Vzc2lvbi1ncm91cC1kZXRhaWxzIHsKICAgICAgICBoZWlnaHQ6IDM2MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx2MHQucHJvdG90eXBlLCJ2aXNpYmxlU2NoZW1hIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx2MHQucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdjB0LnByb3RvdHlwZSwiZW5hYmxlU2hvd01ldHJpY3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdjB0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2MHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFthKCJ2aXNpYmxlU2NoZW1hLioiLCJzZXNzaW9uR3JvdXBzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHYwdC5wcm90b3R5cGUsIl92aXNpYmxlU2NoZW1hT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCIsbnVsbCksdjB0PXQoW2koInRmLWhwYXJhbXMtdGFibGUtdmlldyIpXSx2MHQpO2xldCBiMHQ9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZXNzaW9uR3JvdXA9bnVsbCx0aGlzLnZpc2libGVTY2hlbWE9bnVsbH1fcHJvcGVydGllc0FyZVBvcHVsYXRlZCh0LGUpe3JldHVybiBudWxsIT10JiZudWxsIT1lfV9zaW5nbGV0b25TZXNzaW9uR3JvdXBzKHQpe3JldHVybiBudWxsPT10P1tdOlt0XX19O2Z1bmN0aW9uIHgwdCh0LGUsbixpKXtpZihlLmxlbmd0aDwyKXJldHVybiBjb25zb2xlLmVycm9yKCJMZXNzIHRoYW4gdHdvIGF4ZXMgaW4gcGFyYWxsZWwgY29vcmRpbmF0ZXMgcGxvdC4iKSxudWxsO2NvbnN0IHI9blswXSxvPW5bMV07aWYocjw9ZVswXXx8cj49ZVtlLmxlbmd0aC0xXSlyZXR1cm4gbnVsbDtjb25zdCBhPUNlLmV4cG9ydHMuc29ydGVkSW5kZXgoZSxyKTtjb25zb2xlLmFzc2VydChhPjApLGNvbnNvbGUuYXNzZXJ0KGE8ZS5sZW5ndGgpO2NvbnN0IHM9YS0xO2xldCBsPW51bGwsYz1udWxsO3JldHVybiB0LmZvckVhY2goKHQ9Pntjb25zdCBlPShmdW5jdGlvbiBuKHQsZSxpLGEpe2NvbnN0IHM9dC1pLGw9ZS1hLGM9ci1pLHU9by1hLGg9KHMqYytsKnUpLyhzKnMrbCpsKTtpZihoPD0wKXJldHVybiBZSnQoYyx1KTtpZihoPj0xKXJldHVybiBZSnQodC1yLGUtbyk7cmV0dXJuIFlKdChjLWgqcyx1LWgqbCl9KSh0LmNvbnRyb2xQb2ludHNbc11bMF0sdC5jb250cm9sUG9pbnRzW3NdWzFdLHQuY29udHJvbFBvaW50c1thXVswXSx0LmNvbnRyb2xQb2ludHNbYV1bMV0pO2U+aXx8KG51bGw9PT1sfHxlPGwpJiYobD1lLGM9dCl9KSksY31mdW5jdGlvbiB3MHQodCxlLG4pe2Z1bmN0aW9uIGkoKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuWzEsMl07Y29uc3RbZSxuXT1HbCh0KTtyZXR1cm4gZSE9PW4/W2Usbl06ZT4wP1suNSplLDEuNSplXTplPDA/WzEuNSplLC41KmVdOlstMSwxXX1pZigiTElORUFSIj09PW4pcmV0dXJuIGNFKCkuZG9tYWluKGkoKSkucmFuZ2UoW2UsMF0pO2lmKCJMT0ciPT09bil7Y29uc3Qgbj1pKCk7cmV0dXJuIG5bMF08PTAmJm5bMV0+PTA/dzB0KHQsZSwiTElORUFSIik6eUUoKS5kb21haW4obikucmFuZ2UoW2UsMF0pfWlmKCJRVUFOVElMRSI9PT1uKXtjb25zdCBuPTIwLGk9S2wobikubWFwKCh0PT5lLXQqZS8obi0xKSkpO3JldHVybiAwPT09dC5sZW5ndGgmJih0PVsxXSksQ0UoKS5kb21haW4oQ2UuZXhwb3J0cy51bmlxKHQpKS5yYW5nZShpKX1pZigiTk9OX05VTUVSSUMiPT09bilyZXR1cm4gS00oKS5kb21haW4oQ2UuZXhwb3J0cy51bmlxKHQuc29ydCgpKSkucmFuZ2UoW2UsMF0pLnBhZGRpbmcoLjEpO3Rocm93IFJhbmdlRXJyb3IoIlVua25vd24gc2NhbGU6ICIrbil9dmFyIFMwdCxNMHQ7YjB0LnRlbXBsYXRlPXhlYAogICAgPCEtLSBJZiBzZXNzaW9uR3JvdXAgb3IgdmlzaWJsZVNjaGVtYSBhcmUgbm90IHBvcHVsYXRlZCwgZG8gbm90IGRpc3BsYXkKICAgICAgICAgYW55dGhpbmcuCiAgICAgIC0tPgogICAgPHRlbXBsYXRlCiAgICAgIGlzPSJkb20taWYiCiAgICAgIGlmPSJbW19wcm9wZXJ0aWVzQXJlUG9wdWxhdGVkKHZpc2libGVTY2hlbWEsIHNlc3Npb25Hcm91cCldXSIKICAgID4KICAgICAgPCEtLSBEaXNwbGF5IG9uZSByb3cgd2l0aG91dCBhICJzaG93LW1ldHJpY3MiIGNvbHVtbiAtLT4KICAgICAgPHRmLWhwYXJhbXMtdGFibGUtdmlldwogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW3Zpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tfc2luZ2xldG9uU2Vzc2lvbkdyb3VwcyhzZXNzaW9uR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXRhYmxlLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlCiAgICAgIGlzPSJkb20taWYiCiAgICAgIGlmPSJbWyFfcHJvcGVydGllc0FyZVBvcHVsYXRlZCh2aXNpYmxlU2NoZW1hLCBzZXNzaW9uR3JvdXApXV0iCiAgICA+CiAgICAgIDxkaXY+Q2xpY2sgb3IgaG92ZXIgb3ZlciBhIHNlc3Npb24gZ3JvdXAgdG8gZGlzcGxheSBpdHMgdmFsdWVzIGhlcmUuPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYjB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGIwdC5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCksYjB0PXQoW2koInRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMiKV0sYjB0KSwoZnVuY3Rpb24odCl7dC5MSU5FQVI9IkxJTkVBUiIsdC5MT0c9IkxPRyIsdC5RVUFOVElMRT0iUVVBTlRJTEUiLHQuTk9OX05VTUVSSUM9Ik5PTl9OVU1FUklDIn0pKFMwdHx8KFMwdD17fSkpO2NsYXNzIEUwdHtpc1Bhc3NpbmcodCl7cmV0dXJuITB9fWNsYXNzIFQwdHtjb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLl9sb3dlcj10LHRoaXMuX3VwcGVyPWUsdGhpcy5fbG93ZXJPcGVuPW4sdGhpcy5fdXBwZXJPcGVuPWl9aXNQYXNzaW5nKHQpe2NvbnN0IGU9dDtyZXR1cm4gdGhpcy5fYmVmb3JlKHRoaXMuX2xvd2VyLGUsIXRoaXMuX2xvd2VyT3BlbikmJnRoaXMuX2JlZm9yZShlLHRoaXMuX3VwcGVyLCF0aGlzLl91cHBlck9wZW4pfV9iZWZvcmUodCxlLG4pe3JldHVybiBuP3Q8PWU6dDxlfX1jbGFzcyBDMHR7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9tYWluU2V0PXR9aXNQYXNzaW5nKHQpe3JldHVybi0xIT09dGhpcy5fZG9tYWluU2V0LmZpbmRJbmRleCgoZT0+ZT09PXQpKX19Y2xhc3MgQTB0e2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMuX3N2Z1Byb3BzPXQsdGhpcy5fc2NoZW1hPWUsdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyPW4sdGhpcy5fY29sSW5kZXg9aSx0aGlzLl9pc0Rpc3BsYXllZD0hMSx0aGlzLl95U2NhbGU9bnVsbCx0aGlzLl9zY2FsZVR5cGU9bnVsbCx0aGlzLnNldEJydXNoU2VsZWN0aW9uKG51bGwpfWNvbEluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbEluZGV4fXlTY2FsZSgpe3JldHVybiB0aGlzLl95U2NhbGV9c2NhbGVUeXBlKCl7cmV0dXJuIHRoaXMuX3NjYWxlVHlwZX1icnVzaFNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9icnVzaFNlbGVjdGlvbn1pc0Rpc3BsYXllZCgpe3JldHVybiB0aGlzLl9pc0Rpc3BsYXllZH1zZXRCcnVzaFNlbGVjdGlvbih0KXt0aGlzLl9icnVzaFNlbGVjdGlvbj10LHRoaXMuX2JydXNoRmlsdGVyPXRoaXMuX2J1aWxkQnJ1c2hGaWx0ZXIodGhpcy5icnVzaFNlbGVjdGlvbigpLHRoaXMuc2NhbGVUeXBlKCksdGhpcy55U2NhbGUoKSl9c2V0RG9tYWluQW5kU2NhbGUodCxlKXt0aGlzLl9zY2FsZVR5cGU9ZSx0aGlzLl95U2NhbGU9dzB0KHQuc2xpY2UoKSx0aGlzLl9zdmdQcm9wcy5oZWlnaHQsdGhpcy5zY2FsZVR5cGUoKSksdGhpcy5fYnJ1c2hGaWx0ZXI9dGhpcy5fYnVpbGRCcnVzaEZpbHRlcih0aGlzLmJydXNoU2VsZWN0aW9uKCksdGhpcy5zY2FsZVR5cGUoKSx0aGlzLnlTY2FsZSgpKX1icnVzaEZpbHRlcigpe3JldHVybiB0aGlzLl9icnVzaEZpbHRlcn11cGRhdGVET00odCl7bGV0IGU9YmModGhpcy55U2NhbGUoKSk7dGhpcy5zY2FsZVR5cGUoKT09PVMwdC5RVUFOVElMRSYmKGU9ZS50aWNrVmFsdWVzKHRoaXMueVNjYWxlKCkucXVhbnRpbGVzKCkpLnRpY2tGb3JtYXQoRHkoIi0uNmciKSkpO2NvbnN0IG49RHUodCk7bi5zZWxlY3RBbGwoImciKS5yZW1vdmUoKSxuLmFwcGVuZCgiZyIpLmNsYXNzZWQoImF4aXMiLCEwKS5jYWxsKGUpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImF4aXMtdGl0bGUiLCEwKS5zdHlsZSgiY3Vyc29yIiwibW92ZSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInkiLC05KS50ZXh0KCh0PT5BSnQodGhpcy5fc2NoZW1hLHQpKSksbi5jYWxsKE5oKCkub24oInN0YXJ0IiwoKCk9Pnt0LnNldEF0dHJpYnV0ZSgiaXMtZHJhZ2dpbmciLCIiKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnU3RhcnQodGhpcy5jb2xJbmRleCgpKX0pKS5vbigiZHJhZyIsKCgpPT50aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnKE11LngpKSkub24oImVuZCIsKCgpPT57dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZ0VuZCgpLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1kcmFnZ2luZyIpfSkpKTtjb25zdCBpPXlnKCkuZXh0ZW50KFtbLTgsMF0sWzgsdGhpcy5fc3ZnUHJvcHMuaGVpZ2h0KzFdXSkub24oInN0YXJ0IiwoKCk9PntQMHQoTXUpJiYodC5zZXRBdHRyaWJ1dGUoImlzLWJydXNoaW5nIiwiIiksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxNdS5zZWxlY3Rpb24pKX0pKS5vbigiYnJ1c2giLCgoKT0+e1AwdChNdSkmJnRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkJydXNoQ2hhbmdlZCh0aGlzLmNvbEluZGV4KCksTXUuc2VsZWN0aW9uKX0pKS5vbigiZW5kIiwoKCk9PntQMHQoTXUpJiYodGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxNdS5zZWxlY3Rpb24pLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1icnVzaGluZyIpKX0pKSxyPUR1KHQpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJydXNoIiwhMCk7ci5jYWxsKGkpLGkubW92ZShyLHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSl9c2V0RGlzcGxheWVkKHQpe3RoaXMuX2lzRGlzcGxheWVkPXR9X2J1aWxkQnJ1c2hGaWx0ZXIodCxlLG4pe2lmKG51bGw9PT10KXJldHVybiBuZXcgRTB0O2lmKG51bGw9PT1lKXJldHVybiBjb25zb2xlLmVycm9yKCJTY2FsZSB0eXBlIGlzIG51bGwsIGJ1dCBicnVzaFNlbGVjdGlvbiBpc24ndDogIix0KSxuZXcgRTB0O3N3aXRjaChlKXtjYXNlIFMwdC5MSU5FQVI6Y2FzZSBTMHQuTE9HOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm5bdC5pbnZlcnQoZSksdC5pbnZlcnQobildLnNvcnQoKCh0LGUpPT50LWUpKX0pKG4sdFswXSx0WzFdKTtyZXR1cm4gbmV3IFQwdChlLGksITEsITEpfWNhc2UgUzB0LlFVQU5USUxFOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBpPXQucmFuZ2UoKSxyPWkuZmlsdGVyKCh0PT5lPD10JiZ0PD1uKSkubWFwKChlPT57Y29uc3Qgbj10LmludmVydEV4dGVudChlKTtyZXR1cm4gZT09PWlbaS5sZW5ndGgtMV0/W25bMF0sblsxXSsxXTpufSkpO3JldHVybiAwPT1yLmxlbmd0aD9bMCwwXTpHbChhYyhyKSl9KShuLHRbMF0sdFsxXSk7cmV0dXJuIG5ldyBUMHQoZSxpLCExLCEwKX1jYXNlIFMwdC5OT05fTlVNRVJJQzpyZXR1cm4gbmV3IEMwdCgoZnVuY3Rpb24gZSh0LG4saSl7cmV0dXJuIHQuZG9tYWluKCkuZmlsdGVyKChlPT57Y29uc3Qgcj10KGUpO3JldHVybiBuPD1yJiZyPD1pfSkpfSkobix0WzBdLHRbMV0pKX1yZXR1cm4gY29uc29sZS5lcnJvcigiVW5rbm93biBzY2FsZSB0eXBlOiAiLGUpLG5ldyBFMHR9fWNsYXNzIGswdHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9heGVzPXRoaXMuX2NyZWF0ZUF4ZXMobiksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnM9S00oKS5yYW5nZShbMSx0aGlzLl9zdmdQcm9wcy53aWR0aC0xXSkucGFkZGluZyguNSksdGhpcy5fZHJhZ2dlZEF4aXM9bnVsbCx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5heGlzLXBhcmVudCIpLnJlbW92ZSgpLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoIi5heGlzLXBhcmVudCIpfXVwZGF0ZUF4ZXModCxlKXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKTtjb25zdCBuPW5ldyBTZXQ7dC5jb2x1bW5zLmZvckVhY2goKHQ9Pntjb25zdCBpPXQuYWJzb2x1dGVJbmRleDtsZXQgcj10aGlzLl9heGVzW2ldO3Iuc2V0RGlzcGxheWVkKCEwKTtjb25zdCBvPWUubWFwKCh0PT56SnQodGhpcy5fc2NoZW1hLHQsaSkpKTtyLnNldERvbWFpbkFuZFNjYWxlKG8sdC5zY2FsZSksbi5hZGQoaSl9KSksdGhpcy5fYXhlcy5mb3JFYWNoKCh0PT57bi5oYXModC5jb2xJbmRleCgpKXx8dC5zZXREaXNwbGF5ZWQoITEpfSkpLHRoaXMuX3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKG4pLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fcGFyZW50c1NlbC5kYXRhKEFycmF5LmZyb20obiksKHQ9PnQpKSx0aGlzLl9wYXJlbnRzU2VsLmV4aXQoKS5yZW1vdmUoKSx0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3BhcmVudHNTZWwuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzLXBhcmVudCIsITApLm1lcmdlKHRoaXMuX3BhcmVudHNTZWwpO2NvbnN0IGk9dGhpczt0aGlzLl9wYXJlbnRzU2VsLmNhbGwoKHQ9PnRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2kuX2F4ZXNbdF0udXBkYXRlRE9NKHRoaXMpfSkpfW1hcFZpc2libGVBeGVzKHQpe3JldHVybiB0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKS5tYXAoKGU9PnQodGhpcy5nZXRBeGlzUG9zaXRpb24oZSksdGhpcy5fYXhlc1tlXSkpKX1hbGxWaXNpYmxlQXhlc1NhdGlzZnkodCl7cmV0dXJuIHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpLmV2ZXJ5KChlPT50KHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpLHRoaXMuX2F4ZXNbZV0pKSl9Z2V0QXhpc0ZvckNvbEluZGV4KHQpe3JldHVybiB0aGlzLl9heGVzW3RdfWRyYWdTdGFydCh0KXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKSxjb25zb2xlLmFzc2VydCh0aGlzLl9heGVzW3RdLmlzRGlzcGxheWVkKCkpLHRoaXMuX2RyYWdnZWRBeGlzPXRoaXMuX2F4ZXNbdF0sdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyh0KX1kcmFnKHQpe3Q9TWF0aC5taW4oTWF0aC5tYXgodCwwKSx0aGlzLl9zdmdQcm9wcy53aWR0aCksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10O2xldCBlPXRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpO2Uuc29ydCgoKHQsZSk9PnRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHQpLXRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpKSksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKGUpLHRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0aGlzLl9wYXJlbnRzU2VsKX1kcmFnRW5kKHQpe2NvbnNvbGUuYXNzZXJ0KHRoaXMuaXNBeGlzRHJhZ2dpbmcoKSksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj1udWxsLHRoaXMuX2RyYWdnZWRBeGlzPW51bGwsdGhpcy5fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHRoaXMuX3BhcmVudHNTZWwudHJhbnNpdGlvbigpLmR1cmF0aW9uKHQpKX1pc0F4aXNEcmFnZ2luZygpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXN9Z2V0QXhpc1Bvc2l0aW9uKHQpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXMmJnRoaXMuX2RyYWdnZWRBeGlzLmNvbEluZGV4KCk9PT10P3RoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb246dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnModCl9X3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKHQpe2NvbnN0IGU9dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkuZmlsdGVyKChlPT50LmhhcyhlKSkpLG49QXJyYXkuZnJvbShuZXcgU2V0KFsuLi5lLC4uLkFycmF5LmZyb20odCldKSk7dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKG4pfV91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odCl7dC5hdHRyKCJ0cmFuc2Zvcm0iLCh0PT5LSnQodGhpcy5nZXRBeGlzUG9zaXRpb24odCkpKSl9X2NyZWF0ZUF4ZXModCl7cmV0dXJuIEtsKExKdCh0aGlzLl9zY2hlbWEpKS5tYXAoKGU9Pm5ldyBBMHQodGhpcy5fc3ZnUHJvcHMsdGhpcy5fc2NoZW1hLHQsZSkpKX19ZnVuY3Rpb24gUDB0KHQpe3JldHVybiBudWxsIT09dC5zb3VyY2VFdmVudH0hKGZ1bmN0aW9uKHQpe3RbdC5GT1JFR1JPVU5EPTBdPSJGT1JFR1JPVU5EIix0W3QuQkFDS0dST1VORD0xXT0iQkFDS0dST1VORCJ9KShNMHR8fChNMHQ9e30pKTtjbGFzcyBMMHR7Y29uc3RydWN0b3IodCl7dm9pZCAwPT09dCYmKHQ9eGgobnVsbCkpLGNvbnNvbGUuYXNzZXJ0KHQuc2l6ZSgpPD0xKSx0aGlzLl9zZXNzaW9uR3JvdXBTZWw9dH1zZXNzaW9uR3JvdXAoKXtyZXR1cm4gMT09PXRoaXMuX3Nlc3Npb25Hcm91cFNlbC5zaXplKCk/dGhpcy5fc2Vzc2lvbkdyb3VwU2VsLmRhdHVtKCk6bnVsbH1pc051bGwoKXtyZXR1cm4gbnVsbD09PXRoaXMuc2Vzc2lvbkdyb3VwKCl9c2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nlc3Npb25Hcm91cFNlbH1lcXVhbHNUbyh0KXtyZXR1cm4gdGhpcy5pc051bGwoKT90LmlzTnVsbCgpOiF0LmlzTnVsbCgpJiZ0LnNlc3Npb25Hcm91cCgpLm5hbWU9PXRoaXMuc2Vzc2lvbkdyb3VwKCkubmFtZX19Y2xhc3MgSTB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1lLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW4sdGhpcy5fc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5iYWNrZ3JvdW5kIikucmVtb3ZlKCksdGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuZm9yZWdyb3VuZCIpLnJlbW92ZSgpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5hcHBlbmQoImciKS5jbGFzc2VkKCJiYWNrZ3JvdW5kIiwhMCkuc2VsZWN0QWxsKCJwYXRoIiksdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9zdmdQcm9wcy5zdmdHLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZvcmVncm91bmQiLCEwKS5zZWxlY3RBbGwoInBhdGgiKSx0aGlzLl91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZT1uZXcgTDB0LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPW5ldyBMMHQsdGhpcy5fZDNsaW5lPURQKCkuY3VydmUoUlApfWdldFNlc3Npb25Hcm91cEhhbmRsZSh0KXtyZXR1cm4gbnVsbD09dD9uZXcgTDB0Om5ldyBMMHQodGhpcy5fZmdQYXRoc1NlbC5maWx0ZXIoKGU9PmUubmFtZT09PXQubmFtZSkpKX1oaWRlQmFja2dyb3VuZExpbmVzKCl7dGhpcy5fYmdQYXRoc1NlbC5hdHRyKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9c2hvd0JhY2tncm91bmRMaW5lcygpe3RoaXMuX2JnUGF0aHNTZWwuYXR0cigidmlzaWJpbGl0eSIsbnVsbCl9cGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCl7cmV0dXJuIHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZX1zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZX1yZWNvbXB1dGVDb250cm9sUG9pbnRzKHQsZT0wKXsodD09PU0wdC5GT1JFR1JPVU5EP3RoaXMuX2ZnUGF0aHNTZWw6dGhpcy5fYmdQYXRoc1NlbCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKGUpLmF0dHIoImQiLCh0PT50aGlzLl9wYXRoREF0dHJpYnV0ZSh0KSkpLHQ9PT1NMHQuRk9SRUdST1VORCYmd2luZG93LnNldFRpbWVvdXQoKCgpPT57Y29uc3QgdD10aGlzO3RoaXMuX2ZnUGF0aHNTZWwuZWFjaCgoZnVuY3Rpb24oZSl7dC5fc2V0Q29udHJvbFBvaW50c1Byb3BlcnR5KHRoaXMsZSl9KSl9KSl9cmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpe3RoaXMuX2ZnUGF0aHNTZWwuY2xhc3NlZCgiaW52aXNpYmxlLXBhdGgiLCh0PT4hdGhpcy5fYXhlc0NvbGxlY3Rpb24uYWxsVmlzaWJsZUF4ZXNTYXRpc2Z5KCgoZSxuKT0+bi5icnVzaEZpbHRlcigpLmlzUGFzc2luZyh6SnQodGhpcy5fc2NoZW1hLHQsbi5jb2xJbmRleCgpKSkpKSkpLHRoaXMuX3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl9c2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IodCxlLG4pe2NvbnN0IGk9dGhpcy5fY3JlYXRlTGluZUNvbG9yRnVuY3Rpb24odCxlLG4pO3RoaXMuX2ZnUGF0aHNTZWwuYXR0cigic3Ryb2tlIixpKX1yZWRyYXcodCxlLG4saSl7Y29uc3Qgcj10aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2Vzc2lvbkdyb3VwKCksbz10aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZS5zZXNzaW9uR3JvdXAoKTt0aGlzLl9zZXNzaW9uR3JvdXBzPXQsdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9yZWNvbXB1dGVQYXRoU2VsZWN0aW9uKHRoaXMuX2ZnUGF0aHNTZWwpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0aGlzLl9iZ1BhdGhzU2VsKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUociksdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUobyksdGhpcy5yZWNvbXB1dGVDb250cm9sUG9pbnRzKE0wdC5GT1JFR1JPVU5EKSx0aGlzLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoTTB0LkJBQ0tHUk9VTkQpLHRoaXMucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpLHRoaXMuc2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IoZSxuLGkpfXVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cCh0KXt0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCExKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dCx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCEwKX1jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpe3RoaXMudXBkYXRlUGVha2VkU2Vzc2lvbkdyb3VwKG5ldyBMMHQpfXVwZGF0ZVNlbGVjdGVkU2Vzc2lvbkdyb3VwKHQpe3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCExKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZT10LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCEwKX1maW5kQ2xvc2VzdFNlc3Npb25Hcm91cCh0LGUpe2NvbnN0IG49dGhpcy5fYXhlc0NvbGxlY3Rpb24ubWFwVmlzaWJsZUF4ZXMoKCh0LGUpPT50KSksaT14MHQodGhpcy5fdmlzaWJsZUZnUGF0aHNTZWwubm9kZXMoKSxuLFt0LGVdLDEwMCk7cmV0dXJuIG51bGw9PT1pP25ldyBMMHQ6bmV3IEwwdChEdShpKSl9X2NyZWF0ZUxpbmVDb2xvckZ1bmN0aW9uKHQsZSxuKXtpZihudWxsPT09dClyZXR1cm4oKT0+InJlZCI7Y29uc3QgaT1jRSgpLmRvbWFpbihESnQodGhpcy5fc2NoZW1hLHRoaXMuX3Nlc3Npb25Hcm91cHMsdCkpLnJhbmdlKFtlLG5dKS5pbnRlcnBvbGF0ZShrcCk7cmV0dXJuIGU9Pmkoekp0KHRoaXMuX3NjaGVtYSxlLHQpKX1fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0KXtyZXR1cm4odD10LmRhdGEodGhpcy5fc2Vzc2lvbkdyb3VwcywodD0+dC5uYW1lKSkpLmV4aXQoKS5yZW1vdmUoKSx0LmVudGVyKCkuYXBwZW5kKCJwYXRoIikubWVyZ2UodCl9X3NldENvbnRyb2xQb2ludHNQcm9wZXJ0eSh0LGUpe3QuY29udHJvbFBvaW50cz10aGlzLl9jb21wdXRlQ29udHJvbFBvaW50cyhlKX1fY29tcHV0ZUNvbnRyb2xQb2ludHModCl7cmV0dXJuIHRoaXMuX2F4ZXNDb2xsZWN0aW9uLm1hcFZpc2libGVBeGVzKCgoZSxuKT0+W2Usbi55U2NhbGUoKSh6SnQodGhpcy5fc2NoZW1hLHQsbi5jb2xJbmRleCgpKSldKSl9X3BhdGhEQXR0cmlidXRlKHQpe3JldHVybiB0aGlzLl9kM2xpbmUodGhpcy5fY29tcHV0ZUNvbnRyb2xQb2ludHModCkpfV91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpe3RoaXMuX3Zpc2libGVGZ1BhdGhzU2VsPXRoaXMuX2ZnUGF0aHNTZWwuZmlsdGVyKCI6bm90KC5pbnZpc2libGUtcGF0aCkiKX19Y2xhc3MgTjB0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdmc9RHUodCk7Y29uc3Qgbj0zMCxpPTEwLHI9MTAsbz0xMCxhPTEwMCplK28raSxzPTIwMCtuK3I7dGhpcy5zdmcuYXR0cigidmlld0JveCIsYDAgMCAke2F9ICR7c31gKSx0aGlzLnN2Zy5hdHRyKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQiKSx0aGlzLnN2Zy5zdHlsZSgibWluLXdpZHRoIixhKyJweCIpLHRoaXMuc3ZnLnN0eWxlKCJtaW4taGVpZ2h0IixzKyJweCIpLHRoaXMud2lkdGg9YS1vLWksdGhpcy5oZWlnaHQ9cy1uLXIsdGhpcy5zdmdHPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsS0p0KG8sbikpfX1jbGFzcyBSMHR7Y29uc3RydWN0b3IodCxlLG4saSl7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0I9bix0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQj1pLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW5ldyBrMHQodCxlLHRoaXMpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbj1uZXcgSTB0KHQsZSx0aGlzLl9heGVzQ29sbGVjdGlvbiksdGhpcy5fc3ZnUHJvcHMuc3ZnLm9uKCJjbGljayIsKCgpPT50aGlzLm9uQ2xpY2soKSkpLm9uKCJtb3VzZW1vdmUgbW91c2VlbnRlciIsKCgpPT57Y29uc3RbdCxlXT1iaCh0aGlzLl9zdmdQcm9wcy5zdmdHLm5vZGUoKSk7dGhpcy5vbk1vdXNlTW92ZWQodCxlKX0pKS5vbigibW91c2VsZWF2ZSIsKCgpPT50aGlzLm9uTW91c2VMZWF2ZSgpKSl9b25EcmFnU3RhcnQodCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZ1N0YXJ0KHQpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5oaWRlQmFja2dyb3VuZExpbmVzKCl9b25EcmFnKHQpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWcodCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoTTB0LkZPUkVHUk9VTkQpfW9uRHJhZ0VuZCgpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWdFbmQoNTAwKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlQ29udHJvbFBvaW50cyhNMHQuRk9SRUdST1VORCw1MDApLHdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVDb250cm9sUG9pbnRzKE0wdC5CQUNLR1JPVU5EKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2hvd0JhY2tncm91bmRMaW5lcygpfSksNTAwKX1vbkJydXNoQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmdldEF4aXNGb3JDb2xJbmRleCh0KS5zZXRCcnVzaFNlbGVjdGlvbihlKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpfW9uTW91c2VNb3ZlZCh0LGUpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLmZpbmRDbG9zZXN0U2Vzc2lvbkdyb3VwKHQsZSkpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfW9uTW91c2VMZWF2ZSgpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5pc051bGwoKXx8KHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQihudWxsKSl9b25DbGljaygpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKT09PXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpP3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cChuZXcgTDB0KTp0aGlzLl9saW5lc0NvbGxlY3Rpb24udXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSl9b25PcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLnVwZGF0ZUF4ZXModCxlKTtjb25zdCBuPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSxpPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpO3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWRyYXcoZSx2b2lkIDAhPT10LmNvbG9yQnlDb2x1bW5JbmRleD90LmNvbHVtbnNbdC5jb2xvckJ5Q29sdW1uSW5kZXhdLmFic29sdXRlSW5kZXg6bnVsbCx0Lm1pbkNvbG9yLHQubWF4Q29sb3IpLG4uZXF1YWxzVG8odGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKXx8dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSksaS5lcXVhbHNUbyh0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSl8fHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKX1zY2hlbWEoKXtyZXR1cm4gdGhpcy5fc2NoZW1hfX1sZXQgTzB0PWNsYXNzIGV4dGVuZHMoY3IoZ2wod2UpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLnJlZHJhd0NvdW50PTB9X29wdGlvbnNPclNlc3Npb25Hcm91cHNDaGFuZ2VkKCl7dmFyIHQ7aWYoIXRoaXMub3B0aW9ucylyZXR1cm47Y29uc3R7Y29uZmlndXJhdGlvbjplfT1udWxsIT09KHQ9dGhpcy5fcHJldk9wdGlvbnMpJiZ2b2lkIDAhPT10P3Q6e30se2NvbmZpZ3VyYXRpb246bn09dGhpcy5vcHRpb25zO2lmKHZvaWQgMD09PXRoaXMuX2ludGVyYWN0aW9uTWFuYWdlcnx8IUNlLmV4cG9ydHMuaXNFcXVhbChlLnNjaGVtYSxuLnNjaGVtYSl8fCFDZS5leHBvcnRzLmlzRXF1YWwoZS5jb2x1bW5zVmlzaWJpbGl0eSxuLmNvbHVtbnNWaXNpYmlsaXR5KSl7RHUodGhpcy4kLnN2Zykuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7Y29uc3QgdD1uZXcgTjB0KHRoaXMuJC5zdmcsbi5jb2x1bW5zVmlzaWJpbGl0eS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoKTt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuc3ZnLCEwKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXI9bmV3IFIwdCh0LG4uc2NoZW1hLCh0PT50aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXBDaGFuZ2VkKHQpKSwodD0+dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQodCkpKX10aGlzLl9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uT3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQodGhpcy5vcHRpb25zLHRoaXMuX3ZhbGlkU2Vzc2lvbkdyb3VwcyksdGhpcy5yZWRyYXdDb3VudCsrLHRoaXMuX3ByZXZPcHRpb25zPXRoaXMub3B0aW9uc31jbG9zZXN0U2Vzc2lvbkdyb3VwQ2hhbmdlZCh0KXt0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9dH1zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQodCl7dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cD10fV9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCl7Y29uc3QgdD1RSnQ7aWYodm9pZCAwPT09dGhpcy5zZXNzaW9uR3JvdXBzKXJldHVybiB2b2lkKHRoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz12b2lkIDApO2NvbnN0IGU9dGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb24uc2NoZW1hO3RoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz10aGlzLnNlc3Npb25Hcm91cHMuZmlsdGVyKChuPT57Zm9yKGxldCBpPTA7aTx0Lm51bUNvbHVtbnMoZSk7KytpKWlmKHRoaXMub3B0aW9ucy5jb25maWd1cmF0aW9uLmNvbHVtbnNWaXNpYmlsaXR5W2ldJiZ2b2lkIDA9PT10LmNvbHVtblZhbHVlQnlJbmRleChlLG4saSkpcmV0dXJuITE7cmV0dXJuITB9KSl9fTtPMHQudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8c3ZnIGlkPSJzdmciPjwvc3ZnPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAtLXRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QtYXhpcy1zaGFkb3c6IDAgMXB4IDAgI2ZmZiwKICAgICAgICAgIDFweCAwIDAgI2ZmZiwgMCAtMXB4IDAgI2ZmZiwgLTFweCAwIDAgI2ZmZjsKICAgICAgfQogICAgICA6aG9zdCguZGFyay1tb2RlKSB7CiAgICAgICAgLS10Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90LWF4aXMtc2hhZG93OiAwIDFweCAwICMwMDAsCiAgICAgICAgICAxcHggMCAwICMwMDAsIDAgLTFweCAwICMwMDAsIC0xcHggMCAwICMwMDA7CiAgICAgIH0KICAgICAgc3ZnIHsKICAgICAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5iYWNrZ3JvdW5kIHBhdGggewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiAjZGRkOwogICAgICAgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKICAgICAgfQoKICAgICAgLmZvcmVncm91bmQgcGF0aCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC43OwogICAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgICAgfQoKICAgICAgLyogV2lsbCBiZSBzZXQgb24gZm9yZWdyb3VuZCBwYXRocyB0aGF0IGFyZSBub3QgImNvbnRhaW5lZCIgaW4gdGhlIGN1cnJlbnQKICAgICAgICAgYXhlcyBicnVzaGVzLiBJZiBubyBicnVzaGVzIGFyZSBzZXQsIG5vIHBhdGggd2lsbCBoYXZlIHRoaXMgY2xhc3MuICovCiAgICAgIC5mb3JlZ3JvdW5kIC5pbnZpc2libGUtcGF0aCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogU3R5bGUgZm9yIHRoZSBwYXRoIGNsb3Nlc3QgdG8gdGhlIG1vdXNlIHBvaW50ZXIgKHR5cGljYWxseSB3aWxsIGJlY29tZQogICAgICB0aGUgc2VsZWN0ZWQgcGF0aCB3aGVuIHRoZSB1c2VyIGNsaWNrcykuICovCiAgICAgIC5mb3JlZ3JvdW5kIC5wZWFrZWQtcGF0aCB7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAzOwogICAgICB9CgogICAgICAvKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHBhdGggY2xhc3MuIFdlIHVzZSAhaW1wb3J0YW50IHRvIG92ZXJyaWRlIHRoZQogICAgICAgICBpbmxpbmUgc3R5bGUgdGhhdCBzZXRzIHRoZSByZWd1bGFyIGNvbG9yIG9mIGEgcGF0aC4gKi8KICAgICAgLmZvcmVncm91bmQgLnNlbGVjdGVkLXBhdGggewogICAgICAgIHN0cm9rZS13aWR0aDogMyAhaW1wb3J0YW50OwogICAgICAgIHN0cm9rZTogIzBmMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAjY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuYXhpcyB0ZXh0IHsKICAgICAgICB0ZXh0LXNoYWRvdzogdmFyKC0tdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdC1heGlzLXNoYWRvdyk7CiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICAgIGN1cnNvcjogbW92ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPMHQucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE8wdC5wcm90b3R5cGUsIm9wdGlvbnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE8wdC5wcm90b3R5cGUsInNlbGVjdGVkU2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPMHQucHJvdG90eXBlLCJjbG9zZXN0U2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLE8wdC5wcm90b3R5cGUsInJlZHJhd0NvdW50Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPMHQucHJvdG90eXBlLCJfdmFsaWRTZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE8wdC5wcm90b3R5cGUsIl9pbnRlcmFjdGlvbk1hbmFnZXIiLHZvaWQgMCksdChbYSgib3B0aW9ucy4qIiwic2Vzc2lvbkdyb3Vwcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxPMHQucHJvdG90eXBlLCJfb3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQiLG51bGwpLE8wdD10KFtpKCJ0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90IildLE8wdCk7bGV0IHowdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm9wdGlvbnM9bnVsbH1fY29uZmlndXJhdGlvbkNoYW5nZWQoKXtjb25zdCB0PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLGU9dGhpcy5jb25maWd1cmF0aW9uLnNjaGVtYSxuPXtjb2x1bW5zOnQuaHBhcmFtSW5mb3MubWFwKCgobixpKT0+KHtuYW1lOlRKdChuKSxpbmRleDppLGFic29sdXRlSW5kZXg6Qkp0KGUsdCxpKSxzY2FsZTp0aGlzLl9pc051bWVyaWNDb2x1bW4oaSk/IkxJTkVBUiI6Ik5PTl9OVU1FUklDIn0pKSkuY29uY2F0KHQubWV0cmljSW5mb3MubWFwKCgobixpKT0+e2NvbnN0IHI9aSt0LmhwYXJhbUluZm9zLmxlbmd0aDtyZXR1cm57c2NhbGU6IkxJTkVBUiIsbmFtZTpDSnQobiksaW5kZXg6cixhYnNvbHV0ZUluZGV4OkJKdChlLHQscil9fSkpKSxtaW5Db2xvcjoiIzAwMDBGRiIsbWF4Q29sb3I6IiNGRjAwMDAiLGNvbmZpZ3VyYXRpb246dGhpcy5jb25maWd1cmF0aW9ufTt0aGlzLnNldCgib3B0aW9ucyIsbiksV2koKSx0aGlzLnNldCgib3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgiLHRoaXMuX2RlZmF1bHRDb2xvckJ5Q29sdW1uSW5kZXgoKSl9X3Vuc2VsZWN0RGlzYWJsZWRMb2dTY2FsZXMoKXtudWxsIT09dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMuY29sdW1ucy5mb3JFYWNoKCh0PT57Y29uc3QgZT0ib3B0aW9ucy5jb2x1bW5zLiIrdC5pbmRleDt0aGlzLl9hbGxvd0xvZ1NjYWxlKHQpfHwiTE9HIiE9PXQuc2NhbGV8fHRoaXMuc2V0KGUrIi5zY2FsZSIsIkxJTkVBUiIpfSkpfV9hbGxvd0xvZ1NjYWxlKHQpe2lmKCF0aGlzLl9pc051bWVyaWNDb2x1bW4odC5pbmRleCl8fCF0aGlzLnNlc3Npb25Hcm91cHMpcmV0dXJuITE7Y29uc3RbZSxuXT1WSnQodGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEsdGhpcy5zZXNzaW9uR3JvdXBzLHQuaW5kZXgpO3JldHVybiBlPjB8fG48MH1faXNOdW1lcmljQ29sdW1uKHQpe3JldHVybiB0Pj10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvcy5sZW5ndGh8fCJEQVRBX1RZUEVfRkxPQVQ2NCI9PT10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvc1t0XS50eXBlfV9kZWZhdWx0Q29sb3JCeUNvbHVtbkluZGV4KCl7aWYodGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MubGVuZ3RoPjApcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmxlbmd0aDtjb25zdCB0PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmZpbmRJbmRleCgodD0+IkRBVEFfVFlQRV9GTE9BVDY0Ij09PXQudHlwZSkpO3JldHVybi0xIT09dD90OnZvaWQgMH19O3owdC50ZW1wbGF0ZT14ZWAKICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtcGFuZWwiPgogICAgICA8IS0tICdDb2xvciBieScgZHJvcCBkb3duIG1lbnUgLS0+CiAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgbGFiZWw9IkNvbG9yIGJ5IgogICAgICAgIGlkPSJjb2xvckJ5RHJvcERvd25NZW51IgogICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgID4KICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgc2VsZWN0ZWQ9Int7b3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXh9fSIKICAgICAgICAgIGlkPSJjb2xvckJ5TGlzdEJveCIKICAgICAgICA+CiAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgIGl0ZW1zPSJbW29wdGlvbnMuY29sdW1uc11dIgogICAgICAgICAgICBhcz0iY29sdW1uIgogICAgICAgICAgICBpZD0iY29sb3JCeUNvbHVtblRlbXBsYXRlIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItaXRlbSBkaXNhYmxlZD0iW1shX2lzTnVtZXJpY0NvbHVtbihjb2x1bW4uaW5kZXgpXV0iPgogICAgICAgICAgICAgIFtbY29sdW1uLm5hbWVdXQogICAgICAgICAgICA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgoKICAgICAgPCEtLSBDb2x1bW5zIHNjYWxlcyAtLT4KICAgICAgPGRpdiBjbGFzcz0iY29sdW1ucy1jb250YWluZXIiPgogICAgICAgIDwhLS0gU2NhbGUgb3B0aW9ucyBmb3IgZWFjaCBudW1lcmljIGZlYXR1cmUgLS0+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tvcHRpb25zLmNvbHVtbnN9fSIgYXM9ImNvbHVtbiI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzTnVtZXJpY0NvbHVtbihjb2x1bW4uaW5kZXgpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbi10aXRsZSI+W1tjb2x1bW4ubmFtZV1dPC9kaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1ncm91cAogICAgICAgICAgICAgICAgICBjbGFzcz0ic2NhbGUtcmFkaW8tZ3JvdXAiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJ7e2NvbHVtbi5zY2FsZX19IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IkxJTkVBUiI+CiAgICAgICAgICAgICAgICAgICAgTGluZWFyCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgICA8IS0tIFRoZSBpZCBoZXJlIGlzIHVzZWQgdG8gYWNjZXNzIHRoaXMgYnV0dG9uIGluIHVuaXQKICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy4tLT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgIGlkPSJsb2dTY2FsZUJ1dHRvbl9bW2NvbHVtbi5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgbmFtZT0iTE9HIgogICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPSJbWyFfYWxsb3dMb2dTY2FsZShjb2x1bW4sIHNlc3Npb25Hcm91cHMuKildXSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIExvZ2FyaXRobWljCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IlFVQU5USUxFIj4KICAgICAgICAgICAgICAgICAgICBRdWFudGlsZQogICAgICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5jb250cm9sLXBhbmVsIHsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQogICAgICAuY29sdW1uIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggZGFya2dyYXk7CiAgICAgICAgcGFkZGluZzogM3B4OwogICAgICB9CiAgICAgIC5jb2x1bW4tdGl0bGUgewogICAgICAgIC8qIEZpdCBldmVyeSB0aXRsZSBpbiBvbmUgbGluZSBzbyB0aGUgcmFkaW8gYm94ZXMgYWxpZ24gdmVydGljYWxseS4gKi8KICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CiAgICAgIC5jb2x1bW5zLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CiAgICAgIC5zY2FsZS1yYWRpby1ncm91cCBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICBwYXBlci1saXN0Ym94IHsKICAgICAgICBtYXgtaGVpZ2h0OiAxNWVtOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sejB0LnByb3RvdHlwZSwiY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sejB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sejB0LnByb3RvdHlwZSwib3B0aW9ucyIsdm9pZCAwKSx0KFthKCJjb25maWd1cmF0aW9uLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHowdC5wcm90b3R5cGUsIl9jb25maWd1cmF0aW9uQ2hhbmdlZCIsbnVsbCksdChbYSgic2Vzc2lvbkdyb3Vwcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx6MHQucHJvdG90eXBlLCJfdW5zZWxlY3REaXNhYmxlZExvZ1NjYWxlcyIsbnVsbCksejB0PXQoW2koInRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzIildLHowdCk7bGV0IEQwdD1jbGFzcyBleHRlbmRzIHdle19jbG9zZXN0T3JTZWxlY3RlZCh0LGUpe3JldHVybiBudWxsIT09dD90OmV9fTtEMHQudGVtcGxhdGU9eGVgCiAgICA8IS0tIENvbnRyb2xzIGJlaGF2aW9yIG9mIHBhcmFsbGVsIGNvb3JkaW5hdGVzIHBsb3QKICAgICAgICAgb3V0cHV0cyBzZXQgb3B0aW9ucyB0byB0aGUgX29wdGlvbnMgcHJvcGVydHkuCiAgICAgIC0tPgogICAgPGhwYXJhbXMtc3BsaXQtbGF5b3V0IG9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CiAgICAgIDwhLS0gVGhlIHNjYWxlIGFuZCBjb2xvciBjb250cm9scy4gLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scwogICAgICAgIGlkPSJjb250cm9scyIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICBvcHRpb25zPSJ7e19vcHRpb25zfX0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scz4KICAgICAgPCEtLSBUaGUgYWN0dWFsIHBhcmFsbGVsIGNvb3JkaW5hdGVzIHBsb3QgLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90CiAgICAgICAgaWQ9InBsb3QiCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgc2VsZWN0ZWQtc2Vzc2lvbi1ncm91cD0ie3tfc2VsZWN0ZWRHcm91cH19IgogICAgICAgIGNsb3Nlc3Qtc2Vzc2lvbi1ncm91cD0ie3tfY2xvc2VzdEdyb3VwfX0iCiAgICAgICAgb3B0aW9ucz0iW1tfb3B0aW9uc11dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdD4KICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMKICAgICAgICBpZD0idmFsdWVzIgogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cD0iW1tfY2xvc2VzdE9yU2VsZWN0ZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Nsb3Nlc3RHcm91cCwgX3NlbGVjdGVkR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzPgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICBpZD0iZGV0YWlscyIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX3NlbGVjdGVkR3JvdXBdXSIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzPgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KCiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgICN2YWx1ZXMgewogICAgICAgIGhlaWdodDogMTE1cHg7CiAgICAgIH0KICAgICAgI2RldGFpbHMgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEQwdC5wcm90b3R5cGUsImJhY2tlbmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRDB0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRDB0LnByb3RvdHlwZSwiY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sRDB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSxEMHQ9dChbaSgidGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldyIpXSxEMHQpO2xldCBCMHQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fc3ZnPW51bGwsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5fYnJ1c2hlZENlbGxJbmRleD1udWxsLHRoaXMuX2JydXNoU2VsZWN0aW9uPW51bGx9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2NvbnRhaW5lcj10aGlzLiQuY29udGFpbmVyLHRoaXMuX3N2Zz1EdSh0aGlzLiQuc3ZnKSx0aGlzLl9yZWRyYXcoKX1fc2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9VUp0KHRoaXMuc2Vzc2lvbkdyb3Vwcyx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwLm5hbWUpfHxudWxsKSx0aGlzLl9yZWRyYXcoKX1fdmlzaWJsZVNjaGVtYUNoYW5nZWQoKXt0aGlzLl9icnVzaGVkQ2VsbEluZGV4PW51bGwsdGhpcy5fYnJ1c2hTZWxlY3Rpb249bnVsbCx0aGlzLl9yZWRyYXcoKX1fcmVkcmF3KCl7dGhpcy5kZWJvdW5jZSgiX3JlZHJhdyIsKCgpPT57Y29uc3QgdD1RSnQ7dGhpcy53aWR0aD1NYXRoLm1heCgxNTAqdC5udW1WaXNpYmxlQ29sdW1ucyh0aGlzLnZpc2libGVTY2hlbWEpLDEyMDApLHRoaXMuaGVpZ2h0PU1hdGgubWF4KDExMi41KnQubnVtVmlzaWJsZU1ldHJpY3ModGhpcy52aXNpYmxlU2NoZW1hKSw0ODApLHRoaXMuX2NvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLndpZHRoKyJweCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLmhlaWdodD10aGlzLmhlaWdodCsicHgiLHRoaXMuX3N2Zy5hdHRyKCJ3aWR0aCIsdGhpcy53aWR0aCkuYXR0cigiaGVpZ2h0Iix0aGlzLmhlaWdodCksdGhpcy5fc3ZnLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpLHRoaXMuX2RyYXcoKX0pLDEwMCl9X2RyYXcoKXtjb25zdCB0PVFKdCxlPXRoaXM7aWYoIXRoaXMuc2Vzc2lvbkdyb3Vwc3x8MD09dGhpcy5zZXNzaW9uR3JvdXBzLmxlbmd0aHx8IXRoaXMudmlzaWJsZVNjaGVtYXx8MD09dGhpcy52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1LbCh0Lm51bVZpc2libGVDb2x1bW5zKGUudmlzaWJsZVNjaGVtYSkpLGk9S2wodC5udW1WaXNpYmxlTWV0cmljcyhlLnZpc2libGVTY2hlbWEpKSxyPTgwLG89NTAsYT1YTSgpLmRvbWFpbihuKS5yYW5nZShbODUsdGhpcy53aWR0aC0xLTVdKS5wYWRkaW5nSW5uZXIoLjEpLHM9WE0oKS5kb21haW4oaSkucmFuZ2UoW3RoaXMuaGVpZ2h0LTEtNS1vLDVdKS5wYWRkaW5nSW5uZXIoLjEpLGw9YS5iYW5kd2lkdGgoKSxjPXMuYmFuZHdpZHRoKCksdT1uLm1hcCgodD0+ZS5fY2VsbFNjYWxlKHQsWzAsbC0xXSkpKSxoPWkubWFwKChuPT5lLl9jZWxsU2NhbGUobit0Lm51bVZpc2libGVIUGFyYW1zKGUudmlzaWJsZVNjaGVtYSksW2MtMSwwXSkpKSxkPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi54LWF4aXMiKS5kYXRhKG4pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieC1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIiwoZT0+dC50cmFuc2xhdGVTdHIoYShlKSwwKSkpO2Z1bmN0aW9uIHAodCl7cmV0dXJuIngtYXhpcy1jbGlwLXBhdGgtIit0fWZ1bmN0aW9uIGYodCl7cmV0dXJuIngtbGFiZWwtY2xpcC1wYXRoLSIrdH1kLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIscCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTUpLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIixsKzEwKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0LTI1KSxkLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsZikuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsZS5oZWlnaHQtMjUpLmF0dHIoIndpZHRoIixsKS5hdHRyKCJoZWlnaHQiLDI1KSxkLmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsKHQ9PiJ1cmwoIyIrcCh0KSsiKSIpKS5lYWNoKChmdW5jdGlvbih0KXtEdSh0aGlzKS5jYWxsKHksdmModVt0XSkudGlja1NpemUoZS5oZWlnaHQtbyksbCw0MCxlLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZSl9KSksZC5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWF4aXMtbGFiZWwiLCEwKS5hdHRyKCJjbGlwLXBhdGgiLCh0PT4idXJsKCMiK2YodCkrIikiKSkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4IixsLzIpLmF0dHIoInkiLGUuaGVpZ2h0LTEtMTIuNSkudGV4dCgobj0+dC5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZShlLnZpc2libGVTY2hlbWEsbikpKS5hcHBlbmQoInRpdGxlIikudGV4dCgobj0+dC5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZShlLnZpc2libGVTY2hlbWEsbikpKTtjb25zdCBtPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi55LWF4aXMiKS5kYXRhKGkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIiwobj0+dC50cmFuc2xhdGVTdHIoZS53aWR0aC0xLHMobikpKSk7ZnVuY3Rpb24gZyh0KXtyZXR1cm4ieS1heGlzLWNsaXAtcGF0aC0iK3R9ZnVuY3Rpb24gXyh0KXtyZXR1cm4ieS1sYWJlbC1jbGlwLXBhdGgtIit0fWZ1bmN0aW9uIHkodCxlLG4saSxyKXtjb25zdCBvPU1hdGguZmxvb3Iobi9pKSxhPWUuc2NhbGUoKTtpZigiUVVBTlRJTEUiPT09cil7bGV0IHQ9YS5xdWFudGlsZXMoKTtjb25zdCBuPU1hdGguY2VpbCh0Lmxlbmd0aC9vKTt0PUtsKDAsdC5sZW5ndGgsbikubWFwKChlPT50W2VdKSksZS50aWNrVmFsdWVzKHQpLnRpY2tGb3JtYXQoRHkoIi0uMmciKSl9IkxJTkVBUiIhPT1yJiYiTE9HIiE9PXJ8fGUudGlja3MobyksdC5jYWxsKGUpLHQuc2VsZWN0QWxsKCIuZG9tYWluIikucmVtb3ZlKCksdC5zZWxlY3RBbGwoIi50aWNrIGxpbmUiKS5hdHRyKCJzdHJva2UiLCIjZGRkIil9bS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGcpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0oZS53aWR0aC00MC0xKSkuYXR0cigieSIsLTUpLmF0dHIoIndpZHRoIixlLndpZHRoLTQwKS5hdHRyKCJoZWlnaHQiLGMrMTApLG0uYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixfKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtKGUud2lkdGgtMSkpLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IixjKSxtLmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsKHQ9PiJ1cmwoIyIrZyh0KSsiKSIpKS5lYWNoKChmdW5jdGlvbihuKXtEdSh0aGlzKS5jYWxsKHksYmMoaFtuXSkudGlja1NpemUoZS53aWR0aC1yKSxjLDIwLGUub3B0aW9ucy5jb2x1bW5zW24rdC5udW1WaXNpYmxlSFBhcmFtcyhlLnZpc2libGVTY2hlbWEpXS5zY2FsZSl9KSksbS5hcHBlbmQoImciKS5jbGFzc2VkKCJ5LWF4aXMtbGFiZWwiLCEwKS5hdHRyKCJjbGlwLXBhdGgiLCh0PT4idXJsKCMiK18odCkrIikiKSkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4IiwtKGUud2lkdGgtMjAtMSkpLmF0dHIoInkiLGMvMikuYXR0cigidHJhbnNmb3JtIix0LnJvdGF0ZVN0cig5MCwtKGUud2lkdGgtMjAtMSksYy8yKSkudGV4dCgobj0+dC5tZXRyaWNOYW1lKGUudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc1tuXSkpKS5hcHBlbmQoInRpdGxlIikudGV4dCgobj0+dC5tZXRyaWNOYW1lKGUudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc1tuXSkpKTtjb25zdCB2PXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi5jZWxsIikuZGF0YShGbChuLGkpKS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNlbGwiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLCgoW2Usbl0pPT50LnRyYW5zbGF0ZVN0cihhKGUpLHMobikpKSk7di5hcHBlbmQoImciKS5jbGFzc2VkKCJmcmFtZSIsITApLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC01KS5hdHRyKCJ5IiwtNSkuYXR0cigid2lkdGgiLGwrMTApLmF0dHIoImhlaWdodCIsYysxMCkuYXR0cigic3Ryb2tlIiwiIzAwMCIpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO2xldCBiPW51bGw7dm9pZCAwIT09ZS5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleCYmKGI9Y0UoKS5kb21haW4odGhpcy5fY29sRXh0ZW50KHRoaXMub3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgpKS5yYW5nZShbdGhpcy5vcHRpb25zLm1pbkNvbG9yLHRoaXMub3B0aW9ucy5tYXhDb2xvcl0pLmludGVycG9sYXRlKGtwKSk7Y29uc3QgeD12b2lkIDA9PT1lLm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4PygpPT4icmVkIjooe3Nlc3Npb25Hcm91cDp0fSk9PmIodGhpcy5fY29sVmFsdWUodCxlLm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4KSk7ZnVuY3Rpb24gdyh0LG4pe3JldHVybiB1W25dKGUuX2NvbFZhbHVlKHQsbikpfWZ1bmN0aW9uIFModCxuKXtyZXR1cm4gaFtuXShlLl9tZXRyaWNWYWx1ZSh0LG4pKX1jb25zdFtNLEUsVF09KGZ1bmN0aW9uIEModCxyKXtjb25zdCBvPXQuc2VsZWN0QWxsKCIuZGF0YS1tYXJrZXIiKS5kYXRhKCgoW3Qsbl0pPT5lLnNlc3Npb25Hcm91cHMuZmlsdGVyKChpPT52b2lkIDAhPT1lLl9jb2xWYWx1ZShpLHQpJiZ2b2lkIDAhPT1lLl9tZXRyaWNWYWx1ZShpLG4pKSkubWFwKChlPT4oe2NvbDp0LG1ldHJpYzpuLHNlc3Npb25Hcm91cDplLHg6dyhlLHQpLHk6UyhlLG4pLHNlc3Npb25Hcm91cE1hcmtlcnM6bnVsbH0pKSkpKS5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuY2xhc3NlZCgiZGF0YS1tYXJrZXIiLCEwKS5hdHRyKCJjeCIsKCh7eDp0fSk9PnQpKS5hdHRyKCJjeSIsKCh7eTp0fSk9PnQpKS5hdHRyKCJyIiwyKS5hdHRyKCJmaWxsIixyKSxhPW5ldyBNYXA7ZS5zZXNzaW9uR3JvdXBzLmZvckVhY2goKHQ9PnthLnNldCh0LFtdKX0pKSxvLmVhY2goKGZ1bmN0aW9uKHQpe2EuZ2V0KHQuc2Vzc2lvbkdyb3VwKS5wdXNoKHRoaXMpfSkpLG8uZWFjaCgodD0+e2NvbnN0IGU9YS5nZXQodC5zZXNzaW9uR3JvdXApO3Quc2Vzc2lvbkdyb3VwTWFya2Vycz1uZXcgU2V0KGUpfSkpO2NvbnN0IHM9bi5tYXAoKHQ9PmkubWFwKChlPT5vLmZpbHRlcigobj0+bi5jb2w9PXQmJm4ubWV0cmljPT1lKSkpKSkpO3JldHVybltvLHMsYV19KSh2LmFwcGVuZCgiZyIpLHgpO2NvbnN0IEE9bi5tYXAoKHQ9PmkubWFwKChlPT4oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49W107cmV0dXJuIEVbdF1bZV0uZWFjaCgoZnVuY3Rpb24oKXtuLnB1c2godGhpcyl9KSksdHkoKS54KCh0PT5EdSh0KS5kYXR1bSgpLngpKS55KCh0PT5EdSh0KS5kYXR1bSgpLnkpKS5hZGRBbGwobil9KSh0LGUpKSkpKTtsZXQgaz1udWxsO1IoKSYmKGs9di5maWx0ZXIoKHQ9PkNlLmV4cG9ydHMuaXNFcXVhbCh0LGUuX2JydXNoZWRDZWxsSW5kZXgpKSksY29uc29sZS5hc3NlcnQoMT09ay5zaXplKCksaykpO2xldCBQPW5ldyBTZXQoTS5ub2RlcygpKTtmdW5jdGlvbiBMKCl7bGV0IG49bmV3IFNldChNLm5vZGVzKCkpOyhmdW5jdGlvbiBpKCl7cmV0dXJuIVIoKXx8ZS5fYnJ1c2hTZWxlY3Rpb25bMF1bMF09PT1lLl9icnVzaFNlbGVjdGlvblsxXVswXXx8ZS5fYnJ1c2hTZWxlY3Rpb25bMF1bMV09PT1lLl9icnVzaFNlbGVjdGlvblsxXVsxXX0pKCl8fChuPShmdW5jdGlvbiByKGUsbil7Y29uc29sZS5hc3NlcnQobnVsbCE9PWUpLGNvbnNvbGUuYXNzZXJ0KG51bGwhPT1uKTtjb25zdFtpLHJdPWUsbz1uZXcgU2V0O3JldHVybiB0LnF1YWRUcmVlVmlzaXRQb2ludHNJblJlY3QoQVtpXVtyXSxuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdLCh0PT57RHUodCkuZGF0dW0oKS5zZXNzaW9uR3JvdXBNYXJrZXJzLmZvckVhY2goKHQ9PntvLmFkZCh0KX0pKX0pKSxvfSkoZS5fYnJ1c2hlZENlbGxJbmRleCxlLl9icnVzaFNlbGVjdGlvbikpLHhoKEFycmF5LmZyb20odC5maWx0ZXJTZXQobiwodD0+IVAuaGFzKHQpKSkpKS5hdHRyKCJmaWxsIix4KSx4aChBcnJheS5mcm9tKHQuZmlsdGVyU2V0KFAsKHQ9PiFuLmhhcyh0KSkpKSkuYXR0cigiZmlsbCIsIiNkZGQiKSxQPW59TCgpO2NvbnN0IEk9dmcoKS5leHRlbnQoW1stNCwtNF0sW2wtMSs1LTEsYy0xKzUtMV1dKS5vbigic3RhcnQiLChmdW5jdGlvbigpe1IoKSYmay5ub2RlKCkhPXRoaXMmJkkubW92ZShrLG51bGwpLE4odGhpcyl9KSkub24oImJydXNoIiwoZnVuY3Rpb24oKXtOKHRoaXMpfSkpLm9uKCJlbmQiLChmdW5jdGlvbigpe04odGhpcyl9KSk7ZnVuY3Rpb24gTih0KXtjb25zdCBuPV9nKHQpOyFSKCkmJm51bGw9PT1ufHxSKCkmJnQ9PT1rLm5vZGUoKSYmQ2UuZXhwb3J0cy5pc0VxdWFsKG4sZS5fYnJ1c2hTZWxlY3Rpb24pfHwoZS5fYnJ1c2hTZWxlY3Rpb249bixudWxsIT09bj8oaz1EdSh0KSxlLl9icnVzaGVkQ2VsbEluZGV4PWsuZGF0dW0oKSk6KGs9bnVsbCxlLl9icnVzaGVkQ2VsbEluZGV4PW51bGwpLEwoKSl9ZnVuY3Rpb24gUigpe3JldHVybiBudWxsIT09ZS5fYnJ1c2hlZENlbGxJbmRleCYmbnVsbCE9PWUuX2JydXNoU2VsZWN0aW9ufXYuY2FsbChJKSxSKCkmJkkubW92ZShrLGUuX2JydXNoU2VsZWN0aW9uKTtsZXQgTz1udWxsLHo9bnVsbDtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKHo9eGgoVC5nZXQodGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCkpLmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITApKSx2Lm9uKCJjbGljayIsKGZ1bmN0aW9uKCl7Y29uc3QgdD1PPT09ej9udWxsOk87aWYodD09PXopcmV0dXJuO251bGwhPT16JiZ6LmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITEpLHo9dCxudWxsIT09eiYmei5jbGFzc2VkKCJzZWxlY3RlZC1tYXJrZXIiLCEwKTtjb25zdCBuPW51bGw9PT16P251bGw6ei5kYXR1bSgpLnNlc3Npb25Hcm91cDtlLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW59KSkub24oIm1vdXNlbW92ZSBtb3VzZWVudGVyIiwoZnVuY3Rpb24oW24saV0pe2NvbnN0W3Isb109YmgodGhpcyksYT0oZnVuY3Rpb24gcyhlLG4saSxyLG8pe2xldCBhPTEvMCxzPW51bGw7aWYodC5xdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrKEFbZV1bbl0saSxyLG8sKCh0LGUpPT57aWYoUC5oYXModCkmJmU8YSl7Y29uc3Qgbj1EdSh0KS5kYXR1bSgpO2E9ZSxzPW4uc2Vzc2lvbkdyb3VwfX0pKSxudWxsPT09cylyZXR1cm4gbnVsbDtyZXR1cm4geGgoVC5nZXQocykpfSkobixpLHIsbywyMCk7TyE9PWEmJihudWxsIT09TyYmTy5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITEpLE89YSxudWxsIT09Tz8oTy5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITApLGUuY2xvc2VzdFNlc3Npb25Hcm91cD1PLmRhdHVtKCkuc2Vzc2lvbkdyb3VwKTplLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCl9KSkub24oIm1vdXNlbGVhdmUiLChmdW5jdGlvbihbdCxuXSl7bnVsbCE9PU8mJihPLmNsYXNzZWQoImNsb3Nlc3QtbWFya2VyIiwhMSksTz1udWxsLGUuY2xvc2VzdFNlc3Npb25Hcm91cD1udWxsKX0pKSx0aGlzLl9zdmcuc2VsZWN0QWxsKCIqIikuY2xhc3NlZCgidGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3QiLCEwKX1fY2VsbFNjYWxlKHQsZSl7Y29uc3Qgbj10aGlzLl9jb2xFeHRlbnQodCksaT1jRSgpLmRvbWFpbihuKS5yYW5nZShlKTtpZigiTElORUFSIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXJldHVybiBpO2lmKCJMT0ciPT09dGhpcy5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGUpcmV0dXJuIG5bMF08PTAmJm5bMV0+PTA/aTp5RSgpLmRvbWFpbihuKS5yYW5nZShlKTtpZigiUVVBTlRJTEUiPT09dGhpcy5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGUpe2NvbnN0IG49KGVbMV0tZVswXSkvMTksaT1LbCgyMCkubWFwKCh0PT5lWzBdK24qdCkpO3JldHVybiBDRSgpLmRvbWFpbihDZS5leHBvcnRzLnVuaXEodGhpcy5zZXNzaW9uR3JvdXBzLm1hcCgoZT0+dGhpcy5fY29sVmFsdWUoZSx0KSkpKSkucmFuZ2UoaSl9aWYoIk5PTl9OVU1FUklDIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXJldHVybiBLTSgpLmRvbWFpbihDZS5leHBvcnRzLnVuaXEodGhpcy5zZXNzaW9uR3JvdXBzLm1hcCgoZT0+dGhpcy5fY29sVmFsdWUoZSx0KSkpLnNvcnQoKSkpLnJhbmdlKGUpLnBhZGRpbmcoLjEpO3Rocm93IlVua25vd24gc2NhbGUgZm9yIGNvbHVtbjogIit0KyIuIG9wdGlvbnM6ICIrdGhpcy5vcHRpb25zfV9jb2xWYWx1ZSh0LGUpe3JldHVybiBXSnQodGhpcy52aXNpYmxlU2NoZW1hLHQsZSl9X21ldHJpY1ZhbHVlKHQsZSl7cmV0dXJuIEdKdCh0aGlzLnZpc2libGVTY2hlbWEsdCxlKX1fY29sRXh0ZW50KHQpe3JldHVybiBWSnQodGhpcy52aXNpYmxlU2NoZW1hLHRoaXMuc2Vzc2lvbkdyb3Vwcyx0KX19O0IwdC50ZW1wbGF0ZT14ZWAKICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CiAgICAgIDxzdmcgaWQ9InN2ZyI+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICBzdmcgewogICAgICAgIGZvbnQ6IDEwcHggc2Fucy1zZXJpZjsKICAgICAgfQoKICAgICAgdGV4dCB7CiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAuZnJhbWUgcmVjdCB7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjbG9zZXN0IGRhdGEgcG9pbnQgbWFya2VyIHRvIHRoZSBtb3VzZSBwb2ludGVyLiBXZSB1c2UgIWltcG9ydGFudAogICAgICAgICB0byBvdmVycmlkZSB0aGUgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBzdHlsZSBvZiBhIG1hcmtlci4KICAgICAgKi8KICAgICAgLmNsb3Nlc3QtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0YSBwb2ludCBtYXJrZXIuIFdlIHVzZSAhaW1wb3J0YW50IHRvCiAgICAgICAgIG92ZXJyaWRlIHRoZSBpbmxpbmUgc3R5bGUgdGhhdCBzZXRzIHRoZSByZWd1bGFyIHN0eWxlIG9mIGEgbWFya2VyLiAqLwogICAgICAuc2VsZWN0ZWQtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogIzBmMCAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwidmlzaWJsZVNjaGVtYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sQjB0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCMHQucHJvdG90eXBlLCJvcHRpb25zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCMHQucHJvdG90eXBlLCJzZWxlY3RlZFNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiY2xvc2VzdFNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixIVE1MRWxlbWVudCldLEIwdC5wcm90b3R5cGUsIl9jb250YWluZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiX3N2ZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxCMHQucHJvdG90eXBlLCJ3aWR0aCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxCMHQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiX2JydXNoZWRDZWxsSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQjB0LnByb3RvdHlwZSwiX2JydXNoU2VsZWN0aW9uIix2b2lkIDApLHQoW2EoInNlc3Npb25Hcm91cHMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sQjB0LnByb3RvdHlwZSwiX3Nlc3Npb25Hcm91cHNDaGFuZ2VkIixudWxsKSx0KFthKCJ2aXNpYmxlU2NoZW1hLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEIwdC5wcm90b3R5cGUsIl92aXNpYmxlU2NoZW1hQ2hhbmdlZCIsbnVsbCksdChbYSgib3B0aW9ucy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxCMHQucHJvdG90eXBlLCJfcmVkcmF3IixudWxsKSxCMHQ9dChbaSgidGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3QiKV0sQjB0KTtsZXQgSDB0PWNsYXNzIGV4dGVuZHMgd2V7X2Nsb3Nlc3RPclNlbGVjdGVkKHQsZSl7cmV0dXJuIG51bGwhPT10P3Q6ZX19O0gwdC50ZW1wbGF0ZT14ZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dCBvcmllbnRhdGlvbj0idmVydGljYWwiPgogICAgICA8IS0tIENvbnRyb2xzIGJlaGF2aW9yIG9mIHRoZSBzY2F0dGVyIHBsb3QgbWF0cml4CiAgICAgICAgICAgICBvdXRwdXRzIHRoZSBjb25maWd1cmVkIG9wdGlvbnMgdG8gdGhlIF9vcHRpb25zIHByb3BlcnR5LiAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgIG9wdGlvbnM9Int7X29wdGlvbnN9fSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzPgogICAgICA8IS0tIFRoZSBhY3R1YWwgc2NhdHRlciBwbG90IG1hdHJpeCAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90CiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0icGxvdCIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgc2VsZWN0ZWQtc2Vzc2lvbi1ncm91cD0ie3tfc2VsZWN0ZWRHcm91cH19IgogICAgICAgIGNsb3Nlc3Qtc2Vzc2lvbi1ncm91cD0ie3tfY2xvc2VzdEdyb3VwfX0iCiAgICAgICAgb3B0aW9ucz0iW1tfb3B0aW9uc11dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3Q+CiAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0idmFsdWVzIgogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX2Nsb3Nlc3RPclNlbGVjdGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VzdEdyb3VwLCBfc2VsZWN0ZWRHcm91cCldXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXM+CiAgICAgIDwhLS0gU2hvd3Mgc2Vzc2lvbiBncm91cCBkZXRhaWxzIGZvciB0aGUgY2xpY2tlZCBtYXJrZXIuIC0tPgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGlkPSJkZXRhaWxzIgogICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX3NlbGVjdGVkR3JvdXBdXSIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzPgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgLnNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgIH0KICAgICAgI2NvbnRyb2xzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjcGxvdCB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgI3ZhbHVlcyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiAxMTVweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICAgICNkZXRhaWxzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICB2YWFkaW4tc3BsaXQtbGF5b3V0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIMHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEgwdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEgwdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEgwdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksSDB0PXQoW2koInRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3IildLEgwdCk7bGV0IEYwdD1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zZWxlY3RlZFRhYj0wfX07RjB0LnRlbXBsYXRlPXhlYAogICAgPHBhcGVyLWhlYWRlci1wYW5lbD4KICAgICAgPHBhcGVyLXRvb2xiYXIgc2xvdD0iaGVhZGVyIiBjbGFzcz0idGFiLWJhciI+CiAgICAgICAgPHBhcGVyLXRhYnMgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVGFifX0iIHNsb3Q9InRvcCI+CiAgICAgICAgICA8IS0tIHZpZXctaWQgY2FuIGJlIHVzZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMgdG8gbG9jYXRlIGEgdGFiLgogICAgICAgICAgICAgICBJdCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIHJvb3QgZWxlbWVudCBpbXBsZW1lbnRpbmcgdGhlIHZpZXcKICAgICAgICAgICAgICAgd2l0aG91dCB0aGUgJ3RmLWhwYXJhbXMtJyBwcmVmaXguIC0tPgogICAgICAgICAgPHBhcGVyLXRhYiB2aWV3LWlkPSJ0YWJsZS12aWV3Ij4gVEFCTEUgVklFVyA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxwYXBlci10YWIgdmlldy1pZD0icGFyYWxsZWwtY29vcmRzLXZpZXciPgogICAgICAgICAgICBQQVJBTExFTCBDT09SRElOQVRFUyBWSUVXCiAgICAgICAgICA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxwYXBlci10YWIgdmlldy1pZD0ic2NhdHRlci1wbG90LW1hdHJpeC12aWV3Ij4KICAgICAgICAgICAgU0NBVFRFUiBQTE9UIE1BVFJJWCBWSUVXCiAgICAgICAgICA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlbHAtYW5kLWZlZWRiYWNrIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2J1Z1JlcG9ydFVybF1dIj4KICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZiQ9IltbYnVnUmVwb3J0VXJsXV0iCiAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICAgIGlkPSJidWctcmVwb3J0IgogICAgICAgICAgICAgICAgICByYWlzZWQKICAgICAgICAgICAgICAgICAgdGl0bGU9IlNlbmQgYSBidWcgcmVwb3J0IG9yIGZlYXR1cmUgcmVxdWVzdCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgQnVnIFJlcG9ydCAvIEZlYXR1cmUgUmVxdWVzdAogICAgICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaGVscFVybF1dIj4KICAgICAgICAgICAgICA8YSBocmVmJD0iW1toZWxwVXJsXV0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPgogICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgIGljb249ImhlbHAtb3V0bGluZSIKICAgICAgICAgICAgICAgICAgdGl0bGU9IlZpZXcgZG9jdW1lbnRhdGlvbiIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9wYXBlci10YWJzPgogICAgICA8L3BhcGVyLXRvb2xiYXI+CiAgICAgIDxpcm9uLXBhZ2VzIHNlbGVjdGVkPSJbW19zZWxlY3RlZFRhYl1dIiBjbGFzcz0iZml0IHRhYi12aWV3Ij4KICAgICAgICA8ZGl2IGlkPSIwIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXRhYmxlLXZpZXcKICAgICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgICAgICBlbmFibGUtc2hvdy1tZXRyaWNzCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtdGFibGUtdmlldz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSIxIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy12aWV3CiAgICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSIyIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldwogICAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3PgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tcGFnZXM+CiAgICA8L3BhcGVyLWhlYWRlci1wYW5lbD4KCiAgICA8c3R5bGU+CiAgICAgIC50YWItdmlldyB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIC50YWItYmFyIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoCiAgICAgICAgICAtLXRiLXRvb2xiYXItYmFja2dyb3VuZC1jb2xvciwKICAgICAgICAgIHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpCiAgICAgICAgKTsKICAgICAgfQogICAgICAudGFiIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgcGFwZXItdGFicyB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvcjogd2hpdGU7CiAgICAgICAgLS1wYXBlci10YWJzLWNvbnRlbnQ6IHsKICAgICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIH0KICAgICAgfQogICAgICB0Zi1ocGFyYW1zLXRhYmxlLXZpZXcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuaGVscC1hbmQtZmVlZGJhY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyAvKiBFbnN1cmUgdGhhdCBpY29ucyBzdGF5IGFsaWduZWQgKi8KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICAgICNidWctcmVwb3J0IHsKICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrOwogICAgICAgIGJhY2tncm91bmQ6IHJlZDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmRzOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXgtd2lkdGg6IDE1MHB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KICAgICAgLmhlbHAtYW5kLWZlZWRiYWNrIGEgewogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxGMHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEYwdC5wcm90b3R5cGUsImhlbHBVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRjB0LnByb3RvdHlwZSwiYnVnUmVwb3J0VXJsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEYwdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEYwdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEYwdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sRjB0LnByb3RvdHlwZSwiX3NlbGVjdGVkVGFiIix2b2lkIDApLEYwdD10KFtpKCJ0Zi1ocGFyYW1zLXNlc3Npb25zLXBhbmUiKV0sRjB0KTtsZXQgVjB0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtyZWxvYWQoKXt0aGlzLiRbInF1ZXJ5LXBhbmUiXS5yZWxvYWQoKX19O1YwdC50ZW1wbGF0ZT14ZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dD4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2lkZWJhciI+CiAgICAgICAgPHRmLWhwYXJhbXMtcXVlcnktcGFuZQogICAgICAgICAgaWQ9InF1ZXJ5LXBhbmUiCiAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgY29uZmlndXJhdGlvbj0ie3tfY29uZmlndXJhdGlvbn19IgogICAgICAgICAgc2Vzc2lvbi1ncm91cHM9Int7X3Nlc3Npb25Hcm91cHN9fSIKICAgICAgICAgIGRhdGEtbG9hZGVkLXdpdGgtbm9uLWVtcHR5LWhwYXJhbXM9Int7X2RhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zfX0iCiAgICAgICAgICBkYXRhLWxvYWRlZC13aXRoLWVtcHR5LWhwYXJhbXM9Int7X2RhdGFMb2FkZWRXaXRoRW1wdHlIcGFyYW1zfX0iCiAgICAgICAgPgogICAgICAgIDwvdGYtaHBhcmFtcy1xdWVyeS1wYW5lPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFMb2FkZWRXaXRoRW1wdHlIcGFyYW1zXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGhwYXJhbXMgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGhwYXJhbXMgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgRXZlbnQgZmlsZXMgYXJlIHN0aWxsIGJlaW5nIGxvYWRlZCAodHJ5IHJlbG9hZGluZyB0aGlzIHBhZ2UpLgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zXV0iPgogICAgICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbnMtcGFuZQogICAgICAgICAgICBpZD0ic2Vzc2lvbnMtcGFuZSIKICAgICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICAgIGhlbHAtdXJsPSJbW2hlbHBVcmxdXSIKICAgICAgICAgICAgYnVnLXJlcG9ydC11cmw9IltbYnVnUmVwb3J0VXJsXV0iCiAgICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgICBjb25maWd1cmF0aW9uPSJbW19jb25maWd1cmF0aW9uXV0iCiAgICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW19zZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbnMtcGFuZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIGhwYXJhbXMtc3BsaXQtbGF5b3V0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLnNpZGViYXIgewogICAgICAgIHdpZHRoOiAyMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBtaW4td2lkdGg6IDEwJTsKICAgICAgfQoKICAgICAgLmNlbnRlciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHdpZHRoOiA4MCU7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQoKICAgICAgYSB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWxpbmspOwogICAgICB9CgogICAgICBhOnZpc2l0ZWQgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rLXZpc2l0ZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsTUp0KV0sVjB0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxWMHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxWMHQucHJvdG90eXBlLCJoZWxwVXJsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFYwdC5wcm90b3R5cGUsImJ1Z1JlcG9ydFVybCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxWMHQucHJvdG90eXBlLCJfY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sVjB0LnByb3RvdHlwZSwiX3Nlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxWMHQucHJvdG90eXBlLCJfZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxWMHQucHJvdG90eXBlLCJfZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXMiLHZvaWQgMCksVjB0PXQoW2koInRmLWhwYXJhbXMtbWFpbiIpXSxWMHQpO2NvbnN0IFUwdD0idHJ1ZSI9PT1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldCgidGVuc29yYm9hcmRDb2xhYiIpO2xldCBqMHQ9Y2xhc3MgZXh0ZW5kcyhjcih3ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9iYWNrZW5kPW5ldyBNSnQoRXIoKS5wbHVnaW5Sb3V0ZSgiaHBhcmFtcyIsIiIpLG5ldyBicixVMHQpfXJlbG9hZCgpe3RoaXMuJFsiaHBhcmFtcy1tYWluIl0ucmVsb2FkKCl9fTtqMHQudGVtcGxhdGU9eGVgCiAgICA8IS0tIFRlbnNvckJvYXJkIGRvZXMgbm90IHNwZWNpZnkgYW4gZXhwZXJpbWVudE5hbWUuIEN1cnJlbnRseSBpdCBvbmx5CiAgICAgICAgIHN1cHBvcnRzIG9uZSBleHBlcmltZW50IHBlciBpbnZvY2F0aW9uLiAtLT4KICAgIDx0Zi1ocGFyYW1zLW1haW4KICAgICAgaWQ9ImhwYXJhbXMtbWFpbiIKICAgICAgYmFja2VuZD0iW1tfYmFja2VuZF1dIgogICAgICBleHBlcmltZW50LW5hbWU9IiIKICAgID4KICAgIDwvdGYtaHBhcmFtcy1tYWluPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sajB0LnByb3RvdHlwZSwiX2JhY2tlbmQiLHZvaWQgMCksajB0PXQoW2koInRmLWhwYXJhbXMtZGFzaGJvYXJkIildLGowdCk7bGV0IEcwdD1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuYWN0dWFsU2l6ZT0hMSx0aGlzLmJyaWdodG5lc3NBZGp1c3RtZW50PS41LHRoaXMuY29udHJhc3RQZXJjZW50YWdlPTAsdGhpcy5fbWV0YWRhdGFDYW5jZWxsZXI9bmV3IHhPLHRoaXMuX2ltYWdlQ2FuY2VsbGVyPW5ldyB4Tyx0aGlzLl9zdGVwcz1bXSx0aGlzLl9pc0ltYWdlTG9hZGluZz0hMX1nZXQgX3J1bkNvbG9yKCl7cmV0dXJuIF9PKHRoaXMucnVuKX1nZXQgX2hhc0F0TGVhc3RPbmVTdGVwKCl7dmFyIHQ9dGhpcy5fc3RlcHM7cmV0dXJuISF0JiZ0Lmxlbmd0aD4wfWdldCBfaGFzTXVsdGlwbGVTdGVwcygpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiEhdCYmdC5sZW5ndGg+MX1nZXQgX2N1cnJlbnRTdGVwKCl7cmV0dXJuIHRoaXMuX3N0ZXBzW3RoaXMuX3N0ZXBJbmRleF18fG51bGx9Z2V0IF9zdGVwVmFsdWUoKXt2YXIgdD10aGlzLl9jdXJyZW50U3RlcDtyZXR1cm4gdD90LnN0ZXA6MH1nZXQgX2N1cnJlbnRXYWxsVGltZSgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwO3JldHVybiB0P1NPKHQud2FsbF90aW1lKToiIn1nZXQgX21heFN0ZXBJbmRleCgpe3JldHVybiB0aGlzLl9zdGVwcy5sZW5ndGgtMX1nZXQgX3NhbXBsZVRleHQoKXtyZXR1cm5gJHt0aGlzLnNhbXBsZSsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXtyZXR1cm4gdGhpcy5vZlNhbXBsZXM+MX1fZ2V0QXJpYUV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuYWN0dWFsU2l6ZT8idHJ1ZSI6ImZhbHNlIn1hdHRhY2hlZCgpe3RoaXMucmVsb2FkKCl9cmVsb2FkKCl7aWYoIXRoaXMuaXNBdHRhY2hlZClyZXR1cm47dGhpcy5fbWV0YWRhdGFDYW5jZWxsZXIuY2FuY2VsQWxsKCk7Y29uc3QgdD1MTyhFcigpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW1hZ2VzIikse3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOnRoaXMuc2FtcGxlfSksZT10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixlKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZS5sZW5ndGgtMSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtsZXQgZT1FcigpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW5kaXZpZHVhbEltYWdlIik7cmV0dXJuIGU9TE8oZSx7dHM6dC53YWxsX3RpbWV9KSxlKz0iJiIrdC5xdWVyeSx7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsdXJsOmV9fV91cGRhdGVJbWFnZVVybCgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwLGU9dGhpcy5icmlnaHRuZXNzQWRqdXN0bWVudCxuPXRoaXMuY29udHJhc3RQZXJjZW50YWdlO2lmKCF0KXJldHVybjtjb25zdCBpPW5ldyBJbWFnZTt0aGlzLl9pbWFnZUNhbmNlbGxlci5jYW5jZWxBbGwoKSxpLm9ubG9hZD1pLm9uZXJyb3I9dGhpcy5faW1hZ2VDYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PntpZih0LmNhbmNlbGxlZClyZXR1cm47Y29uc3QgZT10aGlzLiQkKCIjbWFpbi1pbWFnZS1jb250YWluZXIiKTtlLnRleHRDb250ZW50PSIiLGVyKGUpLmFwcGVuZENoaWxkKGkpLHRoaXMuc2V0KCJfaXNJbWFnZUxvYWRpbmciLCExKX0pKS5iaW5kKHRoaXMpLGkuc3R5bGUuZmlsdGVyPWBjb250cmFzdCgke259JSkgYCxpLnN0eWxlLmZpbHRlcis9YGJyaWdodG5lc3MoJHtlfSlgLHRoaXMuc2V0KCJfaXNJbWFnZUxvYWRpbmciLCEwKSxpLnNyYz10LnVybH1faGFuZGxlVGFwKHQpe3RoaXMuc2V0KCJhY3R1YWxTaXplIiwhdGhpcy5hY3R1YWxTaXplKX1fdG9Mb2NhbGVTdHJpbmcodCl7cmV0dXJuIHQudG9Mb2NhbGVTdHJpbmcoKX19O0cwdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXNdXSI+CiAgICAgICAgPGRpdj5zYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIgogICAgICAgICAgICAgID5bW190b0xvY2FsZVN0cmluZyhfc3RlcFZhbHVlKV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0IGRhdGV0aW1lIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50V2FsbFRpbWVdXSI+CiAgICAgICAgICAgICAgW1tfY3VycmVudFdhbGxUaW1lXV0KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwgcmlnaHQiPgogICAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZSBoaWRkZW4kPSJbWyFfaXNJbWFnZUxvYWRpbmddXSI+CiAgICAgICAgICAgIDwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0ic3RlcHMiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfbWF4U3RlcEluZGV4XV0iCiAgICAgICAgICAgIG1heC1tYXJrZXJzPSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7X3N0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPCEtLSBTZW1hbnRpY2FsbHkgYSBidXR0b24gYnV0IDxpbWc+IGluc2lkZSBhIDxidXR0b24+IGRpc2FsbG93cyB1c2VyIHRvIGRvCiAgICBhbiBpbnRlcmVzdGluZyBvcGVyYXRpb24gbGlrZSAiQ29weSBJbWFnZSIgaW4gbm9uLUNocm9taXVtIGJyb3dzZXJzLiAtLT4KICAgIDxhCiAgICAgIGlkPSJtYWluLWltYWdlLWNvbnRhaW5lciIKICAgICAgcm9sZT0iYnV0dG9uIgogICAgICBhcmlhLWxhYmVsPSJUb2dnbGUgYWN0dWFsIHNpemUiCiAgICAgIGFyaWEtZXhwYW5kZWQkPSJbW19nZXRBcmlhRXhwYW5kZWQoYWN0dWFsU2l6ZSldXSIKICAgICAgb24tdGFwPSJfaGFuZGxlVGFwIgogICAgPjwvYT4KCiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLyoqIE1ha2UgYnV0dG9uIGEgZGl2LiAqLwogICAgICBidXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBHZXQgcmlkIG9mIGRvdHRlZCBsaW5lIGluc2lkZSBidXR0b24uICovCiAgICAgIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBTaW11bGF0ZSBDaHJvbWUncyBvdXRlciBnbG93IG9uIGJ1dHRvbiB3aGVuIGZvY3VzZWQuICovCiAgICAgIGJ1dHRvbjotbW96LWZvY3VzcmluZyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDFweCAycHggSGlnaGxpZ2h0OwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAwIDE1cHggNDBweCAwOwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qKiBXaGVuIGFjdHVhbCBzaXplIHNob3duIGlzIG9uLCB1c2UgdGhlIGFjdHVhbCBpbWFnZSB3aWR0aC4gKi8KICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiBub25lOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSAjbWFpbi1pbWFnZS1jb250YWluZXIgaW1nIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgcGFwZXItc3Bpbm5lci1saXRlIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOwogICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgIH0KCiAgICAgICNzdGVwcyB7CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyoKICAgICAgICAgKiAzMSBjb21lcyBmcm9tIGFkZGluZyBhIHBhZGRpbmcgb2YgMTVweCBmcm9tIGJvdGggc2lkZXMgb2YgdGhlCiAgICAgICAgICogcGFwZXItc2xpZGVyLCBzdWJ0cmFjdGluZyAxcHggc28gdGhhdCB0aGUgc2xpZGVyIHdpZHRoIGFsaWducwogICAgICAgICAqIHdpdGggdGhlIGltYWdlICh0aGUgbGFzdCBzbGlkZXIgbWFya2VyIHRha2VzIHVwIDFweCksIGFuZAogICAgICAgICAqIGFkZGluZyAycHggdG8gYWNjb3VudCBmb3IgYSBib3JkZXIgb2YgMXB4IG9uIGJvdGggc2lkZXMgb2YKICAgICAgICAgKiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICAgICAgICovCiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDMxcHgpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQoKICAgICAgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiAxMDI0cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgICNtYWluLWltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7CiAgICAgICAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEcwdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxHMHQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sRzB0LnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsIm9mU2FtcGxlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHMHQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxHMHQucHJvdG90eXBlLCJhY3R1YWxTaXplIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsImJyaWdodG5lc3NBZGp1c3RtZW50Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsImNvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLEcwdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEcwdC5wcm90b3R5cGUsIl9tZXRhZGF0YUNhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxHMHQucHJvdG90eXBlLCJfaW1hZ2VDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxHMHQucHJvdG90eXBlLCJfc3RlcHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEcwdC5wcm90b3R5cGUsIl9zdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxHMHQucHJvdG90eXBlLCJfaXNJbWFnZUxvYWRpbmciLHZvaWQgMCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc011bHRpcGxlU3RlcHMiLG51bGwpLHQoW3MoIl9zdGVwcyIsIl9zdGVwSW5kZXgiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxHMHQucHJvdG90eXBlLCJfY3VycmVudFN0ZXAiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9zdGVwVmFsdWUiLG51bGwpLHQoW3MoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9jdXJyZW50V2FsbFRpbWUiLG51bGwpLHQoW3MoIl9zdGVwcyIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9tYXhTdGVwSW5kZXgiLG51bGwpLHQoW3MoInNhbXBsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEcwdC5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJvZlNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRzB0LnByb3RvdHlwZSwiX2hhc011bHRpcGxlU2FtcGxlcyIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxHMHQucHJvdG90eXBlLCJyZWxvYWQiLG51bGwpLHQoW2EoIl9jdXJyZW50U3RlcCIsImJyaWdodG5lc3NBZGp1c3RtZW50IiwiY29udHJhc3RQZXJjZW50YWdlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxHMHQucHJvdG90eXBlLCJfdXBkYXRlSW1hZ2VVcmwiLG51bGwpLEcwdD10KFtpKCJ0Zi1pbWFnZS1sb2FkZXIiKV0sRzB0KTtsZXQgVzB0PWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudD0xLHRoaXMuX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2U9MTAwLHRoaXMuX2JyaWdodG5lc3NBZGp1c3RtZW50PTEsdGhpcy5fY29udHJhc3RQZXJjZW50YWdlPTEwMCx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgYnJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZEltYWdlcygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKENlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9ZnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1lLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkSW1hZ2VzKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWltYWdlLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfV9yZXNldEJyaWdodG5lc3MoKXt0aGlzLl9icmlnaHRuZXNzQWRqdXN0bWVudD10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9X3Jlc2V0Q29udHJhc3QoKXt0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9dGhpcy5fZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZX1nZXQgX2JyaWdodG5lc3NJc0RlZmF1bHQoKXtyZXR1cm4gdGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9PT10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9Z2V0IF9jb250cmFzdElzRGVmYXVsdCgpe3JldHVybiB0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9PT10aGlzLl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIENlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LG9mU2FtcGxlczpufSkpKX1yZXR1cm4gTnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07dmFyIHEwdCxZMHQsWDB0O1cwdC50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19hY3R1YWxTaXplfX0iCiAgICAgICAgICAgICAgICA+U2hvdyBhY3R1YWwgaW1hZ2Ugc2l6ZTwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8aDMgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5CcmlnaHRuZXNzIGFkanVzdG1lbnQ8L2gzPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIiPgogICAgICAgICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgICAgIG1heD0iMiIKICAgICAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgICAgICBwaW4KICAgICAgICAgICAgICAgIHN0ZXA9IjAuMDEiCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tfYnJpZ2h0bmVzc0FkanVzdG1lbnR9fSIKICAgICAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfYnJpZ2h0bmVzc0FkanVzdG1lbnR9fSIKICAgICAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9IngtYnV0dG9uIgogICAgICAgICAgICAgICAgb24tdGFwPSJfcmVzZXRCcmlnaHRuZXNzIgogICAgICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2JyaWdodG5lc3NJc0RlZmF1bHRdXSIKICAgICAgICAgICAgICAgID5SZXNldDwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJ0b29sdGlwLWNvbnRhaW5lciI+Q29udHJhc3QgYWRqdXN0bWVudDwvaDM+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgICAgbWF4PSI1MDAiCiAgICAgICAgICAgICAgICBzbmFwcwogICAgICAgICAgICAgICAgcGluCiAgICAgICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICAgICAgdmFsdWU9Int7X2NvbnRyYXN0UGVyY2VudGFnZX19IgogICAgICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19jb250cmFzdFBlcmNlbnRhZ2V9fSIKICAgICAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9IngtYnV0dG9uIgogICAgICAgICAgICAgICAgb24tdGFwPSJfcmVzZXRDb250cmFzdCIKICAgICAgICAgICAgICAgIGRpc2FibGVkPSJbW19jb250cmFzdElzRGVmYXVsdF1dIgogICAgICAgICAgICAgICAgPlJlc2V0PC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3IKICAgICAgICAgICAgaWQ9InJ1bnMtc2VsZWN0b3IiCiAgICAgICAgICAgIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319IgogICAgICAgICAgPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBpbWFnZSBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaW1hZ2UgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWltYWdlLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iCiAgICAgICAgICAgICAgICAgIG9mLXNhbXBsZXM9IltbaXRlbS5vZlNhbXBsZXNdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgYWN0dWFsLXNpemU9IltbX2FjdHVhbFNpemVdXSIKICAgICAgICAgICAgICAgICAgYnJpZ2h0bmVzcy1hZGp1c3RtZW50PSJbW19icmlnaHRuZXNzQWRqdXN0bWVudF1dIgogICAgICAgICAgICAgICAgICBjb250cmFzdC1wZXJjZW50YWdlPSJbW19jb250cmFzdFBlcmNlbnRhZ2VdXSIKICAgICAgICAgICAgICAgID48L3RmLWltYWdlLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciBwYXBlci1zbGlkZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAucmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICB9CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgcGFwZXItYnV0dG9uW2Rpc2FibGVkXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7CiAgICAgIH0KICAgICAgLngtYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxXMHQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxXMHQucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFcwdC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxXMHQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVzB0LnByb3RvdHlwZSwiX2FjdHVhbFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVzB0LnByb3RvdHlwZSwiX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxXMHQucHJvdG90eXBlLCJfZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxXMHQucHJvdG90eXBlLCJfYnJpZ2h0bmVzc0FkanVzdG1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sVzB0LnByb3RvdHlwZSwiX2NvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxXMHQucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVzB0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxXMHQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX2JyaWdodG5lc3NBZGp1c3RtZW50IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFcwdC5wcm90b3R5cGUsIl9icmlnaHRuZXNzSXNEZWZhdWx0IixudWxsKSx0KFtzKCJfY29udHJhc3RQZXJjZW50YWdlIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFcwdC5wcm90b3R5cGUsIl9jb250cmFzdElzRGVmYXVsdCIsbnVsbCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVzB0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLFcwdD10KFtpKCJ0Zi1pbWFnZS1kYXNoYm9hcmQiKV0sVzB0KSwoZnVuY3Rpb24odCl7dFt0LkNBTkNFTExFRD0xXT0iQ0FOQ0VMTEVEIn0pKHEwdHx8KHEwdD17fSkpLChmdW5jdGlvbih0KXt0W3QuVkVSVEVYPTFdPSJWRVJURVgiLHRbdC5GQUNFPTJdPSJGQUNFIix0W3QuQ09MT1I9M109IkNPTE9SIn0pKFkwdHx8KFkwdD17fSkpLChmdW5jdGlvbih0KXt0LlZFUlRFWD0iZmxvYXQzMiIsdC5GQUNFPSJpbnQzMiIsdC5DT0xPUj0idWludDgifSkoWDB0fHwoWDB0PXt9KSk7Y2xhc3MgJDB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NhbmNlbGxlcj1uZXcgeE8sdGhpcy5fcmVxdWVzdE1hbmFnZXI9dH1yZWxvYWQodCxlLG4pe3JldHVybiB0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5fZmV0Y2hNZXRhZGF0YSh0LGUsbil9X2ZldGNoRGF0YUJ5U3RlcCh0LGUsbixpLHIsbyl7Y29uc3QgYT1FcigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL2RhdGEiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzplLHJ1bjp0LGNvbnRlbnRfdHlwZTpuLHNhbXBsZTpTdHJpbmcoaSksc3RlcDpTdHJpbmcocil9KSkscz1mdW5jdGlvbih0KXtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoLzM7bisrKXtsZXQgaT1bXTtmb3IobGV0IGU9MDtlPDM7ZSsrKWkucHVzaCh0WzMqbitlXSk7ZS5wdXNoKGkpfXJldHVybiBlfSxsPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybiBQcm9taXNlLnJlamVjdCh7Y29kZTpxMHQuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk7bGV0IGU9dC52YWx1ZTtzd2l0Y2gobil7Y2FzZSJWRVJURVgiOm8udmVydGljZXM9cyhuZXcgRmxvYXQzMkFycmF5KGUpKTticmVhaztjYXNlIkZBQ0UiOm8uZmFjZXM9cyhuZXcgSW50MzJBcnJheShlKSk7YnJlYWs7Y2FzZSJDT0xPUiI6by5jb2xvcnM9cyhuZXcgVWludDhBcnJheShlKSl9cmV0dXJuIG99KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLmZldGNoKGEse21ldGhvZDoiR0VUIixoZWFkZXJzOntyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixjb250ZW50VHlwZTpYMHRbbl19fSkudGhlbigodD0+dC5hcnJheUJ1ZmZlcigpKSkudGhlbihsKX1mZXRjaERhdGEodCxlLG4saSl7bGV0IHI9W10sbz1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyhZMHQpLmZvckVhY2goKGE9Pnt0LmNvbXBvbmVudHMmMTw8WTB0W2FdJiZyLnB1c2godGhpcy5fZmV0Y2hEYXRhQnlTdGVwKGUsbixhLGksdC5zdGVwLG8pKX0pKSxQcm9taXNlLmFsbChyKX1fZmV0Y2hNZXRhZGF0YSh0LGUsbil7dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgibWVzaCIsIi9tZXNoZXMiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzplLHJ1bjp0LHNhbXBsZTpufSkpLHI9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT50LmNhbmNlbGxlZD9Qcm9taXNlLnJlamVjdCh7Y29kZTpxMHQuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk6dC52YWx1ZSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5mZXRjaChpKS50aGVuKCh0PT50Lmpzb24oKSkpLnRoZW4ocikudGhlbih0aGlzLl9wcm9jZXNzTWV0YWRhdGEuYmluZCh0aGlzKSl9X3Byb2Nlc3NNZXRhZGF0YSh0KXtpZighdClyZXR1cm47Y29uc3QgZT1uZXcgTWFwO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT10W25dO2UuaGFzKGkuc3RlcCl8fGUuc2V0KGkuc3RlcCxbXSksZS5nZXQoaS5zdGVwKS5wdXNoKGkpfWxldCBuPVtdO3JldHVybiBlLmZvckVhY2goKHQ9PntsZXQgZT10aGlzLl9jcmVhdGVTdGVwRGF0dW0odFswXSk7bi5wdXNoKGUpfSkpLG59X2NyZWF0ZVN0ZXBEYXR1bSh0KXtyZXR1cm57d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsY29uZmlnOnQuY29uZmlnLGNvbnRlbnRfdHlwZTp0LmNvbnRlbnRfdHlwZSxjb21wb25lbnRzOnQuY29tcG9uZW50c319fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgMjAxMC0yMDIyIFRocmVlLmpzIEF1dGhvcnMKICAgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICAgICAqL2NvbnN0IEswdD0iMTM3IixaMHQ9e0xFRlQ6MCxNSURETEU6MSxSSUdIVDoyLFJPVEFURTowLERPTExZOjEsUEFOOjJ9LEowdD17Uk9UQVRFOjAsUEFOOjEsRE9MTFlfUEFOOjIsRE9MTFlfUk9UQVRFOjN9LFEwdD0xMDAsdDJ0PTMwMCxlMnQ9MzAxLG4ydD0zMDIsaTJ0PTMwMyxyMnQ9MzA0LG8ydD0zMDYsYTJ0PTMwNyxzMnQ9MWUzLGwydD0xMDAxLGMydD0xMDAyLHUydD0xMDAzLGgydD0xMDA0LGQydD0xMDA1LHAydD0xMDA2LGYydD0xMDA3LG0ydD0xMDA4LGcydD0xMDA5LF8ydD0xMDEyLHkydD0xMDE0LHYydD0xMDE1LGIydD0xMDE2LHgydD0xMDIwLHcydD0xMDIzLFMydD0xMDI2LE0ydD0xMDI3LEUydD0zMzc3NixUMnQ9MzM3NzcsQzJ0PTMzNzc4LEEydD0zMzc3OSxrMnQ9MzU4NDAsUDJ0PTM1ODQxLEwydD0zNTg0MixJMnQ9MzU4NDMsTjJ0PTM3NDkyLFIydD0zNzQ5NixPMnQ9Mzc4MDgsejJ0PTM3ODA5LEQydD0zNzgxMCxCMnQ9Mzc4MTEsSDJ0PTM3ODEyLEYydD0zNzgxMyxWMnQ9Mzc4MTQsVTJ0PTM3ODE1LGoydD0zNzgxNixHMnQ9Mzc4MTcsVzJ0PTM3ODE4LHEydD0zNzgxOSxZMnQ9Mzc4MjAsWDJ0PTM3ODIxLCQydD0zNjQ5MixLMnQ9MjMwMCxaMnQ9MjMwMSxKMnQ9MjMwMixRMnQ9MjQwMCx0NXQ9MjQwMSxlNXQ9MjQwMixuNXQ9MjUwMCxpNXQ9MjUwMSxyNXQ9M2UzLG81dD0zMDAxLGE1dD03NjgwLHM1dD0zNTA0NCxsNXQ9MzUwNDgsYzV0PSIzMDAgZXMiLHU1dD0xMDM1O2NsYXNzIGg1dHthZGRFdmVudExpc3RlbmVyKHQsZSl7dm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXt9KTtjb25zdCBuPXRoaXMuX2xpc3RlbmVyczt2b2lkIDA9PT1uW3RdJiYoblt0XT1bXSksLTE9PT1uW3RdLmluZGV4T2YoZSkmJm5bdF0ucHVzaChlKX1oYXNFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybiExO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3JldHVybiB2b2lkIDAhPT1uW3RdJiYtMSE9PW5bdF0uaW5kZXhPZihlKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBuPXRoaXMuX2xpc3RlbmVyc1t0XTtpZih2b2lkIDAhPT1uKXtjb25zdCB0PW4uaW5kZXhPZihlKTstMSE9PXQmJm4uc3BsaWNlKHQsMSl9fWRpc3BhdGNoRXZlbnQodCl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBlPXRoaXMuX2xpc3RlbmVyc1t0LnR5cGVdO2lmKHZvaWQgMCE9PWUpe3QudGFyZ2V0PXRoaXM7Y29uc3Qgbj1lLnNsaWNlKDApO2ZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKyluW2VdLmNhbGwodGhpcyx0KTt0LnRhcmdldD1udWxsfX19Y29uc3QgZDV0PVtdO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKylkNXRbdF09KHQ8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KTtsZXQgcDV0PTEyMzQ1Njc7Y29uc3QgZjV0PU1hdGguUEkvMTgwLG01dD0xODAvTWF0aC5QSTtmdW5jdGlvbiBnNXQoKXtjb25zdCB0PTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLGU9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsbj00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxpPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwO3JldHVybihkNXRbMjU1JnRdK2Q1dFt0Pj44JjI1NV0rZDV0W3Q+PjE2JjI1NV0rZDV0W3Q+PjI0JjI1NV0rIi0iK2Q1dFsyNTUmZV0rZDV0W2U+PjgmMjU1XSsiLSIrZDV0W2U+PjE2JjE1fDY0XStkNXRbZT4+MjQmMjU1XSsiLSIrZDV0WzYzJm58MTI4XStkNXRbbj4+OCYyNTVdKyItIitkNXRbbj4+MTYmMjU1XStkNXRbbj4+MjQmMjU1XStkNXRbMjU1JmldK2Q1dFtpPj44JjI1NV0rZDV0W2k+PjE2JjI1NV0rZDV0W2k+PjI0JjI1NV0pLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gXzV0KHQsZSxuKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihuLHQpKX1mdW5jdGlvbiB5NXQodCxlKXtyZXR1cm4odCVlK2UpJWV9ZnVuY3Rpb24gdjV0KHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX1mdW5jdGlvbiBiNXQodCl7cmV0dXJuIDA9PSh0JnQtMSkmJjAhPT10fWZ1bmN0aW9uIHg1dCh0KXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmNlaWwoTWF0aC5sb2codCkvTWF0aC5MTjIpKX1mdW5jdGlvbiB3NXQodCl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMikpfXZhciBTNXQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsREVHMlJBRDpmNXQsUkFEMkRFRzptNXQsZ2VuZXJhdGVVVUlEOmc1dCxjbGFtcDpfNXQsZXVjbGlkZWFuTW9kdWxvOnk1dCxtYXBMaW5lYXI6ZnVuY3Rpb24gTTV0KHQsZSxuLGkscil7cmV0dXJuIGkrKHQtZSkqKHItaSkvKG4tZSl9LGludmVyc2VMZXJwOmZ1bmN0aW9uIEU1dCh0LGUsbil7cmV0dXJuIHQhPT1lPyhuLXQpLyhlLXQpOjB9LGxlcnA6djV0LGRhbXA6ZnVuY3Rpb24gVDV0KHQsZSxuLGkpe3JldHVybiB2NXQodCxlLDEtTWF0aC5leHAoLW4qaSkpfSxwaW5ncG9uZzpmdW5jdGlvbiBDNXQodCxlPTEpe3JldHVybiBlLU1hdGguYWJzKHk1dCh0LDIqZSktZSl9LHNtb290aHN0ZXA6ZnVuY3Rpb24gQTV0KHQsZSxuKXtyZXR1cm4gdDw9ZT8wOnQ+PW4/MToodD0odC1lKS8obi1lKSkqdCooMy0yKnQpfSxzbW9vdGhlcnN0ZXA6ZnVuY3Rpb24gazV0KHQsZSxuKXtyZXR1cm4gdDw9ZT8wOnQ+PW4/MToodD0odC1lKS8obi1lKSkqdCp0Kih0Kig2KnQtMTUpKzEwKX0scmFuZEludDpmdW5jdGlvbiBQNXQodCxlKXtyZXR1cm4gdCtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGUtdCsxKSl9LHJhbmRGbG9hdDpmdW5jdGlvbiBMNXQodCxlKXtyZXR1cm4gdCtNYXRoLnJhbmRvbSgpKihlLXQpfSxyYW5kRmxvYXRTcHJlYWQ6ZnVuY3Rpb24gSTV0KHQpe3JldHVybiB0KiguNS1NYXRoLnJhbmRvbSgpKX0sc2VlZGVkUmFuZG9tOmZ1bmN0aW9uIE41dCh0KXtyZXR1cm4gdm9pZCAwIT09dCYmKHA1dD10JTIxNDc0ODM2NDcpLHA1dD0xNjgwNypwNXQlMjE0NzQ4MzY0NywocDV0LTEpLzIxNDc0ODM2NDZ9LGRlZ1RvUmFkOmZ1bmN0aW9uIFI1dCh0KXtyZXR1cm4gdCpmNXR9LHJhZFRvRGVnOmZ1bmN0aW9uIE81dCh0KXtyZXR1cm4gdCptNXR9LGlzUG93ZXJPZlR3bzpiNXQsY2VpbFBvd2VyT2ZUd286eDV0LGZsb29yUG93ZXJPZlR3bzp3NXQsc2V0UXVhdGVybmlvbkZyb21Qcm9wZXJFdWxlcjpmdW5jdGlvbiB6NXQodCxlLG4saSxyKXtjb25zdCBvPU1hdGguY29zLGE9TWF0aC5zaW4scz1vKG4vMiksbD1hKG4vMiksYz1vKChlK2kpLzIpLHU9YSgoZStpKS8yKSxoPW8oKGUtaSkvMiksZD1hKChlLWkpLzIpLHA9bygoaS1lKS8yKSxmPWEoKGktZSkvMik7c3dpdGNoKHIpe2Nhc2UiWFlYIjp0LnNldChzKnUsbCpoLGwqZCxzKmMpO2JyZWFrO2Nhc2UiWVpZIjp0LnNldChsKmQscyp1LGwqaCxzKmMpO2JyZWFrO2Nhc2UiWlhaIjp0LnNldChsKmgsbCpkLHMqdSxzKmMpO2JyZWFrO2Nhc2UiWFpYIjp0LnNldChzKnUsbCpmLGwqcCxzKmMpO2JyZWFrO2Nhc2UiWVhZIjp0LnNldChsKnAscyp1LGwqZixzKmMpO2JyZWFrO2Nhc2UiWllaIjp0LnNldChsKmYsbCpwLHMqdSxzKmMpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5NYXRoVXRpbHM6IC5zZXRRdWF0ZXJuaW9uRnJvbVByb3BlckV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIityKX19fSk7Y2xhc3MgRDV0e2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWlbMF0qZStpWzNdKm4raVs2XSx0aGlzLnk9aVsxXSplK2lbNF0qbitpWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55O3JldHVybiBlKmUrbipufW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxpPU1hdGguc2luKGUpLHI9dGhpcy54LXQueCxvPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1yKm4tbyppK3QueCx0aGlzLnk9cippK28qbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55fX1ENXQucHJvdG90eXBlLmlzVmVjdG9yMj0hMDtjbGFzcyBCNXR7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDEsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsbixpLHIsbyxhLHMsbCl7Y29uc3QgYz10aGlzLmVsZW1lbnRzO3JldHVybiBjWzBdPXQsY1sxXT1pLGNbMl09YSxjWzNdPWUsY1s0XT1yLGNbNV09cyxjWzZdPW4sY1s3XT1vLGNbOF09bCx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMSwwLDAsMCwxKSx0aGlzfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sdGhpc31leHRyYWN0QmFzaXModCxlLG4pe3JldHVybiB0LnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywyKSx0aGlzfXNldEZyb21NYXRyaXg0KHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy5zZXQoZVswXSxlWzRdLGVbOF0sZVsxXSxlWzVdLGVbOV0sZVsyXSxlWzZdLGVbMTBdKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxpPWUuZWxlbWVudHMscj10aGlzLmVsZW1lbnRzLG89blswXSxhPW5bM10scz1uWzZdLGw9blsxXSxjPW5bNF0sdT1uWzddLGg9blsyXSxkPW5bNV0scD1uWzhdLGY9aVswXSxtPWlbM10sZz1pWzZdLF89aVsxXSx5PWlbNF0sdj1pWzddLGI9aVsyXSx4PWlbNV0sdz1pWzhdO3JldHVybiByWzBdPW8qZithKl8rcypiLHJbM109byptK2EqeStzKngscls2XT1vKmcrYSp2K3MqdyxyWzFdPWwqZitjKl8rdSpiLHJbNF09bCptK2MqeSt1Kngscls3XT1sKmcrYyp2K3UqdyxyWzJdPWgqZitkKl8rcCpiLHJbNV09aCptK2QqeStwKngscls4XT1oKmcrZCp2K3Aqdyx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzNdKj10LGVbNl0qPXQsZVsxXSo9dCxlWzRdKj10LGVbN10qPXQsZVsyXSo9dCxlWzVdKj10LGVbOF0qPXQsdGhpc31kZXRlcm1pbmFudCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLGk9dFsyXSxyPXRbM10sbz10WzRdLGE9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XTtyZXR1cm4gZSpvKmMtZSphKmwtbipyKmMrbiphKnMraSpyKmwtaSpvKnN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9YypvLWEqbCxoPWEqcy1jKnIsZD1sKnItbypzLHA9ZSp1K24qaCtpKmQ7aWYoMD09PXApcmV0dXJuIHRoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCBmPTEvcDtyZXR1cm4gdFswXT11KmYsdFsxXT0oaSpsLWMqbikqZix0WzJdPShhKm4taSpvKSpmLHRbM109aCpmLHRbNF09KGMqZS1pKnMpKmYsdFs1XT0oaSpyLWEqZSkqZix0WzZdPWQqZix0WzddPShuKnMtbCplKSpmLHRbOF09KG8qZS1uKnIpKmYsdGhpc310cmFuc3Bvc2UoKXtsZXQgdDtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQ9ZVsxXSxlWzFdPWVbM10sZVszXT10LHQ9ZVsyXSxlWzJdPWVbNl0sZVs2XT10LHQ9ZVs1XSxlWzVdPWVbN10sZVs3XT10LHRoaXN9Z2V0Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLnNldEZyb21NYXRyaXg0KHQpLmludmVydCgpLnRyYW5zcG9zZSgpfXRyYW5zcG9zZUludG9BcnJheSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbMF09ZVswXSx0WzFdPWVbM10sdFsyXT1lWzZdLHRbM109ZVsxXSx0WzRdPWVbNF0sdFs1XT1lWzddLHRbNl09ZVsyXSx0WzddPWVbNV0sdFs4XT1lWzhdLHRoaXN9c2V0VXZUcmFuc2Zvcm0odCxlLG4saSxyLG8sYSl7Y29uc3Qgcz1NYXRoLmNvcyhyKSxsPU1hdGguc2luKHIpO3JldHVybiB0aGlzLnNldChuKnMsbipsLC1uKihzKm8rbCphKStvK3QsLWkqbCxpKnMsLWkqKC1sKm8rcyphKSthK2UsMCwwLDEpLHRoaXN9c2NhbGUodCxlKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIG5bMF0qPXQsblszXSo9dCxuWzZdKj10LG5bMV0qPWUsbls0XSo9ZSxuWzddKj1lLHRoaXN9cm90YXRlKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KSxpPXRoaXMuZWxlbWVudHMscj1pWzBdLG89aVszXSxhPWlbNl0scz1pWzFdLGw9aVs0XSxjPWlbN107cmV0dXJuIGlbMF09ZSpyK24qcyxpWzNdPWUqbytuKmwsaVs2XT1lKmErbipjLGlbMV09LW4qcitlKnMsaVs0XT0tbipvK2UqbCxpWzddPS1uKmErZSpjLHRoaXN9dHJhbnNsYXRlKHQsZSl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiBuWzBdKz10Km5bMl0sblszXSs9dCpuWzVdLG5bNl0rPXQqbls4XSxuWzFdKz1lKm5bMl0sbls0XSs9ZSpuWzVdLG5bN10rPWUqbls4XSx0aGlzfWVxdWFscyh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8OTt0KyspaWYoZVt0XSE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuZWxlbWVudHNbbl09dFtuK2VdO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gdFtlXT1uWzBdLHRbZSsxXT1uWzFdLHRbZSsyXT1uWzJdLHRbZSszXT1uWzNdLHRbZSs0XT1uWzRdLHRbZSs1XT1uWzVdLHRbZSs2XT1uWzZdLHRbZSs3XT1uWzddLHRbZSs4XT1uWzhdLHR9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmZyb21BcnJheSh0aGlzLmVsZW1lbnRzKX19ZnVuY3Rpb24gSDV0KHQpe2ZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7LS1lKWlmKHRbZV0+NjU1MzUpcmV0dXJuITA7cmV0dXJuITF9QjV0LnByb3RvdHlwZS5pc01hdHJpeDM9ITA7Y29uc3QgRjV0PXtJbnQ4QXJyYXk6SW50OEFycmF5LFVpbnQ4QXJyYXk6VWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheTpVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5OkludDE2QXJyYXksVWludDE2QXJyYXk6VWludDE2QXJyYXksSW50MzJBcnJheTpJbnQzMkFycmF5LFVpbnQzMkFycmF5OlVpbnQzMkFycmF5LEZsb2F0MzJBcnJheTpGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5OkZsb2F0NjRBcnJheX07ZnVuY3Rpb24gVjV0KHQsZSl7cmV0dXJuIG5ldyBGNXRbdF0oZSl9ZnVuY3Rpb24gVTV0KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHQpfWNvbnN0IGo1dD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSxHNXQ9e2g6MCxzOjAsbDowfSxXNXQ9e2g6MCxzOjAsbDowfTtmdW5jdGlvbiBxNXQodCxlLG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuPDEvNj90KzYqKGUtdCkqbjpuPC41P2U6bjwyLzM/dCs2KihlLXQpKigyLzMtbik6dH1mdW5jdGlvbiBZNXQodCl7cmV0dXJuIHQ8LjA0MDQ1Py4wNzczOTkzODA4KnQ6TWF0aC5wb3coLjk0Nzg2NzI5ODYqdCsuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIFg1dCh0KXtyZXR1cm4gdDwuMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsLjQxNjY2KS0uMDU1fWNsYXNzICQ1dHtjb25zdHJ1Y3Rvcih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJnZvaWQgMD09PW4/dGhpcy5zZXQodCk6dGhpcy5zZXRSR0IodCxlLG4pfXNldCh0KXtyZXR1cm4gdCYmdC5pc0NvbG9yP3RoaXMuY29weSh0KToibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5zZXRIZXgodCk6InN0cmluZyI9PXR5cGVvZiB0JiZ0aGlzLnNldFN0eWxlKHQpLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLnI9dCx0aGlzLmc9dCx0aGlzLmI9dCx0aGlzfXNldEhleCh0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLHRoaXMucj0odD4+MTYmMjU1KS8yNTUsdGhpcy5nPSh0Pj44JjI1NSkvMjU1LHRoaXMuYj0oMjU1JnQpLzI1NSx0aGlzfXNldFJHQih0LGUsbil7cmV0dXJuIHRoaXMucj10LHRoaXMuZz1lLHRoaXMuYj1uLHRoaXN9c2V0SFNMKHQsZSxuKXtpZih0PXk1dCh0LDEpLGU9XzV0KGUsMCwxKSxuPV81dChuLDAsMSksMD09PWUpdGhpcy5yPXRoaXMuZz10aGlzLmI9bjtlbHNle2NvbnN0IGk9bjw9LjU/biooMStlKTpuK2UtbiplLHI9MipuLWk7dGhpcy5yPXE1dChyLGksdCsxLzMpLHRoaXMuZz1xNXQocixpLHQpLHRoaXMuYj1xNXQocixpLHQtMS8zKX1yZXR1cm4gdGhpc31zZXRTdHlsZSh0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMCE9PWUmJnBhcnNlRmxvYXQoZSk8MSYmY29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogQWxwaGEgY29tcG9uZW50IG9mICIrdCsiIHdpbGwgYmUgaWdub3JlZC4iKX1sZXQgbjtpZihuPS9eKCg/OnJnYnxoc2wpYT8pXCgoW15cKV0qKVwpLy5leGVjKHQpKXtsZXQgdDtjb25zdCBpPW5bMl07c3dpdGNoKG5bMV0pe2Nhc2UicmdiIjpjYXNlInJnYmEiOmlmKHQ9L15ccyooXGQrKVxzKixccyooXGQrKVxzKixccyooXGQrKVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhpKSlyZXR1cm4gdGhpcy5yPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzFdLDEwKSkvMjU1LHRoaXMuZz1NYXRoLm1pbigyNTUscGFyc2VJbnQodFsyXSwxMCkpLzI1NSx0aGlzLmI9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbM10sMTApKS8yNTUsZSh0WzRdKSx0aGlzO2lmKHQ9L15ccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhpKSlyZXR1cm4gdGhpcy5yPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzFdLDEwKSkvMTAwLHRoaXMuZz1NYXRoLm1pbigxMDAscGFyc2VJbnQodFsyXSwxMCkpLzEwMCx0aGlzLmI9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbM10sMTApKS8xMDAsZSh0WzRdKSx0aGlzO2JyZWFrO2Nhc2UiaHNsIjpjYXNlImhzbGEiOmlmKHQ9L15ccyooXGQqXC4/XGQrKVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMoaSkpe2NvbnN0IG49cGFyc2VGbG9hdCh0WzFdKS8zNjAsaT1wYXJzZUludCh0WzJdLDEwKS8xMDAscj1wYXJzZUludCh0WzNdLDEwKS8xMDA7cmV0dXJuIGUodFs0XSksdGhpcy5zZXRIU0wobixpLHIpfX19ZWxzZSBpZihuPS9eXCMoW0EtRmEtZlxkXSspJC8uZXhlYyh0KSl7Y29uc3QgdD1uWzFdLGU9dC5sZW5ndGg7aWYoMz09PWUpcmV0dXJuIHRoaXMucj1wYXJzZUludCh0LmNoYXJBdCgwKSt0LmNoYXJBdCgwKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludCh0LmNoYXJBdCgxKSt0LmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludCh0LmNoYXJBdCgyKSt0LmNoYXJBdCgyKSwxNikvMjU1LHRoaXM7aWYoNj09PWUpcmV0dXJuIHRoaXMucj1wYXJzZUludCh0LmNoYXJBdCgwKSt0LmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludCh0LmNoYXJBdCgyKSt0LmNoYXJBdCgzKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludCh0LmNoYXJBdCg0KSt0LmNoYXJBdCg1KSwxNikvMjU1LHRoaXN9cmV0dXJuIHQmJnQubGVuZ3RoPjA/dGhpcy5zZXRDb2xvck5hbWUodCk6dGhpc31zZXRDb2xvck5hbWUodCl7Y29uc3QgZT1qNXRbdC50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gdm9pZCAwIT09ZT90aGlzLnNldEhleChlKTpjb25zb2xlLndhcm4oIlRIUkVFLkNvbG9yOiBVbmtub3duIGNvbG9yICIrdCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLnIsdGhpcy5nLHRoaXMuYil9Y29weSh0KXtyZXR1cm4gdGhpcy5yPXQucix0aGlzLmc9dC5nLHRoaXMuYj10LmIsdGhpc31jb3B5U1JHQlRvTGluZWFyKHQpe3JldHVybiB0aGlzLnI9WTV0KHQuciksdGhpcy5nPVk1dCh0LmcpLHRoaXMuYj1ZNXQodC5iKSx0aGlzfWNvcHlMaW5lYXJUb1NSR0IodCl7cmV0dXJuIHRoaXMucj1YNXQodC5yKSx0aGlzLmc9WDV0KHQuZyksdGhpcy5iPVg1dCh0LmIpLHRoaXN9Y29udmVydFNSR0JUb0xpbmVhcigpe3JldHVybiB0aGlzLmNvcHlTUkdCVG9MaW5lYXIodGhpcyksdGhpc31jb252ZXJ0TGluZWFyVG9TUkdCKCl7cmV0dXJuIHRoaXMuY29weUxpbmVhclRvU1JHQih0aGlzKSx0aGlzfWdldEhleCgpe3JldHVybiAyNTUqdGhpcy5yPDwxNl4yNTUqdGhpcy5nPDw4XjI1NSp0aGlzLmI8PDB9Z2V0SGV4U3RyaW5nKCl7cmV0dXJuKCIwMDAwMDAiK3RoaXMuZ2V0SGV4KCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNil9Z2V0SFNMKHQpe2NvbnN0IGU9dGhpcy5yLG49dGhpcy5nLGk9dGhpcy5iLHI9TWF0aC5tYXgoZSxuLGkpLG89TWF0aC5taW4oZSxuLGkpO2xldCBhLHM7Y29uc3QgbD0obytyKS8yO2lmKG89PT1yKWE9MCxzPTA7ZWxzZXtjb25zdCB0PXItbztzd2l0Y2gocz1sPD0uNT90LyhyK28pOnQvKDItci1vKSxyKXtjYXNlIGU6YT0obi1pKS90KyhuPGk/NjowKTticmVhaztjYXNlIG46YT0oaS1lKS90KzI7YnJlYWs7Y2FzZSBpOmE9KGUtbikvdCs0fWEvPTZ9cmV0dXJuIHQuaD1hLHQucz1zLHQubD1sLHR9Z2V0U3R5bGUoKXtyZXR1cm4icmdiKCIrKDI1NSp0aGlzLnJ8MCkrIiwiKygyNTUqdGhpcy5nfDApKyIsIisoMjU1KnRoaXMuYnwwKSsiKSJ9b2Zmc2V0SFNMKHQsZSxuKXtyZXR1cm4gdGhpcy5nZXRIU0woRzV0KSxHNXQuaCs9dCxHNXQucys9ZSxHNXQubCs9bix0aGlzLnNldEhTTChHNXQuaCxHNXQucyxHNXQubCksdGhpc31hZGQodCl7cmV0dXJuIHRoaXMucis9dC5yLHRoaXMuZys9dC5nLHRoaXMuYis9dC5iLHRoaXN9YWRkQ29sb3JzKHQsZSl7cmV0dXJuIHRoaXMucj10LnIrZS5yLHRoaXMuZz10LmcrZS5nLHRoaXMuYj10LmIrZS5iLHRoaXN9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLnIrPXQsdGhpcy5nKz10LHRoaXMuYis9dCx0aGlzfXN1Yih0KXtyZXR1cm4gdGhpcy5yPU1hdGgubWF4KDAsdGhpcy5yLXQuciksdGhpcy5nPU1hdGgubWF4KDAsdGhpcy5nLXQuZyksdGhpcy5iPU1hdGgubWF4KDAsdGhpcy5iLXQuYiksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5yKj10LnIsdGhpcy5nKj10LmcsdGhpcy5iKj10LmIsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKj10LHRoaXMuZyo9dCx0aGlzLmIqPXQsdGhpc31sZXJwKHQsZSl7cmV0dXJuIHRoaXMucis9KHQuci10aGlzLnIpKmUsdGhpcy5nKz0odC5nLXRoaXMuZykqZSx0aGlzLmIrPSh0LmItdGhpcy5iKSplLHRoaXN9bGVycENvbG9ycyh0LGUsbil7cmV0dXJuIHRoaXMucj10LnIrKGUuci10LnIpKm4sdGhpcy5nPXQuZysoZS5nLXQuZykqbix0aGlzLmI9dC5iKyhlLmItdC5iKSpuLHRoaXN9bGVycEhTTCh0LGUpe3RoaXMuZ2V0SFNMKEc1dCksdC5nZXRIU0woVzV0KTtjb25zdCBuPXY1dChHNXQuaCxXNXQuaCxlKSxpPXY1dChHNXQucyxXNXQucyxlKSxyPXY1dChHNXQubCxXNXQubCxlKTtyZXR1cm4gdGhpcy5zZXRIU0wobixpLHIpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnI9PT10aGlzLnImJnQuZz09PXRoaXMuZyYmdC5iPT09dGhpcy5ifWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMucj10W2VdLHRoaXMuZz10W2UrMV0sdGhpcy5iPXRbZSsyXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMucix0W2UrMV09dGhpcy5nLHRbZSsyXT10aGlzLmIsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMucj10LmdldFgoZSksdGhpcy5nPXQuZ2V0WShlKSx0aGlzLmI9dC5nZXRaKGUpLCEwPT09dC5ub3JtYWxpemVkJiYodGhpcy5yLz0yNTUsdGhpcy5nLz0yNTUsdGhpcy5iLz0yNTUpLHRoaXN9dG9KU09OKCl7cmV0dXJuIHRoaXMuZ2V0SGV4KCl9fWxldCBLNXQ7JDV0Lk5BTUVTPWo1dCwkNXQucHJvdG90eXBlLmlzQ29sb3I9ITAsJDV0LnByb3RvdHlwZS5yPTEsJDV0LnByb3RvdHlwZS5nPTEsJDV0LnByb3RvdHlwZS5iPTE7Y2xhc3MgWjV0e3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKSlyZXR1cm4gdC5zcmM7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudClyZXR1cm4gdC5zcmM7bGV0IGU7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KWU9dDtlbHNle3ZvaWQgMD09PUs1dCYmKEs1dD1VNXQoImNhbnZhcyIpKSxLNXQud2lkdGg9dC53aWR0aCxLNXQuaGVpZ2h0PXQuaGVpZ2h0O2NvbnN0IG49SzV0LmdldENvbnRleHQoIjJkIik7dCBpbnN0YW5jZW9mIEltYWdlRGF0YT9uLnB1dEltYWdlRGF0YSh0LDAsMCk6bi5kcmF3SW1hZ2UodCwwLDAsdC53aWR0aCx0LmhlaWdodCksZT1LNXR9cmV0dXJuIGUud2lkdGg+MjA0OHx8ZS5oZWlnaHQ+MjA0OD8oY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmdldERhdGFVUkw6IEltYWdlIGNvbnZlcnRlZCB0byBqcGcgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMiLHQpLGUudG9EYXRhVVJMKCJpbWFnZS9qcGVnIiwuNikpOmUudG9EYXRhVVJMKCJpbWFnZS9wbmciKX1zdGF0aWMgc1JHQlRvTGluZWFyKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEltYWdlRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZUJpdG1hcCYmdCBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXtjb25zdCBlPVU1dCgiY2FudmFzIik7ZS53aWR0aD10LndpZHRoLGUuaGVpZ2h0PXQuaGVpZ2h0O2NvbnN0IG49ZS5nZXRDb250ZXh0KCIyZCIpO24uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpO2NvbnN0IGk9bi5nZXRJbWFnZURhdGEoMCwwLHQud2lkdGgsdC5oZWlnaHQpLHI9aS5kYXRhO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXJbdF09MjU1Klk1dChyW3RdLzI1NSk7cmV0dXJuIG4ucHV0SW1hZ2VEYXRhKGksMCwwKSxlfWlmKHQuZGF0YSl7Y29uc3QgZT10LmRhdGEuc2xpY2UoMCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT1lIGluc3RhbmNlb2YgVWludDhBcnJheXx8ZSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5P01hdGguZmxvb3IoMjU1Klk1dChlW3RdLzI1NSkpOlk1dChlW3RdKTtyZXR1cm57ZGF0YTplLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fX1yZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLnNSR0JUb0xpbmVhcigpOiBVbnN1cHBvcnRlZCBpbWFnZSB0eXBlLiBObyBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGFwcGxpZWQuIiksdH19bGV0IEo1dD0wO2NsYXNzIFE1dCBleHRlbmRzIGg1dHtjb25zdHJ1Y3Rvcih0PVE1dC5ERUZBVUxUX0lNQUdFLGU9UTV0LkRFRkFVTFRfTUFQUElORyxuPTEwMDEsaT0xMDAxLHI9MTAwNixvPTEwMDgsYT0xMDIzLHM9MTAwOSxsPTEsYz0zZTMpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6SjV0Kyt9KSx0aGlzLnV1aWQ9ZzV0KCksdGhpcy5uYW1lPSIiLHRoaXMuaW1hZ2U9dCx0aGlzLm1pcG1hcHM9W10sdGhpcy5tYXBwaW5nPWUsdGhpcy53cmFwUz1uLHRoaXMud3JhcFQ9aSx0aGlzLm1hZ0ZpbHRlcj1yLHRoaXMubWluRmlsdGVyPW8sdGhpcy5hbmlzb3Ryb3B5PWwsdGhpcy5mb3JtYXQ9YSx0aGlzLmludGVybmFsRm9ybWF0PW51bGwsdGhpcy50eXBlPXMsdGhpcy5vZmZzZXQ9bmV3IEQ1dCgwLDApLHRoaXMucmVwZWF0PW5ldyBENXQoMSwxKSx0aGlzLmNlbnRlcj1uZXcgRDV0KDAsMCksdGhpcy5yb3RhdGlvbj0wLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMCx0aGlzLm1hdHJpeD1uZXcgQjV0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSEwLHRoaXMucHJlbXVsdGlwbHlBbHBoYT0hMSx0aGlzLmZsaXBZPSEwLHRoaXMudW5wYWNrQWxpZ25tZW50PTQsdGhpcy5lbmNvZGluZz1jLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTAsdGhpcy5vblVwZGF0ZT1udWxsLHRoaXMuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSExLHRoaXMubmVlZHNQTVJFTVVwZGF0ZT0hMX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5zZXRVdlRyYW5zZm9ybSh0aGlzLm9mZnNldC54LHRoaXMub2Zmc2V0LnksdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55LHRoaXMucm90YXRpb24sdGhpcy5jZW50ZXIueCx0aGlzLmNlbnRlci55KX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaW1hZ2U9dC5pbWFnZSx0aGlzLm1pcG1hcHM9dC5taXBtYXBzLnNsaWNlKDApLHRoaXMubWFwcGluZz10Lm1hcHBpbmcsdGhpcy53cmFwUz10LndyYXBTLHRoaXMud3JhcFQ9dC53cmFwVCx0aGlzLm1hZ0ZpbHRlcj10Lm1hZ0ZpbHRlcix0aGlzLm1pbkZpbHRlcj10Lm1pbkZpbHRlcix0aGlzLmFuaXNvdHJvcHk9dC5hbmlzb3Ryb3B5LHRoaXMuZm9ybWF0PXQuZm9ybWF0LHRoaXMuaW50ZXJuYWxGb3JtYXQ9dC5pbnRlcm5hbEZvcm1hdCx0aGlzLnR5cGU9dC50eXBlLHRoaXMub2Zmc2V0LmNvcHkodC5vZmZzZXQpLHRoaXMucmVwZWF0LmNvcHkodC5yZXBlYXQpLHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPXQuZ2VuZXJhdGVNaXBtYXBzLHRoaXMucHJlbXVsdGlwbHlBbHBoYT10LnByZW11bHRpcGx5QWxwaGEsdGhpcy5mbGlwWT10LmZsaXBZLHRoaXMudW5wYWNrQWxpZ25tZW50PXQudW5wYWNrQWxpZ25tZW50LHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyx0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0O2lmKCFlJiZ2b2lkIDAhPT10LnRleHR1cmVzW3RoaXMudXVpZF0pcmV0dXJuIHQudGV4dHVyZXNbdGhpcy51dWlkXTtjb25zdCBuPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiVGV4dHVyZSIsZ2VuZXJhdG9yOiJUZXh0dXJlLnRvSlNPTiJ9LHV1aWQ6dGhpcy51dWlkLG5hbWU6dGhpcy5uYW1lLG1hcHBpbmc6dGhpcy5tYXBwaW5nLHJlcGVhdDpbdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55XSxvZmZzZXQ6W3RoaXMub2Zmc2V0LngsdGhpcy5vZmZzZXQueV0sY2VudGVyOlt0aGlzLmNlbnRlci54LHRoaXMuY2VudGVyLnldLHJvdGF0aW9uOnRoaXMucm90YXRpb24sd3JhcDpbdGhpcy53cmFwUyx0aGlzLndyYXBUXSxmb3JtYXQ6dGhpcy5mb3JtYXQsdHlwZTp0aGlzLnR5cGUsZW5jb2Rpbmc6dGhpcy5lbmNvZGluZyxtaW5GaWx0ZXI6dGhpcy5taW5GaWx0ZXIsbWFnRmlsdGVyOnRoaXMubWFnRmlsdGVyLGFuaXNvdHJvcHk6dGhpcy5hbmlzb3Ryb3B5LGZsaXBZOnRoaXMuZmxpcFkscHJlbXVsdGlwbHlBbHBoYTp0aGlzLnByZW11bHRpcGx5QWxwaGEsdW5wYWNrQWxpZ25tZW50OnRoaXMudW5wYWNrQWxpZ25tZW50fTtpZih2b2lkIDAhPT10aGlzLmltYWdlKXtjb25zdCBpPXRoaXMuaW1hZ2U7aWYodm9pZCAwPT09aS51dWlkJiYoaS51dWlkPWc1dCgpKSwhZSYmdm9pZCAwPT09dC5pbWFnZXNbaS51dWlkXSl7bGV0IGU7aWYoQXJyYXkuaXNBcnJheShpKSl7ZT1bXTtmb3IobGV0IHQ9MCxuPWkubGVuZ3RoO3Q8bjt0KyspZS5wdXNoKHQzdChpW3RdLmlzRGF0YVRleHR1cmU/aVt0XS5pbWFnZTppW3RdKSl9ZWxzZSBlPXQzdChpKTt0LmltYWdlc1tpLnV1aWRdPXt1dWlkOmkudXVpZCx1cmw6ZX19bi5pbWFnZT1pLnV1aWR9cmV0dXJuInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYobi51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxlfHwodC50ZXh0dXJlc1t0aGlzLnV1aWRdPW4pLG59ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX10cmFuc2Zvcm1Vdih0KXtpZih0aGlzLm1hcHBpbmchPT10MnQpcmV0dXJuIHQ7aWYodC5hcHBseU1hdHJpeDModGhpcy5tYXRyaXgpLHQueDwwfHx0Lng+MSlzd2l0Y2godGhpcy53cmFwUyl7Y2FzZSBzMnQ6dC54PXQueC1NYXRoLmZsb29yKHQueCk7YnJlYWs7Y2FzZSBsMnQ6dC54PXQueDwwPzA6MTticmVhaztjYXNlIGMydDp0Lng9MT09PU1hdGguYWJzKE1hdGguZmxvb3IodC54KSUyKT9NYXRoLmNlaWwodC54KS10Lng6dC54LU1hdGguZmxvb3IodC54KX1pZih0Lnk8MHx8dC55PjEpc3dpdGNoKHRoaXMud3JhcFQpe2Nhc2UgczJ0OnQueT10LnktTWF0aC5mbG9vcih0LnkpO2JyZWFrO2Nhc2UgbDJ0OnQueT10Lnk8MD8wOjE7YnJlYWs7Y2FzZSBjMnQ6dC55PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueSklMik/TWF0aC5jZWlsKHQueSktdC55OnQueS1NYXRoLmZsb29yKHQueSl9cmV0dXJuIHRoaXMuZmxpcFkmJih0Lnk9MS10LnkpLHR9c2V0IG5lZWRzVXBkYXRlKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9fWZ1bmN0aW9uIHQzdCh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VCaXRtYXAmJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcD9aNXQuZ2V0RGF0YVVSTCh0KTp0LmRhdGE/e2RhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5kYXRhKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodCx0eXBlOnQuZGF0YS5jb25zdHJ1Y3Rvci5uYW1lfTooY29uc29sZS53YXJuKCJUSFJFRS5UZXh0dXJlOiBVbmFibGUgdG8gc2VyaWFsaXplIFRleHR1cmUuIikse30pfVE1dC5ERUZBVUxUX0lNQUdFPXZvaWQgMCxRNXQuREVGQVVMVF9NQVBQSU5HPXQydCxRNXQucHJvdG90eXBlLmlzVGV4dHVyZT0hMDtjbGFzcyBlM3R7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsaT0xKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzLnc9aX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy56fXNldCB3aWR0aCh0KXt0aGlzLno9dH1nZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMud31zZXQgaGVpZ2h0KHQpe3RoaXMudz10fXNldCh0LGUsbixpKXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpcy53PWksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXMudz10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Vyh0KXtyZXR1cm4gdGhpcy53PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztjYXNlIDI6dGhpcy56PWU7YnJlYWs7Y2FzZSAzOnRoaXMudz1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtjYXNlIDM6cmV0dXJuIHRoaXMudztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueix0aGlzLncpfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXMudz12b2lkIDAhPT10Lnc/dC53OjEsdGhpc31hZGQodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzLncrPXQudyx0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXMudys9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpcy56PXQueitlLnosdGhpcy53PXQudytlLncsdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXMueis9dC56KmUsdGhpcy53Kz10LncqZSx0aGlzfXN1Yih0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMudy09dC53LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpcy53LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzLno9dC56LWUueix0aGlzLnc9dC53LWUudyx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzLncqPXQudyx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzLncqPXQsdGhpc31hcHBseU1hdHJpeDQodCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10aGlzLncsbz10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9b1swXSplK29bNF0qbitvWzhdKmkrb1sxMl0qcix0aGlzLnk9b1sxXSplK29bNV0qbitvWzldKmkrb1sxM10qcix0aGlzLno9b1syXSplK29bNl0qbitvWzEwXSppK29bMTRdKnIsdGhpcy53PW9bM10qZStvWzddKm4rb1sxMV0qaStvWzE1XSpyLHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9c2V0QXhpc0FuZ2xlRnJvbVF1YXRlcm5pb24odCl7dGhpcy53PTIqTWF0aC5hY29zKHQudyk7Y29uc3QgZT1NYXRoLnNxcnQoMS10LncqdC53KTtyZXR1cm4gZTwxZS00Pyh0aGlzLng9MSx0aGlzLnk9MCx0aGlzLno9MCk6KHRoaXMueD10LngvZSx0aGlzLnk9dC55L2UsdGhpcy56PXQuei9lKSx0aGlzfXNldEF4aXNBbmdsZUZyb21Sb3RhdGlvbk1hdHJpeCh0KXtsZXQgZSxuLGkscjtjb25zdCBvPS4wMSxhPS4xLHM9dC5lbGVtZW50cyxsPXNbMF0sYz1zWzRdLHU9c1s4XSxoPXNbMV0sZD1zWzVdLHA9c1s5XSxmPXNbMl0sbT1zWzZdLGc9c1sxMF07aWYoTWF0aC5hYnMoYy1oKTxvJiZNYXRoLmFicyh1LWYpPG8mJk1hdGguYWJzKHAtbSk8byl7aWYoTWF0aC5hYnMoYytoKTxhJiZNYXRoLmFicyh1K2YpPGEmJk1hdGguYWJzKHArbSk8YSYmTWF0aC5hYnMobCtkK2ctMyk8YSlyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCksdGhpcztlPU1hdGguUEk7Y29uc3QgdD0obCsxKS8yLHM9KGQrMSkvMixfPShnKzEpLzIseT0oYytoKS80LHY9KHUrZikvNCxiPShwK20pLzQ7cmV0dXJuIHQ+cyYmdD5fP3Q8bz8obj0wLGk9LjcwNzEwNjc4MSxyPS43MDcxMDY3ODEpOihuPU1hdGguc3FydCh0KSxpPXkvbixyPXYvbik6cz5fP3M8bz8obj0uNzA3MTA2NzgxLGk9MCxyPS43MDcxMDY3ODEpOihpPU1hdGguc3FydChzKSxuPXkvaSxyPWIvaSk6XzxvPyhuPS43MDcxMDY3ODEsaT0uNzA3MTA2NzgxLHI9MCk6KHI9TWF0aC5zcXJ0KF8pLG49di9yLGk9Yi9yKSx0aGlzLnNldChuLGkscixlKSx0aGlzfWxldCBfPU1hdGguc3FydCgobS1wKSoobS1wKSsodS1mKSoodS1mKSsoaC1jKSooaC1jKSk7cmV0dXJuIE1hdGguYWJzKF8pPC4wMDEmJihfPTEpLHRoaXMueD0obS1wKS9fLHRoaXMueT0odS1mKS9fLHRoaXMuej0oaC1jKS9fLHRoaXMudz1NYXRoLmFjb3MoKGwrZCtnLTEpLzIpLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1pbih0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5taW4odGhpcy53LHQudyksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpcy56PU1hdGgubWF4KHRoaXMueix0LnopLHRoaXMudz1NYXRoLm1heCh0aGlzLncsdC53KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4oZS56LHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LncsTWF0aC5taW4oZS53LHRoaXMudykpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy56KSksdGhpcy53PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLncpKSx0aGlzfWNsYW1wTGVuZ3RoKHQsZSl7Y29uc3Qgbj10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihufHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsbikpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpcy56PU1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzLnc9TWF0aC5jZWlsKHRoaXMudyksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpcy56PU1hdGgucm91bmQodGhpcy56KSx0aGlzLnc9TWF0aC5yb3VuZCh0aGlzLncpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpcy53PXRoaXMudzwwP01hdGguY2VpbCh0aGlzLncpOk1hdGguZmxvb3IodGhpcy53KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzLnc9LXRoaXMudyx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0LnordGhpcy53KnQud31sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMudyl9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopK01hdGguYWJzKHRoaXMudyl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzLnorPSh0LnotdGhpcy56KSplLHRoaXMudys9KHQudy10aGlzLncpKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsbil7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKm4sdGhpcy55PXQueSsoZS55LXQueSkqbix0aGlzLno9dC56KyhlLnotdC56KSpuLHRoaXMudz10LncrKGUudy10LncpKm4sdGhpc31lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnomJnQudz09PXRoaXMud31mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXMuej10W2UrMl0sdGhpcy53PXRbZSszXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHRbZSsyXT10aGlzLnosdFtlKzNdPXRoaXMudyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pe3JldHVybiB2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpcy56PXQuZ2V0WihlKSx0aGlzLnc9dC5nZXRXKGUpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXMudz1NYXRoLnJhbmRvbSgpLHRoaXN9KltTeW1ib2wuaXRlcmF0b3JdKCl7eWllbGQgdGhpcy54LHlpZWxkIHRoaXMueSx5aWVsZCB0aGlzLnoseWllbGQgdGhpcy53fX1lM3QucHJvdG90eXBlLmlzVmVjdG9yND0hMDtjbGFzcyBuM3QgZXh0ZW5kcyBoNXR7Y29uc3RydWN0b3IodCxlLG49e30pe3N1cGVyKCksdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5kZXB0aD0xLHRoaXMuc2Npc3Nvcj1uZXcgZTN0KDAsMCx0LGUpLHRoaXMuc2Npc3NvclRlc3Q9ITEsdGhpcy52aWV3cG9ydD1uZXcgZTN0KDAsMCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgUTV0KHZvaWQgMCxuLm1hcHBpbmcsbi53cmFwUyxuLndyYXBULG4ubWFnRmlsdGVyLG4ubWluRmlsdGVyLG4uZm9ybWF0LG4udHlwZSxuLmFuaXNvdHJvcHksbi5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMCx0aGlzLnRleHR1cmUuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmUsZGVwdGg6MX0sdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmbi5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLmludGVybmFsRm9ybWF0PXZvaWQgMCE9PW4uaW50ZXJuYWxGb3JtYXQ/bi5pbnRlcm5hbEZvcm1hdDpudWxsLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dm9pZCAwIT09bi5taW5GaWx0ZXI/bi5taW5GaWx0ZXI6cDJ0LHRoaXMuZGVwdGhCdWZmZXI9dm9pZCAwPT09bi5kZXB0aEJ1ZmZlcnx8bi5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dm9pZCAwIT09bi5zdGVuY2lsQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIsdGhpcy5kZXB0aFRleHR1cmU9dm9pZCAwIT09bi5kZXB0aFRleHR1cmU/bi5kZXB0aFRleHR1cmU6bnVsbH1zZXRUZXh0dXJlKHQpe3QuaW1hZ2U9e3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0LGRlcHRoOnRoaXMuZGVwdGh9LHRoaXMudGV4dHVyZT10fXNldFNpemUodCxlLG49MSl7dGhpcy53aWR0aD09PXQmJnRoaXMuaGVpZ2h0PT09ZSYmdGhpcy5kZXB0aD09PW58fCh0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW4sdGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZS5pbWFnZS5kZXB0aD1uLHRoaXMuZGlzcG9zZSgpKSx0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5jb3B5KHQudmlld3BvcnQpLHRoaXMudGV4dHVyZT10LnRleHR1cmUuY2xvbmUoKSx0aGlzLnRleHR1cmUuaW1hZ2U9T2JqZWN0LmFzc2lnbih7fSx0LnRleHR1cmUuaW1hZ2UpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19bjN0LnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyVGFyZ2V0PSEwO2NsYXNzIGkzdCBleHRlbmRzIG4zdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKTtjb25zdCBpPXRoaXMudGV4dHVyZTt0aGlzLnRleHR1cmU9W107Zm9yKGxldCB0PTA7dDxuO3QrKyl0aGlzLnRleHR1cmVbdF09aS5jbG9uZSgpfXNldFNpemUodCxlLG49MSl7aWYodGhpcy53aWR0aCE9PXR8fHRoaXMuaGVpZ2h0IT09ZXx8dGhpcy5kZXB0aCE9PW4pe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9bjtmb3IobGV0IGk9MCxyPXRoaXMudGV4dHVyZS5sZW5ndGg7aTxyO2krKyl0aGlzLnRleHR1cmVbaV0uaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmVbaV0uaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlW2ldLmltYWdlLmRlcHRoPW47dGhpcy5kaXNwb3NlKCl9cmV0dXJuIHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSksdGhpc31jb3B5KHQpe3RoaXMuZGlzcG9zZSgpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXMudGV4dHVyZS5sZW5ndGg9MDtmb3IobGV0IGU9MCxuPXQudGV4dHVyZS5sZW5ndGg7ZTxuO2UrKyl0aGlzLnRleHR1cmVbZV09dC50ZXh0dXJlW2VdLmNsb25lKCk7cmV0dXJuIHRoaXN9fWkzdC5wcm90b3R5cGUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz0hMDtjbGFzcyByM3QgZXh0ZW5kcyBuM3R7Y29uc3RydWN0b3IodCxlLG49e30pe3N1cGVyKHQsZSxuKSx0aGlzLnNhbXBsZXM9NCx0aGlzLmlnbm9yZURlcHRoRm9yTXVsdGlzYW1wbGVDb3B5PXZvaWQgMD09PW4uaWdub3JlRGVwdGh8fG4uaWdub3JlRGVwdGgsdGhpcy51c2VSZW5kZXJUb1RleHR1cmU9dm9pZCAwIT09bi51c2VSZW5kZXJUb1RleHR1cmUmJm4udXNlUmVuZGVyVG9UZXh0dXJlLHRoaXMudXNlUmVuZGVyYnVmZmVyPSExPT09dGhpcy51c2VSZW5kZXJUb1RleHR1cmV9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weS5jYWxsKHRoaXMsdCksdGhpcy5zYW1wbGVzPXQuc2FtcGxlcyx0aGlzLnVzZVJlbmRlclRvVGV4dHVyZT10LnVzZVJlbmRlclRvVGV4dHVyZSx0aGlzLnVzZVJlbmRlcmJ1ZmZlcj10LnVzZVJlbmRlcmJ1ZmZlcix0aGlzfX1yM3QucHJvdG90eXBlLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD0hMDtjbGFzcyBvM3R7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsaT0xKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl93PWl9c3RhdGljIHNsZXJwKHQsZSxuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IFN0YXRpYyAuc2xlcnAoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgcW0uc2xlcnBRdWF0ZXJuaW9ucyggcWEsIHFiLCB0ICkgaW5zdGVhZC4iKSxuLnNsZXJwUXVhdGVybmlvbnModCxlLGkpfXN0YXRpYyBzbGVycEZsYXQodCxlLG4saSxyLG8sYSl7bGV0IHM9bltpKzBdLGw9bltpKzFdLGM9bltpKzJdLHU9bltpKzNdO2NvbnN0IGg9cltvKzBdLGQ9cltvKzFdLHA9cltvKzJdLGY9cltvKzNdO2lmKDA9PT1hKXJldHVybiB0W2UrMF09cyx0W2UrMV09bCx0W2UrMl09Yyx2b2lkKHRbZSszXT11KTtpZigxPT09YSlyZXR1cm4gdFtlKzBdPWgsdFtlKzFdPWQsdFtlKzJdPXAsdm9pZCh0W2UrM109Zik7aWYodSE9PWZ8fHMhPT1ofHxsIT09ZHx8YyE9PXApe2xldCB0PTEtYTtjb25zdCBlPXMqaCtsKmQrYypwK3UqZixuPWU+PTA/MTotMSxpPTEtZSplO2lmKGk+TnVtYmVyLkVQU0lMT04pe2NvbnN0IHI9TWF0aC5zcXJ0KGkpLG89TWF0aC5hdGFuMihyLGUqbik7dD1NYXRoLnNpbih0Km8pL3IsYT1NYXRoLnNpbihhKm8pL3J9Y29uc3Qgcj1hKm47aWYocz1zKnQraCpyLGw9bCp0K2QqcixjPWMqdCtwKnIsdT11KnQrZipyLHQ9PT0xLWEpe2NvbnN0IHQ9MS9NYXRoLnNxcnQocypzK2wqbCtjKmMrdSp1KTtzKj10LGwqPXQsYyo9dCx1Kj10fX10W2VdPXMsdFtlKzFdPWwsdFtlKzJdPWMsdFtlKzNdPXV9c3RhdGljIG11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHQsZSxuLGkscixvKXtjb25zdCBhPW5baV0scz1uW2krMV0sbD1uW2krMl0sYz1uW2krM10sdT1yW29dLGg9cltvKzFdLGQ9cltvKzJdLHA9cltvKzNdO3JldHVybiB0W2VdPWEqcCtjKnUrcypkLWwqaCx0W2UrMV09cypwK2MqaCtsKnUtYSpkLHRbZSsyXT1sKnArYypkK2EqaC1zKnUsdFtlKzNdPWMqcC1hKnUtcypoLWwqZCx0fWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB3KCl7cmV0dXJuIHRoaXMuX3d9c2V0IHcodCl7dGhpcy5fdz10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4saSl7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX3c9aSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl93KX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQueCx0aGlzLl95PXQueSx0aGlzLl96PXQueix0aGlzLl93PXQudyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tRXVsZXIodCxlKXtpZighdHx8IXQuaXNFdWxlcil0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLlF1YXRlcm5pb246IC5zZXRGcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpO2NvbnN0IG49dC5feCxpPXQuX3kscj10Ll96LG89dC5fb3JkZXIsYT1NYXRoLmNvcyxzPU1hdGguc2luLGw9YShuLzIpLGM9YShpLzIpLHU9YShyLzIpLGg9cyhuLzIpLGQ9cyhpLzIpLHA9cyhyLzIpO3N3aXRjaChvKXtjYXNlIlhZWiI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIllYWiI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztjYXNlIlpYWSI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIlpZWCI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztjYXNlIllaWCI6dGhpcy5feD1oKmMqdStsKmQqcCx0aGlzLl95PWwqZCp1K2gqYypwLHRoaXMuX3o9bCpjKnAtaCpkKnUsdGhpcy5fdz1sKmMqdS1oKmQqcDticmVhaztjYXNlIlhaWSI6dGhpcy5feD1oKmMqdS1sKmQqcCx0aGlzLl95PWwqZCp1LWgqYypwLHRoaXMuX3o9bCpjKnAraCpkKnUsdGhpcy5fdz1sKmMqdStoKmQqcDticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrbyl9cmV0dXJuITEhPT1lJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tQXhpc0FuZ2xlKHQsZSl7Y29uc3Qgbj1lLzIsaT1NYXRoLnNpbihuKTtyZXR1cm4gdGhpcy5feD10LngqaSx0aGlzLl95PXQueSppLHRoaXMuX3o9dC56KmksdGhpcy5fdz1NYXRoLmNvcyhuKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUm90YXRpb25NYXRyaXgodCl7Y29uc3QgZT10LmVsZW1lbnRzLG49ZVswXSxpPWVbNF0scj1lWzhdLG89ZVsxXSxhPWVbNV0scz1lWzldLGw9ZVsyXSxjPWVbNl0sdT1lWzEwXSxoPW4rYSt1O2lmKGg+MCl7Y29uc3QgdD0uNS9NYXRoLnNxcnQoaCsxKTt0aGlzLl93PS4yNS90LHRoaXMuX3g9KGMtcykqdCx0aGlzLl95PShyLWwpKnQsdGhpcy5fej0oby1pKSp0fWVsc2UgaWYobj5hJiZuPnUpe2NvbnN0IHQ9MipNYXRoLnNxcnQoMStuLWEtdSk7dGhpcy5fdz0oYy1zKS90LHRoaXMuX3g9LjI1KnQsdGhpcy5feT0oaStvKS90LHRoaXMuX3o9KHIrbCkvdH1lbHNlIGlmKGE+dSl7Y29uc3QgdD0yKk1hdGguc3FydCgxK2Etbi11KTt0aGlzLl93PShyLWwpL3QsdGhpcy5feD0oaStvKS90LHRoaXMuX3k9LjI1KnQsdGhpcy5fej0ocytjKS90fWVsc2V7Y29uc3QgdD0yKk1hdGguc3FydCgxK3Utbi1hKTt0aGlzLl93PShvLWkpL3QsdGhpcy5feD0ocitsKS90LHRoaXMuX3k9KHMrYykvdCx0aGlzLl96PS4yNSp0fXJldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tVW5pdFZlY3RvcnModCxlKXtsZXQgbj10LmRvdChlKSsxO3JldHVybiBuPE51bWJlci5FUFNJTE9OPyhuPTAsTWF0aC5hYnModC54KT5NYXRoLmFicyh0LnopPyh0aGlzLl94PS10LnksdGhpcy5feT10LngsdGhpcy5fej0wLHRoaXMuX3c9bik6KHRoaXMuX3g9MCx0aGlzLl95PS10LnosdGhpcy5fej10LnksdGhpcy5fdz1uKSk6KHRoaXMuX3g9dC55KmUuei10LnoqZS55LHRoaXMuX3k9dC56KmUueC10LngqZS56LHRoaXMuX3o9dC54KmUueS10LnkqZS54LHRoaXMuX3c9biksdGhpcy5ub3JtYWxpemUoKX1hbmdsZVRvKHQpe3JldHVybiAyKk1hdGguYWNvcyhNYXRoLmFicyhfNXQodGhpcy5kb3QodCksLTEsMSkpKX1yb3RhdGVUb3dhcmRzKHQsZSl7Y29uc3Qgbj10aGlzLmFuZ2xlVG8odCk7aWYoMD09PW4pcmV0dXJuIHRoaXM7Y29uc3QgaT1NYXRoLm1pbigxLGUvbik7cmV0dXJuIHRoaXMuc2xlcnAodCxpKSx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDAsMCwwLDEpfWludmVydCgpe3JldHVybiB0aGlzLmNvbmp1Z2F0ZSgpfWNvbmp1Z2F0ZSgpe3JldHVybiB0aGlzLl94Kj0tMSx0aGlzLl95Kj0tMSx0aGlzLl96Kj0tMSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMuX3gqdC5feCt0aGlzLl95KnQuX3krdGhpcy5feip0Ll96K3RoaXMuX3cqdC5fd31sZW5ndGhTcSgpe3JldHVybiB0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3d9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3cpfW5vcm1hbGl6ZSgpe2xldCB0PXRoaXMubGVuZ3RoKCk7cmV0dXJuIDA9PT10Pyh0aGlzLl94PTAsdGhpcy5feT0wLHRoaXMuX3o9MCx0aGlzLl93PTEpOih0PTEvdCx0aGlzLl94PXRoaXMuX3gqdCx0aGlzLl95PXRoaXMuX3kqdCx0aGlzLl96PXRoaXMuX3oqdCx0aGlzLl93PXRoaXMuX3cqdCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVF1YXRlcm5pb25zKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCxlKSk6dGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LHRoaXMpfW11bHRpcGx5UXVhdGVybmlvbnModCxlKXtjb25zdCBuPXQuX3gsaT10Ll95LHI9dC5feixvPXQuX3csYT1lLl94LHM9ZS5feSxsPWUuX3osYz1lLl93O3JldHVybiB0aGlzLl94PW4qYytvKmEraSpsLXIqcyx0aGlzLl95PWkqYytvKnMrciphLW4qbCx0aGlzLl96PXIqYytvKmwrbipzLWkqYSx0aGlzLl93PW8qYy1uKmEtaSpzLXIqbCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycCh0LGUpe2lmKDA9PT1lKXJldHVybiB0aGlzO2lmKDE9PT1lKXJldHVybiB0aGlzLmNvcHkodCk7Y29uc3Qgbj10aGlzLl94LGk9dGhpcy5feSxyPXRoaXMuX3osbz10aGlzLl93O2xldCBhPW8qdC5fdytuKnQuX3graSp0Ll95K3IqdC5fejtpZihhPDA/KHRoaXMuX3c9LXQuX3csdGhpcy5feD0tdC5feCx0aGlzLl95PS10Ll95LHRoaXMuX3o9LXQuX3osYT0tYSk6dGhpcy5jb3B5KHQpLGE+PTEpcmV0dXJuIHRoaXMuX3c9byx0aGlzLl94PW4sdGhpcy5feT1pLHRoaXMuX3o9cix0aGlzO2NvbnN0IHM9MS1hKmE7aWYoczw9TnVtYmVyLkVQU0lMT04pe2NvbnN0IHQ9MS1lO3JldHVybiB0aGlzLl93PXQqbytlKnRoaXMuX3csdGhpcy5feD10Km4rZSp0aGlzLl94LHRoaXMuX3k9dCppK2UqdGhpcy5feSx0aGlzLl96PXQqcitlKnRoaXMuX3osdGhpcy5ub3JtYWxpemUoKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jb25zdCBsPU1hdGguc3FydChzKSxjPU1hdGguYXRhbjIobCxhKSx1PU1hdGguc2luKCgxLWUpKmMpL2wsaD1NYXRoLnNpbihlKmMpL2w7cmV0dXJuIHRoaXMuX3c9byp1K3RoaXMuX3cqaCx0aGlzLl94PW4qdSt0aGlzLl94KmgsdGhpcy5feT1pKnUrdGhpcy5feSpoLHRoaXMuX3o9cip1K3RoaXMuX3oqaCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycFF1YXRlcm5pb25zKHQsZSxuKXtyZXR1cm4gdGhpcy5jb3B5KHQpLnNsZXJwKGUsbil9cmFuZG9tKCl7Y29uc3QgdD1NYXRoLnJhbmRvbSgpLGU9TWF0aC5zcXJ0KDEtdCksbj1NYXRoLnNxcnQodCksaT0yKk1hdGguUEkqTWF0aC5yYW5kb20oKSxyPTIqTWF0aC5QSSpNYXRoLnJhbmRvbSgpO3JldHVybiB0aGlzLnNldChlKk1hdGguY29zKGkpLG4qTWF0aC5zaW4ociksbipNYXRoLmNvcyhyKSxlKk1hdGguc2luKGkpKX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX3c9PT10aGlzLl93fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMuX3g9dFtlXSx0aGlzLl95PXRbZSsxXSx0aGlzLl96PXRbZSsyXSx0aGlzLl93PXRbZSszXSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl93LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLl94PXQuZ2V0WChlKSx0aGlzLl95PXQuZ2V0WShlKSx0aGlzLl96PXQuZ2V0WihlKSx0aGlzLl93PXQuZ2V0VyhlKSx0aGlzfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fW8zdC5wcm90b3R5cGUuaXNRdWF0ZXJuaW9uPSEwO2NsYXNzIGEzdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW59c2V0KHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49dGhpcy56KSx0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztjYXNlIDI6dGhpcy56PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzfWFkZCh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5VmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVZlY3RvcnModCxlKSk6KHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMpfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzfW11bHRpcGx5VmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54KmUueCx0aGlzLnk9dC55KmUueSx0aGlzLno9dC56KmUueix0aGlzfWFwcGx5RXVsZXIodCl7cmV0dXJuIHQmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLmFwcGx5RXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpLHRoaXMuYXBwbHlRdWF0ZXJuaW9uKGwzdC5zZXRGcm9tRXVsZXIodCkpfWFwcGx5QXhpc0FuZ2xlKHQsZSl7cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKGwzdC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSkpfWFwcGx5TWF0cml4Myh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1yWzBdKmUrclszXSpuK3JbNl0qaSx0aGlzLnk9clsxXSplK3JbNF0qbityWzddKmksdGhpcy56PXJbMl0qZStyWzVdKm4rcls4XSppLHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXgzKHQpLm5vcm1hbGl6ZSgpfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHMsbz0xLyhyWzNdKmUrcls3XSpuK3JbMTFdKmkrclsxNV0pO3JldHVybiB0aGlzLng9KHJbMF0qZStyWzRdKm4rcls4XSppK3JbMTJdKSpvLHRoaXMueT0oclsxXSplK3JbNV0qbityWzldKmkrclsxM10pKm8sdGhpcy56PShyWzJdKmUrcls2XSpuK3JbMTBdKmkrclsxNF0pKm8sdGhpc31hcHBseVF1YXRlcm5pb24odCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10Lngsbz10LnksYT10Lnoscz10LncsbD1zKmUrbyppLWEqbixjPXMqbithKmUtcippLHU9cyppK3Iqbi1vKmUsaD0tciplLW8qbi1hKmk7cmV0dXJuIHRoaXMueD1sKnMraCotcitjKi1hLXUqLW8sdGhpcy55PWMqcytoKi1vK3UqLXItbCotYSx0aGlzLno9dSpzK2gqLWErbCotby1jKi1yLHRoaXN9cHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZEludmVyc2UpLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXgpfXVucHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpfXRyYW5zZm9ybURpcmVjdGlvbih0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1yWzBdKmUrcls0XSpuK3JbOF0qaSx0aGlzLnk9clsxXSplK3JbNV0qbityWzldKmksdGhpcy56PXJbMl0qZStyWzZdKm4rclsxMF0qaSx0aGlzLm5vcm1hbGl6ZSgpfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpcy56Lz10LnosdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4oZS56LHRoaXMueikpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy56KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0Lnp9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnp9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueil9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXMuej10LnorKGUuei10LnopKm4sdGhpc31jcm9zcyh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5jcm9zc1ZlY3RvcnModCxlKSk6dGhpcy5jcm9zc1ZlY3RvcnModGhpcyx0KX1jcm9zc1ZlY3RvcnModCxlKXtjb25zdCBuPXQueCxpPXQueSxyPXQueixvPWUueCxhPWUueSxzPWUuejtyZXR1cm4gdGhpcy54PWkqcy1yKmEsdGhpcy55PXIqby1uKnMsdGhpcy56PW4qYS1pKm8sdGhpc31wcm9qZWN0T25WZWN0b3IodCl7Y29uc3QgZT10Lmxlbmd0aFNxKCk7aWYoMD09PWUpcmV0dXJuIHRoaXMuc2V0KDAsMCwwKTtjb25zdCBuPXQuZG90KHRoaXMpL2U7cmV0dXJuIHRoaXMuY29weSh0KS5tdWx0aXBseVNjYWxhcihuKX1wcm9qZWN0T25QbGFuZSh0KXtyZXR1cm4gczN0LmNvcHkodGhpcykucHJvamVjdE9uVmVjdG9yKHQpLHRoaXMuc3ViKHMzdCl9cmVmbGVjdCh0KXtyZXR1cm4gdGhpcy5zdWIoczN0LmNvcHkodCkubXVsdGlwbHlTY2FsYXIoMip0aGlzLmRvdCh0KSkpfWFuZ2xlVG8odCl7Y29uc3QgZT1NYXRoLnNxcnQodGhpcy5sZW5ndGhTcSgpKnQubGVuZ3RoU3EoKSk7aWYoMD09PWUpcmV0dXJuIE1hdGguUEkvMjtjb25zdCBuPXRoaXMuZG90KHQpL2U7cmV0dXJuIE1hdGguYWNvcyhfNXQobiwtMSwxKSl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2NvbnN0IGU9dGhpcy54LXQueCxuPXRoaXMueS10LnksaT10aGlzLnotdC56O3JldHVybiBlKmUrbipuK2kqaX1tYW5oYXR0YW5EaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLngtdC54KStNYXRoLmFicyh0aGlzLnktdC55KStNYXRoLmFicyh0aGlzLnotdC56KX1zZXRGcm9tU3BoZXJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21TcGhlcmljYWxDb29yZHModC5yYWRpdXMsdC5waGksdC50aGV0YSl9c2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LGUsbil7Y29uc3QgaT1NYXRoLnNpbihlKSp0O3JldHVybiB0aGlzLng9aSpNYXRoLnNpbihuKSx0aGlzLnk9TWF0aC5jb3MoZSkqdCx0aGlzLno9aSpNYXRoLmNvcyhuKSx0aGlzfXNldEZyb21DeWxpbmRyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModC5yYWRpdXMsdC50aGV0YSx0LnkpfXNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LGUsbil7cmV0dXJuIHRoaXMueD10Kk1hdGguc2luKGUpLHRoaXMueT1uLHRoaXMuej10Kk1hdGguY29zKGUpLHRoaXN9c2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWVbMTJdLHRoaXMueT1lWzEzXSx0aGlzLno9ZVsxNF0sdGhpc31zZXRGcm9tTWF0cml4U2NhbGUodCl7Y29uc3QgZT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxuPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLGk9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMikubGVuZ3RoKCk7cmV0dXJuIHRoaXMueD1lLHRoaXMueT1uLHRoaXMuej1pLHRoaXN9c2V0RnJvbU1hdHJpeENvbHVtbih0LGUpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLDQqZSl9c2V0RnJvbU1hdHJpeDNDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cywzKmUpfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMuen1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXMuej10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzLno9dC5nZXRaKGUpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXN9cmFuZG9tRGlyZWN0aW9uKCl7Y29uc3QgdD0yKihNYXRoLnJhbmRvbSgpLS41KSxlPU1hdGgucmFuZG9tKCkqTWF0aC5QSSoyLG49TWF0aC5zcXJ0KDEtdCoqMik7cmV0dXJuIHRoaXMueD1uKk1hdGguY29zKGUpLHRoaXMueT1uKk1hdGguc2luKGUpLHRoaXMuej10LHRoaXN9KltTeW1ib2wuaXRlcmF0b3JdKCl7eWllbGQgdGhpcy54LHlpZWxkIHRoaXMueSx5aWVsZCB0aGlzLnp9fWEzdC5wcm90b3R5cGUuaXNWZWN0b3IzPSEwO2NvbnN0IHMzdD1uZXcgYTN0LGwzdD1uZXcgbzN0O2NsYXNzIGMzdHtjb25zdHJ1Y3Rvcih0PW5ldyBhM3QoMS8wLDEvMCwxLzApLGU9bmV3IGEzdCgtMS8wLC0xLzAsLTEvMCkpe3RoaXMubWluPXQsdGhpcy5tYXg9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KGUpLHRoaXN9c2V0RnJvbUFycmF5KHQpe2xldCBlPTEvMCxuPTEvMCxpPTEvMCxyPS0xLzAsbz0tMS8wLGE9LTEvMDtmb3IobGV0IHM9MCxsPXQubGVuZ3RoO3M8bDtzKz0zKXtjb25zdCBsPXRbc10sYz10W3MrMV0sdT10W3MrMl07bDxlJiYoZT1sKSxjPG4mJihuPWMpLHU8aSYmKGk9dSksbD5yJiYocj1sKSxjPm8mJihvPWMpLHU+YSYmKGE9dSl9cmV0dXJuIHRoaXMubWluLnNldChlLG4saSksdGhpcy5tYXguc2V0KHIsbyxhKSx0aGlzfXNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCl7bGV0IGU9MS8wLG49MS8wLGk9MS8wLHI9LTEvMCxvPS0xLzAsYT0tMS8wO2ZvcihsZXQgcz0wLGw9dC5jb3VudDtzPGw7cysrKXtjb25zdCBsPXQuZ2V0WChzKSxjPXQuZ2V0WShzKSx1PXQuZ2V0WihzKTtsPGUmJihlPWwpLGM8biYmKG49YyksdTxpJiYoaT11KSxsPnImJihyPWwpLGM+byYmKG89YyksdT5hJiYoYT11KX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbixpKSx0aGlzLm1heC5zZXQocixvLGEpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtlXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxlKXtjb25zdCBuPWgzdC5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIobiksdGhpcy5tYXguY29weSh0KS5hZGQobiksdGhpc31zZXRGcm9tT2JqZWN0KHQsZT0hMSl7cmV0dXJuIHRoaXMubWFrZUVtcHR5KCksdGhpcy5leHBhbmRCeU9iamVjdCh0LGUpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT10aGlzLm1pbi56PTEvMCx0aGlzLm1heC54PXRoaXMubWF4Lnk9dGhpcy5tYXguej0tMS8wLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueXx8dGhpcy5tYXguejx0aGlzLm1pbi56fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfWdldFNpemUodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCwwKTp0LnN1YlZlY3RvcnModGhpcy5tYXgsdGhpcy5taW4pfWV4cGFuZEJ5UG9pbnQodCl7cmV0dXJuIHRoaXMubWluLm1pbih0KSx0aGlzLm1heC5tYXgodCksdGhpc31leHBhbmRCeVZlY3Rvcih0KXtyZXR1cm4gdGhpcy5taW4uc3ViKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWV4cGFuZEJ5U2NhbGFyKHQpe3JldHVybiB0aGlzLm1pbi5hZGRTY2FsYXIoLXQpLHRoaXMubWF4LmFkZFNjYWxhcih0KSx0aGlzfWV4cGFuZEJ5T2JqZWN0KHQsZT0hMSl7dC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSk7Y29uc3Qgbj10Lmdlb21ldHJ5O2lmKHZvaWQgMCE9PW4paWYoZSYmbnVsbCE9bi5hdHRyaWJ1dGVzJiZ2b2lkIDAhPT1uLmF0dHJpYnV0ZXMucG9zaXRpb24pe2NvbnN0IGU9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2ZvcihsZXQgbj0wLGk9ZS5jb3VudDtuPGk7bisrKWgzdC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsbikuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuZXhwYW5kQnlQb2ludChoM3QpfWVsc2UgbnVsbD09PW4uYm91bmRpbmdCb3gmJm4uY29tcHV0ZUJvdW5kaW5nQm94KCksZDN0LmNvcHkobi5ib3VuZGluZ0JveCksZDN0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLnVuaW9uKGQzdCk7Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLG49aS5sZW5ndGg7dDxuO3QrKyl0aGlzLmV4cGFuZEJ5T2JqZWN0KGlbdF0sZSk7cmV0dXJuIHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55fHx0Lno8dGhpcy5taW4uenx8dC56PnRoaXMubWF4LnopfWNvbnRhaW5zQm94KHQpe3JldHVybiB0aGlzLm1pbi54PD10Lm1pbi54JiZ0Lm1heC54PD10aGlzLm1heC54JiZ0aGlzLm1pbi55PD10Lm1pbi55JiZ0Lm1heC55PD10aGlzLm1heC55JiZ0aGlzLm1pbi56PD10Lm1pbi56JiZ0Lm1heC56PD10aGlzLm1heC56fWdldFBhcmFtZXRlcih0LGUpe3JldHVybiBlLnNldCgodC54LXRoaXMubWluLngpLyh0aGlzLm1heC54LXRoaXMubWluLngpLCh0LnktdGhpcy5taW4ueSkvKHRoaXMubWF4LnktdGhpcy5taW4ueSksKHQuei10aGlzLm1pbi56KS8odGhpcy5tYXguei10aGlzLm1pbi56KSl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4hKHQubWF4Lng8dGhpcy5taW4ueHx8dC5taW4ueD50aGlzLm1heC54fHx0Lm1heC55PHRoaXMubWluLnl8fHQubWluLnk+dGhpcy5tYXgueXx8dC5tYXguejx0aGlzLm1pbi56fHx0Lm1pbi56PnRoaXMubWF4LnopfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHRoaXMuY2xhbXBQb2ludCh0LmNlbnRlcixoM3QpLGgzdC5kaXN0YW5jZVRvU3F1YXJlZCh0LmNlbnRlcik8PXQucmFkaXVzKnQucmFkaXVzfWludGVyc2VjdHNQbGFuZSh0KXtsZXQgZSxuO3JldHVybiB0Lm5vcm1hbC54PjA/KGU9dC5ub3JtYWwueCp0aGlzLm1pbi54LG49dC5ub3JtYWwueCp0aGlzLm1heC54KTooZT10Lm5vcm1hbC54KnRoaXMubWF4Lngsbj10Lm5vcm1hbC54KnRoaXMubWluLngpLHQubm9ybWFsLnk+MD8oZSs9dC5ub3JtYWwueSp0aGlzLm1pbi55LG4rPXQubm9ybWFsLnkqdGhpcy5tYXgueSk6KGUrPXQubm9ybWFsLnkqdGhpcy5tYXgueSxuKz10Lm5vcm1hbC55KnRoaXMubWluLnkpLHQubm9ybWFsLno+MD8oZSs9dC5ub3JtYWwueip0aGlzLm1pbi56LG4rPXQubm9ybWFsLnoqdGhpcy5tYXgueik6KGUrPXQubm9ybWFsLnoqdGhpcy5tYXgueixuKz10Lm5vcm1hbC56KnRoaXMubWluLnopLGU8PS10LmNvbnN0YW50JiZuPj0tdC5jb25zdGFudH1pbnRlcnNlY3RzVHJpYW5nbGUodCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuITE7dGhpcy5nZXRDZW50ZXIodjN0KSxiM3Quc3ViVmVjdG9ycyh0aGlzLm1heCx2M3QpLHAzdC5zdWJWZWN0b3JzKHQuYSx2M3QpLGYzdC5zdWJWZWN0b3JzKHQuYix2M3QpLG0zdC5zdWJWZWN0b3JzKHQuYyx2M3QpLGczdC5zdWJWZWN0b3JzKGYzdCxwM3QpLF8zdC5zdWJWZWN0b3JzKG0zdCxmM3QpLHkzdC5zdWJWZWN0b3JzKHAzdCxtM3QpO2xldCBlPVswLC1nM3QueixnM3QueSwwLC1fM3QueixfM3QueSwwLC15M3Queix5M3QueSxnM3QueiwwLC1nM3QueCxfM3QueiwwLC1fM3QueCx5M3QueiwwLC15M3QueCwtZzN0LnksZzN0LngsMCwtXzN0LnksXzN0LngsMCwteTN0LnkseTN0LngsMF07cmV0dXJuISFTM3QoZSxwM3QsZjN0LG0zdCxiM3QpJiYoZT1bMSwwLDAsMCwxLDAsMCwwLDFdLCEhUzN0KGUscDN0LGYzdCxtM3QsYjN0KSYmKHgzdC5jcm9zc1ZlY3RvcnMoZzN0LF8zdCksZT1beDN0LngseDN0LnkseDN0LnpdLFMzdChlLHAzdCxmM3QsbTN0LGIzdCkpKX1jbGFtcFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBoM3QuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWdldEJvdW5kaW5nU3BoZXJlKHQpe3JldHVybiB0aGlzLmdldENlbnRlcih0LmNlbnRlciksdC5yYWRpdXM9LjUqdGhpcy5nZXRTaXplKGgzdCkubGVuZ3RoKCksdH1pbnRlcnNlY3QodCl7cmV0dXJuIHRoaXMubWluLm1heCh0Lm1pbiksdGhpcy5tYXgubWluKHQubWF4KSx0aGlzLmlzRW1wdHkoKSYmdGhpcy5tYWtlRW1wdHkoKSx0aGlzfXVuaW9uKHQpe3JldHVybiB0aGlzLm1pbi5taW4odC5taW4pLHRoaXMubWF4Lm1heCh0Lm1heCksdGhpc31hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpfHwodTN0WzBdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLHUzdFsxXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSx1M3RbMl0uc2V0KHRoaXMubWluLngsdGhpcy5tYXgueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksdTN0WzNdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLHUzdFs0XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSx1M3RbNV0uc2V0KHRoaXMubWF4LngsdGhpcy5taW4ueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksdTN0WzZdLnNldCh0aGlzLm1heC54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLHUzdFs3XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldEZyb21Qb2ludHModTN0KSksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMubWluLmFkZCh0KSx0aGlzLm1heC5hZGQodCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubWluLmVxdWFscyh0aGlzLm1pbikmJnQubWF4LmVxdWFscyh0aGlzLm1heCl9fWMzdC5wcm90b3R5cGUuaXNCb3gzPSEwO2NvbnN0IHUzdD1bbmV3IGEzdCxuZXcgYTN0LG5ldyBhM3QsbmV3IGEzdCxuZXcgYTN0LG5ldyBhM3QsbmV3IGEzdCxuZXcgYTN0XSxoM3Q9bmV3IGEzdCxkM3Q9bmV3IGMzdCxwM3Q9bmV3IGEzdCxmM3Q9bmV3IGEzdCxtM3Q9bmV3IGEzdCxnM3Q9bmV3IGEzdCxfM3Q9bmV3IGEzdCx5M3Q9bmV3IGEzdCx2M3Q9bmV3IGEzdCxiM3Q9bmV3IGEzdCx4M3Q9bmV3IGEzdCx3M3Q9bmV3IGEzdDtmdW5jdGlvbiBTM3QodCxlLG4saSxyKXtmb3IobGV0IG89MCxhPXQubGVuZ3RoLTM7bzw9YTtvKz0zKXt3M3QuZnJvbUFycmF5KHQsbyk7Y29uc3QgYT1yLngqTWF0aC5hYnModzN0LngpK3IueSpNYXRoLmFicyh3M3QueSkrci56Kk1hdGguYWJzKHczdC56KSxzPWUuZG90KHczdCksbD1uLmRvdCh3M3QpLGM9aS5kb3QodzN0KTtpZihNYXRoLm1heCgtTWF0aC5tYXgocyxsLGMpLE1hdGgubWluKHMsbCxjKSk+YSlyZXR1cm4hMX1yZXR1cm4hMH1jb25zdCBNM3Q9bmV3IGMzdCxFM3Q9bmV3IGEzdCxUM3Q9bmV3IGEzdCxDM3Q9bmV3IGEzdDtjbGFzcyBBM3R7Y29uc3RydWN0b3IodD1uZXcgYTN0LGU9LTEpe3RoaXMuY2VudGVyPXQsdGhpcy5yYWRpdXM9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5jZW50ZXIuY29weSh0KSx0aGlzLnJhZGl1cz1lLHRoaXN9c2V0RnJvbVBvaW50cyh0LGUpe2NvbnN0IG49dGhpcy5jZW50ZXI7dm9pZCAwIT09ZT9uLmNvcHkoZSk6TTN0LnNldEZyb21Qb2ludHModCkuZ2V0Q2VudGVyKG4pO2xldCBpPTA7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKWk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKHRbZV0pKTtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KGkpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMucmFkaXVzPDB9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMuY2VudGVyLnNldCgwLDAsMCksdGhpcy5yYWRpdXM9LTEsdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiB0LmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXN9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiB0LmRpc3RhbmNlVG8odGhpcy5jZW50ZXIpLXRoaXMucmFkaXVzfWludGVyc2VjdHNTcGhlcmUodCl7Y29uc3QgZT10aGlzLnJhZGl1cyt0LnJhZGl1cztyZXR1cm4gdC5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD1lKmV9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzU3BoZXJlKHRoaXMpfWludGVyc2VjdHNQbGFuZSh0KXtyZXR1cm4gTWF0aC5hYnModC5kaXN0YW5jZVRvUG9pbnQodGhpcy5jZW50ZXIpKTw9dGhpcy5yYWRpdXN9Y2xhbXBQb2ludCh0LGUpe2NvbnN0IG49dGhpcy5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQodCk7cmV0dXJuIGUuY29weSh0KSxuPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzJiYoZS5zdWIodGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLGUubXVsdGlwbHlTY2FsYXIodGhpcy5yYWRpdXMpLmFkZCh0aGlzLmNlbnRlcikpLGV9Z2V0Qm91bmRpbmdCb3godCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpPyh0Lm1ha2VFbXB0eSgpLHQpOih0LnNldCh0aGlzLmNlbnRlcix0aGlzLmNlbnRlciksdC5leHBhbmRCeVNjYWxhcih0aGlzLnJhZGl1cyksdCl9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmNlbnRlci5hcHBseU1hdHJpeDQodCksdGhpcy5yYWRpdXM9dGhpcy5yYWRpdXMqdC5nZXRNYXhTY2FsZU9uQXhpcygpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLmNlbnRlci5hZGQodCksdGhpc31leHBhbmRCeVBvaW50KHQpe0MzdC5zdWJWZWN0b3JzKHQsdGhpcy5jZW50ZXIpO2NvbnN0IGU9QzN0Lmxlbmd0aFNxKCk7aWYoZT50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyl7Y29uc3QgdD1NYXRoLnNxcnQoZSksbj0uNSoodC10aGlzLnJhZGl1cyk7dGhpcy5jZW50ZXIuYWRkKEMzdC5tdWx0aXBseVNjYWxhcihuL3QpKSx0aGlzLnJhZGl1cys9bn1yZXR1cm4gdGhpc311bmlvbih0KXtyZXR1cm4hMD09PXRoaXMuY2VudGVyLmVxdWFscyh0LmNlbnRlcik/VDN0LnNldCgwLDAsMSkubXVsdGlwbHlTY2FsYXIodC5yYWRpdXMpOlQzdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0LnJhZGl1cyksdGhpcy5leHBhbmRCeVBvaW50KEUzdC5jb3B5KHQuY2VudGVyKS5hZGQoVDN0KSksdGhpcy5leHBhbmRCeVBvaW50KEUzdC5jb3B5KHQuY2VudGVyKS5zdWIoVDN0KSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJnQucmFkaXVzPT09dGhpcy5yYWRpdXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNvbnN0IGszdD1uZXcgYTN0LFAzdD1uZXcgYTN0LEwzdD1uZXcgYTN0LEkzdD1uZXcgYTN0LE4zdD1uZXcgYTN0LFIzdD1uZXcgYTN0LE8zdD1uZXcgYTN0O2NsYXNzIHozdHtjb25zdHJ1Y3Rvcih0PW5ldyBhM3QsZT1uZXcgYTN0KDAsMCwtMSkpe3RoaXMub3JpZ2luPXQsdGhpcy5kaXJlY3Rpb249ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KGUpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLm9yaWdpbil9bG9va0F0KHQpe3JldHVybiB0aGlzLmRpcmVjdGlvbi5jb3B5KHQpLnN1Yih0aGlzLm9yaWdpbikubm9ybWFsaXplKCksdGhpc31yZWNhc3QodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodGhpcy5hdCh0LGszdCkpLHRoaXN9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2Uuc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKTtjb25zdCBuPWUuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbjwwP2UuY29weSh0aGlzLm9yaWdpbik6ZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2NvbnN0IGU9azN0LnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gZTwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihrM3QuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoZSkuYWRkKHRoaXMub3JpZ2luKSxrM3QuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlU3FUb1NlZ21lbnQodCxlLG4saSl7UDN0LmNvcHkodCkuYWRkKGUpLm11bHRpcGx5U2NhbGFyKC41KSxMM3QuY29weShlKS5zdWIodCkubm9ybWFsaXplKCksSTN0LmNvcHkodGhpcy5vcmlnaW4pLnN1YihQM3QpO2NvbnN0IHI9LjUqdC5kaXN0YW5jZVRvKGUpLG89LXRoaXMuZGlyZWN0aW9uLmRvdChMM3QpLGE9STN0LmRvdCh0aGlzLmRpcmVjdGlvbikscz0tSTN0LmRvdChMM3QpLGw9STN0Lmxlbmd0aFNxKCksYz1NYXRoLmFicygxLW8qbyk7bGV0IHUsaCxkLHA7aWYoYz4wKWlmKHU9bypzLWEsaD1vKmEtcyxwPXIqYyx1Pj0wKWlmKGg+PS1wKWlmKGg8PXApe2NvbnN0IHQ9MS9jO3UqPXQsaCo9dCxkPXUqKHUrbypoKzIqYSkraCoobyp1K2grMipzKStsfWVsc2UgaD1yLHU9TWF0aC5tYXgoMCwtKG8qaCthKSksZD0tdSp1K2gqKGgrMipzKStsO2Vsc2UgaD0tcix1PU1hdGgubWF4KDAsLShvKmgrYSkpLGQ9LXUqdStoKihoKzIqcykrbDtlbHNlIGg8PS1wPyh1PU1hdGgubWF4KDAsLSgtbypyK2EpKSxoPXU+MD8tcjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTpoPD1wPyh1PTAsaD1NYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD1oKihoKzIqcykrbCk6KHU9TWF0aC5tYXgoMCwtKG8qcithKSksaD11PjA/cjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTtlbHNlIGg9bz4wPy1yOnIsdT1NYXRoLm1heCgwLC0obypoK2EpKSxkPS11KnUraCooaCsyKnMpK2w7cmV0dXJuIG4mJm4uY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodSkuYWRkKHRoaXMub3JpZ2luKSxpJiZpLmNvcHkoTDN0KS5tdWx0aXBseVNjYWxhcihoKS5hZGQoUDN0KSxkfWludGVyc2VjdFNwaGVyZSh0LGUpe2szdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMub3JpZ2luKTtjb25zdCBuPWszdC5kb3QodGhpcy5kaXJlY3Rpb24pLGk9azN0LmRvdChrM3QpLW4qbixyPXQucmFkaXVzKnQucmFkaXVzO2lmKGk+cilyZXR1cm4gbnVsbDtjb25zdCBvPU1hdGguc3FydChyLWkpLGE9bi1vLHM9bitvO3JldHVybiBhPDAmJnM8MD9udWxsOnRoaXMuYXQoYTwwP3M6YSxlKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2NvbnN0IGU9dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPT09ZSlyZXR1cm4gMD09PXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT8wOm51bGw7Y29uc3Qgbj0tKHRoaXMub3JpZ2luLmRvdCh0Lm5vcm1hbCkrdC5jb25zdGFudCkvZTtyZXR1cm4gbj49MD9uOm51bGx9aW50ZXJzZWN0UGxhbmUodCxlKXtjb25zdCBuPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBudWxsPT09bj9udWxsOnRoaXMuYXQobixlKX1pbnRlcnNlY3RzUGxhbmUodCl7Y29uc3QgZT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbikqZTwwfWludGVyc2VjdEJveCh0LGUpe2xldCBuLGkscixvLGEscztjb25zdCBsPTEvdGhpcy5kaXJlY3Rpb24ueCxjPTEvdGhpcy5kaXJlY3Rpb24ueSx1PTEvdGhpcy5kaXJlY3Rpb24ueixoPXRoaXMub3JpZ2luO3JldHVybiBsPj0wPyhuPSh0Lm1pbi54LWgueCkqbCxpPSh0Lm1heC54LWgueCkqbCk6KG49KHQubWF4LngtaC54KSpsLGk9KHQubWluLngtaC54KSpsKSxjPj0wPyhyPSh0Lm1pbi55LWgueSkqYyxvPSh0Lm1heC55LWgueSkqYyk6KHI9KHQubWF4LnktaC55KSpjLG89KHQubWluLnktaC55KSpjKSxuPm98fHI+aT9udWxsOigocj5ufHxuIT1uKSYmKG49ciksKG88aXx8aSE9aSkmJihpPW8pLHU+PTA/KGE9KHQubWluLnotaC56KSp1LHM9KHQubWF4LnotaC56KSp1KTooYT0odC5tYXguei1oLnopKnUscz0odC5taW4uei1oLnopKnUpLG4+c3x8YT5pP251bGw6KChhPm58fG4hPW4pJiYobj1hKSwoczxpfHxpIT1pKSYmKGk9cyksaTwwP251bGw6dGhpcy5hdChuPj0wP246aSxlKSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIG51bGwhPT10aGlzLmludGVyc2VjdEJveCh0LGszdCl9aW50ZXJzZWN0VHJpYW5nbGUodCxlLG4saSxyKXtOM3Quc3ViVmVjdG9ycyhlLHQpLFIzdC5zdWJWZWN0b3JzKG4sdCksTzN0LmNyb3NzVmVjdG9ycyhOM3QsUjN0KTtsZXQgbyxhPXRoaXMuZGlyZWN0aW9uLmRvdChPM3QpO2lmKGE+MCl7aWYoaSlyZXR1cm4gbnVsbDtvPTF9ZWxzZXtpZighKGE8MCkpcmV0dXJuIG51bGw7bz0tMSxhPS1hfUkzdC5zdWJWZWN0b3JzKHRoaXMub3JpZ2luLHQpO2NvbnN0IHM9byp0aGlzLmRpcmVjdGlvbi5kb3QoUjN0LmNyb3NzVmVjdG9ycyhJM3QsUjN0KSk7aWYoczwwKXJldHVybiBudWxsO2NvbnN0IGw9byp0aGlzLmRpcmVjdGlvbi5kb3QoTjN0LmNyb3NzKEkzdCkpO2lmKGw8MClyZXR1cm4gbnVsbDtpZihzK2w+YSlyZXR1cm4gbnVsbDtjb25zdCBjPS1vKkkzdC5kb3QoTzN0KTtyZXR1cm4gYzwwP251bGw6dGhpcy5hdChjL2Escil9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLm9yaWdpbi5hcHBseU1hdHJpeDQodCksdGhpcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm9yaWdpbi5lcXVhbHModGhpcy5vcmlnaW4pJiZ0LmRpcmVjdGlvbi5lcXVhbHModGhpcy5kaXJlY3Rpb24pfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1jbGFzcyBEM3R7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXSxhcmd1bWVudHMubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IHRoZSBjb25zdHJ1Y3RvciBubyBsb25nZXIgcmVhZHMgYXJndW1lbnRzLiB1c2UgLnNldCgpIGluc3RlYWQuIil9c2V0KHQsZSxuLGkscixvLGEscyxsLGMsdSxoLGQscCxmLG0pe2NvbnN0IGc9dGhpcy5lbGVtZW50cztyZXR1cm4gZ1swXT10LGdbNF09ZSxnWzhdPW4sZ1sxMl09aSxnWzFdPXIsZ1s1XT1vLGdbOV09YSxnWzEzXT1zLGdbMl09bCxnWzZdPWMsZ1sxMF09dSxnWzE0XT1oLGdbM109ZCxnWzddPXAsZ1sxMV09ZixnWzE1XT1tLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgRDN0KS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9Y29weSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiBlWzBdPW5bMF0sZVsxXT1uWzFdLGVbMl09blsyXSxlWzNdPW5bM10sZVs0XT1uWzRdLGVbNV09bls1XSxlWzZdPW5bNl0sZVs3XT1uWzddLGVbOF09bls4XSxlWzldPW5bOV0sZVsxMF09blsxMF0sZVsxMV09blsxMV0sZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sZVsxNV09blsxNV0sdGhpc31jb3B5UG9zaXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sdGhpc31zZXRGcm9tTWF0cml4Myh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVszXSxlWzZdLDAsZVsxXSxlWzRdLGVbN10sMCxlWzJdLGVbNV0sZVs4XSwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMSksbi5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMiksdGhpc31tYWtlQmFzaXModCxlLG4pe3JldHVybiB0aGlzLnNldCh0LngsZS54LG4ueCwwLHQueSxlLnksbi55LDAsdC56LGUueixuLnosMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RSb3RhdGlvbih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzLGk9MS9CM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLHI9MS9CM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLG89MS9CM3Quc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiBlWzBdPW5bMF0qaSxlWzFdPW5bMV0qaSxlWzJdPW5bMl0qaSxlWzNdPTAsZVs0XT1uWzRdKnIsZVs1XT1uWzVdKnIsZVs2XT1uWzZdKnIsZVs3XT0wLGVbOF09bls4XSpvLGVbOV09bls5XSpvLGVbMTBdPW5bMTBdKm8sZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbUV1bGVyKHQpe3QmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm1ha2VSb3RhdGlvbkZyb21FdWxlcigpIG5vdyBleHBlY3RzIGEgRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lnosbz1NYXRoLmNvcyhuKSxhPU1hdGguc2luKG4pLHM9TWF0aC5jb3MoaSksbD1NYXRoLnNpbihpKSxjPU1hdGguY29zKHIpLHU9TWF0aC5zaW4ocik7aWYoIlhZWiI9PT10Lm9yZGVyKXtjb25zdCB0PW8qYyxuPW8qdSxpPWEqYyxyPWEqdTtlWzBdPXMqYyxlWzRdPS1zKnUsZVs4XT1sLGVbMV09bitpKmwsZVs1XT10LXIqbCxlWzldPS1hKnMsZVsyXT1yLXQqbCxlWzZdPWkrbipsLGVbMTBdPW8qc31lbHNlIGlmKCJZWFoiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10K3IqYSxlWzRdPWkqYS1uLGVbOF09bypsLGVbMV09byp1LGVbNV09bypjLGVbOV09LWEsZVsyXT1uKmEtaSxlWzZdPXIrdCphLGVbMTBdPW8qc31lbHNlIGlmKCJaWFkiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10LXIqYSxlWzRdPS1vKnUsZVs4XT1pK24qYSxlWzFdPW4raSphLGVbNV09bypjLGVbOV09ci10KmEsZVsyXT0tbypsLGVbNl09YSxlWzEwXT1vKnN9ZWxzZSBpZigiWllYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypjLG49byp1LGk9YSpjLHI9YSp1O2VbMF09cypjLGVbNF09aSpsLW4sZVs4XT10KmwrcixlWzFdPXMqdSxlWzVdPXIqbCt0LGVbOV09bipsLWksZVsyXT0tbCxlWzZdPWEqcyxlWzEwXT1vKnN9ZWxzZSBpZigiWVpYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypzLG49bypsLGk9YSpzLHI9YSpsO2VbMF09cypjLGVbNF09ci10KnUsZVs4XT1pKnUrbixlWzFdPXUsZVs1XT1vKmMsZVs5XT0tYSpjLGVbMl09LWwqYyxlWzZdPW4qdStpLGVbMTBdPXQtcip1fWVsc2UgaWYoIlhaWSI9PT10Lm9yZGVyKXtjb25zdCB0PW8qcyxuPW8qbCxpPWEqcyxyPWEqbDtlWzBdPXMqYyxlWzRdPS11LGVbOF09bCpjLGVbMV09dCp1K3IsZVs1XT1vKmMsZVs5XT1uKnUtaSxlWzJdPWkqdS1uLGVbNl09YSpjLGVbMTBdPXIqdSt0fXJldHVybiBlWzNdPTAsZVs3XT0wLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLmNvbXBvc2UoRjN0LHQsVjN0KX1sb29rQXQodCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gRzN0LnN1YlZlY3RvcnModCxlKSwwPT09RzN0Lmxlbmd0aFNxKCkmJihHM3Quej0xKSxHM3Qubm9ybWFsaXplKCksVTN0LmNyb3NzVmVjdG9ycyhuLEczdCksMD09PVUzdC5sZW5ndGhTcSgpJiYoMT09PU1hdGguYWJzKG4ueik/RzN0LngrPTFlLTQ6RzN0LnorPTFlLTQsRzN0Lm5vcm1hbGl6ZSgpLFUzdC5jcm9zc1ZlY3RvcnMobixHM3QpKSxVM3Qubm9ybWFsaXplKCksajN0LmNyb3NzVmVjdG9ycyhHM3QsVTN0KSxpWzBdPVUzdC54LGlbNF09ajN0LngsaVs4XT1HM3QueCxpWzFdPVUzdC55LGlbNV09ajN0LnksaVs5XT1HM3QueSxpWzJdPVUzdC56LGlbNl09ajN0LnosaVsxMF09RzN0LnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5TWF0cmljZXMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LGUpKTp0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxpPWUuZWxlbWVudHMscj10aGlzLmVsZW1lbnRzLG89blswXSxhPW5bNF0scz1uWzhdLGw9blsxMl0sYz1uWzFdLHU9bls1XSxoPW5bOV0sZD1uWzEzXSxwPW5bMl0sZj1uWzZdLG09blsxMF0sZz1uWzE0XSxfPW5bM10seT1uWzddLHY9blsxMV0sYj1uWzE1XSx4PWlbMF0sdz1pWzRdLFM9aVs4XSxNPWlbMTJdLEU9aVsxXSxUPWlbNV0sQz1pWzldLEE9aVsxM10saz1pWzJdLFA9aVs2XSxMPWlbMTBdLEk9aVsxNF0sTj1pWzNdLFI9aVs3XSxPPWlbMTFdLHo9aVsxNV07cmV0dXJuIHJbMF09byp4K2EqRStzKmsrbCpOLHJbNF09byp3K2EqVCtzKlArbCpSLHJbOF09bypTK2EqQytzKkwrbCpPLHJbMTJdPW8qTSthKkErcypJK2wqeixyWzFdPWMqeCt1KkUraCprK2QqTixyWzVdPWMqdyt1KlQraCpQK2QqUixyWzldPWMqUyt1KkMraCpMK2QqTyxyWzEzXT1jKk0rdSpBK2gqSStkKnosclsyXT1wKngrZipFK20qaytnKk4scls2XT1wKncrZipUK20qUCtnKlIsclsxMF09cCpTK2YqQyttKkwrZypPLHJbMTRdPXAqTStmKkErbSpJK2cqeixyWzNdPV8qeCt5KkUrdiprK2IqTixyWzddPV8qdyt5KlQrdipQK2IqUixyWzExXT1fKlMreSpDK3YqTCtiKk8sclsxNV09XypNK3kqQSt2KkkrYip6LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiBlWzBdKj10LGVbNF0qPXQsZVs4XSo9dCxlWzEyXSo9dCxlWzFdKj10LGVbNV0qPXQsZVs5XSo9dCxlWzEzXSo9dCxlWzJdKj10LGVbNl0qPXQsZVsxMF0qPXQsZVsxNF0qPXQsZVszXSo9dCxlWzddKj10LGVbMTFdKj10LGVbMTVdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFs0XSxpPXRbOF0scj10WzEyXSxvPXRbMV0sYT10WzVdLHM9dFs5XSxsPXRbMTNdLGM9dFsyXSx1PXRbNl0saD10WzEwXSxkPXRbMTRdO3JldHVybiB0WzNdKigrcipzKnUtaSpsKnUtciphKmgrbipsKmgraSphKmQtbipzKmQpK3RbN10qKCtlKnMqZC1lKmwqaCtyKm8qaC1pKm8qZCtpKmwqYy1yKnMqYykrdFsxMV0qKCtlKmwqdS1lKmEqZC1yKm8qdStuKm8qZCtyKmEqYy1uKmwqYykrdFsxNV0qKC1pKmEqYy1lKnMqdStlKmEqaCtpKm8qdS1uKm8qaCtuKnMqYyl9dHJhbnNwb3NlKCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzO2xldCBlO3JldHVybiBlPXRbMV0sdFsxXT10WzRdLHRbNF09ZSxlPXRbMl0sdFsyXT10WzhdLHRbOF09ZSxlPXRbNl0sdFs2XT10WzldLHRbOV09ZSxlPXRbM10sdFszXT10WzEyXSx0WzEyXT1lLGU9dFs3XSx0WzddPXRbMTNdLHRbMTNdPWUsZT10WzExXSx0WzExXT10WzE0XSx0WzE0XT1lLHRoaXN9c2V0UG9zaXRpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gdC5pc1ZlY3RvcjM/KGlbMTJdPXQueCxpWzEzXT10LnksaVsxNF09dC56KTooaVsxMl09dCxpWzEzXT1lLGlbMTRdPW4pLHRoaXN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9dFs5XSxoPXRbMTBdLGQ9dFsxMV0scD10WzEyXSxmPXRbMTNdLG09dFsxNF0sZz10WzE1XSxfPXUqbSpsLWYqaCpsK2YqcypkLWEqbSpkLXUqcypnK2EqaCpnLHk9cCpoKmwtYyptKmwtcCpzKmQrbyptKmQrYypzKmctbypoKmcsdj1jKmYqbC1wKnUqbCtwKmEqZC1vKmYqZC1jKmEqZytvKnUqZyxiPXAqdSpzLWMqZipzLXAqYSpoK28qZipoK2MqYSptLW8qdSptLHg9ZSpfK24qeStpKnYrcipiO2lmKDA9PT14KXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCB3PTEveDtyZXR1cm4gdFswXT1fKncsdFsxXT0oZipoKnItdSptKnItZippKmQrbiptKmQrdSppKmctbipoKmcpKncsdFsyXT0oYSptKnItZipzKnIrZippKmwtbiptKmwtYSppKmcrbipzKmcpKncsdFszXT0odSpzKnItYSpoKnItdSppKmwrbipoKmwrYSppKmQtbipzKmQpKncsdFs0XT15KncsdFs1XT0oYyptKnItcCpoKnIrcCppKmQtZSptKmQtYyppKmcrZSpoKmcpKncsdFs2XT0ocCpzKnItbyptKnItcCppKmwrZSptKmwrbyppKmctZSpzKmcpKncsdFs3XT0obypoKnItYypzKnIrYyppKmwtZSpoKmwtbyppKmQrZSpzKmQpKncsdFs4XT12KncsdFs5XT0ocCp1KnItYypmKnItcCpuKmQrZSpmKmQrYypuKmctZSp1KmcpKncsdFsxMF09KG8qZipyLXAqYSpyK3AqbipsLWUqZipsLW8qbipnK2UqYSpnKSp3LHRbMTFdPShjKmEqci1vKnUqci1jKm4qbCtlKnUqbCtvKm4qZC1lKmEqZCkqdyx0WzEyXT1iKncsdFsxM109KGMqZippLXAqdSppK3AqbipoLWUqZipoLWMqbiptK2UqdSptKSp3LHRbMTRdPShwKmEqaS1vKmYqaS1wKm4qcytlKmYqcytvKm4qbS1lKmEqbSkqdyx0WzE1XT0obyp1KmktYyphKmkrYypuKnMtZSp1KnMtbypuKmgrZSphKmgpKncsdGhpc31zY2FsZSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lno7cmV0dXJuIGVbMF0qPW4sZVs0XSo9aSxlWzhdKj1yLGVbMV0qPW4sZVs1XSo9aSxlWzldKj1yLGVbMl0qPW4sZVs2XSo9aSxlWzEwXSo9cixlWzNdKj1uLGVbN10qPWksZVsxMV0qPXIsdGhpc31nZXRNYXhTY2FsZU9uQXhpcygpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdLHRbNF0qdFs0XSt0WzVdKnRbNV0rdFs2XSp0WzZdLHRbOF0qdFs4XSt0WzldKnRbOV0rdFsxMF0qdFsxMF0pKX1tYWtlVHJhbnNsYXRpb24odCxlLG4pe3JldHVybiB0aGlzLnNldCgxLDAsMCx0LDAsMSwwLGUsMCwwLDEsbiwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvblgodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDAsZSwtbiwwLDAsbixlLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25ZKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoZSwwLG4sMCwwLDEsMCwwLC1uLDAsZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWih0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbkF4aXModCxlKXtjb25zdCBuPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSkscj0xLW4sbz10LngsYT10Lnkscz10LnosbD1yKm8sYz1yKmE7cmV0dXJuIHRoaXMuc2V0KGwqbytuLGwqYS1pKnMsbCpzK2kqYSwwLGwqYStpKnMsYyphK24sYypzLWkqbywwLGwqcy1pKmEsYypzK2kqbyxyKnMqcytuLDAsMCwwLDAsMSksdGhpc31tYWtlU2NhbGUodCxlLG4pe3JldHVybiB0aGlzLnNldCh0LDAsMCwwLDAsZSwwLDAsMCwwLG4sMCwwLDAsMCwxKSx0aGlzfW1ha2VTaGVhcih0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuc2V0KDEsbixyLDAsdCwxLG8sMCxlLGksMSwwLDAsMCwwLDEpLHRoaXN9Y29tcG9zZSh0LGUsbil7Y29uc3QgaT10aGlzLmVsZW1lbnRzLHI9ZS5feCxvPWUuX3ksYT1lLl96LHM9ZS5fdyxsPXIrcixjPW8rbyx1PWErYSxoPXIqbCxkPXIqYyxwPXIqdSxmPW8qYyxtPW8qdSxnPWEqdSxfPXMqbCx5PXMqYyx2PXMqdSxiPW4ueCx4PW4ueSx3PW4uejtyZXR1cm4gaVswXT0oMS0oZitnKSkqYixpWzFdPShkK3YpKmIsaVsyXT0ocC15KSpiLGlbM109MCxpWzRdPShkLXYpKngsaVs1XT0oMS0oaCtnKSkqeCxpWzZdPShtK18pKngsaVs3XT0wLGlbOF09KHAreSkqdyxpWzldPShtLV8pKncsaVsxMF09KDEtKGgrZikpKncsaVsxMV09MCxpWzEyXT10LngsaVsxM109dC55LGlbMTRdPXQueixpWzE1XT0xLHRoaXN9ZGVjb21wb3NlKHQsZSxuKXtjb25zdCBpPXRoaXMuZWxlbWVudHM7bGV0IHI9QjN0LnNldChpWzBdLGlbMV0saVsyXSkubGVuZ3RoKCk7Y29uc3Qgbz1CM3Quc2V0KGlbNF0saVs1XSxpWzZdKS5sZW5ndGgoKSxhPUIzdC5zZXQoaVs4XSxpWzldLGlbMTBdKS5sZW5ndGgoKTt0aGlzLmRldGVybWluYW50KCk8MCYmKHI9LXIpLHQueD1pWzEyXSx0Lnk9aVsxM10sdC56PWlbMTRdLEgzdC5jb3B5KHRoaXMpO2NvbnN0IHM9MS9yLGw9MS9vLGM9MS9hO3JldHVybiBIM3QuZWxlbWVudHNbMF0qPXMsSDN0LmVsZW1lbnRzWzFdKj1zLEgzdC5lbGVtZW50c1syXSo9cyxIM3QuZWxlbWVudHNbNF0qPWwsSDN0LmVsZW1lbnRzWzVdKj1sLEgzdC5lbGVtZW50c1s2XSo9bCxIM3QuZWxlbWVudHNbOF0qPWMsSDN0LmVsZW1lbnRzWzldKj1jLEgzdC5lbGVtZW50c1sxMF0qPWMsZS5zZXRGcm9tUm90YXRpb25NYXRyaXgoSDN0KSxuLng9cixuLnk9byxuLno9YSx0aGlzfW1ha2VQZXJzcGVjdGl2ZSh0LGUsbixpLHIsbyl7dm9pZCAwPT09byYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZVBlcnNwZWN0aXZlKCkgaGFzIGJlZW4gcmVkZWZpbmVkIGFuZCBoYXMgYSBuZXcgc2lnbmF0dXJlLiBQbGVhc2UgY2hlY2sgdGhlIGRvY3MuIik7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MipyLyhuLWkpLGw9KGUrdCkvKGUtdCksYz0obitpKS8obi1pKSx1PS0obytyKS8oby1yKSxoPS0yKm8qci8oby1yKTtyZXR1cm4gYVswXT0yKnIvKGUtdCksYVs0XT0wLGFbOF09bCxhWzEyXT0wLGFbMV09MCxhWzVdPXMsYVs5XT1jLGFbMTNdPTAsYVsyXT0wLGFbNl09MCxhWzEwXT11LGFbMTRdPWgsYVszXT0wLGFbN109MCxhWzExXT0tMSxhWzE1XT0wLHRoaXN9bWFrZU9ydGhvZ3JhcGhpYyh0LGUsbixpLHIsbyl7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MS8oZS10KSxsPTEvKG4taSksYz0xLyhvLXIpLHU9KGUrdCkqcyxoPShuK2kpKmwsZD0obytyKSpjO3JldHVybiBhWzBdPTIqcyxhWzRdPTAsYVs4XT0wLGFbMTJdPS11LGFbMV09MCxhWzVdPTIqbCxhWzldPTAsYVsxM109LWgsYVsyXT0wLGFbNl09MCxhWzEwXT0tMipjLGFbMTRdPS1kLGFbM109MCxhWzddPTAsYVsxMV09MCxhWzE1XT0xLHRoaXN9ZXF1YWxzKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7Zm9yKGxldCB0PTA7dDwxNjt0KyspaWYoZVt0XSE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IG49MDtuPDE2O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0W2UrOV09bls5XSx0W2UrMTBdPW5bMTBdLHRbZSsxMV09blsxMV0sdFtlKzEyXT1uWzEyXSx0W2UrMTNdPW5bMTNdLHRbZSsxNF09blsxNF0sdFtlKzE1XT1uWzE1XSx0fX1EM3QucHJvdG90eXBlLmlzTWF0cml4ND0hMDtjb25zdCBCM3Q9bmV3IGEzdCxIM3Q9bmV3IEQzdCxGM3Q9bmV3IGEzdCgwLDAsMCksVjN0PW5ldyBhM3QoMSwxLDEpLFUzdD1uZXcgYTN0LGozdD1uZXcgYTN0LEczdD1uZXcgYTN0LFczdD1uZXcgRDN0LHEzdD1uZXcgbzN0O2NsYXNzIFkzdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxpPVkzdC5EZWZhdWx0T3JkZXIpe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWl9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IG9yZGVyKCl7cmV0dXJuIHRoaXMuX29yZGVyfXNldCBvcmRlcih0KXt0aGlzLl9vcmRlcj10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4saT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fb3JkZXIpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC5feCx0aGlzLl95PXQuX3ksdGhpcy5fej10Ll96LHRoaXMuX29yZGVyPXQuX29yZGVyLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0LGU9dGhpcy5fb3JkZXIsbj0hMCl7Y29uc3QgaT10LmVsZW1lbnRzLHI9aVswXSxvPWlbNF0sYT1pWzhdLHM9aVsxXSxsPWlbNV0sYz1pWzldLHU9aVsyXSxoPWlbNl0sZD1pWzEwXTtzd2l0Y2goZSl7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKF81dChhLC0xLDEpKSxNYXRoLmFicyhhKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxyKSk6KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJZWFoiOnRoaXMuX3g9TWF0aC5hc2luKC1fNXQoYywtMSwxKSksTWF0aC5hYnMoYyk8Ljk5OTk5OTk/KHRoaXMuX3k9TWF0aC5hdGFuMihhLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLGwpKToodGhpcy5feT1NYXRoLmF0YW4yKC11LHIpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJaWFkiOnRoaXMuX3g9TWF0aC5hc2luKF81dChoLC0xLDEpKSxNYXRoLmFicyhoKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC11LGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIocyxyKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC1fNXQodSwtMSwxKSksTWF0aC5hYnModSk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLHIpKToodGhpcy5feD0wLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk7YnJlYWs7Y2FzZSJZWlgiOnRoaXMuX3o9TWF0aC5hc2luKF81dChzLC0xLDEpKSxNYXRoLmFicyhzKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGwpLHRoaXMuX3k9TWF0aC5hdGFuMigtdSxyKSk6KHRoaXMuX3g9MCx0aGlzLl95PU1hdGguYXRhbjIoYSxkKSk7YnJlYWs7Y2FzZSJYWlkiOnRoaXMuX3o9TWF0aC5hc2luKC1fNXQobywtMSwxKSksTWF0aC5hYnMobyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3k9TWF0aC5hdGFuMihhLHIpKToodGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitlKX1yZXR1cm4gdGhpcy5fb3JkZXI9ZSwhMD09PW4mJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQsZSxuKXtyZXR1cm4gVzN0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KFczdCxlLG4pfXNldEZyb21WZWN0b3IzKHQsZT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuc2V0KHQueCx0LnksdC56LGUpfXJlb3JkZXIodCl7cmV0dXJuIHEzdC5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbihxM3QsdCl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll9vcmRlcj09PXRoaXMuX29yZGVyfWZyb21BcnJheSh0KXtyZXR1cm4gdGhpcy5feD10WzBdLHRoaXMuX3k9dFsxXSx0aGlzLl96PXRbMl0sdm9pZCAwIT09dFszXSYmKHRoaXMuX29yZGVyPXRbM10pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMuX3gsdFtlKzFdPXRoaXMuX3ksdFtlKzJdPXRoaXMuX3osdFtlKzNdPXRoaXMuX29yZGVyLHR9dG9WZWN0b3IzKHQpe3JldHVybiB0P3Quc2V0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KTpuZXcgYTN0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KX1fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1ZM3QucHJvdG90eXBlLmlzRXVsZXI9ITAsWTN0LkRlZmF1bHRPcmRlcj0iWFlaIixZM3QuUm90YXRpb25PcmRlcnM9WyJYWVoiLCJZWlgiLCJaWFkiLCJYWlkiLCJZWFoiLCJaWVgiXTtjbGFzcyBYM3R7Y29uc3RydWN0b3IoKXt0aGlzLm1hc2s9MX1zZXQodCl7dGhpcy5tYXNrPSgxPDx0fDApPj4+MH1lbmFibGUodCl7dGhpcy5tYXNrfD0xPDx0fDB9ZW5hYmxlQWxsKCl7dGhpcy5tYXNrPS0xfXRvZ2dsZSh0KXt0aGlzLm1hc2tePTE8PHR8MH1kaXNhYmxlKHQpe3RoaXMubWFzayY9figxPDx0fDApfWRpc2FibGVBbGwoKXt0aGlzLm1hc2s9MH10ZXN0KHQpe3JldHVybiAwIT0odGhpcy5tYXNrJnQubWFzayl9aXNFbmFibGVkKHQpe3JldHVybiAwIT0odGhpcy5tYXNrJigxPDx0fDApKX19bGV0ICQzdD0wO2NvbnN0IEszdD1uZXcgYTN0LFozdD1uZXcgbzN0LEozdD1uZXcgRDN0LFEzdD1uZXcgYTN0LHQ0dD1uZXcgYTN0LGU0dD1uZXcgYTN0LG40dD1uZXcgbzN0LGk0dD1uZXcgYTN0KDEsMCwwKSxyNHQ9bmV3IGEzdCgwLDEsMCksbzR0PW5ldyBhM3QoMCwwLDEpLGE0dD17dHlwZToiYWRkZWQifSxzNHQ9e3R5cGU6InJlbW92ZWQifTtjbGFzcyBsNHQgZXh0ZW5kcyBoNXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOiQzdCsrfSksdGhpcy51dWlkPWc1dCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik9iamVjdDNEIix0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49W10sdGhpcy51cD1sNHQuRGVmYXVsdFVwLmNsb25lKCk7Y29uc3QgdD1uZXcgYTN0LGU9bmV3IFkzdCxuPW5ldyBvM3QsaT1uZXcgYTN0KDEsMSwxKTtlLl9vbkNoYW5nZSgoZnVuY3Rpb24gcigpe24uc2V0RnJvbUV1bGVyKGUsITEpfSkpLG4uX29uQ2hhbmdlKChmdW5jdGlvbiBvKCl7ZS5zZXRGcm9tUXVhdGVybmlvbihuLHZvaWQgMCwhMSl9KSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7cG9zaXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnR9LHJvdGF0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTplfSxxdWF0ZXJuaW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpufSxzY2FsZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6aX0sbW9kZWxWaWV3TWF0cml4Ont2YWx1ZTpuZXcgRDN0fSxub3JtYWxNYXRyaXg6e3ZhbHVlOm5ldyBCNXR9fSksdGhpcy5tYXRyaXg9bmV3IEQzdCx0aGlzLm1hdHJpeFdvcmxkPW5ldyBEM3QsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPWw0dC5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITEsdGhpcy5sYXllcnM9bmV3IFgzdCx0aGlzLnZpc2libGU9ITAsdGhpcy5jYXN0U2hhZG93PSExLHRoaXMucmVjZWl2ZVNoYWRvdz0hMSx0aGlzLmZydXN0dW1DdWxsZWQ9ITAsdGhpcy5yZW5kZXJPcmRlcj0wLHRoaXMuYW5pbWF0aW9ucz1bXSx0aGlzLnVzZXJEYXRhPXt9fW9uQmVmb3JlUmVuZGVyKCl7fW9uQWZ0ZXJSZW5kZXIoKXt9YXBwbHlNYXRyaXg0KHQpe3RoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLm1hdHJpeC5wcmVtdWx0aXBseSh0KSx0aGlzLm1hdHJpeC5kZWNvbXBvc2UodGhpcy5wb3NpdGlvbix0aGlzLnF1YXRlcm5pb24sdGhpcy5zY2FsZSl9YXBwbHlRdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkodCksdGhpc31zZXRSb3RhdGlvbkZyb21BeGlzQW5nbGUodCxlKXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUF4aXNBbmdsZSh0LGUpfXNldFJvdGF0aW9uRnJvbUV1bGVyKHQpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tRXVsZXIodCwhMCl9c2V0Um90YXRpb25Gcm9tTWF0cml4KHQpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgodCl9c2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbih0KXt0aGlzLnF1YXRlcm5pb24uY29weSh0KX1yb3RhdGVPbkF4aXModCxlKXtyZXR1cm4gWjN0LnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ubXVsdGlwbHkoWjN0KSx0aGlzfXJvdGF0ZU9uV29ybGRBeGlzKHQsZSl7cmV0dXJuIFozdC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSksdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KFozdCksdGhpc31yb3RhdGVYKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhpNHQsdCl9cm90YXRlWSh0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMocjR0LHQpfXJvdGF0ZVoodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKG80dCx0KX10cmFuc2xhdGVPbkF4aXModCxlKXtyZXR1cm4gSzN0LmNvcHkodCkuYXBwbHlRdWF0ZXJuaW9uKHRoaXMucXVhdGVybmlvbiksdGhpcy5wb3NpdGlvbi5hZGQoSzN0Lm11bHRpcGx5U2NhbGFyKGUpKSx0aGlzfXRyYW5zbGF0ZVgodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKGk0dCx0KX10cmFuc2xhdGVZKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhyNHQsdCl9dHJhbnNsYXRlWih0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMobzR0LHQpfWxvY2FsVG9Xb3JsZCh0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCl9d29ybGRUb0xvY2FsKHQpe3JldHVybiB0LmFwcGx5TWF0cml4NChKM3QuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKSl9bG9va0F0KHQsZSxuKXt0LmlzVmVjdG9yMz9RM3QuY29weSh0KTpRM3Quc2V0KHQsZSxuKTtjb25zdCBpPXRoaXMucGFyZW50O3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHQ0dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCksdGhpcy5pc0NhbWVyYXx8dGhpcy5pc0xpZ2h0P0ozdC5sb29rQXQodDR0LFEzdCx0aGlzLnVwKTpKM3QubG9va0F0KFEzdCx0NHQsdGhpcy51cCksdGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeChKM3QpLGkmJihKM3QuZXh0cmFjdFJvdGF0aW9uKGkubWF0cml4V29ybGQpLFozdC5zZXRGcm9tUm90YXRpb25NYXRyaXgoSjN0KSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoWjN0LmludmVydCgpKSl9YWRkKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7Zm9yKGxldCB0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl0aGlzLmFkZChhcmd1bWVudHNbdF0pO3JldHVybiB0aGlzfXJldHVybiB0PT09dGhpcz8oY29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3QgY2FuJ3QgYmUgYWRkZWQgYXMgYSBjaGlsZCBvZiBpdHNlbGYuIix0KSx0aGlzKToodCYmdC5pc09iamVjdDNEPyhudWxsIT09dC5wYXJlbnQmJnQucGFyZW50LnJlbW92ZSh0KSx0LnBhcmVudD10aGlzLHRoaXMuY2hpbGRyZW4ucHVzaCh0KSx0LmRpc3BhdGNoRXZlbnQoYTR0KSk6Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3Qgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLk9iamVjdDNELiIsdCksdGhpcyl9cmVtb3ZlKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7Zm9yKGxldCB0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl0aGlzLnJlbW92ZShhcmd1bWVudHNbdF0pO3JldHVybiB0aGlzfWNvbnN0IGU9dGhpcy5jaGlsZHJlbi5pbmRleE9mKHQpO3JldHVybi0xIT09ZSYmKHQucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbi5zcGxpY2UoZSwxKSx0LmRpc3BhdGNoRXZlbnQoczR0KSksdGhpc31yZW1vdmVGcm9tUGFyZW50KCl7Y29uc3QgdD10aGlzLnBhcmVudDtyZXR1cm4gbnVsbCE9PXQmJnQucmVtb3ZlKHRoaXMpLHRoaXN9Y2xlYXIoKXtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrKyl7Y29uc3QgZT10aGlzLmNoaWxkcmVuW3RdO2UucGFyZW50PW51bGwsZS5kaXNwYXRjaEV2ZW50KHM0dCl9cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoPTAsdGhpc31hdHRhY2godCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLEozdC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpLG51bGwhPT10LnBhcmVudCYmKHQucGFyZW50LnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxKM3QubXVsdGlwbHkodC5wYXJlbnQubWF0cml4V29ybGQpKSx0LmFwcGx5TWF0cml4NChKM3QpLHRoaXMuYWRkKHQpLHQudXBkYXRlV29ybGRNYXRyaXgoITEsITApLHRoaXN9Z2V0T2JqZWN0QnlJZCh0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJpZCIsdCl9Z2V0T2JqZWN0QnlOYW1lKHQpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoIm5hbWUiLHQpfWdldE9iamVjdEJ5UHJvcGVydHkodCxlKXtpZih0aGlzW3RdPT09ZSlyZXR1cm4gdGhpcztmb3IobGV0IG49MCxpPXRoaXMuY2hpbGRyZW4ubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dGhpcy5jaGlsZHJlbltuXS5nZXRPYmplY3RCeVByb3BlcnR5KHQsZSk7aWYodm9pZCAwIT09aSlyZXR1cm4gaX19Z2V0V29ybGRQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCl9Z2V0V29ybGRRdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0NHQsdCxlNHQpLHR9Z2V0V29ybGRTY2FsZSh0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodDR0LG40dCx0KSx0fWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2NvbnN0IGU9dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQoZVs4XSxlWzldLGVbMTBdKS5ub3JtYWxpemUoKX1yYXljYXN0KCl7fXRyYXZlcnNlKHQpe3QodGhpcyk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyllW25dLnRyYXZlcnNlKHQpfXRyYXZlcnNlVmlzaWJsZSh0KXtpZighMT09PXRoaXMudmlzaWJsZSlyZXR1cm47dCh0aGlzKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKWVbbl0udHJhdmVyc2VWaXNpYmxlKHQpfXRyYXZlcnNlQW5jZXN0b3JzKHQpe2NvbnN0IGU9dGhpcy5wYXJlbnQ7bnVsbCE9PWUmJih0KGUpLGUudHJhdmVyc2VBbmNlc3RvcnModCkpfXVwZGF0ZU1hdHJpeCgpe3RoaXMubWF0cml4LmNvbXBvc2UodGhpcy5wb3NpdGlvbix0aGlzLnF1YXRlcm5pb24sdGhpcy5zY2FsZSksdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3RoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSwodGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlfHx0KSYmKG51bGw9PT10aGlzLnBhcmVudD90aGlzLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5tYXRyaXgpOnRoaXMubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLnBhcmVudC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeCksdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExLHQ9ITApO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspZVtuXS51cGRhdGVNYXRyaXhXb3JsZCh0KX11cGRhdGVXb3JsZE1hdHJpeCh0LGUpe2NvbnN0IG49dGhpcy5wYXJlbnQ7aWYoITA9PT10JiZudWxsIT09biYmbi51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLG51bGw9PT10aGlzLnBhcmVudD90aGlzLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5tYXRyaXgpOnRoaXMubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLnBhcmVudC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeCksITA9PT1lKXtjb25zdCB0PXRoaXMuY2hpbGRyZW47Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRbZV0udXBkYXRlV29ybGRNYXRyaXgoITEsITApfX10b0pTT04odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQsbj17fTtlJiYodD17Z2VvbWV0cmllczp7fSxtYXRlcmlhbHM6e30sdGV4dHVyZXM6e30saW1hZ2VzOnt9LHNoYXBlczp7fSxza2VsZXRvbnM6e30sYW5pbWF0aW9uczp7fX0sbi5tZXRhZGF0YT17dmVyc2lvbjo0LjUsdHlwZToiT2JqZWN0IixnZW5lcmF0b3I6Ik9iamVjdDNELnRvSlNPTiJ9KTtjb25zdCBpPXt9O2Z1bmN0aW9uIHIoZSxuKXtyZXR1cm4gdm9pZCAwPT09ZVtuLnV1aWRdJiYoZVtuLnV1aWRdPW4udG9KU09OKHQpKSxuLnV1aWR9aWYoaS51dWlkPXRoaXMudXVpZCxpLnR5cGU9dGhpcy50eXBlLCIiIT09dGhpcy5uYW1lJiYoaS5uYW1lPXRoaXMubmFtZSksITA9PT10aGlzLmNhc3RTaGFkb3cmJihpLmNhc3RTaGFkb3c9ITApLCEwPT09dGhpcy5yZWNlaXZlU2hhZG93JiYoaS5yZWNlaXZlU2hhZG93PSEwKSwhMT09PXRoaXMudmlzaWJsZSYmKGkudmlzaWJsZT0hMSksITE9PT10aGlzLmZydXN0dW1DdWxsZWQmJihpLmZydXN0dW1DdWxsZWQ9ITEpLDAhPT10aGlzLnJlbmRlck9yZGVyJiYoaS5yZW5kZXJPcmRlcj10aGlzLnJlbmRlck9yZGVyKSwie30iIT09SlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkmJihpLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLGkubGF5ZXJzPXRoaXMubGF5ZXJzLm1hc2ssaS5tYXRyaXg9dGhpcy5tYXRyaXgudG9BcnJheSgpLCExPT09dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiYoaS5tYXRyaXhBdXRvVXBkYXRlPSExKSx0aGlzLmlzSW5zdGFuY2VkTWVzaCYmKGkudHlwZT0iSW5zdGFuY2VkTWVzaCIsaS5jb3VudD10aGlzLmNvdW50LGkuaW5zdGFuY2VNYXRyaXg9dGhpcy5pbnN0YW5jZU1hdHJpeC50b0pTT04oKSxudWxsIT09dGhpcy5pbnN0YW5jZUNvbG9yJiYoaS5pbnN0YW5jZUNvbG9yPXRoaXMuaW5zdGFuY2VDb2xvci50b0pTT04oKSkpLHRoaXMuaXNTY2VuZSl0aGlzLmJhY2tncm91bmQmJih0aGlzLmJhY2tncm91bmQuaXNDb2xvcj9pLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kLnRvSlNPTigpOnRoaXMuYmFja2dyb3VuZC5pc1RleHR1cmUmJihpLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kLnRvSlNPTih0KS51dWlkKSksdGhpcy5lbnZpcm9ubWVudCYmdGhpcy5lbnZpcm9ubWVudC5pc1RleHR1cmUmJihpLmVudmlyb25tZW50PXRoaXMuZW52aXJvbm1lbnQudG9KU09OKHQpLnV1aWQpO2Vsc2UgaWYodGhpcy5pc01lc2h8fHRoaXMuaXNMaW5lfHx0aGlzLmlzUG9pbnRzKXtpLmdlb21ldHJ5PXIodC5nZW9tZXRyaWVzLHRoaXMuZ2VvbWV0cnkpO2NvbnN0IGU9dGhpcy5nZW9tZXRyeS5wYXJhbWV0ZXJzO2lmKHZvaWQgMCE9PWUmJnZvaWQgMCE9PWUuc2hhcGVzKXtjb25zdCBuPWUuc2hhcGVzO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtyKHQuc2hhcGVzLG5bZV0pfWVsc2Ugcih0LnNoYXBlcyxuKX19aWYodGhpcy5pc1NraW5uZWRNZXNoJiYoaS5iaW5kTW9kZT10aGlzLmJpbmRNb2RlLGkuYmluZE1hdHJpeD10aGlzLmJpbmRNYXRyaXgudG9BcnJheSgpLHZvaWQgMCE9PXRoaXMuc2tlbGV0b24mJihyKHQuc2tlbGV0b25zLHRoaXMuc2tlbGV0b24pLGkuc2tlbGV0b249dGhpcy5za2VsZXRvbi51dWlkKSksdm9pZCAwIT09dGhpcy5tYXRlcmlhbClpZihBcnJheS5pc0FycmF5KHRoaXMubWF0ZXJpYWwpKXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLGk9dGhpcy5tYXRlcmlhbC5sZW5ndGg7bjxpO24rKyllLnB1c2gocih0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsW25dKSk7aS5tYXRlcmlhbD1lfWVsc2UgaS5tYXRlcmlhbD1yKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWwpO2lmKHRoaXMuY2hpbGRyZW4ubGVuZ3RoPjApe2kuY2hpbGRyZW49W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNoaWxkcmVuLmxlbmd0aDtlKyspaS5jaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5bZV0udG9KU09OKHQpLm9iamVjdCl9aWYodGhpcy5hbmltYXRpb25zLmxlbmd0aD4wKXtpLmFuaW1hdGlvbnM9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmFuaW1hdGlvbnMubGVuZ3RoO2UrKyl7aS5hbmltYXRpb25zLnB1c2gocih0LmFuaW1hdGlvbnMsdGhpcy5hbmltYXRpb25zW2VdKSl9fWlmKGUpe2NvbnN0IGU9byh0Lmdlb21ldHJpZXMpLGk9byh0Lm1hdGVyaWFscykscj1vKHQudGV4dHVyZXMpLGE9byh0LmltYWdlcykscz1vKHQuc2hhcGVzKSxsPW8odC5za2VsZXRvbnMpLGM9byh0LmFuaW1hdGlvbnMpO2UubGVuZ3RoPjAmJihuLmdlb21ldHJpZXM9ZSksaS5sZW5ndGg+MCYmKG4ubWF0ZXJpYWxzPWkpLHIubGVuZ3RoPjAmJihuLnRleHR1cmVzPXIpLGEubGVuZ3RoPjAmJihuLmltYWdlcz1hKSxzLmxlbmd0aD4wJiYobi5zaGFwZXM9cyksbC5sZW5ndGg+MCYmKG4uc2tlbGV0b25zPWwpLGMubGVuZ3RoPjAmJihuLmFuaW1hdGlvbnM9Yyl9cmV0dXJuIG4ub2JqZWN0PWksbjtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgaT10W25dO2RlbGV0ZSBpLm1ldGFkYXRhLGUucHVzaChpKX1yZXR1cm4gZX19Y2xvbmUodCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMsdCl9Y29weSh0LGU9ITApe2lmKHRoaXMubmFtZT10Lm5hbWUsdGhpcy51cC5jb3B5KHQudXApLHRoaXMucG9zaXRpb24uY29weSh0LnBvc2l0aW9uKSx0aGlzLnJvdGF0aW9uLm9yZGVyPXQucm90YXRpb24ub3JkZXIsdGhpcy5xdWF0ZXJuaW9uLmNvcHkodC5xdWF0ZXJuaW9uKSx0aGlzLnNjYWxlLmNvcHkodC5zY2FsZSksdGhpcy5tYXRyaXguY29weSh0Lm1hdHJpeCksdGhpcy5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLHRoaXMubWF0cml4QXV0b1VwZGF0ZT10Lm1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPXQubWF0cml4V29ybGROZWVkc1VwZGF0ZSx0aGlzLmxheWVycy5tYXNrPXQubGF5ZXJzLm1hc2ssdGhpcy52aXNpYmxlPXQudmlzaWJsZSx0aGlzLmNhc3RTaGFkb3c9dC5jYXN0U2hhZG93LHRoaXMucmVjZWl2ZVNoYWRvdz10LnJlY2VpdmVTaGFkb3csdGhpcy5mcnVzdHVtQ3VsbGVkPXQuZnJ1c3R1bUN1bGxlZCx0aGlzLnJlbmRlck9yZGVyPXQucmVuZGVyT3JkZXIsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSwhMD09PWUpZm9yKGxldCBlPTA7ZTx0LmNoaWxkcmVuLmxlbmd0aDtlKyspe3RoaXMuYWRkKHQuY2hpbGRyZW5bZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXN9fWw0dC5EZWZhdWx0VXA9bmV3IGEzdCgwLDEsMCksbDR0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlPSEwLGw0dC5wcm90b3R5cGUuaXNPYmplY3QzRD0hMDtjb25zdCBjNHQ9bmV3IGEzdCx1NHQ9bmV3IGEzdCxoNHQ9bmV3IGEzdCxkNHQ9bmV3IGEzdCxwNHQ9bmV3IGEzdCxmNHQ9bmV3IGEzdCxtNHQ9bmV3IGEzdCxnNHQ9bmV3IGEzdCxfNHQ9bmV3IGEzdCx5NHQ9bmV3IGEzdDtjbGFzcyB2NHR7Y29uc3RydWN0b3IodD1uZXcgYTN0LGU9bmV3IGEzdCxuPW5ldyBhM3Qpe3RoaXMuYT10LHRoaXMuYj1lLHRoaXMuYz1ufXN0YXRpYyBnZXROb3JtYWwodCxlLG4saSl7aS5zdWJWZWN0b3JzKG4sZSksYzR0LnN1YlZlY3RvcnModCxlKSxpLmNyb3NzKGM0dCk7Y29uc3Qgcj1pLmxlbmd0aFNxKCk7cmV0dXJuIHI+MD9pLm11bHRpcGx5U2NhbGFyKDEvTWF0aC5zcXJ0KHIpKTppLnNldCgwLDAsMCl9c3RhdGljIGdldEJhcnljb29yZCh0LGUsbixpLHIpe2M0dC5zdWJWZWN0b3JzKGksZSksdTR0LnN1YlZlY3RvcnMobixlKSxoNHQuc3ViVmVjdG9ycyh0LGUpO2NvbnN0IG89YzR0LmRvdChjNHQpLGE9YzR0LmRvdCh1NHQpLHM9YzR0LmRvdChoNHQpLGw9dTR0LmRvdCh1NHQpLGM9dTR0LmRvdChoNHQpLHU9bypsLWEqYTtpZigwPT09dSlyZXR1cm4gci5zZXQoLTIsLTEsLTEpO2NvbnN0IGg9MS91LGQ9KGwqcy1hKmMpKmgscD0obypjLWEqcykqaDtyZXR1cm4gci5zZXQoMS1kLXAscCxkKX1zdGF0aWMgY29udGFpbnNQb2ludCh0LGUsbixpKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxlLG4saSxkNHQpLGQ0dC54Pj0wJiZkNHQueT49MCYmZDR0LngrZDR0Lnk8PTF9c3RhdGljIGdldFVWKHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxuLGksZDR0KSxzLnNldCgwLDApLHMuYWRkU2NhbGVkVmVjdG9yKHIsZDR0LngpLHMuYWRkU2NhbGVkVmVjdG9yKG8sZDR0LnkpLHMuYWRkU2NhbGVkVmVjdG9yKGEsZDR0LnopLHN9c3RhdGljIGlzRnJvbnRGYWNpbmcodCxlLG4saSl7cmV0dXJuIGM0dC5zdWJWZWN0b3JzKG4sZSksdTR0LnN1YlZlY3RvcnModCxlKSxjNHQuY3Jvc3ModTR0KS5kb3QoaSk8MH1zZXQodCxlLG4pe3JldHVybiB0aGlzLmEuY29weSh0KSx0aGlzLmIuY29weShlKSx0aGlzLmMuY29weShuKSx0aGlzfXNldEZyb21Qb2ludHNBbmRJbmRpY2VzKHQsZSxuLGkpe3JldHVybiB0aGlzLmEuY29weSh0W2VdKSx0aGlzLmIuY29weSh0W25dKSx0aGlzLmMuY29weSh0W2ldKSx0aGlzfXNldEZyb21BdHRyaWJ1dGVBbmRJbmRpY2VzKHQsZSxuLGkpe3JldHVybiB0aGlzLmEuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLHRoaXMuYi5mcm9tQnVmZmVyQXR0cmlidXRlKHQsbiksdGhpcy5jLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxpKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYS5jb3B5KHQuYSksdGhpcy5iLmNvcHkodC5iKSx0aGlzLmMuY29weSh0LmMpLHRoaXN9Z2V0QXJlYSgpe3JldHVybiBjNHQuc3ViVmVjdG9ycyh0aGlzLmMsdGhpcy5iKSx1NHQuc3ViVmVjdG9ycyh0aGlzLmEsdGhpcy5iKSwuNSpjNHQuY3Jvc3ModTR0KS5sZW5ndGgoKX1nZXRNaWRwb2ludCh0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLmFkZCh0aGlzLmMpLm11bHRpcGx5U2NhbGFyKDEvMyl9Z2V0Tm9ybWFsKHQpe3JldHVybiB2NHQuZ2V0Tm9ybWFsKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWdldFBsYW5lKHQpe3JldHVybiB0LnNldEZyb21Db3BsYW5hclBvaW50cyh0aGlzLmEsdGhpcy5iLHRoaXMuYyl9Z2V0QmFyeWNvb3JkKHQsZSl7cmV0dXJuIHY0dC5nZXRCYXJ5Y29vcmQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyxlKX1nZXRVVih0LGUsbixpLHIpe3JldHVybiB2NHQuZ2V0VVYodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyxlLG4saSxyKX1jb250YWluc1BvaW50KHQpe3JldHVybiB2NHQuY29udGFpbnNQb2ludCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1pc0Zyb250RmFjaW5nKHQpe3JldHVybiB2NHQuaXNGcm9udEZhY2luZyh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNUcmlhbmdsZSh0aGlzKX1jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSl7Y29uc3Qgbj10aGlzLmEsaT10aGlzLmIscj10aGlzLmM7bGV0IG8sYTtwNHQuc3ViVmVjdG9ycyhpLG4pLGY0dC5zdWJWZWN0b3JzKHIsbiksZzR0LnN1YlZlY3RvcnModCxuKTtjb25zdCBzPXA0dC5kb3QoZzR0KSxsPWY0dC5kb3QoZzR0KTtpZihzPD0wJiZsPD0wKXJldHVybiBlLmNvcHkobik7XzR0LnN1YlZlY3RvcnModCxpKTtjb25zdCBjPXA0dC5kb3QoXzR0KSx1PWY0dC5kb3QoXzR0KTtpZihjPj0wJiZ1PD1jKXJldHVybiBlLmNvcHkoaSk7Y29uc3QgaD1zKnUtYypsO2lmKGg8PTAmJnM+PTAmJmM8PTApcmV0dXJuIG89cy8ocy1jKSxlLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKHA0dCxvKTt5NHQuc3ViVmVjdG9ycyh0LHIpO2NvbnN0IGQ9cDR0LmRvdCh5NHQpLHA9ZjR0LmRvdCh5NHQpO2lmKHA+PTAmJmQ8PXApcmV0dXJuIGUuY29weShyKTtjb25zdCBmPWQqbC1zKnA7aWYoZjw9MCYmbD49MCYmcDw9MClyZXR1cm4gYT1sLyhsLXApLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoZjR0LGEpO2NvbnN0IG09YypwLWQqdTtpZihtPD0wJiZ1LWM+PTAmJmQtcD49MClyZXR1cm4gbTR0LnN1YlZlY3RvcnMocixpKSxhPSh1LWMpLyh1LWMrKGQtcCkpLGUuY29weShpKS5hZGRTY2FsZWRWZWN0b3IobTR0LGEpO2NvbnN0IGc9MS8obStmK2gpO3JldHVybiBvPWYqZyxhPWgqZyxlLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKHA0dCxvKS5hZGRTY2FsZWRWZWN0b3IoZjR0LGEpfWVxdWFscyh0KXtyZXR1cm4gdC5hLmVxdWFscyh0aGlzLmEpJiZ0LmIuZXF1YWxzKHRoaXMuYikmJnQuYy5lcXVhbHModGhpcy5jKX19bGV0IGI0dD0wO2NsYXNzIHg0dCBleHRlbmRzIGg1dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6YjR0Kyt9KSx0aGlzLnV1aWQ9ZzV0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iTWF0ZXJpYWwiLHRoaXMuZm9nPSEwLHRoaXMuYmxlbmRpbmc9MSx0aGlzLnNpZGU9MCx0aGlzLnZlcnRleENvbG9ycz0hMSx0aGlzLm9wYWNpdHk9MSx0aGlzLnRyYW5zcGFyZW50PSExLHRoaXMuYmxlbmRTcmM9MjA0LHRoaXMuYmxlbmREc3Q9MjA1LHRoaXMuYmxlbmRFcXVhdGlvbj1RMHQsdGhpcy5ibGVuZFNyY0FscGhhPW51bGwsdGhpcy5ibGVuZERzdEFscGhhPW51bGwsdGhpcy5ibGVuZEVxdWF0aW9uQWxwaGE9bnVsbCx0aGlzLmRlcHRoRnVuYz0zLHRoaXMuZGVwdGhUZXN0PSEwLHRoaXMuZGVwdGhXcml0ZT0hMCx0aGlzLnN0ZW5jaWxXcml0ZU1hc2s9MjU1LHRoaXMuc3RlbmNpbEZ1bmM9NTE5LHRoaXMuc3RlbmNpbFJlZj0wLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGYWlsPWE1dCx0aGlzLnN0ZW5jaWxaRmFpbD1hNXQsdGhpcy5zdGVuY2lsWlBhc3M9YTV0LHRoaXMuc3RlbmNpbFdyaXRlPSExLHRoaXMuY2xpcHBpbmdQbGFuZXM9bnVsbCx0aGlzLmNsaXBJbnRlcnNlY3Rpb249ITEsdGhpcy5jbGlwU2hhZG93cz0hMSx0aGlzLnNoYWRvd1NpZGU9bnVsbCx0aGlzLmNvbG9yV3JpdGU9ITAsdGhpcy5hbHBoYVdyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9ITEsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9ITEsdGhpcy52aXNpYmxlPSEwLHRoaXMudG9uZU1hcHBlZD0hMCx0aGlzLnVzZXJEYXRhPXt9LHRoaXMudmVyc2lvbj0wLHRoaXMuX2FscGhhVGVzdD0wfWdldCBhbHBoYVRlc3QoKXtyZXR1cm4gdGhpcy5fYWxwaGFUZXN0fXNldCBhbHBoYVRlc3QodCl7dGhpcy5fYWxwaGFUZXN0PjAhPXQ+MCYmdGhpcy52ZXJzaW9uKyssdGhpcy5fYWxwaGFUZXN0PXR9b25CdWlsZCgpe31vbkJlZm9yZVJlbmRlcigpe31vbkJlZm9yZUNvbXBpbGUoKXt9Y3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl7cmV0dXJuIHRoaXMub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCl9c2V0VmFsdWVzKHQpe2lmKHZvaWQgMCE9PXQpZm9yKGNvbnN0IGUgaW4gdCl7Y29uc3Qgbj10W2VdO2lmKHZvaWQgMD09PW4pe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6ICciK2UrIicgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1pZigic2hhZGluZyI9PT1lKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT1uO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1tlXTt2b2lkIDAhPT1pP2kmJmkuaXNDb2xvcj9pLnNldChuKTppJiZpLmlzVmVjdG9yMyYmbiYmbi5pc1ZlY3RvcjM/aS5jb3B5KG4pOnRoaXNbZV09bjpjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6ICciK2UrIicgaXMgbm90IGEgcHJvcGVydHkgb2YgdGhpcyBtYXRlcmlhbC4iKX19dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0O2UmJih0PXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTtjb25zdCBuPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiTWF0ZXJpYWwiLGdlbmVyYXRvcjoiTWF0ZXJpYWwudG9KU09OIn19O2Z1bmN0aW9uIGkodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBpPXRbbl07ZGVsZXRlIGkubWV0YWRhdGEsZS5wdXNoKGkpfXJldHVybiBlfWlmKG4udXVpZD10aGlzLnV1aWQsbi50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKG4ubmFtZT10aGlzLm5hbWUpLHRoaXMuY29sb3ImJnRoaXMuY29sb3IuaXNDb2xvciYmKG4uY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5yb3VnaG5lc3MmJihuLnJvdWdobmVzcz10aGlzLnJvdWdobmVzcyksdm9pZCAwIT09dGhpcy5tZXRhbG5lc3MmJihuLm1ldGFsbmVzcz10aGlzLm1ldGFsbmVzcyksdm9pZCAwIT09dGhpcy5zaGVlbiYmKG4uc2hlZW49dGhpcy5zaGVlbiksdGhpcy5zaGVlbkNvbG9yJiZ0aGlzLnNoZWVuQ29sb3IuaXNDb2xvciYmKG4uc2hlZW5Db2xvcj10aGlzLnNoZWVuQ29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2hlZW5Sb3VnaG5lc3MmJihuLnNoZWVuUm91Z2huZXNzPXRoaXMuc2hlZW5Sb3VnaG5lc3MpLHRoaXMuZW1pc3NpdmUmJnRoaXMuZW1pc3NpdmUuaXNDb2xvciYmKG4uZW1pc3NpdmU9dGhpcy5lbWlzc2l2ZS5nZXRIZXgoKSksdGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmMSE9PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJihuLmVtaXNzaXZlSW50ZW5zaXR5PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXImJnRoaXMuc3BlY3VsYXIuaXNDb2xvciYmKG4uc3BlY3VsYXI9dGhpcy5zcGVjdWxhci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zcGVjdWxhckludGVuc2l0eSYmKG4uc3BlY3VsYXJJbnRlbnNpdHk9dGhpcy5zcGVjdWxhckludGVuc2l0eSksdGhpcy5zcGVjdWxhckNvbG9yJiZ0aGlzLnNwZWN1bGFyQ29sb3IuaXNDb2xvciYmKG4uc3BlY3VsYXJDb2xvcj10aGlzLnNwZWN1bGFyQ29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2hpbmluZXNzJiYobi5zaGluaW5lc3M9dGhpcy5zaGluaW5lc3MpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0JiYobi5jbGVhcmNvYXQ9dGhpcy5jbGVhcmNvYXQpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzJiYobi5jbGVhcmNvYXRSb3VnaG5lc3M9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MpLHRoaXMuY2xlYXJjb2F0TWFwJiZ0aGlzLmNsZWFyY29hdE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE1hcD10aGlzLmNsZWFyY29hdE1hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJnRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcCYmdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXROb3JtYWxNYXA9dGhpcy5jbGVhcmNvYXROb3JtYWxNYXAudG9KU09OKHQpLnV1aWQsbi5jbGVhcmNvYXROb3JtYWxTY2FsZT10aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5tYXAmJnRoaXMubWFwLmlzVGV4dHVyZSYmKG4ubWFwPXRoaXMubWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1hdGNhcCYmdGhpcy5tYXRjYXAuaXNUZXh0dXJlJiYobi5tYXRjYXA9dGhpcy5tYXRjYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuYWxwaGFNYXAmJnRoaXMuYWxwaGFNYXAuaXNUZXh0dXJlJiYobi5hbHBoYU1hcD10aGlzLmFscGhhTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmxpZ2h0TWFwJiZ0aGlzLmxpZ2h0TWFwLmlzVGV4dHVyZSYmKG4ubGlnaHRNYXA9dGhpcy5saWdodE1hcC50b0pTT04odCkudXVpZCxuLmxpZ2h0TWFwSW50ZW5zaXR5PXRoaXMubGlnaHRNYXBJbnRlbnNpdHkpLHRoaXMuYW9NYXAmJnRoaXMuYW9NYXAuaXNUZXh0dXJlJiYobi5hb01hcD10aGlzLmFvTWFwLnRvSlNPTih0KS51dWlkLG4uYW9NYXBJbnRlbnNpdHk9dGhpcy5hb01hcEludGVuc2l0eSksdGhpcy5idW1wTWFwJiZ0aGlzLmJ1bXBNYXAuaXNUZXh0dXJlJiYobi5idW1wTWFwPXRoaXMuYnVtcE1hcC50b0pTT04odCkudXVpZCxuLmJ1bXBTY2FsZT10aGlzLmJ1bXBTY2FsZSksdGhpcy5ub3JtYWxNYXAmJnRoaXMubm9ybWFsTWFwLmlzVGV4dHVyZSYmKG4ubm9ybWFsTWFwPXRoaXMubm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLG4ubm9ybWFsTWFwVHlwZT10aGlzLm5vcm1hbE1hcFR5cGUsbi5ub3JtYWxTY2FsZT10aGlzLm5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5kaXNwbGFjZW1lbnRNYXAmJnRoaXMuZGlzcGxhY2VtZW50TWFwLmlzVGV4dHVyZSYmKG4uZGlzcGxhY2VtZW50TWFwPXRoaXMuZGlzcGxhY2VtZW50TWFwLnRvSlNPTih0KS51dWlkLG4uZGlzcGxhY2VtZW50U2NhbGU9dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSxuLmRpc3BsYWNlbWVudEJpYXM9dGhpcy5kaXNwbGFjZW1lbnRCaWFzKSx0aGlzLnJvdWdobmVzc01hcCYmdGhpcy5yb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5yb3VnaG5lc3NNYXA9dGhpcy5yb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWV0YWxuZXNzTWFwJiZ0aGlzLm1ldGFsbmVzc01hcC5pc1RleHR1cmUmJihuLm1ldGFsbmVzc01hcD10aGlzLm1ldGFsbmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5lbWlzc2l2ZU1hcCYmdGhpcy5lbWlzc2l2ZU1hcC5pc1RleHR1cmUmJihuLmVtaXNzaXZlTWFwPXRoaXMuZW1pc3NpdmVNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJNYXAmJnRoaXMuc3BlY3VsYXJNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhck1hcD10aGlzLnNwZWN1bGFyTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwJiZ0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA9dGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhckNvbG9yTWFwJiZ0aGlzLnNwZWN1bGFyQ29sb3JNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhckNvbG9yTWFwPXRoaXMuc3BlY3VsYXJDb2xvck1hcC50b0pTT04odCkudXVpZCksdGhpcy5lbnZNYXAmJnRoaXMuZW52TWFwLmlzVGV4dHVyZSYmKG4uZW52TWFwPXRoaXMuZW52TWFwLnRvSlNPTih0KS51dWlkLHZvaWQgMCE9PXRoaXMuY29tYmluZSYmKG4uY29tYmluZT10aGlzLmNvbWJpbmUpKSx2b2lkIDAhPT10aGlzLmVudk1hcEludGVuc2l0eSYmKG4uZW52TWFwSW50ZW5zaXR5PXRoaXMuZW52TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10aGlzLnJlZmxlY3Rpdml0eSYmKG4ucmVmbGVjdGl2aXR5PXRoaXMucmVmbGVjdGl2aXR5KSx2b2lkIDAhPT10aGlzLnJlZnJhY3Rpb25SYXRpbyYmKG4ucmVmcmFjdGlvblJhdGlvPXRoaXMucmVmcmFjdGlvblJhdGlvKSx0aGlzLmdyYWRpZW50TWFwJiZ0aGlzLmdyYWRpZW50TWFwLmlzVGV4dHVyZSYmKG4uZ3JhZGllbnRNYXA9dGhpcy5ncmFkaWVudE1hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy50cmFuc21pc3Npb24mJihuLnRyYW5zbWlzc2lvbj10aGlzLnRyYW5zbWlzc2lvbiksdGhpcy50cmFuc21pc3Npb25NYXAmJnRoaXMudHJhbnNtaXNzaW9uTWFwLmlzVGV4dHVyZSYmKG4udHJhbnNtaXNzaW9uTWFwPXRoaXMudHJhbnNtaXNzaW9uTWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnRoaWNrbmVzcyYmKG4udGhpY2tuZXNzPXRoaXMudGhpY2tuZXNzKSx0aGlzLnRoaWNrbmVzc01hcCYmdGhpcy50aGlja25lc3NNYXAuaXNUZXh0dXJlJiYobi50aGlja25lc3NNYXA9dGhpcy50aGlja25lc3NNYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSYmKG4uYXR0ZW51YXRpb25EaXN0YW5jZT10aGlzLmF0dGVudWF0aW9uRGlzdGFuY2UpLHZvaWQgMCE9PXRoaXMuYXR0ZW51YXRpb25Db2xvciYmKG4uYXR0ZW51YXRpb25Db2xvcj10aGlzLmF0dGVudWF0aW9uQ29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2l6ZSYmKG4uc2l6ZT10aGlzLnNpemUpLG51bGwhPT10aGlzLnNoYWRvd1NpZGUmJihuLnNoYWRvd1NpZGU9dGhpcy5zaGFkb3dTaWRlKSx2b2lkIDAhPT10aGlzLnNpemVBdHRlbnVhdGlvbiYmKG4uc2l6ZUF0dGVudWF0aW9uPXRoaXMuc2l6ZUF0dGVudWF0aW9uKSwxIT09dGhpcy5ibGVuZGluZyYmKG4uYmxlbmRpbmc9dGhpcy5ibGVuZGluZyksMCE9PXRoaXMuc2lkZSYmKG4uc2lkZT10aGlzLnNpZGUpLHRoaXMudmVydGV4Q29sb3JzJiYobi52ZXJ0ZXhDb2xvcnM9ITApLHRoaXMub3BhY2l0eTwxJiYobi5vcGFjaXR5PXRoaXMub3BhY2l0eSksITA9PT10aGlzLnRyYW5zcGFyZW50JiYobi50cmFuc3BhcmVudD10aGlzLnRyYW5zcGFyZW50KSxuLmRlcHRoRnVuYz10aGlzLmRlcHRoRnVuYyxuLmRlcHRoVGVzdD10aGlzLmRlcHRoVGVzdCxuLmRlcHRoV3JpdGU9dGhpcy5kZXB0aFdyaXRlLG4uY29sb3JXcml0ZT10aGlzLmNvbG9yV3JpdGUsbi5hbHBoYVdyaXRlPXRoaXMuYWxwaGFXcml0ZSxuLnN0ZW5jaWxXcml0ZT10aGlzLnN0ZW5jaWxXcml0ZSxuLnN0ZW5jaWxXcml0ZU1hc2s9dGhpcy5zdGVuY2lsV3JpdGVNYXNrLG4uc3RlbmNpbEZ1bmM9dGhpcy5zdGVuY2lsRnVuYyxuLnN0ZW5jaWxSZWY9dGhpcy5zdGVuY2lsUmVmLG4uc3RlbmNpbEZ1bmNNYXNrPXRoaXMuc3RlbmNpbEZ1bmNNYXNrLG4uc3RlbmNpbEZhaWw9dGhpcy5zdGVuY2lsRmFpbCxuLnN0ZW5jaWxaRmFpbD10aGlzLnN0ZW5jaWxaRmFpbCxuLnN0ZW5jaWxaUGFzcz10aGlzLnN0ZW5jaWxaUGFzcyx0aGlzLnJvdGF0aW9uJiYwIT09dGhpcy5yb3RhdGlvbiYmKG4ucm90YXRpb249dGhpcy5yb3RhdGlvbiksITA9PT10aGlzLnBvbHlnb25PZmZzZXQmJihuLnBvbHlnb25PZmZzZXQ9ITApLDAhPT10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3ImJihuLnBvbHlnb25PZmZzZXRGYWN0b3I9dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yKSwwIT09dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMmJihuLnBvbHlnb25PZmZzZXRVbml0cz10aGlzLnBvbHlnb25PZmZzZXRVbml0cyksdGhpcy5saW5ld2lkdGgmJjEhPT10aGlzLmxpbmV3aWR0aCYmKG4ubGluZXdpZHRoPXRoaXMubGluZXdpZHRoKSx2b2lkIDAhPT10aGlzLmRhc2hTaXplJiYobi5kYXNoU2l6ZT10aGlzLmRhc2hTaXplKSx2b2lkIDAhPT10aGlzLmdhcFNpemUmJihuLmdhcFNpemU9dGhpcy5nYXBTaXplKSx2b2lkIDAhPT10aGlzLnNjYWxlJiYobi5zY2FsZT10aGlzLnNjYWxlKSwhMD09PXRoaXMuZGl0aGVyaW5nJiYobi5kaXRoZXJpbmc9ITApLHRoaXMuYWxwaGFUZXN0PjAmJihuLmFscGhhVGVzdD10aGlzLmFscGhhVGVzdCksITA9PT10aGlzLmFscGhhVG9Db3ZlcmFnZSYmKG4uYWxwaGFUb0NvdmVyYWdlPXRoaXMuYWxwaGFUb0NvdmVyYWdlKSwhMD09PXRoaXMucHJlbXVsdGlwbGllZEFscGhhJiYobi5wcmVtdWx0aXBsaWVkQWxwaGE9dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEpLCEwPT09dGhpcy53aXJlZnJhbWUmJihuLndpcmVmcmFtZT10aGlzLndpcmVmcmFtZSksdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg+MSYmKG4ud2lyZWZyYW1lTGluZXdpZHRoPXRoaXMud2lyZWZyYW1lTGluZXdpZHRoKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lY2FwJiYobi53aXJlZnJhbWVMaW5lY2FwPXRoaXMud2lyZWZyYW1lTGluZWNhcCksInJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWpvaW4mJihuLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWpvaW4pLCEwPT09dGhpcy5mbGF0U2hhZGluZyYmKG4uZmxhdFNoYWRpbmc9dGhpcy5mbGF0U2hhZGluZyksITE9PT10aGlzLnZpc2libGUmJihuLnZpc2libGU9ITEpLCExPT09dGhpcy50b25lTWFwcGVkJiYobi50b25lTWFwcGVkPSExKSwie30iIT09SlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkmJihuLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLGUpe2NvbnN0IGU9aSh0LnRleHR1cmVzKSxyPWkodC5pbWFnZXMpO2UubGVuZ3RoPjAmJihuLnRleHR1cmVzPWUpLHIubGVuZ3RoPjAmJihuLmltYWdlcz1yKX1yZXR1cm4gbn1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMubmFtZT10Lm5hbWUsdGhpcy5mb2c9dC5mb2csdGhpcy5ibGVuZGluZz10LmJsZW5kaW5nLHRoaXMuc2lkZT10LnNpZGUsdGhpcy52ZXJ0ZXhDb2xvcnM9dC52ZXJ0ZXhDb2xvcnMsdGhpcy5vcGFjaXR5PXQub3BhY2l0eSx0aGlzLnRyYW5zcGFyZW50PXQudHJhbnNwYXJlbnQsdGhpcy5ibGVuZFNyYz10LmJsZW5kU3JjLHRoaXMuYmxlbmREc3Q9dC5ibGVuZERzdCx0aGlzLmJsZW5kRXF1YXRpb249dC5ibGVuZEVxdWF0aW9uLHRoaXMuYmxlbmRTcmNBbHBoYT10LmJsZW5kU3JjQWxwaGEsdGhpcy5ibGVuZERzdEFscGhhPXQuYmxlbmREc3RBbHBoYSx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT10LmJsZW5kRXF1YXRpb25BbHBoYSx0aGlzLmRlcHRoRnVuYz10LmRlcHRoRnVuYyx0aGlzLmRlcHRoVGVzdD10LmRlcHRoVGVzdCx0aGlzLmRlcHRoV3JpdGU9dC5kZXB0aFdyaXRlLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz10LnN0ZW5jaWxXcml0ZU1hc2ssdGhpcy5zdGVuY2lsRnVuYz10LnN0ZW5jaWxGdW5jLHRoaXMuc3RlbmNpbFJlZj10LnN0ZW5jaWxSZWYsdGhpcy5zdGVuY2lsRnVuY01hc2s9dC5zdGVuY2lsRnVuY01hc2ssdGhpcy5zdGVuY2lsRmFpbD10LnN0ZW5jaWxGYWlsLHRoaXMuc3RlbmNpbFpGYWlsPXQuc3RlbmNpbFpGYWlsLHRoaXMuc3RlbmNpbFpQYXNzPXQuc3RlbmNpbFpQYXNzLHRoaXMuc3RlbmNpbFdyaXRlPXQuc3RlbmNpbFdyaXRlO2NvbnN0IGU9dC5jbGlwcGluZ1BsYW5lcztsZXQgbj1udWxsO2lmKG51bGwhPT1lKXtjb25zdCB0PWUubGVuZ3RoO249bmV3IEFycmF5KHQpO2ZvcihsZXQgaT0wO2khPT10OysraSluW2ldPWVbaV0uY2xvbmUoKX1yZXR1cm4gdGhpcy5jbGlwcGluZ1BsYW5lcz1uLHRoaXMuY2xpcEludGVyc2VjdGlvbj10LmNsaXBJbnRlcnNlY3Rpb24sdGhpcy5jbGlwU2hhZG93cz10LmNsaXBTaGFkb3dzLHRoaXMuc2hhZG93U2lkZT10LnNoYWRvd1NpZGUsdGhpcy5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSx0aGlzLmFscGhhV3JpdGU9dC5hbHBoYVdyaXRlLHRoaXMucHJlY2lzaW9uPXQucHJlY2lzaW9uLHRoaXMucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPXQucG9seWdvbk9mZnNldEZhY3Rvcix0aGlzLnBvbHlnb25PZmZzZXRVbml0cz10LnBvbHlnb25PZmZzZXRVbml0cyx0aGlzLmRpdGhlcmluZz10LmRpdGhlcmluZyx0aGlzLmFscGhhVGVzdD10LmFscGhhVGVzdCx0aGlzLmFscGhhVG9Db3ZlcmFnZT10LmFscGhhVG9Db3ZlcmFnZSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT10LnByZW11bHRpcGxpZWRBbHBoYSx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9c2V0IG5lZWRzVXBkYXRlKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9fXg0dC5wcm90b3R5cGUuaXNNYXRlcmlhbD0hMDtjbGFzcyB3NHQgZXh0ZW5kcyB4NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkNXQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuc3BlY3VsYXJNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmNvbWJpbmU9MCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fXc0dC5wcm90b3R5cGUuaXNNZXNoQmFzaWNNYXRlcmlhbD0hMDtjb25zdCBTNHQ9bmV3IGEzdCxNNHQ9bmV3IEQ1dDtjbGFzcyBFNHR7Y29uc3RydWN0b3IodCxlLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiBhcnJheSBzaG91bGQgYmUgYSBUeXBlZCBBcnJheS4iKTt0aGlzLm5hbWU9IiIsdGhpcy5hcnJheT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMubm9ybWFsaXplZD0hMD09PW4sdGhpcy51c2FnZT1zNXQsdGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9LHRoaXMudmVyc2lvbj0wfW9uVXBsb2FkQ2FsbGJhY2soKXt9c2V0IG5lZWRzVXBkYXRlKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9c2V0VXNhZ2UodCl7cmV0dXJuIHRoaXMudXNhZ2U9dCx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubmFtZT10Lm5hbWUsdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLml0ZW1TaXplPXQuaXRlbVNpemUsdGhpcy5jb3VudD10LmNvdW50LHRoaXMubm9ybWFsaXplZD10Lm5vcm1hbGl6ZWQsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLml0ZW1TaXplLG4qPWUuaXRlbVNpemU7Zm9yKGxldCBpPTAscj10aGlzLml0ZW1TaXplO2k8cjtpKyspdGhpcy5hcnJheVt0K2ldPWUuYXJyYXlbbitpXTtyZXR1cm4gdGhpc31jb3B5QXJyYXkodCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQpLHRoaXN9Y29weUNvbG9yc0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHI9dFtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weUNvbG9yc0FycmF5KCk6IGNvbG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgJDV0KSxlW24rK109ci5yLGVbbisrXT1yLmcsZVtuKytdPXIuYn1yZXR1cm4gdGhpc31jb3B5VmVjdG9yMnNBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2xldCByPXRbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Iyc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3IEQ1dCksZVtuKytdPXIueCxlW24rK109ci55fXJldHVybiB0aGlzfWNvcHlWZWN0b3Izc0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHI9dFtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjNzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgYTN0KSxlW24rK109ci54LGVbbisrXT1yLnksZVtuKytdPXIuen1yZXR1cm4gdGhpc31jb3B5VmVjdG9yNHNBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2xldCByPXRbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3I0c0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3IGUzdCksZVtuKytdPXIueCxlW24rK109ci55LGVbbisrXT1yLnosZVtuKytdPXIud31yZXR1cm4gdGhpc31hcHBseU1hdHJpeDModCl7aWYoMj09PXRoaXMuaXRlbVNpemUpZm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspTTR0LmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxlKSxNNHQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFkoZSxNNHQueCxNNHQueSk7ZWxzZSBpZigzPT09dGhpcy5pdGVtU2l6ZSlmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylTNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0aGlzLGUpLFM0dC5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWVooZSxTNHQueCxTNHQueSxTNHQueik7cmV0dXJuIHRoaXN9YXBwbHlNYXRyaXg0KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKVM0dC54PXRoaXMuZ2V0WChlKSxTNHQueT10aGlzLmdldFkoZSksUzR0Lno9dGhpcy5nZXRaKGUpLFM0dC5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRYWVooZSxTNHQueCxTNHQueSxTNHQueik7cmV0dXJuIHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspUzR0Lng9dGhpcy5nZXRYKGUpLFM0dC55PXRoaXMuZ2V0WShlKSxTNHQuej10aGlzLmdldFooZSksUzR0LmFwcGx5Tm9ybWFsTWF0cml4KHQpLHRoaXMuc2V0WFlaKGUsUzR0LngsUzR0LnksUzR0LnopO3JldHVybiB0aGlzfXRyYW5zZm9ybURpcmVjdGlvbih0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylTNHQueD10aGlzLmdldFgoZSksUzR0Lnk9dGhpcy5nZXRZKGUpLFM0dC56PXRoaXMuZ2V0WihlKSxTNHQudHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXMuc2V0WFlaKGUsUzR0LngsUzR0LnksUzR0LnopO3JldHVybiB0aGlzfXNldCh0LGU9MCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQsZSksdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZV19c2V0WCh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZV09ZSx0aGlzfWdldFkodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzFdfXNldFkodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV09ZSx0aGlzfWdldFoodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdfXNldFoodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMl09ZSx0aGlzfWdldFcodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdfXNldFcodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM109ZSx0aGlzfXNldFhZKHQsZSxuKXtyZXR1cm4gdGhpcy5hcnJheVsodCo9dGhpcy5pdGVtU2l6ZSkrMF09ZSx0aGlzLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixpKXtyZXR1cm4gdGhpcy5hcnJheVsodCo9dGhpcy5pdGVtU2l6ZSkrMF09ZSx0aGlzLmFycmF5W3QrMV09bix0aGlzLmFycmF5W3QrMl09aSx0aGlzfXNldFhZWlcodCxlLG4saSxyKXtyZXR1cm4gdGhpcy5hcnJheVsodCo9dGhpcy5pdGVtU2l6ZSkrMF09ZSx0aGlzLmFycmF5W3QrMV09bix0aGlzLmFycmF5W3QrMl09aSx0aGlzLmFycmF5W3QrM109cix0aGlzfW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuYXJyYXksdGhpcy5pdGVtU2l6ZSkuY29weSh0aGlzKX10b0pTT04oKXtjb25zdCB0PXtpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYXJyYXkpLG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfTtyZXR1cm4iIiE9PXRoaXMubmFtZSYmKHQubmFtZT10aGlzLm5hbWUpLHRoaXMudXNhZ2UhPT1zNXQmJih0LnVzYWdlPXRoaXMudXNhZ2UpLDA9PT10aGlzLnVwZGF0ZVJhbmdlLm9mZnNldCYmLTE9PT10aGlzLnVwZGF0ZVJhbmdlLmNvdW50fHwodC51cGRhdGVSYW5nZT10aGlzLnVwZGF0ZVJhbmdlKSx0fX1FNHQucHJvdG90eXBlLmlzQnVmZmVyQXR0cmlidXRlPSEwO2NsYXNzIFQ0dCBleHRlbmRzIEU0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEludDhBcnJheSh0KSxlLG4pfX1jbGFzcyBDNHQgZXh0ZW5kcyBFNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50OEFycmF5KHQpLGUsbil9fWNsYXNzIEE0dCBleHRlbmRzIEU0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQpLGUsbil9fWNsYXNzIGs0dCBleHRlbmRzIEU0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEludDE2QXJyYXkodCksZSxuKX19Y2xhc3MgUDR0IGV4dGVuZHMgRTR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDE2QXJyYXkodCksZSxuKX19Y2xhc3MgTDR0IGV4dGVuZHMgRTR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgSW50MzJBcnJheSh0KSxlLG4pfX1jbGFzcyBJNHQgZXh0ZW5kcyBFNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MzJBcnJheSh0KSxlLG4pfX1jbGFzcyBONHQgZXh0ZW5kcyBFNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfX1ONHQucHJvdG90eXBlLmlzRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBSNHQgZXh0ZW5kcyBFNHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBGbG9hdDMyQXJyYXkodCksZSxuKX19Y2xhc3MgTzR0IGV4dGVuZHMgRTR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgRmxvYXQ2NEFycmF5KHQpLGUsbil9fWxldCB6NHQ9MDtjb25zdCBENHQ9bmV3IEQzdCxCNHQ9bmV3IGw0dCxINHQ9bmV3IGEzdCxGNHQ9bmV3IGMzdCxWNHQ9bmV3IGMzdCxVNHQ9bmV3IGEzdDtjbGFzcyBqNHQgZXh0ZW5kcyBoNXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOno0dCsrfSksdGhpcy51dWlkPWc1dCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9IkJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9ITEsdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbCx0aGlzLmRyYXdSYW5nZT17c3RhcnQ6MCxjb3VudDoxLzB9LHRoaXMudXNlckRhdGE9e319Z2V0SW5kZXgoKXtyZXR1cm4gdGhpcy5pbmRleH1zZXRJbmRleCh0KXtyZXR1cm4gdGhpcy5pbmRleD1BcnJheS5pc0FycmF5KHQpP25ldyhINXQodCk/STR0OlA0dCkodCwxKTp0LHRoaXN9Z2V0QXR0cmlidXRlKHQpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF19c2V0QXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XT1lLHRoaXN9ZGVsZXRlQXR0cmlidXRlKHQpe3JldHVybiBkZWxldGUgdGhpcy5hdHRyaWJ1dGVzW3RdLHRoaXN9aGFzQXR0cmlidXRlKHQpe3JldHVybiB2b2lkIDAhPT10aGlzLmF0dHJpYnV0ZXNbdF19YWRkR3JvdXAodCxlLG49MCl7dGhpcy5ncm91cHMucHVzaCh7c3RhcnQ6dCxjb3VudDplLG1hdGVyaWFsSW5kZXg6bn0pfWNsZWFyR3JvdXBzKCl7dGhpcy5ncm91cHM9W119c2V0RHJhd1JhbmdlKHQsZSl7dGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dCx0aGlzLmRyYXdSYW5nZS5jb3VudD1lfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjt2b2lkIDAhPT1lJiYoZS5hcHBseU1hdHJpeDQodCksZS5uZWVkc1VwZGF0ZT0hMCk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2lmKHZvaWQgMCE9PW4pe2NvbnN0IGU9KG5ldyBCNXQpLmdldE5vcm1hbE1hdHJpeCh0KTtuLmFwcGx5Tm9ybWFsTWF0cml4KGUpLG4ubmVlZHNVcGRhdGU9ITB9Y29uc3QgaT10aGlzLmF0dHJpYnV0ZXMudGFuZ2VudDtyZXR1cm4gdm9pZCAwIT09aSYmKGkudHJhbnNmb3JtRGlyZWN0aW9uKHQpLGkubmVlZHNVcGRhdGU9ITApLG51bGwhPT10aGlzLmJvdW5kaW5nQm94JiZ0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLG51bGwhPT10aGlzLmJvdW5kaW5nU3BoZXJlJiZ0aGlzLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXN9YXBwbHlRdWF0ZXJuaW9uKHQpe3JldHVybiBENHQubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5hcHBseU1hdHJpeDQoRDR0KSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIEQ0dC5tYWtlUm90YXRpb25YKHQpLHRoaXMuYXBwbHlNYXRyaXg0KEQ0dCksdGhpc31yb3RhdGVZKHQpe3JldHVybiBENHQubWFrZVJvdGF0aW9uWSh0KSx0aGlzLmFwcGx5TWF0cml4NChENHQpLHRoaXN9cm90YXRlWih0KXtyZXR1cm4gRDR0Lm1ha2VSb3RhdGlvbloodCksdGhpcy5hcHBseU1hdHJpeDQoRDR0KSx0aGlzfXRyYW5zbGF0ZSh0LGUsbil7cmV0dXJuIEQ0dC5tYWtlVHJhbnNsYXRpb24odCxlLG4pLHRoaXMuYXBwbHlNYXRyaXg0KEQ0dCksdGhpc31zY2FsZSh0LGUsbil7cmV0dXJuIEQ0dC5tYWtlU2NhbGUodCxlLG4pLHRoaXMuYXBwbHlNYXRyaXg0KEQ0dCksdGhpc31sb29rQXQodCl7cmV0dXJuIEI0dC5sb29rQXQodCksQjR0LnVwZGF0ZU1hdHJpeCgpLHRoaXMuYXBwbHlNYXRyaXg0KEI0dC5tYXRyaXgpLHRoaXN9Y2VudGVyKCl7cmV0dXJuIHRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksdGhpcy5ib3VuZGluZ0JveC5nZXRDZW50ZXIoSDR0KS5uZWdhdGUoKSx0aGlzLnRyYW5zbGF0ZShINHQueCxINHQueSxINHQueiksdGhpc31zZXRGcm9tUG9pbnRzKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRbbl07ZS5wdXNoKGkueCxpLnksaS56fHwwKX1yZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGUsMykpLHRoaXN9Y29tcHV0ZUJvdW5kaW5nQm94KCl7bnVsbD09PXRoaXMuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PW5ldyBjM3QpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgYm94LiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nQm94LnNldChuZXcgYTN0KC0xLzAsLTEvMCwtMS8wKSxuZXcgYTN0KDEvMCwxLzAsMS8wKSk7aWYodm9pZCAwIT09dCl7aWYodGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtGNHQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShlW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhVNHQuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1pbixGNHQubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoVTR0KSxVNHQuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1heCxGNHQubWF4KSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoVTR0KSk6KHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChGNHQubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoRjR0Lm1heCkpfX1lbHNlIHRoaXMuYm91bmRpbmdCb3gubWFrZUVtcHR5KCk7KGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLngpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi55KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueikpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogQ29tcHV0ZWQgbWluL21heCBoYXZlIE5hTiB2YWx1ZXMuIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9Y29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl7bnVsbD09PXRoaXMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBBM3QpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgc3BoZXJlLiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nU3BoZXJlLnNldChuZXcgYTN0LDEvMCk7aWYodCl7Y29uc3Qgbj10aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlcjtpZihGNHQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxlKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7VjR0LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUoZVt0XSksdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT8oVTR0LmFkZFZlY3RvcnMoRjR0Lm1pbixWNHQubWluKSxGNHQuZXhwYW5kQnlQb2ludChVNHQpLFU0dC5hZGRWZWN0b3JzKEY0dC5tYXgsVjR0Lm1heCksRjR0LmV4cGFuZEJ5UG9pbnQoVTR0KSk6KEY0dC5leHBhbmRCeVBvaW50KFY0dC5taW4pLEY0dC5leHBhbmRCeVBvaW50KFY0dC5tYXgpKX1GNHQuZ2V0Q2VudGVyKG4pO2xldCBpPTA7Zm9yKGxldCBlPTAscj10LmNvdW50O2U8cjtlKyspVTR0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxpPU1hdGgubWF4KGksbi5kaXN0YW5jZVRvU3F1YXJlZChVNHQpKTtpZihlKWZvcihsZXQgcj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7Y29uc3Qgbz1lW3JdLGE9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtmb3IobGV0IGU9MCxyPW8uY291bnQ7ZTxyO2UrKylVNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGUpLGEmJihINHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLFU0dC5hZGQoSDR0KSksaT1NYXRoLm1heChpLG4uZGlzdGFuY2VUb1NxdWFyZWQoVTR0KSl9dGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXM9TWF0aC5zcXJ0KGkpLGlzTmFOKHRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzKSYmY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk6IENvbXB1dGVkIHJhZGl1cyBpcyBOYU4uIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9fWNvbXB1dGVUYW5nZW50cygpe2NvbnN0IHQ9dGhpcy5pbmRleCxlPXRoaXMuYXR0cmlidXRlcztpZihudWxsPT09dHx8dm9pZCAwPT09ZS5wb3NpdGlvbnx8dm9pZCAwPT09ZS5ub3JtYWx8fHZvaWQgMD09PWUudXYpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlVGFuZ2VudHMoKSBmYWlsZWQuIE1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyAoaW5kZXgsIHBvc2l0aW9uLCBub3JtYWwgb3IgdXYpIik7Y29uc3Qgbj10LmFycmF5LGk9ZS5wb3NpdGlvbi5hcnJheSxyPWUubm9ybWFsLmFycmF5LG89ZS51di5hcnJheSxhPWkubGVuZ3RoLzM7dm9pZCAwPT09ZS50YW5nZW50JiZ0aGlzLnNldEF0dHJpYnV0ZSgidGFuZ2VudCIsbmV3IEU0dChuZXcgRmxvYXQzMkFycmF5KDQqYSksNCkpO2NvbnN0IHM9ZS50YW5nZW50LmFycmF5LGw9W10sYz1bXTtmb3IobGV0IHQ9MDt0PGE7dCsrKWxbdF09bmV3IGEzdCxjW3RdPW5ldyBhM3Q7Y29uc3QgdT1uZXcgYTN0LGg9bmV3IGEzdCxkPW5ldyBhM3QscD1uZXcgRDV0LGY9bmV3IEQ1dCxtPW5ldyBENXQsZz1uZXcgYTN0LF89bmV3IGEzdDtmdW5jdGlvbiB5KHQsZSxuKXt1LmZyb21BcnJheShpLDMqdCksaC5mcm9tQXJyYXkoaSwzKmUpLGQuZnJvbUFycmF5KGksMypuKSxwLmZyb21BcnJheShvLDIqdCksZi5mcm9tQXJyYXkobywyKmUpLG0uZnJvbUFycmF5KG8sMipuKSxoLnN1Yih1KSxkLnN1Yih1KSxmLnN1YihwKSxtLnN1YihwKTtjb25zdCByPTEvKGYueCptLnktbS54KmYueSk7aXNGaW5pdGUocikmJihnLmNvcHkoaCkubXVsdGlwbHlTY2FsYXIobS55KS5hZGRTY2FsZWRWZWN0b3IoZCwtZi55KS5tdWx0aXBseVNjYWxhcihyKSxfLmNvcHkoZCkubXVsdGlwbHlTY2FsYXIoZi54KS5hZGRTY2FsZWRWZWN0b3IoaCwtbS54KS5tdWx0aXBseVNjYWxhcihyKSxsW3RdLmFkZChnKSxsW2VdLmFkZChnKSxsW25dLmFkZChnKSxjW3RdLmFkZChfKSxjW2VdLmFkZChfKSxjW25dLmFkZChfKSl9bGV0IHY9dGhpcy5ncm91cHM7MD09PXYubGVuZ3RoJiYodj1be3N0YXJ0OjAsY291bnQ6bi5sZW5ndGh9XSk7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPXZbdF0saT1lLnN0YXJ0O2ZvcihsZXQgdD1pLHI9aStlLmNvdW50O3Q8cjt0Kz0zKXkoblt0KzBdLG5bdCsxXSxuW3QrMl0pfWNvbnN0IGI9bmV3IGEzdCx4PW5ldyBhM3Qsdz1uZXcgYTN0LFM9bmV3IGEzdDtmdW5jdGlvbiBNKHQpe3cuZnJvbUFycmF5KHIsMyp0KSxTLmNvcHkodyk7Y29uc3QgZT1sW3RdO2IuY29weShlKSxiLnN1Yih3Lm11bHRpcGx5U2NhbGFyKHcuZG90KGUpKSkubm9ybWFsaXplKCkseC5jcm9zc1ZlY3RvcnMoUyxlKTtjb25zdCBuPXguZG90KGNbdF0pPDA/LTE6MTtzWzQqdF09Yi54LHNbNCp0KzFdPWIueSxzWzQqdCsyXT1iLnosc1s0KnQrM109bn1mb3IobGV0IHQ9MCxlPXYubGVuZ3RoO3Q8ZTsrK3Qpe2NvbnN0IGU9dlt0XSxpPWUuc3RhcnQ7Zm9yKGxldCB0PWkscj1pK2UuY291bnQ7dDxyO3QrPTMpTShuW3QrMF0pLE0oblt0KzFdKSxNKG5bdCsyXSl9fWNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl7Y29uc3QgdD10aGlzLmluZGV4LGU9dGhpcy5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7aWYodm9pZCAwIT09ZSl7bGV0IG49dGhpcy5nZXRBdHRyaWJ1dGUoIm5vcm1hbCIpO2lmKHZvaWQgMD09PW4pbj1uZXcgRTR0KG5ldyBGbG9hdDMyQXJyYXkoMyplLmNvdW50KSwzKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuKTtlbHNlIGZvcihsZXQgdD0wLGU9bi5jb3VudDt0PGU7dCsrKW4uc2V0WFlaKHQsMCwwLDApO2NvbnN0IGk9bmV3IGEzdCxyPW5ldyBhM3Qsbz1uZXcgYTN0LGE9bmV3IGEzdCxzPW5ldyBhM3QsbD1uZXcgYTN0LGM9bmV3IGEzdCx1PW5ldyBhM3Q7aWYodClmb3IobGV0IGg9MCxkPXQuY291bnQ7aDxkO2grPTMpe2NvbnN0IGQ9dC5nZXRYKGgrMCkscD10LmdldFgoaCsxKSxmPXQuZ2V0WChoKzIpO2kuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGQpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHApLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGYpLGMuc3ViVmVjdG9ycyhvLHIpLHUuc3ViVmVjdG9ycyhpLHIpLGMuY3Jvc3ModSksYS5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZCkscy5mcm9tQnVmZmVyQXR0cmlidXRlKG4scCksbC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZiksYS5hZGQoYykscy5hZGQoYyksbC5hZGQoYyksbi5zZXRYWVooZCxhLngsYS55LGEueiksbi5zZXRYWVoocCxzLngscy55LHMueiksbi5zZXRYWVooZixsLngsbC55LGwueil9ZWxzZSBmb3IobGV0IHQ9MCxhPWUuY291bnQ7dDxhO3QrPTMpaS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCswKSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMiksYy5zdWJWZWN0b3JzKG8sciksdS5zdWJWZWN0b3JzKGksciksYy5jcm9zcyh1KSxuLnNldFhZWih0KzAsYy54LGMueSxjLnopLG4uc2V0WFlaKHQrMSxjLngsYy55LGMueiksbi5zZXRYWVoodCsyLGMueCxjLnksYy56KTt0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKSxuLm5lZWRzVXBkYXRlPSEwfX1tZXJnZSh0LGUpe2lmKCF0fHwhdC5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLHQpO3ZvaWQgMD09PWUmJihlPTAsY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBPdmVyd3JpdGluZyBvcmlnaW5hbCBnZW9tZXRyeSwgc3RhcnRpbmcgYXQgb2Zmc2V0PTAuIFVzZSBCdWZmZXJHZW9tZXRyeVV0aWxzLm1lcmdlQnVmZmVyR2VvbWV0cmllcygpIGZvciBsb3NzbGVzcyBtZXJnZS4iKSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGkgaW4gbil7aWYodm9pZCAwPT09dC5hdHRyaWJ1dGVzW2ldKWNvbnRpbnVlO2NvbnN0IHI9bltpXS5hcnJheSxvPXQuYXR0cmlidXRlc1tpXSxhPW8uYXJyYXkscz1vLml0ZW1TaXplKmUsbD1NYXRoLm1pbihhLmxlbmd0aCxyLmxlbmd0aC1zKTtmb3IobGV0IHQ9MCxlPXM7dDxsO3QrKyxlKyspcltlXT1hW3RdfXJldHVybiB0aGlzfW5vcm1hbGl6ZU5vcm1hbHMoKXtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7Zm9yKGxldCBlPTAsbj10LmNvdW50O2U8bjtlKyspVTR0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxVNHQubm9ybWFsaXplKCksdC5zZXRYWVooZSxVNHQueCxVNHQueSxVNHQueil9dG9Ob25JbmRleGVkKCl7ZnVuY3Rpb24gdCh0LGUpe2NvbnN0IG49dC5hcnJheSxpPXQuaXRlbVNpemUscj10Lm5vcm1hbGl6ZWQsbz1uZXcgbi5jb25zdHJ1Y3RvcihlLmxlbmd0aCppKTtsZXQgYT0wLHM9MDtmb3IobGV0IHI9MCxsPWUubGVuZ3RoO3I8bDtyKyspe2E9dC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlP2Vbcl0qdC5kYXRhLnN0cmlkZSt0Lm9mZnNldDplW3JdKmk7Zm9yKGxldCB0PTA7dDxpO3QrKylvW3MrK109blthKytdfXJldHVybiBuZXcgRTR0KG8saSxyKX1pZihudWxsPT09dGhpcy5pbmRleClyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS50b05vbkluZGV4ZWQoKTogQnVmZmVyR2VvbWV0cnkgaXMgYWxyZWFkeSBub24taW5kZXhlZC4iKSx0aGlzO2NvbnN0IGU9bmV3IGo0dCxuPXRoaXMuaW5kZXguYXJyYXksaT10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHIgaW4gaSl7Y29uc3Qgbz10KGlbcl0sbik7ZS5zZXRBdHRyaWJ1dGUocixvKX1jb25zdCByPXRoaXMubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IG89W10sYT1yW2ldO2ZvcihsZXQgZT0wLGk9YS5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT10KGFbZV0sbik7by5wdXNoKGkpfWUubW9ycGhBdHRyaWJ1dGVzW2ldPW99ZS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IG89dGhpcy5ncm91cHM7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPW9bdF07ZS5hZGRHcm91cChuLnN0YXJ0LG4uY291bnQsbi5tYXRlcmlhbEluZGV4KX1yZXR1cm4gZX10b0pTT04oKXtjb25zdCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQnVmZmVyR2VvbWV0cnkiLGdlbmVyYXRvcjoiQnVmZmVyR2VvbWV0cnkudG9KU09OIn19O2lmKHQudXVpZD10aGlzLnV1aWQsdC50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKHQubmFtZT10aGlzLm5hbWUpLE9iamVjdC5rZXlzKHRoaXMudXNlckRhdGEpLmxlbmd0aD4wJiYodC51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSx2b2lkIDAhPT10aGlzLnBhcmFtZXRlcnMpe2NvbnN0IGU9dGhpcy5wYXJhbWV0ZXJzO2Zvcihjb25zdCBuIGluIGUpdm9pZCAwIT09ZVtuXSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9dC5kYXRhPXthdHRyaWJ1dGVzOnt9fTtjb25zdCBlPXRoaXMuaW5kZXg7bnVsbCE9PWUmJih0LmRhdGEuaW5kZXg9e3R5cGU6ZS5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuYXJyYXkpfSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGUgaW4gbil7dC5kYXRhLmF0dHJpYnV0ZXNbZV09bltlXS50b0pTT04odC5kYXRhKX1jb25zdCBpPXt9O2xldCByPSExO2Zvcihjb25zdCBlIGluIHRoaXMubW9ycGhBdHRyaWJ1dGVzKXtjb25zdCBuPXRoaXMubW9ycGhBdHRyaWJ1dGVzW2VdLG89W107Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtvLnB1c2gobltlXS50b0pTT04odC5kYXRhKSl9by5sZW5ndGg+MCYmKGlbZV09byxyPSEwKX1yJiYodC5kYXRhLm1vcnBoQXR0cmlidXRlcz1pLHQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlKTtjb25zdCBvPXRoaXMuZ3JvdXBzO28ubGVuZ3RoPjAmJih0LmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKTtjb25zdCBhPXRoaXMuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1hJiYodC5kYXRhLmJvdW5kaW5nU3BoZXJlPXtjZW50ZXI6YS5jZW50ZXIudG9BcnJheSgpLHJhZGl1czphLnJhZGl1c30pLHR9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGw7Y29uc3QgZT17fTt0aGlzLm5hbWU9dC5uYW1lO2NvbnN0IG49dC5pbmRleDtudWxsIT09biYmdGhpcy5zZXRJbmRleChuLmNsb25lKGUpKTtjb25zdCBpPXQuYXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBpKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGlbdF0uY2xvbmUoZSkpfWNvbnN0IHI9dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gcil7Y29uc3Qgbj1bXSxpPXJbdF07Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKW4ucHVzaChpW3RdLmNsb25lKGUpKTt0aGlzLm1vcnBoQXR0cmlidXRlc1t0XT1ufXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9dC5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCBvPXQuZ3JvdXBzO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vW3RdO3RoaXMuYWRkR3JvdXAoZS5zdGFydCxlLmNvdW50LGUubWF0ZXJpYWxJbmRleCl9Y29uc3QgYT10LmJvdW5kaW5nQm94O251bGwhPT1hJiYodGhpcy5ib3VuZGluZ0JveD1hLmNsb25lKCkpO2NvbnN0IHM9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbnVsbCE9PXMmJih0aGlzLmJvdW5kaW5nU3BoZXJlPXMuY2xvbmUoKSksdGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dC5kcmF3UmFuZ2Uuc3RhcnQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9dC5kcmF3UmFuZ2UuY291bnQsdGhpcy51c2VyRGF0YT10LnVzZXJEYXRhLHZvaWQgMCE9PXQucGFyYW1ldGVycyYmKHRoaXMucGFyYW1ldGVycz1PYmplY3QuYXNzaWduKHt9LHQucGFyYW1ldGVycykpLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19ajR0LnByb3RvdHlwZS5pc0J1ZmZlckdlb21ldHJ5PSEwO2NvbnN0IEc0dD1uZXcgRDN0LFc0dD1uZXcgejN0LHE0dD1uZXcgQTN0LFk0dD1uZXcgYTN0LFg0dD1uZXcgYTN0LCQ0dD1uZXcgYTN0LEs0dD1uZXcgYTN0LFo0dD1uZXcgYTN0LEo0dD1uZXcgYTN0LFE0dD1uZXcgYTN0LHQ2dD1uZXcgYTN0LGU2dD1uZXcgYTN0LG42dD1uZXcgRDV0LGk2dD1uZXcgRDV0LHI2dD1uZXcgRDV0LG82dD1uZXcgYTN0LGE2dD1uZXcgYTN0O2NsYXNzIHM2dCBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcih0PW5ldyBqNHQsZT1uZXcgdzR0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaCIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdm9pZCAwIT09dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMmJih0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5zbGljZSgpKSx2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSYmKHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PU9iamVjdC5hc3NpZ24oe30sdC5tb3JwaFRhcmdldERpY3Rpb25hcnkpKSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9dXBkYXRlTW9ycGhUYXJnZXRzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgZT10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKGUpO2lmKG4ubGVuZ3RoPjApe2NvbnN0IHQ9ZVtuWzBdXTtpZih2b2lkIDAhPT10KXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXS5uYW1lfHxTdHJpbmcoZSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtuXT1lfX19fWVsc2V7Y29uc3QgZT10Lm1vcnBoVGFyZ2V0czt2b2lkIDAhPT1lJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdGVyaWFsLHI9dGhpcy5tYXRyaXhXb3JsZDtpZih2b2lkIDA9PT1pKXJldHVybjtpZihudWxsPT09bi5ib3VuZGluZ1NwaGVyZSYmbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxxNHQuY29weShuLmJvdW5kaW5nU3BoZXJlKSxxNHQuYXBwbHlNYXRyaXg0KHIpLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZShxNHQpKXJldHVybjtpZihHNHQuY29weShyKS5pbnZlcnQoKSxXNHQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KEc0dCksbnVsbCE9PW4uYm91bmRpbmdCb3gmJiExPT09VzR0LmludGVyc2VjdHNCb3gobi5ib3VuZGluZ0JveCkpcmV0dXJuO2xldCBvO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3Qgcj1uLmluZGV4LGE9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uLHM9bi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbD1uLm1vcnBoVGFyZ2V0c1JlbGF0aXZlLGM9bi5hdHRyaWJ1dGVzLnV2LHU9bi5hdHRyaWJ1dGVzLnV2MixoPW4uZ3JvdXBzLGQ9bi5kcmF3UmFuZ2U7aWYobnVsbCE9PXIpaWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IG49MCxwPWgubGVuZ3RoO248cDtuKyspe2NvbnN0IHA9aFtuXSxmPWlbcC5tYXRlcmlhbEluZGV4XTtmb3IobGV0IG49TWF0aC5tYXgocC5zdGFydCxkLnN0YXJ0KSxpPU1hdGgubWluKHIuY291bnQsTWF0aC5taW4ocC5zdGFydCtwLmNvdW50LGQuc3RhcnQrZC5jb3VudCkpO248aTtuKz0zKXtjb25zdCBpPXIuZ2V0WChuKSxoPXIuZ2V0WChuKzEpLGQ9ci5nZXRYKG4rMik7bz1sNnQodGhpcyxmLHQsVzR0LGEscyxsLGMsdSxpLGgsZCksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxvLmZhY2UubWF0ZXJpYWxJbmRleD1wLm1hdGVyaWFsSW5kZXgsZS5wdXNoKG8pKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxkLnN0YXJ0KSxoPU1hdGgubWluKHIuY291bnQsZC5zdGFydCtkLmNvdW50KTtuPGg7bis9Myl7Y29uc3QgaD1yLmdldFgobiksZD1yLmdldFgobisxKSxwPXIuZ2V0WChuKzIpO289bDZ0KHRoaXMsaSx0LFc0dCxhLHMsbCxjLHUsaCxkLHApLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksZS5wdXNoKG8pKX19ZWxzZSBpZih2b2lkIDAhPT1hKWlmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBuPTAscj1oLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWhbbl0scD1pW3IubWF0ZXJpYWxJbmRleF07Zm9yKGxldCBuPU1hdGgubWF4KHIuc3RhcnQsZC5zdGFydCksaT1NYXRoLm1pbihhLmNvdW50LE1hdGgubWluKHIuc3RhcnQrci5jb3VudCxkLnN0YXJ0K2QuY291bnQpKTtuPGk7bis9Myl7bz1sNnQodGhpcyxwLHQsVzR0LGEscyxsLGMsdSxuLG4rMSxuKzIpLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksby5mYWNlLm1hdGVyaWFsSW5kZXg9ci5tYXRlcmlhbEluZGV4LGUucHVzaChvKSl9fWVsc2V7Zm9yKGxldCBuPU1hdGgubWF4KDAsZC5zdGFydCkscj1NYXRoLm1pbihhLmNvdW50LGQuc3RhcnQrZC5jb3VudCk7bjxyO24rPTMpe289bDZ0KHRoaXMsaSx0LFc0dCxhLHMsbCxjLHUsbixuKzEsbisyKSxvJiYoby5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGUucHVzaChvKSl9fX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19ZnVuY3Rpb24gbDZ0KHQsZSxuLGkscixvLGEscyxsLGMsdSxoKXtZNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGMpLFg0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsdSksJDR0LmZyb21CdWZmZXJBdHRyaWJ1dGUocixoKTtjb25zdCBkPXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzO2lmKG8mJmQpe1E0dC5zZXQoMCwwLDApLHQ2dC5zZXQoMCwwLDApLGU2dC5zZXQoMCwwLDApO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1kW3RdLG49b1t0XTswIT09ZSYmKEs0dC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sYyksWjR0LmZyb21CdWZmZXJBdHRyaWJ1dGUobix1KSxKNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGgpLGE/KFE0dC5hZGRTY2FsZWRWZWN0b3IoSzR0LGUpLHQ2dC5hZGRTY2FsZWRWZWN0b3IoWjR0LGUpLGU2dC5hZGRTY2FsZWRWZWN0b3IoSjR0LGUpKTooUTR0LmFkZFNjYWxlZFZlY3RvcihLNHQuc3ViKFk0dCksZSksdDZ0LmFkZFNjYWxlZFZlY3RvcihaNHQuc3ViKFg0dCksZSksZTZ0LmFkZFNjYWxlZFZlY3RvcihKNHQuc3ViKCQ0dCksZSkpKX1ZNHQuYWRkKFE0dCksWDR0LmFkZCh0NnQpLCQ0dC5hZGQoZTZ0KX10LmlzU2tpbm5lZE1lc2gmJih0LmJvbmVUcmFuc2Zvcm0oYyxZNHQpLHQuYm9uZVRyYW5zZm9ybSh1LFg0dCksdC5ib25lVHJhbnNmb3JtKGgsJDR0KSk7Y29uc3QgcD0oZnVuY3Rpb24gZih0LGUsbixpLHIsbyxhLHMpe2xldCBsO2lmKGw9MT09PWUuc2lkZT9pLmludGVyc2VjdFRyaWFuZ2xlKGEsbyxyLCEwLHMpOmkuaW50ZXJzZWN0VHJpYW5nbGUocixvLGEsMiE9PWUuc2lkZSxzKSxudWxsPT09bClyZXR1cm4gbnVsbDthNnQuY29weShzKSxhNnQuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpO2NvbnN0IGM9bi5yYXkub3JpZ2luLmRpc3RhbmNlVG8oYTZ0KTtyZXR1cm4gYzxuLm5lYXJ8fGM+bi5mYXI/bnVsbDp7ZGlzdGFuY2U6Yyxwb2ludDphNnQuY2xvbmUoKSxvYmplY3Q6dH19KSh0LGUsbixpLFk0dCxYNHQsJDR0LG82dCk7aWYocCl7cyYmKG42dC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsYyksaTZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyx1KSxyNnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLGgpLHAudXY9djR0LmdldFVWKG82dCxZNHQsWDR0LCQ0dCxuNnQsaTZ0LHI2dCxuZXcgRDV0KSksbCYmKG42dC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsYyksaTZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCx1KSxyNnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLGgpLHAudXYyPXY0dC5nZXRVVihvNnQsWTR0LFg0dCwkNHQsbjZ0LGk2dCxyNnQsbmV3IEQ1dCkpO2NvbnN0IHQ9e2E6YyxiOnUsYzpoLG5vcm1hbDpuZXcgYTN0LG1hdGVyaWFsSW5kZXg6MH07djR0LmdldE5vcm1hbChZNHQsWDR0LCQ0dCx0Lm5vcm1hbCkscC5mYWNlPXR9cmV0dXJuIHB9czZ0LnByb3RvdHlwZS5pc01lc2g9ITA7Y2xhc3MgYzZ0IGV4dGVuZHMgajR0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLGk9MSxyPTEsbz0xKXtzdXBlcigpLHRoaXMudHlwZT0iQm94R2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17d2lkdGg6dCxoZWlnaHQ6ZSxkZXB0aDpuLHdpZHRoU2VnbWVudHM6aSxoZWlnaHRTZWdtZW50czpyLGRlcHRoU2VnbWVudHM6b307Y29uc3QgYT10aGlzO2k9TWF0aC5mbG9vcihpKSxyPU1hdGguZmxvb3Iociksbz1NYXRoLmZsb29yKG8pO2NvbnN0IHM9W10sbD1bXSxjPVtdLHU9W107bGV0IGg9MCxkPTA7ZnVuY3Rpb24gcCh0LGUsbixpLHIsbyxwLGYsbSxnLF8pe2NvbnN0IHk9by9tLHY9cC9nLGI9by8yLHg9cC8yLHc9Zi8yLFM9bSsxLE09ZysxO2xldCBFPTAsVD0wO2NvbnN0IEM9bmV3IGEzdDtmb3IobGV0IG89MDtvPE07bysrKXtjb25zdCBhPW8qdi14O2ZvcihsZXQgcz0wO3M8UztzKyspe0NbdF09KHMqeS1iKSppLENbZV09YSpyLENbbl09dyxsLnB1c2goQy54LEMueSxDLnopLENbdF09MCxDW2VdPTAsQ1tuXT1mPjA/MTotMSxjLnB1c2goQy54LEMueSxDLnopLHUucHVzaChzL20pLHUucHVzaCgxLW8vZyksRSs9MX19Zm9yKGxldCB0PTA7dDxnO3QrKylmb3IobGV0IGU9MDtlPG07ZSsrKXtjb25zdCBuPWgrZStTKih0KzEpLGk9aCsoZSsxKStTKih0KzEpLHI9aCsoZSsxKStTKnQ7cy5wdXNoKGgrZStTKnQsbixyKSxzLnB1c2gobixpLHIpLFQrPTZ9YS5hZGRHcm91cChkLFQsXyksZCs9VCxoKz1FfXAoInoiLCJ5IiwieCIsLTEsLTEsbixlLHQsbyxyLDApLHAoInoiLCJ5IiwieCIsMSwtMSxuLGUsLXQsbyxyLDEpLHAoIngiLCJ6IiwieSIsMSwxLHQsbixlLGksbywyKSxwKCJ4IiwieiIsInkiLDEsLTEsdCxuLC1lLGksbywzKSxwKCJ4IiwieSIsInoiLDEsLTEsdCxlLG4saSxyLDQpLHAoIngiLCJ5IiwieiIsLTEsLTEsdCxlLC1uLGksciw1KSx0aGlzLnNldEluZGV4KHMpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dChsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgUjR0KGMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFI0dCh1LDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBjNnQodC53aWR0aCx0LmhlaWdodCx0LmRlcHRoLHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQuZGVwdGhTZWdtZW50cyl9fWZ1bmN0aW9uIHU2dCh0KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIGluIHQpe2Vbbl09e307Zm9yKGNvbnN0IGkgaW4gdFtuXSl7Y29uc3Qgcj10W25dW2ldO2Vbbl1baV09ciYmKHIuaXNDb2xvcnx8ci5pc01hdHJpeDN8fHIuaXNNYXRyaXg0fHxyLmlzVmVjdG9yMnx8ci5pc1ZlY3RvcjN8fHIuaXNWZWN0b3I0fHxyLmlzVGV4dHVyZXx8ci5pc1F1YXRlcm5pb24pP3IuY2xvbmUoKTpBcnJheS5pc0FycmF5KHIpP3Iuc2xpY2UoKTpyfX1yZXR1cm4gZX1mdW5jdGlvbiBoNnQodCl7Y29uc3QgZT17fTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT11NnQodFtuXSk7Zm9yKGNvbnN0IHQgaW4gaSllW3RdPWlbdF19cmV0dXJuIGV9Y29uc3QgZDZ0PXtjbG9uZTp1NnQsbWVyZ2U6aDZ0fTtjbGFzcyBwNnQgZXh0ZW5kcyB4NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRlck1hdGVyaWFsIix0aGlzLmRlZmluZXM9e30sdGhpcy51bmlmb3Jtcz17fSx0aGlzLnZlcnRleFNoYWRlcj0idm9pZCBtYWluKCkge1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59Iix0aGlzLmZyYWdtZW50U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDEuMCwgMC4wLCAwLjAsIDEuMCApO1xufSIsdGhpcy5saW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMubGlnaHRzPSExLHRoaXMuY2xpcHBpbmc9ITEsdGhpcy5leHRlbnNpb25zPXtkZXJpdmF0aXZlczohMSxmcmFnRGVwdGg6ITEsZHJhd0J1ZmZlcnM6ITEsc2hhZGVyVGV4dHVyZUxPRDohMX0sdGhpcy5kZWZhdWx0QXR0cmlidXRlVmFsdWVzPXtjb2xvcjpbMSwxLDFdLHV2OlswLDBdLHV2MjpbMCwwXX0sdGhpcy5pbmRleDBBdHRyaWJ1dGVOYW1lPXZvaWQgMCx0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSx0aGlzLmdsc2xWZXJzaW9uPW51bGwsdm9pZCAwIT09dCYmKHZvaWQgMCE9PXQuYXR0cmlidXRlcyYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksdGhpcy5zZXRWYWx1ZXModCkpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyLHRoaXMudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyLHRoaXMudW5pZm9ybXM9dTZ0KHQudW5pZm9ybXMpLHRoaXMuZGVmaW5lcz1PYmplY3QuYXNzaWduKHt9LHQuZGVmaW5lcyksdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy5saWdodHM9dC5saWdodHMsdGhpcy5jbGlwcGluZz10LmNsaXBwaW5nLHRoaXMuZXh0ZW5zaW9ucz1PYmplY3QuYXNzaWduKHt9LHQuZXh0ZW5zaW9ucyksdGhpcy5nbHNsVmVyc2lvbj10Lmdsc2xWZXJzaW9uLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO2UuZ2xzbFZlcnNpb249dGhpcy5nbHNsVmVyc2lvbixlLnVuaWZvcm1zPXt9O2Zvcihjb25zdCBuIGluIHRoaXMudW5pZm9ybXMpe2NvbnN0IGk9dGhpcy51bmlmb3Jtc1tuXS52YWx1ZTtlLnVuaWZvcm1zW25dPWkmJmkuaXNUZXh0dXJlP3t0eXBlOiJ0Iix2YWx1ZTppLnRvSlNPTih0KS51dWlkfTppJiZpLmlzQ29sb3I/e3R5cGU6ImMiLHZhbHVlOmkuZ2V0SGV4KCl9OmkmJmkuaXNWZWN0b3IyP3t0eXBlOiJ2MiIsdmFsdWU6aS50b0FycmF5KCl9OmkmJmkuaXNWZWN0b3IzP3t0eXBlOiJ2MyIsdmFsdWU6aS50b0FycmF5KCl9OmkmJmkuaXNWZWN0b3I0P3t0eXBlOiJ2NCIsdmFsdWU6aS50b0FycmF5KCl9OmkmJmkuaXNNYXRyaXgzP3t0eXBlOiJtMyIsdmFsdWU6aS50b0FycmF5KCl9OmkmJmkuaXNNYXRyaXg0P3t0eXBlOiJtNCIsdmFsdWU6aS50b0FycmF5KCl9Ont2YWx1ZTppfX1PYmplY3Qua2V5cyh0aGlzLmRlZmluZXMpLmxlbmd0aD4wJiYoZS5kZWZpbmVzPXRoaXMuZGVmaW5lcyksZS52ZXJ0ZXhTaGFkZXI9dGhpcy52ZXJ0ZXhTaGFkZXIsZS5mcmFnbWVudFNoYWRlcj10aGlzLmZyYWdtZW50U2hhZGVyO2NvbnN0IG49e307Zm9yKGNvbnN0IHQgaW4gdGhpcy5leHRlbnNpb25zKSEwPT09dGhpcy5leHRlbnNpb25zW3RdJiYoblt0XT0hMCk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmxlbmd0aD4wJiYoZS5leHRlbnNpb25zPW4pLGV9fXA2dC5wcm90b3R5cGUuaXNTaGFkZXJNYXRlcmlhbD0hMDtjbGFzcyBmNnQgZXh0ZW5kcyBsNHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ2FtZXJhIix0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZT1uZXcgRDN0LHRoaXMucHJvamVjdGlvbk1hdHJpeD1uZXcgRDN0LHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2U9bmV3IEQzdH1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLnByb2plY3Rpb25NYXRyaXguY29weSh0LnByb2plY3Rpb25NYXRyaXgpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSx0aGlzfWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2NvbnN0IGU9dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQoLWVbOF0sLWVbOV0sLWVbMTBdKS5ub3JtYWxpemUoKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7c3VwZXIudXBkYXRlV29ybGRNYXRyaXgodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1mNnQucHJvdG90eXBlLmlzQ2FtZXJhPSEwO2NsYXNzIG02dCBleHRlbmRzIGY2dHtjb25zdHJ1Y3Rvcih0PTUwLGU9MSxuPS4xLGk9MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iUGVyc3BlY3RpdmVDYW1lcmEiLHRoaXMuZm92PXQsdGhpcy56b29tPTEsdGhpcy5uZWFyPW4sdGhpcy5mYXI9aSx0aGlzLmZvY3VzPTEwLHRoaXMuYXNwZWN0PWUsdGhpcy52aWV3PW51bGwsdGhpcy5maWxtR2F1Z2U9MzUsdGhpcy5maWxtT2Zmc2V0PTAsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5mb3Y9dC5mb3YsdGhpcy56b29tPXQuem9vbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzLmFzcGVjdD10LmFzcGVjdCx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzLmZpbG1HYXVnZT10LmZpbG1HYXVnZSx0aGlzLmZpbG1PZmZzZXQ9dC5maWxtT2Zmc2V0LHRoaXN9c2V0Rm9jYWxMZW5ndGgodCl7Y29uc3QgZT0uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90O3RoaXMuZm92PTIqbTV0Kk1hdGguYXRhbihlKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1nZXRGb2NhbExlbmd0aCgpe2NvbnN0IHQ9TWF0aC50YW4oLjUqZjV0KnRoaXMuZm92KTtyZXR1cm4uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90fWdldEVmZmVjdGl2ZUZPVigpe3JldHVybiAyKm01dCpNYXRoLmF0YW4oTWF0aC50YW4oLjUqZjV0KnRoaXMuZm92KS90aGlzLnpvb20pfWdldEZpbG1XaWR0aCgpe3JldHVybiB0aGlzLmZpbG1HYXVnZSpNYXRoLm1pbih0aGlzLmFzcGVjdCwxKX1nZXRGaWxtSGVpZ2h0KCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlL01hdGgubWF4KHRoaXMuYXNwZWN0LDEpfXNldFZpZXdPZmZzZXQodCxlLG4saSxyLG8pe3RoaXMuYXNwZWN0PXQvZSxudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPWksdGhpcy52aWV3LndpZHRoPXIsdGhpcy52aWV3LmhlaWdodD1vLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe251bGwhPT10aGlzLnZpZXcmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2NvbnN0IHQ9dGhpcy5uZWFyO2xldCBlPXQqTWF0aC50YW4oLjUqZjV0KnRoaXMuZm92KS90aGlzLnpvb20sbj0yKmUsaT10aGlzLmFzcGVjdCpuLHI9LS41Kmk7Y29uc3Qgbz10aGlzLnZpZXc7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9by5mdWxsV2lkdGgsYT1vLmZ1bGxIZWlnaHQ7cis9by5vZmZzZXRYKmkvdCxlLT1vLm9mZnNldFkqbi9hLGkqPW8ud2lkdGgvdCxuKj1vLmhlaWdodC9hfWNvbnN0IGE9dGhpcy5maWxtT2Zmc2V0OzAhPT1hJiYocis9dCphL3RoaXMuZ2V0RmlsbVdpZHRoKCkpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUocixyK2ksZSxlLW4sdCx0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5mb3Y9dGhpcy5mb3YsZS5vYmplY3Quem9vbT10aGlzLnpvb20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLGUub2JqZWN0LmZvY3VzPXRoaXMuZm9jdXMsZS5vYmplY3QuYXNwZWN0PXRoaXMuYXNwZWN0LG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZS5vYmplY3QuZmlsbUdhdWdlPXRoaXMuZmlsbUdhdWdlLGUub2JqZWN0LmZpbG1PZmZzZXQ9dGhpcy5maWxtT2Zmc2V0LGV9fW02dC5wcm90b3R5cGUuaXNQZXJzcGVjdGl2ZUNhbWVyYT0hMDtjb25zdCBnNnQ9OTA7Y2xhc3MgXzZ0IGV4dGVuZHMgbDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtpZihzdXBlcigpLHRoaXMudHlwZT0iQ3ViZUNhbWVyYSIsITAhPT1uLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkN1YmVDYW1lcmE6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBhbiBpbnN0YW5jZSBvZiBXZWJHTEN1YmVSZW5kZXJUYXJnZXQgYXMgdGhpcmQgcGFyYW1ldGVyLiIpO3RoaXMucmVuZGVyVGFyZ2V0PW47Y29uc3QgaT1uZXcgbTZ0KGc2dCwxLHQsZSk7aS5sYXllcnM9dGhpcy5sYXllcnMsaS51cC5zZXQoMCwtMSwwKSxpLmxvb2tBdChuZXcgYTN0KDEsMCwwKSksdGhpcy5hZGQoaSk7Y29uc3Qgcj1uZXcgbTZ0KGc2dCwxLHQsZSk7ci5sYXllcnM9dGhpcy5sYXllcnMsci51cC5zZXQoMCwtMSwwKSxyLmxvb2tBdChuZXcgYTN0KC0xLDAsMCkpLHRoaXMuYWRkKHIpO2NvbnN0IG89bmV3IG02dChnNnQsMSx0LGUpO28ubGF5ZXJzPXRoaXMubGF5ZXJzLG8udXAuc2V0KDAsMCwxKSxvLmxvb2tBdChuZXcgYTN0KDAsMSwwKSksdGhpcy5hZGQobyk7Y29uc3QgYT1uZXcgbTZ0KGc2dCwxLHQsZSk7YS5sYXllcnM9dGhpcy5sYXllcnMsYS51cC5zZXQoMCwwLC0xKSxhLmxvb2tBdChuZXcgYTN0KDAsLTEsMCkpLHRoaXMuYWRkKGEpO2NvbnN0IHM9bmV3IG02dChnNnQsMSx0LGUpO3MubGF5ZXJzPXRoaXMubGF5ZXJzLHMudXAuc2V0KDAsLTEsMCkscy5sb29rQXQobmV3IGEzdCgwLDAsMSkpLHRoaXMuYWRkKHMpO2NvbnN0IGw9bmV3IG02dChnNnQsMSx0LGUpO2wubGF5ZXJzPXRoaXMubGF5ZXJzLGwudXAuc2V0KDAsLTEsMCksbC5sb29rQXQobmV3IGEzdCgwLDAsLTEpKSx0aGlzLmFkZChsKX11cGRhdGUodCxlKXtudWxsPT09dGhpcy5wYXJlbnQmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCBuPXRoaXMucmVuZGVyVGFyZ2V0LFtpLHIsbyxhLHMsbF09dGhpcy5jaGlsZHJlbixjPXQueHIuZW5hYmxlZCx1PXQuZ2V0UmVuZGVyVGFyZ2V0KCk7dC54ci5lbmFibGVkPSExO2NvbnN0IGg9bi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMCksdC5yZW5kZXIoZSxpKSx0LnNldFJlbmRlclRhcmdldChuLDEpLHQucmVuZGVyKGUsciksdC5zZXRSZW5kZXJUYXJnZXQobiwyKSx0LnJlbmRlcihlLG8pLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMyksdC5yZW5kZXIoZSxhKSx0LnNldFJlbmRlclRhcmdldChuLDQpLHQucmVuZGVyKGUscyksbi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1oLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNSksdC5yZW5kZXIoZSxsKSx0LnNldFJlbmRlclRhcmdldCh1KSx0LnhyLmVuYWJsZWQ9YyxuLnRleHR1cmUubmVlZHNQTVJFTVVwZGF0ZT0hMH19Y2xhc3MgeTZ0IGV4dGVuZHMgUTV0e2NvbnN0cnVjdG9yKHQsZSxuLGkscixvLGEscyxsLGMpe3N1cGVyKHQ9dm9pZCAwIT09dD90OltdLGU9dm9pZCAwIT09ZT9lOmUydCxuLGkscixvLGEscyxsLGMpLHRoaXMuZmxpcFk9ITF9Z2V0IGltYWdlcygpe3JldHVybiB0aGlzLmltYWdlfXNldCBpbWFnZXModCl7dGhpcy5pbWFnZT10fX15NnQucHJvdG90eXBlLmlzQ3ViZVRleHR1cmU9ITA7Y2xhc3MgdjZ0IGV4dGVuZHMgbjN0e2NvbnN0cnVjdG9yKHQsZSxuKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEN1YmVSZW5kZXJUYXJnZXQ6IGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBpcyBub3cgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KCBzaXplLCBvcHRpb25zICkiKSxlPW4pLHN1cGVyKHQsdCxlKSx0aGlzLnRleHR1cmU9bmV3IHk2dCh2b2lkIDAsKGU9ZXx8e30pLm1hcHBpbmcsZS53cmFwUyxlLndyYXBULGUubWFnRmlsdGVyLGUubWluRmlsdGVyLGUuZm9ybWF0LGUudHlwZSxlLmFuaXNvdHJvcHksZS5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMCx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPXZvaWQgMCE9PWUuZ2VuZXJhdGVNaXBtYXBzJiZlLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPXZvaWQgMCE9PWUubWluRmlsdGVyP2UubWluRmlsdGVyOnAydH1mcm9tRXF1aXJlY3Rhbmd1bGFyVGV4dHVyZSh0LGUpe3RoaXMudGV4dHVyZS50eXBlPWUudHlwZSx0aGlzLnRleHR1cmUuZm9ybWF0PXcydCx0aGlzLnRleHR1cmUuZW5jb2Rpbmc9ZS5lbmNvZGluZyx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWUuZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9ZS5taW5GaWx0ZXIsdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcj1lLm1hZ0ZpbHRlcjtjb25zdCBuPXt1bmlmb3Jtczp7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOiJcblxuXHRcdFx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuXG5cdFx0XHRcdHZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cblx0XHRcdFx0XHRyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdFx0dldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTtcblxuXHRcdFx0XHRcdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdFx0XHRcdFx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXG5cdFx0XHRcdH1cblx0XHRcdCIsZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIHRFcXVpcmVjdDtcblxuXHRcdFx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuXG5cdFx0XHRcdCNpbmNsdWRlIDxjb21tb24+XG5cblx0XHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdFx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXG5cdFx0XHRcdFx0dmVjMiBzYW1wbGVVViA9IGVxdWlyZWN0VXYoIGRpcmVjdGlvbiApO1xuXG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCB0RXF1aXJlY3QsIHNhbXBsZVVWICk7XG5cblx0XHRcdFx0fVxuXHRcdFx0In0saT1uZXcgYzZ0KDUsNSw1KSxyPW5ldyBwNnQoe25hbWU6IkN1YmVtYXBGcm9tRXF1aXJlY3QiLHVuaWZvcm1zOnU2dChuLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6bi52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6bi5mcmFnbWVudFNoYWRlcixzaWRlOjEsYmxlbmRpbmc6MH0pO3IudW5pZm9ybXMudEVxdWlyZWN0LnZhbHVlPWU7Y29uc3Qgbz1uZXcgczZ0KGksciksYT1lLm1pbkZpbHRlcjtlLm1pbkZpbHRlcj09PW0ydCYmKGUubWluRmlsdGVyPXAydCk7cmV0dXJuIG5ldyBfNnQoMSwxMCx0aGlzKS51cGRhdGUodCxvKSxlLm1pbkZpbHRlcj1hLG8uZ2VvbWV0cnkuZGlzcG9zZSgpLG8ubWF0ZXJpYWwuZGlzcG9zZSgpLHRoaXN9Y2xlYXIodCxlLG4saSl7Y29uc3Qgcj10LmdldFJlbmRlclRhcmdldCgpO2ZvcihsZXQgcj0wO3I8NjtyKyspdC5zZXRSZW5kZXJUYXJnZXQodGhpcyxyKSx0LmNsZWFyKGUsbixpKTt0LnNldFJlbmRlclRhcmdldChyKX19djZ0LnByb3RvdHlwZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD0hMDtjb25zdCBiNnQ9bmV3IGEzdCx4NnQ9bmV3IGEzdCx3NnQ9bmV3IEI1dDtjbGFzcyBTNnR7Y29uc3RydWN0b3IodD1uZXcgYTN0KDEsMCwwKSxlPTApe3RoaXMubm9ybWFsPXQsdGhpcy5jb25zdGFudD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9ZSx0aGlzfXNldENvbXBvbmVudHModCxlLG4saSl7cmV0dXJuIHRoaXMubm9ybWFsLnNldCh0LGUsbiksdGhpcy5jb25zdGFudD1pLHRoaXN9c2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PS1lLmRvdCh0aGlzLm5vcm1hbCksdGhpc31zZXRGcm9tQ29wbGFuYXJQb2ludHModCxlLG4pe2NvbnN0IGk9YjZ0LnN1YlZlY3RvcnMobixlKS5jcm9zcyh4NnQuc3ViVmVjdG9ycyh0LGUpKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpcy5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludChpLHQpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0Lm5vcm1hbCksdGhpcy5jb25zdGFudD10LmNvbnN0YW50LHRoaXN9bm9ybWFsaXplKCl7Y29uc3QgdD0xL3RoaXMubm9ybWFsLmxlbmd0aCgpO3JldHVybiB0aGlzLm5vcm1hbC5tdWx0aXBseVNjYWxhcih0KSx0aGlzLmNvbnN0YW50Kj10LHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMuY29uc3RhbnQqPS0xLHRoaXMubm9ybWFsLm5lZ2F0ZSgpLHRoaXN9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiB0aGlzLm5vcm1hbC5kb3QodCkrdGhpcy5jb25zdGFudH1kaXN0YW5jZVRvU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmNlbnRlciktdC5yYWRpdXN9cHJvamVjdFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0aGlzLm5vcm1hbCkubXVsdGlwbHlTY2FsYXIoLXRoaXMuZGlzdGFuY2VUb1BvaW50KHQpKS5hZGQodCl9aW50ZXJzZWN0TGluZSh0LGUpe2NvbnN0IG49dC5kZWx0YShiNnQpLGk9dGhpcy5ub3JtYWwuZG90KG4pO2lmKDA9PT1pKXJldHVybiAwPT09dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5zdGFydCk/ZS5jb3B5KHQuc3RhcnQpOm51bGw7Y29uc3Qgcj0tKHQuc3RhcnQuZG90KHRoaXMubm9ybWFsKSt0aGlzLmNvbnN0YW50KS9pO3JldHVybiByPDB8fHI+MT9udWxsOmUuY29weShuKS5tdWx0aXBseVNjYWxhcihyKS5hZGQodC5zdGFydCl9aW50ZXJzZWN0c0xpbmUodCl7Y29uc3QgZT10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KSxuPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuZW5kKTtyZXR1cm4gZTwwJiZuPjB8fG48MCYmZT4wfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHQuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfWNvcGxhbmFyUG9pbnQodCl7cmV0dXJuIHQuY29weSh0aGlzLm5vcm1hbCkubXVsdGlwbHlTY2FsYXIoLXRoaXMuY29uc3RhbnQpfWFwcGx5TWF0cml4NCh0LGUpe2NvbnN0IG49ZXx8dzZ0LmdldE5vcm1hbE1hdHJpeCh0KSxpPXRoaXMuY29wbGFuYXJQb2ludChiNnQpLmFwcGx5TWF0cml4NCh0KSxyPXRoaXMubm9ybWFsLmFwcGx5TWF0cml4MyhuKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpcy5jb25zdGFudD0taS5kb3QociksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY29uc3RhbnQtPXQuZG90KHRoaXMubm9ybWFsKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5ub3JtYWwuZXF1YWxzKHRoaXMubm9ybWFsKSYmdC5jb25zdGFudD09PXRoaXMuY29uc3RhbnR9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fVM2dC5wcm90b3R5cGUuaXNQbGFuZT0hMDtjb25zdCBNNnQ9bmV3IEEzdCxFNnQ9bmV3IGEzdDtjbGFzcyBUNnR7Y29uc3RydWN0b3IodD1uZXcgUzZ0LGU9bmV3IFM2dCxuPW5ldyBTNnQsaT1uZXcgUzZ0LHI9bmV3IFM2dCxvPW5ldyBTNnQpe3RoaXMucGxhbmVzPVt0LGUsbixpLHIsb119c2V0KHQsZSxuLGkscixvKXtjb25zdCBhPXRoaXMucGxhbmVzO3JldHVybiBhWzBdLmNvcHkodCksYVsxXS5jb3B5KGUpLGFbMl0uY29weShuKSxhWzNdLmNvcHkoaSksYVs0XS5jb3B5KHIpLGFbNV0uY29weShvKSx0aGlzfWNvcHkodCl7Y29uc3QgZT10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKWVbbl0uY29weSh0LnBsYW5lc1tuXSk7cmV0dXJuIHRoaXN9c2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl7Y29uc3QgZT10aGlzLnBsYW5lcyxuPXQuZWxlbWVudHMsaT1uWzBdLHI9blsxXSxvPW5bMl0sYT1uWzNdLHM9bls0XSxsPW5bNV0sYz1uWzZdLHU9bls3XSxoPW5bOF0sZD1uWzldLHA9blsxMF0sZj1uWzExXSxtPW5bMTJdLGc9blsxM10sXz1uWzE0XSx5PW5bMTVdO3JldHVybiBlWzBdLnNldENvbXBvbmVudHMoYS1pLHUtcyxmLWgseS1tKS5ub3JtYWxpemUoKSxlWzFdLnNldENvbXBvbmVudHMoYStpLHUrcyxmK2gseSttKS5ub3JtYWxpemUoKSxlWzJdLnNldENvbXBvbmVudHMoYStyLHUrbCxmK2QseStnKS5ub3JtYWxpemUoKSxlWzNdLnNldENvbXBvbmVudHMoYS1yLHUtbCxmLWQseS1nKS5ub3JtYWxpemUoKSxlWzRdLnNldENvbXBvbmVudHMoYS1vLHUtYyxmLXAseS1fKS5ub3JtYWxpemUoKSxlWzVdLnNldENvbXBvbmVudHMoYStvLHUrYyxmK3AseStfKS5ub3JtYWxpemUoKSx0aGlzfWludGVyc2VjdHNPYmplY3QodCl7Y29uc3QgZT10Lmdlb21ldHJ5O3JldHVybiBudWxsPT09ZS5ib3VuZGluZ1NwaGVyZSYmZS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxNNnQuY29weShlLmJvdW5kaW5nU3BoZXJlKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKE02dCl9aW50ZXJzZWN0c1Nwcml0ZSh0KXtyZXR1cm4gTTZ0LmNlbnRlci5zZXQoMCwwLDApLE02dC5yYWRpdXM9LjcwNzEwNjc4MTE4NjU0NzYsTTZ0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoTTZ0KX1pbnRlcnNlY3RzU3BoZXJlKHQpe2NvbnN0IGU9dGhpcy5wbGFuZXMsbj10LmNlbnRlcixpPS10LnJhZGl1cztmb3IobGV0IHQ9MDt0PDY7dCsrKXtpZihlW3RdLmRpc3RhbmNlVG9Qb2ludChuKTxpKXJldHVybiExfXJldHVybiEwfWludGVyc2VjdHNCb3godCl7Y29uc3QgZT10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKXtjb25zdCBpPWVbbl07aWYoRTZ0Lng9aS5ub3JtYWwueD4wP3QubWF4Lng6dC5taW4ueCxFNnQueT1pLm5vcm1hbC55PjA/dC5tYXgueTp0Lm1pbi55LEU2dC56PWkubm9ybWFsLno+MD90Lm1heC56OnQubWluLnosaS5kaXN0YW5jZVRvUG9pbnQoRTZ0KTwwKXJldHVybiExfXJldHVybiEwfWNvbnRhaW5zUG9pbnQodCl7Y29uc3QgZT10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKWlmKGVbbl0uZGlzdGFuY2VUb1BvaW50KHQpPDApcmV0dXJuITE7cmV0dXJuITB9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWZ1bmN0aW9uIEM2dCgpe2xldCB0PW51bGwsZT0hMSxuPW51bGwsaT1udWxsO2Z1bmN0aW9uIHIoZSxvKXtuKGUsbyksaT10LnJlcXVlc3RBbmltYXRpb25GcmFtZShyKX1yZXR1cm57c3RhcnQ6ZnVuY3Rpb24oKXshMCE9PWUmJm51bGwhPT1uJiYoaT10LnJlcXVlc3RBbmltYXRpb25GcmFtZShyKSxlPSEwKX0sc3RvcDpmdW5jdGlvbigpe3QuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaSksZT0hMX0sc2V0QW5pbWF0aW9uTG9vcDpmdW5jdGlvbih0KXtuPXR9LHNldENvbnRleHQ6ZnVuY3Rpb24oZSl7dD1lfX19ZnVuY3Rpb24gQTZ0KHQsZSl7Y29uc3Qgbj1lLmlzV2ViR0wyLGk9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiByKHQpe3JldHVybiB0LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJih0PXQuZGF0YSksaS5nZXQodCl9LHJlbW92ZTpmdW5jdGlvbiBvKGUpe2UuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGU9ZS5kYXRhKTtjb25zdCBuPWkuZ2V0KGUpO24mJih0LmRlbGV0ZUJ1ZmZlcihuLmJ1ZmZlciksaS5kZWxldGUoZSkpfSx1cGRhdGU6ZnVuY3Rpb24gYShlLHIpe2lmKGUuaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc3QgdD1pLmdldChlKTtyZXR1cm4gdm9pZCgoIXR8fHQudmVyc2lvbjxlLnZlcnNpb24pJiZpLnNldChlLHtidWZmZXI6ZS5idWZmZXIsdHlwZTplLnR5cGUsYnl0ZXNQZXJFbGVtZW50OmUuZWxlbWVudFNpemUsdmVyc2lvbjplLnZlcnNpb259KSl9ZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoZT1lLmRhdGEpO2NvbnN0IG89aS5nZXQoZSk7dm9pZCAwPT09bz9pLnNldChlLChmdW5jdGlvbiBhKGUsaSl7Y29uc3Qgcj1lLmFycmF5LG89ZS51c2FnZSxhPXQuY3JlYXRlQnVmZmVyKCk7dC5iaW5kQnVmZmVyKGksYSksdC5idWZmZXJEYXRhKGkscixvKSxlLm9uVXBsb2FkQ2FsbGJhY2soKTtsZXQgcz01MTI2O3JldHVybiByIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5P3M9NTEyNjpyIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVbnN1cHBvcnRlZCBkYXRhIGJ1ZmZlciBmb3JtYXQ6IEZsb2F0NjRBcnJheS4iKTpyIGluc3RhbmNlb2YgVWludDE2QXJyYXk/ZS5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU/bj9zPTUxMzE6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVzYWdlIG9mIEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgV2ViR0wyLiIpOnM9NTEyMzpyIGluc3RhbmNlb2YgSW50MTZBcnJheT9zPTUxMjI6ciBpbnN0YW5jZW9mIFVpbnQzMkFycmF5P3M9NTEyNTpyIGluc3RhbmNlb2YgSW50MzJBcnJheT9zPTUxMjQ6ciBpbnN0YW5jZW9mIEludDhBcnJheT9zPTUxMjA6KHIgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxyIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpJiYocz01MTIxKSx7YnVmZmVyOmEsdHlwZTpzLGJ5dGVzUGVyRWxlbWVudDpyLkJZVEVTX1BFUl9FTEVNRU5ULHZlcnNpb246ZS52ZXJzaW9ufX0pKGUscikpOm8udmVyc2lvbjxlLnZlcnNpb24mJighKGZ1bmN0aW9uIHMoZSxpLHIpe2NvbnN0IG89aS5hcnJheSxhPWkudXBkYXRlUmFuZ2U7dC5iaW5kQnVmZmVyKHIsZSksLTE9PT1hLmNvdW50P3QuYnVmZmVyU3ViRGF0YShyLDAsbyk6KG4/dC5idWZmZXJTdWJEYXRhKHIsYS5vZmZzZXQqby5CWVRFU19QRVJfRUxFTUVOVCxvLGEub2Zmc2V0LGEuY291bnQpOnQuYnVmZmVyU3ViRGF0YShyLGEub2Zmc2V0Km8uQllURVNfUEVSX0VMRU1FTlQsby5zdWJhcnJheShhLm9mZnNldCxhLm9mZnNldCthLmNvdW50KSksYS5jb3VudD0tMSl9KShvLmJ1ZmZlcixlLHIpLG8udmVyc2lvbj1lLnZlcnNpb24pfX19Y2xhc3MgazZ0IGV4dGVuZHMgajR0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLGk9MSl7c3VwZXIoKSx0aGlzLnR5cGU9IlBsYW5lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17d2lkdGg6dCxoZWlnaHQ6ZSx3aWR0aFNlZ21lbnRzOm4saGVpZ2h0U2VnbWVudHM6aX07Y29uc3Qgcj10LzIsbz1lLzIsYT1NYXRoLmZsb29yKG4pLHM9TWF0aC5mbG9vcihpKSxsPWErMSxjPXMrMSx1PXQvYSxoPWUvcyxkPVtdLHA9W10sZj1bXSxtPVtdO2ZvcihsZXQgdD0wO3Q8Yzt0Kyspe2NvbnN0IGU9dCpoLW87Zm9yKGxldCBuPTA7bjxsO24rKyl7cC5wdXNoKG4qdS1yLC1lLDApLGYucHVzaCgwLDAsMSksbS5wdXNoKG4vYSksbS5wdXNoKDEtdC9zKX19Zm9yKGxldCB0PTA7dDxzO3QrKylmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBuPWUrbCoodCsxKSxpPWUrMStsKih0KzEpLHI9ZSsxK2wqdDtkLnB1c2goZStsKnQsbixyKSxkLnB1c2gobixpLHIpfXRoaXMuc2V0SW5kZXgoZCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KHAsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBSNHQoZiwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUjR0KG0sMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGs2dCh0LndpZHRoLHQuaGVpZ2h0LHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzKX19Y29uc3QgUDZ0PXthbHBoYW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB2VXYgKS5nO1xuI2VuZGlmIixhbHBoYW1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIixhbHBoYXRlc3RfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFURVNUXG5cdGlmICggZGlmZnVzZUNvbG9yLmEgPCBhbHBoYVRlc3QgKSBkaXNjYXJkO1xuI2VuZGlmIixhbHBoYXRlc3RfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQVRFU1Rcblx0dW5pZm9ybSBmbG9hdCBhbHBoYVRlc3Q7XG4jZW5kaWYiLGFvbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FPTUFQXG5cdGZsb2F0IGFtYmllbnRPY2NsdXNpb24gPSAoIHRleHR1cmUyRCggYW9NYXAsIHZVdjIgKS5yIC0gMS4wICkgKiBhb01hcEludGVuc2l0eSArIDEuMDtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGFtYmllbnRPY2NsdXNpb247XG5cdCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKVxuXHRcdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICo9IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggZG90TlYsIGFtYmllbnRPY2NsdXNpb24sIG1hdGVyaWFsLnJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsYW9tYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhb01hcDtcblx0dW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTtcbiNlbmRpZiIsYmVnaW5fdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkID0gdmVjMyggcG9zaXRpb24gKTsiLGJlZ2lubm9ybWFsX3ZlcnRleDoidmVjMyBvYmplY3ROb3JtYWwgPSB2ZWMzKCBub3JtYWwgKTtcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIG9iamVjdFRhbmdlbnQgPSB2ZWMzKCB0YW5nZW50Lnh5eiApO1xuI2VuZGlmIixic2RmczoidmVjMyBCUkRGX0xhbWJlcnQoIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjtcbn1cbnZlYzMgRl9TY2hsaWNrKCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiBmbG9hdCBmOTAsIGNvbnN0IGluIGZsb2F0IGRvdFZIICkge1xuXHRmbG9hdCBmcmVzbmVsID0gZXhwMiggKCAtIDUuNTU0NzMgKiBkb3RWSCAtIDYuOTgzMTYgKSAqIGRvdFZIICk7XG5cdHJldHVybiBmMCAqICggMS4wIC0gZnJlc25lbCApICsgKCBmOTAgKiBmcmVzbmVsICk7XG59XG5mbG9hdCBWX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZ3YgPSBkb3ROTCAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TlYgKSApO1xuXHRmbG9hdCBnbCA9IGRvdE5WICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdHJldHVybiAwLjUgLyBtYXgoIGd2ICsgZ2wsIEVQU0lMT04gKTtcbn1cbmZsb2F0IERfR0dYKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZGVub20gPSBwb3cyKCBkb3ROSCApICogKCBhMiAtIDEuMCApICsgMS4wO1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGEyIC8gcG93MiggZGVub20gKTtcbn1cbnZlYzMgQlJERl9HR1goIGNvbnN0IGluIHZlYzMgbGlnaHREaXIsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIGZsb2F0IGY5MCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBhbHBoYSA9IHBvdzIoIHJvdWdobmVzcyApO1xuXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGxpZ2h0RGlyICsgdmlld0RpciApO1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgbGlnaHREaXIgKSApO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90VkggPSBzYXR1cmF0ZSggZG90KCB2aWV3RGlyLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBmMCwgZjkwLCBkb3RWSCApO1xuXHRmbG9hdCBWID0gVl9HR1hfU21pdGhDb3JyZWxhdGVkKCBhbHBoYSwgZG90TkwsIGRvdE5WICk7XG5cdGZsb2F0IEQgPSBEX0dHWCggYWxwaGEsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBWICogRCApO1xufVxudmVjMiBMVENfVXYoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IGZsb2F0IExVVF9TSVpFID0gNjQuMDtcblx0Y29uc3QgZmxvYXQgTFVUX1NDQUxFID0gKCBMVVRfU0laRSAtIDEuMCApIC8gTFVUX1NJWkU7XG5cdGNvbnN0IGZsb2F0IExVVF9CSUFTID0gMC41IC8gTFVUX1NJWkU7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggTiwgViApICk7XG5cdHZlYzIgdXYgPSB2ZWMyKCByb3VnaG5lc3MsIHNxcnQoIDEuMCAtIGRvdE5WICkgKTtcblx0dXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTO1xuXHRyZXR1cm4gdXY7XG59XG5mbG9hdCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgZiApIHtcblx0ZmxvYXQgbCA9IGxlbmd0aCggZiApO1xuXHRyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7XG59XG52ZWMzIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyB2MSwgY29uc3QgaW4gdmVjMyB2MiApIHtcblx0ZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7XG5cdGZsb2F0IHkgPSBhYnMoIHggKTtcblx0ZmxvYXQgYSA9IDAuODU0Mzk4NSArICggMC40OTY1MTU1ICsgMC4wMTQ1MjA2ICogeSApICogeTtcblx0ZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTtcblx0ZmxvYXQgdiA9IGEgLyBiO1xuXHRmbG9hdCB0aGV0YV9zaW50aGV0YSA9ICggeCA+IDAuMCApID8gdiA6IDAuNSAqIGludmVyc2VzcXJ0KCBtYXgoIDEuMCAtIHggKiB4LCAxZS03ICkgKSAtIHY7XG5cdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcbn1cbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xuXHR2ZWMzIHYxID0gcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApO1xuXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIDwgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xuXHR2ZWMzIFQxLCBUMjtcblx0VDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcblx0VDIgPSAtIGNyb3NzKCBOLCBUMSApO1xuXHRtYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xuXHR2ZWMzIGNvb3Jkc1sgNCBdO1xuXHRjb29yZHNbIDAgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xuXHRjb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xuXHRjb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xuXHRjb29yZHNbIDMgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xuXHRjb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcblx0Y29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XG5cdGNvb3Jkc1sgMiBdID0gbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xuXHRjb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcblx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcblx0ZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7XG5cdHJldHVybiB2ZWMzKCByZXN1bHQgKTtcbn1cbmZsb2F0IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKSB7XG5cdHJldHVybiAwLjI1O1xufVxuZmxvYXQgRF9CbGlublBob25nKCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqICggc2hpbmluZXNzICogMC41ICsgMS4wICkgKiBwb3coIGRvdE5ILCBzaGluaW5lc3MgKTtcbn1cbnZlYzMgQlJERl9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcyApIHtcblx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBsaWdodERpciArIHZpZXdEaXIgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGhhbGZEaXIgKSApO1xuXHRmbG9hdCBkb3RWSCA9IHNhdHVyYXRlKCBkb3QoIHZpZXdEaXIsIGhhbGZEaXIgKSApO1xuXHR2ZWMzIEYgPSBGX1NjaGxpY2soIHNwZWN1bGFyQ29sb3IsIDEuMCwgZG90VkggKTtcblx0ZmxvYXQgRyA9IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKTtcblx0ZmxvYXQgRCA9IERfQmxpbm5QaG9uZyggc2hpbmluZXNzLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbiNpZiBkZWZpbmVkKCBVU0VfU0hFRU4gKVxuZmxvYXQgRF9DaGFybGllKCBmbG9hdCByb3VnaG5lc3MsIGZsb2F0IGRvdE5IICkge1xuXHRmbG9hdCBhbHBoYSA9IHBvdzIoIHJvdWdobmVzcyApO1xuXHRmbG9hdCBpbnZBbHBoYSA9IDEuMCAvIGFscGhhO1xuXHRmbG9hdCBjb3MyaCA9IGRvdE5IICogZG90Tkg7XG5cdGZsb2F0IHNpbjJoID0gbWF4KCAxLjAgLSBjb3MyaCwgMC4wMDc4MTI1ICk7XG5cdHJldHVybiAoIDIuMCArIGludkFscGhhICkgKiBwb3coIHNpbjJoLCBpbnZBbHBoYSAqIDAuNSApIC8gKCAyLjAgKiBQSSApO1xufVxuZmxvYXQgVl9OZXViZWx0KCBmbG9hdCBkb3ROViwgZmxvYXQgZG90TkwgKSB7XG5cdHJldHVybiBzYXR1cmF0ZSggMS4wIC8gKCA0LjAgKiAoIGRvdE5MICsgZG90TlYgLSBkb3ROTCAqIGRvdE5WICkgKSApO1xufVxudmVjMyBCUkRGX1NoZWVuKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCB2ZWMzIHNoZWVuQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoZWVuUm91Z2huZXNzICkge1xuXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGxpZ2h0RGlyICsgdmlld0RpciApO1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgbGlnaHREaXIgKSApO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgRCA9IERfQ2hhcmxpZSggc2hlZW5Sb3VnaG5lc3MsIGRvdE5IICk7XG5cdGZsb2F0IFYgPSBWX05ldWJlbHQoIGRvdE5WLCBkb3ROTCApO1xuXHRyZXR1cm4gc2hlZW5Db2xvciAqICggRCAqIFYgKTtcbn1cbiNlbmRpZiIsYnVtcG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0JVTVBNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYnVtcE1hcDtcblx0dW5pZm9ybSBmbG9hdCBidW1wU2NhbGU7XG5cdHZlYzIgZEhkeHlfZndkKCkge1xuXHRcdHZlYzIgZFNUZHggPSBkRmR4KCB2VXYgKTtcblx0XHR2ZWMyIGRTVGR5ID0gZEZkeSggdlV2ICk7XG5cdFx0ZmxvYXQgSGxsID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKS54O1xuXHRcdGZsb2F0IGRCeCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHggKS54IC0gSGxsO1xuXHRcdGZsb2F0IGRCeSA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHkgKS54IC0gSGxsO1xuXHRcdHJldHVybiB2ZWMyKCBkQngsIGRCeSApO1xuXHR9XG5cdHZlYzMgcGVydHVyYk5vcm1hbEFyYiggdmVjMyBzdXJmX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgZEhkeHksIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyB2U2lnbWFYID0gdmVjMyggZEZkeCggc3VyZl9wb3MueCApLCBkRmR4KCBzdXJmX3Bvcy55ICksIGRGZHgoIHN1cmZfcG9zLnogKSApO1xuXHRcdHZlYzMgdlNpZ21hWSA9IHZlYzMoIGRGZHkoIHN1cmZfcG9zLnggKSwgZEZkeSggc3VyZl9wb3MueSApLCBkRmR5KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZOID0gc3VyZl9ub3JtO1xuXHRcdHZlYzMgUjEgPSBjcm9zcyggdlNpZ21hWSwgdk4gKTtcblx0XHR2ZWMzIFIyID0gY3Jvc3MoIHZOLCB2U2lnbWFYICk7XG5cdFx0ZmxvYXQgZkRldCA9IGRvdCggdlNpZ21hWCwgUjEgKSAqIGZhY2VEaXJlY3Rpb247XG5cdFx0dmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xuXHR9XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZlYzQgcGxhbmU7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkge1xuXHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRpZiAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgZGlzY2FyZDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjaWYgVU5JT05fQ0xJUFBJTkdfUExBTkVTIDwgTlVNX0NMSVBQSU5HX1BMQU5FU1xuXHRcdGJvb2wgY2xpcHBlZCA9IHRydWU7XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpIDwgTlVNX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRcdGNsaXBwZWQgPSAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgJiYgY2xpcHBlZDtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0XHRpZiAoIGNsaXBwZWQgKSBkaXNjYXJkO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcblx0dW5pZm9ybSB2ZWM0IGNsaXBwaW5nUGxhbmVzWyBOVU1fQ0xJUFBJTkdfUExBTkVTIF07XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZhcnlpbmcgdmVjMyB2Q2xpcFBvc2l0aW9uO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dkNsaXBQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWYiLGNvbG9yX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0ZGlmZnVzZUNvbG9yICo9IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdGRpZmZ1c2VDb2xvci5yZ2IgKj0gdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIHx8IGRlZmluZWQoIFVTRV9JTlNUQU5DSU5HX0NPTE9SIClcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dkNvbG9yID0gdmVjNCggMS4wICk7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZDb2xvciA9IHZlYzMoIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NPTE9SXG5cdHZDb2xvciAqPSBjb2xvcjtcbiNlbmRpZlxuI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SXG5cdHZDb2xvci54eXogKj0gaW5zdGFuY2VDb2xvci54eXo7XG4jZW5kaWYiLGNvbW1vbjoiI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU4OTc5M1xuI2RlZmluZSBQSTIgNi4yODMxODUzMDcxNzk1ODZcbiNkZWZpbmUgUElfSEFMRiAxLjU3MDc5NjMyNjc5NDg5NjZcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4Mzc5MDdcbiNkZWZpbmUgUkVDSVBST0NBTF9QSTIgMC4xNTkxNTQ5NDMwOTE4OTUzNVxuI2RlZmluZSBFUFNJTE9OIDFlLTZcbiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoIGEgKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG4jZGVmaW5lIHdoaXRlQ29tcGxlbWVudCggYSApICggMS4wIC0gc2F0dXJhdGUoIGEgKSApXG5mbG9hdCBwb3cyKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4OyB9XG5mbG9hdCBwb3czKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4Kng7IH1cbmZsb2F0IHBvdzQoIGNvbnN0IGluIGZsb2F0IHggKSB7IGZsb2F0IHgyID0geCp4OyByZXR1cm4geDIqeDI7IH1cbmZsb2F0IG1heDMoIGNvbnN0IGluIHZlYzMgdiApIHsgcmV0dXJuIG1heCggbWF4KCB2LngsIHYueSApLCB2LnogKTsgfVxuZmxvYXQgYXZlcmFnZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsgcmV0dXJuIGRvdCggY29sb3IsIHZlYzMoIDAuMzMzMyApICk7IH1cbmhpZ2hwIGZsb2F0IHJhbmQoIGNvbnN0IGluIHZlYzIgdXYgKSB7XG5cdGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAxMi45ODk4LCBiID0gNzguMjMzLCBjID0gNDM3NTguNTQ1Mztcblx0aGlnaHAgZmxvYXQgZHQgPSBkb3QoIHV2Lnh5LCB2ZWMyKCBhLGIgKSApLCBzbiA9IG1vZCggZHQsIFBJICk7XG5cdHJldHVybiBmcmFjdCggc2luKCBzbiApICogYyApO1xufVxuI2lmZGVmIEhJR0hfUFJFQ0lTSU9OXG5cdGZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHsgcmV0dXJuIGxlbmd0aCggdiApOyB9XG4jZWxzZVxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7XG5cdFx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4MyggYWJzKCB2ICkgKTtcblx0XHRyZXR1cm4gbGVuZ3RoKCB2IC8gbWF4Q29tcG9uZW50ICkgKiBtYXhDb21wb25lbnQ7XG5cdH1cbiNlbmRpZlxuc3RydWN0IEluY2lkZW50TGlnaHQge1xuXHR2ZWMzIGNvbG9yO1xuXHR2ZWMzIGRpcmVjdGlvbjtcblx0Ym9vbCB2aXNpYmxlO1xufTtcbnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7XG5cdHZlYzMgZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBkaXJlY3RTcGVjdWxhcjtcblx0dmVjMyBpbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgaW5kaXJlY3RTcGVjdWxhcjtcbn07XG5zdHJ1Y3QgR2VvbWV0cmljQ29udGV4dCB7XG5cdHZlYzMgcG9zaXRpb247XG5cdHZlYzMgbm9ybWFsO1xuXHR2ZWMzIHZpZXdEaXI7XG4jaWZkZWYgVVNFX0NMRUFSQ09BVFxuXHR2ZWMzIGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxufTtcbnZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApO1xufVxudmVjMyBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdHJldHVybiBub3JtYWxpemUoICggdmVjNCggZGlyLCAwLjAgKSAqIG1hdHJpeCApLnh5eiApO1xufVxubWF0MyB0cmFuc3Bvc2VNYXQzKCBjb25zdCBpbiBtYXQzIG0gKSB7XG5cdG1hdDMgdG1wO1xuXHR0bXBbIDAgXSA9IHZlYzMoIG1bIDAgXS54LCBtWyAxIF0ueCwgbVsgMiBdLnggKTtcblx0dG1wWyAxIF0gPSB2ZWMzKCBtWyAwIF0ueSwgbVsgMSBdLnksIG1bIDIgXS55ICk7XG5cdHRtcFsgMiBdID0gdmVjMyggbVsgMCBdLnosIG1bIDEgXS56LCBtWyAyIF0ueiApO1xuXHRyZXR1cm4gdG1wO1xufVxuZmxvYXQgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHtcblx0dmVjMyB3ZWlnaHRzID0gdmVjMyggMC4yMTI2LCAwLjcxNTIsIDAuMDcyMiApO1xuXHRyZXR1cm4gZG90KCB3ZWlnaHRzLCBjb2xvci5yZ2IgKTtcbn1cbmJvb2wgaXNQZXJzcGVjdGl2ZU1hdHJpeCggbWF0NCBtICkge1xuXHRyZXR1cm4gbVsgMiBdWyAzIF0gPT0gLSAxLjA7XG59XG52ZWMyIGVxdWlyZWN0VXYoIGluIHZlYzMgZGlyICkge1xuXHRmbG9hdCB1ID0gYXRhbiggZGlyLnosIGRpci54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTtcblx0ZmxvYXQgdiA9IGFzaW4oIGNsYW1wKCBkaXIueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRyZXR1cm4gdmVjMiggdSwgdiApO1xufSIsY3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50OiIjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHQjZGVmaW5lIGN1YmVVVl9tYXhNaXBMZXZlbCA4LjBcblx0I2RlZmluZSBjdWJlVVZfbWluTWlwTGV2ZWwgNC4wXG5cdCNkZWZpbmUgY3ViZVVWX21heFRpbGVTaXplIDI1Ni4wXG5cdCNkZWZpbmUgY3ViZVVWX21pblRpbGVTaXplIDE2LjBcblx0ZmxvYXQgZ2V0RmFjZSggdmVjMyBkaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyBhYnNEaXJlY3Rpb24gPSBhYnMoIGRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGZhY2UgPSAtIDEuMDtcblx0XHRpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnogKSB7XG5cdFx0XHRpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnggPiAwLjAgPyAwLjAgOiAzLjA7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBhYnNEaXJlY3Rpb24ueiA+IGFic0RpcmVjdGlvbi55IClcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi56ID4gMC4wID8gMi4wIDogNS4wO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7XG5cdFx0fVxuXHRcdHJldHVybiBmYWNlO1xuXHR9XG5cdHZlYzIgZ2V0VVYoIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBmYWNlICkge1xuXHRcdHZlYzIgdXY7XG5cdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIC0gZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dXYgPSB2ZWMyKCBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTtcblx0XHR9XG5cdFx0cmV0dXJuIDAuNSAqICggdXYgKyAxLjAgKTtcblx0fVxuXHR2ZWMzIGJpbGluZWFyQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgbWlwSW50ICkge1xuXHRcdGZsb2F0IGZhY2UgPSBnZXRGYWNlKCBkaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBmaWx0ZXJJbnQgPSBtYXgoIGN1YmVVVl9taW5NaXBMZXZlbCAtIG1pcEludCwgMC4wICk7XG5cdFx0bWlwSW50ID0gbWF4KCBtaXBJbnQsIGN1YmVVVl9taW5NaXBMZXZlbCApO1xuXHRcdGZsb2F0IGZhY2VTaXplID0gZXhwMiggbWlwSW50ICk7XG5cdFx0ZmxvYXQgdGV4ZWxTaXplID0gMS4wIC8gKCAzLjAgKiBjdWJlVVZfbWF4VGlsZVNpemUgKTtcblx0XHR2ZWMyIHV2ID0gZ2V0VVYoIGRpcmVjdGlvbiwgZmFjZSApICogKCBmYWNlU2l6ZSAtIDEuMCApICsgMC41O1xuXHRcdGlmICggZmFjZSA+IDIuMCApIHtcblx0XHRcdHV2LnkgKz0gZmFjZVNpemU7XG5cdFx0XHRmYWNlIC09IDMuMDtcblx0XHR9XG5cdFx0dXYueCArPSBmYWNlICogZmFjZVNpemU7XG5cdFx0aWYgKCBtaXBJbnQgPCBjdWJlVVZfbWF4TWlwTGV2ZWwgKSB7XG5cdFx0XHR1di55ICs9IDIuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZTtcblx0XHR9XG5cdFx0dXYueSArPSBmaWx0ZXJJbnQgKiAyLjAgKiBjdWJlVVZfbWluVGlsZVNpemU7XG5cdFx0dXYueCArPSAzLjAgKiBtYXgoIDAuMCwgY3ViZVVWX21heFRpbGVTaXplIC0gMi4wICogZmFjZVNpemUgKTtcblx0XHR1diAqPSB0ZXhlbFNpemU7XG5cdFx0cmV0dXJuIHRleHR1cmUyRCggZW52TWFwLCB1diApLnJnYjtcblx0fVxuXHQjZGVmaW5lIHIwIDEuMFxuXHQjZGVmaW5lIHYwIDAuMzM5XG5cdCNkZWZpbmUgbTAgLSAyLjBcblx0I2RlZmluZSByMSAwLjhcblx0I2RlZmluZSB2MSAwLjI3NlxuXHQjZGVmaW5lIG0xIC0gMS4wXG5cdCNkZWZpbmUgcjQgMC40XG5cdCNkZWZpbmUgdjQgMC4wNDZcblx0I2RlZmluZSBtNCAyLjBcblx0I2RlZmluZSByNSAwLjMwNVxuXHQjZGVmaW5lIHY1IDAuMDE2XG5cdCNkZWZpbmUgbTUgMy4wXG5cdCNkZWZpbmUgcjYgMC4yMVxuXHQjZGVmaW5lIHY2IDAuMDAzOFxuXHQjZGVmaW5lIG02IDQuMFxuXHRmbG9hdCByb3VnaG5lc3NUb01pcCggZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdGZsb2F0IG1pcCA9IDAuMDtcblx0XHRpZiAoIHJvdWdobmVzcyA+PSByMSApIHtcblx0XHRcdG1pcCA9ICggcjAgLSByb3VnaG5lc3MgKSAqICggbTEgLSBtMCApIC8gKCByMCAtIHIxICkgKyBtMDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjQgKSB7XG5cdFx0XHRtaXAgPSAoIHIxIC0gcm91Z2huZXNzICkgKiAoIG00IC0gbTEgKSAvICggcjEgLSByNCApICsgbTE7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI1ICkge1xuXHRcdFx0bWlwID0gKCByNCAtIHJvdWdobmVzcyApICogKCBtNSAtIG00ICkgLyAoIHI0IC0gcjUgKSArIG00O1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNiApIHtcblx0XHRcdG1pcCA9ICggcjUgLSByb3VnaG5lc3MgKSAqICggbTYgLSBtNSApIC8gKCByNSAtIHI2ICkgKyBtNTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWlwID0gLSAyLjAgKiBsb2cyKCAxLjE2ICogcm91Z2huZXNzICk7XHRcdH1cblx0XHRyZXR1cm4gbWlwO1xuXHR9XG5cdHZlYzQgdGV4dHVyZUN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBzYW1wbGVEaXIsIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSBjbGFtcCggcm91Z2huZXNzVG9NaXAoIHJvdWdobmVzcyApLCBtMCwgY3ViZVVWX21heE1pcExldmVsICk7XG5cdFx0ZmxvYXQgbWlwRiA9IGZyYWN0KCBtaXAgKTtcblx0XHRmbG9hdCBtaXBJbnQgPSBmbG9vciggbWlwICk7XG5cdFx0dmVjMyBjb2xvcjAgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCApO1xuXHRcdGlmICggbWlwRiA9PSAwLjAgKSB7XG5cdFx0XHRyZXR1cm4gdmVjNCggY29sb3IwLCAxLjAgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmVjMyBjb2xvcjEgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCArIDEuMCApO1xuXHRcdFx0cmV0dXJuIHZlYzQoIG1peCggY29sb3IwLCBjb2xvcjEsIG1pcEYgKSwgMS4wICk7XG5cdFx0fVxuXHR9XG4jZW5kaWYiLGRlZmF1bHRub3JtYWxfdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkTm9ybWFsID0gb2JqZWN0Tm9ybWFsO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG1hdDMgbSA9IG1hdDMoIGluc3RhbmNlTWF0cml4ICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsIC89IHZlYzMoIGRvdCggbVsgMCBdLCBtWyAwIF0gKSwgZG90KCBtWyAxIF0sIG1bIDEgXSApLCBkb3QoIG1bIDIgXSwgbVsgMiBdICkgKTtcblx0dHJhbnNmb3JtZWROb3JtYWwgPSBtICogdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7XG4jaWZkZWYgRkxJUF9TSURFRFxuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIHRyYW5zZm9ybWVkVGFuZ2VudCA9ICggbW9kZWxWaWV3TWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0dHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR0cmFuc2Zvcm1lZCArPSBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApICogKCB0ZXh0dXJlMkQoIGRpc3BsYWNlbWVudE1hcCwgdlV2ICkueCAqIGRpc3BsYWNlbWVudFNjYWxlICsgZGlzcGxhY2VtZW50QmlhcyApO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTtcblx0dG90YWxFbWlzc2l2ZVJhZGlhbmNlICo9IGVtaXNzaXZlQ29sb3IucmdiO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VNSVNTSVZFTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGVtaXNzaXZlTWFwO1xuI2VuZGlmIixlbmNvZGluZ3NfZnJhZ21lbnQ6ImdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApOyIsZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ6InZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2YWx1ZTtcbn1cbnZlYzQgTGluZWFyVG9zUkdCKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7XG59IixlbnZtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2ZWMzIGNhbWVyYVRvRnJhZztcblx0XHRpZiAoIGlzT3J0aG9ncmFwaGljICkge1xuXHRcdFx0Y2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0fVxuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZyYWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2Vsc2Vcblx0XHR2ZWMzIHJlZmxlY3RWZWMgPSB2UmVmbGVjdDtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHR2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCAwLjAgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IGVudkNvbG9yID0gdmVjNCggMC4wICk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZXG5cdFx0b3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgb3V0Z29pbmdMaWdodCAqIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfTUlYIClcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX0JMRU5ESU5HX0FERCApXG5cdFx0b3V0Z29pbmdMaWdodCArPSBlbnZDb2xvci54eXogKiBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHR1bmlmb3JtIGZsb2F0IGVudk1hcEludGVuc2l0eTtcblx0dW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwO1xuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0I2VuZGlmXG5cdFxuI2VuZGlmIixlbnZtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHxkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHRcblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQIClcblx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRlJBQ1RJT05cblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG5cdHZlYzMgZ2V0SUJMSXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7XG5cdFx0I2lmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgd29ybGROb3JtYWwsIDEuMCApO1xuXHRcdFx0cmV0dXJuIFBJICogZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHRcdCNlbHNlXG5cdFx0XHRyZXR1cm4gdmVjMyggMC4wICk7XG5cdFx0I2VuZGlmXG5cdH1cblx0dmVjMyBnZXRJQkxSYWRpYW5jZSggY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdCNpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzMgcmVmbGVjdFZlYztcblx0XHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHRcdHJlZmxlY3RWZWMgPSByZWZsZWN0KCAtIHZpZXdEaXIsIG5vcm1hbCApO1xuXHRcdFx0XHRyZWZsZWN0VmVjID0gbm9ybWFsaXplKCBtaXgoIHJlZmxlY3RWZWMsIG5vcm1hbCwgcm91Z2huZXNzICogcm91Z2huZXNzKSApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0cmVmbGVjdFZlYyA9IHJlZnJhY3QoIC0gdmlld0Rpciwgbm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0cmVmbGVjdFZlYyA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHJlZmxlY3RWZWMsIHZpZXdNYXRyaXggKTtcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIHJvdWdobmVzcyApO1xuXHRcdFx0cmV0dXJuIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0XHQjZWxzZVxuXHRcdFx0cmV0dXJuIHZlYzMoIDAuMCApO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWYiLGVudm1hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xuXHQjZWxzZVxuXHRcdHZlYzMgY2FtZXJhVG9WZXJ0ZXg7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHdvcmxkUG9zaXRpb24ueHl6IC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZSZWZsZWN0ID0gcmVmbGVjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZSZWZsZWN0ID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWYiLGZvZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdHZGb2dEZXB0aCA9IC0gbXZQb3NpdGlvbi56O1xuI2VuZGlmIixmb2dfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdHZhcnlpbmcgZmxvYXQgdkZvZ0RlcHRoO1xuI2VuZGlmIixmb2dfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRk9HXG5cdCNpZmRlZiBGT0dfRVhQMlxuXHRcdGZsb2F0IGZvZ0ZhY3RvciA9IDEuMCAtIGV4cCggLSBmb2dEZW5zaXR5ICogZm9nRGVuc2l0eSAqIHZGb2dEZXB0aCAqIHZGb2dEZXB0aCApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGZvZ0ZhY3RvciA9IHNtb290aHN0ZXAoIGZvZ05lYXIsIGZvZ0ZhciwgdkZvZ0RlcHRoICk7XG5cdCNlbmRpZlxuXHRnbF9GcmFnQ29sb3IucmdiID0gbWl4KCBnbF9GcmFnQ29sb3IucmdiLCBmb2dDb2xvciwgZm9nRmFjdG9yICk7XG4jZW5kaWYiLGZvZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHR1bmlmb3JtIHZlYzMgZm9nQ29sb3I7XG5cdHZhcnlpbmcgZmxvYXQgdkZvZ0RlcHRoO1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dOZWFyO1xuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRmFyO1xuXHQjZW5kaWZcbiNlbmRpZiIsZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBncmFkaWVudE1hcDtcbiNlbmRpZlxudmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkge1xuXHRmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBsaWdodERpcmVjdGlvbiApO1xuXHR2ZWMyIGNvb3JkID0gdmVjMiggZG90TkwgKiAwLjUgKyAwLjUsIDAuMCApO1xuXHQjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdFx0cmV0dXJuIHZlYzMoIHRleHR1cmUyRCggZ3JhZGllbnRNYXAsIGNvb3JkICkuciApO1xuXHQjZWxzZVxuXHRcdHJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7XG5cdCNlbmRpZlxufSIsbGlnaHRtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dmVjNCBsaWdodE1hcFRleGVsID0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHR2ZWMzIGxpZ2h0TWFwSXJyYWRpYW5jZSA9IGxpZ2h0TWFwVGV4ZWwucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGxpZ2h0TWFwSXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBsaWdodE1hcElycmFkaWFuY2U7XG4jZW5kaWYiLGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbGlnaHRNYXA7XG5cdHVuaWZvcm0gZmxvYXQgbGlnaHRNYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGxpZ2h0c19sYW1iZXJ0X3ZlcnRleDoidmVjMyBkaWZmdXNlID0gdmVjMyggMS4wICk7XG5HZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5O1xuZ2VvbWV0cnkucG9zaXRpb24gPSBtdlBvc2l0aW9uLnh5ejtcbmdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcbmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIC1tdlBvc2l0aW9uLnh5eiApO1xuR2VvbWV0cmljQ29udGV4dCBiYWNrR2VvbWV0cnk7XG5iYWNrR2VvbWV0cnkucG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcbmJhY2tHZW9tZXRyeS5ub3JtYWwgPSAtZ2VvbWV0cnkubm9ybWFsO1xuYmFja0dlb21ldHJ5LnZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xudkxpZ2h0RnJvbnQgPSB2ZWMzKCAwLjAgKTtcbnZJbmRpcmVjdEZyb250ID0gdmVjMyggMC4wICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZMaWdodEJhY2sgPSB2ZWMzKCAwLjAgKTtcblx0dkluZGlyZWN0QmFjayA9IHZlYzMoIDAuMCApO1xuI2VuZGlmXG5JbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0O1xuZmxvYXQgZG90Tkw7XG52ZWMzIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcbnZJbmRpcmVjdEZyb250ICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG52SW5kaXJlY3RGcm9udCArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkubm9ybWFsICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0dkluZGlyZWN0QmFjayArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgYmFja0dlb21ldHJ5Lm5vcm1hbCApO1xuI2VuZGlmXG4jaWYgTlVNX1BPSU5UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFBvaW50TGlnaHRJbmZvKCBwb2ludExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0U3BvdExpZ2h0SW5mbyggc3BvdExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9ESVJfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGdldERpcmVjdGlvbmFsTGlnaHRJbmZvKCBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0dkluZGlyZWN0RnJvbnQgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeS5ub3JtYWwgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2SW5kaXJlY3RCYWNrICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgYmFja0dlb21ldHJ5Lm5vcm1hbCApO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWYiLGxpZ2h0c19wYXJzX2JlZ2luOiJ1bmlmb3JtIGJvb2wgcmVjZWl2ZVNoYWRvdztcbnVuaWZvcm0gdmVjMyBhbWJpZW50TGlnaHRDb2xvcjtcbnVuaWZvcm0gdmVjMyBsaWdodFByb2JlWyA5IF07XG52ZWMzIHNoR2V0SXJyYWRpYW5jZUF0KCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBzaENvZWZmaWNpZW50c1sgOSBdICkge1xuXHRmbG9hdCB4ID0gbm9ybWFsLngsIHkgPSBub3JtYWwueSwgeiA9IG5vcm1hbC56O1xuXHR2ZWMzIHJlc3VsdCA9IHNoQ29lZmZpY2llbnRzWyAwIF0gKiAwLjg4NjIyNztcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAxIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMiBdICogMi4wICogMC41MTE2NjQgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDMgXSAqIDIuMCAqIDAuNTExNjY0ICogeDtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA0IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDUgXSAqIDIuMCAqIDAuNDI5MDQzICogeSAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNiBdICogKCAwLjc0MzEyNSAqIHogKiB6IC0gMC4yNDc3MDggKTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA3IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDggXSAqIDAuNDI5MDQzICogKCB4ICogeCAtIHkgKiB5ICk7XG5cdHJldHVybiByZXN1bHQ7XG59XG52ZWMzIGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGxpZ2h0UHJvYmVbIDkgXSwgY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7XG5cdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gc2hHZXRJcnJhZGlhbmNlQXQoIHdvcmxkTm9ybWFsLCBsaWdodFByb2JlICk7XG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxudmVjMyBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGFtYmllbnRMaWdodENvbG9yICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBhbWJpZW50TGlnaHRDb2xvcjtcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG5mbG9hdCBnZXREaXN0YW5jZUF0dGVudWF0aW9uKCBjb25zdCBpbiBmbG9hdCBsaWdodERpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBjdXRvZmZEaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgZGVjYXlFeHBvbmVudCApIHtcblx0I2lmIGRlZmluZWQgKCBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIClcblx0XHRmbG9hdCBkaXN0YW5jZUZhbGxvZmYgPSAxLjAgLyBtYXgoIHBvdyggbGlnaHREaXN0YW5jZSwgZGVjYXlFeHBvbmVudCApLCAwLjAxICk7XG5cdFx0aWYgKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCApIHtcblx0XHRcdGRpc3RhbmNlRmFsbG9mZiAqPSBwb3cyKCBzYXR1cmF0ZSggMS4wIC0gcG93NCggbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICkgKSApO1xuXHRcdH1cblx0XHRyZXR1cm4gZGlzdGFuY2VGYWxsb2ZmO1xuXHQjZWxzZVxuXHRcdGlmICggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgJiYgZGVjYXlFeHBvbmVudCA+IDAuMCApIHtcblx0XHRcdHJldHVybiBwb3coIHNhdHVyYXRlKCAtIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSArIDEuMCApLCBkZWNheUV4cG9uZW50ICk7XG5cdFx0fVxuXHRcdHJldHVybiAxLjA7XG5cdCNlbmRpZlxufVxuZmxvYXQgZ2V0U3BvdEF0dGVudWF0aW9uKCBjb25zdCBpbiBmbG9hdCBjb25lQ29zaW5lLCBjb25zdCBpbiBmbG9hdCBwZW51bWJyYUNvc2luZSwgY29uc3QgaW4gZmxvYXQgYW5nbGVDb3NpbmUgKSB7XG5cdHJldHVybiBzbW9vdGhzdGVwKCBjb25lQ29zaW5lLCBwZW51bWJyYUNvc2luZSwgYW5nbGVDb3NpbmUgKTtcbn1cbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHQge1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdH07XG5cdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0c1sgTlVNX0RJUl9MSUdIVFMgXTtcblx0dm9pZCBnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggY29uc3QgaW4gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBsaWdodCApIHtcblx0XHRsaWdodC5jb2xvciA9IGRpcmVjdGlvbmFsTGlnaHQuY29sb3I7XG5cdFx0bGlnaHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uYWxMaWdodC5kaXJlY3Rpb247XG5cdFx0bGlnaHQudmlzaWJsZSA9IHRydWU7XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBQb2ludExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdH07XG5cdHVuaWZvcm0gUG9pbnRMaWdodCBwb2ludExpZ2h0c1sgTlVNX1BPSU5UX0xJR0hUUyBdO1xuXHR2b2lkIGdldFBvaW50TGlnaHRJbmZvKCBjb25zdCBpbiBQb2ludExpZ2h0IHBvaW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGxpZ2h0ICkge1xuXHRcdHZlYzMgbFZlY3RvciA9IHBvaW50TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRsaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7XG5cdFx0bGlnaHQuY29sb3IgPSBwb2ludExpZ2h0LmNvbG9yO1xuXHRcdGxpZ2h0LmNvbG9yICo9IGdldERpc3RhbmNlQXR0ZW51YXRpb24oIGxpZ2h0RGlzdGFuY2UsIHBvaW50TGlnaHQuZGlzdGFuY2UsIHBvaW50TGlnaHQuZGVjYXkgKTtcblx0XHRsaWdodC52aXNpYmxlID0gKCBsaWdodC5jb2xvciAhPSB2ZWMzKCAwLjAgKSApO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBTcG90TGlnaHQge1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRmbG9hdCBkaXN0YW5jZTtcblx0XHRmbG9hdCBkZWNheTtcblx0XHRmbG9hdCBjb25lQ29zO1xuXHRcdGZsb2F0IHBlbnVtYnJhQ29zO1xuXHR9O1xuXHR1bmlmb3JtIFNwb3RMaWdodCBzcG90TGlnaHRzWyBOVU1fU1BPVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRTcG90TGlnaHRJbmZvKCBjb25zdCBpbiBTcG90TGlnaHQgc3BvdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBsaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBzcG90TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRsaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBhbmdsZUNvcyA9IGRvdCggbGlnaHQuZGlyZWN0aW9uLCBzcG90TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgc3BvdEF0dGVudWF0aW9uID0gZ2V0U3BvdEF0dGVudWF0aW9uKCBzcG90TGlnaHQuY29uZUNvcywgc3BvdExpZ2h0LnBlbnVtYnJhQ29zLCBhbmdsZUNvcyApO1xuXHRcdGlmICggc3BvdEF0dGVudWF0aW9uID4gMC4wICkge1xuXHRcdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdFx0bGlnaHQuY29sb3IgPSBzcG90TGlnaHQuY29sb3IgKiBzcG90QXR0ZW51YXRpb247XG5cdFx0XHRsaWdodC5jb2xvciAqPSBnZXREaXN0YW5jZUF0dGVudWF0aW9uKCBsaWdodERpc3RhbmNlLCBzcG90TGlnaHQuZGlzdGFuY2UsIHNwb3RMaWdodC5kZWNheSApO1xuXHRcdFx0bGlnaHQudmlzaWJsZSA9ICggbGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTtcblx0XHRcdGxpZ2h0LnZpc2libGUgPSBmYWxzZTtcblx0XHR9XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7XG5cdFx0dmVjMyBjb2xvcjtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodDtcblx0fTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzE7XHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMjtcblx0dW5pZm9ybSBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHRzWyBOVU1fUkVDVF9BUkVBX0xJR0hUUyBdO1xuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHRzdHJ1Y3QgSGVtaXNwaGVyZUxpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIHNreUNvbG9yO1xuXHRcdHZlYzMgZ3JvdW5kQ29sb3I7XG5cdH07XG5cdHVuaWZvcm0gSGVtaXNwaGVyZUxpZ2h0IGhlbWlzcGhlcmVMaWdodHNbIE5VTV9IRU1JX0xJR0hUUyBdO1xuXHR2ZWMzIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIEhlbWlzcGhlcmVMaWdodCBoZW1pTGlnaHQsIGNvbnN0IGluIHZlYzMgbm9ybWFsICkge1xuXHRcdGZsb2F0IGRvdE5MID0gZG90KCBub3JtYWwsIGhlbWlMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBoZW1pRGlmZnVzZVdlaWdodCA9IDAuNSAqIGRvdE5MICsgMC41O1xuXHRcdHZlYzMgaXJyYWRpYW5jZSA9IG1peCggaGVtaUxpZ2h0Lmdyb3VuZENvbG9yLCBoZW1pTGlnaHQuc2t5Q29sb3IsIGhlbWlEaWZmdXNlV2VpZ2h0ICk7XG5cdFx0cmV0dXJuIGlycmFkaWFuY2U7XG5cdH1cbiNlbmRpZiIsbGlnaHRzX3Rvb25fZnJhZ21lbnQ6IlRvb25NYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7IixsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbnN0cnVjdCBUb29uTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcbn07XG52b2lkIFJFX0RpcmVjdF9Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRHcmFkaWVudElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1Rvb24oIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9Ub29uXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfVG9vblxuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXHQoMCkiLGxpZ2h0c19waG9uZ19mcmFnbWVudDoiQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYjtcbm1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBzcGVjdWxhcjtcbm1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzID0gc2hpbmluZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aCA9IHNwZWN1bGFyU3RyZW5ndGg7IixsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudDoidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG5zdHJ1Y3QgQmxpbm5QaG9uZ01hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG5cdHZlYzMgc3BlY3VsYXJDb2xvcjtcblx0ZmxvYXQgc3BlY3VsYXJTaGluaW5lc3M7XG5cdGZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG59O1xudm9pZCBSRV9EaXJlY3RfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGRvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX0JsaW5uUGhvbmcoIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyApICogbWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aDtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9CbGlublBob25nXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZ1xuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXHQoMCkiLGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudDoiUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2IgKiAoIDEuMCAtIG1ldGFsbmVzc0ZhY3RvciApO1xudmVjMyBkeHkgPSBtYXgoIGFicyggZEZkeCggZ2VvbWV0cnlOb3JtYWwgKSApLCBhYnMoIGRGZHkoIGdlb21ldHJ5Tm9ybWFsICkgKSApO1xuZmxvYXQgZ2VvbWV0cnlSb3VnaG5lc3MgPSBtYXgoIG1heCggZHh5LngsIGR4eS55ICksIGR4eS56ICk7XG5tYXRlcmlhbC5yb3VnaG5lc3MgPSBtYXgoIHJvdWdobmVzc0ZhY3RvciwgMC4wNTI1ICk7bWF0ZXJpYWwucm91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xubWF0ZXJpYWwucm91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5yb3VnaG5lc3MsIDEuMCApO1xuI2lmZGVmIElPUlxuXHQjaWZkZWYgU1BFQ1VMQVJcblx0XHRmbG9hdCBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IHNwZWN1bGFySW50ZW5zaXR5O1xuXHRcdHZlYzMgc3BlY3VsYXJDb2xvckZhY3RvciA9IHNwZWN1bGFyQ29sb3I7XG5cdFx0I2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUFxuXHRcdFx0c3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgKj0gdGV4dHVyZTJEKCBzcGVjdWxhckludGVuc2l0eU1hcCwgdlV2ICkuYTtcblx0XHQjZW5kaWZcblx0XHQjaWZkZWYgVVNFX1NQRUNVTEFSQ09MT1JNQVBcblx0XHRcdHNwZWN1bGFyQ29sb3JGYWN0b3IgKj0gdGV4dHVyZTJEKCBzcGVjdWxhckNvbG9yTWFwLCB2VXYgKS5yZ2I7XG5cdFx0I2VuZGlmXG5cdFx0bWF0ZXJpYWwuc3BlY3VsYXJGOTAgPSBtaXgoIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yLCAxLjAsIG1ldGFsbmVzc0ZhY3RvciApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yID0gMS4wO1xuXHRcdHZlYzMgc3BlY3VsYXJDb2xvckZhY3RvciA9IHZlYzMoIDEuMCApO1xuXHRcdG1hdGVyaWFsLnNwZWN1bGFyRjkwID0gMS4wO1xuXHQjZW5kaWZcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggbWluKCBwb3cyKCAoIGlvciAtIDEuMCApIC8gKCBpb3IgKyAxLjAgKSApICogc3BlY3VsYXJDb2xvckZhY3RvciwgdmVjMyggMS4wICkgKSAqIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTtcbiNlbHNlXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIHZlYzMoIDAuMDQgKSwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG5cdG1hdGVyaWFsLnNwZWN1bGFyRjkwID0gMS4wO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVFxuXHRtYXRlcmlhbC5jbGVhcmNvYXQgPSBjbGVhcmNvYXQ7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IGNsZWFyY29hdFJvdWdobmVzcztcblx0bWF0ZXJpYWwuY2xlYXJjb2F0RjAgPSB2ZWMzKCAwLjA0ICk7XG5cdG1hdGVyaWFsLmNsZWFyY29hdEY5MCA9IDEuMDtcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRNQVBcblx0XHRtYXRlcmlhbC5jbGVhcmNvYXQgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRNYXAsIHZVdiApLng7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVBcblx0XHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRSb3VnaG5lc3NNYXAsIHZVdiApLnk7XG5cdCNlbmRpZlxuXHRtYXRlcmlhbC5jbGVhcmNvYXQgPSBzYXR1cmF0ZSggbWF0ZXJpYWwuY2xlYXJjb2F0ICk7XHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtYXgoIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMC4wNTI1ICk7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzcztcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdG1hdGVyaWFsLnNoZWVuQ29sb3IgPSBzaGVlbkNvbG9yO1xuXHQjaWZkZWYgVVNFX1NIRUVOQ09MT1JNQVBcblx0XHRtYXRlcmlhbC5zaGVlbkNvbG9yICo9IHRleHR1cmUyRCggc2hlZW5Db2xvck1hcCwgdlV2ICkucmdiO1xuXHQjZW5kaWZcblx0bWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3MgPSBjbGFtcCggc2hlZW5Sb3VnaG5lc3MsIDAuMDcsIDEuMCApO1xuXHQjaWZkZWYgVVNFX1NIRUVOUk9VR0hORVNTTUFQXG5cdFx0bWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3MgKj0gdGV4dHVyZTJEKCBzaGVlblJvdWdobmVzc01hcCwgdlV2ICkuYTtcblx0I2VuZGlmXG4jZW5kaWYiLGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50OiJzdHJ1Y3QgUGh5c2ljYWxNYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xuXHRmbG9hdCByb3VnaG5lc3M7XG5cdHZlYzMgc3BlY3VsYXJDb2xvcjtcblx0ZmxvYXQgc3BlY3VsYXJGOTA7XG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2xlYXJjb2F0O1xuXHRcdGZsb2F0IGNsZWFyY29hdFJvdWdobmVzcztcblx0XHR2ZWMzIGNsZWFyY29hdEYwO1xuXHRcdGZsb2F0IGNsZWFyY29hdEY5MDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU0hFRU5cblx0XHR2ZWMzIHNoZWVuQ29sb3I7XG5cdFx0ZmxvYXQgc2hlZW5Sb3VnaG5lc3M7XG5cdCNlbmRpZlxufTtcbnZlYzMgY2xlYXJjb2F0U3BlY3VsYXIgPSB2ZWMzKCAwLjAgKTtcbnZlYzMgc2hlZW5TcGVjdWxhciA9IHZlYzMoIDAuMCApO1xuZmxvYXQgSUJMU2hlZW5CUkRGKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MpIHtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApO1xuXHRmbG9hdCByMiA9IHJvdWdobmVzcyAqIHJvdWdobmVzcztcblx0ZmxvYXQgYSA9IHJvdWdobmVzcyA8IDAuMjUgPyAtMzM5LjIgKiByMiArIDE2MS40ICogcm91Z2huZXNzIC0gMjUuOSA6IC04LjQ4ICogcjIgKyAxNC4zICogcm91Z2huZXNzIC0gOS45NTtcblx0ZmxvYXQgYiA9IHJvdWdobmVzcyA8IDAuMjUgPyA0NC4wICogcjIgLSAyMy43ICogcm91Z2huZXNzICsgMy4yNiA6IDEuOTcgKiByMiAtIDMuMjcgKiByb3VnaG5lc3MgKyAwLjcyO1xuXHRmbG9hdCBERyA9IGV4cCggYSAqIGRvdE5WICsgYiApICsgKCByb3VnaG5lc3MgPCAwLjI1ID8gMC4wIDogMC4xICogKCByb3VnaG5lc3MgLSAwLjI1ICkgKTtcblx0cmV0dXJuIHNhdHVyYXRlKCBERyAqIFJFQ0lQUk9DQUxfUEkgKTtcbn1cbnZlYzIgREZHQXBwcm94KCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0Y29uc3QgdmVjNCBjMCA9IHZlYzQoIC0gMSwgLSAwLjAyNzUsIC0gMC41NzIsIDAuMDIyICk7XG5cdGNvbnN0IHZlYzQgYzEgPSB2ZWM0KCAxLCAwLjA0MjUsIDEuMDQsIC0gMC4wNCApO1xuXHR2ZWM0IHIgPSByb3VnaG5lc3MgKiBjMCArIGMxO1xuXHRmbG9hdCBhMDA0ID0gbWluKCByLnggKiByLngsIGV4cDIoIC0gOS4yOCAqIGRvdE5WICkgKSAqIHIueCArIHIueTtcblx0dmVjMiBmYWIgPSB2ZWMyKCAtIDEuMDQsIDEuMDQgKSAqIGEwMDQgKyByLnp3O1xuXHRyZXR1cm4gZmFiO1xufVxudmVjMyBFbnZpcm9ubWVudEJSREYoIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc3BlY3VsYXJGOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0dmVjMiBmYWIgPSBERkdBcHByb3goIG5vcm1hbCwgdmlld0Rpciwgcm91Z2huZXNzICk7XG5cdHJldHVybiBzcGVjdWxhckNvbG9yICogZmFiLnggKyBzcGVjdWxhckY5MCAqIGZhYi55O1xufVxudm9pZCBjb21wdXRlTXVsdGlzY2F0dGVyaW5nKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNwZWN1bGFyRjkwLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGlub3V0IHZlYzMgc2luZ2xlU2NhdHRlciwgaW5vdXQgdmVjMyBtdWx0aVNjYXR0ZXIgKSB7XG5cdHZlYzIgZmFiID0gREZHQXBwcm94KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApO1xuXHR2ZWMzIEZzc0VzcyA9IHNwZWN1bGFyQ29sb3IgKiBmYWIueCArIHNwZWN1bGFyRjkwICogZmFiLnk7XG5cdGZsb2F0IEVzcyA9IGZhYi54ICsgZmFiLnk7XG5cdGZsb2F0IEVtcyA9IDEuMCAtIEVzcztcblx0dmVjMyBGYXZnID0gc3BlY3VsYXJDb2xvciArICggMS4wIC0gc3BlY3VsYXJDb2xvciApICogMC4wNDc2MTk7XHR2ZWMzIEZtcyA9IEZzc0VzcyAqIEZhdmcgLyAoIDEuMCAtIEVtcyAqIEZhdmcgKTtcblx0c2luZ2xlU2NhdHRlciArPSBGc3NFc3M7XG5cdG11bHRpU2NhdHRlciArPSBGbXMgKiBFbXM7XG59XG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwXG5cdHZvaWQgUkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsKCBjb25zdCBpbiBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRcdHZlYzMgbm9ybWFsID0gZ2VvbWV0cnkubm9ybWFsO1xuXHRcdHZlYzMgdmlld0RpciA9IGdlb21ldHJ5LnZpZXdEaXI7XG5cdFx0dmVjMyBwb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdHZlYzMgbGlnaHRQb3MgPSByZWN0QXJlYUxpZ2h0LnBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoID0gcmVjdEFyZWFMaWdodC5oYWxmV2lkdGg7XG5cdFx0dmVjMyBoYWxmSGVpZ2h0ID0gcmVjdEFyZWFMaWdodC5oYWxmSGVpZ2h0O1xuXHRcdHZlYzMgbGlnaHRDb2xvciA9IHJlY3RBcmVhTGlnaHQuY29sb3I7XG5cdFx0ZmxvYXQgcm91Z2huZXNzID0gbWF0ZXJpYWwucm91Z2huZXNzO1xuXHRcdHZlYzMgcmVjdENvb3Jkc1sgNCBdO1xuXHRcdHJlY3RDb29yZHNbIDAgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcdFx0cmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0dmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTtcblx0XHR2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTtcblx0XHR2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTtcblx0XHRtYXQzIG1JbnYgPSBtYXQzKFxuXHRcdFx0dmVjMyggdDEueCwgMCwgdDEueSApLFxuXHRcdFx0dmVjMyggICAgMCwgMSwgICAgMCApLFxuXHRcdFx0dmVjMyggdDEueiwgMCwgdDEudyApXG5cdFx0KTtcblx0XHR2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTtcblx0fVxuI2VuZGlmXG52b2lkIFJFX0RpcmVjdF9QaHlzaWNhbCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVFxuXHRcdGZsb2F0IGRvdE5MY2MgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdFx0dmVjMyBjY0lycmFkaWFuY2UgPSBkb3ROTGNjICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0Y2xlYXJjb2F0U3BlY3VsYXIgKz0gY2NJcnJhZGlhbmNlICogQlJERl9HR1goIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbC5jbGVhcmNvYXRGMCwgbWF0ZXJpYWwuY2xlYXJjb2F0RjkwLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU0hFRU5cblx0XHRzaGVlblNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX1NoZWVuKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc2hlZW5Db2xvciwgbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3MgKTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX0dHWCggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyRjkwLCBtYXRlcmlhbC5yb3VnaG5lc3MgKTtcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBjbGVhcmNvYXRSYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQpIHtcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0XHRjbGVhcmNvYXRTcGVjdWxhciArPSBjbGVhcmNvYXRSYWRpYW5jZSAqIEVudmlyb25tZW50QlJERiggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyLCBtYXRlcmlhbC5jbGVhcmNvYXRGMCwgbWF0ZXJpYWwuY2xlYXJjb2F0RjkwLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU0hFRU5cblx0XHRzaGVlblNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBtYXRlcmlhbC5zaGVlbkNvbG9yICogSUJMU2hlZW5CUkRGKCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIsIG1hdGVyaWFsLnNoZWVuUm91Z2huZXNzICk7XG5cdCNlbmRpZlxuXHR2ZWMzIHNpbmdsZVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBtdWx0aVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2UgPSBpcnJhZGlhbmNlICogUkVDSVBST0NBTF9QSTtcblx0Y29tcHV0ZU11bHRpc2NhdHRlcmluZyggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCwgbWF0ZXJpYWwucm91Z2huZXNzLCBzaW5nbGVTY2F0dGVyaW5nLCBtdWx0aVNjYXR0ZXJpbmcgKTtcblx0dmVjMyBkaWZmdXNlID0gbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogKCAxLjAgLSAoIHNpbmdsZVNjYXR0ZXJpbmcgKyBtdWx0aVNjYXR0ZXJpbmcgKSApO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IHJhZGlhbmNlICogc2luZ2xlU2NhdHRlcmluZztcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBtdWx0aVNjYXR0ZXJpbmcgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBkaWZmdXNlICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9QaHlzaWNhbFxuI2RlZmluZSBSRV9EaXJlY3RfUmVjdEFyZWFcdFx0UkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3RTcGVjdWxhclx0XHRSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsXG5mbG9hdCBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCBhbWJpZW50T2NjbHVzaW9uLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdHJldHVybiBzYXR1cmF0ZSggcG93KCBkb3ROViArIGFtYmllbnRPY2NsdXNpb24sIGV4cDIoIC0gMTYuMCAqIHJvdWdobmVzcyAtIDEuMCApICkgLSAxLjAgKyBhbWJpZW50T2NjbHVzaW9uICk7XG59IixsaWdodHNfZnJhZ21lbnRfYmVnaW46IlxuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uO1xuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsO1xuZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xuI2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0Z2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsID0gY2xlYXJjb2F0Tm9ybWFsO1xuI2VuZGlmXG5JbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0O1xuI2lmICggTlVNX1BPSU5UX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHRQb2ludExpZ2h0IHBvaW50TGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcblx0XHRwb2ludExpZ2h0ID0gcG9pbnRMaWdodHNbIGkgXTtcblx0XHRnZXRQb2ludExpZ2h0SW5mbyggcG9pbnRMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyApXG5cdFx0cG9pbnRMaWdodFNoYWRvdyA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9TUE9UX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHRTcG90TGlnaHQgc3BvdExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgPSBzcG90TGlnaHRzWyBpIF07XG5cdFx0Z2V0U3BvdExpZ2h0SW5mbyggc3BvdExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgKVxuXHRcdHNwb3RMaWdodFNoYWRvdyA9IHNwb3RMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFNoYWRvdyggc3BvdFNoYWRvd01hcFsgaSBdLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZTcG90U2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fRElSX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHREaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHREaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdO1xuXHRcdGdldERpcmVjdGlvbmFsTGlnaHRJbmZvKCBkaXJlY3Rpb25hbExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUyApXG5cdFx0ZGlyZWN0aW9uYWxMaWdodFNoYWRvdyA9IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3RfUmVjdEFyZWEgKVxuXHRSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1JFQ1RfQVJFQV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cmVjdEFyZWFMaWdodCA9IHJlY3RBcmVhTGlnaHRzWyBpIF07XG5cdFx0UkVfRGlyZWN0X1JlY3RBcmVhKCByZWN0QXJlYUxpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdHZlYzMgaWJsSXJyYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xuXHRpcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeS5ub3JtYWwgKTtcblx0I2lmICggTlVNX0hFTUlfTElHSFRTID4gMCApXG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHRcdGlycmFkaWFuY2UgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeS5ub3JtYWwgKTtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0dmVjMyByYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNsZWFyY29hdFJhZGlhbmNlID0gdmVjMyggMC4wICk7XG4jZW5kaWYiLGxpZ2h0c19mcmFnbWVudF9tYXBzOiIjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcdHZlYzQgbGlnaHRNYXBUZXhlbCA9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHR2ZWMzIGxpZ2h0TWFwSXJyYWRpYW5jZSA9IGxpZ2h0TWFwVGV4ZWwucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRsaWdodE1hcElycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0aXJyYWRpYW5jZSArPSBsaWdodE1hcElycmFkaWFuY2U7XG5cdCNlbmRpZlxuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEICkgJiYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0aWJsSXJyYWRpYW5jZSArPSBnZXRJQkxJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwgKTtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHJhZGlhbmNlICs9IGdldElCTFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnJvdWdobmVzcyApO1xuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVFxuXHRcdGNsZWFyY29hdFJhZGlhbmNlICs9IGdldElCTFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsbGlnaHRzX2ZyYWdtZW50X2VuZDoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdFJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdFJFX0luZGlyZWN0U3BlY3VsYXIoIHJhZGlhbmNlLCBpYmxJcnJhZGlhbmNlLCBjbGVhcmNvYXRSYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHRnbF9GcmFnRGVwdGhFWFQgPSB2SXNQZXJzcGVjdGl2ZSA9PSAwLjAgPyBnbF9GcmFnQ29vcmQueiA6IGxvZzIoIHZGcmFnRGVwdGggKSAqIGxvZ0RlcHRoQnVmRkMgKiAwLjU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHRcdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHQjZW5kaWZcbiNlbmRpZiIsbG9nZGVwdGhidWZfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dkZyYWdEZXB0aCA9IDEuMCArIGdsX1Bvc2l0aW9uLnc7XG5cdFx0dklzUGVyc3BlY3RpdmUgPSBmbG9hdCggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICk7XG5cdCNlbHNlXG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICkgKSB7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ID0gbG9nMiggbWF4KCBFUFNJTE9OLCBnbF9Qb3NpdGlvbi53ICsgMS4wICkgKSAqIGxvZ0RlcHRoQnVmRkMgLSAxLjA7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ICo9IGdsX1Bvc2l0aW9uLnc7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR2ZWM0IHNhbXBsZWREaWZmdXNlQ29sb3IgPSB0ZXh0dXJlMkQoIG1hcCwgdlV2ICk7XG5cdCNpZmRlZiBERUNPREVfVklERU9fVEVYVFVSRVxuXHRcdHNhbXBsZWREaWZmdXNlQ29sb3IgPSB2ZWM0KCBtaXgoIHBvdyggc2FtcGxlZERpZmZ1c2VDb2xvci5yZ2IgKiAwLjk0Nzg2NzI5ODYgKyB2ZWMzKCAwLjA1MjEzMjcwMTQgKSwgdmVjMyggMi40ICkgKSwgc2FtcGxlZERpZmZ1c2VDb2xvci5yZ2IgKiAwLjA3NzM5OTM4MDgsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHNhbXBsZWREaWZmdXNlQ29sb3IudyApO1xuXHQjZW5kaWZcblx0ZGlmZnVzZUNvbG9yICo9IHNhbXBsZWREaWZmdXNlQ29sb3I7XG4jZW5kaWYiLG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR2ZWMyIHV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIGdsX1BvaW50Q29vcmQueCwgMS4wIC0gZ2xfUG9pbnRDb29yZC55LCAxICkgKS54eTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0ZGlmZnVzZUNvbG9yICo9IHRleHR1cmUyRCggbWFwLCB1diApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0FMUEhBTUFQXG5cdGRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHV2ICkuZztcbiNlbmRpZiIsbWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQIClcblx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xuI2VuZGlmXG4jaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYWxwaGFNYXA7XG4jZW5kaWYiLG1ldGFsbmVzc21hcF9mcmFnbWVudDoiZmxvYXQgbWV0YWxuZXNzRmFjdG9yID0gbWV0YWxuZXNzO1xuI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dmVjNCB0ZXhlbE1ldGFsbmVzcyA9IHRleHR1cmUyRCggbWV0YWxuZXNzTWFwLCB2VXYgKTtcblx0bWV0YWxuZXNzRmFjdG9yICo9IHRleGVsTWV0YWxuZXNzLmI7XG4jZW5kaWYiLG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01FVEFMTkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtZXRhbG5lc3NNYXA7XG4jZW5kaWYiLG1vcnBobm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0b2JqZWN0Tm9ybWFsICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0I2lmZGVmIE1PUlBIVEFSR0VUU19URVhUVVJFXG5cdFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTU9SUEhUQVJHRVRTX0NPVU5UOyBpICsrICkge1xuXHRcdFx0aWYgKCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXSAhPSAwLjAgKSBvYmplY3ROb3JtYWwgKz0gZ2V0TW9ycGgoIGdsX1ZlcnRleElELCBpLCAxLCAyICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXTtcblx0XHR9XG5cdCNlbHNlXG5cdFx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xuXHRcdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0XHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdFx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsbW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHQjaWZkZWYgTU9SUEhUQVJHRVRTX1RFWFRVUkVcblx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgTU9SUEhUQVJHRVRTX0NPVU5UIF07XG5cdFx0dW5pZm9ybSBzYW1wbGVyMkRBcnJheSBtb3JwaFRhcmdldHNUZXh0dXJlO1xuXHRcdHVuaWZvcm0gdmVjMiBtb3JwaFRhcmdldHNUZXh0dXJlU2l6ZTtcblx0XHR2ZWMzIGdldE1vcnBoKCBjb25zdCBpbiBpbnQgdmVydGV4SW5kZXgsIGNvbnN0IGluIGludCBtb3JwaFRhcmdldEluZGV4LCBjb25zdCBpbiBpbnQgb2Zmc2V0LCBjb25zdCBpbiBpbnQgc3RyaWRlICkge1xuXHRcdFx0ZmxvYXQgdGV4ZWxJbmRleCA9IGZsb2F0KCB2ZXJ0ZXhJbmRleCAqIHN0cmlkZSArIG9mZnNldCApO1xuXHRcdFx0ZmxvYXQgeSA9IGZsb29yKCB0ZXhlbEluZGV4IC8gbW9ycGhUYXJnZXRzVGV4dHVyZVNpemUueCApO1xuXHRcdFx0ZmxvYXQgeCA9IHRleGVsSW5kZXggLSB5ICogbW9ycGhUYXJnZXRzVGV4dHVyZVNpemUueDtcblx0XHRcdHZlYzMgbW9ycGhVViA9IHZlYzMoICggeCArIDAuNSApIC8gbW9ycGhUYXJnZXRzVGV4dHVyZVNpemUueCwgeSAvIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLnksIG1vcnBoVGFyZ2V0SW5kZXggKTtcblx0XHRcdHJldHVybiB0ZXh0dXJlKCBtb3JwaFRhcmdldHNUZXh0dXJlLCBtb3JwaFVWICkueHl6O1xuXHRcdH1cblx0I2Vsc2Vcblx0XHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHRcdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA4IF07XG5cdFx0I2Vsc2Vcblx0XHRcdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmIixtb3JwaHRhcmdldF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHRyYW5zZm9ybWVkICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0I2lmZGVmIE1PUlBIVEFSR0VUU19URVhUVVJFXG5cdFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTU9SUEhUQVJHRVRTX0NPVU5UOyBpICsrICkge1xuXHRcdFx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0XHRcdGlmICggbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF0gIT0gMC4wICkgdHJhbnNmb3JtZWQgKz0gZ2V0TW9ycGgoIGdsX1ZlcnRleElELCBpLCAwLCAxICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdGlmICggbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF0gIT0gMC4wICkgdHJhbnNmb3JtZWQgKz0gZ2V0TW9ycGgoIGdsX1ZlcnRleElELCBpLCAwLCAyICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXTtcblx0XHRcdCNlbmRpZlxuXHRcdH1cblx0I2Vsc2Vcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcblx0XHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHRcdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ1ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA1IF07XG5cdFx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDYgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDYgXTtcblx0XHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNyBdO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcbiNlbmRpZiIsbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiJmbG9hdCBmYWNlRGlyZWN0aW9uID0gZ2xfRnJvbnRGYWNpbmcgPyAxLjAgOiAtIDEuMDtcbiNpZmRlZiBGTEFUX1NIQURFRFxuXHR2ZWMzIGZkeCA9IHZlYzMoIGRGZHgoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeCggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBmZHkgPSB2ZWMzKCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeSggdlZpZXdQb3NpdGlvbi55ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApO1xuI2Vsc2Vcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2ZWMzIHRhbmdlbnQgPSBub3JtYWxpemUoIHZUYW5nZW50ICk7XG5cdFx0dmVjMyBiaXRhbmdlbnQgPSBub3JtYWxpemUoIHZCaXRhbmdlbnQgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR0YW5nZW50ID0gdGFuZ2VudCAqIGZhY2VEaXJlY3Rpb247XG5cdFx0XHRiaXRhbmdlbnQgPSBiaXRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdCNlbmRpZlxuXHRcdCNpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKVxuXHRcdFx0bWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBub3JtYWwgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWZcbnZlYzMgZ2VvbWV0cnlOb3JtYWwgPSBub3JtYWw7Iixub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHRub3JtYWwgPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdG5vcm1hbCA9IC0gbm9ybWFsO1xuXHQjZW5kaWZcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHRub3JtYWwgPSBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApO1xuI2VsaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZlYzMgbWFwTiA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdG1hcE4ueHkgKj0gbm9ybWFsU2NhbGU7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTtcblx0I2Vsc2Vcblx0XHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLSB2Vmlld1Bvc2l0aW9uLCBub3JtYWwsIG1hcE4sIGZhY2VEaXJlY3Rpb24gKTtcblx0I2VuZGlmXG4jZWxpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApXG5cdG5vcm1hbCA9IHBlcnR1cmJOb3JtYWxBcmIoIC0gdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBkSGR4eV9md2QoKSwgZmFjZURpcmVjdGlvbiApO1xuI2VuZGlmIixub3JtYWxfcGFyc19mcmFnbWVudDoiI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZiIsbm9ybWFsX3BhcnNfdmVydGV4OiIjaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixub3JtYWxfdmVydGV4OiIjaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlO1xuI2VuZGlmXG4jaWZkZWYgT0JKRUNUU1BBQ0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7XG4jZW5kaWZcbiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkICggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKSApXG5cdHZlYzMgcGVydHVyYk5vcm1hbDJBcmIoIHZlYzMgZXllX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzMgbWFwTiwgZmxvYXQgZmFjZURpcmVjdGlvbiApIHtcblx0XHR2ZWMzIHEwID0gdmVjMyggZEZkeCggZXllX3Bvcy54ICksIGRGZHgoIGV5ZV9wb3MueSApLCBkRmR4KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzMgcTEgPSB2ZWMzKCBkRmR5KCBleWVfcG9zLnggKSwgZEZkeSggZXllX3Bvcy55ICksIGRGZHkoIGV5ZV9wb3MueiApICk7XG5cdFx0dmVjMiBzdDAgPSBkRmR4KCB2VXYuc3QgKTtcblx0XHR2ZWMyIHN0MSA9IGRGZHkoIHZVdi5zdCApO1xuXHRcdHZlYzMgTiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIHExcGVycCA9IGNyb3NzKCBxMSwgTiApO1xuXHRcdHZlYzMgcTBwZXJwID0gY3Jvc3MoIE4sIHEwICk7XG5cdFx0dmVjMyBUID0gcTFwZXJwICogc3QwLnggKyBxMHBlcnAgKiBzdDEueDtcblx0XHR2ZWMzIEIgPSBxMXBlcnAgKiBzdDAueSArIHEwcGVycCAqIHN0MS55O1xuXHRcdGZsb2F0IGRldCA9IG1heCggZG90KCBULCBUICksIGRvdCggQiwgQiApICk7XG5cdFx0ZmxvYXQgc2NhbGUgPSAoIGRldCA9PSAwLjAgKSA/IDAuMCA6IGZhY2VEaXJlY3Rpb24gKiBpbnZlcnNlc3FydCggZGV0ICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggVCAqICggbWFwTi54ICogc2NhbGUgKSArIEIgKiAoIG1hcE4ueSAqIHNjYWxlICkgKyBOICogbWFwTi56ICk7XG5cdH1cbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbjoiI2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWwgPSBnZW9tZXRyeU5vcm1hbDtcbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzOiIjaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0dmVjMyBjbGVhcmNvYXRNYXBOID0gdGV4dHVyZTJEKCBjbGVhcmNvYXROb3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0Y2xlYXJjb2F0TWFwTi54eSAqPSBjbGVhcmNvYXROb3JtYWxTY2FsZTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogY2xlYXJjb2F0TWFwTiApO1xuXHQjZWxzZVxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtIHZWaWV3UG9zaXRpb24sIGNsZWFyY29hdE5vcm1hbCwgY2xlYXJjb2F0TWFwTiwgZmFjZURpcmVjdGlvbiApO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdFJvdWdobmVzc01hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuI2VuZGlmIixvdXRwdXRfZnJhZ21lbnQ6IiNpZmRlZiBPUEFRVUVcbmRpZmZ1c2VDb2xvci5hID0gMS4wO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuZGlmZnVzZUNvbG9yLmEgKj0gdHJhbnNtaXNzaW9uQWxwaGEgKyAwLjE7XG4jZW5kaWZcbmdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7IixwYWNraW5nOiJ2ZWMzIHBhY2tOb3JtYWxUb1JHQiggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7XG5cdHJldHVybiBub3JtYWxpemUoIG5vcm1hbCApICogMC41ICsgMC41O1xufVxudmVjMyB1bnBhY2tSR0JUb05vcm1hbCggY29uc3QgaW4gdmVjMyByZ2IgKSB7XG5cdHJldHVybiAyLjAgKiByZ2IueHl6IC0gMS4wO1xufVxuY29uc3QgZmxvYXQgUGFja1Vwc2NhbGUgPSAyNTYuIC8gMjU1Ljtjb25zdCBmbG9hdCBVbnBhY2tEb3duc2NhbGUgPSAyNTUuIC8gMjU2LjtcbmNvbnN0IHZlYzMgUGFja0ZhY3RvcnMgPSB2ZWMzKCAyNTYuICogMjU2LiAqIDI1Ni4sIDI1Ni4gKiAyNTYuLCAyNTYuICk7XG5jb25zdCB2ZWM0IFVucGFja0ZhY3RvcnMgPSBVbnBhY2tEb3duc2NhbGUgLyB2ZWM0KCBQYWNrRmFjdG9ycywgMS4gKTtcbmNvbnN0IGZsb2F0IFNoaWZ0UmlnaHQ4ID0gMS4gLyAyNTYuO1xudmVjNCBwYWNrRGVwdGhUb1JHQkEoIGNvbnN0IGluIGZsb2F0IHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIGZyYWN0KCB2ICogUGFja0ZhY3RvcnMgKSwgdiApO1xuXHRyLnl6dyAtPSByLnh5eiAqIFNoaWZ0UmlnaHQ4O1x0cmV0dXJuIHIgKiBQYWNrVXBzY2FsZTtcbn1cbmZsb2F0IHVucGFja1JHQkFUb0RlcHRoKCBjb25zdCBpbiB2ZWM0IHYgKSB7XG5cdHJldHVybiBkb3QoIHYsIFVucGFja0ZhY3RvcnMgKTtcbn1cbnZlYzQgcGFjazJIYWxmVG9SR0JBKCB2ZWMyIHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIHYueCwgZnJhY3QoIHYueCAqIDI1NS4wICksIHYueSwgZnJhY3QoIHYueSAqIDI1NS4wICkgKTtcblx0cmV0dXJuIHZlYzQoIHIueCAtIHIueSAvIDI1NS4wLCByLnksIHIueiAtIHIudyAvIDI1NS4wLCByLncgKTtcbn1cbnZlYzIgdW5wYWNrUkdCQVRvMkhhbGYoIHZlYzQgdiApIHtcblx0cmV0dXJuIHZlYzIoIHYueCArICggdi55IC8gMjU1LjAgKSwgdi56ICsgKCB2LncgLyAyNTUuMCApICk7XG59XG5mbG9hdCB2aWV3WlRvT3J0aG9ncmFwaGljRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIHZpZXdaICsgbmVhciApIC8gKCBuZWFyIC0gZmFyICk7XG59XG5mbG9hdCBvcnRob2dyYXBoaWNEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGxpbmVhckNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiBsaW5lYXJDbGlwWiAqICggbmVhciAtIGZhciApIC0gbmVhcjtcbn1cbmZsb2F0IHZpZXdaVG9QZXJzcGVjdGl2ZURlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCAoIG5lYXIgKyB2aWV3WiApICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogdmlld1ogKTtcbn1cbmZsb2F0IHBlcnNwZWN0aXZlRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBpbnZDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCBuZWFyICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogaW52Q2xpcFogLSBmYXIgKTtcbn0iLHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ6IiNpZmRlZiBQUkVNVUxUSVBMSUVEX0FMUEhBXG5cdGdsX0ZyYWdDb2xvci5yZ2IgKj0gZ2xfRnJhZ0NvbG9yLmE7XG4jZW5kaWYiLHByb2plY3RfdmVydGV4OiJ2ZWM0IG12UG9zaXRpb24gPSB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0bXZQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogbXZQb3NpdGlvbjtcbiNlbmRpZlxubXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIG12UG9zaXRpb247XG5nbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uOyIsZGl0aGVyaW5nX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSBkaXRoZXJpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBESVRIRVJJTkdcblx0dmVjMyBkaXRoZXJpbmcoIHZlYzMgY29sb3IgKSB7XG5cdFx0ZmxvYXQgZ3JpZF9wb3NpdGlvbiA9IHJhbmQoIGdsX0ZyYWdDb29yZC54eSApO1xuXHRcdHZlYzMgZGl0aGVyX3NoaWZ0X1JHQiA9IHZlYzMoIDAuMjUgLyAyNTUuMCwgLTAuMjUgLyAyNTUuMCwgMC4yNSAvIDI1NS4wICk7XG5cdFx0ZGl0aGVyX3NoaWZ0X1JHQiA9IG1peCggMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgLTIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIGdyaWRfcG9zaXRpb24gKTtcblx0XHRyZXR1cm4gY29sb3IgKyBkaXRoZXJfc2hpZnRfUkdCO1xuXHR9XG4jZW5kaWYiLHJvdWdobmVzc21hcF9mcmFnbWVudDoiZmxvYXQgcm91Z2huZXNzRmFjdG9yID0gcm91Z2huZXNzO1xuI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dmVjNCB0ZXhlbFJvdWdobmVzcyA9IHRleHR1cmUyRCggcm91Z2huZXNzTWFwLCB2VXYgKTtcblx0cm91Z2huZXNzRmFjdG9yICo9IHRleGVsUm91Z2huZXNzLmc7XG4jZW5kaWYiLHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCByb3VnaG5lc3NNYXA7XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNwb3RTaGFkb3dNYXBbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBTcG90TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgcG9pbnRTaGFkb3dNYXBbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBQb2ludExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYUZhcjtcblx0XHR9O1xuXHRcdHVuaWZvcm0gUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93c1sgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdGZsb2F0IHRleHR1cmUyRENvbXBhcmUoIHNhbXBsZXIyRCBkZXB0aHMsIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKSB7XG5cdFx0cmV0dXJuIHN0ZXAoIGNvbXBhcmUsIHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIGRlcHRocywgdXYgKSApICk7XG5cdH1cblx0dmVjMiB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYgKSB7XG5cdFx0cmV0dXJuIHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvdywgdXYgKSApO1xuXHR9XG5cdGZsb2F0IFZTTVNoYWRvdyAoc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diwgZmxvYXQgY29tcGFyZSApe1xuXHRcdGZsb2F0IG9jY2x1c2lvbiA9IDEuMDtcblx0XHR2ZWMyIGRpc3RyaWJ1dGlvbiA9IHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2hhZG93LCB1diApO1xuXHRcdGZsb2F0IGhhcmRfc2hhZG93ID0gc3RlcCggY29tcGFyZSAsIGRpc3RyaWJ1dGlvbi54ICk7XG5cdFx0aWYgKGhhcmRfc2hhZG93ICE9IDEuMCApIHtcblx0XHRcdGZsb2F0IGRpc3RhbmNlID0gY29tcGFyZSAtIGRpc3RyaWJ1dGlvbi54IDtcblx0XHRcdGZsb2F0IHZhcmlhbmNlID0gbWF4KCAwLjAwMDAwLCBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICk7XG5cdFx0XHRmbG9hdCBzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IHZhcmlhbmNlIC8gKHZhcmlhbmNlICsgZGlzdGFuY2UgKiBkaXN0YW5jZSApO1x0XHRcdHNvZnRuZXNzX3Byb2JhYmlsaXR5ID0gY2xhbXAoICggc29mdG5lc3NfcHJvYmFiaWxpdHkgLSAwLjMgKSAvICggMC45NSAtIDAuMyApLCAwLjAsIDEuMCApO1x0XHRcdG9jY2x1c2lvbiA9IGNsYW1wKCBtYXgoIGhhcmRfc2hhZG93LCBzb2Z0bmVzc19wcm9iYWJpbGl0eSApLCAwLjAsIDEuMCApO1xuXHRcdH1cblx0XHRyZXR1cm4gb2NjbHVzaW9uO1xuXHR9XG5cdGZsb2F0IGdldFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQgKSB7XG5cdFx0ZmxvYXQgc2hhZG93ID0gMS4wO1xuXHRcdHNoYWRvd0Nvb3JkLnh5eiAvPSBzaGFkb3dDb29yZC53O1xuXHRcdHNoYWRvd0Nvb3JkLnogKz0gc2hhZG93Qmlhcztcblx0XHRidmVjNCBpbkZydXN0dW1WZWMgPSBidmVjNCAoIHNoYWRvd0Nvb3JkLnggPj0gMC4wLCBzaGFkb3dDb29yZC54IDw9IDEuMCwgc2hhZG93Q29vcmQueSA+PSAwLjAsIHNoYWRvd0Nvb3JkLnkgPD0gMS4wICk7XG5cdFx0Ym9vbCBpbkZydXN0dW0gPSBhbGwoIGluRnJ1c3R1bVZlYyApO1xuXHRcdGJ2ZWMyIGZydXN0dW1UZXN0VmVjID0gYnZlYzIoIGluRnJ1c3R1bSwgc2hhZG93Q29vcmQueiA8PSAxLjAgKTtcblx0XHRib29sIGZydXN0dW1UZXN0ID0gYWxsKCBmcnVzdHVtVGVzdFZlYyApO1xuXHRcdGlmICggZnJ1c3R1bVRlc3QgKSB7XG5cdFx0I2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4MCA9IC0gdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTAgPSAtIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgxID0gKyB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MSA9ICsgdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeDIgPSBkeDAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTIgPSBkeTAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeDMgPSBkeDEgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTMgPSBkeTEgLyAyLjA7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MSApLCBzaGFkb3dDb29yZC56IClcblx0XHRcdCkgKiAoIDEuMCAvIDE3LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4ID0gdGV4ZWxTaXplLng7XG5cdFx0XHRmbG9hdCBkeSA9IHRleGVsU2l6ZS55O1xuXHRcdFx0dmVjMiB1diA9IHNoYWRvd0Nvb3JkLnh5O1xuXHRcdFx0dmVjMiBmID0gZnJhY3QoIHV2ICogc2hhZG93TWFwU2l6ZSArIDAuNSApO1xuXHRcdFx0dXYgLT0gZiAqIHRleGVsU2l6ZTtcblx0XHRcdHNoYWRvdyA9IChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgZHkgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHRleGVsU2l6ZSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnggKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueCApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnkgKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueSApICtcblx0XHRcdFx0bWl4KCBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdFx0ICB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0XHQgIGYueCApLFxuXHRcdFx0XHRcdCBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0XHQgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdFx0ICBmLnggKSxcblx0XHRcdFx0XHQgZi55IClcblx0XHRcdCkgKiAoIDEuMCAvIDkuMCApO1xuXHRcdCNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHRzaGFkb3cgPSBWU01TaGFkb3coIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZWxzZVxuXHRcdFx0c2hhZG93ID0gdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApO1xuXHRcdCNlbmRpZlxuXHRcdH1cblx0XHRyZXR1cm4gc2hhZG93O1xuXHR9XG5cdHZlYzIgY3ViZVRvVVYoIHZlYzMgdiwgZmxvYXQgdGV4ZWxTaXplWSApIHtcblx0XHR2ZWMzIGFic1YgPSBhYnMoIHYgKTtcblx0XHRmbG9hdCBzY2FsZVRvQ3ViZSA9IDEuMCAvIG1heCggYWJzVi54LCBtYXgoIGFic1YueSwgYWJzVi56ICkgKTtcblx0XHRhYnNWICo9IHNjYWxlVG9DdWJlO1xuXHRcdHYgKj0gc2NhbGVUb0N1YmUgKiAoIDEuMCAtIDIuMCAqIHRleGVsU2l6ZVkgKTtcblx0XHR2ZWMyIHBsYW5hciA9IHYueHk7XG5cdFx0ZmxvYXQgYWxtb3N0QVRleGVsID0gMS41ICogdGV4ZWxTaXplWTtcblx0XHRmbG9hdCBhbG1vc3RPbmUgPSAxLjAgLSBhbG1vc3RBVGV4ZWw7XG5cdFx0aWYgKCBhYnNWLnogPj0gYWxtb3N0T25lICkge1xuXHRcdFx0aWYgKCB2LnogPiAwLjAgKVxuXHRcdFx0XHRwbGFuYXIueCA9IDQuMCAtIHYueDtcblx0XHR9IGVsc2UgaWYgKCBhYnNWLnggPj0gYWxtb3N0T25lICkge1xuXHRcdFx0ZmxvYXQgc2lnblggPSBzaWduKCB2LnggKTtcblx0XHRcdHBsYW5hci54ID0gdi56ICogc2lnblggKyAyLjAgKiBzaWduWDtcblx0XHR9IGVsc2UgaWYgKCBhYnNWLnkgPj0gYWxtb3N0T25lICkge1xuXHRcdFx0ZmxvYXQgc2lnblkgPSBzaWduKCB2LnkgKTtcblx0XHRcdHBsYW5hci54ID0gdi54ICsgMi4wICogc2lnblkgKyAyLjA7XG5cdFx0XHRwbGFuYXIueSA9IHYueiAqIHNpZ25ZIC0gMi4wO1xuXHRcdH1cblx0XHRyZXR1cm4gdmVjMiggMC4xMjUsIDAuMjUgKSAqIHBsYW5hciArIHZlYzIoIDAuMzc1LCAwLjc1ICk7XG5cdH1cblx0ZmxvYXQgZ2V0UG9pbnRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkLCBmbG9hdCBzaGFkb3dDYW1lcmFOZWFyLCBmbG9hdCBzaGFkb3dDYW1lcmFGYXIgKSB7XG5cdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvICggc2hhZG93TWFwU2l6ZSAqIHZlYzIoIDQuMCwgMi4wICkgKTtcblx0XHR2ZWMzIGxpZ2h0VG9Qb3NpdGlvbiA9IHNoYWRvd0Nvb3JkLnh5ejtcblx0XHRmbG9hdCBkcCA9ICggbGVuZ3RoKCBsaWdodFRvUG9zaXRpb24gKSAtIHNoYWRvd0NhbWVyYU5lYXIgKSAvICggc2hhZG93Q2FtZXJhRmFyIC0gc2hhZG93Q2FtZXJhTmVhciApO1x0XHRkcCArPSBzaGFkb3dCaWFzO1xuXHRcdHZlYzMgYmQzRCA9IG5vcm1hbGl6ZSggbGlnaHRUb1Bvc2l0aW9uICk7XG5cdFx0I2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRl9TT0ZUICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfVlNNIClcblx0XHRcdHZlYzIgb2Zmc2V0ID0gdmVjMiggLSAxLCAxICkgKiBzaGFkb3dSYWRpdXMgKiB0ZXhlbFNpemUueTtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eXksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh4LCB0ZXhlbFNpemUueSApLCBkcCApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxzZVxuXHRcdFx0cmV0dXJuIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICk7XG5cdFx0I2VuZGlmXG5cdH1cbiNlbmRpZiIsc2hhZG93bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgc3BvdFNoYWRvd01hdHJpeFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFNwb3RMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgcG9pbnRTaGFkb3dNYXRyaXhbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBQb2ludExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYUZhcjtcblx0XHR9O1xuXHRcdHVuaWZvcm0gUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93c1sgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG4jZW5kaWYiLHNoYWRvd21hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHZlYzMgc2hhZG93V29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdHZlYzQgc2hhZG93V29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdID0gZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHNwb3RMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dlNwb3RTaGFkb3dDb29yZFsgaSBdID0gc3BvdFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBwb2ludExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2UG9pbnRTaGFkb3dDb29yZFsgaSBdID0gcG9pbnRTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG4jZW5kaWYiLHNoYWRvd21hc2tfcGFyc19mcmFnbWVudDoiZmxvYXQgZ2V0U2hhZG93TWFzaygpIHtcblx0ZmxvYXQgc2hhZG93ID0gMS4wO1xuXHQjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHREaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodC5zaGFkb3dCaWFzLCBzcG90TGlnaHQuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0LnNoYWRvd0JpYXMsIHBvaW50TGlnaHQuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNlbmRpZlxuXHRyZXR1cm4gc2hhZG93O1xufSIsc2tpbmJhc2VfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdG1hdDQgYm9uZU1hdFggPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueCApO1xuXHRtYXQ0IGJvbmVNYXRZID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnkgKTtcblx0bWF0NCBib25lTWF0WiA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC56ICk7XG5cdG1hdDQgYm9uZU1hdFcgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgudyApO1xuI2VuZGlmIixza2lubmluZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeDtcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXhJbnZlcnNlO1xuXHQjaWZkZWYgQk9ORV9URVhUVVJFXG5cdFx0dW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgYm9uZVRleHR1cmU7XG5cdFx0dW5pZm9ybSBpbnQgYm9uZVRleHR1cmVTaXplO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdGZsb2F0IGogPSBpICogNC4wO1xuXHRcdFx0ZmxvYXQgeCA9IG1vZCggaiwgZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCB5ID0gZmxvb3IoIGogLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcblx0XHRcdGZsb2F0IGR4ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0ZmxvYXQgZHkgPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XG5cdFx0XHR5ID0gZHkgKiAoIHkgKyAwLjUgKTtcblx0XHRcdHZlYzQgdjEgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDAuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjIgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDEuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjMgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDIuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjQgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDMuNSApLCB5ICkgKTtcblx0XHRcdG1hdDQgYm9uZSA9IG1hdDQoIHYxLCB2MiwgdjMsIHY0ICk7XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBtYXQ0IGJvbmVNYXRyaWNlc1sgTUFYX0JPTkVTIF07XG5cdFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xuXHRcdFx0bWF0NCBib25lID0gYm9uZU1hdHJpY2VzWyBpbnQoaSkgXTtcblx0XHRcdHJldHVybiBib25lO1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWYiLHNraW5uaW5nX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHR2ZWM0IHNraW5WZXJ0ZXggPSBiaW5kTWF0cml4ICogdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHR2ZWM0IHNraW5uZWQgPSB2ZWM0KCAwLjAgKTtcblx0c2tpbm5lZCArPSBib25lTWF0WCAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lng7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFkgKiBza2luVmVydGV4ICogc2tpbldlaWdodC55O1xuXHRza2lubmVkICs9IGJvbmVNYXRaICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQuejtcblx0c2tpbm5lZCArPSBib25lTWF0VyAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnc7XG5cdHRyYW5zZm9ybWVkID0gKCBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5uZWQgKS54eXo7XG4jZW5kaWYiLHNraW5ub3JtYWxfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdG1hdDQgc2tpbk1hdHJpeCA9IG1hdDQoIDAuMCApO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueCAqIGJvbmVNYXRYO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueSAqIGJvbmVNYXRZO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueiAqIGJvbmVNYXRaO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQudyAqIGJvbmVNYXRXO1xuXHRza2luTWF0cml4ID0gYmluZE1hdHJpeEludmVyc2UgKiBza2luTWF0cml4ICogYmluZE1hdHJpeDtcblx0b2JqZWN0Tm9ybWFsID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdE5vcm1hbCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG9iamVjdFRhbmdlbnQgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNlbmRpZlxuI2VuZGlmIixzcGVjdWxhcm1hcF9mcmFnbWVudDoiZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDtcbiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcblx0dmVjNCB0ZXhlbFNwZWN1bGFyID0gdGV4dHVyZTJEKCBzcGVjdWxhck1hcCwgdlV2ICk7XG5cdHNwZWN1bGFyU3RyZW5ndGggPSB0ZXhlbFNwZWN1bGFyLnI7XG4jZWxzZVxuXHRzcGVjdWxhclN0cmVuZ3RoID0gMS4wO1xuI2VuZGlmIixzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFyTWFwO1xuI2VuZGlmIix0b25lbWFwcGluZ19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFRPTkVfTUFQUElORyApXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSB0b25lTWFwcGluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xuI2VuZGlmIix0b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiIjaWZuZGVmIHNhdHVyYXRlXG4jZGVmaW5lIHNhdHVyYXRlKCBhICkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxudW5pZm9ybSBmbG9hdCB0b25lTWFwcGluZ0V4cG9zdXJlO1xudmVjMyBMaW5lYXJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0cmV0dXJuIHRvbmVNYXBwaW5nRXhwb3N1cmUgKiBjb2xvcjtcbn1cbnZlYzMgUmVpbmhhcmRUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcblx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciAvICggdmVjMyggMS4wICkgKyBjb2xvciApICk7XG59XG52ZWMzIE9wdGltaXplZENpbmVvblRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlO1xuXHRjb2xvciA9IG1heCggdmVjMyggMC4wICksIGNvbG9yIC0gMC4wMDQgKTtcblx0cmV0dXJuIHBvdyggKCBjb2xvciAqICggNi4yICogY29sb3IgKyAwLjUgKSApIC8gKCBjb2xvciAqICggNi4yICogY29sb3IgKyAxLjcgKSArIDAuMDYgKSwgdmVjMyggMi4yICkgKTtcbn1cbnZlYzMgUlJUQW5kT0RURml0KCB2ZWMzIHYgKSB7XG5cdHZlYzMgYSA9IHYgKiAoIHYgKyAwLjAyNDU3ODYgKSAtIDAuMDAwMDkwNTM3O1xuXHR2ZWMzIGIgPSB2ICogKCAwLjk4MzcyOSAqIHYgKyAwLjQzMjk1MTAgKSArIDAuMjM4MDgxO1xuXHRyZXR1cm4gYSAvIGI7XG59XG52ZWMzIEFDRVNGaWxtaWNUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29uc3QgbWF0MyBBQ0VTSW5wdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoIDAuNTk3MTksIDAuMDc2MDAsIDAuMDI4NDAgKSxcdFx0dmVjMyggMC4zNTQ1OCwgMC45MDgzNCwgMC4xMzM4MyApLFxuXHRcdHZlYzMoIDAuMDQ4MjMsIDAuMDE1NjYsIDAuODM3NzcgKVxuXHQpO1xuXHRjb25zdCBtYXQzIEFDRVNPdXRwdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoICAxLjYwNDc1LCAtMC4xMDIwOCwgLTAuMDAzMjcgKSxcdFx0dmVjMyggLTAuNTMxMDgsICAxLjEwODEzLCAtMC4wNzI3NiApLFxuXHRcdHZlYzMoIC0wLjA3MzY3LCAtMC4wMDYwNSwgIDEuMDc2MDIgKVxuXHQpO1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlIC8gMC42O1xuXHRjb2xvciA9IEFDRVNJbnB1dE1hdCAqIGNvbG9yO1xuXHRjb2xvciA9IFJSVEFuZE9EVEZpdCggY29sb3IgKTtcblx0Y29sb3IgPSBBQ0VTT3V0cHV0TWF0ICogY29sb3I7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgKTtcbn1cbnZlYzMgQ3VzdG9tVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7IHJldHVybiBjb2xvcjsgfSIsdHJhbnNtaXNzaW9uX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHRmbG9hdCB0cmFuc21pc3Npb25BbHBoYSA9IDEuMDtcblx0ZmxvYXQgdHJhbnNtaXNzaW9uRmFjdG9yID0gdHJhbnNtaXNzaW9uO1xuXHRmbG9hdCB0aGlja25lc3NGYWN0b3IgPSB0aGlja25lc3M7XG5cdCNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG5cdFx0dHJhbnNtaXNzaW9uRmFjdG9yICo9IHRleHR1cmUyRCggdHJhbnNtaXNzaW9uTWFwLCB2VXYgKS5yO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9USElDS05FU1NNQVBcblx0XHR0aGlja25lc3NGYWN0b3IgKj0gdGV4dHVyZTJEKCB0aGlja25lc3NNYXAsIHZVdiApLmc7XG5cdCNlbmRpZlxuXHR2ZWMzIHBvcyA9IHZXb3JsZFBvc2l0aW9uO1xuXHR2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7XG5cdHZlYzMgbiA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHR2ZWM0IHRyYW5zbWlzc2lvbiA9IGdldElCTFZvbHVtZVJlZnJhY3Rpb24oXG5cdFx0biwgdiwgcm91Z2huZXNzRmFjdG9yLCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyRjkwLFxuXHRcdHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIGlvciwgdGhpY2tuZXNzRmFjdG9yLFxuXHRcdGF0dGVudWF0aW9uQ29sb3IsIGF0dGVudWF0aW9uRGlzdGFuY2UgKTtcblx0dG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbi5yZ2IsIHRyYW5zbWlzc2lvbkZhY3RvciApO1xuXHR0cmFuc21pc3Npb25BbHBoYSA9IG1peCggdHJhbnNtaXNzaW9uQWxwaGEsIHRyYW5zbWlzc2lvbi5hLCB0cmFuc21pc3Npb25GYWN0b3IgKTtcbiNlbmRpZiIsdHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHVuaWZvcm0gZmxvYXQgdHJhbnNtaXNzaW9uO1xuXHR1bmlmb3JtIGZsb2F0IHRoaWNrbmVzcztcblx0dW5pZm9ybSBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlO1xuXHR1bmlmb3JtIHZlYzMgYXR0ZW51YXRpb25Db2xvcjtcblx0I2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25NYXA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RISUNLTkVTU01BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHRoaWNrbmVzc01hcDtcblx0I2VuZGlmXG5cdHVuaWZvcm0gdmVjMiB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uU2FtcGxlck1hcDtcblx0dW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4O1xuXHR1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDtcblx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHR2ZWMzIGdldFZvbHVtZVRyYW5zbWlzc2lvblJheSggY29uc3QgaW4gdmVjMyBuLCBjb25zdCBpbiB2ZWMzIHYsIGNvbnN0IGluIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgaW4gZmxvYXQgaW9yLCBjb25zdCBpbiBtYXQ0IG1vZGVsTWF0cml4ICkge1xuXHRcdHZlYzMgcmVmcmFjdGlvblZlY3RvciA9IHJlZnJhY3QoIC0gdiwgbm9ybWFsaXplKCBuICksIDEuMCAvIGlvciApO1xuXHRcdHZlYzMgbW9kZWxTY2FsZTtcblx0XHRtb2RlbFNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueHl6ICkgKTtcblx0XHRtb2RlbFNjYWxlLnkgPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAxIF0ueHl6ICkgKTtcblx0XHRtb2RlbFNjYWxlLnogPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAyIF0ueHl6ICkgKTtcblx0XHRyZXR1cm4gbm9ybWFsaXplKCByZWZyYWN0aW9uVmVjdG9yICkgKiB0aGlja25lc3MgKiBtb2RlbFNjYWxlO1xuXHR9XG5cdGZsb2F0IGFwcGx5SW9yVG9Sb3VnaG5lc3MoIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgaW9yICkge1xuXHRcdHJldHVybiByb3VnaG5lc3MgKiBjbGFtcCggaW9yICogMi4wIC0gMi4wLCAwLjAsIDEuMCApO1xuXHR9XG5cdHZlYzQgZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKCBjb25zdCBpbiB2ZWMyIGZyYWdDb29yZCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBmbG9hdCBpb3IgKSB7XG5cdFx0ZmxvYXQgZnJhbWVidWZmZXJMb2QgPSBsb2cyKCB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZS54ICkgKiBhcHBseUlvclRvUm91Z2huZXNzKCByb3VnaG5lc3MsIGlvciApO1xuXHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdHJldHVybiB0ZXh0dXJlMkRMb2RFWFQoIHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QgKTtcblx0XHQjZWxzZVxuXHRcdFx0cmV0dXJuIHRleHR1cmUyRCggdHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCApO1xuXHRcdCNlbmRpZlxuXHR9XG5cdHZlYzMgYXBwbHlWb2x1bWVBdHRlbnVhdGlvbiggY29uc3QgaW4gdmVjMyByYWRpYW5jZSwgY29uc3QgaW4gZmxvYXQgdHJhbnNtaXNzaW9uRGlzdGFuY2UsIGNvbnN0IGluIHZlYzMgYXR0ZW51YXRpb25Db2xvciwgY29uc3QgaW4gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSApIHtcblx0XHRpZiAoIGF0dGVudWF0aW9uRGlzdGFuY2UgPT0gMC4wICkge1xuXHRcdFx0cmV0dXJuIHJhZGlhbmNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2ZWMzIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgPSAtbG9nKCBhdHRlbnVhdGlvbkNvbG9yICkgLyBhdHRlbnVhdGlvbkRpc3RhbmNlO1xuXHRcdFx0dmVjMyB0cmFuc21pdHRhbmNlID0gZXhwKCAtIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgKiB0cmFuc21pc3Npb25EaXN0YW5jZSApO1x0XHRcdHJldHVybiB0cmFuc21pdHRhbmNlICogcmFkaWFuY2U7XG5cdFx0fVxuXHR9XG5cdHZlYzQgZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbiggY29uc3QgaW4gdmVjMyBuLCBjb25zdCBpbiB2ZWMzIHYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IsXG5cdFx0Y29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzcGVjdWxhckY5MCwgY29uc3QgaW4gdmVjMyBwb3NpdGlvbiwgY29uc3QgaW4gbWF0NCBtb2RlbE1hdHJpeCxcblx0XHRjb25zdCBpbiBtYXQ0IHZpZXdNYXRyaXgsIGNvbnN0IGluIG1hdDQgcHJvak1hdHJpeCwgY29uc3QgaW4gZmxvYXQgaW9yLCBjb25zdCBpbiBmbG9hdCB0aGlja25lc3MsXG5cdFx0Y29uc3QgaW4gdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlICkge1xuXHRcdHZlYzMgdHJhbnNtaXNzaW9uUmF5ID0gZ2V0Vm9sdW1lVHJhbnNtaXNzaW9uUmF5KCBuLCB2LCB0aGlja25lc3MsIGlvciwgbW9kZWxNYXRyaXggKTtcblx0XHR2ZWMzIHJlZnJhY3RlZFJheUV4aXQgPSBwb3NpdGlvbiArIHRyYW5zbWlzc2lvblJheTtcblx0XHR2ZWM0IG5kY1BvcyA9IHByb2pNYXRyaXggKiB2aWV3TWF0cml4ICogdmVjNCggcmVmcmFjdGVkUmF5RXhpdCwgMS4wICk7XG5cdFx0dmVjMiByZWZyYWN0aW9uQ29vcmRzID0gbmRjUG9zLnh5IC8gbmRjUG9zLnc7XG5cdFx0cmVmcmFjdGlvbkNvb3JkcyArPSAxLjA7XG5cdFx0cmVmcmFjdGlvbkNvb3JkcyAvPSAyLjA7XG5cdFx0dmVjNCB0cmFuc21pdHRlZExpZ2h0ID0gZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKCByZWZyYWN0aW9uQ29vcmRzLCByb3VnaG5lc3MsIGlvciApO1xuXHRcdHZlYzMgYXR0ZW51YXRlZENvbG9yID0gYXBwbHlWb2x1bWVBdHRlbnVhdGlvbiggdHJhbnNtaXR0ZWRMaWdodC5yZ2IsIGxlbmd0aCggdHJhbnNtaXNzaW9uUmF5ICksIGF0dGVudWF0aW9uQ29sb3IsIGF0dGVudWF0aW9uRGlzdGFuY2UgKTtcblx0XHR2ZWMzIEYgPSBFbnZpcm9ubWVudEJSREYoIG4sIHYsIHNwZWN1bGFyQ29sb3IsIHNwZWN1bGFyRjkwLCByb3VnaG5lc3MgKTtcblx0XHRyZXR1cm4gdmVjNCggKCAxLjAgLSBGICkgKiBhdHRlbnVhdGVkQ29sb3IgKiBkaWZmdXNlQ29sb3IsIHRyYW5zbWl0dGVkTGlnaHQuYSApO1xuXHR9XG4jZW5kaWYiLHV2X3BhcnNfZnJhZ21lbnQ6IiNpZiAoIGRlZmluZWQoIFVTRV9VViApICYmICEgZGVmaW5lZCggVVZTX1ZFUlRFWF9PTkxZICkgKVxuXHR2YXJ5aW5nIHZlYzIgdlV2O1xuI2VuZGlmIix1dl9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHQjaWZkZWYgVVZTX1ZFUlRFWF9PTkxZXG5cdFx0dmVjMiB2VXY7XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMyIHZVdjtcblx0I2VuZGlmXG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZiIsdXZfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdHZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XG4jZW5kaWYiLHV2Ml9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG4jZW5kaWYiLHV2Ml9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdGF0dHJpYnV0ZSB2ZWMyIHV2Mjtcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG5cdHVuaWZvcm0gbWF0MyB1djJUcmFuc2Zvcm07XG4jZW5kaWYiLHV2Ml92ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHR2VXYyID0gKCB1djJUcmFuc2Zvcm0gKiB2ZWMzKCB1djIsIDEgKSApLnh5O1xuI2VuZGlmIix3b3JsZHBvc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCggRElTVEFOQ0UgKSB8fCBkZWZpbmVkICggVVNFX1NIQURPV01BUCApIHx8IGRlZmluZWQgKCBVU0VfVFJBTlNNSVNTSU9OIClcblx0dmVjNCB3b3JsZFBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHQjaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0XHR3b3JsZFBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiB3b3JsZFBvc2l0aW9uO1xuXHQjZW5kaWZcblx0d29ybGRQb3NpdGlvbiA9IG1vZGVsTWF0cml4ICogd29ybGRQb3NpdGlvbjtcbiNlbmRpZiIsYmFja2dyb3VuZF92ZXJ0OiJ2YXJ5aW5nIHZlYzIgdlV2O1xudW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xudm9pZCBtYWluKCkge1xuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuXHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLnh5LCAxLjAsIDEuMCApO1xufSIsYmFja2dyb3VuZF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0MkQ7XG52YXJ5aW5nIHZlYzIgdlV2O1xudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHQyRCwgdlV2ICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGN1YmVfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0Z2xfUG9zaXRpb24ueiA9IGdsX1Bvc2l0aW9uLnc7XG59IixjdWJlX2ZyYWc6IiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyB2UmVmbGVjdCA9IHZXb3JsZERpcmVjdGlvbjtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gZW52Q29sb3I7XG5cdGdsX0ZyYWdDb2xvci5hICo9IG9wYWNpdHk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGRlcHRoX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dkhpZ2hQcmVjaXNpb25aVyA9IGdsX1Bvc2l0aW9uLnp3O1xufSIsZGVwdGhfZnJhZzoiI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0ZGlmZnVzZUNvbG9yLmEgPSBvcGFjaXR5O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdGZsb2F0IGZyYWdDb29yZFogPSAwLjUgKiB2SGlnaFByZWNpc2lvblpXWzBdIC8gdkhpZ2hQcmVjaXNpb25aV1sxXSArIDAuNTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHZlYzMoIDEuMCAtIGZyYWdDb29yZFogKSwgb3BhY2l0eSApO1xuXHQjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDFcblx0XHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGZyYWdDb29yZFogKTtcblx0I2VuZGlmXG59IixkaXN0YW5jZVJHQkFfdmVydDoiI2RlZmluZSBESVNUQU5DRVxudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcbn0iLGRpc3RhbmNlUkdCQV9mcmFnOiIjZGVmaW5lIERJU1RBTkNFXG51bmlmb3JtIHZlYzMgcmVmZXJlbmNlUG9zaXRpb247XG51bmlmb3JtIGZsb2F0IG5lYXJEaXN0YW5jZTtcbnVuaWZvcm0gZmxvYXQgZmFyRGlzdGFuY2U7XG52YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluICgpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRmbG9hdCBkaXN0ID0gbGVuZ3RoKCB2V29ybGRQb3NpdGlvbiAtIHJlZmVyZW5jZVBvc2l0aW9uICk7XG5cdGRpc3QgPSAoIGRpc3QgLSBuZWFyRGlzdGFuY2UgKSAvICggZmFyRGlzdGFuY2UgLSBuZWFyRGlzdGFuY2UgKTtcblx0ZGlzdCA9IHNhdHVyYXRlKCBkaXN0ICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZGlzdCApO1xufSIsZXF1aXJlY3RfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbn0iLGVxdWlyZWN0X2ZyYWc6InVuaWZvcm0gc2FtcGxlcjJEIHRFcXVpcmVjdDtcbnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7XG5cdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblx0Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCB0RXF1aXJlY3QsIHNhbXBsZVVWICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGxpbmVkYXNoZWRfdmVydDoidW5pZm9ybSBmbG9hdCBzY2FsZTtcbmF0dHJpYnV0ZSBmbG9hdCBsaW5lRGlzdGFuY2U7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdHZMaW5lRGlzdGFuY2UgPSBzY2FsZSAqIGxpbmVEaXN0YW5jZTtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixsaW5lZGFzaGVkX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBmbG9hdCBkYXNoU2l6ZTtcbnVuaWZvcm0gZmxvYXQgdG90YWxTaXplO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdGlmICggbW9kKCB2TGluZURpc3RhbmNlLCB0b3RhbFNpemUgKSA+IGRhc2hTaXplICkge1xuXHRcdGRpc2NhcmQ7XG5cdH1cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdCNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG59IixtZXNoYmFzaWNfdmVydDoiI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaWYgZGVmaW5lZCAoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkICggVVNFX1NLSU5OSU5HIClcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaGJhc2ljX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBUZXhlbC5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdmVjMyggMS4wICk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBkaWZmdXNlQ29sb3IucmdiO1xuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNobGFtYmVydF92ZXJ0OiIjZGVmaW5lIExBTUJFUlRcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsaWdodHNfbGFtYmVydF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hsYW1iZXJ0X2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZMaWdodEZyb250O1xudmFyeWluZyB2ZWMzIHZJbmRpcmVjdEZyb250O1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2YXJ5aW5nIHZlYzMgdkxpZ2h0QmFjaztcblx0dmFyeWluZyB2ZWMzIHZJbmRpcmVjdEJhY2s7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2SW5kaXJlY3RGcm9udCA6IHZJbmRpcmVjdEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZJbmRpcmVjdEZyb250O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxpZ2h0bWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gQlJERl9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gKCBnbF9Gcm9udEZhY2luZyApID8gdkxpZ2h0RnJvbnQgOiB2TGlnaHRCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSB2TGlnaHRGcm9udDtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKj0gQlJERl9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICkgKiBnZXRTaGFkb3dNYXNrKCk7XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2htYXRjYXBfdmVydDoiI2RlZmluZSBNQVRDQVBcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbn0iLG1lc2htYXRjYXBfZnJhZzoiI2RlZmluZSBNQVRDQVBcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgbWF0Y2FwO1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHR2ZWMzIHZpZXdEaXIgPSBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcblx0dmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLSB2aWV3RGlyLnggKSApO1xuXHR2ZWMzIHkgPSBjcm9zcyggdmlld0RpciwgeCApO1xuXHR2ZWMyIHV2ID0gdmVjMiggZG90KCB4LCBub3JtYWwgKSwgZG90KCB5LCBub3JtYWwgKSApICogMC40OTUgKyAwLjU7XG5cdCNpZmRlZiBVU0VfTUFUQ0FQXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHRleHR1cmUyRCggbWF0Y2FwLCB1diApO1xuXHQjZWxzZVxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgPSB2ZWM0KCB2ZWMzKCBtaXgoIDAuMiwgMC44LCB1di55ICkgKSwgMS4wICk7XG5cdCNlbmRpZlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiICogbWF0Y2FwQ29sb3IucmdiO1xuXHQjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaG5vcm1hbF92ZXJ0OiIjZGVmaW5lIE5PUk1BTFxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbiNlbmRpZlxufSIsbWVzaG5vcm1hbF9mcmFnOiIjZGVmaW5lIE5PUk1BTFxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBwYWNrTm9ybWFsVG9SR0IoIG5vcm1hbCApLCBvcGFjaXR5ICk7XG59IixtZXNocGhvbmdfdmVydDoiI2RlZmluZSBQSE9OR1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaHBob25nX2ZyYWc6IiNkZWZpbmUgUEhPTkdcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSB2ZWMzIHNwZWN1bGFyO1xudW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waG9uZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBoeXNpY2FsX3ZlcnQ6IiNkZWZpbmUgU1RBTkRBUkRcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG4jZW5kaWZcbn0iLG1lc2hwaHlzaWNhbF9mcmFnOiIjZGVmaW5lIFNUQU5EQVJEXG4jaWZkZWYgUEhZU0lDQUxcblx0I2RlZmluZSBJT1Jcblx0I2RlZmluZSBTUEVDVUxBUlxuI2VuZGlmXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzO1xudW5pZm9ybSBmbG9hdCBtZXRhbG5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZkZWYgSU9SXG5cdHVuaWZvcm0gZmxvYXQgaW9yO1xuI2VuZGlmXG4jaWZkZWYgU1BFQ1VMQVJcblx0dW5pZm9ybSBmbG9hdCBzcGVjdWxhckludGVuc2l0eTtcblx0dW5pZm9ybSB2ZWMzIHNwZWN1bGFyQ29sb3I7XG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhckludGVuc2l0eU1hcDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJDT0xPUk1BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFyQ29sb3JNYXA7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVFxuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDtcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dW5pZm9ybSB2ZWMzIHNoZWVuQ29sb3I7XG5cdHVuaWZvcm0gZmxvYXQgc2hlZW5Sb3VnaG5lc3M7XG5cdCNpZmRlZiBVU0VfU0hFRU5DT0xPUk1BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNoZWVuQ29sb3JNYXA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NIRUVOUk9VR0hORVNTTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc2hlZW5Sb3VnaG5lc3NNYXA7XG5cdCNlbmRpZlxuI2VuZGlmXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGVhcmNvYXRfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHJvdWdobmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1ldGFsbmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgdG90YWxEaWZmdXNlID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0dmVjMyB0b3RhbFNwZWN1bGFyID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyO1xuXHQjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB0b3RhbERpZmZ1c2UgKyB0b3RhbFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaWZkZWYgVVNFX1NIRUVOXG5cdFx0ZmxvYXQgc2hlZW5FbmVyZ3lDb21wID0gMS4wIC0gMC4xNTcgKiBtYXgzKCBtYXRlcmlhbC5zaGVlbkNvbG9yICk7XG5cdFx0b3V0Z29pbmdMaWdodCA9IG91dGdvaW5nTGlnaHQgKiBzaGVlbkVuZXJneUNvbXAgKyBzaGVlblNwZWN1bGFyO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0XHRmbG9hdCBkb3ROVmNjID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0XHR2ZWMzIEZjYyA9IEZfU2NobGljayggbWF0ZXJpYWwuY2xlYXJjb2F0RjAsIG1hdGVyaWFsLmNsZWFyY29hdEY5MCwgZG90TlZjYyApO1xuXHRcdG91dGdvaW5nTGlnaHQgPSBvdXRnb2luZ0xpZ2h0ICogKCAxLjAgLSBtYXRlcmlhbC5jbGVhcmNvYXQgKiBGY2MgKSArIGNsZWFyY29hdFNwZWN1bGFyICogbWF0ZXJpYWwuY2xlYXJjb2F0O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2h0b29uX3ZlcnQ6IiNkZWZpbmUgVE9PTlxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2h0b29uX2ZyYWc6IiNkZWZpbmUgVE9PTlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Z3JhZGllbnRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfdG9vbl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIscG9pbnRzX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2l6ZTtcbnVuaWZvcm0gZmxvYXQgc2NhbGU7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0Z2xfUG9pbnRTaXplID0gc2l6ZTtcblx0I2lmZGVmIFVTRV9TSVpFQVRURU5VQVRJT05cblx0XHRib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7XG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlICkgZ2xfUG9pbnRTaXplICo9ICggc2NhbGUgLyAtIG12UG9zaXRpb24ueiApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIscG9pbnRzX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX3BhcnRpY2xlX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHQjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxufSIsc2hhZG93X3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsc2hhZG93X2ZyYWc6InVuaWZvcm0gdmVjMyBjb2xvcjtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIGNvbG9yLCBvcGFjaXR5ICogKCAxLjAgLSBnZXRTaGFkb3dNYXNrKCkgKSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59IixzcHJpdGVfdmVydDoidW5pZm9ybSBmbG9hdCByb3RhdGlvbjtcbnVuaWZvcm0gdmVjMiBjZW50ZXI7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHR2ZWMyIHNjYWxlO1xuXHRzY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLngsIG1vZGVsTWF0cml4WyAwIF0ueSwgbW9kZWxNYXRyaXhbIDAgXS56ICkgKTtcblx0c2NhbGUueSA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDEgXS54LCBtb2RlbE1hdHJpeFsgMSBdLnksIG1vZGVsTWF0cml4WyAxIF0ueiApICk7XG5cdCNpZm5kZWYgVVNFX1NJWkVBVFRFTlVBVElPTlxuXHRcdGJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTtcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmUgKSBzY2FsZSAqPSAtIG12UG9zaXRpb24uejtcblx0I2VuZGlmXG5cdHZlYzIgYWxpZ25lZFBvc2l0aW9uID0gKCBwb3NpdGlvbi54eSAtICggY2VudGVyIC0gdmVjMiggMC41ICkgKSApICogc2NhbGU7XG5cdHZlYzIgcm90YXRlZFBvc2l0aW9uO1xuXHRyb3RhdGVkUG9zaXRpb24ueCA9IGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi54IC0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnk7XG5cdHJvdGF0ZWRQb3NpdGlvbi55ID0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggKyBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0bXZQb3NpdGlvbi54eSArPSByb3RhdGVkUG9zaXRpb247XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNwcml0ZV9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHQjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59In0sTDZ0PXtjb21tb246e2RpZmZ1c2U6e3ZhbHVlOm5ldyAkNXQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxtYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgQjV0fSx1djJUcmFuc2Zvcm06e3ZhbHVlOm5ldyBCNXR9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSxhbHBoYVRlc3Q6e3ZhbHVlOjB9fSxzcGVjdWxhcm1hcDp7c3BlY3VsYXJNYXA6e3ZhbHVlOm51bGx9fSxlbnZtYXA6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9LHJlZmxlY3Rpdml0eTp7dmFsdWU6MX0saW9yOnt2YWx1ZToxLjV9LHJlZnJhY3Rpb25SYXRpbzp7dmFsdWU6Ljk4fX0sYW9tYXA6e2FvTWFwOnt2YWx1ZTpudWxsfSxhb01hcEludGVuc2l0eTp7dmFsdWU6MX19LGxpZ2h0bWFwOntsaWdodE1hcDp7dmFsdWU6bnVsbH0sbGlnaHRNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxlbWlzc2l2ZW1hcDp7ZW1pc3NpdmVNYXA6e3ZhbHVlOm51bGx9fSxidW1wbWFwOntidW1wTWFwOnt2YWx1ZTpudWxsfSxidW1wU2NhbGU6e3ZhbHVlOjF9fSxub3JtYWxtYXA6e25vcm1hbE1hcDp7dmFsdWU6bnVsbH0sbm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBENXQoMSwxKX19LGRpc3BsYWNlbWVudG1hcDp7ZGlzcGxhY2VtZW50TWFwOnt2YWx1ZTpudWxsfSxkaXNwbGFjZW1lbnRTY2FsZTp7dmFsdWU6MX0sZGlzcGxhY2VtZW50Qmlhczp7dmFsdWU6MH19LHJvdWdobmVzc21hcDp7cm91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfX0sbWV0YWxuZXNzbWFwOnttZXRhbG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxncmFkaWVudG1hcDp7Z3JhZGllbnRNYXA6e3ZhbHVlOm51bGx9fSxmb2c6e2ZvZ0RlbnNpdHk6e3ZhbHVlOjI1ZS01fSxmb2dOZWFyOnt2YWx1ZToxfSxmb2dGYXI6e3ZhbHVlOjJlM30sZm9nQ29sb3I6e3ZhbHVlOm5ldyAkNXQoMTY3NzcyMTUpfX0sbGlnaHRzOnthbWJpZW50TGlnaHRDb2xvcjp7dmFsdWU6W119LGxpZ2h0UHJvYmU6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LGNvbG9yOnt9fX0sZGlyZWN0aW9uYWxMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LGRpcmVjdGlvbmFsU2hhZG93TWFwOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxzcG90TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkaXJlY3Rpb246e30sZGlzdGFuY2U6e30sY29uZUNvczp7fSxwZW51bWJyYUNvczp7fSxkZWNheTp7fX19LHNwb3RMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LHNwb3RTaGFkb3dNYXA6e3ZhbHVlOltdfSxzcG90U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0scG9pbnRMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRlY2F5Ont9LGRpc3RhbmNlOnt9fX0scG9pbnRMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fSxzaGFkb3dDYW1lcmFOZWFyOnt9LHNoYWRvd0NhbWVyYUZhcjp7fX19LHBvaW50U2hhZG93TWFwOnt2YWx1ZTpbXX0scG9pbnRTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxoZW1pc3BoZXJlTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sc2t5Q29sb3I6e30sZ3JvdW5kQ29sb3I6e319fSxyZWN0QXJlYUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sd2lkdGg6e30saGVpZ2h0Ont9fX0sbHRjXzE6e3ZhbHVlOm51bGx9LGx0Y18yOnt2YWx1ZTpudWxsfX0scG9pbnRzOntkaWZmdXNlOnt2YWx1ZTpuZXcgJDV0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sc2l6ZTp7dmFsdWU6MX0sc2NhbGU6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LGFscGhhVGVzdDp7dmFsdWU6MH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBCNXR9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyAkNXQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBENXQoLjUsLjUpfSxyb3RhdGlvbjp7dmFsdWU6MH0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sYWxwaGFUZXN0Ont2YWx1ZTowfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IEI1dH19fSxJNnQ9e2Jhc2ljOnt1bmlmb3JtczpoNnQoW0w2dC5jb21tb24sTDZ0LnNwZWN1bGFybWFwLEw2dC5lbnZtYXAsTDZ0LmFvbWFwLEw2dC5saWdodG1hcCxMNnQuZm9nXSksdmVydGV4U2hhZGVyOlA2dC5tZXNoYmFzaWNfdmVydCxmcmFnbWVudFNoYWRlcjpQNnQubWVzaGJhc2ljX2ZyYWd9LGxhbWJlcnQ6e3VuaWZvcm1zOmg2dChbTDZ0LmNvbW1vbixMNnQuc3BlY3VsYXJtYXAsTDZ0LmVudm1hcCxMNnQuYW9tYXAsTDZ0LmxpZ2h0bWFwLEw2dC5lbWlzc2l2ZW1hcCxMNnQuZm9nLEw2dC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgJDV0KDApfX1dKSx2ZXJ0ZXhTaGFkZXI6UDZ0Lm1lc2hsYW1iZXJ0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6UDZ0Lm1lc2hsYW1iZXJ0X2ZyYWd9LHBob25nOnt1bmlmb3JtczpoNnQoW0w2dC5jb21tb24sTDZ0LnNwZWN1bGFybWFwLEw2dC5lbnZtYXAsTDZ0LmFvbWFwLEw2dC5saWdodG1hcCxMNnQuZW1pc3NpdmVtYXAsTDZ0LmJ1bXBtYXAsTDZ0Lm5vcm1hbG1hcCxMNnQuZGlzcGxhY2VtZW50bWFwLEw2dC5mb2csTDZ0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyAkNXQoMCl9LHNwZWN1bGFyOnt2YWx1ZTpuZXcgJDV0KDExMTg0ODEpfSxzaGluaW5lc3M6e3ZhbHVlOjMwfX1dKSx2ZXJ0ZXhTaGFkZXI6UDZ0Lm1lc2hwaG9uZ192ZXJ0LGZyYWdtZW50U2hhZGVyOlA2dC5tZXNocGhvbmdfZnJhZ30sc3RhbmRhcmQ6e3VuaWZvcm1zOmg2dChbTDZ0LmNvbW1vbixMNnQuZW52bWFwLEw2dC5hb21hcCxMNnQubGlnaHRtYXAsTDZ0LmVtaXNzaXZlbWFwLEw2dC5idW1wbWFwLEw2dC5ub3JtYWxtYXAsTDZ0LmRpc3BsYWNlbWVudG1hcCxMNnQucm91Z2huZXNzbWFwLEw2dC5tZXRhbG5lc3NtYXAsTDZ0LmZvZyxMNnQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3ICQ1dCgwKX0scm91Z2huZXNzOnt2YWx1ZToxfSxtZXRhbG5lc3M6e3ZhbHVlOjB9LGVudk1hcEludGVuc2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOlA2dC5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpQNnQubWVzaHBoeXNpY2FsX2ZyYWd9LHRvb246e3VuaWZvcm1zOmg2dChbTDZ0LmNvbW1vbixMNnQuYW9tYXAsTDZ0LmxpZ2h0bWFwLEw2dC5lbWlzc2l2ZW1hcCxMNnQuYnVtcG1hcCxMNnQubm9ybWFsbWFwLEw2dC5kaXNwbGFjZW1lbnRtYXAsTDZ0LmdyYWRpZW50bWFwLEw2dC5mb2csTDZ0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyAkNXQoMCl9fV0pLHZlcnRleFNoYWRlcjpQNnQubWVzaHRvb25fdmVydCxmcmFnbWVudFNoYWRlcjpQNnQubWVzaHRvb25fZnJhZ30sbWF0Y2FwOnt1bmlmb3JtczpoNnQoW0w2dC5jb21tb24sTDZ0LmJ1bXBtYXAsTDZ0Lm5vcm1hbG1hcCxMNnQuZGlzcGxhY2VtZW50bWFwLEw2dC5mb2cse21hdGNhcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOlA2dC5tZXNobWF0Y2FwX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UDZ0Lm1lc2htYXRjYXBfZnJhZ30scG9pbnRzOnt1bmlmb3JtczpoNnQoW0w2dC5wb2ludHMsTDZ0LmZvZ10pLHZlcnRleFNoYWRlcjpQNnQucG9pbnRzX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UDZ0LnBvaW50c19mcmFnfSxkYXNoZWQ6e3VuaWZvcm1zOmg2dChbTDZ0LmNvbW1vbixMNnQuZm9nLHtzY2FsZTp7dmFsdWU6MX0sZGFzaFNpemU6e3ZhbHVlOjF9LHRvdGFsU2l6ZTp7dmFsdWU6Mn19XSksdmVydGV4U2hhZGVyOlA2dC5saW5lZGFzaGVkX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UDZ0LmxpbmVkYXNoZWRfZnJhZ30sZGVwdGg6e3VuaWZvcm1zOmg2dChbTDZ0LmNvbW1vbixMNnQuZGlzcGxhY2VtZW50bWFwXSksdmVydGV4U2hhZGVyOlA2dC5kZXB0aF92ZXJ0LGZyYWdtZW50U2hhZGVyOlA2dC5kZXB0aF9mcmFnfSxub3JtYWw6e3VuaWZvcm1zOmg2dChbTDZ0LmNvbW1vbixMNnQuYnVtcG1hcCxMNnQubm9ybWFsbWFwLEw2dC5kaXNwbGFjZW1lbnRtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpQNnQubWVzaG5vcm1hbF92ZXJ0LGZyYWdtZW50U2hhZGVyOlA2dC5tZXNobm9ybWFsX2ZyYWd9LHNwcml0ZTp7dW5pZm9ybXM6aDZ0KFtMNnQuc3ByaXRlLEw2dC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6UDZ0LnNwcml0ZV92ZXJ0LGZyYWdtZW50U2hhZGVyOlA2dC5zcHJpdGVfZnJhZ30sYmFja2dyb3VuZDp7dW5pZm9ybXM6e3V2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgQjV0fSx0MkQ6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6UDZ0LmJhY2tncm91bmRfdmVydCxmcmFnbWVudFNoYWRlcjpQNnQuYmFja2dyb3VuZF9mcmFnfSxjdWJlOnt1bmlmb3JtczpoNnQoW0w2dC5lbnZtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpQNnQuY3ViZV92ZXJ0LGZyYWdtZW50U2hhZGVyOlA2dC5jdWJlX2ZyYWd9LGVxdWlyZWN0Ont1bmlmb3Jtczp7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOlA2dC5lcXVpcmVjdF92ZXJ0LGZyYWdtZW50U2hhZGVyOlA2dC5lcXVpcmVjdF9mcmFnfSxkaXN0YW5jZVJHQkE6e3VuaWZvcm1zOmg2dChbTDZ0LmNvbW1vbixMNnQuZGlzcGxhY2VtZW50bWFwLHtyZWZlcmVuY2VQb3NpdGlvbjp7dmFsdWU6bmV3IGEzdH0sbmVhckRpc3RhbmNlOnt2YWx1ZToxfSxmYXJEaXN0YW5jZTp7dmFsdWU6MWUzfX1dKSx2ZXJ0ZXhTaGFkZXI6UDZ0LmRpc3RhbmNlUkdCQV92ZXJ0LGZyYWdtZW50U2hhZGVyOlA2dC5kaXN0YW5jZVJHQkFfZnJhZ30sc2hhZG93Ont1bmlmb3JtczpoNnQoW0w2dC5saWdodHMsTDZ0LmZvZyx7Y29sb3I6e3ZhbHVlOm5ldyAkNXQoMCl9LG9wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpQNnQuc2hhZG93X3ZlcnQsZnJhZ21lbnRTaGFkZXI6UDZ0LnNoYWRvd19mcmFnfX07ZnVuY3Rpb24gTjZ0KHQsZSxuLGkscixvKXtjb25zdCBhPW5ldyAkNXQoMCk7bGV0IHMsbCxjPSEwPT09cj8wOjEsdT1udWxsLGg9MCxkPW51bGw7ZnVuY3Rpb24gcCh0LGUpe24uYnVmZmVycy5jb2xvci5zZXRDbGVhcih0LnIsdC5nLHQuYixlLG8pfXJldHVybntnZXRDbGVhckNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24odCxlPTEpe2Euc2V0KHQpLGM9ZSxwKGEsYyl9LGdldENsZWFyQWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gY30sc2V0Q2xlYXJBbHBoYTpmdW5jdGlvbih0KXtjPXQscChhLGMpfSxyZW5kZXI6ZnVuY3Rpb24gZihuLHIpe2xldCBvPSExLGY9ITA9PT1yLmlzU2NlbmU/ci5iYWNrZ3JvdW5kOm51bGw7ZiYmZi5pc1RleHR1cmUmJihmPWUuZ2V0KGYpKTtjb25zdCBtPXQueHIsZz1tLmdldFNlc3Npb24mJm0uZ2V0U2Vzc2lvbigpO2cmJiJhZGRpdGl2ZSI9PT1nLmVudmlyb25tZW50QmxlbmRNb2RlJiYoZj1udWxsKSxudWxsPT09Zj9wKGEsYyk6ZiYmZi5pc0NvbG9yJiYocChmLDEpLG89ITApLCh0LmF1dG9DbGVhcnx8bykmJnQuY2xlYXIodC5hdXRvQ2xlYXJDb2xvcix0LmF1dG9DbGVhckRlcHRoLHQuYXV0b0NsZWFyU3RlbmNpbCksZiYmKGYuaXNDdWJlVGV4dHVyZXx8Zi5tYXBwaW5nPT09bzJ0KT8odm9pZCAwPT09bCYmKGw9bmV3IHM2dChuZXcgYzZ0KDEsMSwxKSxuZXcgcDZ0KHtuYW1lOiJCYWNrZ3JvdW5kQ3ViZU1hdGVyaWFsIix1bmlmb3Jtczp1NnQoSTZ0LmN1YmUudW5pZm9ybXMpLHZlcnRleFNoYWRlcjpJNnQuY3ViZS52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6STZ0LmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZToxLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxsLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIiksbC5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoInV2IiksbC5vbkJlZm9yZVJlbmRlcj1mdW5jdGlvbih0LGUsbil7dGhpcy5tYXRyaXhXb3JsZC5jb3B5UG9zaXRpb24obi5tYXRyaXhXb3JsZCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLm1hdGVyaWFsLCJlbnZNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlmb3Jtcy5lbnZNYXAudmFsdWV9fSksaS51cGRhdGUobCkpLGwubWF0ZXJpYWwudW5pZm9ybXMuZW52TWFwLnZhbHVlPWYsbC5tYXRlcmlhbC51bmlmb3Jtcy5mbGlwRW52TWFwLnZhbHVlPWYuaXNDdWJlVGV4dHVyZSYmITE9PT1mLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxLHU9PT1mJiZoPT09Zi52ZXJzaW9uJiZkPT09dC50b25lTWFwcGluZ3x8KGwubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsdT1mLGg9Zi52ZXJzaW9uLGQ9dC50b25lTWFwcGluZyksbi51bnNoaWZ0KGwsbC5nZW9tZXRyeSxsLm1hdGVyaWFsLDAsMCxudWxsKSk6ZiYmZi5pc1RleHR1cmUmJih2b2lkIDA9PT1zJiYocz1uZXcgczZ0KG5ldyBrNnQoMiwyKSxuZXcgcDZ0KHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOnU2dChJNnQuYmFja2dyb3VuZC51bmlmb3JtcyksdmVydGV4U2hhZGVyOkk2dC5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpJNnQuYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLHMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkocy5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLGkudXBkYXRlKHMpKSxzLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT1mLCEwPT09Zi5tYXRyaXhBdXRvVXBkYXRlJiZmLnVwZGF0ZU1hdHJpeCgpLHMubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weShmLm1hdHJpeCksdT09PWYmJmg9PT1mLnZlcnNpb24mJmQ9PT10LnRvbmVNYXBwaW5nfHwocy5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCx1PWYsaD1mLnZlcnNpb24sZD10LnRvbmVNYXBwaW5nKSxuLnVuc2hpZnQocyxzLmdlb21ldHJ5LHMubWF0ZXJpYWwsMCwwLG51bGwpKX19fWZ1bmN0aW9uIFI2dCh0LGUsbixpKXtjb25zdCByPXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxvPWkuaXNXZWJHTDI/bnVsbDplLmdldCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxhPWkuaXNXZWJHTDJ8fG51bGwhPT1vLHM9e30sbD1kKG51bGwpO2xldCBjPWw7ZnVuY3Rpb24gdShlKXtyZXR1cm4gaS5pc1dlYkdMMj90LmJpbmRWZXJ0ZXhBcnJheShlKTpvLmJpbmRWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBoKGUpe3JldHVybiBpLmlzV2ViR0wyP3QuZGVsZXRlVmVydGV4QXJyYXkoZSk6by5kZWxldGVWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBkKHQpe2NvbnN0IGU9W10sbj1bXSxpPVtdO2ZvcihsZXQgdD0wO3Q8cjt0KyspZVt0XT0wLG5bdF09MCxpW3RdPTA7cmV0dXJue2dlb21ldHJ5Om51bGwscHJvZ3JhbTpudWxsLHdpcmVmcmFtZTohMSxuZXdBdHRyaWJ1dGVzOmUsZW5hYmxlZEF0dHJpYnV0ZXM6bixhdHRyaWJ1dGVEaXZpc29yczppLG9iamVjdDp0LGF0dHJpYnV0ZXM6e30saW5kZXg6bnVsbH19ZnVuY3Rpb24gcCgpe2NvbnN0IHQ9Yy5uZXdBdHRyaWJ1dGVzO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdPTB9ZnVuY3Rpb24gZih0KXttKHQsMCl9ZnVuY3Rpb24gbShuLHIpe2NvbnN0IG89Yy5lbmFibGVkQXR0cmlidXRlcyxhPWMuYXR0cmlidXRlRGl2aXNvcnM7aWYoYy5uZXdBdHRyaWJ1dGVzW25dPTEsMD09PW9bbl0mJih0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pLG9bbl09MSksYVtuXSE9PXIpeyhpLmlzV2ViR0wyP3Q6ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlbaS5pc1dlYkdMMj8idmVydGV4QXR0cmliRGl2aXNvciI6InZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSJdKG4sciksYVtuXT1yfX1mdW5jdGlvbiBnKCl7Y29uc3QgZT1jLm5ld0F0dHJpYnV0ZXMsbj1jLmVuYWJsZWRBdHRyaWJ1dGVzO2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aTxyO2krKyluW2ldIT09ZVtpXSYmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpLG5baV09MCl9ZnVuY3Rpb24gXyhlLG4scixvLGEscyl7ITAhPT1pLmlzV2ViR0wyfHw1MTI0IT09ciYmNTEyNSE9PXI/dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGUsbixyLG8sYSxzKTp0LnZlcnRleEF0dHJpYklQb2ludGVyKGUsbixyLGEscyl9ZnVuY3Rpb24geSgpe3YoKSxjIT09bCYmKGM9bCx1KGMub2JqZWN0KSl9ZnVuY3Rpb24gdigpe2wuZ2VvbWV0cnk9bnVsbCxsLnByb2dyYW09bnVsbCxsLndpcmVmcmFtZT0hMX1yZXR1cm57c2V0dXA6ZnVuY3Rpb24gYihyLGwsaCx5LHYpe2xldCBiPSExO2lmKGEpe2NvbnN0IGU9KGZ1bmN0aW9uIHgoZSxuLHIpe2NvbnN0IGE9ITA9PT1yLndpcmVmcmFtZTtsZXQgbD1zW2UuaWRdO3ZvaWQgMD09PWwmJihsPXt9LHNbZS5pZF09bCk7bGV0IGM9bFtuLmlkXTt2b2lkIDA9PT1jJiYoYz17fSxsW24uaWRdPWMpO2xldCB1PWNbYV07dm9pZCAwPT09dSYmKHU9ZCgoZnVuY3Rpb24gaCgpe3JldHVybiBpLmlzV2ViR0wyP3QuY3JlYXRlVmVydGV4QXJyYXkoKTpvLmNyZWF0ZVZlcnRleEFycmF5T0VTKCl9KSgpKSxjW2FdPXUpO3JldHVybiB1fSkoeSxoLGwpO2MhPT1lJiYoYz1lLHUoYy5vYmplY3QpKSxiPShmdW5jdGlvbiB3KHQsZSl7Y29uc3Qgbj1jLmF0dHJpYnV0ZXMsaT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPW5bdF0sbz1pW3RdO2lmKHZvaWQgMD09PWUpcmV0dXJuITA7aWYoZS5hdHRyaWJ1dGUhPT1vKXJldHVybiEwO2lmKGUuZGF0YSE9PW8uZGF0YSlyZXR1cm4hMDtyKyt9cmV0dXJuIGMuYXR0cmlidXRlc051bSE9PXJ8fGMuaW5kZXghPT1lfSkoeSx2KSxiJiYoZnVuY3Rpb24gUyh0LGUpe2NvbnN0IG49e30saT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPWlbdF0sbz17fTtvLmF0dHJpYnV0ZT1lLGUuZGF0YSYmKG8uZGF0YT1lLmRhdGEpLG5bdF09byxyKyt9Yy5hdHRyaWJ1dGVzPW4sYy5hdHRyaWJ1dGVzTnVtPXIsYy5pbmRleD1lfSkoeSx2KX1lbHNle2NvbnN0IHQ9ITA9PT1sLndpcmVmcmFtZTtjLmdlb21ldHJ5PT09eS5pZCYmYy5wcm9ncmFtPT09aC5pZCYmYy53aXJlZnJhbWU9PT10fHwoYy5nZW9tZXRyeT15LmlkLGMucHJvZ3JhbT1oLmlkLGMud2lyZWZyYW1lPXQsYj0hMCl9ITA9PT1yLmlzSW5zdGFuY2VkTWVzaCYmKGI9ITApLG51bGwhPT12JiZuLnVwZGF0ZSh2LDM0OTYzKSxiJiYoIShmdW5jdGlvbiBNKHIsbyxhLHMpe2lmKCExPT09aS5pc1dlYkdMMiYmKHIuaXNJbnN0YW5jZWRNZXNofHxzLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpJiZudWxsPT09ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlyZXR1cm47cCgpO2NvbnN0IGw9cy5hdHRyaWJ1dGVzLGM9YS5nZXRBdHRyaWJ1dGVzKCksdT1vLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3QgaT1jW2VdO2lmKGkubG9jYXRpb24+PTApe2xldCBvPWxbZV07aWYodm9pZCAwPT09byYmKCJpbnN0YW5jZU1hdHJpeCI9PT1lJiZyLmluc3RhbmNlTWF0cml4JiYobz1yLmluc3RhbmNlTWF0cml4KSwiaW5zdGFuY2VDb2xvciI9PT1lJiZyLmluc3RhbmNlQ29sb3ImJihvPXIuaW5zdGFuY2VDb2xvcikpLHZvaWQgMCE9PW8pe2NvbnN0IGU9by5ub3JtYWxpemVkLGE9by5pdGVtU2l6ZSxsPW4uZ2V0KG8pO2lmKHZvaWQgMD09PWwpY29udGludWU7Y29uc3QgYz1sLmJ1ZmZlcix1PWwudHlwZSxoPWwuYnl0ZXNQZXJFbGVtZW50O2lmKG8uaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc3Qgbj1vLmRhdGEsbD1uLnN0cmlkZSxkPW8ub2Zmc2V0O2lmKG4mJm4uaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcil7Zm9yKGxldCB0PTA7dDxpLmxvY2F0aW9uU2l6ZTt0KyspbShpLmxvY2F0aW9uK3Qsbi5tZXNoUGVyQXR0cmlidXRlKTshMCE9PXIuaXNJbnN0YW5jZWRNZXNoJiZ2b2lkIDA9PT1zLl9tYXhJbnN0YW5jZUNvdW50JiYocy5fbWF4SW5zdGFuY2VDb3VudD1uLm1lc2hQZXJBdHRyaWJ1dGUqbi5jb3VudCl9ZWxzZSBmb3IobGV0IHQ9MDt0PGkubG9jYXRpb25TaXplO3QrKylmKGkubG9jYXRpb24rdCk7dC5iaW5kQnVmZmVyKDM0OTYyLGMpO2ZvcihsZXQgdD0wO3Q8aS5sb2NhdGlvblNpemU7dCsrKV8oaS5sb2NhdGlvbit0LGEvaS5sb2NhdGlvblNpemUsdSxlLGwqaCwoZCthL2kubG9jYXRpb25TaXplKnQpKmgpfWVsc2V7aWYoby5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSl7Zm9yKGxldCB0PTA7dDxpLmxvY2F0aW9uU2l6ZTt0KyspbShpLmxvY2F0aW9uK3Qsby5tZXNoUGVyQXR0cmlidXRlKTshMCE9PXIuaXNJbnN0YW5jZWRNZXNoJiZ2b2lkIDA9PT1zLl9tYXhJbnN0YW5jZUNvdW50JiYocy5fbWF4SW5zdGFuY2VDb3VudD1vLm1lc2hQZXJBdHRyaWJ1dGUqby5jb3VudCl9ZWxzZSBmb3IobGV0IHQ9MDt0PGkubG9jYXRpb25TaXplO3QrKylmKGkubG9jYXRpb24rdCk7dC5iaW5kQnVmZmVyKDM0OTYyLGMpO2ZvcihsZXQgdD0wO3Q8aS5sb2NhdGlvblNpemU7dCsrKV8oaS5sb2NhdGlvbit0LGEvaS5sb2NhdGlvblNpemUsdSxlLGEqaCxhL2kubG9jYXRpb25TaXplKnQqaCl9fWVsc2UgaWYodm9pZCAwIT09dSl7Y29uc3Qgbj11W2VdO2lmKHZvaWQgMCE9PW4pc3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDI6dC52ZXJ0ZXhBdHRyaWIyZnYoaS5sb2NhdGlvbixuKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhBdHRyaWIzZnYoaS5sb2NhdGlvbixuKTticmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0ZnYoaS5sb2NhdGlvbixuKTticmVhaztkZWZhdWx0OnQudmVydGV4QXR0cmliMWZ2KGkubG9jYXRpb24sbil9fX19ZygpfSkocixsLGgseSksbnVsbCE9PXYmJnQuYmluZEJ1ZmZlcigzNDk2MyxuLmdldCh2KS5idWZmZXIpKX0scmVzZXQ6eSxyZXNldERlZmF1bHRTdGF0ZTp2LGRpc3Bvc2U6ZnVuY3Rpb24geCgpe3koKTtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4paChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdF19fSxyZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeTpmdW5jdGlvbiB3KHQpe2lmKHZvaWQgMD09PXNbdC5pZF0pcmV0dXJuO2NvbnN0IGU9c1t0LmlkXTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBuPWVbdF07Zm9yKGNvbnN0IHQgaW4gbiloKG5bdF0ub2JqZWN0KSxkZWxldGUgblt0XTtkZWxldGUgZVt0XX1kZWxldGUgc1t0LmlkXX0scmVsZWFzZVN0YXRlc09mUHJvZ3JhbTpmdW5jdGlvbiBTKHQpe2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IG49c1tlXTtpZih2b2lkIDA9PT1uW3QuaWRdKWNvbnRpbnVlO2NvbnN0IGk9blt0LmlkXTtmb3IoY29uc3QgdCBpbiBpKWgoaVt0XS5vYmplY3QpLGRlbGV0ZSBpW3RdO2RlbGV0ZSBuW3QuaWRdfX0saW5pdEF0dHJpYnV0ZXM6cCxlbmFibGVBdHRyaWJ1dGU6ZixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpnfX1mdW5jdGlvbiBPNnQodCxlLG4saSl7Y29uc3Qgcj1pLmlzV2ViR0wyO2xldCBvO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBhKHQpe289dH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gcyhlLGkpe3QuZHJhd0FycmF5cyhvLGUsaSksbi51cGRhdGUoaSxvLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBsKGksYSxzKXtpZigwPT09cylyZXR1cm47bGV0IGwsYztpZihyKWw9dCxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkIjtlbHNlIGlmKGw9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1sKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO2xbY10obyxpLGEscyksbi51cGRhdGUoYSxvLHMpfX1mdW5jdGlvbiB6NnQodCxlLG4pe2xldCBpO2Z1bmN0aW9uIHIoZSl7aWYoImhpZ2hwIj09PWUpe2lmKHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM4KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzgpLnByZWNpc2lvbj4wKXJldHVybiJoaWdocCI7ZT0ibWVkaXVtcCJ9cmV0dXJuIm1lZGl1bXAiPT09ZSYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbj4wJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPjA/Im1lZGl1bXAiOiJsb3dwIn1jb25zdCBvPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYmdCBpbnN0YW5jZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8fCJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dDtsZXQgYT12b2lkIDAhPT1uLnByZWNpc2lvbj9uLnByZWNpc2lvbjoiaGlnaHAiO2NvbnN0IHM9cihhKTtzIT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjoiLGEsIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixzLCJpbnN0ZWFkLiIpLGE9cyk7Y29uc3QgbD1vfHxlLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIiksYz0hMD09PW4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcix1PXQuZ2V0UGFyYW1ldGVyKDM0OTMwKSxoPXQuZ2V0UGFyYW1ldGVyKDM1NjYwKSxkPXQuZ2V0UGFyYW1ldGVyKDMzNzkpLHA9dC5nZXRQYXJhbWV0ZXIoMzQwNzYpLGY9dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLG09dC5nZXRQYXJhbWV0ZXIoMzYzNDcpLGc9dC5nZXRQYXJhbWV0ZXIoMzYzNDgpLF89dC5nZXRQYXJhbWV0ZXIoMzYzNDkpLHk9aD4wLHY9b3x8ZS5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0Iik7cmV0dXJue2lzV2ViR0wyOm8sZHJhd0J1ZmZlcnM6bCxnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uIGIoKXtpZih2b2lkIDAhPT1pKXJldHVybiBpO2lmKCEwPT09ZS5oYXMoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKXtjb25zdCBuPWUuZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtpPXQuZ2V0UGFyYW1ldGVyKG4uTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKX1lbHNlIGk9MDtyZXR1cm4gaX0sZ2V0TWF4UHJlY2lzaW9uOnIscHJlY2lzaW9uOmEsbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpjLG1heFRleHR1cmVzOnUsbWF4VmVydGV4VGV4dHVyZXM6aCxtYXhUZXh0dXJlU2l6ZTpkLG1heEN1YmVtYXBTaXplOnAsbWF4QXR0cmlidXRlczpmLG1heFZlcnRleFVuaWZvcm1zOm0sbWF4VmFyeWluZ3M6ZyxtYXhGcmFnbWVudFVuaWZvcm1zOl8sdmVydGV4VGV4dHVyZXM6eSxmbG9hdEZyYWdtZW50VGV4dHVyZXM6dixmbG9hdFZlcnRleFRleHR1cmVzOnkmJnYsbWF4U2FtcGxlczpvP3QuZ2V0UGFyYW1ldGVyKDM2MTgzKTowfX1mdW5jdGlvbiBENnQodCl7Y29uc3QgZT10aGlzO2xldCBuPW51bGwsaT0wLHI9ITEsbz0hMTtjb25zdCBhPW5ldyBTNnQscz1uZXcgQjV0LGw9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O2Z1bmN0aW9uIGMoKXtsLnZhbHVlIT09biYmKGwudmFsdWU9bixsLm5lZWRzVXBkYXRlPWk+MCksZS5udW1QbGFuZXM9aSxlLm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIHUodCxuLGkscil7Y29uc3Qgbz1udWxsIT09dD90Lmxlbmd0aDowO2xldCBjPW51bGw7aWYoMCE9PW8pe2lmKGM9bC52YWx1ZSwhMCE9PXJ8fG51bGw9PT1jKXtjb25zdCBlPWkrNCpvLHI9bi5tYXRyaXhXb3JsZEludmVyc2U7cy5nZXROb3JtYWxNYXRyaXgociksKG51bGw9PT1jfHxjLmxlbmd0aDxlKSYmKGM9bmV3IEZsb2F0MzJBcnJheShlKSk7Zm9yKGxldCBlPTAsbj1pO2UhPT1vOysrZSxuKz00KWEuY29weSh0W2VdKS5hcHBseU1hdHJpeDQocixzKSxhLm5vcm1hbC50b0FycmF5KGMsbiksY1tuKzNdPWEuY29uc3RhbnR9bC52YWx1ZT1jLGwubmVlZHNVcGRhdGU9ITB9cmV0dXJuIGUubnVtUGxhbmVzPW8sZS5udW1JbnRlcnNlY3Rpb249MCxjfXRoaXMudW5pZm9ybT1sLHRoaXMubnVtUGxhbmVzPTAsdGhpcy5udW1JbnRlcnNlY3Rpb249MCx0aGlzLmluaXQ9ZnVuY3Rpb24odCxlLG8pe2NvbnN0IGE9MCE9PXQubGVuZ3RofHxlfHwwIT09aXx8cjtyZXR1cm4gcj1lLG49dSh0LG8sMCksaT10Lmxlbmd0aCxhfSx0aGlzLmJlZ2luU2hhZG93cz1mdW5jdGlvbigpe289ITAsdShudWxsKX0sdGhpcy5lbmRTaGFkb3dzPWZ1bmN0aW9uKCl7bz0hMSxjKCl9LHRoaXMuc2V0U3RhdGU9ZnVuY3Rpb24oZSxhLHMpe2NvbnN0IGg9ZS5jbGlwcGluZ1BsYW5lcyxkPWUuY2xpcEludGVyc2VjdGlvbixwPWUuY2xpcFNoYWRvd3MsZj10LmdldChlKTtpZighcnx8bnVsbD09PWh8fDA9PT1oLmxlbmd0aHx8byYmIXApbz91KG51bGwpOmMoKTtlbHNle2NvbnN0IHQ9bz8wOmksZT00KnQ7bGV0IHI9Zi5jbGlwcGluZ1N0YXRlfHxudWxsO2wudmFsdWU9cixyPXUoaCxhLGUscyk7Zm9yKGxldCB0PTA7dCE9PWU7Kyt0KXJbdF09blt0XTtmLmNsaXBwaW5nU3RhdGU9cix0aGlzLm51bUludGVyc2VjdGlvbj1kP3RoaXMubnVtUGxhbmVzOjAsdGhpcy5udW1QbGFuZXMrPXR9fX1mdW5jdGlvbiBCNnQodCl7bGV0IGU9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBlPT09aTJ0P3QubWFwcGluZz1lMnQ6ZT09PXIydCYmKHQubWFwcGluZz1uMnQpLHR9ZnVuY3Rpb24gaSh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSk7Y29uc3Qgcj1lLmdldChuKTt2b2lkIDAhPT1yJiYoZS5kZWxldGUobiksci5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gcihvKXtpZihvJiZvLmlzVGV4dHVyZSYmITE9PT1vLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSl7Y29uc3Qgcj1vLm1hcHBpbmc7aWYocj09PWkydHx8cj09PXIydCl7aWYoZS5oYXMobykpe3JldHVybiBuKGUuZ2V0KG8pLnRleHR1cmUsby5tYXBwaW5nKX17Y29uc3Qgcj1vLmltYWdlO2lmKHImJnIuaGVpZ2h0PjApe2NvbnN0IGE9bmV3IHY2dChyLmhlaWdodC8yKTtyZXR1cm4gYS5mcm9tRXF1aXJlY3Rhbmd1bGFyVGV4dHVyZSh0LG8pLGUuc2V0KG8sYSksby5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKSxuKGEudGV4dHVyZSxvLm1hcHBpbmcpfXJldHVybiBudWxsfX19cmV0dXJuIG99LGRpc3Bvc2U6ZnVuY3Rpb24gbygpe2U9bmV3IFdlYWtNYXB9fX1JNnQucGh5c2ljYWw9e3VuaWZvcm1zOmg2dChbSTZ0LnN0YW5kYXJkLnVuaWZvcm1zLHtjbGVhcmNvYXQ6e3ZhbHVlOjB9LGNsZWFyY29hdE1hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Um91Z2huZXNzOnt2YWx1ZTowfSxjbGVhcmNvYXRSb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9LGNsZWFyY29hdE5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgRDV0KDEsMSl9LGNsZWFyY29hdE5vcm1hbE1hcDp7dmFsdWU6bnVsbH0sc2hlZW46e3ZhbHVlOjB9LHNoZWVuQ29sb3I6e3ZhbHVlOm5ldyAkNXQoMCl9LHNoZWVuQ29sb3JNYXA6e3ZhbHVlOm51bGx9LHNoZWVuUm91Z2huZXNzOnt2YWx1ZToxfSxzaGVlblJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sdHJhbnNtaXNzaW9uOnt2YWx1ZTowfSx0cmFuc21pc3Npb25NYXA6e3ZhbHVlOm51bGx9LHRyYW5zbWlzc2lvblNhbXBsZXJTaXplOnt2YWx1ZTpuZXcgRDV0fSx0cmFuc21pc3Npb25TYW1wbGVyTWFwOnt2YWx1ZTpudWxsfSx0aGlja25lc3M6e3ZhbHVlOjB9LHRoaWNrbmVzc01hcDp7dmFsdWU6bnVsbH0sYXR0ZW51YXRpb25EaXN0YW5jZTp7dmFsdWU6MH0sYXR0ZW51YXRpb25Db2xvcjp7dmFsdWU6bmV3ICQ1dCgwKX0sc3BlY3VsYXJJbnRlbnNpdHk6e3ZhbHVlOjF9LHNwZWN1bGFySW50ZW5zaXR5TWFwOnt2YWx1ZTpudWxsfSxzcGVjdWxhckNvbG9yOnt2YWx1ZTpuZXcgJDV0KDEsMSwxKX0sc3BlY3VsYXJDb2xvck1hcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOlA2dC5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpQNnQubWVzaHBoeXNpY2FsX2ZyYWd9O2NsYXNzIEg2dCBleHRlbmRzIGY2dHtjb25zdHJ1Y3Rvcih0PS0xLGU9MSxuPTEsaT0tMSxyPS4xLG89MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iT3J0aG9ncmFwaGljQ2FtZXJhIix0aGlzLnpvb209MSx0aGlzLnZpZXc9bnVsbCx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PWUsdGhpcy50b3A9bix0aGlzLmJvdHRvbT1pLHRoaXMubmVhcj1yLHRoaXMuZmFyPW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5sZWZ0PXQubGVmdCx0aGlzLnJpZ2h0PXQucmlnaHQsdGhpcy50b3A9dC50b3AsdGhpcy5ib3R0b209dC5ib3R0b20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLnpvb209dC56b29tLHRoaXMudmlldz1udWxsPT09dC52aWV3P251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXN9c2V0Vmlld09mZnNldCh0LGUsbixpLHIsbyl7bnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PWUsdGhpcy52aWV3Lm9mZnNldFg9bix0aGlzLnZpZXcub2Zmc2V0WT1pLHRoaXMudmlldy53aWR0aD1yLHRoaXMudmlldy5oZWlnaHQ9byx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jbGVhclZpZXdPZmZzZXQoKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKXtjb25zdCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvKDIqdGhpcy56b29tKSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvKDIqdGhpcy56b29tKSxuPSh0aGlzLnJpZ2h0K3RoaXMubGVmdCkvMixpPSh0aGlzLnRvcCt0aGlzLmJvdHRvbSkvMjtsZXQgcj1uLXQsbz1uK3QsYT1pK2Uscz1pLWU7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS90aGlzLnZpZXcuZnVsbFdpZHRoL3RoaXMuem9vbSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvdGhpcy52aWV3LmZ1bGxIZWlnaHQvdGhpcy56b29tO3IrPXQqdGhpcy52aWV3Lm9mZnNldFgsbz1yK3QqdGhpcy52aWV3LndpZHRoLGEtPWUqdGhpcy52aWV3Lm9mZnNldFkscz1hLWUqdGhpcy52aWV3LmhlaWdodH10aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZU9ydGhvZ3JhcGhpYyhyLG8sYSxzLHRoaXMubmVhcix0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5sZWZ0PXRoaXMubGVmdCxlLm9iamVjdC5yaWdodD10aGlzLnJpZ2h0LGUub2JqZWN0LnRvcD10aGlzLnRvcCxlLm9iamVjdC5ib3R0b209dGhpcy5ib3R0b20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZX19SDZ0LnByb3RvdHlwZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT0hMDtjbGFzcyBGNnQgZXh0ZW5kcyBwNnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50eXBlPSJSYXdTaGFkZXJNYXRlcmlhbCJ9fUY2dC5wcm90b3R5cGUuaXNSYXdTaGFkZXJNYXRlcmlhbD0hMDtjb25zdCBWNnQ9TWF0aC5wb3coMiw4KSxVNnQ9Wy4xMjUsLjIxNSwuMzUsLjQ0NiwuNTI2LC41ODJdLGo2dD01K1U2dC5sZW5ndGgsRzZ0PTIwLFc2dD1uZXcgSDZ0LHtfbG9kUGxhbmVzOnE2dCxfc2l6ZUxvZHM6WTZ0LF9zaWdtYXM6WDZ0fT1lOXQoKSwkNnQ9bmV3ICQ1dDtsZXQgSzZ0PW51bGw7Y29uc3QgWjZ0PSgxK01hdGguc3FydCg1KSkvMixKNnQ9MS9aNnQsUTZ0PVtuZXcgYTN0KDEsMSwxKSxuZXcgYTN0KC0xLDEsMSksbmV3IGEzdCgxLDEsLTEpLG5ldyBhM3QoLTEsMSwtMSksbmV3IGEzdCgwLFo2dCxKNnQpLG5ldyBhM3QoMCxaNnQsLUo2dCksbmV3IGEzdChKNnQsMCxaNnQpLG5ldyBhM3QoLUo2dCwwLFo2dCksbmV3IGEzdChaNnQsSjZ0LDApLG5ldyBhM3QoLVo2dCxKNnQsMCldO2NsYXNzIHQ5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PW51bGwsdGhpcy5fYmx1ck1hdGVyaWFsPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSh0KSxuPW5ldyBhM3QoMCwxLDApO3JldHVybiBuZXcgRjZ0KHtuYW1lOiJTcGhlcmljYWxHYXVzc2lhbkJsdXIiLGRlZmluZXM6e246dH0sdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sc2FtcGxlczp7dmFsdWU6MX0sd2VpZ2h0czp7dmFsdWU6ZX0sbGF0aXR1ZGluYWw6e3ZhbHVlOiExfSxkVGhldGE6e3ZhbHVlOjB9LG1pcEludDp7dmFsdWU6MH0scG9sZUF4aXM6e3ZhbHVlOm59fSx2ZXJ0ZXhTaGFkZXI6YTl0KCksZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0XHRcdHVuaWZvcm0gaW50IHNhbXBsZXM7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IHdlaWdodHNbIG4gXTtcblx0XHRcdHVuaWZvcm0gYm9vbCBsYXRpdHVkaW5hbDtcblx0XHRcdHVuaWZvcm0gZmxvYXQgZFRoZXRhO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBtaXBJbnQ7XG5cdFx0XHR1bmlmb3JtIHZlYzMgcG9sZUF4aXM7XG5cblx0XHRcdCNkZWZpbmUgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdFx0I2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cblxuXHRcdFx0dmVjMyBnZXRTYW1wbGUoIGZsb2F0IHRoZXRhLCB2ZWMzIGF4aXMgKSB7XG5cblx0XHRcdFx0ZmxvYXQgY29zVGhldGEgPSBjb3MoIHRoZXRhICk7XG5cdFx0XHRcdC8vIFJvZHJpZ3VlcycgYXhpcy1hbmdsZSByb3RhdGlvblxuXHRcdFx0XHR2ZWMzIHNhbXBsZURpcmVjdGlvbiA9IHZPdXRwdXREaXJlY3Rpb24gKiBjb3NUaGV0YVxuXHRcdFx0XHRcdCsgY3Jvc3MoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqIHNpbiggdGhldGEgKVxuXHRcdFx0XHRcdCsgYXhpcyAqIGRvdCggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogKCAxLjAgLSBjb3NUaGV0YSApO1xuXG5cdFx0XHRcdHJldHVybiBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXJlY3Rpb24sIG1pcEludCApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHR2ZWMzIGF4aXMgPSBsYXRpdHVkaW5hbCA/IHBvbGVBeGlzIDogY3Jvc3MoIHBvbGVBeGlzLCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cblx0XHRcdFx0aWYgKCBhbGwoIGVxdWFsKCBheGlzLCB2ZWMzKCAwLjAgKSApICkgKSB7XG5cblx0XHRcdFx0XHRheGlzID0gdmVjMyggdk91dHB1dERpcmVjdGlvbi56LCAwLjAsIC0gdk91dHB1dERpcmVjdGlvbi54ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGF4aXMgPSBub3JtYWxpemUoIGF4aXMgKTtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyAwIF0gKiBnZXRTYW1wbGUoIDAuMCwgYXhpcyApO1xuXG5cdFx0XHRcdGZvciAoIGludCBpID0gMTsgaSA8IG47IGkrKyApIHtcblxuXHRcdFx0XHRcdGlmICggaSA+PSBzYW1wbGVzICkge1xuXG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGZsb2F0IHRoZXRhID0gZFRoZXRhICogZmxvYXQoIGkgKTtcblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggLTEuMCAqIHRoZXRhLCBheGlzICk7XG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIHRoZXRhLCBheGlzICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cdFx0IixibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9KShHNnQpLHRoaXMuX2VxdWlyZWN0U2hhZGVyPW51bGwsdGhpcy5fY3ViZW1hcFNoYWRlcj1udWxsLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9ibHVyTWF0ZXJpYWwpfWZyb21TY2VuZSh0LGU9MCxuPS4xLGk9MTAwKXtLNnQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7Y29uc3Qgcj10aGlzLl9hbGxvY2F0ZVRhcmdldHMoKTtyZXR1cm4gdGhpcy5fc2NlbmVUb0N1YmVVVih0LG4saSxyKSxlPjAmJnRoaXMuX2JsdXIociwwLDAsZSksdGhpcy5fYXBwbHlQTVJFTShyKSx0aGlzLl9jbGVhbnVwKHIpLHJ9ZnJvbUVxdWlyZWN0YW5ndWxhcih0LGU9bnVsbCl7cmV0dXJuIHRoaXMuX2Zyb21UZXh0dXJlKHQsZSl9ZnJvbUN1YmVtYXAodCxlPW51bGwpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0LGUpfWNvbXBpbGVDdWJlbWFwU2hhZGVyKCl7bnVsbD09PXRoaXMuX2N1YmVtYXBTaGFkZXImJih0aGlzLl9jdWJlbWFwU2hhZGVyPW85dCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9jdWJlbWFwU2hhZGVyKSl9Y29tcGlsZUVxdWlyZWN0YW5ndWxhclNoYWRlcigpe251bGw9PT10aGlzLl9lcXVpcmVjdFNoYWRlciYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPXI5dCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9lcXVpcmVjdFNoYWRlcikpfWRpc3Bvc2UoKXt0aGlzLl9ibHVyTWF0ZXJpYWwuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldCYmdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9jdWJlbWFwU2hhZGVyJiZ0aGlzLl9jdWJlbWFwU2hhZGVyLmRpc3Bvc2UoKSxudWxsIT09dGhpcy5fZXF1aXJlY3RTaGFkZXImJnRoaXMuX2VxdWlyZWN0U2hhZGVyLmRpc3Bvc2UoKTtmb3IobGV0IHQ9MDt0PHE2dC5sZW5ndGg7dCsrKXE2dFt0XS5kaXNwb3NlKCl9X2NsZWFudXAodCl7dGhpcy5fcmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KEs2dCksdC5zY2lzc29yVGVzdD0hMSxpOXQodCwwLDAsdC53aWR0aCx0LmhlaWdodCl9X2Zyb21UZXh0dXJlKHQsZSl7SzZ0PXRoaXMuX3JlbmRlcmVyLmdldFJlbmRlclRhcmdldCgpO2NvbnN0IG49ZXx8dGhpcy5fYWxsb2NhdGVUYXJnZXRzKHQpO3JldHVybiB0aGlzLl90ZXh0dXJlVG9DdWJlVVYodCxuKSx0aGlzLl9hcHBseVBNUkVNKG4pLHRoaXMuX2NsZWFudXAobiksbn1fYWxsb2NhdGVUYXJnZXRzKHQpe2NvbnN0IGU9e21hZ0ZpbHRlcjpwMnQsbWluRmlsdGVyOnAydCxnZW5lcmF0ZU1pcG1hcHM6ITEsdHlwZTpiMnQsZm9ybWF0OncydCxlbmNvZGluZzpyNXQsZGVwdGhCdWZmZXI6ITF9LG49bjl0KGUpO3JldHVybiBuLmRlcHRoQnVmZmVyPSF0LG51bGw9PT10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldCYmKHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PW45dChlKSksbn1fY29tcGlsZU1hdGVyaWFsKHQpe2NvbnN0IGU9bmV3IHM2dChxNnRbMF0sdCk7dGhpcy5fcmVuZGVyZXIuY29tcGlsZShlLFc2dCl9X3NjZW5lVG9DdWJlVVYodCxlLG4saSl7Y29uc3Qgcj1uZXcgbTZ0KDkwLDEsZSxuKSxvPVsxLC0xLDEsMSwxLDFdLGE9WzEsMSwxLC0xLC0xLC0xXSxzPXRoaXMuX3JlbmRlcmVyLGw9cy5hdXRvQ2xlYXIsYz1zLnRvbmVNYXBwaW5nO3MuZ2V0Q2xlYXJDb2xvcigkNnQpLHMudG9uZU1hcHBpbmc9MCxzLmF1dG9DbGVhcj0hMTtjb25zdCB1PW5ldyB3NHQoe25hbWU6IlBNUkVNLkJhY2tncm91bmQiLHNpZGU6MSxkZXB0aFdyaXRlOiExLGRlcHRoVGVzdDohMX0pLGg9bmV3IHM2dChuZXcgYzZ0LHUpO2xldCBkPSExO2NvbnN0IHA9dC5iYWNrZ3JvdW5kO3A/cC5pc0NvbG9yJiYodS5jb2xvci5jb3B5KHApLHQuYmFja2dyb3VuZD1udWxsLGQ9ITApOih1LmNvbG9yLmNvcHkoJDZ0KSxkPSEwKTtmb3IobGV0IGU9MDtlPDY7ZSsrKXtjb25zdCBuPWUlMzswPT09bj8oci51cC5zZXQoMCxvW2VdLDApLHIubG9va0F0KGFbZV0sMCwwKSk6MT09PW4/KHIudXAuc2V0KDAsMCxvW2VdKSxyLmxvb2tBdCgwLGFbZV0sMCkpOihyLnVwLnNldCgwLG9bZV0sMCksci5sb29rQXQoMCwwLGFbZV0pKSxpOXQoaSxuKlY2dCxlPjI/VjZ0OjAsVjZ0LFY2dCkscy5zZXRSZW5kZXJUYXJnZXQoaSksZCYmcy5yZW5kZXIoaCxyKSxzLnJlbmRlcih0LHIpfWguZ2VvbWV0cnkuZGlzcG9zZSgpLGgubWF0ZXJpYWwuZGlzcG9zZSgpLHMudG9uZU1hcHBpbmc9YyxzLmF1dG9DbGVhcj1sLHQuYmFja2dyb3VuZD1wfV90ZXh0dXJlVG9DdWJlVVYodCxlKXtjb25zdCBuPXRoaXMuX3JlbmRlcmVyLGk9dC5tYXBwaW5nPT09ZTJ0fHx0Lm1hcHBpbmc9PT1uMnQ7aT8obnVsbD09PXRoaXMuX2N1YmVtYXBTaGFkZXImJih0aGlzLl9jdWJlbWFwU2hhZGVyPW85dCgpKSx0aGlzLl9jdWJlbWFwU2hhZGVyLnVuaWZvcm1zLmZsaXBFbnZNYXAudmFsdWU9ITE9PT10LmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxKTpudWxsPT09dGhpcy5fZXF1aXJlY3RTaGFkZXImJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1yOXQoKSk7Y29uc3Qgcj1pP3RoaXMuX2N1YmVtYXBTaGFkZXI6dGhpcy5fZXF1aXJlY3RTaGFkZXIsbz1uZXcgczZ0KHE2dFswXSxyKSxhPXIudW5pZm9ybXM7YS5lbnZNYXAudmFsdWU9dCxpfHxhLnRleGVsU2l6ZS52YWx1ZS5zZXQoMS90LmltYWdlLndpZHRoLDEvdC5pbWFnZS5oZWlnaHQpLGk5dChlLDAsMCwzKlY2dCwyKlY2dCksbi5zZXRSZW5kZXJUYXJnZXQoZSksbi5yZW5kZXIobyxXNnQpfV9hcHBseVBNUkVNKHQpe2NvbnN0IGU9dGhpcy5fcmVuZGVyZXIsbj1lLmF1dG9DbGVhcjtlLmF1dG9DbGVhcj0hMTtmb3IobGV0IGU9MTtlPGo2dDtlKyspe2NvbnN0IG49TWF0aC5zcXJ0KFg2dFtlXSpYNnRbZV0tWDZ0W2UtMV0qWDZ0W2UtMV0pO3RoaXMuX2JsdXIodCxlLTEsZSxuLFE2dFsoZS0xKSVRNnQubGVuZ3RoXSl9ZS5hdXRvQ2xlYXI9bn1fYmx1cih0LGUsbixpLHIpe2NvbnN0IG89dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ7dGhpcy5faGFsZkJsdXIodCxvLGUsbixpLCJsYXRpdHVkaW5hbCIsciksdGhpcy5faGFsZkJsdXIobyx0LG4sbixpLCJsb25naXR1ZGluYWwiLHIpfV9oYWxmQmx1cih0LGUsbixpLHIsbyxhKXtjb25zdCBzPXRoaXMuX3JlbmRlcmVyLGw9dGhpcy5fYmx1ck1hdGVyaWFsOyJsYXRpdHVkaW5hbCIhPT1vJiYibG9uZ2l0dWRpbmFsIiE9PW8mJmNvbnNvbGUuZXJyb3IoImJsdXIgZGlyZWN0aW9uIG11c3QgYmUgZWl0aGVyIGxhdGl0dWRpbmFsIG9yIGxvbmdpdHVkaW5hbCEiKTtjb25zdCBjPW5ldyBzNnQocTZ0W2ldLGwpLHU9bC51bmlmb3JtcyxoPVk2dFtuXS0xLGQ9aXNGaW5pdGUocik/TWF0aC5QSS8oMipoKToyKk1hdGguUEkvMzkscD1yL2QsZj1pc0Zpbml0ZShyKT8xK01hdGguZmxvb3IoMypwKTpHNnQ7Zj5HNnQmJmNvbnNvbGUud2Fybihgc2lnbWFSYWRpYW5zLCAke3J9LCBpcyB0b28gbGFyZ2UgYW5kIHdpbGwgY2xpcCwgYXMgaXQgcmVxdWVzdGVkICR7Zn0gc2FtcGxlcyB3aGVuIHRoZSBtYXhpbXVtIGlzIHNldCB0byAyMGApO2NvbnN0IG09W107bGV0IGc9MDtmb3IobGV0IHQ9MDt0PEc2dDsrK3Qpe2NvbnN0IGU9dC9wLG49TWF0aC5leHAoLWUqZS8yKTttLnB1c2gobiksMD09PXQ/Zys9bjp0PGYmJihnKz0yKm4pfWZvcihsZXQgdD0wO3Q8bS5sZW5ndGg7dCsrKW1bdF09bVt0XS9nO3UuZW52TWFwLnZhbHVlPXQudGV4dHVyZSx1LnNhbXBsZXMudmFsdWU9Zix1LndlaWdodHMudmFsdWU9bSx1LmxhdGl0dWRpbmFsLnZhbHVlPSJsYXRpdHVkaW5hbCI9PT1vLGEmJih1LnBvbGVBeGlzLnZhbHVlPWEpLHUuZFRoZXRhLnZhbHVlPWQsdS5taXBJbnQudmFsdWU9OC1uO2NvbnN0IF89WTZ0W2ldO2k5dChlLDMqTWF0aC5tYXgoMCxWNnQtMipfKSwoMD09PWk/MDoyKlY2dCkrMipfKihpPjQ/aS04KzQ6MCksMypfLDIqXykscy5zZXRSZW5kZXJUYXJnZXQoZSkscy5yZW5kZXIoYyxXNnQpfX1mdW5jdGlvbiBlOXQoKXtjb25zdCB0PVtdLGU9W10sbj1bXTtsZXQgaT04O2ZvcihsZXQgcj0wO3I8ajZ0O3IrKyl7Y29uc3Qgbz1NYXRoLnBvdygyLGkpO2UucHVzaChvKTtsZXQgYT0xL287cj40P2E9VTZ0W3ItOCs0LTFdOjA9PT1yJiYoYT0wKSxuLnB1c2goYSk7Y29uc3Qgcz0xLyhvLTEpLGw9LXMvMixjPTErcy8yLHU9W2wsbCxjLGwsYyxjLGwsbCxjLGMsbCxjXSxoPTYsZD02LHA9MyxmPTIsbT0xLGc9bmV3IEZsb2F0MzJBcnJheShwKmQqaCksXz1uZXcgRmxvYXQzMkFycmF5KGYqZCpoKSx5PW5ldyBGbG9hdDMyQXJyYXkobSpkKmgpO2ZvcihsZXQgdD0wO3Q8aDt0Kyspe2NvbnN0IGU9dCUzKjIvMy0xLG49dD4yPzA6LTE7Zy5zZXQoW2UsbiwwLGUrMi8zLG4sMCxlKzIvMyxuKzEsMCxlLG4sMCxlKzIvMyxuKzEsMCxlLG4rMSwwXSxwKmQqdCksXy5zZXQodSxmKmQqdCk7eS5zZXQoW3QsdCx0LHQsdCx0XSxtKmQqdCl9Y29uc3Qgdj1uZXcgajR0O3Yuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEU0dChnLHApKSx2LnNldEF0dHJpYnV0ZSgidXYiLG5ldyBFNHQoXyxmKSksdi5zZXRBdHRyaWJ1dGUoImZhY2VJbmRleCIsbmV3IEU0dCh5LG0pKSx0LnB1c2godiksaT40JiZpLS19cmV0dXJue19sb2RQbGFuZXM6dCxfc2l6ZUxvZHM6ZSxfc2lnbWFzOm59fWZ1bmN0aW9uIG45dCh0KXtjb25zdCBlPW5ldyBuM3QoMypWNnQsMypWNnQsdCk7cmV0dXJuIGUudGV4dHVyZS5tYXBwaW5nPW8ydCxlLnRleHR1cmUubmFtZT0iUE1SRU0uY3ViZVV2IixlLnNjaXNzb3JUZXN0PSEwLGV9ZnVuY3Rpb24gaTl0KHQsZSxuLGkscil7dC52aWV3cG9ydC5zZXQoZSxuLGksciksdC5zY2lzc29yLnNldChlLG4saSxyKX1mdW5jdGlvbiByOXQoKXtjb25zdCB0PW5ldyBENXQoMSwxKTtyZXR1cm4gbmV3IEY2dCh7bmFtZToiRXF1aXJlY3Rhbmd1bGFyVG9DdWJlVVYiLHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHRleGVsU2l6ZTp7dmFsdWU6dH19LHZlcnRleFNoYWRlcjphOXQoKSxmcmFnbWVudFNoYWRlcjoiXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHRcdFx0dW5pZm9ybSB2ZWMyIHRleGVsU2l6ZTtcblxuXHRcdFx0I2luY2x1ZGUgPGNvbW1vbj5cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXG5cdFx0XHRcdHZlYzMgb3V0cHV0RGlyZWN0aW9uID0gbm9ybWFsaXplKCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cdFx0XHRcdHZlYzIgdXYgPSBlcXVpcmVjdFV2KCBvdXRwdXREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgLyB0ZXhlbFNpemUgLSAwLjUgKTtcblx0XHRcdFx0dXYgLT0gZiAqIHRleGVsU2l6ZTtcblx0XHRcdFx0dmVjMyB0bCA9IHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKS5yZ2I7XG5cdFx0XHRcdHV2LnggKz0gdGV4ZWxTaXplLng7XG5cdFx0XHRcdHZlYzMgdHIgPSB0ZXh0dXJlMkQgKCBlbnZNYXAsIHV2ICkucmdiO1xuXHRcdFx0XHR1di55ICs9IHRleGVsU2l6ZS55O1xuXHRcdFx0XHR2ZWMzIGJyID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjtcblx0XHRcdFx0dXYueCAtPSB0ZXhlbFNpemUueDtcblx0XHRcdFx0dmVjMyBibCA9IHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKS5yZ2I7XG5cblx0XHRcdFx0dmVjMyB0bSA9IG1peCggdGwsIHRyLCBmLnggKTtcblx0XHRcdFx0dmVjMyBibSA9IG1peCggYmwsIGJyLCBmLnggKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggdG0sIGJtLCBmLnkgKTtcblxuXHRcdFx0fVxuXHRcdCIsYmxlbmRpbmc6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIG85dCgpe3JldHVybiBuZXcgRjZ0KHtuYW1lOiJDdWJlbWFwVG9DdWJlVVYiLHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LGZsaXBFbnZNYXA6e3ZhbHVlOi0xfX0sdmVydGV4U2hhZGVyOmE5dCgpLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHVuaWZvcm0gZmxvYXQgZmxpcEVudk1hcDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuXG5cdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggZmxpcEVudk1hcCAqIHZPdXRwdXREaXJlY3Rpb24ueCwgdk91dHB1dERpcmVjdGlvbi55eiApICk7XG5cblx0XHRcdH1cblx0XHQiLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBhOXQoKXtyZXR1cm4iXG5cblx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcblx0XHRhdHRyaWJ1dGUgdmVjMiB1djtcblx0XHRhdHRyaWJ1dGUgZmxvYXQgZmFjZUluZGV4O1xuXG5cdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHQvLyBSSCBjb29yZGluYXRlIHN5c3RlbTsgUE1SRU0gZmFjZS1pbmRleGluZyBjb252ZW50aW9uXG5cdFx0dmVjMyBnZXREaXJlY3Rpb24oIHZlYzIgdXYsIGZsb2F0IGZhY2UgKSB7XG5cblx0XHRcdHV2ID0gMi4wICogdXYgLSAxLjA7XG5cblx0XHRcdHZlYzMgZGlyZWN0aW9uID0gdmVjMyggdXYsIDEuMCApO1xuXG5cdFx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7IC8vICggMSwgdiwgdSApIHBvcyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC11LCAxLCAtdiApIHBvcyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi54ICo9IC0xLjA7IC8vICggLXUsIHYsIDEgKSBwb3MgelxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtMSwgdiwgLXUgKSBuZWcgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHkgKj0gLTEuMDsgLy8gKCAtdSwgLTEsIHYgKSBuZWcgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDUuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueiAqPSAtMS4wOyAvLyAoIHUsIHYsIC0xICkgbmVnIHpcblxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGlyZWN0aW9uO1xuXG5cdFx0fVxuXG5cdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHR2T3V0cHV0RGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uKCB1diwgZmFjZUluZGV4ICk7XG5cdFx0XHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblxuXHRcdH1cblx0In1mdW5jdGlvbiBzOXQodCl7bGV0IGU9bmV3IFdlYWtNYXAsbj1udWxsO2Z1bmN0aW9uIGkodCl7Y29uc3Qgbj10LnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGkpO2NvbnN0IHI9ZS5nZXQobik7dm9pZCAwIT09ciYmKGUuZGVsZXRlKG4pLHIuZGlzcG9zZSgpKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIHIobyl7aWYobyYmby5pc1RleHR1cmUpe2NvbnN0IHI9by5tYXBwaW5nLGE9cj09PWkydHx8cj09PXIydCxzPXI9PT1lMnR8fHI9PT1uMnQ7aWYoYXx8cyl7aWYoby5pc1JlbmRlclRhcmdldFRleHR1cmUmJiEwPT09by5uZWVkc1BNUkVNVXBkYXRlKXtvLm5lZWRzUE1SRU1VcGRhdGU9ITE7bGV0IGk9ZS5nZXQobyk7cmV0dXJuIG51bGw9PT1uJiYobj1uZXcgdDl0KHQpKSxpPWE/bi5mcm9tRXF1aXJlY3Rhbmd1bGFyKG8saSk6bi5mcm9tQ3ViZW1hcChvLGkpLGUuc2V0KG8saSksaS50ZXh0dXJlfWlmKGUuaGFzKG8pKXJldHVybiBlLmdldChvKS50ZXh0dXJlO3tjb25zdCByPW8uaW1hZ2U7aWYoYSYmciYmci5oZWlnaHQ+MHx8cyYmciYmKGZ1bmN0aW9uIGEodCl7bGV0IGU9MDtjb25zdCBuPTY7Zm9yKGxldCBpPTA7aTxuO2krKyl2b2lkIDAhPT10W2ldJiZlKys7cmV0dXJuIGU9PT1ufSkocikpe251bGw9PT1uJiYobj1uZXcgdDl0KHQpKTtjb25zdCByPWE/bi5mcm9tRXF1aXJlY3Rhbmd1bGFyKG8pOm4uZnJvbUN1YmVtYXAobyk7cmV0dXJuIGUuc2V0KG8sciksby5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKSxyLnRleHR1cmV9cmV0dXJuIG51bGx9fX1yZXR1cm4gb30sZGlzcG9zZTpmdW5jdGlvbiBvKCl7ZT1uZXcgV2Vha01hcCxudWxsIT09biYmKG4uZGlzcG9zZSgpLG49bnVsbCl9fX1mdW5jdGlvbiBsOXQodCl7Y29uc3QgZT17fTtmdW5jdGlvbiBuKG4pe2lmKHZvaWQgMCE9PWVbbl0pcmV0dXJuIGVbbl07bGV0IGk7c3dpdGNoKG4pe2Nhc2UiV0VCR0xfZGVwdGhfdGV4dHVyZSI6aT10LmdldEV4dGVuc2lvbigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpfHx0LmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2RlcHRoX3RleHR1cmUiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9kZXB0aF90ZXh0dXJlIik7YnJlYWs7Y2FzZSJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiOmk9dC5nZXRFeHRlbnNpb24oIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHx0LmdldEV4dGVuc2lvbigiTU9aX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2JyZWFrO2Nhc2UiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiOmk9dC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpO2JyZWFrO2Nhc2UiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIjppPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKTticmVhaztkZWZhdWx0Omk9dC5nZXRFeHRlbnNpb24obil9cmV0dXJuIGVbbl09aSxpfXJldHVybntoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT1uKHQpfSxpbml0OmZ1bmN0aW9uKHQpe3QuaXNXZWJHTDI/bigiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpOihuKCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksbigiT0VTX3RleHR1cmVfZmxvYXQiKSxuKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksbigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSxuKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSxuKCJPRVNfZWxlbWVudF9pbmRleF91aW50IiksbigiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxuKCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpLG4oIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpLG4oIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpLG4oIldFQkdMX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpfSxnZXQ6ZnVuY3Rpb24odCl7Y29uc3QgZT1uKHQpO3JldHVybiBudWxsPT09ZSYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK3QrIiBleHRlbnNpb24gbm90IHN1cHBvcnRlZC4iKSxlfX19ZnVuY3Rpb24gYzl0KHQsZSxuLGkpe2NvbnN0IHI9e30sbz1uZXcgV2Vha01hcDtmdW5jdGlvbiBhKHQpe2NvbnN0IHM9dC50YXJnZXQ7bnVsbCE9PXMuaW5kZXgmJmUucmVtb3ZlKHMuaW5kZXgpO2Zvcihjb25zdCB0IGluIHMuYXR0cmlidXRlcyllLnJlbW92ZShzLmF0dHJpYnV0ZXNbdF0pO3MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSksZGVsZXRlIHJbcy5pZF07Y29uc3QgbD1vLmdldChzKTtsJiYoZS5yZW1vdmUobCksby5kZWxldGUocykpLGkucmVsZWFzZVN0YXRlc09mR2VvbWV0cnkocyksITA9PT1zLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkmJmRlbGV0ZSBzLl9tYXhJbnN0YW5jZUNvdW50LG4ubWVtb3J5Lmdlb21ldHJpZXMtLX1mdW5jdGlvbiBzKHQpe2NvbnN0IG49W10saT10LmluZGV4LHI9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2xldCBhPTA7aWYobnVsbCE9PWkpe2NvbnN0IHQ9aS5hcnJheTthPWkudmVyc2lvbjtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKz0zKXtjb25zdCBpPXRbZSswXSxyPXRbZSsxXSxvPXRbZSsyXTtuLnB1c2goaSxyLHIsbyxvLGkpfX1lbHNle2E9ci52ZXJzaW9uO2ZvcihsZXQgdD0wLGU9ci5hcnJheS5sZW5ndGgvMy0xO3Q8ZTt0Kz0zKXtjb25zdCBlPXQrMCxpPXQrMSxyPXQrMjtuLnB1c2goZSxpLGkscixyLGUpfX1jb25zdCBzPW5ldyhINXQobik/STR0OlA0dCkobiwxKTtzLnZlcnNpb249YTtjb25zdCBsPW8uZ2V0KHQpO2wmJmUucmVtb3ZlKGwpLG8uc2V0KHQscyl9cmV0dXJue2dldDpmdW5jdGlvbiBsKHQsZSl7cmV0dXJuITA9PT1yW2UuaWRdfHwoZS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixhKSxyW2UuaWRdPSEwLG4ubWVtb3J5Lmdlb21ldHJpZXMrKyksZX0sdXBkYXRlOmZ1bmN0aW9uIGModCl7Y29uc3Qgbj10LmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gbillLnVwZGF0ZShuW3RdLDM0OTYyKTtjb25zdCBpPXQubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIGkpe2NvbnN0IG49aVt0XTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0KyspZS51cGRhdGUoblt0XSwzNDk2Mil9fSxnZXRXaXJlZnJhbWVBdHRyaWJ1dGU6ZnVuY3Rpb24gdSh0KXtjb25zdCBlPW8uZ2V0KHQpO2lmKGUpe2NvbnN0IG49dC5pbmRleDtudWxsIT09biYmZS52ZXJzaW9uPG4udmVyc2lvbiYmcyh0KX1lbHNlIHModCk7cmV0dXJuIG8uZ2V0KHQpfX19ZnVuY3Rpb24gdTl0KHQsZSxuLGkpe2NvbnN0IHI9aS5pc1dlYkdMMjtsZXQgbyxhLHM7dGhpcy5zZXRNb2RlPWZ1bmN0aW9uIGwodCl7bz10fSx0aGlzLnNldEluZGV4PWZ1bmN0aW9uIGModCl7YT10LnR5cGUscz10LmJ5dGVzUGVyRWxlbWVudH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gdShlLGkpe3QuZHJhd0VsZW1lbnRzKG8saSxhLGUqcyksbi51cGRhdGUoaSxvLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBoKGksbCxjKXtpZigwPT09YylyZXR1cm47bGV0IHUsaDtpZihyKXU9dCxoPSJkcmF3RWxlbWVudHNJbnN0YW5jZWQiO2Vsc2UgaWYodT1lLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLGg9ImRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIixudWxsPT09dSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZGV4ZWRCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuIik7dVtoXShvLGwsYSxpKnMsYyksbi51cGRhdGUobCxvLGMpfX1mdW5jdGlvbiBoOXQodCl7Y29uc3QgZT17ZnJhbWU6MCxjYWxsczowLHRyaWFuZ2xlczowLHBvaW50czowLGxpbmVzOjB9O3JldHVybnttZW1vcnk6e2dlb21ldHJpZXM6MCx0ZXh0dXJlczowfSxyZW5kZXI6ZSxwcm9ncmFtczpudWxsLGF1dG9SZXNldDohMCxyZXNldDpmdW5jdGlvbiBuKCl7ZS5mcmFtZSsrLGUuY2FsbHM9MCxlLnRyaWFuZ2xlcz0wLGUucG9pbnRzPTAsZS5saW5lcz0wfSx1cGRhdGU6ZnVuY3Rpb24gaSh0LG4scil7c3dpdGNoKGUuY2FsbHMrKyxuKXtjYXNlIDQ6ZS50cmlhbmdsZXMrPXIqKHQvMyk7YnJlYWs7Y2FzZSAxOmUubGluZXMrPXIqKHQvMik7YnJlYWs7Y2FzZSAzOmUubGluZXMrPXIqKHQtMSk7YnJlYWs7Y2FzZSAyOmUubGluZXMrPXIqdDticmVhaztjYXNlIDA6ZS5wb2ludHMrPXIqdDticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5mbzogVW5rbm93biBkcmF3IG1vZGU6IixuKX19fX1jbGFzcyBkOXQgZXh0ZW5kcyBRNXR7Y29uc3RydWN0b3IodD1udWxsLGU9MSxuPTEsaT0xKXtzdXBlcihudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6bixkZXB0aDppfSx0aGlzLm1hZ0ZpbHRlcj11MnQsdGhpcy5taW5GaWx0ZXI9dTJ0LHRoaXMud3JhcFI9bDJ0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MX19ZnVuY3Rpb24gcDl0KHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBmOXQodCxlKXtyZXR1cm4gTWF0aC5hYnMoZVsxXSktTWF0aC5hYnModFsxXSl9ZnVuY3Rpb24gbTl0KHQsZSl7bGV0IG49MTtjb25zdCBpPWUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT9lLmRhdGEuYXJyYXk6ZS5hcnJheTtpIGluc3RhbmNlb2YgSW50OEFycmF5P249MTI3OmkgaW5zdGFuY2VvZiBJbnQxNkFycmF5P249MzI3Njc6aSBpbnN0YW5jZW9mIEludDMyQXJyYXk/bj0yMTQ3NDgzNjQ3OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMTW9ycGh0YXJnZXRzOiBVbnN1cHBvcnRlZCBtb3JwaCBhdHRyaWJ1dGUgZGF0YSB0eXBlOiAiLGkpLHQuZGl2aWRlU2NhbGFyKG4pfWZ1bmN0aW9uIGc5dCh0LGUsbil7Y29uc3QgaT17fSxyPW5ldyBGbG9hdDMyQXJyYXkoOCksbz1uZXcgV2Vha01hcCxhPW5ldyBhM3Qscz1bXTtmb3IobGV0IHQ9MDt0PDg7dCsrKXNbdF09W3QsMF07cmV0dXJue3VwZGF0ZTpmdW5jdGlvbiBsKGMsdSxoLGQpe2NvbnN0IHA9Yy5tb3JwaFRhcmdldEluZmx1ZW5jZXM7aWYoITA9PT1lLmlzV2ViR0wyKXtjb25zdCBpPXUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aDtsZXQgcj1vLmdldCh1KTtpZih2b2lkIDA9PT1yfHxyLmNvdW50IT09aSl7dm9pZCAwIT09ciYmci50ZXh0dXJlLmRpc3Bvc2UoKTtjb25zdCB0PXZvaWQgMCE9PXUubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxuPXUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLHM9dS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsfHxbXSxsPSEwPT09dD8yOjE7bGV0IGM9dS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmNvdW50KmwsaD0xO2M+ZS5tYXhUZXh0dXJlU2l6ZSYmKGg9TWF0aC5jZWlsKGMvZS5tYXhUZXh0dXJlU2l6ZSksYz1lLm1heFRleHR1cmVTaXplKTtjb25zdCBkPW5ldyBGbG9hdDMyQXJyYXkoYypoKjQqaSkscD1uZXcgZDl0KGQsYyxoLGkpO3AuZm9ybWF0PXcydCxwLnR5cGU9djJ0LHAubmVlZHNVcGRhdGU9ITA7Y29uc3QgZj00Kmw7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgaT1uW2VdLHI9c1tlXSxvPWMqaCo0KmU7Zm9yKGxldCBlPTA7ZTxpLmNvdW50O2UrKyl7YS5mcm9tQnVmZmVyQXR0cmlidXRlKGksZSksITA9PT1pLm5vcm1hbGl6ZWQmJm05dChhLGkpO2NvbnN0IG49ZSpmO2RbbytuKzBdPWEueCxkW28rbisxXT1hLnksZFtvK24rMl09YS56LGRbbytuKzNdPTAsITA9PT10JiYoYS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsZSksITA9PT1yLm5vcm1hbGl6ZWQmJm05dChhLHIpLGRbbytuKzRdPWEueCxkW28rbis1XT1hLnksZFtvK24rNl09YS56LGRbbytuKzddPTApfX1yPXtjb3VudDppLHRleHR1cmU6cCxzaXplOm5ldyBENXQoYyxoKX0sby5zZXQodSxyKSx1LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLChmdW5jdGlvbiB0KCl7cC5kaXNwb3NlKCksby5kZWxldGUodSksdS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIix0KX0pKX1sZXQgcz0wO2ZvcihsZXQgdD0wO3Q8cC5sZW5ndGg7dCsrKXMrPXBbdF07Y29uc3QgbD11Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlPzE6MS1zO2QuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2UiLGwpLGQuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiLHApLGQuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldHNUZXh0dXJlIixyLnRleHR1cmUsbiksZC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKHQsIm1vcnBoVGFyZ2V0c1RleHR1cmVTaXplIixyLnNpemUpfWVsc2V7Y29uc3QgZT12b2lkIDA9PT1wPzA6cC5sZW5ndGg7bGV0IG49aVt1LmlkXTtpZih2b2lkIDA9PT1ufHxuLmxlbmd0aCE9PWUpe249W107Zm9yKGxldCB0PTA7dDxlO3QrKyluW3RdPVt0LDBdO2lbdS5pZF09bn1mb3IobGV0IHQ9MDt0PGU7dCsrKXtjb25zdCBlPW5bdF07ZVswXT10LGVbMV09cFt0XX1uLnNvcnQoZjl0KTtmb3IobGV0IHQ9MDt0PDg7dCsrKXQ8ZSYmblt0XVsxXT8oc1t0XVswXT1uW3RdWzBdLHNbdF1bMV09blt0XVsxXSk6KHNbdF1bMF09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsc1t0XVsxXT0wKTtzLnNvcnQocDl0KTtjb25zdCBvPXUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLGE9dS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsO2xldCBsPTA7Zm9yKGxldCB0PTA7dDw4O3QrKyl7Y29uc3QgZT1zW3RdLG49ZVswXSxpPWVbMV07biE9PU51bWJlci5NQVhfU0FGRV9JTlRFR0VSJiZpPyhvJiZ1LmdldEF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpIT09b1tuXSYmdS5zZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0LG9bbl0pLGEmJnUuZ2V0QXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCkhPT1hW25dJiZ1LnNldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QsYVtuXSksclt0XT1pLGwrPWkpOihvJiYhMD09PXUuaGFzQXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCkmJnUuZGVsZXRlQXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCksYSYmITA9PT11Lmhhc0F0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpJiZ1LmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpLHJbdF09MCl9Y29uc3QgYz11Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlPzE6MS1sO2QuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2UiLGMpLGQuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiLHIpfX19fWZ1bmN0aW9uIF85dCh0LGUsbixpKXtsZXQgcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKSxuLnJlbW92ZShlLmluc3RhbmNlTWF0cml4KSxudWxsIT09ZS5pbnN0YW5jZUNvbG9yJiZuLnJlbW92ZShlLmluc3RhbmNlQ29sb3IpfXJldHVybnt1cGRhdGU6ZnVuY3Rpb24gYSh0KXtjb25zdCBhPWkucmVuZGVyLmZyYW1lLHM9ZS5nZXQodCx0Lmdlb21ldHJ5KTtyZXR1cm4gci5nZXQocykhPT1hJiYoZS51cGRhdGUocyksci5zZXQocyxhKSksdC5pc0luc3RhbmNlZE1lc2gmJighMT09PXQuaGFzRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbykmJnQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksbi51cGRhdGUodC5pbnN0YW5jZU1hdHJpeCwzNDk2MiksbnVsbCE9PXQuaW5zdGFuY2VDb2xvciYmbi51cGRhdGUodC5pbnN0YW5jZUNvbG9yLDM0OTYyKSksc30sZGlzcG9zZTpmdW5jdGlvbiBzKCl7cj1uZXcgV2Vha01hcH19fWQ5dC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTJEQXJyYXk9ITA7Y2xhc3MgeTl0IGV4dGVuZHMgUTV0e2NvbnN0cnVjdG9yKHQ9bnVsbCxlPTEsbj0xLGk9MSl7c3VwZXIobnVsbCksdGhpcy5pbWFnZT17ZGF0YTp0LHdpZHRoOmUsaGVpZ2h0Om4sZGVwdGg6aX0sdGhpcy5tYWdGaWx0ZXI9dTJ0LHRoaXMubWluRmlsdGVyPXUydCx0aGlzLndyYXBSPWwydCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTF9fXk5dC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTNEPSEwO2NvbnN0IHY5dD1uZXcgUTV0LGI5dD1uZXcgZDl0LHg5dD1uZXcgeTl0LHc5dD1uZXcgeTZ0LFM5dD1bXSxNOXQ9W10sRTl0PW5ldyBGbG9hdDMyQXJyYXkoMTYpLFQ5dD1uZXcgRmxvYXQzMkFycmF5KDkpLEM5dD1uZXcgRmxvYXQzMkFycmF5KDQpO2Z1bmN0aW9uIEE5dCh0LGUsbil7Y29uc3QgaT10WzBdO2lmKGk8PTB8fGk+MClyZXR1cm4gdDtjb25zdCByPWUqbjtsZXQgbz1TOXRbcl07aWYodm9pZCAwPT09byYmKG89bmV3IEZsb2F0MzJBcnJheShyKSxTOXRbcl09byksMCE9PWUpe2kudG9BcnJheShvLDApO2ZvcihsZXQgaT0xLHI9MDtpIT09ZTsrK2kpcis9bix0W2ldLnRvQXJyYXkobyxyKX1yZXR1cm4gb31mdW5jdGlvbiBrOXQodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBQOXQodCxlKXtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspdFtuXT1lW25dfWZ1bmN0aW9uIEw5dCh0LGUpe2xldCBuPU05dFtlXTt2b2lkIDA9PT1uJiYobj1uZXcgSW50MzJBcnJheShlKSxNOXRbZV09bik7Zm9yKGxldCBpPTA7aSE9PWU7KytpKW5baV09dC5hbGxvY2F0ZVRleHR1cmVVbml0KCk7cmV0dXJuIG59ZnVuY3Rpb24gSTl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWYodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gTjl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55fHwodC51bmlmb3JtMmYodGhpcy5hZGRyLGUueCxlLnkpLG5bMF09ZS54LG5bMV09ZS55KTtlbHNle2lmKGs5dChuLGUpKXJldHVybjt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLGUpLFA5dChuLGUpfX1mdW5jdGlvbiBSOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnp8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS54LGUueSxlLnopLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56KTtlbHNlIGlmKHZvaWQgMCE9PWUuciluWzBdPT09ZS5yJiZuWzFdPT09ZS5nJiZuWzJdPT09ZS5ifHwodC51bmlmb3JtM2YodGhpcy5hZGRyLGUucixlLmcsZS5iKSxuWzBdPWUucixuWzFdPWUuZyxuWzJdPWUuYik7ZWxzZXtpZihrOXQobixlKSlyZXR1cm47dC51bmlmb3JtM2Z2KHRoaXMuYWRkcixlKSxQOXQobixlKX19ZnVuY3Rpb24gTzl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55JiZuWzJdPT09ZS56JiZuWzNdPT09ZS53fHwodC51bmlmb3JtNGYodGhpcy5hZGRyLGUueCxlLnksZS56LGUudyksblswXT1lLngsblsxXT1lLnksblsyXT1lLnosblszXT1lLncpO2Vsc2V7aWYoazl0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsZSksUDl0KG4sZSl9fWZ1bmN0aW9uIHo5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxpPWUuZWxlbWVudHM7aWYodm9pZCAwPT09aSl7aWYoazl0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSksUDl0KG4sZSl9ZWxzZXtpZihrOXQobixpKSlyZXR1cm47Qzl0LnNldChpKSx0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLEM5dCksUDl0KG4saSl9fWZ1bmN0aW9uIEQ5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxpPWUuZWxlbWVudHM7aWYodm9pZCAwPT09aSl7aWYoazl0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsZSksUDl0KG4sZSl9ZWxzZXtpZihrOXQobixpKSlyZXR1cm47VDl0LnNldChpKSx0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLFQ5dCksUDl0KG4saSl9fWZ1bmN0aW9uIEI5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxpPWUuZWxlbWVudHM7aWYodm9pZCAwPT09aSl7aWYoazl0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsZSksUDl0KG4sZSl9ZWxzZXtpZihrOXQobixpKSlyZXR1cm47RTl0LnNldChpKSx0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLEU5dCksUDl0KG4saSl9fWZ1bmN0aW9uIEg5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIEY5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtrOXQobixlKXx8KHQudW5pZm9ybTJpdih0aGlzLmFkZHIsZSksUDl0KG4sZSkpfWZ1bmN0aW9uIFY5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtrOXQobixlKXx8KHQudW5pZm9ybTNpdih0aGlzLmFkZHIsZSksUDl0KG4sZSkpfWZ1bmN0aW9uIFU5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtrOXQobixlKXx8KHQudW5pZm9ybTRpdih0aGlzLmFkZHIsZSksUDl0KG4sZSkpfWZ1bmN0aW9uIGo5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTF1aSh0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBHOXQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7azl0KG4sZSl8fCh0LnVuaWZvcm0ydWl2KHRoaXMuYWRkcixlKSxQOXQobixlKSl9ZnVuY3Rpb24gVzl0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2s5dChuLGUpfHwodC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSksUDl0KG4sZSkpfWZ1bmN0aW9uIHE5dCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtrOXQobixlKXx8KHQudW5pZm9ybTR1aXYodGhpcy5hZGRyLGUpLFA5dChuLGUpKX1mdW5jdGlvbiBZOXQodCxlLG4pe2NvbnN0IGk9dGhpcy5jYWNoZSxyPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksbi5zYWZlU2V0VGV4dHVyZTJEKGV8fHY5dCxyKX1mdW5jdGlvbiBYOXQodCxlLG4pe2NvbnN0IGk9dGhpcy5jYWNoZSxyPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksbi5zZXRUZXh0dXJlM0QoZXx8eDl0LHIpfWZ1bmN0aW9uICQ5dCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNhZmVTZXRUZXh0dXJlQ3ViZShlfHx3OXQscil9ZnVuY3Rpb24gSzl0KHQsZSxuKXtjb25zdCBpPXRoaXMuY2FjaGUscj1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtpWzBdIT09ciYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixyKSxpWzBdPXIpLG4uc2V0VGV4dHVyZTJEQXJyYXkoZXx8Yjl0LHIpfWZ1bmN0aW9uIFo5dCh0LGUpe3QudW5pZm9ybTFmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSjl0KHQsZSl7Y29uc3Qgbj1BOXQoZSx0aGlzLnNpemUsMik7dC51bmlmb3JtMmZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBROXQodCxlKXtjb25zdCBuPUE5dChlLHRoaXMuc2l6ZSwzKTt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIHQ4dCh0LGUpe2NvbnN0IG49QTl0KGUsdGhpcy5zaXplLDQpO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gZTh0KHQsZSl7Y29uc3Qgbj1BOXQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxuKX1mdW5jdGlvbiBuOHQodCxlKXtjb25zdCBuPUE5dChlLHRoaXMuc2l6ZSw5KTt0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIGk4dCh0LGUpe2NvbnN0IG49QTl0KGUsdGhpcy5zaXplLDE2KTt0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIHI4dCh0LGUpe3QudW5pZm9ybTFpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gbzh0KHQsZSl7dC51bmlmb3JtMml2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBhOHQodCxlKXt0LnVuaWZvcm0zaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIHM4dCh0LGUpe3QudW5pZm9ybTRpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gbDh0KHQsZSl7dC51bmlmb3JtMXVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gYzh0KHQsZSl7dC51bmlmb3JtMnVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gdTh0KHQsZSl7dC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gaDh0KHQsZSl7dC51bmlmb3JtNHVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gZDh0KHQsZSxuKXtjb25zdCBpPWUubGVuZ3RoLHI9TDl0KG4saSk7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixyKTtmb3IobGV0IHQ9MDt0IT09aTsrK3Qpbi5zYWZlU2V0VGV4dHVyZTJEKGVbdF18fHY5dCxyW3RdKX1mdW5jdGlvbiBwOHQodCxlLG4pe2NvbnN0IGk9ZS5sZW5ndGgscj1MOXQobixpKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLHIpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCluLnNldFRleHR1cmUzRChlW3RdfHx4OXQsclt0XSl9ZnVuY3Rpb24gZjh0KHQsZSxuKXtjb25zdCBpPWUubGVuZ3RoLHI9TDl0KG4saSk7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixyKTtmb3IobGV0IHQ9MDt0IT09aTsrK3Qpbi5zYWZlU2V0VGV4dHVyZUN1YmUoZVt0XXx8dzl0LHJbdF0pfWZ1bmN0aW9uIG04dCh0LGUsbil7Y29uc3QgaT1lLmxlbmd0aCxyPUw5dChuLGkpO3QudW5pZm9ybTFpdih0aGlzLmFkZHIscik7Zm9yKGxldCB0PTA7dCE9PWk7Kyt0KW4uc2V0VGV4dHVyZTJEQXJyYXkoZVt0XXx8Yjl0LHJbdF0pfWZ1bmN0aW9uIGc4dCh0LGUsbil7dGhpcy5pZD10LHRoaXMuYWRkcj1uLHRoaXMuY2FjaGU9W10sdGhpcy5zZXRWYWx1ZT0oZnVuY3Rpb24gaSh0KXtzd2l0Y2godCl7Y2FzZSA1MTI2OnJldHVybiBJOXQ7Y2FzZSAzNTY2NDpyZXR1cm4gTjl0O2Nhc2UgMzU2NjU6cmV0dXJuIFI5dDtjYXNlIDM1NjY2OnJldHVybiBPOXQ7Y2FzZSAzNTY3NDpyZXR1cm4gejl0O2Nhc2UgMzU2NzU6cmV0dXJuIEQ5dDtjYXNlIDM1Njc2OnJldHVybiBCOXQ7Y2FzZSA1MTI0OmNhc2UgMzU2NzA6cmV0dXJuIEg5dDtjYXNlIDM1NjY3OmNhc2UgMzU2NzE6cmV0dXJuIEY5dDtjYXNlIDM1NjY4OmNhc2UgMzU2NzI6cmV0dXJuIFY5dDtjYXNlIDM1NjY5OmNhc2UgMzU2NzM6cmV0dXJuIFU5dDtjYXNlIDUxMjU6cmV0dXJuIGo5dDtjYXNlIDM2Mjk0OnJldHVybiBHOXQ7Y2FzZSAzNjI5NTpyZXR1cm4gVzl0O2Nhc2UgMzYyOTY6cmV0dXJuIHE5dDtjYXNlIDM1Njc4OmNhc2UgMzYxOTg6Y2FzZSAzNjI5ODpjYXNlIDM2MzA2OmNhc2UgMzU2ODI6cmV0dXJuIFk5dDtjYXNlIDM1Njc5OmNhc2UgMzYyOTk6Y2FzZSAzNjMwNzpyZXR1cm4gWDl0O2Nhc2UgMzU2ODA6Y2FzZSAzNjMwMDpjYXNlIDM2MzA4OmNhc2UgMzYyOTM6cmV0dXJuICQ5dDtjYXNlIDM2Mjg5OmNhc2UgMzYzMDM6Y2FzZSAzNjMxMTpjYXNlIDM2MjkyOnJldHVybiBLOXR9fSkoZS50eXBlKX1mdW5jdGlvbiBfOHQodCxlLG4pe3RoaXMuaWQ9dCx0aGlzLmFkZHI9bix0aGlzLmNhY2hlPVtdLHRoaXMuc2l6ZT1lLnNpemUsdGhpcy5zZXRWYWx1ZT0oZnVuY3Rpb24gaSh0KXtzd2l0Y2godCl7Y2FzZSA1MTI2OnJldHVybiBaOXQ7Y2FzZSAzNTY2NDpyZXR1cm4gSjl0O2Nhc2UgMzU2NjU6cmV0dXJuIFE5dDtjYXNlIDM1NjY2OnJldHVybiB0OHQ7Y2FzZSAzNTY3NDpyZXR1cm4gZTh0O2Nhc2UgMzU2NzU6cmV0dXJuIG44dDtjYXNlIDM1Njc2OnJldHVybiBpOHQ7Y2FzZSA1MTI0OmNhc2UgMzU2NzA6cmV0dXJuIHI4dDtjYXNlIDM1NjY3OmNhc2UgMzU2NzE6cmV0dXJuIG84dDtjYXNlIDM1NjY4OmNhc2UgMzU2NzI6cmV0dXJuIGE4dDtjYXNlIDM1NjY5OmNhc2UgMzU2NzM6cmV0dXJuIHM4dDtjYXNlIDUxMjU6cmV0dXJuIGw4dDtjYXNlIDM2Mjk0OnJldHVybiBjOHQ7Y2FzZSAzNjI5NTpyZXR1cm4gdTh0O2Nhc2UgMzYyOTY6cmV0dXJuIGg4dDtjYXNlIDM1Njc4OmNhc2UgMzYxOTg6Y2FzZSAzNjI5ODpjYXNlIDM2MzA2OmNhc2UgMzU2ODI6cmV0dXJuIGQ4dDtjYXNlIDM1Njc5OmNhc2UgMzYyOTk6Y2FzZSAzNjMwNzpyZXR1cm4gcDh0O2Nhc2UgMzU2ODA6Y2FzZSAzNjMwMDpjYXNlIDM2MzA4OmNhc2UgMzYyOTM6cmV0dXJuIGY4dDtjYXNlIDM2Mjg5OmNhc2UgMzYzMDM6Y2FzZSAzNjMxMTpjYXNlIDM2MjkyOnJldHVybiBtOHR9fSkoZS50eXBlKX1mdW5jdGlvbiB5OHQodCl7dGhpcy5pZD10LHRoaXMuc2VxPVtdLHRoaXMubWFwPXt9fV84dC5wcm90b3R5cGUudXBkYXRlQ2FjaGU9ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLmNhY2hlO3QgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkmJmUubGVuZ3RoIT09dC5sZW5ndGgmJih0aGlzLmNhY2hlPW5ldyBGbG9hdDMyQXJyYXkodC5sZW5ndGgpKSxQOXQoZSx0KX0seTh0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUsbil7Y29uc3QgaT10aGlzLnNlcTtmb3IobGV0IHI9MCxvPWkubGVuZ3RoO3IhPT1vOysrcil7Y29uc3Qgbz1pW3JdO28uc2V0VmFsdWUodCxlW28uaWRdLG4pfX07Y29uc3Qgdjh0PS8oXHcrKShcXSk/KFxbfFwuKT8vZztmdW5jdGlvbiBiOHQodCxlKXt0LnNlcS5wdXNoKGUpLHQubWFwW2UuaWRdPWV9ZnVuY3Rpb24geDh0KHQsZSxuKXtjb25zdCBpPXQubmFtZSxyPWkubGVuZ3RoO2Zvcih2OHQubGFzdEluZGV4PTA7Oyl7Y29uc3Qgbz12OHQuZXhlYyhpKSxhPXY4dC5sYXN0SW5kZXg7bGV0IHM9b1sxXTtjb25zdCBsPW9bM107aWYoIl0iPT09b1syXSYmKHN8PTApLHZvaWQgMD09PWx8fCJbIj09PWwmJmErMj09PXIpe2I4dChuLHZvaWQgMD09PWw/bmV3IGc4dChzLHQsZSk6bmV3IF84dChzLHQsZSkpO2JyZWFrfXtsZXQgdD1uLm1hcFtzXTt2b2lkIDA9PT10JiYodD1uZXcgeTh0KHMpLGI4dChuLHQpKSxuPXR9fX1mdW5jdGlvbiB3OHQodCxlKXt0aGlzLnNlcT1bXSx0aGlzLm1hcD17fTtjb25zdCBuPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLDM1NzE4KTtmb3IobGV0IGk9MDtpPG47KytpKXtjb25zdCBuPXQuZ2V0QWN0aXZlVW5pZm9ybShlLGkpO3g4dChuLHQuZ2V0VW5pZm9ybUxvY2F0aW9uKGUsbi5uYW1lKSx0aGlzKX19ZnVuY3Rpb24gUzh0KHQsZSxuKXtjb25zdCBpPXQuY3JlYXRlU2hhZGVyKGUpO3JldHVybiB0LnNoYWRlclNvdXJjZShpLG4pLHQuY29tcGlsZVNoYWRlcihpKSxpfXc4dC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlLG4saSl7Y29uc3Qgcj10aGlzLm1hcFtlXTt2b2lkIDAhPT1yJiZyLnNldFZhbHVlKHQsbixpKX0sdzh0LnByb3RvdHlwZS5zZXRPcHRpb25hbD1mdW5jdGlvbih0LGUsbil7Y29uc3QgaT1lW25dO3ZvaWQgMCE9PWkmJnRoaXMuc2V0VmFsdWUodCxuLGkpfSx3OHQudXBsb2FkPWZ1bmN0aW9uKHQsZSxuLGkpe2ZvcihsZXQgcj0wLG89ZS5sZW5ndGg7ciE9PW87KytyKXtjb25zdCBvPWVbcl0sYT1uW28uaWRdOyExIT09YS5uZWVkc1VwZGF0ZSYmby5zZXRWYWx1ZSh0LGEudmFsdWUsaSl9fSx3OHQuc2VxV2l0aFZhbHVlPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2khPT1yOysraSl7Y29uc3Qgcj10W2ldO3IuaWQgaW4gZSYmbi5wdXNoKHIpfXJldHVybiBufTtsZXQgTTh0PTA7ZnVuY3Rpb24gRTh0KHQsZSxuKXtjb25zdCBpPXQuZ2V0U2hhZGVyUGFyYW1ldGVyKGUsMzU3MTMpLHI9dC5nZXRTaGFkZXJJbmZvTG9nKGUpLnRyaW0oKTtyZXR1cm4gaSYmIiI9PT1yPyIiOm4udG9VcHBlckNhc2UoKSsiXG5cbiIrcisiXG5cbiIrKGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10LnNwbGl0KCJcbiIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF09dCsxKyI6ICIrZVt0XTtyZXR1cm4gZS5qb2luKCJcbiIpfSkodC5nZXRTaGFkZXJTb3VyY2UoZSkpfWZ1bmN0aW9uIFQ4dCh0LGUpe2NvbnN0IG49KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UgcjV0OnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSBvNXQ6cmV0dXJuWyJzUkdCIiwiKCB2YWx1ZSApIl07ZGVmYXVsdDpyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIGVuY29kaW5nOiIsdCksWyJMaW5lYXIiLCIoIHZhbHVlICkiXX19KShlKTtyZXR1cm4idmVjNCAiK3QrIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuIExpbmVhclRvIituWzBdK25bMV0rIjsgfSJ9ZnVuY3Rpb24gQzh0KHQsZSl7bGV0IG47c3dpdGNoKGUpe2Nhc2UgMTpuPSJMaW5lYXIiO2JyZWFrO2Nhc2UgMjpuPSJSZWluaGFyZCI7YnJlYWs7Y2FzZSAzOm49Ik9wdGltaXplZENpbmVvbiI7YnJlYWs7Y2FzZSA0Om49IkFDRVNGaWxtaWMiO2JyZWFrO2Nhc2UgNTpuPSJDdXN0b20iO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIHRvbmVNYXBwaW5nOiIsZSksbj0iTGluZWFyIn1yZXR1cm4idmVjMyAiK3QrIiggdmVjMyBjb2xvciApIHsgcmV0dXJuICIrbisiVG9uZU1hcHBpbmcoIGNvbG9yICk7IH0ifWZ1bmN0aW9uIEE4dCh0KXtyZXR1cm4iIiE9PXR9ZnVuY3Rpb24gazh0KHQsZSl7cmV0dXJuIHQucmVwbGFjZSgvTlVNX0RJUl9MSUdIVFMvZyxlLm51bURpckxpZ2h0cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRTL2csZS5udW1TcG90TGlnaHRzKS5yZXBsYWNlKC9OVU1fUkVDVF9BUkVBX0xJR0hUUy9nLGUubnVtUmVjdEFyZWFMaWdodHMpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVFMvZyxlLm51bVBvaW50TGlnaHRzKS5yZXBsYWNlKC9OVU1fSEVNSV9MSUdIVFMvZyxlLm51bUhlbWlMaWdodHMpLnJlcGxhY2UoL05VTV9ESVJfTElHSFRfU0hBRE9XUy9nLGUubnVtRGlyTGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVF9TSEFET1dTL2csZS5udW1TcG90TGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRfU0hBRE9XUy9nLGUubnVtUG9pbnRMaWdodFNoYWRvd3MpfWZ1bmN0aW9uIFA4dCh0LGUpe3JldHVybiB0LnJlcGxhY2UoL05VTV9DTElQUElOR19QTEFORVMvZyxlLm51bUNsaXBwaW5nUGxhbmVzKS5yZXBsYWNlKC9VTklPTl9DTElQUElOR19QTEFORVMvZyxlLm51bUNsaXBwaW5nUGxhbmVzLWUubnVtQ2xpcEludGVyc2VjdGlvbil9Y29uc3QgTDh0PS9eWyBcdF0qI2luY2x1ZGUgKzwoW1x3XGQuL10rKT4vZ207ZnVuY3Rpb24gSTh0KHQpe3JldHVybiB0LnJlcGxhY2UoTDh0LE44dCl9ZnVuY3Rpb24gTjh0KHQsZSl7Y29uc3Qgbj1QNnRbZV07aWYodm9pZCAwPT09bil0aHJvdyBuZXcgRXJyb3IoIkNhbiBub3QgcmVzb2x2ZSAjaW5jbHVkZSA8IitlKyI+Iik7cmV0dXJuIEk4dChuKX1jb25zdCBSOHQ9LyNwcmFnbWEgdW5yb2xsX2xvb3BbXHNdKz9mb3IgXCggaW50IGkgXD0gKFxkKylcOyBpIDwgKFxkKylcOyBpIFwrXCsgXCkgXHsoW1xzXFNdKz8pKD89XH0pXH0vZyxPOHQ9LyNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRccytmb3JccypcKFxzKmludFxzK2lccyo9XHMqKFxkKylccyo7XHMqaVxzKjxccyooXGQrKVxzKjtccyppXHMqXCtcK1xzKlwpXHMqeyhbXHNcU10rPyl9XHMrI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQvZztmdW5jdGlvbiB6OHQodCl7cmV0dXJuIHQucmVwbGFjZShPOHQsQjh0KS5yZXBsYWNlKFI4dCxEOHQpfWZ1bmN0aW9uIEQ4dCh0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJXZWJHTFByb2dyYW06ICNwcmFnbWEgdW5yb2xsX2xvb3Agc2hhZGVyIHN5bnRheCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQgc3ludGF4IGluc3RlYWQuIiksQjh0KHQsZSxuLGkpfWZ1bmN0aW9uIEI4dCh0LGUsbixpKXtsZXQgcj0iIjtmb3IobGV0IHQ9cGFyc2VJbnQoZSk7dDxwYXJzZUludChuKTt0Kyspcis9aS5yZXBsYWNlKC9cW1xzKmlccypcXS9nLCJbICIrdCsiIF0iKS5yZXBsYWNlKC9VTlJPTExFRF9MT09QX0lOREVYL2csdCk7cmV0dXJuIHJ9ZnVuY3Rpb24gSDh0KHQpe2xldCBlPSJwcmVjaXNpb24gIit0LnByZWNpc2lvbisiIGZsb2F0O1xucHJlY2lzaW9uICIrdC5wcmVjaXNpb24rIiBpbnQ7IjtyZXR1cm4iaGlnaHAiPT09dC5wcmVjaXNpb24/ZSs9IlxuI2RlZmluZSBISUdIX1BSRUNJU0lPTiI6Im1lZGl1bXAiPT09dC5wcmVjaXNpb24/ZSs9IlxuI2RlZmluZSBNRURJVU1fUFJFQ0lTSU9OIjoibG93cCI9PT10LnByZWNpc2lvbiYmKGUrPSJcbiNkZWZpbmUgTE9XX1BSRUNJU0lPTiIpLGV9ZnVuY3Rpb24gRjh0KHQsZSxuLGkpe2NvbnN0IHI9dC5nZXRDb250ZXh0KCksbz1uLmRlZmluZXM7bGV0IGE9bi52ZXJ0ZXhTaGFkZXIscz1uLmZyYWdtZW50U2hhZGVyO2NvbnN0IGw9KGZ1bmN0aW9uIGModCl7bGV0IGU9IlNIQURPV01BUF9UWVBFX0JBU0lDIjtyZXR1cm4gMT09PXQuc2hhZG93TWFwVHlwZT9lPSJTSEFET1dNQVBfVFlQRV9QQ0YiOjI9PT10LnNoYWRvd01hcFR5cGU/ZT0iU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQiOjM9PT10LnNoYWRvd01hcFR5cGUmJihlPSJTSEFET1dNQVBfVFlQRV9WU00iKSxlfSkobiksdT0oZnVuY3Rpb24gaCh0KXtsZXQgZT0iRU5WTUFQX1RZUEVfQ1VCRSI7aWYodC5lbnZNYXApc3dpdGNoKHQuZW52TWFwTW9kZSl7Y2FzZSBlMnQ6Y2FzZSBuMnQ6ZT0iRU5WTUFQX1RZUEVfQ1VCRSI7YnJlYWs7Y2FzZSBvMnQ6Y2FzZSBhMnQ6ZT0iRU5WTUFQX1RZUEVfQ1VCRV9VViJ9cmV0dXJuIGV9KShuKSxkPShmdW5jdGlvbiBwKHQpe2xldCBlPSJFTlZNQVBfTU9ERV9SRUZMRUNUSU9OIjtpZih0LmVudk1hcClzd2l0Y2godC5lbnZNYXBNb2RlKXtjYXNlIG4ydDpjYXNlIGEydDplPSJFTlZNQVBfTU9ERV9SRUZSQUNUSU9OIn1yZXR1cm4gZX0pKG4pLGY9KGZ1bmN0aW9uIG0odCl7bGV0IGU9IkVOVk1BUF9CTEVORElOR19OT05FIjtpZih0LmVudk1hcClzd2l0Y2godC5jb21iaW5lKXtjYXNlIDA6ZT0iRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZIjticmVhaztjYXNlIDE6ZT0iRU5WTUFQX0JMRU5ESU5HX01JWCI7YnJlYWs7Y2FzZSAyOmU9IkVOVk1BUF9CTEVORElOR19BREQifXJldHVybiBlfSkobiksZz1uLmlzV2ViR0wyPyIiOihmdW5jdGlvbiBfKHQpe3JldHVyblt0LmV4dGVuc2lvbkRlcml2YXRpdmVzfHx0LmVudk1hcEN1YmVVVnx8dC5idW1wTWFwfHx0LnRhbmdlbnRTcGFjZU5vcm1hbE1hcHx8dC5jbGVhcmNvYXROb3JtYWxNYXB8fHQuZmxhdFNoYWRpbmd8fCJwaHlzaWNhbCI9PT10LnNoYWRlcklEPyIjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZSI6IiIsKHQuZXh0ZW5zaW9uRnJhZ0RlcHRofHx0LmxvZ2FyaXRobWljRGVwdGhCdWZmZXIpJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlIjoiIix0LmV4dGVuc2lvbkRyYXdCdWZmZXJzJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM/IiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUiOiIiLCh0LmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fHQuZW52TWFwfHx0LnRyYW5zbWlzc2lvbikmJnQucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgOiBlbmFibGUiOiIiXS5maWx0ZXIoQTh0KS5qb2luKCJcbiIpfSkobikseT0oZnVuY3Rpb24gdih0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTshMSE9PWkmJmUucHVzaCgiI2RlZmluZSAiK24rIiAiK2kpfXJldHVybiBlLmpvaW4oIlxuIil9KShvKSxiPXIuY3JlYXRlUHJvZ3JhbSgpO2xldCB4LHcsUz1uLmdsc2xWZXJzaW9uPyIjdmVyc2lvbiAiK24uZ2xzbFZlcnNpb24rIlxuIjoiIjtuLmlzUmF3U2hhZGVyTWF0ZXJpYWw/KHg9W3ldLmZpbHRlcihBOHQpLmpvaW4oIlxuIikseC5sZW5ndGg+MCYmKHgrPSJcbiIpLHc9W2cseV0uZmlsdGVyKEE4dCkuam9pbigiXG4iKSx3Lmxlbmd0aD4wJiYodys9IlxuIikpOih4PVtIOHQobiksIiNkZWZpbmUgU0hBREVSX05BTUUgIituLnNoYWRlck5hbWUseSxuLmluc3RhbmNpbmc/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkciOiIiLG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HX0NPTE9SIjoiIixuLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVkVSVEVYX1RFWFRVUkVTIjoiIiwiI2RlZmluZSBNQVhfQk9ORVMgIituLm1heEJvbmVzLG4udXNlRm9nJiZuLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixuLnVzZUZvZyYmbi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixuLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSAiK2Q6IiIsbi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLG4uYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixuLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsbi5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixuLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixuLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixuLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsbi5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLG4uZGlzcGxhY2VtZW50TWFwJiZuLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVVNFX0RJU1BMQUNFTUVOVE1BUCI6IiIsbi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQIjoiIixuLnNwZWN1bGFyQ29sb3JNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSQ09MT1JNQVAiOiIiLG4ucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLG4ubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLG4uYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixuLnRyYW5zbWlzc2lvbj8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OIjoiIixuLnRyYW5zbWlzc2lvbk1hcD8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OTUFQIjoiIixuLnRoaWNrbmVzc01hcD8iI2RlZmluZSBVU0VfVEhJQ0tORVNTTUFQIjoiIixuLnNoZWVuQ29sb3JNYXA/IiNkZWZpbmUgVVNFX1NIRUVOQ09MT1JNQVAiOiIiLG4uc2hlZW5Sb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1NIRUVOUk9VR0hORVNTTUFQIjoiIixuLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixuLnZlcnRleENvbG9ycz8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLG4udmVydGV4QWxwaGFzPyIjZGVmaW5lIFVTRV9DT0xPUl9BTFBIQSI6IiIsbi52ZXJ0ZXhVdnM/IiNkZWZpbmUgVVNFX1VWIjoiIixuLnV2c1ZlcnRleE9ubHk/IiNkZWZpbmUgVVZTX1ZFUlRFWF9PTkxZIjoiIixuLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixuLnNraW5uaW5nPyIjZGVmaW5lIFVTRV9TS0lOTklORyI6IiIsbi51c2VWZXJ0ZXhUZXh0dXJlPyIjZGVmaW5lIEJPTkVfVEVYVFVSRSI6IiIsbi5tb3JwaFRhcmdldHM/IiNkZWZpbmUgVVNFX01PUlBIVEFSR0VUUyI6IiIsbi5tb3JwaE5vcm1hbHMmJiExPT09bi5mbGF0U2hhZGluZz8iI2RlZmluZSBVU0VfTU9SUEhOT1JNQUxTIjoiIixuLm1vcnBoVGFyZ2V0cyYmbi5pc1dlYkdMMj8iI2RlZmluZSBNT1JQSFRBUkdFVFNfVEVYVFVSRSI6IiIsbi5tb3JwaFRhcmdldHMmJm4uaXNXZWJHTDI/IiNkZWZpbmUgTU9SUEhUQVJHRVRTX0NPVU5UICIrbi5tb3JwaFRhcmdldHNDb3VudDoiIixuLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsbi5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsbi5zaXplQXR0ZW51YXRpb24/IiNkZWZpbmUgVVNFX1NJWkVBVFRFTlVBVElPTiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRl9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HIiwiXHRhdHRyaWJ1dGUgbWF0NCBpbnN0YW5jZU1hdHJpeDsiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1IiLCJcdGF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlQ29sb3I7IiwiI2VuZGlmIiwiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247IiwiYXR0cmlidXRlIHZlYzMgbm9ybWFsOyIsImF0dHJpYnV0ZSB2ZWMyIHV2OyIsIiNpZmRlZiBVU0VfVEFOR0VOVCIsIlx0YXR0cmlidXRlIHZlYzQgdGFuZ2VudDsiLCIjZW5kaWYiLCIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBICkiLCJcdGF0dHJpYnV0ZSB2ZWM0IGNvbG9yOyIsIiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIiwiXHRhdHRyaWJ1dGUgdmVjMyBjb2xvcjsiLCIjZW5kaWYiLCIjaWYgKCBkZWZpbmVkKCBVU0VfTU9SUEhUQVJHRVRTICkgJiYgISBkZWZpbmVkKCBNT1JQSFRBUkdFVFNfVEVYVFVSRSApICkiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MDsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MTsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MjsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MzsiLCJcdCNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwxOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDI7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMzsiLCJcdCNlbHNlIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ1OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDY7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NzsiLCJcdCNlbmRpZiIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfU0tJTk5JTkciLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5JbmRleDsiLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5XZWlnaHQ7IiwiI2VuZGlmIiwiXG4iXS5maWx0ZXIoQTh0KS5qb2luKCJcbiIpLHc9W2csSDh0KG4pLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrbi5zaGFkZXJOYW1lLHksbi51c2VGb2cmJm4uZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLG4udXNlRm9nJiZuLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLG4ubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLG4ubWF0Y2FwPyIjZGVmaW5lIFVTRV9NQVRDQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrdToiIixuLmVudk1hcD8iI2RlZmluZSAiK2Q6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIitmOiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXQ/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsbi5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLG4uc3BlY3VsYXJDb2xvck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJDT0xPUk1BUCI6IiIsbi5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsbi5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsbi5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLG4uYWxwaGFUZXN0PyIjZGVmaW5lIFVTRV9BTFBIQVRFU1QiOiIiLG4uc2hlZW4/IiNkZWZpbmUgVVNFX1NIRUVOIjoiIixuLnNoZWVuQ29sb3JNYXA/IiNkZWZpbmUgVVNFX1NIRUVOQ09MT1JNQVAiOiIiLG4uc2hlZW5Sb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1NIRUVOUk9VR0hORVNTTUFQIjoiIixuLnRyYW5zbWlzc2lvbj8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OIjoiIixuLnRyYW5zbWlzc2lvbk1hcD8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OTUFQIjoiIixuLnRoaWNrbmVzc01hcD8iI2RlZmluZSBVU0VfVEhJQ0tORVNTTUFQIjoiIixuLmRlY29kZVZpZGVvVGV4dHVyZT8iI2RlZmluZSBERUNPREVfVklERU9fVEVYVFVSRSI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnN8fG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixuLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLG4udXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLG4uZ3JhZGllbnRNYXA/IiNkZWZpbmUgVVNFX0dSQURJRU5UTUFQIjoiIixuLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixuLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsbi5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsbi5wcmVtdWx0aXBsaWVkQWxwaGE/IiNkZWZpbmUgUFJFTVVMVElQTElFRF9BTFBIQSI6IiIsbi5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz8iI2RlZmluZSBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsKG4uZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8bi5lbnZNYXApJiZuLnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2RlZmluZSBURVhUVVJFX0xPRF9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsMCE9PW4udG9uZU1hcHBpbmc/IiNkZWZpbmUgVE9ORV9NQVBQSU5HIjoiIiwwIT09bi50b25lTWFwcGluZz9QNnQudG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiIiwwIT09bi50b25lTWFwcGluZz9DOHQoInRvbmVNYXBwaW5nIixuLnRvbmVNYXBwaW5nKToiIixuLmRpdGhlcmluZz8iI2RlZmluZSBESVRIRVJJTkciOiIiLG4uYWxwaGFXcml0ZT8iIjoiI2RlZmluZSBPUEFRVUUiLFA2dC5lbmNvZGluZ3NfcGFyc19mcmFnbWVudCxUOHQoImxpbmVhclRvT3V0cHV0VGV4ZWwiLG4ub3V0cHV0RW5jb2RpbmcpLG4uZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIituLmRlcHRoUGFja2luZzoiIiwiXG4iXS5maWx0ZXIoQTh0KS5qb2luKCJcbiIpKSxhPUk4dChhKSxhPWs4dChhLG4pLGE9UDh0KGEsbikscz1JOHQocykscz1rOHQocyxuKSxzPVA4dChzLG4pLGE9ejh0KGEpLHM9ejh0KHMpLG4uaXNXZWJHTDImJiEwIT09bi5pc1Jhd1NoYWRlck1hdGVyaWFsJiYoUz0iI3ZlcnNpb24gMzAwIGVzXG4iLHg9WyJwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkRBcnJheTsiLCIjZGVmaW5lIGF0dHJpYnV0ZSBpbiIsIiNkZWZpbmUgdmFyeWluZyBvdXQiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIl0uam9pbigiXG4iKSsiXG4iK3gsdz1bIiNkZWZpbmUgdmFyeWluZyBpbiIsbi5nbHNsVmVyc2lvbj09PWM1dD8iIjoibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhpZ2hwIHZlYzQgcGNfZnJhZ0NvbG9yOyIsbi5nbHNsVmVyc2lvbj09PWM1dD8iIjoiI2RlZmluZSBnbF9GcmFnQ29sb3IgcGNfZnJhZ0NvbG9yIiwiI2RlZmluZSBnbF9GcmFnRGVwdGhFWFQgZ2xfRnJhZ0RlcHRoIiwiI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvaiB0ZXh0dXJlUHJvaiIsIiNkZWZpbmUgdGV4dHVyZTJETG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pMb2RFWFQgdGV4dHVyZVByb2pMb2QiLCIjZGVmaW5lIHRleHR1cmVDdWJlTG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyREdyYWRFWFQgdGV4dHVyZUdyYWQiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pHcmFkRVhUIHRleHR1cmVQcm9qR3JhZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVHcmFkRVhUIHRleHR1cmVHcmFkIl0uam9pbigiXG4iKSsiXG4iK3cpO2NvbnN0IE09Uyt3K3MsRT1TOHQociwzNTYzMyxTK3grYSksVD1TOHQociwzNTYzMixNKTtpZihyLmF0dGFjaFNoYWRlcihiLEUpLHIuYXR0YWNoU2hhZGVyKGIsVCksdm9pZCAwIT09bi5pbmRleDBBdHRyaWJ1dGVOYW1lP3IuYmluZEF0dHJpYkxvY2F0aW9uKGIsMCxuLmluZGV4MEF0dHJpYnV0ZU5hbWUpOiEwPT09bi5tb3JwaFRhcmdldHMmJnIuYmluZEF0dHJpYkxvY2F0aW9uKGIsMCwicG9zaXRpb24iKSxyLmxpbmtQcm9ncmFtKGIpLHQuZGVidWcuY2hlY2tTaGFkZXJFcnJvcnMpe2NvbnN0IHQ9ci5nZXRQcm9ncmFtSW5mb0xvZyhiKS50cmltKCksZT1yLmdldFNoYWRlckluZm9Mb2coRSkudHJpbSgpLG49ci5nZXRTaGFkZXJJbmZvTG9nKFQpLnRyaW0oKTtsZXQgaT0hMCxvPSEwO2lmKCExPT09ci5nZXRQcm9ncmFtUGFyYW1ldGVyKGIsMzU3MTQpKXtpPSExO2NvbnN0IGU9RTh0KHIsRSwidmVydGV4Iiksbj1FOHQocixULCJmcmFnbWVudCIpO2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUHJvZ3JhbTogU2hhZGVyIEVycm9yICIrci5nZXRFcnJvcigpKyIgLSBWQUxJREFURV9TVEFUVVMgIityLmdldFByb2dyYW1QYXJhbWV0ZXIoYiwzNTcxNSkrIlxuXG5Qcm9ncmFtIEluZm8gTG9nOiAiK3QrIlxuIitlKyJcbiIrbil9ZWxzZSIiIT09dD9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogUHJvZ3JhbSBJbmZvIExvZzoiLHQpOiIiIT09ZSYmIiIhPT1ufHwobz0hMSk7byYmKHRoaXMuZGlhZ25vc3RpY3M9e3J1bm5hYmxlOmkscHJvZ3JhbUxvZzp0LHZlcnRleFNoYWRlcjp7bG9nOmUscHJlZml4Onh9LGZyYWdtZW50U2hhZGVyOntsb2c6bixwcmVmaXg6d319KX1sZXQgQyxBO3JldHVybiByLmRlbGV0ZVNoYWRlcihFKSxyLmRlbGV0ZVNoYWRlcihUKSx0aGlzLmdldFVuaWZvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUMmJihDPW5ldyB3OHQocixiKSksQ30sdGhpcy5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUEmJihBPShmdW5jdGlvbiB0KGUsbil7Y29uc3QgaT17fSxyPWUuZ2V0UHJvZ3JhbVBhcmFtZXRlcihuLDM1NzIxKTtmb3IobGV0IHQ9MDt0PHI7dCsrKXtjb25zdCByPWUuZ2V0QWN0aXZlQXR0cmliKG4sdCksbz1yLm5hbWU7bGV0IGE9MTszNTY3ND09PXIudHlwZSYmKGE9MiksMzU2NzU9PT1yLnR5cGUmJihhPTMpLDM1Njc2PT09ci50eXBlJiYoYT00KSxpW29dPXt0eXBlOnIudHlwZSxsb2NhdGlvbjplLmdldEF0dHJpYkxvY2F0aW9uKG4sbyksbG9jYXRpb25TaXplOmF9fXJldHVybiBpfSkocixiKSksQX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7aS5yZWxlYXNlU3RhdGVzT2ZQcm9ncmFtKHRoaXMpLHIuZGVsZXRlUHJvZ3JhbShiKSx0aGlzLnByb2dyYW09dm9pZCAwfSx0aGlzLm5hbWU9bi5zaGFkZXJOYW1lLHRoaXMuaWQ9TTh0KyssdGhpcy5jYWNoZUtleT1lLHRoaXMudXNlZFRpbWVzPTEsdGhpcy5wcm9ncmFtPWIsdGhpcy52ZXJ0ZXhTaGFkZXI9RSx0aGlzLmZyYWdtZW50U2hhZGVyPVQsdGhpc31sZXQgVjh0PTA7Y2xhc3MgVTh0e2NvbnN0cnVjdG9yKCl7dGhpcy5zaGFkZXJDYWNoZT1uZXcgTWFwLHRoaXMubWF0ZXJpYWxDYWNoZT1uZXcgTWFwfXVwZGF0ZSh0KXtjb25zdCBlPXQuZnJhZ21lbnRTaGFkZXIsbj10aGlzLl9nZXRTaGFkZXJTdGFnZSh0LnZlcnRleFNoYWRlciksaT10aGlzLl9nZXRTaGFkZXJTdGFnZShlKSxyPXRoaXMuX2dldFNoYWRlckNhY2hlRm9yTWF0ZXJpYWwodCk7cmV0dXJuITE9PT1yLmhhcyhuKSYmKHIuYWRkKG4pLG4udXNlZFRpbWVzKyspLCExPT09ci5oYXMoaSkmJihyLmFkZChpKSxpLnVzZWRUaW1lcysrKSx0aGlzfXJlbW92ZSh0KXtjb25zdCBlPXRoaXMubWF0ZXJpYWxDYWNoZS5nZXQodCk7Zm9yKGNvbnN0IHQgb2YgZSl0LnVzZWRUaW1lcy0tLDA9PT10LnVzZWRUaW1lcyYmdGhpcy5zaGFkZXJDYWNoZS5kZWxldGUodCk7cmV0dXJuIHRoaXMubWF0ZXJpYWxDYWNoZS5kZWxldGUodCksdGhpc31nZXRWZXJ0ZXhTaGFkZXJJRCh0KXtyZXR1cm4gdGhpcy5fZ2V0U2hhZGVyU3RhZ2UodC52ZXJ0ZXhTaGFkZXIpLmlkfWdldEZyYWdtZW50U2hhZGVySUQodCl7cmV0dXJuIHRoaXMuX2dldFNoYWRlclN0YWdlKHQuZnJhZ21lbnRTaGFkZXIpLmlkfWRpc3Bvc2UoKXt0aGlzLnNoYWRlckNhY2hlLmNsZWFyKCksdGhpcy5tYXRlcmlhbENhY2hlLmNsZWFyKCl9X2dldFNoYWRlckNhY2hlRm9yTWF0ZXJpYWwodCl7Y29uc3QgZT10aGlzLm1hdGVyaWFsQ2FjaGU7cmV0dXJuITE9PT1lLmhhcyh0KSYmZS5zZXQodCxuZXcgU2V0KSxlLmdldCh0KX1fZ2V0U2hhZGVyU3RhZ2UodCl7Y29uc3QgZT10aGlzLnNoYWRlckNhY2hlO2lmKCExPT09ZS5oYXModCkpe2NvbnN0IG49bmV3IGo4dDtlLnNldCh0LG4pfXJldHVybiBlLmdldCh0KX19Y2xhc3Mgajh0e2NvbnN0cnVjdG9yKCl7dGhpcy5pZD1WOHQrKyx0aGlzLnVzZWRUaW1lcz0wfX1mdW5jdGlvbiBHOHQodCxlLG4saSxyLG8sYSl7Y29uc3Qgcz1uZXcgWDN0LGw9bmV3IFU4dCxjPVtdLHU9ci5pc1dlYkdMMixoPXIubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixkPXIuZmxvYXRWZXJ0ZXhUZXh0dXJlcyxwPXIubWF4VmVydGV4VW5pZm9ybXMsZj1yLnZlcnRleFRleHR1cmVzO2xldCBtPXIucHJlY2lzaW9uO2NvbnN0IGc9e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsTWVzaE5vcm1hbE1hdGVyaWFsOiJub3JtYWwiLE1lc2hCYXNpY01hdGVyaWFsOiJiYXNpYyIsTWVzaExhbWJlcnRNYXRlcmlhbDoibGFtYmVydCIsTWVzaFBob25nTWF0ZXJpYWw6InBob25nIixNZXNoVG9vbk1hdGVyaWFsOiJ0b29uIixNZXNoU3RhbmRhcmRNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hQaHlzaWNhbE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaE1hdGNhcE1hdGVyaWFsOiJtYXRjYXAiLExpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifTtyZXR1cm57Z2V0UGFyYW1ldGVyczpmdW5jdGlvbiBfKG8scyxjLHksdil7Y29uc3QgYj15LmZvZyx4PShvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/bjplKS5nZXQoby5lbnZNYXB8fChvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/eS5lbnZpcm9ubWVudDpudWxsKSksdz1nW28udHlwZV0sUz12LmlzU2tpbm5lZE1lc2g/KGZ1bmN0aW9uIE0odCl7Y29uc3QgZT10LnNrZWxldG9uLmJvbmVzO2lmKGQpcmV0dXJuIDEwMjQ7e2NvbnN0IHQ9TWF0aC5mbG9vcigocC0yMCkvNCksbj1NYXRoLm1pbih0LGUubGVuZ3RoKTtyZXR1cm4gbjxlLmxlbmd0aD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBTa2VsZXRvbiBoYXMgIitlLmxlbmd0aCsiIGJvbmVzLiBUaGlzIEdQVSBzdXBwb3J0cyAiK24rIi4iKSwwKTpufX0pKHYpOjA7bGV0IEUsVCxDLEE7aWYobnVsbCE9PW8ucHJlY2lzaW9uJiYobT1yLmdldE1heFByZWNpc2lvbihvLnByZWNpc2lvbiksbSE9PW8ucHJlY2lzaW9uJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbS5nZXRQYXJhbWV0ZXJzOiIsby5wcmVjaXNpb24sIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixtLCJpbnN0ZWFkLiIpKSx3KXtjb25zdCB0PUk2dFt3XTtFPXQudmVydGV4U2hhZGVyLFQ9dC5mcmFnbWVudFNoYWRlcn1lbHNlIEU9by52ZXJ0ZXhTaGFkZXIsVD1vLmZyYWdtZW50U2hhZGVyLGwudXBkYXRlKG8pLEM9bC5nZXRWZXJ0ZXhTaGFkZXJJRChvKSxBPWwuZ2V0RnJhZ21lbnRTaGFkZXJJRChvKTtjb25zdCBrPXQuZ2V0UmVuZGVyVGFyZ2V0KCksUD1vLmNsZWFyY29hdD4wO3JldHVybntpc1dlYkdMMjp1LHNoYWRlcklEOncsc2hhZGVyTmFtZTpvLnR5cGUsdmVydGV4U2hhZGVyOkUsZnJhZ21lbnRTaGFkZXI6VCxkZWZpbmVzOm8uZGVmaW5lcyxjdXN0b21WZXJ0ZXhTaGFkZXJJRDpDLGN1c3RvbUZyYWdtZW50U2hhZGVySUQ6QSxpc1Jhd1NoYWRlck1hdGVyaWFsOiEwPT09by5pc1Jhd1NoYWRlck1hdGVyaWFsLGdsc2xWZXJzaW9uOm8uZ2xzbFZlcnNpb24scHJlY2lzaW9uOm0saW5zdGFuY2luZzohMD09PXYuaXNJbnN0YW5jZWRNZXNoLGluc3RhbmNpbmdDb2xvcjohMD09PXYuaXNJbnN0YW5jZWRNZXNoJiZudWxsIT09di5pbnN0YW5jZUNvbG9yLHN1cHBvcnRzVmVydGV4VGV4dHVyZXM6ZixvdXRwdXRFbmNvZGluZzpudWxsPT09az90Lm91dHB1dEVuY29kaW5nOiEwPT09ay5pc1hSUmVuZGVyVGFyZ2V0P2sudGV4dHVyZS5lbmNvZGluZzpyNXQsbWFwOiEhby5tYXAsbWF0Y2FwOiEhby5tYXRjYXAsZW52TWFwOiEheCxlbnZNYXBNb2RlOngmJngubWFwcGluZyxlbnZNYXBDdWJlVVY6ISF4JiYoeC5tYXBwaW5nPT09bzJ0fHx4Lm1hcHBpbmc9PT1hMnQpLGxpZ2h0TWFwOiEhby5saWdodE1hcCxhb01hcDohIW8uYW9NYXAsZW1pc3NpdmVNYXA6ISFvLmVtaXNzaXZlTWFwLGJ1bXBNYXA6ISFvLmJ1bXBNYXAsbm9ybWFsTWFwOiEhby5ub3JtYWxNYXAsb2JqZWN0U3BhY2VOb3JtYWxNYXA6MT09PW8ubm9ybWFsTWFwVHlwZSx0YW5nZW50U3BhY2VOb3JtYWxNYXA6MD09PW8ubm9ybWFsTWFwVHlwZSxkZWNvZGVWaWRlb1RleHR1cmU6ISFvLm1hcCYmITA9PT1vLm1hcC5pc1ZpZGVvVGV4dHVyZSYmby5tYXAuZW5jb2Rpbmc9PT1vNXQsY2xlYXJjb2F0OlAsY2xlYXJjb2F0TWFwOlAmJiEhby5jbGVhcmNvYXRNYXAsY2xlYXJjb2F0Um91Z2huZXNzTWFwOlAmJiEhby5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsY2xlYXJjb2F0Tm9ybWFsTWFwOlAmJiEhby5jbGVhcmNvYXROb3JtYWxNYXAsZGlzcGxhY2VtZW50TWFwOiEhby5kaXNwbGFjZW1lbnRNYXAscm91Z2huZXNzTWFwOiEhby5yb3VnaG5lc3NNYXAsbWV0YWxuZXNzTWFwOiEhby5tZXRhbG5lc3NNYXAsc3BlY3VsYXJNYXA6ISFvLnNwZWN1bGFyTWFwLHNwZWN1bGFySW50ZW5zaXR5TWFwOiEhby5zcGVjdWxhckludGVuc2l0eU1hcCxzcGVjdWxhckNvbG9yTWFwOiEhby5zcGVjdWxhckNvbG9yTWFwLGFscGhhTWFwOiEhby5hbHBoYU1hcCxhbHBoYVRlc3Q6by5hbHBoYVRlc3Q+MCxhbHBoYVdyaXRlOm8uYWxwaGFXcml0ZXx8by50cmFuc3BhcmVudCxncmFkaWVudE1hcDohIW8uZ3JhZGllbnRNYXAsc2hlZW46by5zaGVlbj4wLHNoZWVuQ29sb3JNYXA6ISFvLnNoZWVuQ29sb3JNYXAsc2hlZW5Sb3VnaG5lc3NNYXA6ISFvLnNoZWVuUm91Z2huZXNzTWFwLHRyYW5zbWlzc2lvbjpvLnRyYW5zbWlzc2lvbj4wLHRyYW5zbWlzc2lvbk1hcDohIW8udHJhbnNtaXNzaW9uTWFwLHRoaWNrbmVzc01hcDohIW8udGhpY2tuZXNzTWFwLGNvbWJpbmU6by5jb21iaW5lLHZlcnRleFRhbmdlbnRzOiEhby5ub3JtYWxNYXAmJiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5LmF0dHJpYnV0ZXMudGFuZ2VudCx2ZXJ0ZXhDb2xvcnM6by52ZXJ0ZXhDb2xvcnMsdmVydGV4QWxwaGFzOiEwPT09by52ZXJ0ZXhDb2xvcnMmJiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3ImJjQ9PT12Lmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemUsdmVydGV4VXZzOiEhKG8ubWFwfHxvLmJ1bXBNYXB8fG8ubm9ybWFsTWFwfHxvLnNwZWN1bGFyTWFwfHxvLmFscGhhTWFwfHxvLmVtaXNzaXZlTWFwfHxvLnJvdWdobmVzc01hcHx8by5tZXRhbG5lc3NNYXB8fG8uY2xlYXJjb2F0TWFwfHxvLmNsZWFyY29hdFJvdWdobmVzc01hcHx8by5jbGVhcmNvYXROb3JtYWxNYXB8fG8uZGlzcGxhY2VtZW50TWFwfHxvLnRyYW5zbWlzc2lvbk1hcHx8by50aGlja25lc3NNYXB8fG8uc3BlY3VsYXJJbnRlbnNpdHlNYXB8fG8uc3BlY3VsYXJDb2xvck1hcHx8by5zaGVlbkNvbG9yTWFwfHxvLnNoZWVuUm91Z2huZXNzTWFwKSx1dnNWZXJ0ZXhPbmx5OiEoby5tYXB8fG8uYnVtcE1hcHx8by5ub3JtYWxNYXB8fG8uc3BlY3VsYXJNYXB8fG8uYWxwaGFNYXB8fG8uZW1pc3NpdmVNYXB8fG8ucm91Z2huZXNzTWFwfHxvLm1ldGFsbmVzc01hcHx8by5jbGVhcmNvYXROb3JtYWxNYXB8fG8udHJhbnNtaXNzaW9uPjB8fG8udHJhbnNtaXNzaW9uTWFwfHxvLnRoaWNrbmVzc01hcHx8by5zcGVjdWxhckludGVuc2l0eU1hcHx8by5zcGVjdWxhckNvbG9yTWFwfHxvLnNoZWVuPjB8fG8uc2hlZW5Db2xvck1hcHx8by5zaGVlblJvdWdobmVzc01hcHx8IW8uZGlzcGxhY2VtZW50TWFwKSxmb2c6ISFiLHVzZUZvZzpvLmZvZyxmb2dFeHAyOmImJmIuaXNGb2dFeHAyLGZsYXRTaGFkaW5nOiEhby5mbGF0U2hhZGluZyxzaXplQXR0ZW51YXRpb246by5zaXplQXR0ZW51YXRpb24sbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpoLHNraW5uaW5nOiEwPT09di5pc1NraW5uZWRNZXNoJiZTPjAsbWF4Qm9uZXM6Uyx1c2VWZXJ0ZXhUZXh0dXJlOmQsbW9ycGhUYXJnZXRzOiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixtb3JwaE5vcm1hbHM6ISF2Lmdlb21ldHJ5JiYhIXYuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxtb3JwaFRhcmdldHNDb3VudDp2Lmdlb21ldHJ5JiZ2Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbj92Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbi5sZW5ndGg6MCxudW1EaXJMaWdodHM6cy5kaXJlY3Rpb25hbC5sZW5ndGgsbnVtUG9pbnRMaWdodHM6cy5wb2ludC5sZW5ndGgsbnVtU3BvdExpZ2h0czpzLnNwb3QubGVuZ3RoLG51bVJlY3RBcmVhTGlnaHRzOnMucmVjdEFyZWEubGVuZ3RoLG51bUhlbWlMaWdodHM6cy5oZW1pLmxlbmd0aCxudW1EaXJMaWdodFNoYWRvd3M6cy5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGgsbnVtUG9pbnRMaWdodFNoYWRvd3M6cy5wb2ludFNoYWRvd01hcC5sZW5ndGgsbnVtU3BvdExpZ2h0U2hhZG93czpzLnNwb3RTaGFkb3dNYXAubGVuZ3RoLG51bUNsaXBwaW5nUGxhbmVzOmEubnVtUGxhbmVzLG51bUNsaXBJbnRlcnNlY3Rpb246YS5udW1JbnRlcnNlY3Rpb24sZGl0aGVyaW5nOm8uZGl0aGVyaW5nLHNoYWRvd01hcEVuYWJsZWQ6dC5zaGFkb3dNYXAuZW5hYmxlZCYmYy5sZW5ndGg+MCxzaGFkb3dNYXBUeXBlOnQuc2hhZG93TWFwLnR5cGUsdG9uZU1hcHBpbmc6by50b25lTWFwcGVkP3QudG9uZU1hcHBpbmc6MCxwaHlzaWNhbGx5Q29ycmVjdExpZ2h0czp0LnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLHByZW11bHRpcGxpZWRBbHBoYTpvLnByZW11bHRpcGxpZWRBbHBoYSxkb3VibGVTaWRlZDoyPT09by5zaWRlLGZsaXBTaWRlZDoxPT09by5zaWRlLGRlcHRoUGFja2luZzp2b2lkIDAhPT1vLmRlcHRoUGFja2luZyYmby5kZXB0aFBhY2tpbmcsaW5kZXgwQXR0cmlidXRlTmFtZTpvLmluZGV4MEF0dHJpYnV0ZU5hbWUsZXh0ZW5zaW9uRGVyaXZhdGl2ZXM6by5leHRlbnNpb25zJiZvLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMsZXh0ZW5zaW9uRnJhZ0RlcHRoOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLmZyYWdEZXB0aCxleHRlbnNpb25EcmF3QnVmZmVyczpvLmV4dGVuc2lvbnMmJm8uZXh0ZW5zaW9ucy5kcmF3QnVmZmVycyxleHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0QscmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg6dXx8aS5oYXMoIkVYVF9mcmFnX2RlcHRoIikscmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVyczp1fHxpLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIikscmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kOnV8fGkuaGFzKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIiksY3VzdG9tUHJvZ3JhbUNhY2hlS2V5Om8uY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl9fSxnZXRQcm9ncmFtQ2FjaGVLZXk6ZnVuY3Rpb24geShlKXtjb25zdCBuPVtdO2lmKGUuc2hhZGVySUQ/bi5wdXNoKGUuc2hhZGVySUQpOihuLnB1c2goZS5jdXN0b21WZXJ0ZXhTaGFkZXJJRCksbi5wdXNoKGUuY3VzdG9tRnJhZ21lbnRTaGFkZXJJRCkpLHZvaWQgMCE9PWUuZGVmaW5lcylmb3IoY29uc3QgdCBpbiBlLmRlZmluZXMpbi5wdXNoKHQpLG4ucHVzaChlLmRlZmluZXNbdF0pO3JldHVybiExPT09ZS5pc1Jhd1NoYWRlck1hdGVyaWFsJiYoIShmdW5jdGlvbiBpKHQsZSl7dC5wdXNoKGUucHJlY2lzaW9uKSx0LnB1c2goZS5vdXRwdXRFbmNvZGluZyksdC5wdXNoKGUuZW52TWFwTW9kZSksdC5wdXNoKGUuY29tYmluZSksdC5wdXNoKGUudmVydGV4VXZzKSx0LnB1c2goZS5mb2dFeHAyKSx0LnB1c2goZS5zaXplQXR0ZW51YXRpb24pLHQucHVzaChlLm1heEJvbmVzKSx0LnB1c2goZS5tb3JwaFRhcmdldHNDb3VudCksdC5wdXNoKGUubnVtRGlyTGlnaHRzKSx0LnB1c2goZS5udW1Qb2ludExpZ2h0cyksdC5wdXNoKGUubnVtU3BvdExpZ2h0cyksdC5wdXNoKGUubnVtSGVtaUxpZ2h0cyksdC5wdXNoKGUubnVtUmVjdEFyZWFMaWdodHMpLHQucHVzaChlLm51bURpckxpZ2h0U2hhZG93cyksdC5wdXNoKGUubnVtUG9pbnRMaWdodFNoYWRvd3MpLHQucHVzaChlLm51bVNwb3RMaWdodFNoYWRvd3MpLHQucHVzaChlLnNoYWRvd01hcFR5cGUpLHQucHVzaChlLnRvbmVNYXBwaW5nKSx0LnB1c2goZS5udW1DbGlwcGluZ1BsYW5lcyksdC5wdXNoKGUubnVtQ2xpcEludGVyc2VjdGlvbiksdC5wdXNoKGUuYWxwaGFXcml0ZSl9KShuLGUpLChmdW5jdGlvbiByKHQsZSl7cy5kaXNhYmxlQWxsKCksZS5pc1dlYkdMMiYmcy5lbmFibGUoMCk7ZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzJiZzLmVuYWJsZSgxKTtlLmluc3RhbmNpbmcmJnMuZW5hYmxlKDIpO2UuaW5zdGFuY2luZ0NvbG9yJiZzLmVuYWJsZSgzKTtlLm1hcCYmcy5lbmFibGUoNCk7ZS5tYXRjYXAmJnMuZW5hYmxlKDUpO2UuZW52TWFwJiZzLmVuYWJsZSg2KTtlLmVudk1hcEN1YmVVViYmcy5lbmFibGUoNyk7ZS5saWdodE1hcCYmcy5lbmFibGUoOCk7ZS5hb01hcCYmcy5lbmFibGUoOSk7ZS5lbWlzc2l2ZU1hcCYmcy5lbmFibGUoMTApO2UuYnVtcE1hcCYmcy5lbmFibGUoMTEpO2Uubm9ybWFsTWFwJiZzLmVuYWJsZSgxMik7ZS5vYmplY3RTcGFjZU5vcm1hbE1hcCYmcy5lbmFibGUoMTMpO2UudGFuZ2VudFNwYWNlTm9ybWFsTWFwJiZzLmVuYWJsZSgxNCk7ZS5jbGVhcmNvYXQmJnMuZW5hYmxlKDE1KTtlLmNsZWFyY29hdE1hcCYmcy5lbmFibGUoMTYpO2UuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiZzLmVuYWJsZSgxNyk7ZS5jbGVhcmNvYXROb3JtYWxNYXAmJnMuZW5hYmxlKDE4KTtlLmRpc3BsYWNlbWVudE1hcCYmcy5lbmFibGUoMTkpO2Uuc3BlY3VsYXJNYXAmJnMuZW5hYmxlKDIwKTtlLnJvdWdobmVzc01hcCYmcy5lbmFibGUoMjEpO2UubWV0YWxuZXNzTWFwJiZzLmVuYWJsZSgyMik7ZS5ncmFkaWVudE1hcCYmcy5lbmFibGUoMjMpO2UuYWxwaGFNYXAmJnMuZW5hYmxlKDI0KTtlLmFscGhhVGVzdCYmcy5lbmFibGUoMjUpO2UudmVydGV4Q29sb3JzJiZzLmVuYWJsZSgyNik7ZS52ZXJ0ZXhBbHBoYXMmJnMuZW5hYmxlKDI3KTtlLnZlcnRleFV2cyYmcy5lbmFibGUoMjgpO2UudmVydGV4VGFuZ2VudHMmJnMuZW5hYmxlKDI5KTtlLnV2c1ZlcnRleE9ubHkmJnMuZW5hYmxlKDMwKTtlLmZvZyYmcy5lbmFibGUoMzEpO3QucHVzaChzLm1hc2spLHMuZGlzYWJsZUFsbCgpLGUudXNlRm9nJiZzLmVuYWJsZSgwKTtlLmZsYXRTaGFkaW5nJiZzLmVuYWJsZSgxKTtlLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJnMuZW5hYmxlKDIpO2Uuc2tpbm5pbmcmJnMuZW5hYmxlKDMpO2UudXNlVmVydGV4VGV4dHVyZSYmcy5lbmFibGUoNCk7ZS5tb3JwaFRhcmdldHMmJnMuZW5hYmxlKDUpO2UubW9ycGhOb3JtYWxzJiZzLmVuYWJsZSg2KTtlLnByZW11bHRpcGxpZWRBbHBoYSYmcy5lbmFibGUoNyk7ZS5zaGFkb3dNYXBFbmFibGVkJiZzLmVuYWJsZSg4KTtlLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzJiZzLmVuYWJsZSg5KTtlLmRvdWJsZVNpZGVkJiZzLmVuYWJsZSgxMCk7ZS5mbGlwU2lkZWQmJnMuZW5hYmxlKDExKTtlLmRlcHRoUGFja2luZyYmcy5lbmFibGUoMTIpO2UuZGl0aGVyaW5nJiZzLmVuYWJsZSgxMyk7ZS5zcGVjdWxhckludGVuc2l0eU1hcCYmcy5lbmFibGUoMTQpO2Uuc3BlY3VsYXJDb2xvck1hcCYmcy5lbmFibGUoMTUpO2UudHJhbnNtaXNzaW9uJiZzLmVuYWJsZSgxNik7ZS50cmFuc21pc3Npb25NYXAmJnMuZW5hYmxlKDE3KTtlLnRoaWNrbmVzc01hcCYmcy5lbmFibGUoMTgpO2Uuc2hlZW4mJnMuZW5hYmxlKDE5KTtlLnNoZWVuQ29sb3JNYXAmJnMuZW5hYmxlKDIwKTtlLnNoZWVuUm91Z2huZXNzTWFwJiZzLmVuYWJsZSgyMSk7ZS5kZWNvZGVWaWRlb1RleHR1cmUmJnMuZW5hYmxlKDIyKTt0LnB1c2gocy5tYXNrKX0pKG4sZSksbi5wdXNoKHQub3V0cHV0RW5jb2RpbmcpKSxuLnB1c2goZS5jdXN0b21Qcm9ncmFtQ2FjaGVLZXkpLG4uam9pbigpfSxnZXRVbmlmb3JtczpmdW5jdGlvbiB2KHQpe2NvbnN0IGU9Z1t0LnR5cGVdO2xldCBuO2lmKGUpe249ZDZ0LmNsb25lKEk2dFtlXS51bmlmb3Jtcyl9ZWxzZSBuPXQudW5pZm9ybXM7cmV0dXJuIG59LGFjcXVpcmVQcm9ncmFtOmZ1bmN0aW9uIGIoZSxuKXtsZXQgaTtmb3IobGV0IHQ9MCxlPWMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9Y1t0XTtpZihlLmNhY2hlS2V5PT09bil7aT1lLCsraS51c2VkVGltZXM7YnJlYWt9fXJldHVybiB2b2lkIDA9PT1pJiYoaT1uZXcgRjh0KHQsbixlLG8pLGMucHVzaChpKSksaX0scmVsZWFzZVByb2dyYW06ZnVuY3Rpb24geCh0KXtpZigwPT0tLXQudXNlZFRpbWVzKXtjb25zdCBlPWMuaW5kZXhPZih0KTtjW2VdPWNbYy5sZW5ndGgtMV0sYy5wb3AoKSx0LmRlc3Ryb3koKX19LHJlbGVhc2VTaGFkZXJDYWNoZTpmdW5jdGlvbiB3KHQpe2wucmVtb3ZlKHQpfSxwcm9ncmFtczpjLGRpc3Bvc2U6ZnVuY3Rpb24gUygpe2wuZGlzcG9zZSgpfX19ZnVuY3Rpb24gVzh0KCl7bGV0IHQ9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBlKG4pe2xldCBpPXQuZ2V0KG4pO3JldHVybiB2b2lkIDA9PT1pJiYoaT17fSx0LnNldChuLGkpKSxpfSxyZW1vdmU6ZnVuY3Rpb24gbihlKXt0LmRlbGV0ZShlKX0sdXBkYXRlOmZ1bmN0aW9uIGkoZSxuLHIpe3QuZ2V0KGUpW25dPXJ9LGRpc3Bvc2U6ZnVuY3Rpb24gcigpe3Q9bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBxOHQodCxlKXtyZXR1cm4gdC5ncm91cE9yZGVyIT09ZS5ncm91cE9yZGVyP3QuZ3JvdXBPcmRlci1lLmdyb3VwT3JkZXI6dC5yZW5kZXJPcmRlciE9PWUucmVuZGVyT3JkZXI/dC5yZW5kZXJPcmRlci1lLnJlbmRlck9yZGVyOnQubWF0ZXJpYWwuaWQhPT1lLm1hdGVyaWFsLmlkP3QubWF0ZXJpYWwuaWQtZS5tYXRlcmlhbC5pZDp0LnohPT1lLno/dC56LWUuejp0LmlkLWUuaWR9ZnVuY3Rpb24gWTh0KHQsZSl7cmV0dXJuIHQuZ3JvdXBPcmRlciE9PWUuZ3JvdXBPcmRlcj90Lmdyb3VwT3JkZXItZS5ncm91cE9yZGVyOnQucmVuZGVyT3JkZXIhPT1lLnJlbmRlck9yZGVyP3QucmVuZGVyT3JkZXItZS5yZW5kZXJPcmRlcjp0LnohPT1lLno/ZS56LXQuejp0LmlkLWUuaWR9ZnVuY3Rpb24gWDh0KCl7Y29uc3QgdD1bXTtsZXQgZT0wO2NvbnN0IG49W10saT1bXSxyPVtdO2Z1bmN0aW9uIG8obixpLHIsbyxhLHMpe2xldCBsPXRbZV07cmV0dXJuIHZvaWQgMD09PWw/KGw9e2lkOm4uaWQsb2JqZWN0Om4sZ2VvbWV0cnk6aSxtYXRlcmlhbDpyLGdyb3VwT3JkZXI6byxyZW5kZXJPcmRlcjpuLnJlbmRlck9yZGVyLHo6YSxncm91cDpzfSx0W2VdPWwpOihsLmlkPW4uaWQsbC5vYmplY3Q9bixsLmdlb21ldHJ5PWksbC5tYXRlcmlhbD1yLGwuZ3JvdXBPcmRlcj1vLGwucmVuZGVyT3JkZXI9bi5yZW5kZXJPcmRlcixsLno9YSxsLmdyb3VwPXMpLGUrKyxsfXJldHVybntvcGFxdWU6bix0cmFuc21pc3NpdmU6aSx0cmFuc3BhcmVudDpyLGluaXQ6ZnVuY3Rpb24gYSgpe2U9MCxuLmxlbmd0aD0wLGkubGVuZ3RoPTAsci5sZW5ndGg9MH0scHVzaDpmdW5jdGlvbiBzKHQsZSxhLGwsYyx1KXtjb25zdCBoPW8odCxlLGEsbCxjLHUpO2EudHJhbnNtaXNzaW9uPjA/aS5wdXNoKGgpOiEwPT09YS50cmFuc3BhcmVudD9yLnB1c2goaCk6bi5wdXNoKGgpfSx1bnNoaWZ0OmZ1bmN0aW9uIGwodCxlLGEscyxjLHUpe2NvbnN0IGg9byh0LGUsYSxzLGMsdSk7YS50cmFuc21pc3Npb24+MD9pLnVuc2hpZnQoaCk6ITA9PT1hLnRyYW5zcGFyZW50P3IudW5zaGlmdChoKTpuLnVuc2hpZnQoaCl9LGZpbmlzaDpmdW5jdGlvbiBjKCl7Zm9yKGxldCBuPWUsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBlPXRbbl07aWYobnVsbD09PWUuaWQpYnJlYWs7ZS5pZD1udWxsLGUub2JqZWN0PW51bGwsZS5nZW9tZXRyeT1udWxsLGUubWF0ZXJpYWw9bnVsbCxlLmdyb3VwPW51bGx9fSxzb3J0OmZ1bmN0aW9uIHUodCxlKXtuLmxlbmd0aD4xJiZuLnNvcnQodHx8cTh0KSxpLmxlbmd0aD4xJiZpLnNvcnQoZXx8WTh0KSxyLmxlbmd0aD4xJiZyLnNvcnQoZXx8WTh0KX19fWZ1bmN0aW9uICQ4dCgpe2xldCB0PW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gZShuLGkpe2xldCByO3JldHVybiExPT09dC5oYXMobik/KHI9bmV3IFg4dCx0LnNldChuLFtyXSkpOmk+PXQuZ2V0KG4pLmxlbmd0aD8ocj1uZXcgWDh0LHQuZ2V0KG4pLnB1c2gocikpOnI9dC5nZXQobilbaV0scn0sZGlzcG9zZTpmdW5jdGlvbiBuKCl7dD1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIEs4dCgpe2NvbnN0IHQ9e307cmV0dXJue2dldDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT10W2UuaWRdKXJldHVybiB0W2UuaWRdO2xldCBuO3N3aXRjaChlLnR5cGUpe2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6bj17ZGlyZWN0aW9uOm5ldyBhM3QsY29sb3I6bmV3ICQ1dH07YnJlYWs7Y2FzZSJTcG90TGlnaHQiOm49e3Bvc2l0aW9uOm5ldyBhM3QsZGlyZWN0aW9uOm5ldyBhM3QsY29sb3I6bmV3ICQ1dCxkaXN0YW5jZTowLGNvbmVDb3M6MCxwZW51bWJyYUNvczowLGRlY2F5OjB9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bj17cG9zaXRpb246bmV3IGEzdCxjb2xvcjpuZXcgJDV0LGRpc3RhbmNlOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJIZW1pc3BoZXJlTGlnaHQiOm49e2RpcmVjdGlvbjpuZXcgYTN0LHNreUNvbG9yOm5ldyAkNXQsZ3JvdW5kQ29sb3I6bmV3ICQ1dH07YnJlYWs7Y2FzZSJSZWN0QXJlYUxpZ2h0IjpuPXtjb2xvcjpuZXcgJDV0LHBvc2l0aW9uOm5ldyBhM3QsaGFsZldpZHRoOm5ldyBhM3QsaGFsZkhlaWdodDpuZXcgYTN0fX1yZXR1cm4gdFtlLmlkXT1uLG59fX1sZXQgWjh0PTA7ZnVuY3Rpb24gSjh0KHQsZSl7cmV0dXJuKGUuY2FzdFNoYWRvdz8xOjApLSh0LmNhc3RTaGFkb3c/MTowKX1mdW5jdGlvbiBROHQodCxlKXtjb25zdCBuPW5ldyBLOHQsaT0oZnVuY3Rpb24gcigpe2NvbnN0IHQ9e307cmV0dXJue2dldDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT10W2UuaWRdKXJldHVybiB0W2UuaWRdO2xldCBuO3N3aXRjaChlLnR5cGUpe2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6Y2FzZSJTcG90TGlnaHQiOm49e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgRDV0fTticmVhaztjYXNlIlBvaW50TGlnaHQiOm49e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgRDV0LHNoYWRvd0NhbWVyYU5lYXI6MSxzaGFkb3dDYW1lcmFGYXI6MWUzfX1yZXR1cm4gdFtlLmlkXT1uLG59fX0pKCksbz17dmVyc2lvbjowLGhhc2g6e2RpcmVjdGlvbmFsTGVuZ3RoOi0xLHBvaW50TGVuZ3RoOi0xLHNwb3RMZW5ndGg6LTEscmVjdEFyZWFMZW5ndGg6LTEsaGVtaUxlbmd0aDotMSxudW1EaXJlY3Rpb25hbFNoYWRvd3M6LTEsbnVtUG9pbnRTaGFkb3dzOi0xLG51bVNwb3RTaGFkb3dzOi0xfSxhbWJpZW50OlswLDAsMF0scHJvYmU6W10sZGlyZWN0aW9uYWw6W10sZGlyZWN0aW9uYWxTaGFkb3c6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXA6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6W10sc3BvdDpbXSxzcG90U2hhZG93OltdLHNwb3RTaGFkb3dNYXA6W10sc3BvdFNoYWRvd01hdHJpeDpbXSxyZWN0QXJlYTpbXSxyZWN0QXJlYUxUQzE6bnVsbCxyZWN0QXJlYUxUQzI6bnVsbCxwb2ludDpbXSxwb2ludFNoYWRvdzpbXSxwb2ludFNoYWRvd01hcDpbXSxwb2ludFNoYWRvd01hdHJpeDpbXSxoZW1pOltdfTtmb3IobGV0IHQ9MDt0PDk7dCsrKW8ucHJvYmUucHVzaChuZXcgYTN0KTtjb25zdCBhPW5ldyBhM3Qscz1uZXcgRDN0LGw9bmV3IEQzdDtyZXR1cm57c2V0dXA6ZnVuY3Rpb24gYyhyLGEpe2xldCBzPTAsbD0wLGM9MDtmb3IobGV0IHQ9MDt0PDk7dCsrKW8ucHJvYmVbdF0uc2V0KDAsMCwwKTtsZXQgdT0wLGg9MCxkPTAscD0wLGY9MCxtPTAsZz0wLF89MDtyLnNvcnQoSjh0KTtjb25zdCB5PSEwIT09YT9NYXRoLlBJOjE7Zm9yKGxldCB0PTAsZT1yLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPXJbdF0sYT1lLmNvbG9yLHY9ZS5pbnRlbnNpdHksYj1lLmRpc3RhbmNlLHg9ZS5zaGFkb3cmJmUuc2hhZG93Lm1hcD9lLnNoYWRvdy5tYXAudGV4dHVyZTpudWxsO2lmKGUuaXNBbWJpZW50TGlnaHQpcys9YS5yKnYqeSxsKz1hLmcqdip5LGMrPWEuYip2Knk7ZWxzZSBpZihlLmlzTGlnaHRQcm9iZSlmb3IobGV0IHQ9MDt0PDk7dCsrKW8ucHJvYmVbdF0uYWRkU2NhbGVkVmVjdG9yKGUuc2guY29lZmZpY2llbnRzW3RdLHYpO2Vsc2UgaWYoZS5pc0RpcmVjdGlvbmFsTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5jb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKGUuaW50ZW5zaXR5KnkpLGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPWkuZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG8uZGlyZWN0aW9uYWxTaGFkb3dbdV09bixvLmRpcmVjdGlvbmFsU2hhZG93TWFwW3VdPXgsby5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeFt1XT1lLnNoYWRvdy5tYXRyaXgsbSsrfW8uZGlyZWN0aW9uYWxbdV09dCx1Kyt9ZWxzZSBpZihlLmlzU3BvdExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLHQuY29sb3IuY29weShhKS5tdWx0aXBseVNjYWxhcih2KnkpLHQuZGlzdGFuY2U9Yix0LmNvbmVDb3M9TWF0aC5jb3MoZS5hbmdsZSksdC5wZW51bWJyYUNvcz1NYXRoLmNvcyhlLmFuZ2xlKigxLWUucGVudW1icmEpKSx0LmRlY2F5PWUuZGVjYXksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49aS5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsby5zcG90U2hhZG93W2RdPW4sby5zcG90U2hhZG93TWFwW2RdPXgsby5zcG90U2hhZG93TWF0cml4W2RdPWUuc2hhZG93Lm1hdHJpeCxfKyt9by5zcG90W2RdPXQsZCsrfWVsc2UgaWYoZS5pc1JlY3RBcmVhTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7dC5jb2xvci5jb3B5KGEpLm11bHRpcGx5U2NhbGFyKHYpLHQuaGFsZldpZHRoLnNldCguNSplLndpZHRoLDAsMCksdC5oYWxmSGVpZ2h0LnNldCgwLC41KmUuaGVpZ2h0LDApLG8ucmVjdEFyZWFbcF09dCxwKyt9ZWxzZSBpZihlLmlzUG9pbnRMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LmNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoZS5pbnRlbnNpdHkqeSksdC5kaXN0YW5jZT1lLmRpc3RhbmNlLHQuZGVjYXk9ZS5kZWNheSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1pLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxuLnNoYWRvd0NhbWVyYU5lYXI9dC5jYW1lcmEubmVhcixuLnNoYWRvd0NhbWVyYUZhcj10LmNhbWVyYS5mYXIsby5wb2ludFNoYWRvd1toXT1uLG8ucG9pbnRTaGFkb3dNYXBbaF09eCxvLnBvaW50U2hhZG93TWF0cml4W2hdPWUuc2hhZG93Lm1hdHJpeCxnKyt9by5wb2ludFtoXT10LGgrK31lbHNlIGlmKGUuaXNIZW1pc3BoZXJlTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7dC5za3lDb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKHYqeSksdC5ncm91bmRDb2xvci5jb3B5KGUuZ3JvdW5kQ29sb3IpLm11bHRpcGx5U2NhbGFyKHYqeSksby5oZW1pW2ZdPXQsZisrfX1wPjAmJihlLmlzV2ViR0wyfHwhMD09PXQuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKT8oby5yZWN0QXJlYUxUQzE9TDZ0LkxUQ19GTE9BVF8xLG8ucmVjdEFyZWFMVEMyPUw2dC5MVENfRkxPQVRfMik6ITA9PT10LmhhcygiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKT8oby5yZWN0QXJlYUxUQzE9TDZ0LkxUQ19IQUxGXzEsby5yZWN0QXJlYUxUQzI9TDZ0LkxUQ19IQUxGXzIpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVuYWJsZSB0byB1c2UgUmVjdEFyZWFMaWdodC4gTWlzc2luZyBXZWJHTCBleHRlbnNpb25zLiIpKSxvLmFtYmllbnRbMF09cyxvLmFtYmllbnRbMV09bCxvLmFtYmllbnRbMl09Yztjb25zdCB2PW8uaGFzaDt2LmRpcmVjdGlvbmFsTGVuZ3RoPT09dSYmdi5wb2ludExlbmd0aD09PWgmJnYuc3BvdExlbmd0aD09PWQmJnYucmVjdEFyZWFMZW5ndGg9PT1wJiZ2LmhlbWlMZW5ndGg9PT1mJiZ2Lm51bURpcmVjdGlvbmFsU2hhZG93cz09PW0mJnYubnVtUG9pbnRTaGFkb3dzPT09ZyYmdi5udW1TcG90U2hhZG93cz09PV98fChvLmRpcmVjdGlvbmFsLmxlbmd0aD11LG8uc3BvdC5sZW5ndGg9ZCxvLnJlY3RBcmVhLmxlbmd0aD1wLG8ucG9pbnQubGVuZ3RoPWgsby5oZW1pLmxlbmd0aD1mLG8uZGlyZWN0aW9uYWxTaGFkb3cubGVuZ3RoPW0sby5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGg9bSxvLnBvaW50U2hhZG93Lmxlbmd0aD1nLG8ucG9pbnRTaGFkb3dNYXAubGVuZ3RoPWcsby5zcG90U2hhZG93Lmxlbmd0aD1fLG8uc3BvdFNoYWRvd01hcC5sZW5ndGg9XyxvLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4Lmxlbmd0aD1tLG8ucG9pbnRTaGFkb3dNYXRyaXgubGVuZ3RoPWcsby5zcG90U2hhZG93TWF0cml4Lmxlbmd0aD1fLHYuZGlyZWN0aW9uYWxMZW5ndGg9dSx2LnBvaW50TGVuZ3RoPWgsdi5zcG90TGVuZ3RoPWQsdi5yZWN0QXJlYUxlbmd0aD1wLHYuaGVtaUxlbmd0aD1mLHYubnVtRGlyZWN0aW9uYWxTaGFkb3dzPW0sdi5udW1Qb2ludFNoYWRvd3M9Zyx2Lm51bVNwb3RTaGFkb3dzPV8sby52ZXJzaW9uPVo4dCsrKX0sc2V0dXBWaWV3OmZ1bmN0aW9uIHUodCxlKXtsZXQgbj0wLGk9MCxyPTAsYz0wLHU9MDtjb25zdCBoPWUubWF0cml4V29ybGRJbnZlcnNlO2ZvcihsZXQgZT0wLGQ9dC5sZW5ndGg7ZTxkO2UrKyl7Y29uc3QgZD10W2VdO2lmKGQuaXNEaXJlY3Rpb25hbExpZ2h0KXtjb25zdCB0PW8uZGlyZWN0aW9uYWxbbl07dC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLGEuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQudGFyZ2V0Lm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi5zdWIoYSksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGgpLG4rK31lbHNlIGlmKGQuaXNTcG90TGlnaHQpe2NvbnN0IHQ9by5zcG90W3JdO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLHQuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSxhLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLnRhcmdldC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24uc3ViKGEpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihoKSxyKyt9ZWxzZSBpZihkLmlzUmVjdEFyZWFMaWdodCl7Y29uc3QgdD1vLnJlY3RBcmVhW2NdO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLGwuaWRlbnRpdHkoKSxzLmNvcHkoZC5tYXRyaXhXb3JsZCkscy5wcmVtdWx0aXBseShoKSxsLmV4dHJhY3RSb3RhdGlvbihzKSx0LmhhbGZXaWR0aC5zZXQoLjUqZC53aWR0aCwwLDApLHQuaGFsZkhlaWdodC5zZXQoMCwuNSpkLmhlaWdodCwwKSx0LmhhbGZXaWR0aC5hcHBseU1hdHJpeDQobCksdC5oYWxmSGVpZ2h0LmFwcGx5TWF0cml4NChsKSxjKyt9ZWxzZSBpZihkLmlzUG9pbnRMaWdodCl7Y29uc3QgdD1vLnBvaW50W2ldO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLGkrK31lbHNlIGlmKGQuaXNIZW1pc3BoZXJlTGlnaHQpe2NvbnN0IHQ9by5oZW1pW3VdO3QuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oaCksdC5kaXJlY3Rpb24ubm9ybWFsaXplKCksdSsrfX19LHN0YXRlOm99fWZ1bmN0aW9uIHQ3dCh0LGUpe2NvbnN0IG49bmV3IFE4dCh0LGUpLGk9W10scj1bXTtyZXR1cm57aW5pdDpmdW5jdGlvbiBvKCl7aS5sZW5ndGg9MCxyLmxlbmd0aD0wfSxzdGF0ZTp7bGlnaHRzQXJyYXk6aSxzaGFkb3dzQXJyYXk6cixsaWdodHM6bn0sc2V0dXBMaWdodHM6ZnVuY3Rpb24gYSh0KXtuLnNldHVwKGksdCl9LHNldHVwTGlnaHRzVmlldzpmdW5jdGlvbiBzKHQpe24uc2V0dXBWaWV3KGksdCl9LHB1c2hMaWdodDpmdW5jdGlvbiBsKHQpe2kucHVzaCh0KX0scHVzaFNoYWRvdzpmdW5jdGlvbiBjKHQpe3IucHVzaCh0KX19fWZ1bmN0aW9uIGU3dCh0LGUpe2xldCBuPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gaShyLG89MCl7bGV0IGE7cmV0dXJuITE9PT1uLmhhcyhyKT8oYT1uZXcgdDd0KHQsZSksbi5zZXQocixbYV0pKTpvPj1uLmdldChyKS5sZW5ndGg/KGE9bmV3IHQ3dCh0LGUpLG4uZ2V0KHIpLnB1c2goYSkpOmE9bi5nZXQocilbb10sYX0sZGlzcG9zZTpmdW5jdGlvbiByKCl7bj1uZXcgV2Vha01hcH19fWNsYXNzIG43dCBleHRlbmRzIHg0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaERlcHRoTWF0ZXJpYWwiLHRoaXMuZGVwdGhQYWNraW5nPTMyMDAsdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVwdGhQYWNraW5nPXQuZGVwdGhQYWNraW5nLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzfX1uN3QucHJvdG90eXBlLmlzTWVzaERlcHRoTWF0ZXJpYWw9ITA7Y2xhc3MgaTd0IGV4dGVuZHMgeDR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGlzdGFuY2VNYXRlcmlhbCIsdGhpcy5yZWZlcmVuY2VQb3NpdGlvbj1uZXcgYTN0LHRoaXMubmVhckRpc3RhbmNlPTEsdGhpcy5mYXJEaXN0YW5jZT0xZTMsdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnJlZmVyZW5jZVBvc2l0aW9uLmNvcHkodC5yZWZlcmVuY2VQb3NpdGlvbiksdGhpcy5uZWFyRGlzdGFuY2U9dC5uZWFyRGlzdGFuY2UsdGhpcy5mYXJEaXN0YW5jZT10LmZhckRpc3RhbmNlLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzfX1pN3QucHJvdG90eXBlLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWw9ITA7ZnVuY3Rpb24gcjd0KHQsZSxuKXtsZXQgaT1uZXcgVDZ0O2NvbnN0IHI9bmV3IEQ1dCxvPW5ldyBENXQsYT1uZXcgZTN0LHM9bmV3IG43dCh7ZGVwdGhQYWNraW5nOjMyMDF9KSxsPW5ldyBpN3QsYz17fSx1PW4ubWF4VGV4dHVyZVNpemUsaD17MDoxLDE6MCwyOjJ9LGQ9bmV3IHA2dCh7ZGVmaW5lczp7VlNNX1NBTVBMRVM6OH0sdW5pZm9ybXM6e3NoYWRvd19wYXNzOnt2YWx1ZTpudWxsfSxyZXNvbHV0aW9uOnt2YWx1ZTpuZXcgRDV0fSxyYWRpdXM6e3ZhbHVlOjR9fSx2ZXJ0ZXhTaGFkZXI6InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59IixmcmFnbWVudFNoYWRlcjoidW5pZm9ybSBzYW1wbGVyMkQgc2hhZG93X3Bhc3M7XG51bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjtcbnVuaWZvcm0gZmxvYXQgcmFkaXVzO1xuI2luY2x1ZGUgPHBhY2tpbmc+XG52b2lkIG1haW4oKSB7XG5cdGNvbnN0IGZsb2F0IHNhbXBsZXMgPSBmbG9hdCggVlNNX1NBTVBMRVMgKTtcblx0ZmxvYXQgbWVhbiA9IDAuMDtcblx0ZmxvYXQgc3F1YXJlZF9tZWFuID0gMC4wO1xuXHRmbG9hdCB1dlN0cmlkZSA9IHNhbXBsZXMgPD0gMS4wID8gMC4wIDogMi4wIC8gKCBzYW1wbGVzIC0gMS4wICk7XG5cdGZsb2F0IHV2U3RhcnQgPSBzYW1wbGVzIDw9IDEuMCA/IDAuMCA6IC0gMS4wO1xuXHRmb3IgKCBmbG9hdCBpID0gMC4wOyBpIDwgc2FtcGxlczsgaSArKyApIHtcblx0XHRmbG9hdCB1dk9mZnNldCA9IHV2U3RhcnQgKyBpICogdXZTdHJpZGU7XG5cdFx0I2lmZGVmIEhPUklaT05UQUxfUEFTU1xuXHRcdFx0dmVjMiBkaXN0cmlidXRpb24gPSB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCB1dk9mZnNldCwgMC4wICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApO1xuXHRcdFx0bWVhbiArPSBkaXN0cmlidXRpb24ueDtcblx0XHRcdHNxdWFyZWRfbWVhbiArPSBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICsgZGlzdHJpYnV0aW9uLnggKiBkaXN0cmlidXRpb24ueDtcblx0XHQjZWxzZVxuXHRcdFx0ZmxvYXQgZGVwdGggPSB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCAwLjAsIHV2T2Zmc2V0ICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApO1xuXHRcdFx0bWVhbiArPSBkZXB0aDtcblx0XHRcdHNxdWFyZWRfbWVhbiArPSBkZXB0aCAqIGRlcHRoO1xuXHRcdCNlbmRpZlxuXHR9XG5cdG1lYW4gPSBtZWFuIC8gc2FtcGxlcztcblx0c3F1YXJlZF9tZWFuID0gc3F1YXJlZF9tZWFuIC8gc2FtcGxlcztcblx0ZmxvYXQgc3RkX2RldiA9IHNxcnQoIHNxdWFyZWRfbWVhbiAtIG1lYW4gKiBtZWFuICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2sySGFsZlRvUkdCQSggdmVjMiggbWVhbiwgc3RkX2RldiApICk7XG59In0pLHA9ZC5jbG9uZSgpO3AuZGVmaW5lcy5IT1JJWk9OVEFMX1BBU1M9MTtjb25zdCBmPW5ldyBqNHQ7Zi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgRTR0KG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC41LDMsLTEsLjUsLTEsMywuNV0pLDMpKTtjb25zdCBtPW5ldyBzNnQoZixkKSxnPXRoaXM7ZnVuY3Rpb24gXyhuLGkpe2NvbnN0IHI9ZS51cGRhdGUobSk7ZC5kZWZpbmVzLlZTTV9TQU1QTEVTIT09bi5ibHVyU2FtcGxlcyYmKGQuZGVmaW5lcy5WU01fU0FNUExFUz1uLmJsdXJTYW1wbGVzLHAuZGVmaW5lcy5WU01fU0FNUExFUz1uLmJsdXJTYW1wbGVzLGQubmVlZHNVcGRhdGU9ITAscC5uZWVkc1VwZGF0ZT0hMCksZC51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT1uLm1hcC50ZXh0dXJlLGQudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUsZC51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXBQYXNzKSx0LmNsZWFyKCksdC5yZW5kZXJCdWZmZXJEaXJlY3QoaSxudWxsLHIsZCxtLG51bGwpLHAudW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXBQYXNzLnRleHR1cmUscC51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlPW4ubWFwU2l6ZSxwLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT1uLnJhZGl1cyx0LnNldFJlbmRlclRhcmdldChuLm1hcCksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KGksbnVsbCxyLHAsbSxudWxsKX1mdW5jdGlvbiB5KGUsbixpLHIsbyxhLHUpe2xldCBkPW51bGw7Y29uc3QgcD0hMD09PXIuaXNQb2ludExpZ2h0P2UuY3VzdG9tRGlzdGFuY2VNYXRlcmlhbDplLmN1c3RvbURlcHRoTWF0ZXJpYWw7aWYoZD12b2lkIDAhPT1wP3A6ITA9PT1yLmlzUG9pbnRMaWdodD9sOnMsdC5sb2NhbENsaXBwaW5nRW5hYmxlZCYmITA9PT1pLmNsaXBTaGFkb3dzJiYwIT09aS5jbGlwcGluZ1BsYW5lcy5sZW5ndGh8fGkuZGlzcGxhY2VtZW50TWFwJiYwIT09aS5kaXNwbGFjZW1lbnRTY2FsZXx8aS5hbHBoYU1hcCYmaS5hbHBoYVRlc3Q+MCl7Y29uc3QgdD1kLnV1aWQsZT1pLnV1aWQ7bGV0IG49Y1t0XTt2b2lkIDA9PT1uJiYobj17fSxjW3RdPW4pO2xldCByPW5bZV07dm9pZCAwPT09ciYmKHI9ZC5jbG9uZSgpLG5bZV09ciksZD1yfXJldHVybiBkLnZpc2libGU9aS52aXNpYmxlLGQud2lyZWZyYW1lPWkud2lyZWZyYW1lLGQuc2lkZT0zPT09dT9udWxsIT09aS5zaGFkb3dTaWRlP2kuc2hhZG93U2lkZTppLnNpZGU6bnVsbCE9PWkuc2hhZG93U2lkZT9pLnNoYWRvd1NpZGU6aFtpLnNpZGVdLGQuYWxwaGFNYXA9aS5hbHBoYU1hcCxkLmFscGhhVGVzdD1pLmFscGhhVGVzdCxkLmNsaXBTaGFkb3dzPWkuY2xpcFNoYWRvd3MsZC5jbGlwcGluZ1BsYW5lcz1pLmNsaXBwaW5nUGxhbmVzLGQuY2xpcEludGVyc2VjdGlvbj1pLmNsaXBJbnRlcnNlY3Rpb24sZC5kaXNwbGFjZW1lbnRNYXA9aS5kaXNwbGFjZW1lbnRNYXAsZC5kaXNwbGFjZW1lbnRTY2FsZT1pLmRpc3BsYWNlbWVudFNjYWxlLGQuZGlzcGxhY2VtZW50Qmlhcz1pLmRpc3BsYWNlbWVudEJpYXMsZC53aXJlZnJhbWVMaW5ld2lkdGg9aS53aXJlZnJhbWVMaW5ld2lkdGgsZC5saW5ld2lkdGg9aS5saW5ld2lkdGgsITA9PT1yLmlzUG9pbnRMaWdodCYmITA9PT1kLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWwmJihkLnJlZmVyZW5jZVBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihyLm1hdHJpeFdvcmxkKSxkLm5lYXJEaXN0YW5jZT1vLGQuZmFyRGlzdGFuY2U9YSksZH1mdW5jdGlvbiB2KG4scixvLGEscyl7aWYoITE9PT1uLnZpc2libGUpcmV0dXJuO2lmKG4ubGF5ZXJzLnRlc3Qoci5sYXllcnMpJiYobi5pc01lc2h8fG4uaXNMaW5lfHxuLmlzUG9pbnRzKSYmKG4uY2FzdFNoYWRvd3x8bi5yZWNlaXZlU2hhZG93JiYzPT09cykmJighbi5mcnVzdHVtQ3VsbGVkfHxpLmludGVyc2VjdHNPYmplY3QobikpKXtuLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG8ubWF0cml4V29ybGRJbnZlcnNlLG4ubWF0cml4V29ybGQpO2NvbnN0IGk9ZS51cGRhdGUobikscj1uLm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9aS5ncm91cHM7Zm9yKGxldCBsPTAsYz1lLmxlbmd0aDtsPGM7bCsrKXtjb25zdCBjPWVbbF0sdT1yW2MubWF0ZXJpYWxJbmRleF07aWYodSYmdS52aXNpYmxlKXtjb25zdCBlPXkobiwwLHUsYSxvLm5lYXIsby5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QobyxudWxsLGksZSxuLGMpfX19ZWxzZSBpZihyLnZpc2libGUpe2NvbnN0IGU9eShuLDAscixhLG8ubmVhcixvLmZhcixzKTt0LnJlbmRlckJ1ZmZlckRpcmVjdChvLG51bGwsaSxlLG4sbnVsbCl9fWNvbnN0IGw9bi5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0KyspdihsW3RdLHIsbyxhLHMpfXRoaXMuZW5hYmxlZD0hMSx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLnR5cGU9MSx0aGlzLnJlbmRlcj1mdW5jdGlvbihlLG4scyl7aWYoITE9PT1nLmVuYWJsZWQpcmV0dXJuO2lmKCExPT09Zy5hdXRvVXBkYXRlJiYhMT09PWcubmVlZHNVcGRhdGUpcmV0dXJuO2lmKDA9PT1lLmxlbmd0aClyZXR1cm47Y29uc3QgbD10LmdldFJlbmRlclRhcmdldCgpLGM9dC5nZXRBY3RpdmVDdWJlRmFjZSgpLGg9dC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLGQ9dC5zdGF0ZTtkLnNldEJsZW5kaW5nKDApLGQuYnVmZmVycy5jb2xvci5zZXRDbGVhcigxLDEsMSwxKSxkLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksZC5zZXRTY2lzc29yVGVzdCghMSk7Zm9yKGxldCBsPTAsYz1lLmxlbmd0aDtsPGM7bCsrKXtjb25zdCBjPWVbbF0saD1jLnNoYWRvdztpZih2b2lkIDA9PT1oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiIsYywiaGFzIG5vIHNoYWRvdy4iKTtjb250aW51ZX1pZighMT09PWguYXV0b1VwZGF0ZSYmITE9PT1oLm5lZWRzVXBkYXRlKWNvbnRpbnVlO3IuY29weShoLm1hcFNpemUpO2NvbnN0IHA9aC5nZXRGcmFtZUV4dGVudHMoKTtpZihyLm11bHRpcGx5KHApLG8uY29weShoLm1hcFNpemUpLChyLng+dXx8ci55PnUpJiYoci54PnUmJihvLng9TWF0aC5mbG9vcih1L3AueCksci54PW8ueCpwLngsaC5tYXBTaXplLng9by54KSxyLnk+dSYmKG8ueT1NYXRoLmZsb29yKHUvcC55KSxyLnk9by55KnAueSxoLm1hcFNpemUueT1vLnkpKSxudWxsPT09aC5tYXAmJiFoLmlzUG9pbnRMaWdodFNoYWRvdyYmMz09PXRoaXMudHlwZSl7Y29uc3QgdD17bWluRmlsdGVyOnAydCxtYWdGaWx0ZXI6cDJ0LGZvcm1hdDp3MnR9O2gubWFwPW5ldyBuM3Qoci54LHIueSx0KSxoLm1hcC50ZXh0dXJlLm5hbWU9Yy5uYW1lKyIuc2hhZG93TWFwIixoLm1hcFBhc3M9bmV3IG4zdChyLngsci55LHQpLGguY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1pZihudWxsPT09aC5tYXApe2gubWFwPW5ldyBuM3Qoci54LHIueSx7bWluRmlsdGVyOnUydCxtYWdGaWx0ZXI6dTJ0LGZvcm1hdDp3MnR9KSxoLm1hcC50ZXh0dXJlLm5hbWU9Yy5uYW1lKyIuc2hhZG93TWFwIixoLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dC5zZXRSZW5kZXJUYXJnZXQoaC5tYXApLHQuY2xlYXIoKTtjb25zdCBmPWguZ2V0Vmlld3BvcnRDb3VudCgpO2ZvcihsZXQgdD0wO3Q8Zjt0Kyspe2NvbnN0IGU9aC5nZXRWaWV3cG9ydCh0KTthLnNldChvLngqZS54LG8ueSplLnksby54KmUueixvLnkqZS53KSxkLnZpZXdwb3J0KGEpLGgudXBkYXRlTWF0cmljZXMoYyx0KSxpPWguZ2V0RnJ1c3R1bSgpLHYobixzLGguY2FtZXJhLGMsdGhpcy50eXBlKX1oLmlzUG9pbnRMaWdodFNoYWRvd3x8MyE9PXRoaXMudHlwZXx8XyhoLHMpLGgubmVlZHNVcGRhdGU9ITF9Zy5uZWVkc1VwZGF0ZT0hMSx0LnNldFJlbmRlclRhcmdldChsLGMsaCl9fWZ1bmN0aW9uIG83dCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyO2NvbnN0IHI9bmV3KGZ1bmN0aW9uIG8oKXtsZXQgZT0hMTtjb25zdCBuPW5ldyBlM3Q7bGV0IGk9bnVsbDtjb25zdCByPW5ldyBlM3QoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24obil7aT09PW58fGV8fCh0LmNvbG9yTWFzayhuLG4sbixuKSxpPW4pfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlLGksbyxhLHMpeyEwPT09cyYmKGUqPWEsaSo9YSxvKj1hKSxuLnNldChlLGksbyxhKSwhMT09PXIuZXF1YWxzKG4pJiYodC5jbGVhckNvbG9yKGUsaSxvLGEpLHIuY29weShuKSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxpPW51bGwsci5zZXQoLTEsMCwwLDApfX19KSxhPW5ldyhmdW5jdGlvbiBzKCl7bGV0IGU9ITEsbj1udWxsLGk9bnVsbCxyPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7dD9WKDI5MjkpOlUoMjkyOSl9LHNldE1hc2s6ZnVuY3Rpb24oaSl7bj09PWl8fGV8fCh0LmRlcHRoTWFzayhpKSxuPWkpfSxzZXRGdW5jOmZ1bmN0aW9uKGUpe2lmKGkhPT1lKXtpZihlKXN3aXRjaChlKXtjYXNlIDA6dC5kZXB0aEZ1bmMoNTEyKTticmVhaztjYXNlIDE6dC5kZXB0aEZ1bmMoNTE5KTticmVhaztjYXNlIDI6dC5kZXB0aEZ1bmMoNTEzKTticmVhaztjYXNlIDM6dC5kZXB0aEZ1bmMoNTE1KTticmVhaztjYXNlIDQ6dC5kZXB0aEZ1bmMoNTE0KTticmVhaztjYXNlIDU6dC5kZXB0aEZ1bmMoNTE4KTticmVhaztjYXNlIDY6dC5kZXB0aEZ1bmMoNTE2KTticmVhaztjYXNlIDc6dC5kZXB0aEZ1bmMoNTE3KTticmVhaztkZWZhdWx0OnQuZGVwdGhGdW5jKDUxNSl9ZWxzZSB0LmRlcHRoRnVuYyg1MTUpO2k9ZX19LHNldExvY2tlZDpmdW5jdGlvbih0KXtlPXR9LHNldENsZWFyOmZ1bmN0aW9uKGUpe3IhPT1lJiYodC5jbGVhckRlcHRoKGUpLHI9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbH19fSksbD1uZXcoZnVuY3Rpb24gYygpe2xldCBlPSExLG49bnVsbCxpPW51bGwscj1udWxsLG89bnVsbCxhPW51bGwscz1udWxsLGw9bnVsbCxjPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7ZXx8KHQ/VigyOTYwKTpVKDI5NjApKX0sc2V0TWFzazpmdW5jdGlvbihpKXtuPT09aXx8ZXx8KHQuc3RlbmNpbE1hc2soaSksbj1pKX0sc2V0RnVuYzpmdW5jdGlvbihlLG4sYSl7aT09PWUmJnI9PT1uJiZvPT09YXx8KHQuc3RlbmNpbEZ1bmMoZSxuLGEpLGk9ZSxyPW4sbz1hKX0sc2V0T3A6ZnVuY3Rpb24oZSxuLGkpe2E9PT1lJiZzPT09biYmbD09PWl8fCh0LnN0ZW5jaWxPcChlLG4saSksYT1lLHM9bixsPWkpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtjIT09ZSYmKHQuY2xlYXJTdGVuY2lsKGUpLGM9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbCxvPW51bGwsYT1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsfX19KTtsZXQgdT17fSxoPXt9LGQ9bmV3IFdlYWtNYXAscD1bXSxmPW51bGwsbT0hMSxnPW51bGwsXz1udWxsLHk9bnVsbCx2PW51bGwsYj1udWxsLHg9bnVsbCx3PW51bGwsUz0hMSxNPW51bGwsRT1udWxsLFQ9bnVsbCxDPW51bGwsQT1udWxsO2NvbnN0IGs9dC5nZXRQYXJhbWV0ZXIoMzU2NjEpO2xldCBQPSExLEw9MDtjb25zdCBJPXQuZ2V0UGFyYW1ldGVyKDc5MzgpOy0xIT09SS5pbmRleE9mKCJXZWJHTCIpPyhMPXBhcnNlRmxvYXQoL15XZWJHTCAoXGQpLy5leGVjKEkpWzFdKSxQPUw+PTEpOi0xIT09SS5pbmRleE9mKCJPcGVuR0wgRVMiKSYmKEw9cGFyc2VGbG9hdCgvXk9wZW5HTCBFUyAoXGQpLy5leGVjKEkpWzFdKSxQPUw+PTIpO2xldCBOPW51bGwsUj17fTtjb25zdCBPPXQuZ2V0UGFyYW1ldGVyKDMwODgpLHo9dC5nZXRQYXJhbWV0ZXIoMjk3OCksRD0obmV3IGUzdCkuZnJvbUFycmF5KE8pLEI9KG5ldyBlM3QpLmZyb21BcnJheSh6KTtmdW5jdGlvbiBIKGUsbixpKXtjb25zdCByPW5ldyBVaW50OEFycmF5KDQpLG89dC5jcmVhdGVUZXh0dXJlKCk7dC5iaW5kVGV4dHVyZShlLG8pLHQudGV4UGFyYW1ldGVyaShlLDEwMjQxLDk3MjgpLHQudGV4UGFyYW1ldGVyaShlLDEwMjQwLDk3MjgpO2ZvcihsZXQgZT0wO2U8aTtlKyspdC50ZXhJbWFnZTJEKG4rZSwwLDY0MDgsMSwxLDAsNjQwOCw1MTIxLHIpO3JldHVybiBvfWNvbnN0IEY9e307ZnVuY3Rpb24gVihlKXshMCE9PXVbZV0mJih0LmVuYWJsZShlKSx1W2VdPSEwKX1mdW5jdGlvbiBVKGUpeyExIT09dVtlXSYmKHQuZGlzYWJsZShlKSx1W2VdPSExKX1GWzM1NTNdPUgoMzU1MywzNTUzLDEpLEZbMzQwNjddPUgoMzQwNjcsMzQwNjksNiksci5zZXRDbGVhcigwLDAsMCwxKSxhLnNldENsZWFyKDEpLGwuc2V0Q2xlYXIoMCksVigyOTI5KSxhLnNldEZ1bmMoMykscSghMSksWSgxKSxWKDI4ODQpLFcoMCk7Y29uc3Qgaj17W1EwdF06MzI3NzQsMTAxOjMyNzc4LDEwMjozMjc3OX07aWYoaSlqWzEwM109MzI3NzUsalsxMDRdPTMyNzc2O2Vsc2V7Y29uc3QgdD1lLmdldCgiRVhUX2JsZW5kX21pbm1heCIpO251bGwhPT10JiYoalsxMDNdPXQuTUlOX0VYVCxqWzEwNF09dC5NQVhfRVhUKX1jb25zdCBHPXsyMDA6MCwyMDE6MSwyMDI6NzY4LDIwNDo3NzAsMjEwOjc3NiwyMDg6Nzc0LDIwNjo3NzIsMjAzOjc2OSwyMDU6NzcxLDIwOTo3NzUsMjA3Ojc3M307ZnVuY3Rpb24gVyhlLG4saSxyLG8sYSxzLGwpe2lmKDAhPT1lKXtpZighMT09PW0mJihWKDMwNDIpLG09ITApLDU9PT1lKW89b3x8bixhPWF8fGkscz1zfHxyLG49PT1fJiZvPT09Ynx8KHQuYmxlbmRFcXVhdGlvblNlcGFyYXRlKGpbbl0saltvXSksXz1uLGI9byksaT09PXkmJnI9PT12JiZhPT09eCYmcz09PXd8fCh0LmJsZW5kRnVuY1NlcGFyYXRlKEdbaV0sR1tyXSxHW2FdLEdbc10pLHk9aSx2PXIseD1hLHc9cyksZz1lLFM9bnVsbDtlbHNlIGlmKGUhPT1nfHxsIT09Uyl7aWYoXz09PVEwdCYmYj09PVEwdHx8KHQuYmxlbmRFcXVhdGlvbigzMjc3NCksXz1RMHQsYj1RMHQpLGwpc3dpdGNoKGUpe2Nhc2UgMTp0LmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoMSwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OSwwLDEpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuY1NlcGFyYXRlKDAsNzY4LDAsNzcwKTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsZSl9ZWxzZSBzd2l0Y2goZSl7Y2FzZSAxOnQuYmxlbmRGdW5jU2VwYXJhdGUoNzcwLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDc3MCwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OSwwLDEpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuYygwLDc2OCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGUpfXk9bnVsbCx2PW51bGwseD1udWxsLHc9bnVsbCxnPWUsUz1sfX1lbHNlITA9PT1tJiYoVSgzMDQyKSxtPSExKX1mdW5jdGlvbiBxKGUpe00hPT1lJiYodC5mcm9udEZhY2UoZT8yMzA0OjIzMDUpLE09ZSl9ZnVuY3Rpb24gWShlKXswIT09ZT8oVigyODg0KSxlIT09RSYmdC5jdWxsRmFjZSgxPT09ZT8xMDI5OjI9PT1lPzEwMjg6MTAzMikpOlUoMjg4NCksRT1lfWZ1bmN0aW9uIFgoZSxuLGkpe2U/KFYoMzI4MjMpLEM9PT1uJiZBPT09aXx8KHQucG9seWdvbk9mZnNldChuLGkpLEM9bixBPWkpKTpVKDMyODIzKX1mdW5jdGlvbiAkKGUpe3ZvaWQgMD09PWUmJihlPTMzOTg0K2stMSksTiE9PWUmJih0LmFjdGl2ZVRleHR1cmUoZSksTj1lKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6cixkZXB0aDphLHN0ZW5jaWw6bH0sZW5hYmxlOlYsZGlzYWJsZTpVLGJpbmRGcmFtZWJ1ZmZlcjpmdW5jdGlvbiBLKGUsbil7cmV0dXJuIGhbZV0hPT1uJiYodC5iaW5kRnJhbWVidWZmZXIoZSxuKSxoW2VdPW4saSYmKDM2MDA5PT09ZSYmKGhbMzYxNjBdPW4pLDM2MTYwPT09ZSYmKGhbMzYwMDldPW4pKSwhMCl9LGRyYXdCdWZmZXJzOmZ1bmN0aW9uIFooaSxyKXtsZXQgbz1wLGE9ITE7aWYoaSlpZihvPWQuZ2V0KHIpLHZvaWQgMD09PW8mJihvPVtdLGQuc2V0KHIsbykpLGkuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyl7Y29uc3QgdD1pLnRleHR1cmU7aWYoby5sZW5ndGghPT10Lmxlbmd0aHx8MzYwNjQhPT1vWzBdKXtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspb1tlXT0zNjA2NCtlO28ubGVuZ3RoPXQubGVuZ3RoLGE9ITB9fWVsc2UgMzYwNjQhPT1vWzBdJiYob1swXT0zNjA2NCxhPSEwKTtlbHNlIDEwMjkhPT1vWzBdJiYob1swXT0xMDI5LGE9ITApO2EmJihuLmlzV2ViR0wyP3QuZHJhd0J1ZmZlcnMobyk6ZS5nZXQoIldFQkdMX2RyYXdfYnVmZmVycyIpLmRyYXdCdWZmZXJzV0VCR0wobykpfSx1c2VQcm9ncmFtOmZ1bmN0aW9uIEooZSl7cmV0dXJuIGYhPT1lJiYodC51c2VQcm9ncmFtKGUpLGY9ZSwhMCl9LHNldEJsZW5kaW5nOlcsc2V0TWF0ZXJpYWw6ZnVuY3Rpb24gUSh0LGUpezI9PT10LnNpZGU/VSgyODg0KTpWKDI4ODQpO2xldCBuPTE9PT10LnNpZGU7ZSYmKG49IW4pLHEobiksMT09PXQuYmxlbmRpbmcmJiExPT09dC50cmFuc3BhcmVudD9XKDApOlcodC5ibGVuZGluZyx0LmJsZW5kRXF1YXRpb24sdC5ibGVuZFNyYyx0LmJsZW5kRHN0LHQuYmxlbmRFcXVhdGlvbkFscGhhLHQuYmxlbmRTcmNBbHBoYSx0LmJsZW5kRHN0QWxwaGEsdC5wcmVtdWx0aXBsaWVkQWxwaGEpLGEuc2V0RnVuYyh0LmRlcHRoRnVuYyksYS5zZXRUZXN0KHQuZGVwdGhUZXN0KSxhLnNldE1hc2sodC5kZXB0aFdyaXRlKSxyLnNldE1hc2sodC5jb2xvcldyaXRlKTtjb25zdCBpPXQuc3RlbmNpbFdyaXRlO2wuc2V0VGVzdChpKSxpJiYobC5zZXRNYXNrKHQuc3RlbmNpbFdyaXRlTWFzayksbC5zZXRGdW5jKHQuc3RlbmNpbEZ1bmMsdC5zdGVuY2lsUmVmLHQuc3RlbmNpbEZ1bmNNYXNrKSxsLnNldE9wKHQuc3RlbmNpbEZhaWwsdC5zdGVuY2lsWkZhaWwsdC5zdGVuY2lsWlBhc3MpKSxYKHQucG9seWdvbk9mZnNldCx0LnBvbHlnb25PZmZzZXRGYWN0b3IsdC5wb2x5Z29uT2Zmc2V0VW5pdHMpLCEwPT09dC5hbHBoYVRvQ292ZXJhZ2U/VigzMjkyNik6VSgzMjkyNil9LHNldEZsaXBTaWRlZDpxLHNldEN1bGxGYWNlOlksc2V0TGluZVdpZHRoOmZ1bmN0aW9uIHR0KGUpe2UhPT1UJiYoUCYmdC5saW5lV2lkdGgoZSksVD1lKX0sc2V0UG9seWdvbk9mZnNldDpYLHNldFNjaXNzb3JUZXN0OmZ1bmN0aW9uIGV0KHQpe3Q/VigzMDg5KTpVKDMwODkpfSxhY3RpdmVUZXh0dXJlOiQsYmluZFRleHR1cmU6ZnVuY3Rpb24gbnQoZSxuKXtudWxsPT09TiYmJCgpO2xldCBpPVJbTl07dm9pZCAwPT09aSYmKGk9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxSW05dPWkpLGkudHlwZT09PWUmJmkudGV4dHVyZT09PW58fCh0LmJpbmRUZXh0dXJlKGUsbnx8RltlXSksaS50eXBlPWUsaS50ZXh0dXJlPW4pfSx1bmJpbmRUZXh0dXJlOmZ1bmN0aW9uIGl0KCl7Y29uc3QgZT1SW05dO3ZvaWQgMCE9PWUmJnZvaWQgMCE9PWUudHlwZSYmKHQuYmluZFRleHR1cmUoZS50eXBlLG51bGwpLGUudHlwZT12b2lkIDAsZS50ZXh0dXJlPXZvaWQgMCl9LGNvbXByZXNzZWRUZXhJbWFnZTJEOmZ1bmN0aW9uIHJ0KCl7dHJ5e3QuY29tcHJlc3NlZFRleEltYWdlMkQuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHRleEltYWdlMkQ6ZnVuY3Rpb24gb3QoKXt0cnl7dC50ZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTNEOmZ1bmN0aW9uIGF0KCl7dHJ5e3QudGV4SW1hZ2UzRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4U3RvcmFnZTJEOmZ1bmN0aW9uIHN0KCl7dHJ5e3QudGV4U3RvcmFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhTdG9yYWdlM0Q6ZnVuY3Rpb24gbHQoKXt0cnl7dC50ZXhTdG9yYWdlM0QuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHRleFN1YkltYWdlMkQ6ZnVuY3Rpb24gY3QoKXt0cnl7dC50ZXhTdWJJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhTdWJJbWFnZTNEOmZ1bmN0aW9uIHV0KCl7dHJ5e3QudGV4U3ViSW1hZ2UzRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sY29tcHJlc3NlZFRleFN1YkltYWdlMkQ6ZnVuY3Rpb24gaHQoKXt0cnl7dC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sc2Npc3NvcjpmdW5jdGlvbiBkdChlKXshMT09PUQuZXF1YWxzKGUpJiYodC5zY2lzc29yKGUueCxlLnksZS56LGUudyksRC5jb3B5KGUpKX0sdmlld3BvcnQ6ZnVuY3Rpb24gcHQoZSl7ITE9PT1CLmVxdWFscyhlKSYmKHQudmlld3BvcnQoZS54LGUueSxlLnosZS53KSxCLmNvcHkoZSkpfSxyZXNldDpmdW5jdGlvbiBmdCgpe3QuZGlzYWJsZSgzMDQyKSx0LmRpc2FibGUoMjg4NCksdC5kaXNhYmxlKDI5MjkpLHQuZGlzYWJsZSgzMjgyMyksdC5kaXNhYmxlKDMwODkpLHQuZGlzYWJsZSgyOTYwKSx0LmRpc2FibGUoMzI5MjYpLHQuYmxlbmRFcXVhdGlvbigzMjc3NCksdC5ibGVuZEZ1bmMoMSwwKSx0LmJsZW5kRnVuY1NlcGFyYXRlKDEsMCwxLDApLHQuY29sb3JNYXNrKCEwLCEwLCEwLCEwKSx0LmNsZWFyQ29sb3IoMCwwLDAsMCksdC5kZXB0aE1hc2soITApLHQuZGVwdGhGdW5jKDUxMyksdC5jbGVhckRlcHRoKDEpLHQuc3RlbmNpbE1hc2soNDI5NDk2NzI5NSksdC5zdGVuY2lsRnVuYyg1MTksMCw0Mjk0OTY3Mjk1KSx0LnN0ZW5jaWxPcCg3NjgwLDc2ODAsNzY4MCksdC5jbGVhclN0ZW5jaWwoMCksdC5jdWxsRmFjZSgxMDI5KSx0LmZyb250RmFjZSgyMzA1KSx0LnBvbHlnb25PZmZzZXQoMCwwKSx0LmFjdGl2ZVRleHR1cmUoMzM5ODQpLHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpLCEwPT09aSYmKHQuYmluZEZyYW1lYnVmZmVyKDM2MDA5LG51bGwpLHQuYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpKSx0LnVzZVByb2dyYW0obnVsbCksdC5saW5lV2lkdGgoMSksdC5zY2lzc29yKDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHQudmlld3BvcnQoMCwwLHQuY2FudmFzLndpZHRoLHQuY2FudmFzLmhlaWdodCksdT17fSxOPW51bGwsUj17fSxoPXt9LGQ9bmV3IFdlYWtNYXAscD1bXSxmPW51bGwsbT0hMSxnPW51bGwsXz1udWxsLHk9bnVsbCx2PW51bGwsYj1udWxsLHg9bnVsbCx3PW51bGwsUz0hMSxNPW51bGwsRT1udWxsLFQ9bnVsbCxDPW51bGwsQT1udWxsLEQuc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLEIuc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHIucmVzZXQoKSxhLnJlc2V0KCksbC5yZXNldCgpfX19ZnVuY3Rpb24gYTd0KHQsZSxuLGkscixvLGEpe2NvbnN0IHM9ci5pc1dlYkdMMixsPXIubWF4VGV4dHVyZXMsYz1yLm1heEN1YmVtYXBTaXplLHU9ci5tYXhUZXh0dXJlU2l6ZSxoPXIubWF4U2FtcGxlcyxkPWUuaGFzKCJXRUJHTF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKT9lLmdldCgiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIik6dm9pZCAwLHA9bmV3IFdlYWtNYXA7bGV0IGYsbT0hMTt0cnl7bT0idW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyYmbnVsbCE9PW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKS5nZXRDb250ZXh0KCIyZCIpfWNhdGNoKHQpe31mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIG0/bmV3IE9mZnNjcmVlbkNhbnZhcyh0LGUpOlU1dCgiY2FudmFzIil9ZnVuY3Rpb24gXyh0LGUsbixpKXtsZXQgcj0xO2lmKCh0LndpZHRoPml8fHQuaGVpZ2h0PmkpJiYocj1pL01hdGgubWF4KHQud2lkdGgsdC5oZWlnaHQpKSxyPDF8fCEwPT09ZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXApe2NvbnN0IGk9ZT93NXQ6TWF0aC5mbG9vcixvPWkocip0LndpZHRoKSxhPWkocip0LmhlaWdodCk7dm9pZCAwPT09ZiYmKGY9ZyhvLGEpKTtjb25zdCBzPW4/ZyhvLGEpOmY7cy53aWR0aD1vLHMuaGVpZ2h0PWE7cmV0dXJuIHMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UodCwwLDAsbyxhKSxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaGFzIGJlZW4gcmVzaXplZCBmcm9tICgiK3Qud2lkdGgrIngiK3QuaGVpZ2h0KyIpIHRvICgiK28rIngiK2ErIikuIiksc31yZXR1cm4iZGF0YSJpbiB0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEltYWdlIGluIERhdGFUZXh0dXJlIGlzIHRvbyBiaWcgKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikuIiksdH1yZXR1cm4gdH1mdW5jdGlvbiB5KHQpe3JldHVybiBiNXQodC53aWR0aCkmJmI1dCh0LmhlaWdodCl9ZnVuY3Rpb24gdih0LGUpe3JldHVybiB0LmdlbmVyYXRlTWlwbWFwcyYmZSYmdC5taW5GaWx0ZXIhPT11MnQmJnQubWluRmlsdGVyIT09cDJ0fWZ1bmN0aW9uIGIoZSl7dC5nZW5lcmF0ZU1pcG1hcChlKX1mdW5jdGlvbiB4KG4saSxyLG8sYT0hMSl7aWYoITE9PT1zKXJldHVybiBpO2lmKG51bGwhPT1uKXtpZih2b2lkIDAhPT10W25dKXJldHVybiB0W25dO2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byB1c2Ugbm9uLWV4aXN0aW5nIFdlYkdMIGludGVybmFsIGZvcm1hdCAnIituKyInIil9bGV0IGw9aTtyZXR1cm4gNjQwMz09PWkmJig1MTI2PT09ciYmKGw9MzMzMjYpLDUxMzE9PT1yJiYobD0zMzMyNSksNTEyMT09PXImJihsPTMzMzIxKSksMzMzMTk9PT1pJiYoNTEyNj09PXImJihsPTMzMzI4KSw1MTMxPT09ciYmKGw9MzMzMjcpLDUxMjE9PT1yJiYobD0zMzMyMykpLDY0MDg9PT1pJiYoNTEyNj09PXImJihsPTM0ODM2KSw1MTMxPT09ciYmKGw9MzQ4NDIpLDUxMjE9PT1yJiYobD1vPT09bzV0JiYhMT09PWE/MzU5MDc6MzI4NTYpLDMyODE5PT09ciYmKGw9MzI4NTQpLDMyODIwPT09ciYmKGw9MzI4NTUpKSwzMzMyNSE9PWwmJjMzMzI2IT09bCYmMzMzMjchPT1sJiYzMzMyOCE9PWwmJjM0ODQyIT09bCYmMzQ4MzYhPT1sfHxlLmdldCgiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLGx9ZnVuY3Rpb24gdyh0LGUsbil7cmV0dXJuITA9PT12KHQsbil8fHQuaXNGcmFtZWJ1ZmZlclRleHR1cmUmJnQubWluRmlsdGVyIT09dTJ0JiZ0Lm1pbkZpbHRlciE9PXAydD9NYXRoLmxvZzIoTWF0aC5tYXgoZS53aWR0aCxlLmhlaWdodCkpKzE6dm9pZCAwIT09dC5taXBtYXBzJiZ0Lm1pcG1hcHMubGVuZ3RoPjA/dC5taXBtYXBzLmxlbmd0aDp0LmlzQ29tcHJlc3NlZFRleHR1cmUmJkFycmF5LmlzQXJyYXkodC5pbWFnZSk/ZS5taXBtYXBzLmxlbmd0aDoxfWZ1bmN0aW9uIFModCl7cmV0dXJuIHQ9PT11MnR8fHQ9PT1oMnR8fHQ9PT1kMnQ/OTcyODo5NzI5fWZ1bmN0aW9uIE0oZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLE0pLChmdW5jdGlvbiByKGUpe2NvbnN0IG49aS5nZXQoZSk7aWYodm9pZCAwPT09bi5fX3dlYmdsSW5pdClyZXR1cm47dC5kZWxldGVUZXh0dXJlKG4uX193ZWJnbFRleHR1cmUpLGkucmVtb3ZlKGUpfSkobiksbi5pc1ZpZGVvVGV4dHVyZSYmcC5kZWxldGUobiksYS5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiBFKGUpe2NvbnN0IG49ZS50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixFKSwoZnVuY3Rpb24gcihlKXtjb25zdCBuPWUudGV4dHVyZSxyPWkuZ2V0KGUpLG89aS5nZXQobik7aWYoIWUpcmV0dXJuO3ZvaWQgMCE9PW8uX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoby5fX3dlYmdsVGV4dHVyZSksYS5tZW1vcnkudGV4dHVyZXMtLSk7ZS5kZXB0aFRleHR1cmUmJmUuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KWZvcihsZXQgZT0wO2U8NjtlKyspdC5kZWxldGVGcmFtZWJ1ZmZlcihyLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXSksci5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIuX193ZWJnbERlcHRoYnVmZmVyW2VdKTtlbHNlIHQuZGVsZXRlRnJhbWVidWZmZXIoci5fX3dlYmdsRnJhbWVidWZmZXIpLHIuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xEZXB0aGJ1ZmZlciksci5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXImJnQuZGVsZXRlRnJhbWVidWZmZXIoci5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLHIuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksci5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyKTtpZihlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpZm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWkuZ2V0KG5bZV0pO3IuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoci5fX3dlYmdsVGV4dHVyZSksYS5tZW1vcnkudGV4dHVyZXMtLSksaS5yZW1vdmUobltlXSl9aS5yZW1vdmUobiksaS5yZW1vdmUoZSl9KShuKX1sZXQgVD0wO2Z1bmN0aW9uIEModCxlKXtjb25zdCByPWkuZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiBvKHQpe2NvbnN0IGU9YS5yZW5kZXIuZnJhbWU7cC5nZXQodCkhPT1lJiYocC5zZXQodCxlKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3Qgbj10LmltYWdlO2lmKHZvaWQgMD09PW4pY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09bi5jb21wbGV0ZSlyZXR1cm4gdm9pZCBOKHIsdCxlKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19bi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU1MyxyLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBBKGUscil7Y29uc3QgYT1pLmdldChlKTtlLnZlcnNpb24+MCYmYS5fX3ZlcnNpb24hPT1lLnZlcnNpb24/KGZ1bmN0aW9uIGwoZSxpLHIpe2lmKDYhPT1pLmltYWdlLmxlbmd0aClyZXR1cm47SShlLGkpLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtyKSxuLmJpbmRUZXh0dXJlKDM0MDY3LGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsaS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxpLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCBhPWkmJihpLmlzQ29tcHJlc3NlZFRleHR1cmV8fGkuaW1hZ2VbMF0uaXNDb21wcmVzc2VkVGV4dHVyZSksbD1pLmltYWdlWzBdJiZpLmltYWdlWzBdLmlzRGF0YVRleHR1cmUsdT1bXTtmb3IobGV0IHQ9MDt0PDY7dCsrKXVbdF09YXx8bD9sP2kuaW1hZ2VbdF0uaW1hZ2U6aS5pbWFnZVt0XTpfKGkuaW1hZ2VbdF0sITEsITAsYyksdVt0XT1CKGksdVt0XSk7Y29uc3QgaD11WzBdLGQ9eShoKXx8cyxwPW8uY29udmVydChpLmZvcm1hdCxpLmVuY29kaW5nKSxmPW8uY29udmVydChpLnR5cGUpLG09eChpLmludGVybmFsRm9ybWF0LHAsZixpLmVuY29kaW5nKSxnPXMmJiEwIT09aS5pc1ZpZGVvVGV4dHVyZSxTPXZvaWQgMD09PWUuX192ZXJzaW9uO2xldCBNLEU9dyhpLGgsZCk7aWYoTCgzNDA2NyxpLGQpLGEpe2cmJlMmJm4udGV4U3RvcmFnZTJEKDM0MDY3LEUsbSxoLndpZHRoLGguaGVpZ2h0KTtmb3IobGV0IHQ9MDt0PDY7dCsrKXtNPXVbdF0ubWlwbWFwcztmb3IobGV0IGU9MDtlPE0ubGVuZ3RoO2UrKyl7Y29uc3Qgcj1NW2VdO2kuZm9ybWF0IT09dzJ0P251bGwhPT1wP2c/bi5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNDA2OSt0LGUsMCwwLHIud2lkdGgsci5oZWlnaHQscCxyLmRhdGEpOm4uY29tcHJlc3NlZFRleEltYWdlMkQoMzQwNjkrdCxlLG0sci53aWR0aCxyLmhlaWdodCwwLHIuZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAuc2V0VGV4dHVyZUN1YmUoKSIpOmc/bi50ZXhTdWJJbWFnZTJEKDM0MDY5K3QsZSwwLDAsci53aWR0aCxyLmhlaWdodCxwLGYsci5kYXRhKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlLG0sci53aWR0aCxyLmhlaWdodCwwLHAsZixyLmRhdGEpfX19ZWxzZXtNPWkubWlwbWFwcyxnJiZTJiYoTS5sZW5ndGg+MCYmRSsrLG4udGV4U3RvcmFnZTJEKDM0MDY3LEUsbSx1WzBdLndpZHRoLHVbMF0uaGVpZ2h0KSk7Zm9yKGxldCB0PTA7dDw2O3QrKylpZihsKXtnP24udGV4U3ViSW1hZ2UyRCgzNDA2OSt0LDAsMCwwLHVbdF0ud2lkdGgsdVt0XS5oZWlnaHQscCxmLHVbdF0uZGF0YSk6bi50ZXhJbWFnZTJEKDM0MDY5K3QsMCxtLHVbdF0ud2lkdGgsdVt0XS5oZWlnaHQsMCxwLGYsdVt0XS5kYXRhKTtmb3IobGV0IGU9MDtlPE0ubGVuZ3RoO2UrKyl7Y29uc3QgaT1NW2VdLmltYWdlW3RdLmltYWdlO2c/bi50ZXhTdWJJbWFnZTJEKDM0MDY5K3QsZSsxLDAsMCxpLndpZHRoLGkuaGVpZ2h0LHAsZixpLmRhdGEpOm4udGV4SW1hZ2UyRCgzNDA2OSt0LGUrMSxtLGkud2lkdGgsaS5oZWlnaHQsMCxwLGYsaS5kYXRhKX19ZWxzZXtnP24udGV4U3ViSW1hZ2UyRCgzNDA2OSt0LDAsMCwwLHAsZix1W3RdKTpuLnRleEltYWdlMkQoMzQwNjkrdCwwLG0scCxmLHVbdF0pO2ZvcihsZXQgZT0wO2U8TS5sZW5ndGg7ZSsrKXtjb25zdCBpPU1bZV07Zz9uLnRleFN1YkltYWdlMkQoMzQwNjkrdCxlKzEsMCwwLHAsZixpLmltYWdlW3RdKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsbSxwLGYsaS5pbWFnZVt0XSl9fX12KGksZCkmJmIoMzQwNjcpO2UuX192ZXJzaW9uPWkudmVyc2lvbixpLm9uVXBkYXRlJiZpLm9uVXBkYXRlKGkpfSkoYSxlLHIpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrciksbi5iaW5kVGV4dHVyZSgzNDA2NyxhLl9fd2ViZ2xUZXh0dXJlKSl9Y29uc3Qgaz17W3MydF06MTA0OTcsW2wydF06MzMwNzEsW2MydF06MzM2NDh9LFA9e1t1MnRdOjk3MjgsW2gydF06OTk4NCxbZDJ0XTo5OTg2LFtwMnRdOjk3MjksW2YydF06OTk4NSxbbTJ0XTo5OTg3fTtmdW5jdGlvbiBMKG4sbyxhKXtpZihhPyh0LnRleFBhcmFtZXRlcmkobiwxMDI0MixrW28ud3JhcFNdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MyxrW28ud3JhcFRdKSwzMjg3OSE9PW4mJjM1ODY2IT09bnx8dC50ZXhQYXJhbWV0ZXJpKG4sMzI4ODIsa1tvLndyYXBSXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDAsUFtvLm1hZ0ZpbHRlcl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQxLFBbby5taW5GaWx0ZXJdKSk6KHQudGV4UGFyYW1ldGVyaShuLDEwMjQyLDMzMDcxKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MywzMzA3MSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLDMzMDcxKSxvLndyYXBTPT09bDJ0JiZvLndyYXBUPT09bDJ0fHxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS53cmFwUyBhbmQgVGV4dHVyZS53cmFwVCBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLkNsYW1wVG9FZGdlV3JhcHBpbmcuIiksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDAsUyhvLm1hZ0ZpbHRlcikpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQxLFMoby5taW5GaWx0ZXIpKSxvLm1pbkZpbHRlciE9PXUydCYmby5taW5GaWx0ZXIhPT1wMnQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLm1pbkZpbHRlciBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLk5lYXJlc3RGaWx0ZXIgb3IgVEhSRUUuTGluZWFyRmlsdGVyLiIpKSwhMD09PWUuaGFzKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSl7Y29uc3QgYT1lLmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7aWYoby50eXBlPT09djJ0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSlyZXR1cm47aWYoITE9PT1zJiZvLnR5cGU9PT1iMnQmJiExPT09ZS5oYXMoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpcmV0dXJuOyhvLmFuaXNvdHJvcHk+MXx8aS5nZXQobykuX19jdXJyZW50QW5pc290cm9weSkmJih0LnRleFBhcmFtZXRlcmYobixhLlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULE1hdGgubWluKG8uYW5pc290cm9weSxyLmdldE1heEFuaXNvdHJvcHkoKSkpLGkuZ2V0KG8pLl9fY3VycmVudEFuaXNvdHJvcHk9by5hbmlzb3Ryb3B5KX19ZnVuY3Rpb24gSShlLG4pe3ZvaWQgMD09PWUuX193ZWJnbEluaXQmJihlLl9fd2ViZ2xJbml0PSEwLG4uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsTSksZS5fX3dlYmdsVGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSxhLm1lbW9yeS50ZXh0dXJlcysrKX1mdW5jdGlvbiBOKGUsaSxyKXtsZXQgYT0zNTUzO2kuaXNEYXRhVGV4dHVyZTJEQXJyYXkmJihhPTM1ODY2KSxpLmlzRGF0YVRleHR1cmUzRCYmKGE9MzI4NzkpLEkoZSxpKSxuLmFjdGl2ZVRleHR1cmUoMzM5ODQrciksbi5iaW5kVGV4dHVyZShhLGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsaS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxpLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCBsPShmdW5jdGlvbiBjKHQpe3JldHVybiFzJiYodC53cmFwUyE9PWwydHx8dC53cmFwVCE9PWwydHx8dC5taW5GaWx0ZXIhPT11MnQmJnQubWluRmlsdGVyIT09cDJ0KX0pKGkpJiYhMT09PXkoaS5pbWFnZSk7bGV0IGg9XyhpLmltYWdlLGwsITEsdSk7aD1CKGksaCk7Y29uc3QgZD15KGgpfHxzLHA9by5jb252ZXJ0KGkuZm9ybWF0LGkuZW5jb2RpbmcpO2xldCBmLG09by5jb252ZXJ0KGkudHlwZSksZz14KGkuaW50ZXJuYWxGb3JtYXQscCxtLGkuZW5jb2RpbmcsaS5pc1ZpZGVvVGV4dHVyZSk7TChhLGksZCk7Y29uc3QgUz1pLm1pcG1hcHMsTT1zJiYhMCE9PWkuaXNWaWRlb1RleHR1cmUsRT12b2lkIDA9PT1lLl9fdmVyc2lvbixUPXcoaSxoLGQpO2lmKGkuaXNEZXB0aFRleHR1cmUpZz02NDAyLHM/Zz1pLnR5cGU9PT12MnQ/MzYwMTI6aS50eXBlPT09eTJ0PzMzMTkwOmkudHlwZT09PXgydD8zNTA1NjozMzE4OTppLnR5cGU9PT12MnQmJmNvbnNvbGUuZXJyb3IoIldlYkdMUmVuZGVyZXI6IEZsb2F0aW5nIHBvaW50IGRlcHRoIHRleHR1cmUgcmVxdWlyZXMgV2ViR0wyLiIpLGkuZm9ybWF0PT09UzJ0JiY2NDAyPT09ZyYmaS50eXBlIT09XzJ0JiZpLnR5cGUhPT15MnQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZFNob3J0VHlwZSBvciBVbnNpZ25lZEludFR5cGUgZm9yIERlcHRoRm9ybWF0IERlcHRoVGV4dHVyZS4iKSxpLnR5cGU9XzJ0LG09by5jb252ZXJ0KGkudHlwZSkpLGkuZm9ybWF0PT09TTJ0JiY2NDAyPT09ZyYmKGc9MzQwNDEsaS50eXBlIT09eDJ0JiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRJbnQyNDhUeXBlIGZvciBEZXB0aFN0ZW5jaWxGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGkudHlwZT14MnQsbT1vLmNvbnZlcnQoaS50eXBlKSkpLE0mJkU/bi50ZXhTdG9yYWdlMkQoMzU1MywxLGcsaC53aWR0aCxoLmhlaWdodCk6bi50ZXhJbWFnZTJEKDM1NTMsMCxnLGgud2lkdGgsaC5oZWlnaHQsMCxwLG0sbnVsbCk7ZWxzZSBpZihpLmlzRGF0YVRleHR1cmUpaWYoUy5sZW5ndGg+MCYmZCl7TSYmRSYmbi50ZXhTdG9yYWdlMkQoMzU1MyxULGcsU1swXS53aWR0aCxTWzBdLmhlaWdodCk7Zm9yKGxldCB0PTAsZT1TLmxlbmd0aDt0PGU7dCsrKWY9U1t0XSxNP24udGV4U3ViSW1hZ2UyRCgzNTUzLDAsMCwwLGYud2lkdGgsZi5oZWlnaHQscCxtLGYuZGF0YSk6bi50ZXhJbWFnZTJEKDM1NTMsdCxnLGYud2lkdGgsZi5oZWlnaHQsMCxwLG0sZi5kYXRhKTtpLmdlbmVyYXRlTWlwbWFwcz0hMX1lbHNlIE0/KEUmJm4udGV4U3RvcmFnZTJEKDM1NTMsVCxnLGgud2lkdGgsaC5oZWlnaHQpLG4udGV4U3ViSW1hZ2UyRCgzNTUzLDAsMCwwLGgud2lkdGgsaC5oZWlnaHQscCxtLGguZGF0YSkpOm4udGV4SW1hZ2UyRCgzNTUzLDAsZyxoLndpZHRoLGguaGVpZ2h0LDAscCxtLGguZGF0YSk7ZWxzZSBpZihpLmlzQ29tcHJlc3NlZFRleHR1cmUpe00mJkUmJm4udGV4U3RvcmFnZTJEKDM1NTMsVCxnLFNbMF0ud2lkdGgsU1swXS5oZWlnaHQpO2ZvcihsZXQgdD0wLGU9Uy5sZW5ndGg7dDxlO3QrKylmPVNbdF0saS5mb3JtYXQhPT13MnQ/bnVsbCE9PXA/TT9uLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsdCwwLDAsZi53aWR0aCxmLmhlaWdodCxwLGYuZGF0YSk6bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQsZyxmLndpZHRoLGYuaGVpZ2h0LDAsZi5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpNP24udGV4U3ViSW1hZ2UyRCgzNTUzLHQsMCwwLGYud2lkdGgsZi5oZWlnaHQscCxtLGYuZGF0YSk6bi50ZXhJbWFnZTJEKDM1NTMsdCxnLGYud2lkdGgsZi5oZWlnaHQsMCxwLG0sZi5kYXRhKX1lbHNlIGlmKGkuaXNEYXRhVGV4dHVyZTJEQXJyYXkpTT8oRSYmbi50ZXhTdG9yYWdlM0QoMzU4NjYsVCxnLGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCksbi50ZXhTdWJJbWFnZTNEKDM1ODY2LDAsMCwwLDAsaC53aWR0aCxoLmhlaWdodCxoLmRlcHRoLHAsbSxoLmRhdGEpKTpuLnRleEltYWdlM0QoMzU4NjYsMCxnLGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCwwLHAsbSxoLmRhdGEpO2Vsc2UgaWYoaS5pc0RhdGFUZXh0dXJlM0QpTT8oRSYmbi50ZXhTdG9yYWdlM0QoMzI4NzksVCxnLGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCksbi50ZXhTdWJJbWFnZTNEKDMyODc5LDAsMCwwLDAsaC53aWR0aCxoLmhlaWdodCxoLmRlcHRoLHAsbSxoLmRhdGEpKTpuLnRleEltYWdlM0QoMzI4NzksMCxnLGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCwwLHAsbSxoLmRhdGEpO2Vsc2UgaWYoaS5pc0ZyYW1lYnVmZmVyVGV4dHVyZSlNJiZFP24udGV4U3RvcmFnZTJEKDM1NTMsVCxnLGgud2lkdGgsaC5oZWlnaHQpOm4udGV4SW1hZ2UyRCgzNTUzLDAsZyxoLndpZHRoLGguaGVpZ2h0LDAscCxtLG51bGwpO2Vsc2UgaWYoUy5sZW5ndGg+MCYmZCl7TSYmRSYmbi50ZXhTdG9yYWdlMkQoMzU1MyxULGcsU1swXS53aWR0aCxTWzBdLmhlaWdodCk7Zm9yKGxldCB0PTAsZT1TLmxlbmd0aDt0PGU7dCsrKWY9U1t0XSxNP24udGV4U3ViSW1hZ2UyRCgzNTUzLHQsMCwwLHAsbSxmKTpuLnRleEltYWdlMkQoMzU1Myx0LGcscCxtLGYpO2kuZ2VuZXJhdGVNaXBtYXBzPSExfWVsc2UgTT8oRSYmbi50ZXhTdG9yYWdlMkQoMzU1MyxULGcsaC53aWR0aCxoLmhlaWdodCksbi50ZXhTdWJJbWFnZTJEKDM1NTMsMCwwLDAscCxtLGgpKTpuLnRleEltYWdlMkQoMzU1MywwLGcscCxtLGgpO3YoaSxkKSYmYihhKSxlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX1mdW5jdGlvbiBSKGUscixhLHMsbCl7Y29uc3QgYz1vLmNvbnZlcnQoYS5mb3JtYXQsYS5lbmNvZGluZyksdT1vLmNvbnZlcnQoYS50eXBlKSxoPXgoYS5pbnRlcm5hbEZvcm1hdCxjLHUsYS5lbmNvZGluZyk7aS5nZXQocikuX19oYXNFeHRlcm5hbFRleHR1cmVzfHwoMzI4Nzk9PT1sfHwzNTg2Nj09PWw/bi50ZXhJbWFnZTNEKGwsMCxoLHIud2lkdGgsci5oZWlnaHQsci5kZXB0aCwwLGMsdSxudWxsKTpuLnRleEltYWdlMkQobCwwLGgsci53aWR0aCxyLmhlaWdodCwwLGMsdSxudWxsKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZSksci51c2VSZW5kZXJUb1RleHR1cmU/ZC5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLHMsbCxpLmdldChhKS5fX3dlYmdsVGV4dHVyZSwwLEQocikpOnQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLGkuZ2V0KGEpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIE8oZSxuLGkpe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgcj0zMzE4OTtpZihpfHxuLnVzZVJlbmRlclRvVGV4dHVyZSl7Y29uc3QgZT1uLmRlcHRoVGV4dHVyZTtlJiZlLmlzRGVwdGhUZXh0dXJlJiYoZS50eXBlPT09djJ0P3I9MzYwMTI6ZS50eXBlPT09eTJ0JiYocj0zMzE5MCkpO2NvbnN0IGk9RChuKTtuLnVzZVJlbmRlclRvVGV4dHVyZT9kLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgzNjE2MSxpLHIsbi53aWR0aCxuLmhlaWdodCk6dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsaSxyLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHIsbi53aWR0aCxuLmhlaWdodCk7dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA5NiwzNjE2MSxlKX1lbHNlIGlmKG4uZGVwdGhCdWZmZXImJm4uc3RlbmNpbEJ1ZmZlcil7Y29uc3Qgcj1EKG4pO2kmJm4udXNlUmVuZGVyYnVmZmVyP3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLHIsMzUwNTYsbi53aWR0aCxuLmhlaWdodCk6bi51c2VSZW5kZXJUb1RleHR1cmU/ZC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoMzYxNjEsciwzNTA1NixuLndpZHRoLG4uaGVpZ2h0KTp0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsMzQwNDEsbi53aWR0aCxuLmhlaWdodCksdC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzMzMwNiwzNjE2MSxlKX1lbHNle2NvbnN0IGU9ITA9PT1uLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM/bi50ZXh0dXJlWzBdOm4udGV4dHVyZSxyPW8uY29udmVydChlLmZvcm1hdCxlLmVuY29kaW5nKSxhPW8uY29udmVydChlLnR5cGUpLHM9eChlLmludGVybmFsRm9ybWF0LHIsYSxlLmVuY29kaW5nKSxsPUQobik7aSYmbi51c2VSZW5kZXJidWZmZXI/dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsbCxzLG4ud2lkdGgsbi5oZWlnaHQpOm4udXNlUmVuZGVyVG9UZXh0dXJlP2QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKDM2MTYxLGwscyxuLndpZHRoLG4uaGVpZ2h0KTp0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEscyxuLndpZHRoLG4uaGVpZ2h0KX10LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCl9ZnVuY3Rpb24geihlKXtjb25zdCByPWkuZ2V0KGUpLG89ITA9PT1lLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0O2lmKGUuZGVwdGhUZXh0dXJlJiYhci5fX2F1dG9BbGxvY2F0ZURlcHRoQnVmZmVyKXtpZihvKXRocm93IG5ldyBFcnJvcigidGFyZ2V0LmRlcHRoVGV4dHVyZSBub3Qgc3VwcG9ydGVkIGluIEN1YmUgcmVuZGVyIHRhcmdldHMiKTshKGZ1bmN0aW9uIGEoZSxyKXtpZihyJiZyLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXRocm93IG5ldyBFcnJvcigiRGVwdGggVGV4dHVyZSB3aXRoIGN1YmUgcmVuZGVyIHRhcmdldHMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLCFyLmRlcHRoVGV4dHVyZXx8IXIuZGVwdGhUZXh0dXJlLmlzRGVwdGhUZXh0dXJlKXRocm93IG5ldyBFcnJvcigicmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFRIUkVFLkRlcHRoVGV4dHVyZSIpO2kuZ2V0KHIuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZSYmci5kZXB0aFRleHR1cmUuaW1hZ2Uud2lkdGg9PT1yLndpZHRoJiZyLmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQ9PT1yLmhlaWdodHx8KHIuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPXIud2lkdGgsci5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PXIuaGVpZ2h0LHIuZGVwdGhUZXh0dXJlLm5lZWRzVXBkYXRlPSEwKSxDKHIuZGVwdGhUZXh0dXJlLDApO2NvbnN0IG89aS5nZXQoci5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlLGE9RChyKTtpZihyLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1TMnQpci51c2VSZW5kZXJUb1RleHR1cmU/ZC5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLDM2MDk2LDM1NTMsbywwLGEpOnQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1MyxvLDApO2Vsc2V7aWYoci5kZXB0aFRleHR1cmUuZm9ybWF0IT09TTJ0KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBkZXB0aFRleHR1cmUgZm9ybWF0Iik7ci51c2VSZW5kZXJUb1RleHR1cmU/ZC5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLDMzMzA2LDM1NTMsbywwLGEpOnQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzMzMDYsMzU1MyxvLDApfX0pKHIuX193ZWJnbEZyYW1lYnVmZmVyLGUpfWVsc2UgaWYobyl7ci5fX3dlYmdsRGVwdGhidWZmZXI9W107Zm9yKGxldCBpPTA7aTw2O2krKyluLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxyLl9fd2ViZ2xGcmFtZWJ1ZmZlcltpXSksci5fX3dlYmdsRGVwdGhidWZmZXJbaV09dC5jcmVhdGVSZW5kZXJidWZmZXIoKSxPKHIuX193ZWJnbERlcHRoYnVmZmVyW2ldLGUsITEpfWVsc2Ugbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsci5fX3dlYmdsRnJhbWVidWZmZXIpLHIuX193ZWJnbERlcHRoYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksTyhyLl9fd2ViZ2xEZXB0aGJ1ZmZlcixlLCExKTtuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1mdW5jdGlvbiBEKHQpe3JldHVybiBzJiYodC51c2VSZW5kZXJidWZmZXJ8fHQudXNlUmVuZGVyVG9UZXh0dXJlKT9NYXRoLm1pbihoLHQuc2FtcGxlcyk6MH1mdW5jdGlvbiBCKHQsbil7Y29uc3QgaT10LmVuY29kaW5nLHI9dC5mb3JtYXQsbz10LnR5cGU7cmV0dXJuITA9PT10LmlzQ29tcHJlc3NlZFRleHR1cmV8fCEwPT09dC5pc1ZpZGVvVGV4dHVyZXx8dC5mb3JtYXQ9PT11NXR8fGkhPT1yNXQmJihpPT09bzV0PyExPT09cz8hMD09PWUuaGFzKCJFWFRfc1JHQiIpJiZyPT09dzJ0Pyh0LmZvcm1hdD11NXQsdC5taW5GaWx0ZXI9cDJ0LHQuZ2VuZXJhdGVNaXBtYXBzPSExKTpuPVo1dC5zUkdCVG9MaW5lYXIobik6cj09PXcydCYmbz09PWcydHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBzUkdCIGVuY29kZWQgdGV4dHVyZXMgaGF2ZSB0byB1c2UgUkdCQUZvcm1hdCBhbmQgVW5zaWduZWRCeXRlVHlwZS4iKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBVbnN1cHBvcnRlZCB0ZXh0dXJlIGVuY29kaW5nOiIsaSkpLG59bGV0IEg9ITEsRj0hMTt0aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9ZnVuY3Rpb24gVigpe2NvbnN0IHQ9VDtyZXR1cm4gdD49bCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBUcnlpbmcgdG8gdXNlICIrdCsiIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAiK2wpLFQrPTEsdH0sdGhpcy5yZXNldFRleHR1cmVVbml0cz1mdW5jdGlvbiBVKCl7VD0wfSx0aGlzLnNldFRleHR1cmUyRD1DLHRoaXMuc2V0VGV4dHVyZTJEQXJyYXk9ZnVuY3Rpb24gaih0LGUpe2NvbnN0IHI9aS5nZXQodCk7dC52ZXJzaW9uPjAmJnIuX192ZXJzaW9uIT09dC52ZXJzaW9uP04ocix0LGUpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTg2NixyLl9fd2ViZ2xUZXh0dXJlKSl9LHRoaXMuc2V0VGV4dHVyZTNEPWZ1bmN0aW9uIEcodCxlKXtjb25zdCByPWkuZ2V0KHQpO3QudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9OKHIsdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzI4Nzksci5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmVDdWJlPUEsdGhpcy5yZWJpbmRUZXh0dXJlcz1mdW5jdGlvbiBXKHQsZSxuKXtjb25zdCByPWkuZ2V0KHQpO3ZvaWQgMCE9PWUmJlIoci5fX3dlYmdsRnJhbWVidWZmZXIsdCx0LnRleHR1cmUsMzYwNjQsMzU1Myksdm9pZCAwIT09biYmeih0KX0sdGhpcy5zZXR1cFJlbmRlclRhcmdldD1mdW5jdGlvbiBxKGUpe2NvbnN0IGw9ZS50ZXh0dXJlLGM9aS5nZXQoZSksdT1pLmdldChsKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLEUpLCEwIT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzJiYodm9pZCAwPT09dS5fX3dlYmdsVGV4dHVyZSYmKHUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCkpLHUuX192ZXJzaW9uPWwudmVyc2lvbixhLm1lbW9yeS50ZXh0dXJlcysrKTtjb25zdCBoPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCxkPSEwPT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzLHA9bC5pc0RhdGFUZXh0dXJlM0R8fGwuaXNEYXRhVGV4dHVyZTJEQXJyYXksZj15KGUpfHxzO2lmKGgpe2MuX193ZWJnbEZyYW1lYnVmZmVyPVtdO2ZvcihsZXQgZT0wO2U8NjtlKyspYy5fX3dlYmdsRnJhbWVidWZmZXJbZV09dC5jcmVhdGVGcmFtZWJ1ZmZlcigpfWVsc2UgaWYoYy5fX3dlYmdsRnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLGQpaWYoci5kcmF3QnVmZmVycyl7Y29uc3Qgbj1lLnRleHR1cmU7Zm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWkuZ2V0KG5bZV0pO3ZvaWQgMD09PXIuX193ZWJnbFRleHR1cmUmJihyLl9fd2ViZ2xUZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgpLGEubWVtb3J5LnRleHR1cmVzKyspfX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMiBvciBXRUJHTF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uLiIpO2Vsc2UgaWYoZS51c2VSZW5kZXJidWZmZXIpaWYocyl7Yy5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKTtjb25zdCBpPW8uY29udmVydChsLmZvcm1hdCxsLmVuY29kaW5nKSxyPW8uY29udmVydChsLnR5cGUpLGE9eChsLmludGVybmFsRm9ybWF0LGkscixsLmVuY29kaW5nKSxzPUQoZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEscyxhLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCksZS5kZXB0aEJ1ZmZlciYmKGMuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksTyhjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixlLCEwKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihoKXtuLmJpbmRUZXh0dXJlKDM0MDY3LHUuX193ZWJnbFRleHR1cmUpLEwoMzQwNjcsbCxmKTtmb3IobGV0IHQ9MDt0PDY7dCsrKVIoYy5fX3dlYmdsRnJhbWVidWZmZXJbdF0sZSxsLDM2MDY0LDM0MDY5K3QpO3YobCxmKSYmYigzNDA2Nyksbi51bmJpbmRUZXh0dXJlKCl9ZWxzZSBpZihkKXtjb25zdCB0PWUudGV4dHVyZTtmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXSxhPWkuZ2V0KG8pO24uYmluZFRleHR1cmUoMzU1MyxhLl9fd2ViZ2xUZXh0dXJlKSxMKDM1NTMsbyxmKSxSKGMuX193ZWJnbEZyYW1lYnVmZmVyLGUsbywzNjA2NCtyLDM1NTMpLHYobyxmKSYmYigzNTUzKX1uLnVuYmluZFRleHR1cmUoKX1lbHNle2xldCB0PTM1NTM7aWYocClpZihzKXt0PWwuaXNEYXRhVGV4dHVyZTNEPzMyODc5OjM1ODY2fWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkgb25seSBzdXBwb3J0ZWQgd2l0aCBXZWJHTDIuIik7bi5iaW5kVGV4dHVyZSh0LHUuX193ZWJnbFRleHR1cmUpLEwodCxsLGYpLFIoYy5fX3dlYmdsRnJhbWVidWZmZXIsZSxsLDM2MDY0LHQpLHYobCxmKSYmYih0KSxuLnVuYmluZFRleHR1cmUoKX1lLmRlcHRoQnVmZmVyJiZ6KGUpfSx0aGlzLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcD1mdW5jdGlvbiBZKHQpe2NvbnN0IGU9eSh0KXx8cyxyPSEwPT09dC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP3QudGV4dHVyZTpbdC50ZXh0dXJlXTtmb3IobGV0IG89MCxhPXIubGVuZ3RoO288YTtvKyspe2NvbnN0IGE9cltvXTtpZih2KGEsZSkpe2NvbnN0IGU9dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLHI9aS5nZXQoYSkuX193ZWJnbFRleHR1cmU7bi5iaW5kVGV4dHVyZShlLHIpLGIoZSksbi51bmJpbmRUZXh0dXJlKCl9fX0sdGhpcy51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldD1mdW5jdGlvbiBYKGUpe2lmKGUudXNlUmVuZGVyYnVmZmVyKWlmKHMpe2NvbnN0IHI9ZS53aWR0aCxvPWUuaGVpZ2h0O2xldCBhPTE2Mzg0O2NvbnN0IHM9WzM2MDY0XSxsPWUuc3RlbmNpbEJ1ZmZlcj8zMzMwNjozNjA5NjtlLmRlcHRoQnVmZmVyJiZzLnB1c2gobCksZS5pZ25vcmVEZXB0aEZvck11bHRpc2FtcGxlQ29weXx8KGUuZGVwdGhCdWZmZXImJihhfD0yNTYpLGUuc3RlbmNpbEJ1ZmZlciYmKGF8PTEwMjQpKTtjb25zdCBjPWkuZ2V0KGUpO24uYmluZEZyYW1lYnVmZmVyKDM2MDA4LGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxjLl9fd2ViZ2xGcmFtZWJ1ZmZlciksZS5pZ25vcmVEZXB0aEZvck11bHRpc2FtcGxlQ29weSYmKHQuaW52YWxpZGF0ZUZyYW1lYnVmZmVyKDM2MDA4LFtsXSksdC5pbnZhbGlkYXRlRnJhbWVidWZmZXIoMzYwMDksW2xdKSksdC5ibGl0RnJhbWVidWZmZXIoMCwwLHIsbywwLDAscixvLGEsOTcyOCksdC5pbnZhbGlkYXRlRnJhbWVidWZmZXIoMzYwMDgscyksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDgsbnVsbCksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDksYy5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIil9LHRoaXMuc2V0dXBEZXB0aFJlbmRlcmJ1ZmZlcj16LHRoaXMuc2V0dXBGcmFtZUJ1ZmZlclRleHR1cmU9Uix0aGlzLnNhZmVTZXRUZXh0dXJlMkQ9ZnVuY3Rpb24gJCh0LGUpe3QmJnQuaXNXZWJHTFJlbmRlclRhcmdldCYmKCExPT09SCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEg9ITApLHQ9dC50ZXh0dXJlKSxDKHQsZSl9LHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uIEsodCxlKXt0JiZ0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiYoITE9PT1GJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlQ3ViZTogZG9uJ3QgdXNlIGN1YmUgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEY9ITApLHQ9dC50ZXh0dXJlKSxBKHQsZSl9fWZ1bmN0aW9uIHM3dCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyO3JldHVybntjb252ZXJ0OmZ1bmN0aW9uIHIodCxuPW51bGwpe2xldCByO2lmKHQ9PT1nMnQpcmV0dXJuIDUxMjE7aWYoMTAxNz09PXQpcmV0dXJuIDMyODE5O2lmKDEwMTg9PT10KXJldHVybiAzMjgyMDtpZigxMDEwPT09dClyZXR1cm4gNTEyMDtpZigxMDExPT09dClyZXR1cm4gNTEyMjtpZih0PT09XzJ0KXJldHVybiA1MTIzO2lmKDEwMTM9PT10KXJldHVybiA1MTI0O2lmKHQ9PT15MnQpcmV0dXJuIDUxMjU7aWYodD09PXYydClyZXR1cm4gNTEyNjtpZih0PT09YjJ0KXJldHVybiBpPzUxMzE6KHI9ZS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxudWxsIT09cj9yLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKDEwMjE9PT10KXJldHVybiA2NDA2O2lmKHQ9PT13MnQpcmV0dXJuIDY0MDg7aWYoMTAyND09PXQpcmV0dXJuIDY0MDk7aWYoMTAyNT09PXQpcmV0dXJuIDY0MTA7aWYodD09PVMydClyZXR1cm4gNjQwMjtpZih0PT09TTJ0KXJldHVybiAzNDA0MTtpZigxMDI4PT09dClyZXR1cm4gNjQwMztpZih0PT09dTV0KXJldHVybiByPWUuZ2V0KCJFWFRfc1JHQiIpLG51bGwhPT1yP3IuU1JHQl9BTFBIQV9FWFQ6bnVsbDtpZigxMDI5PT09dClyZXR1cm4gMzYyNDQ7aWYoMTAzMD09PXQpcmV0dXJuIDMzMzE5O2lmKDEwMzE9PT10KXJldHVybiAzMzMyMDtpZigxMDMzPT09dClyZXR1cm4gMzYyNDk7aWYodD09PUUydHx8dD09PVQydHx8dD09PUMydHx8dD09PUEydClpZihuPT09bzV0KXtpZihyPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiksbnVsbD09PXIpcmV0dXJuIG51bGw7aWYodD09PUUydClyZXR1cm4gci5DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDtpZih0PT09VDJ0KXJldHVybiByLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUO2lmKHQ9PT1DMnQpcmV0dXJuIHIuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ7aWYodD09PUEydClyZXR1cm4gci5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVH1lbHNle2lmKHI9ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIiksbnVsbD09PXIpcmV0dXJuIG51bGw7aWYodD09PUUydClyZXR1cm4gci5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUO2lmKHQ9PT1UMnQpcmV0dXJuIHIuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYodD09PUMydClyZXR1cm4gci5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDtpZih0PT09QTJ0KXJldHVybiByLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUfWlmKHQ9PT1rMnR8fHQ9PT1QMnR8fHQ9PT1MMnR8fHQ9PT1JMnQpe2lmKHI9ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpLG51bGw9PT1yKXJldHVybiBudWxsO2lmKHQ9PT1rMnQpcmV0dXJuIHIuQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRztpZih0PT09UDJ0KXJldHVybiByLkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc7aWYodD09PUwydClyZXR1cm4gci5DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRztpZih0PT09STJ0KXJldHVybiByLkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HfWlmKDM2MTk2PT09dClyZXR1cm4gcj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiKSxudWxsIT09cj9yLkNPTVBSRVNTRURfUkdCX0VUQzFfV0VCR0w6bnVsbDtpZih0PT09TjJ0fHx0PT09UjJ0KXtpZihyPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiksbnVsbD09PXIpcmV0dXJuIG51bGw7aWYodD09PU4ydClyZXR1cm4gbj09PW81dD9yLkNPTVBSRVNTRURfU1JHQjhfRVRDMjpyLkNPTVBSRVNTRURfUkdCOF9FVEMyO2lmKHQ9PT1SMnQpcmV0dXJuIG49PT1vNXQ/ci5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzpyLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUN9aWYodD09PU8ydHx8dD09PXoydHx8dD09PUQydHx8dD09PUIydHx8dD09PUgydHx8dD09PUYydHx8dD09PVYydHx8dD09PVUydHx8dD09PWoydHx8dD09PUcydHx8dD09PVcydHx8dD09PXEydHx8dD09PVkydHx8dD09PVgydCl7aWYocj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiKSxudWxsPT09cilyZXR1cm4gbnVsbDtpZih0PT09TzJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjtpZih0PT09ejJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjtpZih0PT09RDJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjtpZih0PT09QjJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjtpZih0PT09SDJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjtpZih0PT09RjJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjtpZih0PT09VjJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjtpZih0PT09VTJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjtpZih0PT09ajJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUjpyLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSO2lmKHQ9PT1HMnQpcmV0dXJuIG49PT1vNXQ/ci5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI7aWYodD09PVcydClyZXR1cm4gbj09PW81dD9yLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6ci5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjtpZih0PT09cTJ0KXJldHVybiBuPT09bzV0P3IuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6ci5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI7aWYodD09PVkydClyZXR1cm4gbj09PW81dD9yLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOnIuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSO2lmKHQ9PT1YMnQpcmV0dXJuIG49PT1vNXQ/ci5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUjpyLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUn1pZih0PT09JDJ0KXtpZihyPWUuZ2V0KCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIiksbnVsbD09PXIpcmV0dXJuIG51bGw7aWYodD09PSQydClyZXR1cm4gbj09PW81dD9yLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9CUFRDX1VOT1JNX0VYVDpyLkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVH1yZXR1cm4gdD09PXgydD9pPzM0MDQyOihyPWUuZ2V0KCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksbnVsbCE9PXI/ci5VTlNJR05FRF9JTlRfMjRfOF9XRUJHTDpudWxsKTp2b2lkIDB9fX1jbGFzcyBsN3QgZXh0ZW5kcyBtNnR7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLmNhbWVyYXM9dH19bDd0LnByb3RvdHlwZS5pc0FycmF5Q2FtZXJhPSEwO2NsYXNzIGM3dCBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJHcm91cCJ9fWM3dC5wcm90b3R5cGUuaXNHcm91cD0hMDtjb25zdCB1N3Q9e3R5cGU6Im1vdmUifTtjbGFzcyBoN3R7Y29uc3RydWN0b3IoKXt0aGlzLl90YXJnZXRSYXk9bnVsbCx0aGlzLl9ncmlwPW51bGwsdGhpcy5faGFuZD1udWxsfWdldEhhbmRTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5faGFuZCYmKHRoaXMuX2hhbmQ9bmV3IGM3dCx0aGlzLl9oYW5kLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5faGFuZC52aXNpYmxlPSExLHRoaXMuX2hhbmQuam9pbnRzPXt9LHRoaXMuX2hhbmQuaW5wdXRTdGF0ZT17cGluY2hpbmc6ITF9KSx0aGlzLl9oYW5kfWdldFRhcmdldFJheVNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl90YXJnZXRSYXkmJih0aGlzLl90YXJnZXRSYXk9bmV3IGM3dCx0aGlzLl90YXJnZXRSYXkubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSx0aGlzLl90YXJnZXRSYXkuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmxpbmVhclZlbG9jaXR5PW5ldyBhM3QsdGhpcy5fdGFyZ2V0UmF5Lmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLl90YXJnZXRSYXkuYW5ndWxhclZlbG9jaXR5PW5ldyBhM3QpLHRoaXMuX3RhcmdldFJheX1nZXRHcmlwU3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2dyaXAmJih0aGlzLl9ncmlwPW5ldyBjN3QsdGhpcy5fZ3JpcC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2dyaXAudmlzaWJsZT0hMSx0aGlzLl9ncmlwLmhhc0xpbmVhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAubGluZWFyVmVsb2NpdHk9bmV3IGEzdCx0aGlzLl9ncmlwLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmFuZ3VsYXJWZWxvY2l0eT1uZXcgYTN0KSx0aGlzLl9ncmlwfWRpc3BhdGNoRXZlbnQodCl7cmV0dXJuIG51bGwhPT10aGlzLl90YXJnZXRSYXkmJnRoaXMuX3RhcmdldFJheS5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9ncmlwJiZ0aGlzLl9ncmlwLmRpc3BhdGNoRXZlbnQodCksbnVsbCE9PXRoaXMuX2hhbmQmJnRoaXMuX2hhbmQuZGlzcGF0Y2hFdmVudCh0KSx0aGlzfWRpc2Nvbm5lY3QodCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOnR9KSxudWxsIT09dGhpcy5fdGFyZ2V0UmF5JiYodGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEpLG51bGwhPT10aGlzLl9ncmlwJiYodGhpcy5fZ3JpcC52aXNpYmxlPSExKSxudWxsIT09dGhpcy5faGFuZCYmKHRoaXMuX2hhbmQudmlzaWJsZT0hMSksdGhpc311cGRhdGUodCxlLG4pe2xldCBpPW51bGwscj1udWxsLG89bnVsbDtjb25zdCBhPXRoaXMuX3RhcmdldFJheSxzPXRoaXMuX2dyaXAsbD10aGlzLl9oYW5kO2lmKHQmJiJ2aXNpYmxlLWJsdXJyZWQiIT09ZS5zZXNzaW9uLnZpc2liaWxpdHlTdGF0ZSlpZihudWxsIT09YSYmKGk9ZS5nZXRQb3NlKHQudGFyZ2V0UmF5U3BhY2UsbiksbnVsbCE9PWkmJihhLm1hdHJpeC5mcm9tQXJyYXkoaS50cmFuc2Zvcm0ubWF0cml4KSxhLm1hdHJpeC5kZWNvbXBvc2UoYS5wb3NpdGlvbixhLnJvdGF0aW9uLGEuc2NhbGUpLGkubGluZWFyVmVsb2NpdHk/KGEuaGFzTGluZWFyVmVsb2NpdHk9ITAsYS5saW5lYXJWZWxvY2l0eS5jb3B5KGkubGluZWFyVmVsb2NpdHkpKTphLmhhc0xpbmVhclZlbG9jaXR5PSExLGkuYW5ndWxhclZlbG9jaXR5PyhhLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxhLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KGkuYW5ndWxhclZlbG9jaXR5KSk6YS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KHU3dCkpKSxsJiZ0LmhhbmQpe289ITA7Zm9yKGNvbnN0IGkgb2YgdC5oYW5kLnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0Sm9pbnRQb3NlKGksbik7aWYodm9pZCAwPT09bC5qb2ludHNbaS5qb2ludE5hbWVdKXtjb25zdCB0PW5ldyBjN3Q7dC5tYXRyaXhBdXRvVXBkYXRlPSExLHQudmlzaWJsZT0hMSxsLmpvaW50c1tpLmpvaW50TmFtZV09dCxsLmFkZCh0KX1jb25zdCByPWwuam9pbnRzW2kuam9pbnROYW1lXTtudWxsIT09dCYmKHIubWF0cml4LmZyb21BcnJheSh0LnRyYW5zZm9ybS5tYXRyaXgpLHIubWF0cml4LmRlY29tcG9zZShyLnBvc2l0aW9uLHIucm90YXRpb24sci5zY2FsZSksci5qb2ludFJhZGl1cz10LnJhZGl1cyksci52aXNpYmxlPW51bGwhPT10fWNvbnN0IGk9bC5qb2ludHNbImluZGV4LWZpbmdlci10aXAiXS5wb3NpdGlvbi5kaXN0YW5jZVRvKGwuam9pbnRzWyJ0aHVtYi10aXAiXS5wb3NpdGlvbikscj0uMDIsYT0uMDA1O2wuaW5wdXRTdGF0ZS5waW5jaGluZyYmaT5yK2E/KGwuaW5wdXRTdGF0ZS5waW5jaGluZz0hMSx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoZW5kIixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKTohbC5pbnB1dFN0YXRlLnBpbmNoaW5nJiZpPD1yLWEmJihsLmlucHV0U3RhdGUucGluY2hpbmc9ITAsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaHN0YXJ0IixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKX1lbHNlIG51bGwhPT1zJiZ0LmdyaXBTcGFjZSYmKHI9ZS5nZXRQb3NlKHQuZ3JpcFNwYWNlLG4pLG51bGwhPT1yJiYocy5tYXRyaXguZnJvbUFycmF5KHIudHJhbnNmb3JtLm1hdHJpeCkscy5tYXRyaXguZGVjb21wb3NlKHMucG9zaXRpb24scy5yb3RhdGlvbixzLnNjYWxlKSxyLmxpbmVhclZlbG9jaXR5PyhzLmhhc0xpbmVhclZlbG9jaXR5PSEwLHMubGluZWFyVmVsb2NpdHkuY29weShyLmxpbmVhclZlbG9jaXR5KSk6cy5oYXNMaW5lYXJWZWxvY2l0eT0hMSxyLmFuZ3VsYXJWZWxvY2l0eT8ocy5oYXNBbmd1bGFyVmVsb2NpdHk9ITAscy5hbmd1bGFyVmVsb2NpdHkuY29weShyLmFuZ3VsYXJWZWxvY2l0eSkpOnMuaGFzQW5ndWxhclZlbG9jaXR5PSExKSk7cmV0dXJuIG51bGwhPT1hJiYoYS52aXNpYmxlPW51bGwhPT1pKSxudWxsIT09cyYmKHMudmlzaWJsZT1udWxsIT09ciksbnVsbCE9PWwmJihsLnZpc2libGU9bnVsbCE9PW8pLHRoaXN9fWNsYXNzIGQ3dCBleHRlbmRzIFE1dHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyxhLHMsbCxjKXtpZigoYz12b2lkIDAhPT1jP2M6UzJ0KSE9PVMydCYmYyE9PU0ydCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoVGV4dHVyZSBmb3JtYXQgbXVzdCBiZSBlaXRoZXIgVEhSRUUuRGVwdGhGb3JtYXQgb3IgVEhSRUUuRGVwdGhTdGVuY2lsRm9ybWF0Iik7dm9pZCAwPT09biYmYz09PVMydCYmKG49XzJ0KSx2b2lkIDA9PT1uJiZjPT09TTJ0JiYobj14MnQpLHN1cGVyKG51bGwsaSxyLG8sYSxzLGMsbixsKSx0aGlzLmltYWdlPXt3aWR0aDp0LGhlaWdodDplfSx0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1hP2E6dTJ0LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PXM/czp1MnQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19ZDd0LnByb3RvdHlwZS5pc0RlcHRoVGV4dHVyZT0hMDtjbGFzcyBwN3QgZXh0ZW5kcyBoNXR7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpO2NvbnN0IG49dGhpcztsZXQgaT1udWxsLHI9MSxvPW51bGwsYT0ibG9jYWwtZmxvb3IiO2NvbnN0IHM9dC5leHRlbnNpb25zLmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIik7bGV0IGw9bnVsbCxjPW51bGwsdT1udWxsLGg9bnVsbCxkPSExLHA9bnVsbDtjb25zdCBmPWUuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTtsZXQgbT1udWxsLGc9bnVsbDtjb25zdCBfPVtdLHk9bmV3IE1hcCx2PW5ldyBtNnQ7di5sYXllcnMuZW5hYmxlKDEpLHYudmlld3BvcnQ9bmV3IGUzdDtjb25zdCBiPW5ldyBtNnQ7Yi5sYXllcnMuZW5hYmxlKDIpLGIudmlld3BvcnQ9bmV3IGUzdDtjb25zdCB4PVt2LGJdLHc9bmV3IGw3dDt3LmxheWVycy5lbmFibGUoMSksdy5sYXllcnMuZW5hYmxlKDIpO2xldCBTPW51bGwsTT1udWxsO2Z1bmN0aW9uIEUodCl7Y29uc3QgZT15LmdldCh0LmlucHV0U291cmNlKTtlJiZlLmRpc3BhdGNoRXZlbnQoe3R5cGU6dC50eXBlLGRhdGE6dC5pbnB1dFNvdXJjZX0pfWZ1bmN0aW9uIFQoKXt5LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5kaXNjb25uZWN0KGUpfSkpLHkuY2xlYXIoKSxTPW51bGwsTT1udWxsLHQuc2V0UmVuZGVyVGFyZ2V0KG0pLGg9bnVsbCx1PW51bGwsYz1udWxsLGk9bnVsbCxnPW51bGwsSS5zdG9wKCksbi5pc1ByZXNlbnRpbmc9ITEsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uZW5kIn0pfWZ1bmN0aW9uIEModCl7Y29uc3QgZT1pLmlucHV0U291cmNlcztmb3IobGV0IHQ9MDt0PF8ubGVuZ3RoO3QrKyl5LnNldChlW3RdLF9bdF0pO2ZvcihsZXQgZT0wO2U8dC5yZW1vdmVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5yZW1vdmVkW2VdLGk9eS5nZXQobik7aSYmKGkuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOm59KSx5LmRlbGV0ZShuKSl9Zm9yKGxldCBlPTA7ZTx0LmFkZGVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5hZGRlZFtlXSxpPXkuZ2V0KG4pO2kmJmkuZGlzcGF0Y2hFdmVudCh7dHlwZToiY29ubmVjdGVkIixkYXRhOm59KX19dGhpcy5jYW1lcmFBdXRvVXBkYXRlPSEwLHRoaXMuZW5hYmxlZD0hMSx0aGlzLmlzUHJlc2VudGluZz0hMSx0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24odCl7bGV0IGU9X1t0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IGg3dCxfW3RdPWUpLGUuZ2V0VGFyZ2V0UmF5U3BhY2UoKX0sdGhpcy5nZXRDb250cm9sbGVyR3JpcD1mdW5jdGlvbih0KXtsZXQgZT1fW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgaDd0LF9bdF09ZSksZS5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKHQpe2xldCBlPV9bdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBoN3QsX1t0XT1lKSxlLmdldEhhbmRTcGFjZSgpfSx0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24odCl7cj10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIGZyYW1lYnVmZmVyIHNjYWxlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuc2V0UmVmZXJlbmNlU3BhY2VUeXBlPWZ1bmN0aW9uKHQpe2E9dCwhMD09PW4uaXNQcmVzZW50aW5nJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSByZWZlcmVuY2Ugc3BhY2UgdHlwZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLmdldFJlZmVyZW5jZVNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG99LHRoaXMuZ2V0QmFzZUxheWVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT11P3U6aH0sdGhpcy5nZXRCaW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGN9LHRoaXMuZ2V0RnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcH0sdGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGl9LHRoaXMuc2V0U2Vzc2lvbj1hc3luYyBmdW5jdGlvbihsKXtpZihpPWwsbnVsbCE9PWkpe2lmKG09dC5nZXRSZW5kZXJUYXJnZXQoKSxpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsRSksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsRSksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlbmQiLEUpLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZSIsRSksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLEUpLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZWVuZCIsRSksaS5hZGRFdmVudExpc3RlbmVyKCJlbmQiLFQpLGkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIixDKSwhMCE9PWYueHJDb21wYXRpYmxlJiZhd2FpdCBlLm1ha2VYUkNvbXBhdGlibGUoKSx2b2lkIDA9PT1pLnJlbmRlclN0YXRlLmxheWVyc3x8ITE9PT10LmNhcGFiaWxpdGllcy5pc1dlYkdMMil7aD1uZXcgWFJXZWJHTExheWVyKGksZSx7YW50aWFsaWFzOnZvaWQgMCE9PWkucmVuZGVyU3RhdGUubGF5ZXJzfHxmLmFudGlhbGlhcyxhbHBoYTpmLmFscGhhLGRlcHRoOmYuZGVwdGgsc3RlbmNpbDpmLnN0ZW5jaWwsZnJhbWVidWZmZXJTY2FsZUZhY3RvcjpyfSksaS51cGRhdGVSZW5kZXJTdGF0ZSh7YmFzZUxheWVyOmh9KSxnPW5ldyBuM3QoaC5mcmFtZWJ1ZmZlcldpZHRoLGguZnJhbWVidWZmZXJIZWlnaHQse2Zvcm1hdDp3MnQsdHlwZTpnMnQsZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pfWVsc2V7ZD1mLmFudGlhbGlhcztsZXQgbj1udWxsLG89bnVsbCxhPW51bGw7Zi5kZXB0aCYmKGE9Zi5zdGVuY2lsPzM1MDU2OjMzMTkwLG49Zi5zdGVuY2lsP00ydDpTMnQsbz1mLnN0ZW5jaWw/eDJ0Ol8ydCk7Y29uc3QgbD17Y29sb3JGb3JtYXQ6dC5vdXRwdXRFbmNvZGluZz09PW81dD8zNTkwNzozMjg1NixkZXB0aEZvcm1hdDphLHNjYWxlRmFjdG9yOnJ9O2M9bmV3IFhSV2ViR0xCaW5kaW5nKGksZSksdT1jLmNyZWF0ZVByb2plY3Rpb25MYXllcihsKSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W3VdfSksZz1kP25ldyByM3QodS50ZXh0dXJlV2lkdGgsdS50ZXh0dXJlSGVpZ2h0LHtmb3JtYXQ6dzJ0LHR5cGU6ZzJ0LGRlcHRoVGV4dHVyZTpuZXcgZDd0KHUudGV4dHVyZVdpZHRoLHUudGV4dHVyZUhlaWdodCxvLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4pLHN0ZW5jaWxCdWZmZXI6Zi5zdGVuY2lsLGlnbm9yZURlcHRoOnUuaWdub3JlRGVwdGhWYWx1ZXMsdXNlUmVuZGVyVG9UZXh0dXJlOnMsZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pOm5ldyBuM3QodS50ZXh0dXJlV2lkdGgsdS50ZXh0dXJlSGVpZ2h0LHtmb3JtYXQ6dzJ0LHR5cGU6ZzJ0LGRlcHRoVGV4dHVyZTpuZXcgZDd0KHUudGV4dHVyZVdpZHRoLHUudGV4dHVyZUhlaWdodCxvLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4pLHN0ZW5jaWxCdWZmZXI6Zi5zdGVuY2lsLGlnbm9yZURlcHRoOnUuaWdub3JlRGVwdGhWYWx1ZXMsZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pfWcuaXNYUlJlbmRlclRhcmdldD0hMCx0aGlzLnNldEZvdmVhdGlvbigxKSxvPWF3YWl0IGkucmVxdWVzdFJlZmVyZW5jZVNwYWNlKGEpLEkuc2V0Q29udGV4dChpKSxJLnN0YXJ0KCksbi5pc1ByZXNlbnRpbmc9ITAsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9fTtjb25zdCBBPW5ldyBhM3Qsaz1uZXcgYTN0O2Z1bmN0aW9uIFAodCxlKXtudWxsPT09ZT90Lm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXgpOnQubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyhlLm1hdHJpeFdvcmxkLHQubWF0cml4KSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpfXRoaXMudXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKHQpe2lmKG51bGw9PT1pKXJldHVybjt3Lm5lYXI9Yi5uZWFyPXYubmVhcj10Lm5lYXIsdy5mYXI9Yi5mYXI9di5mYXI9dC5mYXIsUz09PXcubmVhciYmTT09PXcuZmFyfHwoaS51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOncubmVhcixkZXB0aEZhcjp3LmZhcn0pLFM9dy5uZWFyLE09dy5mYXIpO2NvbnN0IGU9dC5wYXJlbnQsbj13LmNhbWVyYXM7UCh3LGUpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKVAoblt0XSxlKTt3Lm1hdHJpeFdvcmxkLmRlY29tcG9zZSh3LnBvc2l0aW9uLHcucXVhdGVybmlvbix3LnNjYWxlKSx0LnBvc2l0aW9uLmNvcHkody5wb3NpdGlvbiksdC5xdWF0ZXJuaW9uLmNvcHkody5xdWF0ZXJuaW9uKSx0LnNjYWxlLmNvcHkody5zY2FsZSksdC5tYXRyaXguY29weSh3Lm1hdHJpeCksdC5tYXRyaXhXb3JsZC5jb3B5KHcubWF0cml4V29ybGQpO2NvbnN0IHI9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPXIubGVuZ3RoO3Q8ZTt0Kyspclt0XS51cGRhdGVNYXRyaXhXb3JsZCghMCk7Mj09PW4ubGVuZ3RoPyhmdW5jdGlvbiBvKHQsZSxuKXtBLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSxrLnNldEZyb21NYXRyaXhQb3NpdGlvbihuLm1hdHJpeFdvcmxkKTtjb25zdCBpPUEuZGlzdGFuY2VUbyhrKSxyPWUucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxvPW4ucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxhPXJbMTRdLyhyWzEwXS0xKSxzPXJbMTRdLyhyWzEwXSsxKSxsPShyWzldKzEpL3JbNV0sYz0ocls5XS0xKS9yWzVdLHU9KHJbOF0tMSkvclswXSxoPShvWzhdKzEpL29bMF0sZD1hKnUscD1hKmgsZj1pLygtdStoKSxtPWYqLXU7ZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC50cmFuc2xhdGVYKG0pLHQudHJhbnNsYXRlWihmKSx0Lm1hdHJpeFdvcmxkLmNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtjb25zdCBnPWErZixfPXMrZjt0LnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKGQtbSxwKyhpLW0pLGwqcy9fKmcsYypzL18qZyxnLF8pfSkodyx2LGIpOncucHJvamVjdGlvbk1hdHJpeC5jb3B5KHYucHJvamVjdGlvbk1hdHJpeCl9LHRoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKCl7cmV0dXJuIHd9LHRoaXMuZ2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT11P3UuZml4ZWRGb3ZlYXRpb246bnVsbCE9PWg/aC5maXhlZEZvdmVhdGlvbjp2b2lkIDB9LHRoaXMuc2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKHQpe251bGwhPT11JiYodS5maXhlZEZvdmVhdGlvbj10KSxudWxsIT09aCYmdm9pZCAwIT09aC5maXhlZEZvdmVhdGlvbiYmKGguZml4ZWRGb3ZlYXRpb249dCl9O2xldCBMPW51bGw7Y29uc3QgST1uZXcgQzZ0O0kuc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24gTihlLG4pe2lmKGw9bi5nZXRWaWV3ZXJQb3NlKG8pLHA9bixudWxsIT09bCl7Y29uc3QgZT1sLnZpZXdzO251bGwhPT1oJiYodC5zZXRSZW5kZXJUYXJnZXRGcmFtZWJ1ZmZlcihnLGguZnJhbWVidWZmZXIpLHQuc2V0UmVuZGVyVGFyZ2V0KGcpKTtsZXQgbj0hMTtlLmxlbmd0aCE9PXcuY2FtZXJhcy5sZW5ndGgmJih3LmNhbWVyYXMubGVuZ3RoPTAsbj0hMCk7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2NvbnN0IHI9ZVtpXTtsZXQgbz1udWxsO2lmKG51bGwhPT1oKW89aC5nZXRWaWV3cG9ydChyKTtlbHNle2NvbnN0IGU9Yy5nZXRWaWV3U3ViSW1hZ2UodSxyKTtvPWUudmlld3BvcnQsMD09PWkmJih0LnNldFJlbmRlclRhcmdldFRleHR1cmVzKGcsZS5jb2xvclRleHR1cmUsdS5pZ25vcmVEZXB0aFZhbHVlcz92b2lkIDA6ZS5kZXB0aFN0ZW5jaWxUZXh0dXJlKSx0LnNldFJlbmRlclRhcmdldChnKSl9Y29uc3QgYT14W2ldO2EubWF0cml4LmZyb21BcnJheShyLnRyYW5zZm9ybS5tYXRyaXgpLGEucHJvamVjdGlvbk1hdHJpeC5mcm9tQXJyYXkoci5wcm9qZWN0aW9uTWF0cml4KSxhLnZpZXdwb3J0LnNldChvLngsby55LG8ud2lkdGgsby5oZWlnaHQpLDA9PT1pJiZ3Lm1hdHJpeC5jb3B5KGEubWF0cml4KSwhMD09PW4mJncuY2FtZXJhcy5wdXNoKGEpfX1jb25zdCByPWkuaW5wdXRTb3VyY2VzO2ZvcihsZXQgdD0wO3Q8Xy5sZW5ndGg7dCsrKXtfW3RdLnVwZGF0ZShyW3RdLG4sbyl9TCYmTChlLG4pLHA9bnVsbH0pKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7TD10fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fX1mdW5jdGlvbiBmN3QodCl7ZnVuY3Rpb24gZShlLG4pe2Uub3BhY2l0eS52YWx1ZT1uLm9wYWNpdHksbi5jb2xvciYmZS5kaWZmdXNlLnZhbHVlLmNvcHkobi5jb2xvciksbi5lbWlzc2l2ZSYmZS5lbWlzc2l2ZS52YWx1ZS5jb3B5KG4uZW1pc3NpdmUpLm11bHRpcGx5U2NhbGFyKG4uZW1pc3NpdmVJbnRlbnNpdHkpLG4ubWFwJiYoZS5tYXAudmFsdWU9bi5tYXApLG4uYWxwaGFNYXAmJihlLmFscGhhTWFwLnZhbHVlPW4uYWxwaGFNYXApLG4uc3BlY3VsYXJNYXAmJihlLnNwZWN1bGFyTWFwLnZhbHVlPW4uc3BlY3VsYXJNYXApLG4uYWxwaGFUZXN0PjAmJihlLmFscGhhVGVzdC52YWx1ZT1uLmFscGhhVGVzdCk7Y29uc3QgaT10LmdldChuKS5lbnZNYXA7bGV0IHIsbztpJiYoZS5lbnZNYXAudmFsdWU9aSxlLmZsaXBFbnZNYXAudmFsdWU9aS5pc0N1YmVUZXh0dXJlJiYhMT09PWkuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPy0xOjEsZS5yZWZsZWN0aXZpdHkudmFsdWU9bi5yZWZsZWN0aXZpdHksZS5pb3IudmFsdWU9bi5pb3IsZS5yZWZyYWN0aW9uUmF0aW8udmFsdWU9bi5yZWZyYWN0aW9uUmF0aW8pLG4ubGlnaHRNYXAmJihlLmxpZ2h0TWFwLnZhbHVlPW4ubGlnaHRNYXAsZS5saWdodE1hcEludGVuc2l0eS52YWx1ZT1uLmxpZ2h0TWFwSW50ZW5zaXR5KSxuLmFvTWFwJiYoZS5hb01hcC52YWx1ZT1uLmFvTWFwLGUuYW9NYXBJbnRlbnNpdHkudmFsdWU9bi5hb01hcEludGVuc2l0eSksbi5tYXA/cj1uLm1hcDpuLnNwZWN1bGFyTWFwP3I9bi5zcGVjdWxhck1hcDpuLmRpc3BsYWNlbWVudE1hcD9yPW4uZGlzcGxhY2VtZW50TWFwOm4ubm9ybWFsTWFwP3I9bi5ub3JtYWxNYXA6bi5idW1wTWFwP3I9bi5idW1wTWFwOm4ucm91Z2huZXNzTWFwP3I9bi5yb3VnaG5lc3NNYXA6bi5tZXRhbG5lc3NNYXA/cj1uLm1ldGFsbmVzc01hcDpuLmFscGhhTWFwP3I9bi5hbHBoYU1hcDpuLmVtaXNzaXZlTWFwP3I9bi5lbWlzc2l2ZU1hcDpuLmNsZWFyY29hdE1hcD9yPW4uY2xlYXJjb2F0TWFwOm4uY2xlYXJjb2F0Tm9ybWFsTWFwP3I9bi5jbGVhcmNvYXROb3JtYWxNYXA6bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/cj1uLmNsZWFyY29hdFJvdWdobmVzc01hcDpuLnNwZWN1bGFySW50ZW5zaXR5TWFwP3I9bi5zcGVjdWxhckludGVuc2l0eU1hcDpuLnNwZWN1bGFyQ29sb3JNYXA/cj1uLnNwZWN1bGFyQ29sb3JNYXA6bi50cmFuc21pc3Npb25NYXA/cj1uLnRyYW5zbWlzc2lvbk1hcDpuLnRoaWNrbmVzc01hcD9yPW4udGhpY2tuZXNzTWFwOm4uc2hlZW5Db2xvck1hcD9yPW4uc2hlZW5Db2xvck1hcDpuLnNoZWVuUm91Z2huZXNzTWFwJiYocj1uLnNoZWVuUm91Z2huZXNzTWFwKSx2b2lkIDAhPT1yJiYoci5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYocj1yLnRleHR1cmUpLCEwPT09ci5tYXRyaXhBdXRvVXBkYXRlJiZyLnVwZGF0ZU1hdHJpeCgpLGUudXZUcmFuc2Zvcm0udmFsdWUuY29weShyLm1hdHJpeCkpLG4uYW9NYXA/bz1uLmFvTWFwOm4ubGlnaHRNYXAmJihvPW4ubGlnaHRNYXApLHZvaWQgMCE9PW8mJihvLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihvPW8udGV4dHVyZSksITA9PT1vLm1hdHJpeEF1dG9VcGRhdGUmJm8udXBkYXRlTWF0cml4KCksZS51djJUcmFuc2Zvcm0udmFsdWUuY29weShvLm1hdHJpeCkpfWZ1bmN0aW9uIG4oZSxuKXtlLnJvdWdobmVzcy52YWx1ZT1uLnJvdWdobmVzcyxlLm1ldGFsbmVzcy52YWx1ZT1uLm1ldGFsbmVzcyxuLnJvdWdobmVzc01hcCYmKGUucm91Z2huZXNzTWFwLnZhbHVlPW4ucm91Z2huZXNzTWFwKSxuLm1ldGFsbmVzc01hcCYmKGUubWV0YWxuZXNzTWFwLnZhbHVlPW4ubWV0YWxuZXNzTWFwKSxuLmVtaXNzaXZlTWFwJiYoZS5lbWlzc2l2ZU1hcC52YWx1ZT1uLmVtaXNzaXZlTWFwKSxuLmJ1bXBNYXAmJihlLmJ1bXBNYXAudmFsdWU9bi5idW1wTWFwLGUuYnVtcFNjYWxlLnZhbHVlPW4uYnVtcFNjYWxlLDE9PT1uLnNpZGUmJihlLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxuLm5vcm1hbE1hcCYmKGUubm9ybWFsTWFwLnZhbHVlPW4ubm9ybWFsTWFwLGUubm9ybWFsU2NhbGUudmFsdWUuY29weShuLm5vcm1hbFNjYWxlKSwxPT09bi5zaWRlJiZlLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxuLmRpc3BsYWNlbWVudE1hcCYmKGUuZGlzcGxhY2VtZW50TWFwLnZhbHVlPW4uZGlzcGxhY2VtZW50TWFwLGUuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9bi5kaXNwbGFjZW1lbnRTY2FsZSxlLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9bi5kaXNwbGFjZW1lbnRCaWFzKTt0LmdldChuKS5lbnZNYXAmJihlLmVudk1hcEludGVuc2l0eS52YWx1ZT1uLmVudk1hcEludGVuc2l0eSl9cmV0dXJue3JlZnJlc2hGb2dVbmlmb3JtczpmdW5jdGlvbiBpKHQsZSl7dC5mb2dDb2xvci52YWx1ZS5jb3B5KGUuY29sb3IpLGUuaXNGb2c/KHQuZm9nTmVhci52YWx1ZT1lLm5lYXIsdC5mb2dGYXIudmFsdWU9ZS5mYXIpOmUuaXNGb2dFeHAyJiYodC5mb2dEZW5zaXR5LnZhbHVlPWUuZGVuc2l0eSl9LHJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zOmZ1bmN0aW9uIHIodCxpLG8sYSxzKXtpLmlzTWVzaEJhc2ljTWF0ZXJpYWw/ZSh0LGkpOmkuaXNNZXNoTGFtYmVydE1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIGwodCxlKXtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKX0pKHQsaSkpOmkuaXNNZXNoVG9vbk1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIGModCxlKXtlLmdyYWRpZW50TWFwJiYodC5ncmFkaWVudE1hcC52YWx1ZT1lLmdyYWRpZW50TWFwKTtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKTtlLmJ1bXBNYXAmJih0LmJ1bXBNYXAudmFsdWU9ZS5idW1wTWFwLHQuYnVtcFNjYWxlLnZhbHVlPWUuYnVtcFNjYWxlLDE9PT1lLnNpZGUmJih0LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKTtlLm5vcm1hbE1hcCYmKHQubm9ybWFsTWFwLnZhbHVlPWUubm9ybWFsTWFwLHQubm9ybWFsU2NhbGUudmFsdWUuY29weShlLm5vcm1hbFNjYWxlKSwxPT09ZS5zaWRlJiZ0Lm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsaSkpOmkuaXNNZXNoUGhvbmdNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiB1KHQsZSl7dC5zcGVjdWxhci52YWx1ZS5jb3B5KGUuc3BlY3VsYXIpLHQuc2hpbmluZXNzLnZhbHVlPU1hdGgubWF4KGUuc2hpbmluZXNzLDFlLTQpLGUuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPyhlKHQsaSksaS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPyhmdW5jdGlvbiBoKHQsZSxpKXtuKHQsZSksdC5pb3IudmFsdWU9ZS5pb3IsZS5zaGVlbj4wJiYodC5zaGVlbkNvbG9yLnZhbHVlLmNvcHkoZS5zaGVlbkNvbG9yKS5tdWx0aXBseVNjYWxhcihlLnNoZWVuKSx0LnNoZWVuUm91Z2huZXNzLnZhbHVlPWUuc2hlZW5Sb3VnaG5lc3MsZS5zaGVlbkNvbG9yTWFwJiYodC5zaGVlbkNvbG9yTWFwLnZhbHVlPWUuc2hlZW5Db2xvck1hcCksZS5zaGVlblJvdWdobmVzc01hcCYmKHQuc2hlZW5Sb3VnaG5lc3NNYXAudmFsdWU9ZS5zaGVlblJvdWdobmVzc01hcCkpO2UuY2xlYXJjb2F0PjAmJih0LmNsZWFyY29hdC52YWx1ZT1lLmNsZWFyY29hdCx0LmNsZWFyY29hdFJvdWdobmVzcy52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzcyxlLmNsZWFyY29hdE1hcCYmKHQuY2xlYXJjb2F0TWFwLnZhbHVlPWUuY2xlYXJjb2F0TWFwKSxlLmNsZWFyY29hdFJvdWdobmVzc01hcCYmKHQuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnZhbHVlPWUuY2xlYXJjb2F0Um91Z2huZXNzTWFwKSxlLmNsZWFyY29hdE5vcm1hbE1hcCYmKHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUuY29weShlLmNsZWFyY29hdE5vcm1hbFNjYWxlKSx0LmNsZWFyY29hdE5vcm1hbE1hcC52YWx1ZT1lLmNsZWFyY29hdE5vcm1hbE1hcCwxPT09ZS5zaWRlJiZ0LmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSk7ZS50cmFuc21pc3Npb24+MCYmKHQudHJhbnNtaXNzaW9uLnZhbHVlPWUudHJhbnNtaXNzaW9uLHQudHJhbnNtaXNzaW9uU2FtcGxlck1hcC52YWx1ZT1pLnRleHR1cmUsdC50cmFuc21pc3Npb25TYW1wbGVyU2l6ZS52YWx1ZS5zZXQoaS53aWR0aCxpLmhlaWdodCksZS50cmFuc21pc3Npb25NYXAmJih0LnRyYW5zbWlzc2lvbk1hcC52YWx1ZT1lLnRyYW5zbWlzc2lvbk1hcCksdC50aGlja25lc3MudmFsdWU9ZS50aGlja25lc3MsZS50aGlja25lc3NNYXAmJih0LnRoaWNrbmVzc01hcC52YWx1ZT1lLnRoaWNrbmVzc01hcCksdC5hdHRlbnVhdGlvbkRpc3RhbmNlLnZhbHVlPWUuYXR0ZW51YXRpb25EaXN0YW5jZSx0LmF0dGVudWF0aW9uQ29sb3IudmFsdWUuY29weShlLmF0dGVudWF0aW9uQ29sb3IpKTt0LnNwZWN1bGFySW50ZW5zaXR5LnZhbHVlPWUuc3BlY3VsYXJJbnRlbnNpdHksdC5zcGVjdWxhckNvbG9yLnZhbHVlLmNvcHkoZS5zcGVjdWxhckNvbG9yKSxlLnNwZWN1bGFySW50ZW5zaXR5TWFwJiYodC5zcGVjdWxhckludGVuc2l0eU1hcC52YWx1ZT1lLnNwZWN1bGFySW50ZW5zaXR5TWFwKTtlLnNwZWN1bGFyQ29sb3JNYXAmJih0LnNwZWN1bGFyQ29sb3JNYXAudmFsdWU9ZS5zcGVjdWxhckNvbG9yTWFwKX0pKHQsaSxzKTpuKHQsaSkpOmkuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gZCh0LGUpe2UubWF0Y2FwJiYodC5tYXRjYXAudmFsdWU9ZS5tYXRjYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hEZXB0aE1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIHAodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsaSkpOmkuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBmKHQsZSl7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyk7dC5yZWZlcmVuY2VQb3NpdGlvbi52YWx1ZS5jb3B5KGUucmVmZXJlbmNlUG9zaXRpb24pLHQubmVhckRpc3RhbmNlLnZhbHVlPWUubmVhckRpc3RhbmNlLHQuZmFyRGlzdGFuY2UudmFsdWU9ZS5mYXJEaXN0YW5jZX0pKHQsaSkpOmkuaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gbSh0LGUpe2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc0xpbmVCYXNpY01hdGVyaWFsPyghKGZ1bmN0aW9uIGcodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5fSkodCxpKSxpLmlzTGluZURhc2hlZE1hdGVyaWFsJiYoZnVuY3Rpb24gXyh0LGUpe3QuZGFzaFNpemUudmFsdWU9ZS5kYXNoU2l6ZSx0LnRvdGFsU2l6ZS52YWx1ZT1lLmRhc2hTaXplK2UuZ2FwU2l6ZSx0LnNjYWxlLnZhbHVlPWUuc2NhbGV9KSh0LGkpKTppLmlzUG9pbnRzTWF0ZXJpYWw/KGZ1bmN0aW9uIHkodCxlLG4saSl7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnNpemUudmFsdWU9ZS5zaXplKm4sdC5zY2FsZS52YWx1ZT0uNSppLGUubWFwJiYodC5tYXAudmFsdWU9ZS5tYXApO2UuYWxwaGFNYXAmJih0LmFscGhhTWFwLnZhbHVlPWUuYWxwaGFNYXApO2UuYWxwaGFUZXN0PjAmJih0LmFscGhhVGVzdC52YWx1ZT1lLmFscGhhVGVzdCk7bGV0IHI7ZS5tYXA/cj1lLm1hcDplLmFscGhhTWFwJiYocj1lLmFscGhhTWFwKTt2b2lkIDAhPT1yJiYoITA9PT1yLm1hdHJpeEF1dG9VcGRhdGUmJnIudXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KHIubWF0cml4KSl9KSh0LGksbyxhKTppLmlzU3ByaXRlTWF0ZXJpYWw/KGZ1bmN0aW9uIHYodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQucm90YXRpb24udmFsdWU9ZS5yb3RhdGlvbixlLm1hcCYmKHQubWFwLnZhbHVlPWUubWFwKTtlLmFscGhhTWFwJiYodC5hbHBoYU1hcC52YWx1ZT1lLmFscGhhTWFwKTtlLmFscGhhVGVzdD4wJiYodC5hbHBoYVRlc3QudmFsdWU9ZS5hbHBoYVRlc3QpO2xldCBuO2UubWFwP249ZS5tYXA6ZS5hbHBoYU1hcCYmKG49ZS5hbHBoYU1hcCk7dm9pZCAwIT09biYmKCEwPT09bi5tYXRyaXhBdXRvVXBkYXRlJiZuLnVwZGF0ZU1hdHJpeCgpLHQudXZUcmFuc2Zvcm0udmFsdWUuY29weShuLm1hdHJpeCkpfSkodCxpKTppLmlzU2hhZG93TWF0ZXJpYWw/KHQuY29sb3IudmFsdWUuY29weShpLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9aS5vcGFjaXR5KTppLmlzU2hhZGVyTWF0ZXJpYWwmJihpLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSl9fX1mdW5jdGlvbiBtN3QodD17fSl7Y29uc3QgZT12b2lkIDAhPT10LmNhbnZhcz90LmNhbnZhczooZnVuY3Rpb24gbigpe2NvbnN0IHQ9VTV0KCJjYW52YXMiKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdH0pKCksaT12b2lkIDAhPT10LmNvbnRleHQ/dC5jb250ZXh0Om51bGwscj12b2lkIDAhPT10LmFscGhhJiZ0LmFscGhhLG89dm9pZCAwPT09dC5kZXB0aHx8dC5kZXB0aCxhPXZvaWQgMD09PXQuc3RlbmNpbHx8dC5zdGVuY2lsLHM9dm9pZCAwIT09dC5hbnRpYWxpYXMmJnQuYW50aWFsaWFzLGw9dm9pZCAwPT09dC5wcmVtdWx0aXBsaWVkQWxwaGF8fHQucHJlbXVsdGlwbGllZEFscGhhLGM9dm9pZCAwIT09dC5wcmVzZXJ2ZURyYXdpbmdCdWZmZXImJnQucHJlc2VydmVEcmF3aW5nQnVmZmVyLHU9dm9pZCAwIT09dC5wb3dlclByZWZlcmVuY2U/dC5wb3dlclByZWZlcmVuY2U6ImRlZmF1bHQiLGg9dm9pZCAwIT09dC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0JiZ0LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7bGV0IGQ9bnVsbCxwPW51bGw7Y29uc3QgZj1bXSxtPVtdO3RoaXMuZG9tRWxlbWVudD1lLHRoaXMuZGVidWc9e2NoZWNrU2hhZGVyRXJyb3JzOiEwfSx0aGlzLmF1dG9DbGVhcj0hMCx0aGlzLmF1dG9DbGVhckNvbG9yPSEwLHRoaXMuYXV0b0NsZWFyRGVwdGg9ITAsdGhpcy5hdXRvQ2xlYXJTdGVuY2lsPSEwLHRoaXMuc29ydE9iamVjdHM9ITAsdGhpcy5jbGlwcGluZ1BsYW5lcz1bXSx0aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkPSExLHRoaXMub3V0cHV0RW5jb2Rpbmc9cjV0LHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHM9ITEsdGhpcy50b25lTWFwcGluZz0wLHRoaXMudG9uZU1hcHBpbmdFeHBvc3VyZT0xO2NvbnN0IGc9dGhpcztsZXQgXz0hMSx5PTAsdj0wLGI9bnVsbCx4PS0xLHc9bnVsbDtjb25zdCBTPW5ldyBlM3QsTT1uZXcgZTN0O2xldCBFPW51bGwsVD1lLndpZHRoLEM9ZS5oZWlnaHQsQT0xLGs9bnVsbCxQPW51bGw7Y29uc3QgTD1uZXcgZTN0KDAsMCxULEMpLEk9bmV3IGUzdCgwLDAsVCxDKTtsZXQgTj0hMTtjb25zdCBSPW5ldyBUNnQ7bGV0IE89ITEsej0hMSxEPW51bGw7Y29uc3QgQj1uZXcgRDN0LEg9bmV3IGEzdCxGPXtiYWNrZ3JvdW5kOm51bGwsZm9nOm51bGwsZW52aXJvbm1lbnQ6bnVsbCxvdmVycmlkZU1hdGVyaWFsOm51bGwsaXNTY2VuZTohMH07ZnVuY3Rpb24gVigpe3JldHVybiBudWxsPT09Yj9BOjF9bGV0IFUsaixHLFcscSxZLFgsJCxLLFosSixRLHR0LGV0LG50LGl0LHJ0LG90LGF0LHN0LGx0LGN0LHV0LGh0PWk7ZnVuY3Rpb24gZHQodCxuKXtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcj1lLmdldENvbnRleHQodFtpXSxuKTtpZihudWxsIT09cilyZXR1cm4gcn1yZXR1cm4gbnVsbH10cnl7Y29uc3QgdD17YWxwaGE6ITAsZGVwdGg6byxzdGVuY2lsOmEsYW50aWFsaWFzOnMscHJlbXVsdGlwbGllZEFscGhhOmwscHJlc2VydmVEcmF3aW5nQnVmZmVyOmMscG93ZXJQcmVmZXJlbmNlOnUsZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDpofTtpZigic2V0QXR0cmlidXRlImluIGUmJmUuc2V0QXR0cmlidXRlKCJkYXRhLWVuZ2luZSIsInRocmVlLmpzIHIxMzciKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLG10LCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixndCwhMSksbnVsbD09PWh0KXtjb25zdCBlPVsid2ViZ2wyIiwid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiXTtpZighMD09PWcuaXNXZWJHTDFSZW5kZXJlciYmZS5zaGlmdCgpLGh0PWR0KGUsdCksbnVsbD09PWh0KXRocm93IGR0KGUpP25ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dCB3aXRoIHlvdXIgc2VsZWN0ZWQgYXR0cmlidXRlcy4iKTpuZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQuIil9dm9pZCAwPT09aHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JiYoaHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaCh0KXt0aHJvdyBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK3QubWVzc2FnZSksdH1mdW5jdGlvbiBwdCgpe1U9bmV3IGw5dChodCksaj1uZXcgejZ0KGh0LFUsdCksVS5pbml0KGopLGN0PW5ldyBzN3QoaHQsVSxqKSxHPW5ldyBvN3QoaHQsVSxqKSxXPW5ldyBoOXQoaHQpLHE9bmV3IFc4dCxZPW5ldyBhN3QoaHQsVSxHLHEsaixjdCxXKSxYPW5ldyBCNnQoZyksJD1uZXcgczl0KGcpLEs9bmV3IEE2dChodCxqKSx1dD1uZXcgUjZ0KGh0LFUsSyxqKSxaPW5ldyBjOXQoaHQsSyxXLHV0KSxKPW5ldyBfOXQoaHQsWixLLFcpLGF0PW5ldyBnOXQoaHQsaixZKSxpdD1uZXcgRDZ0KHEpLFE9bmV3IEc4dChnLFgsJCxVLGosdXQsaXQpLHR0PW5ldyBmN3QocSksZXQ9bmV3ICQ4dCxudD1uZXcgZTd0KFUsaiksb3Q9bmV3IE42dChnLFgsRyxKLHIsbCkscnQ9bmV3IHI3dChnLEosaiksc3Q9bmV3IE82dChodCxVLFcsaiksbHQ9bmV3IHU5dChodCxVLFcsaiksVy5wcm9ncmFtcz1RLnByb2dyYW1zLGcuY2FwYWJpbGl0aWVzPWosZy5leHRlbnNpb25zPVUsZy5wcm9wZXJ0aWVzPXEsZy5yZW5kZXJMaXN0cz1ldCxnLnNoYWRvd01hcD1ydCxnLnN0YXRlPUcsZy5pbmZvPVd9cHQoKTtjb25zdCBmdD1uZXcgcDd0KGcsaHQpO2Z1bmN0aW9uIG10KHQpe3QucHJldmVudERlZmF1bHQoKSxjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LiIpLF89ITB9ZnVuY3Rpb24gZ3QoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKSxfPSExO2NvbnN0IHQ9Vy5hdXRvUmVzZXQsZT1ydC5lbmFibGVkLG49cnQuYXV0b1VwZGF0ZSxpPXJ0Lm5lZWRzVXBkYXRlLHI9cnQudHlwZTtwdCgpLFcuYXV0b1Jlc2V0PXQscnQuZW5hYmxlZD1lLHJ0LmF1dG9VcGRhdGU9bixydC5uZWVkc1VwZGF0ZT1pLHJ0LnR5cGU9cn1mdW5jdGlvbiBfdCh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsX3QpLChmdW5jdGlvbiBuKHQpeyhmdW5jdGlvbiBlKHQpe2NvbnN0IGU9cS5nZXQodCkucHJvZ3JhbXM7dm9pZCAwIT09ZSYmKGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7US5yZWxlYXNlUHJvZ3JhbSh0KX0pKSx0LmlzU2hhZGVyTWF0ZXJpYWwmJlEucmVsZWFzZVNoYWRlckNhY2hlKHQpKX0pKHQpLHEucmVtb3ZlKHQpfSkoZSl9dGhpcy54cj1mdCx0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gaHR9LHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKX0sdGhpcy5mb3JjZUNvbnRleHRMb3NzPWZ1bmN0aW9uKCl7Y29uc3QgdD1VLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtjb25zdCB0PVUuZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0LnJlc3RvcmVDb250ZXh0KCl9LHRoaXMuZ2V0UGl4ZWxSYXRpbz1mdW5jdGlvbigpe3JldHVybiBBfSx0aGlzLnNldFBpeGVsUmF0aW89ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKEE9dCx0aGlzLnNldFNpemUoVCxDLCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQoVCxDKX0sdGhpcy5zZXRTaXplPWZ1bmN0aW9uKHQsbixpKXtmdC5pc1ByZXNlbnRpbmc/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDYW4ndCBjaGFuZ2Ugc2l6ZSB3aGlsZSBWUiBkZXZpY2UgaXMgcHJlc2VudGluZy4iKTooVD10LEM9bixlLndpZHRoPU1hdGguZmxvb3IodCpBKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qQSksITEhPT1pJiYoZS5zdHlsZS53aWR0aD10KyJweCIsZS5zdHlsZS5oZWlnaHQ9bisicHgiKSx0aGlzLnNldFZpZXdwb3J0KDAsMCx0LG4pKX0sdGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQoVCpBLEMqQSkuZmxvb3IoKX0sdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0LG4saSl7VD10LEM9bixBPWksZS53aWR0aD1NYXRoLmZsb29yKHQqaSksZS5oZWlnaHQ9TWF0aC5mbG9vcihuKmkpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbil9LHRoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoUyl9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShMKX0sdGhpcy5zZXRWaWV3cG9ydD1mdW5jdGlvbih0LGUsbixpKXt0LmlzVmVjdG9yND9MLnNldCh0LngsdC55LHQueix0LncpOkwuc2V0KHQsZSxuLGkpLEcudmlld3BvcnQoUy5jb3B5KEwpLm11bHRpcGx5U2NhbGFyKEEpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShJKX0sdGhpcy5zZXRTY2lzc29yPWZ1bmN0aW9uKHQsZSxuLGkpe3QuaXNWZWN0b3I0P0kuc2V0KHQueCx0LnksdC56LHQudyk6SS5zZXQodCxlLG4saSksRy5zY2lzc29yKE0uY29weShJKS5tdWx0aXBseVNjYWxhcihBKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yVGVzdD1mdW5jdGlvbigpe3JldHVybiBOfSx0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe0cuc2V0U2Npc3NvclRlc3QoTj10KX0sdGhpcy5zZXRPcGFxdWVTb3J0PWZ1bmN0aW9uKHQpe2s9dH0sdGhpcy5zZXRUcmFuc3BhcmVudFNvcnQ9ZnVuY3Rpb24odCl7UD10fSx0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShvdC5nZXRDbGVhckNvbG9yKCkpfSx0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXtvdC5zZXRDbGVhckNvbG9yLmFwcGx5KG90LGFyZ3VtZW50cyl9LHRoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiBvdC5nZXRDbGVhckFscGhhKCl9LHRoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe290LnNldENsZWFyQWxwaGEuYXBwbHkob3QsYXJndW1lbnRzKX0sdGhpcy5jbGVhcj1mdW5jdGlvbih0LGUsbil7bGV0IGk9MDsodm9pZCAwPT09dHx8dCkmJihpfD0xNjM4NCksKHZvaWQgMD09PWV8fGUpJiYoaXw9MjU2KSwodm9pZCAwPT09bnx8bikmJihpfD0xMDI0KSxodC5jbGVhcihpKX0sdGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9LHRoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfSx0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLG10LCExKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixndCwhMSksZXQuZGlzcG9zZSgpLG50LmRpc3Bvc2UoKSxxLmRpc3Bvc2UoKSxYLmRpc3Bvc2UoKSwkLmRpc3Bvc2UoKSxKLmRpc3Bvc2UoKSx1dC5kaXNwb3NlKCksUS5kaXNwb3NlKCksZnQuZGlzcG9zZSgpLGZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsdnQpLGZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLGJ0KSxEJiYoRC5kaXNwb3NlKCksRD1udWxsKSx4dC5zdG9wKCl9LHRoaXMucmVuZGVyQnVmZmVyRGlyZWN0PWZ1bmN0aW9uKHQsZSxuLGkscixvKXtudWxsPT09ZSYmKGU9Rik7Y29uc3QgYT1yLmlzTWVzaCYmci5tYXRyaXhXb3JsZC5kZXRlcm1pbmFudCgpPDAscz0oZnVuY3Rpb24gbCh0LGUsbixpLHIpeyEwIT09ZS5pc1NjZW5lJiYoZT1GKTtZLnJlc2V0VGV4dHVyZVVuaXRzKCk7Y29uc3Qgbz1lLmZvZyxhPWkuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwscz1udWxsPT09Yj9nLm91dHB1dEVuY29kaW5nOiEwPT09Yi5pc1hSUmVuZGVyVGFyZ2V0P2IudGV4dHVyZS5lbmNvZGluZzpyNXQsbD0oaS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPyQ6WCkuZ2V0KGkuZW52TWFwfHxhKSxjPSEwPT09aS52ZXJ0ZXhDb2xvcnMmJiEhbi5hdHRyaWJ1dGVzLmNvbG9yJiY0PT09bi5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplLHU9ISFpLm5vcm1hbE1hcCYmISFuLmF0dHJpYnV0ZXMudGFuZ2VudCxoPSEhbi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sZD0hIW4ubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxmPW4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uP24ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aDowLG09aS50b25lTWFwcGVkP2cudG9uZU1hcHBpbmc6MCxfPXEuZ2V0KGkpLHk9cC5zdGF0ZS5saWdodHM7aWYoITA9PT1PJiYoITA9PT16fHx0IT09dykpe2l0LnNldFN0YXRlKGksdCx0PT09dyYmaS5pZD09PXgpfWxldCB2PSExO2kudmVyc2lvbj09PV8uX192ZXJzaW9uP18ubmVlZHNMaWdodHMmJl8ubGlnaHRzU3RhdGVWZXJzaW9uIT09eS5zdGF0ZS52ZXJzaW9ufHxfLm91dHB1dEVuY29kaW5nIT09c3x8ci5pc0luc3RhbmNlZE1lc2gmJiExPT09Xy5pbnN0YW5jaW5nP3Y9ITA6ci5pc0luc3RhbmNlZE1lc2h8fCEwIT09Xy5pbnN0YW5jaW5nP3IuaXNTa2lubmVkTWVzaCYmITE9PT1fLnNraW5uaW5nP3Y9ITA6ci5pc1NraW5uZWRNZXNofHwhMCE9PV8uc2tpbm5pbmc/Xy5lbnZNYXAhPT1sfHxpLmZvZyYmXy5mb2chPT1vP3Y9ITA6dm9pZCAwPT09Xy5udW1DbGlwcGluZ1BsYW5lc3x8Xy5udW1DbGlwcGluZ1BsYW5lcz09PWl0Lm51bVBsYW5lcyYmXy5udW1JbnRlcnNlY3Rpb249PT1pdC5udW1JbnRlcnNlY3Rpb24/KF8udmVydGV4QWxwaGFzIT09Y3x8Xy52ZXJ0ZXhUYW5nZW50cyE9PXV8fF8ubW9ycGhUYXJnZXRzIT09aHx8Xy5tb3JwaE5vcm1hbHMhPT1kfHxfLnRvbmVNYXBwaW5nIT09bXx8ITA9PT1qLmlzV2ViR0wyJiZfLm1vcnBoVGFyZ2V0c0NvdW50IT09ZikmJih2PSEwKTp2PSEwOnY9ITA6dj0hMDoodj0hMCxfLl9fdmVyc2lvbj1pLnZlcnNpb24pO2xldCBTPV8uY3VycmVudFByb2dyYW07ITA9PT12JiYoUz1UdChpLGUscikpO2xldCBNPSExLEU9ITEsVD0hMTtjb25zdCBrPVMuZ2V0VW5pZm9ybXMoKSxQPV8udW5pZm9ybXM7Ry51c2VQcm9ncmFtKFMucHJvZ3JhbSkmJihNPSEwLEU9ITAsVD0hMCk7aS5pZCE9PXgmJih4PWkuaWQsRT0hMCk7aWYoTXx8dyE9PXQpe2lmKGsuc2V0VmFsdWUoaHQsInByb2plY3Rpb25NYXRyaXgiLHQucHJvamVjdGlvbk1hdHJpeCksai5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZrLnNldFZhbHVlKGh0LCJsb2dEZXB0aEJ1ZkZDIiwyLyhNYXRoLmxvZyh0LmZhcisxKS9NYXRoLkxOMikpLHchPT10JiYodz10LEU9ITAsVD0hMCksaS5pc1NoYWRlck1hdGVyaWFsfHxpLmlzTWVzaFBob25nTWF0ZXJpYWx8fGkuaXNNZXNoVG9vbk1hdGVyaWFsfHxpLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fGkuZW52TWFwKXtjb25zdCBlPWsubWFwLmNhbWVyYVBvc2l0aW9uO3ZvaWQgMCE9PWUmJmUuc2V0VmFsdWUoaHQsSC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkpfShpLmlzTWVzaFBob25nTWF0ZXJpYWx8fGkuaXNNZXNoVG9vbk1hdGVyaWFsfHxpLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8aS5pc01lc2hCYXNpY01hdGVyaWFsfHxpLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fGkuaXNTaGFkZXJNYXRlcmlhbCkmJmsuc2V0VmFsdWUoaHQsImlzT3J0aG9ncmFwaGljIiwhMD09PXQuaXNPcnRob2dyYXBoaWNDYW1lcmEpLChpLmlzTWVzaFBob25nTWF0ZXJpYWx8fGkuaXNNZXNoVG9vbk1hdGVyaWFsfHxpLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8aS5pc01lc2hCYXNpY01hdGVyaWFsfHxpLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fGkuaXNTaGFkZXJNYXRlcmlhbHx8aS5pc1NoYWRvd01hdGVyaWFsfHxyLmlzU2tpbm5lZE1lc2gpJiZrLnNldFZhbHVlKGh0LCJ2aWV3TWF0cml4Iix0Lm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYoci5pc1NraW5uZWRNZXNoKXtrLnNldE9wdGlvbmFsKGh0LHIsImJpbmRNYXRyaXgiKSxrLnNldE9wdGlvbmFsKGh0LHIsImJpbmRNYXRyaXhJbnZlcnNlIik7Y29uc3QgdD1yLnNrZWxldG9uO3QmJihqLmZsb2F0VmVydGV4VGV4dHVyZXM/KG51bGw9PT10LmJvbmVUZXh0dXJlJiZ0LmNvbXB1dGVCb25lVGV4dHVyZSgpLGsuc2V0VmFsdWUoaHQsImJvbmVUZXh0dXJlIix0LmJvbmVUZXh0dXJlLFkpLGsuc2V0VmFsdWUoaHQsImJvbmVUZXh0dXJlU2l6ZSIsdC5ib25lVGV4dHVyZVNpemUpKTprLnNldE9wdGlvbmFsKGh0LHQsImJvbmVNYXRyaWNlcyIpKX0hbnx8dm9pZCAwPT09bi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24mJnZvaWQgMD09PW4ubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbHx8YXQudXBkYXRlKHIsbixpLFMpOyhFfHxfLnJlY2VpdmVTaGFkb3chPT1yLnJlY2VpdmVTaGFkb3cpJiYoXy5yZWNlaXZlU2hhZG93PXIucmVjZWl2ZVNoYWRvdyxrLnNldFZhbHVlKGh0LCJyZWNlaXZlU2hhZG93IixyLnJlY2VpdmVTaGFkb3cpKTtFJiYoay5zZXRWYWx1ZShodCwidG9uZU1hcHBpbmdFeHBvc3VyZSIsZy50b25lTWFwcGluZ0V4cG9zdXJlKSxfLm5lZWRzTGlnaHRzJiYoZnVuY3Rpb24gTCh0LGUpe3QuYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9ZSx0LmxpZ2h0UHJvYmUubmVlZHNVcGRhdGU9ZSx0LmRpcmVjdGlvbmFsTGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQucG9pbnRMaWdodHMubmVlZHNVcGRhdGU9ZSx0LnBvaW50TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5yZWN0QXJlYUxpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1lfSkoUCxUKSxvJiZpLmZvZyYmdHQucmVmcmVzaEZvZ1VuaWZvcm1zKFAsbyksdHQucmVmcmVzaE1hdGVyaWFsVW5pZm9ybXMoUCxpLEEsQyxEKSx3OHQudXBsb2FkKGh0LF8udW5pZm9ybXNMaXN0LFAsWSkpO2kuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT1pLnVuaWZvcm1zTmVlZFVwZGF0ZSYmKHc4dC51cGxvYWQoaHQsXy51bmlmb3Jtc0xpc3QsUCxZKSxpLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSk7aS5pc1Nwcml0ZU1hdGVyaWFsJiZrLnNldFZhbHVlKGh0LCJjZW50ZXIiLHIuY2VudGVyKTtyZXR1cm4gay5zZXRWYWx1ZShodCwibW9kZWxWaWV3TWF0cml4IixyLm1vZGVsVmlld01hdHJpeCksay5zZXRWYWx1ZShodCwibm9ybWFsTWF0cml4IixyLm5vcm1hbE1hdHJpeCksay5zZXRWYWx1ZShodCwibW9kZWxNYXRyaXgiLHIubWF0cml4V29ybGQpLFN9KSh0LGUsbixpLHIpO0cuc2V0TWF0ZXJpYWwoaSxhKTtsZXQgYz1uLmluZGV4O2NvbnN0IHU9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGw9PT1jKXtpZih2b2lkIDA9PT11fHwwPT09dS5jb3VudClyZXR1cm59ZWxzZSBpZigwPT09Yy5jb3VudClyZXR1cm47bGV0IGgsZD0xOyEwPT09aS53aXJlZnJhbWUmJihjPVouZ2V0V2lyZWZyYW1lQXR0cmlidXRlKG4pLGQ9MiksdXQuc2V0dXAocixpLHMsbixjKTtsZXQgZj1zdDtudWxsIT09YyYmKGg9Sy5nZXQoYyksZj1sdCxmLnNldEluZGV4KGgpKTtjb25zdCBtPW51bGwhPT1jP2MuY291bnQ6dS5jb3VudCxfPW4uZHJhd1JhbmdlLnN0YXJ0KmQseT1uLmRyYXdSYW5nZS5jb3VudCpkLHY9bnVsbCE9PW8/by5zdGFydCpkOjAsUz1udWxsIT09bz9vLmNvdW50KmQ6MS8wLE09TWF0aC5tYXgoXyx2KSxFPU1hdGgubWluKG0sXyt5LHYrUyktMSxUPU1hdGgubWF4KDAsRS1NKzEpO2lmKDAhPT1UKXtpZihyLmlzTWVzaCkhMD09PWkud2lyZWZyYW1lPyhHLnNldExpbmVXaWR0aChpLndpcmVmcmFtZUxpbmV3aWR0aCpWKCkpLGYuc2V0TW9kZSgxKSk6Zi5zZXRNb2RlKDQpO2Vsc2UgaWYoci5pc0xpbmUpe2xldCB0PWkubGluZXdpZHRoO3ZvaWQgMD09PXQmJih0PTEpLEcuc2V0TGluZVdpZHRoKHQqVigpKSxmLnNldE1vZGUoci5pc0xpbmVTZWdtZW50cz8xOnIuaXNMaW5lTG9vcD8yOjMpfWVsc2Ugci5pc1BvaW50cz9mLnNldE1vZGUoMCk6ci5pc1Nwcml0ZSYmZi5zZXRNb2RlKDQpO2lmKHIuaXNJbnN0YW5jZWRNZXNoKWYucmVuZGVySW5zdGFuY2VzKE0sVCxyLmNvdW50KTtlbHNlIGlmKG4uaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSl7Y29uc3QgdD1NYXRoLm1pbihuLmluc3RhbmNlQ291bnQsbi5fbWF4SW5zdGFuY2VDb3VudCk7Zi5yZW5kZXJJbnN0YW5jZXMoTSxULHQpfWVsc2UgZi5yZW5kZXIoTSxUKX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbih0LGUpe3A9bnQuZ2V0KHQpLHAuaW5pdCgpLG0ucHVzaChwKSx0LnRyYXZlcnNlVmlzaWJsZSgoZnVuY3Rpb24odCl7dC5pc0xpZ2h0JiZ0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmKHAucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmcC5wdXNoU2hhZG93KHQpKX0pKSxwLnNldHVwTGlnaHRzKGcucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLHQudHJhdmVyc2UoKGZ1bmN0aW9uKGUpe2NvbnN0IG49ZS5tYXRlcmlhbDtpZihuKWlmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspe1R0KG5baV0sdCxlKX1lbHNlIFR0KG4sdCxlKX0pKSxtLnBvcCgpLHA9bnVsbH07bGV0IHl0PW51bGw7ZnVuY3Rpb24gdnQoKXt4dC5zdG9wKCl9ZnVuY3Rpb24gYnQoKXt4dC5zdGFydCgpfWNvbnN0IHh0PW5ldyBDNnQ7ZnVuY3Rpb24gd3QodCxlLG4saSl7aWYoITE9PT10LnZpc2libGUpcmV0dXJuO2lmKHQubGF5ZXJzLnRlc3QoZS5sYXllcnMpKWlmKHQuaXNHcm91cCluPXQucmVuZGVyT3JkZXI7ZWxzZSBpZih0LmlzTE9EKSEwPT09dC5hdXRvVXBkYXRlJiZ0LnVwZGF0ZShlKTtlbHNlIGlmKHQuaXNMaWdodClwLnB1c2hMaWdodCh0KSx0LmNhc3RTaGFkb3cmJnAucHVzaFNoYWRvdyh0KTtlbHNlIGlmKHQuaXNTcHJpdGUpe2lmKCF0LmZydXN0dW1DdWxsZWR8fFIuaW50ZXJzZWN0c1Nwcml0ZSh0KSl7aSYmSC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KEIpO2NvbnN0IGU9Si51cGRhdGUodCkscj10Lm1hdGVyaWFsO3IudmlzaWJsZSYmZC5wdXNoKHQsZSxyLG4sSC56LG51bGwpfX1lbHNlIGlmKCh0LmlzTWVzaHx8dC5pc0xpbmV8fHQuaXNQb2ludHMpJiYodC5pc1NraW5uZWRNZXNoJiZ0LnNrZWxldG9uLmZyYW1lIT09Vy5yZW5kZXIuZnJhbWUmJih0LnNrZWxldG9uLnVwZGF0ZSgpLHQuc2tlbGV0b24uZnJhbWU9Vy5yZW5kZXIuZnJhbWUpLCF0LmZydXN0dW1DdWxsZWR8fFIuaW50ZXJzZWN0c09iamVjdCh0KSkpe2kmJkguc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChCKTtjb25zdCBlPUoudXBkYXRlKHQpLHI9dC5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBpPWUuZ3JvdXBzO2ZvcihsZXQgbz0wLGE9aS5sZW5ndGg7bzxhO28rKyl7Y29uc3QgYT1pW29dLHM9clthLm1hdGVyaWFsSW5kZXhdO3MmJnMudmlzaWJsZSYmZC5wdXNoKHQsZSxzLG4sSC56LGEpfX1lbHNlIHIudmlzaWJsZSYmZC5wdXNoKHQsZSxyLG4sSC56LG51bGwpfWNvbnN0IHI9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxvPXIubGVuZ3RoO3Q8bzt0Kyspd3Qoclt0XSxlLG4saSl9ZnVuY3Rpb24gU3QodCxlLG4saSl7Y29uc3Qgcj10Lm9wYXF1ZSxvPXQudHJhbnNtaXNzaXZlLGE9dC50cmFuc3BhcmVudDtwLnNldHVwTGlnaHRzVmlldyhuKSxvLmxlbmd0aD4wJiYoZnVuY3Rpb24gbCh0LGUsbil7aWYobnVsbD09PUQpe0Q9bmV3KCEwPT09cyYmITA9PT1qLmlzV2ViR0wyP3IzdDpuM3QpKDEwMjQsMTAyNCx7Z2VuZXJhdGVNaXBtYXBzOiEwLHR5cGU6bnVsbCE9PWN0LmNvbnZlcnQoYjJ0KT9iMnQ6ZzJ0LG1pbkZpbHRlcjptMnQsbWFnRmlsdGVyOnUydCx3cmFwUzpsMnQsd3JhcFQ6bDJ0LHVzZVJlbmRlclRvVGV4dHVyZTpVLmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIil9KX1jb25zdCBpPWcuZ2V0UmVuZGVyVGFyZ2V0KCk7Zy5zZXRSZW5kZXJUYXJnZXQoRCksZy5jbGVhcigpO2NvbnN0IHI9Zy50b25lTWFwcGluZztnLnRvbmVNYXBwaW5nPTAsTXQodCxlLG4pLGcudG9uZU1hcHBpbmc9cixZLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEQpLFkudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEQpLGcuc2V0UmVuZGVyVGFyZ2V0KGkpfSkocixlLG4pLGkmJkcudmlld3BvcnQoUy5jb3B5KGkpKSxyLmxlbmd0aD4wJiZNdChyLGUsbiksby5sZW5ndGg+MCYmTXQobyxlLG4pLGEubGVuZ3RoPjAmJk10KGEsZSxuKX1mdW5jdGlvbiBNdCh0LGUsbil7Y29uc3QgaT0hMD09PWUuaXNTY2VuZT9lLm92ZXJyaWRlTWF0ZXJpYWw6bnVsbDtmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXSxhPW8ub2JqZWN0LHM9by5nZW9tZXRyeSxsPW51bGw9PT1pP28ubWF0ZXJpYWw6aSxjPW8uZ3JvdXA7YS5sYXllcnMudGVzdChuLmxheWVycykmJkV0KGEsZSxuLHMsbCxjKX19ZnVuY3Rpb24gRXQodCxlLG4saSxyLG8pe3Qub25CZWZvcmVSZW5kZXIoZyxlLG4saSxyLG8pLHQubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMobi5tYXRyaXhXb3JsZEludmVyc2UsdC5tYXRyaXhXb3JsZCksdC5ub3JtYWxNYXRyaXguZ2V0Tm9ybWFsTWF0cml4KHQubW9kZWxWaWV3TWF0cml4KSxyLm9uQmVmb3JlUmVuZGVyKGcsZSxuLGksdCxvKSwhMD09PXIudHJhbnNwYXJlbnQmJjI9PT1yLnNpZGU/KHIuc2lkZT0xLHIubmVlZHNVcGRhdGU9ITAsZy5yZW5kZXJCdWZmZXJEaXJlY3QobixlLGkscix0LG8pLHIuc2lkZT0wLHIubmVlZHNVcGRhdGU9ITAsZy5yZW5kZXJCdWZmZXJEaXJlY3QobixlLGkscix0LG8pLHIuc2lkZT0yKTpnLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyksdC5vbkFmdGVyUmVuZGVyKGcsZSxuLGkscixvKX1mdW5jdGlvbiBUdCh0LGUsbil7ITAhPT1lLmlzU2NlbmUmJihlPUYpO2NvbnN0IGk9cS5nZXQodCkscj1wLnN0YXRlLmxpZ2h0cyxvPXIuc3RhdGUudmVyc2lvbixhPVEuZ2V0UGFyYW1ldGVycyh0LHIuc3RhdGUscC5zdGF0ZS5zaGFkb3dzQXJyYXksZSxuKSxzPVEuZ2V0UHJvZ3JhbUNhY2hlS2V5KGEpO2xldCBsPWkucHJvZ3JhbXM7aS5lbnZpcm9ubWVudD10LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/ZS5lbnZpcm9ubWVudDpudWxsLGkuZm9nPWUuZm9nLGkuZW52TWFwPSh0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/JDpYKS5nZXQodC5lbnZNYXB8fGkuZW52aXJvbm1lbnQpLHZvaWQgMD09PWwmJih0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLF90KSxsPW5ldyBNYXAsaS5wcm9ncmFtcz1sKTtsZXQgYz1sLmdldChzKTtpZih2b2lkIDAhPT1jKXtpZihpLmN1cnJlbnRQcm9ncmFtPT09YyYmaS5saWdodHNTdGF0ZVZlcnNpb249PT1vKXJldHVybiBDdCh0LGEpLGN9ZWxzZSBhLnVuaWZvcm1zPVEuZ2V0VW5pZm9ybXModCksdC5vbkJ1aWxkKG4sYSxnKSx0Lm9uQmVmb3JlQ29tcGlsZShhLGcpLGM9US5hY3F1aXJlUHJvZ3JhbShhLHMpLGwuc2V0KHMsYyksaS51bmlmb3Jtcz1hLnVuaWZvcm1zO2NvbnN0IHU9aS51bmlmb3JtczsodC5pc1NoYWRlck1hdGVyaWFsfHx0LmlzUmF3U2hhZGVyTWF0ZXJpYWwpJiYhMCE9PXQuY2xpcHBpbmd8fCh1LmNsaXBwaW5nUGxhbmVzPWl0LnVuaWZvcm0pLEN0KHQsYSksaS5uZWVkc0xpZ2h0cz0oZnVuY3Rpb24gaCh0KXtyZXR1cm4gdC5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fHQuaXNNZXNoVG9vbk1hdGVyaWFsfHx0LmlzTWVzaFBob25nTWF0ZXJpYWx8fHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8dC5pc1NoYWRvd01hdGVyaWFsfHx0LmlzU2hhZGVyTWF0ZXJpYWwmJiEwPT09dC5saWdodHN9KSh0KSxpLmxpZ2h0c1N0YXRlVmVyc2lvbj1vLGkubmVlZHNMaWdodHMmJih1LmFtYmllbnRMaWdodENvbG9yLnZhbHVlPXIuc3RhdGUuYW1iaWVudCx1LmxpZ2h0UHJvYmUudmFsdWU9ci5zdGF0ZS5wcm9iZSx1LmRpcmVjdGlvbmFsTGlnaHRzLnZhbHVlPXIuc3RhdGUuZGlyZWN0aW9uYWwsdS5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93LHUuc3BvdExpZ2h0cy52YWx1ZT1yLnN0YXRlLnNwb3QsdS5zcG90TGlnaHRTaGFkb3dzLnZhbHVlPXIuc3RhdGUuc3BvdFNoYWRvdyx1LnJlY3RBcmVhTGlnaHRzLnZhbHVlPXIuc3RhdGUucmVjdEFyZWEsdS5sdGNfMS52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhTFRDMSx1Lmx0Y18yLnZhbHVlPXIuc3RhdGUucmVjdEFyZWFMVEMyLHUucG9pbnRMaWdodHMudmFsdWU9ci5zdGF0ZS5wb2ludCx1LnBvaW50TGlnaHRTaGFkb3dzLnZhbHVlPXIuc3RhdGUucG9pbnRTaGFkb3csdS5oZW1pc3BoZXJlTGlnaHRzLnZhbHVlPXIuc3RhdGUuaGVtaSx1LmRpcmVjdGlvbmFsU2hhZG93TWFwLnZhbHVlPXIuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXAsdS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LHUuc3BvdFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3dNYXAsdS5zcG90U2hhZG93TWF0cml4LnZhbHVlPXIuc3RhdGUuc3BvdFNoYWRvd01hdHJpeCx1LnBvaW50U2hhZG93TWFwLnZhbHVlPXIuc3RhdGUucG9pbnRTaGFkb3dNYXAsdS5wb2ludFNoYWRvd01hdHJpeC52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93TWF0cml4KTtjb25zdCBkPWMuZ2V0VW5pZm9ybXMoKSxmPXc4dC5zZXFXaXRoVmFsdWUoZC5zZXEsdSk7cmV0dXJuIGkuY3VycmVudFByb2dyYW09YyxpLnVuaWZvcm1zTGlzdD1mLGN9ZnVuY3Rpb24gQ3QodCxlKXtjb25zdCBuPXEuZ2V0KHQpO24ub3V0cHV0RW5jb2Rpbmc9ZS5vdXRwdXRFbmNvZGluZyxuLmluc3RhbmNpbmc9ZS5pbnN0YW5jaW5nLG4uc2tpbm5pbmc9ZS5za2lubmluZyxuLm1vcnBoVGFyZ2V0cz1lLm1vcnBoVGFyZ2V0cyxuLm1vcnBoTm9ybWFscz1lLm1vcnBoTm9ybWFscyxuLm1vcnBoVGFyZ2V0c0NvdW50PWUubW9ycGhUYXJnZXRzQ291bnQsbi5udW1DbGlwcGluZ1BsYW5lcz1lLm51bUNsaXBwaW5nUGxhbmVzLG4ubnVtSW50ZXJzZWN0aW9uPWUubnVtQ2xpcEludGVyc2VjdGlvbixuLnZlcnRleEFscGhhcz1lLnZlcnRleEFscGhhcyxuLnZlcnRleFRhbmdlbnRzPWUudmVydGV4VGFuZ2VudHMsbi50b25lTWFwcGluZz1lLnRvbmVNYXBwaW5nfXh0LnNldEFuaW1hdGlvbkxvb3AoKGZ1bmN0aW9uIEF0KHQpe3l0JiZ5dCh0KX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmeHQuc2V0Q29udGV4dCh3aW5kb3cpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbih0KXt5dD10LGZ0LnNldEFuaW1hdGlvbkxvb3AodCksbnVsbD09PXQ/eHQuc3RvcCgpOnh0LnN0YXJ0KCl9LGZ0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsdnQpLGZ0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLGJ0KSx0aGlzLnJlbmRlcj1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUmJiEwIT09ZS5pc0NhbWVyYSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcjogY2FtZXJhIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5DYW1lcmEuIik7aWYoITA9PT1fKXJldHVybjshMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGVNYXRyaXhXb3JsZCgpLG51bGw9PT1lLnBhcmVudCYmZS51cGRhdGVNYXRyaXhXb3JsZCgpLCEwPT09ZnQuZW5hYmxlZCYmITA9PT1mdC5pc1ByZXNlbnRpbmcmJighMD09PWZ0LmNhbWVyYUF1dG9VcGRhdGUmJmZ0LnVwZGF0ZUNhbWVyYShlKSxlPWZ0LmdldENhbWVyYSgpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkJlZm9yZVJlbmRlcihnLHQsZSxiKSxwPW50LmdldCh0LG0ubGVuZ3RoKSxwLmluaXQoKSxtLnB1c2gocCksQi5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksUi5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChCKSx6PXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQsTz1pdC5pbml0KHRoaXMuY2xpcHBpbmdQbGFuZXMseixlKSxkPWV0LmdldCh0LGYubGVuZ3RoKSxkLmluaXQoKSxmLnB1c2goZCksd3QodCxlLDAsZy5zb3J0T2JqZWN0cyksZC5maW5pc2goKSwhMD09PWcuc29ydE9iamVjdHMmJmQuc29ydChrLFApLCEwPT09TyYmaXQuYmVnaW5TaGFkb3dzKCk7aWYocnQucmVuZGVyKHAuc3RhdGUuc2hhZG93c0FycmF5LHQsZSksITA9PT1PJiZpdC5lbmRTaGFkb3dzKCksITA9PT10aGlzLmluZm8uYXV0b1Jlc2V0JiZ0aGlzLmluZm8ucmVzZXQoKSxvdC5yZW5kZXIoZCx0KSxwLnNldHVwTGlnaHRzKGcucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLGUuaXNBcnJheUNhbWVyYSl7Y29uc3Qgbj1lLmNhbWVyYXM7Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPW5bZV07U3QoZCx0LGksaS52aWV3cG9ydCl9fWVsc2UgU3QoZCx0LGUpO251bGwhPT1iJiYoWS51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldChiKSxZLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcChiKSksITA9PT10LmlzU2NlbmUmJnQub25BZnRlclJlbmRlcihnLHQsZSksRy5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLEcuYnVmZmVycy5kZXB0aC5zZXRNYXNrKCEwKSxHLmJ1ZmZlcnMuY29sb3Iuc2V0TWFzayghMCksRy5zZXRQb2x5Z29uT2Zmc2V0KCExKSx1dC5yZXNldERlZmF1bHRTdGF0ZSgpLHg9LTEsdz1udWxsLG0ucG9wKCkscD1tLmxlbmd0aD4wP21bbS5sZW5ndGgtMV06bnVsbCxmLnBvcCgpLGQ9Zi5sZW5ndGg+MD9mW2YubGVuZ3RoLTFdOm51bGx9LHRoaXMuZ2V0QWN0aXZlQ3ViZUZhY2U9ZnVuY3Rpb24oKXtyZXR1cm4geX0sdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiB2fSx0aGlzLmdldFJlbmRlclRhcmdldD1mdW5jdGlvbigpe3JldHVybiBifSx0aGlzLnNldFJlbmRlclRhcmdldFRleHR1cmVzPWZ1bmN0aW9uKHQsZSxuKXtxLmdldCh0LnRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlPWUscS5nZXQodC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlPW47Y29uc3QgaT1xLmdldCh0KTtpLl9faGFzRXh0ZXJuYWxUZXh0dXJlcz0hMCxpLl9faGFzRXh0ZXJuYWxUZXh0dXJlcyYmKGkuX19hdXRvQWxsb2NhdGVEZXB0aEJ1ZmZlcj12b2lkIDA9PT1uLGkuX19hdXRvQWxsb2NhdGVEZXB0aEJ1ZmZlcnx8dC51c2VSZW5kZXJUb1RleHR1cmUmJihjb25zb2xlLndhcm4oInJlbmRlci10by10ZXh0dXJlIGV4dGVuc2lvbiB3YXMgZGlzYWJsZWQgYmVjYXVzZSBhbiBleHRlcm5hbCB0ZXh0dXJlIHdhcyBwcm92aWRlZCIpLHQudXNlUmVuZGVyVG9UZXh0dXJlPSExLHQudXNlUmVuZGVyYnVmZmVyPSEwKSl9LHRoaXMuc2V0UmVuZGVyVGFyZ2V0RnJhbWVidWZmZXI9ZnVuY3Rpb24odCxlKXtjb25zdCBuPXEuZ2V0KHQpO24uX193ZWJnbEZyYW1lYnVmZmVyPWUsbi5fX3VzZURlZmF1bHRGcmFtZWJ1ZmZlcj12b2lkIDA9PT1lfSx0aGlzLnNldFJlbmRlclRhcmdldD1mdW5jdGlvbih0LGU9MCxuPTApe2I9dCx5PWUsdj1uO2xldCBpPSEwO2lmKHQpe2NvbnN0IGU9cS5nZXQodCk7dm9pZCAwIT09ZS5fX3VzZURlZmF1bHRGcmFtZWJ1ZmZlcj8oRy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCksaT0hMSk6dm9pZCAwPT09ZS5fX3dlYmdsRnJhbWVidWZmZXI/WS5zZXR1cFJlbmRlclRhcmdldCh0KTplLl9faGFzRXh0ZXJuYWxUZXh0dXJlcyYmWS5yZWJpbmRUZXh0dXJlcyh0LHEuZ2V0KHQudGV4dHVyZSkuX193ZWJnbFRleHR1cmUscS5nZXQodC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlKX1sZXQgcj1udWxsLG89ITEsYT0hMTtpZih0KXtjb25zdCBuPXQudGV4dHVyZTsobi5pc0RhdGFUZXh0dXJlM0R8fG4uaXNEYXRhVGV4dHVyZTJEQXJyYXkpJiYoYT0hMCk7Y29uc3QgaT1xLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXI7dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8ocj1pW2VdLG89ITApOnI9dC51c2VSZW5kZXJidWZmZXI/cS5nZXQodCkuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyOmksUy5jb3B5KHQudmlld3BvcnQpLE0uY29weSh0LnNjaXNzb3IpLEU9dC5zY2lzc29yVGVzdH1lbHNlIFMuY29weShMKS5tdWx0aXBseVNjYWxhcihBKS5mbG9vcigpLE0uY29weShJKS5tdWx0aXBseVNjYWxhcihBKS5mbG9vcigpLEU9TjtpZihHLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxyKSYmai5kcmF3QnVmZmVycyYmaSYmRy5kcmF3QnVmZmVycyh0LHIpLEcudmlld3BvcnQoUyksRy5zY2lzc29yKE0pLEcuc2V0U2Npc3NvclRlc3QoRSksbyl7Y29uc3QgaT1xLmdldCh0LnRleHR1cmUpO2h0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM0MDY5K2UsaS5fX3dlYmdsVGV4dHVyZSxuKX1lbHNlIGlmKGEpe2NvbnN0IGk9cS5nZXQodC50ZXh0dXJlKTtodC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcigzNjE2MCwzNjA2NCxpLl9fd2ViZ2xUZXh0dXJlLG58fDAsZXx8MCl9eD0tMX0sdGhpcy5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzPWZ1bmN0aW9uKHQsZSxuLGkscixvLGEpe2lmKCF0fHwhdC5pc1dlYkdMUmVuZGVyVGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBUSFJFRS5XZWJHTFJlbmRlclRhcmdldC4iKTtsZXQgcz1xLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXI7aWYodC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmdm9pZCAwIT09YSYmKHM9c1thXSkscyl7Ry5iaW5kRnJhbWVidWZmZXIoMzYxNjAscyk7dHJ5e2NvbnN0IGE9dC50ZXh0dXJlLHM9YS5mb3JtYXQsbD1hLnR5cGU7aWYocyE9PXcydCYmY3QuY29udmVydChzKSE9PWh0LmdldFBhcmFtZXRlcigzNTczOSkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFJHQkEgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBmb3JtYXQuIik7Y29uc3QgYz1sPT09YjJ0JiYoVS5oYXMoIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpfHxqLmlzV2ViR0wyJiZVLmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKTtpZighKGw9PT1nMnR8fGN0LmNvbnZlcnQobCk9PT1odC5nZXRQYXJhbWV0ZXIoMzU3MzgpfHxsPT09djJ0JiYoai5pc1dlYkdMMnx8VS5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0Iil8fFUuaGFzKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiKSl8fGMpKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBpbiBVbnNpZ25lZEJ5dGVUeXBlIG9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHlwZS4iKTszNjA1Mz09PWh0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoMzYxNjApP2U+PTAmJmU8PXQud2lkdGgtaSYmbj49MCYmbjw9dC5oZWlnaHQtciYmaHQucmVhZFBpeGVscyhlLG4saSxyLGN0LmNvbnZlcnQocyksY3QuY29udmVydChsKSxvKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlYWRQaXhlbHMgZnJvbSByZW5kZXJUYXJnZXQgZmFpbGVkLiBGcmFtZWJ1ZmZlciBub3QgY29tcGxldGUuIil9ZmluYWxseXtjb25zdCB0PW51bGwhPT1iP3EuZ2V0KGIpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjpudWxsO0cuYmluZEZyYW1lYnVmZmVyKDM2MTYwLHQpfX19LHRoaXMuY29weUZyYW1lYnVmZmVyVG9UZXh0dXJlPWZ1bmN0aW9uKHQsZSxuPTApe2lmKCEwIT09ZS5pc0ZyYW1lYnVmZmVyVGV4dHVyZSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBjb3B5RnJhbWVidWZmZXJUb1RleHR1cmUoKSBjYW4gb25seSBiZSB1c2VkIHdpdGggRnJhbWVidWZmZXJUZXh0dXJlLiIpO2NvbnN0IGk9TWF0aC5wb3coMiwtbikscj1NYXRoLmZsb29yKGUuaW1hZ2Uud2lkdGgqaSksbz1NYXRoLmZsb29yKGUuaW1hZ2UuaGVpZ2h0KmkpO1kuc2V0VGV4dHVyZTJEKGUsMCksaHQuY29weVRleFN1YkltYWdlMkQoMzU1MyxuLDAsMCx0LngsdC55LHIsbyksRy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuY29weVRleHR1cmVUb1RleHR1cmU9ZnVuY3Rpb24odCxlLG4saT0wKXtjb25zdCByPWUuaW1hZ2Uud2lkdGgsbz1lLmltYWdlLmhlaWdodCxhPWN0LmNvbnZlcnQobi5mb3JtYXQpLHM9Y3QuY29udmVydChuLnR5cGUpO1kuc2V0VGV4dHVyZTJEKG4sMCksaHQucGl4ZWxTdG9yZWkoMzc0NDAsbi5mbGlwWSksaHQucGl4ZWxTdG9yZWkoMzc0NDEsbi5wcmVtdWx0aXBseUFscGhhKSxodC5waXhlbFN0b3JlaSgzMzE3LG4udW5wYWNrQWxpZ25tZW50KSxlLmlzRGF0YVRleHR1cmU/aHQudGV4U3ViSW1hZ2UyRCgzNTUzLGksdC54LHQueSxyLG8sYSxzLGUuaW1hZ2UuZGF0YSk6ZS5pc0NvbXByZXNzZWRUZXh0dXJlP2h0LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsaSx0LngsdC55LGUubWlwbWFwc1swXS53aWR0aCxlLm1pcG1hcHNbMF0uaGVpZ2h0LGEsZS5taXBtYXBzWzBdLmRhdGEpOmh0LnRleFN1YkltYWdlMkQoMzU1MyxpLHQueCx0LnksYSxzLGUuaW1hZ2UpLDA9PT1pJiZuLmdlbmVyYXRlTWlwbWFwcyYmaHQuZ2VuZXJhdGVNaXBtYXAoMzU1MyksRy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuY29weVRleHR1cmVUb1RleHR1cmUzRD1mdW5jdGlvbih0LGUsbixpLHI9MCl7aWYoZy5pc1dlYkdMMVJlbmRlcmVyKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpO2NvbnN0IG89dC5tYXgueC10Lm1pbi54KzEsYT10Lm1heC55LXQubWluLnkrMSxzPXQubWF4LnotdC5taW4ueisxLGw9Y3QuY29udmVydChpLmZvcm1hdCksYz1jdC5jb252ZXJ0KGkudHlwZSk7bGV0IHU7aWYoaS5pc0RhdGFUZXh0dXJlM0QpWS5zZXRUZXh0dXJlM0QoaSwwKSx1PTMyODc5O2Vsc2V7aWYoIWkuaXNEYXRhVGV4dHVyZTJEQXJyYXkpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IG9ubHkgc3VwcG9ydHMgVEhSRUUuRGF0YVRleHR1cmUzRCBhbmQgVEhSRUUuRGF0YVRleHR1cmUyREFycmF5LiIpO1kuc2V0VGV4dHVyZTJEQXJyYXkoaSwwKSx1PTM1ODY2fWh0LnBpeGVsU3RvcmVpKDM3NDQwLGkuZmxpcFkpLGh0LnBpeGVsU3RvcmVpKDM3NDQxLGkucHJlbXVsdGlwbHlBbHBoYSksaHQucGl4ZWxTdG9yZWkoMzMxNyxpLnVucGFja0FsaWdubWVudCk7Y29uc3QgaD1odC5nZXRQYXJhbWV0ZXIoMzMxNCksZD1odC5nZXRQYXJhbWV0ZXIoMzI4NzgpLHA9aHQuZ2V0UGFyYW1ldGVyKDMzMTYpLGY9aHQuZ2V0UGFyYW1ldGVyKDMzMTUpLG09aHQuZ2V0UGFyYW1ldGVyKDMyODc3KSxfPW4uaXNDb21wcmVzc2VkVGV4dHVyZT9uLm1pcG1hcHNbMF06bi5pbWFnZTtodC5waXhlbFN0b3JlaSgzMzE0LF8ud2lkdGgpLGh0LnBpeGVsU3RvcmVpKDMyODc4LF8uaGVpZ2h0KSxodC5waXhlbFN0b3JlaSgzMzE2LHQubWluLngpLGh0LnBpeGVsU3RvcmVpKDMzMTUsdC5taW4ueSksaHQucGl4ZWxTdG9yZWkoMzI4NzcsdC5taW4ueiksbi5pc0RhdGFUZXh0dXJlfHxuLmlzRGF0YVRleHR1cmUzRD9odC50ZXhTdWJJbWFnZTNEKHUscixlLngsZS55LGUueixvLGEscyxsLGMsXy5kYXRhKTpuLmlzQ29tcHJlc3NlZFRleHR1cmU/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiB1bnRlc3RlZCBzdXBwb3J0IGZvciBjb21wcmVzc2VkIHNyY1RleHR1cmUuIiksaHQuY29tcHJlc3NlZFRleFN1YkltYWdlM0QodSxyLGUueCxlLnksZS56LG8sYSxzLGwsXy5kYXRhKSk6aHQudGV4U3ViSW1hZ2UzRCh1LHIsZS54LGUueSxlLnosbyxhLHMsbCxjLF8pLGh0LnBpeGVsU3RvcmVpKDMzMTQsaCksaHQucGl4ZWxTdG9yZWkoMzI4NzgsZCksaHQucGl4ZWxTdG9yZWkoMzMxNixwKSxodC5waXhlbFN0b3JlaSgzMzE1LGYpLGh0LnBpeGVsU3RvcmVpKDMyODc3LG0pLDA9PT1yJiZpLmdlbmVyYXRlTWlwbWFwcyYmaHQuZ2VuZXJhdGVNaXBtYXAodSksRy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuaW5pdFRleHR1cmU9ZnVuY3Rpb24odCl7WS5zZXRUZXh0dXJlMkQodCwwKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5yZXNldFN0YXRlPWZ1bmN0aW9uKCl7eT0wLHY9MCxiPW51bGwsRy5yZXNldCgpLHV0LnJlc2V0KCl9LCJ1bmRlZmluZWQiIT10eXBlb2YgX19USFJFRV9ERVZUT09MU19fJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm9ic2VydmUiLHtkZXRhaWw6dGhpc30pKX1tN3QucHJvdG90eXBlLmlzV2ViR0xSZW5kZXJlcj0hMDtjbGFzcyBnN3QgZXh0ZW5kcyBtN3R7fWc3dC5wcm90b3R5cGUuaXNXZWJHTDFSZW5kZXJlcj0hMDtjbGFzcyBfN3R7Y29uc3RydWN0b3IodCxlPTI1ZS01KXt0aGlzLm5hbWU9IiIsdGhpcy5jb2xvcj1uZXcgJDV0KHQpLHRoaXMuZGVuc2l0eT1lfWNsb25lKCl7cmV0dXJuIG5ldyBfN3QodGhpcy5jb2xvcix0aGlzLmRlbnNpdHkpfXRvSlNPTigpe3JldHVybnt0eXBlOiJGb2dFeHAyIixjb2xvcjp0aGlzLmNvbG9yLmdldEhleCgpLGRlbnNpdHk6dGhpcy5kZW5zaXR5fX19Xzd0LnByb3RvdHlwZS5pc0ZvZ0V4cDI9ITA7Y2xhc3MgeTd0e2NvbnN0cnVjdG9yKHQsZT0xLG49MWUzKXt0aGlzLm5hbWU9IiIsdGhpcy5jb2xvcj1uZXcgJDV0KHQpLHRoaXMubmVhcj1lLHRoaXMuZmFyPW59Y2xvbmUoKXtyZXR1cm4gbmV3IHk3dCh0aGlzLmNvbG9yLHRoaXMubmVhcix0aGlzLmZhcil9dG9KU09OKCl7cmV0dXJue3R5cGU6IkZvZyIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxuZWFyOnRoaXMubmVhcixmYXI6dGhpcy5mYXJ9fX15N3QucHJvdG90eXBlLmlzRm9nPSEwO2NsYXNzIHY3dCBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJTY2VuZSIsdGhpcy5iYWNrZ3JvdW5kPW51bGwsdGhpcy5lbnZpcm9ubWVudD1udWxsLHRoaXMuZm9nPW51bGwsdGhpcy5vdmVycmlkZU1hdGVyaWFsPW51bGwsdGhpcy5hdXRvVXBkYXRlPSEwLCJ1bmRlZmluZWQiIT10eXBlb2YgX19USFJFRV9ERVZUT09MU19fJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm9ic2VydmUiLHtkZXRhaWw6dGhpc30pKX1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSxudWxsIT09dC5iYWNrZ3JvdW5kJiYodGhpcy5iYWNrZ3JvdW5kPXQuYmFja2dyb3VuZC5jbG9uZSgpKSxudWxsIT09dC5lbnZpcm9ubWVudCYmKHRoaXMuZW52aXJvbm1lbnQ9dC5lbnZpcm9ubWVudC5jbG9uZSgpKSxudWxsIT09dC5mb2cmJih0aGlzLmZvZz10LmZvZy5jbG9uZSgpKSxudWxsIT09dC5vdmVycmlkZU1hdGVyaWFsJiYodGhpcy5vdmVycmlkZU1hdGVyaWFsPXQub3ZlcnJpZGVNYXRlcmlhbC5jbG9uZSgpKSx0aGlzLmF1dG9VcGRhdGU9dC5hdXRvVXBkYXRlLHRoaXMubWF0cml4QXV0b1VwZGF0ZT10Lm1hdHJpeEF1dG9VcGRhdGUsdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIG51bGwhPT10aGlzLmZvZyYmKGUub2JqZWN0LmZvZz10aGlzLmZvZy50b0pTT04oKSksZX19djd0LnByb3RvdHlwZS5pc1NjZW5lPSEwO2NsYXNzIGI3dHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuYXJyYXk9dCx0aGlzLnN0cmlkZT1lLHRoaXMuY291bnQ9dm9pZCAwIT09dD90Lmxlbmd0aC9lOjAsdGhpcy51c2FnZT1zNXQsdGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9LHRoaXMudmVyc2lvbj0wLHRoaXMudXVpZD1nNXQoKX1vblVwbG9hZENhbGxiYWNrKCl7fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfXNldFVzYWdlKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLnN0cmlkZT10LnN0cmlkZSx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc31jb3B5QXQodCxlLG4pe3QqPXRoaXMuc3RyaWRlLG4qPWUuc3RyaWRlO2ZvcihsZXQgaT0wLHI9dGhpcy5zdHJpZGU7aTxyO2krKyl0aGlzLmFycmF5W3QraV09ZS5hcnJheVtuK2ldO3JldHVybiB0aGlzfXNldCh0LGU9MCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQsZSksdGhpc31jbG9uZSh0KXt2b2lkIDA9PT10LmFycmF5QnVmZmVycyYmKHQuYXJyYXlCdWZmZXJzPXt9KSx2b2lkIDA9PT10aGlzLmFycmF5LmJ1ZmZlci5fdXVpZCYmKHRoaXMuYXJyYXkuYnVmZmVyLl91dWlkPWc1dCgpKSx2b2lkIDA9PT10LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF0mJih0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF09dGhpcy5hcnJheS5zbGljZSgwKS5idWZmZXIpO2NvbnN0IGU9bmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdKSxuPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGUsdGhpcy5zdHJpZGUpO3JldHVybiBuLnNldFVzYWdlKHRoaXMudXNhZ2UpLG59b25VcGxvYWQodCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9dG9KU09OKHQpe3JldHVybiB2b2lkIDA9PT10LmFycmF5QnVmZmVycyYmKHQuYXJyYXlCdWZmZXJzPXt9KSx2b2lkIDA9PT10aGlzLmFycmF5LmJ1ZmZlci5fdXVpZCYmKHRoaXMuYXJyYXkuYnVmZmVyLl91dWlkPWc1dCgpKSx2b2lkIDA9PT10LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF0mJih0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF09QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobmV3IFVpbnQzMkFycmF5KHRoaXMuYXJyYXkuYnVmZmVyKSkpLHt1dWlkOnRoaXMudXVpZCxidWZmZXI6dGhpcy5hcnJheS5idWZmZXIuX3V1aWQsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsc3RyaWRlOnRoaXMuc3RyaWRlfX19Yjd0LnByb3RvdHlwZS5pc0ludGVybGVhdmVkQnVmZmVyPSEwO2NvbnN0IHg3dD1uZXcgYTN0O2NsYXNzIHc3dHtjb25zdHJ1Y3Rvcih0LGUsbixpPSExKXt0aGlzLm5hbWU9IiIsdGhpcy5kYXRhPXQsdGhpcy5pdGVtU2l6ZT1lLHRoaXMub2Zmc2V0PW4sdGhpcy5ub3JtYWxpemVkPSEwPT09aX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5kYXRhLmNvdW50fWdldCBhcnJheSgpe3JldHVybiB0aGlzLmRhdGEuYXJyYXl9c2V0IG5lZWRzVXBkYXRlKHQpe3RoaXMuZGF0YS5uZWVkc1VwZGF0ZT10fWFwcGx5TWF0cml4NCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuZGF0YS5jb3VudDtlPG47ZSsrKXg3dC54PXRoaXMuZ2V0WChlKSx4N3QueT10aGlzLmdldFkoZSkseDd0Lno9dGhpcy5nZXRaKGUpLHg3dC5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRYWVooZSx4N3QueCx4N3QueSx4N3Queik7cmV0dXJuIHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspeDd0Lng9dGhpcy5nZXRYKGUpLHg3dC55PXRoaXMuZ2V0WShlKSx4N3Quej10aGlzLmdldFooZSkseDd0LmFwcGx5Tm9ybWFsTWF0cml4KHQpLHRoaXMuc2V0WFlaKGUseDd0LngseDd0LnkseDd0LnopO3JldHVybiB0aGlzfXRyYW5zZm9ybURpcmVjdGlvbih0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKyl4N3QueD10aGlzLmdldFgoZSkseDd0Lnk9dGhpcy5nZXRZKGUpLHg3dC56PXRoaXMuZ2V0WihlKSx4N3QudHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXMuc2V0WFlaKGUseDd0LngseDd0LnkseDd0LnopO3JldHVybiB0aGlzfXNldFgodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldF09ZSx0aGlzfXNldFkodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsxXT1lLHRoaXN9c2V0Wih0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdPWUsdGhpc31zZXRXKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrM109ZSx0aGlzfWdldFgodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdfWdldFkodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV19Z2V0Wih0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXX1nZXRXKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdfXNldFhZKHQsZSxuKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXN9c2V0WFlaKHQsZSxuLGkpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbKHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KSswXT1lLHRoaXMuZGF0YS5hcnJheVt0KzFdPW4sdGhpcy5kYXRhLmFycmF5W3QrMl09aSx0aGlzfXNldFhZWlcodCxlLG4saSxyKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPWksdGhpcy5kYXRhLmFycmF5W3QrM109cix0aGlzfWNsb25lKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS5jbG9uZSgpOiBDbG9uaW5nIGFuIGludGVybGF2ZWQgYnVmZmVyIGF0dHJpYnV0ZSB3aWxsIGRlaW50ZXJsZWF2ZSBidWZmZXIgZGF0YS4iKTtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5jb3VudDtlKyspe2NvbnN0IG49ZSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O2ZvcihsZXQgZT0wO2U8dGhpcy5pdGVtU2l6ZTtlKyspdC5wdXNoKHRoaXMuZGF0YS5hcnJheVtuK2VdKX1yZXR1cm4gbmV3IEU0dChuZXcgdGhpcy5hcnJheS5jb25zdHJ1Y3Rvcih0KSx0aGlzLml0ZW1TaXplLHRoaXMubm9ybWFsaXplZCl9cmV0dXJuIHZvaWQgMD09PXQuaW50ZXJsZWF2ZWRCdWZmZXJzJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnM9e30pLHZvaWQgMD09PXQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXT10aGlzLmRhdGEuY2xvbmUodCkpLG5ldyB3N3QodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdLHRoaXMuaXRlbVNpemUsdGhpcy5vZmZzZXQsdGhpcy5ub3JtYWxpemVkKX10b0pTT04odCl7aWYodm9pZCAwPT09dCl7Y29uc29sZS5sb2coIlRIUkVFLkludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlLnRvSlNPTigpOiBTZXJpYWxpemluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY291bnQ7ZSsrKXtjb25zdCBuPWUqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IGU9MDtlPHRoaXMuaXRlbVNpemU7ZSsrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbbitlXSl9cmV0dXJue2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6dCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19cmV0dXJuIHZvaWQgMD09PXQuaW50ZXJsZWF2ZWRCdWZmZXJzJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnM9e30pLHZvaWQgMD09PXQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXT10aGlzLmRhdGEudG9KU09OKHQpKSx7aXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZTohMCxpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLGRhdGE6dGhpcy5kYXRhLnV1aWQsb2Zmc2V0OnRoaXMub2Zmc2V0LG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfX19dzd0LnByb3RvdHlwZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlPSEwO2NsYXNzIFM3dCBleHRlbmRzIHg0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU3ByaXRlTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3ICQ1dCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5yb3RhdGlvbj0wLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMudHJhbnNwYXJlbnQ9ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLnNpemVBdHRlbnVhdGlvbj10LnNpemVBdHRlbnVhdGlvbix0aGlzfX1sZXQgTTd0O1M3dC5wcm90b3R5cGUuaXNTcHJpdGVNYXRlcmlhbD0hMDtjb25zdCBFN3Q9bmV3IGEzdCxUN3Q9bmV3IGEzdCxDN3Q9bmV3IGEzdCxBN3Q9bmV3IEQ1dCxrN3Q9bmV3IEQ1dCxQN3Q9bmV3IEQzdCxMN3Q9bmV3IGEzdCxJN3Q9bmV3IGEzdCxON3Q9bmV3IGEzdCxSN3Q9bmV3IEQ1dCxPN3Q9bmV3IEQ1dCx6N3Q9bmV3IEQ1dDtjbGFzcyBEN3QgZXh0ZW5kcyBsNHR7Y29uc3RydWN0b3IodCl7aWYoc3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZSIsdm9pZCAwPT09TTd0KXtNN3Q9bmV3IGo0dDtjb25zdCB0PW5ldyBGbG9hdDMyQXJyYXkoWy0uNSwtLjUsMCwwLDAsLjUsLS41LDAsMSwwLC41LC41LDAsMSwxLC0uNSwuNSwwLDAsMV0pLGU9bmV3IGI3dCh0LDUpO003dC5zZXRJbmRleChbMCwxLDIsMCwyLDNdKSxNN3Quc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHc3dChlLDMsMCwhMSkpLE03dC5zZXRBdHRyaWJ1dGUoInV2IixuZXcgdzd0KGUsMiwzLCExKSl9dGhpcy5nZW9tZXRyeT1NN3QsdGhpcy5tYXRlcmlhbD12b2lkIDAhPT10P3Q6bmV3IFM3dCx0aGlzLmNlbnRlcj1uZXcgRDV0KC41LC41KX1yYXljYXN0KHQsZSl7bnVsbD09PXQuY2FtZXJhJiZjb25zb2xlLmVycm9yKCdUSFJFRS5TcHJpdGU6ICJSYXljYXN0ZXIuY2FtZXJhIiBuZWVkcyB0byBiZSBzZXQgaW4gb3JkZXIgdG8gcmF5Y2FzdCBhZ2FpbnN0IHNwcml0ZXMuJyksVDd0LnNldEZyb21NYXRyaXhTY2FsZSh0aGlzLm1hdHJpeFdvcmxkKSxQN3QuY29weSh0LmNhbWVyYS5tYXRyaXhXb3JsZCksdGhpcy5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyh0LmNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UsdGhpcy5tYXRyaXhXb3JsZCksQzd0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1vZGVsVmlld01hdHJpeCksdC5jYW1lcmEuaXNQZXJzcGVjdGl2ZUNhbWVyYSYmITE9PT10aGlzLm1hdGVyaWFsLnNpemVBdHRlbnVhdGlvbiYmVDd0Lm11bHRpcGx5U2NhbGFyKC1DN3Queik7Y29uc3Qgbj10aGlzLm1hdGVyaWFsLnJvdGF0aW9uO2xldCBpLHI7MCE9PW4mJihyPU1hdGguY29zKG4pLGk9TWF0aC5zaW4obikpO2NvbnN0IG89dGhpcy5jZW50ZXI7Qjd0KEw3dC5zZXQoLS41LC0uNSwwKSxDN3QsbyxUN3QsaSxyKSxCN3QoSTd0LnNldCguNSwtLjUsMCksQzd0LG8sVDd0LGksciksQjd0KE43dC5zZXQoLjUsLjUsMCksQzd0LG8sVDd0LGksciksUjd0LnNldCgwLDApLE83dC5zZXQoMSwwKSx6N3Quc2V0KDEsMSk7bGV0IGE9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoTDd0LEk3dCxON3QsITEsRTd0KTtpZihudWxsPT09YSYmKEI3dChJN3Quc2V0KC0uNSwuNSwwKSxDN3QsbyxUN3QsaSxyKSxPN3Quc2V0KDAsMSksYT10LnJheS5pbnRlcnNlY3RUcmlhbmdsZShMN3QsTjd0LEk3dCwhMSxFN3QpLG51bGw9PT1hKSlyZXR1cm47Y29uc3Qgcz10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhFN3QpO3M8dC5uZWFyfHxzPnQuZmFyfHxlLnB1c2goe2Rpc3RhbmNlOnMscG9pbnQ6RTd0LmNsb25lKCksdXY6djR0LmdldFVWKEU3dCxMN3QsSTd0LE43dCxSN3QsTzd0LHo3dCxuZXcgRDV0KSxmYWNlOm51bGwsb2JqZWN0OnRoaXN9KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHZvaWQgMCE9PXQuY2VudGVyJiZ0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpc319ZnVuY3Rpb24gQjd0KHQsZSxuLGkscixvKXtBN3Quc3ViVmVjdG9ycyh0LG4pLmFkZFNjYWxhciguNSkubXVsdGlwbHkoaSksdm9pZCAwIT09cj8oazd0Lng9bypBN3QueC1yKkE3dC55LGs3dC55PXIqQTd0LngrbypBN3QueSk6azd0LmNvcHkoQTd0KSx0LmNvcHkoZSksdC54Kz1rN3QueCx0LnkrPWs3dC55LHQuYXBwbHlNYXRyaXg0KFA3dCl9RDd0LnByb3RvdHlwZS5pc1Nwcml0ZT0hMDtjb25zdCBIN3Q9bmV3IGEzdCxGN3Q9bmV3IGEzdDtjbGFzcyBWN3QgZXh0ZW5kcyBsNHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX2N1cnJlbnRMZXZlbD0wLHRoaXMudHlwZT0iTE9EIixPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtsZXZlbHM6e2VudW1lcmFibGU6ITAsdmFsdWU6W119LGlzTE9EOnt2YWx1ZTohMH19KSx0aGlzLmF1dG9VcGRhdGU9ITB9Y29weSh0KXtzdXBlci5jb3B5KHQsITEpO2NvbnN0IGU9dC5sZXZlbHM7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWVbdF07dGhpcy5hZGRMZXZlbChuLm9iamVjdC5jbG9uZSgpLG4uZGlzdGFuY2UpfXJldHVybiB0aGlzLmF1dG9VcGRhdGU9dC5hdXRvVXBkYXRlLHRoaXN9YWRkTGV2ZWwodCxlPTApe2U9TWF0aC5hYnMoZSk7Y29uc3Qgbj10aGlzLmxldmVscztsZXQgaTtmb3IoaT0wO2k8bi5sZW5ndGgmJiEoZTxuW2ldLmRpc3RhbmNlKTtpKyspO3JldHVybiBuLnNwbGljZShpLDAse2Rpc3RhbmNlOmUsb2JqZWN0OnR9KSx0aGlzLmFkZCh0KSx0aGlzfWdldEN1cnJlbnRMZXZlbCgpe3JldHVybiB0aGlzLl9jdXJyZW50TGV2ZWx9Z2V0T2JqZWN0Rm9yRGlzdGFuY2UodCl7Y29uc3QgZT10aGlzLmxldmVscztpZihlLmxlbmd0aD4wKXtsZXQgbixpO2ZvcihuPTEsaT1lLmxlbmd0aDtuPGkmJiEodDxlW25dLmRpc3RhbmNlKTtuKyspO3JldHVybiBlW24tMV0ub2JqZWN0fXJldHVybiBudWxsfXJheWNhc3QodCxlKXtpZih0aGlzLmxldmVscy5sZW5ndGg+MCl7SDd0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTtjb25zdCBuPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKEg3dCk7dGhpcy5nZXRPYmplY3RGb3JEaXN0YW5jZShuKS5yYXljYXN0KHQsZSl9fXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMubGV2ZWxzO2lmKGUubGVuZ3RoPjEpe0g3dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksRjd0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTtjb25zdCBuPUg3dC5kaXN0YW5jZVRvKEY3dCkvdC56b29tO2xldCBpLHI7Zm9yKGVbMF0ub2JqZWN0LnZpc2libGU9ITAsaT0xLHI9ZS5sZW5ndGg7aTxyJiZuPj1lW2ldLmRpc3RhbmNlO2krKyllW2ktMV0ub2JqZWN0LnZpc2libGU9ITEsZVtpXS5vYmplY3QudmlzaWJsZT0hMDtmb3IodGhpcy5fY3VycmVudExldmVsPWktMTtpPHI7aSsrKWVbaV0ub2JqZWN0LnZpc2libGU9ITF9fXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTshMT09PXRoaXMuYXV0b1VwZGF0ZSYmKGUub2JqZWN0LmF1dG9VcGRhdGU9ITEpLGUub2JqZWN0LmxldmVscz1bXTtjb25zdCBuPXRoaXMubGV2ZWxzO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2Uub2JqZWN0LmxldmVscy5wdXNoKHtvYmplY3Q6aS5vYmplY3QudXVpZCxkaXN0YW5jZTppLmRpc3RhbmNlfSl9cmV0dXJuIGV9fWNvbnN0IFU3dD1uZXcgYTN0LGo3dD1uZXcgZTN0LEc3dD1uZXcgZTN0LFc3dD1uZXcgYTN0LHE3dD1uZXcgRDN0O2NsYXNzIFk3dCBleHRlbmRzIHM2dHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTa2lubmVkTWVzaCIsdGhpcy5iaW5kTW9kZT0iYXR0YWNoZWQiLHRoaXMuYmluZE1hdHJpeD1uZXcgRDN0LHRoaXMuYmluZE1hdHJpeEludmVyc2U9bmV3IEQzdH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYmluZE1vZGU9dC5iaW5kTW9kZSx0aGlzLmJpbmRNYXRyaXguY29weSh0LmJpbmRNYXRyaXgpLHRoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0LmJpbmRNYXRyaXhJbnZlcnNlKSx0aGlzLnNrZWxldG9uPXQuc2tlbGV0b24sdGhpc31iaW5kKHQsZSl7dGhpcy5za2VsZXRvbj10LHZvaWQgMD09PWUmJih0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKSx0aGlzLnNrZWxldG9uLmNhbGN1bGF0ZUludmVyc2VzKCksZT10aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmJpbmRNYXRyaXguY29weShlKSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkoZSkuaW52ZXJ0KCl9cG9zZSgpe3RoaXMuc2tlbGV0b24ucG9zZSgpfW5vcm1hbGl6ZVNraW5XZWlnaHRzKCl7Y29uc3QgdD1uZXcgZTN0LGU9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQ7Zm9yKGxldCBuPTAsaT1lLmNvdW50O248aTtuKyspe3QueD1lLmdldFgobiksdC55PWUuZ2V0WShuKSx0Lno9ZS5nZXRaKG4pLHQudz1lLmdldFcobik7Y29uc3QgaT0xL3QubWFuaGF0dGFuTGVuZ3RoKCk7aSE9PTEvMD90Lm11bHRpcGx5U2NhbGFyKGkpOnQuc2V0KDEsMCwwLDApLGUuc2V0WFlaVyhuLHQueCx0LnksdC56LHQudyl9fXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLCJhdHRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKToiZGV0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5iaW5kTWF0cml4KS5pbnZlcnQoKTpjb25zb2xlLndhcm4oIlRIUkVFLlNraW5uZWRNZXNoOiBVbnJlY29nbml6ZWQgYmluZE1vZGU6ICIrdGhpcy5iaW5kTW9kZSl9Ym9uZVRyYW5zZm9ybSh0LGUpe2NvbnN0IG49dGhpcy5za2VsZXRvbixpPXRoaXMuZ2VvbWV0cnk7ajd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnNraW5JbmRleCx0KSxHN3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxVN3QuY29weShlKS5hcHBseU1hdHJpeDQodGhpcy5iaW5kTWF0cml4KSxlLnNldCgwLDAsMCk7Zm9yKGxldCB0PTA7dDw0O3QrKyl7Y29uc3QgaT1HN3QuZ2V0Q29tcG9uZW50KHQpO2lmKDAhPT1pKXtjb25zdCByPWo3dC5nZXRDb21wb25lbnQodCk7cTd0Lm11bHRpcGx5TWF0cmljZXMobi5ib25lc1tyXS5tYXRyaXhXb3JsZCxuLmJvbmVJbnZlcnNlc1tyXSksZS5hZGRTY2FsZWRWZWN0b3IoVzd0LmNvcHkoVTd0KS5hcHBseU1hdHJpeDQocTd0KSxpKX19cmV0dXJuIGUuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeEludmVyc2UpfX1ZN3QucHJvdG90eXBlLmlzU2tpbm5lZE1lc2g9ITA7Y2xhc3MgWDd0IGV4dGVuZHMgbDR0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkJvbmUifX1YN3QucHJvdG90eXBlLmlzQm9uZT0hMDtjbGFzcyAkN3QgZXh0ZW5kcyBRNXR7Y29uc3RydWN0b3IodD1udWxsLGU9MSxuPTEsaSxyLG8sYSxzLGw9MTAwMyxjPTEwMDMsdSxoKXtzdXBlcihudWxsLG8sYSxzLGwsYyxpLHIsdSxoKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6bn0sdGhpcy5tYWdGaWx0ZXI9bCx0aGlzLm1pbkZpbHRlcj1jLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MX19JDd0LnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlPSEwO2NvbnN0IEs3dD1uZXcgRDN0LFo3dD1uZXcgRDN0O2NsYXNzIEo3dHtjb25zdHJ1Y3Rvcih0PVtdLGU9W10pe3RoaXMudXVpZD1nNXQoKSx0aGlzLmJvbmVzPXQuc2xpY2UoMCksdGhpcy5ib25lSW52ZXJzZXM9ZSx0aGlzLmJvbmVNYXRyaWNlcz1udWxsLHRoaXMuYm9uZVRleHR1cmU9bnVsbCx0aGlzLmJvbmVUZXh0dXJlU2l6ZT0wLHRoaXMuZnJhbWU9LTEsdGhpcy5pbml0KCl9aW5pdCgpe2NvbnN0IHQ9dGhpcy5ib25lcyxlPXRoaXMuYm9uZUludmVyc2VzO2lmKHRoaXMuYm9uZU1hdHJpY2VzPW5ldyBGbG9hdDMyQXJyYXkoMTYqdC5sZW5ndGgpLDA9PT1lLmxlbmd0aCl0aGlzLmNhbGN1bGF0ZUludmVyc2VzKCk7ZWxzZSBpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXtjb25zb2xlLndhcm4oIlRIUkVFLlNrZWxldG9uOiBOdW1iZXIgb2YgaW52ZXJzZSBib25lIG1hdHJpY2VzIGRvZXMgbm90IG1hdGNoIGFtb3VudCBvZiBib25lcy4iKSx0aGlzLmJvbmVJbnZlcnNlcz1bXTtmb3IobGV0IHQ9MCxlPXRoaXMuYm9uZXMubGVuZ3RoO3Q8ZTt0KyspdGhpcy5ib25lSW52ZXJzZXMucHVzaChuZXcgRDN0KX19Y2FsY3VsYXRlSW52ZXJzZXMoKXt0aGlzLmJvbmVJbnZlcnNlcy5sZW5ndGg9MDtmb3IobGV0IHQ9MCxlPXRoaXMuYm9uZXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9bmV3IEQzdDt0aGlzLmJvbmVzW3RdJiZlLmNvcHkodGhpcy5ib25lc1t0XS5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksdGhpcy5ib25lSW52ZXJzZXMucHVzaChlKX19cG9zZSgpe2ZvcihsZXQgdD0wLGU9dGhpcy5ib25lcy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT10aGlzLmJvbmVzW3RdO2UmJmUubWF0cml4V29ybGQuY29weSh0aGlzLmJvbmVJbnZlcnNlc1t0XSkuaW52ZXJ0KCl9Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPXRoaXMuYm9uZXNbdF07ZSYmKGUucGFyZW50JiZlLnBhcmVudC5pc0JvbmU/KGUubWF0cml4LmNvcHkoZS5wYXJlbnQubWF0cml4V29ybGQpLmludmVydCgpLGUubWF0cml4Lm11bHRpcGx5KGUubWF0cml4V29ybGQpKTplLm1hdHJpeC5jb3B5KGUubWF0cml4V29ybGQpLGUubWF0cml4LmRlY29tcG9zZShlLnBvc2l0aW9uLGUucXVhdGVybmlvbixlLnNjYWxlKSl9fXVwZGF0ZSgpe2NvbnN0IHQ9dGhpcy5ib25lcyxlPXRoaXMuYm9uZUludmVyc2VzLG49dGhpcy5ib25lTWF0cmljZXMsaT10aGlzLmJvbmVUZXh0dXJlO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7Szd0Lm11bHRpcGx5TWF0cmljZXModFtpXT90W2ldLm1hdHJpeFdvcmxkOlo3dCxlW2ldKSxLN3QudG9BcnJheShuLDE2KmkpfW51bGwhPT1pJiYoaS5uZWVkc1VwZGF0ZT0hMCl9Y2xvbmUoKXtyZXR1cm4gbmV3IEo3dCh0aGlzLmJvbmVzLHRoaXMuYm9uZUludmVyc2VzKX1jb21wdXRlQm9uZVRleHR1cmUoKXtsZXQgdD1NYXRoLnNxcnQoNCp0aGlzLmJvbmVzLmxlbmd0aCk7dD14NXQodCksdD1NYXRoLm1heCh0LDQpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSh0KnQqNCk7ZS5zZXQodGhpcy5ib25lTWF0cmljZXMpO2NvbnN0IG49bmV3ICQ3dChlLHQsdCx3MnQsdjJ0KTtyZXR1cm4gbi5uZWVkc1VwZGF0ZT0hMCx0aGlzLmJvbmVNYXRyaWNlcz1lLHRoaXMuYm9uZVRleHR1cmU9bix0aGlzLmJvbmVUZXh0dXJlU2l6ZT10LHRoaXN9Z2V0Qm9uZUJ5TmFtZSh0KXtmb3IobGV0IGU9MCxuPXRoaXMuYm9uZXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dGhpcy5ib25lc1tlXTtpZihuLm5hbWU9PT10KXJldHVybiBufX1kaXNwb3NlKCl7bnVsbCE9PXRoaXMuYm9uZVRleHR1cmUmJih0aGlzLmJvbmVUZXh0dXJlLmRpc3Bvc2UoKSx0aGlzLmJvbmVUZXh0dXJlPW51bGwpfWZyb21KU09OKHQsZSl7dGhpcy51dWlkPXQudXVpZDtmb3IobGV0IG49MCxpPXQuYm9uZXMubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dC5ib25lc1tuXTtsZXQgcj1lW2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLlNrZWxldG9uOiBObyBib25lIGZvdW5kIHdpdGggVVVJRDoiLGkpLHI9bmV3IFg3dCksdGhpcy5ib25lcy5wdXNoKHIpLHRoaXMuYm9uZUludmVyc2VzLnB1c2goKG5ldyBEM3QpLmZyb21BcnJheSh0LmJvbmVJbnZlcnNlc1tuXSkpfXJldHVybiB0aGlzLmluaXQoKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJTa2VsZXRvbiIsZ2VuZXJhdG9yOiJTa2VsZXRvbi50b0pTT04ifSxib25lczpbXSxib25lSW52ZXJzZXM6W119O3QudXVpZD10aGlzLnV1aWQ7Y29uc3QgZT10aGlzLmJvbmVzLG49dGhpcy5ib25lSW52ZXJzZXM7Zm9yKGxldCBpPTAscj1lLmxlbmd0aDtpPHI7aSsrKXt0LmJvbmVzLnB1c2goZVtpXS51dWlkKTt0LmJvbmVJbnZlcnNlcy5wdXNoKG5baV0udG9BcnJheSgpKX1yZXR1cm4gdH19Y2xhc3MgUTd0IGV4dGVuZHMgRTR0e2NvbnN0cnVjdG9yKHQsZSxuLGk9MSl7Im51bWJlciI9PXR5cGVvZiBuJiYoaT1uLG49ITEsY29uc29sZS5lcnJvcigiVEhSRUUuSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlOiBUaGUgY29uc3RydWN0b3Igbm93IGV4cGVjdHMgbm9ybWFsaXplZCBhcyB0aGUgdGhpcmQgYXJndW1lbnQuIikpLHN1cGVyKHQsZSxuKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9aX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0Lm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLHQuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITAsdH19UTd0LnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjb25zdCB0dGU9bmV3IEQzdCxldGU9bmV3IEQzdCxudGU9W10saXRlPW5ldyBzNnQ7Y2xhc3MgcnRlIGV4dGVuZHMgczZ0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuaW5zdGFuY2VNYXRyaXg9bmV3IFE3dChuZXcgRmxvYXQzMkFycmF5KDE2Km4pLDE2KSx0aGlzLmluc3RhbmNlQ29sb3I9bnVsbCx0aGlzLmNvdW50PW4sdGhpcy5mcnVzdHVtQ3VsbGVkPSExfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3B5KHQuaW5zdGFuY2VNYXRyaXgpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9dC5pbnN0YW5jZUNvbG9yLmNsb25lKCkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzfWdldENvbG9yQXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1nZXRNYXRyaXhBdCh0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5tYXRyaXhXb3JsZCxpPXRoaXMuY291bnQ7aWYoaXRlLmdlb21ldHJ5PXRoaXMuZ2VvbWV0cnksaXRlLm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdm9pZCAwIT09aXRlLm1hdGVyaWFsKWZvcihsZXQgcj0wO3I8aTtyKyspe3RoaXMuZ2V0TWF0cml4QXQocix0dGUpLGV0ZS5tdWx0aXBseU1hdHJpY2VzKG4sdHRlKSxpdGUubWF0cml4V29ybGQ9ZXRlLGl0ZS5yYXljYXN0KHQsbnRlKTtmb3IobGV0IHQ9MCxuPW50ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1udGVbdF07bi5pbnN0YW5jZUlkPXIsbi5vYmplY3Q9dGhpcyxlLnB1c2gobil9bnRlLmxlbmd0aD0wfX1zZXRDb2xvckF0KHQsZSl7bnVsbD09PXRoaXMuaW5zdGFuY2VDb2xvciYmKHRoaXMuaW5zdGFuY2VDb2xvcj1uZXcgUTd0KG5ldyBGbG9hdDMyQXJyYXkoMyp0aGlzLmluc3RhbmNlTWF0cml4LmNvdW50KSwzKSksZS50b0FycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSwzKnQpfXNldE1hdHJpeEF0KHQsZSl7ZS50b0FycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9dXBkYXRlTW9ycGhUYXJnZXRzKCl7fWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fXJ0ZS5wcm90b3R5cGUuaXNJbnN0YW5jZWRNZXNoPSEwO2NsYXNzIG90ZSBleHRlbmRzIHg0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3ICQ1dCgxNjc3NzIxNSksdGhpcy5saW5ld2lkdGg9MSx0aGlzLmxpbmVjYXA9InJvdW5kIix0aGlzLmxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5saW5ld2lkdGg9dC5saW5ld2lkdGgsdGhpcy5saW5lY2FwPXQubGluZWNhcCx0aGlzLmxpbmVqb2luPXQubGluZWpvaW4sdGhpc319b3RlLnByb3RvdHlwZS5pc0xpbmVCYXNpY01hdGVyaWFsPSEwO2NvbnN0IGF0ZT1uZXcgYTN0LHN0ZT1uZXcgYTN0LGx0ZT1uZXcgRDN0LGN0ZT1uZXcgejN0LHV0ZT1uZXcgQTN0O2NsYXNzIGh0ZSBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcih0PW5ldyBqNHQsZT1uZXcgb3RlKXtzdXBlcigpLHRoaXMudHlwZT0iTGluZSIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3QgZT10LmF0dHJpYnV0ZXMucG9zaXRpb24sbj1bMF07Zm9yKGxldCB0PTEsaT1lLmNvdW50O3Q8aTt0KyspYXRlLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0LTEpLHN0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCksblt0XT1uW3QtMV0sblt0XSs9YXRlLmRpc3RhbmNlVG8oc3RlKTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgUjR0KG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIHQuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5nZW9tZXRyeSxpPXRoaXMubWF0cml4V29ybGQscj10LnBhcmFtcy5MaW5lLnRocmVzaG9sZCxvPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHV0ZS5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLHV0ZS5hcHBseU1hdHJpeDQoaSksdXRlLnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUodXRlKSlyZXR1cm47bHRlLmNvcHkoaSkuaW52ZXJ0KCksY3RlLmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChsdGUpO2NvbnN0IGE9ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPWEqYSxsPW5ldyBhM3QsYz1uZXcgYTN0LHU9bmV3IGEzdCxoPW5ldyBhM3QsZD10aGlzLmlzTGluZVNlZ21lbnRzPzI6MTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSl7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksYT1NYXRoLm1pbihpLmNvdW50LG8uc3RhcnQrby5jb3VudCktMTtuPGE7bis9ZCl7Y29uc3Qgbz1pLmdldFgobiksYT1pLmdldFgobisxKTtsLmZyb21CdWZmZXJBdHRyaWJ1dGUocixvKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUocixhKTtpZihjdGUuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMsaCx1KT5zKWNvbnRpbnVlO2guYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGQ9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCk7ZDx0Lm5lYXJ8fGQ+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6ZCxwb2ludDp1LmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fWVsc2V7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksaT1NYXRoLm1pbihyLmNvdW50LG8uc3RhcnQrby5jb3VudCktMTtuPGk7bis9ZCl7bC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksYy5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbisxKTtpZihjdGUuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMsaCx1KT5zKWNvbnRpbnVlO2guYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGk9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCk7aTx0Lm5lYXJ8fGk+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6aSxwb2ludDp1LmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX11cGRhdGVNb3JwaFRhcmdldHMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUudXBkYXRlTW9ycGhUYXJnZXRzKCkgZG9lcyBub3Qgc3VwcG9ydCBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fX1odGUucHJvdG90eXBlLmlzTGluZT0hMDtjb25zdCBkdGU9bmV3IGEzdCxwdGU9bmV3IGEzdDtjbGFzcyBmdGUgZXh0ZW5kcyBodGV7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iTGluZVNlZ21lbnRzIn1jb21wdXRlTGluZURpc3RhbmNlcygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PXQuaW5kZXgpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49W107Zm9yKGxldCB0PTAsaT1lLmNvdW50O3Q8aTt0Kz0yKWR0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCkscHRlLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLG5bdF09MD09PXQ/MDpuW3QtMV0sblt0KzFdPW5bdF0rZHRlLmRpc3RhbmNlVG8ocHRlKTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgUjR0KG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfX1mdGUucHJvdG90eXBlLmlzTGluZVNlZ21lbnRzPSEwO2NsYXNzIG10ZSBleHRlbmRzIGh0ZXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lTG9vcCJ9fW10ZS5wcm90b3R5cGUuaXNMaW5lTG9vcD0hMDtjbGFzcyBndGUgZXh0ZW5kcyB4NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkNXQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fWd0ZS5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtjb25zdCBfdGU9bmV3IEQzdCx5dGU9bmV3IHozdCx2dGU9bmV3IEEzdCxidGU9bmV3IGEzdDtjbGFzcyB4dGUgZXh0ZW5kcyBsNHR7Y29uc3RydWN0b3IodD1uZXcgajR0LGU9bmV3IGd0ZSl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdHJpeFdvcmxkLHI9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxvPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHZ0ZS5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLHZ0ZS5hcHBseU1hdHJpeDQoaSksdnRlLnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUodnRlKSlyZXR1cm47X3RlLmNvcHkoaSkuaW52ZXJ0KCkseXRlLmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChfdGUpO2NvbnN0IGE9ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPWEqYTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IHI9bi5pbmRleCxhPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09cil7Zm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksbD1NYXRoLm1pbihyLmNvdW50LG8uc3RhcnQrby5jb3VudCk7bjxsO24rKyl7Y29uc3Qgbz1yLmdldFgobik7YnRlLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxvKSx3dGUoYnRlLG8scyxpLHQsZSx0aGlzKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxvLnN0YXJ0KSxyPU1hdGgubWluKGEuY291bnQsby5zdGFydCtvLmNvdW50KTtuPHI7bisrKWJ0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGEsbiksd3RlKGJ0ZSxuLHMsaSx0LGUsdGhpcyl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19ZnVuY3Rpb24gd3RlKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9eXRlLmRpc3RhbmNlU3FUb1BvaW50KHQpO2lmKHM8bil7Y29uc3Qgbj1uZXcgYTN0O3l0ZS5jbG9zZXN0UG9pbnRUb1BvaW50KHQsbiksbi5hcHBseU1hdHJpeDQoaSk7Y29uc3QgbD1yLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhuKTtpZihsPHIubmVhcnx8bD5yLmZhcilyZXR1cm47by5wdXNoKHtkaXN0YW5jZTpsLGRpc3RhbmNlVG9SYXk6TWF0aC5zcXJ0KHMpLHBvaW50Om4saW5kZXg6ZSxmYWNlOm51bGwsb2JqZWN0OmF9KX19eHRlLnByb3RvdHlwZS5pc1BvaW50cz0hMDtjbGFzcyBTdGUgZXh0ZW5kcyBRNXR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwpe3N1cGVyKHQsZSxuLGkscixvLGEscyxsKSx0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1vP286cDJ0LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PXI/cjpwMnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITE7Y29uc3QgYz10aGlzOyJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygoZnVuY3Rpb24gZSgpe2MubmVlZHNVcGRhdGU9ITAsdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGUpfSkpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuaW1hZ2UpLmNvcHkodGhpcyl9dXBkYXRlKCl7Y29uc3QgdD10aGlzLmltYWdlOyExPT09InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZWFkeVN0YXRlPj10LkhBVkVfQ1VSUkVOVF9EQVRBJiYodGhpcy5uZWVkc1VwZGF0ZT0hMCl9fVN0ZS5wcm90b3R5cGUuaXNWaWRlb1RleHR1cmU9ITA7Y2xhc3MgTXRlIGV4dGVuZHMgUTV0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih7d2lkdGg6dCxoZWlnaHQ6ZX0pLHRoaXMuZm9ybWF0PW4sdGhpcy5tYWdGaWx0ZXI9dTJ0LHRoaXMubWluRmlsdGVyPXUydCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLm5lZWRzVXBkYXRlPSEwfX1NdGUucHJvdG90eXBlLmlzRnJhbWVidWZmZXJUZXh0dXJlPSEwO2NsYXNzIEV0ZSBleHRlbmRzIFE1dHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyxhLHMsbCxjLHUsaCl7c3VwZXIobnVsbCxvLGEscyxsLGMsaSxyLHUsaCksdGhpcy5pbWFnZT17d2lkdGg6ZSxoZWlnaHQ6bn0sdGhpcy5taXBtYXBzPXQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19RXRlLnByb3RvdHlwZS5pc0NvbXByZXNzZWRUZXh0dXJlPSEwO2NsYXNzIFR0ZSBleHRlbmRzIFE1dHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyxhLHMsbCl7c3VwZXIodCxlLG4saSxyLG8sYSxzLGwpLHRoaXMubmVlZHNVcGRhdGU9ITB9fVR0ZS5wcm90b3R5cGUuaXNDYW52YXNUZXh0dXJlPSEwO2NsYXNzIEN0ZSBleHRlbmRzIGo0dHtjb25zdHJ1Y3Rvcih0PTEsZT04LG49MCxpPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkNpcmNsZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHNlZ21lbnRzOmUsdGhldGFTdGFydDpuLHRoZXRhTGVuZ3RoOml9LGU9TWF0aC5tYXgoMyxlKTtjb25zdCByPVtdLG89W10sYT1bXSxzPVtdLGw9bmV3IGEzdCxjPW5ldyBENXQ7by5wdXNoKDAsMCwwKSxhLnB1c2goMCwwLDEpLHMucHVzaCguNSwuNSk7Zm9yKGxldCByPTAsdT0zO3I8PWU7cisrLHUrPTMpe2NvbnN0IGg9bityL2UqaTtsLng9dCpNYXRoLmNvcyhoKSxsLnk9dCpNYXRoLnNpbihoKSxvLnB1c2gobC54LGwueSxsLnopLGEucHVzaCgwLDAsMSksYy54PShvW3VdL3QrMSkvMixjLnk9KG9bdSsxXS90KzEpLzIscy5wdXNoKGMueCxjLnkpfWZvcihsZXQgdD0xO3Q8PWU7dCsrKXIucHVzaCh0LHQrMSwwKTt0aGlzLnNldEluZGV4KHIpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgUjR0KGEsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFI0dChzLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBDdGUodC5yYWRpdXMsdC5zZWdtZW50cyx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIEF0ZSBleHRlbmRzIGo0dHtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49MSxpPTgscj0xLG89ITEsYT0wLHM9MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iQ3lsaW5kZXJHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXNUb3A6dCxyYWRpdXNCb3R0b206ZSxoZWlnaHQ6bixyYWRpYWxTZWdtZW50czppLGhlaWdodFNlZ21lbnRzOnIsb3BlbkVuZGVkOm8sdGhldGFTdGFydDphLHRoZXRhTGVuZ3RoOnN9O2NvbnN0IGw9dGhpcztpPU1hdGguZmxvb3IoaSkscj1NYXRoLmZsb29yKHIpO2NvbnN0IGM9W10sdT1bXSxoPVtdLGQ9W107bGV0IHA9MDtjb25zdCBmPVtdLG09bi8yO2xldCBnPTA7ZnVuY3Rpb24gXyhuKXtjb25zdCByPXAsbz1uZXcgRDV0LGY9bmV3IGEzdDtsZXQgXz0wO2NvbnN0IHk9ITA9PT1uP3Q6ZSx2PSEwPT09bj8xOi0xO2ZvcihsZXQgdD0xO3Q8PWk7dCsrKXUucHVzaCgwLG0qdiwwKSxoLnB1c2goMCx2LDApLGQucHVzaCguNSwuNSkscCsrO2NvbnN0IGI9cDtmb3IobGV0IHQ9MDt0PD1pO3QrKyl7Y29uc3QgZT10L2kqcythLG49TWF0aC5jb3MoZSkscj1NYXRoLnNpbihlKTtmLng9eSpyLGYueT1tKnYsZi56PXkqbix1LnB1c2goZi54LGYueSxmLnopLGgucHVzaCgwLHYsMCksby54PS41Km4rLjUsby55PS41KnIqdisuNSxkLnB1c2goby54LG8ueSkscCsrfWZvcihsZXQgdD0wO3Q8aTt0Kyspe2NvbnN0IGU9cit0LGk9Yit0OyEwPT09bj9jLnB1c2goaSxpKzEsZSk6Yy5wdXNoKGkrMSxpLGUpLF8rPTN9bC5hZGRHcm91cChnLF8sITA9PT1uPzE6MiksZys9X30hKGZ1bmN0aW9uIHkoKXtjb25zdCBvPW5ldyBhM3QsXz1uZXcgYTN0O2xldCB5PTA7Y29uc3Qgdj0oZS10KS9uO2ZvcihsZXQgbD0wO2w8PXI7bCsrKXtjb25zdCBjPVtdLGc9bC9yLHk9ZyooZS10KSt0O2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtjb25zdCBlPXQvaSxyPWUqcythLGw9TWF0aC5zaW4ociksZj1NYXRoLmNvcyhyKTtfLng9eSpsLF8ueT0tZypuK20sXy56PXkqZix1LnB1c2goXy54LF8ueSxfLnopLG8uc2V0KGwsdixmKS5ub3JtYWxpemUoKSxoLnB1c2goby54LG8ueSxvLnopLGQucHVzaChlLDEtZyksYy5wdXNoKHArKyl9Zi5wdXNoKGMpfWZvcihsZXQgdD0wO3Q8aTt0KyspZm9yKGxldCBlPTA7ZTxyO2UrKyl7Y29uc3Qgbj1mW2UrMV1bdF0saT1mW2UrMV1bdCsxXSxyPWZbZV1bdCsxXTtjLnB1c2goZltlXVt0XSxuLHIpLGMucHVzaChuLGkscikseSs9Nn1sLmFkZEdyb3VwKGcseSwwKSxnKz15fSkoKSwhMT09PW8mJih0PjAmJl8oITApLGU+MCYmXyghMSkpLHRoaXMuc2V0SW5kZXgoYyksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KHUsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBSNHQoaCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUjR0KGQsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEF0ZSh0LnJhZGl1c1RvcCx0LnJhZGl1c0JvdHRvbSx0LmhlaWdodCx0LnJhZGlhbFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5vcGVuRW5kZWQsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX1jbGFzcyBrdGUgZXh0ZW5kcyBBdGV7Y29uc3RydWN0b3IodD0xLGU9MSxuPTgsaT0xLHI9ITEsbz0wLGE9MipNYXRoLlBJKXtzdXBlcigwLHQsZSxuLGkscixvLGEpLHRoaXMudHlwZT0iQ29uZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGhlaWdodDplLHJhZGlhbFNlZ21lbnRzOm4saGVpZ2h0U2VnbWVudHM6aSxvcGVuRW5kZWQ6cix0aGV0YVN0YXJ0Om8sdGhldGFMZW5ndGg6YX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcga3RlKHQucmFkaXVzLHQuaGVpZ2h0LHQucmFkaWFsU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0Lm9wZW5FbmRlZCx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fWNsYXNzIFB0ZSBleHRlbmRzIGo0dHtjb25zdHJ1Y3Rvcih0PVtdLGU9W10sbj0xLGk9MCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvbHloZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt2ZXJ0aWNlczp0LGluZGljZXM6ZSxyYWRpdXM6bixkZXRhaWw6aX07Y29uc3Qgcj1bXSxvPVtdO2Z1bmN0aW9uIGEodCxlLG4saSl7Y29uc3Qgcj1pKzEsbz1bXTtmb3IobGV0IGk9MDtpPD1yO2krKyl7b1tpXT1bXTtjb25zdCBhPXQuY2xvbmUoKS5sZXJwKG4saS9yKSxzPWUuY2xvbmUoKS5sZXJwKG4saS9yKSxsPXItaTtmb3IobGV0IHQ9MDt0PD1sO3QrKylvW2ldW3RdPTA9PT10JiZpPT09cj9hOmEuY2xvbmUoKS5sZXJwKHMsdC9sKX1mb3IobGV0IHQ9MDt0PHI7dCsrKWZvcihsZXQgZT0wO2U8Miooci10KS0xO2UrKyl7Y29uc3Qgbj1NYXRoLmZsb29yKGUvMik7ZSUyPT0wPyhzKG9bdF1bbisxXSkscyhvW3QrMV1bbl0pLHMob1t0XVtuXSkpOihzKG9bdF1bbisxXSkscyhvW3QrMV1bbisxXSkscyhvW3QrMV1bbl0pKX19ZnVuY3Rpb24gcyh0KXtyLnB1c2godC54LHQueSx0LnopfWZ1bmN0aW9uIGwoZSxuKXtjb25zdCBpPTMqZTtuLng9dFtpKzBdLG4ueT10W2krMV0sbi56PXRbaSsyXX1mdW5jdGlvbiBjKHQsZSxuLGkpe2k8MCYmMT09PXQueCYmKG9bZV09dC54LTEpLDA9PT1uLngmJjA9PT1uLnomJihvW2VdPWkvMi9NYXRoLlBJKy41KX1mdW5jdGlvbiB1KHQpe3JldHVybiBNYXRoLmF0YW4yKHQueiwtdC54KX0hKGZ1bmN0aW9uIGgodCl7Y29uc3Qgbj1uZXcgYTN0LGk9bmV3IGEzdCxyPW5ldyBhM3Q7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKz0zKWwoZVtvKzBdLG4pLGwoZVtvKzFdLGkpLGwoZVtvKzJdLHIpLGEobixpLHIsdCl9KShpKSwoZnVuY3Rpb24gZCh0KXtjb25zdCBlPW5ldyBhM3Q7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKz0zKWUueD1yW24rMF0sZS55PXJbbisxXSxlLno9cltuKzJdLGUubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCkscltuKzBdPWUueCxyW24rMV09ZS55LHJbbisyXT1lLnp9KShuKSwoZnVuY3Rpb24gcCgpe2NvbnN0IHQ9bmV3IGEzdDtmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rPTMpe3QueD1yW24rMF0sdC55PXJbbisxXSx0Lno9cltuKzJdO2NvbnN0IGk9dSh0KS8yL01hdGguUEkrLjUsYT0oZT10LE1hdGguYXRhbjIoLWUueSxNYXRoLnNxcnQoZS54KmUueCtlLnoqZS56KSkvTWF0aC5QSSsuNSk7by5wdXNoKGksMS1hKX12YXIgZTsoZnVuY3Rpb24gbigpe2NvbnN0IHQ9bmV3IGEzdCxlPW5ldyBhM3Qsbj1uZXcgYTN0LGk9bmV3IGEzdCxhPW5ldyBENXQscz1uZXcgRDV0LGw9bmV3IEQ1dDtmb3IobGV0IGg9MCxkPTA7aDxyLmxlbmd0aDtoKz05LGQrPTYpe3Quc2V0KHJbaCswXSxyW2grMV0scltoKzJdKSxlLnNldChyW2grM10scltoKzRdLHJbaCs1XSksbi5zZXQocltoKzZdLHJbaCs3XSxyW2grOF0pLGEuc2V0KG9bZCswXSxvW2QrMV0pLHMuc2V0KG9bZCsyXSxvW2QrM10pLGwuc2V0KG9bZCs0XSxvW2QrNV0pLGkuY29weSh0KS5hZGQoZSkuYWRkKG4pLmRpdmlkZVNjYWxhcigzKTtjb25zdCBwPXUoaSk7YyhhLGQrMCx0LHApLGMocyxkKzIsZSxwKSxjKGwsZCs0LG4scCl9fSkoKSwoZnVuY3Rpb24gaSgpe2ZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCs9Nil7Y29uc3QgZT1vW3QrMF0sbj1vW3QrMl0saT1vW3QrNF0scj1NYXRoLm1heChlLG4saSksYT1NYXRoLm1pbihlLG4saSk7cj4uOSYmYTwuMSYmKGU8LjImJihvW3QrMF0rPTEpLG48LjImJihvW3QrMl0rPTEpLGk8LjImJihvW3QrNF0rPTEpKX19KSgpfSkoKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBSNHQociwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IFI0dChyLnNsaWNlKCksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFI0dChvLDIpKSwwPT09aT90aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk6dGhpcy5ub3JtYWxpemVOb3JtYWxzKCl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgUHRlKHQudmVydGljZXMsdC5pbmRpY2VzLHQucmFkaXVzLHQuZGV0YWlscyl9fWNsYXNzIEx0ZSBleHRlbmRzIFB0ZXtjb25zdHJ1Y3Rvcih0PTEsZT0wKXtjb25zdCBuPSgxK01hdGguc3FydCg1KSkvMixpPTEvbjtzdXBlcihbLTEsLTEsLTEsLTEsLTEsMSwtMSwxLC0xLC0xLDEsMSwxLC0xLC0xLDEsLTEsMSwxLDEsLTEsMSwxLDEsMCwtaSwtbiwwLC1pLG4sMCxpLC1uLDAsaSxuLC1pLC1uLDAsLWksbiwwLGksLW4sMCxpLG4sMCwtbiwwLC1pLG4sMCwtaSwtbiwwLGksbiwwLGldLFszLDExLDcsMyw3LDE1LDMsMTUsMTMsNywxOSwxNyw3LDE3LDYsNyw2LDE1LDE3LDQsOCwxNyw4LDEwLDE3LDEwLDYsOCwwLDE2LDgsMTYsMiw4LDIsMTAsMCwxMiwxLDAsMSwxOCwwLDE4LDE2LDYsMTAsMiw2LDIsMTMsNiwxMywxNSwyLDE2LDE4LDIsMTgsMywyLDMsMTMsMTgsMSw5LDE4LDksMTEsMTgsMTEsMyw0LDE0LDEyLDQsMTIsMCw0LDAsOCwxMSw5LDUsMTEsNSwxOSwxMSwxOSw3LDE5LDUsMTQsMTksMTQsNCwxOSw0LDE3LDEsMTIsMTQsMSwxNCw1LDEsNSw5XSx0LGUpLHRoaXMudHlwZT0iRG9kZWNhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOmV9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEx0ZSh0LnJhZGl1cyx0LmRldGFpbCl9fWNvbnN0IEl0ZT1uZXcgYTN0LE50ZT1uZXcgYTN0LFJ0ZT1uZXcgYTN0LE90ZT1uZXcgdjR0O2NsYXNzIHp0ZSBleHRlbmRzIGo0dHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xKXtpZihzdXBlcigpLHRoaXMudHlwZT0iRWRnZXNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtnZW9tZXRyeTp0LHRocmVzaG9sZEFuZ2xlOmV9LG51bGwhPT10KXtjb25zdCBuPU1hdGgucG93KDEwLDQpLGk9TWF0aC5jb3MoZjV0KmUpLHI9dC5nZXRJbmRleCgpLG89dC5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIiksYT1yP3IuY291bnQ6by5jb3VudCxzPVswLDAsMF0sbD1bImEiLCJiIiwiYyJdLGM9bmV3IEFycmF5KDMpLHU9e30saD1bXTtmb3IobGV0IHQ9MDt0PGE7dCs9Myl7cj8oc1swXT1yLmdldFgodCksc1sxXT1yLmdldFgodCsxKSxzWzJdPXIuZ2V0WCh0KzIpKTooc1swXT10LHNbMV09dCsxLHNbMl09dCsyKTtjb25zdHthOmUsYjphLGM6ZH09T3RlO2lmKGUuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLHNbMF0pLGEuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLHNbMV0pLGQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLHNbMl0pLE90ZS5nZXROb3JtYWwoUnRlKSxjWzBdPWAke01hdGgucm91bmQoZS54Km4pfSwke01hdGgucm91bmQoZS55Km4pfSwke01hdGgucm91bmQoZS56Km4pfWAsY1sxXT1gJHtNYXRoLnJvdW5kKGEueCpuKX0sJHtNYXRoLnJvdW5kKGEueSpuKX0sJHtNYXRoLnJvdW5kKGEueipuKX1gLGNbMl09YCR7TWF0aC5yb3VuZChkLngqbil9LCR7TWF0aC5yb3VuZChkLnkqbil9LCR7TWF0aC5yb3VuZChkLnoqbil9YCxjWzBdIT09Y1sxXSYmY1sxXSE9PWNbMl0mJmNbMl0hPT1jWzBdKWZvcihsZXQgdD0wO3Q8Mzt0Kyspe2NvbnN0IGU9KHQrMSklMyxuPWNbdF0scj1jW2VdLG89T3RlW2xbdF1dLGE9T3RlW2xbZV1dLGQ9YCR7bn1fJHtyfWAscD1gJHtyfV8ke259YDtwIGluIHUmJnVbcF0/KFJ0ZS5kb3QodVtwXS5ub3JtYWwpPD1pJiYoaC5wdXNoKG8ueCxvLnksby56KSxoLnB1c2goYS54LGEueSxhLnopKSx1W3BdPW51bGwpOmQgaW4gdXx8KHVbZF09e2luZGV4MDpzW3RdLGluZGV4MTpzW2VdLG5vcm1hbDpSdGUuY2xvbmUoKX0pfX1mb3IoY29uc3QgdCBpbiB1KWlmKHVbdF0pe2NvbnN0e2luZGV4MDplLGluZGV4MTpufT11W3RdO0l0ZS5mcm9tQnVmZmVyQXR0cmlidXRlKG8sZSksTnRlLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxuKSxoLnB1c2goSXRlLngsSXRlLnksSXRlLnopLGgucHVzaChOdGUueCxOdGUueSxOdGUueil9dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGgsMykpfX19Y2xhc3MgRHRle2NvbnN0cnVjdG9yKCl7dGhpcy50eXBlPSJDdXJ2ZSIsdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9MjAwfWdldFBvaW50KCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3VydmU6IC5nZXRQb2ludCgpIG5vdCBpbXBsZW1lbnRlZC4iKSxudWxsfWdldFBvaW50QXQodCxlKXtjb25zdCBuPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0UG9pbnQobixlKX1nZXRQb2ludHModD01KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50KG4vdCkpO3JldHVybiBlfWdldFNwYWNlZFBvaW50cyh0PTUpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnRBdChuL3QpKTtyZXR1cm4gZX1nZXRMZW5ndGgoKXtjb25zdCB0PXRoaXMuZ2V0TGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfWdldExlbmd0aHModD10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyl7aWYodGhpcy5jYWNoZUFyY0xlbmd0aHMmJnRoaXMuY2FjaGVBcmNMZW5ndGhzLmxlbmd0aD09PXQrMSYmIXRoaXMubmVlZHNVcGRhdGUpcmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzO3RoaXMubmVlZHNVcGRhdGU9ITE7Y29uc3QgZT1bXTtsZXQgbixpPXRoaXMuZ2V0UG9pbnQoMCkscj0wO2UucHVzaCgwKTtmb3IobGV0IG89MTtvPD10O28rKyluPXRoaXMuZ2V0UG9pbnQoby90KSxyKz1uLmRpc3RhbmNlVG8oaSksZS5wdXNoKHIpLGk9bjtyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM9ZSxlfXVwZGF0ZUFyY0xlbmd0aHMoKXt0aGlzLm5lZWRzVXBkYXRlPSEwLHRoaXMuZ2V0TGVuZ3RocygpfWdldFV0b1RtYXBwaW5nKHQsZSl7Y29uc3Qgbj10aGlzLmdldExlbmd0aHMoKTtsZXQgaT0wO2NvbnN0IHI9bi5sZW5ndGg7bGV0IG87bz1lfHx0Km5bci0xXTtsZXQgYSxzPTAsbD1yLTE7Zm9yKDtzPD1sOylpZihpPU1hdGguZmxvb3IocysobC1zKS8yKSxhPW5baV0tbyxhPDApcz1pKzE7ZWxzZXtpZighKGE+MCkpe2w9aTticmVha31sPWktMX1pZihpPWwsbltpXT09PW8pcmV0dXJuIGkvKHItMSk7Y29uc3QgYz1uW2ldO3JldHVybihpKyhvLWMpLyhuW2krMV0tYykpLyhyLTEpfWdldFRhbmdlbnQodCxlKXtjb25zdCBuPTFlLTQ7bGV0IGk9dC1uLHI9dCtuO2k8MCYmKGk9MCkscj4xJiYocj0xKTtjb25zdCBvPXRoaXMuZ2V0UG9pbnQoaSksYT10aGlzLmdldFBvaW50KHIpLHM9ZXx8KG8uaXNWZWN0b3IyP25ldyBENXQ6bmV3IGEzdCk7cmV0dXJuIHMuY29weShhKS5zdWIobykubm9ybWFsaXplKCksc31nZXRUYW5nZW50QXQodCxlKXtjb25zdCBuPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0VGFuZ2VudChuLGUpfWNvbXB1dGVGcmVuZXRGcmFtZXModCxlKXtjb25zdCBuPW5ldyBhM3QsaT1bXSxyPVtdLG89W10sYT1uZXcgYTN0LHM9bmV3IEQzdDtmb3IobGV0IGU9MDtlPD10O2UrKyl7aVtlXT10aGlzLmdldFRhbmdlbnRBdChlL3QsbmV3IGEzdCl9clswXT1uZXcgYTN0LG9bMF09bmV3IGEzdDtsZXQgbD1OdW1iZXIuTUFYX1ZBTFVFO2NvbnN0IGM9TWF0aC5hYnMoaVswXS54KSx1PU1hdGguYWJzKGlbMF0ueSksaD1NYXRoLmFicyhpWzBdLnopO2M8PWwmJihsPWMsbi5zZXQoMSwwLDApKSx1PD1sJiYobD11LG4uc2V0KDAsMSwwKSksaDw9bCYmbi5zZXQoMCwwLDEpLGEuY3Jvc3NWZWN0b3JzKGlbMF0sbikubm9ybWFsaXplKCksclswXS5jcm9zc1ZlY3RvcnMoaVswXSxhKSxvWzBdLmNyb3NzVmVjdG9ycyhpWzBdLHJbMF0pO2ZvcihsZXQgZT0xO2U8PXQ7ZSsrKXtpZihyW2VdPXJbZS0xXS5jbG9uZSgpLG9bZV09b1tlLTFdLmNsb25lKCksYS5jcm9zc1ZlY3RvcnMoaVtlLTFdLGlbZV0pLGEubGVuZ3RoKCk+TnVtYmVyLkVQU0lMT04pe2Eubm9ybWFsaXplKCk7Y29uc3QgdD1NYXRoLmFjb3MoXzV0KGlbZS0xXS5kb3QoaVtlXSksLTEsMSkpO3JbZV0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhhLHQpKX1vW2VdLmNyb3NzVmVjdG9ycyhpW2VdLHJbZV0pfWlmKCEwPT09ZSl7bGV0IGU9TWF0aC5hY29zKF81dChyWzBdLmRvdChyW3RdKSwtMSwxKSk7ZS89dCxpWzBdLmRvdChhLmNyb3NzVmVjdG9ycyhyWzBdLHJbdF0pKT4wJiYoZT0tZSk7Zm9yKGxldCBuPTE7bjw9dDtuKyspcltuXS5hcHBseU1hdHJpeDQocy5tYWtlUm90YXRpb25BeGlzKGlbbl0sZSpuKSksb1tuXS5jcm9zc1ZlY3RvcnMoaVtuXSxyW25dKX1yZXR1cm57dGFuZ2VudHM6aSxub3JtYWxzOnIsYmlub3JtYWxzOm99fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXQuYXJjTGVuZ3RoRGl2aXNpb25zLHRoaXN9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fWZyb21KU09OKHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfX1jbGFzcyBCdGUgZXh0ZW5kcyBEdGV7Y29uc3RydWN0b3IodD0wLGU9MCxuPTEsaT0xLHI9MCxvPTIqTWF0aC5QSSxhPSExLHM9MCl7c3VwZXIoKSx0aGlzLnR5cGU9IkVsbGlwc2VDdXJ2ZSIsdGhpcy5hWD10LHRoaXMuYVk9ZSx0aGlzLnhSYWRpdXM9bix0aGlzLnlSYWRpdXM9aSx0aGlzLmFTdGFydEFuZ2xlPXIsdGhpcy5hRW5kQW5nbGU9byx0aGlzLmFDbG9ja3dpc2U9YSx0aGlzLmFSb3RhdGlvbj1zfWdldFBvaW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgRDV0LGk9MipNYXRoLlBJO2xldCByPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGU7Y29uc3Qgbz1NYXRoLmFicyhyKTxOdW1iZXIuRVBTSUxPTjtmb3IoO3I8MDspcis9aTtmb3IoO3I+aTspci09aTtyPE51bWJlci5FUFNJTE9OJiYocj1vPzA6aSksITAhPT10aGlzLmFDbG9ja3dpc2V8fG98fChyPT09aT9yPS1pOnItPWkpO2NvbnN0IGE9dGhpcy5hU3RhcnRBbmdsZSt0KnI7bGV0IHM9dGhpcy5hWCt0aGlzLnhSYWRpdXMqTWF0aC5jb3MoYSksbD10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihhKTtpZigwIT09dGhpcy5hUm90YXRpb24pe2NvbnN0IHQ9TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGU9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLG49cy10aGlzLmFYLGk9bC10aGlzLmFZO3M9bip0LWkqZSt0aGlzLmFYLGw9biplK2kqdCt0aGlzLmFZfXJldHVybiBuLnNldChzLGwpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmFYPXRoaXMuYVgsdC5hWT10aGlzLmFZLHQueFJhZGl1cz10aGlzLnhSYWRpdXMsdC55UmFkaXVzPXRoaXMueVJhZGl1cyx0LmFTdGFydEFuZ2xlPXRoaXMuYVN0YXJ0QW5nbGUsdC5hRW5kQW5nbGU9dGhpcy5hRW5kQW5nbGUsdC5hQ2xvY2t3aXNlPXRoaXMuYUNsb2Nrd2lzZSx0LmFSb3RhdGlvbj10aGlzLmFSb3RhdGlvbix0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmFYPXQuYVgsdGhpcy5hWT10LmFZLHRoaXMueFJhZGl1cz10LnhSYWRpdXMsdGhpcy55UmFkaXVzPXQueVJhZGl1cyx0aGlzLmFTdGFydEFuZ2xlPXQuYVN0YXJ0QW5nbGUsdGhpcy5hRW5kQW5nbGU9dC5hRW5kQW5nbGUsdGhpcy5hQ2xvY2t3aXNlPXQuYUNsb2Nrd2lzZSx0aGlzLmFSb3RhdGlvbj10LmFSb3RhdGlvbix0aGlzfX1CdGUucHJvdG90eXBlLmlzRWxsaXBzZUN1cnZlPSEwO2NsYXNzIEh0ZSBleHRlbmRzIEJ0ZXtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyl7c3VwZXIodCxlLG4sbixpLHIsbyksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9fWZ1bmN0aW9uIEZ0ZSgpe2xldCB0PTAsZT0wLG49MCxpPTA7ZnVuY3Rpb24gcihyLG8sYSxzKXt0PXIsZT1hLG49LTMqciszKm8tMiphLXMsaT0yKnItMipvK2Erc31yZXR1cm57aW5pdENhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvKXtyKGUsbixvKihuLXQpLG8qKGktZSkpfSxpbml0Tm9udW5pZm9ybUNhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvLGEscyl7bGV0IGw9KGUtdCkvby0obi10KS8obythKSsobi1lKS9hLGM9KG4tZSkvYS0oaS1lKS8oYStzKSsoaS1uKS9zO2wqPWEsYyo9YSxyKGUsbixsLGMpfSxjYWxjOmZ1bmN0aW9uKHIpe2NvbnN0IG89cipyO3JldHVybiB0K2UqcituKm8raSoobypyKX19fUh0ZS5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtjb25zdCBWdGU9bmV3IGEzdCxVdGU9bmV3IEZ0ZSxqdGU9bmV3IEZ0ZSxHdGU9bmV3IEZ0ZTtjbGFzcyBXdGUgZXh0ZW5kcyBEdGV7Y29uc3RydWN0b3IodD1bXSxlPSExLG49ImNlbnRyaXBldGFsIixpPS41KXtzdXBlcigpLHRoaXMudHlwZT0iQ2F0bXVsbFJvbUN1cnZlMyIsdGhpcy5wb2ludHM9dCx0aGlzLmNsb3NlZD1lLHRoaXMuY3VydmVUeXBlPW4sdGhpcy50ZW5zaW9uPWl9Z2V0UG9pbnQodCxlPW5ldyBhM3Qpe2NvbnN0IG49ZSxpPXRoaXMucG9pbnRzLHI9aS5sZW5ndGgsbz0oci0odGhpcy5jbG9zZWQ/MDoxKSkqdDtsZXQgYSxzLGw9TWF0aC5mbG9vcihvKSxjPW8tbDt0aGlzLmNsb3NlZD9sKz1sPjA/MDooTWF0aC5mbG9vcihNYXRoLmFicyhsKS9yKSsxKSpyOjA9PT1jJiZsPT09ci0xJiYobD1yLTIsYz0xKSx0aGlzLmNsb3NlZHx8bD4wP2E9aVsobC0xKSVyXTooVnRlLnN1YlZlY3RvcnMoaVswXSxpWzFdKS5hZGQoaVswXSksYT1WdGUpO2NvbnN0IHU9aVtsJXJdLGg9aVsobCsxKSVyXTtpZih0aGlzLmNsb3NlZHx8bCsyPHI/cz1pWyhsKzIpJXJdOihWdGUuc3ViVmVjdG9ycyhpW3ItMV0saVtyLTJdKS5hZGQoaVtyLTFdKSxzPVZ0ZSksImNlbnRyaXBldGFsIj09PXRoaXMuY3VydmVUeXBlfHwiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZSl7Y29uc3QgdD0iY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZT8uNTouMjU7bGV0IGU9TWF0aC5wb3coYS5kaXN0YW5jZVRvU3F1YXJlZCh1KSx0KSxuPU1hdGgucG93KHUuZGlzdGFuY2VUb1NxdWFyZWQoaCksdCksaT1NYXRoLnBvdyhoLmRpc3RhbmNlVG9TcXVhcmVkKHMpLHQpO248MWUtNCYmKG49MSksZTwxZS00JiYoZT1uKSxpPDFlLTQmJihpPW4pLFV0ZS5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYS54LHUueCxoLngscy54LGUsbixpKSxqdGUuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGEueSx1LnksaC55LHMueSxlLG4saSksR3RlLmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShhLnosdS56LGgueixzLnosZSxuLGkpfWVsc2UiY2F0bXVsbHJvbSI9PT10aGlzLmN1cnZlVHlwZSYmKFV0ZS5pbml0Q2F0bXVsbFJvbShhLngsdS54LGgueCxzLngsdGhpcy50ZW5zaW9uKSxqdGUuaW5pdENhdG11bGxSb20oYS55LHUueSxoLnkscy55LHRoaXMudGVuc2lvbiksR3RlLmluaXRDYXRtdWxsUm9tKGEueix1LnosaC56LHMueix0aGlzLnRlbnNpb24pKTtyZXR1cm4gbi5zZXQoVXRlLmNhbGMoYyksanRlLmNhbGMoYyksR3RlLmNhbGMoYykpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3RoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuY2xvc2VkPXQuY2xvc2VkLHRoaXMuY3VydmVUeXBlPXQuY3VydmVUeXBlLHRoaXMudGVuc2lvbj10LnRlbnNpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3QucG9pbnRzLnB1c2godGhpcy5wb2ludHNbZV0udG9BcnJheSgpKX1yZXR1cm4gdC5jbG9zZWQ9dGhpcy5jbG9zZWQsdC5jdXJ2ZVR5cGU9dGhpcy5jdXJ2ZVR5cGUsdC50ZW5zaW9uPXRoaXMudGVuc2lvbix0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IGEzdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfX1mdW5jdGlvbiBxdGUodCxlLG4saSxyKXtjb25zdCBvPS41KihpLWUpLGE9LjUqKHItbikscz10KnQ7cmV0dXJuKDIqbi0yKmkrbythKSoodCpzKSsoLTMqbiszKmktMipvLWEpKnMrbyp0K259ZnVuY3Rpb24gWXRlKHQsZSxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbiplfSkodCxlKSsoZnVuY3Rpb24gbyh0LGUpe3JldHVybiAyKigxLXQpKnQqZX0pKHQsbikrKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdCp0KmV9KSh0LGkpfWZ1bmN0aW9uIFh0ZSh0LGUsbixpLHIpe3JldHVybihmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbipuKmV9KSh0LGUpKyhmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIDMqbipuKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHModCxlKXtyZXR1cm4gMyooMS10KSp0KnQqZX0pKHQsaSkrKGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdCp0KnQqZX0pKHQscil9V3RlLnByb3RvdHlwZS5pc0NhdG11bGxSb21DdXJ2ZTM9ITA7Y2xhc3MgJHRlIGV4dGVuZHMgRHRle2NvbnN0cnVjdG9yKHQ9bmV3IEQ1dCxlPW5ldyBENXQsbj1uZXcgRDV0LGk9bmV3IEQ1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IEQ1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQoWHRlKHQsaS54LHIueCxvLngsYS54KSxYdGUodCxpLnksci55LG8ueSxhLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX0kdGUucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyBLdGUgZXh0ZW5kcyBEdGV7Y29uc3RydWN0b3IodD1uZXcgYTN0LGU9bmV3IGEzdCxuPW5ldyBhM3QsaT1uZXcgYTN0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1uLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IGEzdCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQoWHRlKHQsaS54LHIueCxvLngsYS54KSxYdGUodCxpLnksci55LG8ueSxhLnkpLFh0ZSh0LGkueixyLnosby56LGEueikpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fUt0ZS5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlMz0hMDtjbGFzcyBadGUgZXh0ZW5kcyBEdGV7Y29uc3RydWN0b3IodD1uZXcgRDV0LGU9bmV3IEQ1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZSIsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IEQ1dCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Z2V0VGFuZ2VudCh0LGUpe2NvbnN0IG49ZXx8bmV3IEQ1dDtyZXR1cm4gbi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1adGUucHJvdG90eXBlLmlzTGluZUN1cnZlPSEwO2NsYXNzIEp0ZSBleHRlbmRzIER0ZXtjb25zdHJ1Y3Rvcih0PW5ldyBhM3QsZT1uZXcgYTN0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlMyIsdGhpcy5pc0xpbmVDdXJ2ZTM9ITAsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IGEzdCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fWNsYXNzIFF0ZSBleHRlbmRzIER0ZXtjb25zdHJ1Y3Rvcih0PW5ldyBENXQsZT1uZXcgRDV0LG49bmV3IEQ1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IEQ1dCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBuLnNldChZdGUodCxpLngsci54LG8ueCksWXRlKHQsaS55LHIueSxvLnkpKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1RdGUucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7Y2xhc3MgdGVlIGV4dGVuZHMgRHRle2NvbnN0cnVjdG9yKHQ9bmV3IGEzdCxlPW5ldyBhM3Qsbj1uZXcgYTN0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bn1nZXRQb2ludCh0LGU9bmV3IGEzdCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBuLnNldChZdGUodCxpLngsci54LG8ueCksWXRlKHQsaS55LHIueSxvLnkpLFl0ZSh0LGkueixyLnosby56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319dGVlLnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlMz0hMDtjbGFzcyBlZWUgZXh0ZW5kcyBEdGV7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwbGluZUN1cnZlIix0aGlzLnBvaW50cz10fWdldFBvaW50KHQsZT1uZXcgRDV0KXtjb25zdCBuPWUsaT10aGlzLnBvaW50cyxyPShpLmxlbmd0aC0xKSp0LG89TWF0aC5mbG9vcihyKSxhPXItbyxzPWlbMD09PW8/bzpvLTFdLGw9aVtvXSxjPWlbbz5pLmxlbmd0aC0yP2kubGVuZ3RoLTE6bysxXSx1PWlbbz5pLmxlbmd0aC0zP2kubGVuZ3RoLTE6bysyXTtyZXR1cm4gbi5zZXQocXRlKGEscy54LGwueCxjLngsdS54KSxxdGUoYSxzLnksbC55LGMueSx1LnkpKSxufWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW2VdLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10aGlzLnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7dC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IEQ1dCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpc319ZWVlLnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBuZWU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6SHRlLENhdG11bGxSb21DdXJ2ZTM6V3RlLEN1YmljQmV6aWVyQ3VydmU6JHRlLEN1YmljQmV6aWVyQ3VydmUzOkt0ZSxFbGxpcHNlQ3VydmU6QnRlLExpbmVDdXJ2ZTpadGUsTGluZUN1cnZlMzpKdGUsUXVhZHJhdGljQmV6aWVyQ3VydmU6UXRlLFF1YWRyYXRpY0JlemllckN1cnZlMzp0ZWUsU3BsaW5lQ3VydmU6ZWVlfSk7Y2xhc3MgaWVlIGV4dGVuZHMgRHRle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1cnZlUGF0aCIsdGhpcy5jdXJ2ZXM9W10sdGhpcy5hdXRvQ2xvc2U9ITF9YWRkKHQpe3RoaXMuY3VydmVzLnB1c2godCl9Y2xvc2VQYXRoKCl7Y29uc3QgdD10aGlzLmN1cnZlc1swXS5nZXRQb2ludCgwKSxlPXRoaXMuY3VydmVzW3RoaXMuY3VydmVzLmxlbmd0aC0xXS5nZXRQb2ludCgxKTt0LmVxdWFscyhlKXx8dGhpcy5jdXJ2ZXMucHVzaChuZXcgWnRlKGUsdCkpfWdldFBvaW50KHQsZSl7Y29uc3Qgbj10KnRoaXMuZ2V0TGVuZ3RoKCksaT10aGlzLmdldEN1cnZlTGVuZ3RocygpO2xldCByPTA7Zm9yKDtyPGkubGVuZ3RoOyl7aWYoaVtyXT49bil7Y29uc3QgdD1pW3JdLW4sbz10aGlzLmN1cnZlc1tyXSxhPW8uZ2V0TGVuZ3RoKCk7cmV0dXJuIG8uZ2V0UG9pbnRBdCgwPT09YT8wOjEtdC9hLGUpfXIrK31yZXR1cm4gbnVsbH1nZXRMZW5ndGgoKXtjb25zdCB0PXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5jYWNoZUxlbmd0aHM9bnVsbCx0aGlzLmdldEN1cnZlTGVuZ3RocygpfWdldEN1cnZlTGVuZ3Rocygpe2lmKHRoaXMuY2FjaGVMZW5ndGhzJiZ0aGlzLmNhY2hlTGVuZ3Rocy5sZW5ndGg9PT10aGlzLmN1cnZlcy5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzO2NvbnN0IHQ9W107bGV0IGU9MDtmb3IobGV0IG49MCxpPXRoaXMuY3VydmVzLmxlbmd0aDtuPGk7bisrKWUrPXRoaXMuY3VydmVzW25dLmdldExlbmd0aCgpLHQucHVzaChlKTtyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM9dCx0fWdldFNwYWNlZFBvaW50cyh0PTQwKXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50KG4vdCkpO3JldHVybiB0aGlzLmF1dG9DbG9zZSYmZS5wdXNoKGVbMF0pLGV9Z2V0UG9pbnRzKHQ9MTIpe2NvbnN0IGU9W107bGV0IG47Zm9yKGxldCBpPTAscj10aGlzLmN1cnZlcztpPHIubGVuZ3RoO2krKyl7Y29uc3Qgbz1yW2ldLGE9by5nZXRQb2ludHMobyYmby5pc0VsbGlwc2VDdXJ2ZT8yKnQ6byYmKG8uaXNMaW5lQ3VydmV8fG8uaXNMaW5lQ3VydmUzKT8xOm8mJm8uaXNTcGxpbmVDdXJ2ZT90Km8ucG9pbnRzLmxlbmd0aDp0KTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrKyl7Y29uc3QgaT1hW3RdO24mJm4uZXF1YWxzKGkpfHwoZS5wdXNoKGkpLG49aSl9fXJldHVybiB0aGlzLmF1dG9DbG9zZSYmZS5sZW5ndGg+MSYmIWVbZS5sZW5ndGgtMV0uZXF1YWxzKGVbMF0pJiZlLnB1c2goZVswXSksZX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10LmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl7dGhpcy5jdXJ2ZXMucHVzaCh0LmN1cnZlc1tlXS5jbG9uZSgpKX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QuYXV0b0Nsb3NlPXRoaXMuYXV0b0Nsb3NlLHQuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspe3QuY3VydmVzLnB1c2godGhpcy5jdXJ2ZXNbZV0udG9KU09OKCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMuYXV0b0Nsb3NlPXQuYXV0b0Nsb3NlLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dC5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5jdXJ2ZXNbZV07dGhpcy5jdXJ2ZXMucHVzaCgobmV3IG5lZVtuLnR5cGVdKS5mcm9tSlNPTihuKSl9cmV0dXJuIHRoaXN9fWNsYXNzIHJlZSBleHRlbmRzIGllZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iUGF0aCIsdGhpcy5jdXJyZW50UG9pbnQ9bmV3IEQ1dCx0JiZ0aGlzLnNldEZyb21Qb2ludHModCl9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1vdmVUbyh0WzBdLngsdFswXS55KTtmb3IobGV0IGU9MSxuPXQubGVuZ3RoO2U8bjtlKyspdGhpcy5saW5lVG8odFtlXS54LHRbZV0ueSk7cmV0dXJuIHRoaXN9bW92ZVRvKHQsZSl7cmV0dXJuIHRoaXMuY3VycmVudFBvaW50LnNldCh0LGUpLHRoaXN9bGluZVRvKHQsZSl7Y29uc3Qgbj1uZXcgWnRlKHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IEQ1dCh0LGUpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChuKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQodCxlKSx0aGlzfXF1YWRyYXRpY0N1cnZlVG8odCxlLG4saSl7Y29uc3Qgcj1uZXcgUXRlKHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IEQ1dCh0LGUpLG5ldyBENXQobixpKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gociksdGhpcy5jdXJyZW50UG9pbnQuc2V0KG4saSksdGhpc31iZXppZXJDdXJ2ZVRvKHQsZSxuLGkscixvKXtjb25zdCBhPW5ldyAkdGUodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgRDV0KHQsZSksbmV3IEQ1dChuLGkpLG5ldyBENXQocixvKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2goYSksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHIsbyksdGhpc31zcGxpbmVUaHJ1KHQpe2NvbnN0IGU9W3RoaXMuY3VycmVudFBvaW50LmNsb25lKCldLmNvbmNhdCh0KSxuPW5ldyBlZWUoZSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gobiksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0W3QubGVuZ3RoLTFdKSx0aGlzfWFyYyh0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuYWJzYXJjKHQrdGhpcy5jdXJyZW50UG9pbnQueCxlK3RoaXMuY3VycmVudFBvaW50LnksbixpLHIsbyksdGhpc31hYnNhcmModCxlLG4saSxyLG8pe3JldHVybiB0aGlzLmFic2VsbGlwc2UodCxlLG4sbixpLHIsbyksdGhpc31lbGxpcHNlKHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0K3RoaXMuY3VycmVudFBvaW50LngsZSt0aGlzLmN1cnJlbnRQb2ludC55LG4saSxyLG8sYSxzKSx0aGlzfWFic2VsbGlwc2UodCxlLG4saSxyLG8sYSxzKXtjb25zdCBsPW5ldyBCdGUodCxlLG4saSxyLG8sYSxzKTtpZih0aGlzLmN1cnZlcy5sZW5ndGg+MCl7Y29uc3QgdD1sLmdldFBvaW50KDApO3QuZXF1YWxzKHRoaXMuY3VycmVudFBvaW50KXx8dGhpcy5saW5lVG8odC54LHQueSl9dGhpcy5jdXJ2ZXMucHVzaChsKTtjb25zdCBjPWwuZ2V0UG9pbnQoMSk7cmV0dXJuIHRoaXMuY3VycmVudFBvaW50LmNvcHkoYyksdGhpc31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY3VycmVudFBvaW50LmNvcHkodC5jdXJyZW50UG9pbnQpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5jdXJyZW50UG9pbnQ9dGhpcy5jdXJyZW50UG9pbnQudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMuY3VycmVudFBvaW50LmZyb21BcnJheSh0LmN1cnJlbnRQb2ludCksdGhpc319Y2xhc3Mgb2VlIGV4dGVuZHMgcmVle2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMudXVpZD1nNXQoKSx0aGlzLnR5cGU9IlNoYXBlIix0aGlzLmhvbGVzPVtdfWdldFBvaW50c0hvbGVzKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10aGlzLmhvbGVzLmxlbmd0aDtuPGk7bisrKWVbbl09dGhpcy5ob2xlc1tuXS5nZXRQb2ludHModCk7cmV0dXJuIGV9ZXh0cmFjdFBvaW50cyh0KXtyZXR1cm57c2hhcGU6dGhpcy5nZXRQb2ludHModCksaG9sZXM6dGhpcy5nZXRQb2ludHNIb2xlcyh0KX19Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10LmhvbGVzLmxlbmd0aDtlPG47ZSsrKXt0aGlzLmhvbGVzLnB1c2godC5ob2xlc1tlXS5jbG9uZSgpKX1yZXR1cm4gdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QudXVpZD10aGlzLnV1aWQsdC5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXRoaXMuaG9sZXMubGVuZ3RoO2U8bjtlKyspe3QuaG9sZXMucHVzaCh0aGlzLmhvbGVzW2VdLnRvSlNPTigpKX1yZXR1cm4gdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLnV1aWQ9dC51dWlkLHRoaXMuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10LmhvbGVzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXQuaG9sZXNbZV07dGhpcy5ob2xlcy5wdXNoKChuZXcgcmVlKS5mcm9tSlNPTihuKSl9cmV0dXJuIHRoaXN9fWNvbnN0IGFlZT1mdW5jdGlvbih0LGUsbj0yKXtjb25zdCBpPWUmJmUubGVuZ3RoLHI9aT9lWzBdKm46dC5sZW5ndGg7bGV0IG89c2VlKHQsMCxyLG4sITApO2NvbnN0IGE9W107aWYoIW98fG8ubmV4dD09PW8ucHJldilyZXR1cm4gYTtsZXQgcyxsLGMsdSxoLGQscDtpZihpJiYobz0oZnVuY3Rpb24gZih0LGUsbixpKXtjb25zdCByPVtdO2xldCBvLGEscyxsLGM7Zm9yKG89MCxhPWUubGVuZ3RoO288YTtvKyspcz1lW29dKmksbD1vPGEtMT9lW28rMV0qaTp0Lmxlbmd0aCxjPXNlZSh0LHMsbCxpLCExKSxjPT09Yy5uZXh0JiYoYy5zdGVpbmVyPSEwKSxyLnB1c2goeWVlKGMpKTtmb3Ioci5zb3J0KGZlZSksbz0wO288ci5sZW5ndGg7bysrKW1lZShyW29dLG4pLG49bGVlKG4sbi5uZXh0KTtyZXR1cm4gbn0pKHQsZSxvLG4pKSx0Lmxlbmd0aD44MCpuKXtzPWM9dFswXSxsPXU9dFsxXTtmb3IobGV0IGU9bjtlPHI7ZSs9biloPXRbZV0sZD10W2UrMV0saDxzJiYocz1oKSxkPGwmJihsPWQpLGg+YyYmKGM9aCksZD51JiYodT1kKTtwPU1hdGgubWF4KGMtcyx1LWwpLHA9MCE9PXA/MS9wOjB9cmV0dXJuIGNlZShvLGEsbixzLGwscCksYX07ZnVuY3Rpb24gc2VlKHQsZSxuLGkscil7bGV0IG8sYTtpZihyPT09KGZ1bmN0aW9uIHModCxlLG4saSl7bGV0IHI9MDtmb3IobGV0IG89ZSxhPW4taTtvPG47bys9aSlyKz0odFthXS10W29dKSoodFtvKzFdK3RbYSsxXSksYT1vO3JldHVybiByfSkodCxlLG4saSk+MClmb3Iobz1lO288bjtvKz1pKWE9QWVlKG8sdFtvXSx0W28rMV0sYSk7ZWxzZSBmb3Iobz1uLWk7bz49ZTtvLT1pKWE9QWVlKG8sdFtvXSx0W28rMV0sYSk7cmV0dXJuIGEmJndlZShhLGEubmV4dCkmJihrZWUoYSksYT1hLm5leHQpLGF9ZnVuY3Rpb24gbGVlKHQsZSl7aWYoIXQpcmV0dXJuIHQ7ZXx8KGU9dCk7bGV0IG4saT10O2Rve2lmKG49ITEsaS5zdGVpbmVyfHwhd2VlKGksaS5uZXh0KSYmMCE9PXhlZShpLnByZXYsaSxpLm5leHQpKWk9aS5uZXh0O2Vsc2V7aWYoa2VlKGkpLGk9ZT1pLnByZXYsaT09PWkubmV4dClicmVhaztuPSEwfX13aGlsZShufHxpIT09ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gY2VlKHQsZSxuLGkscixvLGEpe2lmKCF0KXJldHVybjshYSYmbyYmKGZ1bmN0aW9uIHModCxlLG4saSl7bGV0IHI9dDtkb3tudWxsPT09ci56JiYoci56PV9lZShyLngsci55LGUsbixpKSksci5wcmV2Wj1yLnByZXYsci5uZXh0Wj1yLm5leHQscj1yLm5leHR9d2hpbGUociE9PXQpO3IucHJldloubmV4dFo9bnVsbCxyLnByZXZaPW51bGwsKGZ1bmN0aW9uIG8odCl7bGV0IGUsbixpLHIsbyxhLHMsbCxjPTE7ZG97Zm9yKG49dCx0PW51bGwsbz1udWxsLGE9MDtuOyl7Zm9yKGErKyxpPW4scz0wLGU9MDtlPGMmJihzKyssaT1pLm5leHRaLGkpO2UrKyk7Zm9yKGw9YztzPjB8fGw+MCYmaTspMCE9PXMmJigwPT09bHx8IWl8fG4uejw9aS56KT8ocj1uLG49bi5uZXh0WixzLS0pOihyPWksaT1pLm5leHRaLGwtLSksbz9vLm5leHRaPXI6dD1yLHIucHJldlo9byxvPXI7bj1pfW8ubmV4dFo9bnVsbCxjKj0yfXdoaWxlKGE+MSk7cmV0dXJuIHR9KShyKX0pKHQsaSxyLG8pO2xldCBsLGMsdT10O2Zvcig7dC5wcmV2IT09dC5uZXh0OylpZihsPXQucHJldixjPXQubmV4dCxvP2hlZSh0LGkscixvKTp1ZWUodCkpZS5wdXNoKGwuaS9uKSxlLnB1c2godC5pL24pLGUucHVzaChjLmkvbiksa2VlKHQpLHQ9Yy5uZXh0LHU9Yy5uZXh0O2Vsc2UgaWYoKHQ9Yyk9PT11KXthPzE9PT1hP2NlZSh0PWRlZShsZWUodCksZSxuKSxlLG4saSxyLG8sMik6Mj09PWEmJnBlZSh0LGUsbixpLHIsbyk6Y2VlKGxlZSh0KSxlLG4saSxyLG8sMSk7YnJlYWt9fWZ1bmN0aW9uIHVlZSh0KXtjb25zdCBlPXQucHJldixuPXQsaT10Lm5leHQ7aWYoeGVlKGUsbixpKT49MClyZXR1cm4hMTtsZXQgcj10Lm5leHQubmV4dDtmb3IoO3IhPT10LnByZXY7KXtpZih2ZWUoZS54LGUueSxuLngsbi55LGkueCxpLnksci54LHIueSkmJnhlZShyLnByZXYscixyLm5leHQpPj0wKXJldHVybiExO3I9ci5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIGhlZSh0LGUsbixpKXtjb25zdCByPXQucHJldixvPXQsYT10Lm5leHQ7aWYoeGVlKHIsbyxhKT49MClyZXR1cm4hMTtjb25zdCBzPXIueD5vLng/ci54PmEueD9yLng6YS54Om8ueD5hLng/by54OmEueCxsPXIueT5vLnk/ci55PmEueT9yLnk6YS55Om8ueT5hLnk/by55OmEueSxjPV9lZShyLng8by54P3IueDxhLng/ci54OmEueDpvLng8YS54P28ueDphLngsci55PG8ueT9yLnk8YS55P3IueTphLnk6by55PGEueT9vLnk6YS55LGUsbixpKSx1PV9lZShzLGwsZSxuLGkpO2xldCBoPXQucHJldlosZD10Lm5leHRaO2Zvcig7aCYmaC56Pj1jJiZkJiZkLno8PXU7KXtpZihoIT09dC5wcmV2JiZoIT09dC5uZXh0JiZ2ZWUoci54LHIueSxvLngsby55LGEueCxhLnksaC54LGgueSkmJnhlZShoLnByZXYsaCxoLm5leHQpPj0wKXJldHVybiExO2lmKGg9aC5wcmV2WixkIT09dC5wcmV2JiZkIT09dC5uZXh0JiZ2ZWUoci54LHIueSxvLngsby55LGEueCxhLnksZC54LGQueSkmJnhlZShkLnByZXYsZCxkLm5leHQpPj0wKXJldHVybiExO2Q9ZC5uZXh0Wn1mb3IoO2gmJmguej49Yzspe2lmKGghPT10LnByZXYmJmghPT10Lm5leHQmJnZlZShyLngsci55LG8ueCxvLnksYS54LGEueSxoLngsaC55KSYmeGVlKGgucHJldixoLGgubmV4dCk+PTApcmV0dXJuITE7aD1oLnByZXZafWZvcig7ZCYmZC56PD11Oyl7aWYoZCE9PXQucHJldiYmZCE9PXQubmV4dCYmdmVlKHIueCxyLnksby54LG8ueSxhLngsYS55LGQueCxkLnkpJiZ4ZWUoZC5wcmV2LGQsZC5uZXh0KT49MClyZXR1cm4hMTtkPWQubmV4dFp9cmV0dXJuITB9ZnVuY3Rpb24gZGVlKHQsZSxuKXtsZXQgaT10O2Rve2NvbnN0IHI9aS5wcmV2LG89aS5uZXh0Lm5leHQ7IXdlZShyLG8pJiZTZWUocixpLGkubmV4dCxvKSYmVGVlKHIsbykmJlRlZShvLHIpJiYoZS5wdXNoKHIuaS9uKSxlLnB1c2goaS5pL24pLGUucHVzaChvLmkvbiksa2VlKGkpLGtlZShpLm5leHQpLGk9dD1vKSxpPWkubmV4dH13aGlsZShpIT09dCk7cmV0dXJuIGxlZShpKX1mdW5jdGlvbiBwZWUodCxlLG4saSxyLG8pe2xldCBhPXQ7ZG97bGV0IHQ9YS5uZXh0Lm5leHQ7Zm9yKDt0IT09YS5wcmV2Oyl7aWYoYS5pIT09dC5pJiZiZWUoYSx0KSl7bGV0IHM9Q2VlKGEsdCk7cmV0dXJuIGE9bGVlKGEsYS5uZXh0KSxzPWxlZShzLHMubmV4dCksY2VlKGEsZSxuLGkscixvKSx2b2lkIGNlZShzLGUsbixpLHIsbyl9dD10Lm5leHR9YT1hLm5leHR9d2hpbGUoYSE9PXQpfWZ1bmN0aW9uIGZlZSh0LGUpe3JldHVybiB0LngtZS54fWZ1bmN0aW9uIG1lZSh0LGUpe2lmKGU9KGZ1bmN0aW9uIG4odCxlKXtsZXQgbj1lO2NvbnN0IGk9dC54LHI9dC55O2xldCBvLGE9LTEvMDtkb3tpZihyPD1uLnkmJnI+PW4ubmV4dC55JiZuLm5leHQueSE9PW4ueSl7Y29uc3QgdD1uLngrKHItbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZih0PD1pJiZ0PmEpe2lmKGE9dCx0PT09aSl7aWYocj09PW4ueSlyZXR1cm4gbjtpZihyPT09bi5uZXh0LnkpcmV0dXJuIG4ubmV4dH1vPW4ueDxuLm5leHQueD9uOm4ubmV4dH19bj1uLm5leHR9d2hpbGUobiE9PWUpO2lmKCFvKXJldHVybiBudWxsO2lmKGk9PT1hKXJldHVybiBvO2NvbnN0IHM9byxsPW8ueCxjPW8ueTtsZXQgdSxoPTEvMDtuPW87ZG97aT49bi54JiZuLng+PWwmJmkhPT1uLngmJnZlZShyPGM/aTphLHIsbCxjLHI8Yz9hOmkscixuLngsbi55KSYmKHU9TWF0aC5hYnMoci1uLnkpLyhpLW4ueCksVGVlKG4sdCkmJih1PGh8fHU9PT1oJiYobi54Pm8ueHx8bi54PT09by54JiZnZWUobyxuKSkpJiYobz1uLGg9dSkpLG49bi5uZXh0fXdoaWxlKG4hPT1zKTtyZXR1cm4gb30pKHQsZSkpe2NvbnN0IG49Q2VlKGUsdCk7bGVlKGUsZS5uZXh0KSxsZWUobixuLm5leHQpfX1mdW5jdGlvbiBnZWUodCxlKXtyZXR1cm4geGVlKHQucHJldix0LGUucHJldik8MCYmeGVlKGUubmV4dCx0LHQubmV4dCk8MH1mdW5jdGlvbiBfZWUodCxlLG4saSxyKXtyZXR1cm4odD0xNDMxNjU1NzY1JigodD04NTg5OTM0NTkmKCh0PTI1MjY0NTEzNSYoKHQ9MTY3MTE5MzUmKCh0PTMyNzY3Kih0LW4pKnIpfHQ8PDgpKXx0PDw0KSl8dDw8MikpfHQ8PDEpKXwoZT0xNDMxNjU1NzY1JigoZT04NTg5OTM0NTkmKChlPTI1MjY0NTEzNSYoKGU9MTY3MTE5MzUmKChlPTMyNzY3KihlLWkpKnIpfGU8PDgpKXxlPDw0KSl8ZTw8MikpfGU8PDEpKTw8MX1mdW5jdGlvbiB5ZWUodCl7bGV0IGU9dCxuPXQ7ZG97KGUueDxuLnh8fGUueD09PW4ueCYmZS55PG4ueSkmJihuPWUpLGU9ZS5uZXh0fXdoaWxlKGUhPT10KTtyZXR1cm4gbn1mdW5jdGlvbiB2ZWUodCxlLG4saSxyLG8sYSxzKXtyZXR1cm4oci1hKSooZS1zKS0odC1hKSooby1zKT49MCYmKHQtYSkqKGktcyktKG4tYSkqKGUtcyk+PTAmJihuLWEpKihvLXMpLShyLWEpKihpLXMpPj0wfWZ1bmN0aW9uIGJlZSh0LGUpe3JldHVybiB0Lm5leHQuaSE9PWUuaSYmdC5wcmV2LmkhPT1lLmkmJiEoZnVuY3Rpb24gbih0LGUpe2xldCBuPXQ7ZG97aWYobi5pIT09dC5pJiZuLm5leHQuaSE9PXQuaSYmbi5pIT09ZS5pJiZuLm5leHQuaSE9PWUuaSYmU2VlKG4sbi5uZXh0LHQsZSkpcmV0dXJuITA7bj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiExfSkodCxlKSYmKFRlZSh0LGUpJiZUZWUoZSx0KSYmKGZ1bmN0aW9uIGkodCxlKXtsZXQgbj10LGk9ITE7Y29uc3Qgcj0odC54K2UueCkvMixvPSh0LnkrZS55KS8yO2Rve24ueT5vIT1uLm5leHQueT5vJiZuLm5leHQueSE9PW4ueSYmcjwobi5uZXh0Lngtbi54KSooby1uLnkpLyhuLm5leHQueS1uLnkpK24ueCYmKGk9IWkpLG49bi5uZXh0fXdoaWxlKG4hPT10KTtyZXR1cm4gaX0pKHQsZSkmJih4ZWUodC5wcmV2LHQsZS5wcmV2KXx8eGVlKHQsZS5wcmV2LGUpKXx8d2VlKHQsZSkmJnhlZSh0LnByZXYsdCx0Lm5leHQpPjAmJnhlZShlLnByZXYsZSxlLm5leHQpPjApfWZ1bmN0aW9uIHhlZSh0LGUsbil7cmV0dXJuKGUueS10LnkpKihuLngtZS54KS0oZS54LXQueCkqKG4ueS1lLnkpfWZ1bmN0aW9uIHdlZSh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1mdW5jdGlvbiBTZWUodCxlLG4saSl7Y29uc3Qgcj1FZWUoeGVlKHQsZSxuKSksbz1FZWUoeGVlKHQsZSxpKSksYT1FZWUoeGVlKG4saSx0KSkscz1FZWUoeGVlKG4saSxlKSk7cmV0dXJuIHIhPT1vJiZhIT09c3x8KCEoMCE9PXJ8fCFNZWUodCxuLGUpKXx8KCEoMCE9PW98fCFNZWUodCxpLGUpKXx8KCEoMCE9PWF8fCFNZWUobix0LGkpKXx8ISgwIT09c3x8IU1lZShuLGUsaSkpKSkpfWZ1bmN0aW9uIE1lZSh0LGUsbil7cmV0dXJuIGUueDw9TWF0aC5tYXgodC54LG4ueCkmJmUueD49TWF0aC5taW4odC54LG4ueCkmJmUueTw9TWF0aC5tYXgodC55LG4ueSkmJmUueT49TWF0aC5taW4odC55LG4ueSl9ZnVuY3Rpb24gRWVlKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiBUZWUodCxlKXtyZXR1cm4geGVlKHQucHJldix0LHQubmV4dCk8MD94ZWUodCxlLHQubmV4dCk+PTAmJnhlZSh0LHQucHJldixlKT49MDp4ZWUodCxlLHQucHJldik8MHx8eGVlKHQsdC5uZXh0LGUpPDB9ZnVuY3Rpb24gQ2VlKHQsZSl7Y29uc3Qgbj1uZXcgUGVlKHQuaSx0LngsdC55KSxpPW5ldyBQZWUoZS5pLGUueCxlLnkpLHI9dC5uZXh0LG89ZS5wcmV2O3JldHVybiB0Lm5leHQ9ZSxlLnByZXY9dCxuLm5leHQ9cixyLnByZXY9bixpLm5leHQ9bixuLnByZXY9aSxvLm5leHQ9aSxpLnByZXY9byxpfWZ1bmN0aW9uIEFlZSh0LGUsbixpKXtjb25zdCByPW5ldyBQZWUodCxlLG4pO3JldHVybiBpPyhyLm5leHQ9aS5uZXh0LHIucHJldj1pLGkubmV4dC5wcmV2PXIsaS5uZXh0PXIpOihyLnByZXY9cixyLm5leHQ9cikscn1mdW5jdGlvbiBrZWUodCl7dC5uZXh0LnByZXY9dC5wcmV2LHQucHJldi5uZXh0PXQubmV4dCx0LnByZXZaJiYodC5wcmV2Wi5uZXh0Wj10Lm5leHRaKSx0Lm5leHRaJiYodC5uZXh0Wi5wcmV2Wj10LnByZXZaKX1mdW5jdGlvbiBQZWUodCxlLG4pe3RoaXMuaT10LHRoaXMueD1lLHRoaXMueT1uLHRoaXMucHJldj1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMuej1udWxsLHRoaXMucHJldlo9bnVsbCx0aGlzLm5leHRaPW51bGwsdGhpcy5zdGVpbmVyPSExfWNsYXNzIExlZXtzdGF0aWMgYXJlYSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBuPTA7Zm9yKGxldCBpPWUtMSxyPTA7cjxlO2k9cisrKW4rPXRbaV0ueCp0W3JdLnktdFtyXS54KnRbaV0ueTtyZXR1cm4uNSpufXN0YXRpYyBpc0Nsb2NrV2lzZSh0KXtyZXR1cm4gTGVlLmFyZWEodCk8MH1zdGF0aWMgdHJpYW5ndWxhdGVTaGFwZSh0LGUpe2NvbnN0IG49W10saT1bXSxyPVtdO0llZSh0KSxOZWUobix0KTtsZXQgbz10Lmxlbmd0aDtlLmZvckVhY2goSWVlKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpLnB1c2gobyksbys9ZVt0XS5sZW5ndGgsTmVlKG4sZVt0XSk7Y29uc3QgYT1hZWUobixpKTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrPTMpci5wdXNoKGEuc2xpY2UodCx0KzMpKTtyZXR1cm4gcn19ZnVuY3Rpb24gSWVlKHQpe2NvbnN0IGU9dC5sZW5ndGg7ZT4yJiZ0W2UtMV0uZXF1YWxzKHRbMF0pJiZ0LnBvcCgpfWZ1bmN0aW9uIE5lZSh0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQucHVzaChlW25dLngpLHQucHVzaChlW25dLnkpfWNsYXNzIFJlZSBleHRlbmRzIGo0dHtjb25zdHJ1Y3Rvcih0PW5ldyBvZWUoW25ldyBENXQoLjUsLjUpLG5ldyBENXQoLS41LC41KSxuZXcgRDV0KC0uNSwtLjUpLG5ldyBENXQoLjUsLS41KV0pLGU9e30pe3N1cGVyKCksdGhpcy50eXBlPSJFeHRydWRlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17c2hhcGVzOnQsb3B0aW9uczplfSx0PUFycmF5LmlzQXJyYXkodCk/dDpbdF07Y29uc3Qgbj10aGlzLGk9W10scj1bXTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe28odFtlXSl9ZnVuY3Rpb24gbyh0KXtjb25zdCBvPVtdLGE9dm9pZCAwIT09ZS5jdXJ2ZVNlZ21lbnRzP2UuY3VydmVTZWdtZW50czoxMixzPXZvaWQgMCE9PWUuc3RlcHM/ZS5zdGVwczoxO2xldCBsPXZvaWQgMCE9PWUuZGVwdGg/ZS5kZXB0aDoxLGM9dm9pZCAwPT09ZS5iZXZlbEVuYWJsZWR8fGUuYmV2ZWxFbmFibGVkLHU9dm9pZCAwIT09ZS5iZXZlbFRoaWNrbmVzcz9lLmJldmVsVGhpY2tuZXNzOi4yLGg9dm9pZCAwIT09ZS5iZXZlbFNpemU/ZS5iZXZlbFNpemU6dS0uMSxkPXZvaWQgMCE9PWUuYmV2ZWxPZmZzZXQ/ZS5iZXZlbE9mZnNldDowLHA9dm9pZCAwIT09ZS5iZXZlbFNlZ21lbnRzP2UuYmV2ZWxTZWdtZW50czozO2NvbnN0IGY9ZS5leHRydWRlUGF0aCxtPXZvaWQgMCE9PWUuVVZHZW5lcmF0b3I/ZS5VVkdlbmVyYXRvcjpPZWU7dm9pZCAwIT09ZS5hbW91bnQmJihjb25zb2xlLndhcm4oIlRIUkVFLkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTogYW1vdW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gZGVwdGguIiksbD1lLmFtb3VudCk7bGV0IGcsXyx5LHYsYix4PSExO2YmJihnPWYuZ2V0U3BhY2VkUG9pbnRzKHMpLHg9ITAsYz0hMSxfPWYuY29tcHV0ZUZyZW5ldEZyYW1lcyhzLCExKSx5PW5ldyBhM3Qsdj1uZXcgYTN0LGI9bmV3IGEzdCksY3x8KHA9MCx1PTAsaD0wLGQ9MCk7Y29uc3Qgdz10LmV4dHJhY3RQb2ludHMoYSk7bGV0IFM9dy5zaGFwZTtjb25zdCBNPXcuaG9sZXM7aWYoIUxlZS5pc0Nsb2NrV2lzZShTKSl7Uz1TLnJldmVyc2UoKTtmb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9TVt0XTtMZWUuaXNDbG9ja1dpc2UoZSkmJihNW3RdPWUucmV2ZXJzZSgpKX19Y29uc3QgRT1MZWUudHJpYW5ndWxhdGVTaGFwZShTLE0pLFQ9Uztmb3IobGV0IHQ9MCxlPU0ubGVuZ3RoO3Q8ZTt0Kyspe1M9Uy5jb25jYXQoTVt0XSl9ZnVuY3Rpb24gQyh0LGUsbil7cmV0dXJuIGV8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogdmVjIGRvZXMgbm90IGV4aXN0IiksZS5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKG4pLmFkZCh0KX1jb25zdCBBPVMubGVuZ3RoLGs9RS5sZW5ndGg7ZnVuY3Rpb24gUCh0LGUsbil7bGV0IGkscixvO2NvbnN0IGE9dC54LWUueCxzPXQueS1lLnksbD1uLngtdC54LGM9bi55LXQueSx1PWEqYStzKnM7aWYoTWF0aC5hYnMoYSpjLXMqbCk+TnVtYmVyLkVQU0lMT04pe2NvbnN0IGg9TWF0aC5zcXJ0KHUpLGQ9TWF0aC5zcXJ0KGwqbCtjKmMpLHA9ZS54LXMvaCxmPWUueSthL2gsbT0oKG4ueC1jL2QtcCkqYy0obi55K2wvZC1mKSpsKS8oYSpjLXMqbCk7aT1wK2EqbS10Lngscj1mK3MqbS10Lnk7Y29uc3QgZz1pKmkrcipyO2lmKGc8PTIpcmV0dXJuIG5ldyBENXQoaSxyKTtvPU1hdGguc3FydChnLzIpfWVsc2V7bGV0IHQ9ITE7YT5OdW1iZXIuRVBTSUxPTj9sPk51bWJlci5FUFNJTE9OJiYodD0hMCk6YTwtTnVtYmVyLkVQU0lMT04/bDwtTnVtYmVyLkVQU0lMT04mJih0PSEwKTpNYXRoLnNpZ24ocyk9PT1NYXRoLnNpZ24oYykmJih0PSEwKSx0PyhpPS1zLHI9YSxvPU1hdGguc3FydCh1KSk6KGk9YSxyPXMsbz1NYXRoLnNxcnQodS8yKSl9cmV0dXJuIG5ldyBENXQoaS9vLHIvbyl9Y29uc3QgTD1bXTtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoLG49ZS0xLGk9dCsxO3Q8ZTt0KyssbisrLGkrKyluPT09ZSYmKG49MCksaT09PWUmJihpPTApLExbdF09UChUW3RdLFRbbl0sVFtpXSk7Y29uc3QgST1bXTtsZXQgTixSPUwuY29uY2F0KCk7Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07Tj1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoLGk9bi0xLHI9dCsxO3Q8bjt0KyssaSsrLHIrKylpPT09biYmKGk9MCkscj09PW4mJihyPTApLE5bdF09UChlW3RdLGVbaV0sZVtyXSk7SS5wdXNoKE4pLFI9Ui5jb25jYXQoTil9Zm9yKGxldCB0PTA7dDxwO3QrKyl7Y29uc3QgZT10L3Asbj11Kk1hdGguY29zKGUqTWF0aC5QSS8yKSxpPWgqTWF0aC5zaW4oZSpNYXRoLlBJLzIpK2Q7Zm9yKGxldCB0PTAsZT1ULmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPUMoVFt0XSxMW3RdLGkpO0QoZS54LGUueSwtbil9Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07Tj1JW3RdO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1DKGVbdF0sTlt0XSxpKTtEKHIueCxyLnksLW4pfX19Y29uc3QgTz1oK2Q7Zm9yKGxldCB0PTA7dDxBO3QrKyl7Y29uc3QgZT1jP0MoU1t0XSxSW3RdLE8pOlNbdF07eD8odi5jb3B5KF8ubm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoZS54KSx5LmNvcHkoXy5iaW5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGUueSksYi5jb3B5KGdbMF0pLmFkZCh2KS5hZGQoeSksRChiLngsYi55LGIueikpOkQoZS54LGUueSwwKX1mb3IobGV0IHQ9MTt0PD1zO3QrKylmb3IobGV0IGU9MDtlPEE7ZSsrKXtjb25zdCBuPWM/QyhTW2VdLFJbZV0sTyk6U1tlXTt4Pyh2LmNvcHkoXy5ub3JtYWxzW3RdKS5tdWx0aXBseVNjYWxhcihuLngpLHkuY29weShfLmJpbm9ybWFsc1t0XSkubXVsdGlwbHlTY2FsYXIobi55KSxiLmNvcHkoZ1t0XSkuYWRkKHYpLmFkZCh5KSxEKGIueCxiLnksYi56KSk6RChuLngsbi55LGwvcyp0KX1mb3IobGV0IHQ9cC0xO3Q+PTA7dC0tKXtjb25zdCBlPXQvcCxuPXUqTWF0aC5jb3MoZSpNYXRoLlBJLzIpLGk9aCpNYXRoLnNpbihlKk1hdGguUEkvMikrZDtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9QyhUW3RdLExbdF0saSk7RChlLngsZS55LGwrbil9Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07Tj1JW3RdO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1DKGVbdF0sTlt0XSxpKTt4P0Qoci54LHIueStnW3MtMV0ueSxnW3MtMV0ueCtuKTpEKHIueCxyLnksbCtuKX19fWZ1bmN0aW9uIHoodCxlKXtsZXQgbj10Lmxlbmd0aDtmb3IoOy0tbj49MDspe2NvbnN0IGk9bjtsZXQgcj1uLTE7cjwwJiYocj10Lmxlbmd0aC0xKTtmb3IobGV0IHQ9MCxuPXMrMipwO3Q8bjt0Kyspe2NvbnN0IG49QSp0LG89QSoodCsxKTtIKGUraStuLGUrcituLGUrcitvLGUraStvKX19fWZ1bmN0aW9uIEQodCxlLG4pe28ucHVzaCh0KSxvLnB1c2goZSksby5wdXNoKG4pfWZ1bmN0aW9uIEIodCxlLHIpe0YodCksRihlKSxGKHIpO2NvbnN0IG89aS5sZW5ndGgvMyxhPW0uZ2VuZXJhdGVUb3BVVihuLGksby0zLG8tMixvLTEpO1YoYVswXSksVihhWzFdKSxWKGFbMl0pfWZ1bmN0aW9uIEgodCxlLHIsbyl7Rih0KSxGKGUpLEYobyksRihlKSxGKHIpLEYobyk7Y29uc3QgYT1pLmxlbmd0aC8zLHM9bS5nZW5lcmF0ZVNpZGVXYWxsVVYobixpLGEtNixhLTMsYS0yLGEtMSk7VihzWzBdKSxWKHNbMV0pLFYoc1szXSksVihzWzFdKSxWKHNbMl0pLFYoc1szXSl9ZnVuY3Rpb24gRih0KXtpLnB1c2gob1szKnQrMF0pLGkucHVzaChvWzMqdCsxXSksaS5wdXNoKG9bMyp0KzJdKX1mdW5jdGlvbiBWKHQpe3IucHVzaCh0LngpLHIucHVzaCh0LnkpfSEoZnVuY3Rpb24gVSgpe2NvbnN0IHQ9aS5sZW5ndGgvMztpZihjKXtsZXQgdD0wLGU9QSp0O2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IG49RVt0XTtCKG5bMl0rZSxuWzFdK2UsblswXStlKX10PXMrMipwLGU9QSp0O2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IG49RVt0XTtCKG5bMF0rZSxuWzFdK2UsblsyXStlKX19ZWxzZXtmb3IobGV0IHQ9MDt0PGs7dCsrKXtjb25zdCBlPUVbdF07QihlWzJdLGVbMV0sZVswXSl9Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgZT1FW3RdO0IoZVswXStBKnMsZVsxXStBKnMsZVsyXStBKnMpfX1uLmFkZEdyb3VwKHQsaS5sZW5ndGgvMy10LDApfSkoKSwoZnVuY3Rpb24gaigpe2NvbnN0IHQ9aS5sZW5ndGgvMztsZXQgZT0wO3ooVCxlKSxlKz1ULmxlbmd0aDtmb3IobGV0IHQ9MCxuPU0ubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49TVt0XTt6KG4sZSksZSs9bi5sZW5ndGh9bi5hZGRHcm91cCh0LGkubGVuZ3RoLzMtdCwxKX0pKCl9dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFI0dChyLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4oZnVuY3Rpb24gZSh0LG4saSl7aWYoaS5zaGFwZXM9W10sQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2kuc2hhcGVzLnB1c2godFtlXS51dWlkKX1lbHNlIGkuc2hhcGVzLnB1c2godC51dWlkKTt2b2lkIDAhPT1uLmV4dHJ1ZGVQYXRoJiYoaS5vcHRpb25zLmV4dHJ1ZGVQYXRoPW4uZXh0cnVkZVBhdGgudG9KU09OKCkpO3JldHVybiBpfSkodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0aGlzLnBhcmFtZXRlcnMub3B0aW9ucyx0KX1zdGF0aWMgZnJvbUpTT04odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgaT0wLHI9dC5zaGFwZXMubGVuZ3RoO2k8cjtpKyspe24ucHVzaChlW3Quc2hhcGVzW2ldXSl9Y29uc3QgaT10Lm9wdGlvbnMuZXh0cnVkZVBhdGg7cmV0dXJuIHZvaWQgMCE9PWkmJih0Lm9wdGlvbnMuZXh0cnVkZVBhdGg9KG5ldyBuZWVbaS50eXBlXSkuZnJvbUpTT04oaSkpLG5ldyBSZWUobix0Lm9wdGlvbnMpfX1jb25zdCBPZWU9e2dlbmVyYXRlVG9wVVY6ZnVuY3Rpb24odCxlLG4saSxyKXtjb25zdCBvPWVbMyppXSxhPWVbMyppKzFdLHM9ZVszKnJdLGw9ZVszKnIrMV07cmV0dXJuW25ldyBENXQoZVszKm5dLGVbMypuKzFdKSxuZXcgRDV0KG8sYSksbmV3IEQ1dChzLGwpXX0sZ2VuZXJhdGVTaWRlV2FsbFVWOmZ1bmN0aW9uKHQsZSxuLGkscixvKXtjb25zdCBhPWVbMypuXSxzPWVbMypuKzFdLGw9ZVszKm4rMl0sYz1lWzMqaV0sdT1lWzMqaSsxXSxoPWVbMyppKzJdLGQ9ZVszKnJdLHA9ZVszKnIrMV0sZj1lWzMqcisyXSxtPWVbMypvXSxnPWVbMypvKzFdLF89ZVszKm8rMl07cmV0dXJuIE1hdGguYWJzKHMtdSk8TWF0aC5hYnMoYS1jKT9bbmV3IEQ1dChhLDEtbCksbmV3IEQ1dChjLDEtaCksbmV3IEQ1dChkLDEtZiksbmV3IEQ1dChtLDEtXyldOltuZXcgRDV0KHMsMS1sKSxuZXcgRDV0KHUsMS1oKSxuZXcgRDV0KHAsMS1mKSxuZXcgRDV0KGcsMS1fKV19fTtjbGFzcyB6ZWUgZXh0ZW5kcyBQdGV7Y29uc3RydWN0b3IodD0xLGU9MCl7Y29uc3Qgbj0oMStNYXRoLnNxcnQoNSkpLzI7c3VwZXIoWy0xLG4sMCwxLG4sMCwtMSwtbiwwLDEsLW4sMCwwLC0xLG4sMCwxLG4sMCwtMSwtbiwwLDEsLW4sbiwwLC0xLG4sMCwxLC1uLDAsLTEsLW4sMCwxXSxbMCwxMSw1LDAsNSwxLDAsMSw3LDAsNywxMCwwLDEwLDExLDEsNSw5LDUsMTEsNCwxMSwxMCwyLDEwLDcsNiw3LDEsOCwzLDksNCwzLDQsMiwzLDIsNiwzLDYsOCwzLDgsOSw0LDksNSwyLDQsMTEsNiwyLDEwLDgsNiw3LDksOCwxXSx0LGUpLHRoaXMudHlwZT0iSWNvc2FoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6ZX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgemVlKHQucmFkaXVzLHQuZGV0YWlsKX19Y2xhc3MgRGVlIGV4dGVuZHMgajR0e2NvbnN0cnVjdG9yKHQ9W25ldyBENXQoMCwuNSksbmV3IEQ1dCguNSwwKSxuZXcgRDV0KDAsLS41KV0sZT0xMixuPTAsaT0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJMYXRoZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3BvaW50czp0LHNlZ21lbnRzOmUscGhpU3RhcnQ6bixwaGlMZW5ndGg6aX0sZT1NYXRoLmZsb29yKGUpLGk9XzV0KGksMCwyKk1hdGguUEkpO2NvbnN0IHI9W10sbz1bXSxhPVtdLHM9W10sbD1bXSxjPTEvZSx1PW5ldyBhM3QsaD1uZXcgRDV0LGQ9bmV3IGEzdCxwPW5ldyBhM3QsZj1uZXcgYTN0O2xldCBtPTAsZz0wO2ZvcihsZXQgZT0wO2U8PXQubGVuZ3RoLTE7ZSsrKXN3aXRjaChlKXtjYXNlIDA6bT10W2UrMV0ueC10W2VdLngsZz10W2UrMV0ueS10W2VdLnksZC54PTEqZyxkLnk9LW0sZC56PTAqZyxmLmNvcHkoZCksZC5ub3JtYWxpemUoKSxzLnB1c2goZC54LGQueSxkLnopO2JyZWFrO2Nhc2UgdC5sZW5ndGgtMTpzLnB1c2goZi54LGYueSxmLnopO2JyZWFrO2RlZmF1bHQ6bT10W2UrMV0ueC10W2VdLngsZz10W2UrMV0ueS10W2VdLnksZC54PTEqZyxkLnk9LW0sZC56PTAqZyxwLmNvcHkoZCksZC54Kz1mLngsZC55Kz1mLnksZC56Kz1mLnosZC5ub3JtYWxpemUoKSxzLnB1c2goZC54LGQueSxkLnopLGYuY29weShwKX1mb3IobGV0IHI9MDtyPD1lO3IrKyl7Y29uc3QgZD1uK3IqYyppLHA9TWF0aC5zaW4oZCksZj1NYXRoLmNvcyhkKTtmb3IobGV0IG49MDtuPD10Lmxlbmd0aC0xO24rKyl7dS54PXRbbl0ueCpwLHUueT10W25dLnksdS56PXRbbl0ueCpmLG8ucHVzaCh1LngsdS55LHUueiksaC54PXIvZSxoLnk9bi8odC5sZW5ndGgtMSksYS5wdXNoKGgueCxoLnkpO2wucHVzaChzWzMqbiswXSpwLHNbMypuKzFdLHNbMypuKzBdKmYpfX1mb3IobGV0IG49MDtuPGU7bisrKWZvcihsZXQgZT0wO2U8dC5sZW5ndGgtMTtlKyspe2NvbnN0IGk9ZStuKnQubGVuZ3RoLG89aSt0Lmxlbmd0aCxhPWkrdC5sZW5ndGgrMSxzPWkrMTtyLnB1c2goaSxvLHMpLHIucHVzaChhLHMsbyl9dGhpcy5zZXRJbmRleChyKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBSNHQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUjR0KGEsMikpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBSNHQobCwzKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgRGVlKHQucG9pbnRzLHQuc2VnbWVudHMsdC5waGlTdGFydCx0LnBoaUxlbmd0aCl9fWNsYXNzIEJlZSBleHRlbmRzIFB0ZXtjb25zdHJ1Y3Rvcih0PTEsZT0wKXtzdXBlcihbMSwwLDAsLTEsMCwwLDAsMSwwLDAsLTEsMCwwLDAsMSwwLDAsLTFdLFswLDIsNCwwLDQsMywwLDMsNSwwLDUsMiwxLDIsNSwxLDUsMywxLDMsNCwxLDQsMl0sdCxlKSx0aGlzLnR5cGU9Ik9jdGFoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6ZX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgQmVlKHQucmFkaXVzLHQuZGV0YWlsKX19Y2xhc3MgSGVlIGV4dGVuZHMgajR0e2NvbnN0cnVjdG9yKHQ9LjUsZT0xLG49OCxpPTEscj0wLG89MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iUmluZ0dlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e2lubmVyUmFkaXVzOnQsb3V0ZXJSYWRpdXM6ZSx0aGV0YVNlZ21lbnRzOm4scGhpU2VnbWVudHM6aSx0aGV0YVN0YXJ0OnIsdGhldGFMZW5ndGg6b30sbj1NYXRoLm1heCgzLG4pO2NvbnN0IGE9W10scz1bXSxsPVtdLGM9W107bGV0IHU9dDtjb25zdCBoPShlLXQpLyhpPU1hdGgubWF4KDEsaSkpLGQ9bmV3IGEzdCxwPW5ldyBENXQ7Zm9yKGxldCB0PTA7dDw9aTt0Kyspe2ZvcihsZXQgdD0wO3Q8PW47dCsrKXtjb25zdCBpPXIrdC9uKm87ZC54PXUqTWF0aC5jb3MoaSksZC55PXUqTWF0aC5zaW4oaSkscy5wdXNoKGQueCxkLnksZC56KSxsLnB1c2goMCwwLDEpLHAueD0oZC54L2UrMSkvMixwLnk9KGQueS9lKzEpLzIsYy5wdXNoKHAueCxwLnkpfXUrPWh9Zm9yKGxldCB0PTA7dDxpO3QrKyl7Y29uc3QgZT10KihuKzEpO2ZvcihsZXQgdD0wO3Q8bjt0Kyspe2NvbnN0IGk9dCtlLHI9aStuKzEsbz1pK24rMixzPWkrMTthLnB1c2goaSxyLHMpLGEucHVzaChyLG8scyl9fXRoaXMuc2V0SW5kZXgoYSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBSNHQobCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUjR0KGMsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEhlZSh0LmlubmVyUmFkaXVzLHQub3V0ZXJSYWRpdXMsdC50aGV0YVNlZ21lbnRzLHQucGhpU2VnbWVudHMsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX1jbGFzcyBGZWUgZXh0ZW5kcyBqNHR7Y29uc3RydWN0b3IodD1uZXcgb2VlKFtuZXcgRDV0KDAsLjUpLG5ldyBENXQoLS41LC0uNSksbmV3IEQ1dCguNSwtLjUpXSksZT0xMil7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYXBlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17c2hhcGVzOnQsY3VydmVTZWdtZW50czplfTtjb25zdCBuPVtdLGk9W10scj1bXSxvPVtdO2xldCBhPTAscz0wO2lmKCExPT09QXJyYXkuaXNBcnJheSh0KSlsKHQpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbCh0W2VdKSx0aGlzLmFkZEdyb3VwKGEscyxlKSxhKz1zLHM9MDtmdW5jdGlvbiBsKHQpe2NvbnN0IGE9aS5sZW5ndGgvMyxsPXQuZXh0cmFjdFBvaW50cyhlKTtsZXQgYz1sLnNoYXBlO2NvbnN0IHU9bC5ob2xlczshMT09PUxlZS5pc0Nsb2NrV2lzZShjKSYmKGM9Yy5yZXZlcnNlKCkpO2ZvcihsZXQgdD0wLGU9dS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT11W3RdOyEwPT09TGVlLmlzQ2xvY2tXaXNlKGUpJiYodVt0XT1lLnJldmVyc2UoKSl9Y29uc3QgaD1MZWUudHJpYW5ndWxhdGVTaGFwZShjLHUpO2ZvcihsZXQgdD0wLGU9dS5sZW5ndGg7dDxlO3QrKyl7Yz1jLmNvbmNhdCh1W3RdKX1mb3IobGV0IHQ9MCxlPWMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9Y1t0XTtpLnB1c2goZS54LGUueSwwKSxyLnB1c2goMCwwLDEpLG8ucHVzaChlLngsZS55KX1mb3IobGV0IHQ9MCxlPWgubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9aFt0XTtuLnB1c2goZVswXSthLGVbMV0rYSxlWzJdK2EpLHMrPTN9fXRoaXMuc2V0SW5kZXgobiksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBSNHQociwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUjR0KG8sMikpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuKGZ1bmN0aW9uIGUodCxuKXtpZihuLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl7bi5zaGFwZXMucHVzaCh0W2VdLnV1aWQpfWVsc2Ugbi5zaGFwZXMucHVzaCh0LnV1aWQpO3JldHVybiBufSkodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0KX1zdGF0aWMgZnJvbUpTT04odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgaT0wLHI9dC5zaGFwZXMubGVuZ3RoO2k8cjtpKyspe24ucHVzaChlW3Quc2hhcGVzW2ldXSl9cmV0dXJuIG5ldyBGZWUobix0LmN1cnZlU2VnbWVudHMpfX1jbGFzcyBWZWUgZXh0ZW5kcyBqNHR7Y29uc3RydWN0b3IodD0xLGU9MzIsbj0xNixpPTAscj0yKk1hdGguUEksbz0wLGE9TWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwaGVyZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHdpZHRoU2VnbWVudHM6ZSxoZWlnaHRTZWdtZW50czpuLHBoaVN0YXJ0OmkscGhpTGVuZ3RoOnIsdGhldGFTdGFydDpvLHRoZXRhTGVuZ3RoOmF9LGU9TWF0aC5tYXgoMyxNYXRoLmZsb29yKGUpKSxuPU1hdGgubWF4KDIsTWF0aC5mbG9vcihuKSk7Y29uc3Qgcz1NYXRoLm1pbihvK2EsTWF0aC5QSSk7bGV0IGw9MDtjb25zdCBjPVtdLHU9bmV3IGEzdCxoPW5ldyBhM3QsZD1bXSxwPVtdLGY9W10sbT1bXTtmb3IobGV0IGQ9MDtkPD1uO2QrKyl7Y29uc3QgZz1bXSxfPWQvbjtsZXQgeT0wOzA9PWQmJjA9PW8/eT0uNS9lOmQ9PW4mJnM9PU1hdGguUEkmJih5PS0uNS9lKTtmb3IobGV0IG49MDtuPD1lO24rKyl7Y29uc3Qgcz1uL2U7dS54PS10Kk1hdGguY29zKGkrcypyKSpNYXRoLnNpbihvK18qYSksdS55PXQqTWF0aC5jb3MobytfKmEpLHUuej10Kk1hdGguc2luKGkrcypyKSpNYXRoLnNpbihvK18qYSkscC5wdXNoKHUueCx1LnksdS56KSxoLmNvcHkodSkubm9ybWFsaXplKCksZi5wdXNoKGgueCxoLnksaC56KSxtLnB1c2gocyt5LDEtXyksZy5wdXNoKGwrKyl9Yy5wdXNoKGcpfWZvcihsZXQgdD0wO3Q8bjt0KyspZm9yKGxldCBpPTA7aTxlO2krKyl7Y29uc3QgZT1jW3RdW2krMV0scj1jW3RdW2ldLGE9Y1t0KzFdW2ldLGw9Y1t0KzFdW2krMV07KDAhPT10fHxvPjApJiZkLnB1c2goZSxyLGwpLCh0IT09bi0xfHxzPE1hdGguUEkpJiZkLnB1c2gocixhLGwpfXRoaXMuc2V0SW5kZXgoZCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KHAsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBSNHQoZiwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUjR0KG0sMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IFZlZSh0LnJhZGl1cyx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0LnBoaVN0YXJ0LHQucGhpTGVuZ3RoLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgVWVlIGV4dGVuZHMgUHRle2NvbnN0cnVjdG9yKHQ9MSxlPTApe3N1cGVyKFsxLDEsMSwtMSwtMSwxLC0xLDEsLTEsMSwtMSwtMV0sWzIsMSwwLDAsMywyLDEsMywwLDIsMywxXSx0LGUpLHRoaXMudHlwZT0iVGV0cmFoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6ZX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgVWVlKHQucmFkaXVzLHQuZGV0YWlsKX19Y2xhc3MgamVlIGV4dGVuZHMgajR0e2NvbnN0cnVjdG9yKHQ9MSxlPS40LG49OCxpPTYscj0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJUb3J1c0dlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHR1YmU6ZSxyYWRpYWxTZWdtZW50czpuLHR1YnVsYXJTZWdtZW50czppLGFyYzpyfSxuPU1hdGguZmxvb3IobiksaT1NYXRoLmZsb29yKGkpO2NvbnN0IG89W10sYT1bXSxzPVtdLGw9W10sYz1uZXcgYTN0LHU9bmV3IGEzdCxoPW5ldyBhM3Q7Zm9yKGxldCBvPTA7bzw9bjtvKyspZm9yKGxldCBkPTA7ZDw9aTtkKyspe2NvbnN0IHA9ZC9pKnIsZj1vL24qTWF0aC5QSSoyO3UueD0odCtlKk1hdGguY29zKGYpKSpNYXRoLmNvcyhwKSx1Lnk9KHQrZSpNYXRoLmNvcyhmKSkqTWF0aC5zaW4ocCksdS56PWUqTWF0aC5zaW4oZiksYS5wdXNoKHUueCx1LnksdS56KSxjLng9dCpNYXRoLmNvcyhwKSxjLnk9dCpNYXRoLnNpbihwKSxoLnN1YlZlY3RvcnModSxjKS5ub3JtYWxpemUoKSxzLnB1c2goaC54LGgueSxoLnopLGwucHVzaChkL2kpLGwucHVzaChvL24pfWZvcihsZXQgdD0xO3Q8PW47dCsrKWZvcihsZXQgZT0xO2U8PWk7ZSsrKXtjb25zdCBuPShpKzEpKih0LTEpK2UtMSxyPShpKzEpKih0LTEpK2UsYT0oaSsxKSp0K2U7by5wdXNoKChpKzEpKnQrZS0xLG4sYSksby5wdXNoKG4scixhKX10aGlzLnNldEluZGV4KG8pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dChhLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgUjR0KHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFI0dChsLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBqZWUodC5yYWRpdXMsdC50dWJlLHQucmFkaWFsU2VnbWVudHMsdC50dWJ1bGFyU2VnbWVudHMsdC5hcmMpfX1jbGFzcyBHZWUgZXh0ZW5kcyBqNHR7Y29uc3RydWN0b3IodD0xLGU9LjQsbj02NCxpPTgscj0yLG89Myl7c3VwZXIoKSx0aGlzLnR5cGU9IlRvcnVzS25vdEdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHR1YmU6ZSx0dWJ1bGFyU2VnbWVudHM6bixyYWRpYWxTZWdtZW50czppLHA6cixxOm99LG49TWF0aC5mbG9vcihuKSxpPU1hdGguZmxvb3IoaSk7Y29uc3QgYT1bXSxzPVtdLGw9W10sYz1bXSx1PW5ldyBhM3QsaD1uZXcgYTN0LGQ9bmV3IGEzdCxwPW5ldyBhM3QsZj1uZXcgYTN0LG09bmV3IGEzdCxnPW5ldyBhM3Q7Zm9yKGxldCBhPTA7YTw9bjsrK2Epe2NvbnN0IHk9YS9uKnIqTWF0aC5QSSoyO18oeSxyLG8sdCxkKSxfKHkrLjAxLHIsbyx0LHApLG0uc3ViVmVjdG9ycyhwLGQpLGcuYWRkVmVjdG9ycyhwLGQpLGYuY3Jvc3NWZWN0b3JzKG0sZyksZy5jcm9zc1ZlY3RvcnMoZixtKSxmLm5vcm1hbGl6ZSgpLGcubm9ybWFsaXplKCk7Zm9yKGxldCB0PTA7dDw9aTsrK3Qpe2NvbnN0IHI9dC9pKk1hdGguUEkqMixvPS1lKk1hdGguY29zKHIpLHA9ZSpNYXRoLnNpbihyKTt1Lng9ZC54KyhvKmcueCtwKmYueCksdS55PWQueSsobypnLnkrcCpmLnkpLHUuej1kLnorKG8qZy56K3AqZi56KSxzLnB1c2godS54LHUueSx1LnopLGguc3ViVmVjdG9ycyh1LGQpLm5vcm1hbGl6ZSgpLGwucHVzaChoLngsaC55LGgueiksYy5wdXNoKGEvbiksYy5wdXNoKHQvaSl9fWZvcihsZXQgdD0xO3Q8PW47dCsrKWZvcihsZXQgZT0xO2U8PWk7ZSsrKXtjb25zdCBuPShpKzEpKnQrKGUtMSkscj0oaSsxKSp0K2Usbz0oaSsxKSoodC0xKStlO2EucHVzaCgoaSsxKSoodC0xKSsoZS0xKSxuLG8pLGEucHVzaChuLHIsbyl9ZnVuY3Rpb24gXyh0LGUsbixpLHIpe2NvbnN0IG89TWF0aC5jb3ModCksYT1NYXRoLnNpbih0KSxzPW4vZSp0LGw9TWF0aC5jb3Mocyk7ci54PWkqKDIrbCkqLjUqbyxyLnk9aSooMitsKSphKi41LHIuej1pKk1hdGguc2luKHMpKi41fXRoaXMuc2V0SW5kZXgoYSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBSNHQobCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUjR0KGMsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEdlZSh0LnJhZGl1cyx0LnR1YmUsdC50dWJ1bGFyU2VnbWVudHMsdC5yYWRpYWxTZWdtZW50cyx0LnAsdC5xKX19Y2xhc3MgV2VlIGV4dGVuZHMgajR0e2NvbnN0cnVjdG9yKHQ9bmV3IHRlZShuZXcgYTN0KC0xLC0xLDApLG5ldyBhM3QoLTEsMSwwKSxuZXcgYTN0KDEsMSwwKSksZT02NCxuPTEsaT04LHI9ITEpe3N1cGVyKCksdGhpcy50eXBlPSJUdWJlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cGF0aDp0LHR1YnVsYXJTZWdtZW50czplLHJhZGl1czpuLHJhZGlhbFNlZ21lbnRzOmksY2xvc2VkOnJ9O2NvbnN0IG89dC5jb21wdXRlRnJlbmV0RnJhbWVzKGUscik7dGhpcy50YW5nZW50cz1vLnRhbmdlbnRzLHRoaXMubm9ybWFscz1vLm5vcm1hbHMsdGhpcy5iaW5vcm1hbHM9by5iaW5vcm1hbHM7Y29uc3QgYT1uZXcgYTN0LHM9bmV3IGEzdCxsPW5ldyBENXQ7bGV0IGM9bmV3IGEzdDtjb25zdCB1PVtdLGg9W10sZD1bXSxwPVtdO2Z1bmN0aW9uIGYocil7Yz10LmdldFBvaW50QXQoci9lLGMpO2NvbnN0IGw9by5ub3JtYWxzW3JdLGQ9by5iaW5vcm1hbHNbcl07Zm9yKGxldCB0PTA7dDw9aTt0Kyspe2NvbnN0IGU9dC9pKk1hdGguUEkqMixyPU1hdGguc2luKGUpLG89LU1hdGguY29zKGUpO3MueD1vKmwueCtyKmQueCxzLnk9bypsLnkrcipkLnkscy56PW8qbC56K3IqZC56LHMubm9ybWFsaXplKCksaC5wdXNoKHMueCxzLnkscy56KSxhLng9Yy54K24qcy54LGEueT1jLnkrbipzLnksYS56PWMueituKnMueix1LnB1c2goYS54LGEueSxhLnopfX0hKGZ1bmN0aW9uIG0oKXtmb3IobGV0IHQ9MDt0PGU7dCsrKWYodCk7ZighMT09PXI/ZTowKSwoZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8PWU7dCsrKWZvcihsZXQgbj0wO248PWk7bisrKWwueD10L2UsbC55PW4vaSxkLnB1c2gobC54LGwueSl9KSgpLChmdW5jdGlvbiBuKCl7Zm9yKGxldCB0PTE7dDw9ZTt0KyspZm9yKGxldCBlPTE7ZTw9aTtlKyspe2NvbnN0IG49KGkrMSkqdCsoZS0xKSxyPShpKzEpKnQrZSxvPShpKzEpKih0LTEpK2U7cC5wdXNoKChpKzEpKih0LTEpKyhlLTEpLG4sbykscC5wdXNoKG4scixvKX19KSgpfSkoKSx0aGlzLnNldEluZGV4KHApLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dCh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgUjR0KGgsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFI0dChkLDIpKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnBhdGg9dGhpcy5wYXJhbWV0ZXJzLnBhdGgudG9KU09OKCksdH1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBXZWUoKG5ldyBuZWVbdC5wYXRoLnR5cGVdKS5mcm9tSlNPTih0LnBhdGgpLHQudHVidWxhclNlZ21lbnRzLHQucmFkaXVzLHQucmFkaWFsU2VnbWVudHMsdC5jbG9zZWQpfX1jbGFzcyBxZWUgZXh0ZW5kcyBqNHR7Y29uc3RydWN0b3IodD1udWxsKXtpZihzdXBlcigpLHRoaXMudHlwZT0iV2lyZWZyYW1lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17Z2VvbWV0cnk6dH0sbnVsbCE9PXQpe2NvbnN0IGU9W10sbj1uZXcgU2V0LGk9bmV3IGEzdCxyPW5ldyBhM3Q7aWYobnVsbCE9PXQuaW5kZXgpe2NvbnN0IG89dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLGE9dC5pbmRleDtsZXQgcz10Lmdyb3VwczswPT09cy5sZW5ndGgmJihzPVt7c3RhcnQ6MCxjb3VudDphLmNvdW50LG1hdGVyaWFsSW5kZXg6MH1dKTtmb3IobGV0IHQ9MCxsPXMubGVuZ3RoO3Q8bDsrK3Qpe2NvbnN0IGw9c1t0XSxjPWwuc3RhcnQ7Zm9yKGxldCB0PWMscz1jK2wuY291bnQ7dDxzO3QrPTMpZm9yKGxldCBzPTA7czwzO3MrKyl7Y29uc3QgbD1hLmdldFgodCtzKSxjPWEuZ2V0WCh0KyhzKzEpJTMpO2kuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGwpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGMpLCEwPT09WWVlKGkscixuKSYmKGUucHVzaChpLngsaS55LGkueiksZS5wdXNoKHIueCxyLnksci56KSl9fX1lbHNle2NvbnN0IG89dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2ZvcihsZXQgdD0wLGE9by5jb3VudC8zO3Q8YTt0KyspZm9yKGxldCBhPTA7YTwzO2ErKyl7Y29uc3Qgcz0zKnQrKGErMSklMztpLmZyb21CdWZmZXJBdHRyaWJ1dGUobywzKnQrYSksci5mcm9tQnVmZmVyQXR0cmlidXRlKG8scyksITA9PT1ZZWUoaSxyLG4pJiYoZS5wdXNoKGkueCxpLnksaS56KSxlLnB1c2goci54LHIueSxyLnopKX19dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGUsMykpfX19ZnVuY3Rpb24gWWVlKHQsZSxuKXtjb25zdCBpPWAke3QueH0sJHt0Lnl9LCR7dC56fS0ke2UueH0sJHtlLnl9LCR7ZS56fWAscj1gJHtlLnh9LCR7ZS55fSwke2Uuen0tJHt0Lnh9LCR7dC55fSwke3Quen1gO3JldHVybiEwIT09bi5oYXMoaSkmJiEwIT09bi5oYXMocikmJihuLmFkZChpLHIpLCEwKX12YXIgWGVlPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJveEdlb21ldHJ5OmM2dCxCb3hCdWZmZXJHZW9tZXRyeTpjNnQsQ2lyY2xlR2VvbWV0cnk6Q3RlLENpcmNsZUJ1ZmZlckdlb21ldHJ5OkN0ZSxDb25lR2VvbWV0cnk6a3RlLENvbmVCdWZmZXJHZW9tZXRyeTprdGUsQ3lsaW5kZXJHZW9tZXRyeTpBdGUsQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeTpBdGUsRG9kZWNhaGVkcm9uR2VvbWV0cnk6THRlLERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5Okx0ZSxFZGdlc0dlb21ldHJ5Onp0ZSxFeHRydWRlR2VvbWV0cnk6UmVlLEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTpSZWUsSWNvc2FoZWRyb25HZW9tZXRyeTp6ZWUsSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeTp6ZWUsTGF0aGVHZW9tZXRyeTpEZWUsTGF0aGVCdWZmZXJHZW9tZXRyeTpEZWUsT2N0YWhlZHJvbkdlb21ldHJ5OkJlZSxPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnk6QmVlLFBsYW5lR2VvbWV0cnk6azZ0LFBsYW5lQnVmZmVyR2VvbWV0cnk6azZ0LFBvbHloZWRyb25HZW9tZXRyeTpQdGUsUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OlB0ZSxSaW5nR2VvbWV0cnk6SGVlLFJpbmdCdWZmZXJHZW9tZXRyeTpIZWUsU2hhcGVHZW9tZXRyeTpGZWUsU2hhcGVCdWZmZXJHZW9tZXRyeTpGZWUsU3BoZXJlR2VvbWV0cnk6VmVlLFNwaGVyZUJ1ZmZlckdlb21ldHJ5OlZlZSxUZXRyYWhlZHJvbkdlb21ldHJ5OlVlZSxUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OlVlZSxUb3J1c0dlb21ldHJ5OmplZSxUb3J1c0J1ZmZlckdlb21ldHJ5OmplZSxUb3J1c0tub3RHZW9tZXRyeTpHZWUsVG9ydXNLbm90QnVmZmVyR2VvbWV0cnk6R2VlLFR1YmVHZW9tZXRyeTpXZWUsVHViZUJ1ZmZlckdlb21ldHJ5OldlZSxXaXJlZnJhbWVHZW9tZXRyeTpxZWV9KTtjbGFzcyAkZWUgZXh0ZW5kcyB4NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRvd01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkNXQoMCksdGhpcy50cmFuc3BhcmVudD0hMCx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzfX0kZWUucHJvdG90eXBlLmlzU2hhZG93TWF0ZXJpYWw9ITA7Y2xhc3MgS2VlIGV4dGVuZHMgeDR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy50eXBlPSJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgJDV0KDE2Nzc3MjE1KSx0aGlzLnJvdWdobmVzcz0xLHRoaXMubWV0YWxuZXNzPTAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgJDV0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IEQ1dCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMucm91Z2huZXNzTWFwPW51bGwsdGhpcy5tZXRhbG5lc3NNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmVudk1hcEludGVuc2l0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMucm91Z2huZXNzPXQucm91Z2huZXNzLHRoaXMubWV0YWxuZXNzPXQubWV0YWxuZXNzLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMucm91Z2huZXNzTWFwPXQucm91Z2huZXNzTWFwLHRoaXMubWV0YWxuZXNzTWFwPXQubWV0YWxuZXNzTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmVudk1hcEludGVuc2l0eT10LmVudk1hcEludGVuc2l0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319S2VlLnByb3RvdHlwZS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPSEwO2NsYXNzIFplZSBleHRlbmRzIEtlZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiIsUEhZU0lDQUw6IiJ9LHRoaXMudHlwZT0iTWVzaFBoeXNpY2FsTWF0ZXJpYWwiLHRoaXMuY2xlYXJjb2F0TWFwPW51bGwsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9MCx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD1udWxsLHRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IEQ1dCgxLDEpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPW51bGwsdGhpcy5pb3I9MS41LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJyZWZsZWN0aXZpdHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gXzV0KDIuNSoodGhpcy5pb3ItMSkvKHRoaXMuaW9yKzEpLDAsMSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLmlvcj0oMSsuNCp0KS8oMS0uNCp0KX19KSx0aGlzLnNoZWVuQ29sb3I9bmV3ICQ1dCgwKSx0aGlzLnNoZWVuQ29sb3JNYXA9bnVsbCx0aGlzLnNoZWVuUm91Z2huZXNzPTEsdGhpcy5zaGVlblJvdWdobmVzc01hcD1udWxsLHRoaXMudHJhbnNtaXNzaW9uTWFwPW51bGwsdGhpcy50aGlja25lc3M9MCx0aGlzLnRoaWNrbmVzc01hcD1udWxsLHRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZT0wLHRoaXMuYXR0ZW51YXRpb25Db2xvcj1uZXcgJDV0KDEsMSwxKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD1udWxsLHRoaXMuc3BlY3VsYXJDb2xvcj1uZXcgJDV0KDEsMSwxKSx0aGlzLnNwZWN1bGFyQ29sb3JNYXA9bnVsbCx0aGlzLl9zaGVlbj0wLHRoaXMuX2NsZWFyY29hdD0wLHRoaXMuX3RyYW5zbWlzc2lvbj0wLHRoaXMuc2V0VmFsdWVzKHQpfWdldCBzaGVlbigpe3JldHVybiB0aGlzLl9zaGVlbn1zZXQgc2hlZW4odCl7dGhpcy5fc2hlZW4+MCE9dD4wJiZ0aGlzLnZlcnNpb24rKyx0aGlzLl9zaGVlbj10fWdldCBjbGVhcmNvYXQoKXtyZXR1cm4gdGhpcy5fY2xlYXJjb2F0fXNldCBjbGVhcmNvYXQodCl7dGhpcy5fY2xlYXJjb2F0PjAhPXQ+MCYmdGhpcy52ZXJzaW9uKyssdGhpcy5fY2xlYXJjb2F0PXR9Z2V0IHRyYW5zbWlzc2lvbigpe3JldHVybiB0aGlzLl90cmFuc21pc3Npb259c2V0IHRyYW5zbWlzc2lvbih0KXt0aGlzLl90cmFuc21pc3Npb24+MCE9dD4wJiZ0aGlzLnZlcnNpb24rKyx0aGlzLl90cmFuc21pc3Npb249dH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiIsUEhZU0lDQUw6IiJ9LHRoaXMuY2xlYXJjb2F0PXQuY2xlYXJjb2F0LHRoaXMuY2xlYXJjb2F0TWFwPXQuY2xlYXJjb2F0TWFwLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzPXQuY2xlYXJjb2F0Um91Z2huZXNzLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwPXQuY2xlYXJjb2F0Um91Z2huZXNzTWFwLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPXQuY2xlYXJjb2F0Tm9ybWFsTWFwLHRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGUuY29weSh0LmNsZWFyY29hdE5vcm1hbFNjYWxlKSx0aGlzLmlvcj10Lmlvcix0aGlzLnNoZWVuPXQuc2hlZW4sdGhpcy5zaGVlbkNvbG9yLmNvcHkodC5zaGVlbkNvbG9yKSx0aGlzLnNoZWVuQ29sb3JNYXA9dC5zaGVlbkNvbG9yTWFwLHRoaXMuc2hlZW5Sb3VnaG5lc3M9dC5zaGVlblJvdWdobmVzcyx0aGlzLnNoZWVuUm91Z2huZXNzTWFwPXQuc2hlZW5Sb3VnaG5lc3NNYXAsdGhpcy50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24sdGhpcy50cmFuc21pc3Npb25NYXA9dC50cmFuc21pc3Npb25NYXAsdGhpcy50aGlja25lc3M9dC50aGlja25lc3MsdGhpcy50aGlja25lc3NNYXA9dC50aGlja25lc3NNYXAsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPXQuYXR0ZW51YXRpb25EaXN0YW5jZSx0aGlzLmF0dGVudWF0aW9uQ29sb3IuY29weSh0LmF0dGVudWF0aW9uQ29sb3IpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHk9dC5zcGVjdWxhckludGVuc2l0eSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwPXQuc3BlY3VsYXJJbnRlbnNpdHlNYXAsdGhpcy5zcGVjdWxhckNvbG9yLmNvcHkodC5zcGVjdWxhckNvbG9yKSx0aGlzLnNwZWN1bGFyQ29sb3JNYXA9dC5zcGVjdWxhckNvbG9yTWFwLHRoaXN9fVplZS5wcm90b3R5cGUuaXNNZXNoUGh5c2ljYWxNYXRlcmlhbD0hMDtjbGFzcyBKZWUgZXh0ZW5kcyB4NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hQaG9uZ01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkNXQoMTY3NzcyMTUpLHRoaXMuc3BlY3VsYXI9bmV3ICQ1dCgxMTE4NDgxKSx0aGlzLnNoaW5pbmVzcz0zMCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyAkNXQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgRDV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5zcGVjdWxhci5jb3B5KHQuc3BlY3VsYXIpLHRoaXMuc2hpbmluZXNzPXQuc2hpbmluZXNzLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319SmVlLnByb3RvdHlwZS5pc01lc2hQaG9uZ01hdGVyaWFsPSEwO2NsYXNzIFFlZSBleHRlbmRzIHg0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17VE9PTjoiIn0sdGhpcy50eXBlPSJNZXNoVG9vbk1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkNXQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5ncmFkaWVudE1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyAkNXQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgRDV0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuZ3JhZGllbnRNYXA9dC5ncmFkaWVudE1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319UWVlLnByb3RvdHlwZS5pc01lc2hUb29uTWF0ZXJpYWw9ITA7Y2xhc3MgdG5lIGV4dGVuZHMgeDR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBENXQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX10bmUucHJvdG90eXBlLmlzTWVzaE5vcm1hbE1hdGVyaWFsPSEwO2NsYXNzIGVuZSBleHRlbmRzIHg0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaExhbWJlcnRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgJDV0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyAkNXQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX1lbmUucHJvdG90eXBlLmlzTWVzaExhbWJlcnRNYXRlcmlhbD0hMDtjbGFzcyBubmUgZXh0ZW5kcyB4NHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e01BVENBUDoiIn0sdGhpcy50eXBlPSJNZXNoTWF0Y2FwTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3ICQ1dCgxNjc3NzIxNSksdGhpcy5tYXRjYXA9bnVsbCx0aGlzLm1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBENXQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17TUFUQ0FQOiIifSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXRjYXA9dC5tYXRjYXAsdGhpcy5tYXA9dC5tYXAsdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fW5uZS5wcm90b3R5cGUuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw9ITA7Y2xhc3MgaW5lIGV4dGVuZHMgb3Rle2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lRGFzaGVkTWF0ZXJpYWwiLHRoaXMuc2NhbGU9MSx0aGlzLmRhc2hTaXplPTMsdGhpcy5nYXBTaXplPTEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNjYWxlPXQuc2NhbGUsdGhpcy5kYXNoU2l6ZT10LmRhc2hTaXplLHRoaXMuZ2FwU2l6ZT10LmdhcFNpemUsdGhpc319aW5lLnByb3RvdHlwZS5pc0xpbmVEYXNoZWRNYXRlcmlhbD0hMDt2YXIgcm5lPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLFNoYWRvd01hdGVyaWFsOiRlZSxTcHJpdGVNYXRlcmlhbDpTN3QsUmF3U2hhZGVyTWF0ZXJpYWw6RjZ0LFNoYWRlck1hdGVyaWFsOnA2dCxQb2ludHNNYXRlcmlhbDpndGUsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6WmVlLE1lc2hTdGFuZGFyZE1hdGVyaWFsOktlZSxNZXNoUGhvbmdNYXRlcmlhbDpKZWUsTWVzaFRvb25NYXRlcmlhbDpRZWUsTWVzaE5vcm1hbE1hdGVyaWFsOnRuZSxNZXNoTGFtYmVydE1hdGVyaWFsOmVuZSxNZXNoRGVwdGhNYXRlcmlhbDpuN3QsTWVzaERpc3RhbmNlTWF0ZXJpYWw6aTd0LE1lc2hCYXNpY01hdGVyaWFsOnc0dCxNZXNoTWF0Y2FwTWF0ZXJpYWw6bm5lLExpbmVEYXNoZWRNYXRlcmlhbDppbmUsTGluZUJhc2ljTWF0ZXJpYWw6b3RlLE1hdGVyaWFsOng0dH0pO2NvbnN0IG9uZT17YXJyYXlTbGljZTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIG9uZS5pc1R5cGVkQXJyYXkodCk/bmV3IHQuY29uc3RydWN0b3IodC5zdWJhcnJheShlLHZvaWQgMCE9PW4/bjp0Lmxlbmd0aCkpOnQuc2xpY2UoZSxuKX0sY29udmVydEFycmF5OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hdHx8IW4mJnQuY29uc3RydWN0b3I9PT1lP3Q6Im51bWJlciI9PXR5cGVvZiBlLkJZVEVTX1BFUl9FTEVNRU5UP25ldyBlKHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpfSxpc1R5cGVkQXJyYXk6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSxnZXRLZXlmcmFtZU9yZGVyOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5sZW5ndGgsbj1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dCE9PWU7Kyt0KW5bdF09dDtyZXR1cm4gbi5zb3J0KChmdW5jdGlvbiBpKGUsbil7cmV0dXJuIHRbZV0tdFtuXX0pKSxufSxzb3J0ZWRBcnJheTpmdW5jdGlvbih0LGUsbil7Y29uc3QgaT10Lmxlbmd0aCxyPW5ldyB0LmNvbnN0cnVjdG9yKGkpO2ZvcihsZXQgbz0wLGE9MDthIT09aTsrK28pe2NvbnN0IGk9bltvXSplO2ZvcihsZXQgbj0wO24hPT1lOysrbilyW2ErK109dFtpK25dfXJldHVybiByfSxmbGF0dGVuSlNPTjpmdW5jdGlvbih0LGUsbixpKXtsZXQgcj0xLG89dFswXTtmb3IoO3ZvaWQgMCE9PW8mJnZvaWQgMD09PW9baV07KW89dFtyKytdO2lmKHZvaWQgMD09PW8pcmV0dXJuO2xldCBhPW9baV07aWYodm9pZCAwIT09YSlpZihBcnJheS5pc0FycmF5KGEpKWRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksbi5wdXNoLmFwcGx5KG4sYSkpLG89dFtyKytdfXdoaWxlKHZvaWQgMCE9PW8pO2Vsc2UgaWYodm9pZCAwIT09YS50b0FycmF5KWRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksYS50b0FycmF5KG4sbi5sZW5ndGgpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKTtlbHNlIGRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksbi5wdXNoKGEpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKX0sc3ViY2xpcDpmdW5jdGlvbih0LGUsbixpLHI9MzApe2NvbnN0IG89dC5jbG9uZSgpO28ubmFtZT1lO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxvLnRyYWNrcy5sZW5ndGg7Kyt0KXtjb25zdCBlPW8udHJhY2tzW3RdLHM9ZS5nZXRWYWx1ZVNpemUoKSxsPVtdLGM9W107Zm9yKGxldCB0PTA7dDxlLnRpbWVzLmxlbmd0aDsrK3Qpe2NvbnN0IG89ZS50aW1lc1t0XSpyO2lmKCEobzxufHxvPj1pKSl7bC5wdXNoKGUudGltZXNbdF0pO2ZvcihsZXQgbj0wO248czsrK24pYy5wdXNoKGUudmFsdWVzW3QqcytuXSl9fTAhPT1sLmxlbmd0aCYmKGUudGltZXM9b25lLmNvbnZlcnRBcnJheShsLGUudGltZXMuY29uc3RydWN0b3IpLGUudmFsdWVzPW9uZS5jb252ZXJ0QXJyYXkoYyxlLnZhbHVlcy5jb25zdHJ1Y3RvciksYS5wdXNoKGUpKX1vLnRyYWNrcz1hO2xldCBzPTEvMDtmb3IobGV0IHQ9MDt0PG8udHJhY2tzLmxlbmd0aDsrK3Qpcz5vLnRyYWNrc1t0XS50aW1lc1swXSYmKHM9by50cmFja3NbdF0udGltZXNbMF0pO2ZvcihsZXQgdD0wO3Q8by50cmFja3MubGVuZ3RoOysrdClvLnRyYWNrc1t0XS5zaGlmdCgtMSpzKTtyZXR1cm4gby5yZXNldER1cmF0aW9uKCksb30sbWFrZUNsaXBBZGRpdGl2ZTpmdW5jdGlvbih0LGU9MCxuPXQsaT0zMCl7aTw9MCYmKGk9MzApO2NvbnN0IHI9bi50cmFja3MubGVuZ3RoLG89ZS9pO2ZvcihsZXQgZT0wO2U8cjsrK2Upe2NvbnN0IGk9bi50cmFja3NbZV0scj1pLlZhbHVlVHlwZU5hbWU7aWYoImJvb2wiPT09cnx8InN0cmluZyI9PT1yKWNvbnRpbnVlO2NvbnN0IGE9dC50cmFja3MuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWkubmFtZSYmdC5WYWx1ZVR5cGVOYW1lPT09cn0pKTtpZih2b2lkIDA9PT1hKWNvbnRpbnVlO2xldCBzPTA7Y29uc3QgbD1pLmdldFZhbHVlU2l6ZSgpO2kuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihzPWwvMyk7bGV0IGM9MDtjb25zdCB1PWEuZ2V0VmFsdWVTaXplKCk7YS5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKGM9dS8zKTtjb25zdCBoPWkudGltZXMubGVuZ3RoLTE7bGV0IGQ7aWYobzw9aS50aW1lc1swXSl7ZD1vbmUuYXJyYXlTbGljZShpLnZhbHVlcyxzLGwtcyl9ZWxzZSBpZihvPj1pLnRpbWVzW2hdKXtjb25zdCB0PWgqbCtzO2Q9b25lLmFycmF5U2xpY2UoaS52YWx1ZXMsdCx0K2wtcyl9ZWxzZXtjb25zdCB0PWkuY3JlYXRlSW50ZXJwb2xhbnQoKSxlPXMsbj1sLXM7dC5ldmFsdWF0ZShvKSxkPW9uZS5hcnJheVNsaWNlKHQucmVzdWx0QnVmZmVyLGUsbil9aWYoInF1YXRlcm5pb24iPT09cil7KG5ldyBvM3QpLmZyb21BcnJheShkKS5ub3JtYWxpemUoKS5jb25qdWdhdGUoKS50b0FycmF5KGQpfWNvbnN0IHA9YS50aW1lcy5sZW5ndGg7Zm9yKGxldCB0PTA7dDxwOysrdCl7Y29uc3QgZT10KnUrYztpZigicXVhdGVybmlvbiI9PT1yKW8zdC5tdWx0aXBseVF1YXRlcm5pb25zRmxhdChhLnZhbHVlcyxlLGQsMCxhLnZhbHVlcyxlKTtlbHNle2NvbnN0IHQ9dS0yKmM7Zm9yKGxldCBuPTA7bjx0OysrbilhLnZhbHVlc1tlK25dLT1kW25dfX19cmV0dXJuIHQuYmxlbmRNb2RlPWk1dCx0fX07Y2xhc3MgYW5le2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMucGFyYW1ldGVyUG9zaXRpb25zPXQsdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLnJlc3VsdEJ1ZmZlcj12b2lkIDAhPT1pP2k6bmV3IGUuY29uc3RydWN0b3IobiksdGhpcy5zYW1wbGVWYWx1ZXM9ZSx0aGlzLnZhbHVlU2l6ZT1uLHRoaXMuc2V0dGluZ3M9bnVsbCx0aGlzLkRlZmF1bHRTZXR0aW5nc189e319ZXZhbHVhdGUodCl7Y29uc3QgZT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgbj10aGlzLl9jYWNoZWRJbmRleCxpPWVbbl0scj1lW24tMV07dDp7ZTp7bGV0IG87bjp7aTppZighKHQ8aSkpe2ZvcihsZXQgbz1uKzI7Oyl7aWYodm9pZCAwPT09aSl7aWYodDxyKWJyZWFrIGk7cmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEsdCxyKX1pZihuPT09bylicmVhaztpZihyPWksaT1lWysrbl0sdDxpKWJyZWFrIGV9bz1lLmxlbmd0aDticmVhayBufWlmKHQ+PXIpYnJlYWsgdDt7Y29uc3QgYT1lWzFdO3Q8YSYmKG49MixyPWEpO2ZvcihsZXQgbz1uLTI7Oyl7aWYodm9pZCAwPT09cilyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsaSk7aWYobj09PW8pYnJlYWs7aWYoaT1yLHI9ZVstLW4tMV0sdD49cilicmVhayBlfW89bixuPTB9fWZvcig7bjxvOyl7Y29uc3QgaT1uK28+Pj4xO3Q8ZVtpXT9vPWk6bj1pKzF9aWYoaT1lW25dLHI9ZVtuLTFdLHZvaWQgMD09PXIpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LGkpO2lmKHZvaWQgMD09PWkpcmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEscix0KX10aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuaW50ZXJ2YWxDaGFuZ2VkXyhuLHIsaSl9cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGVfKG4scix0LGkpfWdldFNldHRpbmdzXygpe3JldHVybiB0aGlzLnNldHRpbmdzfHx0aGlzLkRlZmF1bHRTZXR0aW5nc199Y29weVNhbXBsZVZhbHVlXyh0KXtjb25zdCBlPXRoaXMucmVzdWx0QnVmZmVyLG49dGhpcy5zYW1wbGVWYWx1ZXMsaT10aGlzLnZhbHVlU2l6ZSxyPXQqaTtmb3IobGV0IHQ9MDt0IT09aTsrK3QpZVt0XT1uW3IrdF07cmV0dXJuIGV9aW50ZXJwb2xhdGVfKCl7dGhyb3cgbmV3IEVycm9yKCJjYWxsIHRvIGFic3RyYWN0IG1ldGhvZCIpfWludGVydmFsQ2hhbmdlZF8oKXt9fWFuZS5wcm90b3R5cGUuYmVmb3JlU3RhcnRfPWFuZS5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXyxhbmUucHJvdG90eXBlLmFmdGVyRW5kXz1hbmUucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV87Y2xhc3Mgc25lIGV4dGVuZHMgYW5le2NvbnN0cnVjdG9yKHQsZSxuLGkpe3N1cGVyKHQsZSxuLGkpLHRoaXMuX3dlaWdodFByZXY9LTAsdGhpcy5fb2Zmc2V0UHJldj0tMCx0aGlzLl93ZWlnaHROZXh0PS0wLHRoaXMuX29mZnNldE5leHQ9LTAsdGhpcy5EZWZhdWx0U2V0dGluZ3NfPXtlbmRpbmdTdGFydDpRMnQsZW5kaW5nRW5kOlEydH19aW50ZXJ2YWxDaGFuZ2VkXyh0LGUsbil7Y29uc3QgaT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgcj10LTIsbz10KzEsYT1pW3JdLHM9aVtvXTtpZih2b2lkIDA9PT1hKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0KXtjYXNlIHQ1dDpyPXQsYT0yKmUtbjticmVhaztjYXNlIGU1dDpyPWkubGVuZ3RoLTIsYT1lK2lbcl0taVtyKzFdO2JyZWFrO2RlZmF1bHQ6cj10LGE9bn1pZih2b2lkIDA9PT1zKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ0VuZCl7Y2FzZSB0NXQ6bz10LHM9MipuLWU7YnJlYWs7Y2FzZSBlNXQ6bz0xLHM9bitpWzFdLWlbMF07YnJlYWs7ZGVmYXVsdDpvPXQtMSxzPWV9Y29uc3QgbD0uNSoobi1lKSxjPXRoaXMudmFsdWVTaXplO3RoaXMuX3dlaWdodFByZXY9bC8oZS1hKSx0aGlzLl93ZWlnaHROZXh0PWwvKHMtbiksdGhpcy5fb2Zmc2V0UHJldj1yKmMsdGhpcy5fb2Zmc2V0TmV4dD1vKmN9aW50ZXJwb2xhdGVfKHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5yZXN1bHRCdWZmZXIsbz10aGlzLnNhbXBsZVZhbHVlcyxhPXRoaXMudmFsdWVTaXplLHM9dCphLGw9cy1hLGM9dGhpcy5fb2Zmc2V0UHJldix1PXRoaXMuX29mZnNldE5leHQsaD10aGlzLl93ZWlnaHRQcmV2LGQ9dGhpcy5fd2VpZ2h0TmV4dCxwPShuLWUpLyhpLWUpLGY9cCpwLG09ZipwLGc9LWgqbSsyKmgqZi1oKnAsXz0oMStoKSptKygtMS41LTIqaCkqZisoLS41K2gpKnArMSx5PSgtMS1kKSptKygxLjUrZCkqZisuNSpwLHY9ZCptLWQqZjtmb3IobGV0IHQ9MDt0IT09YTsrK3Qpclt0XT1nKm9bYyt0XStfKm9bbCt0XSt5Km9bcyt0XSt2Km9bdSt0XTtyZXR1cm4gcn19Y2xhc3MgbG5lIGV4dGVuZHMgYW5le2NvbnN0cnVjdG9yKHQsZSxuLGkpe3N1cGVyKHQsZSxuLGkpfWludGVycG9sYXRlXyh0LGUsbixpKXtjb25zdCByPXRoaXMucmVzdWx0QnVmZmVyLG89dGhpcy5zYW1wbGVWYWx1ZXMsYT10aGlzLnZhbHVlU2l6ZSxzPXQqYSxsPXMtYSxjPShuLWUpLyhpLWUpLHU9MS1jO2ZvcihsZXQgdD0wO3QhPT1hOysrdClyW3RdPW9bbCt0XSp1K29bcyt0XSpjO3JldHVybiByfX1jbGFzcyBjbmUgZXh0ZW5kcyBhbmV7Y29uc3RydWN0b3IodCxlLG4saSl7c3VwZXIodCxlLG4saSl9aW50ZXJwb2xhdGVfKHQpe3JldHVybiB0aGlzLmNvcHlTYW1wbGVWYWx1ZV8odC0xKX19Y2xhc3MgdW5le2NvbnN0cnVjdG9yKHQsZSxuLGkpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiB0cmFjayBuYW1lIGlzIHVuZGVmaW5lZCIpO2lmKHZvaWQgMD09PWV8fDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IG5vIGtleWZyYW1lcyBpbiB0cmFjayBuYW1lZCAiK3QpO3RoaXMubmFtZT10LHRoaXMudGltZXM9b25lLmNvbnZlcnRBcnJheShlLHRoaXMuVGltZUJ1ZmZlclR5cGUpLHRoaXMudmFsdWVzPW9uZS5jb252ZXJ0QXJyYXkobix0aGlzLlZhbHVlQnVmZmVyVHlwZSksdGhpcy5zZXRJbnRlcnBvbGF0aW9uKGl8fHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXN0YXRpYyB0b0pTT04odCl7Y29uc3QgZT10LmNvbnN0cnVjdG9yO2xldCBuO2lmKGUudG9KU09OIT09dGhpcy50b0pTT04pbj1lLnRvSlNPTih0KTtlbHNle249e25hbWU6dC5uYW1lLHRpbWVzOm9uZS5jb252ZXJ0QXJyYXkodC50aW1lcyxBcnJheSksdmFsdWVzOm9uZS5jb252ZXJ0QXJyYXkodC52YWx1ZXMsQXJyYXkpfTtjb25zdCBlPXQuZ2V0SW50ZXJwb2xhdGlvbigpO2UhPT10LkRlZmF1bHRJbnRlcnBvbGF0aW9uJiYobi5pbnRlcnBvbGF0aW9uPWUpfXJldHVybiBuLnR5cGU9dC5WYWx1ZVR5cGVOYW1lLG59SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGUodCl7cmV0dXJuIG5ldyBjbmUodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfUludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IGxuZSh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoKHQpe3JldHVybiBuZXcgc25lKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1zZXRJbnRlcnBvbGF0aW9uKHQpe2xldCBlO3N3aXRjaCh0KXtjYXNlIEsydDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU7YnJlYWs7Y2FzZSBaMnQ6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjticmVhaztjYXNlIEoydDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RofWlmKHZvaWQgMD09PWUpe2NvbnN0IGU9InVuc3VwcG9ydGVkIGludGVycG9sYXRpb24gZm9yICIrdGhpcy5WYWx1ZVR5cGVOYW1lKyIga2V5ZnJhbWUgdHJhY2sgbmFtZWQgIit0aGlzLm5hbWU7aWYodm9pZCAwPT09dGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7aWYodD09PXRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pdGhyb3cgbmV3IEVycm9yKGUpO3RoaXMuc2V0SW50ZXJwb2xhdGlvbih0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKX1yZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiIsZSksdGhpc31yZXR1cm4gdGhpcy5jcmVhdGVJbnRlcnBvbGFudD1lLHRoaXN9Z2V0SW50ZXJwb2xhdGlvbigpe3N3aXRjaCh0aGlzLmNyZWF0ZUludGVycG9sYW50KXtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6cmV0dXJuIEsydDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnJldHVybiBaMnQ7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpyZXR1cm4gSjJ0fX1nZXRWYWx1ZVNpemUoKXtyZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoL3RoaXMudGltZXMubGVuZ3RofXNoaWZ0KHQpe2lmKDAhPT10KXtjb25zdCBlPXRoaXMudGltZXM7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuIT09aTsrK24pZVtuXSs9dH1yZXR1cm4gdGhpc31zY2FsZSh0KXtpZigxIT09dCl7Y29uc3QgZT10aGlzLnRpbWVzO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7biE9PWk7KytuKWVbbl0qPXR9cmV0dXJuIHRoaXN9dHJpbSh0LGUpe2NvbnN0IG49dGhpcy50aW1lcyxpPW4ubGVuZ3RoO2xldCByPTAsbz1pLTE7Zm9yKDtyIT09aSYmbltyXTx0OykrK3I7Zm9yKDstMSE9PW8mJm5bb10+ZTspLS1vO2lmKCsrbywwIT09cnx8byE9PWkpe3I+PW8mJihvPU1hdGgubWF4KG8sMSkscj1vLTEpO2NvbnN0IHQ9dGhpcy5nZXRWYWx1ZVNpemUoKTt0aGlzLnRpbWVzPW9uZS5hcnJheVNsaWNlKG4scixvKSx0aGlzLnZhbHVlcz1vbmUuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyxyKnQsbyp0KX1yZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2NvbnN0IGU9dGhpcy5nZXRWYWx1ZVNpemUoKTtlLU1hdGguZmxvb3IoZSkhPTAmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBJbnZhbGlkIHZhbHVlIHNpemUgaW4gdHJhY2suIix0aGlzKSx0PSExKTtjb25zdCBuPXRoaXMudGltZXMsaT10aGlzLnZhbHVlcyxyPW4ubGVuZ3RoOzA9PT1yJiYoY29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVHJhY2sgaXMgZW1wdHkuIix0aGlzKSx0PSExKTtsZXQgbz1udWxsO2ZvcihsZXQgZT0wO2UhPT1yO2UrKyl7Y29uc3QgaT1uW2VdO2lmKCJudW1iZXIiPT10eXBlb2YgaSYmaXNOYU4oaSkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRpbWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxlLGkpLHQ9ITE7YnJlYWt9aWYobnVsbCE9PW8mJm8+aSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogT3V0IG9mIG9yZGVyIGtleXMuIix0aGlzLGUsaSxvKSx0PSExO2JyZWFrfW89aX1pZih2b2lkIDAhPT1pJiZvbmUuaXNUeXBlZEFycmF5KGkpKWZvcihsZXQgZT0wLG49aS5sZW5ndGg7ZSE9PW47KytlKXtjb25zdCBuPWlbZV07aWYoaXNOYU4obikpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFZhbHVlIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLHRoaXMsZSxuKSx0PSExO2JyZWFrfX1yZXR1cm4gdH1vcHRpbWl6ZSgpe2NvbnN0IHQ9b25lLmFycmF5U2xpY2UodGhpcy50aW1lcyksZT1vbmUuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyksbj10aGlzLmdldFZhbHVlU2l6ZSgpLGk9dGhpcy5nZXRJbnRlcnBvbGF0aW9uKCk9PT1KMnQscj10Lmxlbmd0aC0xO2xldCBvPTE7Zm9yKGxldCBhPTE7YTxyOysrYSl7bGV0IHI9ITE7Y29uc3Qgcz10W2FdO2lmKHMhPT10W2ErMV0mJigxIT09YXx8cyE9PXRbMF0pKWlmKGkpcj0hMDtlbHNle2NvbnN0IHQ9YSpuLGk9dC1uLG89dCtuO2ZvcihsZXQgYT0wO2EhPT1uOysrYSl7Y29uc3Qgbj1lW3QrYV07aWYobiE9PWVbaSthXXx8biE9PWVbbythXSl7cj0hMDticmVha319fWlmKHIpe2lmKGEhPT1vKXt0W29dPXRbYV07Y29uc3QgaT1hKm4scj1vKm47Zm9yKGxldCB0PTA7dCE9PW47Kyt0KWVbcit0XT1lW2krdF19KytvfX1pZihyPjApe3Rbb109dFtyXTtmb3IobGV0IHQ9cipuLGk9bypuLGE9MDthIT09bjsrK2EpZVtpK2FdPWVbdCthXTsrK299cmV0dXJuIG8hPT10Lmxlbmd0aD8odGhpcy50aW1lcz1vbmUuYXJyYXlTbGljZSh0LDAsbyksdGhpcy52YWx1ZXM9b25lLmFycmF5U2xpY2UoZSwwLG8qbikpOih0aGlzLnRpbWVzPXQsdGhpcy52YWx1ZXM9ZSksdGhpc31jbG9uZSgpe2NvbnN0IHQ9b25lLmFycmF5U2xpY2UodGhpcy50aW1lcywwKSxlPW9uZS5hcnJheVNsaWNlKHRoaXMudmFsdWVzLDApLG49bmV3KDAsdGhpcy5jb25zdHJ1Y3RvcikodGhpcy5uYW1lLHQsZSk7cmV0dXJuIG4uY3JlYXRlSW50ZXJwb2xhbnQ9dGhpcy5jcmVhdGVJbnRlcnBvbGFudCxufX11bmUucHJvdG90eXBlLlRpbWVCdWZmZXJUeXBlPUZsb2F0MzJBcnJheSx1bmUucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXksdW5lLnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1aMnQ7Y2xhc3MgaG5lIGV4dGVuZHMgdW5le31obmUucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImJvb2wiLGhuZS5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5LGhuZS5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249SzJ0LGhuZS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMCxobmUucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3MgZG5lIGV4dGVuZHMgdW5le31kbmUucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImNvbG9yIjtjbGFzcyBwbmUgZXh0ZW5kcyB1bmV7fXBuZS5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ibnVtYmVyIjtjbGFzcyBmbmUgZXh0ZW5kcyBhbmV7Y29uc3RydWN0b3IodCxlLG4saSl7c3VwZXIodCxlLG4saSl9aW50ZXJwb2xhdGVfKHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5yZXN1bHRCdWZmZXIsbz10aGlzLnNhbXBsZVZhbHVlcyxhPXRoaXMudmFsdWVTaXplLHM9KG4tZSkvKGktZSk7bGV0IGw9dCphO2ZvcihsZXQgdD1sK2E7bCE9PXQ7bCs9NClvM3Quc2xlcnBGbGF0KHIsMCxvLGwtYSxvLGwscyk7cmV0dXJuIHJ9fWNsYXNzIG1uZSBleHRlbmRzIHVuZXtJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyBmbmUodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfX1tbmUucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InF1YXRlcm5pb24iLG1uZS5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249WjJ0LG1uZS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyBnbmUgZXh0ZW5kcyB1bmV7fWduZS5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ic3RyaW5nIixnbmUucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1BcnJheSxnbmUucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUsydCxnbmUucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcj12b2lkIDAsZ25lLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIF9uZSBleHRlbmRzIHVuZXt9X25lLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJ2ZWN0b3IiO2NsYXNzIHluZXtjb25zdHJ1Y3Rvcih0LGU9LTEsbixpPTI1MDApe3RoaXMubmFtZT10LHRoaXMudHJhY2tzPW4sdGhpcy5kdXJhdGlvbj1lLHRoaXMuYmxlbmRNb2RlPWksdGhpcy51dWlkPWc1dCgpLHRoaXMuZHVyYXRpb248MCYmdGhpcy5yZXNldER1cmF0aW9uKCl9c3RhdGljIHBhcnNlKHQpe2NvbnN0IGU9W10sbj10LnRyYWNrcyxpPTEvKHQuZnBzfHwxKTtmb3IobGV0IHQ9MCxyPW4ubGVuZ3RoO3QhPT1yOysrdCllLnB1c2godm5lKG5bdF0pLnNjYWxlKGkpKTtjb25zdCByPW5ldyB0aGlzKHQubmFtZSx0LmR1cmF0aW9uLGUsdC5ibGVuZE1vZGUpO3JldHVybiByLnV1aWQ9dC51dWlkLHJ9c3RhdGljIHRvSlNPTih0KXtjb25zdCBlPVtdLG49dC50cmFja3MsaT17bmFtZTp0Lm5hbWUsZHVyYXRpb246dC5kdXJhdGlvbix0cmFja3M6ZSx1dWlkOnQudXVpZCxibGVuZE1vZGU6dC5ibGVuZE1vZGV9O2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dCE9PWk7Kyt0KWUucHVzaCh1bmUudG9KU09OKG5bdF0pKTtyZXR1cm4gaX1zdGF0aWMgQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UodCxlLG4saSl7Y29uc3Qgcj1lLmxlbmd0aCxvPVtdO2ZvcihsZXQgdD0wO3Q8cjt0Kyspe2xldCBhPVtdLHM9W107YS5wdXNoKCh0K3ItMSklcix0LCh0KzEpJXIpLHMucHVzaCgwLDEsMCk7Y29uc3QgbD1vbmUuZ2V0S2V5ZnJhbWVPcmRlcihhKTthPW9uZS5zb3J0ZWRBcnJheShhLDEsbCkscz1vbmUuc29ydGVkQXJyYXkocywxLGwpLGl8fDAhPT1hWzBdfHwoYS5wdXNoKHIpLHMucHVzaChzWzBdKSksby5wdXNoKG5ldyBwbmUoIi5tb3JwaFRhcmdldEluZmx1ZW5jZXNbIitlW3RdLm5hbWUrIl0iLGEscykuc2NhbGUoMS9uKSl9cmV0dXJuIG5ldyB0aGlzKHQsLTEsbyl9c3RhdGljIGZpbmRCeU5hbWUodCxlKXtsZXQgbj10O2lmKCFBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPXQ7bj1lLmdlb21ldHJ5JiZlLmdlb21ldHJ5LmFuaW1hdGlvbnN8fGUuYW5pbWF0aW9uc31mb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihuW3RdLm5hbWU9PT1lKXJldHVybiBuW3RdO3JldHVybiBudWxsfXN0YXRpYyBDcmVhdGVDbGlwc0Zyb21Nb3JwaFRhcmdldFNlcXVlbmNlcyh0LGUsbil7Y29uc3QgaT17fSxyPS9eKFtcdy1dKj8pKFtcZF0rKSQvO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLG89bi5uYW1lLm1hdGNoKHIpO2lmKG8mJm8ubGVuZ3RoPjEpe2NvbnN0IHQ9b1sxXTtsZXQgZT1pW3RdO2V8fChpW3RdPWU9W10pLGUucHVzaChuKX19Y29uc3Qgbz1bXTtmb3IoY29uc3QgdCBpbiBpKW8ucHVzaCh0aGlzLkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHQsaVt0XSxlLG4pKTtyZXR1cm4gb31zdGF0aWMgcGFyc2VBbmltYXRpb24odCxlKXtpZighdClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO2NvbnN0IG49ZnVuY3Rpb24odCxlLG4saSxyKXtpZigwIT09bi5sZW5ndGgpe2NvbnN0IG89W10sYT1bXTtvbmUuZmxhdHRlbkpTT04obixvLGEsaSksMCE9PW8ubGVuZ3RoJiZyLnB1c2gobmV3IHQoZSxvLGEpKX19LGk9W10scj10Lm5hbWV8fCJkZWZhdWx0IixvPXQuZnBzfHwzMCxhPXQuYmxlbmRNb2RlO2xldCBzPXQubGVuZ3RofHwtMTtjb25zdCBsPXQuaGllcmFyY2h5fHxbXTtmb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrKyl7Y29uc3Qgcj1sW3RdLmtleXM7aWYociYmMCE9PXIubGVuZ3RoKWlmKHJbMF0ubW9ycGhUYXJnZXRzKXtjb25zdCB0PXt9O2xldCBlO2ZvcihlPTA7ZTxyLmxlbmd0aDtlKyspaWYocltlXS5tb3JwaFRhcmdldHMpZm9yKGxldCBuPTA7bjxyW2VdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7bisrKXRbcltlXS5tb3JwaFRhcmdldHNbbl1dPS0xO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IHQ9W10sbz1bXTtmb3IobGV0IGk9MDtpIT09cltlXS5tb3JwaFRhcmdldHMubGVuZ3RoOysraSl7Y29uc3QgaT1yW2VdO3QucHVzaChpLnRpbWUpLG8ucHVzaChpLm1vcnBoVGFyZ2V0PT09bj8xOjApfWkucHVzaChuZXcgcG5lKCIubW9ycGhUYXJnZXRJbmZsdWVuY2VbIituKyJdIix0LG8pKX1zPXQubGVuZ3RoKihvfHwxKX1lbHNle2NvbnN0IG89Ii5ib25lc1siK2VbdF0ubmFtZSsiXSI7bihfbmUsbysiLnBvc2l0aW9uIixyLCJwb3MiLGkpLG4obW5lLG8rIi5xdWF0ZXJuaW9uIixyLCJyb3QiLGkpLG4oX25lLG8rIi5zY2FsZSIsciwic2NsIixpKX19aWYoMD09PWkubGVuZ3RoKXJldHVybiBudWxsO3JldHVybiBuZXcgdGhpcyhyLHMsaSxhKX1yZXNldER1cmF0aW9uKCl7bGV0IHQ9MDtmb3IobGV0IGU9MCxuPXRoaXMudHJhY2tzLmxlbmd0aDtlIT09bjsrK2Upe2NvbnN0IG49dGhpcy50cmFja3NbZV07dD1NYXRoLm1heCh0LG4udGltZXNbbi50aW1lcy5sZW5ndGgtMV0pfXJldHVybiB0aGlzLmR1cmF0aW9uPXQsdGhpc310cmltKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLnRyaW0oMCx0aGlzLmR1cmF0aW9uKTtyZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0PXQmJnRoaXMudHJhY2tzW2VdLnZhbGlkYXRlKCk7cmV0dXJuIHR9b3B0aW1pemUoKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc31jbG9uZSgpe2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnRyYWNrcy5sZW5ndGg7ZSsrKXQucHVzaCh0aGlzLnRyYWNrc1tlXS5jbG9uZSgpKTtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5uYW1lLHRoaXMuZHVyYXRpb24sdCx0aGlzLmJsZW5kTW9kZSl9dG9KU09OKCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudG9KU09OKHRoaXMpfX1mdW5jdGlvbiB2bmUodCl7aWYodm9pZCAwPT09dC50eXBlKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgdHlwZSB1bmRlZmluZWQsIGNhbiBub3QgcGFyc2UiKTtjb25zdCBlPShmdW5jdGlvbiBuKHQpe3N3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2NhbGFyIjpjYXNlImRvdWJsZSI6Y2FzZSJmbG9hdCI6Y2FzZSJudW1iZXIiOmNhc2UiaW50ZWdlciI6cmV0dXJuIHBuZTtjYXNlInZlY3RvciI6Y2FzZSJ2ZWN0b3IyIjpjYXNlInZlY3RvcjMiOmNhc2UidmVjdG9yNCI6cmV0dXJuIF9uZTtjYXNlImNvbG9yIjpyZXR1cm4gZG5lO2Nhc2UicXVhdGVybmlvbiI6cmV0dXJuIG1uZTtjYXNlImJvb2wiOmNhc2UiYm9vbGVhbiI6cmV0dXJuIGhuZTtjYXNlInN0cmluZyI6cmV0dXJuIGduZX10aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFVuc3VwcG9ydGVkIHR5cGVOYW1lOiAiK3QpfSkodC50eXBlKTtpZih2b2lkIDA9PT10LnRpbWVzKXtjb25zdCBlPVtdLG49W107b25lLmZsYXR0ZW5KU09OKHQua2V5cyxlLG4sInZhbHVlIiksdC50aW1lcz1lLHQudmFsdWVzPW59cmV0dXJuIHZvaWQgMCE9PWUucGFyc2U/ZS5wYXJzZSh0KTpuZXcgZSh0Lm5hbWUsdC50aW1lcyx0LnZhbHVlcyx0LmludGVycG9sYXRpb24pfWNvbnN0IGJuZT17ZW5hYmxlZDohMSxmaWxlczp7fSxhZGQ6ZnVuY3Rpb24odCxlKXshMSE9PXRoaXMuZW5hYmxlZCYmKHRoaXMuZmlsZXNbdF09ZSl9LGdldDpmdW5jdGlvbih0KXtpZighMSE9PXRoaXMuZW5hYmxlZClyZXR1cm4gdGhpcy5maWxlc1t0XX0scmVtb3ZlOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmZpbGVzW3RdfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZmlsZXM9e319fTtjbGFzcyB4bmV7Y29uc3RydWN0b3IodCxlLG4pe2NvbnN0IGk9dGhpcztsZXQgcixvPSExLGE9MCxzPTA7Y29uc3QgbD1bXTt0aGlzLm9uU3RhcnQ9dm9pZCAwLHRoaXMub25Mb2FkPXQsdGhpcy5vblByb2dyZXNzPWUsdGhpcy5vbkVycm9yPW4sdGhpcy5pdGVtU3RhcnQ9ZnVuY3Rpb24odCl7cysrLCExPT09byYmdm9pZCAwIT09aS5vblN0YXJ0JiZpLm9uU3RhcnQodCxhLHMpLG89ITB9LHRoaXMuaXRlbUVuZD1mdW5jdGlvbih0KXthKyssdm9pZCAwIT09aS5vblByb2dyZXNzJiZpLm9uUHJvZ3Jlc3ModCxhLHMpLGE9PT1zJiYobz0hMSx2b2lkIDAhPT1pLm9uTG9hZCYmaS5vbkxvYWQoKSl9LHRoaXMuaXRlbUVycm9yPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PWkub25FcnJvciYmaS5vbkVycm9yKHQpfSx0aGlzLnJlc29sdmVVUkw9ZnVuY3Rpb24odCl7cmV0dXJuIHI/cih0KTp0fSx0aGlzLnNldFVSTE1vZGlmaWVyPWZ1bmN0aW9uKHQpe3JldHVybiByPXQsdGhpc30sdGhpcy5hZGRIYW5kbGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGwucHVzaCh0LGUpLHRoaXN9LHRoaXMucmVtb3ZlSGFuZGxlcj1mdW5jdGlvbih0KXtjb25zdCBlPWwuaW5kZXhPZih0KTtyZXR1cm4tMSE9PWUmJmwuc3BsaWNlKGUsMiksdGhpc30sdGhpcy5nZXRIYW5kbGVyPWZ1bmN0aW9uKHQpe2ZvcihsZXQgZT0wLG49bC5sZW5ndGg7ZTxuO2UrPTIpe2NvbnN0IG49bFtlXSxpPWxbZSsxXTtpZihuLmdsb2JhbCYmKG4ubGFzdEluZGV4PTApLG4udGVzdCh0KSlyZXR1cm4gaX1yZXR1cm4gbnVsbH19fWNvbnN0IHduZT1uZXcgeG5lO2NsYXNzIFNuZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLm1hbmFnZXI9dm9pZCAwIT09dD90OnduZSx0aGlzLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucGF0aD0iIix0aGlzLnJlc291cmNlUGF0aD0iIix0aGlzLnJlcXVlc3RIZWFkZXI9e319bG9hZCgpe31sb2FkQXN5bmModCxlKXtjb25zdCBuPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpLHIpe24ubG9hZCh0LGksZSxyKX0pKX1wYXJzZSgpe31zZXRDcm9zc09yaWdpbih0KXtyZXR1cm4gdGhpcy5jcm9zc09yaWdpbj10LHRoaXN9c2V0V2l0aENyZWRlbnRpYWxzKHQpe3JldHVybiB0aGlzLndpdGhDcmVkZW50aWFscz10LHRoaXN9c2V0UGF0aCh0KXtyZXR1cm4gdGhpcy5wYXRoPXQsdGhpc31zZXRSZXNvdXJjZVBhdGgodCl7cmV0dXJuIHRoaXMucmVzb3VyY2VQYXRoPXQsdGhpc31zZXRSZXF1ZXN0SGVhZGVyKHQpe3JldHVybiB0aGlzLnJlcXVlc3RIZWFkZXI9dCx0aGlzfX1jb25zdCBNbmU9e307Y2xhc3MgRW5lIGV4dGVuZHMgU25le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7dm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMCE9PXRoaXMucGF0aCYmKHQ9dGhpcy5wYXRoK3QpLHQ9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwodCk7Y29uc3Qgcj1ibmUuZ2V0KHQpO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHRoaXMubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoKCk9PntlJiZlKHIpLHRoaXMubWFuYWdlci5pdGVtRW5kKHQpfSksMCkscjtpZih2b2lkIDAhPT1NbmVbdF0pcmV0dXJuIHZvaWQgTW5lW3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOml9KTtNbmVbdF09W10sTW5lW3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOml9KTtjb25zdCBvPW5ldyBSZXF1ZXN0KHQse2hlYWRlcnM6bmV3IEhlYWRlcnModGhpcy5yZXF1ZXN0SGVhZGVyKSxjcmVkZW50aWFsczp0aGlzLndpdGhDcmVkZW50aWFscz8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIn0pLGE9dGhpcy5taW1lVHlwZSxzPXRoaXMucmVzcG9uc2VUeXBlO2ZldGNoKG8pLnRoZW4oKGU9PntpZigyMDA9PT1lLnN0YXR1c3x8MD09PWUuc3RhdHVzKXtpZigwPT09ZS5zdGF0dXMmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKSwidW5kZWZpbmVkIj09dHlwZW9mIFJlYWRhYmxlU3RyZWFtfHx2b2lkIDA9PT1lLmJvZHkuZ2V0UmVhZGVyKXJldHVybiBlO2NvbnN0IG49TW5lW3RdLGk9ZS5ib2R5LmdldFJlYWRlcigpLHI9ZS5oZWFkZXJzLmdldCgiQ29udGVudC1MZW5ndGgiKSxvPXI/cGFyc2VJbnQocik6MCxhPTAhPT1vO2xldCBzPTA7Y29uc3QgbD1uZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0KHQpeyEoZnVuY3Rpb24gZSgpe2kucmVhZCgpLnRoZW4oKCh7ZG9uZTppLHZhbHVlOnJ9KT0+e2lmKGkpdC5jbG9zZSgpO2Vsc2V7cys9ci5ieXRlTGVuZ3RoO2NvbnN0IGk9bmV3IFByb2dyZXNzRXZlbnQoInByb2dyZXNzIix7bGVuZ3RoQ29tcHV0YWJsZTphLGxvYWRlZDpzLHRvdGFsOm99KTtmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9blt0XTtlLm9uUHJvZ3Jlc3MmJmUub25Qcm9ncmVzcyhpKX10LmVucXVldWUociksZSgpfX0pKX0pKCl9fSk7cmV0dXJuIG5ldyBSZXNwb25zZShsKX10aHJvdyBFcnJvcihgZmV0Y2ggZm9yICIke2UudXJsfSIgcmVzcG9uZGVkIHdpdGggJHtlLnN0YXR1c306ICR7ZS5zdGF0dXNUZXh0fWApfSkpLnRoZW4oKHQ9Pntzd2l0Y2gocyl7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIHQuYXJyYXlCdWZmZXIoKTtjYXNlImJsb2IiOnJldHVybiB0LmJsb2IoKTtjYXNlImRvY3VtZW50IjpyZXR1cm4gdC50ZXh0KCkudGhlbigodD0+KG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyh0LGEpKSk7Y2FzZSJqc29uIjpyZXR1cm4gdC5qc29uKCk7ZGVmYXVsdDppZih2b2lkIDA9PT1hKXJldHVybiB0LnRleHQoKTt7Y29uc3QgZT0vY2hhcnNldD0iPyhbXjsiXHNdKikiPy9pLmV4ZWMoYSksbj1lJiZlWzFdP2VbMV0udG9Mb3dlckNhc2UoKTp2b2lkIDAsaT1uZXcgVGV4dERlY29kZXIobik7cmV0dXJuIHQuYXJyYXlCdWZmZXIoKS50aGVuKCh0PT5pLmRlY29kZSh0KSkpfX19KSkudGhlbigoZT0+e2JuZS5hZGQodCxlKTtjb25zdCBuPU1uZVt0XTtkZWxldGUgTW5lW3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25Mb2FkJiZpLm9uTG9hZChlKX19KSkuY2F0Y2goKGU9Pntjb25zdCBuPU1uZVt0XTtpZih2b2lkIDA9PT1uKXRocm93IHRoaXMubWFuYWdlci5pdGVtRXJyb3IodCksZTtkZWxldGUgTW5lW3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25FcnJvciYmaS5vbkVycm9yKGUpfXRoaXMubWFuYWdlci5pdGVtRXJyb3IodCl9KSkuZmluYWxseSgoKCk9Pnt0aGlzLm1hbmFnZXIuaXRlbUVuZCh0KX0pKSx0aGlzLm1hbmFnZXIuaXRlbVN0YXJ0KHQpfXNldFJlc3BvbnNlVHlwZSh0KXtyZXR1cm4gdGhpcy5yZXNwb25zZVR5cGU9dCx0aGlzfXNldE1pbWVUeXBlKHQpe3JldHVybiB0aGlzLm1pbWVUeXBlPXQsdGhpc319Y2xhc3MgVG5lIGV4dGVuZHMgU25le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7dm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCByPXRoaXMsbz1ibmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLHIubWFuYWdlci5pdGVtRW5kKHQpfSksMCksbztjb25zdCBhPVU1dCgiaW1nIik7ZnVuY3Rpb24gcygpe2MoKSxibmUuYWRkKHQsdGhpcyksZSYmZSh0aGlzKSxyLm1hbmFnZXIuaXRlbUVuZCh0KX1mdW5jdGlvbiBsKGUpe2MoKSxpJiZpKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9ZnVuY3Rpb24gYygpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSl9cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksYS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSksImRhdGE6IiE9PXQuc3Vic3RyKDAsNSkmJnZvaWQgMCE9PXRoaXMuY3Jvc3NPcmlnaW4mJihhLmNyb3NzT3JpZ2luPXRoaXMuY3Jvc3NPcmlnaW4pLHIubWFuYWdlci5pdGVtU3RhcnQodCksYS5zcmM9dCxhfX1jbGFzcyBDbmUgZXh0ZW5kcyBTbmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPW5ldyB5NnQsbz1uZXcgVG5lKHRoaXMubWFuYWdlcik7by5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxvLnNldFBhdGgodGhpcy5wYXRoKTtsZXQgYT0wO2Z1bmN0aW9uIHMobil7by5sb2FkKHRbbl0sKGZ1bmN0aW9uKHQpe3IuaW1hZ2VzW25dPXQsYSsrLDY9PT1hJiYoci5uZWVkc1VwZGF0ZT0hMCxlJiZlKHIpKX0pLHZvaWQgMCxpKX1mb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSlzKGUpO3JldHVybiByfX1jbGFzcyBBbmUgZXh0ZW5kcyBTbmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgJDd0LGE9bmV3IEVuZSh0aGlzLm1hbmFnZXIpO3JldHVybiBhLnNldFJlc3BvbnNlVHlwZSgiYXJyYXlidWZmZXIiKSxhLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxhLnNldFBhdGgodGhpcy5wYXRoKSxhLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyksYS5sb2FkKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IG49ci5wYXJzZSh0KTtuJiYodm9pZCAwIT09bi5pbWFnZT9vLmltYWdlPW4uaW1hZ2U6dm9pZCAwIT09bi5kYXRhJiYoby5pbWFnZS53aWR0aD1uLndpZHRoLG8uaW1hZ2UuaGVpZ2h0PW4uaGVpZ2h0LG8uaW1hZ2UuZGF0YT1uLmRhdGEpLG8ud3JhcFM9dm9pZCAwIT09bi53cmFwUz9uLndyYXBTOmwydCxvLndyYXBUPXZvaWQgMCE9PW4ud3JhcFQ/bi53cmFwVDpsMnQsby5tYWdGaWx0ZXI9dm9pZCAwIT09bi5tYWdGaWx0ZXI/bi5tYWdGaWx0ZXI6cDJ0LG8ubWluRmlsdGVyPXZvaWQgMCE9PW4ubWluRmlsdGVyP24ubWluRmlsdGVyOnAydCxvLmFuaXNvdHJvcHk9dm9pZCAwIT09bi5hbmlzb3Ryb3B5P24uYW5pc290cm9weToxLHZvaWQgMCE9PW4uZW5jb2RpbmcmJihvLmVuY29kaW5nPW4uZW5jb2RpbmcpLHZvaWQgMCE9PW4uZmxpcFkmJihvLmZsaXBZPW4uZmxpcFkpLHZvaWQgMCE9PW4uZm9ybWF0JiYoby5mb3JtYXQ9bi5mb3JtYXQpLHZvaWQgMCE9PW4udHlwZSYmKG8udHlwZT1uLnR5cGUpLHZvaWQgMCE9PW4ubWlwbWFwcyYmKG8ubWlwbWFwcz1uLm1pcG1hcHMsby5taW5GaWx0ZXI9bTJ0KSwxPT09bi5taXBtYXBDb3VudCYmKG8ubWluRmlsdGVyPXAydCksdm9pZCAwIT09bi5nZW5lcmF0ZU1pcG1hcHMmJihvLmdlbmVyYXRlTWlwbWFwcz1uLmdlbmVyYXRlTWlwbWFwcyksby5uZWVkc1VwZGF0ZT0hMCxlJiZlKG8sbikpfSksbixpKSxvfX1jbGFzcyBrbmUgZXh0ZW5kcyBTbmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPW5ldyBRNXQsbz1uZXcgVG5lKHRoaXMubWFuYWdlcik7cmV0dXJuIG8uc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksby5zZXRQYXRoKHRoaXMucGF0aCksby5sb2FkKHQsKGZ1bmN0aW9uKHQpe3IuaW1hZ2U9dCxyLm5lZWRzVXBkYXRlPSEwLHZvaWQgMCE9PWUmJmUocil9KSxuLGkpLHJ9fWNsYXNzIFBuZSBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcih0LGU9MSl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpZ2h0Iix0aGlzLmNvbG9yPW5ldyAkNXQodCksdGhpcy5pbnRlbnNpdHk9ZX1kaXNwb3NlKCl7fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpLGUub2JqZWN0LmludGVuc2l0eT10aGlzLmludGVuc2l0eSx2b2lkIDAhPT10aGlzLmdyb3VuZENvbG9yJiYoZS5vYmplY3QuZ3JvdW5kQ29sb3I9dGhpcy5ncm91bmRDb2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5kaXN0YW5jZSYmKGUub2JqZWN0LmRpc3RhbmNlPXRoaXMuZGlzdGFuY2UpLHZvaWQgMCE9PXRoaXMuYW5nbGUmJihlLm9iamVjdC5hbmdsZT10aGlzLmFuZ2xlKSx2b2lkIDAhPT10aGlzLmRlY2F5JiYoZS5vYmplY3QuZGVjYXk9dGhpcy5kZWNheSksdm9pZCAwIT09dGhpcy5wZW51bWJyYSYmKGUub2JqZWN0LnBlbnVtYnJhPXRoaXMucGVudW1icmEpLHZvaWQgMCE9PXRoaXMuc2hhZG93JiYoZS5vYmplY3Quc2hhZG93PXRoaXMuc2hhZG93LnRvSlNPTigpKSxlfX1QbmUucHJvdG90eXBlLmlzTGlnaHQ9ITA7Y2xhc3MgTG5lIGV4dGVuZHMgUG5le2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LG4pLHRoaXMudHlwZT0iSGVtaXNwaGVyZUxpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkobDR0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLmdyb3VuZENvbG9yPW5ldyAkNXQoZSl9Y29weSh0KXtyZXR1cm4gUG5lLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmdyb3VuZENvbG9yLmNvcHkodC5ncm91bmRDb2xvciksdGhpc319TG5lLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodD0hMDtjb25zdCBJbmU9bmV3IEQzdCxObmU9bmV3IGEzdCxSbmU9bmV3IGEzdDtjbGFzcyBPbmV7Y29uc3RydWN0b3IodCl7dGhpcy5jYW1lcmE9dCx0aGlzLmJpYXM9MCx0aGlzLm5vcm1hbEJpYXM9MCx0aGlzLnJhZGl1cz0xLHRoaXMuYmx1clNhbXBsZXM9OCx0aGlzLm1hcFNpemU9bmV3IEQ1dCg1MTIsNTEyKSx0aGlzLm1hcD1udWxsLHRoaXMubWFwUGFzcz1udWxsLHRoaXMubWF0cml4PW5ldyBEM3QsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy5fZnJ1c3R1bT1uZXcgVDZ0LHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgRDV0KDEsMSksdGhpcy5fdmlld3BvcnRDb3VudD0xLHRoaXMuX3ZpZXdwb3J0cz1bbmV3IGUzdCgwLDAsMSwxKV19Z2V0Vmlld3BvcnRDb3VudCgpe3JldHVybiB0aGlzLl92aWV3cG9ydENvdW50fWdldEZydXN0dW0oKXtyZXR1cm4gdGhpcy5fZnJ1c3R1bX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49dGhpcy5tYXRyaXg7Tm5lLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxlLnBvc2l0aW9uLmNvcHkoTm5lKSxSbmUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQudGFyZ2V0Lm1hdHJpeFdvcmxkKSxlLmxvb2tBdChSbmUpLGUudXBkYXRlTWF0cml4V29ybGQoKSxJbmUubXVsdGlwbHlNYXRyaWNlcyhlLnByb2plY3Rpb25NYXRyaXgsZS5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoSW5lKSxuLnNldCguNSwwLDAsLjUsMCwuNSwwLC41LDAsMCwuNSwuNSwwLDAsMCwxKSxuLm11bHRpcGx5KGUucHJvamVjdGlvbk1hdHJpeCksbi5tdWx0aXBseShlLm1hdHJpeFdvcmxkSW52ZXJzZSl9Z2V0Vmlld3BvcnQodCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0c1t0XX1nZXRGcmFtZUV4dGVudHMoKXtyZXR1cm4gdGhpcy5fZnJhbWVFeHRlbnRzfWRpc3Bvc2UoKXt0aGlzLm1hcCYmdGhpcy5tYXAuZGlzcG9zZSgpLHRoaXMubWFwUGFzcyYmdGhpcy5tYXBQYXNzLmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiB0aGlzLmNhbWVyYT10LmNhbWVyYS5jbG9uZSgpLHRoaXMuYmlhcz10LmJpYXMsdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5tYXBTaXplLmNvcHkodC5tYXBTaXplKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9e307cmV0dXJuIDAhPT10aGlzLmJpYXMmJih0LmJpYXM9dGhpcy5iaWFzKSwwIT09dGhpcy5ub3JtYWxCaWFzJiYodC5ub3JtYWxCaWFzPXRoaXMubm9ybWFsQmlhcyksMSE9PXRoaXMucmFkaXVzJiYodC5yYWRpdXM9dGhpcy5yYWRpdXMpLDUxMj09PXRoaXMubWFwU2l6ZS54JiY1MTI9PT10aGlzLm1hcFNpemUueXx8KHQubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpKSx0LmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdCxkZWxldGUgdC5jYW1lcmEubWF0cml4LHR9fWNsYXNzIHpuZSBleHRlbmRzIE9uZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBtNnQoNTAsMSwuNSw1MDApKSx0aGlzLmZvY3VzPTF9dXBkYXRlTWF0cmljZXModCl7Y29uc3QgZT10aGlzLmNhbWVyYSxuPTIqbTV0KnQuYW5nbGUqdGhpcy5mb2N1cyxpPXRoaXMubWFwU2l6ZS53aWR0aC90aGlzLm1hcFNpemUuaGVpZ2h0LHI9dC5kaXN0YW5jZXx8ZS5mYXI7bj09PWUuZm92JiZpPT09ZS5hc3BlY3QmJnI9PT1lLmZhcnx8KGUuZm92PW4sZS5hc3BlY3Q9aSxlLmZhcj1yLGUudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxzdXBlci51cGRhdGVNYXRyaWNlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzfX16bmUucHJvdG90eXBlLmlzU3BvdExpZ2h0U2hhZG93PSEwO2NsYXNzIERuZSBleHRlbmRzIFBuZXtjb25zdHJ1Y3Rvcih0LGUsbj0wLGk9TWF0aC5QSS8zLHI9MCxvPTEpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTcG90TGlnaHQiLHRoaXMucG9zaXRpb24uY29weShsNHQuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBsNHQsdGhpcy5kaXN0YW5jZT1uLHRoaXMuYW5nbGU9aSx0aGlzLnBlbnVtYnJhPXIsdGhpcy5kZWNheT1vLHRoaXMuc2hhZG93PW5ldyB6bmV9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvTWF0aC5QSX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuYW5nbGU9dC5hbmdsZSx0aGlzLnBlbnVtYnJhPXQucGVudW1icmEsdGhpcy5kZWNheT10LmRlY2F5LHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX1EbmUucHJvdG90eXBlLmlzU3BvdExpZ2h0PSEwO2NvbnN0IEJuZT1uZXcgRDN0LEhuZT1uZXcgYTN0LEZuZT1uZXcgYTN0O2NsYXNzIFZuZSBleHRlbmRzIE9uZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBtNnQoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IEQ1dCg0LDIpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9Nix0aGlzLl92aWV3cG9ydHM9W25ldyBlM3QoMiwxLDEsMSksbmV3IGUzdCgwLDEsMSwxKSxuZXcgZTN0KDMsMSwxLDEpLG5ldyBlM3QoMSwxLDEsMSksbmV3IGUzdCgzLDAsMSwxKSxuZXcgZTN0KDEsMCwxLDEpXSx0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IGEzdCgxLDAsMCksbmV3IGEzdCgtMSwwLDApLG5ldyBhM3QoMCwwLDEpLG5ldyBhM3QoMCwwLC0xKSxuZXcgYTN0KDAsMSwwKSxuZXcgYTN0KDAsLTEsMCldLHRoaXMuX2N1YmVVcHM9W25ldyBhM3QoMCwxLDApLG5ldyBhM3QoMCwxLDApLG5ldyBhM3QoMCwxLDApLG5ldyBhM3QoMCwxLDApLG5ldyBhM3QoMCwwLDEpLG5ldyBhM3QoMCwwLC0xKV19dXBkYXRlTWF0cmljZXModCxlPTApe2NvbnN0IG49dGhpcy5jYW1lcmEsaT10aGlzLm1hdHJpeCxyPXQuZGlzdGFuY2V8fG4uZmFyO3IhPT1uLmZhciYmKG4uZmFyPXIsbi51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLEhuZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksbi5wb3NpdGlvbi5jb3B5KEhuZSksRm5lLmNvcHkobi5wb3NpdGlvbiksRm5lLmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tlXSksbi51cC5jb3B5KHRoaXMuX2N1YmVVcHNbZV0pLG4ubG9va0F0KEZuZSksbi51cGRhdGVNYXRyaXhXb3JsZCgpLGkubWFrZVRyYW5zbGF0aW9uKC1IbmUueCwtSG5lLnksLUhuZS56KSxCbmUubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoQm5lKX19Vm5lLnByb3RvdHlwZS5pc1BvaW50TGlnaHRTaGFkb3c9ITA7Y2xhc3MgVW5lIGV4dGVuZHMgUG5le2NvbnN0cnVjdG9yKHQsZSxuPTAsaT0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1uLHRoaXMuZGVjYXk9aSx0aGlzLnNoYWRvdz1uZXcgVm5lfWdldCBwb3dlcigpe3JldHVybiA0KnRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX1VbmUucHJvdG90eXBlLmlzUG9pbnRMaWdodD0hMDtjbGFzcyBqbmUgZXh0ZW5kcyBPbmV7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgSDZ0KC01LDUsNSwtNSwuNSw1MDApKX19am5lLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHRTaGFkb3c9ITA7Y2xhc3MgR25lIGV4dGVuZHMgUG5le2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkRpcmVjdGlvbmFsTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShsNHQuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBsNHQsdGhpcy5zaGFkb3c9bmV3IGpuZX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fUduZS5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0PSEwO2NsYXNzIFduZSBleHRlbmRzIFBuZXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJBbWJpZW50TGlnaHQifX1XbmUucHJvdG90eXBlLmlzQW1iaWVudExpZ2h0PSEwO2NsYXNzIHFuZSBleHRlbmRzIFBuZXtjb25zdHJ1Y3Rvcih0LGUsbj0xMCxpPTEwKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1uLHRoaXMuaGVpZ2h0PWl9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5KnRoaXMud2lkdGgqdGhpcy5oZWlnaHQqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC8odGhpcy53aWR0aCp0aGlzLmhlaWdodCpNYXRoLlBJKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Qud2lkdGg9dGhpcy53aWR0aCxlLm9iamVjdC5oZWlnaHQ9dGhpcy5oZWlnaHQsZX19cW5lLnByb3RvdHlwZS5pc1JlY3RBcmVhTGlnaHQ9ITA7Y2xhc3MgWW5le2NvbnN0cnVjdG9yKCl7dGhpcy5jb2VmZmljaWVudHM9W107Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50cy5wdXNoKG5ldyBhM3QpfXNldCh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLmNvcHkodFtlXSk7cmV0dXJuIHRoaXN9emVybygpe2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHNbdF0uc2V0KDAsMCwwKTtyZXR1cm4gdGhpc31nZXRBdCh0LGUpe2NvbnN0IG49dC54LGk9dC55LHI9dC56LG89dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIGUuY29weShvWzBdKS5tdWx0aXBseVNjYWxhciguMjgyMDk1KSxlLmFkZFNjYWxlZFZlY3RvcihvWzFdLC40ODg2MDMqaSksZS5hZGRTY2FsZWRWZWN0b3Iob1syXSwuNDg4NjAzKnIpLGUuYWRkU2NhbGVkVmVjdG9yKG9bM10sLjQ4ODYwMypuKSxlLmFkZFNjYWxlZFZlY3RvcihvWzRdLG4qaSoxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3Iob1s1XSxpKnIqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKG9bNl0sLjMxNTM5MiooMypyKnItMSkpLGUuYWRkU2NhbGVkVmVjdG9yKG9bN10sbipyKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihvWzhdLC41NDYyNzQqKG4qbi1pKmkpKSxlfWdldElycmFkaWFuY2VBdCh0LGUpe2NvbnN0IG49dC54LGk9dC55LHI9dC56LG89dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIGUuY29weShvWzBdKS5tdWx0aXBseVNjYWxhciguODg2MjI3KSxlLmFkZFNjYWxlZFZlY3RvcihvWzFdLDEuMDIzMzI4KmkpLGUuYWRkU2NhbGVkVmVjdG9yKG9bMl0sMS4wMjMzMjgqciksZS5hZGRTY2FsZWRWZWN0b3Iob1szXSwxLjAyMzMyOCpuKSxlLmFkZFNjYWxlZFZlY3RvcihvWzRdLC44NTgwODYqbippKSxlLmFkZFNjYWxlZFZlY3RvcihvWzVdLC44NTgwODYqaSpyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzZdLC43NDMxMjUqcipyLS4yNDc3MDgpLGUuYWRkU2NhbGVkVmVjdG9yKG9bN10sLjg1ODA4NipuKnIpLGUuYWRkU2NhbGVkVmVjdG9yKG9bOF0sLjQyOTA0MyoobipuLWkqaSkpLGV9YWRkKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uYWRkKHQuY29lZmZpY2llbnRzW2VdKTtyZXR1cm4gdGhpc31hZGRTY2FsZWRTSCh0LGUpe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5jb2VmZmljaWVudHNbbl0uYWRkU2NhbGVkVmVjdG9yKHQuY29lZmZpY2llbnRzW25dLGUpO3JldHVybiB0aGlzfXNjYWxlKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0ubXVsdGlwbHlTY2FsYXIodCk7cmV0dXJuIHRoaXN9bGVycCh0LGUpe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5jb2VmZmljaWVudHNbbl0ubGVycCh0LmNvZWZmaWNpZW50c1tuXSxlKTtyZXR1cm4gdGhpc31lcXVhbHModCl7Zm9yKGxldCBlPTA7ZTw5O2UrKylpZighdGhpcy5jb2VmZmljaWVudHNbZV0uZXF1YWxzKHQuY29lZmZpY2llbnRzW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1jb3B5KHQpe3JldHVybiB0aGlzLnNldCh0LmNvZWZmaWNpZW50cyl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9ZnJvbUFycmF5KHQsZT0wKXtjb25zdCBuPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgaT0wO2k8OTtpKyspbltpXS5mcm9tQXJyYXkodCxlKzMqaSk7cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmNvZWZmaWNpZW50cztmb3IobGV0IGk9MDtpPDk7aSsrKW5baV0udG9BcnJheSh0LGUrMyppKTtyZXR1cm4gdH1zdGF0aWMgZ2V0QmFzaXNBdCh0LGUpe2NvbnN0IG49dC54LGk9dC55LHI9dC56O2VbMF09LjI4MjA5NSxlWzFdPS40ODg2MDMqaSxlWzJdPS40ODg2MDMqcixlWzNdPS40ODg2MDMqbixlWzRdPTEuMDkyNTQ4Km4qaSxlWzVdPTEuMDkyNTQ4KmkqcixlWzZdPS4zMTUzOTIqKDMqcipyLTEpLGVbN109MS4wOTI1NDgqbipyLGVbOF09LjU0NjI3NCoobipuLWkqaSl9fVluZS5wcm90b3R5cGUuaXNTcGhlcmljYWxIYXJtb25pY3MzPSEwO2NsYXNzIFhuZSBleHRlbmRzIFBuZXtjb25zdHJ1Y3Rvcih0PW5ldyBZbmUsZT0xKXtzdXBlcih2b2lkIDAsZSksdGhpcy5zaD10fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zaC5jb3B5KHQuc2gpLHRoaXN9ZnJvbUpTT04odCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXMuc2guZnJvbUFycmF5KHQuc2gpLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5zaD10aGlzLnNoLnRvQXJyYXkoKSxlfX1YbmUucHJvdG90eXBlLmlzTGlnaHRQcm9iZT0hMDtjbGFzcyAkbmUgZXh0ZW5kcyBTbmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50ZXh0dXJlcz17fX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBFbmUoci5tYW5hZ2VyKTtvLnNldFBhdGgoci5wYXRoKSxvLnNldFJlcXVlc3RIZWFkZXIoci5yZXF1ZXN0SGVhZGVyKSxvLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyksby5sb2FkKHQsKGZ1bmN0aW9uKG4pe3RyeXtlKHIucGFyc2UoSlNPTi5wYXJzZShuKSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX1wYXJzZSh0KXtjb25zdCBlPXRoaXMudGV4dHVyZXM7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdm9pZCAwPT09ZVt0XSYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbExvYWRlcjogVW5kZWZpbmVkIHRleHR1cmUiLHQpLGVbdF19Y29uc3QgaT1uZXcgcm5lW3QudHlwZV07aWYodm9pZCAwIT09dC51dWlkJiYoaS51dWlkPXQudXVpZCksdm9pZCAwIT09dC5uYW1lJiYoaS5uYW1lPXQubmFtZSksdm9pZCAwIT09dC5jb2xvciYmdm9pZCAwIT09aS5jb2xvciYmaS5jb2xvci5zZXRIZXgodC5jb2xvciksdm9pZCAwIT09dC5yb3VnaG5lc3MmJihpLnJvdWdobmVzcz10LnJvdWdobmVzcyksdm9pZCAwIT09dC5tZXRhbG5lc3MmJihpLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyksdm9pZCAwIT09dC5zaGVlbiYmKGkuc2hlZW49dC5zaGVlbiksdm9pZCAwIT09dC5zaGVlbkNvbG9yJiYoaS5zaGVlbkNvbG9yPShuZXcgJDV0KS5zZXRIZXgodC5zaGVlbkNvbG9yKSksdm9pZCAwIT09dC5zaGVlblJvdWdobmVzcyYmKGkuc2hlZW5Sb3VnaG5lc3M9dC5zaGVlblJvdWdobmVzcyksdm9pZCAwIT09dC5lbWlzc2l2ZSYmdm9pZCAwIT09aS5lbWlzc2l2ZSYmaS5lbWlzc2l2ZS5zZXRIZXgodC5lbWlzc2l2ZSksdm9pZCAwIT09dC5zcGVjdWxhciYmdm9pZCAwIT09aS5zcGVjdWxhciYmaS5zcGVjdWxhci5zZXRIZXgodC5zcGVjdWxhciksdm9pZCAwIT09dC5zcGVjdWxhckludGVuc2l0eSYmKGkuc3BlY3VsYXJJbnRlbnNpdHk9dC5zcGVjdWxhckludGVuc2l0eSksdm9pZCAwIT09dC5zcGVjdWxhckNvbG9yJiZ2b2lkIDAhPT1pLnNwZWN1bGFyQ29sb3ImJmkuc3BlY3VsYXJDb2xvci5zZXRIZXgodC5zcGVjdWxhckNvbG9yKSx2b2lkIDAhPT10LnNoaW5pbmVzcyYmKGkuc2hpbmluZXNzPXQuc2hpbmluZXNzKSx2b2lkIDAhPT10LmNsZWFyY29hdCYmKGkuY2xlYXJjb2F0PXQuY2xlYXJjb2F0KSx2b2lkIDAhPT10LmNsZWFyY29hdFJvdWdobmVzcyYmKGkuY2xlYXJjb2F0Um91Z2huZXNzPXQuY2xlYXJjb2F0Um91Z2huZXNzKSx2b2lkIDAhPT10LnRyYW5zbWlzc2lvbiYmKGkudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uKSx2b2lkIDAhPT10LnRoaWNrbmVzcyYmKGkudGhpY2tuZXNzPXQudGhpY2tuZXNzKSx2b2lkIDAhPT10LmF0dGVudWF0aW9uRGlzdGFuY2UmJihpLmF0dGVudWF0aW9uRGlzdGFuY2U9dC5hdHRlbnVhdGlvbkRpc3RhbmNlKSx2b2lkIDAhPT10LmF0dGVudWF0aW9uQ29sb3ImJnZvaWQgMCE9PWkuYXR0ZW51YXRpb25Db2xvciYmaS5hdHRlbnVhdGlvbkNvbG9yLnNldEhleCh0LmF0dGVudWF0aW9uQ29sb3IpLHZvaWQgMCE9PXQuZm9nJiYoaS5mb2c9dC5mb2cpLHZvaWQgMCE9PXQuZmxhdFNoYWRpbmcmJihpLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcpLHZvaWQgMCE9PXQuYmxlbmRpbmcmJihpLmJsZW5kaW5nPXQuYmxlbmRpbmcpLHZvaWQgMCE9PXQuY29tYmluZSYmKGkuY29tYmluZT10LmNvbWJpbmUpLHZvaWQgMCE9PXQuc2lkZSYmKGkuc2lkZT10LnNpZGUpLHZvaWQgMCE9PXQuc2hhZG93U2lkZSYmKGkuc2hhZG93U2lkZT10LnNoYWRvd1NpZGUpLHZvaWQgMCE9PXQub3BhY2l0eSYmKGkub3BhY2l0eT10Lm9wYWNpdHkpLHZvaWQgMCE9PXQudHJhbnNwYXJlbnQmJihpLnRyYW5zcGFyZW50PXQudHJhbnNwYXJlbnQpLHZvaWQgMCE9PXQuYWxwaGFUZXN0JiYoaS5hbHBoYVRlc3Q9dC5hbHBoYVRlc3QpLHZvaWQgMCE9PXQuZGVwdGhUZXN0JiYoaS5kZXB0aFRlc3Q9dC5kZXB0aFRlc3QpLHZvaWQgMCE9PXQuZGVwdGhXcml0ZSYmKGkuZGVwdGhXcml0ZT10LmRlcHRoV3JpdGUpLHZvaWQgMCE9PXQuY29sb3JXcml0ZSYmKGkuY29sb3JXcml0ZT10LmNvbG9yV3JpdGUpLHZvaWQgMCE9PXQuYWxwaGFXcml0ZSYmKGkuYWxwaGFXcml0ZT10LmFscGhhV3JpdGUpLHZvaWQgMCE9PXQuc3RlbmNpbFdyaXRlJiYoaS5zdGVuY2lsV3JpdGU9dC5zdGVuY2lsV3JpdGUpLHZvaWQgMCE9PXQuc3RlbmNpbFdyaXRlTWFzayYmKGkuc3RlbmNpbFdyaXRlTWFzaz10LnN0ZW5jaWxXcml0ZU1hc2spLHZvaWQgMCE9PXQuc3RlbmNpbEZ1bmMmJihpLnN0ZW5jaWxGdW5jPXQuc3RlbmNpbEZ1bmMpLHZvaWQgMCE9PXQuc3RlbmNpbFJlZiYmKGkuc3RlbmNpbFJlZj10LnN0ZW5jaWxSZWYpLHZvaWQgMCE9PXQuc3RlbmNpbEZ1bmNNYXNrJiYoaS5zdGVuY2lsRnVuY01hc2s9dC5zdGVuY2lsRnVuY01hc2spLHZvaWQgMCE9PXQuc3RlbmNpbEZhaWwmJihpLnN0ZW5jaWxGYWlsPXQuc3RlbmNpbEZhaWwpLHZvaWQgMCE9PXQuc3RlbmNpbFpGYWlsJiYoaS5zdGVuY2lsWkZhaWw9dC5zdGVuY2lsWkZhaWwpLHZvaWQgMCE9PXQuc3RlbmNpbFpQYXNzJiYoaS5zdGVuY2lsWlBhc3M9dC5zdGVuY2lsWlBhc3MpLHZvaWQgMCE9PXQud2lyZWZyYW1lJiYoaS53aXJlZnJhbWU9dC53aXJlZnJhbWUpLHZvaWQgMCE9PXQud2lyZWZyYW1lTGluZXdpZHRoJiYoaS53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgpLHZvaWQgMCE9PXQud2lyZWZyYW1lTGluZWNhcCYmKGkud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXApLHZvaWQgMCE9PXQud2lyZWZyYW1lTGluZWpvaW4mJihpLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4pLHZvaWQgMCE9PXQucm90YXRpb24mJihpLnJvdGF0aW9uPXQucm90YXRpb24pLDEhPT10LmxpbmV3aWR0aCYmKGkubGluZXdpZHRoPXQubGluZXdpZHRoKSx2b2lkIDAhPT10LmRhc2hTaXplJiYoaS5kYXNoU2l6ZT10LmRhc2hTaXplKSx2b2lkIDAhPT10LmdhcFNpemUmJihpLmdhcFNpemU9dC5nYXBTaXplKSx2b2lkIDAhPT10LnNjYWxlJiYoaS5zY2FsZT10LnNjYWxlKSx2b2lkIDAhPT10LnBvbHlnb25PZmZzZXQmJihpLnBvbHlnb25PZmZzZXQ9dC5wb2x5Z29uT2Zmc2V0KSx2b2lkIDAhPT10LnBvbHlnb25PZmZzZXRGYWN0b3ImJihpLnBvbHlnb25PZmZzZXRGYWN0b3I9dC5wb2x5Z29uT2Zmc2V0RmFjdG9yKSx2b2lkIDAhPT10LnBvbHlnb25PZmZzZXRVbml0cyYmKGkucG9seWdvbk9mZnNldFVuaXRzPXQucG9seWdvbk9mZnNldFVuaXRzKSx2b2lkIDAhPT10LmRpdGhlcmluZyYmKGkuZGl0aGVyaW5nPXQuZGl0aGVyaW5nKSx2b2lkIDAhPT10LmFscGhhVG9Db3ZlcmFnZSYmKGkuYWxwaGFUb0NvdmVyYWdlPXQuYWxwaGFUb0NvdmVyYWdlKSx2b2lkIDAhPT10LnByZW11bHRpcGxpZWRBbHBoYSYmKGkucHJlbXVsdGlwbGllZEFscGhhPXQucHJlbXVsdGlwbGllZEFscGhhKSx2b2lkIDAhPT10LnZpc2libGUmJihpLnZpc2libGU9dC52aXNpYmxlKSx2b2lkIDAhPT10LnRvbmVNYXBwZWQmJihpLnRvbmVNYXBwZWQ9dC50b25lTWFwcGVkKSx2b2lkIDAhPT10LnVzZXJEYXRhJiYoaS51c2VyRGF0YT10LnVzZXJEYXRhKSx2b2lkIDAhPT10LnZlcnRleENvbG9ycyYmKGkudmVydGV4Q29sb3JzPSJudW1iZXIiPT10eXBlb2YgdC52ZXJ0ZXhDb2xvcnM/dC52ZXJ0ZXhDb2xvcnM+MDp0LnZlcnRleENvbG9ycyksdm9pZCAwIT09dC51bmlmb3Jtcylmb3IoY29uc3QgZSBpbiB0LnVuaWZvcm1zKXtjb25zdCByPXQudW5pZm9ybXNbZV07c3dpdGNoKGkudW5pZm9ybXNbZV09e30sci50eXBlKXtjYXNlInQiOmkudW5pZm9ybXNbZV0udmFsdWU9bihyLnZhbHVlKTticmVhaztjYXNlImMiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyAkNXQpLnNldEhleChyLnZhbHVlKTticmVhaztjYXNlInYyIjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgRDV0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7Y2FzZSJ2MyI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IGEzdCkuZnJvbUFycmF5KHIudmFsdWUpO2JyZWFrO2Nhc2UidjQiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBlM3QpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlIm0zIjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgQjV0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7Y2FzZSJtNCI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IEQzdCkuZnJvbUFycmF5KHIudmFsdWUpO2JyZWFrO2RlZmF1bHQ6aS51bmlmb3Jtc1tlXS52YWx1ZT1yLnZhbHVlfX1pZih2b2lkIDAhPT10LmRlZmluZXMmJihpLmRlZmluZXM9dC5kZWZpbmVzKSx2b2lkIDAhPT10LnZlcnRleFNoYWRlciYmKGkudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyKSx2b2lkIDAhPT10LmZyYWdtZW50U2hhZGVyJiYoaS5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyKSx2b2lkIDAhPT10LmV4dGVuc2lvbnMpZm9yKGNvbnN0IGUgaW4gdC5leHRlbnNpb25zKWkuZXh0ZW5zaW9uc1tlXT10LmV4dGVuc2lvbnNbZV07aWYodm9pZCAwIT09dC5zaGFkaW5nJiYoaS5mbGF0U2hhZGluZz0xPT09dC5zaGFkaW5nKSx2b2lkIDAhPT10LnNpemUmJihpLnNpemU9dC5zaXplKSx2b2lkIDAhPT10LnNpemVBdHRlbnVhdGlvbiYmKGkuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uKSx2b2lkIDAhPT10Lm1hcCYmKGkubWFwPW4odC5tYXApKSx2b2lkIDAhPT10Lm1hdGNhcCYmKGkubWF0Y2FwPW4odC5tYXRjYXApKSx2b2lkIDAhPT10LmFscGhhTWFwJiYoaS5hbHBoYU1hcD1uKHQuYWxwaGFNYXApKSx2b2lkIDAhPT10LmJ1bXBNYXAmJihpLmJ1bXBNYXA9bih0LmJ1bXBNYXApKSx2b2lkIDAhPT10LmJ1bXBTY2FsZSYmKGkuYnVtcFNjYWxlPXQuYnVtcFNjYWxlKSx2b2lkIDAhPT10Lm5vcm1hbE1hcCYmKGkubm9ybWFsTWFwPW4odC5ub3JtYWxNYXApKSx2b2lkIDAhPT10Lm5vcm1hbE1hcFR5cGUmJihpLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlKSx2b2lkIDAhPT10Lm5vcm1hbFNjYWxlKXtsZXQgZT10Lm5vcm1hbFNjYWxlOyExPT09QXJyYXkuaXNBcnJheShlKSYmKGU9W2UsZV0pLGkubm9ybWFsU2NhbGU9KG5ldyBENXQpLmZyb21BcnJheShlKX1yZXR1cm4gdm9pZCAwIT09dC5kaXNwbGFjZW1lbnRNYXAmJihpLmRpc3BsYWNlbWVudE1hcD1uKHQuZGlzcGxhY2VtZW50TWFwKSksdm9pZCAwIT09dC5kaXNwbGFjZW1lbnRTY2FsZSYmKGkuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSksdm9pZCAwIT09dC5kaXNwbGFjZW1lbnRCaWFzJiYoaS5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyksdm9pZCAwIT09dC5yb3VnaG5lc3NNYXAmJihpLnJvdWdobmVzc01hcD1uKHQucm91Z2huZXNzTWFwKSksdm9pZCAwIT09dC5tZXRhbG5lc3NNYXAmJihpLm1ldGFsbmVzc01hcD1uKHQubWV0YWxuZXNzTWFwKSksdm9pZCAwIT09dC5lbWlzc2l2ZU1hcCYmKGkuZW1pc3NpdmVNYXA9bih0LmVtaXNzaXZlTWFwKSksdm9pZCAwIT09dC5lbWlzc2l2ZUludGVuc2l0eSYmKGkuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSksdm9pZCAwIT09dC5zcGVjdWxhck1hcCYmKGkuc3BlY3VsYXJNYXA9bih0LnNwZWN1bGFyTWFwKSksdm9pZCAwIT09dC5zcGVjdWxhckludGVuc2l0eU1hcCYmKGkuc3BlY3VsYXJJbnRlbnNpdHlNYXA9bih0LnNwZWN1bGFySW50ZW5zaXR5TWFwKSksdm9pZCAwIT09dC5zcGVjdWxhckNvbG9yTWFwJiYoaS5zcGVjdWxhckNvbG9yTWFwPW4odC5zcGVjdWxhckNvbG9yTWFwKSksdm9pZCAwIT09dC5lbnZNYXAmJihpLmVudk1hcD1uKHQuZW52TWFwKSksdm9pZCAwIT09dC5lbnZNYXBJbnRlbnNpdHkmJihpLmVudk1hcEludGVuc2l0eT10LmVudk1hcEludGVuc2l0eSksdm9pZCAwIT09dC5yZWZsZWN0aXZpdHkmJihpLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSksdm9pZCAwIT09dC5yZWZyYWN0aW9uUmF0aW8mJihpLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyksdm9pZCAwIT09dC5saWdodE1hcCYmKGkubGlnaHRNYXA9bih0LmxpZ2h0TWFwKSksdm9pZCAwIT09dC5saWdodE1hcEludGVuc2l0eSYmKGkubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSksdm9pZCAwIT09dC5hb01hcCYmKGkuYW9NYXA9bih0LmFvTWFwKSksdm9pZCAwIT09dC5hb01hcEludGVuc2l0eSYmKGkuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSksdm9pZCAwIT09dC5ncmFkaWVudE1hcCYmKGkuZ3JhZGllbnRNYXA9bih0LmdyYWRpZW50TWFwKSksdm9pZCAwIT09dC5jbGVhcmNvYXRNYXAmJihpLmNsZWFyY29hdE1hcD1uKHQuY2xlYXJjb2F0TWFwKSksdm9pZCAwIT09dC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJihpLmNsZWFyY29hdFJvdWdobmVzc01hcD1uKHQuY2xlYXJjb2F0Um91Z2huZXNzTWFwKSksdm9pZCAwIT09dC5jbGVhcmNvYXROb3JtYWxNYXAmJihpLmNsZWFyY29hdE5vcm1hbE1hcD1uKHQuY2xlYXJjb2F0Tm9ybWFsTWFwKSksdm9pZCAwIT09dC5jbGVhcmNvYXROb3JtYWxTY2FsZSYmKGkuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9KG5ldyBENXQpLmZyb21BcnJheSh0LmNsZWFyY29hdE5vcm1hbFNjYWxlKSksdm9pZCAwIT09dC50cmFuc21pc3Npb25NYXAmJihpLnRyYW5zbWlzc2lvbk1hcD1uKHQudHJhbnNtaXNzaW9uTWFwKSksdm9pZCAwIT09dC50aGlja25lc3NNYXAmJihpLnRoaWNrbmVzc01hcD1uKHQudGhpY2tuZXNzTWFwKSksdm9pZCAwIT09dC5zaGVlbkNvbG9yTWFwJiYoaS5zaGVlbkNvbG9yTWFwPW4odC5zaGVlbkNvbG9yTWFwKSksdm9pZCAwIT09dC5zaGVlblJvdWdobmVzc01hcCYmKGkuc2hlZW5Sb3VnaG5lc3NNYXA9bih0LnNoZWVuUm91Z2huZXNzTWFwKSksaX1zZXRUZXh0dXJlcyh0KXtyZXR1cm4gdGhpcy50ZXh0dXJlcz10LHRoaXN9fWNsYXNzIEtuZXtzdGF0aWMgZGVjb2RlVGV4dCh0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyKXJldHVybihuZXcgVGV4dERlY29kZXIpLmRlY29kZSh0KTtsZXQgZT0iIjtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W25dKTt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWNhdGNoKHQpe3JldHVybiBlfX1zdGF0aWMgZXh0cmFjdFVybEJhc2UodCl7Y29uc3QgZT10Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1lPyIuLyI6dC5zdWJzdHIoMCxlKzEpfXN0YXRpYyByZXNvbHZlVVJMKHQsZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0fHwiIj09PXQ/IiI6KC9eaHR0cHM/OlwvXC8vaS50ZXN0KGUpJiYvXlwvLy50ZXN0KHQpJiYoZT1lLnJlcGxhY2UoLyheaHR0cHM/OlwvXC9bXlwvXSspLiovaSwiJDEiKSksL14oaHR0cHM/Oik/XC9cLy9pLnRlc3QodCl8fC9eZGF0YTouKiwuKiQvaS50ZXN0KHQpfHwvXmJsb2I6LiokL2kudGVzdCh0KT90OmUrdCl9fWNsYXNzIFpuZSBleHRlbmRzIGo0dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbnN0YW5jZUNvdW50PTEvMH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VDb3VudD10Lmluc3RhbmNlQ291bnQsdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTih0aGlzKTtyZXR1cm4gdC5pbnN0YW5jZUNvdW50PXRoaXMuaW5zdGFuY2VDb3VudCx0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITAsdH19Wm5lLnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwO2NsYXNzIEpuZSBleHRlbmRzIFNuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBFbmUoci5tYW5hZ2VyKTtvLnNldFBhdGgoci5wYXRoKSxvLnNldFJlcXVlc3RIZWFkZXIoci5yZXF1ZXN0SGVhZGVyKSxvLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyksby5sb2FkKHQsKGZ1bmN0aW9uKG4pe3RyeXtlKHIucGFyc2UoSlNPTi5wYXJzZShuKSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX1wYXJzZSh0KXtjb25zdCBlPXt9LG49e307ZnVuY3Rpb24gaSh0LGkpe2lmKHZvaWQgMCE9PWVbaV0pcmV0dXJuIGVbaV07Y29uc3Qgcj10LmludGVybGVhdmVkQnVmZmVyc1tpXSxvPShmdW5jdGlvbiBhKHQsZSl7aWYodm9pZCAwIT09bltlXSlyZXR1cm4gbltlXTtjb25zdCBpPW5ldyBVaW50MzJBcnJheSh0LmFycmF5QnVmZmVyc1tlXSkuYnVmZmVyO3JldHVybiBuW2VdPWksaX0pKHQsci5idWZmZXIpLHM9VjV0KHIudHlwZSxvKSxsPW5ldyBiN3QocyxyLnN0cmlkZSk7cmV0dXJuIGwudXVpZD1yLnV1aWQsZVtpXT1sLGx9Y29uc3Qgcj10LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk/bmV3IFpuZTpuZXcgajR0LG89dC5kYXRhLmluZGV4O2lmKHZvaWQgMCE9PW8pe2NvbnN0IHQ9VjV0KG8udHlwZSxvLmFycmF5KTtyLnNldEluZGV4KG5ldyBFNHQodCwxKSl9Y29uc3QgYT10LmRhdGEuYXR0cmlidXRlcztmb3IoY29uc3QgZSBpbiBhKXtjb25zdCBuPWFbZV07bGV0IG87aWYobi5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKXtjb25zdCBlPWkodC5kYXRhLG4uZGF0YSk7bz1uZXcgdzd0KGUsbi5pdGVtU2l6ZSxuLm9mZnNldCxuLm5vcm1hbGl6ZWQpfWVsc2V7Y29uc3QgdD1WNXQobi50eXBlLG4uYXJyYXkpO289bmV3KG4uaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU/UTd0OkU0dCkodCxuLml0ZW1TaXplLG4ubm9ybWFsaXplZCl9dm9pZCAwIT09bi5uYW1lJiYoby5uYW1lPW4ubmFtZSksdm9pZCAwIT09bi51c2FnZSYmby5zZXRVc2FnZShuLnVzYWdlKSx2b2lkIDAhPT1uLnVwZGF0ZVJhbmdlJiYoby51cGRhdGVSYW5nZS5vZmZzZXQ9bi51cGRhdGVSYW5nZS5vZmZzZXQsby51cGRhdGVSYW5nZS5jb3VudD1uLnVwZGF0ZVJhbmdlLmNvdW50KSxyLnNldEF0dHJpYnV0ZShlLG8pfWNvbnN0IHM9dC5kYXRhLm1vcnBoQXR0cmlidXRlcztpZihzKWZvcihjb25zdCBlIGluIHMpe2NvbnN0IG49c1tlXSxvPVtdO2ZvcihsZXQgZT0wLHI9bi5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj1uW2VdO2xldCBhO2lmKHIuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc3QgZT1pKHQuZGF0YSxyLmRhdGEpO2E9bmV3IHc3dChlLHIuaXRlbVNpemUsci5vZmZzZXQsci5ub3JtYWxpemVkKX1lbHNle2NvbnN0IHQ9VjV0KHIudHlwZSxyLmFycmF5KTthPW5ldyBFNHQodCxyLml0ZW1TaXplLHIubm9ybWFsaXplZCl9dm9pZCAwIT09ci5uYW1lJiYoYS5uYW1lPXIubmFtZSksby5wdXNoKGEpfXIubW9ycGhBdHRyaWJ1dGVzW2VdPW99dC5kYXRhLm1vcnBoVGFyZ2V0c1JlbGF0aXZlJiYoci5tb3JwaFRhcmdldHNSZWxhdGl2ZT0hMCk7Y29uc3QgbD10LmRhdGEuZ3JvdXBzfHx0LmRhdGEuZHJhd2NhbGxzfHx0LmRhdGEub2Zmc2V0cztpZih2b2lkIDAhPT1sKWZvcihsZXQgdD0wLGU9bC5sZW5ndGg7dCE9PWU7Kyt0KXtjb25zdCBlPWxbdF07ci5hZGRHcm91cChlLnN0YXJ0LGUuY291bnQsZS5tYXRlcmlhbEluZGV4KX1jb25zdCBjPXQuZGF0YS5ib3VuZGluZ1NwaGVyZTtpZih2b2lkIDAhPT1jKXtjb25zdCB0PW5ldyBhM3Q7dm9pZCAwIT09Yy5jZW50ZXImJnQuZnJvbUFycmF5KGMuY2VudGVyKSxyLmJvdW5kaW5nU3BoZXJlPW5ldyBBM3QodCxjLnJhZGl1cyl9cmV0dXJuIHQubmFtZSYmKHIubmFtZT10Lm5hbWUpLHQudXNlckRhdGEmJihyLnVzZXJEYXRhPXQudXNlckRhdGEpLHJ9fWNvbnN0IFFuZT17VVZNYXBwaW5nOnQydCxDdWJlUmVmbGVjdGlvbk1hcHBpbmc6ZTJ0LEN1YmVSZWZyYWN0aW9uTWFwcGluZzpuMnQsRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc6aTJ0LEVxdWlyZWN0YW5ndWxhclJlZnJhY3Rpb25NYXBwaW5nOnIydCxDdWJlVVZSZWZsZWN0aW9uTWFwcGluZzpvMnQsQ3ViZVVWUmVmcmFjdGlvbk1hcHBpbmc6YTJ0fSx0aWU9e1JlcGVhdFdyYXBwaW5nOnMydCxDbGFtcFRvRWRnZVdyYXBwaW5nOmwydCxNaXJyb3JlZFJlcGVhdFdyYXBwaW5nOmMydH0sZWllPXtOZWFyZXN0RmlsdGVyOnUydCxOZWFyZXN0TWlwbWFwTmVhcmVzdEZpbHRlcjpoMnQsTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcjpkMnQsTGluZWFyRmlsdGVyOnAydCxMaW5lYXJNaXBtYXBOZWFyZXN0RmlsdGVyOmYydCxMaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXI6bTJ0fTtjbGFzcyBuaWUgZXh0ZW5kcyBTbmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCksInVuZGVmaW5lZCI9PXR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogY3JlYXRlSW1hZ2VCaXRtYXAoKSBub3Qgc3VwcG9ydGVkLiIpLCJ1bmRlZmluZWQiPT10eXBlb2YgZmV0Y2gmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGZldGNoKCkgbm90IHN1cHBvcnRlZC4iKSx0aGlzLm9wdGlvbnM9e3ByZW11bHRpcGx5QWxwaGE6Im5vbmUifX1zZXRPcHRpb25zKHQpe3JldHVybiB0aGlzLm9wdGlvbnM9dCx0aGlzfWxvYWQodCxlLG4saSl7dm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMCE9PXRoaXMucGF0aCYmKHQ9dGhpcy5wYXRoK3QpLHQ9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwodCk7Y29uc3Qgcj10aGlzLG89Ym5lLmdldCh0KTtpZih2b2lkIDAhPT1vKXJldHVybiByLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSYmZShvKSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApLG87Y29uc3QgYT17fTthLmNyZWRlbnRpYWxzPSJhbm9ueW1vdXMiPT09dGhpcy5jcm9zc09yaWdpbj8ic2FtZS1vcmlnaW4iOiJpbmNsdWRlIixhLmhlYWRlcnM9dGhpcy5yZXF1ZXN0SGVhZGVyLGZldGNoKHQsYSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmxvYigpfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBjcmVhdGVJbWFnZUJpdG1hcCh0LE9iamVjdC5hc3NpZ24oci5vcHRpb25zLHtjb2xvclNwYWNlQ29udmVyc2lvbjoibm9uZSJ9KSl9KSkudGhlbigoZnVuY3Rpb24obil7Ym5lLmFkZCh0LG4pLGUmJmUobiksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2kmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pKSxyLm1hbmFnZXIuaXRlbVN0YXJ0KHQpfX1sZXQgaWllO25pZS5wcm90b3R5cGUuaXNJbWFnZUJpdG1hcExvYWRlcj0hMDtjb25zdCByaWU9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09aWllJiYoaWllPW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksaWllfSxzZXRDb250ZXh0OmZ1bmN0aW9uKHQpe2lpZT10fX07Y2xhc3Mgb2llIGV4dGVuZHMgU25le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89bmV3IEVuZSh0aGlzLm1hbmFnZXIpO28uc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLG8uc2V0UGF0aCh0aGlzLnBhdGgpLG8uc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLG8uc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxvLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2NvbnN0IHQ9bi5zbGljZSgwKTtyaWUuZ2V0Q29udGV4dCgpLmRlY29kZUF1ZGlvRGF0YSh0LChmdW5jdGlvbih0KXtlKHQpfSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX19Y2xhc3MgYWllIGV4dGVuZHMgWG5le2NvbnN0cnVjdG9yKHQsZSxuPTEpe3N1cGVyKHZvaWQgMCxuKTtjb25zdCBpPShuZXcgJDV0KS5zZXQodCkscj0obmV3ICQ1dCkuc2V0KGUpLG89bmV3IGEzdChpLnIsaS5nLGkuYiksYT1uZXcgYTN0KHIucixyLmcsci5iKSxzPU1hdGguc3FydChNYXRoLlBJKSxsPXMqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShvKS5hZGQoYSkubXVsdGlwbHlTY2FsYXIocyksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShvKS5zdWIoYSkubXVsdGlwbHlTY2FsYXIobCl9fWFpZS5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHRQcm9iZT0hMDtjbGFzcyBzaWUgZXh0ZW5kcyBYbmV7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKHZvaWQgMCxlKTtjb25zdCBuPShuZXcgJDV0KS5zZXQodCk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uc2V0KG4ucixuLmcsbi5iKS5tdWx0aXBseVNjYWxhcigyKk1hdGguc3FydChNYXRoLlBJKSl9fXNpZS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDtjb25zdCBsaWU9bmV3IEQzdCxjaWU9bmV3IEQzdCx1aWU9bmV3IEQzdDtjbGFzcyBoaWV7Y29uc3RydWN0b3IodD0hMCl7dGhpcy5hdXRvU3RhcnQ9dCx0aGlzLnN0YXJ0VGltZT0wLHRoaXMub2xkVGltZT0wLHRoaXMuZWxhcHNlZFRpbWU9MCx0aGlzLnJ1bm5pbmc9ITF9c3RhcnQoKXt0aGlzLnN0YXJ0VGltZT1kaWUoKSx0aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWUsdGhpcy5lbGFwc2VkVGltZT0wLHRoaXMucnVubmluZz0hMH1zdG9wKCl7dGhpcy5nZXRFbGFwc2VkVGltZSgpLHRoaXMucnVubmluZz0hMSx0aGlzLmF1dG9TdGFydD0hMX1nZXRFbGFwc2VkVGltZSgpe3JldHVybiB0aGlzLmdldERlbHRhKCksdGhpcy5lbGFwc2VkVGltZX1nZXREZWx0YSgpe2xldCB0PTA7aWYodGhpcy5hdXRvU3RhcnQmJiF0aGlzLnJ1bm5pbmcpcmV0dXJuIHRoaXMuc3RhcnQoKSwwO2lmKHRoaXMucnVubmluZyl7Y29uc3QgZT1kaWUoKTt0PShlLXRoaXMub2xkVGltZSkvMWUzLHRoaXMub2xkVGltZT1lLHRoaXMuZWxhcHNlZFRpbWUrPXR9cmV0dXJuIHR9fWZ1bmN0aW9uIGRpZSgpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIHBlcmZvcm1hbmNlP0RhdGU6cGVyZm9ybWFuY2UpLm5vdygpfWNvbnN0IHBpZT1uZXcgYTN0LGZpZT1uZXcgbzN0LG1pZT1uZXcgYTN0LGdpZT1uZXcgYTN0O2NsYXNzIF9pZSBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fWNvbnN0IHlpZT1uZXcgYTN0LHZpZT1uZXcgbzN0LGJpZT1uZXcgYTN0LHhpZT1uZXcgYTN0O2NsYXNzIHdpZXtjb25zdHJ1Y3Rvcih0LGU9MjA0OCl7dGhpcy5hbmFseXNlcj10LmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKSx0aGlzLmFuYWx5c2VyLmZmdFNpemU9ZSx0aGlzLmRhdGE9bmV3IFVpbnQ4QXJyYXkodGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCksdC5nZXRPdXRwdXQoKS5jb25uZWN0KHRoaXMuYW5hbHlzZXIpfWdldEZyZXF1ZW5jeURhdGEoKXtyZXR1cm4gdGhpcy5hbmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0YSh0aGlzLmRhdGEpLHRoaXMuZGF0YX1nZXRBdmVyYWdlRnJlcXVlbmN5KCl7bGV0IHQ9MDtjb25zdCBlPXRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQrPWVbbl07cmV0dXJuIHQvZS5sZW5ndGh9fWNsYXNzIFNpZXtjb25zdHJ1Y3Rvcih0LGUsbil7bGV0IGkscixvO3N3aXRjaCh0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1uLGUpe2Nhc2UicXVhdGVybmlvbiI6aT10aGlzLl9zbGVycCxyPXRoaXMuX3NsZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbix0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDYqbiksdGhpcy5fd29ya0luZGV4PTU7YnJlYWs7Y2FzZSJzdHJpbmciOmNhc2UiYm9vbCI6aT10aGlzLl9zZWxlY3Qscj10aGlzLl9zZWxlY3Qsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIsdGhpcy5idWZmZXI9bmV3IEFycmF5KDUqbik7YnJlYWs7ZGVmYXVsdDppPXRoaXMuX2xlcnAscj10aGlzLl9sZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYyx0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDUqbil9dGhpcy5fbWl4QnVmZmVyUmVnaW9uPWksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmU9cix0aGlzLl9zZXRJZGVudGl0eT1vLHRoaXMuX29yaWdJbmRleD0zLHRoaXMuX2FkZEluZGV4PTQsdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCx0aGlzLnVzZUNvdW50PTAsdGhpcy5yZWZlcmVuY2VDb3VudD0wfWFjY3VtdWxhdGUodCxlKXtjb25zdCBuPXRoaXMuYnVmZmVyLGk9dGhpcy52YWx1ZVNpemUscj10KmkraTtsZXQgbz10aGlzLmN1bXVsYXRpdmVXZWlnaHQ7aWYoMD09PW8pe2ZvcihsZXQgdD0wO3QhPT1pOysrdCluW3IrdF09blt0XTtvPWV9ZWxzZXtvKz1lO3RoaXMuX21peEJ1ZmZlclJlZ2lvbihuLHIsMCxlL28saSl9dGhpcy5jdW11bGF0aXZlV2VpZ2h0PW99YWNjdW11bGF0ZUFkZGl0aXZlKHQpe2NvbnN0IGU9dGhpcy5idWZmZXIsbj10aGlzLnZhbHVlU2l6ZSxpPW4qdGhpcy5fYWRkSW5kZXg7MD09PXRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlJiZ0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKGUsaSwwLHQsbiksdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUrPXR9YXBwbHkodCl7Y29uc3QgZT10aGlzLnZhbHVlU2l6ZSxuPXRoaXMuYnVmZmVyLGk9dCplK2Uscj10aGlzLmN1bXVsYXRpdmVXZWlnaHQsbz10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxhPXRoaXMuYmluZGluZztpZih0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHI8MSl7dGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4saSxlKnRoaXMuX29yaWdJbmRleCwxLXIsZSl9bz4wJiZ0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShuLGksdGhpcy5fYWRkSW5kZXgqZSwxLGUpO2ZvcihsZXQgdD1lLHI9ZStlO3QhPT1yOysrdClpZihuW3RdIT09blt0K2VdKXthLnNldFZhbHVlKG4saSk7YnJlYWt9fXNhdmVPcmlnaW5hbFN0YXRlKCl7Y29uc3QgdD10aGlzLmJ1ZmZlcixlPXRoaXMudmFsdWVTaXplLG49ZSp0aGlzLl9vcmlnSW5kZXg7dGhpcy5iaW5kaW5nLmdldFZhbHVlKHQsbik7Zm9yKGxldCBpPWUscj1uO2khPT1yOysraSl0W2ldPXRbbitpJWVdO3RoaXMuX3NldElkZW50aXR5KCksdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MH1yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpe3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlciwzKnRoaXMudmFsdWVTaXplKX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtjb25zdCB0PXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplLGU9dCt0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IG49dDtuPGU7bisrKXRoaXMuYnVmZmVyW25dPTB9X3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uKCl7dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKSx0aGlzLmJ1ZmZlclt0aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSszXT0xfV9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIoKXtjb25zdCB0PXRoaXMuX29yaWdJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplO2ZvcihsZXQgbj0wO248dGhpcy52YWx1ZVNpemU7bisrKXRoaXMuYnVmZmVyW2Urbl09dGhpcy5idWZmZXJbdCtuXX1fc2VsZWN0KHQsZSxuLGkscil7aWYoaT49LjUpZm9yKGxldCBpPTA7aSE9PXI7KytpKXRbZStpXT10W24raV19X3NsZXJwKHQsZSxuLGkpe28zdC5zbGVycEZsYXQodCxlLHQsZSx0LG4saSl9X3NsZXJwQWRkaXRpdmUodCxlLG4saSxyKXtjb25zdCBvPXRoaXMuX3dvcmtJbmRleCpyO28zdC5tdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LG8sdCxlLHQsbiksbzN0LnNsZXJwRmxhdCh0LGUsdCxlLHQsbyxpKX1fbGVycCh0LGUsbixpLHIpe2NvbnN0IG89MS1pO2ZvcihsZXQgYT0wO2EhPT1yOysrYSl7Y29uc3Qgcj1lK2E7dFtyXT10W3JdKm8rdFtuK2FdKml9fV9sZXJwQWRkaXRpdmUodCxlLG4saSxyKXtmb3IobGV0IG89MDtvIT09cjsrK28pe2NvbnN0IHI9ZStvO3Rbcl09dFtyXSt0W24rb10qaX19fWNvbnN0IE1pZT0iXFxbXFxdXFwuOlxcLyIsRWllPW5ldyBSZWdFeHAoIltcXFtcXF1cXC46XFwvXSIsImciKSxUaWU9IlteXFxbXFxdXFwuOlxcL10iLENpZT0iW14iK01pZS5yZXBsYWNlKCJcXC4iLCIiKSsiXSIsQWllPS8oKD86V0MrW1wvOl0pKikvLnNvdXJjZS5yZXBsYWNlKCJXQyIsVGllKSxraWU9LyhXQ09EKyk/Ly5zb3VyY2UucmVwbGFjZSgiV0NPRCIsQ2llKSxQaWU9Lyg/OlwuKFdDKykoPzpcWyguKylcXSk/KT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsVGllKSxMaWU9L1wuKFdDKykoPzpcWyguKylcXSk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLFRpZSksSWllPW5ldyBSZWdFeHAoIl4iK0FpZStraWUrUGllK0xpZSsiJCIpLE5pZT1bIm1hdGVyaWFsIiwibWF0ZXJpYWxzIiwiYm9uZXMiXTtjbGFzcyBSaWV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMucGF0aD1lLHRoaXMucGFyc2VkUGF0aD1ufHxSaWUucGFyc2VUcmFja05hbWUoZSksdGhpcy5ub2RlPVJpZS5maW5kTm9kZSh0LHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fHQsdGhpcy5yb290Tm9kZT10LHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9c3RhdGljIGNyZWF0ZSh0LGUsbil7cmV0dXJuIHQmJnQuaXNBbmltYXRpb25PYmplY3RHcm91cD9uZXcgUmllLkNvbXBvc2l0ZSh0LGUsbik6bmV3IFJpZSh0LGUsbil9c3RhdGljIHNhbml0aXplTm9kZU5hbWUodCl7cmV0dXJuIHQucmVwbGFjZSgvXHMvZywiXyIpLnJlcGxhY2UoRWllLCIiKX1zdGF0aWMgcGFyc2VUcmFja05hbWUodCl7Y29uc3QgZT1JaWUuZXhlYyh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtjb25zdCBuPXtub2RlTmFtZTplWzJdLG9iamVjdE5hbWU6ZVszXSxvYmplY3RJbmRleDplWzRdLHByb3BlcnR5TmFtZTplWzVdLHByb3BlcnR5SW5kZXg6ZVs2XX0saT1uLm5vZGVOYW1lJiZuLm5vZGVOYW1lLmxhc3RJbmRleE9mKCIuIik7aWYodm9pZCAwIT09aSYmLTEhPT1pKXtjb25zdCB0PW4ubm9kZU5hbWUuc3Vic3RyaW5nKGkrMSk7LTEhPT1OaWUuaW5kZXhPZih0KSYmKG4ubm9kZU5hbWU9bi5ub2RlTmFtZS5zdWJzdHJpbmcoMCxpKSxuLm9iamVjdE5hbWU9dCl9aWYobnVsbD09PW4ucHJvcGVydHlOYW1lfHwwPT09bi5wcm9wZXJ0eU5hbWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiUHJvcGVydHlCaW5kaW5nOiBjYW4gbm90IHBhcnNlIHByb3BlcnR5TmFtZSBmcm9tIHRyYWNrTmFtZTogIit0KTtyZXR1cm4gbn1zdGF0aWMgZmluZE5vZGUodCxlKXtpZighZXx8IiI9PT1lfHwiLiI9PT1lfHwtMT09PWV8fGU9PT10Lm5hbWV8fGU9PT10LnV1aWQpcmV0dXJuIHQ7aWYodC5za2VsZXRvbil7Y29uc3Qgbj10LnNrZWxldG9uLmdldEJvbmVCeU5hbWUoZSk7aWYodm9pZCAwIT09bilyZXR1cm4gbn1pZih0LmNoaWxkcmVuKXtjb25zdCBuPWZ1bmN0aW9uKHQpe2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCByPXRbaV07aWYoci5uYW1lPT09ZXx8ci51dWlkPT09ZSlyZXR1cm4gcjtjb25zdCBvPW4oci5jaGlsZHJlbik7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0saT1uKHQuY2hpbGRyZW4pO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X2dldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9zZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fZ2V0VmFsdWVfZGlyZWN0KHQsZSl7dFtlXT10aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV19X2dldFZhbHVlX2FycmF5KHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBpPTAscj1uLmxlbmd0aDtpIT09cjsrK2kpdFtlKytdPW5baV19X2dldFZhbHVlX2FycmF5RWxlbWVudCh0LGUpe3RbZV09dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF19X2dldFZhbHVlX3RvQXJyYXkodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkudG9BcnJheSh0LGUpfV9zZXRWYWx1ZV9kaXJlY3QodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXX1fc2V0VmFsdWVfZGlyZWN0X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2RpcmVjdF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXkodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2khPT1yOysraSluW2ldPXRbZSsrXX1fc2V0VmFsdWVfYXJyYXlfc2V0TmVlZHNVcGRhdGUodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2khPT1yOysraSluW2ldPXRbZSsrXTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aSE9PXI7KytpKW5baV09dFtlKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5RWxlbWVudCh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV19X3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9mcm9tQXJyYXkodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSl9X3NldFZhbHVlX2Zyb21BcnJheV9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSksdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fZ2V0VmFsdWVfdW5ib3VuZCh0LGUpe3RoaXMuYmluZCgpLHRoaXMuZ2V0VmFsdWUodCxlKX1fc2V0VmFsdWVfdW5ib3VuZCh0LGUpe3RoaXMuYmluZCgpLHRoaXMuc2V0VmFsdWUodCxlKX1iaW5kKCl7bGV0IHQ9dGhpcy5ub2RlO2NvbnN0IGU9dGhpcy5wYXJzZWRQYXRoLG49ZS5vYmplY3ROYW1lLGk9ZS5wcm9wZXJ0eU5hbWU7bGV0IHI9ZS5wcm9wZXJ0eUluZGV4O2lmKHR8fCh0PVJpZS5maW5kTm9kZSh0aGlzLnJvb3ROb2RlLGUubm9kZU5hbWUpfHx0aGlzLnJvb3ROb2RlLHRoaXMubm9kZT10KSx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYXZhaWxhYmxlLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5hdmFpbGFibGUsIXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIG5vZGUgZm9yIHRyYWNrOiAiK3RoaXMucGF0aCsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIik7aWYobil7bGV0IGk9ZS5vYmplY3RJbmRleDtzd2l0Y2gobil7Y2FzZSJtYXRlcmlhbHMiOmlmKCF0Lm1hdGVyaWFsKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIG1hdGVyaWFsLiIsdGhpcyk7aWYoIXQubWF0ZXJpYWwubWF0ZXJpYWxzKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsLm1hdGVyaWFscyBhcyBub2RlLm1hdGVyaWFsIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbHMgYXJyYXkuIix0aGlzKTt0PXQubWF0ZXJpYWwubWF0ZXJpYWxzO2JyZWFrO2Nhc2UiYm9uZXMiOmlmKCF0LnNrZWxldG9uKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIGJvbmVzIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHNrZWxldG9uLiIsdGhpcyk7dD10LnNrZWxldG9uLmJvbmVzO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0ubmFtZT09PWkpe2k9ZTticmVha31icmVhaztkZWZhdWx0OmlmKHZvaWQgMD09PXRbbl0pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gb2JqZWN0TmFtZSBvZiBub2RlIHVuZGVmaW5lZC4iLHRoaXMpO3Q9dFtuXX1pZih2b2lkIDAhPT1pKXtpZih2b2lkIDA9PT10W2ldKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIGJpbmQgdG8gb2JqZWN0SW5kZXggb2Ygb2JqZWN0TmFtZSwgYnV0IGlzIHVuZGVmaW5lZC4iLHRoaXMsdCk7dD10W2ldfX1jb25zdCBvPXRbaV07aWYodm9pZCAwPT09byl7cmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIHByb3BlcnR5IGZvciB0cmFjazogIitlLm5vZGVOYW1lKyIuIitpKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iLHQpfWxldCBhPXRoaXMuVmVyc2lvbmluZy5Ob25lO3RoaXMudGFyZ2V0T2JqZWN0PXQsdm9pZCAwIT09dC5uZWVkc1VwZGF0ZT9hPXRoaXMuVmVyc2lvbmluZy5OZWVkc1VwZGF0ZTp2b2lkIDAhPT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUmJihhPXRoaXMuVmVyc2lvbmluZy5NYXRyaXhXb3JsZE5lZWRzVXBkYXRlKTtsZXQgcz10aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtpZih2b2lkIDAhPT1yKXtpZigibW9ycGhUYXJnZXRJbmZsdWVuY2VzIj09PWkpe2lmKCF0Lmdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5LiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgb24gVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy4iLHRoaXMpO3ZvaWQgMCE9PXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W3JdJiYocj10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtyXSl9cz10aGlzLkJpbmRpbmdUeXBlLkFycmF5RWxlbWVudCx0aGlzLnJlc29sdmVkUHJvcGVydHk9byx0aGlzLnByb3BlcnR5SW5kZXg9cn1lbHNlIHZvaWQgMCE9PW8uZnJvbUFycmF5JiZ2b2lkIDAhPT1vLnRvQXJyYXk/KHM9dGhpcy5CaW5kaW5nVHlwZS5IYXNGcm9tVG9BcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9byk6QXJyYXkuaXNBcnJheShvKT8ocz10aGlzLkJpbmRpbmdUeXBlLkVudGlyZUFycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1vKTp0aGlzLnByb3BlcnR5TmFtZT1pO3RoaXMuZ2V0VmFsdWU9dGhpcy5HZXR0ZXJCeUJpbmRpbmdUeXBlW3NdLHRoaXMuc2V0VmFsdWU9dGhpcy5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZ1tzXVthXX11bmJpbmQoKXt0aGlzLm5vZGU9bnVsbCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfX1SaWUuQ29tcG9zaXRlPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBpPW58fFJpZS5wYXJzZVRyYWNrTmFtZShlKTt0aGlzLl90YXJnZXRHcm91cD10LHRoaXMuX2JpbmRpbmdzPXQuc3Vic2NyaWJlXyhlLGkpfWdldFZhbHVlKHQsZSl7dGhpcy5iaW5kKCk7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc1t0aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c19dO3ZvaWQgMCE9PW4mJm4uZ2V0VmFsdWUodCxlKX1zZXRWYWx1ZSh0LGUpe2NvbnN0IG49dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBpPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxyPW4ubGVuZ3RoO2khPT1yOysraSluW2ldLnNldFZhbHVlKHQsZSl9YmluZCgpe2NvbnN0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBlPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxuPXQubGVuZ3RoO2UhPT1uOysrZSl0W2VdLmJpbmQoKX11bmJpbmQoKXtjb25zdCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtlIT09bjsrK2UpdFtlXS51bmJpbmQoKX19LFJpZS5wcm90b3R5cGUuQmluZGluZ1R5cGU9e0RpcmVjdDowLEVudGlyZUFycmF5OjEsQXJyYXlFbGVtZW50OjIsSGFzRnJvbVRvQXJyYXk6M30sUmllLnByb3RvdHlwZS5WZXJzaW9uaW5nPXtOb25lOjAsTmVlZHNVcGRhdGU6MSxNYXRyaXhXb3JsZE5lZWRzVXBkYXRlOjJ9LFJpZS5wcm90b3R5cGUuR2V0dGVyQnlCaW5kaW5nVHlwZT1bUmllLnByb3RvdHlwZS5fZ2V0VmFsdWVfZGlyZWN0LFJpZS5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5LFJpZS5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5RWxlbWVudCxSaWUucHJvdG90eXBlLl9nZXRWYWx1ZV90b0FycmF5XSxSaWUucHJvdG90eXBlLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nPVtbUmllLnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0LFJpZS5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSxSaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW1JpZS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5LFJpZS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlLFJpZS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtSaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnQsUmllLnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE5lZWRzVXBkYXRlLFJpZS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbUmllLnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5LFJpZS5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheV9zZXROZWVkc1VwZGF0ZSxSaWUucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV1dO2NsYXNzIE9pZXtjb25zdHJ1Y3Rvcigpe3RoaXMudXVpZD1nNXQoKSx0aGlzLl9vYmplY3RzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdGhpcy5uQ2FjaGVkT2JqZWN0c189MDtjb25zdCB0PXt9O3RoaXMuX2luZGljZXNCeVVVSUQ9dDtmb3IobGV0IGU9MCxuPWFyZ3VtZW50cy5sZW5ndGg7ZSE9PW47KytlKXRbYXJndW1lbnRzW2VdLnV1aWRdPWU7dGhpcy5fcGF0aHM9W10sdGhpcy5fcGFyc2VkUGF0aHM9W10sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fYmluZGluZ3NJbmRpY2VzQnlQYXRoPXt9O2NvbnN0IGU9dGhpczt0aGlzLnN0YXRzPXtvYmplY3RzOntnZXQgdG90YWwoKXtyZXR1cm4gZS5fb2JqZWN0cy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0aGlzLnRvdGFsLWUubkNhY2hlZE9iamVjdHNffX0sZ2V0IGJpbmRpbmdzUGVyT2JqZWN0KCl7cmV0dXJuIGUuX2JpbmRpbmdzLmxlbmd0aH19fWFkZCgpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0cyxlPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9wYXRocyxpPXRoaXMuX3BhcnNlZFBhdGhzLHI9dGhpcy5fYmluZGluZ3Msbz1yLmxlbmd0aDtsZXQgYSxzPXQubGVuZ3RoLGw9dGhpcy5uQ2FjaGVkT2JqZWN0c187Zm9yKGxldCBjPTAsdT1hcmd1bWVudHMubGVuZ3RoO2MhPT11OysrYyl7Y29uc3QgdT1hcmd1bWVudHNbY10saD11LnV1aWQ7bGV0IGQ9ZVtoXTtpZih2b2lkIDA9PT1kKXtkPXMrKyxlW2hdPWQsdC5wdXNoKHUpO2ZvcihsZXQgdD0wLGU9bzt0IT09ZTsrK3Qpclt0XS5wdXNoKG5ldyBSaWUodSxuW3RdLGlbdF0pKX1lbHNlIGlmKGQ8bCl7YT10W2RdO2NvbnN0IHM9LS1sLGM9dFtzXTtlW2MudXVpZF09ZCx0W2RdPWMsZVtoXT1zLHRbc109dTtmb3IobGV0IHQ9MCxlPW87dCE9PWU7Kyt0KXtjb25zdCBlPXJbdF07bGV0IG89ZVtkXTtlW2RdPWVbc10sdm9pZCAwPT09byYmKG89bmV3IFJpZSh1LG5bdF0saVt0XSkpLGVbc109b319ZWxzZSB0W2RdIT09YSYmY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uT2JqZWN0R3JvdXA6IERpZmZlcmVudCBvYmplY3RzIHdpdGggdGhlIHNhbWUgVVVJRCBkZXRlY3RlZC4gQ2xlYW4gdGhlIGNhY2hlcyBvciByZWNyZWF0ZSB5b3VyIGluZnJhc3RydWN0dXJlIHdoZW4gcmVsb2FkaW5nIHNjZW5lcy4iKX10aGlzLm5DYWNoZWRPYmplY3RzXz1sfXJlbW92ZSgpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0cyxlPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9iaW5kaW5ncyxpPW4ubGVuZ3RoO2xldCByPXRoaXMubkNhY2hlZE9iamVjdHNfO2ZvcihsZXQgbz0wLGE9YXJndW1lbnRzLmxlbmd0aDtvIT09YTsrK28pe2NvbnN0IGE9YXJndW1lbnRzW29dLHM9YS51dWlkLGw9ZVtzXTtpZih2b2lkIDAhPT1sJiZsPj1yKXtjb25zdCBvPXIrKyxjPXRbb107ZVtjLnV1aWRdPWwsdFtsXT1jLGVbc109byx0W29dPWE7Zm9yKGxldCB0PTAsZT1pO3QhPT1lOysrdCl7Y29uc3QgZT1uW3RdLGk9ZVtsXTtlW2xdPWVbb10sZVtvXT1pfX19dGhpcy5uQ2FjaGVkT2JqZWN0c189cn11bmNhY2hlKCl7Y29uc3QgdD10aGlzLl9vYmplY3RzLGU9dGhpcy5faW5kaWNlc0J5VVVJRCxuPXRoaXMuX2JpbmRpbmdzLGk9bi5sZW5ndGg7bGV0IHI9dGhpcy5uQ2FjaGVkT2JqZWN0c18sbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxzPWFyZ3VtZW50cy5sZW5ndGg7YSE9PXM7KythKXtjb25zdCBzPWFyZ3VtZW50c1thXS51dWlkLGw9ZVtzXTtpZih2b2lkIDAhPT1sKWlmKGRlbGV0ZSBlW3NdLGw8cil7Y29uc3QgYT0tLXIscz10W2FdLGM9LS1vLHU9dFtjXTtlW3MudXVpZF09bCx0W2xdPXMsZVt1LnV1aWRdPWEsdFthXT11LHQucG9wKCk7Zm9yKGxldCB0PTAsZT1pO3QhPT1lOysrdCl7Y29uc3QgZT1uW3RdLGk9ZVtjXTtlW2xdPWVbYV0sZVthXT1pLGUucG9wKCl9fWVsc2V7Y29uc3Qgcj0tLW8sYT10W3JdO3I+MCYmKGVbYS51dWlkXT1sKSx0W2xdPWEsdC5wb3AoKTtmb3IobGV0IHQ9MCxlPWk7dCE9PWU7Kyt0KXtjb25zdCBlPW5bdF07ZVtsXT1lW3JdLGUucG9wKCl9fX10aGlzLm5DYWNoZWRPYmplY3RzXz1yfXN1YnNjcmliZV8odCxlKXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aDtsZXQgaT1uW3RdO2NvbnN0IHI9dGhpcy5fYmluZGluZ3M7aWYodm9pZCAwIT09aSlyZXR1cm4gcltpXTtjb25zdCBvPXRoaXMuX3BhdGhzLGE9dGhpcy5fcGFyc2VkUGF0aHMscz10aGlzLl9vYmplY3RzLGw9dGhpcy5uQ2FjaGVkT2JqZWN0c18sYz1uZXcgQXJyYXkocy5sZW5ndGgpO2k9ci5sZW5ndGgsblt0XT1pLG8ucHVzaCh0KSxhLnB1c2goZSksci5wdXNoKGMpO2ZvcihsZXQgbj1sLGk9cy5sZW5ndGg7biE9PWk7KytuKXtjW25dPW5ldyBSaWUoc1tuXSx0LGUpfXJldHVybiBjfXVuc3Vic2NyaWJlXyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxuPWVbdF07aWYodm9pZCAwIT09bil7Y29uc3QgaT10aGlzLl9wYXRocyxyPXRoaXMuX3BhcnNlZFBhdGhzLG89dGhpcy5fYmluZGluZ3MsYT1vLmxlbmd0aC0xLHM9b1thXTtlW3RbYV1dPW4sb1tuXT1zLG8ucG9wKCkscltuXT1yW2FdLHIucG9wKCksaVtuXT1pW2FdLGkucG9wKCl9fX1PaWUucHJvdG90eXBlLmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA9ITA7Y2xhc3Mgemlle2NvbnN0cnVjdG9yKHQsZSxuPW51bGwsaT1lLmJsZW5kTW9kZSl7dGhpcy5fbWl4ZXI9dCx0aGlzLl9jbGlwPWUsdGhpcy5fbG9jYWxSb290PW4sdGhpcy5ibGVuZE1vZGU9aTtjb25zdCByPWUudHJhY2tzLG89ci5sZW5ndGgsYT1uZXcgQXJyYXkobykscz17ZW5kaW5nU3RhcnQ6UTJ0LGVuZGluZ0VuZDpRMnR9O2ZvcihsZXQgdD0wO3QhPT1vOysrdCl7Y29uc3QgZT1yW3RdLmNyZWF0ZUludGVycG9sYW50KG51bGwpO2FbdF09ZSxlLnNldHRpbmdzPXN9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncz1zLHRoaXMuX2ludGVycG9sYW50cz1hLHRoaXMuX3Byb3BlcnR5QmluZGluZ3M9bmV3IEFycmF5KG8pLHRoaXMuX2NhY2hlSW5kZXg9bnVsbCx0aGlzLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMubG9vcD0yMjAxLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xLHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT0xLHRoaXMud2VpZ2h0PTEsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PTEsdGhpcy5yZXBldGl0aW9ucz0xLzAsdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITEsdGhpcy56ZXJvU2xvcGVBdFN0YXJ0PSEwLHRoaXMuemVyb1Nsb3BlQXRFbmQ9ITB9cGxheSgpe3JldHVybiB0aGlzLl9taXhlci5fYWN0aXZhdGVBY3Rpb24odGhpcyksdGhpc31zdG9wKCl7cmV0dXJuIHRoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXMucmVzZXQoKX1yZXNldCgpe3JldHVybiB0aGlzLnBhdXNlZD0hMSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy50aW1lPTAsdGhpcy5fbG9vcENvdW50PS0xLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuc3RvcEZhZGluZygpLnN0b3BXYXJwaW5nKCl9aXNSdW5uaW5nKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMucGF1c2VkJiYwIT09dGhpcy50aW1lU2NhbGUmJm51bGw9PT10aGlzLl9zdGFydFRpbWUmJnRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX1pc1NjaGVkdWxlZCgpe3JldHVybiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9c3RhcnRBdCh0KXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lPXQsdGhpc31zZXRMb29wKHQsZSl7cmV0dXJuIHRoaXMubG9vcD10LHRoaXMucmVwZXRpdGlvbnM9ZSx0aGlzfXNldEVmZmVjdGl2ZVdlaWdodCh0KXtyZXR1cm4gdGhpcy53ZWlnaHQ9dCx0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9dGhpcy5lbmFibGVkP3Q6MCx0aGlzLnN0b3BGYWRpbmcoKX1nZXRFZmZlY3RpdmVXZWlnaHQoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0fWZhZGVJbih0KXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcodCwwLDEpfWZhZGVPdXQodCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMSwwKX1jcm9zc0ZhZGVGcm9tKHQsZSxuKXtpZih0LmZhZGVPdXQoZSksdGhpcy5mYWRlSW4oZSksbil7Y29uc3Qgbj10aGlzLl9jbGlwLmR1cmF0aW9uLGk9dC5fY2xpcC5kdXJhdGlvbixyPW4vaTt0LndhcnAoMSxpL24sZSksdGhpcy53YXJwKHIsMSxlKX1yZXR1cm4gdGhpc31jcm9zc0ZhZGVUbyh0LGUsbil7cmV0dXJuIHQuY3Jvc3NGYWRlRnJvbSh0aGlzLGUsbil9c3RvcEZhZGluZygpe2NvbnN0IHQ9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9c2V0RWZmZWN0aXZlVGltZVNjYWxlKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10LHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnBhdXNlZD8wOnQsdGhpcy5zdG9wV2FycGluZygpfWdldEVmZmVjdGl2ZVRpbWVTY2FsZSgpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGV9c2V0RHVyYXRpb24odCl7cmV0dXJuIHRoaXMudGltZVNjYWxlPXRoaXMuX2NsaXAuZHVyYXRpb24vdCx0aGlzLnN0b3BXYXJwaW5nKCl9c3luY1dpdGgodCl7cmV0dXJuIHRoaXMudGltZT10LnRpbWUsdGhpcy50aW1lU2NhbGU9dC50aW1lU2NhbGUsdGhpcy5zdG9wV2FycGluZygpfWhhbHQodCl7cmV0dXJuIHRoaXMud2FycCh0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGUsMCx0KX13YXJwKHQsZSxuKXtjb25zdCBpPXRoaXMuX21peGVyLHI9aS50aW1lLG89dGhpcy50aW1lU2NhbGU7bGV0IGE9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbD09PWEmJihhPWkuX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1hKTtjb25zdCBzPWEucGFyYW1ldGVyUG9zaXRpb25zLGw9YS5zYW1wbGVWYWx1ZXM7cmV0dXJuIHNbMF09cixzWzFdPXIrbixsWzBdPXQvbyxsWzFdPWUvbyx0aGlzfXN0b3BXYXJwaW5nKCl7Y29uc3QgdD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtyZXR1cm4gbnVsbCE9PXQmJih0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KSksdGhpc31nZXRNaXhlcigpe3JldHVybiB0aGlzLl9taXhlcn1nZXRDbGlwKCl7cmV0dXJuIHRoaXMuX2NsaXB9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9sb2NhbFJvb3R8fHRoaXMuX21peGVyLl9yb290fV91cGRhdGUodCxlLG4saSl7aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4gdm9pZCB0aGlzLl91cGRhdGVXZWlnaHQodCk7Y29uc3Qgcj10aGlzLl9zdGFydFRpbWU7aWYobnVsbCE9PXIpe2NvbnN0IGk9KHQtcikqbjtpZihpPDB8fDA9PT1uKXJldHVybjt0aGlzLl9zdGFydFRpbWU9bnVsbCxlPW4qaX1lKj10aGlzLl91cGRhdGVUaW1lU2NhbGUodCk7Y29uc3Qgbz10aGlzLl91cGRhdGVUaW1lKGUpLGE9dGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2lmKGE+MCl7Y29uc3QgdD10aGlzLl9pbnRlcnBvbGFudHMsZT10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzO3N3aXRjaCh0aGlzLmJsZW5kTW9kZSl7Y2FzZSBpNXQ6Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuIT09aTsrK24pdFtuXS5ldmFsdWF0ZShvKSxlW25dLmFjY3VtdWxhdGVBZGRpdGl2ZShhKTticmVhaztjYXNlIG41dDpkZWZhdWx0OmZvcihsZXQgbj0wLHI9dC5sZW5ndGg7biE9PXI7KytuKXRbbl0uZXZhbHVhdGUobyksZVtuXS5hY2N1bXVsYXRlKGksYSl9fX1fdXBkYXRlV2VpZ2h0KHQpe2xldCBlPTA7aWYodGhpcy5lbmFibGVkKXtlPXRoaXMud2VpZ2h0O2NvbnN0IG49dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7aWYobnVsbCE9PW4pe2NvbnN0IGk9bi5ldmFsdWF0ZSh0KVswXTtlKj1pLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BGYWRpbmcoKSwwPT09aSYmKHRoaXMuZW5hYmxlZD0hMSkpfX1yZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PWUsZX1fdXBkYXRlVGltZVNjYWxlKHQpe2xldCBlPTA7aWYoIXRoaXMucGF1c2VkKXtlPXRoaXMudGltZVNjYWxlO2NvbnN0IG49dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7aWYobnVsbCE9PW4pe2UqPW4uZXZhbHVhdGUodClbMF0sdD5uLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcFdhcnBpbmcoKSwwPT09ZT90aGlzLnBhdXNlZD0hMDp0aGlzLnRpbWVTY2FsZT1lKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT1lLGV9X3VwZGF0ZVRpbWUodCl7Y29uc3QgZT10aGlzLl9jbGlwLmR1cmF0aW9uLG49dGhpcy5sb29wO2xldCBpPXRoaXMudGltZSt0LHI9dGhpcy5fbG9vcENvdW50O2NvbnN0IG89MjIwMj09PW47aWYoMD09PXQpcmV0dXJuLTE9PT1yP2k6byYmMT09KDEmcik/ZS1pOmk7aWYoMjIwMD09PW4pey0xPT09ciYmKHRoaXMuX2xvb3BDb3VudD0wLHRoaXMuX3NldEVuZGluZ3MoITAsITAsITEpKTt0OntpZihpPj1lKWk9ZTtlbHNle2lmKCEoaTwwKSl7dGhpcy50aW1lPWk7YnJlYWsgdH1pPTB9dGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITEsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PDA/LTE6MX0pfX1lbHNle2lmKC0xPT09ciYmKHQ+PTA/KHI9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLDA9PT10aGlzLnJlcGV0aXRpb25zLG8pKTp0aGlzLl9zZXRFbmRpbmdzKDA9PT10aGlzLnJlcGV0aXRpb25zLCEwLG8pKSxpPj1lfHxpPDApe2NvbnN0IG49TWF0aC5mbG9vcihpL2UpO2ktPWUqbixyKz1NYXRoLmFicyhuKTtjb25zdCBhPXRoaXMucmVwZXRpdGlvbnMtcjtpZihhPD0wKXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLGk9dD4wP2U6MCx0aGlzLnRpbWU9aSx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOnQ+MD8xOi0xfSk7ZWxzZXtpZigxPT09YSl7Y29uc3QgZT10PDA7dGhpcy5fc2V0RW5kaW5ncyhlLCFlLG8pfWVsc2UgdGhpcy5fc2V0RW5kaW5ncyghMSwhMSxvKTt0aGlzLl9sb29wQ291bnQ9cix0aGlzLnRpbWU9aSx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJsb29wIixhY3Rpb246dGhpcyxsb29wRGVsdGE6bn0pfX1lbHNlIHRoaXMudGltZT1pO2lmKG8mJjE9PSgxJnIpKXJldHVybiBlLWl9cmV0dXJuIGl9X3NldEVuZGluZ3ModCxlLG4pe2NvbnN0IGk9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncztuPyhpLmVuZGluZ1N0YXJ0PXQ1dCxpLmVuZGluZ0VuZD10NXQpOihpLmVuZGluZ1N0YXJ0PXQ/dGhpcy56ZXJvU2xvcGVBdFN0YXJ0P3Q1dDpRMnQ6ZTV0LGkuZW5kaW5nRW5kPWU/dGhpcy56ZXJvU2xvcGVBdEVuZD90NXQ6UTJ0OmU1dCl9X3NjaGVkdWxlRmFkaW5nKHQsZSxuKXtjb25zdCBpPXRoaXMuX21peGVyLHI9aS50aW1lO2xldCBvPXRoaXMuX3dlaWdodEludGVycG9sYW50O251bGw9PT1vJiYobz1pLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9byk7Y29uc3QgYT1vLnBhcmFtZXRlclBvc2l0aW9ucyxzPW8uc2FtcGxlVmFsdWVzO3JldHVybiBhWzBdPXIsc1swXT1lLGFbMV09cit0LHNbMV09bix0aGlzfX1jbGFzcyBEaWUgZXh0ZW5kcyBoNXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9yb290PXQsdGhpcy5faW5pdE1lbW9yeU1hbmFnZXIoKSx0aGlzLl9hY2N1SW5kZXg9MCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xfV9iaW5kQWN0aW9uKHQsZSl7Y29uc3Qgbj10Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QsaT10Ll9jbGlwLnRyYWNrcyxyPWkubGVuZ3RoLG89dC5fcHJvcGVydHlCaW5kaW5ncyxhPXQuX2ludGVycG9sYW50cyxzPW4udXVpZCxsPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZTtsZXQgYz1sW3NdO3ZvaWQgMD09PWMmJihjPXt9LGxbc109Yyk7Zm9yKGxldCB0PTA7dCE9PXI7Kyt0KXtjb25zdCByPWlbdF0sbD1yLm5hbWU7bGV0IHU9Y1tsXTtpZih2b2lkIDAhPT11KSsrdS5yZWZlcmVuY2VDb3VudCxvW3RdPXU7ZWxzZXtpZih1PW9bdF0sdm9pZCAwIT09dSl7bnVsbD09PXUuX2NhY2hlSW5kZXgmJigrK3UucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKHUscyxsKSk7Y29udGludWV9dT1uZXcgU2llKFJpZS5jcmVhdGUobixsLGUmJmUuX3Byb3BlcnR5QmluZGluZ3NbdF0uYmluZGluZy5wYXJzZWRQYXRoKSxyLlZhbHVlVHlwZU5hbWUsci5nZXRWYWx1ZVNpemUoKSksKyt1LnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyh1LHMsbCksb1t0XT11fWFbdF0ucmVzdWx0QnVmZmVyPXUuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3QgZT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLG49dC5fY2xpcC51dWlkLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcFtuXTt0aGlzLl9iaW5kQWN0aW9uKHQsaSYmaS5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsbixlKX1jb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT1uLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhuKSxuLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtjb25zdCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtjb25zdCBlPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1lJiZlPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LGUsbil7Y29uc3QgaT10aGlzLl9hY3Rpb25zLHI9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgbz1yW2VdO2lmKHZvaWQgMD09PW8pbz17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxyW2VdPW87ZWxzZXtjb25zdCBlPW8ua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9aS5sZW5ndGgsaS5wdXNoKHQpLG8uYWN0aW9uQnlSb290W25dPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPWVbZS5sZW5ndGgtMV0saT10Ll9jYWNoZUluZGV4O24uX2NhY2hlSW5kZXg9aSxlW2ldPW4sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7Y29uc3Qgcj10Ll9jbGlwLnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwLGE9b1tyXSxzPWEua25vd25BY3Rpb25zLGw9c1tzLmxlbmd0aC0xXSxjPXQuX2J5Q2xpcENhY2hlSW5kZXg7bC5fYnlDbGlwQ2FjaGVJbmRleD1jLHNbY109bCxzLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbDtkZWxldGUgYS5hY3Rpb25CeVJvb3RbKHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZF0sMD09PXMubGVuZ3RoJiZkZWxldGUgb1tyXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX1fbGVuZEFjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV90YWtlQmFja0FjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG4pe2NvbnN0IGk9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLHI9dGhpcy5fYmluZGluZ3M7bGV0IG89aVtlXTt2b2lkIDA9PT1vJiYobz17fSxpW2VdPW8pLG9bbl09dCx0Ll9jYWNoZUluZGV4PXIubGVuZ3RoLHIucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsaT1uLnJvb3ROb2RlLnV1aWQscj1uLnBhdGgsbz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsYT1vW2ldLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSBhW3JdLDA9PT1PYmplY3Qua2V5cyhhKS5sZW5ndGgmJmRlbGV0ZSBvW2ldfV9sZW5kQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X3Rha2VCYWNrQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBsbmUobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxuPXQuX19jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxyPWVbaV07dC5fX2NhY2hlSW5kZXg9aSxlW2ldPXQsci5fX2NhY2hlSW5kZXg9bixlW25dPXJ9Y2xpcEFjdGlvbih0LGUsbil7Y29uc3QgaT1lfHx0aGlzLl9yb290LHI9aS51dWlkO2xldCBvPSJzdHJpbmciPT10eXBlb2YgdD95bmUuZmluZEJ5TmFtZShpLHQpOnQ7Y29uc3QgYT1udWxsIT09bz9vLnV1aWQ6dCxzPXRoaXMuX2FjdGlvbnNCeUNsaXBbYV07bGV0IGw9bnVsbDtpZih2b2lkIDA9PT1uJiYobj1udWxsIT09bz9vLmJsZW5kTW9kZTpuNXQpLHZvaWQgMCE9PXMpe2NvbnN0IHQ9cy5hY3Rpb25CeVJvb3Rbcl07aWYodm9pZCAwIT09dCYmdC5ibGVuZE1vZGU9PT1uKXJldHVybiB0O2w9cy5rbm93bkFjdGlvbnNbMF0sbnVsbD09PW8mJihvPWwuX2NsaXApfWlmKG51bGw9PT1vKXJldHVybiBudWxsO2NvbnN0IGM9bmV3IHppZSh0aGlzLG8sZSxuKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihjLGwpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKGMsYSxyKSxjfWV4aXN0aW5nQWN0aW9uKHQsZSl7Y29uc3Qgbj1lfHx0aGlzLl9yb290LGk9bi51dWlkLHI9InN0cmluZyI9PXR5cGVvZiB0P3luZS5maW5kQnlOYW1lKG4sdCk6dCxvPXRoaXMuX2FjdGlvbnNCeUNsaXBbcj9yLnV1aWQ6dF07cmV0dXJuIHZvaWQgMCE9PW8mJm8uYWN0aW9uQnlSb290W2ldfHxudWxsfXN0b3BBbGxBY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FjdGlvbnM7Zm9yKGxldCBlPXRoaXMuX25BY3RpdmVBY3Rpb25zLTE7ZT49MDstLWUpdFtlXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXRoaXMuX25BY3RpdmVBY3Rpb25zLGk9dGhpcy50aW1lKz10Kj10aGlzLnRpbWVTY2FsZSxyPU1hdGguc2lnbih0KSxvPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IGE9MDthIT09bjsrK2Epe2VbYV0uX3VwZGF0ZShpLHQscixvKX1jb25zdCBhPXRoaXMuX2JpbmRpbmdzLHM9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgdD0wO3QhPT1zOysrdClhW3RdLmFwcGx5KG8pO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9hY3Rpb25zLmxlbmd0aDt0KyspdGhpcy5fYWN0aW9uc1t0XS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10LnV1aWQsaT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9aVtuXTtpZih2b2lkIDAhPT1yKXtjb25zdCB0PXIua25vd25BY3Rpb25zO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXtjb25zdCBpPXRbbl07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihpKTtjb25zdCByPWkuX2NhY2hlSW5kZXgsbz1lW2UubGVuZ3RoLTFdO2kuX2NhY2hlSW5kZXg9bnVsbCxpLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsby5fY2FjaGVJbmRleD1yLGVbcl09byxlLnBvcCgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24oaSl9ZGVsZXRlIGlbbl19fXVuY2FjaGVSb290KHQpe2NvbnN0IGU9dC51dWlkLG49dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBpPW5bdF0uYWN0aW9uQnlSb290W2VdO3ZvaWQgMCE9PWkmJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGkpLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKGkpKX1jb25zdCBpPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVtlXTtpZih2b2lkIDAhPT1pKWZvcihjb25zdCB0IGluIGkpe2NvbnN0IGU9aVt0XTtlLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGUpfX11bmNhY2hlQWN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmV4aXN0aW5nQWN0aW9uKHQsZSk7bnVsbCE9PW4mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG4pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG4pKX19RGllLnByb3RvdHlwZS5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlcj1uZXcgRmxvYXQzMkFycmF5KDEpO2NsYXNzIEJpZXtjb25zdHJ1Y3Rvcih0KXsic3RyaW5nIj09dHlwZW9mIHQmJihjb25zb2xlLndhcm4oIlRIUkVFLlVuaWZvcm06IFR5cGUgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciBuZWVkZWQuIiksdD1hcmd1bWVudHNbMV0pLHRoaXMudmFsdWU9dH1jbG9uZSgpe3JldHVybiBuZXcgQmllKHZvaWQgMD09PXRoaXMudmFsdWUuY2xvbmU/dGhpcy52YWx1ZTp0aGlzLnZhbHVlLmNsb25lKCkpfX1jbGFzcyBIaWUgZXh0ZW5kcyBiN3R7Y29uc3RydWN0b3IodCxlLG49MSl7c3VwZXIodCxlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9bn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc31jbG9uZSh0KXtjb25zdCBlPXN1cGVyLmNsb25lKHQpO3JldHVybiBlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITAsZS5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSxlfX1IaWUucHJvdG90eXBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITA7Y2xhc3MgRmlle2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5idWZmZXI9dCx0aGlzLnR5cGU9ZSx0aGlzLml0ZW1TaXplPW4sdGhpcy5lbGVtZW50U2l6ZT1pLHRoaXMuY291bnQ9cix0aGlzLnZlcnNpb249MH1zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpc31zZXRUeXBlKHQsZSl7cmV0dXJuIHRoaXMudHlwZT10LHRoaXMuZWxlbWVudFNpemU9ZSx0aGlzfXNldEl0ZW1TaXplKHQpe3JldHVybiB0aGlzLml0ZW1TaXplPXQsdGhpc31zZXRDb3VudCh0KXtyZXR1cm4gdGhpcy5jb3VudD10LHRoaXN9fUZpZS5wcm90b3R5cGUuaXNHTEJ1ZmZlckF0dHJpYnV0ZT0hMDtmdW5jdGlvbiBWaWUodCxlKXtyZXR1cm4gdC5kaXN0YW5jZS1lLmRpc3RhbmNlfWZ1bmN0aW9uIFVpZSh0LGUsbixpKXtpZih0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmdC5yYXljYXN0KGUsbiksITA9PT1pKXtjb25zdCBpPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKVVpZShpW3RdLGUsbiwhMCl9fWNsYXNzIGppZXtjb25zdHJ1Y3Rvcih0PTEsZT0wLG49MCl7cmV0dXJuIHRoaXMucmFkaXVzPXQsdGhpcy5waGk9ZSx0aGlzLnRoZXRhPW4sdGhpc31zZXQodCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMucGhpPWUsdGhpcy50aGV0YT1uLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5waGk9dC5waGksdGhpcy50aGV0YT10LnRoZXRhLHRoaXN9bWFrZVNhZmUoKXtjb25zdCB0PTFlLTY7cmV0dXJuIHRoaXMucGhpPU1hdGgubWF4KHQsTWF0aC5taW4oTWF0aC5QSS10LHRoaXMucGhpKSksdGhpc31zZXRGcm9tVmVjdG9yMyh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQueCx0LnksdC56KX1zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQsZSxuKXtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KHQqdCtlKmUrbipuKSwwPT09dGhpcy5yYWRpdXM/KHRoaXMudGhldGE9MCx0aGlzLnBoaT0wKToodGhpcy50aGV0YT1NYXRoLmF0YW4yKHQsbiksdGhpcy5waGk9TWF0aC5hY29zKF81dChlL3RoaXMucmFkaXVzLC0xLDEpKSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y29uc3QgR2llPW5ldyBENXQ7Y2xhc3MgV2lle2NvbnN0cnVjdG9yKHQ9bmV3IEQ1dCgxLzAsMS8wKSxlPW5ldyBENXQoLTEvMCwtMS8wKSl7dGhpcy5taW49dCx0aGlzLm1heD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2NvbnN0IG49R2llLmNvcHkoZSkubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihuKSx0aGlzLm1heC5jb3B5KHQpLmFkZChuKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwKTp0LmFkZFZlY3RvcnModGhpcy5taW4sdGhpcy5tYXgpLm11bHRpcGx5U2NhbGFyKC41KX1nZXRTaXplKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueX1nZXRQYXJhbWV0ZXIodCxlKXtyZXR1cm4gZS5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55KX1jbGFtcFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBHaWUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19V2llLnByb3RvdHlwZS5pc0JveDI9ITA7Y29uc3QgcWllPW5ldyBhM3QsWWllPW5ldyBhM3Q7Y2xhc3MgWGlle2NvbnN0cnVjdG9yKHQ9bmV3IGEzdCxlPW5ldyBhM3Qpe3RoaXMuc3RhcnQ9dCx0aGlzLmVuZD1lfXNldCh0LGUpe3JldHVybiB0aGlzLnN0YXJ0LmNvcHkodCksdGhpcy5lbmQuY29weShlKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0LnN0YXJ0KSx0aGlzLmVuZC5jb3B5KHQuZW5kKSx0aGlzfWdldENlbnRlcih0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuc3RhcnQsdGhpcy5lbmQpLm11bHRpcGx5U2NhbGFyKC41KX1kZWx0YSh0KXtyZXR1cm4gdC5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpfWRpc3RhbmNlU3EoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmVuZCl9ZGlzdGFuY2UoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvKHRoaXMuZW5kKX1hdCh0LGUpe3JldHVybiB0aGlzLmRlbHRhKGUpLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnN0YXJ0KX1jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSl7cWllLnN1YlZlY3RvcnModCx0aGlzLnN0YXJ0KSxZaWUuc3ViVmVjdG9ycyh0aGlzLmVuZCx0aGlzLnN0YXJ0KTtjb25zdCBuPVlpZS5kb3QoWWllKTtsZXQgaT1ZaWUuZG90KHFpZSkvbjtyZXR1cm4gZSYmKGk9XzV0KGksMCwxKSksaX1jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSxuKXtjb25zdCBpPXRoaXMuY2xvc2VzdFBvaW50VG9Qb2ludFBhcmFtZXRlcih0LGUpO3JldHVybiB0aGlzLmRlbHRhKG4pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0aGlzLnN0YXJ0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuc3RhcnQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuZW5kLmFwcGx5TWF0cml4NCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5zdGFydC5lcXVhbHModGhpcy5zdGFydCkmJnQuZW5kLmVxdWFscyh0aGlzLmVuZCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNvbnN0ICRpZT1uZXcgYTN0O2NvbnN0IEtpZT1uZXcgYTN0LFppZT1uZXcgRDN0LEppZT1uZXcgRDN0O2NsYXNzIFFpZSBleHRlbmRzIGZ0ZXtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPXRyZSh0KSxuPW5ldyBqNHQsaT1bXSxyPVtdLG89bmV3ICQ1dCgwLDAsMSksYT1uZXcgJDV0KDAsMSwwKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO24ucGFyZW50JiZuLnBhcmVudC5pc0JvbmUmJihpLnB1c2goMCwwLDApLGkucHVzaCgwLDAsMCksci5wdXNoKG8ucixvLmcsby5iKSxyLnB1c2goYS5yLGEuZyxhLmIpKX1uLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBSNHQoaSwzKSksbi5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgUjR0KHIsMykpO3N1cGVyKG4sbmV3IG90ZSh7dmVydGV4Q29sb3JzOiEwLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLHRvbmVNYXBwZWQ6ITEsdHJhbnNwYXJlbnQ6ITB9KSksdGhpcy50eXBlPSJTa2VsZXRvbkhlbHBlciIsdGhpcy5pc1NrZWxldG9uSGVscGVyPSEwLHRoaXMucm9vdD10LHRoaXMuYm9uZXM9ZSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMX11cGRhdGVNYXRyaXhXb3JsZCh0KXtjb25zdCBlPXRoaXMuYm9uZXMsbj10aGlzLmdlb21ldHJ5LGk9bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7SmllLmNvcHkodGhpcy5yb290Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtmb3IobGV0IHQ9MCxuPTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IHI9ZVt0XTtyLnBhcmVudCYmci5wYXJlbnQuaXNCb25lJiYoWmllLm11bHRpcGx5TWF0cmljZXMoSmllLHIubWF0cml4V29ybGQpLEtpZS5zZXRGcm9tTWF0cml4UG9zaXRpb24oWmllKSxpLnNldFhZWihuLEtpZS54LEtpZS55LEtpZS56KSxaaWUubXVsdGlwbHlNYXRyaWNlcyhKaWUsci5wYXJlbnQubWF0cml4V29ybGQpLEtpZS5zZXRGcm9tTWF0cml4UG9zaXRpb24oWmllKSxpLnNldFhZWihuKzEsS2llLngsS2llLnksS2llLnopLG4rPTIpfW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwLHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfX1mdW5jdGlvbiB0cmUodCl7Y29uc3QgZT1bXTt0JiZ0LmlzQm9uZSYmZS5wdXNoKHQpO2ZvcihsZXQgbj0wO248dC5jaGlsZHJlbi5sZW5ndGg7bisrKWUucHVzaC5hcHBseShlLHRyZSh0LmNoaWxkcmVuW25dKSk7cmV0dXJuIGV9Y29uc3QgZXJlPW5ldyBhM3QsbnJlPW5ldyAkNXQsaXJlPW5ldyAkNXQ7Y2xhc3MgcnJlIGV4dGVuZHMgZnRle2NvbnN0cnVjdG9yKHQ9MTAsZT0xMCxuPTQ0NzM5MjQsaT04OTQ3ODQ4KXtuPW5ldyAkNXQobiksaT1uZXcgJDV0KGkpO2NvbnN0IHI9ZS8yLG89dC9lLGE9dC8yLHM9W10sbD1bXTtmb3IobGV0IHQ9MCxjPTAsdT0tYTt0PD1lO3QrKyx1Kz1vKXtzLnB1c2goLWEsMCx1LGEsMCx1KSxzLnB1c2godSwwLC1hLHUsMCxhKTtjb25zdCBlPXQ9PT1yP246aTtlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zfWNvbnN0IGM9bmV3IGo0dDtjLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBSNHQocywzKSksYy5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgUjR0KGwsMykpO3N1cGVyKGMsbmV3IG90ZSh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJHcmlkSGVscGVyIn19Y29uc3Qgb3JlPW5ldyBhM3QsYXJlPW5ldyBhM3Qsc3JlPW5ldyBhM3Q7Y29uc3QgbHJlPW5ldyBhM3QsY3JlPW5ldyBmNnQ7ZnVuY3Rpb24gdXJlKHQsZSxuLGkscixvLGEpe2xyZS5zZXQocixvLGEpLnVucHJvamVjdChpKTtjb25zdCBzPWVbdF07aWYodm9pZCAwIT09cyl7Y29uc3QgdD1uLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtmb3IobGV0IGU9MCxuPXMubGVuZ3RoO2U8bjtlKyspdC5zZXRYWVooc1tlXSxscmUueCxscmUueSxscmUueil9fWNvbnN0IGhyZT1uZXcgYzN0O2NsYXNzIGRyZSBleHRlbmRzIGZ0ZXtjb25zdHJ1Y3Rvcih0LGU9MTY3NzY5NjApe2NvbnN0IG49bmV3IFVpbnQxNkFycmF5KFswLDEsMSwyLDIsMywzLDAsNCw1LDUsNiw2LDcsNyw0LDAsNCwxLDUsMiw2LDMsN10pLGk9bmV3IEZsb2F0MzJBcnJheSgyNCkscj1uZXcgajR0O3Iuc2V0SW5kZXgobmV3IEU0dChuLDEpKSxyLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBFNHQoaSwzKSksc3VwZXIocixuZXcgb3RlKHtjb2xvcjplLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5vYmplY3Q9dCx0aGlzLnR5cGU9IkJveEhlbHBlciIsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMudXBkYXRlKCl9dXBkYXRlKHQpe2lmKHZvaWQgMCE9PXQmJmNvbnNvbGUud2FybigiVEhSRUUuQm94SGVscGVyOiAudXBkYXRlKCkgaGFzIG5vIGxvbmdlciBhcmd1bWVudHMuIiksdm9pZCAwIT09dGhpcy5vYmplY3QmJmhyZS5zZXRGcm9tT2JqZWN0KHRoaXMub2JqZWN0KSxocmUuaXNFbXB0eSgpKXJldHVybjtjb25zdCBlPWhyZS5taW4sbj1ocmUubWF4LGk9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLHI9aS5hcnJheTtyWzBdPW4ueCxyWzFdPW4ueSxyWzJdPW4ueixyWzNdPWUueCxyWzRdPW4ueSxyWzVdPW4ueixyWzZdPWUueCxyWzddPWUueSxyWzhdPW4ueixyWzldPW4ueCxyWzEwXT1lLnksclsxMV09bi56LHJbMTJdPW4ueCxyWzEzXT1uLnksclsxNF09ZS56LHJbMTVdPWUueCxyWzE2XT1uLnksclsxN109ZS56LHJbMThdPWUueCxyWzE5XT1lLnksclsyMF09ZS56LHJbMjFdPW4ueCxyWzIyXT1lLnksclsyM109ZS56LGkubmVlZHNVcGRhdGU9ITAsdGhpcy5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKX1zZXRGcm9tT2JqZWN0KHQpe3JldHVybiB0aGlzLm9iamVjdD10LHRoaXMudXBkYXRlKCksdGhpc31jb3B5KHQpe3JldHVybiBmdGUucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMub2JqZWN0PXQub2JqZWN0LHRoaXN9fWNvbnN0IHByZT1uZXcgYTN0O2xldCBmcmUsbXJlO2NsYXNzIGdyZSBleHRlbmRzIGZ0ZXtjb25zdHJ1Y3Rvcih0PTEpe2NvbnN0IGU9WzAsMCwwLHQsMCwwLDAsMCwwLDAsdCwwLDAsMCwwLDAsMCx0XSxuPW5ldyBqNHQ7bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGUsMykpLG4uc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IFI0dChbMSwwLDAsMSwuNiwwLDAsMSwwLC42LDEsMCwwLDAsMSwwLC42LDFdLDMpKTtzdXBlcihuLG5ldyBvdGUoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSkpLHRoaXMudHlwZT0iQXhlc0hlbHBlciJ9c2V0Q29sb3JzKHQsZSxuKXtjb25zdCBpPW5ldyAkNXQscj10aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuYXJyYXk7cmV0dXJuIGkuc2V0KHQpLGkudG9BcnJheShyLDApLGkudG9BcnJheShyLDMpLGkuc2V0KGUpLGkudG9BcnJheShyLDYpLGkudG9BcnJheShyLDkpLGkuc2V0KG4pLGkudG9BcnJheShyLDEyKSxpLnRvQXJyYXkociwxNSksdGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLm5lZWRzVXBkYXRlPSEwLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpfX1jb25zdCBfcmU9bmV3IEZsb2F0MzJBcnJheSgxKSx5cmU9bmV3IEludDMyQXJyYXkoX3JlLmJ1ZmZlcik7RHRlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLmxvZygiVEhSRUUuQ3VydmUuY3JlYXRlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCIpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRHRlLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5nZXRQb2ludD1lLHR9LHJlZS5wcm90b3R5cGUuZnJvbVBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXRoOiAuZnJvbVBvaW50cygpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21Qb2ludHMoKS4iKSx0aGlzLnNldEZyb21Qb2ludHModCl9LHJyZS5wcm90b3R5cGUuc2V0Q29sb3JzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuR3JpZEhlbHBlcjogc2V0Q29sb3JzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgcGFzcyB0aGVtIGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkLiIpfSxRaWUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNrZWxldG9uSGVscGVyOiB1cGRhdGUoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgY2FsbGVkLiIpfSxTbmUucHJvdG90eXBlLmV4dHJhY3RVcmxCYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxvYWRlcjogLmV4dHJhY3RVcmxCYXNlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkxvYWRlclV0aWxzLmV4dHJhY3RVcmxCYXNlKCkgaW5zdGVhZC4iKSxLbmUuZXh0cmFjdFVybEJhc2UodCl9LFNuZS5IYW5kbGVycz17YWRkOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTG9hZGVyOiBIYW5kbGVycy5hZGQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgTG9hZGluZ01hbmFnZXIuYWRkSGFuZGxlcigpIGluc3RlYWQuIil9LGdldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuZ2V0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmdldEhhbmRsZXIoKSBpbnN0ZWFkLiIpfX0sV2llLnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKHQpfSxXaWUucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxXaWUucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LFdpZS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4iKSx0aGlzLmdldFNpemUodCl9LGMzdC5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sYzN0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX0sYzN0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkJveD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KHQpfSxjM3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uU3BoZXJlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LGMzdC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4iKSx0aGlzLmdldFNpemUodCl9LEEzdC5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX0sVDZ0LnByb3RvdHlwZS5zZXRGcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkZydXN0dW06IC5zZXRGcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoKS4iKSx0aGlzLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KHQpfSxYaWUucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKHQpfSxCNXQucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxlKX0sQjV0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXgzKCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXgzKHRoaXMpfSxCNXQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQjV0LnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LEI1dC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQjV0LnByb3RvdHlwZS5nZXRJbnZlcnNlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5nZXRJbnZlcnNlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeEludi5jb3B5KCBtYXRyaXggKS5pbnZlcnQoKTsgaW5zdGVhZC4iKSx0aGlzLmNvcHkodCkuaW52ZXJ0KCl9LEQzdC5wcm90b3R5cGUuZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5leHRyYWN0UG9zaXRpb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5jb3B5UG9zaXRpb24oKS4iKSx0aGlzLmNvcHlQb3NpdGlvbih0KX0sRDN0LnByb3RvdHlwZS5mbGF0dGVuVG9BcnJheU9mZnNldD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIiksdGhpcy50b0FycmF5KHQsZSl9LEQzdC5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0UG9zaXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy5zZXRGcm9tTWF0cml4UG9zaXRpb24oIG1hdHJpeCApIGluc3RlYWQuIiksKG5ldyBhM3QpLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywzKX0sRDN0LnByb3RvdHlwZS5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKS4iKSx0aGlzLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpfSxEM3QucHJvdG90eXBlLm11bHRpcGx5VG9BcnJheT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VG9BcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEQzdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sRDN0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yNCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxEM3QucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRDN0LnByb3RvdHlwZS5yb3RhdGVBeGlzPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy50cmFuc2Zvcm1EaXJlY3Rpb24oIG1hdHJpeCApIGluc3RlYWQuIiksdC50cmFuc2Zvcm1EaXJlY3Rpb24odGhpcyl9LEQzdC5wcm90b3R5cGUuY3Jvc3NWZWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmNyb3NzVmVjdG9yKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LEQzdC5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEQzdC5wcm90b3R5cGUucm90YXRlWD1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVYKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRDN0LnByb3RvdHlwZS5yb3RhdGVZPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxEM3QucHJvdG90eXBlLnJvdGF0ZVo9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEQzdC5wcm90b3R5cGUucm90YXRlQnlBeGlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUJ5QXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEQzdC5wcm90b3R5cGUuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhdHRyaWJ1dGUuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxEM3QucHJvdG90eXBlLmFwcGx5VG9WZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEQzdC5wcm90b3R5cGUubWFrZUZydXN0dW09ZnVuY3Rpb24odCxlLG4saSxyLG8pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlRnJ1c3R1bSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAubWFrZVBlcnNwZWN0aXZlKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApIGluc3RlYWQuIiksdGhpcy5tYWtlUGVyc3BlY3RpdmUodCxlLGksbixyLG8pfSxEM3QucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX0sUzZ0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkxpbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5pc0ludGVyc2VjdGlvbkxpbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzTGluZSgpLiIpLHRoaXMuaW50ZXJzZWN0c0xpbmUodCl9LG8zdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgaXMgbm93IHZlY3Rvci5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24gKSBpbnN0ZWFkLiIpLHQuYXBwbHlRdWF0ZXJuaW9uKHRoaXMpfSxvM3QucHJvdG90eXBlLmludmVyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuaW52ZXJzZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gaW52ZXJ0KCkuIiksdGhpcy5pbnZlcnQoKX0sejN0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkJveD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LHozdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25QbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1BsYW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzUGxhbmUodCl9LHozdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25TcGhlcmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzU3BoZXJlKCkuIiksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKHQpfSx2NHQucHJvdG90eXBlLmFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmFyZWEoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRBcmVhKCkuIiksdGhpcy5nZXRBcmVhKCl9LHY0dC5wcm90b3R5cGUuYmFyeWNvb3JkRnJvbVBvaW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSx0aGlzLmdldEJhcnljb29yZCh0LGUpfSx2NHQucHJvdG90eXBlLm1pZHBvaW50PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubWlkcG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRNaWRwb2ludCgpLiIpLHRoaXMuZ2V0TWlkcG9pbnQodCl9LHY0dC5wcm90b3R5cGVub3JtYWw9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSx0aGlzLmdldE5vcm1hbCh0KX0sdjR0LnByb3RvdHlwZS5wbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLnBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0UGxhbmUoKS4iKSx0aGlzLmdldFBsYW5lKHQpfSx2NHQuYmFyeWNvb3JkRnJvbVBvaW50PWZ1bmN0aW9uKHQsZSxuLGkscil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSx2NHQuZ2V0QmFyeWNvb3JkKHQsZSxuLGkscil9LHY0dC5ub3JtYWw9ZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSx2NHQuZ2V0Tm9ybWFsKHQsZSxuLGkpfSxvZWUucHJvdG90eXBlLmV4dHJhY3RBbGxQb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5leHRyYWN0QWxsUG9pbnRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5leHRyYWN0UG9pbnRzKCkgaW5zdGVhZC4iKSx0aGlzLmV4dHJhY3RQb2ludHModCl9LG9lZS5wcm90b3R5cGUuZXh0cnVkZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJ1ZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXh0cnVkZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgUmVlKHRoaXMsdCl9LG9lZS5wcm90b3R5cGUubWFrZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAubWFrZUdlb21ldHJ5KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFNoYXBlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyBGZWUodGhpcyx0KX0sRDV0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSxENXQucHJvdG90eXBlLmRpc3RhbmNlVG9NYW5oYXR0YW49ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKHQpfSxENXQucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSxhM3QucHJvdG90eXBlLnNldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21Sb3RhdGlvbk1hdHJpeCgpIGluc3RlYWQuIil9LGEzdC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUXVhdGVybmlvbj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21RdWF0ZXJuaW9uKCkgaW5zdGVhZC4iKX0sYTN0LnByb3RvdHlwZS5nZXRQb3NpdGlvbkZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFBvc2l0aW9uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhQb3NpdGlvbigpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQpfSxhM3QucHJvdG90eXBlLmdldFNjYWxlRnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0U2NhbGVGcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFNjYWxlKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4U2NhbGUodCl9LGEzdC5wcm90b3R5cGUuZ2V0Q29sdW1uRnJvbU1hdHJpeD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRDb2x1bW5Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeENvbHVtbigpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbihlLHQpfSxhM3QucHJvdG90eXBlLmFwcGx5UHJvamVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlQcm9qZWN0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5hcHBseU1hdHJpeDQoIG0gKSBpbnN0ZWFkLiIpLHRoaXMuYXBwbHlNYXRyaXg0KHQpfSxhM3QucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LGEzdC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8odCl9LGEzdC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LGUzdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sZTN0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0sbDR0LnByb3RvdHlwZS5nZXRDaGlsZEJ5TmFtZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldENoaWxkQnlOYW1lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0T2JqZWN0QnlOYW1lKCkuIiksdGhpcy5nZXRPYmplY3RCeU5hbWUodCl9LGw0dC5wcm90b3R5cGUucmVuZGVyRGVwdGg9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAucmVuZGVyRGVwdGggaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5yZW5kZXJPcmRlciwgaW5zdGVhZC4iKX0sbDR0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAudHJhbnNsYXRlT25BeGlzKCBheGlzLCBkaXN0YW5jZSApIGluc3RlYWQuIiksdGhpcy50cmFuc2xhdGVPbkF4aXMoZSx0KX0sbDR0LnByb3RvdHlwZS5nZXRXb3JsZFJvdGF0aW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFJvdGF0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLk9iamVjdDNELmdldFdvcmxkUXVhdGVybmlvbiggdGFyZ2V0ICkgaW5zdGVhZC4iKX0sbDR0LnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGw0dC5wcm90b3R5cGUse2V1bGVyT3JkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpLHRoaXMucm90YXRpb24ub3JkZXJ9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpLHRoaXMucm90YXRpb24ub3JkZXI9dH19LHVzZVF1YXRlcm5pb246e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9fX0pLHM2dC5wcm90b3R5cGUuc2V0RHJhd01vZGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuc2V0RHJhd01vZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhzNnQucHJvdG90eXBlLHtkcmF3TW9kZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5kcmF3TW9kZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiIpLDB9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5kcmF3TW9kZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfX19KSxZN3QucHJvdG90eXBlLmluaXRCb25lcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoOiBpbml0Qm9uZXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxtNnQucHJvdG90eXBlLnNldExlbnM9ZnVuY3Rpb24odCxlKXtjb25zb2xlLndhcm4oIlRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhLnNldExlbnMgaXMgZGVwcmVjYXRlZC4gVXNlIC5zZXRGb2NhbExlbmd0aCBhbmQgLmZpbG1HYXVnZSBmb3IgYSBwaG90b2dyYXBoaWMgc2V0dXAuIiksdm9pZCAwIT09ZSYmKHRoaXMuZmlsbUdhdWdlPWUpLHRoaXMuc2V0Rm9jYWxMZW5ndGgodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFBuZS5wcm90b3R5cGUse29ubHlTaGFkb3c6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5vbmx5U2hhZG93IGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dDYW1lcmFGb3Y6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRm92IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mb3YuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZvdj10fX0sc2hhZG93Q2FtZXJhTGVmdDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFMZWZ0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5sZWZ0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5sZWZ0PXR9fSxzaGFkb3dDYW1lcmFSaWdodDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFSaWdodCBpcyBub3cgLnNoYWRvdy5jYW1lcmEucmlnaHQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLnJpZ2h0PXR9fSxzaGFkb3dDYW1lcmFUb3A6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVG9wIGlzIG5vdyAuc2hhZG93LmNhbWVyYS50b3AuIiksdGhpcy5zaGFkb3cuY2FtZXJhLnRvcD10fX0sc2hhZG93Q2FtZXJhQm90dG9tOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUJvdHRvbSBpcyBub3cgLnNoYWRvdy5jYW1lcmEuYm90dG9tLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5ib3R0b209dH19LHNoYWRvd0NhbWVyYU5lYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTmVhciBpcyBub3cgLnNoYWRvdy5jYW1lcmEubmVhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubmVhcj10fX0sc2hhZG93Q2FtZXJhRmFyOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZhciBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZmFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mYXI9dH19LHNoYWRvd0NhbWVyYVZpc2libGU6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFWaXNpYmxlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQ2FtZXJhSGVscGVyKCBsaWdodC5zaGFkb3cuY2FtZXJhICkgaW5zdGVhZC4iKX19LHNoYWRvd0JpYXM6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93QmlhcyBpcyBub3cgLnNoYWRvdy5iaWFzLiIpLHRoaXMuc2hhZG93LmJpYXM9dH19LHNoYWRvd0RhcmtuZXNzOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93RGFya25lc3MgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd01hcFdpZHRoOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcFdpZHRoIGlzIG5vdyAuc2hhZG93Lm1hcFNpemUud2lkdGguIiksdGhpcy5zaGFkb3cubWFwU2l6ZS53aWR0aD10fX0sc2hhZG93TWFwSGVpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcEhlaWdodCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLmhlaWdodC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLmhlaWdodD10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhFNHQucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuIiksdGhpcy5hcnJheS5sZW5ndGh9fSxkeW5hbWljOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnVzYWdlPT09bDV0fSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmR5bmFtaWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UobDV0KX19fSksRTR0LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKCEwPT09dD9sNXQ6czV0KSx0aGlzfSxFNHQucHJvdG90eXBlLmNvcHlJbmRpY2VzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5jb3B5SW5kaWNlc0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRTR0LnByb3RvdHlwZS5zZXRBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9LGo0dC5wcm90b3R5cGUuYWRkSW5kZXg9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEluZGV4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0SW5kZXgoKS4iKSx0aGlzLnNldEluZGV4KHQpfSxqNHQucHJvdG90eXBlLmFkZEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0QXR0cmlidXRlKCkuIiksZSYmZS5pc0J1ZmZlckF0dHJpYnV0ZXx8ZSYmZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlPyJpbmRleCI9PT10Pyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LmFkZEF0dHJpYnV0ZTogVXNlIC5zZXRJbmRleCgpIGZvciBpbmRleCBhdHRyaWJ1dGUuIiksdGhpcy5zZXRJbmRleChlKSx0aGlzKTp0aGlzLnNldEF0dHJpYnV0ZSh0LGUpOihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4iKSx0aGlzLnNldEF0dHJpYnV0ZSh0LG5ldyBFNHQoYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSkpKX0sajR0LnByb3RvdHlwZS5hZGREcmF3Q2FsbD1mdW5jdGlvbih0LGUsbil7dm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIGluZGV4T2Zmc2V0LiIpLGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIGlzIG5vdyAuYWRkR3JvdXAoKS4iKSx0aGlzLmFkZEdyb3VwKHQsZSl9LGo0dC5wcm90b3R5cGUuY2xlYXJEcmF3Q2FsbHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY2xlYXJEcmF3Q2FsbHMoKSBpcyBub3cgLmNsZWFyR3JvdXBzKCkuIiksdGhpcy5jbGVhckdyb3VwcygpfSxqNHQucHJvdG90eXBlLmNvbXB1dGVPZmZzZXRzPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVPZmZzZXRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sajR0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5yZW1vdmVBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5kZWxldGVBdHRyaWJ1dGUoKS4iKSx0aGlzLmRlbGV0ZUF0dHJpYnV0ZSh0KX0sajR0LnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGo0dC5wcm90b3R5cGUse2RyYXdjYWxsczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuZHJhd2NhbGxzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319LG9mZnNldHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAub2Zmc2V0cyBoYXMgYmVlbiByZW5hbWVkIHRvIC5ncm91cHMuIiksdGhpcy5ncm91cHN9fX0pLGI3dC5wcm90b3R5cGUuc2V0RHluYW1pYz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKCEwPT09dD9sNXQ6czV0KSx0aGlzfSxiN3QucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5zZXRBcnJheSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgQnVmZmVyR2VvbWV0cnkgLnNldEF0dHJpYnV0ZSB0byByZXBsYWNlL3Jlc2l6ZSBhdHRyaWJ1dGUgYnVmZmVycyIpfSxSZWUucHJvdG90eXBlLmdldEFycmF5cz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmdldEFycmF5cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LFJlZS5wcm90b3R5cGUuYWRkU2hhcGVMaXN0PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGVMaXN0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sUmVlLnByb3RvdHlwZS5hZGRTaGFwZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmFkZFNoYXBlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sdjd0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmU6IC5kaXNwb3NlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQmllLnByb3RvdHlwZS5vblVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVuaWZvcm06IC5vblVwZGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBvYmplY3Qub25CZWZvcmVSZW5kZXIoKSBpbnN0ZWFkLiIpLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHg0dC5wcm90b3R5cGUse3dyYXBBcm91bmQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwQXJvdW5kIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwQXJvdW5kIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxvdmVyZHJhdzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLm92ZXJkcmF3IGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sd3JhcFJHQjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwUkdCIGhhcyBiZWVuIHJlbW92ZWQuIiksbmV3ICQ1dH19LHNoYWRpbmc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9MT09PXR9fSxzdGVuY2lsTWFzazp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIiksdGhpcy5zdGVuY2lsRnVuY01hc2t9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPXR9fSx2ZXJ0ZXhUYW5nZW50czp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAudmVydGV4VGFuZ2VudHMgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAudmVydGV4VGFuZ2VudHMgaGFzIGJlZW4gcmVtb3ZlZC4iKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocDZ0LnByb3RvdHlwZSx7ZGVyaXZhdGl2ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4gU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKSx0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXM9dH19fSksbTd0LnByb3RvdHlwZS5jbGVhclRhcmdldD1mdW5jdGlvbih0LGUsbixpKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jbGVhclRhcmdldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0UmVuZGVyVGFyZ2V0KCkgYW5kIC5jbGVhcigpIGluc3RlYWQuIiksdGhpcy5zZXRSZW5kZXJUYXJnZXQodCksdGhpcy5jbGVhcihlLG4saSl9LG03dC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbmltYXRlKCkgaXMgbm93IC5zZXRBbmltYXRpb25Mb29wKCkuIiksdGhpcy5zZXRBbmltYXRpb25Mb29wKHQpfSxtN3QucHJvdG90eXBlLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0Q3VycmVudFJlbmRlclRhcmdldCgpIGlzIG5vdyAuZ2V0UmVuZGVyVGFyZ2V0KCkuIiksdGhpcy5nZXRSZW5kZXJUYXJnZXQoKX0sbTd0LnByb3RvdHlwZS5nZXRNYXhBbmlzb3Ryb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldE1heEFuaXNvdHJvcHkoKSBpcyBub3cgLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCkuIiksdGhpcy5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpfSxtN3QucHJvdG90eXBlLmdldFByZWNpc2lvbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRQcmVjaXNpb24oKSBpcyBub3cgLmNhcGFiaWxpdGllcy5wcmVjaXNpb24uIiksdGhpcy5jYXBhYmlsaXRpZXMucHJlY2lzaW9ufSxtN3QucHJvdG90eXBlLnJlc2V0R0xTdGF0ZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5yZXNldEdMU3RhdGUoKSBpcyBub3cgLnN0YXRlLnJlc2V0KCkuIiksdGhpcy5zdGF0ZS5yZXNldCgpfSxtN3QucHJvdG90eXBlLnN1cHBvcnRzRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0Zsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKX0sbTd0LnByb3RvdHlwZS5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfaGFsZl9mbG9hdCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iil9LG03dC5wcm90b3R5cGUuc3VwcG9ydHNTdGFuZGFyZERlcml2YXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIil9LG03dC5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKX0sbTd0LnByb3RvdHlwZS5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUFZSVEM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKX0sbTd0LnByb3RvdHlwZS5zdXBwb3J0c0JsZW5kTWluTWF4PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQmxlbmRNaW5NYXgoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnRVhUX2JsZW5kX21pbm1heCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJFWFRfYmxlbmRfbWlubWF4Iil9LG03dC5wcm90b3R5cGUuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1ZlcnRleFRleHR1cmVzKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXMuIiksdGhpcy5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXN9LG03dC5wcm90b3R5cGUuc3VwcG9ydHNJbnN0YW5jZWRBcnJheXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNJbnN0YW5jZWRBcnJheXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnQU5HTEVfaW5zdGFuY2VkX2FycmF5cycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIil9LG03dC5wcm90b3R5cGUuZW5hYmxlU2Npc3NvclRlc3Q9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZW5hYmxlU2Npc3NvclRlc3QoKSBpcyBub3cgLnNldFNjaXNzb3JUZXN0KCkuIiksdGhpcy5zZXRTY2lzc29yVGVzdCh0KX0sbTd0LnByb3RvdHlwZS5pbml0TWF0ZXJpYWw9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5pbml0TWF0ZXJpYWwoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxtN3QucHJvdG90eXBlLmFkZFByZVBsdWdpbj1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFkZFByZVBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG03dC5wcm90b3R5cGUuYWRkUG9zdFBsdWdpbj1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFkZFBvc3RQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxtN3QucHJvdG90eXBlLnVwZGF0ZVNoYWRvd01hcD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnVwZGF0ZVNoYWRvd01hcCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG03dC5wcm90b3R5cGUuc2V0RmFjZUN1bGxpbmc9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRGYWNlQ3VsbGluZygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG03dC5wcm90b3R5cGUuYWxsb2NUZXh0dXJlVW5pdD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFsbG9jVGV4dHVyZVVuaXQoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxtN3QucHJvdG90eXBlLnNldFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbTd0LnByb3RvdHlwZS5zZXRUZXh0dXJlMkQ9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlMkQoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxtN3QucHJvdG90eXBlLnNldFRleHR1cmVDdWJlPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZUN1YmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxtN3QucHJvdG90eXBlLmdldEFjdGl2ZU1pcE1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEFjdGl2ZU1pcE1hcExldmVsKCkgaXMgbm93IC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLiIpLHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobTd0LnByb3RvdHlwZSx7c2hhZG93TWFwRW5hYmxlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hhZG93TWFwLmVuYWJsZWR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBFbmFibGVkIGlzIG5vdyAuc2hhZG93TWFwLmVuYWJsZWQuIiksdGhpcy5zaGFkb3dNYXAuZW5hYmxlZD10fX0sc2hhZG93TWFwVHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hhZG93TWFwLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBUeXBlIGlzIG5vdyAuc2hhZG93TWFwLnR5cGUuIiksdGhpcy5zaGFkb3dNYXAudHlwZT10fX0sc2hhZG93TWFwQ3VsbEZhY2U6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxjb250ZXh0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuY29udGV4dCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmdldENvbnRleHQoKSBpbnN0ZWFkLiIpLHRoaXMuZ2V0Q29udGV4dCgpfX0sdnI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC52ciBoYXMgYmVlbiByZW5hbWVkIHRvIC54ciIpLHRoaXMueHJ9fSxnYW1tYUlucHV0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFJbnB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgdGhlIGVuY29kaW5nIGZvciB0ZXh0dXJlcyB2aWEgVGV4dHVyZS5lbmNvZGluZyBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUlucHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCB0aGUgZW5jb2RpbmcgZm9yIHRleHR1cmVzIHZpYSBUZXh0dXJlLmVuY29kaW5nIGluc3RlYWQuIil9fSxnYW1tYU91dHB1dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hT3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCBXZWJHTFJlbmRlcmVyLm91dHB1dEVuY29kaW5nIGluc3RlYWQuIiksITF9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYU91dHB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgV2ViR0xSZW5kZXJlci5vdXRwdXRFbmNvZGluZyBpbnN0ZWFkLiIpLHRoaXMub3V0cHV0RW5jb2Rpbmc9ITA9PT10P281dDpyNXR9fSx0b25lTWFwcGluZ1doaXRlUG9pbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC50b25lTWFwcGluZ1doaXRlUG9pbnQgaGFzIGJlZW4gcmVtb3ZlZC4iKSwxfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC50b25lTWFwcGluZ1doaXRlUG9pbnQgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LGdhbW1hRmFjdG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFGYWN0b3IgaGFzIGJlZW4gcmVtb3ZlZC4iKSwyfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUZhY3RvciBoYXMgYmVlbiByZW1vdmVkLiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyN3QucHJvdG90eXBlLHtjdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyUmV2ZXJzZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LHJlbmRlclNpbmdsZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4zdC5wcm90b3R5cGUse3dyYXBTOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKSx0aGlzLnRleHR1cmUud3JhcFN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwUz10fX0sd3JhcFQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULiIpLHRoaXMudGV4dHVyZS53cmFwVH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUPXR9fSxtYWdGaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWFnRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5tYWdGaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyPXR9fSxtaW5GaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWluRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5taW5GaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1pbkZpbHRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyPXR9fSxhbmlzb3Ryb3B5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmFuaXNvdHJvcHkgaXMgbm93IC50ZXh0dXJlLmFuaXNvdHJvcHkuIiksdGhpcy50ZXh0dXJlLmFuaXNvdHJvcHl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weT10fX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm9mZnNldCBpcyBub3cgLnRleHR1cmUub2Zmc2V0LiIpLHRoaXMudGV4dHVyZS5vZmZzZXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldD10fX0scmVwZWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpLHRoaXMudGV4dHVyZS5yZXBlYXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdD10fX0sZm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpLHRoaXMudGV4dHVyZS5mb3JtYXR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdD10fX0sdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC50eXBlIGlzIG5vdyAudGV4dHVyZS50eXBlLiIpLHRoaXMudGV4dHVyZS50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGU9dH19LGdlbmVyYXRlTWlwbWFwczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5nZW5lcmF0ZU1pcG1hcHMgaXMgbm93IC50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcy4iKSx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dH19fSksX2llLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IC5sb2FkIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5BdWRpb0xvYWRlciBpbnN0ZWFkLiIpO2NvbnN0IGU9dGhpcztyZXR1cm4obmV3IG9pZSkubG9hZCh0LChmdW5jdGlvbih0KXtlLnNldEJ1ZmZlcih0KX0pKSx0aGlzfSx3aWUucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5BdWRpb0FuYWx5c2VyOiAuZ2V0RGF0YSgpIGlzIG5vdyAuZ2V0RnJlcXVlbmN5RGF0YSgpLiIpLHRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpfSxfNnQucHJvdG90eXBlLnVwZGF0ZUN1YmVNYXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAudXBkYXRlQ3ViZU1hcCgpIGlzIG5vdyAudXBkYXRlKCkuIiksdGhpcy51cGRhdGUodCxlKX0sXzZ0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAuY2xlYXIoKSBpcyBub3cgLnJlbmRlclRhcmdldC5jbGVhcigpLiIpLHRoaXMucmVuZGVyVGFyZ2V0LmNsZWFyKHQsZSxuLGkpfSxaNXQuY3Jvc3NPcmlnaW49dm9pZCAwLFo1dC5sb2FkVGV4dHVyZT1mdW5jdGlvbih0LGUsbixpKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLlRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IHI9bmV3IGtuZTtyLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IG89ci5sb2FkKHQsbix2b2lkIDAsaSk7cmV0dXJuIGUmJihvLm1hcHBpbmc9ZSksb30sWjV0LmxvYWRUZXh0dXJlQ3ViZT1mdW5jdGlvbih0LGUsbixpKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmVDdWJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5DdWJlVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7Y29uc3Qgcj1uZXcgQ25lO3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Y29uc3Qgbz1yLmxvYWQodCxuLHZvaWQgMCxpKTtyZXR1cm4gZSYmKG8ubWFwcGluZz1lKSxvfSxaNXQubG9hZENvbXByZXNzZWRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkQ29tcHJlc3NlZFRleHR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSxaNXQubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O2NvbnN0IHZyZT17Y3JlYXRlTXVsdGlNYXRlcmlhbE9iamVjdDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGRldGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGF0dGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9fTsidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246SzB0fX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5fX1RIUkVFX18/Y29uc29sZS53YXJuKCJXQVJOSU5HOiBNdWx0aXBsZSBpbnN0YW5jZXMgb2YgVGhyZWUuanMgYmVpbmcgaW1wb3J0ZWQuIik6d2luZG93Ll9fVEhSRUVfXz1LMHQpO3ZhciBicmU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQUNFU0ZpbG1pY1RvbmVNYXBwaW5nOjQsQWRkRXF1YXRpb246UTB0LEFkZE9wZXJhdGlvbjoyLEFkZGl0aXZlQW5pbWF0aW9uQmxlbmRNb2RlOmk1dCxBZGRpdGl2ZUJsZW5kaW5nOjIsQWxwaGFGb3JtYXQ6MTAyMSxBbHdheXNEZXB0aDoxLEFsd2F5c1N0ZW5jaWxGdW5jOjUxOSxBbWJpZW50TGlnaHQ6V25lLEFtYmllbnRMaWdodFByb2JlOnNpZSxBbmltYXRpb25DbGlwOnluZSxBbmltYXRpb25Mb2FkZXI6Y2xhc3MgZXh0ZW5kcyBTbmV7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgRW5lKHRoaXMubWFuYWdlcik7by5zZXRQYXRoKHRoaXMucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7ZShyLnBhcnNlKEpTT04ucGFyc2UobikpKX1jYXRjaChlKXtpP2koZSk6Y29uc29sZS5lcnJvcihlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4saSl9cGFyc2UodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT15bmUucGFyc2UodFtuXSk7ZS5wdXNoKGkpfXJldHVybiBlfX0sQW5pbWF0aW9uTWl4ZXI6RGllLEFuaW1hdGlvbk9iamVjdEdyb3VwOk9pZSxBbmltYXRpb25VdGlsczpvbmUsQXJjQ3VydmU6SHRlLEFycmF5Q2FtZXJhOmw3dCxBcnJvd0hlbHBlcjpjbGFzcyBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcih0PW5ldyBhM3QoMCwwLDEpLGU9bmV3IGEzdCgwLDAsMCksbj0xLGk9MTY3NzY5NjAscj0uMipuLG89LjIqcil7c3VwZXIoKSx0aGlzLnR5cGU9IkFycm93SGVscGVyIix2b2lkIDA9PT1mcmUmJihmcmU9bmV3IGo0dCxmcmUuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dChbMCwwLDAsMCwxLDBdLDMpKSxtcmU9bmV3IEF0ZSgwLC41LDEsNSwxKSxtcmUudHJhbnNsYXRlKDAsLS41LDApKSx0aGlzLnBvc2l0aW9uLmNvcHkoZSksdGhpcy5saW5lPW5ldyBodGUoZnJlLG5ldyBvdGUoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLmxpbmUubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmFkZCh0aGlzLmxpbmUpLHRoaXMuY29uZT1uZXcgczZ0KG1yZSxuZXcgdzR0KHtjb2xvcjppLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5jb25lLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5hZGQodGhpcy5jb25lKSx0aGlzLnNldERpcmVjdGlvbih0KSx0aGlzLnNldExlbmd0aChuLHIsbyl9c2V0RGlyZWN0aW9uKHQpe2lmKHQueT4uOTk5OTkpdGhpcy5xdWF0ZXJuaW9uLnNldCgwLDAsMCwxKTtlbHNlIGlmKHQueTwtLjk5OTk5KXRoaXMucXVhdGVybmlvbi5zZXQoMSwwLDAsMCk7ZWxzZXtwcmUuc2V0KHQueiwwLC10LngpLm5vcm1hbGl6ZSgpO2NvbnN0IGU9TWF0aC5hY29zKHQueSk7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUocHJlLGUpfX1zZXRMZW5ndGgodCxlPS4yKnQsbj0uMiplKXt0aGlzLmxpbmUuc2NhbGUuc2V0KDEsTWF0aC5tYXgoMWUtNCx0LWUpLDEpLHRoaXMubGluZS51cGRhdGVNYXRyaXgoKSx0aGlzLmNvbmUuc2NhbGUuc2V0KG4sZSxuKSx0aGlzLmNvbmUucG9zaXRpb24ueT10LHRoaXMuY29uZS51cGRhdGVNYXRyaXgoKX1zZXRDb2xvcih0KXt0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHQpLHRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0LCExKSx0aGlzLmxpbmUuY29weSh0LmxpbmUpLHRoaXMuY29uZS5jb3B5KHQuY29uZSksdGhpc319LEF1ZGlvOl9pZSxBdWRpb0FuYWx5c2VyOndpZSxBdWRpb0NvbnRleHQ6cmllLEF1ZGlvTGlzdGVuZXI6Y2xhc3MgZXh0ZW5kcyBsNHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW9MaXN0ZW5lciIsdGhpcy5jb250ZXh0PXJpZS5nZXRDb250ZXh0KCksdGhpcy5nYWluPXRoaXMuY29udGV4dC5jcmVhdGVHYWluKCksdGhpcy5nYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj1udWxsLHRoaXMudGltZURlbHRhPTAsdGhpcy5fY2xvY2s9bmV3IGhpZX1nZXRJbnB1dCgpe3JldHVybiB0aGlzLmdhaW59cmVtb3ZlRmlsdGVyKCl7cmV0dXJuIG51bGwhPT10aGlzLmZpbHRlciYmKHRoaXMuZ2Fpbi5kaXNjb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5kaXNjb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpcy5nYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj1udWxsKSx0aGlzfWdldEZpbHRlcigpe3JldHVybiB0aGlzLmZpbHRlcn1zZXRGaWx0ZXIodCl7cmV0dXJuIG51bGwhPT10aGlzLmZpbHRlcj8odGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSk6dGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj10LHRoaXMuZ2Fpbi5jb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpc31nZXRNYXN0ZXJWb2x1bWUoKXtyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWV9c2V0TWFzdGVyVm9sdW1lKHQpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodCx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpO2NvbnN0IGU9dGhpcy5jb250ZXh0Lmxpc3RlbmVyLG49dGhpcy51cDtpZih0aGlzLnRpbWVEZWx0YT10aGlzLl9jbG9jay5nZXREZWx0YSgpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKHBpZSxmaWUsbWllKSxnaWUuc2V0KDAsMCwtMSkuYXBwbHlRdWF0ZXJuaW9uKGZpZSksZS5wb3NpdGlvblgpe2NvbnN0IHQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3RoaXMudGltZURlbHRhO2UucG9zaXRpb25YLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHBpZS54LHQpLGUucG9zaXRpb25ZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHBpZS55LHQpLGUucG9zaXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHBpZS56LHQpLGUuZm9yd2FyZFgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZ2llLngsdCksZS5mb3J3YXJkWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShnaWUueSx0KSxlLmZvcndhcmRaLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGdpZS56LHQpLGUudXBYLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG4ueCx0KSxlLnVwWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShuLnksdCksZS51cFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobi56LHQpfWVsc2UgZS5zZXRQb3NpdGlvbihwaWUueCxwaWUueSxwaWUueiksZS5zZXRPcmllbnRhdGlvbihnaWUueCxnaWUueSxnaWUueixuLngsbi55LG4ueil9fSxBdWRpb0xvYWRlcjpvaWUsQXhlc0hlbHBlcjpncmUsQXhpc0hlbHBlcjpmdW5jdGlvbiB4cmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQXhpc0hlbHBlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkF4ZXNIZWxwZXIuIiksbmV3IGdyZSh0KX0sQmFja1NpZGU6MSxCYXNpY0RlcHRoUGFja2luZzozMjAwLEJhc2ljU2hhZG93TWFwOjAsQmluYXJ5VGV4dHVyZUxvYWRlcjpmdW5jdGlvbiB3cmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQmluYXJ5VGV4dHVyZUxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkRhdGFUZXh0dXJlTG9hZGVyLiIpLG5ldyBBbmUodCl9LEJvbmU6WDd0LEJvb2xlYW5LZXlmcmFtZVRyYWNrOmhuZSxCb3VuZGluZ0JveEhlbHBlcjpmdW5jdGlvbiBTcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3VuZGluZ0JveEhlbHBlciBoYXMgYmVlbiBkZXByZWNhdGVkLiBDcmVhdGluZyBhIFRIUkVFLkJveEhlbHBlciBpbnN0ZWFkLiIpLG5ldyBkcmUodCxlKX0sQm94MjpXaWUsQm94MzpjM3QsQm94M0hlbHBlcjpjbGFzcyBleHRlbmRzIGZ0ZXtjb25zdHJ1Y3Rvcih0LGU9MTY3NzY5NjApe2NvbnN0IG49bmV3IFVpbnQxNkFycmF5KFswLDEsMSwyLDIsMywzLDAsNCw1LDUsNiw2LDcsNyw0LDAsNCwxLDUsMiw2LDMsN10pLGk9bmV3IGo0dDtpLnNldEluZGV4KG5ldyBFNHQobiwxKSksaS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KFsxLDEsMSwtMSwxLDEsLTEsLTEsMSwxLC0xLDEsMSwxLC0xLC0xLDEsLTEsLTEsLTEsLTEsMSwtMSwtMV0sMykpLHN1cGVyKGksbmV3IG90ZSh7Y29sb3I6ZSx0b25lTWFwcGVkOiExfSkpLHRoaXMuYm94PXQsdGhpcy50eXBlPSJCb3gzSGVscGVyIix0aGlzLmdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2NvbnN0IGU9dGhpcy5ib3g7ZS5pc0VtcHR5KCl8fChlLmdldENlbnRlcih0aGlzLnBvc2l0aW9uKSxlLmdldFNpemUodGhpcy5zY2FsZSksdGhpcy5zY2FsZS5tdWx0aXBseVNjYWxhciguNSksc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCkpfX0sQm94QnVmZmVyR2VvbWV0cnk6YzZ0LEJveEdlb21ldHJ5OmM2dCxCb3hIZWxwZXI6ZHJlLEJ1ZmZlckF0dHJpYnV0ZTpFNHQsQnVmZmVyR2VvbWV0cnk6ajR0LEJ1ZmZlckdlb21ldHJ5TG9hZGVyOkpuZSxCeXRlVHlwZToxMDEwLENhY2hlOmJuZSxDYW1lcmE6ZjZ0LENhbWVyYUhlbHBlcjpjbGFzcyBleHRlbmRzIGZ0ZXtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPW5ldyBqNHQsbj1uZXcgb3RlKHtjb2xvcjoxNjc3NzIxNSx2ZXJ0ZXhDb2xvcnM6ITAsdG9uZU1hcHBlZDohMX0pLGk9W10scj1bXSxvPXt9LGE9bmV3ICQ1dCgxNjc1NTIwMCkscz1uZXcgJDV0KDE2NzExNjgwKSxsPW5ldyAkNXQoNDM3NzUpLGM9bmV3ICQ1dCgxNjc3NzIxNSksdT1uZXcgJDV0KDMzNTU0NDMpO2Z1bmN0aW9uIGgodCxlLG4pe2QodCxuKSxkKGUsbil9ZnVuY3Rpb24gZCh0LGUpe2kucHVzaCgwLDAsMCksci5wdXNoKGUucixlLmcsZS5iKSx2b2lkIDA9PT1vW3RdJiYob1t0XT1bXSksb1t0XS5wdXNoKGkubGVuZ3RoLzMtMSl9aCgibjEiLCJuMiIsYSksaCgibjIiLCJuNCIsYSksaCgibjQiLCJuMyIsYSksaCgibjMiLCJuMSIsYSksaCgiZjEiLCJmMiIsYSksaCgiZjIiLCJmNCIsYSksaCgiZjQiLCJmMyIsYSksaCgiZjMiLCJmMSIsYSksaCgibjEiLCJmMSIsYSksaCgibjIiLCJmMiIsYSksaCgibjMiLCJmMyIsYSksaCgibjQiLCJmNCIsYSksaCgicCIsIm4xIixzKSxoKCJwIiwibjIiLHMpLGgoInAiLCJuMyIscyksaCgicCIsIm40IixzKSxoKCJ1MSIsInUyIixsKSxoKCJ1MiIsInUzIixsKSxoKCJ1MyIsInUxIixsKSxoKCJjIiwidCIsYyksaCgicCIsImMiLHUpLGgoImNuMSIsImNuMiIsdSksaCgiY24zIiwiY240Iix1KSxoKCJjZjEiLCJjZjIiLHUpLGgoImNmMyIsImNmNCIsdSksZS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGksMykpLGUuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IFI0dChyLDMpKSxzdXBlcihlLG4pLHRoaXMudHlwZT0iQ2FtZXJhSGVscGVyIix0aGlzLmNhbWVyYT10LHRoaXMuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgmJnRoaXMuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLnBvaW50TWFwPW8sdGhpcy51cGRhdGUoKX11cGRhdGUoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnksZT10aGlzLnBvaW50TWFwO2NyZS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSx1cmUoImMiLGUsdCxjcmUsMCwwLC0xKSx1cmUoInQiLGUsdCxjcmUsMCwwLDEpLHVyZSgibjEiLGUsdCxjcmUsLTEsLTEsLTEpLHVyZSgibjIiLGUsdCxjcmUsMSwtMSwtMSksdXJlKCJuMyIsZSx0LGNyZSwtMSwxLC0xKSx1cmUoIm40IixlLHQsY3JlLDEsMSwtMSksdXJlKCJmMSIsZSx0LGNyZSwtMSwtMSwxKSx1cmUoImYyIixlLHQsY3JlLDEsLTEsMSksdXJlKCJmMyIsZSx0LGNyZSwtMSwxLDEpLHVyZSgiZjQiLGUsdCxjcmUsMSwxLDEpLHVyZSgidTEiLGUsdCxjcmUsLjcsMS4xLC0xKSx1cmUoInUyIixlLHQsY3JlLC0uNywxLjEsLTEpLHVyZSgidTMiLGUsdCxjcmUsMCwyLC0xKSx1cmUoImNmMSIsZSx0LGNyZSwtMSwwLDEpLHVyZSgiY2YyIixlLHQsY3JlLDEsMCwxKSx1cmUoImNmMyIsZSx0LGNyZSwwLC0xLDEpLHVyZSgiY2Y0IixlLHQsY3JlLDAsMSwxKSx1cmUoImNuMSIsZSx0LGNyZSwtMSwwLC0xKSx1cmUoImNuMiIsZSx0LGNyZSwxLDAsLTEpLHVyZSgiY24zIixlLHQsY3JlLDAsLTEsLTEpLHVyZSgiY240IixlLHQsY3JlLDAsMSwtMSksdC5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIikubmVlZHNVcGRhdGU9ITB9ZGlzcG9zZSgpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpfX0sQ2FudmFzUmVuZGVyZXI6ZnVuY3Rpb24gTXJlKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQ2FudmFzUmVuZGVyZXIgaGFzIGJlZW4gcmVtb3ZlZCIpfSxDYW52YXNUZXh0dXJlOlR0ZSxDYXRtdWxsUm9tQ3VydmUzOld0ZSxDaW5lb25Ub25lTWFwcGluZzozLENpcmNsZUJ1ZmZlckdlb21ldHJ5OkN0ZSxDaXJjbGVHZW9tZXRyeTpDdGUsQ2xhbXBUb0VkZ2VXcmFwcGluZzpsMnQsQ2xvY2s6aGllLENvbG9yOiQ1dCxDb2xvcktleWZyYW1lVHJhY2s6ZG5lLENvbXByZXNzZWRUZXh0dXJlOkV0ZSxDb21wcmVzc2VkVGV4dHVyZUxvYWRlcjpjbGFzcyBleHRlbmRzIFNuZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPVtdLGE9bmV3IEV0ZSxzPW5ldyBFbmUodGhpcy5tYW5hZ2VyKTtzLnNldFBhdGgodGhpcy5wYXRoKSxzLnNldFJlc3BvbnNlVHlwZSgiYXJyYXlidWZmZXIiKSxzLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxzLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyk7bGV0IGw9MDtmdW5jdGlvbiBjKGMpe3MubG9hZCh0W2NdLChmdW5jdGlvbih0KXtjb25zdCBuPXIucGFyc2UodCwhMCk7b1tjXT17d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsZm9ybWF0Om4uZm9ybWF0LG1pcG1hcHM6bi5taXBtYXBzfSxsKz0xLDY9PT1sJiYoMT09PW4ubWlwbWFwQ291bnQmJihhLm1pbkZpbHRlcj1wMnQpLGEuaW1hZ2U9byxhLmZvcm1hdD1uLmZvcm1hdCxhLm5lZWRzVXBkYXRlPSEwLGUmJmUoYSkpfSksbixpKX1pZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSljKGUpO2Vsc2Ugcy5sb2FkKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IG49ci5wYXJzZSh0LCEwKTtpZihuLmlzQ3ViZW1hcCl7Y29uc3QgdD1uLm1pcG1hcHMubGVuZ3RoL24ubWlwbWFwQ291bnQ7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7b1tlXT17bWlwbWFwczpbXX07Zm9yKGxldCB0PTA7dDxuLm1pcG1hcENvdW50O3QrKylvW2VdLm1pcG1hcHMucHVzaChuLm1pcG1hcHNbZSpuLm1pcG1hcENvdW50K3RdKSxvW2VdLmZvcm1hdD1uLmZvcm1hdCxvW2VdLndpZHRoPW4ud2lkdGgsb1tlXS5oZWlnaHQ9bi5oZWlnaHR9YS5pbWFnZT1vfWVsc2UgYS5pbWFnZS53aWR0aD1uLndpZHRoLGEuaW1hZ2UuaGVpZ2h0PW4uaGVpZ2h0LGEubWlwbWFwcz1uLm1pcG1hcHM7MT09PW4ubWlwbWFwQ291bnQmJihhLm1pbkZpbHRlcj1wMnQpLGEuZm9ybWF0PW4uZm9ybWF0LGEubmVlZHNVcGRhdGU9ITAsZSYmZShhKX0pLG4saSk7cmV0dXJuIGF9fSxDb25lQnVmZmVyR2VvbWV0cnk6a3RlLENvbmVHZW9tZXRyeTprdGUsQ3ViZUNhbWVyYTpfNnQsQ3ViZVJlZmxlY3Rpb25NYXBwaW5nOmUydCxDdWJlUmVmcmFjdGlvbk1hcHBpbmc6bjJ0LEN1YmVUZXh0dXJlOnk2dCxDdWJlVGV4dHVyZUxvYWRlcjpDbmUsQ3ViZVVWUmVmbGVjdGlvbk1hcHBpbmc6bzJ0LEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nOmEydCxDdWJpY0JlemllckN1cnZlOiR0ZSxDdWJpY0JlemllckN1cnZlMzpLdGUsQ3ViaWNJbnRlcnBvbGFudDpzbmUsQ3VsbEZhY2VCYWNrOjEsQ3VsbEZhY2VGcm9udDoyLEN1bGxGYWNlRnJvbnRCYWNrOjMsQ3VsbEZhY2VOb25lOjAsQ3VydmU6RHRlLEN1cnZlUGF0aDppZWUsQ3VzdG9tQmxlbmRpbmc6NSxDdXN0b21Ub25lTWFwcGluZzo1LEN5bGluZGVyQnVmZmVyR2VvbWV0cnk6QXRlLEN5bGluZGVyR2VvbWV0cnk6QXRlLEN5bGluZHJpY2FsOmNsYXNze2NvbnN0cnVjdG9yKHQ9MSxlPTAsbj0wKXtyZXR1cm4gdGhpcy5yYWRpdXM9dCx0aGlzLnRoZXRhPWUsdGhpcy55PW4sdGhpc31zZXQodCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMudGhldGE9ZSx0aGlzLnk9bix0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXMudGhldGE9dC50aGV0YSx0aGlzLnk9dC55LHRoaXN9c2V0RnJvbVZlY3RvcjModCl7cmV0dXJuIHRoaXMuc2V0RnJvbUNhcnRlc2lhbkNvb3Jkcyh0LngsdC55LHQueil9c2V0RnJvbUNhcnRlc2lhbkNvb3Jkcyh0LGUsbil7cmV0dXJuIHRoaXMucmFkaXVzPU1hdGguc3FydCh0KnQrbipuKSx0aGlzLnRoZXRhPU1hdGguYXRhbjIodCxuKSx0aGlzLnk9ZSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX0sRGF0YVRleHR1cmU6JDd0LERhdGFUZXh0dXJlMkRBcnJheTpkOXQsRGF0YVRleHR1cmUzRDp5OXQsRGF0YVRleHR1cmVMb2FkZXI6QW5lLERhdGFVdGlsczpjbGFzc3tzdGF0aWMgdG9IYWxmRmxvYXQodCl7dD42NTUwNCYmKGNvbnNvbGUud2FybigiVEhSRUUuRGF0YVV0aWxzLnRvSGFsZkZsb2F0KCk6IHZhbHVlIGV4Y2VlZHMgNjU1MDQuIiksdD02NTUwNCksX3JlWzBdPXQ7Y29uc3QgZT15cmVbMF07bGV0IG49ZT4+MTYmMzI3NjgsaT1lPj4xMiYyMDQ3O2NvbnN0IHI9ZT4+MjMmMjU1O3JldHVybiByPDEwMz9uOnI+MTQyPyhufD0zMTc0NCxufD0oMjU1PT1yPzA6MSkmJjgzODg2MDcmZSxuKTpyPDExMz8oaXw9MjA0OCxufD0oaT4+MTE0LXIpKyhpPj4xMTMtciYxKSxuKToobnw9ci0xMTI8PDEwfGk+PjEsbis9MSZpLG4pfX0sRGVjcmVtZW50U3RlbmNpbE9wOjc2ODMsRGVjcmVtZW50V3JhcFN0ZW5jaWxPcDozNDA1NixEZWZhdWx0TG9hZGluZ01hbmFnZXI6d25lLERlcHRoRm9ybWF0OlMydCxEZXB0aFN0ZW5jaWxGb3JtYXQ6TTJ0LERlcHRoVGV4dHVyZTpkN3QsRGlyZWN0aW9uYWxMaWdodDpHbmUsRGlyZWN0aW9uYWxMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIGw0dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9bix2b2lkIDA9PT1lJiYoZT0xKTtsZXQgaT1uZXcgajR0O2kuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dChbLWUsZSwwLGUsZSwwLGUsLWUsMCwtZSwtZSwwLC1lLGUsMF0sMykpO2NvbnN0IHI9bmV3IG90ZSh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmxpZ2h0UGxhbmU9bmV3IGh0ZShpLHIpLHRoaXMuYWRkKHRoaXMubGlnaHRQbGFuZSksaT1uZXcgajR0LGkuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dChbMCwwLDAsMCwwLDFdLDMpKSx0aGlzLnRhcmdldExpbmU9bmV3IGh0ZShpLHIpLHRoaXMuYWRkKHRoaXMudGFyZ2V0TGluZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5saWdodFBsYW5lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuZGlzcG9zZSgpLHRoaXMudGFyZ2V0TGluZS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmRpc3Bvc2UoKX11cGRhdGUoKXtvcmUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQubWF0cml4V29ybGQpLGFyZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLHNyZS5zdWJWZWN0b3JzKGFyZSxvcmUpLHRoaXMubGlnaHRQbGFuZS5sb29rQXQoYXJlKSx2b2lkIDAhPT10aGlzLmNvbG9yPyh0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpLHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcikpOih0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSksdGhpcy50YXJnZXRMaW5lLmxvb2tBdChhcmUpLHRoaXMudGFyZ2V0TGluZS5zY2FsZS56PXNyZS5sZW5ndGgoKX19LERpc2NyZXRlSW50ZXJwb2xhbnQ6Y25lLERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5Okx0ZSxEb2RlY2FoZWRyb25HZW9tZXRyeTpMdGUsRG91YmxlU2lkZToyLERzdEFscGhhRmFjdG9yOjIwNixEc3RDb2xvckZhY3RvcjoyMDgsRHluYW1pY0J1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbiBFcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5EeW5hbWljQnVmZmVyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKCkuc2V0VXNhZ2UoIFRIUkVFLkR5bmFtaWNEcmF3VXNhZ2UgKSBpbnN0ZWFkLiIpLG5ldyBFNHQodCxlKS5zZXRVc2FnZShsNXQpfSxEeW5hbWljQ29weVVzYWdlOjM1MDUwLER5bmFtaWNEcmF3VXNhZ2U6bDV0LER5bmFtaWNSZWFkVXNhZ2U6MzUwNDksRWRnZXNHZW9tZXRyeTp6dGUsRWRnZXNIZWxwZXI6ZnVuY3Rpb24gVHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRWRnZXNIZWxwZXIgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkVkZ2VzR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgZnRlKG5ldyB6dGUodC5nZW9tZXRyeSksbmV3IG90ZSh7Y29sb3I6dm9pZCAwIT09ZT9lOjE2Nzc3MjE1fSkpfSxFbGxpcHNlQ3VydmU6QnRlLEVxdWFsRGVwdGg6NCxFcXVhbFN0ZW5jaWxGdW5jOjUxNCxFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZzppMnQsRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc6cjJ0LEV1bGVyOlkzdCxFdmVudERpc3BhdGNoZXI6aDV0LEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTpSZWUsRXh0cnVkZUdlb21ldHJ5OlJlZSxGYWNlQ29sb3JzOjEsRmlsZUxvYWRlcjpFbmUsRmxhdFNoYWRpbmc6MSxGbG9hdDE2QnVmZmVyQXR0cmlidXRlOk40dCxGbG9hdDMyQXR0cmlidXRlOmZ1bmN0aW9uIENyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkZsb2F0MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5GbG9hdDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgUjR0KHQsZSl9LEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU6UjR0LEZsb2F0NjRBdHRyaWJ1dGU6ZnVuY3Rpb24gQXJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRmxvYXQ2NEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBPNHQodCxlKX0sRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZTpPNHQsRmxvYXRUeXBlOnYydCxGb2c6eTd0LEZvZ0V4cDI6Xzd0LEZvbnQ6ZnVuY3Rpb24ga3JlKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRm9udCBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL2xvYWRlcnMvRm9udExvYWRlci5qcyIpfSxGb250TG9hZGVyOmZ1bmN0aW9uIFByZSgpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkZvbnRMb2FkZXIgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0ZvbnRMb2FkZXIuanMiKX0sRnJhbWVidWZmZXJUZXh0dXJlOk10ZSxGcm9udFNpZGU6MCxGcnVzdHVtOlQ2dCxHTEJ1ZmZlckF0dHJpYnV0ZTpGaWUsR0xTTDE6IjEwMCIsR0xTTDM6YzV0LEdyZWF0ZXJEZXB0aDo2LEdyZWF0ZXJFcXVhbERlcHRoOjUsR3JlYXRlckVxdWFsU3RlbmNpbEZ1bmM6NTE4LEdyZWF0ZXJTdGVuY2lsRnVuYzo1MTYsR3JpZEhlbHBlcjpycmUsR3JvdXA6Yzd0LEhhbGZGbG9hdFR5cGU6YjJ0LEhlbWlzcGhlcmVMaWdodDpMbmUsSGVtaXNwaGVyZUxpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMgbDR0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5jb2xvcj1uO2NvbnN0IGk9bmV3IEJlZShlKTtpLnJvdGF0ZVkoLjUqTWF0aC5QSSksdGhpcy5tYXRlcmlhbD1uZXcgdzR0KHt3aXJlZnJhbWU6ITAsZm9nOiExLHRvbmVNYXBwZWQ6ITF9KSx2b2lkIDA9PT10aGlzLmNvbG9yJiYodGhpcy5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9ITApO2NvbnN0IHI9aS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIiksbz1uZXcgRmxvYXQzMkFycmF5KDMqci5jb3VudCk7aS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgRTR0KG8sMykpLHRoaXMuYWRkKG5ldyBzNnQoaSx0aGlzLm1hdGVyaWFsKSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5jaGlsZHJlblswXS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5jaGlsZHJlblswXS5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7Y29uc3QgdD10aGlzLmNoaWxkcmVuWzBdO2lmKHZvaWQgMCE9PXRoaXMuY29sb3IpdGhpcy5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik7ZWxzZXtjb25zdCBlPXQuZ2VvbWV0cnkuZ2V0QXR0cmlidXRlKCJjb2xvciIpO25yZS5jb3B5KHRoaXMubGlnaHQuY29sb3IpLGlyZS5jb3B5KHRoaXMubGlnaHQuZ3JvdW5kQ29sb3IpO2ZvcihsZXQgdD0wLG49ZS5jb3VudDt0PG47dCsrKXtjb25zdCBpPXQ8bi8yP25yZTppcmU7ZS5zZXRYWVoodCxpLnIsaS5nLGkuYil9ZS5uZWVkc1VwZGF0ZT0hMH10Lmxvb2tBdChlcmUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQubWF0cml4V29ybGQpLm5lZ2F0ZSgpKX19LEhlbWlzcGhlcmVMaWdodFByb2JlOmFpZSxJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnplZSxJY29zYWhlZHJvbkdlb21ldHJ5OnplZSxJbWFnZUJpdG1hcExvYWRlcjpuaWUsSW1hZ2VMb2FkZXI6VG5lLEltYWdlVXRpbHM6WjV0LEltbWVkaWF0ZVJlbmRlck9iamVjdDpmdW5jdGlvbiBMcmUoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbW1lZGlhdGVSZW5kZXJPYmplY3QgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSW5jcmVtZW50U3RlbmNpbE9wOjc2ODIsSW5jcmVtZW50V3JhcFN0ZW5jaWxPcDozNDA1NSxJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6UTd0LEluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5OlpuZSxJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcjpIaWUsSW5zdGFuY2VkTWVzaDpydGUsSW50MTZBdHRyaWJ1dGU6ZnVuY3Rpb24gSXJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQxNkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IGs0dCh0LGUpfSxJbnQxNkJ1ZmZlckF0dHJpYnV0ZTprNHQsSW50MzJBdHRyaWJ1dGU6ZnVuY3Rpb24gTnJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IEw0dCh0LGUpfSxJbnQzMkJ1ZmZlckF0dHJpYnV0ZTpMNHQsSW50OEF0dHJpYnV0ZTpmdW5jdGlvbiBScmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnQ4QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IFQ0dCh0LGUpfSxJbnQ4QnVmZmVyQXR0cmlidXRlOlQ0dCxJbnRUeXBlOjEwMTMsSW50ZXJsZWF2ZWRCdWZmZXI6Yjd0LEludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlOnc3dCxJbnRlcnBvbGFudDphbmUsSW50ZXJwb2xhdGVEaXNjcmV0ZTpLMnQsSW50ZXJwb2xhdGVMaW5lYXI6WjJ0LEludGVycG9sYXRlU21vb3RoOkoydCxJbnZlcnRTdGVuY2lsT3A6NTM4NixKU09OTG9hZGVyOmZ1bmN0aW9uIE9yZSgpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkpTT05Mb2FkZXIgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sS2VlcFN0ZW5jaWxPcDphNXQsS2V5ZnJhbWVUcmFjazp1bmUsTE9EOlY3dCxMYXRoZUJ1ZmZlckdlb21ldHJ5OkRlZSxMYXRoZUdlb21ldHJ5OkRlZSxMYXllcnM6WDN0LExlbnNGbGFyZTpmdW5jdGlvbiB6cmUoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5MZW5zRmxhcmUgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS9vYmplY3RzL0xlbnNmbGFyZS5qcyIpfSxMZXNzRGVwdGg6MixMZXNzRXF1YWxEZXB0aDozLExlc3NFcXVhbFN0ZW5jaWxGdW5jOjUxNSxMZXNzU3RlbmNpbEZ1bmM6NTEzLExpZ2h0OlBuZSxMaWdodFByb2JlOlhuZSxMaW5lOmh0ZSxMaW5lMzpYaWUsTGluZUJhc2ljTWF0ZXJpYWw6b3RlLExpbmVDdXJ2ZTpadGUsTGluZUN1cnZlMzpKdGUsTGluZURhc2hlZE1hdGVyaWFsOmluZSxMaW5lTG9vcDptdGUsTGluZVBpZWNlczoxLExpbmVTZWdtZW50czpmdGUsTGluZVN0cmlwOjAsTGluZWFyRW5jb2Rpbmc6cjV0LExpbmVhckZpbHRlcjpwMnQsTGluZWFySW50ZXJwb2xhbnQ6bG5lLExpbmVhck1pcE1hcExpbmVhckZpbHRlcjoxMDA4LExpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXI6MTAwNyxMaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXI6bTJ0LExpbmVhck1pcG1hcE5lYXJlc3RGaWx0ZXI6ZjJ0LExpbmVhclRvbmVNYXBwaW5nOjEsTG9hZGVyOlNuZSxMb2FkZXJVdGlsczpLbmUsTG9hZGluZ01hbmFnZXI6eG5lLExvb3BPbmNlOjIyMDAsTG9vcFBpbmdQb25nOjIyMDIsTG9vcFJlcGVhdDoyMjAxLEx1bWluYW5jZUFscGhhRm9ybWF0OjEwMjUsTHVtaW5hbmNlRm9ybWF0OjEwMjQsTU9VU0U6WjB0LE1hdGVyaWFsOng0dCxNYXRlcmlhbExvYWRlcjokbmUsTWF0aDpTNXQsTWF0aFV0aWxzOlM1dCxNYXRyaXgzOkI1dCxNYXRyaXg0OkQzdCxNYXhFcXVhdGlvbjoxMDQsTWVzaDpzNnQsTWVzaEJhc2ljTWF0ZXJpYWw6dzR0LE1lc2hEZXB0aE1hdGVyaWFsOm43dCxNZXNoRGlzdGFuY2VNYXRlcmlhbDppN3QsTWVzaEZhY2VNYXRlcmlhbDpmdW5jdGlvbiBEcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWVzaEZhY2VNYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYW4gQXJyYXkgaW5zdGVhZC4iKSx0fSxNZXNoTGFtYmVydE1hdGVyaWFsOmVuZSxNZXNoTWF0Y2FwTWF0ZXJpYWw6bm5lLE1lc2hOb3JtYWxNYXRlcmlhbDp0bmUsTWVzaFBob25nTWF0ZXJpYWw6SmVlLE1lc2hQaHlzaWNhbE1hdGVyaWFsOlplZSxNZXNoU3RhbmRhcmRNYXRlcmlhbDpLZWUsTWVzaFRvb25NYXRlcmlhbDpRZWUsTWluRXF1YXRpb246MTAzLE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc6YzJ0LE1peE9wZXJhdGlvbjoxLE11bHRpTWF0ZXJpYWw6ZnVuY3Rpb24gQnJlKHQ9W10pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk11bHRpTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuIiksdC5pc011bHRpTWF0ZXJpYWw9ITAsdC5tYXRlcmlhbHM9dCx0LmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2xpY2UoKX0sdH0sTXVsdGlwbHlCbGVuZGluZzo0LE11bHRpcGx5T3BlcmF0aW9uOjAsTmVhcmVzdEZpbHRlcjp1MnQsTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlcjoxMDA1LE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyOjEwMDQsTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcjpkMnQsTmVhcmVzdE1pcG1hcE5lYXJlc3RGaWx0ZXI6aDJ0LE5ldmVyRGVwdGg6MCxOZXZlclN0ZW5jaWxGdW5jOjUxMixOb0JsZW5kaW5nOjAsTm9Db2xvcnM6MCxOb1RvbmVNYXBwaW5nOjAsTm9ybWFsQW5pbWF0aW9uQmxlbmRNb2RlOm41dCxOb3JtYWxCbGVuZGluZzoxLE5vdEVxdWFsRGVwdGg6NyxOb3RFcXVhbFN0ZW5jaWxGdW5jOjUxNyxOdW1iZXJLZXlmcmFtZVRyYWNrOnBuZSxPYmplY3QzRDpsNHQsT2JqZWN0TG9hZGVyOmNsYXNzIGV4dGVuZHMgU25le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89IiI9PT10aGlzLnBhdGg/S25lLmV4dHJhY3RVcmxCYXNlKHQpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8bztjb25zdCBhPW5ldyBFbmUodGhpcy5tYW5hZ2VyKTthLnNldFBhdGgodGhpcy5wYXRoKSxhLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxhLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyksYS5sb2FkKHQsKGZ1bmN0aW9uKG4pe2xldCBvPW51bGw7dHJ5e289SlNPTi5wYXJzZShuKX1jYXRjaChlKXtyZXR1cm4gdm9pZCAwIT09aSYmaShlKSx2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFOk9iamVjdExvYWRlcjogQ2FuJ3QgcGFyc2UgIit0KyIuIixlLm1lc3NhZ2UpfWNvbnN0IGE9by5tZXRhZGF0YTt2b2lkIDAhPT1hJiZ2b2lkIDAhPT1hLnR5cGUmJiJnZW9tZXRyeSIhPT1hLnR5cGUudG9Mb3dlckNhc2UoKT9yLnBhcnNlKG8sZSk6Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0TG9hZGVyOiBDYW4ndCBsb2FkICIrdCl9KSxuLGkpfWFzeW5jIGxvYWRBc3luYyh0LGUpe2NvbnN0IG49IiI9PT10aGlzLnBhdGg/S25lLmV4dHJhY3RVcmxCYXNlKHQpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8bjtjb25zdCBpPW5ldyBFbmUodGhpcy5tYW5hZ2VyKTtpLnNldFBhdGgodGhpcy5wYXRoKSxpLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxpLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyk7Y29uc3Qgcj1hd2FpdCBpLmxvYWRBc3luYyh0LGUpLG89SlNPTi5wYXJzZShyKSxhPW8ubWV0YWRhdGE7aWYodm9pZCAwPT09YXx8dm9pZCAwPT09YS50eXBlfHwiZ2VvbWV0cnkiPT09YS50eXBlLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5PYmplY3RMb2FkZXI6IENhbid0IGxvYWQgIit0KTtyZXR1cm4gYXdhaXQgdGhpcy5wYXJzZUFzeW5jKG8pfXBhcnNlKHQsZSl7Y29uc3Qgbj10aGlzLnBhcnNlQW5pbWF0aW9ucyh0LmFuaW1hdGlvbnMpLGk9dGhpcy5wYXJzZVNoYXBlcyh0LnNoYXBlcykscj10aGlzLnBhcnNlR2VvbWV0cmllcyh0Lmdlb21ldHJpZXMsaSksbz10aGlzLnBhcnNlSW1hZ2VzKHQuaW1hZ2VzLChmdW5jdGlvbigpe3ZvaWQgMCE9PWUmJmUobCl9KSksYT10aGlzLnBhcnNlVGV4dHVyZXModC50ZXh0dXJlcyxvKSxzPXRoaXMucGFyc2VNYXRlcmlhbHModC5tYXRlcmlhbHMsYSksbD10aGlzLnBhcnNlT2JqZWN0KHQub2JqZWN0LHIscyxhLG4pLGM9dGhpcy5wYXJzZVNrZWxldG9ucyh0LnNrZWxldG9ucyxsKTtpZih0aGlzLmJpbmRTa2VsZXRvbnMobCxjKSx2b2lkIDAhPT1lKXtsZXQgdD0hMTtmb3IoY29uc3QgZSBpbiBvKWlmKG9bZV1pbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpe3Q9ITA7YnJlYWt9ITE9PT10JiZlKGwpfXJldHVybiBsfWFzeW5jIHBhcnNlQXN5bmModCl7Y29uc3QgZT10aGlzLnBhcnNlQW5pbWF0aW9ucyh0LmFuaW1hdGlvbnMpLG49dGhpcy5wYXJzZVNoYXBlcyh0LnNoYXBlcyksaT10aGlzLnBhcnNlR2VvbWV0cmllcyh0Lmdlb21ldHJpZXMsbikscj1hd2FpdCB0aGlzLnBhcnNlSW1hZ2VzQXN5bmModC5pbWFnZXMpLG89dGhpcy5wYXJzZVRleHR1cmVzKHQudGV4dHVyZXMsciksYT10aGlzLnBhcnNlTWF0ZXJpYWxzKHQubWF0ZXJpYWxzLG8pLHM9dGhpcy5wYXJzZU9iamVjdCh0Lm9iamVjdCxpLGEsbyxlKSxsPXRoaXMucGFyc2VTa2VsZXRvbnModC5za2VsZXRvbnMscyk7cmV0dXJuIHRoaXMuYmluZFNrZWxldG9ucyhzLGwpLHN9cGFyc2VTaGFwZXModCl7Y29uc3QgZT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT0obmV3IG9lZSkuZnJvbUpTT04odFtuXSk7ZVtpLnV1aWRdPWl9cmV0dXJuIGV9cGFyc2VTa2VsZXRvbnModCxlKXtjb25zdCBuPXt9LGk9e307aWYoZS50cmF2ZXJzZSgoZnVuY3Rpb24odCl7dC5pc0JvbmUmJihpW3QudXVpZF09dCl9KSksdm9pZCAwIT09dClmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9KG5ldyBKN3QpLmZyb21KU09OKHRbZV0saSk7bltyLnV1aWRdPXJ9cmV0dXJuIG59cGFyc2VHZW9tZXRyaWVzKHQsZSl7Y29uc3Qgbj17fTtpZih2b2lkIDAhPT10KXtjb25zdCBpPW5ldyBKbmU7Zm9yKGxldCByPTAsbz10Lmxlbmd0aDtyPG87cisrKXtsZXQgbztjb25zdCBhPXRbcl07c3dpdGNoKGEudHlwZSl7Y2FzZSJCdWZmZXJHZW9tZXRyeSI6Y2FzZSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSI6bz1pLnBhcnNlKGEpO2JyZWFrO2Nhc2UiR2VvbWV0cnkiOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdExvYWRlcjogVGhlIGxlZ2FjeSBHZW9tZXRyeSB0eXBlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIik7YnJlYWs7ZGVmYXVsdDphLnR5cGUgaW4gWGVlP289WGVlW2EudHlwZV0uZnJvbUpTT04oYSxlKTpjb25zb2xlLndhcm4oYFRIUkVFLk9iamVjdExvYWRlcjogVW5zdXBwb3J0ZWQgZ2VvbWV0cnkgdHlwZSAiJHthLnR5cGV9ImApfW8udXVpZD1hLnV1aWQsdm9pZCAwIT09YS5uYW1lJiYoby5uYW1lPWEubmFtZSksITA9PT1vLmlzQnVmZmVyR2VvbWV0cnkmJnZvaWQgMCE9PWEudXNlckRhdGEmJihvLnVzZXJEYXRhPWEudXNlckRhdGEpLG5bYS51dWlkXT1vfX1yZXR1cm4gbn1wYXJzZU1hdGVyaWFscyh0LGUpe2NvbnN0IG49e30saT17fTtpZih2b2lkIDAhPT10KXtjb25zdCByPW5ldyAkbmU7ci5zZXRUZXh0dXJlcyhlKTtmb3IobGV0IGU9MCxvPXQubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dFtlXTtpZigiTXVsdGlNYXRlcmlhbCI9PT1vLnR5cGUpe2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTxvLm1hdGVyaWFscy5sZW5ndGg7ZSsrKXtjb25zdCBpPW8ubWF0ZXJpYWxzW2VdO3ZvaWQgMD09PW5baS51dWlkXSYmKG5baS51dWlkXT1yLnBhcnNlKGkpKSx0LnB1c2gobltpLnV1aWRdKX1pW28udXVpZF09dH1lbHNlIHZvaWQgMD09PW5bby51dWlkXSYmKG5bby51dWlkXT1yLnBhcnNlKG8pKSxpW28udXVpZF09bltvLnV1aWRdfX1yZXR1cm4gaX1wYXJzZUFuaW1hdGlvbnModCl7Y29uc3QgZT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPXluZS5wYXJzZSh0W25dKTtlW2kudXVpZF09aX1yZXR1cm4gZX1wYXJzZUltYWdlcyh0LGUpe2NvbnN0IG49dGhpcyxpPXt9O2xldCByO2Z1bmN0aW9uIG8odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPXQ7cmV0dXJuKGZ1bmN0aW9uIGkodCl7cmV0dXJuIG4ubWFuYWdlci5pdGVtU3RhcnQodCksci5sb2FkKHQsKGZ1bmN0aW9uKCl7bi5tYW5hZ2VyLml0ZW1FbmQodCl9KSx2b2lkIDAsKGZ1bmN0aW9uKCl7bi5tYW5hZ2VyLml0ZW1FcnJvcih0KSxuLm1hbmFnZXIuaXRlbUVuZCh0KX0pKX0pKC9eKFwvXC8pfChbYS16XSs6KFwvXC8pPykvaS50ZXN0KGUpP2U6bi5yZXNvdXJjZVBhdGgrZSl9cmV0dXJuIHQuZGF0YT97ZGF0YTpWNXQodC50eXBlLHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9Om51bGx9aWYodm9pZCAwIT09dCYmdC5sZW5ndGg+MCl7Y29uc3Qgbj1uZXcgeG5lKGUpO3I9bmV3IFRuZShuKSxyLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLHI9bi51cmw7aWYoQXJyYXkuaXNBcnJheShyKSl7aVtuLnV1aWRdPVtdO2ZvcihsZXQgdD0wLGU9ci5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vKHJbdF0pO251bGwhPT1lJiYoZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQ/aVtuLnV1aWRdLnB1c2goZSk6aVtuLnV1aWRdLnB1c2gobmV3ICQ3dChlLmRhdGEsZS53aWR0aCxlLmhlaWdodCkpKX19ZWxzZXtjb25zdCB0PW8obi51cmwpO251bGwhPT10JiYoaVtuLnV1aWRdPXQpfX19cmV0dXJuIGl9YXN5bmMgcGFyc2VJbWFnZXNBc3luYyh0KXtjb25zdCBlPXRoaXMsbj17fTtsZXQgaTthc3luYyBmdW5jdGlvbiByKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3Qgbj10LHI9L14oXC9cLyl8KFthLXpdKzooXC9cLyk/KS9pLnRlc3Qobik/bjplLnJlc291cmNlUGF0aCtuO3JldHVybiBhd2FpdCBpLmxvYWRBc3luYyhyKX1yZXR1cm4gdC5kYXRhP3tkYXRhOlY1dCh0LnR5cGUsdC5kYXRhKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH06bnVsbH1pZih2b2lkIDAhPT10JiZ0Lmxlbmd0aD4wKXtpPW5ldyBUbmUodGhpcy5tYW5hZ2VyKSxpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT10W2VdLG89aS51cmw7aWYoQXJyYXkuaXNBcnJheShvKSl7bltpLnV1aWRdPVtdO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vW3RdLGE9YXdhaXQgcihlKTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50P25baS51dWlkXS5wdXNoKGEpOm5baS51dWlkXS5wdXNoKG5ldyAkN3QoYS5kYXRhLGEud2lkdGgsYS5oZWlnaHQpKSl9fWVsc2V7Y29uc3QgdD1hd2FpdCByKGkudXJsKTtudWxsIT09dCYmKG5baS51dWlkXT10KX19fXJldHVybiBufXBhcnNlVGV4dHVyZXModCxlKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6KGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlVGV4dHVyZTogQ29uc3RhbnQgc2hvdWxkIGJlIGluIG51bWVyaWMgZm9ybS4iLHQpLGVbdF0pfWNvbnN0IGk9e307aWYodm9pZCAwIT09dClmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXTtsZXQgYTt2b2lkIDA9PT1vLmltYWdlJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogTm8gImltYWdlIiBzcGVjaWZpZWQgZm9yJyxvLnV1aWQpLHZvaWQgMD09PWVbby5pbWFnZV0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgaW1hZ2UiLG8uaW1hZ2UpO2NvbnN0IHM9ZVtvLmltYWdlXTtBcnJheS5pc0FycmF5KHMpPyhhPW5ldyB5NnQocyksNj09PXMubGVuZ3RoJiYoYS5uZWVkc1VwZGF0ZT0hMCkpOihhPXMmJnMuZGF0YT9uZXcgJDd0KHMuZGF0YSxzLndpZHRoLHMuaGVpZ2h0KTpuZXcgUTV0KHMpLHMmJihhLm5lZWRzVXBkYXRlPSEwKSksYS51dWlkPW8udXVpZCx2b2lkIDAhPT1vLm5hbWUmJihhLm5hbWU9by5uYW1lKSx2b2lkIDAhPT1vLm1hcHBpbmcmJihhLm1hcHBpbmc9bihvLm1hcHBpbmcsUW5lKSksdm9pZCAwIT09by5vZmZzZXQmJmEub2Zmc2V0LmZyb21BcnJheShvLm9mZnNldCksdm9pZCAwIT09by5yZXBlYXQmJmEucmVwZWF0LmZyb21BcnJheShvLnJlcGVhdCksdm9pZCAwIT09by5jZW50ZXImJmEuY2VudGVyLmZyb21BcnJheShvLmNlbnRlciksdm9pZCAwIT09by5yb3RhdGlvbiYmKGEucm90YXRpb249by5yb3RhdGlvbiksdm9pZCAwIT09by53cmFwJiYoYS53cmFwUz1uKG8ud3JhcFswXSx0aWUpLGEud3JhcFQ9bihvLndyYXBbMV0sdGllKSksdm9pZCAwIT09by5mb3JtYXQmJihhLmZvcm1hdD1vLmZvcm1hdCksdm9pZCAwIT09by50eXBlJiYoYS50eXBlPW8udHlwZSksdm9pZCAwIT09by5lbmNvZGluZyYmKGEuZW5jb2Rpbmc9by5lbmNvZGluZyksdm9pZCAwIT09by5taW5GaWx0ZXImJihhLm1pbkZpbHRlcj1uKG8ubWluRmlsdGVyLGVpZSkpLHZvaWQgMCE9PW8ubWFnRmlsdGVyJiYoYS5tYWdGaWx0ZXI9bihvLm1hZ0ZpbHRlcixlaWUpKSx2b2lkIDAhPT1vLmFuaXNvdHJvcHkmJihhLmFuaXNvdHJvcHk9by5hbmlzb3Ryb3B5KSx2b2lkIDAhPT1vLmZsaXBZJiYoYS5mbGlwWT1vLmZsaXBZKSx2b2lkIDAhPT1vLnByZW11bHRpcGx5QWxwaGEmJihhLnByZW11bHRpcGx5QWxwaGE9by5wcmVtdWx0aXBseUFscGhhKSx2b2lkIDAhPT1vLnVucGFja0FsaWdubWVudCYmKGEudW5wYWNrQWxpZ25tZW50PW8udW5wYWNrQWxpZ25tZW50KSx2b2lkIDAhPT1vLnVzZXJEYXRhJiYoYS51c2VyRGF0YT1vLnVzZXJEYXRhKSxpW28udXVpZF09YX1yZXR1cm4gaX1wYXJzZU9iamVjdCh0LGUsbixpLHIpe2xldCBvLGEscztmdW5jdGlvbiBsKHQpe3JldHVybiB2b2lkIDA9PT1lW3RdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIGdlb21ldHJ5Iix0KSxlW3RdfWZ1bmN0aW9uIGModCl7aWYodm9pZCAwIT09dCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgZT1bXTtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2NvbnN0IHI9dFtpXTt2b2lkIDA9PT1uW3JdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsIixyKSxlLnB1c2gobltyXSl9cmV0dXJuIGV9cmV0dXJuIHZvaWQgMD09PW5bdF0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgbWF0ZXJpYWwiLHQpLG5bdF19fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHZvaWQgMD09PWlbdF0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgdGV4dHVyZSIsdCksaVt0XX1zd2l0Y2godC50eXBlKXtjYXNlIlNjZW5lIjpvPW5ldyB2N3Qsdm9pZCAwIT09dC5iYWNrZ3JvdW5kJiYoby5iYWNrZ3JvdW5kPU51bWJlci5pc0ludGVnZXIodC5iYWNrZ3JvdW5kKT9uZXcgJDV0KHQuYmFja2dyb3VuZCk6dSh0LmJhY2tncm91bmQpKSx2b2lkIDAhPT10LmVudmlyb25tZW50JiYoby5lbnZpcm9ubWVudD11KHQuZW52aXJvbm1lbnQpKSx2b2lkIDAhPT10LmZvZyYmKCJGb2ciPT09dC5mb2cudHlwZT9vLmZvZz1uZXcgeTd0KHQuZm9nLmNvbG9yLHQuZm9nLm5lYXIsdC5mb2cuZmFyKToiRm9nRXhwMiI9PT10LmZvZy50eXBlJiYoby5mb2c9bmV3IF83dCh0LmZvZy5jb2xvcix0LmZvZy5kZW5zaXR5KSkpO2JyZWFrO2Nhc2UiUGVyc3BlY3RpdmVDYW1lcmEiOm89bmV3IG02dCh0LmZvdix0LmFzcGVjdCx0Lm5lYXIsdC5mYXIpLHZvaWQgMCE9PXQuZm9jdXMmJihvLmZvY3VzPXQuZm9jdXMpLHZvaWQgMCE9PXQuem9vbSYmKG8uem9vbT10Lnpvb20pLHZvaWQgMCE9PXQuZmlsbUdhdWdlJiYoby5maWxtR2F1Z2U9dC5maWxtR2F1Z2UpLHZvaWQgMCE9PXQuZmlsbU9mZnNldCYmKG8uZmlsbU9mZnNldD10LmZpbG1PZmZzZXQpLHZvaWQgMCE9PXQudmlldyYmKG8udmlldz1PYmplY3QuYXNzaWduKHt9LHQudmlldykpO2JyZWFrO2Nhc2UiT3J0aG9ncmFwaGljQ2FtZXJhIjpvPW5ldyBINnQodC5sZWZ0LHQucmlnaHQsdC50b3AsdC5ib3R0b20sdC5uZWFyLHQuZmFyKSx2b2lkIDAhPT10Lnpvb20mJihvLnpvb209dC56b29tKSx2b2lkIDAhPT10LnZpZXcmJihvLnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpKTticmVhaztjYXNlIkFtYmllbnRMaWdodCI6bz1uZXcgV25lKHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6bz1uZXcgR25lKHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bz1uZXcgVW5lKHQuY29sb3IsdC5pbnRlbnNpdHksdC5kaXN0YW5jZSx0LmRlY2F5KTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOm89bmV3IHFuZSh0LmNvbG9yLHQuaW50ZW5zaXR5LHQud2lkdGgsdC5oZWlnaHQpO2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpvPW5ldyBEbmUodC5jb2xvcix0LmludGVuc2l0eSx0LmRpc3RhbmNlLHQuYW5nbGUsdC5wZW51bWJyYSx0LmRlY2F5KTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6bz1uZXcgTG5lKHQuY29sb3IsdC5ncm91bmRDb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJMaWdodFByb2JlIjpvPShuZXcgWG5lKS5mcm9tSlNPTih0KTticmVhaztjYXNlIlNraW5uZWRNZXNoIjphPWwodC5nZW9tZXRyeSkscz1jKHQubWF0ZXJpYWwpLG89bmV3IFk3dChhLHMpLHZvaWQgMCE9PXQuYmluZE1vZGUmJihvLmJpbmRNb2RlPXQuYmluZE1vZGUpLHZvaWQgMCE9PXQuYmluZE1hdHJpeCYmby5iaW5kTWF0cml4LmZyb21BcnJheSh0LmJpbmRNYXRyaXgpLHZvaWQgMCE9PXQuc2tlbGV0b24mJihvLnNrZWxldG9uPXQuc2tlbGV0b24pO2JyZWFrO2Nhc2UiTWVzaCI6YT1sKHQuZ2VvbWV0cnkpLHM9Yyh0Lm1hdGVyaWFsKSxvPW5ldyBzNnQoYSxzKTticmVhaztjYXNlIkluc3RhbmNlZE1lc2giOmE9bCh0Lmdlb21ldHJ5KSxzPWModC5tYXRlcmlhbCk7Y29uc3QgZT10Lmluc3RhbmNlTWF0cml4LG49dC5pbnN0YW5jZUNvbG9yO289bmV3IHJ0ZShhLHMsdC5jb3VudCksby5pbnN0YW5jZU1hdHJpeD1uZXcgUTd0KG5ldyBGbG9hdDMyQXJyYXkoZS5hcnJheSksMTYpLHZvaWQgMCE9PW4mJihvLmluc3RhbmNlQ29sb3I9bmV3IFE3dChuZXcgRmxvYXQzMkFycmF5KG4uYXJyYXkpLG4uaXRlbVNpemUpKTticmVhaztjYXNlIkxPRCI6bz1uZXcgVjd0O2JyZWFrO2Nhc2UiTGluZSI6bz1uZXcgaHRlKGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJMaW5lTG9vcCI6bz1uZXcgbXRlKGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJMaW5lU2VnbWVudHMiOm89bmV3IGZ0ZShsKHQuZ2VvbWV0cnkpLGModC5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UiUG9pbnRDbG91ZCI6Y2FzZSJQb2ludHMiOm89bmV3IHh0ZShsKHQuZ2VvbWV0cnkpLGModC5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UiU3ByaXRlIjpvPW5ldyBEN3QoYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJHcm91cCI6bz1uZXcgYzd0O2JyZWFrO2Nhc2UiQm9uZSI6bz1uZXcgWDd0O2JyZWFrO2RlZmF1bHQ6bz1uZXcgbDR0fWlmKG8udXVpZD10LnV1aWQsdm9pZCAwIT09dC5uYW1lJiYoby5uYW1lPXQubmFtZSksdm9pZCAwIT09dC5tYXRyaXg/KG8ubWF0cml4LmZyb21BcnJheSh0Lm1hdHJpeCksdm9pZCAwIT09dC5tYXRyaXhBdXRvVXBkYXRlJiYoby5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSksby5tYXRyaXhBdXRvVXBkYXRlJiZvLm1hdHJpeC5kZWNvbXBvc2Uoby5wb3NpdGlvbixvLnF1YXRlcm5pb24sby5zY2FsZSkpOih2b2lkIDAhPT10LnBvc2l0aW9uJiZvLnBvc2l0aW9uLmZyb21BcnJheSh0LnBvc2l0aW9uKSx2b2lkIDAhPT10LnJvdGF0aW9uJiZvLnJvdGF0aW9uLmZyb21BcnJheSh0LnJvdGF0aW9uKSx2b2lkIDAhPT10LnF1YXRlcm5pb24mJm8ucXVhdGVybmlvbi5mcm9tQXJyYXkodC5xdWF0ZXJuaW9uKSx2b2lkIDAhPT10LnNjYWxlJiZvLnNjYWxlLmZyb21BcnJheSh0LnNjYWxlKSksdm9pZCAwIT09dC5jYXN0U2hhZG93JiYoby5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyksdm9pZCAwIT09dC5yZWNlaXZlU2hhZG93JiYoby5yZWNlaXZlU2hhZG93PXQucmVjZWl2ZVNoYWRvdyksdC5zaGFkb3cmJih2b2lkIDAhPT10LnNoYWRvdy5iaWFzJiYoby5zaGFkb3cuYmlhcz10LnNoYWRvdy5iaWFzKSx2b2lkIDAhPT10LnNoYWRvdy5ub3JtYWxCaWFzJiYoby5zaGFkb3cubm9ybWFsQmlhcz10LnNoYWRvdy5ub3JtYWxCaWFzKSx2b2lkIDAhPT10LnNoYWRvdy5yYWRpdXMmJihvLnNoYWRvdy5yYWRpdXM9dC5zaGFkb3cucmFkaXVzKSx2b2lkIDAhPT10LnNoYWRvdy5tYXBTaXplJiZvLnNoYWRvdy5tYXBTaXplLmZyb21BcnJheSh0LnNoYWRvdy5tYXBTaXplKSx2b2lkIDAhPT10LnNoYWRvdy5jYW1lcmEmJihvLnNoYWRvdy5jYW1lcmE9dGhpcy5wYXJzZU9iamVjdCh0LnNoYWRvdy5jYW1lcmEpKSksdm9pZCAwIT09dC52aXNpYmxlJiYoby52aXNpYmxlPXQudmlzaWJsZSksdm9pZCAwIT09dC5mcnVzdHVtQ3VsbGVkJiYoby5mcnVzdHVtQ3VsbGVkPXQuZnJ1c3R1bUN1bGxlZCksdm9pZCAwIT09dC5yZW5kZXJPcmRlciYmKG8ucmVuZGVyT3JkZXI9dC5yZW5kZXJPcmRlciksdm9pZCAwIT09dC51c2VyRGF0YSYmKG8udXNlckRhdGE9dC51c2VyRGF0YSksdm9pZCAwIT09dC5sYXllcnMmJihvLmxheWVycy5tYXNrPXQubGF5ZXJzKSx2b2lkIDAhPT10LmNoaWxkcmVuKXtjb25zdCBhPXQuY2hpbGRyZW47Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspby5hZGQodGhpcy5wYXJzZU9iamVjdChhW3RdLGUsbixpLHIpKX1pZih2b2lkIDAhPT10LmFuaW1hdGlvbnMpe2NvbnN0IGU9dC5hbmltYXRpb25zO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtvLmFuaW1hdGlvbnMucHVzaChyW2VbdF1dKX19aWYoIkxPRCI9PT10LnR5cGUpe3ZvaWQgMCE9PXQuYXV0b1VwZGF0ZSYmKG8uYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUpO2NvbnN0IGU9dC5sZXZlbHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxpPW8uZ2V0T2JqZWN0QnlQcm9wZXJ0eSgidXVpZCIsbi5vYmplY3QpO3ZvaWQgMCE9PWkmJm8uYWRkTGV2ZWwoaSxuLmRpc3RhbmNlKX19cmV0dXJuIG99YmluZFNrZWxldG9ucyh0LGUpezAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJnQudHJhdmVyc2UoKGZ1bmN0aW9uKHQpe2lmKCEwPT09dC5pc1NraW5uZWRNZXNoJiZ2b2lkIDAhPT10LnNrZWxldG9uKXtjb25zdCBuPWVbdC5za2VsZXRvbl07dm9pZCAwPT09bj9jb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogTm8gc2tlbGV0b24gZm91bmQgd2l0aCBVVUlEOiIsdC5za2VsZXRvbik6dC5iaW5kKG4sdC5iaW5kTWF0cml4KX19KSl9c2V0VGV4dHVyZVBhdGgodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiAuc2V0VGV4dHVyZVBhdGgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRSZXNvdXJjZVBhdGgoKS4iKSx0aGlzLnNldFJlc291cmNlUGF0aCh0KX19LE9iamVjdFNwYWNlTm9ybWFsTWFwOjEsT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5OkJlZSxPY3RhaGVkcm9uR2VvbWV0cnk6QmVlLE9uZUZhY3RvcjoyMDEsT25lTWludXNEc3RBbHBoYUZhY3RvcjoyMDcsT25lTWludXNEc3RDb2xvckZhY3RvcjoyMDksT25lTWludXNTcmNBbHBoYUZhY3RvcjoyMDUsT25lTWludXNTcmNDb2xvckZhY3RvcjoyMDMsT3J0aG9ncmFwaGljQ2FtZXJhOkg2dCxQQ0ZTaGFkb3dNYXA6MSxQQ0ZTb2Z0U2hhZG93TWFwOjIsUE1SRU1HZW5lcmF0b3I6dDl0LFBhcmFtZXRyaWNHZW9tZXRyeTpmdW5jdGlvbiBIcmUoKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuUGFyYW1ldHJpY0dlb21ldHJ5IGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qc20vZ2VvbWV0cmllcy9QYXJhbWV0cmljR2VvbWV0cnkuanMiKSxuZXcgajR0fSxQYXJ0aWNsZTpmdW5jdGlvbiBGcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGUgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5TcHJpdGUuIiksbmV3IEQ3dCh0KX0sUGFydGljbGVCYXNpY01hdGVyaWFsOmZ1bmN0aW9uIFZyZSh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZUJhc2ljTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgZ3RlKHQpfSxQYXJ0aWNsZVN5c3RlbTpmdW5jdGlvbiBVcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgeHRlKHQsZSl9LFBhcnRpY2xlU3lzdGVtTWF0ZXJpYWw6ZnVuY3Rpb24ganJlKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhcnRpY2xlU3lzdGVtTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgZ3RlKHQpfSxQYXRoOnJlZSxQZXJzcGVjdGl2ZUNhbWVyYTptNnQsUGxhbmU6UzZ0LFBsYW5lQnVmZmVyR2VvbWV0cnk6azZ0LFBsYW5lR2VvbWV0cnk6azZ0LFBsYW5lSGVscGVyOmNsYXNzIGV4dGVuZHMgaHRle2NvbnN0cnVjdG9yKHQsZT0xLG49MTY3NzY5NjApe2NvbnN0IGk9bixyPW5ldyBqNHQ7ci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KFsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSwzKSksci5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxzdXBlcihyLG5ldyBvdGUoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IlBsYW5lSGVscGVyIix0aGlzLnBsYW5lPXQsdGhpcy5zaXplPWU7Y29uc3Qgbz1uZXcgajR0O28uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFI0dChbMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsLTEsMSwxLC0xLDFdLDMpKSxvLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXMuYWRkKG5ldyBzNnQobyxuZXcgdzR0KHtjb2xvcjppLG9wYWNpdHk6LjIsdHJhbnNwYXJlbnQ6ITAsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExfSkpKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtsZXQgZT0tdGhpcy5wbGFuZS5jb25zdGFudDtNYXRoLmFicyhlKTwxZS04JiYoZT0xZS04KSx0aGlzLnNjYWxlLnNldCguNSp0aGlzLnNpemUsLjUqdGhpcy5zaXplLGUpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuc2lkZT1lPDA/MTowLHRoaXMubG9va0F0KHRoaXMucGxhbmUubm9ybWFsKSxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19LFBvaW50Q2xvdWQ6ZnVuY3Rpb24gR3JlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgeHRlKHQsZSl9LFBvaW50Q2xvdWRNYXRlcmlhbDpmdW5jdGlvbiBXcmUodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZE1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIiksbmV3IGd0ZSh0KX0sUG9pbnRMaWdodDpVbmUsUG9pbnRMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIHM2dHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFZlZShlLDQsMiksbmV3IHc0dCh7d2lyZWZyYW1lOiEwLGZvZzohMSx0b25lTWFwcGVkOiExfSkpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5jb2xvcj1uLHRoaXMudHlwZT0iUG9pbnRMaWdodEhlbHBlciIsdGhpcy5tYXRyaXg9dGhpcy5saWdodC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7dm9pZCAwIT09dGhpcy5jb2xvcj90aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTp0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxQb2ludHM6eHRlLFBvaW50c01hdGVyaWFsOmd0ZSxQb2xhckdyaWRIZWxwZXI6Y2xhc3MgZXh0ZW5kcyBmdGV7Y29uc3RydWN0b3IodD0xMCxlPTE2LG49OCxpPTY0LHI9NDQ3MzkyNCxvPTg5NDc4NDgpe3I9bmV3ICQ1dChyKSxvPW5ldyAkNXQobyk7Y29uc3QgYT1bXSxzPVtdO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBpPW4vZSooMipNYXRoLlBJKSxsPU1hdGguc2luKGkpKnQsYz1NYXRoLmNvcyhpKSp0O2EucHVzaCgwLDAsMCksYS5wdXNoKGwsMCxjKTtjb25zdCB1PTEmbj9yOm87cy5wdXNoKHUucix1LmcsdS5iKSxzLnB1c2godS5yLHUuZyx1LmIpfWZvcihsZXQgZT0wO2U8PW47ZSsrKXtjb25zdCBsPTEmZT9yOm8sYz10LXQvbiplO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2xldCBlPXQvaSooMipNYXRoLlBJKSxuPU1hdGguc2luKGUpKmMscj1NYXRoLmNvcyhlKSpjO2EucHVzaChuLDAscikscy5wdXNoKGwucixsLmcsbC5iKSxlPSh0KzEpL2kqKDIqTWF0aC5QSSksbj1NYXRoLnNpbihlKSpjLHI9TWF0aC5jb3MoZSkqYyxhLnB1c2gobiwwLHIpLHMucHVzaChsLnIsbC5nLGwuYil9fWNvbnN0IGw9bmV3IGo0dDtsLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBSNHQoYSwzKSksbC5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgUjR0KHMsMykpO3N1cGVyKGwsbmV3IG90ZSh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJQb2xhckdyaWRIZWxwZXIifX0sUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OlB0ZSxQb2x5aGVkcm9uR2VvbWV0cnk6UHRlLFBvc2l0aW9uYWxBdWRpbzpjbGFzcyBleHRlbmRzIF9pZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnBhbm5lcj10aGlzLmNvbnRleHQuY3JlYXRlUGFubmVyKCksdGhpcy5wYW5uZXIucGFubmluZ01vZGVsPSJIUlRGIix0aGlzLnBhbm5lci5jb25uZWN0KHRoaXMuZ2Fpbil9Z2V0T3V0cHV0KCl7cmV0dXJuIHRoaXMucGFubmVyfWdldFJlZkRpc3RhbmNlKCl7cmV0dXJuIHRoaXMucGFubmVyLnJlZkRpc3RhbmNlfXNldFJlZkRpc3RhbmNlKHQpe3JldHVybiB0aGlzLnBhbm5lci5yZWZEaXN0YW5jZT10LHRoaXN9Z2V0Um9sbG9mZkZhY3Rvcigpe3JldHVybiB0aGlzLnBhbm5lci5yb2xsb2ZmRmFjdG9yfXNldFJvbGxvZmZGYWN0b3IodCl7cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3I9dCx0aGlzfWdldERpc3RhbmNlTW9kZWwoKXtyZXR1cm4gdGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbH1zZXREaXN0YW5jZU1vZGVsKHQpe3JldHVybiB0aGlzLnBhbm5lci5kaXN0YW5jZU1vZGVsPXQsdGhpc31nZXRNYXhEaXN0YW5jZSgpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX1zZXRNYXhEaXN0YW5jZSh0KXtyZXR1cm4gdGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9dCx0aGlzfXNldERpcmVjdGlvbmFsQ29uZSh0LGUsbil7cmV0dXJuIHRoaXMucGFubmVyLmNvbmVJbm5lckFuZ2xlPXQsdGhpcy5wYW5uZXIuY29uZU91dGVyQW5nbGU9ZSx0aGlzLnBhbm5lci5jb25lT3V0ZXJHYWluPW4sdGhpc311cGRhdGVNYXRyaXhXb3JsZCh0KXtpZihzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwhMD09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sJiYhMT09PXRoaXMuaXNQbGF5aW5nKXJldHVybjt0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh5aWUsdmllLGJpZSkseGllLnNldCgwLDAsMSkuYXBwbHlRdWF0ZXJuaW9uKHZpZSk7Y29uc3QgZT10aGlzLnBhbm5lcjtpZihlLnBvc2l0aW9uWCl7Y29uc3QgdD10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7ZS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoeWllLngsdCksZS5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoeWllLnksdCksZS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoeWllLnosdCksZS5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoeGllLngsdCksZS5vcmllbnRhdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoeGllLnksdCksZS5vcmllbnRhdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoeGllLnosdCl9ZWxzZSBlLnNldFBvc2l0aW9uKHlpZS54LHlpZS55LHlpZS56KSxlLnNldE9yaWVudGF0aW9uKHhpZS54LHhpZS55LHhpZS56KX19LFByb3BlcnR5QmluZGluZzpSaWUsUHJvcGVydHlNaXhlcjpTaWUsUXVhZHJhdGljQmV6aWVyQ3VydmU6UXRlLFF1YWRyYXRpY0JlemllckN1cnZlMzp0ZWUsUXVhdGVybmlvbjpvM3QsUXVhdGVybmlvbktleWZyYW1lVHJhY2s6bW5lLFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudDpmbmUsUkVWSVNJT046SzB0LFJHQkFEZXB0aFBhY2tpbmc6MzIwMSxSR0JBRm9ybWF0OncydCxSR0JBSW50ZWdlckZvcm1hdDoxMDMzLFJHQkFfQVNUQ18xMHgxMF9Gb3JtYXQ6cTJ0LFJHQkFfQVNUQ18xMHg1X0Zvcm1hdDpqMnQsUkdCQV9BU1RDXzEweDZfRm9ybWF0OkcydCxSR0JBX0FTVENfMTB4OF9Gb3JtYXQ6VzJ0LFJHQkFfQVNUQ18xMngxMF9Gb3JtYXQ6WTJ0LFJHQkFfQVNUQ18xMngxMl9Gb3JtYXQ6WDJ0LFJHQkFfQVNUQ180eDRfRm9ybWF0Ok8ydCxSR0JBX0FTVENfNXg0X0Zvcm1hdDp6MnQsUkdCQV9BU1RDXzV4NV9Gb3JtYXQ6RDJ0LFJHQkFfQVNUQ182eDVfRm9ybWF0OkIydCxSR0JBX0FTVENfNng2X0Zvcm1hdDpIMnQsUkdCQV9BU1RDXzh4NV9Gb3JtYXQ6RjJ0LFJHQkFfQVNUQ184eDZfRm9ybWF0OlYydCxSR0JBX0FTVENfOHg4X0Zvcm1hdDpVMnQsUkdCQV9CUFRDX0Zvcm1hdDokMnQsUkdCQV9FVEMyX0VBQ19Gb3JtYXQ6UjJ0LFJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdDpJMnQsUkdCQV9QVlJUQ180QlBQVjFfRm9ybWF0OkwydCxSR0JBX1MzVENfRFhUMV9Gb3JtYXQ6VDJ0LFJHQkFfUzNUQ19EWFQzX0Zvcm1hdDpDMnQsUkdCQV9TM1RDX0RYVDVfRm9ybWF0OkEydCxSR0JfRVRDMV9Gb3JtYXQ6MzYxOTYsUkdCX0VUQzJfRm9ybWF0Ok4ydCxSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdDpQMnQsUkdCX1BWUlRDXzRCUFBWMV9Gb3JtYXQ6azJ0LFJHQl9TM1RDX0RYVDFfRm9ybWF0OkUydCxSR0Zvcm1hdDoxMDMwLFJHSW50ZWdlckZvcm1hdDoxMDMxLFJhd1NoYWRlck1hdGVyaWFsOkY2dCxSYXk6ejN0LFJheWNhc3RlcjpjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbj0wLGk9MS8wKXt0aGlzLnJheT1uZXcgejN0KHQsZSksdGhpcy5uZWFyPW4sdGhpcy5mYXI9aSx0aGlzLmNhbWVyYT1udWxsLHRoaXMubGF5ZXJzPW5ldyBYM3QsdGhpcy5wYXJhbXM9e01lc2g6e30sTGluZTp7dGhyZXNob2xkOjF9LExPRDp7fSxQb2ludHM6e3RocmVzaG9sZDoxfSxTcHJpdGU6e319fXNldCh0LGUpe3RoaXMucmF5LnNldCh0LGUpfXNldEZyb21DYW1lcmEodCxlKXtlJiZlLmlzUGVyc3BlY3RpdmVDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCh0LngsdC55LC41KS51bnByb2plY3QoZSkuc3ViKHRoaXMucmF5Lm9yaWdpbikubm9ybWFsaXplKCksdGhpcy5jYW1lcmE9ZSk6ZSYmZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT8odGhpcy5yYXkub3JpZ2luLnNldCh0LngsdC55LChlLm5lYXIrZS5mYXIpLyhlLm5lYXItZS5mYXIpKS51bnByb2plY3QoZSksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCgwLDAsLTEpLnRyYW5zZm9ybURpcmVjdGlvbihlLm1hdHJpeFdvcmxkKSx0aGlzLmNhbWVyYT1lKTpjb25zb2xlLmVycm9yKCJUSFJFRS5SYXljYXN0ZXI6IFVuc3VwcG9ydGVkIGNhbWVyYSB0eXBlOiAiK2UudHlwZSl9aW50ZXJzZWN0T2JqZWN0KHQsZT0hMCxuPVtdKXtyZXR1cm4gVWllKHQsdGhpcyxuLGUpLG4uc29ydChWaWUpLG59aW50ZXJzZWN0T2JqZWN0cyh0LGU9ITAsbj1bXSl7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKVVpZSh0W2ldLHRoaXMsbixlKTtyZXR1cm4gbi5zb3J0KFZpZSksbn19LFJlY3RBcmVhTGlnaHQ6cW5lLFJlZEZvcm1hdDoxMDI4LFJlZEludGVnZXJGb3JtYXQ6MTAyOSxSZWluaGFyZFRvbmVNYXBwaW5nOjIsUmVwZWF0V3JhcHBpbmc6czJ0LFJlcGxhY2VTdGVuY2lsT3A6NzY4MSxSZXZlcnNlU3VidHJhY3RFcXVhdGlvbjoxMDIsUmluZ0J1ZmZlckdlb21ldHJ5OkhlZSxSaW5nR2VvbWV0cnk6SGVlLFNjZW5lOnY3dCxTY2VuZVV0aWxzOnZyZSxTaGFkZXJDaHVuazpQNnQsU2hhZGVyTGliOkk2dCxTaGFkZXJNYXRlcmlhbDpwNnQsU2hhZG93TWF0ZXJpYWw6JGVlLFNoYXBlOm9lZSxTaGFwZUJ1ZmZlckdlb21ldHJ5OkZlZSxTaGFwZUdlb21ldHJ5OkZlZSxTaGFwZVBhdGg6Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IlNoYXBlUGF0aCIsdGhpcy5jb2xvcj1uZXcgJDV0LHRoaXMuc3ViUGF0aHM9W10sdGhpcy5jdXJyZW50UGF0aD1udWxsfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoPW5ldyByZWUsdGhpcy5zdWJQYXRocy5wdXNoKHRoaXMuY3VycmVudFBhdGgpLHRoaXMuY3VycmVudFBhdGgubW92ZVRvKHQsZSksdGhpc31saW5lVG8odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5saW5lVG8odCxlKSx0aGlzfXF1YWRyYXRpY0N1cnZlVG8odCxlLG4saSl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGgucXVhZHJhdGljQ3VydmVUbyh0LGUsbixpKSx0aGlzfWJlemllckN1cnZlVG8odCxlLG4saSxyLG8pe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLmJlemllckN1cnZlVG8odCxlLG4saSxyLG8pLHRoaXN9c3BsaW5lVGhydSh0KXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KHQpLHRoaXN9dG9TaGFwZXModCxlKXtmdW5jdGlvbiBuKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRbbl0scj1uZXcgb2VlO3IuY3VydmVzPWkuY3VydmVzLGUucHVzaChyKX1yZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgaT0hMTtmb3IobGV0IHI9bi0xLG89MDtvPG47cj1vKyspe2xldCBuPWVbcl0sYT1lW29dLHM9YS54LW4ueCxsPWEueS1uLnk7aWYoTWF0aC5hYnMobCk+TnVtYmVyLkVQU0lMT04pe2lmKGw8MCYmKG49ZVtvXSxzPS1zLGE9ZVtyXSxsPS1sKSx0Lnk8bi55fHx0Lnk+YS55KWNvbnRpbnVlO2lmKHQueT09PW4ueSl7aWYodC54PT09bi54KXJldHVybiEwfWVsc2V7Y29uc3QgZT1sKih0Lngtbi54KS1zKih0Lnktbi55KTtpZigwPT09ZSlyZXR1cm4hMDtpZihlPDApY29udGludWU7aT0haX19ZWxzZXtpZih0LnkhPT1uLnkpY29udGludWU7aWYoYS54PD10LngmJnQueDw9bi54fHxuLng8PXQueCYmdC54PD1hLngpcmV0dXJuITB9fXJldHVybiBpfWNvbnN0IHI9TGVlLmlzQ2xvY2tXaXNlLG89dGhpcy5zdWJQYXRocztpZigwPT09by5sZW5ndGgpcmV0dXJuW107aWYoITA9PT1lKXJldHVybiBuKG8pO2xldCBhLHMsbDtjb25zdCBjPVtdO2lmKDE9PT1vLmxlbmd0aClyZXR1cm4gcz1vWzBdLGw9bmV3IG9lZSxsLmN1cnZlcz1zLmN1cnZlcyxjLnB1c2gobCksYztsZXQgdT0hcihvWzBdLmdldFBvaW50cygpKTt1PXQ/IXU6dTtjb25zdCBoPVtdLGQ9W107bGV0IHAsZixtPVtdLGc9MDtkW2ddPXZvaWQgMCxtW2ddPVtdO2ZvcihsZXQgZT0wLG49by5sZW5ndGg7ZTxuO2UrKylzPW9bZV0scD1zLmdldFBvaW50cygpLGE9cihwKSxhPXQ/IWE6YSxhPyghdSYmZFtnXSYmZysrLGRbZ109e3M6bmV3IG9lZSxwOnB9LGRbZ10ucy5jdXJ2ZXM9cy5jdXJ2ZXMsdSYmZysrLG1bZ109W10pOm1bZ10ucHVzaCh7aDpzLHA6cFswXX0pO2lmKCFkWzBdKXJldHVybiBuKG8pO2lmKGQubGVuZ3RoPjEpe2xldCB0PSExO2NvbnN0IGU9W107Zm9yKGxldCB0PTAsZT1kLmxlbmd0aDt0PGU7dCsrKWhbdF09W107Zm9yKGxldCBuPTAscj1kLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPW1bbl07Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspe2NvbnN0IGE9cltvXTtsZXQgcz0hMDtmb3IobGV0IHI9MDtyPGQubGVuZ3RoO3IrKylpKGEucCxkW3JdLnApJiYobiE9PXImJmUucHVzaCh7ZnJvbXM6bix0b3M6cixob2xlOm99KSxzPyhzPSExLGhbcl0ucHVzaChhKSk6dD0hMCk7cyYmaFtuXS5wdXNoKGEpfX1lLmxlbmd0aD4wJiYodHx8KG09aCkpfWZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyl7bD1kW3RdLnMsYy5wdXNoKGwpLGY9bVt0XTtmb3IobGV0IHQ9MCxlPWYubGVuZ3RoO3Q8ZTt0KyspbC5ob2xlcy5wdXNoKGZbdF0uaCl9cmV0dXJuIGN9fSxTaGFwZVV0aWxzOkxlZSxTaG9ydFR5cGU6MTAxMSxTa2VsZXRvbjpKN3QsU2tlbGV0b25IZWxwZXI6UWllLFNraW5uZWRNZXNoOlk3dCxTbW9vdGhTaGFkaW5nOjIsU3BoZXJlOkEzdCxTcGhlcmVCdWZmZXJHZW9tZXRyeTpWZWUsU3BoZXJlR2VvbWV0cnk6VmVlLFNwaGVyaWNhbDpqaWUsU3BoZXJpY2FsSGFybW9uaWNzMzpZbmUsU3BsaW5lQ3VydmU6ZWVlLFNwb3RMaWdodDpEbmUsU3BvdExpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMgbDR0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9ZTtjb25zdCBuPW5ldyBqNHQsaT1bMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDEsMCwwLDAsLTEsMCwxLDAsMCwwLDAsMSwxLDAsMCwwLDAsLTEsMV07Zm9yKGxldCB0PTAsZT0xLG49MzI7dDxuO3QrKyxlKyspe2NvbnN0IHI9dC9uKk1hdGguUEkqMixvPWUvbipNYXRoLlBJKjI7aS5wdXNoKE1hdGguY29zKHIpLE1hdGguc2luKHIpLDEsTWF0aC5jb3MobyksTWF0aC5zaW4obyksMSl9bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUjR0KGksMykpO2NvbnN0IHI9bmV3IG90ZSh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmNvbmU9bmV3IGZ0ZShuLHIpLHRoaXMuYWRkKHRoaXMuY29uZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5jb25lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmNvbmUubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCB0PXRoaXMubGlnaHQuZGlzdGFuY2U/dGhpcy5saWdodC5kaXN0YW5jZToxZTMsZT10Kk1hdGgudGFuKHRoaXMubGlnaHQuYW5nbGUpO3RoaXMuY29uZS5zY2FsZS5zZXQoZSxlLHQpLCRpZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLHRoaXMuY29uZS5sb29rQXQoJGllKSx2b2lkIDAhPT10aGlzLmNvbG9yP3RoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik6dGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxTcHJpdGU6RDd0LFNwcml0ZU1hdGVyaWFsOlM3dCxTcmNBbHBoYUZhY3RvcjoyMDQsU3JjQWxwaGFTYXR1cmF0ZUZhY3RvcjoyMTAsU3JjQ29sb3JGYWN0b3I6MjAyLFN0YXRpY0NvcHlVc2FnZTozNTA0NixTdGF0aWNEcmF3VXNhZ2U6czV0LFN0YXRpY1JlYWRVc2FnZTozNTA0NSxTdGVyZW9DYW1lcmE6Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IlN0ZXJlb0NhbWVyYSIsdGhpcy5hc3BlY3Q9MSx0aGlzLmV5ZVNlcD0uMDY0LHRoaXMuY2FtZXJhTD1uZXcgbTZ0LHRoaXMuY2FtZXJhTC5sYXllcnMuZW5hYmxlKDEpLHRoaXMuY2FtZXJhTC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY2FtZXJhUj1uZXcgbTZ0LHRoaXMuY2FtZXJhUi5sYXllcnMuZW5hYmxlKDIpLHRoaXMuY2FtZXJhUi5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2NhY2hlPXtmb2N1czpudWxsLGZvdjpudWxsLGFzcGVjdDpudWxsLG5lYXI6bnVsbCxmYXI6bnVsbCx6b29tOm51bGwsZXllU2VwOm51bGx9fXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMuX2NhY2hlO2lmKGUuZm9jdXMhPT10LmZvY3VzfHxlLmZvdiE9PXQuZm92fHxlLmFzcGVjdCE9PXQuYXNwZWN0KnRoaXMuYXNwZWN0fHxlLm5lYXIhPT10Lm5lYXJ8fGUuZmFyIT09dC5mYXJ8fGUuem9vbSE9PXQuem9vbXx8ZS5leWVTZXAhPT10aGlzLmV5ZVNlcCl7ZS5mb2N1cz10LmZvY3VzLGUuZm92PXQuZm92LGUuYXNwZWN0PXQuYXNwZWN0KnRoaXMuYXNwZWN0LGUubmVhcj10Lm5lYXIsZS5mYXI9dC5mYXIsZS56b29tPXQuem9vbSxlLmV5ZVNlcD10aGlzLmV5ZVNlcCx1aWUuY29weSh0LnByb2plY3Rpb25NYXRyaXgpO2NvbnN0IG49ZS5leWVTZXAvMixpPW4qZS5uZWFyL2UuZm9jdXMscj1lLm5lYXIqTWF0aC50YW4oZjV0KmUuZm92Ki41KS9lLnpvb207bGV0IG8sYTtjaWUuZWxlbWVudHNbMTJdPS1uLGxpZS5lbGVtZW50c1sxMl09bixvPS1yKmUuYXNwZWN0K2ksYT1yKmUuYXNwZWN0K2ksdWllLmVsZW1lbnRzWzBdPTIqZS5uZWFyLyhhLW8pLHVpZS5lbGVtZW50c1s4XT0oYStvKS8oYS1vKSx0aGlzLmNhbWVyYUwucHJvamVjdGlvbk1hdHJpeC5jb3B5KHVpZSksbz0tciplLmFzcGVjdC1pLGE9ciplLmFzcGVjdC1pLHVpZS5lbGVtZW50c1swXT0yKmUubmVhci8oYS1vKSx1aWUuZWxlbWVudHNbOF09KGErbykvKGEtbyksdGhpcy5jYW1lcmFSLnByb2plY3Rpb25NYXRyaXguY29weSh1aWUpfXRoaXMuY2FtZXJhTC5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLm11bHRpcGx5KGNpZSksdGhpcy5jYW1lcmFSLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCkubXVsdGlwbHkobGllKX19LFN0cmVhbUNvcHlVc2FnZTozNTA0MixTdHJlYW1EcmF3VXNhZ2U6MzUwNDAsU3RyZWFtUmVhZFVzYWdlOjM1MDQxLFN0cmluZ0tleWZyYW1lVHJhY2s6Z25lLFN1YnRyYWN0RXF1YXRpb246MTAxLFN1YnRyYWN0aXZlQmxlbmRpbmc6MyxUT1VDSDpKMHQsVGFuZ2VudFNwYWNlTm9ybWFsTWFwOjAsVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeTpVZWUsVGV0cmFoZWRyb25HZW9tZXRyeTpVZWUsVGV4dEdlb21ldHJ5OmZ1bmN0aW9uIHFyZSgpe3JldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5UZXh0R2VvbWV0cnkgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS9nZW9tZXRyaWVzL1RleHRHZW9tZXRyeS5qcyIpLG5ldyBqNHR9LFRleHR1cmU6UTV0LFRleHR1cmVMb2FkZXI6a25lLFRvcnVzQnVmZmVyR2VvbWV0cnk6amVlLFRvcnVzR2VvbWV0cnk6amVlLFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5OkdlZSxUb3J1c0tub3RHZW9tZXRyeTpHZWUsVHJpYW5nbGU6djR0LFRyaWFuZ2xlRmFuRHJhd01vZGU6MixUcmlhbmdsZVN0cmlwRHJhd01vZGU6MSxUcmlhbmdsZXNEcmF3TW9kZTowLFR1YmVCdWZmZXJHZW9tZXRyeTpXZWUsVHViZUdlb21ldHJ5OldlZSxVVk1hcHBpbmc6dDJ0LFVpbnQxNkF0dHJpYnV0ZTpmdW5jdGlvbiBZcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5VaW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBQNHQodCxlKX0sVWludDE2QnVmZmVyQXR0cmlidXRlOlA0dCxVaW50MzJBdHRyaWJ1dGU6ZnVuY3Rpb24gWHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuVWludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgSTR0KHQsZSl9LFVpbnQzMkJ1ZmZlckF0dHJpYnV0ZTpJNHQsVWludDhBdHRyaWJ1dGU6ZnVuY3Rpb24gJHJlKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IEM0dCh0LGUpfSxVaW50OEJ1ZmZlckF0dHJpYnV0ZTpDNHQsVWludDhDbGFtcGVkQXR0cmlidXRlOmZ1bmN0aW9uIEtyZSh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IEE0dCh0LGUpfSxVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU6QTR0LFVuaWZvcm06QmllLFVuaWZvcm1zTGliOkw2dCxVbmlmb3Jtc1V0aWxzOmQ2dCxVbnNpZ25lZEJ5dGVUeXBlOmcydCxVbnNpZ25lZEludDI0OFR5cGU6eDJ0LFVuc2lnbmVkSW50VHlwZTp5MnQsVW5zaWduZWRTaG9ydDQ0NDRUeXBlOjEwMTcsVW5zaWduZWRTaG9ydDU1NTFUeXBlOjEwMTgsVW5zaWduZWRTaG9ydFR5cGU6XzJ0LFZTTVNoYWRvd01hcDozLFZlY3RvcjI6RDV0LFZlY3RvcjM6YTN0LFZlY3RvcjQ6ZTN0LFZlY3RvcktleWZyYW1lVHJhY2s6X25lLFZlcnRleDpmdW5jdGlvbiBacmUodCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlcnRleCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuVmVjdG9yMyBpbnN0ZWFkLiIpLG5ldyBhM3QodCxlLG4pfSxWZXJ0ZXhDb2xvcnM6MixWaWRlb1RleHR1cmU6U3RlLFdlYkdMMVJlbmRlcmVyOmc3dCxXZWJHTEN1YmVSZW5kZXJUYXJnZXQ6djZ0LFdlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzOmkzdCxXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0OnIzdCxXZWJHTFJlbmRlclRhcmdldDpuM3QsV2ViR0xSZW5kZXJUYXJnZXRDdWJlOmZ1bmN0aW9uIEpyZSh0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXRDdWJlKCB3aWR0aCwgaGVpZ2h0LCBvcHRpb25zICkgaXMgbm93IFdlYkdMQ3ViZVJlbmRlclRhcmdldCggc2l6ZSwgb3B0aW9ucyApLiIpLG5ldyB2NnQodCxuKX0sV2ViR0xSZW5kZXJlcjptN3QsV2ViR0xVdGlsczpzN3QsV2lyZWZyYW1lR2VvbWV0cnk6cWVlLFdpcmVmcmFtZUhlbHBlcjpmdW5jdGlvbiBRcmUodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XaXJlZnJhbWVIZWxwZXIgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLldpcmVmcmFtZUdlb21ldHJ5IGluc3RlYWQuIiksbmV3IGZ0ZShuZXcgcWVlKHQuZ2VvbWV0cnkpLG5ldyBvdGUoe2NvbG9yOnZvaWQgMCE9PWU/ZToxNjc3NzIxNX0pKX0sV3JhcEFyb3VuZEVuZGluZzplNXQsWEhSTG9hZGVyOmZ1bmN0aW9uIHRvZSh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5YSFJMb2FkZXIgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5GaWxlTG9hZGVyLiIpLG5ldyBFbmUodCl9LFplcm9DdXJ2YXR1cmVFbmRpbmc6UTJ0LFplcm9GYWN0b3I6MjAwLFplcm9TbG9wZUVuZGluZzp0NXQsWmVyb1N0ZW5jaWxPcDowLF9TUkdCQUZvcm1hdDp1NXQsc1JHQkVuY29kaW5nOm81dH0pO2NvbnN0IGVvZT17dHlwZToiY2hhbmdlIn0sbm9lPXt0eXBlOiJzdGFydCJ9LGlvZT17dHlwZToiZW5kIn07Y2xhc3Mgcm9lIGV4dGVuZHMgaDV0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx2b2lkIDA9PT1lJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9yYml0Q29udHJvbHM6IFRoZSBzZWNvbmQgcGFyYW1ldGVyICJkb21FbGVtZW50IiBpcyBub3cgbWFuZGF0b3J5LicpLGU9PT1kb2N1bWVudCYmY29uc29sZS5lcnJvcignVEhSRUUuT3JiaXRDb250cm9sczogImRvY3VtZW50IiBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlIHRhcmdldCAiZG9tRWxlbWVudCIuIFBsZWFzZSB1c2UgInJlbmRlcmVyLmRvbUVsZW1lbnQiIGluc3RlYWQuJyksdGhpcy5vYmplY3Q9dCx0aGlzLmRvbUVsZW1lbnQ9ZSx0aGlzLmRvbUVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb249Im5vbmUiLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnRhcmdldD1uZXcgYTN0LHRoaXMubWluRGlzdGFuY2U9MCx0aGlzLm1heERpc3RhbmNlPTEvMCx0aGlzLm1pblpvb209MCx0aGlzLm1heFpvb209MS8wLHRoaXMubWluUG9sYXJBbmdsZT0wLHRoaXMubWF4UG9sYXJBbmdsZT1NYXRoLlBJLHRoaXMubWluQXppbXV0aEFuZ2xlPS0xLzAsdGhpcy5tYXhBemltdXRoQW5nbGU9MS8wLHRoaXMuZW5hYmxlRGFtcGluZz0hMSx0aGlzLmRhbXBpbmdGYWN0b3I9LjA1LHRoaXMuZW5hYmxlWm9vbT0hMCx0aGlzLnpvb21TcGVlZD0xLHRoaXMuZW5hYmxlUm90YXRlPSEwLHRoaXMucm90YXRlU3BlZWQ9MSx0aGlzLmVuYWJsZVBhbj0hMCx0aGlzLnBhblNwZWVkPTEsdGhpcy5zY3JlZW5TcGFjZVBhbm5pbmc9ITAsdGhpcy5rZXlQYW5TcGVlZD03LHRoaXMuYXV0b1JvdGF0ZT0hMSx0aGlzLmF1dG9Sb3RhdGVTcGVlZD0yLHRoaXMua2V5cz17TEVGVDoiQXJyb3dMZWZ0IixVUDoiQXJyb3dVcCIsUklHSFQ6IkFycm93UmlnaHQiLEJPVFRPTToiQXJyb3dEb3duIn0sdGhpcy5tb3VzZUJ1dHRvbnM9e0xFRlQ6WjB0LlJPVEFURSxNSURETEU6WjB0LkRPTExZLFJJR0hUOlowdC5QQU59LHRoaXMudG91Y2hlcz17T05FOkowdC5ST1RBVEUsVFdPOkowdC5ET0xMWV9QQU59LHRoaXMudGFyZ2V0MD10aGlzLnRhcmdldC5jbG9uZSgpLHRoaXMucG9zaXRpb24wPXRoaXMub2JqZWN0LnBvc2l0aW9uLmNsb25lKCksdGhpcy56b29tMD10aGlzLm9iamVjdC56b29tLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9bnVsbCx0aGlzLmdldFBvbGFyQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5waGl9LHRoaXMuZ2V0QXppbXV0aGFsQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS50aGV0YX0sdGhpcy5nZXREaXN0YW5jZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVjdC5wb3NpdGlvbi5kaXN0YW5jZVRvKHRoaXMudGFyZ2V0KX0sdGhpcy5saXN0ZW5Ub0tleUV2ZW50cz1mdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9dH0sdGhpcy5zYXZlU3RhdGU9ZnVuY3Rpb24oKXtuLnRhcmdldDAuY29weShuLnRhcmdldCksbi5wb3NpdGlvbjAuY29weShuLm9iamVjdC5wb3NpdGlvbiksbi56b29tMD1uLm9iamVjdC56b29tfSx0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7bi50YXJnZXQuY29weShuLnRhcmdldDApLG4ub2JqZWN0LnBvc2l0aW9uLmNvcHkobi5wb3NpdGlvbjApLG4ub2JqZWN0Lnpvb209bi56b29tMCxuLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksbi5kaXNwYXRjaEV2ZW50KGVvZSksbi51cGRhdGUoKSxyPWkuTk9ORX0sdGhpcy51cGRhdGU9KGZ1bmN0aW9uKCl7Y29uc3QgZT1uZXcgYTN0LGg9KG5ldyBvM3QpLnNldEZyb21Vbml0VmVjdG9ycyh0LnVwLG5ldyBhM3QoMCwxLDApKSxkPWguY2xvbmUoKS5pbnZlcnQoKSxwPW5ldyBhM3QsZj1uZXcgbzN0LG09MipNYXRoLlBJO3JldHVybiBmdW5jdGlvbiB0KCl7Y29uc3QgZz1uLm9iamVjdC5wb3NpdGlvbjtlLmNvcHkoZykuc3ViKG4udGFyZ2V0KSxlLmFwcGx5UXVhdGVybmlvbihoKSxhLnNldEZyb21WZWN0b3IzKGUpLG4uYXV0b1JvdGF0ZSYmcj09PWkuTk9ORSYmUygoZnVuY3Rpb24gXygpe3JldHVybiAyKk1hdGguUEkvNjAvNjAqbi5hdXRvUm90YXRlU3BlZWR9KSgpKSxuLmVuYWJsZURhbXBpbmc/KGEudGhldGErPXMudGhldGEqbi5kYW1waW5nRmFjdG9yLGEucGhpKz1zLnBoaSpuLmRhbXBpbmdGYWN0b3IpOihhLnRoZXRhKz1zLnRoZXRhLGEucGhpKz1zLnBoaSk7bGV0IHk9bi5taW5BemltdXRoQW5nbGUsdj1uLm1heEF6aW11dGhBbmdsZTtyZXR1cm4gaXNGaW5pdGUoeSkmJmlzRmluaXRlKHYpJiYoeTwtTWF0aC5QST95Kz1tOnk+TWF0aC5QSSYmKHktPW0pLHY8LU1hdGguUEk/dis9bTp2Pk1hdGguUEkmJih2LT1tKSxhLnRoZXRhPXk8PXY/TWF0aC5tYXgoeSxNYXRoLm1pbih2LGEudGhldGEpKTphLnRoZXRhPih5K3YpLzI/TWF0aC5tYXgoeSxhLnRoZXRhKTpNYXRoLm1pbih2LGEudGhldGEpKSxhLnBoaT1NYXRoLm1heChuLm1pblBvbGFyQW5nbGUsTWF0aC5taW4obi5tYXhQb2xhckFuZ2xlLGEucGhpKSksYS5tYWtlU2FmZSgpLGEucmFkaXVzKj1sLGEucmFkaXVzPU1hdGgubWF4KG4ubWluRGlzdGFuY2UsTWF0aC5taW4obi5tYXhEaXN0YW5jZSxhLnJhZGl1cykpLCEwPT09bi5lbmFibGVEYW1waW5nP24udGFyZ2V0LmFkZFNjYWxlZFZlY3RvcihjLG4uZGFtcGluZ0ZhY3Rvcik6bi50YXJnZXQuYWRkKGMpLGUuc2V0RnJvbVNwaGVyaWNhbChhKSxlLmFwcGx5UXVhdGVybmlvbihkKSxnLmNvcHkobi50YXJnZXQpLmFkZChlKSxuLm9iamVjdC5sb29rQXQobi50YXJnZXQpLCEwPT09bi5lbmFibGVEYW1waW5nPyhzLnRoZXRhKj0xLW4uZGFtcGluZ0ZhY3RvcixzLnBoaSo9MS1uLmRhbXBpbmdGYWN0b3IsYy5tdWx0aXBseVNjYWxhcigxLW4uZGFtcGluZ0ZhY3RvcikpOihzLnNldCgwLDAsMCksYy5zZXQoMCwwLDApKSxsPTEsISEodXx8cC5kaXN0YW5jZVRvU3F1YXJlZChuLm9iamVjdC5wb3NpdGlvbik+b3x8OCooMS1mLmRvdChuLm9iamVjdC5xdWF0ZXJuaW9uKSk+bykmJihuLmRpc3BhdGNoRXZlbnQoZW9lKSxwLmNvcHkobi5vYmplY3QucG9zaXRpb24pLGYuY29weShuLm9iamVjdC5xdWF0ZXJuaW9uKSx1PSExLCEwKX19KSgpLHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe24uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsRyksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixCKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsViksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIixVKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLEgpLG4uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEYpLG51bGwhPT1uLl9kb21FbGVtZW50S2V5RXZlbnRzJiZuLl9kb21FbGVtZW50S2V5RXZlbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopfTtjb25zdCBuPXRoaXMsaT17Tk9ORTotMSxST1RBVEU6MCxET0xMWToxLFBBTjoyLFRPVUNIX1JPVEFURTozLFRPVUNIX1BBTjo0LFRPVUNIX0RPTExZX1BBTjo1LFRPVUNIX0RPTExZX1JPVEFURTo2fTtsZXQgcj1pLk5PTkU7Y29uc3Qgbz0xZS02LGE9bmV3IGppZSxzPW5ldyBqaWU7bGV0IGw9MTtjb25zdCBjPW5ldyBhM3Q7bGV0IHU9ITE7Y29uc3QgaD1uZXcgRDV0LGQ9bmV3IEQ1dCxwPW5ldyBENXQsZj1uZXcgRDV0LG09bmV3IEQ1dCxnPW5ldyBENXQsXz1uZXcgRDV0LHk9bmV3IEQ1dCx2PW5ldyBENXQsYj1bXSx4PXt9O2Z1bmN0aW9uIHcoKXtyZXR1cm4gTWF0aC5wb3coLjk1LG4uem9vbVNwZWVkKX1mdW5jdGlvbiBTKHQpe3MudGhldGEtPXR9ZnVuY3Rpb24gTSh0KXtzLnBoaS09dH1jb25zdCBFPShmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IGEzdDtyZXR1cm4gZnVuY3Rpb24gZShuLGkpe3Quc2V0RnJvbU1hdHJpeENvbHVtbihpLDApLHQubXVsdGlwbHlTY2FsYXIoLW4pLGMuYWRkKHQpfX0pKCksVD0oZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBhM3Q7cmV0dXJuIGZ1bmN0aW9uIGUoaSxyKXshMD09PW4uc2NyZWVuU3BhY2VQYW5uaW5nP3Quc2V0RnJvbU1hdHJpeENvbHVtbihyLDEpOih0LnNldEZyb21NYXRyaXhDb2x1bW4ociwwKSx0LmNyb3NzVmVjdG9ycyhuLm9iamVjdC51cCx0KSksdC5tdWx0aXBseVNjYWxhcihpKSxjLmFkZCh0KX19KSgpLEM9KGZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgYTN0O3JldHVybiBmdW5jdGlvbiBlKGkscil7Y29uc3Qgbz1uLmRvbUVsZW1lbnQ7aWYobi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYSl7dC5jb3B5KG4ub2JqZWN0LnBvc2l0aW9uKS5zdWIobi50YXJnZXQpO2xldCBlPXQubGVuZ3RoKCk7ZSo9TWF0aC50YW4obi5vYmplY3QuZm92LzIqTWF0aC5QSS8xODApLEUoMippKmUvby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSxUKDIqciplL28uY2xpZW50SGVpZ2h0LG4ub2JqZWN0Lm1hdHJpeCl9ZWxzZSBuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8oRShpKihuLm9iamVjdC5yaWdodC1uLm9iamVjdC5sZWZ0KS9uLm9iamVjdC56b29tL28uY2xpZW50V2lkdGgsbi5vYmplY3QubWF0cml4KSxUKHIqKG4ub2JqZWN0LnRvcC1uLm9iamVjdC5ib3R0b20pL24ub2JqZWN0Lnpvb20vby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSk6KGNvbnNvbGUud2FybigiV0FSTklORzogT3JiaXRDb250cm9scy5qcyBlbmNvdW50ZXJlZCBhbiB1bmtub3duIGNhbWVyYSB0eXBlIC0gcGFuIGRpc2FibGVkLiIpLG4uZW5hYmxlUGFuPSExKX19KSgpO2Z1bmN0aW9uIEEodCl7bi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYT9sLz10Om4ub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhuLm9iamVjdC56b29tPU1hdGgubWF4KG4ubWluWm9vbSxNYXRoLm1pbihuLm1heFpvb20sbi5vYmplY3Quem9vbSp0KSksbi5vYmplY3QudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHU9ITApOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIGRvbGx5L3pvb20gZGlzYWJsZWQuIiksbi5lbmFibGVab29tPSExKX1mdW5jdGlvbiBrKHQpe24ub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmE/bCo9dDpuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8obi5vYmplY3Quem9vbT1NYXRoLm1heChuLm1pblpvb20sTWF0aC5taW4obi5tYXhab29tLG4ub2JqZWN0Lnpvb20vdCkpLG4ub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx1PSEwKTooY29uc29sZS53YXJuKCJXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBkb2xseS96b29tIGRpc2FibGVkLiIpLG4uZW5hYmxlWm9vbT0hMSl9ZnVuY3Rpb24gUCh0KXtoLnNldCh0LmNsaWVudFgsdC5jbGllbnRZKX1mdW5jdGlvbiBMKHQpe2Yuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpfWZ1bmN0aW9uIEkoKXtpZigxPT09Yi5sZW5ndGgpaC5zZXQoYlswXS5wYWdlWCxiWzBdLnBhZ2VZKTtlbHNle2guc2V0KC41KihiWzBdLnBhZ2VYK2JbMV0ucGFnZVgpLC41KihiWzBdLnBhZ2VZK2JbMV0ucGFnZVkpKX19ZnVuY3Rpb24gTigpe2lmKDE9PT1iLmxlbmd0aClmLnNldChiWzBdLnBhZ2VYLGJbMF0ucGFnZVkpO2Vsc2V7Zi5zZXQoLjUqKGJbMF0ucGFnZVgrYlsxXS5wYWdlWCksLjUqKGJbMF0ucGFnZVkrYlsxXS5wYWdlWSkpfX1mdW5jdGlvbiBSKCl7Y29uc3QgdD1iWzBdLnBhZ2VYLWJbMV0ucGFnZVgsZT1iWzBdLnBhZ2VZLWJbMV0ucGFnZVksbj1NYXRoLnNxcnQodCp0K2UqZSk7Xy5zZXQoMCxuKX1mdW5jdGlvbiBPKHQpe2lmKDE9PWIubGVuZ3RoKWQuc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7ZC5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1wLnN1YlZlY3RvcnMoZCxoKS5tdWx0aXBseVNjYWxhcihuLnJvdGF0ZVNwZWVkKTtjb25zdCBlPW4uZG9tRWxlbWVudDtTKDIqTWF0aC5QSSpwLngvZS5jbGllbnRIZWlnaHQpLE0oMipNYXRoLlBJKnAueS9lLmNsaWVudEhlaWdodCksaC5jb3B5KGQpfWZ1bmN0aW9uIHoodCl7aWYoMT09PWIubGVuZ3RoKW0uc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7bS5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1nLnN1YlZlY3RvcnMobSxmKS5tdWx0aXBseVNjYWxhcihuLnBhblNwZWVkKSxDKGcueCxnLnkpLGYuY29weShtKX1mdW5jdGlvbiBEKHQpe2NvbnN0IGU9WSh0KSxpPXQucGFnZVgtZS54LHI9dC5wYWdlWS1lLnksbz1NYXRoLnNxcnQoaSppK3Iqcik7eS5zZXQoMCxvKSx2LnNldCgwLE1hdGgucG93KHkueS9fLnksbi56b29tU3BlZWQpKSxBKHYueSksXy5jb3B5KHkpfWZ1bmN0aW9uIEIodCl7ITEhPT1uLmVuYWJsZWQmJigwPT09Yi5sZW5ndGgmJihuLmRvbUVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUodC5wb2ludGVySWQpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsSCksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsRikpLChmdW5jdGlvbiBlKHQpe2IucHVzaCh0KX0pKHQpLCJ0b3VjaCI9PT10LnBvaW50ZXJUeXBlPyhmdW5jdGlvbiBvKHQpe3N3aXRjaChxKHQpLGIubGVuZ3RoKXtjYXNlIDE6c3dpdGNoKG4udG91Y2hlcy5PTkUpe2Nhc2UgSjB0LlJPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtJKCkscj1pLlRPVUNIX1JPVEFURTticmVhaztjYXNlIEowdC5QQU46aWYoITE9PT1uLmVuYWJsZVBhbilyZXR1cm47TigpLHI9aS5UT1VDSF9QQU47YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztjYXNlIDI6c3dpdGNoKG4udG91Y2hlcy5UV08pe2Nhc2UgSjB0LkRPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiB0KCl7bi5lbmFibGVab29tJiZSKCksbi5lbmFibGVQYW4mJk4oKX0pKCkscj1pLlRPVUNIX0RPTExZX1BBTjticmVhaztjYXNlIEowdC5ET0xMWV9ST1RBVEU6aWYoITE9PT1uLmVuYWJsZVpvb20mJiExPT09bi5lbmFibGVSb3RhdGUpcmV0dXJuOyEoZnVuY3Rpb24gZSgpe24uZW5hYmxlWm9vbSYmUigpLG4uZW5hYmxlUm90YXRlJiZJKCl9KSgpLHI9aS5UT1VDSF9ET0xMWV9ST1RBVEU7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztkZWZhdWx0OnI9aS5OT05FfXIhPT1pLk5PTkUmJm4uZGlzcGF0Y2hFdmVudChub2UpfSkodCk6KGZ1bmN0aW9uIGEodCl7bGV0IGU7c3dpdGNoKHQuYnV0dG9uKXtjYXNlIDA6ZT1uLm1vdXNlQnV0dG9ucy5MRUZUO2JyZWFrO2Nhc2UgMTplPW4ubW91c2VCdXR0b25zLk1JRERMRTticmVhaztjYXNlIDI6ZT1uLm1vdXNlQnV0dG9ucy5SSUdIVDticmVhaztkZWZhdWx0OmU9LTF9c3dpdGNoKGUpe2Nhc2UgWjB0LkRPTExZOmlmKCExPT09bi5lbmFibGVab29tKXJldHVybjshKGZ1bmN0aW9uIGUodCl7Xy5zZXQodC5jbGllbnRYLHQuY2xpZW50WSl9KSh0KSxyPWkuRE9MTFk7YnJlYWs7Y2FzZSBaMHQuUk9UQVRFOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtMKHQpLHI9aS5QQU59ZWxzZXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtQKHQpLHI9aS5ST1RBVEV9YnJlYWs7Y2FzZSBaMHQuUEFOOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtQKHQpLHI9aS5ST1RBVEV9ZWxzZXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtMKHQpLHI9aS5QQU59YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1yIT09aS5OT05FJiZuLmRpc3BhdGNoRXZlbnQobm9lKX0pKHQpKX1mdW5jdGlvbiBIKHQpeyExIT09bi5lbmFibGVkJiYoInRvdWNoIj09PXQucG9pbnRlclR5cGU/KGZ1bmN0aW9uIGUodCl7c3dpdGNoKHEodCkscil7Y2FzZSBpLlRPVUNIX1JPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtPKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX1BBTjppZighMT09PW4uZW5hYmxlUGFuKXJldHVybjt6KHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiBlKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVBhbiYmeih0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1JPVEFURTppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVJvdGF0ZSlyZXR1cm47IShmdW5jdGlvbiBvKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVJvdGF0ZSYmTyh0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX19KSh0KTooZnVuY3Rpb24gbyh0KXtpZighMT09PW4uZW5hYmxlZClyZXR1cm47c3dpdGNoKHIpe2Nhc2UgaS5ST1RBVEU6aWYoITE9PT1uLmVuYWJsZVJvdGF0ZSlyZXR1cm47IShmdW5jdGlvbiBlKHQpe2Quc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpLHAuc3ViVmVjdG9ycyhkLGgpLm11bHRpcGx5U2NhbGFyKG4ucm90YXRlU3BlZWQpO2NvbnN0IGU9bi5kb21FbGVtZW50O1MoMipNYXRoLlBJKnAueC9lLmNsaWVudEhlaWdodCksTSgyKk1hdGguUEkqcC55L2UuY2xpZW50SGVpZ2h0KSxoLmNvcHkoZCksbi51cGRhdGUoKX0pKHQpO2JyZWFrO2Nhc2UgaS5ET0xMWTppZighMT09PW4uZW5hYmxlWm9vbSlyZXR1cm47IShmdW5jdGlvbiByKHQpe3kuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpLHYuc3ViVmVjdG9ycyh5LF8pLHYueT4wP0EodygpKTp2Lnk8MCYmayh3KCkpLF8uY29weSh5KSxuLnVwZGF0ZSgpfSkodCk7YnJlYWs7Y2FzZSBpLlBBTjppZighMT09PW4uZW5hYmxlUGFuKXJldHVybjshKGZ1bmN0aW9uIG8odCl7bS5zZXQodC5jbGllbnRYLHQuY2xpZW50WSksZy5zdWJWZWN0b3JzKG0sZikubXVsdGlwbHlTY2FsYXIobi5wYW5TcGVlZCksQyhnLngsZy55KSxmLmNvcHkobSksbi51cGRhdGUoKX0pKHQpfX0pKHQpKX1mdW5jdGlvbiBGKHQpe1codCksMD09PWIubGVuZ3RoJiYobi5kb21FbGVtZW50LnJlbGVhc2VQb2ludGVyQ2FwdHVyZSh0LnBvaW50ZXJJZCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixIKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixGKSksbi5kaXNwYXRjaEV2ZW50KGlvZSkscj1pLk5PTkV9ZnVuY3Rpb24gVih0KXtXKHQpfWZ1bmN0aW9uIFUodCl7ITEhPT1uLmVuYWJsZWQmJiExIT09bi5lbmFibGVab29tJiZyPT09aS5OT05FJiYodC5wcmV2ZW50RGVmYXVsdCgpLG4uZGlzcGF0Y2hFdmVudChub2UpLChmdW5jdGlvbiBlKHQpe3QuZGVsdGFZPDA/ayh3KCkpOnQuZGVsdGFZPjAmJkEodygpKSxuLnVwZGF0ZSgpfSkodCksbi5kaXNwYXRjaEV2ZW50KGlvZSkpfWZ1bmN0aW9uIGoodCl7ITEhPT1uLmVuYWJsZWQmJiExIT09bi5lbmFibGVQYW4mJihmdW5jdGlvbiBlKHQpe2xldCBlPSExO3N3aXRjaCh0LmNvZGUpe2Nhc2Ugbi5rZXlzLlVQOkMoMCxuLmtleVBhblNwZWVkKSxlPSEwO2JyZWFrO2Nhc2Ugbi5rZXlzLkJPVFRPTTpDKDAsLW4ua2V5UGFuU3BlZWQpLGU9ITA7YnJlYWs7Y2FzZSBuLmtleXMuTEVGVDpDKG4ua2V5UGFuU3BlZWQsMCksZT0hMDticmVhaztjYXNlIG4ua2V5cy5SSUdIVDpDKC1uLmtleVBhblNwZWVkLDApLGU9ITB9ZSYmKHQucHJldmVudERlZmF1bHQoKSxuLnVwZGF0ZSgpKX0pKHQpfWZ1bmN0aW9uIEcodCl7ITEhPT1uLmVuYWJsZWQmJnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBXKHQpe2RlbGV0ZSB4W3QucG9pbnRlcklkXTtmb3IobGV0IGU9MDtlPGIubGVuZ3RoO2UrKylpZihiW2VdLnBvaW50ZXJJZD09dC5wb2ludGVySWQpcmV0dXJuIHZvaWQgYi5zcGxpY2UoZSwxKX1mdW5jdGlvbiBxKHQpe2xldCBlPXhbdC5wb2ludGVySWRdO3ZvaWQgMD09PWUmJihlPW5ldyBENXQseFt0LnBvaW50ZXJJZF09ZSksZS5zZXQodC5wYWdlWCx0LnBhZ2VZKX1mdW5jdGlvbiBZKHQpe3JldHVybiB4Wyh0LnBvaW50ZXJJZD09PWJbMF0ucG9pbnRlcklkP2JbMV06YlswXSkucG9pbnRlcklkXX1uLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLEcpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsQiksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLFYpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsVSx7cGFzc2l2ZTohMX0pLHRoaXMudXBkYXRlKCl9fWNsYXNzIG9vZSBleHRlbmRzIGg1dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2xhc3RNZXNoPW51bGwsdGhpcy5fY2xvY2s9bmV3IGhpZSx0aGlzLl9jYW52YXNTaXplPW51bGwsdGhpcy5fbGF5ZXJzQ29uZmlnPW51bGwsdGhpcy5fcnVuQ29sb3I9dH1faXNPYmplY3QodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10JiYhQXJyYXkuaXNBcnJheSh0KX1fYXBwbHlEZWZhdWx0cyh0LGUpe2xldCBuPXt9O2NvbnN0IGk9W3QsZV07Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9aVt0XTtmb3IobGV0IHQgaW4gZSl7Y29uc3QgaT10IGluIG47dGhpcy5faXNPYmplY3QoZVt0XSk/blt0XT10aGlzLl9hcHBseURlZmF1bHRzKG5bdF18fHt9LGVbdF0pOml8fChuW3RdPWVbdF0pfX1yZXR1cm4gbn1fY3JlYXRlTGF5ZXJzKCl7aWYodGhpcy5fbGF5ZXJzQ29uZmlnJiZ0aGlzLl9zY2VuZSYmdGhpcy5fbGFzdE1lc2gpe2lmKHRoaXMuX2xheWVyc0NvbmZpZy5zaG93Qm91bmRpbmdCb3gpe3ZhciB0PW5ldyBkcmUodGhpcy5fbGFzdE1lc2gsbmV3ICQ1dCgicmdiKDAsIDAsIDI1NSkiKSk7dGhpcy5fc2NlbmUuYWRkKHQpfWlmKHRoaXMuX2xheWVyc0NvbmZpZy5zaG93QXhlcyl7dmFyIGU9bmV3IGdyZSg1KTt0aGlzLl9zY2VuZS5hZGQoZSl9fX1zZXRMYXllcnNDb25maWcodCl7dGhpcy5fbGF5ZXJzQ29uZmlnPXRoaXMuX2FwcGx5RGVmYXVsdHModCx0aGlzLl9sYXllcnNDb25maWd8fHt9KX1fY3JlYXRlV29ybGQodCxlKXtpZih0aGlzLmlzUmVhZHkoKSlyZXR1cm47dGhpcy5fc2NlbmU9bmV3IHY3dDt2YXIgbj1uZXcgYnJlW3QuY2FtZXJhLmNsc10odC5jYW1lcmEuZm92LHRoaXMuX2NhbnZhc1NpemUud2lkdGgvdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQsdC5jYW1lcmEubmVhcix0LmNhbWVyYS5mYXIpO3RoaXMuX2NhbWVyYT1uLHRoaXMuaW5pdENhbWVyYVBvc2l0aW9uPW51bGwsdC5jYW1lcmEucG9zaXRpb24mJih0aGlzLmluaXRDYW1lcmFQb3NpdGlvbj0obmV3IGEzdCkuZnJvbUFycmF5KHQuY2FtZXJhLnBvc2l0aW9uKSksdGhpcy5pbml0Q2FtZXJhTG9va0F0PW51bGwsdC5jYW1lcmEubG9va0F0JiYodGhpcy5pbml0Q2FtZXJhTG9va0F0PShuZXcgYTN0KS5mcm9tQXJyYXkodC5jYW1lcmEubG9va0F0KSk7dmFyIGk9bmV3IHJvZShuLGUpO2NvbnN0IHI9aTtyLmxvb2tTcGVlZD0uNCxyLm1vdmVtZW50U3BlZWQ9MjAsci5ub0ZseT0hMCxyLmxvb2tWZXJ0aWNhbD0hMCxyLmNvbnN0cmFpblZlcnRpY2FsPSEwLHIudmVydGljYWxNaW49MSxyLnZlcnRpY2FsTWF4PTIsci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKSksdGhpcy5fY2FtZXJhQ29udHJvbHM9aSx0aGlzLl9yZW5kZXJlcj1uZXcgbTd0KHthbnRpYWxpYXM6ITB9KSx0aGlzLl9yZW5kZXJlci5zZXRQaXhlbFJhdGlvKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKSx0aGlzLl9yZW5kZXJlci5zZXRTaXplKHRoaXMuX2NhbnZhc1NpemUud2lkdGgsdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQpLHRoaXMuX3JlbmRlcmVyLnNldENsZWFyQ29sb3IoMTY3NzcyMTUsMSl9X2NsZWFyU2NlbmUoKXtmb3IoO3RoaXMuX3NjZW5lLmNoaWxkcmVuLmxlbmd0aD4wOyl0aGlzLl9zY2VuZS5yZW1vdmUodGhpcy5fc2NlbmUuY2hpbGRyZW5bMF0pfWdldFJlbmRlcmVyKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyfWdldENhbWVyYUNvbnRyb2xzKCl7cmV0dXJuIHRoaXMuX2NhbWVyYUNvbnRyb2xzfWlzUmVhZHkoKXtyZXR1cm4hIXRoaXMuX2NhbWVyYSYmISF0aGlzLl9jYW1lcmFDb250cm9sc31nZXRDYW1lcmFQb3NpdGlvbigpe3JldHVybntmYXI6dGhpcy5fY2FtZXJhLmZhcixwb3NpdGlvbjp0aGlzLl9jYW1lcmEucG9zaXRpb24uY2xvbmUoKSx0YXJnZXQ6dGhpcy5fY2FtZXJhQ29udHJvbHMudGFyZ2V0LmNsb25lKCl9fXNldENhbnZhc1NpemUodCl7dGhpcy5fY2FudmFzU2l6ZT10fWRyYXcoKXt0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4JiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4KSx0aGlzLl9jYW1lcmEuYXNwZWN0PXRoaXMuX2NhbnZhc1NpemUud2lkdGgvdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQsdGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLl9yZW5kZXJlci5zZXRTaXplKHRoaXMuX2NhbnZhc1NpemUud2lkdGgsdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQpO2NvbnN0IHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jbG9jay5nZXREZWx0YSgpO3RoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZShlKSx0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4PXJlcXVlc3RBbmltYXRpb25GcmFtZSh0KSx0aGlzLl9yZW5kZXJlci5yZW5kZXIodGhpcy5fc2NlbmUsdGhpcy5fY2FtZXJhKX0uYmluZCh0aGlzKTt0KCl9dXBkYXRlU2NlbmUodCxlKXtsZXQgbj17fTsiY29uZmlnImluIHQmJnQuY29uZmlnJiYobj1KU09OLnBhcnNlKHQuY29uZmlnKSksdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJiZWZvcmVVcGRhdGVTY2VuZSJ9KTtuPXRoaXMuX2FwcGx5RGVmYXVsdHMobix7Y2FtZXJhOntjbHM6IlBlcnNwZWN0aXZlQ2FtZXJhIixmb3Y6NzUsbmVhcjouMSxmYXI6MWUzfSxsaWdodHM6W3tjbHM6IkFtYmllbnRMaWdodCIsY29sb3I6IiNmZmZmZmYiLGludGVuc2l0eTouNzV9LHtjbHM6IkRpcmVjdGlvbmFsTGlnaHQiLGNvbG9yOiIjZmZmZmZmIixpbnRlbnNpdHk6Ljc1LHBvc2l0aW9uOlswLC0xLDJdfV19KSx0aGlzLl9jcmVhdGVXb3JsZChuLGUpLHRoaXMuX2NsZWFyU2NlbmUoKSx0aGlzLl9jcmVhdGVMaWdodHModGhpcy5fc2NlbmUsbiksdGhpcy5fY3JlYXRlR2VvbWV0cnkodCxuKSx0aGlzLl9jcmVhdGVMYXllcnMoKSx0aGlzLmRyYXcoKX1yZXNldFZpZXcodCl7aWYoIXRoaXMuaXNSZWFkeSgpKXJldHVybjtsZXQgZTt0aGlzLl9jYW1lcmFDb250cm9scy5yZXNldCgpLCF0JiZ0aGlzLl9sYXN0TWVzaCYmKGU9dGhpcy5fbGFzdE1lc2gpLGUmJih0aGlzLl9maXRPYmplY3RUb1ZpZXdwb3J0KGUpLHRoaXMuX2xhc3RNZXNoPWUpLHRoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZSgpfV9jcmVhdGVHZW9tZXRyeSh0LGUpe2NvbnN0IG49dC5tZXNoO24udmVydGljZXMmJm4uZmFjZXMmJm4uZmFjZXMubGVuZ3RoP3RoaXMuX2NyZWF0ZU1lc2gobixlKTp0aGlzLl9jcmVhdGVQb2ludENsb3VkKG4sZSl9X2NyZWF0ZVBvaW50Q2xvdWQodCxlKXtjb25zdCBuPXQudmVydGljZXMsaT10LmNvbG9ycztsZXQgcj17bWF0ZXJpYWw6e2NsczoiUG9pbnRzTWF0ZXJpYWwiLHNpemU6LjAwNX19O2kmJmkubGVuZ3RoPT1uLmxlbmd0aD9yLm1hdGVyaWFsLnZlcnRleENvbG9ycz0hMDpyLm1hdGVyaWFsLmNvbG9yPXRoaXMuX3J1bkNvbG9yO2NvbnN0IG89dGhpcy5fYXBwbHlEZWZhdWx0cyhlLHIpLGE9bmV3IGo0dCxzPW5ldyBGbG9hdDMyQXJyYXkobi5mbGF0KCkpO2lmKGEuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEU0dChzLDMpKSxpJiZpLmxlbmd0aD09bi5sZW5ndGgpe2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShpLmZsYXQoKSk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT10W2VdLzI1NTthLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBFNHQodCwzKSl9dmFyIGw9bmV3IGJyZVtvLm1hdGVyaWFsLmNsc10oby5tYXRlcmlhbCksYz1uZXcgeHRlKGEsbCk7dGhpcy5fc2NlbmUuYWRkKGMpLHRoaXMuX2xhc3RNZXNoPWN9c2V0Q2FtZXJhVmlld3BvaW50KHQsZSxuKXt0aGlzLl9zaWxlbnQ9ITAsdGhpcy5fY2FtZXJhLmZhcj1lLHRoaXMuX2NhbWVyYS5wb3NpdGlvbi5zZXQodC54LHQueSx0LnopLHRoaXMuX2NhbWVyYS5sb29rQXQobi5jbG9uZSgpKSx0aGlzLl9jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHRoaXMuX2NhbWVyYUNvbnRyb2xzLnRhcmdldD1uLmNsb25lKCksdGhpcy5fY2FtZXJhQ29udHJvbHMudXBkYXRlKCksdGhpcy5fc2lsZW50PSExfV9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlKHQpe3RoaXMuX3NpbGVudHx8dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJjYW1lcmFQb3NpdGlvbkNoYW5nZSIsZXZlbnQ6dH0pfV9maXRPYmplY3RUb1ZpZXdwb3J0KHQpe3ZhciBlLG47Y29uc3QgaT1uZXcgYzN0LHI9bmV3IGEzdCxvPW5ldyBhM3Q7aS5zZXRGcm9tT2JqZWN0KHQpLGkuZ2V0Q2VudGVyKHIpLGkuZ2V0U2l6ZShvKTtjb25zdCBhPU1hdGgubWF4KG8ueCxvLnksby56KSxzPXRoaXMuX2NhbWVyYS5mb3YqKE1hdGguUEkvMTgwKTtsZXQgbD0xLjI1Kk1hdGguYWJzKGEvKDIqTWF0aC50YW4ocy8yKSkpO2NvbnN0IGM9aS5taW4ueix1PWM8MD8tYytsOmwtYyxoPW51bGwhPT0oZT10aGlzLmluaXRDYW1lcmFQb3NpdGlvbikmJnZvaWQgMCE9PWU/ZTpuZXcgYTN0KHIueCxyLnksbCksZD1udWxsIT09KG49dGhpcy5pbml0Q2FtZXJhTG9va0F0KSYmdm9pZCAwIT09bj9uOnI7dGhpcy5zZXRDYW1lcmFWaWV3cG9pbnQoaCwzKnUsZCl9X2NyZWF0ZU1lc2godCxlKXtjb25zdCBuPXQudmVydGljZXMsaT10LmZhY2VzLHI9dC5jb2xvcnMsbz10aGlzLl9hcHBseURlZmF1bHRzKGUse21hdGVyaWFsOntjbHM6Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIixjb2xvcjoiI2EwYTBhMCIscm91Z2huZXNzOjEsbWV0YWxuZXNzOjB9fSksYT1uZXcgajR0LHM9bmV3IEZsb2F0MzJBcnJheShuLmZsYXQoKSk7YS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgRTR0KHMsMykpO2NvbnN0IGw9bmV3IFVpbnQxNkFycmF5KGkuZmxhdCgpKTtpZihyJiZyLmxlbmd0aCl7Y29uc3QgdD1yLmZsYXQoKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdPXRbZV0vMjU1O2Euc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IEU0dChuZXcgRmxvYXQzMkFycmF5KHQpLDMpKSxvLm1hdGVyaWFsPW8ubWF0ZXJpYWx8fHt9LG8ubWF0ZXJpYWwudmVydGV4Q29sb3JzPSEwfWEuY2VudGVyKCksYS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxhLnNldEluZGV4KG5ldyBFNHQobCwxKSksYS5jb21wdXRlVmVydGV4Tm9ybWFscygpO2xldCBjPW5ldyBicmVbby5tYXRlcmlhbC5jbHNdKG8ubWF0ZXJpYWwpLHU9bmV3IHM2dChhLGMpO3UuY2FzdFNoYWRvdz0hMCx1LnJlY2VpdmVTaGFkb3c9ITAsdGhpcy5fc2NlbmUuYWRkKHUpLHRoaXMuX2xhc3RNZXNoPXV9X2NyZWF0ZUxpZ2h0cyh0LGUpe2ZvcihsZXQgbj0wO248ZS5saWdodHMubGVuZ3RoO24rKyl7Y29uc3QgaT1lLmxpZ2h0c1tuXTtsZXQgcj1uZXcgYnJlW2kuY2xzXShpLmNvbG9yLGkuaW50ZW5zaXR5KTtpLnBvc2l0aW9uJiZyLnBvc2l0aW9uLnNldChpLnBvc2l0aW9uWzBdLGkucG9zaXRpb25bMV0saS5wb3NpdGlvblsyXSksdC5hZGQocil9fX1sZXQgYW9lPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZWxlY3RlZFZpZXc9ImFsbCIsdGhpcy5hY3RpdmU9ITEsdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uPV9PLHRoaXMuX3N0ZXBzPVtdLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZD0hMSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkPSExLHRoaXMuX2lzTWVzaExvYWRpbmc9ITF9Z2V0IF9ydW5Db2xvcigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb24odGhpcy5ydW4pfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9kYXRhUHJvdmlkZXI9bmV3ICQwdCh0aGlzLnJlcXVlc3RNYW5hZ2VyKTtjb25zdCB0PW5ldyBvb2UodGhpcy5fcnVuQ29sb3IpO3QuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlVXBkYXRlU2NlbmUiLHRoaXMuX3VwZGF0ZUNhbnZhc1NpemUuYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJjYW1lcmFQb3NpdGlvbkNoYW5nZSIsdGhpcy5fb25DYW1lcmFQb3NpdGlvbkNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLl9tZXNoVmlld2VyPXR9cmVsb2FkKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2RhdGFQcm92aWRlciYmKHRoaXMuX2lzTWVzaExvYWRpbmc9ITAsdGhpcy5fZGF0YVByb3ZpZGVyLnJlbG9hZCh0aGlzLnJ1bix0aGlzLnRhZyx0aGlzLnNhbXBsZSkudGhlbigodD0+e3QmJih0aGlzLl9zdGVwcz10LHRoaXMuX3N0ZXBJbmRleD10Lmxlbmd0aC0xKX0pKS5jYXRjaCgodD0+e2lmKCF0fHwhdC5jb2RlfHx0LmNvZGUhPXEwdC5DQU5DRUxMRUQpdGhyb3cgdD10fHwiUmVzcG9uc2UgcHJvY2Vzc2luZyBmYWlsZWQuIixuZXcgRXJyb3IodCl9KSkpfV91cGRhdGVTY2VuZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7dCYmdC5tZXNoJiYodGhpcy5fbWVzaFZpZXdlci51cGRhdGVTY2VuZSh0LHRoaXMpLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWR8fCh0aGlzLl9tZXNoVmlld2VyLnJlc2V0VmlldygpLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQ9ITApLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZHx8KHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0aGlzLl9tZXNoVmlld2VyLmdldFJlbmRlcmVyKCkuZG9tRWxlbWVudCksdGhpcy5fbWVzaFZpZXdlckF0dGFjaGVkPSEwKSl9X2RlYm91bmNlZEZldGNoTWVzaCgpe3RoaXMuZGVib3VuY2UoImZldGNoTWVzaCIsKCgpPT50aGlzLl9tYXliZUZldGNoTWVzaCgpKSwxMDApfV9tYXliZUZldGNoTWVzaCgpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9jdXJyZW50U3RlcDtpZih0JiYhdC5tZXNoJiYhdC5tZXNoRmV0Y2hpbmcpe3QubWVzaEZldGNoaW5nPSEwLHRoaXMuX2lzTWVzaExvYWRpbmc9ITA7dHJ5e2NvbnN0IGU9eWllbGQgdGhpcy5fZGF0YVByb3ZpZGVyLmZldGNoRGF0YSh0LHRoaXMucnVuLHRoaXMudGFnLHRoaXMuc2FtcGxlKTt0Lm1lc2g9ZVswXSx0aGlzLm5vdGlmeVBhdGgoIl9jdXJyZW50U3RlcC5tZXNoIil9Y2F0Y2godCl7aWYoIXR8fCF0LmNvZGV8fHQuY29kZSE9cTB0LkNBTkNFTExFRCl0aHJvdyB0PXR8fCJSZXNwb25zZSBwcm9jZXNzaW5nIGZhaWxlZC4iLG5ldyBFcnJvcih0KX1maW5hbGx5e3RoaXMuX2lzTWVzaExvYWRpbmc9ITEsdC5tZXNoRmV0Y2hpbmc9ITF9fX0pKX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZSgpe2lmKCF0aGlzLl9tZXNoVmlld2VyLmlzUmVhZHkoKSlyZXR1cm47Y29uc3QgdD1uZXcgQ3VzdG9tRXZlbnQoImNhbWVyYS1wb3NpdGlvbi1jaGFuZ2UiLHtkZXRhaWw6dGhpcy5fbWVzaFZpZXdlci5nZXRDYW1lcmFQb3NpdGlvbigpfSk7dGhpcy5kaXNwYXRjaEV2ZW50KHQpfXNldENhbWVyYVZpZXdwb2ludCh0LGUsbil7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW1lcmFWaWV3cG9pbnQodCxlLG4pfV91cGRhdGVDYW52YXNTaXplKCl7Y29uc3QgdD10aGlzLm9mZnNldFdpZHRoLGU9dCxuPXRoaXMuJCQoIi50Zi1tZXNoLWxvYWRlci1oZWFkZXIiKS5vZmZzZXRIZWlnaHQ7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW52YXNTaXplKHt3aWR0aDp0LGhlaWdodDplLW59KX1yZWRyYXcoKXt0aGlzLl91cGRhdGVDYW52YXNTaXplKCksdGhpcy5pc0Nvbm5lY3RlZCYmdGhpcy5fbWVzaFZpZXdlci5kcmF3KCl9X2hhc0F0TGVhc3RPbmVTdGVwKHQpe3JldHVybiEhdCYmdC5sZW5ndGg+MH1faGFzTXVsdGlwbGVTdGVwcyh0KXtyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9jdXJyZW50U3RlcCgpe3JldHVybiB0aGlzLl9zdGVwc1t0aGlzLl9zdGVwSW5kZXhdfHxudWxsfWdldCBfc3RlcFZhbHVlKCl7Y29uc3QgdD10aGlzLl9jdXJyZW50U3RlcDtyZXR1cm4gdD90LnN0ZXA6MH1nZXQgX2N1cnJlbnRXYWxsVGltZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/U08odC53YWxsX3RpbWUpOiIifV9nZXRNYXhTdGVwSW5kZXgodCl7cmV0dXJuIHQubGVuZ3RoLTF9X2dldFNhbXBsZVRleHQodCl7cmV0dXJuIFN0cmluZyh0KzEpfV9oYXNNdWx0aXBsZVNhbXBsZXModCl7cmV0dXJuIHQ+MX1fdXBkYXRlVmlldygpe3RoaXMuX21lc2hWaWV3ZXImJiJhbGwiPT10aGlzLnNlbGVjdGVkVmlldyYmdGhpcy5fbWVzaFZpZXdlci5yZXNldFZpZXcoKX10b0xvY2FsZVN0cmluZ18odCl7cmV0dXJuIHQudG9Mb2NhbGVTdHJpbmcoKX19O2FvZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgY29sb3I9IltbX3J1bkNvbG9yXV0iIGNsYXNzPSJ0Zi1tZXNoLWxvYWRlci1oZWFkZXIiPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU2FtcGxlcyhvZlNhbXBsZXMpXV0iPgogICAgICAgIDxkaXY+c2FtcGxlOiBbW19nZXRTYW1wbGVUZXh0KHNhbXBsZSldXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXAoX3N0ZXBzKV1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcAogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiCiAgICAgICAgICAgICAgPltbdG9Mb2NhbGVTdHJpbmdfKF9zdGVwVmFsdWUpXV08L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2N1cnJlbnRXYWxsVGltZV1dIj4KICAgICAgICAgICAgICBbW19jdXJyZW50V2FsbFRpbWVdXQogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCByaWdodCI+CiAgICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlIGhpZGRlbiQ9IltbIV9pc01lc2hMb2FkaW5nXV0iPgogICAgICAgICAgICA8L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU3RlcHMoX3N0ZXBzKV1dIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0ic3RlcHMiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfZ2V0TWF4U3RlcEluZGV4KF9zdGVwcyldXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX2dldE1heFN0ZXBJbmRleChfc3RlcHMpXV0iCiAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICAgIHZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdGYtY2FyZC1oZWFkaW5nPgogICAgPHN0eWxlPgogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAxcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcHg7CiAgICAgIH0KICAgICAgLnRmLW1lc2gtbG9hZGVyLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDVweDsKICAgICAgfQogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGFvZS5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxhb2UucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sYW9lLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGFvZS5wcm90b3R5cGUsIm9mU2FtcGxlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxhb2UucHJvdG90eXBlLCJzZWxlY3RlZFZpZXciLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxhb2UucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYnIpXSxhb2UucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixvb2UpXSxhb2UucHJvdG90eXBlLCJfbWVzaFZpZXdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIiwkMHQpXSxhb2UucHJvdG90eXBlLCJfZGF0YVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGFvZS5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxhb2UucHJvdG90eXBlLCJfc3RlcHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGFvZS5wcm90b3R5cGUsIl9zdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxhb2UucHJvdG90eXBlLCJfbWVzaFZpZXdlckF0dGFjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sYW9lLnByb3RvdHlwZSwiX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxhb2UucHJvdG90eXBlLCJfaXNNZXNoTG9hZGluZyIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxhb2UucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW2EoInJ1biIsInRhZyIsImFjdGl2ZSIsIl9kYXRhUHJvdmlkZXIiLCJfbWVzaFZpZXdlciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sYW9lLnByb3RvdHlwZSwicmVsb2FkIixudWxsKSx0KFthKCJfY3VycmVudFN0ZXAuKiIsIl9tZXNoVmlld2VyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxhb2UucHJvdG90eXBlLCJfdXBkYXRlU2NlbmUiLG51bGwpLHQoW2EoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sYW9lLnByb3RvdHlwZSwiX2RlYm91bmNlZEZldGNoTWVzaCIsbnVsbCksdChbcygiX3N0ZXBzIiwiX3N0ZXBJbmRleCIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGFvZS5wcm90b3R5cGUsIl9jdXJyZW50U3RlcCIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sYW9lLnByb3RvdHlwZSwiX3N0ZXBWYWx1ZSIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sYW9lLnByb3RvdHlwZSwiX2N1cnJlbnRXYWxsVGltZSIsbnVsbCksdChbYSgic2VsZWN0ZWRWaWV3IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxhb2UucHJvdG90eXBlLCJfdXBkYXRlVmlldyIsbnVsbCksYW9lPXQoW2koInRmLW1lc2gtbG9hZGVyIildLGFvZSk7bGV0IHNvZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fdGFnRmlsdGVyPSIuKiIsdGhpcy5fc2VsZWN0ZWRWaWV3PSJhbGwiLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBicix3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKCk9Pnt0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemUoKX0pLCExKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9X2dldEFsbENoaWxkcmVuKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLW1lc2gtbG9hZGVyIikpfV9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlZCh0KXsic2hhcmUiPT10aGlzLl9zZWxlY3RlZFZpZXcmJnRoaXMuX2dldEFsbENoaWxkcmVuKCkuZm9yRWFjaCgoZT0+e3QudGFyZ2V0IT1lJiZlLnNldENhbWVyYVZpZXdwb2ludCh0LmRldGFpbC5wb3NpdGlvbix0LmRldGFpbC5mYXIsdC5kZXRhaWwudGFyZ2V0KX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKHRoaXMuX3JlbG9hZE1lc2hlcy5iaW5kKHRoaXMpKX1faGFuZGxlV2luZG93UmVzaXplKCl7dGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKCh0PT57dC5yZWRyYXcoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1FcigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1mcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLl9kYXRhTm90Rm91bmQ9MD09PWUubGVuZ3RoLHRoaXMuX3J1blRvVGFnSW5mbz10fSkpfV9yZWxvYWRNZXNoZXMoKXt0aGlzLl9nZXRBbGxDaGlsZHJlbigpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIENlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LG9mU2FtcGxlczpufSkpKX1yZXR1cm4gTnIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX19O3NvZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IHNsb3Q9InNpZGViYXIiIGNsYXNzPSJhbGwtY29udHJvbHMiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiB2aWV3LWNvbnRyb2wiPgogICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Qb2ludCBvZiB2aWV3PC9oMz4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgICAgICAgIGlkPSJ2aWV3LXJhZGlvLWdyb3VwIgogICAgICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVmlld319IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9ImFsbC1yYWRpby1idXR0b24iIG5hbWU9ImFsbCI+CiAgICAgICAgICAgICAgICAgIERpc3BsYXkgYWxsIHBvaW50cwogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0iYWxsLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIFpvb20gYW5kIGNlbnRlciBjYW1lcmEgdG8gZGlzcGxheSBhbGwgcG9pbnRzIGF0IG9uY2UuIE5vdGUsCiAgICAgICAgICAgICAgICAgIHRoYXQgc29tZSBwb2ludHMgY291bGQgYmUgdG9vIGZhciAoaS5lLiB0b28gc21hbGwpIHRvIGJlCiAgICAgICAgICAgICAgICAgIHZpc2libGUuCiAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJ1c2VyLXJhZGlvLWJ1dHRvbiIgbmFtZT0idXNlciI+CiAgICAgICAgICAgICAgICAgIEN1cnJlbnQgdmlldwogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0idXNlci1yYWRpby1idXR0b24iCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBLZWVwIGN1cnJlbnQgY2FtZXJhIHBvc2l0aW9uIGFuZCB6b29tIGxldmVsLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0ic2hhcmUtcmFkaW8tYnV0dG9uIiBuYW1lPSJzaGFyZSI+CiAgICAgICAgICAgICAgICAgIFNoYXJlIHZpZXdwb2ludAogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0ic2hhcmUtcmFkaW8tYnV0dG9uIgogICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgU2hhcmUgdmlld3BvaW50IGFtb25nIGFsbCBjYW1lcmFzLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHBvaW50IGNsb3VkIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHBvaW50IGNsb3VkIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1tZXNoLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLXZpZXc9IltbX3NlbGVjdGVkVmlld11dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHNhbXBsZT0iW1tpdGVtLnNhbXBsZV1dIgogICAgICAgICAgICAgICAgICBvZi1zYW1wbGVzPSJbW2l0ZW0ub2ZTYW1wbGVzXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgY2xhc3M9InRmLW1lc2gtbG9hZGVyLWNvbnRhaW5lciIKICAgICAgICAgICAgICAgICAgb24tY2FtZXJhLXBvc2l0aW9uLWNoYW5nZT0iX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2VkIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC90Zi1tZXNoLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgfQogICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICB9CgogICAgICAucnVucy1zZWxlY3RvciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CgogICAgICB0Zi1ydW5zLXNlbGVjdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIGgzLnRpdGxlIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC52aWV3LWNvbnRyb2wgcGFwZXItcmFkaW8tZ3JvdXAgewogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQogICAgICAvKiBMYXlvdXQgbXVzdCBiZSBob3Jpem9udGFsLCBpLmUuIGl0ZW1zIGFycmFuZ2VkIGluIGEgcm93LiBJZiBpdGVtcyBjYW5ub3QgZml0IGluIGEgcm93LAogICAgICAgKiB0aGV5IHNob3VsZCBiZSBtb3ZlZCB0byBuZXh0IGxpbmUuIEFsbCBpdGVtcyBtdXN0IGJlIHNxdWFyZSBhdCBhbGwgdGltZXMuIE1pbmltdW0gc2l6ZSBvZgogICAgICAgKiB0aGUgaXRlbSBpcyA0ODBweC4gVGhpcyBtZWFucyB0aGF0IG1heGltdW0gc2l6ZSBvZiB0aGUgaXRlbSBtdXN0IGJlIDQ4MHB4ICsgNDc5cHggPSA5NTlweC4KICAgICAgICogKi8KICAgICAgLmhvcml6b250YWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgdGYtbWVzaC1sb2FkZXIgewogICAgICAgIHdpZHRoOiA0ODBweDsKICAgICAgICBmbGV4LWJhc2lzOiA0ODBweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHNvZS5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHNvZS5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sc29lLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHNvZS5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sc29lLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sc29lLnByb3RvdHlwZSwiX3NlbGVjdGVkVmlldyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzb2UucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxzb2UucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksc29lPXQoW2koIm1lc2gtZGFzaGJvYXJkIiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sc29lKTtsZXQgbG9lPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5faW5zdGFsbENvbW1hbmQ9InBpcCBpbnN0YWxsIC1VIHRlbnNvcmJvYXJkLXBsdWdpbi1wcm9maWxlIn1fY29weUluc3RhbGxDb21tYW5kKCl7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PSgpPT5uKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7dGhpcy4kLmNvbW1hbmRUZXh0YXJlYS5zZWxlY3QoKTt0cnl7eWllbGQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5faW5zdGFsbENvbW1hbmQpfWNhdGNoKHQpe2lmKCFkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpKXJldHVybiBQcm9taXNlLnJlamVjdCgpfX0pKSxlPXRoaXMuJC5jb3BpZWRNZXNzYWdlO3RyeXt5aWVsZCB0KCksZS5pbm5lclRleHQ9IkNvcGllZC4ifWNhdGNoKHQpe2UuaW5uZXJUZXh0PSJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQuIn19KSl9X3JlbW92ZUNvcGllZE1lc3NhZ2UoKXt0aGlzLiQuY29waWVkTWVzc2FnZS5pbm5lclRleHQ9IiJ9fTtsb2UudGVtcGxhdGU9eGVgCiAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgPGgzPlRoZSBwcm9maWxlIHBsdWdpbiBoYXMgbW92ZWQuPC9oMz4KICAgICAgPHA+CiAgICAgICAgUGxlYXNlIGluc3RhbGwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBwcm9maWxlIHBsdWdpbiBmcm9tIFB5UEkgYnkKICAgICAgICBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHRoZSBtYWNoaW5lIHJ1bm5pbmcgVGVuc29yQm9hcmQ6CiAgICAgIDwvcD4KICAgICAgPHRleHRhcmVhCiAgICAgICAgaWQ9ImNvbW1hbmRUZXh0YXJlYSIKICAgICAgICByZWFkb25seT0iIgogICAgICAgIHJvd3M9IjEiCiAgICAgICAgb24tYmx1cj0iX3JlbW92ZUNvcGllZE1lc3NhZ2UiCiAgICAgID4KW1tfaW5zdGFsbENvbW1hbmRdXTwvdGV4dGFyZWEKICAgICAgPgogICAgICA8ZGl2IGlkPSJjb3B5Q29udGFpbmVyIj4KICAgICAgICA8c3BhbiBpZD0iY29waWVkTWVzc2FnZSI+PC9zcGFuPgogICAgICAgIDxwYXBlci1idXR0b24gcmFpc2VkPSIiIG9uLXRhcD0iX2NvcHlJbnN0YWxsQ29tbWFuZCIKICAgICAgICAgID5Db3B5IHRvIGNsaXBib2FyZDwvcGFwZXItYnV0dG9uCiAgICAgICAgPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlIHsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgfQogICAgICAjY29tbWFuZFRleHRhcmVhIHsKICAgICAgICBtYXJnaW4tdG9wOiAxZXg7CiAgICAgICAgcGFkZGluZzogMWV4IDFlbTsKICAgICAgICByZXNpemU6IHZlcnRpY2FsOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgICNjb3B5Q29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CiAgICAgICNjb3BpZWRNZXNzYWdlIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxZW07CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxsb2UucHJvdG90eXBlLCJfaW5zdGFsbENvbW1hbmQiLHZvaWQgMCksbG9lPXQoW2koInRmLXByb2ZpbGUtcmVkaXJlY3QtZGFzaGJvYXJkIildLGxvZSk7bGV0IGNvZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeT17fSx0aGlzLl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5PXt9LHRoaXMuX2NvbG9yU2NhbGVGdW5jdGlvbj17c2NhbGU6X099LHRoaXMuX2NhbmNlbGxlcj1uZXcgeE8sdGhpcy5feENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZD0oKT0+e2NvbnN0IHQ9bmV3IElPLlNjYWxlcy5MaW5lYXI7cmV0dXJue3NjYWxlOnQsYXhpczpuZXcgSU8uQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpLGFjY2Vzc29yOnQ9PnQucmVjYWxsfX0sdGhpcy5feVZhbHVlQWNjZXNzb3I9dD0+dC5wcmVjaXNpb24sdGhpcy5fdG9vbHRpcENvbHVtbnM9KCgpPT57Y29uc3QgdD1TQ3QoNCksZT1lPT5pc05hTihlKT8iTmFOIjp0KGUpO3JldHVyblt7dGl0bGU6IlJ1biIsZXZhbHVhdGU6dD0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZX0se3RpdGxlOiJUaHJlc2hvbGQiLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS50aHJlc2hvbGRzKX0se3RpdGxlOiJQcmVjaXNpb24iLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5wcmVjaXNpb24pfSx7dGl0bGU6IlJlY2FsbCIsZXZhbHVhdGU6dD0+ZSh0LmRhdHVtLnJlY2FsbCl9LHt0aXRsZToiVFAiLGV2YWx1YXRlOnQ9PnQuZGF0dW0udHJ1ZV9wb3NpdGl2ZXN9LHt0aXRsZToiRlAiLGV2YWx1YXRlOnQ9PnQuZGF0dW0uZmFsc2VfcG9zaXRpdmVzfSx7dGl0bGU6IlROIixldmFsdWF0ZTp0PT50LmRhdHVtLnRydWVfbmVnYXRpdmVzfSx7dGl0bGU6IkZOIixldmFsdWF0ZTp0PT50LmRhdHVtLmZhbHNlX25lZ2F0aXZlc31dfSkoKSx0aGlzLl9zZXJpZXNEYXRhRmllbGRzPVsidGhyZXNob2xkcyIsInByZWNpc2lvbiIsInJlY2FsbCIsInRydWVfcG9zaXRpdmVzIiwiZmFsc2VfcG9zaXRpdmVzIiwidHJ1ZV9uZWdhdGl2ZXMiLCJmYWxzZV9uZWdhdGl2ZXMiXSx0aGlzLl9kZWZhdWx0WFJhbmdlPVstLjA1LDEuMDVdLHRoaXMuX2RlZmF1bHRZUmFuZ2U9Wy0uMDUsMS4wNV0sdGhpcy5fcmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9RXIoKS5wbHVnaW5Sb3V0ZSgicHJfY3VydmVzIiwiL3ByX2N1cnZlcyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1MTyhpLHt0YWc6dGhpcy50YWcscnVuOnR9KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9zbW9vdGhpbmdFbmFibGVkPSExfV9jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKCl7cmV0dXJuKHQsZSxuKT0+e3RoaXMuc2V0KCJfcnVuVG9EYXRhT3ZlclRpbWUiLE9iamVjdC5hc3NpZ24oe30sdGhpcy5fcnVuVG9EYXRhT3ZlclRpbWUsbikpfX1fY29tcHV0ZVJ1bkNvbG9yKHQpe3JldHVybiBfTyh0KX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fYXR0YWNoZWQ9ITAsdGhpcy5yZWxvYWQoKX1fZ2V0Q2hhcnREYXRhTG9hZGVyKCl7cmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIil9cmVsb2FkKCl7dGhpcy5fYXR0YWNoZWQmJigwIT09dGhpcy5ydW5zLmxlbmd0aD90aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWxvYWQoKTp0aGlzLnNldCgiX3J1blRvRGF0YU92ZXJUaW1lIix7fSkpfV9zZXRDaGFydERhdGEoKXt2YXIgdD10aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeSxlPXRoaXMuX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnksbj10aGlzLl9zZXRPZlJlbGV2YW50UnVucztDZS5leHBvcnRzLmZvck93bih0LCgoaSxyKT0+e2NvbnN0IG89ZVtyXTtvJiZ0W3JdLnN0ZXA9PT1vLnN0ZXB8fChuW3JdP3RoaXMuX3VwZGF0ZVNlcmllc0RhdGFGb3JSdW4ocixpKTp0aGlzLl9jbGVhclNlcmllc0RhdGEocikpfSkpfV91cGRhdGVTZXJpZXNEYXRhRm9yUnVuKHQsZSl7Y29uc3Qgbj1DZS5leHBvcnRzLnJlZHVjZSh0aGlzLl9zZXJpZXNEYXRhRmllbGRzLCgodCxuKT0+KHRbbl09ZVtuXS5zbGljZSgpLnJldmVyc2UoKSx0KSkse30pLGk9bmV3IEFycmF5KG5bdGhpcy5fc2VyaWVzRGF0YUZpZWxkc1swXV0ubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKylpW3RdPUNlLmV4cG9ydHMubWFwVmFsdWVzKG4sKGU9PmVbdF0pKTtjb25zdCByPXRoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpO3Iuc2V0U2VyaWVzRGF0YSh0LGkpLHIuY29tbWl0Q2hhbmdlcygpfV9jbGVhclNlcmllc0RhdGEodCl7Y29uc3QgZT10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTtlLnNldFNlcmllc0RhdGEodCxbXSksZS5jb21taXRDaGFuZ2VzKCl9X3VwZGF0ZVJ1blRvUHJDdXJ2ZUVudHJ5KCl7dmFyIHQ9dGhpcy5ydW5Ub1N0ZXBDYXA7Y29uc3QgZT17fTtDZS5leHBvcnRzLmZvck93bih0aGlzLl9ydW5Ub0RhdGFPdmVyVGltZSwoKG4saSk9PntuJiZuLmxlbmd0aCYmKGVbaV09dGhpcy5fY29tcHV0ZUVudHJ5Q2xvc2VzdE9yRXF1YWxUb1N0ZXBDYXAodFtpXSxuKSl9KSksdGhpcy5zZXQoIl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5Iix0aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeSksdGhpcy5zZXQoIl9ydW5Ub1ByQ3VydmVFbnRyeSIsZSl9X25vdGlmeURhdGFDaGFuZ2UoKXt0aGlzLm9uRGF0YUNoYW5nZSYmdGhpcy5vbkRhdGFDaGFuZ2UodGhpcy5fcnVuVG9EYXRhT3ZlclRpbWUpfV9jb21wdXRlRW50cnlDbG9zZXN0T3JFcXVhbFRvU3RlcENhcCh0LGUpe2NvbnN0IG49TWF0aC5taW4oQ2UuZXhwb3J0cy5zb3J0ZWRJbmRleChlLm1hcCgodD0+dC5zdGVwKSksdCksZS5sZW5ndGgtMSk7cmV0dXJuIGVbbl19Z2V0IF9ydW5zV2l0aFN0ZXBBdmFpbGFibGUoKXt2YXIgdD10aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeTtyZXR1cm4gQ2UuZXhwb3J0cy5maWx0ZXIodGhpcy5ydW5zLChlPT50W2VdKSkuc29ydCgpfWdldCBfc2V0T2ZSZWxldmFudFJ1bnMoKXtjb25zdCB0PXt9O3JldHVybiBDZS5leHBvcnRzLmZvckVhY2godGhpcy5fcnVuc1dpdGhTdGVwQXZhaWxhYmxlLChlPT57dFtlXT0hMH0pKSx0fV9jb21wdXRlQ3VycmVudFN0ZXBGb3JSdW4odCxlKXtjb25zdCBuPXRbZV07cmV0dXJuIG4/bi5zdGVwOm51bGx9X2NvbXB1dGVDdXJyZW50V2FsbFRpbWVGb3JSdW4odCxlKXtjb25zdCBuPXRbZV07cmV0dXJuIG4/bmV3IERhdGUoMWUzKm4ud2FsbF90aW1lKS50b1N0cmluZygpOm51bGx9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX1fcmVzZXREb21haW4oKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZXNldERvbWFpbigpfXJlZHJhdygpe3RoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpLnJlZHJhdygpfX07Y29lLnRlbXBsYXRlPXhlYAogICAgPHRmLWNhcmQtaGVhZGluZwogICAgICB0YWc9IltbdGFnXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgPjwvdGYtY2FyZC1oZWFkaW5nPgoKICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyCiAgICAgIHgtY29tcG9uZW50cy1jcmVhdGlvbi1tZXRob2Q9IltbX3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2RdXSIKICAgICAgeS12YWx1ZS1hY2Nlc3Nvcj0iW1tfeVZhbHVlQWNjZXNzb3JdXSIKICAgICAgdG9vbHRpcC1jb2x1bW5zPSJbW190b29sdGlwQ29sdW1uc11dIgogICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZUZ1bmN0aW9uXV0iCiAgICAgIGRlZmF1bHQteC1yYW5nZT0iW1tfZGVmYXVsdFhSYW5nZV1dIgogICAgICBkZWZhdWx0LXktcmFuZ2U9IltbX2RlZmF1bHRZUmFuZ2VdXSIKICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9IltbX3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgIGRhdGEtdG8tbG9hZD0iW1tydW5zXV0iCiAgICAgIGRhdGEtc2VyaWVzPSJbW3J1bnNdXSIKICAgICAgbG9hZC1rZXk9IltbdGFnXV0iCiAgICAgIHJlcXVlc3QtZGF0YT0iW1tfcmVxdWVzdERhdGFdXSIKICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKCldXSIKICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgPjwvdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcj4KCiAgICA8ZGl2IGlkPSJidXR0b25zLXJvdyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IlJlc2V0IGF4ZXMgdG8gWzAsIDFdLiIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJzdGVwLWxlZ2VuZCI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3J1bnNXaXRoU3RlcEF2YWlsYWJsZV1dIiBhcz0icnVuIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtcm93Ij4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9ImNvbG9yLWJveCIKICAgICAgICAgICAgc3R5bGU9ImJhY2tncm91bmQ6IFtbX2NvbXB1dGVSdW5Db2xvcihydW4pXV07IgogICAgICAgICAgPjwvZGl2PgogICAgICAgICAgW1tydW5dXSBpcyBhdAogICAgICAgICAgPHNwYW4gY2xhc3M9InN0ZXAtbGFiZWwtdGV4dCI+CiAgICAgICAgICAgIHN0ZXAgW1tfY29tcHV0ZUN1cnJlbnRTdGVwRm9yUnVuKF9ydW5Ub1ByQ3VydmVFbnRyeSwgcnVuKV1dIDwvc3BhbgogICAgICAgICAgPjxiciAvPgogICAgICAgICAgPHNwYW4gY2xhc3M9IndhbGwtdGltZS1sYWJlbC10ZXh0Ij4KICAgICAgICAgICAgKFtbX2NvbXB1dGVDdXJyZW50V2FsbFRpbWVGb3JSdW4oX3J1blRvUHJDdXJ2ZUVudHJ5LCBydW4pXV0pCiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgd2lkdGg6IDUwMHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciB7CiAgICAgICAgaGVpZ2h0OiAzMDBweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIgewogICAgICAgIGhlaWdodDogNjAwcHg7CiAgICAgIH0KICAgICAgI2J1dHRvbnMtcm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KICAgICAgI2J1dHRvbnMtcm93IHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KICAgICAgI2J1dHRvbnMtcm93IHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQogICAgICAjc3RlcC1sZWdlbmQgewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZm9udC1zaXplOiAwLjhlbTsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDAgMCAwIDEwcHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgLmxlZ2VuZC1yb3cgewogICAgICAgIG1hcmdpbjogNXB4IDAgNXB4IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgLmNvbG9yLWJveCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDFweDsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgIH0KICAgICAgLnN0ZXAtbGFiZWwtdGV4dCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KICAgICAgLndhbGwtdGltZS1sYWJlbC10ZXh0IHsKICAgICAgICBjb2xvcjogIzg4ODsKICAgICAgICBmb250LXNpemU6IDAuOGVtOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGNvZS5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sY29lLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNvZS5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNvZS5wcm90b3R5cGUsInJ1blRvU3RlcENhcCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLGNvZS5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY29lLnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGNvZS5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjb2UucHJvdG90eXBlLCJfcnVuVG9QckN1cnZlRW50cnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY29lLnByb3RvdHlwZSwiX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY29lLnByb3RvdHlwZSwiX3J1blRvRGF0YU92ZXJUaW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sY29lLnByb3RvdHlwZSwib25EYXRhQ2hhbmdlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNvZS5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIseE8pXSxjb2UucHJvdG90eXBlLCJfY2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY29lLnByb3RvdHlwZSwiX2F0dGFjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNvZS5wcm90b3R5cGUsIl94Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNvZS5wcm90b3R5cGUsIl95VmFsdWVBY2Nlc3NvciIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sY29lLnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxjb2UucHJvdG90eXBlLCJfc2VyaWVzRGF0YUZpZWxkcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sY29lLnByb3RvdHlwZSwiX2RlZmF1bHRYUmFuZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGNvZS5wcm90b3R5cGUsIl9kZWZhdWx0WVJhbmdlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sY29lLnByb3RvdHlwZSwiX3JlcXVlc3REYXRhIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY29lLnByb3RvdHlwZSwiX3Ntb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbYSgicnVucyIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sY29lLnByb3RvdHlwZSwicmVsb2FkIixudWxsKSx0KFthKCJfcnVuVG9QckN1cnZlRW50cnkiLCJfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSIsIl9zZXRPZlJlbGV2YW50UnVucyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sY29lLnByb3RvdHlwZSwiX3NldENoYXJ0RGF0YSIsbnVsbCksdChbYSgiX3J1blRvRGF0YU92ZXJUaW1lIiwicnVuVG9TdGVwQ2FwIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxjb2UucHJvdG90eXBlLCJfdXBkYXRlUnVuVG9QckN1cnZlRW50cnkiLG51bGwpLHQoW2EoIl9ydW5Ub0RhdGFPdmVyVGltZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sY29lLnByb3RvdHlwZSwiX25vdGlmeURhdGFDaGFuZ2UiLG51bGwpLHQoW3MoInJ1bnMiLCJfcnVuVG9QckN1cnZlRW50cnkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGNvZS5wcm90b3R5cGUsIl9ydW5zV2l0aFN0ZXBBdmFpbGFibGUiLG51bGwpLHQoW3MoIl9ydW5zV2l0aFN0ZXBBdmFpbGFibGUiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxjb2UucHJvdG90eXBlLCJfc2V0T2ZSZWxldmFudFJ1bnMiLG51bGwpLGNvZT10KFtpKCJ0Zi1wci1jdXJ2ZS1jYXJkIildLGNvZSk7bGV0IHVvZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ydW5Ub1N0ZXBJbmRleD17fX1fY29tcHV0ZUNvbG9yRm9yUnVuKHQpe3JldHVybiBfTyh0KX1fY29tcHV0ZVRpbWVUZXh0Rm9yUnVuKHQsZSxuLGkpe2NvbnN0IHI9ZVtuXTtpZighQ2UuZXhwb3J0cy5pc051bWJlcihyKSlyZXR1cm4iIjtjb25zdCBvPXRbbl07aWYoIW8pcmV0dXJuIiI7Y29uc3QgYT1vW3JdW2ldO2lmKCJzdGVwIj09PWkpcmV0dXJuYHN0ZXAgJHthfWA7aWYoInJlbGF0aXZlIj09PWkpcmV0dXJuIGE8MT9gJHsoMWUzKmEpLnRvRml4ZWQoMil9IG1zYDpgJHthLnRvRml4ZWQoMil9IHNgO2lmKCJ3YWxsX3RpbWUiPT09aSlyZXR1cm4gbmV3IERhdGUoMWUzKmEpLnRvU3RyaW5nKCk7dGhyb3cgbmV3IEVycm9yKGBUaGUgZGlzcGxheSB0eXBlIG9mICR7aX0gaXMgbm90IHJlY29nbml6ZWQuYCl9X3NsaWRlclZhbHVlQ2hhbmdlZCh0KXtjb25zdCBlPXQudGFyZ2V0LmRhdGFzZXQucnVuLG49dC50YXJnZXQuaW1tZWRpYXRlVmFsdWUsaT1PYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvU3RlcEluZGV4KTtpc05hTihuKT9kZWxldGUgaVtlXTppW2VdPXQudGFyZ2V0LmltbWVkaWF0ZVZhbHVlLHRoaXMuX3J1blRvU3RlcEluZGV4PWl9X2NvbXB1dGVNYXhTdGVwSW5kZXhGb3JSdW4odCxlKXtjb25zdCBuPXRbZV07cmV0dXJuIG4mJm4ubGVuZ3RoP24ubGVuZ3RoLTE6MH1fdXBkYXRlU3RlcHNGb3JOZXdSdW5zKCl7dmFyIHQ9dGhpcy5ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzO2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub1N0ZXBJbmRleCk7Q2UuZXhwb3J0cy5mb3JPd24odCwoKHQsbik9PntDZS5leHBvcnRzLmlzTnVtYmVyKGVbbl0pfHwoZVtuXT10Lmxlbmd0aC0xKX0pKSx0aGlzLl9ydW5Ub1N0ZXBJbmRleD1lfV9nZXRTdGVwKHQsZSl7cmV0dXJuIHRoaXMuX3J1blRvU3RlcEluZGV4P3RoaXMuX3J1blRvU3RlcEluZGV4W2VdOjB9X2NvbXB1dGVSdW5Ub1N0ZXAodCxlKXtjb25zdCBuPXt9O3JldHVybiBDZS5leHBvcnRzLmZvck93bihlLCgoZSxpKT0+e2NvbnN0IHI9dFtpXTtyJiYobltpXT1yW2VdLnN0ZXApfSkpLG59Z2V0IF9ydW5zV2l0aFNsaWRlcnMoKXt2YXIgdD10aGlzLnJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXM7cmV0dXJuIHRoaXMucnVucy5maWx0ZXIoKGU9PnRbZV0pKX19O3VvZS50ZW1wbGF0ZT14ZWAKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3J1bnNXaXRoU2xpZGVyc11dIiBhcz0icnVuIj4KICAgICAgPGRpdiBjbGFzcz0icnVuLXdpZGdldCI+CiAgICAgICAgPGRpdiBjbGFzcz0icnVuLWRpc3BsYXktY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9InJ1bi1jb2xvci1ib3giCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOltbX2NvbXB1dGVDb2xvckZvclJ1bihydW4pXV07IgogICAgICAgICAgPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icnVuLXRleHQiPltbcnVuXV08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWRpc3BsYXktY29udGFpbmVyIj4KICAgICAgICAgIFtbX2NvbXB1dGVUaW1lVGV4dEZvclJ1bihydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBfcnVuVG9TdGVwSW5kZXgsCiAgICAgICAgICBydW4sIHRpbWVEaXNwbGF5VHlwZSldXQogICAgICAgIDwvZGl2PgogICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgIGRhdGEtcnVuJD0iW1tydW5dXSIKICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICBtaW49IjAiCiAgICAgICAgICBtYXg9IltbX2NvbXB1dGVNYXhTdGVwSW5kZXhGb3JSdW4ocnVuVG9BdmFpbGFibGVUaW1lRW50cmllcywgcnVuKV1dIgogICAgICAgICAgdmFsdWU9IltbX2dldFN0ZXAoX3J1blRvU3RlcEluZGV4LCBydW4pXV0iCiAgICAgICAgICBvbi1pbW1lZGlhdGUtdmFsdWUtY2hhbmdlZD0iX3NsaWRlclZhbHVlQ2hhbmdlZCIKICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLnJ1bi13aWRnZXQgewogICAgICAgIG1hcmdpbjogMTBweCAwIDAgMDsKICAgICAgfQogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIG1hcmdpbjogLThweCAwIDAgLTE1cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgLnN0ZXAtZGlzcGxheS1jb250YWluZXIgewogICAgICAgIGZvbnQtc2l6ZTogMC45ZW07CiAgICAgICAgbWFyZ2luOiAwIDE1cHggMCAwOwogICAgICB9CiAgICAgIC5ydW4tdGV4dCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICAgIC5ydW4tY29sb3ItYm94IHsKICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICBoZWlnaHQ6IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx1b2UucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHVvZS5wcm90b3R5cGUsInJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLGNvbXB1dGVkOiJfY29tcHV0ZVJ1blRvU3RlcChydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBfcnVuVG9TdGVwSW5kZXgpIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx1b2UucHJvdG90eXBlLCJydW5Ub1N0ZXAiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdW9lLnByb3RvdHlwZSwidGltZURpc3BsYXlUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHVvZS5wcm90b3R5cGUsIl9ydW5Ub1N0ZXBJbmRleCIsdm9pZCAwKSx0KFthKCJydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx1b2UucHJvdG90eXBlLCJfdXBkYXRlU3RlcHNGb3JOZXdSdW5zIixudWxsKSx0KFtzKCJydW5zIiwicnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sdW9lLnByb3RvdHlwZSwiX3J1bnNXaXRoU2xpZGVycyIsbnVsbCksdW9lPXQoW2koInRmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yIildLHVvZSk7bGV0IGhvZT1jbGFzcyBleHRlbmRzKGNyKHdlKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90aW1lRGlzcGxheVR5cGU9InN0ZXAiLHRoaXMuX3NlbGVjdGVkUnVucz1bXSx0aGlzLl9ydW5Ub1RhZ0luZm89e30sdGhpcy5fdGFnVG9SdW5Ub0RhdGE9e30sdGhpcy5fZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PnQudGFnLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBicix0aGlzLl9zdGVwPTB9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtQcm9taXNlLmFsbChbdGhpcy5fZmV0Y2hUYWdzKCldKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZENhcmRzKCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9X2ZldGNoVGFncygpe2NvbnN0IHQ9RXIoKS5wbHVnaW5Sb3V0ZSgicHJfY3VydmVzIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoQ2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1mcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5DZS5leHBvcnRzLmtleXModCkpKSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1lLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkQ2FyZHMoKXtDZS5leHBvcnRzLmZvckVhY2godGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLXByLWN1cnZlLWNhcmQiKSwodD0+e3QucmVsb2FkKCl9KSl9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fc2VsZWN0ZWRSdW5zLGU9dGhpcy5fdGFnRmlsdGVyO3JldHVybiBMcihDZS5leHBvcnRzLm1hcFZhbHVlcyh0aGlzLl9ydW5Ub1RhZ0luZm8sKHQ9Pk9iamVjdC5rZXlzKHQpKSksdCxlKX1nZXQgX3JlbGV2YW50U2VsZWN0ZWRSdW5zKCl7dmFyIHQ9dGhpcy5fcnVuVG9UYWdJbmZvO3JldHVybiB0aGlzLl9zZWxlY3RlZFJ1bnMuZmlsdGVyKChlPT50W2VdKSl9X3RhZ01ldGFkYXRhKHQsZSxuKXtjb25zdCBpPXt9O2UuZm9yRWFjaCgoZT0+e2lbZV09dFtlXVtuXX0pKTtjb25zdCByPW4ucmVwbGFjZSgvXC9wcl9jdXJ2ZXMkLywiIik7cmV0dXJuIGtPKGkscil9X2NyZWF0ZURhdGFDaGFuZ2VDYWxsYmFjayh0KXtyZXR1cm4gZT0+e3RoaXMuc2V0KCJfdGFnVG9SdW5Ub0RhdGEiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl90YWdUb1J1blRvRGF0YSkse1t0XTplfSkpfX1nZXQgX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXMoKXt2YXIgdD10aGlzLl90YWdUb1J1blRvRGF0YTtjb25zdCBlPXt9O2Zvcihjb25zdFtuLGldb2YgT2JqZWN0LmVudHJpZXModCkpZm9yKGNvbnN0W3Rdb2YgT2JqZWN0LmVudHJpZXMoaSkpKG51bGw9PWVbdF18fG48ZVt0XSkmJihlW3RdPW4pO2NvbnN0IG49e307Zm9yKGNvbnN0W2kscl1vZiBPYmplY3QuZW50cmllcyhlKSl7Y29uc3QgZT10W3JdW2ldO25baV09ZS5tYXAoKHQ9Pih7c3RlcDp0LnN0ZXAsd2FsbF90aW1lOnQud2FsbF90aW1lLHJlbGF0aXZlOnQud2FsbF90aW1lLWVbMF0ud2FsbF90aW1lfSkpKX1yZXR1cm4gbn19O2hvZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9InRpbWUtdHlwZS1zZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJUaW1lIERpc3BsYXkgVHlwZSIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfdGltZURpc3BsYXlUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPCEtLQogICAgICAgICAgICAtLT4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8IS0tCiAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iIGlkPSJzdGVwcy1zZWxlY3Rvci1jb250YWluZXIiPgogICAgICAgICAgICAgIDx0Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3RvcgogICAgICAgICAgICAgICAgcnVucz0iW1tfcmVsZXZhbnRTZWxlY3RlZFJ1bnNdXSIKICAgICAgICAgICAgICAgIHJ1bi10by1zdGVwPSJ7e19ydW5Ub1N0ZXB9fSIKICAgICAgICAgICAgICAgIHJ1bi10by1hdmFpbGFibGUtdGltZS1lbnRyaWVzPSJbW19ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzXV0iCiAgICAgICAgICAgICAgICB0aW1lLWRpc3BsYXktdHlwZT0iW1tfdGltZURpc3BsYXlUeXBlXV0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvdGYtcHItY3VydmUtc3RlcHMtc2VsZWN0b3I+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gcHJlY2lzaW9u4oCTcmVjYWxsIGN1cnZlIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHByZWNpc2lvbuKAk3JlY2FsbCBkYXRhIHRvIHlvdXIgZXZlbnQKICAgICAgICAgICAgICAgIGZpbGVzLgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgICAgZ2V0LWNhdGVnb3J5LWl0ZW0ta2V5PSJbW19nZXRDYXRlZ29yeUl0ZW1LZXldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1wci1jdXJ2ZS1jYXJkCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgcnVucz0iW1tpdGVtLnJ1bnNdXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfdGFnTWV0YWRhdGEoX3J1blRvVGFnSW5mbywgaXRlbS5ydW5zLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICBydW4tdG8tc3RlcC1jYXA9IltbX3J1blRvU3RlcF1dIgogICAgICAgICAgICAgICAgICBvbi1kYXRhLWNoYW5nZT0iW1tfY3JlYXRlRGF0YUNoYW5nZUNhbGxiYWNrKGl0ZW0udGFnKV1dIgogICAgICAgICAgICAgICAgPjwvdGYtcHItY3VydmUtY2FyZD4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQoKICAgICAgLyoqIERvIG5vdCBsZXQgdGhlIHN0ZXBzIHNlbGVjdG9yIG9jY2x1ZGUgdGhlIHJ1biBzZWxlY3Rvci4gKi8KICAgICAgI3N0ZXBzLXNlbGVjdG9yLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LWhlaWdodDogNjAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGhvZS5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saG9lLnByb3RvdHlwZSwiX3RpbWVEaXNwbGF5VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0saG9lLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxob2UucHJvdG90eXBlLCJfcnVuVG9UYWdJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGhvZS5wcm90b3R5cGUsIl90YWdUb1J1blRvRGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0saG9lLnByb3RvdHlwZSwiX3J1blRvU3RlcCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGhvZS5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saG9lLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGhvZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0saG9lLnByb3RvdHlwZSwiX2dldENhdGVnb3J5SXRlbUtleSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLGhvZS5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0saG9lLnByb3RvdHlwZSwiX3N0ZXAiLHZvaWQgMCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0saG9lLnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLHQoW3MoIl9zZWxlY3RlZFJ1bnMiLCJfcnVuVG9UYWdJbmZvIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxob2UucHJvdG90eXBlLCJfcmVsZXZhbnRTZWxlY3RlZFJ1bnMiLG51bGwpLHQoW3MoIl90YWdUb1J1blRvRGF0YSIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGhvZS5wcm90b3R5cGUsIl9ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzIixudWxsKSxob2U9dChbaSgidGYtcHItY3VydmUtZGFzaGJvYXJkIildLGhvZSk7bGV0IGRvZT1jbGFzcyBleHRlbmRzKGNyKEVsKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9zaG93RG93bmxvYWRMaW5rcz1RcygiX3Nob3dEb3dubG9hZExpbmtzIix7ZGVmYXVsdFZhbHVlOiExLHVzZUxvY2FsU3RvcmFnZTohMH0pLmNhbGwodGhpcyksdGhpcy5fc21vb3RoaW5nV2VpZ2h0PXJsKCJfc21vb3RoaW5nV2VpZ2h0Iix7ZGVmYXVsdFZhbHVlOi42fSkuY2FsbCh0aGlzKSx0aGlzLl9pZ25vcmVZT3V0bGllcnM9UXMoIl9pZ25vcmVZT3V0bGllcnMiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl94VHlwZT13Q3QuU1RFUCx0aGlzLl9zZWxlY3RlZFJ1bnM9W10sdGhpcy5fdGFnRmlsdGVyPSIiLHRoaXMuX2NhdGVnb3JpZXM9W10sdGhpcy5fZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PnQudGFnLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBicig1MCksdGhpcy5fc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlcj10bCgiX3Nob3dEb3dubG9hZExpbmtzIix7ZGVmYXVsdFZhbHVlOiExLHVzZUxvY2FsU3RvcmFnZTohMH0pLHRoaXMuX3Ntb290aGluZ1dlaWdodE9ic2VydmVyPW9sKCJfc21vb3RoaW5nV2VpZ2h0Iix7ZGVmYXVsdFZhbHVlOi42fSksdGhpcy5faWdub3JlWU91dGxpZXJzT2JzZXJ2ZXI9dGwoIl9pZ25vcmVZT3V0bGllcnMiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSl9Z2V0IF9zbW9vdGhpbmdFbmFibGVkKCl7cmV0dXJuIHRoaXMuX3Ntb290aGluZ1dlaWdodD4wfV9nZXRDYXRlZ29yeUtleSh0KXtyZXR1cm4gdC5tZXRhZGF0YS50eXBlPT1Bci5TRUFSQ0hfUkVTVUxUUz8iIjp0Lm5hbWV9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZENoYXJ0cygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntpZihDZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzLl9ydW5Ub1RhZ0luZm8pKXJldHVybjtjb25zdCBlPWZyKENlLmV4cG9ydHMubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSkpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZENoYXJ0cygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV91cGRhdGVDYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fc2VsZWN0ZWRSdW5zO2xldCBlLG49dGhpcy5fdGFnRmlsdGVyO2U9THIoQ2UuZXhwb3J0cy5tYXBWYWx1ZXModGhpcy5fcnVuVG9UYWdJbmZvLCh0PT5PYmplY3Qua2V5cyh0KSkpLHQsbiksZS5mb3JFYWNoKCh0PT57dC5pdGVtcz10Lml0ZW1zLm1hcCgodD0+KHt0YWc6dC50YWcsc2VyaWVzOnQucnVucy5tYXAoKGU9Pih7cnVuOmUsdGFnOnQudGFnfSkpKX0pKSl9KSksdGhpcy51cGRhdGVBcnJheVByb3AoIl9jYXRlZ29yaWVzIixlLHRoaXMuX2dldENhdGVnb3J5S2V5KX1fdGFnTWV0YWRhdGEodCxlLG4pe2NvbnN0IGk9dC5uYW1lLHI9bi50YWcsbz17fTtuLnNlcmllcy5mb3JFYWNoKCgoe3J1bjp0fSk9PntvW3RdPWVbdF1bcl19KSk7Y29uc3QgYT1yLnJlcGxhY2UoL1wvc2NhbGFyX3N1bW1hcnkkLywiIik7bGV0e2Rlc2NyaXB0aW9uOnMsZGlzcGxheU5hbWU6bH09a08obyxhKTtyZXR1cm4gdC5tZXRhZGF0YS50eXBlPT1Bci5QUkVGSVhfR1JPVVAmJmwuc3RhcnRzV2l0aChpKyIvIikmJihsPWwuc2xpY2UoaS5sZW5ndGgrMSkpLHtkZXNjcmlwdGlvbjpzLGRpc3BsYXlOYW1lOmx9fX07ZG9lLnRlbXBsYXRlPXhlYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgICBpZD0ic2hvdy1kb3dubG9hZC1saW5rcyIKICAgICAgICAgICAgICAgIGNoZWNrZWQ9Int7X3Nob3dEb3dubG9hZExpbmtzfX0iCiAgICAgICAgICAgICAgICA+U2hvdyBkYXRhIGRvd25sb2FkIGxpbmtzPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgICBpZD0iaWdub3JlLXktb3V0bGllciIKICAgICAgICAgICAgICAgIGNoZWNrZWQ9Int7X2lnbm9yZVlPdXRsaWVyc319IgogICAgICAgICAgICAgICAgPklnbm9yZSBvdXRsaWVycyBpbiBjaGFydCBzY2FsaW5nPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZyI+CiAgICAgICAgICAgICAgPGRpdj5Ub29sdGlwIHNvcnRpbmcgbWV0aG9kOjwvZGl2PgogICAgICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgICAgICAgICAgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfdG9vbHRpcFNvcnRpbmdNZXRob2R9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9IjAiCiAgICAgICAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlZmF1bHQ8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmFzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+bmVhcmVzdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtc21vb3RoaW5nLWlucHV0CiAgICAgICAgICAgICAgd2VpZ2h0PSJ7e19zbW9vdGhpbmdXZWlnaHR9fSIKICAgICAgICAgICAgICBzdGVwPSIwLjAwMSIKICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgbWF4PSIwLjk5OSIKICAgICAgICAgICAgPjwvdGYtc21vb3RoaW5nLWlucHV0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9IngtdHlwZS1zZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIb3Jpem9udGFsIEF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBzY2FsYXIgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHNjYWxhciBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgICAgZ2V0LWNhdGVnb3J5LWl0ZW0ta2V5PSJbW19nZXRDYXRlZ29yeUl0ZW1LZXldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1zY2FsYXItY2FyZAogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIGRhdGEtdG8tbG9hZD0iW1tpdGVtLnNlcmllc11dIgogICAgICAgICAgICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tfaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgICAgICAgICAgIG11bHRpLWV4cGVyaW1lbnRzPSJbW19nZXRNdWx0aUV4cGVyaW1lbnRzKGRhdGFTZWxlY3Rpb24pXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgc2hvdy1kb3dubG9hZC1saW5rcz0iW1tfc2hvd0Rvd25sb2FkTGlua3NdXSIKICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9IltbX3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tfc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfdGFnTWV0YWRhdGEoY2F0ZWdvcnksIF9ydW5Ub1RhZ0luZm8sIGl0ZW0pXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW190b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgICAgICAgICAgICB4LXR5cGU9IltbX3hUeXBlXV0iCiAgICAgICAgICAgICAgICAgIGJhdGNoLXNpemU9IltbZmVhdHVyZUZsYWdzLnNjYWxhcnNCYXRjaFNpemVdXSIKICAgICAgICAgICAgICAgICAgaW4tY29sYWI9IltbZmVhdHVyZUZsYWdzLmluQ29sYWJdXSIKICAgICAgICAgICAgICAgID48L3RmLXNjYWxhci1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAtc29ydGluZyBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgd2lkdGg6IDEwNXB4OwogICAgICB9CgogICAgICAubGluZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIC5jZW50ZXIgewogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZG9lLnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkb2UucHJvdG90eXBlLCJmZWF0dXJlRmxhZ3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxkb2UucHJvdG90eXBlLCJfc2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwLG9ic2VydmVyOiJfc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGRvZS5wcm90b3R5cGUsIl9zbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfaWdub3JlWU91dGxpZXJzT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxkb2UucHJvdG90eXBlLCJfaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGRvZS5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZG9lLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkb2UucHJvdG90eXBlLCJfcnVuVG9UYWdJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZG9lLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxkb2UucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZG9lLnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZG9lLnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZG9lLnByb3RvdHlwZSwiX2dldENhdGVnb3J5SXRlbUtleSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLGRvZS5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfc21vb3RoaW5nV2VpZ2h0IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGRvZS5wcm90b3R5cGUsIl9zbW9vdGhpbmdFbmFibGVkIixudWxsKSx0KFthKCJfcnVuVG9UYWdJbmZvIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxkb2UucHJvdG90eXBlLCJfdXBkYXRlQ2F0ZWdvcmllcyIsbnVsbCksZG9lPXQoW2koInRmLXNjYWxhci1kYXNoYm9hcmQiKV0sZG9lKTtsZXQgcG9lPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGV4dHM9W10sdGhpcy5fY2FuY2VsbGVyPW5ldyB4T31nZXQgX3J1bkNvbG9yKCl7cmV0dXJuIF9PKHRoaXMucnVuKX1fY2hhbmdlUnVuQ29sb3IoKXt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tdGItdGV4dC1sb2FkZXItb3V0bGluZSI6dGhpcy5fcnVuQ29sb3J9KX1hdHRhY2hlZCgpe3RoaXMucmVsb2FkKCl9cmVsb2FkKCl7aWYoIXRoaXMuaXNBdHRhY2hlZClyZXR1cm47dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IHQ9TE8oRXIoKS5wbHVnaW5Sb3V0ZSgidGV4dCIsIi90ZXh0Iikse3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sbWFya2Rvd246dGhpcy5tYXJrZG93bkVuYWJsZWQ/InRydWUiOiJmYWxzZSJ9KSxlPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKCh0PT4oe3dhbGxfdGltZTpuZXcgRGF0ZSgxZTMqdC53YWxsX3RpbWUpLHN0ZXA6dC5zdGVwLHRleHQ6dC50ZXh0fSkpKTt0aGlzLnNldCgiX3RleHRzIixlLnNsaWNlKCkucmV2ZXJzZSgpKX0pKTt0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihlKX1fZm9ybWF0U3RlcCh0KXtyZXR1cm4gRHkoIiwiKSh0KX19O3BvZS50ZW1wbGF0ZT14ZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgcnVuPSJbW3J1bl1dIiB0YWc9IltbdGFnXV0iIGNvbG9yPSJbW19ydW5Db2xvcl1dIj4KICAgIDwvdGYtY2FyZC1oZWFkaW5nPgogICAgPHBhcGVyLW1hdGVyaWFsCiAgICAgIGVsZXZhdGlvbj0iMSIKICAgICAgaWQ9InN0ZXBzLWNvbnRhaW5lciIKICAgICAgY2xhc3M9ImNvbnRhaW5lciBzY3JvbGxiYXIiCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3RleHRzXV0iPgogICAgICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJzdGVwLWNvbnRhaW5lciI+CiAgICAgICAgICBzdGVwIDxzcGFuIGNsYXNzPSJzdGVwLXZhbHVlIj5bW19mb3JtYXRTdGVwKGl0ZW0uc3RlcCldXTwvc3Bhbj4KICAgICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJ0ZXh0Ij4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbaXRlbS50ZXh0XV0iPjwvdGYtbWFya2Rvd24tdmlldz4KICAgICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9wYXBlci1tYXRlcmlhbD4KICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIC5zY3JvbGxiYXIgewogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KICAgICAgI3N0ZXBzLWNvbnRhaW5lciB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIC8qIGNvbG9yIGNvbXB1dGVkIGFuZCBzZXQgYXMgaW5saW5lIHN0eWxlICovOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi10ZXh0LWxvYWRlci1vdXRsaW5lKTsKICAgICAgfQogICAgICAudGV4dCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKICAgICAgICBib3JkZXItcmFkaXVzOiAwIDNweCAzcHggM3B4OwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5zdGVwLWNvbnRhaW5lciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRiLXVpLWJvcmRlcik7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7IC8qIHRvIGNvcnJlY3QgZm9yIGJvcmRlciAqLwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgfQogICAgICAuc3RlcC1jb250YWluZXI6bm90KDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHBvZS5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxwb2UucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwb2UucHJvdG90eXBlLCJtYXJrZG93bkVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHBvZS5wcm90b3R5cGUsIl90ZXh0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixicildLHBvZS5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHhPKV0scG9lLnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxwb2UucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW2EoIl9ydW5Db2xvciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0scG9lLnByb3RvdHlwZSwiX2NoYW5nZVJ1bkNvbG9yIixudWxsKSxwb2U9dChbaSgidGYtdGV4dC1sb2FkZXIiKV0scG9lKTtsZXQgZm9lPWNsYXNzIGV4dGVuZHMoY3Iod2UpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX21hcmtkb3duRW5hYmxlZD1RcygiX21hcmtkb3duRW5hYmxlZCIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBicix0aGlzLl9tYXJrZG93bkVuYWJsZWRTdG9yYWdlT2JzZXJ2ZXI9dGwoIl9tYXJrZG93bkVuYWJsZWQiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSl9c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9tYXJrZG93bkVuYWJsZWRPYnNlcnZlcihfbWFya2Rvd25FbmFibGVkKSJdfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRUZXh0cygpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfV9mZXRjaFRhZ3MoKXtjb25zdCB0PUVyKCkucGx1Z2luUm91dGUoInRleHQiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntpZihDZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzLl9ydW5Ub1RhZykpcmV0dXJuO2NvbnN0IGU9ZnIodCk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1lLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWRUZXh0cygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi10ZXh0LWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfWdldCBfY2F0ZWdvcmllcygpe3JldHVybiBOcih0aGlzLl9ydW5Ub1RhZyx0aGlzLl9zZWxlY3RlZFJ1bnMsdGhpcy5fdGFnRmlsdGVyKX1fbWFya2Rvd25FbmFibGVkT2JzZXJ2ZXIoKXt0aGlzLl9yZWxvYWRUZXh0cygpfX07Zm9lLnRlbXBsYXRlPXhlYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tfbWFya2Rvd25FbmFibGVkfX0iCiAgICAgICAgICAgICAgPkVuYWJsZSBNYXJrZG93bjwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHRleHQgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHRleHQgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLXRleHQtbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIG1hcmtkb3duLWVuYWJsZWQ9IltbX21hcmtkb3duRW5hYmxlZF1dIgogICAgICAgICAgICAgICAgPjwvdGYtdGV4dC1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZm9lLnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfbWFya2Rvd25FbmFibGVkU3RvcmFnZU9ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZm9lLnByb3RvdHlwZSwiX21hcmtkb3duRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZm9lLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmb2UucHJvdG90eXBlLCJfcnVuVG9UYWciLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmb2UucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZvZS5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmb2UucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGZvZS5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfcnVuVG9UYWciLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGZvZS5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxmb2U9dChbaSgidGYtdGV4dC1kYXNoYm9hcmQiKV0sZm9lKTtsZXQgbW9lPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9iYWNrZW5kPVNBdH19O21vZT10KFtpKCJ0Zi1iYWNrZW5kIildLG1vZSk7bGV0IGdvZT1jbGFzcyBleHRlbmRzIHdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMucnVuc0NvbG9yU2NhbGU9X099fTtnb2U9dChbaSgidGYtY29sb3Itc2NhbGUiKV0sZ29lKTtsZXQgX29lPWNsYXNzIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9nbG9iYWxzPURzfX07X29lPXQoW2koInRmLWdsb2JhbHMiKV0sX29lKTt2YXIgeW9lPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGFkZExpbWl0TGlzdGVuZXI6d2wscmVtb3ZlTGltaXRMaXN0ZW5lcjpTbCxnZXRMaW1pdDpNbCxzZXRMaW1pdDpmdW5jdGlvbiB2b2UodCl7aWYodCE9PU1hdGguZmxvb3IodCkpdGhyb3cgbmV3IEVycm9yKGBsaW1pdCBtdXN0IGJlIGFuIGludGVnZXIsIGJ1dCBnb3Q6ICR7dH1gKTtpZih0PD0wKXRocm93IG5ldyBFcnJvcihgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgYnV0IGdvdDogJHt0fWApO3QhPT1ibCYmKGJsPXQsaWwodmwsYmwse3VzZUxvY2FsU3RvcmFnZTohMH0pLHhsLmZvckVhY2goKHQ9Pnt0KCl9KSkpfSxUZkRvbVJlcGVhdDpUbH0pO2xldCBib2U9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX3BhZ2luYXRlZF92aWV3PXlvZX19O2JvZT10KFtpKCJ0Zi1wYWdpbmF0ZWQtdmlldy1zdG9yZSIpXSxib2UpO2xldCB4b2U9Y2xhc3MgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX3N0b3JhZ2U9TkF0fX07eG9lPXQoW2koInRmLXN0b3JhZ2UiKV0seG9lKX0pKCk7CgohKGZ1bmN0aW9uKCl7Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uCgogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCgogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgKICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NCiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCnZhciB0PWZ1bmN0aW9uKGUsbil7cmV0dXJuKHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pfSkoZSxuKX07ZnVuY3Rpb24gZShlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIG8oKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KG8ucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBvKX1mdW5jdGlvbiBuKHQsZSxuLG8pe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIHIodCl7dHJ5e2woby5uZXh0KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBzKHQpe3RyeXtsKG8udGhyb3codCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIGwodCl7dC5kb25lP2kodC52YWx1ZSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSl9KSh0LnZhbHVlKS50aGVuKHIscyl9bCgobz1vLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIG8odCxlKXt2YXIgbixvLGksYSxyPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBzKGEpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4oZnVuY3Rpb24gbChhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3I7KXRyeXtpZihuPTEsbyYmKGk9MiZhWzBdP28ucmV0dXJuOmFbMF0/by50aHJvd3x8KChpPW8ucmV0dXJuKSYmaS5jYWxsKG8pLDApOm8ubmV4dCkmJiEoaT1pLmNhbGwobyxhWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobz0wLGkmJihhPVsyJmFbMF0saS52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6aT1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gci5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpyLmxhYmVsKyssbz1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPXIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1yLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe3I9MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFpfHxhWzFdPmlbMF0mJmFbMV08aVszXSkpe3IubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmci5sYWJlbDxpWzFdKXtyLmxhYmVsPWlbMV0saT1hO2JyZWFrfWlmKGkmJnIubGFiZWw8aVsyXSl7ci5sYWJlbD1pWzJdLHIub3BzLnB1c2goYSk7YnJlYWt9aVsyXSYmci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlfWE9ZS5jYWxsKHQscil9Y2F0Y2godCl7YT1bNix0XSxvPTB9ZmluYWxseXtuPWk9MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0pKFthLHNdKX19fWZ1bmN0aW9uIGkodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLG49ZSYmdFtlXSxvPTA7aWYobilyZXR1cm4gbi5jYWxsKHQpO2lmKHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbz49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbysrXSxkb25lOiF0fX19O3Rocm93IG5ldyBUeXBlRXJyb3IoZT8iT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iOiJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIil9ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgbyxpLGE9bi5jYWxsKHQpLHI9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobz1hLm5leHQoKSkuZG9uZTspci5wdXNoKG8udmFsdWUpfWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWEucmV0dXJuKSYmbi5jYWxsKGEpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gcn1mdW5jdGlvbiByKHQsZSl7Zm9yKHZhciBuPTAsbz1lLmxlbmd0aCxpPXQubGVuZ3RoO248bztuKyssaSsrKXRbaV09ZVtuXTtyZXR1cm4gdH1mdW5jdGlvbiBzKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygcz8odGhpcy52PXQsdGhpcyk6bmV3IHModCl9ZnVuY3Rpb24gbCh0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBvLGk9bi5hcHBseSh0LGV8fFtdKSxhPVtdO3JldHVybiBvPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIpLHIoInJldHVybiIpLG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG87ZnVuY3Rpb24gcih0KXtpW3RdJiYob1t0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sbyl7YS5wdXNoKFt0LGUsbixvXSk+MXx8bCh0LGUpfSkpfSl9ZnVuY3Rpb24gbCh0LGUpe3RyeXshKGZ1bmN0aW9uIG4odCl7dC52YWx1ZSBpbnN0YW5jZW9mIHM/UHJvbWlzZS5yZXNvbHZlKHQudmFsdWUudikudGhlbihjLGQpOnAoYVswXVsyXSx0KX0pKGlbdF0oZSkpfWNhdGNoKHQpe3AoYVswXVszXSx0KX19ZnVuY3Rpb24gYyh0KXtsKCJuZXh0Iix0KX1mdW5jdGlvbiBkKHQpe2woInRocm93Iix0KX1mdW5jdGlvbiBwKHQsZSl7dChlKSxhLnNoaWZ0KCksYS5sZW5ndGgmJmwoYVswXVswXSxhWzBdWzFdKX19ZnVuY3Rpb24gYyh0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGUsbj10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwodCk6KHQ9aSh0KSxlPXt9LG8oIm5leHQiKSxvKCJ0aHJvdyIpLG8oInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIG8obil7ZVtuXT10W25dJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8saSl7KGZ1bmN0aW9uIGEodCxlLG4sbyl7UHJvbWlzZS5yZXNvbHZlKG8pLnRoZW4oKGZ1bmN0aW9uKGUpe3Qoe3ZhbHVlOmUsZG9uZTpufSl9KSxlKX0pKG8saSwoZT10W25dKGUpKS5kb25lLGUudmFsdWUpfSkpfX19ZnVuY3Rpb24gZCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiBwKHQpe3ZhciBlPXQoKGZ1bmN0aW9uKHQpe0Vycm9yLmNhbGwodCksdC5zdGFjaz0obmV3IEVycm9yKS5zdGFja30pKTtyZXR1cm4gZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZX12YXIgbT1wKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gZShuKXt0KHRoaXMpLHRoaXMubWVzc2FnZT1uP24ubGVuZ3RoKyIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbiIrbi5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUrMSsiKSAiK3QudG9TdHJpbmcoKX0pKS5qb2luKCJcbiAgIik6IiIsdGhpcy5uYW1lPSJVbnN1YnNjcmlwdGlvbkVycm9yIix0aGlzLmVycm9ycz1ufX0pKTtmdW5jdGlvbiB1KHQsZSl7aWYodCl7dmFyIG49dC5pbmRleE9mKGUpOzA8PW4mJnQuc3BsaWNlKG4sMSl9fXZhciBmPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5pbml0aWFsVGVhcmRvd249dCx0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnRhZ2U9bnVsbCx0aGlzLl90ZWFyZG93bnM9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgdCxlLG4sbyxzO2lmKCF0aGlzLmNsb3NlZCl7dGhpcy5jbG9zZWQ9ITA7dmFyIGw9dGhpcy5fcGFyZW50YWdlO2lmKGwpaWYodGhpcy5fcGFyZW50YWdlPW51bGwsQXJyYXkuaXNBcnJheShsKSl0cnl7Zm9yKHZhciBjPWkobCkscD1jLm5leHQoKTshcC5kb25lO3A9Yy5uZXh0KCkpe3AudmFsdWUucmVtb3ZlKHRoaXMpfX1jYXRjaChlKXt0PXtlcnJvcjplfX1maW5hbGx5e3RyeXtwJiYhcC5kb25lJiYoZT1jLnJldHVybikmJmUuY2FsbChjKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19ZWxzZSBsLnJlbW92ZSh0aGlzKTt2YXIgdT10aGlzLmluaXRpYWxUZWFyZG93bjtpZihkKHUpKXRyeXt1KCl9Y2F0Y2godCl7cz10IGluc3RhbmNlb2YgbT90LmVycm9yczpbdF19dmFyIGY9dGhpcy5fdGVhcmRvd25zO2lmKGYpe3RoaXMuX3RlYXJkb3ducz1udWxsO3RyeXtmb3IodmFyIGc9aShmKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIHk9aC52YWx1ZTt0cnl7Yih5KX1jYXRjaCh0KXtzPW51bGwhPXM/czpbXSx0IGluc3RhbmNlb2YgbT9zPXIocihbXSxhKHMpKSxhKHQuZXJyb3JzKSk6cy5wdXNoKHQpfX19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7aCYmIWguZG9uZSYmKG89Zy5yZXR1cm4pJiZvLmNhbGwoZyl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fX1pZihzKXRocm93IG5ldyBtKHMpfX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3ZhciBuO2lmKGUmJmUhPT10aGlzKWlmKHRoaXMuY2xvc2VkKWIoZSk7ZWxzZXtpZihlIGluc3RhbmNlb2YgdCl7aWYoZS5jbG9zZWR8fGUuX2hhc1BhcmVudCh0aGlzKSlyZXR1cm47ZS5fYWRkUGFyZW50KHRoaXMpfSh0aGlzLl90ZWFyZG93bnM9bnVsbCE9PShuPXRoaXMuX3RlYXJkb3ducykmJnZvaWQgMCE9PW4/bjpbXSkucHVzaChlKX19LHQucHJvdG90eXBlLl9oYXNQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyZW50YWdlO3JldHVybiBlPT09dHx8QXJyYXkuaXNBcnJheShlKSYmZS5pbmNsdWRlcyh0KX0sdC5wcm90b3R5cGUuX2FkZFBhcmVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9wYXJlbnRhZ2U7dGhpcy5fcGFyZW50YWdlPUFycmF5LmlzQXJyYXkoZSk/KGUucHVzaCh0KSxlKTplP1tlLHRdOnR9LHQucHJvdG90eXBlLl9yZW1vdmVQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyZW50YWdlO2U9PT10P3RoaXMuX3BhcmVudGFnZT1udWxsOkFycmF5LmlzQXJyYXkoZSkmJnUoZSx0KX0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuX3RlYXJkb3ducztuJiZ1KG4sZSksZSBpbnN0YW5jZW9mIHQmJmUuX3JlbW92ZVBhcmVudCh0aGlzKX0sdC5FTVBUWT0oZnVuY3Rpb24oKXt2YXIgZT1uZXcgdDtyZXR1cm4gZS5jbG9zZWQ9ITAsZX0pKCksdH0pKCksZz1mLkVNUFRZO2Z1bmN0aW9uIGgodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBmfHx0JiYiY2xvc2VkImluIHQmJmQodC5yZW1vdmUpJiZkKHQuYWRkKSYmZCh0LnVuc3Vic2NyaWJlKX1mdW5jdGlvbiBiKHQpe2QodCk/dCgpOnQudW5zdWJzY3JpYmUoKX12YXIgeT17b25VbmhhbmRsZWRFcnJvcjpudWxsLG9uU3RvcHBlZE5vdGlmaWNhdGlvbjpudWxsLFByb21pc2U6dm9pZCAwLHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc6ITEsdXNlRGVwcmVjYXRlZE5leHRDb250ZXh0OiExfSxfPXtzZXRUaW1lb3V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPV8uZGVsZWdhdGU7cmV0dXJuKChudWxsPT1uP3ZvaWQgMDpuLnNldFRpbWVvdXQpfHxzZXRUaW1lb3V0KS5hcHBseSh2b2lkIDAscihbXSxhKHQpKSl9LGNsZWFyVGltZW91dDpmdW5jdGlvbih0KXt2YXIgZT1fLmRlbGVnYXRlO3JldHVybigobnVsbD09ZT92b2lkIDA6ZS5jbGVhclRpbWVvdXQpfHxjbGVhclRpbWVvdXQpKHQpfSxkZWxlZ2F0ZTp2b2lkIDB9O2Z1bmN0aW9uIEModCl7Xy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Rocm93IHR9KSl9ZnVuY3Rpb24gTSgpe312YXIgdj1udWxsO2Z1bmN0aW9uIHgodCl7aWYoeS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXt2YXIgZT0hdjtpZihlJiYodj17ZXJyb3JUaHJvd246ITEsZXJyb3I6bnVsbH0pLHQoKSxlKXt2YXIgbj12O2lmKHY9bnVsbCxuLmVycm9yVGhyb3duKXRocm93IG4uZXJyb3J9fWVsc2UgdCgpfXZhciBPPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5pc1N0b3BwZWQ9ITEsZT8obi5kZXN0aW5hdGlvbj1lLGgoZSkmJmUuYWRkKG4pKTpuLmRlc3RpbmF0aW9uPVMsbn1yZXR1cm4gZShuLHQpLG4uY3JlYXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbmV3IFAodCxlLG4pfSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxuLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2Vycm9yKHQpKX0sbi5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSx0aGlzLmRlc3RpbmF0aW9uPW51bGwpfSxuLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LG4ucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbih0KXt0cnl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19LG4ucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RyeXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fSxufSkoZiksUD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4sbyl7dmFyIGksYT10LmNhbGwodGhpcyl8fHRoaXM7aWYoZChlKSlpPWU7ZWxzZSBpZihlKXt2YXIgcjtpPWUubmV4dCxuPWUuZXJyb3Isbz1lLmNvbXBsZXRlLGEmJnkudXNlRGVwcmVjYXRlZE5leHRDb250ZXh0PyhyPU9iamVjdC5jcmVhdGUoZSkpLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7cmV0dXJuIGEudW5zdWJzY3JpYmUoKX06cj1lLGk9bnVsbD09aT92b2lkIDA6aS5iaW5kKHIpLG49bnVsbD09bj92b2lkIDA6bi5iaW5kKHIpLG89bnVsbD09bz92b2lkIDA6by5iaW5kKHIpfXJldHVybiBhLmRlc3RpbmF0aW9uPXtuZXh0Omk/dyhpKTpNLGVycm9yOncobnVsbCE9bj9uOmspLGNvbXBsZXRlOm8/dyhvKTpNfSxhfXJldHVybiBlKG4sdCksbn0pKE8pO2Z1bmN0aW9uIHcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07dHJ5e3QuYXBwbHkodm9pZCAwLHIoW10sYShlKSkpfWNhdGNoKHQpe0ModCl9fX1mdW5jdGlvbiBrKHQpe3Rocm93IHR9dmFyIFM9e2Nsb3NlZDohMCxuZXh0Ok0sZXJyb3I6ayxjb21wbGV0ZTpNfSxEPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5vYnNlcnZhYmxlfHwiQEBvYnNlcnZhYmxlIjtmdW5jdGlvbiBSKHQpe3JldHVybiB0fWZ1bmN0aW9uIEUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIEEodCl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gMD09PXQubGVuZ3RoP1I6MT09PXQubGVuZ3RoP3RbMF06ZnVuY3Rpb24gZShuKXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUodCl9KSxuKX19dmFyIFQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0JiYodGhpcy5fc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBuLnNvdXJjZT10aGlzLG4ub3BlcmF0b3I9ZSxufSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3ZhciBvPXRoaXMsaT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdCYmdCBpbnN0YW5jZW9mIE98fChmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZkKHQubmV4dCkmJmQodC5lcnJvcikmJmQodC5jb21wbGV0ZSl9KSh0KSYmaCh0KX0pKHQpP3Q6bmV3IFAodCxlLG4pO3JldHVybiB4KChmdW5jdGlvbigpe3ZhciB0PW8ub3BlcmF0b3IsZT1vLnNvdXJjZTtpLmFkZCh0P3QuY2FsbChpLGUpOmU/by5fc3Vic2NyaWJlKGkpOm8uX3RyeVN1YnNjcmliZShpKSl9KSksaX0sdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZT1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIHRoaXMuX3N1YnNjcmliZSh0KX1jYXRjaChlKXt0LmVycm9yKGUpfX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIG5ldyhlPU4oZSkpKChmdW5jdGlvbihlLG8pe3ZhciBpO2k9bi5zdWJzY3JpYmUoKGZ1bmN0aW9uKGUpe3RyeXt0KGUpfWNhdGNoKHQpe28odCksbnVsbD09aXx8aS51bnN1YnNjcmliZSgpfX0pLG8sZSl9KSl9LHQucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT10aGlzLnNvdXJjZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3Vic2NyaWJlKHQpfSx0LnByb3RvdHlwZVtEXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiBBKHQpKHRoaXMpfSx0LnByb3RvdHlwZS50b1Byb21pc2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3KHQ9Tih0KSkoKGZ1bmN0aW9uKHQsbil7dmFyIG87ZS5zdWJzY3JpYmUoKGZ1bmN0aW9uKHQpe3JldHVybiBvPXR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4odCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gdChvKX0pKX0pKX0sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KGUpfSx0fSkoKTtmdW5jdGlvbiBOKHQpe3ZhciBlO3JldHVybiBudWxsIT09KGU9bnVsbCE9dD90OnkuUHJvbWlzZSkmJnZvaWQgMCE9PWU/ZTpQcm9taXNlfWZ1bmN0aW9uIHoodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKChmdW5jdGlvbiBuKHQpe3JldHVybiBkKG51bGw9PXQ/dm9pZCAwOnQubGlmdCl9KShlKSlyZXR1cm4gZS5saWZ0KChmdW5jdGlvbihlKXt0cnl7cmV0dXJuIHQoZSx0aGlzKX1jYXRjaCh0KXt0aGlzLmVycm9yKHQpfX0pKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZSIpfX12YXIgSSxIPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbixvLGksYSl7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIub25GaW5hbGl6ZT1hLHIuX25leHQ9bj9mdW5jdGlvbih0KXt0cnl7bih0KX1jYXRjaCh0KXtlLmVycm9yKHQpfX06dC5wcm90b3R5cGUuX25leHQsci5fZXJyb3I9aT9mdW5jdGlvbih0KXt0cnl7aSh0KX1jYXRjaCh0KXtlLmVycm9yKHQpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06dC5wcm90b3R5cGUuX2Vycm9yLHIuX2NvbXBsZXRlPW8/ZnVuY3Rpb24oKXt0cnl7bygpfWNhdGNoKHQpe2UuZXJyb3IodCl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fTp0LnByb3RvdHlwZS5fY29tcGxldGUscn1yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLmNsb3NlZDt0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLCFuJiYobnVsbD09PShlPXRoaXMub25GaW5hbGl6ZSl8fHZvaWQgMD09PWV8fGUuY2FsbCh0aGlzKSl9LG59KShPKSxGPXtzY2hlZHVsZTpmdW5jdGlvbih0KXt2YXIgZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsbj1jYW5jZWxBbmltYXRpb25GcmFtZSxvPUYuZGVsZWdhdGU7byYmKGU9by5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsbj1vLmNhbmNlbEFuaW1hdGlvbkZyYW1lKTt2YXIgaT1lKChmdW5jdGlvbihlKXtuPXZvaWQgMCx0KGUpfSkpO3JldHVybiBuZXcgZigoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09bj92b2lkIDA6bihpKX0pKX0scmVxdWVzdEFuaW1hdGlvbkZyYW1lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPUYuZGVsZWdhdGU7cmV0dXJuKChudWxsPT1uP3ZvaWQgMDpuLnJlcXVlc3RBbmltYXRpb25GcmFtZSl8fHJlcXVlc3RBbmltYXRpb25GcmFtZSkuYXBwbHkodm9pZCAwLHIoW10sYSh0KSkpfSxjYW5jZWxBbmltYXRpb25GcmFtZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1GLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5jYW5jZWxBbmltYXRpb25GcmFtZSl8fGNhbmNlbEFuaW1hdGlvbkZyYW1lKS5hcHBseSh2b2lkIDAscihbXSxhKHQpKSl9LGRlbGVnYXRlOnZvaWQgMH0sTD1wKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gZSgpe3QodGhpcyksdGhpcy5uYW1lPSJPYmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpcy5tZXNzYWdlPSJvYmplY3QgdW5zdWJzY3JpYmVkIn19KSksQj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5jbG9zZWQ9ITEsZS5vYnNlcnZlcnM9W10sZS5pc1N0b3BwZWQ9ITEsZS5oYXNFcnJvcj0hMSxlLnRocm93bkVycm9yPW51bGwsZX1yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLmxpZnQ9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFYodGhpcyx0aGlzKTtyZXR1cm4gZS5vcGVyYXRvcj10LGV9LG4ucHJvdG90eXBlLl90aHJvd0lmQ2xvc2VkPWZ1bmN0aW9uKCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IEx9LG4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt4KChmdW5jdGlvbigpe3ZhciBuLG87aWYoZS5fdGhyb3dJZkNsb3NlZCgpLCFlLmlzU3RvcHBlZCl7dmFyIGE9ZS5vYnNlcnZlcnMuc2xpY2UoKTt0cnl7Zm9yKHZhciByPWkoYSkscz1yLm5leHQoKTshcy5kb25lO3M9ci5uZXh0KCkpe3MudmFsdWUubmV4dCh0KX19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKG89ci5yZXR1cm4pJiZvLmNhbGwocil9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fX19KSl9LG4ucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7eCgoZnVuY3Rpb24oKXtpZihlLl90aHJvd0lmQ2xvc2VkKCksIWUuaXNTdG9wcGVkKXtlLmhhc0Vycm9yPWUuaXNTdG9wcGVkPSEwLGUudGhyb3duRXJyb3I9dDtmb3IodmFyIG49ZS5vYnNlcnZlcnM7bi5sZW5ndGg7KW4uc2hpZnQoKS5lcnJvcih0KX19KSl9LG4ucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt4KChmdW5jdGlvbigpe2lmKHQuX3Rocm93SWZDbG9zZWQoKSwhdC5pc1N0b3BwZWQpe3QuaXNTdG9wcGVkPSEwO2Zvcih2YXIgZT10Lm9ic2VydmVycztlLmxlbmd0aDspZS5zaGlmdCgpLmNvbXBsZXRlKCl9fSkpfSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuaXNTdG9wcGVkPXRoaXMuY2xvc2VkPSEwLHRoaXMub2JzZXJ2ZXJzPW51bGx9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwib2JzZXJ2ZWQiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4obnVsbD09PSh0PXRoaXMub2JzZXJ2ZXJzKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sZW5ndGgpPjB9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbi5wcm90b3R5cGUuX3RyeVN1YnNjcmliZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLGUpfSxuLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyh0KSx0aGlzLl9pbm5lclN1YnNjcmliZSh0KX0sbi5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLm9ic2VydmVycztyZXR1cm4gZS5oYXNFcnJvcnx8ZS5pc1N0b3BwZWQ/Zzoobi5wdXNoKHQpLG5ldyBmKChmdW5jdGlvbigpe3JldHVybiB1KG4sdCl9KSkpfSxuLnByb3RvdHlwZS5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5pc1N0b3BwZWQ7ZS5oYXNFcnJvcj90LmVycm9yKGUudGhyb3duRXJyb3IpOm4mJnQuY29tcGxldGUoKX0sbi5wcm90b3R5cGUuYXNPYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IFQ7cmV0dXJuIHQuc291cmNlPXRoaXMsdH0sbi5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFYodCxlKX0sbn0pKFQpLFY9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uZGVzdGluYXRpb249ZSxvLnNvdXJjZT1uLG99cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlLG47bnVsbD09PShuPW51bGw9PT0oZT10aGlzLmRlc3RpbmF0aW9uKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5uZXh0KXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9LG4ucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlLG47bnVsbD09PShuPW51bGw9PT0oZT10aGlzLmRlc3RpbmF0aW9uKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5lcnJvcil8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfSxuLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0LGU7bnVsbD09PShlPW51bGw9PT0odD10aGlzLmRlc3RpbmF0aW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jb21wbGV0ZSl8fHZvaWQgMD09PWV8fGUuY2FsbCh0KX0sbi5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiBudWxsIT09KG49bnVsbD09PShlPXRoaXMuc291cmNlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zdWJzY3JpYmUodCkpJiZ2b2lkIDAhPT1uP246Z30sbn0pKEIpLFU9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl92YWx1ZT1lLG59cmV0dXJuIGUobix0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsInZhbHVlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWUoKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxuLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3ZhciBuPXQucHJvdG90eXBlLl9zdWJzY3JpYmUuY2FsbCh0aGlzLGUpO3JldHVybiFuLmNsb3NlZCYmZS5uZXh0KHRoaXMuX3ZhbHVlKSxufSxuLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll92YWx1ZTtpZih0Lmhhc0Vycm9yKXRocm93IHQudGhyb3duRXJyb3I7cmV0dXJuIHRoaXMuX3Rocm93SWZDbG9zZWQoKSxlfSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLm5leHQuY2FsbCh0aGlzLHRoaXMuX3ZhbHVlPWUpfSxufSkoQiksaj17bm93OmZ1bmN0aW9uKCl7cmV0dXJuKGouZGVsZWdhdGV8fERhdGUpLm5vdygpfSxkZWxlZ2F0ZTp2b2lkIDB9LFc9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuLG8pe3ZvaWQgMD09PWUmJihlPTEvMCksdm9pZCAwPT09biYmKG49MS8wKSx2b2lkIDA9PT1vJiYobz1qKTt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX2J1ZmZlclNpemU9ZSxpLl93aW5kb3dUaW1lPW4saS5fdGltZXN0YW1wUHJvdmlkZXI9byxpLl9idWZmZXI9W10saS5faW5maW5pdGVUaW1lV2luZG93PSEwLGkuX2luZmluaXRlVGltZVdpbmRvdz1uPT09MS8wLGkuX2J1ZmZlclNpemU9TWF0aC5tYXgoMSxlKSxpLl93aW5kb3dUaW1lPU1hdGgubWF4KDEsbiksaX1yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyxvPW4uX2J1ZmZlcixpPW4uX2luZmluaXRlVGltZVdpbmRvdyxhPW4uX3RpbWVzdGFtcFByb3ZpZGVyLHI9bi5fd2luZG93VGltZTtuLmlzU3RvcHBlZHx8KG8ucHVzaChlKSwhaSYmby5wdXNoKGEubm93KCkrcikpLHRoaXMuX3RyaW1CdWZmZXIoKSx0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyxlKX0sbi5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt0aGlzLl90aHJvd0lmQ2xvc2VkKCksdGhpcy5fdHJpbUJ1ZmZlcigpO2Zvcih2YXIgZT10aGlzLl9pbm5lclN1YnNjcmliZSh0KSxuPXRoaXMuX2luZmluaXRlVGltZVdpbmRvdyxvPXRoaXMuX2J1ZmZlci5zbGljZSgpLGk9MDtpPG8ubGVuZ3RoJiYhdC5jbG9zZWQ7aSs9bj8xOjIpdC5uZXh0KG9baV0pO3JldHVybiB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHQpLGV9LG4ucHJvdG90eXBlLl90cmltQnVmZmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX2J1ZmZlclNpemUsbj10Ll90aW1lc3RhbXBQcm92aWRlcixvPXQuX2J1ZmZlcixpPXQuX2luZmluaXRlVGltZVdpbmRvdyxhPShpPzE6MikqZTtpZihlPDEvMCYmYTxvLmxlbmd0aCYmby5zcGxpY2UoMCxvLmxlbmd0aC1hKSwhaSl7Zm9yKHZhciByPW4ubm93KCkscz0wLGw9MTtsPG8ubGVuZ3RoJiZvW2xdPD1yO2wrPTIpcz1sO3MmJm8uc3BsaWNlKDAscysxKX19LG59KShCKSxHPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7cmV0dXJuIHQuY2FsbCh0aGlzKXx8dGhpc31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXN9LG59KShmKSxZPXtzZXRJbnRlcnZhbDpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1ZLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5zZXRJbnRlcnZhbCl8fHNldEludGVydmFsKS5hcHBseSh2b2lkIDAscihbXSxhKHQpKSl9LGNsZWFySW50ZXJ2YWw6ZnVuY3Rpb24odCl7dmFyIGU9WS5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PWU/dm9pZCAwOmUuY2xlYXJJbnRlcnZhbCl8fGNsZWFySW50ZXJ2YWwpKHQpfSxkZWxlZ2F0ZTp2b2lkIDB9LHE9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuKXt2YXIgbz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBvLnNjaGVkdWxlcj1lLG8ud29yaz1uLG8ucGVuZGluZz0hMSxvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1lJiYoZT0wKSx0aGlzLmNsb3NlZClyZXR1cm4gdGhpczt0aGlzLnN0YXRlPXQ7dmFyIG49dGhpcy5pZCxvPXRoaXMuc2NoZWR1bGVyO3JldHVybiBudWxsIT1uJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKG8sbixlKSksdGhpcy5wZW5kaW5nPSEwLHRoaXMuZGVsYXk9ZSx0aGlzLmlkPXRoaXMuaWR8fHRoaXMucmVxdWVzdEFzeW5jSWQobyx0aGlzLmlkLGUpLHRoaXN9LG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49MCksWS5zZXRJbnRlcnZhbCh0LmZsdXNoLmJpbmQodCx0aGlzKSxuKX0sbi5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQ9ZnVuY3Rpb24odCxlLG4pe2lmKHZvaWQgMD09PW4mJihuPTApLG51bGwhPW4mJnRoaXMuZGVsYXk9PT1uJiYhMT09PXRoaXMucGVuZGluZylyZXR1cm4gZTtZLmNsZWFySW50ZXJ2YWwoZSl9LG4ucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmNsb3NlZClyZXR1cm4gbmV3IEVycm9yKCJleGVjdXRpbmcgYSBjYW5jZWxsZWQgYWN0aW9uIik7dGhpcy5wZW5kaW5nPSExO3ZhciBuPXRoaXMuX2V4ZWN1dGUodCxlKTtpZihuKXJldHVybiBuOyExPT09dGhpcy5wZW5kaW5nJiZudWxsIT10aGlzLmlkJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKHRoaXMuc2NoZWR1bGVyLHRoaXMuaWQsbnVsbCkpfSxuLnByb3RvdHlwZS5fZXhlY3V0ZT1mdW5jdGlvbih0LGUpe3ZhciBuLG89ITE7dHJ5e3RoaXMud29yayh0KX1jYXRjaCh0KXtvPSEwLG49ISF0JiZ0fHxuZXcgRXJyb3IodCl9aWYobylyZXR1cm4gdGhpcy51bnN1YnNjcmliZSgpLG59LG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuY2xvc2VkKXt2YXIgZT10aGlzLmlkLG49dGhpcy5zY2hlZHVsZXIsbz1uLmFjdGlvbnM7dGhpcy53b3JrPXRoaXMuc3RhdGU9dGhpcy5zY2hlZHVsZXI9bnVsbCx0aGlzLnBlbmRpbmc9ITEsdShvLHRoaXMpLG51bGwhPWUmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQobixlLG51bGwpKSx0aGlzLmRlbGF5PW51bGwsdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKX19LG59KShHKSxaPTEsWD17fTtmdW5jdGlvbiBLKHQpe3JldHVybiB0IGluIFgmJihkZWxldGUgWFt0XSwhMCl9dmFyIEo9ZnVuY3Rpb24odCl7dmFyIGU9WisrO3JldHVybiBYW2VdPSEwLEl8fChJPVByb21pc2UucmVzb2x2ZSgpKSxJLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIEsoZSkmJnQoKX0pKSxlfSxRPWZ1bmN0aW9uKHQpe0sodCl9LCQ9e3NldEltbWVkaWF0ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj0kLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5zZXRJbW1lZGlhdGUpfHxKKS5hcHBseSh2b2lkIDAscihbXSxhKHQpKSl9LGNsZWFySW1tZWRpYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPSQuZGVsZWdhdGU7cmV0dXJuKChudWxsPT1lP3ZvaWQgMDplLmNsZWFySW1tZWRpYXRlKXx8USkodCl9LGRlbGVnYXRlOnZvaWQgMH0sdHQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuKXt2YXIgbz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBvLnNjaGVkdWxlcj1lLG8ud29yaz1uLG99cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7cmV0dXJuIHZvaWQgMD09PW8mJihvPTApLG51bGwhPT1vJiZvPjA/dC5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQuY2FsbCh0aGlzLGUsbixvKTooZS5hY3Rpb25zLnB1c2godGhpcyksZS5fc2NoZWR1bGVkfHwoZS5fc2NoZWR1bGVkPSQuc2V0SW1tZWRpYXRlKGUuZmx1c2guYmluZChlLHZvaWQgMCkpKSl9LG4ucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKGUsbixvKXtpZih2b2lkIDA9PT1vJiYobz0wKSxudWxsIT1vJiZvPjB8fG51bGw9PW8mJnRoaXMuZGVsYXk+MClyZXR1cm4gdC5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQuY2FsbCh0aGlzLGUsbixvKTswPT09ZS5hY3Rpb25zLmxlbmd0aCYmKCQuY2xlYXJJbW1lZGlhdGUobiksZS5fc2NoZWR1bGVkPXZvaWQgMCl9LG59KShxKSxldD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7dm9pZCAwPT09biYmKG49dC5ub3cpLHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcj1lLHRoaXMubm93PW59cmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLHQpLnNjaGVkdWxlKG4sZSl9LHQubm93PWoubm93LHR9KSgpLG50PShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dm9pZCAwPT09biYmKG49ZXQubm93KTt2YXIgbz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBvLmFjdGlvbnM9W10sby5fYWN0aXZlPSExLG8uX3NjaGVkdWxlZD12b2lkIDAsb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYWN0aW9ucztpZih0aGlzLl9hY3RpdmUpZS5wdXNoKHQpO2Vsc2V7dmFyIG47dGhpcy5fYWN0aXZlPSEwO2Rve2lmKG49dC5leGVjdXRlKHQuc3RhdGUsdC5kZWxheSkpYnJlYWt9d2hpbGUodD1lLnNoaWZ0KCkpO2lmKHRoaXMuX2FjdGl2ZT0hMSxuKXtmb3IoO3Q9ZS5zaGlmdCgpOyl0LnVuc3Vic2NyaWJlKCk7dGhyb3cgbn19fSxufSkoZXQpLG90PW5ldygoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbih0KXt0aGlzLl9hY3RpdmU9ITAsdGhpcy5fc2NoZWR1bGVkPXZvaWQgMDt2YXIgZSxuPXRoaXMuYWN0aW9ucyxvPS0xO3Q9dHx8bi5zaGlmdCgpO3ZhciBpPW4ubGVuZ3RoO2Rve2lmKGU9dC5leGVjdXRlKHQuc3RhdGUsdC5kZWxheSkpYnJlYWt9d2hpbGUoKytvPGkmJih0PW4uc2hpZnQoKSkpO2lmKHRoaXMuX2FjdGl2ZT0hMSxlKXtmb3IoOysrbzxpJiYodD1uLnNoaWZ0KCkpOyl0LnVuc3Vic2NyaWJlKCk7dGhyb3cgZX19LG59KShudCkpKHR0KSxpdD1uZXcgbnQocSksYXQ9aXQscnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuKXt2YXIgbz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBvLnNjaGVkdWxlcj1lLG8ud29yaz1uLG99cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbihlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSxuPjA/dC5wcm90b3R5cGUuc2NoZWR1bGUuY2FsbCh0aGlzLGUsbik6KHRoaXMuZGVsYXk9bix0aGlzLnN0YXRlPWUsdGhpcy5zY2hlZHVsZXIuZmx1c2godGhpcyksdGhpcyl9LG4ucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbj4wfHx0aGlzLmNsb3NlZD90LnByb3RvdHlwZS5leGVjdXRlLmNhbGwodGhpcyxlLG4pOnRoaXMuX2V4ZWN1dGUoZSxuKX0sbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQ9ZnVuY3Rpb24oZSxuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0wKSxudWxsIT1vJiZvPjB8fG51bGw9PW8mJnRoaXMuZGVsYXk+MD90LnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZC5jYWxsKHRoaXMsZSxuLG8pOmUuZmx1c2godGhpcyl9LG59KShxKSxzdD1uZXcoKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBlKG4sdCksbn0pKG50KSkocnQpLGx0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQ9ZnVuY3Rpb24oZSxuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0wKSxudWxsIT09byYmbz4wP3QucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk6KGUuYWN0aW9ucy5wdXNoKHRoaXMpLGUuX3NjaGVkdWxlZHx8KGUuX3NjaGVkdWxlZD1GLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtyZXR1cm4gZS5mbHVzaCh2b2lkIDApfSkpKSl9LG4ucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKGUsbixvKXtpZih2b2lkIDA9PT1vJiYobz0wKSxudWxsIT1vJiZvPjB8fG51bGw9PW8mJnRoaXMuZGVsYXk+MClyZXR1cm4gdC5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQuY2FsbCh0aGlzLGUsbixvKTswPT09ZS5hY3Rpb25zLmxlbmd0aCYmKEYuY2FuY2VsQW5pbWF0aW9uRnJhbWUobiksZS5fc2NoZWR1bGVkPXZvaWQgMCl9LG59KShxKSxjdD1uZXcoKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24odCl7dGhpcy5fYWN0aXZlPSEwLHRoaXMuX3NjaGVkdWxlZD12b2lkIDA7dmFyIGUsbj10aGlzLmFjdGlvbnMsbz0tMTt0PXR8fG4uc2hpZnQoKTt2YXIgaT1uLmxlbmd0aDtkb3tpZihlPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrfXdoaWxlKCsrbzxpJiYodD1uLnNoaWZ0KCkpKTtpZih0aGlzLl9hY3RpdmU9ITEsZSl7Zm9yKDsrK288aSYmKHQ9bi5zaGlmdCgpKTspdC51bnN1YnNjcmliZSgpO3Rocm93IGV9fSxufSkobnQpKShsdCksZHQ9bmV3IFQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbXBsZXRlKCl9KSk7ZnVuY3Rpb24gcHQodCxlKXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKG4pe3ZhciBvPTA7cmV0dXJuIGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7bz09PXQubGVuZ3RoP24uY29tcGxldGUoKToobi5uZXh0KHRbbysrXSksbi5jbG9zZWR8fHRoaXMuc2NoZWR1bGUoKSl9KSl9KSl9dmFyIG10PWZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoJiYiZnVuY3Rpb24iIT10eXBlb2YgdH07ZnVuY3Rpb24gdXQodCl7cmV0dXJuIGQobnVsbD09dD92b2lkIDA6dC50aGVuKX12YXIgZnQsZ3Q9KGZ1bmN0aW9uIGh0KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yP1N5bWJvbC5pdGVyYXRvcjoiQEBpdGVyYXRvciJ9KSgpO2Z1bmN0aW9uIGJ0KHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJJdGVyYWJsZSBjYW5ub3QgYmUgbnVsbCIpO3JldHVybiBuZXcgVCgoZnVuY3Rpb24obil7dmFyIG89bmV3IGY7cmV0dXJuIG8uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7dmFyIGk9dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTtvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3ZhciB0PXRoaXM7aS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7ZS5kb25lP24uY29tcGxldGUoKToobi5uZXh0KGUudmFsdWUpLHQuc2NoZWR1bGUoKSl9KSl9KSkpfSkpKSxvfSkpfWZ1bmN0aW9uIHl0KHQpe3JldHVybiBkKHRbRF0pfWZ1bmN0aW9uIF90KHQpe3JldHVybiBkKG51bGw9PXQ/dm9pZCAwOnRbZ3RdKX1mdW5jdGlvbiBDdCh0KXtyZXR1cm4gU3ltYm9sLmFzeW5jSXRlcmF0b3ImJmQobnVsbD09dD92b2lkIDA6dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pfWZ1bmN0aW9uIE10KHQpe3JldHVybiBuZXcgVHlwZUVycm9yKCJZb3UgcHJvdmlkZWQgIisobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdD8iYW4gaW52YWxpZCBvYmplY3QiOiInIit0KyInIikrIiB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlvdSBjYW4gcHJvdmlkZSBhbiBPYnNlcnZhYmxlLCBQcm9taXNlLCBSZWFkYWJsZVN0cmVhbSwgQXJyYXksIEFzeW5jSXRlcmFibGUsIG9yIEl0ZXJhYmxlLiIpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiBsKHRoaXMsYXJndW1lbnRzLChmdW5jdGlvbiBlKCl7dmFyIG4saSxhO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKGUpe3N3aXRjaChlLmxhYmVsKXtjYXNlIDA6bj10LmdldFJlYWRlcigpLGUubGFiZWw9MTtjYXNlIDE6ZS50cnlzLnB1c2goWzEsLDksMTBdKSxlLmxhYmVsPTI7Y2FzZSAyOnJldHVybls0LHMobi5yZWFkKCkpXTtjYXNlIDM6cmV0dXJuIGk9ZS5zZW50KCksYT1pLnZhbHVlLGkuZG9uZT9bNCxzKHZvaWQgMCldOlszLDVdO2Nhc2UgNDpyZXR1cm5bMixlLnNlbnQoKV07Y2FzZSA1OnJldHVybls0LHMoYSldO2Nhc2UgNjpyZXR1cm5bNCxlLnNlbnQoKV07Y2FzZSA3OnJldHVybiBlLnNlbnQoKSxbMywyXTtjYXNlIDg6cmV0dXJuWzMsMTBdO2Nhc2UgOTpyZXR1cm4gbi5yZWxlYXNlTG9jaygpLFs3XTtjYXNlIDEwOnJldHVyblsyXX19KSl9KSl9ZnVuY3Rpb24geHQodCl7cmV0dXJuIGQobnVsbD09dD92b2lkIDA6dC5nZXRSZWFkZXIpfWZ1bmN0aW9uIE90KHQsZSl7aWYobnVsbCE9dCl7aWYoeXQodCkpcmV0dXJuKGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKG4pe3ZhciBvPW5ldyBmO3JldHVybiBvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3ZhciBpPXRbRF0oKTtvLmFkZChpLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbih0KXtvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBuLm5leHQodCl9KSkpfSxlcnJvcjpmdW5jdGlvbih0KXtvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBuLmVycm9yKHQpfSkpKX0sY29tcGxldGU6ZnVuY3Rpb24oKXtvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBuLmNvbXBsZXRlKCl9KSkpfX0pKX0pKSksb30pKX0pKHQsZSk7aWYobXQodCkpcmV0dXJuIHB0KHQsZSk7aWYodXQodCkpcmV0dXJuKGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKG4pe3JldHVybiBlLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiB0LnRoZW4oKGZ1bmN0aW9uKHQpe24uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7bi5uZXh0KHQpLG4uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY29tcGxldGUoKX0pKSl9KSkpfSksKGZ1bmN0aW9uKHQpe24uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZXJyb3IodCl9KSkpfSkpfSkpfSkpfSkodCxlKTtpZihDdCh0KSlyZXR1cm4gYnQodCxlKTtpZihfdCh0KSlyZXR1cm4oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBuZXcgVCgoZnVuY3Rpb24obil7dmFyIG87cmV0dXJuIG4uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7bz10W2d0XSgpLChmdW5jdGlvbiBpKHQsZSxuLG8pe3ZvaWQgMD09PW8mJihvPTApO3ZhciBpPWUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7dHJ5e24uY2FsbCh0aGlzKX1jYXRjaChlKXt0LmVycm9yKGUpfX0pLG8pO3QuYWRkKGkpfSkobixlLChmdW5jdGlvbigpe3ZhciB0PW8ubmV4dCgpLGU9dC52YWx1ZTt0LmRvbmU/bi5jb21wbGV0ZSgpOihuLm5leHQoZSksdGhpcy5zY2hlZHVsZSgpKX0pKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gZChudWxsPT1vP3ZvaWQgMDpvLnJldHVybikmJm8ucmV0dXJuKCl9fSkpfSkodCxlKTtpZih4dCh0KSlyZXR1cm4oZnVuY3Rpb24gYSh0LGUpe3JldHVybiBidCh2dCh0KSxlKX0pKHQsZSl9dGhyb3cgTXQodCl9ZnVuY3Rpb24gUHQodCxlKXtyZXR1cm4gZT9PdCh0LGUpOnd0KHQpfWZ1bmN0aW9uIHd0KHQpe2lmKHQgaW5zdGFuY2VvZiBUKXJldHVybiB0O2lmKG51bGwhPXQpe2lmKHl0KHQpKXJldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgVCgoZnVuY3Rpb24oZSl7dmFyIG49dFtEXSgpO2lmKGQobi5zdWJzY3JpYmUpKXJldHVybiBuLnN1YnNjcmliZShlKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZSIpfSkpfSkodCk7aWYobXQodCkpcmV0dXJuIGt0KHQpO2lmKHV0KHQpKXJldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgVCgoZnVuY3Rpb24oZSl7dC50aGVuKChmdW5jdGlvbih0KXtlLmNsb3NlZHx8KGUubmV4dCh0KSxlLmNvbXBsZXRlKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBlLmVycm9yKHQpfSkpLnRoZW4obnVsbCxDKX0pKX0pKHQpO2lmKEN0KHQpKXJldHVybiBTdCh0KTtpZihfdCh0KSlyZXR1cm4oZnVuY3Rpb24gbyh0KXtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKGUpe3ZhciBuLG87dHJ5e2Zvcih2YXIgYT1pKHQpLHI9YS5uZXh0KCk7IXIuZG9uZTtyPWEubmV4dCgpKXtpZihlLm5leHQoci52YWx1ZSksZS5jbG9zZWQpcmV0dXJufX1jYXRjaCh0KXtuPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobz1hLnJldHVybikmJm8uY2FsbChhKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19ZS5jb21wbGV0ZSgpfSkpfSkodCk7aWYoeHQodCkpcmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIFN0KHZ0KHQpKX0pKHQpfXRocm93IE10KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiBuZXcgVCgoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmIWUuY2xvc2VkO24rKyllLm5leHQodFtuXSk7ZS5jb21wbGV0ZSgpfSkpfWZ1bmN0aW9uIFN0KHQpe3JldHVybiBuZXcgVCgoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uIGkodCxlKXt2YXIgaSxhLHIscztyZXR1cm4gbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG47cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpvLnRyeXMucHVzaChbMCw1LDYsMTFdKSxpPWModCksby5sYWJlbD0xO2Nhc2UgMTpyZXR1cm5bNCxpLm5leHQoKV07Y2FzZSAyOmlmKChhPW8uc2VudCgpKS5kb25lKXJldHVyblszLDRdO2lmKGUubmV4dChhLnZhbHVlKSxlLmNsb3NlZClyZXR1cm5bMl07by5sYWJlbD0zO2Nhc2UgMzpyZXR1cm5bMywxXTtjYXNlIDQ6cmV0dXJuWzMsMTFdO2Nhc2UgNTpyZXR1cm4gbj1vLnNlbnQoKSxyPXtlcnJvcjpufSxbMywxMV07Y2FzZSA2OnJldHVybiBvLnRyeXMucHVzaChbNiwsOSwxMF0pLGEmJiFhLmRvbmUmJihzPWkucmV0dXJuKT9bNCxzLmNhbGwoaSldOlszLDhdO2Nhc2UgNzpvLnNlbnQoKSxvLmxhYmVsPTg7Y2FzZSA4OnJldHVyblszLDEwXTtjYXNlIDk6aWYocil0aHJvdyByLmVycm9yO3JldHVybls3XTtjYXNlIDEwOnJldHVybls3XTtjYXNlIDExOnJldHVybiBlLmNvbXBsZXRlKCksWzJdfX0pKX0pKX0pKHQsZSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLmVycm9yKHQpfSkpfSkpfWZ1bmN0aW9uIER0KHQsZSl7cmV0dXJuIGU/cHQodCxlKTprdCh0KX1mdW5jdGlvbiBSdCh0KXtyZXR1cm4gdCYmZCh0LnNjaGVkdWxlKX1mdW5jdGlvbiBFdCh0KXtyZXR1cm4gdFt0Lmxlbmd0aC0xXX1mdW5jdGlvbiBBdCh0KXtyZXR1cm4gZChFdCh0KSk/dC5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gVHQodCl7cmV0dXJuIFJ0KEV0KHQpKT90LnBvcCgpOnZvaWQgMH1mdW5jdGlvbiBOdCh0LGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgRXQodCk/dC5wb3AoKTplfWZ1bmN0aW9uIHp0KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPVR0KHQpO3JldHVybiBuP3B0KHQsbik6RHQodCl9ZnVuY3Rpb24gSXQodCxlKXt2YXIgbj1kKHQpP3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbz1mdW5jdGlvbih0KXtyZXR1cm4gdC5lcnJvcihuKCkpfTtyZXR1cm4gbmV3IFQoZT9mdW5jdGlvbih0KXtyZXR1cm4gZS5zY2hlZHVsZShvLDAsdCl9Om8pfSEoZnVuY3Rpb24odCl7dC5ORVhUPSJOIix0LkVSUk9SPSJFIix0LkNPTVBMRVRFPSJDIn0pKGZ0fHwoZnQ9e30pKTt2YXIgSHQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5raW5kPXQsdGhpcy52YWx1ZT1lLHRoaXMuZXJyb3I9bix0aGlzLmhhc1ZhbHVlPSJOIj09PXR9cmV0dXJuIHQucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIEZ0KHRoaXMsdCl9LHQucHJvdG90eXBlLmRvPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz10aGlzLGk9by5raW5kLGE9by5lcnJvcjtyZXR1cm4iTiI9PT1pP251bGw9PXQ/dm9pZCAwOnQoby52YWx1ZSk6IkUiPT09aT9udWxsPT1lP3ZvaWQgMDplKGEpOm51bGw9PW4/dm9pZCAwOm4oKX0sdC5wcm90b3R5cGUuYWNjZXB0PWZ1bmN0aW9uKHQsZSxuKXt2YXIgbztyZXR1cm4gZChudWxsPT09KG89dCl8fHZvaWQgMD09PW8/dm9pZCAwOm8ubmV4dCk/dGhpcy5vYnNlcnZlKHQpOnRoaXMuZG8odCxlLG4pfSx0LnByb3RvdHlwZS50b09ic2VydmFibGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5raW5kLG49dC5lcnJvcixvPSJOIj09PWU/enQodC52YWx1ZSk6IkUiPT09ZT9JdCgoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKToiQyI9PT1lP2R0OjA7aWYoIW8pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5leHBlY3RlZCBub3RpZmljYXRpb24ga2luZCAiK2UpO3JldHVybiBvfSx0LmNyZWF0ZU5leHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KCJOIixlKX0sdC5jcmVhdGVFcnJvcj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoIkUiLHZvaWQgMCxlKX0sdC5jcmVhdGVDb21wbGV0ZT1mdW5jdGlvbigpe3JldHVybiB0LmNvbXBsZXRlTm90aWZpY2F0aW9ufSx0LmNvbXBsZXRlTm90aWZpY2F0aW9uPW5ldyB0KCJDIiksdH0pKCk7ZnVuY3Rpb24gRnQodCxlKXt2YXIgbixvLGksYT10LmtpbmQscj10LnZhbHVlLHM9dC5lcnJvcjtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBub3RpZmljYXRpb24sIG1pc3NpbmcgImtpbmQiJyk7Ik4iPT09YT9udWxsPT09KG49ZS5uZXh0KXx8dm9pZCAwPT09bnx8bi5jYWxsKGUscik6IkUiPT09YT9udWxsPT09KG89ZS5lcnJvcil8fHZvaWQgMD09PW98fG8uY2FsbChlLHMpOm51bGw9PT0oaT1lLmNvbXBsZXRlKXx8dm9pZCAwPT09aXx8aS5jYWxsKGUpfWZ1bmN0aW9uIEx0KHQpe3JldHVybiEhdCYmKHQgaW5zdGFuY2VvZiBUfHxkKHQubGlmdCkmJmQodC5zdWJzY3JpYmUpKX12YXIgQnQ9cCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGUoKXt0KHRoaXMpLHRoaXMubmFtZT0iRW1wdHlFcnJvciIsdGhpcy5tZXNzYWdlPSJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZSJ9fSkpO2Z1bmN0aW9uIFZ0KHQsZSl7cmV0dXJuIHooKGZ1bmN0aW9uKG4sbyl7dmFyIGk9MDtuLnN1YnNjcmliZShuZXcgSChvLChmdW5jdGlvbihuKXtvLm5leHQodC5jYWxsKGUsbixpKyspKX0pKSl9KSl9dmFyIFV0PUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24ganQodCl7cmV0dXJuIFZ0KChmdW5jdGlvbihlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBVdChlKT90LmFwcGx5KHZvaWQgMCxyKFtdLGEoZSkpKTp0KGUpfSkodCxlKX0pKX12YXIgV3Q9QXJyYXkuaXNBcnJheSxHdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsWXQ9T2JqZWN0LnByb3RvdHlwZSxxdD1PYmplY3Qua2V5cztmdW5jdGlvbiBadCh0KXtpZigxPT09dC5sZW5ndGgpe3ZhciBlPXRbMF07aWYoV3QoZSkpcmV0dXJue2FyZ3M6ZSxrZXlzOm51bGx9O2lmKChmdW5jdGlvbiBuKHQpe3JldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQmJkd0KHQpPT09WXR9KShlKSl7dmFyIG89cXQoZSk7cmV0dXJue2FyZ3M6by5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkpLGtleXM6b319fXJldHVybnthcmdzOnQsa2V5czpudWxsfX1mdW5jdGlvbiBYdCh0LGUpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxuLG8pe3JldHVybiB0W25dPWVbb10sdH0pLHt9KX1mdW5jdGlvbiBLdCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1UdCh0KSxvPUF0KHQpLGk9WnQodCksYT1pLmFyZ3Mscj1pLmtleXM7aWYoMD09PWEubGVuZ3RoKXJldHVybiBQdChbXSxuKTt2YXIgcz1uZXcgVChKdChhLG4scj9mdW5jdGlvbih0KXtyZXR1cm4gWHQocix0KX06UikpO3JldHVybiBvP3MucGlwZShqdChvKSk6c31mdW5jdGlvbiBKdCh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPVIpLGZ1bmN0aW9uKG8pe1F0KGUsKGZ1bmN0aW9uKCl7Zm9yKHZhciBpPXQubGVuZ3RoLGE9bmV3IEFycmF5KGkpLHI9aSxzPWksbD1mdW5jdGlvbihpKXtRdChlLChmdW5jdGlvbigpe3ZhciBsPVB0KHRbaV0sZSksYz0hMTtsLnN1YnNjcmliZShuZXcgSChvLChmdW5jdGlvbih0KXthW2ldPXQsY3x8KGM9ITAscy0tKSxzfHxvLm5leHQobihhLnNsaWNlKCkpKX0pLChmdW5jdGlvbigpey0tcnx8by5jb21wbGV0ZSgpfSkpKX0pLG8pfSxjPTA7YzxpO2MrKylsKGMpfSksbyl9fWZ1bmN0aW9uIFF0KHQsZSxuKXt0P24uYWRkKHQuc2NoZWR1bGUoZSkpOmUoKX1mdW5jdGlvbiAkdCh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTEvMCksZChlKT8kdCgoZnVuY3Rpb24obixvKXtyZXR1cm4gVnQoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUobix0LG8saSl9KSkod3QodChuLG8pKSl9KSxuKTooIm51bWJlciI9PXR5cGVvZiBlJiYobj1lKSx6KChmdW5jdGlvbihlLG8pe3JldHVybihmdW5jdGlvbiBpKHQsZSxuLG8sYSxyLHMsbCl7dmFyIGM9W10sZD0wLHA9MCxtPSExLHU9ZnVuY3Rpb24oKXshbXx8Yy5sZW5ndGh8fGR8fGUuY29tcGxldGUoKX0sZj1mdW5jdGlvbih0KXtyZXR1cm4gZDxvP2codCk6Yy5wdXNoKHQpfSxnPWZ1bmN0aW9uKHQpe3ImJmUubmV4dCh0KSxkKys7dmFyIGk9ITE7d3Qobih0LHArKykpLnN1YnNjcmliZShuZXcgSChlLChmdW5jdGlvbih0KXtudWxsPT1hfHxhKHQpLHI/Zih0KTplLm5leHQodCl9KSwoZnVuY3Rpb24oKXtpPSEwfSksdm9pZCAwLChmdW5jdGlvbigpe2lmKGkpdHJ5e2QtLTtmb3IodmFyIHQ9ZnVuY3Rpb24oKXt2YXIgdD1jLnNoaWZ0KCk7cz9lLmFkZChzLnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBnKHQpfSkpKTpnKHQpfTtjLmxlbmd0aCYmZDxvOyl0KCk7dSgpfWNhdGNoKHQpe2UuZXJyb3IodCl9fSkpKX07cmV0dXJuIHQuc3Vic2NyaWJlKG5ldyBIKGUsZiwoZnVuY3Rpb24oKXttPSEwLHUoKX0pKSksZnVuY3Rpb24oKXtudWxsPT1sfHxsKCl9fSkoZSxvLHQsbil9KSkpfWZ1bmN0aW9uIHRlKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0xLzApLCR0KFIsdCl9ZnVuY3Rpb24gZWUoKXtyZXR1cm4gdGUoMSl9ZnVuY3Rpb24gbmUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIGVlKCkoRHQodCxUdCh0KSkpfWZ1bmN0aW9uIG9lKHQpe3JldHVybiBuZXcgVCgoZnVuY3Rpb24oZSl7d3QodCgpKS5zdWJzY3JpYmUoZSl9KSl9ZnVuY3Rpb24gaWUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49QXQodCksbz1adCh0KSxpPW8uYXJncyxhPW8ua2V5cyxyPW5ldyBUKChmdW5jdGlvbih0KXt2YXIgZT1pLmxlbmd0aDtpZihlKWZvcih2YXIgbj1uZXcgQXJyYXkoZSksbz1lLHI9ZSxzPWZ1bmN0aW9uKGUpe3ZhciBzPSExO3d0KGlbZV0pLnN1YnNjcmliZShuZXcgSCh0LChmdW5jdGlvbih0KXtzfHwocz0hMCxyLS0pLG5bZV09dH0pLChmdW5jdGlvbigpey0tbyYmc3x8KHJ8fHQubmV4dChhP1h0KGEsbik6biksdC5jb21wbGV0ZSgpKX0pKSl9LGw9MDtsPGU7bCsrKXMobCk7ZWxzZSB0LmNvbXBsZXRlKCl9KSk7cmV0dXJuIG4/ci5waXBlKGp0KG4pKTpyfXZhciBhZT1bImFkZExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiXSxyZT1bImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sc2U9WyJvbiIsIm9mZiJdO2Z1bmN0aW9uIGxlKHQsZSxuLG8pe2lmKGQobikmJihvPW4sbj12b2lkIDApLG8pcmV0dXJuIGxlKHQsZSxuKS5waXBlKGp0KG8pKTt2YXIgaT1hKChmdW5jdGlvbiByKHQpe3JldHVybiBkKHQuYWRkRXZlbnRMaXN0ZW5lcikmJmQodC5yZW1vdmVFdmVudExpc3RlbmVyKX0pKHQpP3JlLm1hcCgoZnVuY3Rpb24obyl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiB0W29dKGUsaSxuKX19KSk6KGZ1bmN0aW9uIHModCl7cmV0dXJuIGQodC5hZGRMaXN0ZW5lcikmJmQodC5yZW1vdmVMaXN0ZW5lcil9KSh0KT9hZS5tYXAoY2UodCxlKSk6KGZ1bmN0aW9uIGwodCl7cmV0dXJuIGQodC5vbikmJmQodC5vZmYpfSkodCk/c2UubWFwKGNlKHQsZSkpOltdLDIpLGM9aVswXSxwPWlbMV07aWYoIWMmJm10KHQpKXJldHVybiAkdCgoZnVuY3Rpb24odCl7cmV0dXJuIGxlKHQsZSxuKX0pKShEdCh0KSk7aWYoIWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBldmVudCB0YXJnZXQiKTtyZXR1cm4gbmV3IFQoKGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVybiB0Lm5leHQoMTxlLmxlbmd0aD9lOmVbMF0pfTtyZXR1cm4gYyhlKSxmdW5jdGlvbigpe3JldHVybiBwKGUpfX0pKX1mdW5jdGlvbiBjZSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIHRbbl0oZSxvKX19fWZ1bmN0aW9uIGRlKHQsZSxuKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj1hdCk7dmFyIG89LTE7cmV0dXJuIG51bGwhPWUmJihSdChlKT9uPWU6bz1lKSxuZXcgVCgoZnVuY3Rpb24oZSl7dmFyIGk9KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4odCl9KSh0KT8rdC1uLm5vdygpOnQ7aTwwJiYoaT0wKTt2YXIgcj0wO3JldHVybiBuLnNjaGVkdWxlKChmdW5jdGlvbigpe2UuY2xvc2VkfHwoZS5uZXh0KHIrKyksMDw9bz90aGlzLnNjaGVkdWxlKHZvaWQgMCxvKTplLmNvbXBsZXRlKCkpfSksaSl9KSl9ZnVuY3Rpb24gcGUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49VHQodCksbz1OdCh0LDEvMCksaT10O3JldHVybiBpLmxlbmd0aD8xPT09aS5sZW5ndGg/d3QoaVswXSk6dGUobykoRHQoaSxuKSk6ZHR9dmFyIG1lPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gdWUodCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmbWUodFswXSk/dFswXTp0fWZ1bmN0aW9uIGZlKHQsZSl7cmV0dXJuIHooKGZ1bmN0aW9uKG4sbyl7dmFyIGk9MDtuLnN1YnNjcmliZShuZXcgSChvLChmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbixpKyspJiZvLm5leHQobil9KSkpfSkpfWZ1bmN0aW9uIGdlKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWF0KSwoZnVuY3Rpb24gbih0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbz0hMSxpPW51bGwsYT1udWxsLHI9ITEscz1mdW5jdGlvbigpe2lmKG51bGw9PWF8fGEudW5zdWJzY3JpYmUoKSxhPW51bGwsbyl7bz0hMTt2YXIgdD1pO2k9bnVsbCxuLm5leHQodCl9ciYmbi5jb21wbGV0ZSgpfSxsPWZ1bmN0aW9uKCl7YT1udWxsLHImJm4uY29tcGxldGUoKX07ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oZSl7bz0hMCxpPWUsYXx8d3QodChlKSkuc3Vic2NyaWJlKGE9bmV3IEgobixzLGwpKX0pLChmdW5jdGlvbigpe3I9ITAsKCFvfHwhYXx8YS5jbG9zZWQpJiZuLmNvbXBsZXRlKCl9KSkpfSkpfSkoKGZ1bmN0aW9uKCl7cmV0dXJuIGRlKHQsZSl9KSl9ZnVuY3Rpb24gaGUodCl7cmV0dXJuIHooKGZ1bmN0aW9uKGUsbil7dmFyIG8saT1udWxsLGE9ITE7aT1lLnN1YnNjcmliZShuZXcgSChuLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKHIpe289d3QodChyLGhlKHQpKGUpKSksaT8oaS51bnN1YnNjcmliZSgpLGk9bnVsbCxvLnN1YnNjcmliZShuKSk6YT0hMH0pKSksYSYmKGkudW5zdWJzY3JpYmUoKSxpPW51bGwsby5zdWJzY3JpYmUobikpfSkpfWZ1bmN0aW9uIGJlKHQsZSxuLG8saSl7cmV0dXJuIGZ1bmN0aW9uKGEscil7dmFyIHM9bixsPWUsYz0wO2Euc3Vic2NyaWJlKG5ldyBIKHIsKGZ1bmN0aW9uKGUpe3ZhciBuPWMrKztsPXM/dChsLGUsbik6KHM9ITAsZSksbyYmci5uZXh0KGwpfSksaSYmZnVuY3Rpb24oKXtzJiZyLm5leHQobCksci5jb21wbGV0ZSgpfSkpfX1mdW5jdGlvbiB5ZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1BdCh0KTtyZXR1cm4gbj9FKHllLmFwcGx5KHZvaWQgMCxyKFtdLGEodCkpKSxqdChuKSk6eigoZnVuY3Rpb24oZSxuKXtKdChyKFtlXSxhKHVlKHQpKSkpKG4pfSkpfWZ1bmN0aW9uIF9lKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiB5ZS5hcHBseSh2b2lkIDAscihbXSxhKHQpKSl9ZnVuY3Rpb24gQ2UodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aXQpLHooKGZ1bmN0aW9uKG4sbyl7dmFyIGk9bnVsbCxhPW51bGwscj1udWxsLHM9ZnVuY3Rpb24oKXtpZihpKXtpLnVuc3Vic2NyaWJlKCksaT1udWxsO3ZhciB0PWE7YT1udWxsLG8ubmV4dCh0KX19O2Z1bmN0aW9uIGwoKXt2YXIgbj1yK3QsYT1lLm5vdygpO2lmKGE8bilyZXR1cm4gaT10aGlzLnNjaGVkdWxlKHZvaWQgMCxuLWEpLHZvaWQgby5hZGQoaSk7cygpfW4uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe2E9bixyPWUubm93KCksaXx8KGk9ZS5zY2hlZHVsZShsLHQpLG8uYWRkKGkpKX0pLChmdW5jdGlvbigpe3MoKSxvLmNvbXBsZXRlKCl9KSx2b2lkIDAsKGZ1bmN0aW9uKCl7YT1pPW51bGx9KSkpfSkpfWZ1bmN0aW9uIE1lKHQpe3JldHVybiB6KChmdW5jdGlvbihlLG4pe3ZhciBvPSExO2Uuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKHQpe289ITAsbi5uZXh0KHQpfSksKGZ1bmN0aW9uKCl7b3x8bi5uZXh0KHQpLG4uY29tcGxldGUoKX0pKSl9KSl9ZnVuY3Rpb24gdmUodCl7cmV0dXJuIHQ8PTA/ZnVuY3Rpb24oKXtyZXR1cm4gZHR9OnooKGZ1bmN0aW9uKGUsbil7dmFyIG89MDtlLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbihlKXsrK288PXQmJihuLm5leHQoZSksdDw9byYmbi5jb21wbGV0ZSgpKX0pKSl9KSl9ZnVuY3Rpb24geGUoKXtyZXR1cm4geigoZnVuY3Rpb24odCxlKXt0LnN1YnNjcmliZShuZXcgSChlLE0pKX0pKX1mdW5jdGlvbiBPZSh0LGUpe3JldHVybiBlP2Z1bmN0aW9uKG4pe3JldHVybiBuZShlLnBpcGUodmUoMSkseGUoKSksbi5waXBlKE9lKHQpKSl9OiR0KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbikucGlwZSh2ZSgxKSwoZnVuY3Rpb24gbyh0KXtyZXR1cm4gVnQoKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KShlKSl9KSl9ZnVuY3Rpb24gUGUodCxlKXt2b2lkIDA9PT1lJiYoZT1pdCk7dmFyIG49ZGUodCxlKTtyZXR1cm4gT2UoKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9ZnVuY3Rpb24gd2UodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9UiksdD1udWxsIT10P3Q6a2UseigoZnVuY3Rpb24obixvKXt2YXIgaSxhPSEwO24uc3Vic2NyaWJlKG5ldyBIKG8sKGZ1bmN0aW9uKG4pe3ZhciByPWUobik7IWEmJnQoaSxyKXx8KGE9ITEsaT1yLG8ubmV4dChuKSl9KSkpfSkpfWZ1bmN0aW9uIGtlKHQsZSl7cmV0dXJuIHQ9PT1lfWZ1bmN0aW9uIFNlKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1EZSkseigoZnVuY3Rpb24oZSxuKXt2YXIgbz0hMTtlLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbih0KXtvPSEwLG4ubmV4dCh0KX0pLChmdW5jdGlvbigpe3JldHVybiBvP24uY29tcGxldGUoKTpuLmVycm9yKHQoKSl9KSkpfSkpfWZ1bmN0aW9uIERlKCl7cmV0dXJuIG5ldyBCdH1mdW5jdGlvbiBSZSh0LGUpe3JldHVybiBlP2Z1bmN0aW9uKG4pe3JldHVybiBuLnBpcGUoUmUoKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIHd0KHQobixvKSkucGlwZShWdCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gZShuLHQsbyxpKX0pKSl9KSkpfTp6KChmdW5jdGlvbihlLG4pe3ZhciBvPTAsaT1udWxsLGE9ITE7ZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24oZSl7aXx8KGk9bmV3IEgobix2b2lkIDAsKGZ1bmN0aW9uKCl7aT1udWxsLGEmJm4uY29tcGxldGUoKX0pKSx3dCh0KGUsbysrKSkuc3Vic2NyaWJlKGkpKX0pLChmdW5jdGlvbigpe2E9ITAsIWkmJm4uY29tcGxldGUoKX0pKSl9KSl9ZnVuY3Rpb24gRWUodCxlLG4sbyl7cmV0dXJuIHooKGZ1bmN0aW9uKGksYSl7dmFyIHI7ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/KG49ZS5kdXJhdGlvbixyPWUuZWxlbWVudCxvPWUuY29ubmVjdG9yKTpyPWU7dmFyIHM9bmV3IE1hcCxsPWZ1bmN0aW9uKHQpe3MuZm9yRWFjaCh0KSx0KGEpfSxjPWZ1bmN0aW9uKHQpe3JldHVybiBsKChmdW5jdGlvbihlKXtyZXR1cm4gZS5lcnJvcih0KX0pKX0sZD1uZXcgQWUoYSwoZnVuY3Rpb24oZSl7dHJ5e3ZhciBpPXQoZSksbD1zLmdldChpKTtpZighbCl7cy5zZXQoaSxsPW8/bygpOm5ldyBCKTt2YXIgcD0oZnVuY3Rpb24gbSh0LGUpe3ZhciBuPW5ldyBUKChmdW5jdGlvbih0KXtkLmFjdGl2ZUdyb3VwcysrO3ZhciBuPWUuc3Vic2NyaWJlKHQpO3JldHVybiBmdW5jdGlvbigpe24udW5zdWJzY3JpYmUoKSwwPT0tLWQuYWN0aXZlR3JvdXBzJiZkLnRlYXJkb3duQXR0ZW1wdGVkJiZkLnVuc3Vic2NyaWJlKCl9fSkpO3JldHVybiBuLmtleT10LG59KShpLGwpO2lmKGEubmV4dChwKSxuKXt2YXIgdT1uZXcgSChsLChmdW5jdGlvbigpe2wuY29tcGxldGUoKSxudWxsPT11fHx1LnVuc3Vic2NyaWJlKCl9KSx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBzLmRlbGV0ZShpKX0pKTtkLmFkZCh3dChuKHApKS5zdWJzY3JpYmUodSkpfX1sLm5leHQocj9yKGUpOmUpfWNhdGNoKHQpe2ModCl9fSksKGZ1bmN0aW9uKCl7cmV0dXJuIGwoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbXBsZXRlKCl9KSl9KSxjLChmdW5jdGlvbigpe3JldHVybiBzLmNsZWFyKCl9KSk7aS5zdWJzY3JpYmUoZCl9KSl9dmFyIEFlPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7dmFyIGU9bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLmFjdGl2ZUdyb3Vwcz0wLGUudGVhcmRvd25BdHRlbXB0ZWQ9ITEsZX1yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy50ZWFyZG93bkF0dGVtcHRlZD0hMCwwPT09dGhpcy5hY3RpdmVHcm91cHMmJnQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyl9LG59KShIKTtmdW5jdGlvbiBUZSh0KXtyZXR1cm4gdDw9MD9mdW5jdGlvbigpe3JldHVybiBkdH06eigoZnVuY3Rpb24oZSxuKXt2YXIgbz1bXTtlLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbihlKXtvLnB1c2goZSksdDxvLmxlbmd0aCYmby5zaGlmdCgpfSksKGZ1bmN0aW9uKCl7dmFyIHQsZTt0cnl7Zm9yKHZhciBhPWkobykscj1hLm5leHQoKTshci5kb25lO3I9YS5uZXh0KCkpe24ubmV4dChyLnZhbHVlKX19Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKGU9YS5yZXR1cm4pJiZlLmNhbGwoYSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fW4uY29tcGxldGUoKX0pLHZvaWQgMCwoZnVuY3Rpb24oKXtvPW51bGx9KSkpfSkpfWZ1bmN0aW9uIE5lKCl7cmV0dXJuIHooKGZ1bmN0aW9uKHQsZSl7dmFyIG4sbz0hMTt0LnN1YnNjcmliZShuZXcgSChlLChmdW5jdGlvbih0KXt2YXIgaT1uO249dCxvJiZlLm5leHQoW2ksdF0pLG89ITB9KSkpfSkpfWZ1bmN0aW9uIHplKHQpe3JldHVybiB6KChmdW5jdGlvbihlLG4pe3ZhciBvLGksYT0hMSxyPSExLHM9ITEsbD1mdW5jdGlvbigpe3JldHVybiBzJiZyJiYobi5jb21wbGV0ZSgpLCEwKX0sYz1mdW5jdGlvbigpe3M9ITEsbz1lLnN1YnNjcmliZShuZXcgSChuLHZvaWQgMCwoZnVuY3Rpb24oKXtzPSEwLCFsKCkmJihpfHwoaT1uZXcgQix0KGkpLnN1YnNjcmliZShuZXcgSChuLChmdW5jdGlvbigpe28/YygpOmE9ITB9KSwoZnVuY3Rpb24oKXtyPSEwLGwoKX0pKSkpLGkpLm5leHQoKX0pKSksYSYmKG8udW5zdWJzY3JpYmUoKSxvPW51bGwsYT0hMSxjKCkpfTtjKCl9KSl9ZnVuY3Rpb24gSWUodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXQuY29ubmVjdG9yLG49dm9pZCAwPT09ZT9mdW5jdGlvbigpe3JldHVybiBuZXcgQn06ZSxvPXQucmVzZXRPbkVycm9yLGk9dm9pZCAwPT09b3x8byxhPXQucmVzZXRPbkNvbXBsZXRlLHI9dm9pZCAwPT09YXx8YSxzPXQucmVzZXRPblJlZkNvdW50WmVybyxsPXZvaWQgMD09PXN8fHM7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPW51bGwsbz1udWxsLGE9bnVsbCxzPTAsYz0hMSxkPSExLHA9ZnVuY3Rpb24oKXtudWxsPT1vfHxvLnVuc3Vic2NyaWJlKCksbz1udWxsfSxtPWZ1bmN0aW9uKCl7cCgpLGU9YT1udWxsLGM9ZD0hMX0sdT1mdW5jdGlvbigpe3ZhciB0PWU7bSgpLG51bGw9PXR8fHQudW5zdWJzY3JpYmUoKX07cmV0dXJuIHooKGZ1bmN0aW9uKHQsZil7cysrLGR8fGN8fHAoKTt2YXIgZz1hPW51bGwhPWE/YTpuKCk7Zi5hZGQoKGZ1bmN0aW9uKCl7MCE9PS0tc3x8ZHx8Y3x8KG89SGUodSxsKSl9KSksZy5zdWJzY3JpYmUoZiksZXx8KGU9bmV3IFAoe25leHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGcubmV4dCh0KX0sZXJyb3I6ZnVuY3Rpb24odCl7ZD0hMCxwKCksbz1IZShtLGksdCksZy5lcnJvcih0KX0sY29tcGxldGU6ZnVuY3Rpb24oKXtjPSEwLHAoKSxvPUhlKG0sciksZy5jb21wbGV0ZSgpfX0pLFB0KHQpLnN1YnNjcmliZShlKSl9KSkodCl9fWZ1bmN0aW9uIEhlKHQsZSl7Zm9yKHZhciBuPVtdLG89MjtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0yXT1hcmd1bWVudHNbb107cmV0dXJuITA9PT1lPyh0KCksbnVsbCk6ITE9PT1lP251bGw6ZS5hcHBseSh2b2lkIDAscihbXSxhKG4pKSkucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKChmdW5jdGlvbigpe3JldHVybiB0KCl9KSl9ZnVuY3Rpb24gRmUodCxlLG4pe3ZhciBvLGksYSxyPSExO3JldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQ/KGE9bnVsbCE9PShvPXQuYnVmZmVyU2l6ZSkmJnZvaWQgMCE9PW8/bzoxLzAsZT1udWxsIT09KGk9dC53aW5kb3dUaW1lKSYmdm9pZCAwIT09aT9pOjEvMCxyPSEhdC5yZWZDb3VudCxuPXQuc2NoZWR1bGVyKTphPW51bGwhPXQ/dDoxLzAsSWUoe2Nvbm5lY3RvcjpmdW5jdGlvbigpe3JldHVybiBuZXcgVyhhLGUsbil9LHJlc2V0T25FcnJvcjohMCxyZXNldE9uQ29tcGxldGU6ITEscmVzZXRPblJlZkNvdW50WmVybzpyfSl9ZnVuY3Rpb24gTGUodCl7cmV0dXJuIGZlKChmdW5jdGlvbihlLG4pe3JldHVybiB0PD1ufSkpfWZ1bmN0aW9uIEJlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPVR0KHQpO3JldHVybiB6KChmdW5jdGlvbihlLG8peyhuP25lKHQsZSxuKTpuZSh0LGUpKS5zdWJzY3JpYmUobyl9KSl9ZnVuY3Rpb24gVmUodCxlKXtyZXR1cm4geigoZnVuY3Rpb24obixvKXt2YXIgaT1udWxsLGE9MCxyPSExLHM9ZnVuY3Rpb24oKXtyZXR1cm4gciYmIWkmJm8uY29tcGxldGUoKX07bi5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24obil7bnVsbD09aXx8aS51bnN1YnNjcmliZSgpO3ZhciByPTAsbD1hKys7d3QodChuLGwpKS5zdWJzY3JpYmUoaT1uZXcgSChvLChmdW5jdGlvbih0KXtyZXR1cm4gby5uZXh0KGU/ZShuLHQsbCxyKyspOnQpfSksKGZ1bmN0aW9uKCl7aT1udWxsLHMoKX0pKSl9KSwoZnVuY3Rpb24oKXtyPSEwLHMoKX0pKSl9KSl9ZnVuY3Rpb24gVWUodCl7cmV0dXJuIHooKGZ1bmN0aW9uKGUsbil7d3QodCkuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY29tcGxldGUoKX0pLE0pKSwhbi5jbG9zZWQmJmUuc3Vic2NyaWJlKG4pfSkpfWZ1bmN0aW9uIGplKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSx6KChmdW5jdGlvbihuLG8pe3ZhciBpPTA7bi5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24obil7dmFyIGE9dChuLGkrKyk7KGF8fGUpJiZvLm5leHQobiksIWEmJm8uY29tcGxldGUoKX0pKSl9KSl9ZnVuY3Rpb24gV2UodCxlLG4pe3ZhciBvPWQodCl8fGV8fG4/e25leHQ6dCxlcnJvcjplLGNvbXBsZXRlOm59OnQ7cmV0dXJuIG8/eigoZnVuY3Rpb24odCxlKXt2YXIgbjtudWxsPT09KG49by5zdWJzY3JpYmUpfHx2b2lkIDA9PT1ufHxuLmNhbGwobyk7dmFyIGk9ITA7dC5zdWJzY3JpYmUobmV3IEgoZSwoZnVuY3Rpb24odCl7dmFyIG47bnVsbD09PShuPW8ubmV4dCl8fHZvaWQgMD09PW58fG4uY2FsbChvLHQpLGUubmV4dCh0KX0pLChmdW5jdGlvbigpe3ZhciB0O2k9ITEsbnVsbD09PSh0PW8uY29tcGxldGUpfHx2b2lkIDA9PT10fHx0LmNhbGwobyksZS5jb21wbGV0ZSgpfSksKGZ1bmN0aW9uKHQpe3ZhciBuO2k9ITEsbnVsbD09PShuPW8uZXJyb3IpfHx2b2lkIDA9PT1ufHxuLmNhbGwobyx0KSxlLmVycm9yKHQpfSksKGZ1bmN0aW9uKCl7dmFyIHQsZTtpJiYobnVsbD09PSh0PW8udW5zdWJzY3JpYmUpfHx2b2lkIDA9PT10fHx0LmNhbGwobykpLG51bGw9PT0oZT1vLmZpbmFsaXplKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKG8pfSkpKX0pKTpSfXZhciBHZT17bGVhZGluZzohMCx0cmFpbGluZzohMX07ZnVuY3Rpb24gWWUodCxlLG4pe3ZvaWQgMD09PWUmJihlPWl0KSx2b2lkIDA9PT1uJiYobj1HZSk7dmFyIG89ZGUodCxlKTtyZXR1cm4oZnVuY3Rpb24gaSh0LGUpe3ZhciBuPXZvaWQgMD09PWU/R2U6ZSxvPW4ubGVhZGluZyxpPW4udHJhaWxpbmc7cmV0dXJuIHooKGZ1bmN0aW9uKGUsbil7dmFyIGE9ITEscj1udWxsLHM9bnVsbCxsPSExLGM9ZnVuY3Rpb24oKXtudWxsPT1zfHxzLnVuc3Vic2NyaWJlKCkscz1udWxsLGkmJihtKCksbCYmbi5jb21wbGV0ZSgpKX0sZD1mdW5jdGlvbigpe3M9bnVsbCxsJiZuLmNvbXBsZXRlKCl9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIHM9d3QodChlKSkuc3Vic2NyaWJlKG5ldyBIKG4sYyxkKSl9LG09ZnVuY3Rpb24oKXtpZihhKXthPSExO3ZhciB0PXI7cj1udWxsLG4ubmV4dCh0KSwhbCYmcCh0KX19O2Uuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKHQpe2E9ITAscj10LCghc3x8cy5jbG9zZWQpJiYobz9tKCk6cCh0KSl9KSwoZnVuY3Rpb24oKXtsPSEwLCghKGkmJmEmJnMpfHxzLmNsb3NlZCkmJm4uY29tcGxldGUoKX0pKSl9KSl9KSgoZnVuY3Rpb24oKXtyZXR1cm4gb30pLG4pfWZ1bmN0aW9uIHFlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPUF0KHQpO3JldHVybiB6KChmdW5jdGlvbihlLG8pe2Zvcih2YXIgaT10Lmxlbmd0aCxzPW5ldyBBcnJheShpKSxsPXQubWFwKChmdW5jdGlvbigpe3JldHVybiExfSkpLGM9ITEsZD1mdW5jdGlvbihlKXt3dCh0W2VdKS5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24odCl7c1tlXT10LGN8fGxbZV18fChsW2VdPSEwLChjPWwuZXZlcnkoUikpJiYobD1udWxsKSl9KSxNKSl9LHA9MDtwPGk7cCsrKWQocCk7ZS5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24odCl7aWYoYyl7dmFyIGU9cihbdF0sYShzKSk7by5uZXh0KG4/bi5hcHBseSh2b2lkIDAscihbXSxhKGUpKSk6ZSl9fSkpKX0pKX0KLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4yLjEKICAgICAqIChjKSAyMDEwLTIwMjEgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gWmUodCl7Zm9yKGxldCBlIGluIHQpaWYodFtlXT09PVplKXJldHVybiBlO3Rocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCByZW5hbWVkIHByb3BlcnR5IG9uIHRhcmdldCBvYmplY3QuIil9ZnVuY3Rpb24gWGUodCxlKXtmb3IoY29uc3QgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJiF0Lmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gS2UodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIlsiK3QubWFwKEtlKS5qb2luKCIsICIpKyJdIjtpZihudWxsPT10KXJldHVybiIiK3Q7aWYodC5vdmVycmlkZGVuTmFtZSlyZXR1cm5gJHt0Lm92ZXJyaWRkZW5OYW1lfWA7aWYodC5uYW1lKXJldHVybmAke3QubmFtZX1gO2NvbnN0IGU9dC50b1N0cmluZygpO2lmKG51bGw9PWUpcmV0dXJuIiIrZTtjb25zdCBuPWUuaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PW4/ZTplLnN1YnN0cmluZygwLG4pfWZ1bmN0aW9uIEplKHQsZSl7cmV0dXJuIG51bGw9PXR8fCIiPT09dD9udWxsPT09ZT8iIjplOm51bGw9PWV8fCIiPT09ZT90OnQrIiAiK2V9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFFlPVplKHtfX2ZvcndhcmRfcmVmX186WmV9KTtmdW5jdGlvbiAkZSh0KXtyZXR1cm4gdC5fX2ZvcndhcmRfcmVmX189JGUsdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBLZSh0aGlzKCkpfSx0fWZ1bmN0aW9uIHRuKHQpe3JldHVybiBlbih0KT90KCk6dH1mdW5jdGlvbiBlbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5oYXNPd25Qcm9wZXJ0eShRZSkmJnQuX19mb3J3YXJkX3JlZl9fPT09JGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG5uIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCxlKXtzdXBlcihhbih0LGUpKSx0aGlzLmNvZGU9dH19Y29uc3Qgb249bmV3IFNldChbIjEwMCIsIjIwMCIsIjIwMSIsIjMwMCIsIjMwMSIsIjMwMiJdKTtmdW5jdGlvbiBhbih0LGUpe2xldCBuPWAke3Q/YE5HMCR7dH06IGA6IiJ9JHtlfWA7cmV0dXJuIG5nRGV2TW9kZSYmb24uaGFzKHQpJiYobj1gJHtufS4gRmluZCBtb3JlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9lcnJvcnMvTkcwJHt0fWApLG59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHJuKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90Om51bGw9PXQ/IiI6U3RyaW5nKHQpfWZ1bmN0aW9uIHNuKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QubmFtZXx8dC50b1N0cmluZygpOiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudHlwZT90LnR5cGUubmFtZXx8dC50eXBlLnRvU3RyaW5nKCk6cm4odCl9ZnVuY3Rpb24gbG4odCxlKXtjb25zdCBuPWU/YC4gRGVwZW5kZW5jeSBwYXRoOiAke2Uuam9pbigiID4gIil9ID4gJHt0fWA6IiI7dGhyb3cgbmV3IG5uKCIyMDAiLGBDaXJjdWxhciBkZXBlbmRlbmN5IGluIERJIGRldGVjdGVkIGZvciAke3R9JHtufWApfWZ1bmN0aW9uIGNuKCl7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG11bHRpIHByb3ZpZGVycyBhbmQgcmVndWxhciBwcm92aWRlcnMiKX1mdW5jdGlvbiBkbih0LGUpe2NvbnN0IG49ZT9gIGluICR7ZX1gOiIiO3Rocm93IG5ldyBubigiMjAxIixgTm8gcHJvdmlkZXIgZm9yICR7c24odCl9IGZvdW5kJHtufWApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBwbih0LGUpeyJudW1iZXIiIT10eXBlb2YgdCYmT24oZSx0eXBlb2YgdCwibnVtYmVyIiwiPT09Iil9ZnVuY3Rpb24gbW4odCxlLG4pe3BuKHQsIkV4cGVjdGVkIGEgbnVtYmVyIiksQ24odCxuLCJFeHBlY3RlZCBudW1iZXIgdG8gYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIiksdm4odCxlLCJFeHBlY3RlZCBudW1iZXIgdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIil9ZnVuY3Rpb24gdW4odCxlKXsic3RyaW5nIiE9dHlwZW9mIHQmJk9uKGUsbnVsbD09PXQ/Im51bGwiOnR5cGVvZiB0LCJzdHJpbmciLCI9PT0iKX1mdW5jdGlvbiBmbih0LGUpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiZPbihlLG51bGw9PT10PyJudWxsIjp0eXBlb2YgdCwiZnVuY3Rpb24iLCI9PT0iKX1mdW5jdGlvbiBnbih0LGUsbil7dCE9ZSYmT24obix0LGUsIj09Iil9ZnVuY3Rpb24gaG4odCxlLG4pe3Q9PWUmJk9uKG4sdCxlLCIhPSIpfWZ1bmN0aW9uIGJuKHQsZSxuKXt0IT09ZSYmT24obix0LGUsIj09PSIpfWZ1bmN0aW9uIHluKHQsZSxuKXt0PT09ZSYmT24obix0LGUsIiE9PSIpfWZ1bmN0aW9uIF9uKHQsZSxuKXt0PGV8fE9uKG4sdCxlLCI8Iil9ZnVuY3Rpb24gQ24odCxlLG4pe3Q8PWV8fE9uKG4sdCxlLCI8PSIpfWZ1bmN0aW9uIE1uKHQsZSxuKXt0PmV8fE9uKG4sdCxlLCI+Iil9ZnVuY3Rpb24gdm4odCxlLG4pe3Q+PWV8fE9uKG4sdCxlLCI+PSIpfWZ1bmN0aW9uIHhuKHQsZSl7bnVsbD09dCYmT24oZSx0LG51bGwsIiE9Iil9ZnVuY3Rpb24gT24odCxlLG4sbyl7dGhyb3cgbmV3IEVycm9yKGBBU1NFUlRJT04gRVJST1I6ICR7dH1gKyhudWxsPT1vPyIiOmAgW0V4cGVjdGVkPT4gJHtufSAke299ICR7ZX0gPD1BY3R1YWxdYCkpfWZ1bmN0aW9uIFBuKHQpeyJ1bmRlZmluZWQiIT10eXBlb2YgTm9kZSYmdCBpbnN0YW5jZW9mIE5vZGV8fCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dCYmIldlYldvcmtlclJlbmRlck5vZGUiPT09dC5jb25zdHJ1Y3Rvci5uYW1lfHxPbihgVGhlIHByb3ZpZGVkIHZhbHVlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSBET00gTm9kZSBidXQgZ290ICR7S2UodCl9YCl9ZnVuY3Rpb24gd24odCxlKXt4bih0LCJBcnJheSBtdXN0IGJlIGRlZmluZWQuIik7Y29uc3Qgbj10Lmxlbmd0aDsoZTwwfHxlPj1uKSYmT24oYEluZGV4IGV4cGVjdGVkIHRvIGJlIGxlc3MgdGhhbiAke259IGJ1dCBnb3QgJHtlfWApfWZ1bmN0aW9uIGtuKHQsLi4uZSl7aWYoLTEhPT1lLmluZGV4T2YodCkpcmV0dXJuITA7T24oYEV4cGVjdGVkIHZhbHVlIHRvIGJlIG9uZSBvZiAke0pTT04uc3RyaW5naWZ5KGUpfSBidXQgd2FzICR7SlNPTi5zdHJpbmdpZnkodCl9LmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBTbih0KXtyZXR1cm57dG9rZW46dC50b2tlbixwcm92aWRlZEluOnQucHJvdmlkZWRJbnx8bnVsbCxmYWN0b3J5OnQuZmFjdG9yeSx2YWx1ZTp2b2lkIDB9fWZ1bmN0aW9uIERuKHQpe3JldHVybntwcm92aWRlcnM6dC5wcm92aWRlcnN8fFtdLGltcG9ydHM6dC5pbXBvcnRzfHxbXX19ZnVuY3Rpb24gUm4odCl7cmV0dXJuIEVuKHQsVG4pfHxFbih0LHpuKX1mdW5jdGlvbiBFbih0LGUpe3JldHVybiB0Lmhhc093blByb3BlcnR5KGUpP3RbZV06bnVsbH1mdW5jdGlvbiBBbih0KXtyZXR1cm4gdCYmKHQuaGFzT3duUHJvcGVydHkoTm4pfHx0Lmhhc093blByb3BlcnR5KEluKSk/dFtObl06bnVsbH1jb25zdCBUbj1aZSh7Ism1cHJvdiI6WmV9KSxObj1aZSh7Ism1aW5qIjpaZX0pLHpuPVplKHtuZ0luamVjdGFibGVEZWY6WmV9KSxJbj1aZSh7bmdJbmplY3RvckRlZjpaZX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdmFyIEhuOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEZuO2Z1bmN0aW9uIExuKHQpe2NvbnN0IGU9Rm47cmV0dXJuIEZuPXQsZX1mdW5jdGlvbiBCbih0LGUsbil7Y29uc3Qgbz1Sbih0KTtyZXR1cm4gbyYmInJvb3QiPT1vLnByb3ZpZGVkSW4/dm9pZCAwPT09by52YWx1ZT9vLnZhbHVlPW8uZmFjdG9yeSgpOm8udmFsdWU6biZIbi5PcHRpb25hbD9udWxsOnZvaWQgMCE9PWU/ZTp2b2lkIGRuKEtlKHQpLCJJbmplY3RvciIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gVm4odCl7cmV0dXJue3RvU3RyaW5nOnR9LnRvU3RyaW5nKCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3ZhciBVbixqbixXbjshKGZ1bmN0aW9uKHQpe3RbdC5EZWZhdWx0PTBdPSJEZWZhdWx0Iix0W3QuSG9zdD0xXT0iSG9zdCIsdFt0LlNlbGY9Ml09IlNlbGYiLHRbdC5Ta2lwU2VsZj00XT0iU2tpcFNlbGYiLHRbdC5PcHRpb25hbD04XT0iT3B0aW9uYWwifSkoSG58fChIbj17fSkpLChmdW5jdGlvbih0KXt0W3QuT25QdXNoPTBdPSJPblB1c2giLHRbdC5EZWZhdWx0PTFdPSJEZWZhdWx0In0pKFVufHwoVW49e30pKSwoZnVuY3Rpb24odCl7dFt0LkNoZWNrT25jZT0wXT0iQ2hlY2tPbmNlIix0W3QuQ2hlY2tlZD0xXT0iQ2hlY2tlZCIsdFt0LkNoZWNrQWx3YXlzPTJdPSJDaGVja0Fsd2F5cyIsdFt0LkRldGFjaGVkPTNdPSJEZXRhY2hlZCIsdFt0LkVycm9yZWQ9NF09IkVycm9yZWQiLHRbdC5EZXN0cm95ZWQ9NV09IkRlc3Ryb3llZCJ9KShqbnx8KGpuPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5FbXVsYXRlZD0wXT0iRW11bGF0ZWQiLHRbdC5Ob25lPTJdPSJOb25lIix0W3QuU2hhZG93RG9tPTNdPSJTaGFkb3dEb20ifSkoV258fChXbj17fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgR249InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLFluPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cscW49InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsWm49InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJmdsb2JhbCxYbj1Hbnx8Wm58fFlufHxxbjtmdW5jdGlvbiBLbigpe3JldHVybiEoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGUpJiYoIm9iamVjdCIhPXR5cGVvZiBuZ0Rldk1vZGUmJigKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHQoKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbG9jYXRpb24/bG9jYXRpb24udG9TdHJpbmcoKToiIixlPXtuYW1lZENvbnN0cnVjdG9yczotMSE9dC5pbmRleE9mKCJuZ0Rldk1vZGU9bmFtZWRDb25zdHJ1Y3RvcnMiKSxmaXJzdENyZWF0ZVBhc3M6MCx0Tm9kZTowLHRWaWV3OjAscmVuZGVyZXJDcmVhdGVUZXh0Tm9kZTowLHJlbmRlcmVyU2V0VGV4dDowLHJlbmRlcmVyQ3JlYXRlRWxlbWVudDowLHJlbmRlcmVyQWRkRXZlbnRMaXN0ZW5lcjowLHJlbmRlcmVyU2V0QXR0cmlidXRlOjAscmVuZGVyZXJSZW1vdmVBdHRyaWJ1dGU6MCxyZW5kZXJlclNldFByb3BlcnR5OjAscmVuZGVyZXJTZXRDbGFzc05hbWU6MCxyZW5kZXJlckFkZENsYXNzOjAscmVuZGVyZXJSZW1vdmVDbGFzczowLHJlbmRlcmVyU2V0U3R5bGU6MCxyZW5kZXJlclJlbW92ZVN0eWxlOjAscmVuZGVyZXJEZXN0cm95OjAscmVuZGVyZXJEZXN0cm95Tm9kZTowLHJlbmRlcmVyTW92ZU5vZGU6MCxyZW5kZXJlclJlbW92ZU5vZGU6MCxyZW5kZXJlckFwcGVuZENoaWxkOjAscmVuZGVyZXJJbnNlcnRCZWZvcmU6MCxyZW5kZXJlckNyZWF0ZUNvbW1lbnQ6MH0sbj0tMT09PXQuaW5kZXhPZigibmdEZXZNb2RlPWZhbHNlIik7cmV0dXJuIFhuLm5nRGV2TW9kZT1uJiZlLGV9KSgpLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhIW5nRGV2TW9kZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IEpuPXt9LFFuPVtdOygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmS24oKSYmKE9iamVjdC5mcmVlemUoSm4pLE9iamVjdC5mcmVlemUoUW4pKQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgJG49WmUoeyLJtWNtcCI6WmV9KSx0bz1aZSh7Ism1ZGlyIjpaZX0pLGVvPVplKHsiybVwaXBlIjpaZX0pLG5vPVplKHsiybVtb2QiOlplfSksb289WmUoeyLJtWxvYyI6WmV9KSxpbz1aZSh7Ism1ZmFjIjpaZX0pLGFvPVplKHtfX05HX0VMRU1FTlRfSURfXzpaZX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IHJvPTA7ZnVuY3Rpb24gc28odCl7cmV0dXJuIFZuKCgoKT0+eygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmS24oKTtjb25zdCBlPXt9LG49e3R5cGU6dC50eXBlLHByb3ZpZGVyc1Jlc29sdmVyOm51bGwsZGVjbHM6dC5kZWNscyx2YXJzOnQudmFycyxmYWN0b3J5Om51bGwsdGVtcGxhdGU6dC50ZW1wbGF0ZXx8bnVsbCxjb25zdHM6dC5jb25zdHN8fG51bGwsbmdDb250ZW50U2VsZWN0b3JzOnQubmdDb250ZW50U2VsZWN0b3JzLGhvc3RCaW5kaW5nczp0Lmhvc3RCaW5kaW5nc3x8bnVsbCxob3N0VmFyczp0Lmhvc3RWYXJzfHwwLGhvc3RBdHRyczp0Lmhvc3RBdHRyc3x8bnVsbCxjb250ZW50UXVlcmllczp0LmNvbnRlbnRRdWVyaWVzfHxudWxsLGRlY2xhcmVkSW5wdXRzOmUsaW5wdXRzOm51bGwsb3V0cHV0czpudWxsLGV4cG9ydEFzOnQuZXhwb3J0QXN8fG51bGwsb25QdXNoOnQuY2hhbmdlRGV0ZWN0aW9uPT09VW4uT25QdXNoLGRpcmVjdGl2ZURlZnM6bnVsbCxwaXBlRGVmczpudWxsLHNlbGVjdG9yczp0LnNlbGVjdG9yc3x8UW4sdmlld1F1ZXJ5OnQudmlld1F1ZXJ5fHxudWxsLGZlYXR1cmVzOnQuZmVhdHVyZXN8fG51bGwsZGF0YTp0LmRhdGF8fHt9LGVuY2Fwc3VsYXRpb246dC5lbmNhcHN1bGF0aW9ufHxXbi5FbXVsYXRlZCxpZDoiYyIsc3R5bGVzOnQuc3R5bGVzfHxRbixfOm51bGwsc2V0SW5wdXQ6bnVsbCxzY2hlbWFzOnQuc2NoZW1hc3x8bnVsbCx0VmlldzpudWxsfSxvPXQuZGlyZWN0aXZlcyxpPXQuZmVhdHVyZXMsYT10LnBpcGVzO3JldHVybiBuLmlkKz1ybysrLG4uaW5wdXRzPWdvKHQuaW5wdXRzLGUpLG4ub3V0cHV0cz1nbyh0Lm91dHB1dHMpLGkmJmkuZm9yRWFjaCgodD0+dChuKSkpLG4uZGlyZWN0aXZlRGVmcz1vPygpPT4oImZ1bmN0aW9uIj09dHlwZW9mIG8/bygpOm8pLm1hcChjbyk6bnVsbCxuLnBpcGVEZWZzPWE/KCk9PigiZnVuY3Rpb24iPT10eXBlb2YgYT9hKCk6YSkubWFwKHBvKTpudWxsLG59KSl9ZnVuY3Rpb24gbG8odCxlLG4pe2NvbnN0IG89dC7JtWNtcDtvLmRpcmVjdGl2ZURlZnM9KCk9PmUubWFwKGNvKSxvLnBpcGVEZWZzPSgpPT5uLm1hcChwbyl9ZnVuY3Rpb24gY28odCl7Y29uc3QgZT15byh0KXx8X28odCk7aWYobmdEZXZNb2RlJiYhZSl0aHJvdyBuZXcgRXJyb3IoYCcke3QubmFtZX0nIGlzIG5laXRoZXIgJ0NvbXBvbmVudFR5cGUnIG9yICdEaXJlY3RpdmVUeXBlJy5gKTtyZXR1cm4gZX1mdW5jdGlvbiBwbyh0KXtjb25zdCBlPUNvKHQpO2lmKG5nRGV2TW9kZSYmIWUpdGhyb3cgbmV3IEVycm9yKGAnJHt0Lm5hbWV9JyBpcyBub3QgYSAnUGlwZVR5cGUnLmApO3JldHVybiBlfWNvbnN0IG1vPXt9O2Z1bmN0aW9uIHVvKHQpe3JldHVybiBWbigoKCk9Pntjb25zdCBlPXt0eXBlOnQudHlwZSxib290c3RyYXA6dC5ib290c3RyYXB8fFFuLGRlY2xhcmF0aW9uczp0LmRlY2xhcmF0aW9uc3x8UW4saW1wb3J0czp0LmltcG9ydHN8fFFuLGV4cG9ydHM6dC5leHBvcnRzfHxRbix0cmFuc2l0aXZlQ29tcGlsZVNjb3BlczpudWxsLHNjaGVtYXM6dC5zY2hlbWFzfHxudWxsLGlkOnQuaWR8fG51bGx9O3JldHVybiBudWxsIT10LmlkJiYobW9bdC5pZF09dC50eXBlKSxlfSkpfWZ1bmN0aW9uIGZvKHQsZSl7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IG49TW8odCwhMCk7bi5kZWNsYXJhdGlvbnM9ZS5kZWNsYXJhdGlvbnN8fFFuLG4uaW1wb3J0cz1lLmltcG9ydHN8fFFuLG4uZXhwb3J0cz1lLmV4cG9ydHN8fFFufSkpfWZ1bmN0aW9uIGdvKHQsZSl7aWYobnVsbD09dClyZXR1cm4gSm47Y29uc3Qgbj17fTtmb3IoY29uc3QgbyBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobykpe2xldCBpPXRbb10sYT1pO0FycmF5LmlzQXJyYXkoaSkmJihhPWlbMV0saT1pWzBdKSxuW2ldPW8sZSYmKGVbaV09YSl9cmV0dXJuIG59Y29uc3QgaG89c287ZnVuY3Rpb24gYm8odCl7cmV0dXJue3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLGZhY3Rvcnk6bnVsbCxwdXJlOiExIT09dC5wdXJlLG9uRGVzdHJveTp0LnR5cGUucHJvdG90eXBlLm5nT25EZXN0cm95fHxudWxsfX1mdW5jdGlvbiB5byh0KXtyZXR1cm4gdFskbl18fG51bGx9ZnVuY3Rpb24gX28odCl7cmV0dXJuIHRbdG9dfHxudWxsfWZ1bmN0aW9uIENvKHQpe3JldHVybiB0W2VvXXx8bnVsbH1mdW5jdGlvbiBNbyh0LGUpe2NvbnN0IG49dFtub118fG51bGw7aWYoIW4mJiEwPT09ZSl0aHJvdyBuZXcgRXJyb3IoYFR5cGUgJHtLZSh0KX0gZG9lcyBub3QgaGF2ZSAnybVtb2QnIHByb3BlcnR5LmApO3JldHVybiBufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgdm89MjAseG89WyJSb290IiwiQ29tcG9uZW50IiwiRW1iZWRkZWQiXSxPbz0xMDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIFBvKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYib2JqZWN0Ij09dHlwZW9mIHRbMV19ZnVuY3Rpb24gd28odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJiEwPT09dFsxXX1mdW5jdGlvbiBrbyh0KXtyZXR1cm4gMCE9KDgmdC5mbGFncyl9ZnVuY3Rpb24gU28odCl7cmV0dXJuIDI9PSgyJnQuZmxhZ3MpfWZ1bmN0aW9uIERvKHQpe3JldHVybiAxPT0oMSZ0LmZsYWdzKX1mdW5jdGlvbiBSbyh0KXtyZXR1cm4gbnVsbCE9PXQudGVtcGxhdGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBFbyh0LGUpe0FvKHQsZVsxXSl9ZnVuY3Rpb24gQW8odCxlKXtUbyh0KSx0Lmhhc093blByb3BlcnR5KCJ0Vmlld18iKSYmZ24odC50Vmlld18sZSwiVGhpcyBUTm9kZSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhpcyBUVmlldy4iKX1mdW5jdGlvbiBUbyh0KXt4bih0LCJUTm9kZSBtdXN0IGJlIGRlZmluZWQiKSx0JiYib2JqZWN0Ij09dHlwZW9mIHQmJnQuaGFzT3duUHJvcGVydHkoImRpcmVjdGl2ZVN0eWxpbmdMYXN0Iil8fE9uKCJOb3Qgb2YgdHlwZSBUTm9kZSwgZ290OiAiK3QpfWZ1bmN0aW9uIE5vKHQpe3huKHQsIkV4cGVjdGVkIFRJY3UgdG8gYmUgZGVmaW5lZCIpLCJudW1iZXIiIT10eXBlb2YgdC5jdXJyZW50Q2FzZUxWaWV3SW5kZXgmJk9uKCJPYmplY3QgaXMgbm90IG9mIFRJY3UgdHlwZS4iKX1mdW5jdGlvbiB6byh0KXt4bih0LCJjdXJyZW50VE5vZGUgc2hvdWxkIGV4aXN0ISIpLHhuKHQucGFyZW50LCJjdXJyZW50VE5vZGUgc2hvdWxkIGhhdmUgYSBwYXJlbnQiKX1mdW5jdGlvbiBJbyh0KXt4bih0LCJMQ29udGFpbmVyIG11c3QgYmUgZGVmaW5lZCIpLGduKHdvKHQpLCEwLCJFeHBlY3RpbmcgTENvbnRhaW5lciIpfWZ1bmN0aW9uIEhvKHQpe3QmJmduKFBvKHQpLCEwLCJFeHBlY3RpbmcgTFZpZXcgb3IgdW5kZWZpbmVkIG9yIG51bGwiKX1mdW5jdGlvbiBGbyh0KXt4bih0LCJMVmlldyBtdXN0IGJlIGRlZmluZWQiKSxnbihQbyh0KSwhMCwiRXhwZWN0aW5nIExWaWV3Iil9ZnVuY3Rpb24gTG8odCxlKXtnbih0LmZpcnN0Q3JlYXRlUGFzcywhMCxlfHwiU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGZpcnN0IGNyZWF0ZSBwYXNzLiIpfWZ1bmN0aW9uIEJvKHQsZSl7Z24odC5maXJzdFVwZGF0ZVBhc3MsITAsZXx8IlNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBmaXJzdCB1cGRhdGUgcGFzcy4iKX1mdW5jdGlvbiBWbyh0LGUpe1VvKHRbMV0uZXhwYW5kb1N0YXJ0SW5kZXgsdC5sZW5ndGgsZSl9ZnVuY3Rpb24gVW8odCxlLG4pe3Q8PW4mJm48ZXx8T24oYEluZGV4IG91dCBvZiByYW5nZSAoZXhwZWN0aW5nICR7dH0gPD0gJHtufSA8ICR7ZX0pYCl9ZnVuY3Rpb24gam8odCxlKXt4bih0LGV8fCJDb21wb25lbnQgdmlld3Mgc2hvdWxkIGFsd2F5cyBoYXZlIGEgcGFyZW50IHZpZXcgKGNvbXBvbmVudCdzIGhvc3QgdmlldykiKX1mdW5jdGlvbiBXbyh0LGUpe1ZvKHQsZSksVm8odCxlKzgpLHBuKHRbZSswXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxwbih0W2UrMV0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzJdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSszXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxwbih0W2UrNF0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzVdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHBuKHRbZSs2XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxwbih0W2UrN10sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikscG4odFtlKzhdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBwYXJlbnQgaW5qZWN0b3IiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gR28odCxlKXtjb25zdCBuPXQuaGFzT3duUHJvcGVydHkoaW8pO2lmKCFuJiYhMD09PWUmJm5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoYFR5cGUgJHtLZSh0KX0gZG9lcyBub3QgaGF2ZSAnybVmYWMnIHByb3BlcnR5LmApO3JldHVybiBuP3RbaW9dOm51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFlve2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnByZXZpb3VzVmFsdWU9dCx0aGlzLmN1cnJlbnRWYWx1ZT1lLHRoaXMuZmlyc3RDaGFuZ2U9bn1pc0ZpcnN0Q2hhbmdlKCl7cmV0dXJuIHRoaXMuZmlyc3RDaGFuZ2V9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxbygpe3JldHVybiBab31mdW5jdGlvbiBabyh0KXtyZXR1cm4gdC50eXBlLnByb3RvdHlwZS5uZ09uQ2hhbmdlcyYmKHQuc2V0SW5wdXQ9S28pLFhvfWZ1bmN0aW9uIFhvKCl7Y29uc3QgdD1Kbyh0aGlzKSxlPW51bGw9PXQ/dm9pZCAwOnQuY3VycmVudDtpZihlKXtjb25zdCBuPXQucHJldmlvdXM7aWYobj09PUpuKXQucHJldmlvdXM9ZTtlbHNlIGZvcihsZXQgdCBpbiBlKW5bdF09ZVt0XTt0LmN1cnJlbnQ9bnVsbCx0aGlzLm5nT25DaGFuZ2VzKGUpfX1mdW5jdGlvbiBLbyh0LGUsbixvKXtjb25zdCBpPUpvKHQpfHwoZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0Ll9fbmdTaW1wbGVDaGFuZ2VzX189ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LHtwcmV2aW91czpKbixjdXJyZW50Om51bGx9KSxyPWkuY3VycmVudHx8KGkuY3VycmVudD17fSkscz1pLnByZXZpb3VzLGw9dGhpcy5kZWNsYXJlZElucHV0c1tuXSxjPXNbbF07cltsXT1uZXcgWW8oYyYmYy5jdXJyZW50VmFsdWUsZSxzPT09Sm4pLHRbb109ZX1xby5uZ0luaGVyaXQ9ITA7ZnVuY3Rpb24gSm8odCl7cmV0dXJuIHQuX19uZ1NpbXBsZUNoYW5nZXNfX3x8bnVsbH1sZXQgUW89bnVsbDtjb25zdCAkbz10PT57UW89dH0sdGk9ZnVuY3Rpb24odCxlLG4pe251bGwhPVFvJiZRbyh0LGUsbil9LGVpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsbmk9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aE1MLyI7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgb2k7ZnVuY3Rpb24gaWkoKXtyZXR1cm4gdm9pZCAwIT09b2k/b2k6InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3ZhciBhaTtmdW5jdGlvbiByaSh0KXtyZXR1cm4hIXQubGlzdGVufSEoZnVuY3Rpb24odCl7dFt0LkltcG9ydGFudD0xXT0iSW1wb3J0YW50Iix0W3QuRGFzaENhc2U9Ml09IkRhc2hDYXNlIn0pKGFpfHwoYWk9e30pKTtjb25zdCBzaT17Y3JlYXRlUmVuZGVyZXI6KHQsZSk9PmlpKCl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbGkodCl7Zm9yKDtBcnJheS5pc0FycmF5KHQpOyl0PXRbMF07cmV0dXJuIHR9ZnVuY3Rpb24gY2kodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZ3bihlLHQpLG5nRGV2TW9kZSYmdm4odCx2bywiRXhwZWN0ZWQgdG8gYmUgcGFzdCBIRUFERVJfT0ZGU0VUIiksbGkoZVt0XSl9ZnVuY3Rpb24gZGkodCxlKXtuZ0Rldk1vZGUmJkVvKHQsZSksbmdEZXZNb2RlJiZ3bihlLHQuaW5kZXgpO2NvbnN0IG49bGkoZVt0LmluZGV4XSk7cmV0dXJuIG5nRGV2TW9kZSYmIXJpKGVbMTFdKSYmUG4obiksbn1mdW5jdGlvbiBwaSh0LGUpe25nRGV2TW9kZSYmTW4oZSwtMSwid3JvbmcgaW5kZXggZm9yIFROb2RlIiksbmdEZXZNb2RlJiZfbihlLHQuZGF0YS5sZW5ndGgsIndyb25nIGluZGV4IGZvciBUTm9kZSIpO2NvbnN0IG49dC5kYXRhW2VdO3JldHVybiBuZ0Rldk1vZGUmJm51bGwhPT1uJiZUbyhuKSxufWZ1bmN0aW9uIG1pKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmd24odCxlKSx0W2VdfWZ1bmN0aW9uIHVpKHQsZSl7bmdEZXZNb2RlJiZ3bihlLHQpO2NvbnN0IG49ZVt0XTtyZXR1cm4gUG8obik/bjpuWzBdfWZ1bmN0aW9uIGZpKHQpe3JldHVybiA0PT0oNCZ0WzJdKX1mdW5jdGlvbiBnaSh0KXtyZXR1cm4gMTI4PT0oMTI4JnRbMl0pfWZ1bmN0aW9uIGhpKHQsZSl7cmV0dXJuIG51bGw9PWU/bnVsbDoobmdEZXZNb2RlJiZ3bih0LGUpLHRbZV0pfWZ1bmN0aW9uIGJpKHQpe3RbMThdPTB9ZnVuY3Rpb24geWkodCxlKXt0WzVdKz1lO2xldCBuPXQsbz10WzNdO2Zvcig7bnVsbCE9PW8mJigxPT09ZSYmMT09PW5bNV18fC0xPT09ZSYmMD09PW5bNV0pOylvWzVdKz1lLG49byxvPW9bM119Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IF9pPXtsRnJhbWU6WGkobnVsbCksYmluZGluZ3NFbmFibGVkOiEwLGlzSW5DaGVja05vQ2hhbmdlc01vZGU6ITF9O2Z1bmN0aW9uIENpKCl7cmV0dXJuIF9pLmJpbmRpbmdzRW5hYmxlZH1mdW5jdGlvbiBNaSgpe19pLmJpbmRpbmdzRW5hYmxlZD0hMH1mdW5jdGlvbiB2aSgpe19pLmJpbmRpbmdzRW5hYmxlZD0hMX1mdW5jdGlvbiB4aSgpe3JldHVybiBfaS5sRnJhbWUubFZpZXd9ZnVuY3Rpb24gT2koKXtyZXR1cm4gX2kubEZyYW1lLnRWaWV3fWZ1bmN0aW9uIFBpKHQpe3JldHVybiBfaS5sRnJhbWUuY29udGV4dExWaWV3PXQsdFs4XX1mdW5jdGlvbiB3aSgpe2xldCB0PWtpKCk7Zm9yKDtudWxsIT09dCYmNjQ9PT10LnR5cGU7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9ZnVuY3Rpb24ga2koKXtyZXR1cm4gX2kubEZyYW1lLmN1cnJlbnRUTm9kZX1mdW5jdGlvbiBTaSgpe2NvbnN0IHQ9X2kubEZyYW1lLGU9dC5jdXJyZW50VE5vZGU7cmV0dXJuIHQuaXNQYXJlbnQ/ZTplLnBhcmVudH1mdW5jdGlvbiBEaSh0LGUpe25nRGV2TW9kZSYmdCYmQW8odCxfaS5sRnJhbWUudFZpZXcpO2NvbnN0IG49X2kubEZyYW1lO24uY3VycmVudFROb2RlPXQsbi5pc1BhcmVudD1lfWZ1bmN0aW9uIFJpKCl7cmV0dXJuIF9pLmxGcmFtZS5pc1BhcmVudH1mdW5jdGlvbiBFaSgpe19pLmxGcmFtZS5pc1BhcmVudD0hMX1mdW5jdGlvbiBBaSgpe3JldHVybiBfaS5pc0luQ2hlY2tOb0NoYW5nZXNNb2RlfWZ1bmN0aW9uIFRpKHQpe19pLmlzSW5DaGVja05vQ2hhbmdlc01vZGU9dH1mdW5jdGlvbiBOaSgpe2NvbnN0IHQ9X2kubEZyYW1lO2xldCBlPXQuYmluZGluZ1Jvb3RJbmRleDtyZXR1cm4tMT09PWUmJihlPXQuYmluZGluZ1Jvb3RJbmRleD10LnRWaWV3LmJpbmRpbmdTdGFydEluZGV4KSxlfWZ1bmN0aW9uIHppKCl7cmV0dXJuIF9pLmxGcmFtZS5iaW5kaW5nSW5kZXh9ZnVuY3Rpb24gSWkodCl7cmV0dXJuIF9pLmxGcmFtZS5iaW5kaW5nSW5kZXg9dH1mdW5jdGlvbiBIaSgpe3JldHVybiBfaS5sRnJhbWUuYmluZGluZ0luZGV4Kyt9ZnVuY3Rpb24gRmkodCl7Y29uc3QgZT1faS5sRnJhbWUsbj1lLmJpbmRpbmdJbmRleDtyZXR1cm4gZS5iaW5kaW5nSW5kZXg9ZS5iaW5kaW5nSW5kZXgrdCxufWZ1bmN0aW9uIExpKHQpe19pLmxGcmFtZS5pbkkxOG49dH1mdW5jdGlvbiBCaSh0LGUpe2NvbnN0IG49X2kubEZyYW1lO24uYmluZGluZ0luZGV4PW4uYmluZGluZ1Jvb3RJbmRleD10LFZpKGUpfWZ1bmN0aW9uIFZpKHQpe19pLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg9dH1mdW5jdGlvbiBVaSh0KXtjb25zdCBlPV9pLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg7cmV0dXJuLTE9PT1lP251bGw6dFtlXX1mdW5jdGlvbiBqaSgpe3JldHVybiBfaS5sRnJhbWUuY3VycmVudFF1ZXJ5SW5kZXh9ZnVuY3Rpb24gV2kodCl7X2kubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4PXR9ZnVuY3Rpb24gR2kodCl7Y29uc3QgZT10WzFdO3JldHVybiAyPT09ZS50eXBlPyhuZ0Rldk1vZGUmJnhuKGUuZGVjbFROb2RlLCJFbWJlZGRlZCBUTm9kZXMgc2hvdWxkIGhhdmUgZGVjbGFyYXRpb24gcGFyZW50cy4iKSxlLmRlY2xUTm9kZSk6MT09PWUudHlwZT90WzZdOm51bGx9ZnVuY3Rpb24gWWkodCxlLG4pe2lmKG5nRGV2TW9kZSYmSG8odCksbiZIbi5Ta2lwU2VsZil7bmdEZXZNb2RlJiZBbyhlLHRbMV0pO2xldCBvPWUsaT10O2Zvcig7IShuZ0Rldk1vZGUmJnhuKG8sIlBhcmVudCBUTm9kZSBzaG91bGQgYmUgZGVmaW5lZCIpLG89by5wYXJlbnQsbnVsbCE9PW98fG4mSG4uSG9zdHx8KG89R2koaSksbnVsbD09PW8pfHwobmdEZXZNb2RlJiZ4bihpLCJQYXJlbnQgTFZpZXcgc2hvdWxkIGJlIGRlZmluZWQiKSxpPWlbMTVdLDEwJm8udHlwZSkpOyk7aWYobnVsbD09PW8pcmV0dXJuITE7ZT1vLHQ9aX1uZ0Rldk1vZGUmJkVvKGUsdCk7Y29uc3Qgbz1faS5sRnJhbWU9WmkoKTtyZXR1cm4gby5jdXJyZW50VE5vZGU9ZSxvLmxWaWV3PXQsITB9ZnVuY3Rpb24gcWkodCl7bmdEZXZNb2RlJiZobih0WzBdLHRbMV0sIj8/Pz8iKSxuZ0Rldk1vZGUmJkhvKHQpO2NvbnN0IGU9WmkoKTtuZ0Rldk1vZGUmJihnbihlLmlzUGFyZW50LCEwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLmxWaWV3LG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGduKGUudFZpZXcsbnVsbCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5zZWxlY3RlZEluZGV4LC0xLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLmVsZW1lbnREZXB0aENvdW50LDAsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGduKGUuY3VycmVudERpcmVjdGl2ZUluZGV4LC0xLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLmN1cnJlbnROYW1lc3BhY2UsbnVsbCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksZ24oZS5iaW5kaW5nUm9vdEluZGV4LC0xLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxnbihlLmN1cnJlbnRRdWVyeUluZGV4LDAsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpKTtjb25zdCBuPXRbMV07X2kubEZyYW1lPWUsbmdEZXZNb2RlJiZuLmZpcnN0Q2hpbGQmJkFvKG4uZmlyc3RDaGlsZCxuKSxlLmN1cnJlbnRUTm9kZT1uLmZpcnN0Q2hpbGQsZS5sVmlldz10LGUudFZpZXc9bixlLmNvbnRleHRMVmlldz10LGUuYmluZGluZ0luZGV4PW4uYmluZGluZ1N0YXJ0SW5kZXgsZS5pbkkxOG49ITF9ZnVuY3Rpb24gWmkoKXtjb25zdCB0PV9pLmxGcmFtZSxlPW51bGw9PT10P251bGw6dC5jaGlsZDtyZXR1cm4gbnVsbD09PWU/WGkodCk6ZX1mdW5jdGlvbiBYaSh0KXtjb25zdCBlPXtjdXJyZW50VE5vZGU6bnVsbCxpc1BhcmVudDohMCxsVmlldzpudWxsLHRWaWV3Om51bGwsc2VsZWN0ZWRJbmRleDotMSxjb250ZXh0TFZpZXc6bnVsbCxlbGVtZW50RGVwdGhDb3VudDowLGN1cnJlbnROYW1lc3BhY2U6bnVsbCxjdXJyZW50RGlyZWN0aXZlSW5kZXg6LTEsYmluZGluZ1Jvb3RJbmRleDotMSxiaW5kaW5nSW5kZXg6LTEsY3VycmVudFF1ZXJ5SW5kZXg6MCxwYXJlbnQ6dCxjaGlsZDpudWxsLGluSTE4bjohMX07cmV0dXJuIG51bGwhPT10JiYodC5jaGlsZD1lKSxlfWZ1bmN0aW9uIEtpKCl7Y29uc3QgdD1faS5sRnJhbWU7cmV0dXJuIF9pLmxGcmFtZT10LnBhcmVudCx0LmN1cnJlbnRUTm9kZT1udWxsLHQubFZpZXc9bnVsbCx0fWNvbnN0IEppPUtpO2Z1bmN0aW9uIFFpKCl7Y29uc3QgdD1LaSgpO3QuaXNQYXJlbnQ9ITAsdC50Vmlldz1udWxsLHQuc2VsZWN0ZWRJbmRleD0tMSx0LmNvbnRleHRMVmlldz1udWxsLHQuZWxlbWVudERlcHRoQ291bnQ9MCx0LmN1cnJlbnREaXJlY3RpdmVJbmRleD0tMSx0LmN1cnJlbnROYW1lc3BhY2U9bnVsbCx0LmJpbmRpbmdSb290SW5kZXg9LTEsdC5iaW5kaW5nSW5kZXg9LTEsdC5jdXJyZW50UXVlcnlJbmRleD0wfWZ1bmN0aW9uICRpKHQpe3JldHVybihfaS5sRnJhbWUuY29udGV4dExWaWV3PShmdW5jdGlvbiBlKHQsbil7Zm9yKDt0PjA7KW5nRGV2TW9kZSYmeG4oblsxNV0sIkRlY2xhcmF0aW9uIHZpZXcgc2hvdWxkIGJlIGRlZmluZWQgaWYgbmVzdGluZyBsZXZlbCBpcyBncmVhdGVyIHRoYW4gMC4iKSxuPW5bMTVdLHQtLTtyZXR1cm4gbn0pKHQsX2kubEZyYW1lLmNvbnRleHRMVmlldykpWzhdfWZ1bmN0aW9uIHRhKCl7cmV0dXJuIF9pLmxGcmFtZS5zZWxlY3RlZEluZGV4fWZ1bmN0aW9uIGVhKHQpe25nRGV2TW9kZSYmLTEhPT10JiZ2bih0LHZvLCJJbmRleCBtdXN0IGJlIHBhc3QgSEVBREVSX09GRlNFVCAob3IgLTEpLiIpLG5nRGV2TW9kZSYmX24odCxfaS5sRnJhbWUubFZpZXcubGVuZ3RoLCJDYW4ndCBzZXQgaW5kZXggcGFzc2VkIGVuZCBvZiBMVmlldyIpLF9pLmxGcmFtZS5zZWxlY3RlZEluZGV4PXR9ZnVuY3Rpb24gbmEoKXtjb25zdCB0PV9pLmxGcmFtZTtyZXR1cm4gcGkodC50Vmlldyx0LnNlbGVjdGVkSW5kZXgpfWZ1bmN0aW9uIG9hKCl7X2kubEZyYW1lLmN1cnJlbnROYW1lc3BhY2U9ZWl9ZnVuY3Rpb24gaWEoKXtfaS5sRnJhbWUuY3VycmVudE5hbWVzcGFjZT1uaX1mdW5jdGlvbiBhYSgpeyEoZnVuY3Rpb24gdCgpe19pLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlPW51bGx9KSgpfWZ1bmN0aW9uIHJhKHQsZSl7bmdEZXZNb2RlJiZMbyh0KTtmb3IobGV0IG49ZS5kaXJlY3RpdmVTdGFydCxvPWUuZGlyZWN0aXZlRW5kO248bztuKyspe2NvbnN0IGU9dC5kYXRhW25dO25nRGV2TW9kZSYmeG4oZSwiRXhwZWN0aW5nIERpcmVjdGl2ZURlZiIpO2NvbnN0IG89ZS50eXBlLnByb3RvdHlwZSx7bmdBZnRlckNvbnRlbnRJbml0OmksbmdBZnRlckNvbnRlbnRDaGVja2VkOmEsbmdBZnRlclZpZXdJbml0OnIsbmdBZnRlclZpZXdDaGVja2VkOnMsbmdPbkRlc3Ryb3k6bH09bztpJiYodC5jb250ZW50SG9va3N8fCh0LmNvbnRlbnRIb29rcz1bXSkpLnB1c2goLW4saSksYSYmKCh0LmNvbnRlbnRIb29rc3x8KHQuY29udGVudEhvb2tzPVtdKSkucHVzaChuLGEpLCh0LmNvbnRlbnRDaGVja0hvb2tzfHwodC5jb250ZW50Q2hlY2tIb29rcz1bXSkpLnB1c2gobixhKSksciYmKHQudmlld0hvb2tzfHwodC52aWV3SG9va3M9W10pKS5wdXNoKC1uLHIpLHMmJigodC52aWV3SG9va3N8fCh0LnZpZXdIb29rcz1bXSkpLnB1c2gobixzKSwodC52aWV3Q2hlY2tIb29rc3x8KHQudmlld0NoZWNrSG9va3M9W10pKS5wdXNoKG4scykpLG51bGwhPWwmJih0LmRlc3Ryb3lIb29rc3x8KHQuZGVzdHJveUhvb2tzPVtdKSkucHVzaChuLGwpfX1mdW5jdGlvbiBzYSh0LGUsbil7ZGEodCxlLDMsbil9ZnVuY3Rpb24gbGEodCxlLG4sbyl7bmdEZXZNb2RlJiZobihuLDMsIkluaXQgcHJlLW9yZGVyIGhvb2tzIHNob3VsZCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIiksKDMmdFsyXSk9PT1uJiZkYSh0LGUsbixvKX1mdW5jdGlvbiBjYSh0LGUpe25nRGV2TW9kZSYmaG4oZSwzLCJJbml0IGhvb2tzIHBoYXNlIHNob3VsZCBub3QgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYWxsIGluaXQgaG9va3MgaGF2ZSBiZWVuIHJ1bi4iKTtsZXQgbj10WzJdOygzJm4pPT09ZSYmKG4mPTIwNDcsbis9MSx0WzJdPW4pfWZ1bmN0aW9uIGRhKHQsZSxuLG8pe25nRGV2TW9kZSYmZ24oQWkoKSwhMSwiSG9va3Mgc2hvdWxkIG5ldmVyIGJlIHJ1biB3aGVuIGluIGNoZWNrIG5vIGNoYW5nZXMgbW9kZS4iKTtjb25zdCBpPW51bGwhPW8/bzotMSxhPWUubGVuZ3RoLTE7bGV0IHI9MDtmb3IobGV0IHM9dm9pZCAwIT09bz82NTUzNSZ0WzE4XTowO3M8YTtzKyspe2lmKCJudW1iZXIiPT10eXBlb2YgZVtzKzFdKXtpZihyPWVbc10sbnVsbCE9byYmcj49bylicmVha31lbHNle2Vbc108MCYmKHRbMThdKz02NTUzNiksKHI8aXx8LTE9PWkpJiYocGEodCxuLGUscyksdFsxOF09KDQyOTQ5MDE3NjAmdFsxOF0pK3MrMikscysrfX19ZnVuY3Rpb24gcGEodCxlLG4sbyl7Y29uc3QgaT1uW29dPDAsYT1uW28rMV0scj10W2k/LW5bb106bltvXV07aWYoaSl7aWYodFsyXT4+MTE8dFsxOF0+PjE2JiYoMyZ0WzJdKT09PWUpe3RbMl0rPTIwNDgsdGkoNCxyLGEpO3RyeXthLmNhbGwocil9ZmluYWxseXt0aSg1LHIsYSl9fX1lbHNle3RpKDQscixhKTt0cnl7YS5jYWxsKHIpfWZpbmFsbHl7dGkoNSxyLGEpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IG1hPS0xO2NsYXNzIHVhe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmZhY3Rvcnk9dCx0aGlzLnJlc29sdmluZz0hMSxuZ0Rldk1vZGUmJnhuKHQsIkZhY3Rvcnkgbm90IHNwZWNpZmllZCIpLG5nRGV2TW9kZSYmZ24odHlwZW9mIHQsImZ1bmN0aW9uIiwiRXhwZWN0ZWQgZmFjdG9yeSBmdW5jdGlvbi4iKSx0aGlzLmNhblNlZVZpZXdQcm92aWRlcnM9ZSx0aGlzLmluamVjdEltcGw9bn19ZnVuY3Rpb24gZmEodCl7bGV0IGU9IiI7cmV0dXJuIDEmdCYmKGUrPSJ8VGV4dCIpLDImdCYmKGUrPSJ8RWxlbWVudCIpLDQmdCYmKGUrPSJ8Q29udGFpbmVyIiksOCZ0JiYoZSs9InxFbGVtZW50Q29udGFpbmVyIiksMTYmdCYmKGUrPSJ8UHJvamVjdGlvbiIpLDMyJnQmJihlKz0ifEljdUNvbnRhaW5lciIpLDY0JnQmJihlKz0ifFBsYWNlaG9sZGVyIiksZS5sZW5ndGg+MD9lLnN1YnN0cmluZygxKTplfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZ2EodCxlLG4pe3huKHQsInNob3VsZCBiZSBjYWxsZWQgd2l0aCBhIFROb2RlIiksMD09KHQudHlwZSZlKSYmT24obnx8YEV4cGVjdGVkIFske2ZhKGUpfV0gYnV0IGdvdCAke2ZhKHQudHlwZSl9LmApfWZ1bmN0aW9uIGhhKHQsZSxuKXtjb25zdCBvPXJpKHQpO2xldCBpPTA7Zm9yKDtpPG4ubGVuZ3RoOyl7Y29uc3QgYT1uW2ldO2lmKCJudW1iZXIiPT10eXBlb2YgYSl7aWYoMCE9PWEpYnJlYWs7aSsrO2NvbnN0IHI9bltpKytdLHM9bltpKytdLGw9bltpKytdO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0QXR0cmlidXRlKyssbz90LnNldEF0dHJpYnV0ZShlLHMsbCxyKTplLnNldEF0dHJpYnV0ZU5TKHIscyxsKX1lbHNle2NvbnN0IHI9YSxzPW5bKytpXTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldEF0dHJpYnV0ZSsrLHlhKHIpP28mJnQuc2V0UHJvcGVydHkoZSxyLHMpOm8/dC5zZXRBdHRyaWJ1dGUoZSxyLHMpOmUuc2V0QXR0cmlidXRlKHIscyksaSsrfX1yZXR1cm4gaX1mdW5jdGlvbiBiYSh0KXtyZXR1cm4gMz09PXR8fDQ9PT10fHw2PT09dH1mdW5jdGlvbiB5YSh0KXtyZXR1cm4gNjQ9PT10LmNoYXJDb2RlQXQoMCl9ZnVuY3Rpb24gX2EodCxlKXtpZihudWxsPT09ZXx8MD09PWUubGVuZ3RoKTtlbHNlIGlmKG51bGw9PT10fHwwPT09dC5sZW5ndGgpdD1lLnNsaWNlKCk7ZWxzZXtsZXQgbj0tMTtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7Y29uc3QgaT1lW29dOyJudW1iZXIiPT10eXBlb2YgaT9uPWk6MD09PW58fENhKHQsbixpLG51bGwsLTE9PT1ufHwyPT09bj9lWysrb106bnVsbCl9fXJldHVybiB0fWZ1bmN0aW9uIENhKHQsZSxuLG8saSl7bGV0IGE9MCxyPXQubGVuZ3RoO2lmKC0xPT09ZSlyPS0xO2Vsc2UgZm9yKDthPHQubGVuZ3RoOyl7Y29uc3Qgbj10W2ErK107aWYoIm51bWJlciI9PXR5cGVvZiBuKXtpZihuPT09ZSl7cj0tMTticmVha31pZihuPmUpe3I9YS0xO2JyZWFrfX19Zm9yKDthPHQubGVuZ3RoOyl7Y29uc3QgZT10W2FdO2lmKCJudW1iZXIiPT10eXBlb2YgZSlicmVhaztpZihlPT09bil7aWYobnVsbD09PW8pcmV0dXJuIHZvaWQobnVsbCE9PWkmJih0W2ErMV09aSkpO2lmKG89PT10W2ErMV0pcmV0dXJuIHZvaWQodFthKzJdPWkpfWErKyxudWxsIT09byYmYSsrLG51bGwhPT1pJiZhKyt9LTEhPT1yJiYodC5zcGxpY2UociwwLGUpLGE9cisxKSx0LnNwbGljZShhKyssMCxuKSxudWxsIT09byYmdC5zcGxpY2UoYSsrLDAsbyksbnVsbCE9PWkmJnQuc3BsaWNlKGErKywwLGkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBNYSh0KXtyZXR1cm4gdCE9PW1hfWZ1bmN0aW9uIHZhKHQpe25nRGV2TW9kZSYmcG4odCwiTnVtYmVyIGV4cGVjdGVkIiksbmdEZXZNb2RlJiZobih0LC0xLCJOb3QgYSB2YWxpZCBzdGF0ZS4iKTtyZXR1cm4gbmdEZXZNb2RlJiZNbigzMjc2NyZ0LHZvLCJQYXJlbnQgaW5qZWN0b3IgbXVzdCBiZSBwb2ludGluZyBwYXN0IEhFQURFUl9PRkZTRVQuIiksMzI3NjcmdH1mdW5jdGlvbiB4YSh0LGUpe2xldCBuPShmdW5jdGlvbiBvKHQpe3JldHVybiB0Pj4xNn0pKHQpLGk9ZTtmb3IoO24+MDspaT1pWzE1XSxuLS07cmV0dXJuIGl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBPYT0hMDtmdW5jdGlvbiBQYSh0KXtjb25zdCBlPU9hO3JldHVybiBPYT10LGV9bGV0IHdhPTA7ZnVuY3Rpb24ga2EodCxlKXtjb25zdCBuPURhKHQsZSk7aWYoLTEhPT1uKXJldHVybiBuO2NvbnN0IG89ZVsxXTtvLmZpcnN0Q3JlYXRlUGFzcyYmKHQuaW5qZWN0b3JJbmRleD1lLmxlbmd0aCxTYShvLmRhdGEsdCksU2EoZSxudWxsKSxTYShvLmJsdWVwcmludCxudWxsKSk7Y29uc3QgaT1SYSh0LGUpLGE9dC5pbmplY3RvckluZGV4O2lmKE1hKGkpKXtjb25zdCB0PXZhKGkpLG49eGEoaSxlKSxvPW5bMV0uZGF0YTtmb3IobGV0IGk9MDtpPDg7aSsrKWVbYStpXT1uW3QraV18b1t0K2ldfXJldHVybiBlW2ErOF09aSxhfWZ1bmN0aW9uIFNhKHQsZSl7dC5wdXNoKDAsMCwwLDAsMCwwLDAsMCxlKX1mdW5jdGlvbiBEYSh0LGUpe3JldHVybi0xPT09dC5pbmplY3RvckluZGV4fHx0LnBhcmVudCYmdC5wYXJlbnQuaW5qZWN0b3JJbmRleD09PXQuaW5qZWN0b3JJbmRleHx8bnVsbD09PWVbdC5pbmplY3RvckluZGV4KzhdPy0xOihuZ0Rldk1vZGUmJnduKGUsdC5pbmplY3RvckluZGV4KSx0LmluamVjdG9ySW5kZXgpfWZ1bmN0aW9uIFJhKHQsZSl7aWYodC5wYXJlbnQmJi0xIT09dC5wYXJlbnQuaW5qZWN0b3JJbmRleClyZXR1cm4gdC5wYXJlbnQuaW5qZWN0b3JJbmRleDtsZXQgbj0wLG89bnVsbCxpPWU7Zm9yKDtudWxsIT09aTspe2NvbnN0IHQ9aVsxXSxlPXQudHlwZTtpZigyPT09ZT8obmdEZXZNb2RlJiZ4bih0LmRlY2xUTm9kZSwiRW1iZWRkZWQgVE5vZGVzIHNob3VsZCBoYXZlIGRlY2xhcmF0aW9uIHBhcmVudHMuIiksbz10LmRlY2xUTm9kZSk6MT09PWU/bz1pWzZdOihuZ0Rldk1vZGUmJmduKHQudHlwZSwwLCJSb290IHR5cGUgZXhwZWN0ZWQiKSxvPW51bGwpLG51bGw9PT1vKXJldHVybiBtYTtpZihuZ0Rldk1vZGUmJm8mJkVvKG8saVsxNV0pLG4rKyxpPWlbMTVdLC0xIT09by5pbmplY3RvckluZGV4KXJldHVybiBvLmluamVjdG9ySW5kZXh8bjw8MTZ9cmV0dXJuIG1hfWZ1bmN0aW9uIEVhKHQsZSxuKXshKGZ1bmN0aW9uIG8odCxlLG4pe2xldCBvO25nRGV2TW9kZSYmZ24oZS5maXJzdENyZWF0ZVBhc3MsITAsImV4cGVjdGVkIGZpcnN0Q3JlYXRlUGFzcyB0byBiZSB0cnVlIiksInN0cmluZyI9PXR5cGVvZiBuP289bi5jaGFyQ29kZUF0KDApfHwwOm4uaGFzT3duUHJvcGVydHkoYW8pJiYobz1uW2FvXSksbnVsbD09byYmKG89blthb109d2ErKyk7Y29uc3QgaT0yNTUmbztlLmRhdGFbdCsoaT4+NSldfD0xPDxpfSkodCxlLG4pfWZ1bmN0aW9uIEFhKHQsZSxuKXtpZihuJkhuLk9wdGlvbmFsKXJldHVybiB0O2RuKGUsIk5vZGVJbmplY3RvciIpfWZ1bmN0aW9uIFRhKHQsZSxuLG8pe2lmKG4mSG4uT3B0aW9uYWwmJnZvaWQgMD09PW8mJihvPW51bGwpLDA9PShuJihIbi5TZWxmfEhuLkhvc3QpKSl7Y29uc3QgaT10WzldLGE9TG4odm9pZCAwKTt0cnl7cmV0dXJuIGk/aS5nZXQoZSxvLG4mSG4uT3B0aW9uYWwpOkJuKGUsbyxuJkhuLk9wdGlvbmFsKX1maW5hbGx5e0xuKGEpfX1yZXR1cm4gQWEobyxlLG4pfWZ1bmN0aW9uIE5hKHQsZSxuLG89SG4uRGVmYXVsdCxpKXtpZihudWxsIT09dCl7Y29uc3QgYT0oZnVuY3Rpb24gYSh0KXtpZihuZ0Rldk1vZGUmJnhuKHQsInRva2VuIG11c3QgYmUgZGVmaW5lZCIpLCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdC5jaGFyQ29kZUF0KDApfHwwO2NvbnN0IGU9dC5oYXNPd25Qcm9wZXJ0eShhbyk/dFthb106dm9pZCAwO3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9lPj0wPzI1NSZlOihuZ0Rldk1vZGUmJmduKGUsLTEsIkV4cGVjdGluZyB0byBnZXQgU3BlY2lhbCBJbmplY3RvciBJZCIpLElhKTplfSkobik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEpe2lmKCFZaShlLHQsbykpcmV0dXJuIG8mSG4uSG9zdD9BYShpLG4sbyk6VGEoZSxuLG8saSk7dHJ5e2NvbnN0IHQ9YShvKTtpZihudWxsIT10fHxvJkhuLk9wdGlvbmFsKXJldHVybiB0O2RuKG4pfWZpbmFsbHl7SmkoKX19ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGEpe2xldCBpPW51bGwscj1EYSh0LGUpLHM9bWEsbD1vJkhuLkhvc3Q/ZVsxNl1bNl06bnVsbDtmb3IoKC0xPT09cnx8byZIbi5Ta2lwU2VsZikmJihzPS0xPT09cj9SYSh0LGUpOmVbcis4XSxzIT09bWEmJlZhKG8sITEpPyhpPWVbMV0scj12YShzKSxlPXhhKHMsZSkpOnI9LTEpOy0xIT09cjspe25nRGV2TW9kZSYmV28oZSxyKTtjb25zdCB0PWVbMV07aWYobmdEZXZNb2RlJiZFbyh0LmRhdGFbcis4XSxlKSxCYShhLHIsdC5kYXRhKSl7Y29uc3QgdD1IYShyLGUsbixpLG8sbCk7aWYodCE9PXphKXJldHVybiB0fXM9ZVtyKzhdLHMhPT1tYSYmVmEobyxlWzFdLmRhdGFbcis4XT09PWwpJiZCYShhLHIsZSk/KGk9dCxyPXZhKHMpLGU9eGEocyxlKSk6cj0tMX19fXJldHVybiBUYShlLG4sbyxpKX1jb25zdCB6YT17fTtmdW5jdGlvbiBJYSgpe3JldHVybiBuZXcgVWEod2koKSx4aSgpKX1mdW5jdGlvbiBIYSh0LGUsbixvLGksYSl7Y29uc3Qgcj1lWzFdLHM9ci5kYXRhW3QrOF0sbD1GYShzLHIsbixudWxsPT1vP1NvKHMpJiZPYTpvIT1yJiYwIT0oMyZzLnR5cGUpLGkmSG4uSG9zdCYmYT09PXMpO3JldHVybiBudWxsIT09bD9MYShlLHIsbCxzKTp6YX1mdW5jdGlvbiBGYSh0LGUsbixvLGkpe2NvbnN0IGE9dC5wcm92aWRlckluZGV4ZXMscj1lLmRhdGEscz0xMDQ4NTc1JmEsbD10LmRpcmVjdGl2ZVN0YXJ0LGM9YT4+MjAsZD1pP3MrYzp0LmRpcmVjdGl2ZUVuZDtmb3IobGV0IHQ9bz9zOnMrYzt0PGQ7dCsrKXtjb25zdCBlPXJbdF07aWYodDxsJiZuPT09ZXx8dD49bCYmZS50eXBlPT09bilyZXR1cm4gdH1pZihpKXtjb25zdCB0PXJbbF07aWYodCYmUm8odCkmJnQudHlwZT09PW4pcmV0dXJuIGx9cmV0dXJuIG51bGx9ZnVuY3Rpb24gTGEodCxlLG4sbyl7bGV0IGk9dFtuXTtjb25zdCBhPWUuZGF0YTtpZigoZnVuY3Rpb24gcih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHVhfSkoaSkpe2NvbnN0IHI9aTtyLnJlc29sdmluZyYmbG4oc24oYVtuXSkpO2NvbnN0IHM9UGEoci5jYW5TZWVWaWV3UHJvdmlkZXJzKTtyLnJlc29sdmluZz0hMDtjb25zdCBsPXIuaW5qZWN0SW1wbD9MbihyLmluamVjdEltcGwpOm51bGwsYz1ZaSh0LG8sSG4uRGVmYXVsdCk7bmdEZXZNb2RlJiZnbihjLCEwLCJCZWNhdXNlIGZsYWdzIGRvIG5vdCBjb250YWluIGBTa2lwU2VsZicgd2UgZXhwZWN0IHRoaXMgdG8gYWx3YXlzIHN1Y2NlZWQuIik7dHJ5e2k9dFtuXT1yLmZhY3Rvcnkodm9pZCAwLGEsdCxvKSxlLmZpcnN0Q3JlYXRlUGFzcyYmbj49by5kaXJlY3RpdmVTdGFydCYmKG5nRGV2TW9kZSYmKGZ1bmN0aW9uIHModCl7dm9pZCAwIT09dC50eXBlJiZudWxsIT10LnNlbGVjdG9ycyYmdm9pZCAwIT09dC5pbnB1dHN8fE9uKCJFeHBlY3RlZCBhIERpcmVjdGl2ZURlZi9Db21wb25lbnREZWYgYW5kIHRoaXMgb2JqZWN0IGRvZXMgbm90IHNlZW0gdG8gaGF2ZSB0aGUgZXhwZWN0ZWQgc2hhcGUuIil9KShhW25dKSwoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBsKHQsZSxuKXtuZ0Rldk1vZGUmJkxvKG4pO2NvbnN0e25nT25DaGFuZ2VzOm8sbmdPbkluaXQ6aSxuZ0RvQ2hlY2s6YX09ZS50eXBlLnByb3RvdHlwZTtpZihvKXtjb25zdCBvPVpvKGUpOyhuLnByZU9yZGVySG9va3N8fChuLnByZU9yZGVySG9va3M9W10pKS5wdXNoKHQsbyksKG4ucHJlT3JkZXJDaGVja0hvb2tzfHwobi5wcmVPcmRlckNoZWNrSG9va3M9W10pKS5wdXNoKHQsbyl9aSYmKG4ucHJlT3JkZXJIb29rc3x8KG4ucHJlT3JkZXJIb29rcz1bXSkpLnB1c2goMC10LGkpLGEmJigobi5wcmVPcmRlckhvb2tzfHwobi5wcmVPcmRlckhvb2tzPVtdKSkucHVzaCh0LGEpLChuLnByZU9yZGVyQ2hlY2tIb29rc3x8KG4ucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaCh0LGEpKX0pKG4sYVtuXSxlKSl9ZmluYWxseXtudWxsIT09bCYmTG4obCksUGEocyksci5yZXNvbHZpbmc9ITEsSmkoKX19cmV0dXJuIGl9ZnVuY3Rpb24gQmEodCxlLG4pe3JldHVybiEhKG5bZSsodD4+NSldJjE8PHQpfWZ1bmN0aW9uIFZhKHQsZSl7cmV0dXJuISh0JkhuLlNlbGZ8fHQmSG4uSG9zdCYmZSl9Y2xhc3MgVWF7Y29uc3RydWN0b3IodCxlKXt0aGlzLl90Tm9kZT10LHRoaXMuX2xWaWV3PWV9Z2V0KHQsZSl7cmV0dXJuIE5hKHRoaXMuX3ROb2RlLHRoaXMuX2xWaWV3LHQsdm9pZCAwLGUpfX1mdW5jdGlvbiBqYSh0KXtyZXR1cm4gVm4oKCgpPT57Y29uc3QgZT10LnByb3RvdHlwZS5jb25zdHJ1Y3RvcixuPWVbaW9dfHxXYShlKSxvPU9iamVjdC5wcm90b3R5cGU7bGV0IGk9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcjtmb3IoO2kmJmkhPT1vOyl7Y29uc3QgdD1pW2lvXXx8V2EoaSk7aWYodCYmdCE9PW4pcmV0dXJuIHQ7aT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoaSl9cmV0dXJuIHQ9Pm5ldyB0fSkpfWZ1bmN0aW9uIFdhKHQpe3JldHVybiBlbih0KT8oKT0+e2NvbnN0IGU9V2EodG4odCkpO3JldHVybiBlJiZlKCl9OkdvKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBHYSh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe2lmKG5nRGV2TW9kZSYmZ2EodCwxNSksbmdEZXZNb2RlJiZ4bih0LCJleHBlY3RpbmcgdE5vZGUiKSwiY2xhc3MiPT09bilyZXR1cm4gdC5jbGFzc2VzO2lmKCJzdHlsZSI9PT1uKXJldHVybiB0LnN0eWxlcztjb25zdCBvPXQuYXR0cnM7aWYobyl7Y29uc3QgdD1vLmxlbmd0aDtsZXQgZT0wO2Zvcig7ZTx0Oyl7Y29uc3QgaT1vW2VdO2lmKGJhKGkpKWJyZWFrO2lmKDA9PT1pKWUrPTI7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGkpZm9yKGUrKztlPHQmJiJzdHJpbmciPT10eXBlb2Ygb1tlXTspZSsrO2Vsc2V7aWYoaT09PW4pcmV0dXJuIG9bZSsxXTtlKz0yfX19cmV0dXJuIG51bGx9KSh3aSgpLHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBZYT0iX19hbm5vdGF0aW9uc19fIixxYT0iX19wYXJhbWV0ZXJzX18iLFphPSJfX3Byb3BfX21ldGFkYXRhX18iO2Z1bmN0aW9uIFhhKHQsZSxuLG8saSl7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IGE9S2EoZSk7ZnVuY3Rpb24gciguLi50KXtpZih0aGlzIGluc3RhbmNlb2YgcilyZXR1cm4gYS5jYWxsKHRoaXMsLi4udCksdGhpcztjb25zdCBlPW5ldyByKC4uLnQpO3JldHVybiBmdW5jdGlvbiBuKGEpe2kmJmkoYSwuLi50KTtyZXR1cm4oYS5oYXNPd25Qcm9wZXJ0eShZYSk/YVtZYV06T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsWWEse3ZhbHVlOltdfSlbWWFdKS5wdXNoKGUpLG8mJm8oYSksYX19cmV0dXJuIG4mJihyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksci5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9dCxyLmFubm90YXRpb25DbHM9cixyfSkpfWZ1bmN0aW9uIEthKHQpe3JldHVybiBmdW5jdGlvbiBlKC4uLm4pe2lmKHQpe2NvbnN0IGU9dCguLi5uKTtmb3IoY29uc3QgdCBpbiBlKXRoaXNbdF09ZVt0XX19fWZ1bmN0aW9uIEphKHQsZSxuKXtyZXR1cm4gVm4oKCgpPT57Y29uc3Qgbz1LYShlKTtmdW5jdGlvbiBpKC4uLnQpe2lmKHRoaXMgaW5zdGFuY2VvZiBpKXJldHVybiBvLmFwcGx5KHRoaXMsdCksdGhpcztjb25zdCBlPW5ldyBpKC4uLnQpO3JldHVybiBuLmFubm90YXRpb249ZSxuO2Z1bmN0aW9uIG4odCxuLG8pe2NvbnN0IGk9dC5oYXNPd25Qcm9wZXJ0eShxYSk/dFtxYV06T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscWEse3ZhbHVlOltdfSlbcWFdO2Zvcig7aS5sZW5ndGg8PW87KWkucHVzaChudWxsKTtyZXR1cm4oaVtvXT1pW29dfHxbXSkucHVzaChlKSx0fX1yZXR1cm4gbiYmKGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxpLnByb3RvdHlwZS5uZ01ldGFkYXRhTmFtZT10LGkuYW5ub3RhdGlvbkNscz1pLGl9KSl9ZnVuY3Rpb24gUWEodCxlLG4sbyl7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IGk9S2EoZSk7ZnVuY3Rpb24gYSguLi50KXtpZih0aGlzIGluc3RhbmNlb2YgYSlyZXR1cm4gaS5hcHBseSh0aGlzLHQpLHRoaXM7Y29uc3QgZT1uZXcgYSguLi50KTtyZXR1cm4gZnVuY3Rpb24gbihpLGEpe2NvbnN0IHI9aS5jb25zdHJ1Y3RvcixzPXIuaGFzT3duUHJvcGVydHkoWmEpP3JbWmFdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFphLHt2YWx1ZTp7fX0pW1phXTtzW2FdPXMuaGFzT3duUHJvcGVydHkoYSkmJnNbYV18fFtdLHNbYV0udW5zaGlmdChlKSxvJiZvKGksYSwuLi50KX19cmV0dXJuIG4mJihhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksYS5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9dCxhLmFubm90YXRpb25DbHM9YSxhfSkpfWNvbnN0ICRhPShmdW5jdGlvbiB0cigpe3JldHVybiBKYSgiQXR0cmlidXRlIiwodD0+KHthdHRyaWJ1dGVOYW1lOnQsX19OR19FTEVNRU5UX0lEX186KCk9PkdhKHQpfSkpKX0pKCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBlcntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2Rlc2M9dCx0aGlzLm5nTWV0YWRhdGFOYW1lPSJJbmplY3Rpb25Ub2tlbiIsdGhpcy7JtXByb3Y9dm9pZCAwLCJudW1iZXIiPT10eXBlb2YgZT8oKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZfbihlLDAsIk9ubHkgbmVnYXRpdmUgbnVtYmVycyBhcmUgc3VwcG9ydGVkIGhlcmUiKSx0aGlzLl9fTkdfRUxFTUVOVF9JRF9fPWUpOnZvaWQgMCE9PWUmJih0aGlzLsm1cHJvdj1Tbih7dG9rZW46dGhpcyxwcm92aWRlZEluOmUucHJvdmlkZWRJbnx8InJvb3QiLGZhY3Rvcnk6ZS5mYWN0b3J5fSkpfXRvU3RyaW5nKCl7cmV0dXJuYEluamVjdGlvblRva2VuICR7dGhpcy5fZGVzY31gfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbmV3IGVyKCJBbmFseXplRm9yRW50cnlDb21wb25lbnRzIik7Y2xhc3MgbnJ7fWNvbnN0IG9yPVFhKCJDb250ZW50Q2hpbGRyZW4iLCgodCxlPXt9KT0+T2JqZWN0LmFzc2lnbih7c2VsZWN0b3I6dCxmaXJzdDohMSxpc1ZpZXdRdWVyeTohMSxkZXNjZW5kYW50czohMSxlbWl0RGlzdGluY3RDaGFuZ2VzT25seTp0cnVlfSxlKSksbnIpLGlyPVFhKCJDb250ZW50Q2hpbGQiLCgodCxlPXt9KT0+T2JqZWN0LmFzc2lnbih7c2VsZWN0b3I6dCxmaXJzdDohMCxpc1ZpZXdRdWVyeTohMSxkZXNjZW5kYW50czohMH0sZSkpLG5yKTtRYSgiVmlld0NoaWxkcmVuIiwoKHQsZT17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITAsZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6dHJ1ZX0sZSkpLG5yKTtjb25zdCBhcj1RYSgiVmlld0NoaWxkIiwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITB9LGUpKSxucik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwp2YXIgcnIsc3I7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBscih0KXtjb25zdCBlPVhuLm5nO2lmKGUmJmUuybVjb21waWxlckZhY2FkZSlyZXR1cm4gZS7JtWNvbXBpbGVyRmFjYWRlO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2NvbnNvbGUuZXJyb3IoYEpJVCBjb21waWxhdGlvbiBmYWlsZWQgZm9yICR7dC5raW5kfWAsdC50eXBlKTtsZXQgZT1gVGhlICR7dC5raW5kfSAnJHt0LnR5cGUubmFtZX0nIG5lZWRzIHRvIGJlIGNvbXBpbGVkIHVzaW5nIHRoZSBKSVQgY29tcGlsZXIsIGJ1dCAnQGFuZ3VsYXIvY29tcGlsZXInIGlzIG5vdCBhdmFpbGFibGUuXG5cbmA7dGhyb3cgMT09PXQudXNhZ2U/KGUrPWBUaGUgJHt0LmtpbmR9IGlzIHBhcnQgb2YgYSBsaWJyYXJ5IHRoYXQgaGFzIGJlZW4gcGFydGlhbGx5IGNvbXBpbGVkLlxuYCxlKz0iSG93ZXZlciwgdGhlIEFuZ3VsYXIgTGlua2VyIGhhcyBub3QgcHJvY2Vzc2VkIHRoZSBsaWJyYXJ5IHN1Y2ggdGhhdCBKSVQgY29tcGlsYXRpb24gaXMgdXNlZCBhcyBmYWxsYmFjay5cbiIsZSs9IlxuIixlKz0iSWRlYWxseSwgdGhlIGxpYnJhcnkgaXMgcHJvY2Vzc2VkIHVzaW5nIHRoZSBBbmd1bGFyIExpbmtlciB0byBiZWNvbWUgZnVsbHkgQU9UIGNvbXBpbGVkLlxuIik6ZSs9IkpJVCBjb21waWxhdGlvbiBpcyBkaXNjb3VyYWdlZCBmb3IgcHJvZHVjdGlvbiB1c2UtY2FzZXMhIENvbnNpZGVyIHVzaW5nIEFPVCBtb2RlIGluc3RlYWQuXG4iLGUrPSJBbHRlcm5hdGl2ZWx5LCB0aGUgSklUIGNvbXBpbGVyIHNob3VsZCBiZSBsb2FkZWQgYnkgYm9vdHN0cmFwcGluZyB1c2luZyAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci1keW5hbWljJyBvciAnQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyJyxcbiIsZSs9Im9yIG1hbnVhbGx5IHByb3ZpZGUgdGhlIGNvbXBpbGVyIHdpdGggJ2ltcG9ydCBcIkBhbmd1bGFyL2NvbXBpbGVyXCI7JyBiZWZvcmUgYm9vdHN0cmFwcGluZy4iLG5ldyBFcnJvcihlKX10aHJvdyBuZXcgRXJyb3IoIkpJVCBjb21waWxlciB1bmF2YWlsYWJsZSIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8hKGZ1bmN0aW9uKHQpe3RbdC5EaXJlY3RpdmU9MF09IkRpcmVjdGl2ZSIsdFt0LkNvbXBvbmVudD0xXT0iQ29tcG9uZW50Iix0W3QuSW5qZWN0YWJsZT0yXT0iSW5qZWN0YWJsZSIsdFt0LlBpcGU9M109IlBpcGUiLHRbdC5OZ01vZHVsZT00XT0iTmdNb2R1bGUifSkocnJ8fChycj17fSkpLChmdW5jdGlvbih0KXt0W3QuRW11bGF0ZWQ9MF09IkVtdWxhdGVkIix0W3QuTm9uZT0yXT0iTm9uZSIsdFt0LlNoYWRvd0RvbT0zXT0iU2hhZG93RG9tIn0pKHNyfHwoc3I9e30pKTtjb25zdCBjcj1GdW5jdGlvbjtmdW5jdGlvbiBkcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiBwcih0LGUpe3ZvaWQgMD09PWUmJihlPXQpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgbz10W25dO0FycmF5LmlzQXJyYXkobyk/KGU9PT10JiYoZT10LnNsaWNlKDAsbikpLHByKG8sZSkpOmUhPT10JiZlLnB1c2gobyl9cmV0dXJuIGV9ZnVuY3Rpb24gbXIodCxlKXt0LmZvckVhY2goKHQ9PkFycmF5LmlzQXJyYXkodCk/bXIodCxlKTplKHQpKSl9ZnVuY3Rpb24gdXIodCxlLG4pe2U+PXQubGVuZ3RoP3QucHVzaChuKTp0LnNwbGljZShlLDAsbil9ZnVuY3Rpb24gZnIodCxlKXtyZXR1cm4gZT49dC5sZW5ndGgtMT90LnBvcCgpOnQuc3BsaWNlKGUsMSlbMF19ZnVuY3Rpb24gZ3IodCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgbz0wO288dDtvKyspbi5wdXNoKGUpO3JldHVybiBufWZ1bmN0aW9uIGhyKHQsZSxuKXtsZXQgbz15cih0LGUpO3JldHVybiBvPj0wP3RbMXxvXT1uOihvPX5vLChmdW5jdGlvbiBpKHQsZSxuLG8pe25nRGV2TW9kZSYmQ24oZSx0Lmxlbmd0aCwiQ2FuJ3QgaW5zZXJ0IHBhc3QgYXJyYXkgZW5kLiIpO2xldCBpPXQubGVuZ3RoO2lmKGk9PWUpdC5wdXNoKG4sbyk7ZWxzZSBpZigxPT09aSl0LnB1c2gobyx0WzBdKSx0WzBdPW47ZWxzZXtmb3IoaS0tLHQucHVzaCh0W2ktMV0sdFtpXSk7aT5lOyl0W2ldPXRbaS0yXSxpLS07dFtlXT1uLHRbZSsxXT1vfX0pKHQsbyxlLG4pKSxvfWZ1bmN0aW9uIGJyKHQsZSl7Y29uc3Qgbj15cih0LGUpO2lmKG4+PTApcmV0dXJuIHRbMXxuXX1mdW5jdGlvbiB5cih0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSxvKXtuZ0Rldk1vZGUmJmduKEFycmF5LmlzQXJyYXkodCksITAsIkV4cGVjdGluZyBhbiBhcnJheSIpO2xldCBpPTAsYT10Lmxlbmd0aD4+bztmb3IoO2EhPT1pOyl7Y29uc3Qgbj1pKyhhLWk+PjEpLHI9dFtuPDxvXTtpZihlPT09cilyZXR1cm4gbjw8bztyPmU/YT1uOmk9bisxfXJldHVybn4oYTw8byl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCxlLDEpfWNvbnN0IF9yPS9eZnVuY3Rpb25ccytcUytcKFwpXHMqe1tcc1xTXStcLmFwcGx5XCh0aGlzLFxzKihhcmd1bWVudHN8KD86W14oKV0rXChcW1xdLCk/W14oKV0rXChhcmd1bWVudHNcKSlcKS8sQ3I9L15jbGFzc1xzK1tBLVphLXpcZCRfXSpccypleHRlbmRzXHMrW157XSt7LyxNcj0vXmNsYXNzXHMrW0EtWmEtelxkJF9dKlxzKmV4dGVuZHNccytbXntdK3tbXHNcU10qY29uc3RydWN0b3JccypcKC8sdnI9L15jbGFzc1xzK1tBLVphLXpcZCRfXSpccypleHRlbmRzXHMrW157XSt7W1xzXFNdKmNvbnN0cnVjdG9yXHMqXChcKVxzKntccypzdXBlclwoXC5cLlwuYXJndW1lbnRzXCkvO2NsYXNzIHhye2NvbnN0cnVjdG9yKHQpe3RoaXMuX3JlZmxlY3Q9dHx8WG4uUmVmbGVjdH1pc1JlZmxlY3Rpb25FbmFibGVkKCl7cmV0dXJuITB9ZmFjdG9yeSh0KXtyZXR1cm4oLi4uZSk9Pm5ldyB0KC4uLmUpfV96aXBUeXBlc0FuZEFubm90YXRpb25zKHQsZSl7bGV0IG47bj1ncih2b2lkIDA9PT10P2UubGVuZ3RoOnQubGVuZ3RoKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyluW29dPXZvaWQgMD09PXQ/W106dFtvXSYmdFtvXSE9T2JqZWN0P1t0W29dXTpbXSxlJiZudWxsIT1lW29dJiYobltvXT1uW29dLmNvbmNhdChlW29dKSk7cmV0dXJuIG59X293blBhcmFtZXRlcnModCxlKXtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gX3IudGVzdCh0KXx8dnIudGVzdCh0KXx8Q3IudGVzdCh0KSYmIU1yLnRlc3QodCl9KSh0LnRvU3RyaW5nKCkpKXJldHVybiBudWxsO2lmKHQucGFyYW1ldGVycyYmdC5wYXJhbWV0ZXJzIT09ZS5wYXJhbWV0ZXJzKXJldHVybiB0LnBhcmFtZXRlcnM7Y29uc3Qgbz10LmN0b3JQYXJhbWV0ZXJzO2lmKG8mJm8hPT1lLmN0b3JQYXJhbWV0ZXJzKXtjb25zdCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBvP28oKTpvLGU9dC5tYXAoKHQ9PnQmJnQudHlwZSkpLG49dC5tYXAoKHQ9PnQmJk9yKHQuZGVjb3JhdG9ycykpKTtyZXR1cm4gdGhpcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyhlLG4pfWNvbnN0IGk9dC5oYXNPd25Qcm9wZXJ0eShxYSkmJnRbcWFdLGE9dGhpcy5fcmVmbGVjdCYmdGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSYmdGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSgiZGVzaWduOnBhcmFtdHlwZXMiLHQpO3JldHVybiBhfHxpP3RoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMoYSxpKTpncih0Lmxlbmd0aCl9cGFyYW1ldGVycyh0KXtpZighZHIodCkpcmV0dXJuW107Y29uc3QgZT1Qcih0KTtsZXQgbj10aGlzLl9vd25QYXJhbWV0ZXJzKHQsZSk7cmV0dXJuIG58fGU9PT1PYmplY3R8fChuPXRoaXMucGFyYW1ldGVycyhlKSksbnx8W119X293bkFubm90YXRpb25zKHQsZSl7aWYodC5hbm5vdGF0aW9ucyYmdC5hbm5vdGF0aW9ucyE9PWUuYW5ub3RhdGlvbnMpe2xldCBlPXQuYW5ub3RhdGlvbnM7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuYW5ub3RhdGlvbnMmJihlPWUuYW5ub3RhdGlvbnMpLGV9cmV0dXJuIHQuZGVjb3JhdG9ycyYmdC5kZWNvcmF0b3JzIT09ZS5kZWNvcmF0b3JzP09yKHQuZGVjb3JhdG9ycyk6dC5oYXNPd25Qcm9wZXJ0eShZYSk/dFtZYV06bnVsbH1hbm5vdGF0aW9ucyh0KXtpZighZHIodCkpcmV0dXJuW107Y29uc3QgZT1Qcih0KSxuPXRoaXMuX293bkFubm90YXRpb25zKHQsZSl8fFtdO3JldHVybihlIT09T2JqZWN0P3RoaXMuYW5ub3RhdGlvbnMoZSk6W10pLmNvbmNhdChuKX1fb3duUHJvcE1ldGFkYXRhKHQsZSl7aWYodC5wcm9wTWV0YWRhdGEmJnQucHJvcE1ldGFkYXRhIT09ZS5wcm9wTWV0YWRhdGEpe2xldCBlPXQucHJvcE1ldGFkYXRhO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3BNZXRhZGF0YSYmKGU9ZS5wcm9wTWV0YWRhdGEpLGV9aWYodC5wcm9wRGVjb3JhdG9ycyYmdC5wcm9wRGVjb3JhdG9ycyE9PWUucHJvcERlY29yYXRvcnMpe2NvbnN0IGU9dC5wcm9wRGVjb3JhdG9ycyxuPXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT57blt0XT1PcihlW3RdKX0pKSxufXJldHVybiB0Lmhhc093blByb3BlcnR5KFphKT90W1phXTpudWxsfXByb3BNZXRhZGF0YSh0KXtpZighZHIodCkpcmV0dXJue307Y29uc3QgZT1Qcih0KSxuPXt9O2lmKGUhPT1PYmplY3Qpe2NvbnN0IHQ9dGhpcy5wcm9wTWV0YWRhdGEoZSk7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e25bZV09dFtlXX0pKX1jb25zdCBvPXRoaXMuX293blByb3BNZXRhZGF0YSh0LGUpO3JldHVybiBvJiZPYmplY3Qua2V5cyhvKS5mb3JFYWNoKCh0PT57Y29uc3QgZT1bXTtuLmhhc093blByb3BlcnR5KHQpJiZlLnB1c2goLi4ublt0XSksZS5wdXNoKC4uLm9bdF0pLG5bdF09ZX0pKSxufW93blByb3BNZXRhZGF0YSh0KXtyZXR1cm4gZHIodCkmJnRoaXMuX293blByb3BNZXRhZGF0YSh0LFByKHQpKXx8e319aGFzTGlmZWN5Y2xlSG9vayh0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgY3ImJmUgaW4gdC5wcm90b3R5cGV9Z3VhcmRzKHQpe3JldHVybnt9fWdldHRlcih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwicmV0dXJuIG8uIit0KyI7Iil9c2V0dGVyKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oIm8iLCJ2IiwicmV0dXJuIG8uIit0KyIgPSB2OyIpfW1ldGhvZCh0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwiYXJncyIsYGlmICghby4ke3R9KSB0aHJvdyBuZXcgRXJyb3IoJyIke3R9IiBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgcmV0dXJuIG8uJHt0fS5hcHBseShvLCBhcmdzKTtgKX1pbXBvcnRVcmkodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZ0LmZpbGVQYXRoP3QuZmlsZVBhdGg6YC4vJHtLZSh0KX1gfXJlc291cmNlVXJpKHQpe3JldHVybmAuLyR7S2UodCl9YH1yZXNvbHZlSWRlbnRpZmllcih0LGUsbixvKXtyZXR1cm4gb31yZXNvbHZlRW51bSh0LGUpe3JldHVybiB0W2VdfX1mdW5jdGlvbiBPcih0KXtyZXR1cm4gdD90Lm1hcCgodD0+bmV3KDAsdC50eXBlLmFubm90YXRpb25DbHMpKC4uLnQuYXJncz90LmFyZ3M6W10pKSk6W119ZnVuY3Rpb24gUHIodCl7Y29uc3QgZT10LnByb3RvdHlwZT9PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpOm51bGw7cmV0dXJuKGU/ZS5jb25zdHJ1Y3RvcjpudWxsKXx8T2JqZWN0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB3cj17fSxrcj0vXG4vZ20sU3I9Il9fc291cmNlIixEcj1aZSh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6WmV9KTtsZXQgUnI7ZnVuY3Rpb24gRXIodCl7Y29uc3QgZT1ScjtyZXR1cm4gUnI9dCxlfWZ1bmN0aW9uIEFyKHQsZT1Ibi5EZWZhdWx0KXtpZih2b2lkIDA9PT1Scil0aHJvdyBuZXcgRXJyb3IoImluamVjdCgpIG11c3QgYmUgY2FsbGVkIGZyb20gYW4gaW5qZWN0aW9uIGNvbnRleHQiKTtyZXR1cm4gbnVsbD09PVJyP0JuKHQsdm9pZCAwLGUpOlJyLmdldCh0LGUmSG4uT3B0aW9uYWw/bnVsbDp2b2lkIDAsZSl9ZnVuY3Rpb24gVHIodCxlPUhuLkRlZmF1bHQpe3JldHVybigoZnVuY3Rpb24gbigpe3JldHVybiBGbn0pKCl8fEFyKSh0bih0KSxlKX1mdW5jdGlvbiBOcih0KXtjb25zdCBlPW5nRGV2TW9kZT9gVGhpcyBjb25zdHJ1Y3RvciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEFuZ3VsYXIgRGVwZW5kZW5jeSBJbmplY3Rpb24gYmVjYXVzZSBpdHMgZGVwZW5kZW5jeSBhdCBpbmRleCAke3R9IG9mIHRoZSBwYXJhbWV0ZXIgbGlzdCBpcyBpbnZhbGlkLlxuVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBkZXBlbmRlbmN5IHR5cGUgaXMgYSBwcmltaXRpdmUgbGlrZSBhIHN0cmluZyBvciBpZiBhbiBhbmNlc3RvciBvZiB0aGlzIGNsYXNzIGlzIG1pc3NpbmcgYW4gQW5ndWxhciBkZWNvcmF0b3IuXG5cblBsZWFzZSBjaGVjayB0aGF0IDEpIHRoZSB0eXBlIGZvciB0aGUgcGFyYW1ldGVyIGF0IGluZGV4ICR7dH0gaXMgY29ycmVjdCBhbmQgMikgdGhlIGNvcnJlY3QgQW5ndWxhciBkZWNvcmF0b3JzIGFyZSBkZWZpbmVkIGZvciB0aGlzIGNsYXNzIGFuZCBpdHMgYW5jZXN0b3JzLmA6ImludmFsaWQiO3Rocm93IG5ldyBFcnJvcihlKX1jb25zdCB6cj1UcjtmdW5jdGlvbiBJcih0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBvPXRuKHRbbl0pO2lmKEFycmF5LmlzQXJyYXkobykpe2lmKDA9PT1vLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkFyZ3VtZW50cyBhcnJheSBtdXN0IGhhdmUgYXJndW1lbnRzLiIpO2xldCB0LG49SG4uRGVmYXVsdDtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3QgaT1vW2VdLGE9aS5fX05HX0RJX0ZMQUdfXzsibnVtYmVyIj09dHlwZW9mIGE/LTE9PT1hP3Q9aS50b2tlbjpufD1hOnQ9aX1lLnB1c2goVHIodCxuKSl9ZWxzZSBlLnB1c2goVHIobykpfXJldHVybiBlfWZ1bmN0aW9uIEhyKHQsZSl7cmV0dXJuIHQuX19OR19ESV9GTEFHX189ZSx0LnByb3RvdHlwZS5fX05HX0RJX0ZMQUdfXz1lLHR9ZnVuY3Rpb24gRnIodCxlLG4sbyl7Y29uc3QgaT10Lm5nVGVtcFRva2VuUGF0aDt0aHJvdyBlW1NyXSYmaS51bnNoaWZ0KGVbU3JdKSx0Lm1lc3NhZ2U9KGZ1bmN0aW9uIGEodCxlLG4sbz1udWxsKXt0PXQmJiJcbiI9PT10LmNoYXJBdCgwKSYmIsm1Ij09dC5jaGFyQXQoMSk/dC5zdWJzdHIoMik6dDtsZXQgaT1LZShlKTtpZihBcnJheS5pc0FycmF5KGUpKWk9ZS5tYXAoS2UpLmpvaW4oIiAtPiAiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSl7bGV0IHQ9W107Zm9yKGxldCBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7bGV0IG89ZVtuXTt0LnB1c2gobisiOiIrKCJzdHJpbmciPT10eXBlb2Ygbz9KU09OLnN0cmluZ2lmeShvKTpLZShvKSkpfWk9YHske3Quam9pbigiLCAiKX19YH1yZXR1cm5gJHtufSR7bz8iKCIrbysiKSI6IiJ9WyR7aX1dOiAke3QucmVwbGFjZShrciwiXG4gICIpfWB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoIlxuIit0Lm1lc3NhZ2UsaSxuLG8pLHQubmdUb2tlblBhdGg9aSx0Lm5nVGVtcFRva2VuUGF0aD1udWxsLHR9Y29uc3QgTHI9SHIoSmEoIkluamVjdCIsKHQ9Pih7dG9rZW46dH0pKSksLTEpLEJyPUhyKEphKCJPcHRpb25hbCIpLDgpLFZyPUhyKEphKCJTZWxmIiksMiksVXI9SHIoSmEoIlNraXBTZWxmIiksNCksanI9SHIoSmEoIkhvc3QiKSwxKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBXcj1udWxsO2Z1bmN0aW9uIEdyKCl7cmV0dXJuIFdyPVdyfHxuZXcgeHJ9ZnVuY3Rpb24gWXIodCl7cmV0dXJuIHFyKEdyKCkucGFyYW1ldGVycyh0KSl9ZnVuY3Rpb24gcXIodCl7cmV0dXJuIHQubWFwKCh0PT4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPXt0b2tlbjpudWxsLGF0dHJpYnV0ZTpudWxsLGhvc3Q6ITEsb3B0aW9uYWw6ITEsc2VsZjohMSxza2lwU2VsZjohMX07aWYoQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+MClmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10W25dO2lmKHZvaWQgMD09PW8pY29udGludWU7Y29uc3QgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7aWYobyBpbnN0YW5jZW9mIEJyfHwiT3B0aW9uYWwiPT09aS5uZ01ldGFkYXRhTmFtZSllLm9wdGlvbmFsPSEwO2Vsc2UgaWYobyBpbnN0YW5jZW9mIFVyfHwiU2tpcFNlbGYiPT09aS5uZ01ldGFkYXRhTmFtZSllLnNraXBTZWxmPSEwO2Vsc2UgaWYobyBpbnN0YW5jZW9mIFZyfHwiU2VsZiI9PT1pLm5nTWV0YWRhdGFOYW1lKWUuc2VsZj0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiBqcnx8Ikhvc3QiPT09aS5uZ01ldGFkYXRhTmFtZSllLmhvc3Q9ITA7ZWxzZSBpZihvIGluc3RhbmNlb2YgTHIpZS50b2tlbj1vLnRva2VuO2Vsc2UgaWYobyBpbnN0YW5jZW9mICRhKXtpZih2b2lkIDA9PT1vLmF0dHJpYnV0ZU5hbWUpdGhyb3cgbmV3IEVycm9yKCJBdHRyaWJ1dGUgbmFtZSBtdXN0IGJlIGRlZmluZWQuIik7ZS5hdHRyaWJ1dGU9by5hdHRyaWJ1dGVOYW1lfWVsc2UgZS50b2tlbj1vfWVsc2UgZS50b2tlbj12b2lkIDA9PT10fHxBcnJheS5pc0FycmF5KHQpJiYwPT09dC5sZW5ndGg/bnVsbDp0O3JldHVybiBlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpKSl9ZnVuY3Rpb24gWnIodCl7Y29uc3QgZT1bXSxuPW5ldyBNYXA7ZnVuY3Rpb24gbyhlKXtsZXQgbz1uLmdldChlKTtpZighbyl7Y29uc3QgaT10KGUpO24uc2V0KGUsbz1pLnRoZW4oUXIpKX1yZXR1cm4gb31yZXR1cm4gWHIuZm9yRWFjaCgoKHQsbik9Pntjb25zdCBpPVtdO3QudGVtcGxhdGVVcmwmJmkucHVzaChvKHQudGVtcGxhdGVVcmwpLnRoZW4oKGU9Pnt0LnRlbXBsYXRlPWV9KSkpO2NvbnN0IGE9dC5zdHlsZVVybHMscj10LnN0eWxlc3x8KHQuc3R5bGVzPVtdKSxzPXQuc3R5bGVzLmxlbmd0aDthJiZhLmZvckVhY2goKChlLG4pPT57ci5wdXNoKCIiKSxpLnB1c2gobyhlKS50aGVuKChvPT57cltzK25dPW8sYS5zcGxpY2UoYS5pbmRleE9mKGUpLDEpLDA9PWEubGVuZ3RoJiYodC5zdHlsZVVybHM9dm9pZCAwKX0pKSl9KSk7Y29uc3QgbD1Qcm9taXNlLmFsbChpKS50aGVuKCgoKT0+KGZ1bmN0aW9uIHQoZSl7S3IuZGVsZXRlKGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKG4pKSk7ZS5wdXNoKGwpfSkpLChmdW5jdGlvbiBpKCl7Y29uc3QgdD1YcjtyZXR1cm4gWHI9bmV3IE1hcCx0fSkoKSxQcm9taXNlLmFsbChlKS50aGVuKCgoKT0+e30pKX1sZXQgWHI9bmV3IE1hcDtjb25zdCBLcj1uZXcgU2V0O2Z1bmN0aW9uIEpyKHQpe3JldHVybiEhKHQudGVtcGxhdGVVcmwmJiF0Lmhhc093blByb3BlcnR5KCJ0ZW1wbGF0ZSIpfHx0LnN0eWxlVXJscyYmdC5zdHlsZVVybHMubGVuZ3RoKX1mdW5jdGlvbiBRcih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnRleHQoKX1sZXQgJHIsdHM7ZnVuY3Rpb24gZXMoKXtpZih2b2lkIDA9PT0kciYmKCRyPW51bGwsWG4udHJ1c3RlZFR5cGVzKSl0cnl7JHI9WG4udHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeSgiYW5ndWxhciIse2NyZWF0ZUhUTUw6dD0+dCxjcmVhdGVTY3JpcHQ6dD0+dCxjcmVhdGVTY3JpcHRVUkw6dD0+dH0pfWNhdGNoKHQpe31yZXR1cm4gJHJ9ZnVuY3Rpb24gbnModCl7dmFyIGU7cmV0dXJuKG51bGw9PT0oZT1lcygpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jcmVhdGVIVE1MKHQpKXx8dH1mdW5jdGlvbiBvcyguLi50KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoIm5ld1RydXN0ZWRGdW5jdGlvbkZvckRldiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHByb2R1Y3Rpb24iKTtpZighWG4udHJ1c3RlZFR5cGVzKXJldHVybiBuZXcgRnVuY3Rpb24oLi4udCk7Y29uc3QgZT1gKGZ1bmN0aW9uIGFub255bW91cygke3Quc2xpY2UoMCwtMSkuam9pbigiLCIpfVxuKSB7ICR7dFt0Lmxlbmd0aC0xXX1cbn0pYCxuPVhuLmV2YWwoKGZ1bmN0aW9uIG8odCl7dmFyIGU7cmV0dXJuKG51bGw9PT0oZT1lcygpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jcmVhdGVTY3JpcHQodCkpfHx0fSkoZSkpO3JldHVybiB2b2lkIDA9PT1uLmJpbmQ/bmV3IEZ1bmN0aW9uKC4uLnQpOihuLnRvU3RyaW5nPSgpPT5lLG4uYmluZChYbikpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBpcygpe2lmKHZvaWQgMD09PXRzJiYodHM9bnVsbCxYbi50cnVzdGVkVHlwZXMpKXRyeXt0cz1Ybi50cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJhbmd1bGFyI3Vuc2FmZS1ieXBhc3MiLHtjcmVhdGVIVE1MOnQ9PnQsY3JlYXRlU2NyaXB0OnQ9PnQsY3JlYXRlU2NyaXB0VVJMOnQ9PnR9KX1jYXRjaCh0KXt9cmV0dXJuIHRzfWZ1bmN0aW9uIGFzKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9aXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlSFRNTCh0KSl8fHR9ZnVuY3Rpb24gcnModCl7dmFyIGU7cmV0dXJuKG51bGw9PT0oZT1pcygpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jcmVhdGVTY3JpcHQodCkpfHx0fWZ1bmN0aW9uIHNzKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9aXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0VVJMKHQpKXx8dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbHN7Y29uc3RydWN0b3IodCl7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5PXR9dG9TdHJpbmcoKXtyZXR1cm5gU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09YmluZGluZzogJHt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHl9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgfX1jbGFzcyBjcyBleHRlbmRzIGxze2dldFR5cGVOYW1lKCl7cmV0dXJuIkhUTUwifX1jbGFzcyBkcyBleHRlbmRzIGxze2dldFR5cGVOYW1lKCl7cmV0dXJuIlN0eWxlIn19Y2xhc3MgcHMgZXh0ZW5kcyBsc3tnZXRUeXBlTmFtZSgpe3JldHVybiJTY3JpcHQifX1jbGFzcyBtcyBleHRlbmRzIGxze2dldFR5cGVOYW1lKCl7cmV0dXJuIlVSTCJ9fWNsYXNzIHVzIGV4dGVuZHMgbHN7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iUmVzb3VyY2VVUkwifX1mdW5jdGlvbiBmcyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGxzP3QuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTp0fWZ1bmN0aW9uIGdzKHQsZSl7Y29uc3Qgbj1ocyh0KTtpZihudWxsIT1uJiZuIT09ZSl7aWYoIlJlc291cmNlVVJMIj09PW4mJiJVUkwiPT09ZSlyZXR1cm4hMDt0aHJvdyBuZXcgRXJyb3IoYFJlcXVpcmVkIGEgc2FmZSAke2V9LCBnb3QgYSAke259IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKX1yZXR1cm4gbj09PWV9ZnVuY3Rpb24gaHModCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBscyYmdC5nZXRUeXBlTmFtZSgpfHxudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gYnModCl7Y29uc3QgZT1uZXcgX3ModCk7cmV0dXJuKGZ1bmN0aW9uIG4oKXt0cnl7cmV0dXJuISEobmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhucygiIiksInRleHQvaHRtbCIpfWNhdGNoKHQpe3JldHVybiExfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSgpP25ldyB5cyhlKTplfWNsYXNzIHlze2NvbnN0cnVjdG9yKHQpe3RoaXMuaW5lcnREb2N1bWVudEhlbHBlcj10fWdldEluZXJ0Qm9keUVsZW1lbnQodCl7dD0iPGJvZHk+PHJlbW92ZT48L3JlbW92ZT4iK3Q7dHJ5e2NvbnN0IGU9KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcobnModCksInRleHQvaHRtbCIpLmJvZHk7cmV0dXJuIG51bGw9PT1lP3RoaXMuaW5lcnREb2N1bWVudEhlbHBlci5nZXRJbmVydEJvZHlFbGVtZW50KHQpOihlLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCksZSl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fX1jbGFzcyBfc3tjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLmRlZmF1bHREb2M9dCx0aGlzLmluZXJ0RG9jdW1lbnQ9dGhpcy5kZWZhdWx0RG9jLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgic2FuaXRpemF0aW9uLWluZXJ0IiksbnVsbD09dGhpcy5pbmVydERvY3VtZW50LmJvZHkpe2NvbnN0IHQ9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImh0bWwiKTt0aGlzLmluZXJ0RG9jdW1lbnQuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9keSIpO3QuYXBwZW5kQ2hpbGQoZSl9fWdldEluZXJ0Qm9keUVsZW1lbnQodCl7Y29uc3QgZT10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtpZigiY29udGVudCJpbiBlKXJldHVybiBlLmlubmVySFRNTD1ucyh0KSxlO2NvbnN0IG49dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKTtyZXR1cm4gbi5pbm5lckhUTUw9bnModCksdGhpcy5kZWZhdWx0RG9jLmRvY3VtZW50TW9kZSYmdGhpcy5zdHJpcEN1c3RvbU5zQXR0cnMobiksbn1zdHJpcEN1c3RvbU5zQXR0cnModCl7Y29uc3QgZT10LmF0dHJpYnV0ZXM7Zm9yKGxldCBuPWUubGVuZ3RoLTE7MDxuO24tLSl7Y29uc3Qgbz1lLml0ZW0obikubmFtZTsieG1sbnM6bnMxIiE9PW8mJjAhPT1vLmluZGV4T2YoIm5zMToiKXx8dC5yZW1vdmVBdHRyaWJ1dGUobyl9bGV0IG49dC5maXJzdENoaWxkO2Zvcig7bjspbi5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0aGlzLnN0cmlwQ3VzdG9tTnNBdHRycyhuKSxuPW4ubmV4dFNpYmxpbmd9fWNvbnN0IENzPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHB8dGVsfGZpbGV8c21zKTp8W14mOi8/I10qKD86Wy8/I118JCkpL2dpLE1zPS9eZGF0YTooPzppbWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkrXC9dKz0qJC9pO2Z1bmN0aW9uIHZzKHQpe3JldHVybih0PVN0cmluZyh0KSkubWF0Y2goQ3MpfHx0Lm1hdGNoKE1zKT90OigoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmNvbnNvbGUud2FybihgV0FSTklORzogc2FuaXRpemluZyB1bnNhZmUgVVJMIHZhbHVlICR7dH0gKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApLCJ1bnNhZmU6Iit0KX1mdW5jdGlvbiB4cyh0KXtyZXR1cm4odD1TdHJpbmcodCkpLnNwbGl0KCIsIikubWFwKCh0PT52cyh0LnRyaW0oKSkpKS5qb2luKCIsICIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBPcyh0KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIG9mIHQuc3BsaXQoIiwiKSllW25dPSEwO3JldHVybiBlfWZ1bmN0aW9uIFBzKC4uLnQpe2NvbnN0IGU9e307Zm9yKGNvbnN0IG4gb2YgdClmb3IoY29uc3QgdCBpbiBuKW4uaGFzT3duUHJvcGVydHkodCkmJihlW3RdPSEwKTtyZXR1cm4gZX1jb25zdCB3cz1PcygiYXJlYSxicixjb2wsaHIsaW1nLHdiciIpLGtzPU9zKCJjb2xncm91cCxkZCxkdCxsaSxwLHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRyIiksU3M9T3MoInJwLHJ0IiksRHM9UHMoU3Msa3MpLFJzPVBzKGtzLE9zKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxmaWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFpbixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIpKSxFcz1QcyhTcyxPcygiYSxhYmJyLGFjcm9ueW0sYXVkaW8sYixiZGksYmRvLGJpZyxicixjaXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGksaW1nLGlucyxrYmQsbGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNvdXJjZSxzcGFuLHN0cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFyLHZpZGVvIikpLEFzPVBzKHdzLFJzLEVzLERzKSxUcz1PcygiYmFja2dyb3VuZCxjaXRlLGhyZWYsaXRlbXR5cGUsbG9uZ2Rlc2MscG9zdGVyLHNyYyx4bGluazpocmVmIiksTnM9T3MoInNyY3NldCIpLHpzPU9zKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzdGFydCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsdmFsaWduLHZhbHVlLHZzcGFjZSx3aWR0aCIpLElzPU9zKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsYXJpYS1hdG9taWMsYXJpYS1hdXRvY29tcGxldGUsYXJpYS1idXN5LGFyaWEtY2hlY2tlZCxhcmlhLWNvbGNvdW50LGFyaWEtY29saW5kZXgsYXJpYS1jb2xzcGFuLGFyaWEtY29udHJvbHMsYXJpYS1jdXJyZW50LGFyaWEtZGVzY3JpYmVkYnksYXJpYS1kZXRhaWxzLGFyaWEtZGlzYWJsZWQsYXJpYS1kcm9wZWZmZWN0LGFyaWEtZXJyb3JtZXNzYWdlLGFyaWEtZXhwYW5kZWQsYXJpYS1mbG93dG8sYXJpYS1ncmFiYmVkLGFyaWEtaGFzcG9wdXAsYXJpYS1oaWRkZW4sYXJpYS1pbnZhbGlkLGFyaWEta2V5c2hvcnRjdXRzLGFyaWEtbGFiZWwsYXJpYS1sYWJlbGxlZGJ5LGFyaWEtbGV2ZWwsYXJpYS1saXZlLGFyaWEtbW9kYWwsYXJpYS1tdWx0aWxpbmUsYXJpYS1tdWx0aXNlbGVjdGFibGUsYXJpYS1vcmllbnRhdGlvbixhcmlhLW93bnMsYXJpYS1wbGFjZWhvbGRlcixhcmlhLXBvc2luc2V0LGFyaWEtcHJlc3NlZCxhcmlhLXJlYWRvbmx5LGFyaWEtcmVsZXZhbnQsYXJpYS1yZXF1aXJlZCxhcmlhLXJvbGVkZXNjcmlwdGlvbixhcmlhLXJvd2NvdW50LGFyaWEtcm93aW5kZXgsYXJpYS1yb3dzcGFuLGFyaWEtc2VsZWN0ZWQsYXJpYS1zZXRzaXplLGFyaWEtc29ydCxhcmlhLXZhbHVlbWF4LGFyaWEtdmFsdWVtaW4sYXJpYS12YWx1ZW5vdyxhcmlhLXZhbHVldGV4dCIpLEhzPVBzKFRzLE5zLHpzLElzKSxGcz1Pcygic2NyaXB0LHN0eWxlLHRlbXBsYXRlIik7Y2xhc3MgTHN7Y29uc3RydWN0b3IoKXt0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMSx0aGlzLmJ1Zj1bXX1zYW5pdGl6ZUNoaWxkcmVuKHQpe2xldCBlPXQuZmlyc3RDaGlsZCxuPSEwO2Zvcig7ZTspaWYoZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFP249dGhpcy5zdGFydEVsZW1lbnQoZSk6ZS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP3RoaXMuY2hhcnMoZS5ub2RlVmFsdWUpOnRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLG4mJmUuZmlyc3RDaGlsZCllPWUuZmlyc3RDaGlsZDtlbHNlIGZvcig7ZTspe2Uubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmdGhpcy5lbmRFbGVtZW50KGUpO2xldCB0PXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGUsZS5uZXh0U2libGluZyk7aWYodCl7ZT10O2JyZWFrfWU9dGhpcy5jaGVja0Nsb2JiZXJlZEVsZW1lbnQoZSxlLnBhcmVudE5vZGUpfXJldHVybiB0aGlzLmJ1Zi5qb2luKCIiKX1zdGFydEVsZW1lbnQodCl7Y29uc3QgZT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIUFzLmhhc093blByb3BlcnR5KGUpKXJldHVybiB0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCwhRnMuaGFzT3duUHJvcGVydHkoZSk7dGhpcy5idWYucHVzaCgiPCIpLHRoaXMuYnVmLnB1c2goZSk7Y29uc3Qgbj10LmF0dHJpYnV0ZXM7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IGU9bi5pdGVtKHQpLG89ZS5uYW1lLGk9by50b0xvd2VyQ2FzZSgpO2lmKCFIcy5oYXNPd25Qcm9wZXJ0eShpKSl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITA7Y29udGludWV9bGV0IGE9ZS52YWx1ZTtUc1tpXSYmKGE9dnMoYSkpLE5zW2ldJiYoYT14cyhhKSksdGhpcy5idWYucHVzaCgiICIsbywnPSInLFVzKGEpLCciJyl9cmV0dXJuIHRoaXMuYnVmLnB1c2goIj4iKSwhMH1lbmRFbGVtZW50KHQpe2NvbnN0IGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO0FzLmhhc093blByb3BlcnR5KGUpJiYhd3MuaGFzT3duUHJvcGVydHkoZSkmJih0aGlzLmJ1Zi5wdXNoKCI8LyIpLHRoaXMuYnVmLnB1c2goZSksdGhpcy5idWYucHVzaCgiPiIpKX1jaGFycyh0KXt0aGlzLmJ1Zi5wdXNoKFVzKHQpKX1jaGVja0Nsb2JiZXJlZEVsZW1lbnQodCxlKXtpZihlJiYodC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSk9PT1Ob2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSl0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgY2xvYmJlcmVkOiAke3Qub3V0ZXJIVE1MfWApO3JldHVybiBlfX1jb25zdCBCcz0vW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdL2csVnM9LyhbXlwjLX4gfCFdKS9nO2Z1bmN0aW9uIFVzKHQpe3JldHVybiB0LnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKEJzLChmdW5jdGlvbih0KXtyZXR1cm4iJiMiKygxMDI0Kih0LmNoYXJDb2RlQXQoMCktNTUyOTYpKyh0LmNoYXJDb2RlQXQoMSktNTYzMjApKzY1NTM2KSsiOyJ9KSkucmVwbGFjZShWcywoZnVuY3Rpb24odCl7cmV0dXJuIiYjIit0LmNoYXJDb2RlQXQoMCkrIjsifSkpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWxldCBqcztmdW5jdGlvbiBXcyh0LGUpe2xldCBuPW51bGw7dHJ5e2pzPWpzfHxicyh0KTtsZXQgbz1lP1N0cmluZyhlKToiIjtuPWpzLmdldEluZXJ0Qm9keUVsZW1lbnQobyk7bGV0IGk9NSxhPW87ZG97aWYoMD09PWkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBpbnB1dCBpcyB1bnN0YWJsZSIpO2ktLSxvPWEsYT1uLmlubmVySFRNTCxuPWpzLmdldEluZXJ0Qm9keUVsZW1lbnQobyl9d2hpbGUobyE9PWEpO2NvbnN0IHI9bmV3IExzLHM9ci5zYW5pdGl6ZUNoaWxkcmVuKEdzKG4pfHxuKTtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnIuc2FuaXRpemVkU29tZXRoaW5nJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgSFRNTCBzdHJpcHBlZCBzb21lIGNvbnRlbnQsIHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzIiksbnMocyl9ZmluYWxseXtpZihuKXtjb25zdCB0PUdzKG4pfHxuO2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9fX1mdW5jdGlvbiBHcyh0KXtyZXR1cm4iY29udGVudCJpbiB0JiYoZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYiVEVNUExBVEUiPT09dC5ub2RlTmFtZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KT90LmNvbnRlbnQ6bnVsbH12YXIgWXM7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBxcyh0KXtjb25zdCBlPWVsKCk7cmV0dXJuIGU/YXMoZS5zYW5pdGl6ZShZcy5IVE1MLHQpfHwiIik6Z3ModCwiSFRNTCIpP2FzKGZzKHQpKTpXcyhpaSgpLHJuKHQpKX1mdW5jdGlvbiBacyh0KXtjb25zdCBlPWVsKCk7cmV0dXJuIGU/ZS5zYW5pdGl6ZShZcy5TVFlMRSx0KXx8IiI6Z3ModCwiU3R5bGUiKT9mcyh0KTpybih0KX1mdW5jdGlvbiBYcyh0KXtjb25zdCBlPWVsKCk7cmV0dXJuIGU/ZS5zYW5pdGl6ZShZcy5VUkwsdCl8fCIiOmdzKHQsIlVSTCIpP2ZzKHQpOnZzKHJuKHQpKX1mdW5jdGlvbiBLcyh0KXtjb25zdCBlPWVsKCk7aWYoZSlyZXR1cm4gc3MoZS5zYW5pdGl6ZShZcy5SRVNPVVJDRV9VUkwsdCl8fCIiKTtpZihncyh0LCJSZXNvdXJjZVVSTCIpKXJldHVybiBzcyhmcyh0KSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKX1mdW5jdGlvbiBKcyh0KXtjb25zdCBlPWVsKCk7aWYoZSlyZXR1cm4gcnMoZS5zYW5pdGl6ZShZcy5TQ1JJUFQsdCl8fCIiKTtpZihncyh0LCJTY3JpcHQiKSlyZXR1cm4gcnMoZnModCkpO3Rocm93IG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3JpcHQgY29udGV4dCIpfWZ1bmN0aW9uIFFzKHQpe2lmKG5nRGV2TW9kZSYmKCFBcnJheS5pc0FycmF5KHQpfHwhQXJyYXkuaXNBcnJheSh0LnJhdyl8fDEhPT10Lmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGludGVycG9sYXRpb24gaW4gdHJ1c3RlZCBIVE1MIGNvbnN0YW50OiAke3Quam9pbigiPyIpfWApO3JldHVybiBucyh0WzBdKX1mdW5jdGlvbiAkcyh0KXtpZihuZ0Rldk1vZGUmJighQXJyYXkuaXNBcnJheSh0KXx8IUFycmF5LmlzQXJyYXkodC5yYXcpfHwxIT09dC5sZW5ndGgpKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBpbnRlcnBvbGF0aW9uIGluIHRydXN0ZWQgVVJMIGNvbnN0YW50OiAke3Quam9pbigiPyIpfWApO3JldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9ZXMoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0VVJMKHQpKXx8dH0pKHRbMF0pfWZ1bmN0aW9uIHRsKHQsZSxuKXtyZXR1cm4oZnVuY3Rpb24gbyh0LGUpe3JldHVybiJzcmMiPT09ZSYmKCJlbWJlZCI9PT10fHwiZnJhbWUiPT09dHx8ImlmcmFtZSI9PT10fHwibWVkaWEiPT09dHx8InNjcmlwdCI9PT10KXx8ImhyZWYiPT09ZSYmKCJiYXNlIj09PXR8fCJsaW5rIj09PXQpP0tzOlhzfSkoZSxuKSh0KX1mdW5jdGlvbiBlbCgpe2NvbnN0IHQ9eGkoKTtyZXR1cm4gdCYmdFsxMl19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG5sKHQpe2xldCBlPXJsKHQpO2lmKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IG49ZTtsZXQgbyxpLGE7aWYoKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQmJnQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IuybVjbXB9KSh0KSl7aWYobz1kbChuLHQpLC0xPT1vKXRocm93IG5ldyBFcnJvcigiVGhlIHByb3ZpZGVkIGNvbXBvbmVudCB3YXMgbm90IGZvdW5kIGluIHRoZSBhcHBsaWNhdGlvbiIpO2k9dH1lbHNlIGlmKChmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0LmNvbnN0cnVjdG9yJiZ0LmNvbnN0cnVjdG9yLsm1ZGlyfSkodCkpe2lmKG89KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj10WzFdLmZpcnN0Q2hpbGQ7Zm9yKDtuOyl7Y29uc3Qgbz1uLmRpcmVjdGl2ZUVuZDtmb3IobGV0IGk9bi5kaXJlY3RpdmVTdGFydDtpPG87aSsrKWlmKHRbaV09PT1lKXJldHVybiBuLmluZGV4O249Y2wobil9cmV0dXJuLTF9KShuLHQpLC0xPT1vKXRocm93IG5ldyBFcnJvcigiVGhlIHByb3ZpZGVkIGRpcmVjdGl2ZSB3YXMgbm90IGZvdW5kIGluIHRoZSBhcHBsaWNhdGlvbiIpO2E9cGwobyxuLCExKX1lbHNlIGlmKG89bGwobix0KSwtMT09bylyZXR1cm4gbnVsbDtjb25zdCByPWxpKG5bb10pLHM9cmwociksbD1zJiYhQXJyYXkuaXNBcnJheShzKT9zOm9sKG4sbyxyKTtpZihpJiZ2b2lkIDA9PT1sLmNvbXBvbmVudCYmKGwuY29tcG9uZW50PWksYWwobC5jb21wb25lbnQsbCkpLGEmJnZvaWQgMD09PWwuZGlyZWN0aXZlcyl7bC5kaXJlY3RpdmVzPWE7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0KyspYWwoYVt0XSxsKX1hbChsLm5hdGl2ZSxsKSxlPWx9fWVsc2V7Y29uc3Qgbj10O25nRGV2TW9kZSYmUG4obik7bGV0IG89bjtmb3IoO289by5wYXJlbnROb2RlOyl7Y29uc3QgdD1ybChvKTtpZih0KXtsZXQgbztpZihvPUFycmF5LmlzQXJyYXkodCk/dDp0LmxWaWV3LCFvKXJldHVybiBudWxsO2NvbnN0IGk9bGwobyxuKTtpZihpPj0wKXtjb25zdCB0PWxpKG9baV0pLG49b2wobyxpLHQpO2FsKHQsbiksZT1uO2JyZWFrfX19fXJldHVybiBlfHxudWxsfWZ1bmN0aW9uIG9sKHQsZSxuKXtyZXR1cm57bFZpZXc6dCxub2RlSW5kZXg6ZSxuYXRpdmU6bixjb21wb25lbnQ6dm9pZCAwLGRpcmVjdGl2ZXM6dm9pZCAwLGxvY2FsUmVmczp2b2lkIDB9fWZ1bmN0aW9uIGlsKHQpe2xldCBlLG49cmwodCk7aWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3Qgbz1kbChuLHQpO2U9dWkobyxuKTtjb25zdCBpPW9sKG4sbyxlWzBdKTtpLmNvbXBvbmVudD10LGFsKHQsaSksYWwoaS5uYXRpdmUsaSl9ZWxzZXtlPXVpKG4ubm9kZUluZGV4LG4ubFZpZXcpfXJldHVybiBlfSEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5IVE1MPTFdPSJIVE1MIix0W3QuU1RZTEU9Ml09IlNUWUxFIix0W3QuU0NSSVBUPTNdPSJTQ1JJUFQiLHRbdC5VUkw9NF09IlVSTCIsdFt0LlJFU09VUkNFX1VSTD01XT0iUkVTT1VSQ0VfVVJMIn0pKFlzfHwoWXM9e30pKTtmdW5jdGlvbiBhbCh0LGUpe25nRGV2TW9kZSYmeG4odCwiVGFyZ2V0IGV4cGVjdGVkIiksdC5fX25nQ29udGV4dF9fPWV9ZnVuY3Rpb24gcmwodCl7cmV0dXJuIG5nRGV2TW9kZSYmeG4odCwiVGFyZ2V0IGV4cGVjdGVkIiksdC5fX25nQ29udGV4dF9ffHxudWxsfWZ1bmN0aW9uIHNsKHQpe2NvbnN0IGU9cmwodCk7cmV0dXJuIGU/QXJyYXkuaXNBcnJheShlKT9lOmUubFZpZXc6bnVsbH1mdW5jdGlvbiBsbCh0LGUpe2NvbnN0IG49dFsxXTtmb3IobGV0IG89dm87bzxuLmJpbmRpbmdTdGFydEluZGV4O28rKylpZihsaSh0W29dKT09PWUpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gY2wodCl7aWYodC5jaGlsZClyZXR1cm4gdC5jaGlsZDtpZih0Lm5leHQpcmV0dXJuIHQubmV4dDtmb3IoO3QucGFyZW50JiYhdC5wYXJlbnQubmV4dDspdD10LnBhcmVudDtyZXR1cm4gdC5wYXJlbnQmJnQucGFyZW50Lm5leHR9ZnVuY3Rpb24gZGwodCxlKXtjb25zdCBuPXRbMV0uY29tcG9uZW50cztpZihuKWZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtjb25zdCBpPW5bb107aWYodWkoaSx0KVs4XT09PWUpcmV0dXJuIGl9ZWxzZXtpZih1aSh2byx0KVs4XT09PWUpcmV0dXJuIHZvfXJldHVybi0xfWZ1bmN0aW9uIHBsKHQsZSxuKXtjb25zdCBvPWVbMV0uZGF0YVt0XTtsZXQgaT1vLmRpcmVjdGl2ZVN0YXJ0O2lmKDA9PWkpcmV0dXJuIFFuO3JldHVybiFuJiYyJm8uZmxhZ3MmJmkrKyxlLnNsaWNlKGksby5kaXJlY3RpdmVFbmQpfWZ1bmN0aW9uIG1sKHQpe3JldHVybiB0Lm5nT3JpZ2luYWxFcnJvcn1mdW5jdGlvbiB1bCh0LC4uLmUpe3QuZXJyb3IoLi4uZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGZse2NvbnN0cnVjdG9yKCl7dGhpcy5fY29uc29sZT1jb25zb2xlfWhhbmRsZUVycm9yKHQpe2NvbnN0IGU9dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IodCksbj10aGlzLl9maW5kQ29udGV4dCh0KSxvPShmdW5jdGlvbiBpKHQpe3JldHVybiB0JiZ0Lm5nRXJyb3JMb2dnZXJ8fHVsfSkodCk7byh0aGlzLl9jb25zb2xlLCJFUlJPUiIsdCksZSYmbyh0aGlzLl9jb25zb2xlLCJPUklHSU5BTCBFUlJPUiIsZSksbiYmbyh0aGlzLl9jb25zb2xlLCJFUlJPUiBDT05URVhUIixuKX1fZmluZENvbnRleHQodCl7cmV0dXJuIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQubmdEZWJ1Z0NvbnRleHR9KSh0KXx8dGhpcy5fZmluZENvbnRleHQobWwodCkpOm51bGx9X2ZpbmRPcmlnaW5hbEVycm9yKHQpe2xldCBlPXQmJm1sKHQpO2Zvcig7ZSYmbWwoZSk7KWU9bWwoZSk7cmV0dXJuIGV8fG51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBnbD17bmFtZToiY3VzdG9tLWVsZW1lbnRzIn0saGw9e25hbWU6Im5vLWVycm9ycy1zY2hlbWEifSxibD0vXj58Xi0+fDwhLS18LS0+fC0tIT58PCEtJC9nLHlsPS8oPHw+KS87ZnVuY3Rpb24gX2wodCl7cmV0dXJuIHQucmVwbGFjZShibCwodD0+dC5yZXBsYWNlKHlsLCLigIskMeKAiyIpKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIENsKHQpe2lmKCFuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKCJMb29rcyBsaWtlIHdlIGFyZSBpbiAncHJvZCBtb2RlJywgYnV0IHdlIGFyZSBjcmVhdGluZyBhIG5hbWVkIEFycmF5IHR5cGUsIHdoaWNoIGlzIHdyb25nISBDaGVjayB5b3VyIGNvZGUiKTt0cnl7cmV0dXJuIG9zKCJBcnJheSIsYHJldHVybiBjbGFzcyAke3R9IGV4dGVuZHMgQXJyYXl7fWApKEFycmF5KX1jYXRjaCh0KXtyZXR1cm4gQXJyYXl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBNbCh0KXtyZXR1cm5gbmctcmVmbGVjdC0ke3Q9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZSh2bCwoKC4uLnQpPT4iLSIrdFsxXS50b0xvd2VyQ2FzZSgpKSl9KSh0LnJlcGxhY2UoL1skQF0vZywiXyIpKX1gfWNvbnN0IHZsPS8oW0EtWl0pL2c7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB4bD0oInVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJnJlcXVlc3RBbmltYXRpb25GcmFtZXx8c2V0VGltZW91dCkuYmluZChYbik7ZnVuY3Rpb24gT2wodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld31mdW5jdGlvbiBQbCh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50fWZ1bmN0aW9uIHdsKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQuYm9keX1jb25zdCBrbD0i77+9IjtmdW5jdGlvbiBTbCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEZ1bmN0aW9uP3QoKTp0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBEbCh0KXt0aHJvdyBuZXcgbm4oIjMwMCIsYE11bHRpcGxlIGNvbXBvbmVudHMgbWF0Y2ggbm9kZSB3aXRoIHRhZ25hbWUgJHt0LnZhbHVlfWApfWZ1bmN0aW9uIFJsKHQsZSxuLG8saSl7Y29uc3RbYSxyLC4uLnNdPW8uc3BsaXQoa2wpO2xldCBsPXIsYz1yO2ZvcihsZXQgbz0wO288cy5sZW5ndGg7bysrKXtjb25zdCBhPWUrbztsKz1gJHt0W2FdfSR7c1tvXX1gLGMrPWAke2E9PT1uP2k6dFthXX0ke3Nbb119YH1yZXR1cm57cHJvcE5hbWU6YSxvbGRWYWx1ZTpsLG5ld1ZhbHVlOmN9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdmFyIEVsOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEFsO2Z1bmN0aW9uIFRsKHQsZSl7cmV0dXJuIEFsKHQsZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBObCh0KXtuZ0Rldk1vZGUmJkZvKHQpO2NvbnN0IGU9dFszXTtyZXR1cm4gd28oZSk/ZVszXTplfWZ1bmN0aW9uIHpsKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7bmdEZXZNb2RlJiZ4bih0LCJjb21wb25lbnQiKTtsZXQgZT1Qbyh0KT90OnNsKHQpO2Zvcig7ZSYmISg1MTImZVsyXSk7KWU9TmwoZSk7cmV0dXJuIG5nRGV2TW9kZSYmRm8oZSksZX0pKHQpO3JldHVybiBuZ0Rldk1vZGUmJnhuKGVbOF0sIlJvb3RWaWV3IGhhcyBubyBjb250ZXh0LiBQZXJoYXBzIGl0IGlzIGRpc2Nvbm5lY3RlZD8iKSxlWzhdfWZ1bmN0aW9uIElsKHQpe3JldHVybiBGbCh0WzEzXSl9ZnVuY3Rpb24gSGwodCl7cmV0dXJuIEZsKHRbNF0pfWZ1bmN0aW9uIEZsKHQpe2Zvcig7bnVsbCE9PXQmJiF3byh0KTspdD10WzRdO3JldHVybiB0fWZ1bmN0aW9uIExsKHQsZSxuLG8saSl7aWYobnVsbCE9byl7bGV0IGEscj0hMTt3byhvKT9hPW86UG8obykmJihyPSEwLG5nRGV2TW9kZSYmeG4ob1swXSwiSE9TVCBtdXN0IGJlIGRlZmluZWQgZm9yIGEgY29tcG9uZW50IExWaWV3Iiksbz1vWzBdKTtjb25zdCBzPWxpKG8pO25nRGV2TW9kZSYmIXJpKGUpJiZQbihzKSwwPT09dCYmbnVsbCE9PW4/bnVsbD09aT9RbChlLG4scyk6SmwoZSxuLHMsaXx8bnVsbCwhMCk6MT09PXQmJm51bGwhPT1uP0psKGUsbixzLGl8fG51bGwsITApOjI9PT10P2RjKGUscyxyKTozPT09dCYmKG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyRGVzdHJveU5vZGUrKyxlLmRlc3Ryb3lOb2RlKHMpKSxudWxsIT1hJiYoZnVuY3Rpb24gYSh0LGUsbixvLGkpe25nRGV2TW9kZSYmSW8obik7Y29uc3QgYT1uWzddLHI9bGkobik7YSE9PXImJkxsKGUsdCxvLGEsaSk7Zm9yKGxldCBpPU9vO2k8bi5sZW5ndGg7aSsrKXtjb25zdCByPW5baV07bWMoclsxXSxyLHQsZSxvLGEpfX0pKGUsdCxhLG4saSl9fWZ1bmN0aW9uIEJsKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlVGV4dE5vZGUrKyxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldFRleHQrKyxyaSh0KT90LmNyZWF0ZVRleHQoZSk6dC5jcmVhdGVUZXh0Tm9kZShlKX1mdW5jdGlvbiBWbCh0LGUsbil7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRUZXh0KysscmkodCk/dC5zZXRWYWx1ZShlLG4pOmUudGV4dENvbnRlbnQ9bn1mdW5jdGlvbiBVbCh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUNvbW1lbnQrKyx0LmNyZWF0ZUNvbW1lbnQoX2woZSkpfWZ1bmN0aW9uIGpsKHQsZSxuKXtyZXR1cm4gbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVFbGVtZW50KysscmkodCk/dC5jcmVhdGVFbGVtZW50KGUsbik6bnVsbD09PW4/dC5jcmVhdGVFbGVtZW50KGUpOnQuY3JlYXRlRWxlbWVudE5TKG4sZSl9ZnVuY3Rpb24gV2wodCxlLG4sbyl7bmdEZXZNb2RlJiZGbyhlKSxuZ0Rldk1vZGUmJklvKG4pO2NvbnN0IGk9T28rbyxhPW4ubGVuZ3RoO28+MCYmKG5baS0xXVs0XT1lKSxvPGEtT28/KGVbNF09bltpXSx1cihuLE9vK28sZSkpOihuLnB1c2goZSksZVs0XT1udWxsKSxlWzNdPW47Y29uc3Qgcj1lWzE3XTtudWxsIT09ciYmbiE9PXImJihmdW5jdGlvbiBzKHQsZSl7bmdEZXZNb2RlJiZ4bihlLCJMVmlldyByZXF1aXJlZCIpLG5nRGV2TW9kZSYmSW8odCk7Y29uc3Qgbj10WzldLG89ZVszXTtuZ0Rldk1vZGUmJklvKG8pO2NvbnN0IGk9b1szXVsxNl07bmdEZXZNb2RlJiZ4bihpLCJNaXNzaW5nIGluc2VydGVkQ29tcG9uZW50TFZpZXciKTtjb25zdCBhPWVbMTZdO25nRGV2TW9kZSYmeG4oYSwiTWlzc2luZyBkZWNsYXJlZENvbXBvbmVudExWaWV3IiksYSE9PWkmJih0WzJdPSEwKTtudWxsPT09bj90WzldPVtlXTpuLnB1c2goZSl9KShyLGUpO2NvbnN0IGw9ZVsxOV07bnVsbCE9PWwmJmwuaW5zZXJ0Vmlldyh0KSxlWzJdfD0xMjh9ZnVuY3Rpb24gR2wodCxlKXtuZ0Rldk1vZGUmJklvKHQpLG5nRGV2TW9kZSYmeG4odFs5XSwiQSBwcm9qZWN0ZWQgdmlldyBzaG91bGQgYmVsb25nIHRvIGEgbm9uLWVtcHR5IHByb2plY3RlZCB2aWV3cyBjb2xsZWN0aW9uIik7Y29uc3Qgbj10WzldLG89bi5pbmRleE9mKGUpLGk9ZVszXTtuZ0Rldk1vZGUmJklvKGkpLDEwMjQmZVsyXSYmKGVbMl0mPS0xMDI1LHlpKGksLTEpKSxuLnNwbGljZShvLDEpfWZ1bmN0aW9uIFlsKHQsZSl7aWYodC5sZW5ndGg8PU9vKXJldHVybjtjb25zdCBuPU9vK2Usbz10W25dO2lmKG8pe2NvbnN0IGk9b1sxN107bnVsbCE9PWkmJmkhPT10JiZHbChpLG8pLGU+MCYmKHRbbi0xXVs0XT1vWzRdKTtjb25zdCBhPWZyKHQsT28rZSk7IShmdW5jdGlvbiBpKHQsZSl7bWModCxlLGVbMTFdLDIsbnVsbCxudWxsKSxlWzBdPW51bGwsZVs2XT1udWxsfSkob1sxXSxvKTtjb25zdCByPWFbMTldO251bGwhPT1yJiZyLmRldGFjaFZpZXcoYVsxXSksb1szXT1udWxsLG9bNF09bnVsbCxvWzJdJj0tMTI5fXJldHVybiBvfWZ1bmN0aW9uIHFsKHQsZSl7aWYoISgyNTYmZVsyXSkpe2NvbnN0IG49ZVsxMV07cmkobikmJm4uZGVzdHJveU5vZGUmJm1jKHQsZSxuLDMsbnVsbCxudWxsKSwoZnVuY3Rpb24gbih0KXtsZXQgZT10WzEzXTtpZighZSlyZXR1cm4gWmwodFsxXSx0KTtmb3IoO2U7KXtsZXQgbj1udWxsO2lmKFBvKGUpKW49ZVsxM107ZWxzZXtuZ0Rldk1vZGUmJklvKGUpO2NvbnN0IHQ9ZVsxMF07dCYmKG49dCl9aWYoIW4pe2Zvcig7ZSYmIWVbNF0mJmUhPT10OylQbyhlKSYmWmwoZVsxXSxlKSxlPWVbM107bnVsbD09PWUmJihlPXQpLFBvKGUpJiZabChlWzFdLGUpLG49ZSYmZVs0XX1lPW59fSkoZSl9fWZ1bmN0aW9uIFpsKHQsZSl7aWYoISgyNTYmZVsyXSkpe2VbMl0mPS0xMjksZVsyXXw9MjU2LChmdW5jdGlvbiBuKHQsZSl7bGV0IG47aWYobnVsbCE9dCYmbnVsbCE9KG49dC5kZXN0cm95SG9va3MpKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCs9Mil7Y29uc3Qgbz1lW25bdF1dO2lmKCEobyBpbnN0YW5jZW9mIHVhKSl7Y29uc3QgZT1uW3QrMV07aWYoQXJyYXkuaXNBcnJheShlKSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrPTIpe2NvbnN0IG49b1tlW3RdXSxpPWVbdCsxXTt0aSg0LG4saSk7dHJ5e2kuY2FsbChuKX1maW5hbGx5e3RpKDUsbixpKX19ZWxzZXt0aSg0LG8sZSk7dHJ5e2UuY2FsbChvKX1maW5hbGx5e3RpKDUsbyxlKX19fX19KSh0LGUpLChmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj10LmNsZWFudXAsbz1lWzddO2xldCBpPS0xO2lmKG51bGwhPT1uKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGgtMTt0Kz0yKWlmKCJzdHJpbmciPT10eXBlb2Ygblt0XSl7Y29uc3QgYT1uW3QrMV0scj0iZnVuY3Rpb24iPT10eXBlb2YgYT9hKGUpOmxpKGVbYV0pLHM9b1tpPW5bdCsyXV0sbD1uW3QrM107ImJvb2xlYW4iPT10eXBlb2YgbD9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoblt0XSxzLGwpOmw+PTA/b1tpPWxdKCk6b1tpPS1sXS51bnN1YnNjcmliZSgpLHQrPTJ9ZWxzZXtjb25zdCBlPW9baT1uW3QrMV1dO25bdF0uY2FsbChlKX1pZihudWxsIT09byl7Zm9yKGxldCB0PWkrMTt0PG8ubGVuZ3RoO3QrKyl7Y29uc3QgZT1vW3RdO25nRGV2TW9kZSYmZm4oZSwiRXhwZWN0aW5nIGluc3RhbmNlIGNsZWFudXAgZnVuY3Rpb24uIiksZSgpfWVbN109bnVsbH19KSh0LGUpLDE9PT1lWzFdLnR5cGUmJnJpKGVbMTFdKSYmKG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyRGVzdHJveSsrLGVbMTFdLmRlc3Ryb3koKSk7Y29uc3Qgbj1lWzE3XTtpZihudWxsIT09biYmd28oZVszXSkpe24hPT1lWzNdJiZHbChuLGUpO2NvbnN0IG89ZVsxOV07bnVsbCE9PW8mJm8uZGV0YWNoVmlldyh0KX19fWZ1bmN0aW9uIFhsKHQsZSxuKXtyZXR1cm4gS2wodCxlLnBhcmVudCxuKX1mdW5jdGlvbiBLbCh0LGUsbil7bGV0IG89ZTtmb3IoO251bGwhPT1vJiY0MCZvLnR5cGU7KW89KGU9bykucGFyZW50O2lmKG51bGw9PT1vKXJldHVybiBuWzBdO2lmKG5nRGV2TW9kZSYmZ2Eobyw3KSwyJm8uZmxhZ3Mpe25nRGV2TW9kZSYmRW8obyxuKTtjb25zdCBlPXQuZGF0YVtvLmRpcmVjdGl2ZVN0YXJ0XS5lbmNhcHN1bGF0aW9uO2lmKGU9PT1Xbi5Ob25lfHxlPT09V24uRW11bGF0ZWQpcmV0dXJuIG51bGx9cmV0dXJuIGRpKG8sbil9ZnVuY3Rpb24gSmwodCxlLG4sbyxpKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckluc2VydEJlZm9yZSsrLHJpKHQpP3QuaW5zZXJ0QmVmb3JlKGUsbixvLGkpOmUuaW5zZXJ0QmVmb3JlKG4sbyxpKX1mdW5jdGlvbiBRbCh0LGUsbil7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJBcHBlbmRDaGlsZCsrLG5nRGV2TW9kZSYmeG4oZSwicGFyZW50IG5vZGUgbXVzdCBiZSBkZWZpbmVkIikscmkodCk/dC5hcHBlbmRDaGlsZChlLG4pOmUuYXBwZW5kQ2hpbGQobil9ZnVuY3Rpb24gJGwodCxlLG4sbyxpKXtudWxsIT09bz9KbCh0LGUsbixvLGkpOlFsKHQsZSxuKX1mdW5jdGlvbiB0Yyh0LGUpe3JldHVybiByaSh0KT90LnBhcmVudE5vZGUoZSk6ZS5wYXJlbnROb2RlfWZ1bmN0aW9uIGVjKHQsZSxuKXtyZXR1cm4gaWModCxlLG4pfWZ1bmN0aW9uIG5jKHQsZSxuKXtyZXR1cm4gNDAmdC50eXBlP2RpKHQsbik6bnVsbH0hKGZ1bmN0aW9uKHQpe3RbdC5JbXBvcnRhbnQ9MV09IkltcG9ydGFudCIsdFt0LkRhc2hDYXNlPTJdPSJEYXNoQ2FzZSJ9KShFbHx8KEVsPXt9KSk7bGV0IG9jLGljPW5jO2Z1bmN0aW9uIGFjKHQsZSl7aWM9dCxvYz1lfWZ1bmN0aW9uIHJjKHQsZSxuLG8pe2NvbnN0IGk9WGwodCxvLGUpLGE9ZVsxMV0scj1lYyhvLnBhcmVudHx8ZVs2XSxvLGUpO2lmKG51bGwhPWkpaWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKykkbChhLGksblt0XSxyLCExKTtlbHNlICRsKGEsaSxuLHIsITEpO3ZvaWQgMCE9PW9jJiZvYyhhLG8sZSxuLGkpfWZ1bmN0aW9uIHNjKHQsZSl7aWYobnVsbCE9PWUpe25nRGV2TW9kZSYmZ2EoZSw2Myk7Y29uc3Qgbj1lLnR5cGU7aWYoMyZuKXJldHVybiBkaShlLHQpO2lmKDQmbilyZXR1cm4gY2MoLTEsdFtlLmluZGV4XSk7aWYoOCZuKXtjb25zdCBuPWUuY2hpbGQ7aWYobnVsbCE9PW4pcmV0dXJuIHNjKHQsbik7e2NvbnN0IG49dFtlLmluZGV4XTtyZXR1cm4gd28obik/Y2MoLTEsbik6bGkobil9fWlmKDMyJm4pe3JldHVybiBUbChlLHQpKCl8fGxpKHRbZS5pbmRleF0pfXtjb25zdCBuPWxjKHQsZSk7aWYobnVsbCE9PW4pe2lmKEFycmF5LmlzQXJyYXkobikpcmV0dXJuIG5bMF07Y29uc3QgZT1ObCh0WzE2XSk7cmV0dXJuIG5nRGV2TW9kZSYmam8oZSksc2MoZSxuKX1yZXR1cm4gc2ModCxlLm5leHQpfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBsYyh0LGUpe2lmKG51bGwhPT1lKXtjb25zdCBuPXRbMTZdWzZdLG89ZS5wcm9qZWN0aW9uO3JldHVybiBuZ0Rldk1vZGUmJihmdW5jdGlvbiBuKHQsZSl7eG4odFsxNl0sIkNvbXBvbmVudCB2aWV3cyBzaG91bGQgZXhpc3QuIikseG4odFsxNl1bNl0ucHJvamVjdGlvbixlfHwiQ29tcG9uZW50cyB3aXRoIHByb2plY3Rpb24gbm9kZXMgKDxuZy1jb250ZW50PikgbXVzdCBoYXZlIHByb2plY3Rpb24gc2xvdHMgZGVmaW5lZC4iKX0pKHQpLG4ucHJvamVjdGlvbltvXX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBjYyh0LGUpe2NvbnN0IG49T28rdCsxO2lmKG48ZS5sZW5ndGgpe2NvbnN0IHQ9ZVtuXSxvPXRbMV0uZmlyc3RDaGlsZDtpZihudWxsIT09bylyZXR1cm4gc2ModCxvKX1yZXR1cm4gZVs3XX1mdW5jdGlvbiBkYyh0LGUsbil7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJSZW1vdmVOb2RlKys7Y29uc3Qgbz10Yyh0LGUpO28mJihmdW5jdGlvbiBpKHQsZSxuLG8pe3JpKHQpP3QucmVtb3ZlQ2hpbGQoZSxuLG8pOmUucmVtb3ZlQ2hpbGQobil9KSh0LG8sZSxuKX1mdW5jdGlvbiBwYyh0LGUsbixvLGksYSxyKXtmb3IoO251bGwhPW47KXtuZ0Rldk1vZGUmJkVvKG4sbyksbmdEZXZNb2RlJiZnYShuLDYzKTtjb25zdCBzPW9bbi5pbmRleF0sbD1uLnR5cGU7aWYociYmMD09PWUmJihzJiZhbChsaShzKSxvKSxuLmZsYWdzfD00KSw2NCE9KDY0Jm4uZmxhZ3MpKWlmKDgmbClwYyh0LGUsbi5jaGlsZCxvLGksYSwhMSksTGwoZSx0LGkscyxhKTtlbHNlIGlmKDMyJmwpe2NvbnN0IHI9VGwobixvKTtsZXQgbDtmb3IoO2w9cigpOylMbChlLHQsaSxsLGEpO0xsKGUsdCxpLHMsYSl9ZWxzZSAxNiZsP3VjKHQsZSxvLG4saSxhKToobmdEZXZNb2RlJiZnYShuLDcpLExsKGUsdCxpLHMsYSkpO249cj9uLnByb2plY3Rpb25OZXh0Om4ubmV4dH19ZnVuY3Rpb24gbWModCxlLG4sbyxpLGEpe3BjKG4sbyx0LmZpcnN0Q2hpbGQsZSxpLGEsITEpfWZ1bmN0aW9uIHVjKHQsZSxuLG8saSxhKXtjb25zdCByPW5bMTZdLHM9cls2XTtuZ0Rldk1vZGUmJmduKHR5cGVvZiBvLnByb2plY3Rpb24sIm51bWJlciIsImV4cGVjdGluZyBwcm9qZWN0aW9uIGluZGV4Iik7Y29uc3QgbD1zLnByb2plY3Rpb25bby5wcm9qZWN0aW9uXTtpZihBcnJheS5pc0FycmF5KGwpKWZvcihsZXQgbj0wO248bC5sZW5ndGg7bisrKXtMbChlLHQsaSxsW25dLGEpfWVsc2V7cGModCxlLGwsclszXSxpLGEsITApfX1mdW5jdGlvbiBmYyh0LGUsbil7bmdEZXZNb2RlJiZ1bihuLCInbmV3VmFsdWUnIHNob3VsZCBiZSBhIHN0cmluZyIpLHJpKHQpP3Quc2V0QXR0cmlidXRlKGUsInN0eWxlIixuKTplLnN0eWxlLmNzc1RleHQ9bixuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldFN0eWxlKyt9ZnVuY3Rpb24gZ2ModCxlLG4pe25nRGV2TW9kZSYmdW4obiwiJ25ld1ZhbHVlJyBzaG91bGQgYmUgYSBzdHJpbmciKSxyaSh0KT8iIj09PW4/dC5yZW1vdmVBdHRyaWJ1dGUoZSwiY2xhc3MiKTp0LnNldEF0dHJpYnV0ZShlLCJjbGFzcyIsbik6ZS5jbGFzc05hbWU9bixuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldENsYXNzTmFtZSsrfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBoYyh0LGUsbil7bmdEZXZNb2RlJiZobihlLCIiLCdjYW4gbm90IGxvb2sgZm9yICIiIHN0cmluZy4nKTtsZXQgbz10Lmxlbmd0aDtmb3IoOzspe2NvbnN0IGk9dC5pbmRleE9mKGUsbik7aWYoLTE9PT1pKXJldHVybiBpO2lmKDA9PT1pfHx0LmNoYXJDb2RlQXQoaS0xKTw9MzIpe2NvbnN0IG49ZS5sZW5ndGg7aWYoaStuPT09b3x8dC5jaGFyQ29kZUF0KGkrbik8PTMyKXJldHVybiBpfW49aSsxfX1jb25zdCBiYz0ibmctdGVtcGxhdGUiO2Z1bmN0aW9uIHljKHQsZSxuKXtuZ0Rldk1vZGUmJmduKGUsZS50b0xvd2VyQ2FzZSgpLCJDbGFzcyBuYW1lIGV4cGVjdGVkIHRvIGJlIGxvd2VyY2FzZS4iKTtsZXQgbz0wO2Zvcig7bzx0Lmxlbmd0aDspe2xldCBpPXRbbysrXTtpZihuJiYiY2xhc3MiPT09aSl7aWYoaT10W29dLC0xIT09aGMoaS50b0xvd2VyQ2FzZSgpLGUsMCkpcmV0dXJuITB9ZWxzZSBpZigxPT09aSl7Zm9yKDtvPHQubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mKGk9dFtvKytdKTspaWYoaS50b0xvd2VyQ2FzZSgpPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX19cmV0dXJuITF9ZnVuY3Rpb24gX2ModCl7cmV0dXJuIDQ9PT10LnR5cGUmJnQudmFsdWUhPT1iY31mdW5jdGlvbiBDYyh0LGUsbil7cmV0dXJuIGU9PT0oNCE9PXQudHlwZXx8bj90LnZhbHVlOmJjKX1mdW5jdGlvbiBNYyh0LGUsbil7bmdEZXZNb2RlJiZ4bihlWzBdLCJTZWxlY3RvciBzaG91bGQgaGF2ZSBhIHRhZyBuYW1lIik7bGV0IG89NDtjb25zdCBpPXQuYXR0cnN8fFtdLGE9KGZ1bmN0aW9uIHIodCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2lmKGJhKHRbZV0pKXJldHVybiBlfXJldHVybiB0Lmxlbmd0aH0pKGkpO2xldCBzPSExO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtjb25zdCBsPWVbcl07aWYoIm51bWJlciIhPXR5cGVvZiBsKXtpZighcylpZig0Jm8pe2lmKG89MnwxJm8sIiIhPT1sJiYhQ2ModCxsLG4pfHwiIj09PWwmJjE9PT1lLmxlbmd0aCl7aWYodmMobykpcmV0dXJuITE7cz0hMH19ZWxzZXtjb25zdCBjPTgmbz9sOmVbKytyXTtpZig4Jm8mJm51bGwhPT10LmF0dHJzKXtpZigheWModC5hdHRycyxjLG4pKXtpZih2YyhvKSlyZXR1cm4hMTtzPSEwfWNvbnRpbnVlfWNvbnN0IGQ9eGMoOCZvPyJjbGFzcyI6bCxpLF9jKHQpLG4pO2lmKC0xPT09ZCl7aWYodmMobykpcmV0dXJuITE7cz0hMDtjb250aW51ZX1pZigiIiE9PWMpe2xldCB0O2Q+YT90PSIiOihuZ0Rldk1vZGUmJmhuKGlbZF0sMCwiV2UgZG8gbm90IG1hdGNoIGRpcmVjdGl2ZXMgb24gbmFtZXNwYWNlZCBhdHRyaWJ1dGVzIiksdD1pW2QrMV0udG9Mb3dlckNhc2UoKSk7Y29uc3QgZT04Jm8/dDpudWxsO2lmKGUmJi0xIT09aGMoZSxjLDApfHwyJm8mJmMhPT10KXtpZih2YyhvKSlyZXR1cm4hMTtzPSEwfX19fWVsc2V7aWYoIXMmJiF2YyhvKSYmIXZjKGwpKXJldHVybiExO2lmKHMmJnZjKGwpKWNvbnRpbnVlO3M9ITEsbz1sfDEmb319cmV0dXJuIHZjKG8pfHxzfWZ1bmN0aW9uIHZjKHQpe3JldHVybiAwPT0oMSZ0KX1mdW5jdGlvbiB4Yyh0LGUsbixvKXtpZihudWxsPT09ZSlyZXR1cm4tMTtsZXQgaT0wO2lmKG98fCFuKXtsZXQgbj0hMTtmb3IoO2k8ZS5sZW5ndGg7KXtjb25zdCBvPWVbaV07aWYobz09PXQpcmV0dXJuIGk7aWYoMz09PW98fDY9PT1vKW49ITA7ZWxzZXtpZigxPT09b3x8Mj09PW8pe2xldCB0PWVbKytpXTtmb3IoOyJzdHJpbmciPT10eXBlb2YgdDspdD1lWysraV07Y29udGludWV9aWYoND09PW8pYnJlYWs7aWYoMD09PW8pe2krPTQ7Y29udGludWV9fWkrPW4/MToyfXJldHVybi0xfXJldHVybihmdW5jdGlvbiBhKHQsZSl7bGV0IG49dC5pbmRleE9mKDQpO2lmKG4+LTEpZm9yKG4rKztuPHQubGVuZ3RoOyl7Y29uc3Qgbz10W25dO2lmKCJudW1iZXIiPT10eXBlb2YgbylyZXR1cm4tMTtpZihvPT09ZSlyZXR1cm4gbjtuKyt9cmV0dXJuLTF9KShlLHQpfWZ1bmN0aW9uIE9jKHQsZSxuPSExKXtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKylpZihNYyh0LGVbb10sbikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gUGModCxlKXt0OmZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCBvPWVbbl07aWYodC5sZW5ndGg9PT1vLmxlbmd0aCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXSE9PW9bZV0pY29udGludWUgdDtyZXR1cm4hMH19cmV0dXJuITF9ZnVuY3Rpb24gd2ModCxlKXtyZXR1cm4gdD8iOm5vdCgiK2UudHJpbSgpKyIpIjplfWZ1bmN0aW9uIGtjKHQpe2xldCBlPXRbMF0sbj0xLG89MixpPSIiLGE9ITE7Zm9yKDtuPHQubGVuZ3RoOyl7bGV0IHI9dFtuXTtpZigic3RyaW5nIj09dHlwZW9mIHIpaWYoMiZvKXtjb25zdCBlPXRbKytuXTtpKz0iWyIrcisoZS5sZW5ndGg+MD8nPSInK2UrJyInOiIiKSsiXSJ9ZWxzZSA4Jm8/aSs9Ii4iK3I6NCZvJiYoaSs9IiAiK3IpO2Vsc2UiIj09PWl8fHZjKHIpfHwoZSs9d2MoYSxpKSxpPSIiKSxvPXIsYT1hfHwhdmMobyk7bisrfXJldHVybiIiIT09aSYmKGUrPXdjKGEsaSkpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBTYz0idW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlP3tfX2JyYW5kX186Ik5PX0NIQU5HRSJ9Ont9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBEYyh0KXtuZ0Rldk1vZGUmJk1uKHQsMCwiQ2FuIG9ubHkgYWR2YW5jZSBmb3J3YXJkIiksUmMoT2koKSx4aSgpLHRhKCkrdCxBaSgpKX1mdW5jdGlvbiBSYyh0LGUsbixvKXtpZihuZ0Rldk1vZGUmJihmdW5jdGlvbiBpKHQsZSl7VW8odm8sdFsxXS5iaW5kaW5nU3RhcnRJbmRleCxlKX0pKGUsbiksIW8pe2lmKDM9PSgzJmVbMl0pKXtjb25zdCBvPXQucHJlT3JkZXJDaGVja0hvb2tzO251bGwhPT1vJiZzYShlLG8sbil9ZWxzZXtjb25zdCBvPXQucHJlT3JkZXJIb29rcztudWxsIT09byYmbGEoZSxvLDAsbil9fWVhKG4pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBFYyh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJm1uKHQsMCwzMjc2NyksbmdEZXZNb2RlJiZtbihlLDAsMzI3NjcpLHQ8PDE3fGU8PDJ9ZnVuY3Rpb24gQWModCl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksdD4+MTcmMzI3Njd9ZnVuY3Rpb24gVGModCl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksMj09KDImdCl9ZnVuY3Rpb24gTmModCl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksMnx0fWZ1bmN0aW9uIHpjKHQpe3JldHVybiBuZ0Rldk1vZGUmJnBuKHQsImV4cGVjdGVkIG51bWJlciIpLCgxMzEwNjgmdCk+PjJ9ZnVuY3Rpb24gSWModCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZwbih0LCJleHBlY3RlZCBudW1iZXIiKSxuZ0Rldk1vZGUmJm1uKGUsMCwzMjc2NyksLTEzMTA2OSZ0fGU8PDJ9ZnVuY3Rpb24gSGModCl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksMT09KDEmdCl9ZnVuY3Rpb24gRmModCl7cmV0dXJuIG5nRGV2TW9kZSYmcG4odCwiZXhwZWN0ZWQgbnVtYmVyIiksMXx0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBMYyh0LGUpe2lmKCFuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIGBuZ0Rldk1vZGVgIHNvIHRoYXQgaXQgY2FuIGJlIHRyZWUgc2hha2VuIGluIHByb2R1Y3Rpb24hIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImRlYnVnIix7dmFsdWU6ZSxlbnVtZXJhYmxlOiExfSl9ZnVuY3Rpb24gQmModCxlKXtpZighbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigiVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBgbmdEZXZNb2RlYCBzbyB0aGF0IGl0IGNhbiBiZSB0cmVlIHNoYWtlbiBpbiBwcm9kdWN0aW9uISIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkZWJ1ZyIse2dldDplLGVudW1lcmFibGU6ITF9KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgVmM9KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHwhIW5nRGV2TW9kZSkmJktuKCk7bGV0IFVjLGpjLFdjO2Z1bmN0aW9uIEdjKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbil7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdm9pZCAwPT09V2MmJihXYz1uZXcoQ2woIkxSb290VmlldyIpKSksV2M7Y2FzZSAxOnZvaWQgMD09PVVjJiYoVWM9bmV3IE1hcCk7bGV0IHQ9VWMuZ2V0KG4pO3JldHVybiB2b2lkIDA9PT10JiYodD1uZXcoQ2woIkxDb21wb25lbnRWaWV3IitZYyhuKSkpLFVjLnNldChuLHQpKSx0O2Nhc2UgMjp2b2lkIDA9PT1qYyYmKGpjPW5ldyBNYXApO2xldCBlPWpjLmdldChuKTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3KENsKCJMRW1iZWRkZWRWaWV3IitZYyhuKSkpLGpjLnNldChuLGUpKSxlfX0pKHQudHlwZSx0LnRlbXBsYXRlJiZ0LnRlbXBsYXRlLm5hbWUpLmNvbmNhdCh0LmJsdWVwcmludCl9ZnVuY3Rpb24gWWModCl7aWYobnVsbD09dClyZXR1cm4iIjtjb25zdCBlPXQubGFzdEluZGV4T2YoIl9UZW1wbGF0ZSIpO3JldHVybiJfIisoLTE9PT1lP3Q6dC5zdWJzdHIoMCxlKSl9Y29uc3QgcWM9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIseSxfLEMsTSx2LHgsTyxQLHcsayxTLEQsUixFKXt0aGlzLnRWaWV3Xz10LHRoaXMudHlwZT1lLHRoaXMuaW5kZXg9bix0aGlzLmluc2VydEJlZm9yZUluZGV4PW8sdGhpcy5pbmplY3RvckluZGV4PWksdGhpcy5kaXJlY3RpdmVTdGFydD1hLHRoaXMuZGlyZWN0aXZlRW5kPXIsdGhpcy5kaXJlY3RpdmVTdHlsaW5nTGFzdD1zLHRoaXMucHJvcGVydHlCaW5kaW5ncz1sLHRoaXMuZmxhZ3M9Yyx0aGlzLnByb3ZpZGVySW5kZXhlcz1kLHRoaXMudmFsdWU9cCx0aGlzLmF0dHJzPW0sdGhpcy5tZXJnZWRBdHRycz11LHRoaXMubG9jYWxOYW1lcz1mLHRoaXMuaW5pdGlhbElucHV0cz1nLHRoaXMuaW5wdXRzPWgsdGhpcy5vdXRwdXRzPWIsdGhpcy50Vmlld3M9eSx0aGlzLm5leHQ9Xyx0aGlzLnByb2plY3Rpb25OZXh0PUMsdGhpcy5jaGlsZD1NLHRoaXMucGFyZW50PXYsdGhpcy5wcm9qZWN0aW9uPXgsdGhpcy5zdHlsZXM9Tyx0aGlzLnN0eWxlc1dpdGhvdXRIb3N0PVAsdGhpcy5yZXNpZHVhbFN0eWxlcz13LHRoaXMuY2xhc3Nlcz1rLHRoaXMuY2xhc3Nlc1dpdGhvdXRIb3N0PVMsdGhpcy5yZXNpZHVhbENsYXNzZXM9RCx0aGlzLmNsYXNzQmluZGluZ3M9Uix0aGlzLnN0eWxlQmluZGluZ3M9RX1kZWJ1Z05vZGVJbmplY3RvclBhdGgodCl7Y29uc3QgZT1bXTtsZXQgbj1EYSh0aGlzLHQpO2lmKC0xPT09bil7Y29uc3QgZT1SYSh0aGlzLHQpO2UhPT1tYSYmKG49dmEoZSksdD14YShlLHQpKX1mb3IoOy0xIT09bjspe25nRGV2TW9kZSYmV28odCxuKTtlLnB1c2gocGQodFsxXS5kYXRhW24rOF0sdCkpO2NvbnN0IG89dFtuKzhdO289PT1tYT9uPS0xOihuPXZhKG8pLHQ9eGEobyx0KSl9cmV0dXJuIGV9Z2V0IHR5cGVfKCl7cmV0dXJuIGZhKHRoaXMudHlwZSl8fGBUTm9kZVR5cGUuPyR7dGhpcy50eXBlfT9gfWdldCBmbGFnc18oKXtjb25zdCB0PVtdO3JldHVybiAxNiZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzQ2xhc3NJbnB1dCIpLDgmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc0NvbnRlbnRRdWVyeSIpLDMyJnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5oYXNTdHlsZUlucHV0IiksMTI4JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5oYXNIb3N0QmluZGluZ3MiKSwyJnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5pc0NvbXBvbmVudEhvc3QiKSwxJnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5pc0RpcmVjdGl2ZUhvc3QiKSw2NCZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNEZXRhY2hlZCIpLDQmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzUHJvamVjdGVkIiksdC5qb2luKCJ8Iil9Z2V0IHRlbXBsYXRlXygpe2lmKDEmdGhpcy50eXBlKXJldHVybiB0aGlzLnZhbHVlO2NvbnN0IHQ9W10sZT0ic3RyaW5nIj09dHlwZW9mIHRoaXMudmFsdWUmJnRoaXMudmFsdWV8fHRoaXMudHlwZV87aWYodC5wdXNoKCI8IixlKSx0aGlzLmZsYWdzJiZ0LnB1c2goIiAiLHRoaXMuZmxhZ3NfKSx0aGlzLmF0dHJzKWZvcihsZXQgZT0wO2U8dGhpcy5hdHRycy5sZW5ndGg7KXtjb25zdCBuPXRoaXMuYXR0cnNbZSsrXTtpZigibnVtYmVyIj09dHlwZW9mIG4pYnJlYWs7Y29uc3Qgbz10aGlzLmF0dHJzW2UrK107dC5wdXNoKCIgIixuLCc9IicsbywnIicpfXJldHVybiB0LnB1c2goIj4iKSxYYyh0aGlzLmNoaWxkLHQpLHQucHVzaCgiPC8iLGUsIj4iKSx0LmpvaW4oIiIpfWdldCBzdHlsZUJpbmRpbmdzXygpe3JldHVybiBaYyh0aGlzLCExKX1nZXQgY2xhc3NCaW5kaW5nc18oKXtyZXR1cm4gWmModGhpcywhMCl9Z2V0IHByb3ZpZGVySW5kZXhTdGFydF8oKXtyZXR1cm4gMTA0ODU3NSZ0aGlzLnByb3ZpZGVySW5kZXhlc31nZXQgcHJvdmlkZXJJbmRleEVuZF8oKXtyZXR1cm4gdGhpcy5wcm92aWRlckluZGV4U3RhcnRfKyh0aGlzLnByb3ZpZGVySW5kZXhlcz4+PjIwKX19O2Z1bmN0aW9uIFpjKHQsZSl7Y29uc3Qgbj10LnRWaWV3Xy5kYXRhLG89W10saT1lP3QuY2xhc3NCaW5kaW5nczp0LnN0eWxlQmluZGluZ3MsYT1BYyhpKSxyPXpjKGkpO2xldCBzPTAhPT1yLGw9cz9yOmE7Zm9yKDswIT09bDspe2NvbnN0IHQ9bltsKzFdO28udW5zaGlmdCh7a2V5Om5bbF0saW5kZXg6bCxpc1RlbXBsYXRlOnMscHJldkR1cGxpY2F0ZTpUYyh0KSxuZXh0RHVwbGljYXRlOkhjKHQpLG5leHRJbmRleDp6Yyh0KSxwcmV2SW5kZXg6QWModCl9KSxsPT09YSYmKHM9ITEpLGw9QWModCl9cmV0dXJuIG8ucHVzaCgoZT90LnJlc2lkdWFsQ2xhc3Nlczp0LnJlc2lkdWFsU3R5bGVzKXx8bnVsbCksb31mdW5jdGlvbiBYYyh0LGUpe2Zvcig7dDspZS5wdXNoKHQudGVtcGxhdGVfKSx0PXQubmV4dH1jb25zdCBLYz1WYyYmQ2woIlRWaWV3RGF0YSIpfHxudWxsO2xldCBKYztjb25zdCBRYz1WYyYmQ2woIkxWaWV3Qmx1ZXByaW50Iil8fG51bGwsJGM9VmMmJkNsKCJNYXRjaGVzQXJyYXkiKXx8bnVsbCx0ZD1WYyYmQ2woIlRWaWV3Q29tcG9uZW50cyIpfHxudWxsLGVkPVZjJiZDbCgiVE5vZGVMb2NhbE5hbWVzIil8fG51bGwsbmQ9VmMmJkNsKCJUTm9kZUluaXRpYWxJbnB1dHMiKXx8bnVsbDtWYyYmQ2woIlROb2RlSW5pdGlhbERhdGEiKTtjb25zdCBvZD1WYyYmQ2woIkxDbGVhbnVwIil8fG51bGwsaWQ9VmMmJkNsKCJUQ2xlYW51cCIpfHxudWxsO2Z1bmN0aW9uIGFkKHQpe2lmKHQpe2NvbnN0IGU9dC5kZWJ1ZztyZXR1cm4geG4oZSwiT2JqZWN0IGRvZXMgbm90IGhhdmUgYSBkZWJ1ZyByZXByZXNlbnRhdGlvbi4iKSxlfXJldHVybiB0fWZ1bmN0aW9uIHJkKHQsZT0hMSl7Y29uc3Qgbj1saSh0KTtpZihuKXN3aXRjaChuLm5vZGVUeXBlKXtjYXNlIE5vZGUuVEVYVF9OT0RFOnJldHVybiBuLnRleHRDb250ZW50O2Nhc2UgTm9kZS5DT01NRU5UX05PREU6cmV0dXJuYFx4M2MhLS0ke24udGV4dENvbnRlbnR9LS1ceDNlYDtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmNvbnN0IHQ9bi5vdXRlckhUTUw7aWYoZSlyZXR1cm4gdDtyZXR1cm4gdC5zcGxpdCgiPiIrbi5pbm5lckhUTUwrIjwiKVswXSsiPiJ9cmV0dXJuIG51bGx9Y2xhc3Mgc2R7Y29uc3RydWN0b3IodCl7dGhpcy5fcmF3X2xWaWV3PXR9Z2V0IGZsYWdzKCl7Y29uc3QgdD10aGlzLl9yYXdfbFZpZXdbMl07cmV0dXJue19fcmF3X19mbGFnc19fOnQsaW5pdFBoYXNlU3RhdGU6MyZ0LGNyZWF0aW9uTW9kZTohISg0JnQpLGZpcnN0Vmlld1Bhc3M6ISEoOCZ0KSxjaGVja0Fsd2F5czohISgxNiZ0KSxkaXJ0eTohISg2NCZ0KSxhdHRhY2hlZDohISgxMjgmdCksZGVzdHJveWVkOiEhKDI1NiZ0KSxpc1Jvb3Q6ISEoNTEyJnQpLGluZGV4V2l0aGluSW5pdFBoYXNlOnQ+PjExfX1nZXQgcGFyZW50KCl7cmV0dXJuIGFkKHRoaXMuX3Jhd19sVmlld1szXSl9Z2V0IGhvc3RIVE1MKCl7cmV0dXJuIHJkKHRoaXMuX3Jhd19sVmlld1swXSwhMCl9Z2V0IGh0bWwoKXtyZXR1cm4odGhpcy5ub2Rlc3x8W10pLm1hcChsZCkuam9pbigiIil9Z2V0IGNvbnRleHQoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzhdfWdldCBub2Rlcygpe2NvbnN0IHQ9dGhpcy5fcmF3X2xWaWV3O3JldHVybiBkZCh0WzFdLmZpcnN0Q2hpbGQsdCl9Z2V0IHRlbXBsYXRlKCl7cmV0dXJuIHRoaXMudFZpZXcudGVtcGxhdGVffWdldCB0Vmlldygpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbMV19Z2V0IGNsZWFudXAoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzddfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbOV19Z2V0IHJlbmRlcmVyRmFjdG9yeSgpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbMTBdfWdldCByZW5kZXJlcigpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbMTFdfWdldCBzYW5pdGl6ZXIoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzEyXX1nZXQgY2hpbGRIZWFkKCl7cmV0dXJuIGFkKHRoaXMuX3Jhd19sVmlld1sxM10pfWdldCBuZXh0KCl7cmV0dXJuIGFkKHRoaXMuX3Jhd19sVmlld1s0XSl9Z2V0IGNoaWxkVGFpbCgpe3JldHVybiBhZCh0aGlzLl9yYXdfbFZpZXdbMTRdKX1nZXQgZGVjbGFyYXRpb25WaWV3KCl7cmV0dXJuIGFkKHRoaXMuX3Jhd19sVmlld1sxNV0pfWdldCBxdWVyaWVzKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1sxOV19Z2V0IHRIb3N0KCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s2XX1nZXQgZGVjbHMoKXtyZXR1cm4gY2QodGhpcy50Vmlldyx0aGlzLl9yYXdfbFZpZXcsdm8sdGhpcy50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCl9Z2V0IHZhcnMoKXtyZXR1cm4gY2QodGhpcy50Vmlldyx0aGlzLl9yYXdfbFZpZXcsdGhpcy50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCx0aGlzLnRWaWV3LmV4cGFuZG9TdGFydEluZGV4KX1nZXQgZXhwYW5kbygpe3JldHVybiBjZCh0aGlzLnRWaWV3LHRoaXMuX3Jhd19sVmlldyx0aGlzLnRWaWV3LmV4cGFuZG9TdGFydEluZGV4LHRoaXMuX3Jhd19sVmlldy5sZW5ndGgpfWdldCBjaGlsZFZpZXdzKCl7Y29uc3QgdD1bXTtsZXQgZT10aGlzLmNoaWxkSGVhZDtmb3IoO2U7KXQucHVzaChlKSxlPWUubmV4dDtyZXR1cm4gdH19ZnVuY3Rpb24gbGQodCl7aWYoIkVsZW1lbnRDb250YWluZXIiPT09dC50eXBlKXJldHVybih0LmNoaWxkcmVufHxbXSkubWFwKGxkKS5qb2luKCIiKTtpZigiSWN1Q29udGFpbmVyIj09PXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpO3JldHVybiByZCh0Lm5hdGl2ZSwhMCl8fCIifWZ1bmN0aW9uIGNkKHQsZSxuLG8pe2xldCBpPVtdO2ZvcihsZXQgYT1uO2E8bzthKyspaS5wdXNoKHtpbmRleDphLHQ6dC5kYXRhW2FdLGw6ZVthXX0pO3JldHVybntzdGFydDpuLGVuZDpvLGxlbmd0aDpvLW4sY29udGVudDppfX1mdW5jdGlvbiBkZCh0LGUpe2lmKHQpe2NvbnN0IG49W107bGV0IG89dDtmb3IoO287KW4ucHVzaChwZChvLGUpKSxvPW8ubmV4dDtyZXR1cm4gbn1yZXR1cm5bXX1mdW5jdGlvbiBwZCh0LGUpe2NvbnN0IG49bGkoZVt0LmluZGV4XSksbz1bXSxpPVtdLGE9ZVsxXTtmb3IobGV0IG49dC5kaXJlY3RpdmVTdGFydDtuPHQuZGlyZWN0aXZlRW5kO24rKyl7by5wdXNoKGEuZGF0YVtuXS50eXBlKSxpLnB1c2goZVtuXSl9cmV0dXJue2h0bWw6cmQobiksdHlwZTpmYSh0LnR5cGUpLHROb2RlOnQsbmF0aXZlOm4sY2hpbGRyZW46ZGQodC5jaGlsZCxlKSxmYWN0b3JpZXM6byxpbnN0YW5jZXM6aSxpbmplY3RvcjptZCh0LGEsZSksZ2V0IGluamVjdG9yUmVzb2x1dGlvblBhdGgoKXtyZXR1cm4gdC5kZWJ1Z05vZGVJbmplY3RvclBhdGgoZSl9fX1mdW5jdGlvbiBtZCh0LGUsbil7Y29uc3Qgbz1bXTtmb3IobGV0IG49dC5wcm92aWRlckluZGV4U3RhcnRfO248dC5wcm92aWRlckluZGV4RW5kXztuKyspby5wdXNoKGUuZGF0YVtuXSk7Y29uc3QgaT1bXTtmb3IobGV0IG49dC5wcm92aWRlckluZGV4RW5kXztuPHQuZGlyZWN0aXZlRW5kO24rKylpLnB1c2goZS5kYXRhW25dKTtyZXR1cm57Ymxvb206ZmQobix0LmluamVjdG9ySW5kZXgpLGN1bXVsYXRpdmVCbG9vbTpmZChlLmRhdGEsdC5pbmplY3RvckluZGV4KSxwcm92aWRlcnM6aSx2aWV3UHJvdmlkZXJzOm8scGFyZW50SW5qZWN0b3JJbmRleDpuW3QucHJvdmlkZXJJbmRleFN0YXJ0Xy0xXX19ZnVuY3Rpb24gdWQodCxlKXtjb25zdCBuPXRbZV07aWYoIm51bWJlciIhPXR5cGVvZiBuKXJldHVybiI/Pz8/Pz8/PyI7Y29uc3Qgbz0iMDAwMDAwMDAiK24udG9TdHJpbmcoMik7cmV0dXJuIG8uc3Vic3RyaW5nKG8ubGVuZ3RoLTgpfWZ1bmN0aW9uIGZkKHQsZSl7cmV0dXJuIGU8MD8iTk9fTk9ERV9JTkpFQ1RPUiI6YCR7dWQodCxlKzcpfV8ke3VkKHQsZSs2KX1fJHt1ZCh0LGUrNSl9XyR7dWQodCxlKzQpfV8ke3VkKHQsZSszKX1fJHt1ZCh0LGUrMil9XyR7dWQodCxlKzEpfV8ke3VkKHQsZSswKX1gfWNsYXNzIGdke2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Jhd19sQ29udGFpbmVyPXR9Z2V0IGhhc1RyYW5zcGxhbnRlZFZpZXdzKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyWzJdfWdldCB2aWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lci5zbGljZShPbykubWFwKGFkKX1nZXQgcGFyZW50KCl7cmV0dXJuIGFkKHRoaXMuX3Jhd19sQ29udGFpbmVyWzNdKX1nZXQgbW92ZWRWaWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lcls5XX1nZXQgaG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lclswXX1nZXQgbmF0aXZlKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyWzddfWdldCBuZXh0KCl7cmV0dXJuIGFkKHRoaXMuX3Jhd19sQ29udGFpbmVyWzRdKX19Y29uc3QgaGQ9UHJvbWlzZS5yZXNvbHZlKG51bGwpO2Z1bmN0aW9uIGJkKHQsZSl7Y29uc3Qgbj10LmNvbnRlbnRRdWVyaWVzO2lmKG51bGwhPT1uKWZvcihsZXQgbz0wO288bi5sZW5ndGg7bys9Mil7Y29uc3QgaT1uW29dLGE9bltvKzFdO2lmKC0xIT09YSl7Y29uc3Qgbj10LmRhdGFbYV07bmdEZXZNb2RlJiZ4bihuLCJEaXJlY3RpdmVEZWYgbm90IGZvdW5kLiIpLG5nRGV2TW9kZSYmeG4obi5jb250ZW50UXVlcmllcywiY29udGVudFF1ZXJpZXMgZnVuY3Rpb24gc2hvdWxkIGJlIGRlZmluZWQiKSxXaShpKSxuLmNvbnRlbnRRdWVyaWVzKDIsZVthXSxhKX19fWZ1bmN0aW9uIHlkKHQsZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9bmdEZXZNb2RlP0djKGUpOmUuYmx1ZXByaW50LnNsaWNlKCk7cmV0dXJuIGRbMF09aSxkWzJdPTE0MHxvLGJpKGQpLG5nRGV2TW9kZSYmZS5kZWNsVE5vZGUmJnQmJkVvKGUuZGVjbFROb2RlLHQpLGRbM109ZFsxNV09dCxkWzhdPW4sZFsxMF09cnx8dCYmdFsxMF0sbmdEZXZNb2RlJiZ4bihkWzEwXSwiUmVuZGVyZXJGYWN0b3J5IGlzIHJlcXVpcmVkIiksZFsxMV09c3x8dCYmdFsxMV0sbmdEZXZNb2RlJiZ4bihkWzExXSwiUmVuZGVyZXIgaXMgcmVxdWlyZWQiKSxkWzEyXT1sfHx0JiZ0WzEyXXx8bnVsbCxkWzldPWN8fHQmJnRbOV18fG51bGwsZFs2XT1hLG5nRGV2TW9kZSYmZ24oMiE9ZS50eXBlfHxudWxsIT09dCwhMCwiRW1iZWRkZWQgdmlld3MgbXVzdCBoYXZlIHBhcmVudExWaWV3IiksZFsxNl09Mj09ZS50eXBlP3RbMTZdOmQsbmdEZXZNb2RlJiYoZnVuY3Rpb24gcCh0KXtMYyh0LG5ldyBzZCh0KSl9KShkKSxkfWZ1bmN0aW9uIF9kKHQsZSxuLG8saSl7bmdEZXZNb2RlJiYwIT09ZSYmdm4oZSx2bywiVE5vZGVzIGNhbid0IGJlIGluIHRoZSBMVmlldyBoZWFkZXIuIiksbmdEZXZNb2RlJiYoZnVuY3Rpb24gYSh0KXsyIT09dCYmMSE9PXQmJjQhPT10JiY4IT09dCYmMzIhPT10JiYxNiE9PXQmJjY0IT09dCYmT24oYEV4cGVjdGVkIFROb2RlVHlwZSB0byBoYXZlIG9ubHkgYSBzaW5nbGUgdHlwZSBzZWxlY3RlZCwgYnV0IGdvdCAke2ZhKHQpfS5gKX0pKG4pO2xldCByPXQuZGF0YVtlXTtpZihudWxsPT09cilyPUNkKHQsZSxuLG8saSksKGZ1bmN0aW9uIHMoKXtyZXR1cm4gX2kubEZyYW1lLmluSTE4bn0pKCkmJihyLmZsYWdzfD02NCk7ZWxzZSBpZig2NCZyLnR5cGUpe3IudHlwZT1uLHIudmFsdWU9byxyLmF0dHJzPWk7Y29uc3QgYT1TaSgpO3IuaW5qZWN0b3JJbmRleD1udWxsPT09YT8tMTphLmluamVjdG9ySW5kZXgsbmdEZXZNb2RlJiZBbyhyLHQpLG5nRGV2TW9kZSYmZ24oZSxyLmluZGV4LCJFeHBlY3Rpbmcgc2FtZSBpbmRleCIpfXJldHVybiBEaShyLCEwKSxyfWZ1bmN0aW9uIENkKHQsZSxuLG8saSl7Y29uc3QgYT1raSgpLHI9UmkoKSxzPXQuZGF0YVtlXT0oZnVuY3Rpb24gbCh0LGUsbixvLGksYSl7bmdEZXZNb2RlJiYwIT09byYmdm4obyx2bywiVE5vZGVzIGNhbid0IGJlIGluIHRoZSBMVmlldyBoZWFkZXIuIiksbmdEZXZNb2RlJiZ5bihhLHZvaWQgMCwiJ3VuZGVmaW5lZCcgaXMgbm90IHZhbGlkIHZhbHVlIGZvciAnYXR0cnMnIiksbmdEZXZNb2RlJiZuZ0Rldk1vZGUudE5vZGUrKyxuZ0Rldk1vZGUmJmUmJkFvKGUsdCk7bGV0IHI9ZT9lLmluamVjdG9ySW5kZXg6LTE7Y29uc3Qgcz1uZ0Rldk1vZGU/bmV3IHFjKHQsbixvLG51bGwsciwtMSwtMSwtMSxudWxsLDAsMCxpLGEsbnVsbCxudWxsLHZvaWQgMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxlLG51bGwsbnVsbCxudWxsLHZvaWQgMCxudWxsLG51bGwsdm9pZCAwLDAsMCk6e3R5cGU6bixpbmRleDpvLGluc2VydEJlZm9yZUluZGV4Om51bGwsaW5qZWN0b3JJbmRleDpyLGRpcmVjdGl2ZVN0YXJ0Oi0xLGRpcmVjdGl2ZUVuZDotMSxkaXJlY3RpdmVTdHlsaW5nTGFzdDotMSxwcm9wZXJ0eUJpbmRpbmdzOm51bGwsZmxhZ3M6MCxwcm92aWRlckluZGV4ZXM6MCx2YWx1ZTppLGF0dHJzOmEsbWVyZ2VkQXR0cnM6bnVsbCxsb2NhbE5hbWVzOm51bGwsaW5pdGlhbElucHV0czp2b2lkIDAsaW5wdXRzOm51bGwsb3V0cHV0czpudWxsLHRWaWV3czpudWxsLG5leHQ6bnVsbCxwcm9qZWN0aW9uTmV4dDpudWxsLGNoaWxkOm51bGwscGFyZW50OmUscHJvamVjdGlvbjpudWxsLHN0eWxlczpudWxsLHN0eWxlc1dpdGhvdXRIb3N0Om51bGwscmVzaWR1YWxTdHlsZXM6dm9pZCAwLGNsYXNzZXM6bnVsbCxjbGFzc2VzV2l0aG91dEhvc3Q6bnVsbCxyZXNpZHVhbENsYXNzZXM6dm9pZCAwLGNsYXNzQmluZGluZ3M6MCxzdHlsZUJpbmRpbmdzOjB9O25nRGV2TW9kZSYmT2JqZWN0LnNlYWwocyk7cmV0dXJuIHN9KSh0LHI/YTphJiZhLnBhcmVudCxuLGUsbyxpKTtyZXR1cm4gbnVsbD09PXQuZmlyc3RDaGlsZCYmKHQuZmlyc3RDaGlsZD1zKSxudWxsIT09YSYmKHI/bnVsbD09YS5jaGlsZCYmbnVsbCE9PXMucGFyZW50JiYoYS5jaGlsZD1zKTpudWxsPT09YS5uZXh0JiYoYS5uZXh0PXMpKSxzfWZ1bmN0aW9uIE1kKHQsZSxuLG8pe2lmKDA9PT1uKXJldHVybi0xO25nRGV2TW9kZSYmKExvKHQpLGJuKHQsZVsxXSwiYExWaWV3YCBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBgVFZpZXdgISIpLGduKHQuZGF0YS5sZW5ndGgsZS5sZW5ndGgsIkV4cGVjdGluZyBMVmlldyB0byBiZSBzYW1lIHNpemUgYXMgVFZpZXciKSxnbih0LmRhdGEubGVuZ3RoLHQuYmx1ZXByaW50Lmxlbmd0aCwiRXhwZWN0aW5nIEJsdWVwcmludCB0byBiZSBzYW1lIHNpemUgYXMgVFZpZXciKSxCbyh0KSk7Y29uc3QgaT1lLmxlbmd0aDtmb3IobGV0IGk9MDtpPG47aSsrKWUucHVzaChvKSx0LmJsdWVwcmludC5wdXNoKG8pLHQuZGF0YS5wdXNoKG51bGwpO3JldHVybiBpfWZ1bmN0aW9uIHZkKHQsZSxuKXtuZ0Rldk1vZGUmJmduKGZpKGUpLCEwLCJTaG91bGQgYmUgcnVuIGluIGNyZWF0aW9uIG1vZGUiKSxxaShlKTt0cnl7Y29uc3Qgbz10LnZpZXdRdWVyeTtudWxsIT09byYmc3AoMSxvLG4pO2NvbnN0IGk9dC50ZW1wbGF0ZTtudWxsIT09aSYmUGQodCxlLGksMSxuKSx0LmZpcnN0Q3JlYXRlUGFzcyYmKHQuZmlyc3RDcmVhdGVQYXNzPSExKSx0LnN0YXRpY0NvbnRlbnRRdWVyaWVzJiZiZCh0LGUpLHQuc3RhdGljVmlld1F1ZXJpZXMmJnNwKDIsdC52aWV3UXVlcnksbik7Y29uc3QgYT10LmNvbXBvbmVudHM7bnVsbCE9PWEmJihmdW5jdGlvbiBvKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspZXAodCxlW25dKX0pKGUsYSl9Y2F0Y2goZSl7dGhyb3cgdC5maXJzdENyZWF0ZVBhc3MmJih0LmluY29tcGxldGVGaXJzdFBhc3M9ITAsdC5maXJzdENyZWF0ZVBhc3M9ITEpLGV9ZmluYWxseXtlWzJdJj0tNSxRaSgpfX1mdW5jdGlvbiB4ZCh0LGUsbixvKXtuZ0Rldk1vZGUmJmduKGZpKGUpLCExLCJTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlIik7Y29uc3QgaT1lWzJdO2lmKDI1Nj09KDI1NiZpKSlyZXR1cm47cWkoZSk7Y29uc3QgYT1BaSgpO3RyeXtiaShlKSxJaSh0LmJpbmRpbmdTdGFydEluZGV4KSxudWxsIT09biYmUGQodCxlLG4sMixvKTtjb25zdCByPTM9PSgzJmkpO2lmKCFhKWlmKHIpe2NvbnN0IG49dC5wcmVPcmRlckNoZWNrSG9va3M7bnVsbCE9PW4mJnNhKGUsbixudWxsKX1lbHNle2NvbnN0IG49dC5wcmVPcmRlckhvb2tzO251bGwhPT1uJiZsYShlLG4sMCxudWxsKSxjYShlLDApfWlmKChmdW5jdGlvbiByKHQpe2ZvcihsZXQgZT1JbCh0KTtudWxsIT09ZTtlPUhsKGUpKXtpZighZVsyXSljb250aW51ZTtjb25zdCB0PWVbOV07bmdEZXZNb2RlJiZ4bih0LCJUcmFuc3BsYW50ZWQgVmlldyBmbGFncyBzZXQgYnV0IG1pc3NpbmcgTU9WRURfVklFV1MiKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdLG89blszXTtuZ0Rldk1vZGUmJklvKG8pLDA9PSgxMDI0Jm5bMl0pJiZ5aShvLDEpLG5bMl18PTEwMjR9fX0pKGUpLChmdW5jdGlvbiBzKHQpe2ZvcihsZXQgZT1JbCh0KTtudWxsIT09ZTtlPUhsKGUpKWZvcihsZXQgdD1Pbzt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLG89blsxXTtuZ0Rldk1vZGUmJnhuKG8sIlRWaWV3IG11c3QgYmUgYWxsb2NhdGVkIiksZ2kobikmJnhkKG8sbixvLnRlbXBsYXRlLG5bOF0pfX0pKGUpLG51bGwhPT10LmNvbnRlbnRRdWVyaWVzJiZiZCh0LGUpLCFhKWlmKHIpe2NvbnN0IG49dC5jb250ZW50Q2hlY2tIb29rcztudWxsIT09biYmc2EoZSxuKX1lbHNle2NvbnN0IG49dC5jb250ZW50SG9va3M7bnVsbCE9PW4mJmxhKGUsbiwxKSxjYShlLDEpfSEoZnVuY3Rpb24gbCh0LGUpe2NvbnN0IG49dC5ob3N0QmluZGluZ09wQ29kZXM7aWYobnVsbCE9PW4pdHJ5e2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBvPW5bdF07aWYobzwwKWVhKH5vKTtlbHNle2NvbnN0IGk9byxhPW5bKyt0XSxyPW5bKyt0XTtCaShhLGkpLHIoMixlW2ldKX19fWZpbmFsbHl7ZWEoLTEpfX0pKHQsZSk7Y29uc3Qgcz10LmNvbXBvbmVudHM7bnVsbCE9PXMmJihmdW5jdGlvbiBjKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspJGQodCxlW25dKX0pKGUscyk7Y29uc3QgbD10LnZpZXdRdWVyeTtpZihudWxsIT09bCYmc3AoMixsLG8pLCFhKWlmKHIpe2NvbnN0IG49dC52aWV3Q2hlY2tIb29rcztudWxsIT09biYmc2EoZSxuKX1lbHNle2NvbnN0IG49dC52aWV3SG9va3M7bnVsbCE9PW4mJmxhKGUsbiwyKSxjYShlLDIpfSEwPT09dC5maXJzdFVwZGF0ZVBhc3MmJih0LmZpcnN0VXBkYXRlUGFzcz0hMSksYXx8KGVbMl0mPS03MyksMTAyNCZlWzJdJiYoZVsyXSY9LTEwMjUseWkoZVszXSwtMSkpfWZpbmFsbHl7UWkoKX19ZnVuY3Rpb24gT2QodCxlLG4sbyl7Y29uc3QgaT1lWzEwXSxhPSFBaSgpLHI9ZmkoZSk7dHJ5e2EmJiFyJiZpLmJlZ2luJiZpLmJlZ2luKCksciYmdmQodCxlLG8pLHhkKHQsZSxuLG8pfWZpbmFsbHl7YSYmIXImJmkuZW5kJiZpLmVuZCgpfX1mdW5jdGlvbiBQZCh0LGUsbixvLGkpe2NvbnN0IGE9dGEoKSxyPTImbzt0cnl7ZWEoLTEpLHImJmUubGVuZ3RoPnZvJiZSYyh0LGUsdm8sQWkoKSk7dGkocj8yOjAsaSksbihvLGkpfWZpbmFsbHl7ZWEoYSk7dGkocj8zOjEsaSl9fWZ1bmN0aW9uIHdkKHQsZSxuKXtpZihrbyhlKSl7Y29uc3Qgbz1lLmRpcmVjdGl2ZUVuZDtmb3IobGV0IGk9ZS5kaXJlY3RpdmVTdGFydDtpPG87aSsrKXtjb25zdCBlPXQuZGF0YVtpXTtlLmNvbnRlbnRRdWVyaWVzJiZlLmNvbnRlbnRRdWVyaWVzKDEsbltpXSxpKX19fWZ1bmN0aW9uIGtkKHQsZSxuKXtDaSgpJiYoIShmdW5jdGlvbiBvKHQsZSxuLGkpe2NvbnN0IGE9bi5kaXJlY3RpdmVTdGFydCxyPW4uZGlyZWN0aXZlRW5kO3QuZmlyc3RDcmVhdGVQYXNzfHxrYShuLGUpO2FsKGksZSk7Y29uc3Qgcz1uLmluaXRpYWxJbnB1dHM7Zm9yKGxldCBvPWE7bzxyO28rKyl7Y29uc3QgaT10LmRhdGFbb10scj1SbyhpKTtyJiYobmdEZXZNb2RlJiZnYShuLDMpLFlkKGUsbixpKSk7Y29uc3QgbD1MYShlLHQsbyxuKTtpZihhbChsLGUpLG51bGwhPT1zJiZYZChlLG8tYSxsLGksbixzKSxyKXt1aShuLmluZGV4LGUpWzhdPWx9fX0pKHQsZSxuLGRpKG4sZSkpLDEyOD09KDEyOCZuLmZsYWdzKSYmKGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89bi5kaXJlY3RpdmVTdGFydCxpPW4uZGlyZWN0aXZlRW5kO2NvbnN0IGE9bi5pbmRleCxyPShmdW5jdGlvbiBzKCl7cmV0dXJuIF9pLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXh9KSgpO3RyeXtlYShhKTtmb3IobGV0IG49bztuPGk7bisrKXtjb25zdCBvPXQuZGF0YVtuXSxpPWVbbl07VmkobiksbnVsbD09PW8uaG9zdEJpbmRpbmdzJiYwPT09by5ob3N0VmFycyYmbnVsbD09PW8uaG9zdEF0dHJzfHxWZChvLGkpfX1maW5hbGx5e2VhKC0xKSxWaShyKX19KSh0LGUsbikpfWZ1bmN0aW9uIFNkKHQsZSxuPWRpKXtjb25zdCBvPWUubG9jYWxOYW1lcztpZihudWxsIT09byl7bGV0IGk9ZS5pbmRleCsxO2ZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSs9Mil7Y29uc3Qgcj1vW2ErMV0scz0tMT09PXI/bihlLHQpOnRbcl07dFtpKytdPXN9fX1mdW5jdGlvbiBEZCh0KXtjb25zdCBlPXQudFZpZXc7aWYobnVsbD09PWV8fGUuaW5jb21wbGV0ZUZpcnN0UGFzcyl7cmV0dXJuIHQudFZpZXc9UmQoMSxudWxsLHQudGVtcGxhdGUsdC5kZWNscyx0LnZhcnMsdC5kaXJlY3RpdmVEZWZzLHQucGlwZURlZnMsdC52aWV3UXVlcnksdC5zY2hlbWFzLHQuY29uc3RzKX1yZXR1cm4gZX1mdW5jdGlvbiBSZCh0LGUsbixvLGksYSxyLHMsbCxjKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS50VmlldysrO2NvbnN0IGQ9dm8rbyxwPWQraSxtPShmdW5jdGlvbiB1KHQsZSl7Y29uc3Qgbj1uZ0Rldk1vZGU/bmV3IFFjOltdO2ZvcihsZXQgbz0wO288ZTtvKyspbi5wdXNoKG88dD9udWxsOlNjKTtyZXR1cm4gbn0pKGQscCksZj0iZnVuY3Rpb24iPT10eXBlb2YgYz9jKCk6YyxnPW1bMV09bmdEZXZNb2RlP25ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYix5LF8sQyxNLHYseCxPLFAsdyxrLFMsRCxSLEUpe3RoaXMudHlwZT10LHRoaXMuYmx1ZXByaW50PWUsdGhpcy50ZW1wbGF0ZT1uLHRoaXMucXVlcmllcz1vLHRoaXMudmlld1F1ZXJ5PWksdGhpcy5kZWNsVE5vZGU9YSx0aGlzLmRhdGE9cix0aGlzLmJpbmRpbmdTdGFydEluZGV4PXMsdGhpcy5leHBhbmRvU3RhcnRJbmRleD1sLHRoaXMuaG9zdEJpbmRpbmdPcENvZGVzPWMsdGhpcy5maXJzdENyZWF0ZVBhc3M9ZCx0aGlzLmZpcnN0VXBkYXRlUGFzcz1wLHRoaXMuc3RhdGljVmlld1F1ZXJpZXM9bSx0aGlzLnN0YXRpY0NvbnRlbnRRdWVyaWVzPXUsdGhpcy5wcmVPcmRlckhvb2tzPWYsdGhpcy5wcmVPcmRlckNoZWNrSG9va3M9Zyx0aGlzLmNvbnRlbnRIb29rcz1oLHRoaXMuY29udGVudENoZWNrSG9va3M9Yix0aGlzLnZpZXdIb29rcz15LHRoaXMudmlld0NoZWNrSG9va3M9Xyx0aGlzLmRlc3Ryb3lIb29rcz1DLHRoaXMuY2xlYW51cD1NLHRoaXMuY29udGVudFF1ZXJpZXM9dix0aGlzLmNvbXBvbmVudHM9eCx0aGlzLmRpcmVjdGl2ZVJlZ2lzdHJ5PU8sdGhpcy5waXBlUmVnaXN0cnk9UCx0aGlzLmZpcnN0Q2hpbGQ9dyx0aGlzLnNjaGVtYXM9ayx0aGlzLmNvbnN0cz1TLHRoaXMuaW5jb21wbGV0ZUZpcnN0UGFzcz1ELHRoaXMuX2RlY2xzPVIsdGhpcy5fdmFycz1FfWdldCB0ZW1wbGF0ZV8oKXtjb25zdCB0PVtdO3JldHVybiBYYyh0aGlzLmZpcnN0Q2hpbGQsdCksdC5qb2luKCIiKX1nZXQgdHlwZV8oKXtyZXR1cm4geG9bdGhpcy50eXBlXXx8YFRWaWV3VHlwZS4/JHt0aGlzLnR5cGV9P2B9fSh0LG0sbixudWxsLHMsZSwoZnVuY3Rpb24gaCh0KXtyZXR1cm4gdm9pZCAwPT09SmMmJihKYz1uZXcgS2MpLEpjLmNvbmNhdCh0KX0pKG0pLmZpbGwobnVsbCxkKSxkLHAsbnVsbCwhMCwhMCwhMSwhMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoKTphLCJmdW5jdGlvbiI9PXR5cGVvZiByP3IoKTpyLG51bGwsbCxmLCExLG8saSk6e3R5cGU6dCxibHVlcHJpbnQ6bSx0ZW1wbGF0ZTpuLHF1ZXJpZXM6bnVsbCx2aWV3UXVlcnk6cyxkZWNsVE5vZGU6ZSxkYXRhOm0uc2xpY2UoKS5maWxsKG51bGwsZCksYmluZGluZ1N0YXJ0SW5kZXg6ZCxleHBhbmRvU3RhcnRJbmRleDpwLGhvc3RCaW5kaW5nT3BDb2RlczpudWxsLGZpcnN0Q3JlYXRlUGFzczohMCxmaXJzdFVwZGF0ZVBhc3M6ITAsc3RhdGljVmlld1F1ZXJpZXM6ITEsc3RhdGljQ29udGVudFF1ZXJpZXM6ITEscHJlT3JkZXJIb29rczpudWxsLHByZU9yZGVyQ2hlY2tIb29rczpudWxsLGNvbnRlbnRIb29rczpudWxsLGNvbnRlbnRDaGVja0hvb2tzOm51bGwsdmlld0hvb2tzOm51bGwsdmlld0NoZWNrSG9va3M6bnVsbCxkZXN0cm95SG9va3M6bnVsbCxjbGVhbnVwOm51bGwsY29udGVudFF1ZXJpZXM6bnVsbCxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZlUmVnaXN0cnk6ImZ1bmN0aW9uIj09dHlwZW9mIGE/YSgpOmEscGlwZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiByP3IoKTpyLGZpcnN0Q2hpbGQ6bnVsbCxzY2hlbWFzOmwsY29uc3RzOmYsaW5jb21wbGV0ZUZpcnN0UGFzczohMX07cmV0dXJuIG5nRGV2TW9kZSYmT2JqZWN0LnNlYWwoZyksZ31mdW5jdGlvbiBFZCh0LGUpe3JldHVybiBuZXcgRXJyb3IoYFJlbmRlcmVyOiAke3R9IFske3NuKGUpfV1gKX1mdW5jdGlvbiBBZCh0LGUsbil7aWYocmkodCkpe3JldHVybiB0LnNlbGVjdFJvb3RFbGVtZW50KGUsbj09PVduLlNoYWRvd0RvbSl9bGV0IG89InN0cmluZyI9PXR5cGVvZiBlP3QucXVlcnlTZWxlY3RvcihlKTplO3JldHVybiBuZ0Rldk1vZGUmJihmdW5jdGlvbiBpKHQsZSl7aWYoIXQpdGhyb3cgRWQoInN0cmluZyI9PXR5cGVvZiBlPyJIb3N0IG5vZGUgd2l0aCBzZWxlY3RvciBub3QgZm91bmQ6IjoiSG9zdCBub2RlIGlzIHJlcXVpcmVkOiIsZSl9KShvLGUpLG8udGV4dENvbnRlbnQ9IiIsb31mdW5jdGlvbiBUZCh0LGUsbixvKXtjb25zdCBpPWRwKGUpO251bGw9PT1uPyhuZ0Rldk1vZGUmJk9iamVjdC5mcmVlemUocHAodCkpLGkucHVzaChvKSk6KGkucHVzaChuKSx0LmZpcnN0Q3JlYXRlUGFzcyYmcHAodCkucHVzaChvLGkubGVuZ3RoLTEpKX1mdW5jdGlvbiBOZCh0LGUsbil7Zm9yKGxldCBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7Y29uc3QgaT10W29dOyhuPW51bGw9PT1uP3t9Om4pLmhhc093blByb3BlcnR5KG8pP25bb10ucHVzaChlLGkpOm5bb109W2UsaV19cmV0dXJuIG59ZnVuY3Rpb24gemQodCxlLG4sbyxpLGEscixzKXtuZ0Rldk1vZGUmJnluKGksU2MsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIik7Y29uc3QgbD1kaShlLG4pO2xldCBjLGQ9ZS5pbnB1dHM7aWYoIXMmJm51bGwhPWQmJihjPWRbb10pKWZwKHQsbixjLG8saSksU28oZSkmJihmdW5jdGlvbiBwKHQsZSl7bmdEZXZNb2RlJiZGbyh0KTtjb25zdCBuPXVpKGUsdCk7MTYmblsyXXx8KG5bMl18PTY0KX0pKG4sZS5pbmRleCksbmdEZXZNb2RlJiYoZnVuY3Rpb24gbSh0LGUsbixvLGkpe2lmKDcmbilmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErPTIpSWQodCxlLG4sb1thKzFdLGkpfSkobixsLGUudHlwZSxjLGkpO2Vsc2UgaWYoMyZlLnR5cGUpe2lmKG89KGZ1bmN0aW9uIHUodCl7cmV0dXJuImNsYXNzIj09PXQ/ImNsYXNzTmFtZSI6ImZvciI9PT10PyJodG1sRm9yIjoiZm9ybWFjdGlvbiI9PT10PyJmb3JtQWN0aW9uIjoiaW5uZXJIdG1sIj09PXQ/ImlubmVySFRNTCI6InJlYWRvbmx5Ij09PXQ/InJlYWRPbmx5IjoidGFiaW5kZXgiPT09dD8idGFiSW5kZXgiOnR9KShvKSxuZ0Rldk1vZGUpe2lmKChmdW5jdGlvbiBmKHQpe2lmKHQudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJvbiIpKXtjb25zdCBlPWBCaW5kaW5nIHRvIGV2ZW50IHByb3BlcnR5ICcke3R9JyBpcyBkaXNhbGxvd2VkIGZvciBzZWN1cml0eSByZWFzb25zLCBwbGVhc2UgdXNlICgke3Quc2xpY2UoMil9KT0uLi5cbklmICcke3R9JyBpcyBhIGRpcmVjdGl2ZSBpbnB1dCwgbWFrZSBzdXJlIHRoZSBkaXJlY3RpdmUgaXMgaW1wb3J0ZWQgYnkgdGhlIGN1cnJlbnQgbW9kdWxlLmA7dGhyb3cgbmV3IEVycm9yKGUpfX0pKG8pLCEoZnVuY3Rpb24gZyh0LGUsbixvKXtpZihudWxsPT09dC5zY2hlbWFzKXJldHVybiEwO2lmKEhkKHQsby52YWx1ZSl8fG4gaW4gZXx8eWEobikpcmV0dXJuITA7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBOb2RlfHxudWxsPT09Tm9kZXx8IShlIGluc3RhbmNlb2YgTm9kZSl9KSh0LGwsbyxlKSlyZXR1cm4gdm9pZCBGZChvLGUpO25nRGV2TW9kZS5yZW5kZXJlclNldFByb3BlcnR5Kyt9aT1udWxsIT1yP3IoaSxlLnZhbHVlfHwiIixvKTppLHJpKGEpP2Euc2V0UHJvcGVydHkobCxvLGkpOnlhKG8pfHwobC5zZXRQcm9wZXJ0eT9sLnNldFByb3BlcnR5KG8saSk6bFtvXT1pKX1lbHNlIDEyJmUudHlwZSYmbmdEZXZNb2RlJiYhSGQodCxlLnZhbHVlKSYmRmQobyxlKX1mdW5jdGlvbiBJZCh0LGUsbixvLGkpe2NvbnN0IGE9dFsxMV07bz1NbChvKTtjb25zdCByPShmdW5jdGlvbiBzKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCkuc2xpY2UoMCwzMCk6dH1jYXRjaCh0KXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUifX0pKGkpO2lmKDMmbiludWxsPT1pP3JpKGEpP2EucmVtb3ZlQXR0cmlidXRlKGUsbyk6ZS5yZW1vdmVBdHRyaWJ1dGUobyk6cmkoYSk/YS5zZXRBdHRyaWJ1dGUoZSxvLHIpOmUuc2V0QXR0cmlidXRlKG8scik7ZWxzZXtjb25zdCB0PV9sKGBiaW5kaW5ncz0ke0pTT04uc3RyaW5naWZ5KHtbb106cn0sbnVsbCwyKX1gKTtyaShhKT9hLnNldFZhbHVlKGUsdCk6ZS50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBIZCh0LGUpe2NvbnN0IG49dC5zY2hlbWFzO2lmKG51bGwhPT1uKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBvPW5bdF07aWYobz09PWhsfHxvPT09Z2wmJmUmJmUuaW5kZXhPZigiLSIpPi0xKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEZkKHQsZSl7Y29uc29sZS5lcnJvcihhbigiMzAzIixgQ2FuJ3QgYmluZCB0byAnJHt0fScgc2luY2UgaXQgaXNuJ3QgYSBrbm93biBwcm9wZXJ0eSBvZiAnJHtlLnZhbHVlfScuYCkpfWZ1bmN0aW9uIExkKHQsZSxuLG8pe25nRGV2TW9kZSYmTG8odCk7bGV0IGk9ITE7aWYoQ2koKSl7Y29uc3QgYT0oZnVuY3Rpb24gYSh0LGUsbil7bmdEZXZNb2RlJiZMbyh0KSxuZ0Rldk1vZGUmJmdhKG4sMTUpO2NvbnN0IG89dC5kaXJlY3RpdmVSZWdpc3RyeTtsZXQgaT1udWxsO2lmKG8pZm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKyspe2NvbnN0IHI9b1thXTtPYyhuLHIuc2VsZWN0b3JzLCExKSYmKGl8fChpPW5nRGV2TW9kZT9uZXcgJGM6W10pLEVhKGthKG4sZSksdCxyLnR5cGUpLFJvKHIpPyhuZ0Rldk1vZGUmJihnYShuLDIsYCIke24udmFsdWV9IiB0YWdzIGNhbm5vdCBiZSB1c2VkIGFzIGNvbXBvbmVudCBob3N0cy4gUGxlYXNlIHVzZSBhIGRpZmZlcmVudCB0YWcgdG8gYWN0aXZhdGUgdGhlICR7S2Uoci50eXBlKX0gY29tcG9uZW50LmApLDImbi5mbGFncyYmRGwobikpLFVkKHQsbiksaS51bnNoaWZ0KHIpKTppLnB1c2gocikpfXJldHVybiBpfSkodCxlLG4pLHI9bnVsbD09PW8/bnVsbDp7IiI6LTF9O2lmKG51bGwhPT1hKXtpPSEwLFdkKG4sdC5kYXRhLmxlbmd0aCxhLmxlbmd0aCk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspe2NvbnN0IGU9YVt0XTtlLnByb3ZpZGVyc1Jlc29sdmVyJiZlLnByb3ZpZGVyc1Jlc29sdmVyKGUpfWxldCBvPSExLHM9ITEsbD1NZCh0LGUsYS5sZW5ndGgsbnVsbCk7bmdEZXZNb2RlJiZibihsLG4uZGlyZWN0aXZlU3RhcnQsIlROb2RlLmRpcmVjdGl2ZVN0YXJ0IHNob3VsZCBwb2ludCB0byBqdXN0IGFsbG9jYXRlZCBzcGFjZSIpO2ZvcihsZXQgaT0wO2k8YS5sZW5ndGg7aSsrKXtjb25zdCBjPWFbaV07bi5tZXJnZWRBdHRycz1fYShuLm1lcmdlZEF0dHJzLGMuaG9zdEF0dHJzKSxHZCh0LG4sZSxsLGMpLGpkKGwsYyxyKSxudWxsIT09Yy5jb250ZW50UXVlcmllcyYmKG4uZmxhZ3N8PTgpLG51bGw9PT1jLmhvc3RCaW5kaW5ncyYmbnVsbD09PWMuaG9zdEF0dHJzJiYwPT09Yy5ob3N0VmFyc3x8KG4uZmxhZ3N8PTEyOCk7Y29uc3QgZD1jLnR5cGUucHJvdG90eXBlOyFvJiYoZC5uZ09uQ2hhbmdlc3x8ZC5uZ09uSW5pdHx8ZC5uZ0RvQ2hlY2spJiYoKHQucHJlT3JkZXJIb29rc3x8KHQucHJlT3JkZXJIb29rcz1bXSkpLnB1c2gobi5pbmRleCksbz0hMCksc3x8IWQubmdPbkNoYW5nZXMmJiFkLm5nRG9DaGVja3x8KCh0LnByZU9yZGVyQ2hlY2tIb29rc3x8KHQucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaChuLmluZGV4KSxzPSEwKSxsKyt9IShmdW5jdGlvbiByKHQsZSl7bmdEZXZNb2RlJiZMbyh0KTtjb25zdCBuPWUuZGlyZWN0aXZlU3RhcnQsbz1lLmRpcmVjdGl2ZUVuZCxpPXQuZGF0YSxhPWUuYXR0cnMscj1uZ0Rldk1vZGU/bmV3IG5kOltdO2xldCBzPW51bGwsbD1udWxsO2ZvcihsZXQgdD1uO3Q8bzt0Kyspe2NvbnN0IG49aVt0XSxvPW4uaW5wdXRzLGM9bnVsbD09PWF8fF9jKGUpP251bGw6S2QobyxhKTtyLnB1c2goYykscz1OZChvLHQscyksbD1OZChuLm91dHB1dHMsdCxsKX1udWxsIT09cyYmKHMuaGFzT3duUHJvcGVydHkoImNsYXNzIikmJihlLmZsYWdzfD0xNikscy5oYXNPd25Qcm9wZXJ0eSgic3R5bGUiKSYmKGUuZmxhZ3N8PTMyKSksZS5pbml0aWFsSW5wdXRzPXIsZS5pbnB1dHM9cyxlLm91dHB1dHM9bH0pKHQsbil9ciYmKGZ1bmN0aW9uIHModCxlLG4pe2lmKGUpe2NvbnN0IG89dC5sb2NhbE5hbWVzPW5nRGV2TW9kZT9uZXcgZWQ6W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kz0yKXtjb25zdCBpPW5bZVt0KzFdXTtpZihudWxsPT1pKXRocm93IG5ldyBubigiMzAxIixgRXhwb3J0IG9mIG5hbWUgJyR7ZVt0KzFdfScgbm90IGZvdW5kIWApO28ucHVzaChlW3RdLGkpfX19KShuLG8scil9cmV0dXJuIG4ubWVyZ2VkQXR0cnM9X2Eobi5tZXJnZWRBdHRycyxuLmF0dHJzKSxpfWZ1bmN0aW9uIEJkKHQsZSxuLG8saSxhKXtuZ0Rldk1vZGUmJkxvKHQpO2NvbnN0IHI9YS5ob3N0QmluZGluZ3M7aWYocil7bGV0IG49dC5ob3N0QmluZGluZ09wQ29kZXM7bnVsbD09PW4mJihuPXQuaG9zdEJpbmRpbmdPcENvZGVzPVtdKTtjb25zdCBhPX5lLmluZGV4OyhmdW5jdGlvbiBzKHQpe2xldCBlPXQubGVuZ3RoO2Zvcig7ZT4wOyl7Y29uc3Qgbj10Wy0tZV07aWYoIm51bWJlciI9PXR5cGVvZiBuJiZuPDApcmV0dXJuIG59cmV0dXJuIDB9KShuKSE9YSYmbi5wdXNoKGEpLG4ucHVzaChvLGkscil9fWZ1bmN0aW9uIFZkKHQsZSl7bnVsbCE9PXQuaG9zdEJpbmRpbmdzJiZ0Lmhvc3RCaW5kaW5ncygxLGUpfWZ1bmN0aW9uIFVkKHQsZSl7bmdEZXZNb2RlJiZMbyh0KSxlLmZsYWdzfD0yLCh0LmNvbXBvbmVudHN8fCh0LmNvbXBvbmVudHM9bmdEZXZNb2RlP25ldyB0ZDpbXSkpLnB1c2goZS5pbmRleCl9ZnVuY3Rpb24gamQodCxlLG4pe2lmKG4pe2lmKGUuZXhwb3J0QXMpZm9yKGxldCBvPTA7bzxlLmV4cG9ydEFzLmxlbmd0aDtvKyspbltlLmV4cG9ydEFzW29dXT10O1JvKGUpJiYoblsiIl09dCl9fWZ1bmN0aW9uIFdkKHQsZSxuKXtuZ0Rldk1vZGUmJmhuKG4sdC5kaXJlY3RpdmVFbmQtdC5kaXJlY3RpdmVTdGFydCwiUmVhY2hlZCB0aGUgbWF4IG51bWJlciBvZiBkaXJlY3RpdmVzIiksdC5mbGFnc3w9MSx0LmRpcmVjdGl2ZVN0YXJ0PWUsdC5kaXJlY3RpdmVFbmQ9ZStuLHQucHJvdmlkZXJJbmRleGVzPWV9ZnVuY3Rpb24gR2QodCxlLG4sbyxpKXtuZ0Rldk1vZGUmJnZuKG8sdm8sIk11c3QgYmUgaW4gRXhwYW5kbyBzZWN0aW9uIiksdC5kYXRhW29dPWk7Y29uc3QgYT1pLmZhY3Rvcnl8fChpLmZhY3Rvcnk9R28oaS50eXBlLCEwKSkscj1uZXcgdWEoYSxSbyhpKSxudWxsKTt0LmJsdWVwcmludFtvXT1yLG5bb109cixCZCh0LGUsMCxvLE1kKHQsbixpLmhvc3RWYXJzLFNjKSxpKX1mdW5jdGlvbiBZZCh0LGUsbil7Y29uc3Qgbz1kaShlLHQpLGk9RGQobiksYT10WzEwXSxyPW5wKHQseWQodCxpLG51bGwsbi5vblB1c2g/NjQ6MTYsbyxlLGEsYS5jcmVhdGVSZW5kZXJlcihvLG4pLG51bGwsbnVsbCkpO3RbZS5pbmRleF09cn1mdW5jdGlvbiBxZCh0LGUsbixvLGksYSl7bmdEZXZNb2RlJiYoeW4obyxTYywiSW5jb21pbmcgdmFsdWUgc2hvdWxkIG5ldmVyIGJlIE5PX0NIQU5HRS4iKSwoZnVuY3Rpb24gcih0KXtpZih0LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgib24iKSl7Y29uc3QgZT1gQmluZGluZyB0byBldmVudCBhdHRyaWJ1dGUgJyR7dH0nIGlzIGRpc2FsbG93ZWQgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHBsZWFzZSB1c2UgKCR7dC5zbGljZSgyKX0pPS4uLmA7dGhyb3cgbmV3IEVycm9yKGUpfX0pKG4pLGdhKHQsMixgQXR0ZW1wdGVkIHRvIHNldCBhdHRyaWJ1dGUgXGAke259XGAgb24gYSBjb250YWluZXIgbm9kZS4gSG9zdCBiaW5kaW5ncyBhcmUgbm90IHZhbGlkIG9uIG5nLWNvbnRhaW5lciBvciBuZy10ZW1wbGF0ZS5gKSk7Y29uc3Qgcz1kaSh0LGUpO1pkKGVbMTFdLHMsYSx0LnZhbHVlLG4sbyxpKX1mdW5jdGlvbiBaZCh0LGUsbixvLGksYSxyKXtpZihudWxsPT1hKW5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlQXR0cmlidXRlKysscmkodCk/dC5yZW1vdmVBdHRyaWJ1dGUoZSxpLG4pOmUucmVtb3ZlQXR0cmlidXRlKGkpO2Vsc2V7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRBdHRyaWJ1dGUrKztjb25zdCBzPW51bGw9PXI/cm4oYSk6cihhLG98fCIiLGkpO3JpKHQpP3Quc2V0QXR0cmlidXRlKGUsaSxzLG4pOm4/ZS5zZXRBdHRyaWJ1dGVOUyhuLGkscyk6ZS5zZXRBdHRyaWJ1dGUoaSxzKX19ZnVuY3Rpb24gWGQodCxlLG4sbyxpLGEpe2NvbnN0IHI9YVtlXTtpZihudWxsIT09cil7Y29uc3QgZT1vLnNldElucHV0O2ZvcihsZXQgYT0wO2E8ci5sZW5ndGg7KXtjb25zdCBzPXJbYSsrXSxsPXJbYSsrXSxjPXJbYSsrXTtpZihudWxsIT09ZT9vLnNldElucHV0KG4sYyxzLGwpOm5bbF09YyxuZ0Rldk1vZGUpe0lkKHQsZGkoaSx0KSxpLnR5cGUsbCxjKX19fX1mdW5jdGlvbiBLZCh0LGUpe2xldCBuPW51bGwsbz0wO2Zvcig7bzxlLmxlbmd0aDspe2NvbnN0IGk9ZVtvXTtpZigwIT09aSlpZig1IT09aSl7aWYoIm51bWJlciI9PXR5cGVvZiBpKWJyZWFrO3QuaGFzT3duUHJvcGVydHkoaSkmJihudWxsPT09biYmKG49W10pLG4ucHVzaChpLHRbaV0sZVtvKzFdKSksbys9Mn1lbHNlIG8rPTI7ZWxzZSBvKz00fXJldHVybiBufWNvbnN0IEpkPSgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmS24oKSYmQ2woIkxDb250YWluZXIiKTtmdW5jdGlvbiBRZCh0LGUsbixvKXtuZ0Rldk1vZGUmJkZvKGUpLG5nRGV2TW9kZSYmIXJpKGVbMTFdKSYmUG4obik7Y29uc3QgaT1uZXcobmdEZXZNb2RlP0pkOkFycmF5KSh0LCEwLCExLGUsbnVsbCwwLG8sbixudWxsLG51bGwpO3JldHVybiBuZ0Rldk1vZGUmJmduKGkubGVuZ3RoLE9vLCJTaG91bGQgYWxsb2NhdGUgY29ycmVjdCBudW1iZXIgb2Ygc2xvdHMgZm9yIExDb250YWluZXIgaGVhZGVyLiIpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIGEodCl7TGModCxuZXcgZ2QodCkpfSkoaSksaX1mdW5jdGlvbiAkZCh0LGUpe25nRGV2TW9kZSYmZ24oZmkodCksITEsIlNob3VsZCBiZSBydW4gaW4gdXBkYXRlIG1vZGUiKTtjb25zdCBuPXVpKGUsdCk7aWYoZ2kobikpe2NvbnN0IHQ9blsxXTs4MCZuWzJdP3hkKHQsbix0LnRlbXBsYXRlLG5bOF0pOm5bNV0+MCYmdHAobil9fWZ1bmN0aW9uIHRwKHQpe2ZvcihsZXQgZT1JbCh0KTtudWxsIT09ZTtlPUhsKGUpKWZvcihsZXQgdD1Pbzt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO2lmKDEwMjQmblsyXSl7Y29uc3QgdD1uWzFdO25nRGV2TW9kZSYmeG4odCwiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSx4ZCh0LG4sdC50ZW1wbGF0ZSxuWzhdKX1lbHNlIG5bNV0+MCYmdHAobil9Y29uc3QgZT10WzFdLmNvbXBvbmVudHM7aWYobnVsbCE9PWUpZm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IG89dWkoZVtuXSx0KTtnaShvKSYmb1s1XT4wJiZ0cChvKX19ZnVuY3Rpb24gZXAodCxlKXtuZ0Rldk1vZGUmJmduKGZpKHQpLCEwLCJTaG91bGQgYmUgcnVuIGluIGNyZWF0aW9uIG1vZGUiKTtjb25zdCBuPXVpKGUsdCksbz1uWzFdOyEoZnVuY3Rpb24gaSh0LGUpe2ZvcihsZXQgbj1lLmxlbmd0aDtuPHQuYmx1ZXByaW50Lmxlbmd0aDtuKyspZS5wdXNoKHQuYmx1ZXByaW50W25dKX0pKG8sbiksdmQobyxuLG5bOF0pfWZ1bmN0aW9uIG5wKHQsZSl7cmV0dXJuIHRbMTNdP3RbMTRdWzRdPWU6dFsxM109ZSx0WzE0XT1lLGV9ZnVuY3Rpb24gb3AodCl7Zm9yKDt0Oyl7dFsyXXw9NjQ7Y29uc3QgZT1ObCh0KTtpZigwIT0oNTEyJnRbMl0pJiYhZSlyZXR1cm4gdDt0PWV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaXAodCl7Zm9yKGxldCBlPTA7ZTx0LmNvbXBvbmVudHMubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LmNvbXBvbmVudHNbZV0sbz1zbChuKSxpPW9bMV07T2QoaSxvLGkudGVtcGxhdGUsbil9fWZ1bmN0aW9uIGFwKHQsZSxuKXtjb25zdCBvPWVbMTBdO28uYmVnaW4mJm8uYmVnaW4oKTt0cnl7eGQodCxlLHQudGVtcGxhdGUsbil9Y2F0Y2godCl7dGhyb3cgdXAoZSx0KSx0fWZpbmFsbHl7by5lbmQmJm8uZW5kKCl9fWZ1bmN0aW9uIHJwKHQpe2lwKHRbOF0pfWZ1bmN0aW9uIHNwKHQsZSxuKXtuZ0Rldk1vZGUmJnhuKGUsIlZpZXcgcXVlcmllcyBmdW5jdGlvbiB0byBleGVjdXRlIG11c3QgYmUgZGVmaW5lZC4iKSxXaSgwKSxlKHQsbil9ZnVuY3Rpb24gbHAodCxlLG4sbywuLi5pKXtpZihudWxsPT09dFtvXSYmKG51bGw9PWUuaW5wdXRzfHwhZS5pbnB1dHNbbl0pKXsoZS5wcm9wZXJ0eUJpbmRpbmdzfHwoZS5wcm9wZXJ0eUJpbmRpbmdzPVtdKSkucHVzaChvKTtsZXQgYT1uO2kubGVuZ3RoPjAmJihhKz1rbCtpLmpvaW4oa2wpKSx0W29dPWF9fWNvbnN0IGNwPWhkO2Z1bmN0aW9uIGRwKHQpe3JldHVybiB0WzddfHwodFs3XT1uZ0Rldk1vZGU/bmV3IG9kOltdKX1mdW5jdGlvbiBwcCh0KXtyZXR1cm4gdC5jbGVhbnVwfHwodC5jbGVhbnVwPW5nRGV2TW9kZT9uZXcgaWQ6W10pfWZ1bmN0aW9uIG1wKHQsZSxuKXtyZXR1cm4obnVsbD09PXR8fFJvKHQpKSYmKG49KGZ1bmN0aW9uIG8odCl7Zm9yKDtBcnJheS5pc0FycmF5KHQpOyl7aWYoIm9iamVjdCI9PXR5cGVvZiB0WzFdKXJldHVybiB0O3Q9dFswXX1yZXR1cm4gbnVsbH0pKG5bZS5pbmRleF0pKSxuWzExXX1mdW5jdGlvbiB1cCh0LGUpe2NvbnN0IG49dFs5XSxvPW4/bi5nZXQoZmwsbnVsbCk6bnVsbDtvJiZvLmhhbmRsZUVycm9yKGUpfWZ1bmN0aW9uIGZwKHQsZSxuLG8saSl7Zm9yKGxldCBhPTA7YTxuLmxlbmd0aDspe2NvbnN0IHI9blthKytdLHM9blthKytdLGw9ZVtyXTtuZ0Rldk1vZGUmJnduKGUscik7Y29uc3QgYz10LmRhdGFbcl07bnVsbCE9PWMuc2V0SW5wdXQ/Yy5zZXRJbnB1dChsLGksbyxzKTpsW3NdPWl9fWZ1bmN0aW9uIGdwKHQsZSxuKXtuZ0Rldk1vZGUmJnVuKG4sIlZhbHVlIHNob3VsZCBiZSBhIHN0cmluZyIpLG5nRGV2TW9kZSYmeW4obixTYywidmFsdWUgc2hvdWxkIG5vdCBiZSBOT19DSEFOR0UiKSxuZ0Rldk1vZGUmJnduKHQsZSk7Y29uc3Qgbz1jaShlLHQpO25nRGV2TW9kZSYmeG4obywibmF0aXZlIGVsZW1lbnQgc2hvdWxkIGV4aXN0IiksVmwodFsxMV0sbyxuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaHAodCxlLG4pe25nRGV2TW9kZSYmTG8oT2koKSwiRXhwZWN0aW5nIHRvIGJlIGNhbGxlZCBpbiBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtsZXQgbz1uP3Quc3R5bGVzOm51bGwsaT1uP3QuY2xhc3NlczpudWxsLGE9MDtpZihudWxsIT09ZSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO2lmKCJudW1iZXIiPT10eXBlb2YgbilhPW47ZWxzZSBpZigxPT1hKWk9SmUoaSxuKTtlbHNlIGlmKDI9PWEpe289SmUobyxuKyI6ICIrZVsrK3RdKyI7Iil9fW4/dC5zdHlsZXM9bzp0LnN0eWxlc1dpdGhvdXRIb3N0PW8sbj90LmNsYXNzZXM9aTp0LmNsYXNzZXNXaXRob3V0SG9zdD1pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBicCh0KXtuZ0Rldk1vZGUmJnhuKHQsImNvbXBvbmVudCIpO2NvbnN0IGU9b3AoaWwodCkpO25nRGV2TW9kZSYmeG4oZVs4XSwicm9vdENvbnRleHQgc2hvdWxkIGJlIGRlZmluZWQiKSwoZnVuY3Rpb24gbih0LGUpe2lmKDA9PT10LmZsYWdzJiZ0LmNsZWFuPT1oZCl7bGV0IG47dC5mbGFnc3w9ZSx0LmNsZWFuPW5ldyBQcm9taXNlKCh0PT5uPXQpKSx0LnNjaGVkdWxlcigoKCk9PntpZigxJnQuZmxhZ3MmJih0LmZsYWdzJj0tMixpcCh0KSksMiZ0LmZsYWdzKXt0LmZsYWdzJj0tMztjb25zdCBlPXQucGxheWVySGFuZGxlcjtlJiZlLmZsdXNoUGxheWVycygpfXQuY2xlYW49aGQsbihudWxsKX0pKX19KShlWzhdLDEpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB5cD1uZXcgZXIoIklOSkVDVE9SIiwtMSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIF9we2dldCh0LGU9d3Ipe2lmKGU9PT13cil7Y29uc3QgZT1uZXcgRXJyb3IoYE51bGxJbmplY3RvckVycm9yOiBObyBwcm92aWRlciBmb3IgJHtLZSh0KX0hYCk7dGhyb3cgZS5uYW1lPSJOdWxsSW5qZWN0b3JFcnJvciIsZX1yZXR1cm4gZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IENwPW5ldyBlcigiU2V0IEluamVjdG9yIHNjb3BlLiIpLE1wPXt9LHZwPXt9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgeHA7ZnVuY3Rpb24gT3AoKXtyZXR1cm4gdm9pZCAwPT09eHAmJih4cD1uZXcgX3ApLHhwfWZ1bmN0aW9uIFBwKHQsZT1udWxsLG49bnVsbCxvKXtyZXR1cm4gbmV3IHdwKHQsbixlfHxPcCgpLG8pfWNsYXNzIHdwe2NvbnN0cnVjdG9yKHQsZSxuLG89bnVsbCl7dGhpcy5wYXJlbnQ9bix0aGlzLnJlY29yZHM9bmV3IE1hcCx0aGlzLmluamVjdG9yRGVmVHlwZXM9bmV3IFNldCx0aGlzLm9uRGVzdHJveT1uZXcgU2V0LHRoaXMuX2Rlc3Ryb3llZD0hMTtjb25zdCBpPVtdO2UmJm1yKGUsKG49PnRoaXMucHJvY2Vzc1Byb3ZpZGVyKG4sdCxlKSkpLG1yKFt0XSwodD0+dGhpcy5wcm9jZXNzSW5qZWN0b3JUeXBlKHQsW10saSkpKSx0aGlzLnJlY29yZHMuc2V0KHlwLERwKHZvaWQgMCx0aGlzKSk7Y29uc3QgYT10aGlzLnJlY29yZHMuZ2V0KENwKTt0aGlzLnNjb3BlPW51bGwhPWE/YS52YWx1ZTpudWxsLHRoaXMuc291cmNlPW98fCgib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbDpLZSh0KSl9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9ZGVzdHJveSgpe3RoaXMuYXNzZXJ0Tm90RGVzdHJveWVkKCksdGhpcy5fZGVzdHJveWVkPSEwO3RyeXt0aGlzLm9uRGVzdHJveS5mb3JFYWNoKCh0PT50Lm5nT25EZXN0cm95KCkpKX1maW5hbGx5e3RoaXMucmVjb3Jkcy5jbGVhcigpLHRoaXMub25EZXN0cm95LmNsZWFyKCksdGhpcy5pbmplY3RvckRlZlR5cGVzLmNsZWFyKCl9fWdldCh0LGU9d3Isbj1Ibi5EZWZhdWx0KXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpO2NvbnN0IG89RXIodGhpcyksaT1Mbih2b2lkIDApO3RyeXtpZighKG4mSG4uU2tpcFNlbGYpKXtsZXQgZT10aGlzLnJlY29yZHMuZ2V0KHQpO2lmKHZvaWQgMD09PWUpe2NvbnN0IG49KGZ1bmN0aW9uIG8odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR8fCJvYmplY3QiPT10eXBlb2YgdCYmdCBpbnN0YW5jZW9mIGVyfSkodCkmJlJuKHQpO2U9biYmdGhpcy5pbmplY3RhYmxlRGVmSW5TY29wZShuKT9EcChrcCh0KSxNcCk6bnVsbCx0aGlzLnJlY29yZHMuc2V0KHQsZSl9aWYobnVsbCE9ZSlyZXR1cm4gdGhpcy5oeWRyYXRlKHQsZSl9cmV0dXJuKG4mSG4uU2VsZj9PcCgpOnRoaXMucGFyZW50KS5nZXQodCxlPW4mSG4uT3B0aW9uYWwmJmU9PT13cj9udWxsOmUpfWNhdGNoKGUpe2lmKCJOdWxsSW5qZWN0b3JFcnJvciI9PT1lLm5hbWUpe2lmKChlLm5nVGVtcFRva2VuUGF0aD1lLm5nVGVtcFRva2VuUGF0aHx8W10pLnVuc2hpZnQoS2UodCkpLG8pdGhyb3cgZTtyZXR1cm4gRnIoZSx0LCJSM0luamVjdG9yRXJyb3IiLHRoaXMuc291cmNlKX10aHJvdyBlfWZpbmFsbHl7TG4oaSksRXIobyl9fV9yZXNvbHZlSW5qZWN0b3JEZWZUeXBlcygpe3RoaXMuaW5qZWN0b3JEZWZUeXBlcy5mb3JFYWNoKCh0PT50aGlzLmdldCh0KSkpfXRvU3RyaW5nKCl7Y29uc3QgdD1bXTtyZXR1cm4gdGhpcy5yZWNvcmRzLmZvckVhY2goKChlLG4pPT50LnB1c2goS2UobikpKSksYFIzSW5qZWN0b3JbJHt0LmpvaW4oIiwgIil9XWB9YXNzZXJ0Tm90RGVzdHJveWVkKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiSW5qZWN0b3IgaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQuIil9cHJvY2Vzc0luamVjdG9yVHlwZSh0LGUsbil7aWYoISh0PXRuKHQpKSlyZXR1cm4hMTtsZXQgbz1Bbih0KTtjb25zdCBpPW51bGw9PW8mJnQubmdNb2R1bGV8fHZvaWQgMCxhPXZvaWQgMD09PWk/dDppO2lmKG5nRGV2TW9kZSYmLTEhPT1lLmluZGV4T2YoYSkpe2xuKEtlKGEpLGUubWFwKEtlKSl9Y29uc3Qgcj0tMSE9PW4uaW5kZXhPZihhKTtpZih2b2lkIDAhPT1pJiYobz1BbihpKSksbnVsbD09bylyZXR1cm4hMTtpZihudWxsIT1vLmltcG9ydHMmJiFyKXtsZXQgdDtuZ0Rldk1vZGUmJmUucHVzaChhKSxuLnB1c2goYSk7dHJ5e21yKG8uaW1wb3J0cywobz0+e3RoaXMucHJvY2Vzc0luamVjdG9yVHlwZShvLGUsbikmJih2b2lkIDA9PT10JiYodD1bXSksdC5wdXNoKG8pKX0pKX1maW5hbGx5e25nRGV2TW9kZSYmZS5wb3AoKX1pZih2b2lkIDAhPT10KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdHtuZ01vZHVsZTpuLHByb3ZpZGVyczpvfT10W2VdO21yKG8sKHQ9PnRoaXMucHJvY2Vzc1Byb3ZpZGVyKHQsbixvfHxRbikpKX19dGhpcy5pbmplY3RvckRlZlR5cGVzLmFkZChhKTtjb25zdCBzPUdvKGEpfHwoKCk9Pm5ldyBhKTt0aGlzLnJlY29yZHMuc2V0KGEsRHAocyxNcCkpO2NvbnN0IGw9by5wcm92aWRlcnM7aWYobnVsbCE9bCYmIXIpe2NvbnN0IGU9dDttcihsLCh0PT50aGlzLnByb2Nlc3NQcm92aWRlcih0LGUsbCkpKX1yZXR1cm4gdm9pZCAwIT09aSYmdm9pZCAwIT09dC5wcm92aWRlcnN9cHJvY2Vzc1Byb3ZpZGVyKHQsZSxuKXtsZXQgbz1FcCh0PXRuKHQpKT90OnRuKHQmJnQucHJvdmlkZSk7Y29uc3QgaT0oZnVuY3Rpb24gYSh0LGUsbil7aWYoUnAodCkpcmV0dXJuIERwKHZvaWQgMCx0LnVzZVZhbHVlKTtyZXR1cm4gRHAoU3AodCxlLG4pLE1wKX0pKHQsZSxuKTtpZihFcCh0KXx8ITAhPT10Lm11bHRpKXtjb25zdCB0PXRoaXMucmVjb3Jkcy5nZXQobyk7bmdEZXZNb2RlJiZ0JiZ2b2lkIDAhPT10Lm11bHRpJiZjbigpfWVsc2V7bGV0IGU9dGhpcy5yZWNvcmRzLmdldChvKTtlP25nRGV2TW9kZSYmdm9pZCAwPT09ZS5tdWx0aSYmY24oKTooZT1EcCh2b2lkIDAsTXAsITApLGUuZmFjdG9yeT0oKT0+SXIoZS5tdWx0aSksdGhpcy5yZWNvcmRzLnNldChvLGUpKSxvPXQsZS5tdWx0aS5wdXNoKHQpfXRoaXMucmVjb3Jkcy5zZXQobyxpKX1oeWRyYXRlKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmZS52YWx1ZT09PXZwP2xuKEtlKHQpKTplLnZhbHVlPT09TXAmJihlLnZhbHVlPXZwLGUudmFsdWU9ZS5mYWN0b3J5KCkpLCJvYmplY3QiPT10eXBlb2YgZS52YWx1ZSYmZS52YWx1ZSYmKGZ1bmN0aW9uIG4odCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0Lm5nT25EZXN0cm95fSkoZS52YWx1ZSkmJnRoaXMub25EZXN0cm95LmFkZChlLnZhbHVlKSxlLnZhbHVlfWluamVjdGFibGVEZWZJblNjb3BlKHQpe2lmKCF0LnByb3ZpZGVkSW4pcmV0dXJuITE7Y29uc3QgZT10bih0LnByb3ZpZGVkSW4pO3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iYW55Ij09PWV8fGU9PT10aGlzLnNjb3BlOnRoaXMuaW5qZWN0b3JEZWZUeXBlcy5oYXMoZSl9fWZ1bmN0aW9uIGtwKHQpe2NvbnN0IGU9Um4odCksbj1udWxsIT09ZT9lLmZhY3Rvcnk6R28odCk7aWYobnVsbCE9PW4pcmV0dXJuIG47aWYodCBpbnN0YW5jZW9mIGVyKXRocm93IG5ldyBFcnJvcihgVG9rZW4gJHtLZSh0KX0gaXMgbWlzc2luZyBhIMm1cHJvdiBkZWZpbml0aW9uLmApO2lmKHQgaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4oZnVuY3Rpb24gbyh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKGU+MCl7Y29uc3Qgbj1ncihlLCI/Iik7dGhyb3cgbmV3IEVycm9yKGBDYW4ndCByZXNvbHZlIGFsbCBwYXJhbWV0ZXJzIGZvciAke0tlKHQpfTogKCR7bi5qb2luKCIsICIpfSkuYCl9Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtjb25zdCBlPXQmJih0W1RuXXx8dFt6bl0pO2lmKGUpe2NvbnN0IG49KGZ1bmN0aW9uIG4odCl7aWYodC5oYXNPd25Qcm9wZXJ0eSgibmFtZSIpKXJldHVybiB0Lm5hbWU7Y29uc3QgZT0oIiIrdCkubWF0Y2goL15mdW5jdGlvblxzKihbXlxzKF0rKS8pO3JldHVybiBudWxsPT09ZT8iIjplWzFdfSkodCk7cmV0dXJuIGNvbnNvbGUud2FybihgREVQUkVDQVRFRDogREkgaXMgaW5zdGFudGlhdGluZyBhIHRva2VuICIke259IiB0aGF0IGluaGVyaXRzIGl0cyBASW5qZWN0YWJsZSBkZWNvcmF0b3IgYnV0IGRvZXMgbm90IHByb3ZpZGUgb25lIGl0c2VsZi5cblRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3IgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBBbmd1bGFyLiBQbGVhc2UgYWRkIEBJbmplY3RhYmxlKCkgdG8gdGhlICIke259IiBjbGFzcy5gKSxlfXJldHVybiBudWxsfSkodCk7cmV0dXJuIG51bGwhPT1uPygpPT5uLmZhY3RvcnkodCk6KCk9Pm5ldyB0fSkodCk7dGhyb3cgbmV3IEVycm9yKCJ1bnJlYWNoYWJsZSIpfWZ1bmN0aW9uIFNwKHQsZSxuKXtsZXQgbztpZihFcCh0KSl7Y29uc3QgZT10bih0KTtyZXR1cm4gR28oZSl8fGtwKGUpfWlmKFJwKHQpKW89KCk9PnRuKHQudXNlVmFsdWUpO2Vsc2UgaWYoKGZ1bmN0aW9uIGkodCl7cmV0dXJuISghdHx8IXQudXNlRmFjdG9yeSl9KSh0KSlvPSgpPT50LnVzZUZhY3RvcnkoLi4uSXIodC5kZXBzfHxbXSkpO2Vsc2UgaWYoKGZ1bmN0aW9uIGEodCl7cmV0dXJuISghdHx8IXQudXNlRXhpc3RpbmcpfSkodCkpbz0oKT0+VHIodG4odC51c2VFeGlzdGluZykpO2Vsc2V7Y29uc3QgaT10bih0JiYodC51c2VDbGFzc3x8dC5wcm92aWRlKSk7aWYobmdEZXZNb2RlJiYhaSYmKGZ1bmN0aW9uIHIodCxlLG4pe2xldCBvPSIiO3QmJmUmJihvPWAgLSBvbmx5IGluc3RhbmNlcyBvZiBQcm92aWRlciBhbmQgVHlwZSBhcmUgYWxsb3dlZCwgZ290OiBbJHtlLm1hcCgodD0+dD09bj8iPyIrbisiPyI6Ii4uLiIpKS5qb2luKCIsICIpfV1gKTt0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJvdmlkZXIgZm9yIHRoZSBOZ01vZHVsZSAnJHtLZSh0KX0nYCtvKX0pKGUsbix0KSwhKGZ1bmN0aW9uIHModCl7cmV0dXJuISF0LmRlcHN9KSh0KSlyZXR1cm4gR28oaSl8fGtwKGkpO289KCk9Pm5ldyBpKC4uLklyKHQuZGVwcykpfXJldHVybiBvfWZ1bmN0aW9uIERwKHQsZSxuPSExKXtyZXR1cm57ZmFjdG9yeTp0LHZhbHVlOmUsbXVsdGk6bj9bXTp2b2lkIDB9fWZ1bmN0aW9uIFJwKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0JiZEciBpbiB0fWZ1bmN0aW9uIEVwKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWNvbnN0IEFwPWZ1bmN0aW9uIFRwKHQsZSxuKXtyZXR1cm4oZnVuY3Rpb24gbyh0LGU9bnVsbCxuPW51bGwsaSl7Y29uc3QgYT1QcCh0LGUsbixpKTtyZXR1cm4gYS5fcmVzb2x2ZUluamVjdG9yRGVmVHlwZXMoKSxhfSkoe25hbWU6bn0sZSx0LG4pfTtjbGFzcyBOcHtzdGF0aWMgY3JlYXRlKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/QXAodCxlLCIiKTpBcCh0LnByb3ZpZGVycyx0LnBhcmVudCx0Lm5hbWV8fCIiKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB6cCh0KXtHcCh0KTtjb25zdCBlPW5sKHQpO3JldHVybiBudWxsPT09ZT9udWxsOih2b2lkIDA9PT1lLmNvbXBvbmVudCYmKGUuY29tcG9uZW50PShmdW5jdGlvbiBuKHQsZSl7Y29uc3Qgbj1lWzFdLmRhdGFbdF07cmV0dXJuIDImbi5mbGFncz9lW24uZGlyZWN0aXZlU3RhcnRdOm51bGx9KShlLm5vZGVJbmRleCxlLmxWaWV3KSksZS5jb21wb25lbnQpfWZ1bmN0aW9uIElwKHQpe0dwKHQpO2NvbnN0IGU9bmwodCk7cmV0dXJuIG51bGw9PT1lP251bGw6ZS5sVmlld1s4XX1mdW5jdGlvbiBIcCh0KXtjb25zdCBlPW5sKHQpO2lmKG51bGw9PT1lKXJldHVybiBudWxsO2xldCBuLG89ZS5sVmlldztmb3IobmdEZXZNb2RlJiZGbyhvKTsyPT09b1sxXS50eXBlJiYobj1ObChvKSk7KW89bjtyZXR1cm4gNTEyJm9bMl0/bnVsbDpvWzhdfWZ1bmN0aW9uIEZwKHQpe3JldHVyblsuLi56bCh0KS5jb21wb25lbnRzXX1mdW5jdGlvbiBMcCh0KXtjb25zdCBlPW5sKHQpO2lmKG51bGw9PT1lKXJldHVybiBOcC5OVUxMO3JldHVybiBuZXcgVWEoZS5sVmlld1sxXS5kYXRhW2Uubm9kZUluZGV4XSxlLmxWaWV3KX1mdW5jdGlvbiBCcCh0KXtpZih0IGluc3RhbmNlb2YgVGV4dClyZXR1cm5bXTtjb25zdCBlPW5sKHQpO2lmKG51bGw9PT1lKXJldHVybltdO2NvbnN0IG49ZS5sVmlldyxvPW5bMV0saT1lLm5vZGVJbmRleDtyZXR1cm4obnVsbD09bz92b2lkIDA6by5kYXRhW2ldKT8odm9pZCAwPT09ZS5kaXJlY3RpdmVzJiYoZS5kaXJlY3RpdmVzPXBsKGksbiwhMSkpLG51bGw9PT1lLmRpcmVjdGl2ZXM/W106Wy4uLmUuZGlyZWN0aXZlc10pOltdfWZ1bmN0aW9uIFZwKHQpe2NvbnN0e2NvbnN0cnVjdG9yOmV9PXQ7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB0aGUgaW5zdGFuY2UgY29uc3RydWN0b3IiKTtjb25zdCBuPXlvKGUpO2lmKG4pcmV0dXJue2lucHV0czpuLmlucHV0cyxvdXRwdXRzOm4ub3V0cHV0cyxlbmNhcHN1bGF0aW9uOm4uZW5jYXBzdWxhdGlvbixjaGFuZ2VEZXRlY3Rpb246bi5vblB1c2g/VW4uT25QdXNoOlVuLkRlZmF1bHR9O2NvbnN0IG89X28oZSk7cmV0dXJuIG8/e2lucHV0czpvLmlucHV0cyxvdXRwdXRzOm8ub3V0cHV0c306bnVsbH1mdW5jdGlvbiBVcCh0KXtyZXR1cm4gbmwodCkubmF0aXZlfWZ1bmN0aW9uIGpwKHQpe0dwKHQpO2NvbnN0IGU9bmwodCk7aWYobnVsbD09PWUpcmV0dXJuW107Y29uc3Qgbj1lLmxWaWV3LG89bls3XSxpPW5bMV0uY2xlYW51cCxhPVtdO2lmKGkmJm8pZm9yKGxldCBlPTA7ZTxpLmxlbmd0aDspe2NvbnN0IHI9aVtlKytdLHM9aVtlKytdO2lmKCJzdHJpbmciPT10eXBlb2Ygcil7Y29uc3QgbD1yLGM9bGkobltzXSksZD1vW2lbZSsrXV0scD1pW2UrK10sbT0iYm9vbGVhbiI9PXR5cGVvZiBwfHxwPj0wPyJkb20iOiJvdXRwdXQiLHU9ImJvb2xlYW4iPT10eXBlb2YgcCYmcDt0PT1jJiZhLnB1c2goe2VsZW1lbnQ6dCxuYW1lOmwsY2FsbGJhY2s6ZCx1c2VDYXB0dXJlOnUsdHlwZTptfSl9fXJldHVybiBhLnNvcnQoV3ApLGF9ZnVuY3Rpb24gV3AodCxlKXtyZXR1cm4gdC5uYW1lPT1lLm5hbWU/MDp0Lm5hbWU8ZS5uYW1lPy0xOjF9ZnVuY3Rpb24gR3AodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiYhKHQgaW5zdGFuY2VvZiBFbGVtZW50KSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBpbnN0YW5jZSBvZiBET00gRWxlbWVudCIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBZcCh0KXticCh0KSxGcCh0KS5mb3JFYWNoKCh0PT4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPWlsKHQpO2FwKGVbMV0sZSx0KX0pKHQpKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL05wLlRIUk9XX0lGX05PVF9GT1VORD13cixOcC5OVUxMPW5ldyBfcCxOcC7JtXByb3Y9U24oe3Rva2VuOk5wLHByb3ZpZGVkSW46ImFueSIsZmFjdG9yeTooKT0+VHIoeXApfSksTnAuX19OR19FTEVNRU5UX0lEX189LTE7bGV0IHFwPSExO2Z1bmN0aW9uIFpwKHQsZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBDT01QSUxFRHx8IUNPTVBJTEVEKXtjb25zdCBuPVhuO2lmKG5nRGV2TW9kZSYmeG4oZSwiZnVuY3Rpb24gbm90IGRlZmluZWQiKSxuKXtsZXQgbz1uLm5nO298fChvPW4ubmc9e30pLG9bdF09ZX19fWZ1bmN0aW9uIFhwKHQsZSxuLG8saSl7Y29uc3QgYT1uWzFdLHI9KGZ1bmN0aW9uIHModCxlLG4pe2NvbnN0IG89d2koKTtpZih0LmZpcnN0Q3JlYXRlUGFzcyl7bi5wcm92aWRlcnNSZXNvbHZlciYmbi5wcm92aWRlcnNSZXNvbHZlcihuKTtjb25zdCBpPU1kKHQsZSwxLG51bGwpO25nRGV2TW9kZSYmZ24oaSxvLmRpcmVjdGl2ZVN0YXJ0LCJCZWNhdXNlIHRoaXMgaXMgYSByb290IGNvbXBvbmVudCB0aGUgYWxsb2NhdGVkIGV4cGFuZG8gc2hvdWxkIG1hdGNoIHRoZSBUTm9kZSBjb21wb25lbnQuIiksR2QodCxvLGUsaSxuKX1jb25zdCBpPUxhKGUsdCxvLmRpcmVjdGl2ZVN0YXJ0LG8pO2FsKGksZSk7Y29uc3QgYT1kaShvLGUpO3JldHVybiBhJiZhbChhLGUpLGl9KShhLG4sZSk7aWYoby5jb21wb25lbnRzLnB1c2gociksdFs4XT1yLGkmJmkuZm9yRWFjaCgodD0+dChyLGUpKSksZS5jb250ZW50UXVlcmllcyl7Y29uc3QgdD13aSgpO25nRGV2TW9kZSYmeG4odCwiVE5vZGUgZXhwZWN0ZWQiKSxlLmNvbnRlbnRRdWVyaWVzKDEscix0LmRpcmVjdGl2ZVN0YXJ0KX1jb25zdCBsPXdpKCk7aWYobmdEZXZNb2RlJiZ4bihsLCJ0Tm9kZSBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkgY3JlYXRlZCIpLGEuZmlyc3RDcmVhdGVQYXNzJiYobnVsbCE9PWUuaG9zdEJpbmRpbmdzfHxudWxsIT09ZS5ob3N0QXR0cnMpKXtlYShsLmluZGV4KTtCZChuWzFdLGwsMCxsLmRpcmVjdGl2ZVN0YXJ0LGwuZGlyZWN0aXZlRW5kLGUpLFZkKGUscil9cmV0dXJuIHJ9ZnVuY3Rpb24gS3AodCxlKXtjb25zdCBuPXNsKHQpO25nRGV2TW9kZSYmeG4obiwiTFZpZXcgaXMgcmVxdWlyZWQiKTtjb25zdCBvPW5bMV0saT13aSgpO25nRGV2TW9kZSYmeG4oaSwiVE5vZGUgaXMgcmVxdWlyZWQiKSxyYShvLGkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBKcCh0KXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcn1mdW5jdGlvbiBRcCh0KXtsZXQgZT1KcCh0LnR5cGUpLG49ITA7Y29uc3Qgbz1bdF07Zm9yKDtlOyl7bGV0IGk7aWYoUm8odCkpaT1lLsm1Y21wfHxlLsm1ZGlyO2Vsc2V7aWYoZS7JtWNtcCl0aHJvdyBuZXcgRXJyb3IoIkRpcmVjdGl2ZXMgY2Fubm90IGluaGVyaXQgQ29tcG9uZW50cyIpO2k9ZS7JtWRpcn1pZihpKXtpZihuKXtvLnB1c2goaSk7Y29uc3QgZT10O2UuaW5wdXRzPSRwKHQuaW5wdXRzKSxlLmRlY2xhcmVkSW5wdXRzPSRwKHQuZGVjbGFyZWRJbnB1dHMpLGUub3V0cHV0cz0kcCh0Lm91dHB1dHMpO2NvbnN0IG49aS5ob3N0QmluZGluZ3M7biYmbm0odCxuKTtjb25zdCBhPWkudmlld1F1ZXJ5LHI9aS5jb250ZW50UXVlcmllcztpZihhJiZ0bSh0LGEpLHImJmVtKHQsciksWGUodC5pbnB1dHMsaS5pbnB1dHMpLFhlKHQuZGVjbGFyZWRJbnB1dHMsaS5kZWNsYXJlZElucHV0cyksWGUodC5vdXRwdXRzLGkub3V0cHV0cyksUm8oaSkmJmkuZGF0YS5hbmltYXRpb24pe2NvbnN0IGU9dC5kYXRhO2UuYW5pbWF0aW9uPShlLmFuaW1hdGlvbnx8W10pLmNvbmNhdChpLmRhdGEuYW5pbWF0aW9uKX19Y29uc3QgZT1pLmZlYXR1cmVzO2lmKGUpZm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IGk9ZVtvXTtpJiZpLm5nSW5oZXJpdCYmaSh0KSxpPT09UXAmJihuPSExKX19ZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9IShmdW5jdGlvbiBpKHQpe2xldCBlPTAsbj1udWxsO2ZvcihsZXQgbz10Lmxlbmd0aC0xO28+PTA7by0tKXtjb25zdCBpPXRbb107aS5ob3N0VmFycz1lKz1pLmhvc3RWYXJzLGkuaG9zdEF0dHJzPV9hKGkuaG9zdEF0dHJzLG49X2EobixpLmhvc3RBdHRycykpfX0pKG8pfWZ1bmN0aW9uICRwKHQpe3JldHVybiB0PT09Sm4/e306dD09PVFuP1tdOnR9ZnVuY3Rpb24gdG0odCxlKXtjb25zdCBuPXQudmlld1F1ZXJ5O3Qudmlld1F1ZXJ5PW4/KHQsbyk9PntlKHQsbyksbih0LG8pfTplfWZ1bmN0aW9uIGVtKHQsZSl7Y29uc3Qgbj10LmNvbnRlbnRRdWVyaWVzO3QuY29udGVudFF1ZXJpZXM9bj8odCxvLGkpPT57ZSh0LG8saSksbih0LG8saSl9OmV9ZnVuY3Rpb24gbm0odCxlKXtjb25zdCBuPXQuaG9zdEJpbmRpbmdzO3QuaG9zdEJpbmRpbmdzPW4/KHQsbyk9PntlKHQsbyksbih0LG8pfTplfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBvbT1bInByb3ZpZGVyc1Jlc29sdmVyIl0saW09WyJ0ZW1wbGF0ZSIsImRlY2xzIiwiY29uc3RzIiwidmFycyIsIm9uUHVzaCIsIm5nQ29udGVudFNlbGVjdG9ycyIsInN0eWxlcyIsImVuY2Fwc3VsYXRpb24iLCJzY2hlbWFzIl07ZnVuY3Rpb24gYW0odCl7bGV0IGUsbj1KcCh0LnR5cGUpO2U9Um8odCk/bi7JtWNtcDpuLsm1ZGlyO2NvbnN0IG89dDtmb3IoY29uc3QgdCBvZiBvbSlvW3RdPWVbdF07aWYoUm8oZSkpZm9yKGNvbnN0IHQgb2YgaW0pb1t0XT1lW3RdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgcm09bnVsbDtmdW5jdGlvbiBzbSgpe2lmKCFybSl7Y29uc3QgdD1Ybi5TeW1ib2w7aWYodCYmdC5pdGVyYXRvcilybT10Lml0ZXJhdG9yO2Vsc2V7Y29uc3QgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhNYXAucHJvdG90eXBlKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7Y29uc3Qgbj10W2VdOyJlbnRyaWVzIiE9PW4mJiJzaXplIiE9PW4mJk1hcC5wcm90b3R5cGVbbl09PT1NYXAucHJvdG90eXBlLmVudHJpZXMmJihybT1uKX19fXJldHVybiBybX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gbG0odCxlKXtjb25zdCBuPWRtKHQpLG89ZG0oZSk7aWYobiYmbylyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3Qgbz10W3NtKCldKCksaT1lW3NtKCldKCk7Zm9yKDs7KXtjb25zdCB0PW8ubmV4dCgpLGU9aS5uZXh0KCk7aWYodC5kb25lJiZlLmRvbmUpcmV0dXJuITA7aWYodC5kb25lfHxlLmRvbmUpcmV0dXJuITE7aWYoIW4odC52YWx1ZSxlLnZhbHVlKSlyZXR1cm4hMX19KSh0LGUsbG0pO3tjb25zdCBpPXQmJigib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSxhPWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKTtyZXR1cm4hKG58fCFpfHxvfHwhYSl8fE9iamVjdC5pcyh0LGUpfX1jbGFzcyBjbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLndyYXBwZWQ9dH1zdGF0aWMgd3JhcCh0KXtyZXR1cm4gbmV3IGNtKHQpfXN0YXRpYyB1bndyYXAodCl7cmV0dXJuIGNtLmlzV3JhcHBlZCh0KT90LndyYXBwZWQ6dH1zdGF0aWMgaXNXcmFwcGVkKHQpe3JldHVybiB0IGluc3RhbmNlb2YgY219fWZ1bmN0aW9uIGRtKHQpe3JldHVybiEhcG0odCkmJihBcnJheS5pc0FycmF5KHQpfHwhKHQgaW5zdGFuY2VvZiBNYXApJiZzbSgpaW4gdCl9ZnVuY3Rpb24gcG0odCl7cmV0dXJuIG51bGwhPT10JiYoImZ1bmN0aW9uIj09dHlwZW9mIHR8fCJvYmplY3QiPT10eXBlb2YgdCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG1tKHQsZSxuKXtyZXR1cm4gdFtlXT1ufWZ1bmN0aW9uIHVtKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmd24odCxlKSxuZ0Rldk1vZGUmJnluKHRbZV0sU2MsIlN0b3JlZCB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpLHRbZV19ZnVuY3Rpb24gZm0odCxlLG4pe25nRGV2TW9kZSYmeW4obixTYywiSW5jb21pbmcgdmFsdWUgc2hvdWxkIG5ldmVyIGJlIE5PX0NIQU5HRS4iKSxuZ0Rldk1vZGUmJl9uKGUsdC5sZW5ndGgsIlNsb3Qgc2hvdWxkIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0byBOT19DSEFOR0UiKTtjb25zdCBvPXRbZV07aWYoT2JqZWN0LmlzKG8sbikpcmV0dXJuITE7aWYobmdEZXZNb2RlJiZBaSgpKXtjb25zdCBpPW8hPT1TYz9vOnZvaWQgMDtpZighbG0oaSxuKSl7Y29uc3QgYT0oZnVuY3Rpb24gaSh0LGUsbixvKXtjb25zdCBpPXRbMV0uZGF0YSxhPWlbZV07aWYoInN0cmluZyI9PXR5cGVvZiBhKXJldHVybiBhLmluZGV4T2Yoa2wpPi0xP1JsKHQsZSxlLGEsbyk6e3Byb3BOYW1lOmEsb2xkVmFsdWU6bixuZXdWYWx1ZTpvfTtpZihudWxsPT09YSl7bGV0IG49ZS0xO2Zvcig7InN0cmluZyIhPXR5cGVvZiBpW25dJiZudWxsPT09aVtuKzFdOyluLS07Y29uc3QgYT1pW25dO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7Y29uc3QgaT1hLm1hdGNoKG5ldyBSZWdFeHAoa2wsImciKSk7aWYoaSYmaS5sZW5ndGgtMT5lLW4pcmV0dXJuIFJsKHQsbixlLGEsbyl9fXJldHVybntwcm9wTmFtZTp2b2lkIDAsb2xkVmFsdWU6bixuZXdWYWx1ZTpvfX0pKHQsZSxpLG4pOyEoZnVuY3Rpb24gYSh0LGUsbixvKXtsZXQgaT1gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcjogRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZC4gUHJldmlvdXMgdmFsdWUke28/YCBmb3IgJyR7b30nYDoiIn06ICcke2V9Jy4gQ3VycmVudCB2YWx1ZTogJyR7bn0nLmA7dGhyb3cgdCYmKGkrPSIgSXQgc2VlbXMgbGlrZSB0aGUgdmlldyBoYXMgYmVlbiBjcmVhdGVkIGFmdGVyIGl0cyBwYXJlbnQgYW5kIGl0cyBjaGlsZHJlbiBoYXZlIGJlZW4gZGlydHkgY2hlY2tlZC4gSGFzIGl0IGJlZW4gY3JlYXRlZCBpbiBhIGNoYW5nZSBkZXRlY3Rpb24gaG9vaz8iKSxuZXcgbm4oIjEwMCIsaSl9KShvPT09U2MsYS5vbGRWYWx1ZSxhLm5ld1ZhbHVlLGEucHJvcE5hbWUpfXJldHVybiExfXJldHVybiB0W2VdPW4sITB9ZnVuY3Rpb24gZ20odCxlLG4sbyl7Y29uc3QgaT1mbSh0LGUsbik7cmV0dXJuIGZtKHQsZSsxLG8pfHxpfWZ1bmN0aW9uIGhtKHQsZSxuLG8saSl7Y29uc3QgYT1nbSh0LGUsbixvKTtyZXR1cm4gZm0odCxlKzIsaSl8fGF9ZnVuY3Rpb24gYm0odCxlLG4sbyxpLGEpe2NvbnN0IHI9Z20odCxlLG4sbyk7cmV0dXJuIGdtKHQsZSsyLGksYSl8fHJ9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHltKHQsZSxuLG8pe2NvbnN0IGk9eGkoKSxhPUhpKCk7aWYoZm0oaSxhLGUpKXtjb25zdCByPU9pKCkscz1uYSgpO3FkKHMsaSx0LGUsbixvKSxuZ0Rldk1vZGUmJmxwKHIuZGF0YSxzLCJhdHRyLiIrdCxhKX1yZXR1cm4geW19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIF9tKHQsZSl7bmdEZXZNb2RlJiZfbigyLGUubGVuZ3RoLCJzaG91bGQgaGF2ZSBhdCBsZWFzdCAzIHZhbHVlcyIpLG5nRGV2TW9kZSYmZ24oZS5sZW5ndGglMiwxLCJzaG91bGQgaGF2ZSBhbiBvZGQgbnVtYmVyIG9mIHZhbHVlcyIpO2xldCBuPSExLG89emkoKTtmb3IobGV0IGk9MTtpPGUubGVuZ3RoO2krPTIpbj1mbSh0LG8rKyxlW2ldKXx8bjtpZihJaShvKSwhbilyZXR1cm4gU2M7bGV0IGk9ZVswXTtmb3IobGV0IHQ9MTt0PGUubGVuZ3RoO3QrPTIpaSs9cm4oZVt0XSkrZVt0KzFdO3JldHVybiBpfWZ1bmN0aW9uIENtKHQsZSxuLG8pe3JldHVybiBmbSh0LEhpKCksbik/ZStybihuKStvOlNjfWZ1bmN0aW9uIE1tKHQsZSxuLG8saSxhKXtjb25zdCByPWdtKHQsemkoKSxuLGkpO3JldHVybiBGaSgyKSxyP2Urcm4obikrbytybihpKSthOlNjfWZ1bmN0aW9uIHZtKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1obSh0LHppKCksbixpLHIpO3JldHVybiBGaSgzKSxsP2Urcm4obikrbytybihpKSthK3JuKHIpK3M6U2N9ZnVuY3Rpb24geG0odCxlLG4sbyxpLGEscixzLGwsYyl7Y29uc3QgZD1ibSh0LHppKCksbixpLHIsbCk7cmV0dXJuIEZpKDQpLGQ/ZStybihuKStvK3JuKGkpK2Ercm4ocikrcytybihsKStjOlNjfWZ1bmN0aW9uIE9tKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXtjb25zdCBtPXppKCk7bGV0IHU9Ym0odCxtLG4saSxyLGwpO3JldHVybiB1PWZtKHQsbSs0LGQpfHx1LEZpKDUpLHU/ZStybihuKStvK3JuKGkpK2Ercm4ocikrcytybihsKStjK3JuKGQpK3A6U2N9ZnVuY3Rpb24gUG0odCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1KXtjb25zdCBmPXppKCk7bGV0IGc9Ym0odCxmLG4saSxyLGwpO3JldHVybiBnPWdtKHQsZis0LGQsbSl8fGcsRmkoNiksZz9lK3JuKG4pK28rcm4oaSkrYStybihyKStzK3JuKGwpK2Mrcm4oZCkrcCtybihtKSt1OlNjfWZ1bmN0aW9uIHdtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcpe2NvbnN0IGg9emkoKTtsZXQgYj1ibSh0LGgsbixpLHIsbCk7cmV0dXJuIGI9aG0odCxoKzQsZCxtLGYpfHxiLEZpKDcpLGI/ZStybihuKStvK3JuKGkpK2Ercm4ocikrcytybihsKStjK3JuKGQpK3Arcm4obSkrdStybihmKStnOlNjfWZ1bmN0aW9uIGttKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCxiKXtjb25zdCB5PXppKCk7bGV0IF89Ym0odCx5LG4saSxyLGwpO3JldHVybiBfPWJtKHQseSs0LGQsbSxmLGgpfHxfLEZpKDgpLF8/ZStybihuKStvK3JuKGkpK2Ercm4ocikrcytybihsKStjK3JuKGQpK3Arcm4obSkrdStybihmKStnK3JuKGgpK2I6U2N9ZnVuY3Rpb24gU20odCxlLG4sbyxpLGEpe2NvbnN0IHI9eGkoKSxzPUNtKHIsZSxuLG8pO2lmKHMhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4scix0LHMsaSxhKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTEsZSxvKX1yZXR1cm4gU219ZnVuY3Rpb24gRG0odCxlLG4sbyxpLGEscixzKXtjb25zdCBsPXhpKCksYz1NbShsLGUsbixvLGksYSk7aWYoYyE9PVNjKXtjb25zdCBuPW5hKCk7cWQobixsLHQsYyxyLHMpLG5nRGV2TW9kZSYmbHAoT2koKS5kYXRhLG4sImF0dHIuIit0LHppKCktMixlLG8sYSl9cmV0dXJuIERtfWZ1bmN0aW9uIFJtKHQsZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9eGkoKSxwPXZtKGQsZSxuLG8saSxhLHIscyk7aWYocCE9PVNjKXtjb25zdCBuPW5hKCk7cWQobixkLHQscCxsLGMpLG5nRGV2TW9kZSYmbHAoT2koKS5kYXRhLG4sImF0dHIuIit0LHppKCktMyxlLG8sYSxzKX1yZXR1cm4gUm19ZnVuY3Rpb24gRW0odCxlLG4sbyxpLGEscixzLGwsYyxkLHApe2NvbnN0IG09eGkoKSx1PXhtKG0sZSxuLG8saSxhLHIscyxsLGMpO2lmKHUhPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4sbSx0LHUsZCxwKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTQsZSxvLGEscyxjKX1yZXR1cm4gRW19ZnVuY3Rpb24gQW0odCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1KXtjb25zdCBmPXhpKCksZz1PbShmLGUsbixvLGksYSxyLHMsbCxjLGQscCk7aWYoZyE9PVNjKXtjb25zdCBuPW5hKCk7cWQobixmLHQsZyxtLHUpLG5nRGV2TW9kZSYmbHAoT2koKS5kYXRhLG4sImF0dHIuIit0LHppKCktNSxlLG8sYSxzLGMscCl9cmV0dXJuIEFtfWZ1bmN0aW9uIFRtKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcpe2NvbnN0IGg9eGkoKSxiPVBtKGgsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSk7aWYoYiE9PVNjKXtjb25zdCBuPW5hKCk7cWQobixoLHQsYixmLGcpLG5nRGV2TW9kZSYmbHAoT2koKS5kYXRhLG4sImF0dHIuIit0LHppKCktNixlLG8sYSxzLGMscCx1KX1yZXR1cm4gVG19ZnVuY3Rpb24gTm0odCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIpe2NvbnN0IHk9eGkoKSxfPXdtKHksZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcpO2lmKF8hPT1TYyl7Y29uc3Qgbj1uYSgpO3FkKG4seSx0LF8saCxiKSxuZ0Rldk1vZGUmJmxwKE9pKCkuZGF0YSxuLCJhdHRyLiIrdCx6aSgpLTcsZSxvLGEscyxjLHAsdSxnKX1yZXR1cm4gTm19ZnVuY3Rpb24gem0odCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIseSxfKXtjb25zdCBDPXhpKCksTT1rbShDLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYik7aWYoTSE9PVNjKXtjb25zdCBuPW5hKCk7cWQobixDLHQsTSx5LF8pLG5nRGV2TW9kZSYmbHAoT2koKS5kYXRhLG4sImF0dHIuIit0LHppKCktOCxlLG8sYSxzLGMscCx1LGcsYil9cmV0dXJuIHptfWZ1bmN0aW9uIEltKHQsZSxuLG8pe2NvbnN0IGk9eGkoKSxhPV9tKGksZSk7aWYoYSE9PVNjKXtjb25zdCByPW5hKCk7aWYocWQocixpLHQsYSxuLG8pLG5nRGV2TW9kZSl7Y29uc3Qgbj1bZVswXV07Zm9yKGxldCB0PTI7dDxlLmxlbmd0aDt0Kz0yKW4ucHVzaChlW3RdKTtscChPaSgpLmRhdGEsciwiYXR0ci4iK3QsemkoKS1uLmxlbmd0aCsxLC4uLm4pfX1yZXR1cm4gSW19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEhtKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD14aSgpLGM9T2koKSxkPXQrdm8scD1jLmZpcnN0Q3JlYXRlUGFzcz8oZnVuY3Rpb24gbSh0LGUsbixvLGksYSxyLHMsbCl7bmdEZXZNb2RlJiZMbyhlKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5maXJzdENyZWF0ZVBhc3MrKztjb25zdCBjPWUuY29uc3RzLGQ9X2QoZSx0LDQscnx8bnVsbCxoaShjLHMpKTtMZChlLG4sZCxoaShjLGwpKSxyYShlLGQpO2NvbnN0IHA9ZC50Vmlld3M9UmQoMixkLG8saSxhLGUuZGlyZWN0aXZlUmVnaXN0cnksZS5waXBlUmVnaXN0cnksbnVsbCxlLnNjaGVtYXMsYyk7cmV0dXJuIG51bGwhPT1lLnF1ZXJpZXMmJihlLnF1ZXJpZXMudGVtcGxhdGUoZSxkKSxwLnF1ZXJpZXM9ZS5xdWVyaWVzLmVtYmVkZGVkVFZpZXcoZCkpLGR9KShkLGMsbCxlLG4sbyxpLGEscik6Yy5kYXRhW2RdO0RpKHAsITEpO2NvbnN0IHU9bFsxMV0uY3JlYXRlQ29tbWVudChuZ0Rldk1vZGU/ImNvbnRhaW5lciI6IiIpO3JjKGMsbCx1LHApLGFsKHUsbCksbnAobCxsW2RdPVFkKHUsbCx1LHApKSxEbyhwKSYma2QoYyxsLHApLG51bGwhPXImJlNkKGwscCxzKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRm0odCl7cmV0dXJuIG1pKChmdW5jdGlvbiBlKCl7cmV0dXJuIF9pLmxGcmFtZS5jb250ZXh0TFZpZXd9KSgpLHZvK3QpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBMbT17Ism1ybVkZWZpbmVJbmplY3RhYmxlIjpTbiwiybXJtWRlZmluZUluamVjdG9yIjpEbiwiybXJtWluamVjdCI6VHIsIsm1ybVpbnZhbGlkRmFjdG9yeURlcCI6TnIscmVzb2x2ZUZvcndhcmRSZWY6dG59OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBCbT1aZSh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6WmV9KTtmdW5jdGlvbiBWbSh0KXtyZXR1cm4gdm9pZCAwIT09dC51c2VDbGFzc31mdW5jdGlvbiBVbSh0KXtyZXR1cm4gdm9pZCAwIT09dC51c2VGYWN0b3J5fVplKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpaZX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgam09WGEoIkluamVjdGFibGUiLHZvaWQgMCx2b2lkIDAsdm9pZCAwLCgodCxlKT0+V20odCxlKSkpLFdtPWZ1bmN0aW9uIEdtKHQsZSl7bGV0IG49bnVsbCxvPW51bGw7dC5oYXNPd25Qcm9wZXJ0eShUbil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFRuLHtnZXQ6KCk9PntpZihudWxsPT09bil7Y29uc3Qgbz1scih7dXNhZ2U6MCxraW5kOiJpbmplY3RhYmxlIix0eXBlOnR9KTtuPW8uY29tcGlsZUluamVjdGFibGUoTG0sYG5nOi8vLyR7dC5uYW1lfS/JtXByb3YuanNgLChmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj1lfHx7cHJvdmlkZWRJbjpudWxsfSxvPXtuYW1lOnQubmFtZSx0eXBlOnQsdHlwZUFyZ3VtZW50Q291bnQ6MCxwcm92aWRlZEluOm4ucHJvdmlkZWRJbn07KFZtKG4pfHxVbShuKSkmJnZvaWQgMCE9PW4uZGVwcyYmKG8uZGVwcz1xcihuLmRlcHMpKTtWbShuKT9vLnVzZUNsYXNzPW4udXNlQ2xhc3M6IShmdW5jdGlvbiBpKHQpe3JldHVybiBCbSBpbiB0fSkobik/VW0obik/by51c2VGYWN0b3J5PW4udXNlRmFjdG9yeTooZnVuY3Rpb24gYSh0KXtyZXR1cm4gdm9pZCAwIT09dC51c2VFeGlzdGluZ30pKG4pJiYoby51c2VFeGlzdGluZz1uLnVzZUV4aXN0aW5nKTpvLnVzZVZhbHVlPW4udXNlVmFsdWU7cmV0dXJuIG99Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCxlKSl9cmV0dXJuIG59fSksdC5oYXNPd25Qcm9wZXJ0eShpbyl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGlvLHtnZXQ6KCk9PntpZihudWxsPT09byl7Y29uc3QgZT1scih7dXNhZ2U6MCxraW5kOiJpbmplY3RhYmxlIix0eXBlOnR9KTtvPWUuY29tcGlsZUZhY3RvcnkoTG0sYG5nOi8vLyR7dC5uYW1lfS/JtWZhYy5qc2Ase25hbWU6dC5uYW1lLHR5cGU6dCx0eXBlQXJndW1lbnRDb3VudDowLGRlcHM6WXIodCksdGFyZ2V0OmUuRmFjdG9yeVRhcmdldC5JbmplY3RhYmxlfSl9cmV0dXJuIG99LGNvbmZpZ3VyYWJsZTohMH0pfTtmdW5jdGlvbiBZbSh0KXtpZih0Lmxlbmd0aD4xKXtyZXR1cm4iICgiKygKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoOysrbil7aWYoZS5pbmRleE9mKHRbbl0pPi0xKXJldHVybiBlLnB1c2godFtuXSksZTtlLnB1c2godFtuXSl9cmV0dXJuIGV9KSh0LnNsaWNlKCkucmV2ZXJzZSgpKS5tYXAoKHQ9PktlKHQudG9rZW4pKSkuam9pbigiIC0+ICIpKyIpIn1yZXR1cm4iIn1mdW5jdGlvbiBxbSh0LGUsbixvKXtjb25zdCBpPVtlXSxhPW4oaSkscj1vPyhmdW5jdGlvbiBzKHQsZSl7Y29uc3Qgbj1gJHt0fSBjYXVzZWQgYnk6ICR7ZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplfWAsbz1FcnJvcihuKTtyZXR1cm4gby5uZ09yaWdpbmFsRXJyb3I9ZSxvfSkoYSxvKTpFcnJvcihhKTtyZXR1cm4gci5hZGRLZXk9Wm0sci5rZXlzPWksci5pbmplY3RvcnM9W3RdLHIuY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZT1uLHIubmdPcmlnaW5hbEVycm9yPW8scn1mdW5jdGlvbiBabSh0LGUpe3RoaXMuaW5qZWN0b3JzLnB1c2godCksdGhpcy5rZXlzLnB1c2goZSksdGhpcy5tZXNzYWdlPXRoaXMuY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZSh0aGlzLmtleXMpfWZ1bmN0aW9uIFhtKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IHQ9MCxvPWUubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG89ZVt0XTtuLnB1c2gobyYmMCE9by5sZW5ndGg/by5tYXAoS2UpLmpvaW4oIiAiKToiPyIpfXJldHVybiBFcnJvcigiQ2Fubm90IHJlc29sdmUgYWxsIHBhcmFtZXRlcnMgZm9yICciK0tlKHQpKyInKCIrbi5qb2luKCIsICIpKyIpLiBNYWtlIHN1cmUgdGhhdCBhbGwgdGhlIHBhcmFtZXRlcnMgYXJlIGRlY29yYXRlZCB3aXRoIEluamVjdCBvciBoYXZlIHZhbGlkIHR5cGUgYW5ub3RhdGlvbnMgYW5kIHRoYXQgJyIrS2UodCkrIicgaXMgZGVjb3JhdGVkIHdpdGggSW5qZWN0YWJsZS4iKX1mdW5jdGlvbiBLbSh0LGUpe3JldHVybiBFcnJvcihgQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzLCBnb3Q6ICR7dH0gJHtlfWApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBKbXtjb25zdHJ1Y3Rvcih0LGUpe2lmKHRoaXMudG9rZW49dCx0aGlzLmlkPWUsIXQpdGhyb3cgbmV3IEVycm9yKCJUb2tlbiBtdXN0IGJlIGRlZmluZWQhIik7dGhpcy5kaXNwbGF5TmFtZT1LZSh0aGlzLnRva2VuKX1zdGF0aWMgZ2V0KHQpe3JldHVybiBRbS5nZXQodG4odCkpfXN0YXRpYyBnZXQgbnVtYmVyT2ZLZXlzKCl7cmV0dXJuIFFtLm51bWJlck9mS2V5c319Y29uc3QgUW09bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fYWxsS2V5cz1uZXcgTWFwfWdldCh0KXtpZih0IGluc3RhbmNlb2YgSm0pcmV0dXJuIHQ7aWYodGhpcy5fYWxsS2V5cy5oYXModCkpcmV0dXJuIHRoaXMuX2FsbEtleXMuZ2V0KHQpO2NvbnN0IGU9bmV3IEptKHQsSm0ubnVtYmVyT2ZLZXlzKTtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zZXQodCxlKSxlfWdldCBudW1iZXJPZktleXMoKXtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zaXplfX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgJG09bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcz10fXVwZGF0ZUNhcGFiaWxpdGllcyh0KXt0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9dH1mYWN0b3J5KHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuZmFjdG9yeSh0KX1wYXJhbWV0ZXJzKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucGFyYW1ldGVycyh0KX1hbm5vdGF0aW9ucyh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmFubm90YXRpb25zKHQpfXByb3BNZXRhZGF0YSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnByb3BNZXRhZGF0YSh0KX1oYXNMaWZlY3ljbGVIb29rKHQsZSl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5oYXNMaWZlY3ljbGVIb29rKHQsZSl9Z2V0dGVyKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuZ2V0dGVyKHQpfXNldHRlcih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnNldHRlcih0KX1tZXRob2QodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5tZXRob2QodCl9aW1wb3J0VXJpKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaW1wb3J0VXJpKHQpfXJlc291cmNlVXJpKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb3VyY2VVcmkodCl9cmVzb2x2ZUlkZW50aWZpZXIodCxlLG4sbyl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5yZXNvbHZlSWRlbnRpZmllcih0LGUsbixvKX1yZXNvbHZlRW51bSh0LGUpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb2x2ZUVudW0odCxlKX19KG5ldyB4cik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHR1e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmtleT10LHRoaXMub3B0aW9uYWw9ZSx0aGlzLnZpc2liaWxpdHk9bn1zdGF0aWMgZnJvbUtleSh0KXtyZXR1cm4gbmV3IHR1KHQsITEsbnVsbCl9fWNvbnN0IGV1PVtdO2NsYXNzIG51e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmtleT10LHRoaXMucmVzb2x2ZWRGYWN0b3JpZXM9ZSx0aGlzLm11bHRpUHJvdmlkZXI9bix0aGlzLnJlc29sdmVkRmFjdG9yeT10aGlzLnJlc29sdmVkRmFjdG9yaWVzWzBdfX1jbGFzcyBvdXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZmFjdG9yeT10LHRoaXMuZGVwZW5kZW5jaWVzPWV9fWZ1bmN0aW9uIGl1KHQpe2xldCBlLG47aWYodC51c2VDbGFzcyl7Y29uc3Qgbz10bih0LnVzZUNsYXNzKTtlPSRtLmZhY3Rvcnkobyksbj1sdShvKX1lbHNlIHQudXNlRXhpc3Rpbmc/KGU9dD0+dCxuPVt0dS5mcm9tS2V5KEptLmdldCh0LnVzZUV4aXN0aW5nKSldKTp0LnVzZUZhY3Rvcnk/KGU9dC51c2VGYWN0b3J5LG49KGZ1bmN0aW9uIG8odCxlKXtpZihlKXtjb25zdCBuPWUubWFwKCh0PT5bdF0pKTtyZXR1cm4gZS5tYXAoKGU9PmN1KHQsZSxuKSkpfXJldHVybiBsdSh0KX0pKHQudXNlRmFjdG9yeSx0LmRlcHMpKTooZT0oKT0+dC51c2VWYWx1ZSxuPWV1KTtyZXR1cm4gbmV3IG91KGUsbil9ZnVuY3Rpb24gYXUodCl7cmV0dXJuIG5ldyBudShKbS5nZXQodC5wcm92aWRlKSxbaXUodCldLHQubXVsdGl8fCExKX1mdW5jdGlvbiBydSh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89dFtuXSxpPWUuZ2V0KG8ua2V5LmlkKTtpZihpKXtpZihvLm11bHRpUHJvdmlkZXIhPT1pLm11bHRpUHJvdmlkZXIpdGhyb3cgS20oaSxvKTtpZihvLm11bHRpUHJvdmlkZXIpZm9yKGxldCB0PTA7dDxvLnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDt0KyspaS5yZXNvbHZlZEZhY3Rvcmllcy5wdXNoKG8ucmVzb2x2ZWRGYWN0b3JpZXNbdF0pO2Vsc2UgZS5zZXQoby5rZXkuaWQsbyl9ZWxzZXtsZXQgdDt0PW8ubXVsdGlQcm92aWRlcj9uZXcgbnUoby5rZXksby5yZXNvbHZlZEZhY3Rvcmllcy5zbGljZSgpLG8ubXVsdGlQcm92aWRlcik6byxlLnNldChvLmtleS5pZCx0KX19cmV0dXJuIGV9KShzdSh0LFtdKS5tYXAoYXUpLG5ldyBNYXApO3JldHVybiBBcnJheS5mcm9tKGUudmFsdWVzKCkpfWZ1bmN0aW9uIHN1KHQsZSl7cmV0dXJuIHQuZm9yRWFjaCgodD0+e2lmKHQgaW5zdGFuY2VvZiBjcillLnB1c2goe3Byb3ZpZGU6dCx1c2VDbGFzczp0fSk7ZWxzZSBpZih0JiYib2JqZWN0Ij09dHlwZW9mIHQmJnZvaWQgMCE9PXQucHJvdmlkZSllLnB1c2godCk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyhmdW5jdGlvbiBuKHQpe3JldHVybiBFcnJvcihgSW52YWxpZCBwcm92aWRlciAtIG9ubHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFuZCBUeXBlIGFyZSBhbGxvd2VkLCBnb3Q6ICR7dH1gKX0pKHQpO3N1KHQsZSl9fSkpLGV9ZnVuY3Rpb24gbHUodCl7Y29uc3QgZT0kbS5wYXJhbWV0ZXJzKHQpO2lmKCFlKXJldHVybltdO2lmKGUuc29tZSgodD0+bnVsbD09dCkpKXRocm93IFhtKHQsZSk7cmV0dXJuIGUubWFwKChuPT5jdSh0LG4sZSkpKX1mdW5jdGlvbiBjdSh0LGUsbil7bGV0IG89bnVsbCxpPSExO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBkdShlIGluc3RhbmNlb2YgTHI/ZS50b2tlbjplLGksbnVsbCk7bGV0IGE9bnVsbDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoOysrdCl7Y29uc3Qgbj1lW3RdO24gaW5zdGFuY2VvZiBjcj9vPW46biBpbnN0YW5jZW9mIExyP289bi50b2tlbjpuIGluc3RhbmNlb2YgQnI/aT0hMDpuIGluc3RhbmNlb2YgVnJ8fG4gaW5zdGFuY2VvZiBVcj9hPW46biBpbnN0YW5jZW9mIGVyJiYobz1uKX1pZihvPXRuKG8pLG51bGwhPW8pcmV0dXJuIGR1KG8saSxhKTt0aHJvdyBYbSh0LG4pfWZ1bmN0aW9uIGR1KHQsZSxuKXtyZXR1cm4gbmV3IHR1KEptLmdldCh0KSxlLG4pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBwdT17fTtjbGFzcyBtdXtzdGF0aWMgcmVzb2x2ZSh0KXtyZXR1cm4gcnUodCl9c3RhdGljIHJlc29sdmVBbmRDcmVhdGUodCxlKXtjb25zdCBuPW11LnJlc29sdmUodCk7cmV0dXJuIG11LmZyb21SZXNvbHZlZFByb3ZpZGVycyhuLGUpfXN0YXRpYyBmcm9tUmVzb2x2ZWRQcm92aWRlcnModCxlKXtyZXR1cm4gbmV3IHV1KHQsZSl9fWNsYXNzIHV1e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fY29uc3RydWN0aW9uQ291bnRlcj0wLHRoaXMuX3Byb3ZpZGVycz10LHRoaXMucGFyZW50PWV8fG51bGw7Y29uc3Qgbj10Lmxlbmd0aDt0aGlzLmtleUlkcz1bXSx0aGlzLm9ianM9W107Zm9yKGxldCBlPTA7ZTxuO2UrKyl0aGlzLmtleUlkc1tlXT10W2VdLmtleS5pZCx0aGlzLm9ianNbZV09cHV9Z2V0KHQsZT13cil7cmV0dXJuIHRoaXMuX2dldEJ5S2V5KEptLmdldCh0KSxudWxsLGUpfXJlc29sdmVBbmRDcmVhdGVDaGlsZCh0KXtjb25zdCBlPW11LnJlc29sdmUodCk7cmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQoZSl9Y3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQodCl7Y29uc3QgZT1uZXcgdXUodCk7cmV0dXJuIGUucGFyZW50PXRoaXMsZX1yZXNvbHZlQW5kSW5zdGFudGlhdGUodCl7cmV0dXJuIHRoaXMuaW5zdGFudGlhdGVSZXNvbHZlZChtdS5yZXNvbHZlKFt0XSlbMF0pfWluc3RhbnRpYXRlUmVzb2x2ZWQodCl7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIodCl9Z2V0UHJvdmlkZXJBdEluZGV4KHQpe2lmKHQ8MHx8dD49dGhpcy5fcHJvdmlkZXJzLmxlbmd0aCl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgSW5kZXggJHt0fSBpcyBvdXQtb2YtYm91bmRzLmApfSkodCk7cmV0dXJuIHRoaXMuX3Byb3ZpZGVyc1t0XX1fbmV3KHQpe2lmKHRoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXIrKz50aGlzLl9nZXRNYXhOdW1iZXJPZk9iamVjdHMoKSl0aHJvdyhmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHFtKHQsbiwoZnVuY3Rpb24odCl7cmV0dXJuYENhbm5vdCBpbnN0YW50aWF0ZSBjeWNsaWMgZGVwZW5kZW5jeSEke1ltKHQpfWB9KSl9KSh0aGlzLHQua2V5KTtyZXR1cm4gdGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX1fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCl7cmV0dXJuIHRoaXMub2Jqcy5sZW5ndGh9X2luc3RhbnRpYXRlUHJvdmlkZXIodCl7aWYodC5tdWx0aVByb3ZpZGVyKXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248dC5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7KytuKWVbbl09dGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVzW25dKTtyZXR1cm4gZX1yZXR1cm4gdGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVzWzBdKX1faW5zdGFudGlhdGUodCxlKXtjb25zdCBuPWUuZmFjdG9yeTtsZXQgbyxpO3RyeXtvPWUuZGVwZW5kZW5jaWVzLm1hcCgodD0+dGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeSh0KSkpfWNhdGNoKGUpe3Rocm93IGUuYWRkS2V5JiZlLmFkZEtleSh0aGlzLHQua2V5KSxlfXRyeXtpPW4oLi4ubyl9Y2F0Y2goZSl7dGhyb3coZnVuY3Rpb24gbih0LGUsbyxpKXtyZXR1cm4gcW0odCxpLChmdW5jdGlvbih0KXtjb25zdCBuPUtlKHRbMF0udG9rZW4pO3JldHVybmAke2UubWVzc2FnZX06IEVycm9yIGR1cmluZyBpbnN0YW50aWF0aW9uIG9mICR7bn0hJHtZbSh0KX0uYH0pLGUpfSkodGhpcyxlLDAsdC5rZXkpfXJldHVybiBpfV9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHQpe3JldHVybiB0aGlzLl9nZXRCeUtleSh0LmtleSx0LnZpc2liaWxpdHksdC5vcHRpb25hbD9udWxsOndyKX1fZ2V0QnlLZXkodCxlLG4pe3JldHVybiB0PT09dXUuSU5KRUNUT1JfS0VZP3RoaXM6ZSBpbnN0YW5jZW9mIFZyP3RoaXMuX2dldEJ5S2V5U2VsZih0LG4pOnRoaXMuX2dldEJ5S2V5RGVmYXVsdCh0LG4sZSl9X2dldE9iakJ5S2V5SWQodCl7Zm9yKGxldCBlPTA7ZTx0aGlzLmtleUlkcy5sZW5ndGg7ZSsrKWlmKHRoaXMua2V5SWRzW2VdPT09dClyZXR1cm4gdGhpcy5vYmpzW2VdPT09cHUmJih0aGlzLm9ianNbZV09dGhpcy5fbmV3KHRoaXMuX3Byb3ZpZGVyc1tlXSkpLHRoaXMub2Jqc1tlXTtyZXR1cm4gcHV9X3Rocm93T3JOdWxsKHQsZSl7aWYoZSE9PXdyKXJldHVybiBlO3Rocm93KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gcW0odCxlLChmdW5jdGlvbih0KXtyZXR1cm5gTm8gcHJvdmlkZXIgZm9yICR7S2UodFswXS50b2tlbil9ISR7WW0odCl9YH0pKX0pKHRoaXMsdCl9X2dldEJ5S2V5U2VsZih0LGUpe2NvbnN0IG49dGhpcy5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtyZXR1cm4gbiE9PXB1P246dGhpcy5fdGhyb3dPck51bGwodCxlKX1fZ2V0QnlLZXlEZWZhdWx0KHQsZSxuKXtsZXQgbztmb3Iobz1uIGluc3RhbmNlb2YgVXI/dGhpcy5wYXJlbnQ6dGhpcztvIGluc3RhbmNlb2YgdXU7KXtjb25zdCBlPW8sbj1lLl9nZXRPYmpCeUtleUlkKHQuaWQpO2lmKG4hPT1wdSlyZXR1cm4gbjtvPWUucGFyZW50fXJldHVybiBudWxsIT09bz9vLmdldCh0LnRva2VuLGUpOnRoaXMuX3Rocm93T3JOdWxsKHQsZSl9Z2V0IGRpc3BsYXlOYW1lKCl7cmV0dXJuYFJlZmxlY3RpdmVJbmplY3Rvcihwcm92aWRlcnM6IFskeyhmdW5jdGlvbiB0KGUsbil7Y29uc3Qgbz1bXTtmb3IobGV0IHQ9MDt0PGUuX3Byb3ZpZGVycy5sZW5ndGg7Kyt0KW9bdF09bihlLmdldFByb3ZpZGVyQXRJbmRleCh0KSk7cmV0dXJuIG99Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0aGlzLCh0PT4nICInK3Qua2V5LmRpc3BsYXlOYW1lKyciICcpKS5qb2luKCIsICIpfV0pYH10b1N0cmluZygpe3JldHVybiB0aGlzLmRpc3BsYXlOYW1lfX1mdW5jdGlvbiBmdSh0LGU9SG4uRGVmYXVsdCl7Y29uc3Qgbj14aSgpO2lmKG51bGw9PT1uKXJldHVybiBuZ0Rldk1vZGUmJihmdW5jdGlvbiBvKHQpe25nRGV2TW9kZSYmaG4oRm4sdCwiQ2FsbGluZyDJtcm1aW5qZWN0IHdvdWxkIGNhdXNlIGluZmluaXRlIHJlY3Vyc2lvbiIpfSkoZnUpLFRyKHQsZSk7cmV0dXJuIE5hKHdpKCksbix0bih0KSxlKX1mdW5jdGlvbiBndSgpe2NvbnN0IHQ9bmdEZXZNb2RlPyJUaGlzIGNvbnN0cnVjdG9yIHdhcyBub3QgY29tcGF0aWJsZSB3aXRoIERlcGVuZGVuY3kgSW5qZWN0aW9uLiI6ImludmFsaWQiO3Rocm93IG5ldyBFcnJvcih0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaHUodCxlLG4pe2NvbnN0IG89eGkoKSxpPUhpKCk7aWYoZm0obyxpLGUpKXtjb25zdCBhPU9pKCkscj1uYSgpO3pkKGEscixvLHQsZSxvWzExXSxuLCExKSxuZ0Rldk1vZGUmJmxwKGEuZGF0YSxyLHQsaSl9cmV0dXJuIGh1fWZ1bmN0aW9uIGJ1KHQsZSxuLG8saSl7Y29uc3QgYT1pPyJjbGFzcyI6InN0eWxlIjtmcCh0LG4sZS5pbnB1dHNbYV0sYSxvKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24geXUodCxlLG4sbyxpLGEscil7bmdEZXZNb2RlJiZMbyhlKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5maXJzdENyZWF0ZVBhc3MrKztjb25zdCBzPWUuY29uc3RzLGw9X2QoZSx0LDIsaSxoaShzLGEpKSxjPUxkKGUsbixsLGhpKHMscikpO3JldHVybiBuZ0Rldk1vZGUmJihmdW5jdGlvbiBkKHQsZSxuLG8pe2lmKG51bGw9PT10LnNjaGVtYXMpcmV0dXJuO2NvbnN0IGk9bi52YWx1ZTtpZighbyYmbnVsbCE9PWkpe2lmKCgidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxVbmtub3duRWxlbWVudCYmSFRNTFVua25vd25FbGVtZW50JiZlIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIGN1c3RvbUVsZW1lbnRzJiZpLmluZGV4T2YoIi0iKT4tMSYmIWN1c3RvbUVsZW1lbnRzLmdldChpKSkmJiFIZCh0LGkpKXtsZXQgdD1gJyR7aX0nIGlzIG5vdCBhIGtub3duIGVsZW1lbnQ6XG5gO3QrPWAxLiBJZiAnJHtpfScgaXMgYW4gQW5ndWxhciBjb21wb25lbnQsIHRoZW4gdmVyaWZ5IHRoYXQgaXQgaXMgcGFydCBvZiB0aGlzIG1vZHVsZS5cbmAsaSYmaS5pbmRleE9mKCItIik+LTE/dCs9YDIuIElmICcke2l9JyBpcyBhIFdlYiBDb21wb25lbnQgdGhlbiBhZGQgJ0NVU1RPTV9FTEVNRU5UU19TQ0hFTUEnIHRvIHRoZSAnQE5nTW9kdWxlLnNjaGVtYXMnIG9mIHRoaXMgY29tcG9uZW50IHRvIHN1cHByZXNzIHRoaXMgbWVzc2FnZS5gOnQrPSIyLiBUbyBhbGxvdyBhbnkgZWxlbWVudCBhZGQgJ05PX0VSUk9SU19TQ0hFTUEnIHRvIHRoZSAnQE5nTW9kdWxlLnNjaGVtYXMnIG9mIHRoaXMgY29tcG9uZW50LiIsY29uc29sZS5lcnJvcihhbigiMzA0Iix0KSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShlLG8sbCxjKSxudWxsIT09bC5hdHRycyYmaHAobCxsLmF0dHJzLCExKSxudWxsIT09bC5tZXJnZWRBdHRycyYmaHAobCxsLm1lcmdlZEF0dHJzLCEwKSxudWxsIT09ZS5xdWVyaWVzJiZlLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGUsbCksbH1mdW5jdGlvbiBfdSh0LGUsbixvKXtjb25zdCBpPXhpKCksYT1PaSgpLHI9dm8rdDtuZ0Rldk1vZGUmJmduKHppKCksYS5iaW5kaW5nU3RhcnRJbmRleCwiZWxlbWVudHMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpLG5nRGV2TW9kZSYmd24oaSxyKTtjb25zdCBzPWlbMTFdLGw9aVtyXT1qbChzLGUsKGZ1bmN0aW9uIGMoKXtyZXR1cm4gX2kubEZyYW1lLmN1cnJlbnROYW1lc3BhY2V9KSgpKSxkPWEuZmlyc3RDcmVhdGVQYXNzP3l1KHIsYSxpLGwsZSxuLG8pOmEuZGF0YVtyXTtEaShkLCEwKTtjb25zdCBwPWQubWVyZ2VkQXR0cnM7bnVsbCE9PXAmJmhhKHMsbCxwKTtjb25zdCBtPWQuY2xhc3NlcztudWxsIT09bSYmZ2MocyxsLG0pO2NvbnN0IHU9ZC5zdHlsZXM7bnVsbCE9PXUmJmZjKHMsbCx1KSw2NCE9KDY0JmQuZmxhZ3MpJiZyYyhhLGksbCxkKSwwPT09KGZ1bmN0aW9uIGYoKXtyZXR1cm4gX2kubEZyYW1lLmVsZW1lbnREZXB0aENvdW50fSkoKSYmYWwobCxpKSwoZnVuY3Rpb24gZygpe19pLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudCsrfSkoKSxEbyhkKSYmKGtkKGEsaSxkKSx3ZChhLGQsaSkpLG51bGwhPT1vJiZTZChpLGQpfWZ1bmN0aW9uIEN1KCl7bGV0IHQ9d2koKTtuZ0Rldk1vZGUmJnhuKHQsIk5vIHBhcmVudCBub2RlIHRvIGNsb3NlLiIpLFJpKCk/RWkoKToobmdEZXZNb2RlJiZ6byh3aSgpKSx0PXQucGFyZW50LERpKHQsITEpKTtjb25zdCBlPXQ7bmdEZXZNb2RlJiZnYShlLDMpLChmdW5jdGlvbiBuKCl7X2kubEZyYW1lLmVsZW1lbnREZXB0aENvdW50LS19KSgpO2NvbnN0IG89T2koKTtvLmZpcnN0Q3JlYXRlUGFzcyYmKHJhKG8sdCksa28odCkmJm8ucXVlcmllcy5lbGVtZW50RW5kKHQpKSxudWxsIT1lLmNsYXNzZXNXaXRob3V0SG9zdCYmKGZ1bmN0aW9uIGkodCl7cmV0dXJuIDAhPSgxNiZ0LmZsYWdzKX0pKGUpJiZidShvLGUseGkoKSxlLmNsYXNzZXNXaXRob3V0SG9zdCwhMCksbnVsbCE9ZS5zdHlsZXNXaXRob3V0SG9zdCYmKGZ1bmN0aW9uIGEodCl7cmV0dXJuIDAhPSgzMiZ0LmZsYWdzKX0pKGUpJiZidShvLGUseGkoKSxlLnN0eWxlc1dpdGhvdXRIb3N0LCExKX1mdW5jdGlvbiBNdSh0LGUsbixvKXtfdSh0LGUsbixvKSxDdSgpfWZ1bmN0aW9uIHZ1KHQsZSxuKXtjb25zdCBvPXhpKCksaT1PaSgpLGE9dCt2bztuZ0Rldk1vZGUmJnduKG8sYSksbmdEZXZNb2RlJiZnbih6aSgpLGkuYmluZGluZ1N0YXJ0SW5kZXgsImVsZW1lbnQgY29udGFpbmVycyBzaG91bGQgYmUgY3JlYXRlZCBiZWZvcmUgYW55IGJpbmRpbmdzIik7Y29uc3Qgcj1pLmZpcnN0Q3JlYXRlUGFzcz8oZnVuY3Rpb24gcyh0LGUsbixvLGkpe25nRGV2TW9kZSYmbmdEZXZNb2RlLmZpcnN0Q3JlYXRlUGFzcysrO2NvbnN0IGE9ZS5jb25zdHMscj1oaShhLG8pLHM9X2QoZSx0LDgsIm5nLWNvbnRhaW5lciIscik7cmV0dXJuIG51bGwhPT1yJiZocChzLHIsITApLExkKGUsbixzLGhpKGEsaSkpLG51bGwhPT1lLnF1ZXJpZXMmJmUucXVlcmllcy5lbGVtZW50U3RhcnQoZSxzKSxzfSkoYSxpLG8sZSxuKTppLmRhdGFbYV07RGkociwhMCksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVDb21tZW50Kys7Y29uc3QgbD1vW2FdPW9bMTFdLmNyZWF0ZUNvbW1lbnQobmdEZXZNb2RlPyJuZy1jb250YWluZXIiOiIiKTtyYyhpLG8sbCxyKSxhbChsLG8pLERvKHIpJiYoa2QoaSxvLHIpLHdkKGkscixvKSksbnVsbCE9biYmU2QobyxyKX1mdW5jdGlvbiB4dSgpe2xldCB0PXdpKCk7Y29uc3QgZT1PaSgpO1JpKCk/RWkoKToobmdEZXZNb2RlJiZ6byh0KSx0PXQucGFyZW50LERpKHQsITEpKSxuZ0Rldk1vZGUmJmdhKHQsOCksZS5maXJzdENyZWF0ZVBhc3MmJihyYShlLHQpLGtvKHQpJiZlLnF1ZXJpZXMuZWxlbWVudEVuZCh0KSl9ZnVuY3Rpb24gT3UodCxlLG4pe3Z1KHQsZSxuKSx4dSgpfWZ1bmN0aW9uIFB1KCl7cmV0dXJuIHhpKCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHd1KHQpe3JldHVybiEhdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbn1mdW5jdGlvbiBrdSh0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1YnNjcmliZX11dS5JTkpFQ1RPUl9LRVk9Sm0uZ2V0KE5wKTtjb25zdCBTdT1rdTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRHUodCxlLG4sbyl7Y29uc3QgaT14aSgpLGE9T2koKSxyPXdpKCk7cmV0dXJuIEV1KGEsaSxpWzExXSxyLHQsZSwhIW4sbyksRHV9ZnVuY3Rpb24gUnUodCxlKXtjb25zdCBuPXdpKCksbz14aSgpLGk9T2koKTtyZXR1cm4gRXUoaSxvLG1wKFVpKGkuZGF0YSksbixvKSxuLHQsZSwhMSksUnV9ZnVuY3Rpb24gRXUodCxlLG4sbyxpLGEscixzKXtjb25zdCBsPURvKG8pLGM9dC5maXJzdENyZWF0ZVBhc3MmJnBwKHQpLGQ9ZVs4XSxwPWRwKGUpO25nRGV2TW9kZSYmZ2EobywxNSk7bGV0IG09ITA7aWYoMyZvLnR5cGV8fHMpe2NvbnN0IHU9ZGkobyxlKSxmPXM/cyh1KTp1LGc9cC5sZW5ndGgsaD1zP3Q9PnMobGkodFtvLmluZGV4XSkpOm8uaW5kZXg7aWYocmkobikpe2xldCByPW51bGw7aWYoIXMmJmwmJihyPShmdW5jdGlvbiB1KHQsZSxuLG8pe2NvbnN0IGk9dC5jbGVhbnVwO2lmKG51bGwhPWkpZm9yKGxldCB0PTA7dDxpLmxlbmd0aC0xO3QrPTIpe2NvbnN0IGE9aVt0XTtpZihhPT09biYmaVt0KzFdPT09byl7Y29uc3Qgbj1lWzddLG89aVt0KzJdO3JldHVybiBuLmxlbmd0aD5vP25bb106bnVsbH0ic3RyaW5nIj09dHlwZW9mIGEmJih0Kz0yKX1yZXR1cm4gbnVsbH0pKHQsZSxpLG8uaW5kZXgpKSxudWxsIT09cil7KHIuX19uZ0xhc3RMaXN0ZW5lckZuX198fHIpLl9fbmdOZXh0TGlzdGVuZXJGbl9fPWEsci5fX25nTGFzdExpc3RlbmVyRm5fXz1hLG09ITF9ZWxzZXthPVR1KG8sZSxkLGEsITEpO2NvbnN0IHQ9bi5saXN0ZW4oZixpLGEpO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQWRkRXZlbnRMaXN0ZW5lcisrLHAucHVzaChhLHQpLGMmJmMucHVzaChpLGgsZyxnKzEpfX1lbHNlIGE9VHUobyxlLGQsYSwhMCksZi5hZGRFdmVudExpc3RlbmVyKGksYSxyKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZEV2ZW50TGlzdGVuZXIrKyxwLnB1c2goYSksYyYmYy5wdXNoKGksaCxnLHIpfWVsc2UgYT1UdShvLGUsZCxhLCExKTtjb25zdCBmPW8ub3V0cHV0cztsZXQgZztpZihtJiZudWxsIT09ZiYmKGc9ZltpXSkpe2NvbnN0IHQ9Zy5sZW5ndGg7aWYodClmb3IobGV0IG49MDtuPHQ7bis9Mil7Y29uc3QgdD1nW25dO25nRGV2TW9kZSYmd24oZSx0KTtjb25zdCByPWdbbisxXSxzPWVbdF0sbD1zW3JdO2lmKG5nRGV2TW9kZSYmIVN1KGwpKXRocm93IG5ldyBFcnJvcihgQE91dHB1dCAke3J9IG5vdCBpbml0aWFsaXplZCBpbiAnJHtzLmNvbnN0cnVjdG9yLm5hbWV9Jy5gKTtjb25zdCBkPWwuc3Vic2NyaWJlKGEpLG09cC5sZW5ndGg7cC5wdXNoKGEsZCksYyYmYy5wdXNoKGksby5pbmRleCxtLC0obSsxKSl9fX1mdW5jdGlvbiBBdSh0LGUsbixvKXt0cnl7cmV0dXJuIHRpKDYsZSxuKSwhMSE9PW4obyl9Y2F0Y2goZSl7cmV0dXJuIHVwKHQsZSksITF9ZmluYWxseXt0aSg3LGUsbil9fWZ1bmN0aW9uIFR1KHQsZSxuLG8saSl7cmV0dXJuIGZ1bmN0aW9uIGEocil7aWYocj09PUZ1bmN0aW9uKXJldHVybiBvO2NvbnN0IHM9MiZ0LmZsYWdzP3VpKHQuaW5kZXgsZSk6ZTswPT0oMzImZVsyXSkmJm9wKHMpO2xldCBsPUF1KGUsbixvLHIpLGM9YS5fX25nTmV4dExpc3RlbmVyRm5fXztmb3IoO2M7KWw9QXUoZSxuLGMscikmJmwsYz1jLl9fbmdOZXh0TGlzdGVuZXJGbl9fO3JldHVybiBpJiYhMT09PWwmJihyLnByZXZlbnREZWZhdWx0KCksci5yZXR1cm5WYWx1ZT0hMSksbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBOdSh0PTEpe3JldHVybiAkaSh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24genUodCxlKXtsZXQgbj1udWxsO2NvbnN0IG89KGZ1bmN0aW9uIGkodCl7Y29uc3QgZT10LmF0dHJzO2lmKG51bGwhPWUpe2NvbnN0IHQ9ZS5pbmRleE9mKDUpO2lmKDA9PSgxJnQpKXJldHVybiBlW3QrMV19cmV0dXJuIG51bGx9KSh0KTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7Y29uc3QgYT1lW2ldO2lmKCIqIiE9PWEpe2lmKG51bGw9PT1vP09jKHQsYSwhMCk6UGMobyxhKSlyZXR1cm4gaX1lbHNlIG49aX1yZXR1cm4gbn1mdW5jdGlvbiBJdSh0KXtjb25zdCBlPXhpKClbMTZdWzZdO2lmKCFlLnByb2plY3Rpb24pe2NvbnN0IG49ZS5wcm9qZWN0aW9uPWdyKHQ/dC5sZW5ndGg6MSxudWxsKSxvPW4uc2xpY2UoKTtsZXQgaT1lLmNoaWxkO2Zvcig7bnVsbCE9PWk7KXtjb25zdCBlPXQ/enUoaSx0KTowO251bGwhPT1lJiYob1tlXT9vW2VdLnByb2plY3Rpb25OZXh0PWk6bltlXT1pLG9bZV09aSksaT1pLm5leHR9fX1mdW5jdGlvbiBIdSh0LGU9MCxuKXtjb25zdCBvPXhpKCksaT1PaSgpLGE9X2QoaSx2byt0LDE2LG51bGwsbnx8bnVsbCk7bnVsbD09PWEucHJvamVjdGlvbiYmKGEucHJvamVjdGlvbj1lKSxFaSgpLDY0IT0oNjQmYS5mbGFncykmJihmdW5jdGlvbiByKHQsZSxuKXt1YyhlWzExXSwwLGUsbixYbCh0LG4sZSksZWMobi5wYXJlbnR8fGVbNl0sbixlKSl9KShpLG8sYSl9ZnVuY3Rpb24gRnUodCxlLG4pe3JldHVybiBMdSh0LCIiLGUsIiIsbiksRnV9ZnVuY3Rpb24gTHUodCxlLG4sbyxpKXtjb25zdCBhPXhpKCkscj1DbShhLGUsbixvKTtpZihyIT09U2Mpe2NvbnN0IG49T2koKSxzPW5hKCk7emQobixzLGEsdCxyLGFbMTFdLGksITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLHMsdCx6aSgpLTEsZSxvKX1yZXR1cm4gTHV9ZnVuY3Rpb24gQnUodCxlLG4sbyxpLGEscil7Y29uc3Qgcz14aSgpLGw9TW0ocyxlLG4sbyxpLGEpO2lmKGwhPT1TYyl7Y29uc3Qgbj1PaSgpLGk9bmEoKTt6ZChuLGkscyx0LGwsc1sxMV0sciwhMSksbmdEZXZNb2RlJiZscChuLmRhdGEsaSx0LHppKCktMixlLG8sYSl9cmV0dXJuIEJ1fWZ1bmN0aW9uIFZ1KHQsZSxuLG8saSxhLHIscyxsKXtjb25zdCBjPXhpKCksZD12bShjLGUsbixvLGksYSxyLHMpO2lmKGQhPT1TYyl7Y29uc3Qgbj1PaSgpLGk9bmEoKTt6ZChuLGksYyx0LGQsY1sxMV0sbCwhMSksbmdEZXZNb2RlJiZscChuLmRhdGEsaSx0LHppKCktMyxlLG8sYSxzKX1yZXR1cm4gVnV9ZnVuY3Rpb24gVXUodCxlLG4sbyxpLGEscixzLGwsYyxkKXtjb25zdCBwPXhpKCksbT14bShwLGUsbixvLGksYSxyLHMsbCxjKTtpZihtIT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLHAsdCxtLHBbMTFdLGQsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTQsZSxvLGEscyxjKX1yZXR1cm4gVXV9ZnVuY3Rpb24ganUodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7Y29uc3QgdT14aSgpLGY9T20odSxlLG4sbyxpLGEscixzLGwsYyxkLHApO2lmKGYhPT1TYyl7Y29uc3Qgbj1PaSgpLGk9bmEoKTt6ZChuLGksdSx0LGYsdVsxMV0sbSwhMSksbmdEZXZNb2RlJiZscChuLmRhdGEsaSx0LHppKCktNSxlLG8sYSxzLGMscCl9cmV0dXJuIGp1fWZ1bmN0aW9uIFd1KHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmKXtjb25zdCBnPXhpKCksaD1QbShnLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUpO2lmKGghPT1TYyl7Y29uc3Qgbj1PaSgpLGk9bmEoKTt6ZChuLGksZyx0LGgsZ1sxMV0sZiwhMSksbmdEZXZNb2RlJiZscChuLmRhdGEsaSx0LHppKCktNixlLG8sYSxzLGMscCx1KX1yZXR1cm4gV3V9ZnVuY3Rpb24gR3UodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKXtjb25zdCBiPXhpKCkseT13bShiLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnKTtpZih5IT09U2Mpe2NvbnN0IG49T2koKSxpPW5hKCk7emQobixpLGIsdCx5LGJbMTFdLGgsITEpLG5nRGV2TW9kZSYmbHAobi5kYXRhLGksdCx6aSgpLTcsZSxvLGEscyxjLHAsdSxnKX1yZXR1cm4gR3V9ZnVuY3Rpb24gWXUodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIseSl7Y29uc3QgXz14aSgpLEM9a20oXyxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIpO2lmKEMhPT1TYyl7Y29uc3Qgbj1PaSgpLGk9bmEoKTt6ZChuLGksXyx0LEMsX1sxMV0seSwhMSksbmdEZXZNb2RlJiZscChuLmRhdGEsaSx0LHppKCktOCxlLG8sYSxzLGMscCx1LGcsYil9cmV0dXJuIFl1fWZ1bmN0aW9uIHF1KHQsZSxuKXtjb25zdCBvPXhpKCksaT1fbShvLGUpO2lmKGkhPT1TYyl7Y29uc3QgYT1PaSgpLHI9bmEoKTtpZih6ZChhLHIsbyx0LGksb1sxMV0sbiwhMSksbmdEZXZNb2RlKXtjb25zdCBuPVtlWzBdXTtmb3IobGV0IHQ9Mjt0PGUubGVuZ3RoO3QrPTIpbi5wdXNoKGVbdF0pO2xwKGEuZGF0YSxyLHQsemkoKS1uLmxlbmd0aCsxLC4uLm4pfX1yZXR1cm4gcXV9ZnVuY3Rpb24gWnUodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmQm8oT2koKSk7bGV0IHI9YT9lLmNsYXNzQmluZGluZ3M6ZS5zdHlsZUJpbmRpbmdzLHM9QWMociksbD16YyhyKTt0W29dPW47bGV0IGMsZD0hMTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCB0PW47Yz10WzFdLChudWxsPT09Y3x8eXIodCxjKT4wKSYmKGQ9ITApfWVsc2UgYz1uO2lmKGkpe2lmKDAhPT1sKXtjb25zdCBlPUFjKHRbcysxXSk7dFtvKzFdPUVjKGUscyksMCE9PWUmJih0W2UrMV09SWModFtlKzFdLG8pKSx0W3MrMV09KGZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZwbih0LCJleHBlY3RlZCBudW1iZXIiKSxuZ0Rldk1vZGUmJm1uKGUsMCwzMjc2NyksMTMxMDcxJnR8ZTw8MTd9KSh0W3MrMV0sbyl9ZWxzZSB0W28rMV09RWMocywwKSwwIT09cyYmKHRbcysxXT1JYyh0W3MrMV0sbykpLHM9b31lbHNlIHRbbysxXT1FYyhsLDApLG5nRGV2TW9kZSYmZ24oMCE9PXMmJjA9PT1sLCExLCJBZGRpbmcgdGVtcGxhdGUgYmluZGluZ3MgYWZ0ZXIgaG9zdEJpbmRpbmdzIGlzIG5vdCBhbGxvd2VkLiIpLDA9PT1zP3M9bzp0W2wrMV09SWModFtsKzFdLG8pLGw9bztkJiYodFtvKzFdPU5jKHRbbysxXSkpLFh1KHQsYyxvLCEwKSxYdSh0LGMsbywhMSksKGZ1bmN0aW9uIG0odCxlLG4sbyxpKXtjb25zdCBhPWk/dC5yZXNpZHVhbENsYXNzZXM6dC5yZXNpZHVhbFN0eWxlcztudWxsIT1hJiYic3RyaW5nIj09dHlwZW9mIGUmJnlyKGEsZSk+PTAmJihuW28rMV09RmMobltvKzFdKSl9KShlLGMsdCxvLGEpLHI9RWMocyxsKSxhP2UuY2xhc3NCaW5kaW5ncz1yOmUuc3R5bGVCaW5kaW5ncz1yfWZ1bmN0aW9uIFh1KHQsZSxuLG8saSl7Y29uc3QgYT10W24rMV0scj1udWxsPT09ZTtsZXQgcz1vP0FjKGEpOnpjKGEpLGw9ITE7Zm9yKDswIT09cyYmKCExPT09bHx8cik7KXtuZ0Rldk1vZGUmJnduKHQscyk7Y29uc3Qgbj10W3MrMV07S3UodFtzXSxlKSYmKGw9ITAsdFtzKzFdPW8/RmMobik6TmMobikpLHM9bz9BYyhuKTp6YyhuKX1sJiYodFtuKzFdPW8/TmMoYSk6RmMoYSkpfWZ1bmN0aW9uIEt1KHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmaG4oQXJyYXkuaXNBcnJheShlKSwhMCwiRXhwZWN0ZWQgdGhhdCAndFN0eWxpbmdLZXknIGhhcyBiZWVuIHVud3JhcHBlZCIpLG51bGw9PT10fHxudWxsPT1lfHwoQXJyYXkuaXNBcnJheSh0KT90WzFdOnQpPT09ZXx8ISghQXJyYXkuaXNBcnJheSh0KXx8InN0cmluZyIhPXR5cGVvZiBlKSYmeXIodCxlKT49MH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgSnU9e3RleHRFbmQ6MCxrZXk6MCxrZXlFbmQ6MCx2YWx1ZTowLHZhbHVlRW5kOjB9O2Z1bmN0aW9uIFF1KHQpe3JldHVybiB0LnN1YnN0cmluZyhKdS5rZXksSnUua2V5RW5kKX1mdW5jdGlvbiAkdSh0KXtyZXR1cm4gdC5zdWJzdHJpbmcoSnUudmFsdWUsSnUudmFsdWVFbmQpfWZ1bmN0aW9uIHRmKHQsZSl7Y29uc3Qgbj1KdS50ZXh0RW5kO3JldHVybiBuPT09ZT8tMTooZT1KdS5rZXlFbmQ9KGZ1bmN0aW9uIG8odCxlLG4pe2Zvcig7ZTxuJiZ0LmNoYXJDb2RlQXQoZSk+MzI7KWUrKztyZXR1cm4gZX0pKHQsSnUua2V5PWUsbiksb2YodCxlLG4pKX1mdW5jdGlvbiBlZih0LGUpe2NvbnN0IG49SnUudGV4dEVuZDtsZXQgbz1KdS5rZXk9b2YodCxlLG4pO3JldHVybiBuPT09bz8tMToobz1KdS5rZXlFbmQ9KGZ1bmN0aW9uIGkodCxlLG4pe2xldCBvO2Zvcig7ZTxuJiYoNDU9PT0obz10LmNoYXJDb2RlQXQoZSkpfHw5NT09PW98fCgtMzMmbyk+PTY1JiYoLTMzJm8pPD05MHx8bz49NDgmJm88PTU3KTspZSsrO3JldHVybiBlfSkodCxvLG4pLG89YWYodCxvLG4sNTgpLG89SnUudmFsdWU9b2YodCxvLG4pLG89SnUudmFsdWVFbmQ9KGZ1bmN0aW9uIGEodCxlLG4pe2xldCBvPS0xLGk9LTEsYT0tMSxyPWUscz1yO2Zvcig7cjxuOyl7Y29uc3QgbD10LmNoYXJDb2RlQXQocisrKTtpZig1OT09PWwpcmV0dXJuIHM7MzQ9PT1sfHwzOT09PWw/cz1yPXJmKHQsbCxyLG4pOmU9PT1yLTQmJjg1PT09YSYmODI9PT1pJiY3Nj09PW8mJjQwPT09bD9zPXI9cmYodCw0MSxyLG4pOmw+MzImJihzPXIpLGE9aSxpPW8sbz0tMzMmbH1yZXR1cm4gc30pKHQsbyxuKSxhZih0LG8sbiw1OSkpfWZ1bmN0aW9uIG5mKHQpe0p1LmtleT0wLEp1LmtleUVuZD0wLEp1LnZhbHVlPTAsSnUudmFsdWVFbmQ9MCxKdS50ZXh0RW5kPXQubGVuZ3RofWZ1bmN0aW9uIG9mKHQsZSxuKXtmb3IoO2U8biYmdC5jaGFyQ29kZUF0KGUpPD0zMjspZSsrO3JldHVybiBlfWZ1bmN0aW9uIGFmKHQsZSxuLG8pe3JldHVybihlPW9mKHQsZSxuKSk8biYmKG5nRGV2TW9kZSYmdC5jaGFyQ29kZUF0KGUpIT09byYmc2YodCxTdHJpbmcuZnJvbUNoYXJDb2RlKG8pLGUpLGUrKyksZX1mdW5jdGlvbiByZih0LGUsbixvKXtsZXQgaT0tMSxhPW47Zm9yKDthPG87KXtjb25zdCBuPXQuY2hhckNvZGVBdChhKyspO2lmKG49PWUmJjkyIT09aSlyZXR1cm4gYTtpPTkyPT1uJiY5Mj09PWk/MDpufXRocm93IG5nRGV2TW9kZT9zZih0LFN0cmluZy5mcm9tQ2hhckNvZGUoZSksbyk6bmV3IEVycm9yfWZ1bmN0aW9uIHNmKHQsZSxuKXt0aHJvdyBuZ0Rldk1vZGUmJmduKCJzdHJpbmciPT10eXBlb2YgdCwhMCwiU3RyaW5nIGV4cGVjdGVkIGhlcmUiKSxPbihgTWFsZm9ybWVkIHN0eWxlIGF0IGxvY2F0aW9uICR7bn0gaW4gc3RyaW5nICdgK3Quc3Vic3RyaW5nKDAsbikrIls+PiIrdC5zdWJzdHJpbmcobixuKzEpKyI8PF0iK3Quc3Vic3RyKG4rMSkrYCcuIEV4cGVjdGluZyAnJHtlfScuYCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGxmKHQsZSxuKXtyZXR1cm4gZmYodCxlLG4sITEpLGxmfWZ1bmN0aW9uIGNmKHQsZSl7cmV0dXJuIGZmKHQsZSxudWxsLCEwKSxjZn1mdW5jdGlvbiBkZih0KXtnZihDZixwZix0LCExKX1mdW5jdGlvbiBwZih0LGUpe2ZvcihsZXQgbj0oZnVuY3Rpb24gbih0KXtyZXR1cm4gbmYodCksZWYodCxvZih0LDAsSnUudGV4dEVuZCkpfSkoZSk7bj49MDtuPWVmKGUsbikpQ2YodCxRdShlKSwkdShlKSl9ZnVuY3Rpb24gbWYodCl7Z2YoaHIsdWYsdCwhMCl9ZnVuY3Rpb24gdWYodCxlKXtmb3IobGV0IG49KGZ1bmN0aW9uIG4odCl7cmV0dXJuIG5mKHQpLHRmKHQsb2YodCwwLEp1LnRleHRFbmQpKX0pKGUpO24+PTA7bj10ZihlLG4pKWhyKHQsUXUoZSksITApfWZ1bmN0aW9uIGZmKHQsZSxuLG8pe2NvbnN0IGk9eGkoKSxhPU9pKCkscj1GaSgyKTtpZihhLmZpcnN0VXBkYXRlUGFzcyYmYmYoYSx0LHIsbyksZSE9PVNjJiZmbShpLHIsZSkpe01mKGEsYS5kYXRhW3RhKCldLGksaVsxMV0sdCxpW3IrMV09KGZ1bmN0aW9uIHModCxlKXtudWxsPT10fHwoInN0cmluZyI9PXR5cGVvZiBlP3QrPWU6Im9iamVjdCI9PXR5cGVvZiB0JiYodD1LZShmcyh0KSkpKTtyZXR1cm4gdH0pKGUsbiksbyxyKX19ZnVuY3Rpb24gZ2YodCxlLG4sbyl7Y29uc3QgaT1PaSgpLGE9RmkoMik7aS5maXJzdFVwZGF0ZVBhc3MmJmJmKGksbnVsbCxhLG8pO2NvbnN0IHI9eGkoKTtpZihuIT09U2MmJmZtKHIsYSxuKSl7Y29uc3Qgcz1pLmRhdGFbdGEoKV07aWYoT2YocyxvKSYmIWhmKGksYSkpe2lmKG5nRGV2TW9kZSl7Y29uc3QgdD1pLmRhdGFbYV07Z24oQXJyYXkuaXNBcnJheSh0KT90WzFdOnQsITEsIlN0eWxpbmcgbGlua2VkIGxpc3Qgc2hhZG93IGlucHV0IHNob3VsZCBiZSBtYXJrZWQgYXMgJ2ZhbHNlJyIpfWxldCB0PW8/cy5jbGFzc2VzV2l0aG91dEhvc3Q6cy5zdHlsZXNXaXRob3V0SG9zdDtuZ0Rldk1vZGUmJiExPT09byYmbnVsbCE9PXQmJmduKHQuZW5kc1dpdGgoIjsiKSwhMCwiRXhwZWN0aW5nIHN0YXRpYyBwb3J0aW9uIHRvIGVuZCB3aXRoICc7JyIpLG51bGwhPT10JiYobj1KZSh0LG58fCIiKSksYnUoaSxzLHIsbixvKX1lbHNlIShmdW5jdGlvbiBsKHQsZSxuLG8saSxhLHIscyl7aT09PVNjJiYoaT1Rbik7bGV0IGw9MCxjPTAsZD0wPGkubGVuZ3RoP2lbMF06bnVsbCxwPTA8YS5sZW5ndGg/YVswXTpudWxsO2Zvcig7bnVsbCE9PWR8fG51bGwhPT1wOyl7bmdEZXZNb2RlJiZfbihsLDk5OSwiQXJlIHdlIHN0dWNrIGluIGluZmluaXRlIGxvb3A/IiksbmdEZXZNb2RlJiZfbihjLDk5OSwiQXJlIHdlIHN0dWNrIGluIGluZmluaXRlIGxvb3A/Iik7Y29uc3QgbT1sPGkubGVuZ3RoP2lbbCsxXTp2b2lkIDAsdT1jPGEubGVuZ3RoP2FbYysxXTp2b2lkIDA7bGV0IGYsZz1udWxsO2Q9PT1wPyhsKz0yLGMrPTIsbSE9PXUmJihnPXAsZj11KSk6bnVsbD09PXB8fG51bGwhPT1kJiZkPHA/KGwrPTIsZz1kKToobmdEZXZNb2RlJiZ4bihwLCJFeHBlY3RpbmcgdG8gaGF2ZSBhIHZhbGlkIGtleSIpLGMrPTIsZz1wLGY9dSksbnVsbCE9PWcmJk1mKHQsZSxuLG8sZyxmLHIscyksZD1sPGkubGVuZ3RoP2lbbF06bnVsbCxwPWM8YS5sZW5ndGg/YVtjXTpudWxsfX0pKGkscyxyLHJbMTFdLHJbYSsxXSxyW2ErMV09KGZ1bmN0aW9uIHModCxlLG4pe2lmKG51bGw9PW58fCIiPT09bilyZXR1cm4gUW47Y29uc3Qgbz1bXSxpPWZzKG4pO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspdChvLGlbZV0sITApO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBpKWZvcihjb25zdCBlIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShlKSYmdChvLGUsaVtlXSk7ZWxzZSJzdHJpbmciPT10eXBlb2YgaT9lKG8saSk6bmdEZXZNb2RlJiZPbigiVW5zdXBwb3J0ZWQgc3R5bGluZyB0eXBlICIrdHlwZW9mIGkrIjogIitpKTtyZXR1cm4gb30pKHQsZSxuKSxvLGEpfX1mdW5jdGlvbiBoZih0LGUpe3JldHVybiBlPj10LmV4cGFuZG9TdGFydEluZGV4fWZ1bmN0aW9uIGJmKHQsZSxuLG8pe25nRGV2TW9kZSYmQm8odCk7Y29uc3QgaT10LmRhdGE7aWYobnVsbD09PWlbbisxXSl7Y29uc3QgYT1pW3RhKCldO25nRGV2TW9kZSYmeG4oYSwiVE5vZGUgZXhwZWN0ZWQiKTtjb25zdCByPWhmKHQsbik7T2YoYSxvKSYmbnVsbD09PWUmJiFyJiYoZT0hMSksZT0oZnVuY3Rpb24gYSh0LGUsbixvKXtjb25zdCBpPVVpKHQpO2xldCBhPW8/ZS5yZXNpZHVhbENsYXNzZXM6ZS5yZXNpZHVhbFN0eWxlcztpZihudWxsPT09aSl7MD09PShvP2UuY2xhc3NCaW5kaW5nczplLnN0eWxlQmluZGluZ3MpJiYobj1fZihuPXlmKG51bGwsdCxlLG4sbyksZS5hdHRycyxvKSxhPW51bGwpfWVsc2V7Y29uc3Qgcj1lLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2lmKC0xPT09cnx8dFtyXSE9PWkpaWYobj15ZihpLHQsZSxuLG8pLG51bGw9PT1hKXtsZXQgbj0oZnVuY3Rpb24gcih0LGUsbil7Y29uc3Qgbz1uP2UuY2xhc3NCaW5kaW5nczplLnN0eWxlQmluZGluZ3M7aWYoMD09PXpjKG8pKXJldHVybjtyZXR1cm4gdFtBYyhvKV19KSh0LGUsbyk7dm9pZCAwIT09biYmQXJyYXkuaXNBcnJheShuKSYmKG49eWYobnVsbCx0LGUsblsxXSxvKSxuPV9mKG4sZS5hdHRycyxvKSwoZnVuY3Rpb24gcyh0LGUsbixvKXtjb25zdCBpPW4/ZS5jbGFzc0JpbmRpbmdzOmUuc3R5bGVCaW5kaW5ncztuZ0Rldk1vZGUmJmhuKHpjKGkpLDAsIkV4cGVjdGluZyB0byBoYXZlIGF0IGxlYXN0IG9uZSB0ZW1wbGF0ZSBzdHlsaW5nIGJpbmRpbmcuIiksdFtBYyhpKV09b30pKHQsZSxvLG4pKX1lbHNlIGE9KGZ1bmN0aW9uIGwodCxlLG4pe2xldCBvO2NvbnN0IGk9ZS5kaXJlY3RpdmVFbmQ7bmdEZXZNb2RlJiZobihlLmRpcmVjdGl2ZVN0eWxpbmdMYXN0LC0xLCJCeSB0aGUgdGltZSB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGF0IGxlYXN0IG9uZSBob3N0QmluZGluZ3Mtbm9kZSBzdHlsaW5nIGluc3RydWN0aW9uIG11c3QgaGF2ZSBleGVjdXRlZC4iKTtmb3IobGV0IGE9MStlLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2E8aTthKyspe289X2Yobyx0W2FdLmhvc3RBdHRycyxuKX1yZXR1cm4gX2YobyxlLmF0dHJzLG4pfSkodCxlLG8pfXZvaWQgMCE9PWEmJihvP2UucmVzaWR1YWxDbGFzc2VzPWE6ZS5yZXNpZHVhbFN0eWxlcz1hKTtyZXR1cm4gbn0pKGksYSxlLG8pLFp1KGksYSxlLG4scixvKX19ZnVuY3Rpb24geWYodCxlLG4sbyxpKXtsZXQgYT1udWxsO2NvbnN0IHI9bi5kaXJlY3RpdmVFbmQ7bGV0IHM9bi5kaXJlY3RpdmVTdHlsaW5nTGFzdDtmb3IoLTE9PT1zP3M9bi5kaXJlY3RpdmVTdGFydDpzKys7czxyJiYoYT1lW3NdLG5nRGV2TW9kZSYmeG4oYSwiZXhwZWN0ZWQgdG8gYmUgZGVmaW5lZCIpLG89X2YobyxhLmhvc3RBdHRycyxpKSxhIT09dCk7KXMrKztyZXR1cm4gbnVsbCE9PXQmJihuLmRpcmVjdGl2ZVN0eWxpbmdMYXN0PXMpLG99ZnVuY3Rpb24gX2YodCxlLG4pe2NvbnN0IG89bj8xOjI7bGV0IGk9LTE7aWYobnVsbCE9PWUpZm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IHI9ZVthXTsibnVtYmVyIj09dHlwZW9mIHI/aT1yOmk9PT1vJiYoQXJyYXkuaXNBcnJheSh0KXx8KHQ9dm9pZCAwPT09dD9bXTpbIiIsdF0pLGhyKHQsciwhIW58fGVbKythXSkpfXJldHVybiB2b2lkIDA9PT10P251bGw6dH1mdW5jdGlvbiBDZih0LGUsbil7aHIodCxlLGZzKG4pKX1mdW5jdGlvbiBNZih0LGUsbixvLGksYSxyLHMpe2lmKCEoMyZlLnR5cGUpKXJldHVybjtjb25zdCBsPXQuZGF0YSxjPWxbcysxXTtpZigheGYoSGMoYyk/dmYobCxlLG4saSx6YyhjKSxyKTp2b2lkIDApKXt4ZihhKXx8VGMoYykmJihhPXZmKGwsbnVsbCxuLGkscyxyKSk7IShmdW5jdGlvbiBkKHQsZSxuLG8saSl7Y29uc3QgYT1yaSh0KTtpZihlKWk/KG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQWRkQ2xhc3MrKyxhP3QuYWRkQ2xhc3MobixvKToobmdEZXZNb2RlJiZ4bihuLmNsYXNzTGlzdCwiSFRNTEVsZW1lbnQgZXhwZWN0ZWQiKSxuLmNsYXNzTGlzdC5hZGQobykpKToobmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJSZW1vdmVDbGFzcysrLGE/dC5yZW1vdmVDbGFzcyhuLG8pOm4uY2xhc3NMaXN0LnJlbW92ZShvKSk7ZWxzZXtsZXQgZT0tMT09PW8uaW5kZXhPZigiLSIpP3ZvaWQgMDpFbC5EYXNoQ2FzZTtpZihudWxsPT1pKW5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlU3R5bGUrKyxhP3QucmVtb3ZlU3R5bGUobixvLGUpOm4uc3R5bGUucmVtb3ZlUHJvcGVydHkobyk7ZWxzZXtjb25zdCByPSJzdHJpbmciPT10eXBlb2YgaSYmaS5lbmRzV2l0aCgiIWltcG9ydGFudCIpO3ImJihpPWkuc2xpY2UoMCwtMTApLGV8PUVsLkltcG9ydGFudCksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRTdHlsZSsrLGE/dC5zZXRTdHlsZShuLG8saSxlKToobmdEZXZNb2RlJiZ4bihuLnN0eWxlLCJIVE1MRWxlbWVudCBleHBlY3RlZCIpLG4uc3R5bGUuc2V0UHJvcGVydHkobyxpLHI/ImltcG9ydGFudCI6IiIpKX19fSkobyxyLGNpKHRhKCksbiksaSxhKX19ZnVuY3Rpb24gdmYodCxlLG4sbyxpLGEpe2NvbnN0IHI9bnVsbD09PWU7bGV0IHM7Zm9yKDtpPjA7KXtjb25zdCBlPXRbaV0sYT1BcnJheS5pc0FycmF5KGUpLGw9YT9lWzFdOmUsYz1udWxsPT09bDtsZXQgZD1uW2krMV07ZD09PVNjJiYoZD1jP1FuOnZvaWQgMCk7bGV0IHA9Yz9icihkLG8pOmw9PT1vP2Q6dm9pZCAwO2lmKGEmJiF4ZihwKSYmKHA9YnIoZSxvKSkseGYocCkmJihzPXAscikpcmV0dXJuIHM7Y29uc3QgbT10W2krMV07aT1yP0FjKG0pOnpjKG0pfWlmKG51bGwhPT1lKXtsZXQgdD1hP2UucmVzaWR1YWxDbGFzc2VzOmUucmVzaWR1YWxTdHlsZXM7bnVsbCE9dCYmKHM9YnIodCxvKSl9cmV0dXJuIHN9ZnVuY3Rpb24geGYodCl7cmV0dXJuIHZvaWQgMCE9PXR9ZnVuY3Rpb24gT2YodCxlKXtyZXR1cm4gMCE9KHQuZmxhZ3MmKGU/MTY6MzIpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gUGYodCxlPSIiKXtjb25zdCBuPXhpKCksbz1PaSgpLGk9dCt2bztuZ0Rldk1vZGUmJmduKHppKCksby5iaW5kaW5nU3RhcnRJbmRleCwidGV4dCBub2RlcyBzaG91bGQgYmUgY3JlYXRlZCBiZWZvcmUgYW55IGJpbmRpbmdzIiksbmdEZXZNb2RlJiZ3bihuLGkpO2NvbnN0IGE9by5maXJzdENyZWF0ZVBhc3M/X2QobyxpLDEsZSxudWxsKTpvLmRhdGFbaV0scj1uW2ldPUJsKG5bMTFdLGUpO3JjKG8sbixyLGEpLERpKGEsITEpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB3Zih0KXtyZXR1cm4ga2YoIiIsdCwiIiksd2Z9ZnVuY3Rpb24ga2YodCxlLG4pe2NvbnN0IG89eGkoKSxpPUNtKG8sdCxlLG4pO3JldHVybiBpIT09U2MmJmdwKG8sdGEoKSxpKSxrZn1mdW5jdGlvbiBTZih0LGUsbixvLGkpe2NvbnN0IGE9eGkoKSxyPU1tKGEsdCxlLG4sbyxpKTtyZXR1cm4gciE9PVNjJiZncChhLHRhKCksciksU2Z9ZnVuY3Rpb24gRGYodCxlLG4sbyxpLGEscil7Y29uc3Qgcz14aSgpLGw9dm0ocyx0LGUsbixvLGksYSxyKTtyZXR1cm4gbCE9PVNjJiZncChzLHRhKCksbCksRGZ9ZnVuY3Rpb24gUmYodCxlLG4sbyxpLGEscixzLGwpe2NvbnN0IGM9eGkoKSxkPXhtKGMsdCxlLG4sbyxpLGEscixzLGwpO3JldHVybiBkIT09U2MmJmdwKGMsdGEoKSxkKSxSZn1mdW5jdGlvbiBFZih0LGUsbixvLGksYSxyLHMsbCxjLGQpe2NvbnN0IHA9eGkoKSxtPU9tKHAsdCxlLG4sbyxpLGEscixzLGwsYyxkKTtyZXR1cm4gbSE9PVNjJiZncChwLHRhKCksbSksRWZ9ZnVuY3Rpb24gQWYodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7Y29uc3QgdT14aSgpLGY9UG0odSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKTtyZXR1cm4gZiE9PVNjJiZncCh1LHRhKCksZiksQWZ9ZnVuY3Rpb24gVGYodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYpe2NvbnN0IGc9eGkoKSxoPXdtKGcsdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYpO3JldHVybiBoIT09U2MmJmdwKGcsdGEoKSxoKSxUZn1mdW5jdGlvbiBOZih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgpe2NvbnN0IGI9eGkoKSx5PWttKGIsdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKTtyZXR1cm4geSE9PVNjJiZncChiLHRhKCkseSksTmZ9ZnVuY3Rpb24gemYodCl7Y29uc3QgZT14aSgpLG49X20oZSx0KTtyZXR1cm4gbiE9PVNjJiZncChlLHRhKCksbiksemZ9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIElmKHQsZSxuKXtnZihocix1ZixDbSh4aSgpLHQsZSxuKSwhMCl9ZnVuY3Rpb24gSGYodCxlLG4sbyxpKXtnZihocix1ZixNbSh4aSgpLHQsZSxuLG8saSksITApfWZ1bmN0aW9uIEZmKHQsZSxuLG8saSxhLHIpe2dmKGhyLHVmLHZtKHhpKCksdCxlLG4sbyxpLGEsciksITApfWZ1bmN0aW9uIExmKHQsZSxuLG8saSxhLHIscyxsKXtnZihocix1Zix4bSh4aSgpLHQsZSxuLG8saSxhLHIscyxsKSwhMCl9ZnVuY3Rpb24gQmYodCxlLG4sbyxpLGEscixzLGwsYyxkKXtnZihocix1ZixPbSh4aSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCksITApfWZ1bmN0aW9uIFZmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pe2dmKGhyLHVmLFBtKHhpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSksITApfWZ1bmN0aW9uIFVmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmKXtnZihocix1Zix3bSh4aSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmKSwhMCl9ZnVuY3Rpb24gamYodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKXtnZihocix1ZixrbSh4aSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCksITApfWZ1bmN0aW9uIFdmKHQpe2dmKGhyLHVmLF9tKHhpKCksdCksITApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBHZih0LGUsbil7ZGYoQ20oeGkoKSx0LGUsbikpfWZ1bmN0aW9uIFlmKHQsZSxuLG8saSl7ZGYoTW0oeGkoKSx0LGUsbixvLGkpKX1mdW5jdGlvbiBxZih0LGUsbixvLGksYSxyKXtkZih2bSh4aSgpLHQsZSxuLG8saSxhLHIpKX1mdW5jdGlvbiBaZih0LGUsbixvLGksYSxyLHMsbCl7ZGYoeG0oeGkoKSx0LGUsbixvLGksYSxyLHMsbCkpfWZ1bmN0aW9uIFhmKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7ZGYoT20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQpKX1mdW5jdGlvbiBLZih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKXtkZihQbSh4aSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pKX1mdW5jdGlvbiBKZih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZil7ZGYod20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZikpfWZ1bmN0aW9uIFFmKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCl7ZGYoa20oeGkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgpKX1mdW5jdGlvbiAkZih0KXtkZihfbSh4aSgpLHQpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gdGcodCxlLG4sbyxpKXtyZXR1cm4gZmYodCxDbSh4aSgpLGUsbixvKSxpLCExKSx0Z31mdW5jdGlvbiBlZyh0LGUsbixvLGksYSxyKXtyZXR1cm4gZmYodCxNbSh4aSgpLGUsbixvLGksYSksciwhMSksZWd9ZnVuY3Rpb24gbmcodCxlLG4sbyxpLGEscixzLGwpe3JldHVybiBmZih0LHZtKHhpKCksZSxuLG8saSxhLHIscyksbCwhMSksbmd9ZnVuY3Rpb24gb2codCxlLG4sbyxpLGEscixzLGwsYyxkKXtyZXR1cm4gZmYodCx4bSh4aSgpLGUsbixvLGksYSxyLHMsbCxjKSxkLCExKSxvZ31mdW5jdGlvbiBpZyh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKXtyZXR1cm4gZmYodCxPbSh4aSgpLGUsbixvLGksYSxyLHMsbCxjLGQscCksbSwhMSksaWd9ZnVuY3Rpb24gYWcodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYpe3JldHVybiBmZih0LFBtKHhpKCksZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSksZiwhMSksYWd9ZnVuY3Rpb24gcmcodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKXtyZXR1cm4gZmYodCx3bSh4aSgpLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnKSxoLCExKSxyZ31mdW5jdGlvbiBzZyh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYix5KXtyZXR1cm4gZmYodCxrbSh4aSgpLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYikseSwhMSksc2d9ZnVuY3Rpb24gbGcodCxlLG4pe3JldHVybiBmZih0LF9tKHhpKCksZSksbiwhMSksbGd9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGNnKHQsZSxuKXtjb25zdCBvPXhpKCksaT1IaSgpO2lmKGZtKG8saSxlKSl7Y29uc3QgYT1PaSgpLHI9bmEoKTt6ZChhLHIsbyx0LGUsb1sxMV0sbiwhMCksbmdEZXZNb2RlJiZscChhLmRhdGEscix0LGkpfXJldHVybiBjZ31mdW5jdGlvbiBkZyh0LGUsbil7Y29uc3Qgbz14aSgpLGk9SGkoKTtpZihmbShvLGksZSkpe2NvbnN0IGE9T2koKSxyPW5hKCk7emQoYSxyLG8sdCxlLG1wKFVpKGEuZGF0YSkscixvKSxuLCEwKSxuZ0Rldk1vZGUmJmxwKGEuZGF0YSxyLHQsaSl9cmV0dXJuIGRnfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8idW5kZWZpbmVkIj09dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiYoWG4ubmdJMThuQ2xvc3VyZU1vZGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnb29nJiYiZnVuY3Rpb24iPT10eXBlb2YgZ29vZy5nZXRNc2cpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBwZz12b2lkIDA7dmFyIG1nPVsiZW4iLFtbImEiLCJwIl0sWyJBTSIsIlBNIl0scGddLFtbIkFNIiwiUE0iXSxwZyxwZ10sW1siUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLFsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXV0scGcsW1siSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl1dLHBnLFtbIkIiLCJBIl0sWyJCQyIsIkFEIl0sWyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21pbmkiXV0sMCxbNiwwXSxbIk0vZC95eSIsIk1NTSBkLCB5IiwiTU1NTSBkLCB5IiwiRUVFRSwgTU1NTSBkLCB5Il0sWyJoOm1tIGEiLCJoOm1tOnNzIGEiLCJoOm1tOnNzIGEgeiIsImg6bW06c3MgYSB6enp6Il0sWyJ7MX0sIHswfSIscGcsInsxfSAnYXQnIHswfSIscGddLFsiLiIsIiwiLCI7IiwiJSIsIisiLCItIiwiRSIsIsOXIiwi4oCwIiwi4oieIiwiTmFOIiwiOiJdLFsiIywjIzAuIyMjIiwiIywjIzAlIiwiwqQjLCMjMC4wMCIsIiNFMCJdLCJVU0QiLCIkIiwiVVMgRG9sbGFyIix7fSwibHRyIixmdW5jdGlvbiB1Zyh0KXtjb25zdCBlPU1hdGguZmxvb3IoTWF0aC5hYnModCkpLG49dC50b1N0cmluZygpLnJlcGxhY2UoL15bXi5dKlwuPy8sIiIpLmxlbmd0aDtyZXR1cm4gMT09PWUmJjA9PT1uPzE6NX1dOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgZmc9e307ZnVuY3Rpb24gZ2codCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpO2xldCBvPWJnKGUpO2lmKG8pcmV0dXJuIG87Y29uc3QgaT1lLnNwbGl0KCItIilbMF07aWYobz1iZyhpKSxvKXJldHVybiBvO2lmKCJlbiI9PT1pKXJldHVybiBtZzt0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgbG9jYWxlIGRhdGEgZm9yIHRoZSBsb2NhbGUgIiR7dH0iLmApfWZ1bmN0aW9uIGhnKHQpe3JldHVybiBnZyh0KVt5Zy5QbHVyYWxDYXNlXX1mdW5jdGlvbiBiZyh0KXtyZXR1cm4gdCBpbiBmZ3x8KGZnW3RdPVhuLm5nJiZYbi5uZy5jb21tb24mJlhuLm5nLmNvbW1vbi5sb2NhbGVzJiZYbi5uZy5jb21tb24ubG9jYWxlc1t0XSksZmdbdF19dmFyIHlnOyEoZnVuY3Rpb24odCl7dFt0LkxvY2FsZUlkPTBdPSJMb2NhbGVJZCIsdFt0LkRheVBlcmlvZHNGb3JtYXQ9MV09IkRheVBlcmlvZHNGb3JtYXQiLHRbdC5EYXlQZXJpb2RzU3RhbmRhbG9uZT0yXT0iRGF5UGVyaW9kc1N0YW5kYWxvbmUiLHRbdC5EYXlzRm9ybWF0PTNdPSJEYXlzRm9ybWF0Iix0W3QuRGF5c1N0YW5kYWxvbmU9NF09IkRheXNTdGFuZGFsb25lIix0W3QuTW9udGhzRm9ybWF0PTVdPSJNb250aHNGb3JtYXQiLHRbdC5Nb250aHNTdGFuZGFsb25lPTZdPSJNb250aHNTdGFuZGFsb25lIix0W3QuRXJhcz03XT0iRXJhcyIsdFt0LkZpcnN0RGF5T2ZXZWVrPThdPSJGaXJzdERheU9mV2VlayIsdFt0LldlZWtlbmRSYW5nZT05XT0iV2Vla2VuZFJhbmdlIix0W3QuRGF0ZUZvcm1hdD0xMF09IkRhdGVGb3JtYXQiLHRbdC5UaW1lRm9ybWF0PTExXT0iVGltZUZvcm1hdCIsdFt0LkRhdGVUaW1lRm9ybWF0PTEyXT0iRGF0ZVRpbWVGb3JtYXQiLHRbdC5OdW1iZXJTeW1ib2xzPTEzXT0iTnVtYmVyU3ltYm9scyIsdFt0Lk51bWJlckZvcm1hdHM9MTRdPSJOdW1iZXJGb3JtYXRzIix0W3QuQ3VycmVuY3lDb2RlPTE1XT0iQ3VycmVuY3lDb2RlIix0W3QuQ3VycmVuY3lTeW1ib2w9MTZdPSJDdXJyZW5jeVN5bWJvbCIsdFt0LkN1cnJlbmN5TmFtZT0xN109IkN1cnJlbmN5TmFtZSIsdFt0LkN1cnJlbmNpZXM9MThdPSJDdXJyZW5jaWVzIix0W3QuRGlyZWN0aW9uYWxpdHk9MTldPSJEaXJlY3Rpb25hbGl0eSIsdFt0LlBsdXJhbENhc2U9MjBdPSJQbHVyYWxDYXNlIix0W3QuRXh0cmFEYXRhPTIxXT0iRXh0cmFEYXRhIn0pKHlnfHwoeWc9e30pKTtjb25zdCBfZz1bInplcm8iLCJvbmUiLCJ0d28iLCJmZXciLCJtYW55Il07Y29uc3QgQ2c9ImVuLVVTIixNZz17bWFya2VyOiJlbGVtZW50In0sdmc9e21hcmtlcjoiSUNVIn07dmFyIHhnOyEoZnVuY3Rpb24odCl7dFt0LlNISUZUPTJdPSJTSElGVCIsdFt0LkFQUEVORF9FQUdFUkxZPTFdPSJBUFBFTkRfRUFHRVJMWSIsdFt0LkNPTU1FTlQ9Ml09IkNPTU1FTlQifSkoeGd8fCh4Zz17fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IE9nPUNnO2Z1bmN0aW9uIFBnKHQpe3huKHQsIkV4cGVjdGVkIGxvY2FsZUlkIHRvIGJlIGRlZmluZWQiKSwic3RyaW5nIj09dHlwZW9mIHQmJihPZz10LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIikpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gd2codCxlLG4pe2NvbnN0IG89ZS5pbnNlcnRCZWZvcmVJbmRleCxpPUFycmF5LmlzQXJyYXkobyk/b1swXTpvO3JldHVybiBudWxsPT09aT9uYyh0LDAsbik6KG5nRGV2TW9kZSYmd24obixpKSxsaShuW2ldKSl9ZnVuY3Rpb24ga2codCxlLG4sbyxpKXtjb25zdCBhPWUuaW5zZXJ0QmVmb3JlSW5kZXg7aWYoQXJyYXkuaXNBcnJheShhKSl7bmdEZXZNb2RlJiZQbihvKTtsZXQgcj1vLHM9bnVsbDtpZigzJmUudHlwZXx8KHM9cixyPWkpLG51bGwhPT1yJiYwPT0oMiZlLmZsYWdzKSlmb3IobGV0IGU9MTtlPGEubGVuZ3RoO2UrKyl7SmwodCxyLG5bYVtlXV0scywhMSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gU2codCxlKXtpZihuZ0Rldk1vZGUmJmduKGUuaW5zZXJ0QmVmb3JlSW5kZXgsbnVsbCwiV2UgZXhwZWN0IHRoYXQgaW5zZXJ0QmVmb3JlSW5kZXggaXMgbm90IHNldCIpLHQucHVzaChlKSx0Lmxlbmd0aD4xKWZvcihsZXQgbj10Lmxlbmd0aC0yO24+PTA7bi0tKXtjb25zdCBvPXRbbl07RGcobyl8fFJnKG8sZSkmJm51bGw9PT1FZyhvKSYmQWcobyxlLmluZGV4KX19ZnVuY3Rpb24gRGcodCl7cmV0dXJuISg2NCZ0LnR5cGUpfWZ1bmN0aW9uIFJnKHQsZSl7cmV0dXJuIERnKGUpfHx0LmluZGV4PmUuaW5kZXh9ZnVuY3Rpb24gRWcodCl7Y29uc3QgZT10Lmluc2VydEJlZm9yZUluZGV4O3JldHVybiBBcnJheS5pc0FycmF5KGUpP2VbMF06ZX1mdW5jdGlvbiBBZyh0LGUpe2NvbnN0IG49dC5pbnNlcnRCZWZvcmVJbmRleDtBcnJheS5pc0FycmF5KG4pP25bMF09ZTooYWMod2csa2cpLHQuaW5zZXJ0QmVmb3JlSW5kZXg9ZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFRnKHQsZSl7Y29uc3Qgbj10LmRhdGFbZV07aWYobnVsbD09PW58fCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gbnVsbDshbmdEZXZNb2RlfHxuLmhhc093blByb3BlcnR5KCJ0Vmlld3MiKXx8bi5oYXNPd25Qcm9wZXJ0eSgiY3VycmVudENhc2VMVmlld0luZGV4Iil8fE9uKCJXZSBleHBlY3QgdG8gZ2V0ICdudWxsJ3wnVEljdSd8J1RJY3VDb250YWluZXInLCBidXQgZ290OiAiK24pO2NvbnN0IG89bi5oYXNPd25Qcm9wZXJ0eSgiY3VycmVudENhc2VMVmlld0luZGV4Iik/bjpuLnZhbHVlO3JldHVybiBuZ0Rldk1vZGUmJk5vKG8pLG99ZnVuY3Rpb24gTmcodCxlLG4pe2NvbnN0IG89Q2QodCxuLDY0LG51bGwsbnVsbCk7cmV0dXJuIFNnKGUsbyksb31mdW5jdGlvbiB6Zyh0LGUpe2NvbnN0IG49ZVt0LmN1cnJlbnRDYXNlTFZpZXdJbmRleF07cmV0dXJuIG51bGw9PT1uP246bjwwP35uOm59ZnVuY3Rpb24gSWcodCl7cmV0dXJuIHQ+Pj4xN31mdW5jdGlvbiBIZyh0KXtyZXR1cm4oMTMxMDcwJnQpPj4+MX1mdW5jdGlvbiBGZyh0KXtyZXR1cm4gMSZ0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IExnPTAsQmc9MDtmdW5jdGlvbiBWZyh0LGUsbixvKXtuZ0Rldk1vZGUmJlBuKG8pO2NvbnN0IGk9blsxMV07bGV0IGEscj1udWxsO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKXtjb25zdCBsPWVbc107aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCB0PWVbKytzXTtudWxsPT09blt0XSYmKG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlVGV4dE5vZGUrKyxuZ0Rldk1vZGUmJnduKG4sdCksblt0XT1CbChpLGwpKX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgbClzd2l0Y2goMSZsKXtjYXNlIDA6Y29uc3QgYz1JZyhsKTtsZXQgZCxwO2lmKG51bGw9PT1yJiYocj1jLGE9dGMoaSxvKSksYz09PXI/KGQ9byxwPWEpOihkPW51bGwscD1saShuW2NdKSksbnVsbCE9PXApe25nRGV2TW9kZSYmUG4ocCk7Y29uc3QgZT1IZyhsKTtuZ0Rldk1vZGUmJk1uKGUsdm8sIk1pc3NpbmcgcmVmIik7Y29uc3Qgbz1uW2VdO25nRGV2TW9kZSYmUG4obyksSmwoaSxwLG8sZCwhMSk7Y29uc3QgYT1UZyh0LGUpO2lmKG51bGwhPT1hJiYib2JqZWN0Ij09dHlwZW9mIGEpe25nRGV2TW9kZSYmTm8oYSk7Y29uc3QgZT16ZyhhLG4pO251bGwhPT1lJiZWZyh0LGEuY3JlYXRlW2VdLG4sblthLmFuY2hvcklkeF0pfX1icmVhaztjYXNlIDE6Y29uc3QgbT1lWysrc10sdT1lWysrc107WmQoaSxjaShsPj4+MSxuKSxudWxsLG51bGwsbSx1LG51bGwpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIG11dGF0ZSBvcGVyYXRpb24gZm9yICIke2x9ImApfWVsc2Ugc3dpdGNoKGwpe2Nhc2Ugdmc6Y29uc3QgdD1lWysrc10sbz1lWysrc107aWYobnVsbD09PW5bb10pe25nRGV2TW9kZSYmZ24odHlwZW9mIHQsInN0cmluZyIsYEV4cGVjdGVkICIke3R9IiB0byBiZSBhIGNvbW1lbnQgbm9kZSB2YWx1ZWApLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLG5nRGV2TW9kZSYmVm8obixvKTthbChuW29dPVVsKGksdCksbil9YnJlYWs7Y2FzZSBNZzpjb25zdCBhPWVbKytzXSxyPWVbKytzXTtpZihudWxsPT09bltyXSl7bmdEZXZNb2RlJiZnbih0eXBlb2YgYSwic3RyaW5nIixgRXhwZWN0ZWQgIiR7YX0iIHRvIGJlIGFuIGVsZW1lbnQgbm9kZSB0YWcgbmFtZWApLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlRWxlbWVudCsrLG5nRGV2TW9kZSYmVm8obixyKTthbChuW3JdPWpsKGksYSxudWxsKSxuKX1icmVhaztkZWZhdWx0Om5nRGV2TW9kZSYmT24oYFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgbXV0YXRlIG9wZXJhdGlvbiBmb3IgIiR7bH0iYCl9fX1mdW5jdGlvbiBVZyh0LGUsbixvLGkpe2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKXtjb25zdCByPW5bYV0scz1uWysrYV07aWYociZpKXtsZXQgaT0iIjtmb3IobGV0IHI9YSsxO3I8PWErcztyKyspe2NvbnN0IGE9bltyXTtpZigic3RyaW5nIj09dHlwZW9mIGEpaSs9YTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSlpZihhPDApaSs9cm4oZVtvLWFdKTtlbHNle2NvbnN0IHM9YT4+PjI7c3dpdGNoKDMmYSl7Y2FzZSAxOmNvbnN0IGE9blsrK3JdLGw9blsrK3JdLGM9dC5kYXRhW3NdO25nRGV2TW9kZSYmeG4oYywiRXhwZXJ0aW5nIFROb2RlIG9yIHN0cmluZyIpLCJzdHJpbmciPT10eXBlb2YgYz9aZChlWzExXSxlW3NdLG51bGwsYyxhLGksbCk6emQodCxjLGUsYSxpLGVbMTFdLGwsITEpO2JyZWFrO2Nhc2UgMDpjb25zdCBkPWVbc107bnVsbCE9PWQmJlZsKGVbMTFdLGQsaSk7YnJlYWs7Y2FzZSAyOldnKHQsVGcodCxzKSxlLGkpO2JyZWFrO2Nhc2UgMzpqZyh0LFRnKHQscyksbyxlKX19fX1lbHNle2NvbnN0IGk9blthKzFdO2lmKGk+MCYmMz09KDMmaSkpe2NvbnN0IG49VGcodCxpPj4+Mik7ZVtuLmN1cnJlbnRDYXNlTFZpZXdJbmRleF08MCYmamcodCxuLG8sZSl9fWErPXN9fWZ1bmN0aW9uIGpnKHQsZSxuLG8pe25nRGV2TW9kZSYmd24obyxlLmN1cnJlbnRDYXNlTFZpZXdJbmRleCk7bGV0IGk9b1tlLmN1cnJlbnRDYXNlTFZpZXdJbmRleF07aWYobnVsbCE9PWkpe2xldCBhPUxnO2k8MCYmKGk9b1tlLmN1cnJlbnRDYXNlTFZpZXdJbmRleF09fmksYT0tMSksVWcodCxvLGUudXBkYXRlW2ldLG4sYSl9fWZ1bmN0aW9uIFdnKHQsZSxuLG8pe2NvbnN0IGk9KGZ1bmN0aW9uIGEodCxlKXtsZXQgbj10LmNhc2VzLmluZGV4T2YoZSk7aWYoLTE9PT1uKXN3aXRjaCh0LnR5cGUpe2Nhc2UgMTp7Y29uc3Qgbz0oZnVuY3Rpb24gaSh0LGUpe2NvbnN0IG49aGcoZSkocGFyc2VJbnQodCwxMCkpLG89X2dbbl07cmV0dXJuIHZvaWQgMCE9PW8/bzoib3RoZXIifSkoZSwoZnVuY3Rpb24gbygpe3JldHVybiBPZ30pKCkpO249dC5jYXNlcy5pbmRleE9mKG8pLC0xPT09biYmIm90aGVyIiE9PW8mJihuPXQuY2FzZXMuaW5kZXhPZigib3RoZXIiKSk7YnJlYWt9Y2FzZSAwOm49dC5jYXNlcy5pbmRleE9mKCJvdGhlciIpfXJldHVybi0xPT09bj9udWxsOm59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoZSxvKTtpZih6ZyhlLG4pIT09aSYmKEdnKHQsZSxuKSxuW2UuY3VycmVudENhc2VMVmlld0luZGV4XT1udWxsPT09aT9udWxsOn5pLG51bGwhPT1pKSl7Y29uc3Qgbz1uW2UuYW5jaG9ySWR4XTtvJiYobmdEZXZNb2RlJiZQbihvKSxWZyh0LGUuY3JlYXRlW2ldLG4sbykpfX1mdW5jdGlvbiBHZyh0LGUsbil7bGV0IG89emcoZSxuKTtpZihudWxsIT09byl7Y29uc3QgaT1lLnJlbW92ZVtvXTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7Y29uc3Qgbz1pW2VdO2lmKG8+MCl7Y29uc3QgdD1jaShvLG4pO251bGwhPT10JiZkYyhuWzExXSx0KX1lbHNlIEdnKHQsVGcodCx+byksbil9fX1mdW5jdGlvbiBZZygpe2NvbnN0IHQ9W107bGV0IGUsbixvPS0xO2Z1bmN0aW9uIGkodCxlKXtvPTA7Y29uc3QgaT16Zyh0LGUpO251bGwhPT1pPyhuZ0Rldk1vZGUmJm1uKGksMCx0LmNhc2VzLmxlbmd0aC0xKSxuPXQucmVtb3ZlW2ldKTpuPVFufWZ1bmN0aW9uIGEoKXtpZihvPG4ubGVuZ3RoKXtjb25zdCByPW5bbysrXTtpZihuZ0Rldk1vZGUmJnBuKHIsIkV4cGVjdGluZyBPcENvZGUgbnVtYmVyIikscj4wKXtjb25zdCB0PWVbcl07cmV0dXJuIG5nRGV2TW9kZSYmUG4odCksdH17dC5wdXNoKG8sbik7Y29uc3Qgcz1lWzFdLmRhdGFbfnJdO3JldHVybiBuZ0Rldk1vZGUmJk5vKHMpLGkocyxlKSxhKCl9fXJldHVybiAwPT09dC5sZW5ndGg/bnVsbDoobj10LnBvcCgpLG89dC5wb3AoKSxhKCkpfXJldHVybiBmdW5jdGlvbiByKG4sbyl7Zm9yKGU9bzt0Lmxlbmd0aDspdC5wb3AoKTtyZXR1cm4gbmdEZXZNb2RlJiZFbyhuLG8pLGkobi52YWx1ZSxvKSxhfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcWcodCl7Y29uc3QgZT10fHwoQXJyYXkuaXNBcnJheSh0aGlzKT90aGlzOltdKTtsZXQgbj1bXTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbz1lW3QrK10saT0obyZ4Zy5BUFBFTkRfRUFHRVJMWSk9PT14Zy5BUFBFTkRfRUFHRVJMWSxhPW8+Pj54Zy5TSElGVDtuLnB1c2goYGxWaWV3WyR7YX1dID0gZG9jdW1lbnQuJHsobyZ4Zy5DT01NRU5UKT09PXhnLkNPTU1FTlQ/ImNyZWF0ZUNvbW1lbnQiOiJjcmVhdGVUZXh0In0oJHtKU09OLnN0cmluZ2lmeShlW3RdKX0pO2ApLGkmJm4ucHVzaChgcGFyZW50LmFwcGVuZENoaWxkKGxWaWV3WyR7YX1dKTtgKX1yZXR1cm4gbn1mdW5jdGlvbiBaZyh0KXtjb25zdCBlPW5ldyBKZyh0fHwoQXJyYXkuaXNBcnJheSh0aGlzKT90aGlzOltdKSk7bGV0IG49W107ZnVuY3Rpb24gbyh0KXtjb25zdCBuPXQ+Pj4yO3N3aXRjaCgzJnQpe2Nhc2UgMDpyZXR1cm5gKGxWaWV3WyR7bn1dIGFzIFRleHQpLnRleHRDb250ZW50ID0gJCQkYDtjYXNlIDE6Y29uc3QgdD1lLmNvbnN1bWVTdHJpbmcoKSxvPWUuY29uc3VtZUZ1bmN0aW9uKCk7cmV0dXJuYChsVmlld1ske259XSBhcyBFbGVtZW50KS5zZXRBdHRyaWJ1dGUoJyR7dH0nLCAke28/YCgke299KSgkJCQpYDoiJCQkIn0pYDtjYXNlIDI6cmV0dXJuYGljdVN3aXRjaENhc2UoJHtufSwgJCQkKWA7Y2FzZSAzOnJldHVybmBpY3VVcGRhdGVDYXNlKCR7bn0pYH10aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgT3BDb2RlIil9Zm9yKDtlLmhhc01vcmUoKTspe2xldCB0PWUuY29uc3VtZU51bWJlcigpLGk9ZS5jb25zdW1lTnVtYmVyKCk7Y29uc3QgYT1lLmkraSxyPVtdO2xldCBzPSIiO2Zvcig7ZS5pPGE7KXtsZXQgdD1lLmNvbnN1bWVOdW1iZXJPclN0cmluZygpO2lmKCJzdHJpbmciPT10eXBlb2YgdClzKz10O2Vsc2UgaWYodDwwKXMrPSIke2xWaWV3W2kiK3QrIl19IjtlbHNle2NvbnN0IGU9byh0KTtyLnB1c2goZS5yZXBsYWNlKCIkJCQiLCJgIitzKyJgIikrIjsiKSxzPSIifX1uLnB1c2goYGlmIChtYXNrICYgMGIke3QudG9TdHJpbmcoMil9KSB7ICR7ci5qb2luKCIgIil9IH1gKX1yZXR1cm4gbn1mdW5jdGlvbiBYZyh0KXtjb25zdCBlPW5ldyBKZyh0fHwoQXJyYXkuaXNBcnJheSh0aGlzKT90aGlzOltdKSk7bGV0IG49W107ZnVuY3Rpb24gbyh0KXtjb25zdCBuPUlnKHQpLG89SGcodCk7c3dpdGNoKEZnKHQpKXtjYXNlIDA6cmV0dXJuYChsVmlld1ske259XSBhcyBFbGVtZW50KS5hcHBlbmRDaGlsZChsVmlld1ske2l9XSlgO2Nhc2UgMTpyZXR1cm5gKGxWaWV3WyR7b31dIGFzIEVsZW1lbnQpLnNldEF0dHJpYnV0ZSgiJHtlLmNvbnN1bWVTdHJpbmcoKX0iLCAiJHtlLmNvbnN1bWVTdHJpbmcoKX0iKWB9dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIE9wQ29kZTogIitGZyh0KSl9bGV0IGk9LTE7Zm9yKDtlLmhhc01vcmUoKTspe2xldCB0PWUuY29uc3VtZU51bWJlclN0cmluZ09yTWFya2VyKCk7aWYodD09PXZnKXtjb25zdCB0PWUuY29uc3VtZVN0cmluZygpO2k9ZS5jb25zdW1lTnVtYmVyKCksbi5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIiR7dH0iKWApfWVsc2UgaWYodD09PU1nKXtjb25zdCB0PWUuY29uc3VtZVN0cmluZygpO2k9ZS5jb25zdW1lTnVtYmVyKCksbi5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIiR7dH0iKWApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0KWk9ZS5jb25zdW1lTnVtYmVyKCksbi5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIke3R9IilgKTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUiKTt7Y29uc3QgZT1vKHQpO2UmJm4ucHVzaChlKX19fXJldHVybiBufWZ1bmN0aW9uIEtnKHQpe2NvbnN0IGU9dHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSk7bGV0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG89ZVt0XTtuLnB1c2gobz4wP2ByZW1vdmUobFZpZXdbJHtvfV0pYDpgcmVtb3ZlTmVzdGVkSUNVKCR7fm99KWApfXJldHVybiBufWNsYXNzIEpne2NvbnN0cnVjdG9yKHQpe3RoaXMuaT0wLHRoaXMuY29kZXM9dH1oYXNNb3JlKCl7cmV0dXJuIHRoaXMuaTx0aGlzLmNvZGVzLmxlbmd0aH1jb25zdW1lTnVtYmVyKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIHBuKHQsImV4cGVjdGluZyBudW1iZXIgaW4gT3BDb2RlIiksdH1jb25zdW1lU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIHVuKHQsImV4cGVjdGluZyBzdHJpbmcgaW4gT3BDb2RlIiksdH1jb25zdW1lRnVuY3Rpb24oKXtsZXQgdD10aGlzLmNvZGVzW3RoaXMuaSsrXTtpZihudWxsPT09dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJleHBlY3RpbmcgZnVuY3Rpb24gaW4gT3BDb2RlIil9Y29uc3VtZU51bWJlck9yU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHxwbih0LCJleHBlY3RpbmcgbnVtYmVyIG9yIHN0cmluZyBpbiBPcENvZGUiKSx0fWNvbnN1bWVOdW1iZXJTdHJpbmdPck1hcmtlcigpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0fHx0PT12Z3x8dD09TWd8fHBuKHQsImV4cGVjdGluZyBudW1iZXIsIHN0cmluZywgSUNVX01BUktFUiBvciBFTEVNRU5UX01BUktFUiBpbiBPcENvZGUiKSx0fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgUWc9L++/vShcZCspOj9cZCrvv70vZ2ksJGc9Lyh7XHMq77+9XGQrOj9cZCrvv71ccyosXHMqXFN7Nn1ccyosW1xzXFNdKn0pL2dpLHRoPS/vv70oXGQrKe+/vS8sZWg9L15ccyoo77+9XGQrOj9cZCrvv70pXHMqLFxzKihzZWxlY3R8cGx1cmFsKVxzKiwvLG5oPS/vv71cLz9cKihcZCs6XGQrKe+/vS9naSxvaD0v77+9KFwvP1sjKl1cZCspOj9cZCrvv70vZ2ksaWg9L1x1RTUwMC9nO2Z1bmN0aW9uIGFoKHQsZSxuLG8saSxhKXtjb25zdCByPVNpKCkscz1bXSxsPVtdLGM9W1tdXTtuZ0Rldk1vZGUmJihCYyhzLHFnKSxCYyhsLFpnKSk7Y29uc3QgZD0oZnVuY3Rpb24gbSh0KXtyZXR1cm4gdC5yZXBsYWNlKGloLCIgIil9KShpPShmdW5jdGlvbiBwKHQsZSl7aWYoKGZ1bmN0aW9uIG4odCl7cmV0dXJuLTE9PT10fSkoZSkpcmV0dXJuIHBoKHQpO3tjb25zdCBuPXQuaW5kZXhPZihgOiR7ZX3vv71gKSsyK2UudG9TdHJpbmcoKS5sZW5ndGgsbz10LnNlYXJjaChuZXcgUmVnRXhwKGDvv71cXC9cXCpcXGQrOiR7ZX3vv71gKSk7cmV0dXJuIHBoKHQuc3Vic3RyaW5nKG4sbykpfX0pKGksYSkpLnNwbGl0KG9oKTtmb3IobGV0IGE9MDthPGQubGVuZ3RoO2ErKyl7bGV0IHA9ZFthXTtpZigwPT0oMSZhKSl7Y29uc3QgYT1maChwKTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IHA9YVtkXTtpZigwPT0oMSZkKSl7Y29uc3QgZT1wO25nRGV2TW9kZSYmdW4oZSwiUGFyc2VkIElDVSBwYXJ0IHNob3VsZCBiZSBzdHJpbmciKSwiIiE9PWUmJnNoKHQscixjWzBdLHMsbCxuLGUpfWVsc2V7Y29uc3QgYT1wO2lmKCJvYmplY3QiIT10eXBlb2YgYSl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBJQ1UgZXhwcmVzc2lvbiBpbiAiJHtpfSIgbWVzc2FnZS5gKTtjb25zdCBkPXJoKHQscixjWzBdLG4scyxuZ0Rldk1vZGU/YElDVSAke299OiR7YS5tYWluQmluZGluZ31gOiIiLCEwKS5pbmRleDtuZ0Rldk1vZGUmJnZuKGQsdm8sIkluZGV4IG11c3QgYmUgaW4gYWJzb2x1dGUgTFZpZXcgb2Zmc2V0IiksbWgodCxuLGwsZSxhLGQpfX19ZWxzZXtjb25zdCBlPTQ3PT09cC5jaGFyQ29kZUF0KDApLG49cC5jaGFyQ29kZUF0KGU/MTowKTtuZ0Rldk1vZGUmJmtuKG4sNDIsMzUpO2NvbnN0IG89dm8rTnVtYmVyLnBhcnNlSW50KHAuc3Vic3RyaW5nKGU/MjoxKSk7aWYoZSljLnNoaWZ0KCksRGkoU2koKSwhMSk7ZWxzZXtjb25zdCBlPU5nKHQsY1swXSxvKTtjLnVuc2hpZnQoW10pLERpKGUsITApfX19dC5kYXRhW29dPXtjcmVhdGU6cyx1cGRhdGU6bH19ZnVuY3Rpb24gcmgodCxlLG4sbyxpLGEscil7Y29uc3Qgcz1NZCh0LG8sMSxudWxsKTtsZXQgbD1zPDx4Zy5TSElGVCxjPVNpKCk7ZT09PWMmJihjPW51bGwpLG51bGw9PT1jJiYobHw9eGcuQVBQRU5EX0VBR0VSTFkpLHImJihsfD14Zy5DT01NRU5ULChmdW5jdGlvbiBkKHQpe3ZvaWQgMD09PUFsJiYoQWw9dCgpKX0pKFlnKSksaS5wdXNoKGwsbnVsbD09PWE/IiI6YSk7Y29uc3QgcD1DZCh0LHMscj8zMjoxLG51bGw9PT1hP25nRGV2TW9kZT8ie3s/fX0iOiIiOmEsbnVsbCk7U2cobixwKTtjb25zdCBtPXAuaW5kZXg7cmV0dXJuIERpKHAsITEpLG51bGwhPT1jJiZlIT09YyYmKGZ1bmN0aW9uIHUodCxlKXtuZ0Rldk1vZGUmJlRvKHQpO2xldCBuPXQuaW5zZXJ0QmVmb3JlSW5kZXg7bnVsbD09PW4/KGFjKHdnLGtnKSxuPXQuaW5zZXJ0QmVmb3JlSW5kZXg9W251bGwsZV0pOihnbihBcnJheS5pc0FycmF5KG4pLCEwLCJFeHBlY3RpbmcgYXJyYXkgaGVyZSIpLG4ucHVzaChlKSl9KShjLG0pLHB9ZnVuY3Rpb24gc2godCxlLG4sbyxpLGEscil7Y29uc3Qgcz1yLm1hdGNoKFFnKSxsPXJoKHQsZSxuLGEsbyxzP251bGw6ciwhMSk7cyYmbGgoaSxyLGwuaW5kZXgsbnVsbCwwLG51bGwpfWZ1bmN0aW9uIGxoKHQsZSxuLG8saSxhKXtuZ0Rldk1vZGUmJnZuKG4sdm8sIkluZGV4IG11c3QgYmUgaW4gYWJzb2x1dGUgTFZpZXcgb2Zmc2V0Iik7Y29uc3Qgcj10Lmxlbmd0aCxzPXIrMTt0LnB1c2gobnVsbCxudWxsKTtjb25zdCBsPXIrMjtuZ0Rldk1vZGUmJkJjKHQsWmcpO2NvbnN0IGM9ZS5zcGxpdChRZyk7bGV0IGQ9MDtmb3IobGV0IGU9MDtlPGMubGVuZ3RoO2UrKyl7Y29uc3Qgbj1jW2VdO2lmKDEmZSl7Y29uc3QgZT1pK3BhcnNlSW50KG4sMTApO3QucHVzaCgtMS1lKSxkfD1kaChlKX1lbHNlIiIhPT1uJiZ0LnB1c2gobil9cmV0dXJuIHQucHVzaChuPDwyfChvPzE6MCkpLG8mJnQucHVzaChvLGEpLHRbcl09ZCx0W3NdPXQubGVuZ3RoLWwsZH1mdW5jdGlvbiBjaCh0KXtsZXQgZT0wO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBvPXRbbl07Im51bWJlciI9PXR5cGVvZiBvJiZvPDAmJmUrK31yZXR1cm4gZX1mdW5jdGlvbiBkaCh0KXtyZXR1cm4gMTw8TWF0aC5taW4odCwzMSl9ZnVuY3Rpb24gcGgodCl7bGV0IGUsbixvPSIiLGk9MCxhPSExO2Zvcig7bnVsbCE9PShlPW5oLmV4ZWModCkpOylhP2VbMF09PT1g77+9Lyoke25977+9YCYmKGk9ZS5pbmRleCxhPSExKToobys9dC5zdWJzdHJpbmcoaSxlLmluZGV4K2VbMF0ubGVuZ3RoKSxuPWVbMV0sYT0hMCk7cmV0dXJuIG5nRGV2TW9kZSYmZ24oYSwhMSxgVGFnIG1pc21hdGNoOiB1bmFibGUgdG8gZmluZCB0aGUgZW5kIG9mIHRoZSBzdWItdGVtcGxhdGUgaW4gdGhlIHRyYW5zbGF0aW9uICIke3R9ImApLG8rPXQuc3Vic3RyKGkpLG99ZnVuY3Rpb24gbWgodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmeG4oaSwiSUNVIGV4cHJlc3Npb24gbXVzdCBiZSBkZWZpbmVkIik7bGV0IHI9MDtjb25zdCBzPXt0eXBlOmkudHlwZSxjdXJyZW50Q2FzZUxWaWV3SW5kZXg6TWQodCxlLDEsbnVsbCksYW5jaG9ySWR4OmEsY2FzZXM6W10sY3JlYXRlOltdLHJlbW92ZTpbXSx1cGRhdGU6W119OyEoZnVuY3Rpb24gbCh0LGUsbil7dC5wdXNoKGRoKGUubWFpbkJpbmRpbmcpLDIsLTEtZS5tYWluQmluZGluZyxuPDwyfDIpfSkobixpLGEpLChmdW5jdGlvbiBjKHQsZSxuKXtjb25zdCBvPXQuZGF0YVtlXTtuZ0Rldk1vZGUmJmduKG51bGw9PT1vfHxvLmhhc093blByb3BlcnR5KCJ0Vmlld3MiKSwhMCwiV2UgZXhwZWN0IHRvIGdldCAnbnVsbCd8J1RJY3VDb250YWluZXInIiksbnVsbD09PW8/dC5kYXRhW2VdPW46KG5nRGV2TW9kZSYmZ2EobywzMiksby52YWx1ZT1uKX0pKHQsYSxzKTtjb25zdCBkPWkudmFsdWVzO2ZvcihsZXQgYT0wO2E8ZC5sZW5ndGg7YSsrKXtjb25zdCBsPWRbYV0sYz1bXTtmb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrKyl7Y29uc3QgZT1sW3RdO2lmKCJzdHJpbmciIT10eXBlb2YgZSl7Y29uc3Qgbj1jLnB1c2goZSktMTtsW3RdPWBceDNjIS0t77+9JHtufe+/vS0tXHgzZWB9fXI9Z2godCxzLGUsbixvLGkuY2FzZXNbYV0sbC5qb2luKCIiKSxjKXxyfXImJihmdW5jdGlvbiBwKHQsZSxuKXt0LnB1c2goZSwxLG48PDJ8Myl9KShuLHIsYSl9ZnVuY3Rpb24gdWgodCl7Y29uc3QgZT1bXSxuPVtdO2xldCBvPTEsaT0wO2NvbnN0IGE9ZmgodD10LnJlcGxhY2UoZWgsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbz0ic2VsZWN0Ij09PW4/MDoxLGk9cGFyc2VJbnQoZS5zdWJzdHIoMSksMTApLCIifSkpKTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoOyl7bGV0IGk9YVt0KytdLnRyaW0oKTsxPT09byYmKGk9aS5yZXBsYWNlKC9ccyooPzo9KT8oXHcrKVxzKi8sIiQxIikpLGkubGVuZ3RoJiZlLnB1c2goaSk7Y29uc3Qgcj1maChhW3QrK10pO2UubGVuZ3RoPm4ubGVuZ3RoJiZuLnB1c2gocil9cmV0dXJue3R5cGU6byxtYWluQmluZGluZzppLGNhc2VzOmUsdmFsdWVzOm59fWZ1bmN0aW9uIGZoKHQpe2lmKCF0KXJldHVybltdO2xldCBlPTA7Y29uc3Qgbj1bXSxvPVtdLGk9L1t7fV0vZztsZXQgYTtmb3IoaS5sYXN0SW5kZXg9MDthPWkuZXhlYyh0KTspe2NvbnN0IGk9YS5pbmRleDtpZigifSI9PWFbMF0pe2lmKG4ucG9wKCksMD09bi5sZW5ndGgpe2NvbnN0IG49dC5zdWJzdHJpbmcoZSxpKTtlaC50ZXN0KG4pP28ucHVzaCh1aChuKSk6by5wdXNoKG4pLGU9aSsxfX1lbHNle2lmKDA9PW4ubGVuZ3RoKXtjb25zdCBuPXQuc3Vic3RyaW5nKGUsaSk7by5wdXNoKG4pLGU9aSsxfW4ucHVzaCgieyIpfX1jb25zdCByPXQuc3Vic3RyaW5nKGUpO3JldHVybiBvLnB1c2gociksb31mdW5jdGlvbiBnaCh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9W10sYz1bXSxkPVtdO25nRGV2TW9kZSYmKEJjKGwsWGcpLEJjKGMsS2cpLEJjKGQsWmcpKSxlLmNhc2VzLnB1c2goYSksZS5jcmVhdGUucHVzaChsKSxlLnJlbW92ZS5wdXNoKGMpLGUudXBkYXRlLnB1c2goZCk7Y29uc3QgcD1icyhpaSgpKS5nZXRJbmVydEJvZHlFbGVtZW50KHIpO25nRGV2TW9kZSYmeG4ocCwiVW5hYmxlIHRvIGdlbmVyYXRlIGluZXJ0IGJvZHkgZWxlbWVudCIpO2NvbnN0IG09R3MocCl8fHA7cmV0dXJuIG0/aGgodCxlLG4sbyxsLGMsZCxtLGkscywwKTowfWZ1bmN0aW9uIGhoKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7bGV0IHA9MCxtPXMuZmlyc3RDaGlsZDtmb3IoO207KXtjb25zdCBzPU1kKHQsbiwxLG51bGwpO3N3aXRjaChtLm5vZGVUeXBlKXtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmNvbnN0IHU9bSxmPXUudGFnTmFtZS50b0xvd2VyQ2FzZSgpO2lmKEFzLmhhc093blByb3BlcnR5KGYpKXtfaChpLE1nLGYsbCxzKSx0LmRhdGFbc109Zjtjb25zdCBnPXUuYXR0cmlidXRlcztmb3IobGV0IHQ9MDt0PGcubGVuZ3RoO3QrKyl7Y29uc3QgZT1nLml0ZW0odCksbj1lLm5hbWUudG9Mb3dlckNhc2UoKTshIWUudmFsdWUubWF0Y2goUWcpP0hzLmhhc093blByb3BlcnR5KG4pP2xoKHIsZS52YWx1ZSxzLGUubmFtZSwwLFRzW25dP3ZzOk5zW25dP3hzOm51bGwpOm5nRGV2TW9kZSYmY29uc29sZS53YXJuKGBXQVJOSU5HOiBpZ25vcmluZyB1bnNhZmUgYXR0cmlidXRlIHZhbHVlICR7bn0gb24gZWxlbWVudCAke2Z9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKTpDaChpLHMsZSl9cD1oaCh0LGUsbixvLGksYSxyLG0scyxjLGQrMSl8cCxiaChhLHMsZCl9YnJlYWs7Y2FzZSBOb2RlLlRFWFRfTk9ERTpjb25zdCBnPW0udGV4dENvbnRlbnR8fCIiLGg9Zy5tYXRjaChRZyk7X2goaSxudWxsLGg/IiI6ZyxsLHMpLGJoKGEscyxkKSxoJiYocD1saChyLGcscyxudWxsLDAsbnVsbCl8cCk7YnJlYWs7Y2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpjb25zdCBiPXRoLmV4ZWMobS50ZXh0Q29udGVudHx8IiIpO2lmKGIpe2NvbnN0IGU9cGFyc2VJbnQoYlsxXSwxMCkscj1jW2VdO19oKGksdmcsbmdEZXZNb2RlP2BuZXN0ZWQgSUNVICR7ZX1gOiIiLGwscyksbWgodCxuLG8sbCxyLHMpLHloKGEscyxkKX19bT1tLm5leHRTaWJsaW5nfXJldHVybiBwfWZ1bmN0aW9uIGJoKHQsZSxuKXswPT09biYmdC5wdXNoKGUpfWZ1bmN0aW9uIHloKHQsZSxuKXswPT09biYmKHQucHVzaCh+ZSksdC5wdXNoKGUpKX1mdW5jdGlvbiBfaCh0LGUsbixvLGkpe251bGwhPT1lJiZ0LnB1c2goZSksdC5wdXNoKG4saSwoZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIG5nRGV2TW9kZSYmdm4oZSwwLCJNaXNzaW5nIHBhcmVudCBpbmRleCIpLG5nRGV2TW9kZSYmTW4obiwwLCJNaXNzaW5nIHJlZiBpbmRleCIpLHR8ZTw8MTd8bjw8MX0pKDAsbyxpKSl9ZnVuY3Rpb24gQ2godCxlLG4pe3QucHVzaChlPDwxfDEsbi5uYW1lLG4udmFsdWUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBNaD0vXFso77+9Lis/77+9PylcXS8sdmg9L1xbKO+/vS4rP++/vT8pXF18KO+/vVwvP1wqXGQrOlxkK++/vSkvZyx4aD0vKHtccyopKFZBUl8oUExVUkFMfFNFTEVDVCkoX1xkKyk/KShccyosKS9nLE9oPS97KFtBLVowLTlfXSspfS9nLFBoPS/vv71JMThOX0VYUF8oSUNVKF9cZCspPynvv70vZyx3aD0vXC9cKi8sa2g9L1xkK1w6KFxkKykvOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gU2godCxlLG49LTEpe2NvbnN0IG89T2koKSxpPXhpKCksYT12byt0O25nRGV2TW9kZSYmeG4obywidFZpZXcgc2hvdWxkIGJlIGRlZmluZWQiKTtjb25zdCByPWhpKG8uY29uc3RzLGUpLHM9U2koKTtvLmZpcnN0Q3JlYXRlUGFzcyYmYWgobyxudWxsPT09cz8wOnMuaW5kZXgsaSxhLHIsbik7Y29uc3QgbD1vLmRhdGFbYV0sYz1LbChvLHM9PT1pWzZdP251bGw6cyxpKTshKGZ1bmN0aW9uIGQodCxlLG4sbyl7Y29uc3QgaT10WzExXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7Y29uc3Qgcj1lW2ErK10scz1lW2FdLGw9KHImeGcuQ09NTUVOVCk9PT14Zy5DT01NRU5ULGM9KHImeGcuQVBQRU5EX0VBR0VSTFkpPT09eGcuQVBQRU5EX0VBR0VSTFksZD1yPj4+eGcuU0hJRlQ7bGV0IHA9dFtkXTtudWxsPT09cCYmKHA9dFtkXT1sP2kuY3JlYXRlQ29tbWVudChzKTpCbChpLHMpKSxjJiZudWxsIT09biYmSmwoaSxuLHAsbywhMSl9fSkoaSxsLmNyZWF0ZSxjLHMmJjgmcy50eXBlP2lbcy5pbmRleF06bnVsbCksTGkoITApfWZ1bmN0aW9uIERoKCl7TGkoITEpfWZ1bmN0aW9uIFJoKHQsZSxuKXtTaCh0LGUsbiksRGgoKX1mdW5jdGlvbiBFaCh0LGUpe2NvbnN0IG49T2koKTtuZ0Rldk1vZGUmJnhuKG4sInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3Qgbz1oaShuLmNvbnN0cyxlKTshKGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89d2koKS5pbmRleCxpPVtdO2lmKG5nRGV2TW9kZSYmQmMoaSxaZyksdC5maXJzdENyZWF0ZVBhc3MmJm51bGw9PT10LmRhdGFbZV0pe2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCs9Mil7Y29uc3QgZT1uW3RdLGE9blt0KzFdO2lmKCIiIT09YSl7aWYoJGcudGVzdChhKSl0aHJvdyBuZXcgRXJyb3IoYElDVSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiBhdHRyaWJ1dGVzLiBNZXNzYWdlOiAiJHthfSIuYCk7bGgoaSxhLG8sZSxjaChpKSxudWxsKX19dC5kYXRhW2VdPWl9fSkobix0K3ZvLG8pfWZ1bmN0aW9uIEFoKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3QmJihMZ3w9MTw8TWF0aC5taW4oQmcsMzEpKSxCZysrfSkoZm0oeGkoKSxIaSgpLHQpKSxBaH1mdW5jdGlvbiBUaCh0KXshKGZ1bmN0aW9uIGUodCxuLG8pe2lmKEJnPjApe25nRGV2TW9kZSYmeG4odCwidFZpZXcgc2hvdWxkIGJlIGRlZmluZWQiKTtjb25zdCBlPXQuZGF0YVtvXTtVZyh0LG4sQXJyYXkuaXNBcnJheShlKT9lOmUudXBkYXRlLHppKCktQmctMSxMZyl9TGc9MCxCZz0wfSkoT2koKSx4aSgpLHQrdm8pfWZ1bmN0aW9uIE5oKHQsZT17fSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlPXt9KXtsZXQgbj10O2lmKE1oLnRlc3QodCkpe2NvbnN0IHQ9e30sZT1bMF07bj1uLnJlcGxhY2UodmgsKChuLG8saSk9Pntjb25zdCBhPW98fGkscj10W2FdfHxbXTtpZihyLmxlbmd0aHx8KGEuc3BsaXQoInwiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10Lm1hdGNoKGtoKSxuPWU/cGFyc2VJbnQoZVsxXSwxMCk6MCxvPXdoLnRlc3QodCk7ci5wdXNoKFtuLG8sdF0pfSkpLHRbYV09ciksIXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgaTE4biBwb3N0cHJvY2VzczogdW5tYXRjaGVkIHBsYWNlaG9sZGVyIC0gJHthfWApO2NvbnN0IHM9ZVtlLmxlbmd0aC0xXTtsZXQgbD0wO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWlmKHJbdF1bMF09PT1zKXtsPXQ7YnJlYWt9Y29uc3RbYyxkLHBdPXJbbF07cmV0dXJuIGQ/ZS5wb3AoKTpzIT09YyYmZS5wdXNoKGMpLHIuc3BsaWNlKGwsMSkscH0pKX1yZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPyhuPW4ucmVwbGFjZSh4aCwoKHQsbixvLGksYSxyKT0+ZS5oYXNPd25Qcm9wZXJ0eShvKT9gJHtufSR7ZVtvXX0ke3J9YDp0KSksbj1uLnJlcGxhY2UoT2gsKCh0LG4pPT5lLmhhc093blByb3BlcnR5KG4pP2Vbbl06dCkpLG49bi5yZXBsYWNlKFBoLCgodCxuKT0+e2lmKGUuaGFzT3duUHJvcGVydHkobikpe2NvbnN0IG89ZVtuXTtpZighby5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBpMThuIHBvc3Rwcm9jZXNzOiB1bm1hdGNoZWQgSUNVIC0gJHt0fSB3aXRoIGtleTogJHtufWApO3JldHVybiBvLnNoaWZ0KCl9cmV0dXJuIHR9KSksbik6bn0pKHQsZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB6aCh0LGUsbixvLGkpe2lmKHQ9dG4odCksQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKyl6aCh0W2FdLGUsbixvLGkpO2Vsc2V7Y29uc3QgYT1PaSgpLHI9eGkoKTtsZXQgcz1FcCh0KT90OnRuKHQucHJvdmlkZSksbD1TcCh0KTtjb25zdCBjPXdpKCksZD0xMDQ4NTc1JmMucHJvdmlkZXJJbmRleGVzLHA9Yy5kaXJlY3RpdmVTdGFydCxtPWMucHJvdmlkZXJJbmRleGVzPj4yMDtpZihFcCh0KXx8IXQubXVsdGkpe2NvbnN0IG89bmV3IHVhKGwsaSxmdSksdT1GaChzLGUsaT9kOmQrbSxwKTstMT09PXU/KEVhKGthKGMsciksYSxzKSxJaChhLHQsZS5sZW5ndGgpLGUucHVzaChzKSxjLmRpcmVjdGl2ZVN0YXJ0KyssYy5kaXJlY3RpdmVFbmQrKyxpJiYoYy5wcm92aWRlckluZGV4ZXMrPTEwNDg1NzYpLG4ucHVzaChvKSxyLnB1c2gobykpOihuW3VdPW8sclt1XT1vKX1lbHNle2NvbnN0IHU9RmgocyxlLGQrbSxwKSxmPUZoKHMsZSxkLGQrbSksZz11Pj0wJiZuW3VdLGg9Zj49MCYmbltmXTtpZihpJiYhaHx8IWkmJiFnKXtFYShrYShjLHIpLGEscyk7Y29uc3QgZD0oZnVuY3Rpb24gYSh0LGUsbixvLGkpe2NvbnN0IGE9bmV3IHVhKHQsbixmdSk7cmV0dXJuIGEubXVsdGk9W10sYS5pbmRleD1lLGEuY29tcG9uZW50UHJvdmlkZXJzPTAsSGgoYSxpLG8mJiFuKSxhfSkoaT9CaDpMaCxuLmxlbmd0aCxpLG8sbCk7IWkmJmgmJihuW2ZdLnByb3ZpZGVyRmFjdG9yeT1kKSxJaChhLHQsZS5sZW5ndGgsMCksZS5wdXNoKHMpLGMuZGlyZWN0aXZlU3RhcnQrKyxjLmRpcmVjdGl2ZUVuZCsrLGkmJihjLnByb3ZpZGVySW5kZXhlcys9MTA0ODU3Niksbi5wdXNoKGQpLHIucHVzaChkKX1lbHNle0loKGEsdCx1Pi0xP3U6ZixIaChuW2k/Zjp1XSxsLCFpJiZvKSl9IWkmJm8mJmgmJm5bZl0uY29tcG9uZW50UHJvdmlkZXJzKyt9fX1mdW5jdGlvbiBJaCh0LGUsbixvKXtjb25zdCBpPUVwKGUpO2lmKGl8fChmdW5jdGlvbiBhKHQpe3JldHVybiEhdC51c2VDbGFzc30pKGUpKXtjb25zdCBhPShlLnVzZUNsYXNzfHxlKS5wcm90b3R5cGUubmdPbkRlc3Ryb3k7aWYoYSl7Y29uc3Qgcj10LmRlc3Ryb3lIb29rc3x8KHQuZGVzdHJveUhvb2tzPVtdKTtpZighaSYmZS5tdWx0aSl7bmdEZXZNb2RlJiZ4bihvLCJpbmRleEluRmFjdG9yeSB3aGVuIHJlZ2lzdGVyaW5nIG11bHRpIGZhY3RvcnkgZGVzdHJveSBob29rIik7Y29uc3QgdD1yLmluZGV4T2Yobik7LTE9PT10P3IucHVzaChuLFtvLGFdKTpyW3QrMV0ucHVzaChvLGEpfWVsc2Ugci5wdXNoKG4sYSl9fX1mdW5jdGlvbiBIaCh0LGUsbil7cmV0dXJuIG4mJnQuY29tcG9uZW50UHJvdmlkZXJzKyssdC5tdWx0aS5wdXNoKGUpLTF9ZnVuY3Rpb24gRmgodCxlLG4sbyl7Zm9yKGxldCBpPW47aTxvO2krKylpZihlW2ldPT09dClyZXR1cm4gaTtyZXR1cm4tMX1mdW5jdGlvbiBMaCh0LGUsbixvKXtyZXR1cm4gVmgodGhpcy5tdWx0aSxbXSl9ZnVuY3Rpb24gQmgodCxlLG4sbyl7Y29uc3QgaT10aGlzLm11bHRpO2xldCBhO2lmKHRoaXMucHJvdmlkZXJGYWN0b3J5KXtjb25zdCB0PXRoaXMucHJvdmlkZXJGYWN0b3J5LmNvbXBvbmVudFByb3ZpZGVycyxlPUxhKG4sblsxXSx0aGlzLnByb3ZpZGVyRmFjdG9yeS5pbmRleCxvKTthPWUuc2xpY2UoMCx0KSxWaChpLGEpO2ZvcihsZXQgbj10O248ZS5sZW5ndGg7bisrKWEucHVzaChlW25dKX1lbHNlIGE9W10sVmgoaSxhKTtyZXR1cm4gYX1mdW5jdGlvbiBWaCh0LGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtlLnB1c2goKDAsdFtuXSkoKSl9cmV0dXJuIGV9ZnVuY3Rpb24gVWgodCxlPVtdKXtyZXR1cm4gbj0+e24ucHJvdmlkZXJzUmVzb2x2ZXI9KG4sbyk9PihmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPU9pKCk7aWYoby5maXJzdENyZWF0ZVBhc3Mpe2NvbnN0IGk9Um8odCk7emgobixvLmRhdGEsby5ibHVlcHJpbnQsaSwhMCksemgoZSxvLmRhdGEsby5ibHVlcHJpbnQsaSwhMSl9fSkobixvP28odCk6dCxlKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGpoe30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgV2g9Im5nQ29tcG9uZW50IjtjbGFzcyBHaHt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBZaCguLi50KXt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHFoKHQsZSl7cmV0dXJuIG5ldyBLaChkaSh0LGUpKX1HaC5OVUxMPW5ldyBjbGFzc3tyZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KXt0aHJvdyhmdW5jdGlvbiBlKHQpe2NvbnN0IGU9RXJyb3IoYE5vIGNvbXBvbmVudCBmYWN0b3J5IGZvdW5kIGZvciAke0tlKHQpfS4gRGlkIHlvdSBhZGQgaXQgdG8gQE5nTW9kdWxlLmVudHJ5Q29tcG9uZW50cz9gKTtyZXR1cm4gZVtXaF09dCxlfSkodCl9fTtjb25zdCBaaD1mdW5jdGlvbiBYaCgpe3JldHVybiBxaCh3aSgpLHhpKCkpfTtjbGFzcyBLaHtjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hdGl2ZUVsZW1lbnQ9dH19ZnVuY3Rpb24gSmgodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBLaD90Lm5hdGl2ZUVsZW1lbnQ6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovS2guX19OR19FTEVNRU5UX0lEX189WmgsbmV3IGVyKCJSZW5kZXJlcjJJbnRlcmNlcHRvciIpO2NsYXNzIFFoe31jbGFzcyAkaHt9JGguX19OR19FTEVNRU5UX0lEX189KCk9PnRiKCk7Y29uc3QgdGI9ZnVuY3Rpb24gZWIoKXtjb25zdCB0PXhpKCksZT11aSh3aSgpLmluZGV4LHQpO3JldHVybihmdW5jdGlvbiBuKHQpe2NvbnN0IGU9dFsxMV07aWYobmdEZXZNb2RlJiYhcmkoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW5qZWN0IFJlbmRlcmVyMiB3aGVuIHRoZSBhcHBsaWNhdGlvbiB1c2VzIFJlbmRlcmVyMyEiKTtyZXR1cm4gZX0pKFBvKGUpP2U6dCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyBuYnt9bmIuybVwcm92PVNuKHt0b2tlbjpuYixwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5udWxsfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBvYntjb25zdHJ1Y3Rvcih0KXt0aGlzLmZ1bGw9dCx0aGlzLm1ham9yPXQuc3BsaXQoIi4iKVswXSx0aGlzLm1pbm9yPXQuc3BsaXQoIi4iKVsxXSx0aGlzLnBhdGNoPXQuc3BsaXQoIi4iKS5zbGljZSgyKS5qb2luKCIuIil9fWNvbnN0IGliPW5ldyBvYigiMTIuMi4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGFie2NvbnN0cnVjdG9yKCl7fXN1cHBvcnRzKHQpe3JldHVybiBkbSh0KX1jcmVhdGUodCl7cmV0dXJuIG5ldyBzYih0KX19Y29uc3QgcmI9KHQsZSk9PmU7Y2xhc3Mgc2J7Y29uc3RydWN0b3IodCl7dGhpcy5sZW5ndGg9MCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fdW5saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fcHJldmlvdXNJdEhlYWQ9bnVsbCx0aGlzLl9pdEhlYWQ9bnVsbCx0aGlzLl9pdFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGwsdGhpcy5fdHJhY2tCeUZuPXR8fHJifWZvckVhY2hJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX2l0SGVhZDtudWxsIT09ZTtlPWUuX25leHQpdChlKX1mb3JFYWNoT3BlcmF0aW9uKHQpe2xldCBlPXRoaXMuX2l0SGVhZCxuPXRoaXMuX3JlbW92YWxzSGVhZCxvPTAsaT1udWxsO2Zvcig7ZXx8bjspe2NvbnN0IGE9IW58fGUmJmUuY3VycmVudEluZGV4PHBiKG4sbyxpKT9lOm4scj1wYihhLG8saSkscz1hLmN1cnJlbnRJbmRleDtpZihhPT09bilvLS0sbj1uLl9uZXh0UmVtb3ZlZDtlbHNlIGlmKGU9ZS5fbmV4dCxudWxsPT1hLnByZXZpb3VzSW5kZXgpbysrO2Vsc2V7aXx8KGk9W10pO2NvbnN0IHQ9ci1vLGU9cy1vO2lmKHQhPWUpe2ZvcihsZXQgbj0wO248dDtuKyspe2NvbnN0IG89bjxpLmxlbmd0aD9pW25dOmlbbl09MCxhPW8rbjtlPD1hJiZhPHQmJihpW25dPW8rMSl9aVthLnByZXZpb3VzSW5kZXhdPWUtdH19ciE9PXMmJnQoYSxyLHMpfX1mb3JFYWNoUHJldmlvdXNJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3ByZXZpb3VzSXRIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFByZXZpb3VzKXQoZSl9Zm9yRWFjaEFkZGVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9Zm9yRWFjaE1vdmVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0TW92ZWQpdChlKX1mb3JFYWNoUmVtb3ZlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChlKX1mb3JFYWNoSWRlbnRpdHlDaGFuZ2UodCl7bGV0IGU7Zm9yKGU9dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRJZGVudGl0eUNoYW5nZSl0KGUpfWRpZmYodCl7aWYobnVsbD09dCYmKHQ9W10pLCFkbSh0KSl0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHRyeWluZyB0byBkaWZmICcke0tlKHQpfScuIE9ubHkgYXJyYXlzIGFuZCBpdGVyYWJsZXMgYXJlIGFsbG93ZWRgKTtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9b25EZXN0cm95KCl7fWNoZWNrKHQpe3RoaXMuX3Jlc2V0KCk7bGV0IGUsbixvLGk9dGhpcy5faXRIZWFkLGE9ITE7aWYoQXJyYXkuaXNBcnJheSh0KSl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7Zm9yKGxldCBlPTA7ZTx0aGlzLmxlbmd0aDtlKyspbj10W2VdLG89dGhpcy5fdHJhY2tCeUZuKGUsbiksbnVsbCE9PWkmJk9iamVjdC5pcyhpLnRyYWNrQnlJZCxvKT8oYSYmKGk9dGhpcy5fdmVyaWZ5UmVpbnNlcnRpb24oaSxuLG8sZSkpLE9iamVjdC5pcyhpLml0ZW0sbil8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKGksbikpOihpPXRoaXMuX21pc21hdGNoKGksbixvLGUpLGE9ITApLGk9aS5fbmV4dH1lbHNlIGU9MCwoZnVuY3Rpb24gcih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZSh0W25dKTtlbHNle2NvbnN0IG49dFtzbSgpXSgpO2xldCBvO2Zvcig7IShvPW4ubmV4dCgpKS5kb25lOyllKG8udmFsdWUpfX0pKHQsKHQ9PntvPXRoaXMuX3RyYWNrQnlGbihlLHQpLG51bGwhPT1pJiZPYmplY3QuaXMoaS50cmFja0J5SWQsbyk/KGEmJihpPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGksdCxvLGUpKSxPYmplY3QuaXMoaS5pdGVtLHQpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShpLHQpKTooaT10aGlzLl9taXNtYXRjaChpLHQsbyxlKSxhPSEwKSxpPWkuX25leHQsZSsrfSkpLHRoaXMubGVuZ3RoPWU7cmV0dXJuIHRoaXMuX3RydW5jYXRlKGkpLHRoaXMuY29sbGVjdGlvbj10LHRoaXMuaXNEaXJ0eX1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX21vdmVzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZHx8bnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWR9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgdDtmb3IodD10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0O2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0PXRoaXMuX21vdmVzSGVhZDtudWxsIT09dDt0PXQuX25leHRNb3ZlZCl0LnByZXZpb3VzSW5kZXg9dC5jdXJyZW50SW5kZXg7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19X21pc21hdGNoKHQsZSxuLG8pe2xldCBpO3JldHVybiBudWxsPT09dD9pPXRoaXMuX2l0VGFpbDooaT10Ll9wcmV2LHRoaXMuX3JlbW92ZSh0KSksbnVsbCE9PSh0PW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCkpPyhPYmplY3QuaXModC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIodCxpLG8pKTpudWxsIT09KHQ9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChuLG8pKT8oT2JqZWN0LmlzKHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9tb3ZlQWZ0ZXIodCxpLG8pKTp0PXRoaXMuX2FkZEFmdGVyKG5ldyBsYihlLG4pLGksbyksdH1fdmVyaWZ5UmVpbnNlcnRpb24odCxlLG4sbyl7bGV0IGk9bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQobixudWxsKTtyZXR1cm4gbnVsbCE9PWk/dD10aGlzLl9yZWluc2VydEFmdGVyKGksdC5fcHJldixvKTp0LmN1cnJlbnRJbmRleCE9byYmKHQuY3VycmVudEluZGV4PW8sdGhpcy5fYWRkVG9Nb3Zlcyh0LG8pKSx0fV90cnVuY2F0ZSh0KXtmb3IoO251bGwhPT10Oyl7Y29uc3QgZT10Ll9uZXh0O3RoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKSx0PWV9bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLmNsZWFyKCksbnVsbCE9PXRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksbnVsbCE9PXRoaXMuX21vdmVzVGFpbCYmKHRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pdFRhaWwmJih0aGlzLl9pdFRhaWwuX25leHQ9bnVsbCksbnVsbCE9PXRoaXMuX3JlbW92YWxzVGFpbCYmKHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwmJih0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbCl9X3JlaW5zZXJ0QWZ0ZXIodCxlLG4pe251bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7Y29uc3Qgbz10Ll9wcmV2UmVtb3ZlZCxpPXQuX25leHRSZW1vdmVkO3JldHVybiBudWxsPT09bz90aGlzLl9yZW1vdmFsc0hlYWQ9aTpvLl9uZXh0UmVtb3ZlZD1pLG51bGw9PT1pP3RoaXMuX3JlbW92YWxzVGFpbD1vOmkuX3ByZXZSZW1vdmVkPW8sdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fV9tb3ZlQWZ0ZXIodCxlLG4pe3JldHVybiB0aGlzLl91bmxpbmsodCksdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fV9hZGRBZnRlcih0LGUsbil7cmV0dXJuIHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGw9PT10aGlzLl9hZGRpdGlvbnNUYWlsP3RoaXMuX2FkZGl0aW9uc0hlYWQ9dDp0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9dCx0fV9pbnNlcnRBZnRlcih0LGUsbil7Y29uc3Qgbz1udWxsPT09ZT90aGlzLl9pdEhlYWQ6ZS5fbmV4dDtyZXR1cm4gdC5fbmV4dD1vLHQuX3ByZXY9ZSxudWxsPT09bz90aGlzLl9pdFRhaWw9dDpvLl9wcmV2PXQsbnVsbD09PWU/dGhpcy5faXRIZWFkPXQ6ZS5fbmV4dD10LG51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzJiYodGhpcy5fbGlua2VkUmVjb3Jkcz1uZXcgZGIpLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4PW4sdH1fcmVtb3ZlKHQpe3JldHVybiB0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayh0KSl9X3VubGluayh0KXtudWxsIT09dGhpcy5fbGlua2VkUmVjb3JkcyYmdGhpcy5fbGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7Y29uc3QgZT10Ll9wcmV2LG49dC5fbmV4dDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faXRIZWFkPW46ZS5fbmV4dD1uLG51bGw9PT1uP3RoaXMuX2l0VGFpbD1lOm4uX3ByZXY9ZSx0fV9hZGRUb01vdmVzKHQsZSl7cmV0dXJuIHQucHJldmlvdXNJbmRleD09PWV8fCh0aGlzLl9tb3Zlc1RhaWw9bnVsbD09PXRoaXMuX21vdmVzVGFpbD90aGlzLl9tb3Zlc0hlYWQ9dDp0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD10KSx0fV9hZGRUb1JlbW92YWxzKHQpe3JldHVybiBudWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiYodGhpcy5fdW5saW5rZWRSZWNvcmRzPW5ldyBkYiksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1udWxsLHQuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD10LHQuX3ByZXZSZW1vdmVkPW51bGwpOih0Ll9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9dCksdH1fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKXtyZXR1cm4gdC5pdGVtPWUsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsPT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD90aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXQ6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPXQsdH19Y2xhc3MgbGJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNrQnlJZD1lLHRoaXMuY3VycmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH19Y2xhc3MgY2J7Y29uc3RydWN0b3IoKXt0aGlzLl9oZWFkPW51bGwsdGhpcy5fdGFpbD1udWxsfWFkZCh0KXtudWxsPT09dGhpcy5faGVhZD8odGhpcy5faGVhZD10aGlzLl90YWlsPXQsdC5fbmV4dER1cD1udWxsLHQuX3ByZXZEdXA9bnVsbCk6KHRoaXMuX3RhaWwuX25leHREdXA9dCx0Ll9wcmV2RHVwPXRoaXMuX3RhaWwsdC5fbmV4dER1cD1udWxsLHRoaXMuX3RhaWw9dCl9Z2V0KHQsZSl7bGV0IG47Zm9yKG49dGhpcy5faGVhZDtudWxsIT09bjtuPW4uX25leHREdXApaWYoKG51bGw9PT1lfHxlPD1uLmN1cnJlbnRJbmRleCkmJk9iamVjdC5pcyhuLnRyYWNrQnlJZCx0KSlyZXR1cm4gbjtyZXR1cm4gbnVsbH1yZW1vdmUodCl7Y29uc3QgZT10Ll9wcmV2RHVwLG49dC5fbmV4dER1cDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faGVhZD1uOmUuX25leHREdXA9bixudWxsPT09bj90aGlzLl90YWlsPWU6bi5fcHJldkR1cD1lLG51bGw9PT10aGlzLl9oZWFkfX1jbGFzcyBkYntjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5ldyBNYXB9cHV0KHQpe2NvbnN0IGU9dC50cmFja0J5SWQ7bGV0IG49dGhpcy5tYXAuZ2V0KGUpO258fChuPW5ldyBjYix0aGlzLm1hcC5zZXQoZSxuKSksbi5hZGQodCl9Z2V0KHQsZSl7Y29uc3Qgbj10aGlzLm1hcC5nZXQodCk7cmV0dXJuIG4/bi5nZXQodCxlKTpudWxsfXJlbW92ZSh0KXtjb25zdCBlPXQudHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3ZlKHQpJiZ0aGlzLm1hcC5kZWxldGUoZSksdH1nZXQgaXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5tYXAuc2l6ZX1jbGVhcigpe3RoaXMubWFwLmNsZWFyKCl9fWZ1bmN0aW9uIHBiKHQsZSxuKXtjb25zdCBvPXQucHJldmlvdXNJbmRleDtpZihudWxsPT09bylyZXR1cm4gbztsZXQgaT0wO3JldHVybiBuJiZvPG4ubGVuZ3RoJiYoaT1uW29dKSxvK2UraX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbWJ7Y29uc3RydWN0b3IoKXt9c3VwcG9ydHModCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBNYXB8fHBtKHQpfWNyZWF0ZSgpe3JldHVybiBuZXcgdWJ9fWNsYXNzIHVie2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVjb3Jkcz1uZXcgTWFwLHRoaXMuX21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX3ByZXZpb3VzTWFwSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfWdldCBpc0RpcnR5KCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fY2hhbmdlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR9Zm9yRWFjaEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fbWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHQpdChlKX1mb3JFYWNoUHJldmlvdXNJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfWZvckVhY2hDaGFuZ2VkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRDaGFuZ2VkKXQoZSl9Zm9yRWFjaEFkZGVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9Zm9yRWFjaFJlbW92ZWRJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRSZW1vdmVkKXQoZSl9ZGlmZih0KXtpZih0KXtpZighKHQgaW5zdGFuY2VvZiBNYXB8fHBtKHQpKSl0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHRyeWluZyB0byBkaWZmICcke0tlKHQpfScuIE9ubHkgbWFwcyBhbmQgb2JqZWN0cyBhcmUgYWxsb3dlZGApfWVsc2UgdD1uZXcgTWFwO3JldHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6bnVsbH1vbkRlc3Ryb3koKXt9Y2hlY2sodCl7dGhpcy5fcmVzZXQoKTtsZXQgZT10aGlzLl9tYXBIZWFkO2lmKHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fZm9yRWFjaCh0LCgodCxuKT0+e2lmKGUmJmUua2V5PT09bil0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhlLHQpLHRoaXMuX2FwcGVuZEFmdGVyPWUsZT1lLl9uZXh0O2Vsc2V7Y29uc3Qgbz10aGlzLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleShuLHQpO2U9dGhpcy5faW5zZXJ0QmVmb3JlT3JBcHBlbmQoZSxvKX19KSksZSl7ZS5fcHJldiYmKGUuX3ByZXYuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPWU7Zm9yKGxldCB0PWU7bnVsbCE9PXQ7dD10Ll9uZXh0UmVtb3ZlZCl0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxldGUodC5rZXkpLHQuX25leHRSZW1vdmVkPXQuX25leHQsdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlLHQuY3VycmVudFZhbHVlPW51bGwsdC5fcHJldj1udWxsLHQuX25leHQ9bnVsbH1yZXR1cm4gdGhpcy5fY2hhbmdlc1RhaWwmJih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9bnVsbCksdGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSx0aGlzLmlzRGlydHl9X2luc2VydEJlZm9yZU9yQXBwZW5kKHQsZSl7aWYodCl7Y29uc3Qgbj10Ll9wcmV2O3JldHVybiBlLl9uZXh0PXQsZS5fcHJldj1uLHQuX3ByZXY9ZSxuJiYobi5fbmV4dD1lKSx0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9ZSksdGhpcy5fYXBwZW5kQWZ0ZXI9dCx0fXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5kQWZ0ZXIuX25leHQ9ZSxlLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWUsdGhpcy5fYXBwZW5kQWZ0ZXI9ZSxudWxsfV9nZXRPckNyZWF0ZVJlY29yZEZvcktleSh0LGUpe2lmKHRoaXMuX3JlY29yZHMuaGFzKHQpKXtjb25zdCBuPXRoaXMuX3JlY29yZHMuZ2V0KHQpO3RoaXMuX21heWJlQWRkVG9DaGFuZ2VzKG4sZSk7Y29uc3Qgbz1uLl9wcmV2LGk9bi5fbmV4dDtyZXR1cm4gbyYmKG8uX25leHQ9aSksaSYmKGkuX3ByZXY9byksbi5fbmV4dD1udWxsLG4uX3ByZXY9bnVsbCxufWNvbnN0IG49bmV3IGZiKHQpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldCh0LG4pLG4uY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9BZGRpdGlvbnMobiksbn1fcmVzZXQoKXtpZih0aGlzLmlzRGlydHkpe2xldCB0O2Zvcih0aGlzLl9wcmV2aW91c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCx0PXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0Q2hhbmdlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWU7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT10O3Q9dC5fbmV4dEFkZGVkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsfX1fbWF5YmVBZGRUb0NoYW5nZXModCxlKXtPYmplY3QuaXMoZSx0LmN1cnJlbnRWYWx1ZSl8fCh0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWUsdC5jdXJyZW50VmFsdWU9ZSx0aGlzLl9hZGRUb0NoYW5nZXModCkpfV9hZGRUb0FkZGl0aW9ucyh0KXtudWxsPT09dGhpcy5fYWRkaXRpb25zSGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX1fYWRkVG9DaGFuZ2VzKHQpe251bGw9PT10aGlzLl9jaGFuZ2VzSGVhZD90aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD10Oih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9dCx0aGlzLl9jaGFuZ2VzVGFpbD10KX1fZm9yRWFjaCh0LGUpe3QgaW5zdGFuY2VvZiBNYXA/dC5mb3JFYWNoKGUpOk9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PmUodFtuXSxuKSkpfX1jbGFzcyBmYntjb25zdHJ1Y3Rvcih0KXt0aGlzLmtleT10LHRoaXMucHJldmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZhbHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRDaGFuZ2VkPW51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBnYigpe3JldHVybiBuZXcgaGIoW25ldyBhYl0pfWNsYXNzIGhie2NvbnN0cnVjdG9yKHQpe3RoaXMuZmFjdG9yaWVzPXR9c3RhdGljIGNyZWF0ZSh0LGUpe2lmKG51bGwhPWUpe2NvbnN0IG49ZS5mYWN0b3JpZXMuc2xpY2UoKTt0PXQuY29uY2F0KG4pfXJldHVybiBuZXcgaGIodCl9c3RhdGljIGV4dGVuZCh0KXtyZXR1cm57cHJvdmlkZTpoYix1c2VGYWN0b3J5OmU9PmhiLmNyZWF0ZSh0LGV8fGdiKCkpLGRlcHM6W1toYixuZXcgVXIsbmV3IEJyXV19fWZpbmQodCl7Y29uc3QgZT10aGlzLmZhY3Rvcmllcy5maW5kKChlPT5lLnN1cHBvcnRzKHQpKSk7aWYobnVsbCE9ZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke3R9JyBvZiB0eXBlICckeyhmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm5hbWV8fHR5cGVvZiB0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpfSdgKX19ZnVuY3Rpb24gYmIoKXtyZXR1cm4gbmV3IHliKFtuZXcgbWJdKX1oYi7JtXByb3Y9U24oe3Rva2VuOmhiLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6Z2J9KTtjbGFzcyB5Yntjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhY3Rvcmllcz10fXN0YXRpYyBjcmVhdGUodCxlKXtpZihlKXtjb25zdCBuPWUuZmFjdG9yaWVzLnNsaWNlKCk7dD10LmNvbmNhdChuKX1yZXR1cm4gbmV3IHliKHQpfXN0YXRpYyBleHRlbmQodCl7cmV0dXJue3Byb3ZpZGU6eWIsdXNlRmFjdG9yeTplPT55Yi5jcmVhdGUodCxlfHxiYigpKSxkZXBzOltbeWIsbmV3IFVyLG5ldyBCcl1dfX1maW5kKHQpe2NvbnN0IGU9dGhpcy5mYWN0b3JpZXMuZmluZCgoZT0+ZS5zdXBwb3J0cyh0KSkpO2lmKGUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fSdgKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBfYih0LGUsbixvLGk9ITEpe2Zvcig7bnVsbCE9PW47KXtuZ0Rldk1vZGUmJmdhKG4sNjMpO2NvbnN0IGE9ZVtuLmluZGV4XTtpZihudWxsIT09YSYmby5wdXNoKGxpKGEpKSx3byhhKSlmb3IobGV0IHQ9T287dDxhLmxlbmd0aDt0Kyspe2NvbnN0IGU9YVt0XSxuPWVbMV0uZmlyc3RDaGlsZDtudWxsIT09biYmX2IoZVsxXSxlLG4sbyl9Y29uc3Qgcj1uLnR5cGU7aWYoOCZyKV9iKHQsZSxuLmNoaWxkLG8pO2Vsc2UgaWYoMzImcil7Y29uc3QgdD1UbChuLGUpO2xldCBpO2Zvcig7aT10KCk7KW8ucHVzaChpKX1lbHNlIGlmKDE2JnIpe2NvbnN0IHQ9bGMoZSxuKTtpZihBcnJheS5pc0FycmF5KHQpKW8ucHVzaCguLi50KTtlbHNle2NvbnN0IG49TmwoZVsxNl0pO25nRGV2TW9kZSYmam8obiksX2IoblsxXSxuLHQsbywhMCl9fW49aT9uLnByb2plY3Rpb25OZXh0Om4ubmV4dH1yZXR1cm4gb30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICoveWIuybVwcm92PVNuKHt0b2tlbjp5Yixwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmJifSk7Y2xhc3MgQ2J7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9sVmlldz10LHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlldz1lLHRoaXMuX2FwcFJlZj1udWxsLHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExfWdldCByb290Tm9kZXMoKXtjb25zdCB0PXRoaXMuX2xWaWV3LGU9dFsxXTtyZXR1cm4gX2IoZSx0LGUuZmlyc3RDaGlsZCxbXSl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gdGhpcy5fbFZpZXdbOF19c2V0IGNvbnRleHQodCl7dGhpcy5fbFZpZXdbOF09dH1nZXQgZGVzdHJveWVkKCl7cmV0dXJuIDI1Nj09KDI1NiZ0aGlzLl9sVmlld1syXSl9ZGVzdHJveSgpe2lmKHRoaXMuX2FwcFJlZil0aGlzLl9hcHBSZWYuZGV0YWNoVmlldyh0aGlzKTtlbHNlIGlmKHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyKXtjb25zdCB0PXRoaXMuX2xWaWV3WzNdO2lmKHdvKHQpKXtjb25zdCBlPXRbOF0sbj1lP2UuaW5kZXhPZih0aGlzKTotMTtuPi0xJiYobmdEZXZNb2RlJiZnbihuLHQuaW5kZXhPZih0aGlzLl9sVmlldyktT28sIkFuIGF0dGFjaGVkIHZpZXcgc2hvdWxkIGJlIGluIHRoZSBzYW1lIHBvc2l0aW9uIHdpdGhpbiBpdHMgY29udGFpbmVyIGFzIGl0cyBWaWV3UmVmIGluIHRoZSBWSUVXX1JFRlMgYXJyYXkuIiksWWwodCxuKSxmcihlLG4pKX10aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMX1xbCh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyl9b25EZXN0cm95KHQpe1RkKHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3LG51bGwsdCl9bWFya0ZvckNoZWNrKCl7b3AodGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3fHx0aGlzLl9sVmlldyl9ZGV0YWNoKCl7dGhpcy5fbFZpZXdbMl0mPS0xMjl9cmVhdHRhY2goKXt0aGlzLl9sVmlld1syXXw9MTI4fWRldGVjdENoYW5nZXMoKXthcCh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyx0aGlzLmNvbnRleHQpfWNoZWNrTm9DaGFuZ2VzKCl7IShmdW5jdGlvbiB0KGUsbixvKXtUaSghMCk7dHJ5e2FwKGUsbixvKX1maW5hbGx5e1RpKCExKX19KSh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyx0aGlzLmNvbnRleHQpfWF0dGFjaFRvVmlld0NvbnRhaW5lclJlZigpe2lmKHRoaXMuX2FwcFJlZil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBBcHBsaWNhdGlvblJlZiEiKTt0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMH1kZXRhY2hGcm9tQXBwUmVmKCl7dGhpcy5fYXBwUmVmPW51bGwsKGZ1bmN0aW9uIHQoZSxuKXttYyhlLG4sblsxMV0sMixudWxsLG51bGwpfSkodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcpfWF0dGFjaFRvQXBwUmVmKHQpe2lmKHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyKXRocm93IG5ldyBFcnJvcigiVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29udGFpbmVyISIpO3RoaXMuX2FwcFJlZj10fX1jbGFzcyBNYiBleHRlbmRzIENie2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX3ZpZXc9dH1kZXRlY3RDaGFuZ2VzKCl7cnAodGhpcy5fdmlldyl9Y2hlY2tOb0NoYW5nZXMoKXshKGZ1bmN0aW9uIHQoZSl7VGkoITApO3RyeXtycChlKX1maW5hbGx5e1RpKCExKX19KSh0aGlzLl92aWV3KX1nZXQgY29udGV4dCgpe3JldHVybiBudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgdmI9ZnVuY3Rpb24geGIodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCxuLG8pe2lmKFNvKHQpJiYhbyl7Y29uc3QgZT11aSh0LmluZGV4LG4pO3JldHVybiBuZXcgQ2IoZSxlKX1pZig0NyZ0LnR5cGUpe3JldHVybiBuZXcgQ2IoblsxNl0sbil9cmV0dXJuIG51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykod2koKSx4aSgpLDE2PT0oMTYmdCkpfTtjbGFzcyBPYnt9T2IuX19OR19FTEVNRU5UX0lEX189dmI7Y29uc3QgUGI9W25ldyBtYl0sd2I9W25ldyBhYl0sa2I9bmV3IGhiKHdiKSxTYj1uZXcgeWIoUGIpLERiPWZ1bmN0aW9uIFJiKCl7cmV0dXJuIE5iKHdpKCkseGkoKSl9O2NsYXNzIEVie31FYi5fX05HX0VMRU1FTlRfSURfXz1EYjtjb25zdCBBYj1FYixUYj1jbGFzcyBleHRlbmRzIEFie2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuX2RlY2xhcmF0aW9uTFZpZXc9dCx0aGlzLl9kZWNsYXJhdGlvblRDb250YWluZXI9ZSx0aGlzLmVsZW1lbnRSZWY9bn1jcmVhdGVFbWJlZGRlZFZpZXcodCl7Y29uc3QgZT10aGlzLl9kZWNsYXJhdGlvblRDb250YWluZXIudFZpZXdzLG49eWQodGhpcy5fZGVjbGFyYXRpb25MVmlldyxlLHQsMTYsbnVsbCxlLmRlY2xUTm9kZSxudWxsLG51bGwsbnVsbCxudWxsKSxvPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLmluZGV4XTtuZ0Rldk1vZGUmJklvKG8pLG5bMTddPW87Y29uc3QgaT10aGlzLl9kZWNsYXJhdGlvbkxWaWV3WzE5XTtyZXR1cm4gbnVsbCE9PWkmJihuWzE5XT1pLmNyZWF0ZUVtYmVkZGVkVmlldyhlKSksdmQoZSxuLHQpLG5ldyBDYihuKX19O2Z1bmN0aW9uIE5iKHQsZSl7cmV0dXJuIDQmdC50eXBlPyhuZ0Rldk1vZGUmJnhuKHQudFZpZXdzLCJUVmlldyBtdXN0IGJlIGFsbG9jYXRlZCIpLG5ldyBUYihlLHQscWgodCxlKSkpOm51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHpie30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEliPWZ1bmN0aW9uIEhiKCl7cmV0dXJuIGpiKHdpKCkseGkoKSl9O2NsYXNzIEZie31GYi5fX05HX0VMRU1FTlRfSURfXz1JYjtjb25zdCBMYj1GYixCYj1jbGFzcyBleHRlbmRzIExie2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuX2xDb250YWluZXI9dCx0aGlzLl9ob3N0VE5vZGU9ZSx0aGlzLl9ob3N0TFZpZXc9bn1nZXQgZWxlbWVudCgpe3JldHVybiBxaCh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IFVhKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpfWdldCBwYXJlbnRJbmplY3Rvcigpe2NvbnN0IHQ9UmEodGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyk7aWYoTWEodCkpe2NvbnN0IGU9eGEodCx0aGlzLl9ob3N0TFZpZXcpLG49dmEodCk7bmdEZXZNb2RlJiZXbyhlLG4pO3JldHVybiBuZXcgVWEoZVsxXS5kYXRhW24rOF0sZSl9cmV0dXJuIG5ldyBVYShudWxsLHRoaXMuX2hvc3RMVmlldyl9Y2xlYXIoKXtmb3IoO3RoaXMubGVuZ3RoPjA7KXRoaXMucmVtb3ZlKHRoaXMubGVuZ3RoLTEpfWdldCh0KXtjb25zdCBlPVZiKHRoaXMuX2xDb250YWluZXIpO3JldHVybiBudWxsIT09ZSYmZVt0XXx8bnVsbH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xDb250YWluZXIubGVuZ3RoLU9vfWNyZWF0ZUVtYmVkZGVkVmlldyh0LGUsbil7Y29uc3Qgbz10LmNyZWF0ZUVtYmVkZGVkVmlldyhlfHx7fSk7cmV0dXJuIHRoaXMuaW5zZXJ0KG8sbiksb31jcmVhdGVDb21wb25lbnQodCxlLG4sbyxpKXtjb25zdCBhPW58fHRoaXMucGFyZW50SW5qZWN0b3I7aWYoIWkmJm51bGw9PXQubmdNb2R1bGUmJmEpe2NvbnN0IHQ9YS5nZXQoemIsbnVsbCk7dCYmKGk9dCl9Y29uc3Qgcj10LmNyZWF0ZShhLG8sdm9pZCAwLGkpO3JldHVybiB0aGlzLmluc2VydChyLmhvc3RWaWV3LGUpLHJ9aW5zZXJ0KHQsZSl7Y29uc3Qgbj10Ll9sVmlldyxvPW5bMV07aWYobmdEZXZNb2RlJiZ0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBpbnNlcnQgYSBkZXN0cm95ZWQgVmlldyBpbiBhIFZpZXdDb250YWluZXIhIik7aWYoKGZ1bmN0aW9uIGkodCl7cmV0dXJuIHdvKHRbM10pfSkobikpe2NvbnN0IGU9dGhpcy5pbmRleE9mKHQpO2lmKC0xIT09ZSl0aGlzLmRldGFjaChlKTtlbHNle2NvbnN0IGU9blszXTtuZ0Rldk1vZGUmJmduKHdvKGUpLCEwLCJBbiBhdHRhY2hlZCB2aWV3IHNob3VsZCBoYXZlIGl0cyBQQVJFTlQgcG9pbnQgdG8gYSBjb250YWluZXIuIik7Y29uc3Qgbz1uZXcgQmIoZSxlWzZdLGVbM10pO28uZGV0YWNoKG8uaW5kZXhPZih0KSl9fWNvbnN0IGE9dGhpcy5fYWRqdXN0SW5kZXgoZSkscj10aGlzLl9sQ29udGFpbmVyO1dsKG8sbixyLGEpO2NvbnN0IHM9Y2MoYSxyKSxsPW5bMTFdLGM9dGMobCxyWzddKTtyZXR1cm4gbnVsbCE9PWMmJihmdW5jdGlvbiBkKHQsZSxuLG8saSxhKXtvWzBdPWksb1s2XT1lLG1jKHQsbyxuLDEsaSxhKX0pKG8scls2XSxsLG4sYyxzKSx0LmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZigpLHVyKFViKHIpLGEsdCksdH1tb3ZlKHQsZSl7aWYobmdEZXZNb2RlJiZ0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBtb3ZlIGEgZGVzdHJveWVkIFZpZXcgaW4gYSBWaWV3Q29udGFpbmVyISIpO3JldHVybiB0aGlzLmluc2VydCh0LGUpfWluZGV4T2YodCl7Y29uc3QgZT1WYih0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PWU/ZS5pbmRleE9mKHQpOi0xfXJlbW92ZSh0KXtjb25zdCBlPXRoaXMuX2FkanVzdEluZGV4KHQsLTEpLG49WWwodGhpcy5fbENvbnRhaW5lcixlKTtuJiYoZnIoVWIodGhpcy5fbENvbnRhaW5lciksZSkscWwoblsxXSxuKSl9ZGV0YWNoKHQpe2NvbnN0IGU9dGhpcy5fYWRqdXN0SW5kZXgodCwtMSksbj1ZbCh0aGlzLl9sQ29udGFpbmVyLGUpO3JldHVybiBuJiZudWxsIT1mcihVYih0aGlzLl9sQ29udGFpbmVyKSxlKT9uZXcgQ2Iobik6bnVsbH1fYWRqdXN0SW5kZXgodCxlPTApe3JldHVybiBudWxsPT10P3RoaXMubGVuZ3RoK2U6KG5nRGV2TW9kZSYmKE1uKHQsLTEsYFZpZXdSZWYgaW5kZXggbXVzdCBiZSBwb3NpdGl2ZSwgZ290ICR7dH1gKSxfbih0LHRoaXMubGVuZ3RoKzErZSwiaW5kZXgiKSksdCl9fTtmdW5jdGlvbiBWYih0KXtyZXR1cm4gdFs4XX1mdW5jdGlvbiBVYih0KXtyZXR1cm4gdFs4XXx8KHRbOF09W10pfWZ1bmN0aW9uIGpiKHQsZSl7bGV0IG47bmdEZXZNb2RlJiZnYSh0LDE1KTtjb25zdCBvPWVbdC5pbmRleF07aWYod28obykpbj1vO2Vsc2V7bGV0IGk7aWYoOCZ0LnR5cGUpaT1saShvKTtlbHNle2NvbnN0IG49ZVsxMV07bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVDb21tZW50KyssaT1uLmNyZWF0ZUNvbW1lbnQobmdEZXZNb2RlPyJjb250YWluZXIiOiIiKTtjb25zdCBvPWRpKHQsZSk7Smwobix0YyhuLG8pLGksKGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gcmkodCk/dC5uZXh0U2libGluZyhlKTplLm5leHRTaWJsaW5nfSkobixvKSwhMSl9ZVt0LmluZGV4XT1uPVFkKG8sZSxpLHQpLG5wKGUsbil9cmV0dXJuIG5ldyBCYihuLHQsZSl9Y29uc3QgV2I9bmV3IE1hcDtmdW5jdGlvbiBHYih0KXtsZXQgZT1XYi5nZXQodCk7cmV0dXJuIGV8fChlPUtlKHQpKyJfIitXYi5zaXplLFdiLnNldCh0LGUpKSxlfUdiKE5wKSxHYih5cCksR2IoemIpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KR2IoJGgpLEdiKEtoKSxHYihGYiksR2IoRWIpLEdiKE9iKSxHYihOcCksR2IoeXApO2NvbnN0IFliPXt9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBxYiBleHRlbmRzIEdoe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5uZ01vZHVsZT10fXJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQpe25nRGV2TW9kZSYmKGZ1bmN0aW9uIGUodCxuPSJUeXBlIHBhc3NlZCBpbiBpcyBub3QgQ29tcG9uZW50VHlwZSwgaXQgZG9lcyBub3QgaGF2ZSAnybVjbXAnIHByb3BlcnR5LiIpe3lvKHQpfHxPbihuKX0pKHQpO2NvbnN0IG49eW8odCk7cmV0dXJuIG5ldyBLYihuLHRoaXMubmdNb2R1bGUpfX1mdW5jdGlvbiBaYih0KXtjb25zdCBlPVtdO2ZvcihsZXQgbiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikpe2UucHVzaCh7cHJvcE5hbWU6dFtuXSx0ZW1wbGF0ZU5hbWU6bn0pfXJldHVybiBlfWNvbnN0IFhiPW5ldyBlcigiU0NIRURVTEVSX1RPS0VOIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+eGx9KTtjbGFzcyBLYiBleHRlbmRzIGpoe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmNvbXBvbmVudERlZj10LHRoaXMubmdNb2R1bGU9ZSx0aGlzLmNvbXBvbmVudFR5cGU9dC50eXBlLHRoaXMuc2VsZWN0b3I9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQubWFwKGtjKS5qb2luKCIsIil9KSh0LnNlbGVjdG9ycyksdGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnM9dC5uZ0NvbnRlbnRTZWxlY3RvcnM/dC5uZ0NvbnRlbnRTZWxlY3RvcnM6W10sdGhpcy5pc0JvdW5kVG9Nb2R1bGU9ISFlfWdldCBpbnB1dHMoKXtyZXR1cm4gWmIodGhpcy5jb21wb25lbnREZWYuaW5wdXRzKX1nZXQgb3V0cHV0cygpe3JldHVybiBaYih0aGlzLmNvbXBvbmVudERlZi5vdXRwdXRzKX1jcmVhdGUodCxlLG4sbyl7Y29uc3QgaT0obz1vfHx0aGlzLm5nTW9kdWxlKT8oZnVuY3Rpb24gYSh0LGUpe3JldHVybntnZXQ6KG4sbyxpKT0+e2NvbnN0IGE9dC5nZXQobixZYixpKTtyZXR1cm4gYSE9PVlifHxvPT09WWI/YTplLmdldChuLG8saSl9fX0pKHQsby5pbmplY3Rvcik6dCxyPWkuZ2V0KFFoLHNpKSxzPWkuZ2V0KG5iLG51bGwpLGw9ci5jcmVhdGVSZW5kZXJlcihudWxsLHRoaXMuY29tcG9uZW50RGVmKSxjPXRoaXMuY29tcG9uZW50RGVmLnNlbGVjdG9yc1swXVswXXx8ImRpdiIsZD1uP0FkKGwsbix0aGlzLmNvbXBvbmVudERlZi5lbmNhcHN1bGF0aW9uKTpqbChyLmNyZWF0ZVJlbmRlcmVyKG51bGwsdGhpcy5jb21wb25lbnREZWYpLGMsKGZ1bmN0aW9uIHAodCl7Y29uc3QgZT10LnRvTG93ZXJDYXNlKCk7cmV0dXJuInN2ZyI9PT1lP2VpOiJtYXRoIj09PWU/bmk6bnVsbH0pKGMpKSxtPXRoaXMuY29tcG9uZW50RGVmLm9uUHVzaD81NzY6NTI4LHU9KGZ1bmN0aW9uIGYodCxlKXtyZXR1cm57Y29tcG9uZW50czpbXSxzY2hlZHVsZXI6dHx8eGwsY2xlYW46Y3AscGxheWVySGFuZGxlcjplfHxudWxsLGZsYWdzOjB9fSkoKSxnPVJkKDAsbnVsbCxudWxsLDEsMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpLGg9eWQobnVsbCxnLHUsbSxudWxsLG51bGwscixsLHMsaSk7bGV0IGIseTtxaShoKTt0cnl7Y29uc3QgdD0oZnVuY3Rpb24gbyh0LGUsbixpLGEscil7Y29uc3Qgcz1uWzFdO25nRGV2TW9kZSYmd24obiwyMCksblsyMF09dDtjb25zdCBsPV9kKHMsMjAsMiwiI2hvc3QiLG51bGwpLGM9bC5tZXJnZWRBdHRycz1lLmhvc3RBdHRycztudWxsIT09YyYmKGhwKGwsYywhMCksbnVsbCE9PXQmJihoYShhLHQsYyksbnVsbCE9PWwuY2xhc3NlcyYmZ2MoYSx0LGwuY2xhc3NlcyksbnVsbCE9PWwuc3R5bGVzJiZmYyhhLHQsbC5zdHlsZXMpKSk7Y29uc3QgZD1pLmNyZWF0ZVJlbmRlcmVyKHQsZSkscD15ZChuLERkKGUpLG51bGwsZS5vblB1c2g/NjQ6MTYsblsyMF0sbCxpLGQscnx8bnVsbCxudWxsKTtyZXR1cm4gcy5maXJzdENyZWF0ZVBhc3MmJihFYShrYShsLG4pLHMsZS50eXBlKSxVZChzLGwpLFdkKGwsbi5sZW5ndGgsMSkpLG5wKG4scCksblsyMF09cH0pKGQsdGhpcy5jb21wb25lbnREZWYsaCxyLGwpO2lmKGQpaWYobiloYShsLGQsWyJuZy12ZXJzaW9uIixpYi5mdWxsXSk7ZWxzZXtjb25zdHthdHRyczp0LGNsYXNzZXM6ZX09KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1bXSxuPVtdO2xldCBvPTEsaT0yO2Zvcig7bzx0Lmxlbmd0aDspe2xldCBhPXRbb107aWYoInN0cmluZyI9PXR5cGVvZiBhKTI9PT1pPyIiIT09YSYmZS5wdXNoKGEsdFsrK29dKTo4PT09aSYmbi5wdXNoKGEpO2Vsc2V7aWYoIXZjKGkpKWJyZWFrO2k9YX1vKyt9cmV0dXJue2F0dHJzOmUsY2xhc3NlczpufX0pKHRoaXMuY29tcG9uZW50RGVmLnNlbGVjdG9yc1swXSk7dCYmaGEobCxkLHQpLGUmJmUubGVuZ3RoPjAmJmdjKGwsZCxlLmpvaW4oIiAiKSl9aWYoeT1waShnLHZvKSx2b2lkIDAhPT1lKXtjb25zdCB0PXkucHJvamVjdGlvbj1bXTtmb3IobGV0IG49MDtuPHRoaXMubmdDb250ZW50U2VsZWN0b3JzLmxlbmd0aDtuKyspe2NvbnN0IG89ZVtuXTt0LnB1c2gobnVsbCE9bz9BcnJheS5mcm9tKG8pOm51bGwpfX1iPVhwKHQsdGhpcy5jb21wb25lbnREZWYsaCx1LFtLcF0pLHZkKGcsaCxudWxsKX1maW5hbGx5e1FpKCl9cmV0dXJuIG5ldyBKYih0aGlzLmNvbXBvbmVudFR5cGUsYixxaCh5LGgpLGgseSl9fW5ldyBxYjtjbGFzcyBKYiBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcigpLHRoaXMubG9jYXRpb249bix0aGlzLl9yb290TFZpZXc9byx0aGlzLl90Tm9kZT1pLHRoaXMuaW5zdGFuY2U9ZSx0aGlzLmhvc3RWaWV3PXRoaXMuY2hhbmdlRGV0ZWN0b3JSZWY9bmV3IE1iKG8pLHRoaXMuY29tcG9uZW50VHlwZT10fWdldCBpbmplY3Rvcigpe3JldHVybiBuZXcgVWEodGhpcy5fdE5vZGUsdGhpcy5fcm9vdExWaWV3KX1kZXN0cm95KCl7dGhpcy5ob3N0Vmlldy5kZXN0cm95KCl9b25EZXN0cm95KHQpe3RoaXMuaG9zdFZpZXcub25EZXN0cm95KHQpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gUWIodCxlLG4sbyl7cmV0dXJuIFZuKCgoKT0+e2NvbnN0IGk9dDtudWxsIT09ZSYmKGkuaGFzT3duUHJvcGVydHkoImRlY29yYXRvcnMiKSYmdm9pZCAwIT09aS5kZWNvcmF0b3JzP2kuZGVjb3JhdG9ycy5wdXNoKC4uLmUpOmkuZGVjb3JhdG9ycz1lKSxudWxsIT09biYmKGkuY3RvclBhcmFtZXRlcnM9biksbnVsbCE9PW8mJihpLnByb3BEZWNvcmF0b3JzPWkuaGFzT3duUHJvcGVydHkoInByb3BEZWNvcmF0b3JzIikmJnZvaWQgMCE9PWkucHJvcERlY29yYXRvcnM/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkucHJvcERlY29yYXRvcnMpLG8pOm8pfSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCAkYj1uZXcgTWFwO2Z1bmN0aW9uIHR5KHQpe2NvbnN0IGU9bmV3IFNldDshKGZ1bmN0aW9uIHQobil7Y29uc3Qgbz1NbyhuLCEwKSxpPW8uaWQ7aWYobnVsbCE9PWkpe2NvbnN0IHQ9JGIuZ2V0KGkpOyEoZnVuY3Rpb24gYSh0LGUsbil7aWYoZSYmZSE9PW4pdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgbW9kdWxlIHJlZ2lzdGVyZWQgZm9yICR7dH0gLSAke0tlKGUpfSB2cyAke0tlKGUubmFtZSl9YCl9KShpLHQsbiksJGIuc2V0KGksbil9Y29uc3Qgcj1TbChvLmltcG9ydHMpO2Zvcihjb25zdCBuIG9mIHIpZS5oYXMobil8fChlLmFkZChuKSx0KG4pKX0pKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBleSBleHRlbmRzIHpie2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPVtdLHRoaXMuaW5qZWN0b3I9dGhpcyx0aGlzLmRlc3Ryb3lDYnM9W10sdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9bmV3IHFiKHRoaXMpO2NvbnN0IG49TW8odCk7bmdEZXZNb2RlJiZ4bihuLGBOZ01vZHVsZSAnJHtLZSh0KX0nIGlzIG5vdCBhIHN1YnR5cGUgb2YgJ05nTW9kdWxlVHlwZScuYCk7Y29uc3Qgbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdFtvb118fG51bGx9KSh0KTtvJiZQZyhvKSx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPVNsKG4uYm9vdHN0cmFwKSx0aGlzLl9yM0luamVjdG9yPVBwKHQsZSxbe3Byb3ZpZGU6emIsdXNlVmFsdWU6dGhpc30se3Byb3ZpZGU6R2gsdXNlVmFsdWU6dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ9XSxLZSh0KSksdGhpcy5fcjNJbmplY3Rvci5fcmVzb2x2ZUluamVjdG9yRGVmVHlwZXMoKSx0aGlzLmluc3RhbmNlPXRoaXMuZ2V0KHQpfWdldCh0LGU9TnAuVEhST1dfSUZfTk9UX0ZPVU5ELG49SG4uRGVmYXVsdCl7cmV0dXJuIHQ9PT1OcHx8dD09PXpifHx0PT09eXA/dGhpczp0aGlzLl9yM0luamVjdG9yLmdldCh0LGUsbil9ZGVzdHJveSgpe25nRGV2TW9kZSYmeG4odGhpcy5kZXN0cm95Q2JzLCJOZ01vZHVsZSBhbHJlYWR5IGRlc3Ryb3llZCIpO2NvbnN0IHQ9dGhpcy5fcjNJbmplY3RvcjshdC5kZXN0cm95ZWQmJnQuZGVzdHJveSgpLHRoaXMuZGVzdHJveUNicy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLmRlc3Ryb3lDYnM9bnVsbH1vbkRlc3Ryb3kodCl7bmdEZXZNb2RlJiZ4bih0aGlzLmRlc3Ryb3lDYnMsIk5nTW9kdWxlIGFscmVhZHkgZGVzdHJveWVkIiksdGhpcy5kZXN0cm95Q2JzLnB1c2godCl9fWNsYXNzIG55IGV4dGVuZHMgY2xhc3N7fXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubW9kdWxlVHlwZT10O251bGwhPT1Nbyh0KSYmdHkodCl9Y3JlYXRlKHQpe3JldHVybiBuZXcgZXkodGhpcy5tb2R1bGVUeXBlLHQpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gb3kodCxlLG4pe2NvbnN0IG89TmkoKSt0LGk9eGkoKTtyZXR1cm4gaVtvXT09PVNjP21tKGksbyxuP2UuY2FsbChuKTplKCkpOnVtKGksbyl9ZnVuY3Rpb24gaXkodCxlLG4sbyl7cmV0dXJuIGZ5KHhpKCksTmkoKSx0LGUsbixvKX1mdW5jdGlvbiBheSh0LGUsbixvLGkpe3JldHVybiBneSh4aSgpLE5pKCksdCxlLG4sbyxpKX1mdW5jdGlvbiByeSh0LGUsbixvLGksYSl7cmV0dXJuIGh5KHhpKCksTmkoKSx0LGUsbixvLGksYSl9ZnVuY3Rpb24gc3kodCxlLG4sbyxpLGEscil7cmV0dXJuIGJ5KHhpKCksTmkoKSx0LGUsbixvLGksYSxyKX1mdW5jdGlvbiBseSh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9TmkoKSt0LGM9eGkoKSxkPWJtKGMsbCxuLG8saSxhKTtyZXR1cm4gZm0oYyxsKzQscil8fGQ/bW0oYyxsKzUscz9lLmNhbGwocyxuLG8saSxhLHIpOmUobixvLGksYSxyKSk6dW0oYyxsKzUpfWZ1bmN0aW9uIGN5KHQsZSxuLG8saSxhLHIscyxsKXtjb25zdCBjPU5pKCkrdCxkPXhpKCkscD1ibShkLGMsbixvLGksYSk7cmV0dXJuIGdtKGQsYys0LHIscyl8fHA/bW0oZCxjKzYsbD9lLmNhbGwobCxuLG8saSxhLHIscyk6ZShuLG8saSxhLHIscykpOnVtKGQsYys2KX1mdW5jdGlvbiBkeSh0LGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPU5pKCkrdCxwPXhpKCk7bGV0IG09Ym0ocCxkLG4sbyxpLGEpO3JldHVybiBobShwLGQrNCxyLHMsbCl8fG0/bW0ocCxkKzcsYz9lLmNhbGwoYyxuLG8saSxhLHIscyxsKTplKG4sbyxpLGEscixzLGwpKTp1bShwLGQrNyl9ZnVuY3Rpb24gcHkodCxlLG4sbyxpLGEscixzLGwsYyxkKXtjb25zdCBwPU5pKCkrdCxtPXhpKCksdT1ibShtLHAsbixvLGksYSk7cmV0dXJuIGJtKG0scCs0LHIscyxsLGMpfHx1P21tKG0scCs4LGQ/ZS5jYWxsKGQsbixvLGksYSxyLHMsbCxjKTplKG4sbyxpLGEscixzLGwsYykpOnVtKG0scCs4KX1mdW5jdGlvbiBteSh0LGUsbixvKXtyZXR1cm4geXkoeGkoKSxOaSgpLHQsZSxuLG8pfWZ1bmN0aW9uIHV5KHQsZSl7bmdEZXZNb2RlJiZ3bih0LGUpO2NvbnN0IG49dFtlXTtyZXR1cm4gbj09PVNjP3ZvaWQgMDpufWZ1bmN0aW9uIGZ5KHQsZSxuLG8saSxhKXtjb25zdCByPWUrbjtyZXR1cm4gZm0odCxyLGkpP21tKHQscisxLGE/by5jYWxsKGEsaSk6byhpKSk6dXkodCxyKzEpfWZ1bmN0aW9uIGd5KHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9ZStuO3JldHVybiBnbSh0LHMsaSxhKT9tbSh0LHMrMixyP28uY2FsbChyLGksYSk6byhpLGEpKTp1eSh0LHMrMil9ZnVuY3Rpb24gaHkodCxlLG4sbyxpLGEscixzKXtjb25zdCBsPWUrbjtyZXR1cm4gaG0odCxsLGksYSxyKT9tbSh0LGwrMyxzP28uY2FsbChzLGksYSxyKTpvKGksYSxyKSk6dXkodCxsKzMpfWZ1bmN0aW9uIGJ5KHQsZSxuLG8saSxhLHIscyxsKXtjb25zdCBjPWUrbjtyZXR1cm4gYm0odCxjLGksYSxyLHMpP21tKHQsYys0LGw/by5jYWxsKGwsaSxhLHIscyk6byhpLGEscixzKSk6dXkodCxjKzQpfWZ1bmN0aW9uIHl5KHQsZSxuLG8saSxhKXtsZXQgcj1lK24scz0hMTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKylmbSh0LHIrKyxpW2VdKSYmKHM9ITApO3JldHVybiBzP21tKHQscixvLmFwcGx5KGEsaSkpOnV5KHQscil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIF95KHQsZSl7Y29uc3Qgbj1PaSgpO2xldCBvO2NvbnN0IGk9dCt2bztuLmZpcnN0Q3JlYXRlUGFzcz8obz0oZnVuY3Rpb24gYSh0LGUpe2lmKGUpZm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pe2NvbnN0IG89ZVtuXTtpZih0PT09by5uYW1lKXJldHVybiBvfXRocm93IG5ldyBubigiMzAyIixgVGhlIHBpcGUgJyR7dH0nIGNvdWxkIG5vdCBiZSBmb3VuZCFgKX0pKGUsbi5waXBlUmVnaXN0cnkpLG4uZGF0YVtpXT1vLG8ub25EZXN0cm95JiYobi5kZXN0cm95SG9va3N8fChuLmRlc3Ryb3lIb29rcz1bXSkpLnB1c2goaSxvLm9uRGVzdHJveSkpOm89bi5kYXRhW2ldO2NvbnN0IHI9by5mYWN0b3J5fHwoby5mYWN0b3J5PUdvKG8udHlwZSwhMCkpLHM9TG4oZnUpO3RyeXtjb25zdCB0PVBhKCExKSxlPXIoKTtyZXR1cm4gUGEodCksKGZ1bmN0aW9uIGwodCxlLG4sbyl7bj49dC5kYXRhLmxlbmd0aCYmKHQuZGF0YVtuXT1udWxsLHQuYmx1ZXByaW50W25dPW51bGwpLGVbbl09b30pKG4seGkoKSxpLGUpLGV9ZmluYWxseXtMbihzKX19ZnVuY3Rpb24gQ3kodCxlLG4pe2NvbnN0IG89dCt2byxpPXhpKCksYT1taShpLG8pO3JldHVybiB3eShpLFB5KGksbyk/ZnkoaSxOaSgpLGUsYS50cmFuc2Zvcm0sbixhKTphLnRyYW5zZm9ybShuKSl9ZnVuY3Rpb24gTXkodCxlLG4sbyl7Y29uc3QgaT10K3ZvLGE9eGkoKSxyPW1pKGEsaSk7cmV0dXJuIHd5KGEsUHkoYSxpKT9neShhLE5pKCksZSxyLnRyYW5zZm9ybSxuLG8scik6ci50cmFuc2Zvcm0obixvKSl9ZnVuY3Rpb24gdnkodCxlLG4sbyxpKXtjb25zdCBhPXQrdm8scj14aSgpLHM9bWkocixhKTtyZXR1cm4gd3kocixQeShyLGEpP2h5KHIsTmkoKSxlLHMudHJhbnNmb3JtLG4sbyxpLHMpOnMudHJhbnNmb3JtKG4sbyxpKSl9ZnVuY3Rpb24geHkodCxlLG4sbyxpLGEpe2NvbnN0IHI9dCt2byxzPXhpKCksbD1taShzLHIpO3JldHVybiB3eShzLFB5KHMscik/YnkocyxOaSgpLGUsbC50cmFuc2Zvcm0sbixvLGksYSxsKTpsLnRyYW5zZm9ybShuLG8saSxhKSl9ZnVuY3Rpb24gT3kodCxlLG4pe2NvbnN0IG89dCt2byxpPXhpKCksYT1taShpLG8pO3JldHVybiB3eShpLFB5KGksbyk/eXkoaSxOaSgpLGUsYS50cmFuc2Zvcm0sbixhKTphLnRyYW5zZm9ybS5hcHBseShhLG4pKX1mdW5jdGlvbiBQeSh0LGUpe3JldHVybiB0WzFdLmRhdGFbZV0ucHVyZX1mdW5jdGlvbiB3eSh0LGUpe2lmKGNtLmlzV3JhcHBlZChlKSl7ZT1jbS51bndyYXAoZSk7dFt6aSgpXT1TY31yZXR1cm4gZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24ga3kodCl7cmV0dXJuIGU9PntzZXRUaW1lb3V0KHQsdm9pZCAwLGUpfX1jb25zdCBTeT1jbGFzcyBleHRlbmRzIEJ7Y29uc3RydWN0b3IodD0hMSl7c3VwZXIoKSx0aGlzLl9faXNBc3luYz10fWVtaXQodCl7c3VwZXIubmV4dCh0KX1zdWJzY3JpYmUodCxlLG4pe3ZhciBvLGksYTtsZXQgcj10LHM9ZXx8KCgpPT5udWxsKSxsPW47aWYodCYmIm9iamVjdCI9PXR5cGVvZiB0KXtjb25zdCBlPXQ7cj1udWxsPT09KG89ZS5uZXh0KXx8dm9pZCAwPT09bz92b2lkIDA6by5iaW5kKGUpLHM9bnVsbD09PShpPWUuZXJyb3IpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmJpbmQoZSksbD1udWxsPT09KGE9ZS5jb21wbGV0ZSl8fHZvaWQgMD09PWE/dm9pZCAwOmEuYmluZChlKX10aGlzLl9faXNBc3luYyYmKHM9a3kocyksciYmKHI9a3kocikpLGwmJihsPWt5KGwpKSk7Y29uc3QgYz1zdXBlci5zdWJzY3JpYmUoe25leHQ6cixlcnJvcjpzLGNvbXBsZXRlOmx9KTtyZXR1cm4gdCBpbnN0YW5jZW9mIGYmJnQuYWRkKGMpLGN9fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRHkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1tzbSgpXSgpfWNsYXNzIFJ5e2NvbnN0cnVjdG9yKHQ9ITEpe3RoaXMuX2VtaXREaXN0aW5jdENoYW5nZXNPbmx5PXQsdGhpcy5kaXJ0eT0hMCx0aGlzLl9yZXN1bHRzPVtdLHRoaXMuX2NoYW5nZXNEZXRlY3RlZD0hMSx0aGlzLl9jaGFuZ2VzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLmZpcnN0PXZvaWQgMCx0aGlzLmxhc3Q9dm9pZCAwO2NvbnN0IGU9c20oKSxuPVJ5LnByb3RvdHlwZTtuW2VdfHwobltlXT1EeSl9Z2V0IGNoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY2hhbmdlc3x8KHRoaXMuX2NoYW5nZXM9bmV3IFN5KX1nZXQodCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbdF19bWFwKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLm1hcCh0KX1maWx0ZXIodCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmlsdGVyKHQpfWZpbmQodCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmluZCh0KX1yZWR1Y2UodCxlKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5yZWR1Y2UodCxlKX1mb3JFYWNoKHQpe3RoaXMuX3Jlc3VsdHMuZm9yRWFjaCh0KX1zb21lKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLnNvbWUodCl9dG9BcnJheSgpe3JldHVybiB0aGlzLl9yZXN1bHRzLnNsaWNlKCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy50b1N0cmluZygpfXJlc2V0KHQsZSl7Y29uc3Qgbj10aGlzO24uZGlydHk9ITE7Y29uc3Qgbz1wcih0KTsodGhpcy5fY2hhbmdlc0RldGVjdGVkPSEoZnVuY3Rpb24gaSh0LGUsbil7aWYodC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvXSxhPWVbb107aWYobiYmKGk9bihpKSxhPW4oYSkpLGEhPT1pKXJldHVybiExfXJldHVybiEwfSkobi5fcmVzdWx0cyxvLGUpKSYmKG4uX3Jlc3VsdHM9byxuLmxlbmd0aD1vLmxlbmd0aCxuLmxhc3Q9b1t0aGlzLmxlbmd0aC0xXSxuLmZpcnN0PW9bMF0pfW5vdGlmeU9uQ2hhbmdlcygpeyF0aGlzLl9jaGFuZ2VzfHwhdGhpcy5fY2hhbmdlc0RldGVjdGVkJiZ0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seXx8dGhpcy5fY2hhbmdlcy5lbWl0KHRoaXMpfXNldERpcnR5KCl7dGhpcy5kaXJ0eT0hMH1kZXN0cm95KCl7dGhpcy5jaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5jaGFuZ2VzLnVuc3Vic2NyaWJlKCl9fWNsYXNzIEV5e2NvbnN0cnVjdG9yKHQpe3RoaXMucXVlcnlMaXN0PXQsdGhpcy5tYXRjaGVzPW51bGx9Y2xvbmUoKXtyZXR1cm4gbmV3IEV5KHRoaXMucXVlcnlMaXN0KX1zZXREaXJ0eSgpe3RoaXMucXVlcnlMaXN0LnNldERpcnR5KCl9fWNsYXNzIEF5e2NvbnN0cnVjdG9yKHQ9W10pe3RoaXMucXVlcmllcz10fWNyZWF0ZUVtYmVkZGVkVmlldyh0KXtjb25zdCBlPXQucXVlcmllcztpZihudWxsIT09ZSl7Y29uc3Qgbj1udWxsIT09dC5jb250ZW50UXVlcmllcz90LmNvbnRlbnRRdWVyaWVzWzBdOmUubGVuZ3RoLG89W107Zm9yKGxldCB0PTA7dDxuO3QrKyl7Y29uc3Qgbj1lLmdldEJ5SW5kZXgodCk7by5wdXNoKHRoaXMucXVlcmllc1tuLmluZGV4SW5EZWNsYXJhdGlvblZpZXddLmNsb25lKCkpfXJldHVybiBuZXcgQXkobyl9cmV0dXJuIG51bGx9aW5zZXJ0Vmlldyh0KXt0aGlzLmRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKHQpfWRldGFjaFZpZXcodCl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KX1kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KXtmb3IobGV0IGU9MDtlPHRoaXMucXVlcmllcy5sZW5ndGg7ZSsrKW51bGwhPT1ZeSh0LGUpLm1hdGNoZXMmJnRoaXMucXVlcmllc1tlXS5zZXREaXJ0eSgpfX1jbGFzcyBUeXtjb25zdHJ1Y3Rvcih0LGUsbj1udWxsKXt0aGlzLnByZWRpY2F0ZT10LHRoaXMuZmxhZ3M9ZSx0aGlzLnJlYWQ9bn19Y2xhc3MgTnl7Y29uc3RydWN0b3IodD1bXSl7dGhpcy5xdWVyaWVzPXR9ZWxlbWVudFN0YXJ0KHQsZSl7bmdEZXZNb2RlJiZMbyh0LCJRdWVyaWVzIHNob3VsZCBjb2xsZWN0IHJlc3VsdHMgb24gdGhlIGZpcnN0IHRlbXBsYXRlIHBhc3Mgb25seSIpO2ZvcihsZXQgbj0wO248dGhpcy5xdWVyaWVzLmxlbmd0aDtuKyspdGhpcy5xdWVyaWVzW25dLmVsZW1lbnRTdGFydCh0LGUpfWVsZW1lbnRFbmQodCl7Zm9yKGxldCBlPTA7ZTx0aGlzLnF1ZXJpZXMubGVuZ3RoO2UrKyl0aGlzLnF1ZXJpZXNbZV0uZWxlbWVudEVuZCh0KX1lbWJlZGRlZFRWaWV3KHQpe2xldCBlPW51bGw7Zm9yKGxldCBuPTA7bjx0aGlzLmxlbmd0aDtuKyspe2NvbnN0IG89bnVsbCE9PWU/ZS5sZW5ndGg6MCxpPXRoaXMuZ2V0QnlJbmRleChuKS5lbWJlZGRlZFRWaWV3KHQsbyk7aSYmKGkuaW5kZXhJbkRlY2xhcmF0aW9uVmlldz1uLG51bGwhPT1lP2UucHVzaChpKTplPVtpXSl9cmV0dXJuIG51bGwhPT1lP25ldyBOeShlKTpudWxsfXRlbXBsYXRlKHQsZSl7bmdEZXZNb2RlJiZMbyh0LCJRdWVyaWVzIHNob3VsZCBjb2xsZWN0IHJlc3VsdHMgb24gdGhlIGZpcnN0IHRlbXBsYXRlIHBhc3Mgb25seSIpO2ZvcihsZXQgbj0wO248dGhpcy5xdWVyaWVzLmxlbmd0aDtuKyspdGhpcy5xdWVyaWVzW25dLnRlbXBsYXRlKHQsZSl9Z2V0QnlJbmRleCh0KXtyZXR1cm4gbmdEZXZNb2RlJiZ3bih0aGlzLnF1ZXJpZXMsdCksdGhpcy5xdWVyaWVzW3RdfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5xdWVyaWVzLmxlbmd0aH10cmFjayh0KXt0aGlzLnF1ZXJpZXMucHVzaCh0KX19Y2xhc3Mgenl7Y29uc3RydWN0b3IodCxlPS0xKXt0aGlzLm1ldGFkYXRhPXQsdGhpcy5tYXRjaGVzPW51bGwsdGhpcy5pbmRleEluRGVjbGFyYXRpb25WaWV3PS0xLHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITEsdGhpcy5fYXBwbGllc1RvTmV4dE5vZGU9ITAsdGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg9ZX1lbGVtZW50U3RhcnQodCxlKXt0aGlzLmlzQXBwbHlpbmdUb05vZGUoZSkmJnRoaXMubWF0Y2hUTm9kZSh0LGUpfWVsZW1lbnRFbmQodCl7dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg9PT10LmluZGV4JiYodGhpcy5fYXBwbGllc1RvTmV4dE5vZGU9ITEpfXRlbXBsYXRlKHQsZSl7dGhpcy5lbGVtZW50U3RhcnQodCxlKX1lbWJlZGRlZFRWaWV3KHQsZSl7cmV0dXJuIHRoaXMuaXNBcHBseWluZ1RvTm9kZSh0KT8odGhpcy5jcm9zc2VzTmdUZW1wbGF0ZT0hMCx0aGlzLmFkZE1hdGNoKC10LmluZGV4LGUpLG5ldyB6eSh0aGlzLm1ldGFkYXRhKSk6bnVsbH1pc0FwcGx5aW5nVG9Ob2RlKHQpe2lmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlJiYxIT0oMSZ0aGlzLm1ldGFkYXRhLmZsYWdzKSl7Y29uc3QgZT10aGlzLl9kZWNsYXJhdGlvbk5vZGVJbmRleDtsZXQgbj10LnBhcmVudDtmb3IoO251bGwhPT1uJiY4Jm4udHlwZSYmbi5pbmRleCE9PWU7KW49bi5wYXJlbnQ7cmV0dXJuIGU9PT0obnVsbCE9PW4/bi5pbmRleDotMSl9cmV0dXJuIHRoaXMuX2FwcGxpZXNUb05leHROb2RlfW1hdGNoVE5vZGUodCxlKXtjb25zdCBuPXRoaXMubWV0YWRhdGEucHJlZGljYXRlO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspe2NvbnN0IGk9bltvXTt0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsSXkoZSxpKSksdGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxlLEZhKGUsdCxpLCExLCExKSl9ZWxzZSBuPT09RWI/NCZlLnR5cGUmJnRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSwtMSk6dGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxlLEZhKGUsdCxuLCExLCExKSl9bWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxuKXtpZihudWxsIT09bil7Y29uc3Qgbz10aGlzLm1ldGFkYXRhLnJlYWQ7aWYobnVsbCE9PW8paWYobz09PUtofHxvPT09RmJ8fG89PT1FYiYmNCZlLnR5cGUpdGhpcy5hZGRNYXRjaChlLmluZGV4LC0yKTtlbHNle2NvbnN0IG49RmEoZSx0LG8sITEsITEpO251bGwhPT1uJiZ0aGlzLmFkZE1hdGNoKGUuaW5kZXgsbil9ZWxzZSB0aGlzLmFkZE1hdGNoKGUuaW5kZXgsbil9fWFkZE1hdGNoKHQsZSl7bnVsbD09PXRoaXMubWF0Y2hlcz90aGlzLm1hdGNoZXM9W3QsZV06dGhpcy5tYXRjaGVzLnB1c2godCxlKX19ZnVuY3Rpb24gSXkodCxlKXtjb25zdCBuPXQubG9jYWxOYW1lcztpZihudWxsIT09bilmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrPTIpaWYoblt0XT09PWUpcmV0dXJuIG5bdCsxXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBIeSh0LGUsbixvKXtyZXR1cm4tMT09PW4/KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gMTEmdC50eXBlP3FoKHQsZSk6NCZ0LnR5cGU/TmIodCxlKTpudWxsfSkoZSx0KTotMj09PW4/KGZ1bmN0aW9uIGEodCxlLG4pe2lmKG49PT1LaClyZXR1cm4gcWgoZSx0KTtpZihuPT09RWIpcmV0dXJuIE5iKGUsdCk7aWYobj09PUZiKXJldHVybiBuZ0Rldk1vZGUmJmdhKGUsMTUpLGpiKGUsdCk7bmdEZXZNb2RlJiZPbihgU3BlY2lhbCB0b2tlbiB0byByZWFkIHNob3VsZCBiZSBvbmUgb2YgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYgb3IgVmlld0NvbnRhaW5lclJlZiBidXQgZ290ICR7S2Uobil9LmApfSkodCxlLG8pOkxhKHQsdFsxXSxuLGUpfWZ1bmN0aW9uIEZ5KHQsZSxuLG8pe2NvbnN0IGk9ZVsxOV0ucXVlcmllc1tvXTtpZihudWxsPT09aS5tYXRjaGVzKXtjb25zdCBvPXQuZGF0YSxhPW4ubWF0Y2hlcyxyPVtdO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCs9Mil7Y29uc3QgaT1hW3RdO2lmKGk8MClyLnB1c2gobnVsbCk7ZWxzZXtuZ0Rldk1vZGUmJnduKG8saSk7ci5wdXNoKEh5KGUsb1tpXSxhW3QrMV0sbi5tZXRhZGF0YS5yZWFkKSl9fWkubWF0Y2hlcz1yfXJldHVybiBpLm1hdGNoZXN9ZnVuY3Rpb24gTHkodCxlLG4sbyl7Y29uc3QgaT10LnF1ZXJpZXMuZ2V0QnlJbmRleChuKSxhPWkubWF0Y2hlcztpZihudWxsIT09YSl7Y29uc3Qgcj1GeSh0LGUsaSxuKTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrPTIpe2NvbnN0IG49YVt0XTtpZihuPjApby5wdXNoKHJbdC8yXSk7ZWxzZXtjb25zdCBpPWFbdCsxXSxyPWVbLW5dO25nRGV2TW9kZSYmSW8ocik7Zm9yKGxldCB0PU9vO3Q8ci5sZW5ndGg7dCsrKXtjb25zdCBlPXJbdF07ZVsxN109PT1lWzNdJiZMeShlWzFdLGUsaSxvKX1pZihudWxsIT09cls5XSl7Y29uc3QgdD1yWzldO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBuPXRbZV07THkoblsxXSxuLGksbyl9fX19fXJldHVybiBvfWZ1bmN0aW9uIEJ5KHQpe2NvbnN0IGU9eGkoKSxuPU9pKCksbz1qaSgpO1dpKG8rMSk7Y29uc3QgaT1ZeShuLG8pO2lmKHQuZGlydHkmJmZpKGUpPT09KDI9PSgyJmkubWV0YWRhdGEuZmxhZ3MpKSl7aWYobnVsbD09PWkubWF0Y2hlcyl0LnJlc2V0KFtdKTtlbHNle2NvbnN0IGE9aS5jcm9zc2VzTmdUZW1wbGF0ZT9MeShuLGUsbyxbXSk6RnkobixlLGksbyk7dC5yZXNldChhLEpoKSx0Lm5vdGlmeU9uQ2hhbmdlcygpfXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFZ5KHQsZSxuKXtuZ0Rldk1vZGUmJnBuKGUsIkV4cGVjdGluZyBmbGFncyIpO2NvbnN0IG89T2koKTtvLmZpcnN0Q3JlYXRlUGFzcyYmKEd5KG8sbmV3IFR5KHQsZSxuKSwtMSksMj09KDImZSkmJihvLnN0YXRpY1ZpZXdRdWVyaWVzPSEwKSksV3kobyx4aSgpLGUpfWZ1bmN0aW9uIFV5KHQsZSxuLG8pe25nRGV2TW9kZSYmcG4obiwiRXhwZWN0aW5nIGZsYWdzIik7Y29uc3QgaT1PaSgpO2lmKGkuZmlyc3RDcmVhdGVQYXNzKXtjb25zdCBhPXdpKCk7R3koaSxuZXcgVHkoZSxuLG8pLGEuaW5kZXgpLChmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj10LmNvbnRlbnRRdWVyaWVzfHwodC5jb250ZW50UXVlcmllcz1bXSk7ZSE9PShuLmxlbmd0aD9uW24ubGVuZ3RoLTFdOi0xKSYmbi5wdXNoKHQucXVlcmllcy5sZW5ndGgtMSxlKX0pKGksdCksMj09KDImbikmJihpLnN0YXRpY0NvbnRlbnRRdWVyaWVzPSEwKX1XeShpLHhpKCksbil9ZnVuY3Rpb24gankoKXtyZXR1cm4oZnVuY3Rpb24gdChlLG4pe3JldHVybiBuZ0Rldk1vZGUmJnhuKGVbMTldLCJMUXVlcmllcyBzaG91bGQgYmUgZGVmaW5lZCB3aGVuIHRyeWluZyB0byBsb2FkIGEgcXVlcnkiKSxuZ0Rldk1vZGUmJnduKGVbMTldLnF1ZXJpZXMsbiksZVsxOV0ucXVlcmllc1tuXS5xdWVyeUxpc3R9KSh4aSgpLGppKCkpfWZ1bmN0aW9uIFd5KHQsZSxuKXtjb25zdCBvPW5ldyBSeSg0PT0oNCZuKSk7VGQodCxlLG8sby5kZXN0cm95KSxudWxsPT09ZVsxOV0mJihlWzE5XT1uZXcgQXkpLGVbMTldLnF1ZXJpZXMucHVzaChuZXcgRXkobykpfWZ1bmN0aW9uIEd5KHQsZSxuKXtudWxsPT09dC5xdWVyaWVzJiYodC5xdWVyaWVzPW5ldyBOeSksdC5xdWVyaWVzLnRyYWNrKG5ldyB6eShlLG4pKX1mdW5jdGlvbiBZeSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJnhuKHQucXVlcmllcywiVFF1ZXJpZXMgbXVzdCBiZSBkZWZpbmVkIHRvIHJldHJpZXZlIGEgVFF1ZXJ5IiksdC5xdWVyaWVzLmdldEJ5SW5kZXgoZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHF5KHQsZSl7cmV0dXJuIE5iKHQsZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBaeT17Ism1ybVhdHRyaWJ1dGUiOnltLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUxIjpTbSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMiI6RG0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTMiOlJtLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU0IjpFbSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNSI6QW0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTYiOlRtLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU3IjpObSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlOCI6em0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZVYiOkltLCLJtcm1ZGVmaW5lQ29tcG9uZW50IjpzbywiybXJtWRlZmluZURpcmVjdGl2ZSI6aG8sIsm1ybVkZWZpbmVJbmplY3RhYmxlIjpTbiwiybXJtWRlZmluZUluamVjdG9yIjpEbiwiybXJtWRlZmluZU5nTW9kdWxlIjp1bywiybXJtWRlZmluZVBpcGUiOmJvLCLJtcm1ZGlyZWN0aXZlSW5qZWN0IjpmdSwiybXJtWdldEluaGVyaXRlZEZhY3RvcnkiOmphLCLJtcm1aW5qZWN0IjpUciwiybXJtWluamVjdEF0dHJpYnV0ZSI6R2EsIsm1ybVpbnZhbGlkRmFjdG9yeSI6Z3UsIsm1ybVpbnZhbGlkRmFjdG9yeURlcCI6TnIsIsm1ybV0ZW1wbGF0ZVJlZkV4dHJhY3RvciI6cXksIsm1ybVOZ09uQ2hhbmdlc0ZlYXR1cmUiOnFvLCLJtcm1UHJvdmlkZXJzRmVhdHVyZSI6VWgsIsm1ybVDb3B5RGVmaW5pdGlvbkZlYXR1cmUiOmFtLCLJtcm1SW5oZXJpdERlZmluaXRpb25GZWF0dXJlIjpRcCwiybXJtW5leHRDb250ZXh0IjpOdSwiybXJtW5hbWVzcGFjZUhUTUwiOmFhLCLJtcm1bmFtZXNwYWNlTWF0aE1MIjppYSwiybXJtW5hbWVzcGFjZVNWRyI6b2EsIsm1ybVlbmFibGVCaW5kaW5ncyI6TWksIsm1ybVkaXNhYmxlQmluZGluZ3MiOnZpLCLJtcm1ZWxlbWVudFN0YXJ0IjpfdSwiybXJtWVsZW1lbnRFbmQiOkN1LCLJtcm1ZWxlbWVudCI6TXUsIsm1ybVlbGVtZW50Q29udGFpbmVyU3RhcnQiOnZ1LCLJtcm1ZWxlbWVudENvbnRhaW5lckVuZCI6eHUsIsm1ybVlbGVtZW50Q29udGFpbmVyIjpPdSwiybXJtXB1cmVGdW5jdGlvbjAiOm95LCLJtcm1cHVyZUZ1bmN0aW9uMSI6aXksIsm1ybVwdXJlRnVuY3Rpb24yIjpheSwiybXJtXB1cmVGdW5jdGlvbjMiOnJ5LCLJtcm1cHVyZUZ1bmN0aW9uNCI6c3ksIsm1ybVwdXJlRnVuY3Rpb241IjpseSwiybXJtXB1cmVGdW5jdGlvbjYiOmN5LCLJtcm1cHVyZUZ1bmN0aW9uNyI6ZHksIsm1ybVwdXJlRnVuY3Rpb244IjpweSwiybXJtXB1cmVGdW5jdGlvblYiOm15LCLJtcm1Z2V0Q3VycmVudFZpZXciOlB1LCLJtcm1cmVzdG9yZVZpZXciOlBpLCLJtcm1bGlzdGVuZXIiOkR1LCLJtcm1cHJvamVjdGlvbiI6SHUsIsm1ybVzeW50aGV0aWNIb3N0UHJvcGVydHkiOmRnLCLJtcm1c3ludGhldGljSG9zdExpc3RlbmVyIjpSdSwiybXJtXBpcGVCaW5kMSI6Q3ksIsm1ybVwaXBlQmluZDIiOk15LCLJtcm1cGlwZUJpbmQzIjp2eSwiybXJtXBpcGVCaW5kNCI6eHksIsm1ybVwaXBlQmluZFYiOk95LCLJtcm1cHJvamVjdGlvbkRlZiI6SXUsIsm1ybVob3N0UHJvcGVydHkiOmNnLCLJtcm1cHJvcGVydHkiOmh1LCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZSI6RnUsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMSI6THUsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMiI6QnUsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMyI6VnUsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNCI6VXUsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNSI6anUsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNiI6V3UsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNyI6R3UsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlOCI6WXUsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlViI6cXUsIsm1ybVwaXBlIjpfeSwiybXJtXF1ZXJ5UmVmcmVzaCI6QnksIsm1ybV2aWV3UXVlcnkiOlZ5LCLJtcm1bG9hZFF1ZXJ5IjpqeSwiybXJtWNvbnRlbnRRdWVyeSI6VXksIsm1ybVyZWZlcmVuY2UiOkZtLCLJtcm1Y2xhc3NNYXAiOm1mLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTEiOklmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTIiOkhmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTMiOkZmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTQiOkxmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTUiOkJmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTYiOlZmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTciOlVmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZTgiOmpmLCLJtcm1Y2xhc3NNYXBJbnRlcnBvbGF0ZVYiOldmLCLJtcm1c3R5bGVNYXAiOmRmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTEiOkdmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTIiOllmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTMiOnFmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTQiOlpmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTUiOlhmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTYiOktmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTciOkpmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTgiOlFmLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZVYiOiRmLCLJtcm1c3R5bGVQcm9wIjpsZiwiybXJtXN0eWxlUHJvcEludGVycG9sYXRlMSI6dGcsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTIiOmVnLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGUzIjpuZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlNCI6b2csIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTUiOmlnLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU2IjphZywiybXJtXN0eWxlUHJvcEludGVycG9sYXRlNyI6cmcsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTgiOnNnLCLJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGVWIjpsZywiybXJtWNsYXNzUHJvcCI6Y2YsIsm1ybVhZHZhbmNlIjpEYywiybXJtXRlbXBsYXRlIjpIbSwiybXJtXRleHQiOlBmLCLJtcm1dGV4dEludGVycG9sYXRlIjp3ZiwiybXJtXRleHRJbnRlcnBvbGF0ZTEiOmtmLCLJtcm1dGV4dEludGVycG9sYXRlMiI6U2YsIsm1ybV0ZXh0SW50ZXJwb2xhdGUzIjpEZiwiybXJtXRleHRJbnRlcnBvbGF0ZTQiOlJmLCLJtcm1dGV4dEludGVycG9sYXRlNSI6RWYsIsm1ybV0ZXh0SW50ZXJwb2xhdGU2IjpBZiwiybXJtXRleHRJbnRlcnBvbGF0ZTciOlRmLCLJtcm1dGV4dEludGVycG9sYXRlOCI6TmYsIsm1ybV0ZXh0SW50ZXJwb2xhdGVWIjp6ZiwiybXJtWkxOG4iOlJoLCLJtcm1aTE4bkF0dHJpYnV0ZXMiOkVoLCLJtcm1aTE4bkV4cCI6QWgsIsm1ybVpMThuU3RhcnQiOlNoLCLJtcm1aTE4bkVuZCI6RGgsIsm1ybVpMThuQXBwbHkiOlRoLCLJtcm1aTE4blBvc3Rwcm9jZXNzIjpOaCwiybXJtXJlc29sdmVXaW5kb3ciOk9sLCLJtcm1cmVzb2x2ZURvY3VtZW50IjpQbCwiybXJtXJlc29sdmVCb2R5Ijp3bCwiybXJtXNldENvbXBvbmVudFNjb3BlIjpsbywiybXJtXNldE5nTW9kdWxlU2NvcGUiOmZvLCLJtcm1c2FuaXRpemVIdG1sIjpxcywiybXJtXNhbml0aXplU3R5bGUiOlpzLCLJtcm1c2FuaXRpemVSZXNvdXJjZVVybCI6S3MsIsm1ybVzYW5pdGl6ZVNjcmlwdCI6SnMsIsm1ybVzYW5pdGl6ZVVybCI6WHMsIsm1ybVzYW5pdGl6ZVVybE9yUmVzb3VyY2VVcmwiOnRsLCLJtcm1dHJ1c3RDb25zdGFudEh0bWwiOlFzLCLJtcm1dHJ1c3RDb25zdGFudFJlc291cmNlVXJsIjokcyxmb3J3YXJkUmVmOiRlLHJlc29sdmVGb3J3YXJkUmVmOnRufTtsZXQgWHk9bnVsbDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEt5PVtdO2xldCBKeT0hMTtmdW5jdGlvbiBReSh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LmV2ZXJ5KFF5KTohIXRuKHQpfWZ1bmN0aW9uICR5KHQsZSxuKXtpZihvXy5nZXQodCkpcmV0dXJuO2xldCBvO2lmKG9fLnNldCh0LCEwKSx0PXRuKHQpLG4pe2lmKG89TW8odCksIW8pdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlICcke3QubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7bi5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCl9ZWxzZSBvPU1vKHQsITApO2NvbnN0IGk9W10sYT1TbChvLmRlY2xhcmF0aW9ucykscj1TbChvLmltcG9ydHMpO3ByKHIpLm1hcCh0XykuZm9yRWFjaCgoZT0+e2goZSx0KSwkeShlLCExLHQpfSkpO2NvbnN0IHM9U2woby5leHBvcnRzKTthLmZvckVhY2goKGZ1bmN0aW9uIGwoZSl7ZT10bihlKTt5byhlKXx8X28oZSl8fENvKGUpfHxpLnB1c2goYFVuZXhwZWN0ZWQgdmFsdWUgJyR7c24oZSl9JyBkZWNsYXJlZCBieSB0aGUgbW9kdWxlICcke3NuKHQpfScuIFBsZWFzZSBhZGQgYSBAUGlwZS9ARGlyZWN0aXZlL0BDb21wb25lbnQgYW5ub3RhdGlvbi5gKX0pKSxhLmZvckVhY2goKGZ1bmN0aW9uIGModCl7Y29uc3QgZT1fbyh0PXRuKHQpKTsheW8odCkmJmUmJjA9PWUuc2VsZWN0b3JzLmxlbmd0aCYmaS5wdXNoKGBEaXJlY3RpdmUgJHtzbih0KX0gaGFzIG5vIHNlbGVjdG9yLCBwbGVhc2UgYWRkIGl0IWApfSkpO2NvbnN0IGQ9Wy4uLmEubWFwKHRuKSwuLi5wcihyLm1hcChpXykpLm1hcCh0bildO3MuZm9yRWFjaCgoZnVuY3Rpb24gcChlKXtjb25zdCBuPSh5byhlPXRuKGUpKT8iY29tcG9uZW50IjpfbyhlKSYmImRpcmVjdGl2ZSIpfHxDbyhlKSYmInBpcGUiO24mJi0xPT09ZC5sYXN0SW5kZXhPZihlKSYmaS5wdXNoKGBDYW4ndCBleHBvcnQgJHtufSAke3NuKGUpfSBmcm9tICR7c24odCl9IGFzIGl0IHdhcyBuZWl0aGVyIGRlY2xhcmVkIG5vciBpbXBvcnRlZCFgKX0pKSxhLmZvckVhY2goKG49PihmdW5jdGlvbiBvKGUsbil7ZT10bihlKTtjb25zdCBvPW5fLmdldChlKTtpZihvJiZvIT09dCl7aWYoIW4pe2NvbnN0IG49W28sdF0ubWFwKHNuKS5zb3J0KCk7aS5wdXNoKGBUeXBlICR7c24oZSl9IGlzIHBhcnQgb2YgdGhlIGRlY2xhcmF0aW9ucyBvZiAyIG1vZHVsZXM6ICR7blswXX0gYW5kICR7blsxXX0hIFBsZWFzZSBjb25zaWRlciBtb3ZpbmcgJHtzbihlKX0gdG8gYSBoaWdoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyAke25bMF19IGFuZCAke25bMV19LiBZb3UgY2FuIGFsc28gY3JlYXRlIGEgbmV3IE5nTW9kdWxlIHRoYXQgZXhwb3J0cyBhbmQgaW5jbHVkZXMgJHtzbihlKX0gdGhlbiBpbXBvcnQgdGhhdCBOZ01vZHVsZSBpbiAke25bMF19IGFuZCAke25bMV19LmApfX1lbHNlIG5fLnNldChlLHQpfSkobixlKSkpLGEuZm9yRWFjaCgoZnVuY3Rpb24gbSh0KXtpZih5byh0PXRuKHQpKSl7Y29uc3QgZT1lXyh0LCJDb21wb25lbnQiKTtlJiZlLmVudHJ5Q29tcG9uZW50cyYmbXIoZS5lbnRyeUNvbXBvbmVudHMsZyl9fSkpO2NvbnN0IHU9ZV8odCwiTmdNb2R1bGUiKTtpZih1JiYodS5pbXBvcnRzJiZwcih1LmltcG9ydHMpLm1hcCh0XykuZm9yRWFjaCgoZT0+e2goZSx0KSwkeShlLCExLHQpfSkpLHUuYm9vdHN0cmFwJiZtcih1LmJvb3RzdHJhcCwoZnVuY3Rpb24gZih0KXt5byh0PXRuKHQpKXx8aS5wdXNoKGAke3NuKHQpfSBjYW5ub3QgYmUgdXNlZCBhcyBhbiBlbnRyeSBjb21wb25lbnQuYCl9KSksdS5ib290c3RyYXAmJm1yKHUuYm9vdHN0cmFwLGcpLHUuZW50cnlDb21wb25lbnRzJiZtcih1LmVudHJ5Q29tcG9uZW50cyxnKSksaS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGkuam9pbigiXG4iKSk7ZnVuY3Rpb24gZyh0KXt0PXRuKHQpO25fLmdldCh0KXx8aS5wdXNoKGBDb21wb25lbnQgJHtzbih0KX0gaXMgbm90IHBhcnQgb2YgYW55IE5nTW9kdWxlIG9yIHRoZSBtb2R1bGUgaGFzIG5vdCBiZWVuIGltcG9ydGVkIGludG8geW91ciBtb2R1bGUuYCl9ZnVuY3Rpb24gaCh0LGUpe2lmKHlvKHQ9dG4odCkpfHxfbyh0KSl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGlyZWN0aXZlICcke3QubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7ZS5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCk7aWYoQ28odCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHBpcGUgJyR7dC5uYW1lfScgaW1wb3J0ZWQgYnkgdGhlIG1vZHVsZSAnJHtlLm5hbWV9Jy4gUGxlYXNlIGFkZCBhbiBATmdNb2R1bGUgYW5ub3RhdGlvbi5gKX19ZnVuY3Rpb24gdF8odCl7cmV0dXJuKHQ9dG4odCkpLm5nTW9kdWxlfHx0fWZ1bmN0aW9uIGVfKHQsZSl7bGV0IG49bnVsbDtyZXR1cm4gbyh0Ll9fYW5ub3RhdGlvbnNfXyksbyh0LmRlY29yYXRvcnMpLG47ZnVuY3Rpb24gbyh0KXt0JiZ0LmZvckVhY2goaSl9ZnVuY3Rpb24gaSh0KXtpZighbil7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLm5nTWV0YWRhdGFOYW1lPT1lKW49dDtlbHNlIGlmKHQudHlwZSl7T2JqZWN0LmdldFByb3RvdHlwZU9mKHQudHlwZSkubmdNZXRhZGF0YU5hbWU9PWUmJihuPXQuYXJnc1swXSl9fX19bGV0IG5fPW5ldyBXZWFrTWFwLG9fPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGlfKHQpe3JldHVyblsuLi5wcihTbChNbyh0PXRuKHQpLCEwKS5leHBvcnRzKS5tYXAoKHQ9Pk1vKHQpPygkeSh0LCExKSxpXyh0KSk6dCkpKV19ZnVuY3Rpb24gYV8odCxlKXtjb25zdCBuPXByKGUuZGVjbGFyYXRpb25zfHxRbiksbz1zXyh0KTtuLmZvckVhY2goKGU9PntpZihlLmhhc093blByb3BlcnR5KCRuKSl7cl8oeW8oZSksbyl9ZWxzZSBlLmhhc093blByb3BlcnR5KHRvKXx8ZS5oYXNPd25Qcm9wZXJ0eShlbyl8fChlLm5nU2VsZWN0b3JTY29wZT10KX0pKX1mdW5jdGlvbiByXyh0LGUpe3QuZGlyZWN0aXZlRGVmcz0oKT0+QXJyYXkuZnJvbShlLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMpLm1hcCgodD0+dC5oYXNPd25Qcm9wZXJ0eSgkbik/eW8odCk6X28odCkpKS5maWx0ZXIoKHQ9PiEhdCkpLHQucGlwZURlZnM9KCk9PkFycmF5LmZyb20oZS5jb21waWxhdGlvbi5waXBlcykubWFwKCh0PT5Dbyh0KSkpLHQuc2NoZW1hcz1lLnNjaGVtYXMsdC50Vmlldz1udWxsfWZ1bmN0aW9uIHNfKHQpe2lmKCFjXyh0KSl0aHJvdyBuZXcgRXJyb3IoYCR7dC5uYW1lfSBkb2VzIG5vdCBoYXZlIGEgbW9kdWxlIGRlZiAoybVtb2QgcHJvcGVydHkpYCk7Y29uc3QgZT1Nbyh0KTtpZihudWxsIT09ZS50cmFuc2l0aXZlQ29tcGlsZVNjb3BlcylyZXR1cm4gZS50cmFuc2l0aXZlQ29tcGlsZVNjb3Blcztjb25zdCBuPXtzY2hlbWFzOmUuc2NoZW1hc3x8bnVsbCxjb21waWxhdGlvbjp7ZGlyZWN0aXZlczpuZXcgU2V0LHBpcGVzOm5ldyBTZXR9LGV4cG9ydGVkOntkaXJlY3RpdmVzOm5ldyBTZXQscGlwZXM6bmV3IFNldH19O3JldHVybiBTbChlLmltcG9ydHMpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQ7aWYoIWNfKGUpKXRocm93IG5ldyBFcnJvcihgSW1wb3J0aW5nICR7ZS5uYW1lfSB3aGljaCBkb2VzIG5vdCBoYXZlIGEgybVtb2QgcHJvcGVydHlgKTtjb25zdCBvPXNfKGUpO28uZXhwb3J0ZWQuZGlyZWN0aXZlcy5mb3JFYWNoKCh0PT5uLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMuYWRkKHQpKSksby5leHBvcnRlZC5waXBlcy5mb3JFYWNoKCh0PT5uLmNvbXBpbGF0aW9uLnBpcGVzLmFkZCh0KSkpfSkpLFNsKGUuZGVjbGFyYXRpb25zKS5mb3JFYWNoKCh0PT57Q28odCk/bi5jb21waWxhdGlvbi5waXBlcy5hZGQodCk6bi5jb21waWxhdGlvbi5kaXJlY3RpdmVzLmFkZCh0KX0pKSxTbChlLmV4cG9ydHMpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQ7aWYoY18oZSkpe2NvbnN0IHQ9c18oZSk7dC5leHBvcnRlZC5kaXJlY3RpdmVzLmZvckVhY2goKHQ9PntuLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMuYWRkKHQpLG4uZXhwb3J0ZWQuZGlyZWN0aXZlcy5hZGQodCl9KSksdC5leHBvcnRlZC5waXBlcy5mb3JFYWNoKCh0PT57bi5jb21waWxhdGlvbi5waXBlcy5hZGQodCksbi5leHBvcnRlZC5waXBlcy5hZGQodCl9KSl9ZWxzZSBDbyhlKT9uLmV4cG9ydGVkLnBpcGVzLmFkZChlKTpuLmV4cG9ydGVkLmRpcmVjdGl2ZXMuYWRkKGUpfSkpLGUudHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM9bixufWZ1bmN0aW9uIGxfKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiB2b2lkIDAhPT10Lm5nTW9kdWxlfSkodCk/dC5uZ01vZHVsZTp0fWZ1bmN0aW9uIGNfKHQpe3JldHVybiEhTW8odCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBkXz0wO2Z1bmN0aW9uIHBfKHQsZSl7bGV0IG49bnVsbDt1Xyh0LGV8fHt9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCx0byx7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89bV8odCxlfHx7fSksaT1scih7dXNhZ2U6MCxraW5kOiJkaXJlY3RpdmUiLHR5cGU6dH0pO249aS5jb21waWxlRGlyZWN0aXZlKFp5LG8uc291cmNlTWFwVXJsLG8ubWV0YWRhdGEpfXJldHVybiBufSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KX1mdW5jdGlvbiBtXyh0LGUpe2NvbnN0IG49dCYmdC5uYW1lLG89YG5nOi8vLyR7bn0vybVkaXIuanNgLGk9bHIoe3VzYWdlOjAsa2luZDoiZGlyZWN0aXZlIix0eXBlOnR9KSxhPWdfKHQsZSk7cmV0dXJuIGEudHlwZVNvdXJjZVNwYW49aS5jcmVhdGVQYXJzZVNvdXJjZVNwYW4oIkRpcmVjdGl2ZSIsbixvKSxhLnVzZXNJbmhlcml0YW5jZSYmaF8odCkse21ldGFkYXRhOmEsc291cmNlTWFwVXJsOm99fWZ1bmN0aW9uIHVfKHQsZSl7bGV0IG49bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpbyx7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89bV8odCxlKSxpPWxyKHt1c2FnZTowLGtpbmQ6ImRpcmVjdGl2ZSIsdHlwZTp0fSk7bj1pLmNvbXBpbGVGYWN0b3J5KFp5LGBuZzovLy8ke3QubmFtZX0vybVmYWMuanNgLHtuYW1lOm8ubWV0YWRhdGEubmFtZSx0eXBlOm8ubWV0YWRhdGEudHlwZSx0eXBlQXJndW1lbnRDb3VudDowLGRlcHM6WXIodCksdGFyZ2V0OmkuRmFjdG9yeVRhcmdldC5EaXJlY3RpdmV9KX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9ZnVuY3Rpb24gZl8odCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSk9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIGdfKHQsZSl7Y29uc3Qgbj1HcigpLG89bi5vd25Qcm9wTWV0YWRhdGEodCk7cmV0dXJue25hbWU6dC5uYW1lLHR5cGU6dCxzZWxlY3Rvcjp2b2lkIDAhPT1lLnNlbGVjdG9yP2Uuc2VsZWN0b3I6bnVsbCxob3N0OmUuaG9zdHx8Sm4scHJvcE1ldGFkYXRhOm8saW5wdXRzOmUuaW5wdXRzfHxRbixvdXRwdXRzOmUub3V0cHV0c3x8UW4scXVlcmllczpfXyh0LG8sQ18pLGxpZmVjeWNsZTp7dXNlc09uQ2hhbmdlczpuLmhhc0xpZmVjeWNsZUhvb2sodCwibmdPbkNoYW5nZXMiKX0sdHlwZVNvdXJjZVNwYW46bnVsbCx1c2VzSW5oZXJpdGFuY2U6IWZfKHQpLGV4cG9ydEFzOihpPWUuZXhwb3J0QXMsdm9pZCAwPT09aT9udWxsOnhfKGkpKSxwcm92aWRlcnM6ZS5wcm92aWRlcnN8fG51bGwsdmlld1F1ZXJpZXM6X18odCxvLE1fKX07dmFyIGl9ZnVuY3Rpb24gaF8odCl7Y29uc3QgZT1PYmplY3QucHJvdG90eXBlO2xldCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3I7Zm9yKDtuJiZuIT09ZTspX28obil8fHlvKG4pfHwhUF8obil8fHBfKG4sbnVsbCksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9ZnVuY3Rpb24gYl8odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3hfKHQpOnRuKHQpfWZ1bmN0aW9uIHlfKHQsZSl7cmV0dXJue3Byb3BlcnR5TmFtZTp0LHByZWRpY2F0ZTpiXyhlLnNlbGVjdG9yKSxkZXNjZW5kYW50czplLmRlc2NlbmRhbnRzLGZpcnN0OmUuZmlyc3QscmVhZDplLnJlYWQ/ZS5yZWFkOm51bGwsc3RhdGljOiEhZS5zdGF0aWMsZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6ISFlLmVtaXREaXN0aW5jdENoYW5nZXNPbmx5fX1mdW5jdGlvbiBfXyh0LGUsbil7Y29uc3Qgbz1bXTtmb3IoY29uc3QgaSBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkoaSkpe2NvbnN0IGE9ZVtpXTthLmZvckVhY2goKGU9PntpZihuKGUpKXtpZighZS5zZWxlY3Rvcil0aHJvdyBuZXcgRXJyb3IoYENhbid0IGNvbnN0cnVjdCBhIHF1ZXJ5IGZvciB0aGUgcHJvcGVydHkgIiR7aX0iIG9mICIke3NuKHQpfSIgc2luY2UgdGhlIHF1ZXJ5IHNlbGVjdG9yIHdhc24ndCBkZWZpbmVkLmApO2lmKGEuc29tZSh2XykpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY29tYmluZSBASW5wdXQgZGVjb3JhdG9ycyB3aXRoIHF1ZXJ5IGRlY29yYXRvcnMiKTtvLnB1c2goeV8oaSxlKSl9fSkpfXJldHVybiBvfWZ1bmN0aW9uIENfKHQpe2NvbnN0IGU9dC5uZ01ldGFkYXRhTmFtZTtyZXR1cm4iQ29udGVudENoaWxkIj09PWV8fCJDb250ZW50Q2hpbGRyZW4iPT09ZX1mdW5jdGlvbiBNXyh0KXtjb25zdCBlPXQubmdNZXRhZGF0YU5hbWU7cmV0dXJuIlZpZXdDaGlsZCI9PT1lfHwiVmlld0NoaWxkcmVuIj09PWV9ZnVuY3Rpb24gdl8odCl7cmV0dXJuIklucHV0Ij09PXQubmdNZXRhZGF0YU5hbWV9ZnVuY3Rpb24geF8odCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAoKHQ9PnQudHJpbSgpKSl9Y29uc3QgT189WyJuZ09uQ2hhbmdlcyIsIm5nT25Jbml0IiwibmdPbkRlc3Ryb3kiLCJuZ0RvQ2hlY2siLCJuZ0FmdGVyVmlld0luaXQiLCJuZ0FmdGVyVmlld0NoZWNrZWQiLCJuZ0FmdGVyQ29udGVudEluaXQiLCJuZ0FmdGVyQ29udGVudENoZWNrZWQiXTtmdW5jdGlvbiBQXyh0KXtjb25zdCBlPUdyKCk7aWYoT18uc29tZSgobj0+ZS5oYXNMaWZlY3ljbGVIb29rKHQsbikpKSlyZXR1cm4hMDtjb25zdCBuPWUucHJvcE1ldGFkYXRhKHQpO2Zvcihjb25zdCB0IGluIG4pe2NvbnN0IGU9blt0XTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLG89bi5uZ01ldGFkYXRhTmFtZTtpZih2XyhuKXx8Q18obil8fE1fKG4pfHwiT3V0cHV0Ij09PW98fCJIb3N0QmluZGluZyI9PT1vfHwiSG9zdExpc3RlbmVyIj09PW8pcmV0dXJuITB9fXJldHVybiExfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB3Xyh0LGUpe3JldHVybnt0eXBlOnQsbmFtZTp0Lm5hbWUscGlwZU5hbWU6ZS5uYW1lLHB1cmU6dm9pZCAwPT09ZS5wdXJlfHxlLnB1cmV9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBrXz1YYSgiRGlyZWN0aXZlIiwoKHQ9e30pPT50KSx2b2lkIDAsdm9pZCAwLCgodCxlKT0+SV8odCxlKSkpLFNfPVhhKCJDb21wb25lbnQiLCgodD17fSk9Pk9iamVjdC5hc3NpZ24oe2NoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0fSx0KSksa18sdm9pZCAwLCgodCxlKT0+Tl8odCxlKSkpLERfPVhhKCJQaXBlIiwodD0+T2JqZWN0LmFzc2lnbih7cHVyZTohMH0sdCkpLHZvaWQgMCx2b2lkIDAsKCh0LGUpPT5IXyh0LGUpKSksUl89UWEoIklucHV0IiwodD0+KHtiaW5kaW5nUHJvcGVydHlOYW1lOnR9KSkpLEVfPVFhKCJPdXRwdXQiLCh0PT4oe2JpbmRpbmdQcm9wZXJ0eU5hbWU6dH0pKSksQV89UWEoIkhvc3RCaW5kaW5nIiwodD0+KHtob3N0UHJvcGVydHlOYW1lOnR9KSkpLFRfPVFhKCJIb3N0TGlzdGVuZXIiLCgodCxlKT0+KHtldmVudE5hbWU6dCxhcmdzOmV9KSkpLE5fPWZ1bmN0aW9uIHpfKHQsZSl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZLbigpO2xldCBuPW51bGw7IShmdW5jdGlvbiBvKHQsZSl7SnIoZSkmJihYci5zZXQodCxlKSxLci5hZGQodCkpfSkodCxlKSx1Xyh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCRuLHtnZXQ6KCk9PntpZihudWxsPT09bil7Y29uc3Qgbz1scih7dXNhZ2U6MCxraW5kOiJjb21wb25lbnQiLHR5cGU6dH0pO2lmKEpyKGUpKXtjb25zdCBuPVtgQ29tcG9uZW50ICcke3QubmFtZX0nIGlzIG5vdCByZXNvbHZlZDpgXTt0aHJvdyBlLnRlbXBsYXRlVXJsJiZuLnB1c2goYCAtIHRlbXBsYXRlVXJsOiAke2UudGVtcGxhdGVVcmx9YCksZS5zdHlsZVVybHMmJmUuc3R5bGVVcmxzLmxlbmd0aCYmbi5wdXNoKGAgLSBzdHlsZVVybHM6ICR7SlNPTi5zdHJpbmdpZnkoZS5zdHlsZVVybHMpfWApLG4ucHVzaCgiRGlkIHlvdSBydW4gYW5kIHdhaXQgZm9yICdyZXNvbHZlQ29tcG9uZW50UmVzb3VyY2VzKCknPyIpLG5ldyBFcnJvcihuLmpvaW4oIlxuIikpfWNvbnN0IGk9KGZ1bmN0aW9uIG8oKXtyZXR1cm4gWHl9KSgpO2xldCBhPWUucHJlc2VydmVXaGl0ZXNwYWNlczt2b2lkIDA9PT1hJiYoYT1udWxsIT09aSYmdm9pZCAwIT09aS5wcmVzZXJ2ZVdoaXRlc3BhY2VzJiZpLnByZXNlcnZlV2hpdGVzcGFjZXMpO2xldCByPWUuZW5jYXBzdWxhdGlvbjt2b2lkIDA9PT1yJiYocj1udWxsIT09aSYmdm9pZCAwIT09aS5kZWZhdWx0RW5jYXBzdWxhdGlvbj9pLmRlZmF1bHRFbmNhcHN1bGF0aW9uOlduLkVtdWxhdGVkKTtjb25zdCBzPWUudGVtcGxhdGVVcmx8fGBuZzovLy8ke3QubmFtZX0vdGVtcGxhdGUuaHRtbGAsbD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZ18odCxlKSkse3R5cGVTb3VyY2VTcGFuOm8uY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCJDb21wb25lbnQiLHQubmFtZSxzKSx0ZW1wbGF0ZTplLnRlbXBsYXRlfHwiIixwcmVzZXJ2ZVdoaXRlc3BhY2VzOmEsc3R5bGVzOmUuc3R5bGVzfHxRbixhbmltYXRpb25zOmUuYW5pbWF0aW9ucyxkaXJlY3RpdmVzOltdLGNoYW5nZURldGVjdGlvbjplLmNoYW5nZURldGVjdGlvbixwaXBlczpuZXcgTWFwLGVuY2Fwc3VsYXRpb246cixpbnRlcnBvbGF0aW9uOmUuaW50ZXJwb2xhdGlvbix2aWV3UHJvdmlkZXJzOmUudmlld1Byb3ZpZGVyc3x8bnVsbH0pO2RfKys7dHJ5e2wudXNlc0luaGVyaXRhbmNlJiZoXyh0KSxuPW8uY29tcGlsZUNvbXBvbmVudChaeSxzLGwpfWZpbmFsbHl7ZF8tLX1pZigwPT09ZF8mJihmdW5jdGlvbiBpKCl7aWYoIUp5KXtKeT0hMDt0cnl7Zm9yKGxldCB0PUt5Lmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdHttb2R1bGVUeXBlOmUsbmdNb2R1bGU6bn09S3lbdF07bi5kZWNsYXJhdGlvbnMmJm4uZGVjbGFyYXRpb25zLmV2ZXJ5KFF5KSYmKEt5LnNwbGljZSh0LDEpLGFfKGUsbikpfX1maW5hbGx5e0p5PSExfX19KSgpLChmdW5jdGlvbiBhKHQpe3JldHVybiB2b2lkIDAhPT10Lm5nU2VsZWN0b3JTY29wZX0pKHQpKXtjb25zdCBlPXNfKHQubmdTZWxlY3RvclNjb3BlKTtyXyhuLGUpfX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9LElfPXBfLEhfPWZ1bmN0aW9uIEZfKHQsZSl7bGV0IG49bnVsbCxvPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaW8se2dldDooKT0+e2lmKG51bGw9PT1vKXtjb25zdCBuPXdfKHQsZSksaT1scih7dXNhZ2U6MCxraW5kOiJwaXBlIix0eXBlOm4udHlwZX0pO289aS5jb21waWxlRmFjdG9yeShaeSxgbmc6Ly8vJHtuLm5hbWV9L8m1ZmFjLmpzYCx7bmFtZTpuLm5hbWUsdHlwZTpuLnR5cGUsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOllyKHQpLHRhcmdldDppLkZhY3RvcnlUYXJnZXQuUGlwZX0pfXJldHVybiBvfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlbyx7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89d18odCxlKSxpPWxyKHt1c2FnZTowLGtpbmQ6InBpcGUiLHR5cGU6by50eXBlfSk7bj1pLmNvbXBpbGVQaXBlKFp5LGBuZzovLy8ke28ubmFtZX0vybVwaXBlLmpzYCxvKX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9LExfPVhhKCJOZ01vZHVsZSIsKHQ9PnQpLHZvaWQgMCx2b2lkIDAsKCh0LGUpPT5CXyh0LGUpKSksQl89ZnVuY3Rpb24gVl8odCxlPXt9KXshKGZ1bmN0aW9uIG4odCxlLG89ITEpe25nRGV2TW9kZSYmeG4odCwiUmVxdWlyZWQgdmFsdWUgbW9kdWxlVHlwZSIpLG5nRGV2TW9kZSYmeG4oZSwiUmVxdWlyZWQgdmFsdWUgbmdNb2R1bGUiKTtjb25zdCBpPXByKGUuZGVjbGFyYXRpb25zfHxRbik7bGV0IGE9bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxubyx7Y29uZmlndXJhYmxlOiEwLGdldDooKT0+e2lmKG51bGw9PT1hKXtpZihuZ0Rldk1vZGUmJmUuaW1wb3J0cyYmZS5pbXBvcnRzLmluZGV4T2YodCk+LTEpdGhyb3cgbmV3IEVycm9yKGAnJHtzbih0KX0nIG1vZHVsZSBjYW4ndCBpbXBvcnQgaXRzZWxmYCk7Y29uc3Qgbj1scih7dXNhZ2U6MCxraW5kOiJOZ01vZHVsZSIsdHlwZTp0fSk7YT1uLmNvbXBpbGVOZ01vZHVsZShaeSxgbmc6Ly8vJHt0Lm5hbWV9L8m1bW9kLmpzYCx7dHlwZTp0LGJvb3RzdHJhcDpwcihlLmJvb3RzdHJhcHx8UW4pLm1hcCh0biksZGVjbGFyYXRpb25zOmkubWFwKHRuKSxpbXBvcnRzOnByKGUuaW1wb3J0c3x8UW4pLm1hcCh0bikubWFwKGxfKSxleHBvcnRzOnByKGUuZXhwb3J0c3x8UW4pLm1hcCh0bikubWFwKGxfKSxzY2hlbWFzOmUuc2NoZW1hcz9wcihlLnNjaGVtYXMpOm51bGwsaWQ6ZS5pZHx8bnVsbH0pLGEuc2NoZW1hc3x8KGEuc2NoZW1hcz1bXSl9cmV0dXJuIGF9fSk7bGV0IHI9bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpbyx7Z2V0OigpPT57aWYobnVsbD09PXIpe2NvbnN0IGU9bHIoe3VzYWdlOjAsa2luZDoiTmdNb2R1bGUiLHR5cGU6dH0pO3I9ZS5jb21waWxlRmFjdG9yeShaeSxgbmc6Ly8vJHt0Lm5hbWV9L8m1ZmFjLmpzYCx7bmFtZTp0Lm5hbWUsdHlwZTp0LGRlcHM6WXIodCksdGFyZ2V0OmUuRmFjdG9yeVRhcmdldC5OZ01vZHVsZSx0eXBlQXJndW1lbnRDb3VudDowfSl9cmV0dXJuIHJ9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pO2xldCBzPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsTm4se2dldDooKT0+e2lmKG51bGw9PT1zKXtuZ0Rldk1vZGUmJiR5KHQsbyk7Y29uc3Qgbj17bmFtZTp0Lm5hbWUsdHlwZTp0LHByb3ZpZGVyczplLnByb3ZpZGVyc3x8UW4saW1wb3J0czpbKGUuaW1wb3J0c3x8UW4pLm1hcCh0biksKGUuZXhwb3J0c3x8UW4pLm1hcCh0bildfSxpPWxyKHt1c2FnZTowLGtpbmQ6Ik5nTW9kdWxlIix0eXBlOnR9KTtzPWkuY29tcGlsZUluamVjdG9yKFp5LGBuZzovLy8ke3QubmFtZX0vybVpbmouanNgLG4pfXJldHVybiBzfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KX0pKHQsZSksKGZ1bmN0aW9uIG8odCxlKXtLeS5wdXNoKHttb2R1bGVUeXBlOnQsbmdNb2R1bGU6ZX0pfSkodCxlKX0sVV89bmV3IGVyKCJBcHBsaWNhdGlvbiBJbml0aWFsaXplciIpO2NsYXNzIGpfe2NvbnN0cnVjdG9yKHQpe3RoaXMuYXBwSW5pdHM9dCx0aGlzLnJlc29sdmU9WWgsdGhpcy5yZWplY3Q9WWgsdGhpcy5pbml0aWFsaXplZD0hMSx0aGlzLmRvbmU9ITEsdGhpcy5kb25lUHJvbWlzZT1uZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLnJlc29sdmU9dCx0aGlzLnJlamVjdD1lfSkpfXJ1bkluaXRpYWxpemVycygpe2lmKHRoaXMuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IHQ9W10sZT0oKT0+e3RoaXMuZG9uZT0hMCx0aGlzLnJlc29sdmUoKX07aWYodGhpcy5hcHBJbml0cylmb3IobGV0IGU9MDtlPHRoaXMuYXBwSW5pdHMubGVuZ3RoO2UrKyl7Y29uc3Qgbj10aGlzLmFwcEluaXRzW2VdKCk7aWYod3UobikpdC5wdXNoKG4pO2Vsc2UgaWYoU3Uobikpe2NvbnN0IGU9bmV3IFByb21pc2UoKCh0LGUpPT57bi5zdWJzY3JpYmUoe2NvbXBsZXRlOnQsZXJyb3I6ZX0pfSkpO3QucHVzaChlKX19UHJvbWlzZS5hbGwodCkudGhlbigoKCk9PntlKCl9KSkuY2F0Y2goKHQ9Pnt0aGlzLnJlamVjdCh0KX0pKSwwPT09dC5sZW5ndGgmJmUoKSx0aGlzLmluaXRpYWxpemVkPSEwfX1qXy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8al8pKFRyKFVfLDgpKX0sal8uybVwcm92PVNuKHt0b2tlbjpqXyxmYWN0b3J5OmpfLsm1ZmFjfSksal8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVV9dfSx7dHlwZTpCcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqXyxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1VfXX0se3R5cGU6QnJ9XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBXXz1uZXcgZXIoIkFwcElkIik7Y29uc3QgR189e3Byb3ZpZGU6V18sdXNlRmFjdG9yeTpmdW5jdGlvbiBZXygpe3JldHVybmAke3FfKCl9JHtxXygpfSR7cV8oKX1gfSxkZXBzOltdfTtmdW5jdGlvbiBxXygpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3K01hdGguZmxvb3IoMjUqTWF0aC5yYW5kb20oKSkpfWNvbnN0IFpfPW5ldyBlcigiUGxhdGZvcm0gSW5pdGlhbGl6ZXIiKSxYXz1uZXcgZXIoIlBsYXRmb3JtIElEIiksS189bmV3IGVyKCJhcHBCb290c3RyYXBMaXN0ZW5lciIpO25ldyBlcigiQXBwbGljYXRpb24gUGFja2FnZXMgUm9vdCBVUkwiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEpfe2xvZyh0KXtjb25zb2xlLmxvZyh0KX13YXJuKHQpe2NvbnNvbGUud2Fybih0KX19Sl8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpfKX0sSl8uybVwcm92PVNuKHt0b2tlbjpKXyxmYWN0b3J5OkpfLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKXyxbe3R5cGU6am19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgUV89bmV3IGVyKCJMb2NhbGVJZCIpLCRfPW5ldyBlcigiRGVmYXVsdEN1cnJlbmN5Q29kZSIpO3ZhciB0QztuZXcgZXIoIlRyYW5zbGF0aW9ucyIpLG5ldyBlcigiVHJhbnNsYXRpb25zRm9ybWF0IiksKGZ1bmN0aW9uKHQpe3RbdC5FcnJvcj0wXT0iRXJyb3IiLHRbdC5XYXJuaW5nPTFdPSJXYXJuaW5nIix0W3QuSWdub3JlPTJdPSJJZ25vcmUifSkodEN8fCh0Qz17fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZUN7Y29uc3RydWN0b3IodCxlKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT10LHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPWV9fWNvbnN0IG5DPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbnkodCl9LG9DPW5DLGlDPWZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUobkModCkpfSxhQz1mdW5jdGlvbih0KXtjb25zdCBlPW5DKHQpLG49U2woTW8odCkuZGVjbGFyYXRpb25zKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3Qgbj15byhlKTtyZXR1cm4gbiYmdC5wdXNoKG5ldyBLYihuKSksdH0pLFtdKTtyZXR1cm4gbmV3IGVDKGUsbil9LHJDPWFDLHNDPWZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoYUModCkpfTtjbGFzcyBsQ3tjb25zdHJ1Y3Rvcigpe3RoaXMuY29tcGlsZU1vZHVsZVN5bmM9b0MsdGhpcy5jb21waWxlTW9kdWxlQXN5bmM9aUMsdGhpcy5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmM9ckMsdGhpcy5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c0FzeW5jPXNDfWNsZWFyQ2FjaGUoKXt9Y2xlYXJDYWNoZUZvcih0KXt9Z2V0TW9kdWxlSWQodCl7fX1sQy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bEMpfSxsQy7JtXByb3Y9U24oe3Rva2VuOmxDLGZhY3Rvcnk6bEMuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGxDLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgY0M9bmV3IGVyKCJjb21waWxlck9wdGlvbnMiKSxkQz1Qcm9taXNlLnJlc29sdmUoMCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHBDKHQpeyJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZT9kQy50aGVuKCgoKT0+e3QmJnQuYXBwbHkobnVsbCxudWxsKX0pKTpab25lLmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soInNjaGVkdWxlTWljcm90YXNrIix0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBtQ3tjb25zdHJ1Y3Rvcih7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6dD0hMSxzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOmU9ITEsc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb246bj0hMX0pe2lmKHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgU3koITEpLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgU3koITEpLHRoaXMub25TdGFibGU9bmV3IFN5KCExKSx0aGlzLm9uRXJyb3I9bmV3IFN5KCExKSwidW5kZWZpbmVkIj09dHlwZW9mIFpvbmUpdGhyb3cgbmV3IEVycm9yKCJJbiB0aGlzIGNvbmZpZ3VyYXRpb24gQW5ndWxhciByZXF1aXJlcyBab25lLmpzIik7Wm9uZS5hc3NlcnRab25lUGF0Y2hlZCgpO2NvbnN0IG89dGhpcztvLl9uZXN0aW5nPTAsby5fb3V0ZXI9by5faW5uZXI9Wm9uZS5jdXJyZW50LFpvbmUuVGFza1RyYWNraW5nWm9uZVNwZWMmJihvLl9pbm5lcj1vLl9pbm5lci5mb3JrKG5ldyBab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjKSksdCYmWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjJiYoby5faW5uZXI9by5faW5uZXIuZm9yayhab25lLmxvbmdTdGFja1RyYWNlWm9uZVNwZWMpKSxvLnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb249IW4mJmUsby5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbj1uLG8ubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPS0xLG8ubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPShmdW5jdGlvbiBpKCl7bGV0IHQ9WG4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lLGU9WG4uY2FuY2VsQW5pbWF0aW9uRnJhbWU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBab25lJiZ0JiZlKXtjb25zdCBuPXRbWm9uZS5fX3N5bWJvbF9fKCJPcmlnaW5hbERlbGVnYXRlIildO24mJih0PW4pO2NvbnN0IG89ZVtab25lLl9fc3ltYm9sX18oIk9yaWdpbmFsRGVsZWdhdGUiKV07byYmKGU9byl9cmV0dXJue25hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZTp0LG5hdGl2ZUNhbmNlbEFuaW1hdGlvbkZyYW1lOmV9fSkoKS5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsKGZ1bmN0aW9uIGEodCl7Y29uc3QgZT0oKT0+eyEoZnVuY3Rpb24gZSh0KXtpZih0LmlzQ2hlY2tTdGFibGVSdW5uaW5nfHwtMSE9PXQubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkKXJldHVybjt0Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD10Lm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZS5jYWxsKFhuLCgoKT0+e3QuZmFrZVRvcEV2ZW50VGFza3x8KHQuZmFrZVRvcEV2ZW50VGFzaz1ab25lLnJvb3Quc2NoZWR1bGVFdmVudFRhc2soImZha2VUb3BFdmVudFRhc2siLCgoKT0+e3QubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPS0xLGdDKHQpLHQuaXNDaGVja1N0YWJsZVJ1bm5pbmc9ITAsZkModCksdC5pc0NoZWNrU3RhYmxlUnVubmluZz0hMX0pLHZvaWQgMCwoKCk9Pnt9KSwoKCk9Pnt9KSkpLHQuZmFrZVRvcEV2ZW50VGFzay5pbnZva2UoKX0pKSxnQyh0KX0pKHQpfTt0Ll9pbm5lcj10Ll9pbm5lci5mb3JrKHtuYW1lOiJhbmd1bGFyIixwcm9wZXJ0aWVzOntpc0FuZ3VsYXJab25lOiEwfSxvbkludm9rZVRhc2s6KG4sbyxpLGEscixzKT0+e3RyeXtyZXR1cm4gaEModCksbi5pbnZva2VUYXNrKGksYSxyLHMpfWZpbmFsbHl7KHQuc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbiYmImV2ZW50VGFzayI9PT1hLnR5cGV8fHQuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24pJiZlKCksYkModCl9fSxvbkludm9rZToobixvLGksYSxyLHMsbCk9Pnt0cnl7cmV0dXJuIGhDKHQpLG4uaW52b2tlKGksYSxyLHMsbCl9ZmluYWxseXt0LnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uJiZlKCksYkModCl9fSxvbkhhc1Rhc2s6KGUsbixvLGkpPT57ZS5oYXNUYXNrKG8saSksbj09PW8mJigibWljcm9UYXNrIj09aS5jaGFuZ2U/KHQuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPWkubWljcm9UYXNrLGdDKHQpLGZDKHQpKToibWFjcm9UYXNrIj09aS5jaGFuZ2UmJih0Lmhhc1BlbmRpbmdNYWNyb3Rhc2tzPWkubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6KGUsbixvLGkpPT4oZS5oYW5kbGVFcnJvcihvLGkpLHQucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT50Lm9uRXJyb3IuZW1pdChpKSkpLCExKX0pfSkobyl9c3RhdGljIGlzSW5Bbmd1bGFyWm9uZSgpe3JldHVybiEwPT09Wm9uZS5jdXJyZW50LmdldCgiaXNBbmd1bGFyWm9uZSIpfXN0YXRpYyBhc3NlcnRJbkFuZ3VsYXJab25lKCl7aWYoIW1DLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMgbm90ISIpfXN0YXRpYyBhc3NlcnROb3RJbkFuZ3VsYXJab25lKCl7aWYobUMuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBub3QgYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMhIil9cnVuKHQsZSxuKXtyZXR1cm4gdGhpcy5faW5uZXIucnVuKHQsZSxuKX1ydW5UYXNrKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5faW5uZXIsYT1pLnNjaGVkdWxlRXZlbnRUYXNrKCJOZ1pvbmVFdmVudDogIitvLHQsdUMsWWgsWWgpO3RyeXtyZXR1cm4gaS5ydW5UYXNrKGEsZSxuKX1maW5hbGx5e2kuY2FuY2VsVGFzayhhKX19cnVuR3VhcmRlZCh0LGUsbil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bkd1YXJkZWQodCxlLG4pfXJ1bk91dHNpZGVBbmd1bGFyKHQpe3JldHVybiB0aGlzLl9vdXRlci5ydW4odCl9fWNvbnN0IHVDPXt9O2Z1bmN0aW9uIGZDKHQpe2lmKDA9PXQuX25lc3RpbmcmJiF0Lmhhc1BlbmRpbmdNaWNyb3Rhc2tzJiYhdC5pc1N0YWJsZSl0cnl7dC5fbmVzdGluZysrLHQub25NaWNyb3Rhc2tFbXB0eS5lbWl0KG51bGwpfWZpbmFsbHl7aWYodC5fbmVzdGluZy0tLCF0Lmhhc1BlbmRpbmdNaWNyb3Rhc2tzKXRyeXt0LnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5vblN0YWJsZS5lbWl0KG51bGwpKSl9ZmluYWxseXt0LmlzU3RhYmxlPSEwfX19ZnVuY3Rpb24gZ0ModCl7dC5oYXNQZW5kaW5nTWljcm90YXNrcz0hISh0Ll9oYXNQZW5kaW5nTWljcm90YXNrc3x8KHQuc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbnx8dC5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbikmJi0xIT09dC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQpfWZ1bmN0aW9uIGhDKHQpe3QuX25lc3RpbmcrKyx0LmlzU3RhYmxlJiYodC5pc1N0YWJsZT0hMSx0Lm9uVW5zdGFibGUuZW1pdChudWxsKSl9ZnVuY3Rpb24gYkModCl7dC5fbmVzdGluZy0tLGZDKHQpfWNsYXNzIHlDe2NvbnN0cnVjdG9yKCl7dGhpcy5oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuaXNTdGFibGU9ITAsdGhpcy5vblVuc3RhYmxlPW5ldyBTeSx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3IFN5LHRoaXMub25TdGFibGU9bmV3IFN5LHRoaXMub25FcnJvcj1uZXcgU3l9cnVuKHQsZSxuKXtyZXR1cm4gdC5hcHBseShlLG4pfXJ1bkd1YXJkZWQodCxlLG4pe3JldHVybiB0LmFwcGx5KGUsbil9cnVuT3V0c2lkZUFuZ3VsYXIodCl7cmV0dXJuIHQoKX1ydW5UYXNrKHQsZSxuLG8pe3JldHVybiB0LmFwcGx5KGUsbil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfQ3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wZW5kaW5nQ291bnQ9MCx0aGlzLl9pc1pvbmVTdGFibGU9ITAsdGhpcy5fZGlkV29yaz0hMSx0aGlzLl9jYWxsYmFja3M9W10sdGhpcy50YXNrVHJhY2tpbmdab25lPW51bGwsdGhpcy5fd2F0Y2hBbmd1bGFyRXZlbnRzKCksdC5ydW4oKCgpPT57dGhpcy50YXNrVHJhY2tpbmdab25lPSJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZT9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pKX1fd2F0Y2hBbmd1bGFyRXZlbnRzKCl7dGhpcy5fbmdab25lLm9uVW5zdGFibGUuc3Vic2NyaWJlKHtuZXh0OigpPT57dGhpcy5fZGlkV29yaz0hMCx0aGlzLl9pc1pvbmVTdGFibGU9ITF9fSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX25nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoe25leHQ6KCk9PnttQy5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCkscEMoKCgpPT57dGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pKX19KX0pKX1pbmNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50Kz0xLHRoaXMuX2RpZFdvcms9ITAsdGhpcy5fcGVuZGluZ0NvdW50fWRlY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCgpe2lmKHRoaXMuX3BlbmRpbmdDb3VudC09MSx0aGlzLl9wZW5kaW5nQ291bnQ8MCl0aHJvdyBuZXcgRXJyb3IoInBlbmRpbmcgYXN5bmMgcmVxdWVzdHMgYmVsb3cgemVybyIpO3JldHVybiB0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCksdGhpcy5fcGVuZGluZ0NvdW50fWlzU3RhYmxlKCl7cmV0dXJuIHRoaXMuX2lzWm9uZVN0YWJsZSYmMD09PXRoaXMuX3BlbmRpbmdDb3VudCYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc31fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpe2lmKHRoaXMuaXNTdGFibGUoKSlwQygoKCk9Pntmb3IoOzAhPT10aGlzLl9jYWxsYmFja3MubGVuZ3RoOyl7bGV0IHQ9dGhpcy5fY2FsbGJhY2tzLnBvcCgpO2NsZWFyVGltZW91dCh0LnRpbWVvdXRJZCksdC5kb25lQ2IodGhpcy5fZGlkV29yayl9dGhpcy5fZGlkV29yaz0hMX0pKTtlbHNle2xldCB0PXRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCk7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrcy5maWx0ZXIoKGU9PiFlLnVwZGF0ZUNifHwhZS51cGRhdGVDYih0KXx8KGNsZWFyVGltZW91dChlLnRpbWVvdXRJZCksITEpKSksdGhpcy5fZGlkV29yaz0hMH19Z2V0UGVuZGluZ1Rhc2tzKCl7cmV0dXJuIHRoaXMudGFza1RyYWNraW5nWm9uZT90aGlzLnRhc2tUcmFja2luZ1pvbmUubWFjcm9UYXNrcy5tYXAoKHQ9Pih7c291cmNlOnQuc291cmNlLGNyZWF0aW9uTG9jYXRpb246dC5jcmVhdGlvbkxvY2F0aW9uLGRhdGE6dC5kYXRhfSkpKTpbXX1hZGRDYWxsYmFjayh0LGUsbil7bGV0IG89LTE7ZSYmZT4wJiYobz1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKCh0PT50LnRpbWVvdXRJZCE9PW8pKSx0KHRoaXMuX2RpZFdvcmssdGhpcy5nZXRQZW5kaW5nVGFza3MoKSl9KSxlKSksdGhpcy5fY2FsbGJhY2tzLnB1c2goe2RvbmVDYjp0LHRpbWVvdXRJZDpvLHVwZGF0ZUNiOm59KX13aGVuU3RhYmxlKHQsZSxuKXtpZihuJiYhdGhpcy50YXNrVHJhY2tpbmdab25lKXRocm93IG5ldyBFcnJvcignVGFzayB0cmFja2luZyB6b25lIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiB1cGRhdGUgY2FsbGJhY2sgdG8gd2hlblN0YWJsZSgpLiBJcyAiem9uZS5qcy9wbHVnaW5zL3Rhc2stdHJhY2tpbmciIGxvYWRlZD8nKTt0aGlzLmFkZENhbGxiYWNrKHQsZSxuKSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9Z2V0UGVuZGluZ1JlcXVlc3RDb3VudCgpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnR9ZmluZFByb3ZpZGVycyh0LGUsbil7cmV0dXJuW119fV9DLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfQykoVHIobUMpKX0sX0MuybVwcm92PVNuKHt0b2tlbjpfQyxmYWN0b3J5Ol9DLsm1ZmFjfSksX0MuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTptQ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoX0MsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfV19KSxudWxsKTtjbGFzcyBDQ3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FwcGxpY2F0aW9ucz1uZXcgTWFwLHZDLmFkZFRvV2luZG93KHRoaXMpfXJlZ2lzdGVyQXBwbGljYXRpb24odCxlKXt0aGlzLl9hcHBsaWNhdGlvbnMuc2V0KHQsZSl9dW5yZWdpc3RlckFwcGxpY2F0aW9uKHQpe3RoaXMuX2FwcGxpY2F0aW9ucy5kZWxldGUodCl9dW5yZWdpc3RlckFsbEFwcGxpY2F0aW9ucygpe3RoaXMuX2FwcGxpY2F0aW9ucy5jbGVhcigpfWdldFRlc3RhYmlsaXR5KHQpe3JldHVybiB0aGlzLl9hcHBsaWNhdGlvbnMuZ2V0KHQpfHxudWxsfWdldEFsbFRlc3RhYmlsaXRpZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMudmFsdWVzKCkpfWdldEFsbFJvb3RFbGVtZW50cygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy5rZXlzKCkpfWZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LGU9ITApe3JldHVybiB2Qy5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LGUpfX1DQy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q0MpfSxDQy7JtXByb3Y9U24oe3Rva2VuOkNDLGZhY3Rvcnk6Q0MuybVmYWN9KSxDQy5jdG9yUGFyYW1ldGVycz0oKT0+W10sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDQyxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2xldCBNQyx2Qz1uZXcgY2xhc3N7YWRkVG9XaW5kb3codCl7fWZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LGUsbil7cmV0dXJuIG51bGx9fSx4Qz0hMCxPQz0hMTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gUEMoKXtyZXR1cm4gT0M9ITAseEN9bGV0IHdDPWZ1bmN0aW9uIGtDKHQsZSxuKXtuZ0Rldk1vZGUmJihmdW5jdGlvbiBvKHQsZT0iVHlwZSBwYXNzZWQgaW4gaXMgbm90IE5nTW9kdWxlVHlwZSwgaXQgZG9lcyBub3QgaGF2ZSAnybVtb2QnIHByb3BlcnR5LiIpe01vKHQpfHxPbihlKX0pKG4pO2NvbnN0IGk9bmV3IG55KG4pO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdKaXRNb2RlJiYhbmdKaXRNb2RlKXJldHVybiBQcm9taXNlLnJlc29sdmUoaSk7Y29uc3QgYT10LmdldChjQyxbXSkuY29uY2F0KGUpO2lmKChmdW5jdGlvbiByKHQpe2lmKG51bGwhPT1YeSl7aWYodC5kZWZhdWx0RW5jYXBzdWxhdGlvbiE9PVh5LmRlZmF1bHRFbmNhcHN1bGF0aW9uKXJldHVybiB2b2lkKG5nRGV2TW9kZSYmY29uc29sZS5lcnJvcigiUHJvdmlkZWQgdmFsdWUgZm9yIGBkZWZhdWx0RW5jYXBzdWxhdGlvbmAgY2FuIG5vdCBiZSBjaGFuZ2VkIG9uY2UgaXQgaGFzIGJlZW4gc2V0LiIpKTtpZih0LnByZXNlcnZlV2hpdGVzcGFjZXMhPT1YeS5wcmVzZXJ2ZVdoaXRlc3BhY2VzKXJldHVybiB2b2lkKG5nRGV2TW9kZSYmY29uc29sZS5lcnJvcigiUHJvdmlkZWQgdmFsdWUgZm9yIGBwcmVzZXJ2ZVdoaXRlc3BhY2VzYCBjYW4gbm90IGJlIGNoYW5nZWQgb25jZSBpdCBoYXMgYmVlbiBzZXQuIikpfVh5PXR9KSh7ZGVmYXVsdEVuY2Fwc3VsYXRpb246TEMoYS5tYXAoKHQ9PnQuZGVmYXVsdEVuY2Fwc3VsYXRpb24pKSkscHJlc2VydmVXaGl0ZXNwYWNlczpMQyhhLm1hcCgodD0+dC5wcmVzZXJ2ZVdoaXRlc3BhY2VzKSkpfSksKGZ1bmN0aW9uIHMoKXtyZXR1cm4gMD09PVhyLnNpemV9KSgpKXJldHVybiBQcm9taXNlLnJlc29sdmUoaSk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtjb25zdCBlPVtdO3JldHVybiB0LmZvckVhY2goKHQ9PnQmJmUucHVzaCguLi50KSkpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoYS5tYXAoKHQ9PnQucHJvdmlkZXJzKSkpO2lmKDA9PT1sLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpO2NvbnN0IGQ9bHIoe3VzYWdlOjAsa2luZDoiTmdNb2R1bGUiLHR5cGU6bn0pLHA9TnAuY3JlYXRlKHtwcm92aWRlcnM6bH0pLmdldChkLlJlc291cmNlTG9hZGVyKTtyZXR1cm4gWnIoKHQ9PlByb21pc2UucmVzb2x2ZShwLmdldCh0KSkpKS50aGVuKCgoKT0+aSkpfTtsZXQgU0M9ZnVuY3Rpb24gREMoKXtuZ0Rldk1vZGUmJihmdW5jdGlvbiB0KCl7cXB8fChxcD0hMCxacCgiybVzZXRQcm9maWxlciIsJG8pLFpwKCJnZXREaXJlY3RpdmVNZXRhZGF0YSIsVnApLFpwKCJnZXRDb21wb25lbnQiLHpwKSxacCgiZ2V0Q29udGV4dCIsSXApLFpwKCJnZXRMaXN0ZW5lcnMiLGpwKSxacCgiZ2V0T3duaW5nQ29tcG9uZW50IixIcCksWnAoImdldEhvc3RFbGVtZW50IixVcCksWnAoImdldEluamVjdG9yIixMcCksWnAoImdldFJvb3RDb21wb25lbnRzIixGcCksWnAoImdldERpcmVjdGl2ZXMiLEJwKSxacCgiYXBwbHlDaGFuZ2VzIixZcCkpfSkoKX0sUkM9ZnVuY3Rpb24gRUModCl7cmV0dXJuIHQuaXNCb3VuZFRvTW9kdWxlfTtjb25zdCBBQz1uZXcgZXIoIkFsbG93TXVsdGlwbGVUb2tlbiIpO2Z1bmN0aW9uIFRDKHQsZSxuPVtdKXtjb25zdCBvPWBQbGF0Zm9ybTogJHtlfWAsaT1uZXcgZXIobyk7cmV0dXJuKGU9W10pPT57bGV0IGE9TkMoKTtpZighYXx8YS5pbmplY3Rvci5nZXQoQUMsITEpKWlmKHQpdChuLmNvbmNhdChlKS5jb25jYXQoe3Byb3ZpZGU6aSx1c2VWYWx1ZTohMH0pKTtlbHNle2NvbnN0IHQ9bi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOmksdXNlVmFsdWU6ITB9LHtwcm92aWRlOkNwLHVzZVZhbHVlOiJwbGF0Zm9ybSJ9KTshKGZ1bmN0aW9uIHIodCl7aWYoTUMmJiFNQy5kZXN0cm95ZWQmJiFNQy5pbmplY3Rvci5nZXQoQUMsITEpKXRocm93IG5ldyBFcnJvcigiVGhlcmUgY2FuIGJlIG9ubHkgb25lIHBsYXRmb3JtLiBEZXN0cm95IHRoZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS4iKTtTQygpLE1DPXQuZ2V0KHpDKTtjb25zdCBlPXQuZ2V0KFpfLG51bGwpO3JldHVybiBlJiZlLmZvckVhY2goKHQ9PnQoKSkpLE1DfSkoTnAuY3JlYXRlKHtwcm92aWRlcnM6dCxuYW1lOm99KSl9cmV0dXJuKGZ1bmN0aW9uIHModCl7Y29uc3QgZT1OQygpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTm8gcGxhdGZvcm0gZXhpc3RzISIpO2lmKCFlLmluamVjdG9yLmdldCh0LG51bGwpKXRocm93IG5ldyBFcnJvcigiQSBwbGF0Zm9ybSB3aXRoIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY3JlYXRlZC4gUGxlYXNlIGRlc3Ryb3kgaXQgZmlyc3QuIik7cmV0dXJuIGV9KShpKX19ZnVuY3Rpb24gTkMoKXtyZXR1cm4gTUMmJiFNQy5kZXN0cm95ZWQ/TUM6bnVsbH1jbGFzcyB6Q3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9pbmplY3Rvcj10LHRoaXMuX21vZHVsZXM9W10sdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9ITF9Ym9vdHN0cmFwTW9kdWxlRmFjdG9yeSh0LGUpe2NvbnN0IG49KGZ1bmN0aW9uIG8odCxlKXtsZXQgbjtuPSJub29wIj09PXQ/bmV3IHlDOigiem9uZS5qcyI9PT10P3ZvaWQgMDp0KXx8bmV3IG1DKHtlbmFibGVMb25nU3RhY2tUcmFjZTpQQygpLHNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb246ISEobnVsbD09ZT92b2lkIDA6ZS5uZ1pvbmVFdmVudENvYWxlc2NpbmcpLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOiEhKG51bGw9PWU/dm9pZCAwOmUubmdab25lUnVuQ29hbGVzY2luZyl9KTtyZXR1cm4gbn0pKGU/ZS5uZ1pvbmU6dm9pZCAwLHtuZ1pvbmVFdmVudENvYWxlc2Npbmc6ZSYmZS5uZ1pvbmVFdmVudENvYWxlc2Npbmd8fCExLG5nWm9uZVJ1bkNvYWxlc2Npbmc6ZSYmZS5uZ1pvbmVSdW5Db2FsZXNjaW5nfHwhMX0pLGk9W3twcm92aWRlOm1DLHVzZVZhbHVlOm59XTtyZXR1cm4gbi5ydW4oKCgpPT57Y29uc3QgZT1OcC5jcmVhdGUoe3Byb3ZpZGVyczppLHBhcmVudDp0aGlzLmluamVjdG9yLG5hbWU6dC5tb2R1bGVUeXBlLm5hbWV9KSxvPXQuY3JlYXRlKGUpLGE9by5pbmplY3Rvci5nZXQoZmwsbnVsbCk7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJObyBFcnJvckhhbmRsZXIuIElzIHBsYXRmb3JtIG1vZHVsZSAoQnJvd3Nlck1vZHVsZSkgaW5jbHVkZWQ/Iik7cmV0dXJuIG4ucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57Y29uc3QgdD1uLm9uRXJyb3Iuc3Vic2NyaWJlKHtuZXh0OnQ9PnthLmhhbmRsZUVycm9yKHQpfX0pO28ub25EZXN0cm95KCgoKT0+e0ZDKHRoaXMuX21vZHVsZXMsbyksdC51bnN1YnNjcmliZSgpfSkpfSkpLChmdW5jdGlvbiByKHQsZSxuKXt0cnl7Y29uc3Qgbz1uKCk7cmV0dXJuIHd1KG8pP28uY2F0Y2goKG49Pnt0aHJvdyBlLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5oYW5kbGVFcnJvcihuKSkpLG59KSk6b31jYXRjaChuKXt0aHJvdyBlLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5oYW5kbGVFcnJvcihuKSkpLG59fSkoYSxuLCgoKT0+e2NvbnN0IHQ9by5pbmplY3Rvci5nZXQoal8pO3JldHVybiB0LnJ1bkluaXRpYWxpemVycygpLHQuZG9uZVByb21pc2UudGhlbigoKCk9PntQZyhvLmluamVjdG9yLmdldChRXyxDZyl8fENnKTtyZXR1cm4gdGhpcy5fbW9kdWxlRG9Cb290c3RyYXAobyksb30pKX0pKX0pKX1ib290c3RyYXBNb2R1bGUodCxlPVtdKXtjb25zdCBuPUlDKHt9LGUpO3JldHVybiB3Qyh0aGlzLmluamVjdG9yLG4sdCkudGhlbigodD0+dGhpcy5ib290c3RyYXBNb2R1bGVGYWN0b3J5KHQsbikpKX1fbW9kdWxlRG9Cb290c3RyYXAodCl7Y29uc3QgZT10LmluamVjdG9yLmdldChIQyk7aWYodC5fYm9vdHN0cmFwQ29tcG9uZW50cy5sZW5ndGg+MCl0Ll9ib290c3RyYXBDb21wb25lbnRzLmZvckVhY2goKHQ9PmUuYm9vdHN0cmFwKHQpKSk7ZWxzZXtpZighdC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKXRocm93IG5ldyBFcnJvcihgVGhlIG1vZHVsZSAke0tlKHQuaW5zdGFuY2UuY29uc3RydWN0b3IpfSB3YXMgYm9vdHN0cmFwcGVkLCBidXQgaXQgZG9lcyBub3QgZGVjbGFyZSAiQE5nTW9kdWxlLmJvb3RzdHJhcCIgY29tcG9uZW50cyBub3IgYSAibmdEb0Jvb3RzdHJhcCIgbWV0aG9kLiBQbGVhc2UgZGVmaW5lIG9uZSBvZiB0aGVzZS5gKTt0Lmluc3RhbmNlLm5nRG9Cb290c3RyYXAoZSl9dGhpcy5fbW9kdWxlcy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2godCl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIHRoaXMuX2luamVjdG9yfWRlc3Ryb3koKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGxhdGZvcm0gaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQhIik7dGhpcy5fbW9kdWxlcy5zbGljZSgpLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9kZXN0cm95ZWQ9ITB9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9fWZ1bmN0aW9uIElDKHQsZSl7cmV0dXJuIHQ9QXJyYXkuaXNBcnJheShlKT9lLnJlZHVjZShJQyx0KTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCksZSl9ekMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpDKShUcihOcCkpfSx6Qy7JtXByb3Y9U24oe3Rva2VuOnpDLGZhY3Rvcnk6ekMuybVmYWN9KSx6Qy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk5wfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6Qyxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TnB9XX0pLG51bGwpO2NsYXNzIEhDe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fem9uZT10LHRoaXMuX2luamVjdG9yPWUsdGhpcy5fZXhjZXB0aW9uSGFuZGxlcj1uLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1vLHRoaXMuX2luaXRTdGF0dXM9aSx0aGlzLl9ib290c3RyYXBMaXN0ZW5lcnM9W10sdGhpcy5fdmlld3M9W10sdGhpcy5fcnVubmluZ1RpY2s9ITEsdGhpcy5fc3RhYmxlPSEwLHRoaXMuY29tcG9uZW50VHlwZXM9W10sdGhpcy5jb21wb25lbnRzPVtdLHRoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb249dGhpcy5fem9uZS5vbk1pY3JvdGFza0VtcHR5LnN1YnNjcmliZSh7bmV4dDooKT0+e3RoaXMuX3pvbmUucnVuKCgoKT0+e3RoaXMudGljaygpfSkpfX0pO2NvbnN0IGE9bmV3IFQoKHQ9Pnt0aGlzLl9zdGFibGU9dGhpcy5fem9uZS5pc1N0YWJsZSYmIXRoaXMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MmJiF0aGlzLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzLHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5uZXh0KHRoaXMuX3N0YWJsZSksdC5jb21wbGV0ZSgpfSkpfSkpLHI9bmV3IFQoKHQ9PntsZXQgZTt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2U9dGhpcy5fem9uZS5vblN0YWJsZS5zdWJzY3JpYmUoKCgpPT57bUMuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLHBDKCgoKT0+e3RoaXMuX3N0YWJsZXx8dGhpcy5fem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc3x8dGhpcy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrc3x8KHRoaXMuX3N0YWJsZT0hMCx0Lm5leHQoITApKX0pKX0pKX0pKTtjb25zdCBuPXRoaXMuX3pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoKCgpPT57bUMuYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpLHRoaXMuX3N0YWJsZSYmKHRoaXMuX3N0YWJsZT0hMSx0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QubmV4dCghMSl9KSkpfSkpO3JldHVybigpPT57ZS51bnN1YnNjcmliZSgpLG4udW5zdWJzY3JpYmUoKX19KSk7dGhpcy5pc1N0YWJsZT1wZShhLHIucGlwZShJZSgpKSl9Ym9vdHN0cmFwKHQsZSl7aWYoIXRoaXMuX2luaXRTdGF0dXMuZG9uZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBib290c3RyYXAgYXMgdGhlcmUgYXJlIHN0aWxsIGFzeW5jaHJvbm91cyBpbml0aWFsaXplcnMgcnVubmluZy4gQm9vdHN0cmFwIGNvbXBvbmVudHMgaW4gdGhlIGBuZ0RvQm9vdHN0cmFwYCBtZXRob2Qgb2YgdGhlIHJvb3QgbW9kdWxlLiIpO2xldCBuO249dCBpbnN0YW5jZW9mIGpoP3Q6dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQpLHRoaXMuY29tcG9uZW50VHlwZXMucHVzaChuLmNvbXBvbmVudFR5cGUpO2NvbnN0IG89UkMobik/dm9pZCAwOnRoaXMuX2luamVjdG9yLmdldCh6YiksaT1uLmNyZWF0ZShOcC5OVUxMLFtdLGV8fG4uc2VsZWN0b3IsbyksYT1pLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQscj1pLmluamVjdG9yLmdldChfQyxudWxsKSxzPXImJmkuaW5qZWN0b3IuZ2V0KENDKTtpZihyJiZzJiZzLnJlZ2lzdGVyQXBwbGljYXRpb24oYSxyKSxpLm9uRGVzdHJveSgoKCk9Pnt0aGlzLmRldGFjaFZpZXcoaS5ob3N0VmlldyksRkModGhpcy5jb21wb25lbnRzLGkpLHMmJnMudW5yZWdpc3RlckFwcGxpY2F0aW9uKGEpfSkpLHRoaXMuX2xvYWRDb21wb25lbnQoaSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZQQygpKXt0aGlzLl9pbmplY3Rvci5nZXQoSl8pLmxvZygiQW5ndWxhciBpcyBydW5uaW5nIGluIGRldmVsb3BtZW50IG1vZGUuIENhbGwgZW5hYmxlUHJvZE1vZGUoKSB0byBlbmFibGUgcHJvZHVjdGlvbiBtb2RlLiIpfXJldHVybiBpfXRpY2soKXtpZih0aGlzLl9ydW5uaW5nVGljayl0aHJvdyBuZXcgRXJyb3IoIkFwcGxpY2F0aW9uUmVmLnRpY2sgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5Iik7dHJ5e3RoaXMuX3J1bm5pbmdUaWNrPSEwO2ZvcihsZXQgdCBvZiB0aGlzLl92aWV3cyl0LmRldGVjdENoYW5nZXMoKTtpZigoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlBDKCkpZm9yKGxldCB0IG9mIHRoaXMuX3ZpZXdzKXQuY2hlY2tOb0NoYW5nZXMoKX1jYXRjaCh0KXt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dGhpcy5fZXhjZXB0aW9uSGFuZGxlci5oYW5kbGVFcnJvcih0KSkpfWZpbmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9ITF9fWF0dGFjaFZpZXcodCl7Y29uc3QgZT10O3RoaXMuX3ZpZXdzLnB1c2goZSksZS5hdHRhY2hUb0FwcFJlZih0aGlzKX1kZXRhY2hWaWV3KHQpe2NvbnN0IGU9dDtGQyh0aGlzLl92aWV3cyxlKSxlLmRldGFjaEZyb21BcHBSZWYoKX1fbG9hZENvbXBvbmVudCh0KXt0aGlzLmF0dGFjaFZpZXcodC5ob3N0VmlldyksdGhpcy50aWNrKCksdGhpcy5jb21wb25lbnRzLnB1c2godCk7dGhpcy5faW5qZWN0b3IuZ2V0KEtfLFtdKS5jb25jYXQodGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzKS5mb3JFYWNoKChlPT5lKHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl92aWV3cy5zbGljZSgpLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCB2aWV3Q291bnQoKXtyZXR1cm4gdGhpcy5fdmlld3MubGVuZ3RofX1mdW5jdGlvbiBGQyh0LGUpe2NvbnN0IG49dC5pbmRleE9mKGUpO24+LTEmJnQuc3BsaWNlKG4sMSl9ZnVuY3Rpb24gTEModCl7Zm9yKGxldCBlPXQubGVuZ3RoLTE7ZT49MDtlLS0paWYodm9pZCAwIT09dFtlXSlyZXR1cm4gdFtlXX1IQy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SEMpKFRyKG1DKSxUcihOcCksVHIoZmwpLFRyKEdoKSxUcihqXykpfSxIQy7JtXByb3Y9U24oe3Rva2VuOkhDLGZhY3Rvcnk6SEMuybVmYWN9KSxIQy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm1DfSx7dHlwZTpOcH0se3R5cGU6Zmx9LHt0eXBlOkdofSx7dHlwZTpqX31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSEMsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfSx7dHlwZTpOcH0se3R5cGU6Zmx9LHt0eXBlOkdofSx7dHlwZTpqX31dfSksbnVsbCk7Y2xhc3MgQkN7fWNvbnN0IFZDPXtmYWN0b3J5UGF0aFByZWZpeDoiIixmYWN0b3J5UGF0aFN1ZmZpeDoiLm5nZmFjdG9yeSJ9O2NsYXNzIFVDe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fY29tcGlsZXI9dCx0aGlzLl9jb25maWc9ZXx8VkN9bG9hZCh0KXtyZXR1cm4gdGhpcy5sb2FkQW5kQ29tcGlsZSh0KX1sb2FkQW5kQ29tcGlsZSh0KXtsZXRbZSxuXT10LnNwbGl0KCIjIik7cmV0dXJuIHZvaWQgMD09PW4mJihuPSJkZWZhdWx0IiksU3lzdGVtLmltcG9ydChlKS50aGVuKCh0PT50W25dKSkudGhlbigodD0+akModCxlLG4pKSkudGhlbigodD0+dGhpcy5fY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpKSl9bG9hZEZhY3RvcnkodCl7bGV0W2Usbl09dC5zcGxpdCgiIyIpLG89Ik5nRmFjdG9yeSI7cmV0dXJuIHZvaWQgMD09PW4mJihuPSJkZWZhdWx0IixvPSIiKSxTeXN0ZW0uaW1wb3J0KHRoaXMuX2NvbmZpZy5mYWN0b3J5UGF0aFByZWZpeCtlK3RoaXMuX2NvbmZpZy5mYWN0b3J5UGF0aFN1ZmZpeCkudGhlbigodD0+dFtuK29dKSkudGhlbigodD0+akModCxlLG4pKSl9fWZ1bmN0aW9uIGpDKHQsZSxuKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kICcke259JyBpbiAnJHtlfSdgKTtyZXR1cm4gdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovVUMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVDKShUcihsQyksVHIoQkMsOCkpfSxVQy7JtXByb3Y9U24oe3Rva2VuOlVDLGZhY3Rvcnk6VUMuybVmYWN9KSxVQy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmxDfSx7dHlwZTpCQyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVQyxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bEN9LHt0eXBlOkJDLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLG51bGwpO2NvbnN0IFdDPVRDKG51bGwsImNvcmUiLFt7cHJvdmlkZTpYXyx1c2VWYWx1ZToidW5rbm93biJ9LHtwcm92aWRlOnpDLGRlcHM6W05wXX0se3Byb3ZpZGU6Q0MsZGVwczpbXX0se3Byb3ZpZGU6Sl8sZGVwczpbXX1dKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IEdDPVt7cHJvdmlkZTpIQyx1c2VDbGFzczpIQyxkZXBzOlttQyxOcCxmbCxHaCxqX119LHtwcm92aWRlOlhiLGRlcHM6W21DXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFlDKHQpe2xldCBlPVtdO3JldHVybiB0Lm9uU3RhYmxlLnN1YnNjcmliZSgoKCk9Pntmb3IoO2UubGVuZ3RoOyllLnBvcCgpKCl9KSksZnVuY3Rpb24odCl7ZS5wdXNoKHQpfX19LHtwcm92aWRlOmpfLHVzZUNsYXNzOmpfLGRlcHM6W1tuZXcgQnIsVV9dXX0se3Byb3ZpZGU6bEMsdXNlQ2xhc3M6bEMsZGVwczpbXX0sR18se3Byb3ZpZGU6aGIsdXNlRmFjdG9yeToKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHFDKCl7cmV0dXJuIGtifSxkZXBzOltdfSx7cHJvdmlkZTp5Yix1c2VGYWN0b3J5OmZ1bmN0aW9uIFpDKCl7cmV0dXJuIFNifSxkZXBzOltdfSx7cHJvdmlkZTpRXyx1c2VGYWN0b3J5OmZ1bmN0aW9uIFhDKHQpe3JldHVybiBQZyh0PXR8fChmdW5jdGlvbiBlKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ29vZyYmImVuIiE9PWdvb2cuZ2V0TG9jYWxlKCk/Z29vZy5nZXRMb2NhbGUoKToidW5kZWZpbmVkIiE9dHlwZW9mICRsb2NhbGl6ZSYmJGxvY2FsaXplLmxvY2FsZXx8Q2d9KSgpKSx0fSxkZXBzOltbbmV3IExyKFFfKSxuZXcgQnIsbmV3IFVyXV19LHtwcm92aWRlOiRfLHVzZVZhbHVlOiJVU0QifV07Y2xhc3MgS0N7Y29uc3RydWN0b3IodCl7fX12YXIgSkMsUUM7S0MuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtDKShUcihIQykpfSxLQy7JtW1vZD11byh7dHlwZTpLQ30pLEtDLsm1aW5qPURuKHtwcm92aWRlcnM6R0N9KSxLQy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkhDfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLQyxbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpHQ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkhDfV19KSxudWxsKSwoZnVuY3Rpb24odCl7dFt0LkNyZWF0ZVZpZXdOb2Rlcz0wXT0iQ3JlYXRlVmlld05vZGVzIix0W3QuQ2hlY2tOb0NoYW5nZXM9MV09IkNoZWNrTm9DaGFuZ2VzIix0W3QuQ2hlY2tOb0NoYW5nZXNQcm9qZWN0ZWRWaWV3cz0yXT0iQ2hlY2tOb0NoYW5nZXNQcm9qZWN0ZWRWaWV3cyIsdFt0LkNoZWNrQW5kVXBkYXRlPTNdPSJDaGVja0FuZFVwZGF0ZSIsdFt0LkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3M9NF09IkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3MiLHRbdC5EZXN0cm95PTVdPSJEZXN0cm95In0pKEpDfHwoSkM9e30pKSwoZnVuY3Rpb24odCl7dFt0LmNyZWF0ZT0wXT0iY3JlYXRlIix0W3QuZGV0ZWN0Q2hhbmdlcz0xXT0iZGV0ZWN0Q2hhbmdlcyIsdFt0LmNoZWNrTm9DaGFuZ2VzPTJdPSJjaGVja05vQ2hhbmdlcyIsdFt0LmRlc3Ryb3k9M109ImRlc3Ryb3kiLHRbdC5oYW5kbGVFdmVudD00XT0iaGFuZGxlRXZlbnQifSkoUUN8fChRQz17fSkpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwoidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmbmdEZXZNb2RlJiYoWG4uJGxvY2FsaXplPVhuLiRsb2NhbGl6ZXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkl0IGxvb2tzIGxpa2UgeW91ciBhcHBsaWNhdGlvbiBvciBvbmUgb2YgaXRzIGRlcGVuZGVuY2llcyBpcyB1c2luZyBpMThuLlxuQW5ndWxhciA5IGludHJvZHVjZWQgYSBnbG9iYWwgYCRsb2NhbGl6ZSgpYCBmdW5jdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGxvYWRlZC5cblBsZWFzZSBydW4gYG5nIGFkZCBAYW5ndWxhci9sb2NhbGl6ZWAgZnJvbSB0aGUgQW5ndWxhciBDTEkuXG4oRm9yIG5vbi1DTEkgcHJvamVjdHMsIGFkZCBgaW1wb3J0ICdAYW5ndWxhci9sb2NhbGl6ZS9pbml0JztgIHRvIHlvdXIgYHBvbHlmaWxscy50c2AgZmlsZS5cbkZvciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgYXBwbGljYXRpb25zIGFkZCB0aGUgaW1wb3J0IHRvIHlvdXIgYG1haW4uc2VydmVyLnRzYCBmaWxlLikiKX0pCi8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCAkQz0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsdE09InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdyxlTT0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZixuTT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmZ2xvYmFsLG9NPWZ1bmN0aW9uKHQsLi4uZSl7aWYob00udHJhbnNsYXRlKXtjb25zdCBuPW9NLnRyYW5zbGF0ZSh0LGUpO3Q9blswXSxlPW5bMV19bGV0IG49aU0odFswXSx0LnJhd1swXSk7Zm9yKGxldCBvPTE7bzx0Lmxlbmd0aDtvKyspbis9ZVtvLTFdK2lNKHRbb10sdC5yYXdbb10pO3JldHVybiBufTtmdW5jdGlvbiBpTSh0LGUpe3JldHVybiI6Ij09PWUuY2hhckF0KDApP3Quc3Vic3RyaW5nKChmdW5jdGlvbiBuKHQsZSl7Zm9yKGxldCBuPTEsbz0xO248dC5sZW5ndGg7bisrLG8rKylpZigiXFwiPT09ZVtvXSlvKys7ZWxzZSBpZigiOiI9PT10W25dKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcihgVW50ZXJtaW5hdGVkICRsb2NhbGl6ZSBtZXRhZGF0YSBibG9jayBpbiAiJHtlfSIuYCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSkrMSk6dH0oJEN8fG5NfHx0TXx8ZU0pLiRsb2NhbGl6ZT1vTTsKLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4yLjEKICAgICAqIChjKSAyMDEwLTIwMjEgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi8KbGV0IGFNPW51bGw7ZnVuY3Rpb24gck0oKXtyZXR1cm4gYU19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBzTT1uZXcgZXIoIkRvY3VtZW50VG9rZW4iKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbE17aGlzdG9yeUdvKHQpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9fWZ1bmN0aW9uIGNNKCl7cmV0dXJuIFRyKGRNKX1sTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bE0pfSxsTS7JtXByb3Y9U24oe2ZhY3Rvcnk6Y00sdG9rZW46bE0scHJvdmlkZWRJbjoicGxhdGZvcm0ifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsTSxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InBsYXRmb3JtIix1c2VGYWN0b3J5OmNNfV19XSxudWxsLG51bGwpLG5ldyBlcigiTG9jYXRpb24gSW5pdGlhbGl6ZWQiKTtjbGFzcyBkTSBleHRlbmRzIGxNe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZG9jPXQsdGhpcy5faW5pdCgpfV9pbml0KCl7dGhpcy5sb2NhdGlvbj13aW5kb3cubG9jYXRpb24sdGhpcy5faGlzdG9yeT13aW5kb3cuaGlzdG9yeX1nZXRCYXNlSHJlZkZyb21ET00oKXtyZXR1cm4gck0oKS5nZXRCYXNlSHJlZih0aGlzLl9kb2MpfW9uUG9wU3RhdGUodCl7Y29uc3QgZT1yTSgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93Iik7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLHQsITEpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIix0KX1vbkhhc2hDaGFuZ2UodCl7Y29uc3QgZT1yTSgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93Iik7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdCwhMSksKCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdCl9Z2V0IGhyZWYoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ocmVmfWdldCBwcm90b2NvbCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnByb3RvY29sfWdldCBob3N0bmFtZSgpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhvc3RuYW1lfWdldCBwb3J0KCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucG9ydH1nZXQgcGF0aG5hbWUoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wYXRobmFtZX1nZXQgc2VhcmNoKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uc2VhcmNofWdldCBoYXNoKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaGFzaH1zZXQgcGF0aG5hbWUodCl7dGhpcy5sb2NhdGlvbi5wYXRobmFtZT10fXB1c2hTdGF0ZSh0LGUsbil7cE0oKT90aGlzLl9oaXN0b3J5LnB1c2hTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59cmVwbGFjZVN0YXRlKHQsZSxuKXtwTSgpP3RoaXMuX2hpc3RvcnkucmVwbGFjZVN0YXRlKHQsZSxuKTp0aGlzLmxvY2F0aW9uLmhhc2g9bn1mb3J3YXJkKCl7dGhpcy5faGlzdG9yeS5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX2hpc3RvcnkuYmFjaygpfWhpc3RvcnlHbyh0PTApe3RoaXMuX2hpc3RvcnkuZ28odCl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5faGlzdG9yeS5zdGF0ZX19ZnVuY3Rpb24gcE0oKXtyZXR1cm4hIXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZX1mdW5jdGlvbiBtTSgpe3JldHVybiBuZXcgZE0oVHIoc00pKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHVNKHQsZSl7aWYoMD09dC5sZW5ndGgpcmV0dXJuIGU7aWYoMD09ZS5sZW5ndGgpcmV0dXJuIHQ7bGV0IG49MDtyZXR1cm4gdC5lbmRzV2l0aCgiLyIpJiZuKyssZS5zdGFydHNXaXRoKCIvIikmJm4rKywyPT1uP3QrZS5zdWJzdHJpbmcoMSk6MT09bj90K2U6dCsiLyIrZX1mdW5jdGlvbiBmTSh0KXtjb25zdCBlPXQubWF0Y2goLyN8XD98JC8pLG49ZSYmZS5pbmRleHx8dC5sZW5ndGg7cmV0dXJuIHQuc2xpY2UoMCxuLSgiLyI9PT10W24tMV0/MTowKSkrdC5zbGljZShuKX1mdW5jdGlvbiBnTSh0KXtyZXR1cm4gdCYmIj8iIT09dFswXT8iPyIrdDp0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9kTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZE0pKFRyKHNNKSl9LGRNLsm1cHJvdj1Tbih7ZmFjdG9yeTptTSx0b2tlbjpkTSxwcm92aWRlZEluOiJwbGF0Zm9ybSJ9KSxkTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZE0sW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJwbGF0Zm9ybSIsdXNlRmFjdG9yeTptTX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Y2xhc3MgaE17aGlzdG9yeUdvKHQpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9fWZ1bmN0aW9uIGJNKHQpe2NvbnN0IGU9VHIoc00pLmxvY2F0aW9uO3JldHVybiBuZXcgX00oVHIobE0pLGUmJmUub3JpZ2lufHwiIil9aE0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhNKX0saE0uybVwcm92PVNuKHtmYWN0b3J5OmJNLHRva2VuOmhNLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoTSxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUZhY3Rvcnk6Yk19XX1dLG51bGwsbnVsbCk7Y29uc3QgeU09bmV3IGVyKCJhcHBCYXNlSHJlZiIpO2NsYXNzIF9NIGV4dGVuZHMgaE17Y29uc3RydWN0b3IodCxlKXtpZihzdXBlcigpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb249dCx0aGlzLl9yZW1vdmVMaXN0ZW5lckZucz1bXSxudWxsPT1lJiYoZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpKSxudWxsPT1lKXRocm93IG5ldyBFcnJvcigiTm8gYmFzZSBocmVmIHNldC4gUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIEFQUF9CQVNFX0hSRUYgdG9rZW4gb3IgYWRkIGEgYmFzZSBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC4iKTt0aGlzLl9iYXNlSHJlZj1lfW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5sZW5ndGg7KXRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnBvcCgpKCl9b25Qb3BTdGF0ZSh0KXt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wdXNoKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KSl9Z2V0QmFzZUhyZWYoKXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiB1TSh0aGlzLl9iYXNlSHJlZix0KX1wYXRoKHQ9ITEpe2NvbnN0IGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZStnTSh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaCksbj10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIG4mJnQ/YCR7ZX0ke259YDplfXB1c2hTdGF0ZSh0LGUsbixvKXtjb25zdCBpPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4rZ00obykpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxpKX1yZXBsYWNlU3RhdGUodCxlLG4sbyl7Y29uc3QgaT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2dNKG8pKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0LGUsaSl9Zm9yd2FyZCgpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX1oaXN0b3J5R28odD0wKXt2YXIgZSxuO251bGw9PT0obj0oZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uKS5oaXN0b3J5R28pfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSx0KX19X00uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9NKShUcihsTSksVHIoeU0sOCkpfSxfTS7JtXByb3Y9U24oe3Rva2VuOl9NLGZhY3Rvcnk6X00uybVmYWN9KSxfTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmxNfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfTSxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bE19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbeU1dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQ00gZXh0ZW5kcyBoTXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj10LHRoaXMuX2Jhc2VIcmVmPSIiLHRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zPVtdLG51bGwhPWUmJih0aGlzLl9iYXNlSHJlZj1lKX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUodCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCkpfWdldEJhc2VIcmVmKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfXBhdGgodD0hMSl7bGV0IGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBudWxsPT1lJiYoZT0iIyIpLGUubGVuZ3RoPjA/ZS5zdWJzdHJpbmcoMSk6ZX1wcmVwYXJlRXh0ZXJuYWxVcmwodCl7Y29uc3QgZT11TSh0aGlzLl9iYXNlSHJlZix0KTtyZXR1cm4gZS5sZW5ndGg+MD8iIyIrZTplfXB1c2hTdGF0ZSh0LGUsbixvKXtsZXQgaT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2dNKG8pKTswPT1pLmxlbmd0aCYmKGk9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxlLGkpfXJlcGxhY2VTdGF0ZSh0LGUsbixvKXtsZXQgaT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK2dNKG8pKTswPT1pLmxlbmd0aCYmKGk9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUodCxlLGkpfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dmFyIGUsbjtudWxsPT09KG49KGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbikuaGlzdG9yeUdvKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9fUNNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDTSkoVHIobE0pLFRyKHlNLDgpKX0sQ00uybVwcm92PVNuKHt0b2tlbjpDTSxmYWN0b3J5OkNNLsm1ZmFjfSksQ00uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsTX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5TV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ00sW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxNfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE1Ne2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fc3ViamVjdD1uZXcgU3ksdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzPVtdLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3k9dDtjb25zdCBuPXRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPWUsdGhpcy5fYmFzZUhyZWY9Zk0oeE0obikpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kub25Qb3BTdGF0ZSgodD0+e3RoaXMuX3N1YmplY3QuZW1pdCh7dXJsOnRoaXMucGF0aCghMCkscG9wOiEwLHN0YXRlOnQuc3RhdGUsdHlwZTp0LnR5cGV9KX0pKX1wYXRoKHQ9ITEpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSh0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnBhdGgodCkpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uZ2V0U3RhdGUoKX1pc0N1cnJlbnRQYXRoRXF1YWxUbyh0LGU9IiIpe3JldHVybiB0aGlzLnBhdGgoKT09dGhpcy5ub3JtYWxpemUodCtnTShlKSl9bm9ybWFsaXplKHQpe3JldHVybiBNTS5zdHJpcFRyYWlsaW5nU2xhc2goKGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdCYmbi5zdGFydHNXaXRoKHQpP24uc3Vic3RyaW5nKHQubGVuZ3RoKTpufSkodGhpcy5fYmFzZUhyZWYseE0odCkpKX1wcmVwYXJlRXh0ZXJuYWxVcmwodCl7cmV0dXJuIHQmJiIvIiE9PXRbMF0mJih0PSIvIit0KSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnByZXBhcmVFeHRlcm5hbFVybCh0KX1nbyh0LGU9IiIsbj1udWxsKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnB1c2hTdGF0ZShuLCIiLHQsZSksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKHQrZ00oZSkpLG4pfXJlcGxhY2VTdGF0ZSh0LGU9IiIsbj1udWxsKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnJlcGxhY2VTdGF0ZShuLCIiLHQsZSksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKHQrZ00oZSkpLG4pfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dmFyIGUsbjtudWxsPT09KG49KGU9dGhpcy5fcGxhdGZvcm1TdHJhdGVneSkuaGlzdG9yeUdvKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9b25VcmxDaGFuZ2UodCl7dGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLnB1c2godCksdGhpcy5fdXJsQ2hhbmdlU3Vic2NyaXB0aW9ufHwodGhpcy5fdXJsQ2hhbmdlU3Vic2NyaXB0aW9uPXRoaXMuc3Vic2NyaWJlKCh0PT57dGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHQudXJsLHQuc3RhdGUpfSkpKX1fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHQ9IiIsZSl7dGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLmZvckVhY2goKG49Pm4odCxlKSkpfXN1YnNjcmliZSh0LGUsbil7cmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKHtuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpufSl9fWZ1bmN0aW9uIHZNKCl7cmV0dXJuIG5ldyBNTShUcihoTSksVHIobE0pKX1mdW5jdGlvbiB4TSh0KXtyZXR1cm4gdC5yZXBsYWNlKC9cL2luZGV4Lmh0bWwkLywiIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9NTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TU0pKFRyKGhNKSxUcihsTSkpfSxNTS5ub3JtYWxpemVRdWVyeVBhcmFtcz1nTSxNTS5qb2luV2l0aFNsYXNoPXVNLE1NLnN0cmlwVHJhaWxpbmdTbGFzaD1mTSxNTS7JtXByb3Y9U24oe2ZhY3Rvcnk6dk0sdG9rZW46TU0scHJvdmlkZWRJbjoicm9vdCJ9KSxNTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhNfSx7dHlwZTpsTX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTU0sW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5OnZNfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aE19LHt0eXBlOmxNfV19KSxudWxsKTtjb25zdCBPTT17QURQOlt2b2lkIDAsdm9pZCAwLDBdLEFGTjpbdm9pZCAwLHZvaWQgMCwwXSxBTEw6W3ZvaWQgMCx2b2lkIDAsMF0sQU1EOlt2b2lkIDAsdm9pZCAwLDJdLEFPQTpbdm9pZCAwLCJLeiJdLEFSUzpbdm9pZCAwLCIkIl0sQVVEOlsiQSQiLCIkIl0sQkFNOlt2b2lkIDAsIktNIl0sQkJEOlt2b2lkIDAsIiQiXSxCRFQ6W3ZvaWQgMCwi4KezIl0sQkhEOlt2b2lkIDAsdm9pZCAwLDNdLEJJRjpbdm9pZCAwLHZvaWQgMCwwXSxCTUQ6W3ZvaWQgMCwiJCJdLEJORDpbdm9pZCAwLCIkIl0sQk9COlt2b2lkIDAsIkJzIl0sQlJMOlsiUiQiXSxCU0Q6W3ZvaWQgMCwiJCJdLEJXUDpbdm9pZCAwLCJQIl0sQllOOlt2b2lkIDAsItGALiIsMl0sQllSOlt2b2lkIDAsdm9pZCAwLDBdLEJaRDpbdm9pZCAwLCIkIl0sQ0FEOlsiQ0EkIiwiJCIsMl0sQ0hGOlt2b2lkIDAsdm9pZCAwLDJdLENMRjpbdm9pZCAwLHZvaWQgMCw0XSxDTFA6W3ZvaWQgMCwiJCIsMF0sQ05ZOlsiQ07CpSIsIsKlIl0sQ09QOlt2b2lkIDAsIiQiLDJdLENSQzpbdm9pZCAwLCLigqEiLDJdLENVQzpbdm9pZCAwLCIkIl0sQ1VQOlt2b2lkIDAsIiQiXSxDWks6W3ZvaWQgMCwiS8SNIiwyXSxESkY6W3ZvaWQgMCx2b2lkIDAsMF0sREtLOlt2b2lkIDAsImtyIiwyXSxET1A6W3ZvaWQgMCwiJCJdLEVHUDpbdm9pZCAwLCJFwqMiXSxFU1A6W3ZvaWQgMCwi4oKnIiwwXSxFVVI6WyLigqwiXSxGSkQ6W3ZvaWQgMCwiJCJdLEZLUDpbdm9pZCAwLCLCoyJdLEdCUDpbIsKjIl0sR0VMOlt2b2lkIDAsIuKCviJdLEdJUDpbdm9pZCAwLCLCoyJdLEdORjpbdm9pZCAwLCJGRyIsMF0sR1RROlt2b2lkIDAsIlEiXSxHWUQ6W3ZvaWQgMCwiJCIsMl0sSEtEOlsiSEskIiwiJCJdLEhOTDpbdm9pZCAwLCJMIl0sSFJLOlt2b2lkIDAsImtuIl0sSFVGOlt2b2lkIDAsIkZ0IiwyXSxJRFI6W3ZvaWQgMCwiUnAiLDJdLElMUzpbIuKCqiJdLElOUjpbIuKCuSJdLElRRDpbdm9pZCAwLHZvaWQgMCwwXSxJUlI6W3ZvaWQgMCx2b2lkIDAsMF0sSVNLOlt2b2lkIDAsImtyIiwwXSxJVEw6W3ZvaWQgMCx2b2lkIDAsMF0sSk1EOlt2b2lkIDAsIiQiXSxKT0Q6W3ZvaWQgMCx2b2lkIDAsM10sSlBZOlsiwqUiLHZvaWQgMCwwXSxLSFI6W3ZvaWQgMCwi4Z+bIl0sS01GOlt2b2lkIDAsIkNGIiwwXSxLUFc6W3ZvaWQgMCwi4oKpIiwwXSxLUlc6WyLigqkiLHZvaWQgMCwwXSxLV0Q6W3ZvaWQgMCx2b2lkIDAsM10sS1lEOlt2b2lkIDAsIiQiXSxLWlQ6W3ZvaWQgMCwi4oK4Il0sTEFLOlt2b2lkIDAsIuKCrSIsMF0sTEJQOlt2b2lkIDAsIkzCoyIsMF0sTEtSOlt2b2lkIDAsIlJzIl0sTFJEOlt2b2lkIDAsIiQiXSxMVEw6W3ZvaWQgMCwiTHQiXSxMVUY6W3ZvaWQgMCx2b2lkIDAsMF0sTFZMOlt2b2lkIDAsIkxzIl0sTFlEOlt2b2lkIDAsdm9pZCAwLDNdLE1HQTpbdm9pZCAwLCJBciIsMF0sTUdGOlt2b2lkIDAsdm9pZCAwLDBdLE1NSzpbdm9pZCAwLCJLIiwwXSxNTlQ6W3ZvaWQgMCwi4oKuIiwyXSxNUk86W3ZvaWQgMCx2b2lkIDAsMF0sTVVSOlt2b2lkIDAsIlJzIiwyXSxNWE46WyJNWCQiLCIkIl0sTVlSOlt2b2lkIDAsIlJNIl0sTkFEOlt2b2lkIDAsIiQiXSxOR046W3ZvaWQgMCwi4oKmIl0sTklPOlt2b2lkIDAsIkMkIl0sTk9LOlt2b2lkIDAsImtyIiwyXSxOUFI6W3ZvaWQgMCwiUnMiXSxOWkQ6WyJOWiQiLCIkIl0sT01SOlt2b2lkIDAsdm9pZCAwLDNdLFBIUDpbdm9pZCAwLCLigrEiXSxQS1I6W3ZvaWQgMCwiUnMiLDJdLFBMTjpbdm9pZCAwLCJ6xYIiXSxQWUc6W3ZvaWQgMCwi4oKyIiwwXSxST046W3ZvaWQgMCwibGVpIl0sUlNEOlt2b2lkIDAsdm9pZCAwLDBdLFJVQjpbdm9pZCAwLCLigr0iXSxSVVI6W3ZvaWQgMCwi0YAuIl0sUldGOlt2b2lkIDAsIlJGIiwwXSxTQkQ6W3ZvaWQgMCwiJCJdLFNFSzpbdm9pZCAwLCJrciIsMl0sU0dEOlt2b2lkIDAsIiQiXSxTSFA6W3ZvaWQgMCwiwqMiXSxTTEw6W3ZvaWQgMCx2b2lkIDAsMF0sU09TOlt2b2lkIDAsdm9pZCAwLDBdLFNSRDpbdm9pZCAwLCIkIl0sU1NQOlt2b2lkIDAsIsKjIl0sU1REOlt2b2lkIDAsdm9pZCAwLDBdLFNUTjpbdm9pZCAwLCJEYiJdLFNZUDpbdm9pZCAwLCLCoyIsMF0sVEhCOlt2b2lkIDAsIuC4vyJdLFRNTTpbdm9pZCAwLHZvaWQgMCwwXSxUTkQ6W3ZvaWQgMCx2b2lkIDAsM10sVE9QOlt2b2lkIDAsIlQkIl0sVFJMOlt2b2lkIDAsdm9pZCAwLDBdLFRSWTpbdm9pZCAwLCLigroiXSxUVEQ6W3ZvaWQgMCwiJCJdLFRXRDpbIk5UJCIsIiQiLDJdLFRaUzpbdm9pZCAwLHZvaWQgMCwyXSxVQUg6W3ZvaWQgMCwi4oK0Il0sVUdYOlt2b2lkIDAsdm9pZCAwLDBdLFVTRDpbIiQiXSxVWUk6W3ZvaWQgMCx2b2lkIDAsMF0sVVlVOlt2b2lkIDAsIiQiXSxVWVc6W3ZvaWQgMCx2b2lkIDAsNF0sVVpTOlt2b2lkIDAsdm9pZCAwLDJdLFZFRjpbdm9pZCAwLCJCcyIsMl0sVk5EOlsi4oKrIix2b2lkIDAsMF0sVlVWOlt2b2lkIDAsdm9pZCAwLDBdLFhBRjpbIkZDRkEiLHZvaWQgMCwwXSxYQ0Q6WyJFQyQiLCIkIl0sWE9GOlsiQ0ZBIix2b2lkIDAsMF0sWFBGOlsiQ0ZQRiIsdm9pZCAwLDBdLFhYWDpbIsKkIl0sWUVSOlt2b2lkIDAsdm9pZCAwLDBdLFpBUjpbdm9pZCAwLCJSIl0sWk1LOlt2b2lkIDAsdm9pZCAwLDBdLFpNVzpbdm9pZCAwLCJaSyJdLFpXRDpbdm9pZCAwLHZvaWQgMCwwXX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3ZhciBQTSx3TSxrTSxTTSxETSxSTSxFTTtmdW5jdGlvbiBBTSh0LGUpe3JldHVybiBMTShnZyh0KVt5Zy5EYXRlRm9ybWF0XSxlKX1mdW5jdGlvbiBUTSh0LGUpe3JldHVybiBMTShnZyh0KVt5Zy5UaW1lRm9ybWF0XSxlKX1mdW5jdGlvbiBOTSh0LGUpe3JldHVybiBMTShnZyh0KVt5Zy5EYXRlVGltZUZvcm1hdF0sZSl9ZnVuY3Rpb24gek0odCxlKXtjb25zdCBuPWdnKHQpLG89blt5Zy5OdW1iZXJTeW1ib2xzXVtlXTtpZih2b2lkIDA9PT1vKXtpZihlPT09Uk0uQ3VycmVuY3lEZWNpbWFsKXJldHVybiBuW3lnLk51bWJlclN5bWJvbHNdW1JNLkRlY2ltYWxdO2lmKGU9PT1STS5DdXJyZW5jeUdyb3VwKXJldHVybiBuW3lnLk51bWJlclN5bWJvbHNdW1JNLkdyb3VwXX1yZXR1cm4gb31mdW5jdGlvbiBJTSh0LGUpe3JldHVybiBnZyh0KVt5Zy5OdW1iZXJGb3JtYXRzXVtlXX0hKGZ1bmN0aW9uKHQpe3RbdC5EZWNpbWFsPTBdPSJEZWNpbWFsIix0W3QuUGVyY2VudD0xXT0iUGVyY2VudCIsdFt0LkN1cnJlbmN5PTJdPSJDdXJyZW5jeSIsdFt0LlNjaWVudGlmaWM9M109IlNjaWVudGlmaWMifSkoUE18fChQTT17fSkpLChmdW5jdGlvbih0KXt0W3QuWmVybz0wXT0iWmVybyIsdFt0Lk9uZT0xXT0iT25lIix0W3QuVHdvPTJdPSJUd28iLHRbdC5GZXc9M109IkZldyIsdFt0Lk1hbnk9NF09Ik1hbnkiLHRbdC5PdGhlcj01XT0iT3RoZXIifSkod018fCh3TT17fSkpLChmdW5jdGlvbih0KXt0W3QuRm9ybWF0PTBdPSJGb3JtYXQiLHRbdC5TdGFuZGFsb25lPTFdPSJTdGFuZGFsb25lIn0pKGtNfHwoa009e30pKSwoZnVuY3Rpb24odCl7dFt0Lk5hcnJvdz0wXT0iTmFycm93Iix0W3QuQWJicmV2aWF0ZWQ9MV09IkFiYnJldmlhdGVkIix0W3QuV2lkZT0yXT0iV2lkZSIsdFt0LlNob3J0PTNdPSJTaG9ydCJ9KShTTXx8KFNNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5TaG9ydD0wXT0iU2hvcnQiLHRbdC5NZWRpdW09MV09Ik1lZGl1bSIsdFt0Lkxvbmc9Ml09IkxvbmciLHRbdC5GdWxsPTNdPSJGdWxsIn0pKERNfHwoRE09e30pKSwoZnVuY3Rpb24odCl7dFt0LkRlY2ltYWw9MF09IkRlY2ltYWwiLHRbdC5Hcm91cD0xXT0iR3JvdXAiLHRbdC5MaXN0PTJdPSJMaXN0Iix0W3QuUGVyY2VudFNpZ249M109IlBlcmNlbnRTaWduIix0W3QuUGx1c1NpZ249NF09IlBsdXNTaWduIix0W3QuTWludXNTaWduPTVdPSJNaW51c1NpZ24iLHRbdC5FeHBvbmVudGlhbD02XT0iRXhwb25lbnRpYWwiLHRbdC5TdXBlcnNjcmlwdGluZ0V4cG9uZW50PTddPSJTdXBlcnNjcmlwdGluZ0V4cG9uZW50Iix0W3QuUGVyTWlsbGU9OF09IlBlck1pbGxlIix0W3RbMS8wXT05XT0iSW5maW5pdHkiLHRbdC5OYU49MTBdPSJOYU4iLHRbdC5UaW1lU2VwYXJhdG9yPTExXT0iVGltZVNlcGFyYXRvciIsdFt0LkN1cnJlbmN5RGVjaW1hbD0xMl09IkN1cnJlbmN5RGVjaW1hbCIsdFt0LkN1cnJlbmN5R3JvdXA9MTNdPSJDdXJyZW5jeUdyb3VwIn0pKFJNfHwoUk09e30pKSwoZnVuY3Rpb24odCl7dFt0LlN1bmRheT0wXT0iU3VuZGF5Iix0W3QuTW9uZGF5PTFdPSJNb25kYXkiLHRbdC5UdWVzZGF5PTJdPSJUdWVzZGF5Iix0W3QuV2VkbmVzZGF5PTNdPSJXZWRuZXNkYXkiLHRbdC5UaHVyc2RheT00XT0iVGh1cnNkYXkiLHRbdC5GcmlkYXk9NV09IkZyaWRheSIsdFt0LlNhdHVyZGF5PTZdPSJTYXR1cmRheSJ9KShFTXx8KEVNPXt9KSk7Y29uc3QgSE09aGc7ZnVuY3Rpb24gRk0odCl7aWYoIXRbeWcuRXh0cmFEYXRhXSl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXh0cmEgbG9jYWxlIGRhdGEgZm9yIHRoZSBsb2NhbGUgIiR7dFt5Zy5Mb2NhbGVJZF19Ii4gVXNlICJyZWdpc3RlckxvY2FsZURhdGEiIHRvIGxvYWQgbmV3IGRhdGEuIFNlZSB0aGUgIkkxOG4gZ3VpZGUiIG9uIGFuZ3VsYXIuaW8gdG8ga25vdyBtb3JlLmApfWZ1bmN0aW9uIExNKHQsZSl7Zm9yKGxldCBuPWU7bj4tMTtuLS0paWYodm9pZCAwIT09dFtuXSlyZXR1cm4gdFtuXTt0aHJvdyBuZXcgRXJyb3IoIkxvY2FsZSBkYXRhIEFQSTogbG9jYWxlIGRhdGEgdW5kZWZpbmVkIil9ZnVuY3Rpb24gQk0odCl7Y29uc3RbZSxuXT10LnNwbGl0KCI6Iik7cmV0dXJue2hvdXJzOitlLG1pbnV0ZXM6K259fWZ1bmN0aW9uIFZNKHQsZSxuPSJlbiIpe2NvbnN0IG89KGZ1bmN0aW9uIGkodCl7cmV0dXJuIGdnKHQpW3lnLkN1cnJlbmNpZXNdfSkobilbdF18fE9NW3RdfHxbXSxhPW9bMV07cmV0dXJuIm5hcnJvdyI9PT1lJiYic3RyaW5nIj09dHlwZW9mIGE/YTpvWzBdfHx0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgVU09L14oXGR7NH0pLT8oXGRcZCktPyhcZFxkKSg/OlQoXGRcZCkoPzo6PyhcZFxkKSg/Ojo/KFxkXGQpKD86XC4oXGQrKSk/KT8pPyhafChbKy1dKShcZFxkKTo/KFxkXGQpKT8pPyQvLGpNPXt9LFdNPS8oKD86W15CRUdITE1PU1dZWmFiY2RobXN3eXonXSspfCg/OicoPzpbXiddfCcnKSonKXwoPzpHezEsNX18eXsxLDR9fFl7MSw0fXxNezEsNX18THsxLDV9fHd7MSwyfXxXezF9fGR7MSwyfXxFezEsNn18Y3sxLDZ9fGF7MSw1fXxiezEsNX18QnsxLDV9fGh7MSwyfXxIezEsMn18bXsxLDJ9fHN7MSwyfXxTezEsM318ensxLDR9fFp7MSw1fXxPezEsNH0pKShbXHNcU10qKS87dmFyIEdNLFlNLHFNO2Z1bmN0aW9uIFpNKHQsZSxuLG8pe2xldCBpPShmdW5jdGlvbiBhKHQpe2lmKHN2KHQpKXJldHVybiB0O2lmKCJudW1iZXIiPT10eXBlb2YgdCYmIWlzTmFOKHQpKXJldHVybiBuZXcgRGF0ZSh0KTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKHQ9dC50cmltKCksL14oXGR7NH0oLVxkezEsMn0oLVxkezEsMn0pPyk/KSQvLnRlc3QodCkpe2NvbnN0W2Usbj0xLG89MV09dC5zcGxpdCgiLSIpLm1hcCgodD0+K3QpKTtyZXR1cm4gWE0oZSxuLTEsbyl9Y29uc3QgZT1wYXJzZUZsb2F0KHQpO2lmKCFpc05hTih0LWUpKXJldHVybiBuZXcgRGF0ZShlKTtsZXQgbjtpZihuPXQubWF0Y2goVU0pKXJldHVybihmdW5jdGlvbiBlKHQpe2NvbnN0IGU9bmV3IERhdGUoMCk7bGV0IG49MCxvPTA7Y29uc3QgaT10WzhdP2Uuc2V0VVRDRnVsbFllYXI6ZS5zZXRGdWxsWWVhcixhPXRbOF0/ZS5zZXRVVENIb3VyczplLnNldEhvdXJzO3RbOV0mJihuPU51bWJlcih0WzldK3RbMTBdKSxvPU51bWJlcih0WzldK3RbMTFdKSk7aS5jYWxsKGUsTnVtYmVyKHRbMV0pLE51bWJlcih0WzJdKS0xLE51bWJlcih0WzNdKSk7Y29uc3Qgcj1OdW1iZXIodFs0XXx8MCktbixzPU51bWJlcih0WzVdfHwwKS1vLGw9TnVtYmVyKHRbNl18fDApLGM9TWF0aC5mbG9vcigxZTMqcGFyc2VGbG9hdCgiMC4iKyh0WzddfHwwKSkpO3JldHVybiBhLmNhbGwoZSxyLHMsbCxjKSxlfSkobil9Y29uc3Qgbj1uZXcgRGF0ZSh0KTtpZighc3YobikpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY29udmVydCAiJHt0fSIgaW50byBhIGRhdGVgKTtyZXR1cm4gbn0pKHQpO2U9S00obixlKXx8ZTtsZXQgcixzPVtdO2Zvcig7ZTspe2lmKHI9V00uZXhlYyhlKSwhcil7cy5wdXNoKGUpO2JyZWFrfXtzPXMuY29uY2F0KHIuc2xpY2UoMSkpO2NvbnN0IHQ9cy5wb3AoKTtpZighdClicmVhaztlPXR9fWxldCBsPWkuZ2V0VGltZXpvbmVPZmZzZXQoKTtvJiYobD1ydihvLGwpLGk9KGZ1bmN0aW9uIGModCxlLG4pe2NvbnN0IG89bj8tMToxLGk9dC5nZXRUaW1lem9uZU9mZnNldCgpLGE9cnYoZSxpKTtyZXR1cm4oZnVuY3Rpb24gcih0LGUpe3JldHVybih0PW5ldyBEYXRlKHQuZ2V0VGltZSgpKSkuc2V0TWludXRlcyh0LmdldE1pbnV0ZXMoKStlKSx0fSkodCxvKihhLWkpKX0pKGksbywhMCkpO2xldCBkPSIiO3JldHVybiBzLmZvckVhY2goKHQ9Pntjb25zdCBlPShmdW5jdGlvbiBvKHQpe2lmKGF2W3RdKXJldHVybiBhdlt0XTtsZXQgZTtzd2l0Y2godCl7Y2FzZSJHIjpjYXNlIkdHIjpjYXNlIkdHRyI6ZT10dihxTS5FcmFzLFNNLkFiYnJldmlhdGVkKTticmVhaztjYXNlIkdHR0ciOmU9dHYocU0uRXJhcyxTTS5XaWRlKTticmVhaztjYXNlIkdHR0dHIjplPXR2KHFNLkVyYXMsU00uTmFycm93KTticmVhaztjYXNlInkiOmU9JE0oWU0uRnVsbFllYXIsMSwwLCExLCEwKTticmVhaztjYXNlInl5IjplPSRNKFlNLkZ1bGxZZWFyLDIsMCwhMCwhMCk7YnJlYWs7Y2FzZSJ5eXkiOmU9JE0oWU0uRnVsbFllYXIsMywwLCExLCEwKTticmVhaztjYXNlInl5eXkiOmU9JE0oWU0uRnVsbFllYXIsNCwwLCExLCEwKTticmVhaztjYXNlIlkiOmU9aXYoMSk7YnJlYWs7Y2FzZSJZWSI6ZT1pdigyLCEwKTticmVhaztjYXNlIllZWSI6ZT1pdigzKTticmVhaztjYXNlIllZWVkiOmU9aXYoNCk7YnJlYWs7Y2FzZSJNIjpjYXNlIkwiOmU9JE0oWU0uTW9udGgsMSwxKTticmVhaztjYXNlIk1NIjpjYXNlIkxMIjplPSRNKFlNLk1vbnRoLDIsMSk7YnJlYWs7Y2FzZSJNTU0iOmU9dHYocU0uTW9udGhzLFNNLkFiYnJldmlhdGVkKTticmVhaztjYXNlIk1NTU0iOmU9dHYocU0uTW9udGhzLFNNLldpZGUpO2JyZWFrO2Nhc2UiTU1NTU0iOmU9dHYocU0uTW9udGhzLFNNLk5hcnJvdyk7YnJlYWs7Y2FzZSJMTEwiOmU9dHYocU0uTW9udGhzLFNNLkFiYnJldmlhdGVkLGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiTExMTCI6ZT10dihxTS5Nb250aHMsU00uV2lkZSxrTS5TdGFuZGFsb25lKTticmVhaztjYXNlIkxMTExMIjplPXR2KHFNLk1vbnRocyxTTS5OYXJyb3csa00uU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJ3IjplPW92KDEpO2JyZWFrO2Nhc2Uid3ciOmU9b3YoMik7YnJlYWs7Y2FzZSJXIjplPW92KDEsITApO2JyZWFrO2Nhc2UiZCI6ZT0kTShZTS5EYXRlLDEpO2JyZWFrO2Nhc2UiZGQiOmU9JE0oWU0uRGF0ZSwyKTticmVhaztjYXNlImMiOmNhc2UiY2MiOmU9JE0oWU0uRGF5LDEpO2JyZWFrO2Nhc2UiY2NjIjplPXR2KHFNLkRheXMsU00uQWJicmV2aWF0ZWQsa00uU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJjY2NjIjplPXR2KHFNLkRheXMsU00uV2lkZSxrTS5TdGFuZGFsb25lKTticmVhaztjYXNlImNjY2NjIjplPXR2KHFNLkRheXMsU00uTmFycm93LGtNLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiY2NjY2NjIjplPXR2KHFNLkRheXMsU00uU2hvcnQsa00uU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJFIjpjYXNlIkVFIjpjYXNlIkVFRSI6ZT10dihxTS5EYXlzLFNNLkFiYnJldmlhdGVkKTticmVhaztjYXNlIkVFRUUiOmU9dHYocU0uRGF5cyxTTS5XaWRlKTticmVhaztjYXNlIkVFRUVFIjplPXR2KHFNLkRheXMsU00uTmFycm93KTticmVhaztjYXNlIkVFRUVFRSI6ZT10dihxTS5EYXlzLFNNLlNob3J0KTticmVhaztjYXNlImEiOmNhc2UiYWEiOmNhc2UiYWFhIjplPXR2KHFNLkRheVBlcmlvZHMsU00uQWJicmV2aWF0ZWQpO2JyZWFrO2Nhc2UiYWFhYSI6ZT10dihxTS5EYXlQZXJpb2RzLFNNLldpZGUpO2JyZWFrO2Nhc2UiYWFhYWEiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5OYXJyb3cpO2JyZWFrO2Nhc2UiYiI6Y2FzZSJiYiI6Y2FzZSJiYmIiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5BYmJyZXZpYXRlZCxrTS5TdGFuZGFsb25lLCEwKTticmVhaztjYXNlImJiYmIiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5XaWRlLGtNLlN0YW5kYWxvbmUsITApO2JyZWFrO2Nhc2UiYmJiYmIiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5OYXJyb3csa00uU3RhbmRhbG9uZSwhMCk7YnJlYWs7Y2FzZSJCIjpjYXNlIkJCIjpjYXNlIkJCQiI6ZT10dihxTS5EYXlQZXJpb2RzLFNNLkFiYnJldmlhdGVkLGtNLkZvcm1hdCwhMCk7YnJlYWs7Y2FzZSJCQkJCIjplPXR2KHFNLkRheVBlcmlvZHMsU00uV2lkZSxrTS5Gb3JtYXQsITApO2JyZWFrO2Nhc2UiQkJCQkIiOmU9dHYocU0uRGF5UGVyaW9kcyxTTS5OYXJyb3csa00uRm9ybWF0LCEwKTticmVhaztjYXNlImgiOmU9JE0oWU0uSG91cnMsMSwtMTIpO2JyZWFrO2Nhc2UiaGgiOmU9JE0oWU0uSG91cnMsMiwtMTIpO2JyZWFrO2Nhc2UiSCI6ZT0kTShZTS5Ib3VycywxKTticmVhaztjYXNlIkhIIjplPSRNKFlNLkhvdXJzLDIpO2JyZWFrO2Nhc2UibSI6ZT0kTShZTS5NaW51dGVzLDEpO2JyZWFrO2Nhc2UibW0iOmU9JE0oWU0uTWludXRlcywyKTticmVhaztjYXNlInMiOmU9JE0oWU0uU2Vjb25kcywxKTticmVhaztjYXNlInNzIjplPSRNKFlNLlNlY29uZHMsMik7YnJlYWs7Y2FzZSJTIjplPSRNKFlNLkZyYWN0aW9uYWxTZWNvbmRzLDEpO2JyZWFrO2Nhc2UiU1MiOmU9JE0oWU0uRnJhY3Rpb25hbFNlY29uZHMsMik7YnJlYWs7Y2FzZSJTU1MiOmU9JE0oWU0uRnJhY3Rpb25hbFNlY29uZHMsMyk7YnJlYWs7Y2FzZSJaIjpjYXNlIlpaIjpjYXNlIlpaWiI6ZT1ldihHTS5TaG9ydCk7YnJlYWs7Y2FzZSJaWlpaWiI6ZT1ldihHTS5FeHRlbmRlZCk7YnJlYWs7Y2FzZSJPIjpjYXNlIk9PIjpjYXNlIk9PTyI6Y2FzZSJ6IjpjYXNlInp6IjpjYXNlInp6eiI6ZT1ldihHTS5TaG9ydEdNVCk7YnJlYWs7Y2FzZSJPT09PIjpjYXNlIlpaWloiOmNhc2Uienp6eiI6ZT1ldihHTS5Mb25nKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfXJldHVybiBhdlt0XT1lLGV9KSh0KTtkKz1lP2UoaSxuLGwpOiInJyI9PT10PyInIjp0LnJlcGxhY2UoLyheJ3wnJCkvZywiIikucmVwbGFjZSgvJycvZywiJyIpfSkpLGR9ZnVuY3Rpb24gWE0odCxlLG4pe2NvbnN0IG89bmV3IERhdGUoMCk7cmV0dXJuIG8uc2V0RnVsbFllYXIodCxlLG4pLG8uc2V0SG91cnMoMCwwLDApLG99ZnVuY3Rpb24gS00odCxlKXtjb25zdCBuPShmdW5jdGlvbiBvKHQpe3JldHVybiBnZyh0KVt5Zy5Mb2NhbGVJZF19KSh0KTtpZihqTVtuXT1qTVtuXXx8e30sak1bbl1bZV0pcmV0dXJuIGpNW25dW2VdO2xldCBpPSIiO3N3aXRjaChlKXtjYXNlInNob3J0RGF0ZSI6aT1BTSh0LERNLlNob3J0KTticmVhaztjYXNlIm1lZGl1bURhdGUiOmk9QU0odCxETS5NZWRpdW0pO2JyZWFrO2Nhc2UibG9uZ0RhdGUiOmk9QU0odCxETS5Mb25nKTticmVhaztjYXNlImZ1bGxEYXRlIjppPUFNKHQsRE0uRnVsbCk7YnJlYWs7Y2FzZSJzaG9ydFRpbWUiOmk9VE0odCxETS5TaG9ydCk7YnJlYWs7Y2FzZSJtZWRpdW1UaW1lIjppPVRNKHQsRE0uTWVkaXVtKTticmVhaztjYXNlImxvbmdUaW1lIjppPVRNKHQsRE0uTG9uZyk7YnJlYWs7Y2FzZSJmdWxsVGltZSI6aT1UTSh0LERNLkZ1bGwpO2JyZWFrO2Nhc2Uic2hvcnQiOmNvbnN0IGU9S00odCwic2hvcnRUaW1lIiksbj1LTSh0LCJzaG9ydERhdGUiKTtpPUpNKE5NKHQsRE0uU2hvcnQpLFtlLG5dKTticmVhaztjYXNlIm1lZGl1bSI6Y29uc3Qgbz1LTSh0LCJtZWRpdW1UaW1lIiksYT1LTSh0LCJtZWRpdW1EYXRlIik7aT1KTShOTSh0LERNLk1lZGl1bSksW28sYV0pO2JyZWFrO2Nhc2UibG9uZyI6Y29uc3Qgcj1LTSh0LCJsb25nVGltZSIpLHM9S00odCwibG9uZ0RhdGUiKTtpPUpNKE5NKHQsRE0uTG9uZyksW3Isc10pO2JyZWFrO2Nhc2UiZnVsbCI6Y29uc3QgbD1LTSh0LCJmdWxsVGltZSIpLGM9S00odCwiZnVsbERhdGUiKTtpPUpNKE5NKHQsRE0uRnVsbCksW2wsY10pfXJldHVybiBpJiYoak1bbl1bZV09aSksaX1mdW5jdGlvbiBKTSh0LGUpe3JldHVybiBlJiYodD10LnJlcGxhY2UoL1x7KFtefV0rKX0vZywoZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbCE9ZSYmbiBpbiBlP2Vbbl06dH0pKSksdH1mdW5jdGlvbiBRTSh0LGUsbj0iLSIsbyxpKXtsZXQgYT0iIjsodDwwfHxpJiZ0PD0wKSYmKGk/dD0xLXQ6KHQ9LXQsYT1uKSk7bGV0IHI9U3RyaW5nKHQpO2Zvcig7ci5sZW5ndGg8ZTspcj0iMCIrcjtyZXR1cm4gbyYmKHI9ci5zdWJzdHIoci5sZW5ndGgtZSkpLGErcn1mdW5jdGlvbiAkTSh0LGUsbj0wLG89ITEsaT0hMSl7cmV0dXJuIGZ1bmN0aW9uKGEscil7bGV0IHM9KGZ1bmN0aW9uIGwodCxlKXtzd2l0Y2godCl7Y2FzZSBZTS5GdWxsWWVhcjpyZXR1cm4gZS5nZXRGdWxsWWVhcigpO2Nhc2UgWU0uTW9udGg6cmV0dXJuIGUuZ2V0TW9udGgoKTtjYXNlIFlNLkRhdGU6cmV0dXJuIGUuZ2V0RGF0ZSgpO2Nhc2UgWU0uSG91cnM6cmV0dXJuIGUuZ2V0SG91cnMoKTtjYXNlIFlNLk1pbnV0ZXM6cmV0dXJuIGUuZ2V0TWludXRlcygpO2Nhc2UgWU0uU2Vjb25kczpyZXR1cm4gZS5nZXRTZWNvbmRzKCk7Y2FzZSBZTS5GcmFjdGlvbmFsU2Vjb25kczpyZXR1cm4gZS5nZXRNaWxsaXNlY29uZHMoKTtjYXNlIFlNLkRheTpyZXR1cm4gZS5nZXREYXkoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBEYXRlVHlwZSB2YWx1ZSAiJHt0fSIuYCl9fSkodCxhKTtpZigobj4wfHxzPi1uKSYmKHMrPW4pLHQ9PT1ZTS5Ib3VycykwPT09cyYmLTEyPT09biYmKHM9MTIpO2Vsc2UgaWYodD09PVlNLkZyYWN0aW9uYWxTZWNvbmRzKXJldHVybihmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIFFNKHQsMykuc3Vic3RyKDAsZSl9KShzLGUpO2NvbnN0IGQ9ek0ocixSTS5NaW51c1NpZ24pO3JldHVybiBRTShzLGUsZCxvLGkpfX1mdW5jdGlvbiB0dih0LGUsbj1rTS5Gb3JtYXQsbz0hMSl7cmV0dXJuIGZ1bmN0aW9uKGksYSl7cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4sbyxpLGEpe3N3aXRjaChuKXtjYXNlIHFNLk1vbnRoczpyZXR1cm4oZnVuY3Rpb24gcih0LGUsbil7Y29uc3Qgbz1nZyh0KSxpPUxNKFtvW3lnLk1vbnRoc0Zvcm1hdF0sb1t5Zy5Nb250aHNTdGFuZGFsb25lXV0sZSk7cmV0dXJuIExNKGksbil9KShlLGksbylbdC5nZXRNb250aCgpXTtjYXNlIHFNLkRheXM6cmV0dXJuKGZ1bmN0aW9uIHModCxlLG4pe2NvbnN0IG89Z2codCksaT1MTShbb1t5Zy5EYXlzRm9ybWF0XSxvW3lnLkRheXNTdGFuZGFsb25lXV0sZSk7cmV0dXJuIExNKGksbil9KShlLGksbylbdC5nZXREYXkoKV07Y2FzZSBxTS5EYXlQZXJpb2RzOmNvbnN0IHI9dC5nZXRIb3VycygpLHM9dC5nZXRNaW51dGVzKCk7aWYoYSl7Y29uc3QgdD0oZnVuY3Rpb24gbCh0KXtjb25zdCBlPWdnKHQpO3JldHVybiBGTShlKSwoZVt5Zy5FeHRyYURhdGFdWzJdfHxbXSkubWFwKCh0PT4ic3RyaW5nIj09dHlwZW9mIHQ/Qk0odCk6W0JNKHRbMF0pLEJNKHRbMV0pXSkpfSkoZSksbj0oZnVuY3Rpb24gYyh0LGUsbil7Y29uc3Qgbz1nZyh0KTtGTShvKTtjb25zdCBpPUxNKFtvW3lnLkV4dHJhRGF0YV1bMF0sb1t5Zy5FeHRyYURhdGFdWzFdXSxlKXx8W107cmV0dXJuIExNKGksbil8fFtdfSkoZSxpLG8pLGE9dC5maW5kSW5kZXgoKHQ9PntpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdFtlLG5dPXQsbz1yPj1lLmhvdXJzJiZzPj1lLm1pbnV0ZXMsaT1yPG4uaG91cnN8fHI9PT1uLmhvdXJzJiZzPG4ubWludXRlcztpZihlLmhvdXJzPG4uaG91cnMpe2lmKG8mJmkpcmV0dXJuITB9ZWxzZSBpZihvfHxpKXJldHVybiEwfWVsc2UgaWYodC5ob3Vycz09PXImJnQubWludXRlcz09PXMpcmV0dXJuITA7cmV0dXJuITF9KSk7aWYoLTEhPT1hKXJldHVybiBuW2FdfXJldHVybihmdW5jdGlvbiBkKHQsZSxuKXtjb25zdCBvPWdnKHQpLGk9TE0oW29beWcuRGF5UGVyaW9kc0Zvcm1hdF0sb1t5Zy5EYXlQZXJpb2RzU3RhbmRhbG9uZV1dLGUpO3JldHVybiBMTShpLG4pfSkoZSxpLG8pW3I8MTI/MDoxXTtjYXNlIHFNLkVyYXM6cmV0dXJuKGZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gTE0oZ2codClbeWcuRXJhc10sZSl9KShlLG8pW3QuZ2V0RnVsbFllYXIoKTw9MD8wOjFdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHRyYW5zbGF0aW9uIHR5cGUgJHtufWApfX0pKGksYSx0LGUsbixvKX19ZnVuY3Rpb24gZXYodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixvKXtjb25zdCBpPS0xKm8sYT16TShuLFJNLk1pbnVzU2lnbikscj1pPjA/TWF0aC5mbG9vcihpLzYwKTpNYXRoLmNlaWwoaS82MCk7c3dpdGNoKHQpe2Nhc2UgR00uU2hvcnQ6cmV0dXJuKGk+PTA/IisiOiIiKStRTShyLDIsYSkrUU0oTWF0aC5hYnMoaSU2MCksMixhKTtjYXNlIEdNLlNob3J0R01UOnJldHVybiJHTVQiKyhpPj0wPyIrIjoiIikrUU0ociwxLGEpO2Nhc2UgR00uTG9uZzpyZXR1cm4iR01UIisoaT49MD8iKyI6IiIpK1FNKHIsMixhKSsiOiIrUU0oTWF0aC5hYnMoaSU2MCksMixhKTtjYXNlIEdNLkV4dGVuZGVkOnJldHVybiAwPT09bz8iWiI6KGk+PTA/IisiOiIiKStRTShyLDIsYSkrIjoiK1FNKE1hdGguYWJzKGklNjApLDIsYSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gem9uZSB3aWR0aCAiJHt0fSJgKX19fSEoZnVuY3Rpb24odCl7dFt0LlNob3J0PTBdPSJTaG9ydCIsdFt0LlNob3J0R01UPTFdPSJTaG9ydEdNVCIsdFt0Lkxvbmc9Ml09IkxvbmciLHRbdC5FeHRlbmRlZD0zXT0iRXh0ZW5kZWQifSkoR018fChHTT17fSkpLChmdW5jdGlvbih0KXt0W3QuRnVsbFllYXI9MF09IkZ1bGxZZWFyIix0W3QuTW9udGg9MV09Ik1vbnRoIix0W3QuRGF0ZT0yXT0iRGF0ZSIsdFt0LkhvdXJzPTNdPSJIb3VycyIsdFt0Lk1pbnV0ZXM9NF09Ik1pbnV0ZXMiLHRbdC5TZWNvbmRzPTVdPSJTZWNvbmRzIix0W3QuRnJhY3Rpb25hbFNlY29uZHM9Nl09IkZyYWN0aW9uYWxTZWNvbmRzIix0W3QuRGF5PTddPSJEYXkifSkoWU18fChZTT17fSkpLChmdW5jdGlvbih0KXt0W3QuRGF5UGVyaW9kcz0wXT0iRGF5UGVyaW9kcyIsdFt0LkRheXM9MV09IkRheXMiLHRbdC5Nb250aHM9Ml09Ik1vbnRocyIsdFt0LkVyYXM9M109IkVyYXMifSkocU18fChxTT17fSkpO2Z1bmN0aW9uIG52KHQpe3JldHVybiBYTSh0LmdldEZ1bGxZZWFyKCksdC5nZXRNb250aCgpLHQuZ2V0RGF0ZSgpKyg0LXQuZ2V0RGF5KCkpKX1mdW5jdGlvbiBvdih0LGU9ITEpe3JldHVybiBmdW5jdGlvbihuLG8pe2xldCBpO2lmKGUpe2NvbnN0IHQ9bmV3IERhdGUobi5nZXRGdWxsWWVhcigpLG4uZ2V0TW9udGgoKSwxKS5nZXREYXkoKS0xLGU9bi5nZXREYXRlKCk7aT0xK01hdGguZmxvb3IoKGUrdCkvNyl9ZWxzZXtjb25zdCB0PW52KG4pLGU9KGZ1bmN0aW9uIGEodCl7Y29uc3QgZT1YTSh0LDAsMSkuZ2V0RGF5KCk7cmV0dXJuIFhNKHQsMCwxKyhlPD00PzQ6MTEpLWUpfSkodC5nZXRGdWxsWWVhcigpKSxvPXQuZ2V0VGltZSgpLWUuZ2V0VGltZSgpO2k9MStNYXRoLnJvdW5kKG8vNjA0OGU1KX1yZXR1cm4gUU0oaSx0LHpNKG8sUk0uTWludXNTaWduKSl9fWZ1bmN0aW9uIGl2KHQsZT0hMSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7cmV0dXJuIFFNKG52KG4pLmdldEZ1bGxZZWFyKCksdCx6TShvLFJNLk1pbnVzU2lnbiksZSl9fWNvbnN0IGF2PXt9O2Z1bmN0aW9uIHJ2KHQsZSl7dD10LnJlcGxhY2UoLzovZywiIik7Y29uc3Qgbj1EYXRlLnBhcnNlKCJKYW4gMDEsIDE5NzAgMDA6MDA6MDAgIit0KS82ZTQ7cmV0dXJuIGlzTmFOKG4pP2U6bn1mdW5jdGlvbiBzdih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGUmJiFpc05hTih0LnZhbHVlT2YoKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGx2PS9eKFxkKyk/XC4oKFxkKykoLShcZCspKT8pPyQvLGN2PSIuIixkdj0iMCI7ZnVuY3Rpb24gcHYodCxlLG4sbyxpLGEscj0hMSl7bGV0IHM9IiIsbD0hMTtpZihpc0Zpbml0ZSh0KSl7bGV0IGM9KGZ1bmN0aW9uIGModCl7bGV0IGUsbixvLGksYSxyPU1hdGguYWJzKHQpKyIiLHM9MDsobj1yLmluZGV4T2YoY3YpKT4tMSYmKHI9ci5yZXBsYWNlKGN2LCIiKSk7KG89ci5zZWFyY2goL2UvaSkpPjA/KG48MCYmKG49byksbis9K3Iuc2xpY2UobysxKSxyPXIuc3Vic3RyaW5nKDAsbykpOm48MCYmKG49ci5sZW5ndGgpO2ZvcihvPTA7ci5jaGFyQXQobyk9PT1kdjtvKyspO2lmKG89PT0oYT1yLmxlbmd0aCkpZT1bMF0sbj0xO2Vsc2V7Zm9yKGEtLTtyLmNoYXJBdChhKT09PWR2OylhLS07Zm9yKG4tPW8sZT1bXSxpPTA7bzw9YTtvKyssaSsrKWVbaV09TnVtYmVyKHIuY2hhckF0KG8pKX1uPjIyJiYoZT1lLnNwbGljZSgwLDIxKSxzPW4tMSxuPTEpO3JldHVybntkaWdpdHM6ZSxleHBvbmVudDpzLGludGVnZXJMZW46bn19KSh0KTtyJiYoYz0oZnVuY3Rpb24gZCh0KXtpZigwPT09dC5kaWdpdHNbMF0pcmV0dXJuIHQ7Y29uc3QgZT10LmRpZ2l0cy5sZW5ndGgtdC5pbnRlZ2VyTGVuO3QuZXhwb25lbnQ/dC5leHBvbmVudCs9MjooMD09PWU/dC5kaWdpdHMucHVzaCgwLDApOjE9PT1lJiZ0LmRpZ2l0cy5wdXNoKDApLHQuaW50ZWdlckxlbis9Mik7cmV0dXJuIHR9KShjKSk7bGV0IGQ9ZS5taW5JbnQscD1lLm1pbkZyYWMsbT1lLm1heEZyYWM7aWYoYSl7Y29uc3QgdD1hLm1hdGNoKGx2KTtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7YX0gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mb2ApO2NvbnN0IGU9dFsxXSxuPXRbM10sbz10WzVdO251bGwhPWUmJihkPWd2KGUpKSxudWxsIT1uJiYocD1ndihuKSksbnVsbCE9bz9tPWd2KG8pOm51bGwhPW4mJnA+bSYmKG09cCl9IShmdW5jdGlvbiBwKHQsZSxuKXtpZihlPm4pdGhyb3cgbmV3IEVycm9yKGBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIGZyYWN0aW9uICgke2V9KSBpcyBoaWdoZXIgdGhhbiB0aGUgbWF4aW11bSAoJHtufSkuYCk7bGV0IG89dC5kaWdpdHMsaT1vLmxlbmd0aC10LmludGVnZXJMZW47Y29uc3QgYT1NYXRoLm1pbihNYXRoLm1heChlLGkpLG4pO2xldCByPWErdC5pbnRlZ2VyTGVuLHM9b1tyXTtpZihyPjApe28uc3BsaWNlKE1hdGgubWF4KHQuaW50ZWdlckxlbixyKSk7Zm9yKGxldCB0PXI7dDxvLmxlbmd0aDt0Kyspb1t0XT0wfWVsc2V7aT1NYXRoLm1heCgwLGkpLHQuaW50ZWdlckxlbj0xLG8ubGVuZ3RoPU1hdGgubWF4KDEscj1hKzEpLG9bMF09MDtmb3IobGV0IHQ9MTt0PHI7dCsrKW9bdF09MH1pZihzPj01KWlmKHItMTwwKXtmb3IobGV0IGU9MDtlPnI7ZS0tKW8udW5zaGlmdCgwKSx0LmludGVnZXJMZW4rKztvLnVuc2hpZnQoMSksdC5pbnRlZ2VyTGVuKyt9ZWxzZSBvW3ItMV0rKztmb3IoO2k8TWF0aC5tYXgoMCxhKTtpKyspby5wdXNoKDApO2xldCBsPTAhPT1hO2NvbnN0IGM9ZSt0LmludGVnZXJMZW4sZD1vLnJlZHVjZVJpZ2h0KChmdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gb1tuXT0oZSs9dCk8MTA/ZTplLTEwLGwmJigwPT09b1tuXSYmbj49Yz9vLnBvcCgpOmw9ITEpLGU+PTEwPzE6MH0pLDApO2QmJihvLnVuc2hpZnQoZCksdC5pbnRlZ2VyTGVuKyspfSkoYyxwLG0pO2xldCB1PWMuZGlnaXRzLGY9Yy5pbnRlZ2VyTGVuO2NvbnN0IGc9Yy5leHBvbmVudDtsZXQgaD1bXTtmb3IobD11LmV2ZXJ5KCh0PT4hdCkpO2Y8ZDtmKyspdS51bnNoaWZ0KDApO2Zvcig7ZjwwO2YrKyl1LnVuc2hpZnQoMCk7Zj4wP2g9dS5zcGxpY2UoZix1Lmxlbmd0aCk6KGg9dSx1PVswXSk7Y29uc3QgYj1bXTtmb3IodS5sZW5ndGg+PWUubGdTaXplJiZiLnVuc2hpZnQodS5zcGxpY2UoLWUubGdTaXplLHUubGVuZ3RoKS5qb2luKCIiKSk7dS5sZW5ndGg+ZS5nU2l6ZTspYi51bnNoaWZ0KHUuc3BsaWNlKC1lLmdTaXplLHUubGVuZ3RoKS5qb2luKCIiKSk7dS5sZW5ndGgmJmIudW5zaGlmdCh1LmpvaW4oIiIpKSxzPWIuam9pbih6TShuLG8pKSxoLmxlbmd0aCYmKHMrPXpNKG4saSkraC5qb2luKCIiKSksZyYmKHMrPXpNKG4sUk0uRXhwb25lbnRpYWwpKyIrIitnKX1lbHNlIHM9ek0obixSTS5JbmZpbml0eSk7cmV0dXJuIHM9dDwwJiYhbD9lLm5lZ1ByZStzK2UubmVnU3VmOmUucG9zUHJlK3MrZS5wb3NTdWYsc31mdW5jdGlvbiBtdih0LGUsbixvLGkpe2NvbnN0IGE9ZnYoSU0oZSxQTS5DdXJyZW5jeSksek0oZSxSTS5NaW51c1NpZ24pKTthLm1pbkZyYWM9KGZ1bmN0aW9uIHIodCl7bGV0IGU7Y29uc3Qgbj1PTVt0XTtyZXR1cm4gbiYmKGU9blsyXSksIm51bWJlciI9PXR5cGVvZiBlP2U6Mn0pKG8pLGEubWF4RnJhYz1hLm1pbkZyYWM7cmV0dXJuIHB2KHQsYSxlLFJNLkN1cnJlbmN5R3JvdXAsUk0uQ3VycmVuY3lEZWNpbWFsLGkpLnJlcGxhY2UoIsKkIixuKS5yZXBsYWNlKCLCpCIsIiIpLnRyaW0oKX1mdW5jdGlvbiB1dih0LGUsbil7cmV0dXJuIHB2KHQsZnYoSU0oZSxQTS5EZWNpbWFsKSx6TShlLFJNLk1pbnVzU2lnbikpLGUsUk0uR3JvdXAsUk0uRGVjaW1hbCxuKX1mdW5jdGlvbiBmdih0LGU9Ii0iKXtjb25zdCBuPXttaW5JbnQ6MSxtaW5GcmFjOjAsbWF4RnJhYzowLHBvc1ByZToiIixwb3NTdWY6IiIsbmVnUHJlOiIiLG5lZ1N1ZjoiIixnU2l6ZTowLGxnU2l6ZTowfSxvPXQuc3BsaXQoIjsiKSxpPW9bMF0sYT1vWzFdLHI9LTEhPT1pLmluZGV4T2YoY3YpP2kuc3BsaXQoY3YpOltpLnN1YnN0cmluZygwLGkubGFzdEluZGV4T2YoZHYpKzEpLGkuc3Vic3RyaW5nKGkubGFzdEluZGV4T2YoZHYpKzEpXSxzPXJbMF0sbD1yWzFdfHwiIjtuLnBvc1ByZT1zLnN1YnN0cigwLHMuaW5kZXhPZigiIyIpKTtmb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrKyl7Y29uc3QgZT1sLmNoYXJBdCh0KTtlPT09ZHY/bi5taW5GcmFjPW4ubWF4RnJhYz10KzE6IiMiPT09ZT9uLm1heEZyYWM9dCsxOm4ucG9zU3VmKz1lfWNvbnN0IGM9cy5zcGxpdCgiLCIpO2lmKG4uZ1NpemU9Y1sxXT9jWzFdLmxlbmd0aDowLG4ubGdTaXplPWNbMl18fGNbMV0/KGNbMl18fGNbMV0pLmxlbmd0aDowLGEpe2NvbnN0IHQ9aS5sZW5ndGgtbi5wb3NQcmUubGVuZ3RoLW4ucG9zU3VmLmxlbmd0aCxlPWEuaW5kZXhPZigiIyIpO24ubmVnUHJlPWEuc3Vic3RyKDAsZSkucmVwbGFjZSgvJy9nLCIiKSxuLm5lZ1N1Zj1hLnN1YnN0cihlK3QpLnJlcGxhY2UoLycvZywiIil9ZWxzZSBuLm5lZ1ByZT1lK24ucG9zUHJlLG4ubmVnU3VmPW4ucG9zU3VmO3JldHVybiBufWZ1bmN0aW9uIGd2KHQpe2NvbnN0IGU9cGFyc2VJbnQodCk7aWYoaXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgIit0KTtyZXR1cm4gZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgaHZ7fWZ1bmN0aW9uIGJ2KHQsZSxuLG8pe2xldCBpPWA9JHt0fWA7aWYoZS5pbmRleE9mKGkpPi0xKXJldHVybiBpO2lmKGk9bi5nZXRQbHVyYWxDYXRlZ29yeSh0LG8pLGUuaW5kZXhPZihpKT4tMSlyZXR1cm4gaTtpZihlLmluZGV4T2YoIm90aGVyIik+LTEpcmV0dXJuIm90aGVyIjt0aHJvdyBuZXcgRXJyb3IoYE5vIHBsdXJhbCBtZXNzYWdlIGZvdW5kIGZvciB2YWx1ZSAiJHt0fSJgKX1jbGFzcyB5diBleHRlbmRzIGh2e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5sb2NhbGU9dH1nZXRQbHVyYWxDYXRlZ29yeSh0LGUpe3N3aXRjaChITShlfHx0aGlzLmxvY2FsZSkodCkpe2Nhc2Ugd00uWmVybzpyZXR1cm4iemVybyI7Y2FzZSB3TS5PbmU6cmV0dXJuIm9uZSI7Y2FzZSB3TS5Ud286cmV0dXJuInR3byI7Y2FzZSB3TS5GZXc6cmV0dXJuImZldyI7Y2FzZSB3TS5NYW55OnJldHVybiJtYW55IjtkZWZhdWx0OnJldHVybiJvdGhlciJ9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIF92KHQsZSl7ZT1lbmNvZGVVUklDb21wb25lbnQoZSk7Zm9yKGNvbnN0IG4gb2YgdC5zcGxpdCgiOyIpKXtjb25zdCB0PW4uaW5kZXhPZigiPSIpLFtvLGldPS0xPT10P1tuLCIiXTpbbi5zbGljZSgwLHQpLG4uc2xpY2UodCsxKV07aWYoby50cmltKCk9PT1lKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoaSl9cmV0dXJuIG51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3l2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5dikoVHIoUV8pKX0seXYuybVwcm92PVNuKHt0b2tlbjp5dixmYWN0b3J5Onl2Lsm1ZmFjfSkseXYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHl2LFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XX0pLG51bGwpO2NsYXNzIEN2e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2l0ZXJhYmxlRGlmZmVycz10LHRoaXMuX2tleVZhbHVlRGlmZmVycz1lLHRoaXMuX25nRWw9bix0aGlzLl9yZW5kZXJlcj1vLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9pbml0aWFsQ2xhc3Nlcz1bXSx0aGlzLl9yYXdDbGFzcz1udWxsfXNldCBrbGFzcyh0KXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2VzKSx0aGlzLl9pbml0aWFsQ2xhc3Nlcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6W10sdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2VzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5fcmF3Q2xhc3MpfXNldCBuZ0NsYXNzKHQpe3RoaXMuX3JlbW92ZUNsYXNzZXModGhpcy5fcmF3Q2xhc3MpLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5faXRlcmFibGVEaWZmZXI9bnVsbCx0aGlzLl9rZXlWYWx1ZURpZmZlcj1udWxsLHRoaXMuX3Jhd0NsYXNzPSJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KC9ccysvKTp0LHRoaXMuX3Jhd0NsYXNzJiYoZG0odGhpcy5fcmF3Q2xhc3MpP3RoaXMuX2l0ZXJhYmxlRGlmZmVyPXRoaXMuX2l0ZXJhYmxlRGlmZmVycy5maW5kKHRoaXMuX3Jhd0NsYXNzKS5jcmVhdGUoKTp0aGlzLl9rZXlWYWx1ZURpZmZlcj10aGlzLl9rZXlWYWx1ZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2l0ZXJhYmxlRGlmZmVyKXtjb25zdCB0PXRoaXMuX2l0ZXJhYmxlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO3QmJnRoaXMuX2FwcGx5SXRlcmFibGVDaGFuZ2VzKHQpfWVsc2UgaWYodGhpcy5fa2V5VmFsdWVEaWZmZXIpe2NvbnN0IHQ9dGhpcy5fa2V5VmFsdWVEaWZmZXIuZGlmZih0aGlzLl9yYXdDbGFzcyk7dCYmdGhpcy5fYXBwbHlLZXlWYWx1ZUNoYW5nZXModCl9fV9hcHBseUtleVZhbHVlQ2hhbmdlcyh0KXt0LmZvckVhY2hBZGRlZEl0ZW0oKHQ9PnRoaXMuX3RvZ2dsZUNsYXNzKHQua2V5LHQuY3VycmVudFZhbHVlKSkpLHQuZm9yRWFjaENoYW5nZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hSZW1vdmVkSXRlbSgodD0+e3QucHJldmlvdXNWYWx1ZSYmdGhpcy5fdG9nZ2xlQ2xhc3ModC5rZXksITEpfSkpfV9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0KXt0LmZvckVhY2hBZGRlZEl0ZW0oKHQ9PntpZigic3RyaW5nIiE9dHlwZW9mIHQuaXRlbSl0aHJvdyBuZXcgRXJyb3IoYE5nQ2xhc3MgY2FuIG9ubHkgdG9nZ2xlIENTUyBjbGFzc2VzIGV4cHJlc3NlZCBhcyBzdHJpbmdzLCBnb3QgJHtLZSh0Lml0ZW0pfWApO3RoaXMuX3RvZ2dsZUNsYXNzKHQuaXRlbSwhMCl9KSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9PnRoaXMuX3RvZ2dsZUNsYXNzKHQuaXRlbSwhMSkpKX1fYXBwbHlDbGFzc2VzKHQpe3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaCgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModCwhMCkpKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT50aGlzLl90b2dnbGVDbGFzcyhlLCEhdFtlXSkpKSl9X3JlbW92ZUNsYXNzZXModCl7dCYmKEFycmF5LmlzQXJyYXkodCl8fHQgaW5zdGFuY2VvZiBTZXQ/dC5mb3JFYWNoKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LCExKSkpOk9iamVjdC5rZXlzKHQpLmZvckVhY2goKHQ9PnRoaXMuX3RvZ2dsZUNsYXNzKHQsITEpKSkpfV90b2dnbGVDbGFzcyh0LGUpeyh0PXQudHJpbSgpKSYmdC5zcGxpdCgvXHMrL2cpLmZvckVhY2goKHQ9PntlP3RoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCx0KTp0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsdCl9KSl9fUN2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDdikoZnUoaGIpLGZ1KHliKSxmdShLaCksZnUoJGgpKX0sQ3YuybVkaXI9aG8oe3R5cGU6Q3Ysc2VsZWN0b3JzOltbIiIsIm5nQ2xhc3MiLCIiXV0saW5wdXRzOntrbGFzczpbImNsYXNzIiwia2xhc3MiXSxuZ0NsYXNzOiJuZ0NsYXNzIn19KSxDdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhifSx7dHlwZTp5Yn0se3R5cGU6S2h9LHt0eXBlOiRofV0sQ3YucHJvcERlY29yYXRvcnM9e2tsYXNzOlt7dHlwZTpSXyxhcmdzOlsiY2xhc3MiXX1dLG5nQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJuZ0NsYXNzIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdDbGFzc10ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGJ9LHt0eXBlOnlifSx7dHlwZTpLaH0se3R5cGU6JGh9XX0pLHtrbGFzczpbe3R5cGU6Ul8sYXJnczpbImNsYXNzIl19XSxuZ0NsYXNzOlt7dHlwZTpSXyxhcmdzOlsibmdDbGFzcyJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE12e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl9jb21wb25lbnRSZWY9bnVsbCx0aGlzLl9tb2R1bGVSZWY9bnVsbH1uZ09uQ2hhbmdlcyh0KXtpZih0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCksdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhpcy5uZ0NvbXBvbmVudE91dGxldCl7Y29uc3QgZT10aGlzLm5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3J8fHRoaXMuX3ZpZXdDb250YWluZXJSZWYucGFyZW50SW5qZWN0b3I7aWYodC5uZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSlpZih0aGlzLl9tb2R1bGVSZWYmJnRoaXMuX21vZHVsZVJlZi5kZXN0cm95KCksdGhpcy5uZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSl7Y29uc3QgdD1lLmdldCh6Yik7dGhpcy5fbW9kdWxlUmVmPXRoaXMubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkuY3JlYXRlKHQuaW5qZWN0b3IpfWVsc2UgdGhpcy5fbW9kdWxlUmVmPW51bGw7Y29uc3Qgbj0odGhpcy5fbW9kdWxlUmVmP3RoaXMuX21vZHVsZVJlZi5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6ZS5nZXQoR2gpKS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0aGlzLm5nQ29tcG9uZW50T3V0bGV0KTt0aGlzLl9jb21wb25lbnRSZWY9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQobix0aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aCxlLHRoaXMubmdDb21wb25lbnRPdXRsZXRDb250ZW50KX19bmdPbkRlc3Ryb3koKXt0aGlzLl9tb2R1bGVSZWYmJnRoaXMuX21vZHVsZVJlZi5kZXN0cm95KCl9fU12Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNdikoZnUoRmIpKX0sTXYuybVkaXI9aG8oe3R5cGU6TXYsc2VsZWN0b3JzOltbIiIsIm5nQ29tcG9uZW50T3V0bGV0IiwiIl1dLGlucHV0czp7bmdDb21wb25lbnRPdXRsZXQ6Im5nQ29tcG9uZW50T3V0bGV0IixuZ0NvbXBvbmVudE91dGxldEluamVjdG9yOiJuZ0NvbXBvbmVudE91dGxldEluamVjdG9yIixuZ0NvbXBvbmVudE91dGxldENvbnRlbnQ6Im5nQ29tcG9uZW50T3V0bGV0Q29udGVudCIsbmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3Rvcnk6Im5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5In0sZmVhdHVyZXM6W3FvXX0pLE12LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9XSxNdi5wcm9wRGVjb3JhdG9ycz17bmdDb21wb25lbnRPdXRsZXQ6W3t0eXBlOlJffV0sbmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcjpbe3R5cGU6Ul99XSxuZ0NvbXBvbmVudE91dGxldENvbnRlbnQ6W3t0eXBlOlJffV0sbmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3Rvcnk6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTXYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nQ29tcG9uZW50T3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn1dfSkse25nQ29tcG9uZW50T3V0bGV0Olt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3I6W3t0eXBlOlJffV0sbmdDb21wb25lbnRPdXRsZXRDb250ZW50Olt7dHlwZTpSX31dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB2dntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLiRpbXBsaWNpdD10LHRoaXMubmdGb3JPZj1lLHRoaXMuaW5kZXg9bix0aGlzLmNvdW50PW99Z2V0IGZpcnN0KCl7cmV0dXJuIDA9PT10aGlzLmluZGV4fWdldCBsYXN0KCl7cmV0dXJuIHRoaXMuaW5kZXg9PT10aGlzLmNvdW50LTF9Z2V0IGV2ZW4oKXtyZXR1cm4gdGhpcy5pbmRleCUyPT0wfWdldCBvZGQoKXtyZXR1cm4hdGhpcy5ldmVufX1jbGFzcyB4dntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fdmlld0NvbnRhaW5lcj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlmZmVycz1uLHRoaXMuX25nRm9yT2Y9bnVsbCx0aGlzLl9uZ0Zvck9mRGlydHk9ITAsdGhpcy5fZGlmZmVyPW51bGx9c2V0IG5nRm9yT2YodCl7dGhpcy5fbmdGb3JPZj10LHRoaXMuX25nRm9yT2ZEaXJ0eT0hMH1zZXQgbmdGb3JUcmFja0J5KHQpeyJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxudWxsPT10fHwiZnVuY3Rpb24iPT10eXBlb2YgdHx8Y29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oYHRyYWNrQnkgbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX0uIFNlZSBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvbW1vbi9OZ0Zvck9mI2NoYW5nZS1wcm9wYWdhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gKSx0aGlzLl90cmFja0J5Rm49dH1nZXQgbmdGb3JUcmFja0J5KCl7cmV0dXJuIHRoaXMuX3RyYWNrQnlGbn1zZXQgbmdGb3JUZW1wbGF0ZSh0KXt0JiYodGhpcy5fdGVtcGxhdGU9dCl9bmdEb0NoZWNrKCl7aWYodGhpcy5fbmdGb3JPZkRpcnR5KXt0aGlzLl9uZ0Zvck9mRGlydHk9ITE7Y29uc3QgdD10aGlzLl9uZ0Zvck9mO2lmKCF0aGlzLl9kaWZmZXImJnQpdHJ5e3RoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQodCkuY3JlYXRlKHRoaXMubmdGb3JUcmFja0J5KX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke3R9JyBvZiB0eXBlICckeyhmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm5hbWV8fHR5cGVvZiB0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpfScuIE5nRm9yIG9ubHkgc3VwcG9ydHMgYmluZGluZyB0byBJdGVyYWJsZXMgc3VjaCBhcyBBcnJheXMuYCl9fWlmKHRoaXMuX2RpZmZlcil7Y29uc3QgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ0Zvck9mKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fV9hcHBseUNoYW5nZXModCl7Y29uc3QgZT1bXTt0LmZvckVhY2hPcGVyYXRpb24oKCh0LG4sbyk9PntpZihudWxsPT10LnByZXZpb3VzSW5kZXgpe2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGUsbmV3IHZ2KG51bGwsdGhpcy5fbmdGb3JPZiwtMSwtMSksbnVsbD09PW8/dm9pZCAwOm8pLGk9bmV3IE92KHQsbik7ZS5wdXNoKGkpfWVsc2UgaWYobnVsbD09byl0aGlzLl92aWV3Q29udGFpbmVyLnJlbW92ZShudWxsPT09bj92b2lkIDA6bik7ZWxzZSBpZihudWxsIT09bil7Y29uc3QgaT10aGlzLl92aWV3Q29udGFpbmVyLmdldChuKTt0aGlzLl92aWV3Q29udGFpbmVyLm1vdmUoaSxvKTtjb25zdCBhPW5ldyBPdih0LGkpO2UucHVzaChhKX19KSk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5fcGVyVmlld0NoYW5nZShlW3RdLnZpZXcsZVt0XS5yZWNvcmQpO2ZvcihsZXQgdD0wLGU9dGhpcy5fdmlld0NvbnRhaW5lci5sZW5ndGg7dDxlO3QrKyl7Y29uc3Qgbj10aGlzLl92aWV3Q29udGFpbmVyLmdldCh0KTtuLmNvbnRleHQuaW5kZXg9dCxuLmNvbnRleHQuY291bnQ9ZSxuLmNvbnRleHQubmdGb3JPZj10aGlzLl9uZ0Zvck9mfXQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKCh0PT57dGhpcy5fdmlld0NvbnRhaW5lci5nZXQodC5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PXQuaXRlbX0pKX1fcGVyVmlld0NoYW5nZSh0LGUpe3QuY29udGV4dC4kaW1wbGljaXQ9ZS5pdGVtfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKHQsZSl7cmV0dXJuITB9fXh2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4dikoZnUoRmIpLGZ1KEViKSxmdShoYikpfSx4di7JtWRpcj1obyh7dHlwZTp4dixzZWxlY3RvcnM6W1siIiwibmdGb3IiLCIiLCJuZ0Zvck9mIiwiIl1dLGlucHV0czp7bmdGb3JPZjoibmdGb3JPZiIsbmdGb3JUcmFja0J5OiJuZ0ZvclRyYWNrQnkiLG5nRm9yVGVtcGxhdGU6Im5nRm9yVGVtcGxhdGUifX0pLHh2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOkVifSx7dHlwZTpoYn1dLHh2LnByb3BEZWNvcmF0b3JzPXtuZ0Zvck9mOlt7dHlwZTpSX31dLG5nRm9yVHJhY2tCeTpbe3R5cGU6Ul99XSxuZ0ZvclRlbXBsYXRlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHh2LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ0Zvcl1bbmdGb3JPZl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOkVifSx7dHlwZTpoYn1dfSkse25nRm9yT2Y6W3t0eXBlOlJffV0sbmdGb3JUcmFja0J5Olt7dHlwZTpSX31dLG5nRm9yVGVtcGxhdGU6W3t0eXBlOlJffV19KTtjbGFzcyBPdntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucmVjb3JkPXQsdGhpcy52aWV3PWV9fWNsYXNzIFB2e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fdmlld0NvbnRhaW5lcj10LHRoaXMuX2NvbnRleHQ9bmV3IHd2LHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj1udWxsLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWY9ZX1zZXQgbmdJZih0KXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD10aGlzLl9jb250ZXh0Lm5nSWY9dCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZUaGVuKHQpe2t2KCJuZ0lmVGhlbiIsdCksdGhpcy5fdGhlblRlbXBsYXRlUmVmPXQsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZFbHNlKHQpe2t2KCJuZ0lmRWxzZSIsdCksdGhpcy5fZWxzZVRlbXBsYXRlUmVmPXQsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9X3VwZGF0ZVZpZXcoKXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD90aGlzLl90aGVuVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZiYmKHRoaXMuX3RoZW5WaWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RoZW5UZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpOnRoaXMuX2Vsc2VWaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmJiYodGhpcy5fZWxzZVZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fZWxzZVRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSl9c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQodCxlKXtyZXR1cm4hMH19UHYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFB2KShmdShGYiksZnUoRWIpKX0sUHYuybVkaXI9aG8oe3R5cGU6UHYsc2VsZWN0b3JzOltbIiIsIm5nSWYiLCIiXV0saW5wdXRzOntuZ0lmOiJuZ0lmIixuZ0lmVGhlbjoibmdJZlRoZW4iLG5nSWZFbHNlOiJuZ0lmRWxzZSJ9fSksUHYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6RWJ9XSxQdi5wcm9wRGVjb3JhdG9ycz17bmdJZjpbe3R5cGU6Ul99XSxuZ0lmVGhlbjpbe3R5cGU6Ul99XSxuZ0lmRWxzZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdJZl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOkVifV19KSx7bmdJZjpbe3R5cGU6Ul99XSxuZ0lmVGhlbjpbe3R5cGU6Ul99XSxuZ0lmRWxzZTpbe3R5cGU6Ul99XX0pO2NsYXNzIHd2e2NvbnN0cnVjdG9yKCl7dGhpcy4kaW1wbGljaXQ9bnVsbCx0aGlzLm5nSWY9bnVsbH19ZnVuY3Rpb24ga3YodCxlKXtpZighIShlJiYhZS5jcmVhdGVFbWJlZGRlZFZpZXcpKXRocm93IG5ldyBFcnJvcihgJHt0fSBtdXN0IGJlIGEgVGVtcGxhdGVSZWYsIGJ1dCByZWNlaXZlZCAnJHtLZShlKX0nLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBTdntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl90ZW1wbGF0ZVJlZj1lLHRoaXMuX2NyZWF0ZWQ9ITF9Y3JlYXRlKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9ZGVzdHJveSgpe3RoaXMuX2NyZWF0ZWQ9ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpfWVuZm9yY2VTdGF0ZSh0KXt0JiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiF0JiZ0aGlzLl9jcmVhdGVkJiZ0aGlzLmRlc3Ryb3koKX19Y2xhc3MgRHZ7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExfXNldCBuZ1N3aXRjaCh0KXt0aGlzLl9uZ1N3aXRjaD10LDA9PT10aGlzLl9jYXNlQ291bnQmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghMCl9X2FkZENhc2UoKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9X2FkZERlZmF1bHQodCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmlld3MucHVzaCh0KX1fbWF0Y2hDYXNlKHQpe2NvbnN0IGU9dD09dGhpcy5fbmdTd2l0Y2g7cmV0dXJuIHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9dGhpcy5fbGFzdENhc2VzTWF0Y2hlZHx8ZSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9PT10aGlzLl9jYXNlQ291bnQmJih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RDYXNlc01hdGNoZWQpLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITEpLGV9X3VwZGF0ZURlZmF1bHRDYXNlcyh0KXtpZih0aGlzLl9kZWZhdWx0Vmlld3MmJnQhPT10aGlzLl9kZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9dDtmb3IobGV0IGU9MDtlPHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg7ZSsrKXt0aGlzLl9kZWZhdWx0Vmlld3NbZV0uZW5mb3JjZVN0YXRlKHQpfX19fUR2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxEdil9LER2Lsm1ZGlyPWhvKHt0eXBlOkR2LHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaCIsIiJdXSxpbnB1dHM6e25nU3dpdGNoOiJuZ1N3aXRjaCJ9fSksRHYucHJvcERlY29yYXRvcnM9e25nU3dpdGNoOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKER2LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtuZ1N3aXRjaDpbe3R5cGU6Ul99XX0pO2NsYXNzIFJ2e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLm5nU3dpdGNoPW4sInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fG58fEF2KCJuZ1N3aXRjaENhc2UiLCJOZ1N3aXRjaENhc2UiKSxuLl9hZGRDYXNlKCksdGhpcy5fdmlldz1uZXcgU3YodCxlKX1uZ0RvQ2hlY2soKXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlzLm5nU3dpdGNoLl9tYXRjaENhc2UodGhpcy5uZ1N3aXRjaENhc2UpKX19UnYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJ2KShmdShGYiksZnUoRWIpLGZ1KER2LDkpKX0sUnYuybVkaXI9aG8oe3R5cGU6UnYsc2VsZWN0b3JzOltbIiIsIm5nU3dpdGNoQ2FzZSIsIiJdXSxpbnB1dHM6e25nU3dpdGNoQ2FzZToibmdTd2l0Y2hDYXNlIn19KSxSdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6RHYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfV19XSxSdi5wcm9wRGVjb3JhdG9ycz17bmdTd2l0Y2hDYXNlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJ2LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaENhc2VdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6RHYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfV19XX0pLHtuZ1N3aXRjaENhc2U6W3t0eXBlOlJffV19KTtjbGFzcyBFdntjb25zdHJ1Y3Rvcih0LGUsbil7InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fG58fEF2KCJuZ1N3aXRjaERlZmF1bHQiLCJOZ1N3aXRjaERlZmF1bHQiKSxuLl9hZGREZWZhdWx0KG5ldyBTdih0LGUpKX19ZnVuY3Rpb24gQXYodCxlKXt0aHJvdyBuZXcgbm4oIjMwNSIsYEFuIGVsZW1lbnQgd2l0aCB0aGUgIiR7dH0iIGF0dHJpYnV0ZSAobWF0Y2hpbmcgdGhlICIke2V9IiBkaXJlY3RpdmUpIG11c3QgYmUgbG9jYXRlZCBpbnNpZGUgYW4gZWxlbWVudCB3aXRoIHRoZSAibmdTd2l0Y2giIGF0dHJpYnV0ZSAobWF0Y2hpbmcgIk5nU3dpdGNoIiBkaXJlY3RpdmUpYCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0V2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFdikoZnUoRmIpLGZ1KEViKSxmdShEdiw5KSl9LEV2Lsm1ZGlyPWhvKHt0eXBlOkV2LHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaERlZmF1bHQiLCIiXV19KSxFdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6RHYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEV2LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaERlZmF1bHRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6RHYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfV19XX0pLG51bGwpO2NsYXNzIFR2e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsaXphdGlvbj10LHRoaXMuX2Nhc2VWaWV3cz17fX1zZXQgbmdQbHVyYWwodCl7dGhpcy5fc3dpdGNoVmFsdWU9dCx0aGlzLl91cGRhdGVWaWV3KCl9YWRkQ2FzZSh0LGUpe3RoaXMuX2Nhc2VWaWV3c1t0XT1lfV91cGRhdGVWaWV3KCl7dGhpcy5fY2xlYXJWaWV3cygpO2NvbnN0IHQ9T2JqZWN0LmtleXModGhpcy5fY2FzZVZpZXdzKSxlPWJ2KHRoaXMuX3N3aXRjaFZhbHVlLHQsdGhpcy5fbG9jYWxpemF0aW9uKTt0aGlzLl9hY3RpdmF0ZVZpZXcodGhpcy5fY2FzZVZpZXdzW2VdKX1fY2xlYXJWaWV3cygpe3RoaXMuX2FjdGl2ZVZpZXcmJnRoaXMuX2FjdGl2ZVZpZXcuZGVzdHJveSgpfV9hY3RpdmF0ZVZpZXcodCl7dCYmKHRoaXMuX2FjdGl2ZVZpZXc9dCx0aGlzLl9hY3RpdmVWaWV3LmNyZWF0ZSgpKX19VHYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFR2KShmdShodikpfSxUdi7JtWRpcj1obyh7dHlwZTpUdixzZWxlY3RvcnM6W1siIiwibmdQbHVyYWwiLCIiXV0saW5wdXRzOntuZ1BsdXJhbDoibmdQbHVyYWwifX0pLFR2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aHZ9XSxUdi5wcm9wRGVjb3JhdG9ycz17bmdQbHVyYWw6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVHYsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpodn1dfSkse25nUGx1cmFsOlt7dHlwZTpSX31dfSk7Y2xhc3MgTnZ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy52YWx1ZT10O2NvbnN0IGk9IWlzTmFOKE51bWJlcih0KSk7by5hZGRDYXNlKGk/YD0ke3R9YDp0LG5ldyBTdihuLGUpKX19TnYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE52KShHYSgibmdQbHVyYWxDYXNlIiksZnUoRWIpLGZ1KEZiKSxmdShUdiwxKSl9LE52Lsm1ZGlyPWhvKHt0eXBlOk52LHNlbGVjdG9yczpbWyIiLCJuZ1BsdXJhbENhc2UiLCIiXV19KSxOdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsibmdQbHVyYWxDYXNlIl19XX0se3R5cGU6RWJ9LHt0eXBlOkZifSx7dHlwZTpUdixkZWNvcmF0b3JzOlt7dHlwZTpqcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOdixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdQbHVyYWxDYXNlXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbIm5nUGx1cmFsQ2FzZSJdfV19LHt0eXBlOkVifSx7dHlwZTpGYn0se3R5cGU6VHYsZGVjb3JhdG9yczpbe3R5cGU6anJ9XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB6dntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fbmdFbD10LHRoaXMuX2RpZmZlcnM9ZSx0aGlzLl9yZW5kZXJlcj1uLHRoaXMuX25nU3R5bGU9bnVsbCx0aGlzLl9kaWZmZXI9bnVsbH1zZXQgbmdTdHlsZSh0KXt0aGlzLl9uZ1N0eWxlPXQsIXRoaXMuX2RpZmZlciYmdCYmKHRoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQodCkuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2RpZmZlcil7Y29uc3QgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fV9zZXRTdHlsZSh0LGUpe2NvbnN0W24sb109dC5zcGxpdCgiLiIpO251bGwhPShlPW51bGwhPWUmJm8/YCR7ZX0ke299YDplKT90aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsbixlKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsbil9X2FwcGx5Q2hhbmdlcyh0KXt0LmZvckVhY2hSZW1vdmVkSXRlbSgodD0+dGhpcy5fc2V0U3R5bGUodC5rZXksbnVsbCkpKSx0LmZvckVhY2hBZGRlZEl0ZW0oKHQ9PnRoaXMuX3NldFN0eWxlKHQua2V5LHQuY3VycmVudFZhbHVlKSkpLHQuZm9yRWFjaENoYW5nZWRJdGVtKCh0PT50aGlzLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKX19enYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHp2KShmdShLaCksZnUoeWIpLGZ1KCRoKSl9LHp2Lsm1ZGlyPWhvKHt0eXBlOnp2LHNlbGVjdG9yczpbWyIiLCJuZ1N0eWxlIiwiIl1dLGlucHV0czp7bmdTdHlsZToibmdTdHlsZSJ9fSksenYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6eWJ9LHt0eXBlOiRofV0senYucHJvcERlY29yYXRvcnM9e25nU3R5bGU6W3t0eXBlOlJfLGFyZ3M6WyJuZ1N0eWxlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6dixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdTdHlsZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnlifSx7dHlwZTokaH1dfSkse25nU3R5bGU6W3t0eXBlOlJfLGFyZ3M6WyJuZ1N0eWxlIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgSXZ7Y29uc3RydWN0b3IodCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3ZpZXdSZWY9bnVsbCx0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0PW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0PW51bGx9bmdPbkNoYW5nZXModCl7aWYodC5uZ1RlbXBsYXRlT3V0bGV0KXtjb25zdCB0PXRoaXMuX3ZpZXdDb250YWluZXJSZWY7dGhpcy5fdmlld1JlZiYmdC5yZW1vdmUodC5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpKSx0aGlzLl92aWV3UmVmPXRoaXMubmdUZW1wbGF0ZU91dGxldD90LmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm5nVGVtcGxhdGVPdXRsZXQsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCk6bnVsbH1lbHNlIHRoaXMuX3ZpZXdSZWYmJnQubmdUZW1wbGF0ZU91dGxldENvbnRleHQmJnRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQmJih0aGlzLl92aWV3UmVmLmNvbnRleHQ9dGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCl9fUl2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJdikoZnUoRmIpKX0sSXYuybVkaXI9aG8oe3R5cGU6SXYsc2VsZWN0b3JzOltbIiIsIm5nVGVtcGxhdGVPdXRsZXQiLCIiXV0saW5wdXRzOntuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDoibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLG5nVGVtcGxhdGVPdXRsZXQ6Im5nVGVtcGxhdGVPdXRsZXQifSxmZWF0dXJlczpbcW9dfSksSXYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn1dLEl2LnByb3BEZWNvcmF0b3JzPXtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6Ul99XSxuZ1RlbXBsYXRlT3V0bGV0Olt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEl2LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ1RlbXBsYXRlT3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn1dfSkse25nVGVtcGxhdGVPdXRsZXRDb250ZXh0Olt7dHlwZTpSX31dLG5nVGVtcGxhdGVPdXRsZXQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEh2PVtDdixNdix4dixQdixJdix6dixEdixSdixFdixUdixOdl07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEZ2KHQsZSl7cmV0dXJuIEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiAnJHtlfScgZm9yIHBpcGUgJyR7S2UodCl9J2ApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBMdj1uZXcgY2xhc3N7Y3JlYXRlU3Vic2NyaXB0aW9uKHQsZSl7cmV0dXJuIHQudGhlbihlLCh0PT57dGhyb3cgdH0pKX1kaXNwb3NlKHQpe31vbkRlc3Ryb3kodCl7fX0sQnY9bmV3IGNsYXNze2NyZWF0ZVN1YnNjcmlwdGlvbih0LGUpe3JldHVybiB0LnN1YnNjcmliZSh7bmV4dDplLGVycm9yOnQ9Pnt0aHJvdyB0fX0pfWRpc3Bvc2UodCl7dC51bnN1YnNjcmliZSgpfW9uRGVzdHJveSh0KXt0LnVuc3Vic2NyaWJlKCl9fTtjbGFzcyBWdntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZWY9dCx0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsLHRoaXMuX3N0cmF0ZWd5PW51bGx9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMuX2Rpc3Bvc2UoKX10cmFuc2Zvcm0odCl7cmV0dXJuIHRoaXMuX29iaj90IT09dGhpcy5fb2JqPyh0aGlzLl9kaXNwb3NlKCksdGhpcy50cmFuc2Zvcm0odCkpOnRoaXMuX2xhdGVzdFZhbHVlOih0JiZ0aGlzLl9zdWJzY3JpYmUodCksdGhpcy5fbGF0ZXN0VmFsdWUpfV9zdWJzY3JpYmUodCl7dGhpcy5fb2JqPXQsdGhpcy5fc3RyYXRlZ3k9dGhpcy5fc2VsZWN0U3RyYXRlZ3kodCksdGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuX3N0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbih0LChlPT50aGlzLl91cGRhdGVMYXRlc3RWYWx1ZSh0LGUpKSl9X3NlbGVjdFN0cmF0ZWd5KHQpe2lmKHd1KHQpKXJldHVybiBMdjtpZihrdSh0KSlyZXR1cm4gQnY7dGhyb3cgRnYoVnYsdCl9X2Rpc3Bvc2UoKXt0aGlzLl9zdHJhdGVneS5kaXNwb3NlKHRoaXMuX3N1YnNjcmlwdGlvbiksdGhpcy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbH1fdXBkYXRlTGF0ZXN0VmFsdWUodCxlKXt0PT09dGhpcy5fb2JqJiYodGhpcy5fbGF0ZXN0VmFsdWU9ZSx0aGlzLl9yZWYubWFya0ZvckNoZWNrKCkpfX1Wdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VnYpKGZ1KE9iLDE2KSl9LFZ2Lsm1cGlwZT1ibyh7bmFtZToiYXN5bmMiLHR5cGU6VnYscHVyZTohMX0pLFZ2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2J9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFZ2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToiYXN5bmMiLHB1cmU6ITF9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBVdnt0cmFuc2Zvcm0odCl7aWYobnVsbD09dClyZXR1cm4gbnVsbDtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgRnYoVXYsdCk7cmV0dXJuIHQudG9Mb3dlckNhc2UoKX19VXYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFV2KX0sVXYuybVwaXBlPWJvKHtuYW1lOiJsb3dlcmNhc2UiLHR5cGU6VXYscHVyZTohMH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVXYsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJsb3dlcmNhc2UifV19XSxudWxsLG51bGwpO2NvbnN0IGp2PS8oPzpbQS1aYS16XHhBQVx4QjVceEJBXHhDMC1ceEQ2XHhEOC1ceEY2XHhGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUwMzdGXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MkZcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4NjAtXHUwODZBXHUwOEEwLVx1MDhCNFx1MDhCNi1cdTA4QkRcdTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1cdTA5ODBcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MDlGQ1x1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBBRjlcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzOVx1MEMzRFx1MEM1OC1cdTBDNUFcdTBDNjBcdTBDNjFcdTBDODBcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENGMlx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ1NC1cdTBENTZcdTBENUYtXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRURDLVx1MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXHUxMDhFXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y1XHUxM0Y4LVx1MTNGRFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE2RjEtXHUxNkY4XHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1MTdCM1x1MTdEN1x1MTdEQ1x1MTgyMC1cdTE4NzdcdTE4ODAtXHUxODg0XHUxODg3LVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFFXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUIwLVx1MTlDOVx1MUEwMC1cdTFBMTZcdTFBMjAtXHUxQTU0XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXHUxQkJBLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNEQtXHUxQzRGXHUxQzVBLVx1MUM3RFx1MUM4MC1cdTFDODhcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGMVx1MUNGNVx1MUNGNlx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkNcdTIwNzFcdTIwN0ZcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTgzXHUyMTg0XHUyQzAwLVx1MkMyRVx1MkMzMC1cdTJDNUVcdTJDNjAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM1x1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAzNVx1MzAzQlx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJFXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGRUFcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OURcdUE2QTAtXHVBNkU1XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBN0FFXHVBN0IwLVx1QTdCN1x1QTdGNy1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJcdUE4RkRcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBOUUwLVx1QTlFNFx1QTlFNi1cdUE5RUZcdUE5RkEtXHVBOUZFXHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE3RS1cdUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCMzAtXHVBQjVBXHVBQjVDLVx1QUI2NVx1QUI3MC1cdUFCRTJcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdfFx1RDgwMFtcdURDMDAtXHVEQzBCXHVEQzBELVx1REMyNlx1REMyOC1cdURDM0FcdURDM0NcdURDM0RcdURDM0YtXHVEQzREXHVEQzUwLVx1REM1RFx1REM4MC1cdURDRkFcdURFODAtXHVERTlDXHVERUEwLVx1REVEMFx1REYwMC1cdURGMUZcdURGMkQtXHVERjQwXHVERjQyLVx1REY0OVx1REY1MC1cdURGNzVcdURGODAtXHVERjlEXHVERkEwLVx1REZDM1x1REZDOC1cdURGQ0ZdfFx1RDgwMVtcdURDMDAtXHVEQzlEXHVEQ0IwLVx1RENEM1x1RENEOC1cdURDRkJcdUREMDAtXHVERDI3XHVERDMwLVx1REQ2M1x1REUwMC1cdURGMzZcdURGNDAtXHVERjU1XHVERjYwLVx1REY2N118XHVEODAyW1x1REMwMC1cdURDMDVcdURDMDhcdURDMEEtXHVEQzM1XHVEQzM3XHVEQzM4XHVEQzNDXHVEQzNGLVx1REM1NVx1REM2MC1cdURDNzZcdURDODAtXHVEQzlFXHVEQ0UwLVx1RENGMlx1RENGNFx1RENGNVx1REQwMC1cdUREMTVcdUREMjAtXHVERDM5XHVERDgwLVx1RERCN1x1RERCRVx1RERCRlx1REUwMFx1REUxMC1cdURFMTNcdURFMTUtXHVERTE3XHVERTE5LVx1REUzM1x1REU2MC1cdURFN0NcdURFODAtXHVERTlDXHVERUMwLVx1REVDN1x1REVDOS1cdURFRTRcdURGMDAtXHVERjM1XHVERjQwLVx1REY1NVx1REY2MC1cdURGNzJcdURGODAtXHVERjkxXXxcdUQ4MDNbXHVEQzAwLVx1REM0OFx1REM4MC1cdURDQjJcdURDQzAtXHVEQ0YyXXxcdUQ4MDRbXHVEQzAzLVx1REMzN1x1REM4My1cdURDQUZcdURDRDAtXHVEQ0U4XHVERDAzLVx1REQyNlx1REQ1MC1cdURENzJcdURENzZcdUREODMtXHVEREIyXHVEREMxLVx1RERDNFx1REREQVx1REREQ1x1REUwMC1cdURFMTFcdURFMTMtXHVERTJCXHVERTgwLVx1REU4Nlx1REU4OFx1REU4QS1cdURFOERcdURFOEYtXHVERTlEXHVERTlGLVx1REVBOFx1REVCMC1cdURFREVcdURGMDUtXHVERjBDXHVERjBGXHVERjEwXHVERjEzLVx1REYyOFx1REYyQS1cdURGMzBcdURGMzJcdURGMzNcdURGMzUtXHVERjM5XHVERjNEXHVERjUwXHVERjVELVx1REY2MV18XHVEODA1W1x1REMwMC1cdURDMzRcdURDNDctXHVEQzRBXHVEQzgwLVx1RENBRlx1RENDNFx1RENDNVx1RENDN1x1REQ4MC1cdUREQUVcdURERDgtXHVERERCXHVERTAwLVx1REUyRlx1REU0NFx1REU4MC1cdURFQUFcdURGMDAtXHVERjE5XXxcdUQ4MDZbXHVEQ0EwLVx1RENERlx1RENGRlx1REUwMFx1REUwQi1cdURFMzJcdURFM0FcdURFNTBcdURFNUMtXHVERTgzXHVERTg2LVx1REU4OVx1REVDMC1cdURFRjhdfFx1RDgwN1tcdURDMDAtXHVEQzA4XHVEQzBBLVx1REMyRVx1REM0MFx1REM3Mi1cdURDOEZcdUREMDAtXHVERDA2XHVERDA4XHVERDA5XHVERDBCLVx1REQzMFx1REQ0Nl18XHVEODA4W1x1REMwMC1cdURGOTldfFx1RDgwOVtcdURDODAtXHVERDQzXXxbXHVEODBDXHVEODFDLVx1RDgyMFx1RDg0MC1cdUQ4NjhcdUQ4NkEtXHVEODZDXHVEODZGLVx1RDg3Mlx1RDg3NC1cdUQ4NzldW1x1REMwMC1cdURGRkZdfFx1RDgwRFtcdURDMDAtXHVEQzJFXXxcdUQ4MTFbXHVEQzAwLVx1REU0Nl18XHVEODFBW1x1REMwMC1cdURFMzhcdURFNDAtXHVERTVFXHVERUQwLVx1REVFRFx1REYwMC1cdURGMkZcdURGNDAtXHVERjQzXHVERjYzLVx1REY3N1x1REY3RC1cdURGOEZdfFx1RDgxQltcdURGMDAtXHVERjQ0XHVERjUwXHVERjkzLVx1REY5Rlx1REZFMFx1REZFMV18XHVEODIxW1x1REMwMC1cdURGRUNdfFx1RDgyMltcdURDMDAtXHVERUYyXXxcdUQ4MkNbXHVEQzAwLVx1REQxRVx1REQ3MC1cdURFRkJdfFx1RDgyRltcdURDMDAtXHVEQzZBXHVEQzcwLVx1REM3Q1x1REM4MC1cdURDODhcdURDOTAtXHVEQzk5XXxcdUQ4MzVbXHVEQzAwLVx1REM1NFx1REM1Ni1cdURDOUNcdURDOUVcdURDOUZcdURDQTJcdURDQTVcdURDQTZcdURDQTktXHVEQ0FDXHVEQ0FFLVx1RENCOVx1RENCQlx1RENCRC1cdURDQzNcdURDQzUtXHVERDA1XHVERDA3LVx1REQwQVx1REQwRC1cdUREMTRcdUREMTYtXHVERDFDXHVERDFFLVx1REQzOVx1REQzQi1cdUREM0VcdURENDAtXHVERDQ0XHVERDQ2XHVERDRBLVx1REQ1MFx1REQ1Mi1cdURFQTVcdURFQTgtXHVERUMwXHVERUMyLVx1REVEQVx1REVEQy1cdURFRkFcdURFRkMtXHVERjE0XHVERjE2LVx1REYzNFx1REYzNi1cdURGNEVcdURGNTAtXHVERjZFXHVERjcwLVx1REY4OFx1REY4QS1cdURGQThcdURGQUEtXHVERkMyXHVERkM0LVx1REZDQl18XHVEODNBW1x1REMwMC1cdURDQzRcdUREMDAtXHVERDQzXXxcdUQ4M0JbXHVERTAwLVx1REUwM1x1REUwNS1cdURFMUZcdURFMjFcdURFMjJcdURFMjRcdURFMjdcdURFMjktXHVERTMyXHVERTM0LVx1REUzN1x1REUzOVx1REUzQlx1REU0Mlx1REU0N1x1REU0OVx1REU0Qlx1REU0RC1cdURFNEZcdURFNTFcdURFNTJcdURFNTRcdURFNTdcdURFNTlcdURFNUJcdURFNURcdURFNUZcdURFNjFcdURFNjJcdURFNjRcdURFNjctXHVERTZBXHVERTZDLVx1REU3Mlx1REU3NC1cdURFNzdcdURFNzktXHVERTdDXHVERTdFXHVERTgwLVx1REU4OVx1REU4Qi1cdURFOUJcdURFQTEtXHVERUEzXHVERUE1LVx1REVBOVx1REVBQi1cdURFQkJdfFx1RDg2OVtcdURDMDAtXHVERUQ2XHVERjAwLVx1REZGRl18XHVEODZEW1x1REMwMC1cdURGMzRcdURGNDAtXHVERkZGXXxcdUQ4NkVbXHVEQzAwLVx1REMxRFx1REMyMC1cdURGRkZdfFx1RDg3M1tcdURDMDAtXHVERUExXHVERUIwLVx1REZGRl18XHVEODdBW1x1REMwMC1cdURGRTBdfFx1RDg3RVtcdURDMDAtXHVERTFEXSlcUyovZztjbGFzcyBXdnt0cmFuc2Zvcm0odCl7aWYobnVsbD09dClyZXR1cm4gbnVsbDtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgRnYoV3YsdCk7cmV0dXJuIHQucmVwbGFjZShqdiwodD0+dFswXS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCkpKX19V3YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFd2KX0sV3YuybVwaXBlPWJvKHtuYW1lOiJ0aXRsZWNhc2UiLHR5cGU6V3YscHVyZTohMH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV3YsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJ0aXRsZWNhc2UifV19XSxudWxsLG51bGwpO2NsYXNzIEd2e3RyYW5zZm9ybSh0KXtpZihudWxsPT10KXJldHVybiBudWxsO2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBGdihHdix0KTtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfX1Hdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R3YpfSxHdi7JtXBpcGU9Ym8oe25hbWU6InVwcGVyY2FzZSIsdHlwZTpHdixwdXJlOiEwfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihHdixbe3R5cGU6RF8sYXJnczpbe25hbWU6InVwcGVyY2FzZSJ9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBZdntjb25zdHJ1Y3Rvcih0KXt0aGlzLmxvY2FsZT10fXRyYW5zZm9ybSh0LGU9Im1lZGl1bURhdGUiLG4sbyl7aWYobnVsbD09dHx8IiI9PT10fHx0IT10KXJldHVybiBudWxsO3RyeXtyZXR1cm4gWk0odCxlLG98fHRoaXMubG9jYWxlLG4pfWNhdGNoKHQpe3Rocm93IEZ2KFl2LHQubWVzc2FnZSl9fX1Zdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WXYpKGZ1KFFfLDE2KSl9LFl2Lsm1cGlwZT1ibyh7bmFtZToiZGF0ZSIsdHlwZTpZdixwdXJlOiEwfSksWXYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFl2LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToiZGF0ZSIscHVyZTohMH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRX119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBxdj0vIy9nO2NsYXNzIFp2e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsaXphdGlvbj10fXRyYW5zZm9ybSh0LGUsbil7aWYobnVsbD09dClyZXR1cm4iIjtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKXRocm93IEZ2KFp2LGUpO3JldHVybiBlW2J2KHQsT2JqZWN0LmtleXMoZSksdGhpcy5fbG9jYWxpemF0aW9uLG4pXS5yZXBsYWNlKHF2LHQudG9TdHJpbmcoKSl9fVp2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxadikoZnUoaHYsMTYpKX0sWnYuybVwaXBlPWJvKHtuYW1lOiJpMThuUGx1cmFsIix0eXBlOlp2LHB1cmU6ITB9KSxadi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmh2fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihadixbe3R5cGU6RF8sYXJnczpbe25hbWU6ImkxOG5QbHVyYWwiLHB1cmU6ITB9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpodn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBYdnt0cmFuc2Zvcm0odCxlKXtpZihudWxsPT10KXJldHVybiIiO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8InN0cmluZyIhPXR5cGVvZiB0KXRocm93IEZ2KFh2LGUpO3JldHVybiBlLmhhc093blByb3BlcnR5KHQpP2VbdF06ZS5oYXNPd25Qcm9wZXJ0eSgib3RoZXIiKT9lLm90aGVyOiIifX1Ydi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WHYpfSxYdi7JtXBpcGU9Ym8oe25hbWU6ImkxOG5TZWxlY3QiLHR5cGU6WHYscHVyZTohMH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWHYsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJpMThuU2VsZWN0IixwdXJlOiEwfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgS3Z7dHJhbnNmb3JtKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0LG51bGwsMil9fUt2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLdil9LEt2Lsm1cGlwZT1ibyh7bmFtZToianNvbiIsdHlwZTpLdixwdXJlOiExfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLdixbe3R5cGU6RF8sYXJnczpbe25hbWU6Impzb24iLHB1cmU6ITF9XX1dLG51bGwsbnVsbCk7Y2xhc3MgSnZ7Y29uc3RydWN0b3IodCl7dGhpcy5kaWZmZXJzPXQsdGhpcy5rZXlWYWx1ZXM9W10sdGhpcy5jb21wYXJlRm49UXZ9dHJhbnNmb3JtKHQsZT1Rdil7aWYoIXR8fCEodCBpbnN0YW5jZW9mIE1hcCkmJiJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0aGlzLmRpZmZlcnx8KHRoaXMuZGlmZmVyPXRoaXMuZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpKTtjb25zdCBuPXRoaXMuZGlmZmVyLmRpZmYodCksbz1lIT09dGhpcy5jb21wYXJlRm47cmV0dXJuIG4mJih0aGlzLmtleVZhbHVlcz1bXSxuLmZvckVhY2hJdGVtKCh0PT57dGhpcy5rZXlWYWx1ZXMucHVzaCgoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlKHQsbil7cmV0dXJue2tleTp0LHZhbHVlOm59fSkodC5rZXksdC5jdXJyZW50VmFsdWUpKX0pKSksKG58fG8pJiYodGhpcy5rZXlWYWx1ZXMuc29ydChlKSx0aGlzLmNvbXBhcmVGbj1lKSx0aGlzLmtleVZhbHVlc319ZnVuY3Rpb24gUXYodCxlKXtjb25zdCBuPXQua2V5LG89ZS5rZXk7aWYobj09PW8pcmV0dXJuIDA7aWYodm9pZCAwPT09bilyZXR1cm4gMTtpZih2b2lkIDA9PT1vKXJldHVybi0xO2lmKG51bGw9PT1uKXJldHVybiAxO2lmKG51bGw9PT1vKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmInN0cmluZyI9PXR5cGVvZiBvKXJldHVybiBuPG8/LTE6MTtpZigibnVtYmVyIj09dHlwZW9mIG4mJiJudW1iZXIiPT10eXBlb2YgbylyZXR1cm4gbi1vO2lmKCJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8pcmV0dXJuIG48bz8tMToxO2NvbnN0IGk9U3RyaW5nKG4pLGE9U3RyaW5nKG8pO3JldHVybiBpPT1hPzA6aTxhPy0xOjF9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0p2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKdikoZnUoeWIsMTYpKX0sSnYuybVwaXBlPWJvKHtuYW1lOiJrZXl2YWx1ZSIsdHlwZTpKdixwdXJlOiExfSksSnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp5Yn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSnYsW3t0eXBlOkRfLGFyZ3M6W3tuYW1lOiJrZXl2YWx1ZSIscHVyZTohMX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnlifV19KSxudWxsKTtjbGFzcyAkdntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGU9dH10cmFuc2Zvcm0odCxlLG4pe2lmKCFueCh0KSlyZXR1cm4gbnVsbDtuPW58fHRoaXMuX2xvY2FsZTt0cnl7cmV0dXJuIHV2KG94KHQpLG4sZSl9Y2F0Y2godCl7dGhyb3cgRnYoJHYsdC5tZXNzYWdlKX19fSR2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkdikoZnUoUV8sMTYpKX0sJHYuybVwaXBlPWJvKHtuYW1lOiJudW1iZXIiLHR5cGU6JHYscHVyZTohMH0pLCR2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkdixbe3R5cGU6RF8sYXJnczpbe25hbWU6Im51bWJlciJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XX0pLG51bGwpO2NsYXNzIHR4e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsZT10fXRyYW5zZm9ybSh0LGUsbil7aWYoIW54KHQpKXJldHVybiBudWxsO249bnx8dGhpcy5fbG9jYWxlO3RyeXtyZXR1cm4oZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIHB2KHQsZnYoSU0oZSxQTS5QZXJjZW50KSx6TShlLFJNLk1pbnVzU2lnbikpLGUsUk0uR3JvdXAsUk0uRGVjaW1hbCxuLCEwKS5yZXBsYWNlKG5ldyBSZWdFeHAoIiUiLCJnIiksek0oZSxSTS5QZXJjZW50U2lnbikpfSkob3godCksbixlKX1jYXRjaCh0KXt0aHJvdyBGdih0eCx0Lm1lc3NhZ2UpfX19dHguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHR4KShmdShRXywxNikpfSx0eC7JtXBpcGU9Ym8oe25hbWU6InBlcmNlbnQiLHR5cGU6dHgscHVyZTohMH0pLHR4LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0eCxbe3R5cGU6RF8sYXJnczpbe25hbWU6InBlcmNlbnQifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfV19KSxudWxsKTtjbGFzcyBleHtjb25zdHJ1Y3Rvcih0LGU9IlVTRCIpe3RoaXMuX2xvY2FsZT10LHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU9ZX10cmFuc2Zvcm0odCxlPXRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGUsbj0ic3ltYm9sIixvLGkpe2lmKCFueCh0KSlyZXR1cm4gbnVsbDtpPWl8fHRoaXMuX2xvY2FsZSwiYm9vbGVhbiI9PXR5cGVvZiBuJiYoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignV2FybmluZzogdGhlIGN1cnJlbmN5IHBpcGUgaGFzIGJlZW4gY2hhbmdlZCBpbiBBbmd1bGFyIHY1LiBUaGUgc3ltYm9sRGlzcGxheSBvcHRpb24gKHRoaXJkIHBhcmFtZXRlcikgaXMgbm93IGEgc3RyaW5nIGluc3RlYWQgb2YgYSBib29sZWFuLiBUaGUgYWNjZXB0ZWQgdmFsdWVzIGFyZSAiY29kZSIsICJzeW1ib2wiIG9yICJzeW1ib2wtbmFycm93Ii4nKSxuPW4/InN5bWJvbCI6ImNvZGUiKTtsZXQgYT1lfHx0aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlOyJjb2RlIiE9PW4mJihhPSJzeW1ib2wiPT09bnx8InN5bWJvbC1uYXJyb3ciPT09bj9WTShhLCJzeW1ib2wiPT09bj8id2lkZSI6Im5hcnJvdyIsaSk6bik7dHJ5e3JldHVybiBtdihveCh0KSxpLGEsZSxvKX1jYXRjaCh0KXt0aHJvdyBGdihleCx0Lm1lc3NhZ2UpfX19ZnVuY3Rpb24gbngodCl7cmV0dXJuIShudWxsPT10fHwiIj09PXR8fHQhPXQpfWZ1bmN0aW9uIG94KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmIWlzTmFOKE51bWJlcih0KS1wYXJzZUZsb2F0KHQpKSlyZXR1cm4gTnVtYmVyKHQpO2lmKCJudW1iZXIiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYCR7dH0gaXMgbm90IGEgbnVtYmVyYCk7cmV0dXJuIHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2V4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxleCkoZnUoUV8sMTYpLGZ1KCRfLDE2KSl9LGV4Lsm1cGlwZT1ibyh7bmFtZToiY3VycmVuY3kiLHR5cGU6ZXgscHVyZTohMH0pLGV4LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbJF9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGV4LFt7dHlwZTpEXyxhcmdzOlt7bmFtZToiY3VycmVuY3kifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FfXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbJF9dfV19XX0pLG51bGwpO2NsYXNzIGl4e3RyYW5zZm9ybSh0LGUsbil7aWYobnVsbD09dClyZXR1cm4gbnVsbDtpZighdGhpcy5zdXBwb3J0cyh0KSl0aHJvdyBGdihpeCx0KTtyZXR1cm4gdC5zbGljZShlLG4pfXN1cHBvcnRzKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8QXJyYXkuaXNBcnJheSh0KX19aXguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGl4KX0saXguybVwaXBlPWJvKHtuYW1lOiJzbGljZSIsdHlwZTppeCxwdXJlOiExfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpeCxbe3R5cGU6RF8sYXJnczpbe25hbWU6InNsaWNlIixwdXJlOiExfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgYXg9W1Z2LEd2LFV2LEt2LGl4LCR2LHR4LFd2LGV4LFl2LFp2LFh2LEp2XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgcnh7fXJ4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyeCl9LHJ4Lsm1bW9kPXVvKHt0eXBlOnJ4fSkscnguybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6aHYsdXNlQ2xhc3M6eXZ9XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocngsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0h2LGF4XSxleHBvcnRzOltIdixheF0scHJvdmlkZXJzOlt7cHJvdmlkZTpodix1c2VDbGFzczp5dn1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8ocngse2RlY2xhcmF0aW9uczpbQ3YsTXYseHYsUHYsSXYsenYsRHYsUnYsRXYsVHYsTnYsVnYsR3YsVXYsS3YsaXgsJHYsdHgsV3YsZXgsWXYsWnYsWHYsSnZdLGV4cG9ydHM6W0N2LE12LHh2LFB2LEl2LHp2LER2LFJ2LEV2LFR2LE52LFZ2LEd2LFV2LEt2LGl4LCR2LHR4LFd2LGV4LFl2LFp2LFh2LEp2XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgc3g9ImJyb3dzZXIiOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbmV3IG9iKCIxMi4yLjEiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGx4e31seC7JtXByb3Y9U24oe3Rva2VuOmx4LHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm5ldyBjeChUcihzTSksd2luZG93KX0pO2NsYXNzIGN4e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5kb2N1bWVudD10LHRoaXMud2luZG93PWUsdGhpcy5vZmZzZXQ9KCk9PlswLDBdfXNldE9mZnNldCh0KXt0aGlzLm9mZnNldD1BcnJheS5pc0FycmF5KHQpPygpPT50OnR9Z2V0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5zdXBwb3J0c1Njcm9sbGluZygpP1t0aGlzLndpbmRvdy5wYWdlWE9mZnNldCx0aGlzLndpbmRvdy5wYWdlWU9mZnNldF06WzAsMF19c2Nyb2xsVG9Qb3NpdGlvbih0KXt0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkmJnRoaXMud2luZG93LnNjcm9sbFRvKHRbMF0sdFsxXSl9c2Nyb2xsVG9BbmNob3IodCl7aWYoIXRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKSlyZXR1cm47Y29uc3QgZT0oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49dC5nZXRFbGVtZW50QnlJZChlKXx8dC5nZXRFbGVtZW50c0J5TmFtZShlKVswXTtpZihuKXJldHVybiBuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmNyZWF0ZVRyZWVXYWxrZXImJnQuYm9keSYmKHQuYm9keS5jcmVhdGVTaGFkb3dSb290fHx0LmJvZHkuYXR0YWNoU2hhZG93KSl7Y29uc3Qgbj10LmNyZWF0ZVRyZWVXYWxrZXIodC5ib2R5LE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UKTtsZXQgbz1uLmN1cnJlbnROb2RlO2Zvcig7bzspe2NvbnN0IHQ9by5zaGFkb3dSb290O2lmKHQpe2NvbnN0IG49dC5nZXRFbGVtZW50QnlJZChlKXx8dC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0iJHtlfSJdYCk7aWYobilyZXR1cm4gbn1vPW4ubmV4dE5vZGUoKX19cmV0dXJuIG51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodGhpcy5kb2N1bWVudCx0KTtlJiYodGhpcy5zY3JvbGxUb0VsZW1lbnQoZSksdGhpcy5hdHRlbXB0Rm9jdXMoZSkpfXNldEhpc3RvcnlTY3JvbGxSZXN0b3JhdGlvbih0KXtpZih0aGlzLnN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpKXtjb25zdCBlPXRoaXMud2luZG93Lmhpc3Rvcnk7ZSYmZS5zY3JvbGxSZXN0b3JhdGlvbiYmKGUuc2Nyb2xsUmVzdG9yYXRpb249dCl9fXNjcm9sbFRvRWxlbWVudCh0KXtjb25zdCBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1lLmxlZnQrdGhpcy53aW5kb3cucGFnZVhPZmZzZXQsbz1lLnRvcCt0aGlzLndpbmRvdy5wYWdlWU9mZnNldCxpPXRoaXMub2Zmc2V0KCk7dGhpcy53aW5kb3cuc2Nyb2xsVG8obi1pWzBdLG8taVsxXSl9YXR0ZW1wdEZvY3VzKHQpe3JldHVybiB0LmZvY3VzKCksdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dH1zdXBwb3J0U2Nyb2xsUmVzdG9yYXRpb24oKXt0cnl7aWYoIXRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKSlyZXR1cm4hMTtjb25zdCB0PWR4KHRoaXMud2luZG93Lmhpc3RvcnkpfHxkeChPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy53aW5kb3cuaGlzdG9yeSkpO3JldHVybiEoIXR8fCF0LndyaXRhYmxlJiYhdC5zZXQpfWNhdGNoKHQpe3JldHVybiExfX1zdXBwb3J0c1Njcm9sbGluZygpe3RyeXtyZXR1cm4hIXRoaXMud2luZG93JiYhIXRoaXMud2luZG93LnNjcm9sbFRvJiYicGFnZVhPZmZzZXQiaW4gdGhpcy53aW5kb3d9Y2F0Y2godCl7cmV0dXJuITF9fX1mdW5jdGlvbiBkeCh0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCJzY3JvbGxSZXN0b3JhdGlvbiIpfWNsYXNzIHB4e30KLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4yLjEKICAgICAqIChjKSAyMDEwLTIwMjEgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBteCBleHRlbmRzIGNsYXNzIGV4dGVuZHMgY2xhc3N7fXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zdXBwb3J0c0RPTUV2ZW50cz0hMH19e3N0YXRpYyBtYWtlQ3VycmVudCgpeyEoZnVuY3Rpb24gdChlKXthTXx8KGFNPWUpfSkobmV3IG14KX1vbkFuZENhbmNlbCh0LGUsbil7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpLCgpPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMSl9fWRpc3BhdGNoRXZlbnQodCxlKXt0LmRpc3BhdGNoRXZlbnQoZSl9cmVtb3ZlKHQpe3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfWNyZWF0ZUVsZW1lbnQodCxlKXtyZXR1cm4oZT1lfHx0aGlzLmdldERlZmF1bHREb2N1bWVudCgpKS5jcmVhdGVFbGVtZW50KHQpfWNyZWF0ZUh0bWxEb2N1bWVudCgpe3JldHVybiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoImZha2VUaXRsZSIpfWdldERlZmF1bHREb2N1bWVudCgpe3JldHVybiBkb2N1bWVudH1pc0VsZW1lbnROb2RlKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9aXNTaGFkb3dSb290KHQpe3JldHVybiB0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudH1nZXRHbG9iYWxFdmVudFRhcmdldCh0LGUpe3JldHVybiJ3aW5kb3ciPT09ZT93aW5kb3c6ImRvY3VtZW50Ij09PWU/dDoiYm9keSI9PT1lP3QuYm9keTpudWxsfWdldEJhc2VIcmVmKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4oKXtyZXR1cm4gZng9Znh8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJhc2UiKSxmeD9meC5nZXRBdHRyaWJ1dGUoImhyZWYiKTpudWxsfSkoKTtyZXR1cm4gbnVsbD09ZT9udWxsOihmdW5jdGlvbiBvKHQpe3V4PXV4fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksdXguc2V0QXR0cmlidXRlKCJocmVmIix0KTtjb25zdCBlPXV4LnBhdGhuYW1lO3JldHVybiIvIj09PWUuY2hhckF0KDApP2U6YC8ke2V9YH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShlKX1yZXNldEJhc2VFbGVtZW50KCl7Zng9bnVsbH1nZXRVc2VyQWdlbnQoKXtyZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnR9Z2V0Q29va2llKHQpe3JldHVybiBfdihkb2N1bWVudC5jb29raWUsdCl9fWxldCB1eCxmeD1udWxsO2NvbnN0IGd4PW5ldyBlcigiVFJBTlNJVElPTl9JRCIpO2NvbnN0IGh4PVt7cHJvdmlkZTpVXyx1c2VGYWN0b3J5OmZ1bmN0aW9uIGJ4KHQsZSxuKXtyZXR1cm4oKT0+e24uZ2V0KGpfKS5kb25lUHJvbWlzZS50aGVuKCgoKT0+e2NvbnN0IG49ck0oKTtBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZS5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZVtuZy10cmFuc2l0aW9uXSIpKS5maWx0ZXIoKGU9PmUuZ2V0QXR0cmlidXRlKCJuZy10cmFuc2l0aW9uIik9PT10KSkuZm9yRWFjaCgodD0+bi5yZW1vdmUodCkpKX0pKX19LGRlcHM6W2d4LHNNLE5wXSxtdWx0aTohMH1dOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB5eHtzdGF0aWMgaW5pdCgpeyEoZnVuY3Rpb24gdChlKXt2Qz1lfSkobmV3IHl4KX1hZGRUb1dpbmRvdyh0KXtYbi5nZXRBbmd1bGFyVGVzdGFiaWxpdHk9KGUsbj0hMCk9Pntjb25zdCBvPXQuZmluZFRlc3RhYmlsaXR5SW5UcmVlKGUsbik7aWYobnVsbD09byl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHRlc3RhYmlsaXR5IGZvciBlbGVtZW50LiIpO3JldHVybiBvfSxYbi5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcz0oKT0+dC5nZXRBbGxUZXN0YWJpbGl0aWVzKCksWG4uZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cz0oKT0+dC5nZXRBbGxSb290RWxlbWVudHMoKTtYbi5mcmFtZXdvcmtTdGFiaWxpemVyc3x8KFhuLmZyYW1ld29ya1N0YWJpbGl6ZXJzPVtdKSxYbi5mcmFtZXdvcmtTdGFiaWxpemVycy5wdXNoKCh0PT57Y29uc3QgZT1Ybi5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcygpO2xldCBuPWUubGVuZ3RoLG89ITE7Y29uc3QgaT1mdW5jdGlvbihlKXtvPW98fGUsbi0tLDA9PW4mJnQobyl9O2UuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC53aGVuU3RhYmxlKGkpfSkpfSkpfWZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LGUsbil7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtjb25zdCBvPXQuZ2V0VGVzdGFiaWxpdHkoZSk7cmV0dXJuIG51bGwhPW8/bzpuP3JNKCkuaXNTaGFkb3dSb290KGUpP3RoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsZS5ob3N0LCEwKTp0aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LGUucGFyZW50RWxlbWVudCwhMCk6bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIF94e2J1aWxkKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH19X3guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF94KX0sX3guybVwcm92PVNuKHt0b2tlbjpfeCxmYWN0b3J5Ol94Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfeCxbe3R5cGU6am19XSxudWxsLG51bGwpO25ldyBCcjtjb25zdCBDeD1bXSxNeD1uZXcgZXIoIkV2ZW50TWFuYWdlclBsdWdpbnMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgdnh7Y29uc3RydWN0b3IodCxlKXt0aGlzLl96b25lPWUsdGhpcy5fZXZlbnROYW1lVG9QbHVnaW49bmV3IE1hcCx0LmZvckVhY2goKHQ9PnQubWFuYWdlcj10aGlzKSksdGhpcy5fcGx1Z2lucz10LnNsaWNlKCkucmV2ZXJzZSgpfWFkZEV2ZW50TGlzdGVuZXIodCxlLG4pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEV2ZW50TGlzdGVuZXIodCxlLG4pfWFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLG4pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLG4pfWdldFpvbmUoKXtyZXR1cm4gdGhpcy5fem9uZX1fZmluZFBsdWdpbkZvcih0KXtjb25zdCBlPXRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luLmdldCh0KTtpZihlKXJldHVybiBlO2NvbnN0IG49dGhpcy5fcGx1Z2lucztmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7Y29uc3Qgbz1uW2VdO2lmKG8uc3VwcG9ydHModCkpcmV0dXJuIHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luLnNldCh0LG8pLG99dGhyb3cgbmV3IEVycm9yKGBObyBldmVudCBtYW5hZ2VyIHBsdWdpbiBmb3VuZCBmb3IgZXZlbnQgJHt0fWApfX12eC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dngpKFRyKE14KSxUcihtQykpfSx2eC7JtXByb3Y9U24oe3Rva2VuOnZ4LGZhY3Rvcnk6dnguybVmYWN9KSx2eC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W014XX1dfSx7dHlwZTptQ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodngsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W014XX1dfSx7dHlwZTptQ31dfSksbnVsbCk7Y2xhc3MgeHh7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXR9YWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsbil7Y29uc3Qgbz1yTSgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYyx0KTtpZighbyl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHRhcmdldCAke299IGZvciBldmVudCAke2V9YCk7cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihvLGUsbil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBPeHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0eWxlc1NldD1uZXcgU2V0fWFkZFN0eWxlcyh0KXtjb25zdCBlPW5ldyBTZXQ7dC5mb3JFYWNoKCh0PT57dGhpcy5fc3R5bGVzU2V0Lmhhcyh0KXx8KHRoaXMuX3N0eWxlc1NldC5hZGQodCksZS5hZGQodCkpfSkpLHRoaXMub25TdHlsZXNBZGRlZChlKX1vblN0eWxlc0FkZGVkKHQpe31nZXRBbGxTdHlsZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9zdHlsZXNTZXQpfX1PeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T3gpfSxPeC7JtXByb3Y9U24oe3Rva2VuOk94LGZhY3Rvcnk6T3guybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE94LFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y2xhc3MgUHggZXh0ZW5kcyBPeHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10LHRoaXMuX2hvc3ROb2Rlcz1uZXcgTWFwLHRoaXMuX2hvc3ROb2Rlcy5zZXQodC5oZWFkLFtdKX1fYWRkU3R5bGVzVG9Ib3N0KHQsZSxuKXt0LmZvckVhY2goKHQ9Pntjb25zdCBvPXRoaXMuX2RvYy5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO28udGV4dENvbnRlbnQ9dCxuLnB1c2goZS5hcHBlbmRDaGlsZChvKSl9KSl9YWRkSG9zdCh0KXtjb25zdCBlPVtdO3RoaXMuX2FkZFN0eWxlc1RvSG9zdCh0aGlzLl9zdHlsZXNTZXQsdCxlKSx0aGlzLl9ob3N0Tm9kZXMuc2V0KHQsZSl9cmVtb3ZlSG9zdCh0KXtjb25zdCBlPXRoaXMuX2hvc3ROb2Rlcy5nZXQodCk7ZSYmZS5mb3JFYWNoKHd4KSx0aGlzLl9ob3N0Tm9kZXMuZGVsZXRlKHQpfW9uU3R5bGVzQWRkZWQodCl7dGhpcy5faG9zdE5vZGVzLmZvckVhY2goKChlLG4pPT57dGhpcy5fYWRkU3R5bGVzVG9Ib3N0KHQsbixlKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKCh0PT50LmZvckVhY2god3gpKSl9fWZ1bmN0aW9uIHd4KHQpe3JNKCkucmVtb3ZlKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9QeC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UHgpKFRyKHNNKSl9LFB4Lsm1cHJvdj1Tbih7dG9rZW46UHgsZmFjdG9yeTpQeC7JtWZhY30pLFB4LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQeCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjb25zdCBreD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn0sU3g9LyVDT01QJS9nLER4PSJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHwhIW5nRGV2TW9kZSxSeD0iX25naG9zdC0lQ09NUCUiLEV4PSJfbmdjb250ZW50LSVDT01QJSI7ZnVuY3Rpb24gQXgodCxlLG4pe2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtsZXQgaT1lW29dO0FycmF5LmlzQXJyYXkoaSk/QXgodCxpLG4pOihpPWkucmVwbGFjZShTeCx0KSxuLnB1c2goaSkpfXJldHVybiBufWZ1bmN0aW9uIFR4KHQpe3JldHVybiBlPT57aWYoIl9fbmdVbndyYXBfXyI9PT1lKXJldHVybiB0OyExPT09dChlKSYmKGUucHJldmVudERlZmF1bHQoKSxlLnJldHVyblZhbHVlPSExKX19bGV0IE54PSExO2NsYXNzIHp4e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmV2ZW50TWFuYWdlcj10LHRoaXMuc2hhcmVkU3R5bGVzSG9zdD1lLHRoaXMuYXBwSWQ9bix0aGlzLnJlbmRlcmVyQnlDb21wSWQ9bmV3IE1hcCx0aGlzLmRlZmF1bHRSZW5kZXJlcj1uZXcgSXgodCl9Y3JlYXRlUmVuZGVyZXIodCxlKXtpZighdHx8IWUpcmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyO3N3aXRjaChlLmVuY2Fwc3VsYXRpb24pe2Nhc2UgV24uRW11bGF0ZWQ6e2xldCBuPXRoaXMucmVuZGVyZXJCeUNvbXBJZC5nZXQoZS5pZCk7cmV0dXJuIG58fChuPW5ldyBMeCh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsZSx0aGlzLmFwcElkKSx0aGlzLnJlbmRlcmVyQnlDb21wSWQuc2V0KGUuaWQsbikpLG4uYXBwbHlUb0hvc3QodCksbn1jYXNlIDE6Y2FzZSBXbi5TaGFkb3dEb206cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fE54fHwxIT09ZS5lbmNhcHN1bGF0aW9ufHwoTng9ITAsY29uc29sZS53YXJuKCJWaWV3RW5jYXBzdWxhdGlvbi5OYXRpdmUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gRmFsbGluZyBiYWNrIHRvIFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbS4gVGhlIGZhbGxiYWNrIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTIuIikpLG5ldyBCeCh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsdCxlKTtkZWZhdWx0OmlmKCF0aGlzLnJlbmRlcmVyQnlDb21wSWQuaGFzKGUuaWQpKXtjb25zdCB0PUF4KGUuaWQsZS5zdHlsZXMsW10pO3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5hZGRTdHlsZXModCksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLHRoaXMuZGVmYXVsdFJlbmRlcmVyKX1yZXR1cm4gdGhpcy5kZWZhdWx0UmVuZGVyZXJ9fWJlZ2luKCl7fWVuZCgpe319enguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHp4KShUcih2eCksVHIoUHgpLFRyKFdfKSl9LHp4Lsm1cHJvdj1Tbih7dG9rZW46engsZmFjdG9yeTp6eC7JtWZhY30pLHp4LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dnh9LHt0eXBlOlB4fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbV19dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHp4LFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2eH0se3R5cGU6UHh9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltXX119XX1dfSksbnVsbCk7Y2xhc3MgSXh7Y29uc3RydWN0b3IodCl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKX1kZXN0cm95KCl7fWNyZWF0ZUVsZW1lbnQodCxlKXtyZXR1cm4gZT9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoa3hbZV18fGUsdCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KX1jcmVhdGVDb21tZW50KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfWNyZWF0ZVRleHQodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfWFwcGVuZENoaWxkKHQsZSl7dC5hcHBlbmRDaGlsZChlKX1pbnNlcnRCZWZvcmUodCxlLG4pe3QmJnQuaW5zZXJ0QmVmb3JlKGUsbil9cmVtb3ZlQ2hpbGQodCxlKXt0JiZ0LnJlbW92ZUNoaWxkKGUpfXNlbGVjdFJvb3RFbGVtZW50KHQsZSl7bGV0IG49InN0cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dDtpZighbil0aHJvdyBuZXcgRXJyb3IoYFRoZSBzZWxlY3RvciAiJHt0fSIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHNgKTtyZXR1cm4gZXx8KG4udGV4dENvbnRlbnQ9IiIpLG59cGFyZW50Tm9kZSh0KXtyZXR1cm4gdC5wYXJlbnROb2RlfW5leHRTaWJsaW5nKHQpe3JldHVybiB0Lm5leHRTaWJsaW5nfXNldEF0dHJpYnV0ZSh0LGUsbixvKXtpZihvKXtlPW8rIjoiK2U7Y29uc3QgaT1reFtvXTtpP3Quc2V0QXR0cmlidXRlTlMoaSxlLG4pOnQuc2V0QXR0cmlidXRlKGUsbil9ZWxzZSB0LnNldEF0dHJpYnV0ZShlLG4pfXJlbW92ZUF0dHJpYnV0ZSh0LGUsbil7aWYobil7Y29uc3Qgbz1reFtuXTtvP3QucmVtb3ZlQXR0cmlidXRlTlMobyxlKTp0LnJlbW92ZUF0dHJpYnV0ZShgJHtufToke2V9YCl9ZWxzZSB0LnJlbW92ZUF0dHJpYnV0ZShlKX1hZGRDbGFzcyh0LGUpe3QuY2xhc3NMaXN0LmFkZChlKX1yZW1vdmVDbGFzcyh0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX1zZXRTdHlsZSh0LGUsbixvKXtvJihFbC5EYXNoQ2FzZXxFbC5JbXBvcnRhbnQpP3Quc3R5bGUuc2V0UHJvcGVydHkoZSxuLG8mRWwuSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTp0LnN0eWxlW2VdPW59cmVtb3ZlU3R5bGUodCxlLG4pe24mRWwuRGFzaENhc2U/dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKTp0LnN0eWxlW2VdPSIifXNldFByb3BlcnR5KHQsZSxuKXtEeCYmRngoZSwicHJvcGVydHkiKSx0W2VdPW59c2V0VmFsdWUodCxlKXt0Lm5vZGVWYWx1ZT1lfWxpc3Rlbih0LGUsbil7cmV0dXJuIER4JiZGeChlLCJsaXN0ZW5lciIpLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxUeChuKSk6dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LGUsVHgobikpfX1jb25zdCBIeD0iQCIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBGeCh0LGUpe2lmKHQuY2hhckNvZGVBdCgwKT09PUh4KXRocm93IG5ldyBFcnJvcihgRm91bmQgdGhlIHN5bnRoZXRpYyAke2V9ICR7dH0uIFBsZWFzZSBpbmNsdWRlIGVpdGhlciAiQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUiIG9yICJOb29wQW5pbWF0aW9uc01vZHVsZSIgaW4geW91ciBhcHBsaWNhdGlvbi5gKX1jbGFzcyBMeCBleHRlbmRzIEl4e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQpLHRoaXMuY29tcG9uZW50PW47Y29uc3QgaT1BeChvKyItIituLmlkLG4uc3R5bGVzLFtdKTtlLmFkZFN0eWxlcyhpKSx0aGlzLmNvbnRlbnRBdHRyPShmdW5jdGlvbiBhKHQpe3JldHVybiBFeC5yZXBsYWNlKFN4LHQpfSkobysiLSIrbi5pZCksdGhpcy5ob3N0QXR0cj0oZnVuY3Rpb24gcih0KXtyZXR1cm4gUngucmVwbGFjZShTeCx0KX0pKG8rIi0iK24uaWQpfWFwcGx5VG9Ib3N0KHQpe3N1cGVyLnNldEF0dHJpYnV0ZSh0LHRoaXMuaG9zdEF0dHIsIiIpfWNyZWF0ZUVsZW1lbnQodCxlKXtjb25zdCBuPXN1cGVyLmNyZWF0ZUVsZW1lbnQodCxlKTtyZXR1cm4gc3VwZXIuc2V0QXR0cmlidXRlKG4sdGhpcy5jb250ZW50QXR0ciwiIiksbn19Y2xhc3MgQnggZXh0ZW5kcyBJeHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0KSx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLmhvc3RFbD1uLHRoaXMuc2hhZG93Um9vdD1uLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSx0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkSG9zdCh0aGlzLnNoYWRvd1Jvb3QpO2NvbnN0IGk9QXgoby5pZCxvLnN0eWxlcyxbXSk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtlLnRleHRDb250ZW50PWlbdF0sdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKGUpfX1ub2RlT3JTaGFkb3dSb290KHQpe3JldHVybiB0PT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OnR9ZGVzdHJveSgpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9YXBwZW5kQ2hpbGQodCxlKXtyZXR1cm4gc3VwZXIuYXBwZW5kQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpLGUpfWluc2VydEJlZm9yZSh0LGUsbil7cmV0dXJuIHN1cGVyLmluc2VydEJlZm9yZSh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCksZSxuKX1yZW1vdmVDaGlsZCh0LGUpe3JldHVybiBzdXBlci5yZW1vdmVDaGlsZCh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCksZSl9cGFyZW50Tm9kZSh0KXtyZXR1cm4gdGhpcy5ub2RlT3JTaGFkb3dSb290KHN1cGVyLnBhcmVudE5vZGUodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBWeCBleHRlbmRzIHh4e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfXN1cHBvcnRzKHQpe3JldHVybiEwfWFkZEV2ZW50TGlzdGVuZXIodCxlLG4pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSwoKT0+dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSxuKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbil9fVZ4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWeCkoVHIoc00pKX0sVnguybVwcm92PVNuKHt0b2tlbjpWeCxmYWN0b3J5OlZ4Lsm1ZmFjfSksVnguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFZ4LFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgVXg9e3BhbjohMCxwYW5zdGFydDohMCxwYW5tb3ZlOiEwLHBhbmVuZDohMCxwYW5jYW5jZWw6ITAscGFubGVmdDohMCxwYW5yaWdodDohMCxwYW51cDohMCxwYW5kb3duOiEwLHBpbmNoOiEwLHBpbmNoc3RhcnQ6ITAscGluY2htb3ZlOiEwLHBpbmNoZW5kOiEwLHBpbmNoY2FuY2VsOiEwLHBpbmNoaW46ITAscGluY2hvdXQ6ITAscHJlc3M6ITAscHJlc3N1cDohMCxyb3RhdGU6ITAscm90YXRlc3RhcnQ6ITAscm90YXRlbW92ZTohMCxyb3RhdGVlbmQ6ITAscm90YXRlY2FuY2VsOiEwLHN3aXBlOiEwLHN3aXBlbGVmdDohMCxzd2lwZXJpZ2h0OiEwLHN3aXBldXA6ITAsc3dpcGVkb3duOiEwLHRhcDohMCxkb3VibGV0YXA6ITB9LGp4PW5ldyBlcigiSGFtbWVyR2VzdHVyZUNvbmZpZyIpLFd4PW5ldyBlcigiSGFtbWVyTG9hZGVyIik7Y2xhc3MgR3h7Y29uc3RydWN0b3IoKXt0aGlzLmV2ZW50cz1bXSx0aGlzLm92ZXJyaWRlcz17fX1idWlsZEhhbW1lcih0KXtjb25zdCBlPW5ldyBIYW1tZXIodCx0aGlzLm9wdGlvbnMpO2UuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEwfSksZS5nZXQoInJvdGF0ZSIpLnNldCh7ZW5hYmxlOiEwfSk7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vdmVycmlkZXMpZS5nZXQodCkuc2V0KHRoaXMub3ZlcnJpZGVzW3RdKTtyZXR1cm4gZX19R3guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEd4KX0sR3guybVwcm92PVNuKHt0b2tlbjpHeCxmYWN0b3J5Okd4Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihHeCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIFl4IGV4dGVuZHMgeHh7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCksdGhpcy5fY29uZmlnPWUsdGhpcy5jb25zb2xlPW4sdGhpcy5sb2FkZXI9byx0aGlzLl9sb2FkZXJQcm9taXNlPW51bGx9c3VwcG9ydHModCl7cmV0dXJuISghVXguaGFzT3duUHJvcGVydHkodC50b0xvd2VyQ2FzZSgpKSYmIXRoaXMuaXNDdXN0b21FdmVudCh0KSkmJighKCF3aW5kb3cuSGFtbWVyJiYhdGhpcy5sb2FkZXIpfHwoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZ0aGlzLmNvbnNvbGUud2FybihgVGhlICIke3R9IiBldmVudCBjYW5ub3QgYmUgYm91bmQgYmVjYXVzZSBIYW1tZXIuSlMgaXMgbm90IGxvYWRlZCBhbmQgbm8gY3VzdG9tIGxvYWRlciBoYXMgYmVlbiBzcGVjaWZpZWQuYCksITEpKX1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtjb25zdCBvPXRoaXMubWFuYWdlci5nZXRab25lKCk7aWYoZT1lLnRvTG93ZXJDYXNlKCksIXdpbmRvdy5IYW1tZXImJnRoaXMubG9hZGVyKXt0aGlzLl9sb2FkZXJQcm9taXNlPXRoaXMuX2xvYWRlclByb21pc2V8fHRoaXMubG9hZGVyKCk7bGV0IG89ITEsaT0oKT0+e289ITB9O3JldHVybiB0aGlzLl9sb2FkZXJQcm9taXNlLnRoZW4oKCgpPT57aWYoIXdpbmRvdy5IYW1tZXIpcmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZ0aGlzLmNvbnNvbGUud2FybigiVGhlIGN1c3RvbSBIQU1NRVJfTE9BREVSIGNvbXBsZXRlZCwgYnV0IEhhbW1lci5KUyBpcyBub3QgcHJlc2VudC4iKSx2b2lkKGk9KCk9Pnt9KTtvfHwoaT10aGlzLmFkZEV2ZW50TGlzdGVuZXIodCxlLG4pKX0pKS5jYXRjaCgoKCk9PnsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnRoaXMuY29uc29sZS53YXJuKGBUaGUgIiR7ZX0iIGV2ZW50IGNhbm5vdCBiZSBib3VuZCBiZWNhdXNlIHRoZSBjdXN0b20gSGFtbWVyLkpTIGxvYWRlciBmYWlsZWQuYCksaT0oKT0+e319KSksKCk9PntpKCl9fXJldHVybiBvLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IGk9dGhpcy5fY29uZmlnLmJ1aWxkSGFtbWVyKHQpLGE9ZnVuY3Rpb24odCl7by5ydW5HdWFyZGVkKChmdW5jdGlvbigpe24odCl9KSl9O3JldHVybiBpLm9uKGUsYSksKCk9PntpLm9mZihlLGEpLCJmdW5jdGlvbiI9PXR5cGVvZiBpLmRlc3Ryb3kmJmkuZGVzdHJveSgpfX0pKX1pc0N1c3RvbUV2ZW50KHQpe3JldHVybiB0aGlzLl9jb25maWcuZXZlbnRzLmluZGV4T2YodCk+LTF9fVl4Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZeCkoVHIoc00pLFRyKGp4KSxUcihKXyksVHIoV3gsOCkpfSxZeC7JtXByb3Y9U24oe3Rva2VuOll4LGZhY3Rvcnk6WXguybVmYWN9KSxZeC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6R3gsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbanhdfV19LHt0eXBlOkpffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1d4XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZeCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpHeCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltqeF19XX0se3R5cGU6Sl99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbV3hdfV19XX0pLG51bGwpO2NvbnN0IHF4PVt7cHJvdmlkZTpNeCx1c2VDbGFzczpZeCxtdWx0aTohMCxkZXBzOltzTSxqeCxKXyxbbmV3IEJyLFd4XV19LHtwcm92aWRlOmp4LHVzZUNsYXNzOkd4LGRlcHM6W119XSxaeD1bXTtjbGFzcyBYeHt9WHguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh4KX0sWHguybVtb2Q9dW8oe3R5cGU6WHh9KSxYeC7JtWluaj1Ebih7cHJvdmlkZXJzOnF4fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYeCxbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpxeH1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEt4PVsiYWx0IiwiY29udHJvbCIsIm1ldGEiLCJzaGlmdCJdLEp4PXsiXGIiOiJCYWNrc3BhY2UiLCJcdCI6IlRhYiIsIn8iOiJEZWxldGUiLCIbIjoiRXNjYXBlIixEZWw6IkRlbGV0ZSIsRXNjOiJFc2NhcGUiLExlZnQ6IkFycm93TGVmdCIsUmlnaHQ6IkFycm93UmlnaHQiLFVwOiJBcnJvd1VwIixEb3duOiJBcnJvd0Rvd24iLE1lbnU6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLFdpbjoiT1MifSxReD17QToiMSIsQjoiMiIsQzoiMyIsRDoiNCIsRToiNSIsRjoiNiIsRzoiNyIsSDoiOCIsSToiOSIsSjoiKiIsSzoiKyIsTToiLSIsTjoiLiIsTzoiLyIsImAiOiIwIiwiwpAiOiJOdW1Mb2NrIn0sJHg9e2FsdDp0PT50LmFsdEtleSxjb250cm9sOnQ9PnQuY3RybEtleSxtZXRhOnQ9PnQubWV0YUtleSxzaGlmdDp0PT50LnNoaWZ0S2V5fTtjbGFzcyB0TyBleHRlbmRzIHh4e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfXN1cHBvcnRzKHQpe3JldHVybiBudWxsIT10Ty5wYXJzZUV2ZW50TmFtZSh0KX1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtjb25zdCBvPXRPLnBhcnNlRXZlbnROYW1lKGUpLGk9dE8uZXZlbnRDYWxsYmFjayhvLmZ1bGxLZXksbix0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpKTtyZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnJNKCkub25BbmRDYW5jZWwodCxvLmRvbUV2ZW50TmFtZSxpKSkpfXN0YXRpYyBwYXJzZUV2ZW50TmFtZSh0KXtjb25zdCBlPXQudG9Mb3dlckNhc2UoKS5zcGxpdCgiLiIpLG49ZS5zaGlmdCgpO2lmKDA9PT1lLmxlbmd0aHx8ImtleWRvd24iIT09biYmImtleXVwIiE9PW4pcmV0dXJuIG51bGw7Y29uc3Qgbz10Ty5fbm9ybWFsaXplS2V5KGUucG9wKCkpO2xldCBpPSIiO2lmKEt4LmZvckVhY2goKHQ9Pntjb25zdCBuPWUuaW5kZXhPZih0KTtuPi0xJiYoZS5zcGxpY2UobiwxKSxpKz10KyIuIil9KSksaSs9bywwIT1lLmxlbmd0aHx8MD09PW8ubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGE9e307cmV0dXJuIGEuZG9tRXZlbnROYW1lPW4sYS5mdWxsS2V5PWksYX1zdGF0aWMgZ2V0RXZlbnRGdWxsS2V5KHQpe2xldCBlPSIiLG49KGZ1bmN0aW9uIG8odCl7bGV0IGU9dC5rZXk7aWYobnVsbD09ZSl7aWYoZT10LmtleUlkZW50aWZpZXIsbnVsbD09ZSlyZXR1cm4iVW5pZGVudGlmaWVkIjtlLnN0YXJ0c1dpdGgoIlUrIikmJihlPVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZS5zdWJzdHJpbmcoMiksMTYpKSwzPT09dC5sb2NhdGlvbiYmUXguaGFzT3duUHJvcGVydHkoZSkmJihlPVF4W2VdKSl9cmV0dXJuIEp4W2VdfHxlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpO3JldHVybiBuPW4udG9Mb3dlckNhc2UoKSwiICI9PT1uP249InNwYWNlIjoiLiI9PT1uJiYobj0iZG90IiksS3guZm9yRWFjaCgobz0+e2lmKG8hPW4peygwLCR4W29dKSh0KSYmKGUrPW8rIi4iKX19KSksZSs9bixlfXN0YXRpYyBldmVudENhbGxiYWNrKHQsZSxuKXtyZXR1cm4gbz0+e3RPLmdldEV2ZW50RnVsbEtleShvKT09PXQmJm4ucnVuR3VhcmRlZCgoKCk9PmUobykpKX19c3RhdGljIF9ub3JtYWxpemVLZXkodCl7c3dpdGNoKHQpe2Nhc2UiZXNjIjpyZXR1cm4iZXNjYXBlIjtkZWZhdWx0OnJldHVybiB0fX19dE8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRPKShUcihzTSkpfSx0Ty7JtXByb3Y9U24oe3Rva2VuOnRPLGZhY3Rvcnk6dE8uybVmYWN9KSx0Ty5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodE8sW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Y2xhc3MgZU97fWZ1bmN0aW9uIG5PKHQpe3JldHVybiBuZXcgb08odC5nZXQoc00pKX1lTy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZU8pfSxlTy7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBUcihvTyl9LHRva2VuOmVPLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlTyxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUV4aXN0aW5nOiRlKCgoKT0+b08pKX1dfV0sbnVsbCxudWxsKTtjbGFzcyBvTyBleHRlbmRzIGVPe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZG9jPXR9c2FuaXRpemUodCxlKXtpZihudWxsPT1lKXJldHVybiBudWxsO3N3aXRjaCh0KXtjYXNlIFlzLk5PTkU6cmV0dXJuIGU7Y2FzZSBZcy5IVE1MOnJldHVybiBncyhlLCJIVE1MIik/ZnMoZSk6V3ModGhpcy5fZG9jLFN0cmluZyhlKSkudG9TdHJpbmcoKTtjYXNlIFlzLlNUWUxFOnJldHVybiBncyhlLCJTdHlsZSIpP2ZzKGUpOmU7Y2FzZSBZcy5TQ1JJUFQ6aWYoZ3MoZSwiU2NyaXB0IikpcmV0dXJuIGZzKGUpO3Rocm93IG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3JpcHQgY29udGV4dCIpO2Nhc2UgWXMuVVJMOnJldHVybiBocyhlKSxncyhlLCJVUkwiKT9mcyhlKTp2cyhTdHJpbmcoZSkpO2Nhc2UgWXMuUkVTT1VSQ0VfVVJMOmlmKGdzKGUsIlJlc291cmNlVVJMIikpcmV0dXJuIGZzKGUpO3Rocm93IG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgU2VjdXJpdHlDb250ZXh0ICR7dH0gKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApfX1ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IGNzKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgZHModCl9KSh0KX1ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0KHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgcHModCl9KSh0KX1ieXBhc3NTZWN1cml0eVRydXN0VXJsKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgbXModCl9KSh0KX1ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyB1cyh0KX0pKHQpfX1vTy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b08pKFRyKHNNKSl9LG9PLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5PKFRyKHlwKSl9LHRva2VuOm9PLHByb3ZpZGVkSW46InJvb3QifSksb08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG9PLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTpuTyxkZXBzOltOcF19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NvbnN0IGlPPVtdLGFPPVRDKFdDLCJicm93c2VyIixbe3Byb3ZpZGU6WF8sdXNlVmFsdWU6ImJyb3dzZXIifSx7cHJvdmlkZTpaXyx1c2VWYWx1ZToKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHJPKCl7bXgubWFrZUN1cnJlbnQoKSx5eC5pbml0KCl9LG11bHRpOiEwfSx7cHJvdmlkZTpzTSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHNPKCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSl7b2k9ZX0pKGRvY3VtZW50KSxkb2N1bWVudH0sZGVwczpbXX1dKSxsTz1baU8se3Byb3ZpZGU6Q3AsdXNlVmFsdWU6InJvb3QifSx7cHJvdmlkZTpmbCx1c2VGYWN0b3J5OmZ1bmN0aW9uIGNPKCl7cmV0dXJuIG5ldyBmbH0sZGVwczpbXX0se3Byb3ZpZGU6TXgsdXNlQ2xhc3M6VngsbXVsdGk6ITAsZGVwczpbc00sbUMsWF9dfSx7cHJvdmlkZTpNeCx1c2VDbGFzczp0TyxtdWx0aTohMCxkZXBzOltzTV19LFp4LHtwcm92aWRlOnp4LHVzZUNsYXNzOnp4LGRlcHM6W3Z4LFB4LFdfXX0se3Byb3ZpZGU6UWgsdXNlRXhpc3Rpbmc6enh9LHtwcm92aWRlOk94LHVzZUV4aXN0aW5nOlB4fSx7cHJvdmlkZTpQeCx1c2VDbGFzczpQeCxkZXBzOltzTV19LHtwcm92aWRlOl9DLHVzZUNsYXNzOl9DLGRlcHM6W21DXX0se3Byb3ZpZGU6dngsdXNlQ2xhc3M6dngsZGVwczpbTXgsbUNdfSx7cHJvdmlkZTpweCx1c2VDbGFzczpfeCxkZXBzOltdfSxDeF07Y2xhc3MgZE97Y29uc3RydWN0b3IodCl7aWYodCl0aHJvdyBuZXcgRXJyb3IoIkJyb3dzZXJNb2R1bGUgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuIElmIHlvdSBuZWVkIGFjY2VzcyB0byBjb21tb24gZGlyZWN0aXZlcyBzdWNoIGFzIE5nSWYgYW5kIE5nRm9yIGZyb20gYSBsYXp5IGxvYWRlZCBtb2R1bGUsIGltcG9ydCBDb21tb25Nb2R1bGUgaW5zdGVhZC4iKX1zdGF0aWMgd2l0aFNlcnZlclRyYW5zaXRpb24odCl7cmV0dXJue25nTW9kdWxlOmRPLHByb3ZpZGVyczpbe3Byb3ZpZGU6V18sdXNlVmFsdWU6dC5hcHBJZH0se3Byb3ZpZGU6Z3gsdXNlRXhpc3Rpbmc6V199LGh4XX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gcE8oKXtyZXR1cm4gbmV3IG1PKFRyKHNNKSl9ZE8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRPKShUcihkTywxMikpfSxkTy7JtW1vZD11byh7dHlwZTpkT30pLGRPLsm1aW5qPURuKHtwcm92aWRlcnM6bE8saW1wb3J0czpbcngsS0NdfSksZE8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpkTyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9LHt0eXBlOkxyLGFyZ3M6W2RPXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkTyxbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpsTyxleHBvcnRzOltyeCxLQ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpkTyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9LHt0eXBlOkxyLGFyZ3M6W2RPXX1dfV19KSxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGRPLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3J4LEtDXX19KTtjbGFzcyBtT3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2M9dCx0aGlzLl9kb209ck0oKX1hZGRUYWcodCxlPSExKXtyZXR1cm4gdD90aGlzLl9nZXRPckNyZWF0ZUVsZW1lbnQodCxlKTpudWxsfWFkZFRhZ3ModCxlPSExKXtyZXR1cm4gdD90LnJlZHVjZSgoKHQsbik9PihuJiZ0LnB1c2godGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KG4sZSkpLHQpKSxbXSk6W119Z2V0VGFnKHQpe3JldHVybiB0JiZ0aGlzLl9kb2MucXVlcnlTZWxlY3RvcihgbWV0YVske3R9XWApfHxudWxsfWdldFRhZ3ModCl7aWYoIXQpcmV0dXJuW107Y29uc3QgZT10aGlzLl9kb2MucXVlcnlTZWxlY3RvckFsbChgbWV0YVske3R9XWApO3JldHVybiBlP1tdLnNsaWNlLmNhbGwoZSk6W119dXBkYXRlVGFnKHQsZSl7aWYoIXQpcmV0dXJuIG51bGw7ZT1lfHx0aGlzLl9wYXJzZVNlbGVjdG9yKHQpO2NvbnN0IG49dGhpcy5nZXRUYWcoZSk7cmV0dXJuIG4/dGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbik6dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KHQsITApfXJlbW92ZVRhZyh0KXt0aGlzLnJlbW92ZVRhZ0VsZW1lbnQodGhpcy5nZXRUYWcodCkpfXJlbW92ZVRhZ0VsZW1lbnQodCl7dCYmdGhpcy5fZG9tLnJlbW92ZSh0KX1fZ2V0T3JDcmVhdGVFbGVtZW50KHQsZT0hMSl7aWYoIWUpe2NvbnN0IGU9dGhpcy5fcGFyc2VTZWxlY3Rvcih0KSxuPXRoaXMuZ2V0VGFncyhlKS5maWx0ZXIoKGU9PnRoaXMuX2NvbnRhaW5zQXR0cmlidXRlcyh0LGUpKSlbMF07aWYodm9pZCAwIT09bilyZXR1cm4gbn1jb25zdCBuPXRoaXMuX2RvbS5jcmVhdGVFbGVtZW50KCJtZXRhIik7dGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbik7cmV0dXJuIHRoaXMuX2RvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKG4pLG59X3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LGUpe3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT5lLnNldEF0dHJpYnV0ZSh0aGlzLl9nZXRNZXRhS2V5TWFwKG4pLHRbbl0pKSksZX1fcGFyc2VTZWxlY3Rvcih0KXtjb25zdCBlPXQubmFtZT8ibmFtZSI6InByb3BlcnR5IjtyZXR1cm5gJHtlfT0iJHt0W2VdfSJgfV9jb250YWluc0F0dHJpYnV0ZXModCxlKXtyZXR1cm4gT2JqZWN0LmtleXModCkuZXZlcnkoKG49PmUuZ2V0QXR0cmlidXRlKHRoaXMuX2dldE1ldGFLZXlNYXAobikpPT09dFtuXSkpfV9nZXRNZXRhS2V5TWFwKHQpe3JldHVybiB1T1t0XXx8dH19bU8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1PKShUcihzTSkpfSxtTy7JtXByb3Y9U24oe2ZhY3Rvcnk6cE8sdG9rZW46bU8scHJvdmlkZWRJbjoicm9vdCJ9KSxtTy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobU8sW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5OnBPLGRlcHM6W119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NvbnN0IHVPPXtodHRwRXF1aXY6Imh0dHAtZXF1aXYifTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZk8oKXtyZXR1cm4gbmV3IGdPKFRyKHNNKSl9Y2xhc3MgZ097Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXR9Z2V0VGl0bGUoKXtyZXR1cm4gdGhpcy5fZG9jLnRpdGxlfXNldFRpdGxlKHQpe3RoaXMuX2RvYy50aXRsZT10fHwiIn19Z08uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdPKShUcihzTSkpfSxnTy7JtXByb3Y9U24oe2ZhY3Rvcnk6Zk8sdG9rZW46Z08scHJvdmlkZWRJbjoicm9vdCJ9KSxnTy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ08sW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5OmZPLGRlcHM6W119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIGhPe2NvbnN0cnVjdG9yKCl7dGhpcy5zdG9yZT17fSx0aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzPXt9fXN0YXRpYyBpbml0KHQpe2NvbnN0IGU9bmV3IGhPO3JldHVybiBlLnN0b3JlPXQsZX1nZXQodCxlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5zdG9yZVt0XT90aGlzLnN0b3JlW3RdOmV9c2V0KHQsZSl7dGhpcy5zdG9yZVt0XT1lfXJlbW92ZSh0KXtkZWxldGUgdGhpcy5zdG9yZVt0XX1oYXNLZXkodCl7cmV0dXJuIHRoaXMuc3RvcmUuaGFzT3duUHJvcGVydHkodCl9b25TZXJpYWxpemUodCxlKXt0aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzW3RdPWV9dG9Kc29uKCl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcylpZih0aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzLmhhc093blByb3BlcnR5KHQpKXRyeXt0aGlzLnN0b3JlW3RdPXRoaXMub25TZXJpYWxpemVDYWxsYmFja3NbdF0oKX1jYXRjaCh0KXtjb25zb2xlLndhcm4oIkV4Y2VwdGlvbiBpbiBvblNlcmlhbGl6ZSBjYWxsYmFjazogIix0KX1yZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5zdG9yZSl9fWZ1bmN0aW9uIGJPKHQsZSl7Y29uc3Qgbj10LmdldEVsZW1lbnRCeUlkKGUrIi1zdGF0ZSIpO2xldCBvPXt9O2lmKG4mJm4udGV4dENvbnRlbnQpdHJ5e289SlNPTi5wYXJzZSgoZnVuY3Rpb24gaSh0KXtjb25zdCBlPXsiJmE7IjoiJiIsIiZxOyI6JyInLCImczsiOiInIiwiJmw7IjoiPCIsIiZnOyI6Ij4ifTtyZXR1cm4gdC5yZXBsYWNlKC8mW147XSs7L2csKHQ9PmVbdF0pKX0pKG4udGV4dENvbnRlbnQpKX1jYXRjaCh0KXtjb25zb2xlLndhcm4oIkV4Y2VwdGlvbiB3aGlsZSByZXN0b3JpbmcgVHJhbnNmZXJTdGF0ZSBmb3IgYXBwICIrZSx0KX1yZXR1cm4gaE8uaW5pdChvKX1oTy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aE8pfSxoTy7JtXByb3Y9U24oe3Rva2VuOmhPLGZhY3Rvcnk6aE8uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhPLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y2xhc3MgeU97fXlPLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5Tyl9LHlPLsm1bW9kPXVvKHt0eXBlOnlPfSkseU8uybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6aE8sdXNlRmFjdG9yeTpiTyxkZXBzOltzTSxXX119XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeU8sW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6W3twcm92aWRlOmhPLHVzZUZhY3Rvcnk6Yk8sZGVwczpbc00sV19dfV19XX1dLG51bGwsbnVsbCksCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbmV3IG9iKCIxMi4yLjEiKTt2YXIgX089InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTtmdW5jdGlvbiBDTyh0KXtpZih0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sby5nZXQ/bzp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KX0pKSxlfQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjAuMC1uZXh0LjAKICAgICAqIChjKSAyMDEwLTIwMjAgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi8hKGZ1bmN0aW9uKCl7Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwohKGZ1bmN0aW9uKHQpe3ZhciBlPXQucGVyZm9ybWFuY2U7ZnVuY3Rpb24gbih0KXtlJiZlLm1hcmsmJmUubWFyayh0KX1mdW5jdGlvbiBvKHQsbil7ZSYmZS5tZWFzdXJlJiZlLm1lYXN1cmUodCxuKX1uKCJab25lIik7dmFyIGk9dC5fX1pvbmVfc3ltYm9sX3ByZWZpeHx8Il9fem9uZV9zeW1ib2xfXyI7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gaSt0fXZhciByPSEwPT09dFthKCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVjayIpXTtpZih0LlpvbmUpe2lmKHJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0LlpvbmUuX19zeW1ib2xfXyl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7cmV0dXJuIHQuWm9uZX12YXIgcz0oZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsZSl7dGhpcy5fcGFyZW50PXQsdGhpcy5fbmFtZT1lP2UubmFtZXx8InVubmFtZWQiOiI8cm9vdD4iLHRoaXMuX3Byb3BlcnRpZXM9ZSYmZS5wcm9wZXJ0aWVzfHx7fSx0aGlzLl96b25lRGVsZWdhdGU9bmV3IGQodGhpcyx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5fem9uZURlbGVnYXRlLGUpfXJldHVybiBlLmFzc2VydFpvbmVQYXRjaGVkPWZ1bmN0aW9uKCl7aWYodC5Qcm9taXNlIT09RC5ab25lQXdhcmVQcm9taXNlKXRocm93IG5ldyBFcnJvcigiWm9uZS5qcyBoYXMgZGV0ZWN0ZWQgdGhhdCBab25lQXdhcmVQcm9taXNlIGAod2luZG93fGdsb2JhbCkuUHJvbWlzZWAgaGFzIGJlZW4gb3ZlcndyaXR0ZW4uXG5Nb3N0IGxpa2VseSBjYXVzZSBpcyB0aGF0IGEgUHJvbWlzZSBwb2x5ZmlsbCBoYXMgYmVlbiBsb2FkZWQgYWZ0ZXIgWm9uZS5qcyAoUG9seWZpbGxpbmcgUHJvbWlzZSBhcGkgaXMgbm90IG5lY2Vzc2FyeSB3aGVuIHpvbmUuanMgaXMgbG9hZGVkLiBJZiB5b3UgbXVzdCBsb2FkIG9uZSwgZG8gc28gYmVmb3JlIGxvYWRpbmcgem9uZS5qcy4pIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJyb290Iix7Z2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWUuY3VycmVudDt0LnBhcmVudDspdD10LnBhcmVudDtyZXR1cm4gdH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY3VycmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiBFLnpvbmV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnRUYXNrIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEF9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5fX2xvYWRfcGF0Y2g9ZnVuY3Rpb24oaSxhLHMpe2lmKHZvaWQgMD09PXMmJihzPSExKSxELmhhc093blByb3BlcnR5KGkpKXtpZighcyYmcil0aHJvdyBFcnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIraSl9ZWxzZSBpZighdFsiX19ab25lX2Rpc2FibGVfIitpXSl7dmFyIGw9IlpvbmU6IitpO24obCksRFtpXT1hKHQsZSxSKSxvKGwsbCl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Wm9uZVdpdGgodCk7aWYoZSlyZXR1cm4gZS5fcHJvcGVydGllc1t0XX0sZS5wcm90b3R5cGUuZ2V0Wm9uZVdpdGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXM7ZTspe2lmKGUuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGU7ZT1lLl9wYXJlbnR9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyx0KX0sZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiRXhwZWN0aW5nIGZ1bmN0aW9uIGdvdDogIit0KTt2YXIgbj10aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsdCxlKSxvPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8ucnVuR3VhcmRlZChuLHRoaXMsYXJndW1lbnRzLGUpfX0sZS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKHQsZSxuLG8pe0U9e3BhcmVudDpFLHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4sbyl9ZmluYWxseXtFPUUucGFyZW50fX0sZS5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0LGUsbixvKXt2b2lkIDA9PT1lJiYoZT1udWxsKSxFPXtwYXJlbnQ6RSx6b25lOnRoaXN9O3RyeXt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixvKX1jYXRjaCh0KXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx0KSl0aHJvdyB0fX1maW5hbGx5e0U9RS5wYXJlbnR9fSxlLnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKHQsZSxuKXtpZih0LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8XykubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7aWYodC5zdGF0ZSE9PUN8fHQudHlwZSE9PVMmJnQudHlwZSE9PWspe3ZhciBvPXQuc3RhdGUhPXg7byYmdC5fdHJhbnNpdGlvblRvKHgsdiksdC5ydW5Db3VudCsrO3ZhciBpPUE7QT10LEU9e3BhcmVudDpFLHpvbmU6dGhpc307dHJ5e3QudHlwZT09ayYmdC5kYXRhJiYhdC5kYXRhLmlzUGVyaW9kaWMmJih0LmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLHQsZSxuKX1jYXRjaCh0KXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx0KSl0aHJvdyB0fX1maW5hbGx5e3Quc3RhdGUhPT1DJiZ0LnN0YXRlIT09UCYmKHQudHlwZT09U3x8dC5kYXRhJiZ0LmRhdGEuaXNQZXJpb2RpYz9vJiZ0Ll90cmFuc2l0aW9uVG8odix4KToodC5ydW5Db3VudD0wLHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSxvJiZ0Ll90cmFuc2l0aW9uVG8oQyx4LEMpKSksRT1FLnBhcmVudCxBPWl9fX0sZS5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSYmdC56b25lIT09dGhpcylmb3IodmFyIGU9dGhpcztlOyl7aWYoZT09PXQuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gIit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAiK3Quem9uZS5uYW1lKTtlPWUucGFyZW50fXQuX3RyYW5zaXRpb25UbyhNLEMpO3ZhciBuPVtdO3QuX3pvbmVEZWxlZ2F0ZXM9bix0Ll96b25lPXRoaXM7dHJ5e3Q9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLHQpfWNhdGNoKGUpe3Rocm93IHQuX3RyYW5zaXRpb25UbyhQLE0sQyksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdC5fem9uZURlbGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LDEpLHQuc3RhdGU9PU0mJnQuX3RyYW5zaXRpb25Ubyh2LE0pLHR9LGUucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcCh3LHQsZSxuLG8sdm9pZCAwKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlTWFjcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKGssdCxlLG4sbyxpKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlRXZlbnRUYXNrPWZ1bmN0aW9uKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKFMsdCxlLG4sbyxpKSl9LGUucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCl7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fF8pLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO3QuX3RyYW5zaXRpb25UbyhPLHYseCk7dHJ5e3RoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsdCl9Y2F0Y2goZSl7dGhyb3cgdC5fdHJhbnNpdGlvblRvKFAsTyksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdGhpcy5fdXBkYXRlVGFza0NvdW50KHQsLTEpLHQuX3RyYW5zaXRpb25UbyhDLE8pLHQucnVuQ291bnQ9MCx0fSxlLnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5fem9uZURlbGVnYXRlczstMT09ZSYmKHQuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspbltvXS5fdXBkYXRlVGFza0NvdW50KHQudHlwZSxlKX0sZX0pKCk7cy5fX3N5bWJvbF9fPWE7dmFyIGwsYz17bmFtZToiIixvbkhhc1Rhc2s6ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHQuaGFzVGFzayhuLG8pfSxvblNjaGVkdWxlVGFzazpmdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdC5zY2hlZHVsZVRhc2sobixvKX0sb25JbnZva2VUYXNrOmZ1bmN0aW9uKHQsZSxuLG8saSxhKXtyZXR1cm4gdC5pbnZva2VUYXNrKG4sbyxpLGEpfSxvbkNhbmNlbFRhc2s6ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHQuY2FuY2VsVGFzayhuLG8pfX0sZD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl90YXNrQ291bnRzPXttaWNyb1Rhc2s6MCxtYWNyb1Rhc2s6MCxldmVudFRhc2s6MH0sdGhpcy56b25lPXQsdGhpcy5fcGFyZW50RGVsZWdhdGU9ZSx0aGlzLl9mb3JrWlM9biYmKG4mJm4ub25Gb3JrP246ZS5fZm9ya1pTKSx0aGlzLl9mb3JrRGxndD1uJiYobi5vbkZvcms/ZTplLl9mb3JrRGxndCksdGhpcy5fZm9ya0N1cnJab25lPW4mJihuLm9uRm9yaz90aGlzLnpvbmU6ZS5fZm9ya0N1cnJab25lKSx0aGlzLl9pbnRlcmNlcHRaUz1uJiYobi5vbkludGVyY2VwdD9uOmUuX2ludGVyY2VwdFpTKSx0aGlzLl9pbnRlcmNlcHREbGd0PW4mJihuLm9uSW50ZXJjZXB0P2U6ZS5faW50ZXJjZXB0RGxndCksdGhpcy5faW50ZXJjZXB0Q3VyclpvbmU9biYmKG4ub25JbnRlcmNlcHQ/dGhpcy56b25lOmUuX2ludGVyY2VwdEN1cnJab25lKSx0aGlzLl9pbnZva2VaUz1uJiYobi5vbkludm9rZT9uOmUuX2ludm9rZVpTKSx0aGlzLl9pbnZva2VEbGd0PW4mJihuLm9uSW52b2tlP2U6ZS5faW52b2tlRGxndCksdGhpcy5faW52b2tlQ3VyclpvbmU9biYmKG4ub25JbnZva2U/dGhpcy56b25lOmUuX2ludm9rZUN1cnJab25lKSx0aGlzLl9oYW5kbGVFcnJvclpTPW4mJihuLm9uSGFuZGxlRXJyb3I/bjplLl9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9biYmKG4ub25IYW5kbGVFcnJvcj9lOmUuX2hhbmRsZUVycm9yRGxndCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZT1uJiYobi5vbkhhbmRsZUVycm9yP3RoaXMuem9uZTplLl9oYW5kbGVFcnJvckN1cnJab25lKSx0aGlzLl9zY2hlZHVsZVRhc2taUz1uJiYobi5vblNjaGVkdWxlVGFzaz9uOmUuX3NjaGVkdWxlVGFza1pTKSx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PW4mJihuLm9uU2NoZWR1bGVUYXNrP2U6ZS5fc2NoZWR1bGVUYXNrRGxndCksdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9biYmKG4ub25TY2hlZHVsZVRhc2s/dGhpcy56b25lOmUuX3NjaGVkdWxlVGFza0N1cnJab25lKSx0aGlzLl9pbnZva2VUYXNrWlM9biYmKG4ub25JbnZva2VUYXNrP246ZS5faW52b2tlVGFza1pTKSx0aGlzLl9pbnZva2VUYXNrRGxndD1uJiYobi5vbkludm9rZVRhc2s/ZTplLl9pbnZva2VUYXNrRGxndCksdGhpcy5faW52b2tlVGFza0N1cnJab25lPW4mJihuLm9uSW52b2tlVGFzaz90aGlzLnpvbmU6ZS5faW52b2tlVGFza0N1cnJab25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9biYmKG4ub25DYW5jZWxUYXNrP246ZS5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1uJiYobi5vbkNhbmNlbFRhc2s/ZTplLl9jYW5jZWxUYXNrRGxndCksdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPW4mJihuLm9uQ2FuY2VsVGFzaz90aGlzLnpvbmU6ZS5fY2FuY2VsVGFza0N1cnJab25lKSx0aGlzLl9oYXNUYXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDt2YXIgbz1uJiZuLm9uSGFzVGFzazsob3x8ZSYmZS5faGFzVGFza1pTKSYmKHRoaXMuX2hhc1Rhc2taUz1vP246Yyx0aGlzLl9oYXNUYXNrRGxndD1lLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9dCxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9Yyx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PWUsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1jLHRoaXMuX2ludm9rZVRhc2tEbGd0PWUsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9Yyx0aGlzLl9jYW5jZWxUYXNrRGxndD1lLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gdC5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsdCxlKTpuZXcgcyh0LGUpfSx0LnByb3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25lLHQsZSxuKTplfSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSx0LGUsbixvLGkpOmUuYXBwbHkobixvKX0sdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLHQsZSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuPWU7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSx0LGUpKXx8KG49ZSk7ZWxzZSBpZihlLnNjaGVkdWxlRm4pZS5zY2hlZHVsZUZuKGUpO2Vsc2V7aWYoZS50eXBlIT13KXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7YihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLHQsZSxuLG8pOmUuY2FsbGJhY2suYXBwbHkobixvKX0sdC5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUyluPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLHQsZSk7ZWxzZXtpZighZS5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249ZS5jYW5jZWxGbihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbih0LGUpe3RyeXt0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLHQsZSl9Y2F0Y2goZSl7dGhpcy5oYW5kbGVFcnJvcih0LGUpfX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3Rhc2tDb3VudHMsbz1uW3RdLGk9blt0XT1vK2U7aWYoaTwwKXRocm93IG5ldyBFcnJvcigiTW9yZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpOzAhPW8mJjAhPWl8fHRoaXMuaGFzVGFzayh0aGlzLnpvbmUse21pY3JvVGFzazpuLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpuLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpuLmV2ZW50VGFzaz4wLGNoYW5nZTp0fSl9LHR9KSgpLHA9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShuLG8saSxhLHIscyl7aWYodGhpcy5fem9uZT1udWxsLHRoaXMucnVuQ291bnQ9MCx0aGlzLl96b25lRGVsZWdhdGVzPW51bGwsdGhpcy5fc3RhdGU9Im5vdFNjaGVkdWxlZCIsdGhpcy50eXBlPW4sdGhpcy5zb3VyY2U9byx0aGlzLmRhdGE9YSx0aGlzLnNjaGVkdWxlRm49cix0aGlzLmNhbmNlbEZuPXMsIWkpdGhyb3cgbmV3IEVycm9yKCJjYWxsYmFjayBpcyBub3QgZGVmaW5lZCIpO3RoaXMuY2FsbGJhY2s9aTt2YXIgbD10aGlzO3RoaXMuaW52b2tlPW49PT1TJiZhJiZhLnVzZUc/ZS5pbnZva2VUYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaW52b2tlVGFzay5jYWxsKHQsbCx0aGlzLGFyZ3VtZW50cyl9fXJldHVybiBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxlLG4pe3R8fCh0PXRoaXMpLFQrKzt0cnl7cmV0dXJuIHQucnVuQ291bnQrKyx0LnpvbmUucnVuVGFzayh0LGUsbil9ZmluYWxseXsxPT1UJiZ5KCksVC0tfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzdGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24oKXt0aGlzLl90cmFuc2l0aW9uVG8oQyxNKX0sZS5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5jdGlvbih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIpKyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10LHQ9PUMmJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwpfSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOnRoaXMudHlwZSxzdGF0ZTp0aGlzLnN0YXRlLHNvdXJjZTp0aGlzLnNvdXJjZSx6b25lOnRoaXMuem9uZS5uYW1lLHJ1bkNvdW50OnRoaXMucnVuQ291bnR9fSxlfSkoKSxtPWEoInNldFRpbWVvdXQiKSx1PWEoIlByb21pc2UiKSxmPWEoInRoZW4iKSxnPVtdLGg9ITE7ZnVuY3Rpb24gYihlKXtpZigwPT09VCYmMD09PWcubGVuZ3RoKWlmKGx8fHRbdV0mJihsPXRbdV0ucmVzb2x2ZSgwKSksbCl7dmFyIG49bFtmXTtufHwobj1sLnRoZW4pLG4uY2FsbChsLHkpfWVsc2UgdFttXSh5LDApO2UmJmcucHVzaChlKX1mdW5jdGlvbiB5KCl7aWYoIWgpe2ZvcihoPSEwO2cubGVuZ3RoOyl7dmFyIHQ9ZztnPVtdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdO3RyeXtuLnpvbmUucnVuVGFzayhuLG51bGwsbnVsbCl9Y2F0Y2godCl7Ui5vblVuaGFuZGxlZEVycm9yKHQpfX19Ui5taWNyb3Rhc2tEcmFpbkRvbmUoKSxoPSExfX12YXIgXz17bmFtZToiTk8gWk9ORSJ9LEM9Im5vdFNjaGVkdWxlZCIsTT0ic2NoZWR1bGluZyIsdj0ic2NoZWR1bGVkIix4PSJydW5uaW5nIixPPSJjYW5jZWxpbmciLFA9InVua25vd24iLHc9Im1pY3JvVGFzayIsaz0ibWFjcm9UYXNrIixTPSJldmVudFRhc2siLEQ9e30sUj17c3ltYm9sOmEsY3VycmVudFpvbmVGcmFtZTpmdW5jdGlvbigpe3JldHVybiBFfSxvblVuaGFuZGxlZEVycm9yOk4sbWljcm90YXNrRHJhaW5Eb25lOk4sc2NoZWR1bGVNaWNyb1Rhc2s6YixzaG93VW5jYXVnaHRFcnJvcjpmdW5jdGlvbigpe3JldHVybiFzW2EoImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3IiKV19LHBhdGNoRXZlbnRUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hPblByb3BlcnRpZXM6TixwYXRjaE1ldGhvZDpmdW5jdGlvbigpe3JldHVybiBOfSxiaW5kQXJndW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoVGhlbjpmdW5jdGlvbigpe3JldHVybiBOfSxwYXRjaE1hY3JvVGFzazpmdW5jdGlvbigpe3JldHVybiBOfSxwYXRjaEV2ZW50UHJvdG90eXBlOmZ1bmN0aW9uKCl7cmV0dXJuIE59LGlzSUVPckVkZ2U6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ2V0R2xvYmFsT2JqZWN0czpmdW5jdGlvbigpe30sT2JqZWN0RGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKCl7fSxPYmplY3RDcmVhdGU6ZnVuY3Rpb24oKXt9LEFycmF5U2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hDbGFzczpmdW5jdGlvbigpe3JldHVybiBOfSx3cmFwV2l0aEN1cnJlbnRab25lOmZ1bmN0aW9uKCl7cmV0dXJuIE59LGZpbHRlclByb3BlcnRpZXM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sYXR0YWNoT3JpZ2luVG9QYXRjaGVkOmZ1bmN0aW9uKCl7cmV0dXJuIE59LF9yZWRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIE59LHBhdGNoQ2FsbGJhY2tzOmZ1bmN0aW9uKCl7cmV0dXJuIE59fSxFPXtwYXJlbnQ6bnVsbCx6b25lOm5ldyBzKG51bGwsbnVsbCl9LEE9bnVsbCxUPTA7ZnVuY3Rpb24gTigpe31vKCJab25lIiwiWm9uZSIpLHQuWm9uZT1zfSkoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvd3x8InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZzZWxmfHxfTyk7Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwp2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LG49T2JqZWN0LmdldFByb3RvdHlwZU9mLG89T2JqZWN0LmNyZWF0ZSxpPUFycmF5LnByb3RvdHlwZS5zbGljZSxhPSJhZGRFdmVudExpc3RlbmVyIixyPSJyZW1vdmVFdmVudExpc3RlbmVyIixzPVpvbmUuX19zeW1ib2xfXyhhKSxsPVpvbmUuX19zeW1ib2xfXyhyKSxjPSJ0cnVlIixkPSJmYWxzZSIscD1ab25lLl9fc3ltYm9sX18oIiIpO2Z1bmN0aW9uIG0odCxlKXtyZXR1cm4gWm9uZS5jdXJyZW50LndyYXAodCxlKX1mdW5jdGlvbiB1KHQsZSxuLG8saSl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayh0LGUsbixvLGkpfXZhciBmPVpvbmUuX19zeW1ib2xfXyxnPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LGg9Zz93aW5kb3c6dm9pZCAwLGI9ZyYmaHx8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmfHxfTyx5PSJyZW1vdmVBdHRyaWJ1dGUiLF89W251bGxdO2Z1bmN0aW9uIEModCxlKXtmb3IodmFyIG49dC5sZW5ndGgtMTtuPj0wO24tLSkiZnVuY3Rpb24iPT10eXBlb2YgdFtuXSYmKHRbbl09bSh0W25dLGUrIl8iK24pKTtyZXR1cm4gdH1mdW5jdGlvbiBNKGUsbil7Zm9yKHZhciBvPWUuY29uc3RydWN0b3IubmFtZSxpPWZ1bmN0aW9uKGkpe3ZhciBhPW5baV0scj1lW2FdO2lmKHIpe2lmKCF2KHQoZSxhKSkpcmV0dXJuImNvbnRpbnVlIjtlW2FdPShmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsQyhhcmd1bWVudHMsbysiLiIrYSkpfTtyZXR1cm4geihlLHQpLGV9KShyKX19LGE9MDthPG4ubGVuZ3RoO2ErKylpKGEpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIXR8fCExIT09dC53cml0YWJsZSYmISgiZnVuY3Rpb24iPT10eXBlb2YgdC5nZXQmJnZvaWQgMD09PXQuc2V0KX12YXIgeD0idW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUsTz0hKCJudyJpbiBiKSYmdm9pZCAwIT09Yi5wcm9jZXNzJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKGIucHJvY2VzcyksUD0hTyYmIXgmJiEoIWd8fCFoLkhUTUxFbGVtZW50KSx3PXZvaWQgMCE9PWIucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChiLnByb2Nlc3MpJiYheCYmISghZ3x8IWguSFRNTEVsZW1lbnQpLGs9e30sUz1mdW5jdGlvbih0KXtpZih0PXR8fGIuZXZlbnQpe3ZhciBlPWtbdC50eXBlXTtlfHwoZT1rW3QudHlwZV09ZigiT05fUFJPUEVSVFkiK3QudHlwZSkpO3ZhciBuLG89dGhpc3x8dC50YXJnZXR8fGIsaT1vW2VdO3JldHVybiBQJiZvPT09aCYmImVycm9yIj09PXQudHlwZT8hMD09PShuPWkmJmkuY2FsbCh0aGlzLHQubWVzc2FnZSx0LmZpbGVuYW1lLHQubGluZW5vLHQuY29sbm8sdC5lcnJvcikpJiZ0LnByZXZlbnREZWZhdWx0KCk6bnVsbD09KG49aSYmaS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfHxufHx0LnByZXZlbnREZWZhdWx0KCksbn19O2Z1bmN0aW9uIEQobixvLGkpe3ZhciBhPXQobixvKTtpZighYSYmaSYmdChpLG8pJiYoYT17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxhJiZhLmNvbmZpZ3VyYWJsZSl7dmFyIHI9Zigib24iK28rInBhdGNoZWQiKTtpZighbi5oYXNPd25Qcm9wZXJ0eShyKXx8IW5bcl0pe2RlbGV0ZSBhLndyaXRhYmxlLGRlbGV0ZSBhLnZhbHVlO3ZhciBzPWEuZ2V0LGw9YS5zZXQsYz1vLnN1YnN0cigyKSxkPWtbY107ZHx8KGQ9a1tjXT1mKCJPTl9QUk9QRVJUWSIrYykpLGEuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZXx8biE9PWJ8fChlPWIpLGUmJihlW2RdJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoYyxTKSxsJiZsLmFwcGx5KGUsXyksImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGVbZF09dCxlLmFkZEV2ZW50TGlzdGVuZXIoYyxTLCExKSk6ZVtkXT1udWxsKX0sYS5nZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHR8fG4hPT1ifHwodD1iKSwhdClyZXR1cm4gbnVsbDt2YXIgZT10W2RdO2lmKGUpcmV0dXJuIGU7aWYocyl7dmFyIGk9cyYmcy5jYWxsKHRoaXMpO2lmKGkpcmV0dXJuIGEuc2V0LmNhbGwodGhpcyxpKSwiZnVuY3Rpb24iPT10eXBlb2YgdFt5XSYmdC5yZW1vdmVBdHRyaWJ1dGUobyksaX1yZXR1cm4gbnVsbH0sZShuLG8sYSksbltyXT0hMH19fWZ1bmN0aW9uIFIodCxlLG4pe2lmKGUpZm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspRCh0LCJvbiIrZVtvXSxuKTtlbHNle3ZhciBpPVtdO2Zvcih2YXIgYSBpbiB0KSJvbiI9PWEuc3Vic3RyKDAsMikmJmkucHVzaChhKTtmb3IodmFyIHI9MDtyPGkubGVuZ3RoO3IrKylEKHQsaVtyXSxuKX19dmFyIEU9Zigib3JpZ2luYWxJbnN0YW5jZSIpO2Z1bmN0aW9uIEEodCl7dmFyIG49Ylt0XTtpZihuKXtiW2YodCldPW4sYlt0XT1mdW5jdGlvbigpe3ZhciBlPUMoYXJndW1lbnRzLHQpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnRoaXNbRV09bmV3IG47YnJlYWs7Y2FzZSAxOnRoaXNbRV09bmV3IG4oZVswXSk7YnJlYWs7Y2FzZSAyOnRoaXNbRV09bmV3IG4oZVswXSxlWzFdKTticmVhaztjYXNlIDM6dGhpc1tFXT1uZXcgbihlWzBdLGVbMV0sZVsyXSk7YnJlYWs7Y2FzZSA0OnRoaXNbRV09bmV3IG4oZVswXSxlWzFdLGVbMl0sZVszXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkFyZyBsaXN0IHRvbyBsb25nLiIpfX0seihiW3RdLG4pO3ZhciBvLGk9bmV3IG4oKGZ1bmN0aW9uKCl7fSkpO2ZvcihvIGluIGkpIlhNTEh0dHBSZXF1ZXN0Ij09PXQmJiJyZXNwb25zZUJsb2IiPT09b3x8KGZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiBpW25dP2JbdF0ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbRV1bbl0uYXBwbHkodGhpc1tFXSxhcmd1bWVudHMpfTplKGJbdF0ucHJvdG90eXBlLG4se3NldDpmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZT8odGhpc1tFXVtuXT1tKGUsdCsiLiIrbikseih0aGlzW0VdW25dLGUpKTp0aGlzW0VdW25dPWV9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW0VdW25dfX0pfSkobyk7Zm9yKG8gaW4gbikicHJvdG90eXBlIiE9PW8mJm4uaGFzT3duUHJvcGVydHkobykmJihiW3RdW29dPW5bb10pfX1mdW5jdGlvbiBUKGUsbyxpKXtmb3IodmFyIGE9ZTthJiYhYS5oYXNPd25Qcm9wZXJ0eShvKTspYT1uKGEpOyFhJiZlW29dJiYoYT1lKTt2YXIgcj1mKG8pLHM9bnVsbDtpZihhJiYoIShzPWFbcl0pfHwhYS5oYXNPd25Qcm9wZXJ0eShyKSkmJihzPWFbcl09YVtvXSx2KGEmJnQoYSxvKSkpKXt2YXIgbD1pKHMscixvKTthW29dPWZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyxhcmd1bWVudHMpfSx6KGFbb10scyl9cmV0dXJuIHN9ZnVuY3Rpb24gTih0LGUsbil7dmFyIG89bnVsbDtmdW5jdGlvbiBpKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gZS5hcmdzW2UuY2JJZHhdPWZ1bmN0aW9uKCl7dC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxvLmFwcGx5KGUudGFyZ2V0LGUuYXJncyksdH1vPVQodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxvKXt2YXIgYT1uKGUsbyk7cmV0dXJuIGEuY2JJZHg+PTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBvW2EuY2JJZHhdP3UoYS5uYW1lLG9bYS5jYklkeF0sYSxpKTp0LmFwcGx5KGUsbyl9fSkpfWZ1bmN0aW9uIHoodCxlKXt0W2YoIk9yaWdpbmFsRGVsZWdhdGUiKV09ZX12YXIgST0hMSxIPSExO2Z1bmN0aW9uIEYoKXt0cnl7dmFyIHQ9aC5uYXZpZ2F0b3IudXNlckFnZW50O2lmKC0xIT09dC5pbmRleE9mKCJNU0lFICIpfHwtMSE9PXQuaW5kZXhPZigiVHJpZGVudC8iKSlyZXR1cm4hMH1jYXRjaCh0KXt9cmV0dXJuITF9ZnVuY3Rpb24gTCgpe2lmKEkpcmV0dXJuIEg7ST0hMDt0cnl7dmFyIHQ9aC5uYXZpZ2F0b3IudXNlckFnZW50Oy0xPT09dC5pbmRleE9mKCJNU0lFICIpJiYtMT09PXQuaW5kZXhPZigiVHJpZGVudC8iKSYmLTE9PT10LmluZGV4T2YoIkVkZ2UvIil8fChIPSEwKX1jYXRjaCh0KXt9cmV0dXJuIEh9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL1pvbmUuX19sb2FkX3BhdGNoKCJab25lQXdhcmVQcm9taXNlIiwoZnVuY3Rpb24odCxlLG4pe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaT1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZih0JiZ0LnRvU3RyaW5nPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyl7dmFyIGU9dC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci5uYW1lO3JldHVybihlfHwiIikrIjogIitKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gdD90LnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfXZhciByPW4uc3ltYm9sLHM9W10sbD0hMD09PXRbcigiRElTQUJMRV9XUkFQUElOR19VTkNBVUdIVF9QUk9NSVNFX1JFSkVDVElPTiIpXSxjPXIoIlByb21pc2UiKSxkPXIoInRoZW4iKSxwPSJfX2NyZWF0aW9uVHJhY2VfXyI7bi5vblVuaGFuZGxlZEVycm9yPWZ1bmN0aW9uKHQpe2lmKG4uc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIGU9dCYmdC5yZWplY3Rpb247ZT9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUsIjsgWm9uZToiLHQuem9uZS5uYW1lLCI7IFRhc2s6Iix0LnRhc2smJnQudGFzay5zb3VyY2UsIjsgVmFsdWU6IixlLGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcih0KX19LG4ubWljcm90YXNrRHJhaW5Eb25lPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9cy5zaGlmdCgpO3RyeXt0LnpvbmUucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXtpZih0LnRocm93T3JpZ2luYWwpdGhyb3cgdC5yZWplY3Rpb247dGhyb3cgdH0pKX1jYXRjaCh0KXt1KHQpfX07cy5sZW5ndGg7KXQoKX07dmFyIG09cigidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKTtmdW5jdGlvbiB1KHQpe24ub25VbmhhbmRsZWRFcnJvcih0KTt0cnl7dmFyIG89ZVttXTsiZnVuY3Rpb24iPT10eXBlb2YgbyYmby5jYWxsKHRoaXMsdCl9Y2F0Y2godCl7fX1mdW5jdGlvbiBmKHQpe3JldHVybiB0JiZ0LnRoZW59ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdH1mdW5jdGlvbiBoKHQpe3JldHVybiBGLnJlamVjdCh0KX12YXIgYj1yKCJzdGF0ZSIpLHk9cigidmFsdWUiKSxfPXIoImZpbmFsbHkiKSxDPXIoInBhcmVudFByb21pc2VWYWx1ZSIpLE09cigicGFyZW50UHJvbWlzZVN0YXRlIiksdj0iUHJvbWlzZS50aGVuIix4PW51bGwsTz0hMCxQPSExLHc9MDtmdW5jdGlvbiBrKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RyeXtFKHQsZSxuKX1jYXRjaChlKXtFKHQsITEsZSl9fX12YXIgUz1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLG4uYXBwbHkobnVsbCxhcmd1bWVudHMpKX19fSxEPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixSPXIoImN1cnJlbnRUYXNrVHJhY2UiKTtmdW5jdGlvbiBFKHQsbyxyKXt2YXIgYz1TKCk7aWYodD09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcihEKTtpZih0W2JdPT09eCl7dmFyIGQ9bnVsbDt0cnl7Im9iamVjdCIhPXR5cGVvZiByJiYiZnVuY3Rpb24iIT10eXBlb2Ygcnx8KGQ9ciYmci50aGVuKX1jYXRjaChlKXtyZXR1cm4gYygoZnVuY3Rpb24oKXtFKHQsITEsZSl9KSkoKSx0fWlmKG8hPT1QJiZyIGluc3RhbmNlb2YgRiYmci5oYXNPd25Qcm9wZXJ0eShiKSYmci5oYXNPd25Qcm9wZXJ0eSh5KSYmcltiXSE9PXgpTihyKSxFKHQscltiXSxyW3ldKTtlbHNlIGlmKG8hPT1QJiYiZnVuY3Rpb24iPT10eXBlb2YgZCl0cnl7ZC5jYWxsKHIsYyhrKHQsbykpLGMoayh0LCExKSkpfWNhdGNoKGUpe2MoKGZ1bmN0aW9uKCl7RSh0LCExLGUpfSkpKCl9ZWxzZXt0W2JdPW87dmFyIG09dFt5XTtpZih0W3ldPXIsdFtfXT09PV8mJm89PT1PJiYodFtiXT10W01dLHRbeV09dFtDXSksbz09PVAmJnIgaW5zdGFuY2VvZiBFcnJvcil7dmFyIHU9ZS5jdXJyZW50VGFzayYmZS5jdXJyZW50VGFzay5kYXRhJiZlLmN1cnJlbnRUYXNrLmRhdGFbcF07dSYmaShyLFIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOnV9KX1mb3IodmFyIGY9MDtmPG0ubGVuZ3RoOyl6KHQsbVtmKytdLG1bZisrXSxtW2YrK10sbVtmKytdKTtpZigwPT1tLmxlbmd0aCYmbz09UCl7dFtiXT13O3ZhciBnPXI7dHJ5e3Rocm93IG5ldyBFcnJvcigiVW5jYXVnaHQgKGluIHByb21pc2UpOiAiK2EocikrKHImJnIuc3RhY2s/IlxuIityLnN0YWNrOiIiKSl9Y2F0Y2godCl7Zz10fWwmJihnLnRocm93T3JpZ2luYWw9ITApLGcucmVqZWN0aW9uPXIsZy5wcm9taXNlPXQsZy56b25lPWUuY3VycmVudCxnLnRhc2s9ZS5jdXJyZW50VGFzayxzLnB1c2goZyksbi5zY2hlZHVsZU1pY3JvVGFzaygpfX19cmV0dXJuIHR9dmFyIEE9cigicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKTtmdW5jdGlvbiBOKHQpe2lmKHRbYl09PT13KXt0cnl7dmFyIG49ZVtBXTtuJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmbi5jYWxsKHRoaXMse3JlamVjdGlvbjp0W3ldLHByb21pc2U6dH0pfWNhdGNoKHQpe310W2JdPVA7Zm9yKHZhciBvPTA7bzxzLmxlbmd0aDtvKyspdD09PXNbb10ucHJvbWlzZSYmcy5zcGxpY2UobywxKX19ZnVuY3Rpb24geih0LGUsbixvLGkpe04odCk7dmFyIGE9dFtiXSxyPWE/ImZ1bmN0aW9uIj09dHlwZW9mIG8/bzpnOiJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6aDtlLnNjaGVkdWxlTWljcm9UYXNrKHYsKGZ1bmN0aW9uKCl7dHJ5e3ZhciBvPXRbeV0saT0hIW4mJl89PT1uW19dO2kmJihuW0NdPW8sbltNXT1hKTt2YXIgcz1lLnJ1bihyLHZvaWQgMCxpJiZyIT09aCYmciE9PWc/W106W29dKTtFKG4sITAscyl9Y2F0Y2godCl7RShuLCExLHQpfX0pLG4pfXZhciBJPSJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0iLEg9ZnVuY3Rpb24oKXt9LEY9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt2YXIgbj10aGlzO2lmKCEobiBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhbiBpbnN0YW5jZW9mIFByb21pc2UuIik7bltiXT14LG5beV09W107dHJ5e2UmJmUoayhuLE8pLGsobixQKSl9Y2F0Y2godCl7RShuLCExLHQpfX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBJfSx0LnJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIEUobmV3IHRoaXMobnVsbCksTyx0KX0sdC5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIEUobmV3IHRoaXMobnVsbCksUCx0KX0sdC5yYWNlPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbz1uZXcgdGhpcygoZnVuY3Rpb24odCxvKXtlPXQsbj1vfSkpO2Z1bmN0aW9uIGkodCl7ZSh0KX1mdW5jdGlvbiBhKHQpe24odCl9Zm9yKHZhciByPTAscz10O3I8cy5sZW5ndGg7cisrKXt2YXIgbD1zW3JdO2YobCl8fChsPXRoaXMucmVzb2x2ZShsKSksbC50aGVuKGksYSl9cmV0dXJuIG99LHQuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiB0LmFsbFdpdGhDYWxsYmFjayhlKX0sdC5hbGxTZXR0bGVkPWZ1bmN0aW9uKGUpe3JldHVybih0aGlzJiZ0aGlzLnByb3RvdHlwZSBpbnN0YW5jZW9mIHQ/dGhpczp0KS5hbGxXaXRoQ2FsbGJhY2soZSx7dGhlbkNhbGxiYWNrOmZ1bmN0aW9uKHQpe3JldHVybntzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6dH19LGVycm9yQ2FsbGJhY2s6ZnVuY3Rpb24odCl7cmV0dXJue3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjp0fX19KX0sdC5hbGxXaXRoQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4sbyxpPW5ldyB0aGlzKChmdW5jdGlvbih0LGUpe249dCxvPWV9KSksYT0yLHI9MCxzPVtdLGw9ZnVuY3Rpb24odCl7Zih0KXx8KHQ9Yy5yZXNvbHZlKHQpKTt2YXIgaT1yO3RyeXt0LnRoZW4oKGZ1bmN0aW9uKHQpe3NbaV09ZT9lLnRoZW5DYWxsYmFjayh0KTp0LDA9PS0tYSYmbihzKX0pLChmdW5jdGlvbih0KXtlPyhzW2ldPWUuZXJyb3JDYWxsYmFjayh0KSwwPT0tLWEmJm4ocykpOm8odCl9KSl9Y2F0Y2godCl7byh0KX1hKysscisrfSxjPXRoaXMsZD0wLHA9dDtkPHAubGVuZ3RoO2QrKylsKHBbZF0pO3JldHVybiAwPT0oYS09MikmJm4ocyksaX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFN5bWJvbC50b1N0cmluZ1RhZyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIlByb21pc2UifSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxTeW1ib2wuc3BlY2llcyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihuLG8pe3ZhciBpPXRoaXMuY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdO2kmJiJmdW5jdGlvbiI9PXR5cGVvZiBpfHwoaT10aGlzLmNvbnN0cnVjdG9yfHx0KTt2YXIgYT1uZXcgaShIKSxyPWUuY3VycmVudDtyZXR1cm4gdGhpc1tiXT09eD90aGlzW3ldLnB1c2gocixhLG4sbyk6eih0aGlzLHIsYSxuLG8pLGF9LHQucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4obnVsbCx0KX0sdC5wcm90b3R5cGUuZmluYWxseT1mdW5jdGlvbihuKXt2YXIgbz10aGlzLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXTtvJiYiZnVuY3Rpb24iPT10eXBlb2Ygb3x8KG89dCk7dmFyIGk9bmV3IG8oSCk7aVtfXT1fO3ZhciBhPWUuY3VycmVudDtyZXR1cm4gdGhpc1tiXT09eD90aGlzW3ldLnB1c2goYSxpLG4sbik6eih0aGlzLGEsaSxuLG4pLGl9LHR9KSgpO0YucmVzb2x2ZT1GLnJlc29sdmUsRi5yZWplY3Q9Ri5yZWplY3QsRi5yYWNlPUYucmFjZSxGLmFsbD1GLmFsbDt2YXIgTD10W2NdPXQuUHJvbWlzZTt0LlByb21pc2U9Rjt2YXIgQj1yKCJ0aGVuUGF0Y2hlZCIpO2Z1bmN0aW9uIFYodCl7dmFyIGU9dC5wcm90b3R5cGUsbj1vKGUsInRoZW4iKTtpZighbnx8ITEhPT1uLndyaXRhYmxlJiZuLmNvbmZpZ3VyYWJsZSl7dmFyIGk9ZS50aGVuO2VbZF09aSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IEYoKGZ1bmN0aW9uKHQsZSl7aS5jYWxsKG4sdCxlKX0pKS50aGVuKHQsZSl9LHRbQl09ITB9fWZ1bmN0aW9uIFUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIG89dC5hcHBseShlLG4pO2lmKG8gaW5zdGFuY2VvZiBGKXJldHVybiBvO3ZhciBpPW8uY29uc3RydWN0b3I7cmV0dXJuIGlbQl18fFYoaSksb319cmV0dXJuIG4ucGF0Y2hUaGVuPVYsTCYmKFYoTCksVCh0LCJmZXRjaCIsKGZ1bmN0aW9uKHQpe3JldHVybiBVKHQpfSkpKSxQcm9taXNlW2UuX19zeW1ib2xfXygidW5jYXVnaHRQcm9taXNlRXJyb3JzIildPXMsRn0pKSwKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovClpvbmUuX19sb2FkX3BhdGNoKCJ0b1N0cmluZyIsKGZ1bmN0aW9uKHQpe3ZhciBlPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxuPWYoIk9yaWdpbmFsRGVsZWdhdGUiKSxvPWYoIlByb21pc2UiKSxpPWYoIkVycm9yIiksYT1mdW5jdGlvbiBhKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMpe3ZhciByPXRoaXNbbl07aWYocilyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcj9lLmNhbGwocik6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpO2lmKHRoaXM9PT1Qcm9taXNlKXt2YXIgcz10W29dO2lmKHMpcmV0dXJuIGUuY2FsbChzKX1pZih0aGlzPT09RXJyb3Ipe3ZhciBsPXRbaV07aWYobClyZXR1cm4gZS5jYWxsKGwpfX1yZXR1cm4gZS5jYWxsKHRoaXMpfTthW25dPWUsRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPWE7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxzPSJbb2JqZWN0IFByb21pc2VdIjtPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2UmJnRoaXMgaW5zdGFuY2VvZiBQcm9taXNlP3M6ci5jYWxsKHRoaXMpfX0pKTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCnZhciBCPSExO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXRyeXt2YXIgVj1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtCPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixWLFYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixWLFYpfWNhdGNoKHQpe0I9ITF9dmFyIFU9e3VzZUc6ITB9LGo9e30sVz17fSxHPW5ldyBSZWdFeHAoIl4iK3ArIihcXHcrKSh0cnVlfGZhbHNlKSQiKSxZPWYoInByb3BhZ2F0aW9uU3RvcHBlZCIpO2Z1bmN0aW9uIHEodCxlKXt2YXIgbj0oZT9lKHQpOnQpK2Qsbz0oZT9lKHQpOnQpK2MsaT1wK24sYT1wK287alt0XT17fSxqW3RdW2RdPWksalt0XVtjXT1hfWZ1bmN0aW9uIFoodCxlLG8pe3ZhciBpPW8mJm8uYWRkfHxhLHM9byYmby5ybXx8cixsPW8mJm8ubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLG09byYmby5ybUFsbHx8InJlbW92ZUFsbExpc3RlbmVycyIsdT1mKGkpLGc9Ii4iK2krIjoiLGg9InByZXBlbmRMaXN0ZW5lciIsYj0iLiIraCsiOiIseT1mdW5jdGlvbih0LGUsbil7aWYoIXQuaXNSZW1vdmVkKXt2YXIgbz10LmNhbGxiYWNrOyJvYmplY3QiPT10eXBlb2YgbyYmby5oYW5kbGVFdmVudCYmKHQuY2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIG8uaGFuZGxlRXZlbnQodCl9LHQub3JpZ2luYWxEZWxlZ2F0ZT1vKSx0Lmludm9rZSh0LGUsW25dKTt2YXIgaT10Lm9wdGlvbnM7aSYmIm9iamVjdCI9PXR5cGVvZiBpJiZpLm9uY2UmJmVbc10uY2FsbChlLG4udHlwZSx0Lm9yaWdpbmFsRGVsZWdhdGU/dC5vcmlnaW5hbERlbGVnYXRlOnQuY2FsbGJhY2ssaSl9fSxfPWZ1bmN0aW9uKGUpe2lmKGU9ZXx8dC5ldmVudCl7dmFyIG49dGhpc3x8ZS50YXJnZXR8fHQsbz1uW2pbZS50eXBlXVtkXV07aWYobylpZigxPT09by5sZW5ndGgpeShvWzBdLG4sZSk7ZWxzZSBmb3IodmFyIGk9by5zbGljZSgpLGE9MDthPGkubGVuZ3RoJiYoIWV8fCEwIT09ZVtZXSk7YSsrKXkoaVthXSxuLGUpfX0sQz1mdW5jdGlvbihlKXtpZihlPWV8fHQuZXZlbnQpe3ZhciBuPXRoaXN8fGUudGFyZ2V0fHx0LG89bltqW2UudHlwZV1bY11dO2lmKG8paWYoMT09PW8ubGVuZ3RoKXkob1swXSxuLGUpO2Vsc2UgZm9yKHZhciBpPW8uc2xpY2UoKSxhPTA7YTxpLmxlbmd0aCYmKCFlfHwhMCE9PWVbWV0pO2ErKyl5KGlbYV0sbixlKX19O2Z1bmN0aW9uIE0oZSxvKXtpZighZSlyZXR1cm4hMTt2YXIgYT0hMDtvJiZ2b2lkIDAhPT1vLnVzZUcmJihhPW8udXNlRyk7dmFyIHI9byYmby52aCx5PSEwO28mJnZvaWQgMCE9PW8uY2hrRHVwJiYoeT1vLmNoa0R1cCk7dmFyIE09ITE7byYmdm9pZCAwIT09by5ydCYmKE09by5ydCk7Zm9yKHZhciB2PWU7diYmIXYuaGFzT3duUHJvcGVydHkoaSk7KXY9bih2KTtpZighdiYmZVtpXSYmKHY9ZSksIXYpcmV0dXJuITE7aWYodlt1XSlyZXR1cm4hMTt2YXIgeCxQPW8mJm8uZXZlbnROYW1lVG9TdHJpbmcsdz17fSxrPXZbdV09dltpXSxTPXZbZihzKV09dltzXSxEPXZbZihsKV09dltsXSxSPXZbZihtKV09dlttXTtmdW5jdGlvbiBFKHQsZSl7cmV0dXJuIUImJiJvYmplY3QiPT10eXBlb2YgdCYmdD8hIXQuY2FwdHVyZTpCJiZlPyJib29sZWFuIj09dHlwZW9mIHQ/e2NhcHR1cmU6dCxwYXNzaXZlOiEwfTp0PyJvYmplY3QiPT10eXBlb2YgdCYmITEhPT10LnBhc3NpdmU/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYXNzaXZlOiEwfSk6dDp7cGFzc2l2ZTohMH06dH1vJiZvLnByZXBlbmQmJih4PXZbZihvLnByZXBlbmQpXT12W28ucHJlcGVuZF0pO3ZhciBBPWZ1bmN0aW9uKHQpe3JldHVybiB4LmNhbGwody50YXJnZXQsdy5ldmVudE5hbWUsdC5pbnZva2Usdy5vcHRpb25zKX0sVD1hP2Z1bmN0aW9uKHQpe2lmKCF3LmlzRXhpc3RpbmcpcmV0dXJuIGsuY2FsbCh3LnRhcmdldCx3LmV2ZW50TmFtZSx3LmNhcHR1cmU/QzpfLHcub3B0aW9ucyl9OmZ1bmN0aW9uKHQpe3JldHVybiBrLmNhbGwody50YXJnZXQsdy5ldmVudE5hbWUsdC5pbnZva2Usdy5vcHRpb25zKX0sTj1hP2Z1bmN0aW9uKHQpe2lmKCF0LmlzUmVtb3ZlZCl7dmFyIGU9alt0LmV2ZW50TmFtZV0sbj12b2lkIDA7ZSYmKG49ZVt0LmNhcHR1cmU/YzpkXSk7dmFyIG89biYmdC50YXJnZXRbbl07aWYobylmb3IodmFyIGk9MDtpPG8ubGVuZ3RoO2krKylpZihvW2ldPT09dCl7by5zcGxpY2UoaSwxKSx0LmlzUmVtb3ZlZD0hMCwwPT09by5sZW5ndGgmJih0LmFsbFJlbW92ZWQ9ITAsdC50YXJnZXRbbl09bnVsbCk7YnJlYWt9fWlmKHQuYWxsUmVtb3ZlZClyZXR1cm4gUy5jYWxsKHQudGFyZ2V0LHQuZXZlbnROYW1lLHQuY2FwdHVyZT9DOl8sdC5vcHRpb25zKX06ZnVuY3Rpb24odCl7cmV0dXJuIFMuY2FsbCh0LnRhcmdldCx0LmV2ZW50TmFtZSx0Lmludm9rZSx0Lm9wdGlvbnMpfSxJPW8mJm8uZGlmZj9vLmRpZmY6ZnVuY3Rpb24odCxlKXt2YXIgbj10eXBlb2YgZTtyZXR1cm4iZnVuY3Rpb24iPT09biYmdC5jYWxsYmFjaz09PWV8fCJvYmplY3QiPT09biYmdC5vcmlnaW5hbERlbGVnYXRlPT09ZX0sSD1ab25lW2YoIlVOUEFUQ0hFRF9FVkVOVFMiKV0sRj10W2YoIlBBU1NJVkVfRVZFTlRTIildLEw9ZnVuY3Rpb24oZSxuLGkscyxsLHApe3JldHVybiB2b2lkIDA9PT1sJiYobD0hMSksdm9pZCAwPT09cCYmKHA9ITEpLGZ1bmN0aW9uKCl7dmFyIG09dGhpc3x8dCx1PWFyZ3VtZW50c1swXTtvJiZvLnRyYW5zZmVyRXZlbnROYW1lJiYodT1vLnRyYW5zZmVyRXZlbnROYW1lKHUpKTt2YXIgZj1hcmd1bWVudHNbMV07aWYoIWYpcmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKE8mJiJ1bmNhdWdodEV4Y2VwdGlvbiI9PT11KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgZz0hMTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZil7aWYoIWYuaGFuZGxlRXZlbnQpcmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2c9ITB9aWYoIXJ8fHIoZSxmLG0sYXJndW1lbnRzKSl7dmFyIGg9QiYmISFGJiYtMSE9PUYuaW5kZXhPZih1KSxiPUUoYXJndW1lbnRzWzJdLGgpO2lmKEgpZm9yKHZhciBfPTA7XzxILmxlbmd0aDtfKyspaWYodT09PUhbX10pcmV0dXJuIGg/ZS5jYWxsKG0sdSxmLGIpOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBDPSEhYiYmKCJib29sZWFuIj09dHlwZW9mIGJ8fGIuY2FwdHVyZSksTT0hKCFifHwib2JqZWN0IiE9dHlwZW9mIGIpJiZiLm9uY2Usdj1ab25lLmN1cnJlbnQseD1qW3VdO3h8fChxKHUsUCkseD1qW3VdKTt2YXIgayxTPXhbQz9jOmRdLEQ9bVtTXSxSPSExO2lmKEQpe2lmKFI9ITAseSlmb3IoXz0wO188RC5sZW5ndGg7XysrKWlmKEkoRFtfXSxmKSlyZXR1cm59ZWxzZSBEPW1bU109W107dmFyIEE9bS5jb25zdHJ1Y3Rvci5uYW1lLFQ9V1tBXTtUJiYoaz1UW3VdKSxrfHwoaz1BK24rKFA/UCh1KTp1KSksdy5vcHRpb25zPWIsTSYmKHcub3B0aW9ucy5vbmNlPSExKSx3LnRhcmdldD1tLHcuY2FwdHVyZT1DLHcuZXZlbnROYW1lPXUsdy5pc0V4aXN0aW5nPVI7dmFyIE49YT9VOnZvaWQgMDtOJiYoTi50YXNrRGF0YT13KTt2YXIgej12LnNjaGVkdWxlRXZlbnRUYXNrKGssZixOLGkscyk7cmV0dXJuIHcudGFyZ2V0PW51bGwsTiYmKE4udGFza0RhdGE9bnVsbCksTSYmKGIub25jZT0hMCksKEJ8fCJib29sZWFuIiE9dHlwZW9mIHoub3B0aW9ucykmJih6Lm9wdGlvbnM9Yiksei50YXJnZXQ9bSx6LmNhcHR1cmU9Qyx6LmV2ZW50TmFtZT11LGcmJih6Lm9yaWdpbmFsRGVsZWdhdGU9ZikscD9ELnVuc2hpZnQoeik6RC5wdXNoKHopLGw/bTp2b2lkIDB9fX07cmV0dXJuIHZbaV09TChrLGcsVCxOLE0pLHgmJih2W2hdPUwoeCxiLEEsTixNLCEwKSksdltzXT1mdW5jdGlvbigpe3ZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF07byYmby50cmFuc2ZlckV2ZW50TmFtZSYmKG49by50cmFuc2ZlckV2ZW50TmFtZShuKSk7dmFyIGk9YXJndW1lbnRzWzJdLGE9ISFpJiYoImJvb2xlYW4iPT10eXBlb2YgaXx8aS5jYXB0dXJlKSxzPWFyZ3VtZW50c1sxXTtpZighcylyZXR1cm4gUy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoIXJ8fHIoUyxzLGUsYXJndW1lbnRzKSl7dmFyIGwsbT1qW25dO20mJihsPW1bYT9jOmRdKTt2YXIgdT1sJiZlW2xdO2lmKHUpZm9yKHZhciBmPTA7Zjx1Lmxlbmd0aDtmKyspe3ZhciBnPXVbZl07aWYoSShnLHMpKXJldHVybiB1LnNwbGljZShmLDEpLGcuaXNSZW1vdmVkPSEwLDA9PT11Lmxlbmd0aCYmKGcuYWxsUmVtb3ZlZD0hMCxlW2xdPW51bGwsInN0cmluZyI9PXR5cGVvZiBuJiYoZVtwKyJPTl9QUk9QRVJUWSIrbl09bnVsbCkpLGcuem9uZS5jYW5jZWxUYXNrKGcpLE0/ZTp2b2lkIDB9cmV0dXJuIFMuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sdltsXT1mdW5jdGlvbigpe3ZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF07byYmby50cmFuc2ZlckV2ZW50TmFtZSYmKG49by50cmFuc2ZlckV2ZW50TmFtZShuKSk7Zm9yKHZhciBpPVtdLGE9WChlLFA/UChuKTpuKSxyPTA7cjxhLmxlbmd0aDtyKyspe3ZhciBzPWFbcl07aS5wdXNoKHMub3JpZ2luYWxEZWxlZ2F0ZT9zLm9yaWdpbmFsRGVsZWdhdGU6cy5jYWxsYmFjayl9cmV0dXJuIGl9LHZbbV09ZnVuY3Rpb24oKXt2YXIgZT10aGlzfHx0LG49YXJndW1lbnRzWzBdO2lmKG4pe28mJm8udHJhbnNmZXJFdmVudE5hbWUmJihuPW8udHJhbnNmZXJFdmVudE5hbWUobikpO3ZhciBpPWpbbl07aWYoaSl7dmFyIGE9ZVtpW2RdXSxyPWVbaVtjXV07aWYoYSl7dmFyIGw9YS5zbGljZSgpO2ZvcihmPTA7ZjxsLmxlbmd0aDtmKyspdGhpc1tzXS5jYWxsKHRoaXMsbiwocD1sW2ZdKS5vcmlnaW5hbERlbGVnYXRlP3Aub3JpZ2luYWxEZWxlZ2F0ZTpwLmNhbGxiYWNrLHAub3B0aW9ucyl9aWYocilmb3IobD1yLnNsaWNlKCksZj0wO2Y8bC5sZW5ndGg7ZisrKXt2YXIgcDt0aGlzW3NdLmNhbGwodGhpcyxuLChwPWxbZl0pLm9yaWdpbmFsRGVsZWdhdGU/cC5vcmlnaW5hbERlbGVnYXRlOnAuY2FsbGJhY2sscC5vcHRpb25zKX19fWVsc2V7Zm9yKHZhciB1PU9iamVjdC5rZXlzKGUpLGY9MDtmPHUubGVuZ3RoO2YrKyl7dmFyIGc9Ry5leGVjKHVbZl0pLGg9ZyYmZ1sxXTtoJiYicmVtb3ZlTGlzdGVuZXIiIT09aCYmdGhpc1ttXS5jYWxsKHRoaXMsaCl9dGhpc1ttXS5jYWxsKHRoaXMsInJlbW92ZUxpc3RlbmVyIil9aWYoTSlyZXR1cm4gdGhpc30seih2W2ldLGspLHoodltzXSxTKSxSJiZ6KHZbbV0sUiksRCYmeih2W2xdLEQpLCEwfWZvcih2YXIgdj1bXSx4PTA7eDxlLmxlbmd0aDt4Kyspdlt4XT1NKGVbeF0sbyk7cmV0dXJuIHZ9ZnVuY3Rpb24gWCh0LGUpe2lmKCFlKXt2YXIgbj1bXTtmb3IodmFyIG8gaW4gdCl7dmFyIGk9Ry5leGVjKG8pLGE9aSYmaVsxXTtpZihhJiYoIWV8fGE9PT1lKSl7dmFyIHI9dFtvXTtpZihyKWZvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKW4ucHVzaChyW3NdKX19cmV0dXJuIG59dmFyIGw9altlXTtsfHwocShlKSxsPWpbZV0pO3ZhciBwPXRbbFtkXV0sbT10W2xbY11dO3JldHVybiBwP20/cC5jb25jYXQobSk6cC5zbGljZSgpOm0/bS5zbGljZSgpOltdfWZ1bmN0aW9uIEsodCxlKXt2YXIgbj10LkV2ZW50O24mJm4ucHJvdG90eXBlJiZlLnBhdGNoTWV0aG9kKG4ucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtlW1ldPSEwLHQmJnQuYXBwbHkoZSxuKX19KSl9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIEoodCxlLG4sbyxpKXt2YXIgYT1ab25lLl9fc3ltYm9sX18obyk7aWYoIWVbYV0pe3ZhciByPWVbYV09ZVtvXTtlW29dPWZ1bmN0aW9uKGEscyxsKXtyZXR1cm4gcyYmcy5wcm90b3R5cGUmJmkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9bisiLiIrbysiOjoiK2UsYT1zLnByb3RvdHlwZTtpZihhLmhhc093blByb3BlcnR5KGUpKXt2YXIgcj10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGUpO3ImJnIudmFsdWU/KHIudmFsdWU9dC53cmFwV2l0aEN1cnJlbnRab25lKHIudmFsdWUsaSksdC5fcmVkZWZpbmVQcm9wZXJ0eShzLnByb3RvdHlwZSxlLHIpKTphW2VdJiYoYVtlXT10LndyYXBXaXRoQ3VycmVudFpvbmUoYVtlXSxpKSl9ZWxzZSBhW2VdJiYoYVtlXT10LndyYXBXaXRoQ3VycmVudFpvbmUoYVtlXSxpKSl9KSksci5jYWxsKGUsYSxzLGwpfSx0LmF0dGFjaE9yaWdpblRvUGF0Y2hlZChlW29dLHIpfX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovdmFyIFEsJCx0dCxldCxudCxvdD1bImFic29sdXRlZGV2aWNlb3JpZW50YXRpb24iLCJhZnRlcmlucHV0IiwiYWZ0ZXJwcmludCIsImFwcGluc3RhbGxlZCIsImJlZm9yZWluc3RhbGxwcm9tcHQiLCJiZWZvcmVwcmludCIsImJlZm9yZXVubG9hZCIsImRldmljZWxpZ2h0IiwiZGV2aWNlbW90aW9uIiwiZGV2aWNlb3JpZW50YXRpb24iLCJkZXZpY2VvcmllbnRhdGlvbmFic29sdXRlIiwiZGV2aWNlcHJveGltaXR5IiwiaGFzaGNoYW5nZSIsImxhbmd1YWdlY2hhbmdlIiwibWVzc2FnZSIsIm1vemJlZm9yZXBhaW50Iiwib2ZmbGluZSIsIm9ubGluZSIsInBhaW50IiwicGFnZXNob3ciLCJwYWdlaGlkZSIsInBvcHN0YXRlIiwicmVqZWN0aW9uaGFuZGxlZCIsInN0b3JhZ2UiLCJ1bmhhbmRsZWRyZWplY3Rpb24iLCJ1bmxvYWQiLCJ1c2VycHJveGltaXR5IiwidnJkaXNwbGF5Y29ubmVjdGVkIiwidnJkaXNwbGF5ZGlzY29ubmVjdGVkIiwidnJkaXNwbGF5cHJlc2VudGNoYW5nZSJdLGl0PVsiZW5jcnlwdGVkIiwid2FpdGluZ2ZvcmtleSIsIm1zbmVlZGtleSIsIm1vemludGVycnVwdGJlZ2luIiwibW96aW50ZXJydXB0ZW5kIl0sYXQ9WyJsb2FkIl0scnQ9WyJibHVyIiwiZXJyb3IiLCJmb2N1cyIsImxvYWQiLCJyZXNpemUiLCJzY3JvbGwiLCJtZXNzYWdlZXJyb3IiXSxzdD1bImJvdW5jZSIsImZpbmlzaCIsInN0YXJ0Il0sbHQ9WyJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsImFib3J0IiwiZXJyb3IiLCJsb2FkIiwicHJvZ3Jlc3MiLCJ0aW1lb3V0IiwibG9hZGVuZCIsInJlYWR5c3RhdGVjaGFuZ2UiXSxjdD1bInVwZ3JhZGVuZWVkZWQiLCJjb21wbGV0ZSIsImFib3J0Iiwic3VjY2VzcyIsImVycm9yIiwiYmxvY2tlZCIsInZlcnNpb25jaGFuZ2UiLCJjbG9zZSJdLGR0PVsiY2xvc2UiLCJlcnJvciIsIm9wZW4iLCJtZXNzYWdlIl0scHQ9WyJlcnJvciIsIm1lc3NhZ2UiXSxtdD1bImFib3J0IiwiYW5pbWF0aW9uY2FuY2VsIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYXV4Y2xpY2siLCJiZWZvcmVpbnB1dCIsImJsdXIiLCJjYW5jZWwiLCJjYW5wbGF5IiwiY2FucGxheXRocm91Z2giLCJjaGFuZ2UiLCJjb21wb3NpdGlvbnN0YXJ0IiwiY29tcG9zaXRpb251cGRhdGUiLCJjb21wb3NpdGlvbmVuZCIsImN1ZWNoYW5nZSIsImNsaWNrIiwiY2xvc2UiLCJjb250ZXh0bWVudSIsImN1cmVjaGFuZ2UiLCJkYmxjbGljayIsImRyYWciLCJkcmFnZW5kIiwiZHJhZ2VudGVyIiwiZHJhZ2V4aXQiLCJkcmFnbGVhdmUiLCJkcmFnb3ZlciIsImRyb3AiLCJkdXJhdGlvbmNoYW5nZSIsImVtcHRpZWQiLCJlbmRlZCIsImVycm9yIiwiZm9jdXMiLCJmb2N1c2luIiwiZm9jdXNvdXQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImlucHV0IiwiaW52YWxpZCIsImtleWRvd24iLCJrZXlwcmVzcyIsImtleXVwIiwibG9hZCIsImxvYWRzdGFydCIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsIm1vdXNlZG93biIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJtb3VzZW92ZXIiLCJtb3VzZXVwIiwibW91c2V3aGVlbCIsIm9yaWVudGF0aW9uY2hhbmdlIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInBvaW50ZXJjYW5jZWwiLCJwb2ludGVyZG93biIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsInBvaW50ZXJsb2NrY2hhbmdlIiwibW96cG9pbnRlcmxvY2tjaGFuZ2UiLCJ3ZWJraXRwb2ludGVybG9ja2VyY2hhbmdlIiwicG9pbnRlcmxvY2tlcnJvciIsIm1venBvaW50ZXJsb2NrZXJyb3IiLCJ3ZWJraXRwb2ludGVybG9ja2Vycm9yIiwicG9pbnRlcm1vdmUiLCJwb2ludG91dCIsInBvaW50ZXJvdmVyIiwicG9pbnRlcnVwIiwicHJvZ3Jlc3MiLCJyYXRlY2hhbmdlIiwicmVzZXQiLCJyZXNpemUiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic2VsZWN0Iiwic2VsZWN0aW9uY2hhbmdlIiwic2VsZWN0c3RhcnQiLCJzaG93Iiwic29ydCIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGltZXVwZGF0ZSIsInZvbHVtZWNoYW5nZSIsInRvdWNoY2FuY2VsIiwidG91Y2htb3ZlIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIiwidHJhbnNpdGlvbmNhbmNlbCIsInRyYW5zaXRpb25lbmQiLCJ3YWl0aW5nIiwid2hlZWwiXS5jb25jYXQoWyJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIl0sWyJhdXRvY29tcGxldGUiLCJhdXRvY29tcGxldGVlcnJvciJdLFsidG9nZ2xlIl0sWyJhZnRlcnNjcmlwdGV4ZWN1dGUiLCJiZWZvcmVzY3JpcHRleGVjdXRlIiwiRE9NQ29udGVudExvYWRlZCIsImZyZWV6ZSIsImZ1bGxzY3JlZW5jaGFuZ2UiLCJtb3pmdWxsc2NyZWVuY2hhbmdlIiwid2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIsIm1zZnVsbHNjcmVlbmNoYW5nZSIsImZ1bGxzY3JlZW5lcnJvciIsIm1vemZ1bGxzY3JlZW5lcnJvciIsIndlYmtpdGZ1bGxzY3JlZW5lcnJvciIsIm1zZnVsbHNjcmVlbmVycm9yIiwicmVhZHlzdGF0ZWNoYW5nZSIsInZpc2liaWxpdHljaGFuZ2UiLCJyZXN1bWUiXSxvdCxbImJlZm9yZWNvcHkiLCJiZWZvcmVjdXQiLCJiZWZvcmVwYXN0ZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRyYWdzdGFydCIsImxvYWRlbmQiLCJhbmltYXRpb25zdGFydCIsInNlYXJjaCIsInRyYW5zaXRpb25ydW4iLCJ0cmFuc2l0aW9uc3RhcnQiLCJ3ZWJraXRhbmltYXRpb25lbmQiLCJ3ZWJraXRhbmltYXRpb25pdGVyYXRpb24iLCJ3ZWJraXRhbmltYXRpb25zdGFydCIsIndlYmtpdHRyYW5zaXRpb25lbmQiXSxbImFjdGl2YXRlIiwiYWZ0ZXJ1cGRhdGUiLCJhcmlhcmVxdWVzdCIsImJlZm9yZWFjdGl2YXRlIiwiYmVmb3JlZGVhY3RpdmF0ZSIsImJlZm9yZWVkaXRmb2N1cyIsImJlZm9yZXVwZGF0ZSIsImNlbGxjaGFuZ2UiLCJjb250cm9sc2VsZWN0IiwiZGF0YWF2YWlsYWJsZSIsImRhdGFzZXRjaGFuZ2VkIiwiZGF0YXNldGNvbXBsZXRlIiwiZXJyb3J1cGRhdGUiLCJmaWx0ZXJjaGFuZ2UiLCJsYXlvdXRjb21wbGV0ZSIsImxvc2VjYXB0dXJlIiwibW92ZSIsIm1vdmVlbmQiLCJtb3Zlc3RhcnQiLCJwcm9wZXJ0eWNoYW5nZSIsInJlc2l6ZWVuZCIsInJlc2l6ZXN0YXJ0Iiwicm93ZW50ZXIiLCJyb3dleGl0Iiwicm93c2RlbGV0ZSIsInJvd3NpbnNlcnRlZCIsImNvbW1hbmQiLCJjb21wYXNzbmVlZHNjYWxpYnJhdGlvbiIsImRlYWN0aXZhdGUiLCJoZWxwIiwibXNjb250ZW50em9vbSIsIm1zbWFuaXB1bGF0aW9uc3RhdGVjaGFuZ2VkIiwibXNnZXN0dXJlY2hhbmdlIiwibXNnZXN0dXJlZG91YmxldGFwIiwibXNnZXN0dXJlZW5kIiwibXNnZXN0dXJlaG9sZCIsIm1zZ2VzdHVyZXN0YXJ0IiwibXNnZXN0dXJldGFwIiwibXNnb3Rwb2ludGVyY2FwdHVyZSIsIm1zaW5lcnRpYXN0YXJ0IiwibXNsb3N0cG9pbnRlcmNhcHR1cmUiLCJtc3BvaW50ZXJjYW5jZWwiLCJtc3BvaW50ZXJkb3duIiwibXNwb2ludGVyZW50ZXIiLCJtc3BvaW50ZXJob3ZlciIsIm1zcG9pbnRlcmxlYXZlIiwibXNwb2ludGVybW92ZSIsIm1zcG9pbnRlcm91dCIsIm1zcG9pbnRlcm92ZXIiLCJtc3BvaW50ZXJ1cCIsInBvaW50ZXJvdXQiLCJtc3NpdGVtb2RlanVtcGxpc3RpdGVtcmVtb3ZlZCIsIm1zdGh1bWJuYWlsY2xpY2siLCJzdG9wIiwic3RvcmFnZWNvbW1pdCJdKTtmdW5jdGlvbiB1dCh0LGUsbil7aWYoIW58fDA9PT1uLmxlbmd0aClyZXR1cm4gZTt2YXIgbz1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0PT09dH0pKTtpZighb3x8MD09PW8ubGVuZ3RoKXJldHVybiBlO3ZhciBpPW9bMF0uaWdub3JlUHJvcGVydGllcztyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xPT09aS5pbmRleE9mKHQpfSkpfWZ1bmN0aW9uIGZ0KHQsZSxuLG8pe3QmJlIodCx1dCh0LGUsbiksbyl9ZnVuY3Rpb24gZ3QodCxlKXtpZigoIU98fHcpJiYhWm9uZVt0LnN5bWJvbCgicGF0Y2hFdmVudHMiKV0pe3ZhciBvPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViU29ja2V0LGk9ZS5fX1pvbmVfaWdub3JlX29uX3Byb3BlcnRpZXM7aWYoUCl7dmFyIGE9d2luZG93LHI9RigpP1t7dGFyZ2V0OmEsaWdub3JlUHJvcGVydGllczpbImVycm9yIl19XTpbXTtmdChhLG10LmNvbmNhdChbIm1lc3NhZ2VlcnJvciJdKSxpP2kuY29uY2F0KHIpOmksbihhKSksZnQoRG9jdW1lbnQucHJvdG90eXBlLG10LGkpLHZvaWQgMCE9PWEuU1ZHRWxlbWVudCYmZnQoYS5TVkdFbGVtZW50LnByb3RvdHlwZSxtdCxpKSxmdChFbGVtZW50LnByb3RvdHlwZSxtdCxpKSxmdChIVE1MRWxlbWVudC5wcm90b3R5cGUsbXQsaSksZnQoSFRNTE1lZGlhRWxlbWVudC5wcm90b3R5cGUsaXQsaSksZnQoSFRNTEZyYW1lU2V0RWxlbWVudC5wcm90b3R5cGUsb3QuY29uY2F0KHJ0KSxpKSxmdChIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLG90LmNvbmNhdChydCksaSksZnQoSFRNTEZyYW1lRWxlbWVudC5wcm90b3R5cGUsYXQsaSksZnQoSFRNTElGcmFtZUVsZW1lbnQucHJvdG90eXBlLGF0LGkpO3ZhciBzPWEuSFRNTE1hcnF1ZWVFbGVtZW50O3MmJmZ0KHMucHJvdG90eXBlLHN0LGkpO3ZhciBsPWEuV29ya2VyO2wmJmZ0KGwucHJvdG90eXBlLHB0LGkpfXZhciBjPWUuWE1MSHR0cFJlcXVlc3Q7YyYmZnQoYy5wcm90b3R5cGUsbHQsaSk7dmFyIGQ9ZS5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O2QmJmZ0KGQmJmQucHJvdG90eXBlLGx0LGkpLCJ1bmRlZmluZWQiIT10eXBlb2YgSURCSW5kZXgmJihmdChJREJJbmRleC5wcm90b3R5cGUsY3QsaSksZnQoSURCUmVxdWVzdC5wcm90b3R5cGUsY3QsaSksZnQoSURCT3BlbkRCUmVxdWVzdC5wcm90b3R5cGUsY3QsaSksZnQoSURCRGF0YWJhc2UucHJvdG90eXBlLGN0LGkpLGZ0KElEQlRyYW5zYWN0aW9uLnByb3RvdHlwZSxjdCxpKSxmdChJREJDdXJzb3IucHJvdG90eXBlLGN0LGkpKSxvJiZmdChXZWJTb2NrZXQucHJvdG90eXBlLGR0LGkpfX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovZnVuY3Rpb24gaHQoKXtRPVpvbmUuX19zeW1ib2xfXywkPU9iamVjdFtRKCJkZWZpbmVQcm9wZXJ0eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksdHQ9T2JqZWN0W1EoImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGV0PU9iamVjdC5jcmVhdGUsbnQ9USgidW5jb25maWd1cmFibGVzIiksT2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXtpZih5dCh0LGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhc3NpZ24gdG8gcmVhZCBvbmx5IHByb3BlcnR5ICciK2UrIicgb2YgIit0KTt2YXIgbz1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4icHJvdG90eXBlIiE9PWUmJihuPV90KHQsZSxuKSksQ3QodCxlLG4sbyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sZVtuXSl9KSksdH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJvYmplY3QiIT10eXBlb2YgZXx8T2JqZWN0LmlzRnJvemVuKGUpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPV90KHQsbixlW25dKX0pKSxldCh0LGUpfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49dHQodCxlKTtyZXR1cm4gbiYmeXQodCxlKSYmKG4uY29uZmlndXJhYmxlPSExKSxufX1mdW5jdGlvbiBidCh0LGUsbil7dmFyIG89bi5jb25maWd1cmFibGU7cmV0dXJuIEN0KHQsZSxuPV90KHQsZSxuKSxvKX1mdW5jdGlvbiB5dCh0LGUpe3JldHVybiB0JiZ0W250XSYmdFtudF1bZV19ZnVuY3Rpb24gX3QodCxlLG4pe3JldHVybiBPYmplY3QuaXNGcm96ZW4obil8fChuLmNvbmZpZ3VyYWJsZT0hMCksbi5jb25maWd1cmFibGV8fCh0W250XXx8T2JqZWN0LmlzRnJvemVuKHQpfHwkKHQsbnQse3dyaXRhYmxlOiEwLHZhbHVlOnt9fSksdFtudF0mJih0W250XVtlXT0hMCkpLG59ZnVuY3Rpb24gQ3QodCxlLG4sbyl7dHJ5e3JldHVybiAkKHQsZSxuKX1jYXRjaChyKXtpZighbi5jb25maWd1cmFibGUpdGhyb3cgcjt2b2lkIDA9PT1vP2RlbGV0ZSBuLmNvbmZpZ3VyYWJsZTpuLmNvbmZpZ3VyYWJsZT1vO3RyeXtyZXR1cm4gJCh0LGUsbil9Y2F0Y2gobyl7dmFyIGk9ITE7aWYoImNyZWF0ZWRDYWxsYmFjayIhPT1lJiYiYXR0YWNoZWRDYWxsYmFjayIhPT1lJiYiZGV0YWNoZWRDYWxsYmFjayIhPT1lJiYiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIiE9PWV8fChpPSEwKSwhaSl0aHJvdyBvO3ZhciBhPW51bGw7dHJ5e2E9SlNPTi5zdHJpbmdpZnkobil9Y2F0Y2godCl7YT1uLnRvU3RyaW5nKCl9Y29uc29sZS5sb2coIkF0dGVtcHRpbmcgdG8gY29uZmlndXJlICciK2UrIicgd2l0aCBkZXNjcmlwdG9yICciK2ErIicgb24gb2JqZWN0ICciK3QrIicgYW5kIGdvdCBlcnJvciwgZ2l2aW5nIHVwOiAiK28pfX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIE10KHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCksbz1uLmV2ZW50TmFtZXMsaT1uLmdsb2JhbFNvdXJjZXMsYT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLHI9bi5UUlVFX1NUUixzPW4uRkFMU0VfU1RSLGw9bi5aT05FX1NZTUJPTF9QUkVGSVgsYz0iQW5jaG9yLEFyZWEsQXVkaW8sQlIsQmFzZSxCYXNlRm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxETGlzdCxEaXJlY3RvcnksRGl2LEVtYmVkLEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNldCxIUixIZWFkLEhlYWRpbmcsSHRtbCxJRnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVsLExlZ2VuZCxMaW5rLE1hcCxNYXJxdWVlLE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3QsT2JqZWN0LE9wdEdyb3VwLE9wdGlvbixPdXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90ZSxTY3JpcHQsU2VsZWN0LFNvdXJjZSxTcGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGwsVGFibGVDb2wsVGFibGUsVGFibGVSb3csVGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNrLFVMaXN0LFVua25vd24sVmlkZW8iLGQ9IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhvZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRUcmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rpb24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLHA9IkV2ZW50VGFyZ2V0IixtPVtdLHU9dC53dGYsZj1jLnNwbGl0KCIsIik7dT9tPWYubWFwKChmdW5jdGlvbih0KXtyZXR1cm4iSFRNTCIrdCsiRWxlbWVudCJ9KSkuY29uY2F0KGQpOnRbcF0/bS5wdXNoKHApOm09ZDtmb3IodmFyIGc9dC5fX1pvbmVfZGlzYWJsZV9JRV9jaGVja3x8ITEsaD10Ll9fWm9uZV9lbmFibGVfY3Jvc3NfY29udGV4dF9jaGVja3x8ITEsYj1lLmlzSUVPckVkZ2UoKSx5PSIuYWRkRXZlbnRMaXN0ZW5lcjoiLF89IltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSIsQz0iZnVuY3Rpb24gX19CUk9XU0VSVE9PTFNfQ09OU09MRV9TQUZFRlVOQygpIHsgW25hdGl2ZSBjb2RlXSB9IixNPXtNU1BvaW50ZXJDYW5jZWw6InBvaW50ZXJjYW5jZWwiLE1TUG9pbnRlckRvd246InBvaW50ZXJkb3duIixNU1BvaW50ZXJFbnRlcjoicG9pbnRlcmVudGVyIixNU1BvaW50ZXJIb3ZlcjoicG9pbnRlcmhvdmVyIixNU1BvaW50ZXJMZWF2ZToicG9pbnRlcmxlYXZlIixNU1BvaW50ZXJNb3ZlOiJwb2ludGVybW92ZSIsTVNQb2ludGVyT3V0OiJwb2ludGVyb3V0IixNU1BvaW50ZXJPdmVyOiJwb2ludGVyb3ZlciIsTVNQb2ludGVyVXA6InBvaW50ZXJ1cCJ9LHY9MDt2PG8ubGVuZ3RoO3YrKyl7dmFyIHg9bCsoKFM9b1t2XSkrcyksTz1sKyhTK3IpO2FbU109e30sYVtTXVtzXT14LGFbU11bcl09T31mb3Iodj0wO3Y8Zi5sZW5ndGg7disrKWZvcih2YXIgUD1mW3ZdLHc9aVtQXT17fSxrPTA7azxvLmxlbmd0aDtrKyspe3ZhciBTO3dbUz1vW2tdXT1QK3krU312YXIgRD1mdW5jdGlvbih0LGUsbixvKXtpZighZyYmYil7aWYoaCl0cnl7dmFyIGk7aWYoKGk9ZS50b1N0cmluZygpKT09PV98fGk9PUMpcmV0dXJuIHQuYXBwbHkobixvKSwhMX1jYXRjaChlKXtyZXR1cm4gdC5hcHBseShuLG8pLCExfWVsc2UgaWYoKGk9ZS50b1N0cmluZygpKT09PV98fGk9PUMpcmV0dXJuIHQuYXBwbHkobixvKSwhMX1lbHNlIGlmKGgpdHJ5e2UudG9TdHJpbmcoKX1jYXRjaChlKXtyZXR1cm4gdC5hcHBseShuLG8pLCExfXJldHVybiEwfSxSPVtdO2Zvcih2PTA7djxtLmxlbmd0aDt2Kyspe3ZhciBFPXRbbVt2XV07Ui5wdXNoKEUmJkUucHJvdG90eXBlKX1yZXR1cm4gZS5wYXRjaEV2ZW50VGFyZ2V0KHQsUix7dmg6RCx0cmFuc2ZlckV2ZW50TmFtZTpmdW5jdGlvbih0KXtyZXR1cm4gTVt0XXx8dH19KSxab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildPSEhdFtwXSwhMH0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovZnVuY3Rpb24gdnQodCxlKXt2YXIgbj10LmdldEdsb2JhbE9iamVjdHMoKSxvPW4uQUREX0VWRU5UX0xJU1RFTkVSX1NUUixpPW4uUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX1NUUixhPWUuV2ViU29ja2V0O2UuRXZlbnRUYXJnZXR8fHQucGF0Y2hFdmVudFRhcmdldChlLFthLnByb3RvdHlwZV0pLGUuV2ViU29ja2V0PWZ1bmN0aW9uKGUsbil7dmFyIHIscyxsPWFyZ3VtZW50cy5sZW5ndGg+MT9uZXcgYShlLG4pOm5ldyBhKGUpLGM9dC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobCwib25tZXNzYWdlIik7cmV0dXJuIGMmJiExPT09Yy5jb25maWd1cmFibGU/KHI9dC5PYmplY3RDcmVhdGUobCkscz1sLFtvLGksInNlbmQiLCJjbG9zZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JbZV09ZnVuY3Rpb24oKXt2YXIgbj10LkFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKGU9PT1vfHxlPT09aSl7dmFyIGE9bi5sZW5ndGg+MD9uWzBdOnZvaWQgMDtpZihhKXt2YXIgcz1ab25lLl9fc3ltYm9sX18oIk9OX1BST1BFUlRZIithKTtsW3NdPXJbc119fXJldHVybiBsW2VdLmFwcGx5KGwsbil9fSkpKTpyPWwsdC5wYXRjaE9uUHJvcGVydGllcyhyLFsiY2xvc2UiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcGVuIl0scykscn07dmFyIHI9ZS5XZWJTb2NrZXQ7Zm9yKHZhciBzIGluIGEpcltzXT1hW3NdfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiB4dCh0LGUpe3ZhciBuPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKCghbi5pc05vZGV8fG4uaXNNaXgpJiYhT3QodCxlKSl7dmFyIG89InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7UHQodCksdC5wYXRjaENsYXNzKCJYTUxIdHRwUmVxdWVzdCIpLG8mJnZ0KHQsZSksWm9uZVt0LnN5bWJvbCgicGF0Y2hFdmVudHMiKV09ITB9fWZ1bmN0aW9uIE90KHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCk7aWYoKG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmIXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQpe3ZhciBvPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIik7aWYobyYmIW8uY29uZmlndXJhYmxlKXJldHVybiExO2lmKG8pe3QuT2JqZWN0RGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KTt2YXIgaT0hIWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLm9uY2xpY2s7cmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siLG8pLGl9fXZhciBhPWUuWE1MSHR0cFJlcXVlc3Q7aWYoIWEpcmV0dXJuITE7dmFyIHI9Im9ucmVhZHlzdGF0ZWNoYW5nZSIscz1hLnByb3RvdHlwZSxsPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHMscik7aWYobClyZXR1cm4gdC5PYmplY3REZWZpbmVQcm9wZXJ0eShzLHIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pLGk9ISEoZD1uZXcgYSkub25yZWFkeXN0YXRlY2hhbmdlLHQuT2JqZWN0RGVmaW5lUHJvcGVydHkocyxyLGx8fHt9KSxpO3ZhciBjPXQuc3ltYm9sKCJmYWtlIik7dC5PYmplY3REZWZpbmVQcm9wZXJ0eShzLHIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW2NdfSxzZXQ6ZnVuY3Rpb24odCl7dGhpc1tjXT10fX0pO3ZhciBkLHA9ZnVuY3Rpb24oKXt9O3JldHVybihkPW5ldyBhKS5vbnJlYWR5c3RhdGVjaGFuZ2U9cCxpPWRbY109PT1wLGQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsaX1mdW5jdGlvbiBQdCh0KXtmb3IodmFyIGU9dC5nZXRHbG9iYWxPYmplY3RzKCkuZXZlbnROYW1lcyxuPXQuc3ltYm9sKCJ1bmJvdW5kIiksbz1mdW5jdGlvbihvKXt2YXIgaT1lW29dLGE9Im9uIitpO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcihpLChmdW5jdGlvbihlKXt2YXIgbyxpLHI9ZS50YXJnZXQ7Zm9yKGk9cj9yLmNvbnN0cnVjdG9yLm5hbWUrIi4iK2E6InVua25vd24uIithO3I7KXJbYV0mJiFyW2FdW25dJiYoKG89dC53cmFwV2l0aEN1cnJlbnRab25lKHJbYV0saSkpW25dPXJbYV0sclthXT1vKSxyPXIucGFyZW50RWxlbWVudH0pLCEwKX0saT0wO2k8ZS5sZW5ndGg7aSsrKW8oaSl9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIHd0KHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmInJlZ2lzdGVyRWxlbWVudCJpbiB0LmRvY3VtZW50JiZlLnBhdGNoQ2FsbGJhY2tzKGUsZG9jdW1lbnQsIkRvY3VtZW50IiwicmVnaXN0ZXJFbGVtZW50IixbImNyZWF0ZWRDYWxsYmFjayIsImF0dGFjaGVkQ2FsbGJhY2siLCJkZXRhY2hlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9ab25lLl9fbG9hZF9wYXRjaCgidXRpbCIsKGZ1bmN0aW9uKG4scyxsKXtsLnBhdGNoT25Qcm9wZXJ0aWVzPVIsbC5wYXRjaE1ldGhvZD1ULGwuYmluZEFyZ3VtZW50cz1DLGwucGF0Y2hNYWNyb1Rhc2s9Tjt2YXIgdT1zLl9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKSxmPXMuX19zeW1ib2xfXygiVU5QQVRDSEVEX0VWRU5UUyIpO25bZl0mJihuW3VdPW5bZl0pLG5bdV0mJihzW3VdPXNbZl09blt1XSksbC5wYXRjaEV2ZW50UHJvdG90eXBlPUssbC5wYXRjaEV2ZW50VGFyZ2V0PVosbC5pc0lFT3JFZGdlPUwsbC5PYmplY3REZWZpbmVQcm9wZXJ0eT1lLGwuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPXQsbC5PYmplY3RDcmVhdGU9byxsLkFycmF5U2xpY2U9aSxsLnBhdGNoQ2xhc3M9QSxsLndyYXBXaXRoQ3VycmVudFpvbmU9bSxsLmZpbHRlclByb3BlcnRpZXM9dXQsbC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQ9eixsLl9yZWRlZmluZVByb3BlcnR5PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsLnBhdGNoQ2FsbGJhY2tzPUosbC5nZXRHbG9iYWxPYmplY3RzPWZ1bmN0aW9uKCl7cmV0dXJue2dsb2JhbFNvdXJjZXM6Vyx6b25lU3ltYm9sRXZlbnROYW1lczpqLGV2ZW50TmFtZXM6bXQsaXNCcm93c2VyOlAsaXNNaXg6dyxpc05vZGU6TyxUUlVFX1NUUjpjLEZBTFNFX1NUUjpkLFpPTkVfU1lNQk9MX1BSRUZJWDpwLEFERF9FVkVOVF9MSVNURU5FUl9TVFI6YSxSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOnJ9fX0pKSwoZnVuY3Rpb24odCl7dmFyIGU9dC5fX1pvbmVfc3ltYm9sX3ByZWZpeHx8Il9fem9uZV9zeW1ib2xfXyI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZSt0fXRbbigibGVnYWN5UGF0Y2giKV09ZnVuY3Rpb24oKXt2YXIgZT10LlpvbmU7ZS5fX2xvYWRfcGF0Y2goImRlZmluZVByb3BlcnR5IiwoZnVuY3Rpb24odCxlLG4pe24uX3JlZGVmaW5lUHJvcGVydHk9YnQsaHQoKX0pKSxlLl9fbG9hZF9wYXRjaCgicmVnaXN0ZXJFbGVtZW50IiwoZnVuY3Rpb24odCxlLG4pe3d0KHQsbil9KSksZS5fX2xvYWRfcGF0Y2goIkV2ZW50VGFyZ2V0TGVnYWN5IiwoZnVuY3Rpb24odCxlLG4pe010KHQsbikseHQobix0KX0pKX19KSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwIT09X08/X086InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30pOwovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KdmFyIGt0PWYoInpvbmVUYXNrIik7ZnVuY3Rpb24gU3QodCxlLG4sbyl7dmFyIGk9bnVsbCxhPW51bGw7bis9bzt2YXIgcj17fTtmdW5jdGlvbiBzKGUpe3ZhciBuPWUuZGF0YTtyZXR1cm4gbi5hcmdzWzBdPWZ1bmN0aW9uKCl7cmV0dXJuIGUuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbi5oYW5kbGVJZD1pLmFwcGx5KHQsbi5hcmdzKSxlfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGEuY2FsbCh0LGUuZGF0YS5oYW5kbGVJZCl9aT1UKHQsZSs9bywoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGFbMF0pe3ZhciBjPXtpc1BlcmlvZGljOiJJbnRlcnZhbCI9PT1vLGRlbGF5OiJUaW1lb3V0Ij09PW98fCJJbnRlcnZhbCI9PT1vP2FbMV18fDA6dm9pZCAwLGFyZ3M6YX0sZD1hWzBdO2FbMF09ZnVuY3Rpb24gdCgpe3RyeXtyZXR1cm4gZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtjLmlzUGVyaW9kaWN8fCgibnVtYmVyIj09dHlwZW9mIGMuaGFuZGxlSWQ/ZGVsZXRlIHJbYy5oYW5kbGVJZF06Yy5oYW5kbGVJZCYmKGMuaGFuZGxlSWRba3RdPW51bGwpKX19O3ZhciBwPXUoZSxhWzBdLGMscyxsKTtpZighcClyZXR1cm4gcDt2YXIgbT1wLmRhdGEuaGFuZGxlSWQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBtP3JbbV09cDptJiYobVtrdF09cCksbSYmbS5yZWYmJm0udW5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBtLnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIG0udW5yZWYmJihwLnJlZj1tLnJlZi5iaW5kKG0pLHAudW5yZWY9bS51bnJlZi5iaW5kKG0pKSwibnVtYmVyIj09dHlwZW9mIG18fG0/bTpwfXJldHVybiBuLmFwcGx5KHQsYSl9fSkpLGE9VCh0LG4sKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLG8pe3ZhciBpLGE9b1swXTsibnVtYmVyIj09dHlwZW9mIGE/aT1yW2FdOihpPWEmJmFba3RdKXx8KGk9YSksaSYmInN0cmluZyI9PXR5cGVvZiBpLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1pLnN0YXRlJiYoaS5jYW5jZWxGbiYmaS5kYXRhLmlzUGVyaW9kaWN8fDA9PT1pLnJ1bkNvdW50KSYmKCJudW1iZXIiPT10eXBlb2YgYT9kZWxldGUgclthXTphJiYoYVtrdF09bnVsbCksaS56b25lLmNhbmNlbFRhc2soaSkpOmUuYXBwbHkodCxvKX19KSl9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIER0KHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmdC5jdXN0b21FbGVtZW50cyYmImN1c3RvbUVsZW1lbnRzImluIHQmJmUucGF0Y2hDYWxsYmFja3MoZSx0LmN1c3RvbUVsZW1lbnRzLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSIsWyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBSdCh0LGUpe2lmKCFab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildKXtmb3IodmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCksbz1uLmV2ZW50TmFtZXMsaT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGE9bi5UUlVFX1NUUixyPW4uRkFMU0VfU1RSLHM9bi5aT05FX1NZTUJPTF9QUkVGSVgsbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgYz1vW2xdLGQ9cysoYytyKSxwPXMrKGMrYSk7aVtjXT17fSxpW2NdW3JdPWQsaVtjXVthXT1wfXZhciBtPXQuRXZlbnRUYXJnZXQ7aWYobSYmbS5wcm90b3R5cGUpcmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LFttJiZtLnByb3RvdHlwZV0pLCEwfX1mdW5jdGlvbiBFdCh0LGUpe2UucGF0Y2hFdmVudFByb3RvdHlwZSh0LGUpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9ab25lLl9fbG9hZF9wYXRjaCgibGVnYWN5IiwoZnVuY3Rpb24odCl7dmFyIGU9dFtab25lLl9fc3ltYm9sX18oImxlZ2FjeVBhdGNoIildO2UmJmUoKX0pKSxab25lLl9fbG9hZF9wYXRjaCgicXVldWVNaWNyb3Rhc2siLChmdW5jdGlvbih0LGUsbil7bi5wYXRjaE1ldGhvZCh0LCJxdWV1ZU1pY3JvdGFzayIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LG4pe2UuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzaygicXVldWVNaWNyb3Rhc2siLG5bMF0pfX0pKX0pKSxab25lLl9fbG9hZF9wYXRjaCgidGltZXJzIiwoZnVuY3Rpb24odCl7dmFyIGU9InNldCIsbj0iY2xlYXIiO1N0KHQsZSxuLCJUaW1lb3V0IiksU3QodCxlLG4sIkludGVydmFsIiksU3QodCxlLG4sIkltbWVkaWF0ZSIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLChmdW5jdGlvbih0KXtTdCh0LCJyZXF1ZXN0IiwiY2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSxTdCh0LCJtb3pSZXF1ZXN0IiwibW96Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSxTdCh0LCJ3ZWJraXRSZXF1ZXN0Iiwid2Via2l0Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiYmxvY2tpbmciLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1bImFsZXJ0IiwicHJvbXB0IiwiY29uZmlybSJdLG89MDtvPG4ubGVuZ3RoO28rKylUKHQsbltvXSwoZnVuY3Rpb24obixvLGkpe3JldHVybiBmdW5jdGlvbihvLGEpe3JldHVybiBlLmN1cnJlbnQucnVuKG4sdCxhLGkpfX0pKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXQiLChmdW5jdGlvbih0LGUsbil7RXQodCxuKSxSdCh0LG4pO3ZhciBvPXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtvJiZvLnByb3RvdHlwZSYmbi5wYXRjaEV2ZW50VGFyZ2V0KHQsW28ucHJvdG90eXBlXSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIk11dGF0aW9uT2JzZXJ2ZXIiLChmdW5jdGlvbih0LGUsbil7QSgiTXV0YXRpb25PYnNlcnZlciIpLEEoIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLChmdW5jdGlvbih0LGUsbil7QSgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiRmlsZVJlYWRlciIsKGZ1bmN0aW9uKHQsZSxuKXtBKCJGaWxlUmVhZGVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoZnVuY3Rpb24odCxlLG4pe2d0KG4sdCl9KSksWm9uZS5fX2xvYWRfcGF0Y2goImN1c3RvbUVsZW1lbnRzIiwoZnVuY3Rpb24odCxlLG4pe0R0KHQsbil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlhIUiIsKGZ1bmN0aW9uKHQsZSl7ZCh0KTt2YXIgbj1mKCJ4aHJUYXNrIiksbz1mKCJ4aHJTeW5jIiksaT1mKCJ4aHJMaXN0ZW5lciIpLGE9ZigieGhyU2NoZWR1bGVkIikscj1mKCJ4aHJVUkwiKSxjPWYoInhockVycm9yQmVmb3JlU2NoZWR1bGVkIik7ZnVuY3Rpb24gZCh0KXt2YXIgZD10LlhNTEh0dHBSZXF1ZXN0O2lmKGQpe3ZhciBwPWQucHJvdG90eXBlLG09cFtzXSxnPXBbbF07aWYoIW0pe3ZhciBoPXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtpZihoKXt2YXIgYj1oLnByb3RvdHlwZTttPWJbc10sZz1iW2xdfX12YXIgeT0icmVhZHlzdGF0ZWNoYW5nZSIsXz0ic2NoZWR1bGVkIixDPVQocCwib3BlbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbb109MD09ZVsyXSx0W3JdPWVbMV0sQy5hcHBseSh0LGUpfX0pKSxNPSJYTUxIdHRwUmVxdWVzdC5zZW5kIix2PWYoImZldGNoVGFza0Fib3J0aW5nIikseD1mKCJmZXRjaFRhc2tTY2hlZHVsaW5nIiksTz1UKHAsInNlbmQiLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCEwPT09ZS5jdXJyZW50W3hdKXJldHVybiBPLmFwcGx5KHQsbik7aWYodFtvXSlyZXR1cm4gTy5hcHBseSh0LG4pO3ZhciBpPXt0YXJnZXQ6dCx1cmw6dFtyXSxpc1BlcmlvZGljOiExLGFyZ3M6bixhYm9ydGVkOiExfSxhPXUoTSxTLGksayxEKTt0JiYhMD09PXRbY10mJiFpLmFib3J0ZWQmJmEuc3RhdGU9PT1fJiZhLmludm9rZSgpfX0pKSxQPVQocCwiYWJvcnQiLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciBvPXcodCk7aWYobyYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGUpe2lmKG51bGw9PW8uY2FuY2VsRm58fG8uZGF0YSYmby5kYXRhLmFib3J0ZWQpcmV0dXJuO28uem9uZS5jYW5jZWxUYXNrKG8pfWVsc2UgaWYoITA9PT1lLmN1cnJlbnRbdl0pcmV0dXJuIFAuYXBwbHkodCxuKX19KSl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdFtuXX1mdW5jdGlvbiBrKHQpe3ZhciBvPXQuZGF0YSxyPW8udGFyZ2V0O3JbYV09ITEscltjXT0hMTt2YXIgZD1yW2ldO218fChtPXJbc10sZz1yW2xdKSxkJiZnLmNhbGwocix5LGQpO3ZhciBwPXJbaV09ZnVuY3Rpb24oKXtpZihyLnJlYWR5U3RhdGU9PT1yLkRPTkUpaWYoIW8uYWJvcnRlZCYmclthXSYmdC5zdGF0ZT09PV8pe3ZhciBuPXJbZS5fX3N5bWJvbF9fKCJsb2FkZmFsc2UiKV07aWYoMCE9PXIuc3RhdHVzJiZuJiZuLmxlbmd0aD4wKXt2YXIgaT10Lmludm9rZTt0Lmludm9rZT1mdW5jdGlvbigpe2Zvcih2YXIgbj1yW2UuX19zeW1ib2xfXygibG9hZGZhbHNlIildLGE9MDthPG4ubGVuZ3RoO2ErKyluW2FdPT09dCYmbi5zcGxpY2UoYSwxKTtvLmFib3J0ZWR8fHQuc3RhdGUhPT1ffHxpLmNhbGwodCl9LG4ucHVzaCh0KX1lbHNlIHQuaW52b2tlKCl9ZWxzZSBvLmFib3J0ZWR8fCExIT09clthXXx8KHJbY109ITApfTtyZXR1cm4gbS5jYWxsKHIseSxwKSxyW25dfHwocltuXT10KSxPLmFwcGx5KHIsby5hcmdzKSxyW2FdPSEwLHR9ZnVuY3Rpb24gUygpe31mdW5jdGlvbiBEKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gZS5hYm9ydGVkPSEwLFAuYXBwbHkoZS50YXJnZXQsZS5hcmdzKX19fSkpLFpvbmUuX19sb2FkX3BhdGNoKCJnZW9sb2NhdGlvbiIsKGZ1bmN0aW9uKHQpe3QubmF2aWdhdG9yJiZ0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmTSh0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlByb21pc2VSZWplY3Rpb25FdmVudCIsKGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZnVuY3Rpb24obil7WCh0LGUpLmZvckVhY2goKGZ1bmN0aW9uKG8pe3ZhciBpPXQuUHJvbWlzZVJlamVjdGlvbkV2ZW50O2lmKGkpe3ZhciBhPW5ldyBpKGUse3Byb21pc2U6bi5wcm9taXNlLHJlYXNvbjpuLnJlamVjdGlvbn0pO28uaW52b2tlKGEpfX0pKX19dC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQmJihlW2YoInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIildPW4oInVuaGFuZGxlZHJlamVjdGlvbiIpLGVbZigicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKV09bigicmVqZWN0aW9uaGFuZGxlZCIpKX0pKX0pKCk7Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmNsYXNzIE1Pe30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHZPPSIqIjtmdW5jdGlvbiB4Tyh0LGUpe3JldHVybnt0eXBlOjcsbmFtZTp0LGRlZmluaXRpb25zOmUsb3B0aW9uczp7fX19ZnVuY3Rpb24gT08odCxlPW51bGwpe3JldHVybnt0eXBlOjQsc3R5bGVzOmUsdGltaW5nczp0fX1mdW5jdGlvbiBQTyh0LGU9bnVsbCl7cmV0dXJue3R5cGU6MixzdGVwczp0LG9wdGlvbnM6ZX19ZnVuY3Rpb24gd08odCl7cmV0dXJue3R5cGU6NixzdHlsZXM6dCxvZmZzZXQ6bnVsbH19ZnVuY3Rpb24ga08odCxlLG4pe3JldHVybnt0eXBlOjAsbmFtZTp0LHN0eWxlczplLG9wdGlvbnM6bn19ZnVuY3Rpb24gU08odCl7cmV0dXJue3R5cGU6NSxzdGVwczp0fX1mdW5jdGlvbiBETyh0LGUsbj1udWxsKXtyZXR1cm57dHlwZToxLGV4cHI6dCxhbmltYXRpb246ZSxvcHRpb25zOm59fWZ1bmN0aW9uIFJPKHQ9bnVsbCl7cmV0dXJue3R5cGU6OSxvcHRpb25zOnR9fWZ1bmN0aW9uIEVPKHQsZSxuPW51bGwpe3JldHVybnt0eXBlOjExLHNlbGVjdG9yOnQsYW5pbWF0aW9uOmUsb3B0aW9uczpufX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gQU8odCl7UHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4odCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFRPe2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9wb3NpdGlvbj0wLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy50b3RhbFRpbWU9dCtlfV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRG9uZUZucz1bXSl9b25TdGFydCh0KXt0aGlzLl9vblN0YXJ0Rm5zLnB1c2godCl9b25Eb25lKHQpe3RoaXMuX29uRG9uZUZucy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaCh0KX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9aW5pdCgpe31wbGF5KCl7dGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9vblN0YXJ0KCksdGhpcy50cmlnZ2VyTWljcm90YXNrKCkpLHRoaXMuX3N0YXJ0ZWQ9ITB9dHJpZ2dlck1pY3JvdGFzaygpe0FPKCgoKT0+dGhpcy5fb25GaW5pc2goKSkpfV9vblN0YXJ0KCl7dGhpcy5fb25TdGFydEZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdfXBhdXNlKCl7fXJlc3RhcnQoKXt9ZmluaXNoKCl7dGhpcy5fb25GaW5pc2goKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuaGFzU3RhcnRlZCgpfHx0aGlzLl9vblN0YXJ0KCksdGhpcy5maW5pc2goKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1yZXNldCgpe3RoaXMuX3N0YXJ0ZWQ9ITF9c2V0UG9zaXRpb24odCl7dGhpcy5fcG9zaXRpb249dGhpcy50b3RhbFRpbWU/dCp0aGlzLnRvdGFsVGltZToxfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMudG90YWxUaW1lP3RoaXMuX3Bvc2l0aW9uL3RoaXMudG90YWxUaW1lOjF9dHJpZ2dlckNhbGxiYWNrKHQpe2NvbnN0IGU9InN0YXJ0Ij09dD90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztlLmZvckVhY2goKHQ9PnQoKSkpLGUubGVuZ3RoPTB9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBOT3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLnRvdGFsVGltZT0wLHRoaXMucGxheWVycz10O2xldCBlPTAsbj0wLG89MDtjb25zdCBpPXRoaXMucGxheWVycy5sZW5ndGg7MD09aT9BTygoKCk9PnRoaXMuX29uRmluaXNoKCkpKTp0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+e3Qub25Eb25lKCgoKT0+eysrZT09aSYmdGhpcy5fb25GaW5pc2goKX0pKSx0Lm9uRGVzdHJveSgoKCk9PnsrK249PWkmJnRoaXMuX29uRGVzdHJveSgpfSkpLHQub25TdGFydCgoKCk9PnsrK289PWkmJnRoaXMuX29uU3RhcnQoKX0pKX0pKSx0aGlzLnRvdGFsVGltZT10aGlzLnBsYXllcnMucmVkdWNlKCgodCxlKT0+TWF0aC5tYXgodCxlLnRvdGFsVGltZSkpLDApfV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmluaXQoKSkpfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfV9vblN0YXJ0KCl7dGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9zdGFydGVkPSEwLHRoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXSl9b25Eb25lKHQpe3RoaXMuX29uRG9uZUZucy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaCh0KX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9cGxheSgpe3RoaXMucGFyZW50UGxheWVyfHx0aGlzLmluaXQoKSx0aGlzLl9vblN0YXJ0KCksdGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQucGxheSgpKSl9cGF1c2UoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5wYXVzZSgpKSl9cmVzdGFydCgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnJlc3RhcnQoKSkpfWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCksdGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQuZmluaXNoKCkpKX1kZXN0cm95KCl7dGhpcy5fb25EZXN0cm95KCl9X29uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXJlc2V0KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQucmVzZXQoKSkpLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe2NvbnN0IGU9dCp0aGlzLnRvdGFsVGltZTt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+e2NvbnN0IG49dC50b3RhbFRpbWU/TWF0aC5taW4oMSxlL3QudG90YWxUaW1lKToxO3Quc2V0UG9zaXRpb24obil9KSl9Z2V0UG9zaXRpb24oKXtjb25zdCB0PXRoaXMucGxheWVycy5yZWR1Y2UoKCh0LGUpPT5udWxsPT09dHx8ZS50b3RhbFRpbWU+dC50b3RhbFRpbWU/ZTp0KSxudWxsKTtyZXR1cm4gbnVsbCE9dD90LmdldFBvc2l0aW9uKCk6MH1iZWZvcmVEZXN0cm95KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9Pnt0LmJlZm9yZURlc3Ryb3kmJnQuYmVmb3JlRGVzdHJveSgpfSkpfXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmZ1bmN0aW9uIHpPKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5kb2N1bWVudH1mdW5jdGlvbiBJTygpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChwcm9jZXNzKX1mdW5jdGlvbiBITyh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IFRPO2Nhc2UgMTpyZXR1cm4gdFswXTtkZWZhdWx0OnJldHVybiBuZXcgTk8odCl9fWZ1bmN0aW9uIEZPKHQsZSxuLG8saT17fSxhPXt9KXtjb25zdCByPVtdLHM9W107bGV0IGw9LTEsYz1udWxsO2lmKG8uZm9yRWFjaCgodD0+e2NvbnN0IG49dC5vZmZzZXQsbz1uPT1sLGQ9byYmY3x8e307T2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2xldCBvPW4scz10W25dO2lmKCJvZmZzZXQiIT09bilzd2l0Y2gobz1lLm5vcm1hbGl6ZVByb3BlcnR5TmFtZShvLHIpLHMpe2Nhc2UiISI6cz1pW25dO2JyZWFrO2Nhc2Ugdk86cz1hW25dO2JyZWFrO2RlZmF1bHQ6cz1lLm5vcm1hbGl6ZVN0eWxlVmFsdWUobixvLHMscil9ZFtvXT1zfSkpLG98fHMucHVzaChkKSxjPWQsbD1ufSkpLHIubGVuZ3RoKXtjb25zdCB0PSJcbiAtICI7dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gYW5pbWF0ZSBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6JHt0fSR7ci5qb2luKHQpfWApfXJldHVybiBzfWZ1bmN0aW9uIExPKHQsZSxuLG8pe3N3aXRjaChlKXtjYXNlInN0YXJ0Ijp0Lm9uU3RhcnQoKCgpPT5vKG4mJkJPKG4sInN0YXJ0Iix0KSkpKTticmVhaztjYXNlImRvbmUiOnQub25Eb25lKCgoKT0+byhuJiZCTyhuLCJkb25lIix0KSkpKTticmVhaztjYXNlImRlc3Ryb3kiOnQub25EZXN0cm95KCgoKT0+byhuJiZCTyhuLCJkZXN0cm95Iix0KSkpKX19ZnVuY3Rpb24gQk8odCxlLG4pe2NvbnN0IG89bi50b3RhbFRpbWUsaT1WTyh0LmVsZW1lbnQsdC50cmlnZ2VyTmFtZSx0LmZyb21TdGF0ZSx0LnRvU3RhdGUsZXx8dC5waGFzZU5hbWUsbnVsbD09bz90LnRvdGFsVGltZTpvLCEhbi5kaXNhYmxlZCksYT10Ll9kYXRhO3JldHVybiBudWxsIT1hJiYoaS5fZGF0YT1hKSxpfWZ1bmN0aW9uIFZPKHQsZSxuLG8saT0iIixhPTAscil7cmV0dXJue2VsZW1lbnQ6dCx0cmlnZ2VyTmFtZTplLGZyb21TdGF0ZTpuLHRvU3RhdGU6byxwaGFzZU5hbWU6aSx0b3RhbFRpbWU6YSxkaXNhYmxlZDohIXJ9fWZ1bmN0aW9uIFVPKHQsZSxuKXtsZXQgbztyZXR1cm4gdCBpbnN0YW5jZW9mIE1hcD8obz10LmdldChlKSxvfHx0LnNldChlLG89bikpOihvPXRbZV0sb3x8KG89dFtlXT1uKSksb31mdW5jdGlvbiBqTyh0KXtjb25zdCBlPXQuaW5kZXhPZigiOiIpO3JldHVyblt0LnN1YnN0cmluZygxLGUpLHQuc3Vic3RyKGUrMSldfWxldCBXTz0odCxlKT0+ITEsR089KHQsZSk9PiExLFlPPSh0LGUsbik9PltdO2NvbnN0IHFPPUlPKCk7KHFPfHwidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQpJiYoV089ek8oKT8odCxlKT0+e2Zvcig7ZSYmZSE9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDspe2lmKGU9PT10KXJldHVybiEwO2U9ZS5wYXJlbnROb2RlfHxlLmhvc3R9cmV0dXJuITF9Oih0LGUpPT50LmNvbnRhaW5zKGUpLEdPPSgoKT0+e2lmKHFPfHxFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzKXJldHVybih0LGUpPT50Lm1hdGNoZXMoZSk7e2NvbnN0IHQ9RWxlbWVudC5wcm90b3R5cGUsZT10Lm1hdGNoZXNTZWxlY3Rvcnx8dC5tb3pNYXRjaGVzU2VsZWN0b3J8fHQubXNNYXRjaGVzU2VsZWN0b3J8fHQub01hdGNoZXNTZWxlY3Rvcnx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3I7cmV0dXJuIGU/KHQsbik9PmUuYXBwbHkodCxbbl0pOkdPfX0pKCksWU89KHQsZSxuKT0+e2xldCBvPVtdO2lmKG4pe2NvbnN0IG49dC5xdWVyeVNlbGVjdG9yQWxsKGUpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW8ucHVzaChuW3RdKX1lbHNle2NvbnN0IG49dC5xdWVyeVNlbGVjdG9yKGUpO24mJm8ucHVzaChuKX1yZXR1cm4gb30pO2xldCBaTz1udWxsLFhPPSExO2Z1bmN0aW9uIEtPKHQpe1pPfHwoWk89KGZ1bmN0aW9uIGUoKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KXJldHVybiBkb2N1bWVudC5ib2R5O3JldHVybiBudWxsfSkoKXx8e30sWE89ISFaTy5zdHlsZSYmIldlYmtpdEFwcGVhcmFuY2UiaW4gWk8uc3R5bGUpO2xldCBuPSEwO2lmKFpPLnN0eWxlJiYhKGZ1bmN0aW9uIG8odCl7cmV0dXJuImVia2l0Ij09dC5zdWJzdHJpbmcoMSw2KX0pKHQpJiYobj10IGluIFpPLnN0eWxlLCFuJiZYTykpe249IldlYmtpdCIrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKWluIFpPLnN0eWxlfXJldHVybiBufWNvbnN0IEpPPUdPLFFPPVdPLCRPPVlPO2Z1bmN0aW9uIHRQKHQpe2NvbnN0IGU9e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pntjb25zdCBvPW4ucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywiJDEtJDIiKTtlW29dPXRbbl19KSksZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZVB7dmFsaWRhdGVTdHlsZVByb3BlcnR5KHQpe3JldHVybiBLTyh0KX1tYXRjaGVzRWxlbWVudCh0LGUpe3JldHVybiBKTyh0LGUpfWNvbnRhaW5zRWxlbWVudCh0LGUpe3JldHVybiBRTyh0LGUpfXF1ZXJ5KHQsZSxuKXtyZXR1cm4gJE8odCxlLG4pfWNvbXB1dGVTdHlsZSh0LGUsbil7cmV0dXJuIG58fCIifWFuaW1hdGUodCxlLG4sbyxpLGE9W10scil7cmV0dXJuIG5ldyBUTyhuLG8pfX1lUC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZVApfSxlUC7JtXByb3Y9U24oe3Rva2VuOmVQLGZhY3Rvcnk6ZVAuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGVQLFt7dHlwZTpqbX1dLG51bGwsbnVsbCk7Y2xhc3MgblB7fW5QLk5PT1A9bmV3IGVQOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgb1A9Im5nLWVudGVyIixpUD0ibmctbGVhdmUiLGFQPSJuZy10cmlnZ2VyIixyUD0iLm5nLXRyaWdnZXIiLHNQPSJuZy1hbmltYXRpbmciLGxQPSIubmctYW5pbWF0aW5nIjtmdW5jdGlvbiBjUCh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7Y29uc3QgZT10Lm1hdGNoKC9eKC0/W1wuXGRdKykobT9zKS8pO3JldHVybiFlfHxlLmxlbmd0aDwyPzA6ZFAocGFyc2VGbG9hdChlWzFdKSxlWzJdKX1mdW5jdGlvbiBkUCh0LGUpe3N3aXRjaChlKXtjYXNlInMiOnJldHVybiAxZTMqdDtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBwUCh0LGUsbil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoImR1cmF0aW9uIik/dDooZnVuY3Rpb24gbyh0LGUsbil7Y29uc3Qgbz0vXigtP1tcLlxkXSspKG0/cykoPzpccysoLT9bXC5cZF0rKShtP3MpKT8oPzpccysoWy1hLXpdKyg/OlwoLis/XCkpPykpPyQvaTtsZXQgaSxhPTAscj0iIjtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IG49dC5tYXRjaChvKTtpZihudWxsPT09bilyZXR1cm4gZS5wdXNoKGBUaGUgcHJvdmlkZWQgdGltaW5nIHZhbHVlICIke3R9IiBpcyBpbnZhbGlkLmApLHtkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiIifTtpPWRQKHBhcnNlRmxvYXQoblsxXSksblsyXSk7Y29uc3Qgcz1uWzNdO251bGwhPXMmJihhPWRQKHBhcnNlRmxvYXQocyksbls0XSkpO2NvbnN0IGw9bls1XTtsJiYocj1sKX1lbHNlIGk9dDtpZighbil7bGV0IG49ITEsbz1lLmxlbmd0aDtpPDAmJihlLnB1c2goIkR1cmF0aW9uIHZhbHVlcyBiZWxvdyAwIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhpcyBhbmltYXRpb24gc3RlcC4iKSxuPSEwKSxhPDAmJihlLnB1c2goIkRlbGF5IHZhbHVlcyBiZWxvdyAwIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhpcyBhbmltYXRpb24gc3RlcC4iKSxuPSEwKSxuJiZlLnNwbGljZShvLDAsYFRoZSBwcm92aWRlZCB0aW1pbmcgdmFsdWUgIiR7dH0iIGlzIGludmFsaWQuYCl9cmV0dXJue2R1cmF0aW9uOmksZGVsYXk6YSxlYXNpbmc6cn19KSh0LGUsbil9ZnVuY3Rpb24gbVAodCxlPXt9KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2Vbbl09dFtuXX0pKSxlfWZ1bmN0aW9uIHVQKHQsZSxuPXt9KXtpZihlKWZvcihsZXQgZSBpbiB0KW5bZV09dFtlXTtlbHNlIG1QKHQsbik7cmV0dXJuIG59ZnVuY3Rpb24gZlAodCxlLG4pe3JldHVybiBuP2UrIjoiK24rIjsiOiIifWZ1bmN0aW9uIGdQKHQpe2xldCBlPSIiO2ZvcihsZXQgbj0wO248dC5zdHlsZS5sZW5ndGg7bisrKXtjb25zdCBvPXQuc3R5bGUuaXRlbShuKTtlKz1mUCgwLG8sdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG8pKX1mb3IoY29uc3QgbiBpbiB0LnN0eWxlKXtpZighdC5zdHlsZS5oYXNPd25Qcm9wZXJ0eShuKXx8bi5zdGFydHNXaXRoKCJfIikpY29udGludWU7ZSs9ZlAoMCxuLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIikudG9Mb3dlckNhc2UoKSx0LnN0eWxlW25dKX10LnNldEF0dHJpYnV0ZSgic3R5bGUiLGUpfWZ1bmN0aW9uIGhQKHQsZSxuKXt0LnN0eWxlJiYoT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgobz0+e2NvbnN0IGk9T1Aobyk7biYmIW4uaGFzT3duUHJvcGVydHkobykmJihuW29dPXQuc3R5bGVbaV0pLHQuc3R5bGVbaV09ZVtvXX0pKSxJTygpJiZnUCh0KSl9ZnVuY3Rpb24gYlAodCxlKXt0LnN0eWxlJiYoT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZT0+e2NvbnN0IG49T1AoZSk7dC5zdHlsZVtuXT0iIn0pKSxJTygpJiZnUCh0KSl9ZnVuY3Rpb24geVAodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/MT09dC5sZW5ndGg/dFswXTpQTyh0KTp0fWNvbnN0IF9QPW5ldyBSZWdFeHAoInt7XFxzKiguKz8pXFxzKn19IiwiZyIpO2Z1bmN0aW9uIENQKHQpe2xldCBlPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7bGV0IG47Zm9yKDtuPV9QLmV4ZWModCk7KWUucHVzaChuWzFdKTtfUC5sYXN0SW5kZXg9MH1yZXR1cm4gZX1mdW5jdGlvbiBNUCh0LGUsbil7Y29uc3Qgbz10LnRvU3RyaW5nKCksaT1vLnJlcGxhY2UoX1AsKCh0LG8pPT57bGV0IGk9ZVtvXTtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShvKXx8KG4ucHVzaChgUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIGFuaW1hdGlvbiBwYXJhbSAke299YCksaT0iIiksaS50b1N0cmluZygpfSkpO3JldHVybiBpPT1vP3Q6aX1mdW5jdGlvbiB2UCh0KXtjb25zdCBlPVtdO2xldCBuPXQubmV4dCgpO2Zvcig7IW4uZG9uZTspZS5wdXNoKG4udmFsdWUpLG49dC5uZXh0KCk7cmV0dXJuIGV9Y29uc3QgeFA9Ly0rKFthLXowLTldKS9nO2Z1bmN0aW9uIE9QKHQpe3JldHVybiB0LnJlcGxhY2UoeFAsKCguLi50KT0+dFsxXS50b1VwcGVyQ2FzZSgpKSl9ZnVuY3Rpb24gUFAodCxlKXtyZXR1cm4gMD09PXR8fDA9PT1lfWZ1bmN0aW9uIHdQKHQsZSxuKXtjb25zdCBvPU9iamVjdC5rZXlzKG4pO2lmKG8ubGVuZ3RoJiZlLmxlbmd0aCl7bGV0IGE9ZVswXSxyPVtdO2lmKG8uZm9yRWFjaCgodD0+e2EuaGFzT3duUHJvcGVydHkodCl8fHIucHVzaCh0KSxhW3RdPW5bdF19KSksci5sZW5ndGgpZm9yKHZhciBpPTE7aTxlLmxlbmd0aDtpKyspe2xldCBuPWVbaV07ci5mb3JFYWNoKChmdW5jdGlvbihlKXtuW2VdPVNQKHQsZSl9KSl9fXJldHVybiBlfWZ1bmN0aW9uIGtQKHQsZSxuKXtzd2l0Y2goZS50eXBlKXtjYXNlIDc6cmV0dXJuIHQudmlzaXRUcmlnZ2VyKGUsbik7Y2FzZSAwOnJldHVybiB0LnZpc2l0U3RhdGUoZSxuKTtjYXNlIDE6cmV0dXJuIHQudmlzaXRUcmFuc2l0aW9uKGUsbik7Y2FzZSAyOnJldHVybiB0LnZpc2l0U2VxdWVuY2UoZSxuKTtjYXNlIDM6cmV0dXJuIHQudmlzaXRHcm91cChlLG4pO2Nhc2UgNDpyZXR1cm4gdC52aXNpdEFuaW1hdGUoZSxuKTtjYXNlIDU6cmV0dXJuIHQudmlzaXRLZXlmcmFtZXMoZSxuKTtjYXNlIDY6cmV0dXJuIHQudmlzaXRTdHlsZShlLG4pO2Nhc2UgODpyZXR1cm4gdC52aXNpdFJlZmVyZW5jZShlLG4pO2Nhc2UgOTpyZXR1cm4gdC52aXNpdEFuaW1hdGVDaGlsZChlLG4pO2Nhc2UgMTA6cmV0dXJuIHQudmlzaXRBbmltYXRlUmVmKGUsbik7Y2FzZSAxMTpyZXR1cm4gdC52aXNpdFF1ZXJ5KGUsbik7Y2FzZSAxMjpyZXR1cm4gdC52aXNpdFN0YWdnZXIoZSxuKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHJlc29sdmUgYW5pbWF0aW9uIG1ldGFkYXRhIG5vZGUgIyR7ZS50eXBlfWApfX1mdW5jdGlvbiBTUCh0LGUpe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KVtlXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgRFA9IioiO2Z1bmN0aW9uIFJQKHQsZSl7Y29uc3Qgbj1bXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMqLFxzKi8pLmZvckVhY2goKHQ9PihmdW5jdGlvbiBvKHQsZSxuKXtpZigiOiI9PXRbMF0pe2NvbnN0IG89KGZ1bmN0aW9uIG8odCxlKXtzd2l0Y2godCl7Y2FzZSI6ZW50ZXIiOnJldHVybiJ2b2lkID0+ICoiO2Nhc2UiOmxlYXZlIjpyZXR1cm4iKiA9PiB2b2lkIjtjYXNlIjppbmNyZW1lbnQiOnJldHVybih0LGUpPT5wYXJzZUZsb2F0KGUpPnBhcnNlRmxvYXQodCk7Y2FzZSI6ZGVjcmVtZW50IjpyZXR1cm4odCxlKT0+cGFyc2VGbG9hdChlKTxwYXJzZUZsb2F0KHQpO2RlZmF1bHQ6cmV0dXJuIGUucHVzaChgVGhlIHRyYW5zaXRpb24gYWxpYXMgdmFsdWUgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWRgKSwiKiA9PiAqIn19KSh0LG4pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBvKXJldHVybiB2b2lkIGUucHVzaChvKTt0PW99Y29uc3QgaT10Lm1hdGNoKC9eKFwqfFstXHddKylccyooPD9bPS1dPilccyooXCp8Wy1cd10rKSQvKTtpZihudWxsPT1pfHxpLmxlbmd0aDw0KXJldHVybiBuLnB1c2goYFRoZSBwcm92aWRlZCB0cmFuc2l0aW9uIGV4cHJlc3Npb24gIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWRgKSxlO2NvbnN0IGE9aVsxXSxyPWlbMl0scz1pWzNdO2UucHVzaChUUChhLHMpKTtjb25zdCBsPWE9PURQJiZzPT1EUDsiPCIhPXJbMF18fGx8fGUucHVzaChUUChzLGEpKX0pKHQsbixlKSkpOm4ucHVzaCh0KSxufWNvbnN0IEVQPW5ldyBTZXQoWyJ0cnVlIiwiMSJdKSxBUD1uZXcgU2V0KFsiZmFsc2UiLCIwIl0pO2Z1bmN0aW9uIFRQKHQsZSl7Y29uc3Qgbj1FUC5oYXModCl8fEFQLmhhcyh0KSxvPUVQLmhhcyhlKXx8QVAuaGFzKGUpO3JldHVybihpLGEpPT57bGV0IHI9dD09RFB8fHQ9PWkscz1lPT1EUHx8ZT09YTtyZXR1cm4hciYmbiYmImJvb2xlYW4iPT10eXBlb2YgaSYmKHI9aT9FUC5oYXModCk6QVAuaGFzKHQpKSwhcyYmbyYmImJvb2xlYW4iPT10eXBlb2YgYSYmKHM9YT9FUC5oYXMoZSk6QVAuaGFzKGUpKSxyJiZzfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTlA9IjpzZWxmIix6UD1uZXcgUmVnRXhwKCJzKjpzZWxmcyosPyIsImciKTtmdW5jdGlvbiBJUCh0LGUsbil7cmV0dXJuIG5ldyBIUCh0KS5idWlsZChlLG4pfWNsYXNzIEhQe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RyaXZlcj10fWJ1aWxkKHQsZSl7Y29uc3Qgbj1uZXcgRlAoZSk7cmV0dXJuIHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUobiksa1AodGhpcyx5UCh0KSxuKX1fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZSh0KXt0LmN1cnJlbnRRdWVyeVNlbGVjdG9yPSIiLHQuY29sbGVjdGVkU3R5bGVzPXt9LHQuY29sbGVjdGVkU3R5bGVzWyIiXT17fSx0LmN1cnJlbnRUaW1lPTB9dmlzaXRUcmlnZ2VyKHQsZSl7bGV0IG49ZS5xdWVyeUNvdW50PTAsbz1lLmRlcENvdW50PTA7Y29uc3QgaT1bXSxhPVtdO3JldHVybiJAIj09dC5uYW1lLmNoYXJBdCgwKSYmZS5lcnJvcnMucHVzaCgiYW5pbWF0aW9uIHRyaWdnZXJzIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGFuIGBAYCBzaWduIChlLmcuIHRyaWdnZXIoJ0Bmb28nLCBbLi4uXSkpIiksdC5kZWZpbml0aW9ucy5mb3JFYWNoKCh0PT57aWYodGhpcy5fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZShlKSwwPT10LnR5cGUpe2NvbnN0IG49dCxvPW4ubmFtZTtvLnRvU3RyaW5nKCkuc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKCh0PT57bi5uYW1lPXQsaS5wdXNoKHRoaXMudmlzaXRTdGF0ZShuLGUpKX0pKSxuLm5hbWU9b31lbHNlIGlmKDE9PXQudHlwZSl7Y29uc3QgaT10aGlzLnZpc2l0VHJhbnNpdGlvbih0LGUpO24rPWkucXVlcnlDb3VudCxvKz1pLmRlcENvdW50LGEucHVzaChpKX1lbHNlIGUuZXJyb3JzLnB1c2goIm9ubHkgc3RhdGUoKSBhbmQgdHJhbnNpdGlvbigpIGRlZmluaXRpb25zIGNhbiBzaXQgaW5zaWRlIG9mIGEgdHJpZ2dlcigpIil9KSkse3R5cGU6NyxuYW1lOnQubmFtZSxzdGF0ZXM6aSx0cmFuc2l0aW9uczphLHF1ZXJ5Q291bnQ6bixkZXBDb3VudDpvLG9wdGlvbnM6bnVsbH19dmlzaXRTdGF0ZSh0LGUpe2NvbnN0IG49dGhpcy52aXNpdFN0eWxlKHQuc3R5bGVzLGUpLG89dC5vcHRpb25zJiZ0Lm9wdGlvbnMucGFyYW1zfHxudWxsO2lmKG4uY29udGFpbnNEeW5hbWljU3R5bGVzKXtjb25zdCBpPW5ldyBTZXQsYT1vfHx7fTtpZihuLnN0eWxlcy5mb3JFYWNoKCh0PT57aWYoTFAodCkpe2NvbnN0IGU9dDtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT57Q1AoZVt0XSkuZm9yRWFjaCgodD0+e2EuaGFzT3duUHJvcGVydHkodCl8fGkuYWRkKHQpfSkpfSkpfX0pKSxpLnNpemUpe2NvbnN0IG49dlAoaS52YWx1ZXMoKSk7ZS5lcnJvcnMucHVzaChgc3RhdGUoIiR7dC5uYW1lfSIsIC4uLikgbXVzdCBkZWZpbmUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZm9sbG93aW5nIHN0eWxlIHN1YnN0aXR1dGlvbnM6ICR7bi5qb2luKCIsICIpfWApfX1yZXR1cm57dHlwZTowLG5hbWU6dC5uYW1lLHN0eWxlOm4sb3B0aW9uczpvP3twYXJhbXM6b306bnVsbH19dmlzaXRUcmFuc2l0aW9uKHQsZSl7ZS5xdWVyeUNvdW50PTAsZS5kZXBDb3VudD0wO2NvbnN0IG49a1AodGhpcyx5UCh0LmFuaW1hdGlvbiksZSk7cmV0dXJue3R5cGU6MSxtYXRjaGVyczpSUCh0LmV4cHIsZS5lcnJvcnMpLGFuaW1hdGlvbjpuLHF1ZXJ5Q291bnQ6ZS5xdWVyeUNvdW50LGRlcENvdW50OmUuZGVwQ291bnQsb3B0aW9uczpCUCh0Lm9wdGlvbnMpfX12aXNpdFNlcXVlbmNlKHQsZSl7cmV0dXJue3R5cGU6MixzdGVwczp0LnN0ZXBzLm1hcCgodD0+a1AodGhpcyx0LGUpKSksb3B0aW9uczpCUCh0Lm9wdGlvbnMpfX12aXNpdEdyb3VwKHQsZSl7Y29uc3Qgbj1lLmN1cnJlbnRUaW1lO2xldCBvPTA7Y29uc3QgaT10LnN0ZXBzLm1hcCgodD0+e2UuY3VycmVudFRpbWU9bjtjb25zdCBpPWtQKHRoaXMsdCxlKTtyZXR1cm4gbz1NYXRoLm1heChvLGUuY3VycmVudFRpbWUpLGl9KSk7cmV0dXJuIGUuY3VycmVudFRpbWU9byx7dHlwZTozLHN0ZXBzOmksb3B0aW9uczpCUCh0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGUodCxlKXtjb25zdCBuPShmdW5jdGlvbiBvKHQsZSl7bGV0IG49bnVsbDtpZih0Lmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpKW49dDtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCl7cmV0dXJuIFZQKHBQKHQsZSkuZHVyYXRpb24sMCwiIil9Y29uc3Qgbz10O2lmKG8uc3BsaXQoL1xzKy8pLnNvbWUoKHQ9PiJ7Ij09dC5jaGFyQXQoMCkmJiJ7Ij09dC5jaGFyQXQoMSkpKSl7Y29uc3QgdD1WUCgwLDAsIiIpO3JldHVybiB0LmR5bmFtaWM9ITAsdC5zdHJWYWx1ZT1vLHR9cmV0dXJuIG49bnx8cFAobyxlKSxWUChuLmR1cmF0aW9uLG4uZGVsYXksbi5lYXNpbmcpfSkodC50aW1pbmdzLGUuZXJyb3JzKTtsZXQgaTtlLmN1cnJlbnRBbmltYXRlVGltaW5ncz1uO2xldCBhPXQuc3R5bGVzP3Quc3R5bGVzOndPKHt9KTtpZig1PT1hLnR5cGUpaT10aGlzLnZpc2l0S2V5ZnJhbWVzKGEsZSk7ZWxzZXtsZXQgbz10LnN0eWxlcyxhPSExO2lmKCFvKXthPSEwO2NvbnN0IHQ9e307bi5lYXNpbmcmJih0LmVhc2luZz1uLmVhc2luZyksbz13Tyh0KX1lLmN1cnJlbnRUaW1lKz1uLmR1cmF0aW9uK24uZGVsYXk7Y29uc3Qgcj10aGlzLnZpc2l0U3R5bGUobyxlKTtyLmlzRW1wdHlTdGVwPWEsaT1yfXJldHVybiBlLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHt0eXBlOjQsdGltaW5nczpuLHN0eWxlOmksb3B0aW9uczpudWxsfX12aXNpdFN0eWxlKHQsZSl7Y29uc3Qgbj10aGlzLl9tYWtlU3R5bGVBc3QodCxlKTtyZXR1cm4gdGhpcy5fdmFsaWRhdGVTdHlsZUFzdChuLGUpLG59X21ha2VTdHlsZUFzdCh0LGUpe2NvbnN0IG49W107QXJyYXkuaXNBcnJheSh0LnN0eWxlcyk/dC5zdHlsZXMuZm9yRWFjaCgodD0+eyJzdHJpbmciPT10eXBlb2YgdD90PT12Tz9uLnB1c2godCk6ZS5lcnJvcnMucHVzaChgVGhlIHByb3ZpZGVkIHN0eWxlIHN0cmluZyB2YWx1ZSAke3R9IGlzIG5vdCBhbGxvd2VkLmApOm4ucHVzaCh0KX0pKTpuLnB1c2godC5zdHlsZXMpO2xldCBvPSExLGk9bnVsbDtyZXR1cm4gbi5mb3JFYWNoKCh0PT57aWYoTFAodCkpe2NvbnN0IGU9dCxuPWUuZWFzaW5nO2lmKG4mJihpPW4sZGVsZXRlIGUuZWFzaW5nKSwhbylmb3IobGV0IHQgaW4gZSl7aWYoZVt0XS50b1N0cmluZygpLmluZGV4T2YoInt7Iik+PTApe289ITA7YnJlYWt9fX19KSkse3R5cGU6NixzdHlsZXM6bixlYXNpbmc6aSxvZmZzZXQ6dC5vZmZzZXQsY29udGFpbnNEeW5hbWljU3R5bGVzOm8sb3B0aW9uczpudWxsfX1fdmFsaWRhdGVTdHlsZUFzdCh0LGUpe2NvbnN0IG49ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M7bGV0IG89ZS5jdXJyZW50VGltZSxpPWUuY3VycmVudFRpbWU7biYmaT4wJiYoaS09bi5kdXJhdGlvbituLmRlbGF5KSx0LnN0eWxlcy5mb3JFYWNoKCh0PT57InN0cmluZyIhPXR5cGVvZiB0JiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57aWYoIXRoaXMuX2RyaXZlci52YWxpZGF0ZVN0eWxlUHJvcGVydHkobikpcmV0dXJuIHZvaWQgZS5lcnJvcnMucHVzaChgVGhlIHByb3ZpZGVkIGFuaW1hdGlvbiBwcm9wZXJ0eSAiJHtufSIgaXMgbm90IGEgc3VwcG9ydGVkIENTUyBwcm9wZXJ0eSBmb3IgYW5pbWF0aW9uc2ApO2NvbnN0IGE9ZS5jb2xsZWN0ZWRTdHlsZXNbZS5jdXJyZW50UXVlcnlTZWxlY3Rvcl0scj1hW25dO2xldCBzPSEwO3ImJihpIT1vJiZpPj1yLnN0YXJ0VGltZSYmbzw9ci5lbmRUaW1lJiYoZS5lcnJvcnMucHVzaChgVGhlIENTUyBwcm9wZXJ0eSAiJHtufSIgdGhhdCBleGlzdHMgYmV0d2VlbiB0aGUgdGltZXMgb2YgIiR7ci5zdGFydFRpbWV9bXMiIGFuZCAiJHtyLmVuZFRpbWV9bXMiIGlzIGFsc28gYmVpbmcgYW5pbWF0ZWQgaW4gYSBwYXJhbGxlbCBhbmltYXRpb24gYmV0d2VlbiB0aGUgdGltZXMgb2YgIiR7aX1tcyIgYW5kICIke299bXMiYCkscz0hMSksaT1yLnN0YXJ0VGltZSkscyYmKGFbbl09e3N0YXJ0VGltZTppLGVuZFRpbWU6b30pLGUub3B0aW9ucyYmKGZ1bmN0aW9uIGwodCxlLG4pe2NvbnN0IG89ZS5wYXJhbXN8fHt9LGk9Q1AodCk7aS5sZW5ndGgmJmkuZm9yRWFjaCgodD0+e28uaGFzT3duUHJvcGVydHkodCl8fG4ucHVzaChgVW5hYmxlIHRvIHJlc29sdmUgdGhlIGxvY2FsIGFuaW1hdGlvbiBwYXJhbSAke3R9IGluIHRoZSBnaXZlbiBsaXN0IG9mIHZhbHVlc2ApfSkpfSkodFtuXSxlLm9wdGlvbnMsZS5lcnJvcnMpfSkpfSkpfXZpc2l0S2V5ZnJhbWVzKHQsZSl7Y29uc3Qgbj17dHlwZTo1LHN0eWxlczpbXSxvcHRpb25zOm51bGx9O2lmKCFlLmN1cnJlbnRBbmltYXRlVGltaW5ncylyZXR1cm4gZS5lcnJvcnMucHVzaCgia2V5ZnJhbWVzKCkgbXVzdCBiZSBwbGFjZWQgaW5zaWRlIG9mIGEgY2FsbCB0byBhbmltYXRlKCkiKSxuO2xldCBvPTA7Y29uc3QgaT1bXTtsZXQgYT0hMSxyPSExLHM9MDtjb25zdCBsPXQuc3RlcHMubWFwKCh0PT57Y29uc3Qgbj10aGlzLl9tYWtlU3R5bGVBc3QodCxlKTtsZXQgbD1udWxsIT1uLm9mZnNldD9uLm9mZnNldDooZnVuY3Rpb24gYyh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIG51bGw7bGV0IGU9bnVsbDtpZihBcnJheS5pc0FycmF5KHQpKXQuZm9yRWFjaCgodD0+e2lmKExQKHQpJiZ0Lmhhc093blByb3BlcnR5KCJvZmZzZXQiKSl7Y29uc3Qgbj10O2U9cGFyc2VGbG9hdChuLm9mZnNldCksZGVsZXRlIG4ub2Zmc2V0fX0pKTtlbHNlIGlmKExQKHQpJiZ0Lmhhc093blByb3BlcnR5KCJvZmZzZXQiKSl7Y29uc3Qgbj10O2U9cGFyc2VGbG9hdChuLm9mZnNldCksZGVsZXRlIG4ub2Zmc2V0fXJldHVybiBlfSkobi5zdHlsZXMpLGQ9MDtyZXR1cm4gbnVsbCE9bCYmKG8rKyxkPW4ub2Zmc2V0PWwpLHI9cnx8ZDwwfHxkPjEsYT1hfHxkPHMscz1kLGkucHVzaChkKSxufSkpO3ImJmUuZXJyb3JzLnB1c2goIlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwga2V5ZnJhbWUgb2Zmc2V0cyBhcmUgYmV0d2VlbiAwIGFuZCAxIiksYSYmZS5lcnJvcnMucHVzaCgiUGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBrZXlmcmFtZSBvZmZzZXRzIGFyZSBpbiBvcmRlciIpO2NvbnN0IGM9dC5zdGVwcy5sZW5ndGg7bGV0IGQ9MDtvPjAmJm88Yz9lLmVycm9ycy5wdXNoKCJOb3QgYWxsIHN0eWxlKCkgc3RlcHMgd2l0aGluIHRoZSBkZWNsYXJlZCBrZXlmcmFtZXMoKSBjb250YWluIG9mZnNldHMiKTowPT1vJiYoZD0xLyhjLTEpKTtjb25zdCBwPWMtMSxtPWUuY3VycmVudFRpbWUsdT1lLmN1cnJlbnRBbmltYXRlVGltaW5ncyxmPXUuZHVyYXRpb247cmV0dXJuIGwuZm9yRWFjaCgoKHQsbyk9Pntjb25zdCBhPWQ+MD9vPT1wPzE6ZCpvOmlbb10scj1hKmY7ZS5jdXJyZW50VGltZT1tK3UuZGVsYXkrcix1LmR1cmF0aW9uPXIsdGhpcy5fdmFsaWRhdGVTdHlsZUFzdCh0LGUpLHQub2Zmc2V0PWEsbi5zdHlsZXMucHVzaCh0KX0pKSxufXZpc2l0UmVmZXJlbmNlKHQsZSl7cmV0dXJue3R5cGU6OCxhbmltYXRpb246a1AodGhpcyx5UCh0LmFuaW1hdGlvbiksZSksb3B0aW9uczpCUCh0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGVDaGlsZCh0LGUpe3JldHVybiBlLmRlcENvdW50Kysse3R5cGU6OSxvcHRpb25zOkJQKHQub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZVJlZih0LGUpe3JldHVybnt0eXBlOjEwLGFuaW1hdGlvbjp0aGlzLnZpc2l0UmVmZXJlbmNlKHQuYW5pbWF0aW9uLGUpLG9wdGlvbnM6QlAodC5vcHRpb25zKX19dmlzaXRRdWVyeSh0LGUpe2NvbnN0IG49ZS5jdXJyZW50UXVlcnlTZWxlY3RvcixvPXQub3B0aW9uc3x8e307ZS5xdWVyeUNvdW50KyssZS5jdXJyZW50UXVlcnk9dDtjb25zdFtpLGFdPShmdW5jdGlvbiByKHQpe2NvbnN0IGU9ISF0LnNwbGl0KC9ccyosXHMqLykuZmluZCgodD0+dD09TlApKTtlJiYodD10LnJlcGxhY2UoelAsIiIpKTtyZXR1cm5bdD10LnJlcGxhY2UoL0BcKi9nLHJQKS5yZXBsYWNlKC9AXHcrL2csKHQ9PiIubmctdHJpZ2dlci0iK3Quc3Vic3RyKDEpKSkucmVwbGFjZSgvOmFuaW1hdGluZy9nLGxQKSxlXX0pKHQuc2VsZWN0b3IpO2UuY3VycmVudFF1ZXJ5U2VsZWN0b3I9bi5sZW5ndGg/bisiICIraTppLFVPKGUuY29sbGVjdGVkU3R5bGVzLGUuY3VycmVudFF1ZXJ5U2VsZWN0b3Ise30pO2NvbnN0IHM9a1AodGhpcyx5UCh0LmFuaW1hdGlvbiksZSk7cmV0dXJuIGUuY3VycmVudFF1ZXJ5PW51bGwsZS5jdXJyZW50UXVlcnlTZWxlY3Rvcj1uLHt0eXBlOjExLHNlbGVjdG9yOmksbGltaXQ6by5saW1pdHx8MCxvcHRpb25hbDohIW8ub3B0aW9uYWwsaW5jbHVkZVNlbGY6YSxhbmltYXRpb246cyxvcmlnaW5hbFNlbGVjdG9yOnQuc2VsZWN0b3Isb3B0aW9uczpCUCh0Lm9wdGlvbnMpfX12aXNpdFN0YWdnZXIodCxlKXtlLmN1cnJlbnRRdWVyeXx8ZS5lcnJvcnMucHVzaCgic3RhZ2dlcigpIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIHF1ZXJ5KCkiKTtjb25zdCBuPSJmdWxsIj09PXQudGltaW5ncz97ZHVyYXRpb246MCxkZWxheTowLGVhc2luZzoiZnVsbCJ9OnBQKHQudGltaW5ncyxlLmVycm9ycywhMCk7cmV0dXJue3R5cGU6MTIsYW5pbWF0aW9uOmtQKHRoaXMseVAodC5hbmltYXRpb24pLGUpLHRpbWluZ3M6bixvcHRpb25zOm51bGx9fX1jbGFzcyBGUHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVycm9ycz10LHRoaXMucXVlcnlDb3VudD0wLHRoaXMuZGVwQ291bnQ9MCx0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPW51bGwsdGhpcy5jdXJyZW50UXVlcnk9bnVsbCx0aGlzLmN1cnJlbnRRdWVyeVNlbGVjdG9yPW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLmN1cnJlbnRUaW1lPTAsdGhpcy5jb2xsZWN0ZWRTdHlsZXM9e30sdGhpcy5vcHRpb25zPW51bGx9fWZ1bmN0aW9uIExQKHQpe3JldHVybiFBcnJheS5pc0FycmF5KHQpJiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gQlAodCl7cmV0dXJuIHQ/KHQ9bVAodCkpLnBhcmFtcyYmKHQucGFyYW1zPShmdW5jdGlvbiBlKHQpe3JldHVybiB0P21QKHQpOm51bGx9KSh0LnBhcmFtcykpOnQ9e30sdH1mdW5jdGlvbiBWUCh0LGUsbil7cmV0dXJue2R1cmF0aW9uOnQsZGVsYXk6ZSxlYXNpbmc6bn19ZnVuY3Rpb24gVVAodCxlLG4sbyxpLGEscj1udWxsLHM9ITEpe3JldHVybnt0eXBlOjEsZWxlbWVudDp0LGtleWZyYW1lczplLHByZVN0eWxlUHJvcHM6bixwb3N0U3R5bGVQcm9wczpvLGR1cmF0aW9uOmksZGVsYXk6YSx0b3RhbFRpbWU6aSthLGVhc2luZzpyLHN1YlRpbWVsaW5lOnN9fWNsYXNzIGpQe2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Y29uc3VtZSh0KXtsZXQgZT10aGlzLl9tYXAuZ2V0KHQpO3JldHVybiBlP3RoaXMuX21hcC5kZWxldGUodCk6ZT1bXSxlfWFwcGVuZCh0LGUpe2xldCBuPXRoaXMuX21hcC5nZXQodCk7bnx8dGhpcy5fbWFwLnNldCh0LG49W10pLG4ucHVzaCguLi5lKX1oYXModCl7cmV0dXJuIHRoaXMuX21hcC5oYXModCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFdQPW5ldyBSZWdFeHAoIjplbnRlciIsImciKSxHUD1uZXcgUmVnRXhwKCI6bGVhdmUiLCJnIik7ZnVuY3Rpb24gWVAodCxlLG4sbyxpLGE9e30scj17fSxzLGwsYz1bXSl7cmV0dXJuKG5ldyBxUCkuYnVpbGRLZXlmcmFtZXModCxlLG4sbyxpLGEscixzLGwsYyl9Y2xhc3MgcVB7YnVpbGRLZXlmcmFtZXModCxlLG4sbyxpLGEscixzLGwsYz1bXSl7bD1sfHxuZXcgalA7Y29uc3QgZD1uZXcgWFAodCxlLGwsbyxpLGMsW10pO2Qub3B0aW9ucz1zLGQuY3VycmVudFRpbWVsaW5lLnNldFN0eWxlcyhbYV0sbnVsbCxkLmVycm9ycyxzKSxrUCh0aGlzLG4sZCk7Y29uc3QgcD1kLnRpbWVsaW5lcy5maWx0ZXIoKHQ9PnQuY29udGFpbnNBbmltYXRpb24oKSkpO2lmKHAubGVuZ3RoJiZPYmplY3Qua2V5cyhyKS5sZW5ndGgpe2NvbnN0IHQ9cFtwLmxlbmd0aC0xXTt0LmFsbG93T25seVRpbWVsaW5lU3R5bGVzKCl8fHQuc2V0U3R5bGVzKFtyXSxudWxsLGQuZXJyb3JzLHMpfXJldHVybiBwLmxlbmd0aD9wLm1hcCgodD0+dC5idWlsZEtleWZyYW1lcygpKSk6W1VQKGUsW10sW10sW10sMCwwLCIiLCExKV19dmlzaXRUcmlnZ2VyKHQsZSl7fXZpc2l0U3RhdGUodCxlKXt9dmlzaXRUcmFuc2l0aW9uKHQsZSl7fXZpc2l0QW5pbWF0ZUNoaWxkKHQsZSl7Y29uc3Qgbj1lLnN1Ykluc3RydWN0aW9ucy5jb25zdW1lKGUuZWxlbWVudCk7aWYobil7Y29uc3Qgbz1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKSxpPWUuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lLGE9dGhpcy5fdmlzaXRTdWJJbnN0cnVjdGlvbnMobixvLG8ub3B0aW9ucyk7aSE9YSYmZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoYSl9ZS5wcmV2aW91c05vZGU9dH12aXNpdEFuaW1hdGVSZWYodCxlKXtjb25zdCBuPWUuY3JlYXRlU3ViQ29udGV4dCh0Lm9wdGlvbnMpO24udHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCksdGhpcy52aXNpdFJlZmVyZW5jZSh0LmFuaW1hdGlvbixuKSxlLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShuLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSksZS5wcmV2aW91c05vZGU9dH1fdmlzaXRTdWJJbnN0cnVjdGlvbnModCxlLG4pe2xldCBvPWUuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lO2NvbnN0IGk9bnVsbCE9bi5kdXJhdGlvbj9jUChuLmR1cmF0aW9uKTpudWxsLGE9bnVsbCE9bi5kZWxheT9jUChuLmRlbGF5KTpudWxsO3JldHVybiAwIT09aSYmdC5mb3JFYWNoKCh0PT57Y29uc3Qgbj1lLmFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZSh0LGksYSk7bz1NYXRoLm1heChvLG4uZHVyYXRpb24rbi5kZWxheSl9KSksb312aXNpdFJlZmVyZW5jZSh0LGUpe2UudXBkYXRlT3B0aW9ucyh0Lm9wdGlvbnMsITApLGtQKHRoaXMsdC5hbmltYXRpb24sZSksZS5wcmV2aW91c05vZGU9dH12aXNpdFNlcXVlbmNlKHQsZSl7Y29uc3Qgbj1lLnN1YkNvbnRleHRDb3VudDtsZXQgbz1lO2NvbnN0IGk9dC5vcHRpb25zO2lmKGkmJihpLnBhcmFtc3x8aS5kZWxheSkmJihvPWUuY3JlYXRlU3ViQ29udGV4dChpKSxvLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLG51bGwhPWkuZGVsYXkpKXs2PT1vLnByZXZpb3VzTm9kZS50eXBlJiYoby5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCksby5wcmV2aW91c05vZGU9WlApO2NvbnN0IHQ9Y1AoaS5kZWxheSk7by5kZWxheU5leHRTdGVwKHQpfXQuc3RlcHMubGVuZ3RoJiYodC5zdGVwcy5mb3JFYWNoKCh0PT5rUCh0aGlzLHQsbykpKSxvLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxvLnN1YkNvbnRleHRDb3VudD5uJiZvLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpKSxlLnByZXZpb3VzTm9kZT10fXZpc2l0R3JvdXAodCxlKXtjb25zdCBuPVtdO2xldCBvPWUuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lO2NvbnN0IGk9dC5vcHRpb25zJiZ0Lm9wdGlvbnMuZGVsYXk/Y1AodC5vcHRpb25zLmRlbGF5KTowO3Quc3RlcHMuZm9yRWFjaCgoYT0+e2NvbnN0IHI9ZS5jcmVhdGVTdWJDb250ZXh0KHQub3B0aW9ucyk7aSYmci5kZWxheU5leHRTdGVwKGkpLGtQKHRoaXMsYSxyKSxvPU1hdGgubWF4KG8sci5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpLG4ucHVzaChyLmN1cnJlbnRUaW1lbGluZSl9KSksbi5mb3JFYWNoKCh0PT5lLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHQpKSksZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUobyksZS5wcmV2aW91c05vZGU9dH1fdmlzaXRUaW1pbmcodCxlKXtpZih0LmR5bmFtaWMpe2NvbnN0IG49dC5zdHJWYWx1ZTtyZXR1cm4gcFAoZS5wYXJhbXM/TVAobixlLnBhcmFtcyxlLmVycm9ycyk6bixlLmVycm9ycyl9cmV0dXJue2R1cmF0aW9uOnQuZHVyYXRpb24sZGVsYXk6dC5kZWxheSxlYXNpbmc6dC5lYXNpbmd9fXZpc2l0QW5pbWF0ZSh0LGUpe2NvbnN0IG49ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9dGhpcy5fdmlzaXRUaW1pbmcodC50aW1pbmdzLGUpLG89ZS5jdXJyZW50VGltZWxpbmU7bi5kZWxheSYmKGUuaW5jcmVtZW50VGltZShuLmRlbGF5KSxvLnNuYXBzaG90Q3VycmVudFN0eWxlcygpKTtjb25zdCBpPXQuc3R5bGU7NT09aS50eXBlP3RoaXMudmlzaXRLZXlmcmFtZXMoaSxlKTooZS5pbmNyZW1lbnRUaW1lKG4uZHVyYXRpb24pLHRoaXMudmlzaXRTdHlsZShpLGUpLG8uYXBwbHlTdHlsZXNUb0tleWZyYW1lKCkpLGUuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsZS5wcmV2aW91c05vZGU9dH12aXNpdFN0eWxlKHQsZSl7Y29uc3Qgbj1lLmN1cnJlbnRUaW1lbGluZSxvPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzOyFvJiZuLmdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKS5sZW5ndGgmJm4uZm9yd2FyZEZyYW1lKCk7Y29uc3QgaT1vJiZvLmVhc2luZ3x8dC5lYXNpbmc7dC5pc0VtcHR5U3RlcD9uLmFwcGx5RW1wdHlTdGVwKGkpOm4uc2V0U3R5bGVzKHQuc3R5bGVzLGksZS5lcnJvcnMsZS5vcHRpb25zKSxlLnByZXZpb3VzTm9kZT10fXZpc2l0S2V5ZnJhbWVzKHQsZSl7Y29uc3Qgbj1lLmN1cnJlbnRBbmltYXRlVGltaW5ncyxvPWUuY3VycmVudFRpbWVsaW5lLmR1cmF0aW9uLGk9bi5kdXJhdGlvbixhPWUuY3JlYXRlU3ViQ29udGV4dCgpLmN1cnJlbnRUaW1lbGluZTthLmVhc2luZz1uLmVhc2luZyx0LnN0eWxlcy5mb3JFYWNoKCh0PT57YS5mb3J3YXJkVGltZSgodC5vZmZzZXR8fDApKmkpLGEuc2V0U3R5bGVzKHQuc3R5bGVzLHQuZWFzaW5nLGUuZXJyb3JzLGUub3B0aW9ucyksYS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKX0pKSxlLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKGEpLGUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKG8raSksZS5wcmV2aW91c05vZGU9dH12aXNpdFF1ZXJ5KHQsZSl7Y29uc3Qgbj1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSxvPXQub3B0aW9uc3x8e30saT1vLmRlbGF5P2NQKG8uZGVsYXkpOjA7aSYmKDY9PT1lLnByZXZpb3VzTm9kZS50eXBlfHwwPT1uJiZlLmN1cnJlbnRUaW1lbGluZS5nZXRDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCkubGVuZ3RoKSYmKGUuY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpLGUucHJldmlvdXNOb2RlPVpQKTtsZXQgYT1uO2NvbnN0IHI9ZS5pbnZva2VRdWVyeSh0LnNlbGVjdG9yLHQub3JpZ2luYWxTZWxlY3Rvcix0LmxpbWl0LHQuaW5jbHVkZVNlbGYsISFvLm9wdGlvbmFsLGUuZXJyb3JzKTtlLmN1cnJlbnRRdWVyeVRvdGFsPXIubGVuZ3RoO2xldCBzPW51bGw7ci5mb3JFYWNoKCgobixvKT0+e2UuY3VycmVudFF1ZXJ5SW5kZXg9bztjb25zdCByPWUuY3JlYXRlU3ViQ29udGV4dCh0Lm9wdGlvbnMsbik7aSYmci5kZWxheU5leHRTdGVwKGkpLG49PT1lLmVsZW1lbnQmJihzPXIuY3VycmVudFRpbWVsaW5lKSxrUCh0aGlzLHQuYW5pbWF0aW9uLHIpLHIuY3VycmVudFRpbWVsaW5lLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2E9TWF0aC5tYXgoYSxyLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSl9KSksZS5jdXJyZW50UXVlcnlJbmRleD0wLGUuY3VycmVudFF1ZXJ5VG90YWw9MCxlLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShhKSxzJiYoZS5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhzKSxlLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSksZS5wcmV2aW91c05vZGU9dH12aXNpdFN0YWdnZXIodCxlKXtjb25zdCBuPWUucGFyZW50Q29udGV4dCxvPWUuY3VycmVudFRpbWVsaW5lLGk9dC50aW1pbmdzLGE9TWF0aC5hYnMoaS5kdXJhdGlvbikscj1hKihlLmN1cnJlbnRRdWVyeVRvdGFsLTEpO2xldCBzPWEqZS5jdXJyZW50UXVlcnlJbmRleDtzd2l0Y2goaS5kdXJhdGlvbjwwPyJyZXZlcnNlIjppLmVhc2luZyl7Y2FzZSJyZXZlcnNlIjpzPXItczticmVhaztjYXNlImZ1bGwiOnM9bi5jdXJyZW50U3RhZ2dlclRpbWV9Y29uc3QgbD1lLmN1cnJlbnRUaW1lbGluZTtzJiZsLmRlbGF5TmV4dFN0ZXAocyk7Y29uc3QgYz1sLmN1cnJlbnRUaW1lO2tQKHRoaXMsdC5hbmltYXRpb24sZSksZS5wcmV2aW91c05vZGU9dCxuLmN1cnJlbnRTdGFnZ2VyVGltZT1vLmN1cnJlbnRUaW1lLWMrKG8uc3RhcnRUaW1lLW4uY3VycmVudFRpbWVsaW5lLnN0YXJ0VGltZSl9fWNvbnN0IFpQPXt9O2NsYXNzIFhQe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7dGhpcy5fZHJpdmVyPXQsdGhpcy5lbGVtZW50PWUsdGhpcy5zdWJJbnN0cnVjdGlvbnM9bix0aGlzLl9lbnRlckNsYXNzTmFtZT1vLHRoaXMuX2xlYXZlQ2xhc3NOYW1lPWksdGhpcy5lcnJvcnM9YSx0aGlzLnRpbWVsaW5lcz1yLHRoaXMucGFyZW50Q29udGV4dD1udWxsLHRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsdGhpcy5wcmV2aW91c05vZGU9WlAsdGhpcy5zdWJDb250ZXh0Q291bnQ9MCx0aGlzLm9wdGlvbnM9e30sdGhpcy5jdXJyZW50UXVlcnlJbmRleD0wLHRoaXMuY3VycmVudFF1ZXJ5VG90YWw9MCx0aGlzLmN1cnJlbnRTdGFnZ2VyVGltZT0wLHRoaXMuY3VycmVudFRpbWVsaW5lPXN8fG5ldyBLUCh0aGlzLl9kcml2ZXIsZSwwKSxyLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtc311cGRhdGVPcHRpb25zKHQsZSl7aWYoIXQpcmV0dXJuO2NvbnN0IG49dDtsZXQgbz10aGlzLm9wdGlvbnM7bnVsbCE9bi5kdXJhdGlvbiYmKG8uZHVyYXRpb249Y1Aobi5kdXJhdGlvbikpLG51bGwhPW4uZGVsYXkmJihvLmRlbGF5PWNQKG4uZGVsYXkpKTtjb25zdCBpPW4ucGFyYW1zO2lmKGkpe2xldCB0PW8ucGFyYW1zO3R8fCh0PXRoaXMub3B0aW9ucy5wYXJhbXM9e30pLE9iamVjdC5rZXlzKGkpLmZvckVhY2goKG49PntlJiZ0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1NUChpW25dLHQsdGhpcy5lcnJvcnMpKX0pKX19X2NvcHlPcHRpb25zKCl7Y29uc3QgdD17fTtpZih0aGlzLm9wdGlvbnMpe2NvbnN0IGU9dGhpcy5vcHRpb25zLnBhcmFtcztpZihlKXtjb25zdCBuPXQucGFyYW1zPXt9O09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9PntuW3RdPWVbdF19KSl9fXJldHVybiB0fWNyZWF0ZVN1YkNvbnRleHQodD1udWxsLGUsbil7Y29uc3Qgbz1lfHx0aGlzLmVsZW1lbnQsaT1uZXcgWFAodGhpcy5fZHJpdmVyLG8sdGhpcy5zdWJJbnN0cnVjdGlvbnMsdGhpcy5fZW50ZXJDbGFzc05hbWUsdGhpcy5fbGVhdmVDbGFzc05hbWUsdGhpcy5lcnJvcnMsdGhpcy50aW1lbGluZXMsdGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayhvLG58fDApKTtyZXR1cm4gaS5wcmV2aW91c05vZGU9dGhpcy5wcmV2aW91c05vZGUsaS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9dGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3MsaS5vcHRpb25zPXRoaXMuX2NvcHlPcHRpb25zKCksaS51cGRhdGVPcHRpb25zKHQpLGkuY3VycmVudFF1ZXJ5SW5kZXg9dGhpcy5jdXJyZW50UXVlcnlJbmRleCxpLmN1cnJlbnRRdWVyeVRvdGFsPXRoaXMuY3VycmVudFF1ZXJ5VG90YWwsaS5wYXJlbnRDb250ZXh0PXRoaXMsdGhpcy5zdWJDb250ZXh0Q291bnQrKyxpfXRyYW5zZm9ybUludG9OZXdUaW1lbGluZSh0KXtyZXR1cm4gdGhpcy5wcmV2aW91c05vZGU9WlAsdGhpcy5jdXJyZW50VGltZWxpbmU9dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayh0aGlzLmVsZW1lbnQsdCksdGhpcy50aW1lbGluZXMucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSksdGhpcy5jdXJyZW50VGltZWxpbmV9YXBwZW5kSW5zdHJ1Y3Rpb25Ub1RpbWVsaW5lKHQsZSxuKXtjb25zdCBvPXtkdXJhdGlvbjpudWxsIT1lP2U6dC5kdXJhdGlvbixkZWxheTp0aGlzLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSsobnVsbCE9bj9uOjApK3QuZGVsYXksZWFzaW5nOiIifSxpPW5ldyBKUCh0aGlzLl9kcml2ZXIsdC5lbGVtZW50LHQua2V5ZnJhbWVzLHQucHJlU3R5bGVQcm9wcyx0LnBvc3RTdHlsZVByb3BzLG8sdC5zdHJldGNoU3RhcnRpbmdLZXlmcmFtZSk7cmV0dXJuIHRoaXMudGltZWxpbmVzLnB1c2goaSksb31pbmNyZW1lbnRUaW1lKHQpe3RoaXMuY3VycmVudFRpbWVsaW5lLmZvcndhcmRUaW1lKHRoaXMuY3VycmVudFRpbWVsaW5lLmR1cmF0aW9uK3QpfWRlbGF5TmV4dFN0ZXAodCl7dD4wJiZ0aGlzLmN1cnJlbnRUaW1lbGluZS5kZWxheU5leHRTdGVwKHQpfWludm9rZVF1ZXJ5KHQsZSxuLG8saSxhKXtsZXQgcj1bXTtpZihvJiZyLnB1c2godGhpcy5lbGVtZW50KSx0Lmxlbmd0aD4wKXt0PSh0PXQucmVwbGFjZShXUCwiLiIrdGhpcy5fZW50ZXJDbGFzc05hbWUpKS5yZXBsYWNlKEdQLCIuIit0aGlzLl9sZWF2ZUNsYXNzTmFtZSk7bGV0IGU9dGhpcy5fZHJpdmVyLnF1ZXJ5KHRoaXMuZWxlbWVudCx0LDEhPW4pOzAhPT1uJiYoZT1uPDA/ZS5zbGljZShlLmxlbmd0aCtuLGUubGVuZ3RoKTplLnNsaWNlKDAsbikpLHIucHVzaCguLi5lKX1yZXR1cm4gaXx8MCE9ci5sZW5ndGh8fGEucHVzaChgXGBxdWVyeSgiJHtlfSIpXGAgcmV0dXJuZWQgemVybyBlbGVtZW50cy4gKFVzZSBcYHF1ZXJ5KCIke2V9IiwgeyBvcHRpb25hbDogdHJ1ZSB9KVxgIGlmIHlvdSB3aXNoIHRvIGFsbG93IHRoaXMuKWApLHJ9fWNsYXNzIEtQe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2RyaXZlcj10LHRoaXMuZWxlbWVudD1lLHRoaXMuc3RhcnRUaW1lPW4sdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwPW8sdGhpcy5kdXJhdGlvbj0wLHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWU9e30sdGhpcy5fY3VycmVudEtleWZyYW1lPXt9LHRoaXMuX2tleWZyYW1lcz1uZXcgTWFwLHRoaXMuX3N0eWxlU3VtbWFyeT17fSx0aGlzLl9wZW5kaW5nU3R5bGVzPXt9LHRoaXMuX2JhY2tGaWxsPXt9LHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT1udWxsLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cHx8KHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1uZXcgTWFwKSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzPU9iamVjdC5jcmVhdGUodGhpcy5fYmFja0ZpbGwse30pLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzPXRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cC5nZXQoZSksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXN8fCh0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cC5zZXQoZSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKSksdGhpcy5fbG9hZEtleWZyYW1lKCl9Y29udGFpbnNBbmltYXRpb24oKXtzd2l0Y2godGhpcy5fa2V5ZnJhbWVzLnNpemUpe2Nhc2UgMDpyZXR1cm4hMTtjYXNlIDE6cmV0dXJuIHRoaXMuZ2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpLmxlbmd0aD4wO2RlZmF1bHQ6cmV0dXJuITB9fWdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fY3VycmVudEtleWZyYW1lKX1nZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5zdGFydFRpbWUrdGhpcy5kdXJhdGlvbn1kZWxheU5leHRTdGVwKHQpe2NvbnN0IGU9MT09dGhpcy5fa2V5ZnJhbWVzLnNpemUmJk9iamVjdC5rZXlzKHRoaXMuX3BlbmRpbmdTdHlsZXMpLmxlbmd0aDt0aGlzLmR1cmF0aW9ufHxlPyh0aGlzLmZvcndhcmRUaW1lKHRoaXMuY3VycmVudFRpbWUrdCksZSYmdGhpcy5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk6dGhpcy5zdGFydFRpbWUrPXR9Zm9yayh0LGUpe3JldHVybiB0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLG5ldyBLUCh0aGlzLl9kcml2ZXIsdCxlfHx0aGlzLmN1cnJlbnRUaW1lLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cCl9X2xvYWRLZXlmcmFtZSgpe3RoaXMuX2N1cnJlbnRLZXlmcmFtZSYmKHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWU9dGhpcy5fY3VycmVudEtleWZyYW1lKSx0aGlzLl9jdXJyZW50S2V5ZnJhbWU9dGhpcy5fa2V5ZnJhbWVzLmdldCh0aGlzLmR1cmF0aW9uKSx0aGlzLl9jdXJyZW50S2V5ZnJhbWV8fCh0aGlzLl9jdXJyZW50S2V5ZnJhbWU9T2JqZWN0LmNyZWF0ZSh0aGlzLl9iYWNrRmlsbCx7fSksdGhpcy5fa2V5ZnJhbWVzLnNldCh0aGlzLmR1cmF0aW9uLHRoaXMuX2N1cnJlbnRLZXlmcmFtZSkpfWZvcndhcmRGcmFtZSgpe3RoaXMuZHVyYXRpb24rPTEsdGhpcy5fbG9hZEtleWZyYW1lKCl9Zm9yd2FyZFRpbWUodCl7dGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSx0aGlzLmR1cmF0aW9uPXQsdGhpcy5fbG9hZEtleWZyYW1lKCl9X3VwZGF0ZVN0eWxlKHQsZSl7dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlc1t0XT1lLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzW3RdPWUsdGhpcy5fc3R5bGVTdW1tYXJ5W3RdPXt0aW1lOnRoaXMuY3VycmVudFRpbWUsdmFsdWU6ZX19YWxsb3dPbmx5VGltZWxpbmVTdHlsZXMoKXtyZXR1cm4gdGhpcy5fY3VycmVudEVtcHR5U3RlcEtleWZyYW1lIT09dGhpcy5fY3VycmVudEtleWZyYW1lfWFwcGx5RW1wdHlTdGVwKHQpe3QmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lLmVhc2luZz10KSxPYmplY3Qua2V5cyh0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcykuZm9yRWFjaCgodD0+e3RoaXMuX2JhY2tGaWxsW3RdPXRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzW3RdfHx2Tyx0aGlzLl9jdXJyZW50S2V5ZnJhbWVbdF09dk99KSksdGhpcy5fY3VycmVudEVtcHR5U3RlcEtleWZyYW1lPXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1zZXRTdHlsZXModCxlLG4sbyl7ZSYmKHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWUuZWFzaW5nPWUpO2NvbnN0IGk9byYmby5wYXJhbXN8fHt9LGE9KGZ1bmN0aW9uIHIodCxlKXtjb25zdCBuPXt9O2xldCBvO3JldHVybiB0LmZvckVhY2goKHQ9PnsiKiI9PT10PyhvPW98fE9iamVjdC5rZXlzKGUpLG8uZm9yRWFjaCgodD0+e25bdF09dk99KSkpOnVQKHQsITEsbil9KSksbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzKTtPYmplY3Qua2V5cyhhKS5mb3JFYWNoKCh0PT57Y29uc3QgZT1NUChhW3RdLGksbik7dGhpcy5fcGVuZGluZ1N0eWxlc1t0XT1lLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLl9iYWNrRmlsbFt0XT10aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcy5oYXNPd25Qcm9wZXJ0eSh0KT90aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc1t0XTp2TyksdGhpcy5fdXBkYXRlU3R5bGUodCxlKX0pKX1hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKXtjb25zdCB0PXRoaXMuX3BlbmRpbmdTdHlsZXMsZT1PYmplY3Qua2V5cyh0KTswIT1lLmxlbmd0aCYmKHRoaXMuX3BlbmRpbmdTdHlsZXM9e30sZS5mb3JFYWNoKChlPT57dGhpcy5fY3VycmVudEtleWZyYW1lW2VdPXRbZV19KSksT2JqZWN0LmtleXModGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykuZm9yRWFjaCgodD0+e3RoaXMuX2N1cnJlbnRLZXlmcmFtZS5oYXNPd25Qcm9wZXJ0eSh0KXx8KHRoaXMuX2N1cnJlbnRLZXlmcmFtZVt0XT10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzW3RdKX0pKSl9c25hcHNob3RDdXJyZW50U3R5bGVzKCl7T2JqZWN0LmtleXModGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykuZm9yRWFjaCgodD0+e2NvbnN0IGU9dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlc1t0XTt0aGlzLl9wZW5kaW5nU3R5bGVzW3RdPWUsdGhpcy5fdXBkYXRlU3R5bGUodCxlKX0pKX1nZXRGaW5hbEtleWZyYW1lKCl7cmV0dXJuIHRoaXMuX2tleWZyYW1lcy5nZXQodGhpcy5kdXJhdGlvbil9Z2V0IHByb3BlcnRpZXMoKXtjb25zdCB0PVtdO2ZvcihsZXQgZSBpbiB0aGlzLl9jdXJyZW50S2V5ZnJhbWUpdC5wdXNoKGUpO3JldHVybiB0fW1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXModCl7T2JqZWN0LmtleXModC5fc3R5bGVTdW1tYXJ5KS5mb3JFYWNoKChlPT57Y29uc3Qgbj10aGlzLl9zdHlsZVN1bW1hcnlbZV0sbz10Ll9zdHlsZVN1bW1hcnlbZV07KCFufHxvLnRpbWU+bi50aW1lKSYmdGhpcy5fdXBkYXRlU3R5bGUoZSxvLnZhbHVlKX0pKX1idWlsZEtleWZyYW1lcygpe3RoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCk7Y29uc3QgdD1uZXcgU2V0LGU9bmV3IFNldCxuPTE9PT10aGlzLl9rZXlmcmFtZXMuc2l6ZSYmMD09PXRoaXMuZHVyYXRpb247bGV0IG89W107dGhpcy5fa2V5ZnJhbWVzLmZvckVhY2goKChpLGEpPT57Y29uc3Qgcj11UChpLCEwKTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChuPT57Y29uc3Qgbz1yW25dOyIhIj09bz90LmFkZChuKTpvPT12TyYmZS5hZGQobil9KSksbnx8KHIub2Zmc2V0PWEvdGhpcy5kdXJhdGlvbiksby5wdXNoKHIpfSkpO2NvbnN0IGk9dC5zaXplP3ZQKHQudmFsdWVzKCkpOltdLGE9ZS5zaXplP3ZQKGUudmFsdWVzKCkpOltdO2lmKG4pe2NvbnN0IHQ9b1swXSxlPW1QKHQpO3Qub2Zmc2V0PTAsZS5vZmZzZXQ9MSxvPVt0LGVdfXJldHVybiBVUCh0aGlzLmVsZW1lbnQsbyxpLGEsdGhpcy5kdXJhdGlvbix0aGlzLnN0YXJ0VGltZSx0aGlzLmVhc2luZywhMSl9fWNsYXNzIEpQIGV4dGVuZHMgS1B7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscj0hMSl7c3VwZXIodCxlLGEuZGVsYXkpLHRoaXMua2V5ZnJhbWVzPW4sdGhpcy5wcmVTdHlsZVByb3BzPW8sdGhpcy5wb3N0U3R5bGVQcm9wcz1pLHRoaXMuX3N0cmV0Y2hTdGFydGluZ0tleWZyYW1lPXIsdGhpcy50aW1pbmdzPXtkdXJhdGlvbjphLmR1cmF0aW9uLGRlbGF5OmEuZGVsYXksZWFzaW5nOmEuZWFzaW5nfX1jb250YWluc0FuaW1hdGlvbigpe3JldHVybiB0aGlzLmtleWZyYW1lcy5sZW5ndGg+MX1idWlsZEtleWZyYW1lcygpe2xldCB0PXRoaXMua2V5ZnJhbWVzLHtkZWxheTplLGR1cmF0aW9uOm4sZWFzaW5nOm99PXRoaXMudGltaW5ncztpZih0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFtZSYmZSl7Y29uc3QgaT1bXSxhPW4rZSxyPWUvYSxzPXVQKHRbMF0sITEpO3Mub2Zmc2V0PTAsaS5wdXNoKHMpO2NvbnN0IGw9dVAodFswXSwhMSk7bC5vZmZzZXQ9UVAociksaS5wdXNoKGwpO2NvbnN0IGM9dC5sZW5ndGgtMTtmb3IobGV0IG89MTtvPD1jO28rKyl7bGV0IHI9dVAodFtvXSwhMSk7ci5vZmZzZXQ9UVAoKGUrci5vZmZzZXQqbikvYSksaS5wdXNoKHIpfW49YSxlPTAsbz0iIix0PWl9cmV0dXJuIFVQKHRoaXMuZWxlbWVudCx0LHRoaXMucHJlU3R5bGVQcm9wcyx0aGlzLnBvc3RTdHlsZVByb3BzLG4sZSxvLCEwKX19ZnVuY3Rpb24gUVAodCxlPTMpe2NvbnN0IG49TWF0aC5wb3coMTAsZS0xKTtyZXR1cm4gTWF0aC5yb3VuZCh0Km4pL259Y2xhc3MgJFB7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB0dyBleHRlbmRzICRQe25vcm1hbGl6ZVByb3BlcnR5TmFtZSh0LGUpe3JldHVybiBPUCh0KX1ub3JtYWxpemVTdHlsZVZhbHVlKHQsZSxuLG8pe2xldCBpPSIiO2NvbnN0IGE9bi50b1N0cmluZygpLnRyaW0oKTtpZihld1tlXSYmMCE9PW4mJiIwIiE9PW4paWYoIm51bWJlciI9PXR5cGVvZiBuKWk9InB4IjtlbHNle2NvbnN0IGU9bi5tYXRjaCgvXlsrLV0/W1xkXC5dKyhbYS16XSopJC8pO2UmJjA9PWVbMV0ubGVuZ3RoJiZvLnB1c2goYFBsZWFzZSBwcm92aWRlIGEgQ1NTIHVuaXQgdmFsdWUgZm9yICR7dH06JHtufWApfXJldHVybiBhK2l9fWNvbnN0IGV3PShmdW5jdGlvbiBudyh0KXtjb25zdCBlPXt9O3JldHVybiB0LmZvckVhY2goKHQ9PmVbdF09ITApKSxlfSkoIndpZHRoLGhlaWdodCxtaW5XaWR0aCxtaW5IZWlnaHQsbWF4V2lkdGgsbWF4SGVpZ2h0LGxlZnQsdG9wLGJvdHRvbSxyaWdodCxmb250U2l6ZSxvdXRsaW5lV2lkdGgsb3V0bGluZU9mZnNldCxwYWRkaW5nVG9wLHBhZGRpbmdMZWZ0LHBhZGRpbmdCb3R0b20scGFkZGluZ1JpZ2h0LG1hcmdpblRvcCxtYXJnaW5MZWZ0LG1hcmdpbkJvdHRvbSxtYXJnaW5SaWdodCxib3JkZXJSYWRpdXMsYm9yZGVyV2lkdGgsYm9yZGVyVG9wV2lkdGgsYm9yZGVyTGVmdFdpZHRoLGJvcmRlclJpZ2h0V2lkdGgsYm9yZGVyQm90dG9tV2lkdGgsdGV4dEluZGVudCxwZXJzcGVjdGl2ZSIuc3BsaXQoIiwiKSk7ZnVuY3Rpb24gb3codCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7cmV0dXJue3R5cGU6MCxlbGVtZW50OnQsdHJpZ2dlck5hbWU6ZSxpc1JlbW92YWxUcmFuc2l0aW9uOmksZnJvbVN0YXRlOm4sZnJvbVN0eWxlczphLHRvU3RhdGU6byx0b1N0eWxlczpyLHRpbWVsaW5lczpzLHF1ZXJpZWRFbGVtZW50czpsLHByZVN0eWxlUHJvcHM6Yyxwb3N0U3R5bGVQcm9wczpkLHRvdGFsVGltZTpwLGVycm9yczptfX1jb25zdCBpdz17fTtjbGFzcyBhd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fdHJpZ2dlck5hbWU9dCx0aGlzLmFzdD1lLHRoaXMuX3N0YXRlU3R5bGVzPW59bWF0Y2godCxlLG4sbyl7cmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4sbyxhKXtyZXR1cm4gdC5zb21lKCh0PT50KGUsbixvLGEpKSl9KSh0aGlzLmFzdC5tYXRjaGVycyx0LGUsbixvKX1idWlsZFN0eWxlcyh0LGUsbil7Y29uc3Qgbz10aGlzLl9zdGF0ZVN0eWxlc1siKiJdLGk9dGhpcy5fc3RhdGVTdHlsZXNbdF0sYT1vP28uYnVpbGRTdHlsZXMoZSxuKTp7fTtyZXR1cm4gaT9pLmJ1aWxkU3R5bGVzKGUsbik6YX1idWlsZCh0LGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPVtdLHA9dGhpcy5hc3Qub3B0aW9ucyYmdGhpcy5hc3Qub3B0aW9ucy5wYXJhbXN8fGl3LG09dGhpcy5idWlsZFN0eWxlcyhuLHImJnIucGFyYW1zfHxpdyxkKSx1PXMmJnMucGFyYW1zfHxpdyxmPXRoaXMuYnVpbGRTdHlsZXMobyx1LGQpLGc9bmV3IFNldCxoPW5ldyBNYXAsYj1uZXcgTWFwLHk9InZvaWQiPT09byxfPXtwYXJhbXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHApLHUpfSxDPWM/W106WVAodCxlLHRoaXMuYXN0LmFuaW1hdGlvbixpLGEsbSxmLF8sbCxkKTtsZXQgTT0wO2lmKEMuZm9yRWFjaCgodD0+e009TWF0aC5tYXgodC5kdXJhdGlvbit0LmRlbGF5LE0pfSkpLGQubGVuZ3RoKXJldHVybiBvdyhlLHRoaXMuX3RyaWdnZXJOYW1lLG4sbyx5LG0sZixbXSxbXSxoLGIsTSxkKTtDLmZvckVhY2goKHQ9Pntjb25zdCBuPXQuZWxlbWVudCxvPVVPKGgsbix7fSk7dC5wcmVTdHlsZVByb3BzLmZvckVhY2goKHQ9Pm9bdF09ITApKTtjb25zdCBpPVVPKGIsbix7fSk7dC5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKCh0PT5pW3RdPSEwKSksbiE9PWUmJmcuYWRkKG4pfSkpO2NvbnN0IHY9dlAoZy52YWx1ZXMoKSk7cmV0dXJuIG93KGUsdGhpcy5fdHJpZ2dlck5hbWUsbixvLHksbSxmLEMsdixoLGIsTSl9fWNsYXNzIHJ3e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnN0eWxlcz10LHRoaXMuZGVmYXVsdFBhcmFtcz1lLHRoaXMubm9ybWFsaXplcj1ufWJ1aWxkU3R5bGVzKHQsZSl7Y29uc3Qgbj17fSxvPW1QKHRoaXMuZGVmYXVsdFBhcmFtcyk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pntjb25zdCBuPXRbZV07bnVsbCE9biYmKG9bZV09bil9KSksdGhpcy5zdHlsZXMuc3R5bGVzLmZvckVhY2goKHQ9PntpZigic3RyaW5nIiE9dHlwZW9mIHQpe2NvbnN0IGk9dDtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKCh0PT57bGV0IGE9aVt0XTthLmxlbmd0aD4xJiYoYT1NUChhLG8sZSkpO2NvbnN0IHI9dGhpcy5ub3JtYWxpemVyLm5vcm1hbGl6ZVByb3BlcnR5TmFtZSh0LGUpO2E9dGhpcy5ub3JtYWxpemVyLm5vcm1hbGl6ZVN0eWxlVmFsdWUodCxyLGEsZSksbltyXT1hfSkpfX0pKSxufX1jbGFzcyBzd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5uYW1lPXQsdGhpcy5hc3Q9ZSx0aGlzLl9ub3JtYWxpemVyPW4sdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzPVtdLHRoaXMuc3RhdGVzPXt9LGUuc3RhdGVzLmZvckVhY2goKHQ9Pnt0aGlzLnN0YXRlc1t0Lm5hbWVdPW5ldyBydyh0LnN0eWxlLHQub3B0aW9ucyYmdC5vcHRpb25zLnBhcmFtc3x8e30sbil9KSksbHcodGhpcy5zdGF0ZXMsInRydWUiLCIxIiksbHcodGhpcy5zdGF0ZXMsImZhbHNlIiwiMCIpLGUudHJhbnNpdGlvbnMuZm9yRWFjaCgoZT0+e3RoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5wdXNoKG5ldyBhdyh0LGUsdGhpcy5zdGF0ZXMpKX0pKSx0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbj0oZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIG5ldyBhdyh0LHt0eXBlOjEsYW5pbWF0aW9uOnt0eXBlOjIsc3RlcHM6W10sb3B0aW9uczpudWxsfSxtYXRjaGVyczpbKHQsZSk9PiEwXSxvcHRpb25zOm51bGwscXVlcnlDb3VudDowLGRlcENvdW50OjB9LGUpfSkodCx0aGlzLnN0YXRlcyl9Z2V0IGNvbnRhaW5zUXVlcmllcygpe3JldHVybiB0aGlzLmFzdC5xdWVyeUNvdW50PjB9bWF0Y2hUcmFuc2l0aW9uKHQsZSxuLG8pe3JldHVybiB0aGlzLnRyYW5zaXRpb25GYWN0b3JpZXMuZmluZCgoaT0+aS5tYXRjaCh0LGUsbixvKSkpfHxudWxsfW1hdGNoU3R5bGVzKHQsZSxuKXtyZXR1cm4gdGhpcy5mYWxsYmFja1RyYW5zaXRpb24uYnVpbGRTdHlsZXModCxlLG4pfX1mdW5jdGlvbiBsdyh0LGUsbil7dC5oYXNPd25Qcm9wZXJ0eShlKT90Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT10W2VdKTp0Lmhhc093blByb3BlcnR5KG4pJiYodFtlXT10W25dKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgY3c9bmV3IGpQO2NsYXNzIGR3e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmJvZHlOb2RlPXQsdGhpcy5fZHJpdmVyPWUsdGhpcy5fbm9ybWFsaXplcj1uLHRoaXMuX2FuaW1hdGlvbnM9e30sdGhpcy5fcGxheWVyc0J5SWQ9e30sdGhpcy5wbGF5ZXJzPVtdfXJlZ2lzdGVyKHQsZSl7Y29uc3Qgbj1bXSxvPUlQKHRoaXMuX2RyaXZlcixlLG4pO2lmKG4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGJ1aWxkIHRoZSBhbmltYXRpb24gZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiAke24uam9pbigiXG4iKX1gKTt0aGlzLl9hbmltYXRpb25zW3RdPW99X2J1aWxkUGxheWVyKHQsZSxuKXtjb25zdCBvPXQuZWxlbWVudCxpPUZPKDAsdGhpcy5fbm9ybWFsaXplciwwLHQua2V5ZnJhbWVzLGUsbik7cmV0dXJuIHRoaXMuX2RyaXZlci5hbmltYXRlKG8saSx0LmR1cmF0aW9uLHQuZGVsYXksdC5lYXNpbmcsW10sITApfWNyZWF0ZSh0LGUsbj17fSl7Y29uc3Qgbz1bXSxpPXRoaXMuX2FuaW1hdGlvbnNbdF07bGV0IGE7Y29uc3Qgcj1uZXcgTWFwO2lmKGk/KGE9WVAodGhpcy5fZHJpdmVyLGUsaSxvUCxpUCx7fSx7fSxuLGN3LG8pLGEuZm9yRWFjaCgodD0+e2NvbnN0IGU9VU8ocix0LmVsZW1lbnQse30pO3QucG9zdFN0eWxlUHJvcHMuZm9yRWFjaCgodD0+ZVt0XT1udWxsKSl9KSkpOihvLnB1c2goIlRoZSByZXF1ZXN0ZWQgYW5pbWF0aW9uIGRvZXNuJ3QgZXhpc3Qgb3IgaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQiKSxhPVtdKSxvLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgdGhlIGFuaW1hdGlvbiBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6ICR7by5qb2luKCJcbiIpfWApO3IuZm9yRWFjaCgoKHQsZSk9PntPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57dFtuXT10aGlzLl9kcml2ZXIuY29tcHV0ZVN0eWxlKGUsbix2Tyl9KSl9KSk7Y29uc3Qgcz1ITyhhLm1hcCgodD0+e2NvbnN0IGU9ci5nZXQodC5lbGVtZW50KTtyZXR1cm4gdGhpcy5fYnVpbGRQbGF5ZXIodCx7fSxlKX0pKSk7cmV0dXJuIHRoaXMuX3BsYXllcnNCeUlkW3RdPXMscy5vbkRlc3Ryb3koKCgpPT50aGlzLmRlc3Ryb3kodCkpKSx0aGlzLnBsYXllcnMucHVzaChzKSxzfWRlc3Ryb3kodCl7Y29uc3QgZT10aGlzLl9nZXRQbGF5ZXIodCk7ZS5kZXN0cm95KCksZGVsZXRlIHRoaXMuX3BsYXllcnNCeUlkW3RdO2NvbnN0IG49dGhpcy5wbGF5ZXJzLmluZGV4T2YoZSk7bj49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZShuLDEpfV9nZXRQbGF5ZXIodCl7Y29uc3QgZT10aGlzLl9wbGF5ZXJzQnlJZFt0XTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBmaW5kIHRoZSB0aW1lbGluZSBwbGF5ZXIgcmVmZXJlbmNlZCBieSAke3R9YCk7cmV0dXJuIGV9bGlzdGVuKHQsZSxuLG8pe2NvbnN0IGk9Vk8oZSwiIiwiIiwiIik7cmV0dXJuIExPKHRoaXMuX2dldFBsYXllcih0KSxuLGksbyksKCk9Pnt9fWNvbW1hbmQodCxlLG4sbyl7aWYoInJlZ2lzdGVyIj09bilyZXR1cm4gdm9pZCB0aGlzLnJlZ2lzdGVyKHQsb1swXSk7aWYoImNyZWF0ZSI9PW4pe3JldHVybiB2b2lkIHRoaXMuY3JlYXRlKHQsZSxvWzBdfHx7fSl9Y29uc3QgaT10aGlzLl9nZXRQbGF5ZXIodCk7c3dpdGNoKG4pe2Nhc2UicGxheSI6aS5wbGF5KCk7YnJlYWs7Y2FzZSJwYXVzZSI6aS5wYXVzZSgpO2JyZWFrO2Nhc2UicmVzZXQiOmkucmVzZXQoKTticmVhaztjYXNlInJlc3RhcnQiOmkucmVzdGFydCgpO2JyZWFrO2Nhc2UiZmluaXNoIjppLmZpbmlzaCgpO2JyZWFrO2Nhc2UiaW5pdCI6aS5pbml0KCk7YnJlYWs7Y2FzZSJzZXRQb3NpdGlvbiI6aS5zZXRQb3NpdGlvbihwYXJzZUZsb2F0KG9bMF0pKTticmVhaztjYXNlImRlc3Ryb3kiOnRoaXMuZGVzdHJveSh0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBwdz0ibmctYW5pbWF0ZS1xdWV1ZWQiLG13PSJuZy1hbmltYXRlLWRpc2FibGVkIix1dz0iLm5nLWFuaW1hdGUtZGlzYWJsZWQiLGZ3PVtdLGd3PXtuYW1lc3BhY2VJZDoiIixzZXRGb3JSZW1vdmFsOiExLHNldEZvck1vdmU6ITEsaGFzQW5pbWF0aW9uOiExLHJlbW92ZWRCZWZvcmVRdWVyaWVkOiExfSxodz17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yTW92ZTohMSxzZXRGb3JSZW1vdmFsOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMH07Y2xhc3MgYnd7Y29uc3RydWN0b3IodCxlPSIiKXt0aGlzLm5hbWVzcGFjZUlkPWU7Y29uc3Qgbj10JiZ0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpO2lmKHRoaXMudmFsdWU9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGwhPXQ/dDpudWxsfSkobj90LnZhbHVlOnQpLG4pe2NvbnN0IGU9bVAodCk7ZGVsZXRlIGUudmFsdWUsdGhpcy5vcHRpb25zPWV9ZWxzZSB0aGlzLm9wdGlvbnM9e307dGhpcy5vcHRpb25zLnBhcmFtc3x8KHRoaXMub3B0aW9ucy5wYXJhbXM9e30pfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtc31hYnNvcmJPcHRpb25zKHQpe2NvbnN0IGU9dC5wYXJhbXM7aWYoZSl7Y29uc3QgdD10aGlzLm9wdGlvbnMucGFyYW1zO09iamVjdC5rZXlzKGUpLmZvckVhY2goKG49PntudWxsPT10W25dJiYodFtuXT1lW25dKX0pKX19fWNvbnN0IHl3PSJ2b2lkIixfdz1uZXcgYncoeXcpO2NsYXNzIEN3e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5ob3N0RWxlbWVudD1lLHRoaXMuX2VuZ2luZT1uLHRoaXMucGxheWVycz1bXSx0aGlzLl90cmlnZ2Vycz17fSx0aGlzLl9xdWV1ZT1bXSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzPW5ldyBNYXAsdGhpcy5faG9zdENsYXNzTmFtZT0ibmctdG5zLSIrdCxrdyhlLHRoaXMuX2hvc3RDbGFzc05hbWUpfWxpc3Rlbih0LGUsbixvKXtpZighdGhpcy5fdHJpZ2dlcnMuaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbGlzdGVuIG9uIHRoZSBhbmltYXRpb24gdHJpZ2dlciBldmVudCAiJHtufSIgYmVjYXVzZSB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGRvZXNuJ3QgZXhpc3QhYCk7aWYobnVsbD09bnx8MD09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbGlzdGVuIG9uIHRoZSBhbmltYXRpb24gdHJpZ2dlciAiJHtlfSIgYmVjYXVzZSB0aGUgcHJvdmlkZWQgZXZlbnQgaXMgdW5kZWZpbmVkIWApO2lmKCEoZnVuY3Rpb24gaSh0KXtyZXR1cm4ic3RhcnQiPT10fHwiZG9uZSI9PXR9KShuKSl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm92aWRlZCBhbmltYXRpb24gdHJpZ2dlciBldmVudCAiJHtufSIgZm9yIHRoZSBhbmltYXRpb24gdHJpZ2dlciAiJHtlfSIgaXMgbm90IHN1cHBvcnRlZCFgKTtjb25zdCBhPVVPKHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMsdCxbXSkscj17bmFtZTplLHBoYXNlOm4sY2FsbGJhY2s6b307YS5wdXNoKHIpO2NvbnN0IHM9VU8odGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudCx0LHt9KTtyZXR1cm4gcy5oYXNPd25Qcm9wZXJ0eShlKXx8KGt3KHQsYVApLGt3KHQsIm5nLXRyaWdnZXItIitlKSxzW2VdPV93KSwoKT0+e3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgoKT0+e2NvbnN0IHQ9YS5pbmRleE9mKHIpO3Q+PTAmJmEuc3BsaWNlKHQsMSksdGhpcy5fdHJpZ2dlcnNbZV18fGRlbGV0ZSBzW2VdfSkpfX1yZWdpc3Rlcih0LGUpe3JldHVybiF0aGlzLl90cmlnZ2Vyc1t0XSYmKHRoaXMuX3RyaWdnZXJzW3RdPWUsITApfV9nZXRUcmlnZ2VyKHQpe2NvbnN0IGU9dGhpcy5fdHJpZ2dlcnNbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgYW5pbWF0aW9uIHRyaWdnZXIgIiR7dH0iIGhhcyBub3QgYmVlbiByZWdpc3RlcmVkIWApO3JldHVybiBlfXRyaWdnZXIodCxlLG4sbz0hMCl7Y29uc3QgaT10aGlzLl9nZXRUcmlnZ2VyKGUpLGE9bmV3IHZ3KHRoaXMuaWQsZSx0KTtsZXQgcj10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtyfHwoa3codCxhUCksa3codCwibmctdHJpZ2dlci0iK2UpLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuc2V0KHQscj17fSkpO2xldCBzPXJbZV07Y29uc3QgbD1uZXcgYncobix0aGlzLmlkKTshKG4mJm4uaGFzT3duUHJvcGVydHkoInZhbHVlIikpJiZzJiZsLmFic29yYk9wdGlvbnMocy5vcHRpb25zKSxyW2VdPWwsc3x8KHM9X3cpO2lmKCEobC52YWx1ZT09PXl3KSYmcy52YWx1ZT09PWwudmFsdWUpe2lmKCEoZnVuY3Rpb24gZSh0LG4pe2NvbnN0IG89T2JqZWN0LmtleXModCksaT1PYmplY3Qua2V5cyhuKTtpZihvLmxlbmd0aCE9aS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2NvbnN0IGk9b1tlXTtpZighbi5oYXNPd25Qcm9wZXJ0eShpKXx8dFtpXSE9PW5baV0pcmV0dXJuITF9cmV0dXJuITB9KShzLnBhcmFtcyxsLnBhcmFtcykpe2NvbnN0IGU9W10sbj1pLm1hdGNoU3R5bGVzKHMudmFsdWUscy5wYXJhbXMsZSksbz1pLm1hdGNoU3R5bGVzKGwudmFsdWUsbC5wYXJhbXMsZSk7ZS5sZW5ndGg/dGhpcy5fZW5naW5lLnJlcG9ydEVycm9yKGUpOnRoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgoKT0+e2JQKHQsbiksaFAodCxvKX0pKX1yZXR1cm59Y29uc3QgYz1VTyh0aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudCx0LFtdKTtjLmZvckVhY2goKHQ9Pnt0Lm5hbWVzcGFjZUlkPT10aGlzLmlkJiZ0LnRyaWdnZXJOYW1lPT1lJiZ0LnF1ZXVlZCYmdC5kZXN0cm95KCl9KSk7bGV0IGQ9aS5tYXRjaFRyYW5zaXRpb24ocy52YWx1ZSxsLnZhbHVlLHQsbC5wYXJhbXMpLHA9ITE7aWYoIWQpe2lmKCFvKXJldHVybjtkPWkuZmFsbGJhY2tUcmFuc2l0aW9uLHA9ITB9cmV0dXJuIHRoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OnQsdHJpZ2dlck5hbWU6ZSx0cmFuc2l0aW9uOmQsZnJvbVN0YXRlOnMsdG9TdGF0ZTpsLHBsYXllcjphLGlzRmFsbGJhY2tUcmFuc2l0aW9uOnB9KSxwfHwoa3codCxwdyksYS5vblN0YXJ0KCgoKT0+e1N3KHQscHcpfSkpKSxhLm9uRG9uZSgoKCk9PntsZXQgZT10aGlzLnBsYXllcnMuaW5kZXhPZihhKTtlPj0wJiZ0aGlzLnBsYXllcnMuc3BsaWNlKGUsMSk7Y29uc3Qgbj10aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudC5nZXQodCk7aWYobil7bGV0IHQ9bi5pbmRleE9mKGEpO3Q+PTAmJm4uc3BsaWNlKHQsMSl9fSkpLHRoaXMucGxheWVycy5wdXNoKGEpLGMucHVzaChhKSxhfWRlcmVnaXN0ZXIodCl7ZGVsZXRlIHRoaXMuX3RyaWdnZXJzW3RdLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZm9yRWFjaCgoKGUsbik9PntkZWxldGUgZVt0XX0pKSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmZvckVhY2goKChlLG4pPT57dGhpcy5fZWxlbWVudExpc3RlbmVycy5zZXQobixlLmZpbHRlcigoZT0+ZS5uYW1lIT10KSkpfSkpfWNsZWFyRWxlbWVudENhY2hlKHQpe3RoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZGVsZXRlKHQpLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZGVsZXRlKHQpO2NvbnN0IGU9dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2UmJihlLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZGVsZXRlKHQpKX1fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModCxlKXtjb25zdCBuPXRoaXMuX2VuZ2luZS5kcml2ZXIucXVlcnkodCxyUCwhMCk7bi5mb3JFYWNoKCh0PT57aWYodC5fX25nX3JlbW92ZWQpcmV0dXJuO2NvbnN0IG49dGhpcy5fZW5naW5lLmZldGNoTmFtZXNwYWNlc0J5RWxlbWVudCh0KTtuLnNpemU/bi5mb3JFYWNoKChuPT5uLnRyaWdnZXJMZWF2ZUFuaW1hdGlvbih0LGUsITEsITApKSk6dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh0KX0pKSx0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgoKT0+bi5mb3JFYWNoKCh0PT50aGlzLmNsZWFyRWxlbWVudENhY2hlKHQpKSkpKX10cmlnZ2VyTGVhdmVBbmltYXRpb24odCxlLG4sbyl7Y29uc3QgaT10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihpKXtjb25zdCBhPVtdO2lmKE9iamVjdC5rZXlzKGkpLmZvckVhY2goKGU9PntpZih0aGlzLl90cmlnZ2Vyc1tlXSl7Y29uc3Qgbj10aGlzLnRyaWdnZXIodCxlLHl3LG8pO24mJmEucHVzaChuKX19KSksYS5sZW5ndGgpcmV0dXJuIHRoaXMuX2VuZ2luZS5tYXJrRWxlbWVudEFzUmVtb3ZlZCh0aGlzLmlkLHQsITAsZSksbiYmSE8oYSkub25Eb25lKCgoKT0+dGhpcy5fZW5naW5lLnByb2Nlc3NMZWF2ZU5vZGUodCkpKSwhMH1yZXR1cm4hMX1wcmVwYXJlTGVhdmVBbmltYXRpb25MaXN0ZW5lcnModCl7Y29uc3QgZT10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldCh0KSxuPXRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZ2V0KHQpO2lmKGUmJm4pe2NvbnN0IG89bmV3IFNldDtlLmZvckVhY2goKGU9Pntjb25zdCBpPWUubmFtZTtpZihvLmhhcyhpKSlyZXR1cm47by5hZGQoaSk7Y29uc3QgYT10aGlzLl90cmlnZ2Vyc1tpXS5mYWxsYmFja1RyYW5zaXRpb24scj1uW2ldfHxfdyxzPW5ldyBidyh5dyksbD1uZXcgdncodGhpcy5pZCxpLHQpO3RoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OnQsdHJpZ2dlck5hbWU6aSx0cmFuc2l0aW9uOmEsZnJvbVN0YXRlOnIsdG9TdGF0ZTpzLHBsYXllcjpsLGlzRmFsbGJhY2tUcmFuc2l0aW9uOiEwfSl9KSl9fXJlbW92ZU5vZGUodCxlKXtjb25zdCBuPXRoaXMuX2VuZ2luZTtpZih0LmNoaWxkRWxlbWVudENvdW50JiZ0aGlzLl9zaWduYWxSZW1vdmFsRm9ySW5uZXJUcmlnZ2Vycyh0LGUpLHRoaXMudHJpZ2dlckxlYXZlQW5pbWF0aW9uKHQsZSwhMCkpcmV0dXJuO2xldCBvPSExO2lmKG4udG90YWxBbmltYXRpb25zKXtjb25zdCBlPW4ucGxheWVycy5sZW5ndGg/bi5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQodCk6W107aWYoZSYmZS5sZW5ndGgpbz0hMDtlbHNle2xldCBlPXQ7Zm9yKDtlPWUucGFyZW50Tm9kZTspe2lmKG4uc3RhdGVzQnlFbGVtZW50LmdldChlKSl7bz0hMDticmVha319fX1pZih0aGlzLnByZXBhcmVMZWF2ZUFuaW1hdGlvbkxpc3RlbmVycyh0KSxvKW4ubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCx0LCExLGUpO2Vsc2V7Y29uc3Qgbz10Ll9fbmdfcmVtb3ZlZDtvJiZvIT09Z3d8fChuLmFmdGVyRmx1c2goKCgpPT50aGlzLmNsZWFyRWxlbWVudENhY2hlKHQpKSksbi5kZXN0cm95SW5uZXJBbmltYXRpb25zKHQpLG4uX29uUmVtb3ZhbENvbXBsZXRlKHQsZSkpfX1pbnNlcnROb2RlKHQsZSl7a3codCx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1kcmFpblF1ZXVlZFRyYW5zaXRpb25zKHQpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMuX3F1ZXVlLmZvckVhY2goKG49Pntjb25zdCBvPW4ucGxheWVyO2lmKG8uZGVzdHJveWVkKXJldHVybjtjb25zdCBpPW4uZWxlbWVudCxhPXRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZ2V0KGkpO2EmJmEuZm9yRWFjaCgoZT0+e2lmKGUubmFtZT09bi50cmlnZ2VyTmFtZSl7Y29uc3Qgbz1WTyhpLG4udHJpZ2dlck5hbWUsbi5mcm9tU3RhdGUudmFsdWUsbi50b1N0YXRlLnZhbHVlKTtvLl9kYXRhPXQsTE8obi5wbGF5ZXIsZS5waGFzZSxvLGUuY2FsbGJhY2spfX0pKSxvLm1hcmtlZEZvckRlc3Ryb3k/dGhpcy5fZW5naW5lLmFmdGVyRmx1c2goKCgpPT57by5kZXN0cm95KCl9KSk6ZS5wdXNoKG4pfSkpLHRoaXMuX3F1ZXVlPVtdLGUuc29ydCgoKHQsZSk9Pntjb25zdCBuPXQudHJhbnNpdGlvbi5hc3QuZGVwQ291bnQsbz1lLnRyYW5zaXRpb24uYXN0LmRlcENvdW50O3JldHVybiAwPT1ufHwwPT1vP24tbzp0aGlzLl9lbmdpbmUuZHJpdmVyLmNvbnRhaW5zRWxlbWVudCh0LmVsZW1lbnQsZS5lbGVtZW50KT8xOi0xfSkpfWRlc3Ryb3kodCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModGhpcy5ob3N0RWxlbWVudCx0KX1lbGVtZW50Q29udGFpbnNEYXRhKHQpe2xldCBlPSExO3JldHVybiB0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmhhcyh0KSYmKGU9ITApLGU9ISF0aGlzLl9xdWV1ZS5maW5kKChlPT5lLmVsZW1lbnQ9PT10KSl8fGUsZX19Y2xhc3MgTXd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYm9keU5vZGU9dCx0aGlzLmRyaXZlcj1lLHRoaXMuX25vcm1hbGl6ZXI9bix0aGlzLnBsYXllcnM9W10sdGhpcy5uZXdIb3N0RWxlbWVudHM9bmV3IE1hcCx0aGlzLnBsYXllcnNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50PW5ldyBNYXAsdGhpcy5zdGF0ZXNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLmRpc2FibGVkTm9kZXM9bmV3IFNldCx0aGlzLnRvdGFsQW5pbWF0aW9ucz0wLHRoaXMudG90YWxRdWV1ZWRQbGF5ZXJzPTAsdGhpcy5fbmFtZXNwYWNlTG9va3VwPXt9LHRoaXMuX25hbWVzcGFjZUxpc3Q9W10sdGhpcy5fZmx1c2hGbnM9W10sdGhpcy5fd2hlblF1aWV0Rm5zPVtdLHRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQ9bmV3IE1hcCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHM9W10sdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzPVtdLHRoaXMub25SZW1vdmFsQ29tcGxldGU9KHQsZSk9Pnt9fV9vblJlbW92YWxDb21wbGV0ZSh0LGUpe3RoaXMub25SZW1vdmFsQ29tcGxldGUodCxlKX1nZXQgcXVldWVkUGxheWVycygpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxpc3QuZm9yRWFjaCgoZT0+e2UucGxheWVycy5mb3JFYWNoKChlPT57ZS5xdWV1ZWQmJnQucHVzaChlKX0pKX0pKSx0fWNyZWF0ZU5hbWVzcGFjZSh0LGUpe2NvbnN0IG49bmV3IEN3KHQsZSx0aGlzKTtyZXR1cm4gdGhpcy5ib2R5Tm9kZSYmdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KHRoaXMuYm9keU5vZGUsZSk/dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3QobixlKToodGhpcy5uZXdIb3N0RWxlbWVudHMuc2V0KGUsbiksdGhpcy5jb2xsZWN0RW50ZXJFbGVtZW50KGUpKSx0aGlzLl9uYW1lc3BhY2VMb29rdXBbdF09bn1fYmFsYW5jZU5hbWVzcGFjZUxpc3QodCxlKXtjb25zdCBuPXRoaXMuX25hbWVzcGFjZUxpc3QubGVuZ3RoLTE7aWYobj49MCl7bGV0IG89ITE7Zm9yKGxldCBpPW47aT49MDtpLS0pe2lmKHRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudCh0aGlzLl9uYW1lc3BhY2VMaXN0W2ldLmhvc3RFbGVtZW50LGUpKXt0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShpKzEsMCx0KSxvPSEwO2JyZWFrfX1vfHx0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZSgwLDAsdCl9ZWxzZSB0aGlzLl9uYW1lc3BhY2VMaXN0LnB1c2godCk7cmV0dXJuIHRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuc2V0KGUsdCksdH1yZWdpc3Rlcih0LGUpe2xldCBuPXRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtyZXR1cm4gbnx8KG49dGhpcy5jcmVhdGVOYW1lc3BhY2UodCxlKSksbn1yZWdpc3RlclRyaWdnZXIodCxlLG4pe2xldCBvPXRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtvJiZvLnJlZ2lzdGVyKGUsbikmJnRoaXMudG90YWxBbmltYXRpb25zKyt9ZGVzdHJveSh0LGUpe2lmKCF0KXJldHVybjtjb25zdCBuPXRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpO3RoaXMuYWZ0ZXJGbHVzaCgoKCk9Pnt0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LmRlbGV0ZShuLmhvc3RFbGVtZW50KSxkZWxldGUgdGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdO2NvbnN0IGU9dGhpcy5fbmFtZXNwYWNlTGlzdC5pbmRleE9mKG4pO2U+PTAmJnRoaXMuX25hbWVzcGFjZUxpc3Quc3BsaWNlKGUsMSl9KSksdGhpcy5hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoKCgpPT5uLmRlc3Ryb3koZSkpKX1fZmV0Y2hOYW1lc3BhY2UodCl7cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XX1mZXRjaE5hbWVzcGFjZXNCeUVsZW1lbnQodCl7Y29uc3QgZT1uZXcgU2V0LG49dGhpcy5zdGF0ZXNCeUVsZW1lbnQuZ2V0KHQpO2lmKG4pe2NvbnN0IHQ9T2JqZWN0LmtleXMobik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGk9blt0W29dXS5uYW1lc3BhY2VJZDtpZihpKXtjb25zdCB0PXRoaXMuX2ZldGNoTmFtZXNwYWNlKGkpO3QmJmUuYWRkKHQpfX19cmV0dXJuIGV9dHJpZ2dlcih0LGUsbixvKXtpZih4dyhlKSl7Y29uc3QgaT10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTtpZihpKXJldHVybiBpLnRyaWdnZXIoZSxuLG8pLCEwfXJldHVybiExfWluc2VydE5vZGUodCxlLG4sbyl7aWYoIXh3KGUpKXJldHVybjtjb25zdCBpPWUuX19uZ19yZW1vdmVkO2lmKGkmJmkuc2V0Rm9yUmVtb3ZhbCl7aS5zZXRGb3JSZW1vdmFsPSExLGkuc2V0Rm9yTW92ZT0hMDtjb25zdCB0PXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5pbmRleE9mKGUpO3Q+PTAmJnRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5zcGxpY2UodCwxKX1pZih0KXtjb25zdCBvPXRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpO28mJm8uaW5zZXJ0Tm9kZShlLG4pfW8mJnRoaXMuY29sbGVjdEVudGVyRWxlbWVudChlKX1jb2xsZWN0RW50ZXJFbGVtZW50KHQpe3RoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5wdXNoKHQpfW1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LGUpe2U/dGhpcy5kaXNhYmxlZE5vZGVzLmhhcyh0KXx8KHRoaXMuZGlzYWJsZWROb2Rlcy5hZGQodCksa3codCxtdykpOnRoaXMuZGlzYWJsZWROb2Rlcy5oYXModCkmJih0aGlzLmRpc2FibGVkTm9kZXMuZGVsZXRlKHQpLFN3KHQsbXcpKX1yZW1vdmVOb2RlKHQsZSxuLG8pe2lmKHh3KGUpKXtjb25zdCBpPXQ/dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCk6bnVsbDtpZihpP2kucmVtb3ZlTm9kZShlLG8pOnRoaXMubWFya0VsZW1lbnRBc1JlbW92ZWQodCxlLCExLG8pLG4pe2NvbnN0IG49dGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudC5nZXQoZSk7biYmbi5pZCE9PXQmJm4ucmVtb3ZlTm9kZShlLG8pfX1lbHNlIHRoaXMuX29uUmVtb3ZhbENvbXBsZXRlKGUsbyl9bWFya0VsZW1lbnRBc1JlbW92ZWQodCxlLG4sbyl7dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLnB1c2goZSksZS5fX25nX3JlbW92ZWQ9e25hbWVzcGFjZUlkOnQsc2V0Rm9yUmVtb3ZhbDpvLGhhc0FuaW1hdGlvbjpuLHJlbW92ZWRCZWZvcmVRdWVyaWVkOiExfX1saXN0ZW4odCxlLG4sbyxpKXtyZXR1cm4geHcoZSk/dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCkubGlzdGVuKGUsbixvLGkpOigpPT57fX1fYnVpbGRJbnN0cnVjdGlvbih0LGUsbixvLGkpe3JldHVybiB0LnRyYW5zaXRpb24uYnVpbGQodGhpcy5kcml2ZXIsdC5lbGVtZW50LHQuZnJvbVN0YXRlLnZhbHVlLHQudG9TdGF0ZS52YWx1ZSxuLG8sdC5mcm9tU3RhdGUub3B0aW9ucyx0LnRvU3RhdGUub3B0aW9ucyxlLGkpfWRlc3Ryb3lJbm5lckFuaW1hdGlvbnModCl7bGV0IGU9dGhpcy5kcml2ZXIucXVlcnkodCxyUCwhMCk7ZS5mb3JFYWNoKCh0PT50aGlzLmRlc3Ryb3lBY3RpdmVBbmltYXRpb25zRm9yRWxlbWVudCh0KSkpLDAhPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuc2l6ZSYmKGU9dGhpcy5kcml2ZXIucXVlcnkodCxsUCwhMCksZS5mb3JFYWNoKCh0PT50aGlzLmZpbmlzaEFjdGl2ZVF1ZXJpZWRBbmltYXRpb25PbkVsZW1lbnQodCkpKSl9ZGVzdHJveUFjdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtlJiZlLmZvckVhY2goKHQ9Pnt0LnF1ZXVlZD90Lm1hcmtlZEZvckRlc3Ryb3k9ITA6dC5kZXN0cm95KCl9KSl9ZmluaXNoQWN0aXZlUXVlcmllZEFuaW1hdGlvbk9uRWxlbWVudCh0KXtjb25zdCBlPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpO2UmJmUuZm9yRWFjaCgodD0+dC5maW5pc2goKSkpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIG5ldyBQcm9taXNlKCh0PT57aWYodGhpcy5wbGF5ZXJzLmxlbmd0aClyZXR1cm4gSE8odGhpcy5wbGF5ZXJzKS5vbkRvbmUoKCgpPT50KCkpKTt0KCl9KSl9cHJvY2Vzc0xlYXZlTm9kZSh0KXtjb25zdCBlPXQuX19uZ19yZW1vdmVkO2lmKGUmJmUuc2V0Rm9yUmVtb3ZhbCl7aWYodC5fX25nX3JlbW92ZWQ9Z3csZS5uYW1lc3BhY2VJZCl7dGhpcy5kZXN0cm95SW5uZXJBbmltYXRpb25zKHQpO2NvbnN0IG49dGhpcy5fZmV0Y2hOYW1lc3BhY2UoZS5uYW1lc3BhY2VJZCk7biYmbi5jbGVhckVsZW1lbnRDYWNoZSh0KX10aGlzLl9vblJlbW92YWxDb21wbGV0ZSh0LGUuc2V0Rm9yUmVtb3ZhbCl9dGhpcy5kcml2ZXIubWF0Y2hlc0VsZW1lbnQodCx1dykmJnRoaXMubWFya0VsZW1lbnRBc0Rpc2FibGVkKHQsITEpLHRoaXMuZHJpdmVyLnF1ZXJ5KHQsdXcsITApLmZvckVhY2goKHQ9Pnt0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LCExKX0pKX1mbHVzaCh0PS0xKXtsZXQgZT1bXTtpZih0aGlzLm5ld0hvc3RFbGVtZW50cy5zaXplJiYodGhpcy5uZXdIb3N0RWxlbWVudHMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX2JhbGFuY2VOYW1lc3BhY2VMaXN0KHQsZSkpKSx0aGlzLm5ld0hvc3RFbGVtZW50cy5jbGVhcigpKSx0aGlzLnRvdGFsQW5pbWF0aW9ucyYmdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aClmb3IobGV0IHQ9MDt0PHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg7dCsrKXtrdyh0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHNbdF0sIm5nLXN0YXItaW5zZXJ0ZWQiKX1pZih0aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aCYmKHRoaXMudG90YWxRdWV1ZWRQbGF5ZXJzfHx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoKSl7Y29uc3Qgbj1bXTt0cnl7ZT10aGlzLl9mbHVzaEFuaW1hdGlvbnMobix0KX1maW5hbGx5e2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF0oKX19ZWxzZSBmb3IobGV0IHQ9MDt0PHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGg7dCsrKXt0aGlzLnByb2Nlc3NMZWF2ZU5vZGUodGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzW3RdKX1pZih0aGlzLnRvdGFsUXVldWVkUGxheWVycz0wLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg9MCx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5fZmx1c2hGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fZmx1c2hGbnM9W10sdGhpcy5fd2hlblF1aWV0Rm5zLmxlbmd0aCl7Y29uc3QgdD10aGlzLl93aGVuUXVpZXRGbnM7dGhpcy5fd2hlblF1aWV0Rm5zPVtdLGUubGVuZ3RoP0hPKGUpLm9uRG9uZSgoKCk9Pnt0LmZvckVhY2goKHQ9PnQoKSkpfSkpOnQuZm9yRWFjaCgodD0+dCgpKSl9fXJlcG9ydEVycm9yKHQpe3Rocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHByb2Nlc3MgYW5pbWF0aW9ucyBkdWUgdG8gdGhlIGZvbGxvd2luZyBmYWlsZWQgdHJpZ2dlciB0cmFuc2l0aW9uc1xuICR7dC5qb2luKCJcbiIpfWApfV9mbHVzaEFuaW1hdGlvbnModCxlKXtjb25zdCBuPW5ldyBqUCxvPVtdLGk9bmV3IE1hcCxhPVtdLHI9bmV3IE1hcCxzPW5ldyBNYXAsbD1uZXcgTWFwLGM9bmV3IFNldDt0aGlzLmRpc2FibGVkTm9kZXMuZm9yRWFjaCgodD0+e2MuYWRkKHQpO2NvbnN0IGU9dGhpcy5kcml2ZXIucXVlcnkodCwiLm5nLWFuaW1hdGUtcXVldWVkIiwhMCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspYy5hZGQoZVt0XSl9KSk7Y29uc3QgZD10aGlzLmJvZHlOb2RlLHA9QXJyYXkuZnJvbSh0aGlzLnN0YXRlc0J5RWxlbWVudC5rZXlzKCkpLG09d3cocCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMpLHU9bmV3IE1hcDtsZXQgZj0wO20uZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPW9QK2YrKzt1LnNldChlLG4pLHQuZm9yRWFjaCgodD0+a3codCxuKSkpfSkpO2NvbnN0IGc9W10saD1uZXcgU2V0LGI9bmV3IFNldDtmb3IobGV0IHQ9MDt0PHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGg7dCsrKXtjb25zdCBlPXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1t0XSxuPWUuX19uZ19yZW1vdmVkO24mJm4uc2V0Rm9yUmVtb3ZhbCYmKGcucHVzaChlKSxoLmFkZChlKSxuLmhhc0FuaW1hdGlvbj90aGlzLmRyaXZlci5xdWVyeShlLCIubmctc3Rhci1pbnNlcnRlZCIsITApLmZvckVhY2goKHQ9PmguYWRkKHQpKSk6Yi5hZGQoZSkpfWNvbnN0IHk9bmV3IE1hcCxfPXd3KHAsQXJyYXkuZnJvbShoKSk7Xy5mb3JFYWNoKCgodCxlKT0+e2NvbnN0IG49aVArZisrO3kuc2V0KGUsbiksdC5mb3JFYWNoKCh0PT5rdyh0LG4pKSl9KSksdC5wdXNoKCgoKT0+e20uZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPXUuZ2V0KGUpO3QuZm9yRWFjaCgodD0+U3codCxuKSkpfSkpLF8uZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPXkuZ2V0KGUpO3QuZm9yRWFjaCgodD0+U3codCxuKSkpfSkpLGcuZm9yRWFjaCgodD0+e3RoaXMucHJvY2Vzc0xlYXZlTm9kZSh0KX0pKX0pKTtjb25zdCBDPVtdLE09W107Zm9yKGxldCB0PXRoaXMuX25hbWVzcGFjZUxpc3QubGVuZ3RoLTE7dD49MDt0LS0pe3RoaXMuX25hbWVzcGFjZUxpc3RbdF0uZHJhaW5RdWV1ZWRUcmFuc2l0aW9ucyhlKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LnBsYXllcixpPXQuZWxlbWVudDtpZihDLnB1c2goZSksdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aCl7Y29uc3QgdD1pLl9fbmdfcmVtb3ZlZDtpZih0JiZ0LnNldEZvck1vdmUpcmV0dXJuIHZvaWQgZS5kZXN0cm95KCl9Y29uc3QgYz0hZHx8IXRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudChkLGkpLHA9eS5nZXQoaSksbT11LmdldChpKSxmPXRoaXMuX2J1aWxkSW5zdHJ1Y3Rpb24odCxuLG0scCxjKTtpZihmLmVycm9ycyYmZi5lcnJvcnMubGVuZ3RoKXJldHVybiB2b2lkIE0ucHVzaChmKTtpZihjKXJldHVybiBlLm9uU3RhcnQoKCgpPT5iUChpLGYuZnJvbVN0eWxlcykpKSxlLm9uRGVzdHJveSgoKCk9PmhQKGksZi50b1N0eWxlcykpKSx2b2lkIG8ucHVzaChlKTtpZih0LmlzRmFsbGJhY2tUcmFuc2l0aW9uKXJldHVybiBlLm9uU3RhcnQoKCgpPT5iUChpLGYuZnJvbVN0eWxlcykpKSxlLm9uRGVzdHJveSgoKCk9PmhQKGksZi50b1N0eWxlcykpKSx2b2lkIG8ucHVzaChlKTtmLnRpbWVsaW5lcy5mb3JFYWNoKCh0PT50LnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lPSEwKSksbi5hcHBlbmQoaSxmLnRpbWVsaW5lcyk7YS5wdXNoKHtpbnN0cnVjdGlvbjpmLHBsYXllcjplLGVsZW1lbnQ6aX0pLGYucXVlcmllZEVsZW1lbnRzLmZvckVhY2goKHQ9PlVPKHIsdCxbXSkucHVzaChlKSkpLGYucHJlU3R5bGVQcm9wcy5mb3JFYWNoKCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGgpe2xldCB0PXMuZ2V0KGUpO3R8fHMuc2V0KGUsdD1uZXcgU2V0KSxuLmZvckVhY2goKGU9PnQuYWRkKGUpKSl9fSkpLGYucG9zdFN0eWxlUHJvcHMuZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpO2xldCBvPWwuZ2V0KGUpO298fGwuc2V0KGUsbz1uZXcgU2V0KSxuLmZvckVhY2goKHQ9Pm8uYWRkKHQpKSl9KSl9KSl9aWYoTS5sZW5ndGgpe2NvbnN0IHQ9W107TS5mb3JFYWNoKChlPT57dC5wdXNoKGBAJHtlLnRyaWdnZXJOYW1lfSBoYXMgZmFpbGVkIGR1ZSB0bzpcbmApLGUuZXJyb3JzLmZvckVhY2goKGU9PnQucHVzaChgLSAke2V9XG5gKSkpfSkpLEMuZm9yRWFjaCgodD0+dC5kZXN0cm95KCkpKSx0aGlzLnJlcG9ydEVycm9yKHQpfWNvbnN0IHY9bmV3IE1hcCx4PW5ldyBNYXA7YS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmVsZW1lbnQ7bi5oYXMoZSkmJih4LnNldChlLGUpLHRoaXMuX2JlZm9yZUFuaW1hdGlvbkJ1aWxkKHQucGxheWVyLm5hbWVzcGFjZUlkLHQuaW5zdHJ1Y3Rpb24sdikpfSkpLG8uZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5lbGVtZW50O3RoaXMuX2dldFByZXZpb3VzUGxheWVycyhlLCExLHQubmFtZXNwYWNlSWQsdC50cmlnZ2VyTmFtZSxudWxsKS5mb3JFYWNoKCh0PT57VU8odixlLFtdKS5wdXNoKHQpLHQuZGVzdHJveSgpfSkpfSkpO2NvbnN0IE89Zy5maWx0ZXIoKHQ9PkV3KHQscyxsKSkpLFA9bmV3IE1hcDtQdyhQLHRoaXMuZHJpdmVyLGIsbCx2TykuZm9yRWFjaCgodD0+e0V3KHQscyxsKSYmTy5wdXNoKHQpfSkpO2NvbnN0IHc9bmV3IE1hcDttLmZvckVhY2goKCh0LGUpPT57UHcodyx0aGlzLmRyaXZlcixuZXcgU2V0KHQpLHMsIiEiKX0pKSxPLmZvckVhY2goKHQ9Pntjb25zdCBlPVAuZ2V0KHQpLG49dy5nZXQodCk7UC5zZXQodCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbikpfSkpO2NvbnN0IGs9W10sUz1bXSxEPXt9O2EuZm9yRWFjaCgodD0+e2NvbnN0e2VsZW1lbnQ6ZSxwbGF5ZXI6YSxpbnN0cnVjdGlvbjpyfT10O2lmKG4uaGFzKGUpKXtpZihjLmhhcyhlKSlyZXR1cm4gYS5vbkRlc3Ryb3koKCgpPT5oUChlLHIudG9TdHlsZXMpKSksYS5kaXNhYmxlZD0hMCxhLm92ZXJyaWRlVG90YWxUaW1lKHIudG90YWxUaW1lKSx2b2lkIG8ucHVzaChhKTtsZXQgdD1EO2lmKHguc2l6ZT4xKXtsZXQgbj1lO2NvbnN0IG89W107Zm9yKDtuPW4ucGFyZW50Tm9kZTspe2NvbnN0IGU9eC5nZXQobik7aWYoZSl7dD1lO2JyZWFrfW8ucHVzaChuKX1vLmZvckVhY2goKGU9Pnguc2V0KGUsdCkpKX1jb25zdCBuPXRoaXMuX2J1aWxkQW5pbWF0aW9uKGEubmFtZXNwYWNlSWQscix2LGksdyxQKTtpZihhLnNldFJlYWxQbGF5ZXIobiksdD09PUQpay5wdXNoKGEpO2Vsc2V7Y29uc3QgZT10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2UmJmUubGVuZ3RoJiYoYS5wYXJlbnRQbGF5ZXI9SE8oZSkpLG8ucHVzaChhKX19ZWxzZSBiUChlLHIuZnJvbVN0eWxlcyksYS5vbkRlc3Ryb3koKCgpPT5oUChlLHIudG9TdHlsZXMpKSksUy5wdXNoKGEpLGMuaGFzKGUpJiZvLnB1c2goYSl9KSksUy5mb3JFYWNoKCh0PT57Y29uc3QgZT1pLmdldCh0LmVsZW1lbnQpO2lmKGUmJmUubGVuZ3RoKXtjb25zdCBuPUhPKGUpO3Quc2V0UmVhbFBsYXllcihuKX19KSksby5mb3JFYWNoKCh0PT57dC5wYXJlbnRQbGF5ZXI/dC5zeW5jUGxheWVyRXZlbnRzKHQucGFyZW50UGxheWVyKTp0LmRlc3Ryb3koKX0pKTtmb3IobGV0IHQ9MDt0PGcubGVuZ3RoO3QrKyl7Y29uc3QgZT1nW3RdLG49ZS5fX25nX3JlbW92ZWQ7aWYoU3coZSxpUCksbiYmbi5oYXNBbmltYXRpb24pY29udGludWU7bGV0IG89W107aWYoci5zaXplKXtsZXQgdD1yLmdldChlKTt0JiZ0Lmxlbmd0aCYmby5wdXNoKC4uLnQpO2xldCBuPXRoaXMuZHJpdmVyLnF1ZXJ5KGUsbFAsITApO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtsZXQgZT1yLmdldChuW3RdKTtlJiZlLmxlbmd0aCYmby5wdXNoKC4uLmUpfX1jb25zdCBpPW8uZmlsdGVyKCh0PT4hdC5kZXN0cm95ZWQpKTtpLmxlbmd0aD9Edyh0aGlzLGUsaSk6dGhpcy5wcm9jZXNzTGVhdmVOb2RlKGUpfXJldHVybiBnLmxlbmd0aD0wLGsuZm9yRWFjaCgodD0+e3RoaXMucGxheWVycy5wdXNoKHQpLHQub25Eb25lKCgoKT0+e3QuZGVzdHJveSgpO2NvbnN0IGU9dGhpcy5wbGF5ZXJzLmluZGV4T2YodCk7dGhpcy5wbGF5ZXJzLnNwbGljZShlLDEpfSkpLHQucGxheSgpfSkpLGt9ZWxlbWVudENvbnRhaW5zRGF0YSh0LGUpe2xldCBuPSExO2NvbnN0IG89ZS5fX25nX3JlbW92ZWQ7cmV0dXJuIG8mJm8uc2V0Rm9yUmVtb3ZhbCYmKG49ITApLHRoaXMucGxheWVyc0J5RWxlbWVudC5oYXMoZSkmJihuPSEwKSx0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmhhcyhlKSYmKG49ITApLHRoaXMuc3RhdGVzQnlFbGVtZW50LmhhcyhlKSYmKG49ITApLHRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpLmVsZW1lbnRDb250YWluc0RhdGEoZSl8fG59YWZ0ZXJGbHVzaCh0KXt0aGlzLl9mbHVzaEZucy5wdXNoKHQpfWFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSh0KXt0aGlzLl93aGVuUXVpZXRGbnMucHVzaCh0KX1fZ2V0UHJldmlvdXNQbGF5ZXJzKHQsZSxuLG8saSl7bGV0IGE9W107aWYoZSl7Y29uc3QgZT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldCh0KTtlJiYoYT1lKX1lbHNle2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtpZihlKXtjb25zdCB0PSFpfHxpPT15dztlLmZvckVhY2goKGU9PntlLnF1ZXVlZHx8KHR8fGUudHJpZ2dlck5hbWU9PW8pJiZhLnB1c2goZSl9KSl9fXJldHVybihufHxvKSYmKGE9YS5maWx0ZXIoKHQ9Pighbnx8bj09dC5uYW1lc3BhY2VJZCkmJighb3x8bz09dC50cmlnZ2VyTmFtZSkpKSksYX1fYmVmb3JlQW5pbWF0aW9uQnVpbGQodCxlLG4pe2NvbnN0IG89ZS5lbGVtZW50LGk9ZS5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQgMDp0LGE9ZS5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQgMDplLnRyaWdnZXJOYW1lO2Zvcihjb25zdCB0IG9mIGUudGltZWxpbmVzKXtjb25zdCByPXQuZWxlbWVudCxzPXIhPT1vLGw9VU8obixyLFtdKTt0aGlzLl9nZXRQcmV2aW91c1BsYXllcnMocixzLGksYSxlLnRvU3RhdGUpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuZ2V0UmVhbFBsYXllcigpO2UuYmVmb3JlRGVzdHJveSYmZS5iZWZvcmVEZXN0cm95KCksdC5kZXN0cm95KCksbC5wdXNoKHQpfSkpfWJQKG8sZS5mcm9tU3R5bGVzKX1fYnVpbGRBbmltYXRpb24odCxlLG4sbyxpLGEpe2NvbnN0IHI9ZS50cmlnZ2VyTmFtZSxzPWUuZWxlbWVudCxsPVtdLGM9bmV3IFNldCxkPW5ldyBTZXQscD1lLnRpbWVsaW5lcy5tYXAoKGU9Pntjb25zdCBwPWUuZWxlbWVudDtjLmFkZChwKTtjb25zdCBtPXAuX19uZ19yZW1vdmVkO2lmKG0mJm0ucmVtb3ZlZEJlZm9yZVF1ZXJpZWQpcmV0dXJuIG5ldyBUTyhlLmR1cmF0aW9uLGUuZGVsYXkpO2NvbnN0IHU9cCE9PXMsZj0oZnVuY3Rpb24gZyh0KXtjb25zdCBlPVtdO3JldHVybiBSdyh0LGUpLGV9KSgobi5nZXQocCl8fGZ3KS5tYXAoKHQ9PnQuZ2V0UmVhbFBsYXllcigpKSkpLmZpbHRlcigodD0+ISF0LmVsZW1lbnQmJnQuZWxlbWVudD09PXApKSxoPWkuZ2V0KHApLGI9YS5nZXQocCkseT1GTygwLHRoaXMuX25vcm1hbGl6ZXIsMCxlLmtleWZyYW1lcyxoLGIpLF89dGhpcy5fYnVpbGRQbGF5ZXIoZSx5LGYpO2lmKGUuc3ViVGltZWxpbmUmJm8mJmQuYWRkKHApLHUpe2NvbnN0IGU9bmV3IHZ3KHQscixwKTtlLnNldFJlYWxQbGF5ZXIoXyksbC5wdXNoKGUpfXJldHVybiBffSkpO2wuZm9yRWFjaCgodD0+e1VPKHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQsdC5lbGVtZW50LFtdKS5wdXNoKHQpLHQub25Eb25lKCgoKT0+KGZ1bmN0aW9uIGUodCxuLG8pe2xldCBpO2lmKHQgaW5zdGFuY2VvZiBNYXApe2lmKGk9dC5nZXQobiksaSl7aWYoaS5sZW5ndGgpe2NvbnN0IHQ9aS5pbmRleE9mKG8pO2kuc3BsaWNlKHQsMSl9MD09aS5sZW5ndGgmJnQuZGVsZXRlKG4pfX1lbHNlIGlmKGk9dFtuXSxpKXtpZihpLmxlbmd0aCl7Y29uc3QgdD1pLmluZGV4T2Yobyk7aS5zcGxpY2UodCwxKX0wPT1pLmxlbmd0aCYmZGVsZXRlIHRbbl19cmV0dXJuIGl9KSh0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LHQuZWxlbWVudCx0KSkpfSkpLGMuZm9yRWFjaCgodD0+a3codCxzUCkpKTtjb25zdCBtPUhPKHApO3JldHVybiBtLm9uRGVzdHJveSgoKCk9PntjLmZvckVhY2goKHQ9PlN3KHQsc1ApKSksaFAocyxlLnRvU3R5bGVzKX0pKSxkLmZvckVhY2goKHQ9PntVTyhvLHQsW10pLnB1c2gobSl9KSksbX1fYnVpbGRQbGF5ZXIodCxlLG4pe3JldHVybiBlLmxlbmd0aD4wP3RoaXMuZHJpdmVyLmFuaW1hdGUodC5lbGVtZW50LGUsdC5kdXJhdGlvbix0LmRlbGF5LHQuZWFzaW5nLG4pOm5ldyBUTyh0LmR1cmF0aW9uLHQuZGVsYXkpfX1jbGFzcyB2d3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5uYW1lc3BhY2VJZD10LHRoaXMudHJpZ2dlck5hbWU9ZSx0aGlzLmVsZW1lbnQ9bix0aGlzLl9wbGF5ZXI9bmV3IFRPLHRoaXMuX2NvbnRhaW5zUmVhbFBsYXllcj0hMSx0aGlzLl9xdWV1ZWRDYWxsYmFja3M9e30sdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5tYXJrZWRGb3JEZXN0cm95PSExLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy5xdWV1ZWQ9ITAsdGhpcy50b3RhbFRpbWU9MH1zZXRSZWFsUGxheWVyKHQpe3RoaXMuX2NvbnRhaW5zUmVhbFBsYXllcnx8KHRoaXMuX3BsYXllcj10LE9iamVjdC5rZXlzKHRoaXMuX3F1ZXVlZENhbGxiYWNrcykuZm9yRWFjaCgoZT0+e3RoaXMuX3F1ZXVlZENhbGxiYWNrc1tlXS5mb3JFYWNoKChuPT5MTyh0LGUsdm9pZCAwLG4pKSl9KSksdGhpcy5fcXVldWVkQ2FsbGJhY2tzPXt9LHRoaXMuX2NvbnRhaW5zUmVhbFBsYXllcj0hMCx0aGlzLm92ZXJyaWRlVG90YWxUaW1lKHQudG90YWxUaW1lKSx0aGlzLnF1ZXVlZD0hMSl9Z2V0UmVhbFBsYXllcigpe3JldHVybiB0aGlzLl9wbGF5ZXJ9b3ZlcnJpZGVUb3RhbFRpbWUodCl7dGhpcy50b3RhbFRpbWU9dH1zeW5jUGxheWVyRXZlbnRzKHQpe2NvbnN0IGU9dGhpcy5fcGxheWVyO2UudHJpZ2dlckNhbGxiYWNrJiZ0Lm9uU3RhcnQoKCgpPT5lLnRyaWdnZXJDYWxsYmFjaygic3RhcnQiKSkpLHQub25Eb25lKCgoKT0+dGhpcy5maW5pc2goKSkpLHQub25EZXN0cm95KCgoKT0+dGhpcy5kZXN0cm95KCkpKX1fcXVldWVFdmVudCh0LGUpe1VPKHRoaXMuX3F1ZXVlZENhbGxiYWNrcyx0LFtdKS5wdXNoKGUpfW9uRG9uZSh0KXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgiZG9uZSIsdCksdGhpcy5fcGxheWVyLm9uRG9uZSh0KX1vblN0YXJ0KHQpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJzdGFydCIsdCksdGhpcy5fcGxheWVyLm9uU3RhcnQodCl9b25EZXN0cm95KHQpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJkZXN0cm95Iix0KSx0aGlzLl9wbGF5ZXIub25EZXN0cm95KHQpfWluaXQoKXt0aGlzLl9wbGF5ZXIuaW5pdCgpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4hdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5oYXNTdGFydGVkKCl9cGxheSgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnBsYXkoKX1wYXVzZSgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnBhdXNlKCl9cmVzdGFydCgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnJlc3RhcnQoKX1maW5pc2goKXt0aGlzLl9wbGF5ZXIuZmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwLHRoaXMuX3BsYXllci5kZXN0cm95KCl9cmVzZXQoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5yZXNldCgpfXNldFBvc2l0aW9uKHQpe3RoaXMucXVldWVkfHx0aGlzLl9wbGF5ZXIuc2V0UG9zaXRpb24odCl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5xdWV1ZWQ/MDp0aGlzLl9wbGF5ZXIuZ2V0UG9zaXRpb24oKX10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3QgZT10aGlzLl9wbGF5ZXI7ZS50cmlnZ2VyQ2FsbGJhY2smJmUudHJpZ2dlckNhbGxiYWNrKHQpfX1mdW5jdGlvbiB4dyh0KXtyZXR1cm4gdCYmMT09PXQubm9kZVR5cGV9ZnVuY3Rpb24gT3codCxlKXtjb25zdCBuPXQuc3R5bGUuZGlzcGxheTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PW51bGwhPWU/ZToibm9uZSIsbn1mdW5jdGlvbiBQdyh0LGUsbixvLGkpe2NvbnN0IGE9W107bi5mb3JFYWNoKCh0PT5hLnB1c2goT3codCkpKSk7Y29uc3Qgcj1bXTtvLmZvckVhY2goKChuLG8pPT57Y29uc3QgYT17fTtuLmZvckVhY2goKHQ9Pntjb25zdCBuPWFbdF09ZS5jb21wdXRlU3R5bGUobyx0LGkpO24mJjAhPW4ubGVuZ3RofHwoby5fX25nX3JlbW92ZWQ9aHcsci5wdXNoKG8pKX0pKSx0LnNldChvLGEpfSkpO2xldCBzPTA7cmV0dXJuIG4uZm9yRWFjaCgodD0+T3codCxhW3MrK10pKSkscn1mdW5jdGlvbiB3dyh0LGUpe2NvbnN0IG49bmV3IE1hcDtpZih0LmZvckVhY2goKHQ9Pm4uc2V0KHQsW10pKSksMD09ZS5sZW5ndGgpcmV0dXJuIG47Y29uc3Qgbz1uZXcgU2V0KGUpLGk9bmV3IE1hcDtmdW5jdGlvbiBhKHQpe2lmKCF0KXJldHVybiAxO2xldCBlPWkuZ2V0KHQpO2lmKGUpcmV0dXJuIGU7Y29uc3Qgcj10LnBhcmVudE5vZGU7cmV0dXJuIGU9bi5oYXMocik/cjpvLmhhcyhyKT8xOmEociksaS5zZXQodCxlKSxlfXJldHVybiBlLmZvckVhY2goKHQ9Pntjb25zdCBlPWEodCk7MSE9PWUmJm4uZ2V0KGUpLnB1c2godCl9KSksbn1mdW5jdGlvbiBrdyh0LGUpe2lmKHQuY2xhc3NMaXN0KXQuY2xhc3NMaXN0LmFkZChlKTtlbHNle2xldCBuPXQuJCRjbGFzc2VzO258fChuPXQuJCRjbGFzc2VzPXt9KSxuW2VdPSEwfX1mdW5jdGlvbiBTdyh0LGUpe2lmKHQuY2xhc3NMaXN0KXQuY2xhc3NMaXN0LnJlbW92ZShlKTtlbHNle2xldCBuPXQuJCRjbGFzc2VzO24mJmRlbGV0ZSBuW2VdfX1mdW5jdGlvbiBEdyh0LGUsbil7SE8obikub25Eb25lKCgoKT0+dC5wcm9jZXNzTGVhdmVOb2RlKGUpKSl9ZnVuY3Rpb24gUncodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10W25dO28gaW5zdGFuY2VvZiBOTz9SdyhvLnBsYXllcnMsZSk6ZS5wdXNoKG8pfX1mdW5jdGlvbiBFdyh0LGUsbil7Y29uc3Qgbz1uLmdldCh0KTtpZighbylyZXR1cm4hMTtsZXQgaT1lLmdldCh0KTtyZXR1cm4gaT9vLmZvckVhY2goKHQ9PmkuYWRkKHQpKSk6ZS5zZXQodCxvKSxuLmRlbGV0ZSh0KSwhMH1jbGFzcyBBd3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ib2R5Tm9kZT10LHRoaXMuX2RyaXZlcj1lLHRoaXMuX25vcm1hbGl6ZXI9bix0aGlzLl90cmlnZ2VyQ2FjaGU9e30sdGhpcy5vblJlbW92YWxDb21wbGV0ZT0odCxlKT0+e30sdGhpcy5fdHJhbnNpdGlvbkVuZ2luZT1uZXcgTXcodCxlLG4pLHRoaXMuX3RpbWVsaW5lRW5naW5lPW5ldyBkdyh0LGUsbiksdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5vblJlbW92YWxDb21wbGV0ZT0odCxlKT0+dGhpcy5vblJlbW92YWxDb21wbGV0ZSh0LGUpfXJlZ2lzdGVyVHJpZ2dlcih0LGUsbixvLGkpe2NvbnN0IGE9dCsiLSIrbztsZXQgcj10aGlzLl90cmlnZ2VyQ2FjaGVbYV07aWYoIXIpe2NvbnN0IHQ9W10sZT1JUCh0aGlzLl9kcml2ZXIsaSx0KTtpZih0Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBhbmltYXRpb24gdHJpZ2dlciAiJHtvfSIgaGFzIGZhaWxlZCB0byBidWlsZCBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4gLSAke3Quam9pbigiXG4gLSAiKX1gKTtyPShmdW5jdGlvbiBuKHQsZSxvKXtyZXR1cm4gbmV3IHN3KHQsZSxvKX0pKG8sZSx0aGlzLl9ub3JtYWxpemVyKSx0aGlzLl90cmlnZ2VyQ2FjaGVbYV09cn10aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyVHJpZ2dlcihlLG8scil9cmVnaXN0ZXIodCxlKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyKHQsZSl9ZGVzdHJveSh0LGUpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZGVzdHJveSh0LGUpfW9uSW5zZXJ0KHQsZSxuLG8pe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuaW5zZXJ0Tm9kZSh0LGUsbixvKX1vblJlbW92ZSh0LGUsbixvKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlbW92ZU5vZGUodCxlLG98fCExLG4pfWRpc2FibGVBbmltYXRpb25zKHQsZSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5tYXJrRWxlbWVudEFzRGlzYWJsZWQodCxlKX1wcm9jZXNzKHQsZSxuLG8pe2lmKCJAIj09bi5jaGFyQXQoMCkpe2NvbnN0W3QsaV09ak8obik7dGhpcy5fdGltZWxpbmVFbmdpbmUuY29tbWFuZCh0LGUsaSxvKX1lbHNlIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUudHJpZ2dlcih0LGUsbixvKX1saXN0ZW4odCxlLG4sbyxpKXtpZigiQCI9PW4uY2hhckF0KDApKXtjb25zdFt0LG9dPWpPKG4pO3JldHVybiB0aGlzLl90aW1lbGluZUVuZ2luZS5saXN0ZW4odCxlLG8saSl9cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUubGlzdGVuKHQsZSxuLG8saSl9Zmx1c2godD0tMSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5mbHVzaCh0KX1nZXQgcGxheWVycygpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLnBsYXllcnMuY29uY2F0KHRoaXMuX3RpbWVsaW5lRW5naW5lLnBsYXllcnMpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUud2hlblJlbmRlcmluZ0RvbmUoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFR3KHQsZSl7bGV0IG49bnVsbCxvPW51bGw7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPyhuPXp3KGVbMF0pLGUubGVuZ3RoPjEmJihvPXp3KGVbZS5sZW5ndGgtMV0pKSk6ZSYmKG49encoZSkpLG58fG8/bmV3IE53KHQsbixvKTpudWxsfWNsYXNzIE53e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fc3RhcnRTdHlsZXM9ZSx0aGlzLl9lbmRTdHlsZXM9bix0aGlzLl9zdGF0ZT0wO2xldCBvPU53LmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuZ2V0KHQpO298fE53LmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuc2V0KHQsbz17fSksdGhpcy5faW5pdGlhbFN0eWxlcz1vfXN0YXJ0KCl7dGhpcy5fc3RhdGU8MSYmKHRoaXMuX3N0YXJ0U3R5bGVzJiZoUCh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzLHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTEpfWZpbmlzaCgpe3RoaXMuc3RhcnQoKSx0aGlzLl9zdGF0ZTwyJiYoaFAodGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXMmJihoUCh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX3N0YXRlPTEpfWRlc3Ryb3koKXt0aGlzLmZpbmlzaCgpLHRoaXMuX3N0YXRlPDMmJihOdy5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmRlbGV0ZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9zdGFydFN0eWxlcyYmKGJQKHRoaXMuX2VsZW1lbnQsdGhpcy5fc3RhcnRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9lbmRTdHlsZXMmJihiUCh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLGhQKHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fc3RhdGU9Myl9fWZ1bmN0aW9uIHp3KHQpe2xldCBlPW51bGw7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3QgaT1uW29dO0l3KGkpJiYoZT1lfHx7fSxlW2ldPXRbaV0pfXJldHVybiBlfWZ1bmN0aW9uIEl3KHQpe3JldHVybiJkaXNwbGF5Ij09PXR8fCJwb3NpdGlvbiI9PT10fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9Ody5pbml0aWFsU3R5bGVzQnlFbGVtZW50PW5ldyBXZWFrTWFwO2NvbnN0IEh3PSJhbmltYXRpb24iLEZ3PSJhbmltYXRpb25lbmQiO2NsYXNzIEx3e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9uYW1lPWUsdGhpcy5fZHVyYXRpb249bix0aGlzLl9kZWxheT1vLHRoaXMuX2Vhc2luZz1pLHRoaXMuX2ZpbGxNb2RlPWEsdGhpcy5fb25Eb25lRm49cix0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fc3RhcnRUaW1lPTAsdGhpcy5fcG9zaXRpb249MCx0aGlzLl9ldmVudEZuPXQ9PnRoaXMuX2hhbmRsZUNhbGxiYWNrKHQpfWFwcGx5KCl7IShmdW5jdGlvbiB0KGUsbil7Y29uc3Qgbz1HdyhlLCIiKS50cmltKCk7bGV0IGk9MDtvLmxlbmd0aCYmKGk9KGZ1bmN0aW9uIGEodCxlKXtsZXQgbj0wO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXt0LmNoYXJBdChvKT09PWUmJm4rK31yZXR1cm4gbn0pKG8sIiwiKSsxLG49YCR7b30sICR7bn1gKTtyZXR1cm4gV3coZSwiIixuKSxpfSkodGhpcy5fZWxlbWVudCxgJHt0aGlzLl9kdXJhdGlvbn1tcyAke3RoaXMuX2Vhc2luZ30gJHt0aGlzLl9kZWxheX1tcyAxIG5vcm1hbCAke3RoaXMuX2ZpbGxNb2RlfSAke3RoaXMuX25hbWV9YCksancodGhpcy5fZWxlbWVudCx0aGlzLl9ldmVudEZuLCExKSx0aGlzLl9zdGFydFRpbWU9RGF0ZS5ub3coKX1wYXVzZSgpe0J3KHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSwicGF1c2VkIil9cmVzdW1lKCl7QncodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lLCJydW5uaW5nIil9c2V0UG9zaXRpb24odCl7Y29uc3QgZT1Wdyh0aGlzLl9lbGVtZW50LHRoaXMuX25hbWUpO3RoaXMuX3Bvc2l0aW9uPXQqdGhpcy5fZHVyYXRpb24sV3codGhpcy5fZWxlbWVudCwiRGVsYXkiLGAtJHt0aGlzLl9wb3NpdGlvbn1tc2AsZSl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259X2hhbmRsZUNhbGxiYWNrKHQpe2NvbnN0IGU9dC5fbmdUZXN0TWFudWFsVGltZXN0YW1wfHxEYXRlLm5vdygpLG49MWUzKnBhcnNlRmxvYXQodC5lbGFwc2VkVGltZS50b0ZpeGVkKDMpKTt0LmFuaW1hdGlvbk5hbWU9PXRoaXMuX25hbWUmJk1hdGgubWF4KGUtdGhpcy5fc3RhcnRUaW1lLDApPj10aGlzLl9kZWxheSYmbj49dGhpcy5fZHVyYXRpb24mJnRoaXMuZmluaXNoKCl9ZmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbigpLGp3KHRoaXMuX2VsZW1lbnQsdGhpcy5fZXZlbnRGbiwhMCkpfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5maW5pc2goKSwoZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89R3coZSwiIikuc3BsaXQoIiwiKSxpPVV3KG8sbik7aWYoaT49MCl7by5zcGxpY2UoaSwxKTtXdyhlLCIiLG8uam9pbigiLCIpKX19KSh0aGlzLl9lbGVtZW50LHRoaXMuX25hbWUpKX19ZnVuY3Rpb24gQncodCxlLG4pe1d3KHQsIlBsYXlTdGF0ZSIsbixWdyh0LGUpKX1mdW5jdGlvbiBWdyh0LGUpe2NvbnN0IG49R3codCwiIik7aWYobi5pbmRleE9mKCIsIik+MCl7cmV0dXJuIFV3KG4uc3BsaXQoIiwiKSxlKX1yZXR1cm4gVXcoW25dLGUpfWZ1bmN0aW9uIFV3KHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXS5pbmRleE9mKGUpPj0wKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIGp3KHQsZSxuKXtuP3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihGdyxlKTp0LmFkZEV2ZW50TGlzdGVuZXIoRncsZSl9ZnVuY3Rpb24gV3codCxlLG4sbyl7Y29uc3QgaT1IdytlO2lmKG51bGwhPW8pe2NvbnN0IGU9dC5zdHlsZVtpXTtpZihlLmxlbmd0aCl7Y29uc3QgdD1lLnNwbGl0KCIsIik7dFtvXT1uLG49dC5qb2luKCIsIil9fXQuc3R5bGVbaV09bn1mdW5jdGlvbiBHdyh0LGUpe3JldHVybiB0LnN0eWxlW0h3K2VdfHwiIn1jbGFzcyBZd3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3RoaXMuZWxlbWVudD10LHRoaXMua2V5ZnJhbWVzPWUsdGhpcy5hbmltYXRpb25OYW1lPW4sdGhpcy5fZHVyYXRpb249byx0aGlzLl9kZWxheT1pLHRoaXMuX2ZpbmFsU3R5bGVzPXIsdGhpcy5fc3BlY2lhbFN0eWxlcz1zLHRoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLmN1cnJlbnRTbmFwc2hvdD17fSx0aGlzLl9zdGF0ZT0wLHRoaXMuZWFzaW5nPWF8fCJsaW5lYXIiLHRoaXMudG90YWxUaW1lPW8raSx0aGlzLl9idWlsZFN0eWxlcigpfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9ZGVzdHJveSgpe3RoaXMuaW5pdCgpLHRoaXMuX3N0YXRlPj00fHwodGhpcy5fc3RhdGU9NCx0aGlzLl9zdHlsZXIuZGVzdHJveSgpLHRoaXMuX2ZsdXNoU3RhcnRGbnMoKSx0aGlzLl9mbHVzaERvbmVGbnMoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmRlc3Ryb3koKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1fZmx1c2hEb25lRm5zKCl7dGhpcy5fb25Eb25lRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRG9uZUZucz1bXX1fZmx1c2hTdGFydEZucygpe3RoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXX1maW5pc2goKXt0aGlzLmluaXQoKSx0aGlzLl9zdGF0ZT49M3x8KHRoaXMuX3N0YXRlPTMsdGhpcy5fc3R5bGVyLmZpbmlzaCgpLHRoaXMuX2ZsdXNoU3RhcnRGbnMoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmZpbmlzaCgpLHRoaXMuX2ZsdXNoRG9uZUZucygpKX1zZXRQb3NpdGlvbih0KXt0aGlzLl9zdHlsZXIuc2V0UG9zaXRpb24odCl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fc3R5bGVyLmdldFBvc2l0aW9uKCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGF0ZT49Mn1pbml0KCl7dGhpcy5fc3RhdGU+PTF8fCh0aGlzLl9zdGF0ZT0xLHRoaXMuX3N0eWxlci5hcHBseSgpLHRoaXMuX2RlbGF5JiZ0aGlzLl9zdHlsZXIucGF1c2UoKSl9cGxheSgpe3RoaXMuaW5pdCgpLHRoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fZmx1c2hTdGFydEZucygpLHRoaXMuX3N0YXRlPTIsdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5zdGFydCgpKSx0aGlzLl9zdHlsZXIucmVzdW1lKCl9cGF1c2UoKXt0aGlzLmluaXQoKSx0aGlzLl9zdHlsZXIucGF1c2UoKX1yZXN0YXJ0KCl7dGhpcy5yZXNldCgpLHRoaXMucGxheSgpfXJlc2V0KCl7dGhpcy5fc3RhdGU9MCx0aGlzLl9zdHlsZXIuZGVzdHJveSgpLHRoaXMuX2J1aWxkU3R5bGVyKCksdGhpcy5fc3R5bGVyLmFwcGx5KCl9X2J1aWxkU3R5bGVyKCl7dGhpcy5fc3R5bGVyPW5ldyBMdyh0aGlzLmVsZW1lbnQsdGhpcy5hbmltYXRpb25OYW1lLHRoaXMuX2R1cmF0aW9uLHRoaXMuX2RlbGF5LHRoaXMuZWFzaW5nLCJmb3J3YXJkcyIsKCgpPT50aGlzLmZpbmlzaCgpKSl9dHJpZ2dlckNhbGxiYWNrKHQpe2NvbnN0IGU9InN0YXJ0Ij09dD90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztlLmZvckVhY2goKHQ9PnQoKSkpLGUubGVuZ3RoPTB9YmVmb3JlRGVzdHJveSgpe3RoaXMuaW5pdCgpO2NvbnN0IHQ9e307aWYodGhpcy5oYXNTdGFydGVkKCkpe2NvbnN0IGU9dGhpcy5fc3RhdGU+PTM7T2JqZWN0LmtleXModGhpcy5fZmluYWxTdHlsZXMpLmZvckVhY2goKG49Pnsib2Zmc2V0IiE9biYmKHRbbl09ZT90aGlzLl9maW5hbFN0eWxlc1tuXTpTUCh0aGlzLmVsZW1lbnQsbikpfSkpfXRoaXMuY3VycmVudFNuYXBzaG90PXR9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBxdyBleHRlbmRzIFRPe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmVsZW1lbnQ9dCx0aGlzLl9zdGFydGluZ1N0eWxlcz17fSx0aGlzLl9faW5pdGlhbGl6ZWQ9ITEsdGhpcy5fc3R5bGVzPXRQKGUpfWluaXQoKXshdGhpcy5fX2luaXRpYWxpemVkJiZ0aGlzLl9zdGFydGluZ1N0eWxlcyYmKHRoaXMuX19pbml0aWFsaXplZD0hMCxPYmplY3Qua2V5cyh0aGlzLl9zdHlsZXMpLmZvckVhY2goKHQ9Pnt0aGlzLl9zdGFydGluZ1N0eWxlc1t0XT10aGlzLmVsZW1lbnQuc3R5bGVbdF19KSksc3VwZXIuaW5pdCgpKX1wbGF5KCl7dGhpcy5fc3RhcnRpbmdTdHlsZXMmJih0aGlzLmluaXQoKSxPYmplY3Qua2V5cyh0aGlzLl9zdHlsZXMpLmZvckVhY2goKHQ9PnRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSh0LHRoaXMuX3N0eWxlc1t0XSkpKSxzdXBlci5wbGF5KCkpfWRlc3Ryb3koKXt0aGlzLl9zdGFydGluZ1N0eWxlcyYmKE9iamVjdC5rZXlzKHRoaXMuX3N0YXJ0aW5nU3R5bGVzKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLl9zdGFydGluZ1N0eWxlc1t0XTtlP3RoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUpOnRoaXMuZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX0pKSx0aGlzLl9zdGFydGluZ1N0eWxlcz1udWxsLHN1cGVyLmRlc3Ryb3koKSl9fWNsYXNzIFp3e2NvbnN0cnVjdG9yKCl7dGhpcy5fY291bnQ9MH12YWxpZGF0ZVN0eWxlUHJvcGVydHkodCl7cmV0dXJuIEtPKHQpfW1hdGNoZXNFbGVtZW50KHQsZSl7cmV0dXJuIEpPKHQsZSl9Y29udGFpbnNFbGVtZW50KHQsZSl7cmV0dXJuIFFPKHQsZSl9cXVlcnkodCxlLG4pe3JldHVybiAkTyh0LGUsbil9Y29tcHV0ZVN0eWxlKHQsZSxuKXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUodClbZV19YnVpbGRLZXlmcmFtZUVsZW1lbnQodCxlLG4pe249bi5tYXAoKHQ9PnRQKHQpKSk7bGV0IG89YEBrZXlmcmFtZXMgJHtlfSB7XG5gLGk9IiI7bi5mb3JFYWNoKCh0PT57aT0iICI7Y29uc3QgZT1wYXJzZUZsb2F0KHQub2Zmc2V0KTtvKz1gJHtpfSR7MTAwKmV9JSB7XG5gLGkrPSIgIixPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57Y29uc3Qgbj10W2VdO3N3aXRjaChlKXtjYXNlIm9mZnNldCI6cmV0dXJuO2Nhc2UiZWFzaW5nIjpyZXR1cm4gdm9pZChuJiYobys9YCR7aX1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAke259O1xuYCkpO2RlZmF1bHQ6cmV0dXJuIHZvaWQobys9YCR7aX0ke2V9OiAke259O1xuYCl9fSkpLG8rPWAke2l9fVxuYH0pKSxvKz0ifVxuIjtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIGEudGV4dENvbnRlbnQ9byxhfWFuaW1hdGUodCxlLG4sbyxpLGE9W10scil7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZyJiYoZnVuY3Rpb24gcygpe2lmKFh3KXJldHVybjtjb25zb2xlLndhcm4oIkBhbmd1bGFyL2FuaW1hdGlvbnM6IHBsZWFzZSBsb2FkIHRoZSB3ZWItYW5pbWF0aW9ucy5qcyBwb2x5ZmlsbCB0byBhbGxvdyBwcm9ncmFtbWF0aWMgYWNjZXNzLi4uXG4iLCIgIHZpc2l0IGh0dHBzOi8vYml0Lmx5L0lXdWthbSB0byBsZWFybiBtb3JlIGFib3V0IHVzaW5nIHRoZSB3ZWItYW5pbWF0aW9uLWpzIHBvbHlmaWxsLiIpLFh3PSEwfSkoKTtjb25zdCBsPWEuZmlsdGVyKCh0PT50IGluc3RhbmNlb2YgWXcpKSxjPXt9O1BQKG4sbykmJmwuZm9yRWFjaCgodD0+e2xldCBlPXQuY3VycmVudFNuYXBzaG90O09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9PmNbdF09ZVt0XSkpfSkpO2NvbnN0IGQ9KGZ1bmN0aW9uIHAodCl7bGV0IGU9e307aWYodCl7KEFycmF5LmlzQXJyYXkodCk/dDpbdF0pLmZvckVhY2goKHQ9PntPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Im9mZnNldCIhPW4mJiJlYXNpbmciIT1uJiYoZVtuXT10W25dKX0pKX0pKX1yZXR1cm4gZX0pKGU9d1AodCxlLGMpKTtpZigwPT1uKXJldHVybiBuZXcgcXcodCxkKTtjb25zdCBtPSJnZW5fY3NzX2tmXyIrdGhpcy5fY291bnQrKyx1PXRoaXMuYnVpbGRLZXlmcmFtZUVsZW1lbnQodCxtLGUpOyhmdW5jdGlvbiBmKHQpe3ZhciBlO2NvbnN0IG49bnVsbD09PShlPXQuZ2V0Um9vdE5vZGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNhbGwodCk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTaGFkb3dSb290JiZuIGluc3RhbmNlb2YgU2hhZG93Um9vdClyZXR1cm4gbjtyZXR1cm4gZG9jdW1lbnQuaGVhZH0pKHQpLmFwcGVuZENoaWxkKHUpO2NvbnN0IGc9VHcodCxlKSxoPW5ldyBZdyh0LGUsbSxuLG8saSxkLGcpO3JldHVybiBoLm9uRGVzdHJveSgoKCk9PihmdW5jdGlvbiB0KGUpe2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pKHUpKSksaH19bGV0IFh3PSExO2NsYXNzIEt3e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuZWxlbWVudD10LHRoaXMua2V5ZnJhbWVzPWUsdGhpcy5vcHRpb25zPW4sdGhpcy5fc3BlY2lhbFN0eWxlcz1vLHRoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLl9pbml0aWFsaXplZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLnRpbWU9MCx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMuY3VycmVudFNuYXBzaG90PXt9LHRoaXMuX2R1cmF0aW9uPW4uZHVyYXRpb24sdGhpcy5fZGVsYXk9bi5kZWxheXx8MCx0aGlzLnRpbWU9dGhpcy5fZHVyYXRpb24rdGhpcy5fZGVsYXl9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25Eb25lRm5zPVtdKX1pbml0KCl7dGhpcy5fYnVpbGRQbGF5ZXIoKSx0aGlzLl9wcmVwYXJlUGxheWVyQmVmb3JlU3RhcnQoKX1fYnVpbGRQbGF5ZXIoKXtpZih0aGlzLl9pbml0aWFsaXplZClyZXR1cm47dGhpcy5faW5pdGlhbGl6ZWQ9ITA7Y29uc3QgdD10aGlzLmtleWZyYW1lczt0aGlzLmRvbVBsYXllcj10aGlzLl90cmlnZ2VyV2ViQW5pbWF0aW9uKHRoaXMuZWxlbWVudCx0LHRoaXMub3B0aW9ucyksdGhpcy5fZmluYWxLZXlmcmFtZT10Lmxlbmd0aD90W3QubGVuZ3RoLTFdOnt9LHRoaXMuZG9tUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaCIsKCgpPT50aGlzLl9vbkZpbmlzaCgpKSl9X3ByZXBhcmVQbGF5ZXJCZWZvcmVTdGFydCgpe3RoaXMuX2RlbGF5P3RoaXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKTp0aGlzLmRvbVBsYXllci5wYXVzZSgpfV90cmlnZ2VyV2ViQW5pbWF0aW9uKHQsZSxuKXtyZXR1cm4gdC5hbmltYXRlKGUsbil9b25TdGFydCh0KXt0aGlzLl9vblN0YXJ0Rm5zLnB1c2godCl9b25Eb25lKHQpe3RoaXMuX29uRG9uZUZucy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaCh0KX1wbGF5KCl7dGhpcy5fYnVpbGRQbGF5ZXIoKSx0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9zdGFydGVkPSEwLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuc3RhcnQoKSksdGhpcy5kb21QbGF5ZXIucGxheSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5kb21QbGF5ZXIucGF1c2UoKX1maW5pc2goKXt0aGlzLmluaXQoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmZpbmlzaCgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5kb21QbGF5ZXIuZmluaXNoKCl9cmVzZXQoKXt0aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCksdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITF9X3Jlc2V0RG9tUGxheWVyU3RhdGUoKXt0aGlzLmRvbVBsYXllciYmdGhpcy5kb21QbGF5ZXIuY2FuY2VsKCl9cmVzdGFydCgpe3RoaXMucmVzZXQoKSx0aGlzLnBsYXkoKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCksdGhpcy5fb25GaW5pc2goKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmRlc3Ryb3koKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1zZXRQb3NpdGlvbih0KXt2b2lkIDA9PT10aGlzLmRvbVBsYXllciYmdGhpcy5pbml0KCksdGhpcy5kb21QbGF5ZXIuY3VycmVudFRpbWU9dCp0aGlzLnRpbWV9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5kb21QbGF5ZXIuY3VycmVudFRpbWUvdGhpcy50aW1lfWdldCB0b3RhbFRpbWUoKXtyZXR1cm4gdGhpcy5fZGVsYXkrdGhpcy5fZHVyYXRpb259YmVmb3JlRGVzdHJveSgpe2NvbnN0IHQ9e307dGhpcy5oYXNTdGFydGVkKCkmJk9iamVjdC5rZXlzKHRoaXMuX2ZpbmFsS2V5ZnJhbWUpLmZvckVhY2goKGU9Pnsib2Zmc2V0IiE9ZSYmKHRbZV09dGhpcy5fZmluaXNoZWQ/dGhpcy5fZmluYWxLZXlmcmFtZVtlXTpTUCh0aGlzLmVsZW1lbnQsZSkpfSkpLHRoaXMuY3VycmVudFNuYXBzaG90PXR9dHJpZ2dlckNhbGxiYWNrKHQpe2NvbnN0IGU9InN0YXJ0Ij09dD90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztlLmZvckVhY2goKHQ9PnQoKSkpLGUubGVuZ3RoPTB9fWNsYXNzIEp3e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNOYXRpdmVJbXBsPS9ce1xzKlxbbmF0aXZlXHMrY29kZVxdXHMqXH0vLnRlc3QoUXcoKS50b1N0cmluZygpKSx0aGlzLl9jc3NLZXlmcmFtZXNEcml2ZXI9bmV3IFp3fXZhbGlkYXRlU3R5bGVQcm9wZXJ0eSh0KXtyZXR1cm4gS08odCl9bWF0Y2hlc0VsZW1lbnQodCxlKXtyZXR1cm4gSk8odCxlKX1jb250YWluc0VsZW1lbnQodCxlKXtyZXR1cm4gUU8odCxlKX1xdWVyeSh0LGUsbil7cmV0dXJuICRPKHQsZSxuKX1jb21wdXRlU3R5bGUodCxlLG4pe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KVtlXX1vdmVycmlkZVdlYkFuaW1hdGlvbnNTdXBwb3J0KHQpe3RoaXMuX2lzTmF0aXZlSW1wbD10fWFuaW1hdGUodCxlLG4sbyxpLGE9W10scil7aWYoIXImJiF0aGlzLl9pc05hdGl2ZUltcGwpcmV0dXJuIHRoaXMuX2Nzc0tleWZyYW1lc0RyaXZlci5hbmltYXRlKHQsZSxuLG8saSxhKTtjb25zdCBzPXtkdXJhdGlvbjpuLGRlbGF5Om8sZmlsbDowPT1vPyJib3RoIjoiZm9yd2FyZHMifTtpJiYocy5lYXNpbmc9aSk7Y29uc3QgbD17fSxjPWEuZmlsdGVyKCh0PT50IGluc3RhbmNlb2YgS3cpKTtQUChuLG8pJiZjLmZvckVhY2goKHQ9PntsZXQgZT10LmN1cnJlbnRTbmFwc2hvdDtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT5sW3RdPWVbdF0pKX0pKTtjb25zdCBkPVR3KHQsZT13UCh0LGU9ZS5tYXAoKHQ9PnVQKHQsITEpKSksbCkpO3JldHVybiBuZXcgS3codCxlLHMsZCl9fWZ1bmN0aW9uIFF3KCl7cmV0dXJuIHpPKCkmJkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGV8fHt9fQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqL2NsYXNzICR3IGV4dGVuZHMgTU97Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX25leHRBbmltYXRpb25JZD0wO3RoaXMuX3JlbmRlcmVyPXQuY3JlYXRlUmVuZGVyZXIoZS5ib2R5LHtpZDoiMCIsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLHN0eWxlczpbXSxkYXRhOnthbmltYXRpb246W119fSl9YnVpbGQodCl7Y29uc3QgZT10aGlzLl9uZXh0QW5pbWF0aW9uSWQudG9TdHJpbmcoKTt0aGlzLl9uZXh0QW5pbWF0aW9uSWQrKztjb25zdCBuPUFycmF5LmlzQXJyYXkodCk/UE8odCk6dDtyZXR1cm4gbmsodGhpcy5fcmVuZGVyZXIsbnVsbCxlLCJyZWdpc3RlciIsW25dKSxuZXcgdGsoZSx0aGlzLl9yZW5kZXJlcil9fSR3Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkdykoVHIoUWgpLFRyKHNNKSl9LCR3Lsm1cHJvdj1Tbih7dG9rZW46JHcsZmFjdG9yeTokdy7JtWZhY30pLCR3LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UWh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJHcsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIHRrIGV4dGVuZHMgY2xhc3N7fXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5faWQ9dCx0aGlzLl9yZW5kZXJlcj1lfWNyZWF0ZSh0LGUpe3JldHVybiBuZXcgZWsodGhpcy5faWQsdCxlfHx7fSx0aGlzLl9yZW5kZXJlcil9fWNsYXNzIGVre2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuaWQ9dCx0aGlzLmVsZW1lbnQ9ZSx0aGlzLl9yZW5kZXJlcj1vLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLnRvdGFsVGltZT0wLHRoaXMuX2NvbW1hbmQoImNyZWF0ZSIsbil9X2xpc3Rlbih0LGUpe3JldHVybiB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5lbGVtZW50LGBAQCR7dGhpcy5pZH06JHt0fWAsZSl9X2NvbW1hbmQodCwuLi5lKXtyZXR1cm4gbmsodGhpcy5fcmVuZGVyZXIsdGhpcy5lbGVtZW50LHRoaXMuaWQsdCxlKX1vbkRvbmUodCl7dGhpcy5fbGlzdGVuKCJkb25lIix0KX1vblN0YXJ0KHQpe3RoaXMuX2xpc3Rlbigic3RhcnQiLHQpfW9uRGVzdHJveSh0KXt0aGlzLl9saXN0ZW4oImRlc3Ryb3kiLHQpfWluaXQoKXt0aGlzLl9jb21tYW5kKCJpbml0Iil9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLl9jb21tYW5kKCJwbGF5IiksdGhpcy5fc3RhcnRlZD0hMH1wYXVzZSgpe3RoaXMuX2NvbW1hbmQoInBhdXNlIil9cmVzdGFydCgpe3RoaXMuX2NvbW1hbmQoInJlc3RhcnQiKX1maW5pc2goKXt0aGlzLl9jb21tYW5kKCJmaW5pc2giKX1kZXN0cm95KCl7dGhpcy5fY29tbWFuZCgiZGVzdHJveSIpfXJlc2V0KCl7dGhpcy5fY29tbWFuZCgicmVzZXQiKSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe3RoaXMuX2NvbW1hbmQoInNldFBvc2l0aW9uIix0KX1nZXRQb3NpdGlvbigpe3ZhciB0LGU7cmV0dXJuIG51bGwhPT0oZT1udWxsPT09KHQ9dGhpcy5fcmVuZGVyZXIuZW5naW5lLnBsYXllcnNbK3RoaXMuaWRdKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXRQb3NpdGlvbigpKSYmdm9pZCAwIT09ZT9lOjB9fWZ1bmN0aW9uIG5rKHQsZSxuLG8saSl7cmV0dXJuIHQuc2V0UHJvcGVydHkoZSxgQEAke259OiR7b31gLGkpfWNvbnN0IG9rPSJAIixpaz0iQC5kaXNhYmxlZCI7Y2xhc3MgYWt7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZGVsZWdhdGU9dCx0aGlzLmVuZ2luZT1lLHRoaXMuX3pvbmU9bix0aGlzLl9jdXJyZW50SWQ9MCx0aGlzLl9taWNyb3Rhc2tJZD0xLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlcj1bXSx0aGlzLl9yZW5kZXJlckNhY2hlPW5ldyBNYXAsdGhpcy5fY2RSZWN1ckRlcHRoPTAsdGhpcy5wcm9taXNlPVByb21pc2UucmVzb2x2ZSgwKSxlLm9uUmVtb3ZhbENvbXBsZXRlPSh0LGUpPT57ZSYmZS5wYXJlbnROb2RlKHQpJiZlLnJlbW92ZUNoaWxkKHQucGFyZW50Tm9kZSx0KX19Y3JlYXRlUmVuZGVyZXIodCxlKXtjb25zdCBuPXRoaXMuZGVsZWdhdGUuY3JlYXRlUmVuZGVyZXIodCxlKTtpZighKHQmJmUmJmUuZGF0YSYmZS5kYXRhLmFuaW1hdGlvbikpe2xldCB0PXRoaXMuX3JlbmRlcmVyQ2FjaGUuZ2V0KG4pO3JldHVybiB0fHwodD1uZXcgcmsoIiIsbix0aGlzLmVuZ2luZSksdGhpcy5fcmVuZGVyZXJDYWNoZS5zZXQobix0KSksdH1jb25zdCBvPWUuaWQsaT1lLmlkKyItIit0aGlzLl9jdXJyZW50SWQ7dGhpcy5fY3VycmVudElkKyssdGhpcy5lbmdpbmUucmVnaXN0ZXIoaSx0KTtjb25zdCBhPWU9PntBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaChhKTp0aGlzLmVuZ2luZS5yZWdpc3RlclRyaWdnZXIobyxpLHQsZS5uYW1lLGUpfTtyZXR1cm4gZS5kYXRhLmFuaW1hdGlvbi5mb3JFYWNoKGEpLG5ldyBzayh0aGlzLGksbix0aGlzLmVuZ2luZSl9YmVnaW4oKXt0aGlzLl9jZFJlY3VyRGVwdGgrKyx0aGlzLmRlbGVnYXRlLmJlZ2luJiZ0aGlzLmRlbGVnYXRlLmJlZ2luKCl9X3NjaGVkdWxlQ291bnRUYXNrKCl7dGhpcy5wcm9taXNlLnRoZW4oKCgpPT57dGhpcy5fbWljcm90YXNrSWQrK30pKX1zY2hlZHVsZUxpc3RlbmVyQ2FsbGJhY2sodCxlLG4pe3Q+PTAmJnQ8dGhpcy5fbWljcm90YXNrSWQ/dGhpcy5fem9uZS5ydW4oKCgpPT5lKG4pKSk6KDA9PXRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlci5sZW5ndGgmJlByb21pc2UucmVzb2x2ZShudWxsKS50aGVuKCgoKT0+e3RoaXMuX3pvbmUucnVuKCgoKT0+e3RoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlci5mb3JFYWNoKCh0PT57Y29uc3RbZSxuXT10O2Uobil9KSksdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyPVtdfSkpfSkpLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlci5wdXNoKFtlLG5dKSl9ZW5kKCl7dGhpcy5fY2RSZWN1ckRlcHRoLS0sMD09dGhpcy5fY2RSZWN1ckRlcHRoJiZ0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX3NjaGVkdWxlQ291bnRUYXNrKCksdGhpcy5lbmdpbmUuZmx1c2godGhpcy5fbWljcm90YXNrSWQpfSkpLHRoaXMuZGVsZWdhdGUuZW5kJiZ0aGlzLmRlbGVnYXRlLmVuZCgpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIHRoaXMuZW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9fWFrLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhaykoVHIoUWgpLFRyKEF3KSxUcihtQykpfSxhay7JtXByb3Y9U24oe3Rva2VuOmFrLGZhY3Rvcnk6YWsuybVmYWN9KSxhay5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlFofSx7dHlwZTpBd30se3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFrLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRaH0se3R5cGU6QXd9LHt0eXBlOm1DfV19KSxudWxsKTtjbGFzcyBya3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5uYW1lc3BhY2VJZD10LHRoaXMuZGVsZWdhdGU9ZSx0aGlzLmVuZ2luZT1uLHRoaXMuZGVzdHJveU5vZGU9dGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZT90PT5lLmRlc3Ryb3lOb2RlKHQpOm51bGx9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhfWRlc3Ryb3koKXt0aGlzLmVuZ2luZS5kZXN0cm95KHRoaXMubmFtZXNwYWNlSWQsdGhpcy5kZWxlZ2F0ZSksdGhpcy5kZWxlZ2F0ZS5kZXN0cm95KCl9Y3JlYXRlRWxlbWVudCh0LGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQodCxlKX1jcmVhdGVDb21tZW50KHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQodCl9Y3JlYXRlVGV4dCh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0KHQpfWFwcGVuZENoaWxkKHQsZSl7dGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGUpLHRoaXMuZW5naW5lLm9uSW5zZXJ0KHRoaXMubmFtZXNwYWNlSWQsZSx0LCExKX1pbnNlcnRCZWZvcmUodCxlLG4sbz0hMCl7dGhpcy5kZWxlZ2F0ZS5pbnNlcnRCZWZvcmUodCxlLG4pLHRoaXMuZW5naW5lLm9uSW5zZXJ0KHRoaXMubmFtZXNwYWNlSWQsZSx0LG8pfXJlbW92ZUNoaWxkKHQsZSxuKXt0aGlzLmVuZ2luZS5vblJlbW92ZSh0aGlzLm5hbWVzcGFjZUlkLGUsdGhpcy5kZWxlZ2F0ZSxuKX1zZWxlY3RSb290RWxlbWVudCh0LGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KHQsZSl9cGFyZW50Tm9kZSh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKHQpfW5leHRTaWJsaW5nKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKHQpfXNldEF0dHJpYnV0ZSh0LGUsbixvKXt0aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGUsbixvKX1yZW1vdmVBdHRyaWJ1dGUodCxlLG4pe3RoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsZSxuKX1hZGRDbGFzcyh0LGUpe3RoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKX1yZW1vdmVDbGFzcyh0LGUpe3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX1zZXRTdHlsZSh0LGUsbixvKXt0aGlzLmRlbGVnYXRlLnNldFN0eWxlKHQsZSxuLG8pfXJlbW92ZVN0eWxlKHQsZSxuKXt0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlKHQsZSxuKX1zZXRQcm9wZXJ0eSh0LGUsbil7ZS5jaGFyQXQoMCk9PW9rJiZlPT1paz90aGlzLmRpc2FibGVBbmltYXRpb25zKHQsISFuKTp0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX1zZXRWYWx1ZSh0LGUpe3RoaXMuZGVsZWdhdGUuc2V0VmFsdWUodCxlKX1saXN0ZW4odCxlLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9ZGlzYWJsZUFuaW1hdGlvbnModCxlKXt0aGlzLmVuZ2luZS5kaXNhYmxlQW5pbWF0aW9ucyh0LGUpfX1jbGFzcyBzayBleHRlbmRzIHJre2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKGUsbixvKSx0aGlzLmZhY3Rvcnk9dCx0aGlzLm5hbWVzcGFjZUlkPWV9c2V0UHJvcGVydHkodCxlLG4pe2UuY2hhckF0KDApPT1vaz8iLiI9PWUuY2hhckF0KDEpJiZlPT1paz90aGlzLmRpc2FibGVBbmltYXRpb25zKHQsbj12b2lkIDA9PT1ufHwhIW4pOnRoaXMuZW5naW5lLnByb2Nlc3ModGhpcy5uYW1lc3BhY2VJZCx0LGUuc3Vic3RyKDEpLG4pOnRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkodCxlLG4pfWxpc3Rlbih0LGUsbil7aWYoZS5jaGFyQXQoMCk9PW9rKXtjb25zdCBvPShmdW5jdGlvbiBpKHQpe3N3aXRjaCh0KXtjYXNlImJvZHkiOnJldHVybiBkb2N1bWVudC5ib2R5O2Nhc2UiZG9jdW1lbnQiOnJldHVybiBkb2N1bWVudDtjYXNlIndpbmRvdyI6cmV0dXJuIHdpbmRvdztkZWZhdWx0OnJldHVybiB0fX0pKHQpO2xldCBhPWUuc3Vic3RyKDEpLHI9IiI7cmV0dXJuIGEuY2hhckF0KDApIT1vayYmKFthLHJdPShmdW5jdGlvbiBzKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIuIiksbj10LnN1YnN0cmluZygwLGUpLG89dC5zdWJzdHIoZSsxKTtyZXR1cm5bbixvXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShhKSksdGhpcy5lbmdpbmUubGlzdGVuKHRoaXMubmFtZXNwYWNlSWQsbyxhLHIsKHQ9Pnt0aGlzLmZhY3Rvcnkuc2NoZWR1bGVMaXN0ZW5lckNhbGxiYWNrKHQuX2RhdGF8fC0xLG4sdCl9KSl9cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX19Y2xhc3MgbGsgZXh0ZW5kcyBBd3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodC5ib2R5LGUsbil9bmdPbkRlc3Ryb3koKXt0aGlzLmZsdXNoKCl9fWxrLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsaykoVHIoc00pLFRyKG5QKSxUcigkUCkpfSxsay7JtXByb3Y9U24oe3Rva2VuOmxrLGZhY3Rvcnk6bGsuybVmYWN9KSxsay5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6blB9LHt0eXBlOiRQfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsayxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpuUH0se3R5cGU6JFB9XX0pLG51bGwpO2NvbnN0IGNrPW5ldyBlcigiQW5pbWF0aW9uTW9kdWxlVHlwZSIpLGRrPVt7cHJvdmlkZTpNTyx1c2VDbGFzczokd30se3Byb3ZpZGU6JFAsdXNlRmFjdG9yeTpmdW5jdGlvbiBwaygpe3JldHVybiBuZXcgdHd9fSx7cHJvdmlkZTpBdyx1c2VDbGFzczpsa30se3Byb3ZpZGU6UWgsdXNlRmFjdG9yeTpmdW5jdGlvbiBtayh0LGUsbil7cmV0dXJuIG5ldyBhayh0LGUsbil9LGRlcHM6W3p4LEF3LG1DXX1dLHVrPVt7cHJvdmlkZTpuUCx1c2VGYWN0b3J5OmZ1bmN0aW9uIGZrKCl7cmV0dXJuKGZ1bmN0aW9uIHQoKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUXcoKX0pKCk/bmV3IEp3Om5ldyBad319LHtwcm92aWRlOmNrLHVzZVZhbHVlOiJCcm93c2VyQW5pbWF0aW9ucyJ9LC4uLmRrXSxnaz1be3Byb3ZpZGU6blAsdXNlQ2xhc3M6ZVB9LHtwcm92aWRlOmNrLHVzZVZhbHVlOiJOb29wQW5pbWF0aW9ucyJ9LC4uLmRrXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGhre3N0YXRpYyB3aXRoQ29uZmlnKHQpe3JldHVybntuZ01vZHVsZTpoayxwcm92aWRlcnM6dC5kaXNhYmxlQW5pbWF0aW9ucz9nazp1a319fWhrLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoayl9LGhrLsm1bW9kPXVvKHt0eXBlOmhrfSksaGsuybVpbmo9RG4oe3Byb3ZpZGVyczp1ayxpbXBvcnRzOltkT119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhrLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbZE9dLHByb3ZpZGVyczp1a31dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGhrLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2RPXX19KTtjbGFzcyBia3t9YmsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGJrKX0sYmsuybVtb2Q9dW8oe3R5cGU6Ymt9KSxiay7JtWluaj1Ebih7cHJvdmlkZXJzOmdrLGltcG9ydHM6W2RPXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYmssW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltkT10scHJvdmlkZXJzOmdrfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oYmsse2V4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZE9dfX0pO2NvbnN0IHlrPXt9O2Z1bmN0aW9uIF9rKHQsZSl7aWYoeWtbdF09KHlrW3RdfHwwKSsxLCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBDayh0LCgoLi4ubik9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKC4uLm4pKSx7dHlwZTp0fSkpKTtzd2l0Y2goZT9lLl9hczoiZW1wdHkiKXtjYXNlImVtcHR5IjpyZXR1cm4gQ2sodCwoKCk9Pih7dHlwZTp0fSkpKTtjYXNlInByb3BzIjpyZXR1cm4gQ2sodCwoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHt0eXBlOnR9KSkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNvbmZpZy4iKX19ZnVuY3Rpb24gQ2sodCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInR5cGUiLHt2YWx1ZTp0LHdyaXRhYmxlOiExfSl9Y29uc3QgTWs9IkBuZ3J4L3N0b3JlL2luaXQiO2NsYXNzIHZrIGV4dGVuZHMgVXtjb25zdHJ1Y3Rvcigpe3N1cGVyKHt0eXBlOk1rfSl9bmV4dCh0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJcbiAgICAgICAgRGlzcGF0Y2ggZXhwZWN0ZWQgYW4gb2JqZWN0LCBpbnN0ZWFkIGl0IHJlY2VpdmVkIGEgZnVuY3Rpb24uXG4gICAgICAgIElmIHlvdSdyZSB1c2luZyB0aGUgY3JlYXRlQWN0aW9uIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvblxuICAgICAgICBiZWZvcmUgZGlzcGF0Y2hpbmcgdGhlIGFjdGlvbi4gRm9yIGV4YW1wbGUsIHNvbWVBY3Rpb24gc2hvdWxkIGJlIHNvbWVBY3Rpb24oKS4iKTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkFjdGlvbnMgbXVzdCBiZSBvYmplY3RzIik7aWYodm9pZCAwPT09dC50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFjdGlvbnMgbXVzdCBoYXZlIGEgdHlwZSBwcm9wZXJ0eSIpO3N1cGVyLm5leHQodCl9Y29tcGxldGUoKXt9bmdPbkRlc3Ryb3koKXtzdXBlci5jb21wbGV0ZSgpfX12ay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dmspfSx2ay7JtXByb3Y9U24oe3Rva2VuOnZrLGZhY3Rvcnk6dmsuybVmYWN9KSx2ay5jdG9yUGFyYW1ldGVycz0oKT0+W10sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2ayxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IHhrPVt2a10sT2s9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSb290IEd1YXJkIiksUGs9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBJbml0aWFsIFN0YXRlIiksd2s9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbml0aWFsIFN0YXRlIiksa2s9bmV3IGVyKCJAbmdyeC9zdG9yZSBSZWR1Y2VyIEZhY3RvcnkiKSxTaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJlZHVjZXIgRmFjdG9yeSBQcm92aWRlciIpLERrPW5ldyBlcigiQG5ncngvc3RvcmUgSW5pdGlhbCBSZWR1Y2VycyIpLFJrPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgSW5pdGlhbCBSZWR1Y2VycyIpLEVrPW5ldyBlcigiQG5ncngvc3RvcmUgU3RvcmUgRmVhdHVyZXMiKSxBaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIFN0b3JlIFJlZHVjZXJzIiksVGs9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIFJlZHVjZXJzIiksTms9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIENvbmZpZ3MiKSx6az1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIFN0b3JlIEZlYXR1cmVzIiksSWs9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIFJlZHVjZXJzIFRva2VuIiksSGs9bmV3IGVyKCJAbmdyeC9zdG9yZSBGZWF0dXJlIFJlZHVjZXJzIiksRms9bmV3IGVyKCJAbmdyeC9zdG9yZSBVc2VyIFByb3ZpZGVkIE1ldGEgUmVkdWNlcnMiKSxMaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIE1ldGEgUmVkdWNlcnMiKSxCaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJlc29sdmVkIE1ldGEgUmVkdWNlcnMiKSxWaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIFVzZXIgUnVudGltZSBDaGVja3MgQ29uZmlnIiksVWs9bmV3IGVyKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBVc2VyIFJ1bnRpbWUgQ2hlY2tzIENvbmZpZyIpLGprPW5ldyBlcigiQG5ncngvc3RvcmUgSW50ZXJuYWwgUnVudGltZSBDaGVja3MiKSxXaz1uZXcgZXIoIkBuZ3J4L3N0b3JlIENoZWNrIGlmIEFjdGlvbiB0eXBlcyBhcmUgdW5pcXVlIik7ZnVuY3Rpb24gR2sodCxlPXt9KXtjb25zdCBuPU9iamVjdC5rZXlzKHQpLG89e307Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IGk9bltlXTsiZnVuY3Rpb24iPT10eXBlb2YgdFtpXSYmKG9baV09dFtpXSl9Y29uc3QgaT1PYmplY3Qua2V5cyhvKTtyZXR1cm4gZnVuY3Rpb24gdChuLGEpe249dm9pZCAwPT09bj9lOm47bGV0IHI9ITE7Y29uc3Qgcz17fTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7Y29uc3QgZT1pW3RdLGw9bltlXSxjPSgwLG9bZV0pKGwsYSk7c1tlXT1jLHI9cnx8YyE9PWx9cmV0dXJuIHI/czpufX1mdW5jdGlvbiBZayguLi50KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG49dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdC5zbGljZSgwLC0xKS5yZWR1Y2VSaWdodCgoKHQsZSk9PmUodCkpLG4oZSkpfX1mdW5jdGlvbiBxayh0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wJiYodD1Zay5hcHBseShudWxsLFsuLi5lLHRdKSksKGUsbik9Pntjb25zdCBvPXQoZSk7cmV0dXJuKHQsZSk9Pm8odD12b2lkIDA9PT10P246dCxlKX19Y2xhc3MgWmsgZXh0ZW5kcyBUe31jbGFzcyBYayBleHRlbmRzIHZre31jbGFzcyBLayBleHRlbmRzIFV7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIobyhuLGUpKSx0aGlzLmRpc3BhdGNoZXI9dCx0aGlzLmluaXRpYWxTdGF0ZT1lLHRoaXMucmVkdWNlcnM9bix0aGlzLnJlZHVjZXJGYWN0b3J5PW99Z2V0IGN1cnJlbnRSZWR1Y2Vycygpe3JldHVybiB0aGlzLnJlZHVjZXJzfWFkZEZlYXR1cmUodCl7dGhpcy5hZGRGZWF0dXJlcyhbdF0pfWFkZEZlYXR1cmVzKHQpe2NvbnN0IGU9dC5yZWR1Y2UoKCh0LHtyZWR1Y2VyczplLHJlZHVjZXJGYWN0b3J5Om4sbWV0YVJlZHVjZXJzOm8saW5pdGlhbFN0YXRlOmksa2V5OmF9KT0+e2NvbnN0IHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU/KGZ1bmN0aW9uIHModCl7Y29uc3QgZT1BcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD4wP1lrKC4uLnQpOnQ9PnQ7cmV0dXJuKHQsbik9Pih0PWUodCksKGUsbyk9PnQoZT12b2lkIDA9PT1lP246ZSxvKSl9KShvKShlLGkpOnFrKG4sbykoZSxpKTtyZXR1cm4gdFthXT1yLHR9KSx7fSk7dGhpcy5hZGRSZWR1Y2VycyhlKX1yZW1vdmVGZWF0dXJlKHQpe3RoaXMucmVtb3ZlRmVhdHVyZXMoW3RdKX1yZW1vdmVGZWF0dXJlcyh0KXt0aGlzLnJlbW92ZVJlZHVjZXJzKHQubWFwKCh0PT50LmtleSkpKX1hZGRSZWR1Y2VyKHQsZSl7dGhpcy5hZGRSZWR1Y2Vycyh7W3RdOmV9KX1hZGRSZWR1Y2Vycyh0KXt0aGlzLnJlZHVjZXJzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnJlZHVjZXJzKSx0KSx0aGlzLnVwZGF0ZVJlZHVjZXJzKE9iamVjdC5rZXlzKHQpKX1yZW1vdmVSZWR1Y2VyKHQpe3RoaXMucmVtb3ZlUmVkdWNlcnMoW3RdKX1yZW1vdmVSZWR1Y2Vycyh0KXt0LmZvckVhY2goKHQ9Pnt0aGlzLnJlZHVjZXJzPShmdW5jdGlvbiBlKHQsbil7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcigodD0+dCE9PW4pKS5yZWR1Y2UoKChlLG4pPT5PYmplY3QuYXNzaWduKGUse1tuXTp0W25dfSkpLHt9KX0pKHRoaXMucmVkdWNlcnMsdCl9KSksdGhpcy51cGRhdGVSZWR1Y2Vycyh0KX11cGRhdGVSZWR1Y2Vycyh0KXt0aGlzLm5leHQodGhpcy5yZWR1Y2VyRmFjdG9yeSh0aGlzLnJlZHVjZXJzLHRoaXMuaW5pdGlhbFN0YXRlKSksdGhpcy5kaXNwYXRjaGVyLm5leHQoe3R5cGU6IkBuZ3J4L3N0b3JlL3VwZGF0ZS1yZWR1Y2VycyIsZmVhdHVyZXM6dH0pfW5nT25EZXN0cm95KCl7dGhpcy5jb21wbGV0ZSgpfX1Lay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S2spKFRyKFhrKSxUcih3ayksVHIoRGspLFRyKGtrKSl9LEtrLsm1cHJvdj1Tbih7dG9rZW46S2ssZmFjdG9yeTpLay7JtWZhY30pLEtrLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WGt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3a119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0RrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpba2tdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEtrLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYa30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3drXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbRGtdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltra119XX1dfSksbnVsbCk7Y29uc3QgSms9W0trLHtwcm92aWRlOlprLHVzZUV4aXN0aW5nOktrfSx7cHJvdmlkZTpYayx1c2VFeGlzdGluZzp2a31dO2NsYXNzIFFrIGV4dGVuZHMgQntuZ09uRGVzdHJveSgpe3RoaXMuY29tcGxldGUoKX19UWsuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKFFrKSkpKG58fFFrKX19KSgpLFFrLsm1cHJvdj1Tbih7dG9rZW46UWssZmFjdG9yeTpRay7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUWssW3t0eXBlOmptfV0sbnVsbCxudWxsKTtjb25zdCAkaz1bUWtdO2NsYXNzIHRTIGV4dGVuZHMgVHt9Y2xhc3MgZVMgZXh0ZW5kcyBVe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKG8pO2NvbnN0IGk9dC5waXBlKChmdW5jdGlvbiByKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLHooKGZ1bmN0aW9uKG4sbyl7bi5zdWJzY3JpYmUobmV3IEgobywoZnVuY3Rpb24obil7cmV0dXJuIG8uYWRkKHQuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG8ubmV4dChuKX0pLGUpKX0pLChmdW5jdGlvbigpe3JldHVybiBvLmFkZCh0LnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBvLmNvbXBsZXRlKCl9KSxlKSl9KSwoZnVuY3Rpb24obil7cmV0dXJuIG8uYWRkKHQuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG8uZXJyb3Iobil9KSxlKSl9KSkpfSkpfSkoc3QpKS5waXBlKHFlKGUpKS5waXBlKChmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHooYmUodCxlLGFyZ3VtZW50cy5sZW5ndGg+PTIsITApKX0pKG5TLHtzdGF0ZTpvfSkpO3RoaXMuc3RhdGVTdWJzY3JpcHRpb249aS5zdWJzY3JpYmUoKCh7c3RhdGU6dCxhY3Rpb246ZX0pPT57dGhpcy5uZXh0KHQpLG4ubmV4dChlKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmNvbXBsZXRlKCl9fWZ1bmN0aW9uIG5TKHQ9e3N0YXRlOnZvaWQgMH0sW2Usbl0pe2NvbnN0e3N0YXRlOm99PXQ7cmV0dXJue3N0YXRlOm4obyxlKSxhY3Rpb246ZX19ZVMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVTKShUcih2ayksVHIoWmspLFRyKFFrKSxUcih3aykpfSxlUy7JtXByb3Y9U24oe3Rva2VuOmVTLGZhY3Rvcnk6ZVMuybVmYWN9KSxlUy5JTklUPU1rLGVTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dmt9LHt0eXBlOlprfSx7dHlwZTpRa30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3drXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlUyxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dmt9LHt0eXBlOlprfSx7dHlwZTpRa30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3drXX1dfV19KSxudWxsKTtjb25zdCBvUz1bZVMse3Byb3ZpZGU6dFMsdXNlRXhpc3Rpbmc6ZVN9XTtjbGFzcyBpUyBleHRlbmRzIFR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5hY3Rpb25zT2JzZXJ2ZXI9ZSx0aGlzLnJlZHVjZXJNYW5hZ2VyPW4sdGhpcy5zb3VyY2U9dH1zZWxlY3QodCwuLi5lKXtyZXR1cm4gclMuY2FsbChudWxsLHQsLi4uZSkodGhpcyl9bGlmdCh0KXtjb25zdCBlPW5ldyBpUyh0aGlzLHRoaXMuYWN0aW9uc09ic2VydmVyLHRoaXMucmVkdWNlck1hbmFnZXIpO3JldHVybiBlLm9wZXJhdG9yPXQsZX1kaXNwYXRjaCh0KXt0aGlzLmFjdGlvbnNPYnNlcnZlci5uZXh0KHQpfW5leHQodCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIubmV4dCh0KX1lcnJvcih0KXt0aGlzLmFjdGlvbnNPYnNlcnZlci5lcnJvcih0KX1jb21wbGV0ZSgpe3RoaXMuYWN0aW9uc09ic2VydmVyLmNvbXBsZXRlKCl9YWRkUmVkdWNlcih0LGUpe3RoaXMucmVkdWNlck1hbmFnZXIuYWRkUmVkdWNlcih0LGUpfXJlbW92ZVJlZHVjZXIodCl7dGhpcy5yZWR1Y2VyTWFuYWdlci5yZW1vdmVSZWR1Y2VyKHQpfX1pUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVMpKFRyKHRTKSxUcih2ayksVHIoS2spKX0saVMuybVwcm92PVNuKHt0b2tlbjppUyxmYWN0b3J5OmlTLsm1ZmFjfSksaVMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp0U30se3R5cGU6dmt9LHt0eXBlOktrfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpUyxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dFN9LHt0eXBlOnZrfSx7dHlwZTpLa31dfSksbnVsbCk7Y29uc3QgYVM9W2lTXTtmdW5jdGlvbiByUyh0LGUsLi4ubil7cmV0dXJuIGZ1bmN0aW9uIG8oaSl7bGV0IGE7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBvPVtlLC4uLm5dLmZpbHRlcihCb29sZWFuKTthPWkucGlwZSgoZnVuY3Rpb24gcigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj10Lmxlbmd0aDtpZigwPT09bil0aHJvdyBuZXcgRXJyb3IoImxpc3Qgb2YgcHJvcGVydGllcyBjYW5ub3QgYmUgZW1wdHkuIik7cmV0dXJuIFZ0KChmdW5jdGlvbihlKXtmb3IodmFyIG89ZSxpPTA7aTxuO2krKyl7dmFyIGE9bnVsbD09bz92b2lkIDA6b1t0W2ldXTtpZih2b2lkIDA9PT1hKXJldHVybjtvPWF9cmV0dXJuIG99KSl9KSh0LC4uLm8pKX1lbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoYFVuZXhwZWN0ZWQgdHlwZSAnJHt0eXBlb2YgdH0nIGluIHNlbGVjdCBvcGVyYXRvciwgZXhwZWN0ZWQgJ3N0cmluZycgb3IgJ2Z1bmN0aW9uJ2ApO2E9aS5waXBlKFZ0KChuPT50KG4sZSkpKSl9cmV0dXJuIGEucGlwZSh3ZSgpKX19Y29uc3Qgc1M9Imh0dHBzOi8vbmdyeC5pby9ndWlkZS9zdG9yZS9jb25maWd1cmF0aW9uL3J1bnRpbWUtY2hlY2tzIjtmdW5jdGlvbiBsUyh0KXtyZXR1cm4gdm9pZCAwPT09dH1mdW5jdGlvbiBjUyh0KXtyZXR1cm4gbnVsbD09PXR9ZnVuY3Rpb24gZFModCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gcFModCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dH1mdW5jdGlvbiBtUyh0KXtpZighKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHBTKHQpJiYhZFModCl9KSh0KSlyZXR1cm4hMTtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gbj09PU9iamVjdC5wcm90b3R5cGV8fG51bGw9PT1ufWZ1bmN0aW9uIHVTKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGZTKHQsZSl7cmV0dXJuIHQ9PT1lfWZ1bmN0aW9uIGdTKHQsZSxuKXtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKylpZighbih0W29dLGVbb10pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGhTKHQsZT1mUyxuPWZTKXtsZXQgbyxpPW51bGwsYT1udWxsO3JldHVybnttZW1vaXplZDpmdW5jdGlvbiByKCl7aWYodm9pZCAwIT09bylyZXR1cm4gby5yZXN1bHQ7aWYoIWkpcmV0dXJuIGE9dC5hcHBseShudWxsLGFyZ3VtZW50cyksaT1hcmd1bWVudHMsYTtpZighZ1MoYXJndW1lbnRzLGksZSkpcmV0dXJuIGE7Y29uc3Qgcj10LmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gaT1hcmd1bWVudHMsbihhLHIpP2E6KGE9cixyKX0scmVzZXQ6ZnVuY3Rpb24gcygpe2k9bnVsbCxhPW51bGx9LHNldFJlc3VsdDpmdW5jdGlvbiBsKHQpe289e3Jlc3VsdDp0fX0sY2xlYXJSZXN1bHQ6ZnVuY3Rpb24gYygpe289dm9pZCAwfX19ZnVuY3Rpb24gYlMoLi4udCl7cmV0dXJuKGZ1bmN0aW9uIGUodCxuPXtzdGF0ZUZuOnlTfSl7cmV0dXJuIGZ1bmN0aW9uKC4uLmUpe2xldCBvPWU7aWYoQXJyYXkuaXNBcnJheShvWzBdKSl7Y29uc3RbdCwuLi5lXT1vO289Wy4uLnQsLi4uZV19Y29uc3QgaT1vLnNsaWNlKDAsby5sZW5ndGgtMSksYT1vW28ubGVuZ3RoLTFdLHI9aS5maWx0ZXIoKHQ9PnQucmVsZWFzZSYmImZ1bmN0aW9uIj09dHlwZW9mIHQucmVsZWFzZSkpLHM9dCgoZnVuY3Rpb24oLi4udCl7cmV0dXJuIGEuYXBwbHkobnVsbCx0KX0pKSxsPWhTKChmdW5jdGlvbih0LGUpe3JldHVybiBuLnN0YXRlRm4uYXBwbHkobnVsbCxbdCxpLGUsc10pfSkpO2Z1bmN0aW9uIGMoKXtsLnJlc2V0KCkscy5yZXNldCgpLHIuZm9yRWFjaCgodD0+dC5yZWxlYXNlKCkpKX1yZXR1cm4gT2JqZWN0LmFzc2lnbihsLm1lbW9pemVkLHtyZWxlYXNlOmMscHJvamVjdG9yOnMubWVtb2l6ZWQsc2V0UmVzdWx0Omwuc2V0UmVzdWx0LGNsZWFyUmVzdWx0OmwuY2xlYXJSZXN1bHR9KX19KShoUykoLi4udCl9ZnVuY3Rpb24geVModCxlLG4sbyl7aWYodm9pZCAwPT09bil7Y29uc3Qgbj1lLm1hcCgoZT0+ZSh0KSkpO3JldHVybiBvLm1lbW9pemVkLmFwcGx5KG51bGwsbil9Y29uc3QgaT1lLm1hcCgoZT0+ZSh0LG4pKSk7cmV0dXJuIG8ubWVtb2l6ZWQuYXBwbHkobnVsbCxbLi4uaSxuXSl9ZnVuY3Rpb24gX1ModCl7cmV0dXJuIGJTKChlPT57Y29uc3Qgbj1lW3RdO3JldHVybiBQQygpJiYhKHQgaW4gZSkmJmNvbnNvbGUud2FybihgQG5ncngvc3RvcmU6IFRoZSBmZWF0dXJlIG5hbWUgIiR7dH0iIGRvZXMgbm90IGV4aXN0IGluIHRoZSBzdGF0ZSwgdGhlcmVmb3JlIGNyZWF0ZUZlYXR1cmVTZWxlY3RvciBjYW5ub3QgYWNjZXNzIGl0LiAgQmUgc3VyZSBpdCBpcyBpbXBvcnRlZCBpbiBhIGxvYWRlZCBtb2R1bGUgdXNpbmcgU3RvcmVNb2R1bGUuZm9yUm9vdCgnJHt0fScsIC4uLikgb3IgU3RvcmVNb2R1bGUuZm9yRmVhdHVyZSgnJHt0fScsIC4uLikuICBJZiB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBpbnRlbmRlZCB0byBiZSB1bmRlZmluZWQsIGFzIGlzIHRoZSBjYXNlIHdpdGggcm91dGVyIHN0YXRlLCB0aGlzIGRldmVsb3BtZW50LW9ubHkgd2FybmluZyBtZXNzYWdlIGNhbiBiZSBpZ25vcmVkLmApLG59KSwodD0+dCkpfWZ1bmN0aW9uIENTKHQpe09iamVjdC5mcmVlemUodCk7Y29uc3QgZT11Uyh0KTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaCgobj0+e2lmKCFuLnN0YXJ0c1dpdGgoIsm1IikmJihmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSkodCxuKSYmKCFlfHwiY2FsbGVyIiE9PW4mJiJjYWxsZWUiIT09biYmImFyZ3VtZW50cyIhPT1uKSl7Y29uc3QgZT10W25dOyFwUyhlKSYmIXVTKGUpfHxPYmplY3QuaXNGcm96ZW4oZSl8fENTKGUpfX0pKSx0fWZ1bmN0aW9uIE1TKHQsZT1bXSl7aWYoKGxTKHQpfHxjUyh0KSkmJjA9PT1lLmxlbmd0aClyZXR1cm57cGF0aDpbInJvb3QiXSx2YWx1ZTp0fTtyZXR1cm4gT2JqZWN0LmtleXModCkucmVkdWNlKCgobixvKT0+e2lmKG4pcmV0dXJuIG47Y29uc3QgaT10W29dO3JldHVybihmdW5jdGlvbiBhKHQpe3JldHVybiB1Uyh0KSYmdC5oYXNPd25Qcm9wZXJ0eSgiybVjbXAiKX0pKGkpP246IShsUyhpKXx8Y1MoaSl8fChmdW5jdGlvbiByKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdH0pKGkpfHwoZnVuY3Rpb24gcyh0KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0fSkoaSl8fChmdW5jdGlvbiBsKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdH0pKGkpfHxkUyhpKSkmJihtUyhpKT9NUyhpLFsuLi5lLG9dKTp7cGF0aDpbLi4uZSxvXSx2YWx1ZTppfSl9KSwhMSl9ZnVuY3Rpb24gdlModCxlKXtpZighMT09PXQpcmV0dXJuO2NvbnN0IG49dC5wYXRoLmpvaW4oIi4iKSxvPW5ldyBFcnJvcihgRGV0ZWN0ZWQgdW5zZXJpYWxpemFibGUgJHtlfSBhdCAiJHtufSIuICR7c1N9I3N0cmljdCR7ZX1zZXJpYWxpemFiaWxpdHlgKTt0aHJvdyBvLnZhbHVlPXQudmFsdWUsby51bnNlcmlhbGl6YWJsZVBhdGg9bixvfWZ1bmN0aW9uIHhTKHQpe3JldHVybiBQQygpP09iamVjdC5hc3NpZ24oe3N0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdEFjdGlvblNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uV2l0aGluTmdab25lOiExLHN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzOiExfSx0KTp7c3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiExLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25XaXRoaW5OZ1pvbmU6ITEsc3RyaWN0QWN0aW9uVHlwZVVuaXF1ZW5lc3M6ITF9fWZ1bmN0aW9uIE9TKHtzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6dCxzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTplfSl7cmV0dXJuIG49PnR8fGU/KGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixvKXtlLmFjdGlvbihvKSYmdlMoTVMobyksImFjdGlvbiIpO2NvbnN0IGk9dChuLG8pO3JldHVybiBlLnN0YXRlKCkmJnZTKE1TKGkpLCJzdGF0ZSIpLGl9fSkobix7YWN0aW9uOmU9PnQmJiF3UyhlKSxzdGF0ZTooKT0+ZX0pOm59ZnVuY3Rpb24gUFMoe3N0cmljdEFjdGlvbkltbXV0YWJpbGl0eTp0LHN0cmljdFN0YXRlSW1tdXRhYmlsaXR5OmV9KXtyZXR1cm4gbj0+dHx8ZT8oZnVuY3Rpb24gbyh0LGUpe3JldHVybiBmdW5jdGlvbihuLG8pe2NvbnN0IGk9ZS5hY3Rpb24obyk/Q1Mobyk6byxhPXQobixpKTtyZXR1cm4gZS5zdGF0ZSgpP0NTKGEpOmF9fSkobix7YWN0aW9uOmU9PnQmJiF3UyhlKSxzdGF0ZTooKT0+ZX0pOm59ZnVuY3Rpb24gd1ModCl7cmV0dXJuIHQudHlwZS5zdGFydHNXaXRoKCJAbmdyeCIpfWZ1bmN0aW9uIGtTKHtzdHJpY3RBY3Rpb25XaXRoaW5OZ1pvbmU6dH0pe3JldHVybiBlPT50PyhmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7aWYoZS5hY3Rpb24obykmJiFtQy5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJyb3IoYEFjdGlvbiAnJHtvLnR5cGV9JyBydW5uaW5nIG91dHNpZGUgTmdab25lLiAke3NTfSNzdHJpY3RhY3Rpb253aXRoaW5uZ3pvbmVgKTtyZXR1cm4gdChuLG8pfX0pKGUse2FjdGlvbjplPT50JiYhd1MoZSl9KTplfWZ1bmN0aW9uIFNTKCl7cmV0dXJuW3twcm92aWRlOldrLG11bHRpOiEwLGRlcHM6W2prXSx1c2VGYWN0b3J5OlJTfV19ZnVuY3Rpb24gRFModCl7cmV0dXJuIHR9ZnVuY3Rpb24gUlModCl7aWYoIXQuc3RyaWN0QWN0aW9uVHlwZVVuaXF1ZW5lc3MpcmV0dXJuO2NvbnN0IGU9T2JqZWN0LmVudHJpZXMoeWspLmZpbHRlcigoKFssdF0pPT50PjEpKS5tYXAoKChbdF0pPT50KSk7aWYoZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBBY3Rpb24gdHlwZXMgYXJlIHJlZ2lzdGVyZWQgbW9yZSB0aGFuIG9uY2UsICR7ZS5tYXAoKHQ9PmAiJHt0fSJgKSkuam9pbigiLCAiKX0uICR7c1N9I3N0cmljdGFjdGlvbnR5cGV1bmlxdWVuZXNzYCl9Y2xhc3MgRVN7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe319RVMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVTKShUcih2ayksVHIoWmspLFRyKFFrKSxUcihpUyksVHIoT2ssOCksVHIoV2ssOCkpfSxFUy7JtW1vZD11byh7dHlwZTpFU30pLEVTLsm1aW5qPURuKHt9KSxFUy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZrfSx7dHlwZTpaa30se3R5cGU6UWt9LHt0eXBlOmlTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W09rXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1drXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFUyxbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZrfSx7dHlwZTpaa30se3R5cGU6UWt9LHt0eXBlOmlTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W09rXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1drXX1dfV19KSxudWxsKTtjbGFzcyBBU3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuZmVhdHVyZXM9dCx0aGlzLmZlYXR1cmVSZWR1Y2Vycz1lLHRoaXMucmVkdWNlck1hbmFnZXI9bjtjb25zdCBhPXQubWFwKCgodCxuKT0+e2NvbnN0IG89ZS5zaGlmdCgpW25dO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3JlZHVjZXJzOm8saW5pdGlhbFN0YXRlOkhTKHQuaW5pdGlhbFN0YXRlKX0pfSkpO24uYWRkRmVhdHVyZXMoYSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlZHVjZXJNYW5hZ2VyLnJlbW92ZUZlYXR1cmVzKHRoaXMuZmVhdHVyZXMpfX1BUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QVMpKFRyKHprKSxUcihIayksVHIoS2spLFRyKEVTKSxUcihXayw4KSl9LEFTLsm1bW9kPXVvKHt0eXBlOkFTfSksQVMuybVpbmo9RG4oe30pLEFTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbemtdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0hrXX1dfSx7dHlwZTpLa30se3R5cGU6RVN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbV2tdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFTLFt7dHlwZTpMXyxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbemtdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0hrXX1dfSx7dHlwZTpLa30se3R5cGU6RVN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbV2tdfV19XX0pLG51bGwpO2NsYXNzIFRTe3N0YXRpYyBmb3JSb290KHQsZT17fSl7cmV0dXJue25nTW9kdWxlOkVTLHByb3ZpZGVyczpbe3Byb3ZpZGU6T2ssdXNlRmFjdG9yeTpMUyxkZXBzOltbaVMsbmV3IEJyLG5ldyBVcl1dfSx7cHJvdmlkZTpQayx1c2VWYWx1ZTplLmluaXRpYWxTdGF0ZX0se3Byb3ZpZGU6d2ssdXNlRmFjdG9yeTpIUyxkZXBzOltQa119LHtwcm92aWRlOlJrLHVzZVZhbHVlOnR9LHtwcm92aWRlOkFrLHVzZUV4aXN0aW5nOnQgaW5zdGFuY2VvZiBlcj90OlJrfSx7cHJvdmlkZTpEayxkZXBzOltOcCxSayxbbmV3IExyKEFrKV1dLHVzZUZhY3Rvcnk6TlN9LHtwcm92aWRlOkZrLHVzZVZhbHVlOmUubWV0YVJlZHVjZXJzP2UubWV0YVJlZHVjZXJzOltdfSx7cHJvdmlkZTpCayxkZXBzOltMayxGa10sdXNlRmFjdG9yeTpGU30se3Byb3ZpZGU6U2ssdXNlVmFsdWU6ZS5yZWR1Y2VyRmFjdG9yeT9lLnJlZHVjZXJGYWN0b3J5OkdrfSx7cHJvdmlkZTprayxkZXBzOltTayxCa10sdXNlRmFjdG9yeTpxa30seGssSmssJGssb1MsYVMsKG49ZS5ydW50aW1lQ2hlY2tzLFt7cHJvdmlkZTpVayx1c2VWYWx1ZTpufSx7cHJvdmlkZTpWayx1c2VGYWN0b3J5OkRTLGRlcHM6W1VrXX0se3Byb3ZpZGU6amssZGVwczpbVmtdLHVzZUZhY3Rvcnk6eFN9LHtwcm92aWRlOkxrLG11bHRpOiEwLGRlcHM6W2prXSx1c2VGYWN0b3J5OlBTfSx7cHJvdmlkZTpMayxtdWx0aTohMCxkZXBzOltqa10sdXNlRmFjdG9yeTpPU30se3Byb3ZpZGU6TGssbXVsdGk6ITAsZGVwczpbamtdLHVzZUZhY3Rvcnk6a1N9XSksU1MoKV19O3ZhciBufXN0YXRpYyBmb3JGZWF0dXJlKHQsZSxuPXt9KXtyZXR1cm57bmdNb2R1bGU6QVMscHJvdmlkZXJzOlt7cHJvdmlkZTpOayxtdWx0aTohMCx1c2VWYWx1ZTp0IGluc3RhbmNlb2YgT2JqZWN0P3t9Om59LHtwcm92aWRlOkVrLG11bHRpOiEwLHVzZVZhbHVlOntrZXk6dCBpbnN0YW5jZW9mIE9iamVjdD90Lm5hbWU6dCxyZWR1Y2VyRmFjdG9yeTpuIGluc3RhbmNlb2YgZXJ8fCFuLnJlZHVjZXJGYWN0b3J5P0drOm4ucmVkdWNlckZhY3RvcnksbWV0YVJlZHVjZXJzOm4gaW5zdGFuY2VvZiBlcnx8IW4ubWV0YVJlZHVjZXJzP1tdOm4ubWV0YVJlZHVjZXJzLGluaXRpYWxTdGF0ZTpuIGluc3RhbmNlb2YgZXJ8fCFuLmluaXRpYWxTdGF0ZT92b2lkIDA6bi5pbml0aWFsU3RhdGV9fSx7cHJvdmlkZTp6ayxkZXBzOltOcCxOayxFa10sdXNlRmFjdG9yeTp6U30se3Byb3ZpZGU6VGssbXVsdGk6ITAsdXNlVmFsdWU6dCBpbnN0YW5jZW9mIE9iamVjdD90LnJlZHVjZXI6ZX0se3Byb3ZpZGU6SWssbXVsdGk6ITAsdXNlRXhpc3Rpbmc6ZSBpbnN0YW5jZW9mIGVyP2U6VGt9LHtwcm92aWRlOkhrLG11bHRpOiEwLGRlcHM6W05wLFRrLFtuZXcgTHIoSWspXV0sdXNlRmFjdG9yeTpJU30sU1MoKV19fX1mdW5jdGlvbiBOUyh0LGUpe3JldHVybiBlIGluc3RhbmNlb2YgZXI/dC5nZXQoZSk6ZX1mdW5jdGlvbiB6Uyh0LGUsbil7cmV0dXJuIG4ubWFwKCgobixvKT0+e2lmKGVbb11pbnN0YW5jZW9mIGVyKXtjb25zdCBpPXQuZ2V0KGVbb10pO3JldHVybntrZXk6bi5rZXkscmVkdWNlckZhY3Rvcnk6aS5yZWR1Y2VyRmFjdG9yeT9pLnJlZHVjZXJGYWN0b3J5OkdrLG1ldGFSZWR1Y2VyczppLm1ldGFSZWR1Y2Vycz9pLm1ldGFSZWR1Y2VyczpbXSxpbml0aWFsU3RhdGU6aS5pbml0aWFsU3RhdGV9fXJldHVybiBufSkpfWZ1bmN0aW9uIElTKHQsZSl7cmV0dXJuIGUubWFwKChlPT5lIGluc3RhbmNlb2YgZXI/dC5nZXQoZSk6ZSkpfWZ1bmN0aW9uIEhTKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoKTp0fWZ1bmN0aW9uIEZTKHQsZSl7cmV0dXJuIHQuY29uY2F0KGUpfWZ1bmN0aW9uIExTKHQpe2lmKHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3RvcmVNb2R1bGUuZm9yUm9vdCgpIGNhbGxlZCB0d2ljZS4gRmVhdHVyZSBtb2R1bGVzIHNob3VsZCB1c2UgU3RvcmVNb2R1bGUuZm9yRmVhdHVyZSgpIGluc3RlYWQuIik7cmV0dXJuImd1YXJkZWQifWZ1bmN0aW9uIEJTKC4uLnQpe3JldHVybntyZWR1Y2VyOnQucG9wKCksdHlwZXM6dC5tYXAoKHQ9PnQudHlwZSkpfX1mdW5jdGlvbiBWUyh0LC4uLmUpe2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBlIG9mIHQudHlwZXMpe2NvbnN0IG89bi5nZXQoZSk7aWYobyl7bi5zZXQoZSwoKGUsbik9PnQucmVkdWNlcihvKGUsbiksbikpKX1lbHNlIG4uc2V0KGUsdC5yZWR1Y2VyKX1yZXR1cm4gZnVuY3Rpb24oZT10LG8pe2NvbnN0IGk9bi5nZXQoby50eXBlKTtyZXR1cm4gaT9pKGUsbyk6ZX19VFMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRTKX0sVFMuybVtb2Q9dW8oe3R5cGU6VFN9KSxUUy7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUUyxbe3R5cGU6TF8sYXJnczpbe31dfV0sbnVsbCxudWxsKTtjb25zdCBVUz17ZGlzcGF0Y2g6ITAsdXNlRWZmZWN0c0Vycm9ySGFuZGxlcjohMH0salM9Il9fQG5ncngvZWZmZWN0c19jcmVhdGVfXyI7ZnVuY3Rpb24gV1ModCxlKXtjb25zdCBuPXQoKSxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxVUyksZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGpTLHt2YWx1ZTpvfSksbn1mdW5jdGlvbiBHUyh0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZmlsdGVyKChlPT57aWYodFtlXSYmdFtlXS5oYXNPd25Qcm9wZXJ0eShqUykpe3JldHVybiB0W2VdW2pTXS5oYXNPd25Qcm9wZXJ0eSgiZGlzcGF0Y2giKX1yZXR1cm4hMX0pKS5tYXAoKGU9Pk9iamVjdC5hc3NpZ24oe3Byb3BlcnR5TmFtZTplfSx0W2VdW2pTXSkpKX1mdW5jdGlvbiBZUyh0KXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfWNvbnN0IHFTPSJfX0BuZ3J4L2VmZmVjdHNfXyI7ZnVuY3Rpb24gWlModCl7cmV0dXJuIFlrKFhTLFlTKSh0KX1mdW5jdGlvbiBYUyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5jb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eShxUyl9KSh0KT90LmNvbnN0cnVjdG9yW3FTXTpbXX1mdW5jdGlvbiBLUyh0LGUsbil7Y29uc3Qgbz1ZUyh0KS5jb25zdHJ1Y3Rvci5uYW1lO3JldHVybiBwZSguLi4oZnVuY3Rpb24gaSh0KXtyZXR1cm5bWlMsR1NdLnJlZHVjZSgoKGUsbik9PmUuY29uY2F0KG4odCkpKSxbXSl9KSh0KS5tYXAoKCh7cHJvcGVydHlOYW1lOmksZGlzcGF0Y2g6YSx1c2VFZmZlY3RzRXJyb3JIYW5kbGVyOnJ9KT0+e2NvbnN0IHM9ImZ1bmN0aW9uIj09dHlwZW9mIHRbaV0/dFtpXSgpOnRbaV0sbD1yP24ocyxlKTpzO2lmKCExPT09YSlyZXR1cm4gbC5waXBlKHhlKCkpO3JldHVybiBsLnBpcGUoKGZ1bmN0aW9uIGMoKXtyZXR1cm4geigoZnVuY3Rpb24odCxlKXt0LnN1YnNjcmliZShuZXcgSChlLChmdW5jdGlvbih0KXtlLm5leHQoSHQuY3JlYXRlTmV4dCh0KSl9KSwoZnVuY3Rpb24oKXtlLm5leHQoSHQuY3JlYXRlQ29tcGxldGUoKSksZS5jb21wbGV0ZSgpfSksKGZ1bmN0aW9uKHQpe2UubmV4dChIdC5jcmVhdGVFcnJvcih0KSksZS5jb21wbGV0ZSgpfSkpKX0pKX0pKCkpLnBpcGUoVnQoKGU9Pih7ZWZmZWN0OnRbaV0sbm90aWZpY2F0aW9uOmUscHJvcGVydHlOYW1lOmksc291cmNlTmFtZTpvLHNvdXJjZUluc3RhbmNlOnR9KSkpKX0pKSl9ZnVuY3Rpb24gSlModCxlLG49MTApe3JldHVybiB0LnBpcGUoaGUoKG89PihlJiZlLmhhbmRsZUVycm9yKG8pLG48PTE/dDpKUyh0LGUsbi0xKSkpKSl9Y2xhc3MgUVMgZXh0ZW5kcyBUe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdCYmKHRoaXMuc291cmNlPXQpfWxpZnQodCl7Y29uc3QgZT1uZXcgUVM7cmV0dXJuIGUuc291cmNlPXRoaXMsZS5vcGVyYXRvcj10LGV9fWZ1bmN0aW9uICRTKC4uLnQpe3JldHVybiBmZSgoZT0+dC5zb21lKCh0PT4ic3RyaW5nIj09dHlwZW9mIHQ/dD09PWUudHlwZTp0LnR5cGU9PT1lLnR5cGUpKSkpfWZ1bmN0aW9uIHREKHQsZSl7aWYoIk4iPT09dC5ub3RpZmljYXRpb24ua2luZCl7Y29uc3Qgbj10Lm5vdGlmaWNhdGlvbi52YWx1ZTshKGZ1bmN0aW9uIG4odCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJnQmJnQudHlwZSYmInN0cmluZyI9PXR5cGVvZiB0LnR5cGV9KShuKSYmZS5oYW5kbGVFcnJvcihuZXcgRXJyb3IoYEVmZmVjdCAkeyhmdW5jdGlvbiBvKHtwcm9wZXJ0eU5hbWU6dCxzb3VyY2VJbnN0YW5jZTplLHNvdXJjZU5hbWU6bn0pe2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIGVbdF07cmV0dXJuYCIke259LiR7U3RyaW5nKHQpfSR7bz8iKCkiOiIifSJgfSkodCl9IGRpc3BhdGNoZWQgYW4gaW52YWxpZCBhY3Rpb246ICR7KGZ1bmN0aW9uIGkodCl7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1jYXRjaChlKXtyZXR1cm4gdH19KShuKX1gKSl9fVFTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRUykoVHIoUWspKX0sUVMuybVwcm92PVNuKHt0b2tlbjpRUyxmYWN0b3J5OlFTLsm1ZmFjfSksUVMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpULGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1FrXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRUyxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltRa119XX1dfSksbnVsbCk7ZnVuY3Rpb24gZUQodCl7cmV0dXJuIG5EKHQsIm5ncnhPbkluaXRFZmZlY3RzIil9ZnVuY3Rpb24gbkQodCxlKXtyZXR1cm4gdCYmZSBpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFtlXX1jb25zdCBvRD1uZXcgZXIoIkBuZ3J4L2VmZmVjdHMgSW50ZXJuYWwgUm9vdCBHdWFyZCIpLGlEPW5ldyBlcigiQG5ncngvZWZmZWN0cyBVc2VyIFByb3ZpZGVkIEVmZmVjdHMiKSxhRD1uZXcgZXIoIkBuZ3J4L2VmZmVjdHMgSW50ZXJuYWwgUm9vdCBFZmZlY3RzIiksckQ9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIFJvb3QgRWZmZWN0cyIpLHNEPW5ldyBlcigiQG5ncngvZWZmZWN0cyBJbnRlcm5hbCBGZWF0dXJlIEVmZmVjdHMiKSxsRD1uZXcgZXIoIkBuZ3J4L2VmZmVjdHMgRmVhdHVyZSBFZmZlY3RzIiksY0Q9bmV3IGVyKCJAbmdyeC9lZmZlY3RzIEVmZmVjdHMgRXJyb3IgSGFuZGxlciIpO2NsYXNzIGREIGV4dGVuZHMgQntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5lcnJvckhhbmRsZXI9dCx0aGlzLmVmZmVjdHNFcnJvckhhbmRsZXI9ZX1hZGRFZmZlY3RzKHQpe3RoaXMubmV4dCh0KX10b0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5waXBlKEVlKFlTKSwkdCgodD0+dC5waXBlKEVlKHBEKSkpKSwkdCgodD0+cGUodC5waXBlKFJlKCh0PT4oZnVuY3Rpb24gZSh0LG4pe3JldHVybiBlPT57Y29uc3Qgbz1LUyhlLHQsbik7cmV0dXJuKGZ1bmN0aW9uIGkodCl7cmV0dXJuIG5EKHQsIm5ncnhPblJ1bkVmZmVjdHMiKX0pKGUpP2UubmdyeE9uUnVuRWZmZWN0cyhvKTpvfX0pKHRoaXMuZXJyb3JIYW5kbGVyLHRoaXMuZWZmZWN0c0Vycm9ySGFuZGxlcikodCkpKSxWdCgodD0+KHREKHQsdGhpcy5lcnJvckhhbmRsZXIpLHQubm90aWZpY2F0aW9uKSkpLGZlKCh0PT4iTiI9PT10LmtpbmQmJm51bGwhPXQudmFsdWUpKSwoZnVuY3Rpb24gZSgpe3JldHVybiB6KChmdW5jdGlvbih0LGUpe3Quc3Vic2NyaWJlKG5ldyBIKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBGdCh0LGUpfSkpKX0pKX0pKCkpLHQucGlwZSh2ZSgxKSxmZShlRCksVnQoKHQ9PnQubmdyeE9uSW5pdEVmZmVjdHMoKSkpKSkpKSl9fWZ1bmN0aW9uIHBEKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuRCh0LCJuZ3J4T25JZGVudGlmeUVmZmVjdHMiKX0pKHQpP3QubmdyeE9uSWRlbnRpZnlFZmZlY3RzKCk6IiJ9ZEQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGREKShUcihmbCksVHIoY0QpKX0sZEQuybVwcm92PVNuKHt0b2tlbjpkRCxmYWN0b3J5OmRELsm1ZmFjfSksZEQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpmbH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2NEXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkRCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Zmx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltjRF19XX1dfSksbnVsbCk7Y2xhc3MgbUR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmVmZmVjdFNvdXJjZXM9dCx0aGlzLnN0b3JlPWUsdGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uPW51bGx9c3RhcnQoKXt0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb258fCh0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb249dGhpcy5lZmZlY3RTb3VyY2VzLnRvQWN0aW9ucygpLnN1YnNjcmliZSh0aGlzLnN0b3JlKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb24mJih0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb249bnVsbCl9fW1ELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtRCkoVHIoZEQpLFRyKGlTKSl9LG1ELsm1cHJvdj1Tbih7dG9rZW46bUQsZmFjdG9yeTptRC7JtWZhY30pLG1ELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZER9LHt0eXBlOmlTfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtRCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZER9LHt0eXBlOmlTfV19KSxudWxsKTtjb25zdCB1RD0iQG5ncngvZWZmZWN0cy9pbml0Ijtfayh1RCk7Y2xhc3MgZkR7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5zb3VyY2VzPXQsZS5zdGFydCgpLG8uZm9yRWFjaCgoZT0+dC5hZGRFZmZlY3RzKGUpKSksbi5kaXNwYXRjaCh7dHlwZTp1RH0pfWFkZEVmZmVjdHModCl7dGhpcy5zb3VyY2VzLmFkZEVmZmVjdHModCl9fWZELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmRCkoVHIoZEQpLFRyKG1EKSxUcihpUyksVHIockQpLFRyKEVTLDgpLFRyKEFTLDgpLFRyKG9ELDgpKX0sZkQuybVtb2Q9dW8oe3R5cGU6ZkR9KSxmRC7JtWluaj1Ebih7fSksZkQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpkRH0se3R5cGU6bUR9LHt0eXBlOmlTfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltyRF19XX0se3R5cGU6RVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6QVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltvRF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZkQsW3t0eXBlOkxfLGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpkRH0se3R5cGU6bUR9LHt0eXBlOmlTfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltyRF19XX0se3R5cGU6RVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6QVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltvRF19XX1dfSksbnVsbCk7Y2xhc3MgZ0R7Y29uc3RydWN0b3IodCxlLG4sbyl7ZS5mb3JFYWNoKChlPT5lLmZvckVhY2goKGU9PnQuYWRkRWZmZWN0cyhlKSkpKSl9fWdELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnRCkoVHIoZkQpLFRyKGxEKSxUcihFUyw4KSxUcihBUyw4KSl9LGdELsm1bW9kPXVvKHt0eXBlOmdEfSksZ0QuybVpbmo9RG4oe30pLGdELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZkR9LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2xEXX1dfSx7dHlwZTpFUyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpBUyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihnRCxbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmZEfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltsRF19XX0se3R5cGU6RVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6QVMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dfSksbnVsbCk7Y2xhc3MgaER7c3RhdGljIGZvckZlYXR1cmUodD1bXSl7cmV0dXJue25nTW9kdWxlOmdELHByb3ZpZGVyczpbdCx7cHJvdmlkZTpzRCxtdWx0aTohMCx1c2VWYWx1ZTp0fSx7cHJvdmlkZTppRCxtdWx0aTohMCx1c2VWYWx1ZTpbXX0se3Byb3ZpZGU6bEQsbXVsdGk6ITAsdXNlRmFjdG9yeTpiRCxkZXBzOltOcCxzRCxpRF19XX19c3RhdGljIGZvclJvb3QodD1bXSl7cmV0dXJue25nTW9kdWxlOmZELHByb3ZpZGVyczpbe3Byb3ZpZGU6Y0QsdXNlVmFsdWU6SlN9LG1ELGRELFFTLHQse3Byb3ZpZGU6YUQsdXNlVmFsdWU6W3RdfSx7cHJvdmlkZTpvRCx1c2VGYWN0b3J5OnlELGRlcHM6W1ttRCxuZXcgQnIsbmV3IFVyXSxbYUQsbmV3IFZyXV19LHtwcm92aWRlOmlELG11bHRpOiEwLHVzZVZhbHVlOltdfSx7cHJvdmlkZTpyRCx1c2VGYWN0b3J5OmJELGRlcHM6W05wLGFELGlEXX1dfX19ZnVuY3Rpb24gYkQodCxlLG4pe2NvbnN0IG89W107Zm9yKGNvbnN0IHQgb2YgZSlvLnB1c2goLi4udCk7Zm9yKGNvbnN0IHQgb2YgbilvLnB1c2goLi4udCk7cmV0dXJuKGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZS5tYXAoKGU9PnQuZ2V0KGUpKSl9KSh0LG8pfWZ1bmN0aW9uIHlEKHQsZSl7aWYoISgxPT09ZS5sZW5ndGgmJjA9PT1lWzBdLmxlbmd0aCkmJnQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRWZmZWN0c01vZHVsZS5mb3JSb290KCkgY2FsbGVkIHR3aWNlLiBGZWF0dXJlIG1vZHVsZXMgc2hvdWxkIHVzZSBFZmZlY3RzTW9kdWxlLmZvckZlYXR1cmUoKSBpbnN0ZWFkLiIpO3JldHVybiJndWFyZGVkIn12YXIgX0Q7aEQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhEKX0saEQuybVtb2Q9dW8oe3R5cGU6aER9KSxoRC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoRCxbe3R5cGU6TF8sYXJnczpbe31dfV0sbnVsbCxudWxsKSwoZnVuY3Rpb24odCl7dFt0LlVOS05PV049MF09IlVOS05PV04iLHRbdC5FWFBFUklNRU5UUz0xXT0iRVhQRVJJTUVOVFMiLHRbdC5FWFBFUklNRU5UPTJdPSJFWFBFUklNRU5UIix0W3QuQ09NUEFSRV9FWFBFUklNRU5UPTNdPSJDT01QQVJFX0VYUEVSSU1FTlQiLHRbdC5OT1RfU0VUPTRdPSJOT1RfU0VUIn0pKF9EfHwoX0Q9e30pKTtjb25zdCBDRD0iZGVmYXVsdEV4cGVyaW1lbnRJZCI7dmFyIE1EO2Z1bmN0aW9uIHZEKHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIjoiKTtpZihlPDApdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgY29sb24gZGVsaW1pdGluZyBuYW1lIGFuZCBJRDogJHt0fWApO2NvbnN0IG49dC5zbGljZSgwLGUpLG89dC5zbGljZShlKzEpO2lmKCFvKXRocm93IG5ldyBFcnJvcihgRXhwZWN0IGlkIHRvIGJlIG5vbi1mYWxzeTogJHt0fWApO3JldHVybntuYW1lOm4saWQ6b319KSl9ZnVuY3Rpb24geEQodCxlKXtzd2l0Y2godCl7Y2FzZSBfRC5FWFBFUklNRU5UOnJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZXhwZXJpbWVudElkIik/W2UuZXhwZXJpbWVudElkXTpbQ0RdO2Nhc2UgX0QuQ09NUEFSRV9FWFBFUklNRU5UOnJldHVybiB2RChlLmV4cGVyaW1lbnRJZHMpLm1hcCgoKHtpZDp0fSk9PnQpKTtjYXNlIF9ELkVYUEVSSU1FTlRTOmRlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIE9EKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0PT09ZTtpZih0LnJvdXRlS2luZCE9PWUucm91dGVLaW5kKXJldHVybiExO2NvbnN0IG49eEQodC5yb3V0ZUtpbmQsdC5wYXJhbXMpLG89eEQoZS5yb3V0ZUtpbmQsZS5wYXJhbXMpO2lmKG51bGw9PT1ufHxudWxsPT09bylyZXR1cm4gbj09PW87aWYobi5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtjb25zdCBpPW8uc29ydCgpO3JldHVybiBuLnNvcnQoKS5ldmVyeSgoKHQsZSk9PmlbZV09PT10KSl9ZnVuY3Rpb24gUEQodCl7c3dpdGNoKHQpe2Nhc2UgX0QuRVhQRVJJTUVOVFM6cmV0dXJuIE1ELkVYUEVSSU1FTlRTO2Nhc2UgX0QuRVhQRVJJTUVOVDpjYXNlIF9ELkNPTVBBUkVfRVhQRVJJTUVOVDpyZXR1cm4gTUQuREFTSEJPQVJEO2Nhc2UgX0QuVU5LTk9XTjpjYXNlIF9ELk5PVF9TRVQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHdEKHQsZSxuKXtjb25zdCBvPVBEKHQpO3JldHVybiBudWxsIT09byYmIW4uc29tZSgodD0+dC5kZWVwTGlua0dyb3VwPT09byYmdC5uYW1lc3BhY2VJZD09PWUpKX0hKGZ1bmN0aW9uKHQpe3RbdC5FWFBFUklNRU5UUz0wXT0iRVhQRVJJTUVOVFMiLHRbdC5EQVNIQk9BUkQ9MV09IkRBU0hCT0FSRCJ9KShNRHx8KE1EPXt9KSk7Y29uc3Qga0Q9e2dldEhyZWY6KCk9PndpbmRvdy5sb2NhdGlvbi5ocmVmfTtjbGFzcyBTRHtnZXRIcmVmKCl7cmV0dXJuIGtELmdldEhyZWYoKX1nZXRTZWFyY2goKXtjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCksZT1bXTtyZXR1cm4gdC5mb3JFYWNoKCgodCxuKT0+e2UucHVzaCh7a2V5Om4sdmFsdWU6dH0pfSkpLGV9Z2V0SGFzaCgpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaGFzaH1nZXRQYXRoKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1nZXRIaXN0b3J5U3RhdGUoKXtyZXR1cm4gd2luZG93Lmhpc3Rvcnkuc3RhdGV9cmVwbGFjZVN0YXRlVXJsKHQpe3dpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh3aW5kb3cuaGlzdG9yeS5zdGF0ZSwiIix0KX1wdXNoU3RhdGVVcmwodCl7d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIiIsdCl9cmVwbGFjZVN0YXRlRGF0YSh0KXt3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUodCwiIil9b25Qb3BTdGF0ZSgpe3JldHVybiBsZSh3aW5kb3csInBvcHN0YXRlIikucGlwZShWdCgodD0+KHtwYXRobmFtZTp0aGlzLmdldFBhdGgoKSxzdGF0ZTp0LnN0YXRlfSkpKSl9Z2V0UmVzb2x2ZWRQYXRoKHQpe3JldHVybiBuZXcgVVJMKHQsa0QuZ2V0SHJlZigpKS5wYXRobmFtZX1nZXRGdWxsUGF0aCh0LGUsbil7Y29uc3Qgbz10aGlzLmdldFJlc29sdmVkUGF0aCh0KTtsZXQgaT0iIjtlLmxlbmd0aCYmKGk9Ij8iKyhmdW5jdGlvbiBhKHQpe2NvbnN0IGU9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IoY29uc3R7a2V5Om4sdmFsdWU6b31vZiB0KWUuYXBwZW5kKG4sbyk7cmV0dXJuIGV9KShlKS50b1N0cmluZygpKTtyZXR1cm5gJHtvfSR7aX0ke24/dGhpcy5nZXRIYXNoKCk6IiJ9YH19U0QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNEKX0sU0QuybVwcm92PVNuKHt0b2tlbjpTRCxmYWN0b3J5OlNELsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTRCxbe3R5cGU6am19XSxudWxsLG51bGwpO2NsYXNzIEREe2NvbnN0cnVjdG9yKHQpe3RoaXMuYXBwUm9vdD10aGlzLmdldEFwcFJvb3RGcm9tTWV0YUVsZW1lbnQodCl9Z2V0QXBwUm9vdEZyb21NZXRhRWxlbWVudCh0KXtjb25zdCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQgbWV0YVtuYW1lPSJ0Yi1yZWxhdGl2ZS1yb290Il0nKTtpZighZSlyZXR1cm4iLyI7Y29uc3R7cGF0aG5hbWU6bn09bmV3IFVSTChlLmNvbnRlbnQsdC5nZXRIcmVmKCkpO3JldHVybiBuLnJlcGxhY2UoL1wvKiQvLCIvIil9Z2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0KXtyZXR1cm4gdGhpcy5hcHBSb290LnNsaWNlKDAsLTEpK3R9Z2V0QXBwUm9vdGxlc3NQYXRobmFtZSh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKHRoaXMuYXBwUm9vdCk/Ii8iK3Quc2xpY2UodGhpcy5hcHBSb290Lmxlbmd0aCk6dH19REQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEREKShUcihTRCkpfSxERC7JtXByb3Y9U24oe3Rva2VuOkRELGZhY3Rvcnk6REQuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERELFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTRH1dfSksbnVsbCk7Y2xhc3MgUkQgZXh0ZW5kcyBERHtnZXRBcHBSb290KCl7cmV0dXJuIHRoaXMuYXBwUm9vdH1zZXRBcHBSb290KHQpe3RoaXMuYXBwUm9vdD10fX1SRC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoUkQpKSkobnx8UkQpfX0pKCksUkQuybVwcm92PVNuKHt0b2tlbjpSRCxmYWN0b3J5OlJELsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSRCxbe3R5cGU6am19XSxudWxsLG51bGwpO2NsYXNzIEVEe31FRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RUQpfSxFRC7JtW1vZD11byh7dHlwZTpFRH0pLEVELsm1aW5qPURuKHtwcm92aWRlcnM6W1NEXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRUQsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6W1NEXX1dfV0sbnVsbCxudWxsKTtjbGFzcyBBRHt9QUQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFEKX0sQUQuybVtb2Q9dW8oe3R5cGU6QUR9KSxBRC7JtWluaj1Ebih7cHJvdmlkZXJzOltERF0saW1wb3J0czpbW0VEXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFELFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbRURdLHByb3ZpZGVyczpbRERdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oQUQse2ltcG9ydHM6W0VEXX0pO2NvbnN0IFREPW5ldyBlcigiW0FwcCBSb3V0aW5nXSBEaXJ0eSBVcGRhdGVzIik7Y2xhc3MgTkR7Y29uc3RydWN0b3IodCl7dGhpcy5kaXJ0eVVwZGF0ZXNTZWxlY3RvckZhY3Rvcmllcz10fWdldERpcnR5VXBkYXRlc1NlbGVjdG9ycygpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9dGhpcy5kaXJ0eVVwZGF0ZXNTZWxlY3RvckZhY3RvcmllcykmJnZvaWQgMCE9PXQ/dDpbXX1zdGF0aWMgcmVnaXN0ZXJEaXJ0eVVwZGF0ZXModCl7cmV0dXJue25nTW9kdWxlOk5ELHByb3ZpZGVyczpbe3Byb3ZpZGU6VEQsbXVsdGk6ITAsdXNlRmFjdG9yeTp0fV19fX1ORC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkQpKFRyKFRELDgpKX0sTkQuybVtb2Q9dW8oe3R5cGU6TkR9KSxORC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihORCxbe3R5cGU6TF99XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1REXX1dfV19KSxudWxsKTtjb25zdCB6RD0iZmVhdHVyZSIsSUQ9X1MoekQpLEhEPWJTKElELCh0PT50LmlzRmVhdHVyZUZsYWdzTG9hZGVkKSksRkQ9YlMoSUQsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmRlZmF1bHRGbGFncyksdC5mbGFnT3ZlcnJpZGVzKSkpLExEPWJTKElELCh0PT50LmZsYWdPdmVycmlkZXN8fHt9KSksQkQ9YlMoRkQsKHQ9PnQuaXNBdXRvRGFya01vZGVBbGxvd2VkKSksVkQ9YlMoRkQsKHQ9Pm51bGwhPT10LmVuYWJsZURhcmtNb2RlT3ZlcnJpZGU/dC5lbmFibGVEYXJrTW9kZU92ZXJyaWRlOnQuZGVmYXVsdEVuYWJsZURhcmtNb2RlKSksVUQ9YlMoRkQsKHQ9PnQuZW5hYmxlRGFya01vZGVPdmVycmlkZSkpLGpEPWJTKEZELCh0PT50LmVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zKSksV0Q9YlMoRkQsKHQ9PnQuaW5Db2xhYikpLEdEPWJTKEZELCh0PT50LmVuYWJsZWRDb2xvckdyb3VwKSksWUQ9YlMoRkQsKHQ9PnQuZW5hYmxlZENvbG9yR3JvdXBCeVJlZ2V4KSkscUQ9YlMoRkQsKHQ9PnQubWV0cmljc0ltYWdlU3VwcG9ydEVuYWJsZWQpKSxaRD1iUyhGRCwodD0+dC5lbmFibGVkTGlua2VkVGltZSkpLFhEPWJTKEZELCh0PT50LmVuYWJsZVRpbWVTZXJpZXNQcm9tb3Rpb24pKSxLRD1iUyhGRCwodD0+dC5lbmFibGVkQ2FyZFdpZHRoU2V0dGluZykpLEpEPWJTKEZELCh0PT50LmVuYWJsZWRUaW1lTmFtZXNwYWNlZFN0YXRlKSksUUQ9YlMoRkQsKHQ9PnQuZm9yY2VTdmcpKSwkRD1faygiW0FwcCBSb3V0aW5nXSBEaXNjYXJkaW5nIFVuc2F2ZWQgVXBkYXRlcyIpLHRSPV9rKCJbQXBwIFJvdXRpbmddIFN0YXRlIFJlaHlkcmF0ZWQgRnJvbSBVcmwiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlUj1faygiW0FwcCBSb3V0aW5nXSBSb3V0ZSBDb25maWcgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksblI9X2soIltBcHAgUm91dGluZ10gSW4gQXBwIE5hdmlnYXRpb24gUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksb1I9X2soIltBcHAgUm91dGluZ10gSW4gQXBwIE5hdmlnYXRpbmciLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxpUj1faygiW0FwcCBSb3V0aW5nXSBJbiBBcHAgTmF2aWdhdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYVI9bmV3IGVyKCJbQXBwIFJvdXRpbmddIFByb2dyYW1tYXRpY2FsIE5hdmlnYXRpb24gUHJvdmlkZXIiKTtjbGFzcyByUntjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb3ZpZGVycz1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHR8fFtdKXtpZih0aGlzLnByb3ZpZGVycy5oYXMoZS5hY3Rpb25DcmVhdG9yLnR5cGUpKXRocm93IG5ldyBSYW5nZUVycm9yKGAiJHtlLmFjdGlvbkNyZWF0b3IudHlwZX0iIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgbmF2LiBNdWx0aXBsZSBuYXZpZ2F0aW9ucyBvbiBzYW1lIGtpY2sgaXMgbm90IGFsbG93ZWQuYCk7dGhpcy5wcm92aWRlcnMuc2V0KGUuYWN0aW9uQ3JlYXRvci50eXBlLGUubGFtYmRhKX19Z2V0TmF2aWdhdGlvbih0KXtjb25zdCBlPXRoaXMucHJvdmlkZXJzLmdldCh0LnR5cGUpO3JldHVybiBlP2UodCk6bnVsbH1zdGF0aWMgcmVnaXN0ZXJQcm9ncmFtbWF0aWNhbE5hdmlnYXRpb24odCl7cmV0dXJue25nTW9kdWxlOnJSLHByb3ZpZGVyczpbe3Byb3ZpZGU6YVIsbXVsdGk6ITAsdXNlRmFjdG9yeTp0fV19fX1mdW5jdGlvbiBzUih0KXtyZXR1cm4gbnVsbCE9dC5yb3V0ZUtpbmR9ZnVuY3Rpb24gbFIodCl7cmV0dXJuIGZSKHQpLm1hcCgodD0+e2NvbnN0IGU9dC5zdGFydHNXaXRoKCI6Iik7cmV0dXJuIGU/e3BhdGhQYXJ0OnQsaXNQYXJhbTohMCxwYXJhbU5hbWU6dC5zbGljZSgxKX06e3BhdGhQYXJ0OnQsaXNQYXJhbTplfX0pKX1yUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8clIpKFRyKGFSLDgpKX0sclIuybVtb2Q9dW8oe3R5cGU6clJ9KSxyUi7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyUixbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbYVJdfV19XX0pLG51bGwpO2NsYXNzIGNSe2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsaWRhdGVDb25maWcodCksdGhpcy5wYXRoRnJhZ21lbnRzPWxSKHQucGF0aCksdGhpcy5wYXRoTWF0Y2hlcnM9dGhpcy5nZXRQYXRoTWF0Y2hlcnModGhpcy5wYXRoRnJhZ21lbnRzKX1zdGF0aWMgZ2V0TWF0Y2hlcih0KXtyZXR1cm4gc1IodCk/bmV3IGRSKHQpOihmdW5jdGlvbiBlKHQpe3JldHVybiB2b2lkIDAhPT10LnJlZGlyZWN0aW9uUGF0aH0pKHQpP25ldyBwUih0KTpuZXcgbVIodCl9dmFsaWRhdGVDb25maWcoe3BhdGg6dH0pe2lmKCF0LnN0YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgY29uZmlnLnBhdGggc2hvdWxkIHN0YXJ0IHdpdGggJy8nLiAke3R9YCk7bGV0IGU9MDtmb3IoOyhlPXQuaW5kZXhPZigiOiIsZSsxKSk+PTA7KXtpZigiLyIhPT10W2UtMV0pdGhyb3cgbmV3IFJhbmdlRXJyb3IoYGNvbmZpZy5wYXRoIHBhcmFtZXRlciBzaG91bGQgY29tZSBhZnRlciAnLycuICR7dH1gKTtpZih2b2lkIDA9PT10W2UrMV18fCIvIj09PXRbZSsxXSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgY29uZmlnLnBhdGggcGFyYW1ldGVyIHNob3VsZCBoYXZlIG5vbi1lbXB0eSBuYW1lLiAke3R9YCl9fWdldFBhdGhNYXRjaGVycyh0KXtyZXR1cm4gdC5tYXAoKHQ9Pntjb25zdHtwYXRoUGFydDplfT10O3JldHVybiB0LmlzUGFyYW0/ZT0+KHtpc1BhcmFtUGF0aFBhcnQ6ITAscGFydE1hdGNoZWQ6ITAscGFyYW1OYW1lOnQucGFyYW1OYW1lLHBhcmFtVmFsdWU6ZX0pOnQ9Pih7aXNQYXJhbVBhdGhQYXJ0OiExLHBhcnRNYXRjaGVkOnQ9PT1lfSl9KSl9bWF0Y2godCl7bGV0IGU9e307aWYodGhpcy5wYXRoTWF0Y2hlcnMubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJue3Jlc3VsdDohMX07bGV0IG49MDtmb3IoY29uc3QgbyBvZiB0aGlzLnBhdGhNYXRjaGVycyl7Y29uc3QgaT1vKHRbbisrXSk7aWYoIWkucGFydE1hdGNoZWQpcmV0dXJue3Jlc3VsdDohMX07aS5pc1BhcmFtUGF0aFBhcnQmJihlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7W2kucGFyYW1OYW1lXTppLnBhcmFtVmFsdWV9KSl9cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6ZSxwYXRoUGFydHM6dCxpc1JlZGlyZWN0aW9uOiExLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6dm9pZCAwfX1tYXRjaEJ5UGFyYW1zKHQpe3JldHVybntyZXN1bHQ6ITAscGFyYW1zOnQscGF0aFBhcnRzOnRoaXMucmVwcm9qZWN0UGF0aEJ5UGFyYW1zKHRoaXMucGF0aEZyYWdtZW50cyx0KSxpc1JlZGlyZWN0aW9uOiExLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6dm9pZCAwfX1yZXByb2plY3RQYXRoQnlQYXJhbXModCxlKXtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIHQpaWYoby5pc1BhcmFtKXtjb25zdHtwYXJhbU5hbWU6dH09bztpZighZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgRmFpbGVkIHRvIHJlcHJvamVjdCBwYXJhbWV0ZXIuICIke3R9IiBwYXJhbWV0ZXIgc2hvdWxkIGJlIHByZXNlbnQuYCk7bi5wdXNoKGVbdF0pfWVsc2Ugbi5wdXNoKG8ucGF0aFBhcnQpO3JldHVybiBufX1jbGFzcyBkUiBleHRlbmRzIGNSe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuZGVmaW5pdGlvbj10fX1jbGFzcyBwUiBleHRlbmRzIGNSe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuZGVmaW5pdGlvbj10LHRoaXMucmVkaXJlY3Rpb25GcmFnbWVudHM9bFIodC5yZWRpcmVjdGlvblBhdGgpfW1hdGNoKHQpe2NvbnN0IGU9c3VwZXIubWF0Y2godCk7aWYoIWUucmVzdWx0KXJldHVybiBlO2NvbnN0IG49dGhpcy5yZXByb2plY3RQYXRoQnlQYXJhbXModGhpcy5yZWRpcmVjdGlvbkZyYWdtZW50cyxlLnBhcmFtcyk7cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6ZS5wYXJhbXMscGF0aFBhcnRzOm4saXNSZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvblF1ZXJ5UGFyYW1zOnZvaWQgMH19fWNsYXNzIG1SIGV4dGVuZHMgY1J7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZWZpbml0aW9uPXR9bWF0Y2godCl7Y29uc3QgZT1zdXBlci5tYXRjaCh0KTtpZighZS5yZXN1bHQpcmV0dXJuIGU7Y29uc3R7cGF0aFBhcnRzOm4scXVlcnlQYXJhbXM6b309dGhpcy5kZWZpbml0aW9uLnJlZGlyZWN0b3IodCk7cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6ZS5wYXJhbXMscGF0aFBhcnRzOm4saXNSZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvblF1ZXJ5UGFyYW1zOm99fX1jbGFzcyB1Untjb25zdHJ1Y3Rvcih0LGU9Myl7aWYodGhpcy5tYXhSZWRpcmVjdGlvbj1lLGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigibWF4UmVkaXJlY3Rpb24gaGFzIHRvIGJlIG5vbi1uZWdhdGl2ZSBudW1iZXIiKTt0aGlzLnZhbGlkYXRlUm91dGVDb25maWdzKHQpLHRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnPW51bGwsdGhpcy5yb3V0ZUtpbmRUb0NvbmNyZXRlQ29uZmlnTWF0Y2hlcnM9bmV3IE1hcCx0aGlzLmNvbmZpZ01hdGNoZXJzPVtdO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9Y1IuZ2V0TWF0Y2hlcihlKTt0aGlzLmNvbmZpZ01hdGNoZXJzLnB1c2godCksdCBpbnN0YW5jZW9mIGRSJiYodGhpcy5yb3V0ZUtpbmRUb0NvbmNyZXRlQ29uZmlnTWF0Y2hlcnMuc2V0KHQuZGVmaW5pdGlvbi5yb3V0ZUtpbmQsdCksdC5kZWZpbml0aW9uLmRlZmF1bHRSb3V0ZSYmKHRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnPXQpKX19dmFsaWRhdGVSb3V0ZUNvbmZpZ3ModCl7Y29uc3QgZT10LmZpbHRlcihzUiksbj1lLmZpbHRlcigodD0+dC5kZWZhdWx0Um91dGUpKTtpZihuLmxlbmd0aD4xKXtjb25zdCB0PW4ubWFwKCgoe3BhdGg6dH0pPT50KSkuam9pbigiLCAiKTt0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgZGVmYXVsdFJvdXRlcy4gJHt0fWApfWlmKDE9PT1uLmxlbmd0aCl7Y29uc3R7cGF0aDp0fT1uWzBdO2lmKEJvb2xlYW4obFIodCkuZmluZCgoKHtpc1BhcmFtOnR9KT0+dCkpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQSBkZWZhdWx0Um91dGUgY2Fubm90IGhhdmUgYW55IHBhcmFtcy4gJHt0fWApfWNvbnN0IG89bmV3IFNldDtmb3IoY29uc3R7cm91dGVLaW5kOnR9b2YgZSl7aWYoby5oYXModCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE11bHRpcGxlIHJvdXRlIGNvbmZpZ3VyYXRpb24gZm9yIGtpbmQ6ICR7dH0uIENvbmZpZ3VyYXRpb25zIHNob3VsZCBoYXZlIHVuaXF1ZSByb3V0ZUtpbmRzYCk7by5hZGQodCl9fW1hdGNoKHQpe3ZhciBlO2lmKCF0LnBhdGhuYW1lLnN0YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignTmF2aWdhdGlvbiBoYXMgdG8gbWFkZSB3aXRoIHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGggIi8iJyk7bGV0IG4sbz1mUih0LnBhdGhuYW1lKSxpPTAsYT0hMTtmb3IoOzspe2xldCB0PSExO2Zvcihjb25zdCBlIG9mIHRoaXMuY29uZmlnTWF0Y2hlcnMpe2NvbnN0IGk9ZS5tYXRjaChvKTtpZihpLnJlc3VsdCl7dD0hMDtjb25zdHtwYXJhbXM6cixwYXRoUGFydHM6cyxpc1JlZGlyZWN0aW9uOmx9PWk7aWYobCl7bz1zLGE9ITAsbj1pLnJlZGlyZWN0aW9uUXVlcnlQYXJhbXM7YnJlYWt9aWYoIShlIGluc3RhbmNlb2YgZFIpKXRocm93IG5ldyBSYW5nZUVycm9yKCJObyBjb25jcmV0ZSByb3V0ZSBkZWZpbml0aW9uIGBtYXRjaGAgcmV0dXJuIHJlZGlyZWN0aW9uIik7Y29uc3R7ZGVmaW5pdGlvbjpjfT1lLGQ9e3JvdXRlS2luZDpjLnJvdXRlS2luZCxwYXJhbXM6cixwYXRobmFtZTpnUihzKSxkZWVwTGlua1Byb3ZpZGVyOmMuZGVlcExpbmtQcm92aWRlcnx8bnVsbH07cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkKSxhP3tvcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb246ITAscmVkaXJlY3Rpb25Pbmx5UXVlcnlQYXJhbXM6bn06e29yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMX0pfX1pZihhJiZpKyssIXR8fGk+dGhpcy5tYXhSZWRpcmVjdGlvbilicmVha31pZihpPnRoaXMubWF4UmVkaXJlY3Rpb24pdGhyb3cgbmV3IEVycm9yKGBQb3RlbnRpYWwgcmVkaXJlY3Rpb24gbG9vcCAocmVkaXJlY3RpbmcgbW9yZSB0aGFuICR7dGhpcy5tYXhSZWRpcmVjdGlvbn0gdGltZXMuIFBsZWFzZSBkbyBub3QgaGF2ZSBjeWNsZXMgaW4gdGhlIHJvdXRlcy5gKTtpZih0aGlzLmRlZmF1bHRSb3V0ZUNvbmZpZyl7Y29uc3R7ZGVmaW5pdGlvbjp0fT10aGlzLmRlZmF1bHRSb3V0ZUNvbmZpZztyZXR1cm57cm91dGVLaW5kOnQucm91dGVLaW5kLGRlZXBMaW5rUHJvdmlkZXI6bnVsbCE9PShlPXQuZGVlcExpbmtQcm92aWRlcikmJnZvaWQgMCE9PWU/ZTpudWxsLHBhdGhuYW1lOnQucGF0aCxwYXJhbXM6e30sb3JpZ2luYXRlRnJvbVJlZGlyZWN0aW9uOiEwLHJlZGlyZWN0aW9uT25seVF1ZXJ5UGFyYW1zOnZvaWQgMH19cmV0dXJuIG51bGx9bWF0Y2hCeVJvdXRlS2luZCh0LGUpe2NvbnN0IG49dGhpcy5yb3V0ZUtpbmRUb0NvbmNyZXRlQ29uZmlnTWF0Y2hlcnMuZ2V0KHQpO2lmKCFuKXRocm93IG5ldyBSYW5nZUVycm9yKGBSZXF1aXJlcyBjb25maWd1cmF0aW9uIGZvciByb3V0ZUtpbmQ6ICR7dH1gKTtyZXR1cm57cm91dGVLaW5kOnQscGFyYW1zOmUscGF0aG5hbWU6Z1Iobi5tYXRjaEJ5UGFyYW1zKGUpLnBhdGhQYXJ0cyksZGVlcExpbmtQcm92aWRlcjpuLmRlZmluaXRpb24uZGVlcExpbmtQcm92aWRlcnx8bnVsbCxvcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb246ITF9fX1mdW5jdGlvbiBmUih0KXtyZXR1cm4gdC5zcGxpdCgiLyIpLnNsaWNlKDEpfWZ1bmN0aW9uIGdSKHQpe3JldHVybiIvIit0LmpvaW4oIi8iKX1jb25zdCBoUj1uZXcgZXIoIltBcHAgUm91dGluZ10gUm91dGUgQ29uZmlnIik7Y2xhc3MgYlJ7Y29uc3RydWN0b3IodCl7aWYodGhpcy5yb3V0ZUtpbmRUb05nQ29tcG9uZW50PW5ldyBNYXAsIXQpcmV0dXJuIHZvaWQodGhpcy5yb3V0ZUNvbmZpZ3M9bmV3IHVSKFtdKSk7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBvZiB0KWZvcihjb25zdCB0IG9mIG4pZS5wdXNoKHQpO3RoaXMucm91dGVDb25maWdzPW5ldyB1UihlKSxlLmZvckVhY2goKHQ9PntzUih0KSYmdGhpcy5yb3V0ZUtpbmRUb05nQ29tcG9uZW50LnNldCh0LnJvdXRlS2luZCx0Lm5nQ29tcG9uZW50KX0pKX1nZXRSZWdpc3RlcmVkUm91dGVLaW5kcygpe3JldHVybiB0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQua2V5cygpfWdldFJvdXRlQ29uZmlncygpe3JldHVybiB0aGlzLnJvdXRlQ29uZmlnc31nZXROZ0NvbXBvbmVudEJ5Um91dGVLaW5kKHQpe3JldHVybiB0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQuZ2V0KHQpfHxudWxsfXN0YXRpYyByZWdpc3RlclJvdXRlcyh0KXtyZXR1cm57bmdNb2R1bGU6YlIscHJvdmlkZXJzOlt7cHJvdmlkZTpoUixtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fWJSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiUikoVHIoaFIsOCkpfSxiUi7JtW1vZD11byh7dHlwZTpiUn0pLGJSLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJSLFt7dHlwZTpMXyxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltoUl19XX1dfSksbnVsbCk7Y29uc3QgeVI9ImFwcF9yb3V0aW5nIixfUj1fUyh5UiksQ1I9YlMoX1IsKHQ9PnQuYWN0aXZlUm91dGUpKSxNUj1iUyhfUiwodD0+dC5uZXh0Um91dGUpKSx2Uj1iUyhfUiwodD0+dC5hY3RpdmVOYW1lc3BhY2VJZCkpLHhSPWJTKF9SLCh0PT50LnJlaHlkcmF0ZWREZWVwTGlua3MpKSxPUj1iUyhfUiwodD0+dC5yZWdpc3RlcmVkUm91dGVLZXlzKSksUFI9YlMoQ1IsKHQ9PnQ/dC5yb3V0ZUtpbmQ6X0QuTk9UX1NFVCkpLHdSPWJTKENSLCh0PT50P3QucGFyYW1zOnt9KSksa1I9YlMoUFIsd1IsKCh0LGUpPT54RCh0LGUpKSk7YlMoUFIsd1IsKCh0LGUpPT57aWYodCE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVClyZXR1cm57fTtjb25zdCBuPShmdW5jdGlvbiBvKHQpe2NvbnN0IGU9bmV3IE1hcCxuPXZEKHQuZXhwZXJpbWVudElkcyk7Zm9yKGNvbnN0e2lkOnQsbmFtZTpvfW9mIG4pbyYmZS5zZXQodCxvKTtyZXR1cm4gZX0pKGUpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMobi5lbnRyaWVzKCkpfSkpO2NvbnN0IFNSPWJTKFBSLHdSLCgodCxlKT0+e2lmKHQhPT1fRC5DT01QQVJFX0VYUEVSSU1FTlQpcmV0dXJue307Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtjb25zdCBlPW5ldyBNYXAsbj12RCh0LmV4cGVyaW1lbnRJZHMpO2xldCBvPTA7Zm9yKGNvbnN0e2lkOnQsbmFtZTppfW9mIG4pbysrLCFlLmhhcyh0KSYmaSYmZS5zZXQodCx7YWxpYXNUZXh0OmksYWxpYXNOdW1iZXI6b30pO3JldHVybiBlfSkoZSk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhuLmVudHJpZXMoKSl9KSksRFI9X2soIltBcHAgUm91dGluZ10gRWZmZWN0cyBJbml0Iik7dmFyIFJSOyEoZnVuY3Rpb24odCl7dFt0LlVOQ0hBTkdFRD0wXT0iVU5DSEFOR0VEIix0W3QuTkVXPTFdPSJORVciLHRbdC5GUk9NX0hJU1RPUlk9Ml09IkZST01fSElTVE9SWSJ9KShSUnx8KFJSPXt9KSk7Y2xhc3MgRVJ7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmxvY2F0aW9uPW4sdGhpcy5kaXJ0eVVwZGF0ZXNSZWdpc3RyeT1vLHRoaXMucmVnaXN0cnk9aSx0aGlzLnByb2dyYW1tYXRpY2FsTmF2TW9kdWxlPWEsdGhpcy5hcHBSb290UHJvdmlkZXI9cix0aGlzLm9uTmF2aWdhdGlvblJlcXVlc3RlZCQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKG5SKSxWdCgodD0+e3ZhciBlO3JldHVybntwYXRobmFtZTp0LnBhdGhuYW1lLnN0YXJ0c1dpdGgoIi8iKT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQucGF0aG5hbWUpOnRoaXMubG9jYXRpb24uZ2V0UmVzb2x2ZWRQYXRoKHQucGF0aG5hbWUpLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITEscmVwbGFjZVN0YXRlOm51bGwhPT0oZT10LnJlcGxhY2VTdGF0ZSkmJnZvaWQgMCE9PWUmJmUsbmFtZXNwYWNlVXBkYXRlOntvcHRpb246dC5yZXNldE5hbWVzcGFjZWRTdGF0ZT9SUi5ORVc6UlIuVU5DSEFOR0VEfX19fSkpKSx0aGlzLmJvb3RzdHJhcFJlZHVjZXJzJD1XUygoKCk9PnRoaXMuYWN0aW9ucyQucGlwZSgkUyhEUiksVnQoKCgpPT5lUih7cm91dGVLaW5kczpuZXcgU2V0KHRoaXMucmVnaXN0cnkuZ2V0UmVnaXN0ZXJlZFJvdXRlS2luZHMoKSl9KSkpKSkpLHRoaXMub25Jbml0JD10aGlzLmFjdGlvbnMkLnBpcGUoJFMoRFIpKS5waXBlKFBlKDApLFZ0KCgoKT0+e3ZhciB0O2NvbnN0IGU9bnVsbD09PSh0PXRoaXMubG9jYXRpb24uZ2V0SGlzdG9yeVN0YXRlKCkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm5hbWVzcGFjZUlkLG49dm9pZCAwPT09ZT97b3B0aW9uOlJSLk5FV306e29wdGlvbjpSUi5GUk9NX0hJU1RPUlksbmFtZXNwYWNlSWQ6ZX07cmV0dXJue3BhdGhuYW1lOnRoaXMubG9jYXRpb24uZ2V0UGF0aCgpLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITAscmVwbGFjZVN0YXRlOiEwLG5hbWVzcGFjZVVwZGF0ZTpufX19KSkpLHRoaXMub25Qb3BTdGF0ZSQ9dGhpcy5sb2NhdGlvbi5vblBvcFN0YXRlKCkucGlwZShWdCgodD0+e3ZhciBlO2NvbnN0IG49dm9pZCAwPT09KG51bGw9PT0oZT10LnN0YXRlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5uYW1lc3BhY2VJZCk/e29wdGlvbjpSUi5VTkNIQU5HRUR9OntvcHRpb246UlIuRlJPTV9ISVNUT1JZLG5hbWVzcGFjZUlkOnQuc3RhdGUubmFtZXNwYWNlSWR9O3JldHVybntwYXRobmFtZTp0LnBhdGhuYW1lLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITAscmVwbGFjZVN0YXRlOiEwLG5hbWVzcGFjZVVwZGF0ZTpufX19KSkpLHRoaXMudXNlckluaXROYXZSb3V0ZSQ9cGUodGhpcy5vbk5hdmlnYXRpb25SZXF1ZXN0ZWQkLHRoaXMub25Jbml0JCx0aGlzLm9uUG9wU3RhdGUkKS5waXBlKFZ0KCh0PT57aWYoIXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBFcnJvcihgW0FwcCByb3V0aW5nXSBwYXRobmFtZSBtdXN0IHN0YXJ0IHdpdGggJy8nLiBHb3Q6ICR7dC5wYXRobmFtZX1gKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYXRobmFtZTp0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBcHBSb290bGVzc1BhdGhuYW1lKHQucGF0aG5hbWUpfSl9KSksVnQoKHQ9Pih7cm91dGVNYXRjaDp0aGlzLnJvdXRlQ29uZmlncy5tYXRjaCh0KSxvcHRpb25zOnQub3B0aW9uc30pKSkpLHRoaXMucHJvZ3JhbW1hdGljYWxOYXZSb3V0ZSQ9dGhpcy5hY3Rpb25zJC5waXBlKFZ0KCh0PT50aGlzLnByb2dyYW1tYXRpY2FsTmF2TW9kdWxlLmdldE5hdmlnYXRpb24odCkpKSxmZSgodD0+bnVsbCE9PXQpKSxWdCgodD0+e2NvbnN0IGU9dCxuPWUucm91dGVLaW5kLG89ZS5yZXNldE5hbWVzcGFjZWRTdGF0ZTtsZXQgaTtzd2l0Y2goZS5yb3V0ZUtpbmQpe2Nhc2UgX0QuQ09NUEFSRV9FWFBFUklNRU5UOmk9e2V4cGVyaW1lbnRJZHM6KGE9ZS5yb3V0ZVBhcmFtcy5hbGlhc0FuZEV4cGVyaW1lbnRJZHMsYS5tYXAoKCh7YWxpYXM6dCxpZDplfSk9PmAke3R9OiR7ZX1gKSkuam9pbigiLCIpKX07YnJlYWs7ZGVmYXVsdDppPWUucm91dGVQYXJhbXN9dmFyIGE7cmV0dXJue3JvdXRlS2luZDpuLHJvdXRlUGFyYW1zOmkscmVzZXROYW1lc3BhY2VkU3RhdGU6b319KSksVnQoKCh7cm91dGVLaW5kOnQscm91dGVQYXJhbXM6ZSxyZXNldE5hbWVzcGFjZWRTdGF0ZTpufSk9Pih7cm91dGVNYXRjaDp0aGlzLnJvdXRlQ29uZmlncz90aGlzLnJvdXRlQ29uZmlncy5tYXRjaEJ5Um91dGVLaW5kKHQsZSk6bnVsbCxvcHRpb25zOntyZXBsYWNlU3RhdGU6ITEsYnJvd3NlckluaXRpYXRlZDohMSxuYW1lc3BhY2VVcGRhdGU6e29wdGlvbjpuP1JSLk5FVzpSUi5VTkNIQU5HRUR9fX0pKSkpLHRoaXMudmFsaWRhdGVkUm91dGVNYXRjaCQ9cGUodGhpcy51c2VySW5pdE5hdlJvdXRlJCx0aGlzLnByb2dyYW1tYXRpY2FsTmF2Um91dGUkKS5waXBlKGZlKCgoe3JvdXRlTWF0Y2g6dH0pPT5Cb29sZWFuKHQpKSksVnQoKCh7cm91dGVNYXRjaDp0LG9wdGlvbnM6ZX0pPT4oe3JvdXRlTWF0Y2g6dCxvcHRpb25zOmV9KSkpKSx0aGlzLm5hdmlnYXRlJD1XUygoKCk9PnRoaXMudmFsaWRhdGVkUm91dGVNYXRjaCQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChDUikpLCR0KCgoW3QsZV0pPT57Y29uc3Qgbj1udWxsIT09ZSYmT0QoZSx0LnJvdXRlTWF0Y2gpLG89dGhpcy5kaXJ0eVVwZGF0ZXNSZWdpc3RyeS5nZXREaXJ0eVVwZGF0ZXNTZWxlY3RvcnMoKTtyZXR1cm4gbnx8IW8ubGVuZ3RoP3p0KHQpOmllKHRoaXMuZGlydHlVcGRhdGVzUmVnaXN0cnkuZ2V0RGlydHlVcGRhdGVzU2VsZWN0b3JzKCkubWFwKCh0PT50aGlzLnN0b3JlLnNlbGVjdCh0KS5waXBlKHZlKDEpKSkpKS5waXBlKFZ0KCh0PT52b2lkIDAhPT10WzBdLmV4cGVyaW1lbnRJZHMmJnRbMF0uZXhwZXJpbWVudElkcy5sZW5ndGg+MCkpLGZlKCh0PT57aWYodCl7Y29uc3QgdD13aW5kb3cuY29uZmlybSgiWW91IGhhdmUgdW5zYXZlZCBlZGl0cywgYXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgdGhlbT8iKTtyZXR1cm4gdCYmdGhpcy5zdG9yZS5kaXNwYXRjaCgkRCgpKSx0fXJldHVybiEwfSkpLFZ0KCgoKT0+dCkpKX0pKSxxZSh0aGlzLnN0b3JlLnNlbGVjdCh4UikpLFdlKCgoW3tyb3V0ZU1hdGNoOnQsb3B0aW9uczplfSxuXSk9PntpZighZS5icm93c2VySW5pdGlhdGVkfHwhdC5kZWVwTGlua1Byb3ZpZGVyKXJldHVybjtpZihlLm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT1SUi5GUk9NX0hJU1RPUlkmJiF3RCh0LnJvdXRlS2luZCxlLm5hbWVzcGFjZVVwZGF0ZS5uYW1lc3BhY2VJZCxuKSlyZXR1cm47Y29uc3Qgbz10Lm9yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbiYmdC5yZWRpcmVjdGlvbk9ubHlRdWVyeVBhcmFtcz90LnJlZGlyZWN0aW9uT25seVF1ZXJ5UGFyYW1zOnRoaXMubG9jYXRpb24uZ2V0U2VhcmNoKCksaT10LmRlZXBMaW5rUHJvdmlkZXIuZGVzZXJpYWxpemVRdWVyeVBhcmFtcyhvKTt0aGlzLnN0b3JlLmRpc3BhdGNoKHRSKHtyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQscGFydGlhbFN0YXRlOml9KSl9KSksVmUoKChbe3JvdXRlTWF0Y2g6dCxvcHRpb25zOmV9XSk9Pm51bGw9PT10LmRlZXBMaW5rUHJvdmlkZXI/enQoe3JvdXRlOntyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQscGFyYW1zOnQucGFyYW1zfSxwYXRobmFtZTp0LnBhdGhuYW1lLHF1ZXJ5UGFyYW1zOltdLG9wdGlvbnM6ZX0pOnQuZGVlcExpbmtQcm92aWRlci5zZXJpYWxpemVTdGF0ZVRvUXVlcnlQYXJhbXModGhpcy5zdG9yZSkucGlwZShWdCgoKG4sbyk9Pih7cm91dGU6e3JvdXRlS2luZDp0LnJvdXRlS2luZCxwYXJhbXM6dC5wYXJhbXN9LHBhdGhuYW1lOnQucGF0aG5hbWUscXVlcnlQYXJhbXM6bixvcHRpb25zOjA9PT1vP2U6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtuYW1lc3BhY2VVcGRhdGU6e29wdGlvbjpSUi5VTkNIQU5HRUR9LHJlcGxhY2VTdGF0ZTohMH0pfSkpKSkpKSxXZSgoKHtyb3V0ZTp0fSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKG9SKHthZnRlcjp0fSkpfSkpLENlKDApKS5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KENSKSksVnQoKChbdCxlXSk9Pntjb25zdCBuPW51bGw9PT1lfHxudWxsPT09dC5yb3V0ZXx8T0QoZSx0LnJvdXRlKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwcmVzZXJ2ZUhhc2g6bn0pfSkpLFdlKCgoe3ByZXNlcnZlSGFzaDp0LHBhdGhuYW1lOmUscXVlcnlQYXJhbXM6bixvcHRpb25zOm99KT0+eyEoZnVuY3Rpb24gaSh0LGUpe3JldHVybiB0LnBhdGhuYW1lPT09ZS5wYXRobmFtZSYmdC5xdWVyeVBhcmFtcy5sZW5ndGg9PT1lLnF1ZXJ5UGFyYW1zLmxlbmd0aCYmdC5xdWVyeVBhcmFtcy5ldmVyeSgoKHQsbik9Pntjb25zdCBvPWUucXVlcnlQYXJhbXNbbl07cmV0dXJuIHQua2V5PT09by5rZXkmJnQudmFsdWU9PT1vLnZhbHVlfSkpfSkoe3BhdGhuYW1lOmUscXVlcnlQYXJhbXM6bn0se3BhdGhuYW1lOnRoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFwcFJvb3RsZXNzUGF0aG5hbWUodGhpcy5sb2NhdGlvbi5nZXRQYXRoKCkpLHF1ZXJ5UGFyYW1zOnRoaXMubG9jYXRpb24uZ2V0U2VhcmNoKCl9KSYmKG8ucmVwbGFjZVN0YXRlP3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlVXJsKHRoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodGhpcy5sb2NhdGlvbi5nZXRGdWxsUGF0aChlLG4sdCkpKTp0aGlzLmxvY2F0aW9uLnB1c2hTdGF0ZVVybCh0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0RnVsbFBhdGgoZSxuLHQpKSkpfSkpKS5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KENSKSx0aGlzLnN0b3JlLnNlbGVjdCh2UiksdGhpcy5zdG9yZS5zZWxlY3QoSkQpKSxWdCgoKFt7cm91dGU6dCxvcHRpb25zOmV9LG4sbyxpXSk9Pntjb25zdCBhPShmdW5jdGlvbiByKHQsZSxuLG8pe3JldHVybiB0P24ubmFtZXNwYWNlVXBkYXRlLm9wdGlvbj09PVJSLkZST01fSElTVE9SWT9uLm5hbWVzcGFjZVVwZGF0ZS5uYW1lc3BhY2VJZDpudWxsPT1vfHxuLm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT1SUi5ORVc/YCR7RGF0ZS5ub3coKS50b1N0cmluZygpfTokeyhmdW5jdGlvbiBpKCl7Y29uc3QgdD1uZXcgVWludDhBcnJheSgzMik7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyh0KTtsZXQgZT0iIjtmb3IoY29uc3QgbiBvZiB0KWUrPShuPj40KS50b1N0cmluZygxNik7cmV0dXJuIGV9KSgpfWA6bzooZnVuY3Rpb24gYSh0LGUpe3ZhciBuO3N3aXRjaCh0KXtjYXNlIF9ELkNPTVBBUkVfRVhQRVJJTUVOVDpjYXNlIF9ELkVYUEVSSU1FTlQ6e2NvbnN0IG89bnVsbCE9PShuPXhEKHQsZSkpJiZ2b2lkIDAhPT1uP246W107cmV0dXJuIG8uc29ydCgpLGAke3R9LyR7by5qb2luKCIsIil9YH1jYXNlIF9ELkVYUEVSSU1FTlRTOnJldHVybiBTdHJpbmcodCk7Y2FzZSBfRC5OT1RfU0VUOnJldHVybiJfX25vdF9zZXQiO2RlZmF1bHQ6cmV0dXJuIiJ9fSkoZS5yb3V0ZUtpbmQsZS5wYXJhbXMpfSkoaSx0LGUsbyk7cmV0dXJuIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlRGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5sb2NhdGlvbi5nZXRIaXN0b3J5U3RhdGUoKSkse25hbWVzcGFjZUlkOmF9KSksaVIoe2JlZm9yZTpuLGFmdGVyOnQsYmVmb3JlTmFtZXNwYWNlSWQ6byxhZnRlck5hbWVzcGFjZUlkOmF9KX0pKSkpKSx0aGlzLnJvdXRlQ29uZmlncz1pLmdldFJvdXRlQ29uZmlncygpfW5ncnhPbkluaXRFZmZlY3RzKCl7cmV0dXJuIERSKCl9fUVSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFUikoVHIoUVMpLFRyKGlTKSxUcihTRCksVHIoTkQpLFRyKGJSKSxUcihyUiksVHIoREQpKX0sRVIuybVwcm92PVNuKHt0b2tlbjpFUixmYWN0b3J5OkVSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFUixbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpTRH0se3R5cGU6TkR9LHt0eXBlOmJSfSx7dHlwZTpyUn0se3R5cGU6RER9XX0pLG51bGwpO2NvbnN0IEFSPVZTKHthY3RpdmVSb3V0ZTpudWxsLG5leHRSb3V0ZTpudWxsLGFjdGl2ZU5hbWVzcGFjZUlkOm51bGwscmVoeWRyYXRlZERlZXBMaW5rczpbXSxyZWdpc3RlcmVkUm91dGVLZXlzOm5ldyBTZXR9LEJTKG9SLCgodCx7YWZ0ZXI6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse25leHRSb3V0ZTplfSkpKSxCUyhpUiwoKHQse2FmdGVyOmUsYWZ0ZXJOYW1lc3BhY2VJZDpufSk9PntsZXQgbz10LnJlaHlkcmF0ZWREZWVwTGlua3M7cmV0dXJuIHdEKGUucm91dGVLaW5kLG4sbykmJihvPVsuLi5vXSxvLnB1c2goe2RlZXBMaW5rR3JvdXA6UEQoZS5yb3V0ZUtpbmQpLG5hbWVzcGFjZUlkOm59KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVSb3V0ZTplLG5leHRSb3V0ZTpudWxsLGFjdGl2ZU5hbWVzcGFjZUlkOm4scmVoeWRyYXRlZERlZXBMaW5rczpvfSl9KSksQlMoZVIsKCh0LHtyb3V0ZUtpbmRzOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWdpc3RlcmVkUm91dGVLZXlzOmV9KSkpKTtmdW5jdGlvbiBUUih0LGUpe3JldHVybiBBUih0LGUpfWNsYXNzIE5Se31OUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TlIpfSxOUi7JtW1vZD11byh7dHlwZTpOUn0pLE5SLsm1aW5qPURuKHtwcm92aWRlcnM6W05ELHJSXSxpbXBvcnRzOltbYlIsVFMuZm9yRmVhdHVyZSh5UixUUiksaEQuZm9yRmVhdHVyZShbRVJdKSxBRCxFRF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOUixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2JSLFRTLmZvckZlYXR1cmUoeVIsVFIpLGhELmZvckZlYXR1cmUoW0VSXSksQUQsRURdLHByb3ZpZGVyczpbTkQsclJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oTlIse2ltcG9ydHM6W2JSLEFTLGdELEFELEVEXX0pO2NvbnN0IHpSPSJfX3RhYl9fIjtjbGFzcyBJUntjb25zdHJ1Y3Rvcigpe3RoaXMudGZTdG9yYWdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKTtkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1nbG9iYWxzIikudGZfZ2xvYmFscy5zZXRVc2VIYXNoKCEwKSx0aGlzLnRmU3RvcmFnZS50Zl9zdG9yYWdlLm1pZ3JhdGVMZWdhY3lVUkxTY2hlbWUoKX1nZXRTdHJpbmcodCl7cmV0dXJuIHRoaXMudGZTdG9yYWdlLnRmX3N0b3JhZ2UuZ2V0U3RyaW5nKHQpfXNldFN0cmluZyh0LGUsbil7dGhpcy50ZlN0b3JhZ2UudGZfc3RvcmFnZS5zZXRTdHJpbmcodCxlLG4pfWdldFBsdWdpbklkKCl7cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKHpSKX1zZXRQbHVnaW5JZCh0LGUpe3RoaXMuc2V0U3RyaW5nKHpSLHQsZSl9fUlSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJUil9LElSLsm1cHJvdj1Tbih7dG9rZW46SVIsZmFjdG9yeTpJUi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSVIsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBIUnt9Y29uc3QgRlI9bmV3IGVyKCJbUGVyc2lzdGVudCBTZXR0aW5nc10gR2xvYmFsIFNldHRpbmdzIik7Y2xhc3MgTFJ7Y29uc3RydWN0b3IodCl7dGhpcy5nbG9iYWxTZXR0aW5nU2VsZWN0b3JzPVtdLHQmJih0aGlzLmdsb2JhbFNldHRpbmdTZWxlY3RvcnM9dC5tYXAoKHQ9PnQoKSkpKX1nZXRHbG9iYWxTZXR0aW5nU2VsZWN0b3JzKCl7dmFyIHQ7cmV0dXJuIG51bGwhPT0odD10aGlzLmdsb2JhbFNldHRpbmdTZWxlY3RvcnMpJiZ2b2lkIDAhPT10P3Q6W119c3RhdGljIGRlZmluZUdsb2JhbFNldHRpbmcodCl7cmV0dXJue25nTW9kdWxlOkxSLHByb3ZpZGVyczpbe3Byb3ZpZGU6RlIsbXVsdGk6ITAsdXNlVmFsdWU6dH1dfX19dmFyIEJSO0xSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMUikoVHIoRlIsOCkpfSxMUi7JtW1vZD11byh7dHlwZTpMUn0pLExSLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKExSLFt7dHlwZTpMX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbRlJdfV19XX0pLG51bGwpLChmdW5jdGlvbih0KXt0LkJST1dTRVJfREVGQVVMVD0iYnJvd3Nlcl9kZWZhdWx0Iix0LkxJR0hUPSJsaWdodCIsdC5EQVJLPSJkYXJrIn0pKEJSfHwoQlI9e30pKTtjb25zdCBWUj0iX3RiX2dsb2JhbF9zZXR0aW5ncy50aW1lc2VyaWVzIixVUj0iX3RiX2dsb2JhbF9zZXR0aW5ncyIsalI9Im5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZXN0YW1wIjtjbGFzcyBXUnt9V1IuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFdSKX0sV1IuybVwcm92PVNuKHt0b2tlbjpXUixmYWN0b3J5OldSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXUixbe3R5cGU6am19XSxudWxsLG51bGwpO2NsYXNzIEdSe31HUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R1IpfSxHUi7JtXByb3Y9U24oe3Rva2VuOkdSLGZhY3Rvcnk6R1IuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdSLFt7dHlwZTpqbX1dLG51bGwsbnVsbCk7Y2xhc3MgWVIgZXh0ZW5kcyBHUnt1aVRvQmFja2VuZCh0KXtjb25zdCBlPXt9O3JldHVybiB2b2lkIDAhPT10Lmlnbm9yZU91dGxpZXJzJiYoZS5pZ25vcmVPdXRsaWVycz10Lmlnbm9yZU91dGxpZXJzKSx2b2lkIDAhPT10LnNjYWxhclNtb290aGluZyYmKGUuc2NhbGFyU21vb3RoaW5nPXQuc2NhbGFyU21vb3RoaW5nKSx2b2lkIDAhPT10LnRvb2x0aXBTb3J0U3RyaW5nJiYoZS50b29sdGlwU29ydD10LnRvb2x0aXBTb3J0U3RyaW5nKSx2b2lkIDAhPT10LmF1dG9SZWxvYWQmJihlLmF1dG9SZWxvYWQ9dC5hdXRvUmVsb2FkKSx2b2lkIDAhPT10LmF1dG9SZWxvYWRQZXJpb2RJbk1zJiYoZS5hdXRvUmVsb2FkUGVyaW9kSW5Ncz10LmF1dG9SZWxvYWRQZXJpb2RJbk1zKSx2b2lkIDAhPT10LnBhZ2VTaXplJiYoZS5wYWdpbmF0aW9uU2l6ZT10LnBhZ2VTaXplKSx2b2lkIDAhPT10LnRoZW1lT3ZlcnJpZGUmJihlLnRoZW1lPXQudGhlbWVPdmVycmlkZSksdm9pZCAwIT09dC5ub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zJiYoZS5ub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zPXQubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5Ncyksdm9pZCAwIT09dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQmJihlLnNpZGVCYXJXaWR0aEluUGVyY2VudD10LnNpZGVCYXJXaWR0aEluUGVyY2VudCksdm9pZCAwIT09dC50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkJiYoZS50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkPXQudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZCksdm9pZCAwIT09dC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkJiYoZS50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkPXQudGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZCksdm9pZCAwIT09dC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoJiYoZS50aW1lU2VyaWVzQ2FyZE1pbldpZHRoPXQudGltZVNlcmllc0NhcmRNaW5XaWR0aCksZX1iYWNrZW5kVG9VaSh0KXtjb25zdCBlPXt9O3JldHVybiB0Lmhhc093blByb3BlcnR5KCJzY2FsYXJTbW9vdGhpbmciKSYmIm51bWJlciI9PXR5cGVvZiB0LnNjYWxhclNtb290aGluZyYmKGUuc2NhbGFyU21vb3RoaW5nPXQuc2NhbGFyU21vb3RoaW5nKSx0Lmhhc093blByb3BlcnR5KCJpZ25vcmVPdXRsaWVycyIpJiYiYm9vbGVhbiI9PXR5cGVvZiB0Lmlnbm9yZU91dGxpZXJzJiYoZS5pZ25vcmVPdXRsaWVycz10Lmlnbm9yZU91dGxpZXJzKSx0Lmhhc093blByb3BlcnR5KCJ0b29sdGlwU29ydCIpJiYic3RyaW5nIj09dHlwZW9mIHQudG9vbHRpcFNvcnQmJihlLnRvb2x0aXBTb3J0U3RyaW5nPXQudG9vbHRpcFNvcnQpLHQuaGFzT3duUHJvcGVydHkoImF1dG9SZWxvYWQiKSYmImJvb2xlYW4iPT10eXBlb2YgdC5hdXRvUmVsb2FkJiYoZS5hdXRvUmVsb2FkPXQuYXV0b1JlbG9hZCksdC5oYXNPd25Qcm9wZXJ0eSgiYXV0b1JlbG9hZFBlcmlvZEluTXMiKSYmIm51bWJlciI9PXR5cGVvZiB0LmF1dG9SZWxvYWRQZXJpb2RJbk1zJiYoZS5hdXRvUmVsb2FkUGVyaW9kSW5Ncz10LmF1dG9SZWxvYWRQZXJpb2RJbk1zKSx0Lmhhc093blByb3BlcnR5KCJwYWdpbmF0aW9uU2l6ZSIpJiYibnVtYmVyIj09dHlwZW9mIHQucGFnaW5hdGlvblNpemUmJihlLnBhZ2VTaXplPXQucGFnaW5hdGlvblNpemUpLHQuaGFzT3duUHJvcGVydHkoInRoZW1lIikmJiJzdHJpbmciPT10eXBlb2YgdC50aGVtZSYmbmV3IFNldChPYmplY3QudmFsdWVzKEJSKSkuaGFzKHQudGhlbWUpJiYoZS50aGVtZU92ZXJyaWRlPXQudGhlbWUpLHQuaGFzT3duUHJvcGVydHkoIm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMiKSYmIm51bWJlciI9PXR5cGVvZiB0Lm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMmJihlLm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM9dC5ub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zKSx0Lmhhc093blByb3BlcnR5KCJzaWRlQmFyV2lkdGhJblBlcmNlbnQiKSYmIm51bWJlciI9PXR5cGVvZiB0LnNpZGVCYXJXaWR0aEluUGVyY2VudCYmKGUuc2lkZUJhcldpZHRoSW5QZXJjZW50PXQuc2lkZUJhcldpZHRoSW5QZXJjZW50KSx0Lmhhc093blByb3BlcnR5KCJ0aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkIikmJiJib29sZWFuIj09dHlwZW9mIHQudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZCYmKGUudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZD10LnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQpLHQuaGFzT3duUHJvcGVydHkoInRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQiKSYmImJvb2xlYW4iPT10eXBlb2YgdC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkJiYoZS50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkPXQudGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZCksdC5oYXNPd25Qcm9wZXJ0eSgidGltZVNlcmllc0NhcmRNaW5XaWR0aCIpJiYibnVtYmVyIj09dHlwZW9mIHQudGltZVNlcmllc0NhcmRNaW5XaWR0aCYmKGUudGltZVNlcmllc0NhcmRNaW5XaWR0aD10LnRpbWVTZXJpZXNDYXJkTWluV2lkdGgpLGV9fVlSLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYShZUikpKShufHxZUil9fSkoKSxZUi7JtXByb3Y9U24oe3Rva2VuOllSLGZhY3Rvcnk6WVIuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlSLFt7dHlwZTpqbX1dLG51bGwsbnVsbCk7Y2xhc3MgcVJ7Y29uc3RydWN0b3IodCl7dGhpcy5jb252ZXJ0ZXI9dH1zZXRTZXR0aW5ncyh0KXtyZXR1cm4gT2JqZWN0LmtleXModCk/dGhpcy5nZXRTZXR0aW5ncygpLnBpcGUoV2UoKGU9Pntsb2NhbFN0b3JhZ2Uuc2V0SXRlbShVUixKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnZlcnRlci51aVRvQmFja2VuZChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksdCkpKSksbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVlIpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGpSKX0pKSxWdCgoKCk9Pnt9KSkpOmR0fWRlc2VyaWFsaXplKHQpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm57fX19Z2V0U2V0dGluZ3MoKXt2YXIgdCxlO2NvbnN0IG49bG9jYWxTdG9yYWdlLmdldEl0ZW0oalIpLG89dGhpcy5jb252ZXJ0ZXIuYmFja2VuZFRvVWkodGhpcy5kZXNlcmlhbGl6ZShuP0pTT04uc3RyaW5naWZ5KHtub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zOk51bWJlcihuKX0pOiJ7fSIpKSxpPXRoaXMuY29udmVydGVyLmJhY2tlbmRUb1VpKHRoaXMuZGVzZXJpYWxpemUobnVsbCE9PSh0PWxvY2FsU3RvcmFnZS5nZXRJdGVtKFZSKSkmJnZvaWQgMCE9PXQ/dDoie30iKSksYT10aGlzLmNvbnZlcnRlci5iYWNrZW5kVG9VaSh0aGlzLmRlc2VyaWFsaXplKG51bGwhPT0oZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShVUikpJiZ2b2lkIDAhPT1lP2U6Int9IikpO3JldHVybiB6dChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSxpKSxhKSl9fXFSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxUikoVHIoR1IpKX0scVIuybVwcm92PVNuKHt0b2tlbjpxUixmYWN0b3J5OnFSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihxUixbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6R1J9XX0pLG51bGwpO2NsYXNzIFpSe31aUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WlIpfSxaUi7JtW1vZD11byh7dHlwZTpaUn0pLFpSLsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOldSLHVzZUNsYXNzOnFSfSxZUix7cHJvdmlkZTpHUix1c2VFeGlzdGluZzpZUn1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihaUixbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpbe3Byb3ZpZGU6V1IsdXNlQ2xhc3M6cVJ9LFlSLHtwcm92aWRlOkdSLHVzZUV4aXN0aW5nOllSfV19XX1dLG51bGwsbnVsbCk7Y29uc3QgWFI9X2soIltQZXJzaXN0ZW50IFNldHRpbmdzXSBHbG9iYWwgU2V0dGluZ3MgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksS1I9X2soIltQZXJzaXN0ZW50IFNldHRpbmdzXSBFZmZlY3RzIEluaXQiKTtjbGFzcyBKUntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuY29uZmlnTW9kdWxlPW4sdGhpcy5kYXRhU291cmNlPW8sdGhpcy5pbml0aWFsaXplQW5kVXBkYXRlU2V0dGluZ3MkPVdTKCgoKT0+e2NvbnN0IHQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKEtSKSwkdCgoKCk9PnRoaXMuZGF0YVNvdXJjZS5nZXRTZXR0aW5ncygpKSksV2UoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFhSKHtwYXJ0aWFsU2V0dGluZ3M6dH0pKX0pKSxQZSgwKSwkdCgoKCk9PnBlKC4uLnRoaXMuY29uZmlnTW9kdWxlLmdldEdsb2JhbFNldHRpbmdTZWxlY3RvcnMoKS5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KHQpLnBpcGUod2UoKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QudmFsdWVzKHQpLG89T2JqZWN0LnZhbHVlcyhlKTtyZXR1cm4gbi5sZW5ndGg9PT1vLmxlbmd0aCYmbi5ldmVyeSgoKHQsZSk9PnQ9PT1vW2VdKSl9KSksTGUoMSkpKSkpKSksSWUoKSk7cmV0dXJuIHQucGlwZSgoZnVuY3Rpb24gZSh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt2YXIgbz1bXTtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IEgobiwoZnVuY3Rpb24odCl7cmV0dXJuIG8ucHVzaCh0KX0pLChmdW5jdGlvbigpe24ubmV4dChvKSxuLmNvbXBsZXRlKCl9KSkpLHQuc3Vic2NyaWJlKG5ldyBIKG4sKGZ1bmN0aW9uKCl7dmFyIHQ9bztvPVtdLG4ubmV4dCh0KX0pLE0pKSxmdW5jdGlvbigpe289bnVsbH19KSl9KSh0LnBpcGUoQ2UoNTAwKSkpLCR0KCh0PT57Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0KU9iamVjdC5hc3NpZ24oZSxuKTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLnNldFNldHRpbmdzKGUpfSkpKX0pLHtkaXNwYXRjaDohMX0pfW5ncnhPbkluaXRFZmZlY3RzKCl7cmV0dXJuIEtSKCl9fUpSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKUikoVHIoUVMpLFRyKGlTKSxUcihMUiksVHIoV1IpKX0sSlIuybVwcm92PVNuKHt0b2tlbjpKUixmYWN0b3J5OkpSLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKUixbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpMUn0se3R5cGU6V1J9XX0pLG51bGwpO2NsYXNzIFFSe31RUi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UVIpfSxRUi7JtW1vZD11byh7dHlwZTpRUn0pLFFSLsm1aW5qPURuKHtwcm92aWRlcnM6W0xSXSxpbXBvcnRzOltbaEQuZm9yRmVhdHVyZShbSlJdKSxaUl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRUixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2hELmZvckZlYXR1cmUoW0pSXSksWlJdLHByb3ZpZGVyczpbTFJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oUVIse2ltcG9ydHM6W2dELFpSXX0pOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyAkUnt9Y2xhc3MgdEV7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBlRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLm5vcm1hbGl6ZWROYW1lcz1uZXcgTWFwLHRoaXMubGF6eVVwZGF0ZT1udWxsLHQ/dGhpcy5sYXp5SW5pdD0ic3RyaW5nIj09dHlwZW9mIHQ/KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCx0LnNwbGl0KCJcbiIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuaW5kZXhPZigiOiIpO2lmKGU+MCl7Y29uc3Qgbj10LnNsaWNlKDAsZSksbz1uLnRvTG93ZXJDYXNlKCksaT10LnNsaWNlKGUrMSkudHJpbSgpO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZShuLG8pLHRoaXMuaGVhZGVycy5oYXMobyk/dGhpcy5oZWFkZXJzLmdldChvKS5wdXNoKGkpOnRoaXMuaGVhZGVycy5zZXQobyxbaV0pfX0pKX06KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57bGV0IG49dFtlXTtjb25zdCBvPWUudG9Mb3dlckNhc2UoKTsic3RyaW5nIj09dHlwZW9mIG4mJihuPVtuXSksbi5sZW5ndGg+MCYmKHRoaXMuaGVhZGVycy5zZXQobyxuKSx0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoZSxvKSl9KSl9OnRoaXMuaGVhZGVycz1uZXcgTWFwfWhhcyh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5oZWFkZXJzLmhhcyh0LnRvTG93ZXJDYXNlKCkpfWdldCh0KXt0aGlzLmluaXQoKTtjb25zdCBlPXRoaXMuaGVhZGVycy5nZXQodC50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gZSYmZS5sZW5ndGg+MD9lWzBdOm51bGx9a2V5cygpe3JldHVybiB0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKX1nZXRBbGwodCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5nZXQodC50b0xvd2VyQ2FzZSgpKXx8bnVsbH1hcHBlbmQodCxlKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTp0LHZhbHVlOmUsb3A6ImEifSl9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6dCx2YWx1ZTplLG9wOiJzIn0pfWRlbGV0ZSh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOnQsdmFsdWU6ZSxvcDoiZCJ9KX1tYXliZVNldE5vcm1hbGl6ZWROYW1lKHQsZSl7dGhpcy5ub3JtYWxpemVkTmFtZXMuaGFzKGUpfHx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoZSx0KX1pbml0KCl7dGhpcy5sYXp5SW5pdCYmKHRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiBlRT90aGlzLmNvcHlGcm9tKHRoaXMubGF6eUluaXQpOnRoaXMubGF6eUluaXQoKSx0aGlzLmxhenlJbml0PW51bGwsdGhpcy5sYXp5VXBkYXRlJiYodGhpcy5sYXp5VXBkYXRlLmZvckVhY2goKHQ9PnRoaXMuYXBwbHlVcGRhdGUodCkpKSx0aGlzLmxhenlVcGRhdGU9bnVsbCkpfWNvcHlGcm9tKHQpe3QuaW5pdCgpLEFycmF5LmZyb20odC5oZWFkZXJzLmtleXMoKSkuZm9yRWFjaCgoZT0+e3RoaXMuaGVhZGVycy5zZXQoZSx0LmhlYWRlcnMuZ2V0KGUpKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoZSx0Lm5vcm1hbGl6ZWROYW1lcy5nZXQoZSkpfSkpfWNsb25lKHQpe2NvbnN0IGU9bmV3IGVFO3JldHVybiBlLmxhenlJbml0PXRoaXMubGF6eUluaXQmJnRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiBlRT90aGlzLmxhenlJbml0OnRoaXMsZS5sYXp5VXBkYXRlPSh0aGlzLmxhenlVcGRhdGV8fFtdKS5jb25jYXQoW3RdKSxlfWFwcGx5VXBkYXRlKHQpe2NvbnN0IGU9dC5uYW1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKHQub3Ape2Nhc2UiYSI6Y2FzZSJzIjpsZXQgbj10LnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmKG49W25dKSwwPT09bi5sZW5ndGgpcmV0dXJuO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZSh0Lm5hbWUsZSk7Y29uc3Qgbz0oImEiPT09dC5vcD90aGlzLmhlYWRlcnMuZ2V0KGUpOnZvaWQgMCl8fFtdO28ucHVzaCguLi5uKSx0aGlzLmhlYWRlcnMuc2V0KGUsbyk7YnJlYWs7Y2FzZSJkIjpjb25zdCBpPXQudmFsdWU7aWYoaSl7bGV0IHQ9dGhpcy5oZWFkZXJzLmdldChlKTtpZighdClyZXR1cm47dD10LmZpbHRlcigodD0+LTE9PT1pLmluZGV4T2YodCkpKSwwPT09dC5sZW5ndGg/KHRoaXMuaGVhZGVycy5kZWxldGUoZSksdGhpcy5ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGUpKTp0aGlzLmhlYWRlcnMuc2V0KGUsdCl9ZWxzZSB0aGlzLmhlYWRlcnMuZGVsZXRlKGUpLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZShlKX19Zm9yRWFjaCh0KXt0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLmtleXMoKSkuZm9yRWFjaCgoZT0+dCh0aGlzLm5vcm1hbGl6ZWROYW1lcy5nZXQoZSksdGhpcy5oZWFkZXJzLmdldChlKSkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG5Fe2VuY29kZUtleSh0KXtyZXR1cm4gb0UodCl9ZW5jb2RlVmFsdWUodCl7cmV0dXJuIG9FKHQpfWRlY29kZUtleSh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWRlY29kZVZhbHVlKHQpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9fWZ1bmN0aW9uIG9FKHQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2dpLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTNCL2dpLCI7IikucmVwbGFjZSgvJTJCL2dpLCIrIikucmVwbGFjZSgvJTNEL2dpLCI9IikucmVwbGFjZSgvJTNGL2dpLCI/IikucmVwbGFjZSgvJTJGL2dpLCIvIil9ZnVuY3Rpb24gaUUodCl7cmV0dXJuYCR7dH1gfWNsYXNzIGFFe2NvbnN0cnVjdG9yKHQ9e30pe2lmKHRoaXMudXBkYXRlcz1udWxsLHRoaXMuY2xvbmVGcm9tPW51bGwsdGhpcy5lbmNvZGVyPXQuZW5jb2Rlcnx8bmV3IG5FLHQuZnJvbVN0cmluZyl7aWYodC5mcm9tT2JqZWN0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBmcm9tU3RyaW5nIGFuZCBmcm9tT2JqZWN0LiIpO3RoaXMubWFwPShmdW5jdGlvbiBlKHQsbil7Y29uc3Qgbz1uZXcgTWFwO3QubGVuZ3RoPjAmJnQucmVwbGFjZSgvXlw/LywiIikuc3BsaXQoIiYiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIj0iKSxbaSxhXT0tMT09ZT9bbi5kZWNvZGVLZXkodCksIiJdOltuLmRlY29kZUtleSh0LnNsaWNlKDAsZSkpLG4uZGVjb2RlVmFsdWUodC5zbGljZShlKzEpKV0scj1vLmdldChpKXx8W107ci5wdXNoKGEpLG8uc2V0KGkscil9KSk7cmV0dXJuIG99KSh0LmZyb21TdHJpbmcsdGhpcy5lbmNvZGVyKX1lbHNlIHQuZnJvbU9iamVjdD8odGhpcy5tYXA9bmV3IE1hcCxPYmplY3Qua2V5cyh0LmZyb21PYmplY3QpLmZvckVhY2goKGU9Pntjb25zdCBuPXQuZnJvbU9iamVjdFtlXTt0aGlzLm1hcC5zZXQoZSxBcnJheS5pc0FycmF5KG4pP246W25dKX0pKSk6dGhpcy5tYXA9bnVsbH1oYXModCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMubWFwLmhhcyh0KX1nZXQodCl7dGhpcy5pbml0KCk7Y29uc3QgZT10aGlzLm1hcC5nZXQodCk7cmV0dXJuIGU/ZVswXTpudWxsfWdldEFsbCh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuZ2V0KHQpfHxudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpfWFwcGVuZCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6ImEifSl9YXBwZW5kQWxsKHQpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pntjb25zdCBvPXRbbl07QXJyYXkuaXNBcnJheShvKT9vLmZvckVhY2goKHQ9PntlLnB1c2goe3BhcmFtOm4sdmFsdWU6dCxvcDoiYSJ9KX0pKTplLnB1c2goe3BhcmFtOm4sdmFsdWU6byxvcDoiYSJ9KX0pKSx0aGlzLmNsb25lKGUpfXNldCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6InMifSl9ZGVsZXRlKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOnQsdmFsdWU6ZSxvcDoiZCJ9KX10b1N0cmluZygpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmtleXMoKS5tYXAoKHQ9Pntjb25zdCBlPXRoaXMuZW5jb2Rlci5lbmNvZGVLZXkodCk7cmV0dXJuIHRoaXMubWFwLmdldCh0KS5tYXAoKHQ9PmUrIj0iK3RoaXMuZW5jb2Rlci5lbmNvZGVWYWx1ZSh0KSkpLmpvaW4oIiYiKX0pKS5maWx0ZXIoKHQ9PiIiIT09dCkpLmpvaW4oIiYiKX1jbG9uZSh0KXtjb25zdCBlPW5ldyBhRSh7ZW5jb2Rlcjp0aGlzLmVuY29kZXJ9KTtyZXR1cm4gZS5jbG9uZUZyb209dGhpcy5jbG9uZUZyb218fHRoaXMsZS51cGRhdGVzPSh0aGlzLnVwZGF0ZXN8fFtdKS5jb25jYXQodCksZX1pbml0KCl7bnVsbD09PXRoaXMubWFwJiYodGhpcy5tYXA9bmV3IE1hcCksbnVsbCE9PXRoaXMuY2xvbmVGcm9tJiYodGhpcy5jbG9uZUZyb20uaW5pdCgpLHRoaXMuY2xvbmVGcm9tLmtleXMoKS5mb3JFYWNoKCh0PT50aGlzLm1hcC5zZXQodCx0aGlzLmNsb25lRnJvbS5tYXAuZ2V0KHQpKSkpLHRoaXMudXBkYXRlcy5mb3JFYWNoKCh0PT57c3dpdGNoKHQub3Ape2Nhc2UiYSI6Y2FzZSJzIjpjb25zdCBlPSgiYSI9PT10Lm9wP3RoaXMubWFwLmdldCh0LnBhcmFtKTp2b2lkIDApfHxbXTtlLnB1c2goaUUodC52YWx1ZSkpLHRoaXMubWFwLnNldCh0LnBhcmFtLGUpO2JyZWFrO2Nhc2UiZCI6aWYodm9pZCAwPT09dC52YWx1ZSl7dGhpcy5tYXAuZGVsZXRlKHQucGFyYW0pO2JyZWFrfXtsZXQgZT10aGlzLm1hcC5nZXQodC5wYXJhbSl8fFtdO2NvbnN0IG49ZS5pbmRleE9mKGlFKHQudmFsdWUpKTstMSE9PW4mJmUuc3BsaWNlKG4sMSksZS5sZW5ndGg+MD90aGlzLm1hcC5zZXQodC5wYXJhbSxlKTp0aGlzLm1hcC5kZWxldGUodC5wYXJhbSl9fX0pKSx0aGlzLmNsb25lRnJvbT10aGlzLnVwZGF0ZXM9bnVsbCl9fWNsYXNzIHJFe2NvbnN0cnVjdG9yKCl7dGhpcy5tYXA9bmV3IE1hcH1zZXQodCxlKXtyZXR1cm4gdGhpcy5tYXAuc2V0KHQsZSksdGhpc31nZXQodCl7cmV0dXJuIHRoaXMubWFwLmhhcyh0KXx8dGhpcy5tYXAuc2V0KHQsdC5kZWZhdWx0VmFsdWUoKSksdGhpcy5tYXAuZ2V0KHQpfWRlbGV0ZSh0KXtyZXR1cm4gdGhpcy5tYXAuZGVsZXRlKHQpLHRoaXN9a2V5cygpe3JldHVybiB0aGlzLm1hcC5rZXlzKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBzRSh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gbEUodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYn1mdW5jdGlvbiBjRSh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGF9Y2xhc3MgZEV7Y29uc3RydWN0b3IodCxlLG4sbyl7bGV0IGk7aWYodGhpcy51cmw9ZSx0aGlzLmJvZHk9bnVsbCx0aGlzLnJlcG9ydFByb2dyZXNzPSExLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucmVzcG9uc2VUeXBlPSJqc29uIix0aGlzLm1ldGhvZD10LnRvVXBwZXJDYXNlKCksKGZ1bmN0aW9uIGEodCl7c3dpdGNoKHQpe2Nhc2UiREVMRVRFIjpjYXNlIkdFVCI6Y2FzZSJIRUFEIjpjYXNlIk9QVElPTlMiOmNhc2UiSlNPTlAiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSkodGhpcy5tZXRob2QpfHxvPyh0aGlzLmJvZHk9dm9pZCAwIT09bj9uOm51bGwsaT1vKTppPW4saSYmKHRoaXMucmVwb3J0UHJvZ3Jlc3M9ISFpLnJlcG9ydFByb2dyZXNzLHRoaXMud2l0aENyZWRlbnRpYWxzPSEhaS53aXRoQ3JlZGVudGlhbHMsaS5yZXNwb25zZVR5cGUmJih0aGlzLnJlc3BvbnNlVHlwZT1pLnJlc3BvbnNlVHlwZSksaS5oZWFkZXJzJiYodGhpcy5oZWFkZXJzPWkuaGVhZGVycyksaS5jb250ZXh0JiYodGhpcy5jb250ZXh0PWkuY29udGV4dCksaS5wYXJhbXMmJih0aGlzLnBhcmFtcz1pLnBhcmFtcykpLHRoaXMuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgZUUpLHRoaXMuY29udGV4dHx8KHRoaXMuY29udGV4dD1uZXcgckUpLHRoaXMucGFyYW1zKXtjb25zdCB0PXRoaXMucGFyYW1zLnRvU3RyaW5nKCk7aWYoMD09PXQubGVuZ3RoKXRoaXMudXJsV2l0aFBhcmFtcz1lO2Vsc2V7Y29uc3Qgbj1lLmluZGV4T2YoIj8iKTt0aGlzLnVybFdpdGhQYXJhbXM9ZSsoLTE9PT1uPyI/IjpuPGUubGVuZ3RoLTE/IiYiOiIiKSt0fX1lbHNlIHRoaXMucGFyYW1zPW5ldyBhRSx0aGlzLnVybFdpdGhQYXJhbXM9ZX1zZXJpYWxpemVCb2R5KCl7cmV0dXJuIG51bGw9PT10aGlzLmJvZHk/bnVsbDpzRSh0aGlzLmJvZHkpfHxsRSh0aGlzLmJvZHkpfHxjRSh0aGlzLmJvZHkpfHwoZnVuY3Rpb24gdChlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFVSTFNlYXJjaFBhcmFtcyYmZSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtc30pKHRoaXMuYm9keSl8fCJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5P3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBhRT90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJpbmdpZnkodGhpcy5ib2R5KTp0aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHxjRSh0aGlzLmJvZHkpP251bGw6bEUodGhpcy5ib2R5KT90aGlzLmJvZHkudHlwZXx8bnVsbDpzRSh0aGlzLmJvZHkpP251bGw6InN0cmluZyI9PXR5cGVvZiB0aGlzLmJvZHk/InRleHQvcGxhaW4iOnRoaXMuYm9keSBpbnN0YW5jZW9mIGFFPyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5ib2R5fHwiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLmJvZHk/ImFwcGxpY2F0aW9uL2pzb24iOm51bGx9Y2xvbmUodD17fSl7dmFyIGU7Y29uc3Qgbj10Lm1ldGhvZHx8dGhpcy5tZXRob2Qsbz10LnVybHx8dGhpcy51cmwsaT10LnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUsYT12b2lkIDAhPT10LmJvZHk/dC5ib2R5OnRoaXMuYm9keSxyPXZvaWQgMCE9PXQud2l0aENyZWRlbnRpYWxzP3Qud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLHM9dm9pZCAwIT09dC5yZXBvcnRQcm9ncmVzcz90LnJlcG9ydFByb2dyZXNzOnRoaXMucmVwb3J0UHJvZ3Jlc3M7bGV0IGw9dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsYz10LnBhcmFtc3x8dGhpcy5wYXJhbXM7Y29uc3QgZD1udWxsIT09KGU9dC5jb250ZXh0KSYmdm9pZCAwIT09ZT9lOnRoaXMuY29udGV4dDtyZXR1cm4gdm9pZCAwIT09dC5zZXRIZWFkZXJzJiYobD1PYmplY3Qua2V5cyh0LnNldEhlYWRlcnMpLnJlZHVjZSgoKGUsbik9PmUuc2V0KG4sdC5zZXRIZWFkZXJzW25dKSksbCkpLHQuc2V0UGFyYW1zJiYoYz1PYmplY3Qua2V5cyh0LnNldFBhcmFtcykucmVkdWNlKCgoZSxuKT0+ZS5zZXQobix0LnNldFBhcmFtc1tuXSkpLGMpKSxuZXcgZEUobixvLGEse3BhcmFtczpjLGhlYWRlcnM6bCxjb250ZXh0OmQscmVwb3J0UHJvZ3Jlc3M6cyxyZXNwb25zZVR5cGU6aSx3aXRoQ3JlZGVudGlhbHM6cn0pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovdmFyIHBFOyEoZnVuY3Rpb24odCl7dFt0LlNlbnQ9MF09IlNlbnQiLHRbdC5VcGxvYWRQcm9ncmVzcz0xXT0iVXBsb2FkUHJvZ3Jlc3MiLHRbdC5SZXNwb25zZUhlYWRlcj0yXT0iUmVzcG9uc2VIZWFkZXIiLHRbdC5Eb3dubG9hZFByb2dyZXNzPTNdPSJEb3dubG9hZFByb2dyZXNzIix0W3QuUmVzcG9uc2U9NF09IlJlc3BvbnNlIix0W3QuVXNlcj01XT0iVXNlciJ9KShwRXx8KHBFPXt9KSk7Y2xhc3MgbUV7Y29uc3RydWN0b3IodCxlPTIwMCxuPSJPSyIpe3RoaXMuaGVhZGVycz10LmhlYWRlcnN8fG5ldyBlRSx0aGlzLnN0YXR1cz12b2lkIDAhPT10LnN0YXR1cz90LnN0YXR1czplLHRoaXMuc3RhdHVzVGV4dD10LnN0YXR1c1RleHR8fG4sdGhpcy51cmw9dC51cmx8fG51bGwsdGhpcy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDB9fWNsYXNzIHVFIGV4dGVuZHMgbUV7Y29uc3RydWN0b3IodD17fSl7c3VwZXIodCksdGhpcy50eXBlPXBFLlJlc3BvbnNlSGVhZGVyfWNsb25lKHQ9e30pe3JldHVybiBuZXcgdUUoe2hlYWRlcnM6dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsc3RhdHVzOnZvaWQgMCE9PXQuc3RhdHVzP3Quc3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dC5zdGF0dXNUZXh0fHx0aGlzLnN0YXR1c1RleHQsdXJsOnQudXJsfHx0aGlzLnVybHx8dm9pZCAwfSl9fWNsYXNzIGZFIGV4dGVuZHMgbUV7Y29uc3RydWN0b3IodD17fSl7c3VwZXIodCksdGhpcy50eXBlPXBFLlJlc3BvbnNlLHRoaXMuYm9keT12b2lkIDAhPT10LmJvZHk/dC5ib2R5Om51bGx9Y2xvbmUodD17fSl7cmV0dXJuIG5ldyBmRSh7Ym9keTp2b2lkIDAhPT10LmJvZHk/dC5ib2R5OnRoaXMuYm9keSxoZWFkZXJzOnQuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp2b2lkIDAhPT10LnN0YXR1cz90LnN0YXR1czp0aGlzLnN0YXR1cyxzdGF0dXNUZXh0OnQuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDp0LnVybHx8dGhpcy51cmx8fHZvaWQgMH0pfX1jbGFzcyBnRSBleHRlbmRzIG1Fe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsMCwiVW5rbm93biBFcnJvciIpLHRoaXMubmFtZT0iSHR0cEVycm9yUmVzcG9uc2UiLHRoaXMub2s9ITEsdGhpcy5tZXNzYWdlPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMD9gSHR0cCBmYWlsdXJlIGR1cmluZyBwYXJzaW5nIGZvciAke3QudXJsfHwiKHVua25vd24gdXJsKSJ9YDpgSHR0cCBmYWlsdXJlIHJlc3BvbnNlIGZvciAke3QudXJsfHwiKHVua25vd24gdXJsKSJ9OiAke3Quc3RhdHVzfSAke3Quc3RhdHVzVGV4dH1gLHRoaXMuZXJyb3I9dC5lcnJvcnx8bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGhFKHQsZSl7cmV0dXJue2JvZHk6ZSxoZWFkZXJzOnQuaGVhZGVycyxjb250ZXh0OnQuY29udGV4dCxvYnNlcnZlOnQub2JzZXJ2ZSxwYXJhbXM6dC5wYXJhbXMscmVwb3J0UHJvZ3Jlc3M6dC5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsd2l0aENyZWRlbnRpYWxzOnQud2l0aENyZWRlbnRpYWxzfX1jbGFzcyBiRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmhhbmRsZXI9dH1yZXF1ZXN0KHQsZSxuPXt9KXtsZXQgbztpZih0IGluc3RhbmNlb2YgZEUpbz10O2Vsc2V7bGV0IGksYTtpPW4uaGVhZGVycyBpbnN0YW5jZW9mIGVFP24uaGVhZGVyczpuZXcgZUUobi5oZWFkZXJzKSxuLnBhcmFtcyYmKGE9bi5wYXJhbXMgaW5zdGFuY2VvZiBhRT9uLnBhcmFtczpuZXcgYUUoe2Zyb21PYmplY3Q6bi5wYXJhbXN9KSksbz1uZXcgZEUodCxlLHZvaWQgMCE9PW4uYm9keT9uLmJvZHk6bnVsbCx7aGVhZGVyczppLGNvbnRleHQ6bi5jb250ZXh0LHBhcmFtczphLHJlcG9ydFByb2dyZXNzOm4ucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBlOm4ucmVzcG9uc2VUeXBlfHwianNvbiIsd2l0aENyZWRlbnRpYWxzOm4ud2l0aENyZWRlbnRpYWxzfSl9Y29uc3QgaT16dChvKS5waXBlKChmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGQoZSk/JHQodCxlLDEpOiR0KHQsMSl9KSgodD0+dGhpcy5oYW5kbGVyLmhhbmRsZSh0KSkpKTtpZih0IGluc3RhbmNlb2YgZEV8fCJldmVudHMiPT09bi5vYnNlcnZlKXJldHVybiBpO2NvbnN0IHI9aS5waXBlKGZlKCh0PT50IGluc3RhbmNlb2YgZkUpKSk7c3dpdGNoKG4ub2JzZXJ2ZXx8ImJvZHkiKXtjYXNlImJvZHkiOnN3aXRjaChvLnJlc3BvbnNlVHlwZSl7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiEodC5ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGFuIEFycmF5QnVmZmVyLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UiYmxvYiI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiEodC5ib2R5IGluc3RhbmNlb2YgQmxvYikpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBCbG9iLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UidGV4dCI6cmV0dXJuIHIucGlwZShWdCgodD0+e2lmKG51bGwhPT10LmJvZHkmJiJzdHJpbmciIT10eXBlb2YgdC5ib2R5KXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGEgc3RyaW5nLiIpO3JldHVybiB0LmJvZHl9KSkpO2Nhc2UianNvbiI6ZGVmYXVsdDpyZXR1cm4gci5waXBlKFZ0KCh0PT50LmJvZHkpKSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIHI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7bi5vYnNlcnZlfX1gKX19ZGVsZXRlKHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiREVMRVRFIix0LGUpfWdldCh0LGU9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkdFVCIsdCxlKX1oZWFkKHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSEVBRCIsdCxlKX1qc29ucCh0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QoIkpTT05QIix0LHtwYXJhbXM6KG5ldyBhRSkuYXBwZW5kKGUsIkpTT05QX0NBTExCQUNLIiksb2JzZXJ2ZToiYm9keSIscmVzcG9uc2VUeXBlOiJqc29uIn0pfW9wdGlvbnModCxlPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJPUFRJT05TIix0LGUpfXBhdGNoKHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQQVRDSCIsdCxoRShuLGUpKX1wb3N0KHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQT1NUIix0LGhFKG4sZSkpfXB1dCh0LGUsbj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIix0LGhFKG4sZSkpfX1iRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YkUpKFRyKCRSKSl9LGJFLsm1cHJvdj1Tbih7dG9rZW46YkUsZmFjdG9yeTpiRS7JtWZhY30pLGJFLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JFJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGJFLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTokUn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB5RXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMubmV4dD10LHRoaXMuaW50ZXJjZXB0b3I9ZX1oYW5kbGUodCl7cmV0dXJuIHRoaXMuaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHQsdGhpcy5uZXh0KX19Y29uc3QgX0U9bmV3IGVyKCJIVFRQX0lOVEVSQ0VQVE9SUyIpO2NsYXNzIENFe2ludGVyY2VwdCh0LGUpe3JldHVybiBlLmhhbmRsZSh0KX19Q0UuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENFKX0sQ0UuybVwcm92PVNuKHt0b2tlbjpDRSxmYWN0b3J5OkNFLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDRSxbe3R5cGU6am19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IE1FPTA7Y2xhc3MgdkV7fWNsYXNzIHhFe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jYWxsYmFja01hcD10LHRoaXMuZG9jdW1lbnQ9ZSx0aGlzLnJlc29sdmVkUHJvbWlzZT1Qcm9taXNlLnJlc29sdmUoKX1uZXh0Q2FsbGJhY2soKXtyZXR1cm4ibmdfanNvbnBfY2FsbGJhY2tfIitNRSsrfWhhbmRsZSh0KXtpZigiSlNPTlAiIT09dC5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJKU09OUCByZXF1ZXN0cyBtdXN0IHVzZSBKU09OUCByZXF1ZXN0IG1ldGhvZC4iKTtpZigianNvbiIhPT10LnJlc3BvbnNlVHlwZSl0aHJvdyBuZXcgRXJyb3IoIkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEpzb24gcmVzcG9uc2UgdHlwZS4iKTtyZXR1cm4gbmV3IFQoKGU9Pntjb25zdCBuPXRoaXMubmV4dENhbGxiYWNrKCksbz10LnVybFdpdGhQYXJhbXMucmVwbGFjZSgvPUpTT05QX0NBTExCQUNLKCZ8JCkvLGA9JHtufSQxYCksaT10aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2kuc3JjPW87bGV0IGE9bnVsbCxyPSExLHM9ITE7dGhpcy5jYWxsYmFja01hcFtuXT10PT57ZGVsZXRlIHRoaXMuY2FsbGJhY2tNYXBbbl0sc3x8KGE9dCxyPSEwKX07Y29uc3QgbD0oKT0+e2kucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpLGRlbGV0ZSB0aGlzLmNhbGxiYWNrTWFwW25dfSxjPXQ9PntzfHx0aGlzLnJlc29sdmVkUHJvbWlzZS50aGVuKCgoKT0+e2woKSxyPyhlLm5leHQobmV3IGZFKHtib2R5OmEsc3RhdHVzOjIwMCxzdGF0dXNUZXh0OiJPSyIsdXJsOm99KSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBnRSh7dXJsOm8sc3RhdHVzOjAsc3RhdHVzVGV4dDoiSlNPTlAgRXJyb3IiLGVycm9yOm5ldyBFcnJvcigiSlNPTlAgaW5qZWN0ZWQgc2NyaXB0IGRpZCBub3QgaW52b2tlIGNhbGxiYWNrLiIpfSkpfSkpfSxkPXQ9PntzfHwobCgpLGUuZXJyb3IobmV3IGdFKHtlcnJvcjp0LHN0YXR1czowLHN0YXR1c1RleHQ6IkpTT05QIEVycm9yIix1cmw6b30pKSl9O3JldHVybiBpLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLGkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGQpLHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKSxlLm5leHQoe3R5cGU6cEUuU2VudH0pLCgpPT57cz0hMCxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGMpLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGQpLGwoKX19KSl9fXhFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4RSkoVHIodkUpLFRyKHNNKSl9LHhFLsm1cHJvdj1Tbih7dG9rZW46eEUsZmFjdG9yeTp4RS7JtWZhY30pLHhFLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dkV9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeEUsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZFfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIE9Fe2NvbnN0cnVjdG9yKHQpe3RoaXMuanNvbnA9dH1pbnRlcmNlcHQodCxlKXtyZXR1cm4iSlNPTlAiPT09dC5tZXRob2Q/dGhpcy5qc29ucC5oYW5kbGUodCk6ZS5oYW5kbGUodCl9fU9FLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPRSkoVHIoeEUpKX0sT0UuybVwcm92PVNuKHt0b2tlbjpPRSxmYWN0b3J5Ok9FLsm1ZmFjfSksT0UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4RX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoT0UsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnhFfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFBFPS9eXClcXVx9Jyw/XG4vO2NsYXNzIHdFe2NvbnN0cnVjdG9yKHQpe3RoaXMueGhyRmFjdG9yeT10fWhhbmRsZSh0KXtpZigiSlNPTlAiPT09dC5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IEpzb25wIHJlcXVlc3Qgd2l0aG91dCBIdHRwQ2xpZW50SnNvbnBNb2R1bGUgaW5zdGFsbGVkLiIpO3JldHVybiBuZXcgVCgoZT0+e2NvbnN0IG49dGhpcy54aHJGYWN0b3J5LmJ1aWxkKCk7aWYobi5vcGVuKHQubWV0aG9kLHQudXJsV2l0aFBhcmFtcyksdC53aXRoQ3JlZGVudGlhbHMmJihuLndpdGhDcmVkZW50aWFscz0hMCksdC5oZWFkZXJzLmZvckVhY2goKCh0LGUpPT5uLnNldFJlcXVlc3RIZWFkZXIodCxlLmpvaW4oIiwiKSkpKSx0LmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8bi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiKSwhdC5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIikpe2NvbnN0IGU9dC5kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpO251bGwhPT1lJiZuLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZSl9aWYodC5yZXNwb25zZVR5cGUpe2NvbnN0IGU9dC5yZXNwb25zZVR5cGUudG9Mb3dlckNhc2UoKTtuLnJlc3BvbnNlVHlwZT0ianNvbiIhPT1lP2U6InRleHQifWNvbnN0IG89dC5zZXJpYWxpemVCb2R5KCk7bGV0IGk9bnVsbDtjb25zdCBhPSgpPT57aWYobnVsbCE9PWkpcmV0dXJuIGk7Y29uc3QgZT0xMjIzPT09bi5zdGF0dXM/MjA0Om4uc3RhdHVzLG89bi5zdGF0dXNUZXh0fHwiT0siLGE9bmV3IGVFKG4uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLHI9KGZ1bmN0aW9uIHModCl7cmV0dXJuInJlc3BvbnNlVVJMImluIHQmJnQucmVzcG9uc2VVUkw/dC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdCh0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT90LmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0pKG4pfHx0LnVybDtyZXR1cm4gaT1uZXcgdUUoe2hlYWRlcnM6YSxzdGF0dXM6ZSxzdGF0dXNUZXh0Om8sdXJsOnJ9KSxpfSxyPSgpPT57bGV0e2hlYWRlcnM6byxzdGF0dXM6aSxzdGF0dXNUZXh0OnIsdXJsOnN9PWEoKSxsPW51bGw7MjA0IT09aSYmKGw9dm9pZCAwPT09bi5yZXNwb25zZT9uLnJlc3BvbnNlVGV4dDpuLnJlc3BvbnNlKSwwPT09aSYmKGk9bD8yMDA6MCk7bGV0IGM9aT49MjAwJiZpPDMwMDtpZigianNvbiI9PT10LnJlc3BvbnNlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCB0PWw7bD1sLnJlcGxhY2UoUEUsIiIpO3RyeXtsPSIiIT09bD9KU09OLnBhcnNlKGwpOm51bGx9Y2F0Y2goZSl7bD10LGMmJihjPSExLGw9e2Vycm9yOmUsdGV4dDpsfSl9fWM/KGUubmV4dChuZXcgZkUoe2JvZHk6bCxoZWFkZXJzOm8sc3RhdHVzOmksc3RhdHVzVGV4dDpyLHVybDpzfHx2b2lkIDB9KSksZS5jb21wbGV0ZSgpKTplLmVycm9yKG5ldyBnRSh7ZXJyb3I6bCxoZWFkZXJzOm8sc3RhdHVzOmksc3RhdHVzVGV4dDpyLHVybDpzfHx2b2lkIDB9KSl9LHM9dD0+e2NvbnN0e3VybDpvfT1hKCksaT1uZXcgZ0Uoe2Vycm9yOnQsc3RhdHVzOm4uc3RhdHVzfHwwLHN0YXR1c1RleHQ6bi5zdGF0dXNUZXh0fHwiVW5rbm93biBFcnJvciIsdXJsOm98fHZvaWQgMH0pO2UuZXJyb3IoaSl9O2xldCBsPSExO2NvbnN0IGM9bz0+e2x8fChlLm5leHQoYSgpKSxsPSEwKTtsZXQgaT17dHlwZTpwRS5Eb3dubG9hZFByb2dyZXNzLGxvYWRlZDpvLmxvYWRlZH07by5sZW5ndGhDb21wdXRhYmxlJiYoaS50b3RhbD1vLnRvdGFsKSwidGV4dCI9PT10LnJlc3BvbnNlVHlwZSYmbi5yZXNwb25zZVRleHQmJihpLnBhcnRpYWxUZXh0PW4ucmVzcG9uc2VUZXh0KSxlLm5leHQoaSl9LGQ9dD0+e2xldCBuPXt0eXBlOnBFLlVwbG9hZFByb2dyZXNzLGxvYWRlZDp0LmxvYWRlZH07dC5sZW5ndGhDb21wdXRhYmxlJiYobi50b3RhbD10LnRvdGFsKSxlLm5leHQobil9O3JldHVybiBuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHIpLG4uYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHMpLG4uYWRkRXZlbnRMaXN0ZW5lcigidGltZW91dCIscyksbi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIscyksdC5yZXBvcnRQcm9ncmVzcyYmKG4uYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGMpLG51bGwhPT1vJiZuLnVwbG9hZCYmbi51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGQpKSxuLnNlbmQobyksZS5uZXh0KHt0eXBlOnBFLlNlbnR9KSwoKT0+e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHMpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsciksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJ0aW1lb3V0IixzKSx0LnJlcG9ydFByb2dyZXNzJiYobi5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsYyksbnVsbCE9PW8mJm4udXBsb2FkJiZuLnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZCkpLG4ucmVhZHlTdGF0ZSE9PW4uRE9ORSYmbi5hYm9ydCgpfX0pKX19d0UuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdFKShUcihweCkpfSx3RS7JtXByb3Y9U24oe3Rva2VuOndFLGZhY3Rvcnk6d0UuybVmYWN9KSx3RS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnB4fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih3RSxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cHh9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qga0U9bmV3IGVyKCJYU1JGX0NPT0tJRV9OQU1FIiksU0U9bmV3IGVyKCJYU1JGX0hFQURFUl9OQU1FIik7Y2xhc3MgREV7fWNsYXNzIFJFe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmRvYz10LHRoaXMucGxhdGZvcm09ZSx0aGlzLmNvb2tpZU5hbWU9bix0aGlzLmxhc3RDb29raWVTdHJpbmc9IiIsdGhpcy5sYXN0VG9rZW49bnVsbCx0aGlzLnBhcnNlQ291bnQ9MH1nZXRUb2tlbigpe2lmKCJzZXJ2ZXIiPT09dGhpcy5wbGF0Zm9ybSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZG9jLmNvb2tpZXx8IiI7cmV0dXJuIHQhPT10aGlzLmxhc3RDb29raWVTdHJpbmcmJih0aGlzLnBhcnNlQ291bnQrKyx0aGlzLmxhc3RUb2tlbj1fdih0LHRoaXMuY29va2llTmFtZSksdGhpcy5sYXN0Q29va2llU3RyaW5nPXQpLHRoaXMubGFzdFRva2VufX1SRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UkUpKFRyKHNNKSxUcihYXyksVHIoa0UpKX0sUkUuybVwcm92PVNuKHt0b2tlbjpSRSxmYWN0b3J5OlJFLsm1ZmFjfSksUkUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltYX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2tFXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSRSxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWF9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltrRV19XX1dfSksbnVsbCk7Y2xhc3MgRUV7Y29uc3RydWN0b3IodCxlKXt0aGlzLnRva2VuU2VydmljZT10LHRoaXMuaGVhZGVyTmFtZT1lfWludGVyY2VwdCh0LGUpe2NvbnN0IG49dC51cmwudG9Mb3dlckNhc2UoKTtpZigiR0VUIj09PXQubWV0aG9kfHwiSEVBRCI9PT10Lm1ldGhvZHx8bi5zdGFydHNXaXRoKCJodHRwOi8vIil8fG4uc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKSlyZXR1cm4gZS5oYW5kbGUodCk7Y29uc3Qgbz10aGlzLnRva2VuU2VydmljZS5nZXRUb2tlbigpO3JldHVybiBudWxsPT09b3x8dC5oZWFkZXJzLmhhcyh0aGlzLmhlYWRlck5hbWUpfHwodD10LmNsb25lKHtoZWFkZXJzOnQuaGVhZGVycy5zZXQodGhpcy5oZWFkZXJOYW1lLG8pfSkpLGUuaGFuZGxlKHQpfX1FRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RUUpKFRyKERFKSxUcihTRSkpfSxFRS7JtXByb3Y9U24oe3Rva2VuOkVFLGZhY3Rvcnk6RUUuybVmYWN9KSxFRS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkRFfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbU0VdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEVFLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpERX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1NFXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEFFe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5iYWNrZW5kPXQsdGhpcy5pbmplY3Rvcj1lLHRoaXMuY2hhaW49bnVsbH1oYW5kbGUodCl7aWYobnVsbD09PXRoaXMuY2hhaW4pe2NvbnN0IHQ9dGhpcy5pbmplY3Rvci5nZXQoX0UsW10pO3RoaXMuY2hhaW49dC5yZWR1Y2VSaWdodCgoKHQsZSk9Pm5ldyB5RSh0LGUpKSx0aGlzLmJhY2tlbmQpfXJldHVybiB0aGlzLmNoYWluLmhhbmRsZSh0KX19ZnVuY3Rpb24gVEUoKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdz93aW5kb3c6e319QUUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFFKShUcih0RSksVHIoTnApKX0sQUUuybVwcm92PVNuKHt0b2tlbjpBRSxmYWN0b3J5OkFFLsm1ZmFjfSksQUUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp0RX0se3R5cGU6TnB9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFFLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp0RX0se3R5cGU6TnB9XX0pLG51bGwpO2NsYXNzIE5Fe3N0YXRpYyBkaXNhYmxlKCl7cmV0dXJue25nTW9kdWxlOk5FLHByb3ZpZGVyczpbe3Byb3ZpZGU6RUUsdXNlQ2xhc3M6Q0V9XX19c3RhdGljIHdpdGhPcHRpb25zKHQ9e30pe3JldHVybntuZ01vZHVsZTpORSxwcm92aWRlcnM6W3QuY29va2llTmFtZT97cHJvdmlkZTprRSx1c2VWYWx1ZTp0LmNvb2tpZU5hbWV9OltdLHQuaGVhZGVyTmFtZT97cHJvdmlkZTpTRSx1c2VWYWx1ZTp0LmhlYWRlck5hbWV9OltdXX19fU5FLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxORSl9LE5FLsm1bW9kPXVvKHt0eXBlOk5FfSksTkUuybVpbmo9RG4oe3Byb3ZpZGVyczpbRUUse3Byb3ZpZGU6X0UsdXNlRXhpc3Rpbmc6RUUsbXVsdGk6ITB9LHtwcm92aWRlOkRFLHVzZUNsYXNzOlJFfSx7cHJvdmlkZTprRSx1c2VWYWx1ZToiWFNSRi1UT0tFTiJ9LHtwcm92aWRlOlNFLHVzZVZhbHVlOiJYLVhTUkYtVE9LRU4ifV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5FLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOltFRSx7cHJvdmlkZTpfRSx1c2VFeGlzdGluZzpFRSxtdWx0aTohMH0se3Byb3ZpZGU6REUsdXNlQ2xhc3M6UkV9LHtwcm92aWRlOmtFLHVzZVZhbHVlOiJYU1JGLVRPS0VOIn0se3Byb3ZpZGU6U0UsdXNlVmFsdWU6IlgtWFNSRi1UT0tFTiJ9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyB6RXt9ekUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpFKX0sekUuybVtb2Q9dW8oe3R5cGU6ekV9KSx6RS7JtWluaj1Ebih7cHJvdmlkZXJzOltiRSx7cHJvdmlkZTokUix1c2VDbGFzczpBRX0sd0Use3Byb3ZpZGU6dEUsdXNlRXhpc3Rpbmc6d0V9XSxpbXBvcnRzOltbTkUud2l0aE9wdGlvbnMoe2Nvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLGhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiJ9KV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6RSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05FLndpdGhPcHRpb25zKHtjb29raWVOYW1lOiJYU1JGLVRPS0VOIixoZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4ifSldLHByb3ZpZGVyczpbYkUse3Byb3ZpZGU6JFIsdXNlQ2xhc3M6QUV9LHdFLHtwcm92aWRlOnRFLHVzZUV4aXN0aW5nOndFfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyh6RSx7aW1wb3J0czpbTkVdfSk7Y2xhc3MgSUV7fWZ1bmN0aW9uIEhFKHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0W24sb11vZiB0LmVudHJpZXMoKSllW25dPW87cmV0dXJuIGV9SUUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElFKX0sSUUuybVtb2Q9dW8oe3R5cGU6SUV9KSxJRS7JtWluaj1Ebih7cHJvdmlkZXJzOlt4RSx7cHJvdmlkZTp2RSx1c2VGYWN0b3J5OlRFfSx7cHJvdmlkZTpfRSx1c2VDbGFzczpPRSxtdWx0aTohMH1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJRSxbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpbeEUse3Byb3ZpZGU6dkUsdXNlRmFjdG9yeTpURX0se3Byb3ZpZGU6X0UsdXNlQ2xhc3M6T0UsbXVsdGk6ITB9XX1dfV0sbnVsbCxudWxsKTtmdW5jdGlvbiBGRSh0KXtsZXQgZT10LmhlYWRlcnN8fG5ldyBlRTtyZXR1cm4gZT1lLmFwcGVuZCgiWC1YU1JGLVByb3RlY3RlZCIsIjEiKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2hlYWRlcnM6ZX0pfWNsYXNzIExFe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFwcFJvb3RQcm92aWRlcj10LHRoaXMuaHR0cD1lLHRoaXMuc3RvcmU9bn1yZXNvbHZlQXBwUm9vdCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCIvIik/dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0KTp0fWdldCh0LGU9e30pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMucmVzb2x2ZUFwcFJvb3QodCksZSl9cG9zdCh0LGUsbj17fSl7cmV0dXJuIG49RkUobiksdGhpcy5zdG9yZS5zZWxlY3QoSEQpLnBpcGUoZmUoKHQ9PkJvb2xlYW4odCkpKSx2ZSgxKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChXRCkpLCR0KCgoWyxvXSk9Pnt2YXIgaTtjb25zdCBhPXRoaXMucmVzb2x2ZUFwcFJvb3QodCk7cmV0dXJuIG8/dGhpcy5odHRwLmdldChhLHtoZWFkZXJzOm51bGwhPT0oaT1uLmhlYWRlcnMpJiZ2b2lkIDAhPT1pP2k6e30scGFyYW1zOkhFKGUpfSk6dGhpcy5odHRwLnBvc3QoYSxlLG4pfSkpKX1wdXQodCxlLG49e30pe3JldHVybiB0aGlzLmh0dHAucHV0KHRoaXMucmVzb2x2ZUFwcFJvb3QodCksZSxGRShuKSl9ZGVsZXRlKHQsZT17fSl7cmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5yZXNvbHZlQXBwUm9vdCh0KSxGRShlKSl9fUxFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMRSkoVHIoREQpLFRyKGJFKSxUcihpUykpfSxMRS7JtXByb3Y9U24oe3Rva2VuOkxFLGZhY3Rvcnk6TEUuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKExFLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpERH0se3R5cGU6YkV9LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBCRXt9dmFyIFZFO0JFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCRSl9LEJFLsm1bW9kPXVvKHt0eXBlOkJFfSksQkUuybVpbmo9RG4oe3Byb3ZpZGVyczpbTEVdLGltcG9ydHM6W1t6RSxBRF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCRSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3pFLEFEXSxwcm92aWRlcnM6W0xFXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEJFLHtpbXBvcnRzOlt6RSxBRF19KSwoZnVuY3Rpb24odCl7dC5VTktOT1dOPSJVTktOT1dOIix0Lk5PVF9GT1VORD0iTk9UX0ZPVU5EIix0LlBFUk1JU1NJT05fREVOSUVEPSJQRVJNSVNTSU9OX0RFTklFRCJ9KShWRXx8KFZFPXt9KSk7Y29uc3QgVUU9bmV3IGVyKCJUZW5zb3JCb2FyZCBicmFuZCBuYW1lIik7dmFyIGpFLFdFLEdFO2Z1bmN0aW9uIFlFKHQpe2xldCBlPVZFLlVOS05PV047cmV0dXJuIHQgaW5zdGFuY2VvZiBnRSYmKDQwND09PXQuc3RhdHVzJiYoZT1WRS5OT1RfRk9VTkQpLDQwMz09PXQuc3RhdHVzJiYoZT1WRS5QRVJNSVNTSU9OX0RFTklFRCkpLEl0KG5ldyBxRShlKSl9IShmdW5jdGlvbih0KXt0LlNURVA9InN0ZXAiLHQuV0FMTF9USU1FPSJ3YWxsX3RpbWUiLHQuUkVMQVRJVkU9InJlbGF0aXZlIn0pKGpFfHwoakU9e30pKSwoZnVuY3Rpb24odCl7dC5PRkZTRVQ9Im9mZnNldCIsdC5PVkVSTEFZPSJvdmVybGF5In0pKFdFfHwoV0U9e30pKTtjbGFzcyBxRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhaWx1cmVDb2RlPXR9fWNsYXNzIFpFe2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMudGZCYWNrZW5kPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLWJhY2tlbmQiKS50Zl9iYWNrZW5kfWZldGNoUGx1Z2luc0xpc3RpbmcodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtpZighdC5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZT1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdCBuIG9mIHQpZS5hcHBlbmQoImV4cGVyaW1lbnRhbFBsdWdpbiIsbik7cmV0dXJuIGV9KSh0KSxvPWU/YGRhdGEvcGx1Z2luc19saXN0aW5nPyR7ZS50b1N0cmluZygpfWA6ImRhdGEvcGx1Z2luc19saXN0aW5nIjtyZXR1cm4gdGhpcy5odHRwLmdldChvKS5waXBlKGhlKFlFKSl9ZmV0Y2hFbnZpcm9ubWVudCgpe3JldHVybiBpZShbdGhpcy5odHRwLmdldCgiZGF0YS9lbnZpcm9ubWVudCIpLFB0KHRoaXMudGZCYWNrZW5kLmVudmlyb25tZW50U3RvcmUucmVmcmVzaCgpKV0pLnBpcGUoVnQoKChbdF0pPT50KSksaGUoWUUpKX19WkUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpFKShUcihMRSkpfSxaRS7JtXByb3Y9U24oe3Rva2VuOlpFLGZhY3Rvcnk6WkUuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFpFLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMRX1dfSksbnVsbCk7Y2xhc3MgWEV7fVhFLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYRSl9LFhFLsm1bW9kPXVvKHt0eXBlOlhFfSksWEUuybVpbmo9RG4oe3Byb3ZpZGVyczpbWkVdLGltcG9ydHM6W1tCRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYRSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0JFXSxwcm92aWRlcnM6W1pFXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFhFLHtpbXBvcnRzOltCRV19KSwoZnVuY3Rpb24odCl7dFt0Lk5PVF9MT0FERUQ9MF09Ik5PVF9MT0FERUQiLHRbdC5MT0FERUQ9MV09IkxPQURFRCIsdFt0LkxPQURJTkc9Ml09IkxPQURJTkciLHRbdC5GQUlMRUQ9M109IkZBSUxFRCJ9KShHRXx8KEdFPXt9KSk7Y29uc3QgS0U9X2soIltDb3JlXSBQbHVnaW4gQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEpFPV9rKCJbQ29yZV0gUGx1Z2luIFVybCBIYXNoIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxRRT1faygiW0NvcmVdIExvYWRlZCIpLCRFPV9rKCJbQ29yZV0gVXNlciBUcmlnZ2VyZWQgUmVsb2FkIiksdEE9X2soIltDb3JlXSBBdXRvIFJlbG9hZCIpLGVBPV9rKCJbQ29yZV0gUGx1Z2luTGlzdGluZyBGZXRjaCBSZXF1ZXN0ZWQiKSxuQT1faygiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLG9BPV9rKCJbQ29yZV0gUGx1Z2luTGlzdGluZyBGZXRjaCBGYWlsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxpQT1faygiW0NvcmVdIFBvbHltZXIgQ29tcG9uZW50IFJ1bnMgRmV0Y2ggUmVxdWVzdGVkIiksYUE9X2soIltDb3JlXSBQb2x5bWVyIENvbXBvbmVudCBSdW5zIEZldGNoIFN1Y2Nlc3NmdWwiKSxyQT1faygiW0NvcmVdIFBvbHltZXIgQ29tcG9uZW50IFJ1bnMgRmV0Y2ggRmFpbGVkIiksc0E9X2soIltDb3JlXSBFbnZpcm9ubWVudCBGZXRjaCBTdWNjZXNzZnVsIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbEE9X2soIltDb3JlXSBSdW4gU2VsZWN0aW9uIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxjQT1faygiW0NvcmVdIFJ1biBGZXRjaCBTdWNjZXNzZnVsIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZEE9X2soIltDb3JlXSBTaWRlIEJhciBXaWR0aCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSk7ZnVuY3Rpb24gcEEodCxlLG4pe2NvbnN0IG89T2JqZWN0LmtleXModCksaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSxlKSx7cHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZTp7fX0pO3JldHVybntpbml0aWFsU3RhdGU6aSxyZWR1Y2VyczpWUyhpLEJTKGlSLCgoZSx7YmVmb3JlOmksYWZ0ZXI6YSxiZWZvcmVOYW1lc3BhY2VJZDpyLGFmdGVyTmFtZXNwYWNlSWQ6c30pPT57bGV0IGw9ZTtyZXR1cm4gciE9PXMmJihsPShmdW5jdGlvbiBjKGUsbixpKXt2YXIgYTtsZXQgcj1PYmplY3QuYXNzaWduKHt9LGUucHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZSk7aWYobil7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBvZiBvKXRbbl09ZVtuXTtyPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxyKSx7W25dOnR9KX1sZXQgcz17fTtyZXR1cm4obnVsbD09PShhPWUucHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZSl8fHZvaWQgMD09PWE/dm9pZCAwOmFbaV0pP3M9ZS5wcml2YXRlTmFtZXNwYWNlZFN0YXRlW2ldOm4mJihzPXQpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHMpLHtwcml2YXRlTmFtZXNwYWNlZFN0YXRlOnJ9KX0pKGUscixzKSksbiYmKGw9bihsLGksYSkpLGx9KSkpfX1jb25zdCBtQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBDbG9zZWQiKSx1QT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBUb2dnbGVkIiksZkE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFRhZyBNZXRhZGF0YSBSZXF1ZXN0ZWQiKSxnQT1faygiW01ldHJpY3NdIE1ldHJpY3MgVGFnIE1ldGFkYXRhIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGhBPV9rKCJbTWV0cmljc10gTWV0cmljcyBUYWcgTWV0YWRhdGEgRmFpbGVkIiksYkE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmdzIENoYW5nZSBUb29sdGlwIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSk7X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmdzIFRvZ2dsZSBTaG93IERhdGEgRG93bmxvYWQiKTtjb25zdCB5QT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBUb2dnbGUgSWdub3JlIE91dGxpZXIiKSxfQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgWCBBeGlzIFR5cGUiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxDQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgQ2FyZCBXaWR0aCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE1BPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFJlc2V0IENhcmQgV2lkdGgiKSx2QT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgU2NhbGFyIFNtb290aGluZyIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHhBPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFBhcnRpdGlvbiBOb24gTW9ub3RvbmljIFggVG9nZ2xlZCIpLE9BPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBJbWFnZSBCcmlnaHRuZXNzIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUEE9X2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEltYWdlIENvbnRyYXN0Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksd0E9X2soIltNZXRyaWNzXSBJbWFnZSBCcmlnaHRuZXNzIFNldHRpbmcgUmVzZXQiKSxrQT1faygiW01ldHJpY3NdIEltYWdlIENvbnRyYXN0IFNldHRpbmcgUmVzZXQiKSxTQT1faygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBUb2dnbGUgSW1hZ2UgU2hvdyBBY3R1YWwgU2l6ZSIpLERBPV9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBIaXN0b2dyYW0gTW9kZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFJBPV9rKCJbTWV0cmljc10gTXVsdGlwbGUgVGltZSBTZXJpZXMgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksRUE9X2soIltNZXRyaWNzXSBGZXRjaCBUaW1lIFNlcmllcyBSZXF1ZXN0IEZhaWxlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEFBPV9rKCJbTWV0cmljc10gRmV0Y2ggVGltZSBTZXJpZXMgUmVzcG9uc2UgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVEE9X2soIltNZXRyaWNzXSBDYXJkIFZpc2liaWxpdHkgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE5BPV9rKCJbTWV0cmljc10gQ2FyZCBTdGVwIFNsaWRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksekE9X2soIltNZXRyaWNzXSBUYWcgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxJQT1faygiW01ldHJpY3NdIE1ldHJpY3MgVGFnIEdyb3VwIEV4cGFuc2lvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSEE9X2soIltNZXRyaWNzXSBDYXJkIFBpbiBTdGF0ZSBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksRkE9X2soIltNZXRyaWNzXSBUb2dnbGUgVmlzaWJsZSBQbHVnaW4iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxMQT1faygiW01ldHJpY3NdIFRvZ2dsZSBTaG93IEFsbCBQbHVnaW5zIiksQkE9X2soIltNZXRyaWNzXSBMaW5rZWQgVGltZSBTZWxlY3Rpb24gQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFZBPV9rKCJbTWV0cmljc10gTGlua2VkIFRpbWUgU2VsZWN0aW9uIENsZWFyZWQiKSxVQT1faygiW01ldHJpY3NdIFNlbGVjdCBUaW1lIEVuYWJsZSBUb2dnbGUiKSxqQT1faygiW01ldHJpY3NdIFVzZSBSYW5nZSBTZWxlY3QgVGltZSBUb2dnbGUiKSxXQT1faygiW01ldHJpY3NdIE1ldHJpY3MgUHJvbW8gRGlzbWlzc2VkIiksR0E9X2soIltNZXRyaWNzXSBNZXRyaWNzIFByb21vIEdvIFRvIFNjYWxhcnMiKTtmdW5jdGlvbiBZQSguLi50KXtyZXR1cm4oZSxuKT0+e2xldCBvPWU7Zm9yKGNvbnN0IGUgb2YgdClvPWUobyxuKTtyZXR1cm4gb319Y29uc3QgcUE9ImNvcmUiLFpBPXthY3RpdmVQbHVnaW46bnVsbCxwbHVnaW5zOnt9LGNvcmVEYXRhTG9hZFN0YXRlOntzdGF0ZTpHRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxwbHVnaW5zTGlzdExvYWRlZDp7c3RhdGU6R0UuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxmYWlsdXJlQ29kZTpudWxsfSxlbnZpcm9ubWVudDp7ZGF0YV9sb2NhdGlvbjoiIix3aW5kb3dfdGl0bGU6IiJ9LHBvbHltZXJSdW5zTG9hZFN0YXRlOntzdGF0ZTpHRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxwb2x5bWVySW50ZXJvcFJ1bnM6W10scG9seW1lckludGVyb3BSdW5TZWxlY3Rpb246bmV3IFNldCxzaWRlQmFyV2lkdGhJblBlcmNlbnQ6MjB9LFhBPVZTKFpBLEJTKEtFLEpFLCgodCx7cGx1Z2luOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVQbHVnaW46ZX0pKSksQlMoZUEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29yZURhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuY29yZURhdGFMb2FkU3RhdGUpLHtzdGF0ZTpHRS5MT0FESU5HfSkscGx1Z2luc0xpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luc0xpc3RMb2FkZWQpLHtzdGF0ZTpHRS5MT0FESU5HfSl9KSkpLEJTKG9BLCgodCx7ZmFpbHVyZUNvZGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6R0UuRkFJTEVEfSkscGx1Z2luc0xpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luc0xpc3RMb2FkZWQpLHtzdGF0ZTpHRS5GQUlMRUQsZmFpbHVyZUNvZGU6ZX0pfSkpKSxCUyhuQSwoKHQse3BsdWdpbnM6ZX0pPT57Y29uc3Qgbj1PYmplY3Qua2V5cyhlKS5maW5kKCh0PT5lW3RdLmVuYWJsZWQpKXx8bnVsbCxvPXQuYWN0aXZlUGx1Z2lufHxuLGk9RGF0ZS5ub3coKTtsZXQgYT10LmNvcmVEYXRhTG9hZFN0YXRlO3JldHVybiB0LnBvbHltZXJSdW5zTG9hZFN0YXRlLnN0YXRlPT09R0UuTE9BREVEJiYoYT17c3RhdGU6R0UuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczppfSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVQbHVnaW46byxjb3JlRGF0YUxvYWRTdGF0ZTphLHBsdWdpbnM6ZSxwbHVnaW5zTGlzdExvYWRlZDp7c3RhdGU6R0UuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczppLGZhaWx1cmVDb2RlOm51bGx9fSl9KSksQlMoaUEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29yZURhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuY29yZURhdGFMb2FkU3RhdGUpLHtzdGF0ZTpHRS5MT0FESU5HfSkscG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpHRS5MT0FESU5HfSl9KSkpLEJTKGFBLCh0PT57Y29uc3QgZT1EYXRlLm5vdygpO2xldCBuPXQuY29yZURhdGFMb2FkU3RhdGU7cmV0dXJuIHQucGx1Z2luc0xpc3RMb2FkZWQuc3RhdGU9PT1HRS5MT0FERUQmJihuPXtzdGF0ZTpHRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOmV9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOm4scG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpHRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOmV9KX0pfSkpLEJTKHJBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6R0UuRkFJTEVEfSkscG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpHRS5GQUlMRUR9KX0pKSksQlMoc0EsKCh0LHtlbnZpcm9ubWVudDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW52aXJvbm1lbnQ6ZX0pKSksQlMoY0EsKCh0LHtydW5zOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1bnM6ZX0pKSksQlMobEEsKCh0LHtuZXh0U2VsZWN0aW9uOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1blNlbGVjdGlvbjpuZXcgU2V0KGUpfSkpKSxCUyhkQSwoKHQse3dpZHRoSW5QZXJjZW50OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaWRlQmFyV2lkdGhJblBlcmNlbnQ6TWF0aC5taW4oTWF0aC5tYXgoMCxlKSwxMDApfSkpKSxCUyhYUiwoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdCksbz1lLnNpZGVCYXJXaWR0aEluUGVyY2VudDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTEwMCYmKG4uc2lkZUJhcldpZHRoSW5QZXJjZW50PW8pLG59KSksQlMoR0EsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWN0aXZlUGx1Z2luOiJzY2FsYXJzIn0pKSkpLHtyZWR1Y2VyczpLQX09cEEoWkEse30pO2Z1bmN0aW9uIEpBKHQsZSl7cmV0dXJuIFlBKFhBLEtBKSh0LGUpfWNvbnN0IFFBPV9TKHFBKSwkQT1iUyhRQSwodD0+dC5wbHVnaW5zTGlzdExvYWRlZCkpLHRUPWJTKFFBLCh0PT50LnBvbHltZXJSdW5zTG9hZFN0YXRlKSksZVQ9YlMoUUEsKHQ9PnQuY29yZURhdGFMb2FkU3RhdGUuc3RhdGUpKSxuVD1iUyhRQSwodD0+dC5jb3JlRGF0YUxvYWRTdGF0ZS5sYXN0TG9hZGVkVGltZUluTXMpKSxvVD1iUyhRQSwodD0+dC5hY3RpdmVQbHVnaW4pKSxpVD1iUyhRQSwodD0+dC5wbHVnaW5zKSksYVQ9YlMoUUEsKHQ9PnQuZW52aXJvbm1lbnQpKSxyVD1iUyhRQSwodD0+dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQpKSxzVD1uZXcgU2V0KFtfRC5DT01QQVJFX0VYUEVSSU1FTlQsX0QuRVhQRVJJTUVOVCxfRC5OT1RfU0VUXSk7Y2xhc3MgbFR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy53ZWJhcHBEYXRhU291cmNlPW4sdGhpcy50ZkJhY2tlbmQ9e3JlZjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH0sdGhpcy5vbkRhc2hib2FyZExvYWQkPXBlKHRoaXMuYWN0aW9ucyQucGlwZSgkUyhRRSxpUikscWUodGhpcy5zdG9yZS5zZWxlY3QoQ1IpKSx3ZSgoKFssdF0sWyxlXSk9Pk9EKHQsZSkpKSksdGhpcy5hY3Rpb25zJC5waXBlKCRTKHRBLCRFKSkpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoUFIpKSxmZSgoKFssdF0pPT5zVC5oYXModCkpKSxZZSgxLHZvaWQgMCx7bGVhZGluZzohMH0pKSx0aGlzLmZldGNoV2ViQXBwRGF0YSQ9V1MoKCgpPT5wZSh0aGlzLm9uRGFzaGJvYXJkTG9hZCQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdCgkQSksdGhpcy5zdG9yZS5zZWxlY3QoakQpKSxmZSgoKFsse3N0YXRlOnR9XSk9PnQhPT1HRS5MT0FESU5HKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKGVBKCkpKSksJHQoKChbLCx0XSk9PihmdW5jdGlvbiBlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPUF0KHQpLG89dWUodCk7cmV0dXJuIG8ubGVuZ3RoP25ldyBUKChmdW5jdGlvbih0KXt2YXIgZT1vLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKSxpPW8ubWFwKChmdW5jdGlvbigpe3JldHVybiExfSkpO3QuYWRkKChmdW5jdGlvbigpe2U9aT1udWxsfSkpO2Zvcih2YXIgcz1mdW5jdGlvbihzKXt3dChvW3NdKS5zdWJzY3JpYmUobmV3IEgodCwoZnVuY3Rpb24obyl7aWYoZVtzXS5wdXNoKG8pLGUuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSl7dmFyIGw9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0KCl9KSk7dC5uZXh0KG4/bi5hcHBseSh2b2lkIDAscihbXSxhKGwpKSk6bCksZS5zb21lKChmdW5jdGlvbih0LGUpe3JldHVybiF0Lmxlbmd0aCYmaVtlXX0pKSYmdC5jb21wbGV0ZSgpfX0pLChmdW5jdGlvbigpe2lbc109ITAsIWVbc10ubGVuZ3RoJiZ0LmNvbXBsZXRlKCl9KSkpfSxsPTA7IXQuY2xvc2VkJiZsPG8ubGVuZ3RoO2wrKylzKGwpO3JldHVybiBmdW5jdGlvbigpe2U9aT1udWxsfX0pKTpkdH0pKHRoaXMud2ViYXBwRGF0YVNvdXJjZS5mZXRjaFBsdWdpbnNMaXN0aW5nKHQpLHRoaXMuZmV0Y2hFbnZpcm9ubWVudCgpKS5waXBlKFZ0KCgoW3RdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gobkEoe3BsdWdpbnM6dH0pKX0pKSxoZSgodD0+KHRoaXMuc3RvcmUuZGlzcGF0Y2gob0EodCBpbnN0YW5jZW9mIHFFP3tmYWlsdXJlQ29kZTp0LmZhaWx1cmVDb2RlfTp7ZmFpbHVyZUNvZGU6VkUuVU5LTk9XTn0pKSxkdCkpKSkpKSksdGhpcy5vbkRhc2hib2FyZExvYWQkLnBpcGUoVnQoKChbLHRdKT0+dCkpLFZlKCh0PT50IT09X0QuQ09NUEFSRV9FWFBFUklNRU5UP3p0KFtdKTp0aGlzLnN0b3JlLnNlbGVjdChTUikucGlwZSh3ZSgoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5lbnRyaWVzKHQpLG89bmV3IE1hcChPYmplY3QuZW50cmllcyhlKSk7aWYobi5sZW5ndGghPT1vLnNpemUpcmV0dXJuITE7Zm9yKGNvbnN0W3QsZV1vZiBuKXtpZighby5nZXQodCkpcmV0dXJuITE7aWYoby5nZXQodCkuYWxpYXNUZXh0IT09ZS5hbGlhc1RleHR8fG8uZ2V0KHQpLmFsaWFzTnVtYmVyIT09ZS5hbGlhc051bWJlcilyZXR1cm4hMX1yZXR1cm4hMH0pKSxQZSgwKSxZZSg1MDAsdm9pZCAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSkpKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoUFIpLHRoaXMuc3RvcmUuc2VsZWN0KHRUKSksZmUoKChbLHQsZV0pPT5zVC5oYXModCkmJmUuc3RhdGUhPT1HRS5MT0FESU5HKSksV2UoKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChpQSgpKX0pKSxWZSgoKCk9PnRoaXMucmVmcmVzaFBvbHltZXJSdW5zKCkpKSxXZSgoKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGFBKCkpfSkpLGhlKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2gockEoKSksZHQpKSkpKSkse2Rpc3BhdGNoOiExfSksdGhpcy5kaXNwYXRjaENoYW5nZVBsdWdpbiQ9V1MoKCgpPT5wZSh0aGlzLm9uRGFzaGJvYXJkTG9hZCQsdGhpcy5hY3Rpb25zJC5waXBlKCRTKG5BKSkpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3Qob1QpKSxWdCgoKFssdF0pPT50KSksd2UoKSxmZSgodD0+bnVsbCE9PXQpKSx2ZSgxKSxXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goS0Uoe3BsdWdpbjp0fSkpfSkpKSkse2Rpc3BhdGNoOiExfSl9cmVmcmVzaFBvbHltZXJSdW5zKCl7cmV0dXJuIFB0KHRoaXMudGZCYWNrZW5kLnJlZi5ydW5zU3RvcmUucmVmcmVzaCgpKX1mZXRjaEVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMud2ViYXBwRGF0YVNvdXJjZS5mZXRjaEVudmlyb25tZW50KCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goc0Eoe2Vudmlyb25tZW50OnR9KSl9KSkpfX1sVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bFQpKFRyKFFTKSxUcihpUyksVHIoWkUpKX0sbFQuybVwcm92PVNuKHt0b2tlbjpsVCxmYWN0b3J5OmxULsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsVCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpaRX1dfSksbnVsbCk7Y29uc3QgY1Q9bmV3IGVyKCJDb3JlIEZlYXR1cmUgQ29uZmlnIik7ZnVuY3Rpb24gZFQodCl7cmV0dXJue2luaXRpYWxTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sWkEpLHthY3RpdmVQbHVnaW46dC5nZXRQbHVnaW5JZCgpfHxudWxsfSl9fWZ1bmN0aW9uIHBUKCl7cmV0dXJuIGJTKHJULCh0PT4oe3NpZGVCYXJXaWR0aEluUGVyY2VudDp0fSkpKX1jbGFzcyBtVHt9bVQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1UKX0sbVQuybVtb2Q9dW8oe3R5cGU6bVR9KSxtVC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTpjVCxkZXBzOltIUl0sdXNlRmFjdG9yeTpkVH1dLGltcG9ydHM6W1toRC5mb3JGZWF0dXJlKFtsVF0pLFRTLmZvckZlYXR1cmUocUEsSkEsY1QpLFhFLExSLmRlZmluZUdsb2JhbFNldHRpbmcocFQpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1ULFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbaEQuZm9yRmVhdHVyZShbbFRdKSxUUy5mb3JGZWF0dXJlKHFBLEpBLGNUKSxYRSxMUi5kZWZpbmVHbG9iYWxTZXR0aW5nKHBUKV0scHJvdmlkZXJzOlt7cHJvdmlkZTpjVCxkZXBzOltIUl0sdXNlRmFjdG9yeTpkVH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8obVQse2ltcG9ydHM6W2dELEFTLFhFLExSXX0pO2NvbnN0IHVUPW5ldyBlcigiW0FsZXJ0XSBBY3Rpb24tVG8tQWxlcnQgUHJvdmlkZXIiKTtjbGFzcyBmVHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb3ZpZGVycz1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHR8fFtdKWZvcihjb25zdCB0IG9mIGUpe2lmKHRoaXMucHJvdmlkZXJzLmhhcyh0LmFjdGlvbkNyZWF0b3IudHlwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCIke3QuYWN0aW9uQ3JlYXRvci50eXBlfSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBhbGVydHMuIE11bHRpcGxlIGFsZXJ0cyBmb3IgdGhlIHNhbWUgYWN0aW9uIGlzIG5vdCBhbGxvd2VkLmApO3RoaXMucHJvdmlkZXJzLnNldCh0LmFjdGlvbkNyZWF0b3IudHlwZSx0LmFsZXJ0RnJvbUFjdGlvbil9fWdldEFsZXJ0RnJvbUFjdGlvbih0KXtjb25zdCBlPXRoaXMucHJvdmlkZXJzLmdldCh0LnR5cGUpO3JldHVybiBlP2UodCk6bnVsbH1zdGF0aWMgcmVnaXN0ZXJBbGVydEFjdGlvbnModCl7cmV0dXJue25nTW9kdWxlOmZULHByb3ZpZGVyczpbe3Byb3ZpZGU6dVQsbXVsdGk6ITAsdXNlRmFjdG9yeTp0fV19fX1mVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZlQpKFRyKHVULDgpKX0sZlQuybVtb2Q9dW8oe3R5cGU6ZlR9KSxmVC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmVCxbe3R5cGU6TF8sYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbdVRdfV19XX0pLG51bGwpO2NvbnN0IGdUPV9rKCJbUnVuc10gRmV0Y2ggUnVucyBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxoVD1faygiW1J1bnNdIEZldGNoIFJ1bnMgU3VjY2VlZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYlQ9X2soIltSdW5zXSBGZXRjaCBSdW5zIEZhaWxlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHlUPV9rKCJbUnVuc10gUnVuIFNlbGVjdGlvbiBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksX1Q9X2soIltSdW5zXSBSdW4gUGFnZSBTZWxlY3Rpb24gVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLENUPV9rKCJbUnVuc10gUnVuIFNlbGVjdG9yIFBhZ2luYXRpb24gT3B0aW9uIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxNVD1faygiW1J1bnNdIFJ1biBTZWxlY3RvciBTb3J0IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx2VD1faygiW1J1bnNdIFJ1biBTZWxlY3RvciBSZWdleCBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHhUPV9rKCJbUnVuc10gUnVuIENvbG9yIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxPVD1faygiW1J1bnNdIFJ1biBUYWJsZSBTaG93biIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFBUPV9rKCJbUnVuc10gUnVuIEdyb3VwIEJ5IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTt2YXIgd1Qsa1QsU1QsRFQ7IShmdW5jdGlvbih0KXt0LkRBVEFTRVRfVU5LTk9XTj0iREFUQVNFVF9VTktOT1dOIix0LkRBVEFTRVRfVFJBSU5JTkc9IkRBVEFTRVRfVFJBSU5JTkciLHQuREFUQVNFVF9WQUxJREFUSU9OPSJEQVRBU0VUX1ZBTElEQVRJT04ifSkod1R8fCh3VD17fSkpLChmdW5jdGlvbih0KXt0LlNUQVRVU19VTktOT1dOPSJTVEFUVVNfVU5LTk9XTiIsdC5TVEFUVVNfU1VDQ0VTUz0iU1RBVFVTX1NVQ0NFU1MiLHQuU1RBVFVTX0ZBSUxVUkU9IlNUQVRVU19GQUlMVVJFIix0LlNUQVRVU19SVU5OSU5HPSJTVEFUVVNfUlVOTklORyJ9KShrVHx8KGtUPXt9KSksKGZ1bmN0aW9uKHQpe3QuREFUQV9UWVBFX1VOU0VUPSJEQVRBX1RZUEVfVU5TRVQiLHQuREFUQV9UWVBFX1NUUklORz0iREFUQV9UWVBFX1NUUklORyIsdC5EQVRBX1RZUEVfQk9PTD0iREFUQV9UWVBFX0JPT0wiLHQuREFUQV9UWVBFX0ZMT0FUNjQ9IkRBVEFfVFlQRV9GTE9BVDY0In0pKFNUfHwoU1Q9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRJU0NSRVRFPTBdPSJESVNDUkVURSIsdFt0LklOVEVSVkFMPTFdPSJJTlRFUlZBTCJ9KShEVHx8KERUPXt9KSk7Y2xhc3MgUlR7fVJULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSVCl9LFJULsm1cHJvdj1Tbih7dG9rZW46UlQsZmFjdG9yeTpSVC7JtWZhYyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUlQsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTtjb25zdCBFVD1faygiW0hwYXJhbXNdIEhwYXJhbXMgRGlzY3JldGUgSHBhcmFtIEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksQVQ9X2soIltIcGFyYW1zXSBIcGFyYW1zIEludGVydmFsIEhwYXJhbSBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFRUPV9rKCJbSHBhcmFtc10gSHBhcmFtcyBNZXRyaWMgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTtmdW5jdGlvbiBOVCh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoWy4uLnRdLnNvcnQoKSl9ZnVuY3Rpb24gelQodCl7dmFyIGUsbixvLGk7Y29uc3QgYT1uZXcgTWFwLHI9bmV3IE1hcCxzPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgdClmb3IoY29uc3RbdCxsXW9mIGEpaWYobC50eXBlPT09RFQuRElTQ1JFVEUpe2NvbnN0e3Bvc3NpYmxlVmFsdWVzOmUsdmFsdWVzOm59PXIuZ2V0KHQpfHx7cG9zc2libGVWYWx1ZXM6bmV3IFNldCx2YWx1ZXM6bmV3IFNldH07Zm9yKGNvbnN0IHQgb2YgbC5maWx0ZXJWYWx1ZXMpbi5hZGQodCk7Zm9yKGNvbnN0IHQgb2YgbC5wb3NzaWJsZVZhbHVlcyllLmFkZCh0KTtyLnNldCh0LHtwb3NzaWJsZVZhbHVlczplLHZhbHVlczpufSl9ZWxzZXtjb25zdCBhPXMuZ2V0KHQpO3Muc2V0KHQse2ZpbHRlckxvd2VyVmFsdWU6TWF0aC5taW4obC5maWx0ZXJMb3dlclZhbHVlLG51bGwhPT0oZT1udWxsPT1hP3ZvaWQgMDphLmZpbHRlckxvd2VyVmFsdWUpJiZ2b2lkIDAhPT1lP2U6MS8wKSxmaWx0ZXJVcHBlclZhbHVlOk1hdGgubWF4KGwuZmlsdGVyVXBwZXJWYWx1ZSxudWxsIT09KG49bnVsbD09YT92b2lkIDA6YS5maWx0ZXJVcHBlclZhbHVlKSYmdm9pZCAwIT09bj9uOi0xLzApLG1pblZhbHVlOk1hdGgubWluKGwubWluVmFsdWUsbnVsbCE9PShvPW51bGw9PWE/dm9pZCAwOmEubWluVmFsdWUpJiZ2b2lkIDAhPT1vP286MS8wKSxtYXhWYWx1ZTpNYXRoLm1heChsLm1heFZhbHVlLG51bGwhPT0oaT1udWxsPT1hP3ZvaWQgMDphLm1heFZhbHVlKSYmdm9pZCAwIT09aT9pOi0xLzApfSl9Zm9yKGNvbnN0W3Qse3ZhbHVlczplLHBvc3NpYmxlVmFsdWVzOm59XW9mIHIpYS5zZXQodCx7dHlwZTpEVC5ESVNDUkVURSxpbmNsdWRlVW5kZWZpbmVkOiEwLHBvc3NpYmxlVmFsdWVzOlsuLi5uXSxmaWx0ZXJWYWx1ZXM6Wy4uLmVdfSk7Zm9yKGNvbnN0W3Qse21pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfV1vZiBzKXtpZihhLmhhcyh0KSl7Y29uc3QgZT1hLmdldCh0KTtpZihlLnR5cGU9PT1EVC5ESVNDUkVURSYmZS5wb3NzaWJsZVZhbHVlcy5zb21lKCh0PT50KSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYENhbm5vdCBjb21iaW5lIGhwYXJhbSwgJHt0fSwgYXMgaXQgaXMgb2YgbWl4ZWQgdHlwZXMuYCl9YS5zZXQodCx7dHlwZTpEVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfSl9cmV0dXJuIGF9ZnVuY3Rpb24gSVQodCl7dmFyIGUsbixvLGk7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCByIG9mIHQpZm9yKGNvbnN0W3Qsc11vZiByKXtjb25zdCByPWEuZ2V0KHQpO2Euc2V0KHQsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt0eXBlOkRULklOVEVSVkFMLGluY2x1ZGVVbmRlZmluZWQ6ITB9LHIpLHttaW5WYWx1ZTpNYXRoLm1pbihzLm1pblZhbHVlLG51bGwhPT0oZT1udWxsPT1yP3ZvaWQgMDpyLm1pblZhbHVlKSYmdm9pZCAwIT09ZT9lOjEvMCksbWF4VmFsdWU6TWF0aC5tYXgocy5tYXhWYWx1ZSxudWxsIT09KG49bnVsbD09cj92b2lkIDA6ci5tYXhWYWx1ZSkmJnZvaWQgMCE9PW4/bjotMS8wKSxmaWx0ZXJMb3dlclZhbHVlOk1hdGgubWluKHMuZmlsdGVyTG93ZXJWYWx1ZSxudWxsIT09KG89bnVsbD09cj92b2lkIDA6ci5maWx0ZXJMb3dlclZhbHVlKSYmdm9pZCAwIT09bz9vOjEvMCksZmlsdGVyVXBwZXJWYWx1ZTpNYXRoLm1heChzLmZpbHRlclVwcGVyVmFsdWUsbnVsbCE9PShpPW51bGw9PXI/dm9pZCAwOnIuZmlsdGVyVXBwZXJWYWx1ZSkmJnZvaWQgMCE9PWk/aTotMS8wKX0pKX1yZXR1cm4gYX1jb25zdCBIVD1WUyh7c3BlY3M6e30sZmlsdGVyczp7fX0sQlMoRVQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLGhwYXJhbU5hbWU6aSxmaWx0ZXJWYWx1ZXM6YSxpbmNsdWRlVW5kZWZpbmVkOnJ9PWUscz1OVChvKSxsPW51bGwhPT0obj10LmZpbHRlcnNbc10pJiZ2b2lkIDAhPT1uP246e2hwYXJhbXM6bmV3IE1hcH0sYz1sLmhwYXJhbXMuZ2V0KGkpO2lmKGMmJmMudHlwZSE9PURULkRJU0NSRVRFKXRocm93IG5ldyBSYW5nZUVycm9yKGBOZXcgZGlzY3JldGUgZmlsdGVyIG9mICR7aX0gY29uZmxpY3RzIGV4aXN0aW5nIGZpbHRlciBvZiBgK0RUW2MudHlwZV0pO2NvbnN0IGQ9elQoby5maWx0ZXIoKGU9PkJvb2xlYW4odC5zcGVjc1tlXSkpKS5tYXAoKGU9PnQuc3BlY3NbZV0uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKSkpLmdldChpKTtpZighZCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgaHBhcmFtLCAke2l9LCB3aGVuIGl0IGlzIG5vdCBrbm93biBmb3IgZXhwZXJpbWVudElkczogJHtvLmpvaW4oIiwgIil9YCk7aWYoZC50eXBlIT09RFQuRElTQ1JFVEUpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0ICR7aX0gd2hlbiBkZWZhdWx0IGZpbHRlciBpcyBub3Qgb2YgZGlzY3JldGUgdHlwZS5gKTtjb25zdCBwPW5ldyBTZXQoZC5wb3NzaWJsZVZhbHVlcyksbT1bLi4uYV0uZmlsdGVyKCh0PT4hcC5oYXModCkpKTtpZihtLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYE5ldyBmaWx0ZXIgZm9yICR7aX0gaGFzIG1vcmUgdGhhbiBvbmUgdmFsdWUgdGhhdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3BlYy4gQmFkIHZhbHVlczogJHttLmpvaW4oIiwgIil9YCk7Y29uc3QgdT1uZXcgTWFwKGwuaHBhcmFtcyk7cmV0dXJuIHUuc2V0KGksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHt0eXBlOkRULkRJU0NSRVRFLGluY2x1ZGVVbmRlZmluZWQ6cixwb3NzaWJsZVZhbHVlczpbLi4ucF0sZmlsdGVyVmFsdWVzOmF9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZpbHRlcnMpLHtbc106T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtocGFyYW1zOnV9KX0pfSl9KSksQlMoQVQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLGhwYXJhbU5hbWU6aSxmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpyLGluY2x1ZGVVbmRlZmluZWQ6c309ZSxsPU5UKG8pLGM9bnVsbCE9PShuPXQuZmlsdGVyc1tsXSkmJnZvaWQgMCE9PW4/bjp7bWV0cmljczpuZXcgTWFwLGhwYXJhbXM6bmV3IE1hcH0sZD1jLmhwYXJhbXMuZ2V0KGkpO2lmKGQmJmQudHlwZSE9PURULklOVEVSVkFMKXRocm93IG5ldyBSYW5nZUVycm9yKGBOZXcgaW50ZXJ2YWwgZmlsdGVyIG9mICR7aX0gY29uZmxpY3RzIGV4aXN0aW5nIGZpbHRlciBvZiBgK0RUW2QudHlwZV0pO2NvbnN0IHA9elQoby5maWx0ZXIoKGU9PkJvb2xlYW4odC5zcGVjc1tlXSkpKS5tYXAoKGU9PnQuc3BlY3NbZV0uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKSkpLmdldChpKTtpZighcCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgaHBhcmEsICR7aX0sIHdoZW4gaXQgaXMgbm90IGtub3duIGZvciBleHBlcmltZW50SWRzOiAke28uam9pbigiLCAiKX1gKTtpZihwLnR5cGUhPT1EVC5JTlRFUlZBTCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgJHtpfSB3aGVuIGRlZmF1bHQgZmlsdGVyIGlzIG5vdCBvZiBpbnRlcnZhbCB0eXBlLmApO2NvbnN0IG09bmV3IE1hcChjLmhwYXJhbXMpO3JldHVybiBtLnNldChpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkKSx7dHlwZTpEVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOnMsbWluVmFsdWU6cC5taW5WYWx1ZSxtYXhWYWx1ZTpwLm1heFZhbHVlLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZpbHRlcnMpLHtbbF06T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHtocGFyYW1zOm19KX0pfSl9KSksQlMoVFQsKCh0LGUpPT57dmFyIG47Y29uc3R7ZXhwZXJpbWVudElkczpvLG1ldHJpY1RhZzppLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnIsaW5jbHVkZVVuZGVmaW5lZDpzfT1lLGw9TlQobyksYz1udWxsIT09KG49dC5maWx0ZXJzW2xdKSYmdm9pZCAwIT09bj9uOnttZXRyaWNzOm5ldyBNYXAsaHBhcmFtczpuZXcgTWFwfSxkPUlUKG8uZmlsdGVyKChlPT5Cb29sZWFuKHQuc3BlY3NbZV0pKSkubWFwKChlPT50LnNwZWNzW2VdLm1ldHJpYy5kZWZhdWx0RmlsdGVycykpKS5nZXQoaSk7aWYoIWQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IG1ldHJpYywgJHtpfSwgd2hlbiBpdCBpcyBub3Qga25vd24gZm9yIGV4cGVyaW1lbnRJZHM6ICR7by5qb2luKCIsICIpfWApO2NvbnN0IHA9Yy5tZXRyaWNzLmdldChpKSxtPW5ldyBNYXAoYy5tZXRyaWNzKTtyZXR1cm4gbS5zZXQoaSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scCkse3R5cGU6RFQuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDpzLG1pblZhbHVlOmQubWluVmFsdWUsbWF4VmFsdWU6ZC5tYXhWYWx1ZSxmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpyfSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5maWx0ZXJzKSx7W2xdOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7bWV0cmljczptfSl9KX0pfSkpLEJTKGhULCgodCxlKT0+e3ZhciBuLG8saSxhO2lmKDA9PT1PYmplY3Qua2V5cyhlLm5ld1J1bnNBbmRNZXRhZGF0YSkubGVuZ3RoKXJldHVybiB0O2NvbnN0IHI9T2JqZWN0LmFzc2lnbih7fSx0LnNwZWNzKSxzPW5ldyBNYXAsbD1uZXcgU2V0O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUubmV3UnVuc0FuZE1ldGFkYXRhKSl7Y29uc3QgYz1uZXcgTWFwLGQ9bmV3IE1hcCxwPW5ldyBNYXAsbT1uZXcgTWFwLHtydW5zOnUsbWV0YWRhdGE6Zn09ZS5uZXdSdW5zQW5kTWV0YWRhdGFbdF07Zm9yKGNvbnN0IHQgb2YgdSl7Y29uc3QgZT1mLnJ1blRvSHBhcmFtc0FuZE1ldHJpY3NbdC5pZF07aWYoZSlmb3IoY29uc3QgdCBvZiBlLm1ldHJpY3Mpe2NvbnN0IGU9cy5nZXQodC50YWcpO3Muc2V0KHQudGFnLHttaW46ZT9NYXRoLm1pbihlLm1pbix0LnZhbHVlKTp0LnZhbHVlLG1heDplP01hdGgubWF4KGUubWF4LHQudmFsdWUpOnQudmFsdWV9KX19Zm9yKGNvbnN0e25hbWU6dCxkb21haW46ZX1vZiBmLmhwYXJhbVNwZWNzKWlmKGUudHlwZT09PURULkRJU0NSRVRFKXtjb25zdCBuPXAuZ2V0KHQpfHxuZXcgU2V0O2Zvcihjb25zdCB0IG9mIGUudmFsdWVzKW4uYWRkKHQpO3Auc2V0KHQsbil9ZWxzZXtjb25zdCBuPW0uZ2V0KHQpO20uc2V0KHQse21pblZhbHVlOm4/TWF0aC5taW4oZS5taW5WYWx1ZSxuLm1pblZhbHVlKTplLm1pblZhbHVlLG1heFZhbHVlOm4/TWF0aC5tYXgoZS5tYXhWYWx1ZSxuLm1heFZhbHVlKTplLm1heFZhbHVlfSl9Zm9yKGNvbnN0IHQgb2YgZi5tZXRyaWNTcGVjcylsLmFkZCh0LnRhZyk7Zm9yKGNvbnN0W3QsZV1vZiBwKWMuc2V0KHQse3R5cGU6RFQuRElTQ1JFVEUsaW5jbHVkZVVuZGVmaW5lZDohMCxwb3NzaWJsZVZhbHVlczpbLi4uZV0sZmlsdGVyVmFsdWVzOlsuLi5lXX0pO2Zvcihjb25zdFt0LHttaW5WYWx1ZTplLG1heFZhbHVlOm59XW9mIG0pYy5zZXQodCx7dHlwZTpEVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmUsbWF4VmFsdWU6bixmaWx0ZXJMb3dlclZhbHVlOmUsZmlsdGVyVXBwZXJWYWx1ZTpufSk7Zm9yKGNvbnN0IHQgb2YgbCl7Y29uc3QgZT1zLmdldCh0KSxpPW51bGwhPT0obj1udWxsPT1lP3ZvaWQgMDplLm1pbikmJnZvaWQgMCE9PW4/bjowLGE9bnVsbCE9PShvPW51bGw9PWU/dm9pZCAwOmUubWF4KSYmdm9pZCAwIT09bz9vOjA7ZC5zZXQodCx7dHlwZTpEVC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmksbWF4VmFsdWU6YSxmaWx0ZXJMb3dlclZhbHVlOmksZmlsdGVyVXBwZXJWYWx1ZTphfSl9clt0XT17aHBhcmFtOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxudWxsPT09KGk9clt0XSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaHBhcmFtKSx7c3BlY3M6Zi5ocGFyYW1TcGVjcyxkZWZhdWx0RmlsdGVyczpjfSksbWV0cmljOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxudWxsPT09KGE9clt0XSl8fHZvaWQgMD09PWE/dm9pZCAwOmEubWV0cmljKSx7c3BlY3M6Zi5tZXRyaWNTcGVjcyxkZWZhdWx0RmlsdGVyczpkfSl9fXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NwZWNzOnJ9KX0pKSk7ZnVuY3Rpb24gRlQodCxlKXtyZXR1cm4gSFQodCxlKX1jb25zdCBMVD0iaHBhcmFtcyI7Y2xhc3MgQlR7fUJULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCVCl9LEJULsm1bW9kPXVvKHt0eXBlOkJUfSksQlQuybVpbmo9RG4oe2ltcG9ydHM6W1tUUy5mb3JGZWF0dXJlKExULEZUKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCVCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1RTLmZvckZlYXR1cmUoTFQsRlQpXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEJULHtpbXBvcnRzOltBU119KTtjbGFzcyBWVHt9ZnVuY3Rpb24gVVQodCxlKXtyZXR1cm5gJHtlfS8ke3R9YH1WVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VlQpfSxWVC7JtW1vZD11byh7dHlwZTpWVH0pLFZULsm1aW5qPURuKHtpbXBvcnRzOltbQlRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVlQsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltCVF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhWVCx7aW1wb3J0czpbQlRdfSk7Y2xhc3MgalR7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXR9ZmV0Y2hSdW5zKHQpe3JldHVybiB0aGlzLmh0dHAuZ2V0KCJkYXRhL3J1bnMiKS5waXBlKFZ0KChlPT5lLm1hcCgoZT0+KHtpZDpVVChlLHQpLG5hbWU6ZSxzdGFydFRpbWU6MH0pKSkpKSl9ZmV0Y2hIcGFyYW1zTWV0YWRhdGEodCl7cmV0dXJuIHp0KHtocGFyYW1TcGVjczpbXSxtZXRyaWNTcGVjczpbXSxydW5Ub0hwYXJhbXNBbmRNZXRyaWNzOnt9fSl9fWpULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqVCkoVHIoTEUpKX0salQuybVwcm92PVNuKHt0b2tlbjpqVCxmYWN0b3J5OmpULsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqVCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TEV9XX0pLG51bGwpO2NsYXNzIFdUe31XVC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V1QpfSxXVC7JtW1vZD11byh7dHlwZTpXVH0pLFdULsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOlJULHVzZUNsYXNzOmpUfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFdULFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpSVCx1c2VDbGFzczpqVH1dfV19XSxudWxsLG51bGwpO2NvbnN0IEdUPSJhbGVydHMiLFlUPWJTKF9TKEdUKSwodD0+dC5sYXRlc3RBbGVydCkpLHFUPSJleHBlcmltZW50cyIsWlQ9YlMoX1MocVQpLCh0PT50LmRhdGEpKSxYVD1iUyhaVCwoKHQsZSk9Pntjb25zdHtleHBlcmltZW50SWQ6bn09ZTtyZXR1cm4gdC5leHBlcmltZW50TWFwW25dfHxudWxsfSkpOwovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwpmdW5jdGlvbiBLVCh0LGUpe3ZhciBuPXt9O2Zvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiZlLmluZGV4T2Yobyk8MCYmKG5bb109dFtvXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPTA7Zm9yKG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtpPG8ubGVuZ3RoO2krKyllLmluZGV4T2Yob1tpXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQsb1tpXSkmJihuW29baV1dPXRbb1tpXV0pfXJldHVybiBufWZ1bmN0aW9uIEpUKHQsZSxuLG8pe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIHIodCl7dHJ5e2woby5uZXh0KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBzKHQpe3RyeXtsKG8udGhyb3codCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIGwodCl7dC5kb25lP2kodC52YWx1ZSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSl9KSh0LnZhbHVlKS50aGVuKHIscyl9bCgobz1vLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfXZhciBRVCwkVCx0TjshKGZ1bmN0aW9uKHQpe3QuU0NBTEFSUz0ic2NhbGFycyIsdC5ISVNUT0dSQU1TPSJoaXN0b2dyYW1zIix0LklNQUdFUz0iaW1hZ2VzIn0pKFFUfHwoUVQ9e30pKSwoZnVuY3Rpb24odCl7dC5ERUZBVUxUPSJkZWZhdWx0Iix0LkFMUEhBQkVUSUNBTD0iYWxwaGFiZXRpY2FsIix0LkFTQ0VORElORz0iYXNjZW5kaW5nIix0LkRFU0NFTkRJTkc9ImRlc2NlbmRpbmciLHQuTkVBUkVTVD0ibmVhcmVzdCJ9KSgkVHx8KCRUPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5TVEVQPTBdPSJTVEVQIix0W3QuUkVMQVRJVkU9MV09IlJFTEFUSVZFIix0W3QuV0FMTF9USU1FPTJdPSJXQUxMX1RJTUUifSkodE58fCh0Tj17fSkpO2NvbnN0IGVOPSJ0aW1lc2VyaWVzIjtjb25zdCBuTj1bUVQuSU1BR0VTXTtmdW5jdGlvbiBvTih0KXtyZXR1cm4gbk4uaW5jbHVkZXModCl9Y29uc3QgaU49W1FULkhJU1RPR1JBTVMsUVQuSU1BR0VTXTtmdW5jdGlvbiBhTih0KXtyZXR1cm4gaU4uaW5jbHVkZXModCl9ZnVuY3Rpb24gck4odCl7cmV0dXJuIGFOKHQucGx1Z2luKX1jbGFzcyBzTnt9ZnVuY3Rpb24gbE4odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoImVycm9yIil9Y29uc3QgY049ImRhdGEvcGx1Z2luL3RpbWVzZXJpZXMiO2Z1bmN0aW9uIGROKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIvIik7cmV0dXJue3J1bjp0LnN1YnN0cmluZyhlKzEpLGV4cGVyaW1lbnRJZDp0LnN1YnN0cmluZygwLGUpfX1mdW5jdGlvbiBwTih0LGUpe3JldHVybmAke2V9LyR7dH1gfWZ1bmN0aW9uIG1OKHQsZSl7Y29uc3R7cnVuVG9TZXJpZXM6bixydW46b309dCxpPUtUKHQsWyJydW5Ub1NlcmllcyIsInJ1biJdKSxhPU9iamVjdC5hc3NpZ24oe30saSk7cmV0dXJuIG4mJihhLnJ1blRvU2VyaWVzPXVOKG4sZSkpLG8mJihhLnJ1bklkPXBOKG8sZSkpLGF9ZnVuY3Rpb24gdU4odCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7bltwTihvLGUpXT10W29dfXJldHVybiBufWNsYXNzIGZOe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5odHRwPXQsdGhpcy5zdG9yZT1lfWZldGNoVGFnTWV0YWRhdGEodCl7Y29uc3QgZT10Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke2NOfS90YWdzYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIG9mIE9iamVjdC5rZXlzKHQpKXtjb25zdCBpPW87aWYob04oaSkpe2NvbnN0IG89dFtpXSx7dGFnUnVuU2FtcGxlZEluZm86YX09byxyPUtUKG8sWyJ0YWdSdW5TYW1wbGVkSW5mbyJdKSxzPXt9O2Zvcihjb25zdCB0IGluIGEpYS5oYXNPd25Qcm9wZXJ0eSh0KSYmKHNbdF09dU4oYVt0XSxlKSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3RhZ1J1blNhbXBsZWRJbmZvOnN9KX1lbHNle2NvbnN0IG89dFtpXSx7cnVuVGFnSW5mbzphfT1vLHI9S1QobyxbInJ1blRhZ0luZm8iXSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3J1blRhZ0luZm86dU4oYSxlKX0pfX1yZXR1cm4gbn0pKGUsdCkpKSkpKSxuPXRoaXMuc3RvcmUuc2VsZWN0KEhEKS5waXBlKGZlKEJvb2xlYW4pLHZlKDEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHFEKSksVnQoKChbLHRdKT0+dCkpKTtyZXR1cm4gaWUoZSkucGlwZShxZShuKSxWdCgoKFt0LGVdKT0+e2NvbnN0IG49KGZ1bmN0aW9uIG8odCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0KWZvcihjb25zdCB0IG9mIE9iamVjdC52YWx1ZXMoUVQpKWlmKG9OKHQpKXtlW3RdPWVbdF18fHt0YWdEZXNjcmlwdGlvbnM6e30sdGFnUnVuU2FtcGxlZEluZm86e319O2NvbnN0e3RhZ0Rlc2NyaXB0aW9uczpvLHRhZ1J1blNhbXBsZWRJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKTtjb25zdCBhPWVbdF0udGFnUnVuU2FtcGxlZEluZm87Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpe2FbdF09YVt0XXx8e307Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMoaVt0XSkpYVt0XVtlXT1pW3RdW2VdfX1lbHNle2VbdF09ZVt0XXx8e3RhZ0Rlc2NyaXB0aW9uczp7fSxydW5UYWdJbmZvOnt9fTtjb25zdHt0YWdEZXNjcmlwdGlvbnM6byxydW5UYWdJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKSxlW3RdLnJ1blRhZ0luZm89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0ucnVuVGFnSW5mbyksaSl9cmV0dXJuIGV9KSh0KTtyZXR1cm4gZXx8KG5bUVQuSU1BR0VTXT17dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fSksbn0pKSl9ZmV0Y2hUaW1lU2VyaWVzKHQpe2NvbnN0IGU9dC5tYXAoKHQ9PntpZihhTih0LnBsdWdpbikpe2NvbnN0IGU9dCx7cnVuSWQ6bn09ZSxvPUtUKGUsWyJydW5JZCJdKSx7cnVuOmksZXhwZXJpbWVudElkOmF9PWROKG4pLHI9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtydW46aX0pO3JldHVybiB0aGlzLmZldGNoVGltZVNlcmllc0JhY2tlbmRSZXF1ZXN0KHIsYSkucGlwZShWdCgoKHtyZXNwb25zZTp0LGV4cGVyaW1lbnRJZDplfSk9Pm1OKHQsZSkpKSl9Y29uc3QgZT10LHtleHBlcmltZW50SWRzOm59PWUsbz1LVChlLFsiZXhwZXJpbWVudElkcyJdKTtyZXR1cm4gaWUobi5tYXAoKHQ9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzQmFja2VuZFJlcXVlc3Qobyx0KSkpKS5waXBlKFZ0KCh0PT57Y29uc3QgZT1LVCh0WzBdLnJlc3BvbnNlLFsicnVuVG9TZXJpZXMiLCJlcnJvciJdKTtmb3IoY29uc3R7cmVzcG9uc2U6bixleHBlcmltZW50SWQ6b31vZiB0KXtjb25zdCB0PW1OKG4sbyk7aWYoZS5lcnJvciljb250aW51ZTtjb25zdHtydW5Ub1NlcmllczppLGVycm9yOmF9PXQ7aWYoYSllLmVycm9yPWEsZS5ydW5Ub1Nlcmllcz12b2lkIDA7ZWxzZXtlLnJ1blRvU2VyaWVzPWUucnVuVG9TZXJpZXN8fHt9O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGkpKWUucnVuVG9TZXJpZXNbdF09aVt0XX19cmV0dXJuIGV9KSkpfSkpO3JldHVybiBpZShlKX1mZXRjaFRpbWVTZXJpZXNCYWNrZW5kUmVxdWVzdCh0LGUpe2NvbnN0IG49bmV3IEZvcm1EYXRhO3JldHVybiBuLmFwcGVuZCgicmVxdWVzdHMiLEpTT04uc3RyaW5naWZ5KFt0XSkpLHRoaXMuaHR0cC5wb3N0KGAvZXhwZXJpbWVudC8ke2V9LyR7Y059L3RpbWVTZXJpZXNgLG4pLnBpcGUoVnQoKHQ9Pih7cmVzcG9uc2U6dFswXSxleHBlcmltZW50SWQ6ZX0pKSkpfWltYWdlVXJsKHQpe3JldHVybmAke2NOfS9pbWFnZURhdGE/aW1hZ2VJZD0ke3R9YH1kb3dubG9hZFVybCh0LGUsbixvKXtjb25zdHtydW46aSxleHBlcmltZW50SWQ6YX09ZE4obik7bGV0IHI7c3dpdGNoKHQpe2Nhc2UgUVQuU0NBTEFSUzpyPSJzY2FsYXJzL3NjYWxhcnMiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQ6IGRvd25sb2FkVXJsIGZvciAke3R9IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX1pZighYSl0aHJvdyBuZXcgRXJyb3IoImV4cGVyaW1lbnRJZCBpcyBlbXB0eTsgaXQgaXMgcmVxdWlyZWQgdG8gZm9ybSBkb3dubG9hZFVybC4iKTtyZXR1cm5gL2V4cGVyaW1lbnQvJHthfS9kYXRhL3BsdWdpbi8ke3J9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmUscnVuOmksZm9ybWF0Om99KX1gfX1mTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Zk4pKFRyKExFKSxUcihpUykpfSxmTi7JtXByb3Y9U24oe3Rva2VuOmZOLGZhY3Rvcnk6Zk4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZOLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMRX0se3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IGdOPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7Y2xhc3MgaE57Z2V0UGFyYW1zKCl7cmV0dXJuIGdOfX1oTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aE4pfSxoTi7JtXByb3Y9U24oe3Rva2VuOmhOLGZhY3Rvcnk6aE4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhOLFt7dHlwZTpqbX1dLG51bGwsbnVsbCk7Y2xhc3MgYk57fWJOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiTil9LGJOLsm1cHJvdj1Tbih7dG9rZW46Yk4sZmFjdG9yeTpiTi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYk4sW3t0eXBlOmptfV0sbnVsbCxudWxsKTtjb25zdCB5Tj0iZXhwZXJpbWVudGFsUGx1Z2luIixfTj0ic2NhbGFyc0JhdGNoU2l6ZSIsQ049ImVuYWJsZUNhcmRXaWR0aFNldHRpbmciLE1OPSJlbmFibGVDb2xvckdyb3VwIix2Tj0iZW5hYmxlQ29sb3JHcm91cEJ5UmVnZXgiLHhOPSJkYXJrTW9kZSIsT049ImVuYWJsZUxpbmtUaW1lIixQTj0iZW5hYmxlVGltZU5hbWVzcGFjZWRTdGF0ZSIsd049ImZvcmNlU1ZHIjtjbGFzcyBrTntjb25zdHJ1Y3Rvcih0KXt0aGlzLnF1ZXJ5UGFyYW1zPXR9Z2V0RmVhdHVyZXModD0hMSl7Y29uc3QgZT10aGlzLnF1ZXJ5UGFyYW1zLmdldFBhcmFtcygpLG49dD90aGlzLmdldFBhcnRpYWxGZWF0dXJlc0Zyb21NZWRpYVF1ZXJ5KCk6e307cmV0dXJuIGUuaGFzKHlOKSYmKG4uZW5hYmxlZEV4cGVyaW1lbnRhbFBsdWdpbnM9ZS5nZXRBbGwoeU4pKSxlLmhhcygidGVuc29yYm9hcmRDb2xhYiIpJiYobi5pbkNvbGFiPSJ0cnVlIj09PWUuZ2V0KCJ0ZW5zb3Jib2FyZENvbGFiIikpLGUuaGFzKF9OKSYmKG4uc2NhbGFyc0JhdGNoU2l6ZT1OdW1iZXIoZS5nZXQoX04pKSksZS5oYXMoTU4pJiYobi5lbmFibGVkQ29sb3JHcm91cD0iZmFsc2UiIT09ZS5nZXQoTU4pKSxlLmhhcyh2TikmJihuLmVuYWJsZWRDb2xvckdyb3VwQnlSZWdleD0iZmFsc2UiIT09ZS5nZXQodk4pKSxlLmhhcyh4TikmJihuLmRlZmF1bHRFbmFibGVEYXJrTW9kZT0iZmFsc2UiIT09ZS5nZXQoeE4pKSxlLmhhcyhPTikmJihuLmVuYWJsZWRMaW5rZWRUaW1lPSJmYWxzZSIhPT1lLmdldChPTikpLGUuaGFzKENOKSYmKG4uZW5hYmxlZENhcmRXaWR0aFNldHRpbmc9ImZhbHNlIiE9PWUuZ2V0KENOKSksZS5oYXMoUE4pJiYobi5lbmFibGVkVGltZU5hbWVzcGFjZWRTdGF0ZT0iZmFsc2UiIT09ZS5nZXQoUE4pKSxlLmhhcyh3TikmJihuLmZvcmNlU3ZnPSJmYWxzZSIhPT1lLmdldCh3TikpLG59Z2V0UGFydGlhbEZlYXR1cmVzRnJvbU1lZGlhUXVlcnkoKXtjb25zdCB0PXt9O3JldHVybiB3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIpLm1hdGNoZXMmJih0LmRlZmF1bHRFbmFibGVEYXJrTW9kZT0hMCksdH19a04uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtOKShUcihoTikpfSxrTi7JtXByb3Y9U24oe3Rva2VuOmtOLGZhY3Rvcnk6a04uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGtOLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoTn1dfSksbnVsbCk7Y2xhc3MgU057fVNOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTTil9LFNOLsm1bW9kPXVvKHt0eXBlOlNOfSksU04uybVpbmo9RG4oe3Byb3ZpZGVyczpba04saE4se3Byb3ZpZGU6Yk4sdXNlQ2xhc3M6a059XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU04sW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6W2tOLGhOLHtwcm92aWRlOmJOLHVzZUNsYXNzOmtOfV19XX1dLG51bGwsbnVsbCk7Y29uc3QgRE49X2soIltGRUFUVVJFIEZMQUddIFBhcnRpYWwgRmVhdHVyZSBGbGFncyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxSTj1faygiW0ZFQVRVUkUgRkxBR10gRW5hYmxlIERhcmsgTW9kZSBPdmVycmlkZSBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksRU49Il90Yl9mb3JjZV9zdmciO2NsYXNzIEFOe2NvbnN0cnVjdG9yKCl7fWdldEZvcmNlU3ZnRmxhZygpe3JldHVybiEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oRU4pfXVwZGF0ZUZvcmNlU3ZnRmxhZyh0KXt0P2xvY2FsU3RvcmFnZS5zZXRJdGVtKEVOLCJwcmVzZW50Iik6bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oRU4pfX1BTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QU4pfSxBTi7JtXByb3Y9U24oe3Rva2VuOkFOLGZhY3Rvcnk6QU4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFOLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgVE49X2soIltGRUFUVVJFIEZMQUddIEVmZmVjdHMgSW5pdCIpO2NsYXNzIE5Oe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5mb3JjZVN2Z0RhdGFTb3VyY2U9byx0aGlzLmdldEZlYXR1cmVGbGFncyQ9V1MoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoJFMoVE4pLF9lKHRoaXMuc3RvcmUuc2VsZWN0KEJEKSksVnQoKChbLHRdKT0+e2NvbnN0IGU9dGhpcy5kYXRhU291cmNlLmdldEZlYXR1cmVzKHQpO3JldHVybiBudWxsIT1lLmZvcmNlU3ZnP3RoaXMuZm9yY2VTdmdEYXRhU291cmNlLnVwZGF0ZUZvcmNlU3ZnRmxhZyhlLmZvcmNlU3ZnKTplLmZvcmNlU3ZnPXRoaXMuZm9yY2VTdmdEYXRhU291cmNlLmdldEZvcmNlU3ZnRmxhZygpLEROKHtmZWF0dXJlczplfSl9KSkpKSl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4gVE4oKX19Tk4uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5OKShUcihRUyksVHIoaVMpLFRyKGJOKSxUcihBTikpfSxOTi7JtXByb3Y9U24oe3Rva2VuOk5OLGZhY3Rvcnk6Tk4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5OLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOmJOfSx7dHlwZTpBTn1dfSksbnVsbCk7Y2xhc3Mgek57fXpOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6Til9LHpOLsm1bW9kPXVvKHt0eXBlOnpOfSksek4uybVpbmo9RG4oe3Byb3ZpZGVyczpbQU5dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6Tixbe3R5cGU6TF8sYXJnczpbe3Byb3ZpZGVyczpbQU5dfV19XSxudWxsLG51bGwpO2NvbnN0IElOPXtpc0ZlYXR1cmVGbGFnc0xvYWRlZDohMSxkZWZhdWx0RmxhZ3M6e2lzQXV0b0RhcmtNb2RlQWxsb3dlZDohMCxkZWZhdWx0RW5hYmxlRGFya01vZGU6ITEsZW5hYmxlRGFya01vZGVPdmVycmlkZTpudWxsLGVuYWJsZWRDb2xvckdyb3VwOiEwLGVuYWJsZWRDb2xvckdyb3VwQnlSZWdleDohMCxlbmFibGVkRXhwZXJpbWVudGFsUGx1Z2luczpbXSxpbkNvbGFiOiExLHNjYWxhcnNCYXRjaFNpemU6dm9pZCAwLG1ldHJpY3NJbWFnZVN1cHBvcnRFbmFibGVkOiEwLGVuYWJsZWRMaW5rZWRUaW1lOiExLGVuYWJsZVRpbWVTZXJpZXNQcm9tb3Rpb246ITEsZW5hYmxlZENhcmRXaWR0aFNldHRpbmc6ITAsZW5hYmxlZFRpbWVOYW1lc3BhY2VkU3RhdGU6ITEsZm9yY2VTdmc6ITF9LGZsYWdPdmVycmlkZXM6e319LEhOPW5ldyBlcigiW0ZlYXR1cmUgRmxhZ10gU3RvcmUgQ29uZmlnIik7ZnVuY3Rpb24gRk4oKXtyZXR1cm57aW5pdGlhbFN0YXRlOklOfX1jb25zdCBMTj1WUyhJTixCUyhETiwoKHQse2ZlYXR1cmVzOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtpc0ZlYXR1cmVGbGFnc0xvYWRlZDohMCxmbGFnT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZsYWdPdmVycmlkZXMpLGUpfSkpKSxCUyhSTiwoKHQse2VuYWJsZURhcmtNb2RlOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmbGFnT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZsYWdPdmVycmlkZXMpLHtlbmFibGVEYXJrTW9kZU92ZXJyaWRlOmV9KX0pKSksQlMoWFIsKCh0LHtwYXJ0aWFsU2V0dGluZ3M6ZX0pPT57aWYoIWUudGhlbWVPdmVycmlkZSlyZXR1cm4gdDtsZXQgbjtzd2l0Y2goZS50aGVtZU92ZXJyaWRlKXtjYXNlIEJSLkJST1dTRVJfREVGQVVMVDpuPW51bGw7YnJlYWs7Y2FzZSBCUi5EQVJLOm49ITA7YnJlYWs7Y2FzZSBCUi5MSUdIVDpuPSExfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcykse2VuYWJsZURhcmtNb2RlT3ZlcnJpZGU6bn0pfSl9KSkpO2Z1bmN0aW9uIEJOKHQsZSl7cmV0dXJuIExOKHQsZSl9ZnVuY3Rpb24gVk4oKXtyZXR1cm4gYlMoVUQsKHQ9Pm51bGw9PT10P3t0aGVtZU92ZXJyaWRlOkJSLkJST1dTRVJfREVGQVVMVH06e3RoZW1lT3ZlcnJpZGU6dD9CUi5EQVJLOkJSLkxJR0hUfSkpfWNsYXNzIFVOe31VTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VU4pfSxVTi7JtW1vZD11byh7dHlwZTpVTn0pLFVOLsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOkhOLHVzZUZhY3Rvcnk6Rk59XSxpbXBvcnRzOltbek4sU04sVFMuZm9yRmVhdHVyZSh6RCxCTixITiksaEQuZm9yRmVhdHVyZShbTk5dKSxMUi5kZWZpbmVHbG9iYWxTZXR0aW5nKFZOKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVTixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3pOLFNOLFRTLmZvckZlYXR1cmUoekQsQk4sSE4pLGhELmZvckZlYXR1cmUoW05OXSksTFIuZGVmaW5lR2xvYmFsU2V0dGluZyhWTildLHByb3ZpZGVyczpbe3Byb3ZpZGU6SE4sdXNlRmFjdG9yeTpGTn1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oVU4se2ltcG9ydHM6W3pOLFNOLEFTLGdELExSXX0pO2NsYXNzIGpOe31qTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ak4pfSxqTi7JtW1vZD11byh7dHlwZTpqTn0pLGpOLsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOnNOLHVzZUNsYXNzOmZOfV0saW1wb3J0czpbW1VOLEJFXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpOLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbVU4sQkVdLHByb3ZpZGVyczpbe3Byb3ZpZGU6c04sdXNlQ2xhc3M6Zk59XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGpOLHtpbXBvcnRzOltVTixCRV19KTtmdW5jdGlvbiBXTih0LGUsbixvKXtyZXR1cm4gdFtlXS5oYXNPd25Qcm9wZXJ0eShuKT9vTihlKT90W2VdW25dLmhhc093blByb3BlcnR5KG8pP3RbZV1bbl1bb106bnVsbDp0W2VdW25dOm51bGx9ZnVuY3Rpb24gR04odCxlLG4sbyl7aWYob04oZSkpe2NvbnN0IGk9T2JqZWN0LmFzc2lnbih7fSx0W2VdKSxhPShmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPXQuaGFzT3duUHJvcGVydHkoZSk/T2JqZWN0LmFzc2lnbih7fSx0W2VdKTp7fSxpPW8uaGFzT3duUHJvcGVydHkobik7cmV0dXJuIG9bbl09aT9PYmplY3QuYXNzaWduKHt9LG9bbl0pOntydW5Ub1Nlcmllczp7fSxydW5Ub0xvYWRTdGF0ZTp7fX0sb30pKGksbixvKTtyZXR1cm4gaVtuXT1hLGl9Y29uc3QgYT1PYmplY3QuYXNzaWduKHt9LHRbZV0pLHI9YS5oYXNPd25Qcm9wZXJ0eShuKTtyZXR1cm4gYVtuXT1yP09iamVjdC5hc3NpZ24oe30sYVtuXSk6e3J1blRvU2VyaWVzOnt9LHJ1blRvTG9hZFN0YXRlOnt9fSxhfWZ1bmN0aW9uIFlOKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1mdW5jdGlvbiBxTih0LGUsbil7Y29uc3Qgbz1PYmplY3QuYXNzaWduKHt9LG4pO2Zvcihjb25zdCBuIG9mIGUpb1tuXT10O3JldHVybiBvfWZ1bmN0aW9uIFpOKHQsZSxuLG8pe2lmKG9OKGUpKXtjb25zdCBpPXRbZV0udGFnUnVuU2FtcGxlZEluZm87aWYoIWkuaGFzT3duUHJvcGVydHkobikpcmV0dXJuW107cmV0dXJuIE9iamVjdC5rZXlzKGlbbl0pLmZpbHRlcigodD0+bzxpW25dW3RdLm1heFNhbXBsZXNQZXJTdGVwKSl9Y29uc3QgaT10W2VdLnRhZ1RvUnVucztyZXR1cm4gaS5oYXNPd25Qcm9wZXJ0eShuKT9pW25dOltdfWZ1bmN0aW9uIFhOKHQsZSl7cmV0dXJuIHQucGx1Z2luPT09ZS5wbHVnaW4mJnQudGFnPT09ZS50YWcmJnQuc2FtcGxlPT09ZS5zYW1wbGUmJih0LnJ1bklkPT09ZS5ydW5JZHx8IXQucnVuSWQmJiFlLnJ1bklkKX1mdW5jdGlvbiBLTih0LGUsbixvLGksYSl7Y29uc3Qgcj1uZXcgU2V0KHQpLHM9W107Zm9yKGNvbnN0IG8gb2YgdClmb3IoY29uc3QgdCBvZiBlKXtpZihYTihuW3RdLG8pKXtzLnB1c2godCksci5kZWxldGUobyk7YnJlYWt9fWlmKCFzLmxlbmd0aClyZXR1cm57dW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHM6dCxjYXJkTWV0YWRhdGFNYXA6bixjYXJkVG9QaW5uZWRDb3B5Om8scGlubmVkQ2FyZFRvT3JpZ2luYWw6aSxjYXJkU3RlcEluZGV4OmF9O2xldCBsPXtjYXJkVG9QaW5uZWRDb3B5Om8scGlubmVkQ2FyZFRvT3JpZ2luYWw6aSxjYXJkU3RlcEluZGV4OmEsY2FyZE1ldGFkYXRhTWFwOm59O2Zvcihjb25zdCB0IG9mIHMpbD1KTih0LGwuY2FyZFRvUGlubmVkQ29weSxsLnBpbm5lZENhcmRUb09yaWdpbmFsLGwuY2FyZFN0ZXBJbmRleCxsLmNhcmRNZXRhZGF0YU1hcCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxsKSx7dW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHM6Wy4uLnJdfSl9ZnVuY3Rpb24gSk4odCxlLG4sbyxpKXtpZihlLmhhcyh0KSlyZXR1cm57Y2FyZFRvUGlubmVkQ29weTplLHBpbm5lZENhcmRUb09yaWdpbmFsOm4sY2FyZFN0ZXBJbmRleDpvLGNhcmRNZXRhZGF0YU1hcDppfTtjb25zdCBhPW5ldyBNYXAoZSkscj1uZXcgTWFwKG4pLHM9T2JqZWN0LmFzc2lnbih7fSxvKSxsPU9iamVjdC5hc3NpZ24oe30saSksYz0oZnVuY3Rpb24gZCh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe2Jhc2VDYXJkSWQ6dH0pfSkodCk7YS5zZXQodCxjKSxyLnNldChjLHQpLG8uaGFzT3duUHJvcGVydHkodCkmJihzW2NdPW9bdF0pO2NvbnN0IHA9aVt0XTtpZighcCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwaW4gYSBjYXJkIHdpdGhvdXQgbWV0YWRhdGEiKTtyZXR1cm4gbFtjXT1wLHtjYXJkVG9QaW5uZWRDb3B5OmEscGlubmVkQ2FyZFRvT3JpZ2luYWw6cixjYXJkU3RlcEluZGV4OnMsY2FyZE1ldGFkYXRhTWFwOmx9fWNvbnN0IFFOPTEwO2Z1bmN0aW9uICROKHQpe3JldHVybiB0LnBpbm5lZENhcmRUb09yaWdpbmFsLnNpemUrdC51bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkcy5sZW5ndGg8UU59ZnVuY3Rpb24gdHoodCxlLG4sbyl7bGV0IGk9T2JqZWN0LmFzc2lnbih7fSx0KTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoYT0+e2lmKCFhLmluY2x1ZGVzKCcicGx1Z2luIjoiaW1hZ2VzIicpKXJldHVybjtjb25zdCByPWV6KGEsZSxuKTtsZXQgcz1udWxsO2lmKG51bGw9PT1vLmVuZClzPShmdW5jdGlvbiBsKHQsZSl7Y29uc3Qgbj1lLmluZGV4T2YodCk7aWYoLTEhPT1uKXJldHVybntpbmRleDpuLGlzQ2xvc2VzdDohMX07Zm9yKGxldCBuPTA7bjxlLmxlbmd0aC0xO24rKyl7Y29uc3Qgbz1lW25dLGk9ZVtuKzFdLGE9LjEqKGktbyk7aWYodDxvKXJldHVybiBudWxsO2lmKCEodD5pKSl7aWYodC1vPD1hKXJldHVybntpbmRleDpuLGlzQ2xvc2VzdDohMH07aWYoaS10PD1hKXJldHVybntpbmRleDpuKzEsaXNDbG9zZXN0OiEwfX19cmV0dXJuIG51bGx9KShvLnN0YXJ0LnN0ZXAscik7ZWxzZXtjb25zdCBlPXJbdFthXS5pbmRleF07cz0oZnVuY3Rpb24gZCh0LGUsbil7aWYoMD09PXQubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IG89dFswXSxpPXRbdC5sZW5ndGgtMV07aWYobj5pKXJldHVybntpbmRleDplLmluZGV4T2YoaSksaXNDbG9zZXN0OiExfTtpZihuPG8pcmV0dXJue2luZGV4OmUuaW5kZXhPZihvKSxpc0Nsb3Nlc3Q6ITF9O3JldHVybiBudWxsfSkoKGZ1bmN0aW9uIGModCxlKXtpZighdClyZXR1cm5bXTtpZihudWxsPT09dC5lbmQpcmV0dXJuLTEhPT1lLmluZGV4T2YodC5zdGFydC5zdGVwKT9bdC5zdGFydC5zdGVwXTpbXTtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpbz49dC5zdGFydC5zdGVwJiZvPD10LmVuZC5zdGVwJiZuLnB1c2gobyk7cmV0dXJuIG59KShvLHIpLHIsZSl9bnVsbCE9PXMmJihpW2FdPXMpfSkpLGl9ZnVuY3Rpb24gZXoodCxlLG4pe2lmKCFlLmhhc093blByb3BlcnR5KHQpKXJldHVybltdO2NvbnN0e3BsdWdpbjpvLHRhZzppLHNhbXBsZTphLHJ1bklkOnJ9PWVbdF07aWYobnVsbD09PXIpcmV0dXJuW107Y29uc3Qgcz1XTihuLG8saSxhKTtyZXR1cm4gbnVsbCE9PXMmJnMucnVuVG9TZXJpZXMuaGFzT3duUHJvcGVydHkocik/cy5ydW5Ub1Nlcmllc1tyXS5tYXAoKHQ9PnQuc3RlcCkpOltdfWNvbnN0IG56PSJtZXRyaWNzIixvej17Y2FyZE1pbldpZHRoOm51bGwsdG9vbHRpcFNvcnQ6JFQuQUxQSEFCRVRJQ0FMLGlnbm9yZU91dGxpZXJzOiEwLHhBeGlzVHlwZTp0Ti5TVEVQLHNjYWxhclNtb290aGluZzouNixzY2FsYXJQYXJ0aXRpb25Ob25Nb25vdG9uaWNYOiExLGltYWdlQnJpZ2h0bmVzc0luTWlsbGk6MWUzLGltYWdlQ29udHJhc3RJbk1pbGxpOjFlMyxpbWFnZVNob3dBY3R1YWxTaXplOiExLGhpc3RvZ3JhbU1vZGU6V0UuT0ZGU0VUfSxpej1fUyhueiksYXo9YlMoaXosKHQ9PnQudGFnTWV0YWRhdGFMb2FkU3RhdGUpKTtiUyhpeiwodD0+dC50YWdNZXRhZGF0YSkpO2NvbnN0IHJ6PWJTKGl6LCh0PT50LmNhcmRMaXN0KSksc3o9YlMoaXosKCh0LGUpPT57aWYoIXQuY2FyZE1ldGFkYXRhTWFwLmhhc093blByb3BlcnR5KGUpKXJldHVybiBHRS5OT1RfTE9BREVEO2NvbnN0e3BsdWdpbjpuLHRhZzpvLHJ1bklkOmksc2FtcGxlOmF9PXQuY2FyZE1ldGFkYXRhTWFwW2VdLHI9V04odC50aW1lU2VyaWVzRGF0YSxuLG8sYSk7aWYoIXIpcmV0dXJuIEdFLk5PVF9MT0FERUQ7Y29uc3Qgcz1yLnJ1blRvTG9hZFN0YXRlO2lmKGkpcmV0dXJuIHMuaGFzT3duUHJvcGVydHkoaSk/c1tpXTpHRS5OT1RfTE9BREVEO2NvbnN0IGw9Wk4odC50YWdNZXRhZGF0YSxuLG8sYSk7aWYoIWwubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGxvYWQgYSBjYXJkIHdob3NlIHRhZyBoYXMgbm8gcnVucyIpO3JldHVybiBsLmV2ZXJ5KCh0PT5zW3RdPT09R0UuTE9BREVEKSk/R0UuTE9BREVEOmwuc29tZSgodD0+c1t0XT09PUdFLkxPQURJTkcpKT9HRS5MT0FESU5HOkdFLk5PVF9MT0FERUR9KSksbHo9YlMoaXosKCh0LGUpPT57aWYoIXQuY2FyZE1ldGFkYXRhTWFwLmhhc093blByb3BlcnR5KGUpKXJldHVybiBudWxsO2NvbnN0e3BsdWdpbjpuLHRhZzpvLHNhbXBsZTppfT10LmNhcmRNZXRhZGF0YU1hcFtlXSxhPVdOKHQudGltZVNlcmllc0RhdGEsbixvLGkpO3JldHVybiBhP2EucnVuVG9TZXJpZXM6bnVsbH0pKSxjej1iUyhpeiwodD0+dC5jYXJkTWV0YWRhdGFNYXApKSxkej1iUyhjeiwoKHQsZSk9PnQuaGFzT3duUHJvcGVydHkoZSk/dFtlXTpudWxsKSkscHo9YlMoaXosKHQ9PnQudmlzaWJsZUNhcmRNYXApKSxtej1iUyhweiwodD0+bmV3IFNldCh0LnZhbHVlcygpKSkpLHV6PWJTKHJ6LGN6LCgodCxlKT0+dC5maWx0ZXIoKHQ9PmUuaGFzT3duUHJvcGVydHkodCkpKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe2NhcmRJZDp0fSxlW3RdKSkpKSksZno9YlMoaXosKCh0LGUpPT50LmNhcmRTdGVwSW5kZXguaGFzT3duUHJvcGVydHkoZSk/dC5jYXJkU3RlcEluZGV4W2VdOm51bGwpKSxnej1iUyhpeiwoKHQsZSk9PmV6KGUsdC5jYXJkTWV0YWRhdGFNYXAsdC50aW1lU2VyaWVzRGF0YSkpKSxoej1iUyhpeiwodD0+dC5jYXJkVG9QaW5uZWRDb3B5KSksYno9YlMoaXosKHQ9PnQucGlubmVkQ2FyZFRvT3JpZ2luYWwpKSx5ej1iUyhoeixjeiwoKHQsZSk9PlsuLi50LnZhbHVlcygpXS5maWx0ZXIoKHQ9PmUuaGFzT3duUHJvcGVydHkodCkpKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe2NhcmRJZDp0fSxlW3RdKSkpKSksX3o9YlMoaHosYnosKCh0LGUsbik9PnQuaGFzKG4pfHxlLmhhcyhuKSkpLEN6PWJTKGl6LCh0PT50LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzKSksTXo9YlMoaXosKHQ9PiROKHQpKSksdno9YlMoaXosKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx0LnNldHRpbmdPdmVycmlkZXMpKSkseHo9YlMoaXosKHQ9PnQuc2V0dGluZ092ZXJyaWRlcykpLE96PWJTKHZ6LCh0PT50LmNhcmRNaW5XaWR0aCkpLFB6PWJTKHZ6LCh0PT50LnRvb2x0aXBTb3J0KSksd3o9YlModnosKHQ9PnQuaWdub3JlT3V0bGllcnMpKSxrej1iUyh2eiwodD0+dC54QXhpc1R5cGUpKSxTej1iUyh2eiwodD0+dC5oaXN0b2dyYW1Nb2RlKSksRHo9YlModnosKHQ9PnQuc2NhbGFyU21vb3RoaW5nKSksUno9YlModnosKHQ9PnQuc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWCkpLEV6PWJTKHZ6LCh0PT50LmltYWdlQnJpZ2h0bmVzc0luTWlsbGkpKSxBej1iUyh2eiwodD0+dC5pbWFnZUNvbnRyYXN0SW5NaWxsaSkpLFR6PWJTKHZ6LCh0PT50LmltYWdlU2hvd0FjdHVhbFNpemUpKSxOej1iUyhpeiwodD0+dC50YWdGaWx0ZXIpKSx6ej1iUyhpeiwoKHQsZSk9PkJvb2xlYW4odC50YWdHcm91cEV4cGFuZGVkLmdldChlKSkpKSxJej1iUyhpeiwodD0+dC5zZWxlY3RUaW1lRW5hYmxlZCkpLEh6PWJTKGl6LCh0PT50LnVzZVJhbmdlU2VsZWN0VGltZSkpLEZ6PWJTKGl6LCh0PT57Y29uc3R7bWluOmUsbWF4Om59PXQuc3RlcE1pbk1heDtyZXR1cm57bWluOmU9PT0xLzA/MDplLG1heDpuPT09LTEvMD8xZTM6bn19KSksTHo9YlMoaXosRnosKCh0LGUpPT50LnNlbGVjdGVkVGltZT90LnNlbGVjdGVkVGltZTp7c3RhcnQ6e3N0ZXA6ZS5taW59LGVuZDpudWxsfSkpLEJ6PWJTKGl6LEx6LCgodCxlKT0+dC5zZWxlY3RUaW1lRW5hYmxlZD90LnVzZVJhbmdlU2VsZWN0VGltZT9lOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZW5kOm51bGx9KTpudWxsKSksVno9YlMoaXosKHQ9PnQuZmlsdGVyZWRQbHVnaW5UeXBlcykpLFV6PWJTKGl6LCh0PT50LnByb21vdGVUaW1lU2VyaWVzKSksano9YlMoaXosKHQ9PnQuaXNTZXR0aW5nc1BhbmVPcGVuKSk7dmFyIFd6OyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5XSEFUU19ORVc9MV09IldIQVRTX05FVyJ9KShXenx8KFd6PXt9KSk7Y29uc3QgR3o9X1MoIm5vdGlmaWNhdGlvbiIpO2JTKEd6LCh0PT50Lm5vdGlmaWNhdGlvbnMpKSxiUyhHeiwodD0+e3ZhciBlO3JldHVybiBudWxsIT09KGU9dC5sYXN0UmVhZFRpbWVzdGFtcEluTXMpJiZ2b2lkIDAhPT1lP2U6LTF9KSk7Y29uc3QgWXo9InJ1bnMiO3ZhciBxeixaejtmdW5jdGlvbiBYeih0LGUsbil7Y29uc3Qgbz17fSxpPVtdLGE9e21hdGNoZXM6byxub25NYXRjaGVzOml9O3N3aXRjaCh0LmtleSl7Y2FzZSBaei5SVU46Zm9yKGNvbnN0IHQgb2YgZSlvW3QuaWRdPVt0XTticmVhaztjYXNlIFp6LkVYUEVSSU1FTlQ6Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1uW3QuaWRdLGk9b1tlXXx8W107aS5wdXNoKHQpLG9bZV09aX1icmVhaztjYXNlIFp6LlJFR0VYOmlmKCF0LnJlZ2V4U3RyaW5nKWJyZWFrO2xldCBhO3RyeXthPW5ldyBSZWdFeHAodC5yZWdleFN0cmluZyl9Y2F0Y2godCl7YnJlYWt9Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10Lm5hbWUubWF0Y2goYSk7aWYoZSl7Y29uc3Qgbj1lLmxlbmd0aD4xP0pTT04uc3RyaW5naWZ5KGUuc2xpY2UoMSkpOiJwc2V1ZG9fZ3JvdXAiLGk9b1tuXXx8W107aS5wdXNoKHQpLG9bbl09aX1lbHNlIGkucHVzaCh0KX19cmV0dXJuIGF9ZnVuY3Rpb24gS3oodCxlKXtzd2l0Y2godCl7Y2FzZSBaei5SRUdFWDpyZXR1cm57a2V5OnQscmVnZXhTdHJpbmc6bnVsbCE9ZT9lOiIifTtjYXNlIFp6LlJVTjpjYXNlIFp6LkVYUEVSSU1FTlQ6ZGVmYXVsdDpyZXR1cm57a2V5OnR9fX0hKGZ1bmN0aW9uKHQpe3RbdC5FWFBFUklNRU5UX05BTUU9MF09IkVYUEVSSU1FTlRfTkFNRSIsdFt0LkhQQVJBTT0xXT0iSFBBUkFNIix0W3QuTUVUUklDPTJdPSJNRVRSSUMiLHRbdC5SVU5fTkFNRT0zXT0iUlVOX05BTUUifSkocXp8fChxej17fSkpLChmdW5jdGlvbih0KXt0W3QuUlVOPTBdPSJSVU4iLHRbdC5FWFBFUklNRU5UPTFdPSJFWFBFUklNRU5UIix0W3QuUkVHRVg9Ml09IlJFR0VYIn0pKFp6fHwoWno9e30pKTtjb25zdCBKej1fUyhZeiksUXo9YlMoSnosKHQ9PnQuZGF0YSkpLCR6PWJTKFF6LCh0PT50LnJ1bklkVG9FeHBJZCkpLHRJPWJTKFF6LCgodCxlKT0+e3ZhciBuO3JldHVybiBudWxsIT09KG49dC5ydW5JZFRvRXhwSWRbZS5ydW5JZF0pJiZ2b2lkIDAhPT1uP246bnVsbH0pKSxlST1iUyhReiwoKHQsZSk9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQucnVuTWV0YWRhdGFbZS5ydW5JZF0pJiZ2b2lkIDAhPT1uP246bnVsbH0pKSxuST1iUyhReiwoKHQsZSk9Pih0LnJ1bklkc1tlLmV4cGVyaW1lbnRJZF18fFtdKS5maWx0ZXIoKGU9PkJvb2xlYW4odC5ydW5NZXRhZGF0YVtlXSkpKS5tYXAoKGU9PnQucnVuTWV0YWRhdGFbZV0pKSkpLG9JPWJTKFF6LCgodCxlKT0+e3ZhciBuO3JldHVybiBudWxsIT09KG49dC5ydW5JZHNbZS5leHBlcmltZW50SWRdKSYmdm9pZCAwIT09bj9uOltdfSkpLGlJPWJTKFF6LCh0PT5uZXcgTWFwKE9iamVjdC5lbnRyaWVzKHQucnVuTWV0YWRhdGEpKSkpLGFJPWJTKFF6LCgodCxlKT0+dC5ydW5zTG9hZFN0YXRlW2UuZXhwZXJpbWVudElkXXx8e2xhc3RMb2FkZWRUaW1lSW5NczpudWxsLHN0YXRlOkdFLk5PVF9MT0FERUR9KSksckk9YlMoUXosKHQ9Pm51bGwhPT10LnVzZXJTZXRHcm91cEJ5S2V5P0t6KHQudXNlclNldEdyb3VwQnlLZXksdC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpOm51bGwpKSxzST1iUyhySSxReiwoKHQsZSk9Pm51bGwhPXQ/dDplLmluaXRpYWxHcm91cEJ5KSksbEk9YlMoUXosKHQ9PnQucmVnZXhGaWx0ZXIpKSxjST1iUyhKeiwodD0+dC51aSkpLGRJPWJTKGNJLCh0PT50LnBhZ2luYXRpb25PcHRpb24pKSxwST1iUyhjSSwodD0+dC5zb3J0KSksbUk9YlMoY0ksKHQ9PnQuc2VsZWN0aW9uU3RhdGUpKSx1ST1iUyhReiwodD0+dC5ydW5Db2xvck92ZXJyaWRlRm9yR3JvdXBCeSkpLGZJPWJTKFF6LCh0PT50LmRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeSkpLGdJPWJTKFF6LCh0PT50LmNvbG9yR3JvdXBSZWdleFN0cmluZykpLGhJPV9rKCJbU2V0dGluZ3NdIFJlbG9hZCBFbmFibGUgVG9nZ2xlZCIpLGJJPV9rKCJbU2V0dGluZ3NdIFJlbG9hZCBQZXJpb2QgQ2hhbmdlIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseUk9X2soIltTZXR0aW5nc10gUGFnZSBTaXplIENoYW5nZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLF9JPSJzZXR0aW5ncyIsQ0k9e3N0YXRlOkdFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKSxzZXR0aW5nczp7cmVsb2FkUGVyaW9kSW5NczozZTQscmVsb2FkRW5hYmxlZDohMSxwYWdlU2l6ZToxMixjb2xvclBhbGV0dGU6e2lkOiJkZWZhdWx0IixuYW1lOiJEZWZhbHQiLGNvbG9yczpbe25hbWU6IlNsYXRlIixsaWdodEhleDoiIzQyNTA2NiIsZGFya0hleDoiIzhlOThhMyJ9LHtuYW1lOiJDeWFuIixsaWdodEhleDoiIzEyYjVjYiIsZGFya0hleDoiIzEyYjVjYiJ9LHtuYW1lOiJQaW5rIixsaWdodEhleDoiI2U1MjU5MiIsZGFya0hleDoiI2U1MjU5MiJ9LHtuYW1lOiJZZWxsb3ciLGxpZ2h0SGV4OiIjZjlhYjAwIixkYXJrSGV4OiIjZjlhYjAwIn0se25hbWU6IlB1cnBsZSIsbGlnaHRIZXg6IiM5MzM0ZTYiLGRhcmtIZXg6IiM5MzM0ZTYifSx7bmFtZToiTGlnaHQgR3JlZW4iLGxpZ2h0SGV4OiIjN2NiMzQyIixkYXJrSGV4OiIjN2NiMzQyIn0se25hbWU6Ik9yYW5nZSIsbGlnaHRIZXg6IiNlODcxMGEiLGRhcmtIZXg6IiNlODcxMGEifV0saW5hY3RpdmU6e25hbWU6IkdyYXkiLGxpZ2h0SGV4OiIjZTBlMGUwIixkYXJrSGV4OiIjM2IzYjNiIn19fX0sTUk9X1MoX0kpLHZJPWJTKE1JLCh0PT50LnN0YXRlKSkseEk9YlMoTUksKHQ9PnQuc2V0dGluZ3MucmVsb2FkRW5hYmxlZCkpLE9JPWJTKE1JLCh0PT50LnNldHRpbmdzLnJlbG9hZFBlcmlvZEluTXMpKSxQST1iUyhNSSwodD0+dC5zZXR0aW5ncy5wYWdlU2l6ZSkpLHdJPWJTKE1JLCh0PT50LnNldHRpbmdzLmNvbG9yUGFsZXR0ZSkpO2Z1bmN0aW9uIGtJKHQsZSxuKXtpZighZSlyZXR1cm4hMDtsZXQgbzt0cnl7bz1uZXcgUmVnRXhwKGUsImkiKX1jYXRjaCh0KXtyZXR1cm4hMX1jb25zdCBpPVt0LnJ1bk5hbWVdO3JldHVybiBuJiZpLnB1c2godC5leHBlcmltZW50QWxpYXMuYWxpYXNUZXh0LGAke3QuZXhwZXJpbWVudEFsaWFzLmFsaWFzVGV4dH0vJHt0LnJ1bk5hbWV9YCksaS5zb21lKCh0PT5vLnRlc3QodCkpKX1jb25zdCBTST1iUyhrUixtSSwkeiwoKHQsZSxuKT0+e2lmKCF0KXJldHVybiBuZXcgTWFwO2NvbnN0IG89bmV3IE1hcDtmb3IoY29uc3RbaSxhXW9mIGUuZW50cmllcygpKXtjb25zdCBlPW5baV07ZSYmdC5pbmRleE9mKGUpPj0wJiZvLnNldChpLGEpfXJldHVybiBvfSkpLERJPWJTKGtSLFNJLGxJLCh0PT57dmFyIGU7Y29uc3Qgbj1udWxsIT09KGU9a1IodCkpJiZ2b2lkIDAhPT1lP2U6W10sbz1TUih0KSxpPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3Qgbj1uSSh0LHtleHBlcmltZW50SWQ6ZX0pO2Zvcihjb25zdCB0IG9mIG4paS5zZXQodC5pZCx7cnVuTmFtZTp0Lm5hbWUsZXhwZXJpbWVudEFsaWFzOm9bZV19KX1yZXR1cm4gaX0pLFBSLCgodCxlLG4sbyxpKT0+e2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGE9aT09PV9ELkNPTVBBUkVfRVhQRVJJTUVOVCxyPW5ldyBNYXA7Zm9yKGNvbnN0W3QsaV1vZiBlLmVudHJpZXMoKSl7Y29uc3QgZT1vLmdldCh0KTtyLnNldCh0LGtJKGUsbixhKSYmaSl9cmV0dXJuIHJ9KSksUkk9YlMod0ksZkksdUksVkQsKCh0LGUsbixvKT0+e2NvbnN0IGk9e307cmV0dXJuIGUuZm9yRWFjaCgoKGUsYSk9PntsZXQgcj1vP3QuaW5hY3RpdmUuZGFya0hleDp0LmluYWN0aXZlLmxpZ2h0SGV4O2lmKG4uaGFzKGEpKXI9bi5nZXQoYSk7ZWxzZSBpZihlPj0wKXtjb25zdCBuPXQuY29sb3JzW2UldC5jb2xvcnMubGVuZ3RoXTtyPW8/bi5kYXJrSGV4Om4ubGlnaHRIZXh9aVthXT1yfSkpLGl9KSk7Y2xhc3MgRUl7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5ydW5zRGF0YVNvdXJjZT1uLHRoaXMubG9hZFJ1bnNPblJ1blRhYmxlU2hvd24kPVdTKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKCRTKE9UKSwkdCgoKHtleHBlcmltZW50SWRzOnR9KT0+dGhpcy5nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCwodD0+dD09PUdFLkZBSUxFRHx8dD09PUdFLk5PVF9MT0FERUQpKS5waXBlKGZlKCh0PT4hIXQubGVuZ3RoKSksJHQoKGU9PnRoaXMuZmV0Y2hBbGxSdW5zTGlzdCh0LGUpKSkpKSkpKSx7ZGlzcGF0Y2g6ITF9KSx0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUm91dGVDaGFuZ2UkPXRoaXMuYWN0aW9ucyQucGlwZSgkUyhpUikscWUodGhpcy5zdG9yZS5zZWxlY3QoQ1IpKSx3ZSgoKFssdF0sWyxlXSk9Pk9EKHQsZSkpKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChrUikpLGZlKCgoWyx0XSk9PiEhdCkpLFZ0KCgoWyx0XSk9PnQpKSwkdCgodD0+dGhpcy5nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCwodD0+dD09PUdFLkZBSUxFRHx8dD09PUdFLk5PVF9MT0FERUQpKS5waXBlKFZ0KChlPT4oe2V4cGVyaW1lbnRJZHM6dCxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6ZX0pKSkpKSkpLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25SZWxvYWQkPXRoaXMuYWN0aW9ucyQucGlwZSgkUyh0QSwkRSkscWUodGhpcy5zdG9yZS5zZWxlY3Qoa1IpKSxmZSgoKFssdF0pPT4hIXQpKSxWdCgoKFssdF0pPT50KSksJHQoKHQ9PnRoaXMuZ2V0RXhwZXJpbWVudHNXaXRoTG9hZFN0YXRlKHQsKHQ9PnQhPT1HRS5MT0FESU5HKSkucGlwZShWdCgoZT0+KHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmV9KSkpKSkpKSx0aGlzLmxvYWRSdW5zT25OYXZpZ2F0aW9uT3JSZWxvYWQkPVdTKCgoKT0+cGUodGhpcy5leHBlcmltZW50c1dpdGhTdGFsZVJ1bnNPblJvdXRlQ2hhbmdlJCx0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUmVsb2FkJCkucGlwZSgkdCgoKHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmV9KT0+dGhpcy5mZXRjaEFsbFJ1bnNMaXN0KHQsZSkpKSkpLHtkaXNwYXRjaDohMX0pfWdldFJ1bnNMaXN0TG9hZFN0YXRlKHQpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChhSSx7ZXhwZXJpbWVudElkOnR9KS5waXBlKHZlKDEpKX1nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCxlKXtyZXR1cm4gaWUodC5tYXAoKHQ9PnRoaXMuZ2V0UnVuc0xpc3RMb2FkU3RhdGUodCkpKSkucGlwZShWdCgobj0+dC5maWx0ZXIoKCh0LG8pPT5lKG5bb10uc3RhdGUpKSkpKSl9ZmV0Y2hBbGxSdW5zTGlzdCh0LGUpe3JldHVybiB6dCh7ZXhwZXJpbWVudElkczp0LGV4cGVyaW1lbnRJZHNUb0JlRmV0Y2hlZDplfSkucGlwZShXZSgoKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGdUKHtleHBlcmltZW50SWRzOnQscmVxdWVzdGVkRXhwZXJpbWVudElkczplfSkpfSkpLCR0KCgoKT0+e2NvbnN0IG49bmV3IFNldChlKTtyZXR1cm4gaWUodC5tYXAoKHQ9Pm4uaGFzKHQpP3RoaXMuZmV0Y2hSdW5zRm9yRXhwZXJpbWVudCh0KTp0aGlzLm1heWJlV2FpdEZvclJ1bnNBbmRHZXRSdW5zKHQpKSkpfSkpLFZ0KCh0PT57Y29uc3QgZT17fSxuPVtdO2Zvcihjb25zdCBvIG9mIHQpbi5wdXNoKC4uLm8ucnVucyksby5mcm9tUmVtb3RlJiYoZVtvLmV4cGVyaW1lbnRJZF09e3J1bnM6by5ydW5zLG1ldGFkYXRhOm8ubWV0YWRhdGF9KTtyZXR1cm57bmV3UnVuc0FuZE1ldGFkYXRhOmUscnVuc0ZvckFsbEV4cGVyaW1lbnRzOm59fSkpLFdlKCgoe25ld1J1bnNBbmRNZXRhZGF0YTplLHJ1bnNGb3JBbGxFeHBlcmltZW50czpufSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGhUKHtleHBlcmltZW50SWRzOnQsbmV3UnVuc0FuZE1ldGFkYXRhOmUscnVuc0ZvckFsbEV4cGVyaW1lbnRzOm59KSl9KSksaGUoKG49Pih0aGlzLnN0b3JlLmRpc3BhdGNoKGJUKHtleHBlcmltZW50SWRzOnQscmVxdWVzdGVkRXhwZXJpbWVudElkczplfSkpLHp0KG51bGwpKSkpLFZ0KCgoKT0+bnVsbCkpKX1tYXliZVdhaXRGb3JSdW5zQW5kR2V0UnVucyh0KXtyZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoYUkse2V4cGVyaW1lbnRJZDp0fSkucGlwZShmZSgodD0+dC5zdGF0ZSE9PUdFLkxPQURJTkcpKSx2ZSgxKSwkdCgodD0+dC5zdGF0ZT09PUdFLkZBSUxFRD9JdChuZXcgRXJyb3IoIlBlbmRpbmcgcmVxdWVzdCBmYWlsZWQiKSk6enQodCkpKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChuSSx7ZXhwZXJpbWVudElkOnR9KSksVnQoKChbLGVdKT0+KHtmcm9tUmVtb3RlOiExLGV4cGVyaW1lbnRJZDp0LHJ1bnM6ZX0pKSkpfWZldGNoUnVuc0ZvckV4cGVyaW1lbnQodCl7cmV0dXJuIGllKFt0aGlzLnJ1bnNEYXRhU291cmNlLmZldGNoUnVucyh0KSx0aGlzLnJ1bnNEYXRhU291cmNlLmZldGNoSHBhcmFtc01ldGFkYXRhKHQpXSkucGlwZShWdCgoKFtlLG5dKT0+KHtmcm9tUmVtb3RlOiEwLGV4cGVyaW1lbnRJZDp0LHJ1bnM6ZSxtZXRhZGF0YTpufSkpKSl9fXZhciBBSSxUSTtFSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RUkpKFRyKFFTKSxUcihpUyksVHIoUlQpKX0sRUkuybVwcm92PVNuKHt0b2tlbjpFSSxmYWN0b3J5OkVJLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFSSxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpSVH1dfSksbnVsbCksKGZ1bmN0aW9uKHQpe3QuQVNDPSJhc2MiLHQuREVTQz0iZGVzYyIsdC5VTlNFVD0iIn0pKEFJfHwoQUk9e30pKSwoZnVuY3Rpb24odCl7dC5FWFBFUklNRU5UX0lEPSJpZCIsdC5VU0VSPSJ1c2VyIix0LkJFRk9SRT0iYmVmb3JlIix0LkFGVEVSPSJhZnRlciIsdC5SRUdFWD0icmVnZXgifSkoVEl8fChUST17fSkpO2NvbnN0e2luaXRpYWxTdGF0ZTpOSSxyZWR1Y2Vyczp6SX09cEEoe3J1bkNvbG9yT3ZlcnJpZGVGb3JHcm91cEJ5Om5ldyBNYXAsZGVmYXVsdFJ1bkNvbG9ySWRGb3JHcm91cEJ5Om5ldyBNYXAsZ3JvdXBLZXlUb0NvbG9ySWQ6bmV3IE1hcCxpbml0aWFsR3JvdXBCeTp7a2V5Olp6LlJVTn0sdXNlclNldEdyb3VwQnlLZXk6bnVsbCxjb2xvckdyb3VwUmVnZXhTdHJpbmc6IiIscmVnZXhGaWx0ZXI6IiJ9LHtydW5JZHM6e30scnVuSWRUb0V4cElkOnt9LHJ1bk1ldGFkYXRhOnt9LHJ1bnNMb2FkU3RhdGU6e319LCgodCxlLG4pPT5PRChlLG4pP3Q6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtpbml0aWFsR3JvdXBCeTp7a2V5Om4ucm91dGVLaW5kPT09X0QuQ09NUEFSRV9FWFBFUklNRU5UP1p6LkVYUEVSSU1FTlQ6WnouUlVOfX0pKSksSUk9WUEoVlMoTkksQlModFIsKCh0LHtyb3V0ZUtpbmQ6ZSxwYXJ0aWFsU3RhdGU6bn0pPT57dmFyIG8saTtpZihlIT09X0QuQ09NUEFSRV9FWFBFUklNRU5UJiZlIT09X0QuRVhQRVJJTUVOVClyZXR1cm4gdDtjb25zdCBhPW4ucnVucy5ncm91cEJ5LHI9bnVsbCE9PShvPW4ucnVucy5yZWdleEZpbHRlcikmJnZvaWQgMCE9PW8/bzoiIjtpZighYSYmIXIpcmV0dXJuIHQ7bGV0e2NvbG9yR3JvdXBSZWdleFN0cmluZzpzLHVzZXJTZXRHcm91cEJ5S2V5Omx9PXQ7aWYoYSl7cz1hLmtleT09PVp6LlJFR0VYP2EucmVnZXhTdHJpbmc6dC5jb2xvckdyb3VwUmVnZXhTdHJpbmcsbD1udWxsIT09KGk9YS5rZXkpJiZ2b2lkIDAhPT1pP2k6bnVsbH1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjb2xvckdyb3VwUmVnZXhTdHJpbmc6cyxyZWdleEZpbHRlcjpyLHVzZXJTZXRHcm91cEJ5S2V5Omx9KX0pKSxCUyhnVCwoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZFN0YXRlKTtmb3IoY29uc3QgdCBvZiBlLnJlcXVlc3RlZEV4cGVyaW1lbnRJZHMpblt0XT1uW3RdP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuW3RdKSx7c3RhdGU6R0UuTE9BRElOR30pOntsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTpHRS5MT0FESU5HfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZFN0YXRlOm59KX0pKSxCUyhoVCwoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC5ydW5JZHMpLG89T2JqZWN0LmFzc2lnbih7fSx0LnJ1bk1ldGFkYXRhKSxpPU9iamVjdC5hc3NpZ24oe30sdC5ydW5JZFRvRXhwSWQpLGE9T2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkU3RhdGUpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUubmV3UnVuc0FuZE1ldGFkYXRhKSl7Y29uc3R7cnVuczpyLG1ldGFkYXRhOnN9PWUubmV3UnVuc0FuZE1ldGFkYXRhW3RdO25bdF09ci5tYXAoKCh7aWQ6dH0pPT50KSksYVt0XT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYVt0XSkse2xhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpLHN0YXRlOkdFLkxPQURFRH0pO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IG49cy5ydW5Ub0hwYXJhbXNBbmRNZXRyaWNzW2UuaWRdO29bZS5pZF09T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtocGFyYW1zOm4/bi5ocGFyYW1zOm51bGwsbWV0cmljczpuP24ubWV0cmljczpudWxsfSksaVtlLmlkXT10fX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5JZHM6bixydW5JZFRvRXhwSWQ6aSxydW5NZXRhZGF0YTpvLHJ1bnNMb2FkU3RhdGU6YX0pfSkpLEJTKGJULCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkU3RhdGUpO2Zvcihjb25zdCB0IG9mIGUucmVxdWVzdGVkRXhwZXJpbWVudElkcyluW3RdPW5bdF0/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG5bdF0pLHtzdGF0ZTpHRS5GQUlMRUR9KTp7bGFzdExvYWRlZFRpbWVJbk1zOm51bGwsc3RhdGU6R0UuRkFJTEVEfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZFN0YXRlOm59KX0pKSxCUyhoVCwoKHQse3J1bnNGb3JBbGxFeHBlcmltZW50czplfSk9Pntjb25zdCBuPW5ldyBNYXAodC5ncm91cEtleVRvQ29sb3JJZCksbz1uZXcgTWFwKHQuZGVmYXVsdFJ1bkNvbG9ySWRGb3JHcm91cEJ5KTtsZXQgaT10LmluaXRpYWxHcm91cEJ5O251bGwhPT10LnVzZXJTZXRHcm91cEJ5S2V5JiYoaT1Leih0LnVzZXJTZXRHcm91cEJ5S2V5LHQuY29sb3JHcm91cFJlZ2V4U3RyaW5nKSk7Y29uc3QgYT1YeihpLGUsdC5ydW5JZFRvRXhwSWQpO09iamVjdC5lbnRyaWVzKGEubWF0Y2hlcykuZm9yRWFjaCgoKFt0LGVdKT0+e3ZhciBpO2NvbnN0IGE9bnVsbCE9PShpPW4uZ2V0KHQpKSYmdm9pZCAwIT09aT9pOm4uc2l6ZTtuLnNldCh0LGEpO2Zvcihjb25zdCB0IG9mIGUpby5zZXQodC5pZCxhKX0pKTtmb3IoY29uc3QgdCBvZiBhLm5vbk1hdGNoZXMpby5zZXQodC5pZCwtMSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZGVmYXVsdFJ1bkNvbG9ySWRGb3JHcm91cEJ5Om8sZ3JvdXBLZXlUb0NvbG9ySWQ6bn0pfSkpLEJTKFBULCgodCx7ZXhwZXJpbWVudElkczplLGdyb3VwQnk6bn0pPT57Y29uc3Qgbz1uZXcgTWFwLGk9bmV3IE1hcCh0LmRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeSksYT1YeihuLGUuZmxhdE1hcCgoZT0+dC5ydW5JZHNbZV0pKS5tYXAoKGU9PnQucnVuTWV0YWRhdGFbZV0pKSx0LnJ1bklkVG9FeHBJZCk7T2JqZWN0LmVudHJpZXMoYS5tYXRjaGVzKS5mb3JFYWNoKCgoW3QsZV0pPT57dmFyIG47Y29uc3QgYT1udWxsIT09KG49by5nZXQodCkpJiZ2b2lkIDAhPT1uP246by5zaXplO28uc2V0KHQsYSk7Zm9yKGNvbnN0IHQgb2YgZSlpLnNldCh0LmlkLGEpfSkpO2Zvcihjb25zdCB0IG9mIGEubm9uTWF0Y2hlcylpLnNldCh0LmlkLC0xKTtjb25zdCByPW4ua2V5PT09WnouUkVHRVg/bi5yZWdleFN0cmluZzp0LmNvbG9yR3JvdXBSZWdleFN0cmluZztyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjb2xvckdyb3VwUmVnZXhTdHJpbmc6cix1c2VyU2V0R3JvdXBCeUtleTpuLmtleSxkZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnk6aSxncm91cEtleVRvQ29sb3JJZDpvLHJ1bkNvbG9yT3ZlcnJpZGVGb3JHcm91cEJ5Om5ldyBNYXB9KX0pKSxCUyh4VCwoKHQse3J1bklkOmUsbmV3Q29sb3I6bn0pPT57Y29uc3Qgbz1uZXcgTWFwKHQucnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnkpO3JldHVybiBvLnNldChlLG4pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6b30pfSkpLEJTKHZULCgodCxlKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWdleEZpbHRlcjplLnJlZ2V4U3RyaW5nfSkpKSksekkpLEhJPXtrZXk6bnVsbCxkaXJlY3Rpb246QUkuVU5TRVR9LHtpbml0aWFsU3RhdGU6RkkscmVkdWNlcnM6TEl9PXBBKHtwYWdpbmF0aW9uT3B0aW9uOntwYWdlSW5kZXg6MCxwYWdlU2l6ZToxMH0sc29ydDpISSxzZWxlY3Rpb25TdGF0ZTpuZXcgTWFwfSx7fSksQkk9WUEoVlMoRkksQlMoQ1QsKCh0LHtwYWdlU2l6ZTplLHBhZ2VJbmRleDpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGFnaW5hdGlvbk9wdGlvbjp7cGFnZVNpemU6ZSxwYWdlSW5kZXg6bn19KSkpLEJTKHZULCgodCxlKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYWdpbmF0aW9uT3B0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBhZ2luYXRpb25PcHRpb24pLHtwYWdlSW5kZXg6MH0pfSkpKSxCUyhNVCwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDp7a2V5OmUua2V5LGRpcmVjdGlvbjplLmRpcmVjdGlvbn19KSkpLEJTKGhULCgodCxlKT0+e2NvbnN0IG49bmV3IE1hcCh0LnNlbGVjdGlvblN0YXRlKSxvPWUucnVuc0ZvckFsbEV4cGVyaW1lbnRzLmxlbmd0aDw9NTAwO2Zvcihjb25zdCB0IG9mIGUucnVuc0ZvckFsbEV4cGVyaW1lbnRzKW4uaGFzKHQuaWQpfHxuLnNldCh0LmlkLG8pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGlvblN0YXRlOm59KX0pKSxCUyh5VCwoKHQse3J1bklkOmV9KT0+e2NvbnN0IG49bmV3IE1hcCh0LnNlbGVjdGlvblN0YXRlKTtyZXR1cm4gbi5zZXQoZSwhQm9vbGVhbihuLmdldChlKSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2VsZWN0aW9uU3RhdGU6bn0pfSkpLEJTKF9ULCgodCx7cnVuSWRzOmV9KT0+e2NvbnN0IG49bmV3IE1hcCh0LnNlbGVjdGlvblN0YXRlKSxvPSFlLmV2ZXJ5KCh0PT5Cb29sZWFuKG4uZ2V0KHQpKSkpO2Zvcihjb25zdCB0IG9mIGUpbi5zZXQodCxvKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3Rpb25TdGF0ZTpufSl9KSkpLExJKTtmdW5jdGlvbiBWSSh0LGUpe3JldHVybiBHayh7ZGF0YTpJSSx1aTpCSX0pKHQsZSl9ZnVuY3Rpb24gVUkoKXtyZXR1cm5be2FjdGlvbkNyZWF0b3I6YlQsYWxlcnRGcm9tQWN0aW9uOigpPT4oe2xvY2FsaXplZE1lc3NhZ2U6IkZhaWxlZCB0byBmZXRjaCBydW5zIn0pfV19Y2xhc3Mgakl7fXZhciBXSTtqSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8akkpfSxqSS7JtW1vZD11byh7dHlwZTpqSX0pLGpJLsm1aW5qPURuKHtpbXBvcnRzOltbVFMuZm9yRmVhdHVyZShZeixWSSksaEQuZm9yRmVhdHVyZShbRUldKSxXVCxmVC5yZWdpc3RlckFsZXJ0QWN0aW9ucyhVSSksVlRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoakksW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltUUy5mb3JGZWF0dXJlKFl6LFZJKSxoRC5mb3JGZWF0dXJlKFtFSV0pLFdULGZULnJlZ2lzdGVyQWxlcnRBY3Rpb25zKFVJKSxWVF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhqSSx7aW1wb3J0czpbQVMsZ0QsV1QsZlQsVlRdfSksKGZ1bmN0aW9uKHQpe3QuUlVOU19DSEFOR0VEPSJleHBlcmltZW50YWwuUnVuc0NoYW5nZWQiLHQuR0VUX1JVTlM9ImV4cGVyaW1lbnRhbC5HZXRSdW5zIix0LkdFVF9VUkxfREFUQT0iZXhwZXJpbWVudGFsLkdldFVSTFBsdWdpbkRhdGEiLHQuREFUQV9SRUxPQURFRD0iZXhwZXJpbWVudGFsLkRhdGFSZWxvYWRlZCJ9KShXSXx8KFdJPXt9KSk7Y2xhc3MgR0l7Y29uc3RydWN0b3IodCl7dGhpcy5wb3J0PXQsdGhpcy5pZD0wLHRoaXMucmVzcG9uc2VXYWl0cz1uZXcgTWFwLHRoaXMubGlzdGVuZXJzPW5ldyBNYXAsdGhpcy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT50aGlzLm9uTWVzc2FnZSh0KSkpfWxpc3Rlbih0LGUpe3RoaXMubGlzdGVuZXJzLnNldCh0LGUpfXVubGlzdGVuKHQpe3RoaXMubGlzdGVuZXJzLmRlbGV0ZSh0KX1vbk1lc3NhZ2UodCl7cmV0dXJuIEpUKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgZT1KU09OLnBhcnNlKHQuZGF0YSksbj1lLnR5cGUsbz1lLmlkLGk9ZS5wYXlsb2FkLGE9ZS5lcnJvcjtpZihlLmlzUmVwbHkpe2lmKCF0aGlzLnJlc3BvbnNlV2FpdHMuaGFzKG8pKXJldHVybjtjb25zdHtyZXNvbHZlOnQscmVqZWN0OmV9PXRoaXMucmVzcG9uc2VXYWl0cy5nZXQobyk7cmV0dXJuIHRoaXMucmVzcG9uc2VXYWl0cy5kZWxldGUobyksdm9pZChhP2UobmV3IEVycm9yKGEpKTp0KGkpKX1sZXQgcj1udWxsLHM9bnVsbDtpZih0aGlzLmxpc3RlbmVycy5oYXMobikpe2NvbnN0IHQ9dGhpcy5saXN0ZW5lcnMuZ2V0KG4pO3RyeXtyPXlpZWxkIHQoaSl9Y2F0Y2godCl7cz10fX10aGlzLnBvc3RNZXNzYWdlKHt0eXBlOm4saWQ6byxwYXlsb2FkOnIsZXJyb3I6cyxpc1JlcGx5OiEwfSl9KSl9cG9zdE1lc3NhZ2UodCl7dGhpcy5wb3J0LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHQpKX1zZW5kTWVzc2FnZSh0LGUpe2NvbnN0IG49dGhpcy5pZCsrO3JldHVybiB0aGlzLnBvc3RNZXNzYWdlKHt0eXBlOnQsaWQ6bixwYXlsb2FkOmUsZXJyb3I6bnVsbCxpc1JlcGx5OiExfSksbmV3IFByb21pc2UoKCh0LGUpPT57dGhpcy5yZXNwb25zZVdhaXRzLnNldChuLHtyZXNvbHZlOnQscmVqZWN0OmV9KX0pKX19Y29uc3QgWUk9bmV3IFdlYWtNYXAscUk9bmV3IFNldCxaST1uZXcgTWFwLFhJPW5ldyBNYXA7ZnVuY3Rpb24gS0kodCxlKXtyZXR1cm4gbj0+e2NvbnN0IG89WEkuZ2V0KGUpLGk9WUkuZ2V0KG8pfHxudWxsO3JldHVybiB0KGksbil9fXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwodD0+e2lmKCJleHBlcmltZW50YWwuYm9vdHN0cmFwIiE9PXQuZGF0YSlyZXR1cm47Y29uc3QgZT10LnBvcnRzWzBdO2lmKCFlKXJldHVybjtjb25zdCBuPXQuc291cmNlP3Quc291cmNlLmZyYW1lRWxlbWVudDpudWxsO24mJihmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj1uZXcgR0kodCk7cUkuYWRkKG4pLFhJLnNldChuLGUpLHQuc3RhcnQoKTtmb3IoY29uc3RbdCxlXW9mIFpJKXtjb25zdCBvPUtJKGUsbik7bi5saXN0ZW4odCxvKX19KShlLG4pfSkpO2NsYXNzIEpJe2Jyb2FkY2FzdCh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7Zm9yKGNvbnN0IHQgb2YgcUkpWEkuZ2V0KHQpLmlzQ29ubmVjdGVkfHwocUkuZGVsZXRlKHQpLFhJLmRlbGV0ZSh0KSk7Y29uc3Qgbj1bLi4ucUldLm1hcCgobj0+bi5zZW5kTWVzc2FnZSh0LGUpKSk7cmV0dXJuIFByb21pc2UuYWxsKG4pfSkodCxlKX1saXN0ZW4odCxlKXshKGZ1bmN0aW9uIG4odCxlKXtaSS5zZXQodCxlKTtmb3IoY29uc3QgbiBvZiBxSSl7Y29uc3Qgbz1LSShlLG4pO24ubGlzdGVuKHQsbyl9fSkodCxlKX11bmxpc3Rlbih0KXshKGZ1bmN0aW9uIGUodCl7WkkuZGVsZXRlKHQpO2Zvcihjb25zdCBlIG9mIHFJKWUudW5saXN0ZW4odCl9KSh0KX19SkkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpJKX0sSkkuybVwcm92PVNuKHt0b2tlbjpKSSxmYWN0b3J5OkpJLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKSSxbe3R5cGU6am19XSxudWxsLG51bGwpO2NsYXNzIFFJe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5pcGM9dCx0aGlzLnN0b3JlPWV9aW5pdCgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGYtc3RvcmFnZSIpO3RoaXMuaXBjLmxpc3RlbihXSS5HRVRfVVJMX0RBVEEsKGU9PntpZighZSlyZXR1cm47Y29uc3Qgbj1gcC4ke2UucGx1Z2luTmFtZX0uYCxvPXt9LGk9dC50Zl9zdG9yYWdlLmdldFVybEhhc2hEaWN0KCk7Zm9yKGxldCB0IGluIGkpaWYodC5zdGFydHNXaXRoKG4pKXtvW3Quc3Vic3RyaW5nKG4ubGVuZ3RoKV09aVt0XX1yZXR1cm4gb30pKSx0aGlzLnN0b3JlLnNlbGVjdChuVCkucGlwZShmZSgodD0+bnVsbCE9PXQpKSx3ZSgpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5pcGMuYnJvYWRjYXN0KFdJLkRBVEFfUkVMT0FERUQsdm9pZCAwKX0pKX19UUkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFFJKShUcihKSSksVHIoaVMpKX0sUUkuybVwcm92PVNuKHt0b2tlbjpRSSxmYWN0b3J5OlFJLsm1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRSSxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Skl9LHt0eXBlOmlTfV19KSxudWxsKTtjbGFzcyAkSXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaXBjPXQsdGhpcy5zdG9yZT1lfWluaXQoKXtjb25zdCB0PXRoaXMuc3RvcmUuc2VsZWN0KGtSKS5waXBlKCR0KCh0PT57aWYoIXQpcmV0dXJuIHp0KFtdKTtyZXR1cm4gS3QodC5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KG5JLHtleHBlcmltZW50SWQ6dH0pKSkpLnBpcGUoVnQoKHQ9PnQuZmxhdCgpKSksd2UoKCh0LGUpPT50Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxuKT0+ZVtuXS5pZD09PXQuaWQpKSkpLFZ0KCh0PT50Lm1hcCgoKHtuYW1lOnR9KT0+dCkpKSkpfSkpKTt0LnN1YnNjcmliZSgodD0+e3RoaXMuaXBjLmJyb2FkY2FzdChXSS5SVU5TX0NIQU5HRUQsdCl9KSksdGhpcy5pcGMubGlzdGVuKFdJLkdFVF9SVU5TLCgoKT0+dC5waXBlKHZlKDEpKS50b1Byb21pc2UoKSkpfX0kSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JEkpKFRyKEpJKSxUcihpUykpfSwkSS7JtXByb3Y9U24oe3Rva2VuOiRJLGZhY3Rvcnk6JEkuybVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCRJLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpKSX0se3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIHRIe2NvbnN0cnVjdG9yKHQsZSl7ZS5pbml0KCksdC5pbml0KCl9cmVnaXN0ZXJQbHVnaW5JZnJhbWUodCxlKXshKGZ1bmN0aW9uIG4odCxlKXtZSS5zZXQodCx7cGx1Z2luTmFtZTplfSl9KSh0LGUpfX10SC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dEgpKFRyKCRJKSxUcihRSSkpfSx0SC7JtW1vZD11byh7dHlwZTp0SH0pLHRILsm1aW5qPURuKHtwcm92aWRlcnM6W0pJLFFJLCRJXSxpbXBvcnRzOltbTlIsbVQsakldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodEgsW3t0eXBlOkxfLGFyZ3M6W3twcm92aWRlcnM6W0pJLFFJLCRJXSxpbXBvcnRzOltOUixtVCxqSV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTokSX0se3R5cGU6UUl9XX0pLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8odEgse2ltcG9ydHM6W05SLG1ULGpJXX0pO2NvbnN0IGVIPV9rKCJbQWxlcnRdIEFsZXJ0IFJlcG9ydGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSk7Y2xhc3Mgbkh7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5hbGVydEFjdGlvbk1vZHVsZT1uLHRoaXMucmVwb3J0UmVnaXN0ZXJlZEFjdGlvbkFsZXJ0cyQ9V1MoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoV2UoKHQ9Pntjb25zdCBlPXRoaXMuYWxlcnRBY3Rpb25Nb2R1bGUuZ2V0QWxlcnRGcm9tQWN0aW9uKHQpO2UmJnRoaXMuc3RvcmUuZGlzcGF0Y2goZUgoZSkpfSkpKSkse2Rpc3BhdGNoOiExfSl9fW5ILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuSCkoVHIoUVMpLFRyKGlTKSxUcihmVCkpfSxuSC7JtXByb3Y9U24oe3Rva2VuOm5ILGZhY3Rvcnk6bkguybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5ILFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOmZUfV19KSxudWxsKTtjb25zdCBvSD1WUyh7bGF0ZXN0QWxlcnQ6bnVsbH0sQlMoZUgsKCh0LHtsb2NhbGl6ZWRNZXNzYWdlOmUsZm9sbG93dXBBY3Rpb246bn0pPT57Y29uc3Qgbz17bG9jYWxpemVkTWVzc2FnZTplLGNyZWF0ZWQ6RGF0ZS5ub3coKX07cmV0dXJuIG4mJihvLmZvbGxvd3VwQWN0aW9uPW4pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGF0ZXN0QWxlcnQ6b30pfSkpKTtmdW5jdGlvbiBpSCh0LGUpe3JldHVybiBvSCh0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBhSD0xMyxySD0yNyxzSD0zMixsSD0zOCxjSD00MDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGRIKHQsLi4uZSl7cmV0dXJuIGUubGVuZ3RoP2Uuc29tZSgoZT0+dFtlXSkpOnQuYWx0S2V5fHx0LnNoaWZ0S2V5fHx0LmN0cmxLZXl8fHQubWV0YUtleX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcEgodCl7cmV0dXJuIG51bGwhPXQmJiJmYWxzZSIhPWAke3R9YH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gbUgodCxlPTApe3JldHVybiB1SCh0KT9OdW1iZXIodCk6ZX1mdW5jdGlvbiB1SCh0KXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdCh0KSkmJiFpc05hTihOdW1iZXIodCkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBmSCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Olt0XX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZ0godCl7cmV0dXJuIG51bGw9PXQ/IiI6InN0cmluZyI9PXR5cGVvZiB0P3Q6YCR7dH1weGB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGhIKHQpe3JldHVybiB0IGluc3RhbmNlb2YgS2g/dC5uYXRpdmVFbGVtZW50OnR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBiSCx5SDt0cnl7Ykg9InVuZGVmaW5lZCIhPXR5cGVvZiBJbnRsJiZJbnRsLnY4QnJlYWtJdGVyYXRvcn1jYXRjaChVQ3Qpe2JIPSExfWNsYXNzIF9Ie2NvbnN0cnVjdG9yKHQpe3RoaXMuX3BsYXRmb3JtSWQ9dCx0aGlzLmlzQnJvd3Nlcj10aGlzLl9wbGF0Zm9ybUlkPyhmdW5jdGlvbiBlKHQpe3JldHVybiB0PT09c3h9KSh0aGlzLl9wbGF0Zm9ybUlkKToib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiYhIWRvY3VtZW50LHRoaXMuRURHRT10aGlzLmlzQnJvd3NlciYmLyhlZGdlKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5UUklERU5UPXRoaXMuaXNCcm93c2VyJiYvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuQkxJTks9dGhpcy5pc0Jyb3dzZXImJiEoIXdpbmRvdy5jaHJvbWUmJiFiSCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgQ1NTJiYhdGhpcy5FREdFJiYhdGhpcy5UUklERU5ULHRoaXMuV0VCS0lUPXRoaXMuaXNCcm93c2VyJiYvQXBwbGVXZWJLaXQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhdGhpcy5CTElOSyYmIXRoaXMuRURHRSYmIXRoaXMuVFJJREVOVCx0aGlzLklPUz10aGlzLmlzQnJvd3NlciYmL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiEoIk1TU3RyZWFtImluIHdpbmRvdyksdGhpcy5GSVJFRk9YPXRoaXMuaXNCcm93c2VyJiYvKGZpcmVmb3h8bWluZWZpZWxkKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5BTkRST0lEPXRoaXMuaXNCcm93c2VyJiYvYW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF0aGlzLlRSSURFTlQsdGhpcy5TQUZBUkk9dGhpcy5pc0Jyb3dzZXImJi9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiZ0aGlzLldFQktJVH19X0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9IKShUcihYXykpfSxfSC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgX0goVHIoWF8pKX0sdG9rZW46X0gscHJvdmlkZWRJbjoicm9vdCJ9KSxfSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9iamVjdCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltYX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoX0gsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9iamVjdCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltYX119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBDSHt9Q0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENIKX0sQ0guybVtb2Q9dW8oe3R5cGU6Q0h9KSxDSC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDSCxbe3R5cGU6TF8sYXJnczpbe31dfV0sbnVsbCxudWxsKTtjb25zdCBNSD1bImNvbG9yIiwiYnV0dG9uIiwiY2hlY2tib3giLCJkYXRlIiwiZGF0ZXRpbWUtbG9jYWwiLCJlbWFpbCIsImZpbGUiLCJoaWRkZW4iLCJpbWFnZSIsIm1vbnRoIiwibnVtYmVyIiwicGFzc3dvcmQiLCJyYWRpbyIsInJhbmdlIiwicmVzZXQiLCJzZWFyY2giLCJzdWJtaXQiLCJ0ZWwiLCJ0ZXh0IiwidGltZSIsInVybCIsIndlZWsiXTtmdW5jdGlvbiB2SCgpe2lmKHlIKXJldHVybiB5SDtpZigib2JqZWN0IiE9dHlwZW9mIGRvY3VtZW50fHwhZG9jdW1lbnQpcmV0dXJuIHlIPW5ldyBTZXQoTUgpLHlIO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7cmV0dXJuIHlIPW5ldyBTZXQoTUguZmlsdGVyKChlPT4odC5zZXRBdHRyaWJ1dGUoInR5cGUiLGUpLHQudHlwZT09PWUpKSkpLHlIfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgeEgsT0gsUEgsd0g7ZnVuY3Rpb24ga0godCl7cmV0dXJuKGZ1bmN0aW9uIGUoKXtpZihudWxsPT14SCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpdHJ5e3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDooKT0+eEg9ITB9KSl9ZmluYWxseXt4SD14SHx8ITF9cmV0dXJuIHhIfSkoKT90OiEhdC5jYXB0dXJlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBTSCgpe2lmKG51bGw9PVBIKXtpZigib2JqZWN0IiE9dHlwZW9mIGRvY3VtZW50fHwhZG9jdW1lbnR8fCJmdW5jdGlvbiIhPXR5cGVvZiBFbGVtZW50fHwhRWxlbWVudClyZXR1cm4gUEg9ITEsUEg7aWYoInNjcm9sbEJlaGF2aW9yImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSlQSD0hMDtlbHNle2NvbnN0IHQ9RWxlbWVudC5wcm90b3R5cGUuc2Nyb2xsVG87UEg9ISF0JiYhL1x7XHMqXFtuYXRpdmUgY29kZVxdXHMqXH0vLnRlc3QodC50b1N0cmluZygpKX19cmV0dXJuIFBIfWZ1bmN0aW9uIERIKCl7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50KXJldHVybiAwO2lmKG51bGw9PU9IKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9dC5zdHlsZTt0LmRpcj0icnRsIixlLndpZHRoPSIxcHgiLGUub3ZlcmZsb3c9ImF1dG8iLGUudmlzaWJpbGl0eT0iaGlkZGVuIixlLnBvaW50ZXJFdmVudHM9Im5vbmUiLGUucG9zaXRpb249ImFic29sdXRlIjtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG89bi5zdHlsZTtvLndpZHRoPSIycHgiLG8uaGVpZ2h0PSIxcHgiLHQuYXBwZW5kQ2hpbGQobiksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSxPSD0wLDA9PT10LnNjcm9sbExlZnQmJih0LnNjcm9sbExlZnQ9MSxPSD0wPT09dC5zY3JvbGxMZWZ0PzE6MiksdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfXJldHVybiBPSH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gUkgodCl7aWYoKGZ1bmN0aW9uIGUoKXtpZihudWxsPT13SCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50LmhlYWQ6bnVsbDt3SD0hKCF0fHwhdC5jcmVhdGVTaGFkb3dSb290JiYhdC5hdHRhY2hTaGFkb3cpfXJldHVybiB3SH0pKCkpe2NvbnN0IGU9dC5nZXRSb290Tm9kZT90LmdldFJvb3ROb2RlKCk6bnVsbDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFNoYWRvd1Jvb3QmJlNoYWRvd1Jvb3QmJmUgaW5zdGFuY2VvZiBTaGFkb3dSb290KXJldHVybiBlfXJldHVybiBudWxsfWZ1bmN0aW9uIEVIKCl7bGV0IHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQ/ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDpudWxsO2Zvcig7dCYmdC5zaGFkb3dSb290Oyl7Y29uc3QgZT10LnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtpZihlPT09dClicmVhazt0PWV9cmV0dXJuIHR9ZnVuY3Rpb24gQUgodCl7cmV0dXJuIHQuY29tcG9zZWRQYXRoP3QuY29tcG9zZWRQYXRoKClbMF06dC50YXJnZXR9Y2xhc3MgVEh7Y3JlYXRlKHQpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgTXV0YXRpb25PYnNlcnZlcj9udWxsOm5ldyBNdXRhdGlvbk9ic2VydmVyKHQpfX1USC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VEgpfSxUSC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVEh9LHRva2VuOlRILHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUSCxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxudWxsLG51bGwpO2NsYXNzIE5Ie2NvbnN0cnVjdG9yKHQpe3RoaXMuX211dGF0aW9uT2JzZXJ2ZXJGYWN0b3J5PXQsdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cz1uZXcgTWFwfW5nT25EZXN0cm95KCl7dGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5mb3JFYWNoKCgodCxlKT0+dGhpcy5fY2xlYW51cE9ic2VydmVyKGUpKSl9b2JzZXJ2ZSh0KXtjb25zdCBlPWhIKHQpO3JldHVybiBuZXcgVCgodD0+e2NvbnN0IG49dGhpcy5fb2JzZXJ2ZUVsZW1lbnQoZSkuc3Vic2NyaWJlKHQpO3JldHVybigpPT57bi51bnN1YnNjcmliZSgpLHRoaXMuX3Vub2JzZXJ2ZUVsZW1lbnQoZSl9fSkpfV9vYnNlcnZlRWxlbWVudCh0KXtpZih0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSl0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldCh0KS5jb3VudCsrO2Vsc2V7Y29uc3QgZT1uZXcgQixuPXRoaXMuX211dGF0aW9uT2JzZXJ2ZXJGYWN0b3J5LmNyZWF0ZSgodD0+ZS5uZXh0KHQpKSk7biYmbi5vYnNlcnZlKHQse2NoYXJhY3RlckRhdGE6ITAsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSx0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLnNldCh0LHtvYnNlcnZlcjpuLHN0cmVhbTplLGNvdW50OjF9KX1yZXR1cm4gdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuc3RyZWFtfV91bm9ic2VydmVFbGVtZW50KHQpe3RoaXMuX29ic2VydmVkRWxlbWVudHMuaGFzKHQpJiYodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnQtLSx0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldCh0KS5jb3VudHx8dGhpcy5fY2xlYW51cE9ic2VydmVyKHQpKX1fY2xlYW51cE9ic2VydmVyKHQpe2lmKHRoaXMuX29ic2VydmVkRWxlbWVudHMuaGFzKHQpKXtjb25zdHtvYnNlcnZlcjplLHN0cmVhbTpufT10aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldCh0KTtlJiZlLmRpc2Nvbm5lY3QoKSxuLmNvbXBsZXRlKCksdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5kZWxldGUodCl9fX1OSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkgpKFRyKFRIKSl9LE5ILsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBOSChUcihUSCkpfSx0b2tlbjpOSCxwcm92aWRlZEluOiJyb290In0pLE5ILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VEh9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5ILFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUSH1dfSksbnVsbCk7Y2xhc3Mgekh7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2NvbnRlbnRPYnNlcnZlcj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLmV2ZW50PW5ldyBTeSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPW51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1wSCh0KSx0aGlzLl9kaXNhYmxlZD90aGlzLl91bnN1YnNjcmliZSgpOnRoaXMuX3N1YnNjcmliZSgpfWdldCBkZWJvdW5jZSgpe3JldHVybiB0aGlzLl9kZWJvdW5jZX1zZXQgZGVib3VuY2UodCl7dGhpcy5fZGVib3VuY2U9bUgodCksdGhpcy5fc3Vic2NyaWJlKCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbnx8dGhpcy5kaXNhYmxlZHx8dGhpcy5fc3Vic2NyaWJlKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl91bnN1YnNjcmliZSgpfV9zdWJzY3JpYmUoKXt0aGlzLl91bnN1YnNjcmliZSgpO2NvbnN0IHQ9dGhpcy5fY29udGVudE9ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZik7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb249KHRoaXMuZGVib3VuY2U/dC5waXBlKENlKHRoaXMuZGVib3VuY2UpKTp0KS5zdWJzY3JpYmUodGhpcy5ldmVudCl9KSl9X3Vuc3Vic2NyaWJlKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb24pfHx2b2lkIDA9PT10fHx0LnVuc3Vic2NyaWJlKCl9fXpILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6SCkoZnUoTkgpLGZ1KEtoKSxmdShtQykpfSx6SC7JtWRpcj1obyh7dHlwZTp6SCxzZWxlY3RvcnM6W1siIiwiY2RrT2JzZXJ2ZUNvbnRlbnQiLCIiXV0saW5wdXRzOntkaXNhYmxlZDpbImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJkaXNhYmxlZCJdLGRlYm91bmNlOiJkZWJvdW5jZSJ9LG91dHB1dHM6e2V2ZW50OiJjZGtPYnNlcnZlQ29udGVudCJ9LGV4cG9ydEFzOlsiY2RrT2JzZXJ2ZUNvbnRlbnQiXX0pLHpILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Tkh9LHt0eXBlOktofSx7dHlwZTptQ31dLHpILnByb3BEZWNvcmF0b3JzPXtldmVudDpbe3R5cGU6RV8sYXJnczpbImNka09ic2VydmVDb250ZW50Il19XSxkaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiXX1dLGRlYm91bmNlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpILFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtPYnNlcnZlQ29udGVudF0iLGV4cG9ydEFzOiJjZGtPYnNlcnZlQ29udGVudCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpOSH0se3R5cGU6S2h9LHt0eXBlOm1DfV19KSx7ZXZlbnQ6W3t0eXBlOkVfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudCJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIl19XSxkZWJvdW5jZTpbe3R5cGU6Ul99XX0pO2NsYXNzIElIe31JSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SUgpfSxJSC7JtW1vZD11byh7dHlwZTpJSH0pLElILsm1aW5qPURuKHtwcm92aWRlcnM6W1RIXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSUgsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOlt6SF0sZGVjbGFyYXRpb25zOlt6SF0scHJvdmlkZXJzOltUSF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhJSCx7ZGVjbGFyYXRpb25zOlt6SF0sZXhwb3J0czpbekhdfSk7ZnVuY3Rpb24gSEgodCxlKXtyZXR1cm4odC5nZXRBdHRyaWJ1dGUoZSl8fCIiKS5tYXRjaCgvXFMrL2cpfHxbXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgRkg9ImNkay1kZXNjcmliZWRieS1tZXNzYWdlLWNvbnRhaW5lciIsTEg9ImNkay1kZXNjcmliZWRieS1tZXNzYWdlIixCSD0iY2RrLWRlc2NyaWJlZGJ5LWhvc3QiO2xldCBWSD0wO2NvbnN0IFVIPW5ldyBNYXA7bGV0IGpIPW51bGw7Y2xhc3MgV0h7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jdW1lbnQ9dH1kZXNjcmliZSh0LGUsbil7aWYoIXRoaXMuX2NhbkJlRGVzY3JpYmVkKHQsZSkpcmV0dXJuO2NvbnN0IG89R0goZSxuKTsic3RyaW5nIiE9dHlwZW9mIGU/KFlIKGUpLFVILnNldChvLHttZXNzYWdlRWxlbWVudDplLHJlZmVyZW5jZUNvdW50OjB9KSk6VUguaGFzKG8pfHx0aGlzLl9jcmVhdGVNZXNzYWdlRWxlbWVudChlLG4pLHRoaXMuX2lzRWxlbWVudERlc2NyaWJlZEJ5TWVzc2FnZSh0LG8pfHx0aGlzLl9hZGRNZXNzYWdlUmVmZXJlbmNlKHQsbyl9cmVtb3ZlRGVzY3JpcHRpb24odCxlLG4pe2lmKCFlfHwhdGhpcy5faXNFbGVtZW50Tm9kZSh0KSlyZXR1cm47Y29uc3Qgbz1HSChlLG4pO2lmKHRoaXMuX2lzRWxlbWVudERlc2NyaWJlZEJ5TWVzc2FnZSh0LG8pJiZ0aGlzLl9yZW1vdmVNZXNzYWdlUmVmZXJlbmNlKHQsbyksInN0cmluZyI9PXR5cGVvZiBlKXtjb25zdCB0PVVILmdldChvKTt0JiYwPT09dC5yZWZlcmVuY2VDb3VudCYmdGhpcy5fZGVsZXRlTWVzc2FnZUVsZW1lbnQobyl9akgmJjA9PT1qSC5jaGlsZE5vZGVzLmxlbmd0aCYmdGhpcy5fZGVsZXRlTWVzc2FnZXNDb250YWluZXIoKX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2Nkay1kZXNjcmliZWRieS1ob3N0XSIpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuX3JlbW92ZUNka0Rlc2NyaWJlZEJ5UmVmZXJlbmNlSWRzKHRbZV0pLHRbZV0ucmVtb3ZlQXR0cmlidXRlKEJIKTtqSCYmdGhpcy5fZGVsZXRlTWVzc2FnZXNDb250YWluZXIoKSxVSC5jbGVhcigpfV9jcmVhdGVNZXNzYWdlRWxlbWVudCh0LGUpe2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7WUgobiksbi50ZXh0Q29udGVudD10LGUmJm4uc2V0QXR0cmlidXRlKCJyb2xlIixlKSx0aGlzLl9jcmVhdGVNZXNzYWdlc0NvbnRhaW5lcigpLGpILmFwcGVuZENoaWxkKG4pLFVILnNldChHSCh0LGUpLHttZXNzYWdlRWxlbWVudDpuLHJlZmVyZW5jZUNvdW50OjB9KX1fZGVsZXRlTWVzc2FnZUVsZW1lbnQodCl7Y29uc3QgZT1VSC5nZXQodCksbj1lJiZlLm1lc3NhZ2VFbGVtZW50O2pIJiZuJiZqSC5yZW1vdmVDaGlsZChuKSxVSC5kZWxldGUodCl9X2NyZWF0ZU1lc3NhZ2VzQ29udGFpbmVyKCl7aWYoIWpIKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKEZIKTt0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSxqSD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxqSC5pZD1GSCxqSC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGpILmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGpIKX19X2RlbGV0ZU1lc3NhZ2VzQ29udGFpbmVyKCl7akgmJmpILnBhcmVudE5vZGUmJihqSC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGpIKSxqSD1udWxsKX1fcmVtb3ZlQ2RrRGVzY3JpYmVkQnlSZWZlcmVuY2VJZHModCl7Y29uc3QgZT1ISCh0LCJhcmlhLWRlc2NyaWJlZGJ5IikuZmlsdGVyKCh0PT4wIT10LmluZGV4T2YoTEgpKSk7dC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLGUuam9pbigiICIpKX1fYWRkTWVzc2FnZVJlZmVyZW5jZSh0LGUpe2NvbnN0IG49VUguZ2V0KGUpOyEoZnVuY3Rpb24gbyh0LGUsbil7Y29uc3Qgbz1ISCh0LGUpO28uc29tZSgodD0+dC50cmltKCk9PW4udHJpbSgpKSl8fChvLnB1c2gobi50cmltKCkpLHQuc2V0QXR0cmlidXRlKGUsby5qb2luKCIgIikpKX0pKHQsImFyaWEtZGVzY3JpYmVkYnkiLG4ubWVzc2FnZUVsZW1lbnQuaWQpLHQuc2V0QXR0cmlidXRlKEJILCIiKSxuLnJlZmVyZW5jZUNvdW50Kyt9X3JlbW92ZU1lc3NhZ2VSZWZlcmVuY2UodCxlKXtjb25zdCBuPVVILmdldChlKTtuLnJlZmVyZW5jZUNvdW50LS0sKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IG89SEgodCxlKS5maWx0ZXIoKHQ9PnQhPW4udHJpbSgpKSk7by5sZW5ndGg/dC5zZXRBdHRyaWJ1dGUoZSxvLmpvaW4oIiAiKSk6dC5yZW1vdmVBdHRyaWJ1dGUoZSl9KSh0LCJhcmlhLWRlc2NyaWJlZGJ5IixuLm1lc3NhZ2VFbGVtZW50LmlkKSx0LnJlbW92ZUF0dHJpYnV0ZShCSCl9X2lzRWxlbWVudERlc2NyaWJlZEJ5TWVzc2FnZSh0LGUpe2NvbnN0IG49SEgodCwiYXJpYS1kZXNjcmliZWRieSIpLG89VUguZ2V0KGUpLGk9byYmby5tZXNzYWdlRWxlbWVudC5pZDtyZXR1cm4hIWkmJi0xIT1uLmluZGV4T2YoaSl9X2NhbkJlRGVzY3JpYmVkKHQsZSl7aWYoIXRoaXMuX2lzRWxlbWVudE5vZGUodCkpcmV0dXJuITE7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKXJldHVybiEwO2NvbnN0IG49bnVsbD09ZT8iIjpgJHtlfWAudHJpbSgpLG89dC5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKTtyZXR1cm4hIW4mJighb3x8by50cmltKCkhPT1uKX1faXNFbGVtZW50Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERX19ZnVuY3Rpb24gR0godCxlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/YCR7ZXx8IiJ9LyR7dH1gOnR9ZnVuY3Rpb24gWUgodCl7dC5pZHx8KHQuaWQ9ImNkay1kZXNjcmliZWRieS1tZXNzYWdlLSIrVkgrKyl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL1dILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXSCkoVHIoc00pKX0sV0guybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFdIKFRyKHNNKSl9LHRva2VuOldILHByb3ZpZGVkSW46InJvb3QifSksV0guY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFdILFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIHFIe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2l0ZW1zPXQsdGhpcy5fYWN0aXZlSXRlbUluZGV4PS0xLHRoaXMuX2FjdGl2ZUl0ZW09bnVsbCx0aGlzLl93cmFwPSExLHRoaXMuX2xldHRlcktleVN0cmVhbT1uZXcgQix0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb249Zi5FTVBUWSx0aGlzLl92ZXJ0aWNhbD0hMCx0aGlzLl9hbGxvd2VkTW9kaWZpZXJLZXlzPVtdLHRoaXMuX2hvbWVBbmRFbmQ9ITEsdGhpcy5fc2tpcFByZWRpY2F0ZUZuPXQ9PnQuZGlzYWJsZWQsdGhpcy5fcHJlc3NlZExldHRlcnM9W10sdGhpcy50YWJPdXQ9bmV3IEIsdGhpcy5jaGFuZ2U9bmV3IEIsdCBpbnN0YW5jZW9mIFJ5JiZ0LmNoYW5nZXMuc3Vic2NyaWJlKCh0PT57aWYodGhpcy5fYWN0aXZlSXRlbSl7Y29uc3QgZT10LnRvQXJyYXkoKS5pbmRleE9mKHRoaXMuX2FjdGl2ZUl0ZW0pO2U+LTEmJmUhPT10aGlzLl9hY3RpdmVJdGVtSW5kZXgmJih0aGlzLl9hY3RpdmVJdGVtSW5kZXg9ZSl9fSkpfXNraXBQcmVkaWNhdGUodCl7cmV0dXJuIHRoaXMuX3NraXBQcmVkaWNhdGVGbj10LHRoaXN9d2l0aFdyYXAodD0hMCl7cmV0dXJuIHRoaXMuX3dyYXA9dCx0aGlzfXdpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKHQ9ITApe3JldHVybiB0aGlzLl92ZXJ0aWNhbD10LHRoaXN9d2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0KXtyZXR1cm4gdGhpcy5faG9yaXpvbnRhbD10LHRoaXN9d2l0aEFsbG93ZWRNb2RpZmllcktleXModCl7cmV0dXJuIHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXM9dCx0aGlzfXdpdGhUeXBlQWhlYWQodD0yMDApe2lmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmdGhpcy5faXRlbXMubGVuZ3RoJiZ0aGlzLl9pdGVtcy5zb21lKCh0PT4iZnVuY3Rpb24iIT10eXBlb2YgdC5nZXRMYWJlbCkpKXRocm93IEVycm9yKCJMaXN0S2V5TWFuYWdlciBpdGVtcyBpbiB0eXBlYWhlYWQgbW9kZSBtdXN0IGltcGxlbWVudCB0aGUgYGdldExhYmVsYCBtZXRob2QuIik7cmV0dXJuIHRoaXMuX3R5cGVhaGVhZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3R5cGVhaGVhZFN1YnNjcmlwdGlvbj10aGlzLl9sZXR0ZXJLZXlTdHJlYW0ucGlwZShXZSgodD0+dGhpcy5fcHJlc3NlZExldHRlcnMucHVzaCh0KSkpLENlKHQpLGZlKCgoKT0+dGhpcy5fcHJlc3NlZExldHRlcnMubGVuZ3RoPjApKSxWdCgoKCk9PnRoaXMuX3ByZXNzZWRMZXR0ZXJzLmpvaW4oIiIpKSkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2ZvcihsZXQgbj0xO248ZS5sZW5ndGgrMTtuKyspe2NvbnN0IG89KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCtuKSVlLmxlbmd0aCxpPWVbb107aWYoIXRoaXMuX3NraXBQcmVkaWNhdGVGbihpKSYmMD09PWkuZ2V0TGFiZWwoKS50b1VwcGVyQ2FzZSgpLnRyaW0oKS5pbmRleE9mKHQpKXt0aGlzLnNldEFjdGl2ZUl0ZW0obyk7YnJlYWt9fXRoaXMuX3ByZXNzZWRMZXR0ZXJzPVtdfSkpLHRoaXN9d2l0aEhvbWVBbmRFbmQodD0hMCl7cmV0dXJuIHRoaXMuX2hvbWVBbmRFbmQ9dCx0aGlzfXNldEFjdGl2ZUl0ZW0odCl7Y29uc3QgZT10aGlzLl9hY3RpdmVJdGVtO3RoaXMudXBkYXRlQWN0aXZlSXRlbSh0KSx0aGlzLl9hY3RpdmVJdGVtIT09ZSYmdGhpcy5jaGFuZ2UubmV4dCh0aGlzLl9hY3RpdmVJdGVtSW5kZXgpfW9uS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZSxuPVsiYWx0S2V5IiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSJdLmV2ZXJ5KChlPT4hdFtlXXx8dGhpcy5fYWxsb3dlZE1vZGlmaWVyS2V5cy5pbmRleE9mKGUpPi0xKSk7c3dpdGNoKGUpe2Nhc2UgOTpyZXR1cm4gdm9pZCB0aGlzLnRhYk91dC5uZXh0KCk7Y2FzZSBjSDppZih0aGlzLl92ZXJ0aWNhbCYmbil7dGhpcy5zZXROZXh0SXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIGxIOmlmKHRoaXMuX3ZlcnRpY2FsJiZuKXt0aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIDM5OmlmKHRoaXMuX2hvcml6b250YWwmJm4peyJydGwiPT09dGhpcy5faG9yaXpvbnRhbD90aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpOnRoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSAzNzppZih0aGlzLl9ob3Jpem9udGFsJiZuKXsicnRsIj09PXRoaXMuX2hvcml6b250YWw/dGhpcy5zZXROZXh0SXRlbUFjdGl2ZSgpOnRoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2UgMzY6aWYodGhpcy5faG9tZUFuZEVuZCYmbil7dGhpcy5zZXRGaXJzdEl0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSAzNTppZih0aGlzLl9ob21lQW5kRW5kJiZuKXt0aGlzLnNldExhc3RJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2RlZmF1bHQ6cmV0dXJuIHZvaWQoKG58fGRIKHQsInNoaWZ0S2V5IikpJiYodC5rZXkmJjE9PT10LmtleS5sZW5ndGg/dGhpcy5fbGV0dGVyS2V5U3RyZWFtLm5leHQodC5rZXkudG9Mb2NhbGVVcHBlckNhc2UoKSk6KGU+PTY1JiZlPD05MHx8ZT49NDgmJmU8PTU3KSYmdGhpcy5fbGV0dGVyS2V5U3RyZWFtLm5leHQoU3RyaW5nLmZyb21DaGFyQ29kZShlKSkpKX10aGlzLl9wcmVzc2VkTGV0dGVycz1bXSx0LnByZXZlbnREZWZhdWx0KCl9Z2V0IGFjdGl2ZUl0ZW1JbmRleCgpe3JldHVybiB0aGlzLl9hY3RpdmVJdGVtSW5kZXh9Z2V0IGFjdGl2ZUl0ZW0oKXtyZXR1cm4gdGhpcy5fYWN0aXZlSXRlbX1pc1R5cGluZygpe3JldHVybiB0aGlzLl9wcmVzc2VkTGV0dGVycy5sZW5ndGg+MH1zZXRGaXJzdEl0ZW1BY3RpdmUoKXt0aGlzLl9zZXRBY3RpdmVJdGVtQnlJbmRleCgwLDEpfXNldExhc3RJdGVtQWN0aXZlKCl7dGhpcy5fc2V0QWN0aXZlSXRlbUJ5SW5kZXgodGhpcy5faXRlbXMubGVuZ3RoLTEsLTEpfXNldE5leHRJdGVtQWN0aXZlKCl7dGhpcy5fYWN0aXZlSXRlbUluZGV4PDA/dGhpcy5zZXRGaXJzdEl0ZW1BY3RpdmUoKTp0aGlzLl9zZXRBY3RpdmVJdGVtQnlEZWx0YSgxKX1zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKXt0aGlzLl9hY3RpdmVJdGVtSW5kZXg8MCYmdGhpcy5fd3JhcD90aGlzLnNldExhc3RJdGVtQWN0aXZlKCk6dGhpcy5fc2V0QWN0aXZlSXRlbUJ5RGVsdGEoLTEpfXVwZGF0ZUFjdGl2ZUl0ZW0odCl7Y29uc3QgZT10aGlzLl9nZXRJdGVtc0FycmF5KCksbj0ibnVtYmVyIj09dHlwZW9mIHQ/dDplLmluZGV4T2YodCksbz1lW25dO3RoaXMuX2FjdGl2ZUl0ZW09bnVsbD09bz9udWxsOm8sdGhpcy5fYWN0aXZlSXRlbUluZGV4PW59X3NldEFjdGl2ZUl0ZW1CeURlbHRhKHQpe3RoaXMuX3dyYXA/dGhpcy5fc2V0QWN0aXZlSW5XcmFwTW9kZSh0KTp0aGlzLl9zZXRBY3RpdmVJbkRlZmF1bHRNb2RlKHQpfV9zZXRBY3RpdmVJbldyYXBNb2RlKHQpe2NvbnN0IGU9dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2ZvcihsZXQgbj0xO248PWUubGVuZ3RoO24rKyl7Y29uc3Qgbz0odGhpcy5fYWN0aXZlSXRlbUluZGV4K3QqbitlLmxlbmd0aCklZS5sZW5ndGg7aWYoIXRoaXMuX3NraXBQcmVkaWNhdGVGbihlW29dKSlyZXR1cm4gdm9pZCB0aGlzLnNldEFjdGl2ZUl0ZW0obyl9fV9zZXRBY3RpdmVJbkRlZmF1bHRNb2RlKHQpe3RoaXMuX3NldEFjdGl2ZUl0ZW1CeUluZGV4KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCt0LHQpfV9zZXRBY3RpdmVJdGVtQnlJbmRleCh0LGUpe2NvbnN0IG49dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2lmKG5bdF0pe2Zvcig7dGhpcy5fc2tpcFByZWRpY2F0ZUZuKG5bdF0pOylpZighblt0Kz1lXSlyZXR1cm47dGhpcy5zZXRBY3RpdmVJdGVtKHQpfX1fZ2V0SXRlbXNBcnJheSgpe3JldHVybiB0aGlzLl9pdGVtcyBpbnN0YW5jZW9mIFJ5P3RoaXMuX2l0ZW1zLnRvQXJyYXkoKTp0aGlzLl9pdGVtc319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFpIIGV4dGVuZHMgcUh7c2V0QWN0aXZlSXRlbSh0KXt0aGlzLmFjdGl2ZUl0ZW0mJnRoaXMuYWN0aXZlSXRlbS5zZXRJbmFjdGl2ZVN0eWxlcygpLHN1cGVyLnNldEFjdGl2ZUl0ZW0odCksdGhpcy5hY3RpdmVJdGVtJiZ0aGlzLmFjdGl2ZUl0ZW0uc2V0QWN0aXZlU3R5bGVzKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBYSCBleHRlbmRzIHFIe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcmlnaW49InByb2dyYW0ifXNldEZvY3VzT3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW49dCx0aGlzfXNldEFjdGl2ZUl0ZW0odCl7c3VwZXIuc2V0QWN0aXZlSXRlbSh0KSx0aGlzLmFjdGl2ZUl0ZW0mJnRoaXMuYWN0aXZlSXRlbS5mb2N1cyh0aGlzLl9vcmlnaW4pfX1jbGFzcyBLSHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybT10fWlzRGlzYWJsZWQodCl7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfWlzVmlzaWJsZSh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4hISh0Lm9mZnNldFdpZHRofHx0Lm9mZnNldEhlaWdodHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0Q2xpZW50UmVjdHMmJnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSkodCkmJiJ2aXNpYmxlIj09PWdldENvbXB1dGVkU3R5bGUodCkudmlzaWJpbGl0eX1pc1RhYmJhYmxlKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuITE7Y29uc3QgZT0oZnVuY3Rpb24gbyh0KXt0cnl7cmV0dXJuIHQuZnJhbWVFbGVtZW50fWNhdGNoKHQpe3JldHVybiBudWxsfX0pKChmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpKTtpZihlKXtpZigtMT09PVFIKGUpKXJldHVybiExO2lmKCF0aGlzLmlzVmlzaWJsZShlKSlyZXR1cm4hMX1sZXQgaT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksYT1RSCh0KTtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpPy0xIT09YToiaWZyYW1lIiE9PWkmJiJvYmplY3QiIT09aSYmKCEodGhpcy5fcGxhdGZvcm0uV0VCS0lUJiZ0aGlzLl9wbGF0Zm9ybS5JT1MmJiEoZnVuY3Rpb24gcih0KXtsZXQgZT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksbj0iaW5wdXQiPT09ZSYmdC50eXBlO3JldHVybiJ0ZXh0Ij09PW58fCJwYXNzd29yZCI9PT1ufHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfSkodCkpJiYoImF1ZGlvIj09PWk/ISF0Lmhhc0F0dHJpYnV0ZSgiY29udHJvbHMiKSYmLTEhPT1hOiJ2aWRlbyI9PT1pPy0xIT09YSYmKG51bGwhPT1hfHwodGhpcy5fcGxhdGZvcm0uRklSRUZPWHx8dC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikpKTp0LnRhYkluZGV4Pj0wKSl9aXNGb2N1c2FibGUodCxlKXtyZXR1cm4oZnVuY3Rpb24gbih0KXtpZigoZnVuY3Rpb24gZSh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4iaW5wdXQiPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9KSh0KSYmImhpZGRlbiI9PXQudHlwZX0pKHQpKXJldHVybiExO3JldHVybihmdW5jdGlvbiBuKHQpe2xldCBlPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwiYnV0dG9uIj09PWV8fCJ0ZXh0YXJlYSI9PT1lfSkodCl8fChmdW5jdGlvbiBvKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiJhIj09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSkodCkmJnQuaGFzQXR0cmlidXRlKCJocmVmIil9KSh0KXx8dC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxKSCh0KX0pKHQpJiYhdGhpcy5pc0Rpc2FibGVkKHQpJiYoKG51bGw9PWU/dm9pZCAwOmUuaWdub3JlVmlzaWJpbGl0eSl8fHRoaXMuaXNWaXNpYmxlKHQpKX19ZnVuY3Rpb24gSkgodCl7aWYoIXQuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHx2b2lkIDA9PT10LnRhYkluZGV4KXJldHVybiExO2xldCBlPXQuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO3JldHVybiItMzI3NjgiIT1lJiYhKCFlfHxpc05hTihwYXJzZUludChlLDEwKSkpfWZ1bmN0aW9uIFFIKHQpe2lmKCFKSCh0KSlyZXR1cm4gbnVsbDtjb25zdCBlPXBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpfHwiIiwxMCk7cmV0dXJuIGlzTmFOKGUpPy0xOmV9S0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtIKShUcihfSCkpfSxLSC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgS0goVHIoX0gpKX0sdG9rZW46S0gscHJvdmlkZWRJbjoicm9vdCJ9KSxLSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOl9IfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLSCxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X0h9XX0pLG51bGwpO2NsYXNzICRIe2NvbnN0cnVjdG9yKHQsZSxuLG8saT0hMSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX2NoZWNrZXI9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLl9kb2N1bWVudD1vLHRoaXMuX2hhc0F0dGFjaGVkPSExLHRoaXMuc3RhcnRBbmNob3JMaXN0ZW5lcj0oKT0+dGhpcy5mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoKSx0aGlzLmVuZEFuY2hvckxpc3RlbmVyPSgpPT50aGlzLmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKSx0aGlzLl9lbmFibGVkPSEwLGl8fHRoaXMuYXR0YWNoQW5jaG9ycygpfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQodCl7dGhpcy5fZW5hYmxlZD10LHRoaXMuX3N0YXJ0QW5jaG9yJiZ0aGlzLl9lbmRBbmNob3ImJih0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX3N0YXJ0QW5jaG9yKSx0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX2VuZEFuY2hvcikpfWRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX3N0YXJ0QW5jaG9yLGU9dGhpcy5fZW5kQW5jaG9yO3QmJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpLHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpKSxlJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5lbmRBbmNob3JMaXN0ZW5lciksZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSkpLHRoaXMuX3N0YXJ0QW5jaG9yPXRoaXMuX2VuZEFuY2hvcj1udWxsLHRoaXMuX2hhc0F0dGFjaGVkPSExfWF0dGFjaEFuY2hvcnMoKXtyZXR1cm4hIXRoaXMuX2hhc0F0dGFjaGVkfHwodGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX3N0YXJ0QW5jaG9yfHwodGhpcy5fc3RhcnRBbmNob3I9dGhpcy5fY3JlYXRlQW5jaG9yKCksdGhpcy5fc3RhcnRBbmNob3IuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuc3RhcnRBbmNob3JMaXN0ZW5lcikpLHRoaXMuX2VuZEFuY2hvcnx8KHRoaXMuX2VuZEFuY2hvcj10aGlzLl9jcmVhdGVBbmNob3IoKSx0aGlzLl9lbmRBbmNob3IuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpKX0pKSx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJih0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX3N0YXJ0QW5jaG9yLHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fZW5kQW5jaG9yLHRoaXMuX2VsZW1lbnQubmV4dFNpYmxpbmcpLHRoaXMuX2hhc0F0dGFjaGVkPSEwKSx0aGlzLl9oYXNBdHRhY2hlZCl9Zm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGU9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT5lKHRoaXMuZm9jdXNJbml0aWFsRWxlbWVudCh0KSkpKX0pKX1mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50V2hlblJlYWR5KHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZT0+e3RoaXMuX2V4ZWN1dGVPblN0YWJsZSgoKCk9PmUodGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KHQpKSkpfSkpfWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudFdoZW5SZWFkeSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGU9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT5lKHRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KHQpKSkpfSkpfV9nZXRSZWdpb25Cb3VuZGFyeSh0KXtsZXQgZT10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtjZGstZm9jdXMtcmVnaW9uLSR7dH1dLCBbY2RrRm9jdXNSZWdpb24ke3R9XSwgW2Nkay1mb2N1cy0ke3R9XWApO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWVbbl0uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtJHt0fWApP2NvbnNvbGUud2FybihgRm91bmQgdXNlIG9mIGRlcHJlY2F0ZWQgYXR0cmlidXRlICdjZGstZm9jdXMtJHt0fScsIHVzZSAnY2RrRm9jdXNSZWdpb24ke3R9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wLmAsZVtuXSk6ZVtuXS5oYXNBdHRyaWJ1dGUoYGNkay1mb2N1cy1yZWdpb24tJHt0fWApJiZjb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLXJlZ2lvbi0ke3R9JywgdXNlICdjZGtGb2N1c1JlZ2lvbiR7dH0nIGluc3RlYWQuIFRoZSBkZXByZWNhdGVkIGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWQgaW4gOC4wLjAuYCxlW25dKTtyZXR1cm4ic3RhcnQiPT10P2UubGVuZ3RoP2VbMF06dGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5fZWxlbWVudCk6ZS5sZW5ndGg/ZVtlLmxlbmd0aC0xXTp0aGlzLl9nZXRMYXN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpfWZvY3VzSW5pdGlhbEVsZW1lbnQodCl7Y29uc3QgZT10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIltjZGstZm9jdXMtaW5pdGlhbF0sIFtjZGtGb2N1c0luaXRpYWxdIik7aWYoZSl7aWYoZS5oYXNBdHRyaWJ1dGUoImNkay1mb2N1cy1pbml0aWFsIikmJmNvbnNvbGUud2FybigiRm91bmQgdXNlIG9mIGRlcHJlY2F0ZWQgYXR0cmlidXRlICdjZGstZm9jdXMtaW5pdGlhbCcsIHVzZSAnY2RrRm9jdXNJbml0aWFsJyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wIixlKSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8dGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShlKXx8Y29uc29sZS53YXJuKCJFbGVtZW50IG1hdGNoaW5nICdbY2RrRm9jdXNJbml0aWFsXScgaXMgbm90IGZvY3VzYWJsZS4iLGUpLCF0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKGUpKXtjb25zdCBuPXRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KGUpO3JldHVybiBudWxsPT1ufHxuLmZvY3VzKHQpLCEhbn1yZXR1cm4gZS5mb2N1cyh0KSwhMH1yZXR1cm4gdGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KHQpfWZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQodCl7Y29uc3QgZT10aGlzLl9nZXRSZWdpb25Cb3VuZGFyeSgic3RhcnQiKTtyZXR1cm4gZSYmZS5mb2N1cyh0KSwhIWV9Zm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoImVuZCIpO3JldHVybiBlJiZlLmZvY3VzKHQpLCEhZX1oYXNBdHRhY2hlZCgpe3JldHVybiB0aGlzLl9oYXNBdHRhY2hlZH1fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQodCl7aWYodGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZSh0KSYmdGhpcy5fY2hlY2tlci5pc1RhYmJhYmxlKHQpKXJldHVybiB0O2xldCBlPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IG49ZVt0XS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERT90aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChlW3RdKTpudWxsO2lmKG4pcmV0dXJuIG59cmV0dXJuIG51bGx9X2dldExhc3RUYWJiYWJsZUVsZW1lbnQodCl7aWYodGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZSh0KSYmdGhpcy5fY2hlY2tlci5pc1RhYmJhYmxlKHQpKXJldHVybiB0O2xldCBlPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7bGV0IG49ZVt0XS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERT90aGlzLl9nZXRMYXN0VGFiYmFibGVFbGVtZW50KGVbdF0pOm51bGw7aWYobilyZXR1cm4gbn1yZXR1cm4gbnVsbH1fY3JlYXRlQW5jaG9yKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodGhpcy5fZW5hYmxlZCx0KSx0LmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSx0LmNsYXNzTGlzdC5hZGQoImNkay1mb2N1cy10cmFwLWFuY2hvciIpLHQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0fV90b2dnbGVBbmNob3JUYWJJbmRleCh0LGUpe3Q/ZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpOmUucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpfXRvZ2dsZUFuY2hvcnModCl7dGhpcy5fc3RhcnRBbmNob3ImJnRoaXMuX2VuZEFuY2hvciYmKHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHQsdGhpcy5fc3RhcnRBbmNob3IpLHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHQsdGhpcy5fZW5kQW5jaG9yKSl9X2V4ZWN1dGVPblN0YWJsZSh0KXt0aGlzLl9uZ1pvbmUuaXNTdGFibGU/dCgpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHZlKDEpKS5zdWJzY3JpYmUodCl9fWNsYXNzIHRGe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9jaGVja2VyPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fZG9jdW1lbnQ9bn1jcmVhdGUodCxlPSExKXtyZXR1cm4gbmV3ICRIKHQsdGhpcy5fY2hlY2tlcix0aGlzLl9uZ1pvbmUsdGhpcy5fZG9jdW1lbnQsZSl9fXRGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0RikoVHIoS0gpLFRyKG1DKSxUcihzTSkpfSx0Ri7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgdEYoVHIoS0gpLFRyKG1DKSxUcihzTSkpfSx0b2tlbjp0Rixwcm92aWRlZEluOiJyb290In0pLHRGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHRGLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLSH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Y2xhc3MgZUZ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c1RyYXBGYWN0b3J5PWUsdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PW51bGwsdGhpcy5mb2N1c1RyYXA9dGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCEwKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmZvY3VzVHJhcC5lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuZm9jdXNUcmFwLmVuYWJsZWQ9cEgodCl9Z2V0IGF1dG9DYXB0dXJlKCl7cmV0dXJuIHRoaXMuX2F1dG9DYXB0dXJlfXNldCBhdXRvQ2FwdHVyZSh0KXt0aGlzLl9hdXRvQ2FwdHVyZT1wSCh0KX1uZ09uRGVzdHJveSgpe3RoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQmJih0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9bnVsbCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb2N1c1RyYXAuYXR0YWNoQW5jaG9ycygpLHRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuX2NhcHR1cmVGb2N1cygpfW5nRG9DaGVjaygpe3RoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCl8fHRoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBlPXQuYXV0b0NhcHR1cmU7ZSYmIWUuZmlyc3RDaGFuZ2UmJnRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCkmJnRoaXMuX2NhcHR1cmVGb2N1cygpfV9jYXB0dXJlRm9jdXMoKXt0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9RUgoKSx0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCl9fWVGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlRikoZnUoS2gpLGZ1KHRGKSxmdShzTSkpfSxlRi7JtWRpcj1obyh7dHlwZTplRixzZWxlY3RvcnM6W1siIiwiY2RrVHJhcEZvY3VzIiwiIl1dLGlucHV0czp7ZW5hYmxlZDpbImNka1RyYXBGb2N1cyIsImVuYWJsZWQiXSxhdXRvQ2FwdHVyZTpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIiwiYXV0b0NhcHR1cmUiXX0sZXhwb3J0QXM6WyJjZGtUcmFwRm9jdXMiXSxmZWF0dXJlczpbcW9dfSksZUYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6dEZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLGVGLnByb3BEZWNvcmF0b3JzPXtlbmFibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrVHJhcEZvY3VzIl19XSxhdXRvQ2FwdHVyZTpbe3R5cGU6Ul8sYXJnczpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlRixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrVHJhcEZvY3VzXSIsZXhwb3J0QXM6ImNka1RyYXBGb2N1cyJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6dEZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSkse2VuYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtUcmFwRm9jdXMiXX1dLGF1dG9DYXB0dXJlOlt7dHlwZTpSXyxhcmdzOlsiY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBuRiBleHRlbmRzICRIe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsZSxuLG8sci5kZWZlciksdGhpcy5fZm9jdXNUcmFwTWFuYWdlcj1pLHRoaXMuX2luZXJ0U3RyYXRlZ3k9YSx0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLnJlZ2lzdGVyKHRoaXMpfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQodCl7dGhpcy5fZW5hYmxlZD10LHRoaXMuX2VuYWJsZWQ/dGhpcy5fZm9jdXNUcmFwTWFuYWdlci5yZWdpc3Rlcih0aGlzKTp0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLmRlcmVnaXN0ZXIodGhpcyl9ZGVzdHJveSgpe3RoaXMuX2ZvY3VzVHJhcE1hbmFnZXIuZGVyZWdpc3Rlcih0aGlzKSxzdXBlci5kZXN0cm95KCl9X2VuYWJsZSgpe3RoaXMuX2luZXJ0U3RyYXRlZ3kucHJldmVudEZvY3VzKHRoaXMpLHRoaXMudG9nZ2xlQW5jaG9ycyghMCl9X2Rpc2FibGUoKXt0aGlzLl9pbmVydFN0cmF0ZWd5LmFsbG93Rm9jdXModGhpcyksdGhpcy50b2dnbGVBbmNob3JzKCExKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBvRj1uZXcgZXIoIkZPQ1VTX1RSQVBfSU5FUlRfU1RSQVRFR1kiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaUYodCxlKXtpZighKHQgaW5zdGFuY2VvZiBOb2RlKSlyZXR1cm4gbnVsbDtsZXQgbj10O2Zvcig7bnVsbCE9biYmIShuIGluc3RhbmNlb2YgRWxlbWVudCk7KW49bi5wYXJlbnROb2RlO3JldHVybiBuJiYoYUY/bi5jbG9zZXN0KGUpOihmdW5jdGlvbiBvKHQsZSl7bGV0IG49dDtmb3IoO251bGwhPW4mJiEobiBpbnN0YW5jZW9mIEVsZW1lbnQmJnJGKG4sZSkpOyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbnx8bnVsbH0pKG4sZSkpfWNvbnN0IGFGPSJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCYmISFFbGVtZW50LnByb3RvdHlwZS5jbG9zZXN0O2Z1bmN0aW9uIHJGKHQsZSl7cmV0dXJuIHQubWF0Y2hlcz90Lm1hdGNoZXMoZSk6dC5tc01hdGNoZXNTZWxlY3RvcihlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgc0Z7Y29uc3RydWN0b3IoKXt0aGlzLl9saXN0ZW5lcj1udWxsfXByZXZlbnRGb2N1cyh0KXt0aGlzLl9saXN0ZW5lciYmdC5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKSx0aGlzLl9saXN0ZW5lcj1lPT50aGlzLl90cmFwRm9jdXModCxlKSx0Ll9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKX0pKX1hbGxvd0ZvY3VzKHQpe3RoaXMuX2xpc3RlbmVyJiYodC5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKSx0aGlzLl9saXN0ZW5lcj1udWxsKX1fdHJhcEZvY3VzKHQsZSl7Y29uc3Qgbj1lLnRhcmdldCxvPXQuX2VsZW1lbnQ7by5jb250YWlucyhuKXx8bnVsbCE9PWlGKG4sImRpdi5jZGstb3ZlcmxheS1wYW5lIil8fHNldFRpbWVvdXQoKCgpPT57dC5lbmFibGVkJiYhby5jb250YWlucyh0Ll9kb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmdC5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCl9KSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBsRntjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZvY3VzVHJhcFN0YWNrPVtdfXJlZ2lzdGVyKHQpe3RoaXMuX2ZvY3VzVHJhcFN0YWNrPXRoaXMuX2ZvY3VzVHJhcFN0YWNrLmZpbHRlcigoZT0+ZSE9PXQpKTtsZXQgZT10aGlzLl9mb2N1c1RyYXBTdGFjaztlLmxlbmd0aCYmZVtlLmxlbmd0aC0xXS5fZGlzYWJsZSgpLGUucHVzaCh0KSx0Ll9lbmFibGUoKX1kZXJlZ2lzdGVyKHQpe3QuX2Rpc2FibGUoKTtjb25zdCBlPXRoaXMuX2ZvY3VzVHJhcFN0YWNrLG49ZS5pbmRleE9mKHQpOy0xIT09biYmKGUuc3BsaWNlKG4sMSksZS5sZW5ndGgmJmVbZS5sZW5ndGgtMV0uX2VuYWJsZSgpKX19bEYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxGKX0sbEYuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGxGfSx0b2tlbjpsRixwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobEYsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGNGe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fY2hlY2tlcj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXI9bix0aGlzLl9kb2N1bWVudD1vLHRoaXMuX2luZXJ0U3RyYXRlZ3k9aXx8bmV3IHNGfWNyZWF0ZSh0LGU9e2RlZmVyOiExfSl7bGV0IG47cmV0dXJuIG49ImJvb2xlYW4iPT10eXBlb2YgZT97ZGVmZXI6ZX06ZSxuZXcgbkYodCx0aGlzLl9jaGVja2VyLHRoaXMuX25nWm9uZSx0aGlzLl9kb2N1bWVudCx0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLHRoaXMuX2luZXJ0U3RyYXRlZ3ksbil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZEYodCl7cmV0dXJuIDA9PT10Lm9mZnNldFgmJjA9PT10Lm9mZnNldFl9ZnVuY3Rpb24gcEYodCl7Y29uc3QgZT10LnRvdWNoZXMmJnQudG91Y2hlc1swXXx8dC5jaGFuZ2VkVG91Y2hlcyYmdC5jaGFuZ2VkVG91Y2hlc1swXTtyZXR1cm4hKCFlfHwtMSE9PWUuaWRlbnRpZmllcnx8bnVsbCE9ZS5yYWRpdXNYJiYxIT09ZS5yYWRpdXNYfHxudWxsIT1lLnJhZGl1c1kmJjEhPT1lLnJhZGl1c1kpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y0YpKFRyKEtIKSxUcihtQyksVHIobEYpLFRyKHNNKSxUcihvRiw4KSl9LGNGLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBjRihUcihLSCksVHIobUMpLFRyKGxGKSxUcihzTSksVHIob0YsOCkpfSx0b2tlbjpjRixwcm92aWRlZEluOiJyb290In0pLGNGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S0h9LHt0eXBlOm1DfSx7dHlwZTpsRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W29GXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjRixbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S0h9LHt0eXBlOm1DfSx7dHlwZTpsRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W29GXX1dfV19KSxudWxsKTtjb25zdCBtRj1uZXcgZXIoImNkay1pbnB1dC1tb2RhbGl0eS1kZXRlY3Rvci1vcHRpb25zIiksdUY9e2lnbm9yZUtleXM6WzE4LDE3LDIyNCw5MSwxNl19LGZGPWtIKHtwYXNzaXZlOiEwLGNhcHR1cmU6ITB9KTtjbGFzcyBnRntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX21vc3RSZWNlbnRUYXJnZXQ9bnVsbCx0aGlzLl9tb2RhbGl0eT1uZXcgVShudWxsKSx0aGlzLl9sYXN0VG91Y2hNcz0wLHRoaXMuX29uS2V5ZG93bj10PT57dmFyIGUsbjsobnVsbD09PShuPW51bGw9PT0oZT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5pZ25vcmVLZXlzKXx8dm9pZCAwPT09bj92b2lkIDA6bi5zb21lKChlPT5lPT09dC5rZXlDb2RlKSkpfHwodGhpcy5fbW9kYWxpdHkubmV4dCgia2V5Ym9hcmQiKSx0aGlzLl9tb3N0UmVjZW50VGFyZ2V0PUFIKHQpKX0sdGhpcy5fb25Nb3VzZWRvd249dD0+e0RhdGUubm93KCktdGhpcy5fbGFzdFRvdWNoTXM8NjUwfHwodGhpcy5fbW9kYWxpdHkubmV4dChkRih0KT8ia2V5Ym9hcmQiOiJtb3VzZSIpLHRoaXMuX21vc3RSZWNlbnRUYXJnZXQ9QUgodCkpfSx0aGlzLl9vblRvdWNoc3RhcnQ9dD0+e3BGKHQpP3RoaXMuX21vZGFsaXR5Lm5leHQoImtleWJvYXJkIik6KHRoaXMuX2xhc3RUb3VjaE1zPURhdGUubm93KCksdGhpcy5fbW9kYWxpdHkubmV4dCgidG91Y2giKSx0aGlzLl9tb3N0UmVjZW50VGFyZ2V0PUFIKHQpKX0sdGhpcy5fb3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdUYpLG8pLHRoaXMubW9kYWxpdHlEZXRlY3RlZD10aGlzLl9tb2RhbGl0eS5waXBlKExlKDEpKSx0aGlzLm1vZGFsaXR5Q2hhbmdlZD10aGlzLm1vZGFsaXR5RGV0ZWN0ZWQucGlwZSh3ZSgpKSx0LmlzQnJvd3NlciYmZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntuLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uS2V5ZG93bixmRiksbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2Vkb3duLGZGKSxuLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hzdGFydCxmRil9KSl9Z2V0IG1vc3RSZWNlbnRNb2RhbGl0eSgpe3JldHVybiB0aGlzLl9tb2RhbGl0eS52YWx1ZX1uZ09uRGVzdHJveSgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uS2V5ZG93bixmRiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlZG93bixmRiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fb25Ub3VjaHN0YXJ0LGZGKSl9fWdGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnRikoVHIoX0gpLFRyKG1DKSxUcihzTSksVHIobUYsOCkpfSxnRi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgZ0YoVHIoX0gpLFRyKG1DKSxUcihzTSksVHIobUYsOCkpfSx0b2tlbjpnRixwcm92aWRlZEluOiJyb290In0pLGdGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X0h9LHt0eXBlOm1DfSx7dHlwZTpEb2N1bWVudCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlttRl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ0YsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9IfSx7dHlwZTptQ30se3R5cGU6RG9jdW1lbnQsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbbUZdfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgaEY9bmV3IGVyKCJsaXZlQW5ub3VuY2VyRWxlbWVudCIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gYkYoKXtyZXR1cm4gbnVsbH19KTtjb25zdCB5Rj1uZXcgZXIoIkxJVkVfQU5OT1VOQ0VSX0RFRkFVTFRfT1BUSU9OUyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfRntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9kZWZhdWx0T3B0aW9ucz1vLHRoaXMuX2RvY3VtZW50PW4sdGhpcy5fbGl2ZUVsZW1lbnQ9dHx8dGhpcy5fY3JlYXRlTGl2ZUVsZW1lbnQoKX1hbm5vdW5jZSh0LC4uLmUpe2NvbnN0IG49dGhpcy5fZGVmYXVsdE9wdGlvbnM7bGV0IG8saTtyZXR1cm4gMT09PWUubGVuZ3RoJiYibnVtYmVyIj09dHlwZW9mIGVbMF0/aT1lWzBdOltvLGldPWUsdGhpcy5jbGVhcigpLGNsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLG98fChvPW4mJm4ucG9saXRlbmVzcz9uLnBvbGl0ZW5lc3M6InBvbGl0ZSIpLG51bGw9PWkmJm4mJihpPW4uZHVyYXRpb24pLHRoaXMuX2xpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIixvKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5uZXcgUHJvbWlzZSgoZT0+e2NsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLHRoaXMuX3ByZXZpb3VzVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xpdmVFbGVtZW50LnRleHRDb250ZW50PXQsZSgpLCJudW1iZXIiPT10eXBlb2YgaSYmKHRoaXMuX3ByZXZpb3VzVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5jbGVhcigpKSxpKSl9KSwxMDApfSkpKSl9Y2xlYXIoKXt0aGlzLl9saXZlRWxlbWVudCYmKHRoaXMuX2xpdmVFbGVtZW50LnRleHRDb250ZW50PSIiKX1uZ09uRGVzdHJveSgpe2NsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLHRoaXMuX2xpdmVFbGVtZW50JiZ0aGlzLl9saXZlRWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fbGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXZlRWxlbWVudCksdGhpcy5fbGl2ZUVsZW1lbnQ9bnVsbCl9X2NyZWF0ZUxpdmVFbGVtZW50KCl7Y29uc3QgdD0iY2RrLWxpdmUtYW5ub3VuY2VyLWVsZW1lbnQiLGU9dGhpcy5fZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0KSxuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlW3RdKTtyZXR1cm4gbi5jbGFzc0xpc3QuYWRkKHQpLG4uY2xhc3NMaXN0LmFkZCgiY2RrLXZpc3VhbGx5LWhpZGRlbiIpLG4uc2V0QXR0cmlidXRlKCJhcmlhLWF0b21pYyIsInRydWUiKSxuLnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIiwicG9saXRlIiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKSxufX1fRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8X0YpKFRyKGhGLDgpLFRyKG1DKSxUcihzTSksVHIoeUYsOCkpfSxfRi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgX0YoVHIoaEYsOCksVHIobUMpLFRyKHNNKSxUcih5Riw4KSl9LHRva2VuOl9GLHByb3ZpZGVkSW46InJvb3QifSksX0YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2hGXX1dfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3lGXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfRixbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltoRl19XX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt5Rl19XX1dfSksbnVsbCk7Y2xhc3MgQ0Z7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2xpdmVBbm5vdW5jZXI9ZSx0aGlzLl9jb250ZW50T2JzZXJ2ZXI9bix0aGlzLl9uZ1pvbmU9byx0aGlzLl9wb2xpdGVuZXNzPSJwb2xpdGUifWdldCBwb2xpdGVuZXNzKCl7cmV0dXJuIHRoaXMuX3BvbGl0ZW5lc3N9c2V0IHBvbGl0ZW5lc3ModCl7dGhpcy5fcG9saXRlbmVzcz0ib2ZmIj09PXR8fCJhc3NlcnRpdmUiPT09dD90OiJwb2xpdGUiLCJvZmYiPT09dGhpcy5fcG9saXRlbmVzcz90aGlzLl9zdWJzY3JpcHRpb24mJih0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCk6dGhpcy5fc3Vic2NyaXB0aW9ufHwodGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnRoaXMuX2NvbnRlbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYpLnN1YnNjcmliZSgoKCk9Pntjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDt0IT09dGhpcy5fcHJldmlvdXNBbm5vdW5jZWRUZXh0JiYodGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0LHRoaXMuX3BvbGl0ZW5lc3MpLHRoaXMuX3ByZXZpb3VzQW5ub3VuY2VkVGV4dD10KX0pKSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlvbiYmdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fUNGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDRikoZnUoS2gpLGZ1KF9GKSxmdShOSCksZnUobUMpKX0sQ0YuybVkaXI9aG8oe3R5cGU6Q0Ysc2VsZWN0b3JzOltbIiIsImNka0FyaWFMaXZlIiwiIl1dLGlucHV0czp7cG9saXRlbmVzczpbImNka0FyaWFMaXZlIiwicG9saXRlbmVzcyJdfSxleHBvcnRBczpbImNka0FyaWFMaXZlIl19KSxDRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpfRn0se3R5cGU6Tkh9LHt0eXBlOm1DfV0sQ0YucHJvcERlY29yYXRvcnM9e3BvbGl0ZW5lc3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtBcmlhTGl2ZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ0YsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0FyaWFMaXZlXSIsZXhwb3J0QXM6ImNka0FyaWFMaXZlIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpfRn0se3R5cGU6Tkh9LHt0eXBlOm1DfV19KSx7cG9saXRlbmVzczpbe3R5cGU6Ul8sYXJnczpbImNka0FyaWFMaXZlIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgTUY9bmV3IGVyKCJjZGstZm9jdXMtbW9uaXRvci1kZWZhdWx0LW9wdGlvbnMiKSx2Rj1rSCh7cGFzc2l2ZTohMCxjYXB0dXJlOiEwfSk7Y2xhc3MgeEZ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX2lucHV0TW9kYWxpdHlEZXRlY3Rvcj1uLHRoaXMuX29yaWdpbj1udWxsLHRoaXMuX3dpbmRvd0ZvY3VzZWQ9ITEsdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb249ITEsdGhpcy5fZWxlbWVudEluZm89bmV3IE1hcCx0aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnQ9MCx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudD1uZXcgTWFwLHRoaXMuX3dpbmRvd0ZvY3VzTGlzdGVuZXI9KCk9Pnt0aGlzLl93aW5kb3dGb2N1c2VkPSEwLHRoaXMuX3dpbmRvd0ZvY3VzVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLl93aW5kb3dGb2N1c2VkPSExKSl9LHRoaXMuX3N0b3BJbnB1dE1vZGFsaXR5RGV0ZWN0b3I9bmV3IEIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcj10PT57Y29uc3QgZT1BSCh0KSxuPSJmb2N1cyI9PT10LnR5cGU/dGhpcy5fb25Gb2N1czp0aGlzLl9vbkJsdXI7Zm9yKGxldCBvPWU7bztvPW8ucGFyZW50RWxlbWVudCluLmNhbGwodGhpcyx0LG8pfSx0aGlzLl9kb2N1bWVudD1vLHRoaXMuX2RldGVjdGlvbk1vZGU9KG51bGw9PWk/dm9pZCAwOmkuZGV0ZWN0aW9uTW9kZSl8fDB9bW9uaXRvcih0LGU9ITEpe2NvbnN0IG49aEgodCk7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcnx8MSE9PW4ubm9kZVR5cGUpcmV0dXJuIHp0KG51bGwpO2NvbnN0IG89Ukgobil8fHRoaXMuX2dldERvY3VtZW50KCksaT10aGlzLl9lbGVtZW50SW5mby5nZXQobik7aWYoaSlyZXR1cm4gZSYmKGkuY2hlY2tDaGlsZHJlbj0hMCksaS5zdWJqZWN0O2NvbnN0IGE9e2NoZWNrQ2hpbGRyZW46ZSxzdWJqZWN0Om5ldyBCLHJvb3ROb2RlOm99O3JldHVybiB0aGlzLl9lbGVtZW50SW5mby5zZXQobixhKSx0aGlzLl9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyhhKSxhLnN1YmplY3R9c3RvcE1vbml0b3JpbmcodCl7Y29uc3QgZT1oSCh0KSxuPXRoaXMuX2VsZW1lbnRJbmZvLmdldChlKTtuJiYobi5zdWJqZWN0LmNvbXBsZXRlKCksdGhpcy5fc2V0Q2xhc3NlcyhlKSx0aGlzLl9lbGVtZW50SW5mby5kZWxldGUoZSksdGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXJzKG4pKX1mb2N1c1ZpYSh0LGUsbil7Y29uc3Qgbz1oSCh0KTtvPT09dGhpcy5fZ2V0RG9jdW1lbnQoKS5hY3RpdmVFbGVtZW50P3RoaXMuX2dldENsb3Nlc3RFbGVtZW50c0luZm8obykuZm9yRWFjaCgoKFt0LG5dKT0+dGhpcy5fb3JpZ2luQ2hhbmdlZCh0LGUsbikpKToodGhpcy5fc2V0T3JpZ2luKGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBvLmZvY3VzJiZvLmZvY3VzKG4pKX1uZ09uRGVzdHJveSgpe3RoaXMuX2VsZW1lbnRJbmZvLmZvckVhY2goKCh0LGUpPT50aGlzLnN0b3BNb25pdG9yaW5nKGUpKSl9X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fdG9nZ2xlQ2xhc3ModCxlLG4pe24/dC5jbGFzc0xpc3QuYWRkKGUpOnQuY2xhc3NMaXN0LnJlbW92ZShlKX1fZ2V0Rm9jdXNPcmlnaW4odCl7cmV0dXJuIHRoaXMuX29yaWdpbj90aGlzLl9vcmlnaW5Gcm9tVG91Y2hJbnRlcmFjdGlvbj90aGlzLl9zaG91bGRCZUF0dHJpYnV0ZWRUb1RvdWNoKHQpPyJ0b3VjaCI6InByb2dyYW0iOnRoaXMuX29yaWdpbjp0aGlzLl93aW5kb3dGb2N1c2VkJiZ0aGlzLl9sYXN0Rm9jdXNPcmlnaW4/dGhpcy5fbGFzdEZvY3VzT3JpZ2luOiJwcm9ncmFtIn1fc2hvdWxkQmVBdHRyaWJ1dGVkVG9Ub3VjaCh0KXtyZXR1cm4gMT09PXRoaXMuX2RldGVjdGlvbk1vZGV8fCEhKG51bGw9PXQ/dm9pZCAwOnQuY29udGFpbnModGhpcy5faW5wdXRNb2RhbGl0eURldGVjdG9yLl9tb3N0UmVjZW50VGFyZ2V0KSl9X3NldENsYXNzZXModCxlKXt0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstZm9jdXNlZCIsISFlKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstdG91Y2gtZm9jdXNlZCIsInRvdWNoIj09PWUpLHRoaXMuX3RvZ2dsZUNsYXNzKHQsImNkay1rZXlib2FyZC1mb2N1c2VkIiwia2V5Ym9hcmQiPT09ZSksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLW1vdXNlLWZvY3VzZWQiLCJtb3VzZSI9PT1lKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstcHJvZ3JhbS1mb2N1c2VkIiwicHJvZ3JhbSI9PT1lKX1fc2V0T3JpZ2luKHQsZT0hMSl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2lmKHRoaXMuX29yaWdpbj10LHRoaXMuX29yaWdpbkZyb21Ub3VjaEludGVyYWN0aW9uPSJ0b3VjaCI9PT10JiZlLDA9PT10aGlzLl9kZXRlY3Rpb25Nb2RlKXtjbGVhclRpbWVvdXQodGhpcy5fb3JpZ2luVGltZW91dElkKTt0aGlzLl9vcmlnaW5UaW1lb3V0SWQ9c2V0VGltZW91dCgoKCk9PnRoaXMuX29yaWdpbj1udWxsKSx0aGlzLl9vcmlnaW5Gcm9tVG91Y2hJbnRlcmFjdGlvbj82NTA6MSl9fSkpfV9vbkZvY3VzKHQsZSl7Y29uc3Qgbj10aGlzLl9lbGVtZW50SW5mby5nZXQoZSksbz1BSCh0KTtuJiYobi5jaGVja0NoaWxkcmVufHxlPT09bykmJnRoaXMuX29yaWdpbkNoYW5nZWQoZSx0aGlzLl9nZXRGb2N1c09yaWdpbihvKSxuKX1fb25CbHVyKHQsZSl7Y29uc3Qgbj10aGlzLl9lbGVtZW50SW5mby5nZXQoZSk7IW58fG4uY2hlY2tDaGlsZHJlbiYmdC5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgTm9kZSYmZS5jb250YWlucyh0LnJlbGF0ZWRUYXJnZXQpfHwodGhpcy5fc2V0Q2xhc3NlcyhlKSx0aGlzLl9lbWl0T3JpZ2luKG4uc3ViamVjdCxudWxsKSl9X2VtaXRPcmlnaW4odCxlKXt0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dC5uZXh0KGUpKSl9X3JlZ2lzdGVyR2xvYmFsTGlzdGVuZXJzKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuO2NvbnN0IGU9dC5yb290Tm9kZSxuPXRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmdldChlKXx8MDtufHx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57ZS5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcix2RiksZS5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLHZGKX0pKSx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5zZXQoZSxuKzEpLDE9PSsrdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50JiYodGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX2dldFdpbmRvdygpLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl93aW5kb3dGb2N1c0xpc3RlbmVyKX0pKSx0aGlzLl9pbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9kYWxpdHlEZXRlY3RlZC5waXBlKFVlKHRoaXMuX3N0b3BJbnB1dE1vZGFsaXR5RGV0ZWN0b3IpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9zZXRPcmlnaW4odCwhMCl9KSkpfV9yZW1vdmVHbG9iYWxMaXN0ZW5lcnModCl7Y29uc3QgZT10LnJvb3ROb2RlO2lmKHRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmhhcyhlKSl7Y29uc3QgdD10aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5nZXQoZSk7dD4xP3RoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LnNldChlLHQtMSk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsdkYpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcix2RiksdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuZGVsZXRlKGUpKX1pZighLS10aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnQpe3RoaXMuX2dldFdpbmRvdygpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl93aW5kb3dGb2N1c0xpc3RlbmVyKSx0aGlzLl9zdG9wSW5wdXRNb2RhbGl0eURldGVjdG9yLm5leHQoKSxjbGVhclRpbWVvdXQodGhpcy5fd2luZG93Rm9jdXNUaW1lb3V0SWQpLGNsZWFyVGltZW91dCh0aGlzLl9vcmlnaW5UaW1lb3V0SWQpfX1fb3JpZ2luQ2hhbmdlZCh0LGUsbil7dGhpcy5fc2V0Q2xhc3Nlcyh0LGUpLHRoaXMuX2VtaXRPcmlnaW4obi5zdWJqZWN0LGUpLHRoaXMuX2xhc3RGb2N1c09yaWdpbj1lfV9nZXRDbG9zZXN0RWxlbWVudHNJbmZvKHQpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMuX2VsZW1lbnRJbmZvLmZvckVhY2goKChuLG8pPT57KG89PT10fHxuLmNoZWNrQ2hpbGRyZW4mJm8uY29udGFpbnModCkpJiZlLnB1c2goW28sbl0pfSkpLGV9fXhGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4RikoVHIobUMpLFRyKF9IKSxUcihnRiksVHIoc00sOCksVHIoTUYsOCkpfSx4Ri7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgeEYoVHIobUMpLFRyKF9IKSxUcihnRiksVHIoc00sOCksVHIoTUYsOCkpfSx0b2tlbjp4Rixwcm92aWRlZEluOiJyb290In0pLHhGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTpnRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltNRl19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeEYsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm1DfSx7dHlwZTpfSH0se3R5cGU6Z0Z9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbTUZdfV19XX0pLG51bGwpO2NsYXNzIE9Ge2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2ZvY3VzTW9uaXRvcj1lLHRoaXMuY2RrRm9jdXNDaGFuZ2U9bmV3IFN5fW5nQWZ0ZXJWaWV3SW5pdCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX21vbml0b3JTdWJzY3JpcHRpb249dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodCwxPT09dC5ub2RlVHlwZSYmdC5oYXNBdHRyaWJ1dGUoImNka01vbml0b3JTdWJ0cmVlRm9jdXMiKSkuc3Vic2NyaWJlKCh0PT50aGlzLmNka0ZvY3VzQ2hhbmdlLmVtaXQodCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uJiZ0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fU9GLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPRikoZnUoS2gpLGZ1KHhGKSl9LE9GLsm1ZGlyPWhvKHt0eXBlOk9GLHNlbGVjdG9yczpbWyIiLCJjZGtNb25pdG9yRWxlbWVudEZvY3VzIiwiIl0sWyIiLCJjZGtNb25pdG9yU3VidHJlZUZvY3VzIiwiIl1dLG91dHB1dHM6e2Nka0ZvY3VzQ2hhbmdlOiJjZGtGb2N1c0NoYW5nZSJ9fSksT0YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6eEZ9XSxPRi5wcm9wRGVjb3JhdG9ycz17Y2RrRm9jdXNDaGFuZ2U6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoT0YsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka01vbml0b3JFbGVtZW50Rm9jdXNdLCBbY2RrTW9uaXRvclN1YnRyZWVGb2N1c10ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnhGfV19KSx7Y2RrRm9jdXNDaGFuZ2U6W3t0eXBlOkVffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFBGPSJjZGstaGlnaC1jb250cmFzdC1ibGFjay1vbi13aGl0ZSIsd0Y9ImNkay1oaWdoLWNvbnRyYXN0LXdoaXRlLW9uLWJsYWNrIixrRj0iY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIjtjbGFzcyBTRntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fZG9jdW1lbnQ9ZX1nZXRIaWdoQ29udHJhc3RNb2RlKCl7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm4gMDtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPSJyZ2IoMSwyLDMpIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3csbj1lJiZlLmdldENvbXB1dGVkU3R5bGU/ZS5nZXRDb21wdXRlZFN0eWxlKHQpOm51bGwsbz0obiYmbi5iYWNrZ3JvdW5kQ29sb3J8fCIiKS5yZXBsYWNlKC8gL2csIiIpO3N3aXRjaCh0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLG8pe2Nhc2UicmdiKDAsMCwwKSI6cmV0dXJuIDI7Y2FzZSJyZ2IoMjU1LDI1NSwyNTUpIjpyZXR1cm4gMX1yZXR1cm4gMH1fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKXtpZighdGhpcy5faGFzQ2hlY2tlZEhpZ2hDb250cmFzdE1vZGUmJnRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmdGhpcy5fZG9jdW1lbnQuYm9keSl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdDt0LnJlbW92ZShrRiksdC5yZW1vdmUoUEYpLHQucmVtb3ZlKHdGKSx0aGlzLl9oYXNDaGVja2VkSGlnaENvbnRyYXN0TW9kZT0hMDtjb25zdCBlPXRoaXMuZ2V0SGlnaENvbnRyYXN0TW9kZSgpOzE9PT1lPyh0LmFkZChrRiksdC5hZGQoUEYpKToyPT09ZSYmKHQuYWRkKGtGKSx0LmFkZCh3RikpfX19U0YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNGKShUcihfSCksVHIoc00pKX0sU0YuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFNGKFRyKF9IKSxUcihzTSkpfSx0b2tlbjpTRixwcm92aWRlZEluOiJyb290In0pLFNGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU0YsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgREZ7Y29uc3RydWN0b3IodCl7dC5fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKX19REYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fERGKShUcihTRikpfSxERi7JtW1vZD11byh7dHlwZTpERn0pLERGLsm1aW5qPURuKHtpbXBvcnRzOltbQ0gsSUhdXX0pLERGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U0Z9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERGLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbQ0gsSUhdLGRlY2xhcmF0aW9uczpbQ0YsZUYsT0ZdLGV4cG9ydHM6W0NGLGVGLE9GXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlNGfV19KSxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKERGLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bQ0YsZUYsT0ZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0NILElIXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltDRixlRixPRl19fSk7Y29uc3QgUkY9bmV3IGVyKCJjZGstZGlyLWRvYyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gRUYoKXtyZXR1cm4genIoc00pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi99KTtjbGFzcyBBRntjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnZhbHVlPSJsdHIiLHRoaXMuY2hhbmdlPW5ldyBTeSx0KXtjb25zdCBlPXQuZG9jdW1lbnRFbGVtZW50P3QuZG9jdW1lbnRFbGVtZW50LmRpcjpudWxsLG49KHQuYm9keT90LmJvZHkuZGlyOm51bGwpfHxlO3RoaXMudmFsdWU9Imx0ciI9PT1ufHwicnRsIj09PW4/bjoibHRyIn19bmdPbkRlc3Ryb3koKXt0aGlzLmNoYW5nZS5jb21wbGV0ZSgpfX1BRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QUYpKFRyKFJGLDgpKX0sQUYuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEFGKFRyKFJGLDgpKX0sdG9rZW46QUYscHJvdmlkZWRJbjoicm9vdCJ9KSxBRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbUkZdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFGLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1JGXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFRGe2NvbnN0cnVjdG9yKCl7dGhpcy5fZGlyPSJsdHIiLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5jaGFuZ2U9bmV3IFN5fWdldCBkaXIoKXtyZXR1cm4gdGhpcy5fZGlyfXNldCBkaXIodCl7Y29uc3QgZT10aGlzLl9kaXIsbj10P3QudG9Mb3dlckNhc2UoKTp0O3RoaXMuX3Jhd0Rpcj10LHRoaXMuX2Rpcj0ibHRyIj09PW58fCJydGwiPT09bj9uOiJsdHIiLGUhPT10aGlzLl9kaXImJnRoaXMuX2lzSW5pdGlhbGl6ZWQmJnRoaXMuY2hhbmdlLmVtaXQodGhpcy5fZGlyKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5kaXJ9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5faXNJbml0aWFsaXplZD0hMH1uZ09uRGVzdHJveSgpe3RoaXMuY2hhbmdlLmNvbXBsZXRlKCl9fVRGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxURil9LFRGLsm1ZGlyPWhvKHt0eXBlOlRGLHNlbGVjdG9yczpbWyIiLCJkaXIiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oImRpciIsbi5fcmF3RGlyKX0saW5wdXRzOntkaXI6ImRpciJ9LG91dHB1dHM6e2NoYW5nZToiZGlyQ2hhbmdlIn0sZXhwb3J0QXM6WyJkaXIiXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOkFGLHVzZUV4aXN0aW5nOlRGfV0pXX0pLFRGLnByb3BEZWNvcmF0b3JzPXtjaGFuZ2U6W3t0eXBlOkVfLGFyZ3M6WyJkaXJDaGFuZ2UiXX1dLGRpcjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihURixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZGlyXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpBRix1c2VFeGlzdGluZzpURn1dLGhvc3Q6eyJbYXR0ci5kaXJdIjoiX3Jhd0RpciJ9LGV4cG9ydEFzOiJkaXIifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtjaGFuZ2U6W3t0eXBlOkVfLGFyZ3M6WyJkaXJDaGFuZ2UiXX1dLGRpcjpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTkZ7fU5GLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxORil9LE5GLsm1bW9kPXVvKHt0eXBlOk5GfSksTkYuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTkYsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltURl0sZGVjbGFyYXRpb25zOltURl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhORix7ZGVjbGFyYXRpb25zOltURl0sZXhwb3J0czpbVEZdfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB6Rj1uZXcgb2IoIjEyLjIuMSIpLElGPVsiKiIsW1sibWF0LW9wdGlvbiJdLFsibmctY29udGFpbmVyIl1dXTtmdW5jdGlvbiBIRih0LGUpe2lmKDEmdCYmTXUoMCwibWF0LXBzZXVkby1jaGVja2JveCIsNCksMiZ0KXtjb25zdCB0PU51KCk7aHUoInN0YXRlIix0LnNlbGVjdGVkPyJjaGVja2VkIjoidW5jaGVja2VkIikoImRpc2FibGVkIix0LmRpc2FibGVkKX19ZnVuY3Rpb24gRkYodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiw1KSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxrZigiKCIsdC5ncm91cC5sYWJlbCwiKSIpfX1uZXcgb2IoIjEyLjIuMyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTEZ7fUxGLlNUQU5EQVJEX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSkiLExGLkRFQ0VMRVJBVElPTl9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpIixMRi5BQ0NFTEVSQVRJT05fQ1VSVkU9ImN1YmljLWJlemllcigwLjQsMC4wLDEsMSkiLExGLlNIQVJQX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwwLjYsMSkiO2NsYXNzIEJGe31CRi5DT01QTEVYPSIzNzVtcyIsQkYuRU5URVJJTkc9IjIyNW1zIixCRi5FWElUSU5HPSIxOTVtcyI7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBWRj1uZXcgb2IoIjEyLjIuMyIpO2NvbnN0IFVGPW5ldyBlcigibWF0LXNhbml0eS1jaGVja3MiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIGpGKCl7cmV0dXJuITB9fSk7Y2xhc3MgV0Z7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2hhc0RvbmVHbG9iYWxDaGVja3M9ITEsdGhpcy5fZG9jdW1lbnQ9bix0Ll9hcHBseUJvZHlIaWdoQ29udHJhc3RNb2RlQ3NzQ2xhc3NlcygpLHRoaXMuX3Nhbml0eUNoZWNrcz1lLHRoaXMuX2hhc0RvbmVHbG9iYWxDaGVja3N8fCh0aGlzLl9jaGVja0RvY3R5cGVJc0RlZmluZWQoKSx0aGlzLl9jaGVja1RoZW1lSXNQcmVzZW50KCksdGhpcy5fY2hlY2tDZGtWZXJzaW9uTWF0Y2goKSx0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzPSEwKX1fZ2V0V2luZG93KCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93O3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmdD90Om51bGx9X2NoZWNrSXNFbmFibGVkKHQpe3JldHVybiEoIVBDKCl8fHRoaXMuX2lzVGVzdEVudigpKSYmKCJib29sZWFuIj09dHlwZW9mIHRoaXMuX3Nhbml0eUNoZWNrcz90aGlzLl9zYW5pdHlDaGVja3M6ISF0aGlzLl9zYW5pdHlDaGVja3NbdF0pfV9pc1Rlc3RFbnYoKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3JldHVybiB0JiYodC5fX2thcm1hX198fHQuamFzbWluZSl9X2NoZWNrRG9jdHlwZUlzRGVmaW5lZCgpe3RoaXMuX2NoZWNrSXNFbmFibGVkKCJkb2N0eXBlIikmJiF0aGlzLl9kb2N1bWVudC5kb2N0eXBlJiZjb25zb2xlLndhcm4oIkN1cnJlbnQgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZSBhIGRvY3R5cGUuIFRoaXMgbWF5IGNhdXNlIHNvbWUgQW5ndWxhciBNYXRlcmlhbCBjb21wb25lbnRzIG5vdCB0byBiZWhhdmUgYXMgZXhwZWN0ZWQuIil9X2NoZWNrVGhlbWVJc1ByZXNlbnQoKXtpZighdGhpcy5fY2hlY2tJc0VuYWJsZWQoInRoZW1lIil8fCF0aGlzLl9kb2N1bWVudC5ib2R5fHwiZnVuY3Rpb24iIT10eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZSlyZXR1cm47Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTGlzdC5hZGQoIm1hdC10aGVtZS1sb2FkZWQtbWFya2VyIiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUodCk7ZSYmIm5vbmUiIT09ZS5kaXNwbGF5JiZjb25zb2xlLndhcm4oIkNvdWxkIG5vdCBmaW5kIEFuZ3VsYXIgTWF0ZXJpYWwgY29yZSB0aGVtZS4gTW9zdCBNYXRlcmlhbCBjb21wb25lbnRzIG1heSBub3Qgd29yayBhcyBleHBlY3RlZC4gRm9yIG1vcmUgaW5mbyByZWZlciB0byB0aGUgdGhlbWluZyBndWlkZTogaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2d1aWRlL3RoZW1pbmciKSx0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpfV9jaGVja0Nka1ZlcnNpb25NYXRjaCgpe3RoaXMuX2NoZWNrSXNFbmFibGVkKCJ2ZXJzaW9uIikmJlZGLmZ1bGwhPT16Ri5mdWxsJiZjb25zb2xlLndhcm4oIlRoZSBBbmd1bGFyIE1hdGVyaWFsIHZlcnNpb24gKCIrVkYuZnVsbCsiKSBkb2VzIG5vdCBtYXRjaCB0aGUgQW5ndWxhciBDREsgdmVyc2lvbiAoIit6Ri5mdWxsKyIpLlxuUGxlYXNlIGVuc3VyZSB0aGUgdmVyc2lvbnMgb2YgdGhlc2UgdHdvIHBhY2thZ2VzIGV4YWN0bHkgbWF0Y2guIil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gR0YodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9kaXNhYmxlZD0hMX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPXBIKHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFlGKHQsZSl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLmRlZmF1bHRDb2xvcj1lLHRoaXMuY29sb3I9ZX1nZXQgY29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3J9c2V0IGNvbG9yKHQpe2NvbnN0IGU9dHx8dGhpcy5kZWZhdWx0Q29sb3I7ZSE9PXRoaXMuX2NvbG9yJiYodGhpcy5fY29sb3ImJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGBtYXQtJHt0aGlzLl9jb2xvcn1gKSxlJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgbWF0LSR7ZX1gKSx0aGlzLl9jb2xvcj1lKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxRih0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX2Rpc2FibGVSaXBwbGU9ITF9Z2V0IGRpc2FibGVSaXBwbGUoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZVJpcHBsZX1zZXQgZGlzYWJsZVJpcHBsZSh0KXt0aGlzLl9kaXNhYmxlUmlwcGxlPXBIKHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFpGKHQsZT0wKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX3RhYkluZGV4PWUsdGhpcy5kZWZhdWx0VGFiSW5kZXg9ZX1nZXQgdGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD8tMTp0aGlzLl90YWJJbmRleH1zZXQgdGFiSW5kZXgodCl7dGhpcy5fdGFiSW5kZXg9bnVsbCE9dD9tSCh0KTp0aGlzLmRlZmF1bHRUYWJJbmRleH19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBYRih0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuc3RhdGVDaGFuZ2VzPW5ldyBCLHRoaXMuZXJyb3JTdGF0ZT0hMX11cGRhdGVFcnJvclN0YXRlKCl7Y29uc3QgdD10aGlzLmVycm9yU3RhdGUsZT0odGhpcy5lcnJvclN0YXRlTWF0Y2hlcnx8dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyKS5pc0Vycm9yU3RhdGUodGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wuY29udHJvbDpudWxsLHRoaXMuX3BhcmVudEZvcm1Hcm91cHx8dGhpcy5fcGFyZW50Rm9ybSk7ZSE9PXQmJih0aGlzLmVycm9yU3RhdGU9ZSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEtGKHQpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnM9W10sdGhpcy5pbml0aWFsaXplZD1uZXcgVCgodD0+e3RoaXMuX2lzSW5pdGlhbGl6ZWQ/dGhpcy5fbm90aWZ5U3Vic2NyaWJlcih0KTp0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnMucHVzaCh0KX0pKX1fbWFya0luaXRpYWxpemVkKCl7aWYodGhpcy5faXNJbml0aWFsaXplZCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJUaGlzIGRpcmVjdGl2ZSBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCBhcyBpbml0aWFsaXplZCBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdHdpY2UuIik7dGhpcy5faXNJbml0aWFsaXplZD0hMCx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnMuZm9yRWFjaCh0aGlzLl9ub3RpZnlTdWJzY3JpYmVyKSx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnM9bnVsbH1fbm90aWZ5U3Vic2NyaWJlcih0KXt0Lm5leHQoKSx0LmNvbXBsZXRlKCl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL1dGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXRikoVHIoU0YpLFRyKFVGLDgpLFRyKHNNKSl9LFdGLsm1bW9kPXVvKHt0eXBlOldGfSksV0YuybVpbmo9RG4oe2ltcG9ydHM6W1tORl0sTkZdfSksV0YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltVRl19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXRixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GXSxleHBvcnRzOltORl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltVRl19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFdGLHtpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05GXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltORl19fSk7Y29uc3QgSkY9bmV3IGVyKCJNQVRfREFURV9MT0NBTEUiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIFFGKCl7cmV0dXJuIHpyKFFfKX19KTtjbGFzcyAkRntjb25zdHJ1Y3Rvcigpe3RoaXMuX2xvY2FsZUNoYW5nZXM9bmV3IEIsdGhpcy5sb2NhbGVDaGFuZ2VzPXRoaXMuX2xvY2FsZUNoYW5nZXN9Z2V0VmFsaWREYXRlT3JOdWxsKHQpe3JldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHQpJiZ0aGlzLmlzVmFsaWQodCk/dDpudWxsfWRlc2VyaWFsaXplKHQpe3JldHVybiBudWxsPT10fHx0aGlzLmlzRGF0ZUluc3RhbmNlKHQpJiZ0aGlzLmlzVmFsaWQodCk/dDp0aGlzLmludmFsaWQoKX1zZXRMb2NhbGUodCl7dGhpcy5sb2NhbGU9dCx0aGlzLl9sb2NhbGVDaGFuZ2VzLm5leHQoKX1jb21wYXJlRGF0ZSh0LGUpe3JldHVybiB0aGlzLmdldFllYXIodCktdGhpcy5nZXRZZWFyKGUpfHx0aGlzLmdldE1vbnRoKHQpLXRoaXMuZ2V0TW9udGgoZSl8fHRoaXMuZ2V0RGF0ZSh0KS10aGlzLmdldERhdGUoZSl9c2FtZURhdGUodCxlKXtpZih0JiZlKXtsZXQgbj10aGlzLmlzVmFsaWQodCksbz10aGlzLmlzVmFsaWQoZSk7cmV0dXJuIG4mJm8/IXRoaXMuY29tcGFyZURhdGUodCxlKTpuPT1vfXJldHVybiB0PT1lfWNsYW1wRGF0ZSh0LGUsbil7cmV0dXJuIGUmJnRoaXMuY29tcGFyZURhdGUodCxlKTwwP2U6biYmdGhpcy5jb21wYXJlRGF0ZSh0LG4pPjA/bjp0fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgdEw9bmV3IGVyKCJtYXQtZGF0ZS1mb3JtYXRzIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBlTDt0cnl7ZUw9InVuZGVmaW5lZCIhPXR5cGVvZiBJbnRsfWNhdGNoKFVDdCl7ZUw9ITF9Y29uc3Qgbkw9e2xvbmc6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sbmFycm93OlsiSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl19LG9MPXJMKDMxLCh0PT5TdHJpbmcodCsxKSkpLGlMPXtsb25nOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG5hcnJvdzpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXX0sYUw9L15cZHs0fS1cZHsyfS1cZHsyfSg/OlRcZHsyfTpcZHsyfTpcZHsyfSg/OlwuXGQrKT8oPzpafCg/Oig/OlwrfC0pXGR7Mn06XGR7Mn0pKT8pPyQvO2Z1bmN0aW9uIHJMKHQsZSl7Y29uc3Qgbj1BcnJheSh0KTtmb3IobGV0IG89MDtvPHQ7bysrKW5bb109ZShvKTtyZXR1cm4gbn1jbGFzcyBzTCBleHRlbmRzICRGe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnVzZVV0Y0ZvckRpc3BsYXk9ITAsc3VwZXIuc2V0TG9jYWxlKHQpLHRoaXMudXNlVXRjRm9yRGlzcGxheT0hZS5UUklERU5ULHRoaXMuX2NsYW1wRGF0ZT1lLlRSSURFTlR8fGUuRURHRX1nZXRZZWFyKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9Z2V0TW9udGgodCl7cmV0dXJuIHQuZ2V0TW9udGgoKX1nZXREYXRlKHQpe3JldHVybiB0LmdldERhdGUoKX1nZXREYXlPZldlZWsodCl7cmV0dXJuIHQuZ2V0RGF5KCl9Z2V0TW9udGhOYW1lcyh0KXtpZihlTCl7Y29uc3QgZT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSx7bW9udGg6dCx0aW1lWm9uZToidXRjIn0pO3JldHVybiByTCgxMiwodD0+dGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsbmV3IERhdGUoMjAxNyx0LDEpKSkpKX1yZXR1cm4gbkxbdF19Z2V0RGF0ZU5hbWVzKCl7aWYoZUwpe2NvbnN0IHQ9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUse2RheToibnVtZXJpYyIsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gckwoMzEsKGU9PnRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdCh0LG5ldyBEYXRlKDIwMTcsMCxlKzEpKSkpKX1yZXR1cm4gb0x9Z2V0RGF5T2ZXZWVrTmFtZXModCl7aWYoZUwpe2NvbnN0IGU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUse3dlZWtkYXk6dCx0aW1lWm9uZToidXRjIn0pO3JldHVybiByTCg3LCh0PT50aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZSxuZXcgRGF0ZSgyMDE3LDAsdCsxKSkpKSl9cmV0dXJuIGlMW3RdfWdldFllYXJOYW1lKHQpe2lmKGVMKXtjb25zdCBlPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHt5ZWFyOiJudW1lcmljIix0aW1lWm9uZToidXRjIn0pO3JldHVybiB0aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZSx0KSl9cmV0dXJuIFN0cmluZyh0aGlzLmdldFllYXIodCkpfWdldEZpcnN0RGF5T2ZXZWVrKCl7cmV0dXJuIDB9Z2V0TnVtRGF5c0luTW9udGgodCl7cmV0dXJuIHRoaXMuZ2V0RGF0ZSh0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcih0KSx0aGlzLmdldE1vbnRoKHQpKzEsMCkpfWNsb25lKHQpe3JldHVybiBuZXcgRGF0ZSh0LmdldFRpbWUoKSl9Y3JlYXRlRGF0ZSh0LGUsbil7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl7aWYoZTwwfHxlPjExKXRocm93IEVycm9yKGBJbnZhbGlkIG1vbnRoIGluZGV4ICIke2V9Ii4gTW9udGggaW5kZXggaGFzIHRvIGJlIGJldHdlZW4gMCBhbmQgMTEuYCk7aWYobjwxKXRocm93IEVycm9yKGBJbnZhbGlkIGRhdGUgIiR7bn0iLiBEYXRlIGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKX1sZXQgbz10aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHQsZSxuKTtpZihvLmdldE1vbnRoKCkhPWUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlICIke259IiBmb3IgbW9udGggd2l0aCBpbmRleCAiJHtlfSIuYCk7cmV0dXJuIG99dG9kYXkoKXtyZXR1cm4gbmV3IERhdGV9cGFyc2UodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P25ldyBEYXRlKHQpOnQ/bmV3IERhdGUoRGF0ZS5wYXJzZSh0KSk6bnVsbH1mb3JtYXQodCxlKXtpZighdGhpcy5pc1ZhbGlkKHQpKXRocm93IEVycm9yKCJOYXRpdmVEYXRlQWRhcHRlcjogQ2Fubm90IGZvcm1hdCBpbnZhbGlkIGRhdGUuIik7aWYoZUwpe3RoaXMuX2NsYW1wRGF0ZSYmKHQuZ2V0RnVsbFllYXIoKTwxfHx0LmdldEZ1bGxZZWFyKCk+OTk5OSkmJih0PXRoaXMuY2xvbmUodCkpLnNldEZ1bGxZZWFyKE1hdGgubWF4KDEsTWF0aC5taW4oOTk5OSx0LmdldEZ1bGxZZWFyKCkpKSksZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3RpbWVab25lOiJ1dGMifSk7Y29uc3Qgbj1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSxlKTtyZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KG4sdCkpfXJldHVybiB0aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0LnRvRGF0ZVN0cmluZygpKX1hZGRDYWxlbmRhclllYXJzKHQsZSl7cmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHModCwxMiplKX1hZGRDYWxlbmRhck1vbnRocyh0LGUpe2xldCBuPXRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKHQpLHRoaXMuZ2V0TW9udGgodCkrZSx0aGlzLmdldERhdGUodCkpO3JldHVybiB0aGlzLmdldE1vbnRoKG4pIT0oKHRoaXMuZ2V0TW9udGgodCkrZSklMTIrMTIpJTEyJiYobj10aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcihuKSx0aGlzLmdldE1vbnRoKG4pLDApKSxufWFkZENhbGVuZGFyRGF5cyh0LGUpe3JldHVybiB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcih0KSx0aGlzLmdldE1vbnRoKHQpLHRoaXMuZ2V0RGF0ZSh0KStlKX10b0lzbzg2MDEodCl7cmV0dXJuW3QuZ2V0VVRDRnVsbFllYXIoKSx0aGlzLl8yZGlnaXQodC5nZXRVVENNb250aCgpKzEpLHRoaXMuXzJkaWdpdCh0LmdldFVUQ0RhdGUoKSldLmpvaW4oIi0iKX1kZXNlcmlhbGl6ZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKCF0KXJldHVybiBudWxsO2lmKGFMLnRlc3QodCkpe2xldCBlPW5ldyBEYXRlKHQpO2lmKHRoaXMuaXNWYWxpZChlKSlyZXR1cm4gZX19cmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplKHQpfWlzRGF0ZUluc3RhbmNlKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZX1pc1ZhbGlkKHQpe3JldHVybiFpc05hTih0LmdldFRpbWUoKSl9aW52YWxpZCgpe3JldHVybiBuZXcgRGF0ZShOYU4pfV9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHQsZSxuKXtjb25zdCBvPW5ldyBEYXRlO3JldHVybiBvLnNldEZ1bGxZZWFyKHQsZSxuKSxvLnNldEhvdXJzKDAsMCwwLDApLG99XzJkaWdpdCh0KXtyZXR1cm4oIjAwIit0KS5zbGljZSgtMil9X3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHQpe3JldHVybiB0LnJlcGxhY2UoL1tcdTIwMGVcdTIwMGZdL2csIiIpfV9mb3JtYXQodCxlKXtjb25zdCBuPW5ldyBEYXRlO3JldHVybiBuLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCkpLG4uc2V0VVRDSG91cnMoZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpLHQuZm9ybWF0KG4pfX1zTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c0wpKFRyKEpGLDgpLFRyKF9IKSl9LHNMLsm1cHJvdj1Tbih7dG9rZW46c0wsZmFjdG9yeTpzTC7JtWZhY30pLHNMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltKRl19XX0se3R5cGU6X0h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHNMLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0pGXX1dfSx7dHlwZTpfSH1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBsTHt9bEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxMKX0sbEwuybVtb2Q9dW8oe3R5cGU6bEx9KSxsTC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTokRix1c2VDbGFzczpzTH1dLGltcG9ydHM6W1tDSF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0NIXSxwcm92aWRlcnM6W3twcm92aWRlOiRGLHVzZUNsYXNzOnNMfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhsTCx7aW1wb3J0czpmdW5jdGlvbigpe3JldHVybltDSF19fSk7Y29uc3QgY0w9e3BhcnNlOntkYXRlSW5wdXQ6bnVsbH0sZGlzcGxheTp7ZGF0ZUlucHV0Ont5ZWFyOiJudW1lcmljIixtb250aDoibnVtZXJpYyIsZGF5OiJudW1lcmljIn0sbW9udGhZZWFyTGFiZWw6e3llYXI6Im51bWVyaWMiLG1vbnRoOiJzaG9ydCJ9LGRhdGVBMTF5TGFiZWw6e3llYXI6Im51bWVyaWMiLG1vbnRoOiJsb25nIixkYXk6Im51bWVyaWMifSxtb250aFllYXJBMTF5TGFiZWw6e3llYXI6Im51bWVyaWMiLG1vbnRoOiJsb25nIn19fTtjbGFzcyBkTHt9ZEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRMKX0sZEwuybVtb2Q9dW8oe3R5cGU6ZEx9KSxkTC7JtWluaj1Ebih7cHJvdmlkZXJzOlt7cHJvdmlkZTp0TCx1c2VWYWx1ZTpjTH1dLGltcG9ydHM6W1tsTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2xMXSxwcm92aWRlcnM6W3twcm92aWRlOnRMLHVzZVZhbHVlOmNMfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhkTCx7aW1wb3J0czpbbExdfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBwTHtpc0Vycm9yU3RhdGUodCxlKXtyZXR1cm4hISh0JiZ0LmludmFsaWQmJih0LmRpcnR5fHxlJiZlLnN1Ym1pdHRlZCkpfX1wTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cEwpfSxwTC7JtXByb3Y9U24oe3Rva2VuOnBMLGZhY3Rvcnk6cEwuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHBMLFt7dHlwZTpqbX1dLG51bGwsbnVsbCk7Y2xhc3MgbUx7aXNFcnJvclN0YXRlKHQsZSl7cmV0dXJuISEodCYmdC5pbnZhbGlkJiYodC50b3VjaGVkfHxlJiZlLnN1Ym1pdHRlZCkpfX1tTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bUwpfSxtTC7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbUx9LHRva2VuOm1MLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtTCxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdUx7fXVMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1TCl9LHVMLsm1ZGlyPWhvKHt0eXBlOnVMLHNlbGVjdG9yczpbWyIiLCJtYXQtbGluZSIsIiJdLFsiIiwibWF0TGluZSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1saW5lIl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVMLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtbGluZV0sIFttYXRMaW5lXSIsaG9zdDp7Y2xhc3M6Im1hdC1saW5lIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgZkx7fWZMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmTCl9LGZMLsm1bW9kPXVvKHt0eXBlOmZMfSksZkwuybVpbmo9RG4oe2ltcG9ydHM6W1tXRl0sV0ZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1dGXSxleHBvcnRzOlt1TCxXRl0sZGVjbGFyYXRpb25zOlt1TF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhmTCx7ZGVjbGFyYXRpb25zOlt1TF0saW1wb3J0czpbV0ZdLGV4cG9ydHM6W3VMLFdGXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZ0x7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5lbGVtZW50PWUsdGhpcy5jb25maWc9bix0aGlzLnN0YXRlPTN9ZmFkZU91dCgpe3RoaXMuX3JlbmRlcmVyLmZhZGVPdXRSaXBwbGUodGhpcyl9fWNvbnN0IGhMPXtlbnRlckR1cmF0aW9uOjIyNSxleGl0RHVyYXRpb246MTUwfSxiTD1rSCh7cGFzc2l2ZTohMH0pLHlMPVsibW91c2Vkb3duIiwidG91Y2hzdGFydCJdLF9MPVsibW91c2V1cCIsIm1vdXNlbGVhdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIl07Y2xhc3MgQ0x7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fdGFyZ2V0PXQsdGhpcy5fbmdab25lPWUsdGhpcy5faXNQb2ludGVyRG93bj0hMSx0aGlzLl9hY3RpdmVSaXBwbGVzPW5ldyBTZXQsdGhpcy5fcG9pbnRlclVwRXZlbnRzUmVnaXN0ZXJlZD0hMSxvLmlzQnJvd3NlciYmKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQ9aEgobikpfWZhZGVJblJpcHBsZSh0LGUsbj17fSl7Y29uc3Qgbz10aGlzLl9jb250YWluZXJSZWN0PXRoaXMuX2NvbnRhaW5lclJlY3R8fHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saEwpLG4uYW5pbWF0aW9uKTtuLmNlbnRlcmVkJiYodD1vLmxlZnQrby53aWR0aC8yLGU9by50b3Arby5oZWlnaHQvMik7Y29uc3QgYT1uLnJhZGl1c3x8KGZ1bmN0aW9uIHIodCxlLG4pe2NvbnN0IG89TWF0aC5tYXgoTWF0aC5hYnModC1uLmxlZnQpLE1hdGguYWJzKHQtbi5yaWdodCkpLGk9TWF0aC5tYXgoTWF0aC5hYnMoZS1uLnRvcCksTWF0aC5hYnMoZS1uLmJvdHRvbSkpO3JldHVybiBNYXRoLnNxcnQobypvK2kqaSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCxlLG8pLHM9dC1vLmxlZnQsbD1lLW8udG9wLGM9aS5lbnRlckR1cmF0aW9uLGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc0xpc3QuYWRkKCJtYXQtcmlwcGxlLWVsZW1lbnQiKSxkLnN0eWxlLmxlZnQ9cy1hKyJweCIsZC5zdHlsZS50b3A9bC1hKyJweCIsZC5zdHlsZS5oZWlnaHQ9MiphKyJweCIsZC5zdHlsZS53aWR0aD0yKmErInB4IixudWxsIT1uLmNvbG9yJiYoZC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9bi5jb2xvciksZC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249YCR7Y31tc2AsdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChkKSwoZnVuY3Rpb24gcCh0KXt3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKCJvcGFjaXR5Iil9KShkKSxkLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUoMSkiO2NvbnN0IG09bmV3IGdMKHRoaXMsZCxuKTtyZXR1cm4gbS5zdGF0ZT0wLHRoaXMuX2FjdGl2ZVJpcHBsZXMuYWRkKG0pLG4ucGVyc2lzdGVudHx8KHRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGU9bSksdGhpcy5fcnVuVGltZW91dE91dHNpZGVab25lKCgoKT0+e2NvbnN0IHQ9bT09PXRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGU7bS5zdGF0ZT0xLG4ucGVyc2lzdGVudHx8dCYmdGhpcy5faXNQb2ludGVyRG93bnx8bS5mYWRlT3V0KCl9KSxjKSxtfWZhZGVPdXRSaXBwbGUodCl7Y29uc3QgZT10aGlzLl9hY3RpdmVSaXBwbGVzLmRlbGV0ZSh0KTtpZih0PT09dGhpcy5fbW9zdFJlY2VudFRyYW5zaWVudFJpcHBsZSYmKHRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGU9bnVsbCksdGhpcy5fYWN0aXZlUmlwcGxlcy5zaXplfHwodGhpcy5fY29udGFpbmVyUmVjdD1udWxsKSwhZSlyZXR1cm47Y29uc3Qgbj10LmVsZW1lbnQsbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saEwpLHQuY29uZmlnLmFuaW1hdGlvbik7bi5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249YCR7by5leGl0RHVyYXRpb259bXNgLG4uc3R5bGUub3BhY2l0eT0iMCIsdC5zdGF0ZT0yLHRoaXMuX3J1blRpbWVvdXRPdXRzaWRlWm9uZSgoKCk9Pnt0LnN0YXRlPTMsbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pfSksby5leGl0RHVyYXRpb24pfWZhZGVPdXRBbGwoKXt0aGlzLl9hY3RpdmVSaXBwbGVzLmZvckVhY2goKHQ9PnQuZmFkZU91dCgpKSl9ZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKXt0aGlzLl9hY3RpdmVSaXBwbGVzLmZvckVhY2goKHQ9Pnt0LmNvbmZpZy5wZXJzaXN0ZW50fHx0LmZhZGVPdXQoKX0pKX1zZXR1cFRyaWdnZXJFdmVudHModCl7Y29uc3QgZT1oSCh0KTtlJiZlIT09dGhpcy5fdHJpZ2dlckVsZW1lbnQmJih0aGlzLl9yZW1vdmVUcmlnZ2VyRXZlbnRzKCksdGhpcy5fdHJpZ2dlckVsZW1lbnQ9ZSx0aGlzLl9yZWdpc3RlckV2ZW50cyh5TCkpfWhhbmRsZUV2ZW50KHQpeyJtb3VzZWRvd24iPT09dC50eXBlP3RoaXMuX29uTW91c2Vkb3duKHQpOiJ0b3VjaHN0YXJ0Ij09PXQudHlwZT90aGlzLl9vblRvdWNoU3RhcnQodCk6dGhpcy5fb25Qb2ludGVyVXAoKSx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkfHwodGhpcy5fcmVnaXN0ZXJFdmVudHMoX0wpLHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQ9ITApfV9vbk1vdXNlZG93bih0KXtjb25zdCBlPWRGKHQpLG49dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudCYmRGF0ZS5ub3coKTx0aGlzLl9sYXN0VG91Y2hTdGFydEV2ZW50KzgwMDt0aGlzLl90YXJnZXQucmlwcGxlRGlzYWJsZWR8fGV8fG58fCh0aGlzLl9pc1BvaW50ZXJEb3duPSEwLHRoaXMuZmFkZUluUmlwcGxlKHQuY2xpZW50WCx0LmNsaWVudFksdGhpcy5fdGFyZ2V0LnJpcHBsZUNvbmZpZykpfV9vblRvdWNoU3RhcnQodCl7aWYoIXRoaXMuX3RhcmdldC5yaXBwbGVEaXNhYmxlZCYmIXBGKHQpKXt0aGlzLl9sYXN0VG91Y2hTdGFydEV2ZW50PURhdGUubm93KCksdGhpcy5faXNQb2ludGVyRG93bj0hMDtjb25zdCBlPXQuY2hhbmdlZFRvdWNoZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5mYWRlSW5SaXBwbGUoZVt0XS5jbGllbnRYLGVbdF0uY2xpZW50WSx0aGlzLl90YXJnZXQucmlwcGxlQ29uZmlnKX19X29uUG9pbnRlclVwKCl7dGhpcy5faXNQb2ludGVyRG93biYmKHRoaXMuX2lzUG9pbnRlckRvd249ITEsdGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT57IXQuY29uZmlnLnBlcnNpc3RlbnQmJigxPT09dC5zdGF0ZXx8dC5jb25maWcudGVybWluYXRlT25Qb2ludGVyVXAmJjA9PT10LnN0YXRlKSYmdC5mYWRlT3V0KCl9KSkpfV9ydW5UaW1lb3V0T3V0c2lkZVpvbmUodCxlPTApe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnNldFRpbWVvdXQodCxlKSkpfV9yZWdpc3RlckV2ZW50cyh0KXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5mb3JFYWNoKCh0PT57dGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LHRoaXMsYkwpfSkpfSkpfV9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl7dGhpcy5fdHJpZ2dlckVsZW1lbnQmJih5TC5mb3JFYWNoKCh0PT57dGhpcy5fdHJpZ2dlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHRoaXMsYkwpfSkpLHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQmJl9MLmZvckVhY2goKHQ9Pnt0aGlzLl90cmlnZ2VyRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHQsdGhpcyxiTCl9KSkpfX1jb25zdCBNTD1uZXcgZXIoIm1hdC1yaXBwbGUtZ2xvYmFsLW9wdGlvbnMiKTtjbGFzcyB2THtjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9hbmltYXRpb25Nb2RlPWksdGhpcy5yYWRpdXM9MCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9pc0luaXRpYWxpemVkPSExLHRoaXMuX2dsb2JhbE9wdGlvbnM9b3x8e30sdGhpcy5fcmlwcGxlUmVuZGVyZXI9bmV3IENMKHRoaXMsZSx0LG4pfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dCYmdGhpcy5mYWRlT3V0QWxsTm9uUGVyc2lzdGVudCgpLHRoaXMuX2Rpc2FibGVkPXQsdGhpcy5fc2V0dXBUcmlnZ2VyRXZlbnRzSWZFbmFibGVkKCl9Z2V0IHRyaWdnZXIoKXtyZXR1cm4gdGhpcy5fdHJpZ2dlcnx8dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fXNldCB0cmlnZ2VyKHQpe3RoaXMuX3RyaWdnZXI9dCx0aGlzLl9zZXR1cFRyaWdnZXJFdmVudHNJZkVuYWJsZWQoKX1uZ09uSW5pdCgpe3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5fc2V0dXBUcmlnZ2VyRXZlbnRzSWZFbmFibGVkKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yaXBwbGVSZW5kZXJlci5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpfWZhZGVPdXRBbGwoKXt0aGlzLl9yaXBwbGVSZW5kZXJlci5mYWRlT3V0QWxsKCl9ZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKXt0aGlzLl9yaXBwbGVSZW5kZXJlci5mYWRlT3V0QWxsTm9uUGVyc2lzdGVudCgpfWdldCByaXBwbGVDb25maWcoKXtyZXR1cm57Y2VudGVyZWQ6dGhpcy5jZW50ZXJlZCxyYWRpdXM6dGhpcy5yYWRpdXMsY29sb3I6dGhpcy5jb2xvcixhbmltYXRpb246T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fZ2xvYmFsT3B0aW9ucy5hbmltYXRpb24pLCJOb29wQW5pbWF0aW9ucyI9PT10aGlzLl9hbmltYXRpb25Nb2RlP3tlbnRlckR1cmF0aW9uOjAsZXhpdER1cmF0aW9uOjB9Ont9KSx0aGlzLmFuaW1hdGlvbiksdGVybWluYXRlT25Qb2ludGVyVXA6dGhpcy5fZ2xvYmFsT3B0aW9ucy50ZXJtaW5hdGVPblBvaW50ZXJVcH19Z2V0IHJpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fCEhdGhpcy5fZ2xvYmFsT3B0aW9ucy5kaXNhYmxlZH1fc2V0dXBUcmlnZ2VyRXZlbnRzSWZFbmFibGVkKCl7IXRoaXMuZGlzYWJsZWQmJnRoaXMuX2lzSW5pdGlhbGl6ZWQmJnRoaXMuX3JpcHBsZVJlbmRlcmVyLnNldHVwVHJpZ2dlckV2ZW50cyh0aGlzLnRyaWdnZXIpfWxhdW5jaCh0LGU9MCxuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZUluUmlwcGxlKHQsZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yaXBwbGVDb25maWcpLG4pKTp0aGlzLl9yaXBwbGVSZW5kZXJlci5mYWRlSW5SaXBwbGUoMCwwLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnJpcHBsZUNvbmZpZyksdCkpfX12TC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dkwpKGZ1KEtoKSxmdShtQyksZnUoX0gpLGZ1KE1MLDgpLGZ1KGNrLDgpKX0sdkwuybVkaXI9aG8oe3R5cGU6dkwsc2VsZWN0b3JzOltbIiIsIm1hdC1yaXBwbGUiLCIiXSxbIiIsIm1hdFJpcHBsZSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1yaXBwbGUiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigibWF0LXJpcHBsZS11bmJvdW5kZWQiLG4udW5ib3VuZGVkKX0saW5wdXRzOntyYWRpdXM6WyJtYXRSaXBwbGVSYWRpdXMiLCJyYWRpdXMiXSxkaXNhYmxlZDpbIm1hdFJpcHBsZURpc2FibGVkIiwiZGlzYWJsZWQiXSx0cmlnZ2VyOlsibWF0UmlwcGxlVHJpZ2dlciIsInRyaWdnZXIiXSxjb2xvcjpbIm1hdFJpcHBsZUNvbG9yIiwiY29sb3IiXSx1bmJvdW5kZWQ6WyJtYXRSaXBwbGVVbmJvdW5kZWQiLCJ1bmJvdW5kZWQiXSxjZW50ZXJlZDpbIm1hdFJpcHBsZUNlbnRlcmVkIiwiY2VudGVyZWQiXSxhbmltYXRpb246WyJtYXRSaXBwbGVBbmltYXRpb24iLCJhbmltYXRpb24iXX0sZXhwb3J0QXM6WyJtYXRSaXBwbGUiXX0pLHZMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpfSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltNTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLHZMLnByb3BEZWNvcmF0b3JzPXtjb2xvcjpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZUNvbG9yIl19XSx1bmJvdW5kZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVVbmJvdW5kZWQiXX1dLGNlbnRlcmVkOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlQ2VudGVyZWQiXX1dLHJhZGl1czpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZVJhZGl1cyJdfV0sYW5pbWF0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlQW5pbWF0aW9uIl19XSxkaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZURpc2FibGVkIl19XSx0cmlnZ2VyOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlVHJpZ2dlciJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodkwsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1yaXBwbGVdLCBbbWF0UmlwcGxlXSIsZXhwb3J0QXM6Im1hdFJpcHBsZSIsaG9zdDp7Y2xhc3M6Im1hdC1yaXBwbGUiLCJbY2xhc3MubWF0LXJpcHBsZS11bmJvdW5kZWRdIjoidW5ib3VuZGVkIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W01MXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7cmFkaXVzOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlUmFkaXVzIl19XSxkaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZURpc2FibGVkIl19XSx0cmlnZ2VyOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlVHJpZ2dlciJdfV0sY29sb3I6W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVDb2xvciJdfV0sdW5ib3VuZGVkOlt7dHlwZTpSXyxhcmdzOlsibWF0UmlwcGxlVW5ib3VuZGVkIl19XSxjZW50ZXJlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFJpcHBsZUNlbnRlcmVkIl19XSxhbmltYXRpb246W3t0eXBlOlJfLGFyZ3M6WyJtYXRSaXBwbGVBbmltYXRpb24iXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB4THt9eEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhMKX0seEwuybVtb2Q9dW8oe3R5cGU6eEx9KSx4TC7JtWluaj1Ebih7aW1wb3J0czpbW1dGLENIXSxXRl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHhMLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbV0YsQ0hdLGV4cG9ydHM6W3ZMLFdGXSxkZWNsYXJhdGlvbnM6W3ZMXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHhMLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bdkxdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dGLENIXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt2TCxXRl19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBPTHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9hbmltYXRpb25Nb2RlPXQsdGhpcy5zdGF0ZT0idW5jaGVja2VkIix0aGlzLmRpc2FibGVkPSExfX1PTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T0wpKGZ1KGNrLDgpKX0sT0wuybVjbXA9c28oe3R5cGU6T0wsc2VsZWN0b3JzOltbIm1hdC1wc2V1ZG8tY2hlY2tib3giXV0saG9zdEF0dHJzOlsxLCJtYXQtcHNldWRvLWNoZWNrYm94Il0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY2YoIm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSIsImluZGV0ZXJtaW5hdGUiPT09bi5zdGF0ZSkoIm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCIsImNoZWNrZWQiPT09bi5zdGF0ZSkoIm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpfSxpbnB1dHM6e3N0YXRlOiJzdGF0ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIn0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sc3R5bGVzOlsnLm1hdC1wc2V1ZG8tY2hlY2tib3h7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXI6MnB4IHNvbGlkO2JvcmRlci1yYWRpdXM6MnB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksYmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtjb250ZW50OiIiO2JvcmRlci1ib3R0b206MnB4IHNvbGlkIGN1cnJlbnRDb2xvcjt0cmFuc2l0aW9uOm9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHNldWRvLWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGU6OmFmdGVye3RvcDo1cHg7bGVmdDoxcHg7d2lkdGg6MTBweDtvcGFjaXR5OjE7Ym9yZGVyLXJhZGl1czoycHh9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZDo6YWZ0ZXJ7dG9wOjIuNHB4O2xlZnQ6MXB4O3dpZHRoOjhweDtoZWlnaHQ6M3B4O2JvcmRlci1sZWZ0OjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MTtib3gtc2l6aW5nOmNvbnRlbnQtYm94fVxuJ10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksT0wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sT0wucHJvcERlY29yYXRvcnM9e3N0YXRlOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9MLFt7dHlwZTpTXyxhcmdzOlt7ZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsc2VsZWN0b3I6Im1hdC1wc2V1ZG8tY2hlY2tib3giLHRlbXBsYXRlOiIiLGhvc3Q6e2NsYXNzOiJtYXQtcHNldWRvLWNoZWNrYm94IiwiW2NsYXNzLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV0iOidzdGF0ZSA9PT0gImluZGV0ZXJtaW5hdGUiJywiW2NsYXNzLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZF0iOidzdGF0ZSA9PT0gImNoZWNrZWQiJywiW2NsYXNzLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjonX2FuaW1hdGlvbk1vZGUgPT09ICJOb29wQW5pbWF0aW9ucyInfSxzdHlsZXM6WycubWF0LXBzZXVkby1jaGVja2JveHt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2JvcmRlcjoycHggc29saWQ7Ym9yZGVyLXJhZGl1czoycHg7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKSxiYWNrZ3JvdW5kLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0ubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO2NvbnRlbnQ6IiI7Ym9yZGVyLWJvdHRvbToycHggc29saWQgY3VycmVudENvbG9yO3RyYW5zaXRpb246b3BhY2l0eSA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9Lm1hdC1wc2V1ZG8tY2hlY2tib3gubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHNldWRvLWNoZWNrYm94Lm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wc2V1ZG8tY2hlY2tib3h7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcnt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZTo6YWZ0ZXJ7dG9wOjVweDtsZWZ0OjFweDt3aWR0aDoxMHB4O29wYWNpdHk6MTtib3JkZXItcmFkaXVzOjJweH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkOjphZnRlcnt0b3A6Mi40cHg7bGVmdDoxcHg7d2lkdGg6OHB4O2hlaWdodDozcHg7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkIGN1cnJlbnRDb2xvcjt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7b3BhY2l0eToxO2JveC1zaXppbmc6Y29udGVudC1ib3h9XG4nXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtzdGF0ZTpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUEx7fVBMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQTCl9LFBMLsm1bW9kPXVvKHt0eXBlOlBMfSksUEwuybVpbmo9RG4oe2ltcG9ydHM6W1tXRl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQTCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1dGXSxleHBvcnRzOltPTF0sZGVjbGFyYXRpb25zOltPTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhQTCx7ZGVjbGFyYXRpb25zOltPTF0saW1wb3J0czpbV0ZdLGV4cG9ydHM6W09MXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgd0w9bmV3IGVyKCJNQVRfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQiKSxrTD1HRihjbGFzc3t9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IFNMPTA7Y2xhc3MgREwgZXh0ZW5kcyBrTHtjb25zdHJ1Y3Rvcih0KXt2YXIgZTtzdXBlcigpLHRoaXMuX2xhYmVsSWQ9Im1hdC1vcHRncm91cC1sYWJlbC0iK1NMKyssdGhpcy5faW5lcnQ9bnVsbCE9PShlPW51bGw9PXQ/dm9pZCAwOnQuaW5lcnRHcm91cHMpJiZ2b2lkIDAhPT1lJiZlfX1ETC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8REwpKGZ1KHdMLDgpKX0sREwuybVkaXI9aG8oe3R5cGU6REwsaW5wdXRzOntsYWJlbDoibGFiZWwifSxmZWF0dXJlczpbUXBdfSksREwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd0xdfSx7dHlwZTpCcn1dfV0sREwucHJvcERlY29yYXRvcnM9e2xhYmVsOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERMLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd0xdfSx7dHlwZTpCcn1dfV19KSx7bGFiZWw6W3t0eXBlOlJffV19KTtjb25zdCBSTD1uZXcgZXIoIk1hdE9wdGdyb3VwIik7Y2xhc3MgRUwgZXh0ZW5kcyBETHt9RUwuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKEVMKSkpKG58fEVMKX19KSgpLEVMLsm1Y21wPXNvKHt0eXBlOkVMLHNlbGVjdG9yczpbWyJtYXQtb3B0Z3JvdXAiXV0saG9zdEF0dHJzOlsxLCJtYXQtb3B0Z3JvdXAiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oInJvbGUiLG4uX2luZXJ0P251bGw6Imdyb3VwIikoImFyaWEtZGlzYWJsZWQiLG4uX2luZXJ0P251bGw6bi5kaXNhYmxlZC50b1N0cmluZygpKSgiYXJpYS1sYWJlbGxlZGJ5IixuLl9pbmVydD9udWxsOm4uX2xhYmVsSWQpLGNmKCJtYXQtb3B0Z3JvdXAtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxleHBvcnRBczpbIm1hdE9wdGdyb3VwIl0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpSTCx1c2VFeGlzdGluZzpFTH1dKSxRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiIsIm1hdC1vcHRpb24sIG5nLWNvbnRhaW5lciJdLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWyJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1hdC1vcHRncm91cC1sYWJlbCIsMywiaWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEl1KElGKSxfdSgwLCJzcGFuIiwwKSxQZigxKSxIdSgyKSxDdSgpLEh1KDMsMSkpLDImZSYmKGh1KCJpZCIsbi5fbGFiZWxJZCksRGMoMSksa2YoIiIsbi5sYWJlbCwiICIpKX0sc3R5bGVzOlsiLm1hdC1vcHRncm91cC1sYWJlbHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1vcHRncm91cC1sYWJlbFtkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAtbGFiZWx7dGV4dC1hbGlnbjpyaWdodH0ubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbnttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRUwsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LW9wdGdyb3VwIixleHBvcnRBczoibWF0T3B0Z3JvdXAiLHRlbXBsYXRlOic8c3BhbiBjbGFzcz0ibWF0LW9wdGdyb3VwLWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgW2lkXT0iX2xhYmVsSWQiPnt7IGxhYmVsIH19IDxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG48bmctY29udGVudCBzZWxlY3Q9Im1hdC1vcHRpb24sIG5nLWNvbnRhaW5lciI+PC9uZy1jb250ZW50PlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxpbnB1dHM6WyJkaXNhYmxlZCJdLGhvc3Q6e2NsYXNzOiJtYXQtb3B0Z3JvdXAiLCJbYXR0ci5yb2xlXSI6J19pbmVydCA/IG51bGwgOiAiZ3JvdXAiJywiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJfaW5lcnQgPyBudWxsIDogZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtbGFiZWxsZWRieV0iOiJfaW5lcnQgPyBudWxsIDogX2xhYmVsSWQiLCJbY2xhc3MubWF0LW9wdGdyb3VwLWRpc2FibGVkXSI6ImRpc2FibGVkIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpSTCx1c2VFeGlzdGluZzpFTH1dLHN0eWxlczpbIi5tYXQtb3B0Z3JvdXAtbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAtbGFiZWxbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBBTD0wO2NsYXNzIFRMe2NvbnN0cnVjdG9yKHQsZT0hMSl7dGhpcy5zb3VyY2U9dCx0aGlzLmlzVXNlcklucHV0PWV9fWNsYXNzIE5Me2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3BhcmVudD1uLHRoaXMuZ3JvdXA9byx0aGlzLl9zZWxlY3RlZD0hMSx0aGlzLl9hY3RpdmU9ITEsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fbW9zdFJlY2VudFZpZXdWYWx1ZT0iIix0aGlzLmlkPSJtYXQtb3B0aW9uLSIrQUwrKyx0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlPW5ldyBTeSx0aGlzLl9zdGF0ZUNoYW5nZXM9bmV3IEJ9Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Lm11bHRpcGxlfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5ncm91cCYmdGhpcy5ncm91cC5kaXNhYmxlZHx8dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPXBIKHQpfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50LmRpc2FibGVSaXBwbGV9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9Z2V0IHZpZXdWYWx1ZSgpe3JldHVybih0aGlzLl9nZXRIb3N0RWxlbWVudCgpLnRleHRDb250ZW50fHwiIikudHJpbSgpfXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkfHwodGhpcy5fc2VsZWN0ZWQ9ITAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCkpfWRlc2VsZWN0KCl7dGhpcy5fc2VsZWN0ZWQmJih0aGlzLl9zZWxlY3RlZD0hMSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoKSl9Zm9jdXModCxlKXtjb25zdCBuPXRoaXMuX2dldEhvc3RFbGVtZW50KCk7ImZ1bmN0aW9uIj09dHlwZW9mIG4uZm9jdXMmJm4uZm9jdXMoZSl9c2V0QWN0aXZlU3R5bGVzKCl7dGhpcy5fYWN0aXZlfHwodGhpcy5fYWN0aXZlPSEwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1zZXRJbmFjdGl2ZVN0eWxlcygpe3RoaXMuX2FjdGl2ZSYmKHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Z2V0TGFiZWwoKXtyZXR1cm4gdGhpcy52aWV3VmFsdWV9X2hhbmRsZUtleWRvd24odCl7dC5rZXlDb2RlIT09YUgmJnQua2V5Q29kZSE9PXNIfHxkSCh0KXx8KHRoaXMuX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpKX1fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKXt0aGlzLmRpc2FibGVkfHwodGhpcy5fc2VsZWN0ZWQ9IXRoaXMubXVsdGlwbGV8fCF0aGlzLl9zZWxlY3RlZCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoITApKX1fZ2V0QXJpYVNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWR8fCF0aGlzLm11bHRpcGxlJiZudWxsfV9nZXRUYWJJbmRleCgpe3JldHVybiB0aGlzLmRpc2FibGVkPyItMSI6IjAifV9nZXRIb3N0RWxlbWVudCgpe3JldHVybiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnR9bmdBZnRlclZpZXdDaGVja2VkKCl7aWYodGhpcy5fc2VsZWN0ZWQpe2NvbnN0IHQ9dGhpcy52aWV3VmFsdWU7dCE9PXRoaXMuX21vc3RSZWNlbnRWaWV3VmFsdWUmJih0aGlzLl9tb3N0UmVjZW50Vmlld1ZhbHVlPXQsdGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKSl9fW5nT25EZXN0cm95KCl7dGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9X2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCh0PSExKXt0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQobmV3IFRMKHRoaXMsdCkpfX1OTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkwpKGZ1KEtoKSxmdShPYiksZnUodm9pZCAwKSxmdShETCkpfSxOTC7JtWRpcj1obyh7dHlwZTpOTCxpbnB1dHM6e2lkOiJpZCIsZGlzYWJsZWQ6ImRpc2FibGVkIix2YWx1ZToidmFsdWUifSxvdXRwdXRzOntvblNlbGVjdGlvbkNoYW5nZToib25TZWxlY3Rpb25DaGFuZ2UifX0pLE5MLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDB9LHt0eXBlOkRMfV0sTkwucHJvcERlY29yYXRvcnM9e3ZhbHVlOlt7dHlwZTpSX31dLGlkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLG9uU2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5MLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMH0se3R5cGU6REx9XX0pLHtpZDpbe3R5cGU6Ul99XSxvblNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0pO2NsYXNzIHpMIGV4dGVuZHMgTkx7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyl9fWZ1bmN0aW9uIElMKHQsZSxuKXtpZihuLmxlbmd0aCl7bGV0IG89ZS50b0FycmF5KCksaT1uLnRvQXJyYXkoKSxhPTA7Zm9yKGxldCBlPTA7ZTx0KzE7ZSsrKW9bZV0uZ3JvdXAmJm9bZV0uZ3JvdXA9PT1pW2FdJiZhKys7cmV0dXJuIGF9cmV0dXJuIDB9ZnVuY3Rpb24gSEwodCxlLG4sbyl7cmV0dXJuIHQ8bj90OnQrZT5uK28/TWF0aC5tYXgoMCx0LW8rZSk6bn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovekwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpMKShmdShLaCksZnUoT2IpLGZ1KHdMLDgpLGZ1KFJMLDgpKX0sekwuybVjbXA9c28oe3R5cGU6ekwsc2VsZWN0b3JzOltbIm1hdC1vcHRpb24iXV0saG9zdEF0dHJzOlsicm9sZSIsIm9wdGlvbiIsMSwibWF0LW9wdGlvbiIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSwyJmUmJihjZygiaWQiLG4uaWQpLHltKCJ0YWJpbmRleCIsbi5fZ2V0VGFiSW5kZXgoKSkoImFyaWEtc2VsZWN0ZWQiLG4uX2dldEFyaWFTZWxlY3RlZCgpKSgiYXJpYS1kaXNhYmxlZCIsbi5kaXNhYmxlZC50b1N0cmluZygpKSxjZigibWF0LXNlbGVjdGVkIixuLnNlbGVjdGVkKSgibWF0LW9wdGlvbi1tdWx0aXBsZSIsbi5tdWx0aXBsZSkoIm1hdC1hY3RpdmUiLG4uYWN0aXZlKSgibWF0LW9wdGlvbi1kaXNhYmxlZCIsbi5kaXNhYmxlZCkpfSxleHBvcnRBczpbIm1hdE9wdGlvbiJdLGZlYXR1cmVzOltRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjUsdmFyczo0LGNvbnN0czpbWyJjbGFzcyIsIm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94IiwzLCJzdGF0ZSIsImRpc2FibGVkIiw0LCJuZ0lmIl0sWzEsIm1hdC1vcHRpb24tdGV4dCJdLFsiY2xhc3MiLCJjZGstdmlzdWFsbHktaGlkZGVuIiw0LCJuZ0lmIl0sWyJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtb3B0aW9uLXJpcHBsZSIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIl0sWzEsIm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94IiwzLCJzdGF0ZSIsImRpc2FibGVkIl0sWzEsImNkay12aXN1YWxseS1oaWRkZW4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEl1KCksSG0oMCxIRiwxLDIsIm1hdC1wc2V1ZG8tY2hlY2tib3giLDApLF91KDEsInNwYW4iLDEpLEh1KDIpLEN1KCksSG0oMyxGRiwyLDEsInNwYW4iLDIpLE11KDQsImRpdiIsMykpLDImZSYmKGh1KCJuZ0lmIixuLm11bHRpcGxlKSxEYygzKSxodSgibmdJZiIsbi5ncm91cCYmbi5ncm91cC5faW5lcnQpLERjKDEpLGh1KCJtYXRSaXBwbGVUcmlnZ2VyIixuLl9nZXRIb3N0RWxlbWVudCgpKSgibWF0UmlwcGxlRGlzYWJsZWQiLG4uZGlzYWJsZWR8fG4uZGlzYWJsZVJpcHBsZSkpfSxkaXJlY3RpdmVzOltQdix2TCxPTF0sc3R5bGVzOlsiLm1hdC1vcHRpb257d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7bWF4LXdpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1vcHRpb25bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGlvbnt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtb3B0aW9uIC5tYXQtaWNvbnttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1vcHRpb24gLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfS5tYXQtb3B0aW9uW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAgLm1hdC1vcHRpb246bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtwYWRkaW5nLWxlZnQ6MzJweH1bZGlyPXJ0bF0gLm1hdC1vcHRncm91cCAubWF0LW9wdGlvbjpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctcmlnaHQ6MzJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtb3B0aW9ue21hcmdpbjowIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7Ym9yZGVyOnNvbGlkIDFweCBjdXJyZW50Q29sb3I7bWFyZ2luOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvblthcmlhLWRpc2FibGVkPXRydWVde29wYWNpdHk6LjV9Lm1hdC1vcHRpb24tdGV4dHtkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LW9wdGlvbiAubWF0LW9wdGlvbi1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LW9wdGlvbi1wc2V1ZG8tY2hlY2tib3h7bWFyZ2luLXJpZ2h0OjhweH1bZGlyPXJ0bF0gLm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHpMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3dMXX1dfSx7dHlwZTpFTCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbUkxdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpMLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1vcHRpb24iLGV4cG9ydEFzOiJtYXRPcHRpb24iLGhvc3Q6e3JvbGU6Im9wdGlvbiIsIlthdHRyLnRhYmluZGV4XSI6Il9nZXRUYWJJbmRleCgpIiwiW2NsYXNzLm1hdC1zZWxlY3RlZF0iOiJzZWxlY3RlZCIsIltjbGFzcy5tYXQtb3B0aW9uLW11bHRpcGxlXSI6Im11bHRpcGxlIiwiW2NsYXNzLm1hdC1hY3RpdmVdIjoiYWN0aXZlIiwiW2lkXSI6ImlkIiwiW2F0dHIuYXJpYS1zZWxlY3RlZF0iOiJfZ2V0QXJpYVNlbGVjdGVkKCkiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkLnRvU3RyaW5nKCkiLCJbY2xhc3MubWF0LW9wdGlvbi1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIihjbGljaykiOiJfc2VsZWN0VmlhSW50ZXJhY3Rpb24oKSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLGNsYXNzOiJtYXQtb3B0aW9uIG1hdC1mb2N1cy1pbmRpY2F0b3IifSx0ZW1wbGF0ZTonPG1hdC1wc2V1ZG8tY2hlY2tib3ggKm5nSWY9Im11bHRpcGxlIiBjbGFzcz0ibWF0LW9wdGlvbi1wc2V1ZG8tY2hlY2tib3giXG4gICAgW3N0YXRlXT0ic2VsZWN0ZWQgPyBcJ2NoZWNrZWRcJyA6IFwndW5jaGVja2VkXCciIFtkaXNhYmxlZF09ImRpc2FibGVkIj48L21hdC1wc2V1ZG8tY2hlY2tib3g+XG5cbjxzcGFuIGNsYXNzPSJtYXQtb3B0aW9uLXRleHQiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG5cblx4M2MhLS0gU2VlIGExMXkgbm90ZXMgaW5zaWRlIG9wdGdyb3VwLnRzIGZvciBjb250ZXh0IGJlaGluZCB0aGlzIGVsZW1lbnQuIC0tXHgzZVxuPHNwYW4gY2xhc3M9ImNkay12aXN1YWxseS1oaWRkZW4iICpuZ0lmPSJncm91cCAmJiBncm91cC5faW5lcnQiPih7eyBncm91cC5sYWJlbCB9fSk8L3NwYW4+XG5cbjxkaXYgY2xhc3M9Im1hdC1vcHRpb24tcmlwcGxlIiBtYXQtcmlwcGxlXG4gICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iX2dldEhvc3RFbGVtZW50KCkiXG4gICAgIFttYXRSaXBwbGVEaXNhYmxlZF09ImRpc2FibGVkIHx8IGRpc2FibGVSaXBwbGUiPlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNoLHN0eWxlczpbIi5tYXQtb3B0aW9ue3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtb3B0aW9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRpb257dGV4dC1hbGlnbjpyaWdodH0ubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0aW9uIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW9wdGlvblthcmlhLWRpc2FibGVkPXRydWVdey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjMycHh9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAgLm1hdC1vcHRpb246bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjMycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbnttYXJnaW46MCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbi5tYXQtYWN0aXZle2JvcmRlcjpzb2xpZCAxcHggY3VycmVudENvbG9yO21hcmdpbjowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXtvcGFjaXR5Oi41fS5tYXQtb3B0aW9uLXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1vcHRpb24gLm1hdC1vcHRpb24tcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt3TF19XX0se3R5cGU6RUwsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1JMXX1dfV19KSxudWxsKTtjbGFzcyBGTHt9RkwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZMKX0sRkwuybVtb2Q9dW8oe3R5cGU6Rkx9KSxGTC7JtWluaj1Ebih7aW1wb3J0czpbW3hMLHJ4LFdGLFBMXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEZMLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbeEwscngsV0YsUExdLGV4cG9ydHM6W3pMLEVMXSxkZWNsYXJhdGlvbnM6W3pMLEVMXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEZMLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bekwsRUxdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3hMLHJ4LFdGLFBMXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt6TCxFTF19fSk7Y29uc3QgTEw9WyJtYXQtYnV0dG9uIiwiIl0sQkw9WyIqIl0sVkw9Ii5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH0ubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKX0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1yYWlzZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1yYWlzZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1yYWlzZWQtYnV0dG9ue3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0cm9rZWQtYnV0dG9ue2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO3BhZGRpbmc6MCAxNXB4O2xpbmUtaGVpZ2h0OjM0cHh9Lm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHh9Lm1hdC1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6MTZweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1taW5pLWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtbWluaS1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LW1pbmktZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtbWluaS1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjhweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1pY29uLWJ1dHRvbntwYWRkaW5nOjA7bWluLXdpZHRoOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtmbGV4LXNocmluazowO2xpbmUtaGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1pY29uLWJ1dHRvbiBpLC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RyYW5zaXRpb246bm9uZX0ubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmR7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxfS5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZsYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXJhaXNlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6Mi41ZW07aGVpZ2h0OjIuNWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZsYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yYWlzZWQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pY29uLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmFiLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1taW5pLWZhYntvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1wcm9ncmFtLWZvY3VzZWR7b3V0bGluZTpzb2xpZCAzcHh9XG4iLFVMPVsibWF0LWJ1dHRvbiIsIm1hdC1mbGF0LWJ1dHRvbiIsIm1hdC1pY29uLWJ1dHRvbiIsIm1hdC1yYWlzZWQtYnV0dG9uIiwibWF0LXN0cm9rZWQtYnV0dG9uIiwibWF0LW1pbmktZmFiIiwibWF0LWZhYiJdLGpMPVlGKEdGKHFGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSkpO2NsYXNzIFdMIGV4dGVuZHMgakx7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQpLHRoaXMuX2ZvY3VzTW9uaXRvcj1lLHRoaXMuX2FuaW1hdGlvbk1vZGU9bix0aGlzLmlzUm91bmRCdXR0b249dGhpcy5faGFzSG9zdEF0dHJpYnV0ZXMoIm1hdC1mYWIiLCJtYXQtbWluaS1mYWIiKSx0aGlzLmlzSWNvbkJ1dHRvbj10aGlzLl9oYXNIb3N0QXR0cmlidXRlcygibWF0LWljb24tYnV0dG9uIik7Zm9yKGNvbnN0IHQgb2YgVUwpdGhpcy5faGFzSG9zdEF0dHJpYnV0ZXModCkmJnRoaXMuX2dldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCh0KTt0Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibWF0LWJ1dHRvbi1iYXNlIiksdGhpcy5pc1JvdW5kQnV0dG9uJiYodGhpcy5jb2xvcj0iYWNjZW50Iil9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9Zm9jdXModCxlKXt0P3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9nZXRIb3N0RWxlbWVudCgpLHQsZSk6dGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cyhlKX1fZ2V0SG9zdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fV9pc1JpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5kaXNhYmxlZH1faGFzSG9zdEF0dHJpYnV0ZXMoLi4udCl7cmV0dXJuIHQuc29tZSgodD0+dGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5oYXNBdHRyaWJ1dGUodCkpKX19V0wuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFdMKShmdShLaCksZnUoeEYpLGZ1KGNrLDgpKX0sV0wuybVjbXA9c28oe3R5cGU6V0wsc2VsZWN0b3JzOltbImJ1dHRvbiIsIm1hdC1idXR0b24iLCIiXSxbImJ1dHRvbiIsIm1hdC1yYWlzZWQtYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtaWNvbi1idXR0b24iLCIiXSxbImJ1dHRvbiIsIm1hdC1mYWIiLCIiXSxbImJ1dHRvbiIsIm1hdC1taW5pLWZhYiIsIiJdLFsiYnV0dG9uIiwibWF0LXN0cm9rZWQtYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtZmxhdC1idXR0b24iLCIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KHZMLDUpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4ucmlwcGxlPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKHltKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCksY2YoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSkoIm1hdC1idXR0b24tZGlzYWJsZWQiLG4uZGlzYWJsZWQpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGNvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uIl0sZmVhdHVyZXM6W1FwXSxhdHRyczpMTCxuZ0NvbnRlbnRTZWxlY3RvcnM6QkwsZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwibWF0LWJ1dHRvbi13cmFwcGVyIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tcmlwcGxlIiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsxLCJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEl1KCksX3UoMCwic3BhbiIsMCksSHUoMSksQ3UoKSxNdSgyLCJzcGFuIiwxKSxNdSgzLCJzcGFuIiwyKSksMiZlJiYoRGMoMiksY2YoIm1hdC1idXR0b24tcmlwcGxlLXJvdW5kIixuLmlzUm91bmRCdXR0b258fG4uaXNJY29uQnV0dG9uKSxodSgibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2lzUmlwcGxlRGlzYWJsZWQoKSkoIm1hdFJpcHBsZUNlbnRlcmVkIixuLmlzSWNvbkJ1dHRvbikoIm1hdFJpcHBsZVRyaWdnZXIiLG4uX2dldEhvc3RFbGVtZW50KCkpKX0sZGlyZWN0aXZlczpbdkxdLHN0eWxlczpbVkxdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLFdMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnhGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sV0wucHJvcERlY29yYXRvcnM9e3JpcHBsZTpbe3R5cGU6YXIsYXJnczpbdkxdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV0wsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYnV0dG9uW21hdC1idXR0b25dLCBidXR0b25bbWF0LXJhaXNlZC1idXR0b25dLCBidXR0b25bbWF0LWljb24tYnV0dG9uXSxcbiAgICAgICAgICAgICBidXR0b25bbWF0LWZhYl0sIGJ1dHRvblttYXQtbWluaS1mYWJdLCBidXR0b25bbWF0LXN0cm9rZWQtYnV0dG9uXSxcbiAgICAgICAgICAgICBidXR0b25bbWF0LWZsYXQtYnV0dG9uXSIsZXhwb3J0QXM6Im1hdEJ1dHRvbiIsaG9zdDp7IlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjonX2FuaW1hdGlvbk1vZGUgPT09ICJOb29wQW5pbWF0aW9ucyInLCJbY2xhc3MubWF0LWJ1dHRvbi1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsY2xhc3M6Im1hdC1mb2N1cy1pbmRpY2F0b3IifSx0ZW1wbGF0ZTonPHNwYW4gY2xhc3M9Im1hdC1idXR0b24td3JhcHBlciI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbjxzcGFuIG1hdFJpcHBsZSBjbGFzcz0ibWF0LWJ1dHRvbi1yaXBwbGUiXG4gICAgICBbY2xhc3MubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmRdPSJpc1JvdW5kQnV0dG9uIHx8IGlzSWNvbkJ1dHRvbiJcbiAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09Il9pc1JpcHBsZURpc2FibGVkKCkiXG4gICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJpc0ljb25CdXR0b24iXG4gICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIj48L3NwYW4+XG48c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Ij48L3NwYW4+XG4nLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSIsImNvbG9yIl0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsc3R5bGVzOlsiLm1hdC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfS5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4wNH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9fS5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXJhaXNlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXJhaXNlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXJhaXNlZC1idXR0b257dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3Ryb2tlZC1idXR0b257Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7cGFkZGluZzowIDE1cHg7bGluZS1oZWlnaHQ6MzRweH0ubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6LTFweDtsZWZ0Oi0xcHg7cmlnaHQ6LTFweDtib3R0b206LTFweH0ubWF0LWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo1NnB4O2hlaWdodDo1NnB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzoxNnB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LW1pbmktZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1taW5pLWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtbWluaS1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1taW5pLWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6OHB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LWljb24tYnV0dG9ue3BhZGRpbmc6MDttaW4td2lkdGg6MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2ZsZXgtc2hyaW5rOjA7bGluZS1oZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJX0ubWF0LWljb24tYnV0dG9uIGksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bGluZS1oZWlnaHQ6MjRweH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czppbmhlcml0fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dHJhbnNpdGlvbjpub25lfS5tYXQtYnV0dG9uLXJpcHBsZS1yb3VuZHtib3JkZXItcmFkaXVzOjUwJTt6LWluZGV4OjF9Lm1hdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmxhdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtcmFpc2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6aW5oZXJpdDt3aWR0aDoyLjVlbTtoZWlnaHQ6Mi41ZW19LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmxhdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXJhaXNlZC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWljb24tYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mYWIsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1pbmktZmFie291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLXByb2dyYW0tZm9jdXNlZHtvdXRsaW5lOnNvbGlkIDNweH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnhGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7cmlwcGxlOlt7dHlwZTphcixhcmdzOlt2TF19XX0pO2NsYXNzIEdMIGV4dGVuZHMgV0x7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKGUsdCxuKX1faGFsdERpc2FibGVkRXZlbnRzKHQpe3RoaXMuZGlzYWJsZWQmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9fUdMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHTCkoZnUoeEYpLGZ1KEtoKSxmdShjayw4KSl9LEdMLsm1Y21wPXNvKHt0eXBlOkdMLHNlbGVjdG9yczpbWyJhIiwibWF0LWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1yYWlzZWQtYnV0dG9uIiwiIl0sWyJhIiwibWF0LWljb24tYnV0dG9uIiwiIl0sWyJhIiwibWF0LWZhYiIsIiJdLFsiYSIsIm1hdC1taW5pLWZhYiIsIiJdLFsiYSIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1mbGF0LWJ1dHRvbiIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYWx0RGlzYWJsZWRFdmVudHMoZSl9KSksMiZlJiYoeW0oInRhYmluZGV4IixuLmRpc2FibGVkPy0xOm4udGFiSW5kZXh8fDApKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSksY2YoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSkoIm1hdC1idXR0b24tZGlzYWJsZWQiLG4uZGlzYWJsZWQpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4In0sZXhwb3J0QXM6WyJtYXRCdXR0b24iLCJtYXRBbmNob3IiXSxmZWF0dXJlczpbUXBdLGF0dHJzOkxMLG5nQ29udGVudFNlbGVjdG9yczpCTCxkZWNsczo0LHZhcnM6NSxjb25zdHM6W1sxLCJtYXQtYnV0dG9uLXdyYXBwZXIiXSxbIm1hdFJpcHBsZSIsIiIsMSwibWF0LWJ1dHRvbi1yaXBwbGUiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibWF0UmlwcGxlQ2VudGVyZWQiLCJtYXRSaXBwbGVUcmlnZ2VyIl0sWzEsIm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSXUoKSxfdSgwLCJzcGFuIiwwKSxIdSgxKSxDdSgpLE11KDIsInNwYW4iLDEpLE11KDMsInNwYW4iLDIpKSwyJmUmJihEYygyKSxjZigibWF0LWJ1dHRvbi1yaXBwbGUtcm91bmQiLG4uaXNSb3VuZEJ1dHRvbnx8bi5pc0ljb25CdXR0b24pLGh1KCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5faXNSaXBwbGVEaXNhYmxlZCgpKSgibWF0UmlwcGxlQ2VudGVyZWQiLG4uaXNJY29uQnV0dG9uKSgibWF0UmlwcGxlVHJpZ2dlciIsbi5fZ2V0SG9zdEVsZW1lbnQoKSkpfSxkaXJlY3RpdmVzOlt2TF0sc3R5bGVzOltWTF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksR0wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4Rn0se3R5cGU6S2h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxHTC5wcm9wRGVjb3JhdG9ycz17dGFiSW5kZXg6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR0wsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYVttYXQtYnV0dG9uXSwgYVttYXQtcmFpc2VkLWJ1dHRvbl0sIGFbbWF0LWljb24tYnV0dG9uXSwgYVttYXQtZmFiXSxcbiAgICAgICAgICAgICBhW21hdC1taW5pLWZhYl0sIGFbbWF0LXN0cm9rZWQtYnV0dG9uXSwgYVttYXQtZmxhdC1idXR0b25dIixleHBvcnRBczoibWF0QnV0dG9uLCBtYXRBbmNob3IiLGhvc3Q6eyJbYXR0ci50YWJpbmRleF0iOiJkaXNhYmxlZCA/IC0xIDogKHRhYkluZGV4IHx8IDApIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIihjbGljaykiOiJfaGFsdERpc2FibGVkRXZlbnRzKCRldmVudCkiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjonX2FuaW1hdGlvbk1vZGUgPT09ICJOb29wQW5pbWF0aW9ucyInLCJbY2xhc3MubWF0LWJ1dHRvbi1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsY2xhc3M6Im1hdC1mb2N1cy1pbmRpY2F0b3IifSxpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJjb2xvciJdLHRlbXBsYXRlOic8c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi13cmFwcGVyIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuPHNwYW4gbWF0UmlwcGxlIGNsYXNzPSJtYXQtYnV0dG9uLXJpcHBsZSJcbiAgICAgIFtjbGFzcy5tYXQtYnV0dG9uLXJpcHBsZS1yb3VuZF09ImlzUm91bmRCdXR0b24gfHwgaXNJY29uQnV0dG9uIlxuICAgICAgW21hdFJpcHBsZURpc2FibGVkXT0iX2lzUmlwcGxlRGlzYWJsZWQoKSJcbiAgICAgIFttYXRSaXBwbGVDZW50ZXJlZF09ImlzSWNvbkJ1dHRvbiJcbiAgICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iX2dldEhvc3RFbGVtZW50KCkiPjwvc3Bhbj5cbjxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiPjwvc3Bhbj5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsc3R5bGVzOlsiLm1hdC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfS5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4wNH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9fS5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXJhaXNlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXJhaXNlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXJhaXNlZC1idXR0b257dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3Ryb2tlZC1idXR0b257Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7cGFkZGluZzowIDE1cHg7bGluZS1oZWlnaHQ6MzRweH0ubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6LTFweDtsZWZ0Oi0xcHg7cmlnaHQ6LTFweDtib3R0b206LTFweH0ubWF0LWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo1NnB4O2hlaWdodDo1NnB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzoxNnB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LW1pbmktZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1taW5pLWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtbWluaS1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1taW5pLWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6OHB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LWljb24tYnV0dG9ue3BhZGRpbmc6MDttaW4td2lkdGg6MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2ZsZXgtc2hyaW5rOjA7bGluZS1oZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJX0ubWF0LWljb24tYnV0dG9uIGksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bGluZS1oZWlnaHQ6MjRweH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czppbmhlcml0fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dHJhbnNpdGlvbjpub25lfS5tYXQtYnV0dG9uLXJpcHBsZS1yb3VuZHtib3JkZXItcmFkaXVzOjUwJTt6LWluZGV4OjF9Lm1hdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmxhdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtcmFpc2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6aW5oZXJpdDt3aWR0aDoyLjVlbTtoZWlnaHQ6Mi41ZW19LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmxhdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXJhaXNlZC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWljb24tYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mYWIsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1pbmktZmFie291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLXByb2dyYW0tZm9jdXNlZHtvdXRsaW5lOnNvbGlkIDNweH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6eEZ9LHt0eXBlOktofSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7dGFiSW5kZXg6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFlMe31ZTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WUwpfSxZTC7JtW1vZD11byh7dHlwZTpZTH0pLFlMLsm1aW5qPURuKHtpbXBvcnRzOltbeEwsV0ZdLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWUwsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOlt4TCxXRl0sZXhwb3J0czpbV0wsR0wsV0ZdLGRlY2xhcmF0aW9uczpbV0wsR0xdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oWUwse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltXTCxHTF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5beEwsV0ZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dMLEdMLFdGXX19KTtjbGFzcyBxTHt9ZnVuY3Rpb24gWkwodCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbm5lY3R9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFhMIGV4dGVuZHMgcUx7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kYXRhPXR9Y29ubmVjdCgpe3JldHVybiBMdCh0aGlzLl9kYXRhKT90aGlzLl9kYXRhOnp0KHRoaXMuX2RhdGEpfWRpc2Nvbm5lY3QoKXt9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgS0x7YXBwbHlDaGFuZ2VzKHQsZSxuLG8saSl7dC5mb3JFYWNoT3BlcmF0aW9uKCgodCxvLGEpPT57bGV0IHIscztpZihudWxsPT10LnByZXZpb3VzSW5kZXgpe2NvbnN0IGk9bih0LG8sYSk7cj1lLmNyZWF0ZUVtYmVkZGVkVmlldyhpLnRlbXBsYXRlUmVmLGkuY29udGV4dCxpLmluZGV4KSxzPTF9ZWxzZSBudWxsPT1hPyhlLnJlbW92ZShvKSxzPTMpOihyPWUuZ2V0KG8pLGUubW92ZShyLGEpLHM9Mik7aSYmaSh7Y29udGV4dDpudWxsPT1yP3ZvaWQgMDpyLmNvbnRleHQsb3BlcmF0aW9uOnMscmVjb3JkOnR9KX0pKX1kZXRhY2goKXt9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBKTHtjb25zdHJ1Y3Rvcigpe3RoaXMudmlld0NhY2hlU2l6ZT0yMCx0aGlzLl92aWV3Q2FjaGU9W119YXBwbHlDaGFuZ2VzKHQsZSxuLG8saSl7dC5mb3JFYWNoT3BlcmF0aW9uKCgodCxhLHIpPT57bGV0IHMsbDtpZihudWxsPT10LnByZXZpb3VzSW5kZXgpe3M9dGhpcy5faW5zZXJ0VmlldygoKCk9Pm4odCxhLHIpKSxyLGUsbyh0KSksbD1zPzE6MH1lbHNlIG51bGw9PXI/KHRoaXMuX2RldGFjaEFuZENhY2hlVmlldyhhLGUpLGw9Myk6KHM9dGhpcy5fbW92ZVZpZXcoYSxyLGUsbyh0KSksbD0yKTtpJiZpKHtjb250ZXh0Om51bGw9PXM/dm9pZCAwOnMuY29udGV4dCxvcGVyYXRpb246bCxyZWNvcmQ6dH0pfSkpfWRldGFjaCgpe2Zvcihjb25zdCB0IG9mIHRoaXMuX3ZpZXdDYWNoZSl0LmRlc3Ryb3koKTt0aGlzLl92aWV3Q2FjaGU9W119X2luc2VydFZpZXcodCxlLG4sbyl7Y29uc3QgaT10aGlzLl9pbnNlcnRWaWV3RnJvbUNhY2hlKGUsbik7aWYoaSlyZXR1cm4gdm9pZChpLmNvbnRleHQuJGltcGxpY2l0PW8pO2NvbnN0IGE9dCgpO3JldHVybiBuLmNyZWF0ZUVtYmVkZGVkVmlldyhhLnRlbXBsYXRlUmVmLGEuY29udGV4dCxhLmluZGV4KX1fZGV0YWNoQW5kQ2FjaGVWaWV3KHQsZSl7Y29uc3Qgbj1lLmRldGFjaCh0KTt0aGlzLl9tYXliZUNhY2hlVmlldyhuLGUpfV9tb3ZlVmlldyh0LGUsbixvKXtjb25zdCBpPW4uZ2V0KHQpO3JldHVybiBuLm1vdmUoaSxlKSxpLmNvbnRleHQuJGltcGxpY2l0PW8saX1fbWF5YmVDYWNoZVZpZXcodCxlKXtpZih0aGlzLl92aWV3Q2FjaGUubGVuZ3RoPHRoaXMudmlld0NhY2hlU2l6ZSl0aGlzLl92aWV3Q2FjaGUucHVzaCh0KTtlbHNle2NvbnN0IG49ZS5pbmRleE9mKHQpOy0xPT09bj90LmRlc3Ryb3koKTplLnJlbW92ZShuKX19X2luc2VydFZpZXdGcm9tQ2FjaGUodCxlKXtjb25zdCBuPXRoaXMuX3ZpZXdDYWNoZS5wb3AoKTtyZXR1cm4gbiYmZS5pbnNlcnQobix0KSxufHxudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgUUx7Y29uc3RydWN0b3IodD0hMSxlLG49ITApe3RoaXMuX211bHRpcGxlPXQsdGhpcy5fZW1pdENoYW5nZXM9bix0aGlzLl9zZWxlY3Rpb249bmV3IFNldCx0aGlzLl9kZXNlbGVjdGVkVG9FbWl0PVtdLHRoaXMuX3NlbGVjdGVkVG9FbWl0PVtdLHRoaXMuY2hhbmdlZD1uZXcgQixlJiZlLmxlbmd0aCYmKHQ/ZS5mb3JFYWNoKCh0PT50aGlzLl9tYXJrU2VsZWN0ZWQodCkpKTp0aGlzLl9tYXJrU2VsZWN0ZWQoZVswXSksdGhpcy5fc2VsZWN0ZWRUb0VtaXQubGVuZ3RoPTApfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPUFycmF5LmZyb20odGhpcy5fc2VsZWN0aW9uLnZhbHVlcygpKSksdGhpcy5fc2VsZWN0ZWR9c2VsZWN0KC4uLnQpe3RoaXMuX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KSx0LmZvckVhY2goKHQ9PnRoaXMuX21hcmtTZWxlY3RlZCh0KSkpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfWRlc2VsZWN0KC4uLnQpe3RoaXMuX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KSx0LmZvckVhY2goKHQ9PnRoaXMuX3VubWFya1NlbGVjdGVkKHQpKSksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCl9dG9nZ2xlKHQpe3RoaXMuaXNTZWxlY3RlZCh0KT90aGlzLmRlc2VsZWN0KHQpOnRoaXMuc2VsZWN0KHQpfWNsZWFyKCl7dGhpcy5fdW5tYXJrQWxsKCksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCl9aXNTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uLmhhcyh0KX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLl9zZWxlY3Rpb24uc2l6ZX1oYXNWYWx1ZSgpe3JldHVybiF0aGlzLmlzRW1wdHkoKX1zb3J0KHQpe3RoaXMuX211bHRpcGxlJiZ0aGlzLnNlbGVjdGVkJiZ0aGlzLl9zZWxlY3RlZC5zb3J0KHQpfWlzTXVsdGlwbGVTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5fbXVsdGlwbGV9X2VtaXRDaGFuZ2VFdmVudCgpe3RoaXMuX3NlbGVjdGVkPW51bGwsKHRoaXMuX3NlbGVjdGVkVG9FbWl0Lmxlbmd0aHx8dGhpcy5fZGVzZWxlY3RlZFRvRW1pdC5sZW5ndGgpJiYodGhpcy5jaGFuZ2VkLm5leHQoe3NvdXJjZTp0aGlzLGFkZGVkOnRoaXMuX3NlbGVjdGVkVG9FbWl0LHJlbW92ZWQ6dGhpcy5fZGVzZWxlY3RlZFRvRW1pdH0pLHRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXQ9W10sdGhpcy5fc2VsZWN0ZWRUb0VtaXQ9W10pfV9tYXJrU2VsZWN0ZWQodCl7dGhpcy5pc1NlbGVjdGVkKHQpfHwodGhpcy5fbXVsdGlwbGV8fHRoaXMuX3VubWFya0FsbCgpLHRoaXMuX3NlbGVjdGlvbi5hZGQodCksdGhpcy5fZW1pdENoYW5nZXMmJnRoaXMuX3NlbGVjdGVkVG9FbWl0LnB1c2godCkpfV91bm1hcmtTZWxlY3RlZCh0KXt0aGlzLmlzU2VsZWN0ZWQodCkmJih0aGlzLl9zZWxlY3Rpb24uZGVsZXRlKHQpLHRoaXMuX2VtaXRDaGFuZ2VzJiZ0aGlzLl9kZXNlbGVjdGVkVG9FbWl0LnB1c2godCkpfV91bm1hcmtBbGwoKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5fc2VsZWN0aW9uLmZvckVhY2goKHQ9PnRoaXMuX3VubWFya1NlbGVjdGVkKHQpKSl9X3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KXtpZih0Lmxlbmd0aD4xJiYhdGhpcy5fbXVsdGlwbGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJDYW5ub3QgcGFzcyBtdWx0aXBsZSB2YWx1ZXMgaW50byBTZWxlY3Rpb25Nb2RlbCB3aXRoIHNpbmdsZS12YWx1ZSBtb2RlLiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCl9fWNsYXNzICRMe2NvbnN0cnVjdG9yKCl7dGhpcy5fbGlzdGVuZXJzPVtdfW5vdGlmeSh0LGUpe2ZvcihsZXQgbiBvZiB0aGlzLl9saXN0ZW5lcnMpbih0LGUpfWxpc3Rlbih0KXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzLnB1c2godCksKCk9Pnt0aGlzLl9saXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzLmZpbHRlcigoZT0+dCE9PWUpKX19bmdPbkRlc3Ryb3koKXt0aGlzLl9saXN0ZW5lcnM9W119fSRMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkTCl9LCRMLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyAkTH0sdG9rZW46JEwscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCRMLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgdEI9bmV3IGVyKCJfVmlld1JlcGVhdGVyIiksZUI9WyJjb250ZW50V3JhcHBlciJdLG5CPW5ldyBlcigiVklSVFVBTF9TQ1JPTExfU1RSQVRFR1kiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG9Ce2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyBCLHRoaXMuc2Nyb2xsZWRJbmRleENoYW5nZT10aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLnBpcGUod2UoKSksdGhpcy5fdmlld3BvcnQ9bnVsbCx0aGlzLl9pdGVtU2l6ZT10LHRoaXMuX21pbkJ1ZmZlclB4PWUsdGhpcy5fbWF4QnVmZmVyUHg9bn1hdHRhY2godCl7dGhpcy5fdmlld3BvcnQ9dCx0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfWRldGFjaCgpe3RoaXMuX3Njcm9sbGVkSW5kZXhDaGFuZ2UuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydD1udWxsfXVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHQsZSxuKXtpZihuPGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQ0RLIHZpcnR1YWwgc2Nyb2xsOiBtYXhCdWZmZXJQeCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW5CdWZmZXJQeCIpO3RoaXMuX2l0ZW1TaXplPXQsdGhpcy5fbWluQnVmZmVyUHg9ZSx0aGlzLl9tYXhCdWZmZXJQeD1uLHRoaXMuX3VwZGF0ZVRvdGFsQ29udGVudFNpemUoKSx0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25Db250ZW50U2Nyb2xsZWQoKXt0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25EYXRhTGVuZ3RoQ2hhbmdlZCgpe3RoaXMuX3VwZGF0ZVRvdGFsQ29udGVudFNpemUoKSx0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25Db250ZW50UmVuZGVyZWQoKXt9b25SZW5kZXJlZE9mZnNldENoYW5nZWQoKXt9c2Nyb2xsVG9JbmRleCh0LGUpe3RoaXMuX3ZpZXdwb3J0JiZ0aGlzLl92aWV3cG9ydC5zY3JvbGxUb09mZnNldCh0KnRoaXMuX2l0ZW1TaXplLGUpfV91cGRhdGVUb3RhbENvbnRlbnRTaXplKCl7dGhpcy5fdmlld3BvcnQmJnRoaXMuX3ZpZXdwb3J0LnNldFRvdGFsQ29udGVudFNpemUodGhpcy5fdmlld3BvcnQuZ2V0RGF0YUxlbmd0aCgpKnRoaXMuX2l0ZW1TaXplKX1fdXBkYXRlUmVuZGVyZWRSYW5nZSgpe2lmKCF0aGlzLl92aWV3cG9ydClyZXR1cm47Y29uc3QgdD10aGlzLl92aWV3cG9ydC5nZXRSZW5kZXJlZFJhbmdlKCksZT17c3RhcnQ6dC5zdGFydCxlbmQ6dC5lbmR9LG49dGhpcy5fdmlld3BvcnQuZ2V0Vmlld3BvcnRTaXplKCksbz10aGlzLl92aWV3cG9ydC5nZXREYXRhTGVuZ3RoKCk7bGV0IGk9dGhpcy5fdmlld3BvcnQubWVhc3VyZVNjcm9sbE9mZnNldCgpLGE9dGhpcy5faXRlbVNpemU+MD9pL3RoaXMuX2l0ZW1TaXplOjA7aWYoZS5lbmQ+byl7Y29uc3QgdD1NYXRoLmNlaWwobi90aGlzLl9pdGVtU2l6ZSkscj1NYXRoLm1heCgwLE1hdGgubWluKGEsby10KSk7YSE9ciYmKGE9cixpPXIqdGhpcy5faXRlbVNpemUsZS5zdGFydD1NYXRoLmZsb29yKGEpKSxlLmVuZD1NYXRoLm1heCgwLE1hdGgubWluKG8sZS5zdGFydCt0KSl9Y29uc3Qgcj1pLWUuc3RhcnQqdGhpcy5faXRlbVNpemU7aWYocjx0aGlzLl9taW5CdWZmZXJQeCYmMCE9ZS5zdGFydCl7Y29uc3QgdD1NYXRoLmNlaWwoKHRoaXMuX21heEJ1ZmZlclB4LXIpL3RoaXMuX2l0ZW1TaXplKTtlLnN0YXJ0PU1hdGgubWF4KDAsZS5zdGFydC10KSxlLmVuZD1NYXRoLm1pbihvLE1hdGguY2VpbChhKyhuK3RoaXMuX21pbkJ1ZmZlclB4KS90aGlzLl9pdGVtU2l6ZSkpfWVsc2V7Y29uc3QgdD1lLmVuZCp0aGlzLl9pdGVtU2l6ZS0oaStuKTtpZih0PHRoaXMuX21pbkJ1ZmZlclB4JiZlLmVuZCE9byl7Y29uc3Qgbj1NYXRoLmNlaWwoKHRoaXMuX21heEJ1ZmZlclB4LXQpL3RoaXMuX2l0ZW1TaXplKTtuPjAmJihlLmVuZD1NYXRoLm1pbihvLGUuZW5kK24pLGUuc3RhcnQ9TWF0aC5tYXgoMCxNYXRoLmZsb29yKGEtdGhpcy5fbWluQnVmZmVyUHgvdGhpcy5faXRlbVNpemUpKSl9fXRoaXMuX3ZpZXdwb3J0LnNldFJlbmRlcmVkUmFuZ2UoZSksdGhpcy5fdmlld3BvcnQuc2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHRoaXMuX2l0ZW1TaXplKmUuc3RhcnQpLHRoaXMuX3Njcm9sbGVkSW5kZXhDaGFuZ2UubmV4dChNYXRoLmZsb29yKGEpKX19ZnVuY3Rpb24gaUIodCl7cmV0dXJuIHQuX3Njcm9sbFN0cmF0ZWd5fWNsYXNzIGFCe2NvbnN0cnVjdG9yKCl7dGhpcy5faXRlbVNpemU9MjAsdGhpcy5fbWluQnVmZmVyUHg9MTAwLHRoaXMuX21heEJ1ZmZlclB4PTIwMCx0aGlzLl9zY3JvbGxTdHJhdGVneT1uZXcgb0IodGhpcy5pdGVtU2l6ZSx0aGlzLm1pbkJ1ZmZlclB4LHRoaXMubWF4QnVmZmVyUHgpfWdldCBpdGVtU2l6ZSgpe3JldHVybiB0aGlzLl9pdGVtU2l6ZX1zZXQgaXRlbVNpemUodCl7dGhpcy5faXRlbVNpemU9bUgodCl9Z2V0IG1pbkJ1ZmZlclB4KCl7cmV0dXJuIHRoaXMuX21pbkJ1ZmZlclB4fXNldCBtaW5CdWZmZXJQeCh0KXt0aGlzLl9taW5CdWZmZXJQeD1tSCh0KX1nZXQgbWF4QnVmZmVyUHgoKXtyZXR1cm4gdGhpcy5fbWF4QnVmZmVyUHh9c2V0IG1heEJ1ZmZlclB4KHQpe3RoaXMuX21heEJ1ZmZlclB4PW1IKHQpfW5nT25DaGFuZ2VzKCl7dGhpcy5fc2Nyb2xsU3RyYXRlZ3kudXBkYXRlSXRlbUFuZEJ1ZmZlclNpemUodGhpcy5pdGVtU2l6ZSx0aGlzLm1pbkJ1ZmZlclB4LHRoaXMubWF4QnVmZmVyUHgpfX1hQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YUIpfSxhQi7JtWRpcj1obyh7dHlwZTphQixzZWxlY3RvcnM6W1siY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwiaXRlbVNpemUiLCIiXV0saW5wdXRzOntpdGVtU2l6ZToiaXRlbVNpemUiLG1pbkJ1ZmZlclB4OiJtaW5CdWZmZXJQeCIsbWF4QnVmZmVyUHg6Im1heEJ1ZmZlclB4In0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpuQix1c2VGYWN0b3J5OmlCLGRlcHM6WyRlKCgoKT0+YUIpKV19XSkscW9dfSksYUIucHJvcERlY29yYXRvcnM9e2l0ZW1TaXplOlt7dHlwZTpSX31dLG1pbkJ1ZmZlclB4Olt7dHlwZTpSX31dLG1heEJ1ZmZlclB4Olt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFtpdGVtU2l6ZV0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6bkIsdXNlRmFjdG9yeTppQixkZXBzOlskZSgoKCk9PmFCKSldfV19XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse2l0ZW1TaXplOlt7dHlwZTpSX31dLG1pbkJ1ZmZlclB4Olt7dHlwZTpSX31dLG1heEJ1ZmZlclB4Olt7dHlwZTpSX31dfSk7Y2xhc3MgckJ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX25nWm9uZT10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fc2Nyb2xsZWQ9bmV3IEIsdGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fc2Nyb2xsZWRDb3VudD0wLHRoaXMuc2Nyb2xsQ29udGFpbmVycz1uZXcgTWFwLHRoaXMuX2RvY3VtZW50PW59cmVnaXN0ZXIodCl7dGhpcy5zY3JvbGxDb250YWluZXJzLmhhcyh0KXx8dGhpcy5zY3JvbGxDb250YWluZXJzLnNldCh0LHQuZWxlbWVudFNjcm9sbGVkKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fc2Nyb2xsZWQubmV4dCh0KSkpKX1kZXJlZ2lzdGVyKHQpe2NvbnN0IGU9dGhpcy5zY3JvbGxDb250YWluZXJzLmdldCh0KTtlJiYoZS51bnN1YnNjcmliZSgpLHRoaXMuc2Nyb2xsQ29udGFpbmVycy5kZWxldGUodCkpfXNjcm9sbGVkKHQ9MjApe3JldHVybiB0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI/bmV3IFQoKGU9Pnt0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb258fHRoaXMuX2FkZEdsb2JhbExpc3RlbmVyKCk7Y29uc3Qgbj10PjA/dGhpcy5fc2Nyb2xsZWQucGlwZShnZSh0KSkuc3Vic2NyaWJlKGUpOnRoaXMuX3Njcm9sbGVkLnN1YnNjcmliZShlKTtyZXR1cm4gdGhpcy5fc2Nyb2xsZWRDb3VudCsrLCgpPT57bi51bnN1YnNjcmliZSgpLHRoaXMuX3Njcm9sbGVkQ291bnQtLSx0aGlzLl9zY3JvbGxlZENvdW50fHx0aGlzLl9yZW1vdmVHbG9iYWxMaXN0ZW5lcigpfX0pKTp6dCgpfW5nT25EZXN0cm95KCl7dGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKSx0aGlzLnNjcm9sbENvbnRhaW5lcnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuZGVyZWdpc3RlcihlKSkpLHRoaXMuX3Njcm9sbGVkLmNvbXBsZXRlKCl9YW5jZXN0b3JTY3JvbGxlZCh0LGUpe2NvbnN0IG49dGhpcy5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModCk7cmV0dXJuIHRoaXMuc2Nyb2xsZWQoZSkucGlwZShmZSgodD0+IXR8fG4uaW5kZXhPZih0KT4tMSkpKX1nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModCl7Y29uc3QgZT1bXTtyZXR1cm4gdGhpcy5zY3JvbGxDb250YWluZXJzLmZvckVhY2goKChuLG8pPT57dGhpcy5fc2Nyb2xsYWJsZUNvbnRhaW5zRWxlbWVudChvLHQpJiZlLnB1c2gobyl9KSksZX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQodCxlKXtsZXQgbj1oSChlKSxvPXQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7ZG97aWYobj09bylyZXR1cm4hMH13aGlsZShuPW4ucGFyZW50RWxlbWVudCk7cmV0dXJuITF9X2FkZEdsb2JhbExpc3RlbmVyKCl7dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PmxlKHRoaXMuX2dldFdpbmRvdygpLmRvY3VtZW50LCJzY3JvbGwiKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9zY3JvbGxlZC5uZXh0KCkpKSkpfV9yZW1vdmVHbG9iYWxMaXN0ZW5lcigpe3RoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbiYmKHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj1udWxsKX19ckIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJCKShUcihtQyksVHIoX0gpLFRyKHNNLDgpKX0sckIuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHJCKFRyKG1DKSxUcihfSCksVHIoc00sOCkpfSx0b2tlbjpyQixwcm92aWRlZEluOiJyb290In0pLHJCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyQixbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHNCe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuZWxlbWVudFJlZj10LHRoaXMuc2Nyb2xsRGlzcGF0Y2hlcj1lLHRoaXMubmdab25lPW4sdGhpcy5kaXI9byx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5fZWxlbWVudFNjcm9sbGVkPW5ldyBUKCh0PT50aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PmxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJzY3JvbGwiKS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSh0KSkpKSl9bmdPbkluaXQoKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIucmVnaXN0ZXIodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIuZGVyZWdpc3Rlcih0aGlzKSx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfWVsZW1lbnRTY3JvbGxlZCgpe3JldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsZWR9Z2V0RWxlbWVudFJlZigpe3JldHVybiB0aGlzLmVsZW1lbnRSZWZ9c2Nyb2xsVG8odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxuPXRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU7bnVsbD09dC5sZWZ0JiYodC5sZWZ0PW4/dC5lbmQ6dC5zdGFydCksbnVsbD09dC5yaWdodCYmKHQucmlnaHQ9bj90LnN0YXJ0OnQuZW5kKSxudWxsIT10LmJvdHRvbSYmKHQudG9wPWUuc2Nyb2xsSGVpZ2h0LWUuY2xpZW50SGVpZ2h0LXQuYm90dG9tKSxuJiYwIT1ESCgpPyhudWxsIT10LmxlZnQmJih0LnJpZ2h0PWUuc2Nyb2xsV2lkdGgtZS5jbGllbnRXaWR0aC10LmxlZnQpLDI9PURIKCk/dC5sZWZ0PXQucmlnaHQ6MT09REgoKSYmKHQubGVmdD10LnJpZ2h0Py10LnJpZ2h0OnQucmlnaHQpKTpudWxsIT10LnJpZ2h0JiYodC5sZWZ0PWUuc2Nyb2xsV2lkdGgtZS5jbGllbnRXaWR0aC10LnJpZ2h0KSx0aGlzLl9hcHBseVNjcm9sbFRvT3B0aW9ucyh0KX1fYXBwbHlTY3JvbGxUb09wdGlvbnModCl7Y29uc3QgZT10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtTSCgpP2Uuc2Nyb2xsVG8odCk6KG51bGwhPXQudG9wJiYoZS5zY3JvbGxUb3A9dC50b3ApLG51bGwhPXQubGVmdCYmKGUuc2Nyb2xsTGVmdD10LmxlZnQpKX1tZWFzdXJlU2Nyb2xsT2Zmc2V0KHQpe2NvbnN0IGU9ImxlZnQiLG49InJpZ2h0IixvPXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKCJ0b3AiPT10KXJldHVybiBvLnNjcm9sbFRvcDtpZigiYm90dG9tIj09dClyZXR1cm4gby5zY3JvbGxIZWlnaHQtby5jbGllbnRIZWlnaHQtby5zY3JvbGxUb3A7Y29uc3QgaT10aGlzLmRpciYmInJ0bCI9PXRoaXMuZGlyLnZhbHVlO3JldHVybiJzdGFydCI9PXQ/dD1pP246ZToiZW5kIj09dCYmKHQ9aT9lOm4pLGkmJjI9PURIKCk/dD09ZT9vLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGgtby5zY3JvbGxMZWZ0Om8uc2Nyb2xsTGVmdDppJiYxPT1ESCgpP3Q9PWU/by5zY3JvbGxMZWZ0K28uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aDotby5zY3JvbGxMZWZ0OnQ9PWU/by5zY3JvbGxMZWZ0Om8uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aC1vLnNjcm9sbExlZnR9fXNCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzQikoZnUoS2gpLGZ1KHJCKSxmdShtQyksZnUoQUYsOCkpfSxzQi7JtWRpcj1obyh7dHlwZTpzQixzZWxlY3RvcnM6W1siIiwiY2RrLXNjcm9sbGFibGUiLCIiXSxbIiIsImNka1Njcm9sbGFibGUiLCIiXV19KSxzQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpyQn0se3R5cGU6bUN9LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHNCLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGstc2Nyb2xsYWJsZV0sIFtjZGtTY3JvbGxhYmxlXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6ckJ9LHt0eXBlOm1DfSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV19KSxudWxsKTtjbGFzcyBsQntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9jaGFuZ2U9bmV3IEIsdGhpcy5fY2hhbmdlTGlzdGVuZXI9dD0+e3RoaXMuX2NoYW5nZS5uZXh0KHQpfSx0aGlzLl9kb2N1bWVudD1uLGUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57aWYodC5pc0Jyb3dzZXIpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dC5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2NoYW5nZUxpc3RlbmVyKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIix0aGlzLl9jaGFuZ2VMaXN0ZW5lcil9dGhpcy5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT50aGlzLl92aWV3cG9ydFNpemU9bnVsbCkpfSkpfW5nT25EZXN0cm95KCl7aWYodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuX2NoYW5nZS5jb21wbGV0ZSgpfWdldFZpZXdwb3J0U2l6ZSgpe3RoaXMuX3ZpZXdwb3J0U2l6ZXx8dGhpcy5fdXBkYXRlVmlld3BvcnRTaXplKCk7Y29uc3QgdD17d2lkdGg6dGhpcy5fdmlld3BvcnRTaXplLndpZHRoLGhlaWdodDp0aGlzLl92aWV3cG9ydFNpemUuaGVpZ2h0fTtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHwodGhpcy5fdmlld3BvcnRTaXplPW51bGwpLHR9Z2V0Vmlld3BvcnRSZWN0KCl7Y29uc3QgdD10aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5nZXRWaWV3cG9ydFNpemUoKTtyZXR1cm57dG9wOnQudG9wLGxlZnQ6dC5sZWZ0LGJvdHRvbTp0LnRvcCtuLHJpZ2h0OnQubGVmdCtlLGhlaWdodDpuLHdpZHRoOmV9fWdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybnt0b3A6MCxsZWZ0OjB9O2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQsZT10aGlzLl9nZXRXaW5kb3coKSxuPXQuZG9jdW1lbnRFbGVtZW50LG89bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOi1vLnRvcHx8dC5ib2R5LnNjcm9sbFRvcHx8ZS5zY3JvbGxZfHxuLnNjcm9sbFRvcHx8MCxsZWZ0Oi1vLmxlZnR8fHQuYm9keS5zY3JvbGxMZWZ0fHxlLnNjcm9sbFh8fG4uc2Nyb2xsTGVmdHx8MH19Y2hhbmdlKHQ9MjApe3JldHVybiB0PjA/dGhpcy5fY2hhbmdlLnBpcGUoZ2UodCkpOnRoaXMuX2NoYW5nZX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X3VwZGF0ZVZpZXdwb3J0U2l6ZSgpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dGhpcy5fdmlld3BvcnRTaXplPXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcj97d2lkdGg6dC5pbm5lcldpZHRoLGhlaWdodDp0LmlubmVySGVpZ2h0fTp7d2lkdGg6MCxoZWlnaHQ6MH19fWxCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsQikoVHIoX0gpLFRyKG1DKSxUcihzTSw4KSl9LGxCLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBsQihUcihfSCksVHIobUMpLFRyKHNNLDgpKX0sdG9rZW46bEIscHJvdmlkZWRJbjoicm9vdCJ9KSxsQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOl9IfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobEIsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9IfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Y29uc3QgY0I9InVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/Y3Q6b3Q7Y2xhc3MgZEIgZXh0ZW5kcyBzQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtpZihzdXBlcih0LGEsbixpKSx0aGlzLmVsZW1lbnRSZWY9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PW8sdGhpcy5fZGV0YWNoZWRTdWJqZWN0PW5ldyBCLHRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0PW5ldyBCLHRoaXMuX29yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIsdGhpcy5fYXBwZW5kT25seT0hMSx0aGlzLnNjcm9sbGVkSW5kZXhDaGFuZ2U9bmV3IFQoKHQ9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5LnNjcm9sbGVkSW5kZXhDaGFuZ2Uuc3Vic2NyaWJlKChlPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+dGhpcy5uZ1pvbmUucnVuKCgoKT0+dC5uZXh0KGUpKSkpKSkpKSksdGhpcy5yZW5kZXJlZFJhbmdlU3RyZWFtPXRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0LHRoaXMuX3RvdGFsQ29udGVudFNpemU9MCx0aGlzLl90b3RhbENvbnRlbnRXaWR0aD0iIix0aGlzLl90b3RhbENvbnRlbnRIZWlnaHQ9IiIsdGhpcy5fcmVuZGVyZWRSYW5nZT17c3RhcnQ6MCxlbmQ6MH0sdGhpcy5fZGF0YUxlbmd0aD0wLHRoaXMuX3ZpZXdwb3J0U2l6ZT0wLHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldD0wLHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT0hMSx0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmc9ITEsdGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb249W10sdGhpcy5fdmlld3BvcnRDaGFuZ2VzPWYuRU1QVFksIW8mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcignRXJyb3I6IGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCByZXF1aXJlcyB0aGUgIml0ZW1TaXplIiBwcm9wZXJ0eSB0byBiZSBzZXQuJyk7dGhpcy5fdmlld3BvcnRDaGFuZ2VzPXIuY2hhbmdlKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuY2hlY2tWaWV3cG9ydFNpemUoKX0pKX1nZXQgb3JpZW50YXRpb24oKXtyZXR1cm4gdGhpcy5fb3JpZW50YXRpb259c2V0IG9yaWVudGF0aW9uKHQpe3RoaXMuX29yaWVudGF0aW9uIT09dCYmKHRoaXMuX29yaWVudGF0aW9uPXQsdGhpcy5fY2FsY3VsYXRlU3BhY2VyU2l6ZSgpKX1nZXQgYXBwZW5kT25seSgpe3JldHVybiB0aGlzLl9hcHBlbmRPbmx5fXNldCBhcHBlbmRPbmx5KHQpe3RoaXMuX2FwcGVuZE9ubHk9cEgodCl9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9tZWFzdXJlVmlld3BvcnRTaXplKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuYXR0YWNoKHRoaXMpLHRoaXMuZWxlbWVudFNjcm9sbGVkKCkucGlwZShCZShudWxsKSxnZSgwLGNCKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25Db250ZW50U2Nyb2xsZWQoKSkpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKX0pKSkpfW5nT25EZXN0cm95KCl7dGhpcy5kZXRhY2goKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5kZXRhY2goKSx0aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdC5jb21wbGV0ZSgpLHRoaXMuX2RldGFjaGVkU3ViamVjdC5jb21wbGV0ZSgpLHRoaXMuX3ZpZXdwb3J0Q2hhbmdlcy51bnN1YnNjcmliZSgpLHN1cGVyLm5nT25EZXN0cm95KCl9YXR0YWNoKHQpe2lmKHRoaXMuX2Zvck9mJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCBpcyBhbHJlYWR5IGF0dGFjaGVkLiIpO3RoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX2Zvck9mPXQsdGhpcy5fZm9yT2YuZGF0YVN0cmVhbS5waXBlKFVlKHRoaXMuX2RldGFjaGVkU3ViamVjdCkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dC5sZW5ndGg7ZSE9PXRoaXMuX2RhdGFMZW5ndGgmJih0aGlzLl9kYXRhTGVuZ3RoPWUsdGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25EYXRhTGVuZ3RoQ2hhbmdlZCgpKSx0aGlzLl9kb0NoYW5nZURldGVjdGlvbigpfSkpfSkpfWRldGFjaCgpe3RoaXMuX2Zvck9mPW51bGwsdGhpcy5fZGV0YWNoZWRTdWJqZWN0Lm5leHQoKX1nZXREYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2RhdGFMZW5ndGh9Z2V0Vmlld3BvcnRTaXplKCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0U2l6ZX1nZXRSZW5kZXJlZFJhbmdlKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVkUmFuZ2V9c2V0VG90YWxDb250ZW50U2l6ZSh0KXt0aGlzLl90b3RhbENvbnRlbnRTaXplIT09dCYmKHRoaXMuX3RvdGFsQ29udGVudFNpemU9dCx0aGlzLl9jYWxjdWxhdGVTcGFjZXJTaXplKCksdGhpcy5fbWFya0NoYW5nZURldGVjdGlvbk5lZWRlZCgpKX1zZXRSZW5kZXJlZFJhbmdlKHQpeygKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdC5zdGFydD09bi5zdGFydCYmdC5lbmQ9PW4uZW5kfSkodGhpcy5fcmVuZGVyZWRSYW5nZSx0KXx8KHRoaXMuYXBwZW5kT25seSYmKHQ9e3N0YXJ0OjAsZW5kOk1hdGgubWF4KHRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kLHQuZW5kKX0pLHRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0Lm5leHQodGhpcy5fcmVuZGVyZWRSYW5nZT10KSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCgoKT0+dGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25Db250ZW50UmVuZGVyZWQoKSkpKX1nZXRPZmZzZXRUb1JlbmRlcmVkQ29udGVudFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT9udWxsOnRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldH1zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQodCxlPSJ0by1zdGFydCIpe2NvbnN0IG49Imhvcml6b250YWwiPT10aGlzLm9yaWVudGF0aW9uLG89bj8iWCI6IlkiO2xldCBpPWB0cmFuc2xhdGUke299KCR7TnVtYmVyKChuJiYodGhpcy5kaXImJiJydGwiPT10aGlzLmRpci52YWx1ZSk/LTE6MSkqdCl9cHgpYDt0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQ9dCwidG8tZW5kIj09PWUmJihpKz1gIHRyYW5zbGF0ZSR7b30oLTEwMCUpYCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITApLHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSE9aSYmKHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybT1pLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKCgpPT57dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPyh0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQtPXRoaXMubWVhc3VyZVJlbmRlcmVkQ29udGVudFNpemUoKSx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITEsdGhpcy5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQodGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0KSk6dGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25SZW5kZXJlZE9mZnNldENoYW5nZWQoKX0pKSl9c2Nyb2xsVG9PZmZzZXQodCxlPSJhdXRvIil7Y29uc3Qgbj17YmVoYXZpb3I6ZX07Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj9uLnN0YXJ0PXQ6bi50b3A9dCx0aGlzLnNjcm9sbFRvKG4pfXNjcm9sbFRvSW5kZXgodCxlPSJhdXRvIil7dGhpcy5fc2Nyb2xsU3RyYXRlZ3kuc2Nyb2xsVG9JbmRleCh0LGUpfW1lYXN1cmVTY3JvbGxPZmZzZXQodCl7cmV0dXJuIHN1cGVyLm1lYXN1cmVTY3JvbGxPZmZzZXQodHx8KCJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/InN0YXJ0IjoidG9wIikpfW1lYXN1cmVSZW5kZXJlZENvbnRlbnRTaXplKCl7Y29uc3QgdD10aGlzLl9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50O3JldHVybiJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/dC5vZmZzZXRXaWR0aDp0Lm9mZnNldEhlaWdodH1tZWFzdXJlUmFuZ2VTaXplKHQpe3JldHVybiB0aGlzLl9mb3JPZj90aGlzLl9mb3JPZi5tZWFzdXJlUmFuZ2VTaXplKHQsdGhpcy5vcmllbnRhdGlvbik6MH1jaGVja1ZpZXdwb3J0U2l6ZSgpe3RoaXMuX21lYXN1cmVWaWV3cG9ydFNpemUoKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5vbkRhdGFMZW5ndGhDaGFuZ2VkKCl9X21lYXN1cmVWaWV3cG9ydFNpemUoKXtjb25zdCB0PXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3ZpZXdwb3J0U2l6ZT0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP3QuY2xpZW50V2lkdGg6dC5jbGllbnRIZWlnaHR9X21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQodCl7dCYmdGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb24ucHVzaCh0KSx0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmd8fCh0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmc9ITAsdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX2RvQ2hhbmdlRGV0ZWN0aW9uKCl9KSkpKSl9X2RvQ2hhbmdlRGV0ZWN0aW9uKCl7dGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSExLHRoaXMuX2NvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPXRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSx0aGlzLm5nWm9uZS5ydW4oKCgpPT50aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSkpO2NvbnN0IHQ9dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb247dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb249W107Zm9yKGNvbnN0IGUgb2YgdCllKCl9X2NhbGN1bGF0ZVNwYWNlclNpemUoKXt0aGlzLl90b3RhbENvbnRlbnRIZWlnaHQ9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8iIjpgJHt0aGlzLl90b3RhbENvbnRlbnRTaXplfXB4YCx0aGlzLl90b3RhbENvbnRlbnRXaWR0aD0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP2Ake3RoaXMuX3RvdGFsQ29udGVudFNpemV9cHhgOiIifX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHBCKHQsZSxuKXtpZighbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QpcmV0dXJuIDA7Y29uc3Qgbz1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiJob3Jpem9udGFsIj09PXQ/InN0YXJ0Ij09PWU/by5sZWZ0Om8ucmlnaHQ6InN0YXJ0Ij09PWU/by50b3A6by5ib3R0b219ZEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRCKShmdShLaCksZnUoT2IpLGZ1KG1DKSxmdShuQiw4KSxmdShBRiw4KSxmdShyQiksZnUobEIpKX0sZEIuybVjbXA9c28oe3R5cGU6ZEIsc2VsZWN0b3JzOltbImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoZUIsNyksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5fY29udGVudFdyYXBwZXI9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJjZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCIsImhvcml6b250YWwiPT09bi5vcmllbnRhdGlvbikoImNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsImhvcml6b250YWwiIT09bi5vcmllbnRhdGlvbil9LGlucHV0czp7b3JpZW50YXRpb246Im9yaWVudGF0aW9uIixhcHBlbmRPbmx5OiJhcHBlbmRPbmx5In0sb3V0cHV0czp7c2Nyb2xsZWRJbmRleENoYW5nZToic2Nyb2xsZWRJbmRleENoYW5nZSJ9LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6c0IsdXNlRXhpc3Rpbmc6ZEJ9XSksUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo0LHZhcnM6NCxjb25zdHM6W1sxLCJjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyIl0sWyJjb250ZW50V3JhcHBlciIsIiJdLFsxLCJjZGstdmlydHVhbC1zY3JvbGwtc3BhY2VyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihJdSgpLF91KDAsImRpdiIsMCwxKSxIdSgyKSxDdSgpLE11KDMsImRpdiIsMikpLDImZSYmKERjKDMpLGxmKCJ3aWR0aCIsbi5fdG90YWxDb250ZW50V2lkdGgpKCJoZWlnaHQiLG4uX3RvdGFsQ29udGVudEhlaWdodCkpfSxzdHlsZXM6WyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzphdXRvO2NvbnRhaW46c3RyaWN0O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3dpbGwtY2hhbmdlOnNjcm9sbC1wb3NpdGlvbjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Y29udGFpbjpjb250ZW50fVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntyaWdodDowO2xlZnQ6YXV0b30uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7bWluLWhlaWdodDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5kbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj51bDpub3QoW2Nka1ZpcnR1YWxGb3JdKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MDtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO291dGxpbmU6bm9uZX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi13aWR0aDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5vbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2hlaWdodDoxcHg7d2lkdGg6MXB4O3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlcntyaWdodDowO2xlZnQ6YXV0bzt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGRCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltuQl19XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6ckJ9LHt0eXBlOmxCfV0sZEIucHJvcERlY29yYXRvcnM9e29yaWVudGF0aW9uOlt7dHlwZTpSX31dLGFwcGVuZE9ubHk6W3t0eXBlOlJffV0sc2Nyb2xsZWRJbmRleENoYW5nZTpbe3R5cGU6RV99XSxfY29udGVudFdyYXBwZXI6W3t0eXBlOmFyLGFyZ3M6WyJjb250ZW50V3JhcHBlciIse3N0YXRpYzohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZEIsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0Iix0ZW1wbGF0ZTonXHgzYyEtLVxuICBXcmFwIHRoZSByZW5kZXJlZCBjb250ZW50IGluIGFuIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gb2Zmc2V0IGl0IGJhc2VkIG9uIHRoZSBzY3JvbGxcbiAgcG9zaXRpb24uXG4tLVx4M2VcbjxkaXYgI2NvbnRlbnRXcmFwcGVyIGNsYXNzPSJjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5ceDNjIS0tXG4gIFNwYWNlciB1c2VkIHRvIGZvcmNlIHRoZSBzY3JvbGxpbmcgY29udGFpbmVyIHRvIHRoZSBjb3JyZWN0IHNpemUgZm9yIHRoZSAqdG90YWwqIG51bWJlciBvZiBpdGVtc1xuICBzbyB0aGF0IHRoZSBzY3JvbGxiYXIgY2FwdHVyZXMgdGhlIHNpemUgb2YgdGhlIGVudGlyZSBkYXRhIHNldC5cbi0tXHgzZVxuPGRpdiBjbGFzcz0iY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlciJcbiAgICAgW3N0eWxlLndpZHRoXT0iX3RvdGFsQ29udGVudFdpZHRoIiBbc3R5bGUuaGVpZ2h0XT0iX3RvdGFsQ29udGVudEhlaWdodCI+PC9kaXY+XG4nLGhvc3Q6e2NsYXNzOiJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLCJbY2xhc3MuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWxdIjonb3JpZW50YXRpb24gPT09ICJob3Jpem9udGFsIicsIltjbGFzcy5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWxdIjonb3JpZW50YXRpb24gIT09ICJob3Jpem9udGFsIid9LGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNoLHByb3ZpZGVyczpbe3Byb3ZpZGU6c0IsdXNlRXhpc3Rpbmc6ZEJ9XSxzdHlsZXM6WyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzphdXRvO2NvbnRhaW46c3RyaWN0O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3dpbGwtY2hhbmdlOnNjcm9sbC1wb3NpdGlvbjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Y29udGFpbjpjb250ZW50fVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntyaWdodDowO2xlZnQ6YXV0b30uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7bWluLWhlaWdodDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5kbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj51bDpub3QoW2Nka1ZpcnR1YWxGb3JdKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MDtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO291dGxpbmU6bm9uZX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi13aWR0aDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5vbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2hlaWdodDoxcHg7d2lkdGg6MXB4O3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlcntyaWdodDowO2xlZnQ6YXV0bzt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltuQl19XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6ckJ9LHt0eXBlOmxCfV19KSx7c2Nyb2xsZWRJbmRleENoYW5nZTpbe3R5cGU6RV99XSxvcmllbnRhdGlvbjpbe3R5cGU6Ul99XSxhcHBlbmRPbmx5Olt7dHlwZTpSX31dLF9jb250ZW50V3JhcHBlcjpbe3R5cGU6YXIsYXJnczpbImNvbnRlbnRXcmFwcGVyIix7c3RhdGljOiEwfV19XX0pO2NsYXNzIG1Ce2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fdGVtcGxhdGU9ZSx0aGlzLl9kaWZmZXJzPW4sdGhpcy5fdmlld1JlcGVhdGVyPW8sdGhpcy5fdmlld3BvcnQ9aSx0aGlzLnZpZXdDaGFuZ2U9bmV3IEIsdGhpcy5fZGF0YVNvdXJjZUNoYW5nZXM9bmV3IEIsdGhpcy5kYXRhU3RyZWFtPXRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLnBpcGUoQmUobnVsbCksTmUoKSxWZSgoKFt0LGVdKT0+dGhpcy5fY2hhbmdlRGF0YVNvdXJjZSh0LGUpKSksRmUoMSkpLHRoaXMuX2RpZmZlcj1udWxsLHRoaXMuX25lZWRzVXBkYXRlPSExLHRoaXMuX2Rlc3Ryb3llZD1uZXcgQix0aGlzLmRhdGFTdHJlYW0uc3Vic2NyaWJlKCh0PT57dGhpcy5fZGF0YT10LHRoaXMuX29uUmVuZGVyZWREYXRhQ2hhbmdlKCl9KSksdGhpcy5fdmlld3BvcnQucmVuZGVyZWRSYW5nZVN0cmVhbS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3JlbmRlcmVkUmFuZ2U9dCxhLnJ1bigoKCk9PnRoaXMudmlld0NoYW5nZS5uZXh0KHRoaXMuX3JlbmRlcmVkUmFuZ2UpKSksdGhpcy5fb25SZW5kZXJlZERhdGFDaGFuZ2UoKX0pKSx0aGlzLl92aWV3cG9ydC5hdHRhY2godGhpcyl9Z2V0IGNka1ZpcnR1YWxGb3JPZigpe3JldHVybiB0aGlzLl9jZGtWaXJ0dWFsRm9yT2Z9c2V0IGNka1ZpcnR1YWxGb3JPZih0KXt0aGlzLl9jZGtWaXJ0dWFsRm9yT2Y9dCxaTCh0KT90aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5uZXh0KHQpOnRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQobmV3IFhMKEx0KHQpP3Q6QXJyYXkuZnJvbSh0fHxbXSkpKX1nZXQgY2RrVmlydHVhbEZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fY2RrVmlydHVhbEZvclRyYWNrQnl9c2V0IGNka1ZpcnR1YWxGb3JUcmFja0J5KHQpe3RoaXMuX25lZWRzVXBkYXRlPSEwLHRoaXMuX2Nka1ZpcnR1YWxGb3JUcmFja0J5PXQ/KGUsbik9PnQoZSsodGhpcy5fcmVuZGVyZWRSYW5nZT90aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0OjApLG4pOnZvaWQgMH1zZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlKHQpe3QmJih0aGlzLl9uZWVkc1VwZGF0ZT0hMCx0aGlzLl90ZW1wbGF0ZT10KX1nZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplKCl7cmV0dXJuIHRoaXMuX3ZpZXdSZXBlYXRlci52aWV3Q2FjaGVTaXplfXNldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUodCl7dGhpcy5fdmlld1JlcGVhdGVyLnZpZXdDYWNoZVNpemU9bUgodCl9bWVhc3VyZVJhbmdlU2l6ZSh0LGUpe2lmKHQuc3RhcnQ+PXQuZW5kKXJldHVybiAwO2lmKCh0LnN0YXJ0PHRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnR8fHQuZW5kPnRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJFcnJvcjogYXR0ZW1wdGVkIHRvIG1lYXN1cmUgYW4gaXRlbSB0aGF0IGlzbid0IHJlbmRlcmVkLiIpO2NvbnN0IG49dC5zdGFydC10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LG89dC5lbmQtdC5zdGFydDtsZXQgaSxhO2ZvcihsZXQgdD0wO3Q8bzt0Kyspe2NvbnN0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodCtuKTtpZihlJiZlLnJvb3ROb2Rlcy5sZW5ndGgpe2k9YT1lLnJvb3ROb2Rlc1swXTticmVha319Zm9yKGxldCB0PW8tMTt0Pi0xO3QtLSl7Y29uc3QgZT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldCh0K24pO2lmKGUmJmUucm9vdE5vZGVzLmxlbmd0aCl7YT1lLnJvb3ROb2Rlc1tlLnJvb3ROb2Rlcy5sZW5ndGgtMV07YnJlYWt9fXJldHVybiBpJiZhP3BCKGUsImVuZCIsYSktcEIoZSwic3RhcnQiLGkpOjB9bmdEb0NoZWNrKCl7aWYodGhpcy5fZGlmZmVyJiZ0aGlzLl9uZWVkc1VwZGF0ZSl7Y29uc3QgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9yZW5kZXJlZEl0ZW1zKTt0P3RoaXMuX2FwcGx5Q2hhbmdlcyh0KTp0aGlzLl91cGRhdGVDb250ZXh0KCksdGhpcy5fbmVlZHNVcGRhdGU9ITF9fW5nT25EZXN0cm95KCl7dGhpcy5fdmlld3BvcnQuZGV0YWNoKCksdGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dCh2b2lkIDApLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy52aWV3Q2hhbmdlLmNvbXBsZXRlKCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl92aWV3UmVwZWF0ZXIuZGV0YWNoKCl9X29uUmVuZGVyZWREYXRhQ2hhbmdlKCl7dGhpcy5fcmVuZGVyZWRSYW5nZSYmKHRoaXMuX3JlbmRlcmVkSXRlbXM9dGhpcy5fZGF0YS5zbGljZSh0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LHRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kKSx0aGlzLl9kaWZmZXJ8fCh0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHRoaXMuX3JlbmRlcmVkSXRlbXMpLmNyZWF0ZSgoKHQsZSk9PnRoaXMuY2RrVmlydHVhbEZvclRyYWNrQnk/dGhpcy5jZGtWaXJ0dWFsRm9yVHJhY2tCeSh0LGUpOmUpKSksdGhpcy5fbmVlZHNVcGRhdGU9ITApfV9jaGFuZ2VEYXRhU291cmNlKHQsZSl7cmV0dXJuIHQmJnQuZGlzY29ubmVjdCh0aGlzKSx0aGlzLl9uZWVkc1VwZGF0ZT0hMCxlP2UuY29ubmVjdCh0aGlzKTp6dCgpfV91cGRhdGVDb250ZXh0KCl7Y29uc3QgdD10aGlzLl9kYXRhLmxlbmd0aDtsZXQgZT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aDtmb3IoO2UtLTspe2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQoZSk7bi5jb250ZXh0LmluZGV4PXRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQrZSxuLmNvbnRleHQuY291bnQ9dCx0aGlzLl91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKG4uY29udGV4dCksbi5kZXRlY3RDaGFuZ2VzKCl9fV9hcHBseUNoYW5nZXModCl7dGhpcy5fdmlld1JlcGVhdGVyLmFwcGx5Q2hhbmdlcyh0LHRoaXMuX3ZpZXdDb250YWluZXJSZWYsKCh0LGUsbik9PnRoaXMuX2dldEVtYmVkZGVkVmlld0FyZ3ModCxuKSksKHQ9PnQuaXRlbSkpLHQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKCh0PT57dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodC5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PXQuaXRlbX0pKTtjb25zdCBlPXRoaXMuX2RhdGEubGVuZ3RoO2xldCBuPXRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoO2Zvcig7bi0tOyl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldChuKTt0LmNvbnRleHQuaW5kZXg9dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCtuLHQuY29udGV4dC5jb3VudD1lLHRoaXMuX3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModC5jb250ZXh0KX19X3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModCl7dC5maXJzdD0wPT09dC5pbmRleCx0Lmxhc3Q9dC5pbmRleD09PXQuY291bnQtMSx0LmV2ZW49dC5pbmRleCUyPT0wLHQub2RkPSF0LmV2ZW59X2dldEVtYmVkZGVkVmlld0FyZ3ModCxlKXtyZXR1cm57dGVtcGxhdGVSZWY6dGhpcy5fdGVtcGxhdGUsY29udGV4dDp7JGltcGxpY2l0OnQuaXRlbSxjZGtWaXJ0dWFsRm9yT2Y6dGhpcy5fY2RrVmlydHVhbEZvck9mLGluZGV4Oi0xLGNvdW50Oi0xLGZpcnN0OiExLGxhc3Q6ITEsb2RkOiExLGV2ZW46ITF9LGluZGV4OmV9fX1tQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bUIpKGZ1KEZiKSxmdShFYiksZnUoaGIpLGZ1KHRCKSxmdShkQiw0KSxmdShtQykpfSxtQi7JtWRpcj1obyh7dHlwZTptQixzZWxlY3RvcnM6W1siIiwiY2RrVmlydHVhbEZvciIsIiIsImNka1ZpcnR1YWxGb3JPZiIsIiJdXSxpbnB1dHM6e2Nka1ZpcnR1YWxGb3JPZjoiY2RrVmlydHVhbEZvck9mIixjZGtWaXJ0dWFsRm9yVHJhY2tCeToiY2RrVmlydHVhbEZvclRyYWNrQnkiLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZToiY2RrVmlydHVhbEZvclRlbXBsYXRlIixjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemU6ImNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSJ9LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6dEIsdXNlQ2xhc3M6Skx9XSldfSksbUIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTpKTCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt0Ql19XX0se3R5cGU6ZEIsZGVjb3JhdG9yczpbe3R5cGU6VXJ9XX0se3R5cGU6bUN9XSxtQi5wcm9wRGVjb3JhdG9ycz17Y2RrVmlydHVhbEZvck9mOlt7dHlwZTpSX31dLGNka1ZpcnR1YWxGb3JUcmFja0J5Olt7dHlwZTpSX31dLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZTpbe3R5cGU6Ul99XSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemU6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobUIsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1ZpcnR1YWxGb3JdW2Nka1ZpcnR1YWxGb3JPZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6dEIsdXNlQ2xhc3M6Skx9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOkpMLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3RCXX1dfSx7dHlwZTpkQixkZWNvcmF0b3JzOlt7dHlwZTpVcn1dfSx7dHlwZTptQ31dfSkse2Nka1ZpcnR1YWxGb3JPZjpbe3R5cGU6Ul99XSxjZGtWaXJ0dWFsRm9yVHJhY2tCeTpbe3R5cGU6Ul99XSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGU6W3t0eXBlOlJffV0sY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplOlt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB1Qnt9dUIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVCKX0sdUIuybVtb2Q9dW8oe3R5cGU6dUJ9KSx1Qi7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih1Qixbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W3NCXSxkZWNsYXJhdGlvbnM6W3NCXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHVCLHtkZWNsYXJhdGlvbnM6W3NCXSxleHBvcnRzOltzQl19KTtjbGFzcyBmQnt9ZnVuY3Rpb24gZ0IoKXt0aHJvdyBFcnJvcigiSG9zdCBhbHJlYWR5IGhhcyBhIHBvcnRhbCBhdHRhY2hlZCIpfWZCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmQil9LGZCLsm1bW9kPXVvKHt0eXBlOmZCfSksZkIuybVpbmo9RG4oe2ltcG9ydHM6W1tORixDSCx1Ql0sTkYsdUJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmQixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W05GLENILHVCXSxleHBvcnRzOltORix1QixhQixtQixkQl0sZGVjbGFyYXRpb25zOlthQixtQixkQl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhmQix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2FCLG1CLGRCXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltORixDSCx1Ql19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsdUIsYUIsbUIsZEJdfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgaEJ7YXR0YWNoKHQpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKG51bGw9PXQmJihmdW5jdGlvbiBlKCl7dGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXR0YWNoIGEgcG9ydGFsIHRvIGEgbnVsbCBQb3J0YWxPdXRsZXQiKX0pKCksdC5oYXNBdHRhY2hlZCgpJiZnQigpKSx0aGlzLl9hdHRhY2hlZEhvc3Q9dCx0LmF0dGFjaCh0aGlzKX1kZXRhY2goKXtsZXQgdD10aGlzLl9hdHRhY2hlZEhvc3Q7bnVsbCE9dD8odGhpcy5fYXR0YWNoZWRIb3N0PW51bGwsdC5kZXRhY2goKSk6KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGRldGFjaCBhIHBvcnRhbCB0aGF0IGlzIG5vdCBhdHRhY2hlZCB0byBhIGhvc3QiKX0pKCl9Z2V0IGlzQXR0YWNoZWQoKXtyZXR1cm4gbnVsbCE9dGhpcy5fYXR0YWNoZWRIb3N0fXNldEF0dGFjaGVkSG9zdCh0KXt0aGlzLl9hdHRhY2hlZEhvc3Q9dH19Y2xhc3MgYkIgZXh0ZW5kcyBoQntjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcigpLHRoaXMuY29tcG9uZW50PXQsdGhpcy52aWV3Q29udGFpbmVyUmVmPWUsdGhpcy5pbmplY3Rvcj1uLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW99fWNsYXNzIHlCIGV4dGVuZHMgaEJ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy50ZW1wbGF0ZVJlZj10LHRoaXMudmlld0NvbnRhaW5lclJlZj1lLHRoaXMuY29udGV4dD1ufWdldCBvcmlnaW4oKXtyZXR1cm4gdGhpcy50ZW1wbGF0ZVJlZi5lbGVtZW50UmVmfWF0dGFjaCh0LGU9dGhpcy5jb250ZXh0KXtyZXR1cm4gdGhpcy5jb250ZXh0PWUsc3VwZXIuYXR0YWNoKHQpfWRldGFjaCgpe3JldHVybiB0aGlzLmNvbnRleHQ9dm9pZCAwLHN1cGVyLmRldGFjaCgpfX1jbGFzcyBfQiBleHRlbmRzIGhCe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5lbGVtZW50PXQgaW5zdGFuY2VvZiBLaD90Lm5hdGl2ZUVsZW1lbnQ6dH19Y2xhc3MgQ0J7Y29uc3RydWN0b3IoKXt0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuYXR0YWNoRG9tUG9ydGFsPW51bGx9aGFzQXR0YWNoZWQoKXtyZXR1cm4hIXRoaXMuX2F0dGFjaGVkUG9ydGFsfWF0dGFjaCh0KXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJih0fHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJNdXN0IHByb3ZpZGUgYSBwb3J0YWwgdG8gYXR0YWNoIil9KSgpLHRoaXMuaGFzQXR0YWNoZWQoKSYmZ0IoKSx0aGlzLl9pc0Rpc3Bvc2VkJiYoZnVuY3Rpb24gbigpe3Rocm93IEVycm9yKCJUaGlzIFBvcnRhbE91dGxldCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIil9KSgpKSx0IGluc3RhbmNlb2YgYkI/KHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5hdHRhY2hDb21wb25lbnRQb3J0YWwodCkpOnQgaW5zdGFuY2VvZiB5Qj8odGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpKTp0aGlzLmF0dGFjaERvbVBvcnRhbCYmdCBpbnN0YW5jZW9mIF9CPyh0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuYXR0YWNoRG9tUG9ydGFsKHQpKTp2b2lkKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKGZ1bmN0aW9uIG8oKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggYW4gdW5rbm93biBQb3J0YWwgdHlwZS4gQmFzZVBvcnRhbE91dGxldCBhY2NlcHRzIGVpdGhlciBhIENvbXBvbmVudFBvcnRhbCBvciBhIFRlbXBsYXRlUG9ydGFsLiIpfSkoKSl9ZGV0YWNoKCl7dGhpcy5fYXR0YWNoZWRQb3J0YWwmJih0aGlzLl9hdHRhY2hlZFBvcnRhbC5zZXRBdHRhY2hlZEhvc3QobnVsbCksdGhpcy5fYXR0YWNoZWRQb3J0YWw9bnVsbCksdGhpcy5faW52b2tlRGlzcG9zZUZuKCl9ZGlzcG9zZSgpe3RoaXMuaGFzQXR0YWNoZWQoKSYmdGhpcy5kZXRhY2goKSx0aGlzLl9pbnZva2VEaXNwb3NlRm4oKSx0aGlzLl9pc0Rpc3Bvc2VkPSEwfXNldERpc3Bvc2VGbih0KXt0aGlzLl9kaXNwb3NlRm49dH1faW52b2tlRGlzcG9zZUZuKCl7dGhpcy5fZGlzcG9zZUZuJiYodGhpcy5fZGlzcG9zZUZuKCksdGhpcy5fZGlzcG9zZUZuPW51bGwpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTUIgZXh0ZW5kcyBDQntjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3N1cGVyKCksdGhpcy5vdXRsZXRFbGVtZW50PXQsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPWUsdGhpcy5fYXBwUmVmPW4sdGhpcy5fZGVmYXVsdEluamVjdG9yPW8sdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+e2lmKCF0aGlzLl9kb2N1bWVudCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDYW5ub3QgYXR0YWNoIERPTSBwb3J0YWwgd2l0aG91dCBfZG9jdW1lbnQgY29uc3RydWN0b3IgcGFyYW1ldGVyIik7Y29uc3QgZT10LmVsZW1lbnQ7aWYoIWUucGFyZW50Tm9kZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJET00gcG9ydGFsIGNvbnRlbnQgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHBhcmVudCBub2RlLiIpO2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiZG9tLXBvcnRhbCIpO2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixlKSx0aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCxzdXBlci5zZXREaXNwb3NlRm4oKCgpPT57bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsbil9KSl9LHRoaXMuX2RvY3VtZW50PWl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe2NvbnN0IGU9KHQuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfHx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQuY29tcG9uZW50KTtsZXQgbjtyZXR1cm4gdC52aWV3Q29udGFpbmVyUmVmPyhuPXQudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZSx0LnZpZXdDb250YWluZXJSZWYubGVuZ3RoLHQuaW5qZWN0b3J8fHQudmlld0NvbnRhaW5lclJlZi5pbmplY3RvciksdGhpcy5zZXREaXNwb3NlRm4oKCgpPT5uLmRlc3Ryb3koKSkpKToobj1lLmNyZWF0ZSh0LmluamVjdG9yfHx0aGlzLl9kZWZhdWx0SW5qZWN0b3IpLHRoaXMuX2FwcFJlZi5hdHRhY2hWaWV3KG4uaG9zdFZpZXcpLHRoaXMuc2V0RGlzcG9zZUZuKCgoKT0+e3RoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KG4uaG9zdFZpZXcpLG4uZGVzdHJveSgpfSkpKSx0aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZ2V0Q29tcG9uZW50Um9vdE5vZGUobikpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsbn1hdHRhY2hUZW1wbGF0ZVBvcnRhbCh0KXtsZXQgZT10LnZpZXdDb250YWluZXJSZWYsbj1lLmNyZWF0ZUVtYmVkZGVkVmlldyh0LnRlbXBsYXRlUmVmLHQuY29udGV4dCk7cmV0dXJuIG4ucm9vdE5vZGVzLmZvckVhY2goKHQ9PnRoaXMub3V0bGV0RWxlbWVudC5hcHBlbmRDaGlsZCh0KSkpLG4uZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc2V0RGlzcG9zZUZuKCgoKT0+e2xldCB0PWUuaW5kZXhPZihuKTstMSE9PXQmJmUucmVtb3ZlKHQpfSkpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsbn1kaXNwb3NlKCl7c3VwZXIuZGlzcG9zZSgpLG51bGwhPXRoaXMub3V0bGV0RWxlbWVudC5wYXJlbnROb2RlJiZ0aGlzLm91dGxldEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLm91dGxldEVsZW1lbnQpfV9nZXRDb21wb25lbnRSb290Tm9kZSh0KXtyZXR1cm4gdC5ob3N0Vmlldy5yb290Tm9kZXNbMF19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB2QiBleHRlbmRzIHlCe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKX19dkIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZCKShmdShFYiksZnUoRmIpKX0sdkIuybVkaXI9aG8oe3R5cGU6dkIsc2VsZWN0b3JzOltbIiIsImNka1BvcnRhbCIsIiJdXSxleHBvcnRBczpbImNka1BvcnRhbCJdLGZlYXR1cmVzOltRcF19KSx2Qi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifSx7dHlwZTpGYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodkIsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbF0iLGV4cG9ydEFzOiJjZGtQb3J0YWwifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9LHt0eXBlOkZifV19KSxudWxsKTtjbGFzcyB4QiBleHRlbmRzIHZCe314Qi7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoeEIpKSkobnx8eEIpfX0pKCkseEIuybVkaXI9aG8oe3R5cGU6eEIsc2VsZWN0b3JzOltbIiIsImNkay1wb3J0YWwiLCIiXSxbIiIsInBvcnRhbCIsIiJdXSxleHBvcnRBczpbImNka1BvcnRhbCJdLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6dkIsdXNlRXhpc3Rpbmc6eEJ9XSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4Qixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrLXBvcnRhbF0sIFtwb3J0YWxdIixleHBvcnRBczoiY2RrUG9ydGFsIixwcm92aWRlcnM6W3twcm92aWRlOnZCLHVzZUV4aXN0aW5nOnhCfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgT0IgZXh0ZW5kcyBDQntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9dCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPWUsdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLmF0dGFjaGVkPW5ldyBTeSx0aGlzLmF0dGFjaERvbVBvcnRhbD10PT57aWYoIXRoaXMuX2RvY3VtZW50JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNhbm5vdCBhdHRhY2ggRE9NIHBvcnRhbCB3aXRob3V0IF9kb2N1bWVudCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiKTtjb25zdCBlPXQuZWxlbWVudDtpZighZS5wYXJlbnROb2RlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkRPTSBwb3J0YWwgY29udGVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgcGFyZW50IG5vZGUuIik7Y29uc3Qgbj10aGlzLl9kb2N1bWVudC5jcmVhdGVDb21tZW50KCJkb20tcG9ydGFsIik7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyksZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGUpLHRoaXMuX2dldFJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoZSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCxzdXBlci5zZXREaXNwb3NlRm4oKCgpPT57bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsbil9KSl9LHRoaXMuX2RvY3VtZW50PW59Z2V0IHBvcnRhbCgpe3JldHVybiB0aGlzLl9hdHRhY2hlZFBvcnRhbH1zZXQgcG9ydGFsKHQpeyghdGhpcy5oYXNBdHRhY2hlZCgpfHx0fHx0aGlzLl9pc0luaXRpYWxpemVkKSYmKHRoaXMuaGFzQXR0YWNoZWQoKSYmc3VwZXIuZGV0YWNoKCksdCYmc3VwZXIuYXR0YWNoKHQpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQpfWdldCBhdHRhY2hlZFJlZigpe3JldHVybiB0aGlzLl9hdHRhY2hlZFJlZn1uZ09uSW5pdCgpe3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITB9bmdPbkRlc3Ryb3koKXtzdXBlci5kaXNwb3NlKCksdGhpcy5fYXR0YWNoZWRQb3J0YWw9bnVsbCx0aGlzLl9hdHRhY2hlZFJlZj1udWxsfWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXt0LnNldEF0dGFjaGVkSG9zdCh0aGlzKTtjb25zdCBlPW51bGwhPXQudmlld0NvbnRhaW5lclJlZj90LnZpZXdDb250YWluZXJSZWY6dGhpcy5fdmlld0NvbnRhaW5lclJlZixuPSh0LmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcnx8dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0LmNvbXBvbmVudCksbz1lLmNyZWF0ZUNvbXBvbmVudChuLGUubGVuZ3RoLHQuaW5qZWN0b3J8fGUuaW5qZWN0b3IpO3JldHVybiBlIT09dGhpcy5fdmlld0NvbnRhaW5lclJlZiYmdGhpcy5fZ2V0Um9vdE5vZGUoKS5hcHBlbmRDaGlsZChvLmhvc3RWaWV3LnJvb3ROb2Rlc1swXSksc3VwZXIuc2V0RGlzcG9zZUZuKCgoKT0+by5kZXN0cm95KCkpKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuX2F0dGFjaGVkUmVmPW8sdGhpcy5hdHRhY2hlZC5lbWl0KG8pLG99YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyk7Y29uc3QgZT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0LnRlbXBsYXRlUmVmLHQuY29udGV4dCk7cmV0dXJuIHN1cGVyLnNldERpc3Bvc2VGbigoKCk9PnRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKSkpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5fYXR0YWNoZWRSZWY9ZSx0aGlzLmF0dGFjaGVkLmVtaXQoZSksZX1fZ2V0Um9vdE5vZGUoKXtjb25zdCB0PXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O3JldHVybiB0Lm5vZGVUeXBlPT09dC5FTEVNRU5UX05PREU/dDp0LnBhcmVudE5vZGV9fU9CLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPQikoZnUoR2gpLGZ1KEZiKSxmdShzTSkpfSxPQi7JtWRpcj1obyh7dHlwZTpPQixzZWxlY3RvcnM6W1siIiwiY2RrUG9ydGFsT3V0bGV0IiwiIl1dLGlucHV0czp7cG9ydGFsOlsiY2RrUG9ydGFsT3V0bGV0IiwicG9ydGFsIl19LG91dHB1dHM6e2F0dGFjaGVkOiJhdHRhY2hlZCJ9LGV4cG9ydEFzOlsiY2RrUG9ydGFsT3V0bGV0Il0sZmVhdHVyZXM6W1FwXX0pLE9CLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6R2h9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XSxPQi5wcm9wRGVjb3JhdG9ycz17YXR0YWNoZWQ6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoT0IsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbE91dGxldF0iLGV4cG9ydEFzOiJjZGtQb3J0YWxPdXRsZXQiLGlucHV0czpbInBvcnRhbDogY2RrUG9ydGFsT3V0bGV0Il19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHaH0se3R5cGU6RmJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSkse2F0dGFjaGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgUEIgZXh0ZW5kcyBPQnt9UEIuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKFBCKSkpKG58fFBCKX19KSgpLFBCLsm1ZGlyPWhvKHt0eXBlOlBCLHNlbGVjdG9yczpbWyIiLCJjZGtQb3J0YWxIb3N0IiwiIl0sWyIiLCJwb3J0YWxIb3N0IiwiIl1dLGlucHV0czp7cG9ydGFsOlsiY2RrUG9ydGFsSG9zdCIsInBvcnRhbCJdfSxleHBvcnRBczpbImNka1BvcnRhbEhvc3QiXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOk9CLHVzZUV4aXN0aW5nOlBCfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUEIsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbEhvc3RdLCBbcG9ydGFsSG9zdF0iLGV4cG9ydEFzOiJjZGtQb3J0YWxIb3N0IixpbnB1dHM6WyJwb3J0YWw6IGNka1BvcnRhbEhvc3QiXSxwcm92aWRlcnM6W3twcm92aWRlOk9CLHVzZUV4aXN0aW5nOlBCfV19XX1dLG51bGwsbnVsbCk7Y2xhc3Mgd0J7fXdCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3Qil9LHdCLsm1bW9kPXVvKHt0eXBlOndCfSksd0IuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod0IsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOlt2QixPQix4QixQQl0sZGVjbGFyYXRpb25zOlt2QixPQix4QixQQl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyh3Qix7ZGVjbGFyYXRpb25zOlt2QixPQix4QixQQl0sZXhwb3J0czpbdkIsT0IseEIsUEJdfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBrQj1TSCgpO2NsYXNzIFNCe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcz17dG9wOiIiLGxlZnQ6IiJ9LHRoaXMuX2lzRW5hYmxlZD0hMSx0aGlzLl9kb2N1bWVudD1lfWF0dGFjaCgpe31lbmFibGUoKXtpZih0aGlzLl9jYW5CZUVuYWJsZWQoKSl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMubGVmdD10LnN0eWxlLmxlZnR8fCIiLHRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy50b3A9dC5zdHlsZS50b3B8fCIiLHQuc3R5bGUubGVmdD1nSCgtdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi5sZWZ0KSx0LnN0eWxlLnRvcD1nSCgtdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi50b3ApLHQuY2xhc3NMaXN0LmFkZCgiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpLHRoaXMuX2lzRW5hYmxlZD0hMH19ZGlzYWJsZSgpe2lmKHRoaXMuX2lzRW5hYmxlZCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZT10LnN0eWxlLG49dGhpcy5fZG9jdW1lbnQuYm9keS5zdHlsZSxvPWUuc2Nyb2xsQmVoYXZpb3J8fCIiLGk9bi5zY3JvbGxCZWhhdmlvcnx8IiI7dGhpcy5faXNFbmFibGVkPSExLGUubGVmdD10aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMubGVmdCxlLnRvcD10aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMudG9wLHQuY2xhc3NMaXN0LnJlbW92ZSgiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpLGtCJiYoZS5zY3JvbGxCZWhhdmlvcj1uLnNjcm9sbEJlaGF2aW9yPSJhdXRvIiksd2luZG93LnNjcm9sbCh0aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uLmxlZnQsdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi50b3ApLGtCJiYoZS5zY3JvbGxCZWhhdmlvcj1vLG4uc2Nyb2xsQmVoYXZpb3I9aSl9fV9jYW5CZUVuYWJsZWQoKXtpZih0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJjZGstZ2xvYmFsLXNjcm9sbGJsb2NrIil8fHRoaXMuX2lzRW5hYmxlZClyZXR1cm4hMTtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmJvZHksZT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpO3JldHVybiB0LnNjcm9sbEhlaWdodD5lLmhlaWdodHx8dC5zY3JvbGxXaWR0aD5lLndpZHRofX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gREIoKXtyZXR1cm4gRXJyb3IoIlNjcm9sbCBzdHJhdGVneSBoYXMgYWxyZWFkeSBiZWVuIGF0dGFjaGVkLiIpfWNsYXNzIFJCe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3Njcm9sbERpc3BhdGNoZXI9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl92aWV3cG9ydFJ1bGVyPW4sdGhpcy5fY29uZmlnPW8sdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fZGV0YWNoPSgpPT57dGhpcy5kaXNhYmxlKCksdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSkpfX1hdHRhY2godCl7aWYodGhpcy5fb3ZlcmxheVJlZiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IERCKCk7dGhpcy5fb3ZlcmxheVJlZj10fWVuYWJsZSgpe2lmKHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbilyZXR1cm47Y29uc3QgdD10aGlzLl9zY3JvbGxEaXNwYXRjaGVyLnNjcm9sbGVkKDApO3RoaXMuX2NvbmZpZyYmdGhpcy5fY29uZmlnLnRocmVzaG9sZCYmdGhpcy5fY29uZmlnLnRocmVzaG9sZD4xPyh0aGlzLl9pbml0aWFsU2Nyb2xsUG9zaXRpb249dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkudG9wLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10LnN1YnNjcmliZSgoKCk9Pntjb25zdCB0PXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLnRvcDtNYXRoLmFicyh0LXRoaXMuX2luaXRpYWxTY3JvbGxQb3NpdGlvbik+dGhpcy5fY29uZmlnLnRocmVzaG9sZD90aGlzLl9kZXRhY2goKTp0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9KSkpOnRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10LnN1YnNjcmliZSh0aGlzLl9kZXRhY2gpfWRpc2FibGUoKXt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24mJih0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbCl9ZGV0YWNoKCl7dGhpcy5kaXNhYmxlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgRUJ7ZW5hYmxlKCl7fWRpc2FibGUoKXt9YXR0YWNoKCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gQUIodCxlKXtyZXR1cm4gZS5zb21lKChlPT50LmJvdHRvbTxlLnRvcHx8dC50b3A+ZS5ib3R0b218fHQucmlnaHQ8ZS5sZWZ0fHx0LmxlZnQ+ZS5yaWdodCkpfWZ1bmN0aW9uIFRCKHQsZSl7cmV0dXJuIGUuc29tZSgoZT0+dC50b3A8ZS50b3B8fHQuYm90dG9tPmUuYm90dG9tfHx0LmxlZnQ8ZS5sZWZ0fHx0LnJpZ2h0PmUucmlnaHQpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTkJ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj10LHRoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLl9jb25maWc9byx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbH1hdHRhY2godCl7aWYodGhpcy5fb3ZlcmxheVJlZiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IERCKCk7dGhpcy5fb3ZlcmxheVJlZj10fWVuYWJsZSgpe2lmKCF0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24pe3RoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10aGlzLl9zY3JvbGxEaXNwYXRjaGVyLnNjcm9sbGVkKHRoaXMuX2NvbmZpZz90aGlzLl9jb25maWcuc2Nyb2xsVGhyb3R0bGU6MCkuc3Vic2NyaWJlKCgoKT0+e2lmKHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzLl9jb25maWcmJnRoaXMuX2NvbmZpZy5hdXRvQ2xvc2Upe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKTtBQih0LFt7d2lkdGg6ZSxoZWlnaHQ6bixib3R0b206bixyaWdodDplLHRvcDowLGxlZnQ6MH1dKSYmKHRoaXMuZGlzYWJsZSgpLHRoaXMuX25nWm9uZS5ydW4oKCgpPT50aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpKSkpfX0pKX19ZGlzYWJsZSgpe3RoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbiYmKHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsKX1kZXRhY2goKXt0aGlzLmRpc2FibGUoKSx0aGlzLl9vdmVybGF5UmVmPW51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB6Qntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fdmlld3BvcnRSdWxlcj1lLHRoaXMuX25nWm9uZT1uLHRoaXMubm9vcD0oKT0+bmV3IEVCLHRoaXMuY2xvc2U9dD0+bmV3IFJCKHRoaXMuX3Njcm9sbERpc3BhdGNoZXIsdGhpcy5fbmdab25lLHRoaXMuX3ZpZXdwb3J0UnVsZXIsdCksdGhpcy5ibG9jaz0oKT0+bmV3IFNCKHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZG9jdW1lbnQpLHRoaXMucmVwb3NpdGlvbj10PT5uZXcgTkIodGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcix0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX25nWm9uZSx0KSx0aGlzLl9kb2N1bWVudD1vfX16Qi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ekIpKFRyKHJCKSxUcihsQiksVHIobUMpLFRyKHNNKSl9LHpCLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB6QihUcihyQiksVHIobEIpLFRyKG1DKSxUcihzTSkpfSx0b2tlbjp6Qixwcm92aWRlZEluOiJyb290In0pLHpCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ckJ9LHt0eXBlOmxCfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6Qixbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ckJ9LHt0eXBlOmxCfSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBJQntjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnNjcm9sbFN0cmF0ZWd5PW5ldyBFQix0aGlzLnBhbmVsQ2xhc3M9IiIsdGhpcy5oYXNCYWNrZHJvcD0hMSx0aGlzLmJhY2tkcm9wQ2xhc3M9ImNkay1vdmVybGF5LWRhcmstYmFja2Ryb3AiLHRoaXMuZGlzcG9zZU9uTmF2aWdhdGlvbj0hMSx0KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpO2Zvcihjb25zdCBuIG9mIGUpdm9pZCAwIT09dFtuXSYmKHRoaXNbbl09dFtuXSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgSEJ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLm9mZnNldFg9bix0aGlzLm9mZnNldFk9byx0aGlzLnBhbmVsQ2xhc3M9aSx0aGlzLm9yaWdpblg9dC5vcmlnaW5YLHRoaXMub3JpZ2luWT10Lm9yaWdpblksdGhpcy5vdmVybGF5WD1lLm92ZXJsYXlYLHRoaXMub3ZlcmxheVk9ZS5vdmVybGF5WX19Y2xhc3MgRkJ7fWNsYXNzIExCe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jb25uZWN0aW9uUGFpcj10LHRoaXMuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzPWV9fWZ1bmN0aW9uIEJCKHQsZSl7aWYoInRvcCIhPT1lJiYiYm90dG9tIiE9PWUmJiJjZW50ZXIiIT09ZSl0aHJvdyBFcnJvcihgQ29ubmVjdGVkUG9zaXRpb246IEludmFsaWQgJHt0fSAiJHtlfSIuIEV4cGVjdGVkICJ0b3AiLCAiYm90dG9tIiBvciAiY2VudGVyIi5gKX1mdW5jdGlvbiBWQih0LGUpe2lmKCJzdGFydCIhPT1lJiYiZW5kIiE9PWUmJiJjZW50ZXIiIT09ZSl0aHJvdyBFcnJvcihgQ29ubmVjdGVkUG9zaXRpb246IEludmFsaWQgJHt0fSAiJHtlfSIuIEV4cGVjdGVkICJzdGFydCIsICJlbmQiIG9yICJjZW50ZXIiLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9MQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkhCfSx7dHlwZTpGQixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV07Y2xhc3MgVUJ7Y29uc3RydWN0b3IodCl7dGhpcy5fYXR0YWNoZWRPdmVybGF5cz1bXSx0aGlzLl9kb2N1bWVudD10fW5nT25EZXN0cm95KCl7dGhpcy5kZXRhY2goKX1hZGQodCl7dGhpcy5yZW1vdmUodCksdGhpcy5fYXR0YWNoZWRPdmVybGF5cy5wdXNoKHQpfXJlbW92ZSh0KXtjb25zdCBlPXRoaXMuX2F0dGFjaGVkT3ZlcmxheXMuaW5kZXhPZih0KTtlPi0xJiZ0aGlzLl9hdHRhY2hlZE92ZXJsYXlzLnNwbGljZShlLDEpLDA9PT10aGlzLl9hdHRhY2hlZE92ZXJsYXlzLmxlbmd0aCYmdGhpcy5kZXRhY2goKX19VUIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVCKShUcihzTSkpfSxVQi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVUIoVHIoc00pKX0sdG9rZW46VUIscHJvdmlkZWRJbjoicm9vdCJ9KSxVQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVUIsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBqQiBleHRlbmRzIFVCe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX2tleWRvd25MaXN0ZW5lcj10PT57Y29uc3QgZT10aGlzLl9hdHRhY2hlZE92ZXJsYXlzO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+LTE7bi0tKWlmKGVbbl0uX2tleWRvd25FdmVudHMub2JzZXJ2ZXJzLmxlbmd0aD4wKXtlW25dLl9rZXlkb3duRXZlbnRzLm5leHQodCk7YnJlYWt9fX1hZGQodCl7c3VwZXIuYWRkKHQpLHRoaXMuX2lzQXR0YWNoZWR8fCh0aGlzLl9kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX2tleWRvd25MaXN0ZW5lciksdGhpcy5faXNBdHRhY2hlZD0hMCl9ZGV0YWNoKCl7dGhpcy5faXNBdHRhY2hlZCYmKHRoaXMuX2RvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fa2V5ZG93bkxpc3RlbmVyKSx0aGlzLl9pc0F0dGFjaGVkPSExKX19akIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpCKShUcihzTSkpfSxqQi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgakIoVHIoc00pKX0sdG9rZW46akIscHJvdmlkZWRJbjoicm9vdCJ9KSxqQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoakIsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBXQiBleHRlbmRzIFVCe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCksdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9jdXJzb3JTdHlsZUlzU2V0PSExLHRoaXMuX2NsaWNrTGlzdGVuZXI9dD0+e2NvbnN0IGU9QUgodCksbj10aGlzLl9hdHRhY2hlZE92ZXJsYXlzLnNsaWNlKCk7Zm9yKGxldCBvPW4ubGVuZ3RoLTE7bz4tMTtvLS0pe2NvbnN0IGk9bltvXTtpZighKGkuX291dHNpZGVQb2ludGVyRXZlbnRzLm9ic2VydmVycy5sZW5ndGg8MSkmJmkuaGFzQXR0YWNoZWQoKSl7aWYoaS5vdmVybGF5RWxlbWVudC5jb250YWlucyhlKSlicmVhaztpLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5uZXh0KHQpfX19fWFkZCh0KXtpZihzdXBlci5hZGQodCksIXRoaXMuX2lzQXR0YWNoZWQpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keTt0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LmFkZEV2ZW50TGlzdGVuZXIoImF1eGNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0aGlzLl9wbGF0Zm9ybS5JT1MmJiF0aGlzLl9jdXJzb3JTdHlsZUlzU2V0JiYodGhpcy5fY3Vyc29yT3JpZ2luYWxWYWx1ZT10LnN0eWxlLmN1cnNvcix0LnN0eWxlLmN1cnNvcj0icG9pbnRlciIsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMCksdGhpcy5faXNBdHRhY2hlZD0hMH19ZGV0YWNoKCl7aWYodGhpcy5faXNBdHRhY2hlZCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5ib2R5O3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYXV4Y2xpY2siLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHRoaXMuX3BsYXRmb3JtLklPUyYmdGhpcy5fY3Vyc29yU3R5bGVJc1NldCYmKHQuc3R5bGUuY3Vyc29yPXRoaXMuX2N1cnNvck9yaWdpbmFsVmFsdWUsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMSksdGhpcy5faXNBdHRhY2hlZD0hMX19fVdCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXQikoVHIoc00pLFRyKF9IKSl9LFdCLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBXQihUcihzTSksVHIoX0gpKX0sdG9rZW46V0IscHJvdmlkZWRJbjoicm9vdCJ9KSxXQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6X0h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFdCLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOl9IfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEdCPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxZQj12b2lkIDAhPT1HQi5fX2thcm1hX18mJiEhR0IuX19rYXJtYV9ffHx2b2lkIDAhPT1HQi5qYXNtaW5lJiYhIUdCLmphc21pbmV8fHZvaWQgMCE9PUdCLmplc3QmJiEhR0IuamVzdHx8dm9pZCAwIT09R0IuTW9jaGEmJiEhR0IuTW9jaGE7Y2xhc3MgcUJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX2RvY3VtZW50PXR9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2NvbnRhaW5lckVsZW1lbnQ7dCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9Z2V0Q29udGFpbmVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9jb250YWluZXJFbGVtZW50fHx0aGlzLl9jcmVhdGVDb250YWluZXIoKSx0aGlzLl9jb250YWluZXJFbGVtZW50fV9jcmVhdGVDb250YWluZXIoKXtjb25zdCB0PSJjZGstb3ZlcmxheS1jb250YWluZXIiO2lmKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcnx8WUIpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgLiR7dH1bcGxhdGZvcm09InNlcnZlciJdLCAuJHt0fVtwbGF0Zm9ybT0idGVzdCJdYCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVbdF0pfWNvbnN0IGU9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5jbGFzc0xpc3QuYWRkKHQpLFlCP2Uuc2V0QXR0cmlidXRlKCJwbGF0Zm9ybSIsInRlc3QiKTp0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fGUuc2V0QXR0cmlidXRlKCJwbGF0Zm9ybSIsInNlcnZlciIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSksdGhpcy5fY29udGFpbmVyRWxlbWVudD1lfX1xQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cUIpKFRyKHNNKSxUcihfSCkpfSxxQi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgcUIoVHIoc00pLFRyKF9IKSl9LHRva2VuOnFCLHByb3ZpZGVkSW46InJvb3QifSkscUIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOl9IfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihxQixbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpfSH1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBaQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCl7dGhpcy5fcG9ydGFsT3V0bGV0PXQsdGhpcy5faG9zdD1lLHRoaXMuX3BhbmU9bix0aGlzLl9jb25maWc9byx0aGlzLl9uZ1pvbmU9aSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXI9YSx0aGlzLl9kb2N1bWVudD1yLHRoaXMuX2xvY2F0aW9uPXMsdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcj1sLHRoaXMuX2JhY2tkcm9wRWxlbWVudD1udWxsLHRoaXMuX2JhY2tkcm9wQ2xpY2s9bmV3IEIsdGhpcy5fYXR0YWNobWVudHM9bmV3IEIsdGhpcy5fZGV0YWNobWVudHM9bmV3IEIsdGhpcy5fbG9jYXRpb25DaGFuZ2VzPWYuRU1QVFksdGhpcy5fYmFja2Ryb3BDbGlja0hhbmRsZXI9dD0+dGhpcy5fYmFja2Ryb3BDbGljay5uZXh0KHQpLHRoaXMuX2tleWRvd25FdmVudHM9bmV3IEIsdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHM9bmV3IEIsby5zY3JvbGxTdHJhdGVneSYmKHRoaXMuX3Njcm9sbFN0cmF0ZWd5PW8uc2Nyb2xsU3RyYXRlZ3ksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuYXR0YWNoKHRoaXMpKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5PW8ucG9zaXRpb25TdHJhdGVneX1nZXQgb3ZlcmxheUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fcGFuZX1nZXQgYmFja2Ryb3BFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2JhY2tkcm9wRWxlbWVudH1nZXQgaG9zdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5faG9zdH1hdHRhY2godCl7bGV0IGU9dGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaCh0KTtyZXR1cm4hdGhpcy5faG9zdC5wYXJlbnRFbGVtZW50JiZ0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQmJnRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLl9ob3N0KSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmF0dGFjaCh0aGlzKSx0aGlzLl91cGRhdGVTdGFja2luZ09yZGVyKCksdGhpcy5fdXBkYXRlRWxlbWVudFNpemUoKSx0aGlzLl91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kmJnRoaXMuX3Njcm9sbFN0cmF0ZWd5LmVuYWJsZSgpLHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9KSksdGhpcy5fdG9nZ2xlUG9pbnRlckV2ZW50cyghMCksdGhpcy5fY29uZmlnLmhhc0JhY2tkcm9wJiZ0aGlzLl9hdHRhY2hCYWNrZHJvcCgpLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdGhpcy5fY29uZmlnLnBhbmVsQ2xhc3MsITApLHRoaXMuX2F0dGFjaG1lbnRzLm5leHQoKSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIuYWRkKHRoaXMpLHRoaXMuX2NvbmZpZy5kaXNwb3NlT25OYXZpZ2F0aW9uJiYodGhpcy5fbG9jYXRpb25DaGFuZ2VzPXRoaXMuX2xvY2F0aW9uLnN1YnNjcmliZSgoKCk9PnRoaXMuZGlzcG9zZSgpKSkpLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIuYWRkKHRoaXMpLGV9ZGV0YWNoKCl7aWYoIXRoaXMuaGFzQXR0YWNoZWQoKSlyZXR1cm47dGhpcy5kZXRhY2hCYWNrZHJvcCgpLHRoaXMuX3RvZ2dsZVBvaW50ZXJFdmVudHMoITEpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGV0YWNoJiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRldGFjaCgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5JiZ0aGlzLl9zY3JvbGxTdHJhdGVneS5kaXNhYmxlKCk7Y29uc3QgdD10aGlzLl9wb3J0YWxPdXRsZXQuZGV0YWNoKCk7cmV0dXJuIHRoaXMuX2RldGFjaG1lbnRzLm5leHQoKSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHRoaXMuX2RldGFjaENvbnRlbnRXaGVuU3RhYmxlKCksdGhpcy5fbG9jYXRpb25DaGFuZ2VzLnVuc3Vic2NyaWJlKCksdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdH1kaXNwb3NlKCl7Y29uc3QgdD10aGlzLmhhc0F0dGFjaGVkKCk7dGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kaXNwb3NlKCksdGhpcy5fZGlzcG9zZVNjcm9sbFN0cmF0ZWd5KCksdGhpcy5kZXRhY2hCYWNrZHJvcCgpLHRoaXMuX2xvY2F0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdGhpcy5fcG9ydGFsT3V0bGV0LmRpc3Bvc2UoKSx0aGlzLl9hdHRhY2htZW50cy5jb21wbGV0ZSgpLHRoaXMuX2JhY2tkcm9wQ2xpY2suY29tcGxldGUoKSx0aGlzLl9rZXlkb3duRXZlbnRzLmNvbXBsZXRlKCksdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHMuY29tcGxldGUoKSx0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLnJlbW92ZSh0aGlzKSx0aGlzLl9ob3N0JiZ0aGlzLl9ob3N0LnBhcmVudE5vZGUmJih0aGlzLl9ob3N0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5faG9zdCksdGhpcy5faG9zdD1udWxsKSx0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQ9dGhpcy5fcGFuZT1udWxsLHQmJnRoaXMuX2RldGFjaG1lbnRzLm5leHQoKSx0aGlzLl9kZXRhY2htZW50cy5jb21wbGV0ZSgpfWhhc0F0dGFjaGVkKCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpfWJhY2tkcm9wQ2xpY2soKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BDbGlja31hdHRhY2htZW50cygpe3JldHVybiB0aGlzLl9hdHRhY2htZW50c31kZXRhY2htZW50cygpe3JldHVybiB0aGlzLl9kZXRhY2htZW50c31rZXlkb3duRXZlbnRzKCl7cmV0dXJuIHRoaXMuX2tleWRvd25FdmVudHN9b3V0c2lkZVBvaW50ZXJFdmVudHMoKXtyZXR1cm4gdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHN9Z2V0Q29uZmlnKCl7cmV0dXJuIHRoaXMuX2NvbmZpZ311cGRhdGVQb3NpdGlvbigpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuYXBwbHkoKX11cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHQpe3QhPT10aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiYodGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kaXNwb3NlKCksdGhpcy5fcG9zaXRpb25TdHJhdGVneT10LHRoaXMuaGFzQXR0YWNoZWQoKSYmKHQuYXR0YWNoKHRoaXMpLHRoaXMudXBkYXRlUG9zaXRpb24oKSkpfXVwZGF0ZVNpemUodCl7dGhpcy5fY29uZmlnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9jb25maWcpLHQpLHRoaXMuX3VwZGF0ZUVsZW1lbnRTaXplKCl9c2V0RGlyZWN0aW9uKHQpe3RoaXMuX2NvbmZpZz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fY29uZmlnKSx7ZGlyZWN0aW9uOnR9KSx0aGlzLl91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCl9YWRkUGFuZWxDbGFzcyh0KXt0aGlzLl9wYW5lJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdCwhMCl9cmVtb3ZlUGFuZWxDbGFzcyh0KXt0aGlzLl9wYW5lJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdCwhMSl9Z2V0RGlyZWN0aW9uKCl7Y29uc3QgdD10aGlzLl9jb25maWcuZGlyZWN0aW9uO3JldHVybiB0PyJzdHJpbmciPT10eXBlb2YgdD90OnQudmFsdWU6Imx0ciJ9dXBkYXRlU2Nyb2xsU3RyYXRlZ3kodCl7dCE9PXRoaXMuX3Njcm9sbFN0cmF0ZWd5JiYodGhpcy5fZGlzcG9zZVNjcm9sbFN0cmF0ZWd5KCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9dCx0aGlzLmhhc0F0dGFjaGVkKCkmJih0LmF0dGFjaCh0aGlzKSx0LmVuYWJsZSgpKSl9X3VwZGF0ZUVsZW1lbnREaXJlY3Rpb24oKXt0aGlzLl9ob3N0LnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLmdldERpcmVjdGlvbigpKX1fdXBkYXRlRWxlbWVudFNpemUoKXtpZighdGhpcy5fcGFuZSlyZXR1cm47Y29uc3QgdD10aGlzLl9wYW5lLnN0eWxlO3Qud2lkdGg9Z0godGhpcy5fY29uZmlnLndpZHRoKSx0LmhlaWdodD1nSCh0aGlzLl9jb25maWcuaGVpZ2h0KSx0Lm1pbldpZHRoPWdIKHRoaXMuX2NvbmZpZy5taW5XaWR0aCksdC5taW5IZWlnaHQ9Z0godGhpcy5fY29uZmlnLm1pbkhlaWdodCksdC5tYXhXaWR0aD1nSCh0aGlzLl9jb25maWcubWF4V2lkdGgpLHQubWF4SGVpZ2h0PWdIKHRoaXMuX2NvbmZpZy5tYXhIZWlnaHQpfV90b2dnbGVQb2ludGVyRXZlbnRzKHQpe3RoaXMuX3BhbmUuc3R5bGUucG9pbnRlckV2ZW50cz10PyIiOiJub25lIn1fYXR0YWNoQmFja2Ryb3AoKXtjb25zdCB0PSJjZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIjt0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNkay1vdmVybGF5LWJhY2tkcm9wIiksdGhpcy5fY29uZmlnLmJhY2tkcm9wQ2xhc3MmJnRoaXMuX3RvZ2dsZUNsYXNzZXModGhpcy5fYmFja2Ryb3BFbGVtZW50LHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzLCEwKSx0aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2JhY2tkcm9wRWxlbWVudCx0aGlzLl9ob3N0KSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyKSwidW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT90aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2JhY2tkcm9wRWxlbWVudCYmdGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQodCl9KSl9KSk6dGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQodCl9X3VwZGF0ZVN0YWNraW5nT3JkZXIoKXt0aGlzLl9ob3N0Lm5leHRTaWJsaW5nJiZ0aGlzLl9ob3N0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5faG9zdCl9ZGV0YWNoQmFja2Ryb3AoKXtsZXQgdCxlPXRoaXMuX2JhY2tkcm9wRWxlbWVudDtpZighZSlyZXR1cm47bGV0IG49KCk9PntlJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fYmFja2Ryb3BDbGlja0hhbmRsZXIpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsbiksZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSkpLHRoaXMuX2JhY2tkcm9wRWxlbWVudD09ZSYmKHRoaXMuX2JhY2tkcm9wRWxlbWVudD1udWxsKSx0aGlzLl9jb25maWcuYmFja2Ryb3BDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3NlcyhlLHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzLCExKSxjbGVhclRpbWVvdXQodCl9O2UuY2xhc3NMaXN0LnJlbW92ZSgiY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyIpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLG4pfSkpLGUuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsdD10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5zZXRUaW1lb3V0KG4sNTAwKSkpfV90b2dnbGVDbGFzc2VzKHQsZSxuKXtjb25zdCBvPXQuY2xhc3NMaXN0O2ZIKGUpLmZvckVhY2goKHQ9Pnt0JiYobj9vLmFkZCh0KTpvLnJlbW92ZSh0KSl9KSl9X2RldGFjaENvbnRlbnRXaGVuU3RhYmxlKCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IHQ9dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoVWUocGUodGhpcy5fYXR0YWNobWVudHMsdGhpcy5fZGV0YWNobWVudHMpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3BhbmUmJnRoaXMuX2hvc3QmJjAhPT10aGlzLl9wYW5lLmNoaWxkcmVuLmxlbmd0aHx8KHRoaXMuX3BhbmUmJnRoaXMuX2NvbmZpZy5wYW5lbENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdGhpcy5fY29uZmlnLnBhbmVsQ2xhc3MsITEpLHRoaXMuX2hvc3QmJnRoaXMuX2hvc3QucGFyZW50RWxlbWVudCYmKHRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudD10aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQsdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuX2hvc3QpKSx0LnVuc3Vic2NyaWJlKCkpfSkpfSkpfV9kaXNwb3NlU2Nyb2xsU3RyYXRlZ3koKXtjb25zdCB0PXRoaXMuX3Njcm9sbFN0cmF0ZWd5O3QmJih0LmRpc2FibGUoKSx0LmRldGFjaCYmdC5kZXRhY2goKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBYQj0iY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveCIsS0I9LyhbQS1aYS16JV0rKSQvO2NsYXNzIEpCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fdmlld3BvcnRSdWxlcj1lLHRoaXMuX2RvY3VtZW50PW4sdGhpcy5fcGxhdGZvcm09byx0aGlzLl9vdmVybGF5Q29udGFpbmVyPWksdGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZT17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5faXNQdXNoZWQ9ITEsdGhpcy5fY2FuUHVzaD0hMCx0aGlzLl9ncm93QWZ0ZXJPcGVuPSExLHRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucz0hMCx0aGlzLl9wb3NpdGlvbkxvY2tlZD0hMSx0aGlzLl92aWV3cG9ydE1hcmdpbj0wLHRoaXMuX3Njcm9sbGFibGVzPVtdLHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucz1bXSx0aGlzLl9wb3NpdGlvbkNoYW5nZXM9bmV3IEIsdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fb2Zmc2V0WD0wLHRoaXMuX29mZnNldFk9MCx0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzPVtdLHRoaXMucG9zaXRpb25DaGFuZ2VzPXRoaXMuX3Bvc2l0aW9uQ2hhbmdlcyx0aGlzLnNldE9yaWdpbih0KX1nZXQgcG9zaXRpb25zKCl7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc31hdHRhY2godCl7aWYodGhpcy5fb3ZlcmxheVJlZiYmdCE9PXRoaXMuX292ZXJsYXlSZWYmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVGhpcyBwb3NpdGlvbiBzdHJhdGVneSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGFuIG92ZXJsYXkiKTt0aGlzLl92YWxpZGF0ZVBvc2l0aW9ucygpLHQuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZChYQiksdGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX2JvdW5kaW5nQm94PXQuaG9zdEVsZW1lbnQsdGhpcy5fcGFuZT10Lm92ZXJsYXlFbGVtZW50LHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5faXNJbml0aWFsUmVuZGVyPSEwLHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9pc0luaXRpYWxSZW5kZXI9ITAsdGhpcy5hcHBseSgpfSkpfWFwcGx5KCl7aWYodGhpcy5faXNEaXNwb3NlZHx8IXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm47aWYoIXRoaXMuX2lzSW5pdGlhbFJlbmRlciYmdGhpcy5fcG9zaXRpb25Mb2NrZWQmJnRoaXMuX2xhc3RQb3NpdGlvbilyZXR1cm4gdm9pZCB0aGlzLnJlYXBwbHlMYXN0UG9zaXRpb24oKTt0aGlzLl9jbGVhclBhbmVsQ2xhc3NlcygpLHRoaXMuX3Jlc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXMoKSx0aGlzLl9yZXNldEJvdW5kaW5nQm94U3R5bGVzKCksdGhpcy5fdmlld3BvcnRSZWN0PXRoaXMuX2dldE5hcnJvd2VkVmlld3BvcnRSZWN0KCksdGhpcy5fb3JpZ2luUmVjdD10aGlzLl9nZXRPcmlnaW5SZWN0KCksdGhpcy5fb3ZlcmxheVJlY3Q9dGhpcy5fcGFuZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCB0PXRoaXMuX29yaWdpblJlY3QsZT10aGlzLl9vdmVybGF5UmVjdCxuPXRoaXMuX3ZpZXdwb3J0UmVjdCxvPVtdO2xldCBpO2ZvcihsZXQgYSBvZiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpe2xldCByPXRoaXMuX2dldE9yaWdpblBvaW50KHQsYSkscz10aGlzLl9nZXRPdmVybGF5UG9pbnQocixlLGEpLGw9dGhpcy5fZ2V0T3ZlcmxheUZpdChzLGUsbixhKTtpZihsLmlzQ29tcGxldGVseVdpdGhpblZpZXdwb3J0KXJldHVybiB0aGlzLl9pc1B1c2hlZD0hMSx2b2lkIHRoaXMuX2FwcGx5UG9zaXRpb24oYSxyKTt0aGlzLl9jYW5GaXRXaXRoRmxleGlibGVEaW1lbnNpb25zKGwscyxuKT9vLnB1c2goe3Bvc2l0aW9uOmEsb3JpZ2luOnIsb3ZlcmxheVJlY3Q6ZSxib3VuZGluZ0JveFJlY3Q6dGhpcy5fY2FsY3VsYXRlQm91bmRpbmdCb3hSZWN0KHIsYSl9KTooIWl8fGkub3ZlcmxheUZpdC52aXNpYmxlQXJlYTxsLnZpc2libGVBcmVhKSYmKGk9e292ZXJsYXlGaXQ6bCxvdmVybGF5UG9pbnQ6cyxvcmlnaW5Qb2ludDpyLHBvc2l0aW9uOmEsb3ZlcmxheVJlY3Q6ZX0pfWlmKG8ubGVuZ3RoKXtsZXQgdD1udWxsLGU9LTE7Zm9yKGNvbnN0IG4gb2Ygbyl7Y29uc3Qgbz1uLmJvdW5kaW5nQm94UmVjdC53aWR0aCpuLmJvdW5kaW5nQm94UmVjdC5oZWlnaHQqKG4ucG9zaXRpb24ud2VpZ2h0fHwxKTtvPmUmJihlPW8sdD1uKX1yZXR1cm4gdGhpcy5faXNQdXNoZWQ9ITEsdm9pZCB0aGlzLl9hcHBseVBvc2l0aW9uKHQucG9zaXRpb24sdC5vcmlnaW4pfWlmKHRoaXMuX2NhblB1c2gpcmV0dXJuIHRoaXMuX2lzUHVzaGVkPSEwLHZvaWQgdGhpcy5fYXBwbHlQb3NpdGlvbihpLnBvc2l0aW9uLGkub3JpZ2luUG9pbnQpO3RoaXMuX2FwcGx5UG9zaXRpb24oaS5wb3NpdGlvbixpLm9yaWdpblBvaW50KX1kZXRhY2goKXt0aGlzLl9jbGVhclBhbmVsQ2xhc3NlcygpLHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsLHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudD1udWxsLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5fYm91bmRpbmdCb3gmJlFCKHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLHt0b3A6IiIsbGVmdDoiIixyaWdodDoiIixib3R0b206IiIsaGVpZ2h0OiIiLHdpZHRoOiIiLGFsaWduSXRlbXM6IiIsanVzdGlmeUNvbnRlbnQ6IiJ9KSx0aGlzLl9wYW5lJiZ0aGlzLl9yZXNldE92ZXJsYXlFbGVtZW50U3R5bGVzKCksdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFhCKSx0aGlzLmRldGFjaCgpLHRoaXMuX3Bvc2l0aW9uQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuX292ZXJsYXlSZWY9dGhpcy5fYm91bmRpbmdCb3g9bnVsbCx0aGlzLl9pc0Rpc3Bvc2VkPSEwKX1yZWFwcGx5TGFzdFBvc2l0aW9uKCl7aWYoIXRoaXMuX2lzRGlzcG9zZWQmJighdGhpcy5fcGxhdGZvcm18fHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikpe3RoaXMuX29yaWdpblJlY3Q9dGhpcy5fZ2V0T3JpZ2luUmVjdCgpLHRoaXMuX292ZXJsYXlSZWN0PXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fdmlld3BvcnRSZWN0PXRoaXMuX2dldE5hcnJvd2VkVmlld3BvcnRSZWN0KCk7Y29uc3QgdD10aGlzLl9sYXN0UG9zaXRpb258fHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc1swXSxlPXRoaXMuX2dldE9yaWdpblBvaW50KHRoaXMuX29yaWdpblJlY3QsdCk7dGhpcy5fYXBwbHlQb3NpdGlvbih0LGUpfX13aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl7cmV0dXJuIHRoaXMuX3Njcm9sbGFibGVzPXQsdGhpc313aXRoUG9zaXRpb25zKHQpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9dCwtMT09PXQuaW5kZXhPZih0aGlzLl9sYXN0UG9zaXRpb24pJiYodGhpcy5fbGFzdFBvc2l0aW9uPW51bGwpLHRoaXMuX3ZhbGlkYXRlUG9zaXRpb25zKCksdGhpc313aXRoVmlld3BvcnRNYXJnaW4odCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0TWFyZ2luPXQsdGhpc313aXRoRmxleGlibGVEaW1lbnNpb25zKHQ9ITApe3JldHVybiB0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnM9dCx0aGlzfXdpdGhHcm93QWZ0ZXJPcGVuKHQ9ITApe3JldHVybiB0aGlzLl9ncm93QWZ0ZXJPcGVuPXQsdGhpc313aXRoUHVzaCh0PSEwKXtyZXR1cm4gdGhpcy5fY2FuUHVzaD10LHRoaXN9d2l0aExvY2tlZFBvc2l0aW9uKHQ9ITApe3JldHVybiB0aGlzLl9wb3NpdGlvbkxvY2tlZD10LHRoaXN9c2V0T3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW49dCx0aGlzfXdpdGhEZWZhdWx0T2Zmc2V0WCh0KXtyZXR1cm4gdGhpcy5fb2Zmc2V0WD10LHRoaXN9d2l0aERlZmF1bHRPZmZzZXRZKHQpe3JldHVybiB0aGlzLl9vZmZzZXRZPXQsdGhpc313aXRoVHJhbnNmb3JtT3JpZ2luT24odCl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yPXQsdGhpc31fZ2V0T3JpZ2luUG9pbnQodCxlKXtsZXQgbixvO2lmKCJjZW50ZXIiPT1lLm9yaWdpblgpbj10LmxlZnQrdC53aWR0aC8yO2Vsc2V7Y29uc3Qgbz10aGlzLl9pc1J0bCgpP3QucmlnaHQ6dC5sZWZ0LGk9dGhpcy5faXNSdGwoKT90LmxlZnQ6dC5yaWdodDtuPSJzdGFydCI9PWUub3JpZ2luWD9vOml9cmV0dXJuIG89ImNlbnRlciI9PWUub3JpZ2luWT90LnRvcCt0LmhlaWdodC8yOiJ0b3AiPT1lLm9yaWdpblk/dC50b3A6dC5ib3R0b20se3g6bix5Om99fV9nZXRPdmVybGF5UG9pbnQodCxlLG4pe2xldCBvLGk7cmV0dXJuIG89ImNlbnRlciI9PW4ub3ZlcmxheVg/LWUud2lkdGgvMjoic3RhcnQiPT09bi5vdmVybGF5WD90aGlzLl9pc1J0bCgpPy1lLndpZHRoOjA6dGhpcy5faXNSdGwoKT8wOi1lLndpZHRoLGk9ImNlbnRlciI9PW4ub3ZlcmxheVk/LWUuaGVpZ2h0LzI6InRvcCI9PW4ub3ZlcmxheVk/MDotZS5oZWlnaHQse3g6dC54K28seTp0LnkraX19X2dldE92ZXJsYXlGaXQodCxlLG4sbyl7Y29uc3QgaT10VihlKTtsZXR7eDphLHk6cn09dCxzPXRoaXMuX2dldE9mZnNldChvLCJ4IiksbD10aGlzLl9nZXRPZmZzZXQobywieSIpO3MmJihhKz1zKSxsJiYocis9bCk7bGV0IGM9MC1yLGQ9citpLmhlaWdodC1uLmhlaWdodCxwPXRoaXMuX3N1YnRyYWN0T3ZlcmZsb3dzKGkud2lkdGgsMC1hLGEraS53aWR0aC1uLndpZHRoKSxtPXRoaXMuX3N1YnRyYWN0T3ZlcmZsb3dzKGkuaGVpZ2h0LGMsZCksdT1wKm07cmV0dXJue3Zpc2libGVBcmVhOnUsaXNDb21wbGV0ZWx5V2l0aGluVmlld3BvcnQ6aS53aWR0aCppLmhlaWdodD09PXUsZml0c0luVmlld3BvcnRWZXJ0aWNhbGx5Om09PT1pLmhlaWdodCxmaXRzSW5WaWV3cG9ydEhvcml6b250YWxseTpwPT1pLndpZHRofX1fY2FuRml0V2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0LGUsbil7aWYodGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zKXtjb25zdCBvPW4uYm90dG9tLWUueSxpPW4ucmlnaHQtZS54LGE9JEIodGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5taW5IZWlnaHQpLHI9JEIodGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5taW5XaWR0aCkscz10LmZpdHNJblZpZXdwb3J0SG9yaXpvbnRhbGx5fHxudWxsIT1yJiZyPD1pO3JldHVybih0LmZpdHNJblZpZXdwb3J0VmVydGljYWxseXx8bnVsbCE9YSYmYTw9bykmJnN9cmV0dXJuITF9X3B1c2hPdmVybGF5T25TY3JlZW4odCxlLG4pe2lmKHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudCYmdGhpcy5fcG9zaXRpb25Mb2NrZWQpcmV0dXJue3g6dC54K3RoaXMuX3ByZXZpb3VzUHVzaEFtb3VudC54LHk6dC55K3RoaXMuX3ByZXZpb3VzUHVzaEFtb3VudC55fTtjb25zdCBvPXRWKGUpLGk9dGhpcy5fdmlld3BvcnRSZWN0LGE9TWF0aC5tYXgodC54K28ud2lkdGgtaS53aWR0aCwwKSxyPU1hdGgubWF4KHQueStvLmhlaWdodC1pLmhlaWdodCwwKSxzPU1hdGgubWF4KGkudG9wLW4udG9wLXQueSwwKSxsPU1hdGgubWF4KGkubGVmdC1uLmxlZnQtdC54LDApO2xldCBjPTAsZD0wO3JldHVybiBjPW8ud2lkdGg8PWkud2lkdGg/bHx8LWE6dC54PHRoaXMuX3ZpZXdwb3J0TWFyZ2luP2kubGVmdC1uLmxlZnQtdC54OjAsZD1vLmhlaWdodDw9aS5oZWlnaHQ/c3x8LXI6dC55PHRoaXMuX3ZpZXdwb3J0TWFyZ2luP2kudG9wLW4udG9wLXQueTowLHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudD17eDpjLHk6ZH0se3g6dC54K2MseTp0LnkrZH19X2FwcGx5UG9zaXRpb24odCxlKXtpZih0aGlzLl9zZXRUcmFuc2Zvcm1PcmlnaW4odCksdGhpcy5fc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXMoZSx0KSx0aGlzLl9zZXRCb3VuZGluZ0JveFN0eWxlcyhlLHQpLHQucGFuZWxDbGFzcyYmdGhpcy5fYWRkUGFuZWxDbGFzc2VzKHQucGFuZWxDbGFzcyksdGhpcy5fbGFzdFBvc2l0aW9uPXQsdGhpcy5fcG9zaXRpb25DaGFuZ2VzLm9ic2VydmVycy5sZW5ndGgpe2NvbnN0IGU9dGhpcy5fZ2V0U2Nyb2xsVmlzaWJpbGl0eSgpLG49bmV3IExCKHQsZSk7dGhpcy5fcG9zaXRpb25DaGFuZ2VzLm5leHQobil9dGhpcy5faXNJbml0aWFsUmVuZGVyPSExfV9zZXRUcmFuc2Zvcm1PcmlnaW4odCl7aWYoIXRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yKXJldHVybjtjb25zdCBlPXRoaXMuX2JvdW5kaW5nQm94LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5fdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3IpO2xldCBuLG89dC5vdmVybGF5WTtuPSJjZW50ZXIiPT09dC5vdmVybGF5WD8iY2VudGVyIjp0aGlzLl9pc1J0bCgpPyJzdGFydCI9PT10Lm92ZXJsYXlYPyJyaWdodCI6ImxlZnQiOiJzdGFydCI9PT10Lm92ZXJsYXlYPyJsZWZ0IjoicmlnaHQiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0uc3R5bGUudHJhbnNmb3JtT3JpZ2luPWAke259ICR7b31gfV9jYWxjdWxhdGVCb3VuZGluZ0JveFJlY3QodCxlKXtjb25zdCBuPXRoaXMuX3ZpZXdwb3J0UmVjdCxvPXRoaXMuX2lzUnRsKCk7bGV0IGksYSxyO2lmKCJ0b3AiPT09ZS5vdmVybGF5WSlhPXQueSxpPW4uaGVpZ2h0LWErdGhpcy5fdmlld3BvcnRNYXJnaW47ZWxzZSBpZigiYm90dG9tIj09PWUub3ZlcmxheVkpcj1uLmhlaWdodC10LnkrMip0aGlzLl92aWV3cG9ydE1hcmdpbixpPW4uaGVpZ2h0LXIrdGhpcy5fdmlld3BvcnRNYXJnaW47ZWxzZXtjb25zdCBlPU1hdGgubWluKG4uYm90dG9tLXQueStuLnRvcCx0LnkpLG89dGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZS5oZWlnaHQ7aT0yKmUsYT10LnktZSxpPm8mJiF0aGlzLl9pc0luaXRpYWxSZW5kZXImJiF0aGlzLl9ncm93QWZ0ZXJPcGVuJiYoYT10Lnktby8yKX1sZXQgcyxsLGM7aWYoImVuZCI9PT1lLm92ZXJsYXlYJiYhb3x8InN0YXJ0Ij09PWUub3ZlcmxheVgmJm8pYz1uLndpZHRoLXQueCt0aGlzLl92aWV3cG9ydE1hcmdpbixzPXQueC10aGlzLl92aWV3cG9ydE1hcmdpbjtlbHNlIGlmKCJzdGFydCI9PT1lLm92ZXJsYXlYJiYhb3x8ImVuZCI9PT1lLm92ZXJsYXlYJiZvKWw9dC54LHM9bi5yaWdodC10Lng7ZWxzZXtjb25zdCBlPU1hdGgubWluKG4ucmlnaHQtdC54K24ubGVmdCx0LngpLG89dGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZS53aWR0aDtzPTIqZSxsPXQueC1lLHM+byYmIXRoaXMuX2lzSW5pdGlhbFJlbmRlciYmIXRoaXMuX2dyb3dBZnRlck9wZW4mJihsPXQueC1vLzIpfXJldHVybnt0b3A6YSxsZWZ0OmwsYm90dG9tOnIscmlnaHQ6Yyx3aWR0aDpzLGhlaWdodDppfX1fc2V0Qm91bmRpbmdCb3hTdHlsZXModCxlKXtjb25zdCBuPXRoaXMuX2NhbGN1bGF0ZUJvdW5kaW5nQm94UmVjdCh0LGUpO3RoaXMuX2lzSW5pdGlhbFJlbmRlcnx8dGhpcy5fZ3Jvd0FmdGVyT3Blbnx8KG4uaGVpZ2h0PU1hdGgubWluKG4uaGVpZ2h0LHRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUuaGVpZ2h0KSxuLndpZHRoPU1hdGgubWluKG4ud2lkdGgsdGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZS53aWR0aCkpO2NvbnN0IG89e307aWYodGhpcy5faGFzRXhhY3RQb3NpdGlvbigpKW8udG9wPW8ubGVmdD0iMCIsby5ib3R0b209by5yaWdodD1vLm1heEhlaWdodD1vLm1heFdpZHRoPSIiLG8ud2lkdGg9by5oZWlnaHQ9IjEwMCUiO2Vsc2V7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLm1heEhlaWdodCxpPXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWF4V2lkdGg7by5oZWlnaHQ9Z0gobi5oZWlnaHQpLG8udG9wPWdIKG4udG9wKSxvLmJvdHRvbT1nSChuLmJvdHRvbSksby53aWR0aD1nSChuLndpZHRoKSxvLmxlZnQ9Z0gobi5sZWZ0KSxvLnJpZ2h0PWdIKG4ucmlnaHQpLG8uYWxpZ25JdGVtcz0iY2VudGVyIj09PWUub3ZlcmxheVg/ImNlbnRlciI6ImVuZCI9PT1lLm92ZXJsYXlYPyJmbGV4LWVuZCI6ImZsZXgtc3RhcnQiLG8uanVzdGlmeUNvbnRlbnQ9ImNlbnRlciI9PT1lLm92ZXJsYXlZPyJjZW50ZXIiOiJib3R0b20iPT09ZS5vdmVybGF5WT8iZmxleC1lbmQiOiJmbGV4LXN0YXJ0Iix0JiYoby5tYXhIZWlnaHQ9Z0godCkpLGkmJihvLm1heFdpZHRoPWdIKGkpKX10aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplPW4sUUIodGhpcy5fYm91bmRpbmdCb3guc3R5bGUsbyl9X3Jlc2V0Qm91bmRpbmdCb3hTdHlsZXMoKXtRQih0aGlzLl9ib3VuZGluZ0JveC5zdHlsZSx7dG9wOiIwIixsZWZ0OiIwIixyaWdodDoiMCIsYm90dG9tOiIwIixoZWlnaHQ6IiIsd2lkdGg6IiIsYWxpZ25JdGVtczoiIixqdXN0aWZ5Q29udGVudDoiIn0pfV9yZXNldE92ZXJsYXlFbGVtZW50U3R5bGVzKCl7UUIodGhpcy5fcGFuZS5zdHlsZSx7dG9wOiIiLGxlZnQ6IiIsYm90dG9tOiIiLHJpZ2h0OiIiLHBvc2l0aW9uOiIiLHRyYW5zZm9ybToiIn0pfV9zZXRPdmVybGF5RWxlbWVudFN0eWxlcyh0LGUpe2NvbnN0IG49e30sbz10aGlzLl9oYXNFeGFjdFBvc2l0aW9uKCksaT10aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnMsYT10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpO2lmKG8pe2NvbnN0IG89dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCk7UUIobix0aGlzLl9nZXRFeGFjdE92ZXJsYXlZKGUsdCxvKSksUUIobix0aGlzLl9nZXRFeGFjdE92ZXJsYXlYKGUsdCxvKSl9ZWxzZSBuLnBvc2l0aW9uPSJzdGF0aWMiO2xldCByPSIiLHM9dGhpcy5fZ2V0T2Zmc2V0KGUsIngiKSxsPXRoaXMuX2dldE9mZnNldChlLCJ5Iik7cyYmKHIrPWB0cmFuc2xhdGVYKCR7c31weCkgYCksbCYmKHIrPWB0cmFuc2xhdGVZKCR7bH1weClgKSxuLnRyYW5zZm9ybT1yLnRyaW0oKSxhLm1heEhlaWdodCYmKG8/bi5tYXhIZWlnaHQ9Z0goYS5tYXhIZWlnaHQpOmkmJihuLm1heEhlaWdodD0iIikpLGEubWF4V2lkdGgmJihvP24ubWF4V2lkdGg9Z0goYS5tYXhXaWR0aCk6aSYmKG4ubWF4V2lkdGg9IiIpKSxRQih0aGlzLl9wYW5lLnN0eWxlLG4pfV9nZXRFeGFjdE92ZXJsYXlZKHQsZSxuKXtsZXQgbz17dG9wOiIiLGJvdHRvbToiIn0saT10aGlzLl9nZXRPdmVybGF5UG9pbnQoZSx0aGlzLl9vdmVybGF5UmVjdCx0KTt0aGlzLl9pc1B1c2hlZCYmKGk9dGhpcy5fcHVzaE92ZXJsYXlPblNjcmVlbihpLHRoaXMuX292ZXJsYXlSZWN0LG4pKTtsZXQgYT10aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7aWYoaS55LT1hLCJib3R0b20iPT09dC5vdmVybGF5WSl7by5ib3R0b209dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodC0oaS55K3RoaXMuX292ZXJsYXlSZWN0LmhlaWdodCkrInB4In1lbHNlIG8udG9wPWdIKGkueSk7cmV0dXJuIG99X2dldEV4YWN0T3ZlcmxheVgodCxlLG4pe2xldCBvLGk9e2xlZnQ6IiIscmlnaHQ6IiJ9LGE9dGhpcy5fZ2V0T3ZlcmxheVBvaW50KGUsdGhpcy5fb3ZlcmxheVJlY3QsdCk7aWYodGhpcy5faXNQdXNoZWQmJihhPXRoaXMuX3B1c2hPdmVybGF5T25TY3JlZW4oYSx0aGlzLl9vdmVybGF5UmVjdCxuKSksbz10aGlzLl9pc1J0bCgpPyJlbmQiPT09dC5vdmVybGF5WD8ibGVmdCI6InJpZ2h0IjoiZW5kIj09PXQub3ZlcmxheVg/InJpZ2h0IjoibGVmdCIsInJpZ2h0Ij09PW8pe2kucmlnaHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLShhLngrdGhpcy5fb3ZlcmxheVJlY3Qud2lkdGgpKyJweCJ9ZWxzZSBpLmxlZnQ9Z0goYS54KTtyZXR1cm4gaX1fZ2V0U2Nyb2xsVmlzaWJpbGl0eSgpe2NvbnN0IHQ9dGhpcy5fZ2V0T3JpZ2luUmVjdCgpLGU9dGhpcy5fcGFuZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXRoaXMuX3Njcm9sbGFibGVzLm1hcCgodD0+dC5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpO3JldHVybntpc09yaWdpbkNsaXBwZWQ6VEIodCxuKSxpc09yaWdpbk91dHNpZGVWaWV3OkFCKHQsbiksaXNPdmVybGF5Q2xpcHBlZDpUQihlLG4pLGlzT3ZlcmxheU91dHNpZGVWaWV3OkFCKGUsbil9fV9zdWJ0cmFjdE92ZXJmbG93cyh0LC4uLmUpe3JldHVybiBlLnJlZHVjZSgoKHQsZSk9PnQtTWF0aC5tYXgoZSwwKSksdCl9X2dldE5hcnJvd2VkVmlld3BvcnRSZWN0KCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsZT10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LG49dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCk7cmV0dXJue3RvcDpuLnRvcCt0aGlzLl92aWV3cG9ydE1hcmdpbixsZWZ0Om4ubGVmdCt0aGlzLl92aWV3cG9ydE1hcmdpbixyaWdodDpuLmxlZnQrdC10aGlzLl92aWV3cG9ydE1hcmdpbixib3R0b206bi50b3ArZS10aGlzLl92aWV3cG9ydE1hcmdpbix3aWR0aDp0LTIqdGhpcy5fdmlld3BvcnRNYXJnaW4saGVpZ2h0OmUtMip0aGlzLl92aWV3cG9ydE1hcmdpbn19X2lzUnRsKCl7cmV0dXJuInJ0bCI9PT10aGlzLl9vdmVybGF5UmVmLmdldERpcmVjdGlvbigpfV9oYXNFeGFjdFBvc2l0aW9uKCl7cmV0dXJuIXRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9uc3x8dGhpcy5faXNQdXNoZWR9X2dldE9mZnNldCh0LGUpe3JldHVybiJ4Ij09PWU/bnVsbD09dC5vZmZzZXRYP3RoaXMuX29mZnNldFg6dC5vZmZzZXRYOm51bGw9PXQub2Zmc2V0WT90aGlzLl9vZmZzZXRZOnQub2Zmc2V0WX1fdmFsaWRhdGVQb3NpdGlvbnMoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXtpZighdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zLmxlbmd0aCl0aHJvdyBFcnJvcigiRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5OiBBdCBsZWFzdCBvbmUgcG9zaXRpb24gaXMgcmVxdWlyZWQuIik7dGhpcy5fcHJlZmVycmVkUG9zaXRpb25zLmZvckVhY2goKHQ9PntWQigib3JpZ2luWCIsdC5vcmlnaW5YKSxCQigib3JpZ2luWSIsdC5vcmlnaW5ZKSxWQigib3ZlcmxheVgiLHQub3ZlcmxheVgpLEJCKCJvdmVybGF5WSIsdC5vdmVybGF5WSl9KSl9fV9hZGRQYW5lbENsYXNzZXModCl7dGhpcy5fcGFuZSYmZkgodCkuZm9yRWFjaCgodD0+eyIiIT09dCYmLTE9PT10aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzLmluZGV4T2YodCkmJih0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzLnB1c2godCksdGhpcy5fcGFuZS5jbGFzc0xpc3QuYWRkKHQpKX0pKX1fY2xlYXJQYW5lbENsYXNzZXMoKXt0aGlzLl9wYW5lJiYodGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcy5mb3JFYWNoKCh0PT57dGhpcy5fcGFuZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSkpLHRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXM9W10pfV9nZXRPcmlnaW5SZWN0KCl7Y29uc3QgdD10aGlzLl9vcmlnaW47aWYodCBpbnN0YW5jZW9mIEtoKXJldHVybiB0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYodCBpbnN0YW5jZW9mIEVsZW1lbnQpcmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y29uc3QgZT10LndpZHRofHwwLG49dC5oZWlnaHR8fDA7cmV0dXJue3RvcDp0LnksYm90dG9tOnQueStuLGxlZnQ6dC54LHJpZ2h0OnQueCtlLGhlaWdodDpuLHdpZHRoOmV9fX1mdW5jdGlvbiBRQih0LGUpe2ZvcihsZXQgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pO3JldHVybiB0fWZ1bmN0aW9uICRCKHQpe2lmKCJudW1iZXIiIT10eXBlb2YgdCYmbnVsbCE9dCl7Y29uc3RbZSxuXT10LnNwbGl0KEtCKTtyZXR1cm4gbiYmInB4IiE9PW4/bnVsbDpwYXJzZUZsb2F0KGUpfXJldHVybiB0fHxudWxsfWZ1bmN0aW9uIHRWKHQpe3JldHVybnt0b3A6TWF0aC5mbG9vcih0LnRvcCkscmlnaHQ6TWF0aC5mbG9vcih0LnJpZ2h0KSxib3R0b206TWF0aC5mbG9vcih0LmJvdHRvbSksbGVmdDpNYXRoLmZsb29yKHQubGVmdCksd2lkdGg6TWF0aC5mbG9vcih0LndpZHRoKSxoZWlnaHQ6TWF0aC5mbG9vcih0LmhlaWdodCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBlVntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXt0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9W10sdGhpcy5fcG9zaXRpb25TdHJhdGVneT1uZXcgSkIobixvLGksYSxyKS53aXRoRmxleGlibGVEaW1lbnNpb25zKCExKS53aXRoUHVzaCghMSkud2l0aFZpZXdwb3J0TWFyZ2luKDApLHRoaXMud2l0aEZhbGxiYWNrUG9zaXRpb24odCxlKSx0aGlzLm9uUG9zaXRpb25DaGFuZ2U9dGhpcy5fcG9zaXRpb25TdHJhdGVneS5wb3NpdGlvbkNoYW5nZXN9Z2V0IHBvc2l0aW9ucygpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnN9YXR0YWNoKHQpe3RoaXMuX292ZXJsYXlSZWY9dCx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmF0dGFjaCh0KSx0aGlzLl9kaXJlY3Rpb24mJih0LnNldERpcmVjdGlvbih0aGlzLl9kaXJlY3Rpb24pLHRoaXMuX2RpcmVjdGlvbj1udWxsKX1kaXNwb3NlKCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS5kaXNwb3NlKCl9ZGV0YWNoKCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS5kZXRhY2goKX1hcHBseSgpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuYXBwbHkoKX1yZWNhbGN1bGF0ZUxhc3RQb3NpdGlvbigpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kucmVhcHBseUxhc3RQb3NpdGlvbigpfXdpdGhTY3JvbGxhYmxlQ29udGFpbmVycyh0KXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhTY3JvbGxhYmxlQ29udGFpbmVycyh0KX13aXRoRmFsbGJhY2tQb3NpdGlvbih0LGUsbixvKXtjb25zdCBpPW5ldyBIQih0LGUsbixvKTtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zLnB1c2goaSksdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucyksdGhpc313aXRoRGlyZWN0aW9uKHQpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYuc2V0RGlyZWN0aW9uKHQpOnRoaXMuX2RpcmVjdGlvbj10LHRoaXN9d2l0aE9mZnNldFgodCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aERlZmF1bHRPZmZzZXRYKHQpLHRoaXN9d2l0aE9mZnNldFkodCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aERlZmF1bHRPZmZzZXRZKHQpLHRoaXN9d2l0aExvY2tlZFBvc2l0aW9uKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhMb2NrZWRQb3NpdGlvbih0KSx0aGlzfXdpdGhQb3NpdGlvbnModCl7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucz10LnNsaWNlKCksdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucyksdGhpc31zZXRPcmlnaW4odCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuc2V0T3JpZ2luKHQpLHRoaXN9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBuVj0iY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIiO2NsYXNzIG9We2NvbnN0cnVjdG9yKCl7dGhpcy5fY3NzUG9zaXRpb249InN0YXRpYyIsdGhpcy5fdG9wT2Zmc2V0PSIiLHRoaXMuX2JvdHRvbU9mZnNldD0iIix0aGlzLl9sZWZ0T2Zmc2V0PSIiLHRoaXMuX3JpZ2h0T2Zmc2V0PSIiLHRoaXMuX2FsaWduSXRlbXM9IiIsdGhpcy5fanVzdGlmeUNvbnRlbnQ9IiIsdGhpcy5fd2lkdGg9IiIsdGhpcy5faGVpZ2h0PSIifWF0dGFjaCh0KXtjb25zdCBlPXQuZ2V0Q29uZmlnKCk7dGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX3dpZHRoJiYhZS53aWR0aCYmdC51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl93aWR0aH0pLHRoaXMuX2hlaWdodCYmIWUuaGVpZ2h0JiZ0LnVwZGF0ZVNpemUoe2hlaWdodDp0aGlzLl9oZWlnaHR9KSx0Lmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoblYpLHRoaXMuX2lzRGlzcG9zZWQ9ITF9dG9wKHQ9IiIpe3JldHVybiB0aGlzLl9ib3R0b21PZmZzZXQ9IiIsdGhpcy5fdG9wT2Zmc2V0PXQsdGhpcy5fYWxpZ25JdGVtcz0iZmxleC1zdGFydCIsdGhpc31sZWZ0KHQ9IiIpe3JldHVybiB0aGlzLl9yaWdodE9mZnNldD0iIix0aGlzLl9sZWZ0T2Zmc2V0PXQsdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImZsZXgtc3RhcnQiLHRoaXN9Ym90dG9tKHQ9IiIpe3JldHVybiB0aGlzLl90b3BPZmZzZXQ9IiIsdGhpcy5fYm90dG9tT2Zmc2V0PXQsdGhpcy5fYWxpZ25JdGVtcz0iZmxleC1lbmQiLHRoaXN9cmlnaHQodD0iIil7cmV0dXJuIHRoaXMuX2xlZnRPZmZzZXQ9IiIsdGhpcy5fcmlnaHRPZmZzZXQ9dCx0aGlzLl9qdXN0aWZ5Q29udGVudD0iZmxleC1lbmQiLHRoaXN9d2lkdGgodD0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHt3aWR0aDp0fSk6dGhpcy5fd2lkdGg9dCx0aGlzfWhlaWdodCh0PSIiKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoe2hlaWdodDp0fSk6dGhpcy5faGVpZ2h0PXQsdGhpc31jZW50ZXJIb3Jpem9udGFsbHkodD0iIil7cmV0dXJuIHRoaXMubGVmdCh0KSx0aGlzLl9qdXN0aWZ5Q29udGVudD0iY2VudGVyIix0aGlzfWNlbnRlclZlcnRpY2FsbHkodD0iIil7cmV0dXJuIHRoaXMudG9wKHQpLHRoaXMuX2FsaWduSXRlbXM9ImNlbnRlciIsdGhpc31hcHBseSgpe2lmKCF0aGlzLl9vdmVybGF5UmVmfHwhdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKXJldHVybjtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUsZT10aGlzLl9vdmVybGF5UmVmLmhvc3RFbGVtZW50LnN0eWxlLG49dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKSx7d2lkdGg6byxoZWlnaHQ6aSxtYXhXaWR0aDphLG1heEhlaWdodDpyfT1uLHM9ISgiMTAwJSIhPT1vJiYiMTAwdnciIT09b3x8YSYmIjEwMCUiIT09YSYmIjEwMHZ3IiE9PWEpLGw9ISgiMTAwJSIhPT1pJiYiMTAwdmgiIT09aXx8ciYmIjEwMCUiIT09ciYmIjEwMHZoIiE9PXIpO3QucG9zaXRpb249dGhpcy5fY3NzUG9zaXRpb24sdC5tYXJnaW5MZWZ0PXM/IjAiOnRoaXMuX2xlZnRPZmZzZXQsdC5tYXJnaW5Ub3A9bD8iMCI6dGhpcy5fdG9wT2Zmc2V0LHQubWFyZ2luQm90dG9tPXRoaXMuX2JvdHRvbU9mZnNldCx0Lm1hcmdpblJpZ2h0PXRoaXMuX3JpZ2h0T2Zmc2V0LHM/ZS5qdXN0aWZ5Q29udGVudD0iZmxleC1zdGFydCI6ImNlbnRlciI9PT10aGlzLl9qdXN0aWZ5Q29udGVudD9lLmp1c3RpZnlDb250ZW50PSJjZW50ZXIiOiJydGwiPT09dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5kaXJlY3Rpb24/ImZsZXgtc3RhcnQiPT09dGhpcy5fanVzdGlmeUNvbnRlbnQ/ZS5qdXN0aWZ5Q29udGVudD0iZmxleC1lbmQiOiJmbGV4LWVuZCI9PT10aGlzLl9qdXN0aWZ5Q29udGVudCYmKGUuanVzdGlmeUNvbnRlbnQ9ImZsZXgtc3RhcnQiKTplLmp1c3RpZnlDb250ZW50PXRoaXMuX2p1c3RpZnlDb250ZW50LGUuYWxpZ25JdGVtcz1sPyJmbGV4LXN0YXJ0Ijp0aGlzLl9hbGlnbkl0ZW1zfWRpc3Bvc2UoKXtpZih0aGlzLl9pc0Rpc3Bvc2VkfHwhdGhpcy5fb3ZlcmxheVJlZilyZXR1cm47Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnN0eWxlLGU9dGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudCxuPWUuc3R5bGU7ZS5jbGFzc0xpc3QucmVtb3ZlKG5WKSxuLmp1c3RpZnlDb250ZW50PW4uYWxpZ25JdGVtcz10Lm1hcmdpblRvcD10Lm1hcmdpbkJvdHRvbT10Lm1hcmdpbkxlZnQ9dC5tYXJnaW5SaWdodD10LnBvc2l0aW9uPSIiLHRoaXMuX292ZXJsYXlSZWY9bnVsbCx0aGlzLl9pc0Rpc3Bvc2VkPSEwfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgaVZ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX2RvY3VtZW50PWUsdGhpcy5fcGxhdGZvcm09bix0aGlzLl9vdmVybGF5Q29udGFpbmVyPW99Z2xvYmFsKCl7cmV0dXJuIG5ldyBvVn1jb25uZWN0ZWRUbyh0LGUsbil7cmV0dXJuIG5ldyBlVihlLG4sdCx0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX2RvY3VtZW50LHRoaXMuX3BsYXRmb3JtLHRoaXMuX292ZXJsYXlDb250YWluZXIpfWZsZXhpYmxlQ29ubmVjdGVkVG8odCl7cmV0dXJuIG5ldyBKQih0LHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZG9jdW1lbnQsdGhpcy5fcGxhdGZvcm0sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcil9fWlWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpVikoVHIobEIpLFRyKHNNKSxUcihfSCksVHIocUIpKX0saVYuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGlWKFRyKGxCKSxUcihzTSksVHIoX0gpLFRyKHFCKSl9LHRva2VuOmlWLHByb3ZpZGVkSW46InJvb3QifSksaVYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpsQn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpfSH0se3R5cGU6cUJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGlWLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsQn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpfSH0se3R5cGU6cUJ9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IGFWPTA7Y2xhc3MgclZ7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkKXt0aGlzLnNjcm9sbFN0cmF0ZWdpZXM9dCx0aGlzLl9vdmVybGF5Q29udGFpbmVyPWUsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW4sdGhpcy5fcG9zaXRpb25CdWlsZGVyPW8sdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyPWksdGhpcy5faW5qZWN0b3I9YSx0aGlzLl9uZ1pvbmU9cix0aGlzLl9kb2N1bWVudD1zLHRoaXMuX2RpcmVjdGlvbmFsaXR5PWwsdGhpcy5fbG9jYXRpb249Yyx0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyPWR9Y3JlYXRlKHQpe2NvbnN0IGU9dGhpcy5fY3JlYXRlSG9zdEVsZW1lbnQoKSxuPXRoaXMuX2NyZWF0ZVBhbmVFbGVtZW50KGUpLG89dGhpcy5fY3JlYXRlUG9ydGFsT3V0bGV0KG4pLGk9bmV3IElCKHQpO3JldHVybiBpLmRpcmVjdGlvbj1pLmRpcmVjdGlvbnx8dGhpcy5fZGlyZWN0aW9uYWxpdHkudmFsdWUsbmV3IFpCKG8sZSxuLGksdGhpcy5fbmdab25lLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlcix0aGlzLl9kb2N1bWVudCx0aGlzLl9sb2NhdGlvbix0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyKX1wb3NpdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbkJ1aWxkZXJ9X2NyZWF0ZVBhbmVFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuaWQ9ImNkay1vdmVybGF5LSIrYVYrKyxlLmNsYXNzTGlzdC5hZGQoImNkay1vdmVybGF5LXBhbmUiKSx0LmFwcGVuZENoaWxkKGUpLGV9X2NyZWF0ZUhvc3RFbGVtZW50KCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdGhpcy5fb3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCkuYXBwZW5kQ2hpbGQodCksdH1fY3JlYXRlUG9ydGFsT3V0bGV0KHQpe3JldHVybiB0aGlzLl9hcHBSZWZ8fCh0aGlzLl9hcHBSZWY9dGhpcy5faW5qZWN0b3IuZ2V0KEhDKSksbmV3IE1CKHQsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLHRoaXMuX2FwcFJlZix0aGlzLl9pbmplY3Rvcix0aGlzLl9kb2N1bWVudCl9fXJWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyVikoVHIoekIpLFRyKHFCKSxUcihHaCksVHIoaVYpLFRyKGpCKSxUcihOcCksVHIobUMpLFRyKHNNKSxUcihBRiksVHIoTU0pLFRyKFdCKSl9LHJWLsm1cHJvdj1Tbih7dG9rZW46clYsZmFjdG9yeTpyVi7JtWZhY30pLHJWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ekJ9LHt0eXBlOnFCfSx7dHlwZTpHaH0se3R5cGU6aVZ9LHt0eXBlOmpCfSx7dHlwZTpOcH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6QUZ9LHt0eXBlOk1NfSx7dHlwZTpXQn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoclYsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnpCfSx7dHlwZTpxQn0se3R5cGU6R2h9LHt0eXBlOmlWfSx7dHlwZTpqQn0se3R5cGU6TnB9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOkFGfSx7dHlwZTpNTX0se3R5cGU6V0J9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgc1Y9W3tvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJ0b3AifSx7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiYm90dG9tIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToiYm90dG9tIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToidG9wIn1dLGxWPW5ldyBlcigiY2RrLWNvbm5lY3RlZC1vdmVybGF5LXNjcm9sbC1zdHJhdGVneSIpO2NsYXNzIGNWe2NvbnN0cnVjdG9yKHQpe3RoaXMuZWxlbWVudFJlZj10fX1jVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y1YpKGZ1KEtoKSl9LGNWLsm1ZGlyPWhvKHt0eXBlOmNWLHNlbGVjdG9yczpbWyIiLCJjZGstb3ZlcmxheS1vcmlnaW4iLCIiXSxbIiIsIm92ZXJsYXktb3JpZ2luIiwiIl0sWyIiLCJjZGtPdmVybGF5T3JpZ2luIiwiIl1dLGV4cG9ydEFzOlsiY2RrT3ZlcmxheU9yaWdpbiJdfSksY1YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoY1YsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nkay1vdmVybGF5LW9yaWdpbl0sIFtvdmVybGF5LW9yaWdpbl0sIFtjZGtPdmVybGF5T3JpZ2luXSIsZXhwb3J0QXM6ImNka092ZXJsYXlPcmlnaW4ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLG51bGwpO2NsYXNzIGRWe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2Rpcj1pLHRoaXMuX2hhc0JhY2tkcm9wPSExLHRoaXMuX2xvY2tQb3NpdGlvbj0hMSx0aGlzLl9ncm93QWZ0ZXJPcGVuPSExLHRoaXMuX2ZsZXhpYmxlRGltZW5zaW9ucz0hMSx0aGlzLl9wdXNoPSExLHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fZGV0YWNoU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb249Zi5FTVBUWSx0aGlzLnZpZXdwb3J0TWFyZ2luPTAsdGhpcy5vcGVuPSExLHRoaXMuZGlzYWJsZUNsb3NlPSExLHRoaXMuYmFja2Ryb3BDbGljaz1uZXcgU3ksdGhpcy5wb3NpdGlvbkNoYW5nZT1uZXcgU3ksdGhpcy5hdHRhY2g9bmV3IFN5LHRoaXMuZGV0YWNoPW5ldyBTeSx0aGlzLm92ZXJsYXlLZXlkb3duPW5ldyBTeSx0aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2s9bmV3IFN5LHRoaXMuX3RlbXBsYXRlUG9ydGFsPW5ldyB5QihlLG4pLHRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeT1vLHRoaXMuc2Nyb2xsU3RyYXRlZ3k9dGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KCl9Z2V0IG9mZnNldFgoKXtyZXR1cm4gdGhpcy5fb2Zmc2V0WH1zZXQgb2Zmc2V0WCh0KXt0aGlzLl9vZmZzZXRYPXQsdGhpcy5fcG9zaXRpb24mJnRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb24pfWdldCBvZmZzZXRZKCl7cmV0dXJuIHRoaXMuX29mZnNldFl9c2V0IG9mZnNldFkodCl7dGhpcy5fb2Zmc2V0WT10LHRoaXMuX3Bvc2l0aW9uJiZ0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKX1nZXQgaGFzQmFja2Ryb3AoKXtyZXR1cm4gdGhpcy5faGFzQmFja2Ryb3B9c2V0IGhhc0JhY2tkcm9wKHQpe3RoaXMuX2hhc0JhY2tkcm9wPXBIKHQpfWdldCBsb2NrUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fbG9ja1Bvc2l0aW9ufXNldCBsb2NrUG9zaXRpb24odCl7dGhpcy5fbG9ja1Bvc2l0aW9uPXBIKHQpfWdldCBmbGV4aWJsZURpbWVuc2lvbnMoKXtyZXR1cm4gdGhpcy5fZmxleGlibGVEaW1lbnNpb25zfXNldCBmbGV4aWJsZURpbWVuc2lvbnModCl7dGhpcy5fZmxleGlibGVEaW1lbnNpb25zPXBIKHQpfWdldCBncm93QWZ0ZXJPcGVuKCl7cmV0dXJuIHRoaXMuX2dyb3dBZnRlck9wZW59c2V0IGdyb3dBZnRlck9wZW4odCl7dGhpcy5fZ3Jvd0FmdGVyT3Blbj1wSCh0KX1nZXQgcHVzaCgpe3JldHVybiB0aGlzLl9wdXNofXNldCBwdXNoKHQpe3RoaXMuX3B1c2g9cEgodCl9Z2V0IG92ZXJsYXlSZWYoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZn1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciJ9bmdPbkRlc3Ryb3koKXt0aGlzLl9hdHRhY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9kZXRhY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9bmdPbkNoYW5nZXModCl7dGhpcy5fcG9zaXRpb24mJih0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKSx0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoe3dpZHRoOnRoaXMud2lkdGgsbWluV2lkdGg6dGhpcy5taW5XaWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsbWluSGVpZ2h0OnRoaXMubWluSGVpZ2h0fSksdC5vcmlnaW4mJnRoaXMub3BlbiYmdGhpcy5fcG9zaXRpb24uYXBwbHkoKSksdC5vcGVuJiYodGhpcy5vcGVuP3RoaXMuX2F0dGFjaE92ZXJsYXkoKTp0aGlzLl9kZXRhY2hPdmVybGF5KCkpfV9jcmVhdGVPdmVybGF5KCl7dGhpcy5wb3NpdGlvbnMmJnRoaXMucG9zaXRpb25zLmxlbmd0aHx8KHRoaXMucG9zaXRpb25zPXNWKTtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWY9dGhpcy5fb3ZlcmxheS5jcmVhdGUodGhpcy5fYnVpbGRDb25maWcoKSk7dGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uPXQuYXR0YWNobWVudHMoKS5zdWJzY3JpYmUoKCgpPT50aGlzLmF0dGFjaC5lbWl0KCkpKSx0aGlzLl9kZXRhY2hTdWJzY3JpcHRpb249dC5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKCk9PnRoaXMuZGV0YWNoLmVtaXQoKSkpLHQua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgodD0+e3RoaXMub3ZlcmxheUtleWRvd24ubmV4dCh0KSx0LmtleUNvZGUhPT1ySHx8dGhpcy5kaXNhYmxlQ2xvc2V8fGRIKHQpfHwodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RldGFjaE92ZXJsYXkoKSl9KSksdGhpcy5fb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnN1YnNjcmliZSgodD0+e3RoaXMub3ZlcmxheU91dHNpZGVDbGljay5uZXh0KHQpfSkpfV9idWlsZENvbmZpZygpe2NvbnN0IHQ9dGhpcy5fcG9zaXRpb249dGhpcy5wb3NpdGlvblN0cmF0ZWd5fHx0aGlzLl9jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCksZT1uZXcgSUIoe2RpcmVjdGlvbjp0aGlzLl9kaXIscG9zaXRpb25TdHJhdGVneTp0LHNjcm9sbFN0cmF0ZWd5OnRoaXMuc2Nyb2xsU3RyYXRlZ3ksaGFzQmFja2Ryb3A6dGhpcy5oYXNCYWNrZHJvcH0pO3JldHVybih0aGlzLndpZHRofHwwPT09dGhpcy53aWR0aCkmJihlLndpZHRoPXRoaXMud2lkdGgpLCh0aGlzLmhlaWdodHx8MD09PXRoaXMuaGVpZ2h0KSYmKGUuaGVpZ2h0PXRoaXMuaGVpZ2h0KSwodGhpcy5taW5XaWR0aHx8MD09PXRoaXMubWluV2lkdGgpJiYoZS5taW5XaWR0aD10aGlzLm1pbldpZHRoKSwodGhpcy5taW5IZWlnaHR8fDA9PT10aGlzLm1pbkhlaWdodCkmJihlLm1pbkhlaWdodD10aGlzLm1pbkhlaWdodCksdGhpcy5iYWNrZHJvcENsYXNzJiYoZS5iYWNrZHJvcENsYXNzPXRoaXMuYmFja2Ryb3BDbGFzcyksdGhpcy5wYW5lbENsYXNzJiYoZS5wYW5lbENsYXNzPXRoaXMucGFuZWxDbGFzcyksZX1fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0KXtjb25zdCBlPXRoaXMucG9zaXRpb25zLm1hcCgodD0+KHtvcmlnaW5YOnQub3JpZ2luWCxvcmlnaW5ZOnQub3JpZ2luWSxvdmVybGF5WDp0Lm92ZXJsYXlYLG92ZXJsYXlZOnQub3ZlcmxheVksb2Zmc2V0WDp0Lm9mZnNldFh8fHRoaXMub2Zmc2V0WCxvZmZzZXRZOnQub2Zmc2V0WXx8dGhpcy5vZmZzZXRZLHBhbmVsQ2xhc3M6dC5wYW5lbENsYXNzfHx2b2lkIDB9KSkpO3JldHVybiB0LnNldE9yaWdpbih0aGlzLm9yaWdpbi5lbGVtZW50UmVmKS53aXRoUG9zaXRpb25zKGUpLndpdGhGbGV4aWJsZURpbWVuc2lvbnModGhpcy5mbGV4aWJsZURpbWVuc2lvbnMpLndpdGhQdXNoKHRoaXMucHVzaCkud2l0aEdyb3dBZnRlck9wZW4odGhpcy5ncm93QWZ0ZXJPcGVuKS53aXRoVmlld3BvcnRNYXJnaW4odGhpcy52aWV3cG9ydE1hcmdpbikud2l0aExvY2tlZFBvc2l0aW9uKHRoaXMubG9ja1Bvc2l0aW9uKS53aXRoVHJhbnNmb3JtT3JpZ2luT24odGhpcy50cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcil9X2NyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKXtjb25zdCB0PXRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMub3JpZ2luLmVsZW1lbnRSZWYpO3JldHVybiB0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHQpLHR9X2F0dGFjaE92ZXJsYXkoKXt0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkuaGFzQmFja2Ryb3A9dGhpcy5oYXNCYWNrZHJvcDp0aGlzLl9jcmVhdGVPdmVybGF5KCksdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpfHx0aGlzLl9vdmVybGF5UmVmLmF0dGFjaCh0aGlzLl90ZW1wbGF0ZVBvcnRhbCksdGhpcy5oYXNCYWNrZHJvcD90aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbj10aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmJhY2tkcm9wQ2xpY2suZW1pdCh0KX0pKTp0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5wb3NpdGlvbkNoYW5nZS5vYnNlcnZlcnMubGVuZ3RoPjAmJih0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbj10aGlzLl9wb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMucGlwZShqZSgoKCk9PnRoaXMucG9zaXRpb25DaGFuZ2Uub2JzZXJ2ZXJzLmxlbmd0aD4wKSkpLnN1YnNjcmliZSgodD0+e3RoaXMucG9zaXRpb25DaGFuZ2UuZW1pdCh0KSwwPT09dGhpcy5wb3NpdGlvbkNoYW5nZS5vYnNlcnZlcnMubGVuZ3RoJiZ0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfSkpKX1fZGV0YWNoT3ZlcmxheSgpe3RoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1kVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZFYpKGZ1KHJWKSxmdShFYiksZnUoRmIpLGZ1KGxWKSxmdShBRiw4KSl9LGRWLsm1ZGlyPWhvKHt0eXBlOmRWLHNlbGVjdG9yczpbWyIiLCJjZGstY29ubmVjdGVkLW92ZXJsYXkiLCIiXSxbIiIsImNvbm5lY3RlZC1vdmVybGF5IiwiIl0sWyIiLCJjZGtDb25uZWN0ZWRPdmVybGF5IiwiIl1dLGlucHV0czp7dmlld3BvcnRNYXJnaW46WyJjZGtDb25uZWN0ZWRPdmVybGF5Vmlld3BvcnRNYXJnaW4iLCJ2aWV3cG9ydE1hcmdpbiJdLG9wZW46WyJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsIm9wZW4iXSxkaXNhYmxlQ2xvc2U6WyJjZGtDb25uZWN0ZWRPdmVybGF5RGlzYWJsZUNsb3NlIiwiZGlzYWJsZUNsb3NlIl0sc2Nyb2xsU3RyYXRlZ3k6WyJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLCJzY3JvbGxTdHJhdGVneSJdLG9mZnNldFg6WyJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WCIsIm9mZnNldFgiXSxvZmZzZXRZOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiLCJvZmZzZXRZIl0saGFzQmFja2Ryb3A6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiLCJoYXNCYWNrZHJvcCJdLGxvY2tQb3NpdGlvbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCJsb2NrUG9zaXRpb24iXSxmbGV4aWJsZURpbWVuc2lvbnM6WyJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIiwiZmxleGlibGVEaW1lbnNpb25zIl0sZ3Jvd0FmdGVyT3BlbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIiwiZ3Jvd0FmdGVyT3BlbiJdLHB1c2g6WyJjZGtDb25uZWN0ZWRPdmVybGF5UHVzaCIsInB1c2giXSxwb3NpdGlvbnM6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIiwicG9zaXRpb25zIl0sb3JpZ2luOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsIm9yaWdpbiJdLHBvc2l0aW9uU3RyYXRlZ3k6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25TdHJhdGVneSIsInBvc2l0aW9uU3RyYXRlZ3kiXSx3aWR0aDpbImNka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aCIsIndpZHRoIl0saGVpZ2h0OlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhlaWdodCIsImhlaWdodCJdLG1pbldpZHRoOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoIiwibWluV2lkdGgiXSxtaW5IZWlnaHQ6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluSGVpZ2h0IiwibWluSGVpZ2h0Il0sYmFja2Ryb3BDbGFzczpbImNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzIiwiYmFja2Ryb3BDbGFzcyJdLHBhbmVsQ2xhc3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsInBhbmVsQ2xhc3MiXSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3RvcjpbImNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5PbiIsInRyYW5zZm9ybU9yaWdpblNlbGVjdG9yIl19LG91dHB1dHM6e2JhY2tkcm9wQ2xpY2s6ImJhY2tkcm9wQ2xpY2siLHBvc2l0aW9uQ2hhbmdlOiJwb3NpdGlvbkNoYW5nZSIsYXR0YWNoOiJhdHRhY2giLGRldGFjaDoiZGV0YWNoIixvdmVybGF5S2V5ZG93bjoib3ZlcmxheUtleWRvd24iLG92ZXJsYXlPdXRzaWRlQ2xpY2s6Im92ZXJsYXlPdXRzaWRlQ2xpY2sifSxleHBvcnRBczpbImNka0Nvbm5lY3RlZE92ZXJsYXkiXSxmZWF0dXJlczpbcW9dfSksZFYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpyVn0se3R5cGU6RWJ9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbbFZdfV19LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XSxkVi5wcm9wRGVjb3JhdG9ycz17b3JpZ2luOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiJdfV0scG9zaXRpb25zOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyJdfV0scG9zaXRpb25TdHJhdGVneTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5Il19XSxvZmZzZXRYOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFgiXX1dLG9mZnNldFk6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WSJdfV0sd2lkdGg6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGgiXX1dLGhlaWdodDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHQiXX1dLG1pbldpZHRoOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoIl19XSxtaW5IZWlnaHQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluSGVpZ2h0Il19XSxiYWNrZHJvcENsYXNzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3MiXX1dLHBhbmVsQ2xhc3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyJdfV0sdmlld3BvcnRNYXJnaW46W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5Vmlld3BvcnRNYXJnaW4iXX1dLHNjcm9sbFN0cmF0ZWd5Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5Il19XSxvcGVuOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iXX1dLGRpc2FibGVDbG9zZTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlEaXNhYmxlQ2xvc2UiXX1dLHRyYW5zZm9ybU9yaWdpblNlbGVjdG9yOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVRyYW5zZm9ybU9yaWdpbk9uIl19XSxoYXNCYWNrZHJvcDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcCJdfV0sbG9ja1Bvc2l0aW9uOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbiJdfV0sZmxleGlibGVEaW1lbnNpb25zOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyJdfV0sZ3Jvd0FmdGVyT3Blbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIl19XSxwdXNoOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVB1c2giXX1dLGJhY2tkcm9wQ2xpY2s6W3t0eXBlOkVffV0scG9zaXRpb25DaGFuZ2U6W3t0eXBlOkVffV0sYXR0YWNoOlt7dHlwZTpFX31dLGRldGFjaDpbe3R5cGU6RV99XSxvdmVybGF5S2V5ZG93bjpbe3R5cGU6RV99XSxvdmVybGF5T3V0c2lkZUNsaWNrOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRWLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGstY29ubmVjdGVkLW92ZXJsYXldLCBbY29ubmVjdGVkLW92ZXJsYXldLCBbY2RrQ29ubmVjdGVkT3ZlcmxheV0iLGV4cG9ydEFzOiJjZGtDb25uZWN0ZWRPdmVybGF5In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnJWfSx7dHlwZTpFYn0se3R5cGU6RmJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltsVl19XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dfSkse3ZpZXdwb3J0TWFyZ2luOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luIl19XSxvcGVuOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iXX1dLGRpc2FibGVDbG9zZTpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlEaXNhYmxlQ2xvc2UiXX1dLGJhY2tkcm9wQ2xpY2s6W3t0eXBlOkVffV0scG9zaXRpb25DaGFuZ2U6W3t0eXBlOkVffV0sYXR0YWNoOlt7dHlwZTpFX31dLGRldGFjaDpbe3R5cGU6RV99XSxvdmVybGF5S2V5ZG93bjpbe3R5cGU6RV99XSxvdmVybGF5T3V0c2lkZUNsaWNrOlt7dHlwZTpFX31dLHNjcm9sbFN0cmF0ZWd5Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5Il19XSxvZmZzZXRYOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFgiXX1dLG9mZnNldFk6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WSJdfV0saGFzQmFja2Ryb3A6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiXX1dLGxvY2tQb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iXX1dLGZsZXhpYmxlRGltZW5zaW9uczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiXX1dLGdyb3dBZnRlck9wZW46W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiJdfV0scHVzaDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoIl19XSxwb3NpdGlvbnM6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIl19XSxvcmlnaW46W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIl19XSxwb3NpdGlvblN0cmF0ZWd5Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kiXX1dLHdpZHRoOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoIl19XSxoZWlnaHQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGVpZ2h0Il19XSxtaW5XaWR0aDpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCJdfV0sbWluSGVpZ2h0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCJdfV0sYmFja2Ryb3BDbGFzczpbe3R5cGU6Ul8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzIl19XSxwYW5lbENsYXNzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiXX1dLHRyYW5zZm9ybU9yaWdpblNlbGVjdG9yOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVRyYW5zZm9ybU9yaWdpbk9uIl19XX0pO2NvbnN0IHBWPXtwcm92aWRlOmxWLGRlcHM6W3JWXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIG1WKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHVWe311Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dVYpfSx1Vi7JtW1vZD11byh7dHlwZTp1Vn0pLHVWLsm1aW5qPURuKHtwcm92aWRlcnM6W3JWLHBWXSxpbXBvcnRzOltbTkYsd0IsZkJdLGZCXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodVYsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltORix3QixmQl0sZXhwb3J0czpbZFYsY1YsZkJdLGRlY2xhcmF0aW9uczpbZFYsY1ZdLHByb3ZpZGVyczpbclYscFZdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8odVYse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltkVixjVl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkYsd0IsZkJdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2RWLGNWLGZCXX19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBmViBleHRlbmRzIHFCe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZSYmdGhpcy5fZnVsbFNjcmVlbkxpc3RlbmVyJiZ0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWUsdGhpcy5fZnVsbFNjcmVlbkxpc3RlbmVyKX1fY3JlYXRlQ29udGFpbmVyKCl7c3VwZXIuX2NyZWF0ZUNvbnRhaW5lcigpLHRoaXMuX2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKSx0aGlzLl9hZGRGdWxsc2NyZWVuQ2hhbmdlTGlzdGVuZXIoKCgpPT50aGlzLl9hZGp1c3RQYXJlbnRGb3JGdWxsc2NyZWVuQ2hhbmdlKCkpKX1fYWRqdXN0UGFyZW50Rm9yRnVsbHNjcmVlbkNoYW5nZSgpe2lmKCF0aGlzLl9jb250YWluZXJFbGVtZW50KXJldHVybjsodGhpcy5nZXRGdWxsc2NyZWVuRWxlbWVudCgpfHx0aGlzLl9kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KX1fYWRkRnVsbHNjcmVlbkNoYW5nZUxpc3RlbmVyKHQpe2NvbnN0IGU9dGhpcy5fZ2V0RXZlbnROYW1lKCk7ZSYmKHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lciYmdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lciksdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihlLHQpLHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lcj10KX1fZ2V0RXZlbnROYW1lKCl7aWYoIXRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWUpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQ7dC5mdWxsc2NyZWVuRW5hYmxlZD90aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lPSJmdWxsc2NyZWVuY2hhbmdlIjp0LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkP3RoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9IndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiOnQubW96RnVsbFNjcmVlbkVuYWJsZWQ/dGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0ibW96ZnVsbHNjcmVlbmNoYW5nZSI6dC5tc0Z1bGxzY3JlZW5FbmFibGVkJiYodGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0iTVNGdWxsc2NyZWVuQ2hhbmdlIil9cmV0dXJuIHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWV9Z2V0RnVsbHNjcmVlbkVsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50O3JldHVybiB0LmZ1bGxzY3JlZW5FbGVtZW50fHx0LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHx0Lm1vekZ1bGxTY3JlZW5FbGVtZW50fHx0Lm1zRnVsbHNjcmVlbkVsZW1lbnR8fG51bGx9fWZWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmVikoVHIoc00pLFRyKF9IKSl9LGZWLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBmVihUcihzTSksVHIoX0gpKX0sdG9rZW46ZlYscHJvdmlkZWRJbjoicm9vdCJ9KSxmVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6X0h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZWLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOl9IfV19KSxudWxsKTtjbGFzcyBnVnt9Z1YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdWKX0sZ1YuybVtb2Q9dW8oe3R5cGU6Z1Z9KSxnVi7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihnVixbe3R5cGU6TF8sYXJnczpbe31dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGhWPW5ldyBTZXQ7bGV0IGJWO2NsYXNzIHlWe2NvbnN0cnVjdG9yKHQpe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fbWF0Y2hNZWRpYT10aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJndpbmRvdy5tYXRjaE1lZGlhP3dpbmRvdy5tYXRjaE1lZGlhLmJpbmQod2luZG93KTpfVn1tYXRjaE1lZGlhKHQpe3JldHVybiB0aGlzLl9wbGF0Zm9ybS5XRUJLSVQmJihmdW5jdGlvbiBlKHQpe2lmKGhWLmhhcyh0KSlyZXR1cm47dHJ5e2JWfHwoYlY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxiVi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2NzcyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYlYpKSxiVi5zaGVldCYmKGJWLnNoZWV0Lmluc2VydFJ1bGUoYEBtZWRpYSAke3R9IHsuZngtcXVlcnktdGVzdHsgfX1gLDApLGhWLmFkZCh0KSl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcih0KX19KSh0KSx0aGlzLl9tYXRjaE1lZGlhKHQpfX1mdW5jdGlvbiBfVih0KXtyZXR1cm57bWF0Y2hlczoiYWxsIj09PXR8fCIiPT09dCxtZWRpYTp0LGFkZExpc3RlbmVyOigpPT57fSxyZW1vdmVMaXN0ZW5lcjooKT0+e319fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi95Vi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eVYpKFRyKF9IKSl9LHlWLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB5VihUcihfSCkpfSx0b2tlbjp5Vixwcm92aWRlZEluOiJyb290In0pLHlWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X0h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlWLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpfSH1dfSksbnVsbCk7Y2xhc3MgQ1Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9tZWRpYU1hdGNoZXI9dCx0aGlzLl96b25lPWUsdGhpcy5fcXVlcmllcz1uZXcgTWFwLHRoaXMuX2Rlc3Ryb3lTdWJqZWN0PW5ldyBCfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveVN1YmplY3QubmV4dCgpLHRoaXMuX2Rlc3Ryb3lTdWJqZWN0LmNvbXBsZXRlKCl9aXNNYXRjaGVkKHQpe3JldHVybiBNVihmSCh0KSkuc29tZSgodD0+dGhpcy5fcmVnaXN0ZXJRdWVyeSh0KS5tcWwubWF0Y2hlcykpfW9ic2VydmUodCl7bGV0IGU9S3QoTVYoZkgodCkpLm1hcCgodD0+dGhpcy5fcmVnaXN0ZXJRdWVyeSh0KS5vYnNlcnZhYmxlKSkpO3JldHVybiBlPW5lKGUucGlwZSh2ZSgxKSksZS5waXBlKExlKDEpLENlKDApKSksZS5waXBlKFZ0KCh0PT57Y29uc3QgZT17bWF0Y2hlczohMSxicmVha3BvaW50czp7fX07cmV0dXJuIHQuZm9yRWFjaCgoKHttYXRjaGVzOnQscXVlcnk6bn0pPT57ZS5tYXRjaGVzPWUubWF0Y2hlc3x8dCxlLmJyZWFrcG9pbnRzW25dPXR9KSksZX0pKSl9X3JlZ2lzdGVyUXVlcnkodCl7aWYodGhpcy5fcXVlcmllcy5oYXModCkpcmV0dXJuIHRoaXMuX3F1ZXJpZXMuZ2V0KHQpO2NvbnN0IGU9dGhpcy5fbWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEodCksbj17b2JzZXJ2YWJsZTpuZXcgVCgodD0+e2NvbnN0IG49ZT0+dGhpcy5fem9uZS5ydW4oKCgpPT50Lm5leHQoZSkpKTtyZXR1cm4gZS5hZGRMaXN0ZW5lcihuKSwoKT0+e2UucmVtb3ZlTGlzdGVuZXIobil9fSkpLnBpcGUoQmUoZSksVnQoKCh7bWF0Y2hlczplfSk9Pih7cXVlcnk6dCxtYXRjaGVzOmV9KSkpLFVlKHRoaXMuX2Rlc3Ryb3lTdWJqZWN0KSksbXFsOmV9O3JldHVybiB0aGlzLl9xdWVyaWVzLnNldCh0LG4pLG59fWZ1bmN0aW9uIE1WKHQpe3JldHVybiB0Lm1hcCgodD0+dC5zcGxpdCgiLCIpKSkucmVkdWNlKCgodCxlKT0+dC5jb25jYXQoZSkpKS5tYXAoKHQ9PnQudHJpbSgpKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0NWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDVikoVHIoeVYpLFRyKG1DKSl9LENWLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBDVihUcih5ViksVHIobUMpKX0sdG9rZW46Q1YscHJvdmlkZWRJbjoicm9vdCJ9KSxDVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnlWfSx7dHlwZTptQ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ1YsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnlWfSx7dHlwZTptQ31dfSksbnVsbCk7Y29uc3QgdlY9IihtYXgtd2lkdGg6IDU5OS45OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCksIChtYXgtd2lkdGg6IDk1OS45OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIix4Vj0iKG1heC13aWR0aDogNTk5Ljk4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSI7ZnVuY3Rpb24gT1YodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJkaXYiLDEpLF91KDEsImJ1dHRvbiIsMiksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgpLmFjdGlvbigpfSkpLFBmKDIpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtEYygyKSx3Zih0LmRhdGEuYWN0aW9uKX19ZnVuY3Rpb24gUFYodCxlKXt9Y29uc3Qgd1Y9bmV3IGVyKCJNYXRTbmFja0JhckRhdGEiKTtjbGFzcyBrVntjb25zdHJ1Y3Rvcigpe3RoaXMucG9saXRlbmVzcz0iYXNzZXJ0aXZlIix0aGlzLmFubm91bmNlbWVudE1lc3NhZ2U9IiIsdGhpcy5kdXJhdGlvbj0wLHRoaXMuZGF0YT1udWxsLHRoaXMuaG9yaXpvbnRhbFBvc2l0aW9uPSJjZW50ZXIiLHRoaXMudmVydGljYWxQb3NpdGlvbj0iYm90dG9tIn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFNWPU1hdGgucG93KDIsMzEpLTE7Y2xhc3MgRFZ7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9vdmVybGF5UmVmPWUsdGhpcy5fYWZ0ZXJEaXNtaXNzZWQ9bmV3IEIsdGhpcy5fYWZ0ZXJPcGVuZWQ9bmV3IEIsdGhpcy5fb25BY3Rpb249bmV3IEIsdGhpcy5fZGlzbWlzc2VkQnlBY3Rpb249ITEsdGhpcy5jb250YWluZXJJbnN0YW5jZT10LHRoaXMub25BY3Rpb24oKS5zdWJzY3JpYmUoKCgpPT50aGlzLmRpc21pc3MoKSkpLHQuX29uRXhpdC5zdWJzY3JpYmUoKCgpPT50aGlzLl9maW5pc2hEaXNtaXNzKCkpKX1kaXNtaXNzKCl7dGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY2xvc2VkfHx0aGlzLmNvbnRhaW5lckluc3RhbmNlLmV4aXQoKSxjbGVhclRpbWVvdXQodGhpcy5fZHVyYXRpb25UaW1lb3V0SWQpfWRpc21pc3NXaXRoQWN0aW9uKCl7dGhpcy5fb25BY3Rpb24uY2xvc2VkfHwodGhpcy5fZGlzbWlzc2VkQnlBY3Rpb249ITAsdGhpcy5fb25BY3Rpb24ubmV4dCgpLHRoaXMuX29uQWN0aW9uLmNvbXBsZXRlKCkpLGNsZWFyVGltZW91dCh0aGlzLl9kdXJhdGlvblRpbWVvdXRJZCl9Y2xvc2VXaXRoQWN0aW9uKCl7dGhpcy5kaXNtaXNzV2l0aEFjdGlvbigpfV9kaXNtaXNzQWZ0ZXIodCl7dGhpcy5fZHVyYXRpb25UaW1lb3V0SWQ9c2V0VGltZW91dCgoKCk9PnRoaXMuZGlzbWlzcygpKSxNYXRoLm1pbih0LFNWKSl9X29wZW4oKXt0aGlzLl9hZnRlck9wZW5lZC5jbG9zZWR8fCh0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCksdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKSl9X2ZpbmlzaERpc21pc3MoKXt0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKSx0aGlzLl9vbkFjdGlvbi5jbG9zZWR8fHRoaXMuX29uQWN0aW9uLmNvbXBsZXRlKCksdGhpcy5fYWZ0ZXJEaXNtaXNzZWQubmV4dCh7ZGlzbWlzc2VkQnlBY3Rpb246dGhpcy5fZGlzbWlzc2VkQnlBY3Rpb259KSx0aGlzLl9hZnRlckRpc21pc3NlZC5jb21wbGV0ZSgpLHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSExfWFmdGVyRGlzbWlzc2VkKCl7cmV0dXJuIHRoaXMuX2FmdGVyRGlzbWlzc2VkfWFmdGVyT3BlbmVkKCl7cmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2UuX29uRW50ZXJ9b25BY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25BY3Rpb259fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBSVntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc25hY2tCYXJSZWY9dCx0aGlzLmRhdGE9ZX1hY3Rpb24oKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3NXaXRoQWN0aW9uKCl9Z2V0IGhhc0FjdGlvbigpe3JldHVybiEhdGhpcy5kYXRhLmFjdGlvbn19UlYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJWKShmdShEViksZnUod1YpKX0sUlYuybVjbXA9c28oe3R5cGU6UlYsc2VsZWN0b3JzOltbInNpbXBsZS1zbmFjay1iYXIiXV0saG9zdEF0dHJzOlsxLCJtYXQtc2ltcGxlLXNuYWNrYmFyIl0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImNsYXNzIiwibWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24iLDQsIm5nSWYiXSxbMSwibWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24iXSxbIm1hdC1idXR0b24iLCIiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJzcGFuIiksUGYoMSksQ3UoKSxIbSgyLE9WLDMsMSwiZGl2IiwwKSksMiZlJiYoRGMoMSksd2Yobi5kYXRhLm1lc3NhZ2UpLERjKDEpLGh1KCJuZ0lmIixuLmhhc0FjdGlvbikpfSxkaXJlY3RpdmVzOltQdixXTF0sc3R5bGVzOlsiLm1hdC1zaW1wbGUtc25hY2tiYXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtsaW5lLWhlaWdodDoyMHB4O29wYWNpdHk6MX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257ZmxleC1zaHJpbms6MDttYXJnaW46LThweCAtOHB4IC04cHggOHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiBidXR0b257bWF4LWhlaWdodDozNnB4O21pbi13aWR0aDowfVtkaXI9cnRsXSAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tcmlnaHQ6OHB4fVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksUlYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpEVn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3dWXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSVixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzaW1wbGUtc25hY2stYmFyIix0ZW1wbGF0ZTonPHNwYW4+e3tkYXRhLm1lc3NhZ2V9fTwvc3Bhbj5cbjxkaXYgY2xhc3M9Im1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIiAgKm5nSWY9Imhhc0FjdGlvbiI+XG4gIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPSJhY3Rpb24oKSI+e3tkYXRhLmFjdGlvbn19PC9idXR0b24+XG48L2Rpdj5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsaG9zdDp7Y2xhc3M6Im1hdC1zaW1wbGUtc25hY2tiYXIifSxzdHlsZXM6WyIubWF0LXNpbXBsZS1zbmFja2JhcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2xpbmUtaGVpZ2h0OjIwcHg7b3BhY2l0eToxfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntmbGV4LXNocmluazowO21hcmdpbjotOHB4IC04cHggLThweCA4cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIGJ1dHRvbnttYXgtaGVpZ2h0OjM2cHg7bWluLXdpZHRoOjB9W2Rpcj1ydGxdIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbnttYXJnaW4tbGVmdDotOHB4O21hcmdpbi1yaWdodDo4cHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkRWfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd1ZdfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgRVY9e3NuYWNrQmFyU3RhdGU6eE8oInN0YXRlIixba08oInZvaWQsIGhpZGRlbiIsd08oe3RyYW5zZm9ybToic2NhbGUoMC44KSIsb3BhY2l0eTowfSkpLGtPKCJ2aXNpYmxlIix3Tyh7dHJhbnNmb3JtOiJzY2FsZSgxKSIsb3BhY2l0eToxfSkpLERPKCIqID0+IHZpc2libGUiLE9PKCIxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIpKSxETygiKiA9PiB2b2lkLCAqID0+IGhpZGRlbiIsT08oIjc1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKSIsd08oe29wYWNpdHk6MH0pKSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEFWIGV4dGVuZHMgQ0J7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcigpLHRoaXMuX25nWm9uZT10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1uLHRoaXMuX3BsYXRmb3JtPW8sdGhpcy5zbmFja0JhckNvbmZpZz1pLHRoaXMuX2Fubm91bmNlRGVsYXk9MTUwLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkFubm91bmNlPW5ldyBCLHRoaXMuX29uRXhpdD1uZXcgQix0aGlzLl9vbkVudGVyPW5ldyBCLHRoaXMuX2FuaW1hdGlvblN0YXRlPSJ2b2lkIix0aGlzLmF0dGFjaERvbVBvcnRhbD10PT4odGhpcy5fYXNzZXJ0Tm90QXR0YWNoZWQoKSx0aGlzLl9hcHBseVNuYWNrQmFyQ2xhc3NlcygpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hEb21Qb3J0YWwodCkpLHRoaXMuX2xpdmU9ImFzc2VydGl2ZSIhPT1pLnBvbGl0ZW5lc3N8fGkuYW5ub3VuY2VtZW50TWVzc2FnZT8ib2ZmIj09PWkucG9saXRlbmVzcz8ib2ZmIjoicG9saXRlIjoiYXNzZXJ0aXZlIix0aGlzLl9wbGF0Zm9ybS5GSVJFRk9YJiYoInBvbGl0ZSI9PT10aGlzLl9saXZlJiYodGhpcy5fcm9sZT0ic3RhdHVzIiksImFzc2VydGl2ZSI9PT10aGlzLl9saXZlJiYodGhpcy5fcm9sZT0iYWxlcnQiKSl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe3JldHVybiB0aGlzLl9hc3NlcnROb3RBdHRhY2hlZCgpLHRoaXMuX2FwcGx5U25hY2tCYXJDbGFzc2VzKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaENvbXBvbmVudFBvcnRhbCh0KX1hdHRhY2hUZW1wbGF0ZVBvcnRhbCh0KXtyZXR1cm4gdGhpcy5fYXNzZXJ0Tm90QXR0YWNoZWQoKSx0aGlzLl9hcHBseVNuYWNrQmFyQ2xhc3NlcygpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hUZW1wbGF0ZVBvcnRhbCh0KX1vbkFuaW1hdGlvbkVuZCh0KXtjb25zdHtmcm9tU3RhdGU6ZSx0b1N0YXRlOm59PXQ7aWYoKCJ2b2lkIj09PW4mJiJ2b2lkIiE9PWV8fCJoaWRkZW4iPT09bikmJnRoaXMuX2NvbXBsZXRlRXhpdCgpLCJ2aXNpYmxlIj09PW4pe2NvbnN0IHQ9dGhpcy5fb25FbnRlcjt0aGlzLl9uZ1pvbmUucnVuKCgoKT0+e3QubmV4dCgpLHQuY29tcGxldGUoKX0pKX19ZW50ZXIoKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9hbmltYXRpb25TdGF0ZT0idmlzaWJsZSIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuX3NjcmVlblJlYWRlckFubm91bmNlKCkpfWV4aXQoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uU3RhdGU9ImhpZGRlbiIsdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF0LWV4aXQiLCIiKSxjbGVhclRpbWVvdXQodGhpcy5fYW5ub3VuY2VUaW1lb3V0SWQpLHRoaXMuX29uRXhpdH1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9jb21wbGV0ZUV4aXQoKX1fY29tcGxldGVFeGl0KCl7dGhpcy5fbmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX29uRXhpdC5uZXh0KCksdGhpcy5fb25FeGl0LmNvbXBsZXRlKCl9KSl9X2FwcGx5U25hY2tCYXJDbGFzc2VzKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT10aGlzLnNuYWNrQmFyQ29uZmlnLnBhbmVsQ2xhc3M7ZSYmKEFycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKChlPT50LmNsYXNzTGlzdC5hZGQoZSkpKTp0LmNsYXNzTGlzdC5hZGQoZSkpLCJjZW50ZXIiPT09dGhpcy5zbmFja0JhckNvbmZpZy5ob3Jpem9udGFsUG9zaXRpb24mJnQuY2xhc3NMaXN0LmFkZCgibWF0LXNuYWNrLWJhci1jZW50ZXIiKSwidG9wIj09PXRoaXMuc25hY2tCYXJDb25maWcudmVydGljYWxQb3NpdGlvbiYmdC5jbGFzc0xpc3QuYWRkKCJtYXQtc25hY2stYmFyLXRvcCIpfV9hc3NlcnROb3RBdHRhY2hlZCgpe2lmKHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXR0YWNoIHNuYWNrIGJhciBjb250ZW50IGFmdGVyIGNvbnRlbnQgaXMgYWxyZWFkeSBhdHRhY2hlZCIpfV9zY3JlZW5SZWFkZXJBbm5vdW5jZSgpe3RoaXMuX2Fubm91bmNlVGltZW91dElkfHx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dGhpcy5fYW5ub3VuY2VUaW1lb3V0SWQ9c2V0VGltZW91dCgoKCk9Pntjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCJbYXJpYS1oaWRkZW5dIiksZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiW2FyaWEtbGl2ZV0iKTtpZih0JiZlKXtsZXQgbj1udWxsO3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZ0LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiYobj1kb2N1bWVudC5hY3RpdmVFbGVtZW50KSx0LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSxlLmFwcGVuZENoaWxkKHQpLG51bGw9PW58fG4uZm9jdXMoKSx0aGlzLl9vbkFubm91bmNlLm5leHQoKSx0aGlzLl9vbkFubm91bmNlLmNvbXBsZXRlKCl9fSksdGhpcy5fYW5ub3VuY2VEZWxheSl9KSl9fUFWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBVikoZnUobUMpLGZ1KEtoKSxmdShPYiksZnUoX0gpLGZ1KGtWKSl9LEFWLsm1Y21wPXNvKHt0eXBlOkFWLHNlbGVjdG9yczpbWyJzbmFjay1iYXItY29udGFpbmVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShPQiw3KSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLl9wb3J0YWxPdXRsZXQ9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC1zbmFjay1iYXItY29udGFpbmVyIl0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmUnUoIkBzdGF0ZS5kb25lIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkFuaW1hdGlvbkVuZChlKX0pKSwyJmUmJmRnKCJAc3RhdGUiLG4uX2FuaW1hdGlvblN0YXRlKX0sZmVhdHVyZXM6W1FwXSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIl0sWyJjZGtQb3J0YWxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksSG0oMSxQViwwLDAsIm5nLXRlbXBsYXRlIiwxKSxDdSgpLE11KDIsImRpdiIpKSwyJmUmJihEYygyKSx5bSgiYXJpYS1saXZlIixuLl9saXZlKSgicm9sZSIsbi5fcm9sZSkpfSxkaXJlY3RpdmVzOltPQl0sc3R5bGVzOlsiLm1hdC1zbmFjay1iYXItY29udGFpbmVye2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjoyNHB4O21heC13aWR0aDozM3Z3O21pbi13aWR0aDozNDRweDtwYWRkaW5nOjE0cHggMTZweDttaW4taGVpZ2h0OjQ4cHg7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNuYWNrLWJhci1jb250YWluZXJ7Ym9yZGVyOnNvbGlkIDFweH0ubWF0LXNuYWNrLWJhci1oYW5kc2V0e3dpZHRoOjEwMCV9Lm1hdC1zbmFjay1iYXItaGFuZHNldCAubWF0LXNuYWNrLWJhci1jb250YWluZXJ7bWFyZ2luOjhweDttYXgtd2lkdGg6MTAwJTttaW4td2lkdGg6MDt3aWR0aDoxMDAlfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbRVYuc25hY2tCYXJTdGF0ZV19fSksQVYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTptQ30se3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpfSH0se3R5cGU6a1Z9XSxBVi5wcm9wRGVjb3JhdG9ycz17X3BvcnRhbE91dGxldDpbe3R5cGU6YXIsYXJnczpbT0Ise3N0YXRpYzohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQVYsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic25hY2stYmFyLWNvbnRhaW5lciIsdGVtcGxhdGU6J1x4M2MhLS0gSW5pdGlhbGx5IGhvbGRzIHRoZSBzbmFjayBiYXIgY29udGVudCwgd2lsbCBiZSBlbXB0eSBhZnRlciBhbm5vdW5jaW5nIHRvIHNjcmVlbiByZWFkZXJzLiAtLVx4M2VcbjxkaXYgYXJpYS1oaWRkZW49InRydWUiPlxuICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuXHgzYyEtLSBXaWxsIHJlY2VpdmUgdGhlIHNuYWNrIGJhciBjb250ZW50IGZyb20gdGhlIG5vbi1saXZlIGRpdiwgbW92ZSB3aWxsIGhhcHBlbiBhIHNob3J0IGRlbGF5IGFmdGVyIG9wZW5pbmcgLS1ceDNlXG48ZGl2IFthdHRyLmFyaWEtbGl2ZV09Il9saXZlIiBbYXR0ci5yb2xlXT0iX3JvbGUiPjwvZGl2PlxuJyxjaGFuZ2VEZXRlY3Rpb246VW4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOlduLk5vbmUsYW5pbWF0aW9uczpbRVYuc25hY2tCYXJTdGF0ZV0saG9zdDp7Y2xhc3M6Im1hdC1zbmFjay1iYXItY29udGFpbmVyIiwiW0BzdGF0ZV0iOiJfYW5pbWF0aW9uU3RhdGUiLCIoQHN0YXRlLmRvbmUpIjoib25BbmltYXRpb25FbmQoJGV2ZW50KSJ9LHN0eWxlczpbIi5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MjRweDttYXgtd2lkdGg6MzN2dzttaW4td2lkdGg6MzQ0cHg7cGFkZGluZzoxNHB4IDE2cHg7bWluLWhlaWdodDo0OHB4O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2JvcmRlcjpzb2xpZCAxcHh9Lm1hdC1zbmFjay1iYXItaGFuZHNldHt3aWR0aDoxMDAlfS5tYXQtc25hY2stYmFyLWhhbmRzZXQgLm1hdC1zbmFjay1iYXItY29udGFpbmVye21hcmdpbjo4cHg7bWF4LXdpZHRoOjEwMCU7bWluLXdpZHRoOjA7d2lkdGg6MTAwJX1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bUN9LHt0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6X0h9LHt0eXBlOmtWfV19KSx7X3BvcnRhbE91dGxldDpbe3R5cGU6YXIsYXJnczpbT0Ise3N0YXRpYzohMH1dfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFRWe31UVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VFYpfSxUVi7JtW1vZD11byh7dHlwZTpUVn0pLFRWLsm1aW5qPURuKHtpbXBvcnRzOltbdVYsd0IscngsWUwsV0ZdLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVFYsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOlt1Vix3QixyeCxZTCxXRl0sZXhwb3J0czpbQVYsV0ZdLGRlY2xhcmF0aW9uczpbQVYsUlZdLGVudHJ5Q29tcG9uZW50czpbQVYsUlZdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oVFYse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltBVixSVl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdVYsd0IscngsWUwsV0ZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0FWLFdGXX19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE5WPW5ldyBlcigibWF0LXNuYWNrLWJhci1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIHpWKCl7cmV0dXJuIG5ldyBrVn19KTtjbGFzcyBJVntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2xpdmU9ZSx0aGlzLl9pbmplY3Rvcj1uLHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlcj1vLHRoaXMuX3BhcmVudFNuYWNrQmFyPWksdGhpcy5fZGVmYXVsdENvbmZpZz1hLHRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWw9bnVsbCx0aGlzLnNpbXBsZVNuYWNrQmFyQ29tcG9uZW50PVJWLHRoaXMuc25hY2tCYXJDb250YWluZXJDb21wb25lbnQ9QVYsdGhpcy5oYW5kc2V0Q3NzQ2xhc3M9Im1hdC1zbmFjay1iYXItaGFuZHNldCJ9Z2V0IF9vcGVuZWRTbmFja0JhclJlZigpe2NvbnN0IHQ9dGhpcy5fcGFyZW50U25hY2tCYXI7cmV0dXJuIHQ/dC5fb3BlbmVkU25hY2tCYXJSZWY6dGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbH1zZXQgX29wZW5lZFNuYWNrQmFyUmVmKHQpe3RoaXMuX3BhcmVudFNuYWNrQmFyP3RoaXMuX3BhcmVudFNuYWNrQmFyLl9vcGVuZWRTbmFja0JhclJlZj10OnRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWw9dH1vcGVuRnJvbUNvbXBvbmVudCh0LGUpe3JldHVybiB0aGlzLl9hdHRhY2godCxlKX1vcGVuRnJvbVRlbXBsYXRlKHQsZSl7cmV0dXJuIHRoaXMuX2F0dGFjaCh0LGUpfW9wZW4odCxlPSIiLG4pe2NvbnN0IG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2RlZmF1bHRDb25maWcpLG4pO3JldHVybiBvLmRhdGE9e21lc3NhZ2U6dCxhY3Rpb246ZX0sby5hbm5vdW5jZW1lbnRNZXNzYWdlPT09dCYmKG8uYW5ub3VuY2VtZW50TWVzc2FnZT12b2lkIDApLHRoaXMub3BlbkZyb21Db21wb25lbnQodGhpcy5zaW1wbGVTbmFja0JhckNvbXBvbmVudCxvKX1kaXNtaXNzKCl7dGhpcy5fb3BlbmVkU25hY2tCYXJSZWYmJnRoaXMuX29wZW5lZFNuYWNrQmFyUmVmLmRpc21pc3MoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWwmJnRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWwuZGlzbWlzcygpfV9hdHRhY2hTbmFja0JhckNvbnRhaW5lcih0LGUpe2NvbnN0IG49TnAuY3JlYXRlKHtwYXJlbnQ6ZSYmZS52aWV3Q29udGFpbmVyUmVmJiZlLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3J8fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6a1YsdXNlVmFsdWU6ZX1dfSksbz1uZXcgYkIodGhpcy5zbmFja0JhckNvbnRhaW5lckNvbXBvbmVudCxlLnZpZXdDb250YWluZXJSZWYsbiksaT10LmF0dGFjaChvKTtyZXR1cm4gaS5pbnN0YW5jZS5zbmFja0JhckNvbmZpZz1lLGkuaW5zdGFuY2V9X2F0dGFjaCh0LGUpe2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbmV3IGtWKSx0aGlzLl9kZWZhdWx0Q29uZmlnKSxlKSxvPXRoaXMuX2NyZWF0ZU92ZXJsYXkobiksaT10aGlzLl9hdHRhY2hTbmFja0JhckNvbnRhaW5lcihvLG4pLGE9bmV3IERWKGksbyk7aWYodCBpbnN0YW5jZW9mIEViKXtjb25zdCBlPW5ldyB5Qih0LG51bGwseyRpbXBsaWNpdDpuLmRhdGEsc25hY2tCYXJSZWY6YX0pO2EuaW5zdGFuY2U9aS5hdHRhY2hUZW1wbGF0ZVBvcnRhbChlKX1lbHNle2NvbnN0IGU9dGhpcy5fY3JlYXRlSW5qZWN0b3IobixhKSxvPW5ldyBiQih0LHZvaWQgMCxlKSxyPWkuYXR0YWNoQ29tcG9uZW50UG9ydGFsKG8pO2EuaW5zdGFuY2U9ci5pbnN0YW5jZX1yZXR1cm4gdGhpcy5fYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoeFYpLnBpcGUoVWUoby5kZXRhY2htZW50cygpKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT1vLm92ZXJsYXlFbGVtZW50LmNsYXNzTGlzdDt0Lm1hdGNoZXM/ZS5hZGQodGhpcy5oYW5kc2V0Q3NzQ2xhc3MpOmUucmVtb3ZlKHRoaXMuaGFuZHNldENzc0NsYXNzKX0pKSxuLmFubm91bmNlbWVudE1lc3NhZ2UmJmkuX29uQW5ub3VuY2Uuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2xpdmUuYW5ub3VuY2Uobi5hbm5vdW5jZW1lbnRNZXNzYWdlLG4ucG9saXRlbmVzcyl9KSksdGhpcy5fYW5pbWF0ZVNuYWNrQmFyKGEsbiksdGhpcy5fb3BlbmVkU25hY2tCYXJSZWY9YSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZn1fYW5pbWF0ZVNuYWNrQmFyKHQsZSl7dC5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vcGVuZWRTbmFja0JhclJlZj09dCYmKHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmPW51bGwpLGUuYW5ub3VuY2VtZW50TWVzc2FnZSYmdGhpcy5fbGl2ZS5jbGVhcigpfSkpLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmPyh0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSgoKCk9Pnt0LmNvbnRhaW5lckluc3RhbmNlLmVudGVyKCl9KSksdGhpcy5fb3BlbmVkU25hY2tCYXJSZWYuZGlzbWlzcygpKTp0LmNvbnRhaW5lckluc3RhbmNlLmVudGVyKCksZS5kdXJhdGlvbiYmZS5kdXJhdGlvbj4wJiZ0LmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgoKT0+dC5fZGlzbWlzc0FmdGVyKGUuZHVyYXRpb24pKSl9X2NyZWF0ZU92ZXJsYXkodCl7Y29uc3QgZT1uZXcgSUI7ZS5kaXJlY3Rpb249dC5kaXJlY3Rpb247bGV0IG49dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpO2NvbnN0IG89InJ0bCI9PT10LmRpcmVjdGlvbixpPSJsZWZ0Ij09PXQuaG9yaXpvbnRhbFBvc2l0aW9ufHwic3RhcnQiPT09dC5ob3Jpem9udGFsUG9zaXRpb24mJiFvfHwiZW5kIj09PXQuaG9yaXpvbnRhbFBvc2l0aW9uJiZvLGE9IWkmJiJjZW50ZXIiIT09dC5ob3Jpem9udGFsUG9zaXRpb247cmV0dXJuIGk/bi5sZWZ0KCIwIik6YT9uLnJpZ2h0KCIwIik6bi5jZW50ZXJIb3Jpem9udGFsbHkoKSwidG9wIj09PXQudmVydGljYWxQb3NpdGlvbj9uLnRvcCgiMCIpOm4uYm90dG9tKCIwIiksZS5wb3NpdGlvblN0cmF0ZWd5PW4sdGhpcy5fb3ZlcmxheS5jcmVhdGUoZSl9X2NyZWF0ZUluamVjdG9yKHQsZSl7cmV0dXJuIE5wLmNyZWF0ZSh7cGFyZW50OnQmJnQudmlld0NvbnRhaW5lclJlZiYmdC52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yfHx0aGlzLl9pbmplY3Rvcixwcm92aWRlcnM6W3twcm92aWRlOkRWLHVzZVZhbHVlOmV9LHtwcm92aWRlOndWLHVzZVZhbHVlOnQuZGF0YX1dfSl9fUlWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJVikoVHIoclYpLFRyKF9GKSxUcihOcCksVHIoQ1YpLFRyKElWLDEyKSxUcihOVikpfSxJVi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgSVYoVHIoclYpLFRyKF9GKSxUcih5cCksVHIoQ1YpLFRyKElWLDEyKSxUcihOVikpfSx0b2tlbjpJVixwcm92aWRlZEluOlRWfSksSVYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpyVn0se3R5cGU6X0Z9LHt0eXBlOk5wfSx7dHlwZTpDVn0se3R5cGU6SVYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlVyfV19LHt0eXBlOmtWLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W05WXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJVixbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46VFZ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpyVn0se3R5cGU6X0Z9LHt0eXBlOk5wfSx7dHlwZTpDVn0se3R5cGU6SVYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlVyfV19LHt0eXBlOmtWLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W05WXX1dfV19KSxudWxsKTtjb25zdCBIVj0vW1xcXiQuKis/KClbXF17fXxdL2c7Y29uc3QgRlY9IlxcdTAwMDAtXFx1MDAyMFxcdTAwN2YtXFx1MDA5ZiIsTFY9bmV3IFJlZ0V4cCgiKD86W2EtekEtWl1bYS16QS1aMC05Ky4tXXsyLH06XFwvXFwvfGRhdGE6fHd3d1xcLilbXlxccyIrRlYrJyJdezIsfVteXFxzJytGVisiXCInKX1cXF0sOjsuIT9dIiwiZ3UiKTtmdW5jdGlvbiBCVih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe24uZmxhZ3MuaW5jbHVkZXMoImciKXx8KG49bmV3IFJlZ0V4cChuLG4uZmxhZ3MrImciKSk7Y29uc3Qgbz1bXTtsZXQgaT0wO2Zvcihjb25zdCBlIG9mIHQubWF0Y2hBbGwobikpe2NvbnN0IG49ZS5pbmRleCxhPWVbMF07bj5pJiZvLnB1c2goe2luZGV4OmksdGV4dDp0LnN1YnN0cmluZyhpLG4pLG1hdGNoZXNSZWdleDohMX0pLG8ucHVzaCh7aW5kZXg6bix0ZXh0OmEsbWF0Y2hlc1JlZ2V4OiEwfSksaT1uK2EubGVuZ3RofXJldHVybiB0Lmxlbmd0aD5pJiZvLnB1c2goe2luZGV4OmksdGV4dDp0LnN1YnN0cmluZyhpLHQubGVuZ3RoKSxtYXRjaGVzUmVnZXg6ITF9KSxvfSkodCxMVikubWFwKCgoe21hdGNoZXNSZWdleDp0LHRleHQ6ZX0pPT4oe2lzVVJMOnQsdGV4dDplfSkpKX1mdW5jdGlvbiBWVih0LGUpe2lmKDEmdCYmKHZ1KDApLFBmKDEpLHh1KCkpLDImdCl7Y29uc3QgdD1OdSgpLiRpbXBsaWNpdDtEYygxKSxrZigiICIsdC50ZXh0LCIgIil9fWZ1bmN0aW9uIFVWKHQsZSl7aWYoMSZ0JiYoX3UoMCwiYSIsNyksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCkuJGltcGxpY2l0O0Z1KCJocmVmIix0LnRleHQsWHMpLERjKDEpLHdmKHQudGV4dCl9fWZ1bmN0aW9uIGpWKHQsZSl7aWYoMSZ0JiYodnUoMCksSG0oMSxWViwyLDEsIm5nLWNvbnRhaW5lciIsNSksSG0oMixVViwyLDIsIm5nLXRlbXBsYXRlIixudWxsLDYscXkpLHh1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPUZtKDMpO0RjKDEpLGh1KCJuZ0lmIiwhdC5pc1VSTCkoIm5nSWZFbHNlIixuKX19ZnVuY3Rpb24gV1YodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJidXR0b24iLDgpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkFjdGlvbkJ1dHRvbkNsaWNrZWQoKX0pKSxQZigxKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGtmKCIgIix0LmFsZXJ0LmZvbGxvd3VwQWN0aW9uLmxvY2FsaXplZExhYmVsLCIgIil9fWNsYXNzIEdWe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnNuYWNrQmFyUmVmPXQsdGhpcy51bmtub3duRGF0YT1lLHRoaXMuc3RvcmU9bix0aGlzLnNwbGl0QnlVUkw9QlYsdGhpcy5hbGVydD1lfW9uQWN0aW9uQnV0dG9uQ2xpY2tlZCgpe3JldHVybiBKVCh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe3RoaXMuc25hY2tCYXJSZWYuZGlzbWlzcygpO2NvbnN0IHQ9eWllbGQgdGhpcy5hbGVydC5mb2xsb3d1cEFjdGlvbi5nZXRGb2xsb3d1cEFjdGlvbih0aGlzLnN0b3JlKTt0aGlzLnN0b3JlLmRpc3BhdGNoKHQpfSkpfW9uQ2xvc2VCdXR0b25DbGlja2VkKCl7dGhpcy5zbmFja0JhclJlZi5kaXNtaXNzKCl9fUdWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHVikoZnUoRFYpLGZ1KHdWKSxmdShpUykpfSxHVi7JtWNtcD1zbyh7dHlwZTpHVixzZWxlY3RvcnM6W1siYWxlcnQtZGlzcGxheS1zbmFja2JhciJdXSxkZWNsczo2LHZhcnM6Mixjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiRGlzbWlzcyIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIGNsb3NlIHRoZSBzbmFja2JhciBtZXNzYWdl4pCfZWE0ZDlmZTYxNDIwYTNmY2U4MWNmNTRjNGM2MTVlM2MxOWM2NDZhNuKQnzE1MzYwODc1MTk3NDM3MDczNjI6RGlzbWlzc2A7cmV0dXJuW1sxLCJtZXNzYWdlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250cm9scyJdLFsibWF0LWJ1dHRvbiIsIiIsImNsYXNzIiwiZm9sbG93dXAtYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwiZGlzbWlzcy1idXR0b24iLDMsImNsaWNrIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibGlua1BpZWNlIiwiIl0sWyJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIiwidGFyZ2V0IiwiX2JsYW5rIiwzLCJocmVmIl0sWyJtYXQtYnV0dG9uIiwiIiwxLCJmb2xsb3d1cC1idXR0b24iLDMsImNsaWNrIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxIbSgxLGpWLDQsMiwibmctY29udGFpbmVyIiwxKSxDdSgpLF91KDIsImRpdiIsMiksSG0oMyxXViwyLDEsImJ1dHRvbiIsMyksX3UoNCwiYnV0dG9uIiw0KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25DbG9zZUJ1dHRvbkNsaWNrZWQoKX0pKSxQZig1LCIgRGlzbWlzcyAiKSxDdSgpLEN1KCkpLDImZSYmKERjKDEpLGh1KCJuZ0Zvck9mIixuLnNwbGl0QnlVUkwobi5hbGVydC5sb2NhbGl6ZWRNZXNzYWdlKSksRGMoMiksaHUoIm5nSWYiLG4uYWxlcnQuZm9sbG93dXBBY3Rpb24pKX0sZGlyZWN0aXZlczpbeHYsUHYsV0xdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwfS5tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDthbGlnbi1zZWxmOmNlbnRlcjttYXJnaW46NXB4IDA7d29yZC1icmVhazpicmVhay13b3JkfS5tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGFbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWxlZnQ6YXV0b31idXR0b25bX25nY29udGVudC0lQ09NUCVde3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoR1YsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYWxlcnQtZGlzcGxheS1zbmFja2JhciIsdGVtcGxhdGVVcmw6Ii4vYWxlcnRfZGlzcGxheV9zbmFja2Jhcl9jb250YWluZXIubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbGVydF9kaXNwbGF5X3NuYWNrYmFyX2NvbnRhaW5lci5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RFZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3Vl19XX0se3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIFlWe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuc25hY2tCYXI9ZSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9bmdPbkluaXQoKXt0aGlzLnN0b3JlLnNlbGVjdChZVCkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpLGZlKCh0PT5Cb29sZWFuKHQpKSkpLnN1YnNjcmliZSgodD0+e3RoaXMuc2hvd0FsZXJ0KHQpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1zaG93QWxlcnQodCl7dGhpcy5zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChHVix7ZHVyYXRpb246NWUzLGhvcml6b250YWxQb3NpdGlvbjoic3RhcnQiLHZlcnRpY2FsUG9zaXRpb246ImJvdHRvbSIsZGF0YTp0fSl9fVlWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZVikoZnUoaVMpLGZ1KElWKSl9LFlWLsm1Y21wPXNvKHt0eXBlOllWLHNlbGVjdG9yczpbWyJhbGVydC1zbmFja2JhciJdXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlWLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFsZXJ0LXNuYWNrYmFyIix0ZW1wbGF0ZToiIixjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOklWfV19KSxudWxsKTtjbGFzcyBxVnt9cVYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHFWKX0scVYuybVtb2Q9dW8oe3R5cGU6cVZ9KSxxVi7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFlMLFRWXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFWLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltZVixHVl0sZXhwb3J0czpbWVZdLGltcG9ydHM6W3J4LFlMLFRWXSxlbnRyeUNvbXBvbmVudHM6W0dWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHFWLHtkZWNsYXJhdGlvbnM6W1lWLEdWXSxpbXBvcnRzOltyeCxZTCxUVl0sZXhwb3J0czpbWVZdfSk7Y2xhc3MgWlZ7fVpWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaVil9LFpWLsm1bW9kPXVvKHt0eXBlOlpWfSksWlYuybVpbmo9RG4oe2ltcG9ydHM6W1tmVCxxVixUUy5mb3JGZWF0dXJlKEdULGlIKSxoRC5mb3JGZWF0dXJlKFtuSF0pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFpWLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbZlQscVYsVFMuZm9yRmVhdHVyZShHVCxpSCksaEQuZm9yRmVhdHVyZShbbkhdKV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhaVix7aW1wb3J0czpbZlQscVYsQVMsZ0RdfSk7Y29uc3QgWFY9WyIqIixbWyJtYXQtdG9vbGJhci1yb3ciXV1dLEtWPVlGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KTtjbGFzcyBKVnt9SlYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpWKX0sSlYuybVkaXI9aG8oe3R5cGU6SlYsc2VsZWN0b3JzOltbIm1hdC10b29sYmFyLXJvdyJdXSxob3N0QXR0cnM6WzEsIm1hdC10b29sYmFyLXJvdyJdLGV4cG9ydEFzOlsibWF0VG9vbGJhclJvdyJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKVixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdG9vbGJhci1yb3ciLGV4cG9ydEFzOiJtYXRUb29sYmFyUm93Iixob3N0OntjbGFzczoibWF0LXRvb2xiYXItcm93In19XX1dLG51bGwsbnVsbCk7Y2xhc3MgUVYgZXh0ZW5kcyBLVntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCksdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9kb2N1bWVudD1ufW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmKHRoaXMuX2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKSx0aGlzLl90b29sYmFyUm93cy5jaGFuZ2VzLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKSkpKX1fY2hlY2tUb29sYmFyTWl4ZWRNb2Rlcygpe2lmKHRoaXMuX3Rvb2xiYXJSb3dzLmxlbmd0aCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXtBcnJheS5mcm9tKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzKS5maWx0ZXIoKHQ9PiEodC5jbGFzc0xpc3QmJnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJtYXQtdG9vbGJhci1yb3ciKSkpKS5maWx0ZXIoKHQ9PnQubm9kZVR5cGUhPT0odGhpcy5fZG9jdW1lbnQ/dGhpcy5fZG9jdW1lbnQuQ09NTUVOVF9OT0RFOjgpKSkuc29tZSgodD0+ISghdC50ZXh0Q29udGVudHx8IXQudGV4dENvbnRlbnQudHJpbSgpKSkpJiYoZnVuY3Rpb24gdCgpe3Rocm93IEVycm9yKCJNYXRUb29sYmFyOiBBdHRlbXB0aW5nIHRvIGNvbWJpbmUgZGlmZmVyZW50IHRvb2xiYXIgbW9kZXMuIEVpdGhlciBzcGVjaWZ5IG11bHRpcGxlIGA8bWF0LXRvb2xiYXItcm93PmAgZWxlbWVudHMgZXhwbGljaXRseSBvciBqdXN0IHBsYWNlIGNvbnRlbnQgaW5zaWRlIG9mIGEgYDxtYXQtdG9vbGJhcj5gIGZvciBhIHNpbmdsZSByb3cuIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoKX19fVFWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRVikoZnUoS2gpLGZ1KF9IKSxmdShzTSkpfSxRVi7JtWNtcD1zbyh7dHlwZTpRVixzZWxlY3RvcnM6W1sibWF0LXRvb2xiYXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZVeShvLEpWLDUpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX3Rvb2xiYXJSb3dzPXQpfX0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhciJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJtYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzIixuLl90b29sYmFyUm93cy5sZW5ndGg+MCkoIm1hdC10b29sYmFyLXNpbmdsZS1yb3ciLDA9PT1uLl90b29sYmFyUm93cy5sZW5ndGgpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VG9vbGJhciJdLGZlYXR1cmVzOltRcF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiIsIm1hdC10b29sYmFyLXJvdyJdLGRlY2xzOjIsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihJdShYViksSHUoMCksSHUoMSwxKSl9LHN0eWxlczpbIi5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sYmFye291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7ZGlzcGxheTpmbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxRVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpfSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sUVYucHJvcERlY29yYXRvcnM9e190b29sYmFyUm93czpbe3R5cGU6b3IsYXJnczpbSlYse2Rlc2NlbmRhbnRzOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRVixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdG9vbGJhciIsZXhwb3J0QXM6Im1hdFRvb2xiYXIiLHRlbXBsYXRlOic8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9Im1hdC10b29sYmFyLXJvdyI+PC9uZy1jb250ZW50PlxuJyxpbnB1dHM6WyJjb2xvciJdLGhvc3Q6e2NsYXNzOiJtYXQtdG9vbGJhciIsIltjbGFzcy5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzXSI6Il90b29sYmFyUm93cy5sZW5ndGggPiAwIiwiW2NsYXNzLm1hdC10b29sYmFyLXNpbmdsZS1yb3ddIjoiX3Rvb2xiYXJSb3dzLmxlbmd0aCA9PT0gMCJ9LGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLHN0eWxlczpbIi5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sYmFye291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7ZGlzcGxheTpmbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpfSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSx7X3Rvb2xiYXJSb3dzOlt7dHlwZTpvcixhcmdzOltKVix7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Y2xhc3MgJFZ7fWZ1bmN0aW9uIHRVKHQsZSl7MSZ0JiZIdSgwKX0kVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFYpfSwkVi7JtW1vZD11byh7dHlwZTokVn0pLCRWLsm1aW5qPURuKHtpbXBvcnRzOltbV0ZdLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFYsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltXRl0sZXhwb3J0czpbUVYsSlYsV0ZdLGRlY2xhcmF0aW9uczpbUVYsSlZdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oJFYse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltRVixKVl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bV0ZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1FWLEpWLFdGXX19KTtjb25zdCBlVT1bIioiXTtmdW5jdGlvbiBuVSh0LGUpe31jb25zdCBvVT1mdW5jdGlvbih0KXtyZXR1cm57YW5pbWF0aW9uRHVyYXRpb246dH19LGlVPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3ZhbHVlOnQscGFyYW1zOmV9fSxhVT1bInRhYkJvZHlXcmFwcGVyIl0sclU9WyJ0YWJIZWFkZXIiXTtmdW5jdGlvbiBzVSh0LGUpe31mdW5jdGlvbiBsVSh0LGUpe2lmKDEmdCYmSG0oMCxzVSwwLDAsIm5nLXRlbXBsYXRlIiw5KSwyJnQpe2h1KCJjZGtQb3J0YWxPdXRsZXQiLE51KCkuJGltcGxpY2l0LnRlbXBsYXRlTGFiZWwpfX1mdW5jdGlvbiBjVSh0LGUpe2lmKDEmdCYmUGYoMCksMiZ0KXt3ZihOdSgpLiRpbXBsaWNpdC50ZXh0TGFiZWwpfX1mdW5jdGlvbiBkVSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsNiksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe2NvbnN0IG49UGkodCksbz1uLiRpbXBsaWNpdCxpPW4uaW5kZXgsYT1OdSgpLHI9Rm0oMSk7cmV0dXJuIGEuX2hhbmRsZUNsaWNrKG8scixpKX0pKSgiY2RrRm9jdXNDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe2NvbnN0IG89UGkodCkuaW5kZXg7cmV0dXJuIE51KCkuX3RhYkZvY3VzQ2hhbmdlZChuLG8pfSkpLF91KDEsImRpdiIsNyksSG0oMixsVSwxLDEsIm5nLXRlbXBsYXRlIiw4KSxIbSgzLGNVLDEsMSwibmctdGVtcGxhdGUiLDgpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4LG89TnUoKTtjZigibWF0LXRhYi1sYWJlbC1hY3RpdmUiLG8uc2VsZWN0ZWRJbmRleD09biksaHUoImlkIixvLl9nZXRUYWJMYWJlbElkKG4pKSgiZGlzYWJsZWQiLHQuZGlzYWJsZWQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsdC5kaXNhYmxlZHx8by5kaXNhYmxlUmlwcGxlKSx5bSgidGFiSW5kZXgiLG8uX2dldFRhYkluZGV4KHQsbikpKCJhcmlhLXBvc2luc2V0IixuKzEpKCJhcmlhLXNldHNpemUiLG8uX3RhYnMubGVuZ3RoKSgiYXJpYS1jb250cm9scyIsby5fZ2V0VGFiQ29udGVudElkKG4pKSgiYXJpYS1zZWxlY3RlZCIsby5zZWxlY3RlZEluZGV4PT1uKSgiYXJpYS1sYWJlbCIsdC5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLCF0LmFyaWFMYWJlbCYmdC5hcmlhTGFiZWxsZWRieT90LmFyaWFMYWJlbGxlZGJ5Om51bGwpLERjKDIpLGh1KCJuZ0lmIix0LnRlbXBsYXRlTGFiZWwpLERjKDEpLGh1KCJuZ0lmIiwhdC50ZW1wbGF0ZUxhYmVsKX19ZnVuY3Rpb24gcFUodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJtYXQtdGFiLWJvZHkiLDEwKSxEdSgiX29uQ2VudGVyZWQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkuX3JlbW92ZVRhYkJvZHlXcmFwcGVySGVpZ2h0KCl9KSkoIl9vbkNlbnRlcmluZyIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkuX3NldFRhYkJvZHlXcmFwcGVySGVpZ2h0KG4pfSkpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleCxvPU51KCk7Y2YoIm1hdC10YWItYm9keS1hY3RpdmUiLG8uc2VsZWN0ZWRJbmRleD09PW4pLGh1KCJpZCIsby5fZ2V0VGFiQ29udGVudElkKG4pKSgiY29udGVudCIsdC5jb250ZW50KSgicG9zaXRpb24iLHQucG9zaXRpb24pKCJvcmlnaW4iLHQub3JpZ2luKSgiYW5pbWF0aW9uRHVyYXRpb24iLG8uYW5pbWF0aW9uRHVyYXRpb24pLHltKCJ0YWJpbmRleCIsbnVsbCE9by5jb250ZW50VGFiSW5kZXgmJm8uc2VsZWN0ZWRJbmRleD09PW4/by5jb250ZW50VGFiSW5kZXg6bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsby5fZ2V0VGFiTGFiZWxJZChuKSl9fWNvbnN0IG1VPVsidGFiTGlzdENvbnRhaW5lciJdLHVVPVsidGFiTGlzdCJdLGZVPVsibmV4dFBhZ2luYXRvciJdLGdVPVsicHJldmlvdXNQYWdpbmF0b3IiXSxoVT1uZXcgZXIoIk1hdElua0JhclBvc2l0aW9uZXIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIGJVKCl7cmV0dXJuIHQ9Pih7bGVmdDp0Pyh0Lm9mZnNldExlZnR8fDApKyJweCI6IjAiLHdpZHRoOnQ/KHQub2Zmc2V0V2lkdGh8fDApKyJweCI6IjAifSl9fSk7Y2xhc3MgeVV7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2lua0JhclBvc2l0aW9uZXI9bix0aGlzLl9hbmltYXRpb25Nb2RlPW99YWxpZ25Ub0VsZW1lbnQodCl7dGhpcy5zaG93KCksInVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX3NldFN0eWxlcyh0KSkpfSkpOnRoaXMuX3NldFN0eWxlcyh0KX1zaG93KCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUifWhpZGUoKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIn1fc2V0U3R5bGVzKHQpe2NvbnN0IGU9dGhpcy5faW5rQmFyUG9zaXRpb25lcih0KSxuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtuLnN0eWxlLmxlZnQ9ZS5sZWZ0LG4uc3R5bGUud2lkdGg9ZS53aWR0aH19eVUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlVKShmdShLaCksZnUobUMpLGZ1KGhVKSxmdShjayw4KSl9LHlVLsm1ZGlyPWhvKHt0eXBlOnlVLHNlbGVjdG9yczpbWyJtYXQtaW5rLWJhciJdXSxob3N0QXR0cnM6WzEsIm1hdC1pbmstYmFyIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY2YoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSl9fSkseVUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltoVV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeVUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWluay1iYXIiLGhvc3Q6e2NsYXNzOiJtYXQtaW5rLWJhciIsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfYW5pbWF0aW9uTW9kZSA9PT0gJ05vb3BBbmltYXRpb25zJyJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbaFVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgX1U9bmV3IGVyKCJNYXRUYWJDb250ZW50Iik7Y2xhc3MgQ1V7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZT10fX1DVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q1UpKGZ1KEViKSl9LENVLsm1ZGlyPWhvKHt0eXBlOkNVLHNlbGVjdG9yczpbWyIiLCJtYXRUYWJDb250ZW50IiwiIl1dLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6X1UsdXNlRXhpc3Rpbmc6Q1V9XSldfSksQ1UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ1UsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRhYkNvbnRlbnRdIixwcm92aWRlcnM6W3twcm92aWRlOl9VLHVzZUV4aXN0aW5nOkNVfV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBNVT1uZXcgZXIoIk1hdFRhYkxhYmVsIik7Y2xhc3MgdlUgZXh0ZW5kcyB2Qnt9dlUuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKHZVKSkpKG58fHZVKX19KSgpLHZVLsm1ZGlyPWhvKHt0eXBlOnZVLHNlbGVjdG9yczpbWyIiLCJtYXQtdGFiLWxhYmVsIiwiIl0sWyIiLCJtYXRUYWJMYWJlbCIsIiJdXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOk1VLHVzZUV4aXN0aW5nOnZVfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodlUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC10YWItbGFiZWxdLCBbbWF0VGFiTGFiZWxdIixwcm92aWRlcnM6W3twcm92aWRlOk1VLHVzZUV4aXN0aW5nOnZVfV19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB4VT1HRihjbGFzc3t9KSxPVT1uZXcgZXIoIk1BVF9UQUJfR1JPVVAiKTtjbGFzcyBQVSBleHRlbmRzIHhVe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fY2xvc2VzdFRhYkdyb3VwPWUsdGhpcy50ZXh0TGFiZWw9IiIsdGhpcy5fY29udGVudFBvcnRhbD1udWxsLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgQix0aGlzLnBvc2l0aW9uPW51bGwsdGhpcy5vcmlnaW49bnVsbCx0aGlzLmlzQWN0aXZlPSExfWdldCB0ZW1wbGF0ZUxhYmVsKCl7cmV0dXJuIHRoaXMuX3RlbXBsYXRlTGFiZWx9c2V0IHRlbXBsYXRlTGFiZWwodCl7dGhpcy5fc2V0VGVtcGxhdGVMYWJlbElucHV0KHQpfWdldCBjb250ZW50KCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRQb3J0YWx9bmdPbkNoYW5nZXModCl7KHQuaGFzT3duUHJvcGVydHkoInRleHRMYWJlbCIpfHx0Lmhhc093blByb3BlcnR5KCJkaXNhYmxlZCIpKSYmdGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3N0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpfW5nT25Jbml0KCl7dGhpcy5fY29udGVudFBvcnRhbD1uZXcgeUIodGhpcy5fZXhwbGljaXRDb250ZW50fHx0aGlzLl9pbXBsaWNpdENvbnRlbnQsdGhpcy5fdmlld0NvbnRhaW5lclJlZil9X3NldFRlbXBsYXRlTGFiZWxJbnB1dCh0KXt0JiYodGhpcy5fdGVtcGxhdGVMYWJlbD10KX19UFUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBVKShmdShGYiksZnUoT1UsOCkpfSxQVS7JtWNtcD1zbyh7dHlwZTpQVSxzZWxlY3RvcnM6W1sibWF0LXRhYiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJihVeShvLE1VLDUpLFV5KG8sX1UsNyxFYikpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4udGVtcGxhdGVMYWJlbD10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5fZXhwbGljaXRDb250ZW50PXQuZmlyc3QpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KEViLDcpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX2ltcGxpY2l0Q29udGVudD10LmZpcnN0KX19LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIix0ZXh0TGFiZWw6WyJsYWJlbCIsInRleHRMYWJlbCJdLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSxhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il19LGV4cG9ydEFzOlsibWF0VGFiIl0sZmVhdHVyZXM6W1FwLHFvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZVUsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEl1KCksSG0oMCx0VSwxLDAsIm5nLXRlbXBsYXRlIikpfSxlbmNhcHN1bGF0aW9uOjJ9KSxQVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbT1VdfSx7dHlwZTpCcn1dfV0sUFUucHJvcERlY29yYXRvcnM9e3RlbXBsYXRlTGFiZWw6W3t0eXBlOmlyLGFyZ3M6W01VXX1dLF9leHBsaWNpdENvbnRlbnQ6W3t0eXBlOmlyLGFyZ3M6W19VLHtyZWFkOkViLHN0YXRpYzohMH1dfV0sX2ltcGxpY2l0Q29udGVudDpbe3R5cGU6YXIsYXJnczpbRWIse3N0YXRpYzohMH1dfV0sdGV4dExhYmVsOlt7dHlwZTpSXyxhcmdzOlsibGFiZWwiXX1dLGFyaWFMYWJlbDpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQVSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFiIix0ZW1wbGF0ZToiXHgzYyEtLSBDcmVhdGUgYSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIDxtYXQtdGFiPiBzbyB0aGF0IHdlIGNhbiBncmFiIGEgcmVmZXJlbmNlIHRvIHRoaXNcbiAgICBUZW1wbGF0ZVJlZiBhbmQgdXNlIGl0IGluIGEgUG9ydGFsIHRvIHJlbmRlciB0aGUgdGFiIGNvbnRlbnQgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZVxuICAgIHRhYi1ncm91cC4gLS1ceDNlXG48bmctdGVtcGxhdGU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+XG4iLGlucHV0czpbImRpc2FibGVkIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGV4cG9ydEFzOiJtYXRUYWIifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltPVV19LHt0eXBlOkJyfV19XX0pLHt0ZXh0TGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJsYWJlbCJdfV0sdGVtcGxhdGVMYWJlbDpbe3R5cGU6aXIsYXJnczpbTVVdfV0sX2V4cGxpY2l0Q29udGVudDpbe3R5cGU6aXIsYXJnczpbX1Use3JlYWQ6RWIsc3RhdGljOiEwfV19XSxfaW1wbGljaXRDb250ZW50Olt7dHlwZTphcixhcmdzOltFYix7c3RhdGljOiEwfV19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHdVPXt0cmFuc2xhdGVUYWI6eE8oInRyYW5zbGF0ZVRhYiIsW2tPKCJjZW50ZXIsIHZvaWQsIGxlZnQtb3JpZ2luLWNlbnRlciwgcmlnaHQtb3JpZ2luLWNlbnRlciIsd08oe3RyYW5zZm9ybToibm9uZSJ9KSksa08oImxlZnQiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKSIsbWluSGVpZ2h0OiIxcHgifSkpLGtPKCJyaWdodCIsd08oe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkiLG1pbkhlaWdodDoiMXB4In0pKSxETygiKiA9PiBsZWZ0LCAqID0+IHJpZ2h0LCBsZWZ0ID0+IGNlbnRlciwgcmlnaHQgPT4gY2VudGVyIixPTygie3thbmltYXRpb25EdXJhdGlvbn19IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSIpKSxETygidm9pZCA9PiBsZWZ0LW9yaWdpbi1jZW50ZXIiLFt3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkifSksT08oInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKV0pLERPKCJ2b2lkID0+IHJpZ2h0LW9yaWdpbi1jZW50ZXIiLFt3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSJ9KSxPTygie3thbmltYXRpb25EdXJhdGlvbn19IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSIpXSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGtVIGV4dGVuZHMgT0J7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG8pLHRoaXMuX2hvc3Q9bix0aGlzLl9jZW50ZXJpbmdTdWI9Zi5FTVBUWSx0aGlzLl9sZWF2aW5nU3ViPWYuRU1QVFl9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMuX2NlbnRlcmluZ1N1Yj10aGlzLl9ob3N0Ll9iZWZvcmVDZW50ZXJpbmcucGlwZShCZSh0aGlzLl9ob3N0Ll9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX2hvc3QuX3Bvc2l0aW9uKSkpLnN1YnNjcmliZSgodD0+e3QmJiF0aGlzLmhhc0F0dGFjaGVkKCkmJnRoaXMuYXR0YWNoKHRoaXMuX2hvc3QuX2NvbnRlbnQpfSkpLHRoaXMuX2xlYXZpbmdTdWI9dGhpcy5faG9zdC5fYWZ0ZXJMZWF2aW5nQ2VudGVyLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmRldGFjaCgpfSkpfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRlc3Ryb3koKSx0aGlzLl9jZW50ZXJpbmdTdWIudW5zdWJzY3JpYmUoKSx0aGlzLl9sZWF2aW5nU3ViLnVuc3Vic2NyaWJlKCl9fWtVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrVSkoZnUoR2gpLGZ1KEZiKSxmdSgkZSgoKCk9PkRVKSkpLGZ1KHNNKSl9LGtVLsm1ZGlyPWhvKHt0eXBlOmtVLHNlbGVjdG9yczpbWyIiLCJtYXRUYWJCb2R5SG9zdCIsIiJdXSxmZWF0dXJlczpbUXBdfSksa1UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpHaH0se3R5cGU6RmJ9LHt0eXBlOkRVLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRlKCgoKT0+RFUpKV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihrVSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0VGFiQm9keUhvc3RdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkdofSx7dHlwZTpGYn0se3R5cGU6RFUsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbJGUoKCgpPT5EVSkpXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLG51bGwpO2NsYXNzIFNVe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZGlyPWUsdGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fdHJhbnNsYXRlVGFiQ29tcGxldGU9bmV3IEIsdGhpcy5fb25DZW50ZXJpbmc9bmV3IFN5LHRoaXMuX2JlZm9yZUNlbnRlcmluZz1uZXcgU3ksdGhpcy5fYWZ0ZXJMZWF2aW5nQ2VudGVyPW5ldyBTeSx0aGlzLl9vbkNlbnRlcmVkPW5ldyBTeSghMCksdGhpcy5hbmltYXRpb25EdXJhdGlvbj0iNTAwbXMiLGUmJih0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249ZS5jaGFuZ2Uuc3Vic2NyaWJlKCh0PT57dGhpcy5fY29tcHV0ZVBvc2l0aW9uQW5pbWF0aW9uU3RhdGUodCksbi5tYXJrRm9yQ2hlY2soKX0pKSksdGhpcy5fdHJhbnNsYXRlVGFiQ29tcGxldGUucGlwZSh3ZSgoKHQsZSk9PnQuZnJvbVN0YXRlPT09ZS5mcm9tU3RhdGUmJnQudG9TdGF0ZT09PWUudG9TdGF0ZSkpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHQudG9TdGF0ZSkmJnRoaXMuX2lzQ2VudGVyUG9zaXRpb24odGhpcy5fcG9zaXRpb24pJiZ0aGlzLl9vbkNlbnRlcmVkLmVtaXQoKSx0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHQuZnJvbVN0YXRlKSYmIXRoaXMuX2lzQ2VudGVyUG9zaXRpb24odGhpcy5fcG9zaXRpb24pJiZ0aGlzLl9hZnRlckxlYXZpbmdDZW50ZXIuZW1pdCgpfSkpfXNldCBwb3NpdGlvbih0KXt0aGlzLl9wb3NpdGlvbkluZGV4PXQsdGhpcy5fY29tcHV0ZVBvc2l0aW9uQW5pbWF0aW9uU3RhdGUoKX1uZ09uSW5pdCgpeyJjZW50ZXIiPT10aGlzLl9wb3NpdGlvbiYmbnVsbCE9dGhpcy5vcmlnaW4mJih0aGlzLl9wb3NpdGlvbj10aGlzLl9jb21wdXRlUG9zaXRpb25Gcm9tT3JpZ2luKHRoaXMub3JpZ2luKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90cmFuc2xhdGVUYWJDb21wbGV0ZS5jb21wbGV0ZSgpfV9vblRyYW5zbGF0ZVRhYlN0YXJ0ZWQodCl7Y29uc3QgZT10aGlzLl9pc0NlbnRlclBvc2l0aW9uKHQudG9TdGF0ZSk7dGhpcy5fYmVmb3JlQ2VudGVyaW5nLmVtaXQoZSksZSYmdGhpcy5fb25DZW50ZXJpbmcuZW1pdCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KX1fZ2V0TGF5b3V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWU/InJ0bCI6Imx0ciJ9X2lzQ2VudGVyUG9zaXRpb24odCl7cmV0dXJuImNlbnRlciI9PXR8fCJsZWZ0LW9yaWdpbi1jZW50ZXIiPT10fHwicmlnaHQtb3JpZ2luLWNlbnRlciI9PXR9X2NvbXB1dGVQb3NpdGlvbkFuaW1hdGlvblN0YXRlKHQ9dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpe3RoaXMuX3Bvc2l0aW9uPXRoaXMuX3Bvc2l0aW9uSW5kZXg8MD8ibHRyIj09dD8ibGVmdCI6InJpZ2h0Ijp0aGlzLl9wb3NpdGlvbkluZGV4PjA/Imx0ciI9PXQ/InJpZ2h0IjoibGVmdCI6ImNlbnRlciJ9X2NvbXB1dGVQb3NpdGlvbkZyb21PcmlnaW4odCl7Y29uc3QgZT10aGlzLl9nZXRMYXlvdXREaXJlY3Rpb24oKTtyZXR1cm4ibHRyIj09ZSYmdDw9MHx8InJ0bCI9PWUmJnQ+MD8ibGVmdC1vcmlnaW4tY2VudGVyIjoicmlnaHQtb3JpZ2luLWNlbnRlciJ9fVNVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTVSkoZnUoS2gpLGZ1KEFGLDgpLGZ1KE9iKSl9LFNVLsm1ZGlyPWhvKHt0eXBlOlNVLGlucHV0czp7YW5pbWF0aW9uRHVyYXRpb246ImFuaW1hdGlvbkR1cmF0aW9uIixwb3NpdGlvbjoicG9zaXRpb24iLF9jb250ZW50OlsiY29udGVudCIsIl9jb250ZW50Il0sb3JpZ2luOiJvcmlnaW4ifSxvdXRwdXRzOntfb25DZW50ZXJpbmc6Il9vbkNlbnRlcmluZyIsX2JlZm9yZUNlbnRlcmluZzoiX2JlZm9yZUNlbnRlcmluZyIsX2FmdGVyTGVhdmluZ0NlbnRlcjoiX2FmdGVyTGVhdmluZ0NlbnRlciIsX29uQ2VudGVyZWQ6Il9vbkNlbnRlcmVkIn19KSxTVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpPYn1dLFNVLnByb3BEZWNvcmF0b3JzPXtfb25DZW50ZXJpbmc6W3t0eXBlOkVffV0sX2JlZm9yZUNlbnRlcmluZzpbe3R5cGU6RV99XSxfYWZ0ZXJMZWF2aW5nQ2VudGVyOlt7dHlwZTpFX31dLF9vbkNlbnRlcmVkOlt7dHlwZTpFX31dLF9jb250ZW50Olt7dHlwZTpSXyxhcmdzOlsiY29udGVudCJdfV0sb3JpZ2luOlt7dHlwZTpSX31dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTpSX31dLHBvc2l0aW9uOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFNVLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6T2J9XX0pLHtfb25DZW50ZXJpbmc6W3t0eXBlOkVffV0sX2JlZm9yZUNlbnRlcmluZzpbe3R5cGU6RV99XSxfYWZ0ZXJMZWF2aW5nQ2VudGVyOlt7dHlwZTpFX31dLF9vbkNlbnRlcmVkOlt7dHlwZTpFX31dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTpSX31dLHBvc2l0aW9uOlt7dHlwZTpSX31dLF9jb250ZW50Olt7dHlwZTpSXyxhcmdzOlsiY29udGVudCJdfV0sb3JpZ2luOlt7dHlwZTpSX31dfSk7Y2xhc3MgRFUgZXh0ZW5kcyBTVXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pfX1EVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RFUpKGZ1KEtoKSxmdShBRiw4KSxmdShPYikpfSxEVS7JtWNtcD1zbyh7dHlwZTpEVSxzZWxlY3RvcnM6W1sibWF0LXRhYi1ib2R5Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShPQiw1KSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLl9wb3J0YWxIb3N0PXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWJvZHkiXSxmZWF0dXJlczpbUXBdLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWyJjZGtTY3JvbGxhYmxlIiwiIiwxLCJtYXQtdGFiLWJvZHktY29udGVudCJdLFsiY29udGVudCIsIiJdLFsibWF0VGFiQm9keUhvc3QiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCwxKSxEdSgiQHRyYW5zbGF0ZVRhYi5zdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uVHJhbnNsYXRlVGFiU3RhcnRlZChlKX0pKSgiQHRyYW5zbGF0ZVRhYi5kb25lIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fdHJhbnNsYXRlVGFiQ29tcGxldGUubmV4dChlKX0pKSxIbSgyLG5VLDAsMCwibmctdGVtcGxhdGUiLDIpLEN1KCkpLDImZSYmaHUoIkB0cmFuc2xhdGVUYWIiLGF5KDMsaVUsbi5fcG9zaXRpb24saXkoMSxvVSxuLmFuaW1hdGlvbkR1cmF0aW9uKSkpfSxkaXJlY3RpdmVzOltrVV0sc3R5bGVzOlsiLm1hdC10YWItYm9keS1jb250ZW50e2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG99Lm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS1jb250ZW50e292ZXJmbG93OmhpZGRlbn1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W3dVLnRyYW5zbGF0ZVRhYl19fSksRFUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6T2J9XSxEVS5wcm9wRGVjb3JhdG9ycz17X3BvcnRhbEhvc3Q6W3t0eXBlOmFyLGFyZ3M6W09CXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERVLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItYm9keSIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC10YWItYm9keS1jb250ZW50IiAjY29udGVudFxuICAgICBbQHRyYW5zbGF0ZVRhYl09IntcbiAgICAgICAgdmFsdWU6IF9wb3NpdGlvbixcbiAgICAgICAgcGFyYW1zOiB7YW5pbWF0aW9uRHVyYXRpb246IGFuaW1hdGlvbkR1cmF0aW9ufVxuICAgICB9IlxuICAgICAoQHRyYW5zbGF0ZVRhYi5zdGFydCk9Il9vblRyYW5zbGF0ZVRhYlN0YXJ0ZWQoJGV2ZW50KSJcbiAgICAgKEB0cmFuc2xhdGVUYWIuZG9uZSk9Il90cmFuc2xhdGVUYWJDb21wbGV0ZS5uZXh0KCRldmVudCkiXG4gICAgIGNka1Njcm9sbGFibGU+XG4gIDxuZy10ZW1wbGF0ZSBtYXRUYWJCb2R5SG9zdD48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246VW4uRGVmYXVsdCxhbmltYXRpb25zOlt3VS50cmFuc2xhdGVUYWJdLGhvc3Q6e2NsYXNzOiJtYXQtdGFiLWJvZHkifSxzdHlsZXM6WyIubWF0LXRhYi1ib2R5LWNvbnRlbnR7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0b30ubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodCAubWF0LXRhYi1ib2R5LWNvbnRlbnR7b3ZlcmZsb3c6aGlkZGVufVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6T2J9XX0pLHtfcG9ydGFsSG9zdDpbe3R5cGU6YXIsYXJnczpbT0JdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFJVPW5ldyBlcigiTUFUX1RBQlNfQ09ORklHIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBFVT0wO2NsYXNzIEFVe31jb25zdCBUVT1ZRihxRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksInByaW1hcnkiKTtjbGFzcyBOVSBleHRlbmRzIFRVe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3ZhciBpO3N1cGVyKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fYW5pbWF0aW9uTW9kZT1vLHRoaXMuX3RhYnM9bmV3IFJ5LHRoaXMuX2luZGV4VG9TZWxlY3Q9MCx0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodD0wLHRoaXMuX3RhYnNTdWJzY3JpcHRpb249Zi5FTVBUWSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbj1mLkVNUFRZLHRoaXMuX3NlbGVjdGVkSW5kZXg9bnVsbCx0aGlzLmhlYWRlclBvc2l0aW9uPSJhYm92ZSIsdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlPW5ldyBTeSx0aGlzLmZvY3VzQ2hhbmdlPW5ldyBTeSx0aGlzLmFuaW1hdGlvbkRvbmU9bmV3IFN5LHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2U9bmV3IFN5KCEwKSx0aGlzLl9ncm91cElkPUVVKyssdGhpcy5hbmltYXRpb25EdXJhdGlvbj1uJiZuLmFuaW1hdGlvbkR1cmF0aW9uP24uYW5pbWF0aW9uRHVyYXRpb246IjUwMG1zIix0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSEoIW58fG51bGw9PW4uZGlzYWJsZVBhZ2luYXRpb24pJiZuLmRpc2FibGVQYWdpbmF0aW9uLHRoaXMuZHluYW1pY0hlaWdodD0hKCFufHxudWxsPT1uLmR5bmFtaWNIZWlnaHQpJiZuLmR5bmFtaWNIZWlnaHQsdGhpcy5jb250ZW50VGFiSW5kZXg9bnVsbCE9PShpPW51bGw9PW4/dm9pZCAwOm4uY29udGVudFRhYkluZGV4KSYmdm9pZCAwIT09aT9pOm51bGx9Z2V0IGR5bmFtaWNIZWlnaHQoKXtyZXR1cm4gdGhpcy5fZHluYW1pY0hlaWdodH1zZXQgZHluYW1pY0hlaWdodCh0KXt0aGlzLl9keW5hbWljSGVpZ2h0PXBIKHQpfWdldCBzZWxlY3RlZEluZGV4KCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXh9c2V0IHNlbGVjdGVkSW5kZXgodCl7dGhpcy5faW5kZXhUb1NlbGVjdD1tSCh0LG51bGwpfWdldCBhbmltYXRpb25EdXJhdGlvbigpe3JldHVybiB0aGlzLl9hbmltYXRpb25EdXJhdGlvbn1zZXQgYW5pbWF0aW9uRHVyYXRpb24odCl7dGhpcy5fYW5pbWF0aW9uRHVyYXRpb249L15cZCskLy50ZXN0KHQpP3QrIm1zIjp0fWdldCBjb250ZW50VGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5fY29udGVudFRhYkluZGV4fXNldCBjb250ZW50VGFiSW5kZXgodCl7dGhpcy5fY29udGVudFRhYkluZGV4PW1IKHQsbnVsbCl9Z2V0IGJhY2tncm91bmRDb2xvcigpe3JldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3J9c2V0IGJhY2tncm91bmRDb2xvcih0KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLmNsYXNzTGlzdC5yZW1vdmUoYG1hdC1iYWNrZ3JvdW5kLSR7dGhpcy5iYWNrZ3JvdW5kQ29sb3J9YCksdCYmZS5jbGFzc0xpc3QuYWRkKGBtYXQtYmFja2dyb3VuZC0ke3R9YCksdGhpcy5fYmFja2dyb3VuZENvbG9yPXR9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7Y29uc3QgdD10aGlzLl9pbmRleFRvU2VsZWN0PXRoaXMuX2NsYW1wVGFiSW5kZXgodGhpcy5faW5kZXhUb1NlbGVjdCk7aWYodGhpcy5fc2VsZWN0ZWRJbmRleCE9dCl7Y29uc3QgZT1udWxsPT10aGlzLl9zZWxlY3RlZEluZGV4O2lmKCFlKXt0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQodCkpO2NvbnN0IGU9dGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudDtlLnN0eWxlLm1pbkhlaWdodD1lLmNsaWVudEhlaWdodCsicHgifVByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fdGFicy5mb3JFYWNoKCgoZSxuKT0+ZS5pc0FjdGl2ZT1uPT09dCkpLGV8fCh0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdCh0KSx0aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodD0iIil9KSl9dGhpcy5fdGFicy5mb3JFYWNoKCgoZSxuKT0+e2UucG9zaXRpb249bi10LG51bGw9PXRoaXMuX3NlbGVjdGVkSW5kZXh8fDAhPWUucG9zaXRpb258fGUub3JpZ2lufHwoZS5vcmlnaW49dC10aGlzLl9zZWxlY3RlZEluZGV4KX0pKSx0aGlzLl9zZWxlY3RlZEluZGV4IT09dCYmKHRoaXMuX3NlbGVjdGVkSW5kZXg9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fc3Vic2NyaWJlVG9BbGxUYWJDaGFuZ2VzKCksdGhpcy5fc3Vic2NyaWJlVG9UYWJMYWJlbHMoKSx0aGlzLl90YWJzU3Vic2NyaXB0aW9uPXRoaXMuX3RhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKCgpPT57aWYodGhpcy5fY2xhbXBUYWJJbmRleCh0aGlzLl9pbmRleFRvU2VsZWN0KT09PXRoaXMuX3NlbGVjdGVkSW5kZXgpe2NvbnN0IHQ9dGhpcy5fdGFicy50b0FycmF5KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5pc0FjdGl2ZSl7dGhpcy5faW5kZXhUb1NlbGVjdD10aGlzLl9zZWxlY3RlZEluZGV4PWU7YnJlYWt9fXRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpfV9zdWJzY3JpYmVUb0FsbFRhYkNoYW5nZXMoKXt0aGlzLl9hbGxUYWJzLmNoYW5nZXMucGlwZShCZSh0aGlzLl9hbGxUYWJzKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fdGFicy5yZXNldCh0LmZpbHRlcigodD0+dC5fY2xvc2VzdFRhYkdyb3VwPT09dGhpc3x8IXQuX2Nsb3Nlc3RUYWJHcm91cCkpKSx0aGlzLl90YWJzLm5vdGlmeU9uQ2hhbmdlcygpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5fdGFicy5kZXN0cm95KCksdGhpcy5fdGFic1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3RhYkxhYmVsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9cmVhbGlnbklua0Jhcigpe3RoaXMuX3RhYkhlYWRlciYmdGhpcy5fdGFiSGVhZGVyLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKX1mb2N1c1RhYih0KXtjb25zdCBlPXRoaXMuX3RhYkhlYWRlcjtlJiYoZS5mb2N1c0luZGV4PXQpfV9mb2N1c0NoYW5nZWQodCl7dGhpcy5mb2N1c0NoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KHQpKX1fY3JlYXRlQ2hhbmdlRXZlbnQodCl7Y29uc3QgZT1uZXcgQVU7cmV0dXJuIGUuaW5kZXg9dCx0aGlzLl90YWJzJiZ0aGlzLl90YWJzLmxlbmd0aCYmKGUudGFiPXRoaXMuX3RhYnMudG9BcnJheSgpW3RdKSxlfV9zdWJzY3JpYmVUb1RhYkxhYmVscygpe3RoaXMuX3RhYkxhYmVsU3Vic2NyaXB0aW9uJiZ0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3RhYkxhYmVsU3Vic2NyaXB0aW9uPXBlKC4uLnRoaXMuX3RhYnMubWFwKCh0PT50Ll9zdGF0ZUNoYW5nZXMpKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpKX1fY2xhbXBUYWJJbmRleCh0KXtyZXR1cm4gTWF0aC5taW4odGhpcy5fdGFicy5sZW5ndGgtMSxNYXRoLm1heCh0fHwwLDApKX1fZ2V0VGFiTGFiZWxJZCh0KXtyZXR1cm5gbWF0LXRhYi1sYWJlbC0ke3RoaXMuX2dyb3VwSWR9LSR7dH1gfV9nZXRUYWJDb250ZW50SWQodCl7cmV0dXJuYG1hdC10YWItY29udGVudC0ke3RoaXMuX2dyb3VwSWR9LSR7dH1gfV9zZXRUYWJCb2R5V3JhcHBlckhlaWdodCh0KXtpZighdGhpcy5fZHluYW1pY0hlaWdodHx8IXRoaXMuX3RhYkJvZHlXcmFwcGVySGVpZ2h0KXJldHVybjtjb25zdCBlPXRoaXMuX3RhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7ZS5zdHlsZS5oZWlnaHQ9dGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQrInB4Iix0aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCYmKGUuc3R5bGUuaGVpZ2h0PXQrInB4Iil9X3JlbW92ZVRhYkJvZHlXcmFwcGVySGVpZ2h0KCl7Y29uc3QgdD10aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50O3RoaXMuX3RhYkJvZHlXcmFwcGVySGVpZ2h0PXQuY2xpZW50SGVpZ2h0LHQuc3R5bGUuaGVpZ2h0PSIiLHRoaXMuYW5pbWF0aW9uRG9uZS5lbWl0KCl9X2hhbmRsZUNsaWNrKHQsZSxuKXt0LmRpc2FibGVkfHwodGhpcy5zZWxlY3RlZEluZGV4PWUuZm9jdXNJbmRleD1uKX1fZ2V0VGFiSW5kZXgodCxlKXtyZXR1cm4gdC5kaXNhYmxlZD9udWxsOnRoaXMuc2VsZWN0ZWRJbmRleD09PWU/MDotMX1fdGFiRm9jdXNDaGFuZ2VkKHQsZSl7dCYmIm1vdXNlIiE9PXQmJiJ0b3VjaCIhPT10JiYodGhpcy5fdGFiSGVhZGVyLmZvY3VzSW5kZXg9ZSl9fU5VLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOVSkoZnUoS2gpLGZ1KE9iKSxmdShSVSw4KSxmdShjayw4KSl9LE5VLsm1ZGlyPWhvKHt0eXBlOk5VLGlucHV0czp7aGVhZGVyUG9zaXRpb246ImhlYWRlclBvc2l0aW9uIixhbmltYXRpb25EdXJhdGlvbjoiYW5pbWF0aW9uRHVyYXRpb24iLGRpc2FibGVQYWdpbmF0aW9uOiJkaXNhYmxlUGFnaW5hdGlvbiIsZHluYW1pY0hlaWdodDoiZHluYW1pY0hlaWdodCIsY29udGVudFRhYkluZGV4OiJjb250ZW50VGFiSW5kZXgiLHNlbGVjdGVkSW5kZXg6InNlbGVjdGVkSW5kZXgiLGJhY2tncm91bmRDb2xvcjoiYmFja2dyb3VuZENvbG9yIn0sb3V0cHV0czp7c2VsZWN0ZWRJbmRleENoYW5nZToic2VsZWN0ZWRJbmRleENoYW5nZSIsZm9jdXNDaGFuZ2U6ImZvY3VzQ2hhbmdlIixhbmltYXRpb25Eb25lOiJhbmltYXRpb25Eb25lIixzZWxlY3RlZFRhYkNoYW5nZToic2VsZWN0ZWRUYWJDaGFuZ2UifSxmZWF0dXJlczpbUXBdfSksTlUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltSVV19LHt0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxOVS5wcm9wRGVjb3JhdG9ycz17ZHluYW1pY0hlaWdodDpbe3R5cGU6Ul99XSxzZWxlY3RlZEluZGV4Olt7dHlwZTpSX31dLGhlYWRlclBvc2l0aW9uOlt7dHlwZTpSX31dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTpSX31dLGNvbnRlbnRUYWJJbmRleDpbe3R5cGU6Ul99XSxkaXNhYmxlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XSxiYWNrZ3JvdW5kQ29sb3I6W3t0eXBlOlJffV0sc2VsZWN0ZWRJbmRleENoYW5nZTpbe3R5cGU6RV99XSxmb2N1c0NoYW5nZTpbe3R5cGU6RV99XSxhbmltYXRpb25Eb25lOlt7dHlwZTpFX31dLHNlbGVjdGVkVGFiQ2hhbmdlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5VLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltSVV19LHt0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtoZWFkZXJQb3NpdGlvbjpbe3R5cGU6Ul99XSxzZWxlY3RlZEluZGV4Q2hhbmdlOlt7dHlwZTpFX31dLGZvY3VzQ2hhbmdlOlt7dHlwZTpFX31dLGFuaW1hdGlvbkRvbmU6W3t0eXBlOkVffV0sc2VsZWN0ZWRUYWJDaGFuZ2U6W3t0eXBlOkVffV0sYW5pbWF0aW9uRHVyYXRpb246W3t0eXBlOlJffV0sZGlzYWJsZVBhZ2luYXRpb246W3t0eXBlOlJffV0sZHluYW1pY0hlaWdodDpbe3R5cGU6Ul99XSxjb250ZW50VGFiSW5kZXg6W3t0eXBlOlJffV0sc2VsZWN0ZWRJbmRleDpbe3R5cGU6Ul99XSxiYWNrZ3JvdW5kQ29sb3I6W3t0eXBlOlJffV19KTtjbGFzcyB6VSBleHRlbmRzIE5Ve2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pfX16VS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8elUpKGZ1KEtoKSxmdShPYiksZnUoUlUsOCksZnUoY2ssOCkpfSx6VS7JtWNtcD1zbyh7dHlwZTp6VSxzZWxlY3RvcnM6W1sibWF0LXRhYi1ncm91cCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJlV5KG8sUFUsNSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5fYWxsVGFicz10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoYVUsNSksVnkoclUsNSkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX3RhYkJvZHlXcmFwcGVyPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLl90YWJIZWFkZXI9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC10YWItZ3JvdXAiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigibWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodCIsbi5keW5hbWljSGVpZ2h0KSgibWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIiLCJiZWxvdyI9PT1uLmhlYWRlclBvc2l0aW9uKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUifSxleHBvcnRBczpbIm1hdFRhYkdyb3VwIl0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpPVSx1c2VFeGlzdGluZzp6VX1dKSxRcF0sZGVjbHM6Nix2YXJzOjcsY29uc3RzOltbMywic2VsZWN0ZWRJbmRleCIsImRpc2FibGVSaXBwbGUiLCJkaXNhYmxlUGFnaW5hdGlvbiIsImluZGV4Rm9jdXNlZCIsInNlbGVjdEZvY3VzZWRJbmRleCJdLFsidGFiSGVhZGVyIiwiIl0sWyJjbGFzcyIsIm1hdC10YWItbGFiZWwgbWF0LWZvY3VzLWluZGljYXRvciIsInJvbGUiLCJ0YWIiLCJtYXRUYWJMYWJlbFdyYXBwZXIiLCIiLCJtYXQtcmlwcGxlIiwiIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiIsMywiaWQiLCJtYXQtdGFiLWxhYmVsLWFjdGl2ZSIsImRpc2FibGVkIiwibWF0UmlwcGxlRGlzYWJsZWQiLCJjbGljayIsImNka0ZvY3VzQ2hhbmdlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwibWF0LXRhYi1ib2R5LXdyYXBwZXIiXSxbInRhYkJvZHlXcmFwcGVyIiwiIl0sWyJyb2xlIiwidGFicGFuZWwiLDMsImlkIiwibWF0LXRhYi1ib2R5LWFjdGl2ZSIsImNvbnRlbnQiLCJwb3NpdGlvbiIsIm9yaWdpbiIsImFuaW1hdGlvbkR1cmF0aW9uIiwiX29uQ2VudGVyZWQiLCJfb25DZW50ZXJpbmciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsInRhYiIsIm1hdFRhYkxhYmVsV3JhcHBlciIsIiIsIm1hdC1yaXBwbGUiLCIiLCJjZGtNb25pdG9yRWxlbWVudEZvY3VzIiwiIiwxLCJtYXQtdGFiLWxhYmVsIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywiaWQiLCJkaXNhYmxlZCIsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJjZGtGb2N1c0NoYW5nZSJdLFsxLCJtYXQtdGFiLWxhYmVsLWNvbnRlbnQiXSxbMywibmdJZiJdLFszLCJjZGtQb3J0YWxPdXRsZXQiXSxbInJvbGUiLCJ0YWJwYW5lbCIsMywiaWQiLCJjb250ZW50IiwicG9zaXRpb24iLCJvcmlnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsIl9vbkNlbnRlcmVkIiwiX29uQ2VudGVyaW5nIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJtYXQtdGFiLWhlYWRlciIsMCwxKSxEdSgiaW5kZXhGb2N1c2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fZm9jdXNDaGFuZ2VkKGUpfSkpKCJzZWxlY3RGb2N1c2VkSW5kZXgiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdGVkSW5kZXg9ZX0pKSxIbSgyLGRVLDQsMTQsImRpdiIsMiksQ3UoKSxfdSgzLCJkaXYiLDMsNCksSG0oNSxwVSwxLDksIm1hdC10YWItYm9keSIsNSksQ3UoKSksMiZlJiYoaHUoInNlbGVjdGVkSW5kZXgiLG4uc2VsZWN0ZWRJbmRleHx8MCkoImRpc2FibGVSaXBwbGUiLG4uZGlzYWJsZVJpcHBsZSkoImRpc2FibGVQYWdpbmF0aW9uIixuLmRpc2FibGVQYWdpbmF0aW9uKSxEYygyKSxodSgibmdGb3JPZiIsbi5fdGFicyksRGMoMSksY2YoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSksRGMoMiksaHUoIm5nRm9yT2YiLG4uX3RhYnMpKX0sZGlyZWN0aXZlczpmdW5jdGlvbigpe3JldHVybltWVSx4dixIVSx2TCxPRixQdixPQixEVV19LHN0eWxlczpbIi5tYXQtdGFiLWdyb3Vwe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWF4LXdpZHRoOjEwMCV9Lm1hdC10YWItZ3JvdXAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9Lm1hdC10YWItbGFiZWx7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1sYWJlbDpmb2N1czpub3QoLm1hdC10YWItZGlzYWJsZWQpe29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC10YWItbGFiZWwgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVse29wYWNpdHk6MX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGFiZWx7cGFkZGluZzowIDEycHh9fUBtZWRpYShtYXgtd2lkdGg6IDk1OXB4KXsubWF0LXRhYi1sYWJlbHtwYWRkaW5nOjAgMTJweH19Lm1hdC10YWItZ3JvdXBbbWF0LXN0cmV0Y2gtdGFic10+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVse2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MX0ubWF0LXRhYi1ib2R5LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6ZmxleDt0cmFuc2l0aW9uOmhlaWdodCA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC10YWItYm9keS13cmFwcGVye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ib2R5e3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO291dGxpbmU6MDtmbGV4LWJhc2lzOjEwMCV9Lm1hdC10YWItYm9keS5tYXQtdGFiLWJvZHktYWN0aXZle3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0bzt6LWluZGV4OjE7ZmxleC1ncm93OjF9Lm1hdC10YWItZ3JvdXAubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodCAubWF0LXRhYi1ib2R5Lm1hdC10YWItYm9keS1hY3RpdmV7b3ZlcmZsb3cteTpoaWRkZW59XG4iXSxlbmNhcHN1bGF0aW9uOjJ9KSx6VS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1JVXX0se3R5cGU6QnJ9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLHpVLnByb3BEZWNvcmF0b3JzPXtfYWxsVGFiczpbe3R5cGU6b3IsYXJnczpbUFUse2Rlc2NlbmRhbnRzOiEwfV19XSxfdGFiQm9keVdyYXBwZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJCb2R5V3JhcHBlciJdfV0sX3RhYkhlYWRlcjpbe3R5cGU6YXIsYXJnczpbInRhYkhlYWRlciJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoelUsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRhYi1ncm91cCIsZXhwb3J0QXM6Im1hdFRhYkdyb3VwIix0ZW1wbGF0ZTonPG1hdC10YWItaGVhZGVyICN0YWJIZWFkZXJcbiAgICAgICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT0ic2VsZWN0ZWRJbmRleCB8fCAwIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPSJkaXNhYmxlUmlwcGxlIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVQYWdpbmF0aW9uXT0iZGlzYWJsZVBhZ2luYXRpb24iXG4gICAgICAgICAgICAgICAoaW5kZXhGb2N1c2VkKT0iX2ZvY3VzQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgICAgICAgICAgKHNlbGVjdEZvY3VzZWRJbmRleCk9InNlbGVjdGVkSW5kZXggPSAkZXZlbnQiPlxuICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWxhYmVsIG1hdC1mb2N1cy1pbmRpY2F0b3IiIHJvbGU9InRhYiIgbWF0VGFiTGFiZWxXcmFwcGVyIG1hdC1yaXBwbGUgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgICAgICpuZ0Zvcj0ibGV0IHRhYiBvZiBfdGFiczsgbGV0IGkgPSBpbmRleCJcbiAgICAgICBbaWRdPSJfZ2V0VGFiTGFiZWxJZChpKSJcbiAgICAgICBbYXR0ci50YWJJbmRleF09Il9nZXRUYWJJbmRleCh0YWIsIGkpIlxuICAgICAgIFthdHRyLmFyaWEtcG9zaW5zZXRdPSJpICsgMSJcbiAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPSJfdGFicy5sZW5ndGgiXG4gICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109Il9nZXRUYWJDb250ZW50SWQoaSkiXG4gICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09InNlbGVjdGVkSW5kZXggPT0gaSJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0idGFiLmFyaWFMYWJlbCB8fCBudWxsIlxuICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09IighdGFiLmFyaWFMYWJlbCAmJiB0YWIuYXJpYUxhYmVsbGVkYnkpID8gdGFiLmFyaWFMYWJlbGxlZGJ5IDogbnVsbCJcbiAgICAgICBbY2xhc3MubWF0LXRhYi1sYWJlbC1hY3RpdmVdPSJzZWxlY3RlZEluZGV4ID09IGkiXG4gICAgICAgW2Rpc2FibGVkXT0idGFiLmRpc2FibGVkIlxuICAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09InRhYi5kaXNhYmxlZCB8fCBkaXNhYmxlUmlwcGxlIlxuICAgICAgIChjbGljayk9Il9oYW5kbGVDbGljayh0YWIsIHRhYkhlYWRlciwgaSkiXG4gICAgICAgKGNka0ZvY3VzQ2hhbmdlKT0iX3RhYkZvY3VzQ2hhbmdlZCgkZXZlbnQsIGkpIj5cblxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbC1jb250ZW50Ij5cbiAgICAgIFx4M2MhLS0gSWYgdGhlcmUgaXMgYSBsYWJlbCB0ZW1wbGF0ZSwgdXNlIGl0LiAtLVx4M2VcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09InRhYi50ZW1wbGF0ZUxhYmVsIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPSJ0YWIudGVtcGxhdGVMYWJlbCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIFx4M2MhLS0gSWYgdGhlcmUgaXMgbm90IGEgbGFiZWwgdGVtcGxhdGUsIGZhbGwgYmFjayB0byB0aGUgdGV4dCBsYWJlbC4gLS1ceDNlXG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPSIhdGFiLnRlbXBsYXRlTGFiZWwiPnt7dGFiLnRleHRMYWJlbH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC10YWItaGVhZGVyPlxuXG48ZGl2XG4gIGNsYXNzPSJtYXQtdGFiLWJvZHktd3JhcHBlciJcbiAgW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXT0iX2FuaW1hdGlvbk1vZGUgPT09IFwnTm9vcEFuaW1hdGlvbnNcJyJcbiAgI3RhYkJvZHlXcmFwcGVyPlxuICA8bWF0LXRhYi1ib2R5IHJvbGU9InRhYnBhbmVsIlxuICAgICAgICAgICAgICAgKm5nRm9yPSJsZXQgdGFiIG9mIF90YWJzOyBsZXQgaSA9IGluZGV4IlxuICAgICAgICAgICAgICAgW2lkXT0iX2dldFRhYkNvbnRlbnRJZChpKSJcbiAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT0iKGNvbnRlbnRUYWJJbmRleCAhPSBudWxsICYmIHNlbGVjdGVkSW5kZXggPT09IGkpID8gY29udGVudFRhYkluZGV4IDogbnVsbCJcbiAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09Il9nZXRUYWJMYWJlbElkKGkpIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWItYm9keS1hY3RpdmVdPSJzZWxlY3RlZEluZGV4ID09PSBpIlxuICAgICAgICAgICAgICAgW2NvbnRlbnRdPSJ0YWIuY29udGVudCEiXG4gICAgICAgICAgICAgICBbcG9zaXRpb25dPSJ0YWIucG9zaXRpb24hIlxuICAgICAgICAgICAgICAgW29yaWdpbl09InRhYi5vcmlnaW4iXG4gICAgICAgICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPSJhbmltYXRpb25EdXJhdGlvbiJcbiAgICAgICAgICAgICAgIChfb25DZW50ZXJlZCk9Il9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpIlxuICAgICAgICAgICAgICAgKF9vbkNlbnRlcmluZyk9Il9zZXRUYWJCb2R5V3JhcHBlckhlaWdodCgkZXZlbnQpIj5cbiAgPC9tYXQtdGFiLWJvZHk+XG48L2Rpdj5cbicsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0LGlucHV0czpbImNvbG9yIiwiZGlzYWJsZVJpcHBsZSJdLHByb3ZpZGVyczpbe3Byb3ZpZGU6T1UsdXNlRXhpc3Rpbmc6elV9XSxob3N0OntjbGFzczoibWF0LXRhYi1ncm91cCIsIltjbGFzcy5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0XSI6ImR5bmFtaWNIZWlnaHQiLCJbY2xhc3MubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJdIjonaGVhZGVyUG9zaXRpb24gPT09ICJiZWxvdyInfSxzdHlsZXM6WyIubWF0LXRhYi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX1AbWVkaWEobWF4LXdpZHRoOiA5NTlweCl7Lm1hdC10YWItbGFiZWx7cGFkZGluZzowIDEycHh9fS5tYXQtdGFiLWdyb3VwW21hdC1zdHJldGNoLXRhYnNdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItYm9keS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7dHJhbnNpdGlvbjpoZWlnaHQgNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWJvZHktd3JhcHBlcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItYm9keXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOjA7ZmxleC1iYXNpczoxMDAlfS5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87ei1pbmRleDoxO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS5tYXQtdGFiLWJvZHktYWN0aXZle292ZXJmbG93LXk6aGlkZGVufVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltSVV19LHt0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtfYWxsVGFiczpbe3R5cGU6b3IsYXJnczpbUFUse2Rlc2NlbmRhbnRzOiEwfV19XSxfdGFiQm9keVdyYXBwZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJCb2R5V3JhcHBlciJdfV0sX3RhYkhlYWRlcjpbe3R5cGU6YXIsYXJnczpbInRhYkhlYWRlciJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IElVPUdGKGNsYXNze30pO2NsYXNzIEhVIGV4dGVuZHMgSVV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmVsZW1lbnRSZWY9dH1mb2N1cygpe3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9Z2V0T2Zmc2V0TGVmdCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0fWdldE9mZnNldFdpZHRoKCl7cmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofX1IVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SFUpKGZ1KEtoKSl9LEhVLsm1ZGlyPWhvKHt0eXBlOkhVLHNlbGVjdG9yczpbWyIiLCJtYXRUYWJMYWJlbFdyYXBwZXIiLCIiXV0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKHltKCJhcmlhLWRpc2FibGVkIiwhIW4uZGlzYWJsZWQpLGNmKCJtYXQtdGFiLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sZmVhdHVyZXM6W1FwXX0pLEhVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhVLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRUYWJMYWJlbFdyYXBwZXJdIixpbnB1dHM6WyJkaXNhYmxlZCJdLGhvc3Q6eyJbY2xhc3MubWF0LXRhYi1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiISFkaXNhYmxlZCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgRlU9a0goe3Bhc3NpdmU6ITB9KTtjbGFzcyBMVXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl92aWV3cG9ydFJ1bGVyPW4sdGhpcy5fZGlyPW8sdGhpcy5fbmdab25lPWksdGhpcy5fcGxhdGZvcm09YSx0aGlzLl9hbmltYXRpb25Nb2RlPXIsdGhpcy5fc2Nyb2xsRGlzdGFuY2U9MCx0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEIsdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scz0hMSx0aGlzLl9kaXNhYmxlU2Nyb2xsQWZ0ZXI9ITAsdGhpcy5fZGlzYWJsZVNjcm9sbEJlZm9yZT0hMCx0aGlzLl9zdG9wU2Nyb2xsaW5nPW5ldyBCLHRoaXMuZGlzYWJsZVBhZ2luYXRpb249ITEsdGhpcy5fc2VsZWN0ZWRJbmRleD0wLHRoaXMuc2VsZWN0Rm9jdXNlZEluZGV4PW5ldyBTeSx0aGlzLmluZGV4Rm9jdXNlZD1uZXcgU3ksaS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntsZSh0Lm5hdGl2ZUVsZW1lbnQsIm1vdXNlbGVhdmUiKS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9zdG9wSW50ZXJ2YWwoKX0pKX0pKX1nZXQgc2VsZWN0ZWRJbmRleCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4fXNldCBzZWxlY3RlZEluZGV4KHQpe3Q9bUgodCksdGhpcy5fc2VsZWN0ZWRJbmRleCE9dCYmKHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkPSEwLHRoaXMuX3NlbGVjdGVkSW5kZXg9dCx0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odCkpfW5nQWZ0ZXJWaWV3SW5pdCgpe2xlKHRoaXMuX3ByZXZpb3VzUGFnaW5hdG9yLm5hdGl2ZUVsZW1lbnQsInRvdWNoc3RhcnQiLEZVKS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYmVmb3JlIil9KSksbGUodGhpcy5fbmV4dFBhZ2luYXRvci5uYXRpdmVFbGVtZW50LCJ0b3VjaHN0YXJ0IixGVSkucGlwZShVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImFmdGVyIil9KSl9bmdBZnRlckNvbnRlbnRJbml0KCl7Y29uc3QgdD10aGlzLl9kaXI/dGhpcy5fZGlyLmNoYW5nZTp6dCgibHRyIiksZT10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgxNTApLG49KCk9Pnt0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKX07dGhpcy5fa2V5TWFuYWdlcj1uZXcgWEgodGhpcy5faXRlbXMpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpLndpdGhIb21lQW5kRW5kKCkud2l0aFdyYXAoKSx0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odGhpcy5fc2VsZWN0ZWRJbmRleCksInVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG4pOm4oKSxwZSh0LGUsdGhpcy5faXRlbXMuY2hhbmdlcykucGlwZShVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fbmdab25lLnJ1bigoKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4obikpKSx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpfSkpLHRoaXMuX2tleU1hbmFnZXIuY2hhbmdlLnBpcGUoVWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5pbmRleEZvY3VzZWQuZW1pdCh0KSx0aGlzLl9zZXRUYWJGb2N1cyh0KX0pKX1uZ0FmdGVyQ29udGVudENoZWNrZWQoKXt0aGlzLl90YWJMYWJlbENvdW50IT10aGlzLl9pdGVtcy5sZW5ndGgmJih0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl90YWJMYWJlbENvdW50PXRoaXMuX2l0ZW1zLmxlbmd0aCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQmJih0aGlzLl9zY3JvbGxUb0xhYmVsKHRoaXMuX3NlbGVjdGVkSW5kZXgpLHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKSx0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkJiYodGhpcy5fdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKSx0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl9zdG9wU2Nyb2xsaW5nLmNvbXBsZXRlKCl9X2hhbmRsZUtleWRvd24odCl7aWYoIWRIKHQpKXN3aXRjaCh0LmtleUNvZGUpe2Nhc2UgYUg6Y2FzZSBzSDp0aGlzLmZvY3VzSW5kZXghPT10aGlzLnNlbGVjdGVkSW5kZXgmJih0aGlzLnNlbGVjdEZvY3VzZWRJbmRleC5lbWl0KHRoaXMuZm9jdXNJbmRleCksdGhpcy5faXRlbVNlbGVjdGVkKHQpKTticmVhaztkZWZhdWx0OnRoaXMuX2tleU1hbmFnZXIub25LZXlkb3duKHQpfX1fb25Db250ZW50Q2hhbmdlcygpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50O3QhPT10aGlzLl9jdXJyZW50VGV4dENvbnRlbnQmJih0aGlzLl9jdXJyZW50VGV4dENvbnRlbnQ9dHx8IiIsdGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSl9dXBkYXRlUGFnaW5hdGlvbigpe3RoaXMuX2NoZWNrUGFnaW5hdGlvbkVuYWJsZWQoKSx0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCksdGhpcy5fdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKX1nZXQgZm9jdXNJbmRleCgpe3JldHVybiB0aGlzLl9rZXlNYW5hZ2VyP3RoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4OjB9c2V0IGZvY3VzSW5kZXgodCl7dGhpcy5faXNWYWxpZEluZGV4KHQpJiZ0aGlzLmZvY3VzSW5kZXghPT10JiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odCl9X2lzVmFsaWRJbmRleCh0KXtpZighdGhpcy5faXRlbXMpcmV0dXJuITA7Y29uc3QgZT10aGlzLl9pdGVtcz90aGlzLl9pdGVtcy50b0FycmF5KClbdF06bnVsbDtyZXR1cm4hIWUmJiFlLmRpc2FibGVkfV9zZXRUYWJGb2N1cyh0KXtpZih0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzJiZ0aGlzLl9zY3JvbGxUb0xhYmVsKHQpLHRoaXMuX2l0ZW1zJiZ0aGlzLl9pdGVtcy5sZW5ndGgpe3RoaXMuX2l0ZW1zLnRvQXJyYXkoKVt0XS5mb2N1cygpO2NvbnN0IGU9dGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LG49dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk7ZS5zY3JvbGxMZWZ0PSJsdHIiPT1uPzA6ZS5zY3JvbGxXaWR0aC1lLm9mZnNldFdpZHRofX1fZ2V0TGF5b3V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWU/InJ0bCI6Imx0ciJ9X3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCl7aWYodGhpcy5kaXNhYmxlUGFnaW5hdGlvbilyZXR1cm47Y29uc3QgdD10aGlzLnNjcm9sbERpc3RhbmNlLGU9Imx0ciI9PT10aGlzLl9nZXRMYXlvdXREaXJlY3Rpb24oKT8tdDp0O3RoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVgoJHtNYXRoLnJvdW5kKGUpfXB4KWAsKHRoaXMuX3BsYXRmb3JtLlRSSURFTlR8fHRoaXMuX3BsYXRmb3JtLkVER0UpJiYodGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ9MCl9Z2V0IHNjcm9sbERpc3RhbmNlKCl7cmV0dXJuIHRoaXMuX3Njcm9sbERpc3RhbmNlfXNldCBzY3JvbGxEaXN0YW5jZSh0KXt0aGlzLl9zY3JvbGxUbyh0KX1fc2Nyb2xsSGVhZGVyKHQpe3JldHVybiB0aGlzLl9zY3JvbGxUbyh0aGlzLl9zY3JvbGxEaXN0YW5jZSsoImJlZm9yZSI9PXQ/LTE6MSkqdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLzMpfV9oYW5kbGVQYWdpbmF0b3JDbGljayh0KXt0aGlzLl9zdG9wSW50ZXJ2YWwoKSx0aGlzLl9zY3JvbGxIZWFkZXIodCl9X3Njcm9sbFRvTGFiZWwodCl7aWYodGhpcy5kaXNhYmxlUGFnaW5hdGlvbilyZXR1cm47Y29uc3QgZT10aGlzLl9pdGVtcz90aGlzLl9pdGVtcy50b0FycmF5KClbdF06bnVsbDtpZighZSlyZXR1cm47Y29uc3Qgbj10aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgse29mZnNldExlZnQ6byxvZmZzZXRXaWR0aDppfT1lLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtsZXQgYSxyOyJsdHIiPT10aGlzLl9nZXRMYXlvdXREaXJlY3Rpb24oKT8oYT1vLHI9YStpKToocj10aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgtbyxhPXItaSk7Y29uc3Qgcz10aGlzLnNjcm9sbERpc3RhbmNlLGw9dGhpcy5zY3JvbGxEaXN0YW5jZStuO2E8cz90aGlzLnNjcm9sbERpc3RhbmNlLT1zLWErNjA6cj5sJiYodGhpcy5zY3JvbGxEaXN0YW5jZSs9ci1sKzYwKX1fY2hlY2tQYWdpbmF0aW9uRW5hYmxlZCgpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scz0hMTtlbHNle2NvbnN0IHQ9dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoPnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDt0fHwodGhpcy5zY3JvbGxEaXN0YW5jZT0wKSx0IT09dGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scyYmdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scz10fX1fY2hlY2tTY3JvbGxpbmdDb250cm9scygpe3RoaXMuZGlzYWJsZVBhZ2luYXRpb24/dGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPXRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9ITA6KHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9MD09dGhpcy5zY3JvbGxEaXN0YW5jZSx0aGlzLl9kaXNhYmxlU2Nyb2xsQWZ0ZXI9dGhpcy5zY3JvbGxEaXN0YW5jZT09dGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X2dldE1heFNjcm9sbERpc3RhbmNlKCl7cmV0dXJuIHRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aC10aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDB9X2FsaWduSW5rQmFyVG9TZWxlY3RlZFRhYigpe2NvbnN0IHQ9dGhpcy5faXRlbXMmJnRoaXMuX2l0ZW1zLmxlbmd0aD90aGlzLl9pdGVtcy50b0FycmF5KClbdGhpcy5zZWxlY3RlZEluZGV4XTpudWxsLGU9dD90LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDpudWxsO2U/dGhpcy5faW5rQmFyLmFsaWduVG9FbGVtZW50KGUpOnRoaXMuX2lua0Jhci5oaWRlKCl9X3N0b3BJbnRlcnZhbCgpe3RoaXMuX3N0b3BTY3JvbGxpbmcubmV4dCgpfV9oYW5kbGVQYWdpbmF0b3JQcmVzcyh0LGUpe2UmJm51bGwhPWUuYnV0dG9uJiYwIT09ZS5idXR0b258fCh0aGlzLl9zdG9wSW50ZXJ2YWwoKSxkZSg2NTAsMTAwKS5waXBlKFVlKHBlKHRoaXMuX3N0b3BTY3JvbGxpbmcsdGhpcy5fZGVzdHJveWVkKSkpLnN1YnNjcmliZSgoKCk9Pntjb25zdHttYXhTY3JvbGxEaXN0YW5jZTplLGRpc3RhbmNlOm59PXRoaXMuX3Njcm9sbEhlYWRlcih0KTsoMD09PW58fG4+PWUpJiZ0aGlzLl9zdG9wSW50ZXJ2YWwoKX0pKSl9X3Njcm9sbFRvKHQpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJue21heFNjcm9sbERpc3RhbmNlOjAsZGlzdGFuY2U6MH07Y29uc3QgZT10aGlzLl9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpO3JldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZT1NYXRoLm1heCgwLE1hdGgubWluKGUsdCkpLHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZD0hMCx0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCkse21heFNjcm9sbERpc3RhbmNlOmUsZGlzdGFuY2U6dGhpcy5fc2Nyb2xsRGlzdGFuY2V9fX1MVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TFUpKGZ1KEtoKSxmdShPYiksZnUobEIpLGZ1KEFGLDgpLGZ1KG1DKSxmdShfSCksZnUoY2ssOCkpfSxMVS7JtWRpcj1obyh7dHlwZTpMVSxpbnB1dHM6e2Rpc2FibGVQYWdpbmF0aW9uOiJkaXNhYmxlUGFnaW5hdGlvbiJ9fSksTFUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOmxCfSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6X0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxMVS5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZVBhZ2luYXRpb246W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTFUsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6bEJ9LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpfSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2Rpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBCVSBleHRlbmRzIExVe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsZSxuLG8saSxhLHIpLHRoaXMuX2Rpc2FibGVSaXBwbGU9ITF9Z2V0IGRpc2FibGVSaXBwbGUoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZVJpcHBsZX1zZXQgZGlzYWJsZVJpcHBsZSh0KXt0aGlzLl9kaXNhYmxlUmlwcGxlPXBIKHQpfV9pdGVtU2VsZWN0ZWQodCl7dC5wcmV2ZW50RGVmYXVsdCgpfX1CVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QlUpKGZ1KEtoKSxmdShPYiksZnUobEIpLGZ1KEFGLDgpLGZ1KG1DKSxmdShfSCksZnUoY2ssOCkpfSxCVS7JtWRpcj1obyh7dHlwZTpCVSxpbnB1dHM6e2Rpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUifSxmZWF0dXJlczpbUXBdfSksQlUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOmxCfSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6X0h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxCVS5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZVJpcHBsZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCVSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpsQn0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7ZGlzYWJsZVJpcHBsZTpbe3R5cGU6Ul99XX0pO2NsYXNzIFZVIGV4dGVuZHMgQlV7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7c3VwZXIodCxlLG4sbyxpLGEscil9fVZVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWVSkoZnUoS2gpLGZ1KE9iKSxmdShsQiksZnUoQUYsOCksZnUobUMpLGZ1KF9IKSxmdShjayw4KSl9LFZVLsm1Y21wPXNvKHt0eXBlOlZVLHNlbGVjdG9yczpbWyJtYXQtdGFiLWhlYWRlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJlV5KG8sSFUsNCksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5faXRlbXM9dCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KHlVLDcpLFZ5KG1VLDcpLFZ5KHVVLDcpLFZ5KGZVLDUpLFZ5KGdVLDUpKSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLl9pbmtCYXI9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX3RhYkxpc3RDb250YWluZXI9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX3RhYkxpc3Q9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX25leHRQYWdpbmF0b3I9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX3ByZXZpb3VzUGFnaW5hdG9yPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWhlYWRlciJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQiLG4uX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMpKCJtYXQtdGFiLWhlYWRlci1ydGwiLCJydGwiPT1uLl9nZXRMYXlvdXREaXJlY3Rpb24oKSl9LGlucHV0czp7c2VsZWN0ZWRJbmRleDoic2VsZWN0ZWRJbmRleCJ9LG91dHB1dHM6e3NlbGVjdEZvY3VzZWRJbmRleDoic2VsZWN0Rm9jdXNlZEluZGV4IixpbmRleEZvY3VzZWQ6ImluZGV4Rm9jdXNlZCJ9LGZlYXR1cmVzOltRcF0sbmdDb250ZW50U2VsZWN0b3JzOmVVLGRlY2xzOjEzLHZhcnM6OCxjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIiwibWF0LWVsZXZhdGlvbi16NCIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJjbGljayIsIm1vdXNlZG93biIsInRvdWNoZW5kIl0sWyJwcmV2aW91c1BhZ2luYXRvciIsIiJdLFsxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iXSxbMSwibWF0LXRhYi1sYWJlbC1jb250YWluZXIiLDMsImtleWRvd24iXSxbInRhYkxpc3RDb250YWluZXIiLCIiXSxbInJvbGUiLCJ0YWJsaXN0IiwxLCJtYXQtdGFiLWxpc3QiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJ0YWJMaXN0IiwiIl0sWzEsIm1hdC10YWItbGFiZWxzIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIiwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibW91c2Vkb3duIiwiY2xpY2siLCJ0b3VjaGVuZCJdLFsibmV4dFBhZ2luYXRvciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSXUoKSxfdSgwLCJkaXYiLDAsMSksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYmVmb3JlIil9KSkoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiLGUpfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc3RvcEludGVydmFsKCl9KSksTXUoMiwiZGl2IiwyKSxDdSgpLF91KDMsImRpdiIsMyw0KSxEdSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksX3UoNSwiZGl2Iiw1LDYpLER1KCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Db250ZW50Q2hhbmdlcygpfSkpLF91KDcsImRpdiIsNyksSHUoOCksQ3UoKSxNdSg5LCJtYXQtaW5rLWJhciIpLEN1KCksQ3UoKSxfdSgxMCwiZGl2Iiw4LDkpLER1KCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiLGUpfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImFmdGVyIil9KSkoInRvdWNoZW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zdG9wSW50ZXJ2YWwoKX0pKSxNdSgxMiwiZGl2IiwyKSxDdSgpKSwyJmUmJihjZigibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEJlZm9yZSksaHUoIm1hdFJpcHBsZURpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQmVmb3JlfHxuLmRpc2FibGVSaXBwbGUpLERjKDUpLGNmKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpLERjKDUpLGNmKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQWZ0ZXIpLGh1KCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEFmdGVyfHxuLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbdkwsekgseVVdLHN0eWxlczpbJy5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LWluay1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjJweDt0cmFuc2l0aW9uOjUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWluay1iYXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LWluay1iYXJ7Ym90dG9tOmF1dG87dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWluay1iYXJ7b3V0bGluZTpzb2xpZCAycHg7aGVpZ2h0OjB9Lm1hdC10YWItbGFiZWxze2Rpc3BsYXk6ZmxleH1bbWF0LWFsaWduLXRhYnM9Y2VudGVyXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWxze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC10YWItbGFiZWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWxpc3R7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse21pbi13aWR0aDo3MnB4fX1cbiddLGVuY2Fwc3VsYXRpb246Mn0pLFZVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpsQn0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sVlUucHJvcERlY29yYXRvcnM9e19pdGVtczpbe3R5cGU6b3IsYXJnczpbSFUse2Rlc2NlbmRhbnRzOiExfV19XSxfaW5rQmFyOlt7dHlwZTphcixhcmdzOlt5VSx7c3RhdGljOiEwfV19XSxfdGFiTGlzdENvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3RDb250YWluZXIiLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Olt7dHlwZTphcixhcmdzOlsidGFiTGlzdCIse3N0YXRpYzohMH1dfV0sX25leHRQYWdpbmF0b3I6W3t0eXBlOmFyLGFyZ3M6WyJuZXh0UGFnaW5hdG9yIl19XSxfcHJldmlvdXNQYWdpbmF0b3I6W3t0eXBlOmFyLGFyZ3M6WyJwcmV2aW91c1BhZ2luYXRvciJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVlUsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRhYi1oZWFkZXIiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIG1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNwcmV2aW91c1BhZ2luYXRvclxuICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgbWF0LXJpcHBsZSBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSB8fCBkaXNhYmxlUmlwcGxlIlxuICAgICBbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQmVmb3JlIlxuICAgICAoY2xpY2spPSJfaGFuZGxlUGFnaW5hdG9yQ2xpY2soXCdiZWZvcmVcJykiXG4gICAgIChtb3VzZWRvd24pPSJfaGFuZGxlUGFnaW5hdG9yUHJlc3MoXCdiZWZvcmVcJywgJGV2ZW50KSJcbiAgICAgKHRvdWNoZW5kKT0iX3N0b3BJbnRlcnZhbCgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPSJtYXQtdGFiLWxhYmVsLWNvbnRhaW5lciIgI3RhYkxpc3RDb250YWluZXIgKGtleWRvd24pPSJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIj5cbiAgPGRpdlxuICAgICN0YWJMaXN0XG4gICAgY2xhc3M9Im1hdC10YWItbGlzdCJcbiAgICBbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdPSJfYW5pbWF0aW9uTW9kZSA9PT0gXCdOb29wQW5pbWF0aW9uc1wnIlxuICAgIHJvbGU9InRhYmxpc3QiXG4gICAgKGNka09ic2VydmVDb250ZW50KT0iX29uQ29udGVudENoYW5nZXMoKSI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbHMiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxtYXQtaW5rLWJhcj48L21hdC1pbmstYmFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIG1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgbWF0LWVsZXZhdGlvbi16NCJcbiAgICAgI25leHRQYWdpbmF0b3JcbiAgICAgYXJpYS1oaWRkZW49InRydWUiXG4gICAgIG1hdC1yaXBwbGUgW21hdFJpcHBsZURpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxBZnRlciB8fCBkaXNhYmxlUmlwcGxlIlxuICAgICBbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQWZ0ZXIiXG4gICAgIChtb3VzZWRvd24pPSJfaGFuZGxlUGFnaW5hdG9yUHJlc3MoXCdhZnRlclwnLCAkZXZlbnQpIlxuICAgICAoY2xpY2spPSJfaGFuZGxlUGFnaW5hdG9yQ2xpY2soXCdhZnRlclwnKSJcbiAgICAgKHRvdWNoZW5kKT0iX3N0b3BJbnRlcnZhbCgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIj48L2Rpdj5cbjwvZGl2PlxuJyxpbnB1dHM6WyJzZWxlY3RlZEluZGV4Il0sb3V0cHV0czpbInNlbGVjdEZvY3VzZWRJbmRleCIsImluZGV4Rm9jdXNlZCJdLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246VW4uRGVmYXVsdCxob3N0OntjbGFzczoibWF0LXRhYi1oZWFkZXIiLCJbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkXSI6Il9zaG93UGFnaW5hdGlvbkNvbnRyb2xzIiwiW2NsYXNzLm1hdC10YWItaGVhZGVyLXJ0bF0iOiJfZ2V0TGF5b3V0RGlyZWN0aW9uKCkgPT0gJ3J0bCcifSxzdHlsZXM6WycubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxhYmVsc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVttYXQtYWxpZ24tdGFicz1lbmRdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHN7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1saXN0e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHttaW4td2lkdGg6NzJweH19XG4nXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6bEJ9LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpfSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse19pdGVtczpbe3R5cGU6b3IsYXJnczpbSFUse2Rlc2NlbmRhbnRzOiExfV19XSxfaW5rQmFyOlt7dHlwZTphcixhcmdzOlt5VSx7c3RhdGljOiEwfV19XSxfdGFiTGlzdENvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3RDb250YWluZXIiLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Olt7dHlwZTphcixhcmdzOlsidGFiTGlzdCIse3N0YXRpYzohMH1dfV0sX25leHRQYWdpbmF0b3I6W3t0eXBlOmFyLGFyZ3M6WyJuZXh0UGFnaW5hdG9yIl19XSxfcHJldmlvdXNQYWdpbmF0b3I6W3t0eXBlOmFyLGFyZ3M6WyJwcmV2aW91c1BhZ2luYXRvciJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFVVIGV4dGVuZHMgTFV7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7c3VwZXIodCxvLGksZSxuLGEsciksdGhpcy5fZGlzYWJsZVJpcHBsZT0hMSx0aGlzLmNvbG9yPSJwcmltYXJ5In1nZXQgYmFja2dyb3VuZENvbG9yKCl7cmV0dXJuIHRoaXMuX2JhY2tncm91bmRDb2xvcn1zZXQgYmFja2dyb3VuZENvbG9yKHQpe2NvbnN0IGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdDtlLnJlbW92ZShgbWF0LWJhY2tncm91bmQtJHt0aGlzLmJhY2tncm91bmRDb2xvcn1gKSx0JiZlLmFkZChgbWF0LWJhY2tncm91bmQtJHt0fWApLHRoaXMuX2JhY2tncm91bmRDb2xvcj10fWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT1wSCh0KX1faXRlbVNlbGVjdGVkKCl7fW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2l0ZW1zLmNoYW5nZXMucGlwZShCZShudWxsKSxVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy51cGRhdGVBY3RpdmVMaW5rKCl9KSksc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCl9dXBkYXRlQWN0aXZlTGluaygpe2lmKCF0aGlzLl9pdGVtcylyZXR1cm47Y29uc3QgdD10aGlzLl9pdGVtcy50b0FycmF5KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5hY3RpdmUpcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleD1lLHZvaWQgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7dGhpcy5zZWxlY3RlZEluZGV4PS0xLHRoaXMuX2lua0Jhci5oaWRlKCl9fVVVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVVSkoZnUoS2gpLGZ1KEFGLDgpLGZ1KG1DKSxmdShPYiksZnUobEIpLGZ1KF9IKSxmdShjayw4KSl9LFVVLsm1ZGlyPWhvKHt0eXBlOlVVLGlucHV0czp7Y29sb3I6ImNvbG9yIixiYWNrZ3JvdW5kQ29sb3I6ImJhY2tncm91bmRDb2xvciIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSJ9LGZlYXR1cmVzOltRcF19KSxVVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOmxCfSx7dHlwZTpfSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLFVVLnByb3BEZWNvcmF0b3JzPXtiYWNrZ3JvdW5kQ29sb3I6W3t0eXBlOlJffV0sZGlzYWJsZVJpcHBsZTpbe3R5cGU6Ul99XSxjb2xvcjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVVSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpPYn0se3R5cGU6bEJ9LHt0eXBlOl9IfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSx7Y29sb3I6W3t0eXBlOlJffV0sYmFja2dyb3VuZENvbG9yOlt7dHlwZTpSX31dLGRpc2FibGVSaXBwbGU6W3t0eXBlOlJffV19KTtjbGFzcyBqVSBleHRlbmRzIFVVe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsZSxuLG8saSxhLHIpfX1qVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alUpKGZ1KEtoKSxmdShBRiw4KSxmdShtQyksZnUoT2IpLGZ1KGxCKSxmdShfSCksZnUoY2ssOCkpfSxqVS7JtWNtcD1zbyh7dHlwZTpqVSxzZWxlY3RvcnM6W1siIiwibWF0LXRhYi1uYXYtYmFyIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmVXkobyxZVSw1KSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLl9pdGVtcz10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoeVUsNyksVnkobVUsNyksVnkodVUsNyksVnkoZlUsNSksVnkoZ1UsNSkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX2lua0Jhcj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5fdGFiTGlzdENvbnRhaW5lcj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5fdGFiTGlzdD10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5fbmV4dFBhZ2luYXRvcj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5fcHJldmlvdXNQYWdpbmF0b3I9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC10YWItbmF2LWJhciIsIm1hdC10YWItaGVhZGVyIl0saG9zdFZhcnM6MTAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQiLG4uX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMpKCJtYXQtdGFiLWhlYWRlci1ydGwiLCJydGwiPT1uLl9nZXRMYXlvdXREaXJlY3Rpb24oKSkoIm1hdC1wcmltYXJ5Iiwid2FybiIhPT1uLmNvbG9yJiYiYWNjZW50IiE9PW4uY29sb3IpKCJtYXQtYWNjZW50IiwiYWNjZW50Ij09PW4uY29sb3IpKCJtYXQtd2FybiIsIndhcm4iPT09bi5jb2xvcil9LGlucHV0czp7Y29sb3I6ImNvbG9yIn0sZXhwb3J0QXM6WyJtYXRUYWJOYXZCYXIiLCJtYXRUYWJOYXYiXSxmZWF0dXJlczpbUXBdLGF0dHJzOlsibWF0LXRhYi1uYXYtYmFyIiwiIl0sbmdDb250ZW50U2VsZWN0b3JzOmVVLGRlY2xzOjEzLHZhcnM6OCxjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIiwibWF0LWVsZXZhdGlvbi16NCIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJjbGljayIsIm1vdXNlZG93biIsInRvdWNoZW5kIl0sWyJwcmV2aW91c1BhZ2luYXRvciIsIiJdLFsxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iXSxbMSwibWF0LXRhYi1saW5rLWNvbnRhaW5lciIsMywia2V5ZG93biJdLFsidGFiTGlzdENvbnRhaW5lciIsIiJdLFsxLCJtYXQtdGFiLWxpc3QiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJ0YWJMaXN0IiwiIl0sWzEsIm1hdC10YWItbGlua3MiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIiwibWF0LWVsZXZhdGlvbi16NCIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtb3VzZWRvd24iLCJjbGljayIsInRvdWNoZW5kIl0sWyJuZXh0UGFnaW5hdG9yIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihJdSgpLF91KDAsImRpdiIsMCwxKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvckNsaWNrKCJiZWZvcmUiKX0pKSgibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImJlZm9yZSIsZSl9KSkoInRvdWNoZW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zdG9wSW50ZXJ2YWwoKX0pKSxNdSgyLCJkaXYiLDIpLEN1KCksX3UoMywiZGl2IiwzLDQpLER1KCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSxfdSg1LCJkaXYiLDUsNiksRHUoImNka09ic2VydmVDb250ZW50IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkNvbnRlbnRDaGFuZ2VzKCl9KSksX3UoNywiZGl2Iiw3KSxIdSg4KSxDdSgpLE11KDksIm1hdC1pbmstYmFyIiksQ3UoKSxDdSgpLF91KDEwLCJkaXYiLDgsOSksRHUoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvclByZXNzKCJhZnRlciIsZSl9KSkoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYWZ0ZXIiKX0pKSgidG91Y2hlbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX3N0b3BJbnRlcnZhbCgpfSkpLE11KDEyLCJkaXYiLDIpLEN1KCkpLDImZSYmKGNmKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQmVmb3JlKSxodSgibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxCZWZvcmV8fG4uZGlzYWJsZVJpcHBsZSksRGMoNSksY2YoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSksRGMoNSksY2YoIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxBZnRlciksaHUoIm1hdFJpcHBsZURpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQWZ0ZXJ8fG4uZGlzYWJsZVJpcHBsZSkpfSxkaXJlY3RpdmVzOlt2TCx6SCx5VV0sc3R5bGVzOlsnLm1hdC10YWItaGVhZGVye2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpub25lO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDozMnB4O2N1cnNvcjpwb2ludGVyO3otaW5kZXg6Mjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dG91Y2gtYWN0aW9uOm5vbmV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY29udHJvbHMtZW5hYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntkaXNwbGF5OmZsZXh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1sZWZ0OjRweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLXJpZ2h0OjRweH0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjJweCAycHggMCAwO2NvbnRlbnQ6IiI7aGVpZ2h0OjhweDt3aWR0aDo4cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWR7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtdGFiLWxpc3R7ZmxleC1ncm93OjE7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtdGFiLWxpbmtze2Rpc3BsYXk6ZmxleH1bbWF0LWFsaWduLXRhYnM9Y2VudGVyXT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rc3tqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVttYXQtYWxpZ24tdGFicz1lbmRdPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmtze2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ubWF0LWluay1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjJweDt0cmFuc2l0aW9uOjUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWluay1iYXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LWluay1iYXJ7Ym90dG9tOmF1dG87dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWluay1iYXJ7b3V0bGluZTpzb2xpZCAycHg7aGVpZ2h0OjB9Lm1hdC10YWItbGluay1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt6LWluZGV4OjF9Lm1hdC10YWItbGlua3toZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246dG9wO3RleHQtZGVjb3JhdGlvbjpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC10YWItbGluazpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGluazpmb2N1czpub3QoLm1hdC10YWItZGlzYWJsZWQpe29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbms6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC10YWItbGluayAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGlua3tvcGFjaXR5OjF9W21hdC1zdHJldGNoLXRhYnNdIC5tYXQtdGFiLWxpbmt7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1saW5re21pbi13aWR0aDo3MnB4fX1cbiddLGVuY2Fwc3VsYXRpb246Mn0pLGpVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1DfSx7dHlwZTpPYn0se3R5cGU6bEJ9LHt0eXBlOl9IfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0salUucHJvcERlY29yYXRvcnM9e19pdGVtczpbe3R5cGU6b3IsYXJnczpbJGUoKCgpPT5ZVSkpLHtkZXNjZW5kYW50czohMH1dfV0sX2lua0Jhcjpbe3R5cGU6YXIsYXJnczpbeVUse3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpVLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtdGFiLW5hdi1iYXJdIixleHBvcnRBczoibWF0VGFiTmF2QmFyLCBtYXRUYWJOYXYiLGlucHV0czpbImNvbG9yIl0sdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gbWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgbWF0LWVsZXZhdGlvbi16NCJcbiAgICAgI3ByZXZpb3VzUGFnaW5hdG9yXG4gICAgIGFyaWEtaGlkZGVuPSJ0cnVlIlxuICAgICBtYXQtcmlwcGxlIFttYXRSaXBwbGVEaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQmVmb3JlIHx8IGRpc2FibGVSaXBwbGUiXG4gICAgIFtjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxCZWZvcmUiXG4gICAgIChjbGljayk9Il9oYW5kbGVQYWdpbmF0b3JDbGljayhcJ2JlZm9yZVwnKSJcbiAgICAgKG1vdXNlZG93bik9Il9oYW5kbGVQYWdpbmF0b3JQcmVzcyhcJ2JlZm9yZVwnLCAkZXZlbnQpIlxuICAgICAodG91Y2hlbmQpPSJfc3RvcEludGVydmFsKCkiPlxuICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iPjwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9Im1hdC10YWItbGluay1jb250YWluZXIiICN0YWJMaXN0Q29udGFpbmVyIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSI+XG4gIDxkaXZcbiAgICBjbGFzcz0ibWF0LXRhYi1saXN0IlxuICAgIFtjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV09Il9hbmltYXRpb25Nb2RlID09PSBcJ05vb3BBbmltYXRpb25zXCciXG4gICAgI3RhYkxpc3RcbiAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPSJfb25Db250ZW50Q2hhbmdlcygpIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWxpbmtzIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWluay1iYXI+PC9tYXQtaW5rLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNuZXh0UGFnaW5hdG9yXG4gICAgIGFyaWEtaGlkZGVuPSJ0cnVlIlxuICAgICBtYXQtcmlwcGxlIFttYXRSaXBwbGVEaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQWZ0ZXIgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEFmdGVyIlxuICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKFwnYWZ0ZXJcJywgJGV2ZW50KSJcbiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKFwnYWZ0ZXJcJykiXG4gICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+XG4gIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+XG48L2Rpdj5cbicsaG9zdDp7Y2xhc3M6Im1hdC10YWItbmF2LWJhciBtYXQtdGFiLWhlYWRlciIsIltjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWRdIjoiX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJbY2xhc3MubWF0LXRhYi1oZWFkZXItcnRsXSI6Il9nZXRMYXlvdXREaXJlY3Rpb24oKSA9PSAncnRsJyIsIltjbGFzcy5tYXQtcHJpbWFyeV0iOidjb2xvciAhPT0gIndhcm4iICYmIGNvbG9yICE9PSAiYWNjZW50IicsIltjbGFzcy5tYXQtYWNjZW50XSI6J2NvbG9yID09PSAiYWNjZW50IicsIltjbGFzcy5tYXQtd2Fybl0iOidjb2xvciA9PT0gIndhcm4iJ30sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0LHN0eWxlczpbJy5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXRhYi1saW5rc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxpbmstY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5tYXQtdGFiLWxpbmt7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOnRvcDt0ZXh0LWRlY29yYXRpb246bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtdGFiLWxpbms6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxpbms6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxpbmsgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmt7b3BhY2l0eToxfVttYXQtc3RyZXRjaC10YWJzXSAubWF0LXRhYi1saW5re2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MX0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGlua3ttaW4td2lkdGg6NzJweH19XG4nXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptQ30se3R5cGU6T2J9LHt0eXBlOmxCfSx7dHlwZTpfSH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse19pdGVtczpbe3R5cGU6b3IsYXJnczpbJGUoKCgpPT5ZVSkpLHtkZXNjZW5kYW50czohMH1dfV0sX2lua0Jhcjpbe3R5cGU6YXIsYXJnczpbeVUse3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6YXIsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTphcixhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSk7Y29uc3QgV1U9WkYocUYoR0YoY2xhc3N7fSkpKTtjbGFzcyBHVSBleHRlbmRzIFdVe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXtzdXBlcigpLHRoaXMuX3RhYk5hdkJhcj10LHRoaXMuZWxlbWVudFJlZj1lLHRoaXMuX2ZvY3VzTW9uaXRvcj1pLHRoaXMuX2lzQWN0aXZlPSExLHRoaXMucmlwcGxlQ29uZmlnPW58fHt9LHRoaXMudGFiSW5kZXg9cGFyc2VJbnQobyl8fDAsIk5vb3BBbmltYXRpb25zIj09PWEmJih0aGlzLnJpcHBsZUNvbmZpZy5hbmltYXRpb249e2VudGVyRHVyYXRpb246MCxleGl0RHVyYXRpb246MH0pfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5faXNBY3RpdmV9c2V0IGFjdGl2ZSh0KXtwSCh0KSE9PXRoaXMuX2lzQWN0aXZlJiYodGhpcy5faXNBY3RpdmU9dCx0aGlzLl90YWJOYXZCYXIudXBkYXRlQWN0aXZlTGluaygpKX1nZXQgcmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8dGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLl90YWJOYXZCYXIuZGlzYWJsZVJpcHBsZXx8ISF0aGlzLnJpcHBsZUNvbmZpZy5kaXNhYmxlZH1mb2N1cygpe3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmVsZW1lbnRSZWYpfV9oYW5kbGVGb2N1cygpe3RoaXMuX3RhYk5hdkJhci5mb2N1c0luZGV4PXRoaXMuX3RhYk5hdkJhci5faXRlbXMudG9BcnJheSgpLmluZGV4T2YodGhpcyl9fUdVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHVSkoZnUoVVUpLGZ1KEtoKSxmdShNTCw4KSxHYSgidGFiaW5kZXgiKSxmdSh4RiksZnUoY2ssOCkpfSxHVS7JtWRpcj1obyh7dHlwZTpHVSxpbnB1dHM6e2FjdGl2ZToiYWN0aXZlIn0sZmVhdHVyZXM6W1FwXX0pLEdVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VVV9LHt0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W01MXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6eEZ9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSxHVS5wcm9wRGVjb3JhdG9ycz17YWN0aXZlOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdVLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpVVX0se3R5cGU6S2h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbTUxdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp4Rn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2FjdGl2ZTpbe3R5cGU6Ul99XX0pO2NsYXNzIFlVIGV4dGVuZHMgR1V7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXtzdXBlcih0LGUsaSxhLHIscyksdGhpcy5fdGFiTGlua1JpcHBsZT1uZXcgQ0wodGhpcyxuLGUsbyksdGhpcy5fdGFiTGlua1JpcHBsZS5zZXR1cFRyaWdnZXJFdmVudHMoZS5uYXRpdmVFbGVtZW50KX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5fdGFiTGlua1JpcHBsZS5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpfX1ZVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WVUpKGZ1KGpVKSxmdShLaCksZnUobUMpLGZ1KF9IKSxmdShNTCw4KSxHYSgidGFiaW5kZXgiKSxmdSh4RiksZnUoY2ssOCkpfSxZVS7JtWRpcj1obyh7dHlwZTpZVSxzZWxlY3RvcnM6W1siIiwibWF0LXRhYi1saW5rIiwiIl0sWyIiLCJtYXRUYWJMaW5rIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRhYi1saW5rIiwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlRm9jdXMoKX0pKSwyJmUmJih5bSgiYXJpYS1jdXJyZW50IixuLmFjdGl2ZT8icGFnZSI6bnVsbCkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJ0YWJJbmRleCIsbi50YWJJbmRleCksY2YoIm1hdC10YWItZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtdGFiLWxhYmVsLWFjdGl2ZSIsbi5hY3RpdmUpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLHRhYkluZGV4OiJ0YWJJbmRleCJ9LGV4cG9ydEFzOlsibWF0VGFiTGluayJdLGZlYXR1cmVzOltRcF19KSxZVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmpVfSx7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W01MXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6eEZ9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFlVLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXQtdGFiLWxpbmtdLCBbbWF0VGFiTGlua10iLGV4cG9ydEFzOiJtYXRUYWJMaW5rIixpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJ0YWJJbmRleCJdLGhvc3Q6e2NsYXNzOiJtYXQtdGFiLWxpbmsgbWF0LWZvY3VzLWluZGljYXRvciIsIlthdHRyLmFyaWEtY3VycmVudF0iOidhY3RpdmUgPyAicGFnZSIgOiBudWxsJywiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIlthdHRyLnRhYkluZGV4XSI6InRhYkluZGV4IiwiW2NsYXNzLm1hdC10YWItZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LXRhYi1sYWJlbC1hY3RpdmVdIjoiYWN0aXZlIiwiKGZvY3VzKSI6Il9oYW5kbGVGb2N1cygpIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpqVX0se3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTpfSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltNTF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnhGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHFVe31xVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cVUpfSxxVS7JtW1vZD11byh7dHlwZTpxVX0pLHFVLsm1aW5qPURuKHtpbXBvcnRzOltbcngsV0Ysd0IseEwsSUgsREZdLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocVUsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxXRix3Qix4TCxJSCxERl0sZXhwb3J0czpbV0YselUsdlUsUFUsalUsWVUsQ1VdLGRlY2xhcmF0aW9uczpbelUsdlUsUFUseVUsSFUsalUsWVUsRFUsa1UsVlUsQ1VdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8ocVUse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVyblt6VSx2VSxQVSx5VSxIVSxqVSxZVSxEVSxrVSxWVSxDVV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcngsV0Ysd0IseEwsSUgsREZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dGLHpVLHZVLFBVLGpVLFlVLENVXX19KTtjb25zdCBaVT1bInVuZGVybGluZSJdLFhVPVsiY29ubmVjdGlvbkNvbnRhaW5lciJdLEtVPVsiaW5wdXRDb250YWluZXIiXSxKVT1bImxhYmVsIl07ZnVuY3Rpb24gUVUodCxlKXsxJnQmJih2dSgwKSxfdSgxLCJkaXYiLDE0KSxNdSgyLCJkaXYiLDE1KSxNdSgzLCJkaXYiLDE2KSxNdSg0LCJkaXYiLDE3KSxDdSgpLF91KDUsImRpdiIsMTgpLE11KDYsImRpdiIsMTUpLE11KDcsImRpdiIsMTYpLE11KDgsImRpdiIsMTcpLEN1KCkseHUoKSl9ZnVuY3Rpb24gJFUodCxlKXsxJnQmJihfdSgwLCJkaXYiLDE5KSxIdSgxLDEpLEN1KCkpfWZ1bmN0aW9uIHRqKHQsZSl7aWYoMSZ0JiYodnUoMCksSHUoMSwyKSxfdSgyLCJzcGFuIiksUGYoMyksQ3UoKSx4dSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoMyksd2YodC5fY29udHJvbC5wbGFjZWhvbGRlcil9fWZ1bmN0aW9uIGVqKHQsZSl7MSZ0JiZIdSgwLDMsWyIqbmdTd2l0Y2hDYXNlIiwidHJ1ZSJdKX1mdW5jdGlvbiBuaih0LGUpezEmdCYmKF91KDAsInNwYW4iLDIzKSxQZigxLCIgKiIpLEN1KCkpfWZ1bmN0aW9uIG9qKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwibGFiZWwiLDIwLDIxKSxEdSgiY2RrT2JzZXJ2ZUNvbnRlbnQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkudXBkYXRlT3V0bGluZUdhcCgpfSkpLEhtKDIsdGosNCwxLCJuZy1jb250YWluZXIiLDEyKSxIbSgzLGVqLDEsMCwibmctY29udGVudCIsMTIpLEhtKDQsbmosMiwwLCJzcGFuIiwyMiksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtjZigibWF0LWVtcHR5Iix0Ll9jb250cm9sLmVtcHR5JiYhdC5fc2hvdWxkQWx3YXlzRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLWVtcHR5Iix0Ll9jb250cm9sLmVtcHR5JiYhdC5fc2hvdWxkQWx3YXlzRmxvYXQoKSkoIm1hdC1hY2NlbnQiLCJhY2NlbnQiPT10LmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09dC5jb2xvciksaHUoImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJvdXRsaW5lIiE9dC5hcHBlYXJhbmNlKSgiaWQiLHQuX2xhYmVsSWQpKCJuZ1N3aXRjaCIsdC5faGFzTGFiZWwoKSkseW0oImZvciIsdC5fY29udHJvbC5pZCkoImFyaWEtb3ducyIsdC5fY29udHJvbC5pZCksRGMoMiksaHUoIm5nU3dpdGNoQ2FzZSIsITEpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLCEwKSxEYygxKSxodSgibmdJZiIsIXQuaGlkZVJlcXVpcmVkTWFya2VyJiZ0Ll9jb250cm9sLnJlcXVpcmVkJiYhdC5fY29udHJvbC5kaXNhYmxlZCl9fWZ1bmN0aW9uIGlqKHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwyNCksSHUoMSw0KSxDdSgpKX1mdW5jdGlvbiBhaih0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsMjUsMjYpLE11KDIsInNwYW4iLDI3KSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygyKSxjZigibWF0LWFjY2VudCIsImFjY2VudCI9PXQuY29sb3IpKCJtYXQtd2FybiIsIndhcm4iPT10LmNvbG9yKX19ZnVuY3Rpb24gcmoodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiKSxIdSgxLDUpLEN1KCkpLDImdCl7aHUoIkB0cmFuc2l0aW9uTWVzc2FnZXMiLE51KCkuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlKX19ZnVuY3Rpb24gc2oodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDMxKSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7aHUoImlkIix0Ll9oaW50TGFiZWxJZCksRGMoMSksd2YodC5oaW50TGFiZWwpfX1mdW5jdGlvbiBsaih0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsMjgpLEhtKDEsc2osMiwyLCJkaXYiLDI5KSxIdSgyLDYpLE11KDMsImRpdiIsMzApLEh1KDQsNyksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7aHUoIkB0cmFuc2l0aW9uTWVzc2FnZXMiLHQuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlKSxEYygxKSxodSgibmdJZiIsdC5oaW50TGFiZWwpfX1jb25zdCBjaj1bIioiLFtbIiIsIm1hdFByZWZpeCIsIiJdXSxbWyJtYXQtcGxhY2Vob2xkZXIiXV0sW1sibWF0LWxhYmVsIl1dLFtbIiIsIm1hdFN1ZmZpeCIsIiJdXSxbWyJtYXQtZXJyb3IiXV0sW1sibWF0LWhpbnQiLDMsImFsaWduIiwiZW5kIl1dLFtbIm1hdC1oaW50IiwiYWxpZ24iLCJlbmQiXV1dO2xldCBkaj0wO2NvbnN0IHBqPW5ldyBlcigiTWF0RXJyb3IiKTtjbGFzcyBtantjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaWQ9Im1hdC1lcnJvci0iK2RqKyssdHx8ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIiwicG9saXRlIil9fW1qLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtaikoR2EoImFyaWEtbGl2ZSIpLGZ1KEtoKSl9LG1qLsm1ZGlyPWhvKHt0eXBlOm1qLHNlbGVjdG9yczpbWyJtYXQtZXJyb3IiXV0saG9zdEF0dHJzOlsiYXJpYS1hdG9taWMiLCJ0cnVlIiwxLCJtYXQtZXJyb3IiXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZ5bSgiaWQiLG4uaWQpfSxpbnB1dHM6e2lkOiJpZCJ9LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6cGosdXNlRXhpc3Rpbmc6bWp9XSldfSksbWouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbImFyaWEtbGl2ZSJdfV19LHt0eXBlOktofV0sbWoucHJvcERlY29yYXRvcnM9e2lkOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1qLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1lcnJvciIsaG9zdDp7Y2xhc3M6Im1hdC1lcnJvciIsIlthdHRyLmlkXSI6ImlkIiwiYXJpYS1hdG9taWMiOiJ0cnVlIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpwaix1c2VFeGlzdGluZzptan1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJhcmlhLWxpdmUiXX1dfSx7dHlwZTpLaH1dfSkse2lkOlt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB1aj17dHJhbnNpdGlvbk1lc3NhZ2VzOnhPKCJ0cmFuc2l0aW9uTWVzc2FnZXMiLFtrTygiZW50ZXIiLHdPKHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDAlKSJ9KSksRE8oInZvaWQgPT4gZW50ZXIiLFt3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToidHJhbnNsYXRlWSgtNXB4KSJ9KSxPTygiMzAwbXMgY3ViaWMtYmV6aWVyKDAuNTUsIDAsIDAuNTUsIDAuMikiKV0pXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBmant9ZnVuY3Rpb24gZ2oodCl7cmV0dXJuIEVycm9yKGBBIGhpbnQgd2FzIGFscmVhZHkgZGVjbGFyZWQgZm9yICdhbGlnbj0iJHt0fSInLmApfWZqLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmail9LGZqLsm1ZGlyPWhvKHt0eXBlOmZqfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmaixbe3R5cGU6a199XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IGhqPTA7Y29uc3QgYmo9bmV3IGVyKCJNYXRIaW50Iik7Y2xhc3MgeWp7Y29uc3RydWN0b3IoKXt0aGlzLmFsaWduPSJzdGFydCIsdGhpcy5pZD0ibWF0LWhpbnQtIitoaisrfX15ai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eWopfSx5ai7JtWRpcj1obyh7dHlwZTp5aixzZWxlY3RvcnM6W1sibWF0LWhpbnQiXV0saG9zdEF0dHJzOlsxLCJtYXQtaGludCJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiaWQiLG4uaWQpKCJhbGlnbiIsbnVsbCksY2YoIm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5kIiwiZW5kIj09PW4uYWxpZ24pKX0saW5wdXRzOnthbGlnbjoiYWxpZ24iLGlkOiJpZCJ9LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6YmosdXNlRXhpc3Rpbmc6eWp9XSldfSkseWoucHJvcERlY29yYXRvcnM9e2FsaWduOlt7dHlwZTpSX31dLGlkOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHlqLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1oaW50Iixob3N0OntjbGFzczoibWF0LWhpbnQiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtaGludC1lbmRdIjonYWxpZ24gPT09ICJlbmQiJywiW2F0dHIuaWRdIjoiaWQiLCJbYXR0ci5hbGlnbl0iOiJudWxsIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpiaix1c2VFeGlzdGluZzp5an1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHthbGlnbjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgX2p7fV9qLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfail9LF9qLsm1ZGlyPWhvKHt0eXBlOl9qLHNlbGVjdG9yczpbWyJtYXQtbGFiZWwiXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF9qLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1sYWJlbCJ9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBDant9Q2ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENqKX0sQ2ouybVkaXI9aG8oe3R5cGU6Q2osc2VsZWN0b3JzOltbIm1hdC1wbGFjZWhvbGRlciJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ2osW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXBsYWNlaG9sZGVyIn1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE1qPW5ldyBlcigiTWF0UHJlZml4Iik7Y2xhc3Mgdmp7fXZqLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2ail9LHZqLsm1ZGlyPWhvKHt0eXBlOnZqLHNlbGVjdG9yczpbWyIiLCJtYXRQcmVmaXgiLCIiXV0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpNaix1c2VFeGlzdGluZzp2an1dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZqLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRQcmVmaXhdIixwcm92aWRlcnM6W3twcm92aWRlOk1qLHVzZUV4aXN0aW5nOnZqfV19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB4aj1uZXcgZXIoIk1hdFN1ZmZpeCIpO2NsYXNzIE9qe31Pai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T2opfSxPai7JtWRpcj1obyh7dHlwZTpPaixzZWxlY3RvcnM6W1siIiwibWF0U3VmZml4IiwiIl1dLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6eGosdXNlRXhpc3Rpbmc6T2p9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPaixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0U3VmZml4XSIscHJvdmlkZXJzOlt7cHJvdmlkZTp4aix1c2VFeGlzdGluZzpPan1dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IFBqPTA7Y29uc3Qgd2o9WUYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0sInByaW1hcnkiKSxraj1uZXcgZXIoIk1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyIpLFNqPW5ldyBlcigiTWF0Rm9ybUZpZWxkIik7Y2xhc3MgRGogZXh0ZW5kcyB3antjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3N1cGVyKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZGlyPW8sdGhpcy5fZGVmYXVsdHM9aSx0aGlzLl9wbGF0Zm9ybT1hLHRoaXMuX25nWm9uZT1yLHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5PSExLHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSExLHRoaXMuX2Rlc3Ryb3llZD1uZXcgQix0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZT0hMSx0aGlzLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZT0iIix0aGlzLl9oaW50TGFiZWw9IiIsdGhpcy5faGludExhYmVsSWQ9Im1hdC1oaW50LSIrUGorKyx0aGlzLl9sYWJlbElkPSJtYXQtZm9ybS1maWVsZC1sYWJlbC0iK1BqKyssdGhpcy5mbG9hdExhYmVsPXRoaXMuX2dldERlZmF1bHRGbG9hdExhYmVsU3RhdGUoKSx0aGlzLl9hbmltYXRpb25zRW5hYmxlZD0iTm9vcEFuaW1hdGlvbnMiIT09cyx0aGlzLmFwcGVhcmFuY2U9aSYmaS5hcHBlYXJhbmNlP2kuYXBwZWFyYW5jZToibGVnYWN5Iix0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI9ISghaXx8bnVsbD09aS5oaWRlUmVxdWlyZWRNYXJrZXIpJiZpLmhpZGVSZXF1aXJlZE1hcmtlcn1nZXQgYXBwZWFyYW5jZSgpe3JldHVybiB0aGlzLl9hcHBlYXJhbmNlfXNldCBhcHBlYXJhbmNlKHQpe2NvbnN0IGU9dGhpcy5fYXBwZWFyYW5jZTt0aGlzLl9hcHBlYXJhbmNlPXR8fHRoaXMuX2RlZmF1bHRzJiZ0aGlzLl9kZWZhdWx0cy5hcHBlYXJhbmNlfHwibGVnYWN5Iiwib3V0bGluZSI9PT10aGlzLl9hcHBlYXJhbmNlJiZlIT09dCYmKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSEwKX1nZXQgaGlkZVJlcXVpcmVkTWFya2VyKCl7cmV0dXJuIHRoaXMuX2hpZGVSZXF1aXJlZE1hcmtlcn1zZXQgaGlkZVJlcXVpcmVkTWFya2VyKHQpe3RoaXMuX2hpZGVSZXF1aXJlZE1hcmtlcj1wSCh0KX1fc2hvdWxkQWx3YXlzRmxvYXQoKXtyZXR1cm4iYWx3YXlzIj09PXRoaXMuZmxvYXRMYWJlbCYmIXRoaXMuX3Nob3dBbHdheXNBbmltYXRlfV9jYW5MYWJlbEZsb2F0KCl7cmV0dXJuIm5ldmVyIiE9PXRoaXMuZmxvYXRMYWJlbH1nZXQgaGludExhYmVsKCl7cmV0dXJuIHRoaXMuX2hpbnRMYWJlbH1zZXQgaGludExhYmVsKHQpe3RoaXMuX2hpbnRMYWJlbD10LHRoaXMuX3Byb2Nlc3NIaW50cygpfWdldCBmbG9hdExhYmVsKCl7cmV0dXJuImxlZ2FjeSIhPT10aGlzLmFwcGVhcmFuY2UmJiJuZXZlciI9PT10aGlzLl9mbG9hdExhYmVsPyJhdXRvIjp0aGlzLl9mbG9hdExhYmVsfXNldCBmbG9hdExhYmVsKHQpe3QhPT10aGlzLl9mbG9hdExhYmVsJiYodGhpcy5fZmxvYXRMYWJlbD10fHx0aGlzLl9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBfY29udHJvbCgpe3JldHVybiB0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2x8fHRoaXMuX2NvbnRyb2xOb25TdGF0aWN8fHRoaXMuX2NvbnRyb2xTdGF0aWN9c2V0IF9jb250cm9sKHQpe3RoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbD10fWdldExhYmVsSWQoKXtyZXR1cm4gdGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpP3RoaXMuX2xhYmVsSWQ6bnVsbH1nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCl7cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Db250YWluZXJSZWZ8fHRoaXMuX2VsZW1lbnRSZWZ9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fdmFsaWRhdGVDb250cm9sQ2hpbGQoKTtjb25zdCB0PXRoaXMuX2NvbnRyb2w7dC5jb250cm9sVHlwZSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYG1hdC1mb3JtLWZpZWxkLXR5cGUtJHt0LmNvbnRyb2xUeXBlfWApLHQuc3RhdGVDaGFuZ2VzLnBpcGUoQmUobnVsbCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl92YWxpZGF0ZVBsYWNlaG9sZGVycygpLHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHQubmdDb250cm9sJiZ0Lm5nQ29udHJvbC52YWx1ZUNoYW5nZXMmJnQubmdDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZSYmdGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9KSl9KSkscGUodGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcyx0aGlzLl9zdWZmaXhDaGlsZHJlbi5jaGFuZ2VzKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSksdGhpcy5faGludENoaWxkcmVuLmNoYW5nZXMucGlwZShCZShudWxsKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Byb2Nlc3NIaW50cygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX2Vycm9yQ2hpbGRyZW4uY2hhbmdlcy5waXBlKEJlKG51bGwpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSksdGhpcy5fZGlyJiZ0aGlzLl9kaXIuY2hhbmdlLnBpcGUoVWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMudXBkYXRlT3V0bGluZUdhcCgpKSl9KSk6dGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5fdmFsaWRhdGVDb250cm9sQ2hpbGQoKSx0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseSYmdGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU9ImVudGVyIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfV9zaG91bGRGb3J3YXJkKHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbD90aGlzLl9jb250cm9sLm5nQ29udHJvbDpudWxsO3JldHVybiBlJiZlW3RdfV9oYXNQbGFjZWhvbGRlcigpe3JldHVybiEhKHRoaXMuX2NvbnRyb2wmJnRoaXMuX2NvbnRyb2wucGxhY2Vob2xkZXJ8fHRoaXMuX3BsYWNlaG9sZGVyQ2hpbGQpfV9oYXNMYWJlbCgpe3JldHVybiEoIXRoaXMuX2xhYmVsQ2hpbGROb25TdGF0aWMmJiF0aGlzLl9sYWJlbENoaWxkU3RhdGljKX1fc2hvdWxkTGFiZWxGbG9hdCgpe3JldHVybiB0aGlzLl9jYW5MYWJlbEZsb2F0KCkmJih0aGlzLl9jb250cm9sJiZ0aGlzLl9jb250cm9sLnNob3VsZExhYmVsRmxvYXR8fHRoaXMuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpfV9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCl7cmV0dXJuImxlZ2FjeSI9PT10aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9oYXNMYWJlbCgpfHx0aGlzLl9oYXNMYWJlbCgpJiYhdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpfV9oYXNGbG9hdGluZ0xhYmVsKCl7cmV0dXJuIHRoaXMuX2hhc0xhYmVsKCl8fCJsZWdhY3kiPT09dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9oYXNQbGFjZWhvbGRlcigpfV9nZXREaXNwbGF5ZWRNZXNzYWdlcygpe3JldHVybiB0aGlzLl9lcnJvckNoaWxkcmVuJiZ0aGlzLl9lcnJvckNoaWxkcmVuLmxlbmd0aD4wJiZ0aGlzLl9jb250cm9sLmVycm9yU3RhdGU/ImVycm9yIjoiaGludCJ9X2FuaW1hdGVBbmRMb2NrTGFiZWwoKXt0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCkmJnRoaXMuX2NhbkxhYmVsRmxvYXQoKSYmKHRoaXMuX2FuaW1hdGlvbnNFbmFibGVkJiZ0aGlzLl9sYWJlbCYmKHRoaXMuX3Nob3dBbHdheXNBbmltYXRlPSEwLGxlKHRoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQsInRyYW5zaXRpb25lbmQiKS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc2hvd0Fsd2F5c0FuaW1hdGU9ITF9KSkpLHRoaXMuZmxvYXRMYWJlbD0iYWx3YXlzIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X3ZhbGlkYXRlUGxhY2Vob2xkZXJzKCl7aWYodGhpcy5fY29udHJvbC5wbGFjZWhvbGRlciYmdGhpcy5fcGxhY2Vob2xkZXJDaGlsZCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiUGxhY2Vob2xkZXIgYXR0cmlidXRlIGFuZCBjaGlsZCBlbGVtZW50IHdlcmUgYm90aCBzcGVjaWZpZWQuIil9KSgpfV9wcm9jZXNzSGludHMoKXt0aGlzLl92YWxpZGF0ZUhpbnRzKCksdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCl9X3ZhbGlkYXRlSGludHMoKXtpZih0aGlzLl9oaW50Q2hpbGRyZW4mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl7bGV0IHQsZTt0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaCgobj0+e2lmKCJzdGFydCI9PT1uLmFsaWduKXtpZih0fHx0aGlzLmhpbnRMYWJlbCl0aHJvdyBnaigic3RhcnQiKTt0PW59ZWxzZSBpZigiZW5kIj09PW4uYWxpZ24pe2lmKGUpdGhyb3cgZ2ooImVuZCIpO2U9bn19KSl9fV9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRzJiZ0aGlzLl9kZWZhdWx0cy5mbG9hdExhYmVsfHwiYXV0byJ9X3N5bmNEZXNjcmliZWRCeUlkcygpe2lmKHRoaXMuX2NvbnRyb2wpe2xldCB0PVtdO2lmKHRoaXMuX2NvbnRyb2wudXNlckFyaWFEZXNjcmliZWRCeSYmInN0cmluZyI9PXR5cGVvZiB0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkmJnQucHVzaCguLi50aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkuc3BsaXQoIiAiKSksImhpbnQiPT09dGhpcy5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSl7Y29uc3QgZT10aGlzLl9oaW50Q2hpbGRyZW4/dGhpcy5faGludENoaWxkcmVuLmZpbmQoKHQ9PiJzdGFydCI9PT10LmFsaWduKSk6bnVsbCxuPXRoaXMuX2hpbnRDaGlsZHJlbj90aGlzLl9oaW50Q2hpbGRyZW4uZmluZCgodD0+ImVuZCI9PT10LmFsaWduKSk6bnVsbDtlP3QucHVzaChlLmlkKTp0aGlzLl9oaW50TGFiZWwmJnQucHVzaCh0aGlzLl9oaW50TGFiZWxJZCksbiYmdC5wdXNoKG4uaWQpfWVsc2UgdGhpcy5fZXJyb3JDaGlsZHJlbiYmdC5wdXNoKC4uLnRoaXMuX2Vycm9yQ2hpbGRyZW4ubWFwKCh0PT50LmlkKSkpO3RoaXMuX2NvbnRyb2wuc2V0RGVzY3JpYmVkQnlJZHModCl9fV92YWxpZGF0ZUNvbnRyb2xDaGlsZCgpe2lmKCF0aGlzLl9jb250cm9sJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigibWF0LWZvcm0tZmllbGQgbXVzdCBjb250YWluIGEgTWF0Rm9ybUZpZWxkQ29udHJvbC4iKX0pKCl9dXBkYXRlT3V0bGluZUdhcCgpe2NvbnN0IHQ9dGhpcy5fbGFiZWw/dGhpcy5fbGFiZWwubmF0aXZlRWxlbWVudDpudWxsO2lmKCJvdXRsaW5lIiE9PXRoaXMuYXBwZWFyYW5jZXx8IXR8fCF0LmNoaWxkcmVuLmxlbmd0aHx8IXQudGV4dENvbnRlbnQudHJpbSgpKXJldHVybjtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybjtpZighdGhpcy5faXNBdHRhY2hlZFRvRE9NKCkpcmV0dXJuIHZvaWQodGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITApO2xldCBlPTAsbj0wO2NvbnN0IG89dGhpcy5fY29ubmVjdGlvbkNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LGk9by5xdWVyeVNlbGVjdG9yQWxsKCIubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCIpLGE9by5xdWVyeVNlbGVjdG9yQWxsKCIubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXAiKTtpZih0aGlzLl9sYWJlbCYmdGhpcy5fbGFiZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpe2NvbnN0IGk9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZigwPT09aS53aWR0aCYmMD09PWkuaGVpZ2h0KXJldHVybiB0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT0hMCx2b2lkKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5PSExKTtjb25zdCBhPXRoaXMuX2dldFN0YXJ0RW5kKGkpLHI9dC5jaGlsZHJlbixzPXRoaXMuX2dldFN0YXJ0RW5kKHJbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO2xldCBsPTA7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0KyspbCs9clt0XS5vZmZzZXRXaWR0aDtlPU1hdGguYWJzKHMtYSktNSxuPWw+MD8uNzUqbCsxMDowfWZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWlbdF0uc3R5bGUud2lkdGg9YCR7ZX1weGA7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0KyspYVt0XS5zdHlsZS53aWR0aD1gJHtufXB4YDt0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT10aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseT0hMX1fZ2V0U3RhcnRFbmQodCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWU/dC5yaWdodDp0LmxlZnR9X2lzQXR0YWNoZWRUb0RPTSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKHQuZ2V0Um9vdE5vZGUpe2NvbnN0IGU9dC5nZXRSb290Tm9kZSgpO3JldHVybiBlJiZlIT09dH1yZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHQpfX1Eai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RGopKGZ1KEtoKSxmdShPYiksZnUoS2gpLGZ1KEFGLDgpLGZ1KGtqLDgpLGZ1KF9IKSxmdShtQyksZnUoY2ssOCkpfSxEai7JtWNtcD1zbyh7dHlwZTpEaixzZWxlY3RvcnM6W1sibWF0LWZvcm0tZmllbGQiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoVXkobyxmaiw1KSxVeShvLGZqLDcpLFV5KG8sX2osNSksVXkobyxfaiw3KSxVeShvLENqLDUpLFV5KG8scGosNSksVXkobyxiaiw1KSxVeShvLE1qLDUpLFV5KG8seGosNSkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX2NvbnRyb2xOb25TdGF0aWM9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2NvbnRyb2xTdGF0aWM9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2xhYmVsQ2hpbGROb25TdGF0aWM9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2xhYmVsQ2hpbGRTdGF0aWM9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX3BsYWNlaG9sZGVyQ2hpbGQ9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2Vycm9yQ2hpbGRyZW49dCksQnkodD1qeSgpKSYmKG4uX2hpbnRDaGlsZHJlbj10KSxCeSh0PWp5KCkpJiYobi5fcHJlZml4Q2hpbGRyZW49dCksQnkodD1qeSgpKSYmKG4uX3N1ZmZpeENoaWxkcmVuPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShaVSw1KSxWeShYVSw3KSxWeShLVSw1KSxWeShKVSw1KSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi51bmRlcmxpbmVSZWY9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2Nvbm5lY3Rpb25Db250YWluZXJSZWY9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2lucHV0Q29udGFpbmVyUmVmPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLl9sYWJlbD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWZvcm0tZmllbGQiXSxob3N0VmFyczo0MCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY2YoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQiLCJzdGFuZGFyZCI9PW4uYXBwZWFyYW5jZSkoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCIsImZpbGwiPT1uLmFwcGVhcmFuY2UpKCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUiLCJvdXRsaW5lIj09bi5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kiLCJsZWdhY3kiPT1uLmFwcGVhcmFuY2UpKCJtYXQtZm9ybS1maWVsZC1pbnZhbGlkIixuLl9jb250cm9sLmVycm9yU3RhdGUpKCJtYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQiLG4uX2NhbkxhYmVsRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCIsbi5fc2hvdWxkTGFiZWxGbG9hdCgpKSgibWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIixuLl9oYXNGbG9hdGluZ0xhYmVsKCkpKCJtYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIixuLl9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCkpKCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZCIsbi5fY29udHJvbC5kaXNhYmxlZCkoIm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsZWQiLG4uX2NvbnRyb2wuYXV0b2ZpbGxlZCkoIm1hdC1mb2N1c2VkIixuLl9jb250cm9sLmZvY3VzZWQpKCJuZy11bnRvdWNoZWQiLG4uX3Nob3VsZEZvcndhcmQoInVudG91Y2hlZCIpKSgibmctdG91Y2hlZCIsbi5fc2hvdWxkRm9yd2FyZCgidG91Y2hlZCIpKSgibmctcHJpc3RpbmUiLG4uX3Nob3VsZEZvcndhcmQoInByaXN0aW5lIikpKCJuZy1kaXJ0eSIsbi5fc2hvdWxkRm9yd2FyZCgiZGlydHkiKSkoIm5nLXZhbGlkIixuLl9zaG91bGRGb3J3YXJkKCJ2YWxpZCIpKSgibmctaW52YWxpZCIsbi5fc2hvdWxkRm9yd2FyZCgiaW52YWxpZCIpKSgibmctcGVuZGluZyIsbi5fc2hvdWxkRm9yd2FyZCgicGVuZGluZyIpKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCFuLl9hbmltYXRpb25zRW5hYmxlZCl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixmbG9hdExhYmVsOiJmbG9hdExhYmVsIixhcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixoaWRlUmVxdWlyZWRNYXJrZXI6ImhpZGVSZXF1aXJlZE1hcmtlciIsaGludExhYmVsOiJoaW50TGFiZWwifSxleHBvcnRBczpbIm1hdEZvcm1GaWVsZCJdLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6U2osdXNlRXhpc3Rpbmc6RGp9XSksUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiLCJbbWF0UHJlZml4XSIsIm1hdC1wbGFjZWhvbGRlciIsIm1hdC1sYWJlbCIsIlttYXRTdWZmaXhdIiwibWF0LWVycm9yIiwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pIiwibWF0LWhpbnRbYWxpZ249J2VuZCddIl0sZGVjbHM6MTUsdmFyczo4LGNvbnN0czpbWzEsIm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIiXSxbMSwibWF0LWZvcm0tZmllbGQtZmxleCIsMywiY2xpY2siXSxbImNvbm5lY3Rpb25Db250YWluZXIiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtZm9ybS1maWVsZC1wcmVmaXgiLDQsIm5nSWYiXSxbMSwibWF0LWZvcm0tZmllbGQtaW5maXgiXSxbImlucHV0Q29udGFpbmVyIiwiIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJpZCIsIm1hdC1lbXB0eSIsIm1hdC1mb3JtLWZpZWxkLWVtcHR5IiwibWF0LWFjY2VudCIsIm1hdC13YXJuIiwibmdTd2l0Y2giLCJjZGtPYnNlcnZlQ29udGVudCIsNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtZm9ybS1maWVsZC1zdWZmaXgiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIiwzLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LWZvcm0tZmllbGQtb3V0bGluZSJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0Il0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUiLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXByZWZpeCJdLFsxLCJtYXQtZm9ybS1maWVsZC1sYWJlbCIsMywiY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZCIsImlkIiwibmdTd2l0Y2giLCJjZGtPYnNlcnZlQ29udGVudCJdLFsibGFiZWwiLCIiXSxbImNsYXNzIiwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIG1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWQiLCJtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiXSxbMSwibWF0LWZvcm0tZmllbGQtc3VmZml4Il0sWzEsIm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSJdLFsidW5kZXJsaW5lIiwiIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXJpcHBsZSJdLFsxLCJtYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXIiXSxbImNsYXNzIiwibWF0LWhpbnQiLDMsImlkIiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyIl0sWzEsIm1hdC1oaW50IiwzLCJpZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSXUoY2opLF91KDAsImRpdiIsMCksX3UoMSwiZGl2IiwxLDIpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2NvbnRyb2wub25Db250YWluZXJDbGljayYmbi5fY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKGUpfSkpLEhtKDMsUVUsOSwwLCJuZy1jb250YWluZXIiLDMpLEhtKDQsJFUsMiwwLCJkaXYiLDQpLF91KDUsImRpdiIsNSw2KSxIdSg3KSxfdSg4LCJzcGFuIiw3KSxIbSg5LG9qLDUsMTYsImxhYmVsIiw4KSxDdSgpLEN1KCksSG0oMTAsaWosMiwwLCJkaXYiLDkpLEN1KCksSG0oMTEsYWosMyw0LCJkaXYiLDEwKSxfdSgxMiwiZGl2IiwxMSksSG0oMTMscmosMiwxLCJkaXYiLDEyKSxIbSgxNCxsaiw1LDIsImRpdiIsMTMpLEN1KCksQ3UoKSksMiZlJiYoRGMoMyksaHUoIm5nSWYiLCJvdXRsaW5lIj09bi5hcHBlYXJhbmNlKSxEYygxKSxodSgibmdJZiIsbi5fcHJlZml4Q2hpbGRyZW4ubGVuZ3RoKSxEYyg1KSxodSgibmdJZiIsbi5faGFzRmxvYXRpbmdMYWJlbCgpKSxEYygxKSxodSgibmdJZiIsbi5fc3VmZml4Q2hpbGRyZW4ubGVuZ3RoKSxEYygxKSxodSgibmdJZiIsIm91dGxpbmUiIT1uLmFwcGVhcmFuY2UpLERjKDEpLGh1KCJuZ1N3aXRjaCIsbi5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsImVycm9yIiksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsImhpbnQiKSl9LGRpcmVjdGl2ZXM6W1B2LER2LFJ2LHpIXSxzdHlsZXM6WyIubWF0LWZvcm0tZmllbGR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGR7dGV4dC1hbGlnbjpyaWdodH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeHt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1pbmZpeHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6YXV0bzttaW4td2lkdGg6MDt3aWR0aDoxODBweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCl9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtmb250OmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxjb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSx3aWR0aCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDtsZWZ0OmF1dG87cmlnaHQ6MH0ubWF0LWZvcm0tZmllbGQtZW1wdHkubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9jazt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbcGxhY2Vob2xkZXJdOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1sYWJlbDpub3QoLm1hdC1mb3JtLWZpZWxkLWVtcHR5KXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtOnNjYWxlM2QoMSwgMS4wMDAxLCAxKX0ubWF0LWZvcm0tZmllbGQtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt3aWR0aDoxMDAlO3RyYW5zZm9ybS1vcmlnaW46NTAlO3RyYW5zZm9ybTpzY2FsZVgoMC41KTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1pY29ue3dpZHRoOjFlbTtoZWlnaHQ6MWVtO2ZvbnQtc2l6ZTppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5tYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlcntmbGV4OjEgMCAxZW19Lm1hdC1lcnJvcntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1jb250cm9sLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5ke29yZGVyOjF9Lm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iLCcubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7cGFkZGluZzouNzVlbSAuNzVlbSAwIC43NWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpkYXNoZWQgM3B4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MXB4O3dpZHRoOjEwMCV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbDpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246b3BhY2l0eSA2MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX1cbicsJy5tYXQtaW5wdXQtZWxlbWVudHtmb250OmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpjdXJyZW50Q29sb3I7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDttYXJnaW46MDt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTt0ZXh0LWFsaWduOmluaGVyaXQ7Ym94LXNpemluZzpjb250ZW50LWJveH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1jbGVhciwubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1yZXZlYWx7ZGlzcGxheTpub25lfS5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNvbnRhY3RzLWF1dG8tZmlsbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhcHMtbG9jay1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNyZWRlbnRpYWxzLWF1dG8tZmlsbC1idXR0b257dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lLWxvY2FsXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla10sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9dGltZV17bGluZS1oZWlnaHQ6MX0ubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRlXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPW1vbnRoXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla106OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVdOjphZnRlcntjb250ZW50OiIgIjt3aGl0ZS1zcGFjZTpwcmU7d2lkdGg6MXB4fS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2xlYXItYnV0dG9ue2ZvbnQtc2l6ZTouNzVlbX0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH10ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudHtyZXNpemU6dmVydGljYWw7b3ZlcmZsb3c6YXV0b310ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudC5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZzoycHggMDttYXJnaW46LTJweCAwfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudHstbW96LWFwcGVhcmFuY2U6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctdG9wOjFlbTt0b3A6LTFlbTttYXJnaW4tYm90dG9tOi0xZW19c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtZXhwYW5ke2Rpc3BsYXk6bm9uZX1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50Om5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpub25lfS5tYXQtZm9jdXNlZCAuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIHNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb250ZW50OiIiO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO21hcmdpbi10b3A6LTIuNXB4O3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7cmlnaHQ6YXV0bztsZWZ0OjB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MTVweH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTBweCl9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7bWFyZ2luLXRvcDotNXB4fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTEwcHh9XG4nLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMDBweCk7LW1zLXRyYW5zZm9ybTpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257d2lkdGg6MWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntmb250OmluaGVyaXQ7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257Zm9udC1zaXplOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RvcDowO2hlaWdodDoycHg7b3ZlcmZsb3c6aGlkZGVufS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3JkZXItdG9wLXN0eWxlOmRvdHRlZDtib3JkZXItdG9wLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtaW52YWxpZDpub3QoLm1hdC1mb2N1c2VkKSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDoxcHh9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC13cmFwcGVye21hcmdpbjouMjVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZzowIC43NWVtIDAgLjc1ZW07bWFyZ2luLXRvcDotMC4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7dG9wOi4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMjVlbTtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7bWluLXdpZHRoOjVweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHg7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnR7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7ZmxleC1ncm93OjF9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXJhZGl1czouMDAwMDAxcHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljaywubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tib3JkZXI6M3B4IGRhc2hlZH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHt0cmFuc2l0aW9uOm5vbmV9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtZmxleHtwYWRkaW5nLXRvcDouNzVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7Ym90dG9tOjA7aGVpZ2h0OjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQuX21hdC1hbmltYXRpb24tbm9vcGFibGU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RyYW5zaXRpb246bm9uZX1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W3VqLnRyYW5zaXRpb25NZXNzYWdlc119LGNoYW5nZURldGVjdGlvbjowfSksRGouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltLaF19XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltral19XX0se3R5cGU6X0h9LHt0eXBlOm1DfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfV0sRGoucHJvcERlY29yYXRvcnM9e2FwcGVhcmFuY2U6W3t0eXBlOlJffV0saGlkZVJlcXVpcmVkTWFya2VyOlt7dHlwZTpSX31dLGhpbnRMYWJlbDpbe3R5cGU6Ul99XSxmbG9hdExhYmVsOlt7dHlwZTpSX31dLHVuZGVybGluZVJlZjpbe3R5cGU6YXIsYXJnczpbInVuZGVybGluZSJdfV0sX2Nvbm5lY3Rpb25Db250YWluZXJSZWY6W3t0eXBlOmFyLGFyZ3M6WyJjb25uZWN0aW9uQ29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfaW5wdXRDb250YWluZXJSZWY6W3t0eXBlOmFyLGFyZ3M6WyJpbnB1dENvbnRhaW5lciJdfV0sX2xhYmVsOlt7dHlwZTphcixhcmdzOlsibGFiZWwiXX1dLF9jb250cm9sTm9uU3RhdGljOlt7dHlwZTppcixhcmdzOltmal19XSxfY29udHJvbFN0YXRpYzpbe3R5cGU6aXIsYXJnczpbZmose3N0YXRpYzohMH1dfV0sX2xhYmVsQ2hpbGROb25TdGF0aWM6W3t0eXBlOmlyLGFyZ3M6W19qXX1dLF9sYWJlbENoaWxkU3RhdGljOlt7dHlwZTppcixhcmdzOltfaix7c3RhdGljOiEwfV19XSxfcGxhY2Vob2xkZXJDaGlsZDpbe3R5cGU6aXIsYXJnczpbQ2pdfV0sX2Vycm9yQ2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W3BqLHtkZXNjZW5kYW50czohMH1dfV0sX2hpbnRDaGlsZHJlbjpbe3R5cGU6b3IsYXJnczpbYmose2Rlc2NlbmRhbnRzOiEwfV19XSxfcHJlZml4Q2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W01qLHtkZXNjZW5kYW50czohMH1dfV0sX3N1ZmZpeENoaWxkcmVuOlt7dHlwZTpvcixhcmdzOlt4aix7ZGVzY2VuZGFudHM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERqLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1mb3JtLWZpZWxkIixleHBvcnRBczoibWF0Rm9ybUZpZWxkIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtd3JhcHBlciI+XG4gIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWZsZXgiICNjb25uZWN0aW9uQ29udGFpbmVyXG4gICAgICAgKGNsaWNrKT0iX2NvbnRyb2wub25Db250YWluZXJDbGljayAmJiBfY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKCRldmVudCkiPlxuXG4gICAgXHgzYyEtLSBPdXRsaW5lIHVzZWQgZm9yIG91dGxpbmUgYXBwZWFyYW5jZS4gLS1ceDNlXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj0iYXBwZWFyYW5jZSA9PSBcJ291dGxpbmVcJyI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lIj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2siPlxuICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0Ij48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXAiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXByZWZpeCIgKm5nSWY9Il9wcmVmaXhDaGlsZHJlbi5sZW5ndGgiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbbWF0UHJlZml4XSI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaW5maXgiICNpbnB1dENvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgPHNwYW4gY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIiPlxuICAgICAgICBceDNjIS0tIFdlIGFkZCBhcmlhLW93bnMgYXMgYSB3b3JrYXJvdW5kIGZvciBhbiBpc3N1ZSBpbiBKQVdTICYgTlZEQSB3aGVyZSB0aGUgbGFiZWwgaXNuXCd0XG4gICAgICAgICAgICAgcmVhZCBpZiBpdCBjb21lcyBiZWZvcmUgdGhlIGNvbnRyb2wgaW4gdGhlIERPTS4gLS1ceDNlXG4gICAgICAgIDxsYWJlbCBjbGFzcz0ibWF0LWZvcm0tZmllbGQtbGFiZWwiXG4gICAgICAgICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPSJ1cGRhdGVPdXRsaW5lR2FwKCkiXG4gICAgICAgICAgICAgICBbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09ImFwcGVhcmFuY2UgIT0gXCdvdXRsaW5lXCciXG4gICAgICAgICAgICAgICBbaWRdPSJfbGFiZWxJZCJcbiAgICAgICAgICAgICAgIFthdHRyLmZvcl09Il9jb250cm9sLmlkIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT0iX2NvbnRyb2wuaWQiXG4gICAgICAgICAgICAgICBbY2xhc3MubWF0LWVtcHR5XT0iX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWVtcHR5XT0iX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1hY2NlbnRdPSJjb2xvciA9PSBcJ2FjY2VudFwnIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC13YXJuXT0iY29sb3IgPT0gXCd3YXJuXCciXG4gICAgICAgICAgICAgICAjbGFiZWxcbiAgICAgICAgICAgICAgICpuZ0lmPSJfaGFzRmxvYXRpbmdMYWJlbCgpIlxuICAgICAgICAgICAgICAgW25nU3dpdGNoXT0iX2hhc0xhYmVsKCkiPlxuXG4gICAgICAgICAgXHgzYyEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBpbiBmYXZvciBvZiBtYXQtbGFiZWwgZWxlbWVudCBhbiBwbGFjZWhvbGRlciBhdHRyLiAtLVx4M2VcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9ImZhbHNlIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LXBsYWNlaG9sZGVyIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8c3Bhbj57e19jb250cm9sLnBsYWNlaG9sZGVyfX08L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1sYWJlbCIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgICAgXHgzYyEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBgbWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkYCBjbGFzcyAtLVx4M2VcbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9Im1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZCBtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgICAgICAgICpuZ0lmPSIhaGlkZVJlcXVpcmVkTWFya2VyICYmIF9jb250cm9sLnJlcXVpcmVkICYmICFfY29udHJvbC5kaXNhYmxlZCI+JiMzMjsqPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtc3VmZml4IiAqbmdJZj0iX3N1ZmZpeENoaWxkcmVuLmxlbmd0aCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9IlttYXRTdWZmaXhdIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIFx4M2MhLS0gVW5kZXJsaW5lIHVzZWQgZm9yIGxlZ2FjeSwgc3RhbmRhcmQsIGFuZCBib3ggYXBwZWFyYW5jZXMuIC0tXHgzZVxuICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC11bmRlcmxpbmUiICN1bmRlcmxpbmVcbiAgICAgICAqbmdJZj0iYXBwZWFyYW5jZSAhPSBcJ291dGxpbmVcJyI+XG4gICAgPHNwYW4gY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXJpcHBsZSJcbiAgICAgICAgICBbY2xhc3MubWF0LWFjY2VudF09ImNvbG9yID09IFwnYWNjZW50XCciXG4gICAgICAgICAgW2NsYXNzLm1hdC13YXJuXT0iY29sb3IgPT0gXCd3YXJuXCciPjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIiXG4gICAgICAgW25nU3dpdGNoXT0iX2dldERpc3BsYXllZE1lc3NhZ2VzKCkiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT0iXCdlcnJvclwnIiBbQHRyYW5zaXRpb25NZXNzYWdlc109Il9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1lcnJvciI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIiAqbmdTd2l0Y2hDYXNlPSJcJ2hpbnRcJyJcbiAgICAgIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT0iX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlIj5cbiAgICAgIFx4M2MhLS0gVE9ETyhtbWFsZXJiYSk6IHVzZSBhbiBhY3R1YWwgPG1hdC1oaW50PiBvbmNlIGFsbCBzZWxlY3RvcnMgYXJlIHN3aXRjaGVkIHRvIG1hdC0qIC0tXHgzZVxuICAgICAgPGRpdiAqbmdJZj0iaGludExhYmVsIiBbaWRdPSJfaGludExhYmVsSWQiIGNsYXNzPSJtYXQtaGludCI+e3toaW50TGFiZWx9fTwvZGl2PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtaGludDpub3QoW2FsaWduPVwnZW5kXCddKSI+PC9uZy1jb250ZW50PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXIiPjwvZGl2PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtaGludFthbGlnbj1cJ2VuZFwnXSI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxhbmltYXRpb25zOlt1ai50cmFuc2l0aW9uTWVzc2FnZXNdLGhvc3Q6e2NsYXNzOiJtYXQtZm9ybS1maWVsZCIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT0gInN0YW5kYXJkIicsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxdIjonYXBwZWFyYW5jZSA9PSAiZmlsbCInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lXSI6J2FwcGVhcmFuY2UgPT0gIm91dGxpbmUiJywiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5XSI6J2FwcGVhcmFuY2UgPT0gImxlZ2FjeSInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF0iOiJfY29udHJvbC5lcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdF0iOiJfY2FuTGFiZWxGbG9hdCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdF0iOiJfc2hvdWxkTGFiZWxGbG9hdCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhhcy1sYWJlbF0iOiJfaGFzRmxvYXRpbmdMYWJlbCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXJdIjoiX2hpZGVDb250cm9sUGxhY2Vob2xkZXIoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZF0iOiJfY29udHJvbC5kaXNhYmxlZCIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkXSI6Il9jb250cm9sLmF1dG9maWxsZWQiLCJbY2xhc3MubWF0LWZvY3VzZWRdIjoiX2NvbnRyb2wuZm9jdXNlZCIsIltjbGFzcy5uZy11bnRvdWNoZWRdIjonX3Nob3VsZEZvcndhcmQoInVudG91Y2hlZCIpJywiW2NsYXNzLm5nLXRvdWNoZWRdIjonX3Nob3VsZEZvcndhcmQoInRvdWNoZWQiKScsIltjbGFzcy5uZy1wcmlzdGluZV0iOidfc2hvdWxkRm9yd2FyZCgicHJpc3RpbmUiKScsIltjbGFzcy5uZy1kaXJ0eV0iOidfc2hvdWxkRm9yd2FyZCgiZGlydHkiKScsIltjbGFzcy5uZy12YWxpZF0iOidfc2hvdWxkRm9yd2FyZCgidmFsaWQiKScsIltjbGFzcy5uZy1pbnZhbGlkXSI6J19zaG91bGRGb3J3YXJkKCJpbnZhbGlkIiknLCJbY2xhc3MubmctcGVuZGluZ10iOidfc2hvdWxkRm9yd2FyZCgicGVuZGluZyIpJywiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6IiFfYW5pbWF0aW9uc0VuYWJsZWQifSxpbnB1dHM6WyJjb2xvciJdLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNoLHByb3ZpZGVyczpbe3Byb3ZpZGU6U2osdXNlRXhpc3Rpbmc6RGp9XSxzdHlsZXM6WyIubWF0LWZvcm0tZmllbGR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGR7dGV4dC1hbGlnbjpyaWdodH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeHt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1pbmZpeHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6YXV0bzttaW4td2lkdGg6MDt3aWR0aDoxODBweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCl9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtmb250OmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxjb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSx3aWR0aCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDtsZWZ0OmF1dG87cmlnaHQ6MH0ubWF0LWZvcm0tZmllbGQtZW1wdHkubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9jazt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbcGxhY2Vob2xkZXJdOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1sYWJlbDpub3QoLm1hdC1mb3JtLWZpZWxkLWVtcHR5KXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtOnNjYWxlM2QoMSwgMS4wMDAxLCAxKX0ubWF0LWZvcm0tZmllbGQtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt3aWR0aDoxMDAlO3RyYW5zZm9ybS1vcmlnaW46NTAlO3RyYW5zZm9ybTpzY2FsZVgoMC41KTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1pY29ue3dpZHRoOjFlbTtoZWlnaHQ6MWVtO2ZvbnQtc2l6ZTppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5tYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlcntmbGV4OjEgMCAxZW19Lm1hdC1lcnJvcntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1jb250cm9sLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5ke29yZGVyOjF9Lm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iLCcubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7cGFkZGluZzouNzVlbSAuNzVlbSAwIC43NWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpkYXNoZWQgM3B4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MXB4O3dpZHRoOjEwMCV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbDpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246b3BhY2l0eSA2MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX1cbicsJy5tYXQtaW5wdXQtZWxlbWVudHtmb250OmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpjdXJyZW50Q29sb3I7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDttYXJnaW46MDt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTt0ZXh0LWFsaWduOmluaGVyaXQ7Ym94LXNpemluZzpjb250ZW50LWJveH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1jbGVhciwubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1yZXZlYWx7ZGlzcGxheTpub25lfS5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNvbnRhY3RzLWF1dG8tZmlsbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhcHMtbG9jay1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNyZWRlbnRpYWxzLWF1dG8tZmlsbC1idXR0b257dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lLWxvY2FsXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla10sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9dGltZV17bGluZS1oZWlnaHQ6MX0ubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRlXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPW1vbnRoXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla106OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVdOjphZnRlcntjb250ZW50OiIgIjt3aGl0ZS1zcGFjZTpwcmU7d2lkdGg6MXB4fS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2xlYXItYnV0dG9ue2ZvbnQtc2l6ZTouNzVlbX0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH10ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudHtyZXNpemU6dmVydGljYWw7b3ZlcmZsb3c6YXV0b310ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudC5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZzoycHggMDttYXJnaW46LTJweCAwfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudHstbW96LWFwcGVhcmFuY2U6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctdG9wOjFlbTt0b3A6LTFlbTttYXJnaW4tYm90dG9tOi0xZW19c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtZXhwYW5ke2Rpc3BsYXk6bm9uZX1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50Om5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpub25lfS5tYXQtZm9jdXNlZCAuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIHNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb250ZW50OiIiO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO21hcmdpbi10b3A6LTIuNXB4O3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7cmlnaHQ6YXV0bztsZWZ0OjB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MTVweH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTBweCl9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7bWFyZ2luLXRvcDotNXB4fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTEwcHh9XG4nLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMDBweCk7LW1zLXRyYW5zZm9ybTpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257d2lkdGg6MWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntmb250OmluaGVyaXQ7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257Zm9udC1zaXplOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RvcDowO2hlaWdodDoycHg7b3ZlcmZsb3c6aGlkZGVufS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3JkZXItdG9wLXN0eWxlOmRvdHRlZDtib3JkZXItdG9wLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtaW52YWxpZDpub3QoLm1hdC1mb2N1c2VkKSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDoxcHh9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC13cmFwcGVye21hcmdpbjouMjVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZzowIC43NWVtIDAgLjc1ZW07bWFyZ2luLXRvcDotMC4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7dG9wOi4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMjVlbTtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7bWluLXdpZHRoOjVweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHg7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnR7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7ZmxleC1ncm93OjF9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXJhZGl1czouMDAwMDAxcHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljaywubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tib3JkZXI6M3B4IGRhc2hlZH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHt0cmFuc2l0aW9uOm5vbmV9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtZmxleHtwYWRkaW5nLXRvcDouNzVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7Ym90dG9tOjA7aGVpZ2h0OjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQuX21hdC1hbmltYXRpb24tbm9vcGFibGU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RyYW5zaXRpb246bm9uZX1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbS2hdfV19LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpba2pdfV19LHt0eXBlOl9IfSx7dHlwZTptQ30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dfSkse2Zsb2F0TGFiZWw6W3t0eXBlOlJffV0sYXBwZWFyYW5jZTpbe3R5cGU6Ul99XSxoaWRlUmVxdWlyZWRNYXJrZXI6W3t0eXBlOlJffV0saGludExhYmVsOlt7dHlwZTpSX31dLHVuZGVybGluZVJlZjpbe3R5cGU6YXIsYXJnczpbInVuZGVybGluZSJdfV0sX2Nvbm5lY3Rpb25Db250YWluZXJSZWY6W3t0eXBlOmFyLGFyZ3M6WyJjb25uZWN0aW9uQ29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfaW5wdXRDb250YWluZXJSZWY6W3t0eXBlOmFyLGFyZ3M6WyJpbnB1dENvbnRhaW5lciJdfV0sX2xhYmVsOlt7dHlwZTphcixhcmdzOlsibGFiZWwiXX1dLF9jb250cm9sTm9uU3RhdGljOlt7dHlwZTppcixhcmdzOltmal19XSxfY29udHJvbFN0YXRpYzpbe3R5cGU6aXIsYXJnczpbZmose3N0YXRpYzohMH1dfV0sX2xhYmVsQ2hpbGROb25TdGF0aWM6W3t0eXBlOmlyLGFyZ3M6W19qXX1dLF9sYWJlbENoaWxkU3RhdGljOlt7dHlwZTppcixhcmdzOltfaix7c3RhdGljOiEwfV19XSxfcGxhY2Vob2xkZXJDaGlsZDpbe3R5cGU6aXIsYXJnczpbQ2pdfV0sX2Vycm9yQ2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W3BqLHtkZXNjZW5kYW50czohMH1dfV0sX2hpbnRDaGlsZHJlbjpbe3R5cGU6b3IsYXJnczpbYmose2Rlc2NlbmRhbnRzOiEwfV19XSxfcHJlZml4Q2hpbGRyZW46W3t0eXBlOm9yLGFyZ3M6W01qLHtkZXNjZW5kYW50czohMH1dfV0sX3N1ZmZpeENoaWxkcmVuOlt7dHlwZTpvcixhcmdzOlt4aix7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBSant9UmouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJqKX0sUmouybVtb2Q9dW8oe3R5cGU6Ump9KSxSai7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFdGLElIXSxXRl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJqLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlttaixEaix5aixfaixDaix2aixPal0saW1wb3J0czpbcngsV0YsSUhdLGV4cG9ydHM6W1dGLG1qLERqLHlqLF9qLENqLHZqLE9qXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFJqLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bbWosRGoseWosX2osQ2osdmosT2pdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3J4LFdGLElIXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltXRixtaixEaix5aixfaixDaix2aixPal19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmNsYXNzIEVqe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5vbkNoYW5nZT10PT57fSx0aGlzLm9uVG91Y2hlZD0oKT0+e319c2V0UHJvcGVydHkodCxlKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdCxlKX1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5zZXRQcm9wZXJ0eSgiZGlzYWJsZWQiLHQpfX1Fai7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RWopKGZ1KCRoKSxmdShLaCkpfSxFai7JtWRpcj1obyh7dHlwZTpFan0pLEVqLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JGh9LHt0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFaixbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6JGh9LHt0eXBlOktofV19KSxudWxsKTtjbGFzcyBBaiBleHRlbmRzIEVqe31Bai7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoQWopKSkobnx8QWopfX0pKCksQWouybVkaXI9aG8oe3R5cGU6QWosZmVhdHVyZXM6W1FwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQWosW3t0eXBlOmtffV0sbnVsbCxudWxsKTtjb25zdCBUaj1uZXcgZXIoIk5nVmFsdWVBY2Nlc3NvciIpLE5qPXtwcm92aWRlOlRqLHVzZUV4aXN0aW5nOiRlKCgoKT0+emopKSxtdWx0aTohMH07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHpqIGV4dGVuZHMgQWp7d3JpdGVWYWx1ZSh0KXt0aGlzLnNldFByb3BlcnR5KCJjaGVja2VkIix0KX19emouybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKHpqKSkpKG58fHpqKX19KSgpLHpqLsm1ZGlyPWhvKHt0eXBlOnpqLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC5jaGVja2VkKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0sZmVhdHVyZXM6W1VoKFtOal0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoemosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1jaGVja2JveF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1jaGVja2JveF1bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQuY2hlY2tlZCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbTmpdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgSWo9e3Byb3ZpZGU6VGosdXNlRXhpc3Rpbmc6JGUoKCgpPT5GaikpLG11bHRpOiEwfTtjb25zdCBIaj1uZXcgZXIoIkNvbXBvc2l0aW9uRXZlbnRNb2RlIik7Y2xhc3MgRmogZXh0ZW5kcyBFantjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLl9jb21wb3NpdGlvbk1vZGU9bix0aGlzLl9jb21wb3Npbmc9ITEsbnVsbD09dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYodGhpcy5fY29tcG9zaXRpb25Nb2RlPSEoZnVuY3Rpb24gbygpe2NvbnN0IHQ9ck0oKT9yTSgpLmdldFVzZXJBZ2VudCgpOiIiO3JldHVybi9hbmRyb2lkIChcZCspLy50ZXN0KHQudG9Mb3dlckNhc2UoKSl9KSgpKX13cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixudWxsPT10PyIiOnQpfV9oYW5kbGVJbnB1dCh0KXsoIXRoaXMuX2NvbXBvc2l0aW9uTW9kZXx8dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYhdGhpcy5fY29tcG9zaW5nKSYmdGhpcy5vbkNoYW5nZSh0KX1fY29tcG9zaXRpb25TdGFydCgpe3RoaXMuX2NvbXBvc2luZz0hMH1fY29tcG9zaXRpb25FbmQodCl7dGhpcy5fY29tcG9zaW5nPSExLHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmdGhpcy5vbkNoYW5nZSh0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBMaih0KXtyZXR1cm4gbnVsbD09dHx8MD09PXQubGVuZ3RofWZ1bmN0aW9uIEJqKHQpe3JldHVybiBudWxsIT10JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofUZqLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGaikoZnUoJGgpLGZ1KEtoKSxmdShIaiw4KSl9LEZqLsm1ZGlyPWhvKHt0eXBlOkZqLHNlbGVjdG9yczpbWyJpbnB1dCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJmb3JtQ29udHJvbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsIm5nTW9kZWwiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJuZ01vZGVsIiwiIl0sWyIiLCJuZ0RlZmF1bHRDb250cm9sIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVJbnB1dChlLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSkoImNvbXBvc2l0aW9uc3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2NvbXBvc2l0aW9uU3RhcnQoKX0pKSgiY29tcG9zaXRpb25lbmQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9jb21wb3NpdGlvbkVuZChlLnRhcmdldC52YWx1ZSl9KSl9LGZlYXR1cmVzOltVaChbSWpdKSxRcF19KSxGai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiRofSx7dHlwZTpLaH0se3R5cGU6Qm9vbGVhbixkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbSGpdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEZqLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW2Zvcm1Db250cm9sTmFtZV0sdGV4dGFyZWFbZm9ybUNvbnRyb2xOYW1lXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbF0sdGV4dGFyZWFbZm9ybUNvbnRyb2xdLGlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW25nTW9kZWxdLHRleHRhcmVhW25nTW9kZWxdLFtuZ0RlZmF1bHRDb250cm9sXSIsaG9zdDp7IihpbnB1dCkiOiIkYW55KHRoaXMpLl9oYW5kbGVJbnB1dCgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIiwiKGNvbXBvc2l0aW9uc3RhcnQpIjoiJGFueSh0aGlzKS5fY29tcG9zaXRpb25TdGFydCgpIiwiKGNvbXBvc2l0aW9uZW5kKSI6IiRhbnkodGhpcykuX2NvbXBvc2l0aW9uRW5kKCRldmVudC50YXJnZXQudmFsdWUpIn0scHJvdmlkZXJzOltJal19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTokaH0se3R5cGU6S2h9LHt0eXBlOkJvb2xlYW4sZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0hqXX1dfV19KSxudWxsKTtjb25zdCBWaj1uZXcgZXIoIk5nVmFsaWRhdG9ycyIpLFVqPW5ldyBlcigiTmdBc3luY1ZhbGlkYXRvcnMiKSxqaj0vXig/PS57MSwyNTR9JCkoPz0uezEsNjR9QClbYS16QS1aMC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16QS1aMC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvO2NsYXNzIFdqe3N0YXRpYyBtaW4odCl7cmV0dXJuIEdqKHQpfXN0YXRpYyBtYXgodCl7cmV0dXJuIFlqKHQpfXN0YXRpYyByZXF1aXJlZCh0KXtyZXR1cm4gcWoodCl9c3RhdGljIHJlcXVpcmVkVHJ1ZSh0KXtyZXR1cm4gWmoodCl9c3RhdGljIGVtYWlsKHQpe3JldHVybiBYaih0KX1zdGF0aWMgbWluTGVuZ3RoKHQpe3JldHVybiBLaih0KX1zdGF0aWMgbWF4TGVuZ3RoKHQpe3JldHVybiBKaih0KX1zdGF0aWMgcGF0dGVybih0KXtyZXR1cm4gUWoodCl9c3RhdGljIG51bGxWYWxpZGF0b3IodCl7cmV0dXJuIG51bGx9c3RhdGljIGNvbXBvc2UodCl7cmV0dXJuIGFXKHQpfXN0YXRpYyBjb21wb3NlQXN5bmModCl7cmV0dXJuIHNXKHQpfX1mdW5jdGlvbiBHaih0KXtyZXR1cm4gZT0+e2lmKExqKGUudmFsdWUpfHxMaih0KSlyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlRmxvYXQoZS52YWx1ZSk7cmV0dXJuIWlzTmFOKG4pJiZuPHQ/e21pbjp7bWluOnQsYWN0dWFsOmUudmFsdWV9fTpudWxsfX1mdW5jdGlvbiBZaih0KXtyZXR1cm4gZT0+e2lmKExqKGUudmFsdWUpfHxMaih0KSlyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlRmxvYXQoZS52YWx1ZSk7cmV0dXJuIWlzTmFOKG4pJiZuPnQ/e21heDp7bWF4OnQsYWN0dWFsOmUudmFsdWV9fTpudWxsfX1mdW5jdGlvbiBxaih0KXtyZXR1cm4gTGoodC52YWx1ZSk/e3JlcXVpcmVkOiEwfTpudWxsfWZ1bmN0aW9uIFpqKHQpe3JldHVybiEwPT09dC52YWx1ZT9udWxsOntyZXF1aXJlZDohMH19ZnVuY3Rpb24gWGoodCl7cmV0dXJuIExqKHQudmFsdWUpfHxqai50ZXN0KHQudmFsdWUpP251bGw6e2VtYWlsOiEwfX1mdW5jdGlvbiBLaih0KXtyZXR1cm4gZT0+TGooZS52YWx1ZSl8fCFCaihlLnZhbHVlKT9udWxsOmUudmFsdWUubGVuZ3RoPHQ/e21pbmxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1YWxMZW5ndGg6ZS52YWx1ZS5sZW5ndGh9fTpudWxsfWZ1bmN0aW9uIEpqKHQpe3JldHVybiBlPT5CaihlLnZhbHVlKSYmZS52YWx1ZS5sZW5ndGg+dD97bWF4bGVuZ3RoOntyZXF1aXJlZExlbmd0aDp0LGFjdHVhbExlbmd0aDplLnZhbHVlLmxlbmd0aH19Om51bGx9ZnVuY3Rpb24gUWoodCl7aWYoIXQpcmV0dXJuICRqO2xldCBlLG47cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhuPSIiLCJeIiE9PXQuY2hhckF0KDApJiYobis9Il4iKSxuKz10LCIkIiE9PXQuY2hhckF0KHQubGVuZ3RoLTEpJiYobis9IiQiKSxlPW5ldyBSZWdFeHAobikpOihuPXQudG9TdHJpbmcoKSxlPXQpLHQ9PntpZihMaih0LnZhbHVlKSlyZXR1cm4gbnVsbDtjb25zdCBvPXQudmFsdWU7cmV0dXJuIGUudGVzdChvKT9udWxsOntwYXR0ZXJuOntyZXF1aXJlZFBhdHRlcm46bixhY3R1YWxWYWx1ZTpvfX19fWZ1bmN0aW9uICRqKHQpe3JldHVybiBudWxsfWZ1bmN0aW9uIHRXKHQpe3JldHVybiBudWxsIT10fWZ1bmN0aW9uIGVXKHQpe2NvbnN0IGU9d3UodCk/UHQodCk6dDtpZighU3UoZSkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHZhbGlkYXRvciB0byByZXR1cm4gUHJvbWlzZSBvciBPYnNlcnZhYmxlLiIpO3JldHVybiBlfWZ1bmN0aW9uIG5XKHQpe2xldCBlPXt9O3JldHVybiB0LmZvckVhY2goKHQ9PntlPW51bGwhPXQ/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHQpOmV9KSksMD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gb1codCxlKXtyZXR1cm4gZS5tYXAoKGU9PmUodCkpKX1mdW5jdGlvbiBpVyh0KXtyZXR1cm4gdC5tYXAoKHQ9PihmdW5jdGlvbiBlKHQpe3JldHVybiF0LnZhbGlkYXRlfSkodCk/dDplPT50LnZhbGlkYXRlKGUpKSl9ZnVuY3Rpb24gYVcodCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LmZpbHRlcih0Vyk7cmV0dXJuIDA9PWUubGVuZ3RoP251bGw6ZnVuY3Rpb24odCl7cmV0dXJuIG5XKG9XKHQsZSkpfX1mdW5jdGlvbiByVyh0KXtyZXR1cm4gbnVsbCE9dD9hVyhpVyh0KSk6bnVsbH1mdW5jdGlvbiBzVyh0KXtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXQuZmlsdGVyKHRXKTtyZXR1cm4gMD09ZS5sZW5ndGg/bnVsbDpmdW5jdGlvbih0KXtyZXR1cm4gaWUob1codCxlKS5tYXAoZVcpKS5waXBlKFZ0KG5XKSl9fWZ1bmN0aW9uIGxXKHQpe3JldHVybiBudWxsIT10P3NXKGlXKHQpKTpudWxsfWZ1bmN0aW9uIGNXKHQsZSl7cmV0dXJuIG51bGw9PT10P1tlXTpBcnJheS5pc0FycmF5KHQpP1suLi50LGVdOlt0LGVdfWZ1bmN0aW9uIGRXKHQpe3JldHVybiB0Ll9yYXdWYWxpZGF0b3JzfWZ1bmN0aW9uIHBXKHQpe3JldHVybiB0Ll9yYXdBc3luY1ZhbGlkYXRvcnN9ZnVuY3Rpb24gbVcodCl7cmV0dXJuIHQ/QXJyYXkuaXNBcnJheSh0KT90Olt0XTpbXX1mdW5jdGlvbiB1Vyh0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QuaW5jbHVkZXMoZSk6dD09PWV9ZnVuY3Rpb24gZlcodCxlKXtjb25zdCBuPW1XKGUpO3JldHVybiBtVyh0KS5mb3JFYWNoKCh0PT57dVcobix0KXx8bi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gZ1codCxlKXtyZXR1cm4gbVcoZSkuZmlsdGVyKChlPT4hdVcodCxlKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBoV3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9W10sdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPVtdLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZTpudWxsfWdldCB2YWxpZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbGlkOm51bGx9Z2V0IGludmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5pbnZhbGlkOm51bGx9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5wZW5kaW5nOm51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlzYWJsZWQ6bnVsbH1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH1nZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9Z2V0IHByaXN0aW5lKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucHJpc3RpbmU6bnVsbH1nZXQgZGlydHkoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfWdldCB0b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfWdldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXM6bnVsbH1nZXQgdW50b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudW50b3VjaGVkOm51bGx9Z2V0IHN0YXR1c0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzOm51bGx9Z2V0IHZhbHVlQ2hhbmdlcygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9X3NldFZhbGlkYXRvcnModCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10fHxbXSx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPXJXKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfV9zZXRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXR8fFtdLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1sVyh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbnx8bnVsbH1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufHxudWxsfV9yZWdpc3Rlck9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3MucHVzaCh0KX1faW52b2tlT25EZXN0cm95Q2FsbGJhY2tzKCl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1yZXNldCh0KXt0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5yZXNldCh0KX1oYXNFcnJvcih0LGUpe3JldHVybiEhdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wuaGFzRXJyb3IodCxlKX1nZXRFcnJvcih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmdldEVycm9yKHQsZSk6bnVsbH19aFcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhXKX0saFcuybVkaXI9aG8oe3R5cGU6aFd9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGJXIGV4dGVuZHMgaFd7Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gbnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfX1iVy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoYlcpKSkobnx8YlcpfX0pKCksYlcuybVkaXI9aG8oe3R5cGU6YlcsZmVhdHVyZXM6W1FwXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgeVcgZXh0ZW5kcyBoV3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcGFyZW50PW51bGwsdGhpcy5uYW1lPW51bGwsdGhpcy52YWx1ZUFjY2Vzc29yPW51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfV3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9jZD10fWlzKHQpe3ZhciBlLG4sbztyZXR1cm4ic3VibWl0dGVkIj09PXQ/ISEobnVsbD09PShlPXRoaXMuX2NkKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zdWJtaXR0ZWQpOiEhKG51bGw9PT0obz1udWxsPT09KG49dGhpcy5fY2QpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvbnRyb2wpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvW3RdKX19Y29uc3QgQ1c9eyJbY2xhc3MubmctdW50b3VjaGVkXSI6J2lzKCJ1bnRvdWNoZWQiKScsIltjbGFzcy5uZy10b3VjaGVkXSI6J2lzKCJ0b3VjaGVkIiknLCJbY2xhc3MubmctcHJpc3RpbmVdIjonaXMoInByaXN0aW5lIiknLCJbY2xhc3MubmctZGlydHldIjonaXMoImRpcnR5IiknLCJbY2xhc3MubmctdmFsaWRdIjonaXMoInZhbGlkIiknLCJbY2xhc3MubmctaW52YWxpZF0iOidpcygiaW52YWxpZCIpJywiW2NsYXNzLm5nLXBlbmRpbmddIjonaXMoInBlbmRpbmciKSd9LE1XPXsiW2NsYXNzLm5nLXVudG91Y2hlZF0iOidpcygidW50b3VjaGVkIiknLCJbY2xhc3MubmctdG91Y2hlZF0iOidpcygidG91Y2hlZCIpJywiW2NsYXNzLm5nLXByaXN0aW5lXSI6J2lzKCJwcmlzdGluZSIpJywiW2NsYXNzLm5nLWRpcnR5XSI6J2lzKCJkaXJ0eSIpJywiW2NsYXNzLm5nLXZhbGlkXSI6J2lzKCJ2YWxpZCIpJywiW2NsYXNzLm5nLWludmFsaWRdIjonaXMoImludmFsaWQiKScsIltjbGFzcy5uZy1wZW5kaW5nXSI6J2lzKCJwZW5kaW5nIiknLCJbY2xhc3Mubmctc3VibWl0dGVkXSI6J2lzKCJzdWJtaXR0ZWQiKSd9O2NsYXNzIHZXIGV4dGVuZHMgX1d7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fXZXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2VykoZnUoeVcsMikpfSx2Vy7JtWRpcj1obyh7dHlwZTp2VyxzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJuZ01vZGVsIiwiIl0sWyIiLCJmb3JtQ29udHJvbCIsIiJdXSxob3N0VmFyczoxNCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY2YoIm5nLXVudG91Y2hlZCIsbi5pcygidW50b3VjaGVkIikpKCJuZy10b3VjaGVkIixuLmlzKCJ0b3VjaGVkIikpKCJuZy1wcmlzdGluZSIsbi5pcygicHJpc3RpbmUiKSkoIm5nLWRpcnR5IixuLmlzKCJkaXJ0eSIpKSgibmctdmFsaWQiLG4uaXMoInZhbGlkIikpKCJuZy1pbnZhbGlkIixuLmlzKCJpbnZhbGlkIikpKCJuZy1wZW5kaW5nIixuLmlzKCJwZW5kaW5nIikpfSxmZWF0dXJlczpbUXBdfSksdlcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp5VyxkZWNvcmF0b3JzOlt7dHlwZTpWcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2Vyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xOYW1lXSxbbmdNb2RlbF0sW2Zvcm1Db250cm9sXSIsaG9zdDpDV31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnlXLGRlY29yYXRvcnM6W3t0eXBlOlZyfV19XX0pLG51bGwpO2NsYXNzIHhXIGV4dGVuZHMgX1d7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fXhXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4VykoZnUoYlcsMTApKX0seFcuybVkaXI9aG8oe3R5cGU6eFcsc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cE5hbWUiLCIiXSxbIiIsImZvcm1BcnJheU5hbWUiLCIiXSxbIiIsIm5nTW9kZWxHcm91cCIsIiJdLFsiIiwiZm9ybUdyb3VwIiwiIl0sWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RWYXJzOjE2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigibmctdW50b3VjaGVkIixuLmlzKCJ1bnRvdWNoZWQiKSkoIm5nLXRvdWNoZWQiLG4uaXMoInRvdWNoZWQiKSkoIm5nLXByaXN0aW5lIixuLmlzKCJwcmlzdGluZSIpKSgibmctZGlydHkiLG4uaXMoImRpcnR5IikpKCJuZy12YWxpZCIsbi5pcygidmFsaWQiKSkoIm5nLWludmFsaWQiLG4uaXMoImludmFsaWQiKSkoIm5nLXBlbmRpbmciLG4uaXMoInBlbmRpbmciKSkoIm5nLXN1Ym1pdHRlZCIsbi5pcygic3VibWl0dGVkIikpfSxmZWF0dXJlczpbUXBdfSkseFcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpiVyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeFcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdLFtmb3JtQXJyYXlOYW1lXSxbbmdNb2RlbEdyb3VwXSxbZm9ybUdyb3VwXSxmb3JtOm5vdChbbmdOb0Zvcm1dKSxbbmdGb3JtXSIsaG9zdDpNV31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmJXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE9XPSdcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pOycsUFc9J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgIHBlcnNvbjogbmV3IEZvcm1Hcm91cCh7IGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCkgfSlcbiAgICB9KTsnLHdXPSdcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT0iY2l0aWVzIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9ImxldCBjaXR5IG9mIGNpdHlBcnJheS5jb250cm9sczsgaW5kZXggYXMgaSI+XG4gICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPSJpIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIEluIHlvdXIgY2xhc3M6XG5cbiAgICB0aGlzLmNpdHlBcnJheSA9IG5ldyBGb3JtQXJyYXkoW25ldyBGb3JtQ29udHJvbChcJ1NGXCcpXSk7XG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBjaXRpZXM6IHRoaXMuY2l0eUFycmF5XG4gICAgfSk7JyxrVz0nXG4gICAgPGZvcm0+XG4gICAgICAgPGRpdiBuZ01vZGVsR3JvdXA9InBlcnNvbiI+XG4gICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24ubmFtZSIgbmFtZT0iZmlyc3ROYW1lIj5cbiAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+JyxTVz0nXG4gICAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+XG4gICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj5cbiAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InNob3dNb3JlQ29udHJvbHMiIFtuZ01vZGVsT3B0aW9uc109IntzdGFuZGFsb25lOiB0cnVlfSI+XG4gICAgPC9kaXY+XG4gICc7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIERXe3N0YXRpYyBjb250cm9sUGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBmb3JtQ29udHJvbE5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAgJHtPV31gKX1zdGF0aWMgbmdNb2RlbEdyb3VwRXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBmb3JtQ29udHJvbE5hbWUgY2Fubm90IGJlIHVzZWQgd2l0aCBhbiBuZ01vZGVsR3JvdXAgcGFyZW50LiBJdCBpcyBvbmx5IGNvbXBhdGlibGUgd2l0aCBwYXJlbnRzXG4gICAgICAgdGhhdCBhbHNvIGhhdmUgYSAiZm9ybSIgcHJlZml4OiBmb3JtR3JvdXBOYW1lLCBmb3JtQXJyYXlOYW1lLCBvciBmb3JtR3JvdXAuXG5cbiAgICAgICBPcHRpb24gMTogIFVwZGF0ZSB0aGUgcGFyZW50IHRvIGJlIGZvcm1Hcm91cE5hbWUgKHJlYWN0aXZlIGZvcm0gc3RyYXRlZ3kpXG5cbiAgICAgICAgJHtQV31cblxuICAgICAgICBPcHRpb24gMjogVXNlIG5nTW9kZWwgaW5zdGVhZCBvZiBmb3JtQ29udHJvbE5hbWUgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSlcblxuICAgICAgICAke2tXfWApfXN0YXRpYyBtaXNzaW5nRm9ybUV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUdyb3VwIGV4cGVjdHMgYSBGb3JtR3JvdXAgaW5zdGFuY2UuIFBsZWFzZSBwYXNzIG9uZSBpbi5cblxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAke09XfWApfXN0YXRpYyBncm91cFBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUdyb3VwTmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwXG4gICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICR7UFd9YCl9c3RhdGljIGFycmF5UGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBmb3JtQXJyYXlOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICAke3dXfWApfXN0YXRpYyBkaXNhYmxlZEF0dHJXYXJuaW5nKCl7Y29uc29sZS53YXJuKCJcbiAgICAgIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgd2l0aCBhIHJlYWN0aXZlIGZvcm0gZGlyZWN0aXZlLiBJZiB5b3Ugc2V0IGRpc2FibGVkIHRvIHRydWVcbiAgICAgIHdoZW4geW91IHNldCB1cCB0aGlzIGNvbnRyb2wgaW4geW91ciBjb21wb25lbnQgY2xhc3MsIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgd2lsbCBhY3R1YWxseSBiZSBzZXQgaW4gdGhlIERPTSBmb3JcbiAgICAgIHlvdS4gV2UgcmVjb21tZW5kIHVzaW5nIHRoaXMgYXBwcm9hY2ggdG8gYXZvaWQgJ2NoYW5nZWQgYWZ0ZXIgY2hlY2tlZCcgZXJyb3JzLlxuXG4gICAgICBFeGFtcGxlOlxuICAgICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBmaXJzdDogbmV3IEZvcm1Db250cm9sKHt2YWx1ZTogJ05hbmN5JywgZGlzYWJsZWQ6IHRydWV9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgbGFzdDogbmV3IEZvcm1Db250cm9sKCdEcmV3JywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICAgIH0pO1xuICAgICIpfXN0YXRpYyBuZ01vZGVsV2FybmluZyh0KXtjb25zb2xlLndhcm4oYFxuICAgIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIG5nTW9kZWwgb24gdGhlIHNhbWUgZm9ybSBmaWVsZCBhcyAke3R9LlxuICAgIFN1cHBvcnQgZm9yIHVzaW5nIHRoZSBuZ01vZGVsIGlucHV0IHByb3BlcnR5IGFuZCBuZ01vZGVsQ2hhbmdlIGV2ZW50IHdpdGhcbiAgICByZWFjdGl2ZSBmb3JtIGRpcmVjdGl2ZXMgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBBbmd1bGFyIHY2IGFuZCB3aWxsIGJlIHJlbW92ZWRcbiAgICBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIEFuZ3VsYXIuXG5cbiAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBzZWUgb3VyIEFQSSBkb2NzIGhlcmU6XG4gICAgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9mb3Jtcy8keyJmb3JtQ29udHJvbCI9PT10PyJGb3JtQ29udHJvbERpcmVjdGl2ZSI6IkZvcm1Db250cm9sTmFtZSJ9I3VzZS13aXRoLW5nbW9kZWxcbiAgICBgKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFJXKHQsZSl7cmV0dXJuWy4uLmUucGF0aCx0XX1mdW5jdGlvbiBFVyh0LGUpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKHR8fEZXKGUsIkNhbm5vdCBmaW5kIGNvbnRyb2wgd2l0aCIpLGUudmFsdWVBY2Nlc3Nvcnx8RlcoZSwiTm8gdmFsdWUgYWNjZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3aXRoIikpLE5XKHQsZSksZS52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodC52YWx1ZSksKGZ1bmN0aW9uIG4odCxlKXtlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZSgobj0+e3QuX3BlbmRpbmdWYWx1ZT1uLHQuX3BlbmRpbmdDaGFuZ2U9ITAsdC5fcGVuZGluZ0RpcnR5PSEwLCJjaGFuZ2UiPT09dC51cGRhdGVPbiYmSVcodCxlKX0pKX0pKHQsZSksKGZ1bmN0aW9uIG8odCxlKXtjb25zdCBuPSh0LG4pPT57ZS52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodCksbiYmZS52aWV3VG9Nb2RlbFVwZGF0ZSh0KX07dC5yZWdpc3Rlck9uQ2hhbmdlKG4pLGUuX3JlZ2lzdGVyT25EZXN0cm95KCgoKT0+e3QuX3VucmVnaXN0ZXJPbkNoYW5nZShuKX0pKX0pKHQsZSksKGZ1bmN0aW9uIGkodCxlKXtlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoKCgpPT57dC5fcGVuZGluZ1RvdWNoZWQ9ITAsImJsdXIiPT09dC51cGRhdGVPbiYmdC5fcGVuZGluZ0NoYW5nZSYmSVcodCxlKSwic3VibWl0IiE9PXQudXBkYXRlT24mJnQubWFya0FzVG91Y2hlZCgpfSkpfSkodCxlKSwoZnVuY3Rpb24gYSh0LGUpe2lmKGUudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKXtjb25zdCBuPXQ9PntlLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSh0KX07dC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UobiksZS5fcmVnaXN0ZXJPbkRlc3Ryb3koKCgpPT57dC5fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2Uobil9KSl9fSkodCxlKX1mdW5jdGlvbiBBVyh0LGUsbj0hMCl7Y29uc3Qgbz0oKT0+e24mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIEZXKGUsIlRoZXJlIGlzIG5vIEZvcm1Db250cm9sIGluc3RhbmNlIGF0dGFjaGVkIHRvIGZvcm0gY29udHJvbCBlbGVtZW50IHdpdGgiKX0pKGUpfTtlLnZhbHVlQWNjZXNzb3ImJihlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZShvKSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQobykpLHpXKHQsZSksdCYmKGUuX2ludm9rZU9uRGVzdHJveUNhbGxiYWNrcygpLHQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSl9ZnVuY3Rpb24gVFcodCxlKXt0LmZvckVhY2goKHQ9Pnt0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShlKX0pKX1mdW5jdGlvbiBOVyh0LGUpe2NvbnN0IG49ZFcodCk7bnVsbCE9PWUudmFsaWRhdG9yP3Quc2V0VmFsaWRhdG9ycyhjVyhuLGUudmFsaWRhdG9yKSk6ImZ1bmN0aW9uIj09dHlwZW9mIG4mJnQuc2V0VmFsaWRhdG9ycyhbbl0pO2NvbnN0IG89cFcodCk7bnVsbCE9PWUuYXN5bmNWYWxpZGF0b3I/dC5zZXRBc3luY1ZhbGlkYXRvcnMoY1cobyxlLmFzeW5jVmFsaWRhdG9yKSk6ImZ1bmN0aW9uIj09dHlwZW9mIG8mJnQuc2V0QXN5bmNWYWxpZGF0b3JzKFtvXSk7Y29uc3QgaT0oKT0+dC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7VFcoZS5fcmF3VmFsaWRhdG9ycyxpKSxUVyhlLl9yYXdBc3luY1ZhbGlkYXRvcnMsaSl9ZnVuY3Rpb24gelcodCxlKXtsZXQgbj0hMTtpZihudWxsIT09dCl7aWYobnVsbCE9PWUudmFsaWRhdG9yKXtjb25zdCBvPWRXKHQpO2lmKEFycmF5LmlzQXJyYXkobykmJm8ubGVuZ3RoPjApe2NvbnN0IGk9by5maWx0ZXIoKHQ9PnQhPT1lLnZhbGlkYXRvcikpO2kubGVuZ3RoIT09by5sZW5ndGgmJihuPSEwLHQuc2V0VmFsaWRhdG9ycyhpKSl9fWlmKG51bGwhPT1lLmFzeW5jVmFsaWRhdG9yKXtjb25zdCBvPXBXKHQpO2lmKEFycmF5LmlzQXJyYXkobykmJm8ubGVuZ3RoPjApe2NvbnN0IGk9by5maWx0ZXIoKHQ9PnQhPT1lLmFzeW5jVmFsaWRhdG9yKSk7aS5sZW5ndGghPT1vLmxlbmd0aCYmKG49ITAsdC5zZXRBc3luY1ZhbGlkYXRvcnMoaSkpfX19Y29uc3Qgbz0oKT0+e307cmV0dXJuIFRXKGUuX3Jhd1ZhbGlkYXRvcnMsbyksVFcoZS5fcmF3QXN5bmNWYWxpZGF0b3JzLG8pLG59ZnVuY3Rpb24gSVcodCxlKXt0Ll9wZW5kaW5nRGlydHkmJnQubWFya0FzRGlydHkoKSx0LnNldFZhbHVlKHQuX3BlbmRpbmdWYWx1ZSx7ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksZS52aWV3VG9Nb2RlbFVwZGF0ZSh0Ll9wZW5kaW5nVmFsdWUpLHQuX3BlbmRpbmdDaGFuZ2U9ITF9ZnVuY3Rpb24gSFcodCxlKXtudWxsIT10fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8RlcoZSwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksTlcodCxlKX1mdW5jdGlvbiBGVyh0LGUpe2xldCBuO3Rocm93IG49dC5wYXRoLmxlbmd0aD4xP2BwYXRoOiAnJHt0LnBhdGguam9pbigiIC0+ICIpfSdgOnQucGF0aFswXT9gbmFtZTogJyR7dC5wYXRofSdgOiJ1bnNwZWNpZmllZCBuYW1lIGF0dHJpYnV0ZSIsbmV3IEVycm9yKGAke2V9ICR7bn1gKX1mdW5jdGlvbiBMVyh0LGUpe2lmKCF0Lmhhc093blByb3BlcnR5KCJtb2RlbCIpKXJldHVybiExO2NvbnN0IG49dC5tb2RlbDtyZXR1cm4hIW4uaXNGaXJzdENoYW5nZSgpfHwhT2JqZWN0LmlzKGUsbi5jdXJyZW50VmFsdWUpfWZ1bmN0aW9uIEJXKHQsZSl7dC5fc3luY1BlbmRpbmdDb250cm9scygpLGUuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5jb250cm9sOyJzdWJtaXQiPT09ZS51cGRhdGVPbiYmZS5fcGVuZGluZ0NoYW5nZSYmKHQudmlld1RvTW9kZWxVcGRhdGUoZS5fcGVuZGluZ1ZhbHVlKSxlLl9wZW5kaW5nQ2hhbmdlPSExKX0pKX1mdW5jdGlvbiBWVyh0LGUpe2lmKCFlKXJldHVybiBudWxsO2xldCBuLG8saTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fEZXKHQsIlZhbHVlIGFjY2Vzc29yIHdhcyBub3QgcHJvdmlkZWQgYXMgYW4gYXJyYXkgZm9yIGZvcm0gY29udHJvbCB3aXRoIiksZS5mb3JFYWNoKChlPT57ZS5jb25zdHJ1Y3Rvcj09PUZqP249ZTohKGZ1bmN0aW9uIGEodCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0LmNvbnN0cnVjdG9yKT09PUFqfSkoZSk/KGkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmRlcodCwiTW9yZSB0aGFuIG9uZSBjdXN0b20gdmFsdWUgYWNjZXNzb3IgbWF0Y2hlcyBmb3JtIGNvbnRyb2wgd2l0aCIpLGk9ZSk6KG8mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmRlcodCwiTW9yZSB0aGFuIG9uZSBidWlsdC1pbiB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzIGZvcm0gY29udHJvbCB3aXRoIiksbz1lKX0pKSxpfHwob3x8KG58fCgoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJkZXKHQsIk5vIHZhbGlkIHZhbHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLG51bGwpKSl9ZnVuY3Rpb24gVVcodCxlKXtjb25zdCBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9uIGpXKHQsZSxuLG8peyJuZXZlciIhPT1vJiYoKG51bGwhPT1vJiYib25jZSIhPT1vfHxlLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlKSYmKCJhbHdheXMiIT09b3x8bi5fbmdNb2RlbFdhcm5pbmdTZW50KXx8KERXLm5nTW9kZWxXYXJuaW5nKHQpLGUuX25nTW9kZWxXYXJuaW5nU2VudE9uY2U9ITAsbi5fbmdNb2RlbFdhcm5pbmdTZW50PSEwKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFdXPSJWQUxJRCIsR1c9IklOVkFMSUQiLFlXPSJQRU5ESU5HIixxVz0iRElTQUJMRUQiO2Z1bmN0aW9uIFpXKHQpe3JldHVybihRVyh0KT90LnZhbGlkYXRvcnM6dCl8fG51bGx9ZnVuY3Rpb24gWFcodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/clcodCk6dHx8bnVsbH1mdW5jdGlvbiBLVyh0LGUpe3JldHVybihRVyhlKT9lLmFzeW5jVmFsaWRhdG9yczp0KXx8bnVsbH1mdW5jdGlvbiBKVyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9sVyh0KTp0fHxudWxsfWZ1bmN0aW9uIFFXKHQpe3JldHVybiBudWxsIT10JiYhQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0fWNsYXNzICRXe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT0oKT0+e30sdGhpcy5fcGFyZW50PW51bGwsdGhpcy5wcmlzdGluZT0hMCx0aGlzLnRvdWNoZWQ9ITEsdGhpcy5fb25EaXNhYmxlZENoYW5nZT1bXSx0aGlzLl9yYXdWYWxpZGF0b3JzPXQsdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPWUsdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1YVyh0aGlzLl9yYXdWYWxpZGF0b3JzKSx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49SlcodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX1nZXQgdmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm59c2V0IHZhbGlkYXRvcih0KXt0aGlzLl9yYXdWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49dH1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufXNldCBhc3luY1ZhbGlkYXRvcih0KXt0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9dGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPXR9Z2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9wYXJlbnR9Z2V0IHZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09V1d9Z2V0IGludmFsaWQoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT1HV31nZXQgcGVuZGluZygpe3JldHVybiB0aGlzLnN0YXR1cz09WVd9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09cVd9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5zdGF0dXMhPT1xV31nZXQgZGlydHkoKXtyZXR1cm4hdGhpcy5wcmlzdGluZX1nZXQgdW50b3VjaGVkKCl7cmV0dXJuIXRoaXMudG91Y2hlZH1nZXQgdXBkYXRlT24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlT24/dGhpcy5fdXBkYXRlT246dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQudXBkYXRlT246ImNoYW5nZSJ9c2V0VmFsaWRhdG9ycyh0KXt0aGlzLl9yYXdWYWxpZGF0b3JzPXQsdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1YVyh0KX1zZXRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXQsdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPUpXKHQpfWFkZFZhbGlkYXRvcnModCl7dGhpcy5zZXRWYWxpZGF0b3JzKGZXKHQsdGhpcy5fcmF3VmFsaWRhdG9ycykpfWFkZEFzeW5jVmFsaWRhdG9ycyh0KXt0aGlzLnNldEFzeW5jVmFsaWRhdG9ycyhmVyh0LHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycykpfXJlbW92ZVZhbGlkYXRvcnModCl7dGhpcy5zZXRWYWxpZGF0b3JzKGdXKHQsdGhpcy5fcmF3VmFsaWRhdG9ycykpfXJlbW92ZUFzeW5jVmFsaWRhdG9ycyh0KXt0aGlzLnNldEFzeW5jVmFsaWRhdG9ycyhnVyh0LHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycykpfWhhc1ZhbGlkYXRvcih0KXtyZXR1cm4gdVcodGhpcy5fcmF3VmFsaWRhdG9ycyx0KX1oYXNBc3luY1ZhbGlkYXRvcih0KXtyZXR1cm4gdVcodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzLHQpfWNsZWFyVmFsaWRhdG9ycygpe3RoaXMudmFsaWRhdG9yPW51bGx9Y2xlYXJBc3luY1ZhbGlkYXRvcnMoKXt0aGlzLmFzeW5jVmFsaWRhdG9yPW51bGx9bWFya0FzVG91Y2hlZCh0PXt9KXt0aGlzLnRvdWNoZWQ9ITAsdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc1RvdWNoZWQodCl9bWFya0FsbEFzVG91Y2hlZCgpe3RoaXMubWFya0FzVG91Y2hlZCh7b25seVNlbGY6ITB9KSx0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9PnQubWFya0FsbEFzVG91Y2hlZCgpKSl9bWFya0FzVW50b3VjaGVkKHQ9e30pe3RoaXMudG91Y2hlZD0hMSx0aGlzLl9wZW5kaW5nVG91Y2hlZD0hMSx0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9Pnt0Lm1hcmtBc1VudG91Y2hlZCh7b25seVNlbGY6ITB9KX0pKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQodCl9bWFya0FzRGlydHkodD17fSl7dGhpcy5wcmlzdGluZT0hMSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzRGlydHkodCl9bWFya0FzUHJpc3RpbmUodD17fSl7dGhpcy5wcmlzdGluZT0hMCx0aGlzLl9wZW5kaW5nRGlydHk9ITEsdGhpcy5fZm9yRWFjaENoaWxkKCh0PT57dC5tYXJrQXNQcmlzdGluZSh7b25seVNlbGY6ITB9KX0pKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKHQpfW1hcmtBc1BlbmRpbmcodD17fSl7dGhpcy5zdGF0dXM9WVcsITEhPT10LmVtaXRFdmVudCYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNQZW5kaW5nKHQpfWRpc2FibGUodD17fSl7Y29uc3QgZT10aGlzLl9wYXJlbnRNYXJrZWREaXJ0eSh0Lm9ubHlTZWxmKTt0aGlzLnN0YXR1cz1xVyx0aGlzLmVycm9ycz1udWxsLHRoaXMuX2ZvckVhY2hDaGlsZCgoZT0+e2UuZGlzYWJsZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse29ubHlTZWxmOiEwfSkpfSkpLHRoaXMuX3VwZGF0ZVZhbHVlKCksITEhPT10LmVtaXRFdmVudCYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl91cGRhdGVBbmNlc3RvcnMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtza2lwUHJpc3RpbmVDaGVjazplfSkpLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaCgodD0+dCghMCkpKX1lbmFibGUodD17fSl7Y29uc3QgZT10aGlzLl9wYXJlbnRNYXJrZWREaXJ0eSh0Lm9ubHlTZWxmKTt0aGlzLnN0YXR1cz1XVyx0aGlzLl9mb3JFYWNoQ2hpbGQoKGU9PntlLmVuYWJsZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse29ubHlTZWxmOiEwfSkpfSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSksdGhpcy5fdXBkYXRlQW5jZXN0b3JzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2tpcFByaXN0aW5lQ2hlY2s6ZX0pKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVhY2goKHQ9PnQoITEpKSl9X3VwZGF0ZUFuY2VzdG9ycyh0KXt0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiYodGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodCksdC5za2lwUHJpc3RpbmVDaGVja3x8dGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSgpLHRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCgpKX1zZXRQYXJlbnQodCl7dGhpcy5fcGFyZW50PXR9dXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0PXt9KXt0aGlzLl9zZXRJbml0aWFsU3RhdHVzKCksdGhpcy5fdXBkYXRlVmFsdWUoKSx0aGlzLmVuYWJsZWQmJih0aGlzLl9jYW5jZWxFeGlzdGluZ1N1YnNjcmlwdGlvbigpLHRoaXMuZXJyb3JzPXRoaXMuX3J1blZhbGlkYXRvcigpLHRoaXMuc3RhdHVzPXRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpLHRoaXMuc3RhdHVzIT09V1cmJnRoaXMuc3RhdHVzIT09WVd8fHRoaXMuX3J1bkFzeW5jVmFsaWRhdG9yKHQuZW1pdEV2ZW50KSksITEhPT10LmVtaXRFdmVudCYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0KX1fdXBkYXRlVHJlZVZhbGlkaXR5KHQ9e2VtaXRFdmVudDohMH0pe3RoaXMuX2ZvckVhY2hDaGlsZCgoZT0+ZS5fdXBkYXRlVHJlZVZhbGlkaXR5KHQpKSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KX1fc2V0SW5pdGlhbFN0YXR1cygpe3RoaXMuc3RhdHVzPXRoaXMuX2FsbENvbnRyb2xzRGlzYWJsZWQoKT9xVzpXV31fcnVuVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMudmFsaWRhdG9yP3RoaXMudmFsaWRhdG9yKHRoaXMpOm51bGx9X3J1bkFzeW5jVmFsaWRhdG9yKHQpe2lmKHRoaXMuYXN5bmNWYWxpZGF0b3Ipe3RoaXMuc3RhdHVzPVlXLHRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMDtjb25zdCBlPWVXKHRoaXMuYXN5bmNWYWxpZGF0b3IodGhpcykpO3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbj1lLnN1YnNjcmliZSgoZT0+e3RoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMSx0aGlzLnNldEVycm9ycyhlLHtlbWl0RXZlbnQ6dH0pfSkpfX1fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKXt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24mJih0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEpfXNldEVycm9ycyh0LGU9e30pe3RoaXMuZXJyb3JzPXQsdGhpcy5fdXBkYXRlQ29udHJvbHNFcnJvcnMoITEhPT1lLmVtaXRFdmVudCl9Z2V0KHQpe3JldHVybihmdW5jdGlvbiBlKHQsbixvKXtpZihudWxsPT1uKXJldHVybiBudWxsO2lmKEFycmF5LmlzQXJyYXkobil8fChuPW4uc3BsaXQobykpLEFycmF5LmlzQXJyYXkobikmJjA9PT1uLmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgaT10O3JldHVybiBuLmZvckVhY2goKHQ9PntpPWkgaW5zdGFuY2VvZiBlRz9pLmNvbnRyb2xzLmhhc093blByb3BlcnR5KHQpP2kuY29udHJvbHNbdF06bnVsbDppIGluc3RhbmNlb2YgbkcmJmkuYXQodCl8fG51bGx9KSksaX0pKHRoaXMsdCwiLiIpfWdldEVycm9yKHQsZSl7Y29uc3Qgbj1lP3RoaXMuZ2V0KGUpOnRoaXM7cmV0dXJuIG4mJm4uZXJyb3JzP24uZXJyb3JzW3RdOm51bGx9aGFzRXJyb3IodCxlKXtyZXR1cm4hIXRoaXMuZ2V0RXJyb3IodCxlKX1nZXQgcm9vdCgpe2xldCB0PXRoaXM7Zm9yKDt0Ll9wYXJlbnQ7KXQ9dC5fcGFyZW50O3JldHVybiB0fV91cGRhdGVDb250cm9sc0Vycm9ycyh0KXt0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0JiZ0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cyksdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKHQpfV9pbml0T2JzZXJ2YWJsZXMoKXt0aGlzLnZhbHVlQ2hhbmdlcz1uZXcgU3ksdGhpcy5zdGF0dXNDaGFuZ2VzPW5ldyBTeX1fY2FsY3VsYXRlU3RhdHVzKCl7cmV0dXJuIHRoaXMuX2FsbENvbnRyb2xzRGlzYWJsZWQoKT9xVzp0aGlzLmVycm9ycz9HVzp0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3J8fHRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhZVyk/WVc6dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKEdXKT9HVzpXV31fYW55Q29udHJvbHNIYXZlU3RhdHVzKHQpe3JldHVybiB0aGlzLl9hbnlDb250cm9scygoZT0+ZS5zdGF0dXM9PT10KSl9X2FueUNvbnRyb2xzRGlydHkoKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoKHQ9PnQuZGlydHkpKX1fYW55Q29udHJvbHNUb3VjaGVkKCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKCh0PT50LnRvdWNoZWQpKX1fdXBkYXRlUHJpc3RpbmUodD17fSl7dGhpcy5wcmlzdGluZT0hdGhpcy5fYW55Q29udHJvbHNEaXJ0eSgpLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUodCl9X3VwZGF0ZVRvdWNoZWQodD17fSl7dGhpcy50b3VjaGVkPXRoaXMuX2FueUNvbnRyb2xzVG91Y2hlZCgpLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCh0KX1faXNCb3hlZFZhbHVlKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJjI9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGgmJiJ2YWx1ZSJpbiB0JiYiZGlzYWJsZWQiaW4gdH1fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodCl7dGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPXR9X3NldFVwZGF0ZVN0cmF0ZWd5KHQpe1FXKHQpJiZudWxsIT10LnVwZGF0ZU9uJiYodGhpcy5fdXBkYXRlT249dC51cGRhdGVPbil9X3BhcmVudE1hcmtlZERpcnR5KHQpe3JldHVybiF0JiYhISh0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5kaXJ0eSkmJiF0aGlzLl9wYXJlbnQuX2FueUNvbnRyb2xzRGlydHkoKX19Y2xhc3MgdEcgZXh0ZW5kcyAkV3tjb25zdHJ1Y3Rvcih0PW51bGwsZSxuKXtzdXBlcihaVyhlKSxLVyhuLGUpKSx0aGlzLl9vbkNoYW5nZT1bXSx0aGlzLl9hcHBseUZvcm1TdGF0ZSh0KSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohIXRoaXMuYXN5bmNWYWxpZGF0b3J9KX1zZXRWYWx1ZSh0LGU9e30pe3RoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXQsdGhpcy5fb25DaGFuZ2UubGVuZ3RoJiYhMSE9PWUuZW1pdE1vZGVsVG9WaWV3Q2hhbmdlJiZ0aGlzLl9vbkNoYW5nZS5mb3JFYWNoKCh0PT50KHRoaXMudmFsdWUsITEhPT1lLmVtaXRWaWV3VG9Nb2RlbENoYW5nZSkpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9cGF0Y2hWYWx1ZSh0LGU9e30pe3RoaXMuc2V0VmFsdWUodCxlKX1yZXNldCh0PW51bGwsZT17fSl7dGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5tYXJrQXNQcmlzdGluZShlKSx0aGlzLm1hcmtBc1VudG91Y2hlZChlKSx0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUsZSksdGhpcy5fcGVuZGluZ0NoYW5nZT0hMX1fdXBkYXRlVmFsdWUoKXt9X2FueUNvbnRyb2xzKHQpe3JldHVybiExfV9hbGxDb250cm9sc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZS5wdXNoKHQpfV91bnJlZ2lzdGVyT25DaGFuZ2UodCl7VVcodGhpcy5fb25DaGFuZ2UsdCl9cmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKHQpe3RoaXMuX29uRGlzYWJsZWRDaGFuZ2UucHVzaCh0KX1fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodCl7VVcodGhpcy5fb25EaXNhYmxlZENoYW5nZSx0KX1fZm9yRWFjaENoaWxkKHQpe31fc3luY1BlbmRpbmdDb250cm9scygpe3JldHVybiEoInN1Ym1pdCIhPT10aGlzLnVwZGF0ZU9ufHwodGhpcy5fcGVuZGluZ0RpcnR5JiZ0aGlzLm1hcmtBc0RpcnR5KCksdGhpcy5fcGVuZGluZ1RvdWNoZWQmJnRoaXMubWFya0FzVG91Y2hlZCgpLCF0aGlzLl9wZW5kaW5nQ2hhbmdlKSkmJih0aGlzLnNldFZhbHVlKHRoaXMuX3BlbmRpbmdWYWx1ZSx7b25seVNlbGY6ITAsZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksITApfV9hcHBseUZvcm1TdGF0ZSh0KXt0aGlzLl9pc0JveGVkVmFsdWUodCk/KHRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXQudmFsdWUsdC5kaXNhYmxlZD90aGlzLmRpc2FibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0pOnRoaXMuZW5hYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSk6dGhpcy52YWx1ZT10aGlzLl9wZW5kaW5nVmFsdWU9dH19Y2xhc3MgZUcgZXh0ZW5kcyAkV3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoWlcoZSksS1cobixlKSksdGhpcy5jb250cm9scz10LHRoaXMuX2luaXRPYnNlcnZhYmxlcygpLHRoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KGUpLHRoaXMuX3NldFVwQ29udHJvbHMoKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohIXRoaXMuYXN5bmNWYWxpZGF0b3J9KX1yZWdpc3RlckNvbnRyb2wodCxlKXtyZXR1cm4gdGhpcy5jb250cm9sc1t0XT90aGlzLmNvbnRyb2xzW3RdOih0aGlzLmNvbnRyb2xzW3RdPWUsZS5zZXRQYXJlbnQodGhpcyksZS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSxlKX1hZGRDb250cm9sKHQsZSxuPXt9KXt0aGlzLnJlZ2lzdGVyQ29udHJvbCh0LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50Om4uZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9cmVtb3ZlQ29udHJvbCh0LGU9e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSxkZWxldGUgdGhpcy5jb250cm9sc1t0XSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDplLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfXNldENvbnRyb2wodCxlLG49e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSxkZWxldGUgdGhpcy5jb250cm9sc1t0XSxlJiZ0aGlzLnJlZ2lzdGVyQ29udHJvbCh0LGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50Om4uZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9Y29udGFpbnModCl7cmV0dXJuIHRoaXMuY29udHJvbHMuaGFzT3duUHJvcGVydHkodCkmJnRoaXMuY29udHJvbHNbdF0uZW5hYmxlZH1zZXRWYWx1ZSh0LGU9e30pe3RoaXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57dGhpcy5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKG4pLHRoaXMuY29udHJvbHNbbl0uc2V0VmFsdWUodFtuXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfXBhdGNoVmFsdWUodCxlPXt9KXtudWxsIT10JiYoT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e3RoaXMuY29udHJvbHNbbl0mJnRoaXMuY29udHJvbHNbbl0ucGF0Y2hWYWx1ZSh0W25dLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSkpfXJlc2V0KHQ9e30sZT17fSl7dGhpcy5fZm9yRWFjaENoaWxkKCgobixvKT0+e24ucmVzZXQodFtvXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy5fdXBkYXRlUHJpc3RpbmUoZSksdGhpcy5fdXBkYXRlVG91Y2hlZChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9Z2V0UmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5fcmVkdWNlQ2hpbGRyZW4oe30sKCh0LGUsbik9Pih0W25dPWUgaW5zdGFuY2VvZiB0Rz9lLnZhbHVlOmUuZ2V0UmF3VmFsdWUoKSx0KSkpfV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7bGV0IHQ9dGhpcy5fcmVkdWNlQ2hpbGRyZW4oITEsKCh0LGUpPT4hIWUuX3N5bmNQZW5kaW5nQ29udHJvbHMoKXx8dCkpO3JldHVybiB0JiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksdH1fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKHQpe2lmKCFPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJcbiAgICAgICAgVGhlcmUgYXJlIG5vIGZvcm0gY29udHJvbHMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgZ3JvdXAgeWV0LiBJZiB5b3UncmUgdXNpbmcgbmdNb2RlbCxcbiAgICAgICAgeW91IG1heSB3YW50IHRvIGNoZWNrIG5leHQgdGljayAoZS5nLiB1c2Ugc2V0VGltZW91dCkuXG4gICAgICAiKTtpZighdGhpcy5jb250cm9sc1t0XSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGZvcm0gY29udHJvbCB3aXRoIG5hbWU6ICR7dH0uYCl9X2ZvckVhY2hDaGlsZCh0KXtPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKChlPT57Y29uc3Qgbj10aGlzLmNvbnRyb2xzW2VdO24mJnQobixlKX0pKX1fc2V0VXBDb250cm9scygpe3RoaXMuX2ZvckVhY2hDaGlsZCgodD0+e3Quc2V0UGFyZW50KHRoaXMpLHQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSl9KSl9X3VwZGF0ZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLl9yZWR1Y2VWYWx1ZSgpfV9hbnlDb250cm9scyh0KXtmb3IoY29uc3QgZSBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKSl7Y29uc3Qgbj10aGlzLmNvbnRyb2xzW2VdO2lmKHRoaXMuY29udGFpbnMoZSkmJnQobikpcmV0dXJuITB9cmV0dXJuITF9X3JlZHVjZVZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LCgodCxlLG4pPT4oKGUuZW5hYmxlZHx8dGhpcy5kaXNhYmxlZCkmJih0W25dPWUudmFsdWUpLHQpKSl9X3JlZHVjZUNoaWxkcmVuKHQsZSl7bGV0IG49dDtyZXR1cm4gdGhpcy5fZm9yRWFjaENoaWxkKCgodCxvKT0+e249ZShuLHQsbyl9KSksbn1fYWxsQ29udHJvbHNEaXNhYmxlZCgpe2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpKWlmKHRoaXMuY29udHJvbHNbdF0uZW5hYmxlZClyZXR1cm4hMTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9X2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KXt0aGlzLl9mb3JFYWNoQ2hpbGQoKChlLG4pPT57aWYodm9pZCAwPT09dFtuXSl0aHJvdyBuZXcgRXJyb3IoYE11c3Qgc3VwcGx5IGEgdmFsdWUgZm9yIGZvcm0gY29udHJvbCB3aXRoIG5hbWU6ICcke259Jy5gKX0pKX19Y2xhc3MgbkcgZXh0ZW5kcyAkV3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoWlcoZSksS1cobixlKSksdGhpcy5jb250cm9scz10LHRoaXMuX2luaXRPYnNlcnZhYmxlcygpLHRoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KGUpLHRoaXMuX3NldFVwQ29udHJvbHMoKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohIXRoaXMuYXN5bmNWYWxpZGF0b3J9KX1hdCh0KXtyZXR1cm4gdGhpcy5jb250cm9sc1t0XX1wdXNoKHQsZT17fSl7dGhpcy5jb250cm9scy5wdXNoKHQpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbCh0KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDplLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfWluc2VydCh0LGUsbj17fSl7dGhpcy5jb250cm9scy5zcGxpY2UodCwwLGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpuLmVtaXRFdmVudH0pfXJlbW92ZUF0KHQsZT17fSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX1zZXRDb250cm9sKHQsZSxuPXt9KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSxlJiYodGhpcy5jb250cm9scy5zcGxpY2UodCwwLGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6bi5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RofXNldFZhbHVlKHQsZT17fSl7dGhpcy5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpLHQuZm9yRWFjaCgoKHQsbik9Pnt0aGlzLl90aHJvd0lmQ29udHJvbE1pc3NpbmcobiksdGhpcy5hdChuKS5zZXRWYWx1ZSh0LHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9cGF0Y2hWYWx1ZSh0LGU9e30pe251bGwhPXQmJih0LmZvckVhY2goKCh0LG4pPT57dGhpcy5hdChuKSYmdGhpcy5hdChuKS5wYXRjaFZhbHVlKHQse29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKSl9cmVzZXQodD1bXSxlPXt9KXt0aGlzLl9mb3JFYWNoQ2hpbGQoKChuLG8pPT57bi5yZXNldCh0W29dLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pKSx0aGlzLl91cGRhdGVQcmlzdGluZShlKSx0aGlzLl91cGRhdGVUb3VjaGVkKGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX1nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLmNvbnRyb2xzLm1hcCgodD0+dCBpbnN0YW5jZW9mIHRHP3QudmFsdWU6dC5nZXRSYXdWYWx1ZSgpKSl9Y2xlYXIodD17fSl7dGhpcy5jb250cm9scy5sZW5ndGg8MXx8KHRoaXMuX2ZvckVhY2hDaGlsZCgodD0+dC5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpKSksdGhpcy5jb250cm9scy5zcGxpY2UoMCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KSl9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtsZXQgdD10aGlzLmNvbnRyb2xzLnJlZHVjZSgoKHQsZSk9PiEhZS5fc3luY1BlbmRpbmdDb250cm9scygpfHx0KSwhMSk7cmV0dXJuIHQmJnRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITB9KSx0fV90aHJvd0lmQ29udHJvbE1pc3NpbmcodCl7aWYoIXRoaXMuY29udHJvbHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGFycmF5IHlldC4gSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuYXQodCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgYXQgaW5kZXggJHt0fWApfV9mb3JFYWNoQ2hpbGQodCl7dGhpcy5jb250cm9scy5mb3JFYWNoKCgoZSxuKT0+e3QoZSxuKX0pKX1fdXBkYXRlVmFsdWUoKXt0aGlzLnZhbHVlPXRoaXMuY29udHJvbHMuZmlsdGVyKCh0PT50LmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpKS5tYXAoKHQ9PnQudmFsdWUpKX1fYW55Q29udHJvbHModCl7cmV0dXJuIHRoaXMuY29udHJvbHMuc29tZSgoZT0+ZS5lbmFibGVkJiZ0KGUpKSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9PnRoaXMuX3JlZ2lzdGVyQ29udHJvbCh0KSkpfV9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCl7dGhpcy5fZm9yRWFjaENoaWxkKCgoZSxuKT0+e2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IEVycm9yKGBNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgYXQgaW5kZXg6ICR7bn0uYCl9KSl9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IoY29uc3QgdCBvZiB0aGlzLmNvbnRyb2xzKWlmKHQuZW5hYmxlZClyZXR1cm4hMTtyZXR1cm4gdGhpcy5jb250cm9scy5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH1fcmVnaXN0ZXJDb250cm9sKHQpe3Quc2V0UGFyZW50KHRoaXMpLHQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBvRz17cHJvdmlkZTpiVyx1c2VFeGlzdGluZzokZSgoKCk9PmFHKSl9LGlHPVByb21pc2UucmVzb2x2ZShudWxsKTtjbGFzcyBhRyBleHRlbmRzIGJXe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnN1Ym1pdHRlZD0hMSx0aGlzLl9kaXJlY3RpdmVzPVtdLHRoaXMubmdTdWJtaXQ9bmV3IFN5LHRoaXMuZm9ybT1uZXcgZUcoe30sclcodCksbFcoZSkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KCl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpc31nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19Z2V0IHBhdGgoKXtyZXR1cm5bXX1nZXQgY29udHJvbHMoKXtyZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzfWFkZENvbnRyb2wodCl7aUcudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTt0LmNvbnRyb2w9ZS5yZWdpc3RlckNvbnRyb2wodC5uYW1lLHQuY29udHJvbCksRVcodC5jb250cm9sLHQpLHQuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLl9kaXJlY3RpdmVzLnB1c2godCl9KSl9Z2V0Q29udHJvbCh0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfXJlbW92ZUNvbnRyb2wodCl7aUcudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTtlJiZlLnJlbW92ZUNvbnRyb2wodC5uYW1lKSxVVyh0aGlzLl9kaXJlY3RpdmVzLHQpfSkpfWFkZEZvcm1Hcm91cCh0KXtpRy50aGVuKCgoKT0+e2NvbnN0IGU9dGhpcy5fZmluZENvbnRhaW5lcih0LnBhdGgpLG49bmV3IGVHKHt9KTtIVyhuLHQpLGUucmVnaXN0ZXJDb250cm9sKHQubmFtZSxuKSxuLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSkpfXJlbW92ZUZvcm1Hcm91cCh0KXtpRy50aGVuKCgoKT0+e2NvbnN0IGU9dGhpcy5fZmluZENvbnRhaW5lcih0LnBhdGgpO2UmJmUucmVtb3ZlQ29udHJvbCh0Lm5hbWUpfSkpfWdldEZvcm1Hcm91cCh0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfXVwZGF0ZU1vZGVsKHQsZSl7aUcudGhlbigoKCk9Pnt0aGlzLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9KSl9c2V0VmFsdWUodCl7dGhpcy5jb250cm9sLnNldFZhbHVlKHQpfW9uU3VibWl0KHQpe3JldHVybiB0aGlzLnN1Ym1pdHRlZD0hMCxCVyh0aGlzLmZvcm0sdGhpcy5fZGlyZWN0aXZlcyksdGhpcy5uZ1N1Ym1pdC5lbWl0KHQpLCExfW9uUmVzZXQoKXt0aGlzLnJlc2V0Rm9ybSgpfXJlc2V0Rm9ybSh0KXt0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5zdWJtaXR0ZWQ9ITF9X3NldFVwZGF0ZVN0cmF0ZWd5KCl7dGhpcy5vcHRpb25zJiZudWxsIT10aGlzLm9wdGlvbnMudXBkYXRlT24mJih0aGlzLmZvcm0uX3VwZGF0ZU9uPXRoaXMub3B0aW9ucy51cGRhdGVPbil9X2ZpbmRDb250YWluZXIodCl7cmV0dXJuIHQucG9wKCksdC5sZW5ndGg/dGhpcy5mb3JtLmdldCh0KTp0aGlzLmZvcm19fWFHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhRykoZnUoVmosMTApLGZ1KFVqLDEwKSl9LGFHLsm1ZGlyPWhvKHt0eXBlOmFHLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywiZm9ybUdyb3VwIiwiIl0sWyJuZy1mb3JtIl0sWyIiLCJuZ0Zvcm0iLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJzdWJtaXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU3VibWl0KGUpfSkpKCJyZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2V0KCl9KSl9LGlucHV0czp7b3B0aW9uczpbIm5nRm9ybU9wdGlvbnMiLCJvcHRpb25zIl19LG91dHB1dHM6e25nU3VibWl0OiJuZ1N1Ym1pdCJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W1VoKFtvR10pLFFwXX0pLGFHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltWal19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltVal19XX1dLGFHLnByb3BEZWNvcmF0b3JzPXtvcHRpb25zOlt7dHlwZTpSXyxhcmdzOlsibmdGb3JtT3B0aW9ucyJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYUcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiZm9ybTpub3QoW25nTm9Gb3JtXSk6bm90KFtmb3JtR3JvdXBdKSxuZy1mb3JtLFtuZ0Zvcm1dIixwcm92aWRlcnM6W29HXSxob3N0OnsiKHN1Ym1pdCkiOiJvblN1Ym1pdCgkZXZlbnQpIiwiKHJlc2V0KSI6Im9uUmVzZXQoKSJ9LG91dHB1dHM6WyJuZ1N1Ym1pdCJdLGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltWal19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltVal19XX1dfSkse29wdGlvbnM6W3t0eXBlOlJfLGFyZ3M6WyJuZ0Zvcm1PcHRpb25zIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgckcgZXh0ZW5kcyBiV3tuZ09uSW5pdCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRGb3JtR3JvdXAodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3JtR3JvdXAodGhpcyl9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldEZvcm1Hcm91cCh0aGlzKX1nZXQgcGF0aCgpe3JldHVybiBSVyhudWxsPT10aGlzLm5hbWU/dGhpcy5uYW1lOnRoaXMubmFtZS50b1N0cmluZygpLHRoaXMuX3BhcmVudCl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9X2NoZWNrUGFyZW50VHlwZSgpe319ckcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKHJHKSkpKG58fHJHKX19KSgpLHJHLsm1ZGlyPWhvKHt0eXBlOnJHLGZlYXR1cmVzOltRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHJHLFt7dHlwZTprX31dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBzR3tzdGF0aWMgbW9kZWxQYXJlbnRFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFRyeSB1c2luZ1xuICAgICAgZm9ybUdyb3VwJ3MgcGFydG5lciBkaXJlY3RpdmUgImZvcm1Db250cm9sTmFtZSIgaW5zdGVhZC4gIEV4YW1wbGU6XG5cbiAgICAgICR7T1d9XG5cbiAgICAgIE9yLCBpZiB5b3UnZCBsaWtlIHRvIGF2b2lkIHJlZ2lzdGVyaW5nIHRoaXMgZm9ybSBjb250cm9sLCBpbmRpY2F0ZSB0aGF0IGl0J3Mgc3RhbmRhbG9uZSBpbiBuZ01vZGVsT3B0aW9uczpcblxuICAgICAgRXhhbXBsZTpcblxuICAgICAgJHtTV31gKX1zdGF0aWMgZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgXG4gICAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGZvcm0gY29udHJvbHMgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXBOYW1lIG9yIGZvcm1BcnJheU5hbWUgZGlyZWN0aXZlLlxuXG4gICAgICBPcHRpb24gMTogVXNlIGZvcm1Db250cm9sTmFtZSBpbnN0ZWFkIG9mIG5nTW9kZWwgKHJlYWN0aXZlIHN0cmF0ZWd5KTpcblxuICAgICAgJHtQV31cblxuICAgICAgT3B0aW9uIDI6ICBVcGRhdGUgbmdNb2RlbCdzIHBhcmVudCBiZSBuZ01vZGVsR3JvdXAgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSk6XG5cbiAgICAgICR7a1d9YCl9c3RhdGljIG1pc3NpbmdOYW1lRXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdJZiBuZ01vZGVsIGlzIHVzZWQgd2l0aGluIGEgZm9ybSB0YWcsIGVpdGhlciB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgb3IgdGhlIGZvcm1cbiAgICAgIGNvbnRyb2wgbXVzdCBiZSBkZWZpbmVkIGFzIFwnc3RhbmRhbG9uZVwnIGluIG5nTW9kZWxPcHRpb25zLlxuXG4gICAgICBFeGFtcGxlIDE6IDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLmZpcnN0TmFtZSIgbmFtZT0iZmlyc3QiPlxuICAgICAgRXhhbXBsZSAyOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIFtuZ01vZGVsT3B0aW9uc109IntzdGFuZGFsb25lOiB0cnVlfSI+Jyl9c3RhdGljIG1vZGVsR3JvdXBQYXJlbnRFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgbmdNb2RlbEdyb3VwIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBmb3JtR3JvdXBOYW1lIGluc3RlYWQgb2YgbmdNb2RlbEdyb3VwIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICR7UFd9XG5cbiAgICAgIE9wdGlvbiAyOiAgVXNlIGEgcmVndWxhciBmb3JtIHRhZyBpbnN0ZWFkIG9mIHRoZSBmb3JtR3JvdXAgZGlyZWN0aXZlICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAke2tXfWApfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgbEc9e3Byb3ZpZGU6YlcsdXNlRXhpc3Rpbmc6JGUoKCgpPT5jRykpfTtjbGFzcyBjRyBleHRlbmRzIHJHe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pfV9jaGVja1BhcmVudFR5cGUoKXt0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBjR3x8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgYUd8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxzRy5tb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uKCl9fWNHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjRykoZnUoYlcsNSksZnUoVmosMTApLGZ1KFVqLDEwKSl9LGNHLsm1ZGlyPWhvKHt0eXBlOmNHLHNlbGVjdG9yczpbWyIiLCJuZ01vZGVsR3JvdXAiLCIiXV0saW5wdXRzOntuYW1lOlsibmdNb2RlbEdyb3VwIiwibmFtZSJdfSxleHBvcnRBczpbIm5nTW9kZWxHcm91cCJdLGZlYXR1cmVzOltVaChbbEddKSxRcF19KSxjRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmJXLGRlY29yYXRvcnM6W3t0eXBlOmpyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfV0sY0cucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJuZ01vZGVsR3JvdXAiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGNHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltuZ01vZGVsR3JvdXBdIixwcm92aWRlcnM6W2xHXSxleHBvcnRBczoibmdNb2RlbEdyb3VwIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmJXLGRlY29yYXRvcnM6W3t0eXBlOmpyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfV19KSx7bmFtZTpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWxHcm91cCJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGRHPXtwcm92aWRlOnlXLHVzZUV4aXN0aW5nOiRlKCgoKT0+bUcpKX0scEc9UHJvbWlzZS5yZXNvbHZlKG51bGwpO2NsYXNzIG1HIGV4dGVuZHMgeVd7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoKSx0aGlzLmNvbnRyb2w9bmV3IHRHLHRoaXMuX3JlZ2lzdGVyZWQ9ITEsdGhpcy51cGRhdGU9bmV3IFN5LHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pLHRoaXMudmFsdWVBY2Nlc3Nvcj1WVyh0aGlzLG8pfW5nT25DaGFuZ2VzKHQpe3RoaXMuX2NoZWNrRm9yRXJyb3JzKCksdGhpcy5fcmVnaXN0ZXJlZHx8dGhpcy5fc2V0VXBDb250cm9sKCksImlzRGlzYWJsZWQiaW4gdCYmdGhpcy5fdXBkYXRlRGlzYWJsZWQodCksTFcodCx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLl91cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fcGFyZW50P1JXKHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpOlt0aGlzLm5hbWVdfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfXZpZXdUb01vZGVsVXBkYXRlKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX1fc2V0VXBDb250cm9sKCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKSx0aGlzLl9pc1N0YW5kYWxvbmUoKT90aGlzLl9zZXRVcFN0YW5kYWxvbmUoKTp0aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLl9yZWdpc3RlcmVkPSEwfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5jb250cm9sLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9pc1N0YW5kYWxvbmUoKXtyZXR1cm4hdGhpcy5fcGFyZW50fHwhKCF0aGlzLm9wdGlvbnN8fCF0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSl9X3NldFVwU3RhbmRhbG9uZSgpe0VXKHRoaXMuY29udHJvbCx0aGlzKSx0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X2NoZWNrRm9yRXJyb3JzKCl7dGhpcy5faXNTdGFuZGFsb25lKCl8fHRoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuX2NoZWNrTmFtZSgpfV9jaGVja1BhcmVudFR5cGUoKXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJighKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGNHKSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2Ygckc/c0cuZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGNHfHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBhR3x8c0cubW9kZWxQYXJlbnRFeGNlcHRpb24oKSl9X2NoZWNrTmFtZSgpe3RoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm5hbWUmJih0aGlzLm5hbWU9dGhpcy5vcHRpb25zLm5hbWUpLHRoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLm5hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxzRy5taXNzaW5nTmFtZUV4Y2VwdGlvbigpfV91cGRhdGVWYWx1ZSh0KXtwRy50aGVuKCgoKT0+e3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0LHtlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6ITF9KX0pKX1fdXBkYXRlRGlzYWJsZWQodCl7Y29uc3QgZT10LmlzRGlzYWJsZWQuY3VycmVudFZhbHVlLG49IiI9PT1lfHxlJiYiZmFsc2UiIT09ZTtwRy50aGVuKCgoKT0+e24mJiF0aGlzLmNvbnRyb2wuZGlzYWJsZWQ/dGhpcy5jb250cm9sLmRpc2FibGUoKTohbiYmdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLmNvbnRyb2wuZW5hYmxlKCl9KSl9fW1HLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtRykoZnUoYlcsOSksZnUoVmosMTApLGZ1KFVqLDEwKSxmdShUaiwxMCkpfSxtRy7JtWRpcj1obyh7dHlwZTptRyxzZWxlY3RvcnM6W1siIiwibmdNb2RlbCIsIiIsMywiZm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJmb3JtQ29udHJvbCIsIiJdXSxpbnB1dHM6e25hbWU6Im5hbWUiLGlzRGlzYWJsZWQ6WyJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdLG9wdGlvbnM6WyJuZ01vZGVsT3B0aW9ucyIsIm9wdGlvbnMiXX0sb3V0cHV0czp7dXBkYXRlOiJuZ01vZGVsQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ01vZGVsIl0sZmVhdHVyZXM6W1VoKFtkR10pLFFwLHFvXX0pLG1HLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YlcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbVmpdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbVWpdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbVGpdfV19XSxtRy5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul99XSxpc0Rpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpSXyxhcmdzOlsibmdNb2RlbCJdfV0sb3B0aW9uczpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWxPcHRpb25zIl19XSx1cGRhdGU6W3t0eXBlOkVfLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbmdNb2RlbF06bm90KFtmb3JtQ29udHJvbE5hbWVdKTpub3QoW2Zvcm1Db250cm9sXSkiLHByb3ZpZGVyczpbZEddLGV4cG9ydEFzOiJuZ01vZGVsIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmJXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1RqXX1dfV19KSx7dXBkYXRlOlt7dHlwZTpFXyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV0sbmFtZTpbe3R5cGU6Ul99XSxpc0Rpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpSXyxhcmdzOlsibmdNb2RlbCJdfV0sb3B0aW9uczpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWxPcHRpb25zIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdUd7fXVHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1Ryl9LHVHLsm1ZGlyPWhvKHt0eXBlOnVHLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywibmdOYXRpdmVWYWxpZGF0ZSIsIiJdXSxob3N0QXR0cnM6WyJub3ZhbGlkYXRlIiwiIl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbbmdOYXRpdmVWYWxpZGF0ZV0pIixob3N0Ontub3ZhbGlkYXRlOiIifX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGZHPXtwcm92aWRlOlRqLHVzZUV4aXN0aW5nOiRlKCgoKT0+Z0cpKSxtdWx0aTohMH07Y2xhc3MgZ0cgZXh0ZW5kcyBBant3cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixudWxsPT10PyIiOnQpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57dCgiIj09ZT9udWxsOnBhcnNlRmxvYXQoZSkpfX19Z0cuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKGdHKSkpKG58fGdHKX19KSgpLGdHLsm1ZGlyPWhvKHt0eXBlOmdHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0sZmVhdHVyZXM6W1VoKFtmR10pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1udW1iZXJdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1udW1iZXJdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbmdNb2RlbF0iLGhvc3Q6eyIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbZkddfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgaEc9e3Byb3ZpZGU6VGosdXNlRXhpc3Rpbmc6JGUoKCgpPT5fRykpLG11bHRpOiEwfTtjbGFzcyBiR3t9YkcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGJHKX0sYkcuybVtb2Q9dW8oe3R5cGU6Ykd9KSxiRy7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihiRyxbe3R5cGU6TF99XSxudWxsLG51bGwpO2NsYXNzIHlHe2NvbnN0cnVjdG9yKCl7dGhpcy5fYWNjZXNzb3JzPVtdfWFkZCh0LGUpe3RoaXMuX2FjY2Vzc29ycy5wdXNoKFt0LGVdKX1yZW1vdmUodCl7Zm9yKGxldCBlPXRoaXMuX2FjY2Vzc29ycy5sZW5ndGgtMTtlPj0wOy0tZSlpZih0aGlzLl9hY2Nlc3NvcnNbZV1bMV09PT10KXJldHVybiB2b2lkIHRoaXMuX2FjY2Vzc29ycy5zcGxpY2UoZSwxKX1zZWxlY3QodCl7dGhpcy5fYWNjZXNzb3JzLmZvckVhY2goKGU9Pnt0aGlzLl9pc1NhbWVHcm91cChlLHQpJiZlWzFdIT09dCYmZVsxXS5maXJlVW5jaGVjayh0LnZhbHVlKX0pKX1faXNTYW1lR3JvdXAodCxlKXtyZXR1cm4hIXRbMF0uY29udHJvbCYmKHRbMF0uX3BhcmVudD09PWUuX2NvbnRyb2wuX3BhcmVudCYmdFsxXS5uYW1lPT09ZS5uYW1lKX19eUcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlHKX0seUcuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHlHfSx0b2tlbjp5Ryxwcm92aWRlZEluOmJHfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5Ryxbe3R5cGU6am0sYXJnczpbe3Byb3ZpZGVkSW46Ykd9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y2xhc3MgX0cgZXh0ZW5kcyBBantjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUpLHRoaXMuX3JlZ2lzdHJ5PW4sdGhpcy5faW5qZWN0b3I9byx0aGlzLm9uQ2hhbmdlPSgpPT57fX1uZ09uSW5pdCgpe3RoaXMuX2NvbnRyb2w9dGhpcy5faW5qZWN0b3IuZ2V0KHlXKSx0aGlzLl9jaGVja05hbWUoKSx0aGlzLl9yZWdpc3RyeS5hZGQodGhpcy5fY29udHJvbCx0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JlZ2lzdHJ5LnJlbW92ZSh0aGlzKX13cml0ZVZhbHVlKHQpe3RoaXMuX3N0YXRlPXQ9PT10aGlzLnZhbHVlLHRoaXMuc2V0UHJvcGVydHkoImNoZWNrZWQiLHRoaXMuX3N0YXRlKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2ZuPXQsdGhpcy5vbkNoYW5nZT0oKT0+e3QodGhpcy52YWx1ZSksdGhpcy5fcmVnaXN0cnkuc2VsZWN0KHRoaXMpfX1maXJlVW5jaGVjayh0KXt0aGlzLndyaXRlVmFsdWUodCl9X2NoZWNrTmFtZSgpe3RoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJnRoaXMubmFtZSE9PXRoaXMuZm9ybUNvbnRyb2xOYW1lJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiB0KCl7dGhyb3cgbmV3IEVycm9yKCdcbiAgICAgIElmIHlvdSBkZWZpbmUgYm90aCBhIG5hbWUgYW5kIGEgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJhZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVzXG4gICAgICBtdXN0IG1hdGNoLiBFeDogPGlucHV0IHR5cGU9InJhZGlvIiBmb3JtQ29udHJvbE5hbWU9ImZvb2QiIG5hbWU9ImZvb2QiPlxuICAgICcpfSkoKSwhdGhpcy5uYW1lJiZ0aGlzLmZvcm1Db250cm9sTmFtZSYmKHRoaXMubmFtZT10aGlzLmZvcm1Db250cm9sTmFtZSl9fV9HLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfRykoZnUoJGgpLGZ1KEtoKSxmdSh5RyksZnUoTnApKX0sX0cuybVkaXI9aG8oe3R5cGU6X0csc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsInJhZGlvIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJjaGFuZ2UiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25DaGFuZ2UoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0saW5wdXRzOntuYW1lOiJuYW1lIixmb3JtQ29udHJvbE5hbWU6ImZvcm1Db250cm9sTmFtZSIsdmFsdWU6InZhbHVlIn0sZmVhdHVyZXM6W1VoKFtoR10pLFFwXX0pLF9HLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JGh9LHt0eXBlOktofSx7dHlwZTp5R30se3R5cGU6TnB9XSxfRy5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Ul99XSxmb3JtQ29udHJvbE5hbWU6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoX0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPXJhZGlvXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1yYWRpb11bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbaEddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6JGh9LHt0eXBlOktofSx7dHlwZTp5R30se3R5cGU6TnB9XX0pLHtuYW1lOlt7dHlwZTpSX31dLGZvcm1Db250cm9sTmFtZTpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgQ0c9e3Byb3ZpZGU6VGosdXNlRXhpc3Rpbmc6JGUoKCgpPT5NRykpLG11bHRpOiEwfTtjbGFzcyBNRyBleHRlbmRzIEFqe3dyaXRlVmFsdWUodCl7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLHBhcnNlRmxvYXQodCkpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57dCgiIj09ZT9udWxsOnBhcnNlRmxvYXQoZSkpfX19TUcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKE1HKSkpKG58fE1HKX19KSgpLE1HLsm1ZGlyPWhvKHt0eXBlOk1HLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJyYW5nZSIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFuZ2UiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFuZ2UiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGZlYXR1cmVzOltVaChbQ0ddKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE1HLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1yYW5nZV1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9cmFuZ2VdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihpbnB1dCkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltDR119XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB2Rz1uZXcgZXIoIk5nTW9kZWxXaXRoRm9ybUNvbnRyb2xXYXJuaW5nIikseEc9e3Byb3ZpZGU6eVcsdXNlRXhpc3Rpbmc6JGUoKCgpPT5PRykpfTtjbGFzcyBPRyBleHRlbmRzIHlXe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKCksdGhpcy5fbmdNb2RlbFdhcm5pbmdDb25maWc9byx0aGlzLnVwZGF0ZT1uZXcgU3ksdGhpcy5fbmdNb2RlbFdhcm5pbmdTZW50PSExLHRoaXMuX3NldFZhbGlkYXRvcnModCksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKGUpLHRoaXMudmFsdWVBY2Nlc3Nvcj1WVyh0aGlzLG4pfXNldCBpc0Rpc2FibGVkKHQpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmRFcuZGlzYWJsZWRBdHRyV2FybmluZygpfW5nT25DaGFuZ2VzKHQpe2lmKHRoaXMuX2lzQ29udHJvbENoYW5nZWQodCkpe2NvbnN0IGU9dC5mb3JtLnByZXZpb3VzVmFsdWU7ZSYmQVcoZSx0aGlzLCExKSxFVyh0aGlzLmZvcm0sdGhpcyksdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUoITApLHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX1MVyh0LHRoaXMudmlld01vZGVsKSYmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmalcoImZvcm1Db250cm9sIixPRyx0aGlzLHRoaXMuX25nTW9kZWxXYXJuaW5nQ29uZmlnKSx0aGlzLmZvcm0uc2V0VmFsdWUodGhpcy5tb2RlbCksdGhpcy52aWV3TW9kZWw9dGhpcy5tb2RlbCl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm0mJkFXKHRoaXMuZm9ybSx0aGlzLCExKX1nZXQgcGF0aCgpe3JldHVybltdfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybX12aWV3VG9Nb2RlbFVwZGF0ZSh0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9X2lzQ29udHJvbENoYW5nZWQodCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoImZvcm0iKX19T0cuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9HKShmdShWaiwxMCksZnUoVWosMTApLGZ1KFRqLDEwKSxmdSh2Ryw4KSl9LE9HLsm1ZGlyPWhvKHt0eXBlOk9HLHNlbGVjdG9yczpbWyIiLCJmb3JtQ29udHJvbCIsIiJdXSxpbnB1dHM6e2lzRGlzYWJsZWQ6WyJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxmb3JtOlsiZm9ybUNvbnRyb2wiLCJmb3JtIl0sbW9kZWw6WyJuZ01vZGVsIiwibW9kZWwiXX0sb3V0cHV0czp7dXBkYXRlOiJuZ01vZGVsQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ0Zvcm0iXSxmZWF0dXJlczpbVWgoW3hHXSksUXAscW9dfSksT0cuX25nTW9kZWxXYXJuaW5nU2VudE9uY2U9ITEsT0cuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1RqXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3ZHXX1dfV0sT0cucHJvcERlY29yYXRvcnM9e2Zvcm06W3t0eXBlOlJfLGFyZ3M6WyJmb3JtQ29udHJvbCJdfV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9HLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbF0iLHByb3ZpZGVyczpbeEddLGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltWal19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltVal19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltUal19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt2R119XX1dfSkse3VwZGF0ZTpbe3R5cGU6RV8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJkaXNhYmxlZCJdfV0sZm9ybTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Db250cm9sIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBQRz17cHJvdmlkZTpiVyx1c2VFeGlzdGluZzokZSgoKCk9PndHKSl9O2NsYXNzIHdHIGV4dGVuZHMgYld7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMudmFsaWRhdG9ycz10LHRoaXMuYXN5bmNWYWxpZGF0b3JzPWUsdGhpcy5zdWJtaXR0ZWQ9ITEsdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPSgpPT50aGlzLl91cGRhdGVEb21WYWx1ZSgpLHRoaXMuZGlyZWN0aXZlcz1bXSx0aGlzLmZvcm09bnVsbCx0aGlzLm5nU3VibWl0PW5ldyBTeSx0aGlzLl9zZXRWYWxpZGF0b3JzKHQpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhlKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLl9jaGVja0Zvcm1QcmVzZW50KCksdC5oYXNPd25Qcm9wZXJ0eSgiZm9ybSIpJiYodGhpcy5fdXBkYXRlVmFsaWRhdG9ycygpLHRoaXMuX3VwZGF0ZURvbVZhbHVlKCksdGhpcy5fdXBkYXRlUmVnaXN0cmF0aW9ucygpLHRoaXMuX29sZEZvcm09dGhpcy5mb3JtKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybSYmKHpXKHRoaXMuZm9ybSx0aGlzKSx0aGlzLmZvcm0uX29uQ29sbGVjdGlvbkNoYW5nZT09PXRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSYmdGhpcy5mb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSkpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXN9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtfWdldCBwYXRoKCl7cmV0dXJuW119YWRkQ29udHJvbCh0KXtjb25zdCBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtyZXR1cm4gRVcoZSx0KSxlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pLHRoaXMuZGlyZWN0aXZlcy5wdXNoKHQpLGV9Z2V0Q29udHJvbCh0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfXJlbW92ZUNvbnRyb2wodCl7QVcodC5jb250cm9sfHxudWxsLHQsITEpLFVXKHRoaXMuZGlyZWN0aXZlcyx0KX1hZGRGb3JtR3JvdXAodCl7dGhpcy5fc2V0VXBGb3JtQ29udGFpbmVyKHQpfXJlbW92ZUZvcm1Hcm91cCh0KXt0aGlzLl9jbGVhblVwRm9ybUNvbnRhaW5lcih0KX1nZXRGb3JtR3JvdXAodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1hZGRGb3JtQXJyYXkodCl7dGhpcy5fc2V0VXBGb3JtQ29udGFpbmVyKHQpfXJlbW92ZUZvcm1BcnJheSh0KXt0aGlzLl9jbGVhblVwRm9ybUNvbnRhaW5lcih0KX1nZXRGb3JtQXJyYXkodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX11cGRhdGVNb2RlbCh0LGUpe3RoaXMuZm9ybS5nZXQodC5wYXRoKS5zZXRWYWx1ZShlKX1vblN1Ym1pdCh0KXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWQ9ITAsQlcodGhpcy5mb3JtLHRoaXMuZGlyZWN0aXZlcyksdGhpcy5uZ1N1Ym1pdC5lbWl0KHQpLCExfW9uUmVzZXQoKXt0aGlzLnJlc2V0Rm9ybSgpfXJlc2V0Rm9ybSh0KXt0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5zdWJtaXR0ZWQ9ITF9X3VwZGF0ZURvbVZhbHVlKCl7dGhpcy5kaXJlY3RpdmVzLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuY29udHJvbCxuPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtlIT09biYmKEFXKGV8fG51bGwsdCksbiBpbnN0YW5jZW9mIHRHJiYoRVcobix0KSx0LmNvbnRyb2w9bikpfSkpLHRoaXMuZm9ybS5fdXBkYXRlVHJlZVZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX1fc2V0VXBGb3JtQ29udGFpbmVyKHQpe2NvbnN0IGU9dGhpcy5mb3JtLmdldCh0LnBhdGgpO0hXKGUsdCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX1fY2xlYW5VcEZvcm1Db250YWluZXIodCl7aWYodGhpcy5mb3JtKXtjb25zdCBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtpZihlKXsoZnVuY3Rpb24gbih0LGUpe3JldHVybiB6Vyh0LGUpfSkoZSx0KSYmZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX19fV91cGRhdGVSZWdpc3RyYXRpb25zKCl7dGhpcy5mb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLHRoaXMuX29sZEZvcm0mJnRoaXMuX29sZEZvcm0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKX1fdXBkYXRlVmFsaWRhdG9ycygpe05XKHRoaXMuZm9ybSx0aGlzKSx0aGlzLl9vbGRGb3JtJiZ6Vyh0aGlzLl9vbGRGb3JtLHRoaXMpfV9jaGVja0Zvcm1QcmVzZW50KCl7dGhpcy5mb3JtfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8RFcubWlzc2luZ0Zvcm1FeGNlcHRpb24oKX19d0cuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdHKShmdShWaiwxMCksZnUoVWosMTApKX0sd0cuybVkaXI9aG8oe3R5cGU6d0csc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmRHUoInN1Ym1pdCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TdWJtaXQoZSl9KSkoInJlc2V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzZXQoKX0pKX0saW5wdXRzOntmb3JtOlsiZm9ybUdyb3VwIiwiZm9ybSJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBvcnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltVaChbUEddKSxRcCxxb119KSx3Ry5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbVmpdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbVWpdfV19XSx3Ry5wcm9wRGVjb3JhdG9ycz17Zm9ybTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Hcm91cCJdfV0sbmdTdWJtaXQ6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod0csW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cF0iLHByb3ZpZGVyczpbUEddLGhvc3Q6eyIoc3VibWl0KSI6Im9uU3VibWl0KCRldmVudCkiLCIocmVzZXQpIjoib25SZXNldCgpIn0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfV19KSx7Zm9ybTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Hcm91cCJdfV0sbmdTdWJtaXQ6W3t0eXBlOkVffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGtHPXtwcm92aWRlOmJXLHVzZUV4aXN0aW5nOiRlKCgoKT0+U0cpKX07Y2xhc3MgU0cgZXh0ZW5kcyByR3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKX1fY2hlY2tQYXJlbnRUeXBlKCl7RUcodGhpcy5fcGFyZW50KSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZEVy5ncm91cFBhcmVudEV4Y2VwdGlvbigpfX1TRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U0cpKGZ1KGJXLDEzKSxmdShWaiwxMCksZnUoVWosMTApKX0sU0cuybVkaXI9aG8oe3R5cGU6U0csc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cE5hbWUiLCIiXV0saW5wdXRzOntuYW1lOlsiZm9ybUdyb3VwTmFtZSIsIm5hbWUiXX0sZmVhdHVyZXM6W1VoKFtrR10pLFFwXX0pLFNHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YlcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfV0sU0cucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJmb3JtR3JvdXBOYW1lIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwTmFtZV0iLHByb3ZpZGVyczpba0ddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YlcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfV19KSx7bmFtZTpbe3R5cGU6Ul8sYXJnczpbImZvcm1Hcm91cE5hbWUiXX1dfSk7Y29uc3QgREc9e3Byb3ZpZGU6YlcsdXNlRXhpc3Rpbmc6JGUoKCgpPT5SRykpfTtjbGFzcyBSRyBleHRlbmRzIGJXe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pfW5nT25Jbml0KCl7dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5mb3JtRGlyZWN0aXZlLmFkZEZvcm1BcnJheSh0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUZvcm1BcnJheSh0aGlzKX1nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUuZ2V0Rm9ybUFycmF5KHRoaXMpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfWdldCBwYXRoKCl7cmV0dXJuIFJXKG51bGw9PXRoaXMubmFtZT90aGlzLm5hbWU6dGhpcy5uYW1lLnRvU3RyaW5nKCksdGhpcy5fcGFyZW50KX1fY2hlY2tQYXJlbnRUeXBlKCl7RUcodGhpcy5fcGFyZW50KSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZEVy5hcnJheVBhcmVudEV4Y2VwdGlvbigpfX1mdW5jdGlvbiBFRyh0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiBTR3x8dCBpbnN0YW5jZW9mIHdHfHx0IGluc3RhbmNlb2YgUkcpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9SRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UkcpKGZ1KGJXLDEzKSxmdShWaiwxMCksZnUoVWosMTApKX0sUkcuybVkaXI9aG8oe3R5cGU6Ukcsc2VsZWN0b3JzOltbIiIsImZvcm1BcnJheU5hbWUiLCIiXV0saW5wdXRzOntuYW1lOlsiZm9ybUFycmF5TmFtZSIsIm5hbWUiXX0sZmVhdHVyZXM6W1VoKFtER10pLFFwXX0pLFJHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YlcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfV0sUkcucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJfLGFyZ3M6WyJmb3JtQXJyYXlOYW1lIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZm9ybUFycmF5TmFtZV0iLHByb3ZpZGVyczpbREddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YlcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfV19KSx7bmFtZTpbe3R5cGU6Ul8sYXJnczpbImZvcm1BcnJheU5hbWUiXX1dfSk7Y29uc3QgQUc9e3Byb3ZpZGU6eVcsdXNlRXhpc3Rpbmc6JGUoKCgpPT5URykpfTtjbGFzcyBURyBleHRlbmRzIHlXe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZz1pLHRoaXMuX2FkZGVkPSExLHRoaXMudXBkYXRlPW5ldyBTeSx0aGlzLl9uZ01vZGVsV2FybmluZ1NlbnQ9ITEsdGhpcy5fcGFyZW50PXQsdGhpcy5fc2V0VmFsaWRhdG9ycyhlKSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMobiksdGhpcy52YWx1ZUFjY2Vzc29yPVZXKHRoaXMsbyl9c2V0IGlzRGlzYWJsZWQodCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZEVy5kaXNhYmxlZEF0dHJXYXJuaW5nKCl9bmdPbkNoYW5nZXModCl7dGhpcy5fYWRkZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLExXKHQsdGhpcy52aWV3TW9kZWwpJiYoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZqVygiZm9ybUNvbnRyb2xOYW1lIixURyx0aGlzLHRoaXMuX25nTW9kZWxXYXJuaW5nQ29uZmlnKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsLHRoaXMuZm9ybURpcmVjdGl2ZS51cGRhdGVNb2RlbCh0aGlzLHRoaXMubW9kZWwpKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9dmlld1RvTW9kZWxVcGRhdGUodCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfWdldCBwYXRoKCl7cmV0dXJuIFJXKG51bGw9PXRoaXMubmFtZT90aGlzLm5hbWU6dGhpcy5uYW1lLnRvU3RyaW5nKCksdGhpcy5fcGFyZW50KX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH1fY2hlY2tQYXJlbnRUeXBlKCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBTRykmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIHJHP0RXLm5nTW9kZWxHcm91cEV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIFNHfHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiB3R3x8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgUkd8fERXLmNvbnRyb2xQYXJlbnRFeGNlcHRpb24oKSl9X3NldFVwQ29udHJvbCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuY29udHJvbD10aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5fYWRkZWQ9ITB9fVRHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxURykoZnUoYlcsMTMpLGZ1KFZqLDEwKSxmdShVaiwxMCksZnUoVGosMTApLGZ1KHZHLDgpKX0sVEcuybVkaXI9aG8oe3R5cGU6VEcsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdXSxpbnB1dHM6e2lzRGlzYWJsZWQ6WyJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxuYW1lOlsiZm9ybUNvbnRyb2xOYW1lIiwibmFtZSJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGZlYXR1cmVzOltVaChbQUddKSxRcCxxb119KSxURy5fbmdNb2RlbFdhcm5pbmdTZW50T25jZT0hMSxURy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmJXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn0se3R5cGU6VXJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltWal19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltVal19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfSx7dHlwZTpMcixhcmdzOltUal19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt2R119XX1dLFRHLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUNvbnRyb2xOYW1lIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpSXyxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpSXyxhcmdzOlsibmdNb2RlbCJdfV0sdXBkYXRlOlt7dHlwZTpFXyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVEcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sTmFtZV0iLHByb3ZpZGVyczpbQUddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YlcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOmpyfSx7dHlwZTpVcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1ZqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1VqXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W1RqXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3ZHXX1dfV19KSx7dXBkYXRlOlt7dHlwZTpFXyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV0saXNEaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbImRpc2FibGVkIl19XSxuYW1lOlt7dHlwZTpSXyxhcmdzOlsiZm9ybUNvbnRyb2xOYW1lIl19XSxtb2RlbDpbe3R5cGU6Ul8sYXJnczpbIm5nTW9kZWwiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBORz17cHJvdmlkZTpUaix1c2VFeGlzdGluZzokZSgoKCk9PklHKSksbXVsdGk6ITB9O2Z1bmN0aW9uIHpHKHQsZSl7cmV0dXJuIG51bGw9PXQ/YCR7ZX1gOihlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihlPSJPYmplY3QiKSxgJHt0fTogJHtlfWAuc2xpY2UoMCw1MCkpfWNsYXNzIElHIGV4dGVuZHMgQWp7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMuX2NvbXBhcmVXaXRoPU9iamVjdC5pc31zZXQgY29tcGFyZVdpdGgodCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBuZXcgRXJyb3IoYGNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7dGhpcy5fY29tcGFyZVdpdGg9dH13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dDtjb25zdCBlPXRoaXMuX2dldE9wdGlvbklkKHQpO251bGw9PWUmJnRoaXMuc2V0UHJvcGVydHkoInNlbGVjdGVkSW5kZXgiLC0xKTtjb25zdCBuPXpHKGUsdCk7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLG4pfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57dGhpcy52YWx1ZT10aGlzLl9nZXRPcHRpb25WYWx1ZShlKSx0KHRoaXMudmFsdWUpfX1fcmVnaXN0ZXJPcHRpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCl9X2dldE9wdGlvbklkKHQpe2Zvcihjb25zdCBlIG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChlKSx0KSlyZXR1cm4gZTtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5zcGxpdCgiOiIpWzBdfSkodCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoZSk/dGhpcy5fb3B0aW9uTWFwLmdldChlKTp0fX1JRy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoSUcpKSkobnx8SUcpfX0pKCksSUcuybVkaXI9aG8oe3R5cGU6SUcsc2VsZWN0b3JzOltbInNlbGVjdCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsImZvcm1Db250cm9sIiwiIiwzLCJtdWx0aXBsZSIsIiJdLFsic2VsZWN0IiwibmdNb2RlbCIsIiIsMywibXVsdGlwbGUiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbVWgoW05HXSksUXBdfSksSUcucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdDpub3QoW211bHRpcGxlXSlbZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1Db250cm9sXSxzZWxlY3Q6bm90KFttdWx0aXBsZV0pW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltOR119XX1dLG51bGwse2NvbXBhcmVXaXRoOlt7dHlwZTpSX31dfSk7Y2xhc3MgSEd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbigpKX1zZXQgbmdWYWx1ZSh0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCx0KSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoekcodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKHQpe3RoaXMuX3NldEVsZW1lbnRWYWx1ZSh0KSx0aGlzLl9zZWxlY3QmJnRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSl9X3NldEVsZW1lbnRWYWx1ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIix0KX1uZ09uRGVzdHJveSgpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX19SEcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhHKShmdShLaCksZnUoJGgpLGZ1KElHLDkpKX0sSEcuybVkaXI9aG8oe3R5cGU6SEcsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSksSEcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6JGh9LHt0eXBlOklHLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfV0sSEcucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6Ul8sYXJnczpbInZhbHVlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJvcHRpb24ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOiRofSx7dHlwZTpJRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6anJ9XX1dfSkse25nVmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6Ul8sYXJnczpbInZhbHVlIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgRkc9e3Byb3ZpZGU6VGosdXNlRXhpc3Rpbmc6JGUoKCgpPT5CRykpLG11bHRpOiEwfTtmdW5jdGlvbiBMRyh0LGUpe3JldHVybiBudWxsPT10P2Ake2V9YDooInN0cmluZyI9PXR5cGVvZiBlJiYoZT1gJyR7ZX0nYCksZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYoZT0iT2JqZWN0IiksYCR7dH06ICR7ZX1gLnNsaWNlKDAsNTApKX1jbGFzcyBCRyBleHRlbmRzIEFqe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLl9jb21wYXJlV2l0aD1PYmplY3QuaXN9c2V0IGNvbXBhcmVXaXRoKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKGBjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfWApO3RoaXMuX2NvbXBhcmVXaXRoPXR9d3JpdGVWYWx1ZSh0KXtsZXQgZTtpZih0aGlzLnZhbHVlPXQsQXJyYXkuaXNBcnJheSh0KSl7Y29uc3Qgbj10Lm1hcCgodD0+dGhpcy5fZ2V0T3B0aW9uSWQodCkpKTtlPSh0LGUpPT57dC5fc2V0U2VsZWN0ZWQobi5pbmRleE9mKGUudG9TdHJpbmcoKSk+LTEpfX1lbHNlIGU9KHQsZSk9Pnt0Ll9zZXRTZWxlY3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JFYWNoKGUpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57Y29uc3Qgbj1bXTtpZih2b2lkIDAhPT1lLnNlbGVjdGVkT3B0aW9ucyl7Y29uc3QgdD1lLnNlbGVjdGVkT3B0aW9ucztmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbz10Lml0ZW0oZSksaT10aGlzLl9nZXRPcHRpb25WYWx1ZShvLnZhbHVlKTtuLnB1c2goaSl9fWVsc2V7Y29uc3QgdD1lLm9wdGlvbnM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG89dC5pdGVtKGUpO2lmKG8uc2VsZWN0ZWQpe2NvbnN0IHQ9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoby52YWx1ZSk7bi5wdXNoKHQpfX19dGhpcy52YWx1ZT1uLHQobil9fV9yZWdpc3Rlck9wdGlvbih0KXtjb25zdCBlPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLnNldChlLHQpLGV9X2dldE9wdGlvbklkKHQpe2Zvcihjb25zdCBlIG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChlKS5fdmFsdWUsdCkpcmV0dXJuIGU7cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0pKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGUpP3RoaXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlOnR9fUJHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYShCRykpKShufHxCRyl9fSkoKSxCRy7JtWRpcj1obyh7dHlwZTpCRyxzZWxlY3RvcnM6W1sic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbInNlbGVjdCIsIm11bHRpcGxlIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbInNlbGVjdCIsIm11bHRpcGxlIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmRHUoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG91Y2hlZCgpfSkpfSxpbnB1dHM6e2NvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCJ9LGZlYXR1cmVzOltVaChbRkddKSxRcF19KSxCRy5wcm9wRGVjb3JhdG9ycz17Y29tcGFyZVdpdGg6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQkcsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0W211bHRpcGxlXVtmb3JtQ29udHJvbE5hbWVdLHNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xdLHNlbGVjdFttdWx0aXBsZV1bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W0ZHXX1dfV0sbnVsbCx7Y29tcGFyZVdpdGg6W3t0eXBlOlJffV19KTtjbGFzcyBWR3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudD10LHRoaXMuX3JlbmRlcmVyPWUsdGhpcy5fc2VsZWN0PW4sdGhpcy5fc2VsZWN0JiYodGhpcy5pZD10aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKHRoaXMpKX1zZXQgbmdWYWx1ZSh0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShMRyh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX1zZXQgdmFsdWUodCl7dGhpcy5fc2VsZWN0Pyh0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShMRyh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKTp0aGlzLl9zZXRFbGVtZW50VmFsdWUodCl9X3NldEVsZW1lbnRWYWx1ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIix0KX1fc2V0U2VsZWN0ZWQodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZCIsdCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gVUcodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6cGFyc2VJbnQodCwxMCl9VkcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZHKShmdShLaCksZnUoJGgpLGZ1KEJHLDkpKX0sVkcuybVkaXI9aG8oe3R5cGU6Vkcsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSksVkcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6JGh9LHt0eXBlOkJHLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpqcn1dfV0sVkcucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6Ul8sYXJnczpbInZhbHVlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJvcHRpb24ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOiRofSx7dHlwZTpCRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6anJ9XX1dfSkse25nVmFsdWU6W3t0eXBlOlJfLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6Ul8sYXJnczpbInZhbHVlIl19XX0pO2NsYXNzIGpHe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPSRqfWhhbmRsZUNoYW5nZXModCl7aWYodGhpcy5pbnB1dE5hbWUgaW4gdCl7Y29uc3QgZT10aGlzLm5vcm1hbGl6ZUlucHV0KHRbdGhpcy5pbnB1dE5hbWVdLmN1cnJlbnRWYWx1ZSk7dGhpcy5fdmFsaWRhdG9yPXRoaXMuY3JlYXRlVmFsaWRhdG9yKGUpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdG9yKHQpfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH19akcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpHKX0sakcuybVkaXI9aG8oe3R5cGU6akd9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpHLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgV0c9e3Byb3ZpZGU6VmosdXNlRXhpc3Rpbmc6JGUoKCgpPT5HRykpLG11bHRpOiEwfTtjbGFzcyBHRyBleHRlbmRzIGpHe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmlucHV0TmFtZT0ibWF4Iix0aGlzLm5vcm1hbGl6ZUlucHV0PXQ9PnBhcnNlRmxvYXQodCksdGhpcy5jcmVhdGVWYWxpZGF0b3I9dD0+WWoodCl9bmdPbkNoYW5nZXModCl7dGhpcy5oYW5kbGVDaGFuZ2VzKHQpfX1HRy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoR0cpKSkobnx8R0cpfX0pKCksR0cuybVkaXI9aG8oe3R5cGU6R0csc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1heCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWF4IiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1heCIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pe2lmKDImZSl7bGV0IHQ7eW0oIm1heCIsbnVsbCE9PSh0PW4ubWF4KSYmdm9pZCAwIT09dD90Om51bGwpfX0saW5wdXRzOnttYXg6Im1heCJ9LGZlYXR1cmVzOltVaChbV0ddKSxRcCxxb119KSxHRy5wcm9wRGVjb3JhdG9ycz17bWF4Olt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEdHLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9bnVtYmVyXVttYXhdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1udW1iZXJdW21heF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9bnVtYmVyXVttYXhdW25nTW9kZWxdIixwcm92aWRlcnM6W1dHXSxob3N0OnsiW2F0dHIubWF4XSI6Im1heCA/PyBudWxsIn19XX1dLG51bGwse21heDpbe3R5cGU6Ul99XX0pO2NvbnN0IFlHPXtwcm92aWRlOlZqLHVzZUV4aXN0aW5nOiRlKCgoKT0+cUcpKSxtdWx0aTohMH07Y2xhc3MgcUcgZXh0ZW5kcyBqR3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pbnB1dE5hbWU9Im1pbiIsdGhpcy5ub3JtYWxpemVJbnB1dD10PT5wYXJzZUZsb2F0KHQpLHRoaXMuY3JlYXRlVmFsaWRhdG9yPXQ9PkdqKHQpfW5nT25DaGFuZ2VzKHQpe3RoaXMuaGFuZGxlQ2hhbmdlcyh0KX19cUcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKHFHKSkpKG58fHFHKX19KSgpLHFHLsm1ZGlyPWhvKHt0eXBlOnFHLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1pbiIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXtpZigyJmUpe2xldCB0O3ltKCJtaW4iLG51bGwhPT0odD1uLm1pbikmJnZvaWQgMCE9PXQ/dDpudWxsKX19LGlucHV0czp7bWluOiJtaW4ifSxmZWF0dXJlczpbVWgoW1lHXSksUXAscW9dfSkscUcucHJvcERlY29yYXRvcnM9e21pbjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihxRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVttaW5dW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtuZ01vZGVsXSIscHJvdmlkZXJzOltZR10saG9zdDp7IlthdHRyLm1pbl0iOiJtaW4gPz8gbnVsbCJ9fV19XSxudWxsLHttaW46W3t0eXBlOlJffV19KTtjb25zdCBaRz17cHJvdmlkZTpWaix1c2VFeGlzdGluZzokZSgoKCk9PktHKSksbXVsdGk6ITB9LFhHPXtwcm92aWRlOlZqLHVzZUV4aXN0aW5nOiRlKCgoKT0+SkcpKSxtdWx0aTohMH07Y2xhc3MgS0d7Y29uc3RydWN0b3IoKXt0aGlzLl9yZXF1aXJlZD0hMX1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPW51bGwhPXQmJiExIT09dCYmImZhbHNlIiE9YCR7dH1gLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP3FqKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fX1LRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S0cpfSxLRy7JtWRpcj1obyh7dHlwZTpLRyxzZWxlY3RvcnM6W1siIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsiIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyIiLCJyZXF1aXJlZCIsIiIsIm5nTW9kZWwiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZ5bSgicmVxdWlyZWQiLG4ucmVxdWlyZWQ/IiI6bnVsbCl9LGlucHV0czp7cmVxdWlyZWQ6InJlcXVpcmVkIn0sZmVhdHVyZXM6W1VoKFtaR10pXX0pLEtHLnByb3BEZWNvcmF0b3JzPXtyZXF1aXJlZDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiI6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltaR10saG9zdDp7IlthdHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse3JlcXVpcmVkOlt7dHlwZTpSX31dfSk7Y2xhc3MgSkcgZXh0ZW5kcyBLR3t2YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5yZXF1aXJlZD9aaih0KTpudWxsfX1KRy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoSkcpKSkobnx8SkcpfX0pKCksSkcuybVkaXI9aG8oe3R5cGU6Skcsc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oInJlcXVpcmVkIixuLnJlcXVpcmVkPyIiOm51bGwpfSxmZWF0dXJlczpbVWgoW1hHXSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltYR10saG9zdDp7IlthdHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLG51bGwsbnVsbCk7Y29uc3QgUUc9e3Byb3ZpZGU6VmosdXNlRXhpc3Rpbmc6JGUoKCgpPT4kRykpLG11bHRpOiEwfTtjbGFzcyAkR3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2VuYWJsZWQ9ITF9c2V0IGVtYWlsKHQpe3RoaXMuX2VuYWJsZWQ9IiI9PT10fHwhMD09PXR8fCJ0cnVlIj09PXQsdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuX2VuYWJsZWQ/WGoodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9fSRHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkRyl9LCRHLsm1ZGlyPWhvKHt0eXBlOiRHLHNlbGVjdG9yczpbWyIiLCJlbWFpbCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwiZW1haWwiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwiZW1haWwiLCIiLCJuZ01vZGVsIiwiIl1dLGlucHV0czp7ZW1haWw6ImVtYWlsIn0sZmVhdHVyZXM6W1VoKFtRR10pXX0pLCRHLnByb3BEZWNvcmF0b3JzPXtlbWFpbDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkRyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbZW1haWxdW2Zvcm1Db250cm9sTmFtZV0sW2VtYWlsXVtmb3JtQ29udHJvbF0sW2VtYWlsXVtuZ01vZGVsXSIscHJvdmlkZXJzOltRR119XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse2VtYWlsOlt7dHlwZTpSX31dfSk7Y29uc3QgdFk9e3Byb3ZpZGU6VmosdXNlRXhpc3Rpbmc6JGUoKCgpPT5lWSkpLG11bHRpOiEwfTtjbGFzcyBlWXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3ZhbGlkYXRvcj0kan1uZ09uQ2hhbmdlcyh0KXsibWlubGVuZ3RoImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuZW5hYmxlZCgpP3RoaXMuX3ZhbGlkYXRvcih0KTpudWxsfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1fY3JlYXRlVmFsaWRhdG9yKCl7dGhpcy5fdmFsaWRhdG9yPXRoaXMuZW5hYmxlZCgpP0tqKFVHKHRoaXMubWlubGVuZ3RoKSk6JGp9ZW5hYmxlZCgpe3JldHVybiBudWxsIT10aGlzLm1pbmxlbmd0aH19ZVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVZKX0sZVkuybVkaXI9aG8oe3R5cGU6ZVksc2VsZWN0b3JzOltbIiIsIm1pbmxlbmd0aCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibWlubGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIiIsIm1pbmxlbmd0aCIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmeW0oIm1pbmxlbmd0aCIsbi5lbmFibGVkKCk/bi5taW5sZW5ndGg6bnVsbCl9LGlucHV0czp7bWlubGVuZ3RoOiJtaW5sZW5ndGgifSxmZWF0dXJlczpbVWgoW3RZXSkscW9dfSksZVkucHJvcERlY29yYXRvcnM9e21pbmxlbmd0aDpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlWSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWlubGVuZ3RoXVtmb3JtQ29udHJvbE5hbWVdLFttaW5sZW5ndGhdW2Zvcm1Db250cm9sXSxbbWlubGVuZ3RoXVtuZ01vZGVsXSIscHJvdmlkZXJzOlt0WV0saG9zdDp7IlthdHRyLm1pbmxlbmd0aF0iOiJlbmFibGVkKCkgPyBtaW5sZW5ndGggOiBudWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse21pbmxlbmd0aDpbe3R5cGU6Ul99XX0pO2NvbnN0IG5ZPXtwcm92aWRlOlZqLHVzZUV4aXN0aW5nOiRlKCgoKT0+b1kpKSxtdWx0aTohMH07Y2xhc3Mgb1l7Y29uc3RydWN0b3IoKXt0aGlzLl92YWxpZGF0b3I9JGp9bmdPbkNoYW5nZXModCl7Im1heGxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLmVuYWJsZWQoKT90aGlzLl92YWxpZGF0b3IodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj10aGlzLmVuYWJsZWQoKT9KaihVRyh0aGlzLm1heGxlbmd0aCkpOiRqfWVuYWJsZWQoKXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhsZW5ndGh9fW9ZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvWSl9LG9ZLsm1ZGlyPWhvKHt0eXBlOm9ZLHNlbGVjdG9yczpbWyIiLCJtYXhsZW5ndGgiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsIm1heGxlbmd0aCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyIiLCJtYXhsZW5ndGgiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnltKCJtYXhsZW5ndGgiLG4uZW5hYmxlZCgpP24ubWF4bGVuZ3RoOm51bGwpfSxpbnB1dHM6e21heGxlbmd0aDoibWF4bGVuZ3RoIn0sZmVhdHVyZXM6W1VoKFtuWV0pLHFvXX0pLG9ZLnByb3BEZWNvcmF0b3JzPXttYXhsZW5ndGg6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIob1ksW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21heGxlbmd0aF1bZm9ybUNvbnRyb2xOYW1lXSxbbWF4bGVuZ3RoXVtmb3JtQ29udHJvbF0sW21heGxlbmd0aF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbblldLGhvc3Q6eyJbYXR0ci5tYXhsZW5ndGhdIjoiZW5hYmxlZCgpID8gbWF4bGVuZ3RoIDogbnVsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHttYXhsZW5ndGg6W3t0eXBlOlJffV19KTtjb25zdCBpWT17cHJvdmlkZTpWaix1c2VFeGlzdGluZzokZSgoKCk9PmFZKSksbXVsdGk6ITB9O2NsYXNzIGFZe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPSRqfW5nT25DaGFuZ2VzKHQpeyJwYXR0ZXJuImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRvcih0KX1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj1Raih0aGlzLnBhdHRlcm4pfX1hWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YVkpfSxhWS7JtWRpcj1obyh7dHlwZTphWSxzZWxlY3RvcnM6W1siIiwicGF0dGVybiIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwicGF0dGVybiIsIiIsImZvcm1Db250cm9sIiwiIl0sWyIiLCJwYXR0ZXJuIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZ5bSgicGF0dGVybiIsbi5wYXR0ZXJuP24ucGF0dGVybjpudWxsKX0saW5wdXRzOntwYXR0ZXJuOiJwYXR0ZXJuIn0sZmVhdHVyZXM6W1VoKFtpWV0pLHFvXX0pLGFZLnByb3BEZWNvcmF0b3JzPXtwYXR0ZXJuOlt7dHlwZTpSX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFZLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltwYXR0ZXJuXVtmb3JtQ29udHJvbE5hbWVdLFtwYXR0ZXJuXVtmb3JtQ29udHJvbF0sW3BhdHRlcm5dW25nTW9kZWxdIixwcm92aWRlcnM6W2lZXSxob3N0OnsiW2F0dHIucGF0dGVybl0iOiJwYXR0ZXJuID8gcGF0dGVybiA6IG51bGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7cGF0dGVybjpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgclk9W3VHLEhHLFZHLEZqLGdHLE1HLHpqLElHLEJHLF9HLHZXLHhXLEtHLGVZLG9ZLGFZLEpHLCRHLHFHLEdHXSxzWT1bbUcsY0csYUddLGxZPVtPRyx3RyxURyxTRyxSR107Y2xhc3MgY1l7fWNZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjWSl9LGNZLsm1bW9kPXVvKHt0eXBlOmNZfSksY1kuybVpbmo9RG4oe2ltcG9ydHM6W1tiR11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjWSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpyWSxpbXBvcnRzOltiR10sZXhwb3J0czpyWX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGNZLHtkZWNsYXJhdGlvbnM6W3VHLEhHLFZHLEZqLGdHLE1HLHpqLElHLEJHLF9HLHZXLHhXLEtHLGVZLG9ZLGFZLEpHLCRHLHFHLEdHXSxpbXBvcnRzOltiR10sZXhwb3J0czpbdUcsSEcsVkcsRmosZ0csTUcsemosSUcsQkcsX0csdlcseFcsS0csZVksb1ksYVksSkcsJEcscUcsR0ddfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBkWXt9ZFkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRZKX0sZFkuybVtb2Q9dW8oe3R5cGU6ZFl9KSxkWS7JtWluaj1Ebih7aW1wb3J0czpbY1ldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkWSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpzWSxleHBvcnRzOltjWSxzWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhkWSx7ZGVjbGFyYXRpb25zOlttRyxjRyxhR10sZXhwb3J0czpbY1ksbUcsY0csYUddfSk7Y2xhc3MgcFl7c3RhdGljIHdpdGhDb25maWcodCl7cmV0dXJue25nTW9kdWxlOnBZLHByb3ZpZGVyczpbe3Byb3ZpZGU6dkcsdXNlVmFsdWU6dC53YXJuT25OZ01vZGVsV2l0aEZvcm1Db250cm9sfV19fX1wWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cFkpfSxwWS7JtW1vZD11byh7dHlwZTpwWX0pLHBZLsm1aW5qPURuKHtpbXBvcnRzOltjWV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHBZLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltsWV0sZXhwb3J0czpbY1ksbFldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8ocFkse2RlY2xhcmF0aW9uczpbT0csd0csVEcsU0csUkddLGV4cG9ydHM6W2NZLE9HLHdHLFRHLFNHLFJHXX0pO2NsYXNzIG1Ze2dyb3VwKHQsZT1udWxsKXtjb25zdCBuPXRoaXMuX3JlZHVjZUNvbnRyb2xzKHQpO2xldCBvLGk9bnVsbCxhPW51bGw7cmV0dXJuIG51bGwhPWUmJighKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gcih0KXtyZXR1cm4gdm9pZCAwIT09dC5hc3luY1ZhbGlkYXRvcnN8fHZvaWQgMCE9PXQudmFsaWRhdG9yc3x8dm9pZCAwIT09dC51cGRhdGVPbn0pKGUpPyhpPW51bGwhPWUudmFsaWRhdG9yP2UudmFsaWRhdG9yOm51bGwsYT1udWxsIT1lLmFzeW5jVmFsaWRhdG9yP2UuYXN5bmNWYWxpZGF0b3I6bnVsbCk6KGk9bnVsbCE9ZS52YWxpZGF0b3JzP2UudmFsaWRhdG9yczpudWxsLGE9bnVsbCE9ZS5hc3luY1ZhbGlkYXRvcnM/ZS5hc3luY1ZhbGlkYXRvcnM6bnVsbCxvPW51bGwhPWUudXBkYXRlT24/ZS51cGRhdGVPbjp2b2lkIDApKSxuZXcgZUcobix7YXN5bmNWYWxpZGF0b3JzOmEsdXBkYXRlT246byx2YWxpZGF0b3JzOml9KX1jb250cm9sKHQsZSxuKXtyZXR1cm4gbmV3IHRHKHQsZSxuKX1hcnJheSh0LGUsbil7Y29uc3Qgbz10Lm1hcCgodD0+dGhpcy5fY3JlYXRlQ29udHJvbCh0KSkpO3JldHVybiBuZXcgbkcobyxlLG4pfV9yZWR1Y2VDb250cm9scyh0KXtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57ZVtuXT10aGlzLl9jcmVhdGVDb250cm9sKHRbbl0pfSkpLGV9X2NyZWF0ZUNvbnRyb2wodCl7aWYodCBpbnN0YW5jZW9mIHRHfHx0IGluc3RhbmNlb2YgZUd8fHQgaW5zdGFuY2VvZiBuRylyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpKXtyZXR1cm4gdGhpcy5jb250cm9sKHRbMF0sdC5sZW5ndGg+MT90WzFdOm51bGwsdC5sZW5ndGg+Mj90WzJdOm51bGwpfXJldHVybiB0aGlzLmNvbnRyb2wodCl9fW1ZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtWSl9LG1ZLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBtWX0sdG9rZW46bVkscHJvdmlkZWRJbjpwWX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobVksW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOnBZfV19XSxudWxsLG51bGwpLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbmV3IG9iKCIxMi4yLjEiKTtjb25zdCB1WT1bInRyaWdnZXIiXSxmWT1bInBhbmVsIl07ZnVuY3Rpb24gZ1kodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiw4KSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSx3Zih0LnBsYWNlaG9sZGVyKX19ZnVuY3Rpb24gaFkodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwxMiksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDEpLHdmKHQudHJpZ2dlclZhbHVlKX19ZnVuY3Rpb24gYlkodCxlKXsxJnQmJkh1KDAsMCxbIipuZ1N3aXRjaENhc2UiLCJ0cnVlIl0pfWZ1bmN0aW9uIHlZKHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsOSksSG0oMSxoWSwyLDEsInNwYW4iLDEwKSxIbSgyLGJZLDEsMCwibmctY29udGVudCIsMTEpLEN1KCkpLDImdCl7aHUoIm5nU3dpdGNoIiwhIU51KCkuY3VzdG9tVHJpZ2dlciksRGMoMiksaHUoIm5nU3dpdGNoQ2FzZSIsITApfX1mdW5jdGlvbiBfWSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMTMpLF91KDEsImRpdiIsMTQsMTUpLER1KCJAdHJhbnNmb3JtUGFuZWwuZG9uZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkuX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5uZXh0KG4udG9TdGF0ZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLl9oYW5kbGVLZXlkb3duKG4pfSkpLEh1KDMsMSksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO2h1KCJAdHJhbnNmb3JtUGFuZWxXcmFwIix2b2lkIDApLERjKDEpLElmKCJtYXQtc2VsZWN0LXBhbmVsICIsdC5fZ2V0UGFuZWxUaGVtZSgpLCIiKSxsZigidHJhbnNmb3JtLW9yaWdpbiIsdC5fdHJhbnNmb3JtT3JpZ2luKSgiZm9udC1zaXplIix0Ll90cmlnZ2VyRm9udFNpemUsInB4IiksaHUoIm5nQ2xhc3MiLHQucGFuZWxDbGFzcykoIkB0cmFuc2Zvcm1QYW5lbCIsdC5tdWx0aXBsZT8ic2hvd2luZy1tdWx0aXBsZSI6InNob3dpbmciKSx5bSgiaWQiLHQuaWQrIi1wYW5lbCIpKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsdC5tdWx0aXBsZSkoImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5Iix0Ll9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCkpfX1jb25zdCBDWT1bW1sibWF0LXNlbGVjdC10cmlnZ2VyIl1dLCIqIl0sTVk9e3RyYW5zZm9ybVBhbmVsV3JhcDp4TygidHJhbnNmb3JtUGFuZWxXcmFwIixbRE8oIiogPT4gdm9pZCIsRU8oIkB0cmFuc2Zvcm1QYW5lbCIsW1JPKCldLHtvcHRpb25hbDohMH0pKV0pLHRyYW5zZm9ybVBhbmVsOnhPKCJ0cmFuc2Zvcm1QYW5lbCIsW2tPKCJ2b2lkIix3Tyh7dHJhbnNmb3JtOiJzY2FsZVkoMC44KSIsbWluV2lkdGg6IjEwMCUiLG9wYWNpdHk6MH0pKSxrTygic2hvd2luZyIsd08oe29wYWNpdHk6MSxtaW5XaWR0aDoiY2FsYygxMDAlICsgMzJweCkiLHRyYW5zZm9ybToic2NhbGVZKDEpIn0pKSxrTygic2hvd2luZy1tdWx0aXBsZSIsd08oe29wYWNpdHk6MSxtaW5XaWR0aDoiY2FsYygxMDAlICsgNjRweCkiLHRyYW5zZm9ybToic2NhbGVZKDEpIn0pKSxETygidm9pZCA9PiAqIixPTygiMTIwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiKSksRE8oIiogPT4gdm9pZCIsT08oIjEwMG1zIDI1bXMgbGluZWFyIix3Tyh7b3BhY2l0eTowfSkpKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCB2WT0wO2NvbnN0IHhZPTI1NixPWT0xNixQWT1uZXcgZXIoIm1hdC1zZWxlY3Qtc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3Qgd1k9bmV3IGVyKCJNQVRfU0VMRUNUX0NPTkZJRyIpLGtZPXtwcm92aWRlOlBZLGRlcHM6W3JWXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFNZKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfX07Y2xhc3MgRFl7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9ZX19Y29uc3QgUlk9cUYoWkYoR0YoWEYoY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPWUsdGhpcy5fcGFyZW50Rm9ybT1uLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1vLHRoaXMubmdDb250cm9sPWl9fSkpKSksRVk9bmV3IGVyKCJNYXRTZWxlY3RUcmlnZ2VyIik7Y2xhc3MgQVl7fUFZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBWSl9LEFZLsm1ZGlyPWhvKHt0eXBlOkFZLHNlbGVjdG9yczpbWyJtYXQtc2VsZWN0LXRyaWdnZXIiXV0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpFWSx1c2VFeGlzdGluZzpBWX1dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFZLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zZWxlY3QtdHJpZ2dlciIscHJvdmlkZXJzOlt7cHJvdmlkZTpFWSx1c2VFeGlzdGluZzpBWX1dfV19XSxudWxsLG51bGwpO2NsYXNzIFRZIGV4dGVuZHMgUll7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1KXt2YXIgZixnLGg7c3VwZXIoaSxvLHIscyxjKSx0aGlzLl92aWV3cG9ydFJ1bGVyPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLl9kaXI9YSx0aGlzLl9wYXJlbnRGb3JtRmllbGQ9bCx0aGlzLl9saXZlQW5ub3VuY2VyPW0sdGhpcy5fZGVmYXVsdE9wdGlvbnM9dSx0aGlzLl9wYW5lbE9wZW49ITEsdGhpcy5fY29tcGFyZVdpdGg9KHQsZSk9PnQ9PT1lLHRoaXMuX3VpZD0ibWF0LXNlbGVjdC0iK3ZZKyssdGhpcy5fdHJpZ2dlckFyaWFMYWJlbGxlZEJ5PW51bGwsdGhpcy5fZGVzdHJveT1uZXcgQix0aGlzLl9vbkNoYW5nZT0oKT0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl92YWx1ZUlkPSJtYXQtc2VsZWN0LXZhbHVlLSIrdlkrKyx0aGlzLl9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW09bmV3IEIsdGhpcy5fb3ZlcmxheVBhbmVsQ2xhc3M9KG51bGw9PT0oZj10aGlzLl9kZWZhdWx0T3B0aW9ucyl8fHZvaWQgMD09PWY/dm9pZCAwOmYub3ZlcmxheVBhbmVsQ2xhc3MpfHwiIix0aGlzLl9mb2N1c2VkPSExLHRoaXMuY29udHJvbFR5cGU9Im1hdC1zZWxlY3QiLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2Rpc2FibGVPcHRpb25DZW50ZXJpbmc9bnVsbCE9PShoPW51bGw9PT0oZz10aGlzLl9kZWZhdWx0T3B0aW9ucyl8fHZvaWQgMD09PWc/dm9pZCAwOmcuZGlzYWJsZU9wdGlvbkNlbnRlcmluZykmJnZvaWQgMCE9PWgmJmgsdGhpcy5hcmlhTGFiZWw9IiIsdGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzPW9lKCgoKT0+e2NvbnN0IHQ9dGhpcy5vcHRpb25zO3JldHVybiB0P3QuY2hhbmdlcy5waXBlKEJlKHQpLFZlKCgoKT0+cGUoLi4udC5tYXAoKHQ9PnQub25TZWxlY3Rpb25DaGFuZ2UpKSkpKSk6dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUodmUoMSksVmUoKCgpPT50aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMpKSl9KSksdGhpcy5vcGVuZWRDaGFuZ2U9bmV3IFN5LHRoaXMuX29wZW5lZFN0cmVhbT10aGlzLm9wZW5lZENoYW5nZS5waXBlKGZlKCh0PT50KSksVnQoKCgpPT57fSkpKSx0aGlzLl9jbG9zZWRTdHJlYW09dGhpcy5vcGVuZWRDaGFuZ2UucGlwZShmZSgodD0+IXQpKSxWdCgoKCk9Pnt9KSkpLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBTeSx0aGlzLnZhbHVlQ2hhbmdlPW5ldyBTeSx0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I9dGhpcyksbnVsbCE9KG51bGw9PXU/dm9pZCAwOnUudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkmJih0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsPXUudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5PXAsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9dGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KCksdGhpcy50YWJJbmRleD1wYXJzZUludChkKXx8MCx0aGlzLmlkPXRoaXMuaWR9Z2V0IGZvY3VzZWQoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZHx8dGhpcy5fcGFuZWxPcGVufWdldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLl9wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fcGxhY2Vob2xkZXI9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1wSCh0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfXNldCBtdWx0aXBsZSh0KXtpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiQ2Fubm90IGNoYW5nZSBgbXVsdGlwbGVgIG1vZGUgb2Ygc2VsZWN0IGFmdGVyIGluaXRpYWxpemF0aW9uLiIpfSkoKTt0aGlzLl9tdWx0aXBsZT1wSCh0KX1nZXQgZGlzYWJsZU9wdGlvbkNlbnRlcmluZygpe3JldHVybiB0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nfXNldCBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nKHQpe3RoaXMuX2Rpc2FibGVPcHRpb25DZW50ZXJpbmc9cEgodCl9Z2V0IGNvbXBhcmVXaXRoKCl7cmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRofXNldCBjb21wYXJlV2l0aCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoImBjb21wYXJlV2l0aGAgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpfSkoKTt0aGlzLl9jb21wYXJlV2l0aD10LHRoaXMuX3NlbGVjdGlvbk1vZGVsJiZ0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfXNldCB2YWx1ZSh0KXsodCE9PXRoaXMuX3ZhbHVlfHx0aGlzLl9tdWx0aXBsZSYmQXJyYXkuaXNBcnJheSh0KSkmJih0aGlzLm9wdGlvbnMmJnRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodCksdGhpcy5fdmFsdWU9dCl9Z2V0IHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwoKXtyZXR1cm4gdGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbH1zZXQgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCh0KXt0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsPW1IKHQpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQodCl7dGhpcy5faWQ9dHx8dGhpcy5fdWlkLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uSW5pdCgpe3RoaXMuX3NlbGVjdGlvbk1vZGVsPW5ldyBRTCh0aGlzLm11bHRpcGxlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCksdGhpcy5fcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtLnBpcGUod2UoKSxVZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fcGFuZWxEb25lQW5pbWF0aW5nKHRoaXMucGFuZWxPcGVuKSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2luaXRLZXlNYW5hZ2VyKCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKFVlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ9Pnt0LmFkZGVkLmZvckVhY2goKHQ9PnQuc2VsZWN0KCkpKSx0LnJlbW92ZWQuZm9yRWFjaCgodD0+dC5kZXNlbGVjdCgpKSl9KSksdGhpcy5vcHRpb25zLmNoYW5nZXMucGlwZShCZShudWxsKSxVZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Jlc2V0T3B0aW9ucygpLHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKX0pKX1uZ0RvQ2hlY2soKXtjb25zdCB0PXRoaXMuX2dldFRyaWdnZXJBcmlhTGFiZWxsZWRieSgpO2lmKHQhPT10aGlzLl90cmlnZ2VyQXJpYUxhYmVsbGVkQnkpe2NvbnN0IGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3RyaWdnZXJBcmlhTGFiZWxsZWRCeT10LHQ/ZS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdCk6ZS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpfXRoaXMubmdDb250cm9sJiZ0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKX1uZ09uQ2hhbmdlcyh0KXt0LmRpc2FibGVkJiZ0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCksdC50eXBlYWhlYWREZWJvdW5jZUludGVydmFsJiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLndpdGhUeXBlQWhlYWQodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95Lm5leHQoKSx0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCksdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX10b2dnbGUoKXt0aGlzLnBhbmVsT3Blbj90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCl9b3Blbigpe3RoaXMuX2Nhbk9wZW4oKSYmKHRoaXMuX3BhbmVsT3Blbj0hMCx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24obnVsbCksdGhpcy5faGlnaGxpZ2h0Q29ycmVjdE9wdGlvbigpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1jbG9zZSgpe3RoaXMuX3BhbmVsT3BlbiYmKHRoaXMuX3BhbmVsT3Blbj0hMSx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKT8icnRsIjoibHRyIiksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fb25Ub3VjaGVkKCkpfXdyaXRlVmFsdWUodCl7dGhpcy52YWx1ZT10fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHBhbmVsT3Blbigpe3JldHVybiB0aGlzLl9wYW5lbE9wZW59Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMubXVsdGlwbGU/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF19Z2V0IHRyaWdnZXJWYWx1ZSgpe2lmKHRoaXMuZW1wdHkpcmV0dXJuIiI7aWYodGhpcy5fbXVsdGlwbGUpe2NvbnN0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubWFwKCh0PT50LnZpZXdWYWx1ZSkpO3JldHVybiB0aGlzLl9pc1J0bCgpJiZ0LnJldmVyc2UoKSx0LmpvaW4oIiwgIil9cmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdLnZpZXdWYWx1ZX1faXNSdGwoKXtyZXR1cm4hIXRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWV9X2hhbmRsZUtleWRvd24odCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMucGFuZWxPcGVuP3RoaXMuX2hhbmRsZU9wZW5LZXlkb3duKHQpOnRoaXMuX2hhbmRsZUNsb3NlZEtleWRvd24odCkpfV9oYW5kbGVDbG9zZWRLZXlkb3duKHQpe2NvbnN0IGU9dC5rZXlDb2RlLG49ZT09PWNIfHxlPT09bEh8fDM3PT09ZXx8Mzk9PT1lLG89ZT09PWFIfHxlPT09c0gsaT10aGlzLl9rZXlNYW5hZ2VyO2lmKCFpLmlzVHlwaW5nKCkmJm8mJiFkSCh0KXx8KHRoaXMubXVsdGlwbGV8fHQuYWx0S2V5KSYmbil0LnByZXZlbnREZWZhdWx0KCksdGhpcy5vcGVuKCk7ZWxzZSBpZighdGhpcy5tdWx0aXBsZSl7Y29uc3QgZT10aGlzLnNlbGVjdGVkO2kub25LZXlkb3duKHQpO2NvbnN0IG49dGhpcy5zZWxlY3RlZDtuJiZlIT09biYmdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZShuLnZpZXdWYWx1ZSwxZTQpfX1faGFuZGxlT3BlbktleWRvd24odCl7Y29uc3QgZT10aGlzLl9rZXlNYW5hZ2VyLG49dC5rZXlDb2RlLG89bj09PWNIfHxuPT09bEgsaT1lLmlzVHlwaW5nKCk7aWYobyYmdC5hbHRLZXkpdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2UoKTtlbHNlIGlmKGl8fG4hPT1hSCYmbiE9PXNIfHwhZS5hY3RpdmVJdGVtfHxkSCh0KSlpZighaSYmdGhpcy5fbXVsdGlwbGUmJjY1PT09biYmdC5jdHJsS2V5KXt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZT10aGlzLm9wdGlvbnMuc29tZSgodD0+IXQuZGlzYWJsZWQmJiF0LnNlbGVjdGVkKSk7dGhpcy5vcHRpb25zLmZvckVhY2goKHQ9Pnt0LmRpc2FibGVkfHwoZT90LnNlbGVjdCgpOnQuZGVzZWxlY3QoKSl9KSl9ZWxzZXtjb25zdCBuPWUuYWN0aXZlSXRlbUluZGV4O2Uub25LZXlkb3duKHQpLHRoaXMuX211bHRpcGxlJiZvJiZ0LnNoaWZ0S2V5JiZlLmFjdGl2ZUl0ZW0mJmUuYWN0aXZlSXRlbUluZGV4IT09biYmZS5hY3RpdmVJdGVtLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLGUuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX1fb25Gb2N1cygpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLl9mb2N1c2VkPSEwLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X29uQmx1cigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5kaXNhYmxlZHx8dGhpcy5wYW5lbE9wZW58fCh0aGlzLl9vblRvdWNoZWQoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV9vbkF0dGFjaGVkKCl7dGhpcy5fb3ZlcmxheURpci5wb3NpdGlvbkNoYW5nZS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuX3Bvc2l0aW9uaW5nU2V0dGxlZCgpfSkpfV9nZXRQYW5lbFRoZW1lKCl7cmV0dXJuIHRoaXMuX3BhcmVudEZvcm1GaWVsZD9gbWF0LSR7dGhpcy5fcGFyZW50Rm9ybUZpZWxkLmNvbG9yfWA6IiJ9Z2V0IGVtcHR5KCl7cmV0dXJuIXRoaXMuX3NlbGVjdGlvbk1vZGVsfHx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCl9X2luaXRpYWxpemVTZWxlY3Rpb24oKXtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wudmFsdWU6dGhpcy5fdmFsdWUpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KXtpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5mb3JFYWNoKCh0PT50LnNldEluYWN0aXZlU3R5bGVzKCkpKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLHRoaXMubXVsdGlwbGUmJnQpe2lmKCFBcnJheS5pc0FycmF5KHQpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiVmFsdWUgbXVzdCBiZSBhbiBhcnJheSBpbiBtdWx0aXBsZS1zZWxlY3Rpb24gbW9kZS4iKX0pKCk7dC5mb3JFYWNoKCh0PT50aGlzLl9zZWxlY3RWYWx1ZSh0KSkpLHRoaXMuX3NvcnRWYWx1ZXMoKX1lbHNle2NvbnN0IGU9dGhpcy5fc2VsZWN0VmFsdWUodCk7ZT90aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZSk6dGhpcy5wYW5lbE9wZW58fHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSgtMSl9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X3NlbGVjdFZhbHVlKHQpe2NvbnN0IGU9dGhpcy5vcHRpb25zLmZpbmQoKGU9PntpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKGUpKXJldHVybiExO3RyeXtyZXR1cm4gbnVsbCE9ZS52YWx1ZSYmdGhpcy5fY29tcGFyZVdpdGgoZS52YWx1ZSx0KX1jYXRjaCh0KXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmNvbnNvbGUud2Fybih0KSwhMX19KSk7cmV0dXJuIGUmJnRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChlKSxlfV9pbml0S2V5TWFuYWdlcigpe3RoaXMuX2tleU1hbmFnZXI9bmV3IFpIKHRoaXMub3B0aW9ucykud2l0aFR5cGVBaGVhZCh0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsKS53aXRoVmVydGljYWxPcmllbnRhdGlvbigpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKT8icnRsIjoibHRyIikud2l0aEhvbWVBbmRFbmQoKS53aXRoQWxsb3dlZE1vZGlmaWVyS2V5cyhbInNoaWZ0S2V5Il0pLHRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnBpcGUoVWUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnBhbmVsT3BlbiYmKCF0aGlzLm11bHRpcGxlJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0mJnRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKSx0aGlzLmZvY3VzKCksdGhpcy5jbG9zZSgpKX0pKSx0aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fcGFuZWxPcGVuJiZ0aGlzLnBhbmVsP3RoaXMuX3Njcm9sbE9wdGlvbkludG9WaWV3KHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4fHwwKTp0aGlzLl9wYW5lbE9wZW58fHRoaXMubXVsdGlwbGV8fCF0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW18fHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX0pKX1fcmVzZXRPcHRpb25zKCl7Y29uc3QgdD1wZSh0aGlzLm9wdGlvbnMuY2hhbmdlcyx0aGlzLl9kZXN0cm95KTt0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMucGlwZShVZSh0KSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fb25TZWxlY3QodC5zb3VyY2UsdC5pc1VzZXJJbnB1dCksdC5pc1VzZXJJbnB1dCYmIXRoaXMubXVsdGlwbGUmJnRoaXMuX3BhbmVsT3BlbiYmKHRoaXMuY2xvc2UoKSx0aGlzLmZvY3VzKCkpfSkpLHBlKC4uLnRoaXMub3B0aW9ucy5tYXAoKHQ9PnQuX3N0YXRlQ2hhbmdlcykpKS5waXBlKFVlKHQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpfV9vblNlbGVjdCh0LGUpe2NvbnN0IG49dGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KTtudWxsIT10LnZhbHVlfHx0aGlzLl9tdWx0aXBsZT8obiE9PXQuc2VsZWN0ZWQmJih0LnNlbGVjdGVkP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0KTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0KSksZSYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpLHRoaXMubXVsdGlwbGUmJih0aGlzLl9zb3J0VmFsdWVzKCksZSYmdGhpcy5mb2N1cygpKSk6KHQuZGVzZWxlY3QoKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLG51bGwhPXRoaXMudmFsdWUmJnRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXModC52YWx1ZSkpLG4hPT10aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHQpJiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfV9zb3J0VmFsdWVzKCl7aWYodGhpcy5tdWx0aXBsZSl7Y29uc3QgdD10aGlzLm9wdGlvbnMudG9BcnJheSgpO3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNvcnQoKChlLG4pPT50aGlzLnNvcnRDb21wYXJhdG9yP3RoaXMuc29ydENvbXBhcmF0b3IoZSxuLHQpOnQuaW5kZXhPZihlKS10LmluZGV4T2YobikpKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9fV9wcm9wYWdhdGVDaGFuZ2VzKHQpe2xldCBlPW51bGw7ZT10aGlzLm11bHRpcGxlP3RoaXMuc2VsZWN0ZWQubWFwKCh0PT50LnZhbHVlKSk6dGhpcy5zZWxlY3RlZD90aGlzLnNlbGVjdGVkLnZhbHVlOnQsdGhpcy5fdmFsdWU9ZSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZSksdGhpcy5fb25DaGFuZ2UoZSksdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLl9nZXRDaGFuZ2VFdmVudChlKSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKXt0aGlzLl9rZXlNYW5hZ2VyJiYodGhpcy5lbXB0eT90aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpOnRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXSkpfV9jYW5PcGVuKCl7dmFyIHQ7cmV0dXJuIXRoaXMuX3BhbmVsT3BlbiYmIXRoaXMuZGlzYWJsZWQmJihudWxsPT09KHQ9dGhpcy5vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sZW5ndGgpPjB9Zm9jdXModCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCl7dmFyIHQ7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7Y29uc3QgZT1udWxsPT09KHQ9dGhpcy5fcGFyZW50Rm9ybUZpZWxkKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXRMYWJlbElkKCk7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnk/KGU/ZSsiICI6IiIpK3RoaXMuYXJpYUxhYmVsbGVkYnk6ZX1fZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKXtyZXR1cm4gdGhpcy5wYW5lbE9wZW4mJnRoaXMuX2tleU1hbmFnZXImJnRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbT90aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uaWQ6bnVsbH1fZ2V0VHJpZ2dlckFyaWFMYWJlbGxlZGJ5KCl7dmFyIHQ7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7Y29uc3QgZT1udWxsPT09KHQ9dGhpcy5fcGFyZW50Rm9ybUZpZWxkKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXRMYWJlbElkKCk7bGV0IG49KGU/ZSsiICI6IiIpK3RoaXMuX3ZhbHVlSWQ7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnkmJihuKz0iICIrdGhpcy5hcmlhTGFiZWxsZWRieSksbn1fcGFuZWxEb25lQW5pbWF0aW5nKHQpe3RoaXMub3BlbmVkQ2hhbmdlLmVtaXQodCl9c2V0RGVzY3JpYmVkQnlJZHModCl7dGhpcy5fYXJpYURlc2NyaWJlZGJ5PXQuam9pbigiICIpfW9uQ29udGFpbmVyQ2xpY2soKXt0aGlzLmZvY3VzKCksdGhpcy5vcGVuKCl9Z2V0IHNob3VsZExhYmVsRmxvYXQoKXtyZXR1cm4gdGhpcy5fcGFuZWxPcGVufHwhdGhpcy5lbXB0eXx8dGhpcy5fZm9jdXNlZCYmISF0aGlzLl9wbGFjZWhvbGRlcn19VFkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRZKShmdShsQiksZnUoT2IpLGZ1KG1DKSxmdShtTCksZnUoS2gpLGZ1KEFGLDgpLGZ1KGFHLDgpLGZ1KHdHLDgpLGZ1KFNqLDgpLGZ1KHlXLDEwKSxHYSgidGFiaW5kZXgiKSxmdShQWSksZnUoX0YpLGZ1KHdZLDgpKX0sVFkuybVkaXI9aG8oe3R5cGU6VFksdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeSh1WSw1KSxWeShmWSw1KSxWeShkViw1KSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi50cmlnZ2VyPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLnBhbmVsPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLl9vdmVybGF5RGlyPXQuZmlyc3QpfX0saW5wdXRzOnthcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0saWQ6ImlkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHJlcXVpcmVkOiJyZXF1aXJlZCIsbXVsdGlwbGU6Im11bHRpcGxlIixkaXNhYmxlT3B0aW9uQ2VudGVyaW5nOiJkaXNhYmxlT3B0aW9uQ2VudGVyaW5nIixjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgiLHZhbHVlOiJ2YWx1ZSIsdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbDoidHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCIscGFuZWxDbGFzczoicGFuZWxDbGFzcyIsYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciIsc29ydENvbXBhcmF0b3I6InNvcnRDb21wYXJhdG9yIn0sb3V0cHV0czp7b3BlbmVkQ2hhbmdlOiJvcGVuZWRDaGFuZ2UiLF9vcGVuZWRTdHJlYW06Im9wZW5lZCIsX2Nsb3NlZFN0cmVhbToiY2xvc2VkIixzZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbkNoYW5nZSIsdmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W1FwLHFvXX0pLFRZLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bEJ9LHt0eXBlOk9ifSx7dHlwZTptQ30se3R5cGU6bUx9LHt0eXBlOktofSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTphRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp3RyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpEaixkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbU2pdfV19LHt0eXBlOnlXLGRlY29yYXRvcnM6W3t0eXBlOlZyfSx7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1BZXX1dfSx7dHlwZTpfRn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOlt3WV19XX1dLFRZLnByb3BEZWNvcmF0b3JzPXt0cmlnZ2VyOlt7dHlwZTphcixhcmdzOlsidHJpZ2dlciJdfV0scGFuZWw6W3t0eXBlOmFyLGFyZ3M6WyJwYW5lbCJdfV0sX292ZXJsYXlEaXI6W3t0eXBlOmFyLGFyZ3M6W2RWXX1dLHBhbmVsQ2xhc3M6W3t0eXBlOlJffV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sbXVsdGlwbGU6W3t0eXBlOlJffV0sZGlzYWJsZU9wdGlvbkNlbnRlcmluZzpbe3R5cGU6Ul99XSxjb21wYXJlV2l0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOlJffV0sdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbDpbe3R5cGU6Ul99XSxzb3J0Q29tcGFyYXRvcjpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxvcGVuZWRDaGFuZ2U6W3t0eXBlOkVffV0sX29wZW5lZFN0cmVhbTpbe3R5cGU6RV8sYXJnczpbIm9wZW5lZCJdfV0sX2Nsb3NlZFN0cmVhbTpbe3R5cGU6RV8sYXJnczpbImNsb3NlZCJdfV0sc2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLHZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRZLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsQn0se3R5cGU6T2J9LHt0eXBlOm1DfSx7dHlwZTptTH0se3R5cGU6S2h9LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmFHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOndHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOkRqLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltTal19XX0se3R5cGU6eVcsZGVjb3JhdG9yczpbe3R5cGU6VnJ9LHt0eXBlOkJyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUFldfV19LHt0eXBlOl9GfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3dZXX1dfV19KSx7YXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sb3BlbmVkQ2hhbmdlOlt7dHlwZTpFX31dLF9vcGVuZWRTdHJlYW06W3t0eXBlOkVfLGFyZ3M6WyJvcGVuZWQiXX1dLF9jbG9zZWRTdHJlYW06W3t0eXBlOkVfLGFyZ3M6WyJjbG9zZWQiXX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxpZDpbe3R5cGU6Ul99XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSxtdWx0aXBsZTpbe3R5cGU6Ul99XSxkaXNhYmxlT3B0aW9uQ2VudGVyaW5nOlt7dHlwZTpSX31dLGNvbXBhcmVXaXRoOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6W3t0eXBlOlJffV0sdHJpZ2dlcjpbe3R5cGU6YXIsYXJnczpbInRyaWdnZXIiXX1dLHBhbmVsOlt7dHlwZTphcixhcmdzOlsicGFuZWwiXX1dLF9vdmVybGF5RGlyOlt7dHlwZTphcixhcmdzOltkVl19XSxwYW5lbENsYXNzOlt7dHlwZTpSX31dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Ul99XSxzb3J0Q29tcGFyYXRvcjpbe3R5cGU6Ul99XX0pO2NsYXNzIE5ZIGV4dGVuZHMgVFl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3Njcm9sbFRvcD0wLHRoaXMuX3RyaWdnZXJGb250U2l6ZT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0idG9wIix0aGlzLl9vZmZzZXRZPTAsdGhpcy5fcG9zaXRpb25zPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6ImJvdHRvbSJ9XX1fY2FsY3VsYXRlT3ZlcmxheVNjcm9sbCh0LGUsbil7Y29uc3Qgbz10aGlzLl9nZXRJdGVtSGVpZ2h0KCk7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KDAsbyp0LWUrby8yKSxuKX1uZ09uSW5pdCgpe3N1cGVyLm5nT25Jbml0KCksdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4mJih0aGlzLl90cmlnZ2VyUmVjdD10aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9KSl9b3Blbigpe3N1cGVyLl9jYW5PcGVuKCkmJihzdXBlci5vcGVuKCksdGhpcy5fdHJpZ2dlclJlY3Q9dGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fdHJpZ2dlckZvbnRTaXplPXBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUodGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQpLmZvbnRTaXplfHwiMCIpLHRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlQb3NpdGlvbigpLHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdHJpZ2dlckZvbnRTaXplJiZ0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlEaXIub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCYmKHRoaXMuX292ZXJsYXlEaXIub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZS5mb250U2l6ZT1gJHt0aGlzLl90cmlnZ2VyRm9udFNpemV9cHhgKX0pKSl9X3Njcm9sbE9wdGlvbkludG9WaWV3KHQpe2NvbnN0IGU9SUwodCx0aGlzLm9wdGlvbnMsdGhpcy5vcHRpb25Hcm91cHMpLG49dGhpcy5fZ2V0SXRlbUhlaWdodCgpO3RoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9MD09PXQmJjE9PT1lPzA6SEwoKHQrZSkqbixuLHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AseFkpfV9wb3NpdGlvbmluZ1NldHRsZWQoKXt0aGlzLl9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WCgpLHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9dGhpcy5fc2Nyb2xsVG9wfV9wYW5lbERvbmVBbmltYXRpbmcodCl7dGhpcy5wYW5lbE9wZW4/dGhpcy5fc2Nyb2xsVG9wPTA6KHRoaXMuX292ZXJsYXlEaXIub2Zmc2V0WD0wLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSxzdXBlci5fcGFuZWxEb25lQW5pbWF0aW5nKHQpfV9nZXRDaGFuZ2VFdmVudCh0KXtyZXR1cm4gbmV3IERZKHRoaXMsdCl9X2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRYKCl7Y29uc3QgdD10aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpLG49dGhpcy5faXNSdGwoKSxvPXRoaXMubXVsdGlwbGU/NTY6MzI7bGV0IGk7aWYodGhpcy5tdWx0aXBsZSlpPTQwO2Vsc2UgaWYodGhpcy5kaXNhYmxlT3B0aW9uQ2VudGVyaW5nKWk9T1k7ZWxzZXtsZXQgdD10aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXXx8dGhpcy5vcHRpb25zLmZpcnN0O2k9dCYmdC5ncm91cD8zMjpPWX1ufHwoaSo9LTEpO2NvbnN0IGE9MC0odC5sZWZ0K2ktKG4/bzowKSkscj10LnJpZ2h0K2ktZS53aWR0aCsobj8wOm8pO2E+MD9pKz1hKzg6cj4wJiYoaS09cis4KSx0aGlzLl9vdmVybGF5RGlyLm9mZnNldFg9TWF0aC5yb3VuZChpKSx0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKX1fY2FsY3VsYXRlT3ZlcmxheU9mZnNldFkodCxlLG4pe2NvbnN0IG89dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGk9KG8tdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0KS8yLGE9TWF0aC5mbG9vcih4WS9vKTtsZXQgcjtpZih0aGlzLmRpc2FibGVPcHRpb25DZW50ZXJpbmcpcmV0dXJuIDA7aWYoMD09PXRoaXMuX3Njcm9sbFRvcClyPXQqbztlbHNlIGlmKHRoaXMuX3Njcm9sbFRvcD09PW4pe3I9KHQtKHRoaXMuX2dldEl0ZW1Db3VudCgpLWEpKSpvKyhvLSh0aGlzLl9nZXRJdGVtQ291bnQoKSpvLXhZKSVvKX1lbHNlIHI9ZS1vLzI7cmV0dXJuIE1hdGgucm91bmQoLTEqci1pKX1fY2hlY2tPdmVybGF5V2l0aGluVmlld3BvcnQodCl7Y29uc3QgZT10aGlzLl9nZXRJdGVtSGVpZ2h0KCksbj10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpLG89dGhpcy5fdHJpZ2dlclJlY3QudG9wLTgsaT1uLmhlaWdodC10aGlzLl90cmlnZ2VyUmVjdC5ib3R0b20tOCxhPU1hdGguYWJzKHRoaXMuX29mZnNldFkpLHI9TWF0aC5taW4odGhpcy5fZ2V0SXRlbUNvdW50KCkqZSx4WSktYS10aGlzLl90cmlnZ2VyUmVjdC5oZWlnaHQ7cj5pP3RoaXMuX2FkanVzdFBhbmVsVXAocixpKTphPm8/dGhpcy5fYWRqdXN0UGFuZWxEb3duKGEsbyx0KTp0aGlzLl90cmFuc2Zvcm1PcmlnaW49dGhpcy5fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpfV9hZGp1c3RQYW5lbFVwKHQsZSl7Y29uc3Qgbj1NYXRoLnJvdW5kKHQtZSk7dGhpcy5fc2Nyb2xsVG9wLT1uLHRoaXMuX29mZnNldFktPW4sdGhpcy5fdHJhbnNmb3JtT3JpZ2luPXRoaXMuX2dldE9yaWdpbkJhc2VkT25PcHRpb24oKSx0aGlzLl9zY3JvbGxUb3A8PTAmJih0aGlzLl9zY3JvbGxUb3A9MCx0aGlzLl9vZmZzZXRZPTAsdGhpcy5fdHJhbnNmb3JtT3JpZ2luPSI1MCUgYm90dG9tIDBweCIpfV9hZGp1c3RQYW5lbERvd24odCxlLG4pe2NvbnN0IG89TWF0aC5yb3VuZCh0LWUpO2lmKHRoaXMuX3Njcm9sbFRvcCs9byx0aGlzLl9vZmZzZXRZKz1vLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj10aGlzLl9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCksdGhpcy5fc2Nyb2xsVG9wPj1uKXJldHVybiB0aGlzLl9zY3JvbGxUb3A9bix0aGlzLl9vZmZzZXRZPTAsdm9pZCh0aGlzLl90cmFuc2Zvcm1PcmlnaW49IjUwJSB0b3AgMHB4Iil9X2NhbGN1bGF0ZU92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGU9dGhpcy5fZ2V0SXRlbUNvdW50KCksbj1NYXRoLm1pbihlKnQseFkpLG89ZSp0LW47bGV0IGk7aT10aGlzLmVtcHR5PzA6TWF0aC5tYXgodGhpcy5vcHRpb25zLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdKSwwKSxpKz1JTChpLHRoaXMub3B0aW9ucyx0aGlzLm9wdGlvbkdyb3Vwcyk7Y29uc3QgYT1uLzI7dGhpcy5fc2Nyb2xsVG9wPXRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlTY3JvbGwoaSxhLG8pLHRoaXMuX29mZnNldFk9dGhpcy5fY2FsY3VsYXRlT3ZlcmxheU9mZnNldFkoaSxhLG8pLHRoaXMuX2NoZWNrT3ZlcmxheVdpdGhpblZpZXdwb3J0KG8pfV9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCl7Y29uc3QgdD10aGlzLl9nZXRJdGVtSGVpZ2h0KCksZT0odC10aGlzLl90cmlnZ2VyUmVjdC5oZWlnaHQpLzI7cmV0dXJuYDUwJSAke01hdGguYWJzKHRoaXMuX29mZnNldFkpLWUrdC8yfXB4IDBweGB9X2dldEl0ZW1IZWlnaHQoKXtyZXR1cm4gMyp0aGlzLl90cmlnZ2VyRm9udFNpemV9X2dldEl0ZW1Db3VudCgpe3JldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoK3RoaXMub3B0aW9uR3JvdXBzLmxlbmd0aH19TlkuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKE5ZKSkpKG58fE5ZKX19KSgpLE5ZLsm1Y21wPXNvKHt0eXBlOk5ZLHNlbGVjdG9yczpbWyJtYXQtc2VsZWN0Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKFV5KG8sRVksNSksVXkobyx6TCw1KSxVeShvLFJMLDUpKSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLmN1c3RvbVRyaWdnZXI9dC5maXJzdCksQnkodD1qeSgpKSYmKG4ub3B0aW9ucz10KSxCeSh0PWp5KCkpJiYobi5vcHRpb25Hcm91cHM9dCl9fSxob3N0QXR0cnM6WyJyb2xlIiwiY29tYm9ib3giLCJhcmlhLWF1dG9jb21wbGV0ZSIsIm5vbmUiLCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIsMSwibWF0LXNlbGVjdCJdLGhvc3RWYXJzOjIwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQmx1cigpfSkpLDImZSYmKHltKCJpZCIsbi5pZCkoInRhYmluZGV4IixuLnRhYkluZGV4KSgiYXJpYS1jb250cm9scyIsbi5wYW5lbE9wZW4/bi5pZCsiLXBhbmVsIjpudWxsKSgiYXJpYS1leHBhbmRlZCIsbi5wYW5lbE9wZW4pKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtcmVxdWlyZWQiLG4ucmVxdWlyZWQudG9TdHJpbmcoKSkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtaW52YWxpZCIsbi5lcnJvclN0YXRlKSgiYXJpYS1kZXNjcmliZWRieSIsbi5fYXJpYURlc2NyaWJlZGJ5fHxudWxsKSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixuLl9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpKSxjZigibWF0LXNlbGVjdC1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIm1hdC1zZWxlY3QtaW52YWxpZCIsbi5lcnJvclN0YXRlKSgibWF0LXNlbGVjdC1yZXF1aXJlZCIsbi5yZXF1aXJlZCkoIm1hdC1zZWxlY3QtZW1wdHkiLG4uZW1wdHkpKCJtYXQtc2VsZWN0LW11bHRpcGxlIixuLm11bHRpcGxlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgifSxleHBvcnRBczpbIm1hdFNlbGVjdCJdLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6ZmosdXNlRXhpc3Rpbmc6Tll9LHtwcm92aWRlOndMLHVzZUV4aXN0aW5nOk5ZfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyJtYXQtc2VsZWN0LXRyaWdnZXIiLCIqIl0sZGVjbHM6OSx2YXJzOjEyLGNvbnN0czpbWyJjZGstb3ZlcmxheS1vcmlnaW4iLCIiLDEsIm1hdC1zZWxlY3QtdHJpZ2dlciIsMywiY2xpY2siXSxbIm9yaWdpbiIsImNka092ZXJsYXlPcmlnaW4iLCJ0cmlnZ2VyIiwiIl0sWzEsIm1hdC1zZWxlY3QtdmFsdWUiLDMsIm5nU3dpdGNoIl0sWyJjbGFzcyIsIm1hdC1zZWxlY3QtcGxhY2Vob2xkZXIgbWF0LXNlbGVjdC1taW4tbGluZSIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsIm1hdC1zZWxlY3QtdmFsdWUtdGV4dCIsMywibmdTd2l0Y2giLDQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJtYXQtc2VsZWN0LWFycm93LXdyYXBwZXIiXSxbMSwibWF0LXNlbGVjdC1hcnJvdyJdLFsiY2RrLWNvbm5lY3RlZC1vdmVybGF5IiwiIiwiY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbiIsIiIsImNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcCIsIiIsImNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzIiwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AiLDMsImNka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzIiwiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5IiwiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIiwiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIiwiYmFja2Ryb3BDbGljayIsImF0dGFjaCIsImRldGFjaCJdLFsxLCJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIiwibWF0LXNlbGVjdC1taW4tbGluZSJdLFsxLCJtYXQtc2VsZWN0LXZhbHVlLXRleHQiLDMsIm5nU3dpdGNoIl0sWyJjbGFzcyIsIm1hdC1zZWxlY3QtbWluLWxpbmUiLDQsIm5nU3dpdGNoRGVmYXVsdCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LXNlbGVjdC1taW4tbGluZSJdLFsxLCJtYXQtc2VsZWN0LXBhbmVsLXdyYXAiXSxbInJvbGUiLCJsaXN0Ym94IiwidGFiaW5kZXgiLCItMSIsMywibmdDbGFzcyIsImtleWRvd24iXSxbInBhbmVsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihJdShDWSksX3UoMCwiZGl2IiwwLDEpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGUoKX0pKSxfdSgzLCJkaXYiLDIpLEhtKDQsZ1ksMiwxLCJzcGFuIiwzKSxIbSg1LHlZLDMsMiwic3BhbiIsNCksQ3UoKSxfdSg2LCJkaXYiLDUpLE11KDcsImRpdiIsNiksQ3UoKSxDdSgpLEhtKDgsX1ksNCwxNCwibmctdGVtcGxhdGUiLDcpLER1KCJiYWNrZHJvcENsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmNsb3NlKCl9KSkoImF0dGFjaCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25BdHRhY2hlZCgpfSkpKCJkZXRhY2giLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uY2xvc2UoKX0pKSksMiZlKXtjb25zdCB0PUZtKDEpO3ltKCJhcmlhLW93bnMiLG4ucGFuZWxPcGVuP24uaWQrIi1wYW5lbCI6bnVsbCksRGMoMyksaHUoIm5nU3dpdGNoIixuLmVtcHR5KSx5bSgiaWQiLG4uX3ZhbHVlSWQpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLCEwKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIiwhMSksRGMoMyksaHUoImNka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzIixuLl9vdmVybGF5UGFuZWxDbGFzcykoImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsbi5fc2Nyb2xsU3RyYXRlZ3kpKCJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIix0KSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLG4ucGFuZWxPcGVuKSgiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsbi5fcG9zaXRpb25zKSgiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoIixudWxsPT1uLl90cmlnZ2VyUmVjdD9udWxsOm4uX3RyaWdnZXJSZWN0LndpZHRoKSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiLG4uX29mZnNldFkpfX0sZGlyZWN0aXZlczpbY1YsRHYsUnYsZFYsRXYsQ3ZdLHN0eWxlczpbJy5tYXQtc2VsZWN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7b3V0bGluZTpub25lfS5tYXQtc2VsZWN0LXRyaWdnZXJ7ZGlzcGxheTppbmxpbmUtdGFibGU7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXRyaWdnZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtc2VsZWN0LXZhbHVle2Rpc3BsYXk6dGFibGUtY2VsbDttYXgtd2lkdGg6MDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXNlbGVjdC12YWx1ZS10ZXh0e3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjUlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1oYXMtbGFiZWwgLm1hdC1zZWxlY3Q6bm90KC5tYXQtc2VsZWN0LWVtcHR5KSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZW1wdHkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtc2VsZWN0LWFycm93e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7bWFyZ2luOjAgNHB4fS5tYXQtc2VsZWN0LXBhbmVsLXdyYXB7ZmxleC1iYXNpczoxMDAlfS5tYXQtc2VsZWN0LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bWF4LWhlaWdodDoyNTZweDttaW4td2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjRweDtvdXRsaW5lOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNlbGVjdC1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGdyb3VwLWxhYmVsLC5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9ue2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjNlbTtoZWlnaHQ6M2VtfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3Q6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXh7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LXNlbGVjdCAubWF0LWZvcm0tZmllbGQtbGFiZWx7d2lkdGg6Y2FsYygxMDAlIC0gMThweCl9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNlbGVjdC1wbGFjZWhvbGRlcnt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lO2Rpc3BsYXk6YmxvY2t9Lm1hdC1zZWxlY3QtbWluLWxpbmU6ZW1wdHk6OmJlZm9yZXtjb250ZW50OiIgIjt3aGl0ZS1zcGFjZTpwcmU7d2lkdGg6MXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO29wYWNpdHk6MH1cbiddLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W01ZLnRyYW5zZm9ybVBhbmVsV3JhcCxNWS50cmFuc2Zvcm1QYW5lbF19LGNoYW5nZURldGVjdGlvbjowfSksTlkucHJvcERlY29yYXRvcnM9e29wdGlvbnM6W3t0eXBlOm9yLGFyZ3M6W3pMLHtkZXNjZW5kYW50czohMH1dfV0sb3B0aW9uR3JvdXBzOlt7dHlwZTpvcixhcmdzOltSTCx7ZGVzY2VuZGFudHM6ITB9XX1dLGN1c3RvbVRyaWdnZXI6W3t0eXBlOmlyLGFyZ3M6W0VZXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5ZLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zZWxlY3QiLGV4cG9ydEFzOiJtYXRTZWxlY3QiLHRlbXBsYXRlOidceDNjIS0tXG4gTm90ZSB0aGF0IHRoZSBzZWxlY3QgdHJpZ2dlciBlbGVtZW50IHNwZWNpZmllcyBgYXJpYS1vd25zYCBwb2ludGluZyB0byB0aGUgbGlzdGJveCBvdmVybGF5LlxuIFdoaWxlIGFyaWEtb3ducyBpcyBub3QgcmVxdWlyZWQgZm9yIHRoZSBBUklBIDEuMiBgcm9sZT0iY29tYm9ib3giYCBpbnRlcmFjdGlvbiBwYXR0ZXJuLFxuIGl0IGZpeGVzIGFuIGlzc3VlIHdpdGggVm9pY2VPdmVyIHdoZW4gdGhlIHNlbGVjdCBhcHBlYXJzIGluc2lkZSBvZiBhbiBgYXJpYS1tb2RlbD0idHJ1ZSJgXG4gZWxlbWVudCAoZS5nLiBhIGRpYWxvZykuIFdpdGhvdXQgdGhpcyBgYXJpYS1vd25zYCwgdGhlIGBhcmlhLW1vZGFsYCBvbiBhIGRpYWxvZyBwcmV2ZW50c1xuIFZvaWNlT3ZlciBmcm9tICJzZWVpbmciIHRoZSBzZWxlY3RcJ3MgbGlzdGJveCBvdmVybGF5IGZvciBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQuXG4gVXNpbmcgYGFyaWEtb3duc2AgcmUtcGFyZW50cyB0aGUgc2VsZWN0IG92ZXJsYXkgc28gdGhhdCBpdCB3b3JrcyBhZ2Fpbi5cbiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMjA2OTRcbi0tXHgzZVxuPGRpdiBjZGstb3ZlcmxheS1vcmlnaW5cbiAgICAgW2F0dHIuYXJpYS1vd25zXT0icGFuZWxPcGVuID8gaWQgKyBcJy1wYW5lbFwnIDogbnVsbCJcbiAgICAgY2xhc3M9Im1hdC1zZWxlY3QtdHJpZ2dlciJcbiAgICAgKGNsaWNrKT0idG9nZ2xlKCkiXG4gICAgICNvcmlnaW49ImNka092ZXJsYXlPcmlnaW4iXG4gICAgICN0cmlnZ2VyPlxuICA8ZGl2IGNsYXNzPSJtYXQtc2VsZWN0LXZhbHVlIiBbbmdTd2l0Y2hdPSJlbXB0eSIgW2F0dHIuaWRdPSJfdmFsdWVJZCI+XG4gICAgPHNwYW4gY2xhc3M9Im1hdC1zZWxlY3QtcGxhY2Vob2xkZXIgbWF0LXNlbGVjdC1taW4tbGluZSIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+e3twbGFjZWhvbGRlcn19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LXZhbHVlLXRleHQiICpuZ1N3aXRjaENhc2U9ImZhbHNlIiBbbmdTd2l0Y2hdPSIhIWN1c3RvbVRyaWdnZXIiPlxuICAgICAgPHNwYW4gY2xhc3M9Im1hdC1zZWxlY3QtbWluLWxpbmUiICpuZ1N3aXRjaERlZmF1bHQ+e3t0cmlnZ2VyVmFsdWV9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LXNlbGVjdC10cmlnZ2VyIiAqbmdTd2l0Y2hDYXNlPSJ0cnVlIj48L25nLWNvbnRlbnQ+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPSJtYXQtc2VsZWN0LWFycm93LXdyYXBwZXIiPjxkaXYgY2xhc3M9Im1hdC1zZWxlY3QtYXJyb3ciPjwvZGl2PjwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICBjZGstY29ubmVjdGVkLW92ZXJsYXlcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICBjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9ImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3NdPSJfb3ZlcmxheVBhbmVsQ2xhc3MiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPSJfc2Nyb2xsU3RyYXRlZ3kiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT0ib3JpZ2luIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPSJwYW5lbE9wZW4iXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT0iX3Bvc2l0aW9ucyJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aF09Il90cmlnZ2VyUmVjdD8ud2lkdGghIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFldPSJfb2Zmc2V0WSJcbiAgKGJhY2tkcm9wQ2xpY2spPSJjbG9zZSgpIlxuICAoYXR0YWNoKT0iX29uQXR0YWNoZWQoKSJcbiAgKGRldGFjaCk9ImNsb3NlKCkiPlxuICA8ZGl2IGNsYXNzPSJtYXQtc2VsZWN0LXBhbmVsLXdyYXAiIFtAdHJhbnNmb3JtUGFuZWxXcmFwXT5cbiAgICA8ZGl2XG4gICAgICAjcGFuZWxcbiAgICAgIHJvbGU9Imxpc3Rib3giXG4gICAgICB0YWJpbmRleD0iLTEiXG4gICAgICBjbGFzcz0ibWF0LXNlbGVjdC1wYW5lbCB7eyBfZ2V0UGFuZWxUaGVtZSgpIH19IlxuICAgICAgW2F0dHIuaWRdPSJpZCArIFwnLXBhbmVsXCciXG4gICAgICBbYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZV09Im11bHRpcGxlIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCB8fCBudWxsIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iX2dldFBhbmVsQXJpYUxhYmVsbGVkYnkoKSJcbiAgICAgIFtuZ0NsYXNzXT0icGFuZWxDbGFzcyJcbiAgICAgIFtAdHJhbnNmb3JtUGFuZWxdPSJtdWx0aXBsZSA/IFwnc2hvd2luZy1tdWx0aXBsZVwnIDogXCdzaG93aW5nXCciXG4gICAgICAoQHRyYW5zZm9ybVBhbmVsLmRvbmUpPSJfcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtLm5leHQoJGV2ZW50LnRvU3RhdGUpIlxuICAgICAgW3N0eWxlLnRyYW5zZm9ybU9yaWdpbl09Il90cmFuc2Zvcm1PcmlnaW4iXG4gICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT0iX3RyaWdnZXJGb250U2l6ZSJcbiAgICAgIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbicsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwidGFiSW5kZXgiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxob3N0Ontyb2xlOiJjb21ib2JveCIsImFyaWEtYXV0b2NvbXBsZXRlIjoibm9uZSIsImFyaWEtaGFzcG9wdXAiOiJ0cnVlIixjbGFzczoibWF0LXNlbGVjdCIsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIudGFiaW5kZXhdIjoidGFiSW5kZXgiLCJbYXR0ci5hcmlhLWNvbnRyb2xzXSI6J3BhbmVsT3BlbiA/IGlkICsgIi1wYW5lbCIgOiBudWxsJywiW2F0dHIuYXJpYS1leHBhbmRlZF0iOiJwYW5lbE9wZW4iLCJbYXR0ci5hcmlhLWxhYmVsXSI6ImFyaWFMYWJlbCB8fCBudWxsIiwiW2F0dHIuYXJpYS1yZXF1aXJlZF0iOiJyZXF1aXJlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6ImVycm9yU3RhdGUiLCJbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSI6Il9hcmlhRGVzY3JpYmVkYnkgfHwgbnVsbCIsIlthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF0iOiJfZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKSIsIltjbGFzcy5tYXQtc2VsZWN0LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1zZWxlY3QtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1zZWxlY3QtcmVxdWlyZWRdIjoicmVxdWlyZWQiLCJbY2xhc3MubWF0LXNlbGVjdC1lbXB0eV0iOiJlbXB0eSIsIltjbGFzcy5tYXQtc2VsZWN0LW11bHRpcGxlXSI6Im11bHRpcGxlIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSIsIihmb2N1cykiOiJfb25Gb2N1cygpIiwiKGJsdXIpIjoiX29uQmx1cigpIn0sYW5pbWF0aW9uczpbTVkudHJhbnNmb3JtUGFuZWxXcmFwLE1ZLnRyYW5zZm9ybVBhbmVsXSxwcm92aWRlcnM6W3twcm92aWRlOmZqLHVzZUV4aXN0aW5nOk5ZfSx7cHJvdmlkZTp3TCx1c2VFeGlzdGluZzpOWX1dLHN0eWxlczpbJy5tYXQtc2VsZWN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7b3V0bGluZTpub25lfS5tYXQtc2VsZWN0LXRyaWdnZXJ7ZGlzcGxheTppbmxpbmUtdGFibGU7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXRyaWdnZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtc2VsZWN0LXZhbHVle2Rpc3BsYXk6dGFibGUtY2VsbDttYXgtd2lkdGg6MDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXNlbGVjdC12YWx1ZS10ZXh0e3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjUlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1oYXMtbGFiZWwgLm1hdC1zZWxlY3Q6bm90KC5tYXQtc2VsZWN0LWVtcHR5KSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZW1wdHkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtc2VsZWN0LWFycm93e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7bWFyZ2luOjAgNHB4fS5tYXQtc2VsZWN0LXBhbmVsLXdyYXB7ZmxleC1iYXNpczoxMDAlfS5tYXQtc2VsZWN0LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bWF4LWhlaWdodDoyNTZweDttaW4td2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjRweDtvdXRsaW5lOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNlbGVjdC1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGdyb3VwLWxhYmVsLC5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9ue2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjNlbTtoZWlnaHQ6M2VtfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3Q6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXh7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LXNlbGVjdCAubWF0LWZvcm0tZmllbGQtbGFiZWx7d2lkdGg6Y2FsYygxMDAlIC0gMThweCl9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNlbGVjdC1wbGFjZWhvbGRlcnt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lO2Rpc3BsYXk6YmxvY2t9Lm1hdC1zZWxlY3QtbWluLWxpbmU6ZW1wdHk6OmJlZm9yZXtjb250ZW50OiIgIjt3aGl0ZS1zcGFjZTpwcmU7d2lkdGg6MXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO29wYWNpdHk6MH1cbiddfV19XSxudWxsLHtvcHRpb25zOlt7dHlwZTpvcixhcmdzOlt6TCx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbkdyb3Vwczpbe3R5cGU6b3IsYXJnczpbUkwse2Rlc2NlbmRhbnRzOiEwfV19XSxjdXN0b21UcmlnZ2VyOlt7dHlwZTppcixhcmdzOltFWV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgell7fWZ1bmN0aW9uIElZKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwic3BhbiIsNSksRHUoImNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPU51KCkuJGltcGxpY2l0O3JldHVybiBOdSgpLm9uQWN0aXZlUGx1Z2luU2VsZWN0aW9uKG4sby5pZCl9KSksUGYoMSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKS4kaW1wbGljaXQ7eW0oImRhdGEtcGx1Z2luLWlkIix0LmlkKSxEYygxKSxrZigiICIsdC50YWJfbmFtZSwiICIpfX1mdW5jdGlvbiBIWSh0LGUpe2lmKDEmdCYmKF91KDAsIm1hdC10YWIiLDMpLEhtKDEsSVksMiwyLCJuZy10ZW1wbGF0ZSIsNCksQ3UoKSksMiZ0KXtodSgiZGlzYWJsZWQiLCFlLiRpbXBsaWNpdC5lbmFibGVkKX19ZnVuY3Rpb24gRlkodCxlKXtpZigxJnQmJihfdSgwLCJtYXQtb3B0aW9uIiw5KSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7aHUoInZhbHVlIix0LmlkKSx5bSgiZGF0YS1wbHVnaW4taWQiLHQuaWQpLERjKDEpLGtmKCIgIix0LnRhYl9uYW1lLCIgIil9fWZ1bmN0aW9uIExZKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwibWF0LWZvcm0tZmllbGQiLDYpLF91KDEsIm1hdC1sYWJlbCIpLFBmKDIsIkluYWN0aXZlIiksQ3UoKSxfdSgzLCJtYXQtc2VsZWN0Iiw3KSxEdSgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkRpc2FibGVkUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZChuKX0pKSxIbSg0LEZZLDIsMywibWF0LW9wdGlvbiIsOCksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO0RjKDMpLGh1KCJ2YWx1ZSIsdC5zZWxlY3RlZFBsdWdpbiksRGMoMSksaHUoIm5nRm9yT2YiLHQuZGlzYWJsZWRQbHVnaW5zKX19elkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpZKX0selkuybVtb2Q9dW8oe3R5cGU6ell9KSx6WS7JtWluaj1Ebih7cHJvdmlkZXJzOltrWV0saW1wb3J0czpbW3J4LHVWLEZMLFdGXSx1QixSaixGTCxXRl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpZLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsdVYsRkwsV0ZdLGV4cG9ydHM6W3VCLFJqLE5ZLEFZLEZMLFdGXSxkZWNsYXJhdGlvbnM6W05ZLEFZXSxwcm92aWRlcnM6W2tZXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHpZLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bTlksQVldfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3J4LHVWLEZMLFdGXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt1QixSaixOWSxBWSxGTCxXRl19fSk7Y2xhc3MgQll7Y29uc3RydWN0b3IoKXt0aGlzLm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZD1uZXcgU3l9Z2V0QWN0aXZlUGx1Z2luSW5kZXgoKXtyZXR1cm4gdGhpcy5hY3RpdmVQbHVnaW5zLmZpbmRJbmRleCgoKHtpZDp0fSk9PnQ9PT10aGlzLnNlbGVjdGVkUGx1Z2luKSl9b25BY3RpdmVQbHVnaW5TZWxlY3Rpb24odCxlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZSl9b25EaXNhYmxlZFBsdWdpblNlbGVjdGlvbkNoYW5nZWQodCl7dGhpcy5vblBsdWdpblNlbGVjdGlvbkNoYW5nZWQuZW1pdCh0LnZhbHVlKX19QlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJZKX0sQlkuybVjbXA9c28oe3R5cGU6Qlksc2VsZWN0b3JzOltbInBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5zOiJhY3RpdmVQbHVnaW5zIixkaXNhYmxlZFBsdWdpbnM6ImRpc2FibGVkUGx1Z2lucyIsc2VsZWN0ZWRQbHVnaW46InNlbGVjdGVkUGx1Z2luIn0sb3V0cHV0czp7b25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkOiJvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQifSxkZWNsczozLHZhcnM6Myxjb25zdHM6W1siYW5pbWF0aW9uRHVyYXRpb24iLCIxMDBtcyIsMSwiYWN0aXZlLXBsdWdpbi1saXN0IiwzLCJzZWxlY3RlZEluZGV4Il0sWzMsImRpc2FibGVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImZsb2F0TGFiZWwiLCJuZXZlciIsNCwibmdJZiJdLFszLCJkaXNhYmxlZCJdLFsibWF0LXRhYi1sYWJlbCIsIiJdLFsxLCJwbHVnaW4tbmFtZSIsMywiY2xpY2siXSxbImZsb2F0TGFiZWwiLCJuZXZlciJdLFszLCJ2YWx1ZSIsInNlbGVjdGlvbkNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJtYXQtdGFiLWdyb3VwIiwwKSxIbSgxLEhZLDIsMSwibWF0LXRhYiIsMSksQ3UoKSxIbSgyLExZLDUsMiwibWF0LWZvcm0tZmllbGQiLDIpKSwyJmUmJihodSgic2VsZWN0ZWRJbmRleCIsbi5nZXRBY3RpdmVQbHVnaW5JbmRleCgpKSxEYygxKSxodSgibmdGb3JPZiIsbi5hY3RpdmVQbHVnaW5zKSxEYygxKSxodSgibmdJZiIsbi5kaXNhYmxlZFBsdWdpbnMubGVuZ3RoPjApKX0sZGlyZWN0aXZlczpbelUseHYsUHYsUFUsdlUsRGosX2osTlksekxdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmb250LXNpemU6MTRweDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59bWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwO21hcmdpbi10b3A6NXB4O3dpZHRoOjEzMHB4fW1hdC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo1MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5hY3RpdmUtcGx1Z2luLWxpc3RbX25nY29udGVudC0lQ09NUCVde2FsaWduLXNlbGY6c3RyZXRjaDtmbGV4OjEgMSBhdXRvO292ZXJmbG93OmhpZGRlbn0ucGx1Z2luLW5hbWVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzowIDEycHg7d2lkdGg6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0Lm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpc3QgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGlua3tjb2xvcjppbmhlcml0O29wYWNpdHk6Ljd9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWxhYmVsLWFjdGl2ZSwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1saW5rLm1hdC10YWItbGFiZWwtYWN0aXZle29wYWNpdHk6MX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOmN1cnJlbnRDb2xvcn1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke3Zpc2liaWxpdHk6aGlkZGVufVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItZGlzYWJsZWR7ZGlzcGxheTpub25lfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1saXN0LCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlciwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHMsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWx7aGVpZ2h0OjEwMCV9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHttaW4td2lkdGg6NDhweDtwYWRkaW5nOjA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwtY29udGVudHtoZWlnaHQ6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxpc3R7cGFkZGluZzowIDM2cHh9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46Zmlyc3QtY2hpbGQsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItbGFiZWwtY29udGFpbmVyLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPjpsYXN0LWNoaWxke2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+OmZpcnN0LWNoaWxkLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntsZWZ0OjB9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46bGFzdC1jaGlsZCwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj4ubWF0LXRhYi1sYWJlbC1jb250YWluZXJ7cmlnaHQ6MH1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCWSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9wbHVnaW5fc2VsZWN0b3JfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcGx1Z2luX3NlbGVjdG9yX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7YWN0aXZlUGx1Z2luczpbe3R5cGU6Ul99XSxkaXNhYmxlZFBsdWdpbnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRQbHVnaW46W3t0eXBlOlJffV0sb25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y29uc3QgVlk9YlMoaVQsKHQ9Pk9iamVjdC5rZXlzKHQpLm1hcCgoZT0+T2JqZWN0LmFzc2lnbih7fSx7aWQ6ZX0sdFtlXSkpKSkpLFVZPWJTKFZZLCh0PT50LmZpbHRlcigodD0+IXQuZW5hYmxlZCkpKSk7Y2xhc3Mgall7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlUGx1Z2luJD10aGlzLnN0b3JlLnBpcGUoclMob1QpKSx0aGlzLnBsdWdpbnMkPXRoaXMuc3RvcmUucGlwZShyUyhWWSkpLHRoaXMuZGlzYWJsZWRQbHVnaW5zJD10aGlzLnN0b3JlLnBpcGUoclMoVVkpKX1vblBsdWdpblNlbGVjdGlvbkNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEtFKHtwbHVnaW46dH0pKX19ZnVuY3Rpb24gV1kodCxlKXt9alkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpZKShmdShpUykpfSxqWS7JtWNtcD1zbyh7dHlwZTpqWSxzZWxlY3RvcnM6W1sicGx1Z2luLXNlbGVjdG9yIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbnMiLCJkaXNhYmxlZFBsdWdpbnMiLCJzZWxlY3RlZFBsdWdpbiIsIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwicGx1Z2luLXNlbGVjdG9yLWNvbXBvbmVudCIsMCksRHUoIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksQ3UoKSksMiZlJiZodSgiYWN0aXZlUGx1Z2lucyIsQ3koMSwzLG4ucGx1Z2lucyQpKSgiZGlzYWJsZWRQbHVnaW5zIixDeSgyLDUsbi5kaXNhYmxlZFBsdWdpbnMkKSkoInNlbGVjdGVkUGx1Z2luIixDeSgzLDcsbi5hY3RpdmVQbHVnaW4kKSl9LGRpcmVjdGl2ZXM6W0JZXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoalksW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicGx1Z2luLXNlbGVjdG9yIix0ZW1wbGF0ZTonXG4gICAgPHBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnRcbiAgICAgIFthY3RpdmVQbHVnaW5zXT0icGx1Z2lucyQgfCBhc3luYyJcbiAgICAgIFtkaXNhYmxlZFBsdWdpbnNdPSJkaXNhYmxlZFBsdWdpbnMkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRQbHVnaW5dPSJhY3RpdmVQbHVnaW4kIHwgYXN5bmMiXG4gICAgICAob25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkKT0ib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9wbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIEdZe2NvbnN0cnVjdG9yKCl7dGhpcy5yb2xlPSJkaWFsb2ciLHRoaXMucGFuZWxDbGFzcz0iIix0aGlzLmhhc0JhY2tkcm9wPSEwLHRoaXMuYmFja2Ryb3BDbGFzcz0iIix0aGlzLmRpc2FibGVDbG9zZT0hMSx0aGlzLndpZHRoPSIiLHRoaXMuaGVpZ2h0PSIiLHRoaXMubWF4V2lkdGg9IjgwdnciLHRoaXMuZGF0YT1udWxsLHRoaXMuYXJpYURlc2NyaWJlZEJ5PW51bGwsdGhpcy5hcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuYXJpYUxhYmVsPW51bGwsdGhpcy5hdXRvRm9jdXM9ITAsdGhpcy5yZXN0b3JlRm9jdXM9ITAsdGhpcy5jbG9zZU9uTmF2aWdhdGlvbj0hMH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFlZPXtkaWFsb2dDb250YWluZXI6eE8oImRpYWxvZ0NvbnRhaW5lciIsW2tPKCJ2b2lkLCBleGl0Iix3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC43KSJ9KSksa08oImVudGVyIix3Tyh7dHJhbnNmb3JtOiJub25lIn0pKSxETygiKiA9PiBlbnRlciIsT08oIjE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIix3Tyh7dHJhbnNmb3JtOiJub25lIixvcGFjaXR5OjF9KSkpLERPKCIqID0+IHZvaWQsICogPT4gZXhpdCIsT08oIjc1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIix3Tyh7b3BhY2l0eTowfSkpKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcVkoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkIil9Y2xhc3MgWlkgZXh0ZW5kcyBDQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNUcmFwRmFjdG9yeT1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fY29uZmlnPWksdGhpcy5fZm9jdXNNb25pdG9yPWEsdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkPW5ldyBTeSx0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1udWxsLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnFZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaERvbVBvcnRhbCh0KSksdGhpcy5fYXJpYUxhYmVsbGVkQnk9aS5hcmlhTGFiZWxsZWRCeXx8bnVsbCx0aGlzLl9kb2N1bWVudD1vfV9pbml0aWFsaXplV2l0aEF0dGFjaGVkQ29udGVudCgpe3RoaXMuX3NldHVwRm9jdXNUcmFwKCksdGhpcy5fY2FwdHVyZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpLHRoaXMuX2ZvY3VzRGlhbG9nQ29udGFpbmVyKCl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe3JldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZxWSgpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnFZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpfV9yZWNhcHR1cmVGb2N1cygpe2lmKCF0aGlzLl9jb250YWluc0ZvY3VzKCkpeyghdGhpcy5fY29uZmlnLmF1dG9Gb2N1c3x8IXRoaXMuX2ZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50KCkpJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19X3RyYXBGb2N1cygpe3RoaXMuX2NvbmZpZy5hdXRvRm9jdXM/dGhpcy5fZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTp0aGlzLl9jb250YWluc0ZvY3VzKCl8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9yZXN0b3JlRm9jdXMoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO2lmKHRoaXMuX2NvbmZpZy5yZXN0b3JlRm9jdXMmJnQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmZvY3VzKXtjb25zdCBlPUVIKCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZSYmZSE9PXRoaXMuX2RvY3VtZW50LmJvZHkmJmUhPT1uJiYhbi5jb250YWlucyhlKXx8KHRoaXMuX2ZvY3VzTW9uaXRvcj8odGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHQsdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGUpLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwpOnQuZm9jdXMoKSl9dGhpcy5fZm9jdXNUcmFwJiZ0aGlzLl9mb2N1c1RyYXAuZGVzdHJveSgpfV9zZXR1cEZvY3VzVHJhcCgpe3RoaXMuX2ZvY3VzVHJhcD10aGlzLl9mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpfV9jYXB0dXJlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCl7dGhpcy5fZG9jdW1lbnQmJih0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1FSCgpKX1fZm9jdXNEaWFsb2dDb250YWluZXIoKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9jb250YWluc0ZvY3VzKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT1FSCgpO3JldHVybiB0PT09ZXx8dC5jb250YWlucyhlKX19WlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpZKShmdShLaCksZnUodEYpLGZ1KE9iKSxmdShzTSw4KSxmdShHWSksZnUoeEYpKX0sWlkuybVkaXI9aG8oe3R5cGU6Wlksdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KE9CLDcpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX3BvcnRhbE91dGxldD10LmZpcnN0KX19LGZlYXR1cmVzOltRcF19KSxaWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTp0Rn0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOkdZfSx7dHlwZTp4Rn1dLFpZLnByb3BEZWNvcmF0b3JzPXtfcG9ydGFsT3V0bGV0Olt7dHlwZTphcixhcmdzOltPQix7c3RhdGljOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihaWSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnRGfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6R1l9LHt0eXBlOnhGfV19KSx7X3BvcnRhbE91dGxldDpbe3R5cGU6YXIsYXJnczpbT0Ise3N0YXRpYzohMH1dfV19KTtjbGFzcyBYWSBleHRlbmRzIFpZe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zdGF0ZT0iZW50ZXIifV9vbkFuaW1hdGlvbkRvbmUoe3RvU3RhdGU6dCx0b3RhbFRpbWU6ZX0peyJlbnRlciI9PT10Pyh0aGlzLl90cmFwRm9jdXMoKSx0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7c3RhdGU6Im9wZW5lZCIsdG90YWxUaW1lOmV9KSk6ImV4aXQiPT09dCYmKHRoaXMuX3Jlc3RvcmVGb2N1cygpLHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2VkIix0b3RhbFRpbWU6ZX0pKX1fb25BbmltYXRpb25TdGFydCh7dG9TdGF0ZTp0LHRvdGFsVGltZTplfSl7ImVudGVyIj09PXQ/dGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJvcGVuaW5nIix0b3RhbFRpbWU6ZX0pOiJleGl0IiE9PXQmJiJ2b2lkIiE9PXR8fHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2luZyIsdG90YWxUaW1lOmV9KX1fc3RhcnRFeGl0QW5pbWF0aW9uKCl7dGhpcy5fc3RhdGU9ImV4aXQiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfX1YWS7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoWFkpKSkobnx8WFkpfX0pKCksWFkuybVjbXA9c28oe3R5cGU6WFksc2VsZWN0b3JzOltbIm1hdC1kaWFsb2ctY29udGFpbmVyIl1dLGhvc3RBdHRyczpbInRhYmluZGV4IiwiLTEiLCJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwibWF0LWRpYWxvZy1jb250YWluZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZSdSgiQGRpYWxvZ0NvbnRhaW5lci5zdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uU3RhcnQoZSl9KSkoIkBkaWFsb2dDb250YWluZXIuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uRG9uZShlKX0pKSwyJmUmJihjZygiaWQiLG4uX2lkKSx5bSgicm9sZSIsbi5fY29uZmlnLnJvbGUpKCJhcmlhLWxhYmVsbGVkYnkiLG4uX2NvbmZpZy5hcmlhTGFiZWw/bnVsbDpuLl9hcmlhTGFiZWxsZWRCeSkoImFyaWEtbGFiZWwiLG4uX2NvbmZpZy5hcmlhTGFiZWwpKCJhcmlhLWRlc2NyaWJlZGJ5IixuLl9jb25maWcuYXJpYURlc2NyaWJlZEJ5fHxudWxsKSxkZygiQGRpYWxvZ0NvbnRhaW5lciIsbi5fc3RhdGUpKX0sZmVhdHVyZXM6W1FwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkhtKDAsV1ksMCwwLCJuZy10ZW1wbGF0ZSIsMCl9LGRpcmVjdGl2ZXM6W09CXSxzdHlsZXM6WyIubWF0LWRpYWxvZy1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjI0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmF1dG87b3V0bGluZTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWRpYWxvZy1jb250ZW50e2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgLTI0cHg7cGFkZGluZzowIDI0cHg7bWF4LWhlaWdodDo2NXZoO292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Lm1hdC1kaWFsb2ctdGl0bGV7bWFyZ2luOjAgMCAyMHB4O2Rpc3BsYXk6YmxvY2t9Lm1hdC1kaWFsb2ctYWN0aW9uc3twYWRkaW5nOjhweCAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttaW4taGVpZ2h0OjUycHg7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Y29udGVudC1ib3g7bWFyZ2luLWJvdHRvbTotMjRweH0ubWF0LWRpYWxvZy1hY3Rpb25zW2FsaWduPWVuZF17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249Y2VudGVyXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1tZGMtYnV0dG9uLWJhc2UrLm1hdC1tZGMtYnV0dG9uLWJhc2V7bWFyZ2luLWxlZnQ6OHB4fVtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtYnV0dG9uLWJhc2UrLm1hdC1idXR0b24tYmFzZSxbZGlyPXJ0bF0gLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDo4cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltZWS5kaWFsb2dDb250YWluZXJdfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWFksW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWRpYWxvZy1jb250YWluZXIiLHRlbXBsYXRlOiI8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG4iLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246VW4uRGVmYXVsdCxhbmltYXRpb25zOltZWS5kaWFsb2dDb250YWluZXJdLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLWNvbnRhaW5lciIsdGFiaW5kZXg6Ii0xIiwiYXJpYS1tb2RhbCI6InRydWUiLCJbaWRdIjoiX2lkIiwiW2F0dHIucm9sZV0iOiJfY29uZmlnLnJvbGUiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoiX2NvbmZpZy5hcmlhTGFiZWwgPyBudWxsIDogX2FyaWFMYWJlbGxlZEJ5IiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJfY29uZmlnLmFyaWFMYWJlbCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoiX2NvbmZpZy5hcmlhRGVzY3JpYmVkQnkgfHwgbnVsbCIsIltAZGlhbG9nQ29udGFpbmVyXSI6Il9zdGF0ZSIsIihAZGlhbG9nQ29udGFpbmVyLnN0YXJ0KSI6Il9vbkFuaW1hdGlvblN0YXJ0KCRldmVudCkiLCIoQGRpYWxvZ0NvbnRhaW5lci5kb25lKSI6Il9vbkFuaW1hdGlvbkRvbmUoJGV2ZW50KSJ9LHN0eWxlczpbIi5tYXQtZGlhbG9nLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6YXV0bztvdXRsaW5lOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OmluaGVyaXQ7bWF4LWhlaWdodDppbmhlcml0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1kaWFsb2ctY29udGFpbmVye291dGxpbmU6c29saWQgMXB4fS5tYXQtZGlhbG9nLWNvbnRlbnR7ZGlzcGxheTpibG9jazttYXJnaW46MCAtMjRweDtwYWRkaW5nOjAgMjRweDttYXgtaGVpZ2h0OjY1dmg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0ubWF0LWRpYWxvZy10aXRsZXttYXJnaW46MCAwIDIwcHg7ZGlzcGxheTpibG9ja30ubWF0LWRpYWxvZy1hY3Rpb25ze3BhZGRpbmc6OHB4IDA7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21pbi1oZWlnaHQ6NTJweDthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpjb250ZW50LWJveDttYXJnaW4tYm90dG9tOi0yNHB4fS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249ZW5kXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1kaWFsb2ctYWN0aW9uc1thbGlnbj1jZW50ZXJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LWJ1dHRvbi1iYXNlKy5tYXQtYnV0dG9uLWJhc2UsLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDo4cHh9W2Rpcj1ydGxdIC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLFtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtbWRjLWJ1dHRvbi1iYXNlKy5tYXQtbWRjLWJ1dHRvbi1iYXNle21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjhweH1cbiJdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEtZPTA7Y2xhc3MgSll7Y29uc3RydWN0b3IodCxlLG49Im1hdC1kaWFsb2ctIitLWSsrKXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2U9ZSx0aGlzLmlkPW4sdGhpcy5kaXNhYmxlQ2xvc2U9dGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2NvbmZpZy5kaXNhYmxlQ2xvc2UsdGhpcy5fYWZ0ZXJPcGVuZWQ9bmV3IEIsdGhpcy5fYWZ0ZXJDbG9zZWQ9bmV3IEIsdGhpcy5fYmVmb3JlQ2xvc2VkPW5ldyBCLHRoaXMuX3N0YXRlPTAsZS5faWQ9bixlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShmZSgodD0+Im9wZW5lZCI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCksdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKX0pKSxlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShmZSgodD0+ImNsb3NlZCI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoKCk9PntjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VGYWxsYmFja1RpbWVvdXQpLHRoaXMuX2ZpbmlzaERpYWxvZ0Nsb3NlKCl9KSksdC5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9iZWZvcmVDbG9zZWQubmV4dCh0aGlzLl9yZXN1bHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KSx0aGlzLl9hZnRlckNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9bnVsbCx0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKX0pKSx0LmtleWRvd25FdmVudHMoKS5waXBlKGZlKCh0PT50LmtleUNvZGU9PT1ySCYmIXRoaXMuZGlzYWJsZUNsb3NlJiYhZEgodCkpKSkuc3Vic2NyaWJlKCh0PT57dC5wcmV2ZW50RGVmYXVsdCgpLFFZKHRoaXMsImtleWJvYXJkIil9KSksdC5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuZGlzYWJsZUNsb3NlP3RoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9yZWNhcHR1cmVGb2N1cygpOlFZKHRoaXMsIm1vdXNlIil9KSl9Y2xvc2UodCl7dGhpcy5fcmVzdWx0PXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKGZlKCh0PT4iY2xvc2luZyI9PT10LnN0YXRlKSksdmUoMSkpLnN1YnNjcmliZSgoZT0+e3RoaXMuX2JlZm9yZUNsb3NlZC5uZXh0KHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fZmluaXNoRGlhbG9nQ2xvc2UoKSksZS50b3RhbFRpbWUrMTAwKX0pKSx0aGlzLl9zdGF0ZT0xLHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9zdGFydEV4aXRBbmltYXRpb24oKX1hZnRlck9wZW5lZCgpe3JldHVybiB0aGlzLl9hZnRlck9wZW5lZH1hZnRlckNsb3NlZCgpe3JldHVybiB0aGlzLl9hZnRlckNsb3NlZH1iZWZvcmVDbG9zZWQoKXtyZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2VkfWJhY2tkcm9wQ2xpY2soKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCl9a2V5ZG93bkV2ZW50cygpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKX11cGRhdGVQb3NpdGlvbih0KXtsZXQgZT10aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KCk7cmV0dXJuIHQmJih0LmxlZnR8fHQucmlnaHQpP3QubGVmdD9lLmxlZnQodC5sZWZ0KTplLnJpZ2h0KHQucmlnaHQpOmUuY2VudGVySG9yaXpvbnRhbGx5KCksdCYmKHQudG9wfHx0LmJvdHRvbSk/dC50b3A/ZS50b3AodC50b3ApOmUuYm90dG9tKHQuYm90dG9tKTplLmNlbnRlclZlcnRpY2FsbHkoKSx0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdGhpc311cGRhdGVTaXplKHQ9IiIsZT0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dCxoZWlnaHQ6ZX0pLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzfWFkZFBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYWRkUGFuZWxDbGFzcyh0KSx0aGlzfXJlbW92ZVBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYucmVtb3ZlUGFuZWxDbGFzcyh0KSx0aGlzfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRlfV9maW5pc2hEaWFsb2dDbG9zZSgpe3RoaXMuX3N0YXRlPTIsdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9X2dldFBvc2l0aW9uU3RyYXRlZ3koKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5fX1mdW5jdGlvbiBRWSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PXQuX2NvbnRhaW5lckluc3RhbmNlJiYodC5fY29udGFpbmVySW5zdGFuY2UuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPWUpLHQuY2xvc2Uobil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0ICRZPW5ldyBlcigiTWF0RGlhbG9nRGF0YSIpLHRxPW5ldyBlcigibWF0LWRpYWxvZy1kZWZhdWx0LW9wdGlvbnMiKSxlcT1uZXcgZXIoIm1hdC1kaWFsb2ctc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3QgbnE9e3Byb3ZpZGU6ZXEsZGVwczpbclZdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gb3EodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpfX07Y2xhc3MgaXF7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPW4sdGhpcy5fcGFyZW50RGlhbG9nPW8sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1pLHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yPXIsdGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZT1zLHRoaXMuX2RpYWxvZ0RhdGFUb2tlbj1sLHRoaXMuX29wZW5EaWFsb2dzQXRUaGlzTGV2ZWw9W10sdGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbD1uZXcgQix0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsPW5ldyBCLHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cz1uZXcgTWFwLHRoaXMuYWZ0ZXJBbGxDbG9zZWQ9b2UoKCgpPT50aGlzLm9wZW5EaWFsb2dzLmxlbmd0aD90aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpOnRoaXMuX2dldEFmdGVyQWxsQ2xvc2VkKCkucGlwZShCZSh2b2lkIDApKSkpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PWF9Z2V0IG9wZW5EaWFsb2dzKCl7cmV0dXJuIHRoaXMuX3BhcmVudERpYWxvZz90aGlzLl9wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3M6dGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbH1nZXQgYWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5fcGFyZW50RGlhbG9nP3RoaXMuX3BhcmVudERpYWxvZy5hZnRlck9wZW5lZDp0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsfV9nZXRBZnRlckFsbENsb3NlZCgpe2NvbnN0IHQ9dGhpcy5fcGFyZW50RGlhbG9nO3JldHVybiB0P3QuX2dldEFmdGVyQWxsQ2xvc2VkKCk6dGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbH1vcGVuKHQsZSl7aWYoKGU9KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGUsdGhpcy5fZGVmYXVsdE9wdGlvbnN8fG5ldyBHWSkpLmlkJiZ0aGlzLmdldERpYWxvZ0J5SWQoZS5pZCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcihgRGlhbG9nIHdpdGggaWQgIiR7ZS5pZH0iIGV4aXN0cyBhbHJlYWR5LiBUaGUgZGlhbG9nIGlkIG11c3QgYmUgdW5pcXVlLmApO2NvbnN0IG89dGhpcy5fY3JlYXRlT3ZlcmxheShlKSxpPXRoaXMuX2F0dGFjaERpYWxvZ0NvbnRhaW5lcihvLGUpLGE9dGhpcy5fYXR0YWNoRGlhbG9nQ29udGVudCh0LGksbyxlKTtyZXR1cm4gdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGh8fHRoaXMuX2hpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKSx0aGlzLm9wZW5EaWFsb2dzLnB1c2goYSksYS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3JlbW92ZU9wZW5EaWFsb2coYSkpKSx0aGlzLmFmdGVyT3BlbmVkLm5leHQoYSksaS5faW5pdGlhbGl6ZVdpdGhBdHRhY2hlZENvbnRlbnQoKSxhfWNsb3NlQWxsKCl7dGhpcy5fY2xvc2VEaWFsb2dzKHRoaXMub3BlbkRpYWxvZ3MpfWdldERpYWxvZ0J5SWQodCl7cmV0dXJuIHRoaXMub3BlbkRpYWxvZ3MuZmluZCgoZT0+ZS5pZD09PXQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Nsb3NlRGlhbG9ncyh0aGlzLl9vcGVuRGlhbG9nc0F0VGhpc0xldmVsKSx0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCksdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpfV9jcmVhdGVPdmVybGF5KHQpe2NvbnN0IGU9dGhpcy5fZ2V0T3ZlcmxheUNvbmZpZyh0KTtyZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUoZSl9X2dldE92ZXJsYXlDb25maWcodCl7Y29uc3QgZT1uZXcgSUIoe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLHNjcm9sbFN0cmF0ZWd5OnQuc2Nyb2xsU3RyYXRlZ3l8fHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3MsaGFzQmFja2Ryb3A6dC5oYXNCYWNrZHJvcCxkaXJlY3Rpb246dC5kaXJlY3Rpb24sbWluV2lkdGg6dC5taW5XaWR0aCxtaW5IZWlnaHQ6dC5taW5IZWlnaHQsbWF4V2lkdGg6dC5tYXhXaWR0aCxtYXhIZWlnaHQ6dC5tYXhIZWlnaHQsZGlzcG9zZU9uTmF2aWdhdGlvbjp0LmNsb3NlT25OYXZpZ2F0aW9ufSk7cmV0dXJuIHQuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10LmJhY2tkcm9wQ2xhc3MpLGV9X2F0dGFjaERpYWxvZ0NvbnRhaW5lcih0LGUpe2NvbnN0IG49TnAuY3JlYXRlKHtwYXJlbnQ6ZSYmZS52aWV3Q29udGFpbmVyUmVmJiZlLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3J8fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6R1ksdXNlVmFsdWU6ZX1dfSksbz1uZXcgYkIodGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZSxlLnZpZXdDb250YWluZXJSZWYsbixlLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7cmV0dXJuIHQuYXR0YWNoKG8pLmluc3RhbmNlfV9hdHRhY2hEaWFsb2dDb250ZW50KHQsZSxuLG8pe2NvbnN0IGk9bmV3IHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yKG4sZSxvLmlkKTtpZih0IGluc3RhbmNlb2YgRWIpZS5hdHRhY2hUZW1wbGF0ZVBvcnRhbChuZXcgeUIodCxudWxsLHskaW1wbGljaXQ6by5kYXRhLGRpYWxvZ1JlZjppfSkpO2Vsc2V7Y29uc3Qgbj10aGlzLl9jcmVhdGVJbmplY3RvcihvLGksZSksYT1lLmF0dGFjaENvbXBvbmVudFBvcnRhbChuZXcgYkIodCxvLnZpZXdDb250YWluZXJSZWYsbikpO2kuY29tcG9uZW50SW5zdGFuY2U9YS5pbnN0YW5jZX1yZXR1cm4gaS51cGRhdGVTaXplKG8ud2lkdGgsby5oZWlnaHQpLnVwZGF0ZVBvc2l0aW9uKG8ucG9zaXRpb24pLGl9X2NyZWF0ZUluamVjdG9yKHQsZSxuKXtjb25zdCBvPXQmJnQudmlld0NvbnRhaW5lclJlZiYmdC52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLGk9W3twcm92aWRlOnRoaXMuX2RpYWxvZ0NvbnRhaW5lclR5cGUsdXNlVmFsdWU6bn0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nRGF0YVRva2VuLHVzZVZhbHVlOnQuZGF0YX0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nUmVmQ29uc3RydWN0b3IsdXNlVmFsdWU6ZX1dO3JldHVybiF0LmRpcmVjdGlvbnx8byYmby5nZXQoQUYsbnVsbCxIbi5PcHRpb25hbCl8fGkucHVzaCh7cHJvdmlkZTpBRix1c2VWYWx1ZTp7dmFsdWU6dC5kaXJlY3Rpb24sY2hhbmdlOnp0KCl9fSksTnAuY3JlYXRlKHtwYXJlbnQ6b3x8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOml9KX1fcmVtb3ZlT3BlbkRpYWxvZyh0KXtjb25zdCBlPXRoaXMub3BlbkRpYWxvZ3MuaW5kZXhPZih0KTtlPi0xJiYodGhpcy5vcGVuRGlhbG9ncy5zcGxpY2UoZSwxKSx0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aHx8KHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5mb3JFYWNoKCgodCxlKT0+e3Q/ZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIix0KTplLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKX0pKSx0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuY2xlYXIoKSx0aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpLm5leHQoKSkpfV9oaWRlTm9uRGlhbG9nQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCl7Y29uc3QgdD10aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtpZih0LnBhcmVudEVsZW1lbnQpe2NvbnN0IGU9dC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+LTE7bi0tKXtsZXQgbz1lW25dO289PT10fHwiU0NSSVBUIj09PW8ubm9kZU5hbWV8fCJTVFlMRSI9PT1vLm5vZGVOYW1lfHxvLmhhc0F0dHJpYnV0ZSgiYXJpYS1saXZlIil8fCh0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuc2V0KG8sby5nZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpLG8uc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSl9fX1fY2xvc2VEaWFsb2dzKHQpe2xldCBlPXQubGVuZ3RoO2Zvcig7ZS0tOyl0W2VdLmNsb3NlKCl9fWlxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpcSkoZnUoclYpLGZ1KE5wKSxmdSh2b2lkIDApLGZ1KHZvaWQgMCksZnUocUIpLGZ1KHZvaWQgMCksZnUoY3IpLGZ1KGNyKSxmdShlcikpfSxpcS7JtWRpcj1obyh7dHlwZTppcX0pLGlxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6clZ9LHt0eXBlOk5wfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnZvaWQgMH0se3R5cGU6cUJ9LHt0eXBlOnZvaWQgMH0se3R5cGU6Y3J9LHt0eXBlOmNyfSx7dHlwZTplcn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXEsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnJWfSx7dHlwZTpOcH0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnFCfSx7dHlwZTp2b2lkIDB9LHt0eXBlOmNyfSx7dHlwZTpjcn0se3R5cGU6ZXJ9XX0pLG51bGwpO2NsYXNzIGFxIGV4dGVuZHMgaXF7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7c3VwZXIodCxlLG8sYSxyLGksSlksWFksJFkpfX1hcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YXEpKFRyKHJWKSxUcihOcCksVHIoTU0sOCksVHIodHEsOCksVHIoZXEpLFRyKGFxLDEyKSxUcihxQikpfSxhcS7JtXByb3Y9U24oe3Rva2VuOmFxLGZhY3Rvcnk6YXEuybVmYWN9KSxhcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnJWfSx7dHlwZTpOcH0se3R5cGU6TU0sZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6R1ksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3RxXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbZXFdfV19LHt0eXBlOmFxLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfSx7dHlwZTpxQn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYXEsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnJWfSx7dHlwZTpOcH0se3R5cGU6TU0sZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6R1ksZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3RxXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbZXFdfV19LHt0eXBlOmFxLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpVcn1dfSx7dHlwZTpxQn1dfSksbnVsbCk7bGV0IHJxPTA7Y2xhc3Mgc3F7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMudHlwZT0iYnV0dG9uIn1uZ09uSW5pdCgpe3RoaXMuZGlhbG9nUmVmfHwodGhpcy5kaWFsb2dSZWY9cHEodGhpcy5fZWxlbWVudFJlZix0aGlzLl9kaWFsb2cub3BlbkRpYWxvZ3MpKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBlPXQuX21hdERpYWxvZ0Nsb3NlfHx0Ll9tYXREaWFsb2dDbG9zZVJlc3VsdDtlJiYodGhpcy5kaWFsb2dSZXN1bHQ9ZS5jdXJyZW50VmFsdWUpfV9vbkJ1dHRvbkNsaWNrKHQpe1FZKHRoaXMuZGlhbG9nUmVmLDA9PT10LnNjcmVlblgmJjA9PT10LnNjcmVlblk/ImtleWJvYXJkIjoibW91c2UiLHRoaXMuZGlhbG9nUmVzdWx0KX19c3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNxKShmdShKWSw4KSxmdShLaCksZnUoYXEpKX0sc3EuybVkaXI9aG8oe3R5cGU6c3Esc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIiIsIm1hdERpYWxvZ0Nsb3NlIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQnV0dG9uQ2xpY2soZSl9KSksMiZlJiZ5bSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJ0eXBlIixuLnR5cGUpfSxpbnB1dHM6e3R5cGU6InR5cGUiLGRpYWxvZ1Jlc3VsdDpbIm1hdC1kaWFsb2ctY2xvc2UiLCJkaWFsb2dSZXN1bHQiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sX21hdERpYWxvZ0Nsb3NlOlsibWF0RGlhbG9nQ2xvc2UiLCJfbWF0RGlhbG9nQ2xvc2UiXX0sZXhwb3J0QXM6WyJtYXREaWFsb2dDbG9zZSJdLGZlYXR1cmVzOltxb119KSxzcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkpZLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOktofSx7dHlwZTphcX1dLHNxLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSx0eXBlOlt7dHlwZTpSX31dLGRpYWxvZ1Jlc3VsdDpbe3R5cGU6Ul8sYXJnczpbIm1hdC1kaWFsb2ctY2xvc2UiXX1dLF9tYXREaWFsb2dDbG9zZTpbe3R5cGU6Ul8sYXJnczpbIm1hdERpYWxvZ0Nsb3NlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihzcSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LWRpYWxvZy1jbG9zZV0sIFttYXREaWFsb2dDbG9zZV0iLGV4cG9ydEFzOiJtYXREaWFsb2dDbG9zZSIsaG9zdDp7IihjbGljaykiOiJfb25CdXR0b25DbGljaygkZXZlbnQpIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLnR5cGVdIjoidHlwZSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SlksZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6S2h9LHt0eXBlOmFxfV19KSx7dHlwZTpbe3R5cGU6Ul99XSxkaWFsb2dSZXN1bHQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXQtZGlhbG9nLWNsb3NlIl19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxfbWF0RGlhbG9nQ2xvc2U6W3t0eXBlOlJfLGFyZ3M6WyJtYXREaWFsb2dDbG9zZSJdfV19KTtjbGFzcyBscXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMuaWQ9Im1hdC1kaWFsb2ctdGl0bGUtIitycSsrfW5nT25Jbml0KCl7dGhpcy5fZGlhbG9nUmVmfHwodGhpcy5fZGlhbG9nUmVmPXBxKHRoaXMuX2VsZW1lbnRSZWYsdGhpcy5fZGlhbG9nLm9wZW5EaWFsb2dzKSksdGhpcy5fZGlhbG9nUmVmJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZGlhbG9nUmVmLl9jb250YWluZXJJbnN0YW5jZTt0JiYhdC5fYXJpYUxhYmVsbGVkQnkmJih0Ll9hcmlhTGFiZWxsZWRCeT10aGlzLmlkKX0pKX19bHEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxxKShmdShKWSw4KSxmdShLaCksZnUoYXEpKX0sbHEuybVkaXI9aG8oe3R5cGU6bHEsc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIiIsIm1hdERpYWxvZ1RpdGxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWRpYWxvZy10aXRsZSJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNnKCJpZCIsbi5pZCl9LGlucHV0czp7aWQ6ImlkIn0sZXhwb3J0QXM6WyJtYXREaWFsb2dUaXRsZSJdfSksbHEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpKWSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpLaH0se3R5cGU6YXF9XSxscS5wcm9wRGVjb3JhdG9ycz17aWQ6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobHEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctdGl0bGVdLCBbbWF0RGlhbG9nVGl0bGVdIixleHBvcnRBczoibWF0RGlhbG9nVGl0bGUiLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLXRpdGxlIiwiW2lkXSI6ImlkIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpKWSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpLaH0se3R5cGU6YXF9XX0pLHtpZDpbe3R5cGU6Ul99XX0pO2NsYXNzIGNxe31jcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y3EpfSxjcS7JtWRpcj1obyh7dHlwZTpjcSxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1jb250ZW50IiwiIl0sWyJtYXQtZGlhbG9nLWNvbnRlbnQiXSxbIiIsIm1hdERpYWxvZ0NvbnRlbnQiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWNvbnRlbnQiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoY3EsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctY29udGVudF0sIG1hdC1kaWFsb2ctY29udGVudCwgW21hdERpYWxvZ0NvbnRlbnRdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1jb250ZW50In19XX1dLG51bGwsbnVsbCk7Y2xhc3MgZHF7fWZ1bmN0aW9uIHBxKHQsZSl7bGV0IG49dC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7Zm9yKDtuJiYhbi5jbGFzc0xpc3QuY29udGFpbnMoIm1hdC1kaWFsb2ctY29udGFpbmVyIik7KW49bi5wYXJlbnRFbGVtZW50O3JldHVybiBuP2UuZmluZCgodD0+dC5pZD09PW4uaWQpKTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9kcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZHEpfSxkcS7JtWRpcj1obyh7dHlwZTpkcSxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1hY3Rpb25zIiwiIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiXSxbIiIsIm1hdERpYWxvZ0FjdGlvbnMiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWFjdGlvbnMiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZHEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctYWN0aW9uc10sIG1hdC1kaWFsb2ctYWN0aW9ucywgW21hdERpYWxvZ0FjdGlvbnNdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1hY3Rpb25zIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgbXF7fW1xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtcSl9LG1xLsm1bW9kPXVvKHt0eXBlOm1xfSksbXEuybVpbmo9RG4oe3Byb3ZpZGVyczpbYXEsbnFdLGltcG9ydHM6W1t1Vix3QixXRl0sV0ZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtcSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3VWLHdCLFdGXSxleHBvcnRzOltYWSxzcSxscSxjcSxkcSxXRl0sZGVjbGFyYXRpb25zOltYWSxzcSxscSxkcSxjcV0scHJvdmlkZXJzOlthcSxucV0sZW50cnlDb21wb25lbnRzOltYWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhtcSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1hZLHNxLGxxLGRxLGNxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt1Vix3QixXRl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWFksc3EsbHEsY3EsZHEsV0ZdfX0pO2NsYXNzIHVxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZG9jdW1lbnQ9ZTtjb25zdCBuPXRoaXMuX3RleHRhcmVhPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIiksbz1uLnN0eWxlO28ucG9zaXRpb249ImZpeGVkIixvLnRvcD1vLm9wYWNpdHk9IjAiLG8ubGVmdD0iLTk5OWVtIixuLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksbi52YWx1ZT10LHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobil9Y29weSgpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWE7bGV0IGU9ITE7dHJ5e2lmKHQpe2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0LnNlbGVjdCgpLHQuc2V0U2VsZWN0aW9uUmFuZ2UoMCx0LnZhbHVlLmxlbmd0aCksZT10aGlzLl9kb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLG4mJm4uZm9jdXMoKX19Y2F0Y2godCl7fXJldHVybiBlfWRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX3RleHRhcmVhO3QmJih0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl90ZXh0YXJlYT12b2lkIDApfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZnF7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jdW1lbnQ9dH1jb3B5KHQpe2NvbnN0IGU9dGhpcy5iZWdpbkNvcHkodCksbj1lLmNvcHkoKTtyZXR1cm4gZS5kZXN0cm95KCksbn1iZWdpbkNvcHkodCl7cmV0dXJuIG5ldyB1cSh0LHRoaXMuX2RvY3VtZW50KX19ZnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZxKShUcihzTSkpfSxmcS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgZnEoVHIoc00pKX0sdG9rZW46ZnEscHJvdmlkZWRJbjoicm9vdCJ9KSxmcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZnEsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBncT1uZXcgZXIoIkNES19DT1BZX1RPX0NMSVBCT0FSRF9DT05GSUciKTtjbGFzcyBocXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fY2xpcGJvYXJkPXQsdGhpcy5fbmdab25lPWUsdGhpcy50ZXh0PSIiLHRoaXMuYXR0ZW1wdHM9MSx0aGlzLmNvcGllZD1uZXcgU3ksdGhpcy5fcGVuZGluZz1uZXcgU2V0LG4mJm51bGwhPW4uYXR0ZW1wdHMmJih0aGlzLmF0dGVtcHRzPW4uYXR0ZW1wdHMpfWNvcHkodD10aGlzLmF0dGVtcHRzKXtpZih0PjEpe2xldCBlPXQ7Y29uc3Qgbj10aGlzLl9jbGlwYm9hcmQuYmVnaW5Db3B5KHRoaXMudGV4dCk7dGhpcy5fcGVuZGluZy5hZGQobik7Y29uc3Qgbz0oKT0+e2NvbnN0IHQ9bi5jb3B5KCk7dHx8IS0tZXx8dGhpcy5fZGVzdHJveWVkPyh0aGlzLl9jdXJyZW50VGltZW91dD1udWxsLHRoaXMuX3BlbmRpbmcuZGVsZXRlKG4pLG4uZGVzdHJveSgpLHRoaXMuY29waWVkLmVtaXQodCkpOnRoaXMuX2N1cnJlbnRUaW1lb3V0PXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnNldFRpbWVvdXQobywxKSkpfTtvKCl9ZWxzZSB0aGlzLmNvcGllZC5lbWl0KHRoaXMuX2NsaXBib2FyZC5jb3B5KHRoaXMudGV4dCkpfW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50VGltZW91dCksdGhpcy5fcGVuZGluZy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX3BlbmRpbmcuY2xlYXIoKSx0aGlzLl9kZXN0cm95ZWQ9ITB9fWhxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxocSkoZnUoZnEpLGZ1KG1DKSxmdShncSw4KSl9LGhxLsm1ZGlyPWhvKHt0eXBlOmhxLHNlbGVjdG9yczpbWyIiLCJjZGtDb3B5VG9DbGlwYm9hcmQiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jb3B5KCl9KSl9LGlucHV0czp7dGV4dDpbImNka0NvcHlUb0NsaXBib2FyZCIsInRleHQiXSxhdHRlbXB0czpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIiwiYXR0ZW1wdHMiXX0sb3V0cHV0czp7Y29waWVkOiJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQifX0pLGhxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZnF9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2dxXX1dfV0saHEucHJvcERlY29yYXRvcnM9e3RleHQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmQiXX1dLGF0dGVtcHRzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQXR0ZW1wdHMiXX1dLGNvcGllZDpbe3R5cGU6RV8sYXJnczpbImNka0NvcHlUb0NsaXBib2FyZENvcGllZCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaHEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NvcHlUb0NsaXBib2FyZF0iLGhvc3Q6eyIoY2xpY2spIjoiY29weSgpIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpmcX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbZ3FdfV19XX0pLHt0ZXh0Olt7dHlwZTpSXyxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkIl19XSxhdHRlbXB0czpbe3R5cGU6Ul8sYXJnczpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIl19XSxjb3BpZWQ6W3t0eXBlOkVfLGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBicXt9YnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGJxKX0sYnEuybVtb2Q9dW8oe3R5cGU6YnF9KSxicS7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihicSxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbaHFdLGV4cG9ydHM6W2hxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGJxLHtkZWNsYXJhdGlvbnM6W2hxXSxleHBvcnRzOltocV19KTtmdW5jdGlvbiB5cSh0KXtyZXR1cm4gRXJyb3IoYFVuYWJsZSB0byBmaW5kIGljb24gd2l0aCB0aGUgbmFtZSAiJHt0fSJgKX1mdW5jdGlvbiBfcSh0KXtyZXR1cm4gRXJyb3IoYFRoZSBVUkwgcHJvdmlkZWQgdG8gTWF0SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBhIHJlc291cmNlIFVSTCB2aWEgQW5ndWxhcidzIERvbVNhbml0aXplci4gQXR0ZW1wdGVkIFVSTCB3YXMgIiR7dH0iLmApfWZ1bmN0aW9uIENxKHQpe3JldHVybiBFcnJvcihgVGhlIGxpdGVyYWwgcHJvdmlkZWQgdG8gTWF0SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBzYWZlIEhUTUwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplci4gQXR0ZW1wdGVkIGxpdGVyYWwgd2FzICIke3R9Ii5gKX1jbGFzcyBNcXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy51cmw9dCx0aGlzLnN2Z1RleHQ9ZSx0aGlzLm9wdGlvbnM9bn19Y2xhc3MgdnF7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5faHR0cENsaWVudD10LHRoaXMuX3Nhbml0aXplcj1lLHRoaXMuX2Vycm9ySGFuZGxlcj1vLHRoaXMuX3N2Z0ljb25Db25maWdzPW5ldyBNYXAsdGhpcy5faWNvblNldENvbmZpZ3M9bmV3IE1hcCx0aGlzLl9jYWNoZWRJY29uc0J5VXJsPW5ldyBNYXAsdGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXM9bmV3IE1hcCx0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXM9bmV3IE1hcCx0aGlzLl9yZXNvbHZlcnM9W10sdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz0ibWF0ZXJpYWwtaWNvbnMiLHRoaXMuX2RvY3VtZW50PW59YWRkU3ZnSWNvbih0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKCIiLHQsZSxuKX1hZGRTdmdJY29uTGl0ZXJhbCh0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUsbil9YWRkU3ZnSWNvbkluTmFtZXNwYWNlKHQsZSxuLG8pe3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgTXEobixudWxsLG8pKX1hZGRTdmdJY29uUmVzb2x2ZXIodCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVycy5wdXNoKHQpLHRoaXN9YWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSh0LGUsbixvKXtjb25zdCBpPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShZcy5IVE1MLG4pO2lmKCFpKXRocm93IENxKG4pO3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgTXEoIiIsaSxvKSl9YWRkU3ZnSWNvblNldCh0LGUpe3JldHVybiB0aGlzLmFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRMaXRlcmFsKHQsZSl7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvblNldExpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSh0LGUsbil7cmV0dXJuIHRoaXMuX2FkZFN2Z0ljb25TZXRDb25maWcodCxuZXcgTXEoZSxudWxsLG4pKX1hZGRTdmdJY29uU2V0TGl0ZXJhbEluTmFtZXNwYWNlKHQsZSxuKXtjb25zdCBvPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShZcy5IVE1MLGUpO2lmKCFvKXRocm93IENxKGUpO3JldHVybiB0aGlzLl9hZGRTdmdJY29uU2V0Q29uZmlnKHQsbmV3IE1xKCIiLG8sbikpfXJlZ2lzdGVyRm9udENsYXNzQWxpYXModCxlPXQpe3JldHVybiB0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXMuc2V0KHQsZSksdGhpc31jbGFzc05hbWVGb3JGb250QWxpYXModCl7cmV0dXJuIHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcy5nZXQodCl8fHR9c2V0RGVmYXVsdEZvbnRTZXRDbGFzcyh0KXtyZXR1cm4gdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz10LHRoaXN9Z2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpe3JldHVybiB0aGlzLl9kZWZhdWx0Rm9udFNldENsYXNzfWdldFN2Z0ljb25Gcm9tVXJsKHQpe2NvbnN0IGU9dGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFlzLlJFU09VUkNFX1VSTCx0KTtpZighZSl0aHJvdyBfcSh0KTtjb25zdCBuPXRoaXMuX2NhY2hlZEljb25zQnlVcmwuZ2V0KGUpO3JldHVybiBuP3p0KHhxKG4pKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcobmV3IE1xKHQsbnVsbCkpLnBpcGUoV2UoKHQ9PnRoaXMuX2NhY2hlZEljb25zQnlVcmwuc2V0KGUsdCkpKSxWdCgodD0+eHEodCkpKSl9Z2V0TmFtZWRTdmdJY29uKHQsZT0iIil7Y29uc3Qgbj1PcShlLHQpO2xldCBvPXRoaXMuX3N2Z0ljb25Db25maWdzLmdldChuKTtpZihvKXJldHVybiB0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2lmKG89dGhpcy5fZ2V0SWNvbkNvbmZpZ0Zyb21SZXNvbHZlcnMoZSx0KSxvKXJldHVybiB0aGlzLl9zdmdJY29uQ29uZmlncy5zZXQobixvKSx0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2NvbnN0IGk9dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KGUpO3JldHVybiBpP3RoaXMuX2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGkpOkl0KHlxKG4pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Jlc29sdmVycz1bXSx0aGlzLl9zdmdJY29uQ29uZmlncy5jbGVhcigpLHRoaXMuX2ljb25TZXRDb25maWdzLmNsZWFyKCksdGhpcy5fY2FjaGVkSWNvbnNCeVVybC5jbGVhcigpfV9nZXRTdmdGcm9tQ29uZmlnKHQpe3JldHVybiB0LnN2Z1RleHQ/enQoeHEodGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcodCkpKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcodCkucGlwZShWdCgodD0+eHEodCkpKSl9X2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGUpe2NvbnN0IG49dGhpcy5fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKTtpZihuKXJldHVybiB6dChuKTtyZXR1cm4gaWUoZS5maWx0ZXIoKHQ9PiF0LnN2Z1RleHQpKS5tYXAoKHQ9PnRoaXMuX2xvYWRTdmdJY29uU2V0RnJvbUNvbmZpZyh0KS5waXBlKGhlKChlPT57Y29uc3Qgbj10aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLHQudXJsKTtyZXR1cm4gdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihgTG9hZGluZyBpY29uIHNldCBVUkw6ICR7bn0gZmFpbGVkOiAke2UubWVzc2FnZX1gKSksenQobnVsbCl9KSkpKSkpLnBpcGUoVnQoKCgpPT57Y29uc3Qgbj10aGlzLl9leHRyYWN0SWNvbldpdGhOYW1lRnJvbUFueVNldCh0LGUpO2lmKCFuKXRocm93IHlxKHQpO3JldHVybiBufSkpKX1fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgbz1lW25dO2lmKG8uc3ZnVGV4dCYmby5zdmdUZXh0LmluZGV4T2YodCk+LTEpe2NvbnN0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcobyksbj10aGlzLl9leHRyYWN0U3ZnSWNvbkZyb21TZXQoZSx0LG8ub3B0aW9ucyk7aWYobilyZXR1cm4gbn19cmV0dXJuIG51bGx9X2xvYWRTdmdJY29uRnJvbUNvbmZpZyh0KXtyZXR1cm4gdGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoV2UoKGU9PnQuc3ZnVGV4dD1lKSksVnQoKCgpPT50aGlzLl9zdmdFbGVtZW50RnJvbUNvbmZpZyh0KSkpKX1fbG9hZFN2Z0ljb25TZXRGcm9tQ29uZmlnKHQpe3JldHVybiB0LnN2Z1RleHQ/enQobnVsbCk6dGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoV2UoKGU9PnQuc3ZnVGV4dD1lKSkpfV9leHRyYWN0U3ZnSWNvbkZyb21TZXQodCxlLG4pe2NvbnN0IG89dC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7ZX0iXWApO2lmKCFvKXJldHVybiBudWxsO2NvbnN0IGk9by5jbG9uZU5vZGUoITApO2lmKGkucmVtb3ZlQXR0cmlidXRlKCJpZCIpLCJzdmciPT09aS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGksbik7aWYoInN5bWJvbCI9PT1pLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIHRoaXMuX3NldFN2Z0F0dHJpYnV0ZXModGhpcy5fdG9TdmdFbGVtZW50KGkpLG4pO2NvbnN0IGE9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcoIjxzdmc+PC9zdmc+Iik7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoaSksdGhpcy5fc2V0U3ZnQXR0cmlidXRlcyhhLG4pfV9zdmdFbGVtZW50RnJvbVN0cmluZyh0KXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO2UuaW5uZXJIVE1MPXQ7Y29uc3Qgbj1lLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpO2lmKCFuKXRocm93IEVycm9yKCI8c3ZnPiB0YWcgbm90IGZvdW5kIik7cmV0dXJuIG59X3RvU3ZnRWxlbWVudCh0KXtjb25zdCBlPXRoaXMuX3N2Z0VsZW1lbnRGcm9tU3RyaW5nKCI8c3ZnPjwvc3ZnPiIpLG49dC5hdHRyaWJ1dGVzO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdHtuYW1lOm8sdmFsdWU6aX09blt0XTsiaWQiIT09byYmZS5zZXRBdHRyaWJ1dGUobyxpKX1mb3IobGV0IG49MDtuPHQuY2hpbGROb2Rlcy5sZW5ndGg7bisrKXQuY2hpbGROb2Rlc1tuXS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERSYmZS5hcHBlbmRDaGlsZCh0LmNoaWxkTm9kZXNbbl0uY2xvbmVOb2RlKCEwKSk7cmV0dXJuIGV9X3NldFN2Z0F0dHJpYnV0ZXModCxlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImZpdCIsIiIpLHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCIxMDAlIiksdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMTAwJSIpLHQuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIpLHQuc2V0QXR0cmlidXRlKCJmb2N1c2FibGUiLCJmYWxzZSIpLGUmJmUudmlld0JveCYmdC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLGUudmlld0JveCksdH1fZmV0Y2hJY29uKHQpe3ZhciBlO2NvbnN0e3VybDpuLG9wdGlvbnM6b309dCxpPW51bGwhPT0oZT1udWxsPT1vP3ZvaWQgMDpvLndpdGhDcmVkZW50aWFscykmJnZvaWQgMCE9PWUmJmU7aWYoIXRoaXMuX2h0dHBDbGllbnQpdGhyb3coZnVuY3Rpb24gYSgpe3JldHVybiBFcnJvcigiQ291bGQgbm90IGZpbmQgSHR0cENsaWVudCBwcm92aWRlciBmb3IgdXNlIHdpdGggQW5ndWxhciBNYXRlcmlhbCBpY29ucy4gUGxlYXNlIGluY2x1ZGUgdGhlIEh0dHBDbGllbnRNb2R1bGUgZnJvbSBAYW5ndWxhci9jb21tb24vaHR0cCBpbiB5b3VyIGFwcCBpbXBvcnRzLiIpfSkoKTtpZihudWxsPT1uKXRocm93IEVycm9yKGBDYW5ub3QgZmV0Y2ggaWNvbiBmcm9tIFVSTCAiJHtufSIuYCk7Y29uc3Qgcj10aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoWXMuUkVTT1VSQ0VfVVJMLG4pO2lmKCFyKXRocm93IF9xKG4pO2NvbnN0IHM9dGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXMuZ2V0KHIpO2lmKHMpcmV0dXJuIHM7Y29uc3QgbD10aGlzLl9odHRwQ2xpZW50LmdldChyLHtyZXNwb25zZVR5cGU6InRleHQiLHdpdGhDcmVkZW50aWFsczppfSkucGlwZSgoZnVuY3Rpb24gYyh0KXtyZXR1cm4geigoZnVuY3Rpb24oZSxuKXt0cnl7ZS5zdWJzY3JpYmUobil9ZmluYWxseXtuLmFkZCh0KX19KSl9KSgoKCk9PnRoaXMuX2luUHJvZ3Jlc3NVcmxGZXRjaGVzLmRlbGV0ZShyKSkpLEllKCkpO3JldHVybiB0aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcy5zZXQocixsKSxsfV9hZGRTdmdJY29uQ29uZmlnKHQsZSxuKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbkNvbmZpZ3Muc2V0KE9xKHQsZSksbiksdGhpc31fYWRkU3ZnSWNvblNldENvbmZpZyh0LGUpe2NvbnN0IG49dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KHQpO3JldHVybiBuP24ucHVzaChlKTp0aGlzLl9pY29uU2V0Q29uZmlncy5zZXQodCxbZV0pLHRoaXN9X3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpe2lmKCF0LnN2Z0VsZW1lbnQpe2NvbnN0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcodC5zdmdUZXh0KTt0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGUsdC5vcHRpb25zKSx0LnN2Z0VsZW1lbnQ9ZX1yZXR1cm4gdC5zdmdFbGVtZW50fV9nZXRJY29uQ29uZmlnRnJvbVJlc29sdmVycyh0LGUpe2ZvcihsZXQgbz0wO288dGhpcy5fcmVzb2x2ZXJzLmxlbmd0aDtvKyspe2NvbnN0IGk9dGhpcy5fcmVzb2x2ZXJzW29dKGUsdCk7aWYoaSlyZXR1cm4obj1pKS51cmwmJm4ub3B0aW9ucz9uZXcgTXEoaS51cmwsbnVsbCxpLm9wdGlvbnMpOm5ldyBNcShpLG51bGwpfXZhciBuOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi99fWZ1bmN0aW9uIHhxKHQpe3JldHVybiB0LmNsb25lTm9kZSghMCl9ZnVuY3Rpb24gT3EodCxlKXtyZXR1cm4gdCsiOiIrZX12cS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dnEpKFRyKGJFLDgpLFRyKGVPKSxUcihzTSw4KSxUcihmbCkpfSx2cS7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgdnEoVHIoYkUsOCksVHIoZU8pLFRyKHNNLDgpLFRyKGZsKSl9LHRva2VuOnZxLHByb3ZpZGVkSW46InJvb3QifSksdnEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpiRSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTplT30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Zmx9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZxLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpiRSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTplT30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6Zmx9XX0pLG51bGwpLG5ldyBCcixuZXcgVXIsbmV3IEJyLG5ldyBCcjtjb25zdCBQcT1ZRihjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksd3E9bmV3IGVyKCJtYXQtaWNvbi1sb2NhdGlvbiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24ga3EoKXtjb25zdCB0PXpyKHNNKSxlPXQ/dC5sb2NhdGlvbjpudWxsO3JldHVybntnZXRQYXRobmFtZTooKT0+ZT9lLnBhdGhuYW1lK2Uuc2VhcmNoOiIifX19KTtjb25zdCBTcT1bImNsaXAtcGF0aCIsImNvbG9yLXByb2ZpbGUiLCJzcmMiLCJjdXJzb3IiLCJmaWxsIiwiZmlsdGVyIiwibWFya2VyIiwibWFya2VyLXN0YXJ0IiwibWFya2VyLW1pZCIsIm1hcmtlci1lbmQiLCJtYXNrIiwic3Ryb2tlIl0sRHE9U3EubWFwKCh0PT5gWyR7dH1dYCkpLmpvaW4oIiwgIiksUnE9L151cmxcKFsnIl0/IyguKj8pWyciXT9cKSQvO2NsYXNzIEVxIGV4dGVuZHMgUHF7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcih0KSx0aGlzLl9pY29uUmVnaXN0cnk9ZSx0aGlzLl9sb2NhdGlvbj1vLHRoaXMuX2Vycm9ySGFuZGxlcj1pLHRoaXMuX2lubGluZT0hMSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPWYuRU1QVFksbnx8dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIil9Z2V0IGlubGluZSgpe3JldHVybiB0aGlzLl9pbmxpbmV9c2V0IGlubGluZSh0KXt0aGlzLl9pbmxpbmU9cEgodCl9Z2V0IHN2Z0ljb24oKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbn1zZXQgc3ZnSWNvbih0KXt0IT09dGhpcy5fc3ZnSWNvbiYmKHQ/dGhpcy5fdXBkYXRlU3ZnSWNvbih0KTp0aGlzLl9zdmdJY29uJiZ0aGlzLl9jbGVhclN2Z0VsZW1lbnQoKSx0aGlzLl9zdmdJY29uPXQpfWdldCBmb250U2V0KCl7cmV0dXJuIHRoaXMuX2ZvbnRTZXR9c2V0IGZvbnRTZXQodCl7Y29uc3QgZT10aGlzLl9jbGVhbnVwRm9udFZhbHVlKHQpO2UhPT10aGlzLl9mb250U2V0JiYodGhpcy5fZm9udFNldD1lLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1nZXQgZm9udEljb24oKXtyZXR1cm4gdGhpcy5fZm9udEljb259c2V0IGZvbnRJY29uKHQpe2NvbnN0IGU9dGhpcy5fY2xlYW51cEZvbnRWYWx1ZSh0KTtlIT09dGhpcy5fZm9udEljb24mJih0aGlzLl9mb250SWNvbj1lLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1fc3BsaXRJY29uTmFtZSh0KXtpZighdClyZXR1cm5bIiIsIiJdO2NvbnN0IGU9dC5zcGxpdCgiOiIpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOnJldHVyblsiIixlWzBdXTtjYXNlIDI6cmV0dXJuIGU7ZGVmYXVsdDp0aHJvdyBFcnJvcihgSW52YWxpZCBpY29uIG5hbWU6ICIke3R9ImApfX1uZ09uSW5pdCgpe3RoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzO2lmKHQmJnQuc2l6ZSl7Y29uc3QgdD10aGlzLl9sb2NhdGlvbi5nZXRQYXRobmFtZSgpO3QhPT10aGlzLl9wcmV2aW91c1BhdGgmJih0aGlzLl9wcmV2aW91c1BhdGg9dCx0aGlzLl9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KSl9fW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpLHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyYmdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCl9X3VzaW5nRm9udEljb24oKXtyZXR1cm4hdGhpcy5zdmdJY29ufV9zZXRTdmdFbGVtZW50KHQpe3RoaXMuX2NsZWFyU3ZnRWxlbWVudCgpO2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0udGV4dENvbnRlbnQrPSIgIjtjb25zdCBuPXRoaXMuX2xvY2F0aW9uLmdldFBhdGhuYW1lKCk7dGhpcy5fcHJldmlvdXNQYXRoPW4sdGhpcy5fY2FjaGVDaGlsZHJlbldpdGhFeHRlcm5hbFJlZmVyZW5jZXModCksdGhpcy5fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMobiksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHQpfV9jbGVhclN2Z0VsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtsZXQgZT10LmNoaWxkTm9kZXMubGVuZ3RoO2Zvcih0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXMmJnRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcy5jbGVhcigpO2UtLTspe2NvbnN0IG49dC5jaGlsZE5vZGVzW2VdOzE9PT1uLm5vZGVUeXBlJiYic3ZnIiE9PW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKXx8dC5yZW1vdmVDaGlsZChuKX19X3VwZGF0ZUZvbnRJY29uQ2xhc3Nlcygpe2lmKCF0aGlzLl91c2luZ0ZvbnRJY29uKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5mb250U2V0P3RoaXMuX2ljb25SZWdpc3RyeS5jbGFzc05hbWVGb3JGb250QWxpYXModGhpcy5mb250U2V0KTp0aGlzLl9pY29uUmVnaXN0cnkuZ2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpO2UhPXRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzJiYodGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3MmJnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9wcmV2aW91c0ZvbnRTZXRDbGFzcyksZSYmdC5jbGFzc0xpc3QuYWRkKGUpLHRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzPWUpLHRoaXMuZm9udEljb24hPXRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyksdGhpcy5mb250SWNvbiYmdC5jbGFzc0xpc3QuYWRkKHRoaXMuZm9udEljb24pLHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcz10aGlzLmZvbnRJY29uKX1fY2xlYW51cEZvbnRWYWx1ZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC50cmltKCkuc3BsaXQoIiAiKVswXTp0fV9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcztlJiZlLmZvckVhY2goKChlLG4pPT57ZS5mb3JFYWNoKChlPT57bi5zZXRBdHRyaWJ1dGUoZS5uYW1lLGB1cmwoJyR7dH0jJHtlLnZhbHVlfScpYCl9KSl9KSl9X2NhY2hlQ2hpbGRyZW5XaXRoRXh0ZXJuYWxSZWZlcmVuY2VzKHQpe2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yQWxsKERxKSxuPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcz10aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXN8fG5ldyBNYXA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspU3EuZm9yRWFjaCgobz0+e2NvbnN0IGk9ZVt0XSxhPWkuZ2V0QXR0cmlidXRlKG8pLHI9YT9hLm1hdGNoKFJxKTpudWxsO2lmKHIpe2xldCB0PW4uZ2V0KGkpO3R8fCh0PVtdLG4uc2V0KGksdCkpLHQucHVzaCh7bmFtZTpvLHZhbHVlOnJbMV19KX19KSl9X3VwZGF0ZVN2Z0ljb24odCl7aWYodGhpcy5fc3ZnTmFtZXNwYWNlPW51bGwsdGhpcy5fc3ZnTmFtZT1udWxsLHRoaXMuX2N1cnJlbnRJY29uRmV0Y2gudW5zdWJzY3JpYmUoKSx0KXtjb25zdFtlLG5dPXRoaXMuX3NwbGl0SWNvbk5hbWUodCk7ZSYmKHRoaXMuX3N2Z05hbWVzcGFjZT1lKSxuJiYodGhpcy5fc3ZnTmFtZT1uKSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPXRoaXMuX2ljb25SZWdpc3RyeS5nZXROYW1lZFN2Z0ljb24obixlKS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3NldFN2Z0VsZW1lbnQodCkpLCh0PT57dGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihgRXJyb3IgcmV0cmlldmluZyBpY29uICR7ZX06JHtufSEgJHt0Lm1lc3NhZ2V9YCkpfSkpfX19RXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVxKShmdShLaCksZnUodnEpLEdhKCJhcmlhLWhpZGRlbiIpLGZ1KHdxKSxmdShmbCkpfSxFcS7JtWNtcD1zbyh7dHlwZTpFcSxzZWxlY3RvcnM6W1sibWF0LWljb24iXV0saG9zdEF0dHJzOlsicm9sZSIsImltZyIsMSwibWF0LWljb24iLCJub3RyYW5zbGF0ZSJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJih5bSgiZGF0YS1tYXQtaWNvbi10eXBlIixuLl91c2luZ0ZvbnRJY29uKCk/ImZvbnQiOiJzdmciKSgiZGF0YS1tYXQtaWNvbi1uYW1lIixuLl9zdmdOYW1lfHxuLmZvbnRJY29uKSgiZGF0YS1tYXQtaWNvbi1uYW1lc3BhY2UiLG4uX3N2Z05hbWVzcGFjZXx8bi5mb250U2V0KSxjZigibWF0LWljb24taW5saW5lIixuLmlubGluZSkoIm1hdC1pY29uLW5vLWNvbG9yIiwicHJpbWFyeSIhPT1uLmNvbG9yJiYiYWNjZW50IiE9PW4uY29sb3ImJiJ3YXJuIiE9PW4uY29sb3IpKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLGlubGluZToiaW5saW5lIixzdmdJY29uOiJzdmdJY29uIixmb250U2V0OiJmb250U2V0Iixmb250SWNvbjoiZm9udEljb24ifSxleHBvcnRBczpbIm1hdEljb24iXSxmZWF0dXJlczpbUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSXUoKSxIdSgwKSl9LHN0eWxlczpbIi5tYXQtaWNvbntiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ubWF0LWljb24ubWF0LWljb24taW5saW5le2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7d2lkdGg6aW5oZXJpdH1bZGlyPXJ0bF0gLm1hdC1pY29uLXJ0bC1taXJyb3J7dHJhbnNmb3JtOnNjYWxlKC0xLCAxKX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bWFyZ2luOmF1dG99XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxFcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTp2cX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJhcmlhLWhpZGRlbiJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt3cV19XX0se3R5cGU6Zmx9XSxFcS5wcm9wRGVjb3JhdG9ycz17aW5saW5lOlt7dHlwZTpSX31dLHN2Z0ljb246W3t0eXBlOlJffV0sZm9udFNldDpbe3R5cGU6Ul99XSxmb250SWNvbjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFcSxbe3R5cGU6U18sYXJnczpbe3RlbXBsYXRlOiI8bmctY29udGVudD48L25nLWNvbnRlbnQ+IixzZWxlY3RvcjoibWF0LWljb24iLGV4cG9ydEFzOiJtYXRJY29uIixpbnB1dHM6WyJjb2xvciJdLGhvc3Q6e3JvbGU6ImltZyIsY2xhc3M6Im1hdC1pY29uIG5vdHJhbnNsYXRlIiwiW2F0dHIuZGF0YS1tYXQtaWNvbi10eXBlXSI6J191c2luZ0ZvbnRJY29uKCkgPyAiZm9udCIgOiAic3ZnIicsIlthdHRyLmRhdGEtbWF0LWljb24tbmFtZV0iOiJfc3ZnTmFtZSB8fCBmb250SWNvbiIsIlthdHRyLmRhdGEtbWF0LWljb24tbmFtZXNwYWNlXSI6Il9zdmdOYW1lc3BhY2UgfHwgZm9udFNldCIsIltjbGFzcy5tYXQtaWNvbi1pbmxpbmVdIjoiaW5saW5lIiwiW2NsYXNzLm1hdC1pY29uLW5vLWNvbG9yXSI6J2NvbG9yICE9PSAicHJpbWFyeSIgJiYgY29sb3IgIT09ICJhY2NlbnQiICYmIGNvbG9yICE9PSAid2FybiInfSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxzdHlsZXM6WyIubWF0LWljb257YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6Y3VycmVudENvbG9yO2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9Lm1hdC1pY29uLm1hdC1pY29uLWlubGluZXtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXR9W2Rpcj1ydGxdIC5tYXQtaWNvbi1ydGwtbWlycm9ye3RyYW5zZm9ybTpzY2FsZSgtMSwgMSl9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue21hcmdpbjphdXRvfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6dnF9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsiYXJpYS1oaWRkZW4iXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbd3FdfV19LHt0eXBlOmZsfV19KSx7aW5saW5lOlt7dHlwZTpSX31dLHN2Z0ljb246W3t0eXBlOlJffV0sZm9udFNldDpbe3R5cGU6Ul99XSxmb250SWNvbjpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQXF7fUFxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBcSl9LEFxLsm1bW9kPXVvKHt0eXBlOkFxfSksQXEuybVpbmo9RG4oe2ltcG9ydHM6W1tXRl0sV0ZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBcSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1dGXSxleHBvcnRzOltFcSxXRl0sZGVjbGFyYXRpb25zOltFcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhBcSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0VxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltXRl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bRXEsV0ZdfX0pO2NsYXNzIFRxe2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy50ZW5zb3Jib2FyZERvdERldlVybD0iaHR0cHM6Ly90ZW5zb3Jib2FyZC5kZXYvP3V0bV9zb3VyY2U9dGVuc29yYm9hcmQifW9uQ2xvc2UoKXt0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpfWdldENvbW1hbmRUZXh0KCl7aWYodGhpcy5sb2dkaXIpe3JldHVybiJ0ZW5zb3Jib2FyZCBkZXYgdXBsb2FkIC0tbG9nZGlyIFxcXG4gICAgJyIrdGhpcy5sb2dkaXIucmVwbGFjZSgvJy9nLCInXFwnJyIpKyInIn1yZXR1cm4idGVuc29yYm9hcmQgZGV2IHVwbG9hZCAtLWxvZ2RpciB7bG9nZGlyfSJ9fVRxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUcSkoZnUoSlkpKX0sVHEuybVjbXA9c28oe3R5cGU6VHEsc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50Il1dLGlucHV0czp7bG9nZGlyOiJsb2dkaXIifSxkZWNsczoyMSx2YXJzOjQsY29uc3RzOltbInRhcmdldCIsIl9ibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiLDEsImFuY2hvci10ZXh0IiwzLCJocmVmIl0sWzEsImNvbW1hbmQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ2xpY2sgdG8gY29weSB0aGUgY29tbWFuZCIsMSwiY29tbWFuZC1jb3B5IiwzLCJjZGtDb3B5VG9DbGlwYm9hcmQiXSxbInN2Z0ljb24iLCJjb250ZW50X2NvcHlfMjRweCJdLFsxLCJib3R0b20tYnV0dG9ucyJdLFsibWF0LWZsYXQtYnV0dG9uIiwiIiwxLCJjbG9zZS1idXR0b24iLDMsImNsaWNrIl0sWyJtYXQtZmxhdC1idXR0b24iLCIiLCJ0YXJnZXQiLCJfYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIiwxLCJsZWFybi1tb3JlLWJ1dHRvbiIsMywiaHJlZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiaDMiKSxQZigxLCJVcGxvYWQgdG8gVGVuc29yQm9hcmQuZGV2IiksQ3UoKSxfdSgyLCJwIiksX3UoMywiYSIsMCksUGYoNCwiIFRlbnNvckJvYXJkLmRldiIpLEN1KCksUGYoNSwiIGVuYWJsZXMgeW91IHRvIGVhc2lseSBob3N0LCB0cmFjaywgYW5kIHNoYXJlIHlvdXIgTUwgZXhwZXJpbWVudHMgd2l0aCBldmVyeW9uZS4gWW91IGNhbiBzaGFyZSBhIGxpbmsgdG8gdGhlIHVwbG9hZGVkIFRlbnNvckJvYXJkIGluIHBhcGVycywgYmxvZyBwb3N0cywgYW5kIHNvY2lhbCBtZWRpYS4gVGhpcyBjYW4gc2hvd2Nhc2UgdGhlIHJlc3VsdHMgbW9yZSBlZmZlY3RpdmVseSBhbmQgaGVscHMgcmVwcm9kdWNpYmlsaXR5LlxuIiksQ3UoKSxfdSg2LCJwIiksUGYoNywiVG8gdXBsb2FkIGEgbG9nZGlyIHRvIFRlbnNvckJvYXJkLmRldiwgcnVuIHRoZSBjb21tYW5kOiIpLEN1KCksX3UoOCwiZGl2IiwxKSxfdSg5LCJwcmUiKSxfdSgxMCwiY29kZSIpLFBmKDExKSxDdSgpLEN1KCksX3UoMTIsImJ1dHRvbiIsMiksTXUoMTMsIm1hdC1pY29uIiwzKSxDdSgpLEN1KCksX3UoMTQsInAiKSxQZigxNSwiIE9ubHkgY2VydGFpbiBwbHVnaW5zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBVcGxvYWRlZCBUZW5zb3JCb2FyZHMgYXJlIHB1YmxpYyBhbmQgdmlzaWJsZSB0byBldmVyeW9uZTsgZG8gbm90IHVwbG9hZCBzZW5zaXRpdmUgZGF0YS5cbiIpLEN1KCksX3UoMTYsImRpdiIsNCksX3UoMTcsImJ1dHRvbiIsNSksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xvc2UoKX0pKSxQZigxOCwiIENsb3NlICIpLEN1KCksX3UoMTksImEiLDYpLFBmKDIwLCIgTGVhcm4gbW9yZSAiKSxDdSgpLEN1KCkpLDImZSYmKERjKDMpLEZ1KCJocmVmIixuLnRlbnNvcmJvYXJkRG90RGV2VXJsLFhzKSxEYyg4KSx3ZihuLmdldENvbW1hbmRUZXh0KCkpLERjKDEpLGh1KCJjZGtDb3B5VG9DbGlwYm9hcmQiLG4uZ2V0Q29tbWFuZFRleHQoKSksRGMoNyksRnUoImhyZWYiLG4udGVuc29yYm9hcmREb3REZXZVcmwsWHMpKX0sZGlyZWN0aXZlczpbV0wsaHEsRXEsR0xdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1kaXZbX25nY29udGVudC0lQ09NUCVdLCBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MTZweCAwfVtfbmdob3N0LSVDT01QJV0gPiBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH1bX25naG9zdC0lQ09NUCVdID4gW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH1oM1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuNX1wW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0uYW5jaG9yLXRleHRbX25nY29udGVudC0lQ09NUCVde3RleHQtZGVjb3JhdGlvbjpub25lfS5jb21tYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojZjVmNmY3O2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjJweCAxMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb21tYW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MX1wcmVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXg6YXV0b31jb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjV9LmJvdHRvbS1idXR0b25zW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xvc2UtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTttYXJnaW4tcmlnaHQ6OHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jbG9zZS1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY2xvc2UtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1bX25naG9zdC0lQ09NUCVdICAgLmxlYXJuLW1vcmUtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMTk3NmQyO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubGVhcm4tbW9yZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM0MmE1ZjV9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi90YmRldl91cGxvYWRfZGlhbG9nX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3RiZGV2X3VwbG9hZF9kaWFsb2dfY29tcG9uZW50LmNzcyJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Sll9XX0pLHtsb2dkaXI6W3t0eXBlOlJffV19KTtjb25zdCBOcT1iUyhhVCwodD0+dC5kYXRhX2xvY2F0aW9uKSk7Y2xhc3MgenF7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMubG9nZGlyJD10aGlzLnN0b3JlLnBpcGUoclMoTnEpKX19ZnVuY3Rpb24gSXEodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJidXR0b24iLDEpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5vcGVuRGlhbG9nKCl9KSksX3UoMSwic3BhbiIsMiksTXUoMiwibWF0LWljb24iLDMpLFBmKDMsIiBVcGxvYWQgIiksQ3UoKSxDdSgpfX16cS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8enEpKGZ1KGlTKSl9LHpxLsm1Y21wPXNvKHt0eXBlOnpxLHNlbGVjdG9yczpbWyJ0YmRldi11cGxvYWQtZGlhbG9nIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsImxvZ2RpciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwidGJkZXYtdXBsb2FkLWRpYWxvZy1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIikpLDImZSYmaHUoImxvZ2RpciIsQ3koMSwxLG4ubG9nZGlyJCkpfSxkaXJlY3RpdmVzOltUcV0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHpxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiZGV2LXVwbG9hZC1kaWFsb2ciLHRlbXBsYXRlOidcbiAgICA8dGJkZXYtdXBsb2FkLWRpYWxvZy1jb21wb25lbnRcbiAgICAgIFtsb2dkaXJdPSJsb2dkaXIkIHwgYXN5bmMiXG4gICAgPjwvdGJkZXYtdXBsb2FkLWRpYWxvZy1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgSHE9WyJsb2NhbGhvc3QiLCIxMjcuMC4wLjEiXTtjbGFzcyBGcXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMud2luZG93PXQsdGhpcy5kaWFsb2c9ZSx0aGlzLnNob3duPUhxLmluY2x1ZGVzKHQubG9jYXRpb24uaG9zdG5hbWUpfW9wZW5EaWFsb2coKXt0aGlzLmRpYWxvZy5vcGVuKHpxLHt3aWR0aDoiNTYwcHgifSl9fUZxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGcSkoZnUoIndpbmRvdyIpLGZ1KGFxKSl9LEZxLsm1Y21wPXNvKHt0eXBlOkZxLHNlbGVjdG9yczpbWyJ0YmRldi11cGxvYWQtYnV0dG9uIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJzaG93biIsbi5zaG93bil9LGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDMsImNsaWNrIl0sWzEsImJ1dHRvbi1jb250ZW50cyJdLFsic3ZnSWNvbiIsImluZm9fb3V0bGluZV8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkhtKDAsSXEsNCwwLCJidXR0b24iLDApLDImZSYmaHUoIm5nSWYiLG4uc2hvd24pfSxkaXJlY3RpdmVzOltQdixXTCxFcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICBidXR0b24ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmVifWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIGJ1dHRvbi5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH0uYnV0dG9uLWNvbnRlbnRzW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjZweH0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRnEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGJkZXYtdXBsb2FkLWJ1dHRvbiIsdGVtcGxhdGVVcmw6Ii4vdGJkZXZfdXBsb2FkX2J1dHRvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi90YmRldl91cGxvYWRfYnV0dG9uX2NvbXBvbmVudC5jc3MiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOldpbmRvdyxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlsid2luZG93Il19XX0se3R5cGU6YXF9XX0pLHtzaG93bjpbe3R5cGU6QV8sYXJnczpbImNsYXNzLnNob3duIl19XX0pO2Z1bmN0aW9uIExxKHQsZSl7MSZ0JiYob2EoKSxfdSgwLCJzdmciLDIpLE11KDEsInBvbHlnb24iLDMpLEN1KCkpfWNvbnN0IEJxPVsiKiJdO2Z1bmN0aW9uIFZxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwwKSxEdSgia2V5ZG93biIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkuX2hhbmRsZUtleWRvd24obil9KSkoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgpLmNsb3NlZC5lbWl0KCJjbGljayIpfSkpKCJAdHJhbnNmb3JtTWVudS5zdGFydCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkuX29uQW5pbWF0aW9uU3RhcnQobil9KSkoIkB0cmFuc2Zvcm1NZW51LmRvbmUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLl9vbkFuaW1hdGlvbkRvbmUobil9KSksX3UoMSwiZGl2IiwxKSxIdSgyKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7aHUoImlkIix0LnBhbmVsSWQpKCJuZ0NsYXNzIix0Ll9jbGFzc0xpc3QpKCJAdHJhbnNmb3JtTWVudSIsdC5fcGFuZWxBbmltYXRpb25TdGF0ZSkseW0oImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5Iix0LmFyaWFMYWJlbGxlZGJ5fHxudWxsKSgiYXJpYS1kZXNjcmliZWRieSIsdC5hcmlhRGVzY3JpYmVkYnl8fG51bGwpfX1jb25zdCBVcT17dHJhbnNmb3JtTWVudTp4TygidHJhbnNmb3JtTWVudSIsW2tPKCJ2b2lkIix3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC44KSJ9KSksRE8oInZvaWQgPT4gZW50ZXIiLE9PKCIxMjBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIsd08oe29wYWNpdHk6MSx0cmFuc2Zvcm06InNjYWxlKDEpIn0pKSksRE8oIiogPT4gdm9pZCIsT08oIjEwMG1zIDI1bXMgbGluZWFyIix3Tyh7b3BhY2l0eTowfSkpKV0pLGZhZGVJbkl0ZW1zOnhPKCJmYWRlSW5JdGVtcyIsW2tPKCJzaG93aW5nIix3Tyh7b3BhY2l0eToxfSkpLERPKCJ2b2lkID0+ICoiLFt3Tyh7b3BhY2l0eTowfSksT08oIjQwMG1zIDEwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpIildKV0pfSxqcT1uZXcgZXIoIk1hdE1lbnVDb250ZW50Iik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFdxe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuX3RlbXBsYXRlPXQsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPWUsdGhpcy5fYXBwUmVmPW4sdGhpcy5faW5qZWN0b3I9byx0aGlzLl92aWV3Q29udGFpbmVyUmVmPWksdGhpcy5fZG9jdW1lbnQ9YSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1yLHRoaXMuX2F0dGFjaGVkPW5ldyBCfWF0dGFjaCh0PXt9KXt0aGlzLl9wb3J0YWx8fCh0aGlzLl9wb3J0YWw9bmV3IHlCKHRoaXMuX3RlbXBsYXRlLHRoaXMuX3ZpZXdDb250YWluZXJSZWYpKSx0aGlzLmRldGFjaCgpLHRoaXMuX291dGxldHx8KHRoaXMuX291dGxldD1uZXcgTUIodGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLHRoaXMuX2FwcFJlZix0aGlzLl9pbmplY3RvcikpO2NvbnN0IGU9dGhpcy5fdGVtcGxhdGUuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fb3V0bGV0Lm91dGxldEVsZW1lbnQsZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYmJnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX3BvcnRhbC5hdHRhY2godGhpcy5fb3V0bGV0LHQpLHRoaXMuX2F0dGFjaGVkLm5leHQoKX1kZXRhY2goKXt0aGlzLl9wb3J0YWwuaXNBdHRhY2hlZCYmdGhpcy5fcG9ydGFsLmRldGFjaCgpfW5nT25EZXN0cm95KCl7dGhpcy5fb3V0bGV0JiZ0aGlzLl9vdXRsZXQuZGlzcG9zZSgpfX1XcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V3EpKGZ1KEViKSxmdShHaCksZnUoSEMpLGZ1KE5wKSxmdShGYiksZnUoc00pLGZ1KE9iKSl9LFdxLsm1ZGlyPWhvKHt0eXBlOldxLHNlbGVjdG9yczpbWyJuZy10ZW1wbGF0ZSIsIm1hdE1lbnVDb250ZW50IiwiIl1dLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6anEsdXNlRXhpc3Rpbmc6V3F9XSldfSksV3EuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn0se3R5cGU6R2h9LHt0eXBlOkhDfSx7dHlwZTpOcH0se3R5cGU6RmJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6T2J9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFdxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im5nLXRlbXBsYXRlW21hdE1lbnVDb250ZW50XSIscHJvdmlkZXJzOlt7cHJvdmlkZTpqcSx1c2VFeGlzdGluZzpXcX1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9LHt0eXBlOkdofSx7dHlwZTpIQ30se3R5cGU6TnB9LHt0eXBlOkZifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOk9ifV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEdxPW5ldyBlcigiTUFUX01FTlVfUEFORUwiKSxZcT1xRihHRihjbGFzc3t9KSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHFxIGV4dGVuZHMgWXF7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcigpLHRoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c01vbml0b3I9bix0aGlzLl9wYXJlbnRNZW51PW8sdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9aSx0aGlzLnJvbGU9Im1lbnVpdGVtIix0aGlzLl9ob3ZlcmVkPW5ldyBCLHRoaXMuX2ZvY3VzZWQ9bmV3IEIsdGhpcy5faGlnaGxpZ2h0ZWQ9ITEsdGhpcy5fdHJpZ2dlcnNTdWJtZW51PSExLG8mJm8uYWRkSXRlbSYmby5hZGRJdGVtKHRoaXMpfWZvY3VzKHQsZSl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0P3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9nZXRIb3N0RWxlbWVudCgpLHQsZSk6dGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cyhlKSx0aGlzLl9mb2N1c2VkLm5leHQodGhpcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCExKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX3BhcmVudE1lbnUmJnRoaXMuX3BhcmVudE1lbnUucmVtb3ZlSXRlbSYmdGhpcy5fcGFyZW50TWVudS5yZW1vdmVJdGVtKHRoaXMpLHRoaXMuX2hvdmVyZWQuY29tcGxldGUoKSx0aGlzLl9mb2N1c2VkLmNvbXBsZXRlKCl9X2dldFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1fY2hlY2tEaXNhYmxlZCh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfV9oYW5kbGVNb3VzZUVudGVyKCl7dGhpcy5faG92ZXJlZC5uZXh0KHRoaXMpfWdldExhYmVsKCl7dmFyIHQsZTtjb25zdCBuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9uZU5vZGUoITApLG89bi5xdWVyeVNlbGVjdG9yQWxsKCJtYXQtaWNvbiwgLm1hdGVyaWFsLWljb25zIik7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2NvbnN0IG49b1tlXTtudWxsPT09KHQ9bi5wYXJlbnROb2RlKXx8dm9pZCAwPT09dHx8dC5yZW1vdmVDaGlsZChuKX1yZXR1cm4obnVsbD09PShlPW4udGV4dENvbnRlbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRyaW0oKSl8fCIifV9zZXRIaWdobGlnaHRlZCh0KXt2YXIgZTt0aGlzLl9oaWdobGlnaHRlZD10LG51bGw9PT0oZT10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZil8fHZvaWQgMD09PWV8fGUubWFya0ZvckNoZWNrKCl9fXFxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxcSkoZnUoS2gpLGZ1KHNNKSxmdSh4RiksZnUoR3EsOCksZnUoT2IpKX0scXEuybVjbXA9c28oe3R5cGU6cXEsc2VsZWN0b3JzOltbIiIsIm1hdC1tZW51LWl0ZW0iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2NoZWNrRGlzYWJsZWQoZSl9KSkoIm1vdXNlZW50ZXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZU1vdXNlRW50ZXIoKX0pKSwyJmUmJih5bSgicm9sZSIsbi5yb2xlKSgidGFiaW5kZXgiLG4uX2dldFRhYkluZGV4KCkpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCksY2YoIm1hdC1tZW51LWl0ZW0iLCEwKSgibWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZCIsbi5faGlnaGxpZ2h0ZWQpKCJtYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlciIsbi5fdHJpZ2dlcnNTdWJtZW51KSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixyb2xlOiJyb2xlIn0sZXhwb3J0QXM6WyJtYXRNZW51SXRlbSJdLGZlYXR1cmVzOltRcF0sYXR0cnM6WyJtYXQtbWVudS1pdGVtIiwiIl0sbmdDb250ZW50U2VsZWN0b3JzOkJxLGRlY2xzOjMsdmFyczozLGNvbnN0czpbWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1tZW51LXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVUcmlnZ2VyIl0sWyJjbGFzcyIsIm1hdC1tZW51LXN1Ym1lbnUtaWNvbiIsInZpZXdCb3giLCIwIDAgNSAxMCIsImZvY3VzYWJsZSIsImZhbHNlIiw0LCJuZ0lmIl0sWyJ2aWV3Qm94IiwiMCAwIDUgMTAiLCJmb2N1c2FibGUiLCJmYWxzZSIsMSwibWF0LW1lbnUtc3VibWVudS1pY29uIl0sWyJwb2ludHMiLCIwLDAgNSw1IDAsMTAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEl1KCksSHUoMCksTXUoMSwiZGl2IiwwKSxIbSgyLExxLDIsMCwic3ZnIiwxKSksMiZlJiYoRGMoMSksaHUoIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVSaXBwbGV8fG4uZGlzYWJsZWQpKCJtYXRSaXBwbGVUcmlnZ2VyIixuLl9nZXRIb3N0RWxlbWVudCgpKSxEYygxKSxodSgibmdJZiIsbi5fdHJpZ2dlcnNTdWJtZW51KSl9LGRpcmVjdGl2ZXM6W3ZMLFB2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxxcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOnhGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbR3FdfSx7dHlwZTpCcn1dfSx7dHlwZTpPYn1dLHFxLnByb3BEZWNvcmF0b3JzPXtyb2xlOlt7dHlwZTpSX31dLF9jaGVja0Rpc2FibGVkOlt7dHlwZTpUXyxhcmdzOlsiY2xpY2siLFsiJGV2ZW50Il1dfV0sX2hhbmRsZU1vdXNlRW50ZXI6W3t0eXBlOlRfLGFyZ3M6WyJtb3VzZWVudGVyIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihxcSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LW1lbnUtaXRlbV0iLGV4cG9ydEFzOiJtYXRNZW51SXRlbSIsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIl0saG9zdDp7IlthdHRyLnJvbGVdIjoicm9sZSIsIltjbGFzcy5tYXQtbWVudS1pdGVtXSI6InRydWUiLCJbY2xhc3MubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZF0iOiJfaGlnaGxpZ2h0ZWQiLCJbY2xhc3MubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJdIjoiX3RyaWdnZXJzU3VibWVudSIsIlthdHRyLnRhYmluZGV4XSI6Il9nZXRUYWJJbmRleCgpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsY2xhc3M6Im1hdC1mb2N1cy1pbmRpY2F0b3IifSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSx0ZW1wbGF0ZTonPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz0ibWF0LW1lbnUtcmlwcGxlIiBtYXRSaXBwbGVcbiAgICAgW21hdFJpcHBsZURpc2FibGVkXT0iZGlzYWJsZVJpcHBsZSB8fCBkaXNhYmxlZCJcbiAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJfZ2V0SG9zdEVsZW1lbnQoKSI+XG48L2Rpdj5cblxuPHN2Z1xuICAqbmdJZj0iX3RyaWdnZXJzU3VibWVudSJcbiAgY2xhc3M9Im1hdC1tZW51LXN1Ym1lbnUtaWNvbiJcbiAgdmlld0JveD0iMCAwIDUgMTAiXG4gIGZvY3VzYWJsZT0iZmFsc2UiPjxwb2x5Z29uIHBvaW50cz0iMCwwIDUsNSAwLDEwIi8+PC9zdmc+XG4nfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6eEZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltHcV19LHt0eXBlOkJyfV19LHt0eXBlOk9ifV19KSx7cm9sZTpbe3R5cGU6Ul99XSxfY2hlY2tEaXNhYmxlZDpbe3R5cGU6VF8sYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLF9oYW5kbGVNb3VzZUVudGVyOlt7dHlwZTpUXyxhcmdzOlsibW91c2VlbnRlciJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFpxPW5ldyBlcigibWF0LW1lbnUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBYcSgpe3JldHVybntvdmVybGFwVHJpZ2dlcjohMSx4UG9zaXRpb246ImFmdGVyIix5UG9zaXRpb246ImJlbG93IixiYWNrZHJvcENsYXNzOiJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCJ9fX0pO2xldCBLcT0wO2NsYXNzIEpxe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fZGVmYXVsdE9wdGlvbnM9bix0aGlzLl94UG9zaXRpb249dGhpcy5fZGVmYXVsdE9wdGlvbnMueFBvc2l0aW9uLHRoaXMuX3lQb3NpdGlvbj10aGlzLl9kZWZhdWx0T3B0aW9ucy55UG9zaXRpb24sdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zPW5ldyBSeSx0aGlzLl90YWJTdWJzY3JpcHRpb249Zi5FTVBUWSx0aGlzLl9jbGFzc0xpc3Q9e30sdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZT0idm9pZCIsdGhpcy5fYW5pbWF0aW9uRG9uZT1uZXcgQix0aGlzLm92ZXJsYXlQYW5lbENsYXNzPXRoaXMuX2RlZmF1bHRPcHRpb25zLm92ZXJsYXlQYW5lbENsYXNzfHwiIix0aGlzLmJhY2tkcm9wQ2xhc3M9dGhpcy5fZGVmYXVsdE9wdGlvbnMuYmFja2Ryb3BDbGFzcyx0aGlzLl9vdmVybGFwVHJpZ2dlcj10aGlzLl9kZWZhdWx0T3B0aW9ucy5vdmVybGFwVHJpZ2dlcix0aGlzLl9oYXNCYWNrZHJvcD10aGlzLl9kZWZhdWx0T3B0aW9ucy5oYXNCYWNrZHJvcCx0aGlzLmNsb3NlZD1uZXcgU3ksdGhpcy5jbG9zZT10aGlzLmNsb3NlZCx0aGlzLnBhbmVsSWQ9Im1hdC1tZW51LXBhbmVsLSIrS3ErK31nZXQgeFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3hQb3NpdGlvbn1zZXQgeFBvc2l0aW9uKHQpeyJiZWZvcmUiPT09dHx8ImFmdGVyIj09PXR8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCd4UG9zaXRpb24gdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCdiZWZvcmVcJyBvciBhZnRlclwnLlxuICAgICAgRXhhbXBsZTogPG1hdC1tZW51IHhQb3NpdGlvbj0iYmVmb3JlIiAjbWVudT0ibWF0TWVudSI+PC9tYXQtbWVudT4nKX0pKCksdGhpcy5feFBvc2l0aW9uPXQsdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKX1nZXQgeVBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3lQb3NpdGlvbn1zZXQgeVBvc2l0aW9uKHQpeyJhYm92ZSI9PT10fHwiYmVsb3ciPT09dHx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fChmdW5jdGlvbiBlKCl7dGhyb3cgRXJyb3IoJ3lQb3NpdGlvbiB2YWx1ZSBtdXN0IGJlIGVpdGhlciBcJ2Fib3ZlXCcgb3IgYmVsb3dcJy5cbiAgICAgIEV4YW1wbGU6IDxtYXQtbWVudSB5UG9zaXRpb249ImFib3ZlIiAjbWVudT0ibWF0TWVudSI+PC9tYXQtbWVudT4nKX0pKCksdGhpcy5feVBvc2l0aW9uPXQsdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKX1nZXQgb3ZlcmxhcFRyaWdnZXIoKXtyZXR1cm4gdGhpcy5fb3ZlcmxhcFRyaWdnZXJ9c2V0IG92ZXJsYXBUcmlnZ2VyKHQpe3RoaXMuX292ZXJsYXBUcmlnZ2VyPXBIKHQpfWdldCBoYXNCYWNrZHJvcCgpe3JldHVybiB0aGlzLl9oYXNCYWNrZHJvcH1zZXQgaGFzQmFja2Ryb3AodCl7dGhpcy5faGFzQmFja2Ryb3A9cEgodCl9c2V0IHBhbmVsQ2xhc3ModCl7Y29uc3QgZT10aGlzLl9wcmV2aW91c1BhbmVsQ2xhc3M7ZSYmZS5sZW5ndGgmJmUuc3BsaXQoIiAiKS5mb3JFYWNoKCh0PT57dGhpcy5fY2xhc3NMaXN0W3RdPSExfSkpLHRoaXMuX3ByZXZpb3VzUGFuZWxDbGFzcz10LHQmJnQubGVuZ3RoJiYodC5zcGxpdCgiICIpLmZvckVhY2goKHQ9Pnt0aGlzLl9jbGFzc0xpc3RbdF09ITB9KSksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZT0iIil9Z2V0IGNsYXNzTGlzdCgpe3JldHVybiB0aGlzLnBhbmVsQ2xhc3N9c2V0IGNsYXNzTGlzdCh0KXt0aGlzLnBhbmVsQ2xhc3M9dH1uZ09uSW5pdCgpe3RoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fdXBkYXRlRGlyZWN0RGVzY2VuZGFudHMoKSx0aGlzLl9rZXlNYW5hZ2VyPW5ldyBYSCh0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMpLndpdGhXcmFwKCkud2l0aFR5cGVBaGVhZCgpLndpdGhIb21lQW5kRW5kKCksdGhpcy5fdGFiU3Vic2NyaXB0aW9uPXRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnN1YnNjcmliZSgoKCk9PnRoaXMuY2xvc2VkLmVtaXQoInRhYiIpKSksdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXMucGlwZShCZSh0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMpLFZlKCh0PT5wZSguLi50Lm1hcCgodD0+dC5fZm9jdXNlZCkpKSkpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSh0KSkpfW5nT25EZXN0cm95KCl7dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmRlc3Ryb3koKSx0aGlzLl90YWJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZC5jb21wbGV0ZSgpfV9ob3ZlcmVkKCl7cmV0dXJuIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzLnBpcGUoQmUodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxWZSgodD0+cGUoLi4udC5tYXAoKHQ9PnQuX2hvdmVyZWQpKSkpKSl9YWRkSXRlbSh0KXt9cmVtb3ZlSXRlbSh0KXt9X2hhbmRsZUtleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGUsbj10aGlzLl9rZXlNYW5hZ2VyO3N3aXRjaChlKXtjYXNlIHJIOmRIKHQpfHwodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLnBhcmVudE1lbnUmJiJsdHIiPT09dGhpcy5kaXJlY3Rpb24mJnRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKTticmVhaztjYXNlIDM5OnRoaXMucGFyZW50TWVudSYmInJ0bCI9PT10aGlzLmRpcmVjdGlvbiYmdGhpcy5jbG9zZWQuZW1pdCgia2V5ZG93biIpO2JyZWFrO2RlZmF1bHQ6ZSE9PWxIJiZlIT09Y0h8fG4uc2V0Rm9jdXNPcmlnaW4oImtleWJvYXJkIiksbi5vbktleWRvd24odCl9fWZvY3VzRmlyc3RJdGVtKHQ9InByb2dyYW0iKXt0aGlzLmxhenlDb250ZW50P3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHZlKDEpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9mb2N1c0ZpcnN0SXRlbSh0KSkpOnRoaXMuX2ZvY3VzRmlyc3RJdGVtKHQpfV9mb2N1c0ZpcnN0SXRlbSh0KXtjb25zdCBlPXRoaXMuX2tleU1hbmFnZXI7aWYoZS5zZXRGb2N1c09yaWdpbih0KS5zZXRGaXJzdEl0ZW1BY3RpdmUoKSwhZS5hY3RpdmVJdGVtJiZ0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMubGVuZ3RoKXtsZXQgdD10aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuZmlyc3QuX2dldEhvc3RFbGVtZW50KCkucGFyZW50RWxlbWVudDtmb3IoO3Q7KXtpZigibWVudSI9PT10LmdldEF0dHJpYnV0ZSgicm9sZSIpKXt0LmZvY3VzKCk7YnJlYWt9dD10LnBhcmVudEVsZW1lbnR9fX1yZXNldEFjdGl2ZUl0ZW0oKXt0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpfXNldEVsZXZhdGlvbih0KXtjb25zdCBlPU1hdGgubWluKHRoaXMuX2Jhc2VFbGV2YXRpb24rdCwyNCksbj1gJHt0aGlzLl9lbGV2YXRpb25QcmVmaXh9JHtlfWAsbz1PYmplY3Qua2V5cyh0aGlzLl9jbGFzc0xpc3QpLmZpbmQoKHQ9PnQuc3RhcnRzV2l0aCh0aGlzLl9lbGV2YXRpb25QcmVmaXgpKSk7byYmbyE9PXRoaXMuX3ByZXZpb3VzRWxldmF0aW9ufHwodGhpcy5fcHJldmlvdXNFbGV2YXRpb24mJih0aGlzLl9jbGFzc0xpc3RbdGhpcy5fcHJldmlvdXNFbGV2YXRpb25dPSExKSx0aGlzLl9jbGFzc0xpc3Rbbl09ITAsdGhpcy5fcHJldmlvdXNFbGV2YXRpb249bil9c2V0UG9zaXRpb25DbGFzc2VzKHQ9dGhpcy54UG9zaXRpb24sZT10aGlzLnlQb3NpdGlvbil7Y29uc3Qgbj10aGlzLl9jbGFzc0xpc3Q7blsibWF0LW1lbnUtYmVmb3JlIl09ImJlZm9yZSI9PT10LG5bIm1hdC1tZW51LWFmdGVyIl09ImFmdGVyIj09PXQsblsibWF0LW1lbnUtYWJvdmUiXT0iYWJvdmUiPT09ZSxuWyJtYXQtbWVudS1iZWxvdyJdPSJiZWxvdyI9PT1lfV9zdGFydEFuaW1hdGlvbigpe3RoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGU9ImVudGVyIn1fcmVzZXRBbmltYXRpb24oKXt0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlPSJ2b2lkIn1fb25BbmltYXRpb25Eb25lKHQpe3RoaXMuX2FuaW1hdGlvbkRvbmUubmV4dCh0KSx0aGlzLl9pc0FuaW1hdGluZz0hMX1fb25BbmltYXRpb25TdGFydCh0KXt0aGlzLl9pc0FuaW1hdGluZz0hMCwiZW50ZXIiPT09dC50b1N0YXRlJiYwPT09dGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXgmJih0LmVsZW1lbnQuc2Nyb2xsVG9wPTApfV91cGRhdGVEaXJlY3REZXNjZW5kYW50cygpe3RoaXMuX2FsbEl0ZW1zLmNoYW5nZXMucGlwZShCZSh0aGlzLl9hbGxJdGVtcykpLnN1YnNjcmliZSgodD0+e3RoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5yZXNldCh0LmZpbHRlcigodD0+dC5fcGFyZW50TWVudT09PXRoaXMpKSksdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLm5vdGlmeU9uQ2hhbmdlcygpfSkpfX1KcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SnEpKGZ1KEtoKSxmdShtQyksZnUoWnEpKX0sSnEuybVkaXI9aG8oe3R5cGU6SnEsY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoVXkobyxqcSw1KSxVeShvLHFxLDUpLFV5KG8scXEsNCkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4ubGF6eUNvbnRlbnQ9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2FsbEl0ZW1zPXQpLEJ5KHQ9ankoKSkmJihuLml0ZW1zPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KEViLDUpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4udGVtcGxhdGVSZWY9dC5maXJzdCl9fSxpbnB1dHM6e2JhY2tkcm9wQ2xhc3M6ImJhY2tkcm9wQ2xhc3MiLHhQb3NpdGlvbjoieFBvc2l0aW9uIix5UG9zaXRpb246InlQb3NpdGlvbiIsb3ZlcmxhcFRyaWdnZXI6Im92ZXJsYXBUcmlnZ2VyIixoYXNCYWNrZHJvcDoiaGFzQmFja2Ryb3AiLHBhbmVsQ2xhc3M6WyJjbGFzcyIsInBhbmVsQ2xhc3MiXSxjbGFzc0xpc3Q6ImNsYXNzTGlzdCIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxhcmlhRGVzY3JpYmVkYnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYURlc2NyaWJlZGJ5Il19LG91dHB1dHM6e2Nsb3NlZDoiY2xvc2VkIixjbG9zZToiY2xvc2UifX0pLEpxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbWnFdfV19XSxKcS5wcm9wRGVjb3JhdG9ycz17X2FsbEl0ZW1zOlt7dHlwZTpvcixhcmdzOltxcSx7ZGVzY2VuZGFudHM6ITB9XX1dLGJhY2tkcm9wQ2xhc3M6W3t0eXBlOlJffV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLHhQb3NpdGlvbjpbe3R5cGU6Ul99XSx5UG9zaXRpb246W3t0eXBlOlJffV0sdGVtcGxhdGVSZWY6W3t0eXBlOmFyLGFyZ3M6W0ViXX1dLGl0ZW1zOlt7dHlwZTpvcixhcmdzOltxcSx7ZGVzY2VuZGFudHM6ITF9XX1dLGxhenlDb250ZW50Olt7dHlwZTppcixhcmdzOltqcV19XSxvdmVybGFwVHJpZ2dlcjpbe3R5cGU6Ul99XSxoYXNCYWNrZHJvcDpbe3R5cGU6Ul99XSxwYW5lbENsYXNzOlt7dHlwZTpSXyxhcmdzOlsiY2xhc3MiXX1dLGNsYXNzTGlzdDpbe3R5cGU6Ul99XSxjbG9zZWQ6W3t0eXBlOkVffV0sY2xvc2U6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSnEsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1pxXX1dfV19KSx7YmFja2Ryb3BDbGFzczpbe3R5cGU6Ul99XSxjbG9zZWQ6W3t0eXBlOkVffV0sY2xvc2U6W3t0eXBlOkVffV0seFBvc2l0aW9uOlt7dHlwZTpSX31dLHlQb3NpdGlvbjpbe3R5cGU6Ul99XSxvdmVybGFwVHJpZ2dlcjpbe3R5cGU6Ul99XSxoYXNCYWNrZHJvcDpbe3R5cGU6Ul99XSxwYW5lbENsYXNzOlt7dHlwZTpSXyxhcmdzOlsiY2xhc3MiXX1dLGNsYXNzTGlzdDpbe3R5cGU6Ul99XSxfYWxsSXRlbXM6W3t0eXBlOm9yLGFyZ3M6W3FxLHtkZXNjZW5kYW50czohMH1dfV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLHRlbXBsYXRlUmVmOlt7dHlwZTphcixhcmdzOltFYl19XSxpdGVtczpbe3R5cGU6b3IsYXJnczpbcXEse2Rlc2NlbmRhbnRzOiExfV19XSxsYXp5Q29udGVudDpbe3R5cGU6aXIsYXJnczpbanFdfV19KTtjbGFzcyBRcSBleHRlbmRzIEpxe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUsbiksdGhpcy5fZWxldmF0aW9uUHJlZml4PSJtYXQtZWxldmF0aW9uLXoiLHRoaXMuX2Jhc2VFbGV2YXRpb249NH19UXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFFxKShmdShLaCksZnUobUMpLGZ1KFpxKSl9LFFxLsm1Y21wPXNvKHt0eXBlOlFxLHNlbGVjdG9yczpbWyJtYXQtbWVudSJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZ5bSgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCkoImFyaWEtZGVzY3JpYmVkYnkiLG51bGwpfSxleHBvcnRBczpbIm1hdE1lbnUiXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOkdxLHVzZUV4aXN0aW5nOlFxfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6QnEsZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbInRhYmluZGV4IiwiLTEiLCJyb2xlIiwibWVudSIsMSwibWF0LW1lbnUtcGFuZWwiLDMsImlkIiwibmdDbGFzcyIsImtleWRvd24iLCJjbGljayJdLFsxLCJtYXQtbWVudS1jb250ZW50Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihJdSgpLEhtKDAsVnEsMyw2LCJuZy10ZW1wbGF0ZSIpKX0sZGlyZWN0aXZlczpbQ3ZdLHN0eWxlczpbIm1hdC1tZW51e2Rpc3BsYXk6bm9uZX0ubWF0LW1lbnUtcGFuZWx7bWluLXdpZHRoOjExMnB4O21heC13aWR0aDoyODBweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDQ4cHgpO2JvcmRlci1yYWRpdXM6NHB4O291dGxpbmU6MDttaW4taGVpZ2h0OjY0cHh9Lm1hdC1tZW51LXBhbmVsLm5nLWFuaW1hdGluZ3twb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LXBhbmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtbWVudS1jb250ZW50Om5vdCg6ZW1wdHkpe3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1tZW51LWl0ZW17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZW51LWl0ZW06Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbXt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW17bWFyZ2luLXRvcDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZHtvdXRsaW5lOmRvdHRlZCAxcHh9Lm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MzJweH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MTZweDtwYWRkaW5nLWxlZnQ6MzJweH0ubWF0LW1lbnUtc3VibWVudS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt3aWR0aDo1cHg7aGVpZ2h0OjEwcHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtbWVudS1zdWJtZW51LWljb257cmlnaHQ6YXV0bztsZWZ0OjE2cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGVYKC0xKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1zdWJtZW51LWljb257ZmlsbDpDYW52YXNUZXh0fWJ1dHRvbi5tYXQtbWVudS1pdGVte3dpZHRoOjEwMCV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1tZW51LXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbVXEudHJhbnNmb3JtTWVudSxVcS5mYWRlSW5JdGVtc119LGNoYW5nZURldGVjdGlvbjowfSksUXEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltacV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUXEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LW1lbnUiLHRlbXBsYXRlOic8bmctdGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz0ibWF0LW1lbnUtcGFuZWwiXG4gICAgW2lkXT0icGFuZWxJZCJcbiAgICBbbmdDbGFzc109Il9jbGFzc0xpc3QiXG4gICAgKGtleWRvd24pPSJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIlxuICAgIChjbGljayk9ImNsb3NlZC5lbWl0KFwnY2xpY2tcJykiXG4gICAgW0B0cmFuc2Zvcm1NZW51XT0iX3BhbmVsQW5pbWF0aW9uU3RhdGUiXG4gICAgKEB0cmFuc2Zvcm1NZW51LnN0YXJ0KT0iX29uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KSJcbiAgICAoQHRyYW5zZm9ybU1lbnUuZG9uZSk9Il9vbkFuaW1hdGlvbkRvbmUoJGV2ZW50KSJcbiAgICB0YWJpbmRleD0iLTEiXG4gICAgcm9sZT0ibWVudSJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIHx8IG51bGwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkgfHwgbnVsbCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT0iYXJpYURlc2NyaWJlZGJ5IHx8IG51bGwiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1tZW51LWNvbnRlbnQiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4nLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGV4cG9ydEFzOiJtYXRNZW51Iixob3N0OnsiW2F0dHIuYXJpYS1sYWJlbF0iOiJudWxsIiwiW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSI6Im51bGwiLCJbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSI6Im51bGwifSxhbmltYXRpb25zOltVcS50cmFuc2Zvcm1NZW51LFVxLmZhZGVJbkl0ZW1zXSxwcm92aWRlcnM6W3twcm92aWRlOkdxLHVzZUV4aXN0aW5nOlFxfV0sc3R5bGVzOlsibWF0LW1lbnV7ZGlzcGxheTpub25lfS5tYXQtbWVudS1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gNDhweCk7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowO21pbi1oZWlnaHQ6NjRweH0ubWF0LW1lbnUtcGFuZWwubmctYW5pbWF0aW5ne3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1tZW51LWNvbnRlbnQ6bm90KDplbXB0eSl7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LW1lbnUtaXRlbXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1lbnUtaXRlbTo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVte3RleHQtYWxpZ246cmlnaHR9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW1lbnUtaXRlbSAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0gLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRde3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbXttYXJnaW4tdG9wOjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVke291dGxpbmU6ZG90dGVkIDFweH0ubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJ7cGFkZGluZy1yaWdodDozMnB4fVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJ7cGFkZGluZy1yaWdodDoxNnB4O3BhZGRpbmctbGVmdDozMnB4fS5tYXQtbWVudS1zdWJtZW51LWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxNnB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3dpZHRoOjVweDtoZWlnaHQ6MTBweDtmaWxsOmN1cnJlbnRDb2xvcn1bZGlyPXJ0bF0gLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntyaWdodDphdXRvO2xlZnQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSBzY2FsZVgoLTEpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntmaWxsOkNhbnZhc1RleHR9YnV0dG9uLm1hdC1tZW51LWl0ZW17d2lkdGg6MTAwJX0ubWF0LW1lbnUtaXRlbSAubWF0LW1lbnUtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W1pxXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0ICRxPW5ldyBlcigibWF0LW1lbnUtc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3QgdFo9e3Byb3ZpZGU6JHEsZGVwczpbclZdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZVoodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fSxuWj1rSCh7cGFzc2l2ZTohMH0pO2NsYXNzIG9ae2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2VsZW1lbnQ9ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW4sdGhpcy5fbWVudUl0ZW1JbnN0YW5jZT1hLHRoaXMuX2Rpcj1yLHRoaXMuX2ZvY3VzTW9uaXRvcj1zLHRoaXMuX292ZXJsYXlSZWY9bnVsbCx0aGlzLl9tZW51T3Blbj0hMSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj1mLkVNUFRZLHRoaXMuX2hvdmVyU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fbWVudUNsb3NlU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5faGFuZGxlVG91Y2hTdGFydD10PT57cEYodCl8fCh0aGlzLl9vcGVuZWRCeT0idG91Y2giKX0sdGhpcy5fb3BlbmVkQnk9dm9pZCAwLHRoaXMucmVzdG9yZUZvY3VzPSEwLHRoaXMubWVudU9wZW5lZD1uZXcgU3ksdGhpcy5vbk1lbnVPcGVuPXRoaXMubWVudU9wZW5lZCx0aGlzLm1lbnVDbG9zZWQ9bmV3IFN5LHRoaXMub25NZW51Q2xvc2U9dGhpcy5tZW51Q2xvc2VkLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PW8sdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51PWkgaW5zdGFuY2VvZiBKcT9pOnZvaWQgMCxlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlVG91Y2hTdGFydCxuWiksYSYmKGEuX3RyaWdnZXJzU3VibWVudT10aGlzLnRyaWdnZXJzU3VibWVudSgpKX1nZXQgX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcigpe3JldHVybiB0aGlzLm1lbnV9c2V0IF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IodCl7dGhpcy5tZW51PXR9Z2V0IG1lbnUoKXtyZXR1cm4gdGhpcy5fbWVudX1zZXQgbWVudSh0KXt0IT09dGhpcy5fbWVudSYmKHRoaXMuX21lbnU9dCx0aGlzLl9tZW51Q2xvc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0JiYodCE9PXRoaXMuX3BhcmVudE1hdGVyaWFsTWVudXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fChmdW5jdGlvbiBlKCl7dGhyb3cgRXJyb3IoIm1hdE1lbnVUcmlnZ2VyRm9yOiBtZW51IGNhbm5vdCBjb250YWluIGl0cyBvd24gdHJpZ2dlci4gQXNzaWduIGEgbWVudSB0aGF0IGlzIG5vdCBhIHBhcmVudCBvZiB0aGUgdHJpZ2dlciBvciBtb3ZlIHRoZSB0cmlnZ2VyIG91dHNpZGUgb2YgdGhlIG1lbnUuIil9KSgpLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbj10LmNsb3NlLnN1YnNjcmliZSgodD0+e3RoaXMuX2Rlc3Ryb3lNZW51KHQpLCJjbGljayIhPT10JiYidGFiIiE9PXR8fCF0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnV8fHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5jbG9zZWQuZW1pdCh0KX0pKSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2NoZWNrTWVudSgpLHRoaXMuX2hhbmRsZUhvdmVyKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsKSx0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlVG91Y2hTdGFydCxuWiksdGhpcy5fbWVudUNsb3NlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCBtZW51T3Blbigpe3JldHVybiB0aGlzLl9tZW51T3Blbn1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWU/InJ0bCI6Imx0ciJ9dHJpZ2dlcnNTdWJtZW51KCl7cmV0dXJuISghdGhpcy5fbWVudUl0ZW1JbnN0YW5jZXx8IXRoaXMuX3BhcmVudE1hdGVyaWFsTWVudSl9dG9nZ2xlTWVudSgpe3JldHVybiB0aGlzLl9tZW51T3Blbj90aGlzLmNsb3NlTWVudSgpOnRoaXMub3Blbk1lbnUoKX1vcGVuTWVudSgpe2lmKHRoaXMuX21lbnVPcGVuKXJldHVybjt0aGlzLl9jaGVja01lbnUoKTtjb25zdCB0PXRoaXMuX2NyZWF0ZU92ZXJsYXkoKSxlPXQuZ2V0Q29uZmlnKCk7dGhpcy5fc2V0UG9zaXRpb24oZS5wb3NpdGlvblN0cmF0ZWd5KSxlLmhhc0JhY2tkcm9wPW51bGw9PXRoaXMubWVudS5oYXNCYWNrZHJvcD8hdGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKTp0aGlzLm1lbnUuaGFzQmFja2Ryb3AsdC5hdHRhY2godGhpcy5fZ2V0UG9ydGFsKCkpLHRoaXMubWVudS5sYXp5Q29udGVudCYmdGhpcy5tZW51LmxhenlDb250ZW50LmF0dGFjaCh0aGlzLm1lbnVEYXRhKSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj10aGlzLl9tZW51Q2xvc2luZ0FjdGlvbnMoKS5zdWJzY3JpYmUoKCgpPT50aGlzLmNsb3NlTWVudSgpKSksdGhpcy5faW5pdE1lbnUoKSx0aGlzLm1lbnUgaW5zdGFuY2VvZiBKcSYmdGhpcy5tZW51Ll9zdGFydEFuaW1hdGlvbigpfWNsb3NlTWVudSgpe3RoaXMubWVudS5jbG9zZS5lbWl0KCl9Zm9jdXModCxlKXt0aGlzLl9mb2N1c01vbml0b3ImJnQ/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2VsZW1lbnQsdCxlKTp0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoZSl9dXBkYXRlUG9zaXRpb24oKXt2YXIgdDtudWxsPT09KHQ9dGhpcy5fb3ZlcmxheVJlZil8fHZvaWQgMD09PXR8fHQudXBkYXRlUG9zaXRpb24oKX1fZGVzdHJveU1lbnUodCl7aWYoIXRoaXMuX292ZXJsYXlSZWZ8fCF0aGlzLm1lbnVPcGVuKXJldHVybjtjb25zdCBlPXRoaXMubWVudTt0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksIXRoaXMucmVzdG9yZUZvY3VzfHwia2V5ZG93biIhPT10JiZ0aGlzLl9vcGVuZWRCeSYmdGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKXx8dGhpcy5mb2N1cyh0aGlzLl9vcGVuZWRCeSksdGhpcy5fb3BlbmVkQnk9dm9pZCAwLGUgaW5zdGFuY2VvZiBKcT8oZS5fcmVzZXRBbmltYXRpb24oKSxlLmxhenlDb250ZW50P2UuX2FuaW1hdGlvbkRvbmUucGlwZShmZSgodD0+InZvaWQiPT09dC50b1N0YXRlKSksdmUoMSksVWUoZS5sYXp5Q29udGVudC5fYXR0YWNoZWQpKS5zdWJzY3JpYmUoe25leHQ6KCk9PmUubGF6eUNvbnRlbnQuZGV0YWNoKCksY29tcGxldGU6KCk9PnRoaXMuX3NldElzTWVudU9wZW4oITEpfSk6dGhpcy5fc2V0SXNNZW51T3BlbighMSkpOih0aGlzLl9zZXRJc01lbnVPcGVuKCExKSxlLmxhenlDb250ZW50JiZlLmxhenlDb250ZW50LmRldGFjaCgpKX1faW5pdE1lbnUoKXt0aGlzLm1lbnUucGFyZW50TWVudT10aGlzLnRyaWdnZXJzU3VibWVudSgpP3RoaXMuX3BhcmVudE1hdGVyaWFsTWVudTp2b2lkIDAsdGhpcy5tZW51LmRpcmVjdGlvbj10aGlzLmRpcix0aGlzLl9zZXRNZW51RWxldmF0aW9uKCksdGhpcy5tZW51LmZvY3VzRmlyc3RJdGVtKHRoaXMuX29wZW5lZEJ5fHwicHJvZ3JhbSIpLHRoaXMuX3NldElzTWVudU9wZW4oITApfV9zZXRNZW51RWxldmF0aW9uKCl7aWYodGhpcy5tZW51LnNldEVsZXZhdGlvbil7bGV0IHQ9MCxlPXRoaXMubWVudS5wYXJlbnRNZW51O2Zvcig7ZTspdCsrLGU9ZS5wYXJlbnRNZW51O3RoaXMubWVudS5zZXRFbGV2YXRpb24odCl9fV9zZXRJc01lbnVPcGVuKHQpe3RoaXMuX21lbnVPcGVuPXQsdGhpcy5fbWVudU9wZW4/dGhpcy5tZW51T3BlbmVkLmVtaXQoKTp0aGlzLm1lbnVDbG9zZWQuZW1pdCgpLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJnRoaXMuX21lbnVJdGVtSW5zdGFuY2UuX3NldEhpZ2hsaWdodGVkKHQpfV9jaGVja01lbnUoKXt0aGlzLm1lbnV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB0KCl7dGhyb3cgRXJyb3IoJ21hdE1lbnVUcmlnZ2VyRm9yOiBtdXN0IHBhc3MgaW4gYW4gbWF0LW1lbnUgaW5zdGFuY2UuXG5cbiAgICBFeGFtcGxlOlxuICAgICAgPG1hdC1tZW51ICNtZW51PSJtYXRNZW51Ij48L21hdC1tZW51PlxuICAgICAgPGJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPSJtZW51Ij48L2J1dHRvbj4nKX0pKCl9X2NyZWF0ZU92ZXJsYXkoKXtpZighdGhpcy5fb3ZlcmxheVJlZil7Y29uc3QgdD10aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7dGhpcy5fc3Vic2NyaWJlVG9Qb3NpdGlvbnModC5wb3NpdGlvblN0cmF0ZWd5KSx0aGlzLl9vdmVybGF5UmVmPXRoaXMuX292ZXJsYXkuY3JlYXRlKHQpLHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgpfXJldHVybiB0aGlzLl9vdmVybGF5UmVmfV9nZXRPdmVybGF5Q29uZmlnKCl7cmV0dXJuIG5ldyBJQih7cG9zaXRpb25TdHJhdGVneTp0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50KS53aXRoTG9ja2VkUG9zaXRpb24oKS53aXRoR3Jvd0FmdGVyT3BlbigpLndpdGhUcmFuc2Zvcm1PcmlnaW5PbigiLm1hdC1tZW51LXBhbmVsLCAubWF0LW1kYy1tZW51LXBhbmVsIiksYmFja2Ryb3BDbGFzczp0aGlzLm1lbnUuYmFja2Ryb3BDbGFzc3x8ImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIixwYW5lbENsYXNzOnRoaXMubWVudS5vdmVybGF5UGFuZWxDbGFzcyxzY3JvbGxTdHJhdGVneTp0aGlzLl9zY3JvbGxTdHJhdGVneSgpLGRpcmVjdGlvbjp0aGlzLl9kaXJ9KX1fc3Vic2NyaWJlVG9Qb3NpdGlvbnModCl7dGhpcy5tZW51LnNldFBvc2l0aW9uQ2xhc3NlcyYmdC5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKCh0PT57dGhpcy5tZW51LnNldFBvc2l0aW9uQ2xhc3Nlcygic3RhcnQiPT09dC5jb25uZWN0aW9uUGFpci5vdmVybGF5WD8iYWZ0ZXIiOiJiZWZvcmUiLCJ0b3AiPT09dC5jb25uZWN0aW9uUGFpci5vdmVybGF5WT8iYmVsb3ciOiJhYm92ZSIpfSkpfV9zZXRQb3NpdGlvbih0KXtsZXRbZSxuXT0iYmVmb3JlIj09PXRoaXMubWVudS54UG9zaXRpb24/WyJlbmQiLCJzdGFydCJdOlsic3RhcnQiLCJlbmQiXSxbbyxpXT0iYWJvdmUiPT09dGhpcy5tZW51LnlQb3NpdGlvbj9bImJvdHRvbSIsInRvcCJdOlsidG9wIiwiYm90dG9tIl0sW2Escl09W28saV0sW3MsbF09W2Usbl0sYz0wO3RoaXMudHJpZ2dlcnNTdWJtZW51KCk/KGw9ZT0iYmVmb3JlIj09PXRoaXMubWVudS54UG9zaXRpb24/InN0YXJ0IjoiZW5kIixuPXM9ImVuZCI9PT1lPyJzdGFydCI6ImVuZCIsYz0iYm90dG9tIj09PW8/ODotOCk6dGhpcy5tZW51Lm92ZXJsYXBUcmlnZ2VyfHwoYT0idG9wIj09PW8/ImJvdHRvbSI6InRvcCIscj0idG9wIj09PWk/ImJvdHRvbSI6InRvcCIpLHQud2l0aFBvc2l0aW9ucyhbe29yaWdpblg6ZSxvcmlnaW5ZOmEsb3ZlcmxheVg6cyxvdmVybGF5WTpvLG9mZnNldFk6Y30se29yaWdpblg6bixvcmlnaW5ZOmEsb3ZlcmxheVg6bCxvdmVybGF5WTpvLG9mZnNldFk6Y30se29yaWdpblg6ZSxvcmlnaW5ZOnIsb3ZlcmxheVg6cyxvdmVybGF5WTppLG9mZnNldFk6LWN9LHtvcmlnaW5YOm4sb3JpZ2luWTpyLG92ZXJsYXlYOmwsb3ZlcmxheVk6aSxvZmZzZXRZOi1jfV0pfV9tZW51Q2xvc2luZ0FjdGlvbnMoKXtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLGU9dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpO3JldHVybiBwZSh0LHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuY2xvc2VkOnp0KCksdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51P3RoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5faG92ZXJlZCgpLnBpcGUoZmUoKHQ9PnQhPT10aGlzLl9tZW51SXRlbUluc3RhbmNlKSksZmUoKCgpPT50aGlzLl9tZW51T3BlbikpKTp6dCgpLGUpfV9oYW5kbGVNb3VzZWRvd24odCl7ZEYodCl8fCh0aGlzLl9vcGVuZWRCeT0wPT09dC5idXR0b24/Im1vdXNlIjp2b2lkIDAsdGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSYmdC5wcmV2ZW50RGVmYXVsdCgpKX1faGFuZGxlS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZTtlIT09YUgmJmUhPT1zSHx8KHRoaXMuX29wZW5lZEJ5PSJrZXlib2FyZCIpLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJigzOT09PWUmJiJsdHIiPT09dGhpcy5kaXJ8fDM3PT09ZSYmInJ0bCI9PT10aGlzLmRpcikmJih0aGlzLl9vcGVuZWRCeT0ia2V5Ym9hcmQiLHRoaXMub3Blbk1lbnUoKSl9X2hhbmRsZUNsaWNrKHQpe3RoaXMudHJpZ2dlcnNTdWJtZW51KCk/KHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vcGVuTWVudSgpKTp0aGlzLnRvZ2dsZU1lbnUoKX1faGFuZGxlSG92ZXIoKXt0aGlzLnRyaWdnZXJzU3VibWVudSgpJiZ0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUmJih0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbj10aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuX2hvdmVyZWQoKS5waXBlKGZlKCh0PT50PT09dGhpcy5fbWVudUl0ZW1JbnN0YW5jZSYmIXQuZGlzYWJsZWQpKSxQZSgwLG90KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX29wZW5lZEJ5PSJtb3VzZSIsdGhpcy5tZW51IGluc3RhbmNlb2YgSnEmJnRoaXMubWVudS5faXNBbmltYXRpbmc/dGhpcy5tZW51Ll9hbmltYXRpb25Eb25lLnBpcGUodmUoMSksUGUoMCxvdCksVWUodGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51Ll9ob3ZlcmVkKCkpKS5zdWJzY3JpYmUoKCgpPT50aGlzLm9wZW5NZW51KCkpKTp0aGlzLm9wZW5NZW51KCl9KSkpfV9nZXRQb3J0YWwoKXtyZXR1cm4gdGhpcy5fcG9ydGFsJiZ0aGlzLl9wb3J0YWwudGVtcGxhdGVSZWY9PT10aGlzLm1lbnUudGVtcGxhdGVSZWZ8fCh0aGlzLl9wb3J0YWw9bmV3IHlCKHRoaXMubWVudS50ZW1wbGF0ZVJlZix0aGlzLl92aWV3Q29udGFpbmVyUmVmKSksdGhpcy5fcG9ydGFsfX1vWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b1opKGZ1KHJWKSxmdShLaCksZnUoRmIpLGZ1KCRxKSxmdShHcSw4KSxmdShxcSwxMCksZnUoQUYsOCksZnUoeEYpKX0sb1ouybVkaXI9aG8oe3R5cGU6b1osc2VsZWN0b3JzOltbIiIsIm1hdC1tZW51LXRyaWdnZXItZm9yIiwiIl0sWyIiLCJtYXRNZW51VHJpZ2dlckZvciIsIiJdXSxob3N0QXR0cnM6WyJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIsMSwibWF0LW1lbnUtdHJpZ2dlciJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVNb3VzZWRvd24oZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUNsaWNrKGUpfSkpLDImZSYmeW0oImFyaWEtZXhwYW5kZWQiLG4ubWVudU9wZW58fG51bGwpKCJhcmlhLWNvbnRyb2xzIixuLm1lbnVPcGVuP24ubWVudS5wYW5lbElkOm51bGwpfSxpbnB1dHM6e3Jlc3RvcmVGb2N1czpbIm1hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzIiwicmVzdG9yZUZvY3VzIl0sX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcjpbIm1hdC1tZW51LXRyaWdnZXItZm9yIiwiX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvciJdLG1lbnU6WyJtYXRNZW51VHJpZ2dlckZvciIsIm1lbnUiXSxtZW51RGF0YTpbIm1hdE1lbnVUcmlnZ2VyRGF0YSIsIm1lbnVEYXRhIl19LG91dHB1dHM6e21lbnVPcGVuZWQ6Im1lbnVPcGVuZWQiLG9uTWVudU9wZW46Im9uTWVudU9wZW4iLG1lbnVDbG9zZWQ6Im1lbnVDbG9zZWQiLG9uTWVudUNsb3NlOiJvbk1lbnVDbG9zZSJ9LGV4cG9ydEFzOlsibWF0TWVudVRyaWdnZXIiXX0pLG9aLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6clZ9LHt0eXBlOktofSx7dHlwZTpGYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRxXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbR3FdfSx7dHlwZTpCcn1dfSx7dHlwZTpxcSxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6eEZ9XSxvWi5wcm9wRGVjb3JhdG9ycz17X2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcjpbe3R5cGU6Ul8sYXJnczpbIm1hdC1tZW51LXRyaWdnZXItZm9yIl19XSxtZW51Olt7dHlwZTpSXyxhcmdzOlsibWF0TWVudVRyaWdnZXJGb3IiXX1dLG1lbnVEYXRhOlt7dHlwZTpSXyxhcmdzOlsibWF0TWVudVRyaWdnZXJEYXRhIl19XSxyZXN0b3JlRm9jdXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1cyJdfV0sbWVudU9wZW5lZDpbe3R5cGU6RV99XSxvbk1lbnVPcGVuOlt7dHlwZTpFX31dLG1lbnVDbG9zZWQ6W3t0eXBlOkVffV0sb25NZW51Q2xvc2U6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIob1osW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1tZW51LXRyaWdnZXItZm9yXSwgW21hdE1lbnVUcmlnZ2VyRm9yXSIsaG9zdDp7Y2xhc3M6Im1hdC1tZW51LXRyaWdnZXIiLCJhcmlhLWhhc3BvcHVwIjoidHJ1ZSIsIlthdHRyLmFyaWEtZXhwYW5kZWRdIjoibWVudU9wZW4gfHwgbnVsbCIsIlthdHRyLmFyaWEtY29udHJvbHNdIjoibWVudU9wZW4gPyBtZW51LnBhbmVsSWQgOiBudWxsIiwiKG1vdXNlZG93bikiOiJfaGFuZGxlTW91c2Vkb3duKCRldmVudCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIiwiKGNsaWNrKSI6Il9oYW5kbGVDbGljaygkZXZlbnQpIn0sZXhwb3J0QXM6Im1hdE1lbnVUcmlnZ2VyIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnJWfSx7dHlwZTpLaH0se3R5cGU6RmJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlskcV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0dxXX0se3R5cGU6QnJ9XX0se3R5cGU6cXEsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnhGfV19KSx7cmVzdG9yZUZvY3VzOlt7dHlwZTpSXyxhcmdzOlsibWF0TWVudVRyaWdnZXJSZXN0b3JlRm9jdXMiXX1dLG1lbnVPcGVuZWQ6W3t0eXBlOkVffV0sb25NZW51T3Blbjpbe3R5cGU6RV99XSxtZW51Q2xvc2VkOlt7dHlwZTpFX31dLG9uTWVudUNsb3NlOlt7dHlwZTpFX31dLF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6W3t0eXBlOlJfLGFyZ3M6WyJtYXQtbWVudS10cmlnZ2VyLWZvciJdfV0sbWVudTpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRm9yIl19XSxtZW51RGF0YTpbe3R5cGU6Ul8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRGF0YSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGlae31pWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVopfSxpWi7JtW1vZD11byh7dHlwZTppWn0pLGlaLsm1aW5qPURuKHtwcm92aWRlcnM6W3RaXSxpbXBvcnRzOltXRl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGlaLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbb1osV3EsV0ZdLGRlY2xhcmF0aW9uczpbb1osV3FdLHByb3ZpZGVyczpbdFpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oaVose2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltvWixXcV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bb1osV3EsV0ZdfX0pO2NsYXNzIGFae31mdW5jdGlvbiByWih0LGUpezEmdCYmTXUoMCwibWF0LWljb24iLDgpfWZ1bmN0aW9uIHNaKHQsZSl7MSZ0JiZNdSgwLCJtYXQtaWNvbiIsOSl9ZnVuY3Rpb24gbFoodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiwxMCl9dmFyIGNaO2FaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhWil9LGFaLsm1bW9kPXVvKHt0eXBlOmFafSksYVouybVpbmo9RG4oe3Byb3ZpZGVyczpbdFpdLGltcG9ydHM6W1tyeCxXRix4TCx1VixpWl0sdUIsV0YsaVpdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhWixbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LFdGLHhMLHVWLGlaXSxleHBvcnRzOlt1QixXRixRcSxxcSxpWl0sZGVjbGFyYXRpb25zOltRcSxxcV0scHJvdmlkZXJzOlt0Wl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhhWix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1FxLHFxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxXRix4TCx1VixpWl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdUIsV0YsUXEscXEsaVpdfX0pLChmdW5jdGlvbih0KXt0W3QuREVGQVVMVD0wXT0iREVGQVVMVCIsdFt0LkRBUktfTU9ERV9PTj0xXT0iREFSS19NT0RFX09OIix0W3QuREFSS19NT0RFX09GRj0yXT0iREFSS19NT0RFX09GRiJ9KShjWnx8KGNaPXt9KSk7Y2xhc3MgZFp7Y29uc3RydWN0b3IoKXt0aGlzLkRhcmtNb2RlT3ZlcnJpZGU9Y1osdGhpcy5vbk92ZXJyaWRlQ2hhbmdlZD1uZXcgU3l9Z2V0QnV0dG9uVGl0bGUoKXtsZXQgdDtzd2l0Y2godGhpcy5kYXJrTW9kZU92ZXJyaWRlKXtjYXNlIGNaLkRFRkFVTFQ6dD0iQnJvd3NlciBkZWZhdWx0IjticmVhaztjYXNlIGNaLkRBUktfTU9ERV9PTjp0PSJEYXJrIG1vZGUiO2JyZWFrO2Nhc2UgY1ouREFSS19NT0RFX09GRjp0PSJMaWdodCBtb2RlIn1yZXR1cm5gQ3VycmVudCBtb2RlOiBbJHt0fV0uIFN3aXRjaCBiZXR3ZWVuIGJyb3dzZXIgZGVmYXVsdCwgbGlnaHQsIG9yIGRhcmsgdGhlbWUuYH19ZFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRaKX0sZFouybVjbXA9c28oe3R5cGU6ZFosc2VsZWN0b3JzOltbImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnQiXV0saW5wdXRzOntkYXJrTW9kZU92ZXJyaWRlOiJkYXJrTW9kZU92ZXJyaWRlIn0sb3V0cHV0czp7b25PdmVycmlkZUNoYW5nZWQ6Im9uT3ZlcnJpZGVDaGFuZ2VkIn0sZGVjbHM6MTUsdmFyczo2LGNvbnN0czpbWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIiwiTWVudSBmb3IgY2hhbmdpbmcgbGlnaHQgb3IgZGFyayB0aGVtZSIsMywibWF0TWVudVRyaWdnZXJGb3IiLCJuZ1N3aXRjaCIsInRpdGxlIl0sWyJzdmdJY29uIiwiYnJpZ2h0bmVzc182XzI0cHgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic3ZnSWNvbiIsImxpZ2h0X21vZGVfMjRweCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJzdmdJY29uIiwiZGFya19tb2RlXzI0cHgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsibWVudSIsIm1hdE1lbnUiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJ0aXRsZSIsIlNldCB0aGUgdGhlbWUgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgbW9kZSBpbiB0aGUgYnJvd3Nlci4iLDMsImNsaWNrIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwidGl0bGUiLCJGb3JjZSBsaWdodCBUZW5zb3JCb2FyZCB0aGVtZS4iLDMsImNsaWNrIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwidGl0bGUiLCJGb3JjZSBkYXJrIFRlbnNvckJvYXJkIHRoZW1lLiIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJicmlnaHRuZXNzXzZfMjRweCJdLFsic3ZnSWNvbiIsImxpZ2h0X21vZGVfMjRweCJdLFsic3ZnSWNvbiIsImRhcmtfbW9kZV8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihfdSgwLCJidXR0b24iLDApLEhtKDEsclosMSwwLCJtYXQtaWNvbiIsMSksSG0oMixzWiwxLDAsIm1hdC1pY29uIiwyKSxIbSgzLGxaLDEsMCwibWF0LWljb24iLDMpLEN1KCksX3UoNCwibWF0LW1lbnUiLG51bGwsNCksX3UoNiwiYnV0dG9uIiw1KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25PdmVycmlkZUNoYW5nZWQuZW1pdChuLkRhcmtNb2RlT3ZlcnJpZGUuREVGQVVMVCl9KSksX3UoNywibGFiZWwiKSxQZig4LCJCcm93c2VyIGRlZmF1bHQiKSxDdSgpLEN1KCksX3UoOSwiYnV0dG9uIiw2KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25PdmVycmlkZUNoYW5nZWQuZW1pdChuLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09GRil9KSksX3UoMTAsImxhYmVsIiksUGYoMTEsIkxpZ2h0IiksQ3UoKSxDdSgpLF91KDEyLCJidXR0b24iLDcpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KG4uRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT04pfSkpLF91KDEzLCJsYWJlbCIpLFBmKDE0LCJEYXJrIiksQ3UoKSxDdSgpLEN1KCkpLDImZSl7aHUoIm1hdE1lbnVUcmlnZ2VyRm9yIixGbSg1KSkoIm5nU3dpdGNoIixuLmRhcmtNb2RlT3ZlcnJpZGUpKCJ0aXRsZSIsbi5nZXRCdXR0b25UaXRsZSgpKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIixuLkRhcmtNb2RlT3ZlcnJpZGUuREVGQVVMVCksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsbi5EYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLG4uRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT04pfX0sZGlyZWN0aXZlczpbV0wsb1osRHYsUnYsUXEscXEsRXFdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZFosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxidXR0b25cbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT0ibWVudSJcbiAgICAgIGFyaWEtbGFiZWw9Ik1lbnUgZm9yIGNoYW5naW5nIGxpZ2h0IG9yIGRhcmsgdGhlbWUiXG4gICAgICBbbmdTd2l0Y2hdPSJkYXJrTW9kZU92ZXJyaWRlIlxuICAgICAgW3RpdGxlXT0iZ2V0QnV0dG9uVGl0bGUoKSJcbiAgICA+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgKm5nU3dpdGNoQ2FzZT0iRGFya01vZGVPdmVycmlkZS5ERUZBVUxUIlxuICAgICAgICBzdmdJY29uPSJicmlnaHRuZXNzXzZfMjRweCJcbiAgICAgID48L21hdC1pY29uPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgICpuZ1N3aXRjaENhc2U9IkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09GRiJcbiAgICAgICAgc3ZnSWNvbj0ibGlnaHRfbW9kZV8yNHB4IlxuICAgICAgPjwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgKm5nU3dpdGNoQ2FzZT0iRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT04iXG4gICAgICAgIHN2Z0ljb249ImRhcmtfbW9kZV8yNHB4IlxuICAgICAgPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPG1hdC1tZW51ICNtZW51PSJtYXRNZW51Ij5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICB0aXRsZT0iU2V0IHRoZSB0aGVtZSB0byBtYXRjaCB0aGUgZGVmYXVsdCBtb2RlIGluIHRoZSBicm93c2VyLiJcbiAgICAgICAgKGNsaWNrKT0ib25PdmVycmlkZUNoYW5nZWQuZW1pdChEYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQpIlxuICAgICAgPlxuICAgICAgICA8bGFiZWw+QnJvd3NlciBkZWZhdWx0PC9sYWJlbD5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgIHRpdGxlPSJGb3JjZSBsaWdodCBUZW5zb3JCb2FyZCB0aGVtZS4iXG4gICAgICAgIChjbGljayk9Im9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT0ZGKSJcbiAgICAgID5cbiAgICAgICAgPGxhYmVsPkxpZ2h0PC9sYWJlbD5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgIHRpdGxlPSJGb3JjZSBkYXJrIFRlbnNvckJvYXJkIHRoZW1lLiJcbiAgICAgICAgKGNsaWNrKT0ib25PdmVycmlkZUNoYW5nZWQuZW1pdChEYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PTikiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbD5EYXJrPC9sYWJlbD5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG4gICd9XX1dLG51bGwse2RhcmtNb2RlT3ZlcnJpZGU6W3t0eXBlOlJffV0sb25PdmVycmlkZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBwWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5kYXJrTW9kZU92ZXJyaWRlJD10aGlzLnN0b3JlLnNlbGVjdChVRCkucGlwZShWdCgodD0+bnVsbD09PXQ/Y1ouREVGQVVMVDp0P2NaLkRBUktfTU9ERV9PTjpjWi5EQVJLX01PREVfT0ZGKSkpfWNoYW5nZURhcmtNb2RlKHQpe2xldCBlPW51bGw7c3dpdGNoKHQpe2Nhc2UgY1ouREVGQVVMVDplPW51bGw7YnJlYWs7Y2FzZSBjWi5EQVJLX01PREVfT0ZGOmU9ITE7YnJlYWs7Y2FzZSBjWi5EQVJLX01PREVfT046ZT0hMH10aGlzLnN0b3JlLmRpc3BhdGNoKFJOKHtlbmFibGVEYXJrTW9kZTplfSkpfX1wWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cFopKGZ1KGlTKSl9LHBaLsm1Y21wPXNvKHt0eXBlOnBaLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywiZGFya01vZGVPdmVycmlkZSIsIm9uT3ZlcnJpZGVDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50IiwwKSxEdSgib25PdmVycmlkZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmNoYW5nZURhcmtNb2RlKGUpfSkpLF95KDEsImFzeW5jIiksQ3UoKSksMiZlJiZodSgiZGFya01vZGVPdmVycmlkZSIsQ3koMSwxLG4uZGFya01vZGVPdmVycmlkZSQpKX0sZGlyZWN0aXZlczpbZFpdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUiLHRlbXBsYXRlOidcbiAgICA8YXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlLWNvbXBvbmVudFxuICAgICAgW2RhcmtNb2RlT3ZlcnJpZGVdPSJkYXJrTW9kZU92ZXJyaWRlJCB8IGFzeW5jIlxuICAgICAgKG9uT3ZlcnJpZGVDaGFuZ2VkKT0iY2hhbmdlRGFya01vZGUoJGV2ZW50KSJcbiAgICA+XG4gICAgPC9hcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IG1aPWJTKGlULG9ULCgodCxlKT0+ISghZXx8IXRbZV0pJiZ0W2VdLmRpc2FibGVfcmVsb2FkKSk7Y2xhc3MgdVp7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucmVsb2FkRGlzYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KG1aKSx0aGlzLmlzUmVsb2FkaW5nJD10aGlzLnN0b3JlLnNlbGVjdChlVCkucGlwZShfZSh0aGlzLnJlbG9hZERpc2FibGVkJCksVnQoKChbdCxlXSk9PiFlJiZ0PT09R0UuTE9BRElORykpKSx0aGlzLmxhc3RMb2FkZWRUaW1lSW5NcyQ9dGhpcy5zdG9yZS5zZWxlY3QoblQpfXRyaWdnZXJSZWxvYWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKCRFKCkpfWdldFJlbG9hZFRpdGxlKHQpe3JldHVybiB0P2BMYXN0IFVwZGF0ZWQ6ICR7dH1gOiJMb2FkaW5nLi4uIn19ZnVuY3Rpb24gZloodCl7cmV0dXJuIHQuc3RhdGUhPT1HRS5OT1RfTE9BREVEJiZ0LnN0YXRlIT09R0UuTE9BRElOR311Wi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dVopKGZ1KGlTKSl9LHVaLsm1Y21wPXNvKHt0eXBlOnVaLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyLXJlbG9hZCJdXSxkZWNsczo2LHZhcnM6MTMsY29uc3RzOltbIm1hdC1pY29uLWJ1dHRvbiIsIiIsMSwicmVsb2FkLWJ1dHRvbiIsMywidGl0bGUiLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwicmVmcmVzaF8yNHB4IiwxLCJyZWZyZXNoLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImJ1dHRvbiIsMCksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRyaWdnZXJSZWxvYWQoKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImRhdGUiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksTXUoNSwibWF0LWljb24iLDEpLEN1KCkpLDImZSYmKGNmKCJsb2FkaW5nIixDeSgxLDQsbi5pc1JlbG9hZGluZyQpKSxodSgidGl0bGUiLG4uZ2V0UmVsb2FkVGl0bGUoTXkoMiw2LEN5KDMsOSxuLmxhc3RMb2FkZWRUaW1lSW5NcyQpLCJtZWRpdW0iKSkpKCJkaXNhYmxlZCIsQ3koNCwxMSxuLnJlbG9hZERpc2FibGVkJCkpKX0sZGlyZWN0aXZlczpbV0wsRXFdLHBpcGVzOltWdixZdl0sc3R5bGVzOlsiLnJlbG9hZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAucmVmcmVzaC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAucmVsb2FkLWJ1dHRvbi5sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGFuaW1hdGlvbjogcm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyByb3RhdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodVosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlci1yZWxvYWQiLHRlbXBsYXRlOidcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz0icmVsb2FkLWJ1dHRvbiJcbiAgICAgIFtjbGFzcy5sb2FkaW5nXT0iaXNSZWxvYWRpbmckIHwgYXN5bmMiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIChjbGljayk9InRyaWdnZXJSZWxvYWQoKSJcbiAgICAgIFt0aXRsZV09ImdldFJlbG9hZFRpdGxlKGxhc3RMb2FkZWRUaW1lSW5NcyQgfCBhc3luYyB8IGRhdGU6IFwnbWVkaXVtXCcpIlxuICAgICAgW2Rpc2FibGVkXT0icmVsb2FkRGlzYWJsZWQkIHwgYXN5bmMiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPSJyZWZyZXNoLWljb24iIHN2Z0ljb249InJlZnJlc2hfMjRweCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIC5yZWxvYWQtYnV0dG9uLFxuICAgICAgLnJlZnJlc2gtaWNvbiB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAucmVsb2FkLWJ1dHRvbi5sb2FkaW5nIHtcbiAgICAgICAgYW5pbWF0aW9uOiByb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIHJvdGF0ZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IGdaPTNlNCxoWj1WUyhDSSxCUyhoSSwodD0+ZloodCk/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse3JlbG9hZEVuYWJsZWQ6IXQuc2V0dGluZ3MucmVsb2FkRW5hYmxlZH0pfSk6dCkpLEJTKGJJLCgodCx7cGVyaW9kSW5NczplfSk9PntpZighZloodCkpcmV0dXJuIHQ7Y29uc3Qgbj1lPj1nWj9lOnQuc2V0dGluZ3MucmVsb2FkUGVyaW9kSW5NcztyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse3JlbG9hZFBlcmlvZEluTXM6bn0pfSl9KSksQlMoeUksKCh0LHtzaXplOmV9KT0+e2lmKCFmWih0KSlyZXR1cm4gdDtjb25zdCBuPWU+MD9lOnQuc2V0dGluZ3MucGFnZVNpemU7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtwYWdlU2l6ZTpufSl9KX0pKSxCUyhYUiwoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9Pntjb25zdCBuPXt9O3JldHVybiBOdW1iZXIuaXNGaW5pdGUoZS5wYWdlU2l6ZSkmJmUucGFnZVNpemU+MCYmKG4ucGFnZVNpemU9TnVtYmVyKGUucGFnZVNpemUpKSwiYm9vbGVhbiI9PXR5cGVvZiBlLmF1dG9SZWxvYWQmJihuLnJlbG9hZEVuYWJsZWQ9ZS5hdXRvUmVsb2FkKSxOdW1iZXIuaXNGaW5pdGUoZS5hdXRvUmVsb2FkUGVyaW9kSW5NcykmJmUuYXV0b1JlbG9hZFBlcmlvZEluTXM+Z1omJihuLnJlbG9hZFBlcmlvZEluTXM9TnVtYmVyKGUuYXV0b1JlbG9hZFBlcmlvZEluTXMpKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSxuKX0pfSkpKTtmdW5jdGlvbiBiWih0LGUpe3JldHVybiBoWih0LGUpfWNvbnN0IHlaPVsiaW5wdXQiXSxfWj1mdW5jdGlvbih0KXtyZXR1cm57ZW50ZXJEdXJhdGlvbjp0fX0sQ1o9bmV3IGVyKCJtYXQtY2hlY2tib3gtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpNWn0pO2Z1bmN0aW9uIE1aKCl7cmV0dXJue2NvbG9yOiJhY2NlbnQiLGNsaWNrQWN0aW9uOiJjaGVjay1pbmRldGVybWluYXRlIn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCB2Wj0wO2NvbnN0IHhaPXtjb2xvcjoiYWNjZW50IixjbGlja0FjdGlvbjoiY2hlY2staW5kZXRlcm1pbmF0ZSJ9LE9aPXtwcm92aWRlOlRqLHVzZUV4aXN0aW5nOiRlKCgoKT0+a1opKSxtdWx0aTohMH07Y2xhc3MgUFp7fWNvbnN0IHdaPVpGKFlGKHFGKEdGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSkpKTtjbGFzcyBrWiBleHRlbmRzIHdae2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZm9jdXNNb25pdG9yPW4sdGhpcy5fbmdab25lPW8sdGhpcy5fYW5pbWF0aW9uTW9kZT1hLHRoaXMuX29wdGlvbnM9cix0aGlzLmFyaWFMYWJlbD0iIix0aGlzLmFyaWFMYWJlbGxlZGJ5PW51bGwsdGhpcy5fdW5pcXVlSWQ9Im1hdC1jaGVja2JveC0iKyArK3ZaLHRoaXMuaWQ9dGhpcy5fdW5pcXVlSWQsdGhpcy5sYWJlbFBvc2l0aW9uPSJhZnRlciIsdGhpcy5uYW1lPW51bGwsdGhpcy5jaGFuZ2U9bmV3IFN5LHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZT1uZXcgU3ksdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M9IiIsdGhpcy5fY3VycmVudENoZWNrU3RhdGU9MCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9jaGVja2VkPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX2luZGV0ZXJtaW5hdGU9ITEsdGhpcy5fb3B0aW9ucz10aGlzLl9vcHRpb25zfHx4Wix0aGlzLmNvbG9yPXRoaXMuZGVmYXVsdENvbG9yPXRoaXMuX29wdGlvbnMuY29sb3J8fHhaLmNvbG9yLHRoaXMudGFiSW5kZXg9cGFyc2VJbnQoaSl8fDB9Z2V0IGlucHV0SWQoKXtyZXR1cm5gJHt0aGlzLmlkfHx0aGlzLl91bmlxdWVJZH0taW5wdXRgfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9cEgodCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKCh0PT57dHx8UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9vblRvdWNoZWQoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX0pKSx0aGlzLl9zeW5jSW5kZXRlcm1pbmF0ZSh0aGlzLl9pbmRldGVybWluYXRlKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9Z2V0IGNoZWNrZWQoKXtyZXR1cm4gdGhpcy5fY2hlY2tlZH1zZXQgY2hlY2tlZCh0KXt0IT10aGlzLmNoZWNrZWQmJih0aGlzLl9jaGVja2VkPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7Y29uc3QgZT1wSCh0KTtlIT09dGhpcy5kaXNhYmxlZCYmKHRoaXMuX2Rpc2FibGVkPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBpbmRldGVybWluYXRlKCl7cmV0dXJuIHRoaXMuX2luZGV0ZXJtaW5hdGV9c2V0IGluZGV0ZXJtaW5hdGUodCl7Y29uc3QgZT10IT10aGlzLl9pbmRldGVybWluYXRlO3RoaXMuX2luZGV0ZXJtaW5hdGU9cEgodCksZSYmKHRoaXMuX3RyYW5zaXRpb25DaGVja1N0YXRlKHRoaXMuX2luZGV0ZXJtaW5hdGU/Mzp0aGlzLmNoZWNrZWQ/MToyKSx0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKSksdGhpcy5fc3luY0luZGV0ZXJtaW5hdGUodGhpcy5faW5kZXRlcm1pbmF0ZSl9X2lzUmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLmRpc2FibGVkfV9vbkxhYmVsVGV4dENoYW5nZSgpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX13cml0ZVZhbHVlKHQpe3RoaXMuY2hlY2tlZD0hIXR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXR9X2dldEFyaWFDaGVja2VkKCl7cmV0dXJuIHRoaXMuY2hlY2tlZD8idHJ1ZSI6dGhpcy5pbmRldGVybWluYXRlPyJtaXhlZCI6ImZhbHNlIn1fdHJhbnNpdGlvbkNoZWNrU3RhdGUodCl7bGV0IGU9dGhpcy5fY3VycmVudENoZWNrU3RhdGUsbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7aWYoZSE9PXQmJih0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoPjAmJm4uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MpLHRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzcz10aGlzLl9nZXRBbmltYXRpb25DbGFzc0ZvckNoZWNrU3RhdGVUcmFuc2l0aW9uKGUsdCksdGhpcy5fY3VycmVudENoZWNrU3RhdGU9dCx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoPjApKXtuLmNsYXNzTGlzdC5hZGQodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzKTtjb25zdCB0PXRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzczt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57c2V0VGltZW91dCgoKCk9PntuLmNsYXNzTGlzdC5yZW1vdmUodCl9KSwxZTMpfSkpfX1fZW1pdENoYW5nZUV2ZW50KCl7Y29uc3QgdD1uZXcgUFo7dC5zb3VyY2U9dGhpcyx0LmNoZWNrZWQ9dGhpcy5jaGVja2VkLHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKSx0aGlzLmNoYW5nZS5lbWl0KHQpLHRoaXMuX2lucHV0RWxlbWVudCYmKHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQ9dGhpcy5jaGVja2VkKX10b2dnbGUoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZH1fb25JbnB1dENsaWNrKHQpe3ZhciBlO2NvbnN0IG49bnVsbD09PShlPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNsaWNrQWN0aW9uO3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5kaXNhYmxlZHx8Im5vb3AiPT09bj90aGlzLmRpc2FibGVkfHwibm9vcCIhPT1ufHwodGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZD10aGlzLmNoZWNrZWQsdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZT10aGlzLmluZGV0ZXJtaW5hdGUpOih0aGlzLmluZGV0ZXJtaW5hdGUmJiJjaGVjayIhPT1uJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX2luZGV0ZXJtaW5hdGU9ITEsdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSl9KSksdGhpcy50b2dnbGUoKSx0aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSh0aGlzLl9jaGVja2VkPzE6MiksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCkpfWZvY3VzKHQsZSl7dD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5faW5wdXRFbGVtZW50LHQsZSk6dGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoZSl9X29uSW50ZXJhY3Rpb25FdmVudCh0KXt0LnN0b3BQcm9wYWdhdGlvbigpfV9nZXRBbmltYXRpb25DbGFzc0ZvckNoZWNrU3RhdGVUcmFuc2l0aW9uKHQsZSl7aWYoIk5vb3BBbmltYXRpb25zIj09PXRoaXMuX2FuaW1hdGlvbk1vZGUpcmV0dXJuIiI7bGV0IG49IiI7c3dpdGNoKHQpe2Nhc2UgMDppZigxPT09ZSluPSJ1bmNoZWNrZWQtY2hlY2tlZCI7ZWxzZXtpZigzIT1lKXJldHVybiIiO249InVuY2hlY2tlZC1pbmRldGVybWluYXRlIn1icmVhaztjYXNlIDI6bj0xPT09ZT8idW5jaGVja2VkLWNoZWNrZWQiOiJ1bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSI7YnJlYWs7Y2FzZSAxOm49Mj09PWU/ImNoZWNrZWQtdW5jaGVja2VkIjoiY2hlY2tlZC1pbmRldGVybWluYXRlIjticmVhaztjYXNlIDM6bj0xPT09ZT8iaW5kZXRlcm1pbmF0ZS1jaGVja2VkIjoiaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQifXJldHVybmBtYXQtY2hlY2tib3gtYW5pbS0ke259YH1fc3luY0luZGV0ZXJtaW5hdGUodCl7Y29uc3QgZT10aGlzLl9pbnB1dEVsZW1lbnQ7ZSYmKGUubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlPXQpfX1rWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8a1opKGZ1KEtoKSxmdShPYiksZnUoeEYpLGZ1KG1DKSxHYSgidGFiaW5kZXgiKSxmdShjayw4KSxmdShDWiw4KSl9LGtaLsm1Y21wPXNvKHt0eXBlOmtaLHNlbGVjdG9yczpbWyJtYXQtY2hlY2tib3giXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeSh5Wiw1KSxWeSh2TCw1KSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5faW5wdXRFbGVtZW50PXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLnJpcHBsZT10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWNoZWNrYm94Il0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJihjZygiaWQiLG4uaWQpLHltKCJ0YWJpbmRleCIsbnVsbCksY2YoIm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIixuLmluZGV0ZXJtaW5hdGUpKCJtYXQtY2hlY2tib3gtY2hlY2tlZCIsbi5jaGVja2VkKSgibWF0LWNoZWNrYm94LWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSIsImJlZm9yZSI9PW4ubGFiZWxQb3NpdGlvbikoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSkpfSxpbnB1dHM6e2Rpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4IixhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLGlkOiJpZCIsbGFiZWxQb3NpdGlvbjoibGFiZWxQb3NpdGlvbiIsbmFtZToibmFtZSIscmVxdWlyZWQ6InJlcXVpcmVkIixjaGVja2VkOiJjaGVja2VkIixkaXNhYmxlZDoiZGlzYWJsZWQiLGluZGV0ZXJtaW5hdGU6ImluZGV0ZXJtaW5hdGUiLGFyaWFEZXNjcmliZWRieTpbImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhRGVzY3JpYmVkYnkiXSx2YWx1ZToidmFsdWUifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSIsaW5kZXRlcm1pbmF0ZUNoYW5nZToiaW5kZXRlcm1pbmF0ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0Q2hlY2tib3giXSxmZWF0dXJlczpbVWgoW09aXSksUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxNyx2YXJzOjIxLGNvbnN0czpbWzEsIm1hdC1jaGVja2JveC1sYXlvdXQiXSxbImxhYmVsIiwiIl0sWzEsIm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXIiXSxbInR5cGUiLCJjaGVja2JveCIsMSwibWF0LWNoZWNrYm94LWlucHV0IiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsMywiaWQiLCJyZXF1aXJlZCIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInRhYkluZGV4IiwiY2hhbmdlIiwiY2xpY2siXSxbImlucHV0IiwiIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1jaGVja2JveC1yaXBwbGUiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIiwzLCJtYXRSaXBwbGVUcmlnZ2VyIiwibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVSYWRpdXMiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZUFuaW1hdGlvbiJdLFsxLCJtYXQtcmlwcGxlLWVsZW1lbnQiLCJtYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUiXSxbMSwibWF0LWNoZWNrYm94LWZyYW1lIl0sWzEsIm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIl0sWyJ2ZXJzaW9uIiwiMS4xIiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJ2aWV3Qm94IiwiMCAwIDI0IDI0IiwwLCJ4bWwiLCJzcGFjZSIsInByZXNlcnZlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtY2hlY2tib3gtY2hlY2ttYXJrIl0sWyJmaWxsIiwibm9uZSIsInN0cm9rZSIsIndoaXRlIiwiZCIsIk00LjEsMTIuNyA5LDE3LjYgMjAuMyw2LjMiLDEsIm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCJdLFsxLCJtYXQtY2hlY2tib3gtbWl4ZWRtYXJrIl0sWzEsIm1hdC1jaGVja2JveC1sYWJlbCIsMywiY2RrT2JzZXJ2ZUNvbnRlbnQiXSxbImNoZWNrYm94TGFiZWwiLCIiXSxbMiwiZGlzcGxheSIsIm5vbmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKEl1KCksX3UoMCwibGFiZWwiLDAsMSksX3UoMiwic3BhbiIsMiksX3UoMywiaW5wdXQiLDMsNCksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uSW50ZXJhY3Rpb25FdmVudChlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbklucHV0Q2xpY2soZSl9KSksQ3UoKSxfdSg1LCJzcGFuIiw1KSxNdSg2LCJzcGFuIiw2KSxDdSgpLE11KDcsInNwYW4iLDcpLF91KDgsInNwYW4iLDgpLG9hKCksX3UoOSwic3ZnIiw5KSxNdSgxMCwicGF0aCIsMTApLEN1KCksYWEoKSxNdSgxMSwic3BhbiIsMTEpLEN1KCksQ3UoKSxfdSgxMiwic3BhbiIsMTIsMTMpLER1KCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25MYWJlbFRleHRDaGFuZ2UoKX0pKSxfdSgxNCwic3BhbiIsMTQpLFBmKDE1LCLCoCIpLEN1KCksSHUoMTYpLEN1KCksQ3UoKSksMiZlKXtjb25zdCB0PUZtKDEpLGU9Rm0oMTMpO3ltKCJmb3IiLG4uaW5wdXRJZCksRGMoMiksY2YoIm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXItbm8tc2lkZS1tYXJnaW4iLCFlLnRleHRDb250ZW50fHwhZS50ZXh0Q29udGVudC50cmltKCkpLERjKDEpLGh1KCJpZCIsbi5pbnB1dElkKSgicmVxdWlyZWQiLG4ucmVxdWlyZWQpKCJjaGVja2VkIixuLmNoZWNrZWQpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZCkoInRhYkluZGV4IixuLnRhYkluZGV4KSx5bSgidmFsdWUiLG4udmFsdWUpKCJuYW1lIixuLm5hbWUpKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbi5hcmlhTGFiZWxsZWRieSkoImFyaWEtY2hlY2tlZCIsbi5fZ2V0QXJpYUNoZWNrZWQoKSkoImFyaWEtZGVzY3JpYmVkYnkiLG4uYXJpYURlc2NyaWJlZGJ5KSxEYygyKSxodSgibWF0UmlwcGxlVHJpZ2dlciIsdCkoIm1hdFJpcHBsZURpc2FibGVkIixuLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVSYWRpdXMiLDIwKSgibWF0UmlwcGxlQ2VudGVyZWQiLCEwKSgibWF0UmlwcGxlQW5pbWF0aW9uIixpeSgxOSxfWiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZT8wOjE1MCkpfX0sZGlyZWN0aXZlczpbdkwsekhdLHN0eWxlczpbIkBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZHswJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZHswJSw1MCV7b3BhY2l0eToxfTEwMCV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aHswJSw1MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjIuOTEwMjU5fTUwJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7MCUsNjguMiV7dHJhbnNmb3JtOnNjYWxlWCgwKX02OC4yJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLCAxKX0xMDAle3RyYW5zZm9ybTpzY2FsZVgoMSl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRoe2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtzdHJva2UtZGFzaG9mZnNldDowfXRve3N0cm9rZS1kYXNob2Zmc2V0Oi0yMi45MTAyNTl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4xNCwgMCwgMCwgMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDMxNWRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya3swJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKX0zMi44JSwxMDAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVYKDApfX0ubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1mcmFtZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWNoZWNrYm94e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtY2hlY2tib3h7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSl7b3BhY2l0eTouMTZ9Lm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7dG9wOmNhbGMoNTAlIC0gMjBweCk7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3guY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jaGVja2JveC1yaXBwbGV7b3V0bGluZTpzb2xpZCAzcHh9Lm1hdC1jaGVja2JveC1sYXlvdXR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjppbmhlcml0O2FsaWduLWl0ZW1zOmJhc2VsaW5lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1mbGV4O3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LWNoZWNrYm94LWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6YXV0bzstbW96LXVzZXItc2VsZWN0OmF1dG87LW1zLXVzZXItc2VsZWN0OmF1dG87dXNlci1zZWxlY3Q6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDowO21hcmdpbjphdXRvO21hcmdpbi1yaWdodDo4cHg7b3JkZXI6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjE2cHg7ZmxleC1zaHJpbms6MH1bZGlyPXJ0bF0gLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDphdXRvfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2lue21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1jaGVja2JveC1mcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtib3JkZXItd2lkdGg6MnB4O2JvcmRlci1zdHlsZTpzb2xpZH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1jaGVja2JveC1mcmFtZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKSxvcGFjaXR5IDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtjb2xvci1hZGp1c3Q6ZXhhY3R9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOm5vbmV9Lm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dHJhbnNmb3JtOm5vbmV9Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4wNH0ubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMTJ9Lm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LWNoZWNrYm94Lm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6MH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpub25lfX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya3t0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MjIuOTEwMjU5O3N0cm9rZS1kYXNoYXJyYXk6MjIuOTEwMjU5O3N0cm9rZS13aWR0aDoyLjEzMzMzMzMzMzNweH0uY2RrLWhpZ2gtY29udHJhc3QtYmxhY2stb24td2hpdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2U6IzAwMCAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3dpZHRoOmNhbGMoMTAwJSAtIDZweCk7aGVpZ2h0OjJweDtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKSByb3RhdGUoMGRlZyk7Ym9yZGVyLXJhZGl1czoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3toZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDJweDttYXJnaW4tdG9wOjJweH0ubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcntvcmRlcjoxO21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b31bZGlyPXJ0bF0gLm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6OHB4fS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tvcGFjaXR5OjF9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoLTQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVYKDEpIHJvdGF0ZSgwZGVnKX0ubWF0LWNoZWNrYm94LXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHthbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aH0ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmt9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1jaGVja21hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246NTAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246MzAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtaW5wdXR7Ym90dG9tOjA7bGVmdDo1MCV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxrWi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6eEZ9LHt0eXBlOm1DfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltDWl19XX1dLGtaLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0saWQ6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6Ul99XSxuYW1lOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XSxpbmRldGVybWluYXRlQ2hhbmdlOlt7dHlwZTpFX31dLHZhbHVlOlt7dHlwZTpSX31dLF9pbnB1dEVsZW1lbnQ6W3t0eXBlOmFyLGFyZ3M6WyJpbnB1dCJdfV0scmlwcGxlOlt7dHlwZTphcixhcmdzOlt2TF19XSxjaGVja2VkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGluZGV0ZXJtaW5hdGU6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa1osW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoZWNrYm94Iix0ZW1wbGF0ZTonPGxhYmVsIFthdHRyLmZvcl09ImlucHV0SWQiIGNsYXNzPSJtYXQtY2hlY2tib3gtbGF5b3V0IiAjbGFiZWw+XG4gIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyIlxuICAgICAgIFtjbGFzcy5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2luXT0iIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQgfHwgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQudHJpbSgpIj5cbiAgICA8aW5wdXQgI2lucHV0XG4gICAgICAgICAgIGNsYXNzPSJtYXQtY2hlY2tib3gtaW5wdXQgY2RrLXZpc3VhbGx5LWhpZGRlbiIgdHlwZT0iY2hlY2tib3giXG4gICAgICAgICAgIFtpZF09ImlucHV0SWQiXG4gICAgICAgICAgIFtyZXF1aXJlZF09InJlcXVpcmVkIlxuICAgICAgICAgICBbY2hlY2tlZF09ImNoZWNrZWQiXG4gICAgICAgICAgIFthdHRyLnZhbHVlXT0idmFsdWUiXG4gICAgICAgICAgIFtkaXNhYmxlZF09ImRpc2FibGVkIlxuICAgICAgICAgICBbYXR0ci5uYW1lXT0ibmFtZSJcbiAgICAgICAgICAgW3RhYkluZGV4XT0idGFiSW5kZXgiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiXG4gICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09Il9nZXRBcmlhQ2hlY2tlZCgpIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT0iYXJpYURlc2NyaWJlZGJ5IlxuICAgICAgICAgICAoY2hhbmdlKT0iX29uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpIlxuICAgICAgICAgICAoY2xpY2spPSJfb25JbnB1dENsaWNrKCRldmVudCkiPlxuICAgIDxzcGFuIG1hdFJpcHBsZSBjbGFzcz0ibWF0LWNoZWNrYm94LXJpcHBsZSBtYXQtZm9jdXMtaW5kaWNhdG9yIlxuICAgICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJsYWJlbCJcbiAgICAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09Il9pc1JpcHBsZURpc2FibGVkKCkiXG4gICAgICAgICBbbWF0UmlwcGxlUmFkaXVzXT0iMjAiXG4gICAgICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJ0cnVlIlxuICAgICAgICAgW21hdFJpcHBsZUFuaW1hdGlvbl09IntlbnRlckR1cmF0aW9uOiBfYW5pbWF0aW9uTW9kZSA9PT0gXCdOb29wQW5pbWF0aW9uc1wnID8gMCA6IDE1MH0iPlxuICAgICAgPHNwYW4gY2xhc3M9Im1hdC1yaXBwbGUtZWxlbWVudCBtYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUiPjwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9Im1hdC1jaGVja2JveC1mcmFtZSI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtYmFja2dyb3VuZCI+XG4gICAgICA8c3ZnIHZlcnNpb249IjEuMSJcbiAgICAgICAgICAgZm9jdXNhYmxlPSJmYWxzZSJcbiAgICAgICAgICAgY2xhc3M9Im1hdC1jaGVja2JveC1jaGVja21hcmsiXG4gICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCJcbiAgICAgICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSJcbiAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiPlxuICAgICAgICA8cGF0aCBjbGFzcz0ibWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoIlxuICAgICAgICAgICAgICBmaWxsPSJub25lIlxuICAgICAgICAgICAgICBzdHJva2U9IndoaXRlIlxuICAgICAgICAgICAgICBkPSJNNC4xLDEyLjcgOSwxNy42IDIwLjMsNi4zIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIFx4M2MhLS0gRWxlbWVudCBmb3IgcmVuZGVyaW5nIHRoZSBpbmRldGVybWluYXRlIHN0YXRlIGNoZWNrYm94LiAtLVx4M2VcbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtbWl4ZWRtYXJrIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtbGFiZWwiICNjaGVja2JveExhYmVsIChjZGtPYnNlcnZlQ29udGVudCk9Il9vbkxhYmVsVGV4dENoYW5nZSgpIj5cbiAgICBceDNjIS0tIEFkZCBhbiBpbnZpc2libGUgc3BhbiBzbyBKQVdTIGNhbiByZWFkIHRoZSBsYWJlbCAtLVx4M2VcbiAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTpub25lIj4mbmJzcDs8L3NwYW4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG48L2xhYmVsPlxuJyxleHBvcnRBczoibWF0Q2hlY2tib3giLGhvc3Q6e2NsYXNzOiJtYXQtY2hlY2tib3giLCJbaWRdIjoiaWQiLCJbYXR0ci50YWJpbmRleF0iOiJudWxsIiwiW2NsYXNzLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlXSI6ImluZGV0ZXJtaW5hdGUiLCJbY2xhc3MubWF0LWNoZWNrYm94LWNoZWNrZWRdIjoiY2hlY2tlZCIsIltjbGFzcy5tYXQtY2hlY2tib3gtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZV0iOidsYWJlbFBvc2l0aW9uID09ICJiZWZvcmUiJywiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9hbmltYXRpb25Nb2RlID09PSAnTm9vcEFuaW1hdGlvbnMnIn0scHJvdmlkZXJzOltPWl0saW5wdXRzOlsiZGlzYWJsZVJpcHBsZSIsImNvbG9yIiwidGFiSW5kZXgiXSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxzdHlsZXM6WyJAa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR7MCV7b3BhY2l0eTowfTUwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR7MCUsNTAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh7MCUsNTAle3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OX01MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrezAlLDY4LjIle3RyYW5zZm9ybTpzY2FsZVgoMCl9NjguMiV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMCwgMSl9MTAwJXt0cmFuc2Zvcm06c2NhbGVYKDEpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aHtmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7c3Ryb2tlLWRhc2hvZmZzZXQ6MH10b3tzdHJva2UtZGFzaG9mZnNldDotMjIuOTEwMjU5fX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt7MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSl9MzIuOCUsMTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKX19Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZnJhbWV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1jaGVja2JveHtkaXNwbGF5OmlubGluZS1ibG9jazt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjE2fS5tYXQtY2hlY2tib3ggLm1hdC1jaGVja2JveC1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO3RvcDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcmlwcGxle291dGxpbmU6c29saWQgM3B4fS5tYXQtY2hlY2tib3gtbGF5b3V0ey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6aW5oZXJpdDthbGlnbi1pdGVtczpiYXNlbGluZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1jaGVja2JveC1sYWJlbHstd2Via2l0LXVzZXItc2VsZWN0OmF1dG87LW1vei11c2VyLXNlbGVjdDphdXRvOy1tcy11c2VyLXNlbGVjdDphdXRvO3VzZXItc2VsZWN0OmF1dG99Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MDttYXJnaW46YXV0bzttYXJnaW4tcmlnaHQ6OHB4O29yZGVyOjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxNnB4O2ZsZXgtc2hyaW5rOjB9W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtY2hlY2tib3gtZnJhbWV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7Ym9yZGVyLXdpZHRoOjJweDtib3JkZXItc3R5bGU6c29saWR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtZnJhbWV7dHJhbnNpdGlvbjpub25lfS5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksb3BhY2l0eSA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZDpub25lfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMDR9Lm1hdC1jaGVja2JveC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjEyfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1jaGVja2JveC5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6bm9uZX19Lm1hdC1jaGVja2JveC1jaGVja21hcmt7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OTtzdHJva2UtZGFzaGFycmF5OjIyLjkxMDI1OTtzdHJva2Utd2lkdGg6Mi4xMzMzMzMzMzMzcHh9LmNkay1oaWdoLWNvbnRyYXN0LWJsYWNrLW9uLXdoaXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiMwMDAgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3t3aWR0aDpjYWxjKDEwMCUgLSA2cHgpO2hlaWdodDoycHg7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCkgcm90YXRlKDBkZWcpO2JvcmRlci1yYWRpdXM6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7bWFyZ2luLXRvcDoycHh9Lm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7b3JkZXI6MTttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OjhweH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eToxfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoMGRlZyl9Lm1hdC1jaGVja2JveC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjMwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWlucHV0e2JvdHRvbTowO2xlZnQ6NTAlfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOnhGfSx7dHlwZTptQ30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbQ1pdfV19XX0pLHthcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0saWQ6W3t0eXBlOlJffV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6Ul99XSxuYW1lOlt7dHlwZTpSX31dLGNoYW5nZTpbe3R5cGU6RV99XSxpbmRldGVybWluYXRlQ2hhbmdlOlt7dHlwZTpFX31dLHJlcXVpcmVkOlt7dHlwZTpSX31dLGNoZWNrZWQ6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0saW5kZXRlcm1pbmF0ZTpbe3R5cGU6Ul99XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx2YWx1ZTpbe3R5cGU6Ul99XSxfaW5wdXRFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiaW5wdXQiXX1dLHJpcHBsZTpbe3R5cGU6YXIsYXJnczpbdkxdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFNaPXtwcm92aWRlOlZqLHVzZUV4aXN0aW5nOiRlKCgoKT0+RFopKSxtdWx0aTohMH07Y2xhc3MgRFogZXh0ZW5kcyBKR3t9RFouybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKERaKSkpKG58fERaKX19KSgpLERaLsm1ZGlyPWhvKHt0eXBlOkRaLHNlbGVjdG9yczpbWyJtYXQtY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGZlYXR1cmVzOltVaChbU1pdKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERaLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGVja2JveFtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxcbiAgICAgICAgICAgICBtYXQtY2hlY2tib3hbcmVxdWlyZWRdW2Zvcm1Db250cm9sXSwgbWF0LWNoZWNrYm94W3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltTWl19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBSWnt9UlouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJaKX0sUlouybVtb2Q9dW8oe3R5cGU6Ulp9KSxSWi7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSWixbe3R5cGU6TF8sYXJnczpbe2V4cG9ydHM6W0RaXSxkZWNsYXJhdGlvbnM6W0RaXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFJaLHtkZWNsYXJhdGlvbnM6W0RaXSxleHBvcnRzOltEWl19KTtjbGFzcyBFWnt9RVouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVaKX0sRVouybVtb2Q9dW8oe3R5cGU6RVp9KSxFWi7JtWluaj1Ebih7aW1wb3J0czpbW3hMLFdGLElILFJaXSxXRixSWl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEVaLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbeEwsV0YsSUgsUlpdLGV4cG9ydHM6W2taLFdGLFJaXSxkZWNsYXJhdGlvbnM6W2taXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEVaLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5ba1pdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3hMLFdGLElILFJaXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltrWixXRixSWl19fSk7Y29uc3QgQVo9a0goe3Bhc3NpdmU6ITB9KTtjbGFzcyBUWntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fbW9uaXRvcmVkRWxlbWVudHM9bmV3IE1hcH1tb25pdG9yKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuIGR0O2NvbnN0IGU9aEgodCksbj10aGlzLl9tb25pdG9yZWRFbGVtZW50cy5nZXQoZSk7aWYobilyZXR1cm4gbi5zdWJqZWN0O2NvbnN0IG89bmV3IEIsaT0iY2RrLXRleHQtZmllbGQtYXV0b2ZpbGxlZCIsYT10PT57ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IiE9PXQuYW5pbWF0aW9uTmFtZXx8ZS5jbGFzc0xpc3QuY29udGFpbnMoaSk/ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCI9PT10LmFuaW1hdGlvbk5hbWUmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKGkpJiYoZS5jbGFzc0xpc3QucmVtb3ZlKGkpLHRoaXMuX25nWm9uZS5ydW4oKCgpPT5vLm5leHQoe3RhcmdldDp0LnRhcmdldCxpc0F1dG9maWxsZWQ6ITF9KSkpKTooZS5jbGFzc0xpc3QuYWRkKGkpLHRoaXMuX25nWm9uZS5ydW4oKCgpPT5vLm5leHQoe3RhcmdldDp0LnRhcmdldCxpc0F1dG9maWxsZWQ6ITB9KSkpKX07cmV0dXJuIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlLmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbnN0YXJ0IixhLEFaKSxlLmNsYXNzTGlzdC5hZGQoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZCIpfSkpLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzLnNldChlLHtzdWJqZWN0Om8sdW5saXN0ZW46KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbnN0YXJ0IixhLEFaKX19KSxvfXN0b3BNb25pdG9yaW5nKHQpe2NvbnN0IGU9aEgodCksbj10aGlzLl9tb25pdG9yZWRFbGVtZW50cy5nZXQoZSk7biYmKG4udW5saXN0ZW4oKSxuLnN1YmplY3QuY29tcGxldGUoKSxlLmNsYXNzTGlzdC5yZW1vdmUoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZCIpLGUuY2xhc3NMaXN0LnJlbW92ZSgiY2RrLXRleHQtZmllbGQtYXV0b2ZpbGxlZCIpLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzLmRlbGV0ZShlKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5mb3JFYWNoKCgodCxlKT0+dGhpcy5zdG9wTW9uaXRvcmluZyhlKSkpfX1UWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VFopKFRyKF9IKSxUcihtQykpfSxUWi7JtXByb3Y9U24oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVFooVHIoX0gpLFRyKG1DKSl9LHRva2VuOlRaLHByb3ZpZGVkSW46InJvb3QifSksVFouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfSH0se3R5cGU6bUN9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRaLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpfSH0se3R5cGU6bUN9XX0pLG51bGwpO2NsYXNzIE5ae2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2F1dG9maWxsTW9uaXRvcj1lLHRoaXMuY2RrQXV0b2ZpbGw9bmV3IFN5fW5nT25Jbml0KCl7dGhpcy5fYXV0b2ZpbGxNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZikuc3Vic2NyaWJlKCh0PT50aGlzLmNka0F1dG9maWxsLmVtaXQodCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2F1dG9maWxsTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKX19TlouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5aKShmdShLaCksZnUoVFopKX0sTlouybVkaXI9aG8oe3R5cGU6Tlosc2VsZWN0b3JzOltbIiIsImNka0F1dG9maWxsIiwiIl1dLG91dHB1dHM6e2Nka0F1dG9maWxsOiJjZGtBdXRvZmlsbCJ9fSksTlouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6VFp9XSxOWi5wcm9wRGVjb3JhdG9ycz17Y2RrQXV0b2ZpbGw6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTlosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0F1dG9maWxsXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6VFp9XX0pLHtjZGtBdXRvZmlsbDpbe3R5cGU6RV99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgelp7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fZGVzdHJveWVkPW5ldyBCLHRoaXMuX2VuYWJsZWQ9ITAsdGhpcy5fcHJldmlvdXNNaW5Sb3dzPS0xLHRoaXMuX2lzVmlld0luaXRlZD0hMSx0aGlzLl9oYW5kbGVGb2N1c0V2ZW50PXQ9Pnt0aGlzLl9oYXNGb2N1cz0iZm9jdXMiPT09dC50eXBlfSx0aGlzLl9kb2N1bWVudD1vLHRoaXMuX3RleHRhcmVhRWxlbWVudD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9Z2V0IG1pblJvd3MoKXtyZXR1cm4gdGhpcy5fbWluUm93c31zZXQgbWluUm93cyh0KXt0aGlzLl9taW5Sb3dzPW1IKHQpLHRoaXMuX3NldE1pbkhlaWdodCgpfWdldCBtYXhSb3dzKCl7cmV0dXJuIHRoaXMuX21heFJvd3N9c2V0IG1heFJvd3ModCl7dGhpcy5fbWF4Um93cz1tSCh0KSx0aGlzLl9zZXRNYXhIZWlnaHQoKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3Q9cEgodCksdGhpcy5fZW5hYmxlZCE9PXQmJigodGhpcy5fZW5hYmxlZD10KT90aGlzLnJlc2l6ZVRvRml0Q29udGVudCghMCk6dGhpcy5yZXNldCgpKX1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyfXNldCBwbGFjZWhvbGRlcih0KXt0aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodD12b2lkIDAsdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyPXQsdGhpcy5fY2FjaGVUZXh0YXJlYVBsYWNlaG9sZGVySGVpZ2h0KCl9X3NldE1pbkhlaWdodCgpe2NvbnN0IHQ9dGhpcy5taW5Sb3dzJiZ0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0P3RoaXMubWluUm93cyp0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KyJweCI6bnVsbDt0JiYodGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLm1pbkhlaWdodD10KX1fc2V0TWF4SGVpZ2h0KCl7Y29uc3QgdD10aGlzLm1heFJvd3MmJnRoaXMuX2NhY2hlZExpbmVIZWlnaHQ/dGhpcy5tYXhSb3dzKnRoaXMuX2NhY2hlZExpbmVIZWlnaHQrInB4IjpudWxsO3QmJih0aGlzLl90ZXh0YXJlYUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0PXQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmKHRoaXMuX2luaXRpYWxIZWlnaHQ9dGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLmhlaWdodCx0aGlzLnJlc2l6ZVRvRml0Q29udGVudCgpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntsZSh0aGlzLl9nZXRXaW5kb3coKSwicmVzaXplIikucGlwZShnZSgxNiksVWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoITApKSksdGhpcy5fdGV4dGFyZWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5faGFuZGxlRm9jdXNFdmVudCl9KSksdGhpcy5faXNWaWV3SW5pdGVkPSEwLHRoaXMucmVzaXplVG9GaXRDb250ZW50KCEwKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl90ZXh0YXJlYUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2hhbmRsZUZvY3VzRXZlbnQpLHRoaXMuX3RleHRhcmVhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KSx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfV9jYWNoZVRleHRhcmVhTGluZUhlaWdodCgpe2lmKHRoaXMuX2NhY2hlZExpbmVIZWlnaHQpcmV0dXJuO2xldCB0PXRoaXMuX3RleHRhcmVhRWxlbWVudC5jbG9uZU5vZGUoITEpO3Qucm93cz0xLHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdC5zdHlsZS5ib3JkZXI9Im5vbmUiLHQuc3R5bGUucGFkZGluZz0iMCIsdC5zdHlsZS5oZWlnaHQ9IiIsdC5zdHlsZS5taW5IZWlnaHQ9IiIsdC5zdHlsZS5tYXhIZWlnaHQ9IiIsdC5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIix0aGlzLl90ZXh0YXJlYUVsZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0KSx0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0PXQuY2xpZW50SGVpZ2h0LHRoaXMuX3RleHRhcmVhRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHRoaXMuX3NldE1pbkhlaWdodCgpLHRoaXMuX3NldE1heEhlaWdodCgpfV9tZWFzdXJlU2Nyb2xsSGVpZ2h0KCl7Y29uc3QgdD10aGlzLl90ZXh0YXJlYUVsZW1lbnQsZT10LnN0eWxlLm1hcmdpbkJvdHRvbXx8IiIsbj10aGlzLl9wbGF0Zm9ybS5GSVJFRk9YLG89biYmdGhpcy5faGFzRm9jdXMsaT1uPyJjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3giOiJjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nIjtvJiYodC5zdHlsZS5tYXJnaW5Cb3R0b209YCR7dC5jbGllbnRIZWlnaHR9cHhgKSx0LmNsYXNzTGlzdC5hZGQoaSk7Y29uc3QgYT10LnNjcm9sbEhlaWdodC00O3JldHVybiB0LmNsYXNzTGlzdC5yZW1vdmUoaSksbyYmKHQuc3R5bGUubWFyZ2luQm90dG9tPWUpLGF9X2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpe2lmKCF0aGlzLl9pc1ZpZXdJbml0ZWR8fG51bGwhPXRoaXMuX2NhY2hlZFBsYWNlaG9sZGVySGVpZ2h0KXJldHVybjtpZighdGhpcy5wbGFjZWhvbGRlcilyZXR1cm4gdm9pZCh0aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodD0wKTtjb25zdCB0PXRoaXMuX3RleHRhcmVhRWxlbWVudC52YWx1ZTt0aGlzLl90ZXh0YXJlYUVsZW1lbnQudmFsdWU9dGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyLHRoaXMuX2NhY2hlZFBsYWNlaG9sZGVySGVpZ2h0PXRoaXMuX21lYXN1cmVTY3JvbGxIZWlnaHQoKSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQudmFsdWU9dH1uZ0RvQ2hlY2soKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMucmVzaXplVG9GaXRDb250ZW50KCl9cmVzaXplVG9GaXRDb250ZW50KHQ9ITEpe2lmKCF0aGlzLl9lbmFibGVkKXJldHVybjtpZih0aGlzLl9jYWNoZVRleHRhcmVhTGluZUhlaWdodCgpLHRoaXMuX2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpLCF0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KXJldHVybjtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxuPWUudmFsdWU7aWYoIXQmJnRoaXMuX21pblJvd3M9PT10aGlzLl9wcmV2aW91c01pblJvd3MmJm49PT10aGlzLl9wcmV2aW91c1ZhbHVlKXJldHVybjtjb25zdCBvPXRoaXMuX21lYXN1cmVTY3JvbGxIZWlnaHQoKSxpPU1hdGgubWF4KG8sdGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHR8fDApO2Uuc3R5bGUuaGVpZ2h0PWAke2l9cHhgLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnsidW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl9zY3JvbGxUb0NhcmV0UG9zaXRpb24oZSkpKTpzZXRUaW1lb3V0KCgoKT0+dGhpcy5fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKGUpKSl9KSksdGhpcy5fcHJldmlvdXNWYWx1ZT1uLHRoaXMuX3ByZXZpb3VzTWluUm93cz10aGlzLl9taW5Sb3dzfXJlc2V0KCl7dm9pZCAwIT09dGhpcy5faW5pdGlhbEhlaWdodCYmKHRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5oZWlnaHQ9dGhpcy5faW5pdGlhbEhlaWdodCl9X25vb3BJbnB1dEhhbmRsZXIoKXt9X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKHQpe2NvbnN0e3NlbGVjdGlvblN0YXJ0OmUsc2VsZWN0aW9uRW5kOm59PXQ7IXRoaXMuX2Rlc3Ryb3llZC5pc1N0b3BwZWQmJnRoaXMuX2hhc0ZvY3VzJiZ0LnNldFNlbGVjdGlvblJhbmdlKGUsbil9fXpaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6WikoZnUoS2gpLGZ1KF9IKSxmdShtQyksZnUoc00sOCkpfSx6Wi7JtWRpcj1obyh7dHlwZTp6WixzZWxlY3RvcnM6W1sidGV4dGFyZWEiLCJjZGtUZXh0YXJlYUF1dG9zaXplIiwiIl1dLGhvc3RBdHRyczpbInJvd3MiLCIxIiwxLCJjZGstdGV4dGFyZWEtYXV0b3NpemUiXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmRHUoImlucHV0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9ub29wSW5wdXRIYW5kbGVyKCl9KSl9LGlucHV0czp7bWluUm93czpbImNka0F1dG9zaXplTWluUm93cyIsIm1pblJvd3MiXSxtYXhSb3dzOlsiY2RrQXV0b3NpemVNYXhSb3dzIiwibWF4Um93cyJdLGVuYWJsZWQ6WyJjZGtUZXh0YXJlYUF1dG9zaXplIiwiZW5hYmxlZCJdLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciJ9LGV4cG9ydEFzOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSJdfSkselouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6X0h9LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfV0seloucHJvcERlY29yYXRvcnM9e21pblJvd3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtBdXRvc2l6ZU1pblJvd3MiXX1dLG1heFJvd3M6W3t0eXBlOlJfLGFyZ3M6WyJjZGtBdXRvc2l6ZU1heFJvd3MiXX1dLGVuYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJjZGtUZXh0YXJlYUF1dG9zaXplIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxfbm9vcElucHV0SGFuZGxlcjpbe3R5cGU6VF8sYXJnczpbImlucHV0Il19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6Wixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJ0ZXh0YXJlYVtjZGtUZXh0YXJlYUF1dG9zaXplXSIsZXhwb3J0QXM6ImNka1RleHRhcmVhQXV0b3NpemUiLGhvc3Q6e2NsYXNzOiJjZGstdGV4dGFyZWEtYXV0b3NpemUiLHJvd3M6IjEifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpfSH0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbc01dfV19XX0pLHttaW5Sb3dzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIl19XSxtYXhSb3dzOlt7dHlwZTpSXyxhcmdzOlsiY2RrQXV0b3NpemVNYXhSb3dzIl19XSxlbmFibGVkOlt7dHlwZTpSXyxhcmdzOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0sX25vb3BJbnB1dEhhbmRsZXI6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIElae31JWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SVopfSxJWi7JtW1vZD11byh7dHlwZTpJWn0pLElaLsm1aW5qPURuKHtpbXBvcnRzOltbQ0hdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSVosW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W05aLHpaXSxpbXBvcnRzOltDSF0sZXhwb3J0czpbTloselpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oSVose2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltOWix6Wl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bQ0hdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW05aLHpaXX19KTtjbGFzcyBIWiBleHRlbmRzIHpae2dldCBtYXRBdXRvc2l6ZU1pblJvd3MoKXtyZXR1cm4gdGhpcy5taW5Sb3dzfXNldCBtYXRBdXRvc2l6ZU1pblJvd3ModCl7dGhpcy5taW5Sb3dzPXR9Z2V0IG1hdEF1dG9zaXplTWF4Um93cygpe3JldHVybiB0aGlzLm1heFJvd3N9c2V0IG1hdEF1dG9zaXplTWF4Um93cyh0KXt0aGlzLm1heFJvd3M9dH1nZXQgbWF0QXV0b3NpemUoKXtyZXR1cm4gdGhpcy5lbmFibGVkfXNldCBtYXRBdXRvc2l6ZSh0KXt0aGlzLmVuYWJsZWQ9dH1nZXQgbWF0VGV4dGFyZWFBdXRvc2l6ZSgpe3JldHVybiB0aGlzLmVuYWJsZWR9c2V0IG1hdFRleHRhcmVhQXV0b3NpemUodCl7dGhpcy5lbmFibGVkPXR9fUhaLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYShIWikpKShufHxIWil9fSkoKSxIWi7JtWRpcj1obyh7dHlwZTpIWixzZWxlY3RvcnM6W1sidGV4dGFyZWEiLCJtYXQtYXV0b3NpemUiLCIiXSxbInRleHRhcmVhIiwibWF0VGV4dGFyZWFBdXRvc2l6ZSIsIiJdXSxob3N0QXR0cnM6WyJyb3dzIiwiMSIsMSwiY2RrLXRleHRhcmVhLWF1dG9zaXplIiwibWF0LWF1dG9zaXplIl0saW5wdXRzOntjZGtBdXRvc2l6ZU1pblJvd3M6ImNka0F1dG9zaXplTWluUm93cyIsY2RrQXV0b3NpemVNYXhSb3dzOiJjZGtBdXRvc2l6ZU1heFJvd3MiLG1hdEF1dG9zaXplTWluUm93czoibWF0QXV0b3NpemVNaW5Sb3dzIixtYXRBdXRvc2l6ZU1heFJvd3M6Im1hdEF1dG9zaXplTWF4Um93cyIsbWF0QXV0b3NpemU6WyJtYXQtYXV0b3NpemUiLCJtYXRBdXRvc2l6ZSJdLG1hdFRleHRhcmVhQXV0b3NpemU6Im1hdFRleHRhcmVhQXV0b3NpemUifSxleHBvcnRBczpbIm1hdFRleHRhcmVhQXV0b3NpemUiXSxmZWF0dXJlczpbUXBdfSksSFoucHJvcERlY29yYXRvcnM9e21hdEF1dG9zaXplTWluUm93czpbe3R5cGU6Ul99XSxtYXRBdXRvc2l6ZU1heFJvd3M6W3t0eXBlOlJffV0sbWF0QXV0b3NpemU6W3t0eXBlOlJfLGFyZ3M6WyJtYXQtYXV0b3NpemUiXX1dLG1hdFRleHRhcmVhQXV0b3NpemU6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSFosW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoidGV4dGFyZWFbbWF0LWF1dG9zaXplXSwgdGV4dGFyZWFbbWF0VGV4dGFyZWFBdXRvc2l6ZV0iLGV4cG9ydEFzOiJtYXRUZXh0YXJlYUF1dG9zaXplIixpbnB1dHM6WyJjZGtBdXRvc2l6ZU1pblJvd3MiLCJjZGtBdXRvc2l6ZU1heFJvd3MiXSxob3N0OntjbGFzczoiY2RrLXRleHRhcmVhLWF1dG9zaXplIG1hdC1hdXRvc2l6ZSIscm93czoiMSJ9fV19XSxudWxsLHttYXRBdXRvc2l6ZU1pblJvd3M6W3t0eXBlOlJffV0sbWF0QXV0b3NpemVNYXhSb3dzOlt7dHlwZTpSX31dLG1hdEF1dG9zaXplOlt7dHlwZTpSXyxhcmdzOlsibWF0LWF1dG9zaXplIl19XSxtYXRUZXh0YXJlYUF1dG9zaXplOlt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBGWj1uZXcgZXIoIk1BVF9JTlBVVF9WQUxVRV9BQ0NFU1NPUiIpLExaPVsiYnV0dG9uIiwiY2hlY2tib3giLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJyYWRpbyIsInJhbmdlIiwicmVzZXQiLCJzdWJtaXQiXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IEJaPTA7Y29uc3QgVlo9WEYoY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPXQsdGhpcy5fcGFyZW50Rm9ybT1lLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1uLHRoaXMubmdDb250cm9sPW99fSk7Y2xhc3MgVVogZXh0ZW5kcyBWWntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjKXtzdXBlcihhLG8saSxuKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9hdXRvZmlsbE1vbml0b3I9cyx0aGlzLl9mb3JtRmllbGQ9Yyx0aGlzLl91aWQ9Im1hdC1pbnB1dC0iK0JaKyssdGhpcy5mb2N1c2VkPSExLHRoaXMuc3RhdGVDaGFuZ2VzPW5ldyBCLHRoaXMuY29udHJvbFR5cGU9Im1hdC1pbnB1dCIsdGhpcy5hdXRvZmlsbGVkPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX3R5cGU9InRleHQiLHRoaXMuX3JlYWRvbmx5PSExLHRoaXMuX25ldmVyRW1wdHlJbnB1dFR5cGVzPVsiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJtb250aCIsInRpbWUiLCJ3ZWVrIl0uZmlsdGVyKCh0PT52SCgpLmhhcyh0KSkpO2NvbnN0IGQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHA9ZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3RoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvcj1yfHxkLHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWU9dGhpcy52YWx1ZSx0aGlzLmlkPXRoaXMuaWQsZS5JT1MmJmwucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwodD0+e2NvbnN0IGU9dC50YXJnZXQ7ZS52YWx1ZXx8MCE9PWUuc2VsZWN0aW9uU3RhcnR8fDAhPT1lLnNlbGVjdGlvbkVuZHx8KGUuc2V0U2VsZWN0aW9uUmFuZ2UoMSwxKSxlLnNldFNlbGVjdGlvblJhbmdlKDAsMCkpfSkpfSkpLHRoaXMuX2lzU2VydmVyPSF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIsdGhpcy5faXNOYXRpdmVTZWxlY3Q9InNlbGVjdCI9PT1wLHRoaXMuX2lzVGV4dGFyZWE9InRleHRhcmVhIj09PXAsdGhpcy5faXNJbkZvcm1GaWVsZD0hIWMsdGhpcy5faXNOYXRpdmVTZWxlY3QmJih0aGlzLmNvbnRyb2xUeXBlPWQubXVsdGlwbGU/Im1hdC1uYXRpdmUtc2VsZWN0LW11bHRpcGxlIjoibWF0LW5hdGl2ZS1zZWxlY3QiKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5uZ0NvbnRyb2wmJm51bGwhPT10aGlzLm5nQ29udHJvbC5kaXNhYmxlZD90aGlzLm5nQ29udHJvbC5kaXNhYmxlZDp0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9cEgodCksdGhpcy5mb2N1c2VkJiYodGhpcy5mb2N1c2VkPSExLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZCh0KXt0aGlzLl9pZD10fHx0aGlzLl91aWR9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1wSCh0KX1nZXQgdHlwZSgpe3JldHVybiB0aGlzLl90eXBlfXNldCB0eXBlKHQpe3RoaXMuX3R5cGU9dHx8InRleHQiLHRoaXMuX3ZhbGlkYXRlVHlwZSgpLCF0aGlzLl9pc1RleHRhcmVhJiZ2SCgpLmhhcyh0aGlzLl90eXBlKSYmKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlPXRoaXMuX3R5cGUpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWV9c2V0IHZhbHVlKHQpe3QhPT10aGlzLnZhbHVlJiYodGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1nZXQgcmVhZG9ubHkoKXtyZXR1cm4gdGhpcy5fcmVhZG9ubHl9c2V0IHJlYWRvbmx5KHQpe3RoaXMuX3JlYWRvbmx5PXBIKHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmdGhpcy5fYXV0b2ZpbGxNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmF1dG9maWxsZWQ9dC5pc0F1dG9maWxsZWQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpfW5nT25DaGFuZ2VzKCl7dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2F1dG9maWxsTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpfW5nRG9DaGVjaygpe3RoaXMubmdDb250cm9sJiZ0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKSx0aGlzLl9kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKSx0aGlzLl9kaXJ0eUNoZWNrUGxhY2Vob2xkZXIoKX1mb2N1cyh0KXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X2ZvY3VzQ2hhbmdlZCh0KXt0IT09dGhpcy5mb2N1c2VkJiYodGhpcy5mb2N1c2VkPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fb25JbnB1dCgpe31fZGlydHlDaGVja1BsYWNlaG9sZGVyKCl7dmFyIHQsZTtjb25zdCBuPShudWxsPT09KGU9bnVsbD09PSh0PXRoaXMuX2Zvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuX2hpZGVDb250cm9sUGxhY2Vob2xkZXIpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNhbGwodCkpP251bGw6dGhpcy5wbGFjZWhvbGRlcjtpZihuIT09dGhpcy5fcHJldmlvdXNQbGFjZWhvbGRlcil7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fcHJldmlvdXNQbGFjZWhvbGRlcj1uLG4/dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIixuKTp0LnJlbW92ZUF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiKX19X2RpcnR5Q2hlY2tOYXRpdmVWYWx1ZSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO3RoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWUhPT10JiYodGhpcy5fcHJldmlvdXNOYXRpdmVWYWx1ZT10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X3ZhbGlkYXRlVHlwZSgpe2lmKExaLmluZGV4T2YodGhpcy5fdHlwZSk+LTEmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnRocm93KGZ1bmN0aW9uIHQoZSl7cmV0dXJuIEVycm9yKGBJbnB1dCB0eXBlICIke2V9IiBpc24ndCBzdXBwb3J0ZWQgYnkgbWF0SW5wdXQuYCl9KSh0aGlzLl90eXBlKX1faXNOZXZlckVtcHR5KCl7cmV0dXJuIHRoaXMuX25ldmVyRW1wdHlJbnB1dFR5cGVzLmluZGV4T2YodGhpcy5fdHlwZSk+LTF9X2lzQmFkSW5wdXQoKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsaWRpdHk7cmV0dXJuIHQmJnQuYmFkSW5wdXR9Z2V0IGVtcHR5KCl7cmV0dXJuISh0aGlzLl9pc05ldmVyRW1wdHkoKXx8dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlfHx0aGlzLl9pc0JhZElucHV0KCl8fHRoaXMuYXV0b2ZpbGxlZCl9Z2V0IHNob3VsZExhYmVsRmxvYXQoKXtpZih0aGlzLl9pc05hdGl2ZVNlbGVjdCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT10Lm9wdGlvbnNbMF07cmV0dXJuIHRoaXMuZm9jdXNlZHx8dC5tdWx0aXBsZXx8IXRoaXMuZW1wdHl8fCEhKHQuc2VsZWN0ZWRJbmRleD4tMSYmZSYmZS5sYWJlbCl9cmV0dXJuIHRoaXMuZm9jdXNlZHx8IXRoaXMuZW1wdHl9c2V0RGVzY3JpYmVkQnlJZHModCl7dC5sZW5ndGg/dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsdC5qb2luKCIgIikpOnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiKX1vbkNvbnRhaW5lckNsaWNrKCl7dGhpcy5mb2N1c2VkfHx0aGlzLmZvY3VzKCl9fVVaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVWikoZnUoS2gpLGZ1KF9IKSxmdSh5VywxMCksZnUoYUcsOCksZnUod0csOCksZnUobUwpLGZ1KEZaLDEwKSxmdShUWiksZnUobUMpLGZ1KFNqLDgpKX0sVVouybVkaXI9aG8oe3R5cGU6VVosc2VsZWN0b3JzOltbImlucHV0IiwibWF0SW5wdXQiLCIiXSxbInRleHRhcmVhIiwibWF0SW5wdXQiLCIiXSxbInNlbGVjdCIsIm1hdE5hdGl2ZUNvbnRyb2wiLCIiXSxbImlucHV0IiwibWF0TmF0aXZlQ29udHJvbCIsIiJdLFsidGV4dGFyZWEiLCJtYXROYXRpdmVDb250cm9sIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWlucHV0LWVsZW1lbnQiLCJtYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sIl0saG9zdFZhcnM6OSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmRHUoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9mb2N1c0NoYW5nZWQoITApfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9mb2N1c0NoYW5nZWQoITEpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25JbnB1dCgpfSkpLDImZSYmKGNnKCJkaXNhYmxlZCIsbi5kaXNhYmxlZCkoInJlcXVpcmVkIixuLnJlcXVpcmVkKSx5bSgiaWQiLG4uaWQpKCJkYXRhLXBsYWNlaG9sZGVyIixuLnBsYWNlaG9sZGVyKSgicmVhZG9ubHkiLG4ucmVhZG9ubHkmJiFuLl9pc05hdGl2ZVNlbGVjdHx8bnVsbCkoImFyaWEtaW52YWxpZCIsbi5lbXB0eSYmbi5yZXF1aXJlZD9udWxsOm4uZXJyb3JTdGF0ZSkoImFyaWEtcmVxdWlyZWQiLG4ucmVxdWlyZWQpLGNmKCJtYXQtaW5wdXQtc2VydmVyIixuLl9pc1NlcnZlcikpfSxpbnB1dHM6e2lkOiJpZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixyZXF1aXJlZDoicmVxdWlyZWQiLHR5cGU6InR5cGUiLHZhbHVlOiJ2YWx1ZSIscmVhZG9ubHk6InJlYWRvbmx5IixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciIsdXNlckFyaWFEZXNjcmliZWRCeTpbImFyaWEtZGVzY3JpYmVkYnkiLCJ1c2VyQXJpYURlc2NyaWJlZEJ5Il19LGV4cG9ydEFzOlsibWF0SW5wdXQiXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOmZqLHVzZUV4aXN0aW5nOlVafV0pLFFwLHFvXX0pLFVaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOl9IfSx7dHlwZTp5VyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX0se3R5cGU6YUcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6d0csZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6bUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9LHt0eXBlOkxyLGFyZ3M6W0ZaXX1dfSx7dHlwZTpUWn0se3R5cGU6bUN9LHt0eXBlOkRqLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltTal19XX1dLFVaLnByb3BEZWNvcmF0b3JzPXtkaXNhYmxlZDpbe3R5cGU6Ul99XSxpZDpbe3R5cGU6Ul99XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxyZXF1aXJlZDpbe3R5cGU6Ul99XSx0eXBlOlt7dHlwZTpSX31dLGVycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTpSX31dLHVzZXJBcmlhRGVzY3JpYmVkQnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx2YWx1ZTpbe3R5cGU6Ul99XSxyZWFkb25seTpbe3R5cGU6Ul99XSxfZm9jdXNDaGFuZ2VkOlt7dHlwZTpUXyxhcmdzOlsiZm9jdXMiLFsidHJ1ZSJdXX0se3R5cGU6VF8sYXJnczpbImJsdXIiLFsiZmFsc2UiXV19XSxfb25JbnB1dDpbe3R5cGU6VF8sYXJnczpbImlucHV0Il19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVWixbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJpbnB1dFttYXRJbnB1dF0sIHRleHRhcmVhW21hdElucHV0XSwgc2VsZWN0W21hdE5hdGl2ZUNvbnRyb2xdLFxuICAgICAgaW5wdXRbbWF0TmF0aXZlQ29udHJvbF0sIHRleHRhcmVhW21hdE5hdGl2ZUNvbnRyb2xdIixleHBvcnRBczoibWF0SW5wdXQiLGhvc3Q6e2NsYXNzOiJtYXQtaW5wdXQtZWxlbWVudCBtYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sIiwiW2NsYXNzLm1hdC1pbnB1dC1zZXJ2ZXJdIjoiX2lzU2VydmVyIiwiW2F0dHIuaWRdIjoiaWQiLCJbYXR0ci5kYXRhLXBsYWNlaG9sZGVyXSI6InBsYWNlaG9sZGVyIiwiW2Rpc2FibGVkXSI6ImRpc2FibGVkIiwiW3JlcXVpcmVkXSI6InJlcXVpcmVkIiwiW2F0dHIucmVhZG9ubHldIjoicmVhZG9ubHkgJiYgIV9pc05hdGl2ZVNlbGVjdCB8fCBudWxsIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6IihlbXB0eSAmJiByZXF1aXJlZCkgPyBudWxsIDogZXJyb3JTdGF0ZSIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoicmVxdWlyZWQifSxwcm92aWRlcnM6W3twcm92aWRlOmZqLHVzZUV4aXN0aW5nOlVafV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6X0h9LHt0eXBlOnlXLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn1dfSx7dHlwZTphRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp3RyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptTH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpWcn0se3R5cGU6THIsYXJnczpbRlpdfV19LHt0eXBlOlRafSx7dHlwZTptQ30se3R5cGU6RGosZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1NqXX1dfV19KSx7aWQ6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sdHlwZTpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxyZWFkb25seTpbe3R5cGU6Ul99XSxfZm9jdXNDaGFuZ2VkOlt7dHlwZTpUXyxhcmdzOlsiZm9jdXMiLFsidHJ1ZSJdXX0se3R5cGU6VF8sYXJnczpbImJsdXIiLFsiZmFsc2UiXV19XSxfb25JbnB1dDpbe3R5cGU6VF8sYXJnczpbImlucHV0Il19XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Ul99XSx1c2VyQXJpYURlc2NyaWJlZEJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGpae31mdW5jdGlvbiBXWih0LGUpe2lmKDEmdCYmKF91KDAsIm1hdC1lcnJvciIpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGtmKCIgUmVsb2FkIHBlcmlvZCBoYXMgdG8gYmUgbWluaW11bSBvZiAiLHQuTUlOX1JFTE9BRF9QRVJJT0RfSU5fUywiIHNlY29uZHMuICIpfX1mdW5jdGlvbiBHWih0LGUpezEmdCYmKF91KDAsIm1hdC1lcnJvciIpLFBmKDEsIiBQYWdlIHNpemUgaGFzIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlci4gIiksQ3UoKSl9alouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpaKX0salouybVtb2Q9dW8oe3R5cGU6alp9KSxqWi7JtWluaj1Ebih7cHJvdmlkZXJzOlttTF0saW1wb3J0czpbW0laLFJqLFdGXSxJWixSal19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpaLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltVWixIWl0saW1wb3J0czpbSVosUmosV0ZdLGV4cG9ydHM6W0laLFJqLFVaLEhaXSxwcm92aWRlcnM6W21MXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGpaLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bVVosSFpdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0laLFJqLFdGXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltJWixSaixVWixIWl19fSk7Y2xhc3MgWVp7Y29uc3RydWN0b3IoKXt0aGlzLnJlbG9hZFRvZ2dsZWQ9bmV3IFN5LHRoaXMucmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQ9bmV3IFN5LHRoaXMucGFnZVNpemVDaGFuZ2VkPW5ldyBTeSx0aGlzLk1JTl9SRUxPQURfUEVSSU9EX0lOX1M9MzAsdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sPW5ldyB0Ryh0aGlzLk1JTl9SRUxPQURfUEVSSU9EX0lOX1MsW1dqLnJlcXVpcmVkLFdqLm1pbih0aGlzLk1JTl9SRUxPQURfUEVSSU9EX0lOX1MpXSksdGhpcy5wYWdpbmF0aW9uQ29udHJvbD1uZXcgdEcoMSxbV2oucmVxdWlyZWQsV2oubWluKDEpLHQ9Pntjb25zdCBlPU51bWJlcih0LnZhbHVlKTtyZXR1cm4gTWF0aC5yb3VuZChlKT09PXQudmFsdWU/bnVsbDp7aW50ZWdlcjp7dmFsdWU6dC52YWx1ZX19fV0pLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgQn1uZ09uSW5pdCgpe3RoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpLENlKDUwMCksZmUoKCgpPT50aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsaWQpKSkuc3Vic2NyaWJlKCgoKT0+e2lmKCF0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsaWQpcmV0dXJuO3RoaXMucmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQuZW1pdCgxZTMqdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbHVlKX0pKSx0aGlzLnBhZ2luYXRpb25Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSksQ2UoNTAwKSxmZSgoKCk9PnRoaXMucGFnaW5hdGlvbkNvbnRyb2wudmFsaWQpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQodGhpcy5wYWdpbmF0aW9uQ29udHJvbC52YWx1ZSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nT25DaGFuZ2VzKHQpe2lmKHQucmVsb2FkUGVyaW9kSW5Ncyl7Y29uc3QgZT10LnJlbG9hZFBlcmlvZEluTXM7ZS5wcmV2aW91c1ZhbHVlIT09ZS5jdXJyZW50VmFsdWUmJnRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC5zZXRWYWx1ZShlLmN1cnJlbnRWYWx1ZS8xZTMpfWlmKHQucmVsb2FkRW5hYmxlZCl7dC5yZWxvYWRFbmFibGVkLmN1cnJlbnRWYWx1ZT90aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wuZW5hYmxlKCk6dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLmRpc2FibGUoKX1pZih0LnBhZ2VTaXplKXtjb25zdCBlPXQucGFnZVNpemU7ZS5wcmV2aW91c1ZhbHVlIT09ZS5jdXJyZW50VmFsdWUmJnRoaXMucGFnaW5hdGlvbkNvbnRyb2wuc2V0VmFsdWUoZS5jdXJyZW50VmFsdWUpfX1vblJlbG9hZFRvZ2dsZSgpe3RoaXMucmVsb2FkVG9nZ2xlZC5lbWl0KCl9fVlaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZWil9LFlaLsm1Y21wPXNvKHt0eXBlOllaLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50Il1dLGlucHV0czp7cmVsb2FkRW5hYmxlZDoicmVsb2FkRW5hYmxlZCIscmVsb2FkUGVyaW9kSW5NczoicmVsb2FkUGVyaW9kSW5NcyIscGFnZVNpemU6InBhZ2VTaXplIn0sb3V0cHV0czp7cmVsb2FkVG9nZ2xlZDoicmVsb2FkVG9nZ2xlZCIscmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQ6InJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkIixwYWdlU2l6ZUNoYW5nZWQ6InBhZ2VTaXplQ2hhbmdlZCJ9LGZlYXR1cmVzOltxb10sZGVjbHM6MTQsdmFyczo1LGNvbnN0czpbWzEsInJlbG9hZC10b2dnbGUiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsibWF0SW5wdXQiLCIiLCJ0eXBlIiwibnVtYmVyIiwicGxhY2Vob2xkZXIiLCJSZWxvYWQgUGVyaW9kIiwxLCJyZWxvYWQtcGVyaW9kIiwzLCJmb3JtQ29udHJvbCJdLFs0LCJuZ0lmIl0sWyJtYXRJbnB1dCIsIiIsInR5cGUiLCJudW1iZXIiLCJwbGFjZWhvbGRlciIsIlBhZ2luYXRpb24gTGltaXQiLDEsInBhZ2Utc2l6ZSIsMywiZm9ybUNvbnRyb2wiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImgzIiksUGYoMSwiU2V0dGluZ3MiKSxDdSgpLF91KDIsImRpdiIpLF91KDMsImRpdiIsMCksX3UoNCwibWF0LWNoZWNrYm94IiwxKSxEdSgiY2hhbmdlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVsb2FkVG9nZ2xlKCl9KSksUGYoNSwiUmVsb2FkIGRhdGEiKSxDdSgpLEN1KCksX3UoNiwiZGl2IiksX3UoNywibWF0LWZvcm0tZmllbGQiKSxNdSg4LCJpbnB1dCIsMiksQ3UoKSxIbSg5LFdaLDIsMSwibWF0LWVycm9yIiwzKSxDdSgpLEN1KCksX3UoMTAsImRpdiIpLF91KDExLCJtYXQtZm9ybS1maWVsZCIpLE11KDEyLCJpbnB1dCIsNCksQ3UoKSxIbSgxMyxHWiwyLDAsIm1hdC1lcnJvciIsMyksQ3UoKSksMiZlJiYoRGMoNCksaHUoImNoZWNrZWQiLG4ucmVsb2FkRW5hYmxlZCksRGMoNCksaHUoImZvcm1Db250cm9sIixuLnJlbG9hZFBlcmlvZENvbnRyb2wpLERjKDEpLGh1KCJuZ0lmIixuLnJlbG9hZFBlcmlvZENvbnRyb2wuaGFzRXJyb3IoIm1pbiIpfHxuLnJlbG9hZFBlcmlvZENvbnRyb2wuaGFzRXJyb3IoInJlcXVpcmVkIikpLERjKDMpLGh1KCJmb3JtQ29udHJvbCIsbi5wYWdpbmF0aW9uQ29udHJvbCksRGMoMSksaHUoIm5nSWYiLG4ucGFnaW5hdGlvbkNvbnRyb2wuaW52YWxpZCkpfSxkaXJlY3RpdmVzOltrWixEaixVWixnRyxGaix2VyxPRyxQdixtal0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICA+IGRpdltfbmdjb250ZW50LSVDT01QJV0ge1xuICBtYXJnaW46IDEwcHggMDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICA+IFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG5bX25naG9zdC0lQ09NUCVdICAgID4gW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuaDNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAyMHB4O1xufVxuXG4ucmVsb2FkLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoic2V0dGluZ3NfZGlhbG9nX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3NldHRpbmdzX2RpYWxvZ19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse3JlbG9hZEVuYWJsZWQ6W3t0eXBlOlJffV0scmVsb2FkUGVyaW9kSW5Nczpbe3R5cGU6Ul99XSxwYWdlU2l6ZTpbe3R5cGU6Ul99XSxyZWxvYWRUb2dnbGVkOlt7dHlwZTpFX31dLHJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkOlt7dHlwZTpFX31dLHBhZ2VTaXplQ2hhbmdlZDpbe3R5cGU6RV99XX0pO2NsYXNzIHFae2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJlbG9hZEVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KHhJKSx0aGlzLnJlbG9hZFBlcmlvZEluTXMkPXRoaXMuc3RvcmUuc2VsZWN0KE9JKSx0aGlzLnBhZ2VTaXplJD10aGlzLnN0b3JlLnNlbGVjdChQSSl9b25SZWxvYWRUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChoSSgpKX1vblJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goYkkoe3BlcmlvZEluTXM6dH0pKX1vblBhZ2VTaXplQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHlJKHtzaXplOnR9KSl9fXFaLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxWikoZnUoaVMpKX0scVouybVjbXA9c28oe3R5cGU6cVosc2VsZWN0b3JzOltbInNldHRpbmdzLWRpYWxvZyJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJyZWxvYWRFbmFibGVkIiwicmVsb2FkUGVyaW9kSW5NcyIsInBhZ2VTaXplIiwicmVsb2FkVG9nZ2xlZCIsInJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkIiwicGFnZVNpemVDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJzZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50IiwwKSxEdSgicmVsb2FkVG9nZ2xlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlbG9hZFRvZ2dsZWQoKX0pKSgicmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQoZSl9KSkoInBhZ2VTaXplQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QYWdlU2l6ZUNoYW5nZWQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksQ3UoKSksMiZlJiZodSgicmVsb2FkRW5hYmxlZCIsQ3koMSwzLG4ucmVsb2FkRW5hYmxlZCQpKSgicmVsb2FkUGVyaW9kSW5NcyIsQ3koMiw1LG4ucmVsb2FkUGVyaW9kSW5NcyQpKSgicGFnZVNpemUiLEN5KDMsNyxuLnBhZ2VTaXplJCkpfSxkaXJlY3RpdmVzOltZWl0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHFaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNldHRpbmdzLWRpYWxvZyIsdGVtcGxhdGU6J1xuICAgIDxzZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50XG4gICAgICBbcmVsb2FkRW5hYmxlZF09InJlbG9hZEVuYWJsZWQkIHwgYXN5bmMiXG4gICAgICBbcmVsb2FkUGVyaW9kSW5Nc109InJlbG9hZFBlcmlvZEluTXMkIHwgYXN5bmMiXG4gICAgICBbcGFnZVNpemVdPSJwYWdlU2l6ZSQgfCBhc3luYyJcbiAgICAgIChyZWxvYWRUb2dnbGVkKT0ib25SZWxvYWRUb2dnbGVkKCkiXG4gICAgICAocmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQpPSJvblJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKCRldmVudCkiXG4gICAgICAocGFnZVNpemVDaGFuZ2VkKT0ib25QYWdlU2l6ZUNoYW5nZWQoJGV2ZW50KSJcbiAgICA+PC9zZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIFpae2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlhbG9nPXR9aXNCdXR0b25EaXNhYmxlZCgpe3JldHVybiB0aGlzLnNldHRpbmdzTG9hZFN0YXRlPT09R0UuTk9UX0xPQURFRHx8dGhpcy5zZXR0aW5nc0xvYWRTdGF0ZT09PUdFLkxPQURJTkd9b3BlbkRpYWxvZygpe3RoaXMuZGlhbG9nLm9wZW4ocVose3dpZHRoOiI0MDBweCJ9KX19WlouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpaKShmdShhcSkpfSxaWi7JtWNtcD1zbyh7dHlwZTpaWixzZWxlY3RvcnM6W1sic2V0dGluZ3MtYnV0dG9uLWNvbXBvbmVudCJdXSxpbnB1dHM6e3NldHRpbmdzTG9hZFN0YXRlOiJzZXR0aW5nc0xvYWRTdGF0ZSJ9LGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJzZXR0aW5nc18yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJidXR0b24iLDApLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vcGVuRGlhbG9nKCl9KSksTXUoMSwibWF0LWljb24iLDEpLEN1KCkpLDImZSYmaHUoImRpc2FibGVkIixuLmlzQnV0dG9uRGlzYWJsZWQoKSl9LGRpcmVjdGl2ZXM6W1dMLEVxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFpaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIFtkaXNhYmxlZF09ImlzQnV0dG9uRGlzYWJsZWQoKSJcbiAgICAgIChjbGljayk9Im9wZW5EaWFsb2coKSJcbiAgICA+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj0ic2V0dGluZ3NfMjRweCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmFxfV19KSx7c2V0dGluZ3NMb2FkU3RhdGU6W3t0eXBlOlJffV19KTtjbGFzcyBYWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zZXR0aW5nc0xvYWRTdGF0ZSQ9dGhpcy5zdG9yZS5zZWxlY3QodkkpfX1YWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFopKGZ1KGlTKSl9LFhaLsm1Y21wPXNvKHt0eXBlOlhaLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1idXR0b24iXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywic2V0dGluZ3NMb2FkU3RhdGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsInNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIikpLDImZSYmaHUoInNldHRpbmdzTG9hZFN0YXRlIixDeSgxLDEsbi5zZXR0aW5nc0xvYWRTdGF0ZSQpKX0sZGlyZWN0aXZlczpbWlpdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYWixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1idXR0b24iLHRlbXBsYXRlOidcbiAgICA8c2V0dGluZ3MtYnV0dG9uLWNvbXBvbmVudFxuICAgICAgW3NldHRpbmdzTG9hZFN0YXRlXT0ic2V0dGluZ3NMb2FkU3RhdGUkIHwgYXN5bmMiXG4gICAgPjwvc2V0dGluZ3MtYnV0dG9uLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBLWnt9S1ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtaKX0sS1ouybVjbXA9c28oe3R5cGU6S1osc2VsZWN0b3JzOltbImFwcC1oZWFkZXIiXV0sZGVjbHM6MTAsdmFyczowLGNvbnN0czpbWzEsImJyYW5kIl0sWzEsInBsdWdpbnMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImhyZWYiLCJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiLCJyZWwiLCJub29wZW5lciBub3JlZmVycmVyIiwidGFyZ2V0IiwiX2JsYW5rIiwiYXJpYS1sYWJlbCIsIkhlbHAiLDEsInJlYWRtZSJdLFsic3ZnSWNvbiIsImhlbHBfb3V0bGluZV8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJtYXQtdG9vbGJhciIpLF91KDEsInNwYW4iLDApLFBmKDIsIlRlbnNvckJvYXJkIiksQ3UoKSxNdSgzLCJwbHVnaW4tc2VsZWN0b3IiLDEpLE11KDQsInRiZGV2LXVwbG9hZC1idXR0b24iKSxNdSg1LCJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUiKSxNdSg2LCJhcHAtaGVhZGVyLXJlbG9hZCIpLE11KDcsInNldHRpbmdzLWJ1dHRvbiIpLF91KDgsImEiLDIpLE11KDksIm1hdC1pY29uIiwzKSxDdSgpLEN1KCkpfSxkaXJlY3RpdmVzOltRVixqWSxGcSxwWix1WixYWixHTCxFcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjY0cHg7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9dGJkZXYtdXBsb2FkLWJ1dHRvbi5zaG93bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgOHB4IDAgMTZweH0uYnJhbmRbX25nY29udGVudC0lQ09NUCVdLCAucmVhZG1lW19uZ2NvbnRlbnQtJUNPTVAlXSwgYXBwLWhlYWRlci1yZWxvYWRbX25nY29udGVudC0lQ09NUCVdLCBzZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwIGF1dG99LmJyYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtsZXR0ZXItc3BhY2luZzotMC4wMjVlbTttYXJnaW4tbGVmdDoxMHB4O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0ucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoS1osW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlciIsdGVtcGxhdGU6J1xuICAgIDxtYXQtdG9vbGJhcj5cbiAgICAgIDxzcGFuIGNsYXNzPSJicmFuZCI+VGVuc29yQm9hcmQ8L3NwYW4+XG4gICAgICA8cGx1Z2luLXNlbGVjdG9yIGNsYXNzPSJwbHVnaW5zIj48L3BsdWdpbi1zZWxlY3Rvcj5cbiAgICAgIDx0YmRldi11cGxvYWQtYnV0dG9uPjwvdGJkZXYtdXBsb2FkLWJ1dHRvbj5cbiAgICAgIDxhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+PC9hcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+XG4gICAgICA8YXBwLWhlYWRlci1yZWxvYWQ+PC9hcHAtaGVhZGVyLXJlbG9hZD5cbiAgICAgIDxzZXR0aW5ncy1idXR0b24+PC9zZXR0aW5ncy1idXR0b24+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz0icmVhZG1lIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIlxuICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiXG4gICAgICAgIHRhcmdldD0iX2JsYW5rIlxuICAgICAgICBhcmlhLWxhYmVsPSJIZWxwIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj0iaGVscF9vdXRsaW5lXzI0cHgiPjwvbWF0LWljb24+XG4gICAgICA8L2E+XG4gICAgPC9tYXQtdG9vbGJhcj5cbiAgJyxzdHlsZVVybHM6WyJoZWFkZXJfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NvbnN0IEpaPVsicm91dGVDb250YWluZXIiXTtjbGFzcyBRWntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj10fW5nT25DaGFuZ2VzKHQpe2NvbnN0IGU9dC5hY3RpdmVOZ0NvbXBvbmVudDtpZihlJiYodGhpcy5yb3V0ZUNvbnRhaW5lci5jbGVhcigpLGUuY3VycmVudFZhbHVlKSl7Y29uc3QgdD10aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShlLmN1cnJlbnRWYWx1ZSk7dGhpcy5yb3V0ZUNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodCl9fX1RWi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UVopKGZ1KEdoKSl9LFFaLsm1Y21wPXNvKHt0eXBlOlFaLHNlbGVjdG9yczpbWyJyb3V0ZXItb3V0bGV0LWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoSlosNyxGYiksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5yb3V0ZUNvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7YWN0aXZlTmdDb21wb25lbnQ6ImFjdGl2ZU5nQ29tcG9uZW50In0sZmVhdHVyZXM6W3FvXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sicm91dGVDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmT3UoMCxudWxsLDApfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFFaLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJvdXRlci1vdXRsZXQtY29tcG9uZW50Iix0ZW1wbGF0ZToiIDxuZy1jb250YWluZXIgI3JvdXRlQ29udGFpbmVyPjwvbmctY29udGFpbmVyPiAiLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHaH1dfSkse3JvdXRlQ29udGFpbmVyOlt7dHlwZTphcixhcmdzOlsicm91dGVDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpGYn1dfV0sYWN0aXZlTmdDb21wb25lbnQ6W3t0eXBlOlJffV19KTtjbGFzcyAkWntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLnJlZ2lzdHJ5PWUsdGhpcy5hY3RpdmVOZ0NvbXBvbmVudCQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KENSKSx0aGlzLnN0b3JlLnNlbGVjdChNUildKS5waXBlKFZ0KCgoW3QsZV0pPT57aWYoIXQpcmV0dXJuIG51bGw7cmV0dXJuIG51bGwhPT1lJiYhT0QodCxlKT9udWxsOnRoaXMucmVnaXN0cnkuZ2V0TmdDb21wb25lbnRCeVJvdXRlS2luZCh0LnJvdXRlS2luZCl9KSkpfX12YXIgdFg7JFouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRaKShmdShpUyksZnUoYlIpKX0sJFouybVjbXA9c28oe3R5cGU6JFosc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywiYWN0aXZlTmdDb21wb25lbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsInJvdXRlci1vdXRsZXQtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmh1KCJhY3RpdmVOZ0NvbXBvbmVudCIsQ3koMSwxLG4uYWN0aXZlTmdDb21wb25lbnQkKSl9LGRpcmVjdGl2ZXM6W1FaXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJFosW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoicm91dGVyLW91dGxldCIsdGVtcGxhdGU6J1xuICAgIDxyb3V0ZXItb3V0bGV0LWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZU5nQ29tcG9uZW50XT0iYWN0aXZlTmdDb21wb25lbnQkIHwgYXN5bmMiXG4gICAgPjwvcm91dGVyLW91dGxldC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpiUn1dfSksbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5BQ1RJVkVfUExVR0lOPTBdPSJBQ1RJVkVfUExVR0lOIn0pKHRYfHwodFg9e30pKTtjbGFzcyBlWHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmRlZXBMaW5rZXI9dCx0aGlzLm9uVmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMubmdVbnN1YnNjcmliZT1uZXcgQix0aGlzLm9uSGFzaENoYW5nZT1sZSh3aW5kb3csInBvcHN0YXRlIix7cGFzc2l2ZTohMH0pLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSl9bmdPbkluaXQoKXt0aGlzLm9uSGFzaENoYW5nZS5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLmRlZXBMaW5rZXIuZ2V0UGx1Z2luSWQoKTt0IT09dGhpcy5hY3RpdmVQbHVnaW5JZCYmdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoe3Byb3A6dFguQUNUSVZFX1BMVUdJTix2YWx1ZTp0fSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nT25DaGFuZ2VzKHQpe2lmKHQuYWN0aXZlUGx1Z2luSWQpe2NvbnN0IGU9dC5hY3RpdmVQbHVnaW5JZDt0aGlzLmRlZXBMaW5rZXIuc2V0UGx1Z2luSWQobnVsbD09PWUuY3VycmVudFZhbHVlPyIiOmUuY3VycmVudFZhbHVlLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYXRpb25SZXBsYWNlOm51bGw9PT1lLnByZXZpb3VzVmFsdWV8fGUuZmlyc3RDaGFuZ2V9KX19fWVYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlWCkoZnUoSFIpKX0sZVguybVjbXA9c28oe3R5cGU6ZVgsc2VsZWN0b3JzOltbImhhc2gtc3RvcmFnZS1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5JZDoiYWN0aXZlUGx1Z2luSWQifSxvdXRwdXRzOntvblZhbHVlQ2hhbmdlOiJvblZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W3FvXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGVYLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhhc2gtc3RvcmFnZS1jb21wb25lbnQiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIUn1dfSkse2FjdGl2ZVBsdWdpbklkOlt7dHlwZTpSX31dLG9uVmFsdWVDaGFuZ2U6W3t0eXBlOkVffV19KTtjbGFzcyBuWHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVQbHVnaW5JZCQ9dGhpcy5zdG9yZS5waXBlKHJTKG9UKSl9b25WYWx1ZUNoYW5nZWQodCl7c3dpdGNoKHQucHJvcCl7Y2FzZSB0WC5BQ1RJVkVfUExVR0lOOnRoaXMuc3RvcmUuZGlzcGF0Y2goSkUoe3BsdWdpbjp0LnZhbHVlfSkpfX19blguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5YKShmdShpUykpfSxuWC7JtWNtcD1zbyh7dHlwZTpuWCxzZWxlY3RvcnM6W1siaGFzaC1zdG9yYWdlIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbklkIiwib25WYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiaGFzaC1zdG9yYWdlLWNvbXBvbmVudCIsMCksRHUoIm9uVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVmFsdWVDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksQ3UoKSksMiZlJiZodSgiYWN0aXZlUGx1Z2luSWQiLEN5KDEsMSxuLmFjdGl2ZVBsdWdpbklkJCkpfSxkaXJlY3RpdmVzOltlWF0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoblgsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiaGFzaC1zdG9yYWdlIix0ZW1wbGF0ZTonXG4gICAgPGhhc2gtc3RvcmFnZS1jb21wb25lbnRcbiAgICAgIFthY3RpdmVQbHVnaW5JZF09ImFjdGl2ZVBsdWdpbklkJCB8IGFzeW5jIlxuICAgICAgKG9uVmFsdWVDaGFuZ2UpPSJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpIlxuICAgID5cbiAgICA8L2hhc2gtc3RvcmFnZS1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBvWD17c2V0RG9jdW1lbnRUaXRsZTpmdW5jdGlvbiBpWCh0KXtkb2N1bWVudC50aXRsZT10fX07Y2xhc3MgYVh7bmdPbkNoYW5nZXModCl7dC50aXRsZSYmb1guc2V0RG9jdW1lbnRUaXRsZSh0LnRpdGxlLmN1cnJlbnRWYWx1ZSl9fWFYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhWCl9LGFYLsm1Y21wPXNvKHt0eXBlOmFYLHNlbGVjdG9yczpbWyJwYWdlLXRpdGxlLWNvbXBvbmVudCJdXSxpbnB1dHM6e3RpdGxlOiJ0aXRsZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhWCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJwYWdlLXRpdGxlLWNvbXBvbmVudCIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7dGl0bGU6W3t0eXBlOlJffV19KTtjb25zdCByWD0iVGVuc29yQm9hcmQiO2NsYXNzIHNYe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuY3VzdG9tQnJhbmROYW1lPWUsdGhpcy5nZXRFeHBlcmltZW50SWQkPXRoaXMuc3RvcmUuc2VsZWN0KGtSKS5waXBlKFZ0KCh0PT5udWxsPT10P3ZvaWQgMDp0WzBdKSkpLHRoaXMuZXhwZXJpbWVudE5hbWUkPXRoaXMuZ2V0RXhwZXJpbWVudElkJC5waXBlKGZlKEJvb2xlYW4pLCR0KCh0PT50aGlzLnN0b3JlLnNlbGVjdChYVCx7ZXhwZXJpbWVudElkOnR9KSkpLFZ0KCh0PT50P3QubmFtZTpudWxsKSkpLHRoaXMudGl0bGUkPXRoaXMuc3RvcmUuc2VsZWN0KGFUKS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KFBSKSx0aGlzLmV4cGVyaW1lbnROYW1lJCksVnQoKChbdCxlLG5dKT0+e2NvbnN0IG89dGhpcy5jdXN0b21CcmFuZE5hbWV8fHJYO3JldHVybiB0LndpbmRvd190aXRsZT90LndpbmRvd190aXRsZTplPT09X0QuRVhQRVJJTUVOVCYmbj9gJHtufSAtICR7b31gOm99KSksQmUodGhpcy5jdXN0b21CcmFuZE5hbWV8fHJYKSx3ZSgpKX19c1guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNYKShmdShpUyksZnUoVUUsOCkpfSxzWC7JtWNtcD1zbyh7dHlwZTpzWCxzZWxlY3RvcnM6W1sicGFnZS10aXRsZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwicGFnZS10aXRsZS1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIikpLDImZSYmaHUoInRpdGxlIixDeSgxLDEsbi50aXRsZSQpKX0sZGlyZWN0aXZlczpbYVhdLHBpcGVzOltWdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHNYLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InBhZ2UtdGl0bGUiLHRlbXBsYXRlOidcbiAgICA8cGFnZS10aXRsZS1jb21wb25lbnQgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiPjwvcGFnZS10aXRsZS1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1VFXX1dfV19KSxudWxsKTtjbGFzcyBsWHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMuZ2V0UGFnZVNpemUkPXRoaXMuc3RvcmUucGlwZShyUyhQSSkpLHRoaXMucGFnaW5hdGVkVmlld1N0b3JlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXBhZ2luYXRlZC12aWV3LXN0b3JlIikudGZfcGFnaW5hdGVkX3ZpZXd9bmdPbkluaXQoKXt0aGlzLmdldFBhZ2VTaXplJC5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSksd2UoKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5wYWdpbmF0ZWRWaWV3U3RvcmUuc2V0TGltaXQodCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfX1sWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bFgpKGZ1KGlTKSl9LGxYLsm1Y21wPXNvKHt0eXBlOmxYLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsWCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgY1h7Y29uc3RydWN0b3IodCl7dC5zZWxlY3QoVkQpLnN1YnNjcmliZSgodD0+e2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgiZGFyay1tb2RlIix0KX0pKX19Y1guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGNYKShmdShpUykpfSxjWC7JtWNtcD1zbyh7dHlwZTpjWCxzZWxlY3RvcnM6W1siZGFyay1tb2RlLXN1cHBvcnRlciJdXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoY1gsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGFyay1tb2RlLXN1cHBvcnRlciIsdGVtcGxhdGU6IiIsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBkWHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZjUmVmPXR9fWRYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkWCkoZnUoRmIpKX0sZFguybVjbXA9c28oe3R5cGU6ZFgsc2VsZWN0b3JzOltbInRiLXdlYmFwcCJdXSxkZWNsczo4LHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwiYXBwLWhlYWRlciIpLF91KDEsIm1haW4iKSxNdSgyLCJyb3V0ZXItb3V0bGV0IiksQ3UoKSxNdSgzLCJhbGVydC1zbmFja2JhciIpLE11KDQsImhhc2gtc3RvcmFnZSIpLE11KDUsInBhZ2UtdGl0bGUiKSxNdSg2LCJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiKSxNdSg3LCJkYXJrLW1vZGUtc3VwcG9ydGVyIikpfSxkaXJlY3RpdmVzOltLWiwkWixZVixuWCxzWCxsWCxjWF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfWh0bWxbX25nY29udGVudC0lQ09NUCVdLCBib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sc2Fucy1zZXJpZjtoZWlnaHQ6MTAwJTttYXJnaW46MDtwYWRkaW5nOjB9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNWY1ZjU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX1hcHAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjAgMXB4IDNweCAzcHggcmdiYSgwLDAsMCwuMjUpO2ZsZXg6MCAwO3otaW5kZXg6MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBhcHAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgYXBwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowIDFweCAzcHggM3B4IHJnYmEoMjU1LDI1NSwyNTUsLjEpfW1haW5bX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxO292ZXJmbG93OmF1dG99J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRYLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiLXdlYmFwcCIsdGVtcGxhdGVVcmw6Ii4vYXBwX2NvbnRhaW5lci5uZy5odG1sIixzdHlsZVVybHM6WyIuL2FwcF9jb250YWluZXIuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn1dfSksbnVsbCk7Y2xhc3MgcFh7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuc3RvcmU9dCx0aGlzLmxvY2F0aW9uPWUsdGhpcy5hcHBSb290UHJvdmlkZXI9bix0aGlzLnBhdGhuYW1lPW51bGwsdGhpcy5yZXNldE5hbWVzcGFjZWRTdGF0ZT0hMX1oYW5kbGVDbGljayh0KXshdGhpcy5wYXRobmFtZXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl8fCh0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnN0b3JlLmRpc3BhdGNoKG5SKHtwYXRobmFtZTp0aGlzLnBhdGhuYW1lLHJlc2V0TmFtZXNwYWNlZFN0YXRlOnRoaXMucmVzZXROYW1lc3BhY2VkU3RhdGV9KSkpfWdldCBocmVmKCl7cmV0dXJuIHRoaXMucGF0aG5hbWU/dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0aGlzLmxvY2F0aW9uLmdldFJlc29sdmVkUGF0aCh0aGlzLnBhdGhuYW1lKSk6bnVsbH1zZXQgcm91dGVyTGluayh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJih0PVt0XSksMD09PXQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJyb3V0ZUxpbmsgc2hvdWxkIGhhdmUgcHJvcGVyIHBhdGguIEdvdCBub3RoaW5nLiIpO2NvbnN0IGU9Wy4uLnRdLmpvaW4oIi8iKTt0aGlzLnBhdGhuYW1lPWUuZW5kc1dpdGgoIi8iKT9lOmUrIi8ifX1wWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cFgpKGZ1KGlTKSxmdShTRCksZnUoREQpKX0scFguybVkaXI9aG8oe3R5cGU6cFgsc2VsZWN0b3JzOltbImEiLCJyb3V0ZXJMaW5rIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGFuZGxlQ2xpY2soZSl9KSksMiZlJiZ5bSgiaHJlZiIsbi5ocmVmLFhzKX0saW5wdXRzOntyb3V0ZXJMaW5rOiJyb3V0ZXJMaW5rIixyZXNldE5hbWVzcGFjZWRTdGF0ZToicmVzZXROYW1lc3BhY2VkU3RhdGUifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocFgsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiYVtyb3V0ZXJMaW5rXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU30se3R5cGU6U0R9LHt0eXBlOkREfV19KSx7aGFuZGxlQ2xpY2s6W3t0eXBlOlRfLGFyZ3M6WyJjbGljayIsWyIkZXZlbnQiXV19XSxocmVmOlt7dHlwZTpBXyxhcmdzOlsiYXR0ci5ocmVmIl19XSxyb3V0ZXJMaW5rOlt7dHlwZTpSX31dLHJlc2V0TmFtZXNwYWNlZFN0YXRlOlt7dHlwZTpSX31dfSk7Y2xhc3MgbVh7fW1YLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtWCl9LG1YLsm1bW9kPXVvKHt0eXBlOm1YfSksbVguybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxBRCxFRCxiUl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihtWCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LEFELEVELGJSXSxleHBvcnRzOlskWixwWF0sZGVjbGFyYXRpb25zOlskWixRWixwWF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhtWCx7ZGVjbGFyYXRpb25zOlskWixRWixwWF0saW1wb3J0czpbcngsQUQsRUQsYlJdLGV4cG9ydHM6WyRaLHBYXX0pO2NsYXNzIHVYe311WC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dVgpfSx1WC7JtW1vZD11byh7dHlwZTp1WH0pLHVYLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVYLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltjWF0sZXhwb3J0czpbY1hdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8odVgse2RlY2xhcmF0aW9uczpbY1hdLGV4cG9ydHM6W2NYXX0pO2NsYXNzIGZYe31mWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZlgpfSxmWC7JtW1vZD11byh7dHlwZTpmWH0pLGZYLsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOkhSLHVzZUNsYXNzOklSfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGZYLFt7dHlwZTpMXyxhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpIUix1c2VDbGFzczpJUn1dfV19XSxudWxsLG51bGwpO2NsYXNzIGdYe31nWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z1gpfSxnWC7JtW1vZD11byh7dHlwZTpnWH0pLGdYLsm1aW5qPURuKHtpbXBvcnRzOltbcngsZlhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ1gsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W25YLGVYXSxleHBvcnRzOltuWF0saW1wb3J0czpbcngsZlhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oZ1gse2RlY2xhcmF0aW9uczpbblgsZVhdLGltcG9ydHM6W3J4LGZYXSxleHBvcnRzOltuWF19KTtjbGFzcyBoWHt9aFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhYKX0saFguybVtb2Q9dW8oe3R5cGU6aFh9KSxoWC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGhYLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltzWCxhWF0sZXhwb3J0czpbc1hdLGltcG9ydHM6W3J4XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGhYLHtkZWNsYXJhdGlvbnM6W3NYLGFYXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbc1hdfSk7Y29uc3QgYlg9e2lkOkNELG5hbWU6IiIsc3RhcnRfdGltZTowfSx5WD1WUyh7ZXhwZXJpbWVudE1hcDp7W2JYLmlkXTpiWH19KTtmdW5jdGlvbiBfWCh0LGUpe3JldHVybiBHayh7ZGF0YTp5WH0pKHQsZSl9Y2xhc3MgQ1h7fUNYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDWCl9LENYLsm1bW9kPXVvKHt0eXBlOkNYfSksQ1guybVpbmo9RG4oe2ltcG9ydHM6W1tUUy5mb3JGZWF0dXJlKHFULF9YKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDWCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W1RTLmZvckZlYXR1cmUocVQsX1gpXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKENYLHtpbXBvcnRzOltBU119KTtjbGFzcyBNWHt9ZnVuY3Rpb24gdlgoKXtyZXR1cm4gYlMoeEksKHQ9Pih7YXV0b1JlbG9hZDp0fSkpKX1mdW5jdGlvbiB4WCgpe3JldHVybiBiUyhPSSwodD0+KHthdXRvUmVsb2FkUGVyaW9kSW5Nczp0fSkpKX1mdW5jdGlvbiBPWCgpe3JldHVybiBiUyhQSSwodD0+KHtwYWdlU2l6ZTp0fSkpKX1NWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TVgpfSxNWC7JtW1vZD11byh7dHlwZTpNWH0pLE1YLsm1aW5qPURuKHtpbXBvcnRzOltbcngsZFkscFksWUwsRVosbXEsQXEsalpdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTVgsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1paLFhaLFlaLHFaLGxYXSxleHBvcnRzOltaWixYWixxWixsWF0sZW50cnlDb21wb25lbnRzOltxWl0saW1wb3J0czpbcngsZFkscFksWUwsRVosbXEsQXEsalpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oTVgse2RlY2xhcmF0aW9uczpbWlosWFosWVoscVosbFhdLGltcG9ydHM6W3J4LGRZLHBZLFlMLEVaLG1xLEFxLGpaXSxleHBvcnRzOltaWixYWixxWixsWF19KTtjbGFzcyBQWHt9UFguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBYKX0sUFguybVtb2Q9dW8oe3R5cGU6UFh9KSxQWC7JtWluaj1Ebih7aW1wb3J0czpbW1RTLmZvckZlYXR1cmUoX0ksYlopLExSLmRlZmluZUdsb2JhbFNldHRpbmcodlgpLExSLmRlZmluZUdsb2JhbFNldHRpbmcoeFgpLExSLmRlZmluZUdsb2JhbFNldHRpbmcoT1gpXSxNWF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBYLFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbTVhdLGltcG9ydHM6W1RTLmZvckZlYXR1cmUoX0ksYlopLExSLmRlZmluZUdsb2JhbFNldHRpbmcodlgpLExSLmRlZmluZUdsb2JhbFNldHRpbmcoeFgpLExSLmRlZmluZUdsb2JhbFNldHRpbmcoT1gpXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFBYLHtpbXBvcnRzOltBUyxMUixMUixMUl0sZXhwb3J0czpbTVhdfSk7Y2xhc3Mgd1h7fXdYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3WCl9LHdYLsm1bW9kPXVvKHt0eXBlOndYfSksd1guybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6IndpbmRvdyIsdXNlVmFsdWU6d2luZG93fV0saW1wb3J0czpbW2JxLHJ4LFlMLG1xLEFxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHdYLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltGcSxUcSx6cV0sZXhwb3J0czpbRnFdLGVudHJ5Q29tcG9uZW50czpbenFdLGltcG9ydHM6W2JxLHJ4LFlMLG1xLEFxXSxwcm92aWRlcnM6W3twcm92aWRlOiJ3aW5kb3ciLHVzZVZhbHVlOndpbmRvd31dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8od1gse2RlY2xhcmF0aW9uczpbRnEsVHEsenFdLGltcG9ydHM6W2JxLHJ4LFlMLG1xLEFxXSxleHBvcnRzOltGcV19KTtjbGFzcyBrWHt9a1guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtYKX0sa1guybVtb2Q9dW8oe3R5cGU6a1h9KSxrWC7JtWluaj1Ebih7cHJvdmlkZXJzOltdLGltcG9ydHM6W1tZTCxBcSxxVSwkVix6WSxhWixyeCxtVCxQWCx3WF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihrWCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbZFoscFosS1osQlksalksdVpdLGV4cG9ydHM6W3BaLEtaLGpZLHVaXSxwcm92aWRlcnM6W10saW1wb3J0czpbWUwsQXEscVUsJFYselksYVoscngsbVQsUFgsd1hdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oa1gse2RlY2xhcmF0aW9uczpbZFoscFosS1osQlksalksdVpdLGltcG9ydHM6W1lMLEFxLHFVLCRWLHpZLGFaLHJ4LG1ULFBYLHdYXSxleHBvcnRzOltwWixLWixqWSx1Wl19KTtjbGFzcyBTWHtjb25zdHJ1Y3Rvcih0LGUpe2NvbnN0IG49dC5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoIi4vaWNvbl9idW5kbGUuc3ZnIik7ZS5hZGRTdmdJY29uU2V0KG4pfX1TWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U1gpKFRyKGVPKSxUcih2cSkpfSxTWC7JtW1vZD11byh7dHlwZTpTWH0pLFNYLsm1aW5qPURuKHtpbXBvcnRzOltbQXFdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU1gsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltBcV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTplT30se3R5cGU6dnF9XX0pLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oU1gse2ltcG9ydHM6W0FxXX0pO2NvbnN0IERYPW5ldyBlcigiW3BsdWdpbnNdIFBsdWdpbiByZWdpc3RyeSBjb25maWciKSxSWD1uZXcgTWFwO2NsYXNzIEVYe2NvbnN0cnVjdG9yKHQpe2lmKCF0KXJldHVybjtjb25zdCBlPW5ldyBTZXQodC5tYXAoKHQ9PnQucGx1Z2luTmFtZSkpKTtjb25zb2xlLmFzc2VydChlLnNpemU9PT10Lmxlbmd0aCwiQ2Fubm90IHJlZ2lzdGVyIHRoZSBzYW1lIHBsdWdpbiBtdWx0aXBsZSB0aW1lcy4iKTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdHtwbHVnaW5OYW1lOnQsY29tcG9uZW50Q2xhc3M6bn09ZTtSWC5zZXQodCxuKX19c3RhdGljIGZvclBsdWdpbih0LGUpe3JldHVybntuZ01vZHVsZTpFWCxwcm92aWRlcnM6W3twcm92aWRlOkRYLG11bHRpOiEwLHVzZVZhbHVlOntwbHVnaW5OYW1lOnQsY29tcG9uZW50Q2xhc3M6ZX19XX19Z2V0Q29tcG9uZW50KHQpe3JldHVybiBSWC5nZXQodCl8fG51bGx9fUVYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFWCkoVHIoRFgsOCkpfSxFWC7JtW1vZD11byh7dHlwZTpFWH0pLEVYLsm1aW5qPURuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEVYLFt7dHlwZTpMXyxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltEWF19XX1dfSksbnVsbCk7Y2xhc3MgQVh7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy5odHRwUGF0aFByZWZpeD0iZGF0YS9wbHVnaW4vZGVidWdnZXItdjIifWZldGNoUnVucygpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9ydW5zIil9ZmV0Y2hFeGVjdXRpb25EaWdlc3RzKHQsZSxuKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZXhlY3V0aW9uL2RpZ2VzdHMiLHtwYXJhbXM6e3J1bjp0LGJlZ2luOlN0cmluZyhlKSxlbmQ6U3RyaW5nKG4pfX0pfWZldGNoRXhlY3V0aW9uRGF0YSh0LGUsbil7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2V4ZWN1dGlvbi9kYXRhIix7cGFyYW1zOntydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhuKX19KX1mZXRjaEdyYXBoRXhlY3V0aW9uRGlnZXN0cyh0LGUsbixvKXtpZih2b2lkIDAhPT1vKXRocm93IG5ldyBFcnJvcigidHJhY2VfaWQgaXMgbm90IGltcGxlbWVudGVkIGZvciBmZXRjaEdyYXBoRXhlY3V0aW9uRGlnZXN0cygpIHlldCIpO3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9ncmFwaF9leGVjdXRpb24vZGlnZXN0cyIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9fSl9ZmV0Y2hHcmFwaEV4ZWN1dGlvbkRhdGEodCxlLG4sbyl7aWYodm9pZCAwIT09byl0aHJvdyBuZXcgRXJyb3IoInRyYWNlX2lkIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgZmV0Y2hHcmFwaEV4ZWN1dGlvbkRhdGEoKSB5ZXQiKTtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZ3JhcGhfZXhlY3V0aW9uL2RhdGEiLHtwYXJhbXM6e3J1bjp0LGJlZ2luOlN0cmluZyhlKSxlbmQ6U3RyaW5nKG4pfX0pfWZldGNoR3JhcGhPcEluZm8odCxlLG4pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9ncmFwaHMvb3BfaW5mbyIse3BhcmFtczp7cnVuOnQsZ3JhcGhfaWQ6ZSxvcF9uYW1lOm59fSl9ZmV0Y2hTb3VyY2VGaWxlTGlzdCh0KXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvc291cmNlX2ZpbGVzL2xpc3QiLHtwYXJhbXM6e3J1bjp0fX0pfWZldGNoU291cmNlRmlsZSh0LGUpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zb3VyY2VfZmlsZXMvZmlsZSIse3BhcmFtczp7cnVuOnQsaW5kZXg6U3RyaW5nKGUpfX0pfWZldGNoU3RhY2tGcmFtZXModCxlKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvc3RhY2tfZnJhbWVzL3N0YWNrX2ZyYW1lcyIse3BhcmFtczp7cnVuOnQsc3RhY2tfZnJhbWVfaWRzOmUuam9pbigiLCIpfX0pLnBpcGUoVnQoKHQ9Pih7c3RhY2tfZnJhbWVzOnQuc3RhY2tfZnJhbWVzLm1hcCgodD0+KGZ1bmN0aW9uIGUodCl7cmV0dXJue2hvc3RfbmFtZTp0WzBdLGZpbGVfcGF0aDp0WzFdLGxpbmVubzp0WzJdLGZ1bmN0aW9uX25hbWU6dFszXX19KSh0KSkpfSkpKSl9ZmV0Y2hBbGVydHModCxlLG4sbyl7Y29uc3QgaT17cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9O3JldHVybiB2b2lkIDAhPT1vJiYoaS5hbGVydF90eXBlPW8pLHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2FsZXJ0cyIse3BhcmFtczppfSl9fUFYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBWCkoVHIoTEUpKX0sQVguybVwcm92PVNuKHt0b2tlbjpBWCxmYWN0b3J5OkFYLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBWCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TEV9XX0pLG51bGwpO2NsYXNzIFRYe31UWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VFgpfSxUWC7JtW1vZD11byh7dHlwZTpUWH0pLFRYLsm1aW5qPURuKHtwcm92aWRlcnM6W0FYXSxpbXBvcnRzOltbQkVdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVFgsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltCRV0scHJvdmlkZXJzOltBWF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhUWCx7aW1wb3J0czpbQkVdfSk7Y2xhc3MgTlh7fU5YLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOWCl9LE5YLsm1Y21wPXNvKHt0eXBlOk5YLHNlbGVjdG9yczpbWyJpbmFjdGl2ZS1jb21wb25lbnQiXV0sZGVjbHM6NTQsdmFyczowLGNvbnN0czpbWzEsImNvbnRhaW5lciJdLFsxLCJ0aXRsZSJdLFsxLCJjb2RlIl0sWzEsImFyZyJdLFsxLCJleGhpYml0cy1jb250YWluZXIiXSxbMSwiZXhoaWJpdCJdLFsxLCJzY3JlZW5zaG90Il0sWyJzcmMiLCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRZQUFBRTJDQVlBQUFEcnZMNnBBQUFveUhwVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXJaeHBkaHk1Y29YL1l4VmVBdVpoT1JnQzUzZ0hYcjYvaTJKcmVtcXJuKzFXaTZTS3hVd2tFSEdIUUlETy91cy9yL3NQL2h1dFpaZEw2M1hVNnZrdmp6emk1SXZ1UC8rTjl6SDQvRDYrLzFMOStpcjgvTHI3OW8zSTU2UjNmcjdSNXVkem1MeGV2di9BWC9jSTYrZlhYZi82VHV4ZkYvcjZCaGYrakVCMzF0Zm54MEh5ZXZ5OEh2TFhoWVo5dnFpanR4K0h1cjR1dEwvZStJYnk5VGQvRzlibmsvN3RmbnFoTVV1bmNLTVVvNldRL1B1WVB5TkluNytUdisxOWpMd3Y4TnBNS1FYMytmUjFNU2JrcDhmNzY3UDNQMDdRVDVQODExZnUxOW4vOXRVdmt4L24xK3ZwbDdtc1gzUGs2KysvRWNvdnI2ZHZ0NGsvaGNPM0VjV2Z2M0Y3elAveU9GOS83ejM5WHZzODNjeVZHYTFmRWZVbSs2OFowaHNYVTU3ZWoxWCtOUDRXdm03dnorQlA5OU52bHZ6NDdSZC9kaGdoc2lyWGhSeE9tT0VHZTU5MzJBd3hSNHVOenpIdW1ONXJQYlU0NGs1YXA2dy80Y2FXUmpxcHMyNDdtbVBOY29yZnhoTGVmY2U3M3c2ZE81L0FXMlBnWWxycXYvM2ovcWR2L2p0LzNMMWJVeFI4L3paWGpDc3FyaG1HVms0ZmVSZExFTzdYdXBVM3dYLzkrVnArLzBQOEVLcXNZSG5UM0huQTZkZm5FcXVFNzdHVjNqb24zbGY0L0ZuajROcjV1Z0JUeEwwTGd3bUpGZkExcEJKcThDM0dGZ0x6MkZtZ3ljaGp5bkd4QXFHVWVCaGt6Q25WNkZyc1VmZm1aMXA0NzQwbDFxaVh3U1lXb3FSS2JuVldhTEpZT1JmaXArVk9ETTJTU2k2bDFOSktkMldVV1ZQTnRkUmFXeFhJelpaYWJxWFYxbHB2bzgyZWV1NmwxOTU2NzZQUEVVY0NBOHVvbzQwK3hwZ3p1c21OSnRlYXZIL3l5b29ycmJ6S3FxdXR2c2FhbS9EWmVaZGRkOXQ5anoxUFBPa0FFNmVlZHZvWloxcHdCbEpZdG1MVm1uVWJOaSt4ZHRQTnQ5eDYyKzEzM1BsdDFiNVc5Vi8rL0J1ckZyNVdMYjZWMHZ2YXQxWGpWZGZhWDVjSWdwT2lOV1BGWWc2c2VOTUtFTkJSYStaN3lEbHE1YlJtZmtTU29rUUdXYlEyN2dTdEdFdVlMY1J5dzdlMSs3NXkvMmpkWE9uL2FOM2luMWJPYWVuK1AxYk9zWFQvdW02L1diVWpudHR2eFQ1WnFEbjFpZXk3Wlp5NDNJNXgxVExudEpsYVMyWHVGWE1MYVplUVd6MjFybnFCazl2UEx0M0h4cmU2WjVZUG5NTWtITDl5UGFIb1FyMm1mT1B4RTNoZnBkMDEwMkZwazU2eU00NjlUcjY1MzFVWUxaY0cvODQ4TzdSajNMU3N1RmRZNXRvMG5pdWxmWG5rbHZJK25xUXNCd0JkZlc4bWRkOFdvbStzWk9vOTU1Nys0b1lrS0w5bG5qWmpKeUQ1T0hWem02V3VXYzVjWlplVEp5bnZ6Zk80MlljNlJvOFJyU0dTUG5sTVMyM25jUW0xZkkvQ3hhVWVUaTN3ZGRzZ3d0cDM3YnB1eU1YYVliSnJ2MVlBN3VYVGFjYlQ1ZERhM0t6RENtMHlmNVV4TTMzYjVRazloRjFuNGFaM1NSU0VzMjhmeldJNlZtZUl5V3hzNDFxK3JoN1dPQzBhVnpEaXVLL0dQQkVRd1NtSkNPbit4RVJhWTk3TTBFYmJ2aHppdG5heW9MR0VQTUpzdTFwaWtRZmdOY3RsNlhzSTF0Zk5saDF6M0c4b2RwS0Z3Y01odXk2UDRsRVRRT0h1TTQyeTdCN05TQ0lPVDdwOVh5WS9IT1gyUWlLMWZSWnoxSFlFT1hpWWZrck4rYVJsdS9oVmZSK1JtR1J0eVRJN25abW9pY2c3L3VaeUQ4RzlEems2RW9Ob3NhR1BhZ3g1WlJLTmNZWjhXem43aUF2UDliUFpLR1lrSnZjTlBORDFuWWMrUENSd1BZMVF5SER0YXRYYzZyWEN4SmRKYlpPUk1oZVZkTEIrYTB1Um14SVJoY2xrMk9lMGJvY3c3aXlFSitaelZNRHlnZitkeE4yWWVzcnJyL1hUeU5pOVdwbjU5TTAwM1dPTkJTWVZFdmRWNkJhdUhQWktERE5XR3hWWUtiZTRXRWNTY0d3K0U2RWt4c25KMEJNOXRCS1l0NkFiVnoxT0dndWdJZmZ2SEVUNkpGb0w0d1Fjem1DeUs4eldTS01haHdmSHlHR0drcVlHRU5ZQlRuT0RqTXRjWnhGWTJiWVZjQU9RSTJJaHQ3dU5wU1JGOWtSQ2RDWVlQT1RyR3lBL1ZyY3VZbUhjWGErRm5SbHlPWW5adFZEUzNqd09vZHB0U2ZBa3dVOHlOeTZaMVhqQUthQll1Wit3aGJVa0ZBaGFBL1JKRnZvK1FRVmJBekN1YlNjRm95ZGtKcE4vYmlIbUhJSE90d3VodG5kT2UwbUV3UWZMRzhoUjB3Z2xLeFJKMjJKeEUxQ0RmTjRUZXJkYndFREd5UFZXZERzdEFHTzJDOExiNkMvbVJnUExtSmg0Z0tyV3p5U21nZjRGRmxmd2o1Y0pVRkRrS2t3T2tYUG5jWTFaSmdLUEVWYWdHNm5Rb0pTSWRrc3hkOFZRTzFteStTNGttUzJGeEJZRVZOWXVseVFrWTVGUS9pRU1iNmNRanVPc2t4SmlsRmdETW96dzhLWUJHVkU2UmhpeDFoSTl0MjlrWHlkS1lqeXpMbFloSTJ1WXlwR0NnZU0xQVhmZUd5QTA4OU9rcUp0TWVtZjBpMXdITUY2K2YyNGtKTWhGaEVYUWlqZ0NIYkVPNUJ2OHVDLzVJbUlsQmdPTUNtb0NnMlA3VGFpQjNBRUFCVnRSbUpNRkppU3pxR0hBS2E3dUFVT1BCcHAwQm1TUTRnVU5JUk5mWVAxRlZOemMvRDRBZDBHZW9vMHJVdTBDWVJBQlR5cVd1Mms0VUJUdHRYaFdJd1JOckFzeERqSjNyZDFYN2NJS2hXdVRLU0FTZVNCbUgwaVl5dFdOc0FhaGhybWpsU1dWV0NMejJ6SkVPc1k5RlE2cnd2YmViVjhpa0V1a3NsbHlMTkNOc3phQTZLWUozeTJMQWN5MnVSZzB5WmhXbXVpVXhoVUVBTFZaSWxRUGNNVFZHelJQc3ZMb214Q2NGeEFhcldSQ3d0YTFDRW02VFBnUXV4aS9qYTZ2K0FBZUdzUWlxdzE4SXRwWVIwSmVPQ3dXQVVsTFl1cjJLc01JMG80bklOWE41VFNZK2h4WjlYUDVGcGRjQ2xlZ3NFUEhZR0poNFVqMlVsWWcvTnJsR25Nc0ptTWpWTGhaWUVYVGxtSURGVm1XeEpTam96QU94QmNxMllQbFVVNDNONUhVL1lhRnYvL3M5RVVHdGtzbWFyb0FkTzhMQlpFRVp5SWxka0pROVRCclJSOGNVcmJJWG9NUE1rM01TZ096Wm9GRjdCSVhGekZZR3FOWnJCeDZ5TE5lZ0VzaW4vcUd1SUt1amh6UEhUbXlSSENFQnJsbUVqUjhlOVRsa09kbmxhdFpQYXVud3dmam5kdzhJMW9XZEFiN295TWs0OUJlcVhIUEdNbGxFbU9VUnNBTU5FdzM1cWhBbndCeU9jZzhrRE9UbTJ2NFl3VWhnS0hJQktVRnBDRFBDL3F4dFA1NlVHUnNZTDhGQ1E4Z0xUbUlucDh4S1pBdWRNQ0k4c09YZkFPb0FMazhEZytWemphV3AwcEhuQWVSNkNsbTVhVFppNVhURjltL3oxN0VKMW1NY29sNUF4MU1KZUFPd2NxOTRCMlJQUWdKUWhqVUh1Z1ZwQnlNZEFXNEFHV1VPSFB0amdJOC8vS3lYbTNLQXd4dzJRTlFRaHFRTjhGU1gvbm9FYkdXNVdBOTBhN01yWGNMVzJWb1NpSXlDZWt2ckgrVHhLb0V6ZzFpMTBaVzJEcEc4Z3pZZDNkNEkyOG1nWFVoY3FSZGowTmlpWGVRQm1RK1M1b0JxMVNRQ1BQRnZNSUV6RzVGb3JTUitJaEc1QndpT3l0bUU3Q0FySjg3T1RpSU5ZUmx4Szl6MzVtWTk3b1dJZ2ZvWmthZ01TN000SUFKY0M0ZG5wbUJjb3VMNllkSHR0ZWt1Q0JzcXVlQUpPUTJxeW54REhzc3pBRFlUSERCQndobkhwVXZDSWNObVBZSjgyRUlnaEl6U053dmg2Mi9xRnN3aGFlVGtDSTBZQ3hTSFd5WCtyOURUbUtCVGowYjhFQTRzKzRzQ3graGM1K1JhWHZESW9oaFk3cTE1SHhqNEpwS1lXYUd5VUVVeURxc1JreDE2NTNGdU1JV3hYVkZ6RUdaQ0kyVEpYaGRRaHpBVzRDcHVBSHlaUlJvTkFZTC9SZ1AyNUVSZ1hrbzhHZmVpbStVUTBmQUxjS1NqT0NCUWJMdDluN2dhdkNUc2ZEY25qUzE5QVpWaUhuTUZvTWY4eFJCR3FnNUdCRGZnK2w2dzAxSndtNzB1MXRnV0ZXZ1hDUnpKdjJSTlEyR0o5WW5pTG13NTBSckpraU15UVZwMG9KS2tUUXFzczBuSm9ZbTNCVUYvRUM5Nk1ZRVNVTkc4MHp4elJEQWpHdG9PTHVxZFYrRTJFbGQ2b0g1S0tyVGxmRDEyWVZmWHZqMU04OEJrWnNuQ2xqeXhtSXlVRkszeXRvTkxROHFzVStFMXNCNElGZzJ1aDgrUkJJaEQ4a2VSRGh2d1MwdUZBVDJVK2FwaXE4Tm8xZ0RWZ1hycGVVRE0yRkljMENleDlDMHArUEJMNklSVGE0TStkMnJLeWRFeW54Z2pSMENia0VhTUFkVnl3dUpyTHhkczQ3c3hYemlVZ2xtRm40bHdCazdBZEhqYUpzUGJTMnV3R0FOeG9CZTBhR1FGN0JHSEhrVW9pY3hUd2ZSVkVFQkFJb2l2NHBGaWZEdEt3NG40UzBHRTl3SmRWZ1JiRHRuczhCNGlhVEtRSE1YSllJVzZ2SXNUSzdoaXVEQ25RRkpKZ3k5aDdjR1MwRzV4RnZKdnFhRWgzSW1TYmRJbWFxVWFNMXgzNHJjUVBmaUk5Q0h2VWFGanczbXNoS0FneGhINXNIT0FEazBFRlBBcVI1VmhkZlgwdkp4WmdlTUVpNmJxU01mRVM5ZHc3RWI1Q01sUjdrZDdEUElWN0lCRzd0RUNaZndHZzBGSEFjVGZnakE3YkErdDZKTUk0eHRrK25FVGx5L0lJMkRsMDFaTXIwVTRuVURuU2o5UFVIOUtqa1A5VndFSmk1aGdHK090NkFZS3ZpQmJDRE1NdFFtZHN6a3V5b3RkK0V2c1g1UU1JbVA2aVg0V1pLTzlRZWxPMkFaOFR1NU9HdzVVQXloK1FaUmpndVhiaUJOZEVsK0d3NktDNDFFa205aU9aQTgxYTlSMFp5NExpaEFoVzFXRm9Ja3NSdkUreWkxd1Zrek4yUmpCdCt3dGdTU0tndTZHM0d5QWVPN2hDbEhWb2hib1lhaWJKQk5Sd0EyNW83Y1JsZVN1MWMyaGNWbFpnRmcxcDB4bU9TMm5ad05hZ0dJV0JYUUVpV0ZZNjdnc0RMWlRUQzhOVlZCeUg5dUxXRjN5SHdNZlZSZDEwZklsREJEQmFhUzVsQlEvZTdtempRMndMWkMxNzhaMnovK3J2c2Z2bzNnSFppM3lkUlVLTHMyU1JDTWpPRkV2Q3BEeU1rNFR3RHplblRvNEh0NXRCVjVOdWdhVE45OFo0bTI4WWZwQ1dKc2Y4OGtmU2pJNmdUK0lrVENTSUF5dXJic0J0ZzVlRE5sL0dWdHdXcTFEWlYxZ2crZGpoQ3p3enlwTm9OMFFiNStnTFhVdnZRVjJnWDJSVmt0ZVV5RVZwbXFRbnZCSjgrR2ljZCs0VHdidW5RVDJ3RDVCV3R5UkE4TlZCdlBReURqSTlBYXI4YUFSV0FzanR4dkNFVjRFRy9qc1JGSFFrUUNFK2VoMFYvQktrbERYQlhRTU9GWFVWcGdGbVNuWWtadnFtNzhia1NBZEVTbkk2VEp4YmhOUG5ManBnMnNCSmNiTW1nOU0wOWlOenkyN2NCRkhYWlU4Z1I5eDNTcmFzRWlCbGJ3eFNYNEpXMFhrQ25rZUltSXhiTEZIK1RFNUNtWktXVkZHc2NqajNFdTRBZ0RJWUxSMkNVT3BBL0tESzJMWXVZOWV5cXVxeTM0NEY1TEI4T2xTN3lQY1dMSTdpMUVkZ0cxZmxWck9LbUdqTzhwUVdtdjJuaUlOeGd4NDdUUVF3dnpYUHd3SDZKUWlvczQzQis0K0Q3Z0JQQkk2WE5Scm9DSUdmS29xUkljaEVnNGlRQmgvWUpsblBUS0VCbFNDSFlES2h4a2tvVEdqM2hPd1d5UlN3Z3ozbTg1U0JrZkNGQWVoVnMycG9tWHFrejlRRUExK0FJS0Jmek5YY2djalRraE1xOEtDbjRra2hoQVJwWHJEUEM4eUJ5OHhBRk1aQmJPWkpjcWY0ZHd3NWloQ3RFaEpDM3hDUVpQUm92YjUyYUFPdmZuN2ZCSzBWY0JqVkZ3UEoybkl3NXNWN1FYREVKQUVFRW92Z2h5NG1tTk1iSlM0YXJZU3JxcS9uc21TNFg1Z3g4TGVuNkFIN3RNQldiZ3NmZFc5UlBraHNrTmtMdzVZdGNCSmN5MmFxd05UMEd1SGRZRHBUVnhtc3dmQUZRQitva3hJUUx3NDdWMjhKTTF4REdlY0ZGM0dlck95Y1dBQk9NdWlHZ0VFS3BxeUptUWF3Tks2VU9LR21JakVyYVBlRTlHdmJoQ1hUbDNNcEoxTkluZmlvaEEyeTFrUEs0UitZSU00NTFRVHVYZkNIT1ZFWkprUEpQVVdkSUxNR1JCckh5cjdBVjZIVTY0clRwWkttd3ZWSE1TYkhleGVndWJuVU92U09uRXh6RVFZeXQ2OFpMSENTQUxpVytDQkFWTWpzWVpuczZXamJ2SUFVTVdjR015cXdrSGtRZ2VFaXFxdmZDb3dQaVJlY0pUZGVVYmdnTGlPb1FJeVMzVFZGM1FzN0FpdmpPZnM5L1NvbTI0QzBzYUlZZUxvbXpuVlVISEVEa3o1cXg2K2V4NUF4ZXFRL2haZ1pGd3ROa2grY2c2VEdOdFRTVmY4TnkvRWgyb2craERQYitxSnZZblFNdkdjckVFUTdWNEx5ZTl0aHU0YnB4RHdBMmdWVkJCWHBWbk12L2pKMVhyQjgyRFp5RklYaS9CZUJMdUJUV0hZcS9JZWlRVW93TDh4ZGpucUp5QWRBdEYrUUZRc2taalNDVkRyVWkzaEhLekRJRmdzanpDbzhyd2t6M2pxdFRIdUYzRGlXT0U4YXhZSHV5b1NJSlVWSFg1N3JWQVE2MzlVQjFzVE92b1NEakdCazcrNjR2TnRVODBnSTJIR3VoQXhOclZac0VKMG1QTUlCR0tDR3h5cGZkZ0xTN1B0VU9kcWdocHg4WmpvVlIzTjJUaHJLNUNZK09CQ0xvMXZ5LzFSU0V5RGNrVytEZmpCKzlJamZqQWxTOUJ1bDRFbmJ4aTVTR1lReGVHOTdXK3FDeVc5dmFFa3IrOStFOC8vZTFIQmJ2dTY2ZGJUS28rQkZSeHJkdHZaQkI4cHZJTU1ZazZSR2FHcSsyZEZqc3FUb1Zuckkrc1hSZlYxNGlGR0JGenF0MGU2ZE5LbHRqV3JvQkM4RXJOR1FCenVEczBiM0QwMWc1RU9wWHBxcXJONExRclYzZmlDb0tpbzN1Z1JrZ1UwVG9BYzlJclJCRlpzaXpQZ3pNVzh4VFZLckEya0k1OEhzYTZFNWtXcjBzSnNBaHJxQm9DdjBraEpIU1dhb20vRzFsNFN2UG9WY1VKV1h1RkpnRVlHZkJVeE1aZmtoK2ZtOFl6MG9oNExBaGNva0pKUFdtVEVQQ3oxMjZxYW8zWmd5YUVRQnl3ekNJRW5mYTJ0MHBSOEF5YVBMM1NrWFF5Y3JxWG15S1lseU93d3Bmb1k3NUdPYUpBbURFWXZnRmRMeVN1dzk1RldFRlZ0Z3lLeGF6QkxQVDhsbWJFNlNIclMwaGVWWFNnSFltZXNRWXJJYWpKNXZGWVZzYkwvWTZFWVpwNHh1YUtlUkVtYUNaQm55bDg4R2FrWXpEdWM4Nkk4UENBWEJHVmJuaG1LaWc5cXh5em5CbUFQQkhqcUZrVG1zQjVWc2lKMXlReVpjWmhPU2dURUlBV3lIUVZmeG93d2t3RFdFQTBzdTRtd0lYVVRIUENtb0N0cXJSa2tyZ0tMREk1R1dBVHhzdFBocU9YVlpCQzdUaXNRWUIrTjZrRVpSdExLaFJFUnFPL0ZvTWxnUUU4bnBYd3cvc3hOaWdROXE0cXl1d2xtRVltWm5tUkhzbDlNa2RDUytVVnhMMzJFdTYrTUNMM2JDUUhJUWoxUWFYNGhBNXVwSkx4VUVIaUY0YXV6SzAyNmd4RnpqS0RnN1djakRNbjQ3UlpodHNrK3ZGM0NQMkw1Z0NwNFoybG5RazBIaUZmTVREY3E0b3FYY1owcXV3bnZRSTlWTmdYbGtsaHk2RmNaRE9HK3c2YnB5RC9zTHBIbXcvWXlDQ3IyN1kyK0haUCt5TFlJME1IdUNkaWhBdGdFd25aQ1Y1V3hBaEJLS09YQ3BGYVlvRmlYM0tRaXVRL09ZS2VaUVdRUE9wQVdOeDg1WXZiM3VvNVdOSVRnMEY2bVpJd2lxbzFoUWdKU3htTnQwSldGdEV2Y2hUV2tyUHlpMXdEMUhlOGVtTkVSblZ0MjE3cHE0a01aaDRZRXJvZmhCeWw5NlpLVmRjbU1oSUk1UTBxSTV6OHdXQTRlVjYwQzdPWjRNb3J6VVRLemp1Snk1MmFzT1lFN1J3aVJyVEZGQUxFS0psZVZVeU9qY1dmUkNaTVN3NlNNUVBnREYrN2NtSFBYM2NjL3Z6Wi9jMDNYbUhTRTV3L1NOMnZjdVV2cjZwSGpDZHlxa3lrbExDV2MyenNYY0tHSTduZ1FwQURhM0VhR05xVGdsSklBcC9Bc1FOTlVtUFR0cit4Rmp3Kzh2Z1FGUjFRZ05HeTdHWUNRbFJneTB3U3JwKzhnZUlJRER5c29UcDIyRThjVzBmanNjNE5FRzU0ZlRmbFdyVm5KamRWdER0ZEQ3SkxHYWlFdmQ2eWpKc0I3Smloc0hidkdkT2pLaG1rc3lDVEtOVStISFN2NG1Rd3dHbStUWCt5dFdFak5obUpvb0Z4MWdzMWZGR1Q3dUhua05mSnczS2RJR1ZjbUQwdWhNYmNJaWhNaUJuV2E4bUtTcVdOeXVPQm1WZktIQjJETnNaVHR6V0lrUnJYMVA0S3VLeFNMZmVPcmszeUdXbU8zMVB4a2ZqUk5oekQ1ejRCTHdwbUl6dTFWY2ZQQUgycURRTkhRTmxSdXd4UWMzS0pIcWdGY2VHbHF0MlUzaGx3V0RGQmZIaEcxSWdLOXlTanRPd2JBZ21PaDJNMlVMc2tMRlFKaUYvRk9ibDJtVlRVSVl6Ynh1RXlUTE5YcHFQRlZKQVBTdTVXNE9CbHFwS1JGZHJTYWRwSkNVYzRnaWk3M1NuQU1NQ0d4c0dPNTFLODRhb1hEOGZ6NTNhczdQSElTRnhZVkZCU0ZXaEZuaHRHeFpCbU1nVzhkK2lKZ1UwR0I0SGF1ckZmQUFQTXBuSWZRczJQaVhzYVVBYlVyRktBcWNoVWJ4bDNlaFUzVkF3MWRMc2pFTXRaU0VVaUorTVN4emI4T2pQVUNJUEpkR093eXArS2xYeDJmM3JEKzV6YlUwRS9FVno4K1ZYM2VUbXJDd0UxTE13SFNHUzNlVms4OHNjODQvTWJFZHIwZEw1b2llQWVpSm5iU1pwVG1TQkFpSHlwUS9VbVZvMmxlYzBPc29tZ2N1U3hRUzRpdmlnVUhTcS9Cay9VUnVJWkE4Q2l3UUdtYlpFSWhWbzVvbHl1dDBsc0VCQlhTSlRXeVcwcnQ4UWNUZlN6YmFmUzFsRlR5V2lWY0ZSUkNXN1dQdWtjUWxHWWtyUVA1RXdJNlBrQkFJajE0R21HaGp4QVNFT3VDekVLd2o1ZmpRcktoUWtpNmswYmhUdy9kQTZwUUp2RWc5NVRDVDZVTk0rTFdVcnlIS2ovaGhRblRSekFqT0pDWkdRWWE2bUtmREdKQUJONmZXdFBFZk84a3UyQ0xrRTlNT2NnUTVCcFNWUGtXREVMclk2dHpRT3k1THlaNTVIOXY0L1duOC91LzRyV24ralFoVjZBSU41ZWlCRDd2NG1tRGZlZUViQnYyQlkrYS9EYUdwb3p2NjRlZEs1MzBoandONFltTE1nV2FZcHJrTy9ydUpWVSt1enBaSytleWJtOGR1bXk5aENLWkRvNm5pa2g1VHI2d3FuSkROZ1p1QlQxVFhqVjdHQVhkV0FZd3Z1bzFZREFBeW40dVlsbkRiMUwzbFFWWVZHQy9hSWJOeFlDMkxQWCtZQXhSS1BhUmUwbGhMbEt2OU1EUmg2VTJFVzlVb0FBeHV5cWsyR3MwaHUyWjlaU0ZwTlIwVWNzT0pNV3NXVEF3bGpNUUZON0JSSitxV21reTZXaUFmak9QZ1Q0eEFWbStCb0l4b2JoNDlDVENQdnV3QmNHcHgzcUhMc3VMcS9aMVFnSm10WE5jc0ZhRFh2S2FuQVhWUlhVMHptMVNkQlU1c1hUSTBtU3d6S2poMC90WGIwNm5WREV0dkxvVU1aUkZZaEhyMWVsdmZESzR2QnZVTCtOak93Wmw4bEVBNnBMeG1ISTc5dTJld1Z4K2JKanIzcXZIV3ZFSWFsTDhpQjlHMUJ2dGNicFZRZGZvQUorQWZyN0NrRDN2dzdsbnlOWVl2UTNJZnhMeGUySEVQNFI0SWdUTUxJaFhtdFJpMTZPK0dQOGVDeUw5Y1pLVjVRdkQ0OVZxN2FySERpQzBCUEJYcVVjbkVCQ0E3SUEwRm1NV0FodGwzT2hzMnRsUFZ2SGZLcFhFZ0VhdWpvc0pyb1kwdUUyUFZlVlptQk5FQWpFUzB1WFpBV1hDaHNwNVJyVU10eng5QW9kbUNoT1JPWUdhSTh3Vjl4VlFHQitKRGVwL0ppdmpGaHFUTUNEZlJ6SDNSSVdNejJDSEtnWVRRVzhoVGhPRlFXMHNHVG9Eeit4eWwwTmZhQmNVaytiL2k0UURuN1Vaa2RoTlJIU1l6Z1ZHRGZ6K3ZiYTBVZmhVNlhFREJiKzc5cHpqM0hYcmRSVnFWY0RrTFNlNGg2aUdyRXd3SURBWk1QUFVIcDdaU3A4UllqU1hnSmw4bE43bnR5bG81SDBzNEM4dXFud2ZKZ1dGYXR0cVAyTlZHcGdkbjZkWXZBeXdrcjlrdHEzU3lKbmlBT1JvSjJEQTkxalFmRVRKS1J5UXJZOVk3MTRYbEQ0WXAzZFpMVm11bjZwbFEybHN4VHoxWU1HNnJVaXNDN1NYcDE3dnF1dmkxRUFhVW5tVUFvR3hjNlRzL0xaZVF6SzNsUGNienEzRUNmbUZPL2VGay96UXdyOEtjTGRQMDJCUDJXQSs2NjVKekZBa0JiMWRCZ3FHWGFDdHZkRDlMWXdITkFpR01lSG91YlZYNkRkL1F1MkEzU1laZ1QweHVnRm1lMEE2azBZTDJybkhpU0RIOHBTR0dzbi9WV2RtV1duTWlnc2dEZ3ZTZDJDVzVvV1RReG9FdnBGRUJkR1pPSDUzMlFFTW9EZlZIb2xKcXdrTlZXbjFZZER6a0VwRXYvMXFwemVFWUpqYWRkaEVwblZ0NkZPeTJxM1JJWGNBUm1uOW82STJ5RXNaOXl2NThnVmJRL2tHbGxwaG5ZelNaS2x1NWNoR2dyM0s0WG5BUno1Qm1HNk10azJjTll3aVhaUXlBaThPQ0RndUFwRVB0Uk9jTkRPZlRMUlJPQmMrTHJJRFhpQ0pIMGFkSExnempDWmFyQy9nOHIxWEJnc1pneGpQbTVuOWZpTk96TGVEOEhEaTY5ZlM1VkV5R0U4ejRwMXFRbkIzOVh3ZVJQTElRSFA4aFhiMEoxNk5Sd2pWL0Z0bWtwcGlIMVNLbDMxY1FIdnh5Y216QWg0RldiZzRueW55ZzdFK1ZCaGJEUVB3aStHYjhBSXBrZm9yaklENlExV29heUREaFBjWHRSQWhzSTI2V3Z0cDVkWkEwNFZGY2VqcVg5cGtDcHEwNTdOWmRidTlsZnh2cjNKREtzWGlKd3BhZ0dNMmlWSTJrSks1b1dRaDRmMDhBNW9CYVdwQ1dQQzZBQ25xd2hUVm8vcGhtTUJ3U1VkcGRNMVVUdmNYZlg2Qm9ZdmhDU2VBb1NlYzN6MjNIdFZuWFIxdENwcjRuRDBtRFVjRUVhNzR0WEIxalQ3dDQzNGYvelovYzAzL25FSFFQY1JWUkVXVEt1ZThDSExrclNCMVpCQlZhVWlnSzBBS09SNCtvV2hnRHJkOExGSjdFeGZxQU5abzIvcWNBbkN5cXVpRnIyYWtoSEtSSEx5YWlsUjQycEdqZUZhTUhkb0tCd2RZbDRkSE9GRDdUZ3RKKzljQitIaXRWbU85OFIydC9xcVZNZ1BOV3pPOWJ4OFhnZ1J3Y0x4T0RiQUNwOS9rQ0E0Y2lJNTRpQ3pmLzRZZUpycUF0N0k0bDdVMXhZeUQ2ditYM2dMZ3RLbXFUUUxrU28ySlpFSjhTNjZ6a3daNWxpbm4xajhya000TllsUWg3WWxWaW5pKzVxMzZwMktmdlNhUWZiaHFLcll5SjVkeTJjWElkZmt1RW1CVVB2Q2VNdktYVzNZc0JMWWZ1WTlJSGFPT3V5Z0FqWExRWmx4bjAvSEYzQ0djaWQvOFR6WnUyenc1Rm95SityZ1hjMTRaMVE1d1I2cDZGaktWSXNoZHA4MVNETENaS0dGdlhielF5MXorRXVmbkh5a1IvaDkrcjlSV2xtTjhpZ09pMVBaUnFaM2JhdFVCYzRlTEtpNkwwRTFra0FkTzlBWkNCdTNrOUtOeld0N3E2azNsOHhnbXRXbEhkUXVodU80QVdTOEltSXNqcW0rRGtIa3JGdWdUQmVhMHplYnp2ZlhMWEswY3VvTnEvOVdZbnovN1A1dmlmRTlMOXkzeEFqNFJPUS9EaW1EbUFpVEVWNERJbDYzditSSW1ESDVaZE9STWVTWnJuZWUxOU0vbklEQU5yNERhUUw5cTF1TURBdEw0cWwrZGhqZVA4UnJCbkkyWENDejFpUUxwdHBNa0NERWZuTmVMZXNJeXNKdE85eDJjWXhSTzlITWNvM3F0Y2NxNDM0YWNZUGdZbUlEWkJRR0xNRmRXU2h0ditDRUFUWjdIZW5ZR3BCZDUxOUFhUlI4S3dqRFlRdUZBZmJtZ2xHRzc1TzBxMDQ4cU85eXFYWUdHdXN3eVhSWHgwUkl1NkJHV2ZqYkFxRjhjTVFXa0FUcTQ5ZXVkb1pCc1RQY1BodnVOSlBVR1YrN3RXSHBwemIrSGU3RTk1bmdPU1FEbzJ3cjk3NTBLSVhvUWRkbEZVUmlid2ZrM1dCcHFxcVdvVWt3TUJOWXpVR2xpTkljendCckFNdWdNemxOdEFMUzZwRDFLdVlhMU5KS1VISjViTlpONEQ1S051eXRYc1FiTXBPZzB4K1ltbWllYWI3dnVDVDJwVEl6NEdNSm1HM0U0dFgyUE10NVh1OHpDU2lOaHNyME9nVDBObnZGRVVnQTVzaFVwQjNxMG93YTU2dmlxdlZsRjUzQ1BGc05TaVRNK25ESFVDRXJWSlJuSndxekN1cisxVjJjSGV0b2cvMTZDWm9rbXRxcjBpei9xSXp6L2JQN1RYM25kOVdkSDE5N3BSM01KZGF1N3BYUmFZQUp5NytCWGlrVk1tZnNqQWkxUWZ3VXNtWm9uOWxPUUhHb0tGaTBwM0xRWUhWNFNlM1MxQmFyblhmc3RBdnF3a2YvcWxxcFhpL2tJZFpheHVZTXNTYlhCeDVtMGVHS2lVQUNKa2tVUUZ6MVEzQk9MWk9xL2pnU3BXbi9ITnFXSkF2aUFMUlVsWmtZYW1RRi9kV29SRmpoUEdUUjFMYWhSbGtOSFRXRlpqanpIQWNUbFk1R3JWanBScENDbStSNG03ZTkwdzdWSnh6Rzk5RWtaUTlzRlkvQ3BOU21QV2xaQkxkaGtLcnhvUDM5OEFkaXFub1dLN3laWVBIYW53c0pWT0hIZEJmMUl2WWdad3VuUWEyRC9LMUhVSnZVMjV2R2F5bC9iYnhEWGJoN2FZY1F5RmlZa0tGMk9nRldyWEpqVENOY3E2M1JxdGFuVHZRV1p3dzhvcURtNitEUjlnU3U0U0o4SG1UaG9kWU5RV1lvUGRqR0NaWUxDSUpBb2FreVRTWkttM3FuYlUwVWRtWkE2dEFONmo1ZytSRVFHUk5ISE1VK0lDcG1UNzN0aUdxenRxTzJOOW9wVVhLUFVJYWVkWDR0cVdXOWRaOWY0eDNxS2VyZkNaeVE3MEZnQ0MzUm1GeEN4NFZXLzV5cDFsRndTVWhzSS9iV1NTWWpudFhwaSt5ZGIrV205bTZVekZXVlZSd0xNaG5RanhrL2dISlhHeXlwT3UvQ0hFSklrdS9kYVk4TFRZR3Mxb2JLN0MzcXpKdHdqMXpndmUwbEs1NG5nUVU2bVljVzZ0bFhuU3dkUElmT2tMRnNIdTQvRnpPb0dySk93T21JVTFFTDY2aEs0NlBqQmR0UVFIVVAxTTNTeHVMcm4rU0Jub0VJa2xUQWlzc3FIazAxUFlNVzB1T01DUU9wcG5VZ25vakJZQ05tb1QzZXBmWHNDN0JjRzVWbXpCNzRDQUNHRnB3S3BkeWZod3JhMmxISkM4R0U2bFZqdjQ1WVJwRDFuUmxwMGtvdzNJcnFRZHdxTVBTa1l6WHZvSTVMQkRyV2cyQUdqRFRRRmRXc2lZd2p1M2xzeFdzaUtGRitoYlFoanordG5CZVYzbEVRMjdUcGhSVmRxYXRCd1ZUb2dqMks5aUIxK28vazA2bXlyaGFjUHh3NmVKL2RyeS9NOUx1ZDIvRTNyN09lcUp1R2wzT2Vod0dzVklaWXRoSWNxYk5ocFl5a1V3RkVYSzVxR0F5cWRNRTNwaU5qcUZCN3UvTnFNRGJaQnZ4YThOTkQxN3ZML2NrNk1qajFPRWlCYmpWb1Mrc09uWTlVcElXRzZEMUZpS0IrVkFsRXdwcC9kS2Q4SldZai9PRUpMa2xUbmVuRDBsaW9SM1pKdlcxQkZxK1Qvd0ZLVTZwbGpCanlCQnRFN3N2dnVsV0lhL1JwbThBTllVRld2Z1hkRXBrWjhFQzhJZ2ttNHBVTVc4R3Zyak9NWWFzckNBRFEwU0FBRDMyRWJoektwbDVRUUtBbmowMEVHR014OVZ1eTZPcjF3SGxsSFd1OXdONlZLdTlsSUtYcWErVU53SlJqUGRTVHJ6Nm5yYTBTMVVFS1FPVjVaNS9vUkJEUWdwN2d5Tm9pT1dXbHBvUzJwV2hiSllzT1FqdThicWhkbG5PaFg4dFdSN2pzdkZ3N3M2eno2SVMyQ0Z3MUFlZ3ZxV2FUWDZkUndCS2kwT2ZyaVloWnZmbEpoakF4djFxMk9zTE1WODNtcjlPQ3BBUW1jdG9kSlVUZWJSMW5KS202am5Rd3o2Qld5dWJVZHJpbkFxZG1nSHJ4K0pNbEJac2dWL1dBNExxM2ZQeGxGQ1NjZW9KN2YzUUVaL0tkcWpPWEl6cENVNms2bmdwcmFqU0trbjJXZGZvTDJwaXZzcTVOZzJaYkFnejNQSnBrcStxRkVhUWw2ZFVQU1U0djlVbGovT1BWNFF4Ri9sVGZvamI4MEh1R3hvTVRab1NwSjIrcFlIbDhqV0ZMVFdiYzhiVUVPZkpiSjE2QUVTT0psMXBJY0FaM0UwWGExenFmUWo1Q093ZVVLZ1lwTTljWHM0eGVyVkREVmVFZWduTEk2bGRxMGpHZjVGK1BPZ0NLd1BDQVRYenQxOGhLS09rZFNuMEhVT01lQ1JmZVdOS3dKWkZMeGZmUHRIR0lVZTcwQzBPSEhnS0ZyT09IT29YeHJpbTJBTE5ST0dyM1VSZE1mbTM3T2dCVU00YlBmVzdac0RzNmpEdDFJclBLUG8xSU1uRDV3NHJzcWUwcklwMjViNm8ydk9PLytNMnJmakVHaXZTQSs2K09oYkdzQ3l0d0dmUmdEVUdKRmdPR0xSbDhBSGV5M01qdHc4K2xGMXM2andscDQ0YUlhbFhRM0swNkpzUFVraUo4NUp1SFJBT1BqeDZvaXpNQkh5RzJPb1M5UEF5V3NHdlZwODRuSWFnUU5iNDZqM01rK0hCcnlFMUNmYXB3eTlCRXQ0eFlQUVY0a0lKT1B5cFFGQjBQMVc3VGh2a0JabFI4RWxjV0xvUjlrbGJEcWYwQmxuOUNZMzdpZzd0Q1hiQ1l5SmF0VmxsaEU2RkJKNGVaRXgzekcyQUd5eiswVjJJZW9GMEJrVTB1QnpLQW4yTHdPcGFtazNoNFN2RG82S3duWVkyaFZJT0tnRTBLdEttQVhWdFc2VGNEc1dTY2prc09uaHBKb1VLampvUyt2Z2ZVU0hKRUFoNTZYdlZuRDBDMzZWaWdOSXlLRnNBcXJub2RuUmJzNnRYSTFscUdKMGFYekh0T1NzZVhSeWx1dmhNREtlb2FnVlU2NzhqTXVrWG5VTFlSRXNnaXVKajV5Zm1kazlGT1RJMDR5cXN5czdxeHRSUHNKSlNoQXJWU1YwbUZoZVBXcjYyNTZ0N1BxaG52WkUrYkEvdzFxYnRLblNpaUpwQWN5T2tnSXVIdFZEY0pSeWM1TXNHVG1ZWnlGRTl4RERXdUVRb290S1E2ZGJpdlpmTXBiVlRHOFRyWXIrbzFkSnltVytDbEt2UEFIZ1kwSmprcTRMRXVkVTJUcm9yNU9Lc2lWaHlLZXJEUGZuWldSNHlCUk9LQ3Q4SFMxRlErOVFzSU1objhkajlWcWlQUloxQ0h0YW9YcUFVSlQ5UHZxQ0RSZ0hOV2k0VFNyMkpJNnFFRWFoa2RXVlJQMmEveUErOWNEV1FPN2ZITHZwTzRCRS9TTWJzZG1lV1Z0QnNjTUpVSFlhMFRJLzZDMlZPSFgvRHN3T1c0YjRjQk80bzhOa25RcTlOR05wTmEzbC9mS05tZ00yTUExd0Y4VlZLeExBUnRGYWJGZUNQQkNrK1BMMG1LM3U1ZitYNnQxNE5DV0h5MEI2UnFxUHJ4ZFY5MTNNMm54blh2dDhIeTYrM1Y0TVlBanJReW5LL0RqSkx3RVJ0UTYrZjRxOXJpd05KZnk0ZHBaS1VaTVlYMXRUN0dVY3k4WlZXaGEwb0pCcEFrTGNHaXVnNjVERzhJK3QwTkRFdktmK24zVkRTMTM2b1NFZ1JOYllYUCtUNGNIY2dUMWRHaVhzSlFsQmZJM1hjbTBkVE9OUHgrSGNVNlRuM2Vob3JZcHg2TmlTVGYydWtETUp2T1Ztb2ZVSUN2WDdZQlpWYnBWY0VPVWU2MUo0NEN1TXl4bTE3dE9QaHM5QmI2QkFwODlJT0thV3JDMFdaUGwzZ0YxOEE0Uk5kYThCS282MGRQSFMrTjZBRWxzdE8yVndPeldhRFh1UXR2WDIvSTBVU0dLTlBpaWpvQkgxR0VvS0VlR1E4RThSSHhhcVdhUkJqTGtWd1JQTC9xQmE1Tk94dzRmLzArRFpWMmVsRWxBUmFFRW9QTVU5cFBoT0ZkdVYvZlg3VUEyVDBCVzNqOUppaFNMRTFDRjl1dU9xK2wzeFFROUJ0KzV0YXZwakFVMzJnNkUzdWZMNzBIVWJrTVMwVjB4Szcrby9kVHI1Nm9JOWY4R3hSbFRoRStUUzVTcGU4aFFZcHE0T25SdlYzU1FEMC9yRVpRWHd4eGFnN3VuSW9RSkNwZnFLWDY4N3Nmam42ekNXOWE4QXNvZFpkeUdyUWg5WEVkVytjS2NsVGJzazRHQWE2T1dmU01ZdWhYNmFoelg0cDFmQjBnSU1hQUNJdVNuVG1yWkJySGZNejcyVmZsV2RSdnRJd25kWDNqaWZEcWFtTnFLTUFJVE90d0lpS1ZtTitXL1k2Q2ZHZ3ZhZzk2cFBTTTRINlNGeXlEd05VMDUvQ0NBZERXV1pDc0xkd3VjYUhmemhXQ1RxcW9rNlFoTVZqOGhiaEMrcGFqWHlLaEJoQjFXT2diMkxnVm5Gd3E0azZUcXM0dHBuYXRYWlorcFljNjUvVmRzYTVPQzZKbG1PaGNsVWdyYWFjQ2tHbytlVDJqQXhLMzJzOVgwTG1OZEZqTmdSTm5wcHJ5UThkdzFTeWNWQ01zUERKSmtMWEZxWk54T2pMejE2L01jZ2lFOWZlVklSd2o1dFQ5TjlDdXRoamc2dDE0QUFBQmcybERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVDFJdzBBY3hWOVRwYUlWQlR1SU9HU29UaFpFUlJ5MUNrV29FR3FGVmgxTUx2MkNKZzFKaW91ajRGcHc4R094NnVEaXJLdURxeUFJZm9BNE9Ub3B1a2lKLzBzS0xXSThPTzdIdTN1UHUzZUFVQzh6emVvWUJ6VGRObE9KdUpqSnJvcWhWNFFnb0I4OUNNak1NdVlrS1FuZjhYV1BBRi92WWp6TC85eWZvMWZOV1F3SWlNU3p6REJ0NGczaTZVM2I0THhQSEdGRldTVStKeDR6NllMRWoxeFhQSDdqWEhCWjRKa1JNNTJhSjQ0UWk0VTJWdHFZRlUyTmVJbzRxbW82NVFzWmoxWE9XNXkxY3BVMTc4bGZHTTdwSzh0Y3B6bU1CQmF4QkFraUZGUlJRaGsyWXJUcXBGaEkwWDdjeHovaytpVnlLZVFxZ1pGakFSVm9rRjAvK0IvODd0YktUMDU0U2VFNDBQbmlPQjhqUUdnWGFOUWM1L3ZZY1JvblFQQVp1TkpiL2tvZG1Qa2t2ZGJTb2tkQTN6WndjZDNTbEQzZ2NnY1lmREprVTNhbElFMGhud2ZleitpYnNzREFMZEM5NXZYVzNNZnBBNUNtcnBJM3dNRWhNRnFnN0hXZmQzZTE5L2J2bVdaL1A4YTdjbUx3MFh4dkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg1QWNDRUI4ZkJWeEh0QUFBSUFCSlJFRlVlTnJzblhsOFZPVzkvOS9QbVMwN2tJV3doTVVFQVJFRXBBVzBJbW9ScFlxMWlGV3cva1RGdXJTaVhjQzYwTnFDWGJEMXV0d3FXbXF4cmREMklyZFhzYlRJOVlwTEN5aWlVdGtERVJJZ2V6S1RXYytjOC96K21ITW1KNU1KaXlJazhMeGZyL01LWkNZemt6Tm5Qdm51WC9IOXIxM0FtcTFWUkgxOUdUYnhadVpkK0FHM3oxdEYwUjJyV0R0dkdGRExpaG5qbUxkaEhJcytXTTcwUEtEOEdhNjQ5RkhLTDEzTTltY24wNHFmRmJQR011L04wU3pZc0p3Yml1enZSeWxmc1lDSEZyL0M1ajBCZklWbk1mN21lN2ltYmdGMy9DN0t6R1ViV1RpZUxrazRIT2JBZ1FQVTFOUlFWMWRIWTJNalRVMU5CQUlCV2xwYUNBYURoTU5od3VFdzBXaVVhRFJLTEJZakZvdWg2enE2cmhPUHg1T0hZUmpKcjRaaFlKcW04OS9DTkUyY2g1VFMvaXFrbE5nSElGSy9Ba2dwaGZYU2sxOVR2aWQyN2RwVlhGQlEwTnZuOHhXN1hLNWlUZE9LTkUwckVFTGtBejJBUENGRUhwQU5aQUdaZ05jNlhJQm1QWjRKR0VETU9zSkFDQWhLS2YyQVgwclpKS1Zza0ZMV0c0WlJwK3Q2ZFNRU3FUbDQ4T0RCa1NOSDFsaVBJeDFIdS84TElWSnZzNzhISUlVUTdiNDZEcWxwR2tJSU5FMUxQYVRMNWNMbGNxRnBHdmEvM1c1MzhxdDllRHdlM0c0M2htSFF2WHQzZkQ0ZlBwK1B6TXhNTWpNenljN09KaWNuaDl6Y1hMcDM3MDZQSGowb0xDeWtaOCtlOU9uVGg4ek16R080NnZ5c216dUptemRQWmRYYStReERrWXA5MGJlZXNoV3pHRHZ2VFVZdjJNRHlWbVg2SElpeWJzNVlibDVWeEIycjFqS3ZpNzA3c1ZpTUF3Y09jT2pRSWVycTZtaG9hS0NwcVFtLzM1OFV0RkFvUkNRU0lSS0pIRkhRbkdMbVBFelRGTGJBcFloWkd5R3p4Y2twVXFtQzVmeC9UVTNONEp5Y25FRnV0N3RNMDdSU0ljUkFJY1FBWUFDUTBVbE9jd1RZSjZYOHhEVE5Dc013OXNaaXNUMk5qWTNsQXdZTTJKMGljUEl3Z3RkT0FHM2hFMEswRVRwTjAyU3F5Rm5DbGhRNTUrRVVONWZMaFdFWTVPWGw0ZlY2OFhxOStIdytNakl5eU1qSUlDc3JLeWx3ZVhsNWRPL2VuZno4ZkFvTEMrblZxeGQ5K3ZUQjYvVWVWdEMycm5pUmw5NWN4WXBWbFF4YjhDckxieWhSS3BZR2R5M1FhbGh0WmZIdjFoUGpMQzRjWDNUY0JHenJNM05aVmpLUCtWTkw4Tm5mTFYvQjRuVUI2RHVWUzd1WXFPM2Z2NTlEaHc1UlcxdExmWDA5alkyTitQMStBb0ZBVXREQzRmQmhCVTNYOWFSMWxpcHE2Y1RNdHNwc1liUC9LS1VSc2piLzM3VnJWODgrZmZxTThIZzhJMXd1MTlsQ2lMT0JzeUQ1Vm5SbU1vREJRb2pCdHBCNHZWNXljbkl3VFRNS2JETk5jMnM4SHQ4YURvYy8zcmx6NThmanhvMnJzeXhGS1JNblN0ci9kNHFjbEZJS0llejdKQVhPTUl5azlXWmJjOVloT2hJNXA3Q1pwb21tYVhnOEhqd2VEMTZ2bDNBNGpNL25JeFFLRVF3R2FXbHBJUkFJNFBmN2FXcHFvckd4a1lhR0JtcHJhK25WcXhmOSt2WHIrTE8wNmdsK3Q3NkljVGMveVpOSzFEcTIySVpjY0QyVEp3NmppRm8ycjF2REIxVlFldk5TVnM0ZlQ5NXhlWXBLVnN5YXhydzMvZlFkTlpHSm8wdkF2NVgxcjJ4Z1Q2d3ZWeTVleVpPVGk3ckV5YXF1cm03bmRqWTNOeWZkVHFlZ1JTS1Jkb0oyQkN0TjJHNW5pcUNKRHF5eWRoYlp0ZGRlNjFxeVpNa1hNekl5dnVCeXVjWUlJYzRGQnA5bTEvUXUwelRmMTNWOXM5L3ZmLy9yWC8vNisrdldyVE1kNHBZVU9TR0VtYzZpUzJmTmFab20wMWh4dUZ5dU5pSW5wU1FyS3l2cG5qb0Z6dXYxSnEyM3pNeE1zckt5a3U1cHQyN2Qycm1ueGNYRlNxRStyYkI5LzZhdnNHNzlOdXJJcGJCc05GTnZuc2M5MDRjZEoxR3pxV1g5aTArd2VOazZOcGRYRWFDUTB2R1R1Zm1lZTdoaGRPY1h0ZWJtWnFxcXFwSldXanEzTTEwY1RkZDFZckZZMGtKTEUwY1R6amhhR3N0TXBJbVgyVmFaK043M3Z1ZDYrT0dITC9ENWZPZHBtbmErRU9JOElFZGQxbTFva1ZLdWo4Zmo2d09Cd01hNzdycHIvVi8rOHBkNEdxRXpuYTZyUStTY2NUbVphc21seE4ra2xKS01qSXgyc1RldjE1c1V1STdpYjA3M3RLaW9pRjY5ZXRHM2IxKzZkZXVtM3NYUEdtTlR0S0xyT3Z2MzcyOWpwVFUxTlNXdHRLT0pvNlZMRHRpQ2xtS2RKZDFNaDBXR1U4aWtsRnBEUThPd25KeWNpMXd1MTRWQ2lJbUF1dXFQOGUrVWFacHY2YnIrZG5WMTlkc0RCdzdjYm9sYk82dk9hZEhaMXB2ejMzYUN3U2x5VWtwOFBwOU1sMXhJdGQ3U3hkOXM2NjE3OSs1dHJMZCsvZnJoOFhqVXU2ZUU3Yk54Nk5BaEtpc3IyeVVIbkc2bkxXcTJsV1piYUVjcmFJWmhKTjFNMHpRN0ZMTlFLSFN4MSt1ZHBHbmFKR0NFZW5lT0svK094K092Ky8zK053b0xDOThta2NVMVU4V3VJNUd6a3cyMnV3cmc5WHFURmx4SEFtZGJjTGIxWm91YjB6MU5UUzZVbEpUUXExY3Y5WTRwWVR0MmdzRWcrL2J0NDhDQkExUlhWNmRORGh5cGZDUEY3UlFwaVFHbmRTWlNMTFNrbUlYRDRTbGVyM2VLRUdJSzBGZTlNeWVFS3NNdy9oRUlCTmJtNStldnBiVmNKYTNJT1dOeXRxc0s0SGE3cGJNOHhCYTVJMWx2cWU1cGJtNHVlWGw1OU9qUmc0S0NBb3FMaStuVHB3LzkrL2NuT3p0YnZWdEsySTZPL2Z2M0o2MDBaeXd0WFhJZ05aYVd4a283a3FDSjFKaFpNQmk4eE9melhTV0V1RktKV2FjUXVkVk5UVTJyaTRxS2JFdXVqY2lsV25IMnZ4M3VhVHVCYzd2ZEhRcWMwM3BMVFM2a3h0NUtTa29Pa3oxVktHRURBb0VBbjN6eUNWVlZWVzJzdE9ibTVqWTFhVWRaWkN0czE5TjJOdzlqbldtTmpZM0RjM0p5dnFacDJ0V2dhaTA3S2R0aXNkZ3JCdzRjK0Z0cGFlbFdoOEFaRHBGenh1YmFXSEYyOXRRV09VdllaRHIzTk5WNmM5YSsyWmxUMjNycjI3Y3ZBd1lNSURjM1Y3MURTdGphVzJsMmdpQmR4ck9qRWc1YjFOSUptck5Md0Nsb3RwaXRXclVxWTlLa1NkZTYzZTdwUW9qTDFHWFlkVEJOYzAwb0ZIcjVxYWVlZXVYQkJ4OE1BL0dPUkM2ZHdEbHI0TklKbkMxdUhaV0dwR1pPN2NTQ3N0NlVzQUVRQ29YWXUzZHZ1d1NCYmFXMXRMUWtZMmxINkJ3NG5LQUpwOXZaMU5RMElqczcrenBOMDY0RDFKWFl4ZjhtNnJyKzB2NzkrLzg2YU5DZ2JRNVgxVWgxVlIwQ0o0OGtjQjFsVHUzWVcwNU9UdEo2UzAwc25ISEdHV1JsWmFsMzVuUVZ0b01IRHlaZHo1cWFtallKZ2lQVnBUbEVMYTJnV1FXMWJkek5VQ2cweGV2MXpoQkNYS3N1dVZQU2lsdloxTlQwVW1GaDRldFN5cmdRd2lsd2h0T0NzNFhPR1lkTEZiaU9ZbS9wNnQ1czE3Um56NTVKMTdSMzc5Nm4vWHZpUHAxK1djTXdLQzh2WjkrK2ZSdzhlRERaRXRYYzNJemY3eWNZRENaRkxScU5wdTBlc0FYTkVVZExLMmczM25pamE4bVNKVGU2M2U0YmdRdlV4Ly9VUmRPMGFmbjUrZE5pc2RnN08zZnUvUE10dDl6eTBzYU5HK09XbTJwSUtkdGxWZzNEa0tacFNrM1Q3RmlzZEpZRXhlTng2U3dYc2owRVp5akUvcU5yL3hFT2hVTEpkcTJ5c2pKY0xwY1N0bE9kcHFZbTl1eloweWJyNld5Sk9sS3hiUnEzVXppNkJKS0N0bW5UcHR3UkkwYk1jcmxjTjZGcXprNHY5MGVJTDJWblozL3BYLy82MXpjamtjanlaY3VXL2VXMjIyN3pXOVpidkNPQmsxSktSNkcyVStCa2FndWVzOWY0U0FKWFdscEs5KzdkbFN0NnFsSlpXVWxGUlFXVmxaVnBhOVBTRmRzZXhrcExHMFBidG0xYmo3S3lzbHRjTHRjdHdDRDFNVC85TUF5RHlzcEtCZ3dZWUgrclBCS0ovT0dWVjE3NTgzWFhYZGRvVzNEMlljWGd6SFF4T0dmZG05TTlUUzBMc1l0NjA5VzhsWlNVTUhEZ1FFcEtTcFN3blVwSUtkbTVjeWVmZlBKSnN1RDJjRm5QMUE2Q0R0eE9POHVwU1NuRmh4OSttSGZXV1dmTmRybGNzNEV5OWZGV3d1WVFOcHM5NFhENDkzLzYwNStXMzNycnJjMUhFRGpUMFhTZjJya2cwM1VzZEpRMXRRdDZCd3dZd09EQmc3RzZKWlN3ZFdVQ2dRQzdkKzlPeHROcWFtcVNXVTlud1cwSHJxZEliWVZLc2RLMCtmUG51K2JQbi85Tmw4djFUVlQ5MlFsOFl3OUI5UTVvcUlCd1UrSUF5T3llT1BJSFF2RVF5TzNWbVlUTi9rTzdMUlFLdmZEMXIzOTkyZXJWcTJPV3dOa2laem9Femt5MTNwd0M1L0Y0WkVmOXBzNXBJZm41K2ZUczJaUGV2WHZUdjM5L0JnMGFkTnJVdkoyU3dsWmRYVTE1ZVRuNzkrL240TUdEN1VvNVV1TnB6b0JzT3JmVFRnellXYzVJSkhLOXgrTzVFeGlubE9ZRTBWQUJ1OWNsdmg0TitRTmgwTVRFMTA0aWJBNkIyK2ozKzVkMjc5NzlGU0dFbmlKdzdWeFVSd2VEVExYZVVtdmVVZ3Q2N1pLUTNyMTcwNjlmUDhyS3lrNkxjVWluWFBLZ29xS2lUWkxBbnB2V1VUek5hYVhaZ1ZtbjIrbElER2loVU9nU3I5ZDdsOVh5cERoUmJQa3JWSDE0N0VLNHNRTDZqb0lSWCsxYzFvUVFZN3QxNnpiV01Jd3JhMnBxbHZidTNmdWZUb0ZMVFRMWUNRWnJXSUpNbWQ5bi8vK29rZ3lSU0lSd09NekFnUU9Wc0hXVmVOcU9IVHZZczJkUHNqWEtIalBVVVR5dEE5ZXpuZHZaME5Bd09DOHY3MXRDaUR1VXlweEE0aEhZOEVMQy9meTBWSDJRY0ZmUHZRN2NHWjNxMTlNMDdTdTlldlg2U2l3V1cvTHh4eC8vZnZUbzBlVU9nYlBMUkF6QU5FM1R0UGRiMk5sVHUyWFBLVzZwSW1jbndGTEZMUktKTUdUSWtGTTI3blpLQ0ZzNEhHYkhqaDFVVkZTMDZmZTA2OU02aXFlbFdtbVdxQ1hkemxtelpybWVlKzY1dTEwdTF4eEF6V0UrMFd4WUNvSHE0K1BHdnY5bkdIdFRwL3cxUFI3UDdGR2pSazBKQm9QUFRwZ3c0ZmViTjIrT0FicGx2V20yaXlxbE5PMXg1bFlDU3pxSEs2UUtYTHBTRVdmWXhSYTNZMXNrbzRUdGhORFkyTWpPblR1cHFLaElEb1IwVHVWSVY1OW0vUlZ6aXByVFN0T2tsQ0lVQ2szMitYejNBbDlXQ25PUzNNL2pJV3BPY2R2eVA1M09MWFhRTnlzcjZ5ZnZ2dnZ1eFRVMU5VdDY5Kzc5bGhBaTVuQlBCYTA5cVRMRmduTUtuRXkzRkNpZGUycFhBUXdlUEpnZVBYcWNZc0xtWDhHTVVmUFlrSHNOdi92d1VTWjJvUmRmWFYzZHBwekRibUpQVjNUcktPVVF0bm1leGtyVEtpc3JleFVYRjkrcmFkcDNsTHFjSkJvcWpqMm1kclJ1YWQrUkp6U2g4Q25jMDR0NzllcDFjVFFhL2ZYcnI3Lyt1eWxUcGh5eTNGUE5LWENKWFRUQzdNaDZjN2lxSEkyYk9uanc0Rk1xcWRCbExiYjkrL2V6YTljdVB2bmtrMlE1aDdPVElGMlNJTlZLTXd6RGFhVnBrVWhrdXNmaitRNHdScW5MU1dUWEc2My8xZy94MEkvL3diSUdHRGZqNnl5ZmtBa1lWSDY0aVlkZTNjdjZ5Z2hrWmpONjVBam1UUi9DYUtzSFBMcC9Od3RXYk9HVnZYNENaRkE2dUQ5M1RCL0w5TjNyWU96QVRuOEt2Rjd2dHk2NzdMTHo2K3Zybnkwb0tGZ3RoSEJaN3FudWlMMEpaL3d0amNCMUdIdEx0ZUJzZ2V2eVUwTDg1YXg3WlJudVNhUG1zUWNnOEJJM2w2NWo1a3NiV1ZpMmxSY1hQTVRpTlZ1cGl2cm9PMndpTjg5ZnlDMmo4enJGYXk4dkwyZjM3dDFKVWJQTE9WS2IyRHNTTldmR1UwcXBWVmRYOXlzb0tQaXVFT0l1cFNvbm1jQWhhUHdrK2QrdHIyOWtSVVBLdGZ2eHY1anhiRGxWZUNnZFdJeXZvWllONjljem94N1dmbWNJSmMxN21mUDRPN3dXaHNMaVlvYlJ6SWF0TzVuM2VJeThIN3FZZk5haGsxTG5kcXdJSVVibjUrY3Zqc1ZpdjNubm5YZWV2L2ppaXl1RkVKckRQWTFqdGZMWmswVHN6S2xUM0p4Yno1ekxnK3pZc25PNFF5d1dvNnlzSzlhWmw3Tml6aHdXcmRtRzM1ZUxlK2JNQy9uZHNqZXA4cFp5NlEzWGNHbVJuM1VQeldMK0tqOTlMNXpPSFNYbHZMSnNGUXRuK2NsYnU1VHBKM21wMVBidDI1T0Z0ODZlejhOa1BvV3oxOU5SbDZaSktVVWtFcG5tOFhpK0IzeEJxVXBuaUM5c2IvMTMvUTRXdk5wSUxPVXVXN2ZXRXMzTDVzSXJMbWZwaEJ3STdXYldEOTdoemIzN1dCOGF3dVNLZld6MVpOQjMyRmhXM25vR1JiVHcvS0tYV0ZoUnhhcTlNTG0rb2tzSW00M0g0N2x0NHNTSlkycHJheGNYRlJXdHNXSnZtaVZxdHZWR3duQ1RxZGFiU0luRGtlcWlPamVuMlFJM2RPalFMbmJoUktIb0d1WXZuOHJrdkJXNGI1bDNKYTh0ZTVNcTMyaG16citUaVpUelRIa2RVTXJVZWZPWk55ektwV2N0WnRXZVhQTDhPTFlybjFpa2xIejg4Y2ZzM3IyN3pjSmllMnVVUFprakpVbVFLbXJKZU5yMjdkdTdsNVdWZlYvVHRIbEtUVG9SOVJYV1AyS3MrZXNIYktBSDR3YTJzS0ZDVDk1bC9MVmZZMk82QVZBZUwza2V5QnM1a2JkR3BudHdGM2tlU3p3SGp1OVNwMFVJY1c1aFllRnprVWpraVQvKzhZKy9uVDE3ZHFObHZlbTBqc2d5YkVGenh0N3NRYWRPY1V0ZCs1Z1F1U2hORmUveTV5ZjJVampyUDNsczV0bGRxQnhrR05QbkQ3T050M1F4dGpJbVhqbUtKN1o5d09Jcng3Sm0xSGpHWDNvTk0rK1p6TENUNUlucXVzN0hIMytjN0NaSUxieE5MZWV3MHRtcFdjOWtnaUFZREY3bzgvbm1DaUVtS3lYcFpGZ3RVdEc5bTFpd0tVTGZDeVp5YzN4ZEcyR3pxZjF3RXd2ZWE2WjJieFViNGhsY2VPMG9KanMzMUIzYXpVT3ZWbEZaZjRqMUZScDl4NHpsanNGQVBOcGxUNC9QNTd2bjVwdHZQbnZTcEVuUERodzQ4RjByOWhhelhGTWhoREFTaGxwcjNNM3BtcVpNRWtrSVd6eEMzZDR0dkw1L1B3ZjhKdTZNWGt5ZHZJTVBQNHh6OXRsbmQ4bTFmMm1UQjhQdVhNN2EwU3RZdHV3MTFxMWZ4N0pIWDJQWjc2NWs4ZG9ubVh5Q3hTMFNpYVFWTmJ2d050MCtBb2VsbHVwNmFyRlk3SGFYeTNVZjBFZXBTQ2NrMGd3MDgvenkzVlJsOXVPSnEzdVJ0eUw5WGYxNzk3RnFrei94bjd4dURDdE9xY2Z5MTdKbVV3VjFBTzVzaHAzUkxiRUkvTE1VL0hZQ05FMmJOR0RBZ0dGK3YvOC84L0x5L2d4b2xudWF0Tnh3SkJac2o4ZXkzb1Rsc21LYVVScXJ5cWx0Q3FPajRjM3J5YUJ6aHpQMjNITTRTNnRnNTg2RXEzcjIyV2VUa1pIUnRjNFJnTS95VWFOUndMK2VaK2JNWmRGcmVjeDhjaW12Ymx6TFE2T0F1bldzMm54aVgxd3dHT1Nqano0NmJKMWFTbHhOeEdJeFlmZDhXbWEyWnBxbVZsVlYxU2NlanovbWNybWVVS0xXdWFuOTEwWVdWOEs0cThjeTlUQ1Ryc3V1L2hwN252NEdHKzQ5aTdOQzFTeCs5bCtzQ1RudU1QZzhOajU5RTlzV1hNdzFCVUZlVy9FNmkvWWFwOHBwNnBPYm0vdlRhRFI2LzZwVnEwcWtsQm5XUjlrTGVLU1VMaW1sWmwvL1ZneE4yTjVNSkJJUjRXQXoxUTBob3FZZ28rZ01SbzRZekJrRkdlak5OUnc0Y0lDS2lncDI3dHpKUng5OVJEQVk3R0lXbTYrSXZGd2dzSVlGMDJaUnZuQWhlYlZyV0xWcUhWc3JQMkJ5U1MzcnlnRnZHYU5PWUxJa0VBaTBzZFNjTFZLMm9EbkhkOXV1cDFXZjFpYnJHUXdHSi9oOHZ2dUVFSmNxMmVqa1pCaXMrTDhEQklBTnkxK2lkSG5yVFJ1Vy80VUorNy9DcTVkNXFkVmQ1QlhrVU9SeFVUUjRHTmVVYkdOaFJTMGJxbUZpZmd1VllRTmZYamRLc3NCWDBKK1p3N0o1cVRySTVwMHRjTTdnVStaMGViM2UyVk9tVENuZHUzZnZNMmVjY2NaN1Z0ek5UaXdJSVlSaG1xWnBMM2h1RzNkemlXN2RNbVZMTUVLNGVqY2JhejhodDdBdlpXY09ZcWpEWGJXUHM4OCt1OHRNQjNIam04Zzk4NjlrNjRJMTdDa3ZweXBhd3AxUExzWC8wQUordCs1M0xJNTVLVHpyVXU2WXQ1QmJUbEJUVVhOemMxTFU3R2IyK3ZyNmR1N25ZVEtmeVhoYU5CcjlodHZ0dmg4MS9MRnJrTm1Uc2pQN2NLRWo1RkZiZVlodGZwUGM0bUxHbnlGWXMveGw1bTJGY1RPK3h2SUpPUkJxNElNR0FDK0ZtVkM1L25VdS9aOUdjc2RjekZ1MzlpZVBNT1hWWVVBakw4L2I2WHBHajROcmVzbUFBUU1HTkRRMFBKV2ZuLytLNVpxS0ZOY1VaOXpORmptUEoxTjBMK3dtUGVnRUEzNmFhei9oZzlvcWF1T1hjcUhWMmVEc1VUMzc3TFBwMXExYjE0aXhsVTEva3JYVG5kOGV6NTNQdnNxZEorRUZOVFUxZldwUmN5UUp0RnR1dWNXMWVQSGlIMmlhOWlDbjJXNkhMazNCY0NaZmV5bk9yTTc2My8rWm1lc2pETHRrSW8rZWwwbXRweStGVy9lellmbkxUSG92SDE5MUxkdjhrSHZtRUtiMmdoTFBFTWF0V2MrR1RldVlWRjFFbWQ3TWhtb1Q4dm94YzFnbUZBODk1VTZiRUtLc1I0OGV2d3lGUW4zR2p4Ky81S09QUHRJYzFwdHVpVmt5N2hhUHg5dGtUS1hYSzNNS2VsUFlHMkxCSU81b000Mk55YktSTnNmWlo1L2Q2VWVPZDZvUGZHTmo0eEZGTFozN21ab2tPSFRvVUwrQ2dvTDdoUkN6bFZKME1ZcUhKdWF1SFlhaUwweGtPWnRZc0dZdjYzZFZRMlllNHk0WXdmeXJCeVVtRlJRTTRkbDdYU3hhc1lVMWU2dlpRQVpuRFR1TE82YVBZV28zb0dEZ3FYcjIzSm1abWZQZWUrKzk0dGRmZi8wM2wxOStlYVZ0dVZuV1c5eStZN3FrUXVLTGo4emNBakpsQzgzTjZZWE5GcmZPM0YvYWFRWk5Pa1hOem43YW91YU1xYVd4MU96V0tNMDBUUkVJQkw2UW1abjVnSnFaMW9YWnNMUk45OEZ4cGNjQUdEZnJjM25vb3gwMGVTSXdER1AxenAwN0Z3OGJObXdMRUxXeXBqcVFYQStvYVpvVVFwaldkRjVwN1ZTUXpwSGo5a1RlN3QyN1UxQlFRSzlldlpJREt6dXp1SFVLaTgzcGZxYUsydUhjVDZ2Zk0rbCtoc1BoeTd4ZTc0T295YlpkbXpNdmdvMHZmSDZQZlJyZ2NybW1EQjA2dEtDeXN2THBrcEtTdDZ4RWdtMjVJWVRBbVZTd2cyNnRsbHN5RnNmaGpKL2h3NGQzU3JmMHBBdWJNMUhnRkxYR3hzYTBFenBTM00ra3FFV2owUmx1dC90QjRFeWxERjJjL0lHSktSekhlOEpISjUvczhUbkUzY2IyNmRNbnY2NnU3cW5Dd3NLL1NTbWRTUVVkUjFMQklXRFNjbDNicVZrNmdSTkNNSHo0OEU2WFVEaXB3dVlzNlhERzFHeFJPNXo3NlJTMVdDeDJoOHZsZW9pVDF2Q2xPTzZNdUJyOGg0N2ZUTFllQXhLUGVab2hoQmhVVUZEd1VGTlRVMDczN3QzL3kyRzV0UWxGMmVJV2o4ZlRpbHRIb21ZZkkwYU02RlNsSUNkTjJJTEJZSWVKZ2pSMWFzSzU0OU1wYXJxdXo5VTA3U0VnUTZuQktjYTRXY2RuaW02UEFURG0rdFA1VEJaMTY5WnRma3RMUzNaT1RzN3ZuVzZwVTdUU2ladWRYRWdWdEZSaDB6U05FU05Ha0oyZDNTbCtZZTFrUEttelRlb29zcC9DdVVIS2pxazkvZlRUSGwzWGY2aHAya0lsYXFjbzdnejQwaDBKRi9LenVKL2pacDF5dFd1ZmdvenM3T3dIUXFIUTdWZGVlV1cybzFQQkE3aXRUZ1dYYVpyQ01Bemg2RklnR28wSysvTVlEQWJ4Ky8wME5UVlJYMS9Qb1VPSHFLeXNwTHk4bkk4Ly9waElKTklwZmxuWHd3OC9mRUtmVU5kMS92M3ZmN2NaUGVTMDFGSmlhc0xleUc0bkNxU1U0dDEzMzgzNXlsZSs4aU5OMDM2Z1B2Mm5BY1ZERTdHeFVKUFZTM3FVVnRvNVY1L1FLUjVTU3Z4K2Y2ZXU4Zko0UE9kTm16WU5sOHUxZGQyNmRmRU9wbmZJTklrRGtlcVNPcHJzMnh4RlJVVzRYSzdUUjlpa2xHelpzcVdOcUtYYkpKVTZkc2dwYWp0MjdPZ3hkT2pRSDJxYTlsMzFpVCtOeU93T0phTVNJdWZMU1RoS25neUlXVDJNdWNXUVhaZ1FzaUdUb1BTQ3hNK2NRTHFDc0FHNDNlNng1NTkvdmlndUx0Nyt0Ny85VFhkbVJqc1NONmNBT3V2WlVnWE8vbHBjWEh4U1J4NmQwQmhiUjcyZlR2ZXpvNUlPS2FVb0x5OHY2TisvLzROQ2lMdlZKLzAwSmJkWDRsQU5jcDhKbjg5MysyMjMzYVo1dmQ0bHQ5OStleTIweHM0Y1ZwbGhHSWJ0YWJWSktEamphODQ0bTh2bHd0NWFQM3o0OEZOZjJPekp0eDJOSGpwTThXM1NVbE9pcGxBY1YzRzc3YWFiYmlJYWpUNDNaODZjQnFkbGxrN2NjR1JMT3hLMlZIRTdXWk40VDRncldsNWVudHdtZGZEZ3dRN0hlYWNyNmJCamFwYjdPVWRkam9yT1NsZHhSVlBjMGpFalI0NlVRb2gvdi9ubW00WmxqYlZ6UzFQRXJsMjh6WGtPbk82cHkrVWlQei8vMUxQWTl1L2ZmOVF4dFhSMWFrOC8vYlJuNU1pUkQycWFkby82NkNnVXg1K01qSXpiSDNqZ2dmaW1UWnVlWGIxNk5la3NOOU0wRFdndEJiSEtSZVRoM0ZHWHk0WFZwblhDdDE5OXJzSldYVjJkWEpHWHVuamxjREUxWjUzYTdObXpIOVEwN2Z2cThsTW9Qajh5TXpPL3RXTEZpbGgyZHZadmJVRnppSnZFV3RKcythYkptSnNRUWpyZFVPZGh1Nk8ydUozSXZhV2ZtN0RaRzlxZDdtZEg0N3hUWTJvcHhiY1Bxc3RPb2ZqOHljcksrazRnRUlqazV1YitrYlpaVXBsYXhHdC9YeVNRSGNYWmJLdk5GcmNUMVRUL3VRaGJPQnh1STJyMjRwWG01dWJEdXAvV0tPOWttNVRWVWFCUUtFNFFPVGs1MzJsc2JBejE2TkZqcFdXMVNWSmliSmE0T1MwMklZU1F0cWc1QmM2MjJHeGhPK2VjYzhqTXpPeDZ3aWFsWk1lT0hlMTJGS1JhYXRZMktlY1NZK3lGSzlGb2RJYlYrNms2Q2hTS0UwdEc5KzdkNTFSWFZ3ZUxpNHYvTGhQOVYyMCszL1pYZTJDbFphMjFzZHljRnB2VEpmWDVmSXdjT2ZKenIzRTc3c0xtRkxYVTdLZTk5N09qeWJlbWFZcHdPSHlaTmFWRE5iUXJGQ2VIb3FLaW9ydjI3dDNyUCtPTU0vNlpZcm5aOFRhNzlBT0hvQWxOMDJSSGNUWmIyREl5TWo3M01wRGpLbXdWRlJYczJiT0hxcXFxcEtXVzZuNDZ1Z3BJS2V2UUFvSEFGNng1YW1yMGtFSnhFaEZDRE9yZnYvL3RtemR2YmhvOWV2VEhsdVdXbk5zbWhHaGp0WkdTSVUyTnM3bmRidHh1TjE2dkY2L1hTMFpHQmdNSER1ejh3bFpkWFowVXRlcnE2cVNvMmYyZkR2ZXpUYXVVYzV4M1ptYm1BNmdoa1FwRnAwRFR0QytPR0RGaTlzcVZLeCtkTm0xYWxVUGNwR04yRzZacG1uYW1OSjNWWnNmYW5CbFNlMEx2NTVVcFBTN0NGZ2dFa3BNNnFxdXIyelMxTzJOcTZjbzZwSlRpbGx0dWNWazdDdFE0YjRXaUUrRnl1UzYvNG9vcmFvY09IZnJZOXUzYnpSUnhzek9uMHQ0cWI0dWJNNWxnVzJ6MlY2L1htM1JKczdLeVBwYzVicDlaMktTVTdWcWxuSlphdXFiMjFBem80c1dMZjZBV3J5Z1VuUk92MTN2anUrKytXNU9ibS90N1M5RE1GSEdUcVpsU1RkUGFXRzdwU2o5OFBoK1ptWm1NR2pYcXVDY1RQck93N2R5NWszMzc5aVhMT281bVRWNUtCdlFicWxaTm9lamM1T1RrM0ZOZFhYMm91TGo0NzRDWnhpMXRFM096eWo2UzRuYTRXRnRXVmhaRGhnenBQTUpXV1ZuWnJsYXRnMVlwMG1WQWc4SGdCR3Vac2RyN3FWQjBidHhGUlVWM2JOMjY5ZEN3WWNQZXQ2d3oyMHBybHltTngrT3lvNExkZExHMjdPeHNTa3FPMzBiMlR5MG9UVTFOYVd2Vk9oQTFrYktsWFR0dzRFQWZuODkzSDJvQWpVTFJKUkJDbEEwZVBQaVdGMTk4OGNBTk45eHd3T0dTSmkyNGxQcTJwRXVhVHRpYzRwYVZsVVZPVHM1eEd5RGcvalQ3R3czVFpNKy90MUs1ZXcvVis2dG9PRlJEYzMwOWdhWm1RdjRBa1dDSVNDaEVOQkpCajhTRXJzZUk2M0ZoR3FhUU1pRnNQVDNoZWFKcDM2WHFjbEdjbkUrcEJpNFBhSjdFd0VwdnRqb25SNEhMNWJwNDJyUnBGY0JUdE1iYlROSWtFMUxGelpsSWNMcWt6a1RDeUpFamo4djAzVTlsc1pYdi9ZVEtxb05VMTlUUjBOQklzOTlQUzB1UVVDaE1PQkloRW8wU2pjWFFZN3JRNDNIaWNTTXhObGhLSVNWYXJIcjM3VUtJdTlSbG9qaHBTQlBpVVNBS3NSWUlOVUpHTG1UazJkNlVvZ015TWpKdXJxK3ZyeWdvS1BncllIU1VUQkJDU0R2ZWxtcTVPZDFScDdEbDVPUXdlUERnRXk5c0I2dHIyRmRaeGFIcVd1b2JHbWxxOWhNSXRCQU1oUWlGSTBRaVVhTFJHSHBNSnlGcWNSSXhOU21rbENKWXRlMUNsOHQxbjdvOEZKMUw2QXdJTjRFZWhweWVDWXRPMFNINStmbDNiTjI2dGNLS3Q1a3BoNVJTeW9TMkNlTHhlREk3R28xRzZVamNNak16aytVZnZYdjNQbkhDRmdxRitXUi9KUWNQMVZCYlgwOWpVek1vTWpJQkFBQWdBRWxFUVZUK1FBc3RTVkdMRUkzRmlPa3g5SGhjNlBFNGh0RTZnbWo3aHYvdDd2UDU1Z0o5MUtXaDZKVEVvK0EvbUJBM2wrZHpmN3AxNjlaMW1sLzlvb3N1T3BhNzl3WnVBdmFTaUxHMUVUWkFXaVZkcG1FWXhPTnhHWXZGUkRRYWxmYTJxNWFXbHVTMnErcnFhcXFxcXFpb3FHRG56cDJVbFpXUmtmSHBXOFdQU2RqMjd0dFAxY0ZxYXV0c1VRdlFFblJZYXJFWXNaaU9yc2VGcnNjeERCTkRXaTRvaUxJekJueGZ3R1QxNlZGMGFzdzRoT29UdXhWT0FHVm5mcmEreWZKZDJ3SHc5ZjNpcDM2TWFOVzdBRlNkK2VTeC9OZ2xZVE8yYlZENTkzOUxZcXU4Z1oxSUFDa1FVa2dwTUUxSlhFTFVnR0JjYUNJbU5XSm9Jb0pMaEhDSklHNlhIN2VyQ1krbkRvLzNFQWNYWlhIR0dXZHc1bTBmZmFyZjU2anQ3ZjFWQjZpc09raE5iUjMxalUwMCt3TUVXb0tFd21FaTRVUmNMUmFMRWROMWREMU8zREF3REZOSU14RlhpeHpjT1UzVHRIbnFVNlBvTXBiYjBhNzZPNDNKMUx6ZmVuZmdqeWVRbU1UakE3eVd3ZVNTU0pjRVRTS0ZpUlFHa2pnbU9nWXg0a1JsbklqVUNjc29RVE5Ld0F6VGFBU3BpL3VwcmEybHBxYm1VNyt1b3hLMlFFc0wreXNQY0tpbWx2cjZScHFiL1FSYVdoTEpBcWVvV2RaYXNsN055b0JXNzNpdm44ZmovcDY2REJSZGluQnpJc21nT0x4UDZ1ays2OW1pV2IwN0VEZE5nbVk2eEUyWHBraUtHem9ScVJPU1VWck1DSDRqVEdNOG1IUlBXNHhQdDRENXFGelJUL1pWY2FDNmhycjZCaHFiRTNHMVlEQk15SkVCalNXU0JiYW9ZWm9TS2FXUVNLMGd2OGQzZ1Mrb1MrQVU4dGFhWXdTZTIwSGtYOVVZVmFFdThacGRmYlBKT0s4bnVkOGNndGJOZXhRL0lSTjdTMzI1SiswMWYvTFhKM21HYS9uNTFiMVA5dG5EOS9PYktMaWlqc1l4THhPT3RkNGlFS012elJ2eGRXcjV0ZTJTU2pDRU01a0Ewa1JLQXhNQmFOSVFMaUdrUzJxNGhZWmJ1dkNZVWJ6Q2pjOXdvelUzazVtWlNhVWVZYWpyMkVQeVI3VFk5bGNkcE9yZ0lXcnI2bW13a2dXSkRLaXpzVjF2NjRKYUdkQ0VDN3BydWlydE9QWHdQL0V4d1JWN3U0eW9BUmhWUVlJcjl1Si80dU9qL3lFOXJON3NvOENuZVc1K2IrQlBKamdzTmkvZ0Fkd1NxUUdhQkdGQ1dwYzBLblhDVXJkYzBnaCt2NSttcGlZTzZVMGMwQnVQcjhVV0RJYW9QSENRNnRvNkdocWFrdlZxd1pBdGFqR2lscWpGNDNFUk42d3NxT1dDVm42OHZwZkg0LzZPZXR0UFBTTC9xdW15cnoyNnFmN283eHlQZHNuZnNmb2ZqL0RTM21JSzNINWFHZ080aDAxa2NHQUxlNXI4TkllTEdmK05temkzNlBobWZYdDV1dDBFZkp6T2FwTklDVUthU0ZNQUJsTEdwU2swWVVnM2NhSm91SEVSbGk2OHBoc1JETkxjM0V5dEhpVkh5NkM3SzRzc3pYZDhMTFpFdlZwTnNsN05GclZFRVc0c1VZU2JHQmhwdWFBbXBqUnRGMVFVRnhYZEM0eFJNbkJxSVFNNlprTzB5NzUrb3phTUdkQ1A4cGZ0dWpHMmVPR1grT3JzNzNMcnR5OG5ZK05hNnMrOWd4dnVlSkNaWS8yOHZhN2l1RCtmUUl3Q3BsdFdtdy93U2l2V1ptbU5JR0cxWVZ0dGNXbUlHQVl4YVJDVk9oRVpJeVNqaEVJaFdscGFhSXdIcVkzN3FZbzFIQjlYOUZCMUxRY09WVk5iMTVBbzdXaHBvU1VZSWh3SkU3V0tjR05KYTgyd3V3dnNMS2dJSGRneFdkT0VzdFpPUVVTdXAydi9Bb1pFNitxL3d4SHhrSjJibTFnYWtwbFBkazR4L2ZzbGZ1ZWMzRXppa2MvTnhmN21ILy80eDNQVHVLUjJsbFNrWmtuakdPakVpVWtyVTJycVJDSVJRcUVRVFVhSStuaUFRM296TmJyL3N3bWJIbzliTG1nOURWWnB4eWZ2ck9LdmY5L0EzdVlva1ZnMFVZU3I2OFNqQWRIVTdDZXN0M1lYekpweGpjdm45ZDZiN3JFMy8vUjZTcys3bHhjUHBOeFE5ekl6enB2R1ErK2xjUjMrN3llTXZXa1o1VXBUVGlPeXlQajFMZlRaK1RXeUN4MFg3SVR6eUY5OUM3MTMzazN2ZDY2bnh6Zjd0N21JajNTNzR2T25UNTgrTXdlSTdoa09xODFqaGIwMGFjWGFaRUxZRXVMV0prc2FKMEpDMk1MaGNLSUVKQjZpTGg3Z29ONUlYQnFmWHRpU3BSME5qVFQ1L2JRRWcwUjBBMHcvRmVYVmhHSzZuUVVsYmlSTWRkbGFpS3M5OS9qUDd3YSszT0d6eGo1azBhOWVwL2FvWG1JTGExWjlRTW5VU3loVDE4enBZeFZPbWtDM1MxTWEwMHZIa1AvMENGd2IvMG45VlgrazdwZDF1Tysrbk81Znl6cTYyeFVuQkUzVEpxNCs0d2RUSFZhYnAxWGNwSXVrdUxXNnBEcEc0cEJ4WWxJbkdvMFNpVVFJR2hIOFJvakdlSXZsa2paK09tRnI5Z2M0Y0tnNlVkclIxSnpvQXcyR2lNUk5wQURaY3BDcXhvamRCeXJpaGt5NDExSUtwQlFONVI4TWRybGNjdzc3ckRuWjhNWi9zdWlmTFVkK2hYVnY4OUo3ZzVoNVVTOTF4Wnd1NVBZbjc0RUJHSzlWWWpwQ2VlNUpaK0twM1Vuekk5dUpiVzlFLys4M2Fkbmd3amVwNzFIZHJqaHhkSE5sM2ZUSDR0djdPY1dOdHJWdHdsbmI1clRhWXNTSnhXSkVvMUZDTWthTEdhSFpDRkVmYjZFNjNrVEFDQis3c0ZVZFNIUVhORFEyT1ZxbXdzVGlKcmk3a1o4aENkZlhFZFRqMXVESTVLUVNJWkZhWHA3NDF1WmxQeW1aTm5reXBXTW1NL2FhZVN6Nlo5dkFuM2ZnVmR3ekdWNzY2WE5zUGtJTXV2YU52N1A1QzVjenVmQnc0cmVQelZ2MjRWZlhVeWNUcUI1NEovVEY3U3dERzNzUlJlL2RRTjdZamtiVHVQRGNQWUhNdWswMC8zZmJVcEw0MHYvaTBPVnZFWXVsL0lqUGRWUzNkMFVHWEQzblU5V3dGVjgyajFzdnN3YzNuc21WYysvbUhHdFBzZnVjTy9udU44NDV4a2MwaVA3Z2VRNk1hRnZEZGhqNm5wOHorR3BTRXdsQ3VLeERReE5KcTgxSUpCS0lXNGtFWGRlSnhXS0VaWXlRR1NWZ1JHaUtCNms3b3kvaDMxeEV6OWR2U2g1Ri8zRm11M2tzYmNvOXFtdnJPRlJUUzUwOXRjTnFtUXBIb3NUaUVreEJabEUzWEFlYThEZTdSSmEzdFE4VWlRZ2YySDVKM2FyNWQ4eDZOc1lOUDF2Q3M0Tmg2L0tmTStmK3h6aHIxVUttSmkvd2ZDWi83OXRzdU9iblBQVGNWYng2ZDBlekpnL3h5aXY3R0Q5ckxIbjJ0dzY4ellLZkxtTnpyRC9YM1AxdEpnZWVZODdTRnNwNnQ3RDVxVkU4K3RSTWh2bVVwcHh3dklWay9lSmlza3ZqeEZmK2srWU5SWFQ3eVptd0o0cnJnYkZFdnZNeUxkc05xTnBINU5VbytwNE9ZaVZEeDlKOUdvUnUvUUM5YUZKS0NNTkFPZ1RRTldFY09lT2lSTzdiZDNTM255WWMyRmZCQzgvK3h4SHZOK21Lci9IRjh5ODZxc2YwWFRTUWd1ZW1BaEJhdVkybUg2dzk4czlvbnB2ZTZQZkFPeGZ0LytrbUlHNGRpWDVTcEFuQ05FR0F4QUJwSUlXT0lWM0VFWmF3UldTY2tCbkRKeUprR2w2YW0zYlF3QmVvOTRTVEc2NWlkYU9RN09wWTJBNGNUR1JCbTVxYUNiUWtDbkhEWWFzSTE1QklhYURMREhKOVFqUkd3a1EwajlCTUtVaThPTTNyOWQ2VmQ5NjNXYms4bjdJK09RQk1uSEU1dzVZdDQ0TUttRHJDOFdTRmx6RC83cGVaOUt2SGVQNmFwN2tsWFNINDN0ZDU2ZUFvNXAyZmsvelcrcVhMNFBiSFdkbDdLNHNldUlzWnVkTjU5cm1yS0FQVy8vUmVYdG81azJFamxNNmM4TGpLdFBQSnFuMlQydnRpWlB6aU1vcXU5K1AvMW44VDNnUGlhMWRSY0VVUFdyYlhRZFVlQWovYTA4R2o5Q0Q3SnlNUXIvNmR3SWNHVE9yQW9udmdlZ3BuNUNOOGNlSXIvMEh6MzBMSGNQdXBUNS8rQTduL2tTZU82Mk5HMzZqZ3dPQ25qdm5uU24wOXJ3SCtEZWlBTHFXTUM3dk9UYUtSNkVyQUJPS1lVcE5DeElVaFJUeWVzTnBrbkFodVFtYkNKVzJvckdISGRTOFF6eWhtZUdhL0k3dWkrNnRhWGRCbWY4SUZUZlNCSmtZUjZZWUVhUkNQeDhIbnd5VWtoaDdIcXZMUjd2L2JydXVGRUZmNkNuT28vY2RqVEx2eVNvYWVONW5TeS82RERiRVk2VHpPa3VuZjVwNkJ1M25pcDMrbk1zM3RXMWY5SGY5RlZ6SGVZWUg1dkZDNVl4OWJkKzZtUE9vbEw3Q1B5Z0JBQy81QTRuYkZpVWY2NDRpaUhuaEhGZVByQzJiTWg2Y3c4V1pvZVM1azRNalpMTmYxRThqdCt3bitYKzV6V0Y3dFhTTDl1YjlSZSsxZmFQamhMdVNrU2ZTNHFjY3gzSzQ0a2JpRWR0bW1nVCs1d09HU2VscHIyNUlkQ1poT2w1VEU5RjFkMTVOZENSRVpTM1FsR0dHYWpDQjFldUN3SFFsdWdKaXVjNmk2cHRVRkRiWk93N1hyMWVKbVF0aU1lRnpFRFlISEpZUVJONFZoQ20xb1hxRkxjN252QkNoZjloQ3pYdXJGd2wvOW5xbEQ4dkVGL3M2TXljOTE4UFNEdU9XQnEzaHAxbk1zZW1ONnFxeXg3Qjh4SnY5c0ZFN1BjdlRkUCtESzU1Ynh1NHBCM1B5ckpZeXVmNW01Mzc2THhiUVFIVGlMSjRlb2krbWtDTnZmM3NCZmREN1pNK0xFbm5xVjVtMDl5UHVQYVJUbHVZQnFBbmNkSVp2bExTYjdtd1BRaXFESFAwdXR2Mkp1Qk5EdC8rNGthK2wvVWZ1ck9pdW0ya2k4RHVMYjZ6RFA2a3ZCdEtHNFgvZ1g4V1RNOVFpM0swNG9QVDNkcmgyaDlmN1hGdk9nYmxsdVRwZFVncEFTYVZyaUp1UFNGQ0llbHk2WEN4MHpVUUlpZGNKbWpCWWpRck1XcHNGb29VWnZwc2lkaDBlNDBndmJBYXNYdExHcHlXcHdUOHhZaTlvTjdycE8zQUNrYVk4andoUXVOQkVYcHBUQ2s5L3ZtOEE0YUdIelAzZVROK2FiVEIrU24zaUdRQXVIeXcvNFJzeGkvcFd2Yy9OVHk4aU5lWk1sSGRIM1htYU43eEtXcHJxVnZ2NU12ZnNIVEUyNnRGZng1QXRYRVkyQ1Q4WFdUaUlob2krc0pmcUMvZjhBL2h2M2dkY0ZzYU9vUFlyVjBUSjdPU0dueFQzcWZBcC9ra1h3MXJXRTkvanhQbkE5M1V1MzBURDd3NlJJeVNpSm5Cc3V2QTljZTVqYkZTY3RUSUg0NHJJQmQwOGVzZmVCVlVtWEZHeVgxR3E1UWlSTXAwVDVoNVlZVG9rdVRYUmNSTkVKeXhnKzAwT0xFYkVLZDFzNHBEZlJ6MXZRL2puRGtRaUhhbHBuckxVRWc0bkJrZEZXYTAzWGRlSlNJakdGRVU4dU9oWkNDSEZOV2UrOEZpRyttWGk0SE1vRzVsUDNyMlU4LzgvZGJIM3Y3engwLzFJK2lFRzBRM1hMWWVMZDMrWlNnZ1JhcjNMV3ZiU1JvaXN2WjloUm5qd2xhcDJVVkZIclcwcnV6OC9EVjlqZXhUVDMxQkhmN2pqcW9oQ05KcjVmRjBQZldJY1lONGE4YjViaUx1MkJaOUpZOHE3SUl2N1dua1QxK21GdlY1eE1lcml6cjcwNzU4dTVwRFRJSjF4UnFhVjJKQmlHSVF6RHdGa0NrbWlVanhFMEl3U3M4VWExdXArSTJiNDlUbXRYczVaY25kY3Fhcm9leDdDR2o1aW1hUzFtUVVpRWVHenUyTmxlV3ZWbjlPMC81S0VSaDNqaWU3Y3g3WUVWK0MrYnhjemhPVVRyRDFPelZuZ0o4KzhlMmZxSE5mQTJMLzJ6RjlkYzFsOWRFYWNhZmZ1VE9ha1VYOTlqTDhHUWEvK1AraC91UVh4dEVrVi8vd2FGUHk1RnZycVd4bDlXSDlYdGlwT0hRQXk5cytlbGw5SzJhTGROSDZsZHRHc21oQTNEU0pSLzZOTHVKVTJJVzhoMlNZMFE5VVlMMVhwVCsrZjc1ejllWWxkNVJic0ZMZjRXeXlWdDNUd2xvdEhFTG9PNFlRaHBTbTNyaHYvTkgxeDJ4anR3bkpzQ0Ryek44Ly9NWWVyMFVSU3BhNkpUY21EY3kxMzY5ZmZaY05VeG1Cc0RqdXB1aG1GUVdWbkpnQUVEanZxaHUvRE9ndzU1NDQwMzB2OWhrbkxQSC83d2h6dWVmLzc1T2lBSWhJQ3dFQ0ptdWFpR0VNSzB0bGxKYTlHTHRMZFkyY3RlY25KeTZOYXRHL241K1JRWEYxTlNVc0tnUVlQYTdFaHcxOVczcjFtelZ1Y2xyRFZyMDFROGJtQlkxcHFVQ1hVdEd6amdsdU11YWdCOUx1Q1c2VW84RktjK0V5ZE83RFN2cFhVdDZPZEc2YWhSb3lZOS8venpLKzFZbXhCQ3h5ci9FRUtZUW9qa21qN24zbEY3VzN4T1RnNTVlWG5rNStkVFZGUkU3OTY5NmQrL1A0TUdEYUtzckZXS05Ic3BTekRvcUZtemR4ZllvbWI1dTZacEN0TnFuZHIwZjZ0eVhTN3RGblZwS2hTS282VmJ0MjdYekowN056ZnBqa3Jwc2R6UnBFdWFXTmRwQ211N2xiQkxQeExyQnhLdFZ2YW1LNy9mVDJOakl6VTFOWVJDcmZXS21qMW5MUlFPdDQ3NXR1SnF1cDRVdG5iVzJvaGhRMllCZzlSYmRYcmk2cFYxZXJ4MnphWGU3T09JRUtMc3Z2dnV1NWoyU1FTWGxGSkxUTjZXd2pSTkxHRkwxclRaNG1ZM3lOc3oyK3dWZm9jT0hXcDkyeElkQmdrWE5HS04rVTY0b0RweG82MjFKaTFyN2NhdlgrMXl1VnczcWJmcDlNVTNwcURydnZZdkZCNkRDcXBha2VOTmZuNytWMHRMUzcxcHJEYk50dG9zY1d0bnRkbmlabzgxQ2dhREJBSUJHaHNicWEydEpSSkpMSC9Sbk5hYU13dHFENDgwREFQVE1LM2xMQWxyYmNtVGkyNEVWT1BTYVV6ZVBXZVRkWFYvWEgyenU0NmwxamVMN09sbmtEZG4yTkgva0NkVHZkbkgzMm83KysyMzM1NXdORmJiNFN3M3A5WFczTnpjeG1wekovWVhSTlBHMWhLMUpDYUdaYTFaRnB2bWRydHZWRy9QNlkzV3pVdjMrMGVkNHA5QURidzU2czMrSENndUxyNENlTk1TdHBpVTBpMkVjSk5JSkdneWdiREtQcVJoR0NJZWo4dlVXRnNrRW1sanRkWFYxVkZTVW9MYkt1V3dkNEltbFRGdTFaRVlwb0VwSlZKS0pJalF3UjFUZ0F2VVc2TTQ1Y25zQmtKOC9zOWpHbkJvSzdUVW5EWmJzVFE0YitlcmkwY052dUtPalpiRjVrRktIWUZMU2d3U2hoU21OREdrZ1NGMTRtYVV1QkVtSGcraXh3UEVZazFFb2cyRUl6VzBoQS9RSFB5RStwYmRIUEwvT3lGc3lXTGN1RzJ0R1JpMkcycEtwSmxZemdKU2VEMmVHZXFLVjV6eXVIM2d5L3Y4bnlmVUNKV2JRUStkZHFkNFlOL2lTY0FIU2FzTlBFSVNSMGdYQ0ZNaWhaUmdTaWtOdzhRd1RPS0dpVzRZNkxwQlRJOFQxWFhDa1NqQmNKUkFNRXhUb0lXNnhtYTBhQ1RoZ3VweHZXMFcxSEpEcmFRQlVpS2E5bTRaSVlTNFZsMzFpbFBibkhCQlRzOFQ4MXd0TmFlbHFBRjQzTzZyL3ZlM0Mvc2xMYlpFbkMxbE53S1lVZ29qRVdzVGNTTVIrOWVOT0hvOFRpeW1FNDFaNGhZSzB4d0kwZEFVUUhPV2R5UUxjVzBYMURRVGJtakNXdE95czdPdVUxZTk0cFMzMVBKNkorSnJKNExtQTZmMTZSNDdZc2lGcEd5elFsb1pVb2ttcFJTbWxKaW14TEFUQ2JhNHhRMWk4VGpSbUU0a0dpTVlpUklJaG1nTUJOR1NUZTVPVVV0YWEzYkNBTEhxVDcvTDBEUk5DWnZpMUVTNHdKc051YjBTL3o1Um5PYWI1bk95TXE2WU9XVkNobTIxU1Z2Y0VyUGFCSW1aUmlKaHRVa013eFFKbDlTYS9xSEhpZWx4SXBiVjFoS080QThFMGV3c3FHNjVvSGJTSUdtdFdTVWVreTY2NEZxZ24vb0VLRTROSWRNUzFwazNCN0lMb1hzSmJmYjhuU2k2OEVMbTQwVEpvM052SFpmR0hYVkowS1MwaFkyazFSWTNUT0p4RTkyMjJ2UldxeTBVamhJSWhYSHJ1SW5qeHNCRlhBb01LWVFoQllZbGFKWnFhdTdDMHVrbkpFT2tVQ2hPSzNvV2RMOEVlTnRodGJtRnhJV1FXdUl2a0pSU0lnd3BNVXdwRGRNUWNjT1F0dVdteDFPc3RsQUVyZFVOalNkSGhTUmFwNlI5aU1iR3h1RkNpTXZVVzZCUWREMmliLzZHb1hlOHpOWk8rdnJjTHRjbGE1Y3NTRTBpdUN5ckxUbk9TSnJTS3RnMUxjdXROZFptSnhJU1Zsc0VkN0p1elJJMk05a1RtaEExUU9UazVIeE5YUjRLeFFtazhqV3V1UE1WdHJWKy9NbnRPWkRKMDZjeGYwb0poeTFFYWR6RmkvL3JaL3owTVNkd3lmZ3VIcnJ4S1phbGprYnpuTXZpbGJPWWZJU2YvdUx3d2VPQVQxS3NOaDJCaGlSUitpR1FwbWtsRXF6U0R6dDgxamJXRm1zVnR0YWtnVFhGd3pSdE4xUm9tbmExdXRJVWloT01aeEFMZmp1SEczb0E2RlJ1V3MyY1I1OWlidmFQZVBiQ3d6VHlOMjdqZDh1cXlMdDhER1VudEhIQ3phVVBQc2F6NDQvOUozT3pNeWNCLzAzYk9Kc2JaTnlxa2hhbUZXc3pURk1haVQ1U21ZaTNHZWhHYTZ3dEhJMmhwYnFnOW9IVmlCb01CaThCaHFtclRLRTRxU3BIeVpncDNEeEVaL09XR2lyLzUxZHQzY3ZxTjVnMjdSZjg4citlWWV3RGI3QkgzOFhjMlE4emQ1TjF1MTdOUzQvL2lnblQ1akQwK29YTVdWdWQzRVVTcmR6RVEvYy96TWhwMzJYb2piL2c5aFc3cUxWdVcvLzRnNHo5MForWmUvOHZtSFRqZll5ODR4bWUzMzZNZFhleFNwNlo4MTJ1V0ZxWmVNN0dUZHgrL1lQYy9xYTE0cno2SXhZKzhNalFRZjM2RGJVRXJkVWRsYmhNS1RYRGxDSnVtQ0pxbUJpbXhOUWpIS3p6VXgrenl6L0M3UDd3Mzd5NVA4VHVEVytoMmFLV0xyNEdDSi9QZDVXNnFCU0trNDFPN2ZaM1dMYkR3N0FoK1pSY09JN1JOUit4eWxyUld2ditSMnd0T1pldlhYc25HMzk2RWFXZU0zbDB5Y004T3NiNjhab3Fhb2QvZzFkWC9vcTFzNHRaditSbDFyUUFzUW9XTGZ3TFc0ZmN3TnFWai9IaHp5YmhXNzJFT2F2cms4OWNWeG5tMG52dlkrMGZGckowVEQyTFhuZy9LWHhIaGJlRVcrNjlDUDcrWjE2czlMUHVOeXZaUFB3cUZsNllCN0VLRnZ6b1JUWVB1WTdYLy9yNGVjNDRtN1F5bzRDbUNTRmNBakJOSW9iRU1FRkNNdWFXR0swR3BtSFM4K3h6RTY2b3cvM0VibmEzRGswSWNhVzZxQlNLazZGbHU1bi8vK1l3UHhsajY4dkU2Yk9aUHlrUE9JZHJocXhrOFp1VnpDdk5aOTM2S3NvdXZLN2ptRnJmYzdsalVqRjVRTjZZY3loNytnMXFneERkOFRZcmdpTjRkdWFaaVRIOEpXT1lQLzBkSnF4K24vSXBsd0pRT09KTFRDNU9XSTJqUjVUQSttb3FJYzNZL2ppdlBUS0hVc2QzTHJ6bjV5eWRsSVd2ZEFxUFhyNk5HUXVmSkM5WXdyd254MUVFUkxlOHdZcmdDSjZjZVNiOXZGd0NMRTIxMm9SSWRDSWdoS21CUUVyTWhQVWxUTU9VaVRpYmhpSEJ0RnhTZDZxMVpydWhnQWlIdzFPQXZ1b0tVeWhPZG93dGxUd21mdmxNRnJ5OGpmTHArYnkySTU4cmJ5cytXcTgyNFlMcUVHME1FQzAraXhMSDJMbWludm40R3FzN3RNcDhueXJHNW1IWVZ5OWk5TXN2VXY3bDY1aHUvVTdSUmorQnBncHV2LzU5Z0Q0REJ2UWY4Y2tuKzk1ckcyZERCd1FTSVlRUW1rQ2ExaFJ6MHpTdGpnUXdwVXdLbTVZcWFwYWxCaUM4WHU4VWRYVXBGSjJUb3ZGakdWM3pQc3Yrdm9YTkplT1lXbkxzaitIcmtZbXZ1cHJLV092M2Ftc2FpUFlvUHM2TGxFS3NYN2FhelNVRDhMMjFtaGV0eFdHK25EeHllMzZKNVNzZlkvdkt4OWkrOGorK21HcXhTZG5haVdCS2lTR2xNR1dxSzJvbUZwU2FpZElQelJJMGU2aWJzTXM4TERkVUNadEMwVm5KT1l0cmhqZnc0cktQS0prd2dxU3VlVFB4RWFLeTZjaEJmdCtJaTVqdWZaOUZ5eXFvQmFMVm0xaXdvb3JSVTg0OXJxVWkwUzJ2TVBldGZPWTlPSWRIdit4bjBlTnZVd240aG85bE1odFp0S0lDUDVDaE4xNlVZcTBsVi9SSnBHWmFvbWFDRUVpaUVWM29ScHh3d0U5ZEhLU1pxR3R6cHlZTmJEYzBGQXBkck54UWhhSXprOFhFU1lQd2JmQno1WGpIcVBhU2M3ajUzSGQ0Nk00ZnMrM0JoVHg2dUlmd0RtVGVqNy9PZ2w4dlpkSTBQOUhzZkNaK2RUWlBUdmswbzkvYng5amdMQmE5TUlrUGZyMkJvaG4zY1VPeEIyWk1ZL0k5THpCMzlWa3NuektNaFQrZXhvSmZMMlhDTWo5UmIxNmZ5MlorZThnL2x2M25oeVQ3Um5GSm1SZ1pqaEJDQXlHbGtGNlhJS3BIT1ZnZncrVnk0OU1rcGxYK0lYcjI3RWswR2hXeFdJeDRQQzVNMDlTa2xDNWQxMyttYWRwMzFNV2pVQndkbjJhdktCK3YrbXlXMEtZL01tbDVDY3QvZVJFbHA4aDVESVlpUzNMR1h2c2kwQUlFZ0tDQU1JS29RT2hDWUdoQ21HNlhKcjBlRno2dlIyYjZ2R1Q2ZkdSbCtzak96RUJMellhU3FGL1RORTJicEM1VmhhTHpFbTJzNFBrVjJ5ajU4cm1uaktnQlpHWDZ6a3ZuaW1MTmFjTnVzNUpTSkRvUlRHdUZnWkhzUk5CU2luS1JVb3FHaG9aaHFHVXRDa1huWmMvTFhISHJNN3pVNHlvV1RzazdwWDQxSWNUWnE1LzVVZThPeEUxSWlVQ0NLYTFNcUxPSDFEcmNxUTN2SkhwREwxSlhqa0xSaVNtOWlyVXJUOTNhK1RGbm56a00yRzhMbXdTWGtHZ0kyMktUUW9LVWR1K29kZGhiclpKWlVWcEhGQW1YeTNXaHVuSVVDc1hKb250ZXppakxTa3RPK2tnY3NsV3JwTjAvS3BPVkhZWjFhS2tXMi9lKzl6MlhFR0tpT3JVS2hlSms0WEc3emh0NVpyK1VodmhrbksxMWxCR1dLeXJidXFOYWlodkt3dzgvZkFIUVRaMWFoVUp4RXVuMi9DUGZMWFZhYlRMUkZKL1lGaS9CbXE2THRFUXRPZExJYWJGWkNKL1BkNTQ2cHdxRjRtUlRXdEpyU0h0WEZLM1ZIVTBZWmFaMUdMSTFFYW81eXp4SXpGNDdYNTFTaFVKeHNzbkp6anpIWWJHMUtmdXc5VXBhV1ZKcDdUODJaR0tza1daYmExSktjZTIxMTdxRUVNcGlVeWdVSngyM3kvV0ZBYjN5WFNrV204c1NORTFLQkZoeHRqYnVhR3VNVFFCaXlaSWxYd1J5MUNsVktCU2R3V2hiOXVoOS9aMmlKcTE5b3poVzh5WGliTTZhTm9mRkJwQ1JrZkVGZFM0VkNrVm40Y3dCZmRza0VHZ2JaeU0xemlhbGlTbk5WdVVqVWI4MlJwMUtoVUxSV2VpV216V0Vkc21EdG5FMkhIRTIwMHkwV2JrZFk0cUVFT0pjZFNvVkNrVm53ZU4yRDZkOWpDM1pMNHF6bmkzcGpyWmFiT3phdGFzbk1GaWRTb1ZDMFZrUVFnejY1ZmRtNVhRa2JpUlVMVm5QWnJ1bGRveE45T25UUnpXOUt4U0tUc2VsNTUvYnh4SXlhK0FrR2hKaFQ5V1ZXSlVkVmhlQ2xJN3Nnc2ZqVWNLbVVDZzZIWDJMQy9vN3JMUjJ0V3hZSTR4YXV4QVN3b2FVVXJoY3JyUFZLVlFvRkoyTm5Lek1NeHlpMWtiWXJEaGJ3aU9WQ01zVkZacmRJeXFFVU1LbVVDZzZIUjZQZTFDS3FMa2NGaHV0NHBaSUlOaXVLTllkemxLblVLRlFkRFkwSVlZNHJMVDJKUjlwRWdnYUlHcHFhZ1p6dUhXQkNvVkNjU1NxTnpGM3pvTU1uWG9mYzlicngvT1JmU3NmdjcvUUtXalNtc2RHc3VURFRpQTRMTGFjbkp4QjZsMVJLRTVYL0x4NC95OVlWQWxVdjhHMDc3OUI1VEUvaHM2YUYvN0N1cDVYc2ZhbFgvRGtlRS9ibTdlL3hJUWJsN0ltOXVsZTRkRFNma1drTGRLMU94QVNncWJyQnVHNFpiRzUzZTR5OWVZcUZLY3BMYnQ0czNFZ0Y1WkE3Wlp0UkljUCtoVExZY0xVTnVxVWpCalVacXQ4a3RLTGVITGVGTVo3UDkxTExPeVJWNXpHSFJWdER5a00weFM2QVc0cHBkQTByVlM5dXdyRjZjWlc1dDc2SXV1Q1llcGlIamJmK0JIUllJQ290NUlKTmRleGR0NDViZU5Uc1VwZWZQclBMRjVmUlMyWkREdDNDZ3Z2dW9CaE9aVTg4LzFuZUdKSG5OaU9SWXhkUFpabkYxL0RhT2ZQN2xqTDdZL29QUHFuYnpEK3pkOHdjaG5jVUJwbTNZNXFhbU9aVEx6cE5oNmRWSXl2OFcxbTNQb09lUmRtVXJtOWdkb21LUHZ5TkJiY09LUlBXMHN0R1Y4VEpsSm9nRzdheG1NMDRZb0tJUWFxTjFtaE9OMFl4cU8vZllTVk0vb3lhdVozMmZpSE9keFJNb2o1enp6Q1c2bWlSb2cxanovREU0MWplSGJKWTJ4ZmNpZlhCRmN6Ni9GTjFGTENuYis4ai9uRDNZeTZhUjRiVTBVdEhUVU5NR1VXYTMvN0NHL2RPNUQxUzE1bVRVdXJhOHp3RzFpNStHRTJQak9Ob3ZVdjhwTTNRNzB0eTZ5OXVBRlNDT0YyaWNRZDNON0VEVUtJQWVwTlZpaE9SM1MyN2doUWRrWXh0RlR5UWF3dnczcWtjMWUzc0d4OUp0TnZ1b2hoT1VCT0NUZmNObzY4OTk5aFhlT25lTnFlWjNITmlNVGF3THpTTXltTE5WQWJ0RzhzNXNJeEJRbGg3WEVPZDB6SVplTTdPMG82RURWN3NRc2tCeFZKM05ZTlN0Z1VpdE9NeXRYUE1HTlpKZjZtTUd4NWtIV0VxUXQ2Mkh4ckJUYy8rRDN1ZEFhb212elVVa0JwVDZjNDlhV0VqOWpUQ1BUNERDL0V5ak5FZFNCTkRLNm9PQS8rSGVtWFlyRUpDWnBJbWFacnk1dTJhOWV1WWlCRHZjMEt4ZWxGeVpRN2VldVphWXp2K3lXVy91RVJYcDE1Sm1kZGRUY2JmNXNpYWdEZDh5aWluajAxYmQzSld2SW83Zkg1dnM3S3lnYkl6czM0MmJ4YmNqcTAyRkxRQ2dvS2VxdTNXS0U0VGFtcG9Ka3ZCcUFBQUNBQVNVUkJWTHk0aERLZ2ZFODlKYVhGNmUrWE00S1o0OE9zZU9GdHRyWUFMWlc4dVBRTmFzLzlFaE9QdTdCVnNlcC9LL0FEMGNxM2VlTE5NT01ubk1rWEI1K1I1eEN5MW5xMkZLUnA0dmI1Zk1YcTNWVW9Uay84bFExUU1vWTgvSlJYZWlpYjR1bmdubGxNdnZkT2FwLytNN05tcjhRZnk2UnMvQlNldldzTVJjZjlWZVdTVjdtYWFkZnZvaktXeCtncE4vRG9wRHlhZC9mSTY4QmFhMTFHSlJDR2FVZ1JqVWJ2OUhxOVQ2dTNXS0g0YkJpR1FXVmxKUU1HSEVQSSt1TlY2c1E1YVh5YkdiZSt6NVcvbmNNTktaWmdaWFhkZ241ZnZ2a2RJR0FmQWtJSUlnSVJFd0pERThKMGFacDBhNXBXcE02bVFxSG83R1JsK1BJY2JtZ2JTODA1NVFNa21xWnBCZXFVS1JTS3pvN1g0MjRYWXlOZGpBMXdDeUh5MVNsVEtCU2RnaDRYc0h6bEJXbHZjcnZiQ0Z2N1F5SnNtZFA0YkJVb0NvVkNjVUp3YVZvNlY1UTJWcHRWcUtzQmVlcVVLUlNLem82bWlSelN4ZFprRzNFVEV0Q0VFRXJZRkFwRnAwZUk5c0tXYXJuWlhWVWFrSzFPbVVLaDZQVENsdEFxcC91WnB1dEFKb1V0UzUweWhVTFJCU3kyekJSUmMyaWViQ053R3BDcFRwbENvZWdDWkJ6R0RXMWp0V21rN2FkWEtCU0tUb2UzdlhlYVR0WlF3cVpRS0k2R0VKdFhQTU9FNjcvTDBPKy9Sdm5KRTdaMkNZTjJBaWRiNTRjckZJcFRsUzEvWnRMQ2o0aWlzMjdSUXVadStoUWJwQ3JmNGFGbGZpWS92SkR0djd5VTQ3Y2twWjUxLy9NR2E2cVA2czZ1dzFoczFrWjRNR2x0UzFBb0ZLY29XemRWVURSbUlENnFlRzFQTVJjTzhSejdnelEyVUp2ZGx3dUhIdTljWXdPdnJWak5hMGUzRmt2cjBFcXpUTFhFSm5nUVVrcXAzbnFGNHJQVDJhWjdsUC9Qazh4WVVZVy9TY2ZYUFJPZm5samFVcGpkazV0LzNINllaTzJtbDVuN20zZFlYNlBqNjNrbTAyZDluZm5qQzRpdVg4cUV4eitpTGdpNTJabU1uMzBmejA1cVcvNGFyZHpFZ2wrL3dpczcvRVN6aTVuNDFXa3NuSDRtUmNDNlJmY3hOM3MyRzc5MVp1TE82My9EME4va3MvekhlU3k0ZnkxYm04S1FuVXZaNWJmeDZsY3IweTV6ZWZTMmN5Z0J4UENwMDRBZ2lla2VmcUFGQ0FxSVN0Q0JPQ0ExRXBhYlFxRTR4U2o3Nmh3Mi92WW1wdlk4aDBkLyt3aHYzWHNPZlMrY3pjWS9wSm1RVy9rYXN4NzlpSkpaOC9odzVTOVllMXMrNng1ZndxSTk0QnMvaTQwUGpxT3crN2s4K2FkSDJva2FzUW9XTGZ3TFc0ZmN3TnFWai9IaHp5YmhXNzJFT2F2ckQvOENTeTVsNVI5bU03MTdKbFBuUHNLcnN3WmFON1JmNXZMUVdqK0gxU3FSbUJPZUdNcW1vUUdHdWdRVWlsT1VtaXJLZXc1aW1CZkt0MWRUTnJ4djJydHRYdjBPbGNPbk1HOThBVDQ4RkkyWnlyemhEYXhZWFhIRXA0aHVlWnNWd1JITW01bXcwSHdsWTVnL3ZTK2JWNy8vS1pNTTdaZTVySDlyRy83Mld0VytWOVRDRGNSSXJsTlFLQlNuQmx0NTZJNi9zS2JKVDEwc2syazNyazdzRE0xK2hBbnZUK1BWZVdQYU5JblhOb2JKS3k1d2ZDK0xrcEpjL0pYMVJCbVlzb292UmRnYUEwU0x6MnF6S0xtb1p6Nit4bXBxajhOdmtsam1Fc2FmMEtxalF1TVk3cXhRS0xvS3cxaTQrR0dXZmptZkMrOTZrSTEvbU1YVW5pTVNMbW1LcUFFVTljakVYMTJQUC9rZG5jcWFBSGs5Q2c0cmFnQytIcG40cXF1cGRDaEpiVTBEMFI3RmliSGhuN0dnekZybVFsNTdyWklwWDlzSVcxaGRCQXJGcVVpSThtb29LOG1DeG1yS3ZjV1VkU0F5bzZkOGlaSi9yMlhSSmo5UkVvbUVKOTdQWi9xVWdVZDhGdCtJaTVqdWZaOUZ5eXFvQmFMVm0xaXdvb3JSVTg2bERDZ3B5Y2UvNVNQV04rcEVHeXQ0Zm5XRlE2RTgrTHc2dFRYMVJKUGZTNy9NSlE4aVIvVnJ5NFFyR2xJWGdFSnhLdExBQjVVRm5GVUM3SzJpdHVlZ2p1dlBTaTVsNmR3d2MzL3pDQ01mc2JLaTk4NW1YdWxSUEkxM0lQTisvSFVXL0hvcGs2YjVpV2JuTS9HcnMzbHlTbUk0ZDlubDEzSFBscVhjL3YvV0VlMCtnS2tqOHNsTi9uQmZycGt5a0ZtL2VZUkplKzdrclpuUTBUSVhLV1U0alhYbStMOUFDSWtwVFNta2xCOEFJOVZGb0ZCOE50UXlsK1BBWVphNW1GSnVjWTI0Nm9lMGxuczRGN3BFQlVJWGdyZ21oS2xKS2YzcWJDb1VpczZPbExLbFkydk5ucDJiUUFPVXNDa1VpazZQYWNvV2g0REpkSUptZWFTNHBaUk5RZ2gxMWhRS3hjbm5NTXRjRE1NSUhNWmljK29hbXBTeVFaMU5oVUxSMllrYmhqL0ZZcFBweFUyZ1NTbnIxU2xUS0JTZG5XaE05M2ZnZmtySHVnTUFOTU13NnRRcFV5Z1VuWjFRSkJxZ2ZXeE50bmRFUWROMXZWcWRNb1ZDMGRscDhnYzdja1dUWW1kbkM5eVJTS1FtSnlkSG5UV0ZvaFB4eVlFYWRSSlMrR0Q3bmtESG9pYXRGYU9KUVd6dWd3Y1BIaXdzTEZSblRhSG9SQXpvMDFPZGhCU3E2eHZ0Y2cvVEZqV1I4RDZsN1lJS0lkQTBnVFp5NU1nYWpyWUhTNkZRS0U0T2tibS9XaG82akN2Ni85dDc4L2lvNm52Ly8vVTUyK3hMbHNrZUVoS1dFRVJBSytEdmlsaC82TldxYlM5WVdyUzlTbHUrYVB1cjFHOEwxUXE5dHFCdG9jdEZieXRXcjFoYnNGcWdWV3BSUkJUVUZsY1VOU3lhUkNBUVFzakN6R1NabVhQTzUvZkhuSFB5bVpNelNiQnN3dWYxZUJ3VEFtYVpNL1BNNjcxOTN0VGFDWSsrbzNiMzg4ZU5pNHZyVEJXbDlJQU5aRHJqM0RKRURMQlJTdWsrL3RCeGNYR2RxZEowL2FBTmFobHV6ZHlZYkFTa2FiRHB1djR4ZitpNHVMak9WQ1dUYXJPRFkzTnMrU0FrdmZPQWFwcld5Qjg2TGk2dU0xWHg3cDVtaHhBMGErdUhsS1poc2tGUitONWtMaTZ1TTBFcGJGajZBOHgvVFUzL3NXQWFmbjdIWjFveGhCd2JJU1JkR1FWQU96bzY2dm1EeWNWMVppblI5QllXM1hrM3hsOTNHMnErOWtzczJOekVuREk3TkVEVWJYNGVhM2VmckxOa1c3QnA3U3ZZM25HaVA2K002eGI5Q3J2Vy9STHZMQmdIQlVCRC9iNDJCbVkyMTJhT1V4SHJ2d0lBV2xGUjhSRnduSThaRnhmWHlWUHlReXhaK2lSMlZNM0Erc2QvaHMwTHowZlR3dzlnd2ZiamdWUVBkcnl3RVd2Mm5LelQvMXV3YnMxTDJOWnhjajY3UzVFUlRBZVNpVHUrdjd6RDd0UUlvSU5rOUxTbEN3Z2tIWXFhMW00WGdBbjhHY1hGZGZvVjNmNFNObUFTSHAxN2Z2bzQ3M0ZYWU9uMWIrT2FwOTVENjVUSmlEaWNOTHRwNmYvRmtzTGI4UExjU3V4NDlPZVk5Mnc3b2wwcWtudVdZZnpqQU9RUldIemZYRnlmQTBRM1A0QkpheVZjVjlpT0hRM3RhRlZLY2YzY0c3RjRTdm80NzhTMmh6QitUU0hXci93OGFnRUFIMkxSMXg1RzlMcy94MzBYdHVDUk8rL0Rpa1lWaVZRUHR2N3dCMWdOd0RYOGFqeiswOHV5SHorZW9XNXNYN3NhUzU3YWhmb3VJRmcyQm5QbWZobTNqZ3M2L0Z1Nnh3WTFIWUJPQVFvS0NxUzN2aE5pTEJhbGVqckhoblJsdEU0UUJBNDJMcTR6UUUwTkxVRFZaQU1xYVZXUHJrVHdxUTlSajhucDdVOERhT0xOUDhEck4wZXgrczY3c1c3S1Fxei9RbDcvZjlTcFlzS2kvNHZsWlRKYXR6K0tHZis5R2xVcmJzT05oWU45ZDRYNCtrL3Z3ZGV4RS9ObVBJM3FleGNOYlRjQ0cyYS90UjYzUFFVcy9PblBjWDFaQ25VYmY0K2I3MW1QNm9kdnhwVzJDVTlkMSt2UlA3ZW1BOUNKMlpSTFFUVktJWUdBQ0NJRVFnZ0ZRRlZWcmVOUEp5NnVNME9KTGhVdVJjcGNmZWVUNEVxcEp5NW5WREFDVThyU0s0VWpVNjdHRFFVZjQyL3ZuYUlEdFJVWnJsUVBXanVpaU1LTDJxdS9pYzBQek1JMGg3RjFYVXZ1US8vOEdoT0NFaW9RQUpSQ0ExTThBRUI3ZW5vKzRFOG5McTR6UXk2ZmhFVFNCckV1RlFsWkduVFA1eWRUQUdVNVFMVHoxR3pqZEkyYmdjZS9Pd2E3MWp5QTZWKzVDOVAvYXowMnRLaU9QMXV5TjM3UUJqUU45cFlQUWloSlQ4SlRRdnBHcXVqZXZYczUyTGk0emhCVjF4UUNlejVFWFVaNDJvUm8yVWdqaHlVRFNDRnh3dGFkeDlEVUFnVERualI0RkJtdVZPcWtWUlFUTFMxSWpMNE05LzEwRVY3LzAxMjRiMm9QVnQ2OUdtc2RDaEhSOWdNdEJzQTBCbXJHWlZSRUtRVUZJQkNTdmt6aVRaNDgrU2lBRC9sVGlvdnJESEJzRjF5QjYrWFhzZVNoT3RUSHU5RzYreVVzV051T0s3OHdMcDFmeXlsRmJjRkIvTzNsSmtTUlF1dnU1N0hxZmRYMldUd295NUZSLy9ZdTFDZUJSRHlLS0F2Q0l6dXhhWGMzZ0JUcU56K05WVWNxY2EyWnZCOWVpZXFPWGZqYmU5MEF1bEczK1NWczZyUi9sMEdVNWJSais5dE5pQUtJZG5RUEdZU3QyNS9BTlhjK2dVMHRLUUJlUkFvRGNDWDdnN1EzZ1krT0hkN1pnNnl0SHVsTHB3Q0lBSm1raXdoVzhRQ0FydXY2MjRJZ2pPUlBLeTZ1MHl5bEVnc1h6Y0tTM3p5SmEyYTNBK0ZTWEhuRHJWZyt4V3Y4Z3pMTS8vWmxtUGZmdjhLRTM4c29QZThDWEhsZUFFMFpuMFRHdEp0bTRNcDduc1kxTTU4RXdoV1lmOWYzY0d1TjhkYytMM1k5L2l0TWVxOGQwWnhLWEwvd3hyN0NRZUcvWWVsTkgrSzJleFpoVmRLRENaZGVnQ21sOW0reUVyZk1uWXg1di9rVkp2d2VDSlQrRys2N2J5YW1EYUhYdit3TE4rUEJqdlZZOXYwZjRMWXV3RlZRaWV1L2U2TlI0ZTFyMEtXVWZ1QVVocEowVlZTbjZlUFhBRUtvTEtiZEdpRUVSQlJGV2RkMUNZRGMwOU56cTh2bCtobC9WbkZ4SGI4K1RRdVRvNXNmd0tTblIrQ1orNjRZWW52RzZkSGhveDIvTEw3c1AxOUZla2x5SEpsTGtuc0JraElJVkVLSUxna0NWU1NCS29xY3pyR1psZEZvTlBvMmYzcHljWEdkS2RyZGNHQ2Z6YTJ4T1RaS2pKRXFvekdYa25TT2pRcHNuRHByMXF5M0RTcHljWEZ4blc3RnYvYUQ1UzNJcklSbWdNMjhDQ0dVa0w0VGRDVkNpSEZLT1BTdFc3ZnFsTkx0aEpEcC9ESGw0anA3Rlp4K0szYWY0YTl5VmRQZWFtcnQ3QWMxWTVTS0FzUndiZWFNYUJwcWJCOGJqTGU2cXFyYitXM240dUk2M1lyR3U5OTNDRVBaY0pTbVkxQllibzJZN1I3R0g2aVpaNHZGWXEvemg1U0xpK3QwYSsvSEJ4c0dnaHJKT0RtWFFDQkdINXNnSUNQSEJrRC8xcmUrdFIzQU1mNndjbkZ4blVZZCs4YWlYemRsZ1pwRGpnMlVDQVNDUUtnZ0dJNk5FWDN5eVNkVlhkZGY1bzhyRnhlWGt5ZzkrVjhqcGFxdjFUVWVZc05RTlJOdWZXZXdNZUVuQ0JFZ0VDRmRQQ0NFbUgxdUZJQ2VTcVZlY2JsYzEvSmJ5TVhGQmFTN1lRK25QRGlTVUtDQklKN1FUdXJYYTJ0cjI1a3RES1hwQWdLbDV0UUJDRktVQUZRRXFBaXFpMm13QVZZdm0wNHBwUzB0TGE4TUd6YU0zMDB1TGk3b0ZOZ1JDd0t1QVB4NVFmaDhmaFNlNUsvNTRVZC9yM2VBbWdaQU0xbEZDS0ZFRUNBSUFtUlpocUs0NEhLNTRIYTcwOGNXbVlVRDA3RlZWbGJ1QnZBK3Y2VmNYRnlIVTI3QUZVQmhVUWw4UHY4cENIVnAzZHh2ZnIzTkZvYXFCdFJzUnhhWlBXeUNrVjlMZzA0UUJBRk1uczJDbTZxcVcvZ3Q1ZUxpT3BKUTRBOEVUOW5YNitycWVnM091YlcraW1qYWtCa3RIZ0lFZ2NDQ21paFk3UjVtS0FyamY5U2owZWhML0paeWNaM2JvaFRRcUpEZHFiVnR4OHJ2ZlFXZnUveGlUTC9xUC9ERHZ6Y0RBSnFmL0NZdXZlUmk0L29tL3R3ODlLOVpYLzlSSFRMemE3YkNBWFRMaUJtVEJvSWdnQmhRRXdVUmt1bllHTGhSU3FtZW41Ly9pcDdldmx6S2J5OFgxN2twUW9CNFVzdVNVNHZoNWZzVzQxbDhDeXVlK2crTVZHS0lJUUFBS0o3MU1MWjlJWUZFKzkreDRNWm5qdWRMSHJyMmMxZnR0NFdneG1VUFF5azBWWWNrcDZFbXNvN05zRzlPUzBjMVRkT2U0N2VXaTR2TFdjMzQ0TU1rYXEvK0hFWUdBTGdDQ0xCSDRMcGNjQjNudXVLZW5wNXQyZHdhSWRDUXNYS1BVbDNYcUo1MmJGUVFSSWlDQ0ZIdjdPL1l6TGxSQUhvc0Z0c2NEb2Uvem04Z0Z4Y1hFMzlpNDUzL2lmdDNKSkdNSjRGZlhJdlAvUUtBTWdWMy9ua0pwcnFHOWpsZSsrTXlQUGprZHV5UEt5aWFlQTNtZmYrN3lPOXNmTmNHTmF0d1lMUjU2QVJJQTgzNFRNbDRITzN4T0FSUEJGVmxQb2pFblFhYmVlbTZuZ0czM056Y3pUd2M1ZUxpeWxRZXJ2N3BNN2dhZTdIeWhyblkvL1cvNGQ3cHg3ZUpZZCtUUDhDUC8xNkJPeC9jaEttNWNieTI4bmI4K0h1L1BmVGUxcDgwR3NaS3RZTU5sT29naElJUUtnb2lSS0locVJKNHdpRUVqVFlQVVJRZ2VuSWdwQzJja0RFdnlwUlVkVTNUTnZJYnljWEZkZUswRnh2LytpRnF2L3BkVEMxMkFhNDhUTDdsRzVoNDlPbVg0SmhiNno5S1JVaDZPeFVoQURIQ1VFRVVJWW9pUkVtQ0lJcWk1ZGpNa0JSOSsvdTB6czVPRGpZdUxxNFRxSGEwdC90UlZCem8rNUNyQWdGdjI0NXNZYWdGdDR3MkR3QWdTRU10WFEwVlJSR1NLS2JCWnNLTmdaclZ6eGFKUkY1QmVrczhGeGNYMXdsUUxuSno0empjRnJNK1FudWI5L3ptalFQMmFtaktoQnJKUERIWE9DazMvZit5VUJORkNaSVc2NnVLbW0rWlk0eXNBZFJrTXJtQjN3d3VMcTVQckl3MWdhTnc5UmRIb3U2UjMrTGw1Z1NBTnJ6eTJ3ZGVRdjlKZzR6Q2dYV3dwTUVvUVJSQW9OTkVra0lVQ1hRS1NKSUlpY1lnc1k2TnliVVJwanFxSFRwMDZPK1ZsWlVMK2QzaDR1SWFpcHFmL0NhK2ZGL2ZxdUozYnJ3WTl3T1k5TU5OK01YbkFxaVk5WFA4VjlzUzNEL3ZTdnc0cmtBTGpYalh3YTNaRzNNcFRPTWxDQkJrQlg2dEcvR09JMmpzSkpEOVpSaVhtd001TUJKa3hJZ1I2TzN0Ulc5dkwwa2tFa2lsVWtSVlZhTHJ1a0FwbFpEZXpPcFNWZldQZ2lCY3lXOFpGNWV6UGsxYnFvWXFTb0czWTJFVVZweThyWnlxcXI0NHZLSnNKWUJlOUcyak1xOXVRa2dDUUlvUW9oSkNkRkVVcVNUSlZGRVV1Tnd1Nm5hNzRYRjc0UFY2NGZQN0VRd0VJRWlTWkRxMmpPcW9QUnp0N3U1K21qOTF1YmpPTFJFQ1NFUkhWOWZKMi9IVTNIem9WWWNRTkFWQUpZUmticVV5MkNRSUFrUlJvRlp1VFJJaFNSSmtTWUtzS0gzRkEzc1J3VllkMWUrLy8vNE5BQTd3VzgzRmRXNnBRRW1nSzNaeUR0V21sRGI5MTQ4VzcyTEFscktGb1RyTUk0ck1uUWJXMkZRZnR5UlJTb05ObHFFb1NwOWpZL05zZ2lDQW9hTU9RTHZycnJ0NlVxblVPbjZidWJqT0xSVXBDZEJFSEVlYW0wNjRjNHZINDg4OXYrbTVsSk5iQTRnOXY1YUdtekVYYW9lYUpNdVFGUVV1bHd1U0pLVS9hUHdqS29vaTBUU05Db0lBVGRNbzQ5clVBd2NPL0xXcXF1cTcvRlp6Y1oxYjRlZ0ZnU2lPSkxweHVDMk8yRkVSWGNrVGM0THVLNis4OG5ZV3Q2WUMxQng4VDNPSUd0SjFhSnBHTlUyRnFxYVFTb2xJSmtWSXZTSjZaUWs5THFVUGJFeXVqUTFITTJaSFI0d1lzVXRWMWZXQ0lNemd0NXVMNjl5Q1c2RmJSYUU3QmtxQnpGVXBuMHlKWk9wdmx5MWFkTlRtMUZJQVVnUlFRY3d3RkZRZ29DSUJaQkZRSk1DdEVIZ1V3T3NDdkc0ZzRBVkNmaUEzQ0JUa0FJSXN5N0M1TnRnSDQ0MVJLdzNwU1FRZWpuSnhuZU9RT3hIYTNYamdWUWUzbHRIbWtiRml6emgzVFJUVG9hZ2tpcEFrRWJJa1FwWWtLSW9NdDB1QjErUHVBNXNvaXVaYmFvYWx6SkhoVm5VMFB6OS9DNlgwVlg1N3ViaTRQcWswVGQ4K1llYjh4Z0hjbXRaMy9scmFYSW1FVUZFZ0VBV1JTcUlJVVV6RFRaWWtLTElFdHlMRDQzYkI3M1ZEVUJRRnNpekQ3dHhzRGJ0V0VRR0EydFhWOVFTL05WeGNYSjlVQnc2M3ZqQ0FXMU1OdDZhVDlKWjNLaEJBRUlqaDFBUklrbUE0TlJHS0xNRmx1VFVYQWw1UEg5Z2NpZ2ptaUZYRzdDZ0FiZnIwNmVzb3BYelpDeGNYMTNGTHA3UnU2bGUvLzM0V3QyYk1oL1lWRGRKZ005eWFLRkRUcWFYYk8yeHV6ZU5HTU9DRDRISzVrQVZ1R2E2TkRVZGZmLzExdGJlMzkzRitpN2k0dUk1WFI5bzZuMjFxN1dTaGxqU3VOTlNJZVpKSHVuOU5NUFlhbUMwZWJHNU5rZnJjbXMvdFFzRG5SWTRkYkRhNHNhN05QaGl2cmxtejVra0E5ZncyY1hGeERWV1Uwb1lmM2YrSEhZT0VvZFpKdVFSQTJxMEpFTVYwYmsyU1JNaWlaQlVNWElaYjgzazlDQVc4eUEwSElIZzhIampCelZZaFpVTlNEWUEyZCs3Y2FHOXY3eC80cmVMaTRocXFXanVpR3g1YTkzekN5YTBSSUdVVURUVEFQRWd5N2RoRVVUQ0tCUUprVVlRc0c3azEyWUNheDRXQXo0Tnd3SS84bkZBYWJHNjN1MTg0bXFYOUk2UDFZOE9HRFU4QWFPQzNpNHVMYXdodXJYSFp3MCsrWllNYTY5ajZXanpTUlFNSWhFQzBpZ1pwdDJiT2hDcXlETGRMaHNlbHdPLzFJQlR3SVM4Y1FGRmVEZ1NmendlMzIyMjVOaFp3OXRZUFc2NU4vZktYdjl6UjA5UHpHTDlsWEZ4Y2c3cTE5bU5QLy9LeHAzdHRJYWpwMWxTUXZoVjdwbHNUQlVMVGJpMGRocWFCbGxrSjlYbmNDUGc4eUFtbTNab2tpUkQ4ZmorOFhtK0dhenVlMW84Ly9lbFBqMU5LK1FtN1hGeGNBN20xUFhmLzVvOXZPa0ROZEcwT0xSNUcwVUFValJZUGV6T3VESy9iQmIvUGNHdWhBSXJ5Y3dBQVFpQVFnTS9uZ3owa1plRG0xUHBoVlVpLzhZMXZIT3Z1N3Y0OXYzVmNYRnpaMU56YS92UURUejQzV0c0dG95RlhNTnlhSkFxMEg5UVVHUjZYSzhPdFJYSkRjQnVMVElWd09Beld0UTFRSmMzcTJtYk5tcldHVXZvNnYzMWNYRngyNmJyKzV2UnYvSENIQTlRR2NHdUFLQkJJZ2psZDBEZGg0SkpsdUpWME02N2Y1MEU0NEVOZU9JaWkvRnpyYXdvNU9Ua0lCb09XYTNQS3RiR3VqZGthYjIxcjNyaHhZeklhalQ3S2J5RVhGNWRkRFUySG45blZlRWpGNEpWUUhTQlVTQjhrU1VWQmdDU0pobHRMUTAyUm1mWU9qeHRCbnhjNXdRQUtjc1B3ZXZwMm13cjUrZmtJaDhNSUJBTHdlcjBXM0V6SE5sVFhGZzZITitpNi9uZCtHN200dUV5bFZQWDVrWitidDh2QnFRM3Uxc1JNdHlZYkJRT1AyeGlkOG5rUUR2cVFueE5FVVNRbjQrc0tCUVVGeU0zTlJUQVloTi92dDNKdERoTUpBN2sybFJDU09uTGtDSGR0WEZ4Y2xuYnNxdCtFekdaY0MyeUdXMU9INnRaY1ZudUhNVHJsOXlJM0ZFQkJYaGcranpzVGJDVWxKY2pQejBkT1RnN01Rc0pRY20xbU1ZRjFiY1hGeGY5SXBWSVA4OXZKeGNYVjFkTzdadkxzN3grd1FTMlJ6YTBKUmlYVXlhMHBzZ1NYeTJ6dmNDSGc5MXJ0SFNXUnZINWZXL0I0UENncUtrSmVYaDVDb1ZEV1FvSlRoZFRlMTBZSVNYM3d3UWVQQVRqSWJ5c1gxN2tyQ2h6ODYrWi9ib056d1lCMWF4bDlhMVlsMU83V0ZLTmc0SGFuMnp2OFh1U0ZnaWpLejRISHJmUUhHd0NVbEpRZ0VvbUFMU1I0dlY2NFhDNWtHNUxQbG11Yk9IRmlmWGQzOTRQODFuSnhuYnM2Y3JUanlhL2UrYXNPbTFQTDZ0WklobHNUTTg1WmN5a3lYSW9DcjF1Qnoyc1VERUlCUkhKREtDbkljL3o2QWdBb2lvS2lvaUprS3lUWXFxVFVuRXF3citnelhkdlVxVk1mMDNYOVJYNTd1YmdHa2VJNzYzNGtWZE5lL3N5WGJudGpDRzVOTTl5YWJrNFpTRWJmV3I4cXFIRXlic0NiYnUvSUR3ZFJGTW1GSWt2WndRWUE1ZVhsTUFzSlpranFWRWhnaCtTWkdWS2RkVzA3ZHV4SUhqbHloT2ZhdUxnR1U2amtyUHVSZHU1cGZLYXB0ZE0rWFpBQWtDRE1CaXJEcmVuRU9rU1NXRTVOdG8xTmVUenBrM0hOMHpzSzhzSW9MOHJQK2owSTdCL01rTlIwYlFQMHRsbXVqWmxJWUoxYnFyaTQrT1ZrTXZrYi9zemw0aHBBa1pGbmxXdUx4cnNmdlhEVzdSOGJibzJGV3QvQWUvL3oxcWhJQ0UwUHVJczBmU3F1bk9IVzBoTUdYb1NEZmtSeXNvZWdqbUFyTEN6TUdwSTZqRnRSU1pJeUNnbXNheU9FSkxkczJiS0tVcnFEUDN1NXVMS0lDRUQxcFVCT0JTQjdQdFUvaXE3VGR4LzQwelAyZ29HVld5TkEwZ3hCbWZQV3FHQ0ZvR21vWlp5SzZ4U0M1dWVpTUM4ODRQZlNMMEF0TFMxRmUzczdvdEVvNHZFNGVucDZrRWdra0V3bWtVd21rVXFsb0tvcVZGV0ZwbW5RTkEyNnJvTlowNmRSU2dVQTZ0VlhYMzI0cmEzdHdkemMzSlg4R2N6RmxjMWVpRURKdUUvOWovSGhuajNyNy9qdngrSU9VRXM3TmtMU0JRTkNOQ045UlFWUmhDakxrRnd1U0M0WFpJOEhpdGNMbDk4UGR6QUliemdNZjE0ZWdvV0Z5QjAyREFValJxQjAzRGdnRkJxNll3T0FVQ2dFcDk2MkxJMjdHU0VwSEpwMjgvTHlOcVpTcVlmNHM1ZUw2K3hWUEI1ZlhWTlRzNGNKUVRPZ1JnaGgxK3JwQU5LTnVLSkl6Vll5V1phaEdKdmMzVzQzUEI0UGZENGZBb0VBY25KeWtKK2ZqNUtTRW9RR2dab2oySUIwSWNIc2JXT0g1TFBOa3RxYWRuVkNpTlZwVEFoSnZmcnFxNDlRU3QvbXQ1K0w2K3lUcnV2dlBQcm9veStpZjE2TmhWcktNRHNhSVVRM0pwaXN0WjhtMUV5d2VUd2VlTDFlK1AxK2hNTmg1T1hsb2Fpb0NPWGw1VU16d1U0ZmxHVVpaV1ZsS0N3czdGY2xkVGh4ZDZCQ2dnb2c5ZG5QZnJhcHJhMk5oNk5jWEdlaDl1elpzLzQ3My9sT05Hc0kydGUzWm14MkoxbmRtdW5VUEI0UC9INC9RcUVRY25OelVWaFlpTEt5TXNpeVBLVHZTY3IyRjBWRlJlam82RUEwR2tWWFYxZldYQnViWjlOMW5lcTZibTYxMGlpbHhIQnRRaVFTMmRUYjI3dkM1WExONTA4RkxxNnpROGVPSFh1NHRyWjI3d0J1emRvK1piZzFhb0xOYlBobm5acnAxdngrUDRMQklISnljaENKUkZCU1VvS2lvcUloZjEvU1FIODViTmd3ZEhaMkloYUxvYnU3T3dOdVpnSEJ1S2l1NjhSV1NLQUFkRXFwVlNYOTR4Ly8rTDl6NXN3Wkt3akNkUDZVNE9JQzl1M2I5Nm45M2xWVmZlbWVlKzU1MlFhMVhwdGJ5OGlyQWFDRUVPdHpHQ1lJQUpER1J2cXR3UkhyWThmN1dBMElOcC9QaDdLeU1zdTFkWGQzVzJCTHBWSjIxMFkxVFNPNnJsUGpHOU1OeDJibTI0UnZmdk9iSGRPblQzK3dvcUtpRmtBSmYxcHpuZXVxcUtqNHRIN3J6YSsrK3VxR1ZhdFc5VGlFb0wyd0ZReU12SnB1T0RWcU9EUnE1dExNSWtFNEhFWnViaTRLQ2dwUVZsYUdxcW9xMU5iV0RqbTNOaVN3QWVsQ3dyRmp4eXpYMXR2Ym13RTN0dlhEQ0VkQjA0TFIxMFlvcFdvYXprU29yS3g4SXhxTi9rOGdFTGlYUDYyNXVENmRPbmp3NEI4dnVlU1NKZ05xTE5Ec0lhaHFUaVlSUXF5OG1yMVk0SGE3TGNBRmcwSGs1dVlpRW9tZ3RMVDB1S0VHWkNrZU9QMVdZVnRBMkVGNVd3c0lkUmlTWjhldFVvU1FaREFZZkNLWlRQS1JLeTZ1TTFSMVM2YWlxdXBtckkzMi83dDRQTDY2ckt6c2JXUzJkbGdocUMydlprSE5WZ1dsMmFER3RuWjhVa2M3SkxBRkFvR01GcEJRS09RNGxXQ0RtMWtselJpU054K0k1NTkvL21GZDE3ZndweEFYVjFyUnVyVllNdThhVEIxZmc2cXFHb3lmTkIyekZ6eUNyYTFuenZlb3F1cldsU3RYYm9GekJkU0FHMDFTU2xWS3FhYnJ1cTVwbXE1cE90Vmh1VFdxS0FwRXRRdnQ3VEVrNVhRNEdnZ0VFQXFGTWxvN0FvSEFKL28rcGFIK3cvTHljc2RwQklkY1c3YVFGRWJPVFNXRUpLKzk5dHBEalkyTkQxUlVWRlFRUXFyNTA1cnJYRmJyMWdXWVBXOGRHb0lUY08zMTgzRkRLUkRidFEwYk5pekZuSzJ2WWNVekQrSzZ5T245SGltbERkdTNiMzk2d1lJRk1ZY1F0QmZwSWZja3BXYkJnR2lFcEVlbktOVnBLdEdEaE1lSGdHR0N4R2d6bW84b0NOZWNsd0UxTTcvMlNVTFE0d1liQUF3ZlB0eXhRdW93WmtWMVhTZG1aUU1BMVhXZGJRRWhoQkJoK1BEaGI3YTN0OStmazVQemkrUDlYcmk0emg2cnRoWExGcXhEUTJRbVZxMWZqbWtXd0c3RkxUY3N3WXlacTdCazJWWmN1WHdhWEtmUnJEVTJOcTZaT25WcWs4MnRaWWFnbEtZTEJrVFFSTUhxVjRNa2FPanVTYUUzbnFCQ1hoQXVsd3VpTElBUUVXNXZabXRIYVdrcGhnOGYvaTk5czhMeC9HT3YxNHVLaWdvVUZ4ZG5IRXlaNWRSZEtzdHl2NURVTnBXUXlNM04zZERUMC9Nci91em1PbmU1dGdZYmppcTRkUDVDMFNBeHNnQUFJQUJKUkVGVUJtcHBCU2ZlZ3NVTGJzQ1ZrUVJhYmZtdlphc1hZTWJVR2xTTlg0Q3RhZCtIclEvY2hobFR4Nk9tcWdvMWs2N0J6VXMyb1NuQmZNS3R0MkY4MVhRc1dyc2FpMlpQeC9pYUt0U01uNG9aQzlhaXppR2ZscWpmZ0VXenAyUHNpSXFIcXF1cjMyZWNXaTk3RVVJU1lBK1FUSi9jb1p1TnVMTExCNzhrVUlIcUlIbzc5bjd3QWQ0N2xBUWhjYnkvNlM5NDVLL3ZJeFdKb1BqSVU1Z3phdzV1Ly8yZmNOczFrMUJUTlJWTDZnQnNtb2VhcWtsWXNEM3orOXU2WUR5cWF1WmhFL3ZCcHEzSDc1S0tpNHNIZEcxbU9NcUdwR1lMaUJHYXN2azJBWUF3WmNxVWg5OTg4ODFDV1padjRrOXpybk5OZGEvdFFCSzF1R0tLVTZ3WndiUmJsMkphdjQ5dnc4cGxWYmppK3ZsWVZGV0xha1N4ZGRFTXpGbVR3T1FiNW1QcEJCZGFYMXVIbGF0dXdlem9LbXpPY0hzTldMTm9GYTZkUHgvM3pROGl1bTBWbHExY2lObFJGelkvZUIzNnZvdnRXSFp6SFNvKysva245cmY4ZysxWDZ4ZUNzbEFEb0ZNS1NvekZUK204bWdKL1VTbUt2Vjc0UEJKeXhwWUJ4eHJ3d1dFM3hsNHhIUmVQSG9OeFJVVVk1ZzFCa1JKNGZ2a0tqTG4yUnN5ZldZV0pFUUJOUTNlL0MyYlArV1RoWDNWMU5lTHhlTmIyRHdac0dTRXBwWlRxdW01dkFTRTdkKzRVdG16Wjh0RDA2ZE1MUkZHOG1qL1Z1YzRkSmREYUdnV1VDQ0lzMTZLdGFHV2RGbHdJUm9JTW5Fb3g4NzcxV0Q0dGFQejdUVml4SFpod3k0TjRkT0hFOUwrNy9qcEVXaWRoNGFhL1lmdnlhUXdjRlV4ZS9EanV1OUg0Z2xPbW9Dd3hIVE5YcmNDcXV1dXdzTGJ2YTQ2Lzg0bk5uem15NGZrTjhSNm5YalY3RlZRbEF0R2hVNTFTbmFaU0tWQUlVRVFac2l4VGE3amRsdzQ5SmJrWnU0NTRVVGx1SWk0NXZ3TER5OHBRZlN5OVJxL3Fsc2V4Zm1IdGNZZmVkU3VYWU4zQnFrOEdObEVVVVZWVjFROXM3RFNDYmN5S21JVUVJK2ZHRmhNSUlVUzQ2cXFybXVycTZsYlcxTlRrRVVJbThTYzgxN2tDdGtRaURSRVg4eXJldnVRYTNMRHVhTjhIQWpPeDZ0M2xESnlxTVhsaWtJbFpyOFR5elZmYVBuY1ExV1VSWUhzcm9nbWdqeEl1Uk1vaUdkQ2NPUE02VksxYWllMDdXb0ZhOCs4bXZGV3U3SDE2L3Z6NVVWdE9yY2U0ZW0zOWF1bEdYSWxRVUoxcXVrN1ZaQytPdFNkbzNPVkhVWGtJZVVaclJ5QVFnQlNWSVlvdUJQTUxyV1pjOFYwQ0lJRGF5YldmSUo5WWo2MWJHNEF4Q3o1NXdqNGNEcU95c3RLQ1c3WUtLZXZjVExnWlV3a2doSmpGQklFUVFtcHJhOTlyYW1yNmJVbEpTUzRoWkFSLzBuT2QvVEtCWmdET2VEWFgzbklmVmwyYkFCREZ0bVh6c1dvb29WaTBEbXRYck1DYVRkdFJkekNHcEdYUXF0TklHb2dVWlZVb0ExRGYwQVFnQWtwUjM5UFQ5dWQ3WjE3VllvTmFYd1dVeWFzWnVYTXJyeWJMTGlyTE1tUkJwMnFpRi9HZU9Kb2JQZ0wxVGNia2tyUmprenNVU0pJTDRjSVNWRlpXSWh3Ty80dVBaU3NhV2dGbFl2Vy9Wb2tzS3l1ekJ1Ulp1R1hMdFJsUU00ZS96TEJVTXg0Y0FrQW9LeXQ3K2VqUm8vZm41ZVV0QWhEaFQzeXVzeDFza1VnUVNEYWhxUlZBbWVHMXFxZGdXalVBUk5HNlNobENqcWtPRDh5ZWdlV3RFekZuNFhJc3JDNUQwQVhVcmJ3WkN6Y04xVHRhT25xZ3ZYdjE0Y092TkNKenNMM1hJYStXTXZOcTVqSjFkcnJBN1hiRGsxK0VTaVdGcHIzN2NLVGhNRENoQ2prNU9WRGFYWkFrRC9MTEtsQldWblpDSDlWL3VjVmkxS2hSR2E2TkRVbnRKMzlRU3RsOG0yNE93eHJoS1NHRUVFb3B5Yy9QLzN0blo2Yy9GQW90QnVEbVQzNnVzMW0xbDA1RVlNMVcvRzFURTc3KzlVLzRBdCt4Qm10MkFaZXVlQkNMcitzTFVSUEJJUVowOWUrZ0NVQ2txcXozNE1HRHE2NWU4WFlkK3RvNnpQQ1RkV3Y5UWxCQ3FLNG1rMGlKTG5oOU1oUkZzZkpxM2tBZXl2TVBvTE10aVZRZ2pQejhmTGlPdXFFb1BoUlZqUnJTTHdBZ2tVSGYvb3FnS2dJa201cU9yOTNEU1lRUWpCZ3h3cHBNeU0vUHR5WVQ3R05YWmd1SWJmR3lPWEpsdG9Ba0FTVEM0ZkNmdTdxNmVCc0kxMW12NExSYmNIMXBFdStzV0lCSDZoTDl3cXZXMXVRUTdGWUNVUUNKS1BQL0orcncvSTVXdXhzREVFTjlYVDBidzJMVHFrMDRpREdZTWdvUEdlTlNMTlI2R2JobG5MRm12bjdOZmpXQmdGSTloU1RwS3haNHZWNzRQQ25FNGdTQ1B3OWxoZmtvS2lwQ1JXRUlpcUlnbVNTRC8zeVJDQ0tJb2I2K0tlUG5lNjB1eHZ5amFreWJWZ1hzV25OaW1tSURnUUNxcTZ2N0ZSSTBUY3MySUQ5WU1ZRlFTb25mNzMrc3U3dmI0L0Y0YnVkUGY2NnpOeHFkaUlVUExrTGQ3S1ZZT21NNm5yL3VTbHc2cGhRNDJvRFhObTNBdG9ZQUp0d3lFeE1IdEgzWDRzcjhkVmkzWkRibU5WeUphclJpeDZZTjJIRXdDU0NLUkJRQVUydll0WHcyWmpSY2oyc241T1BvYTJ1dyttOUhFYjcwOWdkL01LbmdIdzZoWnc4eWp5T3lPVFd6RVZlaWJoOFE2MHJTK05FV0pMdUR5QW1uMEJOcnc3NzJOclFuWGFpZVBoVVhHSWRHam5TTlF1aUpMVml6WkFsd3hhVzQ3c1pwS0J2bzV5dGRoVlhMYnNhOGd6TXh3WFVRNzJ6YWdPY2JBRENMNEd0dldZeVpHK2FjdUc3L3dzSkN4MXlicXFwc1AxdEdXTW9XRTR4UG85bkQwbG16WmozODV6Ly9XWEc3M2QvbXJ3Q3VzNVp0dFYvSDQ1dHI4Y2l5RlZpemRTMVdySXNocWVTanFuWWFibGs1SC9PdnJCNjRTaGljaHFXUEw0TnIwUXBzV0wwU1cxMVZtSEw5ZlhoOHd2Tll0TElKQjVuOEhSREFGWXNXbzJ6YkNxeGMwb0NvcXhRanI3MzdrZnBYZjdrVi9hY0tyQkNVRUNRb05WZm9XVkRyYThLVlpTaUtqNWFHS0hxaWNjUjdZMmc5SE1OUlFVRzRzQXBUcDE2T2EvOXRKRXBMUzFGVlZZWHl5Ky9FNGplYnNXekRLcXhvemNlMEc2Y05EUDlIbHlHNllBVTJyVnFPcllFcVRMeHVNWlpOWElHRkd6SWZoK1dQcndSaEQzSTdFZHE5ZXpkMjc5Nk54c1pHSERwMENFZU9IRUY3ZTN2RzBVY0dBQWtEUUdMMHV3a0FSRXFwQkVBRzRLS1V1bi8wb3grRmYvakRIOTdpY3JubThaY0ExNWtxVGRQUTFOUjBacCt4dHZVMmpKK3pGZE5Xdll2N0RJN0VZckhmZi92YjM5Nzhoei84b1lkeFpUMEF1bzIzUFlRUXEyQkFqRzFUN1BscXpOSGUxaGxyNXZ5bmViNWFTVWtKaGc4ZmpwcWFHdFRVMUp6VUgvT0V6MmVPSGozYUNrbnQ3UjlaWEp0NTRpNlFXU20xd3RLZi9PUW5uWkZJNU9HNWMrY0tMcGRyTG44SmNYR2RHTVZpc1Q4c1hyeDRpd0cxSkFPMUhnWnEvVTdEZGFxQXNzVUNuOC9uZUx4M1pXVWxSbzhlZmRKL3JoTU9Oa0lJUm84ZWJZSE4zdnFoYVpwMTVDK1RiOHRXS2JVKzUzZSs4NTAyUlZFZXZ1bW1tOERoeHNWMVlxQzJkT25TelN0V3JPaENacUdBYmNETmxsZlRCVUZnTjB4UmN4R0wvY0JJMDYyWlVHT1BCdi9VZ0EwQVBCNFBSbzBhMWE5cDE5YlAxcStZWUxnMDA3V3hjQ09FRURKdjNyeldSQ0x4dTdsejUrcHV0NXVIcFZ4Y24xREo3dGp2Rnk5ZXZHVUFxTEZPcmQvcVBPUEFTR3AzYXViS3ZGQW9aQjBZV1Z4Y2pJcUtDb3dhTlFvZXo2blpkaS9lZmZmZEorVVRtd2RRbW5Beks2UXMzR3pYWUJpbkFMQng0OFlVSWVUOWl5KytXSlZsbVk5ZWNaMHhvcFFpR28yZWdBNzZrNmpLcTNIRHpUYzg4dlN5LzIvTDczNzN1KzVzVGcwT2t3VnNvY0NFbXN2bG91d0p1UGFWZVdhaFlNeVlNY2pQeno5bFArWkpQUU90c0xDdzN6U0NRNFVVVEo3TnFwUUNnRzFnSG9RUVVFcXhkT2xTdlBYV1d3K3VYYnMyNmZWNmVTc0lGOWNRMWRIUjhlQVZWMXl4OWEyMzNrcG1jMnF3SFVQRVZqOHpLNkI5VHMzYzJzN20xSXFLaWxCUlVZR1JJMGVpc0xEd2xQNmNKLzF3eC9MeThnelh4azRqMkYxYitwY2VKUUNvcXFvbTNEUTJMRFhodG5IalJ2aDh2ditOeFdLOWZyLy9kdkFKQlM2dWdkVGIydHI2VUVGQndUL1EvL1RiZ2FDbUVVSTBvZThJb3F6aFp6QVlSRGljbmlvb0tpckNzR0hEck9iOVU2MVRjbXB0ZFhWMTF1UERtVk4yVFR0djVkcFVWVFgvemhGdUFCQUlCUDdZMGRIUkhRNkhid09mTGVYaWN0TFJnd2NQcmpJbUN0alp6eDViK09rSU5XYkJjUWJVbkZibm1WQXJMeS9IaUJFalVGMTllazc5UDJYSGNkZlUxR1RiaStEbzNFeTRBZW4rb0FIZ1JuTnljdGEzdExSMFJTS1JiL0ZUUWJpNHdCcUYrdnI2K3RValI0NnNHOFNwSmJKQmpjMnBaUXMvbmFCMnNudlZ6Z2l3QWNEWXNXUDd3UzBMMkN5NG1RbTNiSEF6LzF4WVdQaHNZMk5qZE5pd1lmTUVRYmlJUDZXNXpuVnBtdmJXdSsrKysrY0xMN3l3RWYxblB3ZHI2YkNnTmxoT3pZUmFZV0VoeXN2TFVWMWRqYkZqeDU3V24vMlVnbzBRZ3JGangyWjFiUTYvYlZnSDV3ZzM0L05TU2lrZFBuejRQM2JzMk5FNWJ0eTRiNHFpZUJWL2FuT2Q4VHIydTVQeWFWTXBiZk9XYmJ1ZXZtcm0vUzFNK0dtZi9ld2h4cnE4VEtoUmpSQktSWUZRVWFCVWxuVElvZzZYcE1JdHEvQXFLZmpkU1FROUNZUzlQY2p6ZDZFd0ZFZDVYaFRWaFowWVc5NEdFbjM5M0FFYkFNaXliTUZ0RU1mRzV0dXl3WTBhSDZkbWFEcHg0c1FQMXE5ZnYveWFhNjVwVlJUbGEveVZ3M1d1cWJzNytjVERqMjE3ZnY0ZGY0NE9BTFZlQWlSQVlLdCtRaU1FYWFpSmhNcXlBRVVXNFhKSjFPMlc0ZlVvOFBsY0NQamRDSWU4eU12MW82Z3doUExTWEZRUEw4RFltbExJa25qYUg0UFRzdkxPN1haajdOaXhqbmsyMXEyeElTa2hCS2xVS24wVVNQci8wL3JZbHVuY1pzeVljYkNtcHVaWGI3enh4aEcvM3o4ZmZMVWYxN2todGEwOS90RDRmL3V2bHc4MngrMDdDdGp6MUV5bzJad2FkSUdBQ2dLaGtnRTFXUmFRNkV6UXpxQUxZM0xTVUFzR0dLZ1ZoRkJXbW92cTRSR01IVk1DdDFzK0l4NkkwL2FDOS9sOEZ0enNZTE9IcFlRUWF1VFQ3SzBnOWdrRmFzSnQ5KzdkZWlBUWVLeWxwZVZ3SkJLNWhTOWw1anBUdGYyZSszSHowZjhYNy82NjloUHZEYVdVTmpUdU83cW1lc0tpOTVHNVRhcmZlV29NMU5TQm9LWW9JblVwSXFpUVJGS1I0ZmU1RVRDaGx1ZEhVVUd3RDJvMXBmQjVYYWgvOXAvWW5qOE9OMzdHNy9CZHhySDF2bWV3NU9uOWFJcEppSXdiaDhVL21ZNHJTODRpc0FIcGM5ekdqaDNyNk5qWXZCeDcvd2FCRzJXZEd3QmFXRmo0YkYxZDNlRlJvMFo5WFJURnovS1hFZGRaWjlOVWJldjJOeHFlbm5yMUw1eVdHZHVQODA2QTlCM3AzUWMxUWdVQlZKSUVLa3ZFZ0pvTXQxdUFKaEtJTGhjQ0FUZHlXS2RXMWdlMVFNQU5RRVhkYzY5Z1pVbVZJOWhhbjMwR3R6MHRZZWxqdCtPNmtsNXMvZEVhekx2akRXeCs3Q0tVblUxZ0E0QlFLR1RCYlJDbzlZT2JrVzlqejNPemdHYkFUUWVnMTliV3ZyMTY5ZXBETTJiTStOanRkcy9oTHdXdU0xV0paOWRoL0lQQWphTVQyTHF6RGExSkY2YmROaFBMUDU4SEYxcXc3RC9XWVB2b0tyajJ0S0FwbG9CWU5XYjFlU1BWTGIrNTV5OHhaTFp6Mk1OUGErNlRVcVFFUWpRUTZDYlVSQUZVVGVrMG1kUUJRcWdnRTVTVnl2QjZSR2dTME8xMkdWRHpRRHUwSDM5NkxvWk8zWXZ5Qzhmamh6OGVqdXVDKzdIa1A1N0Mya01hWWxpRFNYc3V3ZU1QWDRTK01FbkZqdWNPSWZqdnMzQmRpUVRBajJsenhxSDZLeDlpZSt3aVhKK293N3l2YkVYa1o3ZGk2V2ZPQXJBQjZZMVhBNVdIVGNBUlFzeUxFa0tJbVhNemMyMjZybE8ydjQxMWJqZmVlT01oQVBlM3RiVjluSnViZXd1QVl2NHk0am9qZGVnWWNOY3NiUDZaSDlGWG44SDBPMTdDcHMvT3hIVUJBRWlnVlJtRDlYLzVRblB5NC8xL0xKdHd6OXRiKzVhcUpCbUlzVWQ1SndoQmtsS2tRS0FLSUJvSU5JR0FFb0hvb2tCQVV4clZpSUNjUEJmMVN4VHRyUW0wZElzb0szQkJsUVVvM25UNDZUbjZNVmJ2Q3VLMkg4L0F2TXR6OGZGanorTG1iMjlHNUM5WFlmRmZic1dFMjMrTlpTVTM0T1VGOWhHcVhyVEdWRVJLR0NlWDcwY0V2V2c5Q21ENE1OeHkxNzhqT080c2NXeW1jbkp5TXVER1FLd2YyT3pPRFFCaDVrcjdPVGNBdXVIZWFGNWUzbC9yNnVvK0hqVnExRTJpS0Y3T1gwVmNaNXhLcWpEVENPV0NvNGVoT3ZrR1dtTUFBZ0Fnb21aeXhVdDd0Mys0NFpLcmZ0R0VnYmV6OTlwQ1R4VkloNTZFUUJjRVFnV0JRSklJSlJwQlVnY2xnZ2lYMzRVUnVVRW9YaStDQVFrcFJVRFU3ME54Z1F2MXIzV2gra3VmeDd6TGh5RW43RVhPYlpmaHVxZlhZYzAvcG1QS1lJbWVmcXNiUkFBcVlra0E4R1BpWi8xblR5aHFoOXQ1NTUzWEQyb0RRSTZTdFBybDNDd2IxOWNPWW9hbVdtMXQ3ZHMvKzluUEdyL3puZS9zOG5xOS9NaHhyak5YUmpVaFlXeGo2VWxwRDcveTJOcVhIMzV1VzQ4dG45Wi83eWVRcEVDS1dGQ0REdlJCVFJRSmxTUUNXUktnZUNYcTdra2gydDZOenJZZUJDSzVPTC9Zalp5d2dxUmJSR2NvaVBJeU54cFVMMm92SElHY3NOZE1KcUdxUk1YelIzc3g2TGkyWXYrQUJrQkNRRG54RDlzWjF3WVJEb2VIQkRkN1dHcStieHlOcEp0QVk0b0tPaUhFZEc3NkhYZmNvZDl4eHgzL2UrREFnYjJscGFVM0UwSW04bGNSMTVrcXF0TjNkdTA1c3Y3dVZ4cjNBbzJxUXo0dHc2VVJnaVNvQlRTTkVHaWcwRUZBQlpGUVNTQlVrdEx0SElvaVVna0V2a0kveXYwS2ZMS081bytPNHQybWZFd1k0VWZTSTZFdE53Y2pxdk1RclhnZnIwWjE1anVMbytHb2hFaitZR2RRdUJISmw5QjZLQTRnbFA3UTBUaGE0VVBrSkp4bUpKeUpOekVVQ21IY3VIRVlPWElraGcwYmh1TGlZa1FpRWVUazVHUmI3VWNWUlFHejJvOHlxLzAwNDR6MkZJQWtJU1JCQ0RIUGMrOHVMeS9mdW03ZHVoLzI5dmF1NGk4ZnJqTlJxcTZ0ZnZHSkxmOVRPL2wvZGlOeno2ZjFQR1l1YTBVZU5aMmFjWlphK2hjODI4NGhHSTIzSWxMSGVyQy9UWVhzZFNPVTQwZStYNExpODZHNEtJaDhuNEpBUVQ3R2phbkJGMmNQUjkycUY3RGhrQXFnRnpzZTJZb05HSU1iL2g4SmdBU1hTMEtpN1JoYUUvMDkxSlRMaGlINjNIYXNiVlNCeERGc1d2VU82c2VOd3BSQUdwQTdYbXhBZmVJc2RXeW1Bb0VBeG8wYkIwRVFIQzlDaVAydDVkeFNxWlJaTVdXTENwUUpUVTMzcGdIUXZ2U2xMelVCK0UxVFU5UE9rcEtTbXdnaEUvakxpZXQwUzlmcHV4L1d0NjlmKytHYmU3RHNUWlVKUFpPT0xvMkJHYVY5K3dsSXVqOU5GeWhGU3RkcFQxS0V6eXRDVVNUcWRrbHd1MlhrajFDZ0hJemhuVGZqb0tLTWdvcGhtSDFWR1NyS3ZVZ0VYRGhZV29KQXdJM0E1NytBQjQ4K2d5WC8rV3NzaUVtSWpCNkR4YitaamlsR3lEemwrbkVvdStNcFRQM1BTL0RNRXhlRGJSNE5Ydlh2ZVBEUWMxZzA5OWRZWlBTeDNmZVRpZWxXajZQN3NmSkhXMUgybTF1eCtQeC8vYkU3NFZ1cVRyUjZlM3Z4d1FjZm9MNitIZ2NPSE1EaHc0ZHg5T2hSZEhaMklocU5vcXVyeTlwOGxVZ2t6RjBMaE5sK0JWM1hDYVZVTUM4amF5a0JrQ21saXBISmNBRndyVnExS2pKcjFxenJ2Vjd2LytFdkxhN2owU2ZhVXBWbFZqUWE2M24wZ2Y5OWNkc2RkejhWUjErQmdCMlBZc1BRZE9nSk52UWtPa0gvSW9Fc0NaQmxrYnFVdEx2eXVHVjR2YTZNaVlMOHZBQ0tDa0lvTDh1eHhxVE9sSW1DVDcxanN5Snp0eHZubjM4K1JGSHNkN0h1emViZ3NoVVZLSk43TTRzS090SlZVdzJBT21mT0hHM09uRGtQN2QyNzk2MnFxcW9iUkZHY3hsK3lYS2NzN0ZUMWwzZStmK0NaQ3krNzkyTURVbmFYeHViVWtnUklaa3dSb0s4L3pYQnFWQlNZSW9FaVVrV1I0SGJKY0J0UTgvdGNDQVk4eUFsNWtaL0h6SDVXRldEc21ETmo5dk9zQXh1UUhwd2ZQMzQ4SkVucUJ6YjdXd1oyVkJBRUlnZ0NWRldsekw2RjlONi92dERVcUJRUnpReE5BYWlqUm8xNmZjU0lFVHRmZi8zMTYzSnljbTRDVU1wZmRsd25TNVRpNEpIV1kwOStadHBQM21oS3ozbXlVRXM0WEVrSGw5WVhlcHFUQkdKZmtTRHQxR1M0M1JMY2JnVStiM3IyTXhUd0lCejJJV0pDclN3WEk0WVhZdXlZVXB5Q2hWTG5MdGlBZEh2SGVlZWRCMG1Tamdkdy9TcW1oQkJxaEtaZ25adVpkME42RzcwR1FQM29vNC9VM056YzlSczNibnpqc3NzdSs2TGI3YjZKdndTNVRxaEMvd2RkWFYxci92clh2Mjc3NmxmbmRRemkwZ3lnRVJOb0tlTVhzWFYrR3JPYkFKSWtPZTc4TkUrK3RlLzlaSS96UHAySFJKNVRZRE5WVTFNRFdaYk5DaWlNTldDT0lhb0pOK010WWVBR1BTM3JTQ1N6Z2RmSnZWMTk5ZFdOQUg1YlYxZjM2c2lSSTJkS2t2VHYvQlhKOWE4cWxVbzl2MlBIamsyVEowOCt3QUF0RzlTU0ROUlU5QTJ3bXhHSHRXekZPTWJiZkoxUVJWRmdQeURTaEZwdWJtN0dpcnpUZVp6M09RMDJJTDFEd1d6dk1DOFdjRTZocVhIRHJkQ1VxWnBhcm8wSlRUWEd2VmxQb3RyYTJyY0F2Ti9VMVBSQ2NYSHhsL2hKdlZ5ZlJMcXV2OW5RMFBETXlKRWpkNW0vUEcxQVN6cTR0SlNEUzlPWml4cS8yTE5DemV2MXd1djFJaEFJV0hzL0N3b0tMS2lOSERueXRDeGU0V0JqVkY1ZW5nRTM4MmFhb2FyZHhSbWdzK0NXU3FVb0ljUTg4TkplV05BWndHVzROd0Nwc3JLeUZ5Kzg4TUovUHZ2c3MxZm01ZVY5aVJCU3cxK3VYSVBuMGVpZTV1Ym1wNmRQbjc1ajE2NWRLcE1mWTNOcDdOdWtEV29xODB2WEFwcTVFazhVUmZhWFBYVzVYQmxRTTVldW1Icy9JNUVJU2twS3JHWEdwM3BGM3NuVVNWdVlmQ3BrMm1tbmZKejVkb0J4TEh0YTFKd3JoUUU0R0hDekduMU4yQUhRbTV1YnRlWExsemVrVXFrWExyamdnbWEzMjExQ0NNbmhMOTl6R2x5T0M1TXBwWTJ0cmEyUExWeTQ4RSt6WjgvZWYvVG9VYnNyNjNka045TExWWHJ0K1RSbWNiSFRSbllvaWtJVlJlbVhTMk9CeGk1ZHFhNnVQdVhMakxsakc0Snljbkp3L3ZubncvenR4RXdnWk9UaDJDdVJTRGlHcG94N000ZnJCVnQ0cWdGUWpmQTBCU0IxNzczM0p1Kzk5OTYvTEYyNjlJVnZmL3ZiMDBPaDBFeCtxQ1dYQWJTRzF0YldEY3VXTFh2cmw3LzhaUytURzNQS3BiRmhhQXJwNDRWVVFtQkdDeHBBK2tZRkFVcEFhUHFwU2tCQlFDbW9UZ0ZLQ1hRS2FEcUZwZ09xUnBIU2dKUUdKRldLaEFva1VrQnZpcUFuUmJEN293TUFEcHhWai8ybjJyR1prbVVaaFlXRmpxZUFESEhlMUc3Z3pCTjcyUk5DN05WVHk3MEIwTFpzMlpMNCtjOS92cmU3dS92NUN5NjRvTW5qOGVRU1FncjR5L3ZjYzJ6QllMQ3VwYVhsRDkvNzN2Y2VuejE3ZHVNLy8vblBYZ2VIMW0rbnB5Mm5waEppZ2RESXA2V2ZpNFFJRUFXUmlwSUlTVEp5YWJJTVJVbi9jbmU1M1hDN1BmQjZmZkQ1L0FnRUF3aUZ3c2pKeVVWK3BBREZ4U1VvSHpZTVZkVWpJRW55V1hrdnp2akpnK1BWeHg5L2pJYUdCalExTlZsVENoMGRIWWhHbzRqRll1anU3a1ozZHpkNmUzdVJTQ1NRVENiTlRmV0VYZXFzNnpveEwrTnhNcWNXMk1rRmlWSXFBNUNSUHJ2QXVxcXFxcFJYWG5sbGFtRmg0VFdDSUZ6TVgvWm52NUxKNVBZMzNuampoYTk4NVN2dk56VTFtU05OckVPekZ3Z3lISm94MDh5TVFoSHpseWhsSzU1bW9Zd3RFR1FyRXBqdEhHYjRXVlpXaHFxcUtsUldWcDdWOStLc1czSlNXVmtKajhkakRzZWJlWWVoRkJpb1VVMGxxcXBhNGFuWjkyYTZOU004MVFjSVQ1TUFsSWFHQnFXa3BPUUZBTnYyN3QwN29iS3ljcm9zeTUvbkwvK3pUNGxFNG0rN2QrOStkY0tFQ1kwTXpOaXdNK2tBTlJaMnFnRTFxOXBwZ0kyYXhRSGp1VW1aNTY0Rk5ET254aFlKL0g1L1JrNnR1TGpZeXFtZFRVV0Njd1pzQUZCWVdBaXYxMnNCenUxMmczMFMyT0hXMjl0ckFTNlpUR2JMdlZGS0tXSFBlRFBQZDJPZW1DbkR3Vm1BQTZDTUdqWHFkUUR2dlBEQ0MwOU1talRwVXIvZmZ3MXd3bzk1NXpxMVlXZFRMQlo3N3NVWFgzejdpMS84NHRFc1FIT0NtdW5PckdGMUk0K20yNnVkQnRSZ1Zqek41NnVUU3pPaFppOFVtTzBjWnVOdElCQTRKKzdQV1JlSzJuTWVlL2Z1eGI1OSszRG8wQ0cwdExTZ3ZiM2RHcUNQeCtQV0FMMFptaHBEOUVnbWsxQlYxWFJ2R2VHcHNYaEdvSlFTdzhHWjRhbDVzU0VxRzZyS0FKUWJicmpCdlh6NThza0ZCUVdYUzVMRVQvSDlGRWxWMVJjUEhEanc2dTIzMzc3cnFhZWVTZzBSYUNrNzBBQzJLSkFCTTkyY2QyYkRUdGFseWJJTXRwWERQa2tRRG9lUm01dUx3c0xDakhZTzhtbWRqK0pnYzFaVFV4TSsvdmhqTkRVMW9hV2xCVzF0YlFQbTNjemNXeXFWZ25sS0NBTTRZcXdNSk93MUFPQ2tMSUNUQWNpYk4yOHV2K2lpaXlZSEFvSHB2Qi91alAwRnVhZXpzL09sYmR1MnZmdkZMMzZ4alFHU0U5QlNXWUNtMm9GbUhueHFocHQybDhZQ3pleFBNMTNhUVBtMHZMdzhGQllXb3F5c0RKV1ZsU2dyTy9lQ2czTUNiQURRMmRtWlVWUm9iVzFGUjBjSGpoMDdobGdzWmgxLzFOdmI2MVJZZ0FFMllybzNGbkJNZ1lFRkhGdGtFQTBIWjRkY3h2WGVlKy9WVkZkWFgrenhlQzRIVU1LUmNscGhkcWk3dS91bHVycTZIWk1tVGRxUHZpcjRZRUN6NTg1WVYyY1BPYWw1SUFPVDQyVmRHanZyNlJoNnNrMjM3TXluV1NTdzk5UnhzSjJGMGpRTjlmWDEyTDkvUDVxYm05SGEyb3EydGpZY08zYk1PdHV0cTZ2TE90dXR0N2MzQTI0TzdzME1UODB6M3dZQzNGQWdaMzVNMnIxNzk3aUtpb3FMM0c3M1pSeHlwdzVtUFQwOTJ6NzY2S04zeDQ4ZjMyZ0xGNTJBcGc0Ulp2MkFCbXNQQnlnUkNCUlo3aGQyc2k3TkxCQzRYQzVyM3RQbjh5RVlEQ0lVQ2lFdkx3K1JTTVRLcDFWWFYwTVV4WFAyWHA1VFlEUFYzTnlNZmZ2MjRlREJnemh5NUVoR2FCcVB4eTI0c1lkWHNuQmpBY2NVRndZQ0hESEFKamlFcVpJTmFyTHRZOUxPblR0SFYxVlZUZkI2dlJjVFFzWnlCSjA0NmJwZTE5WFY5ZHFlUFh2cUxycm9JdGFaNlF5WUJnS2F5Z0JOcFpTcVJxWGM2bkUwTjZXeFFETXJuYnF1VTBFUTRYYTcrZ0hOSG5wNlBKNStRK3htNkZsUVVJRFMwbEpVVkZTZ3VKaHZsandud1FZQTNkM2RhR3hzek9oM2EyOXZ4N0ZqeHhDUHh4R1B4eTI0T1lXbVdjSlRDM0FPT1RqQ09MaU1YQndET0NmUVpmemR4bzBiaXkrODhNTGFjRGc4UVpibGkyRnR4dUFhb282bFVxblgydHJhZHY3em4vK3NuekZqUnBzQklIMEFkK1lFTmZhRWpYN0ZBTWFoV2Jrek5vZG1GZ1kwVFljb2l2RDV2T3p3ZXIvUTA0U2EzKy92MThwaGhwN0RodytIMSt2bGQvaGNCcHVwQXdjTzRNQ0JBemgwNkJCYVcxc0hySnF5b2FrdDl6WVk0TUFXR1d5UU01MmNHYWFLZHBnNUFRNkFPSDc4ZVBtUlJ4NnBxcXFxR3UzMys4K1hKT2t6QVB6OGFaMmh1S3FxYjBXajBmZjM3dDNiOEkxdmZLT3BycTZ1MytTSUxYVE1CalFXWnV6L285dUFaamswNDRJZGFHYllxYW9hRlNVSkFiOHZBMmhzYjFxMnFxYzV4RjVlWG43V25NckJ3WFlDRll2RnJOQ1VyWnFhN3MxcHIwSVc5NVlCT0YzWDdWVlVaQWxUN1pBelExVXJMK2NBTnNuMmQySkZSWVc0WnMyYVlTTkhqcXdLaFVLalpWaytqeEF5NGh6TGszMlVUQ1kvNk9qbytHajM3dDM3dnZhMXI3VTBOVFhwTmxmbTVNNnl1VFRyNzh4bWJOdm55SUNaemFHQnJYS2F4Mm14aFlGa1NvVWtTUWlIZ2hrdXpRdzk3UTIzYk5YVEREM1BsZDQwRHJaL3diMnhWVlBUdmNWaXNhdzlidzY1Tnd0d3Buc3pJV2NQVXhuQU9ZV3E5bkJWdEFITzZYM1JmdjNpRjcvd1gzSEZGU1dscGFYRC9INy9jRm1XUndpQ01CcldLdDVQclJLNnJ1OUpKcFAxc1ZoczMvNzkrdzgrOTl4ekxYZmRkVmVQQ1poQllKWU5haG52TTg0c0k4eGtRMDNZNW9tWncwMklwUWlYQUFBR0dVbEVRVlF0bURFdWpUS050a2drVTVBa0dYbTU0YXk5YVlGQUlNT2xtYUVuZDJrY2JFTldWMWNYOXUvZmJ6WDAybnZlc2hVV3NnRk8wN1RCQUdkM2NTYmdpQVBrQkFmSURmYSs2T0FHaGZYcjErZlgxTlJFOHZQekMvMStmNGtzeThXaUtKWVJRc294NkVydlU2WmVTdWtCVGRNT0pwUEo1bmc4M256a3lKSFd1cnE2dGk5Lytjc2RZQTRtR0FSbTJSeWE0L3YyNUQ4TE0vUXRBS0pzTWNCMFp3QWdTVkkvb0xGOWFXeHhvS2MzbVQ3RW9TQy9YNEhBcVRldHBLUUV3NFlOZzgvbjR5OVdEcmJqMStIRGgvc1ZGdXp1emQ3VWEwNHNPTGczcS9lTkJaeW1hU2JZd1BUQ3djSEYyU0ZuQVlxQjNHQ1hZSHRmc0wxdjVmOSsvZXRmKzhlTkd4Y3NLaW9LaGtLaG9OZnJEU3FLRXBRa0tTaUtZbEFRQkQ4aHhFOEk4UkZDUEFZSXpRTUF6TThKQmd6VzJqaEthUStsdEl0U0d0ZDFQYTVwV2t4VjFXZ2lrWWgyZDNmSE9qczdvODNOemJHZE8zZkdGeXhZME0zQWk5cEFSZ2VBbVc1eldOcGdsLzI4dld3d1kwRm11ak5tU3hvRkFFVlJMSmpaV2pneWlnT3lMS083SndsRlVWQlNYR0ExMjlwZEdsc2dLQ29xNGk5T0RyWi9UYWxVeWlvc0hEbHl4TnBuT3RTbTNxRUN6dWJpV0FjM0VPUWNZY2RNUHdnRFFFMTBBSnY5WXIvT1FCY2MzdHJmejBpRE9ielB2aDNvc29QTWZtVnphZjNlTjQ5K2Q0TFlZREF6MzdmdDFJQW9pcUNVd3VWeVpRV2F2ZUlaNytxRnkrVkN4YkRTakdiYmNEaU0vUHg4RkJRVVdBVUNXWmI1aTVLRDdjVHAyTEZqT0hqd1lML2MyMUQ2M295WlUzdDRtaEdtR3U3Tmdwd3h6V0NGcXN4OXN1ZmtpQU9Fc3NGT3lBSXpjUWhnWXdFbk9FQnRJTUFOQkRjNzBPQUFzWUVjbXA3RnJka1QrNE5DakNrQVVGdVlhY0xNS2dRd0ZjNk1IUnVpS0ZKS0tkeHVkd2JRSkVteUhKcTlPQkNOZGNQdDhXRFVpT0g5S3A1RlJVVW9MUzFGS01RN2VqallUcUphV2xveTNCczdralZRYTBnMjk4YTJoNWpWVTV1TEF6TjBiN28zZTA0T0RvNXVVT0RacXJGT1FCc0lic2ZqM0k0SGJNY1Rkam9DanFsT1pnVVlBeThXbm1Celp1YWYyVENUWFE3RUFJMnl1VFJLS2J4ZWIxYVhabS9oNkl4MndldjE0Znp6YXF4ejAweVhkaTRjTDhUQmRnYnB3SUVEbG50ektpN1lxNmRPclNHcFZNcHliamJBUWRkMTRnQTQxc25CRnFyYTNaejl6M1lvWlhWaUR1RXVHUVJzMlZ5YlBTU2xBOEJ0SU1EcFRuOW1vRFNRczdQL1B4bGZpLzJ6TGRTRTNablpnRVp0bFU3cmJEOWQxK0h6K1Fac3RHVm5QTnM2WWdnRWdwZ3lhYUxsMG5pMWs0UHR0Q21aVE9MUW9VUDlpZ3RzZURwWS9tMEE5ellnNU14aUErUGs3RzRPV1J5ZEhVUk8xNkRPakEySFQwYU96YlpVaHc0UmVQWUx0aVBkWVFlWjNaV1p6b3pKbjJXRm1SMXFKdGcwVFVNd0dCeHdhSjF0dEcwNWVnemhjQTZ1dVB3U2xKU1VRRkVVL3VMaVlEdjk2dW5wNlJlZXN0WFRvYlNIMk9GbW0yQndta2UxUTQ1dEhZRkRYZzQyS01IQjJXRUFKemJVZkpvVHpMSTV0cUVXRXV5QXd3QUFneDFjOWp3Wmt5K0RMVzltMzBPYkFUTzJmWU5kMUczUHBXbWFobkE0bkhXKzA2eDJtbUhud2NQdHlJOFU0TEpMK0lyYUV5bUpQd1QvbWp3ZUQ2cXJxMUZVVklURGh3OW5ETld6K1RjVGNIWUhOMUQxMUFGd2xNbkRFUnZncUExMDVrVk5vRkZLemNNRzJWOW9nNExLQ1lZRHdHeW9weG5Tb1VMT1lTMGliQ0VsKzI4ejNtZWNtU1BJSElCRzdVdTNCd01hZTJtYWhweWNuSDViMTltamhjeWg5YUtpSWtDcTV5OGlEcll6Vno2ZkQ5WFYxU2d1THU2WGYyUGJRK3lBczgrZVpta1BjUXBScVFrMVRkT3MvSnNUNkV6QU1hN09oRjAvMTg1QWJEQm9aUVBZSndWYlZzQXhKNy8yMGJnUGRyQTVzZ3lJMmNMTWZpQXpONmpiUTgvQndrNTdEczI4VkZWRmZuNitkYXlRSFdobUhvMFBxM093ZmFyazlYcFJWVldGa3BJU0svL1cxdGFXMGYvbVZFRTlIZ2RuQzA4ejNCeWJnM053Y0hiWW1YQmozMlpBai8yN1U1SENZQjJYN1dQOTRHVjc2d2d4QjZCbDVOQllxTm5EenNFY21qMkg1bmE3a1VxbFVGSlNrdEdQbHBlWFp6WFp1dDF1L2lMaFlQdjB5dTEyVzhjeXN3VUd0b0xLQXU1NGNuQU83czJwVGNRT3VuNEZCOVBaMlFISC9Ka3lSUW5XMWZXam1oUDhodUxVbk03aFp6L0dnc3ZteHV6dUxBTm1iSXRHbHZ5Wlk3ZzVWSWRtejZHWlV3T3BWQXFWbFpYSXljbkptQnFRSlA1U081WDYvd0hGMUZuWjhqMWl4d0FBQUFCSlJVNUVya0pnZ2c9PSJdLFsxLCJkZXNjcmlwdGlvbiJdLFsic3JjIiwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFUWUFBQUUyQ0FZQUFBRHJ2TDZwQUFCTUMzcFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFyZjFadGlXNWxXVUwva3Nyb2draXFBUm9EaW9aNC9VZ201OXo0aWlOUnRJOUl2eGxtbElMM251dUZNQXUxdG9WcnYzLytYKys2My85ci8vMXZLbWtLK1czbGxiS3pYK3BwUlk2LzZqMzc3OTIvbnp1ZFA0OC84WHk1MS9QdjM3OSt1c2JnYitqbi94OTQrMi92NS9PMS9NL2YrQWY5M2pHdjM3OXFuKytFK3FmQy8zNUJoZitQWUYzOXQvcjd3L0oxOFB2NjAvNmM2RzJmLzhvcmI1L2Y5VHg1MEx6endmUG8vejVuZjU2ck45Zi92L3JYNzd3c2tvcmM2TVl3bzVQdk0rZjZmY0U4ZmU3OC9zOWZ3WSs5L0MxSG1Nc0YzODk4ZjF6TVJia1gxN3ZIMy9mOTk4WDZGOFcrUi8vdXY1OTlmLzYxNzh0ZnVoL3ZoNy9iUzNMbnpXNnkzLzlqU2YvMjlmalg3Y0oveUlPZnoxUitOZHYzQ0hGLzNpZFA3Ky9iOVh2MjcrMzYwaGhTK1dQUkozRmZ2NXhHVDQ0V1BKNGZxenc2K1YzNXQvditkWDRWZTkrVDdaODNmTWUvSnBQZXdLNzhsMVBldGJUbisvWjUrLzVUQjR4aFIxZS9nNWhobmkrVnVNYldwalJmVXIrZXI3d3hoWlhyT3piRFB0aTYxSU1mejNMYys3Ynp2M21VN256ZXZob2VMaVlXLzNmL3JyK2Q5LzhuL3k2dm0rNlJNOWQvMW9ybmlzbzF6eUdPK2VmZklvTmViNC8rNWJQQXYvajE1L3R2LzhtUDRncU81alBNbGRlc04vamQ0bVJuMy9LVmp6N0hQbGM1dStmQ2ozWHUvNWNnQ1hpM3BtSGVTSTdjSmNuNXFjODl4dkMrenlzWTJXRE9rOGVZZ3FESFhoeURvdUhSRjVpQ2RjYmF2RGUvTXo3bk0rR0hFcnd5OWdtTmlMSGdtNVZkcWl6V1NsbDVPZE5GUm5xT2VhVWN5NzV6ZlhLTGZjU1N5cTVsUElXalZ4LzQ1dmUvSmIzZmV2YjNsNWpUVFhYVXQ5YWE2dTloUmF4Z2JtVjlyYmFXdXM5WEowYmRhN1YrWHpuS3lPTU9OTElvNHgzMU5GR240alBURFBQTXQ5Wlo1dDloUlVYWm1LVjlhNjYydXI3dVRhV1lxZWRkOW52cnJ2dC9pRnJYL3pTbDcveXZWLzkydGYvMnJVL3Uvb2Z2LzRIdS9iODJiVndkc3JQdlgvdEdsKzkzdmNmbDNnMEo5azlZOGRDZXRqeDF4MUFvSU43ZHRjbnBlRE91V2QzQ3loRkRqeGtkbSt1OWJoamJHSGFUOGpmODlmZS9YUG4vcS8yN2NyMS8ycmZ3djlwNXk2Mzd2OGZPM2V4ZGYrNWIvL0ZyaTM5M0R3Nzl0TkMxL1NPYUIrZjZhRmUvTDV2L3ZqcmJ4NnA3cDdMNkhuMWtXZGVxYU1pOTc3ZkY0ZnljTm1aWW45M3YxTllPNlV2aHBUZUs5YlFhOFpPNWErTnNkNTdiTmM4c0Radit1cFQ4RnJQZHFuaXpwVTFybjIrYlkvNjFMN2pPOHZIaDNkdVY0bTR5QkV3WllWbHIyRnpFNHhmLzdob1N5ekJ5Ty9xZmMzMDNqUHcxbndYYnh2WTBkeGEvWW8rT283N1lzTy9Pbm1aK0w1ZnFXekQyaG1mSHNZSXZleU1Sd1FJUEx4bG5hT3R0Tk5ZTGZPY3VZWE1wbjdJRXdKVXI0RVJYcFhuQ3FuMVBWL2V1ZWIxZm04cjlldTFqUFkrWDBFb0lxKzVXMThkTzlNeisvSHVaM0NoTjIwOHdYczk3QjR1b3ZZdjU0OHYxUHlsOGQxblQvSGdkY2U2MlUvMnJxZUVvSTVVU3docnR2ZkZ3MVJXWkIzZHVjbzdubDE0elZsSGlqek5ZQWsvMUFJZHdINDlwYWtNbjFMNTdmemwrWlhKbzhWbnQ3ejJxdStlSDF0Y1VKRjVmMzN0d2Q1K01kWTc5ekJTdXRtZDk1bDF6YVVYV3QvZGVjYjhEbDV2ZlVoUFdPTmIrL2xtcnl1OSs3dDRpcXg0N1BjcDczZHZmTUhMejh4UjJteFl5UGQ5NHNhdnpwQnY5Z3VkRDNmSmRhUHJHNmYyN0luRVBTdGNJMDFla2o4aXQrbys5aGZualpjYjNyT2xYZGt5ZGk2dSs5c2pvVm85OFlnN3NJTVlsekpDclNHeC9ST1JhQ24wdlZXbnVUN1dsbHVQK2IwbzNVNEZ1WWozN3JQaWRYZGdDOUM1d2M2OUxoMVh3L1lnRi9uQ1BvVGt4U3BxRm5meC9kdHV3Yi9YTjgvL2YzcGhzNTZuWlRTNzNURTJmWGdZYjNpLzJIZGVJNjFyTEY0bTNQVkxyR0ZpRHpzT0tiY1JlL3RRY09CdVcyTmdtQ2Jid2Y4d1ZteFRiL0Vib1dDcGtLblUzdHd2Zk5OQ013YzdIVkpCcWdlR0I3QUFzcHZJRnpadWJZVGpyZXZMQTJVWmUvS1lOeS9sRFNKcjIrWm10NitOVGoxekZVeGJRMWI3eWx2ZGY3Rkk5K0JSRUtHMVFJeHo4ckUzSEQwc1dJK2V4aHorYnF2MDlhQzAyaWJjNTQ1ZUxjekdNOTJycHJLUnI0YXRpYngxZjduTGcwenNqcWxhcTdRV01GQXBsZHJ2dkxnT3lMOWl4UFljRHlZWlJOWEJWeEdiSWk1ZTZkdFAvbGhXVmd2SlNia2lNYTN4a2JYcUxPbDdFTlFYRlUxeFFpRSszalJyVEJIVittSXdzQVgrTDhUQjVzNCtaOFFmb0x4M1RoZ2w5QmdsMzl3OUxwVDNld0Y2b1E5c2RydmRZdlFUK01YYjgrK1krMTJ3emJIM3Q5NWpZaGZpM2RvM0s0dkNVOTI1WVUxNGhUbEIvckVzbHZ2Q3pNWE5qc3hjbnBSN1RSanE4S1EzSUlNZExxQ0h1d3VMZ3lmSWc0MGFoZWNjdXdGV3h1eGxsWVNIQUVUVW1QSjRja1RVSjJwWHNPOFQzTHJiZk4rdU1MSDNyT1BEc2lEc3ZQbHVHQTNXMFYzRXA3RWsvVVl2THBhNXBNRExEMjFMNHNWUUlDNTJmLzU0WGl4ZndnRU5SR1cvMk4rTVNxTDBmSzQyYm82d2g4MEY5dFc0WTR0NXJyY08xQnpuc0hCeXVES0VEdS9WMGZmWTU1MUtLTS9IdjJ2NVVGOU1PVDh4UDl4RjNEdmp4YUZaRzV1WEU1L0FBS1krc0U2OGJ1VXZURDVlQXVGOGU2cWozQk9GQm1VRE5qRnhlWHdGYlVZaU16N2p3V1d2aFJ0cFhoOW5tOTdhZW1aVjBRaFdGdkhINm1LR2ZlZkJNeU5ocjVMeGZJTW5hL1Y0M3ZXMVdhOUhDeUt3NXhuUkZzeDVMd0ZCd0k2Ni9BOCtHeWVSdElqTlZlVGJCYkRQVzdEUzdGaFQwbDRacEZ1TVVRTktZSGtqdHBSWHkxaFJWaWEvNkQrQ1dWckdrQ00rK0dGMHJRcW52N2xiU1lEUmtqdk9aVnpTZ3c5RzhJWVJac1VBeVZYQzl1SWRtVUpsa0o1VVBrREtoaXYwZ1lnakgwWFA5V0hNY1loTGEzMDlxT1VScFhYano5YUgycmR2K1lIN1F4S2hFQVVRa0dDbUxDYnl4WThoQTdtaU5COHJ6UjgzOXZZdDExc25GMGNKVndlODdiZXlJd3JkTXhZdTgxYmVzTjVUd0lBdmpCcTJyMmM4MkF4NHh3OVIrZmIrOENLOEsrZ0E0SUlSd29oajhZQmxqMjZkN1d2N2d4ME5FTTlDS0VGQktDNkM4RzBXUDdKNkg3NEJ4OUFSaHV2R0NvUjNERnowRER6ajNXTlJGVmtzU0FLUDJwQ0QyWW9jV0JQelljQUJPRHdTOThhVllranc3UkhqdjNqWmpkRkp3Q1ZZSVRkYWVPMWo5TWVHWlAzOUp4ckt6YnAvNzVHZmtBdTdnWVpYRFBlRjdlVWlEU2d4cEVUbFJWdEJGRzk5WE5WYnhlZEdQQ3U3RVNhZVQwY0xhdnhhamdwT3hnMWkwRjhBT3lZVUJYdWZVUEFLZUErMGxnc0F5OUJaeEhoL2d4WExHS0Rlbm5leStxazhENWduZ1RoNUlsWlFnM2E5RS9QTE9wWlBVK2xLN2FjQ0gwWmw2M3NyZWJUMEZxQVcwb2lmSGpqeStRRFlwakdDcXJpaTNUd1hRR3ZQOXVFQUZld0Y2c0dsY0dIVUZDZVBpUk01Z3Qyd1QwL0hGVWo5VURwc1ZQdHV0dkVEZk1PTm5uSTFuQVlxZzNIWkJiREY1b0Fmc1ZxWmpYM0FPTTEzNTJZVmc4NC84WDJRWGN3bC9qR093aWJqYVJIQWRDSHRTRmxjUVVNT21uL1RnaUVDVnNRNG9VQXFjb0JLbEl4anVKVnRkQWlaUDhnRE5BRXVMMkhnbGE1Ym1JTm9LWk1ReDNHV0hoZFhnYVlvOVlPdkJnSytHR04rUEpTV2xueVMxd3NaZ2NYL0ljWjNuZW1hRlRPMVZlOG13Y2REeC91TjBGWFdUY1NSMFV6RUhTL09Wb05YY3BoekF3cnhpWUhMM0N3N05xaVZLN0lIV0xnRy9BTTdJNzFvT1N2MXZLN3lnNTZIaGcvRCtBWXdOZ1FQdVBzaGVlS3Rtcms1cXBVZ1RQdnE2QlF3SVJlY1dBSXpJQWdvUHE4Rk9ZWWFKWWdIZDBIeUoyQ1ZIWi9JRlpqMXczTnZ2QUhmT1Z4K1hWaW14OGpKQ3lYNXg5ZVB2eTUxUFRLRzlmc0FGdVR2SDVuSHB2M3RKNi8vOXovNnJ6OTVuUi9kbytTN1lneDdhdGllQ0pxY1kySk9ZU21JNklQUmhaYUM5TERmQ0duTEVJQ1hIU3Fpa2QvYlh2TklLOWJoeGUyLzgrQUFkTFQrWXlWKzM0QkYrQzJWOTBBWlRORE56YUthenkzblRoY0NPUEZ5b0wrQUhtRnRYaUFyNm9PNkh1VEhQa0prOGdzZDJGMkhrekh1N0tDNEhVQlgvZlBETTErTDdVRzczeFVFZGcvTUFNVU9NczhjdlRXa1plRG1jVzk0dXcrdkpFNkxnTVEzZGpqMERSQWZSam91Y0hEQkdXT0JzWnNOZ2NHQWh4ZTRDS1ptS2JnbmRtMEFjZ0diUEdwTWNXZ1RFcWgxcEx1QmFoTnkzT04xYnk0RnFjR1BiUlpub0Myc0JPYVBqd1RKSUs0K1JGd1lWb2xIR2JBanJMRFJUNGhqYjN1UHZkYW8zMlhvQ3VBcW9GTFAwU3pVRFo0Y1dCQVlOWnRiRW1hdnMvME5HWjA0cHBtZk1NU243RFBVRzJOMGYvbXFjR3VBSmRDZ3ZrcEppaG4zQlB2NEtwNDVENXgrcnR4emRoRllTVktNaENHYSttN3Mwb0kyTDY1OVRUUVNTbGpmSVRwaWpYQ1djVHpwRzlEL1BsZzFlUDZIek1DU3gxZnhkanNISEJaaTFXU1JEMjYrclBGZzJManpCK3dBamVCRElBanZtNTk4S0FSK0FsU0dDUFhDWXQwaS9UZE05TDY5QVY1UVJTSnc2d1JrWHhlcUhmUlVCYnVCdEgxZis0UEhBTzl4WTVqYUVWaGdJZFlzd25nL1hOUDg4RHZvaUJ5eEF0VFp6eXRqL1Jxd0g2eitwTUJ0NWVMbmgxR0tHL3pBNCtYSTNtTjdlQzNlbjMxbmxaOE1Gb3BBOFk0RkRlMEZzYkVmUUUyZUExb0IyVUtxTm9SaXB3UjVZVWVDekF1VThvQ2NNSjZZeEFnOXd0bWh1Q3pYRGVTU29sekZYY2ZEQVhSMW5CbW1KYm8zcGlnd0xlZ2ZzQUdVenU0ME9JQXNtcC9sSGJZdWFjSjlNV1BodVg3OHJPTHRvSmE3djJ3VG9wQjVkNVQxWmxWdVREdTIxVEFHREI2ekNaaUxPTUNobjAyOFhrcW83cnc2SUJ0RWhrNFViUytPQ0hqVFdVejhDWTVCem9Ub1llamhNeDFFQ0JPRlRraTIyTTRIYUFYa2ZEUnNDVDNvN3g0c1BSc3k4S3FHSDlDV0RQRERjMkVuQk1NM2tPY2IyQUJzVHhBbmVqMGVMMkRNV2IzeVhtVWplOXNjQXpDczMreFN5ZTlCaDIvR3Y3RkVPTlpWV1JMamJzOExUT2tiRzdMd2RMT0FqaHJFbW5XL1FOWllpaUJaS3ZuQmlSbzFBYWJBMk8rV0gzWHpoTUxFdkRqWXdyTzNGY01xQUZ4NENlanZaUTN2Y3EzcUhtU2xjSFRNUm9YaUpMNElCSTJTWXZBTnNHM2hqWWFTQXR5SWlnV2k5T29IMVFud3o0MktIQ1lQbU1KVThTQnJ2U0I2bEIvaDRMNmJWY0tKWWM0Q0NpMFpHNVdOQmNITlc3Vzkzd0VoaEc3c0M0SUw5a0hVd2RmNS9NdWRnK096WXBDcWdJMUdZUGtTV05lUTR0d3ZPQmVibnNFdWhpUlFYQVM4WDRDWWdGL0FDNWFOUE9DS3RWdFRtTUR5dWV5b1RsOEdDbUtvYnc0cWNwZTJzbTRMRVF5VkZ3UDZzVGdZRFVRTXRVUmN1VGV5RVJxTUhNd0dhaENsVkd3OEhrcXZpejFselpDTXpUYm1nVEhSaE9QYnI1TTZBYUF2c1JXd0JtejVIU2dkY0NEZjIzSHVyQ0c2L0FFT2NKT2Y0ZllYSEtrQ0FYNDJjdUsvVFVKcEVNYnhaNE5iSWZwWWZvQldRTDVxeU8rRUxYVzhEbDRJSzQyZGwra0JHUGs4SkFLV2lWSzl6NVZnK1RqYXR1N2RxNnJBTnFJRHJHTElJampNYnJtQkt3TmV0OW5ISlAyR29mN2pTZjd4SU5lZkowRVArckdLQm4wRTFYeUszVUZJdjd4T2ZKZTFoZzBYU0RQWUM4VmlkZUpkTko2M0R2M0tNRmRNcnM1QUV0MVFiWDZnMUlKQVk3WmhjNGpBZzZiZmZjbFp2dkxuMW5qeDlQM3o5dGZmN3g4L3dLMW9BeUxLQXAwRjdTdmowZ0c2Qmxta1FjM29tTkUvQmJQSDUydVl0Tnd2VEZxU2loYklmeE5BZzhGYmRERmxzQzhNRFBuK2pPZ202YUN4SUpnanRwVXROY1I5Rm4yMGNDVThVT0N4ZkRmTU5xQVYvd2FpRHMrSVFPSUFqMVJtY2FiNU9TTHpZc1doVk1PYzROL0NHcGR4amRZYm5nSGZjb1JnSEpBbHNQMER0LzV0Zi83cjdibisyaDh0L3dDQjRDenlnLytGMytCWkY2UUhHd2JzeUxWZ09sSTRVY1VicExEbjBVOGo2U2pMdGJDUWErYktDMHpEQmdIbFlkTWIyc2MyYnJ4VWxGc2NvTDZtaUF0K05uQjc2QUFQeHhhRFRGaFlMT1MrSHlEOTB6b3ZLTTNMRTNzNDBFeU1iTkRIdzBsNTZnZUs2MTdpWTkvenFvL3g4cjM3VDFtdXU1UTc3cXJGRXhndnZQdEVHeUcxa3E0VEU0T1h5UnJZdXhPZFRudUFPejVzekY1VjVvOENsSHBOSENIS1hUTHdwd0NURUlRM3duTkJxQkFVS0hkZlQzQnRCMTZONi9POVZRV3VmQ0x5VE93cnVyazBJNGp5UFdEQUtCUm1tTFhwRVNLTW0wd1JVSUhsdUNWYXNtRGVIeXVFMVFVbFNZQ2VWZUhLRzNmMGpBdUVOd3dhR04xSFpoZHFKTlY4eDJkOEdCUU1iT25Rd2hoaVVka05XQS9qOEs5QmxLWHhiNnVFZFNITk1HbURuRHdqa2cxZGdLYU9iMlljN2FOWjZCV3lnS3hsS01xZTBxR3lzWlBHcGtQU25pSlZJMTFHemxwbmxYNTdXeHRPUUFnSHFtaFFkN09yckNFL3paZWtweGhoUStuaXVzREZjWlRnSy9qS1ZSc1cyRFQzL2FwTG9yeHZGMFhZVEFSTXNxT0NPSXFWMnNid3N6TkEwNjVTM0ZCbHZEclBpbndZUUtoNGlucmpiaXJVcU9ua2hpUUtSSSszaVJNVUE3UDdNc3VDZ1kzekI3d2dlUkdva21ZQThFTW82aFZFUWhEdWxjRlArMkExNE92M2JpUWFVaXdJM3puaTh5Rm5IMXF3OGJudkI1VGhKaCtXSEpOVDhKaFR4SmJCSCtyc1BPcTRqUzBYVmcyOE9TZTBjK0FqakFGRFFuR3ZZR040eHNkRmNlR1l6RlpyaWREUUMxNzhMcGRkMGEwNERmZ1JxMmlBazRWUE9HV2VGdyt3WWg5cjUyV0F3NDFQT3JPR0VKaW94dDVmNEp4dDNDRTBicmhrTDNsVTBFMHlBWUFUTytJWFBud3NXbmlYYjZQYUtUem9mdFhuelRkV2dOS2FWOTI0YjFEWWwydENzY0RNQ084TjhYMWdOaXR4dTdxQk94RHUvRDdnSDVNbmNEVXcyTTF0QUF0RDNXbnhNalEwWmNjUTZvQ3R3RHdsdFJpU2dHRCtJM1Jmc1UxUGh0aSswRWgwYmpYRVJ3ZVFWb3NnalNkZkFTMXlZVGRlZUVpbTk2dDEyNWlDRERLK083Z1Vmd3J2aTBhMFFMSWJDM2hYY3pHRkpmcCswUDdrUlpCZ28vT1BJZTBuSmFBekFzVStCaDB5MGczTzNkS0NSemRsNG43TTlRQkpjVk8vbkJKTG5LOGhHRExrZ1JGcGlCdmFiakR4UkkrQkpWSllFRll2RXBrUVVTSGVENUhGdGNNenRMcFFYNlNxWHhpVWtSQUVWZ0YvTnZQaHIxdG5BTGlJUXJXRkhHSjNzUmNMODhicnc5SVN1QWlmZVpzNGVCYVVhRis2U3p3SDJ3U0hob2EycDBZQVBDSnlnMC95RVhiSUw2enc0NEZmU0NBZlFHSzViMGJ1UWY1Z1JSelpCWHBjYnlxRGI0MEoveDc4UmpXNWhLSG5BcW9FUnhqL3VMR3p3TWNuTCtINC9WdmlweHFnV3l3NCtLaWF0OWVjaVhNTnYyaDBxa2JKYndCeG50dWcyOTExeVlhbDBINVkybTV4UFhsR0pRSGx1TVNNWUtLTjBVUldPaEJxcGkrRWJuWE4xcDFydCthU0dneUpBUGlVWmNOaGNTK01jWWpCakVvR1JGU3daUDhQNFJQbi8yM2RNQWg4TUdPckkvQWhvb1daLzk3WGVQYWRKMCtLOFc4bXBkQ3hKZG15eENlYkpHV2ZEVEZoRmZjRzYwTVBCQ2IvZmpzRThzY0Q0NlU0eG4vZS9jRlRZQ25yTUkya1NKdHJTeWNxQWorQmRNU1RoR0xYYTgreFIvTityWWZ4WHArRkxiVmpQMUhSMjlnMVJPTUYvSmYrejl1ZHUwMkRBRnQ0T3V1QkVEd1EzblBodXdCUEY4SmZFM2dmNElRNXg4c1VBd0o0RDN3cWZ0TjBYNnlZaDErdUQ3TVprczh3Ti9LQlFnQlZ4dERXWFB6YlQ2WXZZaWkzQWZ6dlpBbDkxN01nZnkwSCtKZ0hpVGR3UE9DQ3NXMjQxbFp4MVhEaysyS0h4ejNodXJqenJhaUJOYld2a28xK3RoNDhoZGxyLzRlYlhQKzRTejRTQVVqbTNZRUdhTFVMRDhaRDRUQ1l1THNPVDhubjhWL0EvTXQyQUE3bXlmTGhmQzdnYlJ6WTU0eHZlajRVR292c21zNlRqZjNYQi9qYnR2L0xlOFlhUVA0c0RSd0RJd0Zpd29Wa1RmR0o2V0F5Rzl1Q0RVSFpRWmRHa2JxazVlKzdoL1hDK3ZTeEwwZzZXb2xVeXRBTk9PS1hJMllWTVpic2pDZEM1TkZGN0RHODUzMkJ2K0E1SktkWDVDL3F2a3p4S1pENGJ6WUFJaVNNemxXYU5xdUd6amlDRkJGWUJyb3FYOUVHaFpueFJEanc5eTlRV2lhUThTckN1ZkVIbXFPVkU0cUxQOFVsUTVBYjJnUVZLQytXYlV2L2JwT0Z6MUdDWm1Ka1A5aFJkSGMrMTVCY0dNcUJ3dHp4WHVqbU1NOEsxb1RObWh6QmhKWjNjOUc4endhQVJUNHp0WkFoUDMxalBMQW9sejV2bU9tWStJTjlJaERjajJYR3g2ZjY0VzR4bFNiSndDYU5ad1E1cmNMeXN1S3NuUVZsR2FUUjkyWEFjbjBtYmtydlhBVm5oSWlNZW1kWkZUdUM2WjlvMEsvS1pmTHEyMWdZUGphelFkVTh2a1lTdXI0VHhpUHdYaWJSWCtPZDRQUnBUZGtUUGpOVThvcmVzWlhiSUJ2ODMyalpTUVVhNkNycmFld1BxTFlCOGg4MGZ4ZzlqLzBCRUxHemNuMWNTR2RqSnFaa2pDUFNWVUloaURBU3pjcnZZT1k0aHE4SHZFZzc5WWx3dTBNbFByamxoTHNWVEdRR3BVV3I2ZmdaWkMwcktWUEpSNlp3YTl6K1M1Z1NydjJZemxBNFRUVkhscDFWZ1N4Ymh2Q0xhWUg3dTVVajNEc05nQjU3MkxEeUw4eFJQd2hnQnRVQ0xaNTlSZUFsWkNHRHhPUjRvdDIzSVhsSlpJaHZMU3ZEcTFxWTZRU24yRXlBQyt5RE5UUytYdlBKNUQybTZSdDBMQlhUR2NhbzhTMWNURXR1dllOMFZTeXMrY1BIckVPVllJTmdqdlFrQkozNzQyMnhrZGZ6bUhTb2t4M0FXSXhqVzhQUCs4S2p1T01iNElNTGhJQ0lBSEJSYU1UcnRXZ21mZ0F6QUFudkhQY0ZSdkJicUpOcXcrc2hqTE4zSkI4b0JsK3RlTFp2UWVHV2dZNzhHTEpTLy8rNjQ3bWZ5VXo5MHhEaW95VG9kY1R4NExBZy9qSGhic1ZoaVYyREdDQkgrSFNUZ1BuRlU2TUJqOThQeGt1K2ZqWDhOTjVuQW5YYSs1ajZCQ1dDOFhBMlFxQlFqQUx4TGxDV3VGR2tsdkJYSjlsZEFRK2d5WkdLTU9yaVVZQndBNHVERHQ1WVU4Z0NOR3FEQVNyWU8rWDRZTGFRLzJjTjlxMGNIZ2JLUVluQjRQNjVFSmlKUGZwYmprSGNEMEJLdDRub1g4YnZ4eFVqeXB6TDRZcVlHZmpSQi9RQjVKZ2tTKzhEd1MvWDF3Y1lLaTFlQ1NrQ0lnTFNwN2J6T1lrSHhkbTZvQnVqbXcweWd6a3hqM2xqSncycjhQd1krcm9uaGkza29aNXVNVzB5Vjd0TXUzZkxPVUNDU0dRVXRMZWw3UlJuTHdQMzNTRGhTVXpHWDhyKzB2RkhqT1VIdU0zbHBEUitiUDdCdWU0SEJNYjN2NmFSK3IyTTBveHd2TG9CTVRSZUEvcU8wbGFVSE4rYklTbld2U0NrQmk3eGlUeC9SeXl5dFV5Z0YvQkJyZ0NodWs0Qk5VQ0xyNERoNGE1Sk5OSk1la1JVSlBWWFR6ZU56Z0ZhVTQ5dndpSWlnWVloZVN1VXZjUmtyQTV2UFlCSTBiRGNZeFlSUW54Rjg1UHNUckJLUmNxS2pWWU54aGkraDdSQnJ4S0xzVldjU01YWlltQ3hMamk3Y3E5ZkRLQ1VDd3NDclRnTEZrbytQNFFSZ09nQi9qQy9yQStBQTV1QmFPd0Y4QWNDQXFFbUdqYXdKcGdTN2h0R1hTQi9mS0pKQU5sTlJSUld4NkVaTitEZGJqbENONGpCYnFIWFZvcHh6d1MrRW02TXY3MzRCVStIR0ZtT3R3WXc0c0ZPZk1IYUZUZ2pNbTRsandnSm0rM1dtOUVBcXlRZ0dPNFl1Q2hlaEszZDIwcmZ1QUFGdFI1QjRQZFNIN0g0SCtnUEFHN3FxOFBsQSt4cmpNNGlsY3o2V0R0aTZWRzBYTUQ4MmdjdWhHdyt4Z0EvOXVYQnFQUEtyR1JzUTBXQ2txTmd3TEp5RnEyZTlRUFFtenFmM0lScllSTHExYUFQa0lNYmpXOHc5bkxTb3g5V0VYT0g4K0wzeHA0TWpIOTlUZm52Q21mbGZnS2MyMFRXOGI0alh0RVExWG1YOFA2V01Cc1Z3SFpCM1c1ajdvQXRrQ01vQkVTVWdobEJTQkdjVzUveUd2WitrSjU4SVphM0YwTGVZRHdzVUxvYmo5alI3bmJDRWptZnRCYTBJcUI3Vml4aWt0a0xzYWpKVXZQRk9OZXoySlhMNUhkRGk0ZWxBWWNWUVNCQUVhd0t5RzV1RUlxQVFiTEFYbUFMY0I1SXNNVlNaUm85bVplUlFaWnMrZDdvMVJyc2NEUXl0QXllNlRtMm1RYzRvNlYvb28vN00wc3hBYXQ4MFlvanIvZGRNSVdlcmVFU01vZGFjSW8zMXMyeWh3U0EyUEdZaVJ0bkF4UGNsdjRCQ252ZERVOENXTTBJR0VSdHRnc0xiRVJHZUpoN05RK0ZQcUxuR0xaNlNtMEF5dFdFTkkrWFlzWjZBL0JBaFZDajlWaFNjR1B1TUFpQUNKOEg2R0RXTFpyYlJ3YnFRaGJCVCtVK0pka1pzajF3MmhiSVk3QU53QUQ4ZFVZYkZ5M2d5ZU9hV0llTkIvOHNtUUpVMTJyQVFiMk0zQ0lYZ3pIZklSR3N0ZWw2MWpkWG8vaW13WkRxVkpHNE5pK3pmNXQ3ZjRESzl2Wmk2R3MrSUR1WEdBNkFJTnpCTU9YOWpmR3IzTDkzSEpZVkNzbk52N0pxTDA4VTc3UlByU0VnaDBldHByY00yUXdsUE9DZE1LVUdpM0FjaWJWOW1xVU14Z2kzVmVnQXNYNXFReStzTXBUS3pFMHlDbWxwT2xEQVNnWXhpTGNIWW1SRXorb0I2M2JBUVIwRWpzMTdFM0kxdW5VWEQ3dFdVVDBNTURmTTJ6SXpYdTNSam4yOFBqQ2hXU2RvY0EydjBMUmRZTDNCVHNPVmxjTlZlWGJBTjdxMnQ2VVZKb1lBWTcva1BNU2VhL28rMExkREE1QmtOQmMvaEhETEJMSjU3MkpRTm9ZVHVWMnNrZmdJZVFZbnZCVlFQakpFSkJqRGZEQWd3TE0raDZXVEZlakc2a0lGKzR1QUZ4WVpFemI3QXlEdWI3bjJDeFJGYmdBMlpyUmEzTk0wbXBVdmdCM2pJZCswd0hFYWNEdjUwUlBiVDM1NUxHUXhId1Qyb0d0VEo0MU83b3h0NFhkU3JqVjhlS1lFZThDVzNNZ2lXeFdNVnRZcFNlYUtBbDNRNjdRY05nZnJJUTNNNVhJL2tCWldoRXZpK3BOT2FvZk92ckFYdDRXbDc3REt3Mnp1bER1ZWNIczNqSmhlRU9GbE5lU2ZyRVBWMWticlJmamlMMWVMMFRTQ3pKZWc1Y215YWF0VzFBUjVpNldlKzBNSmNEd2cvd2NFQlMvTzJZdjF0bkdNT00vM1JhK240UktUWkR3UVdBQUQyd3pqcjJneGdMVmpTaVZNakFXODB2cnZIdmJmbjFWVGJURHpWeU1SYmhaQzd3d1Faei9EWlpoTGFUeDFtS2c5R0tDbmtLQiswRFEwS1dDWnBneWw1MU8rMEdSQlZqSk5YQWRtQmtJRkE0L3BDbXdDZ0FoUTllaXF6QkFhMWVhbnZ2L3FxZjQ4L2wvSmpUOHZNUEpsMGZ3NjN3SXBIQnVGbUJSYzZZa0NoY090Y3pzeDNtQ1VFb3FibW9GMUhPRDNFekxqd2ZsNjFYZDBQSXJIa1RFQXlkeDhTc2dLbEh0MTAxMnNncnk5N01NTjExcXYrQldvQi9NR0I3TW9zS09xMllQOFQ0dnFCQ2pWTkhJQy9tSnU4c2xnSitTdlllc0FRQmF2SlBQcWtOTU1HSmxZK0c0Y0IzZGtPMEQ2NlViNGZrcFFmbFZzdWs2QW5SVTFyN3NhVHpYYjhhemI2a0U0TEYrWURTZFo4Z1VCWU45Z1Jld1l6bUhqQW5selhIRUN5R1BaNTB3Z25oTVJXc2FlSDJzNWdSMUFWWmJtdzcreGF2bGIxMGtQUUZ4dXFIVGJKdE9NaFVBc3NIK1B4WkxoRzJKOG5xNzhJeG4xMTZNZDBqUk9VOG1GaEV0dVQyejlzMEpsR1Fsby9yaVAwSG8wdjZJMUh2aE1zem01emlBVlV2ajVzMDQ4NHVxWEZ1akd3VGF3dXVXazFZTGxWWGhOaUF0MkJjNkVId1pTbHB3TkNja09BaTRpVy9CejNoSE9CQWErREE3TWYrVEpYT1h4eTZEOWM1WC84MlYrVU9iRm9ZbHNva2I1UVk0TzI4REVBNkJTTU16eXp2SExWb20vaENtd2hwRlp4VkJ1dThRQzY4MWFuQ1JDQXdGalB0RTF5eDRFSVZDYisxZXZMdWRGc3dMTUJpY2ZzUnd3Q0FBbFFCUDZBdmNNbWxhV2gxZEQ5TEZhc29NcktYUTRuQWRFaUlnaWlqQ0EvUDVhZlY1REVjMUE4bmRhWnJDUzJ0d2hmWWJ5QjFDcFRQd0dGMTVHT0lOTzA0UUZhTjVtay8vcHFvME9wLzFMT05QM1d6WVliSTUySnlUUS9ZaWpiTE5rSnBmU3RKUUJTMk1kdnVXeWVSb2RLbTFqOFZ6c21HNWdXTU5Dc2tEdVBXYVMyeHNQQTMwWGlHckcvWElSL0FPWW9nUE4rdUVXMW9WRDdFTGdCYTluOU9lblljdFdqR0tjZy9VVnJVMDQ5ck9hL252SE8xY3ZPMFVQK0RhY0w1UVhzSG4vOUhPZnBIZy9KRk5qbXVJdjRHMkoySEcxL1RVektUVjNEZkNNWnBQWTViYnVDZWUwMUh4dUNDTzZGcXJkVmNiT2NVQzJKSmczZTFtd1pZa01vQjFFamd1d2pCbWtpZ0JhWUdZMDV6SHJmVVJUdjNFcE9YSFczMTU4M0JVZVBPMkNZVDErWDdQa2hGZEFoSThYeFVqaVFuaDNOZ0x6aUVPMi9tRmVGcjd4cWhYa3I3NDl1TTBPb1FRdnNWN0xORW5aQTlxQ0ZiRWFjejFtSGl4bWZNeStWZVB0N09vRE9ZNDYwUEVmcXdNcXYzK3loR0Z3RWJYOCtRQ1crQXZhd2FqdjM0TFpPSEJOMnpVUnUzdExhUkF2WkJiTWhLbXd6Y3NhSThqRGpqZ1JDMTk3ZldmOFFJL3NLeXhDWHZ2bFltejcrbGp4YWkyTHpTUlpQcHZ4MGJmdExpL09BZS8xOXZzRVZYMnVCM0tOMjJ0WW0xMnRBVUhGMFRzd01KNjJ3dzNSUlY1OFdjOWtqdVpUcG1JcGtDNEJTWVRnUG5pYWlkbUwyQ2pRSzFiaUJHYW14ZDVBTHhOMTJpejhlUW1nSk1OS3BsVHZhbTBBVUxzQVk0Vll0aHhabXdKSSs3Uis0S3p2VDVMbHQ3c1hMdFEwbVo0bnZQQlBsaG1iejJaSStBTXJLVjZEWnJIaEZ2MUkwb0hLbVBRblZ3dGo3dGZpL3oydXpEZmJOb0FjNWcrVHZVYXhPa2haSkFBVENMWWx4WHh5V2ZpVytreklyRVZRQWZyYmpCNWFvSDh0Z0FVZ0lTQmQxZVI5WVhkbkxUd0ZHUFMyNThzVldKWUpnaktMSllvNFh3MFZWaFhBL2hwVmczZGNyOTBYY2dKMHFoaVJoOEUrV2lwVExqT0NTTmVvZHhzTmlkZ2JXOGxxdjhaaW80MFZwV05TeG9Qc1h0azZCSHpkKzJCeWdsSEIrU3ZBUWJhQkc0LzEzVWpUOUFYWmQ1TUlzQm1yZE5rSGJIaGtiOENiejlYTVZHMW94eW0zaHNzK1ZtakRDa0I3b0hNd0dyVGlmbm5CdDUzL2krdzh3SWZDNDViN3k4K28ySlFKWXB0MlBVQnFqb3ZFZmlFcTdDbklOdkNEdkFiOGkzMS9DZ3dNZW12NTB3T2hneXNBdm5KRzBBT1lMZDZYajJ6amo3bE1rTmpIbTFkYlFsbExrVjB4RG40YmRoa25tbytrdG1iZUZJbDVQb3NXUkM2UER2SlRFYzQyY21md0Q0N05xc010UjlTc3haUFh0MFVMRk5qRWZiTmFVTUlMNTlNajh1d0tvN3V5clhRRHkxL3lDQ2dTNWl6ZktRMWZCMGJBUTJiYzkyTXMwdG9STTFSdno2ZTFDZE01Z0ZMUnlxcjdtaWhOQXF3SGlTRDJOT09hMGk4M2FtcmY2a28wNTlsTnltUmVmcFpmZFZjQ2MzMExXd2tsK3VVZ3NVVS9hMU9zOVVrblBXbjlaWVQ5M3ljNkZOLy92TmpmN25udWVFd3R5QlpJYWNFdmxvVmRlTEhSb1QvNCtSZjhCYUtHdFJnTkJNdklDYnNCOTlmb2lJbVJiMDZVTlYvdC8vS08vN3doK0FZVHZpeERyU2E4N2M1RmFhM3dTUkhQZ0RCMnVHY0hmZXlvODdyeEF5Y2E5Vm9oZ2FuVXVvU1RQWkFnblNJQ0VZTmVDUVpaUUhsOU5hNlAvN1Q3ZzBjMjNSbGhzUkRmb1Z0S0VkeHhlajh3VWJOWUpJV2hSeWNCZUJsa2JSRXR2aDlZeDdYYy9JQjFRMjNSVjlRT21kUDZOdDhEMHArUi8yVTdGcCtIcEUxNDVFSmI4WkpjRzhaeHdTV1RLZGhmSzlRR1hxSHBGdjFtU0dEaFNzc01NcFNZeDBCaGgybmJVWERMQlhNd1poNEdjUVVSenpCbmNXQkxzWENubVRwLzBVVThjTGF3RDNpQzhEM1JjdGJiTFBSdG4yTlBhTGloU2pRUnFsV1E3RlFiNzl2U25aR3pkMWx6Y292M09oOWZGVUthdHZWNUNSTm5NTXhrcXNFRzY5Z0NYc1VPVHZ2UHJyc2dIYmErbnh3UC95NHo3TzNEQVdYUVFuMHBXNGJjL09xUnBVNTRsOVBSQ3I4d0F3ZW51TnNWMEF0cnVOS2pKNzRQVG40Vm9iRU1BVUV0OGY0YlJKT2ZKNzBXTDVyQXd5aEFLdXZkclptNWJYaTVMTU14N1dyNDlIUGJySHVaM1M1bGlMaXRvV1lkei8vazgzN0JVaGFrSURaQVZsdDgrRUVxTDcwa3pnR2lqVk5ESG4rVVpaMllDczlYc2wwMXRzVzgyVTZ3Yjk4TDY0NzgzZ2FRUm9tb1ZOaXhBOWduYmdtaWd4ZXZ2QnlHTmR2THRhejdlNUM5TzdZS2xGNkdUU2ZTMUsxdVpHdGhNdWltVlhPM3paR1h3QUF0T0cwNDNTNDRXSWkxNEFhQXkraEpUbWlqZGJVTlZGekhmbzdHU3hhOEdnYUNTL0V5a0pwcVlVZTBUdGdRTldzSGVPa2Qzd3FCdzQzVjlySkpBM0UwaEhvSGJQbTh4UXNadHJwdk9TenZrMmE2VUtNeHVqS0FZMEVpWUpCV0JrUGp6SzJjZXBLVkxLQkI4SzFyUU1wQ01kVS9iQi9iL3VCbnc5WUZ2M2hhdEpuRnNva0F4YzNCZVJmM3I5YnVSbmZ0ZHNhaVBuYmRCUXRSY284OEtMeDJRcE10dE9FUnJsb3dYSmFMNWZJcjRsdFc0Q2Y0S3lzUUJGYlR3dlZ4K200TlAwQWZaaEozUkIvSmZvbnRGNjVwRUN5Q1BBTTd5UTZkdklVSklkdU9yZGhXdUc4YlhvNCtkb2pIaVowbGJESTA2WlVUQUNjYWlDM2JDWVVrQTljQUN2TUdsL0pjR0tiSFFrVCtGeUhaRTJDTGJ6c1hodUdoU0o5MXBza2NCdVFlTVBxOXk0NkJ2WmVGRVR4dzA2SGp2TEIrRTdlUXdwa2ZnM0pHYXhYU3hEODZvY01ucVZDYys3SExPZDBYVEhQcVI1TEpLdllIRHhQMTB5Q0dZWUh6S29hZzVBKzFZUVVlcDhkZ1RCMytZZXZHTjdYSTczZGZ0amxBNmNxSk0wRlU2N0JLcDM1cjFldzYxYzhNdnNoNC9ZQ0JxTWxzQUNEbEVXQUF3dTQwODFWOW0ydzduOTcwcy9lMS9Cclg1bTZHbFJxTGdLMnA1b3dlK00zYVVsTkpGTFNhMVlEZUcrd0crVnZHWTc3SDNtQTBrS2Q1Z0ZWZml2WU1Uc3VFT3lLMW95M2hGUU9hZGZqVzJlM2JKQjZvZHdQSnJtSlZTbU9EYjZYUnZjQm5yYkNiblpYdzNXN1ZrQkdLN053STY3UUZvdEUxSzlBZElPTEhOaFY4L3pUaWpFMThiUEpIeUhsKzhET1NadmtiM3FUWitYQnF0WUJHcHcvOE5aN1AweGtIMlhrL0wxaDNYdzZqRU5OKzA1N0pOblFreFlnNkdCblFBWTQzYTJmYStiMTF4VUYyRFhZQVVOcDUzcExWOTNkZjF0V2VkdDFoVzREeFk3NE5Pc01OSUl3ZmJubldoQldQQmdRUWVBUG9GZFpSbXBqelRTa09uU2xVMU5nc1A1QUE2MWd0SzhiSE5FbHJWcGVsL3pCaFJuZHIwaDU4QU5wbldYbC85L1pLWEhqWWVLb1ZyeFd0SVFpMXNCZWdZNmc3b29BT2dUZGZkTk91Tml6OWFjUTlsQjFVYlR2TEJ6RUFoMkM1WHl2VjU3N2ErQldaRG1zUGRidG14Z1BtdHFBWjdaOEJqMTlWOG10MUNBb2dvOXNGMnJibWE2UTVQMTRJMGJqejA0Q2N2Ryt5cHZnQnRYOEZEV1Q1Z0w0MW9HR1ByL3VZcWJxdFM3N05lZWRXT2c3SWZQbjEvcXJ4aDROYzhEbFBISVlEcG9Ib3ozUURLc0pxdXRSZ2pNZUluVld0cHBRTmt0aGlubm41K1Z3NEJUdVJXQXVjckNKcXRCTjErVTVoRW00Y0IyQVBMTjZtM0tnQ3FMNHFVN2NGNFNpSVVVQnpubGUyNnY3cmpyVndwdE92SWp0dXlmZzdzWGpnZURBR3VHM2g2N0NqdU9SaU5RTzBZdXNaMDM3N2hqZGNXQ0tNMU1RczdSYTRLL2NGYUNHYmdxS1RHTFRVWWJGSTlRYkZma2lWN1BDSm9DTkVyL0ZKZk1LS0Y1YWRsMElKMlV0Y29ETkxPbStLYWk1ejZhY0ZIWHNOOWJlYnhYak10T01DOGNMNTdkSHQ5V1Ezd29VVHNjcGpXZXNJVzJQdlFPb0wwN1ZNY3RwbWpwRzBmQVQrRDdSZldlVXdpWUFYZWh4SzBGS0hKdGNMa05tcWVTcXc5djFBbEY0N3lScXV4a2hOTjR4Z2Vid3NPZWlYK05mRFVxNVRwZXRiUGpaajNlV3lsZWt0UDZsRmdzSEh4aExpOXhPMkJVbi9KckxQQXd3aityb0txQjV1R1JkbW5oUjBoSDNvOTRWZi9MYWp2bmdBMXRlNU5tOUplaUpNdC9sSWEvVlEvZmJXZFR1TUJ2Q1Y5T1dnTUVRdWI5dGcrOGJUc3N2UnhnUXc5T24vS0Z6RGZIMDJ3anpzdHVrbnM1cXNYeEJrOFg3N0FQb053WjRpZzQxRHY5QWZxNHJpWmx0ZkVISkkzRGo1aW1aaldEU2d4Wk5QQjhrN2VVd2I2TjVrODNFQzlKN1lKdGJpVGxjMXhMYmpFY1RYQ29ieUxITjJtelY1T3VUT01sSjlYNXoyR0pRVDI0aEFBV01rQ2JMQ0RvQVp0aW9DSm0wMjRRRnZsMk5xRElhRlU0c01qZ2Nvd21aVjkzVXlOTHhVc0RTam4vQTlnTkVlUno1eC9SOCtNalY0amhWd0JFMjI5UWw2SElUUHVRZ1RtdlNnN1RFdWx1T0VrdW9uQUQ1WUhQL1FyVjV6aEF2Q2JEdytBVHhaN2k3RXdqd0NjREFlZWw1bk5mUU9sNzJXTlZ2TEhuVzIzampqNTVRU1NERG1OcGlLcktlNjZnUjBiTGxCK09FcUJnaDVKSk42RTlNQTZkYXdMV014V0ZjZ0JzWTgzRmErTjF3K1pBYmJOTHVXNmJOQ0xDNThWYlpRcWpxSkI1Y0hBZ0syaHcxZ3R5WWt1Z3Y1c1pxa1Q4RU1PajA2U0F5aTRKZ05pOWJnUXhubEFrbkFOQkNMRzFBdjl1aklHUkR4dXdMaS9xSHp4K1kxYVIwUGorMHpQbFVuMnc2a1FPb1RwdlBESkp0WTBYMXR5eGZnbmNYQ09FenRnSXNBSzlIM2ZxclJDN29oY1IvVituNThiTWFCUUwrZUlGbllwMjhyYXdzNkFHb0xxNDhWQW9kZldscjlFdExIUzFoNitKMUY1Z2J2djRpRGRERGJBUzl6U0hZeXNrN29BQkFIckFBVnhjOXo5UkhOSzRNVnl3dHdHTUVVQjI0ZkszU2Z5VWgvWFZONmJ6RDJ4NVhHTDBMQUNseG4ySkpWYTVoYXMwcnJWM1J6NmwzLzdjdkcwSEw5Ynk1NS9mT2EvNzlkOHZxdkh2UC96U1d2Ly8yYnM3eW9JaVEwWUc1dmErS0UwaWY2a0g0TGVUY2NuM0ZJSno4c2crejMrSS9ML0N5SGN4Qit0c01zcGUyK01QZWdudmZmNElCVHUzejkrOWNOSHYwWEwydWRKT1lGTmQ2SW81MVV1ZjFvMTdMTTlBdVhRMXVnWkpnaWZDZFcwTUxuUGord0lod3BoMm84aEhXd1pPOVRGRzFtMUNUb2gwUVR1RFdyTnN2VjNtMFBLZmJ3WE4rK0tCenhySzRab0daVnNEVWVEN3V3d3B3T3ZVR1o0SkhMa25qMFJraHM2T2I2Yk9iN3JIVUdXNVNCWmRoV2d6Vjc5RHNlYXhzVS9PSXgzVlp5Ykl0aGI5dUJIUDBSc0RtZkk1UXNxMzd0K2Zxd3pSbHNpRU5FeFpKOWF2MTVMSVFBRGZNMVRNb0NobXJQN0NmQUFuNkdtZGpFNmJTRDFDOHNhSWZEdEZRQ2pPMFdqanREN3hqT043ekxyakhML1lKeE5TY2c3UURnZHZyTTUydzE1MDdBQ1pwZ0ZPV0hDc091b2cycmVPelA4SDg1MVpyUkJ1cGttZlZuZGFMZjFDZERPNUZLeUkzSjB1L2t0aTRXQzRNSjd0cXdTQ2lDcHNkd2RMRjB5ZGk1ZnZmT1Bwd3pZWkJBOFFrSXlDNGwyeUFDSGlHWXA1MW45bHEzbFg3Y0VrTXB4YlFxeGdkN1RxT0ZKWHF1ejBrZm1kR0VBZHoxY01ySG1Ed3NITjZQaXVUdTlwOUNXTVR4dzJWRDdTUEdaanl1WlJVR0Z5aXAyYXcxOEFNQnAxS0JSMUJFeGZDYlZpQTQ2ME1PdFV3YWhWT2ZHNXpmeGc0bm96YVc0UzRuN1NRTEd1eFVqK0FzYlBOdFJRcStyRDN3NHl2Y2dvcVN3UWE4VGNUeDV6OFZvM3NzaWRadFlNT3hwSC85emZPNkc5WEpmQUJyS09kNisyazZaWXNGS2pmN0J2QzBWdWl6TXNRYVZZQThrRWFpMUUrdi95ZmEzV0JPbU9TTFR6eTdDRS84ZURVVGRJb2pxTW5tODQ0b2djNWliYUJCNXlYc2FmOEZQZ1hRQjVKdXhyVGdDcEs3NUx5T2poOWErOHJZb3duS2YvS3AxRWdXUHljdUVSMWpneHFuV0V5ekJPZENEV3ZZY1U3ZzlUd2gzUlUrTEZWMlROYUZsQ2MyNjh1SHFZSWRkRitESFoyK0g4QUdqSlljdW1tRkRSNThkaE9pZmhWRDRyZ1pOSW1kWEpkUkloTVFvSmlOWEgydnBEbmV6cjU2NFg0cVYwOGpBNmFkV2NXK3JGU2NGS2dERFk1WG04NDhLdG1vMzlkT0k5ZDJMZyt5REw4UW0yMk1VMWI5VDIydGc1ekEzTnpsRG1YUDArQTJzSm1RS0d1ODlycDBxOUFqT09aR0pleTdHTUFnZUpEQk1yRzNSb0RYV2M2RjNmT2t1azl4Mk5yUG1UbGtyUkZZNW5MU2hma3RMckRoZjFnaVVLdzlybzRjYWxoRzdNOHdDZ1FZU2grNkQyMWgvZXhiQ2ZZSll0Yy9jeUFYYUJMLzBFOVMxcENWTHNGYXRXTE96NVJEd1ZhY1VZZjlPZldkSWc2elFRc0FyN2tyZ0lRU3gzVmluTEZZQ2RydlZjbzlmRzNjdUhNRTZzTVhpZ0d0WkFWQWZENlFyejBzNjdTUGFLakdyOVF6WFRhclpYWUJPOEp0UnNDMmQyZmcyYTE4UTFidGVVZ2RDV2RKNFZDQWJYOFkyeGttcnFaTjJQWTBUMlMveUJtN0J1RjdEeDU2TjRza1E4NmlWTVN1MktqRm4vZG9MTEp4TmlObnA2TXBuNVNNYzBDUWJKaHFzTGJ2a043cWFLVDFhODBGOVpuWVBKTTVXalZkbWlIaG5aOXZNZVBud2xNYmlNYlpjbjJQeXdRZTc0a3ZOblE1MnNuK081M1FjVnRZQXNjRWFwNHNjajJ6dzZ4emN6aUYweGpPYXcvUktkQVA5SjZqeXBOWTUyVTMxUWpsUWNTeFRyRWt5M3B1NzIrRjZQUHNXakQ4VHJsN0xTWnJ0eE4ySHJqdGRhZmpEOHcvcnoyanRWSGR5SEoyaGw5dXpuY0tSVUxmVDVrOWhuangyZnV4YlBpWmhnNmM2d1ZkLy9uWGVpcWJIY1ZoNGVkbi93WDZvYklIKytiTFk1UHhkNHZwSFhoMWhpZ2FIclZjMDBMQ25pOVhKbUVMTS90dWJMTGJPM1Izakk4aW5aNitrbk95N3V4a3BGaDRHMkFKQmlvNGQrcEdxODZPTDltUlBkWTJDWmNQVUFwc3hySWo3TkRLWUVrR1BoZGJiVkhyTklyOXZwRnJwdllhY3NDbFlBWlJaQnplWllrUUpwZGZ4dGp3NmdnWHBEU2JjSXhBR2tHV3lRTWNFMGJXR1VkTGlldDJMeUsvcVpyRFIvaXZIdDlqZDRXRGVWdkNzaHl5ZGhlbkZqcVdZdHNEOENDMkdhWTc3YWVQMGJHTUZpZmFBWXh3d0huMjlTVEZ5akkyUXpTdlJhWld0Rm5aQ1dNNENWVWJIeHpYTi9NTkkzMnpOWHhzMVQ0ekcvakJidW5tbGM0d1A3dVRMYUZ3N2hsTDU1N2ozblNNZkF0RFllVXNpejgveTU5NTlPZU1UMFRScTJsQVRFbTRGbzZuSTF5aE8yL3FQVW1KOVN3c216MkdUa2VDN1V3c05zNGpXcnlhTFVhU3o4Q0Y3REdjSnJYTGQ3R3BBZEVjZkJpY0JTYkFlN0NyOTJtQmdKRGd6c3prRE16WXNsckRNa3pZQ2lKdWxHd1lZYWpXS0Y3UjhaTnZTaE5ZWkRML054Y3lzcW42S0EwbHBGdWRuZlo4bmdHZ2IzUk9TdnVnYXhqak1IckFGa0pGNFd1MzAvdk1pZ0tnSDZqcVowc00ybXdyOEdPc3pDNzFZVkwyc2ZZcjVJN1cyNVhpNEZvTWZKLzlzby9Ib1c3UStmS2NXQUsySG5nRkZIbzZjbXJMUzNSaURBYnZVRFU4OEl2QnNzRFRFR2VWUXUvMlh2OSsxNmM1akxLT3YvYzhmWWJtWS95WGovNzZzdjc2OEh1dDk5ZFcvMTkrMm9vMm0yWWNzMkUyMFhtOHVNOTlPOVJnUkl4TGV4elhZbkVGRmc4bnNqNGhweVhiKzFFTllBc1pmeUJCZk1kVXV2bGpPa3V0bWpVQnlpS214Y0ZmcjlXYVZlTDMzZFZxSmRDUVBQcUhqZUtmUk1GcGRCSENHN2RhemFoc01xQUVORWgvbWltNjRjaHBFZ29keHVVMWg4bzR0Z3RiYXhjTUxtVmJ4QnJBUnN2ZWRXY1VtVmQwMUlkd3pFbHNnRmZuV1h3dmJKZzFTaFp4T25vRFZjZHZPNW5GMnVRSFk1ZjRGNVE0ZEllMTJnem5GSVc3Q2cyUkhUNnpiS2kzY3ZlN09tNmt4dGpkVkV3Rk5sYWh0b1J4Vmt5aXFmZmRINU5od0JVd3kwUUhUdkI0MkMyQnA4cjJaMktQQnR1R0dSeU90SUx5eDlNeVBIL1ZNL3V6RUZLSkY5Q2VOdlAzaHkvdE1NZ3NPOHNhdXBQYS9vemsrWDNpei9lZnZ5N1gvMzQ1bkVMOTE3djU3Yi91ZGYxdTl1OFgrM096WVp2Nys0QTV3Vm80R0lDNWZ0WUpldXUwQUpuUVFjRGJudGVmQldubHY3amQvKzNMT1hYcE1tZ0pLbUdsTFRIRkJtbGZJVWFmVW9WWGhoWENYOTd6OWRhSHhjdERhaGxQL05GUkRUZ3QwL1NuZytZM1hYU1YrMDlsSms5d2lza1EwMU95akhNM0R2NENjRWM2VVQ0SDU1bjNodUZhSHhGUTJwRk8yV2h6dUZKQ21VQjNUbHZxanJMVTRSekFQN3M1cVpNTWdQMCsvVFBiWnJldmRSdzM4RHBldTZYdHVCSHMyRDZyMCtkWmZOdEsvenpzNzFGdDFYUFNiOVJsT2k4UWQvUmFaZmZZZkYydVV1dVlaM3pVdkUrelROb0NNajAyUy9Ic3JrNTd5QU5vQlB5NW5hV0tBWWRBUk4xVy9jZmNFNUQvZno0SnBOc2hLZEVaK2RCdWEzdUxJZG9jMFhWbllCUTBKRm4zWkozS1owOTV1OEJMdnF3ZUlyNGlIaTlvbThuRWJ5WlRKM3pNTmlWOFcwTmc3RVpYZEVhTXpaejN3Tm9Laks1b2JNRkptTmIrUCtBU3A1YzBwMDNNRklVV2svZm9qNjIxMVhHNElRR1FNVEh4VkduZzI0ZTlmV1ZjajhQRUJ0cGxGQmlvYU9VOGZqOWhrbk1GYTRyTnkraHloZDEyY1p6U0ZCa2tFQjdvdEk2WXVnMjBsNjFWM1NZQ1BuMU0xWTBuZXV4bTQ0a2l2aWZ3b25EMTNjTnJ0UGdkQ2JyanF0NE9jVmI2TUV0ZnZZenpucTZ6eHlwSFVLajFuZWNnQ2V4S2tIL2IwZFFCR2RaSlllMTRUSStYZURCM0Q4NFhSODRTTFZURWRBQU95RWpseDRJRGNhM3NjOXpGc24rVEpjTTNkU0hDVmdhMHo4dVNRRzdzU0lSL3pDZkhIVG1rQ2NDNUNqemV3WWZnRjRVa0d2QTNiZUhJamZBNndoaDhVUjF1QnIyMFFMSTFnS1V6WCsxcnR1M00rbDdBbzUxcnhyMlg0UkNibzFhUmtiWHhxNlJ3dHgzZmhDMVpqcmJzTnQwNm1yVFpKaDB1eHgrRWhIOEZJSUlDYjhlNkdNazRKWW94T3hrSE1IVWI0clJyYWN2R3JCaDZQV2pEZ24wVERFajhoWVlYNmJNSldyTVlDM0wxOEdKcERJY0JZYmQvTTZET2ZJL2JRVnBPWWdOUVNIWVY3d2VaMzIxZGRhK1RSbmVrS3B3ak8vZDFPRVlrdm80RGRoaitHY0UwbnJ1eXVHYzJGb0RTc3JFNzlacWxXT1djd3ZEdW5PWTRNeXV6Zy9HQmF3cmk0OXptTTRoa2xGL2hub2JVbUlVc0h3UGd6Q3pUU2hpQ0JkRy8wRWhRSE5UVnVUWkNuTGFQVmV2NnVYUTdadjZNZVYrMnpmSVNvaGRyWVZ0M0lJS2xhckJLUU9qRjdqZHNlL0pKSC9reDkrbmpjZHpjdG9LRjFUZVNid0dVbHNpQUZBcjhtQ09icG9ZN3RBY29FQzZQNG5BNmh1VU1wMVJTWkF1MS9aVk12R2N5N2VucmQ5YVZPZW5sK1EvUVFoN3RwSHM2M2hZNVlkZnMzT2UvWmJNaVVtU2dXQzREL012Um1qaUhYNkQzMzRrcjZWSk1YclpTTEZnSzFpc2lzN2tEajQwN09rd2hPQml1UUh2Q3llTTVvVUxzYW5IYVlndWRGdkJ0M1FKN0trVnZUdGlTK0ZsMnM2NWRtMDAxd1JqUDVIbWR2TXVsM3BNYmcwQTUzVzdBT0RxSVk5b0xFZ3pXTEh2Y3NqSzZNekFBOGJvOHJXR2lYc1ZoUGdrRWJsMHdHSUdmZXUzOUErdEg1MjFpRHI1cDgyTXBnaEVicE8xU2JiYVBhZ0l1UHBIbk5LWGNuUC8rQXZkWlVaT1EyUTU5RkhhaDNFdTM3YnlRVkxjUTBLNEpHTnhmWTZzUXlQYzR4WDhiWFNVN05nQjVCOGRRMkJ6Q2wxOVgzY3dvUHRFQ0IxOCtRVTIzU1piM1FsOHcrc1d1SjI5bkhhd1RtQ3Mrb1RrWTM5Nlphbitla1JoZHExMzlheGd5ZlMzeVAyVk1kN292MFZabDI1MjZaZ3NORXE4WXY2ZmRhVGszeHZPRndxL0JIcVlFN0YvUm1oU25POTlHZmZjSm4xeG85d2VOK0R5eUJXenMzTXR6cHNpWG5taVJxWjBrMlJkeXRONi9KSU50NFBubjlLcnJIK09yVEtEQ0dUTmNaN0c1RGljMC9HWHp0T2MxRkN2MStNNjJKZ1pQd1FaOFR0UnhJalFPTWJXckJBczZZTVBmVi9LMFlRN1NaOVExc3owUTRyVTEzcGJPSWsvd1hTRVFLMnByRXR1S3ltcEUwYXpMbWNlbWltNk1xSFBRVVN4Vzg4WHJZYXUxTmRHT3U1NHpNb0IyczhBc1ZySGJHR3hnLy9oSTR3TTJYL3pFYmdXS2R1YnpXbklML3d3NHJYTEdMNy9Bc0FhWUZacGhvOGF0TU5ZRFpYRzJSbEVRUGxCTHV4eTFaVzh5WkhwYlhWeFEvU0JjeXBhL3MvK3NpaTBzRStWenFJbmlzazlTeldCeGMyZzRPajQzMEs4dHkrbnRHSnlXN3o3T3VMVHpGbEtDSlBkamRyR1k4ajBFRmtwNFc4Z1c3UzB2ZGpWYTd2YU9LNVpzbDUvbGx1WmJMVnBIc09wdnN1RnRkR0hnWXZDZEd2Y1puWmRUbkl5UTYzSTlUd0pOWUFpbi9aTzZPeGxkMFVOVU1SMGE0dWtWUnRxR0V3YWhxb2diemdRRDVLRHc0V3d4NEpLalZEd201REswLzFpdENUTTFodWY4VjR3R3JBVHFZRDdFNmdOKzJxa2dIbjZ3OW01TlAyREdIblZQSXpqTE9WOUdjd1ZheGM0c1h1ak1WaXlDWVhTV2wxL09tNjFPbHd6bU1UM0lZMkp0YnE0TWppcFlhUnM3Vzd5U0pjd1dlM2dTVDdkZHhxNlp6d0pCNTc4NzJEZWx6MktVN3FCb1c1Ujl3QVlROFpBSmpicnp2TDdMN3A3SE1qOXIvZTFZemM1dEJrTHdBamR3eEc1ZTRLVGRjZmZuREJSNzI3TnMxK2trZ0tsbEZ0U29INUxvZEhlWVBVNDBPZXI2WG83ZDRvR3FJNVFNNnpsVnhsWk9BRldRaGo5dnFnNmpBc0tNQVo1QkNLOGNxMVdqeDhyWkxmSXRwL0tpQU9PTWREemFuZnA2MGpUZ21BcVFvempVeXFiRktEY280NFRqcjdnZE5aUkFqc2FoOENHYU5SdjM3UFczMHZhY0t1QUV5Uks1UGU4ZUhndlBEWE8vNGJSNG5ua1dGMGlNYStOYnk0QjB6MTJ0ck5tMm56c2tKWmorQjNJNXU5NmhQOWlNZGlZdUE4R3JVME9BQVRycVdmQnI0Y25HK2ZjNlJYK2FmRmJsekFGd2hEbDY1VVNvOGZvc3phbGMxZW5IajUyY0Uvdm5SdkNDa0pyUFNhTGRDYjIydy9NR3dlZ2g3QmRXL3N5RkZZcVpKV3ZsMXJ3NnRON0RFU0FhcUtiOXBJK1R0dU80VGtsalBpTnRlWFVIRVJTN2tzNEc4TXI5eklYVVRPOVR5K0dFdDJLMytQSzRCWUJJZXZGdjBJUExlcGQ1NnRpc3BrQUZzeGwyRzNpVDRjVjB5cDFCeUtjMXJoZWJHQjlyMkVHK2lBWXdydDVuY1AzRmF0ZzZjc1RaZXEwajBGYk1taWRxdi9USmc1Zi9qWjArRVlwZEJ5YkMzcHUvNmNBRk5NaE9ybkFvTzk4WTlVRnA1Nit0KyszaHN4MzgzeTU1M01XLy9CVDdmdjFUcUo3M0RoV2M4WnRmWXJGci8vZEw1cDlYL3R2UDhQUU94NTdyT20yVCswYWRzUnRTYXRERnVqMW1BU2NkMituelg4dEoxckZnWHUvOHBqUE80SFpHbmJPajJqaHZlUDF6WFg3dktFUDlQZS8vN1BtdWYzM0FmenhmQkF5MVZSeW0rOEFUKzJ0YWJqdkl5bXJoUTF5emhXVDNoSGdIZSs4dkovYWw5MCtiMTlFV0RHaG9XSC9rZStVemdqd0Fkb0tSR25iOUhJanpyQytmU2pxTGFDTlE5SmtYWnFaRkIvc3VvOVZuTXZqNDRFZXh2dG5vZkxVa3NaME9pZ2VOeEZuRFJEeTJCMzY2ZktMNkZ1Ti9PTWh6Um9VejFWeWFOTmc3UU8vZVRwNWo5ZTFYckxhaW53cHBpRVVEbmo4TldqcjBmYzE0Q2N2M1hhdlZYNXYwOTF0SUNhN3pVREl3ZHd0T1FBZ1RrUWQvWVdxRFhadllrOWNSQm1VN1IvZ0k2YzBhbVd0NURFenY0VFN6d0NxaXN0WWJCdE4vTm9FTmNVWFZ2d1duckdFZnYzNDdGTlFSY0o0MDhhNXdkWTg2K3V4ZjhBWE9tRnZMVm5mdytKM3Q2ejZPdkhNMmNYVjJKWllFWUx1YUNuZU9IOWluRmlWZmxxUGFUSHhPZkxOMUlOakNid0lFUGJmMGZ2eDY1K0IybUNzc2tvWFJ4ZXBRNCsxR3c5S1JLL3Y3djl1aEl5ZmJ5czlaQldqZm9xTVpyQzJ3V1QyZlV5YUgxWFZPLy84emF1V2NKWlp4cGUwdDhiSVl4a2s1M1FtNU5pVG96VjRqTTdnQThlOVg4Ni95b1FBcU1xK0Rld0wwSlBzRXVBTmMrbkd3OThVS2VKbHQ3UUUzUDRPeHN6ZCtrNGVzeE40aG1DRjNZenJkb3NqOGNadnhXRnp1WEliang1RDBxenZHY3o4bmlLSHZyVGJtWkxQaWJNd1pNbXF6VGdkYW9uUUJSdW5vM2Y0NlhkSnVtbkRuQ2NWdFRxdCt6VkRKSGVNYWhqeUJkZmFtT0VqUUdDOEtnVm0rMjdiY2FscUNPVTVlRURmYThSUEd3aGNvK0tyMXpJYVlRcVRtQ0lPMnh1TkpLZklLbTVReEl1MWRIdGpscVZGRzBJeS9BL0tjTXhWQ2RneUVzUkdXWVkxaUF5dEs0OFFBNTQyYkM3WUxZTnRKNkltWXpkUFdLamltQzEwZGlyZXNLM0RlM2tuSXdXblptTmRZemF0QnhzRkJHQjE5WlFlM2pYek9Gc1dGaFhQZ21BSFdSekRrbE9wcS80NVRCVjdJU2djZTR6bFhPeHJ5Wi9TdXAydkFkeE9BRU40SWJ1RkMvT2NjRFFkY1BMMm1hdU5wSHBaUVlRWHFQblgrc05nejZXZTlEalRCdkw0T0VKbFEvV1dCOTdaSFBEbnUxUW1tQTlLUDZRQUNkdFlEYWNKcHJRZXBnRUpnOUFLSUpUc1haTThITjdsZ0pVOWU2RFk0eTVZK2JMVEhVRFJQV3pLR0hIakd4M0pwUWZaMndCaWtKanRFYm4zT3piYkg3QTdiNEpQUkZkVFc3cmxselpxSnc1RnN0RHZiOThEWlBCT3c1V2p5MzlOVjJEVTczTGVueGxodzRpR3NPem56RnZBeUVCM256TmdEYzN1Y1hDLy9NZ3Zid3FZeS92VFRycitaczV6Ly9xMS8vYzRabW1uYTBJSFl3K0Y0UzlTUXpubHNGakpWcURrZ3k1NDlKMzRqMS9FYzFWTnRRUnVucmdZaFRzbngwSmJjSUFqYjNyTFZGcDdmOGV6RGFjVDFnajBEOG5KMElNWXBiYkpMNVQwWmlQa2pkdUNrLys3ckczUUtDYXM5Tm9jcHNKbzVRSjZxYzJaYXNNRTZ6M040MFd0SU5XRzduajRkNjNwbVROczBkUXBJbXhYL0FHOGUrWWtYRnN5dzhUWTFmbHNOOWo5OHBtS2ZmQndEbXJXT3EwcTFTcThmRUplZUZ4S0FaUTZ2aFl5ZkI5dkJBWmI3MW9LVkFsOHpjT3RKVFhaNVBFNFp4b1JYNnlLQTBtMUQwVzB5ZDZiU2lTTFhYMlRZczI0TVVuaTRubU1oNDVsWWdwTjBydkNKdStWd3JZVjdtVmJvTzlvUjhaaXY0WVBxcUJjd045dDRuai8vNmEvL0RRYTNtZXNjOTJVbTZNaEx2STY0SEdGaDFmNHBTUEhmdmk1OTNicXFmQkQvYTBHRFZZdFdtc0FFZXJ5SzNTZ0E4d3E3M3NYSTJGcWVCd0J5SEE3L2RDWXpiTTA1ZG5Za3hOcUNuaU9ZK1JlZFA1S2hDSVc0TmRyc1dMSVlmOGsxazNOajJWL0RpY01tdkEvVzBJMktuS21yd1ZybjRyRmNGbEk0SWVXazFhLy9OcS91bVhiMllldTRVWWN6a0FvRzRsUVV5UFAwRUtVQldoU000OFB5SmZDK25VeGdCYmZSUUtlZ3JlbjhTNk9aZzgxM3FMZVZMdnM5YzZzdDA5SmFhRS9EbTlGOVF3WVhNS01EVENRUWNMSnVJSEtoaFBtdVRsVi9uQ051QjJIOW5ML0V6MGhMMGpuQXprSG9BLzU5ZzRiZ0ltd2hPM1huQXVwbzVuMC9SMTZCTlp3VU5rMEdkU25lNjd3TFJKQTEzQVpyc0VpR3J6M2lZSUFzYzRjYzgzT21ML3M5U21HM3BtY3VuQnBtMkxWSUJhdmxxWmlJUEk2U0hmSGNTS2crVHN5bXJWR0h1WWpud29BQmNZemRMTlNnVFV3OHJnL28rUzRMOFo3SHR1bmkzTnhzTyszbm9CZ2I3eXdaYm5mQlRCZWpwL0IrVEthbkFWVHJoTE4xRS9HYzNnT2d2SGZGY0g5R0hFQmlXRldMV0lZRDQ3ZERNTG4xNjdsTnNFN2VCRjJ6dkIrSGV0Y0tCbkcwZVA4OHhJN25OR2NUbjJkWVovZm55Q3VQd29IUy9zN0lhcmdvdytYaEhKeUVxN0gvKzNNTXR1ZXdObWUwNEM3UllLUm9mUlVid1NXZFUrUVl6SEp5TGE5aHlBekJCZTE0RWtPdWwzUEhXN1dYd25sdHJPOEh0a2FlbllrbGxQdHpHaU9nRVE3eDA3eFBMTzNRaG5lZHpqbFk1MFQ3YjRQbU94NmxnZi85YjM3VW9IWTk4WVRxSkpYaWFXZkJUbmRXMU1DNFUrNnNuSmJtZTlBZGd2NzhBTldOdEpuZ0c4bE1DVnpkbXdIdEhBRXp6bEdScTZEWW9ER25ERGY3MHhNd3FZS1FuRFg3SENMdHlOSzdmZFhUT3owNTljeDNRZnJyY0R5RGRyTEFMSUQ3RGxENUtydW14SnlJaVpUSHMxODhaUS9rN2FHNHcrSCt3U0ZMOFQ3Qmxwb2R2Z2VLVjU1UGR2QnJUcXF6VzB4bzRQUzY0Y1JGRDBldFFLSzZQQ1BTOFN4ZHN1eXI4azlBaFZVL3ozMGFBVHlmMDdwNGJFbnY3VHFKRjlDbGcyYVZpZWloNVpDOVIrb3ZCN0RCQW9kUTdIQW8vVlFhMjBKbDFROG0wSEdKU04xYkFLTnJuek1ub0dCQi9adU8vQm92YkJzRGFrMmRaNTNZbG92aVBBR2kxUDNCZGViVm9qT2V3NGJKYTVmcC9qcks0MFFLWE16ekxEM2RFZ2tKMnUzYVQvWXpkclBsWUdnd0ZKL0pmNTEzV3IrVCsyK1hkWUgzT2RySEJLNVJUTXUxcW9uaVlEdExZVjJBTnBESUkySi9CQXhrekZZYmN3ZGwyaUNZRWNoVHNXODk4ZkFvd0hsS1psNm5IamhRRTJWemlwNTl5UkNkZld1dHYyakY3ajZObk5PQmRaQ3Zqb1hzdjRraHk5RVA2VitWd29nL01CYnoyNm9IbW9KYVdjRURuVzE1bFgwWDV6eDdDb01UYjA2eDJZdXVCeVVWTTJ3MHhWTnVZckFGclZycDQ2a3RrQWZyR2YvMmlrZUhqZ1pkOXpsQ3B0V0Q2SXNUS29LWml2dmJ4VGtZY1hoZ0FZVFVIdXZYOGRlNWVBNFpodFVVK3R4V2lHREIzOHVXQkNkdzJXdDc2di96TDBiQzR0WlFmMlhwMzUvM3p2aVArRHBrT0dJYllybmxaZjEwSHEvTGcyWFFWQ2ZRVEg0WXhGcXNUNDIvbmhZYzFmcmZYZnJrcllLRDA2OGwrTFp0QVJpTU9GcmRoam1ZeDQ5NTJOQTU2UTYvRmZSWDVvdXR6RVB6RFZ4Q0FZUHRPaWJBTDMyQ2dTZURqWTZiRHg0UGdHTENjczdad0k3QWZEenBHTFY1MDFoMnVLZmJ3ZmJ2OGEzZ1c2aFdIRmM5N1dhbWRPWHlSVnhjelMzb2Y3Y1ZFY09od0NhMUM0N0trNUE5Wm1NYmdCcWVWWHNMdWt5d09ISVhMQ243aTZiY1BxY3RHdE1zUVVwMFRpbHFKNmQ1bzMybUl4OG5WNWFENWhIK2FJTnptUFA2cFNvRmFzSDB0Tk9mMDJEOWxxTjNuZEViNHpyVG1jMnN0VE9ZelVEZjQ0bW96aDdwSnkzem9tdmpOdDFqcVdKeGlxT2xNL3lZODFNcUsvVUFwUjJtV1crUHV3UkhGRHRjQUJrdGdmZGU1eUszUC9OcWVVaVk4TW5Rek5TZEMyU2UrSDR3QUx1ZVNQR011OGJrTWI3WkRCZU91bnFlRk16UU10MTRDbUcrQ3dkV0grY0N2bVUxc0E5NDJuNWJ6MzUxdk1BNlkxdzgwZXh4TGsvK2RWTThmODdWd3NCdFQ2NEJkRjFXVE51UTcvR0FyTE9UL2ZjNUhPWjh0QjYzUEpvbm9Kd0lUc0M3cjRvcmk1NTYrcDFScXg3TW1PRDlWckZBUUowWGpiZXlpTC84VFMwOS8vdUZCTWZtYVFwT2RUUUVacU9EU2Z1VEVUeERVQzlNakdiWmVRZkl5RzBGblFPbUhIYTBUenF0NU44NVB0WmRGYWVzMjBING4vcC82VUtkby9DZHZQM2ZLODNmWnZBV1JITGFCVDNsN1UzNHhWb2RURkE4M3ZKek9Qbjc0ZyszWi9ud285cEtlSWhkM2s2VUN3NTl5MGlRMjQzOFZLTXIwMk5Wc0g4blR2U2UwN1doQ2oxWURjb25ybmhxVFpEa1UzblRuWjU0c3lMb3dMelBJUU9qMlc2SkVFOG5LTnA4YjNHeUliYnlPRGtaaGdEb1NKY05MdGFQV1RtMmh2UGhrc2ZrZ2FFZmg4TUhKNWEvbmdyNjJnemRuTzJwTDNMNnFSV1lucldCdkVIWDM5Zmp3OFR4ai9OOCtSbW5PK0NJZGFaVzdLN29zTTl1L1E0Tyt3WjJPM3I4T2NWeWVBQjJhRHBNNERvaEZBQzUrR1U2MmdGZzViQWdnOVBSVThLRHh4RTUvTXpEVDZ5dGhPeDc4dDN5YURsSWhBS1M4UDAvMG9LY04xTmlnR1pEMTJFNnJjYUoycStORGluODh0SDJiaWZVOFBXY0tTdXRjZVhKUXVkUTdzdGNkUXdaMW0rZWR6aXVZdDNDUWp2UkRldWJLNUl4enhPVHczMldPVEFsb3g4azBldUlLRE9vMXJNU2tXWGRUSUZJMktsUkRKbitDaXcxVE02ZTN0RkRmSzN4N1JhRWJ1TUwyR0hrZFR2MHNUblo2ODlrMDduUElYTWUwcERGYUd4ckd5ZlZoS2tmMjlsbUVtalBTMHltZjh6ai84NDdBdXI5WnJLOEMxT0JlUzJlK1B4cmdiUW1wSjRobmtYRzZRR04xVm5pRmlaaDRxMW1mbXgxeEtmYmpIUTZXS1pudnp6YndWTzRqVGVlZkIydjNlOXdzdWFPbnJSb3pCU1Z3NXo1VEE3QWh2cjFnOWJ2RHlYRHRYbTJXSmFZcHRrU0Fvem1PdEhmRTZsTjRRR2x6cEZHTnBRQTh5d0xIUjYxM2gyaTNKNXFzNEg5V002cmxXQTg1dDNSeXhoMlFHTU1uajJtRHgzUVVCMmNXeXllbHVadExIZ3pjZUV1TzVEV0pDT3N0bDFud2l3MjIvTy95K2U1Z3ZhTlRKZGx0R001a2NQbjlJMDZDT0oyQm9PRFloVE5aRnZyT1FzbExZOXlhaWY1eDI0YVhiSHhxV25lVHZyT1pKd3pSdFhZN1duQVZreGdFdUgxL3RqZGpWTGpBNnRERkpNQmJxOS9oMk1oRHBIU1hFSGVsdG45bU01Uld4N0F4TDdaRzh1NzJyaWhxelljdWJIMmw5VWVyem56Y3pTOURHZW5NN2FwV2ZOd0NsZFc1elhmOTNSOFk1RndtZG5HRzZPQW52c1R6N0hmRitUTmdqVkxTNXI4SXVPNTd6dzhkQ0pqNlJaYllDVkZFaDA2K1EwM2pYM1RJWGd2K1pCZHA5YXd2eDdlaWcyd0VNYUtKcnc2VDJYMGRGcDMrbVhyWVQ4dUNNSEN1WmZsb1IzWXg5SU5aVDN1Z01uVHkwMVlaOTc5NE1udTVaRVlDSUJ6Um9Ta0ZtK0pvTGZGM0dkbTFobG83UkN3dXM4QjMxYTdsUFpkQVMvWjdNMEtUdHdkOXpuc09WblR0RHpCUWpWOXpDdWJFblM0UFBhZWIyZUh3bGI3MTdPbkZmZStMOXVqSFQrRjNtVlAzK3JPQnZEY1AvdFh3bk1PVlBMUUdBOXhxaWJnMkYvSlp2ZkllZyt0d2F6cGY2NXpMQ3JJNWZyL0FwWVRxQThhSmVyWUFBQUJnMmxEUTFCSlEwTWdjSEp2Wm1sc1pRQUFlSng5a1QxSXcwQWN4VjlUcGFJVkJUdUlPR1NvVGhaRVJSeTFDa1dvRUdxRlZoMU1MdjJDSmcxSmlvdWo0RnB3OEdPeDZ1RGlyS3VEcXlBSWZvQTRPVG9wdWtpSi8wc0tMV0k4T083SHUzdVB1M2VBVUM4enplb1lCelRkTmxPSnVKakpyb3FoVjRRZ29CODlDTWpNTXVZa0tRbmY4WFdQQUYvdllqekwvOXlmbzFmTldRd0lpTVN6ekRCdDRnM2k2VTNiNEx4UEhHRkZXU1UrSng0ejZZTEVqMXhYUEg3alhIQlo0SmtSTTUyYUo0NFFpNFUyVnRxWUZVMk5lSW80cW1vNjVRc1pqMVhPVzV5MWNwVTE3OGxmR003cEs4dGNwem1NQkJheEJBa2lGRlJSUWhrMllyVHFwRmhJMFg3Y3h6L2sraVZ5S2VRcWdaRmpBUlZva0YwLytCLzg3dGJLVDA1NFNlRTQwUG5pT0I4alFHZ1hhTlFjNS92WWNSb25RUEFadU5KYi9rb2RtUGtrdmRiU29rZEEzelp3Y2QzU2xEM2djZ2NZZkRKa1UzYWxJRTBobndmZXoraWJzc0RBTGRDOTV2WFczTWZwQTVDbXJwSTN3TUVoTUZxZzdIV2ZkM2UxOS9idm1XWi9QOGE3Y21MdzBYeHZBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINUFjQ0VDUVNSMS9VTVFBQUlBQkpSRUZVZU5yc1hXZDRGRlhidnMvTTFuVFNFd0pKcUVLb1NxK0NTRkVzS0tKK29vQ2dpSXJTdXdndnZTZ2RRU2tXUkgxRlJJb0ZDL0tDZ0NDQ1FpQzBrSkMydThsdXl2YWRjcjRmT3pOc0dvWVNpdXh6WFhOdHNqdTdNM1Btbkh1ZWVqK0VVb3E3VmY3ODgwK01HREVDZi8vOU44TER3OUd6WjAvRXhzYmlxNisrd3Rtelp3RUFHemR1eE96WnM1R2JtNHRISDMwVUxNc2lKQ1FFYTlhc0FRRHMzYnNYSTBlT3hPblRwNUdZbUloR2pScmh0OTkrdzlpeFkyR3oyYkI1ODJZVUZoYmkwVWNmaGR2dGhzUGh3TkdqUjJFeW1RQUFvYUdoU0U1T2hpaUs0SGtlZ2lBb3I0SWdRQlJGMzcrSktJcnczU2lsOGl1aGxFTGVBSkN5cndCQUtTWFM1U3V2WmQ0ajU4NmRpNG1JaUlqVGFyVXhMTXZHTUF3VHhUQk1CQ0VrSEVBTkFDR0VrQkFBZ1FBQ0FPZ0JhS1NOQmNCSXZ5Y0NFQUI0cE0wSndBSEFUaWt0QVZCQ0tTMmlsRm9vcFdaQkVBbzRqak82WEM1VFhsNWVYdlBtelUzUzcxQ2ZyZHovaEpDeW44bnZBUUFsaEpSNzlka293ekFnaElCaG1MSWJaVmtXTE11Q1lSaklmNnRVS3VWVjN0UnFOZFJxTlRRYURUUWFEYlJhTGJSYUxmUjZQZlI2UFFJREF4RVVGSVRnNEdDRWhZV2hSbzBhaUl5TVJIUjBOT0xqNDNINDhHSFVyWDhQL0hKamhOek53SFk5NHZGNGtKdWJDNFBCZ0lLQ0FsZ3NGaFFWRmFHa3BBUTJtdzEydXgwT2h3TXVsd3N1bHd0dXR4c2Vqd2NlandjY3g0SGpPUEE4WDJxVEFjeDNFMFdSeUFCWEJzeEtBWm44ZnhrQUt3Vll2djl2MjdhdGdWNnZyOGV5YkYyR1llb0FTQ0tFSkFKSUJLQzdUWWJaQmVBU3BUU1RVcG9oaXVKRmp1UFNyVmJyaFFFREJweVh3YzBIMkNvRHZISUFTQWloMG5oUkVISjVZQWdwQlh5K0lPY0xlbVhCemhmMGZNRk9wOWREcDlVaU5EUVVNVEV4Q3NDRmhJUWdMQ3dNNGVIaGlJeU1SRVpHQnRxMjd3UzFXdTFmWEg1Z3UzWVpPWElrVnE1Y2VWdWRVM1IwdEZmTnFRRE1aSzFNQmpiNTNzbWFtaTk0K2Y2L2IvL0I2SmpZMktacXRib3B3ekFwaEpBVUFJMEFhTy93VytnR2NGb1V4Vk9DSUp4eXVaeXA2UmZTVXgvcDI2ZEEwaFI5UVUwc0E0Q2dsQ3IvWDBHam80Umh3QkFHREVQQU1ES1lNWlJoMkFwQmpWV3hVS25VVUt0VVVLblYwS2pWRWhnU3FEVWExRXBJUUVCQUFBSURBeEVjSEl5UWtCRFVxRkVET1RrNWFOcXNKUVJCUUV4TWpCK1ovTUIyODhSb05DSTNOeGNta3drRkJRVW9MQ3hFY1hFeHJGWXJiRFliSEE0SG5FNm5vcVdWMWREK1FVc2pzdGxaQnRCOE5iTlMybGhaVUh1NDd5UHM0bmVXdE5icGRLMFlocm1QRUhJdmdBWjMyVzA2SjRyaW43azVXY2MwR3ZXZlk4ZU0rWFB2M3IyaUQ5aUpsUUNlWk1ZU1NnZ29RRUJJWlNESGdHRVpzQXdEaG1GcEtZQlRzVkN4bDdVMmxXeWlxdFVRUlJIQndVR0lpSWlBWHE5SFFFQ0FZcDRhalViVWIzQVBha2dhWEd4TUxDS2pvdnlMemc5czFTZkZ4Y1hJeWNtQndXQkFmbjUraFdhbjArbUUwK21FMisxV3pFNk80K0R4ZU1EemZDbFE4L0dqRVY4L1dnV2FHYW5BWDZab1ptUEhqbVVmZSt6eFR1R1JVZTJEZ29JN0VFTGFBd2p5M3pIQWJyZkJXbEtNVnZmZGE2T1VIdUo1L3BEVmFqMzg2cXV2SHZyaWl5OTRRa2hab0JNck1tM0xhSEcwbEYrT1VjQU5MTXVBWWIwZ3AySlpzTDdnSmdFY3d6QmdpRmN6TCt0L001dk5xRlU3Q2FHaG9WNFROU0lDMGRIUmlJdUxRM0J3aVArRytvSHR4Z25IY2NqS3lpcWxwUlVWRlNsYVdsWDhhR1cxTkZrNzh3ME95SnFaYkdiNmFHUyt2akpDS1dVc0ZrdmpvS0NnKzFtVzdRS1Fya2VPSEFtTlQ2anR2MWtWU0c3T0piUnAzYnJjYytyUTc0ZjNSVVhIN2k4b3lOL2Z2bTNyTkFuVUt0THF4RXBBN3JJbXh6Q1VJVDRhSE11Q2xiVzRjdHFiQ3FJZ0lqSXlRZ2t3NkhRNjZIUTZGQlVWSVM2dUpnS0RBaEVjSElMUTBGQkZlNHVKaVVWd1VCQ3lzekpodDlzcXZkN0F3Q0FrSmRkRlNHam9MUnZ6a3VKaVpGeThjTXZQVTNXM1RYWktLUXdHQTB3bUUzaEJnTTFxclhBL2k4VUNrOGxVU2p1ejIrMktkdVlMWlA4QVloVkdOV1dIdjJUL2dQajR4OHFDbWNQaDZLYlJhSG93RE5NRFFGUGY4M1E2SFg0RXEwU2NqZ3JISnRUdGN2YlZhclY5YTlaTXdLWHN2Sk04ei85aXM5bCtiWnJTYUQ4aEVIeUJqbEphVHFPVC9ITUFJWlNJSWtSQ3dJZ01CTUpRaGhIQXNneGhHQllzejFLZTVhRlNTUm9jcDRJZzhMRFp0TkJvTklwMjczSzVVRkpTQXExT0Q2ZkxxL2s3SE42NVpyTmFVVkpTZ2lKTEFRSURBeEVXRm5aRkxUWGo0Z1UwYTNIdkxSdnppK25uNFhEWS8xR2JydTd6Vk4xdG9IYnMyREdBTUFnTUNrWmdZQkJpWWt2djQzQTRrSk9URGJlSEI4ZUw0QVFSZ2tnaFVpaXZGS1QwUmxGbW82QVVFQ21GS0ZJaUtwRkw3MWJXeEtTVUVpcVptY1Ficm1PY1RtY2ZqVWJUaHhEU0IwRE5hNzNtSDNmL2dJMGIxc05rTWlJK1BoNGZiL29NNTg2ZHhkQWhnNVI5SmsyWmhvY2Vldmh1eGI4bUtwV3FTVmhZMkJ0Wk9YazVnaUQ4WUxmYmYwcHAxT0FueVZ3VktnVTVTaWtGb2Q0QUt3VWhJa1NSUUJCOEFJNWx3Zk1zV0JWUFZid0tvaWpBNFhDQTR6aW8xV3JGWFdHMzI2RXBMbGFBVG5adE9CeDIyT3cyRkppTUNBME5oYzFtUTJSa0pIUTZYYVdnY1N2bG4wRHRacDNuWFFWc0JvTUJJQXlpWStJcU5sMXljNUdYbXd0VHZnbG1zeGxGaFlXS0g4M2hzTU1wbTUxdU56eHVOenljQjV4SDB0WjRIeDhhTDBBUWVNbmNGQ0dLc3NsSkNhVWlLQVVCS0xsc2Nuci8vKzIzQTkwVEUycy9HaDhmMy9kNndNejNlaGJNbjR1WnMrYWdkZXMyS0NrcEFRRFVxMWNmUC83OEt3RGdwYUdEcTIyOE42eGZoOGNlNzRlSWlJaHk1N1ZzeVRzNGNlSnZhRFFhOUhpd0YwYTgraHBZbGdVQVpHZG5ZOFd5SlRoeDhnUzBXaTE2OXV5Rmw0ZVBVRDZ2RHBHT1dmUEV5Uk12YXJYYUY2ZE1uWll6ZE5qTDM5bnQ5dSthTldtMFh3STRvWXpaV2xhTGs0SVBJa1NSZ1NnU3lnZ0NCSVlGS3pCRVlIbUlva2lkVG1jNVlITTRIRkNyTlY1WGhqUy8zRzQzbkU0WEhBNG5DaTBGRXRBNVlMZmJFUkVSZ2NqSVNMOWE3Z2Myd0dUS1IyQlFjTG4zYlRZYnNyT3p2RGxwK2Ztd0ZGcFFYQ1Q3MFM1SE85MHVGOXdlTnp4dWp4ZlVPQTQ4eDRGVEFJMEhMd2NFRkZBVEpUQ1RFMmk5SUNhYm1hZE9uMjBTRUJqWWoyR1l4KzEyVytQOC9IekV4OGZma09zOWszWWFrWkdSNk5peEV3QW9DNEVRQXExV3EveGRYZkxoeHZYbzNLVkxPV0NiOGZZME5HblNGUCtaUFJmRlJVVVlNL3BOMUV5b2lYNzlub1FvaXBnMFlSeTZkWDhBcytiTWc4bG94TGl4b3hBVkZZMytUdzJvbHZPczVKZzFvNktpaC9WL2FzQ3dyQnpENmM0ZDIrMzR6K3k1Mzc0dzhQOU9BUkFrN1UwZ3hLdVlYOWJrS0tXVVVFSUVTaWtob2loU1FrUUlBa05aMXV1T2NMbGNVS2xVVkE0cXFkVnF1Rnd1cU5SMnlhWGg5ZE82UFI3SlhIV2h1S2hRMGVaY0xoY2NEZ2NjRGdlaW9xS2cxK3V2NmJxLzJ2SWwzbHU5RWovOXNoY0E4TXJMdzJDeFdFcTVZeVpObm9JZUQvWUVBSncrZlFxN2R1NUE4K1l0OEdEUFh0VytYaGZNbjR0dmQrMVU1dWpySTk5RS82Y0dJRDA5SFV2ZVhZeVM0aUlFaDRSaTRxVEpxRlhMNjJjK2VPQTNyRm16K3U0Q05sN2dFUmdZVkVaN3lFRnVUaTZNUmlQTVptOEtoMWRMczE3MnA4blJUby9rVS9QSS9qUXZxQWs4RDU3M0RRZ0l2bWthcEhSQUFNeEhIMytpNjl5bDYxTXN5L1luaFBUeWRhcmFTb3F1K3pxUEh6K0dHZE9uS1pyQTQ0OTZ6Y3grVC9USG9NRkRxdlFiaHc0ZXdNb1Z5MkV3NUNFeE1RbGp4bzVIU3BNbXl1ZDdmOTJERFJ2V0lkOWtRa3hzTElZUEg0RjI3VHNBQUVhKy9pcXlMbVVDQUVhLytRWlVLaFlKQ2JXd2N2VWFpS0tJcmwyNzRlRytmYUhWYWhFZEU0TldyVnZqN0prenltS3FFUjZPNXdZT2hFYWpRVUt0V3VqWXFUUFMwazVYMjd5b3dqRWJFVUlheGNiR1RyaVVuYmZiNlhSc256SDlyUjJmZmJiWkNZQ1hORGNaN0JTUWszMXhoRkJRNmpWVEthWFU3WGFENTNraUJSVW96L053dTkxZ1dSVjROUStPdit5ejVhUmdsTFdrUkFsTWVUeWVVZ0FYR1JsWm9mWW1paUlZaGluM053RGs1ZVhoMjEwN1MrMi81djExeXQ5dWx3dERCcitBanAwNkF3QldyMXFKOVBRTGNOanRxRmV2L3RYWitrMmFLSW5zVnpySHN2OWJ6R2E4dCtZRE5FNUpLZldkV2Y5NUc2TkdqVUh6RmkyeGErY09MRisyRklzV3Z3dVh5NG1GQytaaDVlcTFZTzRtWVBNTkZEaWRUcHc1Y3dabno1N0Z4WXZweU03T1FsNWVIdkx6VFFyQUZSY1h3eXFab2phN0hRNjdBMDZIMHlkWHpRMjMyMDNjYmcveEJoRTg0SG1PU0RscFJCUkZSaFJGaGxMS1VrcloxTk5ubTJkY3lwN2RyZnNESjFRcTFRZStvT2FyUFY2dnRHalJFdHUyNzhLYm84YWdaczBFYk51K0M5dTI3Nm95cUYwNGZ4NXZUWnVDRWErOWpsM2Y3Y1pUQTU3R21ORnZ3R1EwQWdBeU16TXdlOVpNVEp3NEJUdS8vUUdQUFBJWXBrNmRESWZrckYreGNqVzJiZDhGQUZpeWJEbTJiZCtGbGF1OUpXZ013K0M1Z2M4akxLeUcxOWw4TVIwSGZ2c05iZHUyVTdUS0ZTdFhRNmZUS3hQOStMRmphTmFzZWJYTmk2czVKaUdrWjBCQTRNb0ZpOTdaWDc5Qmd5bHIzMS9YakZLcWhUZmhXUU5BRFZBVnBWUWwzM2Q1SGtoemduQWNSenlTTnVaeXVZakw1U0l5V0RtZFRqZ2RUampzRHRqc2R0aHNObGlsd0pYTlprTnhjVEVLQ3d0aE5wdGhNcG1RbDVlSHJLd3NYTHAwQ1c2M1d6blBJMGNPWStya2llQTREaGFMQlM4TkhWSktHMXUwY0Q1R3Z2Rm1wV1B5M1hmZm9sUG5Mb28yT095bGw3SDRuU1dvVTdmdVZZOXZTRWdJTkJwTmhaK3RYL2MrTm4rNkNRQnc0c1RmZVBPTjE4czljTXI2eVI5OTdIRTBiOUVTQUhEUFBZMWdsZ0F6THk4UFlXRTFVTE5temJzdkt1bzFTWTNJenNxV25pTDVLQ3kwNE1LRkM5ajl3L2ZvMXUwQnVGeE9PRjJ1eTZhbnBLVmxabVlnckVZTkVFSWc4RHpoZWErRzV2RzRJUWdDWVZVcThCeEhaSkhOemQ2OSsvUlorOEg2Wi9mOWIrOVRIMjdjQUk3alVMZGVQVXlhUEVWWlRMZVQ3Tnk1SFYzdjc2YVlzTDM3UElUdnZ0dUYzYnQvd01EblgwQkVSQ1EyYlB3WXRXcDcxZjlISG4wTVM1ZThnNnlzUzJqWXNHcjFqcWtuVDJMMHFKRnd1Vnk0djF0M2RPbDZmNFg3clhsdkZmUUJBWGpvNGI0MzdmcXJja3hDU0sySThJaFJRY0hCb3pLemNyZVdsQlIvMVRTbDBTOEE0YVhJcWlCcGJZS3ZCZ2VBOGp4UEdZYVI4eGVwbE5kSUdJWUJMNmdvTC9nbWNYdjl0MDZIbzFRK3BLelJlUlJ6MVd1bVJrbEp2YTFhdGNhdmUzN0J6Qm5Ua1pPVGpTZWZmQXJoRWtocy8yWWI2dGF0aDBhTlV5bzF6YmQrOVNVV0xuNVhlYTh5WUxwZWVmYi9CbUwwcURkZ05oZGczLy8raDFsejVpcWZtUzFtVEo4MkJXYUxHVzNhdE1Yb01lT2cxV3JScjkrVHlqNWZmUDRaZXZidURRQ0lqWTJEeFdKR2VucjYzYVd4aWFLSTlQUUxPSFBtaktTbFhVSmVYaDVNSmhQT3BLV0I1M2xjeXJxa1ZCTEllV3BPaHhOT2x4T1VVbmpjSHVKeHUwdHBhRkxhQnFHaXlCQkNHRW9wMCsrSkoxVVhMbDRhUEc3OGhCKzdkTDEvcTlsc2ZtckY4bVY0ZCtreWZQTHBaMUNyMU5qNjFWZTNiWkFsTHE2MG42OTI3U1FZREhrQWdLQ2dJQnc5K2dlR3Z6d1V6ejM3TkFhL01GQVozNnBLU3BNbTJQM1RIbnp4NVZiazVlVmh3L3AxNWZiNStLTVA4ZnZ2aHpCMzdueW9WRGZuR1Z6VlkxSktZU20wSUNnd0NBekRQQkVXVnVQVFM5bDVXOUxPbm4rMmVmTVdla3FwRHBlSkFYdzFPSVpTeWdpQ3dQQThUM2llSnh6SEVaN241Y0FCY2J2Y3hPVnllVk0vSEU0bFYxSU9IdkE4cjFRc2hJYUdRcS9YdzJReUlUYzNGMWxaV1VoUHZ3QktLWVlQSDRFL2ovNEJyVWFyZ0xUUmFNQ083ZDlnMkxDWEtyMjIzL2J2UTFKeUhjVEd4bDNYV1BidTNSdjkrL2RIZkh3OE9uVG9nUDc5KzZOeDQ4YWw5Z2tLQ3NJcnI3eUtMLy83QmJwMTcxN3F3VGgrL0VTODgrNVNiUHIwYzVqTlpueTlkVXVwNzI3NThyOG9NQmZncWFlZUJnRG85WHBNbmpJTjgrZk52bnMwdHFLaUlwdy9meDZzU2d0VHZoRVdzemMveldyMW1wcFpXWmNRR3hlSDNOd2N4TVRFS0U5Q1ExNGVPSTRESVFTVVVzSnhIZ0FFSE1jUlFlQ0IwaldhWlBOblh3UXZXamgvOEpLbHl3Y1JRcG9lUEhnQTgrWXZCQlZGdkRGcXRHS0NOYnpuSHVUbDVkNldZeFVURXdORFhsNnA5M0p5c3RHeXBUZnZhTi8vOXVMVFRaOWd5ZExsU0toVkN3RFFwVlA3aXJTYWNtRG5kcm53M1hmZm9rK2ZoNkRWNlJBWEY0Y2VQUjdFL3YzN3lrM2FIM2YvZ0dVclZ0MjBoTk9yT2VhUkk0ZWhVYXZSb0dGRDMrdnRHQmdZMkhIN3ptOWZkcnZkbjMzOTlWZi9uVEJ1YkFraFJKQjhjYklXcC9qaUJFR2dsRklxaWlJNGpvTWdpSlJsUlFpaVFBUkJvSUpLZ0NCNFFjODNKOUp1dDBPajBVQ24weW5sV2JMLzdmeTU4eWpJTDhDYU5hc3c4UGxCT0hzbURRdm16OFdreVZPeGM4Y09XRzFXdkRMOEpZQjR5UnlHREhvZWE5WitBSzJVUXZMRjU1L2g1VmRHWFBkNGZ2Lzk5d0NBRGgwNklDTWpBN201NWVmN2hRc1hNSC9lSFB4bjFoeHMzTEFPdFJPVDhQRERmU0VJQWxxMHZGY3hoWHYyN0lYRHYvK3VmTy9YUGIvZ3h4OS93THRMbHBlS2xyZHIzd0h0Mm5lNE96UzI3T3hzbkR4NUVsbFpXY2pLdW9TODNEeVlUSmVEQlVhREFZSWdJaWd3Q0VXRmhZb2ZyU0EvSDRJZ0lDUWtsR2kxT2tJcGhTQUloQmQ0SWdnOFlTUUJ3RHo1WlAvd2k1blpZenQxN25Jb0pqWjJjZHJwVTAyenNpNEJBSktTa2hFVkhZM09uYnNvaTN2SGptL1FvOGVEdHk2UUlwazZBRUFseWlRWmhCN3Urd2oyN3QyRHc0ZC9COC96K09XWG41RjY4Z1I2OXZLNkJNMW1Nd2dCR0paRmNYR1I0aU9oWXVrcWxyajRlQnc2ZUJBY3h5RmZvbW5TYUxYNDVPT1A4UG5ubThGeEhJcUtDckZ2My8vUXJGbXp5NmJ3anUzWTl2VldMRjIrVWpHZnF0MzhydUl4M1c0M2ZqOTBFUFBuemNId1YxNUZZR0JnUllEZVJLZlR6WG4yMmVlK1AzOGhZOFRxOTlaR1NScWNsbEtxb1pTcWZUVTR5US9MZU1rUGVNTHhIUEVHRGR6RTdYWVRsOHNOSDU5Y0tlM05icmZES2lYeHlyNjNyS3hMT0hUb0FPclVxWXR1M1IvQXRPa3pvTkZvWWJGWU1IVFlTL2o4aXkzWStORW5XTE4ySFRRYURUWis5SWtDYXFkUG5ZTGI0NmxXbjZhdkhQM2pDQ1pObm9yN3UzWEh1MHRYNEZUcVNWQktVVnhjakJjRy9wK1NvblQ4K0RFa0pTY3JmMy8wNFViTVg3Q293dkVIL3VYcEhwUlNuRDE3RnBtWm1RckZFS3RTbzZTNEJGYWJGUTY3SFE2bkU5azUyUWdJMEV2T1Y0TGk0bUlRaHNEbGNoTzFXZ1VQNTRFb0NnQkFmT2lCR0FEa2h4OS9DYmwwS1hQWWdmMzdoakVNVXhjQU9uYnNqSU1IRHlJd01CQ2RPM2N0Wnc3UG1UTUxEenpRbzFJZlIzVkwyUVRkQmZQbllzSDh1WGl3WnkrOE5YMEc2dGR2Z0xkbnpzSjdxMWZDa0plSDJvbUpXTGo0WGNSSTJjeDlIbm9ZSjArZXdOQWhMNEJsVlhqczhYNm9YNzhCTElXV1VzY1pNMlljRmk5YTZIMFMxNjZOZFJzK2drYWp3WUtGaTdGeXhUSjg4ZmxuVUt2VjZIcC9Od3dhL0NJQVFCQUVMRnJvTlFPZmZicC9hVE54MCtick5vOHFrcW9lYytScnI0SVFJREV4Q1dQSFRWQjhrRmVRdWxxZGJrYmZSeDU5b2NlRFBULytadHZYbjQwYk83cFkxdDRrLzV1aXhYbFRRNGhJS0FYMVZxaFFRUlFoaWdMaGVSNHN5MUs1Y3FVaWlpdjVZV1V3NUtGR2pYQTBhTkFRWjgrZWdjUGh3Sml4NDZxVTJ2UDVaNS9pcVJ1Y1ZuUGd3SUZLUHh2dzlEUEszeEVSRVJnL1lSSUFJRHc4SEM4T0c0YlhYeDBPU29Ia09uWFE3d212YjIzK3ZEbHd1OTBZNVJOb21QclcyMmpRb0NFS0N5MTRlZGpRZjIrdHFOVnF4Zm56NTNIcDBtVS8ybDkvL1FXR1ZjRnVzOEh1azV1V2xuYjZzdlpDS2RScU5kSHBkTEJhclRMdkZwR0lJQW5ETUlSU3lpUWxKYkY3OXU1L21XWFpsMy82NmNmRysvKzNGelArTXhzQWtKNmVqbmx6WnlNb01CQ0RYeHlLNXMxYktPZTFiT203NERnTzQ4WlByRGdpZVM0TlhidDJyZkoxN3QyNzEwOVFXSWxVTnBhM2NNeE9wNTQ0L3RIeTVjczNmL2ZkZHg0SjRCUVRGZDdhVlBtVnlzWDJETU5RUVJBVS9qZVZTa1ZabG9WYXJZWktwVkxJTFdYVE5DbTVqc1QzSnBGWnhzU2daczBFSkNjbmxVdDN1dEZ5OExmL1ZYbmY5aDI3Vk50NS9DczFOcVBSaUFzWExpQXJ5NXZDNFVzRXliQXFyelBXNllUTDdZTGRiZ2ZQODRpT2lRSFBjWEM2WE1SaHQ0TmhXUkJDaUNBSWNpNmFFdVU4ZmViOE15OE0vTDhSUnFPeGJYeDhQUExLK0E3cTFLa0R1ODJHZ29KOE5HMTYyY1RhL09rbW1NMW16Smc1NjRaZHExNGY0RWV3cXh5Yld6aG1qV3JVQ0orL2MrZk9KMHBLU2o0TUN3dmJRUWpoZkFGTzB1S0lWNHNEcFZTZ29sU3JKL25qSUlvaVVhbFUxSmNWUnRiYUFJS2lvaUx3SEs4ays3cmRicmhkTHJoY1RpUWxKbFVySFZKQVFHQ1Z5cW9DQWdLcmRhRC9kY0NXa1pHQjlQUjBaR2RuSzBtQmN0S3QxV29GdzdCS0tvZkg0NEhGYklGS3BZTGI1U1k4ejROS0JlcmV0QTJHaUNKUEJFRWdBSmcyYmRwMmYyZkowbGNEQXdQN1Rwb3lGVk1uVDBTTjhIQ29WQ3dDeWl5V2pwMDZvNlM0U0VrMk5Cb05XUFBlS2lRazFNS1FRZDRvSXNPdzJQalJKOWQxdlN6THdtNjNWZnVUK0U0VHU4MWFhUWtXYzR2R3pHNnpnbFdwUUFocEV4b2Eya1lRaEw0bWsrbkR1TGk0QTRRUWpsTEtFMEprZ0JOQklJSkNoQ2dxQkptaTZNMGFrYW10UkZGVXpGTUEwT24wc0phVWVGTkNlRGtsaEx0Y3llQnl3K2x5b1pZVTlMblJrbHluM2o4V3dnY0VCQ0s1VHIxcUhldC9qU2xLS2NXWk0yZVFucDZPbkp3Y0dJMUdoV1pJcnZmTXlja0JZUmd2SzBlcHNpaWVlTms0ZUYvNklGbExZMDZrcGpVSURnNStqUkR5eXEweW55b0g4a3lZTFJiRXhNYjcwY3hYYXpma0lqSXlBb20xeTFNNlpXUm13bXkrK1dObU5PUWlJaUlDU1ltbHo0bmp1SFdwcWFrZnQyelo4Z0lBRGdBdlJWSVZINXpNSCtmTENlZERjRW5MbXFVeUpaSWNNWlZUUThMRHd4RVZGWVc0dURqVXJsMjdXa3ZxYnFYOEt6UTJ1WW9nSXlOREFUV3oyWXppNG1LZkluWUgzRzQzUkVwOXk2SUl6L1BnQlI2aVFpdEVDUVVsb0pUMGYyb0F1M0RST3lOWmxuMERRTUxOdUphZzRPQ3Iyajh4c1RieTgwMHdHbklSRkJ4eTEydHVkcHNWTnBzVkFzOVhDR29Ba0pTWUNKUHA1bzJaZkU2aUlKUUROUUJRcTlYRFdyUm8wY2R1dDYvdDNMbnp4OGVPSGZQSUFBZHZrTXEzQUYvaGhwTkJqbUVZSXZuZnFFeFI3dHRjUmdZNFg5WmV1ZWRDdzRZTnI3blc5SGFXTzE1akt5d3N4Tm16WjVVOEdWOE90Ykpra0lXRmhmQldDL0RnS3RmU0dBRGszSVdNbmhxTlpoU0FCMjdtb25TN25Xald0T2xWYTZzWE16SmhzWmdoOENKY3JydVRvMDJ2RHdERHNvaU1pRVJpWXExLzFFWXlNeThodjZBQUFpOVUyNWpwOVFGZ1Zhb0tOYldLUkJURlBTYVRhVjFjWE53K1FvaHZnSUdYTkRkQkFqUlJEaTZ3TEV0OXdJeXExZXBTSkphK1BSYmtCakp5ZDZ5a3BDUTBhTkFBTldyVThBUGJiV051R0kybDBqbGsydTZLR0c3ZGJqZnNkanRjTGhjUktZVWdFVUVxV2hxbEJLRE1rYVBIWXFPaW9rY1JRa2JmN09zeEdmTVFGeHVEdUxnNCtPWHVGby9IcytxWFgzN1oyS2RQSDRNVVlKQTFPTUVuY2lxREc1VzFOVmxUVTZ2VlZHNEJXQmJjZkUzUytQaDRKQ1ltb2tHREJ2K3FKakozckNtYWxaV0ZjK2ZPSVRNelUwbm44RzJ1SXRPNitETGRDb0pBUEI2dUl2WU5CZ0J6NGVLbC9pcVZhalNBKzI3bXRUanNOdGlzSlFDb0g5VDhBZ0RRYURTdjllclZxNFBaYkY0YkVSSHhIU0dFbGNDTjg4bC9JMTRsVHhSOUd2NVFINnA1V2xtdVcyVjFwOVVWVlBBRFd4WGt3b1VMT0gvK3ZBSnFjanBIMmVZcVplaTdDY2R4QUtoODArVXVUOHkyYmR0cWhZU0VqTW04ZVA3Vm0zMHR3Y0hCVUtsVWlJK1BRMnhzckg5RisrV3lPVVZJeS9EdzhEVWVqK2VEMzM3N2JVTzNidDJ5Q1NHTWJKcFNTbmxjWmw0V3ZWNEo2aHNwSmI1UjA3THBJVEo5dlMrMXZjZmpRZDFyWVBEd0E5dDFTbHBhbXBKNEszZU5LaXpGZE9zb0MyckVweGVCNGt1RFZEbmdkcnVmVUt2Vll3RzA4aThsdjl5T29sYXJYK3JhdGV0OStmbjVhNktpb25aTHZqZEdBalZaZTVOVFFjcHFiK1hTUXNwV0x2aDJUcE1CN3A1Nzd1eWtiNUtSa1hGSG5LaGNIaVVIQ1h6OWFXVzFOSjlPVWNSYldPenREQ1duY0ZCS3ljOC8veHlXbUpnNGptR1lDZjZsNDVjN3lQZTJiT3ZXcmVzblRacFVDTURqaytBcnlQNDN1V3BCU2dueDliMVIzd29GdWZWZlVGQlFPYitiSEZTNFU5TkJWSW1KaWJmOVNYSWNoOVRVVk1WM1ZsR0hxQXE2UXZsMlUvY0ZOY1p1dDNmUmFyWGpDU0U5L1V2RkwzZVl2RGwrL1BpVVo1NTVabTFTVXRJUkFDd0FPWHBLVUpySkY2SW9naEFpbDJRUm1mK3RySWJtVzJUdmNEaGd0VnBSVkZTRWxKUVVxTlZxdnlsNm84WGxjaUUxTlZVcGtaS3JDWHhiNGlrOUNTVENQVmxUazAxUENkZ1lTaW5qOFhpR3N5dzdFWUEvbzlVdmQ2UXdETk1qTVRHeGNVbEp5Y3FRa0pBdkFEQ1NlU29ubFpjS0xNZ1dEL1VLa2FzWGZQclk0a3JGOVNrcEtaVjJ4YnB0VGRIYk9kM0RicmVYQXJXeTFRUmxHeGJML2pUSi9KVHJQQmxSRkVsdWJtNThkSFQwQkVMSXEvNmw0WmZiMWQxaU1CaGdOSm9nQ0FKc051cy9mb2ZuK1hWSGpoeFpOM255NUZ4SmM1TXJGNVRpZXArOE4waXBJWElTcjVMekpuZW1MMXVsRUIwZGpabzFheUk1T2ZtMkFMZmc0QkN3TElQbzZPZ3JaaERjdGhxYjFXcXRGTlJraGx1NTk2SnZrRUFHTlovSUoyTzMyenRydGRxSmhKQUgvY3ZITDdjcnFCMDdkZ3dVUkttR3FHSlcyYkQ2RFJ2WDZkcnRnZmM2dEd2ekJ3QUczc2lwVElEcXBVWHkva09sdnJkZWpZMVNMME9TMUFkWDN1UWV1b0pJd1FzVUhDL0M3UkdRbUp5QW9LQmJYOWxpdDl1UW0yZEFibDRlN3J2MzNqc0gySXFMaXhWUWs0dlp6V1p6aFpwYUpaRlB4Wi9tZHJzSHFsU3F5UURxK1plUFgyNVhNUmdNb0NEWFZML0tNRXozV3JWcUo1NU1UVnZSSk9XZUhhQ1VvWUJ2M3cxQm9nc1J2YkVBQ3NrQ0JienJoQ29tcVJ4UmxjeFVVYVFRcVJSTnBTSWFObWlJNEpDUVd6cFdnWUZCQ0F3TWdzbVlCNFBCVUdHYTFHM0ZvUHZERHorZ2ZmdjJpSW1KUWRldVhURmh3Z1RzMmJOSFllaW9LQUxxVnZvUGVIMXEwc2FJb3FpYVAzLytsUFQwOUxYZmYvLzliUU5xUE05ajFLaFJpSTZPUm1ob0tJWVBINjUwZC9MTDNTc21VejZDZ3E4TE1PcUdob1V0UG5mKzR2Q0c5elFLQUtDVHVtZkpQUmRZU3NGU0tuZkxFZ2pQYy9Cd25KZXAxK1dXZWl4NHUyTlpyVllVRnhYQllqSERaRFFoSnljSEdSY3ZJdTFNR2txS2kyK0xNUXNNQ29aUjZweFdWdGdaTTJiY0ZpZTVkKzllOU96WkV5a3BLWGpnZ1FlUWxKU0VvcUlpSEQ1OFdJN3NLSUJXMXZ5VXRUUXZ0YkxBcEtTazFQcjg4OC9uZHUzYWRjeUFBUU9Za0pBUWRPblM1YmE0em9rVEoyTGJ0bTM0OU5OUDhleXp6MkxwMHFVNGRlb1VIbnZzTWYvcXZvc2xOemNYTmNJanJ2cDdwMCtsWXQ1VTdNZUhBQUFnQUVsRVFWU2MyZWpWdXc4QU1DcTF1dU96Ly9kY1NLdldiUzU4dmZVckIrQlYzU296ZnlsQWNMbVJ0MlNPMHN1YnBLa1ZGT1RqME1HREtDd3NSRVJFQklLQ2dxSFQ2ZkQxMTE5aC90eloyTFp0S3dvdGhXZ3BtWWI1K2ZsNGE5b1ViTjY4Q1QvLzlCT2FORzJLME5Bd0FNQmZmeDNIdENtVHNIWHJGaHcvOWlkYXQybDdUVjJ3TkJvTnJOWml4RmZnYTd0dFRORzFhOWVpYWRPbWVPYVpaNUNWbFFWQ0NGcTJiSW1DZ2dLY09YTUdLU2twbFNYZWxnb1NQUGpnZzYwYU5XbzBwVnUzYm4zbG0zZTdpTjF1eDZwVnE3QnAweWFGbXVqOTk5OUh6NTQ5c1dEQmdncWIzdnJsN2hDcnRRVFIxMkNHTnJ5bkVkNmUrWjlTNzZuVjZrRmR1blNKL3VYWC82M3BmbitYRTVSU1JrSTN4VFNWc1UwVUJKR1hmRzJBOTlVTGVCS3dnZUpDK2dWd0hBZVdZUkVSRVlHTWpBeFFBSUdCZ2RpNlpRdldmckFlR28wR1k4ZThpU05IRHFOMTZ6Wll2V29GdW5kL0FIMGZlUlIvL0hFRUMrYk54YXIzMW9MbmVjeWJNd3Z6Rnk1R1VsSXkxbjNnN1N2NjBzdkRyMm5jZkhzRjMzYW1hRkZSRWV4Mk8zSnljbkRod29WU1ByWEV4RVFrSmlZcUtSMTJ1eDM1K2Zta3NMQVFOcHVOdUZ3dUlnZ0NJNG9pazVTVTFQdkhIMzljc256NThyNkVFSFRwMGdWSGp4N0ZXMis5aFhidHZBMTUyN1ZyaDltelo2Tjc5KzRJQ0FoQXZYcjE4UDMzMzJQWnNtVklTRWhBYUdnb2hnMGJwaEQzVVVveGI5NDgxSzlmSHhxTkJoRVJFUmcwYUJEc2RqczhIZythTm0yS0J4KzhISlBZdEdrVHRGb3RqaDgvRGdEbzM3OC9Xclh5RmpVY08zWU1UcWV6Rk45YTU4N2VUdHNIRHg3MHIyNi9sQk96Mll5eFkwWmgwUFAvaDhHREJ1TDNROTU1a3AyZGpRSDluOENUL1I3RnFEZEdsdnJPNUluak1XVFE4MzFtLzJmRzFKU1VsQzRBZEtEVXQ1RU1LNG9pSzY4YnBZa014NkdrcEpnWURIbGVRa3FudDNGelpHUWtHalpvQ0kxV2c1S1NFdVRtNWlBekl3TzdmL2dCS1UyYUlDREFTN0phSTZ3Ry9wTG0vVjkvSFVlWEx0NTVIaG9haXJTMDAvQjRQRERrNVVHbjF5TXB5ZHVZSlR3OEhIOGRQM2JEeCsyV2EyeHlvS0JkdTNiNDl0dHZNWGZ1WE1URnhTRWtKQVI2dlI0eTE3dWMwbUUybXdrQXFGUXFRaW1WdTY0elZxdjFXWTFHTTdWdjM3NzFHelpzaUVXTEZvRmhHTFJ2M3g2UFBQSUlwa3lab2h4ei92ejUyTEZqQnpwMTZvUlhYbmtGL2ZyMXcrT1BQNDdUcDAvajFLbFQ2TmF0R3g1NjZDRTg4Y1FUV0xWcUZSWXVYSWpObXplamNlUEdPSDc4T0FZT0hJam16WnRqekpneCtQREREOUd1WFR0ODhza242TjY5TzBhT0hJbVpNMmVpUllzV0NyQVZGaFlDQUhKeWNoUnc5SG02SWlJaUF0bloyZjVWN0pkeThzWG5tOUdzV1RNTUd2d2kwdFBUc1hyVkNyUnQxeDRKQ1FuNDc1YXRPSGZ1TE9iT0xrMDFQMi9CSW1sdEZiVVovdExROEE4LyttVEY0RUhQZnlzcE1rU3lUamtLQ040SE9CR2xmRjRRUXFoS3BTSnV0OXVyeEFHZ29DQ0VnZHZsZ3MxbVE3NHBId0JCWm1ZR0FnSUNjUEZpT2xZc1d3cEJGQkFzK1FtTGk0dWgxZW13WS9zMytPbW4zZEJvTkxEWmJDZ3BLWUZXcTRYSDQ4SEtGY3VRbTV1TG9xS2lHejV1dDFSajgwM3BFRVVSQXdjT1JOMjZkV0V5bVhEcTFDa2NQWG9VcWFtcEtDa3BnZHZ0UmtsSkNaSEFRSW40TUF6REJBY0h2L0xsbDE4dTBtZzA5ZVdHRnpxZERocU5Cb1FRaFZsVWxuNzkrcUZidDI1UXE5VjQ0b2tuNEhLNU1IZnVYQVFIQjZOdDI3Wm8wcVFKVWxOVEFRQkpTVWxZdjM0OSt2VHBnOFRFUkR6MjJHUG8ycldyOHZsOTk5MkhTWk1tWWZ6NDhSZ3laQWlhTkdtQ0NSTXVWMms5ODh3ekdESEMyNlBSNFhCVW1BdWsxV3FsRGxsKzhVdHBhZDJtTFg3KzZVZDg5T0ZHdUYwdUxINW5TWlcrSjRvaVpzNTRHdy8zZmJUZUF6MGVuSFlxN2R3QUFEcHAwMUJLMWFCVUJZQUZLS09rUndHRVpWWGdPQS94dUQwK3JmN3NjSHM4Y0RnY3NCUmFrSjl2UWxGUkVVNzgvUmZHanh1RDU1NS9BZDI2bGFZdW5EZG5Gakl5TG1MeE8wdWgxV3BMS1ROalJyK0p4bzFUTVBLTk42dGwzRzRac1BrbTM4b3BIUzZYQzNYcTFFR3JWcTNRdUhGalJFUkVRQkFFR0kxRzRuYTdKWFlPN3hOSHpsSGpPRzU4U2tyS2d0VFUxQ3AzcVBBdEk1TUhQQ0Vob1pSVFVnYWF2bjM3b25idDJwZzVjeWFlZSs0NXRHalJBdDk5OTUzVU9NTXIwNmRQUjBSRUJQYnMyWU9QUC81WTZYTlFWdlI2UFR3ZVQ3bjMzVzUzcGYwUi9YS1hBMXZyTmxpNWFnMXFKaVRnNDQ4MjR1MjNwbGJwZSt2WHZRK2RUb2VCejc4QUFGSEJ3Y0Z2ZmYzTjlzRUE5Qks0YVFraGFrS0lpbExLQW1COEFuQ0U0M2g0T0E5UklxWk9KemlQRitoS2lvdGhzVmpnY2J0UlhGS0N4eDkvQWdRRUpkWVNoSWFGS2Vabmg0NmRNUEtOVVZDcjFmQjRQQXB6YjBseE1VYVBHWWZlZlI2Q3krVkNtUFNkT3g3WWZNdWtzck96a1pPVGd5MWJ0dURpeFl0S25ockhjZERyOVFnSkNTR0FsLzdiRjlSV3IxNnQ1amh1T3NNd3MwVlIxSlh0T0g1RisxdFYzZ0t2ck5oM3laSWw2TkNoQXpJek05R2hRd2VzWGJzV3ZYdjNMcldQMFdoRVRrNE9LS1g0OWRkZkt6MXVRa0lDWEM1WEtkV2I0emlZeldiVXJGblR2NHI5VWs3bXpaMk53MGNPbzBlUEJ6RjV5alFjT25RUS96VFg5Ky9maDcyLy9vb3BVOS95bmRlNkprMmFUcm4zM251SE4ydldQQkJTT2dpbFZBMHBIUVFBUzBXUjhEeEhCSUVuUEZjNkhZVG5lYmpkYnNXa1ZHczBjRGdjS0NqSXg4V0w2ZGo5dy9kbzFMZ3hBS0JGaTViS2VmNTU5Q2lTa3BLaDBXZ1FHeGVIMExBd2FDVUxhdisrZldqZW9zV2Q3Mk9UQzlwOWF6K0xpb3FRbjU4UGg4T0I1T1JrMytSYkltczRjdnM3QUdUbnpwMUJQWHYybk1vd3pMaWlvaUtjT25VS1E0Y09yZkI0MTh0T3NHVEpFa3llUEJrelo4NVUzc3ZJeUNnVndYenBwWmZRb2tVTDlPdlhENk5IajBiUG5qMHJCS3FXTFZ0Q3I5ZGozNzU5ZU9TUlI2Ukp1QjhNd3lqQkRiLzR4VmNHRG53Qml4Y3Z3T2ViUDRVb2loZ3pkandZaGtGMmRqYkdqSG9ESE9kQmNYRXhCdlIvQXZmZWR4OG1UWjZLbGN1WHd1Vnk0YlVSTHl1L3MzTDFXZ1FIQjJQQm9uZEd2N05vb2FhZ0lIOWRibTZ1L0lTVm82Vzh0TllFYjJNc3dldGlrL2JoZVlGNk9LODVDZ0lFQndVakxpNGVuMjd5ZHBLLzk5NzdFQndjREo3bjhlcHJJekYvM2h4OCtkOHZvTmZyTVhIeUZFV3BtREwxTGN5YU5RT2NoME90V3JVd1lkS1VPeHZZS0tYbHlxVGs2R2R5Y2pMT256K1AxTlJVQkFRRVFCQUV1TjNlcHdRaFJDYlRJeWtwS1RWbXo1NDlOU0lpNGsyMVdvMHBVNllnSkNRRUF3WlUzTDA2S0NnSUJ3OGV4S0ZEaDY0SlBNTER3M0hnd0FIazV1WkNFQVFzWExnUXAwNmRRbE9wTDhINjlldXhaODhlL1AzMzM2aFhyeDQyYmRxRWwxNTZDZDkrK3kwQTRQUFBQMGRoWVNGR2pCaUJ3TUJBREIwNkZLKy8vanFDZzRPaDBXZ3dmUGh3REJreUJPSGg0ZjVWN0pkeVVxdDJiU3hidnFwQzdmKy9XN1pXK0ozUC8vdFZwYjkzenoyTjhNSDZqYSs1M1c3VjVrODNyWnYrMWxTenRMWjhsQUVHbElxQ0tES2x3QzBvS0FnYXJVYTJua0JBVUNNc0RFbEpTWWlJaUVCTVRDd3lNekxBc2l3YU4wNnAxQi9ZdEdrenJIMS9mYldPMjAwMVJhOVUwQjRVRklUWTJGaUlvaWlibzBRR05aWmxDYVdVWExod0llTDc3NzkvS3k0dTdzMEhIbmdBWGJwMGdWYXJ4Zjc5K3l1MTAxOTc3VFVjT0hBQWd3Y1B2cVp6M3JCaEEwcEtTbEMzYmwyMGE5Y09OcHNOa3laTndwOS8vb21zckN5TUdUTUdVNmRPUllNR0RjQXdERDc0NEFQOCtPT1AyTEJoQXdCZ3k1WXRXTC8rOGsxY3ZIZ3hIbnJvSVR6KytPUG8yN2N2N3IvL2ZpeGJ0c3kvZ3YxeVUwV3IxUTUvYnVEQWwrY3RXQlFGUUN0VkthaTl5bzVTcFVCRTBadDU0RzNBN0Ewb3VOM2VLZ1dIdytFMVN5V2ZtOGxrUW01dUxqSXlNbkQyekpsYmVuMDNqZDBqTFMwTmFXbHBTb3M4dVp1VVhDYmx5M3hiSnZtV1VFckptVE5uYXRTcFUrY3RRc2hJLzdRc0xhSW9JaVB6RWl3V0N3UkJnTXQ1ZDVabzZmUjZzQ3lMOEJvUlNFcXFYV2tRUjdZZXZHTm1CczlYMzVqcDlIcW9WQ3BFaEVjZ0thbHk3c085ZS9laWJ2MmJ6MXJyY2JzLzJMVHBrL2Zmbmo3TkFzQkZDSEZEYVJ4REJFSWdFTUlvRFdQVWFoWFVHZzNWYXFTK3BRRUJDQW9NUkxEVXppOGlJaEt4c2JHb1hiczI2dGFyajNyMXFyZWFzYkkrdkRmRkZKVjdGSlRsVTVNN1NSMC9mdHkzUW9ENDJ2M1NGbFN2WHIycEFQN1ZvR1l3R0s2NlU1RGI3Y0ZmZi8wRlZxVkNjRWlvdjYrbzNZYkNva0lVSE0xSGkrWXRvTkdvS3dTMVAvNDRDb1psRVJSYy9XTm10OXRndGxpUVg1Q1AxcTJ1ekVDZmMvUHpHVi9xMXEyN2VISElpMnMvM0xoQldZZGUwOVJiWWdXSWdpaFNVRzh4UEJVRWtRaThRSlZ1OHo0a2xVNkhBM2E3RFZackNZb0tpMkF1S0NpVmNYQWpwZVlWZnJmYWdTMHJLNnRVajRLeTNka2REZ2RxMTY2dGFHb2VqNmRVN2VmcTFhdlZ3NFlObThvd3pKdndTem5KTStTQlZhbjhuZUFsa1prZmpJWmM1T2JsSXFrQ2h1aUxHWmxnV1BhbWpabnZPV1ZtWGtMaUZmcUwxa3hJdUJYRE5uenF0T2w4UmtiRzJsLzMvRktaaGl0Y0JqdVJVaW9TU3N2M1VlQWxabDZQaDRQTDQ4MkJJNFFnL2laSC9hc1YySXhHbzlJaXIyempsUW82U1pHS3VOUWtVQnZuWDdJVmk3bkFqS0NRVVA5QWxKR2c0QkFVRkpnckJEYUx4WUxnV3pCbVFjRWhLREFYWEJIWWJwa1pyOU85OXY0SDZ6ME42aVd2bDdWYU9hQkF2ZEVGS3BiS015RVVJQVFnY2xkNkVFTEFlTWtzd1RBc1dKYUZpbFZCNVRWZkVSVVZkZWNEbTl5aFhXNlJsNStmWHltZGQxbWZtbS95TGNNd1UvM0x0REkvRVNBSXdsMXZmbGFtSlJVWFdTcjg3RmFOV1dCZ0VJb0xMZGYwM1pMaVltUmN2QUM3M1hiRjMwOUtyb3VRMEdzRGJiMWVQenJ0N0FYWFBRM3FicEx3VEpscVBtTW5YbTdmeDFHTzh4QUorRUFZQXNJd0VyQXhZRmtHS3BYQzFndU5Sb1BRME5BN0Y5aWNUbWNwVUN2THAxWUpTYVRjZklWSXZRbGVZUmhtMnBVWDl0VlRLZDl1VWxXcTQ0cUVFTURwOUhPNVZUb1BLK0c1dTVYQmxXdTlYeGZUejhQaHNGOXhIN3ZkaG95TEY5Q3N4YjNYQWI2Qm8wK2VPdU5vMHJqaFZoOVFvMlUwT0JFQUZVV1I4RHhQblU0SFlWbVdNb1NBRUFZTVF5Q1hObm8zRlZScU5UUnFEUm8xYm54VEtNWnZPTEJSU25IbXpCbWxUWjRjL1N5cnFaV0pmc3FOSlJpSjlmWlpsbVdud1Z2NlVlbHhycEZLK2JhVHFsQWRYNnY4dVBzSGJOeXdIaWFURWZIeDhmaDQwMmM0ZCs0c2hnNFpwT3d6YWNvMFBQVFF3MzRrdkkzbG4wRE5keTVkcjFVYUdocjZ4ckcvVHRwYk5tL3l2YSsyVmdiY0FFQ2tsSHA5YXB5SGVIc3JYQVkyaG1YQk1oS3d5VnFiVm9QR2pWT3F2YTNmRFFjMlgxQXIyOHpZYnJkWFNPZnQ2MWR6T3AyOVZDclZWQUJYTk1pdmgwcjVkalNiL29ucStGb2tOemNYQytiUHhjeFpjOUM2ZFJ1VWxKUUFBT3JWcTQ4ZmYvNFZBUERTME1IVmRsMGIxcS9EWTQvM0s4Vm1JcC9Yc2lYdjRNU0p2NkhSYU5EandWNFk4ZXByWUZrV2dKZVNaOFd5SlRoeDhnUzBXaTE2OXV5Rmw0ZVBVRDZ2RHZtblkzYnAxQjVxdFJxRU1FaEtTc0tRb2NQUXNXT25meXVPUmtWRVJMeTZjdVhLa3RkZmYvMUFHYzJORWtLbzlEK1JtMkR4SE9mbEltY0lKUXdCUXlRL202UzVLY0NtMWtDcjBhSmUvZnJWZWdFM05FRTNJeU1ENmVucGxlYXB5ZFJEVW9zOCtMTGZVa29acTlYYVNxUFJUQVh3ajFkOUE2aVVieitBdXdMVjhUVTlaTkpPSXpJeUVoMDdkb0pHbzFIS3dBZ2hTbWVpNm54eWZyaHhQU3dXYzduM1o3dzlEVFVURXZEMU56dngvZ2NiY09qZ0FXemZ2ZzJBTnlkdjBvUnhhTkR3SG16N1ppZFdyRmlOdmIvdXdkZGJ2NnEyODZ6cU1WZXVYb01kdTc3RGtLSERzSGpoZkd6OWFzc3RtU2VFRU54Nzc3M28yYk1uZXZUb2dmajRxM3U0QzRLQTMzN2JqOGtUeHlNN0s2dXlZOVNMaW9vYXZtREJnc2FTNVNUVGpLdVZ1bEpLNVc3MGhPZDU4SnczOWNOVEt2WERqc0tpUXZ6MDQyNnNYZk1lNXMrZmcvMzc5eUZMT203V3BVc1krZnFyZVBhWnB6Qm0xQnNvS2lwVXp1R2pEemZpdVdlZnhqTlA5OGV1blR0dWpjWm1OQm9WVURNYWpRcW95YmxxdmwzYWZUcTBLNkJtTUJocTZmWDZLUURhVnZYbS9OdWM1b0dCUWJCWnI1OVAvdmp4WTVneGZSbzhFczNNNDQ5NnpjeCtUL1RIb01GRHF2UWJodzRld01vVnkyRXc1Q0V4TVFsanhvNUhTcE1teXVkN2Y5MkREUnZXSWQ5a1FreHNMSVlQSDRGMjdUc0FBRWErL2lxeUxtVUNBRWEvK1FaVUtoWUpDYld3Y3ZVYWlLS0lybDI3NGVHK2ZhSFZhaEVkRTROV3JWc3JtZW9XaXdVMXdzUHgzTUNCMEdnMFNLaFZDeDA3ZFVaYTJ1bHFHL2VyT2FaZXIwZkhqcDJnbmpJTmIwK2ZobDY5Kzl4MFpwYms1R1N3TEl2ZHUzZERxOVdpZS9mdXlNL1BoOFIrVXdxdzVTUmwzNy9mZk9OMTFLeFpFNmRQbjRJZ0NsY0MwTmFKaVluRHhvNGR1K2lkZDk3SmtiVTJINStiSEdBUUJVRUVJYnkzN3BFd2xEQU1DRVBBc0F4eWMzTkJDTUVEUFhvQWxHTEQrbldvVjc4KzlEb2RsaTU1QjQ4OTNnODllanlJTHo3L0RPK3RYb1hKVTZiaHhJbS92WE5zNDBkd3U5MFlQbndZV3Q1N1g1VkIvSVpvYkZhclZXSHE4SzMvbER1M1h5bXRnMUpLWG56eFJUWWlJbUl5SWFSdjFZOVpja01uaTlsc3h1UkpFL0RjczA5ajN0elp0d3pjS3FNNnZocHAwYUlsdG0zZmhUZEhqVUhObWduWXRuMFh0bTNmVldWUXUzRCtQTjZhTmdValhuc2R1NzdiamFjR1BJMHhvOStBU2RJbU16TXpNSHZXVEV5Y09BVTd2LzBCanp6eUdLWk9uYXcwcFZteGNqVzJiZDhGQUZpeWJEbTJiZCtGbGF2WGVDY2N3K0M1Z2M4akxLeUcxeWwrTVIwSGZ2c05iZHQ2NjNnakl5T3hZdVZxNkhSNlpVRWVQM1lNelpvMXI3WXh2NVpqdG03VEZoNk91eVdsUTVHUmtjak56VlY4WGFJb29rYU5HcVgyT1hMa01LWk9uZ2lPNDJDeFdQRFMwQ0d3V0x3UjJYZVhMTVBrS2RPcXBCZ3dETlA3dnZ2dUd4d1RFNk9YdERhZjBpdXdBQmh2UnppUnVGd3U0bks1d0hFZVlqR2JrWmViQzVmVGhlTGlJZ1FHQnFLa3BBUXF0UnFDSUNEMTVBbGtaR1lnTGUyMGN1OGZlcmd2RHY5K0NBQncvdHhadEdqWkVscWREaUdob1dqZnZnUCtPSEw0NXBtaWxOSnlWUVcrbXBwdkJOUzNRN3R2QkhUTm1qV1RDQ0hEYnNSTi8yckxsM2p1MmFmeDdETlBZZjY4T1hDN1hGWDYzdnRyMzhNOTl6VENwNTk5Z2JIakxoTkZtb3hHN055eC9hNXlWTy9jdVIxZDcrK0dqaDA3UWF2Vm9uZWZoM0JQbzBiWXZmc0hBRUJFUkNRMmJQd1lqVk5Td0RBTUhubjBNWEFlRDdLeUxsWDVHS2tuVDZKbmoyNFk5UHh6dUtkUkkzVHBlbitGKzYxNWJ4WDBBUUY0Nk9HK04rMzZxM0pNUWdqQ2E0VERkdjNPK3FzV2pVWURRUkFRRVJHQlRwMDZRUlRGVWtTT0FOQ3FWV3VFUjBSZzVvenBHRHZtVGZSNzRrbUZhT0ZxRzZlb1ZLcm5GeTFhTkJCZUxqZGZrMVFsWVFnalVrb1lob0hINHlFMm13MHVsNHNFQmdiQzdYWkRwVkxCWU1pRDFXcEZkblkyQ2dzdHlNM05SVzVPRGlJam95QW5CUjg2ZUFCV3EzYzg2OVN0aDZOL0hGRW9rbEpUVDhKbXM5MDhZRHQ3OWl3dVhicWtwSFZVcGZkbm1Ram93QnVWcTNiaXhOL1lzdVcvV1B2QmVueTYrUXN3RElQMTY5ZFY2YnZuejUxRGg0NGR5OTM0L1B4ODdOanh6VjBGYkFhREFYRnhwVlgrMnJXVFlERGtBZkN5UEJ3OStnZUd2endVenozN05BYS9NRkRSZEtvcUtVMmFZUGRQZS9ERmwxdVJsNWVIRFJYY3A0OC8raEMvLzM0SWMrZk9yNUJEcnpxa3FzZWtsTUpTYUVIUUxYS0hKQ2NubzFHalJ2anR0OStVb0ZCWjRCMCtmQVQrUFBvSHRCcnRkVDBZOUhvOUJnNGMrS2JCWU9oWmdiL05xN2w1L1cwTUlRU0NJRUN0MWtBUUJPTHh1QkVVRkF4ZUVIRDQ5ME00ZlNvVkRNUEE0WERBWkRLaFY2L2UrT2FicnpGazhQTklUVDJKd0VCdi80VG16VnVnWjY4K0dQbjZDRXlmTmdVQitnRG9BL1EzeDhlV25aMWRMbGZOdDFUS0I5UlFVUVRVYnJkM2xwb1ozNUJaYTdOYUVSUVVqSUNBQURBTWd4ZUh2b1NMRjlPbHhacUhSUXNYSU45a1JHaFlEWXdiUHdHSmlVbjQrZWVmOE44dlBrTm1aaWJtenBrRmpVYUQ1NTU3SGwyNjNvK2xTOTdCc1QrUHdtQXdZUGpMWHI2M3RlK3Z4NGIxNi9Ebm4wZGhOQmlRMHFRSkxxWmZRR1JVTk41NWR5a29wVmk5YWlYKytPTXdPQStIOWgwNjRyWFhSNEpTaW5GalJ1SCtidDN4eUtPUDRjU0p2ekZuOW4rd2J2Mkh0MFYzYlYrSmlZbUJJUyt2MUhzNU9kbG8yZEtiaXJMdmYzdng2YVpQc0dUcGNpVFVxZ1hBR3pXc2FIR1ZCVHUzeTRYdnZ2c1dmZm84QksxT2g3aTRPUFRvOFNEMjc5OVhhcjh0WC80WFArNytBY3RXckxybWhOT3JsYXM1NXBFamg2RlJxOUdnWWNPYmZuK2tza1A4K2VlZkFBQ1daY3RSeTl0c05vd2ZQd1lEbngrRXMyZlNzR0QrWEV5YVBQV2Fna1ZPcHhOYnRteFJBWGpscjcvK01qUnYzdnhQeWRjbVN2NDJKV0pLS1NVTXc4TGpjVk9uMDl1VW5qQU1vcUtpRUJBUUFKMU9oNy8vK2d1aUlNSmlNVU1iRjQvblh4aU1CZzBhNG1KNk9pNWxaaXJIZlc3ZzgzaHU0UE1BZ0plR3ZZaTZkYXRlVUgvTkdsdFJVVkdGdVdxVmdCb3AwNldkeWMzTmpkZHF0Uk54QXp1MHQyN1RGalZyMXNUTHcxN0UxMXUzUUtmVG9YWHJOZ0NBT2JObm9XZlBYdmg0MDJkNC9vVkJtQzVSTEQvd1FBK3NmWDg5YXRhTXg3UzNabUR0KytzVnMyalU2TEdZTUhFS2twS1RzZmI5OWFVNHBOcTJiWWNaTTJjaE16TURIMzJ5R1pjeU0yR3hXR0EwR2hBWUdJQU5Hei9HeDVzMkkvWGtDUncvZmd5RUVFeVpOaDJmYnZvWWFXbW5NWGZPTEV4NzYrMWJCbXJTL2ZCcUg2S29hTklBOEhEZlI3QjM3eDRjUHZ3N2VKN0hMNy84ak5TVEo5Q3pWeS9GSDBrSXdMQXNpb3VMc1BuVFRkTHZsR2FLaVl1UHg2R0RCOEZ4SFBKTkpxODJyTlhpazQ4L3d1ZWZid2JIY1NncUtzUytmZjlEczJiTkxwdkNPN1pqMjlkYnNYVDV5cHZHVTFmVlk3cmRidngrNkNEbXo1dUQ0YSs4ZWtzbzNmUHo4eFdBMG1nMENBc0xLOWNRNWNLRjgramF0UnYrNzdtQm1EWjlCalFhcmVKanV3NnBXNzkrL1JkSGpSb1ZXNUcvalZMS01BekR5RlJqSG84SEhNOFJ6c1BCNDNiRFlYZmd6Smt6aUlxS2d0MWhSMUZSRVFvS0NtQTBHUERISDBld2ZOa1NQUGxVYVY1Rmp1T3c2Wk9QUVlpWHg2MWFOVFpCRUpDZW5xNEVDM3dqb0JXa2RaQXlhUjJFVXNwRVIwZFBJSVE4ZUNOdnVFcWx3b3laczNENlZDcSsvZlpiREg1aElHYk5ub3M2ZGV2aTdKazA5RnpoSmV4cjA2WXQzblc1WURJYUVSMXpiV205V3EwV09yMWVNVnNEQXZUZ09RNnhzWEdJakl6Q3hBbGp3VElzREVhdjM5SHJtNHJBNkRIajhQcXJyK0Q1RndhalNaT210d1RVeWlib0xwZy9Gd3ZtejhXRFBYdmhyZWt6VUw5K0E3dzljeGJlVzcwU2hydzgxRTVNeE1MRjd5SW14cHRmMStlaGgzSHk1QWtNSGZJQ1dGYUZ4eDd2aC9yMUc4QlNwbHhvekpoeFdMeG9JVFp1V0lmYXRXdGozWWFQb05Gb3NHRGhZcXhjc1F4ZmZQNFoxR28xdXQ3ZkRZTUd2NmpNclVVTHZXYmdzMC8zTDIwbWJ0cU0yTmk0R3o0ZVZUM215TmRlQlNGQVltSVN4bzZiY0VQejJJS0RnNnU4YjBaR0JzTEN3dENqUnc4QXdQSGp4OHYxMG1qZXZBV2FOMitockl1eDQ4YmZJUC9yem02dFc3Zk9BTERDUjJzVEFWQkNpRGRHU2tVcTE0dnlQRThad3BBU2F3bmxPUTZob1dHSWpvbUYzVzZIV3FXR1dxM0dybDA3d0RJc25ucjZhYlNYSXV1QWwrSjgrZEozMGJ4NVM4eGZzTGhDYmJPeWNic21ZUE9OZ0ZiR3FWWUcxR1FHQUxsY2FqZ2g1TlViUFVGUG56NEZuVTZIUm8xVDBLaHhDcjc5dGpFKytHQXQ1czFib0poR2lwbkVNS0M0OFZ4MGYvMTFITHQyN3NEU1pTdWcxZWt3WTNycHFqQ0h3d0cxV2cyWHkxbnRBTmFyZHgrNVEzZ3BxVisvQWY2My84cDlURHQyN0ZUcHd0VnF0WmoyMXR1bDNxdW80VzJidHUwcVpIbXRWNzgrbGk1ZldlRnZzeXlMdmZzTzNGU2dyOG94LzJtOGJzUTUyTzIyS2tVcTVhcWI2NVZQUC92aW1yNm5WcXVIYk5pd0llUEZGMS9jQmkvRnJrZ0JLcldTcC9DbWdZaWlLRktCRjhBVERvRUJBVVNyMVZHZFhnZTMyd1dudzF1Tm9GS3IwSzFiZDhUR3hxRldyZHJJeUxpSU9uWHFBZ0E2ZGVxTVRwMDZWM29lZHB1MVVqL29WWnVpZVhsNUNnV1JiMXBIQlJGUStJQ2FvcTNaN2ZZdUxNdE9ySTdKa1hYcEVoYk9ud2U3M1Z0K1lpNG9RR2hvS0xRNkhlbzNhSWdmcGFqZUgzOGNnVnFsUW5UMFAydHJvYUdoS01ndnFMQzdWRVZpTnB1aDErdWgxbWlRbjUvdnpZV1Npb2tOaGp5OHQzb2wzdjlnQXc3Ly9qdU9YRVg0dW5MSGJnRDhjblZqY3l2SHJMSmpSMGRIdzNHRld1ZUFnS3FadkZYZDczcC9LeWdvNkpWMzMzMjNoUkpNa0pyQ3lDYXBuQUlpaWdMaGVRRWN6NFBqUFBCNFpBWmVGeHdPQit3MkcwcUtTN3dNdlBsR0tibS9ha25xZHBzVjBkSFIxdzlzRG9lakZGdkhQd1FMeWlYaHBxV2xoV20xMnZFQXFxVU9xbWV2M3VqY3BTdGVIdllpbm4zbUthU2VQSUhYUjNwcDNLWk9tNDV2ZCszRTRFRURzWEg5T3N6NHo1d3FPVklUYXRWQzIzYnQ4UFNBSi9IQ3dHZGhOQnF1dUgrblRwMmgwK3Z4MUpQOU1IM2FGTlN0Vng5MnV4MDh6MlBtMjlQeDBzdXZvRmJ0MnBqNjF0dFl2SEQrZGZzOTVDZTlYOHBQK3NwS3NKaGJOR1oybXhWc0pScEdYRndjS0JXUmI4eXI4TnlTNjlUN1I5QUtDQWhFY3AwYngxajdEOGVNaTQrUEgvVENDNE5xeU9CR3k0TWJReWtsb2lnUWdlZkJjYnprYi9QQTdYTEI1WFRDN25EQWFyT2l1TGdJRnJNRkpxTVIyVm5aU2wrRnlzYlJaTWdGQ0NvdFA3d3FhdkRVMUZTa3BhVWhNek5UcVFYMU5VVjlLZ3lJckxWSnZqVkdvaUdheFRETWhCc3g2TGVLU3JtNnBUS3E0OHI5TFprd1d5eCtvc2t5WWpUa0lqSXlBb20xeTNPZlpXUm13bXkrK1dObU5PUWlJaUlDU1ZmZ1l6T1pUREFZRE9CNUhsYnI3YzlXNDNLNVZ2WHUzWHM5QUllMHVRQjRDQ0VjQUo0UUloSkNSSWxhWEtZdm9scXRsMW84SUNBQWdZR0JDQTRPUm8wYU5SQVJFWUc0dURqVXJsMGJ5Y25KNVRYRjRHQ29WU3JFeHNaV3FxMWRsWTh0S3lzTDJkblpNSmxNTUp2TkZRWUxQQjVQdWRRT09Wamdjcm1ldUZHZ2RyWE8xanRKcnZhNkVoTnJJei9mQktNaFYyRTV1ZHMxTlp2TkNvSG5Ld1ExQUVoS1RJVEpkUFBHVEQ0blVSQ3VDR3F5U1hxbEJYc2J5bXRaV1ZsbmE5V3F0VmYydHhGQ2xJQUNBSGhaUHdoa2NGT3BWTkJvTk5CcXRkRHI5UXF3aFlhR0lqdzhIRkZSVVlpTGkwT2RPblZRUzBvbnVscXBFckJaclZhbHNxQXNxUG5XZ1BxbWR2aWFvRWFqc1paYXJSNTdxNXl0ZDlLaXZOcEVWRUlJV3JWcWhZc1ptYkJZekNpeVdPQnkzWjBjYlhwOUFCaVdSV1JFSkJJVHI3d2cyclJ1amN6TVM4Z3ZLS2pXTWRQckE4Q3FWUCtvcWQzSlVyTm16Y0ZmZnZubDJhZWVlaW9ibDZPa01yQlJPWkxnSmFma0tjTXdoR1ZaeXJJc1hDNVhLU0pLR2V3Q0FnSVFISnRnME53QUFDQUFTVVJCVkJ5TXNMQ3dhMUppcXJTS1pOUFROd20zZ3NvQ1gxQ1Rxd3NJcFpTSmlJZ1lBNkRWalJ6TTZPaG9HQXpHZngyd3hjZGZmVG9ESVFSMWtwTlFKem5KYjROZXBiYWIrQzhGbTVzcGhKQ1dmZnYySFFCZ0ZRQkI2by9nalpaS3BKVHdFbE5TQ2R6QWNad0NiaXFWcWtKd0N3d01SRWhJQ0pyNGtDOVVWZjR4ZUpDVmxZV2NuQnpGbjFZWnFGM0JCTzFmSGFrZGlyUFZaSURqRG5lZU8rdzJyek1VOUlaeHNmbkZMemRUZERyZGtPenM3TTZReXEwb3BScEl5YnUrZ1FSQkVJZ0ViQXB1eUIydUhCTE5VVW1KTjBxYW41K1BuSndjaGVMb2htbHNkcnU5d253MVg4SklHZGg0bmk5bmdtWm5aOGVxMWVyUjFUV1k5OTU3TDR4R0k0d21FNndseFhja05ianNERTFJcUhtbitWYjg0cGRTRWg4ZlAyamp4bzJwUTRZTUVTUi9tK0JybHBZMVNhWHFCT3BMUkdtMzJ4V3RUUTRzaElTRUlEdzgvS3FxUEs0SWJHWHoxY3BFUG4zejFTb3lRVWxNVE13b0FQZFY1MkRHeE1SY2RTOU92L2pGTDlWaWtyWVlNR0JBL3lGRGhud0FnUGN4U1FYSkpCWGhaZDFWVEZLR1lZaEtwYUl5QzRodllLR29xS2lVcjYxUm8wWlZCN1pNbjZKVFg4blB6OGVaTTJkS01YZVU5YStWRFJ6NGNxeWxwYVgxek1yS0d1Mi8zWDd4eTEwbEwrL1pzK2RvdDI3ZERzdmdCaWxTS2hmTFMwMWc1S3A1aFZQdWN2ZXJ5NlpxV1RPMXFpMzhWSWxoUDVSN2srTUY1Ri9NQW5FYVFOeG1FRTh4Q0djREk5aEJCQmNndUFEQjQ5MUVqbEJSQUNnbDhqYjQvOXF3OWFQM2pQTGZZNy80NWU2VGhHYmkvOVZMcnZIMytZdUZQQUNCQUFKQVpiT1VnUmZOQUNxQ2lqeUY2Q1lRWEJTQ0F4Q3NJSUlPakdBQjRmSkJQTGtnN2t3UTV6bkFsb3I0NUZwUXEvNjU5MFdGd1lPc2JBc01wbUtZTFRZVUZUdGhzN25nY0xyaGRISnd1emw0UER3OEhBK09GOER6SWdTQlFoUXBSRW9KQlpqM2x3MGVDZUFCL3kzMmkxK3VUU2k5YzgrZFpabXVoL2RNZndSeUlNRWJSSkFEQ1N5VmlDbEZrVUlRS0hoZUJNY0w4SEE4UEI0ZWJqY0hwNU9EdyttR3plWkNVYkVUWm9zTkJsTXhMbVZWclZLbm5JK3R1TVNKM0x3aUZCUllVVmprZ05YcWhOM2hCVFdYbTRQYnc4UGpFY0J4QW5oZUpMeEFJUWlVaUpRU1VCREx4WGNic0N6emhuOXErc1V2VnljaUJReVdTSmdLd3lDSUxHeDNkanJpb0FVTEZoeVpPSEhpUmE5SjZnMG1lRTFTaUpJRlNrUkt3QXVFY2dKRFBEeEwzWndLVG84YU5wY2FKVTR0Q20wNkZGajFNQllGSXRzY0JFTnhDUEpLNGxBbmdVTmNlQUVxcTRvc0IydzV1WVV3NVpmQVVtaEhpZFVKbTkwTmg5TURsOHNqZ1JvUGp1UEIrMnByRktBVWhBSk1TSWorTlFBSi9tbnFGNzljSGFnZE8xY2ZZTU1RRkhKbjk4bVZwR1pDN2VUSEowNmN1Qm9BRDIrRVZINFZRUWdGdkczOENDRWdVck5sSXRFZHNTbzFWQ28xVkdvTjFCb3RORm9kdExvQWlDUVF4VFkxOG9vU2tHY093NzMxejFjSWJxVk1VV04rQ1F6R1loUlliQ2dxZHNCcWM4SGg4TURwNHVCeXk2QW15Q1lvNGIwbUtLRWlKWlNDT1BKV2RDZUV2UEp2bW5EanBtM0IvWDNmdVdHL3gvTUNSazMrQXRIMXhpRzA5cHNZUG1vVEhBNlBmMlhmNVdJb2pBVFlNTVRFeHY5cmtzNjFXdTJnUGIvdWE0N0xWT0lhU3VGREplN05uaEJGa1FpQ0FGN2dDYzk1QXdlYzUvL1pPKy93S0tvMml2OW10bVZUSUUxNkNVaEhhVkpFMEFBZlVrUkJCQ3NsSUFncUxZTFNsZDZEOU41RXBTZ0lpaUJLRVpBZWxDSUlVZ1VFRXRKN3NtVm12ajltZDVKTkl5Qk4yZk04KzBCMlpuYnUzcDE1NTIzM0hDc1dxd1dMUThaUDFUNUlKRDR1anVTVUZIUTZBK2dLY3pQZUw5ZHp1eGkyR3hFSlJNY21rNUNnR3JYVU5BdnBHZGJNdkpyRHNObnRzbUMzTzBKUUdVRUJBUkNOUnNQNzdrczBmd3diczVGTlAvek91czk2c1dsMUgzYnUrWk4rZzllNkorWVJSMVI4b2YrY1RpNUF1ZkxsTzJReGJBWlFER1NxVzRuTzFqQkpsZ1hKTG1HMzJ3V2IzWlpaRmJWbVZrVlRVbEpJVEV3a0xqYVd5SnVSZVB2NDN0cXcvWDA5VGcxQjQxSkpURW9qSmRWQ2VwcVZqQXdiRm91aldKRHByU0ZKTXJLc09Bc2NZa2JVdkRjRWdSZmRsMmplU0UyMU1HL3Bic0xHZHlDNGNTV0NHMWRpOGF6T3JGeHprSmhZTi9YUW93cEZBVW5TMzVHbmR1YjBId3dNdmZjcDdUTm5UaE0yYllyR2FlakV4bzNmRU5MbExVSzZkbklSNUltT2ptYmdCd040dTN2WGxpMWF0bXBNRmlweFJWSFVJb0tpaUE3bUh4UkhxNGNrMmJWMkR5ZkZVWWFqNVNNMU5aWGs1Q1NOVWp3eE1RbTdyTSsxMENJQ1dHMTJOUVNOVFNFaEtZM2tGQXRwYVJiU25VYk5XVEN3UzlqdGttQ1haQ1FaeDdJcHhJOC9hcTB6NkhYdlBlZ0w1T25ta3drZDloWEJiY0lJcWpHY0p4cU80ZnV0SjdUdGRadE1aUGpZalZTdFA0cmlsVC9pN1BsSUxCWWJZeVp2cG56TkVYZ1U3VU85cGhQWnNkdFZLTmRtaytnZCtpWGVKZnRUdlBKSGZEcHZlK1lQR0pQTUs1MFg0bGYyQTd4TDl1ZUZWK2R3NFZLVXRyMWoxMFhVYlRJUmdHTy8vMDE2dW8zZ1JwVzA3YzgyVkVYdkQ0WmZkTi9oanlnRUFWTFNoRHM2dG5LVnFvd2FNL2Flam0vK3ZMa3NXN3FFU3hjdmFpU3VBRmV2WG1IRCt2VXNXTFNVWmN0WGN1TEVNWTA4ZGY2OE9UUnI5ajlXZnI2S2Q5OTcvMVVQRDdPSE14ekZVU0VWQkVFSE9JMmJ5dHNtU1VpT1ZVdzJtdzJyTFl1eWZIbzZxU21wSkNhcUlXbDBWQlFKaVZLdU9UWTl3STBiQ1VUSEpCT2ZrRXBTa2xvRlRYTzBkbGlzZHF5YXB5YmhxSUk2dkRVMURQMTQ4RXU5S0tDQys3M0dnbVcvc0hWOVA1bzlWNFhOUC83T0sxMFdjbmpuVUdyWFVCYzd6NWkvazVVTHVtRXk2cWxVb1NnOSszM0JqenYvWU9HbmIxR3BRbEdXZnI2UEYxNmR3L0c5STZsV1JlWHJPbkQ0SXVYS0JuQjB6d2lPbnJoS2ozNmZVOGpIVE0rdWpRa2Q5alVXcTQzd240Y0MwRy93VjRTODl4bjdmMUlabWpxMnEwTjhnbHJldWg2UmdOR29KOEEvODhsc01PZ0k4UGZpMm8wRTl4M3VSZzdFeHNZeWNjSTRZcUtqRUVTUjk5N3JRNE9uRzNMdDJqVUdodmJIWnJQaTYrdkhpcFZmWktZN2huekVqUnZYQVZWMHlkUExpelZyMXdFcXJmK2NXVE5JVEVyRTM4K2Z3VU9IYVZvV0FPdSsvb29ORzlacit3UDBmS2NYUnFPUnNHbFRYTWIyKzRrVFBGVzNMcDZlbnRqdGR2eDgvVGh4L0RqMTZ0WG54SW5qZlBDQlN1amo2K3RicjBTSjRpMHVYYnEwR2JBNVhsb2hRVkVVMlJHU09sWWtTT2gwZHV4Mkd6YWJIcXZOMGFpYm5rNmFTUTFKRXhJU2lJbU53V1RJdmFkTm41NXUxWHJXRXBPeVZFRTFvK2JJcXpseWE0NFExT210Q1NmMmZWeElweE43UFN3WHdsc2Q2OUhzT1pXQThzVldOV2plcENvTGwvL0NvcG1xOW1XYkZrL3lXbnVWYUNRdVBwWFBWaDlnMVpJZXZOUmFWZjJlTnE0amgzNzlpeW16Zm1MbEFsVTV2VmpSUWl5YjB4V1R5VUNsQ2tYNTdmZ1Y1aXplUmMrdWpibDhOWmJTSmYwb1dkd1BUMDhqeStkMjVkcU5lRzA4YjNTb3AvMC9MZDJLaDRjK2x5U3JIb3ZWN3I2TDNjaUJyOWF1cGthTkdvUjBlNXRMbHk0eGY5NGNHanpka0ZLbFN2SDErZzJjUDMrT2llUEh1Und6YWNvMEFCSVRFK2o5VGc4K0dQZ2hvTXIyVFJ3L2x2RVRKMU84ZUhGKytuRXJDK2JQWS9TWXpPTnIxcXFWZzNrNEw0SGx4TVJFUER3OGlJNk9adEtFY1VpeWhJOGpUNWlZbUlqSnc0UHZOMzNIamgzYjhQVDBmTFZIejNmMkxGdTZ4T28wYkk1VkNaSWozNmJJaWlJSWFraXEyQ1c3WUxQckZMMHpKRFdvSVdsNmVqcXBxU2xxU0JvZmowRXZrcDR1WXphN2psRzhFYW1Hb1BHSm1UMXJHZW1aQlFPYnpkbXpsdFZiQTluaHJWV3RYTHduVU8xaHVSRHExSFNsb2FsZXBUaW56dHpRL3E3NGVPWkM4ek5uSTVCbGhZYjF5cnNjMC9qcEN2eHhKbE5YczI3dElFd21nL1ozL2FmSzhlZTVTR1JaWnNpQWxuei80KzhFUGo2UU5xL040YnNmVGxDOVN1N01yR1lQQTFhcmxPTjlpOFdPbDZmUmZSZTdrUVAxNmpkZzU0N3RyUHhzQlphTURNS216eWpRY2JJc00yYjBLTnE4MkpiNjlkVmc2cSsvTG5IdDJ0OE1IenFZN2lGZFdMMzZTNkp1dXVvTFZLcFVtVmM2ZEN6dytFNmYvb09SSTRieVR1OTNhZHJVdFNkLzBvUnhYTDc4RjJIVFoySXltYXAwNjk3amVWd0tDWTRLcVpvU0UxQzlObVJaUXJKTFNIYTdReXRCclpKYUxSWXlMQm1rcDZWcmhZVEV4RVJ1UkNibTlOalVuclVVa2h6ZVdyclRXN000UWxCbno1b2tDNUpkOWRhY3piaG53c2Y0NlhSaXo0ZnBRcEN6YVZ0bVdPem9kSm5GMzZ3R0pMdVZ6L29aV1lWK2pkbmNYYjFlUks4WEVVV1J0aS9VNVBxWktYeS85WGQrM1BrSHc4ZCt5L3hsdXptOFl4aWUyWXhWcVJKK1pHVFlTRWhNdzdld3A1YS9pNDFMcFdSeFgvZGQ3RVpPdzFhdlBuUG5MU1Q4U0RpZnIxeUIwV2hrekxnSnR6eHUyZExGZUhoNDBMbEwxeXk1WWh2RmloVnpDVnYvQ1FvWExreEdSZ1poMDJkU3FGQWhUcHc0VG1GZlgyM2JNNDBhMDZKbEs4MWJMRjY4K0t1OWVyMjdjL0hpaGRZczRhaWRMTHh0TGw2YlhSSjBkcnZpVWlXMVdFalBTQ2MxTlkzazVHVDBPb0dvYUpsaVJRdmg1V25LOU5oaVlwTkpTRXhYZTliU3JWckJ3S1pWUWVWTWIwMVd2VFZuYnUzeGNvKzlEVHorTUYwSTRVY3Z1L3g5Nk1nbGF0ZkluVTIxWXZraTZQVWlCNDljY25uL1FQaEZxbFRLekR1Y3ZlRDZWRHQrOG0rcVZWWUpJWWVNMnNENWkxRjBlZU5wVmkzcHdmNmZQdUxVNlJzY1A1bVRRNnAyamRLWXpRYjJIaml2dmJmdjBBVkVVZURwYkY2akcyNEFUSm80bnZBajRUUnYvanpEaG8vazBLR0RMZy9kM0xCdjMxNzI3TjdOOEJFZnV3Z1dWYWhRZ2FTa0pIN1pzMXZMdDMyLzZUdVhZOCtmUDhmR2pkOFVhR3hQMXFpQjFXckZaREloU1JJSEQreW5aaTFWeTdSV3JkcmFPSS8rOWh0QlFlVXdtVXpsKy9UdDE1eHNSWVRzWHB2czlOclVRa0ptbGRTbUNpOWJNakpJVDFkemJTa3BLY1RFSmhONTA5VnIwOGNucUNzTVVoM2Vtc1ZpVTlkc09VTlFtOE5iazF5OXRkLzJEUGZSNmNTM0g3cWN4SVpmZWFiKzR6emZ0Q29yVmgzZzVPbnJyRnJTSTlkOWZYdzg2TmVyR1lOR3JzZmJ5MFNsQ2tWWi91VitEb1pmWXVyV0Q3WDkvamh6ZzRYTDkvRHUyOEVjL3ZVdjVpemF4ZEk1WFJ4R0w1SStINjVoWHRpYkJQaDdzV0xWQWJ5OVRacGhYUHZORWVJVDBuaXZSekJlWGlaNmRHbE0zOEZyOGZIeHdHalEwenYwUzdwM2VnWi9QeS8zWGV4R0RuVHUzSld3c0Ntc1hiMEtXWllaT09nalJGRjBLUjRrSmlieVdzZFhxUFBVVXd3ZE5vSzVzMmVTa1pGQm4vY3lVOTl6NXkvQ3g4ZUhTVk9tTWZQVDZTeGF1QUJQVDA4R1poTlNQbmIwS0JzMnJLZDkrdzYzSEZ2WnNrRzBiOStCZDN2MVJFSGgyV2VEcVZldlBnRHY5K25INUVrVFdQZjFWNWpOWm9ZTUd3NkFuNzkvaC9hdmROaStjY00zTnNEcU1HNTJWR1VybFcxWGJkcDE1TnBVcnkxcmxkUml0V3E5YlRvUjRoTWtvcUtUS1Y3VVY0dVNoRm1UWCtWR1JEeFJNY25FeDZlU21Ld3VlazlOczJwTHFUSXNrbUMxU3RqdGlpREppcWdvaU5ibytmMTBPakhzWWJvSW5tNCttU2VxbHVEQ1g5RWNPbktKR3RWTE1YMThSNTU5Um0ycHFOdGtJaSszcWNuSWo5cG94MWl0ZGthTy80NHZ2anBFUW1JNnRaNHN6ZmlSYmZsZnNNcjk5T0hJOVp3NUY0R2ZyeWMvLzNJV25VNWthR2dyK3J6VEJGRGJQUVlNL1lydHU4NlFuSkpCblpwbG1EYTJBNDJlVm1YUU9uWmR4T1dyc2Z5NmU3Z2puMllqZE5qWHJQbm1DS0lnMExGZEhXWlBlUU1QRDRQN0xuNkVzZWQ0NWYrazZscHVpSStQbjFqamlhcmZBeWxBS3BBbUNJSUZWZDNLN2xDMWtuVTZuV0l3R2pFWlRZcUhod2tQc3hsUHN5ZGUzbDc0K0JUQ3Q3QXZvZ2dOYTBtVUQzcU1hbFZLVUQ1SXBUVVN4bzk4eVhVWmxjTjdTMDJ6a3A1aEpTUERKbGlzRWphYklraVNMTWd5WXVmWDYray9XOURqTVBEa3cyYllXald2enVpaEx6MnlONGlpZ0NDNHYvdkRNbWNGL2V4SHliQXBpdkpIbzRZTjN2Lzc3NnNwRHVPV0pnaENPbUJCbGV5VFJGR1VSVkZVREFhRG9oSlBlaWdlSGg2WVBjMTRlbnJoN2UxTjRVS0ZFUVNGZWsvS2xDbmxUNlVLeGFqNVJHazhQQXpvVXh5NXRZd01HMVpMMXRVRldSYTVaK3RiV3pxblc1ZUh6YWhsaCtEYisxLzNnMGVlbTBiUklyZS9yRVpTOUZ5T3FreDhraDVKRnNsSWZ6UlZxanpNWm5TaWduOGhPMEZGemlJS2ViZlF5QXBjaWFsTWJJSUpTZGJkc3psVHh5UVRXTmhDMmNmTzN0TElYYjkyN1ZINHFhb3ZXTGo0MlJmYnROcnB5TFhaRkVXeGdXQVhCTFdRSU11eUFDZzJteTNUSU9KWTZTU3JLeFU4VENhMXVUbEZJakVwazlvb3FFd2crdFEwaTRPNUkxdHVUWktSSkZtUUpNV3h5a0I5b1NEcTlib3VELzFUSVdIUkkzRXpwOXY5K1AxQ0tmUUdEM3dLdTNWRlUxTlRpRTlPSWlhaEtqVWZ2NHBKbjVpclVmdjEzQlBvOU9iN01tZXBxU25FSmljUkZmOEU5U3FkeXRlNGxTejFhQkRqRkM5Um9nM3dpOE93V1FHOUlLREgwZGVHcW13bHFNdlFCUVVFUVJRRVJSVFZiZ1JScDhOaXRTS2drSm9ta1p5Y1FYeENHakV4eVpRcTRZZVlubTVUdlRXclN5TXVkcnVFSk1scUpkUkJucVNBa0haemJtdWc4Y000V1lkMkRIM2t3dERJdUNMb0RSNy9LVmFJZndJdkwyK0tGaXVCVHU5QlJGenVpbCtYbzZ1aDA1dnYyNXhsanNuTWxaakt1QUdpS0RiY3MvZEFMVEpKS0EyS291aFFLNlNxTlZNVUZFVldLNlN5TTRyTXVwWlVsU1JJVDdlUmtwcEJZbElhc2ZHcFJFWWxJYVpyUEd0cXo1ck5MbUdYSEViTkdZSm1NbmdJUm9QdVRmZlA4dkFnTnRIMG4yU0YrS2Z3OWlsRVRLSXAxMjF4aWZvSE1tZmVQb1dJU1RDNWZ4d0hTcGN1bmIzMXc4bjhvWE95Zmpob2paQWx0ZjNEN2xna2I3ZlpzRHBhUU5JenJLU21XVWxPeVNBaElZMlkyR1QwRmtzbWVhVFdzNmJtMWdTMWIwMXhXRTZFaENzem54UUU0ZFhiQ2drZjRXVDJ2WjRmU2RZaHlUcTNwNWFIbDVRWUg0c3NneWk2enZlRG1qTjFUSEYzOUpzbkpTWnkrYStMcE9ham9ldmw1VTFRdWNjcFZMandYUm52dlQ2bndXQm91L2FyOVYrOThYckhDMlJTaCtzRlFiQTd3bEZabGV4VEJFbVNGVW1TQk1rdUtVNnZ6VzZ6QVFvV2kweDZ1cFhVVkF1SnllbkV4YVdpVjNOcldaZE55UTV2VFZhTEJnbzQrZGE4dkV5dkYyVEEvekdLNDN2N0ZQY0VuVTZpaUc5Q3ZsVEh1VUVuU285c29hQWdTRTlQZHpGcW9CcVVCemxuNmVscGQvUWcrK3ZTQmRMU1V2UGRKelUxaGN0L1hhUkdyVHAzWmF6MzQ1eTE2OVIrRHJpYUpkZG1kWGh0a3FLb3VUWkZrUlZWeFVweXBUYXkyeEZRc0ZnbE1pdzIxV3RMemlBK01RMTlGdjBDTmE5bXp5d2F5QTVYRUFWaDgxZDlQRVJSZUwwZ1J1MC9SbkY4ejVHYW1rSkVnbCsrVk1kM2l1M2JmbUxGOG1WRVJkMmtSSWtTZlA3bEdzNmZQMGVQN2lIYVBrT0hqK1NGRjlxNGY0aUhHTGN5TUZtdnBYL1RPVDA5dmRxMGU3bjkrdSsrM1dqSnpMVmhFd1JFVUJ5NU5rRlFGQmxKa2hWSmxnUzd1a2dldTkyR0FGaXRNaGtXRytucFZsSlNNMGhLU2tlZm5VRFNuaVczbG5YNVZQT20xVjRGU3Q5cW9Ga3BqdDBvZUlqaTVlWE56VWlabS9GK0ZQT1B2eXVmZStQR0RhWk1uc2lZY1JPb1Y2OCtTVWxKQUZTb1VKSHRPM2NEOEU2UGJ2ZnNleTFmdHBSMkw3Y25JQ0FneDdobXpaak95Wk8vWXpRYWFmNThTOTU3djQvR0tuSHQyalhtekpyQnlWTW5NWmxNdEdqUmtsNjkzOHZCT25FM2NhdHpQdGU0SVFhREFVRVFDUW9Lb251UG5qUnExTmg5OGY1emxCcjU4YWdHMzMyN2NSZmFFaXRGRDBLbVBvSktJYTVremJXcGkrUWxRTUZxazdGWTdHUlliS1NscTdrMjBSbUNTcEtjMmVJaFo3WjQ0R3p4ME9rS3RPVC92MHB4ZkYvQzBueW9qdThFWi84OFEyQmdJSTBhTmNab05CSVlHT2dJeHdSTUpoTW1rOGxsTGVIZHhtY3JsaEVYRjV2ai9kR2pSbEt5VkNrMmZyZVp4VXVXYytqZ0FUWnQrbGIxK0dXWm9ZTS9wRkxsS256NzNXYm16Sm5QbnQyNzJMamhtM3Myem9LZWMrNzhoWHkvWlN2ZGUvUWtiT3BrTm55ei9vRmNKNElnVUtkT0hWcTBhRUh6NXMwcFVlTDJuQWhKa3RpL2Z4L0RobnpFdGIvL3ZpOHBnYkZqUnZIV0c2L1J2VnNYenB3K3JXMzcrK3BWeG84YjA0d3MxVkVjNjBlZERMdVNKQW1TSkFtS0lndVNhdHdFcDdDeUpLa1JwOVZxZC9IYU5NUG0wdDRoT1NtLzFSYVArS3N6bmhBRVd0N3FDL3dUaW1NM1ZNOHRMNnJqMjhIeDQ4ZDR1VzBicGsyZFRHUmtKQyszYmNQTGJkdXc4ck1WQmY2TVF3Y1AwUG10TjJqZUxKZ2UzVVA0NDlRcGwrMTdkdThpcEdzblhtajFQTjI3ZGVIUXdRUGF0bjU5MytmbHRtcG8rOEdBL3J6Y3RnMTkzMzlYTXlMQndVM3BHdElOazhsRWthSkZxVnV2SHVmT25nVWdMaTRPUDM5L09uWHVqTkZvcEZUcDBqUnEvQ3gvL25ubW5zMzc3WnpUYkRiVHFGRmpoZzBmeVpMRkMxMFlaZThYeXBVcmgwNm5ZOXUyYmV6ZHU1ZWFOV3RpTUJoeU5kaTUvWDlBLzc3OHNtYzNaODZjUnBLbDJ6cDM0OGFOMGV2MWVUNGdjdnQ3M2RkZjRlbnB5ZXExWHpONDhGREdqeHVENHJqSVo4Nll6c3Z0WDJtMlp1MjYwbVRUSHdWMGdpQUlvaWc2MTQ0aWF6VUFTWHM1cWRXc0Zqc1pHVGJTMHF5SXpvS0JYU3NZT0xVTXRLS0I0TzNsMGI1Z1Q1STdwemgyUTBWS3F2Q1BjMnkxYXRYbTIwMWJHQkE2a0pJbFMvSHRwaTE4dTJrTElkMjZGK2o0aXhjdThQSEk0YnpYcHk5YnRtN2oxZGRlWitBSC9UWHVyaXRYTGpOKzNCaUdEQm5PNWg5KzRxV1gyakZpeEREUzB0U2svSnk1OC9sMjB4WUFac3lhemJlYnRqQjMva0lBUkZHa1UrY3UrUHFxbnVsZmYxM2l3UDc5Tkdqd05BQ0JnWUhNbVRzZkR3K3pkbk1jUDNhTUdqVnEzck01djVOejFxdmZBS3ZOcGhuays0bkF3RUJ1M0xqaGNDWlVpaTAvUDFkUC84aVJjRVlNRzRMTlppTXVMbzUzZW5RbkxrNFZHLzUweGl5R0RSOTVSdzVJUUVCQW5sNytod05ET1g3c3FHYk1Gc3lmNTdpZXptdS9iOVZxMVRFYWpWeTdwbnFLNTgrZm8wR0RwNmxWdTFhRFhMdzJFUkFWQlVFUUJMWHRROGxhUkhDMGdOaXplbTEyMGpPc2lIWkoxc1JabkdHb3JHU3llS0FvZ2lnS0wvK1RIMkxRd0ZCZTY5aWVrQzV2MGJYem0yelovTDJXMTNpdDR5dTBiL2NpM1VQdTdXS0c3aUZkdUhqeDluUUZ0djMwSTY5MWZJVVhXcmRnOXF5OENmNTI3TmpPNkU5Ry9tZU02K2JObXdodTBwUkdqUnBqTXBsbzFmb0ZxbFN0eWphSGtFZEFRQ0RMVjN4T3RlclZFVVdSbDlxMncyYTE4dmZmVnd0OGpqOU9uYUpGODZhRWRPbEVsYXBWZVM2NFNhNzdMVnd3RDdPbkp5KzB1WDg2UVFVNXB5QUkrUHY1azVKNi8wVjRqRVlqa2lRUkVCQkE0OGFOa1dVWms4bTFQNjV1M1hyNEJ3UXdadlFuREJvNGdQYXZkTURmMzE4Ny9sNmdUOS8rVEp3d25ybHpaclAxaHkxMDZhb1dxQjZ2VUlGZjl1eEJsbVV1WGJyRXpadVJwQ1NyOC9iNDR4WFlzM3NYWGw3ZXpiTVpOWDJtY2N2c2FWTmtSempxMUVlUVZNZE1WWktYc0ZodHBHZllFTE1ZTmExZ0lDdUFvMmlRR2pHM0dYZUJJZmVqSWNOWStjVnE1c3hid09jclYzRHAwaVdOM25ocTJLY1A1UTNlb21VcnZsNi9nVzdkM3VaUlFtUmtKTVdMdStadHlwUUpJakpTWlJYMjl2Ym10OTkrcFhldkhuUjY4M1c2ZGUyY2F5aVNINm8vOFFUYmR1emlxM1ViaUlpSWNGRTRjdUx6bFo5eCtQQWhKazZjbkdmNGM3ZFIwSE1xaWtKY2ZCemVEeWp0VXE1Y09hcFdyY3IrL2Z1MW9sQjJ3OXU3OTNzYy9lMVhURWJUUDNvd21NMW1PbmJzU01lT0hURVlETFJyMTQ2T0hUdnkyR09QdWV6M2VJVUs2ajN6MVJwNjlYNlhRb1hVWFB1cnI3MkJUcStqZTdjdWZQSDVaM2g3ZTJQMlZMM2pRUjhPNXVlZmQvSjI5NjVWdW9hRVZIRVlzNng1TnAyaUtDcFhtM00xZ2l3ak9VTlRXZFk2T2xTdlRjSmlzYUdYc3F3eWNEVGtPc05RQU1GazByZTltejlJNGNLK1BQRmtEUzVlT0UvNThubVRLeVltSmpCNTRnU2lvcUt3MjIxMDZ0eFZZK004YytZME0yZE1KejB0alNKRml6RjAyQWd0TWI1NzE4K3NYdjBsbG93TXFqL3hKQjhNL0ZETFArejZlU2RqUjM5TWVub0dmZnYxMTd5RWI5YXZVNVBYaWtMVFp2K2pXL2NldC93ZVI0NkU4K24wYVlpQ1NNbFNKZkUwZTJyYjhodEQ4MmJCOUIvd0FVdVhMRUpSNFBzdFd4ODZ3MWEwYUZFaUl5SmMzcnQrL1JxMWE2dTlTbnQvMmNPcUw3OWd4c3pabENxdEZzcWZhOXd3MTVzcnU3R3paR1N3ZGVzUHRHNzlBaVlQRDRvWEwwN3o1cyt6Yjk5ZWwvM1dyL3VhN2R0K1l0YWNlWGV0NGZSV3VKMXpIamtTanRGZ29GTGwrNzlFeW1xMVlyZmJPWHBVRGZ0ME9oMFdpOFUxcFpHU3drY2ZEYVJ6bHhET25mMlRLWk1uTW5UWWlEc3FGcVducDdOK3ZWb29hZGV1SFQvODhBTlpGNmRualhCMjcvcVo4Uk1tTVQxc0doTW1UYVpTcGNxWXpXYUdEaHNCUUZKU0VtKzgxb0VTSlVvQ1VLcDBhVDZkTWN0eDMreHErUG5LbFg5a05XeUNJRGpDVVVYSUducXJLVE1KUlJHUUpBVzdYZlhhYkRZN0ZvdGREVVZWYjAwV0hFVURUYWhGVVJSUkVJUzdHZ05FUjBWeDZ1VHZWS2xTTmQvOXpwMDd4LythUDgreUZTdVpNM2NCczJiT3dPcFlHemJxNHhHRWhnN2s4eS9YOE13empWaXlhSUdXcjFtL2ZoMXo1c3huNVJlckFmaGh5MmJ0TTMxOGZGajV4V3BHanhuSC9QbHpBWlZZYi9QbVRTeGN0SlFseXo3anQ5OStZOWZQTy9NZG04VmlZY0s0TVl3YVBaWXZWNitsVE9teTJyWmJqY0Z1dHhNVkZjVzZiNzVsL1RjYkg1anhjblp2QXlpeWpOMXUxNHhRbXhkZllzK2VYWVNISDhadXQvUHp6enY1NDlSSldyUlU2MGV4c2JFSUFvZzZIWW1KQ2F4ZTlhWGpjMXlySHNWTGxPRFF3WVBZYkRhaW8xUkpRcVBKeEJlZnIyVHQydFhZYkRZU0V1TFp1L2NYYXRTb2tSa0tmNytKYnpkdVlPYnN1VnI0ZE0vRDd3S2UwMkt4Y1BqUVFTWlBta0R2ZDkvSHkrditFNFJHUjBkckJzcG9OT0xyNjB0Q2dxdksyY1dMRndnT2JzcGJuVG96OHBQUkdJMG1MY2QycjNEeTVFaytuVEdMNTRLYk1PTGpUL2p0MXlNdTI1T1NrcGcyZFRJdnZ0UTJSemo4OTk5WFdiWjBjYk1zSWFoV1JIQjRiS0lnQ0M3THJGUWFOZGxSSTNETnRlblZTcWlzZVd1eXltRXBBRUo2NUx6V1FNbTc4YVduaDAzRjdHSEdhRExTcDI5L1NwY3BrKy8rTld2V1l2bXlKV3piOWlNNm5SNkxKWVBrNUdRUzR1UHg5dmFoYXJYcUFMelV0aDFObXpVRDRQRGhRMXo3K3lydjluNUhlN0o1ZS90azVoMGM3SjVWcTFYVEV1SGg0WWQ0L3ZtV21NMnFhL3ppaXk4UkhuNllwczMrbCtmWXJsNjl3bU9QRmRHTWM1VnExZGozeTU0Q2pRR2dhMGkzZTVibktBaXlOK2hPbVR5UktaTW44bnlMbG56OHlXZ3FWcXpFcURIaldEQi9McEVSRVpRcFc1YXBZWjlxTW0ydFgyakRxVk1uNmRHOUt6cWRubll2dDZkaXhVckV4YnZlT0FNSGZrall0S21zV0w2VU1tWEtzSFQ1U294R0kxT21oakYzeml5K1dyc0dnOEZBY0pPbWhEakNmVW1TbURaVkRRUGZmTjIxdytqekwxZFRyRmp4dXo0ZkJUMW52ejd2SXdncWMreWdEd2ZmdFQ0MlJRRnZ6NEtYd2k5ZnZveXZyeS9ObXpjSDRQang0MWl0MWh6M3c2MkF1UUFBSUFCSlJFRlVUODJhS2syM1hxOW5VRGFtM0R2RmQ5OTlsM2N1UGNzNWF0V3FUYTFhdGJXL0Z5OWF3TzVkdS9oZjgrZHpGTEg2OTN1ZmxPUVVRcnEvWFdMMDJQRlBObm11MGEvWjhtdzJRYlhrem5CVVVZc0lNb0tnZW15U28xYmd6TFhwSmFmeWxIUDVsSnBiQXhDTVJsM3J1M1h4RFBwd3NFWWJYQkNzWGJNS3U4M09sS25URVFSQmF4OXdoamhPR0F3Ry9QelVKNnpOYWlPNFNWTk5iaXkveEcvV0VDbXJkeTRJZ2xhS3ppKy9rbGV6YUVIR0lHWmY1M09QMExKVmExcTJ5dmtUVnF4WWlWLzJIY3ozMkVhTkd1ZDU0NXBNSmtaK1BNcmx2WGQ2NWVTL3E5L2dhYjVldnlISCt4VXFWbVRtN0xtNWZyWk9wMlBQM2dQMzFkQVg1SnkzbXE5L0FrRUF2YzVPYW1wS2dTcVZpcUp3N05peGYzemVWV3UrdW05ejNLdjNlL1RxbmJ1bSt1dzU4N09tS3VvQng3T0ZvN3BzNGFpZ3lMSWlTWFpFUVVTU0JNZmlna3l2VFpTZFlhaWpHcXFTdVdsaGFHc2VFS0tqWS9EMjhVWVFCSTRmUDBaU1VoS0tvbEM2VEJtU2s1TTVmLzRjQUQvOXVGVVRjcTFYdno0Lzc5eko5ZXVxV096T25UczRlZkwzZk05VHQyNTl0bS9iUm5wNk9qYWJqUisyYkthK296U2RGOHFXRFNJNk9sb3J1VWZjeUpUM3U1TXgvSk1udlRsTGJzK043RWx2enh3OWdROTZ6bkliRTBBUjN3UlNrL01XemZiMExGaklXOUQ5N3VabjNjMXptanc4bW1UejFwdzliYUxqNVNEbFVBUkpraEFFdXlBN284NHNYcHRlQzBNVkJTVkxHSm9XTWJmcDNRcEQ4MEorZ2hTdnZmWTZZOGVNNG9jdFc2aGNwUW9WS2xZa01TR0J3TUJBeG93Yno2ZGgwN0JZTEFRK0ZzaVFvV3Bpc2txVnF2VHJQNENoZ3ovRVpyZFJMcWdjZzRjT3kzY01UOVd0Uzh0V3JYbTNsMW93ZVBhNUpqUnQya3hMaGk1ZHNwaVUxQlJrU1dMZjNyMTA2UnJDUzIzYk1YVDRDRVlNRzRLZnZ6OTZ2VTRySHR6SkdQN0prMTRVNVFJLzZSOGxwS1lrSTRweWpwNUFkYzZrQnpKbnFTbko2RVFwMXo3Rll2NXgzSWoxSnlwU3djdkhMOGZZeXBXdmNNdEY2WjZlWHBRclgrR3VqZmRCbkJNb3NYM0hyc3JQTjI5NmdpdzBSazZqcGhvMkJGbVdIZTRiU0xLZ2RYWTRLNlJDa1VBekZxdGRzRnBsN0pJaXlLcFlpODRXczJDU0tBb2YzTzZvSGlYdTludUJpK2YvSkxoV3dacytMMGRWSmphNWtIdHRiamJjakx4QlFLRWtnaDdMT1plWG95c1RtM1QvNXl5L01UbTl5YWo0UWtUR0IyQ1RqS1Erb3NRdDZlbnBTMXUzYnIwS1ZROGhHVlh3SmQwaCtHSVRCQ1JSRkdTRFhsQ01SaEdUVWErWVBReVl6UVk4elNhOHZFem9uV0dva29YSlExRVVVUlNGNXZjNkNlcEdUbmg3S3JmRjExVW04RHhSOGRXNUdYa0RieDgzTlhocVNqSXBLY25ZYlJtVUNUaVhleW9oOEN4UmNVL2V0emx6amtteXAxTTI4R3krSG5oUi95U0sraWM5NHFJOFNrUGdxeXpocU03QjlxRldSeEVjQytOQmxoVkZWcHQyRlVsUzFBcXBYVUtmclNrWEJZUzR5ek9xY1FkaUxiZWJCSFVqNXcyZzE5bHY2NElXUlptNmxjNXdPYm95Y1lsV0V1TGl5TWg0TkIvMVpyTW5vaWdUVU5oRzJjZk9JUXBLbnRkcHZVb251UkpUbVpnRXl6MmRNN1BaRTUwb0VlQnJvV3pnMlFML3RvOHlPYXNnQ05XM3J1OWJ2SFhIdVg5cHhrMUJoK0RJc1lFZ0tLck5rbVhVYmc1SFpkVDUwcXZVMzluV2hucDdOTG5UUVJYeFRTQWlJY0Z0Mk80QUtTbUpsUFM3ZmNvaVViQlR2c2dmbEMvaWx0KzdIY01SOU5oWmdoNTdPT1QzM0hERlU3V0NxZ0YvT3cyYkFqb2hhd0ZCemJVcGlxTk5UWEtzUm5EMHR5RTZ2RFVCYlcwb2drNFVuN3ZUQVJYemowT1JFb2k2ZVkyMEI3Q083dCtJdE5RVW9pS3VncFJJVWI5L3hzWDJhRC9wSDc0NWN4dTFPNE92cjJjdDFLS0Juc3dDZ2lyMG90R3BLWUtzSURpOE5rR1dsU3dlbTVPZXlPR3hEZXJYVENjSUJQK1RIL0twU3BlNEdlL0R6ZmdBa2hPTnBLUzZmNmk4NE8wRkJwMlZVb0Z4RlBGTmNrK0lHMjRBQnIydVljM3F4UXduL29qVVp3bEhSUVJFQlVVQVFWQVV4eElyeGJHNHdFRzdKc2t5Z3BkWko5anNpaUNwMVZBeCtmcnNwcDVtNDQvdXFYWEREVGNlSkk2ZXVOTG5xZUNKcDhoU0hSVUUwZ0dySUFnMlFVRFdhZFZSSFI0bXZlTGhZY0JzTnFLM1Mxa1d2aXVLY0RNcXNlSDk2b3gzd3cwMzNNalRhelBvS2dOL1pnMUZGUVZSRUZBN09CQ1FaUVc3QklKTlJoRHNhc2dvZ09EaDRTSGE3WFpCVVJSUlVSU2QzVzdmSkFqQzgrNXBkY01OTng0azdIYjdib1BCTURHTHg1WWlDRUlxWUJFRXdTb0lnaVFJZ3F6WDZ4V2owYWc0Nk80VnM5bU02RndYcVNpSzhPcXJyK29FUVdqb25sSTMzSERqUVVPdjE5Y3RXN1pzMXNLQlZrQndPR0t1VkVaWlhvTFJhQlFsU1JJVlJkRWxKaVkyOVBiMjN1V2VVamZjdVA5UUZJWEl5RWh1M294Q2tpUlNVcElmK1RrNWRlcFU3NzU5KzU1MWVteU9WN29nQ0ZiQTd2VGFkRHFkb3Rmck1SZ01pc2xrUXArVnljTER3Nk91Ky9KeXc0MEhZOVNPSFR1R2dxQ3RobkRyOFlLdi8yUGxnUXRrYWZ0d2tFOXFqVFNDSUNBSUFxS29RNi9YbzljYk1oZVdBb0pPcDN2cTMvamxRME5EYWRXcVZZSDJUVWxKUVJBRWR1L2VmY2ZucTFXckZwTW5UNzdUdkFHaG9hRVVLVktFd29VTDA3dDNiMDBFeFkxSEY1R1JrU2dJRkMxV3d0M2NuZ1UrUGo2VnM0V2hvcE40TXF2dFVobUpaTFdmVFpIVkhKdHpuYWdnQ0hYY1UzbHZNV3pZTURadDJzUzZkZXZZdEdrVE8zZnVwRisvZnU2SmVjUVJGUlh0MXVQTkJRYUQ0UWx5NXRpeUdUVUZsVzVOUVZGa0ZGbldkdUQ4K2ZORmdFcnVxYngzU0UxTlpkNjhlWVNGaFJFY0hFeHdjRENMRnk5bTVjcVZ4TVRFdUNmb0VZWWtTWGZrcVowNS9RY0RRL3ZmOC9HZE9YT2FzR2xUMk81UUtuTmk0OFp2Q09ueUZpRmRPN2tJOGtSSFJ6UHdnd0dFZE8xRTN6N3ZjZlhxRlczYmlSUEg2ZmwyTjdxRmRHYjBKeVB6MVdZVkJLSEN5STlIZWVkajNBQUVIQXNObk0yNnpxcW9VS0pFaVNmL0t4ZkpkOTk5Ui8zNjlUR2J6WGg1ZWRHOGVYUE9uWE5sZXZqbGwxK29WcTBhSGg0ZU5HdldqTC8rK2t2Ykpzc3lZOGVPcFhUcDBuaDdlOU9vVVNQMjc5K2Y2N21pbzZONTVaVlg4UFB6dzl2Ym14ZGVlSUVMRnk1bzJ3TURBL253UTVWTjk5aXhZNlNucHhNY25MbXc0OWxubndYZzRNR0Q3cnY3RVVaeThwMnRPcWxjcFNxanhveTlwMk9iUDI4dXk1WXU0ZExGaXk1RzZPclZLMnhZdjU0Rmk1YXliUGxLVHB3NHhwRWo0WTVqNXRDczJmOVkrZmtxdW5WL215bVRKbXFwbUVrVHhqSHlrMUY4dHZKTFNwVXVvMmxtNUlWbm53c3U0VEJrTG9TVGpyQlVXNEdnS2xpcFhwdm0waGtNaHYrRVlmdjk5OTk1NVpWWDZOeTVNMmZPbkdISGpoM2N2SGxUTXk1T3pKbzFpMG1USm5IOCtIRzh2YjFwMXF5WnByd3pjZUpFbGl4WndwSWxTemg1OGlRZE9uU2dlZlBtbk0xRkhEYzBOQlNMeFVKNGVEakhqaDFEbG1WQ1FqTDFCQVlOR3FSeDAxKy9maDJqMFVoQVFFQldWNXVBZ0FDdVhidm12cnZkeUlIWTJGZ0dEUXdscE10YmRBdnB6T0ZENmdQUXFjbmJvWDFiUXZ1N3BqS0dEZmxJOWFLNnZFVzdsMTdnelRkZTFiWmR2SGlSMFA1OTZkNnRDNE0rR01ETm01RXV4Njc3K2l1WC9RRjZ2dE9Mc09rektQLzQ0NjczMm9rVFBGVzNMcDZlS3NtcW42OGZKNDRmMTd5eTU1NVRIK0NGQ3hmbXp6L1BZTFZhaVl5SXdNTnNKaWlvSEFEKy92NmNPSjQvelhueFlzWEtaREZxamp4YjFuQlV5UXhKMVR3YmVsQjcySFE2WGZYL3dvV2dLQXFmZnZvcC9mdXI3bmxRVUJBaElTRXNXTERBWmI5UFB2bUVkdTNhQWJCaXhRcEtsU3JGNXMyYmVlbWxsNWc4ZVRMTGx5L1hDaElEQnc1azE2NWR6Snc1TThmblhMNThtZEtsUzFPeVpFazhQVDFadm55NWk1RWFOaXlUUFRjdExRMFBENDhjWXphWlREbmswOXh3QStDcnRhdXBVYU1HSWQzZTV0S2xTOHlmTjRjR1R6ZlVOSG5QbnovSHhQSGpYSTZaTkdVYW9FcFk5bjZuaDZhL1liVmFtVGgrTE9NblRxWjQ4ZUw4OU9OV0ZzeWZ4K2d4bWNmWHJGVXJoNTVIWHNKRGlZbUplSGg0RUIwZHphUUo0NUJrQ1I5SG5qQXhNUkdUaHdmZmIvcU9IVHUyWVRRYVNVbEpJU2twQ1pQSmhOVnFaZTZjV2R5NGNTT0h3bFoyZUhsN2w4dGkxQndHVGhFZEZBT09YamFjdFFKRlVSUkI3Mnh5RXdUaFAySFlhdGFzU1VCQUFOT25UK2ZNbVRPY1BYdVdYMy85bGFKRlhZdm5qUnRuQ3BVRUJBUlF2bng1L3ZqakQ1NTg4a2xTVTFQcDFxMGJiNytkS1pSc3RWcGRqbkZpeUpBaHZQbm1td1FHQnRLMGFWTmVmUEZGdW5idG11dll6R1p6RGpVaFVDWGRIb1NNbXhzUFArclZiOENjV1RNQWdmcjFHeEEyZlVhQmpwTmxtVEdqUjlIbXhiYlVyOThBVUtVaHIxMzdtK0ZEQjZ2N0tESmUyZlFLS2xXcVRLVktCZGRLUFgzNkQ0Nk5HRXJvQjRNNCsrZWZYTXlTaHBrMFlSd0JnWUdFVFovSnF4MWVkakdJQXo4WXdJc3Z2a1NIanE4eVl0alFmTTloTUJncVpNdXQ1Y3l4b2FDQVZrRFFaMjZnNm4vaFFqaDQ4Q0RObWpXalNaTW1ORzNhbE5kZWU0M3c4SENXTGwyYTcxTklyOWRqTkJvMXJjMDFhOVpRdmJxcnJjL04yMnJidGkzWHIxL24rKysvNThjZmYyVDQ4T0hNbnorZnc0Y1BheTY2RTZWS2xTSWpJNE9FaEFSOGZYMEJzTmxzeE1iR1VySmtTZmRkN0VaT3cxYXZQblBuTFNUOFNEaWZyMXlCMFdoa3pMZ0p0enh1MmRMRmVIaDQwTGxMNWtQV1pyTlJyRmd4VnF6ODRxNk1yWERod21Sa1pCQTJmU2FGQ2hYaXhJbmpGSFpjMTRVTEYrYVpSbzAxa1hOVmh0S2JRb1VLa1pTWXlJU0pVM2o4OGNjNWUvWlA3VjdJQzRJZ1ZNNlNXOHVhWjh0ZVFGQ2NCUVFSRUtLaW9pb0Jwdi9DaGJCZ3dRTHExNi9QMXExYkdUeDRNQzFhdE9ER2pSczVKUFd5NXN1U2s1TzVlUEVpMWF0WHAzejU4cGhNSmk1Y3VFQ0ZDaFcwMTZKRmk5aXlaVXV1SHR2NTgrZnAwcVVMcTFhdFl2LysvWnc2ZFlyampseERWdFN1WFJ1ejJjemV2Wm1xNS92MjdVTVVSWjUrK21uM1hleEdEa3lhT0o3d0krRTBiLzQ4dzRhUDVOQ2hneTdTa2JsaDM3Njk3Tm05bStFalBuYVJxcXhRb1FKSlNVbjhzbWUzbG0vN2ZwT3JUdWo1OCtmWXVQR2JBbzN0eVJvMXNGcXRtRXdtSkVuaTRJSDkxS3lsYXBuV3FsVmJHK2ZSMzM0aktLZ2NScU9SWXNXTFU5alhGNVBEc2RpM2Q2OTJURDR3TFY2NlBEQVhnNmIxc0FGWlBEWkhqczNiMjd2Q2YrVkM4UGYzWitmT25adzhlWktTSlV1eWJ0MDZsaTFiaHArZm44dCs0OGVQcDNIanh2ajYraElhR2tyRmloVnAzYm8xb2lneWNPQkF4bzRkUzdGaXhXallzQ0hyMTY5bnhvd1piTisrUGNmNXpwNDlTNTgrZlpnM2J4NEJBUUdzV0xFQ2IyOXZxbFJSQlcwbVRacEU3ZHExYWRXcUZWNWVYdlRvMFlPK2Zmdmk0K09EMFdpa2QrL2VkTy9lL2I0cG5ydng3MExuemwwSkM1dkMydFdya0dXWmdZTStRaFRGZkJYZTVzNmVTVVpHQm4zZTY2Vjl6dHo1aS9EeDhXSFNsR25NL0hRNml4WXV3TlBUazRIWmhKU1BIVDNLaGczcmFkKyt3eTNIVnJac0VPM2JkK0RkWGoxUlVIajIyV0JOTy9qOVB2MllQR2tDNjc3K0NyUFp6SkJodzdYSWFQaUlqeGszYmpRMnE0M1NwVXN6ZU9qd1c1NnJRb1dLandIWGMvZllIRG9oR3Jla2dpQ0tvb2ZGWWhtZzErc24vMXQvL05EUVVQNzg4MDkrL1BGSFltTmo2ZG16Snp0MzdzUmdNUERVVTAveHhodHYwTE5uVDY1ZXZZcXZyeTgrUGo1TW5UcVZsU3RYOHZmZmY5T29VU01XTGx4SUdZYzZ2YzFtWTh5WU1YejIyV2ZFeE1SUXVYSmxQdm5rRXpwMDZPQjRHdFhpalRmZVlPalFvVVJIUnpOZ3dBQzJiOTlPY25JeWRlclVZZHEwYVRScTFBaFEyejI2ZGV0R1dGaVlsazhMRFExbHpabzFpS0pJeDQ0ZG1UMTdkcTVocmh1UER2YnMyZU5XZDhzSGNiR3hZVFZyVk4rT3VtYlUrVW9UQkNFRFZTbGVFa1ZSWFROcU1DaUNJQWhtdTkwK1V4VEZYdTdwYzhNTnQyRjdHSkdSbnI2NllvVnlYMlF6YktsWkRKdGRFRVJacHhNVnZjR2c2QjNKdWFCLzZ4ZWVOMjhlZmZ2Mi9VLzhlSkdSa1RtcXR3V0JMTXRjdm5LVnVMZzRKRWtpSS8zUlhIdnFZVGFqMCtudzl3c2dLS2dNK1JHbUtvcmltTE5ZN1BaN04yY2Vaak42dlo0QS93Q0Nnc3JlY3YvcjduN0dYQ0ZKVW5FY1RibFpYNHFpcGhIVjdnNFpXUWJKTGlFSWd1QXB5L0pSb0xKNyt2NTlzRmlzbkRoeEFwMWU3OVlWQlZKVFUwaEpUa0tTN05TcVdRdWowWkNyVWZ2MTE5OFFkYnI3b3l2cUdKTXNTOVNyVzlmdHNkMEJGRVU1WDZaVThRL0lKSjEwRWs4NnFjTHRqbkJVMGV2MWlyTzZVTlk5ZGY5T1JFUkdvTlByM2F3UURuaDVlVk8wV0FsME9qMDNJbTdrdXM5Zmw2OGc2blQzYmM2Y1l4SkZIVmV1WEhWZnRIY0FRUkJLWi9QWXN2L2ZwVmxYUEgvK2ZGSEFuYm4rbHlJMkp0Yk5DcEVMdkgwS0VSTVRtK3UydUxpNEJ6Sm4zajZGaUlsMWt4M2NhVlQveWVneDN1VFo4dUhVYlFGUTBBY0VCQlIzejltLzFUMi9jMWFJUjhGelMweUl5M1hiZzVvekx5OXZFdVBqN3VqWXBNUkVMdjkxa2RSOHRIcTl2THdKS3ZjNGhRb1hmbUR6ZmkvSFdiVkt0VUpBVEM3ZW12T093Tm42b1RlWlRFWHYvZzNucGpndUtIeDhDcUhUaVJRcFVvVGl4Vy92R1NNSWtKN3VKcW5NQytsNUVIZyt5T0xLbmY1ZWYxMjZRRnBhL2dLOXFha3BYUDdySWpWcVBUaGF4WHM1enNlS0ZDbVUzVnR6RkE4RTEzQlVVZlE2bmU2dUdqWTN4Zkh0SXpVMWhSc1JrZHlJaU9DcE9uZjNvdHkrN1NkV0xGOUdWTlJOU3BRb3dlZGZydUg4K1hQMDZKN0pRREowK0VoZWVLR04rNGQ0aUhFclk1SDFXdnF2anJOUW9VS0ZzaGd3WjNPdTRGZ01ueldTRWZTaUtENTJONzlZVm9wak53b2Vvbmg1ZVJOMU00TEl5RWlLRlN0MlZ6NzN4bzBiVEprOGtUSGpKbEN2WG4yU2tsVE9yd29WS3JKOTUyNEEzdW5SN1o1OXIrWExsdEx1NWZZdU5FM09jYzJhTVoyVEozL0hhRFRTL1BtV3ZQZCtINDFWNHRxMWE4eVpOWU9UcDA1aU1wbG8wYUlsdlhxL2w0TjE0bTdpVnVkOHJuRkREQVlEZ2lBU0ZCUkU5eDQ5YWRTb3Nmdml2WTh3bXowS3VScTFIQy9IMGtrRlVSVEZnTHQ1Y2pmRjhUOHdjTjQrM0x4NTg2NTkzdGsvenhBWUdFaWpSbzB4R28wRUJnWTZRbGdCaHdhankxckN1NDNQVml3akxpNW5Bbi8wcUpHVUxGV0tqZDl0WnZHUzVSdzZlSUJObTc0RjFKNjhvWU0vcEZMbEtuejczV2JtekpuUG50MjcyTGpobTNzMnpvS2VjKzc4aFh5L1pTdmRlL1FrYk9wa05ueXovb0ZjSjRJZ1VLZE9IVnEwYUVIejVzMHBVZUwybklpREIvWVQwclVUcjcvNkNqTStEZFBXZE5wc05zS21UU0dreTF0MEQrbkN2bjJaYTVyelk4UzlkNUZNS3B1Kys1YWhnMVhhSllQQm1OMWpFM0VVRHJKR2pGYXJGVkVRaEx1NlNOR2R6UDVubnB0ZGt2N3g1eHcvZm95WDI3WmgydFRKUkVaRzhuTGJOcnpjdGcwclAxdFI0TTg0ZFBBQW5kOTZnK2JOZ3VuUlBZUS9UcDF5MmI1bjl5NUN1bmJpaFZiUDA3MWJGdzRkUEtCdDY5ZjNmVjV1cTRhMkh3em96OHR0MjlEMy9YYzFJeEljM0pTdUlkMHdtVXdVS1ZxVXV2WHFjYzVCU2hBWEY0ZWZ2eitkT25mR2FEUlNxblJwR2pWK2xqLy9QSFBQNXYxMnptazJtMm5VcURIRGhvOWt5ZUtGK2RKYTN5dVVLMWNPblU3SHRtM2IyTHQzTHpWcjFzUmdNT1Jxc0xQL1B5TWpuYWxUSmpGeDBsUldyMTFIVEV3TTIzNzZFWUN0UDJ3aEl5T0RsVitzWnZxTVdjeWUrYW5tNWVmRmlGc1FQUEhFRTlwRE5iOHhadjA3SmlhR2QzcDA1OEtGODlydm9OZnJDK1hocVdrdldaYlI2L1dJZ04vZG5QUTdwVGgyUTBWSzhqOHZ0TlNxVlp0dk4yMWhRT2hBU3BZc3hiZWJ0dkR0cGkyRWRPdGVvT012WHJqQXh5T0g4MTZmdm16WnVvMVhYM3VkZ1IvMEo4cmhUVjY1Y3BueDQ4WXdaTWh3TnYvd0V5KzkxSTRSSTRacGFsdHo1czduMjAwcUU4cU1XYlA1ZHRNVzVzNWZDSUFvaW5UcTNBVmZYL1d5Kyt1dlN4ell2NThHRFZSMms4REFRT2JNblkrSGgxbTcwSThmTzBhTkdqWHYyWnpmeVRucjFXK0ExV2JURFBMOVJHQmdJRGR1M05BOEZGbVdjNUE4SERrU3pvaGhRN0RaYk1URnhmRk9qKzdFeGNVUkVSR0JyNjhmSlV1V1JLZlQwYXBWYXc0ZlBnU29yTGZQUHZ1YzQzY1NNQmlNbkR0M1Z0dVdHeU51QVhOamVaSlZMbHU2V0tNR1Azbnlkd2IwVjFjUitmcjY4c1dxTllSMHkrUkUxT2wwdVlXaXVJYWhxa2NyQXZjOGJodzBNSlRYT3JZbnBNdGJkTzM4SmxzMmY2L2xOVjdyK0FydDI3MUk5NUF1OTNRTTNVTzZjUEhpeGRzNlp0dFBQL0pheDFkNG9YVUxacy9LbStCdng0N3RqUDVrNUgvR3VHN2V2SW5nSmsxcDFLZ3hKcE9KVnExZm9FclZxbXh6Q0hrRUJBU3lmTVhuVkt0ZUhWRVVlYWx0TzJ4V0szLy9YZkRtMHo5T25hSkY4NmFFZE9sRWxhcFZlUzY0U2E3N0xWd3dEN09uSnkrMGVmRytmZitDbkZNUUJQejkvRWw1QU1sNm85R0lKRWtFQkFUUXVIRmpaRm5HWkhKbEhhdGJ0eDcrQVFHTUdmMEpnd1lPb1AwckhmRDM5NmRZc2VMRXhjVnk2ZElsN0hZNzRlSGhwS1NvMzhISmlIdnExRW1HRFA0UW84bElZbUtpdHMzSmlEdDN6aXlORWZlZjRzMjNPck5yMTgvTW1UMlRjV05HMDdkZmY2ZDNsaU9uS2dpQ2R6NjVOUmNqcHhjRTRiNGt4RDRhTW94NjllcVRtSmhBcjU1dlU3V2F5bjJXRjczeHc0QVdMVnZSb21VcnZ2NXFMWkdSRVkrTTF4Z1pHVW1GQ2hWZDNpdFRKa2liQTI5dmIzWnMzOGI0OFdOSVNVN0pNNnpJRDlXZmVJSnRPM1lSRVJIQkp4K1BZUG15cGZSOHg1V0g0Zk9WbjNINDhDSG16Sm1QWHErL0w5KzlvT2RVRklXNCtEaThIMURheFJtTzd0Ky9uMXE1OEprSmdrRHYzdS94eHVzZEtWT21yR2FreldZenc0YVBaUEtrOFk3ZnRTeWVack4yM1BmZmJ5STlQWjFKazZjeGUrYW5McCtaRnlOdVhtalZxaFhlM3VyOE9QT0FwMCtmNXZUcDA5byszdDdldlB2dSszd1EybzgzMytwRTVjcDVMeXNUUmRFN256QlVNMm8ybXcwOWNGODVxUXNYOXVXSkoydHc4Y0o1eXBjdm4rZCtpWWtKVEo0NGdhaW9LT3gyRzUwNmQ5WFlPTStjT2MzTUdkTkpUMHVqU05GaURCMDJRb3ZoZCsvNm1kV3J2OFNTa1VIMUo1N2tnNEVmYXZtSFhUL3ZaT3pvajBsUHo2QnZ2LzZhbC9ETituVnE4bHBSYU5yc2YzVHIzdU9XMytQSWtYQStuVDROVVJBcFdhb2tudVpNdHR6OHh0QzhXVEQ5QjN6QTBpV0xVQlQ0ZnN2V2g4NndGUzFhbE1nSVYwTisvZm8xYXRkV1cxSDIvcktIVlY5K3dZeVpzeWxWdWpTZ1ZnMXp1N215R3p0TFJnWmJ0LzVBNjlZdllQTHdvSGp4NGpSdi9yeExvaHBnL2JxdjJiN3RKMmJObVhmZkdrNXY1NXhIam9Sak5CaW9WUG4rTDdHMldxM1k3WGFPSGozcURORnlhR2FrcEtUdzBVY0Q2ZHdsaEhObi8yVEs1SWtNSFRZQ1FSQjR1dUV6UE4zd0dVZnViSzVHUzErNGNHSE1aak5qeDAxQUZFVXNGZ3VGSGZPUUZ5TnVmdmp4UnpWMzk4d3p6M0Q1OG1VdGZIWkplMXk4eU9SSkV4ZzdiZ0lybGkrbFROa2cydVR0S1h0bE0ySlpqSnFRTldSRkJEenY1NDhTSFJYRnFaTy9VNlZLL2t6azU4NmQ0My9ObjJmWmlwWE1tYnVBV1RObllMVmFzVnF0alBwNEJLR2hBL244eXpVODgwd2psaXhhb09WcjFxOWZ4NXc1ODFuNXhXb0FmdGl5V2Z0TUh4OGZWbjZ4bXRGanhqRi8vbHhBSmRiYnZIa1RDeGN0WmNteXovanR0OS9ZOWZQT2ZNZG1zVmlZTUc0TW8wYVA1Y3ZWYXlsVE9uT3A3YTNHWUxmYmlZcUtZdDAzMzdMK200MFB6SGpaN1hhTkJsMlJaZXgydTJhRTJyejRFbnYyN0NJOC9EQjJ1NTJmZjk3Skg2ZE8wcUpsUzBCVlRoSUVFSFU2RWhNVHRCeUpJcnV5RkJjdlVZSkRCdzlpczltSWpvcFN3eWlUaVM4K1g4bmF0YXV4Mld3a0pNU3pkKzh2MUtoUkl6TVUvbjRUMzI3Y3dNelpjKzhiQVdkQnoybXhXRGg4NkNDVEowMmc5N3Z2UHhDdGl1am9hSzJhYlRRYThmWDF6U0dJY3ZIaUJZS0RtL0pXcDg2TS9HUTBScU9KdURqWFZRK0hEeDFreDQ1dFdnOWpyVnExc2R2dGlLSklRa0k4Rnk5ZXBGTEZTdHEyM0JoeC95bCsrL1VJUTRlTm9FblRabnc2Y3c2bi96aVZnKzA2eTRQU25NMm9aWDJHdXBUMzlZRDVmdndZMDhPbVl2WXdZelFaNmRPM1A2VWRwSTU1b1diTldpeGZ0b1J0MjM1RXA5TmpzV1NRbkp4TVFudzgzdDQrVksybTZoRzgxTFlkVFpzMVUzK293NGU0OXZkVjN1MzlUcGFuaWs5bTNzSEI3bG0xV2pVdEVSNGVmb2pubjIrSjJlR092L2ppUzRTSEg2WnBzLy9sT2JhclY2L3cyR05GTk9OY3BWbzE5djJ5cDBCakFPZ2EwdTJ1WEJSM2l1d051bE1tVDJUSzVJazgzNklsSDM4eW1vb1ZLekZxekRnV3pKOUxaRVFFWmNxV1pXcllweFF0cXZiWHRYNmhEYWRPbmFSSDk2N29kSHJhdmR5ZWloVXJFWmR0dWREQWdSOFNObTJxK2lRdVU0YWx5MWRpTkJxWk1qV011WE5tOGRYYU5SZ01Cb0tiTk5XU3hKSWtNVzNxWlBSNlBXKyszdEUxVFB4eU5jV0szZjBWZ0FVOVo3OCs3eU1JS25Qc29BOEgzOVUrTmg4Zm53THZlL255Wlh4OWZUVlp4K1BIaitkSTVOZXNXWXVhTld0cCthcEJXWmh5NCtQajZOV3pCNlZMbDJiaXBDazhWcVNJOXJ1ZU8zZE95M2YzR3hDcWVhNTVNZUlXQkFjT0hNaHoyMnV2djZIOVB5QWdnSThHNXl2czRwRlBHT3F3Y0NLU0pLRUg3c3NkTnVqRHdScHRjRUd3ZHMwcTdEWTdVNlpPUnhBRXJYM0FhWjZkTUJnTStQbXBUMWliMVVad2s2YWEzRmgraWQrc0lWTFdWaTVCRVBKOFltVE5yK1RWTEZxUU1lVEhFM1kzMGJKVmExcTJhcDNqL1lvVksvSEx2dndGbWhzMWFwem5qV3N5bVJqNThTaVg5OTdwMVR2SGZ2VWJQTTNYNnpma2VMOUN4WXJNbkQwMzE4L1c2WFRzMlh2Z3ZocjZncHp6VnZOMU44YVFtcHBTb0ZZcDUrcWVPNFdmbnovcmNva1dzaHZBckFnTURDeXdRdGJkUkVCQWdGWmh6OFZXQ2RudGdTQ0FUcWUyZXp3NDF5RmZkenNHYng5dkJFSGcrUEZqSkNVbG9TZ0twY3VVSVRrNW1mUG5WV1gzbjM3Y1N0aTBLUURVcTErZm4zZnU1UHIxNndEczNMbURreWQvei9jOGRldldaL3UyYmFTbnAyT3oyZmhoeTJicU44aGZXS1ZzMlNDaW82TzFuRUZFbHR6Qm5ZemhuOEJzOXNTTjI1dWJCemxuZVoyN1NKRWlwT1d6cHRyVHMyQWhiMEgzdTFlNHgrTTA1dUtwQ1VvMnI4MFppdW9lMUNUa0owangybXV2TTNiTUtIN1lzb1hLVmFwUW9XSkZFaE1TQ0F3TVpNeTQ4WHdhTmcyTHhVTGdZNEVNR1RwQ0RRbXJWS1ZmL3dFTUhmd2hOcnVOY2tIbEdEeDBXTDVqZUtwdVhWcTJhczI3dmRTQ3diUFBOYUZwVXpXMDNmYlRqeXhkc3BpVTFCUmtTV0xmM3IxMDZSckNTMjNiTVhUNENFWU1HNEtmdno5NnZVNHJIdHpKR083WGsvNVJRbXBLY3A1ZXRmaUE1aXcxSlJsZEhwWFc0c1dMRXhFUlFmVE5DRHk5ZlhLTXJWejVDcmRjWU83cDZVVzU4ZzlXbCtrZWoxT1htOGVXVzk1TlVHNFZkOTBtamg0OVNwRmlibzNNTzBWVTVIWHEzTVpDK011WHJ4QWJGK2RlbTVzTk55TnZFQmdZUU5sY2NybVhyMXdoTnZiK3o5bk55QnNFQkFRUVZEYnYvSEpVVkJTUmtaSFk3WGFTazkyc09OblJwRW1UOWtBYUtvTnVFcG1pTGhZMDdRTkJ2dXZOUVc0UDRwODkwVyszWDZ0czJUSkVSMGNqbnRxUEFBQWdBRWxFUVZSeE0vS0dteHJjTVljcEtjbElkbnV1UmcwZ3FHeFpvcUx1MzV3NXh5UkxVcjVHelJtU0ZuRWs4OTNJRmRuRFRzR1pZeE1FUVYxMUlJcUNvQ2lLaExwRTRhNGdJaUtDeU1pYlBGYlV6Vjk1Kzk3YURVcVVLSDdiN0I2S292RFg1U3ZFeGNVaTJXVXlNaDVOamphejJSTlJweU13SUpDeVpVdmZjb0gvbFN0WGlZNkpRYkpMOTJ6T3pHWlBkSHI5TFQwMU53b0VXUkNFamtCcUZvOHRSUkNFVk1BaUNJSk5FQVM3S0lxS29DaUtGVERjN1hCVUVIVjRlWG5qNmZiY2JvazBoOWdIS0xjVmhycmh4aU1HbXlBSXIyY3hiTWxBc2lBSWFVQkdWc09tQis2NllhdFRwdzQzYjk3a1psUVV5VW1KYmdiZGZPRHQ0NE5CcjZkVXFaTHVFTVFOTi9LSHRhQTdPZzNiWGE4UkZ5MWE5STQwTXQxd3d3MDNDbWpZbEd6L2FoQ0JkUGQ4dWVHR0cvOENaQlRZWTd0eTVZcGJEY1FOTjl4NDZLRW9Tbm91M3BtaU9CUmRuSjFyaXFJbytySmx5NmE2cDh3Tk45eDQyQ0hMY21xVzBGTXpjTm5iUFFSQlFGUVV4VTE1NjRZYmJ2d2JQTGJzekpaS3R2OXJmK3RSZTBIY2NNT05CMy9qdXZWNDg0SGRiay9KWXNDVUxLR29ralVVbFdVWnZhSW9DZmRTcWNnTk45d29tRkZ6Ni9IbUQ0dkZrcHlieCtacXZ6SkQwYmhIYllKS2xTcEZ0V3JWY2hXajhQYjI1clBQUHJ1WFR4MUNRME1wVXFRSWhRc1hwbmZ2M3BvSWlodVBMckxxOGJxWEkrWjU3eVJsODlnVWNtbjFBTld3eFQ2S2szVG16QmttVFpwMDM4ODdiTmd3Tm0zYXhMcDE2OWkwYVJNN2QrNmtYNzkrN3F2MkVZZGJqL2ZXc0ZxdFNWazh0Vnp5YTRMS3JTaUFLRWxTektNNFNlWEtsV1BpeEltY09YUG12cDB6TlRXVmVmUG1FUllXUm5Cd01NSEJ3U3hldkppVksxY1NFeFBqdm5JZllkeXBIdStaMDM4d01MVC9mWEFFVGhNMmJRcmJIVXBsVG16YytBMGhYZDRpcEdzbmxpOWJxcjJmbjhEeWlSUEg2ZmwyTjdxRmRHYjBKeU1Mck0yYW5wNldqR3RUYnJicXFOTmZBOUZtczkxOEZDK2szcjE3VTcxNmRkNTU1NTE4R1hQWHIxL1BrMDgraWRsc3BucjE2aXhkdXRSbCs4OC8vMHlkT25Vd204M1VxMWVQc0xBd0YzSFl3TUJBUHZ4UVpkTTlkdXdZNmVucEJBY0hhOXVmZmZaWkFBNGVQT2krdXg5aDNLa2ViK1VxVlJrMVp1dzlIZHY4ZVhOWnRuUUpseTVlZERGQ1Y2OWVZY1A2OVN4WXRKUmx5MWR5NHNReGpod0pkeHlUdThDeTNXNW4wb1J4alB4a0ZKK3QvSkpTcGN0b21obTNRbEppVWw2aGFJNFZDUHFNakl5b1c2bk4vQmVoMCtsWXNtUUpEUm8wWU5HaVJiejc3cnM1OXRtN2R5K2RPblZpOXV6WnRHclZpcU5IajlLN2QyOTBPaDNkdTNmbjRzV0x0R25UaHI1OSs3Sm16UnArK2VVWCt2ZnY3eUx3TVdqUUlHclhyZzNBOWV2WE1ScU5CQVFFYU5zTkJnTUJBUUZjdTNiTmZYZTdrUU94c2JGTW5EQ09tT2dvQkZIa3ZmZjYwT0RwaGk0a3JiNitmcXhZK1VWbXVtUElSOXk0b1RJNEp5UWs0T25seFpxMTZ3QlZGV3JPckJra0ppWGk3K2ZQNEtIRE5DMExnSFZmZjhXR0RldTEvUUY2dnRNTG85R29NVlU3OGZ1SkV6eFZ0eTZlbnA3WTdYYjhmUDA0Y2Z3NDllclY1OFNKNDN6d3dTREFWV0E1NnVaTlBNeG1nb0xLQWVEdjc4L1BPM2NVYUM1dVJ0MU1Mb0JSVXdEMEVSRVJFWG5Kei8vWDhkUlRUeEVhR3NxUUlVTm8yN2F0cG4zb3hJUUpFK2pSb3dlOWU2dDgvbVhMbHVYU3BVdE1uVHFWN3QyN3MzRGhRcXBVcWNLMGFkUFVwMmZseXB3OGVaTFZxMWU3NU5TY1NFdEx3OFBESThjNFRDWlREdmswTjl3QStHcnRhbXJVcUVGSXQ3ZTVkT2tTOCtmTm9jSFREU2xWcWxTZW1yeVRwcWpYWTJKaUFyM2Y2YUhwYjFpdFZpYU9IOHY0aVpNcFhydzRQLzI0bFFYejV6RjZUT2J4Tld2VnlzRThuSmZ3a0ZOZ09UbzZta2tUeGlISkVqNk9QR0ZXZ2VVZE83WnBBc3RKU1VtWVRDYXNWaXR6NTh6aXhvMGJPUlMyOGc2N1R6dmJQZVM4UERWbk1DcldyRmt6aXR0WWcvVmZ3OWl4WXdrSUNLQnYzNzQ1dHAwNmRZcGx5NWJoN2UydHZVYU9ITW1GQ3hlUUpJbmp4NDlUdjc2clFFMmpSbzN5UEpmWmJNNjFFbXV4V0I2SWpKc2JEei9xMVcvQXpoM2JXZm5aQ2l3WkdRVVdWSkZsbVRHalI5SG14YmJVcjk4QVVLVWhyMTM3bStGREI5TTlwQXVyVjMrcHFiVTVVYWxTWlY3cDBMSEE0enQ5K2c5R2poaktPNzNmcFdsVFYyVzNTUlBHY2ZueVg0Uk5uK21pVkorWW1NakFEd1pRclZwMSt2VWZVTkJUWlV3WVB6WXRuMUJVTTNTQ29EYm9BbHdGS2oyS0Y0Nm5weWNMRnk2a1pjdVdiTnpvcXR4anQ5c1pOR2dRYjcvOWRvN2pSRkZFcjlmbkVBVE9MMTlYcWxRcE1qSXlTRWhJd05mWEYxQlZxMk5qWXlsWjBrMm43a1l1aHExZWZlYk9XMGo0a1hBK1g3a0NvOUhJbUhFVGJubmNzcVdMOGZEd29IT1hydHA3TnB1TllzV0t1WVN0L3dTRkN4Y21JeU9Ec09rektWU29FQ2RPSEtldzQ3ck9TMkM1VUtGQ0pDVW1NbUhpRkI1Ly9ISE9udjFUdXhmeWc2SW9mMmN6WUhJV3p5M24vYWtlbzF4NWxDK2VGaTFhMExselovcjI3YXVKQ0FOVXExYU5reWRQVXFGQ0JlMTE0TUFCWnMyYWhTQUlQUG5ra3h3NWNzVGxzN0wvblJXMWE5ZkdiRGF6ZDIrbTZ2bStmZnNRUlpHbm4zN2FmUmU3a1FPVEpvNG4vRWc0elpzL3o3RGhJemwwNkdDT2gybDI3TnUzbHoyN2R6Tjh4TWN1emFzVktsUWdLU21KWC9iczF2SnQzMi82enVYWTgrZlBzWEhqTndVYTI1TTFhbUMxV2pHWlRFaVN4TUVEKzZsWlM5VXl6VXRndVZqeDRoVDI5Y1hrQ0cvMzdkMnJIWk1mSkVtNm5zMm81ZUd0cWYwZWVrQ1JaZmx5WG9vK2p3cG16SmhCMWFwVlhYSmRRNFlNb1ZXclZvd2VQWnBPblRweCt2UnArdmZ2ejhDQkF3SG8yN2N2czJmUFp1alFvYno5OXRzY09uU0lCUXNXdUlTVmt5Wk5vbmJ0MnJScTFRb3ZMeTk2OU9oQjM3NTk4Zkh4d1dnMDBydDNiN3AzNzM3ZkZNL2QrSGVoYytldWhJVk5ZZTNxVmNpeXpNQkJIeUdLWXI0S2IzTm56eVFqSTRNKzcvWFNQbWZ1L0VYNCtQZ3dhY28wWm40Nm5VVUxGK0RwNmNuQWJEcWl4NDRlWmNPRzliUnYzK0dXWXl0Yk5vajI3VHZ3YnErZUtDZzgrMnl3cGgyY2w4Q3lYcTluK0lpUEdUZHVORGFyamRLbFN6TjQ2SzNGbDIwMlcwUXVIcHVpcXUrNWVtMkNnQ0lJZ3VDZGtaSFJ6MmcwVG54VUxwWlNwVW9SR2hxcXRXRTQ4Y1VYWDlDMWExZFdyRmhCdDI3ZEFGaTFhaFVUSjA3a3dvVUxGQ3RXako0OWV6Snk1RWp0U2ZqVFR6OHhjT0JBTGx5NFFPM2F0V25Rb0FIcjE2L1hkRVVEQXdQcDFxMGJZV0ZoV2o0dE5EU1VOV3ZXSUlvaUhUdDJaUGJzMmJrV0ZkeDRkTEJueng0ZXIxakZQUkY1SUNZbTV0UGFOWi80QlZkYThCUW5MVGdxYmJna2lxS3MwK2xWdzVhVWxOVEcyOXQ3clh2NmJnOG5UNTRrTFMyTkJnMGFhTytOSGoyYUgzNzRnZkR3OFBzMkRsbVd1WHpsS25GeGNVaVNSRWI2bzdsRXk4TnNScWZUNGU4WFFGQlFHVVJSekM5bjQ1aXpXT3oyZXpkbkhtWXplcjJlQVA4QWdvTEt1ZzNiSGVMc24zOE9hLzYvSnFmSktlU1NEamlrOTBSSkZFVlpyOWNwZWtDSmo0Ky8rQ2owc2ttU2ROdnlkdm5kR0JjdVhLQkxseTZzV3JXS1dyVnFjZkxrU2ViTm04Znc0Y1BKalBjTGpzakl5TnVtVTdkWXJKdzRjUUtkWG85UG9jSnUrYjNVRk9JVDRvbjVMWnBhTld0aE5CcHkvZTErL2ZVM1JKME9iNTk3UDJlcHFTbkV4c1VSSFJOTnZicDE4OTMzdXJ1Zk1WY2NPbmdnbHN5Q2dWWTRjREI3T0VKUkJRVUZXWllSQkVId0JJei9aKys3NDV1by8vK2ZkNWRjZHZlbXBZVzJERkdnU0FFL0ZCRi9iQnpnRjBVRlJDeFlrQ0VnSWhRVUZHUXJRZ3NpVTVDbElHSlpBckpreWlwWWhteVEwcWJwYnRPUmNYZS9QMjQwU2ROU29HWG05WGhFYWRaZDNuZjN2TmQ4UGxtVzFRTlF1SmJ3N216cTFLbFl2SGd4MHRMU0VCd2NqTGk0T0l3ZVBicFNiNkU2N1dHSi96N3F4b3NUZXlFc3RMeVhkTzM2RGVUbTVqNFV3V1FmYjIrRU9wSGhjM2xzbGQrL1Eyb0Y5QUV2WTJCMENFVkxBSmdGb1dTR0pFbE9KcE54Sk1xU2NSZGM2M2YzRmg4ZmordlhyOE5rTXVIcTFhc1lNMmJNQXdNMUFNak95bllOVHpzeHJjNE5XVm5PK1IxeWNuSWV5cHBwZFc3SXluYk5CTjlEcXVVaTdGczhiRnM5N0lzSElvT3U2SjJ6TEh2ZXRZU1BsM0hjdlE5UFArbW0wV2pCc2t5RktZbUhzV1lhalJhTWxYRWRuTHMwaThWeUZlWDcxeHo3MkhoMkR3SGNaQVJCY0J6SGNWYXI5WHhGb3hNdWV6U05JSUNTRWhlWFcwVldVZ0hQM2NNc3J0enI4U3JJejhlTjYxZFJWR1NzRkRqRDZvVER6ZDM5b2YyK210aFBvN0h3cGhOQUsrZXhFVVNaN29GTWZLR2twT1NjQzlncTg0NTQybWFEd1FBcnc4QllXRDIwelZxdERqSzVESDYrdmdnTURLejIvZDYxY3dlV0wxc0tneUVEUVVGQldMbHFMUzVmdm9UWS92Mms5NHlObjRDdVhidTVEdklqYk5ldlhVRnhjZVgwUGtWRlJ0eTRmaFdObXpaN292Yno5dTIwMnc2QXhnQmdoYUpCdVljSWJBREFYYnAwNlZ4MGRMVHJES29BMUpLVGt3R0NoRWFyNDJtYkE2cnYrNHVLakVqWFp5QTlQUjNObWxYZlNabVdsb1laMDZmaXk4bGZJenE2QlFvS2VHcWNpSWhJN05xOUR3QXdNUGI5R2x1M1pVdVg0UFh1UGV6WVRNVDltanZuRzZTay9BT2FwdEcrUXljTS9taUlOSHlkbXBxS2hMbHprSEkyQlFxRkFoMDdkc0tIY1lOUmswM2tkOXJtaXpFdlFDNlhneUJJaElXRm9YL3NBTFJ1SGZQQXpzRTdnWVh0dWZRd3JTYjJjLysrdlJrQ2FERWlxTmw3YmJ5WEJsdVZLaEhsV3Jac21RWGdzZ3ZHeXB0ZXJ3Y0lFbjcrZ1RXU205Rm90UER6RHdSQUlEMDl2ZHErOStLL0YrRGo0NFBXcldOQTA3VEVFMGNRQkJRS0JSUUtCV3BTNytMSDVVdVJrMU0rZ1Q5cDRnVFVDZzdHYjc5dndhTEZ5M0QweUdFa0pXMEN3UGZralIwekd2WHFOOENtMzdjZ0lXRUI5dS9iaTk4Mi9scGorMW5WYlNZdVdJak5XN2VqZit3QXpKNDVIUnQvM2VDNk9HcmVxYmd5YzhhMGtzckNVSUlRUWxIWWg2SVEzc0N5TEh1S0pNbEkxM0xhbThHUUNZMVdWK1BiMGVqY1lEQVk3anNrUFgwNkdaTyttQUN6Mll6aTRtSjBmNDBQTTN1ODBSUDkzdTlmcGU4NGV1UXdFaFBtUWE5UFIyaG9HRVo5OGlrYVBmdXM3VjBVeTVZdFFhYkJBUCtBQU1URkRVYXJGLzRIQUJnMjlDUGNFaGhUUjM0OEhESVpoZURnRUNRdVdBaVdaZEcyYlR0MGUrVVZLQlFLK1BuN28zbDBOQzVkdkFpQXIxaDZlbm1oZDU4K29Ha2F3U0VoYUIzVEJ2LytXM05GKzd2WnBrcWxRdXZXTVpESFQ4REVMeWFnVStjdWp4MHpDOE13T0hyMENMWWsvWTRoUTRjak9DUUVBRDhrUC9lN2I1SHl6eG1RSklYWWdSOGlKb1luUXMzTXpNUzBxVk9RblowRm5jNE5ZejRiaTlxMVF5dmREa0VRaUlxS2dvK1BEMWlXeGZuejU1R1dsbGJsL1Z6eDQzTDhzWDNiT1dkaEtBQ1c0emkyTEw5R2NDQUl2a0c5b0VBcUhnQUFaN0ZZa2hVS1JTOFhsTm1ibGJFK2tDcWFScU9Gc1NEdnZyK25hZE1vYkVyYWloMS9iTWZLRlQ5aTlkcWY3K3J6VjY5Y3dlY1Q0akhwcXlsbzNqd2FlL2ZzeHFpUncvSFRxclh3OC9mSHpaczNNR1h5bDVnN2J6NGFOR3lJVGI5dHhQang0N0I1eTNhbzFXb2tKQzZRd3JjNWMrY2hNcktNT0lZa1NmVHUwN2NzSjNQOUdnNGZPb1NQaHZDMFVUNCtQdExuUlcvcWRISXlYdS9lbzhiVy9WNjJHZDJpSmN3V0N5NWR2SWlvWnMwZXlmT1daVm1wOWNqMjN4OFBINHBhdFdyaHdvWHpZR3dxeDl1M2JVVnBhU2xXL0xRR09UazVHUFJoTEJvM2JnSTNOemVKRWZlVlYxL0RpUlBITVdQYVZNei8vb2RLdDErblRoMVFGSVdkTzNkQ29WRGc1WmRmUm1abUppd1dpOU45dFAwN0plVWY3TiszRjdObWYzdmxoVmJSam1Hb2JZNE5Jb0FSQWpocnRWcSszVU5Nd2hVVUZKeHl3Vmg1cTY1Q1FaVzJaVFErOU4rN1pVc1MycjdVRHExYngwQ2hVS0J6bDY1bzBMQWhkZ3A4OTk3ZVBsaTJmQ1dlYWRRSUpFbmkxZGRlaDhWc3hxMWIvMVY1RytmT25rWEg5dTNRcjI5dk5HallFQysyZmNucCt4WitQeDhxdFJwZHU3M3l3SDUvVmJaSkVBUzhQTDFnTERJK2t1ZnM4ZVBITUg3Y1o3QllMTWpKeWNIQTJQN0l5ZUVGNmI2ZE14Zmo0aWVVdTFtZk9YTWFiZHE4S055QUNNamxOQzVkdWlpOTl1S0xQS1c5TFNQdW5XNFlvb2ZHY2Z4RWdLZW5wOTE3bGk1WkpGR0RwNlQ4ZzQrSDh6ZTRLNWN2b1dsVUZHN3hycit0dDhZNENVZkJjWndFY0hJNWJkZWd5NzMxMWx1bndIZjJ1cXdTTzNQbU5EcDFlQmw1ZWJtU2g5T3Y3N3RQVkU0eE1OQytLNzkyN1REbzlYeitUNnZWNHVUSkU0ajdNQmE5MyttRjk5L3JJOTF0cTJxTm5uMFdPLy9jaTUvWGIwUjZlcnFkRUlob0sxZjhpTC8vUG9xcFU2ZFgyeWpjbmF5cTIrUTREam01T2RBK29qMkV6WnRIdzh2YkcxOU8rZ0tmalBvWVBkNzRQNGxCNWs2TXVHZlBwdUN6TWFOQksyams1K2RMcjRtTXVJa0pjeVZHM01xTXBta3dEQU52YjIvRXhNU0FaVms3d2trQWVPZmRQdGk3ZHc4UzVuMkh5VjlPd3RCaHZEQk4zZkFJbkR4eDNEaDB5RWNaRGlHb0hiQUpZRlpPMUlVVWtzY2NBSGIvL3Ywc3gzRkhYZEIxWnlzcEtjR2ExYXVmeU4vbTcrOFB2VU1SNC9idFZJa2IvOEJmKzdGNjFVLzQvUE5KV0wzMjV3cERYWUlneW9HZHFiUVVtMzdiQ0ZNcFQ5b2NHQmlJOXUwNzRNeVowM2J2MjdEK0YremF1UU56dmt0NFlIMVpkN1BONDhlUGdaYkxVYTkrL1lkeWZEcDI3Q2c5SEZtY3hiV1BpeHVNVXlkUFFFRXJxdXp4YnQ2Y2hPWExsbUxhOUZrSWRjaWhWY1NJZTZkd3RHSERoamgwNkpCVWxiYzFyVmFMUVlNK3d2cGZma2E3bDE5Ry9mcjhXRm1USmszUnZrT25rd1pEUm1XZ3hwYk5pWXJCS0svelFNS2VONXkxV3EwdVlLdmlBZHU3WjdmazN0dmF2cjE3OE9IQUQ5Q3Y3N3VZT1dPYWxGTklTMHZEb0E4SG9QYzd2VEJyNW5RcHFmOVE4b1pXcTBTcXliRXNyRmFyQkVMZFhua1YrL2Z2eGJGamY4TnF0V0xQbnQwNGR6WUZIVHQxQXNBTGpCQUVRRklVOHZQenBGQ0NZKzNKVEFPRGduRDB5QkZZTEJaa0dnejhYVnlod0U4clYyRGR1ald3V0N6SXk4dkZnUU4vb1hIanhtV2g4T1lrYlBwdEk3NmJsL2pBZU9xcXVrMlR5WVMvang3QjlHbGZJMjdRUncrbGNKQ1JrWUdkTzNkS0QyZE1Na2FqRVo5K09ncDkrdlpEUUVBQVpreWZXaW03c3hoaWVuaDRZTmJzYitIbDVRV1R5UVIzQWVCRlJ0eGh3MGRBTHBkTGpMaVZtZGxzaHNsa3dzR0RCMkV5bVVCUlZEbHRqNnRYcjJMNnRLL3gxZVN2Y2ZUSVlXemR1a1Y2N2RWWFh6dnJKQXhsYkhOc29tTkdFSVNVcTNOemQ0ZE1LSTl5b2x0WFdGaDR6RVY2ZUdkVHF6WG8yS2tMVnE5YWlTNWR5Z0RxK3ZWcjJMQmhQUklTRmtDaFZHTG1qR25ZdG5VTFh1L2VBM1BuZklQMkhUcWk1NXR2NGRqZlIzSG80SUdIc3UrT0Rib3pway9Gak9sVDBhRmpKM3oreFNSRVJ0YkR4QzhuNC9zRmlkQ25wNk4yYUNobXp2NVc4dGk2ZE8yR3MyZFRFTnYvUFZDVURLOTM3NEhJeUhySXliVUgrVkdqUm1QMnJKbFl2bXdKYXRldWpTWExWb0NtYWN5WU9SdUpDWFB4ODdxMWtNdmxhUHRTTy9SN242ZGZaeGdHczJieVllQTd2ZXk1OTFldVdvT0FnT3B2WXE3cU5vY04rUWdFd1JNc2ZqSjZ6QVB0WTd0YnUzcjFDdHEyYllkM2UvZUIxV3JGM08vbUlDY25wMXhQb2EwMWJScUZjK2ZPZ2lSSjVPWGw0dXJWcTZnbkZINHFZc1N0ekRJek0rM0NYdzhQajNMQ0xTZFBITWZZY2VQeGZQUG1lSzV4RXl4YnVoaGR1M1lEUVJDNGR2M2F0WXBBRFE1VEJ5UkpRU2FqWURZREZFbVZUUjZJSHR0SEgzMTBkTjI2ZGZrQTNGM3dWYm05OFg4OTBhOXZiNGsxRkFEKy92c29VbS85aDBGeEE2VzdsbFpvRlVsSitRY1RCVVdnOElpYTc2cnAxTGtMT25YdVV1NzV5TWg2K090ZzVUcW1yVnZIVkhqaEtoUUtUUGg4b3QxekF6K01LL2UrRmkxYjRaY05HOHM5SHhFWmllL21KVHI5Ym9xaXNQL0E0UWQ2SEt1eXpUdXQxLzJhVGxlOTdVUk5talJGa3lZODViWk1Kc01uRGt5NXpxeEwxMjY0ZE9rUyt2ZmpxOWJEUGg0aGhlUVZNZUpXWmpkdTNJQ0hod2ZhdDI4UEFEaDkrblM1Z3NOYnZkNlcvdTN0N1kxUHg0eVZVbjV4QTJOVG5ZSWFRYkRnT0pZVGpDUkpqaVFKamlCSWFMVmFMamMzaC9mWWJIT2l2L3p5aTNYTm1qVUhTSko4eFFWZEZSdEJFRkNwVkhpalowK3NXbFVtam1FeFc5RDJwWGFTNUpsandya21HMkpkOXZnYVJWRW9LakkrME9GOHg5eG9aUURvNCtOVFpZVXMyL005T1RuNW52Yk5Zckg4cmRmcmJjTlFxd2h1QkE5dW5EUmxRSklnQ0JJa1NZQldLT0R1N3NFWER4eG1ybGlMeFhMUWRhcmRHZGdBb0VmM04zQTc5WmIwZkhTTEZ0aXplN2RFRGI1Nzk1OUlTZmxIY3VlM2I5dktoNE5DR2YxK1RhVlN1dzdHWGE3TncxeXppcmJ0NStlSFltTmhwYW1QcXFaSUhuYUtwanJlbDV1YiswOGxZYWhES0NxTVVwRWtTSUlFU1pKU1ZSUkNJbzRGd0dWa1pMaUFyWXFtVUNyUnAyOVp2cXBCZzRZWU52eGpqQjB6R20vMzZvay9kKzVBY0hBd0FHRDRpRkhZdWVNUDlINm5GN1p0MndxeUdtWWZ4VHU5eSt5dHlGaFk0V3dwK1pEV3JNaFlDS3FDRnBMQXdFQndISXZNakhTbisxYW5ic1Fkd1VDdDFxQk8zWWlIdXU3VnRaK25UcDY0NmdUVXhFZVptQXRCOElVc2tpZ0ROWklFb1ZLcENLdlZTckFzUzNJY1IzRWNKd2VnWUZsMkg0Qm5YWmNJY1BMVUtmZ0gzTC91NTRVTDUxR3JWakRjM055d1o4OXViTisyRmJObWYydjNuZ3o5YlR4L0Y1M3NOMjdjUkhhT2kwSFgwVEwwYWZEeDhVWm83ZkpzdFErTGRaaG45ZlZHbUJNR1hkRU1CZ1AwZWoyc1Zpc0tIMkJqK0tOa0hNZWRiOWV1M1NUd0lpMjI0aTFGQUlvSmdoQTBEZ2lHSUFpV0pFbU9vaWpRTk0zUk5BMkZRZ0VaSDU5S2VSOHBITFZhclh0a01wa0wyQURJcWluL1VWcFNpakdqUi9ISzcxb3RQaHM3cnR3ZFhTNlgzOVYzaG9iV1JtYW1BUm42TkdoMWJpN05BMk1oak1aQ01GYXJVMUFEZ0xEUVVCZ01EMjdOeEgxaUdhWlNVQk5EVWo4L3Y2ZjZHQllXRnY0Tko3azFBSXdZVllxdEhoUkZRUzZYZzZacEtKVktLSlZLcUZRcUVGcXRsckJZTEFURE1BVExzaFRIY1JRQU9pc3I2MlV2TDYrTkxsZ0QwdFBUa2E3UEVCZzRhczRNR2VrSURQQy82eUY0anVOdy9jWk41T1JrZzdHeUtDMTlPc2tuVlNvMVNJcUNqN2NQUWtORDdsaW91WG56UDJSbVpZR3hNalcyWmlxVkdwUk1ka2RQeldWbGR1TEVpVStqbzZPdkFpaEdtY2FCa1NDSUlzR0xNd3Y2Qmd4RlVaeGNMdWNVQ2dXVVNpV25WQ3FoVnF0QnVMbTVFV2F6V1FRMjIzQlV5YkpzTW9CYXJxVUdUcDFLQmtFUTBHaDFVRmZ6SGI2NHlBaGpZUUVBcmxyNTJGem1zc2N3REUwalNYS2tUUmhxQzJ3bEFFb0pnckRSRUtVNG1xWWxZRk9wVkZDcjFYd29TcElreHpDTWJTaktBV0FZaHRsQlVkUUhydVVHbWpXTFFucDZPZ3lHVEJRVzVGWGJzTHBPcDROTUprTlFVQ0FDQWdKY0MrMnlwOXBLU2tyK2duMDExQzRVZGNBb29ZZU54ekNTSkVGUkZDaUtLc3V4aVcwZndsQXBDNEF0TEN6ODA4UER3d1ZzZ2dVR0J0WUlmYmZMWE9ZeTNxNWN1WExHQWRTc0FLd0VRZGkxZWhBT2ZXd2lvSW4vSnNYeXFEaG5aZFBUeG5wNWVmMEo0TFpydVYzbU1wYzlpREMwU1pNbTF3WHdzam84R0Z0UUF3QmI3TElGTjRxaUlHTlpsdU00cm94dDBzWmpBOEJldTNadE8wVlJBMXpMN2pLWHVheUd3OUI5anA2YUE2aUp6TG1jR0YwS1BHOGN3ekJnR0FaV3F4VVdpd1V5aFVJaGtyUkowLzhDMkxFQUdIZDM5KzNlM3Q0dVlIT1p5MXhXbzNiOCtQSGtTc0pRaWRGRDlOQmtNaG5rY2ptRXdnSEV3b0ZXcXdWcEc1dmFjTE5KNGFpdnIrOUJ1RlRpWGVZeWw5VnNHSHF4UllzVy96bUFtZ1VWTUhvNDV0YWtFRlFtNHg4MkZRV0NKRW1PWlZsQ2lHRkZzUVRHYkRadnBtbTZvV3Y1WGVheUdyMjRvZGZya1pGaEFNTXdNQnFmbnNtRHdzTENmYkJ2eXBVZUhNZUpqYmtpd1NSWWx1VXNGZ3RzZEEvQWNad1Vqc3BzUFRiQmErT0lNb1VYRmdDVGxwYTJMU3dzYkl6cjFIT1p5Mm9PMUpLVGs4R0JrS1loL0oraTM3OXp4eDlubkhoclZ2RFRCbmJFa2lSSmNwUk1CbHBPUTZHZ29WQXFvVktxb0ZLcm9GRnJvTlBweWtKUlczQnpERWZyMXExN25tWFpuVS9hWWlZbUprS3BWRDdRYlZxdFZvd1lNUUorZm41d2QzZEhYRndjaW91TFhWZjJVMjU2dlI0Y0NQZ0hCRDExWTNGV3EzVnY3QWZ2WjlzQW04WEJheXNmaG9vRDc3WmhLQ1dEVEM2SFhDNEhLWlBKUkZEamJEdzJ6b2J0Z3dYQUZCY1hKN2xPdi91M2NlUEdJU2twQ2V2WHIwZFNVaEoyNzk2TlljT0d1UmJtS1RlRElSTmFuZHRUK2R2VDA5TU9PUWxCTGFpNGYwMW94aVU1aWhTQVRjYm4xK1F5R2VRMFhSYUtPaFlSQ0lLd2EvMUlTRWpZUEc3Y3VNOEFoTGhPdzN1em9xSWl6SjgvSDZ0V3JVTGJ0cnlVMmFKRmk5Q3hZMGZNbURGRFVtcDMyZE5uRE1QY2s2ZDI0Znc1TEY3MEE3NzlibDZON3QrRkMrZXhkY3RtTkduU0ZCMDZkcEtlLysyM1g3RnA0NjhBUWFCdDIzYjRJSlp2b0toTVlQbk1tZE5JbVBzZHJJd1ZZYUZocWRldVg3L2c0SzFKWWFpSVA0NE51U1JGZ2lRZHZEV2hTa3JUZEpuSFpodUtpdUdvamRmR2pCOC92c1Jpc2Z6NnRKMXdhOWV1UlpNbVRhQlNxVkMzYmwzTW0yZC9BdTNac3dmTm1qV0RTcVZDZEhRMFpzK2ViUWRRUFh2MlJQUG16UUVBeWNuSktDa3BrVUFOQU5xMDRaVzJqeHc1NHJxNm4ySXJMQ3k0cDgvVmI5QVFFNy84cWtiM2JjSDhSQ3hkc2hqWHJsNUZVVkdSOVB4Ly85M0V4ZzBiOFAwUFM3QjAyUXFjT1pPTTQ4ZVBDWi9oQlpaWHJGeU45L3QvZ0JuVHBrcXBtR2xmVDhhRUx5Yml4eFdyNE9QcnQyUHZudDBXWjk0YVFOaFhSRVZ3STBsUXR1TlRBcWpKNUhMSVJkb2lzVHdxdkltaktJcGdHSVlqU1JJTXcwaDVOZ0RXVzdkdWJhcGJ0KzZJcCtWaysrbW5ueEFiRzR0dnZ2a0duVHQzeGw5Ly9ZWGh3NGREclZaandJQUJ1SHIxS3JwMTY0YWhRNGRpN2RxMTB1dTJ5a1U5ZS9aRWJpNnZQM3I3OW0zUU5HMG5xQ0dYeStIdDdZM1UxRlRYMWUyeWNwYWRuWTJwWDA5R1ZxWUJCRWxpOE9BaGFObnFCYVNtcG1MVWlPR3dXTXp3OFBERThoVmw5UFRqUHZzVWFXbjh3RkJlWGg3VUdnM1dybHNQZ0ZlRlNwZzdCL2tGK2ZEeTlNS1lzZU1ra1I0QVdQL0x6OWk0Y1lQMGZnQVlNUEJEMERTTjJiTm0yTzNiUDJmTzRQbm16YUZXcTJHMVd1SHA0WWt6cDA4ak9yb0Z6cHc1alpFalB3RmdMN0JzeU1pQVVxVkNXRmdkMGJNN1ZZRzNaaVVJTWI5R2NBREJFUUJIa0NSSGtTUklrdUtrU0ZNTVF3VnZUYUZRbGdHYlRhN05OaHkxbXgyTmlJaTRZTFZhTjVJaytjYlRjRko5ODgwMytPQ0RENlFjV0dSa0pHN2N1SUhKa3lkandJQUJXTGh3SVJvMGFJQlpzMmJ4ZDgvNjlaR1Nrb0kxYTlaSTMvSDIyMlZpRmNYRnhVNkxGUXFGb3B3c21jdGNCZ0EvcjF1RHhvMGJvOS83SCtEYXRXdFlNRDhCTFZ1OWdPRGdZUHl5WVNNdVg3NkVxVk1tMjMxbTJneitmTXpQejBQY3dGaEpmOE5zTm1QcWxLOHdaZXAwQkFZR1lzY2YyL0g5Z3ZtWTlQak83clFBQUNBQVNVUkJWR1haNTVzMGJWcU9lZmhPQXN1Wm1abVk5dlZrTUN3RG5aQW50QlZZL3ZQUG5aTEFja0ZCQVJRS0JjeG1NK1orOSsyV1pVc1haemw0YXJiZ0pvU2g0UGlIV0RTd1NaL0p5cncxV21qV1ZhbVVJT1Z5T1J5OE5qZ094Z3U5SWd3QUppOHY3NmtKUjgrZlA0OFhYbmpCN3JtWW1Cajg5OTkvTUJxTk9IMzZkRG14MnRhdFcxZjRmU3FWcXB4S0Q4QnJWVDRNZlVxWFBmb1czYUlsZHYrNUN5dCtYQTVUYVdtVkJWVllsc1dYa3lhaTJ5dXZvVVdMbGdCNGFjalUxRnVJSHpzRy9mdjF4Wm8xcTJESXlMRDdYTDE2OWZIRy8vVzhpMnZrSENhTUg0dUJjWVBRcnQzL3N3ZllDZ1NXOC9Qek1Xcmt4L0J3OXpqa3hGdXpMUnBJYkI2MnVUV0tzZ2xEWlJSa01ybU50NmFBU3FXR1RBUTJzV3RYREVjcGl1SUVIVUhiMlZIR3g4ZG5EOE13aHdpQ2FQMmtuMVFxbGNycENTUCtYeWFUbFZNNnIweVVOamc0R0tXbHBjakx5NE9IaHdjQXdHS3hJRHM3RzdWcXVXanZYT1lFMktKYklISCtRaHc3Zmd3clZ5d0hUZFA0Y3ZMWGQvemMwaVdMb0ZRcTBhZnZlOUp6Rm9zRkFRRUJkbUhyL1ppN3V6dEtTMHN4KzV2djRPYm1oak5uVHNOZE9LOUZnZVdPblRwTDNxSldxNFdibXhzSzh2TXhlY3Ewb3krLzFPWjZKZDZhMkx2R2xuVnBDR0VvajFHU1F5YVh5VURMNWFBVkNpaVZLcWcxYXBBMFRVTXU5SDVVRUpMYUZSRUFXSXVLaW41K0drNnFoZzBibGt2cUh6NThHSUdCZ1hCemM4Tnp6ejJINDhlUDI3M3UrTGV0UlVWRlFhVlM0Y0NCTXFIa2d3Y1BnaVJKdEdyVnluVVZ1NnljVFpzNkJjZU9IMFA3OWgwd0xuNENqaDQ5VXU1bTZtZ0hEeDdBL24zN0VELytjenNXNFlpSUNCUVVGT0N2L2Z1a2ZOdm1wTi90UG52NThpWDg5bHZWZ3JMbkdqZUcyV3lHUXFFQXd6QTRjdmdRbWpUbHRVd3JFbGdPQ0F5RXU0Y0g4bkp6ZDFma3JRR0VIWnNIUU5oNGJHVjVOY3JPVzFOQXFWQkNyVlpCcTlGQ0pnSmJSVVVFbTdZUGFSS2hmZnYydng0NWN1UkRnaUFlZTAwRWxtWHh4eDkvbEh1K2JkdTJpSStQUjgrZVBmSHNzOCtpYytmT09IandJT2JNbVlPSkUzbXg0S0ZEaDJMZXZIa1lPM1lzUHZqZ0F4dzllaFRmZi8rOVhWaTVidDA2NU9ibVl2RGd3ZEJvTklpTmpjWFFvVU9oMCtsQTB6VGk0dUxRdjM5L1NUSGJaUzZ6dFQ1OTNzUHMyVE93YnMxcXNDeUxVWjk4Q3BJazdZb0grZm41ZUt2bkcyajIvUE1ZTzI0OEV1ZDloOUxTVWd3Wi9LSDBQWWtMZm9CT3A4TzBHYlB3M2JmZjRJZUYzME90Vm1PVWc0NW84cWxUMkxoeEEzcjArTDg3N2x0b2FCaDY5UGcvRFBwd0FEaHdhTk9tclNRZVhwSEFza3dtdzdqNENlZGZlNlhyMlFxOE5RdEJpS0FtRkEwSThONGFSWUlpS1U0bVZVTGxVdDhhcmFDaFZDbWhGaVlQaUo0OWV5SS9QeCtGaFlVb0tpcENjWEV4U2twS1lES1pDSlBKQkJzOUJKTGpPQmtBT1FCbFVWSFJBSlZLOWZYamZOSWtKaVpXMkJ4Ny9mcDFoSVdGWWRteVpaZ3hZd1p1M0xpQnNMQXdEQjgrSEVPR0RKSGV0MlBIRG93YU5RcFhybHhCVkZRVVdyWnNpUTBiTmtpNm9qMTc5c1NOR3pkdzRzUUpLWjgyWXNRSXJGMjdGaVJKb21mUG5wZzNiOTREbjRCdzJhTmwrL2Z2UjNoa2c2Zml0eG9NaG0rZmoycDhCRHo5dDZocllBUlBCVjVDRUVRcEQzQ0VsVmVob2ppWlRDWXFVSEcyVEI0YXJSWTZuUTZlbnA3dzhmRkZVRkFRd3NMQ1FQVHUzUnQ1ZVhrb0tDaEFVVkVSaW9xS1VGSlNndExTVXBoTUpzSnNOc05xdFpJc3l4STJlZ2owNHNXTHZXSmpZLzhBRVA2MG5vd3BLU2tvTGk1R3k1WXRwZWNtVFpxRWJkdTI0ZGl4WXcvVTY3eHg4ei9rNU9TQVlSaVVsanlkSTFwS2xRb1VSY0hMMHh0aFliVWw4bFJueG5HY3NHYlpzRnByYnMyVUtoVmtNaG04dmJ3UkZoYjYxQU1ieDNIWFBoc3pldUxhTmF1TEFKU2dUTmZBQ0Y1YXJ3U0FXUUEyUnBEV1k0VndrMU1vRmZ4Y3FFb0Z0VVlEblZZTE4zZDNlSGw1dzkvZkQ4SEJJUWlQaUlCTXBWS2hwS1FFTkUzRGJEWkRMcGZEWXJFNFZraHRRMUlHQUROdzRNQ0MzcjE3LzZSVUtpYzlqZ3M4Yk5nd0pDWW0zczhCd3BVclY5QzNiMStzWHIwYVRaczJSVXBLQ3ViUG40LzRlTjd0dnBOS2txUHA5WHI0KzkvZDZMUEpaTWFaTTJkQXlXVFF1Ym03NVBlS2pNak55MFhXeVV3MGJkSVVOQzEzZXV4T25EZ0prcUtnMWRYOG1oVVZHWkdkazRQTXJFeEVDODNhRmRudEo3eWZNVGMzZC9QYU5hdE5OaUdvV1FReUFCWU9ZQWdIYlFQeFB4ekhnV001c0N3TGxtVjVKZytCemNOcXRjQmlzY0JpTnNOc012UEFwbFFxVVZKU1lwZHJrOGxrc0ZxdG9DZ0tETU9BNHppSk5wempPQVlBczNuejVwL2ZmUFBOOXdEVWZkd1dPQ0VoQVFrSkNmZjFIVDE2OUVCOGZEeEdqQmlCdExRMEJBY0g0OU5QUDhYSEgzOHNYVUExYmVuNmRGQXltVXN3V1RDTlJndU5Sb3NNZlJyUzB0TVFGbHJlUzdwKzR5WklpbnBnYTJhN1R6ZHYvb2ZRU21UNGFnVUhQOG5lMnZXbFM1ZWNkQUExbTl4YVdZdEhHYUVrQmJsTTFBM2xxNTZpdDZiVmF1SHU3ZzVQVHkvNCtma2hPRGdZZGNQRDBhalJzeUExR2cyVVNpVVVDZ1ZvbW9adE1VRW9Jb0NpS002bW4wMXMvYkQyNnRVcnQ2U2taT1hUZkNIRng4ZmordlhyTUpsTXVIcjFLc2FNR1ZOcENGVGRscDJWL2RRT1QxZG1XcDBic3JLeW5iNldrNVB6VU5aTXEzTkRWbmJXVTN0TXNyT3preFl2V2xnSys0S0JDRzRTazRkdGl3Y2ZpcEtnWkJSSFVRN051TUtVZ1ZxdGtrRE8yOHNiTXBrTXBGYXJoVnF0aGxLcHhMMjBmcXhidDI0dHgzRXVodDJIY2dlODkrSHBwOEZ6WTFuRzZXc1BhODAwR2kwWUsvT1VucXZjeFc5bXp6cmhCTlRFZkZvNXdSWmU2WjEwbUFmbFI2ZmtBcWlwVkVwb05CcTR1Ym5CdzlNVHZuNitBQUNaVHFlVEtxSkN3Y0F1MXlhVHlUaXIxVW93RE9PMFlUYzJOamIvcmJmZVdxSFJhS1kvNFFjR2VyMGVCb01CVm9hQnNiQjYyRTIxV2gxa2NobjhmSDN2V3RxUElJQ1NFaGVYVzBWV1VnSFAzY01zcnR6cjhTS1NNMEhNVHdhdTVOM2JoaU04d0EySkFoZmxXeTIvb3lBL0h6ZXVYMFZSa2JGU0lBK3JFdzQzZDNka1pHUWtyZnBwUllXNU5UaHB5Q1ZKa3VQNzFtU2NURWJ4b0NhVGc2YkxkQTU0alFNZDc2MTUrMENoNExzTFpCNGVIaWdvS0lEUmFKU3FvV2F6V1FJM3E5VUttVXdHaG1IRXBKM1UweWJrMnF4dnZmWFdtaTFidHJ4QkVFU0xKeFhVa3BPVEFZS0VScXZqMlUyclVkdTRxTWlJZEgwRzB0UFRxMTBKZnRmT0hWaStiQ2tNaGd3RUJRVmg1YXExdUh6NUVtTDc5NVBlTXpaK0FycDI3ZVpDd2tmWkVwT0JxM24zL3ZrcmVTRG1KNE5iMHJGYWR1ZjZ0U3NvTGk2NjQzbDk0L3BWUE51NDZZbDNlcjJaN0FUVW5IcHJrSmh5YllmYzVaREw1SkRUZkRPdVFxR0FVcVdDUnNOUE0zaDY4WGsyMFdTZW5wN0l5OHREWVdHaGJROGJhSnJtcXd3T1hwc042NGVrMXJ4OSszWnpRVUhCais3dTdrOGtzT24xZW9BZzRlZGZNMkxKWW5MWm9FOURlbnA2dFlreXA2V2xZY2IwcWZoeTh0ZUlqbTZCZ2dLZUdpY2lJaEs3ZHU4REFBeU1mYi9HMW0zWjBpVjR2WHNQT3pZVGNiL216dmtHS1NuL2dLWnB0Ty9RQ1lNL0dpSU5YNmVtcGlKaDdoeWtuRTJCUXFGQXg0NmQ4R0hjNEhMRDJkVnBkOXJtaXpFdlFDNlhneUJJaElXRm9YL3NBTFJ1SGZQQXprSGlma0ROQnR5cXkrNEVhcmJnOXQvTm0xdXZYTGxzdllPM3hwVFByVkdRVVJRbmpVN0o1VHdkT0UyWGVXczZMZHc5UE9EdDdXTTNBa242K1BqQXc4TURPcDBPYXJVYUtwVUtDb1ZDeXJVNXk3YzV5N1Y1ZUhoc1psbDIyNU1JYkFaREpqUmFYYzNuWUhSdU1CZ00xZlo5Ri8rOUFCOGZIN1J1SFFPYXBpV2VPSUlnb0ZEd2Q3MjdiVW01Ry90eCtWTGs1SlJQNEUrYU9BRzFnb1B4Mis5YnNHanhNaHc5Y2hoSlNac0E4RDE1WThlTVJyMzZEYkRwOXkxSVNGaUEvZnYyNHJlTk5jZTlVTlZ0Smk1WWlNMWJ0Nk4vN0FETW5qa2RHMy9kNFBJazcyQldxM1ZYbTVnWExqangxQ3IwMWtnN2I2ME0xT1RDUEtoQ3FZUkt4Y3ZzdWJ1NXc4dlRDLzQyM2hvQWtINStmdkR5OG9LYm14dTBXaTNFOWcreFNtb0RiSndOaGJqZGlCWDRhWHlMd1dENDhZazhPSXoxZ1NTYk5Sb3RyRmJyZlgvUDZkUEo2UDVhTjh5YU9SMTZ2UjdkWCt1RzdxOTF3NG9mbDFmNU80NGVPWXcrNzc2TjlpKzNSV3ovZmpoMzlxemQ2L3YzN1VXLzkzcWphK2NPNlA5K1h4dzljbGg2YmRqUWo5RDlOVDYwSGZueGNIUi9yUnVHZmpSSUFwRzJiZHZodlg3dlE2RlF3TS9mSDgyam8zSHA0a1VBZk1YUzA4c0x2ZnYwQVUzVENBNEpRZXVZTnZqMzM1cXJUOTNOTmxVcUZWcTNqc0c0K0FsWXZHaWhIZkhpazJCRlJVVkkrbjBUeG80WlhUMGg2L1hyTzJFL0Uyb0hiQnpIV1RtT1l6aU9ZMW1XNVFoQTh0WktTb3E1VElNQnFiZHVvYUNnb0l5OVE2bUNScU9HUXFIQWd2bUpPSGp3TDZqVWFudGdDd29LZ28rUER6dzlQYUhUNmVEWS9sRkpsYlNjMXhZWUdIallZckVzZWRLQXJib0tCVlhhbHRGNDM5L1J0R2tVTmlWdHhjY2pScUZXcldCc1N0cUtUVWxiMGUvOS9sWDYvTlVyVi9ENWhIZ01IaklVVzdmdnhKdHY5Y0tva2NNbGlwdWJOMjlneXVRdjhkbG44ZGl5YlFkZWZmVjFqQjgvVGhLbFNVaGNnRTFKV3dFQWMrYk93NmFrclVoY3NKQS80VWdTdmZ2MGhZZUhwM0RpWDhQaFE0ZlFzaVZQQXVEajQ0T0V4QVZRS2xVU0VKNU9Ua2JqeGsxcWJNM3ZaWnZSTFZyQ2JMRklnUHc0bWVNUXZmaDNWbFlXQnNiMng1VXJsNnZsUmxKYVdycG0vUGp4dHh4QXplVG9yZkZqVXp5ZU1Bd0RrcVRBc2d3c0Zncy9TUkFlanN5c1RMQWNCNlZDQ1pYUTNuSHMyRkVvbFVxNHVibVgyemFwVXFrUUVCQUFiMjl2dUx1N3c3Yjlvekt2elZsZkcwRVFsblBuenEwRWNOdmxoRCsrdG1WTEV0cSsxQTZ0VzhkQW9WQ2djNWV1YU5Dd0lYYnUzQUVBOFBiMndiTGxLL0ZNbzBZZ1NSS3Z2dlk2TEdZemJ0MzZyOHJiT0hmMkxEcTJiNGQrZlh1alFjT0dlTEh0UzA3ZnQvRDcrVkNwMWVqYTdaVUg5dnVyc2syQ0lPRGw2UVZqa2ZIUk9YQUVvUDBnQ202ai93ZENLWVBxdGZwd0c5Y0doSnZDN20yalI0M0E2ZVJUQUhqRzNPOFh6QWNBZUhoNDRLZlZhOUh2L1ErcVkyOXVIenQyN0s4S1BEWGIzalVXNEhOckZFVnhITWR4RkVXQlpWbE9vVkFJdyswcWVIdDV3V2dzaEVvb0dPVGw1Y0ZzTXVIRkYxK0VYRjUrdW9RRWdLQ2dJUGo2K3NMVDB4TnVibTdRYURSUXE5VlNIc1laQTBoRnViYW9xS2lyeGNYRlB6enBGMy9YemgxUVdQaGtDdHJxOVhvRUJ0cDM1ZGV1SFFhOVBoMEFvTlZxY2ZMa0NjUjlHSXZlNy9UQysrLzFjZW9KVkdhTm5uMFdPLy9jaTUvWGIwUjZlanFXTFMzdjZLOWM4U1ArL3Zzb3BrNmREcGxNOWtCK2UxVzN5WEVjY25Kem9IMkVlZ2lWSFNOQXFPUmdjMHJndmZRMXFOOW9pTkkvcjhMOVUzdnF4Q0ZEaDJQcTExT1FtREFQMjdkdFJkLzMrQXE1ZUcxWGgrWGw1ZjJTbUppWTYrQ3BtWnpuMWppdVRNb1lrTWtvS0pSS21NMW1VQ1NQTmNYRnhTQUlRbkM2RkRoODZCQUdESWlEenMxNW83VU00S2wvQXdJQ2tKT1RVMkhyaDhWaUVXYXlySnpBOXNHeExBdUNJRmlPNHdqYlhGdWJObTFXSGo5K3ZCMUprdTFjL3MvalovNysvdENucDl2ZmZtK25JaXFLYjBVNThOZCtyRjcxRStaOE53L0JJYnhvMllzeEx6ajFhaHpCemxSYWl1M2J0NkZMbDY1UUtKVUlEQXhFKy9ZZGNQRGdBYnYzYlZqL0MzYnQzSUc1Q2ZQaDV1NytRSDczM1d6eitQRmpvT1Z5MUt0Zi80RWZIMFhyRUxqSHZ5ajliZmszRTdtZjdJUzhuamRLdGwyRzlYb3VkTU5iSW5ma0RwaVBwMEg3Z1gwTFVYaEVCRHAyNm95Vks1Wmo1cXh2NE9aMjcxTVljcmtjN2RyWlgrWTdkdXc0TUhyMDZPTlY4TllZQVQ5WXE5WEtDWkVnS0ptTVV5cVVJQWtDTjI1Y2w0WUhlRFlQRFU2ZlRzWkw3VjVHdlFZTjhPL0ZDeFVER3dDRWhJUWdLeXZMYWV1SENHd2l1REVNSXoyRUdWSVdBQ0gydFNVbko1c05Cc09TZ0lDQXB4TFlmdDJ3bnEveWNSemF2ZnovOEg3L1dBQjhtOE5Yazc1QVlXRWhta1pGNGREQkExSXU2a0diYlpHQ1kxbFlyVlpwd3FUYks2OWl5T0E0ZE9qVUNjMmFQWSsvL3RxUGMyZFQ4Tm5ZY1FCNGdSR0NBRWlLUW41K0hyWnUyU0o4ai8xc2JHQlFFSTRlT1lLNmRjT1JsNXNMWHo4LzBBb0ZmbHE1QXZuNWVYaTNkMThVRlJseDRNQmZhTktrTEorMVpYTVNOdjIyRVhNVDVqOHducnFxYnROa011RjA4aW5NbURFTmNZTStlaWlVN3FaRHQyRG90cnI4TWIyZUM3cUpQK1RQK2NGNk13K3FWK3ZCY2prYmNEZ3VPM2Y4Z1gxNzkyREsxOVB3emV4WitIcmFkTlNyZDI4QWJiRllzSE9udlpiNnRXdlh0aFlVRkRoT0Y0Z2VXem1HWElxaVFGSVV3SEZTMzZ4Y0xrZEFZQ0EwR2cxMFdoMysrZWNNL1AwRFFOTUtYTDF5QllVRmhiajQ3d1hrNUdTREpFbkk1WEwwZXZ1ZDhzQW1ocVM1dWJuSXo4K0gwV2hFY1hFeFRDYVRIYmpaZW0wTXczQWN4MEY0U05NSUFDeUJnWUVIVENiVGZKcW1oenhOb0paODZoUzJiRW5Dd2grV2dLSW9mREpxQkVKRHc5RHU1ZitIdVhPK1Fmc09IZEh6emJkdzdPK2pPT1RncFR3b2MyelFuVEY5S21aTW40b09IVHZoOHk4bUlUS3lIaVorT1JuZkwwaUVQajBkdFVORE1YUDJ0NUthVVpldTNYRDJiQXBpKzc4SGlwTGg5ZTQ5RUJsWkR6bTVPWGJiR1RWcU5HYlBtb25seTVhZ2R1M2FXTEpzQldpYXhveVpzNUdZTUJjL3Ixc0x1VnlPdGkrMWsvSTZETU5nMWt3K0RIeW5sejMzL3NwVmF4QVFVUDI5aEZYZDVyQWhINEVnZUlMRlQwYVBlYUI5YkZXeGt1Mlg0ZmJKLzBENXFKSFZleU0wYno0RDk4OWlrRC9qb04zN1VsSlM4TzJjdWZEejk0ZWJ1enRPbmpoK3o4QldiaDlLU240Y04yN2NEUUc4ekk0RkExUXdaUUNBczFnczBHaTFuTnhHdzBBdXA1R1duZ2FaVElZNmRlckN6ODhQMDJmT1JvUDZEZURqNjR1RjM4K0hWcXV6QTdWeXdPYnY3NC9zN0d6azVlVkp3Q2FPV1lrZW00M1g1aGlTMmswakVBUmgzck5uei9KT25UcjlqeUNJcUtjRjJJNGRPNG9PSFRwSnpZS3Z2UElxamgzN0crMWUvbjlJU2ZrSEV3VkZvUENJeUJyZmwwNmR1NkJUNXk3bG5vK01ySWUvRGxhdVk5cTZkVXlGRjY1Q29jQ0V6eWZhUFRmd3c3aHk3MnZSc2hWKzJiQ3gzUE1Sa1pINGJwNXp5aWlLb3JEL3dPRUhlc3lxc3MwN3JkZjltazVYRFgyU0RJZUNtWWVrUDQzTFR3UExUNWQ3MnljMnJMbE5tMGFoYWRQcXVUdzVqanZ6eHg5L09CWU1iSE5yWmltM1JoQ3NRUG5OV2ExV0RnQ1VTaVduMCtta1dkQ2lvbUpjdW5nUi92NEI2TkN4RTgva0lVd1krUGhXUGhwV0xqdGFxMWF0Y3JrMjBXTno4TnFrY0pSbFdWdlZlSWJqT0JLQXRVdVhMdnJzN093ZnZMeThGajVOWHB0dHo2dkFZeWNsbkd1eUlkWmxqNjlSRklXaUl1TWpRV2pnN2UxOVR5bVN0TFMwald2WHJqVTZBVFdUSGFqeG5Hc3NRWUFqU1pLbjlwYnpQV3JpMkpTQ3B1SHQ1WVg2OWVzTHRFUys4UER3Z0krUGo5MWt6cURCemdQQ2N2dzY3dTd1Y05iYlZrSGpMaWZTRzFYVXRPdnQ3YjNkWXJFc2ZscE8wT2JOVzJEWHpwMG9LU21CeFdMQnRxMWIwRUxvMFdyYU5BcmJ0L0Vuek9WTDFkUC9wRktwWGFod2wydnpNTmVzb20zNytmbWgyRmh4bFowTDk3aC9qNm9hdmtNMHRkbyt0MWhhV3JwNjVNaVJGMjFDVUpPRHQyWlhNQ0FJZ2lPRVpuOFpyempGeWVVeVlSYVVsbVpCK1NGM2dTWFgyeHYrL2dHU2R1bGRlV3dBWDBnUXZUWmJxbkJIcjgyMmlDQjZiU3hmQm1PRVNpbEpFQVIxNk5DaFpXM2J0bjJlSUlobVQ5S0ZNK0NEZmlBRTdqVmZYejhrSkM3QTg4MmJvMVBuTGhqMElWOHdhUFBpUzJqWDdtVUF3UEFSby9EbHhNL3g2NGIxQ0krSTRCT21UOUNkL2xHeUltTmhoYTBMNUVOYXN5SmpJYWdLV2tnQ0F3T1JucDZPekl4MHFBV2lCVHNiR2dVdU1mbWVaMGE1Y0E5Z2FQVmxoT3JValpBRzRUbU9PNzFuejU2OVR2SnF0dTBkamtVRGZuUktISnVTeXlDWEM1NGJMWTVObFEyNWUzbDZ3Yy9YcjhveWxVNVhXUzZYSXpnNDJLNklZRXRwSklhaWp1MGZUZ29KVmdDV2R1M2FwV1ptWmk3MDhmRlo5RGhlSkZvbitZOXRmK3lxOFAyOTNuNm5YRElUQVBMeWNqRno5cmR3YzNQRG5qMjdVVkpTVXFWdDNTbHN5TTdKY1FHYmd4bU5oZkR4OVhINm1vK1BON0t6SC95YUdZMkY1UWdCYksxWnMyWXdHQXpRNi9Vb0tzeTM3NVBVQWhoYkcwRHQrOWlEYk9CeWR2VmRGMW9OdEZvTmJ0Njh1ZkhISDM4c3FDZ0VoWU95TzUrVkVaVHZPQTRjeTNJY3k0SmxHVENNbFg5WUxiQmF6TENZUzJFeGw4SlVXZ3hUYVJGdVhyOXk3OEFHQUFFQkFjak56Ylh6MnB6bDJtdzlOb2RDZ3VpMVdRaUNJSDE5ZlhlV2xwYk9WU2dVSHo5dUY0bXNtdTd3cFNXbEdETjZGSy84cnRWSzdSTzJkM1JuWGRTVldXaG9iV1JtR3BDaFQ0Tlc1K2JTUERBV3dtZ3NCR08xSXJTMmN4QUlDdzJGd2ZEZzFremNKNVpoRUJaYU9URDUrZm5aMGU4ODZwYWZuNy9rcFpkZXVsU1J0MFlRaEFoc0RFRVFqTWpjSWFwTzBUUU5sVW9sZUdkbGROOWVYbDd3OVMxVG5XclFvQUVhTm14WTlXdTJzaGRyMTY1ZFlWK2JvOWZHc2l6aFVFZ29WeVZkdFdyVjB2NzkremNpU2JMOTQzU3grUG41SVYyZmNkOFhRRlN6WmxpNHFPSlIycUlpSXdJRDdrN01oU0FJTkcvZUhOZHYzRVJPVGpieWNuSlFXdnAwa2srcVZHcVFGQVVmYngrRWhvWlUrdDRXMGRHNGVmTS9aR1psMWVpYXFWUnFVREladkwyOTd3aHFqNXRacmRaOUV5ZE9QT0FBYXFVaXNBbWdacDlYRTdRTVJDVjN1VnpPeWVWbHhKRzJBT2ZoNFFGdmIyOEVCQVNnZHUyN1d6dmlUb0lqdDI3ZHd2bno1M0h0MmpXa3BxYkNZREFnSnlkSEFqeEhMVklCOUFpV1pRbVdaU21PNHlqd1dxUTB4M0hLR3pkdXRBb05EWjBMNExGU0h6bDFLaGtFUVVDajFVRmR6WGY0NGlJampJVUZBTGhxSjVwMG1jdHF5TklQSFRvME95WW01cFlBWkNYZ05VS0xZSzhQYWl1bHg5aDZhd3FGZ3BQMFFUVzgwTEdIaHdlOHZHekVXZXJXeFRQUFBJT1FrSkM3aTdMdTlJYVFrQkJKVU5reDErYlkraUhLWW5HODJVNGtXSG5uZ2lERHdzS09GeFFVSk9wMHVxbVAwMUZzMWl3SzZlbnBNQmd5VVZpUVZ5MHNIQURmdnlTVHlSQVVGSWlBZ0FEWDVlS3l4OEp1Mzc2OUtpWW1KbFVJTThYUXM5UkpDR29WdkRWcDBGMGlqUlJDVVZ1YWIxRy9RQXhGYTlXcWRkZWdWaVZnNC9NNG9VNXpiVTU2MnNSQ2dtTnZtemh1WlNFSWduSnpjL3ZaWkRMVnBXbDZ3T04wTUFNREE2dU4zZFpsTG50Y3pXZzByZzRPRGo0Ris5WU94eERVWWhPQ3NzNUMwSXBBalZkMTkwRlFVQkJDUTBQdmFSK3JwQk9uMCtrUUVoSmlSMjlreTdnckRxa0svVzEydlcyQzF5YjF0b2tMc1d2WHJpVXN5KzV4blNZdWM5bGpsVmZidjNEaHdqMXdYZ0dWUERZNHpJTUs1SkdjTGFqUkFzVzNHSTdxZEtJb0M1OVhDd2tKdWVlSkRObk5temVyam9JOFZaSFQ3bm54T2ZGMTRTRW04RmloQTU4UXdlMlZWMTVKTzNEZ3dQY2hJU0doQU1KZHA0ekxYUFpvRzhkeDEwNmNPSkgwNmFlZkZqb0pRY3VCbWlDQWJDZW5aNHNmRmVFSUwrUkNnbVZaM0EwKzJRSGIzYmg2dnI2K1RpY1JiQVNXWVVNZlRwaE1KaEFFQVVHNlQyb0JJZmhmUkxacDArWkVUazVPZ3FlbjUreXFoc1V1YzVuTEhvNnpkdTNhdFRWdnZ2bG1xb08zNWl3RXRkcTJkb2pocDhEdktCVU10RnF0WGVncFZqOGpJeVBSdUhGanFOWDNQaUZ5VjJDaVZxc1JHaHBhYm9hMGd2bFJqbVZaUWl3a2NCekhDZ1VGMjZrRTBzdkxhM054Y1hHUVNxVWE0enAzWE9heVI5T3lzN01YaDRlSG43WHgxRXB0SHdSQm1HeEJ6VEVFRlNRR3l1WFZiTUhOVjlEV0RRME52UzlRdTJ0Z0EvZ0Vla1Y4YmM3R3JNVEdYUUhjT0dFcVFjeTNrUURJVnExYUxUbHg0b1MvWEM3djV6cUZYUFlVaDNyUTYvWEl5RENBWVJnWWpZOEdRM05wYWVuUDc3NzdybTIvV3JrUWxPTTRDZFE0am1NRlJseU9aVm1PWVJnN3ZqOHhzaE1mWXBWVW9WQkFyVlpETHBmajBxVkxEeGJZQUNBOFBOenBxSldUYVFSTzZHY1RSNjNFV1ZMYkZoRGluMy8rSWZmczJiTzRmZnYyZmhSRmRYR2Q0aTU3R2tFdE9Ua1pIQWhwR3NML0VkZ3ZpOFh5NTA4clYrekt5Y214T0FFMTJ3a0RmbXlLSUZnQ1lQbDBGSy9lTGpCM2NFb2xMOFNpMFdqNW5qVjNEM2g1ZThIZlB3QzFnb01SWGpkYzB0RzRYN3VuYjZBb0NuWHIxa1Z3Y0REOC9mM2g1ZVZsVnlsVktwVzIrVGRPWkFLeFZiWVMzRlVyK0JZUWMrZk9uVk12WGJxMGtPTzRZNC96Q2JwcDB5WW9sY3FLRXhWV0swYU1HQUUvUHorNHU3c2pMaTVPVW5keTJkTnJlcjBlSEFqNEJ3UTlNbU54TE11ZVBIVHdZTkxFTHlZVU9PVFVTb1JIcVIyb1NYUkVKRmUrQ2xwK3VrRG5wb09IaDZkRVJWUTdOTFJhUU8yZWdRM2dGVzNDd3NJUUZCUUVSMjFTSnlwWG9wcXpYUXVJQTdpWm5ubm1tWlMwdExRRkhNZGRlVkpQNEhIanhpRXBLUW5yMTY5SFVsSVNkdS9laldIRGhybXU3S2ZjRElaTWFIVnVqOHorY0J4MzlkeTVjK3Y3OW5rbnd3SFViQ3VnSmp0UUUzcldTRkthQjRWY0p1Zmt0Q2gwcklCS1pUOWw0T1BqQS8rQUFJU0UxTDR2N1lWcUF6WUFDQTRPUm1ob0tBSURBeVgrdGtyQURiYjliUUovbTBRbExqeE13Y0hCQjNKeWNoSUFaRDVwSjI5UlVSSG16NStQMmJObm8yM2J0bWpidGkwV0xWcUVGU3RXSUNzcnkzVjFQOFhHTU13OWVXb1h6cC9EcUJIRHEzdDNzbTdldkxtNmErY08xMkUvMkc0SGJBUkJXRGlPczRpQ3h4ekhDUnhyRkVlUUpJcUtqTWpOelVHbXdRQUN2TmkwUnEyRzJXVENnYi8rd3BZdG0vSG5ycDN3OXZhdTlzYjMrL2I3NnRXcmg5cTFhMHZnNXVIaFlTZmhad051WWtncTlzT3h6a0pTQUNZZkg1OXQrZm41M3drTFdLUFdxbFVyVEpreUJTKy8vRExVYWpVaUlpTHd4eDkvWU83Y3VRZ09Eb2E3dXpzR0RCZ2dxUzJOR0RFQ25UdDN0dnVPN3QyN1k5Q2dRVTYvdjJmUG5tamV2RGtBSURrNUdTVWxKV2pidHEzMGVwczJiUUFBUjQ0Y2NWM2RUN0VWRmhiYzArZnFOMmlJaVY5K1ZaMjdVcXJYcHk5djA3clZlWlMxZFpUYWhKNjh0MmJYMmtFeUpFbXhITWV4NERqSVpCVE1KaE5VS2pVWEVsSWIvZ0VCU0U5UGgxcXRnVnFqUVVyS1AzamwxVmN4ZXZRWVJFUkU0dkNoUTlXK252ZmRPMFlRQkNJaUlwd3FXam1yam9vdElBQUlBRTZMQ1J6SGtSNGVIdXVOUnFOR285SEUxL1JKTlgzNmRHemV2Qmt4TVRFWU5HZ1FldlRvZ2U3ZHUrUENoUXM0Zi80ODJyVnJoNjVkdStLTk45NjQ2Ky91MmJNbmNuTnpBUUMzYjk4R1RkTjJuRnh5dVJ6ZTN0NUlUVTExWGQwdUsyZloyZG1ZK3ZWa1pHVWFRSkFrQmc4ZWdwYXRYa0JxYWlwR2pSZ09pOFVNRHc5UExGL3hVMW02NDdOUGtaYkdhNWJuNWVWQnJkRmc3YnIxQUlDclY2OGlZZTRjNUJma3c4dlRDMlBHanBORWVnQmcrYktsaTcvNGZQd3BCMUFydFFFM3ZsZ0FXSVJybGlVSXNBUkpjQVJIZ09NNFRpYVRnV1ZaenQzREhRcUZBZ1JCUUorZURyVktEWXFpb0ZhclViOUJRd1RWcW9XaUlpTU9IVHo0TXJuRXdBQUFJQUJKUkVGVTZBRWJ3STljaFllSGx5T2pGTXU4VGdia2JmdmJJSVNrNG1TQ0NHNkVWcXRkV1Z4Y3JGS3BWQ05yOHVUcDBhT0hwSTM0eGh0dllObXlaWmc2ZFNwME9oMWF0bXlKWjU5OUZ1Zk9uYnNuWUh2NzdiZWxmeGNYRnpzdExDZ1VDcGhNSnRkVjdMSnk5dk82TldqY3VESDZ2ZjhCcmwyN2hnWHpFOUN5MVFzSURnN0dMeHMyNHZMbFM1ZzZaYkxkWjZiTm1BVUF5TS9QUTl6QVdJd2NOUm9BWURhYk1YWEtWNWd5ZFRvQ0F3T3g0NC90K0g3QmZFd1NCSWJ5OC9OKytPTHo4WWVkaEo0bGQ4aXJjU3pEaUZSbGtNdHBVWndGUlVWRk1BcHN4a29WSDcxcHRGcjQrdnBpKzdhdHlNL1BSMTVlM3FNSmJBQ3ZjR1ZMSVc3YnRHdmpzZG4ydFVuZ3hwYXA2aklDMEVuZzl0WmJieTFadjM0OXJWUXFhMHpHejNiNlFxRlFTUGxEMFdpYXJoYmdVYWxVTUp2TjVaNDNtVXdQUlovU1pZKytSYmRvaVlTNWN3QVFhTkdpSldaL002ZEtuMk5aRmw5T21vaHVyN3lHRmkxYUFnQ3VYNytHMU5SYmlCL0w5OEt6SEF1Tm9GMVFXRmk0N0oxZWIrMUgrYWtDK3hEVVJrSlBGRHRtR0lhVHkrVWM3NXlBbzJtZUxEWFRZSUJHbzBWMGRBdjgvZmRSdUx0N1FLVlVnbVZaclBoeE9YcjFlaHNObjNrRzQ4ZU5mWFNCRFFEQ3dzTHN0QkVjcHhGc2lDaGg0NjF4QXZpSmt3a1FtdjFBRUFTeFpjc1dZdHEwYVV2aTQrTmxDb1VpcmlaT0hwa1RIdnFLMUtTY1BXK3hXS3EwbmVEZ1lKU1dsaUl2THc4ZUhoN1NaN096czZ2TTVlNnlwd3pZb2xzZ2NmNUNIRHQrREN0WExBZE4wL2h5OHRkMy9OelNKWXVnVkNyUnArOTdkdWRwUUVDQVhkZ0tBRWFqY2NXRStIRjdVMUwrY2V4VGN3UTFPelpjb2RtZW94VUtqcGJMWWJaWVFKRWthSVVDRkVYQjE5Y1hkZXJVaGJ1N0J3aUNRR0JRSUhSYUhSaXJGUk0rbjRqdzhIQmN2UGl2ZEMwOHNzQUdBUFhyMXkrblJlb1lqanA0YlNLOUVXeHlib3lRZ3lNSWdpQysrdXFyUEY5ZjN5VURCdzRrRlFyRndJZDVvdEUwWGM1MXZuVHBVcFU0bzZLaW9xQlNxWERnd0FHOCt1cXJBSUNEQncrQ0pFbTBhdFhLZFJXN3JKeE5tem9GMFMxYW9uMzdEbWdSM1FKdjl1d0JsbVVyN2ZjNmVQQUE5dS9iaDRXTGx0amRpQ01pSWxCUVVJQy85dS9EaTIxZnd0V3JWM0hxNUltZnpwNDl1MmZqeGcwbE5wNWFpY1BEUkJDRVdjaXAyYkhoTWl6THlTZ1paREk1U2twS09IY3ZieWlWU3VoMGJsQW8rUCtYbWtyNUp0eGF3UWdMRFVOQVlDQVVOTTN2NjRFRGFOSzA2YU1QYkFSQm9INzkraEt3T1hwc0RNUFllbXkyNEFaaEZBTkN2czN1TzRjTkc1Wk4wL1NTZnYzNjRXR0NXOHVXTFRGNzltd3NXN1lNelpzM3g2SkZpNUNlbmw3aCs5ZXRXNGZjM0Z3TUhqd1lHbzBHc2JHeEdEcDBLSFE2SFdpYVJseGNIUHIzN3c4dkx5L1hWZXl5Y3RhbnozdVlQWHNHMXExWkRaWmxNZXFUVDBHU3BGM3hJRDgvSDIvMWZBUE5ubjhlWThlTlIrSzg3MUJhV29vaGd6K1V2aWR4d1EvUTZYU1lObU1XdnZ2MkcveXc4SHZRTlAyVGg2Zm5ueHZXLzFJRSswS0JiUU91eVhFT1ZPcFhveWdRRElPU2ttS1VscFp3YXJVYW5sNWVVS2xVcUZlL1BtN2V1SUdqUnc5RHA5T2gxOXZ2SWlRNEJQWHExMGY4K004eGVmSWtXTXdXaElTRVlNelkrRWNmMk1SY1VyMTY5ZXdxcExhNU5pR3ZWcTZZQVB0S3FTMjRFUVJCRUhGeGNaa21rMm5Sd0lFRFdhVlNHZmN3VHJUWFgzOGRJMGVPeE9qUm84R3lMUHIxNjRjQkF3YWd0TlI1WjhxR0RSdHc0OFlOREI0OEdBQXdlL1pzV0sxV2RPL2VIU1JKb21mUG5wZzdkNjdyQ25hWlV3dXBYUnR6NTgxM210YjRaY05HNXpmVFgzNnQ4UHNhTkdpSWhZdVd3R2cwcnBnMWM4YWVaVXNYVndScWtxY21naHBKa2d4UVJob3BveWhPcmxTQ3BoVWMzM3dyaUxLb05YQnpkMGRrWkNUOC9Qd1FGRlFMWVhYcW9HNTRPSlJLSlo1N3JqRitXTFMwUnRmdGpwb0g5Mk1aR1JrNGQrNGNybHk1Z3RUVVZPajFlbVJuWjVmVFN4QkNWMElBUUVKZzRTVTRqaU50TkJQa0hNY3BBQ2duVEpqZ0hoOGZINnRTcVlhNFRuMCtVWHpqNW4vSXlja0J3ekFvTFhrNlI3U1VLaFVvaW9LWHB6ZkN3bXBYR3E1eEhDZXNXVGFzMXBwYk02VktCWmxNQm04dmI0U0ZWVXdSdG4vL2ZvUkhObmdnNjFSWVdMaHNRdnk0dlRiaHB6TlFzMlhzc0lpTUhXSnpQVVhKT0lIZW13YzFwYjI0c2Fkbm1jcFVhRmdZNnRkdkFGOWYzd2QyTHRRb0I1cS92Mys1NFhnbkZWTFk1Tm1rU3Fsd3dkcjJ1SW1GQlV5Wk1nVW5UNTc4WWNPR0RXYTFXbjNQclNBZE9uVEFuMy8rK2NoY21IcTlIdjcrZHpmNmJES1pjZWJNR1ZBeUdYUnU3aTc1dlNJamN2TnlrWFV5RTAyYk5JVllvWE1FdFJNblRvS2tLR2gxTmI5bVJVVkdaT2ZrSURNckU5RkNzM1pGZHJ1Ryt4a0xDZ3ArR0RwazhQNUxseTZhS3dNMWxGVkFKVDFRZ1RoV1VKb2lJSXhPU2F3ZEpDVlFmMU1VNURJWnhQbFF0VklGczhsVTQ3L3RnUUVid0l2QmlPQldXWFZVckpBS3ZXeWMxV29Wd1kyeERVdEZjTnUrZlRzMEdzM1N3c0xDVXExV094S0E4bTczYmRldVhZLzloWnl1VHdjbGs4RS9JQWd1QXpRYUxUUWFMVEwwYVVoTFQwT1lFeUxWNnpkdWdxU29CN1ptdHZ0MDgrWi9DSzFFaHErV1RadFJOVnRwZG5iMjRsWXRteDlHZWZiYmlqdzFLd2lDSVFDR0VEdzFHVVZ4TXBuZ3FZbEQ3V28xdEJvTmRIYWtrWUdvWFRzVWtaR1JDQTBMZStEbndRTmhyUTBQRDY5SVlGa0NPSnU3cVpScnMxcXQ0bXRPd1EwQWREcmRxdHpjM0dJUEQ0L2hBSHlmdGdzNU95c2JXamQzRjZJNW1GYm5ocXlzYktmQWxwT1RBOTFEV0RPdHpnMVoyVm1WQWxzTldaWmVuNzQ4K3Ztb1U3Q2YvWFQwMHV4QkRRS29FU1JIRWlSSGtRSmJCMjFER0NuTWYyb0Z2UUkrQlBWRHJWcDhYdTFoZ05vREF6WSthZG5BS2JBNWVtMmk1eWFDRzhBUENGY0NicHlucCtmR2pJeU1JbDlmMzQ4SWdvaDRXaTVlanJ2MzRlbW53WFBMejh0eCt0ckRXak9OUm92ODNKeDcraXlSbkFsaWZqSnc1ZTY2OURsd1YyK2FzbGEzL20veStUdDRhcVp5b0VZSW9FWVNBZ3V1REhJNXpTbG9rYWxEQURXSkJkY0xiam9kTE9aUzVPVm1Jek5EZzh5TU5LZnJFRlluSEc3dTdvOC9zQUZBbzBhTnlvRmJCY0FtZ1p1WWNLc0kzTVMvL2YzOS83aCsvWHBCN2RxMTQwaVNqSzUrRU9IWlRRMEdBNndNQTJOaDliQ2JhclU2eU9ReStBbTB5SGQxc2hOQVNZbUx5NjBpSzZtQTUrNWhGbGZ1K1hnbEpnTlg3dzdVV0hBbno1WGNXdDg1ZGZaMWxKLzl0Ry9wc011cGxRYzFtUUJxdElMMzFCeUxCYUxJc2RWaWdvZUhSNlhLN1VWRlJ0eTRmaFdObXpaN01vQ05JQWcwYXRTb1FxL05HWmpZZUhCT3dVMzRYbzdqT0s1T25UcUhrNU9UODU1Nzdya0JGRVYxcms1UVMwNU9CZ2dTR3EyT1p6ZXRSbTNqb2lJajB2VVpTRTlQcjNZbCtGMDdkMkQ1c3FVd0dESVFGQlNFbGF2VzR2TGxTNGp0WDhiQ1BqWitBcnAyN2VaQ3drZllpTHNFTlF2SC9IbXc4R0pTbjR5RkdUYmhwK1BzWjRrQWF1WnlPVFU3VUpPREZnU09sUXBCTGsvaldBSDFRMkJRRUl3RmVaV0NtdTA1LzBTRW9xTEo1WElKM083Z3Nkbm0yeW9DTjNId2xoTkQwNmlvcUhNYk4yNmMxYTFidDB5YXB2dFd4ejdyOVhxQUlPSG5Yek5peVdKeTJhQlBRM3A2ZXJWeFU2V2xwV0hHOUtuNGN2TFhpSTV1Z1lJQ25ob25JaUlTdTNidkF3QU1qSDIveG83MXNxVkw4SHIzSG5ac0p1Sit6WjN6RFZKUy9nRk4wMmpmb1JNR2Z6UUVGRVVCQUZKVFU1RXdkdzVTenFaQW9WQ2dZOGRPK0RCdXNQUjZUZGlkdHZsaXpBdVF5K1VnQ0JKaFlXSG9IenNBclZ2SFBKcWVLbXYrZVUzMm9WMWY1UDFXVUFtb2xmUFVCQUxZQ2tDTjcxVlRxa1FSRmwwWnFQbnhiUjFob1dISXo4dXUwZU5VVlNNZnhrYVZTaVVhTldxRThQQndCQWNIUzBMTXRseHVZck9mUXFHUXhGVmxNaGxuSThUTTJISzVDVG1DVWdBbGI3enh4dTBtVFpwOGF6UWF2eEZldnk4ekdES2gwZXBxZkYwME9qY1lESVpxKzc2TC8xNkFqNDhQV3JlT0FVM1Q4UEh4a1R4blFRcXR3cG5ZNnJBZmx5OUZUazUydWVjblRaeUFXc0hCK08zM0xWaTBlQm1PSGptTXBLUk5mUGpFc2hnN1pqVHExVytBVGI5dlFVTENBdXpmdHhlL2JmeTF4dmF6cXR0TVhMQVFtN2R1Ui8vWUFaZzljem8yL3JyaG9WeTAzajkyaDl2by8wbC9leVYwaGJKVEJBQlljNjFGMzdlK052SDNML0oreTNmSXBSVUxqN0xxcHkyb2dXQmdVLzJrS0ZrNVVBTUhaR1ptb3JpNFdNcXArZnI2SWlnd0NLR2hZYWhYdno1b1lWUktQTSthTld1R2poMDdvbjM3OWdnS3Vyc3E5SW9mbDZQM083M3dkcStlMkxwbGM1azNhckZnOXF3WjZOZjNYZlR2MXhjSER4NTQrQjVibVplaVFhTkdqWndOeFpjTFMwV3hWZGhVUzRVVDBuRkNnUlBEMG4vLy9aZlY2WFFyTXpJeTlMNit2b01JZ3JoblVXWXJZMzBneVdhTlJndGp3ZjFUdUp3K25ZeEpYMHlBMld4R2NYRXh1ci9HaDVrOTN1aUpmdS8zcjlKM0hEMXlHSWtKODZEWHB5TTBOQXlqUHZrVWpaNTlWbnA5Lzc2OVdMWnNDVElOQnZnSEJDQXViakJhdmNCZmJNT0dmb1JiLy9GQ3R5TS9IZzZaakVKd2NBZ1NGeXdFeTdKbzI3WWR1cjN5Q2hRS0JmejgvZEU4T2hxWExsNEV3RmNzUGIyODBMdFBIOUEwamVDUUVMU09hWU4vLzcxUVkrdCtOOXRVcVZSbzNUb0c4dmdKbVBqRkJIVHEzT1doTUxObytqU0djVmt5Mkp3U0laemhydjFuemxyendzMnZ6c0plVGNvWm41b1FmaEpXZ0JOQmplVWRCdEttVUNEbmFLRlFrSitmRDBaUW1xSnBHbDVlWlo1YWFCZ1BhbzZTZVhYcTFBRkZVZGk1Y3ljVUNnVmVmdmxsWkdabTJwRkdPTTY5aW4rbnBQekRuMlBMVjhCa01pRXViZ0NpbWoyUG9LQWdiTisyRmFXbHBWangweHJrNU9SZzBJZXhhTnk0aVVRdG5wNmUvbkE4TnRGME9wMVR6ODNUMHhNNm5jNFp4YmlkTUl5b24rRGd1WmtGejYwVVFMRy92LzhmLy83Nzd5U0dZZmJlNjM1V1Y2R2dTdHN5M24vdW9XblRLR3hLMm9xUFI0eENyVnJCMkpTMEZadVN0bFlaMUs1ZXVZTFBKOFJqOEpDaDJMcDlKOTU4cXhkR2pSd09RMFlHQU9EbXpSdVlNdmxMZlBaWlBMWnMyNEZYWDMwZDQ4ZVBrMFJwRWhJWFlGUFNWZ0RBbkxuenNDbHBLeElYTE9SREJKSkU3ejU5NGVIaENZQ24wamw4NkJCYXR1UkpBSHg4ZkpDUXVBQktwVW82MFU4bko2Tng0eVkxdHViM3NzM29GaTFodGxna1FIN1FaamxyZ1BiRDUva2JMMnZkLy9mdGMvTmZ1UGxWQ3V3WmI0c2RIcVVFL3pBRGhBVUV5a0NOeit4d1ZxdUZrOGw1Q3YrOHZIekk1REtvVkNyVUNhdURxR2JQdzh2YkcxcXRGcjYrZnJ5bkZoYUcrdlhxUTZ2Vk9sM1h0TFEweVZsaFdSYWVucDUyNzFtNlpCSFdyRjRGQUVoSitRY2ZEeDhLQUxoeStSS2FSa1ZCb1ZUQ3pkMGRMN3p3UDV3NHp1czhuVGx6R20zYXZDaWNUd1RrY2hxWExwVWRoMWt6cHo5Y1lBTUFkM2QzQ2R4Q1FrTHN3TzBPRk9PMllTa3JoS2JpblVvRXR4SUF4Yzg4ODh5cG4zLytlVXBwYWVseVZ4cjZ6clpsU3hMYXZ0UU9yVnZIUUtGUW9IT1hybWpRc0NGMjd0ekJoMExlUGxpMmZLVWtsZmJxYTYvRFlqYmoxcTMvcXJ5TmMyZlBvbVA3ZHVqWHR6Y2FOR3lJRjl1KzVQUjlDNytmRDVWYWphN2RYbmxndjc4cTJ5UUlBbDZlWGpEV2NCSzh3aHZneWpOUWRZNUFpU2UxT3VIWDVTdTcvVGJtbGdPb09RSmJDUUdVQW9TWmY4QktDS3BTSk1DUklEaWFwam1TSkZGU1hNd1ZGQlRBM2NNZE9xMk9uLzEwYzRPN3V6dFVLaFhjM056NG5Kb0Fhcm9LUkZob21nYkRNUEQyOWtaTVRBeFlscFg0RGtWNzU5MCsyTHQzRHhMbWZZZkpYMDdDMEdHOGZrUGQ4QWljUEhFY1JxTVJCUVVGT0hmdXJIVFR6OC9QaDFLcHhObXpLZmhzekdqUUNocjUrZmtBZ0tUZk55RThQT0xoaGFLMjV1SGhnVWFOR2xWNkVvbi9GeDRjUVJDRXhXTGhiT3NNTE10eXR2MXRZbGdLZ092ZHUzY2FnSVRzN093YlhsNWVnd0RjYzRiK3dvWHppQnNZaTJYTFZ5SWlNaEpMbHl6RzVxUk5rcGRTa1gwMzV4c2NQblFJT1RrNW1EanBTN1I1c2UwakNXeDZ2UjRSRVpGMno5V3VIUWE5bm1jeDBXcTErSFBYVGt5WjhpV01oVWE3TUtLcTF1alpaN0h6ejcxSVQwL0hGNStQeDdLbFN6Qmc0SWQyNzFtNTRrZjgvZmRSSkNRc2NNcVpWeE5XMVcxeUhJZWMzQnhvSDFJUElWZGtTYjg4Zi9lcWhzZUduTUl4aWZ4UkJEWlRCYUduQmVCRXBYYUdBTUVKd0FZS0JDZVh5NkZVcXJpOHZGeFFsQXdCL2dGQzlWTUhOemMzZUhsNVFhL1h3TlBMU3dnL0c5eXhGMDBNUnc4ZE9vU21UdWlKdEZvdEJnMzZDQ05IRE1NNzcvWkcvZnI4dkd5VEprM1JzVk1YREJzNkdPNXU3bENyMUZDcFZkTG5ObTlPUWtsSkNhWk5uNFY1MzMwTEFNakkwR056MHU5SW5QLzlvd0ZzQU9EcDZXa0hiallnVmc3WXhHT0xzaVpld21hdVZBUTZhYTROQUN1UzRubDdlMjg2Zi83OGpYcjE2dldqS09ybGU5MWZ1VnlPdi83YWo0aklTQncrVkRYTzloRWpQOEdJa1o5Z25NQmcrcWlhdjc4LzlBNVVUTGR2cHlJcWltOUZPZkRYZnF4ZTlSUG1mRGNQd1FJUDNZc3hMemk5SVRtQ25hbTBGTnUzYjBPWExsMmhVQ29SR0JpSTl1MDdsRXNBYjFqL0MzYnQzSUc1Q2ZOcnRKSHpYcmQ1L1BneDBISTU2dFd2LzhDUGo1V3g3dnRiZjM1enR4L2pVMUdKT3J0OWdZQ1FldFFBZ2lVSmdpVkFjQ1RIZ2dMSnlVQkNKcE56K2ZsNWNITjNCMk8xd21ESXdMUFBOUzZiS1BEemhWdnFMZmo2K3FGKy9mL2YzcG5IUjFYZSsvL3puR1gyeWI0TXlZU0VrSVJjdHVDbHdyVmlYUzR1VkZzcHVLK1hxcTAvL2ZXNklsYTlyYlYxQlpjcXlxMTZSYXUxZXVVVmJkVWY5ZDY2d3IwZ29sR0pDWVFrSkNRa0lTR1FaU2FabWJNOHZ6L09lVTZlT1psSlFBRkp6UE42SGVaa01wTVp6cHg1bjg5M0wwZnFLTWVJTlp2OTdMUFBBQmp6aU8yZHFCc2FHdkRBL2ZmaW50L2VpN1hQUFl2SmhVVTQyMVRLbDE1Mk9TNjl6RWhzdU9icW4yTHExQkxMeW5PNzNiam50L2RDRUFSRW8xR2twcWJpclRmZlJIK29IOWYrL0pwdjN4UzF3MjNtekprb0tTbEJRVUZCM0ZpLzFOUlV5K2ZtZHJ1WmFVclozRktiV2NyOGJvck5OQjFncHVtcVZhdnVIaGdZZVBMcnZ0ZC9tRDRESDMrOENYVjFPeERnMGpNKzNyd0pLNWJmWXYzODZDT3J2clhvMlloZkRyTzdNUUJRWGJmYVNnSEEyZWY4Q0I5KytENjJiUGtZcXFyaXZmZmV4VmZWMjNER21XY0NNQWFNRUFJSW9vamUzaDdMUjBMMStLRFBwTHc4Yk42MENZcWlvTXVNOWpxY1RyejR4eGZ3eWlzdlExRVU5UFFjd0lZTkgySDI3TmxEcHZDYmY4VWJyMWZpc2NkWEg3VStkUWY3bXRGb0ZCOXYzb1FIN3I4WFA3LzJ1cU1lT09qVEJwKzkvZkhmclQzN2IzZU1abm9PQUlpWTA2UmlBQlJDeklIR0ZMb2dpVlFrQXBVZ1VCa0NIRVNraEFCK2Z3cnk4NE9ZVnY0UGNMbmNjTHZjeU1qSVJFNU9Edkx6OHBHZWxvNjh2THhSb1FZWUVWUW1SQndPQjlMUzBvWTFhZjEwNnllNC9aZDM0cFJUVDhNamp6MkJtcStxNDRLSGlxTGdwUmYvQ0VLQVdiTm1XejVrMVF4azlQUWNRRU5EQThwS3kzRFYxZGZnbFZmWFllMExMeDQ3aW8wM1MyZk9uRGxNc1kyd1VXSXNFRUtzTnVPbWtxTmNncS9PZXJRRDBHKy8vWGI5OXR0di80K1dscGE2L1B6OGZ5R0VISGNvNzlNaHkvQjZQSGp4ank5Z3dVa240YXZxYldQR2gyWlAwSDN3Z2Z2dzRBUDM0ZlF6enNTLy9lcHVsSmFXNGRlLytTM1dQTFVhSGUzdG1GeFlpSWRXUFdKTk0xcjB3N05SWGIwTlZ5MjdBcUlvNGR6RlAwRnBhUm4yMjhxRmJyNzVWcXhhK1pCeEpaNDhHYzgrOXdJY0RnY2VmR2dWVmoveGU3ejZ5cDhoeXpKT1B1VlVYUGt2UHdWZzVDbXVmT2dCU0pLRWl5ODhMOTVNZk9sbEJBS0hQNWZ3WUYvekY5ZGZCMEtBd3NJaTNITHJiVWMxajAwSC9id2hzcmZ5bEpiNzZ0QTRsT0prVTJyV0xjRlFIelVBUmlVQmlBNVFLZ0JVcElSS2dnQlJBMlFpVWlja09OUFNoMm8vZlQ0VUZCUU01YW1aZ1lJZE83WVBpMzRtVzAxTlRVaExTOFBDaFFzQkFKOS8vdm13bVI4WFhEZzA3Q2d6TXhQTGJ4dWFmN0J4NHdZOC90Z2pxS2c0RGc4OHVNcUM1S0lmbm8yNnVqb3N1OUpRYzcrNDRjWmhDbHM2RnI5NHFhbXBtRFZybHRVT2hSQmkzZkw3M0gwVzNBQlFycXBCNTN4d2lVeFRyYUNnNE1QWFhudXQ3cHh6enJuQTVYSXRPOWozcUtncVR2dm5oZmo5WTQvZ2hodHZ4aC9XUEhYTUhjY3p6MXFFTTg5YU5PeiswdEl5ZkxSeDVEbW1KNTY0SU9rWDErbDA0cTUvKzNYY2ZkZjhiSGpmejNuei95bGhNOFNTMGxJODl2anFoSDliRkVWOHVPRi9qK3B4T3BqWEhPMTRmZFBsOXlmUGt4d0loLy8wMnI0UDM3L3JRR1VmWjNyR0VnSE45S2NwQURXZ1JnMmdFUXFkZ0ZJQ1FrVVFLaW9hSkFBeWtReW9RWWJiNHpHU2IvMURQclhzN0J3anBjUE1VL3ZlOXc2K1d0R3EyUG1hYThHQ2s3Qmd3VW5EN3Bja0NiZmN1bnpFNXg2VFlHTWZOQTgzKzVZQWNCYmNGRVdoWm9VQ0gxU2dYS1VDVTI4YUFPMzg4ODl2QmZCa2EydnJsM2w1ZVZjU1FrWnR3cTVyR3I1LzRnSTBOVFhGUlhvRVVZUitCSnQzVHF6eHVVUlJSRGdjaXN1WDFIWDlpMTI3ZGxXZThvTVRkNEJMWnhvQmFqRXlwTkpZZHc2ZEFHYVFnRUFFb1JJRXlCQXNxTGtndytYMHdPUHp3ZWZ6V1Q2MW5CeWpUS3FvTUhHZVdxTGw4WGd4TUJBK3FNY2R5U1VkeXgrMjErdkY3Tm16SVlxaXRZMENPbW9xT0JZeHRRY1ZtRzJxMjAxVEFGb3dHUHhnN2RxMVgxMXd3UVhuZVR5ZW40MzIvakl5TXZCL2YvR3Y2T2Z5M1BMemc5amQzSVJZTEFhcTY2aXRyVUZoWWRFUk8wWnV0MmVDQ29kNGJMN05ZNWJzdFhOeWN0RFJzZGNDV3lqVS8vd2ZYM2orby92dnV6ZGtVMmw4NUpQZmVLaVpaaWQwRTJqVWlId0tWQUtCVEVUcWdBZ0haTGlJRExmREEwOUpEbnhtU2dlREd0LzkxcDZta1d4TktTN0Jyc2I2RWVIbThYZ3hwYmprdXdzMndDaS9zc1BORHJrRUppcFRiL1lxQmNyNTNwaHBxcHVtcVFaQVhiWnNtYlpzMmJKbjZ1cnFQaTB1THI1RUZNVkR5c25JeTh2RHFhZjlNeTYvOUNLa3BLUmFaVXhBZkxySFY5WGI4TVRqdjhmOUR6eUVxU1ZmLzBOT2RLV2ZXRURZSE5LYmFBbmYwakVMaC9vaEpra2htVFJwRXRyYjI5SFIxcnBoZDB2cjIwdVhMRzVLb3RKNG54b0xqTVdHVkpveFJjcTRjQnMxbjRJZ1Vra1NJVWxtaHc2SERBZHJFbW5PS0dEOTFDenpNei9meUZPYlZuNUlxVFlwcWFtb09HN3V0Lzc1SDlHWkI0ZHpVVXF0K1FrdExTM282T2hBVjFjWGVucDYwTnZiaTNBNGpIQTRqRWdrd28vL0k5emdacUxyT3B1bFFBQ3dlUXFpQ1hpWlV1b0E0QURnQk9Bc0tTbHhiZG15NVVlTnUzWmRtUnM0T29NLzkzYnN3ZHhENlBEUjFOU003djM3Snpyb0RqdU9iY2pLeWtSaGdrNFRUYzNONk80KytzZHNiMGNiTWpNelVaU2cwU1NsZEU5blorZC96cGt6NTVPT2pnN0ZCclZvSW9VR0s5cEpWQmlOSVRUVEVxRnNNeXQwSUVrU0pNbWFVd0FuQnphUHh3Ty8zNCswdERSa1pHUWdOemNYK2ZuNW1ESmx5aEd0SmY1T0t6YUx3SVJnNXN5WjdBTWFwdHpzdCtZMkxHSktDS0VtM01Bck4yYWF3cGhHcndGUTYrdnIxWXlNak1vbm4zenlrd1UvT0dWeFJrYm1sVWY2aWk3TDhpRTlwN0J3TXJxNk9yRzNvdzArZjhyRXpJTlFQMEtoZm1pcW1oQnFBRkJVV0lqT3pxTjN6Tmg3MGpVdElkVEM0ZkRMYjd6eHhrZVhYWGJaZ1ZGVVdwUlRhTlpFZGxPbGFTYk1kQTVtUnNkYjJkYksyODMxVWpQYmVXZG5aeU1RQ0dEeTVNa29LU2xCZVhuNW1ENFB4b3hpNDFkRFF3UHE2K3ZSM055TTl2WjI3TnUzRC92MzcwZGZYeDlDb1JEQzRUQUdCd2N0NVdiT1hDRGNHRUJldlFtbWVoTk0wRXNBSkU2OVdRcnUvUTgyVkV3cExsNHFpdUtaUitMLzFibTNIWk1DdVlmY3RvaFNpbDFOemRpL3Z4dWFxaU1TK1c0Mm4zUzdQUkJFRVZtWldTZ3NMQmhWYlRRMzcwYlh2bjNRVk8ySUhUTzMyd05Sa2hJcU5VVlIvcnVxcXVxLzVzK2YzOElCTFJuVUVwbWQ2cERaYVFITm1FMWdBczBvWkk5WGFGNnYxNEphUmtZR3NyS3lNR25TSkJRV0ZxS2twQVJUcDA0ZDgrZkNtQVFiQUxTMHRHRG56cDBXM0RvN08zSGd3QUgwOXZhaXY3OGZBd01EL0dpL1lYRFROSTJZdzV2Wm1EOEdOMmFlc3BGL01nODNBTTVQUHExYWtKT1RlLzdoNnRRN0VBNGgxTjhIZ0I3MlJwTVQ2OWhidXE1dmJXeHNmTHUwdExUV1ZGeDJsUlpMb05LVUJDcE41elpxV2pCSm9lWXgwem44MW55Q2RDUHlhVUt0dExRVUJXWWx5VmhmMGxoOTR3VUZCVENyRG1BV3hWdTNpY3hWMDBTbGdpQVFRUkNnS0FvbGhMQ0dsL2JBZ2hVcEpZUXcwOVE2QVkrZmU5ejdKU1VsbXg1KytPRXpVbEpTemllRWZHM2Q3dmY3SVVrUzh2SW1JUkFJVEh6cngvR2lsTzVvYjIvLzY4S0ZDNnRxYTJzWnpPeSt0SmpOaDhaRHpSWWNzSVlYVTFFVXFTaUsxdmRCbG1YS2V1NHhxSG05WGd0cVJwREFiRHRVV0lpeXNySkRIdjA0QWJZanRISnpjOEdhVVBLQVN3UTF6dmZHWmlFU1JWRkFDR0VKdlpRT0RUWFZiV2toR2dEVm5HK3FtUDQzNWR4enozM3JqanZ1K1BEV1cyODlQUzB0N1h4Q1NQSEUxM2RpSlFEYXJxNnVyci9lZmZmZFc5ZXNXUlBsVE1sWUF0T1QzU3AyczVPZGk4eVh4aWF5MjFXYUxNc1cwT3hRWXdFQ2xzNVJWRlNFc3JLeVllMkV4cndwMnRUVU5PYi9FNUZJQkkyTmpWYTBkTisrZlZhME5CUUtZV0JnQUlPRGc0aEdvNVpaYWhib0VsWXp5Y3hTTG1wS2JLYXBTQ21WbUluSytkOGNBSnkzM0hKTHloVlhYTEV3SlNWbDZUZHBham14eGhYUUd2ZnYzLy9tbWpWclBuMzIyV2NqSEtDVUpFQ0xjYkN6Unp1WlVyT2luY3o4NUt3VXE5czBVMnQ4b0NBMU5SVnBhV25tM004QUNnb0tVRnhjREpmTE5lNk8vWmoxc1NVNGliQmp4dzQwTmpaaXo1NDkyTHQzcndVNEZsUmdnT1A5YnN6M3hnR09tRjE5Q2ZPL0lUNDFSSVFSWEVnRU9NZnk1Y3Y5SzFhc09EVWpJK05jUXNpTWlhLzNkOUtIVnRQWjJmbTNYLzNxVjFYUFBQTk1kQVNnMlRmRk5EdFZEbVlhYjNiYVZacXAxT0tBbGlqeXlZREdVam1LaTRzeGJkcTBNWnZPOFowQkcxdE5UVTFvYkd4RWEydXJwZDRPSERpQXZyNitwRUdGQklHRnVNZ3BVMjhNY2hqS2ZVc0t1T0xpWXNmR2pSdFB5czNOUFZzUWhCTW12dTdqZjJtYXRybWxwZVhkazA0NnFicTF0WlhCaVFlYWNoQkFZOCt6QWdNQUtCL3haQ3FORHhBa0N4S2t4RTFuRHlBWURLSzR1QmhGMzlJZzR3a2YyOWRjUlVWRmZGdWpPQi9jS0FFR2RpVms2bzFxbW1ibHZjSE1kVFBWVzF4d3dlWi9pd0Z3TkRZMk92THk4dDRGOEZGZFhkMmNvcUtpaGJJcy8zamk2ei8rVmpRYWZXdjc5dTMvTTJmT25GMGN6SGlWRmtzQU5TVUowUGpnUUZ5U0xhL1NlTFBUNFhBTTg2Y3gwNU5QNXlnb0tNRFVxVlBIVlpEZ093TTJ3QWdxOEgzYlhDNFgrSlBBRHJkSUpHSUJMaGFMV1pGVEJqY3V1RUQ0a1grc1F3aU1mQ0lWZ0dJcU9BdHdBQnhsWldWYkFIeis3cnZ2dmpwdjNyd2YrSHkrc3dFRUo1QXdwbDBmcmYzOS9lKzgvLzc3bnkxZXZIaGZFcUFsZ3BveWtrSXpMNWg4bEI0c3BzV3RrSlR5QUFBVFRrbEVRVlRtQnVpNlRuVmRoNlpwVmw4eVJWR3NCSFdtNkJ3T0I4TGhNTnh1Ti9yNys5SGIyNHZ0MjdkaisvYnRoK1VZK1AwcEVFWEJTaG1aTUVXUG90K3RycTRPemMzTmFHdHJ3OTY5ZTdGLy8vNFIvVzVtS1ZiQzRBS1gxQXZUTkdXbFdYRkJCcHVKeXB1cU1nREhKWmRjNGxxNWN1WDhuSnljMHlSSk9tMENFMk5ucWFyNmZrdEx5Ly9jZE5OTnRYLzV5MStVZ3dTYWtnQm85cUFBZzVsT2lBQ2p4bE9nZ2loQ0VrV0lyQ1JLa2lFN1pEaGtCNHlwN0taU2M3dmg4WHJoOS9tUmttcU14c3ZLeWtKdUlJQmcwQWdTSEFsL1dwakx3Wng3RE9WZ2ppdXdYWFRSUlhqMTFWZHgvZlhYWS9YcW9YNWZyYTJ0YUdwcXdnMDMzSURQUHZzTTU1NTdMZ29LQ3BMNjNiaUVYcGgrdDVHQ0MyUVV3RWxKQUNjRGtCY3RXbFN3ZHUzYStUazVPUXUvU1Q3Y3hEcWlGOGdkUFQwOUgzejAwVWRmTEY2OHVKdURVaUtnS1VtQXBpWURtdGtqa0RKZkdoRUVpS1l2VFJRTm9FbXlXUm9sT3lBN0hIQ2FVSE83WEhESDVhZ1o2UnhaMmRtbStUbjVxS2lwenIzdHlKc1VPR1p5TWNlZEtTckxNdDU0NHcwODhjUVQxaFVxR0F4Q0VBUlVWMWNETURwMUJnS0JZVDQ0ZXk1Y0xCYURLSXBRRklWbGRaTkU1cW5OQjhjNmhRaW1pU3B4SnFwa252QVcyTmF2WDE4ZkNBU2FBYnkrYmR1MjhxbFRwNTdnZHJ0UEF6QlIxZjd0d3F4dFlHRGdnNXFhbXFwNTgrYnRaajdWZ3dBYXY2bW1RdE1TbVp3TWFJSWdVRXFwbVY5cEpOcUtrZ2hKWkxXZUVtVFpZU2cxRmlSd0dwRlB0eG41OVB1TnlHZEdaZ1p5c25PUmw1ZUh5WVdGMXF6Tkk3MjhQai8yN3QwN0FiWWp0UllzV0lBTkd6Wmd5NVl0bUQ5L3ZuWC94bzBiTVdmT0hHemR1dFVxOWpVbnpjY0JMaHdPVzBHR1NDUmlBYzVVYjlRZVhOQjFuUTh3SkFveWFBQkU4NG90VVVvWjJPeEtUcDQxYTlibkFMNEM4UHoyN2R0bkZSWVdIdTl5dVU2WmdOelJnOW5nNE9CSDlmWDFYMVJVVk96aTFWVVNvS2tIQ2JPRVFPTURBN3F1VTFtV01VeWx4Wm1lVHJqNGRBNnZGN0ZvRkZzLytRUVhYM0lKTWpPemtHT21jeFFWVFlrYlJQeE5WMjF0RGQ1KzYwMVVWTXpCNldjTUw1WDJlbjBJOWZjZU01L2x1QU5iUmtZR1RqMzFWRlJXVnNhQmJkMjZkYmpnZ2d2dzZhZWZJaGdNb3JTMEZCNlBCelUxTmFpc3JFUlBUdy9jYmpmS3k4dVJuNStQd2NGQlNKS0VuVHQzWXQrK2ZkYWdFMG1TYUdabUprUlJKS0ZRQ0pGSWhJcWlDTmF4RndBUlJkRUNuSzdyZ21sMmlHYmtWRFJQZkdhbVNnbEFKNVdYbDI4RjhEbUF0VjkrK2VXMDR1TGlPUjZQNTRTSjNMakR1M1JkcndtSHd4L3YyTEdqNXZqamorZVZtYzZCYVNTZ3FSelE3T1ltaTV6VFpFQmo2UnVxcXNMaGNFQmtIVGtrMDRKZ0tzM2hoTk0xM1BUMHA2Umd6bkhISVJpY2JLUnpGQVNSazNONG81NVBQYmthalkwTkdBaUhoNDFsNU5mUkhDeituUU1iQUN4ZHVoUVBQL3d3SG56d1FRREE0T0FnMXE5Zmo1VXJWMkxGaWhWSVQwL0g3Tm16VVZkWGgrZWZmeDZYWEhJSkNnb0tVRnRiaXpmZmZCT3lMQ01ZREdMMzd0M282dXBDYVdrcFpGbEdUMDhQOXV6Wmc0R0JBYVNtcHRKWUxJWklKRUowWFlmWDY2V2FwaUVTaVVEWGRTcEpFdUdpcU1TOFdnczJNNVd2YU9BM0huVFM3Tm16dnpDVjNLdnIxNitmTkhmdTNPbHBhV2x6WkZrK0FVRHFCSjRPYWZVcWl2SnhkM2YzbDVzMmJXcFlzbVJKTjRZaWtjblVXU0tvOFIwMlZOdHpkVTZoVWI0L0drdXdGU3dmbWhIQkZBU0JPcDB1UGo4TnNzTUJnUkRzM3IwYm1xcENsQ1RNbmpVYitjRWdLQVgrMzl0dlFSQUVwS2RuNEpISEhyZXNrRit1V0k2MnRqMEFnSjZlSG5pOFh2ejVsZGNBR0oxeG52ajlvK2p0NjBWR2VnWnV1LzJYMXBBZUFIanRQMTlGWmVVNjYvRUFjUFUxUDRQRDRjQ3FsUStPbVE5NVhJSnQ4ZUxGdU82NjYxQmRYWTJaTTJkaS9mcjFtRDU5T2dvTEM2M0hlRHdldlB6eXk3ajQ0b3R4N2JYWG9xMnREY0ZnRUtGUUNKczJiVUpGUlFWeWMzUGg5L3VSbFpXRlNDUUNuOCtIZmZ2MlFkTTB1TjF1UkNJUkFLRHA2ZWtRQk1FeVVWVlZoU2lLYk5ZQ2k2SVMwelFWelBzWTRFVHppeUtacWs2MFFZNEhuYlJvMGFKZEFGb0EvTDJpb2tKKzdybm5pb3VMaTZmNWZMN1praVI5RDhCRUsxMmJrRkJWOWRPK3ZyN3F1cnE2eHF1dXVxcTFwcVpHdHlrenpXWTZKZ01hRHpQK09ick4zTFFVbXJraEdkQll6elJDQ0Z3dTF6Q1Z0cWR0RDNLeWN6Qjl4Z3lvcW9ydHRiV1kvMDhuSUQwOUhkLy8vb21JeGFKNDlaVS9ZeG8zMy9UK0IxY2FCTy90d2MrdnVRbzMzWHdyQUdQTzUzMi91d2UvdSs4QlRKbzBDZS84YlQzV1BQVWs3djdOYjYzblZzeVpNNnp6c01QaEdITWYrcmpOWTF1d1lBRmVmLzExekp3NUUrdldyY041NTUwMzdISFYxZFhvNnVwQ1pXVWx1TWxXMEhVZDJkblpjTGxjYUd4c3hNNmRPNjAwRVVWUmtKS1NBcS9YaTRFQm80ZVgzKytIcG1sVVZWVU1EZzRTVlZVaHk3S1ZhMlJHVVZrK0VqWEhhUTFUY0thWmFsVTJjSkJMQkR2cGl5KytrT2JPblZzTllEdUF0d29MQzhXWFgzNTVjbWxwYVhGcWF1bzBXWlpuRWtKS3Zrc1VvNVRXeDJLeHJ3NGNPRkMvZmZ2MjVzc3Z2M3h2YTJ1cmJsTmxpZFJaTXBWbS9ZNGxZOXYrQnU4M2l6TTNlYUJ4Q2VCeFFHTUtqUkFDdDhjOWxNWmhtcDdCWUFGMjF1MUFXMXNiU2twS2NNbGxseUVqM1loNkJnSUJSS05SdU4zdVJDWTJmblAzcjNIMk9UL0d2SG1HUzJiWHJrYTB0cmJnRG5OZ3QwNTFlRzFEVmNyS3BxR3NiTnFZUHcrazhYcUNMMTI2Rkd2WHJzVnR0OTJHdDk5K0cvZmVlKyt3eDZpcWlsdHV1UVUvL2FreDA3Szl2ZDFxT1M2S0l0NTQ0dzI4ODg0N0tDNHV4dVRKa3pGanhneFVWVlZCa2lUNGZENXJpSXZYNjdWU1EyUlpwdEZvRkU2bms1alJVMnFMb0RLd1dWUHNLYVc2ZVIrRG5BQWpSWUF2d0JkdGdCdTIzOXpjTEo1NDRvazdBTlFEZUJlQXVHclZLdC9wcDUrZWw1K2ZQOW5uODAyUlpibEVFSVJwTUhyTGplVVYxWFY5Unl3V2EranY3Mi9ldlh2M25uZmVlV2Z2blhmZU9RZ3VKMndFbUNXRFd0dytwOHppekV5Yk9xTTJvRkcra3d6ZlljWU9OTFlCZ05mampROFFlRHpJeTh2SGpPblRjYUNuQnp2cmRxQzlyUTAzM25RTEp1WGxJUzh2RHp0MzFpVThPUC94N05Od3VWeTQ3UElyclBzVVJVRWdFTURhRjE0Yzl4ZTRjUXUySlV1VzRNWWJiOFRUVHorTnNySXlUSmt5WmRoanBrK2ZqbTNidHFIRUhLWlNVbEtDWjU1NUJoczNic1JWVjEyRlRaczJZZUhDaFZpd1lJR1Y4N1o1ODJhNDNXNzQvWDVycXJYWDY3VWlwdzZIZzVrVmxHOW9xV2thQkVHZ3FxcUNVZ3BSRkNtbGxKaEJCOEtwT0ZaNFR6aklDU2JraEFTUUczSC8xbHR2SFFUUURhQ0dNMzJGeXNyS3JQTHk4dXlzckt4Y244K1hKOHZ5SkZFVWc0U1FBZ0RIU3J1SENLVzBSZE8wUGJGWXJEMFVDclYzZG5aMjFkVFVkRjk0NFlVSE1KU2RyNDhDczJRS0xlRStCelBkRGpNTURRQ2l5ZFJaSXFEWml0YXRqVVhqQWNEbjk4ZVZSdmw4UG16ZCtnbW1UU3ZIcWFlZUJyZmJqWHQvZHcrbWxaZkQ1MHZ1Y2RpNGNRTSsvT0FEL1B2VHo4WWw1WmFVbEtDdnJ3OGZmZmdCZm5EeUtXaG9hRUROVjlYNDBZL1B0UjZ6YzJjZHFxdTM0U2MvV1RvQnRtTnhCWU5CekpzM0QzZmRkUmZ1dlBQT2hJOVpzV0lGempyckxOeDk5OTI0OU5KTFVWTlRnK1hMbCtQbW0yL0dqQmt6a0pXVmhZNk9Edmo5ZmlpS2d2ZmVldytSU0FTeUxDTTlQUjM3OXh1VHozMCtuMVd4d0U1U3Q5c05WVld4Zi85K3FpZ0tmRDRmSkVraWc0T0QwRFNOTWo4R1N4Y1JCSUVWMjRNQmJnVElXWUN5ZFIwWmFlT1RoNFVsUzVZTUFOakQvVjMyR3VUUlJ4LzF6Wm8xS3lVUUNLU2twcWFtZUR5ZUZJZkRrU0pKVW9vb2lpbUNJUGdJSVQ1Q2lKY1E0alpCeUJvQXNOY0NCd1pyYkJ5bGRKQlNHcWFVaG5SZEQybWExcStxYWw4MEd1MGJHQmpvNytucDZXdHZiKy8vOHNzdlE4dVhMeC9nNEVWdElLTWp3RXkzS1N4dHRJMTEwVWdBc2ppWThTQURTNmcxcDZUeDVpYURtYTJ0VUJ6UVdOODBwOU1KU2lsU1UxTnRyYnRUY2RaWlA4Uzc3LzQzR2h2cTRYUTZjZWRkdjRMUDUwTnJheXR1dnZGZm9TZ3g5UGIyNG9Memx1QWY1ODdGN2IrOEU2c2Zmd3lSU0FUWC81K2hDWktybi9vRC9INC83bjl3SlI1NzVHSDg0ZC9Yd09QeDRHYmI0T0dxeno1RFplVzZNUSsyY1ZkNW9Lb3ExcTFiQndCWXVYSWxicnZ0TmpRME5LQzQyT2dCS1VrU1hucnBKVngwMFVVQWdELzk2VSs0Nzc3N1VGOWZqMEFnZ0t1dnZocDMzWFVYQ0NIWXNtVUxycjc2YXRUVzFzTGo4YUM4M0ppdldGVlZoV1hMbHFHMnRoWi8vL3Zmc1hqeFlxdHFZZGV1WFdodWJrWkZSUVVVUmNIT25UdWhxaXFDd1NDYmxvWHU3bTZtMUNBSUFqdXhDZWVMc3lESDloTkFMZzUybkpvVEVvRXN3VDUvbTJqalgyZWtEUWx1N2Z0eGJyQUUrL3p0U0pzZFpQWXRtVW9idHM4Rzl5U0MyR2d3WS91MnhxVUhCVFJlcGZITklIdDZlakJwVWo2OFBpLzhmbk8rcDFuQW5wc2JRSDUrL2lHTndmczJWc1BPN1RqNTVKTW53RFpXVm05dkwvYnMyV1A1Myt6MXBteDRqTDJaSlZkekNtNE1vRlc4ek14VVBzakF5clc0c2kzK2N5STIwTVZCamxJUWdBNkQzU0grbkFoc1BPQ0VCRkFiQ1hBandjME9OQ1NBMkVnS1RVK2kxdXlPL1ZFaFpuczkzbS9HWUdiZGNxYW5mWEEzdFhkdFpqQnp1ZHhJU2ZFUGF3TEpGRnAzZHpjS0poZFp6U0F6TWpPdDRuSy9QMlZNZkUrT0piQ05HMVAwaEJOT3dPYk5tOGRjRUkrL3lLU21wakx6bEhKZEhBalgzWUVRUXVKVUhJeHhnY1R3MDBFQUNFa0VKVW9oMktCSFJnSGFTSEE3Rk9WMktHQTdGTE16R2VDb0RXZ2pBVXkzQXd3Z2xCQlFnSUFRQzJRR3pBUUJBakVoSmdvUStSSW90aG1sVUVOcVRaWWhDQVFDSVZBMURkbXBxY01hUWZyOWZoQkNFQXdHb1drYWZENC9VbE5TNGZWNDBkZmJoNzdldm1QK1JNNFBIbHZOYXNZTjJEWnQyblRVWG9zZjJOemQzUjNYeURJY0RvL1VxZGRTYm9xaVdNck5WRzk4RFNyaEZCemxsQnk3cFRaVGxjRkU1OVVkcjdJSUFVa0VQUTZTbzRGTUdBVm95YUJHRWtCOE5MVkdreWkzWktCamNOSkhlZzV6OXJPWnNwenpQNUVxczhHTVFCRFk3RnFCQ3NMd21ScVNKQmxnazJUSUp0UWNacUt0MCtHQXJ1dVFKQm1abVpsVzVRQnJCQ21LSW9xTHB5TGJuRVV3c1NiQWR0UlhRVUVCY25OejBkYldablhwVFdTZXNvNGhJd0dPM3hqWVJvTWNCemhvbWtZSmt4aERRSXVEalUzaHhVR1BTejBaQmpEVHRCMEpaRWZTeDJiN21TbXBwTUNqaVo3UGRjN0FzSDJEOWdiUUNBRUJBUkVJRlFoQm5Eb3pGQm9WQlFHQ0tFSzBRMDJTSUVuTXAyWkFUWFk0NEpCbE9FeXowNmdxRUNHS0FnS0JnTld1bXpXQ2xHVVowMmZNT09TQjJSTnJBbXlIZFRrY0RoUVZGVm1BNit6c3ROcVE5L1Qwb0wrL2YwVC9XekxBY2Y0M3E0TUlEemt1aWRpQ25HbWVJbjY0UGEvY0NFeEFZUWgySU93N25neFlOcFUzcWorTnNuMDZpbUlqMXMzQlFHNFU0UEUvRytZai8zZHNUbjhBb0xwT0lRZ0NESjRSYXZZL0E3R1VtY0FGQmtUVDdEUnZlWVVtTW9YR0FjMVVhUEhCQVRjOEhzT1hwaW9LSmsrZWJMWHJadE9pb3RIb2lGQWpWVjBnVDFZQjlUMkgvMlF1U1FPOS9qalE0N0lud0RZZUY2VVVIUjBkNk96c2hLcHBoMVRVRzRsRTBOL2ZiNW1qYkV2V3lKSnRsQUk2cFpBa0NVNm5jeVRBUWRNMHZwckJncHdnaUtCVXA3cE9UY0Rwb0JTZ29LejlLZ0JDVFBDWjMzZVlJQndPS2k2Z1JFYTVqZHUzZUhWdy9RenBJU3E1K0RlZjRIZGN6aFpsK2MraUtGclBZZWFscG1rUVJXa1l6QWlmZzJiNHp5eW9qZVpIazAyejArRnd3dUYweEFITjR4bWF2RDRRN2tkcGFTbHljbklRQ0FUZzlYb1A3Z1JiWFFVMDlCeVpFNysrQitUSkt0Qm56NWdBMjNpRVdsVlZGVUFFZUgxK2VMMCs1SDZOMWxLRGc0UG83T3hFZC9jKzlKaVQ2ZnY2K3hBT2hSQU9EMkJ3Y0FDUndRZ2kwUWhpcG5vYkdCeEVKRElJVlZHTXEzcGk4elJ1WTRwTlZWVklrZ1JkcDBTbk9xaXV3d0NjTVJxVlJXVk5BQkRaNFlCdW1ycU1SeXk2TjhRbkFrN05JWWw1eVlNU0IyR0NqZ0kyQWtLU0FpNE9XUEdQNDM0bWhKZWFvSlJhZFpqcy8wZ0lNU3BFSEE3bU82TU1haGJNREQvYWNMTnpSS0N4dGtJdXVOd3V1TjBlZUwwZWVIMCtwSmpwRzJucDZRajM5Nktpb2dJZWorZVF6aXR5cEtER3dXM0NGQjJIcTZPakF5QUNjbksvV2JkUnQ5dU53c0pDQkFLNTZPcnNRdmQrTTdqUTIydVpwd01EWVF3TUdEQ0xScU53ZXp5SXhXTG83K3VGSkVsd3U5MGptcWhNdFdtYUJrVlJJRW55VUpCaENHNUVWWTIvNFhRNnpjZVkvamhSaEs0YjFsczBHaldVaWloaXlKWkZITmdTcEFReGZtQW9ka0VUWGl5U3RhTm1iYURpMVpUMVBHci92Wm5ReklQTkFsZ0NwejhJSWRBMERRNkh3d0lhTXk4QndPbHd4cWRxaUlMMUdWRks0VExyTkYxdUYwUlJ3aGVmVjFsLzErUHhvS1MwRkhtWm1YSHBHM2FGNXZmN2taS2FpdlQwZEdSbVpDSTdKeHV0dTVzT0dXb1Rhd0pzWDN0MWRuYkI2L01mdHIvbmRMb1FMQ2hBWU5Ja00vZXQyMUp3L2YzOUNJVkRHREFWM09CZ0JORm9CQTVaeHVEZ0FIdyszNGcrT0g2THhXS1FaVWRjQWI4Sk9LcUdGQkJDNFBmN1RSVkhDYVU2ZE1wTVZtb01yeUVDWkVuaS9YU2N2MjdJRmNZQnovcUhETzBOZ3g4Yk5HS0RHMVZWMVlJVnBZQ21xU0NFUWhDTWFneEZVVUFFQVpKb3ZDZFZWYURybEJyRjRrTXF6WEw2MnphQkdDYW1wcW5VNVhJTnl6ZGo0T0toRmdxRkVBcUZVRnc4RlM2M0czczdPdERXdGdlelpzMEdVMzNmTzM0ZTB0TFMwTmZYaCtwdFg4THBjR0xHekZsd213ck40L1hBNS9XWkxib05oWmFSa1luczdPekRtbHliK2Z4aUtOV2Q2RnYxdndDQWpDZCtpSUczNmhCNXB6N3BjL3pYSFEvbktVWFlkNEhSanNoNytXeElVOUxSZTgrSEIvMjZveldiUEpiVy93Y2FMdGJ3dU9MVHF3QUFBQUJKUlU1RXJrSmdnZz09Il0sWyJzcmMiLCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRZQUFBRTJDQVlBQUFEcnZMNnBBQUJLb25wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXJaMXRsdVc0cldYL2F4UnZDQksvT1J6eFEydjFESHI0dlRjanMxeFZ0bC83clc2WHF5SXo0c2E5RWdrY25BTUMwTFgvOS8vNnJ2LzZyLzk2U212aFNybTIwa3U1K1YvcXFZZVhQN1Q3NTMvOS9QZTUwL252K1Y4c3YvNzAvUFg3MXg4L0NIeU52dkxuQi9YOStmcThmRC8vNHhkK2Y4WXovdnI5cS8zNlNXaS8zdWpYRDNqam55dndrLzN6K3ZORjh2M3c4LzBuL1hxanZuLytVSHFyZjc3VThldU41cThYbmt2NTlXLzY0N0ordnZqMzZ5L2ZxS3pTeW54UURHSEhKOTduditubkN1TFB2eS8vMXZQZndPdWVHUG56RTl0MXZ2eStKUmJrTDdmMysrdDkvM21CL3JMSXYvOTAvWDMxLy9qVDN4WS92TCsrSC8rMmx1WFhHdDNsWC8vZ3lYLzdmdnpqWThKZnpPR1BLd3AvL2NFWTZaOXY1OWUvMzdmYTkrMmZ1M3RUWVVYTEw0czZpLzM4Zmh0ZU9GanllSDZ0OEUvbDM4eWY2L21uODArNzMzdXk1ZXVlOStDZitmUW5zQ3ZmOWFSblBlL3pQZnQ4bmMva0VsUFlvZkkxaEJuaStWNkxOZlF3by91VS9PZjVRbzA5cnRqWXl4bjJ4ZmFsR1A2NGx1ZDhiaitmTjUvR0o2K0hsNGFITjN2NGxYLzd6L1hmL2ZCLzhzLzFmZE1sZXU3MngxcHhYVUc3NWpMY09mL0xxOWlENS91MWIva3M4TzkvZm0zLy9TZjd3VlRad1h5V3VYR0Q3ejErM21MazV4KzJGYzgrUjE2WCtmcXp5YzlWMTY4M1lJbjQ3TXpGUEpFZHVNc1Q4MU9ldTRaUW40ZDFiR3pReTVXSG1NSmdCNTZjdytJaVE0cXhoS3VHRnZ4c2ZxYys1N1VoaHhMOE50akVSdVJZOEszR0RyMXNWa29aKzZtcFlVTnZqam5sbkV1dXVWMjU1N2ZFa2tvdXBkUWl5TDAxMWxSekxiWFdWbnQ5VzJ5cDVWWmFiYTMxOXZiUUl4aVllK20xdDk3Nys0YnI1WU5lM3V2bDlTL2ZHV0hFa1VZZVpkVFJSaC92eEh4bW1ubVdXV2ViZmI0cnJMaUFpVlZXWFczMTllN24yaURGVGp2dnN1dHV1Ky8zdzlhKytLVXZmK1dyWC92NjkvNnhhNzkyOVovKytSL3Mydk5yMThMWktWOVgvOWcxdm52Vit2c3RIdUVrdTJmc1dFZ1BPMTdkQVF3NnVHZDNlMUlLN3B4N2R2ZUFVK1RBUldiMzVscVBPOFlXcHYyRS9EMS83TjAvZHU0LzJyY3J0LzlvMzhML2JlY3V0KzcveDg1ZGJOMC83OXUvMkxWbG5KdG54MzY4MERXOUk5N0hhOTdBRlgxamZmeTF4QysvOGF2ajI3TnVZZElmLytjL3ZWN3ZaNy8xNFY3THUrcFRjMGlsdld4dUhKM0xHSFBpVjJsRUwyVy9pWmVNSGRMWFdueTVnOW5XTSs4OXJqQm5ITHUySis4NmRzeGZlNEc2Yit5MVY1NEplOXFUejFxMTMydnQ4WEFmTSs5M2pUVkNHbnp1RS9vTXFWNVA0NjBtNjRYMTNYdlhtUVkyc0wrWTcvNThOZTM2OExPWTU3M21IcDN0SFBVZVQ4cGpzMk9BLzhzdVlsVFhUS0xWcythcUw4UWt4MDE0ZmRmTE9uUXVNZVRCbmxiV0o0elNBZlkzei9xTlZOL3dMU3hyZmlYT1hFZTZJRFYxM2l4R2JRbUQ3a1NaM3N2M3NNRmYzU3pHSFB4eHhhL05MOXhjbnY0em9DRjE4cTZ4em9CenpxOWRiZVdTMG1LZFpyNUh1VnNQN1BzY1FIN2ZxNFUxUzF4aHJQdEwrVnNZMEZ6NFFZOTVyeHBxM3lXd0VTbVhxN1NIUGZscTV1YU1OK3U3Mll6TzY5ellmN1A1ejh5cmNUSEFRU3o5dTBjcTF6RGd4YnVVdFFhd3dxMkZ1UEVqREJPempXc1V0amx5S1hQRS9QSUpCY2QvQjUrODQ2aGN5b01oOEd2WEdNZXEvanVMK3hjL202V01XUGFZOGNPcDkyemZGZFlxSGZlT2liRE9QV01iS1V4WHBzYzJWL2JXMWo2MytYd3ZZUC9IVzJNdEliQWhSUHIyZkJlaC9RRjlGbUNDS2ZXNXVjZit4bEF4NG1lWHdYS1g4UlUrdlJSODh5UENZeWZ0VGZlYldudDVUOHg5cm5XMTh1VUppSDNIbk1xTERYNy83Z3ErZnZQaXI2VnZ4L3B4UVRHTnNIdGJvT1Axc29QOHRYd1JBTUs3dVVwUUROOEhGVWJuZm5NQVNjU3MyT1YrNzdOZWJDQWFCUmYvNW85WDc2OWVVaDR1dnRmdmlkL1ovZjAxWGVGbGkyckJXcDVaZ3VheTg0UW1ManhrOC82c0lleUdUMzIwbFRCaHRZU1R4SWNrUFF4My9QYWo1dzVzYW9SbnZQVmpLN2orWTVjZE1LNndCUmN1MWRiZkwvTGhrWGU0TmxHNmw4YU9EdWdTSzFSVCtiQmpYamxITDl0N1h2eWhGWmFraDZmbkcyc0xLUWZ1YjcvUzc3ckc4MTZwakZXZWQvSXBnR3R2QkFLd0dPTi84bHZ6UitCdk5VN3dsTC9PQXo0enB4YjN5Q3pNZmpUSGNXTlUxOE05Vlp6MFRiTTI3aDVIZTlkUkVKbTlsSTdKTGxMQTEwSmdKZitkeVY3L3VUMC9YdkhLR3c0WEpqZk5CUmNpVCtjZXBEVTN4amVCVlR4YU9scER3VEtKcnZVdEd5TnM3eTdsRzREQWdwRGxjdmZSaW12RVJZOUtHSjFWVEhvSFY5UXpWREVCcHBPUXBya1dQclR6eWcxdXdubjQvL2V5aXJFTllKS1Y0cDc1MHpEMkFUdnN5VnBQdjhyVGRMV09OUUpRZk9KdThkQ3V6WHM5aEM4Q1lreEV4TWRQR1J1OGlnUlZJbWtwc2QwRTgvUmlHdnRhL1U0NWdvK2RuY2VuUzhaUUhseXJQeDE4WUo5bTVCY3FjY1pQV3FXK1h3dDdFakluL3NSdmJhSUFjWTM3d0ZyWjVrQkVYdW5leE0vK2VOc3ZpQU95RGRCMTE0Sm9Xa0REQTBaaE1jL2dkMGRxL1Q3c0crKzVRT0ZrVkRXQ0RZSmMyMVhreGVpK0F0QmtRaFBvY0UrQy9pRCtzN0oxUGp2aTl4M0dVeDlEenE0NVhXUGk3dkVSRU1EWXhrSnkrYnpsbkFUK0dybWlNY3F6dU0zYjBBUVJnT2g4SFN3Qi9pTitHU0FyZk85SzhTVThjaHY4elNVaHFtQzY1ZGtwRzhiQUpWWi84NHRuOFRHTGxnRnJJeFcvanprbHNBRXlFYStSRm9zT1FJNmF4U2hvRlB6cS9uYUFPc0MyOW9kWUxRTkNSZFFqWG96QUhjQWlxbWphMGlJY2Y1TjF1elpPQ0laRlNFZXF3RDZVWTBsQ3B0WURqRVNRc1M4aVRTRzRWakNzTkw2dXZaOEpmTVNWaGJFdnZWZEphOThnd2Q3M093aTNrV0NlWHV3OEF5OGY3L0h0WXBDNVUyRWxaOXZJY2JBSy8wT0xzVnZZUHB6dEprQytoT1FidXBkMHB6dXZ0VUltM0w3YkN3VUVTc3o1V2JsQkhPdUhTM1BSbU1LUUpSTFNZREVmc0JIWU5SeStsd3gyOWxzdEJiemlRUnZDeHdkamZkQVVHQ0F4elVXRnhMVmFDT0ZqQTlEZ3hRZmRaSE1KSlJlNnpIQ0N6UlBlSVVoNE41ZlA0c1AxUUhaNDNzME5zVTRwRGFJbWRuQUxCaktuL3Y1Y0ZqZVc0eFV5UkdpK0hYTFlDLzZDeEFLVmNDUDhqaHNocU9abnZ3VG1zRGIybkVEVmlUTVFaZS9haVg3WUtKYXY4SXZReGc1bTk0RjVZRXozQjlvQUc0bUw3OEF3OUtqZzNVUjBkaDRFWjNYZW5OaFozcGRieFdUNzNudGRTMzVCTkFvWWQ0c0R6M2c3THZwSkEvQWFLQlp2Z0JNWDFuMjlXTW1jSGRiUmN5Q1lKU1ZXNVhkNnZmU2VSUGdJOEJ0QzlhdWR3Q2dtdUE2bEkvN2NCL1dRQmtBTVpCSytXTjVRRndxaDVBRlkxYzZQQm0vVWVQbHMzblhpVnJFTXBDQjBubzFEWDFlTUl4dm5lb05KZ2dFTHJjNmFha3ViVlhsWWw0VmxCUUlrYk1yTlRjMGRSY2VrR2dob3FJYzJjK3Q1NG9rVE13QXVRQWJlZTJFMWkxRDZRTVlDMGdDcVNlUllGOHl1bVNLQWpxVXFIaUJJY0E1NUdWRXdzWlJRcERrL3NHK3hJWVNyQ1UwQlIzWnVXZ3BzWWNMNTJEWEF2R3ZLUFVhaUF3SUtsd1dwV0hQelBmd1dWQk5ranRBd1RDT1diNzVnbm90K1FoV3Z3S25ydm5yQ205WUwyelR5UFRVQXpJUUw0REprZEFXWERncWhQa0NZWjIzZUhSd0JhTnhxMkdycU9BZzdlb1BaZ0FoNER1SnFodmRUalROcXNCY0pYVERDUkhSOTJNRHBad2dPTjJFN3c4cEJhd0l6RGxvRDRIb0I1SENMVURKNDlRYldDeFRpQW9uK3lBRHM1ZTJ3aS9LQ25FUVhqSGIzNXg0dkN4ekJVb0lJVzhyV29VV2dyMFFiL0hPTnBCV2ovMWl4VHVCaFkrK3B6NTUwR3lzRVJ0eHc1cDRqSVRkT0loaVVBRUo4QS9JUXJTZVZoWVlKUWpzNzdIMitjQ1F1R1g4a0hCQzhPemlGSEcwaEpjSXNZVk1nTHRndlVxVVNQOVVNRjBRcGp1OHVIeDZzV2duell6SG5VOEhrcitjS3h6ZFNBVHlURFlJa1RyYnVnVEFDUEJXVGZyR3JoRzllTDlIS1A2Sk0rUk5HVUpQKzZ5OTFiaVhCczdpcWdKNEMxQUhMaFFSQ1ZnU2tUSlE5WWtlNExOUVB2SWtkSm9DT2lsSTVDZEdBazlVWGhJNEVLWng4KzhHR090OFhxcGJDeTlvRFU1Q0t5cEsxV2NlRmZVd1l3cmNDb2hYOTNSTXNFSDdvVHNBRTBibThBUWd3Q01QcFViUkIwSTNGTDZRRW5JYTBzTXQzdmRBazMwTmNoS0d5cEhEYUpqWGV0MUliVStxVGk5azlaSmdmOVBnMWpIa0ZFektHRzZLRjc3SWgxd25oUjZqMXBpRGpqU1VPb05JTkZCcHJCeUdPLytCWmVzejc1YzUxRlJUbEJvbGJJT0psL0JwSngxWmVFY3YrakkxM2w0K0N3b0VZOUxLMlJFVmV5SjB2VE4wUFlWTUpGeDJUYXdneGdqT1lpeEh0UElDa0M3Y1lIKzhQNG4xTFRmNjlOMDZ2amdUbVVtaGdDNHVIdzRFbzJDVE9BZ0VENmlCVm53dUdSWS84dGdzMGpIc2hCRkFGRGZjTm1FcjJjeEM0aStCdUtxeXo2Z01uN3FBUXdaTm9qbmMxMVN2bUdIQzh1SEVSWGdrTWJzeEc1TWlHWVFKUWZrdDZBTmUzNFZITm5XY05EaUQxazFaRTQzNXZPekZwNGpBRDRjZkhzaE1Kd2hKZzVUQUZGdWY4MWdBOE1DZURVZHNHSWx5NUp4T2FJeExwMkRzd0Nza01uc0I4THZnQWZKeDlOd29Nd1ByZUlOM052UkM3TWVNWE80YkVUcFlmUHY2Q2cxd0ZpOFYxMXdUcmVnc2IyVWE0WkhNZ0Jhb2VpV3N1RmFOSlhMTThwQk5wOXRFb21NZUlDZUQ3eXJHemw2VmxLVEUvU0RaTFA1RVFnQXZrK05YamwyWkc0QWRsb0JPNFNDVlN3ZmlJSVpWL3YvNUVNelJJaVVlWEptcE9CZDRJWTh6clRSZzhrUVcrelc5WFdHRTBSVEpDeDRlSkVnQWdkd0h5ZkZONVh6RVMxUDQ5c0Z6bzMzb0VRWllsWHkwWjdER0w3M083SWpJY1RjbDZ2UUNJdjA0VWJrWm9maVdQRDFJK0V5U0JlQVBIYmZ6cFhRaUpIUzUwWU02OXcydkwvZ3k2QlBQS1Z2eGFEaGNqRVloUWliMmJnSUFDc3poUFRUZFJxYkcxeUFRV3RKbGhmL2c3M3hYSFM1QUJiS1FzMW82akNPeUFVaW96ZWJBd0VUVmZSZzM2U1lnM0tHM0pOK3ZORzdYd0JOamQ0SEtJK01BUGNha2k1SEJ0RERlais5Z3pqR0tZTU1USmlBQWcyNTM0WEZrTi9DR0doY1ZkRTB2ZUNrNms1YmNpSy8xelFkeUVseVRxSGE3MjVVR1lRREh6dVpHL29ucEI1WXJTZlJDVGZVTkdZZFkzbkhQSVpBSnlELzZjWHp3S0JvblBjU1BBRlpyUGU0WlZ3ampHcU1Yd1NpUjhOUERPeFNDenF2RDVyNWFWZ0lpWVJKTVVSRDVlOGI0cVB2aTdGNU1DNzBjb2J4Z3BrcEFyWWkraEtZcUxwZDhrNGlOMyttSHBrS3FnWnNtNWhIUGtsWGx2K0lxWnRJNDc4VDJFMjI5YnYvN3BRaEFlS1BCekpnRlNZWTZzQ094dEMzaDNBS0lEMmlqZVJsbFcrOEdMSGlSUnV2aGw2VHVjSytKVmhJWU1PVUlPUURVS1pQOExMTWhtbFhCc3lEQWh5andtbDcvK3Rqdlg5M3R6Y05FY0Rqdm1EYmloblJPT2ovYVJma2MyQ3laMUNHRGJrREZ3RnhTcUs1dlVLMTlaRi9ybUlSd1Q3THhUajJaTUZXZjJGaWIvblpNNUtCd29RSGpkM0JaczlnOXovY2RGc1ViYks2OFpLL2x1MUU4d3pPK2g2MEs4d0d6OERWblJlSzhscjBWYXhOZE1MNlJ1OTNHYjZVV1dobmpCZkZPcnBzclVaVmtVaFhHRW9mMzlxMDhtWmtpMVRYK2lMWUFhK1hKOXVLSjltOXRtSFdDRkhicXlaaURXb0xpQWZDekhDQWRZWXFjbXZCRlFEMytEdDJic0dWNEhxUWFuMEtrUTlnNFRPNG1udHlKQ1MvdzNWOElLNkxHeHdqaFlyRkFOZjhwK0lCVXllUkd1Q3RFVE1ZVkE4SlIybTBNQzg5K0IvWDUxdythZ0tPd09rZmRPNXVLV3ltaWdCQXZxTEdnSzRNNTFuOHY0L3V5b2Y3NlFqejBHOXBDeGpTaEM3TVlQd1IrMkZPV05yL0QrY1BUU0c4Q0dWbWdOSlh0L0JWWUcrMFBCaHlHaEJOdzdJVFBCQUdXcVJQL3hxbzBnYVpnWTRQN2VBRGlrQVRWeTdlZUZ0dTZ0OW9KT1FjNEZGUmc2dlByRjFNR2VYVC9FK2dQcXBnOVdodFNGZ0FPK0NJZVozSXNLeEY3UVFlTDFjendqbTNzc0NNaUNlcXZUbzVTNGh6a24yUTF2bkRvNkhWb2tocXNMd1RUQzJBTUQyUmVobnNXQU0zU28yd2Z0aHlaQUdENTM1WG41VmFRbHdtdW13bTBRTk1DRkNEM0NOY3Z1N0RNZURVeU9aajc3aHg3aDVOZ0hVdElzMkRzVmlJYktiQ29hVnAwQ01haDVqQVAzZlRGTGVCVUVsaWdIUCtTU0wvVXVsa3pRM3JmSEhKQU9VQ3g2cXR5MGN5a0FlcnNYa3lVVEdCei9HZ2F2aEdRK1p3UGxIRmluUS8vUU8vREJWL2tIY0dXY0FkblU0RzRnYXpEQjRRN3lsakJicmpkci8zZy9QMkwxa1c5bXNCQVNZNkZZUk0xMzRaS1lEZnNpQVFFdkNTZDhDanNQaTNpZjIwVElSR3M4eE96cmcvM2locUJQV0RDTFlXb01BTnZiN0JiTFNweUcxU0NRUUY1QUdDZHBHeWYvekxtaVRKLzJGYyt1SUZxL1R2bUZyTWRmT0JueHlXVkxXN0R2aVZFaWtlRHhBMVdGbTBYc2hIVUI1ekJyTk1HRTFtNlBNd2hSWUUwenc1blFIZXphRFZqZUlCTnZqQTc1N3A4VTc0UmpMUE9rM1BkNGJ1K2ZVQlJaK3ZUR2N2a2x2OG85SW5CUDZBK3BKSnZoa1ZoQkl4ZFRoQkRlZ3hCUU5xSmtJQWlHai8vNG5UdGo4TisrVkxyZkNiWHc1NFZCQlJPaUd3R0E1Yk5sdkMxdlRPQUpDaXpUY1laMG9nSUI3bU5sWlE0dnRnOGVnWVZRUVM0K2VLYk5kaURjQ2FzREJ6Uk41QkY5TitXSlZ1bUhQUlYrQk1pOFQvbU1mcWw1MUMwYmVmZEVXdyt3cm5rd0F5MEU0d2xoRHh3VGkwRFRXSDR3M0V2b1l6L1pIUlYyQjd3emVJMndOK25yWWtUUHI1UTlpcFhGL3pLTWluai9JZ01CWFd4cHRpWnY3M2pqby9HQ2FXeWZLUUsyYzBFVEw2d05JYm9udXhYREFKbU8zR2tSaHRGdWRyaWFha1ZKODVZMzhTU1pSTWRBdUZ6SVUzeHVYbStlWjE0bWFqMEJ3eWFBL2N3T3NzcW1HRUJTTG4xZ0diZUhtaE5HVVFNQkNVYkt5N2lVMFJWak5jQ1NBbmdFYXJrc21kWEFJVmozQ25TakRKSS94Y3lCVEdRek82SThCNTJSMWR5NGFHZ3VLM2RBR2tCby9XTFZva2Vxc3M5c0R1NHhWeUFQVUdXK3o4UitzZlIxa3NFcG4zT3VBRkEwejRWMGpxbVNlK0tCRWFpLzBvVjFZRmZMQitlRFBZTVd3NlFGd1FkMmpJd2JnTnMzNEZxTEhZTUlSWVR2czhka2orSFIxNEtOTmMyZFQ5Q2JIOHdvOUM5NDZOV00vK0lzc2NuckpLQkRMd0xYTkY1b25tZUJoSVpCbk9ySnpPaVJ6Z002UmhEazM5aUpjMGhvRXgxM3JIQzhXYWJXdlcrY0JUaDdNaVRaL0RyeElSSEtzRGRDZG9OWThSVkhLQUR6OXF6UVE4ZTVJQU5RL08rY2xqNEJHWUI4Ukk0OEFSVG5nckVuM0J5RmpSRGJyUGlGcStVWUFXaENUWmxkb3d3djhjak0yRjQzbDJDKytiNkp0ODFjWHM5bmZZZ29BMFlJUGdMc1FOcDNlZnp0U1RCRzBIQ2I2YUhXTEo1d3VraTdScys4QWJTSFQ0V0RaVVRwalNjWGVZZnBYVDRjV0N4Z05wdTFjNFFWRXNDNWE2eWRwUnY2Z2pvd1BtcThrbkVKTkFEZzRubkJCMU9RcWQwSW5JRFlBc20vcTU4ak1OZzBQZ2pId084OHFuampTK3dKVUI4d0NnN1hJSlZRSFVEUU9MbDJuaDBIbmF6Zm5IeGE3ZFpFK0tYaVpNRWNqd29jM3Y2a0trWDZDQkFMRmgxTXNXV3VBbFQ5OW92cDRBYmZJcFJnMjFnWDZIdmwwbk5KcllzQkgveCttVWd6NW54b0hvZ1ZMR3NTM3lzd2hneGhkU3FMRkU1MGNrc3NCWUJBMStmaU0vT1RRQ1RJRFBqSmRYc1lpRDI5dGIxY1VvUWJ3dVhQZ2NPUXk2QUZjeXRtZzdjbnVSOVdoNnlMdkJHOENSYWJNcEg5UFd3SE81ZFFCNVQ5RjVJNkttTWRreGcvQ1p1WUhhdkpIc043MExZWW82eG1zbXZmbmMwOFlLRnBIQVQ0SUxFc0ZSL1ZOdkVQcy85a2g2d0tPck9oUHpQVzRXRkRmV0R4ZURuc2s4Vk83Z1g2RXdhU1lXYStjVWxSOFh0elNXQXFYQTRYR2NyZXdkM2s3bkVRNzdtUTBPOTNrdCtzL2NWR0pwT2trZjgwMWhhVlFjU0lyaUVPeko1aXhDdzh6R01jZGM3bUJ2VlN2TkVMajlpTkMvTXAyTkVEUzlrZllRTFcwSUVtTkllcUhsNFVqS1Ric3liUXROMTRXSXRZSzM4RHFUSWJXR2NrSm1Rek9KYzZlbnE0YlYxVHpQTGlEalJYN053RVRVb0pPMExhY2htSWZGbkZrcUZHa3dPdHN4ejNTb1VQdmdqZGNBc1V5a2xEd1RBd055N1ZFMCtXTUo2REcrSnNndzF6ZjZzUXVzZk45ZCtmbXNManpHektmbHpLUWNCL1F5OWdKN0QzaWVhMmtxWUFjdUZRQWh6M3k2WW9QMDljZjMwbDNEZUxUMjdZeWd0M3ZvSk9uWTM5aEk1VWdwOEZ5dVFQNnM3N3dpTHhCNEgrZVZqb2dvL2liM3cxaUp1UEJMT0pWMWgyOEl2NVd5STdzYWl1VHJBK0JSaXl2bWF4Z1d5V1dJYlFSZ2doemw1cDVWZ1FtbVhVQXNzaGlWZlBwcG90WnlqejNtYjVaR0t5Z1FRL0FoTUFYMFNlL3M1dFRFSUhFV2NyTldHUE9XMDBIMEhyQzlmSHZXWWlEQmJ2TVhEN3pWbHVTNDkrY1JZczhKQVd2LzZtTFloNS9JemwvMzRZME9WNUVKZHJqVXpHVnEyQXlJcVFMbkZxUDVVUjZCemUzK05wZkFVNCsvV0RYOTltTy9qQlpkVnFPblVHZUVvM2tmZXd5Y1NqWUtrU3pySlkwWURkQU9sdzVLVlQreFBqblp3NlFRdVEzT2tDUWFMUms5am1BY05NMlhJbHdqWVV0djJjU1NTREF6SDhzVzRsK2RvSm5udnVGc3Q0VDZWSnd0ZWdUU1ZzWHEyY1l5OE5SZHdmRjIvUVFnZG1lQWd1bU0zOFJlakpoS1ZIVndsNys5UXBpQWJ6a0lzWUlPaEVNL3RhRXVvR1NNRTlWT3NlcDdMTmc0MElyQVhoWG00RmtySHFucXh0REJ6OUJCNmg5RUhDNEFuSVVqMTlvU1ZqR3dvQ3ZHaWV0ZDBWcnVqQjdDczMwRS9lZkZzVGdUNUNUOFl4UFlMdVVHYmM0Z1Z5SStvdi9OYjZaaXdKWjRNWVdjdzR4V2FWSWp3aG4rTndaQ2ZpbDBqYlFYWW85N3BZZmdnazVBblVKdUtCRG9WWUFIc1lhZ3Jlc0hsK0RpeVc1c2NCZUZod1NhalRHM09GRTh3UDB2YXVhOTFjRWlJZGNLNHB2cWFNTVlMQ0JzQ1gyUDNqSkFETDEwWG1BTWdSQ0RjUmdzdUhmU1dKMmdJdUxndDdJS2UzQ0pDZTEzd2p2amJVQ3A0YXFoTFp5anBaSmpZZVFOTWV1MGtFendxNGR6WjFMZXdJNFpWYmdvUllWUWJQM2RDVzVmMmdRUmNYa3p5SUF3ZHhWL1FNMU1sVVRBZ25TbmJQa3ZCc0REeGN4SWx1THVnRy9rQ05lSkxqcnlJL0lCcFp2VmNqbU0zZ2dreVRJNFZ6TnZteWJjQ0ZyS1N5SU5mUmQ2ZzFCRkVxVDBxWXg0Q2RtM2oxdkJ5dVpDR0psSGF0RHdHUmNGSHJiS1pWWE5HalFleUp2MThlRk03aWdmWExDeXVZZzU1ODJGd1FGdmtMdVRXQmcwSXBhWEovY0l0OHZ4NjBiajB6RzlPN1NkZnJ1U1hqYUU5TTcrM3FjR1Q5bm50Q0xLelZZZzhDYnhQdVVhZmxZMDByR3BpQUZSZ0VCVGdnYWk3QWo1VENWaVgyNTJZOURTWEU3SVp5NUJmaEo1NHhFbTJJMU5FMWg3RUhhd0x3akFJcCtGN3ZCdjVhTGphUHhTZEFoNmN2ck1ManVWODZ6MlJwUmV0OGVnOE1EUGE4Q0hDc0FSalNJQTR4bnRTaFpTUHpNdGV3UGxRQ1dEZ3RsVWlzTWs2VndaTlFMQytCdVJQQThwczhJd0NOUjNyaTF1ZzlvMEp5ZTJ5ZCsyWFZtalU3MENQSVFtRmhrWGd4d20xYUxPN0lQT1ZSckR1OEZESzRnckMwNWI3OGc2UzIvcUwxNzFJWm5tejZ0S3BrZWtxSENzRWlzUGJhTWlDRDd4S1Q4V29ZMEloR0dTTCtZelVSVElSVmc0dncyOWZEajZBczBORUd1MStvOUtQOVB6eVl5M3lRYzMxN3dLV2ROZVFUc29kSUlpTVIxM0YvbENvV3ZLOHlkcnZOYVlFR1hQQ0cwelpQWDk2QXAyWXIxbUJtV0JwMHlsTW1naVp1aXNRR0t3WjMrcDFqUG13Y3FJV0FGQ0JuNERTU0sxSFpQSVduYVEraDRVUHlXVTdTTVAvazBXZ2xkT0h1T3hkVUIzdC9kMGpBdkU0MkIvZlM0TURaTHhENEpscHllN0tOOFdZZ2s0aUFtdjN3S0lncjhkd0NDZllpVzUxMUV6b2VOTnBGOEo0UFNKSFEwRjVreEtQakI4NWpEQW5SQXVONTljSkRZMTVQZ1hCOWhNczg1WUhFR2VCQzJMaHFoZm1EK096N1Nxd3ZoSlQxakUrYzM3MDhXdWU5RWFkVnM0SmhHZEMrVTFoMWt0eTlLT3gxOUN0Q01WWEVwWnRpeWRZMkE0Z20xdnNBN1ZvYXQvazI0ZXpUeGh2RzNpeFh3aThKWk1OeU8yNG5YRVFmMUw1SEwrWWZlVnQ4SW5ETkNPZlFCdXVaVlNqZDAraVp3azhkMnd4QXlNTzJ6NGdmSFpIYk1FaENDdHpIWWdGWVRGdk4wbU5DMVNMMlZpVU91TElIak5yaWt3MWZTd1ppWXQwSDBDb3d1WUhBclJHd1lCRUJzbnZ5bGVhTXVaekhjbDlXZWxxSVN4eXR3MHpIbnJuLzhKWmthWUZISU9NN29zakRUSEQ1WkVSWTBmTVZEdjJOTUhJQTJZaU1oMjE4WUQ1czYyUm5XTW56dGNKMzRLMlE1R0RSSGVybzV3MmFxdnB3RVdJRkhDVDgvT0RQMzRaWEV3d2VaRGkwTENORkUydzdBZWczV0VhQUJQSUkrK2lYQjlDS3lZTktYTnlUU2NpSnVSVEVaeGp3Tll2WmlaWkViaUJabzBrL25DbXozNTk1U0ZQWFZ1QVRZcUVERU1nVzhROHp3NUQvdUFpWTRaWDVWaWdUZG1vUlQ4QWlwYjJnS3k0NFp1YUtDSE1BNml1ZkgwYjdZdkVPWWU5RnoyR2NnTUhPbGlud1RsQ0E1ZDRRYzlOWDNsMDkrUVZEQ1FEeGFyQ29oazVBN3ZLR2ozbUtsdy9IZU9EbG5rOStmZ3B5NXowVjNIQzlZZ1VNdUJXaExWa2pCQmdHZUlRTlY5QURVV1BKaVE1SCtNeFEwVVdjL3p3bmhQZGdIY1hjUlJFQ2lURnJZWGdFcVJ1SFJ2UGl4bGNObmpLaEJJZ3pzbUlRR0p3d2M1Z3N2SHpoaU1QMWdMdjRaWjM4QlRjMzkvWkk1eVJIYWx3VzZHWk1IT1d3TW5hREdPSnRsZnlZSmg2STU0bHJubTlrczFjMUhjazdYMTVpRWFISjNMNFRGMzZ4bXl4a3kzQjdBSld3VjRDUURNK3pCbzhRb0ZLS0NDSVA4cjlkejJrNm9paFpNb3RWZ0ZHdlJSbnpRcDY0NzVtd2xqYU1vaWduUGR2NHV2S2RMUUhLU3VjalVyZjIwdnFTR3kzQWxRSGpBNXBrenVaTk9HMzBIVitQZWpldVQzVHl5Sjd3MDBNRm8yQWNqVTFtLy9rS0FwdjNCZFM5S1N0VkxKZjBpQ0JmK1NsV1Z1TFZaaEN4NTNtRHFBVS9nWWRiUVc3ZWZwdE9XTlhhTTZ2MlRmNHMrU3JVQ21xUWlJRHpncFdXYlhFWnNTeUtEcDJWRzN3R1lUNlpqSzlmNWRWZGhXTnR3Y1pNMFNLb2JuaHZEQjRBd3BGRHZONUgvNEdlSSt6RlNVOTBYV2dnVFNwSGVBa2g1QnQwNWgxZG9tcWxGdHdVaUVQM1lhSHFqVlF2MHlMRm5wVXZlb1pyd2hodisxREI4T3dNc0M1N2l4RHEzMnVsZGl0NGJKRm9LVEZteThTSU9VMnllT3BjTFJ4SjFveXFXWkRWcWtaVzYzM01vaXJkY09CczBjQmp3a09yVDUvdERueUc5U29RalhoSmFWKzJXZThDbUZzM3RYQmJWMmR4aHBXUGVMRjVTbk1ZMVZESGRxTk1zYUY5SjZRSkVoZVhiTmpSU2JobU9OdFU3cko1c0RyaTQvUWtaWGxZaGZoQTVRSDl3M3dWb3ZTekZTRjhDdmxxUW9kWGpNczZsVFpPcTQ4eDFDby9VTTZLR3FUd3ViL05sWE9EeTJhZ1JCaHY1aTNSL2phTlFGYk9yNWQySFVqcjFzVDA5L0VNL3hSWG5hUWpNUkQrMVFqZ1hIQUxudS9Cc09SdHVCRHJWNnltenljZmNwZEwveURHNFpWSmJjL1ZFQ3A5TzI0MlpRRmc1SWRkc1I2TU9JZUVZWWt3NkJpeXJvUXZoSk1ydWp5d3hnQzJ4NlpGYVpVczlrVitjdUdiV0JIYjl5YlB1b3E4VzhlNzdaUkJFY0pFVk9vQ0FKZDAzZDlKOUFLRUhsd1BQMVZGQ0tTK1pnSmhhVUhMdDNqNHNXMXYyd0JSb0pIWVA0dUJ1WG0rL3F6TEUxbDNpazBCdkRwbzEwek5RRFJ2NnljYVBOYVR3R0xoSGdTWVNNYS9DRE5vMlhyVmNZWDNnbmRkRFo1UElNU0lYdXZoZXo1SDB1aG5xSENzeXp3dkp2d04zclBld1NLZjIxUkVWa2Zla0g2Qy8zb0F1d3N6MmdWQ1lTOEVpd3JxWUFMWkpQTzR0MWsyY0JNMWlId0hZUzFYOXpUMTIxQlkxbVkvSGtTdEZ5ZStibXpodGxwMnZlVldiNGIyZVVMd0pRdFE5b3NVakI5ZUNHVUtjQUNiSDlnUWM0YW5JTW5jYUpTbFhBdDIrTHpRR21FeVd2RUhrUFlPVnlFU1k0OUpOZnhwQnpBVzVUQjZoTHZDVVY4RW5Ha3NwR1NEUkp5NEQ3OUZCSlU1VWVJc3R2bWJFdUFlamIydnB1cE5NbHFUWEMxM3h6cWdVNFFGbHZRSjFkT1N1Uy9MSkluRm1FVWxESUFVY0h2VFczVnd6N24zV2xnc2tOZ2lENklmRWV5OVR4VXpxcXRZM3lZdmhBWmNpTitmYmt3cmVURW44UUV3ZUhzd28zTWJnTGNGbWhtaVRnUkFzWUJuQTE1azlBRmZYR253WlZsV2JVa1o4ZnRVOHlLNENXa0txU2V0VTNlQUlJSFFzakFUMVEySjhLZ2pEZlJNaDUyNzUyd3lDQWpQUHRYMGxpVGVOeG9kYWRWM3R0aWhEbzNOSXVtMGpESzVTbmVGSlZ1ODJ0OHlUZGQvbm1yNnQ1a21JREtuQytQSXA0cCszaDdZV2M1YTJvMC9QMmh1di9IYWoveC8vM3I5SnkvRVFMK210QTY3Ym9zM1FkeDQ5aGVzY3VObWV5L3VENldQQ2xEMGdSSTVxcTRKWmNHTXdla0hHcXZVbzFaUHFScEVRK2gzajFIdnRxZnM1ME5Dd0p5elo5K1F6V2w1L3BRMDIrRlFvUmtWL1BNd2JzM1h1a0VMT09wOWloeU4xN0NRNUZudWE4ZldaU21lYUZ0dEFTbFRrWVlyUlE4MUtzSWh2eFdxQVNFQWcxQmRIZ2lpa3BEV3VHRERYd2xoZnJ1bmkvaGI5eWxRdEdUV2c3bnlVMWFSMEt3Wk5nMHJUczAybXZzaFVCREZUTzVhOEUrNEdxajV0TzI3YVZmZjJnb3N0N0hwUzRLMVFaNkE1eHhiaDhwQ1BzeC9WR0xQVDBaNWVraHlqcmI1VUpRbVNpYy9Wd2Fsckx0NnJGSURBUDVoUE5qVUwvT0JtbWxBZnRXQU5KLzhWd0h4cE92ZkNBaDhiMkhmNEF1SVpHRkVCbER1Y3p4dWt5QStyRUo4Z2tTbVRValJ4WTVpNXg1OTI3a1FaQ1d0ZXlqWElFVUd6bXJZR3paL2VmQitFMnFJdy8zZTdHdTBIK1d6eWFMZTE0Wnp4ZUdoMnB1aDV6Z3M0ZDNERDVzN29oMWdGamExSWlHQzBzTDR0Z2JJVXNJVUlWaUp1d2R3N2N5MHpoRG1tS3hsSnd4b1JlalZJeElNVHkva2lJVjh2bUw4QWs2Z1Z3YUZkSCtJWmhEcjUvU1hYY3ZhRHNETGlvSTc5b0ZIR1p0Wkh5dHhOaHdFaklKQzh0YmJWdU8xTEgzOGlvTUtDT0xwTmFWKzNlZDArZzc0UXJUTzlBVW91V1VUR1BhQ1RJdE5pOGVHcTRHSDJLYmNGUEhvWWVoTGtMREpHMVZhTDh1OHh2c2huVHo1Tm1jYTMzZGFTNVROaXNyZ3A4MUxyTU93MkMxNlY0UUxuRGQ1L3RlbkRSbHBYajhWNTZsbXk3clk3aDFnQ2NOT0VINFgvNFFVUGZPd0phOE05dmphSE9SWlNOVk83WlBPL0hoZC9JZHR2S3NubnVGV0FWYjd2NExudERKY1hCbXc5dWhWQ1JjOHJiZlhnTUF5OGVVTXNGdXFrUE1GdFZYekFyQ3NkN0UwSXdSNzFCSVh4TW9qUVNlL3h0dmk0ekRMNTYwUWlJNXJOdTBoeGc5OXdFYU5xMmNDdWNLNW40NkIvbXBBbzJXUEttN2RLVTU3NWxGQkg0VC9GVmMyRnUwcGVid0pvcWVXRlpwRDdFZXRRQnJTWTQzeDZmK0ltQ0NLRnA1dlRZMG81WGtYdkxvcHFnRHp6MnBLWWpNcVMxVUgyTXVQaExwdm5Qd290OUh3b3Bvd0R1TGFPWjE0QlNDMkZLS0JheXhnRFM0TUg4TStKV0ZRb0tkQjV1QkhaWjV5U21KOFptTThYbUxGWUx4c09wb2p0UEhlZk1jUURrTGNMZzlBY1h1bUltU28yYzVYU3oybmFZRmxVU01CQmFPVFFXZXIwRUdLMFdYbnFYK2IrOTVvd3pzRTlia2xKRE1haDh4YzR5YlhTZ1JsN2czZWJEa2FabFRhNXc1UHUwN1pPS1Q2ZDV2d1hhYU5NRDNDT1lyZlBqVStQZFNmdkZIeFhNUVNHc25wdGxMSFhNMnJYbjR0bkVSNm9HbWU2bkV4R3RPYVlEU054VmJ2dW9uWFlOd2dTQUl5MTJONVZMUmFQeE4xWUd4UUxTd3J2S2I0UFFjMXRJMTRUcWZrNzJBR0xtOURIMjZDcVZpWTVwbkNsYy9Gd3NwdjAwZUJOVWZjTi9qelkrRHhYSkxiUW1UWTl4VFBlZGZja0duclR0R1pZRHgwejJrQ2w2bWRuUTZQTU50ZFQ0S25tT0Y1ZjUxTS9TWEQ4NTNXUWZINUI1MFBOanNMNVBwVGZ1Y0h0WC95T3ovWm5aUGJzVFRuait6Tzd4d09RZWVQMUk3aUQ2ZVZldUlVaXhWNWJabi9VTGpJN1owbHFGOExsbUVaaWROdForWXRzd2tTU01XN1p3TEVQSkhoUXVoN0JJQTJ0d1NBblFzbXczTUZ5bTBraVd6VEdzQkdQTjNGTWwzN2tpcnhMUk1JOGJUYVBXMGNGNVFMWHFYWVJ6Qit0cC9jTXRENTN0WTZ2VGF2SXBKWlB4UW9Rb1lyZ0NsN09wV0c0aUtBcmEwQzhkZDBaVTk5aUYwNHQ1b1Vyd2hXTHRoc0FEWVFFb3FkTFEyWmMwL3pSVnRUV3F6YThPQXBZTG9RZGhRdUpOYWdnZ3lHbzRTSWlKNmpIV21CVVBQVXN5VEJSQ1FoWkVHMVY4UkQ4ZnJjVDgrL2ZUTDFnc21pWXZDM2srTWlpbVdQZGowSUZWQ3Q5YTBiMzM4TGdzUHVyV0hSSENyVkUrL2JPSEFUaXI4WGNkeE5UcktpcUlhQVp4ZTQ5bGRxQnBHNWVKajFNbjlJckd1djlTUGRjb0EycmZDeVJXVW9YYjZSRzZMR1BsTFA4MGFCNlZ0RGxpd3YrT2J0TVJxK3ZPUkNhT0ZUSXptOVpYNktyTWRhb0tFMjFCR2hRcjdRclVSaU9EaExFazl1R0NRWWQ3WVJGQ1RCWWZrUUMvUTlzN01TaUFWOThWYTRHTGFFVVd6YnFFdTkyR0hvVTdjWUhDSCtKcWpFQXFxRVpweVl6NUFzKzJud2VqUGFiM0RLUWlKWVJ6MHhQdVZVYnJGclg3YWREU25XTFVmRk5ZajJwZHNsQUpzd2hyTVJIbXMwZWN5Sy9MRDVTUzM5MnBEbmxYUkZ0MzloazhtU0htU01LUU03Wksxb2JUYnAzZ2RKOC8zSFY2ejZCcDBoTC9qZUhaNW9EY0c4TDNZY2k5ejM5NHkxSVQ1clE3Rnd0aU9DV1V5VEpKV0wrQ3lOZUg0VDRtQ2JTRHQwZUthdjhXYW9JL2ozcDBES0pzak1aU1E0aGIyK21DcEFzQ3d6Nm05VloyNURWSnZXWFpzVnJlRXpiTVVQTG5EWjE3MzZHQ1lJaHF6TlhtWVlMM3paeXRMa29ZS3RGWHFTTGMzRUNBREhtbHhya2pDM3VMbEpGcnVzWlU5TExCa1Z1b3NGQjdqU3lXNkNqZlp6ZG9oVndlL3RCT3I3SHRhd294SWVLN1pDTG1ZUGlPNFhxMk11MUtSSzlqaUdUY1BDaDBtZmFvYlpUblhMMTZFTnhmUTkvQW9EWVhmaE5YZzBHL1ZZOGRpdTAvcVMyVHY3cDlFcVdCQzNaWGRWdUFmRXhXS3RHTjdxK1pMdWE5ZWJkUytJYk1pa1djcWtwb1dON09VcGFEU2hTNHo3cWZnYjBOT0QyS1BHTzNRcDQyTjNwb1k5MmRGcENqUUNzTW1aUzhEK3dQdC91aVRadTA2MFlDOVllVnVINFBPKzJ0QkRsQVBXUTdlbm9FTzNoaVg3RzU1cmRGSDFFMWI3WlFVYzNnV3U0b2dmOE5YdHRRbjJDT0duWUljamE5Z1JaUHV3OVJWN3dGQWtsaWVLejljR2VSaWgzYXZJYUhTMDRhaENNaGJhTjMwZVM4Y0JWVHA1TEh2T2lCZ0lMV0xHd0JwcXEvQ2NpWTl3a1o4V2Y5bVhoN01EYjhxTGhCb0haanhWdEQwWkFuamJCbzBDWnhzQXhtRTVDbFNIQmJ1ZisvVG9SR000bHAxaHVCcU44MEZLdHVFQURkUis4bytMcUlxb1FGbmNsa3gzeFY1MlJzckNQdGlqVTZac1VlNVQ5bVVoWlRSeGl5blhFK3kzOHJ6MjArS0VXME5qMlZqQ1l2WThzdjM1TDhOaFdaK0NhNlhMR2trTERnUEIxSnplYlNWMGhSdHZEekdzRWJUdlBpZVBGay9ONHVuUnQrM0pVc3N4d3k0MiswQkdvY292c1k4b0JMQ2RzL0liem1FbnlOTDJ1RWVXMDhraGhWVTNFZnR1QUFUL3RrZXZ5dUVRd2QweXh1SEJJdllSN3R3cUJNQ1QrZmdrRzNyczVnLzhQeEZZSFAwd2pWZVlTekxwOVVYQUF1amo5M0R5QzVyT2o5d0FTRlA3d0M5aVJNSTR0K1ZYSFhPMzhPSjk3alFWaXZLd2MrQ0RMVGxPQVdNMHk5SFdoU0xISmducG5wdDlOdDIyRXU3WEkyZy8yS0pwMnhVZ0pYYXFDcVNQUjdwMk9DZG9LVktqZ2FYaHVleUd4NWt4bnVlcmc3ajN2ZCtwb3cwVFViQjRqeVNCSk9TalpaK2JBTHZNUFVIb2dLSjVpdlB4NzRid2UvTnlIbGg3ZmlaNWdLckE2WUF3blRhZGFwVTJ2NFZmUHhqdVJKVEEzKzBwT3QyMzdOeHA0QnJqOGlJZEpXRWRRbjZJWWc0bXdSNzV0SURXQTY3aStvemNJTnhJN0NKWElBbTBzdkJVb1RtOEFLTzZUbFVRSC9DNlN0MzBwYk5pR2l5RGhaWC9lbFpoSlRHTHg0SUU1eDZ3VTU1VzVSdjVaK21hSnlLWGZUQUJMT3RXY01HUzBaM29Qa1NneFJpd1RsUTNEREU2MWFNTjk2aDZoQVBnajJkcFFEWTFRZGpDRlp1Tlk4bDQ1a2duR2FDREpyVGNSd1ZhVDY0UjQ4Y2tyU3o3ODEvazNHQXpwdkxXQ3dJOVpSdFFaRHpnQmtBZ3I3WVhZNk5Xd1V2bU16cEcxcCtUMVEvTkE3SEhSb0RhUkpMR25nV0gzL0ZEYTN1SkhzUktMVEJDbjVOZHNzOFAzcXpibmd5TDRJSVZBWVh3THNPeHB3bWVPZzBjL2J2K2pJNVFTR1RKemJKTUEycXlOQUR1OUowZ2w4NVFnNXV0dWdXMmZXYUFDRld2UndIOVVoUjhBV0Z6R3IvNkdnUmRDOW1pWjMyWWRTSzhZVURJVTNQRkpwV3dRYnVCVG5FeGZ0UTJUbUJmOXNPcU9CcmtDTU0vcmFPSlJyUEdPSnBGMWcrMDNlSmVHRlN4emhJejhLd2V2NnhIa1RsS0pVbGtVZlZuSjRkNTNna3p0MTdIQXp4RXNIMlF4VjVjYXdxM0tOSWVSOGw0b0FKRkErZ2ZNTHUrWjRvSTRHTEhiTFJwMXJpWVBWRzZrNDVzaWYrZmNiSHg0Mlh6cjRITlFtVHM4YnNpVUptc2wrSDZvWWpkZFBTUmNwWWQzd0xuUG9UY1psSkxtOTMvWllWcnFuek95MVhhWWJiamhiREcrc1luZ09wSm5uK3JpdGYzVEJNcnNJM0hEbm1FWUJxblpVaUNONUVoajdLbndLQjdobXBlcktBelpqN0xXdUFjeDVCZW0wbXNqMEFXbFFwVzIyR1Rta0l5VFp0bFRwRTBETnVLWG10UFUzTmtJV3lneVZOMW8zcWEwN0lDZ0t0c1o1NE9RSUVrS0Zicm1LdDBsazB3ako0cFFoRm90VDIrWGl6RytPeGJyUXRVWURYc3JWbXdobURiTzl1MWdhVnFqU25mWEJHR1V4M1kwckZSOEc4NUVNVlZUUkN0YVNyeWpPcXhoT05NQWJxamZjb2Y5TDNaUmJPa3lZMUxnL1RCcVc3TGZ4OWwxeW5ZdTYwT09ydG05U3Fhbkh1MWRyVlZtMktSWG9udklUdG1iNmNmRkpiU05yR0lxM2pYVDY2d251RWhwcER1ZFlId2Q3WUI5a1c5dHBvSk85dTVRc1BYZUw2dUJJSTlJSW9lak55aEFNc1VFT3diRnNIVzN2ZEpaZUVpUDZNVnVHdFVpQVhNZHpJbkFtZHA0NGRheDcvWFAveXI4b2ZyZjF6L0FINWFPR1FaTzNiTnhSSWRINXVYblJBVFBVaTlaVFhiaW1yekRjc1RkL1RkQWhKcXNsRVhNL0ZrRG5jaGRqdkt4c2s1WVo1RTAvMWM1L1RhT3N6dVNKTFFHc1E3R3kvNTNHM2xhbkR3VGJXSEFsY2ZpdTlSRnBiWmk1MHQzU2lCV0E1WHNFbGFpWlEvSEx5YUVpY1FJL0JPU01iVmI0OVJrdFZRTnNlY21UNUlaTStKYW0rWUp5TFdaTmlGZ1dCaXUzNGQ0N0pjblRBU1RkM09CVlhEVnp4Q2hwSlZodzBzUHFObkM4blBJRkQ5K0g1c25yTjdGU1QyWW9aVk90Z3pyM0pZeHkwbGRCcEI5OERaUVRoSHZZUDFFVjNMZFJNWitLa2R5ZG1FU0xtS3N6WGdudWd4akRvSGxGK0hlRUdRdWhNdWNMc1Z6L1REMTBXcVQ3SlBNSHVBd0d1czVqd2RpUytXalVxcjR5SGFGUFNEMVJCMjRYeTFJZ2tzY0pxMlh6dThJSnlZK2swLzFjbC8wcDZSY2VRNjJBVkx6d0YreTd5SmNud2lXOUJ0V1B5UURPcStBQ0V5dFczOTFqUUxqWm1Bdml4aWtsOU5XN1pzSDBDdVY4ZC9uZUZVTDFqK1RSdTkyTndQN28wOW1SMDdkYmIzWjR0MlJCU2pNNHZWWmMrWlJRRGxSZnpOY2RtUkJiV3hsZk8wUXJXZndYTklXZDRndnV4Y0VqRyszRVU5SkoxQzJ1enB0SEpLUWhTVkNNM2hkNkROdUtYWFp1ZkFBVnN1QUJUZTN4NU9JZ25zZGxxeGx4emdZRjFCMWJXSnhPYVZJYlUyQUYxbDhPbGNtMlVhSlhKOWRiUC83SDdDMEx1cEM5TU5UN2NzaE5XcDlzODlGZzRvS3IvS2ZnQ29oUGlyRVhtYkxkNG11clZpR3llZGFUbzlSYkpQZmZ3YTdtSDdEUEFNUzdGRVhyRTB6c2dSMU5NNE0xbGd5cmVqUkNwNFI2Z3dHV0hWeHZUOHVoTFdxaTJINkJ0SDNqaUpZbHJuaVpzY29wZ3l3WUtZTTYvMzdyemFnUWhPYXVHdXNQZXE4czltdys2MVNpVW8xUVFkdDN2ZW5HTWh5R0tVNFpFbWhBZmsrM0s0Ymt2ZExJalowYWJLOTV5THoyN3dOWXNMKy9QWURrRkRPUE8wOGxTZ2NrZlZSWWQ1UnV2ZFVLU1hjNGxRbEl1QWczaUFONXhDY1NzK1grZ0FTaGpMNmw0SktBcGZmNVRYd1lLakttM3kzRjloTmVQRk84Tzc3R3gweW9WRE5NdkhoVUFBOFBYRng4RW5wMk9BeW50UzhDd2lhMmRGcnlQdkhOWEczMUFUNE5GVzRrRHpsN3lPRURYVWsrYWtBdTV6NmhFOU1Oc3F5WTI2c3lpMXY5MGpWL3piN2hkRTJrM3NQKzJ1TmRtejIyNHo1T0tNS1FHUDZpMFFLa1E0TzBLU3M4S1NVeXpEWitIRU16ZEUxYXBTL2VWYWV6bXZBQ09Id3J5WkMyNFFFSEFBMTEyVzZlSmRrSEE3V2VQNEdYbGtTWHl3NnJiYUFFdVlRenNML2s0SkdTdHN4elFndm14UHNGdDYyV0J1M1M1MFZjaXFHeXJ3Z1diTjJYNndnZDR0Y1dCWDRCYjdKbVFEc0RkeDhTeHNzMTRkVS9DdU1GdVluSzNlanZjc3paWXZRTE56ZzQ3VU8zVWgraHdxRTdlRFo3OW5kcW1kL2JBdnErbXhISlFYL28vTG9wbzduMkZuZkpsSXMxak9YTFBJV3c1Mk5tK2gwcGxlbDFQZ0xJaCtvWUp3QXhUeCtJZ2NMd3AxT2F2RmdHRnl4aFBtWXBSNGkzWEphYU5seDVrMFo0Rlh5cGMrbWV4YWFTZFh4MzVVczNaYXA2TXlXOVdobG1uS2RVWUlXdEQ3aE0rSVlTUDQ4dEFjNVFIUHRuOG1CaWVEZkI2Nm5vNk1XdzZKcUYzT25IM3N4YzI0REI1cDNReU1aellIWGtBOVV3SVI3Wi90RjlxMm01NG1hbitDbG5xMk9tdm1sTTUwQndRa1N3Tk5SVzVIWGpvRXhnaEpSTEpSSFJvL2xhUTRMU1F4ZXJwUjdKREVlKzZHZkhxSks4RWFXT2szTjNSN0taOTlScWZrdnBqZnhEYlE1Tnk4UXordUZ1L3RkSmRLR0Z6TzdKQ2tUWWZ1ZVlScDI4YzBMWHlmWXR5SzJPR05xL09Nbks0UVBUNjR0ekhnc2dFU0lac3dZdFRnYTYvNXM3bVp5bkkwUy9VZEhRc1lzQkhUdVRTZEtCUk12endxRFhDVWlPSTBwR3RHdTBZdE9CMjNnOExFSFlkUnNNVU9RYW04dS9sS0xPekdnWkZLRUtCb0Nna0ttS0VoZXFIb2NGazhiTCtVZmdOTG05dEdNa2RMd1I2eGs5NnpoY05lUjdmdTB4NDVaeGpsSkRzQnUwUitzMmpYLzFOTHpvWml6MWZ6Y2hKejlBRGp6T09ESFNFRDBpTXZ6V001R2NCMlFQZ3UyNGNtNmhrYkNlZEllZGxsazA4K3RTY2tyWE8wVmhOQmJYOTcwVTdKWnY5eldvOGF2SlhOQmFBQ1g5N1hZaVNyZG8xVnRzVkFkWHJOWitvQUxrSkljbTdIZXJJdDdjWFpRZXhOaSt1endSQVBGbVd5bEE1Y2w5ZVpzTEFTZXdEZmdKazdiVGZFdFZuMU90NW8rbEl5dHZkalVmM0tZSUIxNVJDRmJuY0xoS2ZwMlVvRWk1blNpelZsdDZKeC93RmdLOUJuaTlqNE83SEtvKy9IVXZWNmNxM0JvY3IyY3hTMFBJamk0QmF1Nkp3cW9BR2l1ZE83bThxemhwMGRkdzRlRE14QlkzZzhrWStZMXEzT01qdG4vcWZIYzJGZVJETjk3L0RJTVRNaDBQbDR0ZmJyY2ZJSThxemVWZ0RjUVBISjg1ZzVLSTREYWY5aE1jdjErdzk4Tkc3MlJhVU9YQkRUN3k5YWg4dmJyUGVZYUhQSEI1VXpWVE9ZMzNRalVDL3d4TTlCQWFkZS91NE9oU1ZzT2hIcjZVNjdPK2RXMkFvQjFTUEhJeVN5d3dDeXJqZi9paTBKNW0vYkNRUmludkdvZTZ4cGV0S3FlWlRXWjh1djlBWEZEbE5BSEhZMWlEM3M5cHVBQ2ZsTTVRWHg2dVhzOGVkTU1ZQ1BEWUpSc2UrMW5sRTNkczF1YUY2QWtpVG5OY0JpYmlkeHZhNy9HYk5pbHNmeDErMUNONFRUQVdEblViUTljL3ZCWGd4Ym83ME5KMSt6U084dzdXTHhiSGV3WGlldW51b2FYQmYvMWZ1M3ZZZ09vYjJuazRzYzZmWFp4SXc5Z09kRmVFTXhES0NzT1JqcU0xTGIvUDBSOXdoNmpyN3plTFdqOHNxcEt0NzJvaUNXbkxsY0ZZTmdWbWdlVEZoYXRNNkFyaGJ3cCtic1EydUtBSURQQ3Z6KzFNdm84anFIcFhvVjFxSVVELzF3TmNjZGpYYkt5MkVPQ1lXeFBmTW1KaUFycHNXTm52VGZaN3ozR3k2bzJEK2hVUnBLMEw5cXloY3pRNzZKMEt6aEdXN1dYWW9KTzMzeDVzdUZjd1RWNC9nak8ybUtReVQzR1ZudC9Ebkl2UFV6VXVaaHZhUGRPWksvZ2JkT3EvOFFSUTV5UVdVVGw5MmtaZThFYTJuQ0RTOThBWExIMkVYVnBTMTA0VFF2VFJPYk1DTUgrVTVGcDNsNHEyYXV0d0hKQVd0SURyUkdGaGFiUkFoNnpsb3RIbHR1aHdFNHdvYVZjemoyN3pxVnc4WEJEbFByQldCRGRBMUZhUFNReWZxUUdSeU1MUTVYdU4xWURqRXVqb1NkaWRkdDFwUGRXNlp4UDVEVzUzYVk1cjZjRTF5Y2grYzBSTXpaMDVwd0wyQVNvcy9scERNdmRZR2Y2UnlSOGdjNCtUSU56bWRtUzdrSjdjOWp5YkNlYUhjcksycWdzcmtQaWNqMmVOdjhCSm9CQndubTlqd3VjSlpvNmRHUkhpd2dsTVVzdUk4RldaYW5lSTU2MHJ1WmJ6ZzFCRHEwQ3JSdFdwandPcGpOL0M0WEhkd1NJT1d4TkdRNjQ4R3BWK3VLRURJZnJZRzJRcEJPT3gybUpUdk5VWUxXdTZPM3krZVBjTUNpdUwyZCtDQWtMK2lDclVNRURKaC8rZGdrRHhDY3pTQmIzUGxSdkZzREFYME85WlNpT3NuNjdiY25xdG54VkIydVBaSmptMEdiWlkzeGhkcy9zMlFrcTdNV0ljVDNHZU5iWWNoNWIvbVBPMlcxbG1lUFZnN2REaE1KMDJFYmM4cDZJUmJsdVR3MmkwN0E0ejRyZk5SQmprR1ZINTB6YjlZZ3JRN3ZNVlVNdDBKRUo4aEY2aUNiOVNLSVRXaGJTZW1hTHAxSGRwQUt6emlxaCtqQkk4eHp5YnhOVWc0N1RNMlRkV3hFUGh5TXZnN1pjZFpuWEpDOWl3WE1HWDcwZHNmdG9UNlJNdWhhaDdvNUUrQUk0dGN5V0JhRG41bUpQS1YxRG5xNVh5c0VpcjBGblN1S1o3NEhSTFBZclUwZzlzaFhkK08zKzR5Q3c3SWtKd2NmNDJFcTB0TDBQVEUvYk9IQjJlWit5M1ZzYnVPMGh6SHg0YTNacnV4Z09FemJUbTNyNW0rVmRiS3MzK0lsNXpUQ1ZJN3NhTTdObm5uWndmSjVFalJPOWlLQVF3VFpEV0t4V2w5M3d1RmcvNGFkNWNGYXhETzQ3TU9PaWhWd3pzZzhSKy96cWkzcmp6Yk5nZFhSbW1SRWFZMm42UHVGU2pnblNmWVF6b21PZmVRWUJLTE1ydmt6d2M3Tzhad3Z4KzZmNGZZUEJFbmNlQ1ZLejZsV1RhWXJtMjJwY1RSTEVkQTkycXYxTWM1VXVDSGEyLzcyQlJzQkxCMTJBSzZJSHBQTHhyUGY1QnhjQjBiWmVCZnRGTEdVekVjQjVGZGV0VTMyRUJmTDNSeGZpYnE2QVBJVXJiNjAyVDZmS2RLUXZBQXZZNDN0NXEwMnljVjVZT3FnWFB1c0REV3I5VnFOOEpYOTYva2kySVRWVUQ3VVlWb1hvUFRuc2ozL2J0eUNqY1lqK1JxY3l6cU54eTRiZWVYam1NbmJVMldnNHhxS3Ivc2RVWDJLUUswMnJzZXlwN3gzRUorUkNDOWZRS3ZsNUIrUmZHM0huZHNSbEFhM1F3QUltVjFMSnZlZTR1aGxRa1JHNzd3SktaZnNDSzN6T1FmVVp5cW13ekJ0VjBxRU5MWVd1RnltZHFxalZzRHN3ajNzRXV3dE5sbm90Q0t6L1U2ZkhVc21ET2RlR29menMzZWQ1czZuZGFyN0RHUU1XMGxlaUxRK2djTlIyRnhvSFIwQWUrQ0lRTDZIU2NWNER4K1lFMlpla2FrWUZySUtzaWNMYkFaZ0c3VHRSTDdPSTRHc0JIcFEwUTZpOWpFUm5VaDRTbWxOOWNWZnFmeDdRdWVRRGk5NFZRbkVEb29NVHRYYWxTRERHdG5QQ29JUTBWbHNBN1dILzI4OVk1d3M0ZmxyNkhZaWMydFNBS0R3VEh6R0E5QXMxeW51dENvcCtjd0lUL0JSYmF1ZTJSWk9Jbko4cVZ4UG1udE9XSnhKamlKYkJWVnhqdUNRWnFpQ3k3WnJaMCtZUFlsT1JBeUVZUFNpRkx0MS9nVmN4emwzc1RYa09aTzRuTTFvbC9RWkxzUnJQTSsvd25RdUhJRENJanB1Ymx1SnZ6NUJ6Sjc2aEI2M05OS1pYTzhyNnh2ZFk0SmtkNUJKcStLMGJydDh0bU0vU25Xb3NNT0RNREUwNEhKaTNGMkR4NFhQOHJFdjV1OGR3dU5RTHRNUDNUNituS3hiQ2NOK2hpdkRiL09aaWV1QUdRZE9aUDJJRzk1bzFmYzhwTXFTcHRQYnJmSlRnQVlmS0dOdmt2T1J0MDhibVJmMjBXMXRzTFR5UytFcDQzYWM0bk82L1oxSXZ1MHdSN1hFNnV4aS9ObVNhZjYrN1FKODdHaVM1VGl1R0pia2RVckhpcE8yVGpzaFB0dXp0VTFXUEVWa3htc2prR2NzSHRhNHpLOWpwR0F4WERraFpWOVdoTFBRWTBoQ1FmWlluQzl2bnNsR0QwZW5UbzhOTFNzMmVMQ2d0aUVMRmtRUE1CcS9RazNFZEtFU0I5eDNPR0cvT3F6YmMrVTdPL1FNRW1wOW96TTVZWFZPN1FrZTNUa3NJVTRmSXdNOVpJTlptekhxWlJkZXQzNFpXVVUwSFFTYXgwSUFFQjFPakhrUjhmRkMzT1huK1ZVek5iT3dUbk0yZ2VUSTdHWGRuTlBQVnRXajkrMUo4bm1FVHNzZTFUVHNPWW1pcVp6Snp0MUNVamJFa2xsSWdoSnJubWRiRlFkTFhlTThtQ0crQ0NzNzNWczhQVTU5bnRIMEhpd0ZqKzNudVQwck42MkVocWNpcU9lcHNiRlhRV1JDaXd5dTNjZFZDSVBnekhTS2w5VVZoQS83alh5YUZWeDNueUZ4enVjYkV1RkRhZ2VDRWZScHhyS0xHTWNHMWVjOHhvVkZDNVpNcnMvMlVnTEhaOE5kUHNPYXNzWS9IT0FTcEp5OXJRY2RoYy9zY3hoNVdSVDlBbGtlakJJQzJGckhyZkxTUmNDUDh1VVd3bWtuVEU2T1YyRFk0Rk9ySmc2ZHJhZEg4Q3ZYcXhjL25nd0F6TTJuWFpTTnBHdnloR2FDZ3FCS1dKNHdsQk1VWHJNYVBsZkRNOTA1TGJua1hVdTVIQnkxYnQ0aG9JbWNRL1FZbWp4ckg1QWRic1daeUNVNUJzNEhqSG1VTzgvTWhtenJ1TWhrdytBTGh3VG1wSnJyZzFUcEgxODFUTE55TVNBZklZVHJObitFSllSMENvbzl3Zkt3YTV4blJ0Z3dOQ3FSRm5yaTBIbUhQVXJoY3YyaVUxb2NnMi9lSHZObiszQmNaektrZFVveFhnTGtaaGNNbE9xNE0wejc0azFaTTBjcVA3YUdtdlpYZ0htNHBFTngwMzA1VGVGaytlNHpzdlI5YlNnYlUvVk9qRWRzRnd3eTN6YTJuMmVaZk9ZWjRKdXc1bUJ2RzA3eFJNZjdRMnhZUkNkZVdwd1JnOGZqenVEMEVTTFRtOE1qcndvdGRFaGxRK1pEZjE1UFU2RWh6WW5oMzJtRWRjS01GZDNiaWdVbnA4WDcxTkYvdGpsTE0xZ09wQ2pVYUp1SFJIUi9aMDQzR0dDM3lMZjluOG5RblJFTUhpNmZLdjc5eVVCQXRNVUYzMWE0cWJxTGJJUzFVN3R2SE1YaVYrZE9PdExENmhOWUtpRS96dURKT0QrTk1qWjdQczlQMTgvSUgyd0VzTCtjWWdTWHh0aWpFOEVzTlR3dHpxOEEvZDIyeHovMkNIVDJ4T1lXSkNPT0MyRUdYKzQvcXNhSi9RN2JRUUJab1ljR3VsV3UxZW92ck5FNXJ0c3BSNThZYk1VTDdLQTZvL2g5NjVscnVUQk0xTllHTjg4QW5EdGdBOEZobVFqTjZTRG9CZVpEQkxPUEJiRGpIRUx3VmQ1Y2ZZbU90cFVDVFFJMzJtZEkwaGZTWlcxdlA0L1ZJYXBEeGw2azludkxBQk9vS2ZLdU03TkNQTENqdnlLMVJPcWViYzk0N0FoU3Q5L1h1TzJVS0krak1ud0NEalF1Mis0RVBLbFdOTnRuMnZJeXZFa3ZkcVRFcFE0Tmp0MDd6LzBnNE5qQ01CMitEblREbUJEMFRzZjNJVkJ6Z052UTYvWXpobE5hcnJwU2xVR2Z1K2ZGelFIRjg4VWc0OGV0b1dBOGdCL3dNenZNYXpuVi9BN3d0cXJxN3M2VWVuMTJoRjFRdk5kdElWcFlCTWtKMDZzRlRNUlJMN080bGhVMnM4Q0IySFlHYUVxd1QvWGZhWUh5Y01peCtYMzRrTUpNSkIwT25MYzQwclpyS2ZnSHJYRldnNmpOKy91NEhNVDY0Yy9iS0dlV0RRSmpnWXhqNzUwNmhpZ2tERm5GQTRLbWVWdDVERmU4UUJZWTlMZDZJTTVqOEhiVHpQRU4wNjBkOHdVb1BYRWtmaTBQUFFpa1FQN3kyUWpzMm16Qi9GVktsbnZZSHg1OE9BOXMzUHlTVFVmdVI4RjFMQTgzQ1ZpNE13ZEwzMjl3WXBXeDNqNituL0tvYXVNcHJOYnVzbjZlOFRNT2hYWFdQUXI5Y1FkOUxCRHMwVWtuWnBudDA0QTlxS3pZNG9uYThhelRxZGQ1WHM0dzdhYXpRSXdrRkNEcEFCQWd3cm1jcitjMHNwWFp6SXRtdUJzUm9Eb1VHZzJmNURhbllkRTVFZEZJTG1xZGd2Qm1kdER4ZE1OWDFXb052UTl1RVFpYmRhREpQRFhyTFVMYi9EREhlU2JhZXcxand1TmtmdmppeWF0YnRHZEJ1UFhEeU5IN1Y1bmM1OEQrNFBTMUJ3TDVGb2poNlpFNVU3UXh5TjVmSDVQblU4aFlUWjhRVWN5ckJ5S29UZFlCSCs0UHdZbkk1cU1lc3pPeWJTYTFOc3BzTVNDVG5NZCtmVUt5VTM1OElwVVBFd2lPa3JXYi9OVGhZMUNGTlZiazJGUHNPQjNFckpWcWIvSTVLcGFQeUt6TE5aMUFjMG9kbzQ5dXlFRlF4cThRQ2ZlWnhEekVUWjlUMXFXekRuVGNIcUM5ZkZyMGpNMG42T3dGclFsT0RTdjJmU1ZyVnNycGhNVkpVTmRueUNDWTBJRk1JOTZRMkp3ODNqN1BsNHlPV0s4UmVmTEJJWi93dFh4U0hqYVVtK29aNzdRckpXUHhYRTV4VUN3SzFBZXNiS09TVGZHT2ZQbTZSUG5NZ2NWNnpOVVN3eTJzSGlYYU8wdjRTSU1YT2VRU05EeEowdFA0ZmFiYXFmRmgvc3RhSkFJQ3YvWTRienQ5VnhZcEpGVU8wWFl1VHpxNS9ua291L0hBMU94SkxIdjJ2SjIwQjdOcDVyUEdNdkJ4WHl4Rmd2b3REdzZYQitqRmJzKzUrbGlPM0xmUUdlZElwK3Jlc3JHNTd1amMzWTNkT3NZZlkrL2V2b08xNzh2QkVuZXlCQU1pNUVBUjliUWRMdU8wY3ltOXp6UlZyTXNEVHNOZ1JtNTZHL2JRbUNZN1FZUEZ2c0VXM3B3TEpGWjlUa2FXSWpoenhFZnZRV0tjQXUvNGNYalZOZ2ZwV1NGclhXZEJxdnVBaDRvZFh3ZzZmb1hQNVBxd0creG9Cbno2dElSYnRNOGlPYVNwT2ZmVXNibU9rbmpPdUl6cHVmQWN5cmZ3NXNzUnJ5eUpGUFBYczlNd3lHa1R1TTg2ZVRFK1lOYjV6NDRyOGZ6RWRvVFB5QXY0UFU1WG1WMTI0T2dDcTNkdU1MbkliQ3RvKzhnRkFGbWsxRHF6bzN6b25PeUxCZVJtcGFNZVJjRkp6VDZaUHZ1ZWk0MW5TNTdYR3UzZ3VZL1RXUUJUS0hlRlY2OXRUWmtIK3lvbWkyek9jOXVlSGNiblF4LzBGeCtPMWEvM1RDaTExTWhPWUdJSHJMSDdiQ2Vyc3RsREo4ZFZKK2g2ek9mRFBSd2xrcDA1V253S1RQSXVUZDFjSTdwWHp6UHlUNWxlTmx3NjNnSkc5cUFDbEhDUExmdFFpczhDaGpQUHp3NDU2MUVjVnBsZlIvWmUySWxQbllPYXhBd244M2daY0lnb0MvVDZ5VnFEYlBZOG5LZGR6V292K3NOS0I0UFI4L2o0Rnk1cytyQTdhM0Y4b3BaMW15bWNaRngwM051cHQvWXhkUDB0VUg2ODlSMW5XcFdITnV3S011V1IwUU1ITTY3cnUwLzVLZnZ6aFZWT1Z0L1NONURVSjhRNVVNYUhQVmhxTk15VW1PcUx4QitXbVkvM3NZY0llN2EyWFk2WGRpaWliVzQ0Njg5TVpHd2F4dnU1SnlPY3h6anNiZi9UWTE3Zk1qdWJDeUNiem1tNG13ZWI0enFSTy9sWVllaHc4ckdQeTlRdzZINnlzZHNIMStLMjU3QTIyaFpqaDJVeGt4TjloQThNRVplRStEcHJiTmtza2FNUDgrMCtvYzdSVEVmd0xpdkdpSVJlQ25iaDhZSHN2cHN5Y0p3NkVJc2Y1VlBTYzVsV1VMZjZZTHZuSEdEWWVLMGNSSjdBVHg3aUJjeUwzZlJKSXc0L3hQTTlLWDBqN2xyc3V6bG5sbGREeXZpSWhlYzJMWTI1ZlBGTUJ3L0xUcjVnZllSVGh3ZzJ4QWUyMnRrRTZPemhVK0hXY3Y2NG8rUzBvMjFmb01tamU1eEhlNWJ3Rkorck1RRmx4MWg5QkhNZit1UmpIR0JSK2Rlb3FmdjB6NWlZUFg0TUhqa1N4L05xV0dVajJHMkhERHJnS3hOcFlYSGRacFhpUTVrTHVPQ2NzbWJ3UlFJYVh5eXo4RFBmZW9tODZWYy9JNHJxdGF3Zk5lcTBVajJBM2JJNHgwYzMyYm5zUTE3c1FEMVB1YktwR05zdzd6ejJSYlNZUmhXSG5wcXQ0cmN0bXlaOEVvQW14QmI1WnJxYmtCM25NeDViYVh3aXhPY2pIaDNEaVRwc0Z1Z0NsczJ1TXF0d3k3YlNCRG4zc0RoOEVnQlB3UGhUVHlQQjVQbmRuVjdGRXZ2L2VaOHhoN045N0NLTVNDR2ZBRnNKUmg2Ym5UR3JZenE1UFh1c1daMkNHSWZQZDRJRi9yM2hrZFc0dGtkNFBuN3JrWUdicUhMZUVPOEM2ekJZRTJuRVRaT2dUanFSUVRzSUNYZUsyZWVjZHNjNnhMYXVVMVdyQlppdE9nUGJhMjFPRi9TUXp2RzNWa3hndVh0R0I1V2RweUNkVnY3dVdDWVRVeUxzZUM0SFdGcnRZTXRLZEFvUWlzUUo2K056TkN2WThaeVJLdzQ4eFFDaGE4Z2NPS05aVkN1S2drOHBmWHpDUUZYS3J2QTVFOThPMmV6akI2cjl2aWpmNVROL0crSzFPUHk2TzhvU1VuSTdHcjlEZTdGOEkrRHNubVdqOVQyZnh5aUxISW9GZ0krNjhKNTc0U3hPM2E3TDU4UDRiSjBBL3IzcXBTUkIvRXp4ZVJxUmZRSVR4aGlBVnBqRm1EN2NiSnUyOVJqZmt2MHpYdTA3QngrTzV4QytmVzVXUHVtb2Vjb1lFVjhBY3J2MlBMTk1rR2Z3UlZaS1VNU0pzeVVpSGpIRzE5bUhxVHUrM3g2VEhzNnpTYUJld0lmRCtvb1BkQTcySEgrVnV4eldKOW1wQnV0M2pIeTJyUXpGM0Nyb2FtSWZtTHVkTU1DTlFkUnNyL0E1ajVzM3cyQlp2ZXZNQVNrL2xjU09MRHpQSjRXT0wrTkdzUmx5cUR6ZlhqMjFEejQyT1B0b2ljZmtjYlNtZkoyejI0dWxIbzdFNWlxUWloYWtUeCtUR3BEZU16MUMyVWY0ekIzMTVmTlVMUFc1MitOanFaOTcrMXluWUJIVTR5TlRuVFJ6cGplaWMzMEdlZmw1eHRncEgvTEpBc1FZNDd3ZGFXQ1ZBNEpXY1RUcE1OM3R3VFQvc211N1Y4KysrQzdyQURrRTl4N0hDVmh3OG5wZzdJT3BIWFhvOHhwOXFPT3AvdkZoeUw0WWszN1UwOUZCa3piSDNhZ0RCeHV3V3QyNE9rYTFOV0FsajBJUkZENnphWllHZVhyaU9jQzNXSi9scmN1V3UrODg3YXlmcnY3aGdhWGo4cHkrVnlKbWQ1cUhJYzJXcmpqTXdHTWdLQmZVMk5vOHkrVXIwdmkrY1Z1ajgrVjRnMjBCazArc3c0WTlodVhDaVVHT1RYZnFHcFRaSnlGNStqNWZuN3NtZjl2MjR6cXgvd1Q0dXVwVlBISWdOSGdXNUlGdVA3TTl2b1JMZmRWSEQ4R0lBZmZzQWNSOUd2ZVREMEFiQmRtSEEzeVBlZUVYTGRLR200cjdvWjdQWEVmOEJDSnZuUnF2OXhtTlZ0MUdIdzU5aHAxakg4UnRLMVVzaTJGbGZZYnRERDZwd256N3poSEVjNXp6cnFkUURCYW1oU3pwNTVuelphc1p2b0U1TGduazRaVEpzMXZsZkVuVGNYenoxSmRFSDV4bWtpRHlCcTlEOHJGamJJY0ZsL0xPeGZXYmc3UW15aEhXRHdTQno3NC9icWY3bkdPczZ2VTB3UWZOQVJuT3JMdHQ1YWhxNi9jOHhXUGVPVG5jczBXVGZGWXIzUjRwcHpPZ1R6ekJSeTZybkFDRTg4eTBKdzJXTXFtbmkrTjliYWF4ZThDR2ZvbUN3d0xzL2ZnOGV6WVZQQnhrcml0YWdXQ1RnZ2N6UFR2RTM0ZHVKcCtpbUIyd2RTcjFYMnZaQUVGajZEZUF6V0theElkd1B6QTN1M2tpb3VNNkQxSktYNXFlZk10S3VkSmxocHRvMkgxTXdadWR0d1hFcXVlYzh3dWFzV09BckdPKzY3UWppK1crUGg5Lys0cVRGaVcwRGlCNlNOS0cwL2h0ejBXNHdwaTJSbDgzdTVFUzhnUGR5Zlo0UG9pUkdidmlaYm1sTllhV2ZGb2xpTEJZcGpTZmQzWUY0T3VFRkx1WDF2REp1MnZZOHUyRDZ0LzJaV1FJZHU1VW0zd1ZDOVc2YytSdDhiUFpHbWRqeVozWXhCcmJNWHRiN3ZuNkNIRWN3L1A1NnBBVmJLbFpPa0M0NUlyUzlWa01kZHVVWjhORXNOM2t0a04zd2JibDdHQnBRd0MybmcwK25vbzQ4amlhcjhkajdMVUFadjhQUFBmdkVhNk8wVTRBQUFHRGFVTkRVRWxEUXlCd2NtOW1hV3hsQUFCNG5IMlJQVWpEUUJ6RlgxT2xvaFVGTzRnNFpLaE9Ga1JGSExVS1JhZ1Fhb1ZXSFV3dS9ZSW1EVW1LaTZQZ1duRHdZN0hxNE9Lc3E0T3JJQWgrZ0RnNU9pbTZTSW4vU3dvdFlqdzQ3c2U3ZTQrN2Q0QlFMelBONmhnSE5OMDJVNG00bU1tdWlxRlhoQ0NnSHowSXlNd3k1aVFwQ2QveGRZOEFYKzlpUE12LzNKK2pWODFaREFpSXhMUE1NRzNpRGVMcFRkdmd2RThjWVVWWkpUNG5IalBwZ3NTUFhGYzhmdU5jY0ZuZ21SRXpuWm9uamhDTGhUWlcycGdWVFkxNGlqaXFhanJsQ3htUFZjNWJuTFZ5bFRYdnlWOFl6dWtyeTF5bk9Zd0VGckVFQ1NJVVZGRkNHVFppdE9xa1dFalJmdHpIUCtUNkpYSXA1Q3FCa1dNQkZXaVFYVC80SC96dTFzcFBUbmhKNFRqUStlSTRIeU5BYUJkbzFCem4rOWh4R2lkQThCbTQwbHYrU2gyWStTUzkxdEtpUjBEZk5uQngzZEtVUGVCeUJ4aDhNbVJUZHFVZ1RTR2ZCOTdQNkp1eXdNQXQwTDNtOWRiY3gra0RrS2F1a2pmQXdTRXdXcURzZFo5M2Q3WDM5dStaWm44L3hydHlZdkRSZkc4QUFBQUdZa3RIUkFEL0FQOEEvNkM5cDVNQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUFIZEVsTlJRZmtCd0lSRWcrc2gwT3FBQUFnQUVsRVFWUjQydXhkZDNnVTFkNSt6MnpMcHZlRWtJUmlDQzBRYWdoZE9xR0lOQkZFVWNFR0lvSUZwUGhodVY3QWNtM1gzcEFyS2dvaUlDQWl2WWwwRWtwQ1NPOWxlNXZabWZQOXNUdkQ3R1pEVVVUVS9UM1BQSnZkemN5ZU9YUG1uZmZYQ2FVVWZ2bnRZclBaVUY1ZWp1cnFhdFRXMWtLbjAwR3YxOE5rTXNGc05zTmlzY0JtczhGbXM4SGhjTURoY0lCbFdiQXNDNDdqd0hFY25FNm50UEU4TDczeVBBOUJFT1IvRTBFUUlOOG9wZUlyb1pSQzNBQVE3MWNBb0pRUzk5Q2xWNi9QU0Y1ZVhseFVWRlFUalVZVHAxQW80aGlHaVdFWUpvb1FFZ2tnQWtBb0lTUVVRQkNBUUFCYUFHcjNwZ0RBdUk4bkFPQUJzTzdOQnNBS3dFSXBOUUl3VWtyMWxOSjZTbWtkei9PMUhNZFYyZTMyNm9xS2lvcjA5UFJxOTNHb2JHdnduaERpL1ozNEdRQlFRa2lEVjlsR0dZWUJJUVFNdzBBUUJLalZhakFNQTRaaHFFS2hnRUtoQU1Nd0VQOVdLcFhTcTdpcFZDcW9WQ3FvMVdxbzFXcG9OQnBvTkJwb3RWcG90Vm9FQlFVaE9EZ1lJU0VoQ0E4UFIwUkVCS0tqb3hFYkc0dUVoQVJvdFZyL3pYUWRoZmlCN2JjSnk3SW9MeTlIWldVbGFtdHJVVjlmRDcxZUQ2UFJLQUdhMVdxRjNXNkgzVzYvSXFESndVeStDWUpBUklEekFqTVBJQlBCU1E1UzNvQWxmMTlkWFowYUhCeWNvbFFxYjJFWXBpVWhwRGtocEJtQVpnQUNicEpwdGdNb3BwUVdDWUpReVBOOEFjdXlGM1U2WFg2elpzMHVlQUVjdlF6Z05RQkFFZmdJSVI1QVJ5bWxTcVZTQkRZSjBPUWdKOS9rNE5ZWXdBVUVCQ0FnSUFDQmdZRVN3SVdHaGlJOFBCeVJrWkdJam81R2ZIdzhFaElTb0Zhci9UZVhIOWorSENrcEtVRmxaU1ZxYW1wUVYxY0huVTRIbzlFSWs4a2tBWnJOWnJzc29IRWNKN0V6YjFEekJXWWlLeE9CVGJ4MlBvRE00MzFlWGw1c1FrSkNCNVZLMVVHaFVMUW5oTFFIMEJhQTVxOThEWGllZDVTV2xwNU5Ta282NDNRNno5aHN0cHpjM055Y0hqMTYxTHFab2h6VUJEZFQ4MkIyM2tBbkFwc0lhQ0tidXhMSWlhQ21VQ2lnVXFrdUMzQmFyVllDdUpDUUVJU0doaUlpSWdKUlVWR0lpWWxCZkh3OGtwS1MvRGVaSDlodW5GUlZWVFZRT3cwR2c2UjJ5Z0hOYnJjM0FMUXJzRFFpcXAxZWdFWWFZV1VOR05uRWlSTVZIMzMwVWZlQWdJQnVDb1dpS3lHa0M0RFV2K08xNEhrZXBhV2xhTmFzbWZkWGVZSWdIT000N3JqUmFEeDJ4eDEzSE51OWU3Y2dBenNKOUFnaGdqZWpjd05iQXpiSE1BejFBWEJRS0JUMFN1eE5EbkFpZXhNQlRsUlB3OExDR3FpbmNYRngvcHZPRDJ4L25CZ01CcFNWbFVrc3paZmE2Y3VPeG5FY1dKYVZHSm9QT3hxUjI5RjhNRFBpdzE0bXNqTHl4Qk5QS0pZdVhkcEhvOUgwWkJpbUZ5R2tKNERnZjhJMXVReXdlWXVaVW5ySTZYUWVNcGxNaDJmT25IbG96Wm8xVGg5QUo0akE1Z1kwNnNNdVI3MlpuSmY5alhyYjMwUUdwMWFySllCcnpQNG1WMDlGOXRhMGFWT0VoWVg1YjBJL3NGMC80VGdPSlNVbEhpeE5yOWRMTE8xcTdHaStuQU1pb0hteE0wbk5sREV5eUlHTVVzclUxOWUzQ3c0T3ZsV2hVUFFqaFBRSDhJOWM5ZGNBYkEyZVU0SWc3T1U0Ymw5VlZkVys1czJibjNPRFd3TldKMmQwSW51VC95MDZHT1FnSndKY1k4NkZLOW5mUlBZV0hoN3V3ZDZTa3BLZ1VxbjhONlVmMkg2ZlZGWldvclMwdElGelFLNTJpcUFtc2pTUm9WMHRvUEU4TDZtWmdpQTBDbVpXcTNXQVdxMGV6RERNWUFBZC9GZm5kd0didDJRN25jNGRScU54VjNSMDlENjR2TGlDTjlnMUJuSU13MGpxcWtLaG9GY0xjQ0tERTltYkNHNXk5ZFRidVpDWW1JajQrSGoveGZjRDI3V0x4V0pCY1hFeHlzdkxVVlZWNWRNNWNLWHdEUysxazNnNUJ1VHNqSGd4TkFuTWJEWmJsbHF0emlLRVpBRm82cjh5TjBUS2VKNy8wV1F5YlkrTWpOeU9TK0VxUGtGT3BxNTZxS29paS9QeW9OSXJzVGR2OWRUYnVSQVhGNGVFaEFRa0p5Y2pLQ2pJZjdYOHdIWjFVbEpTSXJFMHVTM05sM1BBMjVibWc2VmRDZENJdDgzTVlyRU0xR2cwdHhGQ1J2bkI3S1lBdVMxNnZYNUxURXlNeU9ROFFNNmJ4Y2xBcmxHQVV5cVZqUUtjbkwxNU94ZThiVytKaVlsKzc2a2YyQzR2SnBNSlJVVkZLQ3NyODJCcEJvUEJJeWJ0S29Oc2lhaDZpdXJtWmRnWm85UHAwb0tEZzhjeURITTdnSGIrSlhsVHlsbVdaVGVXbDVkdmJ0bXk1Umtad1BFeWtLT3kxd1lzVHE2bXVvR05YazF3cnp6MlRmU2NpdXl0YWRPbWFOYXNHVUpDUXZ4WHlBOXNEVm1hNkNEdzVmRnNMSVJEQkRWZmdDYlBFcEFEbWdobW16WnRDaGc4ZVBCRXBWSTVnUkF5ekw4TS96b2lDTUkycTlXNjRhMjMzdHE0YU5FaUd3Q25IT1JrTEU0UTJadTNtdW9WSHVJQmNDSzROUllhNHUwNUZSMExmdmJtQnpZQWdOVnFSVUZCUVFNSGdjalN6R2F6WkV1N1F1YkE1UUNOeU5WT3ZWN2ZJU2dvYUJMRE1KTUErRmZpWC95WnlISGMycEtTa3ZVcEtTbG5aYW9xNzYycXlnQ09YZ25nTGhmWXE5VnFFUndjTExFM2I4ZENpeFl0RUJnWTZMOHkvMVJncTZpb2tGVFA2dXBxRHdmQmxlTFNaS0RtRTlEY0FiVWU2cWJWYXMxU3E5V1RDU0VUL1V2dWI4bmkxdW4xK3JYUjBkRTczQXhPRG5DOEx6VlZGaWJTQU9BYXM3MzVpbnNUVmRQWTJGaEpOVzNTcE1rLy9wb28vMGtueS9NODh2UHpVVnhjaklxS0Npa2x5bUF3d0dnMHdtS3hTS0RtY0RoOFpnK0lnQ2F6by9rRXRMdnZ2bHZ4MFVjZjNhMVVLdThHME1kLysvOTloV0dZY1pHUmtlTjRudDl2c1ZpK0hqeDQ4TnJEaHc4N1JaQ2psRGJ3clBJOFR3VkJvR0xpUGMvelZCNFM1SFE2cVR4Y1NOUVE1S1lROGFFclBvU3RWaXZNWmpOTUpoTnV1ZVVXS0JTS2Z5NWpLeXdzL0VlY3FORm85QWxvb3NkVHJuWmV6bzdtUytXVXNUT3lhZE9ta05hdFc5K3JVQ2ltd1I5ejlvOFVTbW0ydytINGN2MzY5V3NXTEZoZ0pJVHdNaWJYUUUyVnNUaHZCbmRaKzV0Y1BSVURlOFdjMHlaTm1pQTVPUm1ob2FIL1RHRGpPTzV2ZjVKbFpXVW9MQ3lVdko1aUJvRzM2dGxZR0llWDJrbGthVThTcUdWblowZTBiTm55Zm9WQ2NUK0FGUC90N1JjQStYYTdmZFdtVFp1K25qSmxpczVMVGVYZDRDYXBxTzVnWHlyUFFmVldUMzJGaFhpblpFVkhSMHRlMCtiTm02TnAwMzllNU5EZjJzWkdLVVZ1Ymk2S2lvcWtnTnZMZVQyOU13Z2FVVHRGTHlkREtTVW5UNTRNYmR1MjdReUZRakVEd0MzK2U5a3ZQdVNpeldiNy9LdXZ2dnB5K3ZUcGhzc0JIQ0ZFa0NYZGUyY3VVRjhaQzQxNVRjV0EzbWJObWlFMU5SWHViQWsvc1AyVnhXUXk0Y0tGQzVMNldWMWRMWGs5NVFHM2plUjVFdTlVS0M5UEo3Tmt5UkxGa2lWTEhsUW9GQS9DSDMvbWw2dDcwSjYxV3Ewcjc3ampqdFZidG14aDNRQW5xYWd5Z0JQa0hsVHYxQ3lWU2tVYnl6ZVZxNldSa1pHSWpZMlYxTktVbEpSL1RNemIzeExZcXFxcWtKK2ZqNUtTRWxSVVZEUUk1ZkJPWHBmYjFMeFltb2RqUVBSeTJ1MzJPMVVxMVNNQWV2aHZWNy84Qm9BN2JEUWFQd3NQRDk5SUNPRzhBTTZid1ZGWkJnUDFabS9lTVcvZUFiMWlTRWlUSmsyUWxKU0VXMjY1NVI5UkR1bHY1eFV0TEN6RXhZc1hQZUxUNUxtZTNzbnJjcFltT2dya2FxZk1qc1pZcmRhQmFyVjZwanZseVM5KytXMXNncENNc0xDd0RKN25SMVZYVjMvV3BFbVRBM0tBOC9haThqeFAzUUpCRUtoWC9UN3hQWHg1VVVXeml1aEZ0ZHZ0c05sc2FONjh1Ui9ZL2lyMnRQUG56K1BpeFl1Tk9na3VVOW0yQVV1VHE1MzE5Zldwb2FHaHN3Z2hEL3R2Uzc5Y0wyRVlaa1I4ZlB3SWxtVS95c25KK2J4ejU4NzVNb0FUdzBSNEFJSWdDSUxZMzhLOVVURmxUdzV1M2lBbk9zQzh3YzF1dDZOMTY5Wi9XN3ZiM3dMWWJEWWJ6cDgvNytINWxNZW5OV1pQODJacGJsQ1QxTTU3NzcxWDhjRUhIOHhXS0JTUEFVajAzNHArK1NORXBWTE42TlNwVTViRllubS9iOSsrbng4L2Zwd0Z3TG5aR3lPcXFKUlNxUmltMjRGRjVjVVZ2QUhPdTFxekhPQllscFhBN2UvWVNPWXZEMnc2blE2NXVia29MQ3lVQ2tMS3EzTDRLZ2JwZm9ySlFVM08waGhLS2JGYXJVTTFHczNqQUFiNWJ6Mi8zQUJwR2hnWStQeXZ2LzQ2b0xxNitxTW1UWnJzSllTd012V1U0RkpPS3ZWaWNIS0FvNzZhQXZsU1Q4VW9nTlRVVkVSRVJQaUI3V2FScXFvcWozQU9NWW5kVjRWYldTZ0hFZW01RDViR2xKYVd4c2ZGeFQzT01NeGMvNzNtbHo5QlBSMFFIeDgvd09Gdy9IZkhqaDJmWm1WbFZiclZVMFlPY0s0SzVrUm9qTDNKVkZWY2pacWFtcHI2dDNJcS9HV0JyYVNrQkhsNWVTZ3FLcExDT2VUTlZYdzVDYnhaR3MvemNwYkcyTzMyQ1NxVmFtN3B1ZU5keXgzQnlFaHZkVk9kYzMxOVBXcHJhNUdhbXVwSGdMK0E2UFY2Yk5xMENRNkhBNE1HRGJvbWc3MWFyWjQxYk5pd1huVjFkZTlIUlVWdElZUW8zT29wSjdPOUVibjlUUTV3TE1zU2xtVWJ0YjE1TXppTzQxQlRVd096MlF3QWlJaUlRT3ZXclg4MzhTZ29LQUFBeE1mSFg5WDVWMVJVd09Gdy9HN25CdFBvTjZ3ZW55eDdFb1A3WnlJanN6OGVXZmdxeWt6T20yTEI1T2ZuNDh5Wk14NXhhcGZZbWc3RkY4N2cySkZma1oyZGc4TGlNbGhzZGpnY0RpSUNuRHMxaWdpQ3dBaUNvS2lzckV4Mk9wMnZxVlNxL3dIb3V2by84M0RQd25kdWluTTlmUGd3M256elRRREFrU05IOE5wcnIvMnBZL2c5d25FY0JnMGFCSVBCOEtlTjRYckwyYk5uWWJmYkczenVkRG94WWNJRUZCVVZJVEF3RUZhcjlacVBUUWpwSEJrWitSN0xzb3QzN05qUmpGSWFRQ25Wd05XWVdrVXBWVkJLRllJZ0tBUkJZSGllSjA2bms3QXNDNVBKQktQUlNFUXZxRHlQMUdBd1NGV2lLeW9xVUZ4Y2pBc1hMdURRb1VQNCtPT1A4ZmJiYi8vbWRmYlNTeS9oekprekFJQ0NnZ0tzVzdjT0sxYXN3S3BWcTY1cVBXelpzc1huLzE3cmVtZ1UyTFo5OEN4ZS9IUTNSazUvQnYrMzREN2svZmdlSG5uMjR6OTlJWjA3ZHc1bno1NUZmbjYrUjdWYmthMVZGZWNodjZRYXlzQlFoQVFIZ0hOWVNIMjlub2lNemMzVWlDQUlJa3NiRngwZC9SVWhaT2JOK05ULzhzc3ZrWkdSOGJjWWcwcWx3dnZ2di8rYnVpN2REUFBnUytiTW1ZT1NrcElHbitmbDVZRVFna1dMRm1IeTVNbG8xNjdkNzVtM0IvcjM3Ly9mRXlkT1pBSFF3dFVUVmdRM3BSdmdHQkhjM0wwMENNL3pjRGdjeEc2M0V4SGNMQllMVENZVFRwNDhpWUtDQXRUVTFFajlQVmlXeFpneFl6Qnc0TURmTkU2VHlZVGR1M2VqVFpzMkFJRE16RXlzV0xFQ3Q5MTIydzFmRDQwQ1cxRlJFVWhFYzB5Wk5BWWpiNzhYTHk5L0VjTzZKTUVKUUY5NEZIUHZuNENNakV6Y052a2g3RDVYQlFBNHV2NU5ETSs2RjNrMkFIRGl4WWRHNHVGbFg3cDUrVWxNeWhxT2Q3L1lpRGxUYjBkbVJpWSsyMTNvWW1DSHZzYzk0NFlpSTZNWHBqNzZIUEpySFNKdHhOWlBsbVAwZ0w3STdEc1lEeTU0QmFmUG5VTkJRWUhVRHMrN0owRkZlVFhBcUJBYUZBQ1ZXa3ZVU2dXbzRIU0JtdE5KT0k1bG5FNG4wMlBBaVBCdjlwMTVRYVZTZlFtZzI0RnYzOFR3L3IwdzhMWjdjTGpRSktldUhtTlk4dVlhT0c3UVRXTTBHbkgyN0ZuMDZIRXBEdGhxdFdMZXZIbm8zNzgvSG52c01UZ2NydEdZeldZODlkUlRHRHAwS0NaTm1vUlRwMDRCQUw3NDRnczgrdWlqR0RCZ0FCWXZYb3lzckN6TW1UTkhiTHFNdFd2WFl1VElrY2pLeXZMNXBQUTFobDkrK1FYang0L0g0TUdEc1dUSkV0aHNOZ0JBYlcwdFpzK2VqYXlzTEl3ZlB4Ni8vUEtMdE05ZGQ5MkZrU05IWXM2Y09aSzZJOHFubjM2SzRjT0hZOGlRSVhqdHRkZmdIVFR1UFlidnYvOGU3NzMzbnZUOTZkT25zV0RCQW9rcExWdTJERU9IRHNYWXNXT2xNWmpOWmt5ZlBoMnZ2LzQ2aGd3Wmdva1RKNktvcUFnQThNSUxMMkQvL3YzUzhWYXZYbzNWcTFkZjl0cnMyYk1IRXlkT1JHbHBLZWJPbll1SkV5ZGk1ODZkQUlDbm4zNGFUenp4QkNvcUtqQng0a1JNbkRnUkxNdGU5bmpyMTYvSDY2Ky9qaGt6WnFCZnYzNVl1blNwTkEvTGx5L0hxRkdqdWl4Y3VQQ0RYYnQyemYzd3d3K2pLYVVCQURTVVVoV2xWQ2tJZ3BMbmVVYmMzTUJHREFZRGFtdHJVVnRiUzJ3MkczUTZIVTZmUGcyajBZanM3R3hzMjdZTlI0OGVSV1ZsSmNyS3lsQlFVSURpNG1MVTFkVkp2NStYbDRkNzdya0hnaUJJNDUwOWV6YU9IajNxY1E0Yk4yN0VxRkdqd0RETUZkZjI1ZGJEdVhQbk1HSENCQXdZTUFDZmZ2cnBGZGZraFFzWE1IUG1URHp3d0FQbzM3OC9GaTVjQ01oMGM0K3Q4c1FHOUdqZkVwMTZqY0RTVjk3QjZSTFhpVkxlZ0Zrak9xSDdzR240YnRONnpKcHdLMXIzbUlBU084V3VqK2VqUllzK09HbW1vSlRESTROU01HejJXNjc5cXZlaFM0c1dhTm02RTJiTW00OUY4NS9FM253eitMb1RHTkMrSlVZLytDdzJyRitOMFQzYll0VGpybjFPckZ1R2xpM2FZdjdySy9ISzBqbElpb2xDMXJRbk1ILytmRXlmUGgzanhvM0Q0TUdEa1ptWmlZNGRPeUkxTlJVYUJRRlJhaEFaR1VsQ1FrS0lWcXNsYXJXYVVTcVZDdUt5S2FwWHJmbDI4T0lIUi8vWXNtMGZlcXlhbzQ3U1BiUnJTZ3M2OXFHbGRQM2FsWFJZdDFUYWVzVGpsRkpLVDZ4YlJsdTJhRXVmZWV0L2RPMm5LMmlubEpaMDJib1Q5RWJJcWxXcjZOdHZ2eTI5Ly9ISEgybi8vdjFwV1ZrWmRUZ2M5TTQ3NzZScjE2NmxsRks2WU1FQytxOS8vWXNLZ2tBUEh6NU1lL1RvUWExV0szMzk5ZGZwZi83ekgzcmt5QkU2ZE9oUXluRWM3ZFdyRjYydHJhVUhEeDZrSTBlT3BIcTludXIxZWpwa3lCQjY4dVRKeTQ1QnA5UFI3dDI3MDdObnoxS2U1K25DaFF2cEcyKzhRU21sOVAzMzM2ZWZmLzQ1cFpUU1E0Y08wWDc5K2tuN21Vd21halFhYVhwNk9qVVlETkxuNTgrZnAvMzY5YU1XaTRWYUxCWTZaY29VK3NzdnYxeDJERFUxTmJSMzc5NlU0emhLS2FWTGxpeWhhOWFzb1pSUyt2cnJyOU9ubjM2YU9wMU9ldmJzV1pxWm1VbnRkanMxR0F3MEpTV0ZIamh3Z0ZKSzZZb1ZLK2o4K2ZPbGVaMDVjNlowL0dIRGh0SEN3c0tydWtaRGhneWh1Ym01RFQ0L2NlSUVIVE5tekZWZjY0OC8vcGplZHR0dFZLZlRVYlBaVEFjT0hFaC8vZlZYU2ltbE5wdU5HbzFHT21QR0RQcmpqejlTbnVkL0tpd3NuQUNnR1lBbUFLSUlJV0VBZ2dBRU1BeWpKb1FvQ1NFS3RWck5CQVFFRUFBa0xDeU14TWZISXprNUdRRUJBV2pldkRreU16TXhlUEJnakJzM0R0T25UOGY4K2ZQeDBFTVBZZURBZ1RoKy9EaFlsZ1dsRkdQR2pNSE9uVHRCS2NXNWMrZlF0MjlmT0oxT0Q4d1lOMjRjeXNyS0dtREpwNTkraXVlZmY5N2pNN2VxalBUMGRCZ01CdW56anovK0dHUEhqb1haYkVaVlZSVXlNek9SblozdHNlK3FWYXZ3OXR0dlMrOVBuejZOcmwyN29xeXNERmFyRlJNblRteWNzY1dsajhiV3JkL2p2cXdPMlAvTmV4Z3plQWcrK2ZrY2hPSUQySEhXZ0lrUFBvM2JSNDdCb3NmdUJsdDlGTHRQMWw4VkN4bjE2SEo4K09veXZManNaZlJwR1lTQ2c3dFJhR1V3ZmQ0aWpCNHpHVys4K3dGbWp1dnRlZ0o4dndFMExBRjh4Um5rRkJrUW9IRGk5UEdqVXB5YWQwaUh6V1lEVHlrZzhCNnFwOHZyS1RBVVVNeCtZOVBEVXllT1g3bGsvc3loR25zWnR1M09SZjZ2aDFEUEIrREJwNS9CbUhIM1lHQ1hoRXRQb2U4M0FCRkpTRkFZVVdVTFJHSUVnMTI3OXQwUXhyWjI3VnFNR3pmTzQ3TTJiZG9nSVNFQmFyVWEzYnAxUTBWRkJRRGdwNTkrd293Wk0wQUlRZmZ1M1pHY25Jd1RKMDRBZ0ZSMU5TUWtCRXFsRWtGQlFXQlpGcHMzYjBhVEprMndkdTFhckYyN0ZqRXhNVGgwNk5CbHgzRDQ4R0YwNk5BQmJkcTBBY013V0xCZ0FjYVBIdzhBbURGakJoSVNFdkQyMjI5ajU4NmRxS21wa2ZZVGY5ODdJRFF1TGc0cWxRcnZ2UE1PVHA4K2paVXJWelpRTWJ6SEVCMGRqUzVkdW1EMzd0MWdXUmE3ZCsvR3FGR3VaSkFmZnZnQklTRWhXTGx5SlE0Y09BQ0dZWEQrL0hscEREMTc5Z1FBWkdSa29LcktwV2tNSERnUU9UazUwT2wwT0hueUpPTGk0cTVIVzc5cmx1N2R1eU04UEJ4QlFVRm8zNzQ5S2lzckFRQUJBUUVJQ1FtUjZxc3hERE80V2JObWIzenp6VGRUM0twcGdLaWFBaEJWVXdVQVJzeWVJWVFRdHlPTjJPMTI4RHdQdTkwdXFhWjZ2UjUxZFhWU1lMdlJhRVJ1Ymk1T25Ub0Z1OTJPR1RObTRQUFBQd2NBZlBYVlY3am5ubnM4NnIzbDV1WWlKQ1FFQ1FrSlYzV3VqYTBIQU9qY3VUT0Nnb0lRR3h1TFljT0dlVEQveHU2TGhJUUVKQ1FrUUt2VjRxNjc3bW9NMkZoc1cvTVo5aGN5ZUd6eE1temJzeGUzZDFEaGxkZmVkM2xRQUdnMHJ1YXRLdmNyeC9MdWZRWElHR3NEQ2ZlS2wyRTVCd0FGTkJxWGc3WkZlaDlrOWUzc29wd21DemliSGhmT24wZGhZUkhDazFJUkc2SzhYUGNvUWtFSXBZSlVPODNwNUJpZTU1bml2TzBKdlZxMmVDMUFxMzBEUUlKU280WUNBTWV6NEp3OEFBV1Vtb1pPWXJ2TkRpWERvNmF5RXBXVjFlaVNOUVZadmRyZUVGdGllSGo0WmF1aE1nd2pxUXNjeDBHajBVamZhYlhhSzZvL05wc05vYUdoMGpaMjdGajA2ZFBuc21QZ09BNXF0VnA2SHhJU0lwWEZlZTIxMTdCKy9YcjA2TkVESTBhTXVLcnpEQXNMdzhhTkc1R2Ftb3B2dnZrR3c0WU5RMWxaMlJYblllclVxZmoyMjIreGZmdDJEQm8wU0FveXRkbHNpSXlNbE01cDd0eTVQdWRRUG5kS3BSTGp4NC9IOTk5L2ozWHIxdUd1dSs3NjAyMTNoQkJjSVk4N1FhMVd2elJ6NXN4bk5tM2FsQ2lxcGpLQUU0R05jZHVUSVFnQ2NRZm5Fa0VRaU1QaDhIQXE2UFY2NmQ2eVdDd29MQ3lVd0sxdjM3N0l6OC9IdVhQbnNHM2JOa3lhTk1sak1HdldyTUdFQ1JPdSt6eW8xV3JJUzZ0ZHpYMmgwV2dhQXpZbGp2KzRFazh0ZUJaN1QrYWp0TFFRZXJQcnhsRTA2NFpPMFNyOHNPNS9LQ3d0eGFvdk53Q0JMZEd0WXd6aVkrSUExT0dYZzluSVA3a0xGNnI1S3c2OFpaY01SQ2hZYlBwbUhjcEs4L0RZdUV6MHZ1ZEZtRXdtTkVtK0JaYmFLZ2loOGJpbFpUTW9CUllCYWtXRE9EVjN4VnZDc2l3VWhBQlVJQ3pMRVo3bkdVR2d6TkNIWCszWHBIbm1oNW50dzJidTJyZ0c1NHBMOGUycU5iQ1FFR1IwYVkxYk9uUkVJQ3hZdjJvZENzOGZ4Y204T21sOGZYcjNCS2ZYSVNFakN3OC9PQTF0NHNPUWtkSGxEMS9ZYTlhc3dSMTMzSEZOVC9zdFc3WklidmJzN0d4MDdOanhpdnRVVlZWaHpKZ3htREJoQWxxM2J1MnhZSHlOb1hQbnpqaDY5Q2owZXIzMFB4OTg4SUhrdFIwM2JoeTZkKzh1cVFsWGtsMjdkdUhsbDEvR2JiZmRobGRlZVFWdDI3YkZ3WU1IcnpnUDNidDNSMmxwS1ZhdVhJa3BVNlpJbjJka1pJQmxXVXlZTUFFVEpreEFRa0xDVlFXZlRwbzBDZXZYcjhmaHc0ZXZ5WGl1MVdwUlYxZjNwNEJmZW5vNmpoNDlPcU5YcjE0dkZSUVU5UERsV0FDZ0VBU0JFZG1iNkRXbGxNS1hVMEhNMXJIWmJGSUovYnk4UEp3OWV4YVRKazNDbzQ4K2lxRkRoM3BVQ2VFNERydDI3Y0xRb1VPdnkza1ZGaGFDVWdxSHc0SGR1M2VqUTRjT1Yxd1BPcDFPc2pmLzlOTlBqY1d4TVhqc3BmK2lldjVDekJnM0JCd0ZvbHQyd2Nzdno0RlMzUVRMWHY4WFpzNTdIZ1A3cllJNnJDbWVlZVZ0cElVQ0dId25ScVY5ZytVUDM0WlBXL2REaTZaaDBGM2hKRFRKL2ZISzBnZngxTDhYb2UrN0hLS2FkOFZ6QzZmZzlPblRpTzQ0QkptdEwrRG5iejRENitTaDBJYWdaWW9HQVhCNng2aEo4V2xRS0FnUkJDSUlQQUhBREo3NHlOVFgvKy9oWndqUnBpeDQrWFVVUFRJUEkyN3RCMFZBQk81YitocUd0dElDR0lvbER3N0JzeDgralI5WHg2Sjl3cVdxbzhNZmZoNlBsejZCTng2Zmd1VThFTjJxSzE3cVB4bEErQisyWUZtV3haNDlleVNEK05YSTBxVkxNWFBtVEd6YXRBa1ZGUlZZdW5UcEZXL284ZVBINC9UcDA4akt5a0pNVEF3VUNvWGs1bTlzREFrSkNaZzdkeTRtVEppQW1KZ1lBSkRjN2pObXpNRENoUXNSR3h1TDJOaFlDSUlBZzhHQXNMQXdqQnMzRHZYMTlUQ1pUQmcxYWhTQ2dvS3daY3NXWkdabVl2WHExUmd6Wm96cndhbFFTRGZJNWVhQkVJS0pFeWRpeTVZdFNFbTVWTmR6NGNLRmVQVFJSekYyN0ZoUVN0R3VYYnVyOHFhS1BRTmF0V29GcGZMcXd6dW5UcDJLT1hQbW9Ibno1aGc5ZWpTbVRwMTYzZGZEODg4L2p4MDdkcUMydGhiSGpoM0RTeSs5aFBmZmZ4K3RXN2ZHMUtsVE1XclVxSUZ4Y1hITkJnMGE5TmJQUC8rODBaMkdKYS9zekFNQXBWUnd4MjVDb1ZCUWtSQ28xV29hSHg4UHM5bU1VNmRPU1d6eHM4OCtRL3YyN1RGeTVFZ0lnb0EyYmRxZ3VMZ1k5OTU3cjhmNGZ2NzVaL1R0MjllRHlRUEFoZzBiOE5wcnI4RmtNc0hwZE9Mbm4zL0dJNDg4Z2ttVEpqVzZIa1NRR2p0MkxQUjZQWHIwNkNHWkR5NjNIaHdPQis2OTkxNHA5T2FLWll0WWh3bFdCNFB3VUsvTzA0SVQ5WG85Z2tPam9mWllCd0wwOVhvRVIwWmVVL1N2d0RxZ045c0FCamliaytNUnpsRmRYWVhhZWgwY05sdURiQUk1cU1teUNKaHBkMDlWTFAvUGZ4ZEVod2N0Z2tjZ3NtdDgydUJ3YU5TZWhOVm0wUVBLWUdoOXFLU3N3d0tqalVkMCtCOWZhdm5zMmJNNGN1UUk3cjc3N212ZXQ2NnVEcUdob1ZDcFZGZTlqODFtQThkeEhtV2tyelFHbG1WaE5wc1JHUm5aWUlIWmJEYUVoMThiOEp0TUpoQkNFQndjZkYzbXdXQXdRSzFXLys0OHlDbFRwalNJdTl1NGNhT0g1MC9za1hHbGN5NHVMc1lqanp6aThWbjc5dTJ4WXNXSzN6eSttcG9hYUxWYU1BeURmLzNyWDg3RXhNVFgzbnZ2dlk5T25UcGxkNmRrY2U3TjZhN3pKaEJDQkhraFM0MUdBN1ZhVGNYYWJtTHBJN0ZvWlZSVUZPTGo0MkUwR3BHVGs0TlZxMVo1bk91bm4zNktQbjM2b0ZXcjZ4ZlFMaWJyeTBOQkdsc1AyZG5aV0xod0liNzc3anZvOVhwRVJrYmVYUFhZZERvZGNyeEFUWFFTaU0xVzVOMmpaS0FtcjV2R1ZGWldKa1ZGUlQxRENKa0J2L2psYnlxQ0lPRHV1KzlHMDZaTndmTThUcDA2aGErLy9ob2hJU0VyZCt6WThlSHc0Y05MQ1NFT0wzRGp2Y0JOS2owdWdwdThHNVlJYnFXbHBTZ29LTUNzV2JQUXAwOGZ0Ry9mL3FiSkx4V0JiY09HRFpjWS9jMENiSEpRS3lrcDhRQTFlY01WSDB4TlRJMWlCRUVnSnBPcG0xYXJYZWl2bWVhWGZ3cTRaV2RudzI2M0l6MDlYWElnOFR5L0pUYzM5NzEyN2RxZEJ1Q1FzVGVudTdrTTcrNnhJSWlOWStUZ0pwWWNGNzJYWWcyM2xKUVVxV0RselFKdVZxc1ZoWVdGSGtIUU53V3c2ZlY2Wkdkbit3UTFrYW41VWo5bFdRU0VVc3JZYkxaaGFyVjZFZnlWYmYzaUYxQktENWVYbDcrVG1KaTQxd3ZjT0RlNFNjek5YWDY4QWJnMXBwYUs0SmFXbG5iTlpvY2JJWDk2RXJ6QllQREoxSFE2bmM4S0hWN3Fwd1JxRG9kanNsS3BYQVNnbFg5Sis4VXZya3E5Q1FrSmtiVzF0VzlGUjBkdnBwUXl4QlU0UmlpbEhOeE9CY0dkVXVBbU9SUXV4d1AxQVpTK2ZnTnBhV20vS1MzcWJ3dHNKcFBKcDAxTkJMWExxWjl5VUdOWjltR0ZRckVZUUl4L09mdkZMeDdBa3hJVkZiVllyOWNIaDRlSGYrTXVkMFM4TlRZUjNKeE9wMDl3YXd6VXhLMURodzQzVmFNWTVzLzZZWXZGMHFpandFY1RZOUlZcUhFYzk1UkNvVmp1QjdYRzdRLzMzWGZmVFRXbXdzSkMvTlVhZGIvODhzdm8zYnMzaGc0ZEtxVWFUWjQ4R1pNblQ4YjA2ZE92KysvdDM3OGYxN0huYjB4WVdOZ1NzOWw4THdDdExKaFhucWtnWlNrNG5VN2lybHBKUjdRQUFDQUFTVVJCVk5NbUpkRGJiRGFQUU42NnVqb3BlVDQvUHg4NU9UbXdXQ3c0ZS9hc2xOSGhMZlBtelpNeVpScVR6WnMzU3hrT2Z6bGdzOXZ0MStMOUpQSU9VcUpON1oxMzNsRnhIUGNzd3pBdndwVlM0aGNmd3ZNOGpodzVjbE9ONmNVWFg0VEZZcEhlRzQxR3pKNDkrNmFkdzVNblQyTExsaTM0NmFlZnNHM2JOblRxMUFrcWxRcXZ2UElLbm52dXVlcyt2elUxTlZpK2ZQazFoZXo0a29zWEwrSzU1NTRUM3dZRUJRVXRyS3lzZkVpajBRUTFBbTRLUVJDSXZQeVJ1OUt1Qkc0V2l3VkdvN0ZSY0h2aWlTYzhVcTNrY3VyVUthbGdRbU5TV1ZrcEZTZjRTNm1pSE1kZDF2dnBaVk1UY3o0aEw4Znk2NisvQnFlbnB5OWlHT2JKdnlNWUhUaHdBTTJiTjhmKy9mc1JGeGVIdm4zN1NqbDFack1aMjdkdkJ3RDA2ZE1IMGRIUjBuN2w1ZVhZdDI4ZklpTWpNWERnUUo5VkZrNmRPZ1dOUmlNVkVheXRyY1hPblRzUkdCaUlmdjM2ZWFnVFI0OGVSVjVlSHZyMTY0ZmMzRnpjZXV1dGtscXliOTgrbEplWG8zZnYza2hNdk5RT29xeXNEUHYyN1VOb2FDZ0dEaHpva2VZRnVMSWlhbXBxMEw1OWV3QkFUazRPenA0OWk5MjdkMlBidG0wQWdMNTkrMHJ4WjhYRnhUaHc0QUNTazVQUnExY3ZDUWd2WExpQW1KZ1k3TisvSDZtcHFlalNwY3NWeDBBcHhkNjllMUZSVVlHZVBYc2lPVGxaMmljbkp3ZFJVVkVvTFMxRmJtNHUrdlhyaDhURVJPemN1Uk9IRGgxQ1JFUUU5dTNiQjdWYUxjMUQwNlpOWVRLWkdtV2xodzRkUWxKU0VucjE2Z1ZDQ0k0ZE80YlUxRlJvdFZxY1BuMGFuVHAxd29VTEZ4QVlHT2lSWTdsdTNUcU1IVHYyaXV2aCtQSGppSTZPUmxKU0VnQkllYk9EQmczQ3NXUEhjUFRvVWV6YXRVc0tjQjA2ZENpMFd1M2MxcTFicTRjTkcvYlJ5eSsvckhlcmxLTGR6ZWxXUzNsM3FYeFJMWVhENFNDQ0lGQ2owUWkxV28zRXhFUVBWWlFRZ3BLU0VnUUVCSGpZMjhUcjU2dHMwOUdqUjVHYm00dHUzYnA1eE1BSmdvQWRPM2FndnI0ZVE0WU1rWTczeXkrL29FMmJOZ2dMQ3dQTHNqaHc0SUIwTGV4Mk83WnQyd2FsVW9sMjdkcmRXTVpHS2ZVQU5Ya3l1M2ZURlZsdkFnOVFPMy8rZkVSNmV2clN2eXVvQWE0eU9rOCsrU1QwZWoyV0xWc21aUVBvZERyY2R0dHRLQzB0UldGaElVYVBIbzNhMmxvQXdMRmp4ekJwMGlUbzlYcHMzcndaRHp6d1FJUGpidG15QmZQbno1ZkE4T0xGaTVnNGNhS1UvRDFtekJncExXWDE2dFY0K3VtbllUUWFzV2pSSWp6OTlOTWVLc1hYWDM4Tm85R0lLVk9tSURzN0d3QncvUGh4M0gzMzNUQWFqZGk1Y3ljbVQ1N2N3RGF6YnQwNmp3VG11cm82bEphV1FoQUVGQlVWb2Fpb1NMVHpZT2ZPblhqZ2dRZGdzVmp3N3J2dlNvR3NwYVdsbURWckZ0NTQ0dzNvZERyTW1qVUx1M2J0dXVJWTVzMmJoeSsrK0FJbWt3bFRwMDcxS0ZXMGF0VXFUSjgrSGUrKyt5NXljbkpRWCs4cTZsQlNVb0thbWhyWWJEWVVGUldodExUMGl0ZHY1ODZkdU8rKysyQ3hXUERSUng5SmtmSWJOMjdFa1NOSGNQYnNXVHp4eEJNQWdQZmZmOTlEUGFPVTR2dnZ2OGZ0dDk5K3hmVncvdng1UFAvODg5TC9iZDI2Rlo5Ly9qa1loa0YxZFRVcUt5dkJzcXcwcjZLd0xEdkw0WEE4UEhIaXhHZ0FZdkZLRlFDbElBZ0tBQXBLS1dGWlZsSkxUU1lUcXFxcVlMRllVRjFkalp5Y0hBL21WbFZWaGExYnQ2SmR1M2JJeWNrQnBSUm56cHpCK1BIalVWMWRqYzgvLzl4ajdsNTk5Vlc4L3ZycnNGcXRlT1NSUjdCanh3N3B1dzBiTnVEbzBhTTRmZm8weG93Wkk3SDc1Y3VYU3lZTW85R0lKNTk4VWdMQ3FWT25ZdnYyN2NqUHozZGxmelJXdHVpUDJFNmZQbzF2di8wV3I3enlDdWJObTRlcFU2ZGk1TWlSNk5PbkR6cDE2b1RVMUZRa0pTVWhOallXNGVIaEpDZ29pR2cwR2thcFZDb1VDb1d5c0xBd1RoQ0VOK25mWElZUEgwNnpzN01wcFpTV2xwYlNEaDA2VUtmVFNXdHJhK214WThjb3BaU3lMRXRuekpoQnQyelpRaW1sOVA3Nzc2ZWJObTJpN3RMUWRNR0NCVlNuMDFHajBValQwdExvMXExYjZaQWhRMmhWVlpYME82V2xwZlRNbVRQUzhiS3lzdWpwMDZjcHBaVDI3OTlmR2tONWVUbnQzcjA3cFpUUzQ4ZVAweEVqUmxCWE5XcEt2L25tRy9yVVUwOVJTaW45OU5OUDZlelpzNm5UNlpTK3M5bHMwdThKZ2tDenNyS29UcWZ6T04rYW1ocmF0V3ZYQnZNd2VQQmdhUXdXaTRWMjd0eVpPaHdPbXBPVFF3Y05HaVNONFlNUFBxRFBQZmZjWmNkdzVzd1pldXV0dDFLeFIrZXVYYnZvK1BIanBkK2FQMzgrZmY3NTUzMWVqMDJiTnRGWnMyYjUvTTVvTk5LT0hUdDZmRFpxMUNoNitQQmhTaW1sSE1mUm5qMTcwdno4ZlByZGQ5L1JkOTU1aDM3NDRZZDA0TUNCdExLeWtvNGRPOVpqam80Y09kTGd0eHBiRDNhN25XWmtaTkRpNG1KS0thVjMzbmtuM2JGangyVkxKeGtNQnBxV2xrWTVqcU4ydS8yRDJiTm5ad0JvQVNBQlFCU0FVRUpJSU1Nd0dnQktobUVVR28yR0lZU1F3TUJBRWhzYmk0U0VCREFNZzA2ZE9xRlBuejRZT1hJa0prK2VqQ1pObW1ERmloWDQ5dHR2cFJwNUgzLzhzWFQvOSt2WEQvbjUrYWlzckVSR1JnYnNkanNvcFRoNDhDQ21USmtpbFMxYXRHaVJ0TS8wNmRPeGZ2MTZVRW94ZHV4WW5EaHhBcFJTMU5UVW9HdlhycUNVNHBkZmZzR0lFU01nc3N5MzNucnJ4cW1pNTg2ZHc0VUxGeVQxVTk3elU3U3BOUko4S3pHMTVPVGtSWVNRMmZnSGlKaXYyTFJwVXpBTUE2UFJpSkNRRUt4ZXZSb3JWcXhBYUdnb2NuSnlwQ2Q3WVdHaHBGNFNRdkR2Zi84YmdNdnpiTGZiTVgvK2ZQVHMyVlBLN3dSY3BXT2VmLzU1V0N3V0JBY0hvNktpQWp6UFM2eElQSjdjMXBPYm00dnk4bktNSERsU3N1RzFiZXVxZGpKNThtUVVGUlZoMkxCaFNFMU54YlJwMHhBUWNNbjhlZVRJRWFTa3BGeFYzQlBQODhqUHo4ZFRUejNsTVY0eCtWNnIxVXJxZVhCd3NGVEpwTEV4RkJRVW9HM2J0cEo2bnBhV0p0WGpGK1Y2cFFSZHZIaFJVcjJVU2lYYXRHbUR3c0pDcEtlblkrZk9uWEE0SEpnNmRTb09IandJcFZMcE1VZU5KWG43V2c4UkVSR1lPblVxVnExYWhjbVRKNk9tcGdiOSsvZS9xclhsM2g0WU4yNGM5dTdkKzhHSkV5ZnF2YlVyZDg0b0wrYVg4anhQV1pZVisvL0Jack5KYW1oNWVUbGlZMk5SWFYwTmxVb0ZoVUtCMDZkUFMrV2s1T3NvUHo4ZkZvdEZVcmNGUWZCWUUzTHpSV3BxcWtlMUYxOVNWbGJtMFNOVnBWTGRHR0RMejgvM0NXbytLblEwQ09rUWJXb3RXclQ0eDRDYVhJeEdJMWlXUlhCd01MWnMyUUtqMFlndnYzUlZKWDcwMFVlbC80dU9qa1pGUllXVUVMNW56eDUwNzk3ZDVTRmlHR3pldkJuejVzM0RlKys5SitVcnJsNjlHb21KaVZpeVpBa0FlS2cvVVZGUnFLeXM5TENmaVorM2JkdldaNFhadkx3OFBQend3M2oyMldkeDdOZ3hQUGpnZzlpMmJSdWlvcUl1ZTlNU1FqeXFzd0tBUXFGQWVIZzRQdnp3UTZrc2tpaWkrdTFMR2h0RFRFeU14dzFTVmxibUFmTFhVOFRmRXB2dWlML1Z2SGx6VkZaV0lqQXdFSU1HRGNMaXhZczlHcVpZTEJZY1AzNWNlaWhkYVQwQXJpVDhFU05HZ0dWWlRKczJ6Y091Nm10ZXZVV3RWai9RcGswYllkU29VZSsvK09LTGFBemNSQURpT0U0S0JSRWRBWVFRWEx4NEVkMjZkVU50YlMwVUNvWGtRRGgrL0RoNjkrNHRIVTljUTlIUjBkaTBhWk5QTzdCOHpPWGw1Y2pNekJUSEtqM0E1Q2FPcUtpb0J1cjhIdzVzSlNVbFV0TVZiNmJtYlZQekZkTHh6anZ2cU55T2dqbi9KRUI3NzczM01HWEtGS3hhdFFvalJveUFTcVZDYkd5c1ZBK3J1TGdZdTNidGtrcnNUSnMyVGZLazVlYm00cXV2dnNLR0RSdmdkRHFoVnF1UmtKQ0F0OTU2QzdmZmZqdmF0V3VIL3YzN0l5WW1CbHUzYnNXT0hUdHc0c1FKbkRselJyS3hUWm8wQ1FzWExzU0REejdva1lQWHQyOWZ2UExLSzNqMTFWZlJ2MzkvN05peEEwbEpTWmc4ZVRLT0hEbUNiZHUyWWM2Y09haXBxWUZhclphZXZtTGxpT1hMbHpjNDEvRHdjQ2dVQ256MTFWZG8wcVFKMnJWcmg1aVlHRHp3d0FPWU0yY081czJiaDdxNk9telpzZ1gvL2U5L0x6dHZqWTJoYTlldUlJVGc3YmZmUmtaR0JwWXRXOWFnU3NXMWVwczNiTmdBdTkwT2p1UHczWGZmSVRRMEZJTUdEY0w5OTkrUEpVdVc0TWtubjhUZXZYc1JGaGFHdExRMEVFSVFHQmlJdG0zYklqazVHVVZGUlI3OUFEWnYzb3podzRmN3ZObDlyUWZBMVUxcThPREIyTEJoQS9idDh5eUFtcFNVaE9MaVl2end3dzhJQ0FpUUFNSmJGQXJGUXdzWExuVHUzTG56L2YzNzl6ZXdpN3JmODRJZ1NIRnVsRkxpY0Rnb0lRVHlwdU42dlY0Q3R0VFVWTHo3N3J1SWpJeUV6V1pEY1hFeEFLQjE2OVpvM3J3NUZpMWFoUEhqeCtQWXNXT3dXQ3lZTzNldU5BOWR1M2FGeVdUQy92MzdzWGp4WWdCQTE2NWQ4Zm5ubjhQaGNPQ0hIMzZReHBlWm1Zbi8rNy8vdzN2dnZZZFdyVnBoelpvMVVDeGR1dlFQdXptcnFxcHd6dDJqUU43TTJHQXdlQlNJOUU2VGtzZXByVisvZmduRE1BditTYUQyeFJkZllOU29VVGg0OENCYXRHaUJ1WFBuUXFWU0lURXhFWW1KaWRpM2J4L2k0K014WWNJRVJFVkZJVEV4RWExYXRVSlNVcEtyRnBWU2lSZGVlRUh5TENvVUNuVHYzaDFCUVVIbzBhTUh6cHc1Zy9UMGRMUnIxdzRxbFFxSERoMUNXbG9haGc0ZGlvU0VCTVRFeENBakl3TldxeFZIamh4QnQyN2RjT2pRSVV5ZlBoMEtoUUszM1hZYmNuTnpjZlRvVWJScDB3WVRKa3dBd3pCSVQwOUhVRkFRZHU3Y0NZdkZnc1dMRjB1OUt0ZXRXNGNtVFpwSUhqcTVNQXlEWHIxNllkKytmYWlvcUVCYVdocENRME9saXJLaStqWnIxaXlKcVFRR0JuclU2WXFMaTBPTEZpMGFIUU1oQkNOSGprUjJkamFPSHorT2lSTW5ObWd5MHJKbFM4VEd4dnE4SmxGUlVRMDhkOXUzYjRmRllrRzNidDFnTUJqZ2REcVJucDZPOVBSMGhJV0ZZZnYyN1lpS2lzS3p6ejRybGZTSmlJaEF0MjdkRUIwZGplam9hR1JtWmtxZTZPZWVldzZQUC81NGd5ait4dGFEbkR3MGI5NGNBd1lNOE5oUHE5V2lZOGVPMkxObkQzUTZIVHAxNm9TQWdBQW9GQXAwNjlaTityK3dzREIwN05neDQ4NDc3N1MvOU5KTHAyV01UMFE0S3FxY2NpYW5WQ3FKNk5RS0NRbnhxS1JDS1VWa1pDU2FOV3VHRXlkT0lDa3BDVmxaV1VoTFM0TldxMFZXVmhhcXE2dHg4T0JCeE1iRzR0NTc3NVhVN2Q2OWV5TXZMdzlsWldWNDl0bG5KZTkxdDI3ZFVGcGFpcHljSEV5YU5BbXhzYkhvMnJXclZPcnE4T0hEcUtxcVFueDgvQitYSzZyVDZaQ2RuZTNCMXJ5ekNyekRPdVJ4YW1Md3JUdE96UzkrOGNzTkVMUFovTytRa0pEL0FiQzVLNE00QUxDUVZRWVJjMHVWU2lWMU0ySXE1cFdLU2ZNUkVSRlNYbWx5Y2pKU1VsS1FscFoydzVMbS94QlYxR2F6U1IzYUt5b3FVRnRiSzdYSHU1ejZ5Zk04NUdsU0RNTXM5aTgxdi9qbHhrbHdjUEJjblU1bmpZaUlXT2RtWmhUdVdEYXY5Q3ZxSW5YRWxhTkZDR1VZQmd6RGdCQUM4VytsVWdtVlNnVjNjajA2ZHV6NHUydmsvU25BUmluRitmUG5VVmhZNktGK3lxdDBpQjVRZVpGSXQ2dVdFUlBhM2JtZi9vd0N2L2pseGtwQWVIajRZMVZWVlphNHVMaXQxSlZjNm0xdmc3dUhndUIwT2tYUHFBaHlJSVJJZGpaeEV3Rk9vOUVnUFQzZFp4T1hteHJZNUtBbU5qSVdIUVVXaStXeWxXOEZRU0EybTIyWXUwcUhQL2ZUTDM3NWN5UW1KaVptWmtGQmdiRkZpeFlIdkpnYkJVQUZRUkM5bzVBQkdoR0xWNHFiSE5SRVlBc0lDSkNhS3Y4bGdLMndzQkFYTDE1RVdWbVpUMGVCM1c1dmtGVWdDK3RnVENaVE4zYzlOWC9wSWIvNDVVOFVRa2hLY25MeVE4ZVBIOWQzN3R3NXg4M2NSSldVaW4wUlJOWUdtWU5CVkVXOUdadFNxWVJhcllaYXJaYjZtdjVSY3QyOG9sVlZWWkpkcmJ5ODNLZGRyVEVQcUZqT096UTA5Q1ZDeUVEL3N2S0xYMjRLY0dzYUV4TVQycWxUcDlOZmYvMjF6UTFla3FjVVBtcTJ1VlZTOFcvNTU1Qi9Mb2EreUh0Y1hGZkdkajFhaDVuTlpwdzVjMFppYTJJT3FIZWJQSWZENGVFQkZkWFB1KzY2U3dIZ21mcjZlbjg1YjcvNDVlYVM0Wm1abVRVcEtTbXZYYmh3UVpBeE4xZjZnZnNQOXl2Y1dRbkVuVUlIK2VaME9xWE5YVFVFN2RxMSswUEFUZmw3YXo1UlNwR1hsNGZpNG1KVVZGUTBzS3MxVnRMYjdTd2dBSmhseTVZdGNEcWRONlR4aXRoVDBidnF4SlhFWXJFZ01GQUxRaGovVXZmTFA0MjUzYjExNjlicWxKU1V6OTA0SnNqQmpSQVJ4d1RLOHp6aE9JNjZhUnNWdmFSeUZkWGJZOXErZmZ2cjdreFFCZ1VGL3E0RDVPWGxvYmEyQm5xOURtYXpDVmFyQlhhN3BITEtLblE0aVJpZExQZUExdGJXVEhVN0MyNkk4THdUVGllUGF6MXZuVTZIeU1pSWErbzVhVEFZRVJJUzdET1MzQzkrK1N0SlVGRGduUHo4QzVXMzNKS3lGWUEzYzVQK1R4QUVnZWQ1T0oxT0tCUU00VGlPS3BWS2lhSFo3VFpZclJhWXpTYm85VHJVMXRhZ29xTDh1cmJ1QXdEbHRkeW8zbEpXVm9heXNuSlVWOWVndmw0SGc4RUlzN2xCandJM3VFbWdSdHhVbGRUVzF2UU5DQWg0Qmpld0xwenJhU0hndDV5M2FBQzlXakdaVEFnTEM4WHZtV08vK09VbUVXVjhmUHpEeDQ4ZnEremN1Y3N4WDh6Ti9Vb0VRUURQODVUam5HQVl6aXZrUXdtVlNnMjFXZ09OSmdCYWJTQ0Nnb0lSR2hyYUlDZjRkdzIyc1dxWFY1TFM4akljUDNzQk9uZEdnY0Z3S2FuZGJMYkFiTFdCdlFSc0lsc2p2Q0FRS2xDbXFLZ3dJU2dvYUQ2QWxCdExxeGtwenVaYVZXNTVjdThmdGM4ZklmcGplNkJvbG9HUXFCc1RGa2c1TzZ3MTlWQkdSRU9qVlFOd29tTHJKdGhzZ0twcEd5Umx0UGxiM09tL1pWNXRoVG13T0tNUm5STFh5SC9ZVWJYak1DSnY3UWVWbStnN2lrNmo3RmcrQUlMWVFhTVJITXBjeDdGRUlEb2w0V3AzdWFWMTY5YjNyMXk1c256YXRHbmxBTVJBWGZHVmlwNVNudWZoRHRxVlFrQXVlVWN0N3RBUHRic1RsaGJCd1VFSUN3dTdwcVl3anRKY0dJeGF4TFpMYW5CT3ltdFdrNmdWaXo3WWdQMUY1U0IxWlNpdnFVZlh1RkFvTFNaWUxHYVVsSldoc040TXd0a2dDRUNJRXNUcGRNTEpjY1RCT1FuZ3NxdTlrMnQrK3JuNCtDSGtUMWlRbE9LYTFVTXhQKzVhOXZzdCsvd1JVdkxaY2dSTi9neGh2UVAvOE4rcTIvWVpEci95SmJUTldzQlJWb0JtODk5Rm0vNUpVQVVFd25KdU44NGRxRUt6ekhaL0MyRDdMZk5xT0xBR2hmcE14S2FPYkl6bkkvKzl6eERZOTFabzNFU2ZVV3FnMWdiZzR0c3ZRSjErRzBMREc2Nm55dTgvUnNEdGFRaUw4UnhMd2Z0TG9lejFHSkk2UkRiWXgzemlSNVFZT2lNMk5mRmFOSjRCNDhhTks1dzJiZHBiTXRZbXlGZ2I0SXB6ZzFzbHBRekRFSVdDb1E2SEFrcWxheE16RWRUcVMyMytnb09EMGJGang2c21BcGJqbTNIMlZCTGkwNW8xT0tkckJ6YW8wVCt0RFhvMkRVRmhvUnE3OXBaaTd6a2R1a2NvWU5iWDRXS2RGWW5oZ2VEdFFFVjFIVEVybFZBSVRuQ3VDR1ZDQU1aU20vL1F5RGYyek16SlRFWEhHNXhiSURkaS9qWTFsdm5EOXdFRVVEQnc2cXZBMFNBRVJuaDZqU2dFRURDd1Y1VkQwSVFqTVB6U1lyWlhsWUpYaGlJb0t2VFNEcXdkb0FUT3Vtb0ltakFFaEhxbXREaU5kYkFaSFFpTWk0ZEM5ZHRCbUMvZGovMkxWNkxIMm8xbzBpd1VFR3l3MW5OZ0dBM2lCNDlBTUZPTy9BS0xqL2tRNEtpcEJzY3BFSlFRQTgrSEhROWJlUVVFVlRBQ1k4STl2cU1PSzh4VnRkREV4RUd0MWR4azgrcjduQWpQZ1RvRlVLc0JOZ3NRSEJmaE9UNW5EUHArK3htSWJJNjB6ZHFoZWJOMnFQeG9DWUNHYTVjNm5Xai8zQ29RWmNQUHphY09RTmxxT29nUURpaVYwamlvNEVUODdmTVFML3ZzMGpBNFdNc3J3RVRHSVNCUTAyQ3Q4RWJIZlZVVlZZVnhUZUxXQStCOXFhU0NJQWlFRU9wME9zRXdCQTRiSllRdzFLWEJLS0ZVdXRPc1ZHb0VhTlJRT096UUtMVUlEUTExMjlzRTJDckxRUU1pUGE0REFIQzZLbkFrQkVUZ1FKMjhOQi95YzFKZXF6ZWlvcUllYWs2UGtxcEsxTlhWZ3poWjJNd21XTlFxMU9vTUlBb0NjQzY3bW9KUWNDd0xFRXFvcTZZNnNWaE0vWlRPdXZrY28wU3drb0NRR3cxc2x3RHV0ekMyYTludnQrd0RBT2VmbVlpTHVTb3dTaVdFeW9zSXZuMGgrczRkN2ZyU2VBcnIreitEcEdFeHFEeWxBOHc2ZFBqa0p6UkxNdUxRZlZOUlo0MkV5bElHa2pZUnQ3NDZHeW9Hb0U0T2hXL05SN0ZLQVh2QkdjVFBYb0h1ZDdrS0VoYis1MUdjM0ZTQ2lPWVJNRjZvUThaM0d4RXJQZHdkT1Bua1RLZ0d6VUs3ckM1WFhocy9ySWVxK3dRa05IZXJFNHBBQk1ueVJ3Z1ZRSG5CYXo2cXNYUHdlTEF4TGFHQ0FTWmRLUHF1K2hDUk1ScFFVekgyVExrSDl0Q1dVQXM2MkJNR0l1dFZWMGsrL2U3UHNXZlJKd2h0bXdKNzJVVWtQL2tKMmcxc2ZwUE1hK1BuQklHSDhlZVYySDdnS3pDV01xRDFuUmo0eGl3b0FWU3UreTlPZmJrRCttTjFHSHhtTHlLOXNacmpBSGl1Si9ic3o5ajkvRWV3blA0VnJkL2VpN2EzTm5HcFpNYzJZZC9MWDhDU1V3SlM4RGpLUDlFaStyWkgwR1Z5UHdCbE9IRDNrOUFWbmtmSTdZdlIvK2xMcGRydHVYdXdlOVlpTUUxYWdTM01ROXhETDZIYlhYMTlyWldIOXh6SUx1elhLKzJZU3hXbEFrQUVVUzExdTBrSno3SncydTFVU1Fqc09oMzQ2SGczYTFPQzZNdFE5UXVMV3BVZFFlcGdYRlQraUlCM1hrQ2d2UXg1enp3SE5yUVpVSDhSUVVQbm92Y1Q0MEFnNE9KcnMzRnlZeUhDWWpYZ1dBZEltMlQzZkhpZTB6VUJtOVZxbGNJNmFtdnJvSyt2eHZIQ1NzUUZoN3JhYzluc0lMd0FvOUVHbzhOSkZGUUFGU2loREFoRHdJeGJzaUw4a1RVN242cXYweWRNR3o4WUtlby9ReEg5YmNEMmUvYTdaaERsblhCRzlzS29qNTRDTWVYaGg4enhxSmd5QWdueFNoZXZxRGtGUmVabWpGN2VFUUFMSjZ0RTFlbzNVYVhxaDlIZkw0YkNhY0N1SVpuSTJ6TU83UWNrQXJ3VHlyUXNESDV1Q3B6bGU3Rit3QkswR3JjTEVZSFZPUGZoWG1Uc09vV0VPQUJPRmp3amY5Z0lNSnc2QWsxNzNWV2RnK1hDQlFRbjkyejhmNmtBd2VrTmJCSG9zMzQ3MUNFdTZwNzN3aFNjK1dvWCtqNDJIT1lEUDZBK2JEREdmZUVxaE1tenJMUnY0ZWNmb05uVG42SFRHTmZUbldlRks0N3h4czFyNCtjRWdZY1Z5Umo3N1p0UUN3YnNITlFEK1lmdVFKdWVzV2d5Zmc2YWpCK0xIOXBNZEFPWTEvaWRIRUE5Z1UzVGJqQ0dmalVZUis3cUJ0QkxheTJ3NjJnTS9XbzBqdC9mRzZvNzMwTGEwR1Raa1JMUjU4dXZVUEwrWTdoUVQyWEhzK0xJWTNPUXNPQnJkQnpjR29McFBEYjNtNEg2TVhzUkZkSmdyVFJocVdMYXNtWC9MbGl3NEJtQlVnaUVRSURNWTBvcEJRVUV5aWlnMEFaUUZaekVYRnREdGFHQlVDanNJQ3dMYzEwMTRvZVBSR3lMSm9pTGprWnRSUVYyL3VkVkpJMThHY05uRFFHY091d1lPQUNsNDBhaXFmb1FqbjV5QVVNUGIwVjRrSURqOXc5R2xmU2c5RHluYTNMWEZSUVVvS3pNblFOYVg0dURKODdBb1FwQ3NzSUpzOWtPam1VaGNBS2MxRW5BUzRudEVBUVFRYURFa2R6cHlibjkydzJ0THptUFY3Y2Z3YWpVRVloVHdTOCtKTFpQTDFlbm5aQldpR2tEMUo4cVIwSzhlM0ZxVW5ITDZJNlNhVUNwQm5RblR5S3U3NU5RQUlBeURFMTZ0MGYxNmRQQUFKZjlKSzZucTRxcE1xRTdvcUl1b2o3ZmpvZ09rWWp2R1lrakQweEQ4cEIraUI4NERQSHQ1ZmFXUVBULzZkUWZmS1lNcWplK2c5enZkc05tdG9PdExrS0l1NXkwTnEwcm1GTVBZTmNjQitKNmRFWHl5SkVJVXJ2bnAyY3ZIUGpYTERqUGprQlVqMzVJSHREbEpwcFhaYVBuQkFCUm1abFFNd0NZTU1SM2I0WDY3R3lnNTAyUWNHUEtSWFcyRFlxOTMrRFlRWmRxVHAybDBCV1lFZFhSNTFvWk9IdjI3TE1MRmp6enNWc2w1YjNzYmRTTjBKVG5lVEFxQmdMbGljM09VcVZDQWNKeWNBWkdRQ0FzakVZak5Cb05BbXNLVUgrc0NIejBlaHlyL3dVVUFPdDBvRDZuQkJHcU0yRFNNaEFleEFCZ0VOKzNKNnJPTkxhcXJ0WlFXbEtDMHRKU1ZGZFhvYTZ1RmtkT25FS0pRNEhXb1VyWTdhNXFIVlFRSUhBY0dNSkF6UUM4UUFsQUNhV1VtZmI4ZjhaTkhkcm42WjdONHpHeWJ4KzA1d3F4cmREaVI3Qkc2Y1ZsdnRNRzRmZEZrQkQzbFZlaTgwZmIwSHZ4ZEtpNU11d2ZQeFI1eDJwKzgxR0RXamFIc2FENG12YXg3RitKZ3grZlJKZDMvb2VSVzdhZzYvMUQzZG9Nb0V6c2dkSDdma0xLa0U0dzdWcUZIMjUvREt4N3Y2WVB2SXdSWDY1QWVId0F6aSs1QjRmZTMzSFR6T3ZsenNublhvemlKbGwwQXFDS1JQeklMQ1JtWlNFcGF5UjZmTG9XVFc4SmJIU3RCQVlHemlvcEtlNExWeVVlRGFWVURWZjRsb0pTcXFBQVF5bDE5eXJsd1FQZ09CWXM2NENENDhCQmdOVnFoY2xraHNGZ1FGMmREanFPQWR1cUxVaVhMa2pLeWtLWE4vK0hsRjdYRmdweVZjQm1NcGs4ZW9BZVAzVUtaNHdVSGFJMFlPMDIyTzBPc0t3RENnQ1V0Uk9ISzJhTlVFRWdCR0NxcWtxVFFnUFZUeFRWR2x6VFp6ZWd4RUlRSE9DUDcycE1xdmNlY0JrclRIbW9PUWRFZHJ5OFN6NGl2UU9xOXU0RkR3Qk9BeXIyNXlCU1ZtRzI2dUJlbC9HMy9GZlU2Vm9ocWtVQUFCYXNSVUJVUmorMG0vY3NVdnJGd3BndjcrTE5JdWYvNXVEODlxdGpiUW1qeDRIZHR4cGxCUWIzZldLRnBkcHd5ZTBVR1FtMnJBUk91WG1qckF3QnJkSVJIaE1FQ0JhVS9iVDNrcUhhWkFMQzRwQTRhZ0s2djdZVXlwSnpzTHAzWmswbUJOM1NDU24zUG94T0Q5NEcvYm04bTJaZUwzZE9BRkMzYng5WXdYVzh5bC96RU5raDdlcmNkcEhoc0Z5aHNZbTNLRFVhc0hYMVYvZlBJVzBRMjlvR3F5a2NzZDI2SXJaYlY0UzNhQVpWRUhQWnRkSzBhZE43di9sbVRSTVIzQUJJNEFhQW9RTFB1T3h0VHNJVFFIQnloR1U1T0RnbldONEptODBWdE9zQ053NjBhU0RLQ3F0Z2l3aUh0blVxb2xxM2hEb2tFRUdkT29CbUg0YmVJZ0J3b25MdndjYlArMnJPMTVYWTdpNFlXVk9LQTNtVnNMRjI3Q20zUVdEdGdBQWtCQ25ocENBcXh0VzlCdFJWaDQ0Qm1LaW91SG1QanV6ZDdZRnZOK0xva1Jqb2EydVIwTEVuUmlScC9BaldpQ2hxRCtMSGNYZUFyNzZJMEFkZWNOdUJHcGY0T3g5SDNBOTM0b2NSSjZDeWxZR2tQWVJXL1MrcGxkekpMZGc2Y1N2c0JXZlFmTWxiY0RtYXFyRnIyRmp3Q2FsUW94NUc4eTBZT0ZRZWlzR2hjdE0zVU1jT1IrdkJIYTk4RXlYM1I3OS9UOEgrMi9zam9FVUxPRXFMa2ZMU2FuUVk2bkltYUxxTVJLdVdYMkY5dDk3UWRCbUIwUjhzUXRTZ1NWQy9kUmUyVER3S3hsYVBnT2hMRGdEendmL2g1OFZmSXFKTkM5Z0t6aUI2NWdLRXVhZmg3SUk3VUhSUmk1QVlOWFM1MWVqNndlTTN6YndLbHprbkFOQXF5dkhUN2VQQVdNckFkSG9NdDJSRUFkRGg0RDMzUUZmdmdORlFnUVBqUmtPcGJZRSthOStFMk1LNjlkejUyUG5ZT09RdkRVYjdsNzlFcTU0SnlGdnhLUEwyRk1HYVd3MVNjaThLWDlNaWJmbi9rTnpldFZmeVBROWoxeE9Qb095VEVNVGQrVFF5cGc5RzdkWjNjUGp0TFdBckw4TEIvWXJOKzFlaXlYMEwwWGw4VDNSNzgzWHNmbkFxU3Q1TGdaS3JoZG1TZ0NFL2ZZemd5NndWUWtqblVhTkczUUhndnpLVmxIZlRWSUZTU2dXbmt3b0FWU3JWY0RxZDREaU9FSjZubkVCaHQ5dmR3YnV1eWg5UlBRZWdhdnRLYkR6K0UzSWlBeEJsRFVQZkRkOGpKcjR2dWo3UUVqOFBHNDdRV0MxNHFuRTFEQVFhbkJPaEdtblFnUUFBSUFCSlJFRlVWTGlpQ2lvbXVKZVdpdVdJNnFEWEczeDFtWEludUhPRTV3VkNLVlhZN2JhSktwWHFmeTdyTDRkeWd3VWFiUkNpdEgrT2NhMjZ1aG9zeXlFeDhkcW9iWFoyRGxKVFcwbTE2LytvZlFEZzdGT2pZZW02RkIySEpZSVRnaEVVRlhUVis3ckNFa0lRRk5VdzBORlJVd2toSUJUYWtFQVA5Y05XV1FrblZBaU9qOEgxY09kUTFncHplVFZVTWZFSUNMcUtlQjZCaGFtNEV1cllCR2dDbFY1ZldXR3BySVVxSWhZQklaN0hZZzAxY0JnY0NFeEloRUo1azgzclpjNEpBSGhMSFd4bXhpdmM0MllSQWRieVVsQk5CSUtpUXE1NnJaU1ZsYzFOVEV6YUJjQUNWMmx4TzZXVUpZUnc3ckxpdkhkSmNhMVdpOERBUUFRRkJTRWtKQVRoNFdHSWpJeENiR3dzNGtJRDBheFpLM1R1bllua3BFdEJ1R3hkRlp4TU1BSWpnbjRiWTdOWUxDZ3RMVVZWbGJ5Mm1na1dpOVdkRDNvcGJjcnBsSEpCaVNDNGduQkxTMHZpVlNyVjNFdVBTeFVTSXNQaGw2c1RkVVFjMU5lNFQwQmM0OEdXbXBoNG45WUliWHpDZFIwM1VRY2k1RnBxYlRGcWhEUlBidVNyUUlRaysvNU9IUllEZGRoTk9xK1hPU2NBVUFSRklUam9abDE1REFJVGtxOTVyU1FrSkV6NzlOTlBjdTY3NzM0ZUFBOVFpYlhoVW9GS01aZVVLaFFLd3JJc2RXVWtLS0JTS1dHeHFLVE9Zb0dCV2hoWU84cEtTeEVWR1ltZ0lOZUVxYU91ZlAwdWEyTzcxSVRGMVRKUEJEVlhhVzhISEE0V0hPZVJNaVY2UWdtbGxNVEZ4VDBPb0tzZm9xNU5FbWY4SDFKdVRmRlBoSDllLzFKQ0NPbDB4eDEzVEhEYjJUU1VRdTVJWUVSY2tHVWxnT000d25Fc0hBNFdkcnNETnBzTkZvdlZuU1N2UjExZExTb3JLNlhXZlZkdFcyenNpOHJLU3EveTNpYVl6UmJZYkZZUHBzYXluRlJqU1JCNEtjSGRhclVNWlJobXJ2OXlYN3VFdE83bW53VC92UDRsSlRBdzhNSGMzUE5IVTFOYkh3YmdkREczUzdZMlNJbnlVcm9WV0phRFFzRktTZkkybXdwbXM5cWRKSzlEVUZBUVFrTkRFUkVSZ2ZqNCtLdmtuRDZFNHpndkZkUlZXODFtczhKbXM3dTlvS3hVMmx1dWdsSkt5YjMzVGxOb05KckgvWmZaTDM3NTUwbkxsaTJucEtTa3lEMmtLamVKWXVBTy94QUVNUVRFQ2FmVFNUaU9BOHVLck0wT204MEtzOWtNZzhHSSt2cDZWRlZWbzdTMEZGZGJQOUluc0xsQ082cmNLcWhCcXJObXM4bVpHdXZSQWRwZEpaTlFTcGtQUHZoZ05vQkIva3Q4N1ZKZFhZM1MwakwvUlBqbEx5c0toYUwvNGNPL2pCYUJqVktxRXNHTlVxcWdsREx1NnRseWxWVENGWWZEQlc2WDZyWVozQ3BwRlVwS1NuNGJzQmtNQm5mUGdocm9kSHFZVEs2MmVXTExQSG1OTmFlVEkvSXVVd0JJZlgxZHFrS2hlTXgvZWYzaWwzK3VSRVJFVE51eVpYT1NGN2hKc1cwQWlDQUlNdGJHU2F6TlZaRFM3cmEzV1dBeUdhSFQ2VkZiVzRQeThuSVlESVpyQnpaNWh5bFhlVzhMckZaUFVET2F6S2cxbUtBM1dXRmpPYm5EZ0JFNDY2eFhOdXhNWExCdUwvYVdtUzRkMkduSE43c1A0Y212dHVIZjIwK2d5a0g5Vi85Nmk5T0MydFBuWGNHa3YxTXFWcitBZys5dnUrNUQ1Q3QveFk3Wnl6M0dhRGkySGNlV3pNZSsyWE54NXJ1OUVIN1hMd2pRbjlpUDh4KytneE52cm9URDY3dXFyU3R4Y1Baak9QTEtoN0JhWmIva3JNTysrMmZDNUUrR3VWN1M5TlpiYjczZERXd2VRYnNpYS9OMEpIZ3lOeEhjckZZYnpHWUxqRWFYU2xwZFhZMnlxd2hTOWdDMnFxb3FWRlpXdWhMYzNYRnFMaFhVSnJPcjJXR3cyTUVRVnlFUHdja1JweXRtalZnTkZRTm5mN1Q1WVM0cUVTTmIvajk3NXgwZlJaMy8vK2ZNbHV4bTAzczJnU1FraEJZZ0dDRFNJUUtDb0tBQ0l2WUduT1c4czVldkRVODV6M0xxejNZcWxrTlJFYkZncEJjRlJLUUhDTTJRaFBSZU45dG5mbi9zSnRrVVVoQ1UwM2s5ekFPem01bjV6T2Z6bWZlODYrdHQ0S0gzdnVGQXZXc0xmNVQrSFV0emJNd2RNWWpnMmp4dVh2SHpyOXpBQ3RyQWRKUXQxejdhVkhiMHEyUmtYUm1XeXRxelBzVGpMejFMOE1VejhTd2l5dmxpSlg3REp4RTNZeFRaajk5TTVvYmNYM0dGS2pKZmVJWHF6RDFrdnZweGk3bW8zdncyUC96amE2TG5Yb2UyYUNPYjdudTF1Y0pLSFV6TUVDMEgzdCtnN0tPekJKMU9kME5tNXVIQkhscmI2YUtrTGJTMmx2NjJ4cW9FbDBsYVhsNUJjWEV4SlNVbFhSZHNoWVd1Wml6VjFWVXRURkNyMVlMTjFpallKUHk5dFlKV0ZCQUZCTkZWeGk4QVl1SEo3TnVQK01WeS82amVqRW0rZ0xrSkFpdjJGd0JXTmh3dTRkWkpJeGthRThIOFMwZGdQM2FVZzJabDhjOFdpcjVld3Y2WGx1S29POG5oeFl2WnYvaDVxaXFrUmlsRjFwdlBzLzJPTzluNzhoSWFURjE3cGNoMWhSeGEvQWpiNzMyRWdveDhUNmxIOWpzdnNmMk9POW45MHBLV21rK0hndmNJeDlhYWlKdmNwOFhIZzU5NWc0UkxKeEkxY1JhUktTR1lDb3QveFV3RU0vS2o1YVRlZncydEt6Q3pQMXhLN01LSDZURnFHSU1XUFlMOXUvOVM1bUhWUk0yK25PTC92b2RGZWVPZU5mVHUzZnRLV2dZUk5CN21hS1BXMWxSTDZobElzTm1zV0swdFRkTHE2aXJLeXNvb0xDenFtbURMeTNNVnVMZU9ncnBNVUZkYWgwZVQ0K2FBZ1N1Q0sxb3M1cm5IeTZ1bkowU0U0R3lvNTFTZGxjU0lFSTZYVmdGT0hKS01TdVcrbktoQ0pkZHpzdEt1clB4WmdrLy9ZWVNOR1lLb0NTSTRMWTJ3dExIbzlhNzVQdkgwQW83dXFTSCt0bHZSNUc5a3c5MHZka2xiTGxyeEdlb2gwNGlkRU1kUDE4eWp2TUlCT01pNGV3Ni9aRHBKV0RBZkgvTWVOdjcxMzEwNlg5M1BQMkJQSEk3ZmFiSXJpNWN0SWp1M0YvMHVIM1lPWnNoQzlkRTgvUHNuVW4veUdEYXZSQUlpeXFuSmFuYVhpQkVwQklsN0tjNnlLUnZxTEVHdFZsK2NuNTgzbXFiY3RtWmZXMk5ESnplZGVJdEFna3U0MmQzNWJXMmpwS1dsSmVUbDVYY3MyR3cyRzhYRnJsclE2dXBxdHduYTRCRUZQVTE2aDlNcHlMSXMzdkhRWXlxTlJ2TVhzODJHdDFiRnAydldjczJLbjlGcjFOVGFIWUEzSStLRFdQRmpCbVgxRGF6ZHVvOWNXY0JzZFNncmY1YmcyM3NReG1GSmlMb0FJbEpUTWFhbW92TUdLQ043NVM2U0huMmNpT1JrQmk1NkZPZTY1VlRVZDM1Ty82bFgwM2ZLS0tLbTMwYjhNQ2M1R3pLUVMzZHliS09Ub1l2dUlpZ3hrZmk3NzBYY3NZS3FoczdQVjN2eUpJYm9tSGEvYTlpL2dtMnY3U050K1JMOGZNOEZsYm9KbXhsVW1tSzJUQnhMWm5vdWFqMDQ2anpOQmg5OFluVFVaUlVyRytvc0lqSXljblpLU29yT3JiVzFDU1EwbXFYdHBYKzR0TGJHS0dtRDJ5U3Rwcnk4bk9MaUlteTI5bDlDYXBjSld0aWlINmlyL3JPeFpLcFpXMnRNeEhVNm5hNDJkcElrQ0lJZ3ZQTDBZL09CVkwxV1M0UEp5ZFhUTCtFU3A1cTlPemZqcDNIVmhONDJZd3JXdFR1NWZXa1dBL3YwWlh6UUNid1Zkbzl6RDBjMURkWCtlSWU1MVNUdlVQUysxVmdxZ1U3NjFCbzhraUgxeGtqS0s4dHhsTlppdFJTeTY5WWJtOVI5cjZRa3NBS2RVUC9MT09BME5Pa1ZPN1lSY1BGc0FrUFBGVmU4QWEwZW5QWUlKdjYwRDAxSUVEOHNCcld2dnUyZlNrNWwzNXhGaUtJNGJNMmExWk5EUThPK0JlenVId2R1V25GY3lidUN1eTlwazV6eDFOcTBXbGNnUWFkekJSS3FxaHBOMGtKaTJ5bmZVNXZONWlZNklsY3RxR2VUNDViNWFnNkhRM0FMTmNIdWNBbTFqQVA3L1ZRcTFYeUFQcUdCL0hLMEhORnJNS0hBOGVKeUVudTRPaEpwdlFPNDUvS0wzUzZhUWlaczgrWCtVSVZsOHV6dUlBRkJjcmFrSEZNSDRCMVFRME9wRGVLMFlDckRYQmVBTHFnTE9vNkhyOHRjV0lSK3NCRjFtQUV2UXp5alB2NFVRemZmUzM2UmNaZzN0SitIRkRUeFdwSnNvZTBia1NYNTRCMkl6dmZYRkZmcUNPamZnNXJNNCtndUdBYW1ES3BMd3hnUTc5dkNYRzBvTUJFU0Y5bnVHSnhhZnd5QnZzbytPeFBQWjNEdzdFY2VlZmo3WjU5ZGJBUHNzaXc3M0F3Z1RyZlcxcUoxbjlzeWxKdWpwRFozbExUUkpLMmhvc0lWU0FnUEQwZXZiL21DRXB2b2lLb2EyK2MxZURROHRqYldndUp3TlByV0hOaHNEZ0FCV1JiMjFEaHVYYmIvVkgrQTJMNTk2VmVidy9QYlQ3QmwvMTQrelpLWmxld3FIaTQ2bGN0SGUwNnc2ZUF4L3I1MEU0TXVIRXFjSXRmT3NsSVNnNi82QkpudmZVSGV1ZzAwbUFCQ2liMWlHSWVlK1FmRkdmczUrTVJpVkpQbkVPelQrZWxxMW43TTBUWGJLZmoySGJMMmFPZzVzVDlDV0NwOXh0cjQ4ZjduS2Q2ZlFkSG1OZXgrNFowdXBaajRqUmlKa0xrSFV6c2VpTXBOS3ptK2VuZTd4KzI1ZGd6YlgxN1Y1V2tvK3ZZampueStBYWU5bkt3UFBpUjcreUVBZWwxM1BUbHZQRVB1OXpzNThQaXphS1pjUzZoSEViMWNjWUJ5MHlBaStyVFZHZy9jTVlYdm4xMnU3TEV6aENBSWZlKzc3NzVKdEsxRzhFejlhSkcwNjNBMCt2V2JUVktMeFZWTFdsZFg1ODV0SzI4M2tLQ2FPL2Nxajl5MUttcHJhOXBwZW16RlpuT0ZZcDBPUnhON3h5UHZmUmFrOXZaNTNTcHFnNFpIQjRIS2k3UitVUnc0bGtWR3BaTTdMeDNITUhlZlE2Zk53cGJNYlBhWDFESXdhVEFQaklubjkrQU5OWmxNT0owU2ZuNSszVHF1dExTTTRPRGdidlVJUFpOanpuUjhydDNqalhIU2haaU9IcVFodndqRHdBdlJld3NFajVtTXF1d3dlYXUzSU1hT1pQaWpmMEhiaFg0VHdlTW1ZenV3bHBMTVdnWSsvVS9DWS93QWtmQXBNMUNWSGlRdmZRTzFoYlVFanh4TFVGeGs1NVJIK2tqc0dVdXA4UjVEV0srV0xDK1N0UUYxV0N4QmNhMXFBYVZpRHYvemJZeDNQRVpZYk5lWVlhcCsya1JEclphdzRRTVJHa3lJZmowSjdtMUVGM2NCSVZGMlRxV3ZSWWdlemZCSEZxRFZOSSs2NkpQWGFPZzFuY1F4N2ZjOTlSc3dqT0Q0U0VWS25hbk9yTk1aTlJyTitrMmJObHR4MTQ4MlVva0xndERZV2Q2ems1d2dpZ0tpcUhML2lPNE9WeXAzbHlzMVdxMFduYzZMb0tDZ0Z2Umd3amZmZk8zUnk2QlJ1Tlc2bVR3YWszUE5XQ3lOWEdzT3dlbDBpcklzaXphYjlWNlZTdlhzLzlMa251OThiR2M2dnY4VjJMSTJzUEhwSDVuOHdlTmRlckhaTXI1ZzFTTS9NK1BiNXppbkhsbEhCVnV1K0F1RFB2eVVvRUJSa1VMbkNOWFYxZjhLREF4YWlZdXp6U1FJUWdNdUQ2MU5FQVNISUFpU1NxV1NHam5iZERvdldhZlQ0KzJ0eDJBdzRPUGppNStmSDBGQmdZU0doaEVWWlNRdUxvNysvZnNUSHgvZmJJcDZCZ3pjWkpHTkdocDJ1OE90RWpvRmQzcEhVK25VbmoyN2ZWVXExYzNLVWlub0RyVHhFNW5hUmFFR29FMmF3ZVZmTGVhY2g1blV3WXovWnJraTFNNHgvUDM5cjd6Ly92dDhHODFSZDRSVVJhdFNLM2R1R3c2SEsxSnF0enV3MmV3ZVVWSlhibHRqSUtHMHRKU0dodWJRdk9ncWNxOXZaWHEyekZscmoydHQ0TUNCTndJS3VaV0Njd3RSamFoV2hNMGZ5TmNXLytDREQwNXdDN1oyZlcydE9kdmE1clpaV3dRU1hFWHlya0JDMDdacFdlVGVtSy9XTmhMcVp1NFFBT0c2NjY1VnFWU3FHNVJsVXFCQVFYY1JGQlEwbzFldlh0cDJ0RGF4VVd2enFFaG95cDF0RGlSNGtsSTJGc203MGo4c0ZvdExzTG0wTlZlUmV6dEN6Wk9TcUVsYmUvZmRkNjhEQmlwTGRQYmhJdFZUVWdvVS9LRzF0Z0hidG0wZDB4V3RyWDNOclZHNE5SYkp0MHovQUJCYnBuZllXdmpXbkU2bk8yK3RtUmtYRU5WcTlYWEs4cHhMd2VhblRJU0NQelRDdzhPbnVRVmFvOWFtcGhVWlpXTTFRcU1NYXVscnM1MDIvY1BoY0tCdXJBZHQxTllhODlXYUt3eWFmR3U0S2IrbkFxT3JhMnVwc1l0RUJmclFyZ3ZFS1lPcWRRS0FrNktxT2d6ZXZ2aDVxWlRWUFEySzEzeEtWYkVWTWFRWGZhYVA2ZEl4dHZ3amxCU0s5QmplcDh2WHNSY2ZJV3ZOejhoQStNUXJDSW8rVjVxaWhPUm9XMDBxcU5WbnBTdFdpeXRWNVpLenQ0eGVGM1dEQnJ3dW4yTmZiRVFDQWxNdkpxSmYxK2luSzdhdlJ0VjdIQUZoM2wyK1ZNWFdkRXF6eWhGMDRjVFBuY0xaU3VXVUdpb28zTElOcTBuRWVPbWw2SFcvM1g0MW5kaE5yVFdVeUtTWUxoOGppdUtJNDhlUEpic3B4QnVMNCsxdXJjM3BOa2ViTkRhbjA0bkRac0ZVWDQ5VHE0WFFTTHk4dkZyVmtUWnFiU1dJcm5yUTVnb0REMjJ0VGNBQUVMUnEyOVYzL2ZzRHByMzFMWC8vNkV0R3Y3U0NIYVdOOVhaV252dm9DMFkrOVI4U0ZpM0hzMFRWWWFwZy9pc2ZzZUN6elZ6NjRsSStQRkttU0xEVFFPVmxRRk56aEQydmZON2xZeHIyZmN1K0Q5WjJ6eVFRdFdnTUJvby9lWkhDektwemRqK24zbm1ZbFNsRFdabVN6Q2ZHYUQ0Zk1wU1ZLVVBaK01SSHYrcTgrUjh0NXNpR0l5MWZuUVc3K1BtRi8zYnZSS0lhamNGQTVkb1B5Zjd4ZUpjUHkzN2pNWW9PVlhmdlVsNTZ0R0k1KzU5Nm5iTlhhdTlnOTAyWDhNdW1RNWhMeTVIT0lUdkp3WWR1b3JpdzVRVXFOeTBqODh0ZDNUNVhiR3pzUkU5enRGV0VWR2dkU0hBNm5UaGxHV3QxT2ZXVmRVMFZDV2F6cFVscmM5V1JsaUUyVWhKNUNqVjNoWUZuMEFCWmxvWHE2cXFCZ2tvN2U4R3NtV3gvWUI0cjc3Nk9CL3A3c1dqRHdjWkhrc2tqTDJUVmdvdG8vZTVmOWYyUDFQVWN6RGNMTDJmbE5VTjUrYXZ0VkNqME1PMGlkTUtsOUpxY2VucnRyS0tFMmxPRk9OdVpQMmRESFhYNXBiU2g4WlJzbUU3bFlERlptajVTaDhVVFAzc1dnVkcrcDMxZ0d2SlBVVjlTeGEraEJlMTUyM1BNT3JDZldRZFc0ZWNkeUtpMSs1bDFZRDhUbjdxMmVYaVNTN016NWVkZ3FiTjBycUU0SEppT0hhRG1WRG1TdzBHYjlyaVNqYnFjZk95Mkxtd3lRd1M5WnM4aU5QRTByZVVjTmt6NXB6QlZ0TS9jYWkwdHhGelQwTTVhMUZDYms5OWluUUtIcHhFLzR5Sk9GK2lWTENacWMzS3dObGk2T0xzU2tpT2ZzbjBpU1lzZXBQOWZic0Rnb1VBNlRSWFVuY3B2ZDYvSUFBNExkVGs1WFpvbnllR2dldWNXVERVMjE1eTN1L2VLMnpLOXVLOWhiV2haY3FMUmFDN2J1SEZERHcrTnJja2NiZksxdVZzT3VJUWFndWp0RFJvVkRtZGpMYWtIdFZGZERhVTUyUlJrNTZIMlRPOW9McHR5NG5SS1NGS3p4Z2FJQm9QaEtoQko4dWpnM2pQSUgwdEpJLzJRbWlHOW9xQW1wODBVN3NncVpNSkZZd0VJanVsRlA4ZFdkcFk1dVNSY01VbTdZOUx0dkdvTVplWkl2SDBscXJNYlNIMy9FNkw2dUpydTJnNnZaczJzeldpb3dxd2Z4dVJQbmtldkJmT3hMV3llL3lBcVl5TFc3T05FM1A0dmhsOC9yc01yeVhXNWJKazlENHR2TDdSeUpaYW9TVXg3cGJrL2orM1lKcll1V2s3eUcyOFI3UDhyNytySWwzeXk0SE1TZXRWUlZpUmhyM0l3ZXYxYUxKL2V3L0hTa1Z6MDJDekF3cGFSL1lqOU9Kc1l6UTdXL2UxRkxDY09ZamM4UmZWM0FSaEd6bUhNUFhQYzVtZ1dXNjZiaTYydW51cFNQeWF2WDBIQUdWclo5aFByV0hYTjAvajI3b1ZVZmhJcGJqb1h2ZkVnV3JkZ3luNzFYbkxWS2l6Wm1VVGUvUktwMTQ4SEpFNjk4d2k3bC95RWYzd1F0ZmwyUm42NGpQRFlqZ2RSdmZsOU5qLzRMdjc5RTdBVVpCSHo0RklHVEl6cjhKaTg5LzdCNFc5MlVsdFR4RS96NXFKV0J6RHMvWGNKOW9XQzl4N2hwemUyRVJBWFNIV3VqWkdmZlVwa25HdXhDcGZjejRHZEVtTDJMcHdhYjZ6K3ljejg1SituZFEyVXIvc1B1OTllUTEyMm1ZcDdydWFFUVVYUCtVL1JmL0lBQU16N3ZtYjl0Y3VSS241QjZuTU5VOSsrRnhWUXZXTTVQOXo5UFBvK2ZURWQrNFhFZjd6YmRBekE4T0dwWTRGVGJxM05CcklOQkJXeTdKUmxXWlJBbHB4T1dSQkUxR3FYNWlaTE1vTGtiSkgrMFZCeWdyMHJ2aVF5MmtpSjFJQzZ0Vyt0MFZIbjB0YWFUZEJ2di8xV0o0cmlWUzFYM2NSN083T1lNK215VHJhSGxiSTZCeVA4UkY3NGJBM0pvMGNSN2dObHRXWUk5MUhrVmRjTkdZYTh1d2F0citzQktmcmdFZmEvczVLb0YyNXh6WEsxbHFscnY4U2dzN0g3cWxGa2ZyMmZsTm1KN1A3cjM0aCs3RE1HVGV5RFZIZU03OGJlU3NYbFd3bnU0RG1yMzU1T1ZmQVVydmo0TWRmYnVCVTlqTE91bElyOWg3Q2RKWHRLUHJHSHdCYzJrenJjQ0E0TFRxRHdkQ1owOUFpbXJGakI4U2ZtVWhYM2QxSnZiS25kU3FVbUJxNzltbUIva2QxWERTZjMreXdDcHNlZm1Wc2dhZ1NYL3JnVmpSckF3cllwUThuZFBaL2V3MTB2RSszZ1M1bjQxRHdjaFZ2NWFzSmpKTTdhZ2lGN05Udi9jNHlMTjIvQ3oxZWsvSXRuK09uNTk1bitlc2V0UUxLWHZrdmNveCtRUEtNM0lPSHNnaGJWNCtiSDZYSHpLVllsWE0zSUZTc0lhc3hrcnN2ZzUzK3VaL1MycllTSDZjaC8vVzUyUGZjK2w3M1YvSEtxMm5tVVN6YXRJeUJZaDlOaTZkRGZHVEo1QVZNbUwyRHJoRGlpWHYyY1hyMWJwa3liSFVZdS8rWTUxSlljMGdmTnBLemlYaUo4QzlsNSt6OUlXcnFSWGttaDJQTzM4UFhNcDRpYnVCdzNWU0ErUG9acDgrYk5XN0ZzMlRLcnl4eEZJeURiWlJBRndmV2Y0Q0t6eGVsMHlrNm5VNUFsV1JhY1RuY3RxYnNCakNHQTZObXppSXdNcDJmUENOU05VVkNYR2VyMFNQRm82VitiT0hIaWJLQzV6N3hrNS9VdlZ1TklTR1ZCLytDdWVuVXc2RFJvUkVHUlVXZUltdTByeWZ3NEhWTkZIWTdxRXFTK3plOGFROHBvRERvQUxTR2poM0g4d0NHWUFxV0h6S2kyZnM3ZUhTQWpJVHZ5cWNxdUozalE2VjhxK3FRVXhJemIySEszbGZEVUZIcE9tNGJCb3pKTVAzUXVjdzdQUFhzM0ZuTWh2WWE3VFVHMTdsZlZFYXZpa3dqMmR6MTRodWhJNnFxcnovaGNnbWpoeFBPTHlkOTVBTHRWd3B4VFMwQmxEZUFTYk9FalJybUdiQnhHY1BCSktyTXNtSGR2QTIvSWV2bFpWd3YweWhQVUhQVEM2WFllblE1aEkwYnk0ek4zNERoeUNjR3BZK2s1NFlJekhyZmxXQWJtcUdHRWhibWlDQkZqeDFDN05MM0ZHQUltemlUQVhjdXQwdjI2YUVOZ3loQlhkWWd1QWtOSURaWmFjSmJ2b3J6R2k2QXYvMFBWbDRCa1Jxek1wS1lLOU0waUkvcjU1LytWdW16WnNzMk41cWpzTWtjZElEdGxHY25sYjVOa1NYSzIwdGc4b3FSYU04VS9iYUdpcHA0Q2pSZnFSaFBVNld5ZDR0R2NrQXVJYXJWcWxzZjdtazlYcldhckdNZjdVL3ZUZVY2NEY2Rythc3BxbmZ4bHhrVkFBLytwaDFBL3ZTS3BPclk4VzdvcVRxNWp5NlBMR2ZmRmZ3bUxEYWJxNnhmWjhyV3RJd1hQZFJKTkVCSFRwdUxqWHFnZVU2ZmpHKy9kNGJYVTBhbGN1bTA5UlZ1M1V2ak5VdExmV2N2TXpXK2hQVWUzS3VvTnA5bEhVdE8vY2hkNVNRVlBCMVkzaWhiYWU5MW12L29RK2FVcGpGMjJDSjIzbXQzWERVT1c1Tk9md1gwOXI1akJSRTJkNnY1OEtqMXZEbWd4bFBhdUZYWGI4MXlTdHAraXJUOXg3TEhyS2J6dVZVWXRTRHRuMjB2cmMvYWVQMEU4VGRHYmZ6UlJVNmMybGNUMW1EYTdqVnNnTEN3c0Rkald5dGZtbWJBcnUxSS9YSlJHc293Z09KMnlTMmE1M0doVm1ZZEJOakpnU2hyUlBZeUl6Y200enZiU081QmxXYWlxcWt3U0JPSGlSbjlaK3ZyMWZGWVh3anRYcGpTcGxKMXRtWkdKUmpZZnl3YWdMUGNreDlTUnBJWXEvclhUemxod0NPcnlYRXdlY3N0ZVZJUWMyWmZnMkdEQVFkNjZsbzFIVEh1MlVXOEJzRkcrYlJlaEF3ZUJiMS9DK3BocHFBc2diR2dLWVVOVENJaUxRV05vWGpodFNBaDFCUzBicURqcTZzQS9uT2pwc3hqMjBwT284NDdpNmZ1MVpXMWwrMTBQVTFsMzd1YkFLeUNBQmpmOXM3UDRBSlZGTGNtUjFIb0Rsc3J5cy9lZ2h3UmhPdFdTYnJxaG9JQ0FJY1BRZWF0eFZoeWlhR2RMUHJtU0hWdGQ4MVc0aTRxcTNnVEg2UWdaUGhwcjFpSDAvWVkwemJtZk1haFptQm1DMERxS01WVzFsTlMydWpvTThja2szTGlRNVBtWFVYMzB4Qm5maTY3UElIUUZ1eWd0ZFFVaGluL1lpbC95NEYvTnFLUDIxV01yNzFvRVhSVTNqQkJ5c1JwaW0rY2hMZ3BOcTdlaldxMU8yN0JoZlk5MkJKdXEwV0pzbEVlU0pDRUw0TERaV25TMnNwZ2FFUHo5Y1RpdDFKZG5vMjRVYW0yckRKcUNCb0tQajgvbHpjWjBDWXMzWlZHcjh5THRXVmVvWFJ2YWkrMExKd0R3NU5zZmtGNXNvODdtWU1haUpTUU5Ic2FITXdZeGZjd292bnRuRlplOWVaS2FxbHIrZXZrMGdwVVN3Tk1MdHJBUkRKNFp3dW9MUjZBMnBuRHh0NitoSHpZVkkyK3pldVpjdEdJZHVxQ1Fsb0lnU09LSFdaZWpwZ3FMNzBRbXp4Z0V3TkJYWCtiNytkZVM5MVlDYW5zNTlTWWprOVl2YVNMUTdYWExQV3k2K1Q2K2ZGOUgzTjlmSlBuS29kVHYrSWlOLy9jSmdYM2pNR2RuRW5MN1EvaDd2SlNkNVNmSi91d3JZaDViVE5BNVNuOExtWGdGcW4vT0lYM21UNmo5SXRHRnROUnpqSmRmejlGYkgrS2IxYS9nTi81NnhqOTY3YSs2WHZUY0JaeVlONStWSTk4azRwcUhHSG5ITkdLdXVaWDFDeFpRdDNFZ2xoclFKN1JrWGJFZldNMmEyV3V3WkdjUys5ai9JOEFiR0RDVjFKdTJzMzdDT1B6N3hXSStsWTNmcFE4eTlwNUwzVTl5VHdiZmR4RmIwMGFnOG90aFRQb0tnbjNneUVOenlEMnB4emRVUzlYeFVsTGUvdHVaMzR6dklGSWZ1cGp0MHlmakh4OU1kYmFOa1o4cyt0VnJrbkRUUXJiZlBaTmYvQTNFM1AwU0E2Y25kZkNtTUpMNjJrTnN2V2tLSitMN0lsZVZZZ2xLWmZwSGk5b0kyR0hEaHFVQ3VaN0NUWlpsdStDS2tFcXlJTGpOVVFtVmx3N0pWRTlWdGdsYllEamFXQzkwNFVacU0zOGlxL3drSllJT1lmRGd3ZTcrQm1Zc0ZvdGd0VnF4MisyQ3crRVEzQ0ZYbGRQcDJBUDBQeHUyVlVsVlBYcURBVC90NzZPdG5lKzBSWjNEZ1NrL0gxVmdCRHBEVzcrSXM2R09obG9MUGhHaHJjd2RpWWJDZkdTdlFBekJYWk5Fa3EwQlUzRTVtc0F3ZEw2NjMyVzlaSnVKK3RJNnZLTWorTDMwZTJkREhRMmxOWGozakViVnpzdllXbGFNcFBORDc5dlN2SmNzSmt5bEZYaUZSYURWZFcwUDJHcktzTlpZOFRaR296b0xsQ1pPVXcwTkZTYThvNDN0anYyM2NhbllNT1VYSS9xSG9QZHZQNWxabHVXam9xaTZBNmdINm5CUkdwa0JpNEJnRjBUQktRaUNwRmFyWlkxR0kzdDVlYUhUNldTOVhvKzN0N2VMMHNoYmo0OVdUMWpQSGk2TnJka0ViZGJZY0NmSW1VejFhV2RIcUxrY0h1R0JTcm5RcnpRR01FVEhubDc5OS9iRjE5dTMzYm4zTnZiczNtcHB2Zkh0MmZOM3ZWdEJhOEEzMnZDN2prSGw3WXR2QjZrYVhxSHRWeXFJT2dPK1BiczNkcTEvS0ZyL3N6aDJneisrQnYvZmQ4dUtXZ3lkN0NOQkVQb2VQSmpSZCtEQVFmdmJtS1BJVG1Ra1FSQUVTWEpwYlkyQkJNODZVb2NrSTJuVjJHd1d4TWJHTE0yNWE4MytOVUR3OHZLNlRCRW1DaFFvT05lSWo0OGYwY29VYmMzNFFYT1psWVNuN1BJc2tMZGFiWWdldmpYQjdWc1RQQngyb2lBSTA1VXBWNkJBd2JtR1hxOVBvN242b04wV2ZhNGZxWkg1UTJpaHNUVjF0ckkxYW15U1IrREFwYWtCZ3RuY01CV0lVcVpjZ1FJRnZ3R01SNDhlR1VqTDhxcEd4by9HMUROQmtqeUw0NXMxdDJiMmp5YkIxb1p6emVYZTBHcW5LblA5MjZLMHRKVDgvQUpsSWhUOEtSRVRFelBNVTJOem02T3FWdVpvQzY0Mk40VjRDNjFOZEFjTW1sUzd4Z1BkWnFnaTJCUW9VUENiUWFmVGpXK2xyYlZuanJhUVdhMERDWGE3SGRIVERHM1UxQUNob2NFMG9YMHoxTW5Pak1Nc1dybUJlNWR2NHYxOXVSNzBLekpaZVhsOHVtMHZyMjQ4U0szSFVRNXJBOXNQSGVldGpUdFpubG1pck9CdmlFUDNYY0dKSGNYbndVZ2tmcjU2UEFXbi9qaHpheXZOcGJxdzRneVBybVBiWlpkUzJxWERiVlJsSE1KK0ZoaHhhamN0WWNNVFM4L3FQTWdORlpRZXlXM3orYy9YakNVdnAzdm1hRWJHZ1Q0ZVdsc0xqYTN4cHlWWG05UW1RaXEyTWtQeE1FTW50cjgzNi9ocWJ5RjlZbVBFelJLVUFBQWdBRWxFUVZTNHRIOFVtN2RzNFBFZkdrZHU1cjMxZXpoU1hNSmJQMlMyRUd5bGVUbThzemViL2IrYzVJdGppbUQ3TFdFdEs4QnV0cDBISXhHSm5yY1F2OEEva090ZzFTdnNXYkwrakFXOXBTQVBSMWU2VFZQT2pxdHZwTnA4Rmw0dnBrb2F5czR1LzU2VSt3TWIvdnBpbTg4dGVUblk3ZDA3VjY5ZXZaSTlOYmJUbUtONG1xUE5XcHRMc0ttYm82R05UQjR1TTFRVXhmWUZteGpBNGhzbk5mMGEyRkRHWC9ibnd0aFl3SnRuYnA0Sk5UbDhjM0JuU3pHYzBKOFBFdnF6ZXNOYVBxaFRoTTI1UVBYT2RJNHZYNDhkRFFFanA5SC95dkZOU2JxMjRxUHNlK3gxekZaZkV2OTJOeUZHWDhCQzNySVBLZHA3Rkx0ZFRmQ2tXZlNabm9vQVZQK2NUbVdsbm9ZOUc2aXBGSW03NlhhTVNlNGlkVWNkMmUrL1ErSCtrM2pGRDZIL3dwdnc5dTQ0KzlOMDZBZE9yTm9Pb2hidjBhMEViODUrTXBkOGdxbmFpaUYrQ0gwWDN0QTVBK3hweGxDemR3MUZCZjcwdlhRRUFKV2JWMUlsSlJKL1VSSmw2ejZpUVcya2NuTTZGbWN3Q2ZQdklEVFczLzJ3bDNMOG5YZW95Q3JCa0RTTy9yZGNpVmJkcUkyVWNlSzk5eWc3VW9CWHowUVNicjZWQVA5cU1sOStuNG85R2RUVmxiRi9jVFpDWkRLRGIzUjVieHdWV1J4OTkwT3FUOVVTTVBZeStsMlY1azR3dHBIMzBWdWMybm1TZ0xUSmRFVUJxL3grQmFkKzNJL1pWTU9KRnhaVG9CV0puTE9ROEhoLzEvbVd2VXZlanFPb2pRa2t6cC9mVk5qZXNRSll6YkdYbjZVOHU0cklXVGZUYTB5L0pzMHcvL1AzeVB2aEVLcUlSQklYZG42KzNBOWVvdkxnQWVUaVhQWXRYb3lnQ3FUMzN4WTJrU2FZVCt4azk1SlBzWHRGTStDZXUvRnpsN0JZOGpNNDlzN0gxRlU3Q0oxNk5ZbFRoaUlBM3Q3ZUk0RFBXcHVpamVZb3NpUTVKVW5BNlVRbHFtVkpJd2xPdTAwMjFkUmdreVFzWHQ2SWpWTFBuWlNMTENOVVZsYjBwNHZOV282VWxwTm9ERkdreXU4TXVXUW5HK1kvVCtqTWErbHozUlVJNXBvV1JJQW5sMzlGNkNXekNkQmxzL1hCMTVwTW9acENPMUd6cjZQM3ZHa1V2WEk3QjljY0E2Qm1Wem83L3ZZNG1wUnB4RTdvd1k2cnI2V2lSZ0ljWk53OWgxOHluU1FzbUkrUGVROGIvL3J2VGg5UVRYZ3NZV21qS2ZuOFZWcVNiVFN3ODZicmNmYTVtSDd6YjhRL1FNTGE2UnYrOUdQdzZ6dUl3bGZ2NDhUdVFteFpXL25oNGY4UU1DalJwZk9zLzR3ZEQ3eEk0T1M1R0JNZGJMbjJUc3dPbHhXeTg1b1psSm1NSk41Mkl4ejlqQitlVzk1a29mdzA3eklLQ24xSnVHMCs0YjI4cU0ydEJMVXZ3ZVBTOEU4TVF4dmRsN0MwTk1LSEpycHZLWjh0TStmUUVKQkNuOXV1b3Y3Ylo5bjl3WFlBU2o1OWxsMmZIaUx1cGhzUjlxMmtyTER6eW41ZDNFREMwbEpSYTcwSUhKTkdXTnA0ZklKY25JaUZTeDVqMTZjWnhONTBNd0dhazZ5ZmQxK1htSG5yMW4xS1ErU0Z4TThjeWFFN3J5TDNtSXRFTSt1NXY3Qi9WVGF4Tjgwbk5LeVV6ZGM5MU9uNS9JZU9JV1JZRXZoR0VKNldSdGk0QzkwMFR5NnROR2RGT3NaWjE2QXQzY0pQenk5ek9iUks5N051NWkySWd5YlJaOTVsRkw1OEI0YzNaUUd1WmkrclYzOFgyWjZmRFZrV1pBUkJFQVFRYUhLak9lMVduS2pSQkllaURkQ2hibDN3anFzMmRIeFhIcVpUMllkNTg3Q1RkKzdzcDBpVzM5dDcxVkNKdzZGSGI0d21KRDZDa09TVzM4ZGRkeWZSSS9valIxMU54dVVmWUFPMGhETGdyemRSc1g4LzVtb2Ivb1BpS045MUVLYTQraVlFWEh3TmZhYU1Ba1lSdCtJOWNqY2RJMmhVSmNjMk9wbTQ2eTU4TkJCMDk3MWtwVjVMVmNPOUJIZEEvYThON1lreDFNZ3ZiVFE3SzVacUs0RmhZUVFNU0NKNFlITG5RcngwWndkak1ETHl0YWRaYzh0dDVCaHE2ZnZpUndTSE5wY3pSYzViU095WVlUQm1NTGtmRGlCL2J4VXg2dlhrbHZkbjVyMVhvd0w4NzcyRHIyZThqdVhST1lnWnE4a3BUdURLcjI1M01ac2tOOWRHaHFlbVlqOFVRWmsySG1OcU15ZGMxZnJsMUJpbk1mNkdpNUdCUVhmZHlLcEZYekg4eGxIa3JsaEo3NzkramZHQ09Jejk3K2ZFaDFkMmVyL2VQZnZnM2RNWGpVWkhTR29xb1labW9aRzk0aXY2UHZROXhnc2lJUGtKY3BaZVFNR0psNGpyM1hFSmwrYUNTMG0rS2cwQjZEZnpNM0xUZnlBbWZqQkhsdXdpZWRPUGhJYW9rZnZmVCs3U0VSUmxPWWlKUDMxOVYwRFNNSHhWK1FpR3ZCYnowSWplQy8rT2NXZ2dnZlpackhyT1ZWOWU4UG43YU1iZlN2OXBvNUdBZ1F1dVlNZnlkSkxTWEp4MUtTa3AvWUU4VDNOVUVJU21aRjBFUVVBVVpVSEVwWmhwdk5ENWFuQTZyTmdGTDVkZ2ErenUzdmlqVXFuR2RqYlpGVVU1TFBqOEFJdHVtRW1pUWFsbS83MmhpcHZFeUhzeU9IRG5ISDRvdEdLODV1K01lR0J1VTMybFY2Q3I1RjNRYVJFY0RpVEFXWkhKK2hrMzRUMXlLZ0VSL2pRVTF5UDVORk5TZTBlRU52Mi9QalNNNnNvU0hLWGxXQzJGN0xyMXhpWWFIcStrSkxBQzNtY3k4a0NHdmZvTSsxOTltQy8rbmtmQWlNc1k4Y3FUK0hhd3B4eWxSUjJPUWRkblBER0ppemhlTUpqeG8xbzJHTkdITmRKL2EvRTIrdE5RWGsyRHN4aXBNb050Tjl6WVBLb0I4VWlBdGJBWVRVeDh0K2lhNm92emNSemR3NVlibXZzbkJQY2U3anBmYVIxQllXRnVWU3dDUThDdktRZzFZeWsxbzJ1MG1NUkFER0ZncTZ3RE91WkkxSVZGTmJrcGRNWXdHcklxb2FZSXM5bk1vWHR2NVdqVG0rQUNWTmpjOHVYTS9LcnFRSmRUVmFWUklWdXRycEVYRldENjhRaWJiOWpjclBrTmFTNXlDZ2dJU0FZMmVHaHJyaDhCQVZrV0pLZFRrSjJTSUlvcUpFbVNIZVphb2FiVUtodDhmQkYwdHJZYTI3MzMzcXNTQktGRDN1aTZpZ0p1K1dnYmQ4NmR3YmdJYjBXcW5CZFEwL09XQitsNXk0UFlTak5ZTjI0MlJkZk9KZHJZZ2U5bTR3b2NRMjVnN0w5dUIrRDRFN3Z3REZnMkZEYzMzREdYbGVKMVlUanFNQTFlaG5oR2Zmd3BCdlhaR1huZ21GbE1HRE1MMlZMRmpubVRPZjdkSEZKbW41NDFRaDBXMmVFWXlyOTVrZHpxSWNUMytvV2ZYOS9BcUR1YTNjWG00a0lnQmJEUlVGaERaRWdBM3VvSVZKR3BUUGpzdFRhRjlqWmpCUGJjbmRna211akFQU0VJQW5LcjdpaytFZEY0cFlReThiMkgyd3FVY0gvTXBhVkFIRmlLTVZVN3Vpd2dCRkZxMWR0Qmp5NU1qNld3SEhwSGdGU0ZxUlNNWGFCYnNaUVdJTHMxR1V0aEtkNFJRZUFmanQ3Z3o1QzNsaEVlZUFiS1NqZTZ5T2dqamZoZk5KT0pUN2ZQeUtMUmFFWU1IanhJYytCQVJxdEVYVUYwNld1Q2dDemh0TnVSTkdyc1pnc2FuMkIwWWY3b3ZIV29XNW1oUFBua0U2T0IwMWZOMnV1NGMwazZ1dWcrVkJaa3M3UUFWUG9BNWlXN2lseTNIempFeVlweXJFNHpYMjdQSUNFOGtxa0pvVWdOMVN3N2NJckRwNm9wdFVrczNRR3BBL3FSNktkUlpOSlpnQzFyTzBjMkZSQ1pPZ0JIL2s2czJoaDhBam94Y2FKNjBMQW5uWUtmUjBQeExvNTl1dy85OUV1YWd4RnJQK2JvbWtINE9nNlJ2Yy9BK0ZmNklQaEw5QmxyNDhmN24yZmdEUmNqVnhWU3NDZVBJZmZkMWlIN1J0WCs3WmhxckpoTlRpcDNia0Y5eW91UTFCSG9kS1VjL05jS2dzYU5SRXNsOWFWMmdtUENPeHkzRUpaNjJqRTRzN2F6N1I5ckdmWE5ONFQ0bHJGK3loeE9wUGFuOTFDWGhDLzY1QzF5VWlNUXNsZFRZcitRWVJjRW9oV24wdFAzUmJZL3M0UStsNmJpS0R4R1NiYkVCWCtaalhiUVZHSWovczMyLzN1RC9uUEhZc3ZkZ3h3NWlaN3U4L25IOTZYcWc2ODRPVFFJYldnTTBjUDdFVGhwRGo0dlhNN1BiL1ltYmt3aTVxeERWSnZDR0RSdklqRnpybVRicTRzSkNibWRxcS9lb0w2cmNvMFFBbUljbkhoektkYmtTQUpTUnVNYnJDTnUxa3grZXZGSkFud1hVci9wQTJvaXBoSFZ1M1A5MHI0M25YMmZYWXd4b29ZajN4eGx5S2ZqUWUxTHY1c0dzdnV1aDBuKzZ6V283ZVVVYmRwUHdtUDMwQm1CdnlvNkhuM0JNeHo2ZkJYK2dVR0VqeC9WRkh4cEQxR3piK1RBSlg4aG8zOEl4Z0ZHNm83dXhPcVRUTjlMaGpVcGNPKzk5MzZ2bEpTVVF6UTNVMVlKSUNJSUlyTHNSRVpBRkdSWmxwRkZBYnU1Rmx1REJybTZGSlZhclJiY2lia0NJRDcxMUpOWGk2SjRlaCtiWktmS3BpTGNvTUZpZDJDeE83Q0tXb1pIQndGd0xQY1VlVlkxUTJORHdlRkFyZmNsS2N3WDJWclBEOWxsK1BnSDBpL0lHNHZkUVZSNEJCSDYzNWFNeG1ReTRYUkszVzVLWEZwYVJuQndNQ3FWNnB3ZWM2YmpRM0JTdFdzN1JaczJVMXNxTUhEUjA0UWFtN2VqYjc4VURJSHU2SlltZ0xCaC9kSDFIRXhnVUEwNVg2N0JqSkdrMjJaajZKRkFZRnc0TmJ2U2NjUmNoTDVzRDZYSFRReDgrcCtFOS9BRlJNS256RUJWZXBDODlBM1VGdFlTUEhJc1FYR1JIWExtbDYxYlNkWHhmSHlUVWhGckN6RVhsT0J6UVNvNkx6Qm5IYUJvMHliS0R1Y1FmY3VqSkk1TjZGUjdPZDBZeXJkdkpuVDJYekQyalVEUUJoQTVvaThWaHdzSkdSaFB4ZnBQMEkyZGkrUGdKcXJLZkVoNTdnbjhBM1FnZUJGMTJVeHNSN2VUdis0SFRGVjJ3c2FPd3o4cUJBUXZvaStiZ1QxN0ovbHJmOERxQ01BNFlRUTZiOWRUcTQwZFRFaVVRUFhoNDFqTVdzSUg5d2FOSHoxblRLTHU1ODBVYk55SzFhb2xZdXg0Zk1OOE1Rd1lnYStZVCs0M205R05tVTFNU2krQ2hnN0ZxMU5aSkJJK01RMWIxaUhxOC9MUnhTVmpDTkxoZThFNGZPUUNUcTFhajgwUXovQm5IOGJnM2JrcWJSaWVobGZCeitUL25FWEMvYzhTayt3UzFFR2pMOEZIS0NJdi9UdXFzb3J4dTJBMFlmMWlPaWNpOWdvbmFtdy9haklPWVM2c3huOTRDbzNNWkFISkk5QzdEVHZCTjV5d1FRbUloa2hpTHhsQnhaWTFGRzc3Q1ljWVRPVFkwWGdITkZ1QWVyMCs2N25ubmp1QnE5K29IWEFJNEFDY2dDUUlvaXlxUkZrUUJOUmVPbFNTRTZuQmd0b1FpS0RUNlVSUDdqV0h3LzZOSUFpVC9xaWF6Zm5PeDNhbTR6dmJ5SDM5ZHJKTmt4ai93T1YvbUxVL2N2K2xtRktlWk9qY0ZFWEYveCtBdytIWW90Rm9uNldabzYxZUVBUVRZQlVFd1NZSXpSeHRXcTJMbzgzTHk4WFJKcm9UY3BGbFdaZzllNVpLRUlRUnlwUXE4QXFMd3ljaTZBOTFUN3FZUkx4REZKL3cvNHpYV0swZUdoTVQweHc0YU5sTVdXeDBuN21TZFJ0L1hLbHJhczgwajNmZmZYY1lvUFREVTBERTdQdUorSVBkVTl5ZEx5b0wrNzhGbjJYTFB1NDVhdFRvWXpUM1FCRGRhUitOcFZXQ0xNdXlMRGZuNDBxUzFLeXhBZWgwdXFIS1hDcFFvT0I4UWUvZXZYdTVoWnBuMmtlallLT2x4dWJxMVNKSlVzdkNVcFZLcFRnZnppTEN3a0s3RlRnQU1CZ00rUG41S3BPblFBSGc3Ky9mcDVVWktucjhDSzAwTnlUSlJXbWs5cUFwRWdSQnVFQ1p5ck1wMk1LNmZZekJZRkFtVG9FQ056UWFUUkp0Zld5TnhmQk5UQitlUmZHZUdoc25UaHdQQXhLN2VzSHEybHB5SytweG5DNG56OW0ycWF6VmJDYTNyQnF6UTFaV1RJRUNCWjFDRUlTRUYxNTQzcWVsWUpOYm02TkNjejZ1Ui9BQUVJeEdZNWVLM3BIcXVldVZGZXkxYXduM2NsSm8xL1B2NjZjeElrd1BXSG51bzIvNU9xdWNVaW1BTFU5ZFJiVDdzUGRYcnVTTnpEcDZCSGlSVjJWaHdSV1hjT3VBTUdYbEZDaFEwQ0VtVFpwa0JDcG9JcHhFRkFRRUQ4ME5hUGExeWJLRXV0RkcxV2kwWFJOc29vWUZzMmFTMU1PVjFyN3l1MVVzMm5DUTFmT0dBeW9tajd5UVd5ZWFtZmptbmhhSGpVZ2R4VFV6dzlHS2tIOTBENU5YYk9QeUFWZDBVdEdtUUlHQ1B6dWlvcUo2QXBsdVFkYWljeFZ0b3FNdTRTYTZKWjJnVW9rRHVuWVpyeWFoQnRBenlCOUxFOCtNbWlHOW9nald0ODE4N2hzVjNsUnJGeGJraCtpd1k1V1VSVk9nUUVISDhQSHhpZk1RYXExYjhqWGxzcms3V0NGSmt0Q1U1Q1lJd29CdVg5RnU0cjJkV2N4SjdkdU5nMlErMlhxUVljT1RNQ3FrSUFvVUtPZ0VHbzBtb1pWUWErRmphNTJvSzh0eVV3bVlBSFNQVkUyeTgvb1hxM0VrcExLZ2Y5Y055aDAvYitYamNqOWVtRFJBV1RFRkNoUjBDbEVVKzNob2FXNmhKbnVhbzlBaWdPQVNiRUpwYVVraTROWDFTem41ZE5WcXRvcHh2REsxUDExVnZBNW03T0t4bjJwNTU3bzBnaFZTRHdVS0ZIUU5YaXRYZmhIaUlkeEVXYVlGaDZSbkFFR1dYZWtlK1BqNEpIVDlHakxwNjlmeldWMEk3MXlaZ3I2TFV1M0U4UVA4ZlZNQmI5dzBoUmh2eFFaVm9FQkIxOUczYjk5UVRwK2s2eUhVWE9hb0doRFVhblY4bDY5Z0xtSHhwaXhxZFY2a1BldWkrZFdHOW1MN3dna0FQUG4yQjZRWDI2aXpPWml4YUFsSmc0Zng0WXhCL0dmMURnb3JSYTU1K1VQM2lmUzhkOTg4QnVxVlJWT2dRRUhIQ0FrSkRXOXJqcmJVMmp6TVVWa1FCRUh2Y05oZkZrVngvcDloZ241TDJpSUZDaFNjSFpqTjVtWGUzb2FsdU9pTDZvQTZONFdSQmJBTGd1QVFSVkZTcTlXeVJxT1JSUUJCRUdLVnFWT2dRTUg1Q28xR0Urbld5c1RUbUtLZWFSK3VMd1JCaUZHbVRvRUNCZWNyVkNwVjlHbUVtdUFoM0FBWmtKdStWQVNiQWdVS3psc0lndENqbGNZbXlIS0xsQTkzOVFISU1vZ25UaHdQQjNUSzFDbFFvT0E4aHU3Zi8zN0pwM09OeldXT2lzSEJ3WkhLbkNsUW9PQjh4OENCQS8wOEJGbWJkSTlHb1NiTE1xS1hsMWY0bVZ6a1RHaUx6T1lHY3N1cU1kbi9QTFJGc3VSQWtwU2lXQVVLZmkwaUlpTDhUcU90dGY1QnJWS3B1aWZZenBDMjZLT3ZWdkxtVVJQaHZsb0tLMDNjT0dNcUN3Zjl3WlhGd2swc1Q3NGVWWThJWkpzRnI3Z1Voci80RWhHOU95OUJNKzMrbWdQYkhZeTgrMHBsUnl0UUFQajcrN2ZXMkU1bmlncWlLSXFoM1RxN203Wm8rd1B6V0huM2RUelEzNHRGR3c2NnYzVFJGcTFhY0JHdHlhMnZuRHFkN1E5ZHg4bzdyaUw5MnFHOCtzMVBWUHdaVnNNcmtVbDdkalA3NEg3NkRuR3cvZi8rWDR1dkhUVmwxT1lYSTdYUThpVHN4ZG1VSHZ3RnlkRTlqVThHY0Zpb3k4bkJicFBjNTNOOVo2c3FvNzYwcHMweDlwb3lhay9sNDdBcG1xV0M4eGZlM3Q1K3B4RnFUZFRnamFWVmFsRVV1MG1KNWtWU2orYXkwcDVCL2xoS1d0SVdVWlBUNWlpOVIwZFlDVkNyeEE0YjdQN3hvQ1pzZUFxV3pVZHhBaW9zSEh2NkxnNXZ5TU0vVkVOdGJSQVRQbHRDUUdBZE8rZmZSc1dKSEJyS0pOYk4zUVVCU1V4NDkwbThLQ1M5NytVTTM3T1RVQU5VZnJtWWJlc05YUGJHWDEwSzRwTDdPYkJUUXN6ZWhWUGpqZFUvbVptZi9KTzlONlZTSVF4Qk5sWFRjRFNEaUwrL3hZaWJ4d0tRL2NKQzluMlRTMkJzRUxXL2xIUGhxcldFTiswSUMvdi92Z0QxUlhlUk5GM3A4NlBnOTRWV3ErM1V4K2JXMkZBTGduRG16U01iYVlzbVhkYWxQLzlwenk1ZTNaWE55UW9yLzVoM0tVRi9odFdRNmlqZXRJbHFTdzBuWC91Q3VHdWVRZ1ZVYjNpUGpCMGFMdHU0Qmk4MTVMdzhuMzF2cldMQ3c1ZHo0YnNycVBudVZUWi9aV1hLMi9kMzYzSlZPNDl5eWFaMUJBVHJjRm9zVGF1dTZUZVZDUS9Pd0xKN0dWL2V1NHpoTjQ5RlJTbEhsL3pJaFZzeU1JWUREaHZPRm1XOEVqV0g5dUUxc0ZwNXFoVDgvcXFCV3UxSHg3NDFvVm1OZ01BemUyQzdUMXMwc0c4L25qTEdzRzN2SGw3ZHVKK0xiaDNQSDc1MWlWUkw4YXB2RVlxUFVhTWZ5dVFiSmdKUXRuMDdHa1F5Ri84RENiRG5WbEJsUFFUOHVzN3JBUk5uRWhEc3l0NVI2WnF6ZU1LR0RBWkFGeDJOV0YyTkhWQVJSTVNJSUhiZmRnTTlKNDBsSXUxaUlnWkVleXIvakZ1Zm9UeFJDczRMcUZTcWRreFJHUkNFMWc0WkVmRHIvaVhPakxiSVlQQ2hkMlFZTjAwZGpWLytNWDZzK0JORVI5VlJKUC83SmNaK3NvcGVrY2ZZOVZwNjArUWJrbEtKbWpxVkhsT24wbXZoSTR4OS9KYXVTTXJtNVdzbkpLMzFhWjlWUUZDN1YwbHNhUjRQZVhjZG8vN3ZGclQyQXJaZk9aa1RlOHVVSjBqQmVRbFJGSDFvNDF0cldWTGwvZ3hSRUlSdUNyWXpvUzJTS0tveE5mMVdXVnBNbmtOTG9PN1A1R1VUNlhmL0E1UXNlWjdLR29uUVVTT3B6VHlCZjNJS1lVTlRDQnM2R0VOUXMvNnE5alZnTDYra3Blanl4Y3VubG9iQ0JwZld0Mi9Qcnh5VERadEpJbmo0V1ByZjh6Z0pZOE9velNwcDhmM2hKKzdtMkFaRmExUHcrME1RQko5T1ROQW1YalkxZE5NYVBDUGFvcjY4c3ZRenRwdDFoT3BGY2l0TXpKbCtFVVAvWkMwME5iRnA5QjMvTEFmL2s4NjRCMjRsYWNmZHBJK2JURUN2Y09wemZ5SHFqcGRJdVdxRVM3dE5tVW9rTi9MTnVJbG9JbEs0NkxQbjBPRkw3K3Nuc1hQV3hSeExDRWRyRU1IbjE0eW9sQzBYWDQ3VG1JaVdTbXJyNDBtYjNOL2plenZGMzM2T05td0tmU1lPVXA0c0JiKzNZRFBRc3VpOVRhb0h6UkpPS2dDTXY4WEFUQTBtS2l3T2duMTlNV2grSDdMSjg0MjJ5R21xb2FHcURuMllFYlcyYTNOaUxTdEUwZ1dnOS9VK0N5T1FNQmNYNDBDRFQwVG9ueXhTcmVCL0RFV0NJQzRFVExpb2kycUJla0VReklCVkVBUzdJQWhPbFVvbHFZSGZqT3JSNEczQTRLMnNqaWRVQm45OERmN2RPc1lyOUd5K2gwVDBFVVpsSVJUOEwwRFhnUm5xQVZmd1FHRk9WS0JBd2Y4Q1dzdXFkZzBNV1VZUmJBb1VLUGlmRW14dEFnYnRDYmhHL25BRkNoUW9PTitoNmtCamF5SGdHc3NTRkp3REhEcDBHSnZOcGt5RUFnVm5CMkpIV2xwN2Y2aEFnUUlGL3dzUU92a2RRQkNCYmxJNk9ObVpjWmhGS3pkdzcvSk52TDh2bDJhZFJDWXJMNDlQdCszbDFZMEhxVzN2Y0llSjl6Zit4SmI4R21XSk9vS3RtTXgvUFVmZS90emY1ZksvdkhRdjZaZE1Zdm5vRzJnNGg5Y3haNlNUUHYxU1ZnNGZ3dEh2ODMvWEthL1BPb1NwUnRHd3oyTjBXVmFKZ0xON3A2N2pxNzJGOUltTjRkTCtVV3plc29ISGY4aHAzS2E4dDM0UFI0cExlT3VIekhZRjIrb3QyM2pqeHd5MkZOUXF5OVRSUTdiamF3NTlzSlQ5Ly9ueWQ3bCt3ajB2TXUyVDV4R3JLam1YaFcvNlFkT1k5dTBxZWlWNTQ3RCt2clJKSjU1WlFQYk9ZbVh6bmI5d25rWmJhNk8xcVFFYm9PbTZsUnZBNGhzbk5mMGEyRkRHWC9ibnd0aFl3SnRuYnA0Sk5UbDhjM0JubTBOcmk3TlpXdWpEN0RqdmM2b0YvQkdRdDNvTnZlNTlpUHlYUDZiVzlqZjh1aEM3cnQ2Wnp2SGw2N0dqSVdEa05QcGZPYjVweFUxSHRuTnMyVGVZYXlYOEw3eVlmbGRQUklXRnZHVWZVclQzS0hhN211QkpzK2d6UGJYVEpOMks3YXZJWGYwakRWVW1mQWVOb2U5TnMybGtwYXJidTQ3U21pQzhTbjRpZCt0UmZNWmN3ZUM1YVdmOGdpNzViaW5aYTNlQlh4VHh0eXdrTk5iRjJTQTNsSExzN1hjb1AxR0VsekdHWGpjc0pEamF4UUpvT3J5Vkl4K3V4R29WOFJrMGx2NjN6T2h3ZzF1emRuRmsrUVpLanBZanJuZ1R4eDQvL0VaZVNxOXhTVTNuTzdiMEs4eFdMVkZ6YnlRMnRROEFoVis4ZzJ3Y1JPbDNLekZiZlVuODI5MkVHRjFqc09ic0ozUEpKNWlxclJqaWg5QjM0UTNvZFIzZkU1ZzQ4ZnBTZ3FkY1NNNlNwVmdjdnZUNTIvMEVHdzNLQStHMlk3cWpzZjBxM2Z0SWFUbUp4cEF1N0ZFYnozMzdNd3VuRHNOTFNXL3ZaSzZxeUYrWFRlVFVPVVFtbHBEZkJTMUNMdG5KaHZuUEV6cnpXdnBjZHdXQ3VhWkowN0ljV2NPYWVRK2dHM294Zlc2YWcxRFc2RDZvbzZiUVR0VHM2K2c5YnhwRnI5ek93VFhIT3IxV1hWWXVnV25UNmJmZ2VxVE16L2pobVkrYXY5dTNucjMzL1kxVDJWN0V6SnFKMmxGM3hocGY5WWJYK09IWmRLTG0za3hrbkpNdFY5NUVyZnVOZVB6WjI4a3ZES1R2N1F1SkhOSURTNlc3RnRtV3ovZno3c0k3YlE1OWI1bUxIaE9PVHE2akRvb2lMQzBON3hBRFBvTXVKQ3d0RGYrNDhPYTV1LzVSZk5KbWtuREZPSTdlZXozWkI2c0FLUHJtWFhZKzl5R2hsOHdtUUpmTjFnZGZjNSt4Z1owM1hZK3p6OFgwbTM4ai9nRVNWbnZuOXdRbXNsNTdrUi8vN3pYOFIxNU05S2dFTE9WMXl2Tndlc0VtdC9xM2hjWm01Z3lwaTA1bEgrYk53MDdldWJOZnAzLzc4ODRkVlBkSVpteW9sbjNLQW5VSWE4WkdLbnhTQ1RkcWtkTEdjR1R0T3ZxUHViNWpXZGhRaWNPaFIyK01KaVErZ3BEazV1OXlscjVONkhXUDBuK0dTM01LU1I3bS9pYVVBWCs5aVlyOSt6RlgyL0FmRkVmNXJvTXdwVStIMTRxOS9uWnFqK3lucHFBYy82VCtIRnV4RzdpMitXMlprTWFJaDI5REFLSi94VHprTGw5QjNPMHYwV1BFQlRCaUVJVXJCNUgzVXo0RDBxS3hWbGFpaVFyQkw3NHZJUU9TUExaK05WYVRDbDFZQklHRDRnZ2VOS3pUNjZnQ2pSaFRqWlNFNk5Fa0RzR1kyck41N3Q3L0QyRTNQRVN2c2NPUWdiNnpoNUdkdm9tNGdTN0s5cmpyN2lSNlJIL2txS3ZKdVB3RGJJQVdLNVpxSzRGaFlRUU1TQ0o0WUhLWDdzbjFpSnJwYys5enhBOE5WaDZFdHJCMFIyTTdJNnV3b2lpSEJaOGZZTkVOVTBrMGRCSmN0Vlh3ajQzWkRBM1hzUDd3U1U3VzJNa3JMT1pRaFVsWnFuWlF1RzR0R3IyRm82Ky9RVVZlUFdWcjEyTHQ3T0dNbThUSWU4Wno0TTQ1TEIrY3lyWi9mZHJra0RBWEZPQWJGOWZXWVZHUnlkcTBOREpYcktmcTBHRWFpdXVSSEozdEhSTzdyNytZSDUvOUw1WDdEMU9YWFlSa3M3VjRaZm9tSnA2Vm1sTkxaU1hlSVdGTjcyQjlXQ0NXMG5JQStqendBbDU1WC9QdGlLRjhmY20xRko1d0U4MzdKREh5cGRzNCtlUUN2aGlRektZSFhzYnFPUE14bUVvS0tmdnlUYmJjY0NQZjMzQWp2L3hZams5d3Mybm9GZWhpSVJCMFdnU0h3KzNkRG1UWXE4OVEvczdEZkRFd21YVzNQazZkU2VyMG5sd0xHWUp2dkNMVTJyVktaTm5jam5iV25rRWdxM0VWbEhZTGRSVUYzUExSTnU2Y080TnhFVjBvL3BSVmpCMFlTMjd1S1hLQjdIbzc5dEpTVGxURWtoU3MrQTlhdjVUeTEyOGxmTUs5cUF4YVZIMUhFcEQrVHdvT211ZzFzS081VXRQemxnZnBlY3VEMkVveldEZHVOa1hYemlYYUNQb2VVWlJrWndNdE5ldktqU3R3RExtQnNmKzYzV1hlUGJHTFV5MmtwUnJSNFdpeGMrVDhIWnc0SE1HVmUxNUdDOVJ1ZUkzRE96SmRkSCtOYjhzelNDSVMxQ3FrUm52TkRWMVFFQTNscFVCUHdJRzV0QXEvTUpmYnd5djJBaTU4NjJQQVFkYmlCZXgvYXdYR0Z4Y0FFSDdaUXNJdlc0aXpKcDh0MHlhUXMvY0crZ3p2b2xIU3FyK0VJZHhJNU9oN0dISGJtRzdkVCtDWVdVd1lNd3ZaVXNXT2VaTTUvdDBjVW1ZbmRYaFBkREovdG9waWJBNHZmTUlELzZ5Q3plUWh6RHIwY0tobFdhNFZoRzY4WCsxMTNMa2tIVjEwSHlvTHNsbGFBQ3A5QVBPU1hlcjc5Z09IT0ZsUmp0VnA1c3Z0R1NTRVJ6STFJWlQ3Wm94dk9zVXJIK2RUbFRDSXl4TkRGVG5XV292Sy81SEMzSjVNdmUrMnBvQ0JmUEFyOGpkK1Q2K0JsNXhlS2M3YXpwRk5CVVNtRHNDUnZ4T3JOZ2FmQUxmcGVNMThEczk3aXN4NEhXRnh2cFIrbjBIY1hiZmdIZFdEaGozcEZQdzhHb3AzY2V6YmZlaW5lMXpEcHhlaHNVVmt2UEFoRVgwaU1VNmRqQzR3Q20velFiTFc3U0RZWU9Md3F4OERRMzcxZlllbWptRFhmMS9CSUUzQ2Y5Q0ZoTVNGMG5QT0xEWTgrUy9DNHg1Q3lscE5mbEVpRjEvb010bXlQM2dWb2Vjd2ZFTTFWSnpJd3lmNUtyY3BjWWdEeS9ZUVBpWUZvU2FMQnBNdnZsMTB2dnYxVHVEWThuZnhGY2ZpSFRlSTBONFJ4TjZ3Z01NM1BNYlJ5Q2NKNmVsSDlkNGZFSHZQb05lb3VBN09WTXJCZjYwZ2FOeEl0RlJTWDJvbk9NYmxzK3ZvbmpyREwwOWVUMmJwU0daOTl1U2ZWYkRWZDZDdHRSQjJxaWVlZU9KS1FSQVN1KzdZdGxObFV4RnUwR0N4TzdEWUhWaEZMY09qWFIwTWp1V2VJcytxWm1oc0tEZ2NxUFcrSklYNXRqbE5kSGc0c1g2L2ZiY09zaXdBQUNBQVNVUkJWQU42azhtRTB5bmg1OWM5ZnMzUzBqS0NnNE5ScVZUbjlCaHJRU0hxdnNQb2tSemY5SmwzbEJHSFhVTm8vOWdPVkI0blZidTJVN1JwTTdXbEFnTVhQVTJvMFdVbXFVTVRpQmszZ0pLMTZSVC9mQWg5NzFUQ0I4YmkxWE13Z1VFMTVIeTVCak5Ha202YmphRkhBb0Z4alIwWk5SZ3Z2Z2p6c1F3c0pTWUNocWFnOVE3Rm1CcEx3Y292cWNxdHA5OWR0K01kSGtWNGNyUDU2UlVaNzNHT3JzRTNlUXcrWWlXMVdibW9JeFB4and4QTMyc1lvVVlicDc1S3gxUWZ4SkIvTGlJbzFFVkc0NmpNcFdqVFprcCszSWNoZFM3SnQxNkNTZ1JFZ2RxTUhSUnQyVVRsTDFVa1B2ZzAwZjNDdXFabERSdVAybHhNM1M4NTRCZEZZR3dZNnJBRVlzYjBwbmhOT3NVL0hVRHdqY1U0YmpnNmd5dk82dHN2QlVPZ2V4OXJBZ2diNW1LVU5tY2RvR2pUSnNvTzV4Qjl5Nk1ramswQTZQQ2VYTkFTTkd3b1duWDdZelQwSGt6b2dOZy81MHZmNlR6NjlOUC8rQmxYRU1IYStLOGdDSGJBS1FpQ0pBaUNMQWlDTERpZGpvOUVVYnptenpJNXZ5VWYyN25pY0ZPZzRFL3BwTEZZVnVyMTN2K2xMUjliQXkzNDJFUkpsR1c1VXBreUJRb1VuTzl3T0J5MUhpYW5mSHBmbTRBb3kzS0ZNbVVLRkNnNDMyRzFXaHZMbFZvTHREWUNUblE2bmVYS2xDbFFvT0I4UjBORFF4MHRrM0pQR3gwVjdYWjdpVEpsNXdaaFlhSGRDaHdvVUtEZzlLaXVyajZkS2RvazdCb3pQRVNMeFZLcVRObTVFbXhoaW1CVG9PQXNvYWlvcUs2MVFCT0VObVZWc2lDQVdGUlVYSFJHMHJPMmx0eUtlaHluSTJSd3R0SVFKUm1IVTJyNmthUS96NExJN254MHVSM1dsZE1WdXpWOUxpa2JXb0VDZ0l5TWcvWHVSME5xRm01Q080K1BnSHJ3NE1HbGt1UzA0T29BMHpta2V1NTZaUVY3N1ZyQ3Zad1Uydlg4Ky9wcGpBalRBMWFlKytoYnZzNHFwMVFLWU10VFZ6WFZDbjYxYmpXUDdDakF6NTJnTS9yQ1VieHdVZUlmZnpWcTl2REZwSDh6NCtjblNCOXdENU1PcjJwcTVKcS81QjVPMWt5Z24vRUFCNDRrTVBHcHVVMkhiWnVRUk95SGh5aThKNW5RcDNmVHE1OWEyZGtLL3N5dzNILy8vUTBkbUtJdC9HMk5UOHNwb0d0U1J0U3dZTlpNa25xNDB0cFhmcmVLUlJzT3NucmVjRURGNUpFWGN1dEVNeFBmYk51bGZPcUVDYnc0UGtGWklnVUtGSFRQNnBIbHZGWUNUUExRM0ZycWE0S0E2RHBHN2daTnExZVRVQVBvR2VTUHBhbkdUODJRWGxFRTY5dlhMcXFycTloeUpJZnNHc3VmYUVrRVZGNWVnSWhLcjI5UkhDNnF2QkMxSW9KS2hkZ3ExVnpVNjBFRTBVdnY0amxXb09CUERLZlRXZEJLcUxYeXRRbXlJQWcwQmcvVWdDeEpVczRaT2JudEp0N2JtY1djU1pkMStxY2FMeDMya25KVzdTOWg2L0oxVEo4eWhjYzk2R0grc1BDL2dNdTNMZ0hnMHQzTFczeGx2SEV4cmxiRjAyaE54VGpxdTEwQTlQaDRoN0tyRmZ6cFliUFppdHJSMk5wTitSQUVRVllEc3RQcHpPNjJZSlBzdlA3RmFod0pxU3pvM3puTnlyUUphVXh6LzM5WjdtRW12TGVkNnkvb1NheEdXVFFGQ2hSMGpQcjYrcUoyVE5EVCt0bEV0elE4MlUzRmtFOVhyV2FyR01jclUvdDN1OVZWYUhRa1VZNTZUaW44NEFvVUtPZ0NTa3RMeStpQ2o2M1JIQlVCdWFxcUtxdnJsNUJKWDcrZXorcENlT2ZLRlBSaTE0NnByRGMzL1paMTdDUUYrbUQ2K0NnTHBrQ0JnczZSbVpsWjRTSE1wRTVNVVFSQkVMd0JyU1E1aXdHdlRxOWdMbWIwb2krbzFYbmhKYm9jZGRyUVhteGZPQUdBSjkvK2dQUmlHMVZtQi81Nkw1SUdEK1BER1FPNDc1WDMyT1B3d1Y4amtWY3JjZS9zcWN6ckUvS2JUOUJ2eWU2aFFJR0Nzd0tySUlqWDRtcGpVSStMMmFOT0VJUjY5MmMyUVJBY29pZzZWU3BSMW1nMHNpQUlndDR0MkxZQXllZHViQkpsMWZXWW5RTGhBYjU0L1U0SitZcGdVNkRnZnd1U0pHV29WT3BGdU5vWWVBbzJrNGRnYzdvRW0wcldhRFJ5WTQ2QkxFbFNwaWlLNTFDd2lZUUcrQ21ycEVDQmdtN0Jack5sMGRhMzF0ckhKbnVZb1lpQ0lNaUE3SEE0TXBVcFZLQkF3Zm1HdXJxNjNIWUVXcE9QclhVT1cxUHdBSkROWnZOaFpRb1ZLRkJ3dnVIVXFWTUZyUVNhazlPa2ZEUUt1Y2FZcG56OCtBbEZzQ2xRb09DOHc5cTE2MHJjZ3N2cElkVGFwSHMwbWFHaTRLbzhBT1RVMU5SeVNYS2VBSHIvcHFOKzU5SzJuMTF3TmFUTVUxWlVnWUkvT1dSWi91WFJSeDgxdHpaRDNYUkZucHFhaDNBVG00cmdaVUNTSkdtdktJcTkvOGdUNVZXVGk2b3dFNnE3MTVUVzc5UXBSTWNKVUNzc0d3b1UvRmF3MmV5SDJ6VkRaU1FFV1FKQlJwWkJsbVJCbGhHY0lEamtwdUFCZ0d5MzIvZDFmaWtuT3pNT3MyamxCdTVkdm9uMzkrVmlhNWF2Wk9YbDhlbTJ2Ynk2OFNDMXJXM2wvQnllK1hJajk2M1l6RWVaaFgrNlJTcmZ0NW14VDM3UjRyT1QyNzVsK3I5V3QvdjNQNjVad2VqWmQ1RTg2MUgyMW5oODRhaGwwWlAvWU5BVmQzUEo0cTkvMjV0d0ZIUHRUUTh5OUlxRlhQdkdEMTArN0lVbkgrRy9lNnU2ZGFsbC8zbU4wZGYrbmVnWnozQTIyVkMvVzduNi83TjM3bkZSMWZuL2Y1NHpGNFpoR0VZWVlFUkVSRkpEUkVNeUpEVXpjODNNekZ4enk4eTFzakl6MTNWYmExMXovZlUxdDIyN21HdG1kak16MTh6TVRNMVlORFBYeXN6SUM1a1JJUklpSWd6RE1NemxmSDUveklVWndHdnFWczc3OFRnUFpjN2w4em5uOHptdjg3NitQcHpSN0hNM3NLdW9sQk10S0wvbWpaZkpHVFdabm1QL1NjVjVlL0F1OXUwcnh0YU1uMi81aTA4ejUvMXZ6K2hLQmF0ZnArKzQ2YVJkK3dkMjI4NWhGeFViVTZiUDQ0RDkzSkVJSHJmYURyWmloZ2I3MlBDVFRVcEl5RkpUOEFCL1pOUnF0ZTQ2ZGVmcldMT3JuQzZwSGJnaG94MmJ0K1F6YTJ1SmIyY0RMMy80QmZzcmpyQm82NzRRWUR0V2RvRGZ2YnFOdUxiSkRMMDBHZG5sdnVpQXplMm9wL1JvYmNodnNSMHl1T3ZxTHEwY1hjZnNmNzdIelBsUHNudlYvNUVkMDdTbi9MT1BlTGs4Z1oycm4yWDl3emRlMkp0UVcxajJ5dCtaTnlxTEdydnI5RUg5YUNWV3UrZU1tcnIxbnNsc1d6Z0pkYTJWYy9HcTVHOTRqNElEeHppdzV4dXE3Y2VaLy9KYXFrNW5HdHBMR1g3L2k3UzZPSWk5bUJrdkZySnM2YlBzWHZaSExPZnR3ZGN5Y2RKY2lwb1I0MWlycTZtdWQ1M1JsUWFPdkoxdFMvOUNrcXZ1eEVTeFp5R0ZtOWF5cjAwV25mWG5qbzZtcVBqUUQ4MjB0V0FmbTVEODRPWURPRitxaDFBSDI2bWpSOSt5YS9QbUFodHc0bUluMmNUajQ2OE4vTm5HZnBUN2R2OEEvVk1CUGY4M1lRVFVsckQyNjA5RFRsdXhiUmZYRFJySXZibEpGeFdZT1k0ZjVzbVgxMUpjcjJWb3VpN2tDN3pzdGJjb3NpcFlMczBPT1dmbnR2K3c1c3R2S2F4MnMzcmxXMnhUUlRMeHpwdEppYlN6K01WMzJMWDNheHhWR3VZOHQ0ellqcGxNRzlielozR3ZibHNWaTFmbXMvdjdDaFNka2RFMzNjRGdqUGdtY0N2OWhvZm12SWxObjhDVTM0K2dhNXkzME1WKy9EQUwzdGpJbm5JYm1ibDltVHE4RjZkS2cxWWFqck5vMlh2cytQNFlzWW1KakJzOWd1eTIrcE8vMEFPdVl0bkt0Yno4U1NGYmxEVThOUDRtektmd0xHejVZQjM1WHhkanJUL01FODh0UTQvTXJXUEhrTkZHSnYvOXRXelo4eTFsamdhV3ZQUW1lbDBjMCs2K0R0TUpyOWJJMHRjM1VlT3E1cUE5Z2FHZG5LejgvQmpUNzcrZGpEZ051ei8vaEJVRmV5aXZiU0R0MGg1TUhYTTFKZzNzL3U5bVZ1MDhTSW05bmtXTGxtSFJTQXk5NFVieVVnMCtCYjZLSnhjc1pzOVJHRC8ydHd5NHBNMVBHRVE3eTk5WXc2WnZqbURwZUFsVGJ4dUt4UWRVWlVXN2VXTEZSeWh0a2htZUZZOGp0aFBEZTdRTFdIS0wvbDNBclZPZkRySHVWaXgvQjJOcWU5Wi84Q202eEk1TS8vMzFXSHgxbURVbCsxbTIzMG1POWtlV0ZCU1IwT2t5Wms2NENqMHUxcTlleDZvdmZyQzlzV0hya1daYW1nZFFoTmNjOVZPREMwbENLSXFDcmNHRHJkR0Y3SE82Q1VENTZLT1BGQ0hFampONUR2c3JxK2ljZEtyU0tCZDdTMnVKRWNlNWMvRmIzUHJ5Qmo3NG9lWmk4QkF3ZmRwc0R1cTdNR2xZTnN2ZXlRL2FweUk3cHlkZHRVZFpsQithUXBqY0laMGh1ZDB3U1JIazVXWXpKSzg3UmcyQWh0NjlMeU92Y3lJR2N5SkRyc3ltLzZWdFQ5b0Q2NkVEekZuNEpyT2JiWnVLenYzaVpNN3FDcXExQ1l5L1pUaGorN1ZuNm9OL1lYdFZrNWEyNUowdERCbzJoTnlvSHhueWh4ZXhBelFjWmRTRVI2bU02Y3lVVzYraFpOUHJUUC8zMTZkc2E4bjhwMWgvSkpwcGQ5ekkwTzRKVkIxdk9PVTV4UWYycytPSE9wTGo0MG5RT2RqMHlkNFdwbDF6U2V0OEtVTjZYNEpPWTZUL2xka011YkluQ1Rydmk1bmU5VktHNUtTajB4a1llR1UyZ3kvdmNnb2E2a2FXdnZJbWNxZmVsSCs4bk1WN3RlUkdWZkRFdTE4QmNMQ2tncHdyODVnMmRnZ2NLR0RNczVzQVNFcnB4SkFyTTRqVmFPamRPNXNoVjE1R1Nwc202Ris5N2orazllckxzSTZDMFg5NWlaL0NMZkhxTS85Z2ZtRTlFMjhkUnV5UFh6RDRyeXU4NmxGdE1VTW56U2NsOXlwRzl6SXliZlo4Vm44WlpORGJmbURUZ1NqNmRvc09BYlpWYjc3QmpOYy9aL1NvNjRpdDNNbkl1VTJ1azVvZmlwajk1SFBNLzI4Tkk2Ky9pbFNkQ3dkUXNId0pVOTc5anR0K2U5MFhUcGRiYWNVRTladWhpaUtFa1BEcWJZMXVCWTFHVFl4ZUc0aUtCc0RON1hidjBHZzBnMDduSVpSK3Y1Zm45M3A0Y2ZLbHAvb01ZSE81V2IvdkNNK1BHWWF0L0JzbXZMYVJqZytONGRkTURxNVU3R1hGOTNIc2VXa2dGaGxtM3Q2ZlVSLzRIN2RNUnJjTTVNTzc0ZnZROHl6dE8yQnByOE9naVNDblZ3YVpBYTFDUTg4ZUdhakxkMk1vajZSdmRzYXBMVWVObGdSelN4M0NvRG4zTlczNmxFeW1ENi9oczIrK3d5Wk1aQ1E0K0d4Zk5Ybjl2VnJibU50K3krRHNTNkRuSGJ6ODFuMXNPVHlKMUQwRjdFdnN3NnJSVnlBRGMrNGNTc2JUVzVsL1MvZVR0bFY5M0lxK2JReHBxUjNvMlNYdHRQb25HeXpNZStRK1hwNzdERU5tM0FkRjN5T2Z3bXBLNmRpSmxEZzNXbTAwdWRrWklhWm1hcWRMU0kycFJ4Y1JUVjUyeGtrMHRlRHZXUnlEK2wySzgwTXpTcS9MR09DcFo5VVgzby9NcU4vZVJQRzNCeW42c1piTXJxbk1YMWNFRENhaFhRb0o3ZlFZTlZxeXN6UElhYWFZRGh4MkhTUDdaTURsMGN4ZU9JOFNKMlNjVmVWZkRVdlg3MmZtcTQrUWw2SWhyOU00bHZTZnkyNzdyY2dmZjRJemF4RFRoM2l0Z3dsWGYwaGg4RWZ0eHpMS1l4SklhVVVEdnZmTzIrbmZQWWIrS1dOWStKdEZGRDk2RTJtKzQreUdOQmJQSE9NMUVmTUFGSmEvL3pGVEpqL0haUjIxZTFveFF6MkFSNUs4NENZRUlDSDhhN3FvMVNvaUl5SlErM0kvaFBjZ0llcnE2ajZMalkwOTVTTTQ5bU1KOTd6MUZYUHVHRUhucUZQWjFHcjBhaGpXK3pKU2paRmd6S0pQMUhZK0s3Zi9xb0hOV1ZPTHJVMGNadC9qc2NUR0F4ZDJVVEE1UW9mRjNOSTBNZXBQSGQxZHR1QkpacTdkRDhnODhkeDhSbmVKUFBtSGJsYytnMmEreTVCQnVTUkVxYW15ZTNDNG0vdy95V2JmdkpLTldHSmNWTlkwSWxkV1lqMzREU01mUEJRNHJuZkhTMUhncEhSWTk5NS9QNDhzV0VIMnNOZlJKWFprL3YrYnlzQ09KeS9aUyt2VUFZQWhOMTlQRW1EczJ2SENUd3BaalZvR1dhVkMxa2hvWlJYMlJnRTBNSFBLSTJ3UnFRenFab0hqVlRoY3B4ZUJOeHQ5OTYxV29WYTVVY1JaK3hLb3JEVmdNZnRJRWlOTkpFVFpLRDhPNnRvYUxPWW1XditFMkpqUWp6aWd5RklyRjlXUWxPQTdOaWFXQk1sS3BSM1NmRjFPN3BqY3pPL1ZTRVZWSTBNc0pnNlVmRnZjR3FnRis5ZUVkME9TWmJRbzFEYzRzTmtkaFBqWUFHWFNwUHQzckZqeFppMFFjNkw3cnp0Mm1EdVhiV1B5bUJ1NXlxSS9qU2Vtb1dPaUFaZmJIWGdNTG8rRVJ2NTFMMDJualRWaFBINk1LZ1VzTWxSVUhiM3dQcjdxbzZ6LzZQTVd6dmNocGxReTIwYWY5Tnl4azZjemR2SUo3azJqeHVFS0RRYXNlbWNESXlkT1pkNklUb0NMNGkzdmhPd3ZxNm9DektCWXFhalZrUlFiUVhKQ0FnbFpiZGo0MU5nVGFEZ3FaTGVuUlVUUzFMNHpDLzgrQy9Dd2JQNC9tUG5hRnJiUEhuNWF6NlJydHpQTWFKSWxaTVZ6eGdFTW03V1dLcnNnMVhJYXV0eVBlMW40VFJ5bEh6eUlBU2paK2paUGZGRVNkSUFFMHBtdjd1YTAyeWcvM2toeXV6aWFrYytqVlNrNGdvZFFiU0FoeGtaRmxRdFNOR0N2b2JMZVFGSWIwSm5qS2QzV0ZQTXRxemdLUWQ4UlhXSThDY2NyS1ZjZ1RRNTFRNVVmcVlFVUU5UldVeW1NbUlNZ1EyNEJoaEZZekJHVVY5VFVQdnI0TTJVbkFMV1FraXJaVjNFUXFkUFNScXNSR2hWZWpTMUl4TXFWSzkzTGw3L3hzU3pMdzFwM2w5VXgrYVgzMFNWM29mcnc5N3grR0ZTUkptN3Q2YVg1L3VTclBSUWZxNkxSMDhBN254U1NudGlXNjlManViSFhwVXdvK0M4OWpUblVIejdJNTRxRnY3YUwrRlVEbTV5UXdhM3B4NWp4d21ZbVgySGlzVGMraG9TK1hzQ3BQY3EyZlljcFBmQWo5cU5xOHYrN0cxTkNNam1kemkyVms2bFRkeGIvcmZzNXY3ZXM3dDBvZXVrZEZtZnBTVTF1eitBZUhVaHBsOENLclZ2WTJWVmkzOGNmc1A0SEpVUWpYL25HMnd4T0dVM2xwKzlUMnFFZmZkdks2RTBEU1Z2MENOTmVhOGV0VjZSUVdWTE1IbnNiSGhxWjR6MHBxaDBEMmg5anp2TWJHTnpKek1DQmx4T3JobFgvWGdYdHV0TFpyR2JuOTVXa1oxNXovZ1pTbjBoWGRSa0xWbnhFWHRzb2NpN1A0WFMrNXh2ZlhNeVlkUjVzNzgwNDlSSndNZkVrT2I1ajJVZDd5TkU3ZU9LbER3bk5sVGVSMGQ3RG9xVWJxZXhtSmlNcmk3UTJwN1kzQ3plOXplVnpkL0h0Wjg4U3VveFNEUDE3UlBIVW9yY3A3MlVoTDY4UHlRWVQ0NFpleW1QUExpWDJ6djVzVy9VbXV2NVgwMU1QY3I5K0pEODlrK212cFpBVFdjV3JueDRoTjNod2pla003bGpMOXFJRzBqSkNOZnRGTHk4ak0vSTNiRisxa3VSckI1QitVa1ZVNXRiciszSFA4eTk5ZXZENzhtQXoxQjBDYnNLL01xV3ZSbFFvMURzRWtpU2p1RDJvMUdxMUpJUkFDQ0g1dEgvNTRZY2ZUbENyMWEzNzJSUVh4NTBxRXFNME9GeHVIQzQzamJLVzNzbGVNK09iSDBvNTFLZ21KelVlM0c3VWtkRmtKa1JqVGt5aW03NlJEVi8vd0k5S0pBK1A2RWNuZ3hwMnZkbXlqYmJkSWFuN2VabWpqZFhsS0hWSDBldjFaM1JlYlcwdDBkSFJ5UEtaaExKVkRPaVh3NEdkTy9qUC9xUGNjY3N3T3FVa2tkdTVMYmFLVWxaK3ZJZGFLWm9lU1ZHVVZsUmgxNXJJN2hnTWJGcDZaWGNtcWhVTlB5b3VnWnlPOGY4ejBOYVpVeGpjMWNnWFJUOVFyNG1oZDNvaUdkMnpFT1VIZVB1alFxSXU3Y3U5MTNTa1UzcG5VdHA0UDJEWFgzVTUvOG5mekE5U0lnditmQ3VKa1NyUVJISHpiM0w0OXNzdldmZkpWMVE2dFF6c2N4a2Q0dlFCTjhZMUEzTDQ4YnRpU3FvYTZOR2pDOUZxc05kVXNPbVRYZVIvZm9DVTdFSE12aldYaVBPMTZJMms0emY5dTFGOHNKamk4bU9rWFpwQmZHVFFvR2dNOU9tUlNtdnZhM3hTQ2xkMVR3a3lxMVgwNkpGT0pKRGNzUlBKTVZwMEpqT1hYWkxHNE95MnJGdS9sYy9MR25oZ3drMjBpemZUcjF2N3dBdC9WYjllVkpWOHo3ZUhqNUtZa2s1N2s5WVhYT2hJZWtKVVlNN2taSGNoMkRzVWJiWXdvTmNsTkhjazlMM3lDdW9yU3ZqdXgrT2tkZTFHZ2w2aVorL2U2S3UvWitYbUw5RWtaN0xnd1p1STFraWdNWExUb0N3T2ZGMUVqYjQ5L1JJYU9HcnF5ZzNkTFlIN1NoQlZMTmhWejIxOU9nYUNCeXZmZkk4YnhvNWllLzRXR2kwWkxIamdCcUkwVGM5T1p6TFRPejAwU2Faajk1N0VXZys5ODg3MnZZY0FKOUFJT0h6L09nR1hIK0JVc3F5b0pBbTFTa1pSQkU2M0I2Y2lJZWwwT3RudGRrdENDRmtJb1JKQ2FFdEt2dStla3BLeTdZSzhJUmU0cEtyMjI4OXhsKzhqTHU3TUtnOUtTMHRKU2twQ0hhNDhDTXRGS2tYZmZFZHFwMDZvbmNlNTlmZC9aT2pNcHhuZlBjaGo1YXBoMUwxUE1lZloyV1FZWk1ESnFCdkdNWGJSQ2thY0dmMGg3K1J2djIva0grYjlTQ2dIbTAyQ2VpUWFKU1NuSk9HUkpFbFJ5N0xRcW1VUm9kVVFFYUVSL3VDQmtDUUo0WTB2Q0VCSlRlMVlwQ2llUFVCbWVEakRFcGF3QUd6OWNBM2pacGVoU0pFTUhUV0pjZDJidWVFMUpsYTlOQ2ZFTDVqZXRST3haN2hna3lMRXZwRi9tSGVzbVJucXBtVzZoNUI4T1d6K0lLaEtrbEhKRW1wWmxnbnlzd1hBemUxMkY2alY2bDhkc0xralluREhwa0ZDNHBtWnNMVVNJajRWTk9GbHRjSnljY3JFT1M4dzhRelBtZmZhVzJmY1RyMnQvdE1UK05ZOFNKSVgxQ1FFa29Ra3k5NElzMXFMU3FORjFrWWdSK2dDNlI1SWt1UlQycnlJYUxWYXQ4VEd4azc1dFEyT1IyZkNKVWRCd3BucHhvMlZMa1Q4SlJDbUJnOUxXTTZyZkZPNmN4K2hhUjV1d0NOSlVwREdKaUZKc3BCa0ZaSktnNnpSSW10MXlGb2RxZ2g5azhiV0xKOU5NWnZqdHltSzV6RFE3cnplUmZidld2N1d0bnQ0ZE1NU2xvdFFoQkRsbDEvZXU3U1pDZXJmZkpSRlVnaHJyaXpMZ1UybFVxRlN5VjVnazJWWmVEeWVZRk5VQUI2UHgvT0JTcVdhY0Y3dkpNeTdGcGF3aE1VbkRRME5XMXZUMW9LMkVCNDJXWmFGSDhPOHdPWUZON2sxamMyUGpIVjF0dndUZGFER2F1V0hZN1lUc3dONFF0T2ZGVVhCN1FuZGZ2V2lWTE5pOFNJV0xWckUrdTFGdjdyYnF5a3ZZdldLNVN4ZmR5RUM2RTRLVnErbTBuRVJ2TjJPS3RibmYzYkMzZnUyYjZTd05MVFdldmVXTlJSVnRGNGxXbG04azVYTGw3Tm15KzVtODlQSlp3VnJXYjVzR1h0S203aDRQaXRZVDVYemYzUHJCdzkrOTFVelVITUQ3bEF6bEJZYVd4T2dxVkNwMUY1ZzgyOFE0RFlTZ0JJYkc1c1BIQTU5R0RZZWVQcFZybCswamo4c2U0ZStUNjNpdjVYK0F1UkcvcjdzYmZMKzlnTHBjMVpTRmpqSnhVUC9lbzIrODN6YjR5OXo2Y3dsZkZRamZ1VXpWTVpnTUZDNjR5MFdydDd4aSt1OXUyUUxvNmM4MWZwTzZ4NEc1VjNQOXFKU0tpcHJPUCtmS1R0UFRIdVF3b3VBTzJIZE0zOWkvYjRURTZXdFgvd3dxN2VYaGZ5MjhkVy9zKzJBdFNWR2xtd2lkK0NkN0NrdG83STY5T0d0bmZkNzduM2liY3JLSzdEYW0ybzdiSHZXTUgzK3h2K0pHZHFqUjQvdmZlRFYzQXh0S3FYeUZZWUdZNWNYMEpvMnRVK0ZrNXJTUGlRaFNTaENDQVZRUEI3UEJwVktkVmZUdTZyaG5sRWp5R3p2TFJOWnZmNDk1dVIvellaYmV3TXFCdWZsY3RlZ0JnWTkvMFZRbHpVOCtjRHZBMytWRjMzSnlNM0g2V09TZnVXNFptTFlyV1BSVlg5Q1lja0p0SjdLTW1yY09sS2JNNlFvVHNwS3k1QU5acExNb1RXUURsczE1WlZXekVuSkdIWG5LYTlPVVhEVWxMRnArMWU0M1c2UVpkVCs1R1JGd1ZxMGsxTExRT2JObk82ZFdLZDFUVUFHZTAwVmxUWklUVzY2WjZlOWhySUtLMG1wS2VpQ0wrWjJVRkpXaVNYbERKZHVWSnlVbFphamo3VVFhOVNGZEtLeXJCUzMza3hTck9IMEFONWhwY29HbGxndFplVTFKQ1ZibXU3WE4wNDZjeEptUTJnNzFSWGxXSjFxVWxJc0ljOUhBUlM3bGJJcUc4a3BTYUdKdmM1UzVpM1p5Y0xkcjdSNGVCV2xwZWpNTFdtL0ZMZWI2VXMrUWEyV1cxaEp4VHQyWU9oN0M3T21UME9XMVNIbmJOKytnM0ZUTmpONWNHaCs1c0R4azVpYS9RQ2xVNGFRY2dGalpYYTdmY3NKZkd1ZUlQK2FBZ0VmVzhBTTlXdHNhclVLdFZxTjJtZVBFbXlTK3NLakN1Q3BxYW5aRUJjWDF3UnNSSkRadnFrVUtpVTJCc2NSZjZHem1zdlMya0Z0eVVsdjRLMmRleG1XZlRVWGRYeFJzVEYzL0EyOFd1Z21SVjlEbGJFdkc5YzhqMFVIOXJJZERCNTBHN3IwbnNqV01tTDczOCtLeDhZQnNPWFZ2M0RYM1BWa1phWlFldUFBTTVaL3pxZ3N3em52M2hPVGg3Tis1dy9ZRGxReGFNaDFxT1ZFRnE1ZFJtY2RQRFp4Q0p0Mkg2Ym1ZQTFEaGx5SG5Ib1ZHNWZNUENXNGplL2RCbjMvQ1d6TjM0SmVkakJneWdzOE1TR1B0Zk1mWk9xQ3JXUjBObE5VMnNpcmE5YlROODJJclhRN2d3YjlEbDE2Rmc2SGk1b2dqcUV4bVpHTVd0WEFxSzVRczJNSlhhZCtTc1dPRndFNHNHMHBvOGMvU216bkxKeFZKUXlhOWlLengvVEdYcjZMMFNOdW84cVlCbFVIU0IzeEtNdG5qejFwdjhmbnRxWEVuRXZwcnMvb210c0hhL0ZYOUp6NEFnc21EYVJ5M3laR2pya2ZiWElHTlFmM01YRDY4enc1Y1JCUXdjaXNmbFFtZENhV0dnNVVtMWk1L20yeUxEbzJQbk0zajZ3OVFpeU4yS3VLY0diY3lmWVZzd0x2UWtuQktpbzYvNGFRSVhWV01XbkVOV3lyU2NDRUE3ZXRtc0ZEZklwejRUcEdUbnVXb2wzYm1MNzhXNllPU2ZhZFZNV1VrYjlqNThFREZGZktEQm15R1V2dUxTeDc3QzVLdHk1andwelhLTnBWanFIOE50WTlwV1BjckpjWTE5OWJGb214SjRNN2w3T3FvSVJwUTFJdjJDdXhiOS8rTDA5aWhnWnBiS0ZCZ3lZVDFHdUdxdFZxU0U1dWg5bHNscUtqbzZXSWlBaFpyVmFyWkZuV1NKSVVLVW1TVVpLa0JDR1VmVUlvb3NYbXJCUDNQZk9TV0xqM2FPanZOY1dpNTZ3M3hhRld6bkhWSFJKNXM1ZUsvUTJ0WE84Q2JFZU9WSWhEaHc2ZDhYbGZmLzIxYUd4MG5GV2JIejUzajdqK2p5K0gvUGJEQjArS3hGNjNpRnFQSW9Sd2lEOWZmNmw0OElXdFFnaEYvT2U1ZThYVjl5ME1IQnZjN3UyWHhZaFhQcmY2L25hS3hrYjNTZHYrOGFQRm9tMWlva2hzdGozNnhtZW43SGZEMTh0RlRLODdXdDEzL1BPWFJlS1Y5NXpSYzdpalY1UzQ1cjVuaE10Ly9RYTdxUDFxbFVqc2VKWDR2dFo3SDErOE1VUDB1bjJ1RUVJUno5N2RSL3p1OFRYZTlyNWFJV0trUlBIaGo5NXpiK2tXSWQ3YTcrdkxmeGVMeEN2dTlMYmpLaE5YdDQ4WHIzeFM1bXZYTFk0ZHJ4RkNLT0xSbTd1TCs1N045eDFYSlc3czFrNjgrNjM5NUgyK0lsRzh0ZDhwWHZ2ejllTDJmNndSeHo1WklycjlkbzRRd2laK2Yzazc4ZmYzOXdnaEZPR3AzU042dGI5VWZGSHJIYy9hMnFicnZ2Ym42OFR0dnZ2WThQU2RvbDIvZTBXOVVJUm9PQ2g2dFdrblBqN2ExTjViZjd0RjNQancwcEErZlBIR0k2TGp0ZE5FbzFDRWFDZ1ZWN1hUaUVmZkxBdzU1cy9YZHhCUGJ5aHRPVy9mbkNWNjNQRkVxL2YyeCtzN2lPYytMRzkxMytzUDN5aHUrZHZLQy9aZUtvcW5DQmdOREFjR0FibEFOeUJWa3FRRUh4WkZ5cktzVWF2VnFvaUlDRGs2T2xveW04MVNjbkk3MHRQVHljcktvaytmUGx4NzdiV29aVm5sanloSXNpd0xSVkVrWHhEQmI0NTZuRTduZTFxdE5wUjBUWEh4cjdjMzRFNi9nbnN5VHI4OGFkdk8vY1JmMnBXdU9pNXEyYlhyUzNyMnZRYWpES0Jsd09BOEh0dTVHeWIySmJOM2Z3N00vVFBqNVJMNjV2Vmw1TWloK0lta0JnenN5NXk3YnVUQXlPdm9PMmdvUS9OT3pzbG02WDhYNVJWMy9XeDhqbVBHamcyWVhqcWRqaDNiQ2xEMHNHanVYN3pUcXFxSVBidDBLTUN1blhzWU9NRkxHbURLR2tCUDg2a05YdmVCYlh3bTkyWnRYbEtnelZpVEVhaGt5OVlEeEpvL1lNYU1ENzA2amR0QjRlNFNocWQzUGNrVjlSZ01hakFhTUJsaU1SanRPT3cyc081ankyNDdjc0hyek5qcU5SV2Q3bEwySExTUm5hMWp4Nm9uV2JqaVF5cXREbW9xaWtrZGRYUGdpajF6ZTZNSDBDV1JtbEJEVlEzZ3M4cXJxNnN3SllleWdSVHUvcEs4QVhkNnRUcGRNZ1B6MHMrN1Q5TVlhNktxN01JNU5HdHFhcmJRc3RJZ3hCU1ZKRWtKckJzYUVnME44cTJwMVdnMEdxOHAyc3djRlZKVHRxNENlTXJMeTllbnBxWStGQlR5Wk1WN0cvaFk3c2dyMTJWdzJyWEhTaU1yc1NPZ3BBQUFJQUJKUkVGVWR4WXpjc1JGbHVKeGhzWFpDYjNIc0c5M0xnWDVCYXhlK2plZVhMR2RmV3ZuSWdNVG5ueVgvcnUyVWJCbEN6Tkc5V1Azd285NFpNU0pDMFFxZDZ4ZzhMMS9iL0g3dU5tdk1XMUUxb1VQcGhoYmtnOVkwbm94WW9SLzdZWWJHVFU1OXBTUHpPdlY4enJ0RkVWcGV0RlBlcUtlQVVOdm9uZUM5NjhSSTI0a0pUM2w5QVpQOWpGRWVPRVRVRkMwWmdhUHZKRVUyWCs5bTBucnJLZDh5MEltTFBpQy9JM3YwVFhCd1BvbjcyUitSUk1VcWVVVCswV05KaE5XcTdXVlBzZ1hkS1JzVmlzbWsrR0N0YmQxNjhkZk5RTTExMG5NVUJHYXR4YmtXL01CbSt4UGFHc0N0d0JWZUNBNm1wYldhWitpS0p0OHNRdmUvL0JEL2wxbjVzV2JleEY1QnMvNzZBL2Y4SW1uTGNQVERCY1ZybGxpMjFKY1hCTHlsYzNPdm96ZDIvNkRWUUZ3c21YamRuSnllZ1ltbFNFaGxSRzNUbUR4TXc5VHNXOC9EcDhEMldxMWs1N2RuNG5UWnZIUStMN3MyWGZncEcyYnM0ZXpmdDE3ckd1MjNUVzQ2eW43cmRYcFVLcXJmSDA4ZlZuMnhCVG1MczAvcldPeit3Nms2c0JYSkdYMkpqYzNsOXpjWE5KOFFZWHMzSjRVYlBHbWt0UVVibUZYVlZOSFlzMUdTa3U4a2NFZDIzWUVucTA2dlMrOWxjOVlHWWdhS3RUVVdJRUVCdlJQNW1DRk05Qk9ka2JuVm9IMjlGU2FUQVptMkNtMXhnYXVsNW1laHRFZ1UxRmFTa0xYWG5STk1JQmlZKzI2Z3RPK2JFNTJML2J0Q2FXS3o4NitqTzFidG5sWGczT1VrYi85NFBuM2QrM1pRMDUyemdWNVA5eHU5K1lSSTBZY0N3STJGeTBUYzROeTE2U1FaTnhnMzVwR28wYXIxYUpXcTlWK1VQTkZSMlVoU1FyTnpWRzd2V0d0d1JBMW1JWWpQRjd3SFZaZEJBUG43dmUrQVBGcGZITHYxUURNWHZ3cTcxYzRxWE82dVhIT1MyVDJ1SnpYYnZScUJtOS92cDkrdlhwaGtpOHFYQ056K0FUeVhyNkp0SzV2a1RYMFB0WStOWm1VUVJPWnN2eDljbkt1SWtWbnBjclluNDNqdkdiWFp5dG1NL0daajhuc21rSng0VzRtUGZLUzEzVEJ6VVBEZTdCTFNTZko2S1N3eE0zeTlZTlBybTlvOVNRbG45M0xLNmNQWkdydlo4bkp1Z3lqSVpWbEJlL1E5VFF1dFdQVFcreE83OHdqNDA3Tk1HL01Hc0hpU1I4eHNHZDN1bWFtVTFWeWtLNmovc2FyTTBkeDF5Ti9aK1hnM3pGZzY0czQzWUxrSUZOMDNNUzdHVHErSDV1eU9tTXhSeURqVy90Qm5jU2k1ZjlnekxpcldOWTFFNldxakVGVG4yZm1tTjQ4TlA4VnhvNjhuWnpseVZpMERnNldDWlp0M1VyT1dWSGc2Wm4zNmt1TUhuTURhNS9xaXM1WlNhbXRIZms3VjVFMWREem1KNjRuYi9DbjZPeFZXQkxTVHZ1cTZZTkdZcGgyR3djZGorRmYreWRyMUJTR0xiMkduTHhyaVpWZEtPWW1tcCtYWjkvQnkvbkZGTytyUUZkeUU2c2Uwek5qNFhzTXl6S2UvWVMxSDJEakxpUExsNlZma1BmajBLR3lUMW94UVYwbk1FT0ZKTWxCMGRBbVRjMnZyV20xV3FSdTNiclIwTkJBUTBNRGpZME9xYkhSaWN2bGtoUkZrUlZGa1lVUWFrRDdmLy8zbVBIaGh4L2VCclQvSllOTVpXVWxUcWVMNU9RenF4VGJzMmN2blR0Zmd2WWMxNHJXVkpWamRXdEpzWVMrWFU2N2xmTEtha3dKU1pqMDJoYm5WTnRsVXBJdHFIOGxId20zdzBaNVJSV3hsaVFNT20zd0Rzcktxa2hJU1ViYjdGNXRWZVhZTUdJeHQySUJLRTdLUzh2Um1TM0VHa0lkdXRVVnBUalFZN0dZejRHQnAxQlJWZ3E2V0N6QmFUbUtrOUtTY295V1pFejZNMHZKV1Q3ckpuYW5QY3dUNDN1SHRGTlpYb2JPbEhSYXRPNC9SYll2bWNhVHBUbXNublArWFVaQ2lMS2JiaHI1NTNmZmZkZE9FMFdSRGJCSmttVEh5OFBtbENUSkxjdXlJc3V5b3RGb1JFU0Vsb2dJbllpTWpDUXlNcEtvcUNnTUJnTkdvNUhZMkRaSVBYcjB3RzYzMDlEUWdNUGhrQm9iRzNHNVhGSXpqallOb0d0c2REeWkwV2ltaG9FdExHRTVmNkpZaTFtNnFZVHhvd2IrVDlvdldQVXE2VVBHa1dJNC8xOU5xOVg2VWt5TTZRT2dnVkR1dFhwSmtob0FoeVJKTGttU3ZOeHJhclh3QWxzRU9wMFgyUFI2UFZGUlVVUkhSeE1URTBOY1hKelhGUFdib3lxVlNxaFVLc25qOFFoWmx2QjRSSENKbGZ2UW9VTnIwdExTcG9hblhsaCtQVkxEOG9YTHFHN0ZqMmpKN011b0FSZCt6VmJabU1iNFVXbi9zeWN5Y05UNEM5Ylc1czFiZGpYenJaM1F2eWJMa3ZDYm56NnNDakpCMVdpMUdpSWlJb2lNMVBtQlRVV1FyODBYSFpYeHhrWUQwVkVsUGYyUy9XNjNhN1VzeXlQREwwUllmaDFpNHRaSms4T1A0WDhnalkyTjYwYU1HRkZGcUYvTkJiZ2tTUXF3ZVJDb0RRMWw4UWpHTHI5dlRhZUxJREpTajZ6UmFBSUhCS2QrQkJmRyt3SUpIcnlWQ0crSGh5UXNZUW5MVDVXaW9xSlBXdEhXZ29NR250WW9pcHFuZUdnMEdqUWFMVnB0QkRxZERyMCtBR3lhUUxqVXIrS3BWTEpvenZZQmVNem0rQUloeENmaFlRbExXTUp5dHVMeGVIYjA3SG5aOXlmUjFscXdlYWhVVFdhb0Y2dlVxTldhRnRxYXdSQ0ZXcXZWb05GNGJWU1h5NHVBYnJjYmIwV0NncUlvQVhBVFFuZ0FkMzE5L2IvZGluSmxyVXVtWFJ0RDY1RTVqd0JWc3lKM2o0dnk0ellpb2d6RVJZWXB0bi9Pc3J0Z05Uc09WSUl1aVhIamg2TVBQNUt3bkVNNWRLanNQeWZSMXZ5TXVVcG9zYnNxeEFUMTQ1YmZ0NmJUZVFNSjBkSFJxTFZhTFJxTkZyWGEyVW9Rd2QxaW9SZkFrOUlsOCsxTEg1dzdNVEhDazFudWl1VHBjZGZUSnlFU0wyM1JPdDc5cm9wS3hjU1d2OTJDdnlUM3lLRnZHYjlzRzNHV2VJNVhIcVZ6cnp6K09hZ0xjbmlNVzVYeUhUQm5DeXlhOGI5cFg2dlRZNUFybWZyUUc0d0lBMXRZenFFb2lyS3ZYNysrZTFyWDFwcVcxc08vWUlza0NWbVdXZ2thK0UxUXY3WVdpY0VRaGRFWWd4d1JFWUZYYS9PYXBFM2dKdnUwTmptUXJPc0h0dVBsaDl6NUQ5ejA1dW9IYitlaGpBam01SC90NjdLWHR1aTllNjZoK1JyamIyejlsTzU1VjdQczk4TjRkOUsxZkxwNU8xODFYQ1FENmZ2WFdnVmxGYUg3N0RWUVhFcklTdWVLQXJaeTJMb0wzRzdPYVBWdkJlOVVLU2tHdXpPMEE3YnFsdTJmU0RMeWhqQjI5RkJPRlBGM082d1VGNWRnZDdic1hFMWxHU1dsNWJUWXBUZ3BLeW1tdk1vYWZyc3ZZcW1zck54WVZuWTRHTlNjQk5ZTERTbWhVa0sxdGVDZ2dkOEViZExXb3FLODJscWJOaWJraUFnZFdtMkV6d0hYbE1HclVxbUZ2eUloS0lqZ2F3ejM4dVhMVndMZnBjVEc0R2dNcFMyS2kyeVpRR2pRYWxINWw3T1hBTFVXZytyaUdNaitGcGoyRU9RTmd1R0RZSUd2T0czeERPalpINlpNZ0t6ZVVGVHQvZjJoTVRCdU5wUnNnU0ZEWVBBWThPMGkxd3k3ZlJ5RWUxWkF6N0ZON2VRdmdBRmpZSEF1akJrTDJTTzh2ODhZQ1VOR3dzZ3hNQ2diSmkvOGlXYnEybWZvM0xrWFU2YmNROWZPUFZpNW85UzN4OG1URTYraDc5QTdtRHI1OS9UTUhvNS9qNzFzQjMwekxtWDg1RDh4ZnVTMWpKbTVOUHlHWDRRaWhDaWVOZXZSTDA5aGhyWW9lUGVWVFluZzlBNHZzRVVRRWFIekpla2FpSW1KSVRZMkZuVmtwSTZHQnE4NjUzUnFmTDQyZGZNSWFiQko2Z0U4ZDk4OTBYcmI2Qkd2di96cGQ3TkhYenY4bERkMHgzWFg4TURybXhoZnZKZnFZelhjT2ZwYUxybFljbDNkRXRXeGdqMCtabWFIQTRyWHcyTmJvWEFYbU5Td2RpNDg5QlNzZlF5ZVhBa0gxOENJRlpDLzRzeWEycmtOZHU2R0RMTzNuY0NISlJOV3pZR2FIWkE2RVo2WkJHZVZ2NjVVTW0zUy8rT3h0ZDl3YTdhWmZhdG1NMkRhWTR6WXZoaHR6VzRXckxLeXBlcHpVbVZRbk02QXRycGp6VkswQS85RS9zSjd2UkRvZEliZjhvdFFqaDQ5K3Q2TEw3N1kySnEySmttUzN3ejEwRVQvTFVJam9jR2dwaVVpUWt0a3BDNmdyWmxNSnN6bWVPVElTRDA2blk0bVg1dUdaa203d2VrZklha2ZrMmIrMzcvZDZWY1VudzV0MFpiUHZxQlNaK0dlcTdLNTUvSjJ2Skcva3dBLzVhOWRaTUd0UVpxVlRnZmJ0b0FlbURjVFpzeUFqYnRoVCtGUGI2cm5VQytvK2R2eFM1NnZPc2VVQXJwcWIzcjMyVG4vQ2ltMFp6QWcyOXRJeHNCQnFBcy9wMVFCak9uMFQ2OWt6TERibWZ2TUluYVgxUVRBTTdOM2Z3NnNlWnp4azJld1pQazZiSW82L0paZmZOcmE5MDg4OGNRWHpVQXRXR05ya2VMUkhOUmErdFowdmtpb0lWQjFZTEVrSWtkRjZkSHBJdkg2MnJUNG82U2hxUjhxRVFScUN0NElxZnVWK2M4Yy8vdUFqa3RQSFFCb1pPV24zM0xidFZmU0o5WEM5ZjM2MHMxVndxYVMrb3NFMk1Cb2FPa0xTK2tKSTBaNHQzSFRZTlVUWithelU5d3Q5eGxQVVBzY1lNbzVuOUVhT1phbDIvY3lmL290eUJXN0dOejdjcmFXZVRVekx4WFRSNHpJNjh6V3BYOGpiL1JNbFBDN2ZyRnBhMnYvK2MrbkhNMU1VTCsyMXVvU2U4RVlGRnhoNE5YV1d2cld6R1l6YXJVYTJXQXdvTmRIaG1odFRVbTc2dGE0Mm56Z0pua2tTWEt2V2JuaVRTSEUvcFBma2dwRGhJb2ZxbXE5TDZTamxrUDFFZ2JkeGZ2VjdqOEFEaFJDMXh6SXpmVnVLVUYxOEhvaldDdERnd29BQ1VZbzlUSHliUHZzUEhmU1lNYnNMcWVrT3FnWFNabGs2ZmV4WlZjVkFQc0s4bkZuWGU3bEpIUGFzTHIxOUI0NGpCbnpGaklpM1VGUmlWYzNQREVWVTFndUVtM3RtOW16Wis5c0JkU2NRZjYxVmxJOFpFSkxwMEsxTmIwK3NwbTI1bVUrVVVkSEc2bXJxNk8rM283RDBVQmpZeU5PcHhhTnhvWEw1VUt0Vmd1MzJ5MTVQQjZoZU1OelFnZ1VFSW9RZUNaTXVMUDJoVHJMYXp1bVhEY1BUa3hiTlBuNks3bDcxWHQ4c1RPZW1xb3Frckw2TURSbzdZU0xUZEtHd3N5dGtKTUZtZW5lS09iUWgyRHVPQjkrNUhyNWtiT3l3SkFFR3pkQ0xEQmhJdHcxQ0JaMkJiTUJPSi9VZHVwVVpzOGF5cTA5dTZBM3BiRmkrNGRrR2l3OHRlQ3ZqQnJaaCtXWmFlelpWODZDNWU5NzJWMXJDdW1mZXp2bWpDemttaEpxRXNZd0w5ZkwvWHRpS3Fhd1hBenk0NDgvcm4zKytVV244cTJGSk9RRzBSS0pscUFXRVdEMWlJNDIwcVpORytMajQ5SDUvQy9TYTYrOVNtbHBLUlVWUnpoMnJJcWFtbHJxNnF6WWJQV255L3FodmU2NklmcDE2OWF0a2lTcDkwbnZ6dU9pdkxhZWlNaW8vMW1DN3MrTjNjTmhnNHBxc0ZoQWQ1cVhycTRFUlFkbTQvOXVvcm9kTnNvcXFraElUa0VmbktHdE9LbW9LTWV0TnBHY0VFcHhmVElxcHJEOGVrVlJsSjJabWQyZjJyOS92d012aTBlOWI3TUJkaCtMaC9OMFdEd01CaStRbVV3eHhNV1pzVmdTU1VsSjRaSkxMcUZIang3bzlkN1BwYnBObXpiVTFOUlFWMmZEYnErbm9jRkJZMk1FV3EwVGw4c2JJVldyVmNMdDlyTit5SGc4bmtDeUx1RFpzR0dqMDJxMXZob1RFM055WUZOcFNJbzFoVWM2U0hRR1NEMURyU3MyNFgvZmI3WE9RR3BySFplMVdKSlNXejFIcXplU21tb01EL3BGSnNYRnhlL3YzNy9memFram9RcE5xN3Y3dExYbXZyVUlINE9IVjFzekdyM2FXa0pDUWdEVUFHU3oyWXpKWkNJNjJvQmVIMFZrcEk2SWlBaWZyNjExZjF0UTFDS3crSUxKMU9ZOVJWSFdoNGN4TEdFSmkxOWNMdGVIbDF6U2VYOHpRRHVsYjYwMXY1cEdvdzNRRXVuMVVVUkhHM3pwSGVhQWJ5MEFiQWtKaWNUR3htSTB4bUF3Uk9GTi80aWdxU0pCN1VzQlVZa2dDdkdRRWl1OGl5NjRLaXNyWHcwUFpWakNFaGEvZlBubGw1c0lUY1lOQUp0UFczT2ZYRnZUTktzSGJTcDBOeHE5eWJnSkNZbEVSVVdGQWx0U1Vsdk1aak50MnBpSWpvNG1OUDBqSWtocjB6U1BrcmJRMnRxMlRkcnVjcm1XaEljekxHRUpTMzE5L2ZJcnJzZzkxQXpVR2sra3JmbVgxR3RlTnVXbkpEcFJla2RTVXR1V0hwSEl5RWdzRmd0eGNYSEV4TVRnVGYvd0p1MUdSR2g5S1NBQmN6UzR6RW8wcXlGMVM1TGsycnQzNzFMZzhLOXRrREl6dTRWcHdjTVNsdE1VSWNUaE5XdldiRzFOVTJ1bXJZWGtyYlVXQ2ZWWEdQaTUxcHFuZDBSR1JyWUVOb0NrcENUaTQrTnAwNllOUnFPUnFLZ285UHBJSWlMODRLWTViVi9iWlpkbGYyZTMyMThJRDIxWXduTHhTbVZsNWNxeFkyOC8za3hUTzZHMmRpTGZtdGNFMVJJUjRjMVpDdzRZeE1mSGs1U1UxR3I3M25YSXRWb3NGcTlKNmcwa1JLUFg2d09CQkswMklsaHpFNG9RT04wZTRmWW9RaEZOckI5K2RPN2FJM3Zwcy9tRm0wTTRITndPM3Zwb0I5TlhiT0x4L04wY2FSVGgwUTlMV0g2RjRuYTdQODdKeWZuOE5MUzFrS1gxL05VRnZsUVBYeVZVUkZEQUlMZ2UxSXpGMHZhRVZsUWdBYWw5KzJUOGdZU1lHQ01HZ3dGL0hXbXcxcWJSeURqZG9OWm9VS2xVSUFUQzF6ay91QjA2ZU1DNVlNTi9sd1FEMjdMMzEvTjZpWk14ZmJLSXN4NWl3cXJQd2lVMVlRbkxyMUFLQ3d2Zkx5czczTHk2b0JGb0RBWTFINkFwd1RXaFRWSFFKbTB0dEI3VUdBZ1l0RytmZk1JK2hGUU9KaVcxSlQ0K0hwT3BEZEhSWHBNME10SnJralpwYlRyTWJhS0ZJVEtDQ0sxR3FGU3k4R0pid0ZiMlNCS3VnMC9kOTdITDZmeVg5OHFONU84OXdsM1g1cEhUd2NMRUcvcmcrcWFJcnh2Q2t5QXNZZmsxaWRWcWZiVlhyNXdTSDNnRmcxcHd3WHR6dmpXZnRxWnFSVnZUaFZRWW1FeCtFN1R0U2ZzUkFteUppWWxZTEJiTTVqaE1waGlmU2VvRk41MnV5UnoxUlVtRldxMUdCTkdMTkdsdGtodHdiaXNvZUVVSThTVjRjQ3NDbGNyWG5LeENKV3dVVjd2Q015RXNZZm1WaUtJb1h6My8vS0xtQVlPQWIwMlNKQ2V0KzlaOEpxaEdOR2xyVFdWVDNweTFhRXltR014bWI4QWdNVEh4OUlFTm9GMjdkaVFrSlBoeTI0d1lERkdCSW5rL0E0Zy9rQUFLaXBCUWE5UUJJa3BKQ2pCZ3VzZGRON1RpK1BIakw0Q2VQcDFpV2JXOWtLTTJPeDk4L0NVL0NJbUdSbmQ0Tm9RbExMOFMrZmJiYjFmUG1ESEQxZ3FvK1RVMlA2Z0ZwM2kwV0hHcWlibkRYK1FlNVZ2aFBaYUVoQVRhdFR0MU9XUUxZSXVKaVNFcEtRbXpPZDZYMjlaa2tnYURteXhCbmNNamRIbzlHcFdxMWFSZEpNa1ZGMmZlNEhLNVhyejd4aUYwNXdpVFh0L0FwMG9pQTJKVjZIVmhUcTZ3aE9YWElEYWI3WTJ1WFMvOUpzZ0ViV3ltcmJXYWpOc1VNTkNJNXFBV1d1VHVKWkJNU2tvaUppYm1sUDFwRlZuYXQyOVBkWFUxVnF1Vit2cDZYeUY4STA2bkU2ZlRpYU9obmlPMlJvd21FMnFQazhaR0JVVlJFRUlJUlZFVUVCNGhrQ1NRa1NUVko1OTg4dkpWVjEzVmE5cE52OGtHY05lVmMvVzJhUDRVSDE2cEtpeGgrUldZb0x0ZmZmVzF6YTM0MVlKQnpZVTMxOVVqU1pMU1BCbTN5YThXV2pabE1FU0hGTHkzYjkvK3RQclVLckJwTkJxU2s1T3ByYTNGWnF2RGJyZmpjRGk4bEVhT0JyNCtWb2NxTWdwSnVHaHdLOEl0SkVtdFVna2hGRHdlOE5JYVNZb0FOd0xYMVZjUExOdno1YTVGWDNxaUZpZHBGZDc1K0hPeWNudlRNWXhyWVFuTEwxNisrZWFiMVE4ODhJRDFKQ1pvaTJSYzM2cFRMZEk3dkg2MWxsSFF4TVFFa3BPVDBXaE9EelJPeUtkcXNWaWFKZTVHKzJwSkk0bVBpOE9randDVkNrbWxRcEs5cUN2TEtpRkpDQ1JKU0pLdllsL0NKVW1TTS9PeTdFMmxKU1hQcmk4NlRNL2VmWGw2Y09md2pBaExXSDdoVWx0YnV5UWpvOXVCazJocmZtRHorOVo4QVlNQXFJVXc0bnFqb1A1YTBPaVFSTnptaGU1bnJMSDVKU1VsSllqU3lPNmpOR29rUFZueGNiYlpxSyszMDlEUUlCb2JHeVdQeDROYXJjYmo4UWlmQkJaWmxpVEptVmhUK3RLTTMvKytteXpMZzhKVElpeGgrV1dMMiszZTh1aWpzejl1Qm1vT21uTFdUaFFGRFRaQmhaZTFJNWc4VXU4elFVMCtFOVJDU2tyS0dmWHRwQXo0VVZGUkpDY25rNWlZNEV2Y2pjRmdDQzZVYndvbStHdTdWTDVBZ24rcFBvSXFFdTY2Nis3amh3NGRlZ0VvRDArTHNJVGxGeTAvZnZycHArODkrK3l6RGEyWW9JNW1KbWlnd2lBMFlLQVd3WnFhdjhEZFlJZ09MS1BuTjBHYnMzZjhKSTBOdklHRTJ0cmFnTllXOExVNXZkVGhicmNidDl1TngrTkJVWnFDQ0VJSWZPQW1DU0hjZ0NSSmtweWEydkZ6cTdWMlFYUjA5Tnp3M0FoTFdINlpjdmp3NFdWOSsvWXI4NEZYTUtBMU4wSGRRUlVHb21sUmx0QmdnYi9BUFNySzRFdnRhRU44dkRlMTQzUURCbWNFYkFBZE9uVHdSVWh0TkRRMDBOam93T2wwNG5JNWc0RE5qY2ZqRVI2UFJ3b0dPSi9XSnZsTVVwY2tTU3FqTWViZmpZMk9OSzFXZTFkNGlvUWxMTDhzc2Rsc2J5UW50OTlGYUdwSGN4UFVSV2paVkFzVHRJbGpMYmpBUFpTT3FFT0hEbWZWeDlOYWpDMDZPcHIyN2RzSDBSc0ZNKzc2cXhMOHhKU2FVNW1rVHFEeHd3L3pseWlLVWhDZUptRUp5eTlIM0c3M1I0c1dMU3FnOVFob1FHTTdtUW5xQnpXdE5xSlpkWUdCbUJoVGdJNm9mZnYyUkVkSG4xVS9UenREdG4zNzlsaXQza1ZlUXJVMnYwbnF3ZVB4NFBFb0p6SkpFVUpJUHRYVU9XellzUEx2dnk5K3ZrT0gxQTZTUktmd2xBbExXSDdlSW9RbzNyRmp4OW8vL2VtaHVsWk1VQWN0QXdhZUU1dWdYazFOcDR2MHNYYjRPZGE4QmU3SnljbG5aWUtla2NibWw0NGRPOUt1blRjRkpGS3ZCMDBrK3Fpb0lHTEtDTFFhRFpJc0MxbmxYMGsraEcwM0VFaVFKTW5ac1dQYXpwcWE0OC9SY3ZuTWkwYXNwWHRZdjIzUHVibk85bjBYcE0vYjFxK2d6UHB6ZjY2d2Z0dUZhczFPd2ZvdE9IOGhjNlc1ZkxacE5RZXJUL2tLdW91Ly91L3lmdjM2bHpYVDFsb3pRZjJKdUw3cUFxOEpxdEg0dGJWUXY1cS9aS3BObTFqaTQrTnAxeTZKamgwNy9xUjdPaU5nMCt2MWRHaHY1cTFQQ25uOTZ6SStLU2xuMDNlVk5LaTlOcklrUEpSVTEzSE03c1JxZHdpN1MwRldxWVVzUzBLU1VCVGhYWXRVQ09FV0FwY2tTWTJ4c1hIdk5UUTBQUFZMQWFJbkpvOWtXOW01STF5cUxNem5tWlZiZnZKMXlqOWJ4U01MMTE2UWUxcncwTy9aOFRPUGExY1d3ak1yVzNsT08rRGVlZWUycmQwcjUvRmt3VUcwdjVDNTBseGVubk0vMjRwdEp6M20yTEhxRjlONzlOMFRwS2s1Z2pkSmtocURRYTNKQkpXRVNxVVdYbERUaWhQVmdYcnoxY3kwYlp0RWh3NGRRbGFjT3UvQUJ0QzJYWHNtL200TTgzOC9nZ2R1R0VTLzlrYjIxemlKaW9yQ0VCM0RwUjNha1o2VVFMdUVOa2hDd1lXTUxLdUVJb1FBU2NpeXYxQmUrQmtBR25OemM1ZTRYSzdYZmdIK0JRcTNmVWhaalRkb0VpcmVDYXc0YkJRWGwrSU1tcy8ybWlxS2kwdXd1ME1udWFJb3BBNlp6TWI1azF1OWxzTldSVWxaMVpuMTBXNmxwTFNpQmRlZHcxWkRTWEV4Tm9mN0RPN0p1MzVvY1VrcGRtZkxGN1Ntc295SzZwWXZoSzJxdk5WK0swNDdKY1hGVkZudDUzV2NGQVZTaDhERytTMS90NVhEMWwzZ2Rudi9EdG52Z0pJU3NMZWllaWw0N1lxUzR1Yjc3VHo1eEJ0TW1qVDJselZYRkNkbEpTWFlXaG5YNXVOa3Q5di8zYU5IaitCOHRSWW1LQzFUTzN4ckdLaEVNTWRhODJDQm56aXlLVit0UFczYnR2M0pjK0FzcXRBanVLNXZUNzc2U3NadWJ5REZrc0NudGRVWURCRzRYRzRrV2NhR2dzZmpRYTFSQzZGU1Myb1pISTFPWkZrU0VpS1FBaUs4S1NCU1llSFhja0ZCd1l1REJnMUtVS2xVMS8wY1FhMXczVE5NZStaZENnL2EyWDNYZFN3eHFCazI5WjlNSFpZRndLdlRiMlIxVFVjcVA5c01laDNxekp2WnRtUUdUOXc3aUdXN1BhUWw2Tml6cjV6WnI3N04yTDdwZ0lOWjQ0YVRYL2dOdHF6NzJMTnNScUN0UlZOL3c0b0RjYWpkeDZrNldFaks2TWRaTzIvOEtmdFlYYmlHQVlNK1FFYzFGZm84Q3RZL1Q0SVdWczRaeTZ6VjM5TTUxY3pCd2lMR1AvRUdENDNLT2VVOXJWdndJRk9lMmtSR1ZtZktEeFF6ZCswWERFbjM2aVhMWm85bnNmVUkrM2J1WXVyTC8ySDZzRXh3VnpOci9NMnNMRkpJMGR1cE52Um0zZXAvWWRGQnhlNDFEQjcxSjFJeXM3QlZIaVI3L05NOE5YSGdlUm1yV2VNZ3Z4QnNXYkJuV2RQdkQ0MkJiVVZRVWdGRGhnQ3hzSElseEFJN1ZzTDRHWkNlQ1FlS1lPNXlHSlhqUFM5L0FjelpCcnFEWU5WQ2pRbUtmQXROT29yV1UyRFBZVW1hN2hjelY1U2FnNHdjL0JzcURGMlI3UTA0S3Azayt2WTFINmVldC84alA4MzF6WWVIRHg5dUxWZXROUk5VQ2E0RjlhOEpxdEZvUmRNcVU1R0JPdENZR0JPeHNYRWtKaWFTbk55ZVRwM09rYnRkQ09Xc3R1UEhxL2w0OHdmMHYyVTgxOTMvWis2Nzd6NUdqLzR0MTE1N0xWZGNjUVdkTDBsRE5zUVJiMmxMYkd3YlNWS3BKSlZXSzB1eXJKSmtXUU5TQkpJVUpVbVNTWktrUktERHZuMTdoeXVLNTFOdndjTDUyWTRjcVJDSERoMDY2L052NnhFbDN0cnZiUEg3SzMrOFhzVDNHaVYrckhjTElSVFIwR2dYUWlpaXRyWW1jTXozRzU0UUhhNmRHbkxlL3JkbWlXNjN6UTM1N2ZrSHJ4R1gzelpYZUlRaVhJY0xSTHU0SzhRUG5wUDNhLzliczRTbVhUOXhxRUVSUWpqRUgzL1RVZnpwOWM5YTlLRnUveW9SMytWbVVYK0tlNnI5YXBXSWEzZUYySC9NNGYydHNVWWNyL1BlMnkzZFZPS1BMMjRYUWloaTc3OW5pazQzekJCQ0tHTHpjNU5FajVzZkVZMUNFVUs0eGROM1h5bis4T0kyMy9PNVR0enhqN1dCNnpjMk9rNytyQnYzaVQ1dEUwVmlZdWgyOWYzelQydWM5citsaUc2M3RmejkyM2NVMGUyVzBOODhSeFhSS1ZFUm54ejIvdjNqeDRwbzMwOFJMdC8rRDU5VFJHUTdSZXc5NnYyN29hSHAzQzllbXlHNi8rNnhYOVJjZWZmeHNhTGZmZDduMkhoa2grZ1VxUkt2ZkY3ZFlwemNidGZPOTk1Yit3RHdXMkE0TUJqb0MyUURYWUVPa2lRbCt0N2hLRm1XSTFRcWxVYXRWcXNpSWlKa2c4RWd4Y2JHU20zYnRpVXRyU09abWQyNDRvb3J1UGJhYXhrOStyZmNkOTk5L08xdmYrT1ZWMTdtNDQrM2N2eDQ5Vm5qVWZQdHJIbURUTVlvdHV3dEpySmJINGJGZXlndksvTkZTTjAwTnRSenlPckNraGlIeHQySVEzaUVKTW1TSkt1RTEveVdGQ0Y1a0x4cXF3VElraVJKR1JuZHZpNHJPN1F3S1NrcFZwS2s5RjlhSUdEd3lGdXg2TDNXdlU3ci9ZSlhGRzVpOGpPdmNLQ3NHc1ZSUmFXY2Qxclg2cDJYaXd6SVNjbVluZFZZbllEdTVPZWs1VjVOc2c1QVMvK0JlU3pjdVJ2RzVtQXIzY21NZWY5aTk4RUtGTGVObW1valZ1QmtYb3hkT3dwSUhYUXpYV045bmlPdEVaTzJTZEh2bmVkVlo1SlNVckJWZlE3QTFxMmIwZHB6bURYallRQktTK3hVNkFxQlBMTDc5bVBHNUQ5eGI4Vm41UFh0ejZoaGd6anBtbC9hcm13di8vR0NqRnZKZGloWHc1cjVzTlpycFdIZDR5MlA4UmZ5OUJ3S0dXYnYvM1ZCNDFCWmZSU2pNZmtYTlZkMjdmeWMvaU9uZXg5elFnNTlNNHlCZlUzajlPbDNTVzJUM25wMCt2MUhtZ1VLZ2lPZ0ovQ3J5YUpwQlhkL3NLQXBBbW93R0h4cmdyWWhJY0ZiQjVxYW1vckpaRHBuWTNxV3dPWmh4WHNiMkJPZnd4UFhHUGorbXlLY1Bsb2poNzJPVDQ3VzBTNDVtV2pGUVgyOTF6OGdxMVJJc3BvSUxjTGpjZU5VRUVpU2dpOXgxdzl3eWNudFA2NnFPdnBjWEZ6Y1RDRCtsd1JzT3FPaG1iT3BrRkdqL3NwajZ6OWdXSFlLOWwxTHNVejQ4UFFHUmc0YUd2bk1IZENLMzRPcVZERmgrRzBNVy9RaDh3ZG5vcTdjZ2lYenJ6ODVEQzBIOTgvbnJGS0FyTnhyR1RIWTkwMGFjU1BHaEZRQXNrYk1ZRi9PY1BJM0ZiQjAzbjBzM2ZKSDhwKzU5OFFOT0E4eUl1KzNsRFRyYU5kaEQ3RGlzUW5uZk95TXlUQnlSTlBmSThkQVF2QitZK3ZubVkzUjJPeldYOVpja2VYVzNIVEI0MVMxN1BWL3YvSGc5UHUvSjdTdzNkR0tYeTFBOVIyMDJMSHdyd25hTWdKcThBVUx2UHhxYmR0NmszQ1RrNVBQNlhpZUJiQUozdi93US81ZFoyYnA3M3Boa0FXZWhnWWNEZ2NPV3czcmRod2pPUzJkUkJ4WXJiVjR6Rk5pQUFBZ0FFbEVRVlNCVXF1b3lBaFI1eFNTVHExRzhiZ0JTWkVsQ1FGNEN4UzgvalloaEdRMng2K3ZxVGx1aUltSitldXA5WlFMS3dham5xckthdWlhY09xRHE4c29WYWZRdDJjS01yQit6YnU0MForM3ZoWHYyRXlaWXpiSk9pZmJDcmFUTS9ZUDRLNmt0TnBJLzd4TTFNQ085ZXVwVkU1OVQ5bTVBeW1aOHcrS3FxZDR0VGEzbFJxSEFaUGh4UEdtQWYydjVxRnR4V1RQR3V2VnhoUTdWVFhleHF4V0s3SEpHWXlla0VGdWtwdThKNHRPZmpQYVZCYXZmWS9tdm0ydDRhZDkxZlZHc0ZaNnZkeit5WithQjRaU2tGT2h0NDlBb3FycTlDWmUxNTQ1bEQrekFTZTAwRUIvcm5PbGQwNHY1bTNiQ3JkbTRhemN5YllpS3dOOCs2eFdxNk5CaW5ubHdVZiszejZhMGpvY1FFTUlxTFZNN2ZCcmE4SDhhcUsxeWdML0tsTnQyMXBJU2VsQTU4N25udW5ueklHdDRRaVBGM3lIVlJmQndMbjdBVkJGVzNpcWR3cUZoVjl5U05HaVBuS01iK3gxdUJ2c3RORkhZdGJwaURYRlVIL2ttS2h2OUVqQ0k0UktyWlprL01TVUlmV2traEJDTnBuYXZHV3oxVVZGUlVVOThuTUN0Z21UL3NENENWZXgyR1JnekNNdjh0REluaWMrT0dVQVUvSWVwVy91TmFRWkZNd3A4WUVIWHJGakJhT20vd3Q3VlFrbFZUSjkrNzVQNXJBSFdUUmoxRm4zeldMMk1IYlExYWlwcHRJNGxJTFIyYUJWbUQ2aE04TnorOUF6V1krYzFCNkxmT3A3TW1hTjROVVpIekUwcHdjWldaMnBMQzNsc1pXZk1qajl4QWJrZ0lsekdQclpiOG5zZVNVWktTWU9IaWhtOG9MM3VYZVFnYlZQak9leDlVZkpTSTFsWDJFUmp5eDgrNVJUTXlIcHpML2lGVHRnMUhTd1YwRkpGZlR0QzVuRFlKSFAzNTZVQzRPQXJDd3dKTUhHalJCcmh1WHpZVnllTjNoZ0xRZHREdVF2T28wUFhjK2g1TGtmWld1WmswSEoybC9FWEJseTd5eGVIblE5dVFNL1FPMTBZYlEwcWFQTEh2M2RpL2MvczJGWE0xQnpCSUdidHhhMGxXQ0JmNkZqWHdSVXRCWUJqWWt4QmRZdGFOOCtoZlQwVGtpU2RNN2ZVMG1JYzVObmMrVElFZmJ1M2N0MzMzM0hvVU5sSERsU3diRmp4emgrdklhNnVqcnE2NzFGOVBYMURUaGRUc250TGFDWFBCNlBKSVNRZlpzYTBBQmFJWVFPaUxUYjYrK0pqSXo4dzdtNjRjcktTcHhPRjhuSjdTNFlHRmFWbGVEV203SEVHczU3VzI2N2xmSWFCOGxKQ1NHNVBEV1ZaZGd3a0p4d1pocVAyMkdqdkxJYXN5VVp2ZmIwc29Qc05aVlVXZDFZa3BMUUJuMDZIYllxeXF0c1dKSlNUdnRhRjFJVU41U1ZnZEVNcGpNWXFtMUxwaksvTkkrVmMwYi9ndWFLbS9MU2NreEI0M3I4K1BFWFltUGp0alF6UFJzQXUrOWZyOVltU1U3Sm0yUWZBRFpmWllFL1QwMDBBWnFCNkdodi9XZGNYQnlKaVJiYXQwK21VNmRPZE92VzdaU0xzcHl0cUdiUGZ2VGNtR2dHQTVJazBkam9MWTUzdWZ5RjhRcUs0dkdYV1BsRHNUNVFGVTIvQmR1NlhzME5nSysrK21yUHlKRWpVYXZWdmM5RlArdnI2L0Y0Rkl3bmNwcWNCOUViVFJnaXRSZWtMVmtUUVV4MEZNMi9nYm9vSThhb003ZnFaYldXbUpnWU5LclQvNnBxZEZIRXhFU2phb1pkYXEyZU5pYlRHVjNyUW9va1E0d0pkR2M0VkNsWnZXazhYRWJYSGwxUi9XTG1pa3gwMExqVzF0YStQR2pRdFp0Ly9QRkhWeXZBNWszQzlmblZKRWx5TlRNL0E2RG1Oei85Q3h6N0F3VnQyclR4clZuUU5tQitubXUvMmprSUhyUXVxYW1wT0J3T25FNHZyWkhiN1FwUUduazhpZy9rdkdEV0JHcENlSk1sRmNWWFY0b1F3dVYzdXExYjk3NzArT1B6bGp6eXlNUHFpSWlJZTdob3BZYmxDNWRSM1lxQ2JjbnN5NmdCUFFuTC8walVzWXdkTitJWE8xZnE2dXBlZStDQkJ6Wi84Y1VYemZQVW1rRE5Hd0gxYTJvZWZNd2QvZ2hvOHdSY2J3VFVuNnNXdXNKVVdscEhVbE5UeisrUW5Pc0xkdW5TeGNmWjVneWtmL2dMNVAyYW0yOFRRZ2lmMWtaQWxWTVU0V2NDa2Z3K3R6bHo1dFRFeDV1WDNIMzMzWEpFUk1UZEYrZmJZK0xXU1pQRElCS1djenBYNnVycVh2L3JYMmNWdlA3NnNvWWdUYTBoZVBPREdrR1ZCYklzdFJZQkRmalZ2SVNSaHFBYTBJUkFXa2VYTGwzTy83Zm1uS3Z6a2tTWExsMW9iR3owOGJXNS9GeHRBYzJ0S1pGT0JJR2JRQWloK0loQVFreFVTWko0NElFcHg3UmE3Wkk3N3JpRGl4ZmN3aEtXY3lkMWRYV3ZQL2JZWS9uUFB2dHNQYUdCZ29BL3pRZHFJZmxxWGhOVWJoRUI5Uy9FMHB3dzBwdXIxcGJVMUE1MDZkTGx2QVFMemp1d0FVUkdSdEs1YytjZ1dpT3YxdGJrYS9PYXBENnoxQTl1d3FlbCtTT2x3ZUFtU1JMU1BmZmNlN1N4c1hIeDNYZmZyZWgwdW52Q1V6TXNZVGxyVUh2dHIzK2RWWEFTVUd1UXBOQlZwb0tYemd1T2dEWnBhazBKdURFeHhvQmZ6WityMXJselp5SWpJeS9JL1oyejRFRnI0S2JUNlFMZzV2SDR3UzNBMWViWDJ2eWJEOGJGaVhSQkFiQmh3MGFYSkVsNyt2VEpkV3MwbWpNT0tQd3ZnZ2RoQ2N2UFNXcHJhMStlUEhseXdlTEZMOXBQcEtuUlNtVkJFNmpKd3IvQWNXZ0VOS3JGZWdWK245cWxsMTZLMld5K1lQZDRGakYzRDU4VzdtWE82bnordUxLQVY3NzhJY0JEMVZoZncvS1BQbVhHdnpmeGwzZTNVNnhFY2NrbGw5Q2hRd29KNWpnYUZJbkQ5WTNVQ0sxdmRYbDk4T3J5UXFQUm9GS3BoVCtEMlI5MW9ZbkRyUkZ3UFBiWVk3VTMzenpxQmJ2ZC92U0ZuaFFIOSt5azJuR3VydVprMzY3ZDJFNDc0NmFja1RtLzRjQlpFSDlaSzRvcE9nUDJoMjJ2UHNLOVQ2NzUyYitrSTNPZ3FKWG5zVzhYWi9CY1QwZmN6THRyTkZ0SzdEL3B1WjVLS2t1TEtLazhTN0k3OXdHR1pOOU0yVWtPT1g3OCtBdlhYRE1vUDhpbjFrSlRveVVOVVhCaHU0K0dLTlNuRmhtcDl5WGdlcXNLNHVQTldDeHQ2ZEFoaFVzdXVlUzhwWFdjTzJCVDZsaXpxNXd1cVIyNElhTWRtN2ZrTTJ0ckNRQS9GSmZ3ZGIzTTFkMDdreDByZU9DRlZSdzJ0Q1U5UFoxb25ZYjlEUkwxSHNFUlJZUFJhTVJnYUVaUzZRTTN0ZG9QYmw1eXltWUVsWTJBWThPR0RmVlJVWWFYYkRiYjQ3NkJ1U0F5ZSt6VkZKU2NLMTdNU2lZT3ZZa2krK2tEWVdsSk1jNnplR0UvVy9VNDB4ZXNPKzNqYlRWSHFhaXkvZXlCYmZ4VVNHaGxGazhjeWhrODE5TVlxUjFMV1ZHUlJ2OVUvVTk2cnFlU3RmUC93THpWaFdmOW9Td3BMajFSdVp6ajZOR2p6OFhHeG0wSmluNmVEcWg1SkVueStJTUZMYzNQVUxKSWYxV0JuNElvUFQzOUp6SGhYamdmbTJ6aThmSFhCdjVzWXovS2ZidC9nUDZwZE83ZWs4ZTcrL2Vrc212dmZyWitYODFEMloxd3VRWVNrOUNPOXpldXA2RGNnY2trK2N6U1FOb0hQcjlhd05mbWR1TXJKY1VUN0hQenBZUUFFQjF0WEhiOGVMWGRaREpONFR6V2xwYnVYTWZpTlo5U1dPSEUvc3lqN0RiTDVJNjRtMkU1M2pMcGZWdFhzMlQ1KzFqbE5veTVkeXFEc3J3NU9vcTlna1hQekdkSDBXRmlrenN5N3Q1cFpLY1kyWjIvakZWYnZxREVWc09pT1gvRm9wVVpPdTRQNUhVK2RRTHQ3dnlsekYrMW1ZU01xNWcrYlR3bU5iaXRaU3hlOURLN2k3NUgwY2N4ZXNJVUJtZW5nTE9jcCtZK3o4NGR1emhncldUbXpPL1FKZmRpNXIwakFpOUQvc3JGck5yNEJSamFNbXJDSkFiMTlQWGRXYzJTdVkrdzdlQXhoazM0STZQNitrcGYzRlpXTEp6UHBwM2ZrdEQ1Y3FaT214UW82TjYzYlRXTGxyNlBEUzBaQTI1aTJxMkRPUitwdVB1Mnd2Sk4zaG5jTytUWndLb3RVR0tEUlhQQW9vV2g0eURQMS9YdDYyRFpHbkFiWU9JMHlQRlh1VHZnbVFVd1pEQXNYZ0IyQTB5ZkJlbSs0WGgxOFFzTUgvdEMwNzJjNHJuYXF3NndZUDRpOXBUVWtqbm90MHdkTnlSUWNyVmozV0plWGYxZm5Gb2plY052NDY2aHZWR3E5akhuLzdkMzd1RlJsSGY3Lzh6c0ladk5ack1zSVFraGlURmdpQ0hFaUJnUkl5SWlJbEpFUktTSWlKUWlXcXJXb3JWS0tTOHZQenpVSXFVVXJWSThJWjRRRVJFcElxVVVFUkFSTVVhTU1jUVFZZ2doaEdXejJlek96dlA3WS9Zd3V6bUFlS0srUHRjMTE1NW5abWVldWVmK251N3Z3aGZZdGJXQ3VySy9NNnZtbjZRVlhzYU1jWU5Qd05KY0xGLzRDQnRMdjJMSTJJdWprYXloZ29VTEYxTldmYXdoUGpuOXFTY2VmV0EzMGJXZkxUSG1aN3VncG10d0hBVnFrVUJCQW9tSjBhQ21WUlgwK3Zaa2lMNXpZSXNabjlZM2tKdCtWdHNQL01lcE9LSXlLVFVKZ0x5OFBCUkZvVnRLTitKYldraE9SdWRyQ3kxaDhBcURHMEFnMENtNGlTNWRuS3NPSGFwcjd0YXQyMjNmbFNxSVBTT1A0Y050YkgveEVZcEtMbU5JdHBtMERNMVBWNzVoRVNQdWZJMEZpLzZYWkY4bE04WmN4ZEp0NzFPY1ltYnBmVGV5em5jRjgyYU9vNzV5RHcwTmJzaXlrOTZySDhNdEZ0WXNlWkhpSVZlUWI0T3M1Sk5Jb0ZXcVdQWnlPUS9lL2t0V3pMK0R5WE1zcko0M0hsOTlKWTJXYkNiZk5ncGYvVzV1RzMwWlMzZCt5c0FVTzRPR1hvSHMyazFsYlIrR0Q3OEMyUmFwWFh4eDlnM00yMlpud1p4YnNYcHFLTjFYSGdhMkxTOC94OGdsRHpFaGV4c1R4dDVNY2ZXN1pKa1ZIcHh5Qlp2TlZ6RDd6anNvWGZrb0l5WTNzdXZsMlZDM2xSSGovNGNGei82ZGJMdVBiWHMwd2N2T2dHM2Jxc2Zac1BkUXpNMnpLN2ZkTjRPVVRtWm5TallNSHdwVFI4UFlleUV0K04zMFhqRGNBbXVXUVBFUWdzYzFhRjR2ZzZsUHdNSkhnRm9ZUHd3MjdZRXNTeERZNXNHNjdUQjFNdEFJalM3QUFkREErdldWM0RldlVIZmxkSEpjUGRXTUhYd0YrVk1mNHZaUmFTeWIreHRtZWl3c21qNll4dDByR0QzekZaWXZld2lIMnNEdWFzMk1sYTBwREIxK0JkN3lEY2haRnpCOGVCSFc1Qk0zQ1Y0NTd4Y3MzSnZCb3Z0K3licEY5MUtobzJ0enB2Nk0rbk5uZlhIOTliYm5SNDY4SmxUN0dadW5GbHBhT3dLMVVGVkJaK2FuQm1wZFNVdExKVE16azE2OWVwS1hsL2VETWZsdkJHelYrei9oc1U4Q1BEbmo3Rmg3bFdmV2JDVHU3QUZjMlNNdS9HNmZQbjFJVDA4bm9ibVoxRlE2Q2lJRXZ5MEVoS09sSFlJYmFJQ1ltcHEyZnYvKy9hNnNyTXhiWkZrKy85cytVSTYwWHBTazlTTE5aaVMvL3lCSzhpS0hidW5DdnpCeDFxdU1LTWtEK2pOMTZGT3NXTHVMNGlrRGFXeG93SnFWUWs1dUFVV0ZSYm9MTTUrVWJEdDJzNFYrSlNYMFA5a0tHdG5LekxsektNNDJVamozdDZTTWVnN1h2UEhZZXcxaTVxUThkdTdaalZ0TklUL2R6YzdkdFF3Y2tVWC9raEthOXFTVGJNNmxwS1JFQjVMVkxGeThsUVY3dm1SWWxoa29SdmNwQlNOdlpOcW9JVUF4QTJmOW1iMjFrR1haeXNKMUNwc3I3eVhiRFAzdSt3TlA5UG9acFo3WjVMc2JhRktzcEdSazBTODNuWDc5VC94M0xBNG5hV2x0YmlNWVQwRHprck9nSkF0c3hyYUFsNUlOZGpQMEt5SHF1QzU2Qk81NkFnWUg5MnYwMDdCNks5dytOUGdGRDl5N0NJYWt4MnlzcVpKS1Z3YloraUpiMmRiaGNTMWIreXhsR2Rld2N2b29aR0R1dmJlU2Y4K0xMSm8rR0c5REk2ckZSbHBHTmdWWi9RZ2ZJbXN5SlNVbDdGdnRwS2xYVWZSNTZ0aGh3UElWRzVtNTZpQURDNndVejcySEphdi9FUEduSFdyOG9MWFYvY3JJa1RmdXAyM3RwNjVFaWxhSmprSE5ZREFJazhtSTJXelNnVnBzVVh1b1hDb3pYQzcxUTQ1VEJyWWpYMVZ4eXlzZk1mZW0wZVFtNkdlaFlNT21qYng2UEpubE54WkczYTBsU1NJN081dkU0eTR5TTlDWm9tcVVPUnBhajhiZ29EUG1CaElhZVJQaXpEUFAzUGJoaDd1Yit2YnRPOVZnTUF6L3ZnNWlkWFV0Wll0L3g2NW5RLy9Xd3RDaDJ2UHBjLy9PZmJQK2wzNjU5MlBKS0dMUnNxY1lrdmNOb2tOeUN1bEJlbUpKeThEYVZFOGowTFQxYVlaT2ZwVGhZNjRteFc2bXdhM2c5WjBneXVDdXBVWk5JeWVyL1JLZVpJY3pQRTNNWmdWRkFXOWREWTNlR3U0Y2QwM2tlMFhub0hyQjJHc2t6ODdhemF4SlYxQmU0Mlg0MVB0NWZNN2tUblhYYkk0VTB0Sml2aUhidjVNOHBPcGFXRG9MVnVtSWNULzloaHlRbTk2dVl4bEYvanJiK1JKWDZYYkdqUDQwL0Y1eDNrV29RUHJReVR3NHBvS3BJeStrMmlVeitkNUhtVC85VktkcUUzWDFGaktTTmIrZk1TME5aM0EvL1g3L3hvc24zcjdteGhtM0h0S1puM3BRQ3hlMVM3UlI2b2dCTlJNbVUzc05XRUt5M20xQjdmdklWZnZXZ2UzNGtZUDhZdmxXWm95L21rdlNvcDJwNzc3M0gvN3l1Y3pUTjErTXZaM0NPWVBSZ0NPckp6M1BGS2hxSUlhdGhZQXM1RzhMbTZRZGdWc0lEVVhJTkQzMzNINmZyRnIxNnArdXV1cXF3MmF6K2NadlBkb2l5Nmd4WXZsWldSa1VUZjhiOTQ1cWF3VTdjb3Bac3VJTlFHSDVySjh6YThGeXRqMXhaeVIySTZ0dHRQYzdEOTdVVTFPclVKUmp4RnRYZzhlWlFUTHd4TExIR0RQcktSNmMzQS93VWJubXo3RTczbWEvc2FXVElkZFJXZTJqVjliSjFTZWEwekp3Mm5KNWV1MWJZZk5QUDUxR3paakxxQmx6Y2RYdFpuRGg1V3llT3BsaG5aUUVWdTdad3RwdEIySldrMHJ4aUNIWXY0bHpUbTdiMHlBckhjWXNodkVGWHpPVTVzZ214MUpIVFFQMFN1R0V4elVyL1F4U0JxU3lmdVc4ZHJaaFk4cnNoVXladlpENjBsVVVEZnc5VTZZT3A1ZFJQNzlPTmpqbElEM0ZTMDJEQjlLc0tIVjFOS3JRNHZHODlOalNmN3g5eHgxL2NIVUNhbDZkV2FxUGZyWUJ0VWhoZTd4T3FjT3U2MVdRR2l4c3o2RlBuejZZVEtZZlBLajA5WUhOZjV3Wi8zZ1RTMFp2R2cvdTU3bURZSWgzTUtFb2kvM2xlN2oxcmMrNTRkTCtyUDlBaSt5Y2RjYVpERWhQUlBVMHNlS2phajZwYnVLSVQyVnZOeWYydERQSVVLTjliRHBRQ3owWElhdlQ3OWR5MmJSRVh3SVJiQXN6UWlHRUVHUEdYSHN3THk5dndmdnY3NnkzMld4MzhDMG1JdWZuOTJMNW9nVllSaGJRcTNBZytWbE9wdDc1SzRiZjlVdHl6UDlEcmxObTU2YjE1SXk2aDZINWRsWSsvaUJrRHlRM3pjeXVmVlgwNm4rVDNuQWlQMGZoOFFWUFVOOC9nL3dCUThnNWtaOU45Ykpneml4U2JoL0ZpdmwvWnRqRTMyRURzckt6ZVhIdDgrd3FraWxiOXdUcnloWDBLbGU1dVgzWXZlUWxYaHlRakNNdGgrRURDOENZeFowelNyaHJ5cTBzbVBNcnJONGE5alhhbURxdTQxNEVjbG9KZHc3MU1YbjZIR1pOSHdXTk5hemRYc1hjMmJmaks5L01vdlhWRENrcHdsTzlsUVp6RHRuT3p2L084Q216R1g0S3VwRzd0MEtqRjF3KzJMNEpHcXd3Y0hCRUZUZy9CeDVmQVBYOUlYOEE1Q1REN1ROaDZqU3d6ZGVDQ2x2V3crRGJvZDhKQ1hRYXc0YW1zRzE3T1lOSFJXdUh0WGRjODBkT0ltZnVwZHkxSUk4SlEvS3BMOTlEcVR1TmU2YU1vR3JyYWxhVit4amNMNWZhM2J1UXM3SkoxczNPdkY1bjgrQ0tmN0FxdzAxeVJoNkQrblhtTXJZeGNlSnc1cysrbjZ6N2ZzNmFSWThveHhYbHlVdHplLy9uVU5zZUJYcEE4MHFTMUNxRWFDZjVWaDhvTUlhWW1vaVBENW1mTmgxVDAwQXQxS3VnVDU4K1dDeW5oM3ppMTAvUVZmMGM5UmxJVFREaDlTdDQvUXF0c3BuaURDZkhtMXV3Mm15WVJDRDhXVklYSnpsSkZrU3JteTM3RDJOTDZzTFpUaXQrSVpHWG00dlRLRkFVQlZXTmxGdXBxZ2lib2pxeVJvaTlDZEhoM2dsSmtnUWdHaG9hMUFjZWVLRHN0dHR1cmJKYXJUMGxTWExDTjAvUUxSNXlGVXJkUGo2dHFDSytSeDl5MDVQbzJuTUFWeFk1V2ZQcXEyeCt2d3hyWmwrR1hud2VpWEV5bm9aS05xei9KeHMzN3lTclpESnpmajJhT0RsQ0VTNFpjU1VONVh2NGZIODFxYjM2azluMUJCTkRUbVhVc0RONC9wbVZPTS85T1EvZE01NDRHZkl2dUJSUnRZTlgzL2dYQ2YzR01YMTBFVDM3RkpPVnJHVjZKK1djeDRBc2lkMGZmVXFkeDh6RjUybU8zWUpMUjVOcnFlTzFWMS9uNDJvWEZ3KzlndXhVN2RnNE0zcFRrSk1hM3RjK3hSZVRIQzlUTW1vY2xyb1BXYlZxSFo4ZU9FYS9TNFp5VHE4ZUdDU0ZEN2Y5aXczci8wblpWeEovV1BBbzUvVkkvRTRtN3RzdncwY1YwUGRDY0IrRTZobzRkMUFFMkM0WkFRM2w4UGwrU08wRm1WMGg2MXdZMEIxV3ZRbzdQb0swUGpENGZMQVlJcmY1QVFNaHJwM3RaWGZ4TStmcFhVd2JlMG5VKyswZVYxTVMxNDY3aXMvZlhjL2F0elpSM3hySGtLSERPQ1BWam95WDdadmY1cTMxNy9CbFN6Y2Uvc3NEbkprVU9lZVo1NVp3VnR3eFBpd3J4MjEwY241K2RxZkg0ZXlMaG1FLzlBRXZyWHUzTW1mdzFZK3RYL25ZKzgzSGozZWswS0ZQNS9BRkFTMHErVFkyK2hscXZoSWZyNW1maVluMm9BU1JKaFNwQlFwNlVWQlFnTTFtNDNRWjM1b2UyNm1PWThlT1VWcGFTa1hGRnh3NGNJQzZ1anFPSEdtSTBYRnJDUmJXdCtMeitTUi9VTXROVlZWSlZkV1FucHNCTUtEcHVabUVFSEZvYzlSU1Z2WkpVVzV1N2hTRHdYRHBENkhIOXRQNE1Rd1BkNDYra2xFTDMySkl0dlcwMmpORlVmNjlmZnYyTlIwME0rNmdUNEh3QzBGQWx1V0FQdm0yL1R5MVdGMjFVRXFIRnYwc0tDZ2dLU25wdERvbXhoOTZCNUtTa3VqVHA0L085TlNibGxGRVRVL2ZKTkI2SjJpbWFkakpJVUordDZCWnFnSnFmbjZmM2M4Ly8zenRtREhYVkFFM244NlhUL211VGV5dGFtem5FenZEeGc3anAwS3dIMnBZV2JqNjM5LzdWbjBORmF6WnZLZmR6M0tMaDVMak5ENy8rT09QYjdyNzdudU9FNTNPRVd0KzZ0dmsrU1ZKRGtnU3FyNU1xcjJLZ2xDZVdxejVxUmVMUE4xQTdiUUFOZ0NIdzBHZlB2azZVSk4wajFJWTRDUkpDaTFDa2lSSjg3a3BRVUJUVVZVaDlQbHRJWjhiSUc2NDRZWmE0SytmZmJhdnltcE5tQTUwUHgwdm40eThJdXdaN1VRelpTTzJuOURsLzl3dzJqTVlWR0tqSGJ2cUs3Zkh0VHd4TVRzazQ2MVA1OUNib08zMS9nd0FBYTJ5UjFiYkwyalhmR29oOHpNVS9kU1lXZ2pVOHIvVnpsSS9PbUFENk5LbFN6RDNKUUptR29pRm1Kc1VmaDNMM0FCSlZTVVZWQ2tFYW5ybUJxaEI5aVo2OTg1YnZXblRwcXJ1M2ROdU1oZ01RMDYzRTJLMU9iSCtoR0EvamREOXpHd2hKU2JSVDFHVXpUdDI3SGlqcE9UaUdqcnZ6cTZ2SkdpdjhVcW9xWEdiaW9KSThtMUhnWUo4dW5UcGN0b2V0KzlNM2VOVVJueDhQSGE3UGF6ZkZnb2toTEk2T2dnYWRKWXdFN1p0UXdBSGlHZWVlZWF3MVdyZDBhOWZQOCtwS0lUOE5INGFQOVE0ZHV6WTB2dnV1Ly8xVzI2NTVZak85RHhSeldkVU1idE9laWdtbmNPaTY5SWVLejJrOTZuMU9hMUJEVTZENEVFSEo0OVBQaW5qaXkrK29LYm1BSFYxaHpoeTVBaE5UVTI0WEM2YW01dnhlRHp0QkJUOEtFb2dGRkNJRFNvWTBZSUtab0pCQlNEdXdJSHFpM3YwNkRGWmtxUnpmN3BzZmhxbjYxQlZkYzlubjMyMktqKy9UM21RcGNYNjAvUW1hSlRwaVNiakhXSnFJdExRMkVUSFBqVzkrUm5OMUU1SG45cTN4dGlhWEM0T3VmM1lMR1prUFdjS0tOUTJIc01qRE5qTTBSbTZyUzB0SEd4cUppNHVEcFBjTWRHeVdDdzRISTV3VDlMbzZnVEN2cmlZNUdhcEkvSVdTZ0hSbTZhaDE0OCsrdWpCZ29LQ25UazVPWDZqMGZpOWc1dXJ1cFIzUHE3bnJLeVVrLytSdDU1VmEzYlE4K3d6djNIemtOTnBWTzNkeXZwM3RsRFhZaUduUjlmdmZ3ZE84Ymh1WGZzaWNsb0I5cmp2WnJmY2J2ZnpUejY1OU9XUkkwY2VwUDE2VDMwcWgxZnF1T2VucnU3VEhHWnFRdkZodGptdzJ4SklUSXcwWHdsSkQ0VlVPZ29LQ2s2WUpyVjN5em9DWFh1U2FKWkFiZVRGSjU5aDYvdTdxUGZaT0N2eis5TmorL28rTnRYTnIvK3lrdDErTTZseEFXcjk4VHc2NlNvdVRJbW41dk9QdWU3RkhUZ2Rkanl1NDNUdjFaZS9YMWRNb2d4UHJWckZrckxqWkRyaU9IRFV5eTFqUmpDMVQ4Y1hjMkppSW4zNzlrV1daV1RaRUh5TUxKS2tmNHdFRkNSSnd1LzNpMkNGZ2hCQ29LcHFWQ0FocVBHbUNrMDZKSERkZGVOcWdML1YxQnpZbTU2ZWZwTWtTZDlxWjVUMVMyZFJrVDZlR1NQYXByelg3OTNJd2cxR1JwUVVuUHdLUFZYTWYzQXBnOGNNd2ZsZkJGeDcxaXhrVldNQmN5Y1BiZk5aM2JZbkdEVGxPYVpQL2hseWl1YzcyNGZhN1M4emQ3UEM0L2RPK0phT3E4cUtCWDlrVk1GNE1yN2xrTFdxcWg5OS92bm5xL0x5enY1TXg5SmlPN04zeE5JVVNaSUNRcWlxRUFqWmFGSU5CZ09SRXFsSW5scmRvYTh3ZGMwaU1URXhxcUE5VWlhbFZSUWtKQ1IwZmwrbzNzemtXUyt3WmN1SWtJY1FtODNHM2cxUHNiYkN3b2lCZWFjeHNNa21iaGs3bW9KTUxScXlhdDBiek4zNE1XOU5LTWJxVE9mVjM5NUV1dFdFNm5NemFjRnp2RlNleDlROE94ZGVjQkUzakU3RkxFUE52ZzhZdG5JcjEvUVpRMmYzNVlTRUJBb0xDOUZPaUl6QjBCN0lTVUZna3dtS1U2SkZUUDNCb0VLNElUTmhwTk1ZbXlwSlVpaW9vQUtCakl6TXpVODl0ZXlUY2VQR2piVmFyZFBhdlhzMjFWUHZVc25LU29zNmVDcmdkVFhRNEpiSlNvOWNGcXFpVUYzMkFhVytJU2lLZ2l3YmtlWHd4Q1Y3K0F6V2p6UzJ1VmpjamZYNHpFN3Nzb2M2dDB4R2lqMzhtV0x2eDg3dHk5dFVBQ2xLZENtT2JEUkd2cVA2cUttdXdaS2NUckxORXJzNWtGWHFxcXN3T3RKSnRuLzcyZU9xcWxCWDlRbTdhK3p0SEFlRm5kdmVvOS9ZVzdobjVuaGs0OGxOUzhYcm9ycTJrYlNNbUQ2bEtxaUttK3JhSnRLek04SzFxcXFxNHE2dFlNdHViM0FmdERsMHd1UHFkZEhnaGpTbm1acmFKdEl6MHNMZlVSU1ZSUnMvYlZPMHJ5cEtWQ1JULzM4Qm11cXFjY3YyTm4xZVEyb29CL2VYUC8yM2Y2elk4c0QvbStzbUVpRFFsMGZwemREMlRFOVZraVJWVlRYclJLZ2l1cG14Mll3c3k4UlpySmhraUUrdzRYQTR0TVZ1dzJLT0l5MDlnOXpjczRJVkJXWnREdFUya3A2UlJrTk5OYmEwTEt5NlUvWHN3Z2NZTXZsL0l0RjcyY0hJQ1JPeE5MN0wzcW9PN3RGTjlkUzVGTEt5MHFPdUo4WHJwcWEySGtkS09vN1krUm84U28yMTFmZ3N6cWdlcktyUFEzVnR3NmxFUmVNb3lJeHc3aXhuRXQ1RGZnQ2NYU013SlpzVHlMQWJhZkZwRjF0ZWo0aUNab3JUanF6NGFUMlJwazNRTEkyQW15RUc1Q0tzTGNMZ3BCREFTWklraWRERkhnUTRnUzVpMmc1N1UyNitlVXJnNXB1blBGbGUvdGtIT1RrNUV3d0d3eVdoZy9uMGZUOW56dXBLOHROa0t0enByRjczRXZuSlpsWS9jaU96Vmg3QWJqUWdlNm94RjkzQ3VtVXpNVmR2WWZpVS82Vm0zMjZhYkhkVHNjcEo5dUFiV1RwckV1Qmw5cVJSYk56N0dlN0NXeWxkSG14Vjd0NURidGJQS0NqSlkvdmVSZ2IwUzJQZjdyM01XLzB4WTRvY3JIeDRCbyt2MmNHMktpZlZOVzhUSnZjMVd4ZysvdjZnNHFhUDBwMjdXYlQ5S0pQNjJhZ3YyOENZOGIvQ25KRlBVMFVaUTJZK3hpUFROTmFrbEw2SVkveHpUTWs5eHRZYWdhZFJZY1d1SGZUN05xUDQzbkltamZvVlpkV2xWTG0zTVh6M0MxaHlMMmZ0a252QVZjcjRzYitodkx5VUduVVh3N2MvUTlIb08zaGt4c2dUc3I4eE0vNUdmbUVPZTB0cmVlVEZOeGszSUl1bTdVdkptZkFZUlNsV0xGYUZmZTUwTm14OGhWNzJKdTRaZnoxYjkxVlFWYWN5ZlBoNzREeUhsMTkrQkNkMGVGd25EK2hPVmZJQXFuZnZKRy9BaGJncVA2Sm8ydDlaZk5zUXlqY3M1YmFIbjJmdjl1MHMyZFBDMkhEMWs0dTd4djJNWGZVYXRGWHYyODNRV2ErdzdNNFJxSzVLcG8yOWp0MGVKdzVmUFJUOG5MWEw3ZzFXVE5SeGNXci8vNXd4ck9qTkY1YXZxK3FBcGVuTlVGOFEwSHg2bGhhNmFVdGF1RTNFbVF5aVZWRUo5ZjAwRytHcjJvT29CaFB5VjRlUVZMQW1KdEcxcTVORG4veUgxeXM5WkdlazhQd3p5N25sMFpjNTd6d0x5Kys5aHZtYm1yRzdQOFdZY1I0MjVTdnFrNjlrOTh0emdwZEhQUysrWE1ic2UwODJGdWZsaWFjeHZEZ0FBQ0FBU1VSQlZIdHY0cEYxVmVTbW1LbDBKYk5xL1N2a09ZMXNmZm8rSmovOE5nVzU2VlNYbFRMd3RyK3crTTdnZkdqYVJYYmVyWXdkbmNxR1hVZFFYSTNNVy9NUithV1BNUHpoTFJRNUJFMU50ZWc2UnAzQzRqdk9yUXYvd1pKUERyZjVySFovS1JmT2Y0VUQzdGpmQlhoNjVVb212L254MTlxV3FnYjQrT085dlBiYWF5eGE5QmZ1dSsvMy9QS1h2K1M2NjhZeWJOZ3dMcnBvSUVWRlJlVGw5U1k3TzV2dTNidVRuSndzSlNVbFNRa0pWaWt1TGs0Mm1Vd0dnOEZnbEdYWkpNdHluQ1JKVmttU0VpVko2aUpKVWdxUUFlUUFad05GdlhyMUd0RFllT1QvQ2FIV05IKzZTblR0ZnFIWTM2d0lJVlR4dDE5ZEtuNTIvN05DQ0ZXODlxY2JSTGNMSm92akFWVUlmNE80K3V5dTRxa2REVUlJVlFpaGlpZC9lNFc0NWJFdDRkZjY1ZE5YWm9zK044eVB2SGQ4dHppcng2WGlzRkRFemVjbGlYKzgzeWhlZStBRzhhdkhOa1crYzNpTDZOSGpNbkc0bmZVSm9ZcDNIdnUxT1BmcWU3VDlFVzV4OC9rOXhFTnZsZ29oVkJFNFZpck95enhiZkhCTSs2Ny80eFhDWU9naW5ucTNXdnU5M3lOYS9PMnZWd2hWdlAvOGJKR2FtaHF6ZEJkUC9ydTJ3OStFbHJmLytndHgxZStXdGZ2WkczKzZTVno3eHhVblhJY1FxaENCT25GcGp5N2krUS9xaFJDcStPU1YyYUxiaFZORnExREYwZmVlRUliNHM4U093MTRoaENyKy9NdUx4RTBQclEzLzl2UFg1b3MrMTg5dWY3M3RITmViTGtnVnIzenFFOC84N2lweDQ1OVdpeVB2TGhWOXJwdXIrNTFQWE44blFienllZnY3K3RXSEswWHYzaVhpNCtEK1BIWDNWZUxLM3k0VEFhRUtJVHppanN2T0VuOTVwMXFvYXFDbXJ1NmpCVEw4SEJnTGpBYXVBaTRIQmdFWEFFWEJ1WmtEWkVpU2xCS2N1NG1TSkZsbFdZNlRaZGxrTUJpTUpwUEpZSlFsR2NrZ0pka1RKQWtrWjJwM3NyT3pTWFBFWWJLbmN0RkZBN2w4OFBtWUpDaTVlaEwzM2ZkN0hucm9JVjU3N1RVKy9uZ3ZycktWZE90OUxjMUM1Ym5mWGMydkg5dk1sMjg4VE9aVmR5SUM1Wng3NWlVY0NsNmZnZjNyNk5MOU1nNjNjKzIrL2RkYnVPcTN5NkxlKytMTmg4bTg4QWFPK3JYWHIvKy82L25aL1NzUVF1WDRzU1lDb2ZVZTNVN1BydWZ5UmZCNzR1aE96akNaK01NTHU0THI4dExTcXZEcEszT0pQL01LRHJXcUNPSDZCbmxzcXArL3Zmb1dTcThMdUNVLzJxQnNidnlLVzEvK2dQdHZ1SWFNR0lmcWV6di93L01OZGw2WTh2WDBtaVJKb3FDZ0FLUFJpTkZvd0dBd2hobWNMT3NmbzN4eFliK2JKQ2toOWlaVVZRMHJodWpZVzZpL1FpREUzaW9xS2hTbnMrdXF0OTVhOTM3WFE5dEhPd2RjZWxOMlVDbDI2SkRMbVAvRWJtQWlBTVdEQm1HVEFkbko0SUU1N05wZHl1VGlRYWQwYUdXYkhSc3lkb2NkdTgyT3pXYkQ3VGs1bWU3cXJjOHlmVWs1NjdhOG9lMlBxNHpOZXp6SW01N2ozaTBhOC9RcDFaUld1T25YVDZQdzVweEJqQjhZbE9Bd1d1ak1FTzAvWVE1MUUrYjhzTTY2MnIzczllUXpPRmk5bmo5a0tNYkp2NlphaFdUQW5qK1Evc21hQVRwazBNVXNXN3NMR0hHS0c3TmlzeG5CYnNOaGMyS3plL0NlNUxud05aUXlidno5ekgveFh4UUU5MmZUeGkzNGNyTzU3OTdQQUNoM3F4eDVmL3VLRlYrMWJwazQ4Y2FqSjJCcG9ScFBueVJKb1RTT2dDN3FLZlQ1YVQ3Rkw0eHg4WmpqNGpFYlBLTFZEOWF1OGJnUCtlbmFvenQyZXhKMmV5S1o5dDBrZFUyaFI0OE1Fa1FqTHk1ZFRIV0RCMVZ4MDlSb0o5U0J3VzZ6WTNYWWNkbzhJTnV3NGlia0RmVTJOZUN4T3poWm9yOTE4Nyt4SXZQZ3JOOXJITGV5bmxMdkhtQThhbE1GOTk3MUozYVdWZUZWZmRTN0cyaHdRMDVvNVpaOEpvM3RGM3hoeGhMME5XVDN2NEFVTTREdFZJRXR3SXR2dk1WLzVETjU2c3I4S0d1eTFkM0FyYzl1NU5xcnIrS3FyT2hNMDQvM3ZzOGZ0cnY0eDlRUmREMUZaWk84dkR4Q3prK2owWWpCRUFLNmlKbXErZUhDdmpnUmZKU0NFVkdkYnpZSzRGUWR3SVhBTFFBb1YxNDVZait3SlBPeVg3NnJLTXExUnFQeGlwTnhLbi96SVVkczlaTlluYWQyTitPbi9KbkZxLzlGTDRjeHZCK3FPWmxoWTY0bUs3aXEwYU92SlNjM1V1OG9XMjJjckZkdDcrb0ZUSnJ6WEp2MzczMzhuNHdma01LUGI4amhoOGpaT0FsWklhV0oyOGZmUU1uc3B4aFRsQmExdmdGRHIyWmtnUTFGVWQ0KzY2eGVHNlpPSFhkZ2VRVFFPZ0kxdlk5TjBabWVZWDl4cUUrSUxCdUUwU0R3ZWtIMXVrVkRhek1JZ2IvRlMwS0NqVGl6ak1scW8wdVhMamlkRHF4R2lhNnBQZWg1WmxmbS9mSVBYTDlzTTlPSEZXQ3MzMHhhd1I5aS9tMzdjOUppdDJQMnVIQkIyOENMM043Vm9aSlZkREdqUjRkdS9sY3oxWkVCS053MzZXb3NrNTVud3hPRE1GTk5jZkpGMGRQZmFzUFNEbkxKc3ZFYkJBOFF2UG4yMjd4MFBKbG5mMzRlOGJxZFZqeE4zUEhVZWdZT0djYU52YVAvM3VmbEgvR2JUUWRaOG91Um5HSDlaaXI0UFh2MnhHdzJCd0hPaU1rVURYRHRNTGNnd0VsU1JIbzhVcUVRWW0yNndFSkF4OTdDaytqQU8wOStZREk5V1ZwVGMrQ2R0OS9aZUYyLy9sUENTcjA3dDJ6QnJVN0dwamF5ZVZzbG82WkdaS1J0Vmh1TkRmWGY3ZlhucTJmNnVCc1krZUFMRE12WEhYdDdBVVB5UFZTN25Jd2Jya251dUJzYU1OcE83UnprRFp2SzJ2N2oyc3hjWjhxSlEvbFdheUlORFYrM281T1BoVE9uWXgweWcya2pnbmZwOUFJS3JXVnMzdDNBaEg3SmxHM2FpRko0UGxreWVBQlgyVloyTmZnb1RqYXphY3QvNk4vdjk1RjlzTnR3MWRlZzhGMlczYWdzdmVkR2FncC96WklKQTZJK0dUSjBJSzkrWHJOcjB1Q1NOM3VmbGZ0cDZPWVpBMmp0Z0pya2x5UU4rSVFRQVFFQk9aeHdpeG9JcUFMSmdObG9Fa2FqRWVGckJ0a2t6c2hNMXdRaVpTOGZmL1lWUmxzaTZhbGQrZHp0b1Z1M2JqaXRYZzQyQlJpZWNTYjV1UWtjY1hkbDBNQUNqTUQyZGV1b1A4bjdzNXpkajBMZlBzb2FvU1FHMmRLYzNhbmNXQlVsRXo5bzhDWE1tZjhaZWYzdlFic0hLNXBzUGg2cXF6MU1MU25HTEVQVnBqWHNQWVdtWFYvLzNMWWM0b0ZOWCtDeXhERmt2cVlRYXU2V3c3dlRMMlhIaHgreXNlNDRIN3krbG4rOEhtUUhsdy9qL2dHWi9QMnQ5Nmh0bExsaDRUUEJGY1d6Yk9ZRStwNWkvOVRNekV3ZHVKblFrZzJOWVZNMW1zV0ZnVTRJSWFSZ1BhbVFwRUFvVnk0Y1dOQ3h0eERBUmJFM3dKK1JrZmt2MlJqLzNyOC9lWDZZRU9JNklDK0ZTb1lOdWd5anB3Wnp5ZStaTUNCeWRvZU52NFZGNDM1RjBlb0h5QnQyQ3kvT24wcmQ5aGNaTy9OdmVCcXFxR3FRS1NsNWs0S1JkL0Q0akU3MHQ3ejdHRGZzbDlSNlhkVFhWek95NUdMTUdSZXo4Y1g1MUc5NmtlVzc2aWljZXpNdno5Vk83YndWLzJaa3ZwVUhuLzRINDhiL2pEVUw4ckQ0NnFsMjkyRGpycFZrbk1KeE4xdnRaRmhQTGEraC84aEpPQjYvZ1lLaUYzQVdYY09XcDJlZEZMQnRYUGtjanJSUkVXQ1QwMWl3K0ErTUhYTWhLd3B5S0MyclpmR0tOekdqQVpzOXpjNjlJeS9GYWxVcGQyZXc3cEdJUW0zNmdORU01Um9LQzgvRGxuNEI2OWN2d2RuSmNlMXN6SjkyQmV2SzNPeXI5TEIzM0VVc3REcFlzT3BOaXUxN2VYRFJlc2lyb1YvUjM3VHJZT1pmK2VNTkYzMDI5QmV6MXZ5cTc2QVBlejhjVUhSUlRMMGloeStXb1VuZ0Y1b2FoeEtjaDJvRTFDUWh5d2hGRVVKSU1tYXpkajBjYjNZSmMwSnl1QXVjMWVyRVlUeUFxeldPNHVLTGFGajNUMTUrelVXODBZU3phendaUGZQSTdObUxtVk55R1RYZ1Fvb3lyTWpwbWFTZDdQMVB6bURjNkN6V2I5aER5ZmpvYkttQ1VWTVl1T3dhY3ZKZW9YREVyYXhaTUlPY0ViY3phOHZOOUM4OG40SmU2VlJWN21QRVBVOHlmOUlnYnJ0ekFsT0hYOEN5Z2pTODF1NzBPb1djcHRPeTh1RHJqS05IajFKZVhrNVYxWmZVMXRaU1gxOVBZK01SbXBxT0JXV1BRbFVLTFhpOXJYZzhIbncrSDBLb2t0YWhYaUVRQ0VqQi9ndWhhZ1VwV0xFZ0I4SGZDQmlEVlFzbXRNb0ZNeEIzMzMyL1R6emJVbkg1NnNBMTF5Mi9hMmhPZzFjbUkrVjB6QzVUcWF1cEJvdVR0T1FmaDBhSTRuVlRVOWRBU2tZVzFtQytSZFAycGVUTi9JRGFUWCtpcHM1RmVrd2F3UTh4aEJEN0R4OCt2R2JPbkRtN0hudnM4VmFkS2VscngvUU1QZnFERVU5RnQ2aDZYMXF3aW9CZzBtM1FlakdIR2hsanNVUzZzMnVxdDRrNEhFazRuVjFKU2VsS3ZObkMyZWVjUjJHZjNsRWxVazMxTmJpeHRVbEZPZEZ3bGEyaFpNWUdkbTVhZk5LdURhKzdpYnBHRjJscEdWaDBLVHZ1eG5vYVBESlpHY21uMU9YTStOOCt1YnQwNlVKaFlTRnhjWEhFeFpuRGR5dzlnOU16TnlIVVVJY3JJY3QrU1pabEZFVVJnVUFVZXdzVjE4c3g1bWtBVUlMbXFSL3d6NS8vZ0E5NHJmY2c4WTczenVGRGUzUkx1aGJvZWZvZEtabTBqT3dmbGZmTGFMR1JuZDIrWW9Cc3RwR1ZaZnVoQWEzeThPSERieno4OE1NZi9QblBDN3c2Z1BKM0FHaXhnUUZGSHh3SUFwc0lsVVVGNWJ2UlFFM0xUd3RXRTBTQm1zMm1xZDRtSllYNkUyZ2Qyck96cytuZHV6Zng4ZEZta3lNbGcxUEo5ckhuajJMaGpFWnFYU281SjZucmJyRTV5TGExM1pyTm1ZTHRHL0NELzNyR3BwdEVmUGJaWjFSVzd1Zmd3Um9PSFRwRVEwT2t2dFR0ZHVQeGVIQzVqdEhTNGtVSWdjL253K2Z6NGZmN0pVVnBsNzFKUWdnNUNIQ2htbE5Ea0wyWmd1ek5yRi91dm50bTR1OSs5N3RMblU3bjFaSWs5ZUduOGYyeXVLWWF0dXh6TVdSQS9nL0hqVlcxckw2K2Z2M3MyWC84OE1rbm4yenRCTkJpRjM4UTFOb0RORDJvaFZsYUVOUkVNRWNOdmVSUUJOVDAxUVNwOU9pUlFVN09tZlR1M2ZzSGI3cnlYWTBmRGJDRlJsVlZGWldWbGRUVTFGQlhWMGREZzZiRzYzSWQ0L2h4TjBlUEhzWGo4U0NFQ0JiUXQrTHorZkg3L1NGbDNpQnpDMGlxS3FSZzVEUmtvb1pDUWdhZGVkb3V3T1hrNUppM2J2M1B4YW1wcVZmSnNuemhUNUR6NHgrQlFHRDdnUU0xNzF4OGNVbHBUYzFCSlNZdzBCbW82UUV0N0VjTFZROEFRaC94Yk12U1RKak5jZWdWYjYxV2ZkMW5wSkZ4UmtZR09UazVaR2RuLzZqUGhmSEg5b2V5czdPSmo0L0hZb2tuTGk0T3N6a3VIR1F3R2swRUFnRmtXVVlJb1ROVFd6RVlES0U3WVlpOWlVQWdnQ1JKb2J5M2tFa3F4d1lYWXN4VEgyQ3VyS3cwcDZmM2VBZllVbDcrV1ZGMmR2WlFrOGswNnFmTC84YzNXbHRiMSs3YnQrL2RvcUp6OSt2QVRNL1NmTzJBbXI4RFFBdm9VampDWm1jc1N6TWFqVUdXcG9HYXhXTFJ5WGduWUxNbGtwU1VoTk9wbHgzS29tZlBIRkpUVTMvMDU4VDRZL3hUcWFtcFdLM1dJTUJac0ZnaUFCY0lLQmdNQmxSVkRVZFF2VjVqQ056dytYeENsdVgyZkc4aWFKckdSazhEQkp0aW9JWGlUWHFBQTh5NXViMTNBbnZlZVdmalM4WEZGd3l5MlJLdWdsTUtTdjQwVGgvWFI4M3g0OGYvK2E5L2JkNDlldlRvaGc0QXJUMVE4M2ZHMERveU8wTXNyWDNUVSs5UDA0SUVTVWtPbkU0bktTbmQ2TjY5TzFsWlo5Q3JWMDhTRXhQL1Q1eWZVelpGbTF3dWp2bGxlblN4UlJjQUJ4UnFqeDdIRUo5QWFrSjByOHFXRmcvMWJoL0pqaVFTVE5MM01ma29MeS9ueXkrMWlPbWhRL1VjT0ZETjBhTk5xR29BdDF1TG1MYTBSSnJGdExhMjR2Zjc4UG0waGpFNjN4dWg1akZxUUtBS0lRZmJtWVpNMUk1OGNIcFQxUVNZSjB5WVlQblRueDYrSUNVbFpZalJhT3hReFhmUDV0Vlk4b2FSbDNieXpVTnF5NkJDZ1VHRlA2NkpXckZyTTJwR01ibmhZNkdpS0ZGbDVoaURFL0ZFSmNpcXF1cUszNk0rb2I2bUdwL1owU1lpMk5SUVE2TWIwdExUL25Yb1lNMjd2L25OYno1OS9mWFgvU2NKYVA1MkFDM1FBVU5UUS9YT3dRQUIwU3d0MHJ5NHJUOHRvcVBtZEdwQmd2VDBkTTQ0NHd4eWMzTy9VMzlhOWQ2dHVKMkY1R2VjSGhIMzcwMjJhUG5xVlR5MnI1blVSRE8xamMxTXZ2cEtwaGQrdDIwSEpFbWlkKy9lSkNRa0JQTjU0dkg3L1JnTVJsUTFFSlhrRzVrOEJscGJqUmdNUHZ4K3Y5QytMMHVLRWtCUkZLSDRBdmhWRlVrU0t0cE5OYXdXRXN4M013UW5hNGpCR1lPQTVnc0IyNG9WSzFwWHJGanhMMkRyeG8xdlAzWCsrZWRma0ppWU9GU1NwQ2hkbC9WUFAwVHlsQUZmQzlqMmJZTVZqVDh1WUZOZDVVeVordjlZc2YzdDhIc3I1OTNBeEFmWGsreXdoYWZ5STJzK1lueS9Sb3B0NXpKdjMxR0d0OGVKUFdVVXBCVmdIL2N3MjVmT2pBQlh4VmJHamJ1SldtTUdkcVVldWZCbXRqNTlEM2pydVdQQzFaK3Qvc1MzT2NuUS9OSEhuNVlmMFlGU2U0RG03d0RRbEJNQW1tZy9PR0RBYURUcHBZYUlpek1URjJkcHg1K21LZDUyN1pwTWFtb3FHUms5MlAzNll0elhMYUwzZHh3a3NDazFqSm0rbG0xckg4UjhHc3laVTJCc3JaUWVhSW1TTFhxeUtaVzNKaFRUZU9RSTNuaDdsR3pSNE5FM01EWFBUa3Vyai9nNDdTOGYyYitYaTUvL2d2L011b2J2UzA2d3FhbUp5c3I5bEphV1VsdGJTeUFRNE9qUlJvNGQwNElLc2ZsdVFXWGVVTlFVUlZIdysvMVM4L0VBZmpWQW5Ea1NQZFVGR0NRaGtLRk5rTUVRWkhER0dCWVh0WHo4OGQ2OG5qMTdYaGdmSHo5RVZaUjBWY2RDVGdvQVZHMlJqVEdNSlVoaDNJM1E1SU9NdEs4SkxGNm9xb1dNYkFpbEdubWFvSzRSMHJLSWtxNEoxYjVVVjBGeUJsaDFzMXp4UW5VZFpHVzN2YU9xd2M5UzBxTi9BN0J4MFRTV05BNWgxWnp4T21EN09RdHJMbUhyNDlOajFsUkYvMDZBclhMdGc0eGRzZ3QzMldFMlYveWJkQ09BbTBuOWUyS2Y5aEtMcHcwR29MUzByUGJNTTgvWS9OSkQwejc4eGYrK1VCM3lxWjRFb09rWEpjalFBdTJabkFTRlQ0TTF6VEZtcHdHRHdSUnNXbXlpSTlNeklTR0JSSnNWQ1lrdUtlbjB6TTRJQmdreXljN0s0cEZwQTNGTWZwTzdSbVJIeTFnQjdvWmFHcnhtc2pPUzI4eVZ4cnBxRkdzeUtmYm9tNnFucVo2NkppOXA2Um5SVWxING1ENm9ENE1YdnMvNGZqOThnNWZ2VGJZb0JHcWhZMmMweUh5ZmdXYUh3OEU1NXhUUzJ1ckZaREtoS0g3aTR5M0V4Vm1DUVFiTkVkdmNiTUpvYk1Ga011TDFhaXpPNS9QaGIvVnpwTUVnVkZXUkJBcXRyWXFRNUFCbWs0cUVKSHgrRGR4Q1FRWlpEZ2NaQWtKZ0FDbFl4U05DekswTnlQWHRXN2dIK0FSNCtvSUxMdWg3NExNUHo3LzdoWXJCZHc3UFNEK1ovemh0T095cWdPd0pzSHBlNVAxN3g4QWVHVlEzVkpmQzBGbXcrTFlUcisvcG1iQ3FDZXAzQWxZd0ZzRFdwZkR3ZEZpK0IzSlNvTFFNNWp3TkUwdkF2UWN5eHNISVhHaHd3WjQ2MkxJTGN1MVF0eHNHajRhTVF1MmY3OXNNVzVzZ0c5aitNa3krRjNvVlFQayttTDhDeHZZUHd5RXJWcnpPNkVVUGZ5dnpZTTNxTnhnNjRWRzhTNjlsN2ZZR3BwVWs0OTIzbnRVVldleVpmRW10eCtQWlVsSHh4VWZubkhQT2ZqMjc2Z0RRMmdPMjBIdWhvRklnREdpeXJFcENxR3FvSXpnSUpFa1lUU1lNc2lTOExTM0k1Z1M2V09QQTN5d2FqcnJJek03R2F0RkF6V0tKSXk0dTFKSGRTa0tDalhqSnplc3Z2NEUxN1F6aTFHWlNpc2Z4NUp6QjJCcDJNMjc4UFpUdnFjRlllUk1iRmxrWk1QNXU1azBkQmtvanN5ZGZ5OHY3VkxLc0hocHR4YXhkOVRmU0xEQnpSQ2JiUEgweG1nM1VWKzVsOU96bmVIQ3lWcy81NHR3Ym1QVnlKWVc5a3FuWVY4OFRXM2N3SUl5SlprYU51b2dsTDY5bGZMK0pVY2ZjVmJhZUNmYzh5N3psS3loeW5MYkFwaHYrWnBidCtJSnhsN2NOOW4xVjlTbGJqamw1V1ZjenV2MkQ5MW4wL240cWo3UXliOExQdm5mMVY0UEJRTStlUFltTHMrRHp0V0sxSmdTN1hNY0NuSm1XRmkySzJ0cmFxb0diMGNjWjJVYU8xdm1GSytDblM2SVdQUTBFQXFMRkZ3Qkp4V3hTaGFxcWtxSWdDUkNTRkk2aUJnQ0RKS0dBWkFoT2ZHUFFURFcyQTNUR0hUdDI3QUwyL09iS3JLY3UyL3RSNzV5Y25DS3IxWHBoWjdseFN6ZkEyb1d3dEoxeVRGc0JySndMVGRzaGV4b3N2TzNrVHY3MlBiQjNPNlJad1J2c0NqajlZYmduNkVxcFdnK0Q1OExFRGNFN2VoM2NzeE1LSFhEUGNGaTVFZTRiQXcvZkMyTWZoSGtUb0dvRDlOb1l2TWsxd01UYjRkbmRNREFkNnJaQzhWMHdla3R3LzN3VjdDeTFjM3RCMnl1aWRNMWZHRnJ4cWphUjB5NWc5Zko1bldlOHEzV3NYbGZGN0huOThkUmV5dU5yMXpGMTRNU3k4Zy8zN2ZCMGNaVDFqRFBvbVptcVkxbWRBWnFpWTJlS0hzd2tDVFhZbEZob2lndVNrR1JKR01PUlRvbFdiNnRRaFlGNHM0bjRPQk9OVGNkRmdIaU9IV3NoTGFzblNiYjRzRDh0MGozS2lzMm1xZDBlK2JTVWhMNGplZml1Y2ZUb2tVNTZlanBaV1ZtUW04dkdqZU9aTmZac0hKT2ZaK2JJN1BCaDJQejRiTlo0TDJMdnJubVlVVms0N1JJZVhyNk5CVk1IYWlSZ3dEaldQVHdaVC9WR2V2Vy9tMm5qZDVCanFXUEo0czBzMjN1UVFXbUE0c01YWTB3VUZoYXg2OEdkaEJSdndyY21WeDI3ZG4yRTIvZmZFQlU5QmRtaXZubG44ei9wWjdCMTl3Y3NlbWNQbDAwZFRNSVBRRk5UVWxKd09ydVFtSmlJelpZUUZVSFZKdEZ4M0c0elpyT0hsaGFONFlWTTAyYXpEOGx2eEdMeGkyQmdRZks0RlF5bWdEQWF0UjROQVVVVklDUlpEa2RSSlEza2hCeThVT1RnaFdBSW1xbmhzcTEyZ001WVdIak9SMEVtOTlKYmI2M3JmdDU1NStVN0hJNGlrOGwwSVhCU25UVUdCdlgvSEZsZ2FRUTNuRlIyK2JBeEdxZ0JZWG1ZdXIwd1l5R1UxMmdtWkwxdWd0dHlOVkFEeU1xQ1VPL25YYnRoOXRQYTgreUJrQkdjZVZYYm9OWUlxeGZCR2tEMWdhc1Vhb0VzQUZjRGpVWUhqbmJjakRtRHJtUHhuS0RFdDlGMlF0OU80L2ExbEtaZGR1ejhyb0VkOVVYRmU5K1o5TmN2REE5TlBoTHlrWGJDenRvRE5iM0NSclR2REZTQnBHcVBRb1I3YnNpeU1NZ0k3WWFvQ0pDMDNwRUdJeGFMUlJpTlJ0S05jUEJ3QS9iVWJMcDN0ZXNDQkJxbzJXelJxUnpaQ2VmeitxS1ZQTHN5Z1dIRFJwQmJkR0toeHkxYi9vWFowNS9aOS80KzZEYndVR2ZaQzJqQU5tU1FabzVic3daU2JDOWxkNVZDVGw0eVF3WWxjOXU0YXhnMzhqSUdEeC9Gb01Lc3FQWGFuUTVjOVVmYWJNODVZREoxZFpOUGQxTVVUbFcyS0NIQnhsa0pOczY2c29RMzVxNWcyNUZMdUx6ckQ1UDViTFZhNmRPbkQzYTduY1RFUkJJU2JGaXRWcXpXZUpxYU5BYm5kc2RoTmpkak5wdndlazE0dmEwY054c3g0Q2MrUHV4N0U3TGtCMk5BTXBzMUJ1ZHIxUmljTEdzcElvR0FRSktGaEFnSDdLVGdYVjNXbUp6azEvbmlEREVncHdjNlkxQkM2UUN3OFp4ekNrM0xsajJWazVOelptK2J6VlpvTkJyN1EvdDlsY09LTGwrejhNNFNHK1J5dzlpeE1HOGRqT3dIbnQyUU5xV2Q3Y1JzU3phQ1Q0bjRJdlNlWFhzR2pCa2RlVDFtUElRRmtPd083SW9MbHhkaTZaalZrVTVlM2dsMTlOMktvbnpnY3JsS0Z6NytWT1dSRDdmWDJNM0wxUmhtRm9qeGczVUVhSG93MC85RzFmdlBnbzBpVlVsQ0lCQ3lMS01HQWtLV0RhaEtxeERJSk5vVE1adU1IR3RzRUFhVEJsNG1rd21QNXdpeUxPSHpLOWdTYmNUSHRNUUw5ZmwwT3AxMDY1WkNldnFGYkx2bUpqNzc5Rk5XUGZzZ2YzM3RBOHJXek84OEtnd1VEcmljMGNPQ2dndWpyOGFla24xQ3FKano4dnVNM3I2RkxaczJNSEhJK1R5NDdtTW1GRWVrcXR4Tkxtek8wNk9EMWZja1c2VHkxYkVXdWlkcC9LeXh2bzREaXBrdWxoKytuQ016TXhPSHd4RUVPRnNZNE9MamoyS3hhT0NtQlJaYU1KbGFPQlpud29DUGhBUmpxR0tCaERnakxzVXZMSFlEaWk4Z3VZV0N5UndRSmxrbEVBamc5NnRJa2lEWVR5YlU2Rmx2cHNyQkM4UWdTVkk0NktBRHVmYkF6dmpSUjN1TjU1MTNYaW13RDFoN3hobG5HRzRiOVh4V3ErR3NISjh2cWJmSlpDcVFKS25YdDNyQUdxSGFDQ1ZGMms2dlczMVM2bVFNR2dqcjE4Q0lHYkIzUGRRb0VmWm1xd1k1RzRxRFFZMkdCaDJHbVhNcHptMmt0TnhEWWVHSm84TkNpQXBWaUUrT0hxNnIyRnl4NzhzYmI1eDBxS2FtUm8xaFplMnhzNDVZV3Zpem9OS0xFck1PVlFpaFQ5VVFXZ3RjU2NneUJGU0V3V0JBOGZ1RndXUkNWVm94bU9LeHhzY0pneFJBVVNFK1RtdDdKN3hOZkhWTTBLKzRtT3E5SDFEanl1YjhOSWN1NFZZZjlkVHFQYnQyNlVKcWp4NmNmZTZGRE8vbklHM2tjM2cxbDZqR29DMFc2aHNhMEx5WjJoZzg2Rkx1MlZwSnY5a1ROWmFyZW1ob2l0eHFObTNaeE15UlUvQlViMk9ucTRBRjJVYkFoOHV0VWpSd0tFVURoOUpVK2svS3ltdEJCMnhsWmFVVTlXL0xHTjNsbTVneGZ4WDNMRnBNdnYxMEJiWlRraTFLNVMvUHZjUzdMUmE2eGN0OGVhU1pjU012bzMvQ2FRSHVKQ1ltVWxCUVFGSlNrZzdnRXJCYUcybHFpc2RpY1JFWDEweGNuSm5HT0RNbTRjVm1NOUhhcWtWTjB6Sjl1Q3RNMUIvMkkxUkZ5R1lGZTRJaUJaTjdoZGNiUURhcVFoYXFGRXIwMVFVYVFpQVhabkhCdkRnLzBibHhoaGlBYS9QOHl5Ky9OUHp1cnlXZkFSVnhDM2tITUR6eXlKOXNoNW91VDA5MDljaHFiYldkYVJLbVhpRDNSbE1vK2ZvakMyNGZDQ1VESU1jR3lWa25ONG51ZWhoR2o0SDhwWkRiSDdLQ2RxT2NEQ3NXd2FTQld2REFWUXZtL3JEeDhZaFRldXk0SzFpNWZpTVRDa2RGaCtlRitNenI5WDV4L1BqeEw2dXJxdy8rODU4YkR0MS8vLzB0Z0RxaFg3bzRBWmgxQkdxeHo4Tkw4UHhFSmRJRzJ3TUppS1JySUVsQ1FzSm9rSVJmMGRLS2ZLMWVUT1k0TENaVkhHbHljN2pCQzBMQ2FKQXd4OFZqTmNQZWZYWGs5UnRJYWxjN0dZTXY0dTJOTy9Iazl5YTdXM0pRbGNOSnQyN2R3cVZSbVptWmJIcmlMaTVlK0I4SzhyS28zTHVIMis3N0IzcjRIenZ0TjR5ZGRnTWJGOXNaUFBsL1dEQmpCSU9ueldYRXp1c29LTHFJL0N3SEZlV1Z6Rmo4SnRPSGFtUy9hZnZMREJyNkdrMlZwVXg2K0JseUxBQjFqQysrRkhkR1BuWWFxSFRuc21aa1lSUjVXYnZtMzR5ZE82L051ZmZXbC9QTU15OHg4Y0h2RDlpKzExclJaazh6Ujd3S1hSTVRTVERKUHdpSTFkZlg0L1A1eWNqbzBmNCtOamRUWFYwZFR1ZzljaVJVYStvS3l5QzF0R2krdDlaV2J4RGN0SHBUajl1SEloU0VxcVdIaElycVE5VUx3UnBVZ2pXb29VSjdRa0NuZTVTRGdDZnJscENNa2lHbUNmU0puaHRpZncvSXExYTltcHlYbDljdE9ibGJxczJXa0c0eW1ib2JESVlNU1pJeTJ4cDliVWRERFNoV1NQdWFFU0JGQVdvaGF5aVVsMGZzWmxXQm1ocXdKNE1qWWt4N2hSQUhXZy92T2podytCKy9XckgyNmErVXh2ckRaV1ZsUjY2L2Z2eFJJaHA2NGZTSkRzQ3NJNGJXNGZOUThibnU5L29ValhDcVJ1Z3gyQjB0cU5Zc2laQmN2VzZKbEVNWlpBUVMxZ1FibHJoUW5hYzVHUEVNQlFnU3d1M3d1blJ4aEZsYUtEaWdiNFhuODdpb3JXL1VPanBaVHo2THpOTlVUNE5MSVMwOUhYUHc3alJ6ZUNiWk05OW5ZcUdDWW5HU0hKWHVvZEpRVzRzYk0xbnBLZEdwSS92V01uRDZPclp2WG9MMU5DQXJQN29pK0c4S2JLRlJWMWNYTEtRL1JFUERZUm9iRzRNYWJ4R2xFSStuL1lvRnY5OGZ6bjNUVnk0RUFvb1VDS2hoZ0FzRTFDQ3dxYWhxR05UUU1icU9RQzRNVURHcUk1MHRjc3h6T2VaNWFCdlNvNDh1c1BYdDI5ZWVscFptVDBwS3NsdXRWcnZaYkxZYmpVYTd3V0N3eTdKc2t5VEpKa2xTZ2lSSjhVRWdEQWtBR0hUZXRSQXcrR3EzNHB2NUxONXplNHVXYmErSjV2UUp3cjN3bDZvN0VBZ2NWeFRGMWRyYTZ2SjRQTWVibXBwY1gzMzExZkc5ZXo5MjMzMzMzUjRkZUlrWUlCT2RiKy8wNGdBQUM4eEpSRUZVZ0prZXlEcGlhbEZMSjBBV0JXWjZJQU9FTEV0QzY1SW1ZVERJT2tDVE1SaU1zWlVEUkJKdDIxWVFhTW0ybWlKSFlxSTl6TktTazdzRnU3RnJPV3JmNVFnQjI0eWhYMjg3KzdhdHBjRlJURW4rNlNFUC94T3dkWmJONHZkejRNQ0JzSUNsSm9OMGxHUEhYTzJLV0VhcmhmaUNBS2UwQTNBUkZxZDF1bGRENVZyRU1Mak9RSzVkc05PVmQ4bWRnSnFoSFdDTFhmVGI2V3lobmNmWTU5Rk8ycmJQOVkrZExiRkFGcnQweE5MYVBBOUp2N2NIWWljQ3M5RHptSjRhVWV5c0xhQ0ZRQzFTdU42UkdHUlNraDJIb3d2SnlWMXh5RzcrODJFbERtY1hESWJvL3ZUOWg0MW5RTzYzMjExOTM4N05XSHNOSk10cC9xKyt6bjhDdHBNWXg0NGQ0K0RCZzlUVjFYSDRjSWk5UlhUZW1wczlPdk0wVXJVUXFUbU5CcmhBSUJCbHBxcXFHZ1Z5UXFpU3FvcXdxVXE0NGJPUWhFQVBkRkk3SUJRRFVNS2dWVU8weTlJNkF6ZXBBNENUMndHMXpnQ3VNM0NMQlRUYUFiSE9HSnJhQVZ1TGVxMmwya2lkZ2xqUVo2YnJOeHYybTRYQUxHaHFTa2hTTkpqcFFFMkVGR1AwZ0dZMFJoaGFxSHFnYlY2YVRWZm5HZkdsOWVqUmc2U2tKSDRhMzNsVTlQL2VTRXBLSWlrcGlhNWR1MUpiK3hYMTlZZUNPbTlIZ3lWWng0TUY5YzNoZ25xdlYxK1NwV2R2SVJNMUVLVWVvZ2xjQmdnRVZGUlZGVUdRRTZxcVNxRitNMXEvQnFKWVhQQUNqbVYwT2dDU1pFbUtCVHdoQndHeU0wRHJETnkrRG5QN09zRDJkY3pPZGdFdUNFaWRBaGpSemJMRG9LcjNtWVZlQndFdGlwbHBRQ2FIMmo2S0VGT0wxSFlhd3dyT0VaWVdxUjZ3UktWd2hGaGFFbDI2ZENFNU9abVVsRlRTMDd2L241QVgrZ25ZZnVCUld2b0p1Ymxua1pxYXlvRUROZFRWZmNYaHc0YzVjdVJJbEpCbHlEelZLNGJvYTA0MTM1c0djb0ZBR09BSUJBSjZpU1JKeCtCRWhNbUowS09JTVZYUlIxY2piRnhJN1lOU0ZOaEZmYWNkYzFjNkFiQjF4TnBpVFZMUkNiaDFCbkJxZTY5MW9OUVpzNHY5VGRTMjlLOWpURTFrV2RZRkEvU0FaaUNrdWhFTGFBWkRoS0hwaTliYlU3YlZ6TTZJRUdUWHJsMkRMSzA3bVprL0tWcjlCR3cvd01qTXpDQTFOWVhhMnRxd1NtOWI4N1E1R0Z3SUFad3Z4di9XaHIyRkFneEJrRk03QkRrZHdCSE41cVJZb0l0NjNzNW5iWlpnSGwwbnpFeEwwdm91Zld4QjFuV3lUSzZqQmIxcEdmT2E5bGhaaUpucC9HZnRnRm5JN0RSMnd0TDBmalJ6VUJNd1hpY0NHVzEyaHRSdDA5UFRNWnZOUDExZ1B3eXdCZGl4ZHgvL3JQaUtZNHBNd1ZrOXVlSGNNekFEcmMxTnZMcnJNL2JXSGNOZ3NUR3l1SkFMdThja3dpdk5QUFh2anptejk5a016dmp2OVIyWXpXYXlzN05KVFUxdFk1N3FvNmZSL2pjOWcrczRlcW9vQ29xL2xaWldDWXRaaWdJNVhiQ2hQWkFqMGlZVktmWlJWVlVrV1E0SjJNUXlPenBoWXJyWFVralc2MlRCckNQR0Z2V2VDTm5aSjJaeWRBSmdrZDhMSVZSVllERElVVXhNNXk5RG42SVJDMmFod0lDK0NiZWVvWFVXN1l6NDBTeHQvR2loYUdlczJSbmJVS1c5VWJZYnNvcWczWmF3N2lvbVRIbVl4U3VXNE5SZDFiWGxlNUJUOGtsemZEdUE2U2xkeGVDNXU5ajU4dnh2dko0aGMzZXgvUlRXY3pMLzZSVDAySTZ6ZW5jdFJZWFpwSnBWbHIyOWtjK09YOGFEZzdMNXNyS0tqNXRsTHUyYmkvdklRWDc5OTVVc3ZtTWlBN3BFTnZQVzVxMHNlZTlMcnJMMStLOEd0dENJajQrblo4OGMwdEpTcWF1cm83NitQbWllNnYxdklZQnJhU09MMUZIMHRMbmhDSWNiQStSa3BlalRRNFRPRDZjSE9ZUlFoUlp3VUFrR0hzSkFGN3pPSlNFRWtpd2pSY0NPazJGZE1jQjNJakE3MlhLU05xYXBpUHc0Q3FSQzdLb2p0cWNIeFBEejRQOHpHQXpoOTJNQ0FFUWVZOEZNMWpYZDFnT2FJZGlZdTZOb1o3U3NVRWlGUXdPMGlCK3RhOWV1cEtTa2tKYVdGcFdQZHFJeGJRUXNySUQrN1JUTnJWc3lCOHVBOFZHZ0JyRGt2cC9qbVB4V1ZCSDhON3FocHhWdys2UnZudEtoZWwxVVZSOCtwZCtlekgvNitzQW1PM2hnOHVYaGwxMDhoN2wxejVjd0tKdmN2a1U4MERmMFNUYTdQL21VTGZzYkdkQkZPeEN1dXYwOFYydmp1ak90ZUg1azFEY2hJWUdlUFh2U3ZYdjNjUFQwU08xblBQL0NlL1F0S2NIZWNoelhvVW8yZlZKTG43NjVKTFMyQkFNTXNRek95NEV2dnFEcFdETkNFUnc1Y2dSVk1wR1M0b1JBZ0lEaTVmRGhZMWl0Um5ITTVVSkZ4cDdrUUJaK3llVnlvd1MwV0lJcHppSk1SZ2toQkFHL0QxOGdJQUJKbGcxSWhNQk9SVkZVTFNDaHFxQ3hscE1GclRZQXBrWFlwVENsQzZia0k3Y3ZjaWpDM3dtQnJQYjlZRjRZWVlBSzdtMlExV21BSklRcWhOQitMMGt5UnFNaEJIQUVGRDhDQ1VuV29wUWhVQXY0VzFFeG9yUzJFaEJndGRteHhwbkNRTlpPMmdadGZXbnRNelN0NzBBUTBJeng3UG5FU3U0Wk5uWnNTNlJiVGhJM1QzU1EzazN6b3gydFNPTnZ6MWh4eVRCK09nd3RCRHl3Y0JHTXZ4UFNMT0NyaDBlZWhSbDNRZVVtV0xrWnF0encrRnhJTThPSVNUQXdONFFTalN4KzRsL2N0V1ZwK09BMmxXOWp3Yk52c2JtMEhzdnlQOU8wM1VIZTRHdVpPRlJyWmx5NWN5MWJtNUpKcWQzQ2k1cytJWGZJejdsdjhuQXFkMjNnNlpmZm9ycXVrZlRjODVseCszVFM3UnBNckh2NlliWlZITWVhZFg3VWlhell2b2J0alhhOGV6YXd0ZUlJSTZmOGxyRWx1U2R4MWZoWXZXUWVhM1orU2IrUk4zSGIyQkprb0w1OE8wdWZYVVY1OVNHY0diMlpkdnVkNUtWWlQvaWZWRTg5eXhZdlptdnBBYjV4K3YrbjlRM2twcmVUUytNL1RzVVJsVDZwUVZhbStuaG83VTZtWDNrK2NUL09qbCtBVmx5Zms1UERPZWVjUS82NWd6akgwY0NMRzh2SXlrcGp4L28xbURQeXlVeExwVnUzRkpLVHUrSjBPbkU0dW9UTHVleDJPNms5TWtoMUppS1pFMGhMU3lNMXBTc0pWbzBCeE1jWmNMdVBjK1JvTTNhSEU3dk5ndEVjUjV4UkZySXBUdGlUa29RdHdTeDhMYzFnREdhMFd6UTVKczAyTXdtVHlTU01ScU13R2lRUkJBaGhNQnFFMXNSQlVnMEdneXJMY250TElMaUVHdmRHTDVyMm5DSkprcVo0b2RWVmhsL0hMQUZKa2dLeUpBVmtXUTRteVdycmxtVXB2QjJCVUlXR3VtcHd1NnJCWUZBbHRJNU5KcE5SU0toQ0NhakNhRFFLazhra1RDYXpNRWlJZ0NwMGlyTnhpSUJDYTJ1cnNDUWtDcHRaRm03WGNSRVhyL20vSW83OTRIR09qOGRxdFhDOHNaNURodzVSVjFkSGJXMHRCdzhlNUtzamJ1eDJPMGxKU1RnY1hZSitzcTUwNjVaQ2Ftb3E2Y25kZVc5TEJtVU5aM0Q5OVRrMDdzeGxXMTArNTV4ekRrcEZEdGZlYWFWa0xFd2FDWGVOZ1ozMWdCV3lmRERwSGswc2ROWVVjS1dCWFliMFhqQjhPRGpOVUR4RWU1Nmx1K1I4NVp2WUtmZG5RSHFFcDFpU3N4ZzIvQXF5VTJ6MDZuY3h3NGRmUWI5ZUVWbS95cDF2Y3QrMFg3Q3F3c0w0aWRkalZWd0FWRldVMDJ2QWxkeCsxeDFrdWQ5ajJKUjVZY0dDdkg2REtja0s4TWl5TjJLQTdRMW1UTHNidFdBb0U0Wm1NbjNzelZTZmhFUlIwKzVWYkhEMVl2cVVhMWs5K3pvV2I2Z0VvS2F5QW1kK0NYZmVkUWNsS1ljWU51SVczQ2Y2VDZxTEdTTXVabDJObldtMzMvSE5nZ2ZWK3ovaHNVOENQRG5qN0ZpaXlUTnJOaEozOWdDdTdLR1ZKTzdjOFI1Tm1VVU02bWJtdy84RHprdUx4VUoyZGpaM0xYNkJUeSsvbU1jZi80REd6SkhNdnU0UzNDNTlpb2luVFltVzFacUlUYmlvOVBqSnlNaUk5c0VadFJtVGNWWnZFZzFDWjZaYU1NZjdhUFkwbzBqeHlIS0xVREVRRjJkR21NM0VXVlFhV3IyUzBSeEhuQ0Zvc2lxQ0ZxOWZ4TnNTa0lXZ3RhVVpSWURSYUNSaXdZcVFPUm9tV2tFaUZrVytoTkRpcHFvL0FMS01qQ29GQW1Bd0dKR2xqazFRaldSSitIMCtKSU1Sb3h4NUQwQUVBZ1FrQ1lzbExzcWtOSnROQkJTRmdDb3dHbVI4QVVGY25CbEprcEVzRnBRV0Y2NVdTVmdzY1dGenMvVzRoQ2t1aVdTbkExbEs0SGhsTFhKY1BQRkdmYldBUGpBZzAycExKSTVvYzlTYzJBV25zMHVVRDAzZlNNVk9FaWFqZzkvKzBVbS8xRzUwUDU3S3F6VkdMQlpZdWhBbXpvSVJKZHIvbnpvVVZxeUY0aWt3Wmhac0hnRmp4a0JUQ213TXlwcWxaR3VMM1F6OVN0cWFvclhsVlZoeU1xTmtYU3pPREVwS01saWZZc1dSWDB4SlNWdXp6WmgzQlkvUHV4MFpHQjU4YjhqNEdkUlc3R1Z2ZVEwWmhlZFM5K3hiTkFMSlFFNWhNU20rTXVSbGJVM0lncEUzTW0zVUVLQ1lnYlArek41YVRTbTUwNUUraVBuM2pzY0J6SnB4RGZlOHVJcmJoODJrMy9DSlpGZnZZMDlaSmVaZTUyQ3BmSUFLTnhSMThwOWN1MWV6dkRhUG1zMHpzUVAvSDNpeGdKbVFPNXd1QUFBQUFFbEZUa1N1UW1DQyJdLFsxLCJkZXRhaWxzLWNvbnRhaW5lciJdLFsxLCJkZXRhaWxzIl0sWyJocmVmIiwiaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvYXBpX2RvY3MvcHl0aG9uL3RmL2RlYnVnZ2luZy9leHBlcmltZW50YWwvZW5hYmxlX2R1bXBfZGVidWdfaW5mbyIsInRhcmdldCIsImJsYW5rIiwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciJdLFsiaHJlZiIsImh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2FwaV9kb2NzL3B5dGhvbi90Zi9kZWJ1Z2dpbmciLCJ0YXJnZXQiLCJibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwiZGl2IiwxKSxQZigyLCJEZWJ1Z2dlciBWMiBpcyBpbmFjdGl2ZSBiZWNhdXNlIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiIpLEN1KCksX3UoMywiZGl2IiksUGYoNCwiVG8gdXNlIHRoZSBkZWJ1Z2dlciwiKSxDdSgpLF91KDUsImRpdiIpLF91KDYsIm9sIiksX3UoNywibGkiKSxQZig4LCIgQWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgcHJvZ3JhbTogIiksX3UoOSwiZGl2IiwyKSxfdSgxMCwic3BhbiIpLFBmKDExLCJ0Zi5kZWJ1Z2dpbmcuZXhwZXJpbWVudGFsLmVuYWJsZV9kdW1wX2RlYnVnX2luZm8oIiksQ3UoKSxfdSgxMiwic3BhbiIsMyksUGYoMTMsImxvZ2RpciIpLEN1KCksUGYoMTQsIiwgIiksX3UoMTUsInNwYW4iLDMpLFBmKDE2LCd0ZW5zb3JfZGVidWdfbW9kZT0iRlVMTF9IRUFMVEgiJyksQ3UoKSxQZigxNywiLCAiKSxfdSgxOCwic3BhbiIsMyksUGYoMTksImNpcmN1bGFyX2J1ZmZlcl9zaXplPS0xIiksQ3UoKSxfdSgyMCwic3BhbiIpLFBmKDIxLCIpIiksQ3UoKSxDdSgpLEN1KCksX3UoMjIsImxpIiksUGYoMjMsIlJlLXJ1biB0aGUgcHJvZ3JhbS4iKSxDdSgpLEN1KCksQ3UoKSxfdSgyNCwiZGl2Iiw0KSxfdSgyNSwiZGl2Iiw1KSxfdSgyNiwiZGl2Iiw2KSxNdSgyNywiaW1nIiw3KSxDdSgpLF91KDI4LCJkaXYiLDgpLFBmKDI5LCJBdXRvLWFsZXJ0cyBmb3IgcHJvYmxlbXMgZm91bmQiKSxDdSgpLEN1KCksX3UoMzAsImRpdiIsNSksX3UoMzEsImRpdiIsNiksTXUoMzIsImltZyIsOSksQ3UoKSxfdSgzMywiZGl2Iiw4KSxQZigzNCwiIEludGVncmF0ZWQgZGVidWdnaW5nIHRvIHRyYWNlIHByb2JsZW1zIHRvIHRoZWlyIGNhdXNlcyAiKSxDdSgpLEN1KCksX3UoMzUsImRpdiIsNSksX3UoMzYsImRpdiIsNiksTXUoMzcsImltZyIsMTApLEN1KCksX3UoMzgsImRpdiIsOCksUGYoMzksIkxpbmsgbG9nIHRvIGNvZGUiKSxDdSgpLEN1KCksQ3UoKSxfdSg0MCwiZGl2IiwxMSksX3UoNDEsImRpdiIsMTIpLFBmKDQyLCIgVGhlIGxvZyBkaXJlY3RvcnkgbXVzdCBjb250YWluIFRlbnNvckZsb3cgRGVidWdnZXIgKFYyKSBkYXRhLiB0Zi5kZWJ1Z2dpbmcuZXhwZXJpbWVudGFsLmVuYWJsZV9kdW1wX2RlYnVnX2luZm8oKSB3aWxsIGNvbGxlY3QgdGVuc29yIGRhdGEsIGdyYXBoIHN0cnVjdHVyZXMsIHRoZSBhc3NvY2lhdGVkIHN0YWNrIHRyYWNlcywgYW5kIHNvdXJjZSBjb2RlIHRvIHRoZSBzcGVjaWZpY2VkIGRpcmVjdG9yeSBsb2dkaXIgYXMgdGhlIGluc3RydW1lbnRlZCBUZW5zb3JGbG93IHByb2dyYW0gZXhlY3V0ZXMuICIpLEN1KCksX3UoNDMsImRpdiIsMTIpLF91KDQ0LCJkaXYiKSxQZig0NSwiIFNlZSAiKSxfdSg0NiwiYSIsMTMpLFBmKDQ3LCIgZG9jdW1lbnRhdGlvbiAiKSxDdSgpLFBmKDQ4LCIgb2YgdGhlIFB5dGhvbiBBUEkgb2YgRGVidWdnZXIgVjIuICIpLEN1KCksX3UoNDksImRpdiIpLFBmKDUwLCIgU2VlICIpLF91KDUxLCJhIiwxNCksUGYoNTIsIiBoZXJlICIpLEN1KCksUGYoNTMsIiBmb3Igb3RoZXIgVGVuc29yRmxvdyBkZWJ1Z2dpbmcgQVBJcy4gIiksQ3UoKSxDdSgpLEN1KCksQ3UoKSl9LHN0eWxlczpbIi5hcmdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgY29sb3I6IGxpZ2h0Ymx1ZTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBtYXJnaW46IDJweDtcbn1cblxuLmNvZGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgbWFyZ2luOiAxMHB4O1xufVxuXG4uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxNXB4O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwYWRkaW5nOiA1MHB4O1xufVxuXG4uZGV0YWlscy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMTBweCA2MHB4O1xuICB3aWR0aDogNTAlO1xufVxuXG4uZXhoaWJpdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDEwcHggNjBweDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgd2lkdGg6IDMxMHB4O1xufVxuXG4uZXhoaWJpdFtfbmdjb250ZW50LSVDT01QJV0gICAuZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2lkdGg6IDMxMHB4O1xufVxuXG4uZXhoaWJpdFtfbmdjb250ZW50LSVDT01QJV0gICAuc2NyZWVuc2hvdFtfbmdjb250ZW50LSVDT01QJV0gICBjYW52YXNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50aXRsZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXNpemU6IDEzNSU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOWCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJpbmFjdGl2ZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2luYWN0aXZlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2luYWN0aXZlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCxudWxsKTtjbGFzcyB6WHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXR9fXpYLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6WCkoZnUoaVMpKX0selguybVjbXA9c28oe3R5cGU6elgsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWluYWN0aXZlIl1dLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJk11KDAsImluYWN0aXZlLWNvbXBvbmVudCIpfSxkaXJlY3RpdmVzOltOWF0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6WCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIsdGVtcGxhdGU6IiA8aW5hY3RpdmUtY29tcG9uZW50PjwvaW5hY3RpdmUtY29tcG9uZW50PiAifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IElYPV9rKCJbRGVidWdnZXJdIERlYnVnZ2VyIExvYWRlZCIpLEhYPV9rKCJbRGVidWdnZXJdIERlYnVnZ2VyIFVubG9hZGVkIiksRlg9X2soIltEZWJ1Z2dlcl0gQSBOZXcgRGVidWdnZXIgRGF0YSBQb2xsaW5nIEV2ZW50IEJlZ2lucyIpLExYPV9rKCJbRGVidWdnZXJdIERlYnVnZ2VyIFJ1bnMgUmVxdWVzdGVkIiksQlg9X2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgUnVucyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxWWD1faygiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBSdW5zIFJlcXVlc3QgRmFpbGVkIiksVVg9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIGFuZCBCcmVha2Rvd24gb2YgQWxlcnRzIFJlcXVlc3RlZCIpLGpYPV9rKCJbRGVidWdnZXJdIE51bWJlciBhbmQgQnJlYWtkb3duIG9mIEFsZXJ0cyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxXWD1faygiW0RlYnVnZ2VyXSBBbGVydHMgRGF0YSBvZiBhbiBBbGVydFR5cGUgSXMgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksR1g9X2soIltEZWJ1Z2dlcl0gQWxlcnQgVHlwZSBGb2N1cyBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksWVg9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIG9mIFRvcC1MZXZlbCBFeGVjdXRpb25zIFJlcXVlc3RlZCIpLHFYPV9rKCJbRGVidWdnZXJdIE51bWJlciBvZiBUb3AtTGV2ZWwgRXhlY3V0aW9ucyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxaWD1faygiW0RlYnVnZ2VyXSBFeGVjdXRpb25EaWdlc3RzIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFhYPV9rKCJbRGVidWdnZXJdIEV4ZWN1dGlvbkRpZ2VzdHMgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksS1g9X2soIltEZWJ1Z2dlcl0gU2Nyb2xsIExlZnR3YXJkIG9uIHRoZSBFeGVjdXRpb24gVGltZWxpbmUiKSxKWD1faygiW0RlYnVnZ2VyXSBTY3JvbGwgUmlnaHR3YXJkIG9uIHRoZSBFeGVjdXRpb24gVGltZWxpbmUiKSxRWD1faygiW0RlYnVnZ2VyXSBTY3JvbGwgdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSB0byBHaXZlbiBJbmRleCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLCRYPV9rKCJbRGVidWdnZXJdIEV4ZWN1dGlvbiBEYXRhIE9iamVjdHMgQmVpbmcgRm9jdXNlZCBPbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHRLPV9rKCJbRGVidWdnZXJdIEV4ZWN1dGlvbiBEYXRhIE9iamVjdHMgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZUs9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIG9mIEludHJhLUdyYXBoIEV4ZWN1dGlvbnMgUmVxdWVzdGVkIiksbks9X2soIltEZWJ1Z2dlcl0gTnVtYmVyIG9mIEludHJhLUdyYXBoIEV4ZWN1dGlvbnMgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksb0s9X2soIltEZWJ1Z2dlcl0gSW50cmEtR3JhcGggRXhlY3V0aW9uIERhdGEgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksaUs9X2soIltEZWJ1Z2dlcl0gSW50cmEtR3JhcGggRXhlY3V0aW9uIERhdGEgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYUs9X2soIltEZWJ1Z2dlcl0gU2Nyb2xsIEludHJhLUdyYXBoIEV4ZWN1dGlvbiBMaXN0IHRvIEdpdmVuIEluZGV4Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkscks9X2soIltEZWJ1Z2dlcl0gR3JhcGggRXhlY3V0aW9uIGlzIEZvY3VzZWQgT24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxzSz1faygiW0RlYnVnZ2VyXSBHcmFwaCBPcCBJcyBGb2N1c2VkIE9uIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbEs9X2soIltEZWJ1Z2dlcl0gR3JhcGggT3AgSW5mbyBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxjSz1faygiW0RlYnVnZ2VyXSBHcmFwaCBPcCBJbmZvIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGRLPV9rKCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIExpc3QgUmVxdWVzdGVkLiIpLHBLPV9rKCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIExpc3QgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbUs9X2soIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTGluZSBJcyBGb2N1c2VkIG9uIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksdUs9X2soIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZks9X2soIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZ0s9X2soIltEZWJ1Z2dlcl0gQSBTZXQgb2YgU3RhY2sgRnJhbWVzIEhhdmUgQmVlbiBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxoSz0iZGVidWdnZXIiO3ZhciBiSyx5SyxfSztmdW5jdGlvbiBDSyh0KXtpZihudWxsPT09dC5jb2RlTG9jYXRpb25Gb2N1c1R5cGUpcmV0dXJuIG51bGw7bGV0IGU9W107aWYodC5jb2RlTG9jYXRpb25Gb2N1c1R5cGU9PT1fSy5FWEVDVVRJT04pe2NvbnN0e2ZvY3VzSW5kZXg6bixleGVjdXRpb25EYXRhOm99PXQuZXhlY3V0aW9ucztpZihudWxsPT09bnx8dm9pZCAwPT09b1tuXSlyZXR1cm4gbnVsbDtlPW9bbl0uc3RhY2tfZnJhbWVfaWRzfWVsc2V7aWYobnVsbD09PXQuZ3JhcGhzLmZvY3VzZWRPcClyZXR1cm4gbnVsbDtjb25zdHtncmFwaElkOm4sb3BOYW1lOm99PXQuZ3JhcGhzLmZvY3VzZWRPcDtpZih2b2lkIDA9PT10LmdyYXBocy5vcHNbbl18fCF0LmdyYXBocy5vcHNbbl0uaGFzKG8pKXJldHVybiBudWxsO2U9dC5ncmFwaHMub3BzW25dLmdldChvKS5zdGFja19mcmFtZV9pZHN9Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXtpZihudWxsPT10LnN0YWNrRnJhbWVzW29dKXJldHVybiBudWxsO24ucHVzaCh0LnN0YWNrRnJhbWVzW29dKX1yZXR1cm4gbn1mdW5jdGlvbiBNSyh0LGUpe3JldHVybiB0LmZpbmRJbmRleCgodD0+dC5ob3N0X25hbWU9PT1lLmhvc3RfbmFtZSYmdC5maWxlX3BhdGg9PT1lLmZpbGVfcGF0aCkpfWZ1bmN0aW9uIHZLKHQsZSxuKXtpZihlPj1uKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYmVnaW4gdG8gYmUgbGVzcyB0aGFuIGVuZCwgYnV0IGdvdCBiZWdpbj0ke2V9LCBlbmQ9JHtufWApO3JldHVybiB0LmZpbmRJbmRleCgodD0+dC5iZWdpbj09PWUmJnQuZW5kPT09bikpfWZ1bmN0aW9uIHhLKHQpe2NvbnN0IGU9dC5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWM7aWYoIXQuc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUpcmV0dXJuIGU7Y29uc3Qgbj1DSyh0KTtpZihudWxsPT09bilyZXR1cm4gZTtjb25zdCBvPShmdW5jdGlvbiBpKHQsZSl7aWYobnVsbD09PWUpcmV0dXJuIG51bGw7Zm9yKGxldCBuPXQubGVuZ3RoLTE7bj49MDstLW4pe2NvbnN0IG89dFtuXSx7aG9zdF9uYW1lOmksZmlsZV9wYXRoOmF9PW87aWYoaT09PWUuaG9zdF9uYW1lJiZhPT09ZS5maWxlX3BhdGgpcmV0dXJuIG99cmV0dXJuIG51bGx9KShuLGUpO3JldHVybiBudWxsPT09bz9lOm99IShmdW5jdGlvbih0KXt0W3QuVU5TUEVDSUZJRUQ9MF09IlVOU1BFQ0lGSUVEIix0W3QuTk9fVEVOU09SPTFdPSJOT19URU5TT1IiLHRbdC5DVVJUX0hFQUxUSD0yXT0iQ1VSVF9IRUFMVEgiLHRbdC5DT05DSVNFX0hFQUxUSD0zXT0iQ09OQ0lTRV9IRUFMVEgiLHRbdC5GVUxMX0hFQUxUSD00XT0iRlVMTF9IRUFMVEgiLHRbdC5TSEFQRT01XT0iU0hBUEUiLHRbdC5GVUxMX05VTUVSSUNTPTZdPSJGVUxMX05VTUVSSUNTIix0W3QuRlVMTF9URU5TT1I9N109IkZVTExfVEVOU09SIix0W3QuUkVEVUNFX0lORl9OQU5fVEhSRUVfU0xPVFM9OF09IlJFRFVDRV9JTkZfTkFOX1RIUkVFX1NMT1RTIn0pKGJLfHwoYks9e30pKSwoZnVuY3Rpb24odCl7dC5GVU5DVElPTl9SRUNPTVBJTEVfQUxFUlQ9IkZ1bmN0aW9uUmVjb21waWxlc0FsZXJ0Iix0LklORl9OQU5fQUxFUlQ9IkluZk5hbkFsZXJ0Iix0LlRFTlNPUl9TSEFQRV9BTEVSVD0iVGVuc29yU2hhcGVBbGVydCJ9KSh5S3x8KHlLPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5FWEVDVVRJT049MF09IkVYRUNVVElPTiIsdFt0LkdSQVBIX09QX0NSRUFUSU9OPTFdPSJHUkFQSF9PUF9DUkVBVElPTiJ9KShfS3x8KF9LPXt9KSk7Y29uc3QgT0s9VlMoe3J1bnM6e30scnVuc0xvYWRlZDp7c3RhdGU6R0UuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sYWN0aXZlUnVuSWQ6bnVsbCxsYXN0RGF0YVBvbGxPbnNldFRpbWVNczotMSxsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczoxLGFsZXJ0czp7YWxlcnRzTG9hZGVkOntzdGF0ZTpHRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxudW1BbGVydHM6MCxhbGVydHNCcmVha2Rvd246e30sYWxlcnRzOnt9LGV4ZWN1dGlvbkluZGljZXM6e30sZ3JhcGhFeGVjdXRpb25JbmRpY2VzOnt9LGZvY3VzVHlwZTpudWxsfSxleGVjdXRpb25zOihmdW5jdGlvbiBQSygpe3JldHVybntudW1FeGVjdXRpb25zTG9hZGVkOntzdGF0ZTpHRS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxleGVjdXRpb25EaWdlc3RzTG9hZGVkOntsb2FkaW5nUmFuZ2VzOltdLG51bUV4ZWN1dGlvbnM6MCxwYWdlTG9hZGVkU2l6ZXM6e319LGRpc3BsYXlDb3VudDo1MCxwYWdlU2l6ZToxMDAsc2Nyb2xsQmVnaW5JbmRleDowLGZvY3VzSW5kZXg6bnVsbCxleGVjdXRpb25EaWdlc3RzOnt9LGV4ZWN1dGlvbkRhdGE6e319fSkoKSxncmFwaEV4ZWN1dGlvbnM6KGZ1bmN0aW9uIHdLKCl7cmV0dXJue251bUV4ZWN1dGlvbnNMb2FkZWQ6e3N0YXRlOkdFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6e2xvYWRpbmdSYW5nZXM6W10sbnVtRXhlY3V0aW9uczowLHBhZ2VMb2FkZWRTaXplczp7fX0sZGlzcGxheUNvdW50OjEwMCxwYWdlU2l6ZToyMDAsc2Nyb2xsQmVnaW5JbmRleDowLGZvY3VzSW5kZXg6bnVsbCxncmFwaEV4ZWN1dGlvbkRpZ2VzdHM6e30sZ3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzOltdLGdyYXBoRXhlY3V0aW9uRGF0YVBhZ2VMb2FkZWRTaXplczp7fSxncmFwaEV4ZWN1dGlvbkRhdGE6e319fSkoKSxncmFwaHM6e29wczp7fSxsb2FkaW5nT3BzOnt9LGZvY3VzZWRPcDpudWxsfSxzdGFja0ZyYW1lczp7fSxjb2RlTG9jYXRpb25Gb2N1c1R5cGU6bnVsbCxzdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZTohMSxzb3VyY2VDb2RlOntzb3VyY2VGaWxlTGlzdExvYWRlZDp7c3RhdGU6R0UuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sc291cmNlRmlsZUxpc3Q6W10sZmlsZUNvbnRlbnRzOltdLGZvY3VzTGluZVNwZWM6bnVsbH19LEJTKExYLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1bnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucnVuc0xvYWRlZCkse3N0YXRlOkdFLkxPQURJTkd9KX0pKSksQlMoVlgsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZGVkKSx7c3RhdGU6R0UuRkFJTEVEfSl9KSkpLEJTKEJYLCgodCx7cnVuczplfSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKGUpLG89bi5sZW5ndGg+MCYmbnVsbD09PXQuYWN0aXZlUnVuSWQ7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bz9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMscnVuczplLHJ1bnNMb2FkZWQ6e3N0YXRlOkdFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0sYWN0aXZlUnVuSWQ6bi5sZW5ndGg+MD9uWzBdOm51bGx9KX0pKSxCUyhGWCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0RGF0YVBvbGxPbnNldFRpbWVNczpEYXRlLm5vdygpfSkpKSxCUyhVWCwodD0+bnVsbD09PXQuYWN0aXZlUnVuSWQ/dDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMpLHthbGVydHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmFsZXJ0c0xvYWRlZCkse3N0YXRlOkdFLkxPQURJTkd9KX0pfSkpKSxCUyhqWCwoKHQse251bUFsZXJ0czplLGFsZXJ0c0JyZWFrZG93bjpufSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBvPWU+dC5hbGVydHMubnVtQWxlcnRzO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOm8/RGF0ZS5ub3coKTp0Lmxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zLGFsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMpLHthbGVydHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmFsZXJ0c0xvYWRlZCkse3N0YXRlOkdFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLG51bUFsZXJ0czplLGFsZXJ0c0JyZWFrZG93bjpufSl9KX0pKSxCUyhXWCwoKHQse251bUFsZXJ0czplLGFsZXJ0c0JyZWFrZG93bjpuLGFsZXJ0VHlwZTpvLGJlZ2luOmksYWxlcnRzOmF9KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IHI9e30scz10LmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzW29dP3QuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb10uc2xpY2UoKTpbXSxsPXQuYWxlcnRzLmdyYXBoRXhlY3V0aW9uSW5kaWNlc1tvXT90LmFsZXJ0cy5ncmFwaEV4ZWN1dGlvbkluZGljZXNbb10uc2xpY2UoKTpbXTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoOysrdCl7Y29uc3QgZT1pK3Qsbj1hW3RdO2lmKHJbZV09bixuLmFsZXJ0X3R5cGU9PT15Sy5JTkZfTkFOX0FMRVJUKXtjb25zdCB0PW47c1tlXT10LmV4ZWN1dGlvbl9pbmRleCxudWxsIT09dC5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgmJihsW2VdPXQuZ3JhcGhfZXhlY3V0aW9uX3RyYWNlX2luZGV4KX19dm9pZCAwIT09dC5hbGVydHMuYWxlcnRzW29dJiZPYmplY3QuYXNzaWduKHIsdC5hbGVydHMuYWxlcnRzW29dKTtsZXQgYz10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleCxkPXQuZ3JhcGhFeGVjdXRpb25zLmZvY3VzSW5kZXg7aWYobz09PXlLLklORl9OQU5fQUxFUlQmJjA9PT1pKXtjb25zdCBlPWFbMF07Yz1NYXRoLm1heCgwLGUuZXhlY3V0aW9uX2luZGV4LU1hdGguZmxvb3IodC5leGVjdXRpb25zLmRpc3BsYXlDb3VudC8yKSksbnVsbCE9PWUuZ3JhcGhfZXhlY3V0aW9uX3RyYWNlX2luZGV4JiYoZD1lLmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDpjfSksZ3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse2ZvY3VzSW5kZXg6ZH0pLGFsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMpLHthbGVydHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmFsZXJ0c0xvYWRlZCkse3N0YXRlOkdFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLG51bUFsZXJ0czplLGFsZXJ0c0JyZWFrZG93bjpuLGFsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzKSx7W29dOnJ9KSxleGVjdXRpb25JbmRpY2VzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzKSx7W29dOnN9KSxncmFwaEV4ZWN1dGlvbkluZGljZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmdyYXBoRXhlY3V0aW9uSW5kaWNlcykse1tvXTpsfSl9KX0pfSkpLEJTKEdYLCgodCx7YWxlcnRUeXBlOmV9KT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthbGVydHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzKSx7Zm9jdXNUeXBlOnQuYWxlcnRzLmZvY3VzVHlwZT09PWU/bnVsbDplfSl9KSxvPW4uYWxlcnRzLmZvY3VzVHlwZTtpZihudWxsIT09byl7Y29uc3QgdD1uLmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzW29dfHxbXTt2b2lkIDAhPT10WzBdJiYobi5leGVjdXRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4Ok1hdGgubWF4KDAsTnVtYmVyKHRbMF0pLU1hdGguZmxvb3Iobi5leGVjdXRpb25zLmRpc3BsYXlDb3VudC8yKSl9KSl9cmV0dXJuIG59KSksQlMoWVgsKHQ9Pm51bGw9PT10LmFjdGl2ZVJ1bklkP3Q6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtudW1FeGVjdXRpb25zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMubnVtRXhlY3V0aW9uc0xvYWRlZCkse3N0YXRlOkdFLkxPQURJTkd9KX0pfSkpKSxCUyhxWCwoKHQse251bUV4ZWN1dGlvbnM6ZX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgbj1lPnQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMsbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOm4/RGF0ZS5ub3coKTp0Lmxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zLGV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5udW1FeGVjdXRpb25zTG9hZGVkKSx7c3RhdGU6R0UuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLHtudW1FeGVjdXRpb25zOmV9KX0pfSk7cmV0dXJuIGU+MCYmbnVsbD09PXQuZXhlY3V0aW9ucy5mb2N1c0luZGV4JiYoby5leGVjdXRpb25zLmZvY3VzSW5kZXg9MCksb30pKSxCUyhaWCwoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPVsuLi50LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5sb2FkaW5nUmFuZ2VzXTstMT09PXZLKG4sZS5iZWdpbixlLmVuZCkmJm4ucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse2xvYWRpbmdSYW5nZXM6bn0pfSl9KX0pKSxCUyhYWCwoKHQsZSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPVsuLi50LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5sb2FkaW5nUmFuZ2VzXSxvPXZLKG4sZS5iZWdpbixlLmVuZCk7LTEhPT1vJiZuLnNwbGljZShvLDEpO2NvbnN0IGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse251bUV4ZWN1dGlvbnM6ZS5udW1fZGlnZXN0cyxsb2FkaW5nUmFuZ2VzOm59KSxleGVjdXRpb25EaWdlc3RzOk9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHMpfSl9KTtmb3IobGV0IHQ9ZS5iZWdpbjt0PGUuZW5kOysrdClpLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c1t0XT1lLmV4ZWN1dGlvbl9kaWdlc3RzW3QtZS5iZWdpbl07aWYoZS5lbmQ+ZS5iZWdpbil7Y29uc3Qgbj1lLmJlZ2luL3QuZXhlY3V0aW9ucy5wYWdlU2l6ZTtpLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5wYWdlTG9hZGVkU2l6ZXM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLnBhZ2VMb2FkZWRTaXplcykse1tuXTplLmVuZC1lLmJlZ2lufSl9cmV0dXJuIGl9KSksQlMoS1gsKHQ9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtsZXQgZT10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleDtyZXR1cm4gZT4wJiZlLS0sT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OmV9KX0pfSkpLEJTKEpYLCh0PT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7bGV0IGU9dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXg7cmV0dXJuIGUrdC5leGVjdXRpb25zLmRpc3BsYXlDb3VudCsxPD10LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zJiZlKyssT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OmV9KX0pfSkpLEJTKFFYLCgodCxlKT0+e2lmKGUuaW5kZXg8MHx8IU51bWJlci5pc0ludGVnZXIoZS5pbmRleCkpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBuZWdhdGl2ZSBvciBub24taW50ZWdlciBleGVjdXRpb24gaW5kZXggKCR7ZS5pbmRleH0pYCk7Y29uc3R7ZGlzcGxheUNvdW50Om59PXQuZXhlY3V0aW9ucyx7bnVtRXhlY3V0aW9uczpvfT10LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDtpZihlLmluZGV4Pk1hdGgubWF4KDAsby1uKSl0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHQgdG8gc2Nyb2xsIHRvIGV4ZWN1dGlvbiBpbmRleCAoJHtlLmluZGV4fSksIHdoaWNoIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGluZGV4IChudW1FeGVjdXRpb25zPSR7b307IGRpc3BsYXlDb3VudD0ke259KWApO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6ZS5pbmRleH0pfSl9KSksQlMoJFgsKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2ZvY3VzSW5kZXg6dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgrZS5kaXNwbGF5SW5kZXh9KSxjb2RlTG9jYXRpb25Gb2N1c1R5cGU6X0suRVhFQ1VUSU9OLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIG4uc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPXhLKG4pLG59KSksQlModEssKCh0LGUpPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRhdGE6T2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGF0YSl9KX0pO2ZvcihsZXQgdD1lLmJlZ2luO3Q8ZS5lbmQ7Kyt0KW4uZXhlY3V0aW9ucy5leGVjdXRpb25EYXRhW3RdPWUuZXhlY3V0aW9uc1t0LWUuYmVnaW5dO3JldHVybiBufSkpLEJTKGVLLCh0PT5udWxsPT09dC5hY3RpdmVSdW5JZD90Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpHRS5MT0FESU5HfSl9KX0pKSksQlMobkssKCh0LHtudW1HcmFwaEV4ZWN1dGlvbnM6ZX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgbj1lPnQuZ3JhcGhFeGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucyxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bj9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsZ3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpHRS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bnVtRXhlY3V0aW9uczplfSl9KX0pO3JldHVybiBlPjAmJm51bGw9PT10LmdyYXBoRXhlY3V0aW9ucy5mb2N1c0luZGV4JiYoby5ncmFwaEV4ZWN1dGlvbnMuZm9jdXNJbmRleD0wKSxvfSkpLEJTKG9LLCgodCx7cGFnZUluZGV4OmV9KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49dC5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzLnNsaWNlKCk7cmV0dXJuLTE9PT1uLmluZGV4T2YoZSkmJm4ucHVzaChlKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6bn0pfSl9KSksQlMoaUssKCh0LGUpPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3R7cGFnZVNpemU6bn09dC5ncmFwaEV4ZWN1dGlvbnMsbz10LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXMuc2xpY2UoKSxpPU9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzKSxhPU9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhKTtmb3IobGV0IHQ9ZS5iZWdpbjt0PGUuZW5kOysrdCl7Y29uc3Qgcj1NYXRoLmZsb29yKHQvbik7LTEhPT1vLmluZGV4T2YocikmJm8uc3BsaWNlKG8uaW5kZXhPZihyKSwxKSx2b2lkIDA9PT1pW3JdJiYoaVtyXT0wKSx2b2lkIDA9PT1hW3RdJiZpW3JdKyssYVt0XT1lLmdyYXBoX2V4ZWN1dGlvbnNbdC1lLmJlZ2luXX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7Z3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzOm8sZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzOmksZ3JhcGhFeGVjdXRpb25EYXRhOmF9KX0pfSkpLEJTKGFLLCgodCxlKT0+e2lmKGUuaW5kZXg8MHx8IU51bWJlci5pc0ludGVnZXIoZS5pbmRleCkpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBuZWdhdGl2ZSBvciBub24taW50ZWdlciBncmFwaC1leGVjdXRpb24gaW5kZXggKCR7ZS5pbmRleH0pYCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6ZS5pbmRleH0pfSl9KSksQlMockssKCh0LGUpPT5rSyh0LGUuZ3JhcGhfaWQsZS5vcF9uYW1lLGUuaW5kZXgpKSksQlMoc0ssKCh0LGUpPT5rSyh0LGUuZ3JhcGhfaWQsZS5vcF9uYW1lKSkpLEJTKGxLLCgodCxlKT0+e2NvbnN0e2dyYXBoX2lkOm4sb3BfbmFtZTpvfT1lLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzKSx7bG9hZGluZ09wczpPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzLmxvYWRpbmdPcHMpfSl9KTtyZXR1cm4gdm9pZCAwPT09aS5ncmFwaHMubG9hZGluZ09wc1tuXSYmKGkuZ3JhcGhzLmxvYWRpbmdPcHNbbl09bmV3IE1hcCksaS5ncmFwaHMubG9hZGluZ09wc1tuXS5oYXMobyl8fGkuZ3JhcGhzLmxvYWRpbmdPcHNbbl0uc2V0KG8sR0UuTE9BRElORyksaX0pKSxCUyhjSywoKHQsZSk9Pntjb25zdHtncmFwaE9wSW5mb1Jlc3BvbnNlOm59PWUse2dyYXBoX2lkczpvfT1uLGk9b1tvLmxlbmd0aC0xXSxhPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocykse29wczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMub3BzKSx7W2ldOm5ldyBNYXAodC5ncmFwaHMub3BzW2ldKX0pLGxvYWRpbmdPcHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzLmxvYWRpbmdPcHMpLHtbaV06bmV3IE1hcCh0LmdyYXBocy5sb2FkaW5nT3BzW2ldKX0pfSl9KTtmb3IoY29uc3QgdCBvZiBuLmlucHV0cyl0LmRhdGEmJmEuZ3JhcGhzLm9wc1tpXS5zZXQodC5vcF9uYW1lLHQuZGF0YSk7Zm9yKGxldCB0PTA7dDxuLmNvbnN1bWVycy5sZW5ndGg7Kyt0KWZvcihjb25zdCBlIG9mIG4uY29uc3VtZXJzW3RdKWUuZGF0YSYmYS5ncmFwaHMub3BzW2ldLnNldChlLm9wX25hbWUsZS5kYXRhKTtyZXR1cm4gYS5ncmFwaHMub3BzW2ldLnNldChuLm9wX25hbWUsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtpbnB1dHM6bi5pbnB1dHMubWFwKCh0PT4oe29wX25hbWU6dC5vcF9uYW1lLG91dHB1dF9zbG90OnQub3V0cHV0X3Nsb3R9KSkpLGNvbnN1bWVyczpuLmNvbnN1bWVycy5tYXAoKHQ9PnQubWFwKCh0PT4oe29wX25hbWU6dC5vcF9uYW1lLGlucHV0X3Nsb3Q6dC5pbnB1dF9zbG90fSkpKSkpfSkpLGEuZ3JhcGhzLmxvYWRpbmdPcHNbaV0uc2V0KG4ub3BfbmFtZSxHRS5MT0FERUQpLGF9KSksQlMoZEssKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7c291cmNlRmlsZUxpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdExvYWRlZCkse3N0YXRlOkdFLkxPQURJTkd9KX0pfSkpKSxCUyhwSywoKHQsZSk9Pnt2YXIgbjtjb25zdCBvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7c291cmNlRmlsZUxpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdExvYWRlZCkse3N0YXRlOkdFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLHNvdXJjZUZpbGVMaXN0OmUuc291cmNlRmlsZXMsZmlsZUNvbnRlbnRzOnQuc291cmNlQ29kZS5maWxlQ29udGVudHMuc2xpY2UoKX0pfSksaT1lLnNvdXJjZUZpbGVzLmxlbmd0aCx7ZmlsZUNvbnRlbnRzOmF9PW8uc291cmNlQ29kZTtmb3IobGV0IGU9MDtlPGk7KytlKWFbZV09bnVsbCE9PShuPXQuc291cmNlQ29kZS5maWxlQ29udGVudHNbZV0pJiZ2b2lkIDAhPT1uP246e2xvYWRTdGF0ZTpHRS5OT1RfTE9BREVELGxpbmVzOm51bGx9O3JldHVybiBvfSkpLEJTKG1LLCgodCxlKT0+e2NvbnN0IG49Q0sodCksbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSkse2ZvY3VzTGluZVNwZWM6ZS5zdGFja0ZyYW1lfSl9KTtyZXR1cm4gbnVsbCE9PW4mJihvLnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlPShmdW5jdGlvbiBpKHQsZSl7bGV0IG49LTEsbz0tMTtpZih0LmZvckVhY2goKCh7ZmlsZV9wYXRoOnQsbGluZW5vOml9LGEpPT57dD09PWUuZmlsZV9wYXRoJiYobz1hLGk9PT1lLmxpbmVubyYmKG49YSkpfSkpLC0xPT09bil0aHJvdyBuZXcgRXJyb3IoYFN0YWNrIGZyYW1lICR7SlNPTi5zdHJpbmdpZnkoZSl9IGlzIG5vdCBmb3VuZC5gKTtyZXR1cm4gbj09PW99KShuLGUuc3RhY2tGcmFtZSkpLG99KSksQlModUssKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSkse2ZpbGVDb250ZW50czp0LnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzLnNsaWNlKCl9KX0pLG89TUsobi5zb3VyY2VDb2RlLnNvdXJjZUZpbGVMaXN0LGUpO2lmKCEobz49MCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0aGUgZm9sbG93aW5nIGZpbGUgaW4gZmlsZSBsaXN0OiBob3N0X25hbWU9IiR7ZS5ob3N0X25hbWV9IiwgZmlsZV9wYXRoPSIke2UuZmlsZV9wYXRofSJgKTtyZXR1cm4gbi5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zcGxpY2UobywxLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzW29dKSx7bG9hZFN0YXRlOkdFLkxPQURJTkd9KSksbn0pKSxCUyhmSywoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7ZmlsZUNvbnRlbnRzOnQuc291cmNlQ29kZS5maWxlQ29udGVudHMuc2xpY2UoKX0pfSksbz1NSyhuLnNvdXJjZUNvZGUuc291cmNlRmlsZUxpc3QsZSk7aWYoIShvPj0wKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRoZSBmb2xsb3dpbmcgZmlsZSBpbiBmaWxlIGxpc3Q6IGhvc3RfbmFtZT0iJHtlLmhvc3RfbmFtZX0iLCBmaWxlX3BhdGg9IiR7ZS5maWxlX3BhdGh9ImApO3JldHVybiBuLnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzLnNwbGljZShvLDEse2xvYWRTdGF0ZTpHRS5MT0FERUQsbGluZXM6ZS5saW5lc30pLG59KSksQlMoZ0ssKCh0LGUpPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3N0YWNrRnJhbWVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnN0YWNrRnJhbWVzKSxlLnN0YWNrRnJhbWVzKSxzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKX0pO3JldHVybiBuLnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYz14SyhuKSxufSkpKTtmdW5jdGlvbiBrSyh0LGUsbixvKXtjb25zdCBpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocykse2ZvY3VzZWRPcDp7Z3JhcGhJZDplLG9wTmFtZTpufX0pLGNvZGVMb2NhdGlvbkZvY3VzVHlwZTpfSy5HUkFQSF9PUF9DUkVBVElPTixzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKX0pO3JldHVybiBpLnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYz14SyhpKSx2b2lkIDAhPT1vJiYoaS5ncmFwaEV4ZWN1dGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7Zm9jdXNJbmRleDpvfSkpLGl9ZnVuY3Rpb24gU0sodCxlKXtyZXR1cm4gT0sodCxlKX1jb25zdCBESz1fUyhoSyksUks9YlMoREssKHQ9PnQucnVucykpLEVLPWJTKERLLCh0PT50LnJ1bnNMb2FkZWQpKSxBSz1iUyhESywodD0+dC5hY3RpdmVSdW5JZCkpLFRLPWJTKERLLCh0PT50Lmxhc3REYXRhUG9sbE9uc2V0VGltZU1zLXQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMpKSxOSz1iUyhESywodD0+dC5hbGVydHMpKSx6Sz1iUyhOSywodD0+dC5hbGVydHNMb2FkZWQpKSxJSz1iUyhOSywodD0+dC5udW1BbGVydHMpKSxISz1iUyhOSywodD0+dC5mb2N1c1R5cGUpKSxGSz1iUyhOSywodD0+bnVsbD09PXQuZm9jdXNUeXBlPzA6dC5hbGVydHNCcmVha2Rvd25bdC5mb2N1c1R5cGVdfHwwKSksTEs9YlMoTkssKHQ9Pm51bGw9PT10LmZvY3VzVHlwZXx8dm9pZCAwPT09dC5hbGVydHNbdC5mb2N1c1R5cGVdP251bGw6dC5hbGVydHNbdC5mb2N1c1R5cGVdKSksQks9YlMoTkssKHQ9PnQuYWxlcnRzQnJlYWtkb3duKSksVks9YlMoREssKHQ9PnQuZXhlY3V0aW9ucykpLFVLPWJTKFZLLCh0PT50Lm51bUV4ZWN1dGlvbnNMb2FkZWQpKSxqSz1iUyhWSywodD0+dC5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSksV0s9YlMoVkssKHQ9PnQuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zKSksR0s9YlMoVkssKHQ9PnQuc2Nyb2xsQmVnaW5JbmRleCkpLFlLPWJTKFZLLCh0PT50LnBhZ2VTaXplKSkscUs9YlMoVkssKHQ9PnQuZGlzcGxheUNvdW50KSksWks9YlMoVkssKHQ9Pntjb25zdCBlPVtdO2ZvcihsZXQgbj10LnNjcm9sbEJlZ2luSW5kZXg7bjx0LnNjcm9sbEJlZ2luSW5kZXgrdC5kaXNwbGF5Q291bnQ7KytuKWUucHVzaChuIGluIHQuZXhlY3V0aW9uRGlnZXN0cz90LmV4ZWN1dGlvbkRpZ2VzdHNbbl06bnVsbCk7cmV0dXJuIGV9KSksWEs9YlMoREssKHQ9PnQuZ3JhcGhFeGVjdXRpb25zKSksS0s9YlMoWEssKHQ9PnQubnVtRXhlY3V0aW9uc0xvYWRlZCkpLEpLPWJTKERLLCh0PT50LmdyYXBoRXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMpKSxRSz1iUyhYSywodD0+dC5zY3JvbGxCZWdpbkluZGV4KSksJEs9YlMoWEssKHQ9PnQuZGlzcGxheUNvdW50KSksdEo9YlMoWEssKHQ9PnQucGFnZVNpemUpKSxlSj1iUyhYSywodD0+dC5ncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXMpKSxuSj1iUyhYSywodD0+dC5ncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXMpKSxvSj1iUyhYSywodD0+dC5ncmFwaEV4ZWN1dGlvbkRhdGEpKSxpSj1iUyhYSywodD0+dC5mb2N1c0luZGV4KSksYUo9YlMoREssKHQ9PnQuZ3JhcGhzKSkscko9YlMoYUosKHQ9Pntjb25zdHtmb2N1c2VkT3A6ZSxvcHM6bn09dDtyZXR1cm4gbnVsbD09PWV8fHZvaWQgMD09PW5bZS5ncmFwaElkXT9udWxsOm5bZS5ncmFwaElkXS5nZXQoZS5vcE5hbWUpfHxudWxsfSkpLHNKPWJTKGFKLCh0PT57Y29uc3R7Zm9jdXNlZE9wOmUsb3BzOm59PXQ7aWYobnVsbCE9PWUmJnZvaWQgMCE9PW5bZS5ncmFwaElkXSYmbltlLmdyYXBoSWRdLmhhcyhlLm9wTmFtZSkpe2NvbnN0IHQ9bltlLmdyYXBoSWRdLHtpbnB1dHM6b309dC5nZXQoZS5vcE5hbWUpO3JldHVybiBvLm1hcCgoZT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSxlKTtyZXR1cm4gdC5oYXMoZS5vcF9uYW1lKSYmKG4uZGF0YT10LmdldChlLm9wX25hbWUpKSxufSkpfXJldHVybiBudWxsfSkpLGxKPWJTKGlKLG9KLHNKLCgodCxlLG4pPT57aWYobnVsbD09PXR8fG51bGw9PT1uKXJldHVybiBudWxsO2NvbnN0IG89bi5tYXAoKHQ9PiExKSksaT1bXTtpZigwPT09bi5sZW5ndGgpcmV0dXJuIGk7Y29uc3QgYT1lW3RdLmdyYXBoX2lkLHI9TWF0aC5tYXgoMCx0LTIwMCk7Zm9yKGxldCBzPXQtMTtzPj1yOy0tcylpZih2b2lkIDAhPT1lW3NdKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGgmJihvW3RdfHxlW3NdLmdyYXBoX2lkIT09YXx8ZVtzXS5vcF9uYW1lIT09blt0XS5vcF9uYW1lfHxlW3NdLm91dHB1dF9zbG90IT09blt0XS5vdXRwdXRfc2xvdHx8KGkucHVzaChzKSxvW3RdPSEwLGkubGVuZ3RoIT09bi5sZW5ndGgpKTsrK3QpO3JldHVybiBpfSkpLGNKPWJTKGFKLCh0PT57Y29uc3R7Zm9jdXNlZE9wOmUsb3BzOm59PXQ7aWYobnVsbCE9PWUmJnZvaWQgMCE9PW5bZS5ncmFwaElkXSYmbltlLmdyYXBoSWRdLmhhcyhlLm9wTmFtZSkpe2NvbnN0IHQ9bltlLmdyYXBoSWRdLHtjb25zdW1lcnM6b309dC5nZXQoZS5vcE5hbWUpO3JldHVybiBvLm1hcCgoZT0+ZS5tYXAoKGU9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sZSk7cmV0dXJuIHQuaGFzKGUub3BfbmFtZSkmJihuLmRhdGE9dC5nZXQoZS5vcF9uYW1lKSksbn0pKSkpfXJldHVybiBudWxsfSkpLGRKPWJTKERLLCh0PT57Y29uc3QgZT10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleCxuPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4K3QuZXhlY3V0aW9ucy5kaXNwbGF5Q291bnQsbz1uZXcgQXJyYXkobi1lKS5maWxsKG51bGwpLGk9dC5hbGVydHMuZm9jdXNUeXBlO2lmKG51bGw9PT1pKXJldHVybiBvO2NvbnN0IGE9dC5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1tpXTtpZih2b2lkIDA9PT1hKXJldHVybiBvO2ZvcihsZXQgaT1lO2k8bjsrK2kpYS5pbmNsdWRlcyhpKSYmKG9baS1lXT10LmFsZXJ0cy5mb2N1c1R5cGUpO3JldHVybiBvfSkpLHBKPWJTKERLLCh0PT50LmV4ZWN1dGlvbnMpKSxtSj1iUyhwSiwodD0+dC5mb2N1c0luZGV4KSksdUo9YlMocEosKHQ9PntpZihudWxsPT09dC5mb2N1c0luZGV4KXJldHVybiBudWxsO2NvbnN0e2ZvY3VzSW5kZXg6ZSxzY3JvbGxCZWdpbkluZGV4Om4sZGlzcGxheUNvdW50Om99PXQ7cmV0dXJuIGU8bnx8ZT49bitvP251bGw6ZS1ufSkpLGZKPWJTKHBKLCh0PT50LmV4ZWN1dGlvbkRhdGEpKSxnSj1iUyhESywodD0+dC5ncmFwaHMubG9hZGluZ09wcykpLGhKPWJTKERLLCh0PT50LnN0YWNrRnJhbWVzKSksYko9YlMocEosKHQ9Pntjb25zdHtmb2N1c0luZGV4OmUsZXhlY3V0aW9uRGF0YTpufT10O3JldHVybiBudWxsPT09ZXx8dm9pZCAwPT09bltlXT9udWxsOm5bZV19KSkseUo9YlMoREssbUosYkosckosKCh0LGUsbixvKT0+e2NvbnN0e2NvZGVMb2NhdGlvbkZvY3VzVHlwZTppfT10O3JldHVybiBudWxsPT09aT9udWxsOmk9PT1fSy5FWEVDVVRJT04/bnVsbD09PWV8fG51bGw9PT1uP251bGw6e2NvZGVMb2NhdGlvblR5cGU6X0suRVhFQ1VUSU9OLG9wVHlwZTpuLm9wX3R5cGUsZXhlY3V0aW9uSW5kZXg6ZX06bnVsbD09PW8/bnVsbDp7Y29kZUxvY2F0aW9uVHlwZTpfSy5HUkFQSF9PUF9DUkVBVElPTixvcFR5cGU6by5vcF90eXBlLG9wTmFtZTpvLm9wX25hbWV9fSkpLF9KPWJTKERLLENLKSxDSj1iUyhESywodD0+dC5zb3VyY2VDb2RlKSksTUo9YlMoQ0osKHQ9PnQuc291cmNlRmlsZUxpc3RMb2FkZWQpKTtiUyhDSiwodD0+dC5zb3VyY2VGaWxlTGlzdCkpO2NvbnN0IHZKPWJTKENKLCh0PT57Y29uc3R7c291cmNlRmlsZUxpc3Q6ZSxmb2N1c0xpbmVTcGVjOm59PXQ7cmV0dXJuIG51bGw9PT1uPy0xOk1LKGUsbil9KSkseEo9YlMoQ0osdkosKCh0LGUpPT4tMT09PWU/bnVsbDp0LmZpbGVDb250ZW50c1tlXXx8bnVsbCkpLE9KPWJTKERLLCh0PT50LnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYykpLFBKPWJTKERLLCh0PT50LnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlKSksd0o9ZnVuY3Rpb24odCl7cmV0dXJuW3RdfTtmdW5jdGlvbiBrSih0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsNyksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe2NvbnN0IG49UGkodCkuJGltcGxpY2l0O3JldHVybiBOdSgpLm9uVG9nZ2xlRm9jdXNUeXBlLmVtaXQobi50eXBlKX0pKSxfdSgxLCJkaXYiLDgpLFBmKDIpLEN1KCksX3UoMywiZGl2Iiw5KSxQZig0KSxDdSgpLE11KDUsImRpdiIpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoKTtodSgibmdDbGFzcyIsaXkoNCx3Six0LnR5cGU9PT1uLmZvY3VzVHlwZT8iZm9jdXMiOiIiKSksRGMoMiksd2YodC5kaXNwbGF5TmFtZSksRGMoMiksU2YoIiAiLHQuZGlzcGxheVN5bWJvbCwiOiAiLHQuY291bnQsIiAiKX19Y2xhc3MgU0p7Y29uc3RydWN0b3IoKXt0aGlzLm51bUFsZXJ0cz0wLHRoaXMuYWxlcnRzQnJlYWtkb3duPVtdLHRoaXMuZm9jdXNUeXBlPW51bGwsdGhpcy5vblRvZ2dsZUZvY3VzVHlwZT1uZXcgU3l9fVNKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTSil9LFNKLsm1Y21wPXNvKHt0eXBlOlNKLHNlbGVjdG9yczpbWyJhbGVydHMtY29tcG9uZW50Il1dLGlucHV0czp7bnVtQWxlcnRzOiJudW1BbGVydHMiLGFsZXJ0c0JyZWFrZG93bjoiYWxlcnRzQnJlYWtkb3duIixmb2N1c1R5cGU6ImZvY3VzVHlwZSJ9LG91dHB1dHM6e29uVG9nZ2xlRm9jdXNUeXBlOiJvblRvZ2dsZUZvY3VzVHlwZSJ9LGRlY2xzOjEwLHZhcnM6NSxjb25zdHM6W1sxLCJhbGVydHMtY29udGFpbmVyIl0sWzEsImRlYnVnZ2luZy10aXRsZSJdLFsxLCJudW0tYWxlcnRzLWNvbnRhaW5lciJdLFsxLCJudW0tYWxlcnRzLWxhYmVsIl0sWzEsIm51bS1hbGVydHMtdmFsdWUiLDMsIm5nQ2xhc3MiXSxbMSwiYWxlcnRzLWJyZWFrZG93bi1jb250YWluZXIiXSxbImNsYXNzIiwiYWxlcnRzLWJyZWFrZG93bi10eXBlIiwzLCJuZ0NsYXNzIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJhbGVydHMtYnJlYWtkb3duLXR5cGUiLDMsIm5nQ2xhc3MiLCJjbGljayJdLFsxLCJhbGVydC10eXBlLW5hbWUiXSxbMSwiYWxlcnQtdHlwZS1jb3VudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJkaXYiLDEpLFBmKDIsIkRlYnVnZ2luZyIpLEN1KCksX3UoMywiZGl2IiwyKSxfdSg0LCJkaXYiLDMpLFBmKDUsIkFsZXJ0cyIpLEN1KCksX3UoNiwiZGl2Iiw0KSxQZig3KSxDdSgpLEN1KCksX3UoOCwiZGl2Iiw1KSxIbSg5LGtKLDYsNiwiZGl2Iiw2KSxDdSgpLEN1KCkpLDImZSYmKERjKDYpLGh1KCJuZ0NsYXNzIixpeSgzLHdKLG4ubnVtQWxlcnRzPjA/Im5vbi16ZXJvIjoiIikpLERjKDEpLGtmKCIgIixuLm51bUFsZXJ0cywiICIpLERjKDIpLGh1KCJuZ0Zvck9mIixuLmFsZXJ0c0JyZWFrZG93bikpfSxkaXJlY3RpdmVzOltDdix4dl0sc3R5bGVzOlsiLmFsZXJ0cy1icmVha2Rvd24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgcGFkZGluZzogMTBweCAxMHB4IDEwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmFsZXJ0cy1icmVha2Rvd24tdHlwZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBib3JkZXItcmFkaXVzOiAwIDEwcHggMTBweCAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDZweCAwIDZweCA1MHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uYWxlcnRzLWJyZWFrZG93bi10eXBlLmZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVlZTA7XG59XG5cbi5hbGVydHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbn1cblxuLmFsZXJ0LXR5cGUtY291bnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogM3B4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAyMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uYWxlcnQtdHlwZS1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogM3B4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGVidWdnaW5nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLm51bS1hbGVydHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCAzMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5udW0tYWxlcnRzLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxM3B4O1xufVxuXG4ubnVtLWFsZXJ0cy12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDI0cHg7XG59XG5cbi5udW0tYWxlcnRzLXZhbHVlLm5vbi16ZXJvW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmI3ODA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTSixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJhbGVydHMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9hbGVydHNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYWxlcnRzX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7bnVtQWxlcnRzOlt7dHlwZTpSX31dLGFsZXJ0c0JyZWFrZG93bjpbe3R5cGU6Ul99XSxmb2N1c1R5cGU6W3t0eXBlOlJffV0sb25Ub2dnbGVGb2N1c1R5cGU6W3t0eXBlOkVffV19KTtjb25zdCBESj17W3lLLkZVTkNUSU9OX1JFQ09NUElMRV9BTEVSVF06e2Rpc3BsYXlOYW1lOiJGdW5jdGlvbiByZWNvbXBpbGVzIixkaXNwbGF5U3ltYm9sOiJDIn0sW3lLLklORl9OQU5fQUxFUlRdOntkaXNwbGF5TmFtZToiTmFOL+KIniIsZGlzcGxheVN5bWJvbDoi4oieIn0sW3lLLlRFTlNPUl9TSEFQRV9BTEVSVF06e2Rpc3BsYXlOYW1lOiJUZW5zb3Igc2hhcGUiLGRpc3BsYXlTeW1ib2w6IuKWoCJ9fTtjbGFzcyBSSntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5udW1BbGVydHMkPXRoaXMuc3RvcmUucGlwZShyUyhJSykpLHRoaXMuYWxlcnRzQnJlYWtkb3duJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoQkssKHQ9Pntjb25zdCBlPU9iamVjdC5rZXlzKHQpO3JldHVybiBlLnNvcnQoKSxlLm1hcCgoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt0eXBlOmV9LERKW2VdKSx7Y291bnQ6dFtlXX0pKSl9KSkpKSx0aGlzLmZvY3VzVHlwZSQ9dGhpcy5zdG9yZS5waXBlKHJTKEhLKSl9b25Ub2dnbGVGb2N1c1R5cGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChHWCh7YWxlcnRUeXBlOnR9KSl9fVJKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSSikoZnUoaVMpKX0sUkouybVjbXA9c28oe3R5cGU6Ukosc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWFsZXJ0cyJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJudW1BbGVydHMiLCJhbGVydHNCcmVha2Rvd24iLCJmb2N1c1R5cGUiLCJvblRvZ2dsZUZvY3VzVHlwZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiYWxlcnRzLWNvbXBvbmVudCIsMCksRHUoIm9uVG9nZ2xlRm9jdXNUeXBlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblRvZ2dsZUZvY3VzVHlwZShlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJudW1BbGVydHMiLEN5KDEsMyxuLm51bUFsZXJ0cyQpKSgiYWxlcnRzQnJlYWtkb3duIixDeSgyLDUsbi5hbGVydHNCcmVha2Rvd24kKSkoImZvY3VzVHlwZSIsQ3koMyw3LG4uZm9jdXNUeXBlJCkpfSxkaXJlY3RpdmVzOltTSl0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJKLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWFsZXJ0cyIsdGVtcGxhdGU6J1xuICAgIDxhbGVydHMtY29tcG9uZW50XG4gICAgICBbbnVtQWxlcnRzXT0ibnVtQWxlcnRzJCB8IGFzeW5jIlxuICAgICAgW2FsZXJ0c0JyZWFrZG93bl09ImFsZXJ0c0JyZWFrZG93biQgfCBhc3luYyJcbiAgICAgIFtmb2N1c1R5cGVdPSJmb2N1c1R5cGUkIHwgYXN5bmMiXG4gICAgICAob25Ub2dnbGVGb2N1c1R5cGUpPSJvblRvZ2dsZUZvY3VzVHlwZSgkZXZlbnQpIlxuICAgID5cbiAgICA8L2FsZXJ0cy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBFSj1bInNsaWRlcldyYXBwZXIiXSxBSj1rSCh7cGFzc2l2ZTohMX0pLFRKPXtwcm92aWRlOlRqLHVzZUV4aXN0aW5nOiRlKCgoKT0+SUopKSxtdWx0aTohMH07Y2xhc3MgTkp7fWNvbnN0IHpKPVpGKFlGKEdGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSwiYWNjZW50IikpO2NsYXNzIElKIGV4dGVuZHMgekp7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXtzdXBlcih0KSx0aGlzLl9mb2N1c01vbml0b3I9ZSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1uLHRoaXMuX2Rpcj1vLHRoaXMuX25nWm9uZT1hLHRoaXMuX2FuaW1hdGlvbk1vZGU9cyx0aGlzLl9pbnZlcnQ9ITEsdGhpcy5fbWF4PTEwMCx0aGlzLl9taW49MCx0aGlzLl9zdGVwPTEsdGhpcy5fdGh1bWJMYWJlbD0hMSx0aGlzLl90aWNrSW50ZXJ2YWw9MCx0aGlzLl92YWx1ZT1udWxsLHRoaXMuX3ZlcnRpY2FsPSExLHRoaXMuY2hhbmdlPW5ldyBTeSx0aGlzLmlucHV0PW5ldyBTeSx0aGlzLnZhbHVlQ2hhbmdlPW5ldyBTeSx0aGlzLm9uVG91Y2hlZD0oKT0+e30sdGhpcy5fcGVyY2VudD0wLHRoaXMuX2lzU2xpZGluZz1udWxsLHRoaXMuX2lzQWN0aXZlPSExLHRoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQ9MCx0aGlzLl9zbGlkZXJEaW1lbnNpb25zPW51bGwsdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj0oKT0+e30sdGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fcG9pbnRlckRvd249dD0+e3RoaXMuZGlzYWJsZWR8fHRoaXMuX2lzU2xpZGluZ3x8IUhKKHQpJiYwIT09dC5idXR0b258fHRoaXMuX25nWm9uZS5ydW4oKCgpPT57dGhpcy5fdG91Y2hJZD1ISih0KT8oZnVuY3Rpb24gZSh0LG4pe2ZvcihsZXQgZT0wO2U8dC50b3VjaGVzLmxlbmd0aDtlKyspe2NvbnN0IG89dC50b3VjaGVzW2VdLnRhcmdldDtpZihuPT09b3x8bi5jb250YWlucyhvKSlyZXR1cm4gdC50b3VjaGVzW2VdLmlkZW50aWZpZXJ9cmV0dXJufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTp2b2lkIDA7Y29uc3Qgbj1GSih0LHRoaXMuX3RvdWNoSWQpO2lmKG4pe2NvbnN0IGU9dGhpcy52YWx1ZTt0aGlzLl9pc1NsaWRpbmc9InBvaW50ZXIiLHRoaXMuX2xhc3RQb2ludGVyRXZlbnQ9dCx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNIb3N0RWxlbWVudCgpLHRoaXMuX29uTW91c2VlbnRlcigpLHRoaXMuX2JpbmRHbG9iYWxFdmVudHModCksdGhpcy5fZm9jdXNIb3N0RWxlbWVudCgpLHRoaXMuX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKG4pLHRoaXMuX3ZhbHVlT25TbGlkZVN0YXJ0PWUsZSE9dGhpcy52YWx1ZSYmdGhpcy5fZW1pdElucHV0RXZlbnQoKX19KSl9LHRoaXMuX3BvaW50ZXJNb3ZlPXQ9PntpZigicG9pbnRlciI9PT10aGlzLl9pc1NsaWRpbmcpe2NvbnN0IGU9RkoodCx0aGlzLl90b3VjaElkKTtpZihlKXt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3Qgbj10aGlzLnZhbHVlO3RoaXMuX2xhc3RQb2ludGVyRXZlbnQ9dCx0aGlzLl91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbihlKSxuIT10aGlzLnZhbHVlJiZ0aGlzLl9lbWl0SW5wdXRFdmVudCgpfX19LHRoaXMuX3BvaW50ZXJVcD10PT57InBvaW50ZXIiPT09dGhpcy5faXNTbGlkaW5nJiYoSEoodCkmJiJudW1iZXIiPT10eXBlb2YgdGhpcy5fdG91Y2hJZCYmIUxKKHQuY2hhbmdlZFRvdWNoZXMsdGhpcy5fdG91Y2hJZCl8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fcmVtb3ZlR2xvYmFsRXZlbnRzKCksdGhpcy5faXNTbGlkaW5nPW51bGwsdGhpcy5fdG91Y2hJZD12b2lkIDAsdGhpcy5fdmFsdWVPblNsaWRlU3RhcnQ9PXRoaXMudmFsdWV8fHRoaXMuZGlzYWJsZWR8fHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpLHRoaXMuX3ZhbHVlT25TbGlkZVN0YXJ0PXRoaXMuX2xhc3RQb2ludGVyRXZlbnQ9bnVsbCkpfSx0aGlzLl93aW5kb3dCbHVyPSgpPT57dGhpcy5fbGFzdFBvaW50ZXJFdmVudCYmdGhpcy5fcG9pbnRlclVwKHRoaXMuX2xhc3RQb2ludGVyRXZlbnQpfSx0aGlzLl9kb2N1bWVudD1yLHRoaXMudGFiSW5kZXg9cGFyc2VJbnQoaSl8fDAsYS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pntjb25zdCBlPXQubmF0aXZlRWxlbWVudDtlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fcG9pbnRlckRvd24sQUopLGUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fcG9pbnRlckRvd24sQUopfSkpfWdldCBpbnZlcnQoKXtyZXR1cm4gdGhpcy5faW52ZXJ0fXNldCBpbnZlcnQodCl7dGhpcy5faW52ZXJ0PXBIKHQpfWdldCBtYXgoKXtyZXR1cm4gdGhpcy5fbWF4fXNldCBtYXgodCl7dGhpcy5fbWF4PW1IKHQsdGhpcy5fbWF4KSx0aGlzLl9wZXJjZW50PXRoaXMuX2NhbGN1bGF0ZVBlcmNlbnRhZ2UodGhpcy5fdmFsdWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBtaW4oKXtyZXR1cm4gdGhpcy5fbWlufXNldCBtaW4odCl7dGhpcy5fbWluPW1IKHQsdGhpcy5fbWluKSx0aGlzLl9wZXJjZW50PXRoaXMuX2NhbGN1bGF0ZVBlcmNlbnRhZ2UodGhpcy5fdmFsdWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBzdGVwKCl7cmV0dXJuIHRoaXMuX3N0ZXB9c2V0IHN0ZXAodCl7dGhpcy5fc3RlcD1tSCh0LHRoaXMuX3N0ZXApLHRoaXMuX3N0ZXAlMSE9MCYmKHRoaXMuX3JvdW5kVG9EZWNpbWFsPXRoaXMuX3N0ZXAudG9TdHJpbmcoKS5zcGxpdCgiLiIpLnBvcCgpLmxlbmd0aCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IHRodW1iTGFiZWwoKXtyZXR1cm4gdGhpcy5fdGh1bWJMYWJlbH1zZXQgdGh1bWJMYWJlbCh0KXt0aGlzLl90aHVtYkxhYmVsPXBIKHQpfWdldCB0aWNrSW50ZXJ2YWwoKXtyZXR1cm4gdGhpcy5fdGlja0ludGVydmFsfXNldCB0aWNrSW50ZXJ2YWwodCl7dGhpcy5fdGlja0ludGVydmFsPSJhdXRvIj09PXQ/ImF1dG8iOiJudW1iZXIiPT10eXBlb2YgdHx8InN0cmluZyI9PXR5cGVvZiB0P21IKHQsdGhpcy5fdGlja0ludGVydmFsKTowfWdldCB2YWx1ZSgpe3JldHVybiBudWxsPT09dGhpcy5fdmFsdWUmJih0aGlzLnZhbHVlPXRoaXMuX21pbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe2lmKHQhPT10aGlzLl92YWx1ZSl7bGV0IGU9bUgodCwwKTt0aGlzLl9yb3VuZFRvRGVjaW1hbCYmZSE9PXRoaXMubWluJiZlIT09dGhpcy5tYXgmJihlPXBhcnNlRmxvYXQoZS50b0ZpeGVkKHRoaXMuX3JvdW5kVG9EZWNpbWFsKSkpLHRoaXMuX3ZhbHVlPWUsdGhpcy5fcGVyY2VudD10aGlzLl9jYWxjdWxhdGVQZXJjZW50YWdlKHRoaXMuX3ZhbHVlKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX19Z2V0IHZlcnRpY2FsKCl7cmV0dXJuIHRoaXMuX3ZlcnRpY2FsfXNldCB2ZXJ0aWNhbCh0KXt0aGlzLl92ZXJ0aWNhbD1wSCh0KX1nZXQgZGlzcGxheVZhbHVlKCl7cmV0dXJuIHRoaXMuZGlzcGxheVdpdGg/dGhpcy5kaXNwbGF5V2l0aCh0aGlzLnZhbHVlKTp0aGlzLl9yb3VuZFRvRGVjaW1hbCYmdGhpcy52YWx1ZSYmdGhpcy52YWx1ZSUxIT0wP3RoaXMudmFsdWUudG9GaXhlZCh0aGlzLl9yb3VuZFRvRGVjaW1hbCk6dGhpcy52YWx1ZXx8MH1mb2N1cyh0KXt0aGlzLl9mb2N1c0hvc3RFbGVtZW50KHQpfWJsdXIoKXt0aGlzLl9ibHVySG9zdEVsZW1lbnQoKX1nZXQgcGVyY2VudCgpe3JldHVybiB0aGlzLl9jbGFtcCh0aGlzLl9wZXJjZW50KX1fc2hvdWxkSW52ZXJ0QXhpcygpe3JldHVybiB0aGlzLnZlcnRpY2FsPyF0aGlzLmludmVydDp0aGlzLmludmVydH1faXNNaW5WYWx1ZSgpe3JldHVybiAwPT09dGhpcy5wZXJjZW50fV9nZXRUaHVtYkdhcCgpe3JldHVybiB0aGlzLmRpc2FibGVkPzc6dGhpcy5faXNNaW5WYWx1ZSgpJiYhdGhpcy50aHVtYkxhYmVsP3RoaXMuX2lzQWN0aXZlPzEwOjc6MH1fZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCl7Y29uc3QgdD10aGlzLnZlcnRpY2FsP2AxLCAkezEtdGhpcy5wZXJjZW50fSwgMWA6MS10aGlzLnBlcmNlbnQrIiwgMSwgMSI7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KCR7dGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKT8iLSI6IiJ9JHt0aGlzLl9nZXRUaHVtYkdhcCgpfXB4KSBzY2FsZTNkKCR7dH0pYH19X2dldFRyYWNrRmlsbFN0eWxlcygpe2NvbnN0IHQ9dGhpcy5wZXJjZW50LGU9dGhpcy52ZXJ0aWNhbD9gMSwgJHt0fSwgMWA6YCR7dH0sIDEsIDFgO3JldHVybnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSR7dGhpcy52ZXJ0aWNhbD8iWSI6IlgifSgke3RoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCk/IiI6Ii0ifSR7dGhpcy5fZ2V0VGh1bWJHYXAoKX1weCkgc2NhbGUzZCgke2V9KWAsZGlzcGxheTowPT09dD8ibm9uZSI6IiJ9fV9nZXRUaWNrc0NvbnRhaW5lclN0eWxlcygpe3JldHVybnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSR7dGhpcy52ZXJ0aWNhbD8iWSI6IlgifSgke3RoaXMudmVydGljYWx8fCJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKT8iLSI6IiJ9JHt0aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50LzIqMTAwfSUpYH19X2dldFRpY2tzU3R5bGVzKCl7bGV0IHQ9MTAwKnRoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQsZT17YmFja2dyb3VuZFNpemU6dGhpcy52ZXJ0aWNhbD9gMnB4ICR7dH0lYDpgJHt0fSUgMnB4YCx0cmFuc2Zvcm06YHRyYW5zbGF0ZVooMCkgdHJhbnNsYXRlJHt0aGlzLnZlcnRpY2FsPyJZIjoiWCJ9KCR7dGhpcy52ZXJ0aWNhbHx8InJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpPyIiOiItIn0ke3QvMn0lKSR7dGhpcy52ZXJ0aWNhbHx8InJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpPyIiOiIgcm90YXRlKDE4MGRlZykifWB9O2lmKHRoaXMuX2lzTWluVmFsdWUoKSYmdGhpcy5fZ2V0VGh1bWJHYXAoKSl7Y29uc3QgdD10aGlzLl9zaG91bGRJbnZlcnRBeGlzKCk7bGV0IG47bj10aGlzLnZlcnRpY2FsP3Q/IkJvdHRvbSI6IlRvcCI6dD8iUmlnaHQiOiJMZWZ0IixlW2BwYWRkaW5nJHtufWBdPWAke3RoaXMuX2dldFRodW1iR2FwKCl9cHhgfXJldHVybiBlfV9nZXRUaHVtYkNvbnRhaW5lclN0eWxlcygpe2NvbnN0IHQ9dGhpcy5fc2hvdWxkSW52ZXJ0QXhpcygpO3JldHVybnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSR7dGhpcy52ZXJ0aWNhbD8iWSI6IlgifSgtJHsxMDAqKCgicnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCl8fHRoaXMudmVydGljYWw/dDohdCk/dGhpcy5wZXJjZW50OjEtdGhpcy5wZXJjZW50KX0lKWB9fV9zaG91bGRJbnZlcnRNb3VzZUNvb3Jkcygpe2NvbnN0IHQ9dGhpcy5fc2hvdWxkSW52ZXJ0QXhpcygpO3JldHVybiJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKXx8dGhpcy52ZXJ0aWNhbD90OiF0fV9nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlyJiYicnRsIj09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSgodD0+e3RoaXMuX2lzQWN0aXZlPSEhdCYmImtleWJvYXJkIiE9PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfSkpLHRoaXMuX2RpciYmKHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbj10aGlzLl9kaXIuY2hhbmdlLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fcG9pbnRlckRvd24sQUopLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fcG9pbnRlckRvd24sQUopLHRoaXMuX2xhc3RQb2ludGVyRXZlbnQ9bnVsbCx0aGlzLl9yZW1vdmVHbG9iYWxFdmVudHMoKSx0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9X29uTW91c2VlbnRlcigpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLl9zbGlkZXJEaW1lbnNpb25zPXRoaXMuX2dldFNsaWRlckRpbWVuc2lvbnMoKSx0aGlzLl91cGRhdGVUaWNrSW50ZXJ2YWxQZXJjZW50KCkpfV9vbkZvY3VzKCl7dGhpcy5fc2xpZGVyRGltZW5zaW9ucz10aGlzLl9nZXRTbGlkZXJEaW1lbnNpb25zKCksdGhpcy5fdXBkYXRlVGlja0ludGVydmFsUGVyY2VudCgpfV9vbkJsdXIoKXt0aGlzLm9uVG91Y2hlZCgpfV9vbktleWRvd24odCl7aWYodGhpcy5kaXNhYmxlZHx8ZEgodCl8fHRoaXMuX2lzU2xpZGluZyYmImtleWJvYXJkIiE9PXRoaXMuX2lzU2xpZGluZylyZXR1cm47Y29uc3QgZT10aGlzLnZhbHVlO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgMzM6dGhpcy5faW5jcmVtZW50KDEwKTticmVhaztjYXNlIDM0OnRoaXMuX2luY3JlbWVudCgtMTApO2JyZWFrO2Nhc2UgMzU6dGhpcy52YWx1ZT10aGlzLm1heDticmVhaztjYXNlIDM2OnRoaXMudmFsdWU9dGhpcy5taW47YnJlYWs7Y2FzZSAzNzp0aGlzLl9pbmNyZW1lbnQoInJ0bCI9PXRoaXMuX2dldERpcmVjdGlvbigpPzE6LTEpO2JyZWFrO2Nhc2UgbEg6dGhpcy5faW5jcmVtZW50KDEpO2JyZWFrO2Nhc2UgMzk6dGhpcy5faW5jcmVtZW50KCJydGwiPT10aGlzLl9nZXREaXJlY3Rpb24oKT8tMToxKTticmVhaztjYXNlIGNIOnRoaXMuX2luY3JlbWVudCgtMSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59ZSE9dGhpcy52YWx1ZSYmKHRoaXMuX2VtaXRJbnB1dEV2ZW50KCksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCkpLHRoaXMuX2lzU2xpZGluZz0ia2V5Ym9hcmQiLHQucHJldmVudERlZmF1bHQoKX1fb25LZXl1cCgpeyJrZXlib2FyZCI9PT10aGlzLl9pc1NsaWRpbmcmJih0aGlzLl9pc1NsaWRpbmc9bnVsbCl9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV9iaW5kR2xvYmFsRXZlbnRzKHQpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQsbj1ISih0KSxvPW4/InRvdWNoZW5kIjoibW91c2V1cCI7ZS5hZGRFdmVudExpc3RlbmVyKG4/InRvdWNobW92ZSI6Im1vdXNlbW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsQUopLGUuYWRkRXZlbnRMaXN0ZW5lcihvLHRoaXMuX3BvaW50ZXJVcCxBSiksbiYmZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsdGhpcy5fcG9pbnRlclVwLEFKKTtjb25zdCBpPXRoaXMuX2dldFdpbmRvdygpO3ZvaWQgMCE9PWkmJmkmJmkuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1cil9X3JlbW92ZUdsb2JhbEV2ZW50cygpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQ7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuX3BvaW50ZXJNb3ZlLEFKKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuX3BvaW50ZXJVcCxBSiksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMuX3BvaW50ZXJNb3ZlLEFKKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLl9wb2ludGVyVXAsQUopLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLHRoaXMuX3BvaW50ZXJVcCxBSik7Y29uc3QgZT10aGlzLl9nZXRXaW5kb3coKTt2b2lkIDAhPT1lJiZlJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3dpbmRvd0JsdXIpfV9pbmNyZW1lbnQodCl7dGhpcy52YWx1ZT10aGlzLl9jbGFtcCgodGhpcy52YWx1ZXx8MCkrdGhpcy5zdGVwKnQsdGhpcy5taW4sdGhpcy5tYXgpfV91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbih0KXtpZighdGhpcy5fc2xpZGVyRGltZW5zaW9ucylyZXR1cm47bGV0IGU9dGhpcy5fY2xhbXAoKCh0aGlzLnZlcnRpY2FsP3QueTp0LngpLSh0aGlzLnZlcnRpY2FsP3RoaXMuX3NsaWRlckRpbWVuc2lvbnMudG9wOnRoaXMuX3NsaWRlckRpbWVuc2lvbnMubGVmdCkpLyh0aGlzLnZlcnRpY2FsP3RoaXMuX3NsaWRlckRpbWVuc2lvbnMuaGVpZ2h0OnRoaXMuX3NsaWRlckRpbWVuc2lvbnMud2lkdGgpKTtpZih0aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpJiYoZT0xLWUpLDA9PT1lKXRoaXMudmFsdWU9dGhpcy5taW47ZWxzZSBpZigxPT09ZSl0aGlzLnZhbHVlPXRoaXMubWF4O2Vsc2V7Y29uc3QgdD10aGlzLl9jYWxjdWxhdGVWYWx1ZShlKSxuPU1hdGgucm91bmQoKHQtdGhpcy5taW4pL3RoaXMuc3RlcCkqdGhpcy5zdGVwK3RoaXMubWluO3RoaXMudmFsdWU9dGhpcy5fY2xhbXAobix0aGlzLm1pbix0aGlzLm1heCl9fV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKHRoaXMudmFsdWUpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKSx0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KCkpfV9lbWl0SW5wdXRFdmVudCgpe3RoaXMuaW5wdXQuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudCgpKX1fdXBkYXRlVGlja0ludGVydmFsUGVyY2VudCgpe2lmKHRoaXMudGlja0ludGVydmFsJiZ0aGlzLl9zbGlkZXJEaW1lbnNpb25zKWlmKCJhdXRvIj09dGhpcy50aWNrSW50ZXJ2YWwpe2xldCB0PXRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5oZWlnaHQ6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy53aWR0aCxlPU1hdGguY2VpbCgzMC8odCp0aGlzLnN0ZXAvKHRoaXMubWF4LXRoaXMubWluKSkpO3RoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQ9ZSp0aGlzLnN0ZXAvdH1lbHNlIHRoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQ9dGhpcy50aWNrSW50ZXJ2YWwqdGhpcy5zdGVwLyh0aGlzLm1heC10aGlzLm1pbil9X2NyZWF0ZUNoYW5nZUV2ZW50KHQ9dGhpcy52YWx1ZSl7bGV0IGU9bmV3IE5KO3JldHVybiBlLnNvdXJjZT10aGlzLGUudmFsdWU9dCxlfV9jYWxjdWxhdGVQZXJjZW50YWdlKHQpe3JldHVybigodHx8MCktdGhpcy5taW4pLyh0aGlzLm1heC10aGlzLm1pbil9X2NhbGN1bGF0ZVZhbHVlKHQpe3JldHVybiB0aGlzLm1pbit0Kih0aGlzLm1heC10aGlzLm1pbil9X2NsYW1wKHQsZT0wLG49MSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxuKSl9X2dldFNsaWRlckRpbWVuc2lvbnMoKXtyZXR1cm4gdGhpcy5fc2xpZGVyV3JhcHBlcj90aGlzLl9zbGlkZXJXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6bnVsbH1fZm9jdXNIb3N0RWxlbWVudCh0KXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X2JsdXJIb3N0RWxlbWVudCgpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCl9d3JpdGVWYWx1ZSh0KXt0aGlzLnZhbHVlPXR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dH19ZnVuY3Rpb24gSEoodCl7cmV0dXJuInQiPT09dC50eXBlWzBdfWZ1bmN0aW9uIEZKKHQsZSl7bGV0IG47cmV0dXJuIG49SEoodCk/Im51bWJlciI9PXR5cGVvZiBlP0xKKHQudG91Y2hlcyxlKXx8TEoodC5jaGFuZ2VkVG91Y2hlcyxlKTp0LnRvdWNoZXNbMF18fHQuY2hhbmdlZFRvdWNoZXNbMF06dCxuP3t4Om4uY2xpZW50WCx5Om4uY2xpZW50WX06dm9pZCAwfWZ1bmN0aW9uIExKKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXS5pZGVudGlmaWVyPT09ZSlyZXR1cm4gdFtuXX1JSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SUopKGZ1KEtoKSxmdSh4RiksZnUoT2IpLGZ1KEFGLDgpLEdhKCJ0YWJpbmRleCIpLGZ1KG1DKSxmdShzTSksZnUoY2ssOCkpfSxJSi7JtWNtcD1zbyh7dHlwZTpJSixzZWxlY3RvcnM6W1sibWF0LXNsaWRlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoRUosNSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5fc2xpZGVyV3JhcHBlcj10LmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJzbGlkZXIiLDEsIm1hdC1zbGlkZXIiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MjksaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Gb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkJsdXIoKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uS2V5ZG93bihlKX0pKSgia2V5dXAiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uS2V5dXAoKX0pKSgibW91c2VlbnRlciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Nb3VzZWVudGVyKCl9KSkoInNlbGVjdHN0YXJ0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpfSkpLDImZSYmKGNnKCJ0YWJJbmRleCIsbi50YWJJbmRleCkseW0oImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJhcmlhLXZhbHVlbWF4IixuLm1heCkoImFyaWEtdmFsdWVtaW4iLG4ubWluKSgiYXJpYS12YWx1ZW5vdyIsbi52YWx1ZSkoImFyaWEtdmFsdWV0ZXh0IixudWxsPT1uLnZhbHVlVGV4dD9uLmRpc3BsYXlWYWx1ZTpuLnZhbHVlVGV4dCkoImFyaWEtb3JpZW50YXRpb24iLG4udmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCIpLGNmKCJtYXQtc2xpZGVyLWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LXNsaWRlci1oYXMtdGlja3MiLG4udGlja0ludGVydmFsKSgibWF0LXNsaWRlci1ob3Jpem9udGFsIiwhbi52ZXJ0aWNhbCkoIm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCIsbi5fc2hvdWxkSW52ZXJ0QXhpcygpKSgibWF0LXNsaWRlci1pbnZlcnQtbW91c2UtY29vcmRzIixuLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpKSgibWF0LXNsaWRlci1zbGlkaW5nIixuLl9pc1NsaWRpbmcpKCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmciLG4udGh1bWJMYWJlbCkoIm1hdC1zbGlkZXItdmVydGljYWwiLG4udmVydGljYWwpKCJtYXQtc2xpZGVyLW1pbi12YWx1ZSIsbi5faXNNaW5WYWx1ZSgpKSgibWF0LXNsaWRlci1oaWRlLWxhc3QtdGljayIsbi5kaXNhYmxlZHx8bi5faXNNaW5WYWx1ZSgpJiZuLl9nZXRUaHVtYkdhcCgpJiZuLl9zaG91bGRJbnZlcnRBeGlzKCkpKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4IixpbnZlcnQ6ImludmVydCIsbWF4OiJtYXgiLG1pbjoibWluIixzdGVwOiJzdGVwIix0aHVtYkxhYmVsOiJ0aHVtYkxhYmVsIix0aWNrSW50ZXJ2YWw6InRpY2tJbnRlcnZhbCIsdmFsdWU6InZhbHVlIix2ZXJ0aWNhbDoidmVydGljYWwiLGRpc3BsYXlXaXRoOiJkaXNwbGF5V2l0aCIsdmFsdWVUZXh0OiJ2YWx1ZVRleHQifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSIsaW5wdXQ6ImlucHV0Iix2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UifSxleHBvcnRBczpbIm1hdFNsaWRlciJdLGZlYXR1cmVzOltVaChbVEpdKSxRcF0sZGVjbHM6MTMsdmFyczo2LGNvbnN0czpbWzEsIm1hdC1zbGlkZXItd3JhcHBlciJdLFsic2xpZGVyV3JhcHBlciIsIiJdLFsxLCJtYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXIiXSxbMSwibWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdHJhY2stZmlsbCIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lciIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLXRpY2tzIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVyIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItZm9jdXMtcmluZyJdLFsxLCJtYXQtc2xpZGVyLXRodW1iIl0sWzEsIm1hdC1zbGlkZXItdGh1bWItbGFiZWwiXSxbMSwibWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJkaXYiLDAsMSksX3UoMiwiZGl2IiwyKSxNdSgzLCJkaXYiLDMpLE11KDQsImRpdiIsNCksQ3UoKSxfdSg1LCJkaXYiLDUpLE11KDYsImRpdiIsNiksQ3UoKSxfdSg3LCJkaXYiLDcpLE11KDgsImRpdiIsOCksTXUoOSwiZGl2Iiw5KSxfdSgxMCwiZGl2IiwxMCksX3UoMTEsInNwYW4iLDExKSxQZigxMiksQ3UoKSxDdSgpLEN1KCksQ3UoKSksMiZlJiYoRGMoMyksaHUoIm5nU3R5bGUiLG4uX2dldFRyYWNrQmFja2dyb3VuZFN0eWxlcygpKSxEYygxKSxodSgibmdTdHlsZSIsbi5fZ2V0VHJhY2tGaWxsU3R5bGVzKCkpLERjKDEpLGh1KCJuZ1N0eWxlIixuLl9nZXRUaWNrc0NvbnRhaW5lclN0eWxlcygpKSxEYygxKSxodSgibmdTdHlsZSIsbi5fZ2V0VGlja3NTdHlsZXMoKSksRGMoMSksaHUoIm5nU3R5bGUiLG4uX2dldFRodW1iQ29udGFpbmVyU3R5bGVzKCkpLERjKDUpLHdmKG4uZGlzcGxheVZhbHVlKSl9LGRpcmVjdGl2ZXM6W3p2XSxzdHlsZXM6WycubWF0LXNsaWRlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzo4cHg7b3V0bGluZTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOmFjdGl2ZSwubWF0LXNsaWRlci5tYXQtc2xpZGVyLXNsaWRpbmc6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKXtjdXJzb3I6LXdlYmtpdC1ncmFiYmluZztjdXJzb3I6Z3JhYmJpbmd9Lm1hdC1zbGlkZXItd3JhcHBlcnstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtjb2xvci1hZGp1c3Q6ZXhhY3Q7cG9zaXRpb246YWJzb2x1dGV9Lm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1zbGlkZXItdGlja3N7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7YmFja2dyb3VuZC1jbGlwOmNvbnRlbnQtYm94O2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksb3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMSk7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2N1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWJ9Lm1hdC1zbGlkZXItdGh1bWJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTEwcHg7Ym90dG9tOi0xMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlcjozcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDAuNyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3JkZXItY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLXJhZGl1cyA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt6LWluZGV4OjE7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3RyYW5zaXRpb24tZHVyYXRpb246MG1zfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci13aWR0aDowO2JvcmRlci1zdHlsZTpzb2xpZDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWhhcy10aWNrcy5jZGstZm9jdXNlZDpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyLC5tYXQtc2xpZGVyLWhhcy10aWNrczpob3Zlcjpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye29wYWNpdHk6MX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrcywubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrc3tvcGFjaXR5OjF9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2Rpc3BsYXk6bm9uZX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6ZmxleH0ubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MCAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1ie3RyYW5zZm9ybTpzY2FsZSgwKX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvcmRlci1yYWRpdXM6NTAlIDUwJSAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtvcGFjaXR5OjF9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstbW91c2UtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay10b3VjaC1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItd2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZSgxKX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RyYW5zZm9ybTpzY2FsZSgwKTtvcGFjaXR5OjB9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjRweDt0cmFuc2Zvcm06c2NhbGUoMC41KX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6NDhweDttaW4td2lkdGg6MTI4cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVye2hlaWdodDoycHg7dG9wOjIzcHg7bGVmdDo4cHg7cmlnaHQ6OHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7aGVpZ2h0OjJweDtib3JkZXItbGVmdC13aWR0aDoycHg7cmlnaHQ6MDt0b3A6MH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MnB4O3dpZHRoOjEwMCU7dHJhbnNmb3JtOnNjYWxlWCgwKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMSl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjA7b3V0bGluZTpzb2xpZCAycHg7dG9wOjFweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt3aWR0aDoxMDAlO2hlaWdodDowO3RvcDo1MCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RvcDotMTVweDtyaWdodDotMTVweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3JpZ2h0Oi0xNHB4O3RvcDotNDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyNnB4KSBzY2FsZSgwLjAxKSByb3RhdGUoNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOm5vbmV9Lm1hdC1zbGlkZXItdmVydGljYWx7d2lkdGg6NDhweDttaW4taGVpZ2h0OjEyOHB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXJ7d2lkdGg6MnB4O3RvcDo4cHg7Ym90dG9tOjhweDtsZWZ0OjIzcHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7d2lkdGg6MnB4O2JvcmRlci10b3Atd2lkdGg6MnB4O2JvdHRvbTowO2xlZnQ6MH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoxMDAlO3dpZHRoOjJweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1maWxse2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDApfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZVkoMSl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDowO291dGxpbmU6c29saWQgMnB4O2xlZnQ6MXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7Ym90dG9tOi0xNXB4O2xlZnQ6LTE1cHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7d2lkdGg6MnB4O2hlaWdodDoxMDAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcntoZWlnaHQ6MTAwJTt3aWR0aDowO2xlZnQ6NTAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7Ym90dG9tOi0xNHB4O2xlZnQ6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci12ZXJ0aWNhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2xlZnQ6MDtyaWdodDphdXRvfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX0ubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVyLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfVxuJ10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksSUouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6eEZ9LHt0eXBlOk9ifSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6bUN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLElKLnByb3BEZWNvcmF0b3JzPXtpbnZlcnQ6W3t0eXBlOlJffV0sbWF4Olt7dHlwZTpSX31dLG1pbjpbe3R5cGU6Ul99XSxzdGVwOlt7dHlwZTpSX31dLHRodW1iTGFiZWw6W3t0eXBlOlJffV0sdGlja0ludGVydmFsOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLGRpc3BsYXlXaXRoOlt7dHlwZTpSX31dLHZhbHVlVGV4dDpbe3R5cGU6Ul99XSx2ZXJ0aWNhbDpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV0saW5wdXQ6W3t0eXBlOkVffV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0sX3NsaWRlcldyYXBwZXI6W3t0eXBlOmFyLGFyZ3M6WyJzbGlkZXJXcmFwcGVyIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJSixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtc2xpZGVyIixleHBvcnRBczoibWF0U2xpZGVyIixwcm92aWRlcnM6W1RKXSxob3N0OnsiKGZvY3VzKSI6Il9vbkZvY3VzKCkiLCIoYmx1cikiOiJfb25CbHVyKCkiLCIoa2V5ZG93bikiOiJfb25LZXlkb3duKCRldmVudCkiLCIoa2V5dXApIjoiX29uS2V5dXAoKSIsIihtb3VzZWVudGVyKSI6Il9vbk1vdXNlZW50ZXIoKSIsIihzZWxlY3RzdGFydCkiOiIkZXZlbnQucHJldmVudERlZmF1bHQoKSIsY2xhc3M6Im1hdC1zbGlkZXIgbWF0LWZvY3VzLWluZGljYXRvciIscm9sZToic2xpZGVyIiwiW3RhYkluZGV4XSI6InRhYkluZGV4IiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIlthdHRyLmFyaWEtdmFsdWVtYXhdIjoibWF4IiwiW2F0dHIuYXJpYS12YWx1ZW1pbl0iOiJtaW4iLCJbYXR0ci5hcmlhLXZhbHVlbm93XSI6InZhbHVlIiwiW2F0dHIuYXJpYS12YWx1ZXRleHRdIjoidmFsdWVUZXh0ID09IG51bGwgPyBkaXNwbGF5VmFsdWUgOiB2YWx1ZVRleHQiLCJbYXR0ci5hcmlhLW9yaWVudGF0aW9uXSI6J3ZlcnRpY2FsID8gInZlcnRpY2FsIiA6ICJob3Jpem9udGFsIicsIltjbGFzcy5tYXQtc2xpZGVyLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1zbGlkZXItaGFzLXRpY2tzXSI6InRpY2tJbnRlcnZhbCIsIltjbGFzcy5tYXQtc2xpZGVyLWhvcml6b250YWxdIjoiIXZlcnRpY2FsIiwiW2NsYXNzLm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZF0iOiJfc2hvdWxkSW52ZXJ0QXhpcygpIiwiW2NsYXNzLm1hdC1zbGlkZXItaW52ZXJ0LW1vdXNlLWNvb3Jkc10iOiJfc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKSIsIltjbGFzcy5tYXQtc2xpZGVyLXNsaWRpbmddIjoiX2lzU2xpZGluZyIsIltjbGFzcy5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmddIjoidGh1bWJMYWJlbCIsIltjbGFzcy5tYXQtc2xpZGVyLXZlcnRpY2FsXSI6InZlcnRpY2FsIiwiW2NsYXNzLm1hdC1zbGlkZXItbWluLXZhbHVlXSI6Il9pc01pblZhbHVlKCkiLCJbY2xhc3MubWF0LXNsaWRlci1oaWRlLWxhc3QtdGlja10iOiJkaXNhYmxlZCB8fCBfaXNNaW5WYWx1ZSgpICYmIF9nZXRUaHVtYkdhcCgpICYmIF9zaG91bGRJbnZlcnRBeGlzKCkiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjonX2FuaW1hdGlvbk1vZGUgPT09ICJOb29wQW5pbWF0aW9ucyInfSx0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXNsaWRlci13cmFwcGVyIiAjc2xpZGVyV3JhcHBlcj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10cmFjay13cmFwcGVyIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQiIFtuZ1N0eWxlXT0iX2dldFRyYWNrQmFja2dyb3VuZFN0eWxlcygpIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRyYWNrLWZpbGwiIFtuZ1N0eWxlXT0iX2dldFRyYWNrRmlsbFN0eWxlcygpIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdGlja3MtY29udGFpbmVyIiBbbmdTdHlsZV09Il9nZXRUaWNrc0NvbnRhaW5lclN0eWxlcygpIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRpY2tzIiBbbmdTdHlsZV09Il9nZXRUaWNrc1N0eWxlcygpIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdGh1bWItY29udGFpbmVyIiBbbmdTdHlsZV09Il9nZXRUaHVtYkNvbnRhaW5lclN0eWxlcygpIj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLWZvY3VzLXJpbmciPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdGh1bWIiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdGh1bWItbGFiZWwiPlxuICAgICAgPHNwYW4gY2xhc3M9Im1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCI+e3tkaXNwbGF5VmFsdWV9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbicsaW5wdXRzOlsiZGlzYWJsZWQiLCJjb2xvciIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsc3R5bGVzOlsnLm1hdC1zbGlkZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6OHB4O291dGxpbmU6bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTphY3RpdmUsLm1hdC1zbGlkZXIubWF0LXNsaWRlci1zbGlkaW5nOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCl7Y3Vyc29yOi13ZWJraXQtZ3JhYmJpbmc7Y3Vyc29yOmdyYWJiaW5nfS5tYXQtc2xpZGVyLXdyYXBwZXJ7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0O3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93OmhpZGRlbn0ubWF0LXNsaWRlci10cmFjay1maWxse3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRpY2tzey13ZWJraXQtYmFja2dyb3VuZC1jbGlwOmNvbnRlbnQtYm94O2JhY2tncm91bmQtY2xpcDpjb250ZW50LWJveDtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1mb2N1cy1yaW5ne3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDApO29wYWNpdHk6MDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZywubWF0LXNsaWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYntjdXJzb3I6LXdlYmtpdC1ncmFiO2N1cnNvcjpncmFifS5tYXQtc2xpZGVyLXRodW1ie3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0xMHB4O2JvdHRvbTotMTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXI6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTpzY2FsZSgwLjcpO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJvcmRlci1yYWRpdXMgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7ei1pbmRleDoxO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt0cmFuc2l0aW9uLWR1cmF0aW9uOjBtc30ubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlciwubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntvcGFjaXR5OjF9Lm1hdC1zbGlkZXItaGFzLXRpY2tzLmNkay1mb2N1c2VkOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXItaGFzLXRpY2tzOmhvdmVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3N7b3BhY2l0eToxfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5OmZsZXh9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYnt0cmFuc2Zvcm06c2NhbGUoMCl9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtib3JkZXItcmFkaXVzOjUwJSA1MCUgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLW1vdXNlLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstdG91Y2gtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGUoMSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci13aWR0aDo0cHg7dHJhbnNmb3JtOnNjYWxlKDAuNSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtc2xpZGVyLWhvcml6b250YWx7aGVpZ2h0OjQ4cHg7bWluLXdpZHRoOjEyOHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcntoZWlnaHQ6MnB4O3RvcDoyM3B4O2xlZnQ6OHB4O3JpZ2h0OjhweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2hlaWdodDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MnB4O3JpZ2h0OjA7dG9wOjB9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMCl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoycHg7d2lkdGg6MTAwJTt0cmFuc2Zvcm06c2NhbGVYKDEpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDowO291dGxpbmU6c29saWQgMnB4O3RvcDoxcHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3toZWlnaHQ6MnB4O3dpZHRoOjEwMCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MDt0b3A6NTAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0b3A6LTE1cHg7cmlnaHQ6LTE1cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtyaWdodDotMTRweDt0b3A6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGVyLXZlcnRpY2Fse3dpZHRoOjQ4cHg7bWluLWhlaWdodDoxMjhweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci13cmFwcGVye3dpZHRoOjJweDt0b3A6OHB4O2JvdHRvbTo4cHg7bGVmdDoyM3B4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3dpZHRoOjJweDtib3JkZXItdG9wLXdpZHRoOjJweDtib3R0b206MDtsZWZ0OjB9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MTAwJTt3aWR0aDoycHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MTAwJTt3aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlWSgwKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDEpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDoycHg7aGVpZ2h0OjEwMCV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7d2lkdGg6MDtvdXRsaW5lOnNvbGlkIDJweDtsZWZ0OjFweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JvdHRvbTotMTVweDtsZWZ0Oi0xNXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tze3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtsZWZ0OjUwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYnstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvdHRvbTotMTRweDtsZWZ0Oi00MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVYKDI2cHgpIHNjYWxlKDAuMDEpIHJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfVtkaXI9cnRsXSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntsZWZ0OjA7cmlnaHQ6YXV0b31bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRpY2tzLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lciwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3RyYW5zaXRpb246bm9uZX1cbiddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnhGfSx7dHlwZTpPYn0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOm1DfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtjaGFuZ2U6W3t0eXBlOkVffV0saW5wdXQ6W3t0eXBlOkVffV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0saW52ZXJ0Olt7dHlwZTpSX31dLG1heDpbe3R5cGU6Ul99XSxtaW46W3t0eXBlOlJffV0sc3RlcDpbe3R5cGU6Ul99XSx0aHVtYkxhYmVsOlt7dHlwZTpSX31dLHRpY2tJbnRlcnZhbDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSx2ZXJ0aWNhbDpbe3R5cGU6Ul99XSxkaXNwbGF5V2l0aDpbe3R5cGU6Ul99XSx2YWx1ZVRleHQ6W3t0eXBlOlJffV0sX3NsaWRlcldyYXBwZXI6W3t0eXBlOmFyLGFyZ3M6WyJzbGlkZXJXcmFwcGVyIl19XX0pO2NsYXNzIEJKe31CSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QkopfSxCSi7JtW1vZD11byh7dHlwZTpCSn0pLEJKLsm1aW5qPURuKHtpbXBvcnRzOltbcngsV0ZdLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQkosW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxXRl0sZXhwb3J0czpbSUosV0ZdLGRlY2xhcmF0aW9uczpbSUpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oQkose2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltJSl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcngsV0ZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0lKLFdGXX19KTtjb25zdCBWSj17MTk6ImZsb2F0MTYiLDE6ImZsb2F0MzIiLDI6ImZsb2F0NjQiLDM6ImludDMyIiw0OiJ1aW50OCIsMTc6InVpbnQxNiIsMjI6InVpbnQzMiIsMjM6InVpbnQ2NCIsNToiaW50MTYiLDY6ImludDgiLDc6InN0cmluZyIsODoiY29tcGxleDY0IiwxODoiY29tcGxleDEyOCIsOToiaW50NjQiLDEwOiJib29sIiwxMToicWludDgiLDEyOiJxdWludDgiLDE1OiJxaW50MTYiLDE2OiJxdWludDE2IiwxMzoicWludDMyIiwxNDoiYmZsb2F0MTYiLDIwOiJyZXNvdXJjZSIsMjE6InZhcmlhbnQiLDExOToiZmxvYXQxNl9yZWYiLDEwMToiZmxvYXQzMl9yZWYiLDEwMjoiZmxvYXQ2NF9yZWYiLDEwMzoiaW50MzJfcmVmIiwxMjI6InVpbnQzMl9yZWYiLDEwNDoidWludDhfcmVmIiwxMTc6InVpbnQxNl9yZWYiLDEwNToiaW50MTZfcmVmIiwxMDY6ImludDhfcmVmIiwxMDc6InN0cmluZ19yZWYiLDEwODoiY29tcGxleDY0X3JlZiIsMTE4OiJjb21wbGV4MTI4X3JlZiIsMTA5OiJpbnQ2NF9yZWYiLDEyMzoidWludDY0X3JlZiIsMTEwOiJib29sX3JlZiIsMTExOiJxaW50OF9yZWYiLDExMjoicXVpbnQ4X3JlZiIsMTE1OiJxaW50MTZfcmVmIiwxMTY6InF1aW50MTZfcmVmIiwxMTM6InFpbnQzMl9yZWYiLDExNDoiYmZsb2F0MTZfcmVmIiwxMjA6InJlc291cmNlX3JlZiIsMTIxOiJ2YXJpYW50X3JlZiJ9O2Z1bmN0aW9uIFVKKHQpe2NvbnN0e3RlbnNvckRlYnVnTW9kZTplLGFycmF5Om59PXQ7c3dpdGNoKGUpe2Nhc2UgYksuTk9fVEVOU09SOmlmKG51bGwhPT1uKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZGx5IHJlY2VpdmVkIG5vbi1udWxsIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB1bmRlciBOT19URU5TT1IgbW9kZSIpO3JldHVybnt9O2Nhc2UgYksuQ1VSVF9IRUFMVEg6aWYobnVsbD09PW58fDIhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIENVUlRfSEVBTFRIIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCAyLCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkobil9YCk7cmV0dXJue2hhc0luZk9yTmFOOkJvb2xlYW4oblsxXSl9O2Nhc2UgYksuQ09OQ0lTRV9IRUFMVEg6e2lmKG51bGw9PT1ufHw1IT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmRlciBDT05DSVNFX0hFQUxUSCBtb2RlLCBleHBlY3RlZCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdG8gaGF2ZSBsZW5ndGggNSwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KG4pfWApO2NvbnN0IHQ9e3NpemU6blsxXX07cmV0dXJuIG5bMl0+MCYmKHQubnVtTmVnYXRpdmVJbmZzPW5bMl0pLG5bM10+MCYmKHQubnVtUG9zaXRpdmVJbmZzPW5bM10pLG5bNF0+MCYmKHQubnVtTmFOcz1uWzRdKSx0fWNhc2UgYksuU0hBUEU6e2lmKG51bGw9PT1ufHwxMCE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5kZXIgU0hBUEUgbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDEwLCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkobil9YCk7Y29uc3QgdD1uWzJdO2xldCBlPW4uc2xpY2UoNCxNYXRoLm1pbig0K3Qsbi5sZW5ndGgpKTtyZXR1cm4gZS5sZW5ndGg8dCYmKGU9bmV3IEFycmF5KHQtZS5sZW5ndGgpLmNvbmNhdChlKSkse2R0eXBlOlZKW25bMV1dLHJhbms6dCxzaXplOm5bM10sc2hhcGU6ZX19Y2FzZSBiSy5GVUxMX0hFQUxUSDp7aWYobnVsbD09PW58fDExIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmRlciBGVUxMX0hFQUxUSCBtb2RlLCBleHBlY3RlZCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdG8gaGF2ZSBsZW5ndGggMTEsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShuKX1gKTtjb25zdCB0PXtkdHlwZTpWSltuWzJdXSxyYW5rOm5bM10sc2l6ZTpuWzRdfTtyZXR1cm4gbls1XT4wJiYodC5udW1OZWdhdGl2ZUluZnM9bls1XSksbls2XT4wJiYodC5udW1Qb3NpdGl2ZUluZnM9bls2XSksbls3XT4wJiYodC5udW1OYU5zPW5bN10pLG5bOF0+MCYmKHQubnVtTmVnYXRpdmVGaW5pdGVzPW5bOF0pLG5bOV0+MCYmKHQubnVtWmVyb3M9bls5XSksblsxMF0+MCYmKHQubnVtUG9zaXRpdmVGaW5pdGVzPW5bMTBdKSx0fWNhc2UgYksuRlVMTF9URU5TT1I6aWYobnVsbCE9PW4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkbHkgcmVjZWl2ZWQgbm9uLW51bGwgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHVuZGVyIEZVTExfVEVOU09SIG1vZGUiKTtyZXR1cm57fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIHRlbnNvckRlYnVnTW9kZTogJHtlfWApfX1jb25zdCBqSj0iW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgIGhlaWdodDogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIHBhZGRpbmc6IDFweCAzcHg7XG4gICAgd2lkdGg6IG1heC1jb250ZW50O1xuICB9IjtmdW5jdGlvbiBXSih0LGUpezEmdCYmTXUoMCwiZGl2Iiw0KX1mdW5jdGlvbiBHSih0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsNyksX3UoMSwic3BhbiIsOCksUGYoMiwiTmFOIiksQ3UoKSxfdSgzLCJzcGFuIiw5KSxQZig0KSxDdSgpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTtEYyg0KSxrZigiw5ciLHQubnVtTmFOcywiIil9fWZ1bmN0aW9uIFlKKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2Iiw3KSxfdSgxLCJzcGFuIiw4KSxQZigyLCIt4oieIiksQ3UoKSxfdSgzLCJzcGFuIiw5KSxQZig0KSxDdSgpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTtEYyg0KSxrZigiw5ciLHQubnVtTmVnYXRpdmVJbmZzLCIiKX19ZnVuY3Rpb24gcUoodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDcpLF91KDEsInNwYW4iLDgpLFBmKDIsIiviiJ4iKSxDdSgpLF91KDMsInNwYW4iLDkpLFBmKDQpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDQpLGtmKCLDlyIsdC5udW1Qb3NpdGl2ZUluZnMsIiIpfX1mdW5jdGlvbiBaSih0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsNyksX3UoMSwic3BhbiIsMTApLFBmKDIsIi0iKSxDdSgpLF91KDMsInNwYW4iLDkpLFBmKDQpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDQpLGtmKCLDlyIsdC5udW1OZWdhdGl2ZUZpbml0ZXMsIiIpfX1mdW5jdGlvbiBYSih0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsNyksX3UoMSwic3BhbiIsMTApLFBmKDIsIjAiKSxDdSgpLF91KDMsInNwYW4iLDkpLFBmKDQpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDQpLGtmKCLDlyIsdC5udW1aZXJvcywiIil9fWZ1bmN0aW9uIEtKKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2Iiw3KSxfdSgxLCJzcGFuIiwxMCksUGYoMiwiKyIpLEN1KCksX3UoMywic3BhbiIsOSksUGYoNCksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoNCksa2YoIsOXIix0Lm51bVBvc2l0aXZlRmluaXRlcywiIil9fWZ1bmN0aW9uIEpKKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2Iiw1KSxIbSgxLEdKLDUsMSwiZGl2Iiw2KSxIbSgyLFlKLDUsMSwiZGl2Iiw2KSxIbSgzLHFKLDUsMSwiZGl2Iiw2KSxIbSg0LFpKLDUsMSwiZGl2Iiw2KSxIbSg1LFhKLDUsMSwiZGl2Iiw2KSxIbSg2LEtKLDUsMSwiZGl2Iiw2KSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxodSgibmdJZiIsdm9pZCAwIT09dC5udW1OYU5zJiZ0Lm51bU5hTnM+MCksRGMoMSksaHUoIm5nSWYiLHZvaWQgMCE9PXQubnVtTmVnYXRpdmVJbmZzJiZ0Lm51bU5lZ2F0aXZlSW5mcz4wKSxEYygxKSxodSgibmdJZiIsdm9pZCAwIT09dC5udW1Qb3NpdGl2ZUluZnMmJnQubnVtUG9zaXRpdmVJbmZzPjApLERjKDEpLGh1KCJuZ0lmIix2b2lkIDAhPT10Lm51bU5lZ2F0aXZlRmluaXRlcyYmdC5udW1OZWdhdGl2ZUZpbml0ZXM+MCksRGMoMSksaHUoIm5nSWYiLHZvaWQgMCE9PXQubnVtWmVyb3MmJnQubnVtWmVyb3M+MCksRGMoMSksaHUoIm5nSWYiLHZvaWQgMCE9PXQubnVtUG9zaXRpdmVGaW5pdGVzJiZ0Lm51bVBvc2l0aXZlRmluaXRlcz4wKX19Y29uc3QgUUo9ZnVuY3Rpb24odCl7cmV0dXJuWyJjb250YWluZXIiLHRdfTtmdW5jdGlvbiAkSih0LGUpe2lmKDEmdCYmTXUoMCwiZGVidWctdGVuc29yLWR0eXBlIiw1KSwyJnQpe2h1KCJkdHlwZSIsTnUoKS5kZWJ1Z1RlbnNvclZhbHVlLmR0eXBlKX19ZnVuY3Rpb24gdFEodCxlKXtpZigxJnQmJk11KDAsImRlYnVnLXRlbnNvci1yYW5rIiw2KSwyJnQpe2h1KCJyYW5rIixOdSgpLmRlYnVnVGVuc29yVmFsdWUucmFuayl9fWZ1bmN0aW9uIGVRKHQsZSl7aWYoMSZ0JiZNdSgwLCJkZWJ1Zy10ZW5zb3Itc2hhcGUiLDcpLDImdCl7aHUoInNoYXBlIixOdSgpLmRlYnVnVGVuc29yVmFsdWUuc2hhcGUpfX1mdW5jdGlvbiBuUSh0LGUpe2lmKDEmdCYmTXUoMCwiZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuIiw4KSwyJnQpe2h1KCJoYXNJbmZPck5hTiIsTnUoKS5kZWJ1Z1RlbnNvclZhbHVlLmhhc0luZk9yTmFOKX19ZnVuY3Rpb24gb1EodCxlKXtpZigxJnQmJk11KDAsImRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biIsOSksMiZ0KXtjb25zdCB0PU51KCk7RnUoInNpemUiLHQuZGVidWdUZW5zb3JWYWx1ZS5zaXplKSxodSgibnVtTmVnYXRpdmVJbmZzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVJbmZzKSgibnVtUG9zaXRpdmVJbmZzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVJbmZzKSgibnVtTmFOcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bU5hTnMpKCJudW1OZWdhdGl2ZUZpbml0ZXMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUZpbml0ZXMpKCJudW1aZXJvcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bVplcm9zKSgibnVtUG9zaXRpdmVGaW5pdGVzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVGaW5pdGVzKX19Y29uc3QgaVE9IlxuICA6aG9zdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgIGhlaWdodDogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIHBhZGRpbmc6IDFweCAzcHg7XG4gICAgd2lkdGg6IG1heC1jb250ZW50O1xuICB9XG4iO2NsYXNzIGFRe31hUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YVEpfSxhUS7JtWNtcD1zbyh7dHlwZTphUSxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLWR0eXBlIl1dLGlucHV0czp7ZHR5cGU6ImR0eXBlIn0sZGVjbHM6MSx2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCksMiZlJiZrZigiICIsbi5kdHlwZSwiICIpfSxzdHlsZXM6W2pKXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYVEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGVidWctdGVuc29yLWR0eXBlIix0ZW1wbGF0ZToiIHt7IGR0eXBlIH19ICIsc3R5bGVzOltpUV19XX1dLG51bGwse2R0eXBlOlt7dHlwZTpSX31dfSk7Y2xhc3MgclF7fXJRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyUSl9LHJRLsm1Y21wPXNvKHt0eXBlOnJRLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItcmFuayJdXSxpbnB1dHM6e3Jhbms6InJhbmsifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQZigwKSwyJmUmJmtmKCIgIixuLnJhbmssIkQgIil9LHN0eWxlczpbakpdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItcmFuayIsdGVtcGxhdGU6IiB7eyByYW5rIH19RCAiLHN0eWxlczpbaVFdfV19XSxudWxsLHtyYW5rOlt7dHlwZTpSX31dfSk7Y2xhc3Mgc1F7Z2V0IHNoYXBlU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2hhcGUubWFwKCh0PT52b2lkIDA9PT10PyI/IjpTdHJpbmcodCkpKS5qb2luKCIsIikrIl0ifX1zUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c1EpfSxzUS7JtWNtcD1zbyh7dHlwZTpzUSxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLXNoYXBlIl1dLGlucHV0czp7c2hhcGU6InNoYXBlIn0sZGVjbHM6MSx2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmUGYoMCksMiZlJiZrZigiIHNoYXBlOiIsbi5zaGFwZVN0cmluZywiICIpfSxzdHlsZXM6W2pKXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc1EsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGVidWctdGVuc29yLXNoYXBlIix0ZW1wbGF0ZToiIHNoYXBlOnt7IHNoYXBlU3RyaW5nIH19ICIsc3R5bGVzOltpUV19XX1dLG51bGwse3NoYXBlOlt7dHlwZTpSX31dfSk7Y2xhc3MgbFF7Z2V0IGJyZWFrZG93bkV4aXN0cygpe3JldHVybiB2b2lkIDAhPT10aGlzLm51bU5hTnN8fHZvaWQgMCE9PXRoaXMubnVtTmVnYXRpdmVJbmZzfHx2b2lkIDAhPT10aGlzLm51bVBvc2l0aXZlSW5mc3x8dm9pZCAwIT09dGhpcy5udW1OZWdhdGl2ZUZpbml0ZXN8fHZvaWQgMCE9PXRoaXMubnVtWmVyb3N8fHZvaWQgMCE9PXRoaXMubnVtUG9zaXRpdmVGaW5pdGVzfX1sUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bFEpfSxsUS7JtWNtcD1zbyh7dHlwZTpsUSxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIl1dLGlucHV0czp7c2l6ZToic2l6ZSIsbnVtTmFOczoibnVtTmFOcyIsbnVtTmVnYXRpdmVJbmZzOiJudW1OZWdhdGl2ZUluZnMiLG51bVBvc2l0aXZlSW5mczoibnVtUG9zaXRpdmVJbmZzIixudW1OZWdhdGl2ZUZpbml0ZXM6Im51bU5lZ2F0aXZlRmluaXRlcyIsbnVtWmVyb3M6Im51bVplcm9zIixudW1Qb3NpdGl2ZUZpbml0ZXM6Im51bVBvc2l0aXZlRmluaXRlcyJ9LGRlY2xzOjcsdmFyczozLGNvbnN0czpbWzEsInNpemUiXSxbMSwic2l6ZS12YWx1ZSJdLFsiY2xhc3MiLCJicmVhayIsNCwibmdJZiJdLFsiY2xhc3MiLCJicmVha2Rvd24iLDQsIm5nSWYiXSxbMSwiYnJlYWsiXSxbMSwiYnJlYWtkb3duIl0sWyJjbGFzcyIsImNhdGVnb3J5Iiw0LCJuZ0lmIl0sWzEsImNhdGVnb3J5Il0sWzEsImNhdGVnb3J5LXRhZyIsImluZmluaXRlIl0sWzEsImNhdGVnb3J5LWNvdW50Il0sWzEsImNhdGVnb3J5LXRhZyIsImZpbml0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJzcGFuIiksUGYoMiwic2l6ZToiKSxDdSgpLF91KDMsInNwYW4iLDEpLFBmKDQpLEN1KCksQ3UoKSxIbSg1LFdKLDEsMCwiZGl2IiwyKSxIbSg2LEpKLDcsNiwiZGl2IiwzKSksMiZlJiYoRGMoNCksd2Yobi5zaXplKSxEYygxKSxodSgibmdJZiIsbi5icmVha2Rvd25FeGlzdHMpLERjKDEpLGh1KCJuZ0lmIixuLmJyZWFrZG93bkV4aXN0cykpfSxkaXJlY3RpdmVzOltQdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHg7XG4gICAgICB9XG4gICAgICAuYnJlYWtbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuc2l6ZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTFweDtcbiAgICAgICAgbWFyZ2luOiAwIDNweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICAgIC5icmVha2Rvd25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGhlaWdodDogMTFweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgaGVpZ3RoOiAxMDAlO1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuY2F0ZWdvcnktdGFnW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgcGFkZGluZzogMCAycHg7XG4gICAgICB9XG4gICAgICAuZmluaXRlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7XG4gICAgICAgIGNvbG9yOiAjZmVmZWZlO1xuICAgICAgfVxuICAgICAgLmluZmluaXRlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihsUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24iLHRlbXBsYXRlOidcbiAgICA8ZGl2IGNsYXNzPSJzaXplIj5cbiAgICAgIDxzcGFuPnNpemU6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9InNpemUtdmFsdWUiPnt7IHNpemUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj0iYnJlYWtkb3duRXhpc3RzIiBjbGFzcz0iYnJlYWsiPjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9ImJyZWFrZG93bkV4aXN0cyIgY2xhc3M9ImJyZWFrZG93biI+XG4gICAgICA8ZGl2ICpuZ0lmPSJudW1OYU5zICE9PSB1bmRlZmluZWQgJiYgbnVtTmFOcyA+IDAiIGNsYXNzPSJjYXRlZ29yeSI+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgaW5maW5pdGUiPk5hTjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bU5hTnMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9Im51bU5lZ2F0aXZlSW5mcyAhPT0gdW5kZWZpbmVkICYmIG51bU5lZ2F0aXZlSW5mcyA+IDAiXG4gICAgICAgIGNsYXNzPSJjYXRlZ29yeSJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBpbmZpbml0ZSI+LeKInjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bU5lZ2F0aXZlSW5mcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj0ibnVtUG9zaXRpdmVJbmZzICE9PSB1bmRlZmluZWQgJiYgbnVtUG9zaXRpdmVJbmZzID4gMCJcbiAgICAgICAgY2xhc3M9ImNhdGVnb3J5IlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGluZmluaXRlIj4r4oiePC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtUG9zaXRpdmVJbmZzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPSJudW1OZWdhdGl2ZUZpbml0ZXMgIT09IHVuZGVmaW5lZCAmJiBudW1OZWdhdGl2ZUZpbml0ZXMgPiAwIlxuICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgZmluaXRlIj4tPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtTmVnYXRpdmVGaW5pdGVzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPSJudW1aZXJvcyAhPT0gdW5kZWZpbmVkICYmIG51bVplcm9zID4gMCIgY2xhc3M9ImNhdGVnb3J5Ij5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBmaW5pdGUiPjA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+w5d7eyBudW1aZXJvcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj0ibnVtUG9zaXRpdmVGaW5pdGVzICE9PSB1bmRlZmluZWQgJiYgbnVtUG9zaXRpdmVGaW5pdGVzID4gMCJcbiAgICAgICAgY2xhc3M9ImNhdGVnb3J5IlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGZpbml0ZSI+Kzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bVBvc2l0aXZlRmluaXRlcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgcGFkZGluZzogMXB4O1xuICAgICAgfVxuICAgICAgLmJyZWFrIHtcbiAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuc2l6ZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4O1xuICAgICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgICAgLmJyZWFrZG93biB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IDExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgICAuY2F0ZWdvcnkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgaGVpZ3RoOiAxMDAlO1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuY2F0ZWdvcnktdGFnIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICBwYWRkaW5nOiAwIDJweDtcbiAgICAgIH1cbiAgICAgIC5maW5pdGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhO1xuICAgICAgICBjb2xvcjogI2ZlZmVmZTtcbiAgICAgIH1cbiAgICAgIC5pbmZpbml0ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuICAgICJdfV19XSxudWxsLHtzaXplOlt7dHlwZTpSX31dLG51bU5hTnM6W3t0eXBlOlJffV0sbnVtTmVnYXRpdmVJbmZzOlt7dHlwZTpSX31dLG51bVBvc2l0aXZlSW5mczpbe3R5cGU6Ul99XSxudW1OZWdhdGl2ZUZpbml0ZXM6W3t0eXBlOlJffV0sbnVtWmVyb3M6W3t0eXBlOlJffV0sbnVtUG9zaXRpdmVGaW5pdGVzOlt7dHlwZTpSX31dfSk7Y2xhc3MgY1F7Z2V0IGluZm9TdHJpbmcoKXtyZXR1cm4gdGhpcy5oYXNJbmZPck5hTj8iSGFzIOKIni9OYU4iOiJObyDiiJ4vTmFOIn19Y1EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGNRKX0sY1EuybVjbXA9c28oe3R5cGU6Y1Esc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbiJdXSxpbnB1dHM6e2hhc0luZk9yTmFOOiJoYXNJbmZPck5hTiJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWzMsIm5nQ2xhc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksUGYoMSksQ3UoKSksMiZlJiYoaHUoIm5nQ2xhc3MiLGl5KDIsUUosbi5oYXNJbmZPck5hTj8iaGFzLWluZi1vci1uYW4iOiIiKSksRGMoMSksa2YoIiAiLG4uaW5mb1N0cmluZywiICIpKX0sZGlyZWN0aXZlczpbQ3ZdLHN0eWxlczpbIi5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBjb2xvcjogIzY2NjY2NjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgcGFkZGluZzogMXB4IDNweDtcbiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgfVxuICAgICAgLmhhcy1pbmYtb3ItbmFuW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLHRlbXBsYXRlOiJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cIlsnY29udGFpbmVyJywgaGFzSW5mT3JOYU4gPyAnaGFzLWluZi1vci1uYW4nIDogJyddXCI+XG4gICAgICB7eyBpbmZvU3RyaW5nIH19XG4gICAgPC9kaXY+XG4gICIsc3R5bGVzOlsiXG4gICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBjb2xvcjogIzY2NjY2NjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgcGFkZGluZzogMXB4IDNweDtcbiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgfVxuICAgICAgLmhhcy1pbmYtb3ItbmFuIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG4gICAgIl19XX1dLG51bGwse2hhc0luZk9yTmFOOlt7dHlwZTpSX31dfSk7Y2xhc3MgZFF7fWRRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkUSl9LGRRLsm1Y21wPXNvKHt0eXBlOmRRLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItdmFsdWUiXV0saW5wdXRzOntkZWJ1Z1RlbnNvclZhbHVlOiJkZWJ1Z1RlbnNvclZhbHVlIn0sZGVjbHM6NSx2YXJzOjUsY29uc3RzOltbMywiZHR5cGUiLDQsIm5nSWYiXSxbMywicmFuayIsNCwibmdJZiJdLFszLCJzaGFwZSIsNCwibmdJZiJdLFszLCJoYXNJbmZPck5hTiIsNCwibmdJZiJdLFszLCJzaXplIiwibnVtTmVnYXRpdmVJbmZzIiwibnVtUG9zaXRpdmVJbmZzIiwibnVtTmFOcyIsIm51bU5lZ2F0aXZlRmluaXRlcyIsIm51bVplcm9zIiwibnVtUG9zaXRpdmVGaW5pdGVzIiw0LCJuZ0lmIl0sWzMsImR0eXBlIl0sWzMsInJhbmsiXSxbMywic2hhcGUiXSxbMywiaGFzSW5mT3JOYU4iXSxbMywic2l6ZSIsIm51bU5lZ2F0aXZlSW5mcyIsIm51bVBvc2l0aXZlSW5mcyIsIm51bU5hTnMiLCJudW1OZWdhdGl2ZUZpbml0ZXMiLCJudW1aZXJvcyIsIm51bVBvc2l0aXZlRmluaXRlcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSG0oMCwkSiwxLDEsImRlYnVnLXRlbnNvci1kdHlwZSIsMCksSG0oMSx0USwxLDEsImRlYnVnLXRlbnNvci1yYW5rIiwxKSxIbSgyLGVRLDEsMSwiZGVidWctdGVuc29yLXNoYXBlIiwyKSxIbSgzLG5RLDEsMSwiZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuIiwzKSxIbSg0LG9RLDEsNywiZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIiw0KSksMiZlJiYoaHUoIm5nSWYiLHZvaWQgMCE9PW4uZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSksRGMoMSksaHUoIm5nSWYiLHZvaWQgMCE9PW4uZGVidWdUZW5zb3JWYWx1ZS5yYW5rKSxEYygxKSxodSgibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLnNoYXBlKSxEYygxKSxodSgibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLmhhc0luZk9yTmFOKSxEYygxKSxodSgibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLnNpemUpKX0sZGlyZWN0aXZlczpbUHYsYVEsclEsc1EsY1EsbFFdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICB9XG4gICAgICBkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihkUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItdmFsdWUiLHRlbXBsYXRlOidcbiAgICA8ZGVidWctdGVuc29yLWR0eXBlXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSAhPT0gdW5kZWZpbmVkIlxuICAgICAgW2R0eXBlXT0iZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItZHR5cGU+XG4gICAgPGRlYnVnLXRlbnNvci1yYW5rXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5yYW5rICE9PSB1bmRlZmluZWQiXG4gICAgICBbcmFua109ImRlYnVnVGVuc29yVmFsdWUucmFuayJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItcmFuaz5cbiAgICA8ZGVidWctdGVuc29yLXNoYXBlXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSAhPT0gdW5kZWZpbmVkIlxuICAgICAgW3NoYXBlXT0iZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3Itc2hhcGU+XG4gICAgPGRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hblxuICAgICAgKm5nSWY9ImRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4gIT09IHVuZGVmaW5lZCJcbiAgICAgIFtoYXNJbmZPck5hTl09ImRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4iXG4gICAgPlxuICAgIDwvZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuPlxuICAgIDxkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd25cbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLnNpemUgIT09IHVuZGVmaW5lZCJcbiAgICAgIHNpemU9Int7IGRlYnVnVGVuc29yVmFsdWUuc2l6ZSB9fSJcbiAgICAgIFtudW1OZWdhdGl2ZUluZnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bU5lZ2F0aXZlSW5mcyJcbiAgICAgIFtudW1Qb3NpdGl2ZUluZnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bVBvc2l0aXZlSW5mcyJcbiAgICAgIFtudW1OYU5zXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1OYU5zIlxuICAgICAgW251bU5lZ2F0aXZlRmluaXRlc109ImRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVGaW5pdGVzIlxuICAgICAgW251bVplcm9zXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1aZXJvcyJcbiAgICAgIFtudW1Qb3NpdGl2ZUZpbml0ZXNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bVBvc2l0aXZlRmluaXRlcyJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgIH1cbiAgICAgIGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICAiXX1dfV0sbnVsbCx7ZGVidWdUZW5zb3JWYWx1ZTpbe3R5cGU6Ul99XX0pO2NvbnN0IHBRPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3RlbnNvckRlYnVnTW9kZTp0LGFycmF5OmV9fTtmdW5jdGlvbiBtUSh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsMTIpLF91KDEsImRpdiIsMTMpLFBmKDIpLEN1KCksX3UoMywiZGl2IiwxNCksTXUoNCwiZGVidWctdGVuc29yLXZhbHVlIiwxNSksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4LG89TnUoMyk7RGMoMiksa2YoIk91dHB1dCBzbG90ICIsbiwiOiIpLERjKDIpLGh1KCJkZWJ1Z1RlbnNvclZhbHVlIixvLnBhcnNlRGVidWdUZW5zb3JWYWx1ZShheSgyLHBRLG8udGVuc29yRGVidWdNb2RlLHQpKSl9fWZ1bmN0aW9uIHVRKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxMCksSG0oMSxtUSw1LDUsImRpdiIsMTEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTtEYygxKSxodSgibmdGb3JPZiIsdC5kZWJ1Z1RlbnNvclZhbHVlcyl9fWZ1bmN0aW9uIGZRKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiksX3UoMSwiZGl2IiksX3UoMiwiZGl2IiwzKSxfdSgzLCJzcGFuIiw0KSxQZig0LCIgT3A6ICIpLEN1KCksX3UoNSwic3BhbiIsNSksUGYoNiksQ3UoKSxDdSgpLF91KDcsImRpdiIsMyksX3UoOCwic3BhbiIsNCksUGYoOSwiICMgb2YgaW5wdXQgdGVuc29yczogIiksQ3UoKSxfdSgxMCwic3BhbiIsNiksUGYoMTEpLEN1KCksQ3UoKSxfdSgxMiwiZGl2IiwzKSxfdSgxMywic3BhbiIsNCksUGYoMTQsIiAjIG9mIG91dHB1dCB0ZW5zb3JzOiAiKSxDdSgpLF91KDE1LCJzcGFuIiw3KSxQZigxNiksQ3UoKSxfdSgxNywic3BhbiIsOCksUGYoMTgpLEN1KCksQ3UoKSxIbSgxOSx1USwyLDEsImRpdiIsOSksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYyg2KSxrZigiICIsdC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vcF90eXBlLCIgIiksRGMoNSksa2YoIiAiLG51bGw9PXQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcz8wOnQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcy5sZW5ndGgsIiAiKSxEYyg1KSxrZigiICIsbnVsbD09dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vdXRwdXRfdGVuc29yX2lkcz8wOnQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEub3V0cHV0X3RlbnNvcl9pZHMubGVuZ3RoLCIgIiksRGMoMiksa2YoIiAoZGVidWcgbW9kZTogIix0LlRlbnNvckRlYnVnTW9kZVt0LnRlbnNvckRlYnVnTW9kZV0sIikgIiksRGMoMSksaHUoIm5nSWYiLHQuaGFzRGVidWdUZW5zb3JWYWx1ZXMpfX1mdW5jdGlvbiBnUSh0LGUpe31jbGFzcyBoUXtjb25zdHJ1Y3Rvcigpe3RoaXMudGVuc29yRGVidWdNb2RlPWJLLlVOU1BFQ0lGSUVELHRoaXMuaGFzRGVidWdUZW5zb3JWYWx1ZXM9ITEsdGhpcy5kZWJ1Z1RlbnNvclZhbHVlcz1udWxsLHRoaXMuZGVidWdUZW5zb3JEdHlwZXM9bnVsbCx0aGlzLlRlbnNvckRlYnVnTW9kZT1iSyx0aGlzLnBhcnNlRGVidWdUZW5zb3JWYWx1ZT1VSn19aFEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhRKX0saFEuybVjbXA9c28oe3R5cGU6aFEsc2VsZWN0b3JzOltbImV4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudCJdXSxpbnB1dHM6e2ZvY3VzZWRFeGVjdXRpb25JbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkluZGV4Iixmb2N1c2VkRXhlY3V0aW9uRGF0YToiZm9jdXNlZEV4ZWN1dGlvbkRhdGEiLHRlbnNvckRlYnVnTW9kZToidGVuc29yRGVidWdNb2RlIixoYXNEZWJ1Z1RlbnNvclZhbHVlczoiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLGRlYnVnVGVuc29yVmFsdWVzOiJkZWJ1Z1RlbnNvclZhbHVlcyIsZGVidWdUZW5zb3JEdHlwZXM6ImRlYnVnVGVuc29yRHR5cGVzIn0sZGVjbHM6Nyx2YXJzOjMsY29uc3RzOltbMSwiZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImxvYWRpbmdfc2VjdGlvbiIsIiJdLFsxLCJleGVjdXRpb24tZGF0YS1maWVsZCJdLFsxLCJleGVjdXRpb24tZGF0YS1rZXkiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiLCJvcC10eXBlIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIiwiaW5wdXQtdGVuc29ycyJdLFsxLCJleGVjdXRpb24tZGF0YS12YWx1ZSIsIm91dHB1dC10ZW5zb3JzIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIl0sWyJjbGFzcyIsIm91dHB1dC1zbG90cyIsNCwibmdJZiJdLFsxLCJvdXRwdXQtc2xvdHMiXSxbImNsYXNzIiwib3V0cHV0LXNsb3QtY29udGFpbmVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwib3V0cHV0LXNsb3QtY29udGFpbmVyIl0sWzEsIm91dHB1dC1zbG90LW51bWJlciJdLFsxLCJvdXRwdXQtc2xvdC1kZWJ1Zy10ZW5zb3ItdmFsdWUiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJkaXYiKSxfdSgyLCJzcGFuIiksUGYoMyksQ3UoKSxDdSgpLEhtKDQsZlEsMjAsNSwiZGl2IiwxKSxIbSg1LGdRLDAsMCwibmctdGVtcGxhdGUiLG51bGwsMixxeSksQ3UoKSksMiZlKXtjb25zdCB0PUZtKDYpO0RjKDMpLGtmKCIgUHl0aG9uIEV4ZWN1dGlvbiAjIixuLmZvY3VzZWRFeGVjdXRpb25JbmRleCwiICIpLERjKDEpLGh1KCJuZ0lmIixudWxsIT09bi5mb2N1c2VkRXhlY3V0aW9uRGF0YSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LHh2LGRRXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmRlYnVnLXRlbnNvci12YWx1ZXMtdGFibGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmRlYnVnLXRlbnNvci12YWx1ZXMtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICMwMDA7dGV4dC1hbGlnbjpsZWZ0fS5kZWJ1Zy10ZW5zb3ItdmFsdWVzLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmxlZnR9LmV4ZWN1dGlvbi1kYXRhLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9LmV4ZWN1dGlvbi1kYXRhLWtleVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEyMHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MTIwcHh9LmV4ZWN1dGlvbi1kYXRhLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDoxMHB4fS5mb2N1cy1leGVjdXRpb24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNjODA7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEycHg7aGVpZ2h0OjEyMHB4O3BhZGRpbmc6NXB4O3dpZHRoOjM2MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5mb2N1cy1leGVjdXRpb24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZvY3VzLWV4ZWN1dGlvbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2U2NTEwMH0ub3V0cHV0LXNsb3RzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjBweDtvdmVyZmxvdy14OmF1dG87b3ZlcmZsb3cteTphdXRvfS5vdXRwdXQtc2xvdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7bWFyZ2luLXRvcDo1cHg7cGFkZGluZzoycHggMDt2ZXJ0aWNhbC1hbGlnbjp0b3B9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm91dHB1dC1zbG90LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vdXRwdXQtc2xvdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9Lm91dHB1dC1zbG90LW51bWJlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jaztmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZX0ub3V0cHV0LXNsb3QtZGVidWctdGVuc29yLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO21hcmdpbjozcHggMCAzcHggMzBweH0ub3V0cHV0LXRlbnNvcnNbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6NXB4fSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJleGVjdXRpb24tZGF0YS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2V4ZWN1dGlvbl9kYXRhX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2V4ZWN1dGlvbl9kYXRhX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7Zm9jdXNlZEV4ZWN1dGlvbkluZGV4Olt7dHlwZTpSX31dLGZvY3VzZWRFeGVjdXRpb25EYXRhOlt7dHlwZTpSX31dLHRlbnNvckRlYnVnTW9kZTpbe3R5cGU6Ul99XSxoYXNEZWJ1Z1RlbnNvclZhbHVlczpbe3R5cGU6Ul99XSxkZWJ1Z1RlbnNvclZhbHVlczpbe3R5cGU6Ul99XSxkZWJ1Z1RlbnNvckR0eXBlczpbe3R5cGU6Ul99XX0pO2NvbnN0IGJRPSJVbmtub3duIGR0eXBlIjtjbGFzcyB5UXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mb2N1c2VkRXhlY3V0aW9uRGF0YSQ9dGhpcy5zdG9yZS5waXBlKHJTKGJKKSksdGhpcy50ZW5zb3JEZWJ1Z01vZGUkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhiSiwodD0+bnVsbD09PXQ/YksuVU5TUEVDSUZJRUQ6dC50ZW5zb3JfZGVidWdfbW9kZSkpKSksdGhpcy5oYXNEZWJ1Z1RlbnNvclZhbHVlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGJKLCh0PT57aWYobnVsbD09PXR8fG51bGw9PT10LmRlYnVnX3RlbnNvcl92YWx1ZXMpcmV0dXJuITE7Zm9yKGNvbnN0IGUgb2YgdC5kZWJ1Z190ZW5zb3JfdmFsdWVzKWlmKG51bGwhPT1lJiZlLmxlbmd0aD4wKXJldHVybiEwO3JldHVybiExfSkpKSksdGhpcy5kZWJ1Z1RlbnNvclZhbHVlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGJKLCh0PT5udWxsPT09dD9udWxsOnQuZGVidWdfdGVuc29yX3ZhbHVlcykpKSksdGhpcy5kZWJ1Z1RlbnNvckR0eXBlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKGJKLCh0PT57aWYobnVsbD09PXR8fG51bGw9PT10LmRlYnVnX3RlbnNvcl92YWx1ZXMpcmV0dXJuIG51bGw7aWYodC50ZW5zb3JfZGVidWdfbW9kZSE9PWJLLkZVTExfSEVBTFRIJiZ0LnRlbnNvcl9kZWJ1Z19tb2RlIT09YksuU0hBUEUpcmV0dXJuIG51bGw7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBvZiB0LmRlYnVnX3RlbnNvcl92YWx1ZXMpaWYobnVsbD09PW4pZS5wdXNoKGJRKTtlbHNle2NvbnN0IG89U3RyaW5nKHQudGVuc29yX2RlYnVnX21vZGU9PT1iSy5GVUxMX0hFQUxUSD9uWzJdOm5bMV0pO2UucHVzaChWSltvXXx8YlEpfXJldHVybiBlfSkpKSl9fWZ1bmN0aW9uIF9RKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwibWF0LXNsaWRlciIsMTEpLER1KCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDIpLm9uU2xpZGVyQ2hhbmdlLmVtaXQobi52YWx1ZSl9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMik7aHUoIm1pbiIsMCkoIm1heCIsdC5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCkoInZhbHVlIix0LnNjcm9sbEJlZ2luSW5kZXgpfX1mdW5jdGlvbiBDUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsNiksX3UoMSwiYnV0dG9uIiw3KSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkub25OYXZpZ2F0ZUxlZnQuZW1pdCgpfSkpLFBmKDIsIiA8ICIpLEN1KCksX3UoMywiZGl2Iiw4KSxQZig0KSxDdSgpLF91KDUsImJ1dHRvbiIsOSksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgpLm9uTmF2aWdhdGVSaWdodC5lbWl0KCl9KSksUGYoNiwiID4gIiksQ3UoKSxIbSg3LF9RLDEsMywibWF0LXNsaWRlciIsMTApLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7RGMoNCksRGYoIiAiLHQuc2Nyb2xsQmVnaW5JbmRleCwiIH4gIix0LnNjcm9sbEJlZ2luSW5kZXgrdC5kaXNwbGF5Q291bnQtMSwiIG9mICIsdC5udW1FeGVjdXRpb25zLCIgIiksRGMoMyksaHUoIm5nSWYiLHQuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQ+MCl9fXlRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5USkoZnUoaVMpKX0seVEuybVjbXA9c28oe3R5cGU6eVEsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWV4ZWN1dGlvbi1kYXRhIl1dLGlucHV0czp7Zm9jdXNlZEV4ZWN1dGlvbkluZGV4OiJmb2N1c2VkRXhlY3V0aW9uSW5kZXgifSxkZWNsczo2LHZhcnM6MTYsY29uc3RzOltbMywiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IiwiZm9jdXNlZEV4ZWN1dGlvbkRhdGEiLCJ0ZW5zb3JEZWJ1Z01vZGUiLCJoYXNEZWJ1Z1RlbnNvclZhbHVlcyIsImRlYnVnVGVuc29yVmFsdWVzIiwiZGVidWdUZW5zb3JEdHlwZXMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsImV4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpKSwyJmUmJmh1KCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLG4uZm9jdXNlZEV4ZWN1dGlvbkluZGV4KSgiZm9jdXNlZEV4ZWN1dGlvbkRhdGEiLEN5KDEsNixuLmZvY3VzZWRFeGVjdXRpb25EYXRhJCkpKCJ0ZW5zb3JEZWJ1Z01vZGUiLEN5KDIsOCxuLnRlbnNvckRlYnVnTW9kZSQpKSgiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLEN5KDMsMTAsbi5oYXNEZWJ1Z1RlbnNvclZhbHVlcyQpKSgiZGVidWdUZW5zb3JWYWx1ZXMiLEN5KDQsMTIsbi5kZWJ1Z1RlbnNvclZhbHVlcyQpKSgiZGVidWdUZW5zb3JEdHlwZXMiLEN5KDUsMTQsbi5kZWJ1Z1RlbnNvckR0eXBlcyQpKX0sZGlyZWN0aXZlczpbaFFdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5USxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1leGVjdXRpb24tZGF0YSIsdGVtcGxhdGU6J1xuICAgIDxleGVjdXRpb24tZGF0YS1jb21wb25lbnRcbiAgICAgIFtmb2N1c2VkRXhlY3V0aW9uSW5kZXhdPSJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiXG4gICAgICBbZm9jdXNlZEV4ZWN1dGlvbkRhdGFdPSJmb2N1c2VkRXhlY3V0aW9uRGF0YSQgfCBhc3luYyJcbiAgICAgIFt0ZW5zb3JEZWJ1Z01vZGVdPSJ0ZW5zb3JEZWJ1Z01vZGUkIHwgYXN5bmMiXG4gICAgICBbaGFzRGVidWdUZW5zb3JWYWx1ZXNdPSJoYXNEZWJ1Z1RlbnNvclZhbHVlcyQgfCBhc3luYyJcbiAgICAgIFtkZWJ1Z1RlbnNvclZhbHVlc109ImRlYnVnVGVuc29yVmFsdWVzJCB8IGFzeW5jIlxuICAgICAgW2RlYnVnVGVuc29yRHR5cGVzXT0iZGVidWdUZW5zb3JEdHlwZXMkIHwgYXN5bmMiXG4gICAgPjwvZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtmb2N1c2VkRXhlY3V0aW9uSW5kZXg6W3t0eXBlOlJffV19KTtjb25zdCBNUT1mdW5jdGlvbih0LGUsbil7cmV0dXJuW3QsZSxuXX07ZnVuY3Rpb24gdlEodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJkaXYiLDE0KSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS5pbmRleDtyZXR1cm4gTnUoMikub25FeGVjdXRpb25EaWdlc3RDbGlja2VkLmVtaXQobil9KSksX3UoMSwiZGl2IiwxNSksUGYoMiksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXgsbz1OdSgyKTtEYygxKSxGdSgidGl0bGUiLHQub3BfdHlwZSksaHUoIm5nQ2xhc3MiLHJ5KDMsTVEsdC5pc19ncmFwaD8iZnVuYy1ncmFwaC1leGVjdXRpb24iOiIiLG49PT1vLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXg/ImZvY3VzZWQiOiIiLG8uZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzW25dfHwiIikpLERjKDEpLGtmKCIgIix0LnNob3J0X29wX3R5cGUsIiAiKX19ZnVuY3Rpb24geFEodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDEyKSxIbSgxLHZRLDMsNywiZGl2IiwxMyksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksaHUoIm5nRm9yT2YiLHQuZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMpfX1mdW5jdGlvbiBPUSh0LGUpe2lmKDEmdCYmKHZ1KDApLE11KDEsInRmLWRlYnVnZ2VyLXYyLWV4ZWN1dGlvbi1kYXRhIiwxNikseHUoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksaHUoImZvY3VzZWRFeGVjdXRpb25JbmRleCIsdC5mb2N1c2VkRXhlY3V0aW9uSW5kZXgpfX1jbGFzcyBQUXtjb25zdHJ1Y3Rvcigpe3RoaXMuYWN0aXZlUnVuSWQ9bnVsbCx0aGlzLmxvYWRpbmdOdW1FeGVjdXRpb25zPSExLHRoaXMubnVtRXhlY3V0aW9ucz0wLHRoaXMuc2Nyb2xsQmVnaW5JbmRleD0wLHRoaXMuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQ9MCx0aGlzLnBhZ2VTaXplPTAsdGhpcy5kaXNwbGF5Q291bnQ9MCx0aGlzLmRpc3BsYXlFeGVjdXRpb25EaWdlc3RzPVtdLHRoaXMuZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzPVtdLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkluZGV4PW51bGwsdGhpcy5mb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4PW51bGwsdGhpcy5mb2N1c2VkRXhlY3V0aW9uRGF0YT1udWxsLHRoaXMub25OYXZpZ2F0ZUxlZnQ9bmV3IFN5LHRoaXMub25OYXZpZ2F0ZVJpZ2h0PW5ldyBTeSx0aGlzLm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZD1uZXcgU3ksdGhpcy5vblNsaWRlckNoYW5nZT1uZXcgU3l9fVBRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQUSl9LFBRLsm1Y21wPXNvKHt0eXBlOlBRLHNlbGVjdG9yczpbWyJ0aW1lbGluZS1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVSdW5JZDoiYWN0aXZlUnVuSWQiLGxvYWRpbmdOdW1FeGVjdXRpb25zOiJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsbnVtRXhlY3V0aW9uczoibnVtRXhlY3V0aW9ucyIsc2Nyb2xsQmVnaW5JbmRleDoic2Nyb2xsQmVnaW5JbmRleCIsc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQ6InNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0IixwYWdlU2l6ZToicGFnZVNpemUiLGRpc3BsYXlDb3VudDoiZGlzcGxheUNvdW50IixkaXNwbGF5RXhlY3V0aW9uRGlnZXN0czoiZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMiLGRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlczoiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIixmb2N1c2VkRXhlY3V0aW9uSW5kZXg6ImZvY3VzZWRFeGVjdXRpb25JbmRleCIsZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCIsZm9jdXNlZEV4ZWN1dGlvbkRhdGE6ImZvY3VzZWRFeGVjdXRpb25EYXRhIn0sb3V0cHV0czp7b25OYXZpZ2F0ZUxlZnQ6Im9uTmF2aWdhdGVMZWZ0Iixvbk5hdmlnYXRlUmlnaHQ6Im9uTmF2aWdhdGVSaWdodCIsb25FeGVjdXRpb25EaWdlc3RDbGlja2VkOiJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQiLG9uU2xpZGVyQ2hhbmdlOiJvblNsaWRlckNoYW5nZSJ9LGRlY2xzOjksdmFyczo0LGNvbnN0czpbWzEsInRpbWVsaW5lLXRpdGxlIl0sWzEsImV4ZWN1dGlvbi1jb3VudCJdLFsxLCJ0b3AtbGV2ZWwtZXhlY3V0aW9ucyJdLFsiY2xhc3MiLCJuYXZpZ2F0aW9uLXNlY3Rpb24iLDQsIm5nSWYiXSxbImNsYXNzIiwiZXhlY3V0aW9uLXRpbWVsaW5lIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwibmF2aWdhdGlvbi1zZWN0aW9uIl0sWyJtYXQtYnV0dG9uIiwiIiwxLCJuYXZpZ2F0aW9uLWJ1dHRvbi1sZWZ0IiwzLCJjbGljayJdLFsxLCJuYXZpZ2F0aW9uLXBvc2l0aW9uLWluZm8iXSxbIm1hdC1idXR0b24iLCIiLDEsIm5hdmlnYXRpb24tYnV0dG9uLXJpZ2h0IiwzLCJjbGljayJdLFsiY2xhc3MiLCJ0aW1lbGluZS1zbGlkZXIiLCJzdGVwIiwiMSIsMywibWluIiwibWF4IiwidmFsdWUiLCJpbnB1dCIsNCwibmdJZiJdLFsic3RlcCIsIjEiLDEsInRpbWVsaW5lLXNsaWRlciIsMywibWluIiwibWF4IiwidmFsdWUiLCJpbnB1dCJdLFsxLCJleGVjdXRpb24tdGltZWxpbmUiXSxbMywiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJjbGljayJdLFsxLCJleGVjdXRpb24tZGlnZXN0IiwzLCJuZ0NsYXNzIiwidGl0bGUiXSxbMywiZm9jdXNlZEV4ZWN1dGlvbkluZGV4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJkaXYiKSxfdSgxLCJkaXYiLDApLFBmKDIsIiBQeXRob24gRXhlY3V0aW9uIFRpbWVsaW5lICIpLF91KDMsInNwYW4iLDEpLFBmKDQpLEN1KCksQ3UoKSxfdSg1LCJkaXYiLDIpLEhtKDYsQ1EsOCw0LCJkaXYiLDMpLEhtKDcseFEsMiwxLCJkaXYiLDQpLEhtKDgsT1EsMiwxLCJuZy1jb250YWluZXIiLDUpLEN1KCksQ3UoKSksMiZlJiYoRGMoNCksa2YoIiAoIixuLm51bUV4ZWN1dGlvbnMsIikgIiksRGMoMiksaHUoIm5nSWYiLG4ubnVtRXhlY3V0aW9ucyksRGMoMSksaHUoIm5nSWYiLG4ubnVtRXhlY3V0aW9ucyksRGMoMSksaHUoIm5nSWYiLG51bGwhPT1uLmFjdGl2ZVJ1bklkJiZudWxsIT09bi5mb2N1c2VkRXhlY3V0aW9uSW5kZXgpKX0sZGlyZWN0aXZlczpbUHYsV0wsSUoseHYsQ3YseVFdLHN0eWxlczpbIi5leGVjdXRpb24tZGlnZXN0W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIGNvbG9yOiAjNDI1MDY2O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICBwYWRkaW5nOiAxcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEycHg7XG59XG5cbi5leGVjdXRpb24tZGlnZXN0LmZ1bmMtZ3JhcGgtZXhlY3V0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjN2RiZjU7XG4gIGNvbG9yOiAjNGU1NjY0O1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLmV4ZWN1dGlvbi1kaWdlc3QuZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNGIzO1xuICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmV4ZWN1dGlvbi1kaWdlc3QuSW5mTmFuQWxlcnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgY29sb3I6ICNmZmY7XG59XG5cblxuLmV4ZWN1dGlvbi1kaWdlc3RbX25nY29udGVudC0lQ09NUCVdOmhvdmVyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5leGVjdXRpb24tdGltZWxpbmVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogZmxleDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi50aW1lbGluZS1zbGlkZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGxlZnQ6IDM0MHB4OyBcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNDBweDtcbn1cblxuICAudGltZWxpbmUtc2xpZGVyIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICByaWdodDogLTQwcHg7XG4gIHdpZHRoOiA4MHB4O1xufVxuXG5cbi5uYXZpZ2F0aW9uLXBvc2l0aW9uLWluZm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5uYXZpZ2F0aW9uLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiA0OHB4O1xuICBsaW5lLWhlaWdodDogNDhweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMTAwJTtcbn0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUFEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGltZWxpbmUtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi90aW1lbGluZV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi90aW1lbGluZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7YWN0aXZlUnVuSWQ6W3t0eXBlOlJffV0sbG9hZGluZ051bUV4ZWN1dGlvbnM6W3t0eXBlOlJffV0sbnVtRXhlY3V0aW9uczpbe3R5cGU6Ul99XSxzY3JvbGxCZWdpbkluZGV4Olt7dHlwZTpSX31dLHNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0Olt7dHlwZTpSX31dLHBhZ2VTaXplOlt7dHlwZTpSX31dLGRpc3BsYXlDb3VudDpbe3R5cGU6Ul99XSxkaXNwbGF5RXhlY3V0aW9uRGlnZXN0czpbe3R5cGU6Ul99XSxkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXM6W3t0eXBlOlJffV0sZm9jdXNlZEV4ZWN1dGlvbkluZGV4Olt7dHlwZTpSX31dLGZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXg6W3t0eXBlOlJffV0sZm9jdXNlZEV4ZWN1dGlvbkRhdGE6W3t0eXBlOlJffV0sb25OYXZpZ2F0ZUxlZnQ6W3t0eXBlOkVffV0sb25OYXZpZ2F0ZVJpZ2h0Olt7dHlwZTpFX31dLG9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZDpbe3R5cGU6RV99XSxvblNsaWRlckNoYW5nZTpbe3R5cGU6RV99XX0pO2NvbnN0IHdRPVsiX19mb3J3YXJkXyIsIl9fYmFja3dhcmRfIiwiX19pbmZlcmVuY2VfIl07Y2xhc3Mga1F7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlUnVuSWQkPXRoaXMuc3RvcmUucGlwZShyUyhBSykpLHRoaXMubG9hZGluZ051bUV4ZWN1dGlvbnMkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhVSywodD0+dC5zdGF0ZT09R0UuTE9BRElORykpKSksdGhpcy5zY3JvbGxCZWdpbkluZGV4JD10aGlzLnN0b3JlLnBpcGUoclMoR0spKSx0aGlzLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0JD10aGlzLnN0b3JlLnBpcGUoclMoYlMoV0sscUssKCh0LGUpPT5NYXRoLm1heCgwLHQtZSkpKSkpLHRoaXMucGFnZVNpemUkPXRoaXMuc3RvcmUucGlwZShyUyhZSykpLHRoaXMuZGlzcGxheUNvdW50JD10aGlzLnN0b3JlLnBpcGUoclMocUspKSx0aGlzLmRpc3BsYXlFeGVjdXRpb25EaWdlc3RzJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoWkssKHQ9PnQubWFwKCh0PT4oZnVuY3Rpb24gZSh0LG49MSl7aWYoIXQpcmV0dXJue29wX3R5cGU6IihOL0EpIixzaG9ydF9vcF90eXBlOiIuLiIsaXNfZ3JhcGg6ITF9O2NvbnN0IG89d1EuZmlsdGVyKChlPT50Lm9wX3R5cGUuc3RhcnRzV2l0aChlKSkpO2lmKG8ubGVuZ3RoKXtjb25zdCBlPXQub3BfdHlwZS5zbGljZShvWzBdLmxlbmd0aCk7cmV0dXJue29wX3R5cGU6dC5vcF90eXBlLHNob3J0X29wX3R5cGU6ZS5zbGljZSgwLG4pLGlzX2dyYXBoOiEwfX1yZXR1cm57b3BfdHlwZTp0Lm9wX3R5cGUsc2hvcnRfb3BfdHlwZTp0Lm9wX3R5cGUuc2xpY2UoMCxuKSxpc19ncmFwaDohMX19KSh0KSkpKSkpKSx0aGlzLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKGRKKSksdGhpcy5mb2N1c2VkRXhlY3V0aW9uSW5kZXgkPXRoaXMuc3RvcmUucGlwZShyUyhtSikpLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKHVKKSksdGhpcy5udW1FeGVjdXRpb25zJD10aGlzLnN0b3JlLnBpcGUoclMoV0spKX1vbk5hdmlnYXRlTGVmdCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goS1goKSl9b25OYXZpZ2F0ZVJpZ2h0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChKWCgpKX1vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCgkWCh7ZGlzcGxheUluZGV4OnR9KSl9b25TbGlkZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChRWCh7aW5kZXg6dH0pKX19ZnVuY3Rpb24gU1EodCxlKXsxJnQmJihfdSgwLCJzcGFuIiksUGYoMSwiIE91dHB1dCAiKSxDdSgpKX1mdW5jdGlvbiBEUSh0LGUpezEmdCYmKF91KDAsInNwYW4iKSxQZigxLCIgSW5wdXQgIiksQ3UoKSl9ZnVuY3Rpb24gUlEodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDYpLF91KDEsInNwYW4iLDcpLEhtKDIsU1EsMiwwLCJzcGFuIiw4KSxIbSgzLERRLDIsMCwic3BhbiIsOCksQ3UoKSxQZig0KSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxodSgibmdTd2l0Y2giLHQua2luZCksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsImlucHV0IiksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsImNvbnN1bWVyIiksRGMoMSksa2YoIiBzbG90OiAiLHQuc2xvdCwiICIpfX1mdW5jdGlvbiBFUSh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsOSksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksa2YoIiAiLHQub3BEYXRhLm9wX3R5cGUsIiAiKX19ZnVuY3Rpb24gQVEodCxlKXsxJnQmJihfdSgwLCJzcGFuIiwxMCksUGYoMSwiIChPcCBpbmZvIHVuYXZhaWxhYmxlLikgIiksQ3UoKSl9a1EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtRKShmdShpUykpfSxrUS7JtWNtcD1zbyh7dHlwZTprUSxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItdGltZWxpbmUiXV0sZGVjbHM6MTIsdmFyczozMyxjb25zdHM6W1szLCJhY3RpdmVSdW5JZCIsImxvYWRpbmdOdW1FeGVjdXRpb25zIiwibnVtRXhlY3V0aW9ucyIsInNjcm9sbEJlZ2luSW5kZXgiLCJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCIsInBhZ2VTaXplIiwiZGlzcGxheUNvdW50IiwiZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMiLCJkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMiLCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLCJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4Iiwib25OYXZpZ2F0ZUxlZnQiLCJvbk5hdmlnYXRlUmlnaHQiLCJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQiLCJvblNsaWRlckNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwidGltZWxpbmUtY29tcG9uZW50IiwwKSxEdSgib25OYXZpZ2F0ZUxlZnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25OYXZpZ2F0ZUxlZnQoKX0pKSgib25OYXZpZ2F0ZVJpZ2h0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uTmF2aWdhdGVSaWdodCgpfSkpKCJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZChlKX0pKSgib25TbGlkZXJDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU2xpZGVyQ2hhbmdlKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLF95KDcsImFzeW5jIiksX3koOCwiYXN5bmMiKSxfeSg5LCJhc3luYyIpLF95KDEwLCJhc3luYyIpLF95KDExLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoImFjdGl2ZVJ1bklkIixDeSgxLDExLG4uYWN0aXZlUnVuSWQkKSkoImxvYWRpbmdOdW1FeGVjdXRpb25zIixDeSgyLDEzLG4ubG9hZGluZ051bUV4ZWN1dGlvbnMkKSkoIm51bUV4ZWN1dGlvbnMiLEN5KDMsMTUsbi5udW1FeGVjdXRpb25zJCkpKCJzY3JvbGxCZWdpbkluZGV4IixDeSg0LDE3LG4uc2Nyb2xsQmVnaW5JbmRleCQpKSgic2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQiLEN5KDUsMTksbi5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCQpKSgicGFnZVNpemUiLEN5KDYsMjEsbi5wYWdlU2l6ZSQpKSgiZGlzcGxheUNvdW50IixDeSg3LDIzLG4uZGlzcGxheUNvdW50JCkpKCJkaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyIsQ3koOCwyNSxuLmRpc3BsYXlFeGVjdXRpb25EaWdlc3RzJCkpKCJkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMiLEN5KDksMjcsbi5kaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkKSkoImZvY3VzZWRFeGVjdXRpb25JbmRleCIsQ3koMTAsMjksbi5mb2N1c2VkRXhlY3V0aW9uSW5kZXgkKSkoImZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgiLEN5KDExLDMxLG4uZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCQpKX0sZGlyZWN0aXZlczpbUFFdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihrUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi10aW1lbGluZSIsdGVtcGxhdGU6J1xuICAgIDx0aW1lbGluZS1jb21wb25lbnRcbiAgICAgIFthY3RpdmVSdW5JZF09ImFjdGl2ZVJ1bklkJCB8IGFzeW5jIlxuICAgICAgW2xvYWRpbmdOdW1FeGVjdXRpb25zXT0ibG9hZGluZ051bUV4ZWN1dGlvbnMkIHwgYXN5bmMiXG4gICAgICBbbnVtRXhlY3V0aW9uc109Im51bUV4ZWN1dGlvbnMkIHwgYXN5bmMiXG4gICAgICBbc2Nyb2xsQmVnaW5JbmRleF09InNjcm9sbEJlZ2luSW5kZXgkIHwgYXN5bmMiXG4gICAgICBbc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXRdPSJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCQgfCBhc3luYyJcbiAgICAgIFtwYWdlU2l6ZV09InBhZ2VTaXplJCB8IGFzeW5jIlxuICAgICAgW2Rpc3BsYXlDb3VudF09ImRpc3BsYXlDb3VudCQgfCBhc3luYyJcbiAgICAgIFtkaXNwbGF5RXhlY3V0aW9uRGlnZXN0c109ImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzJCB8IGFzeW5jIlxuICAgICAgW2Rpc3BsYXlGb2N1c2VkQWxlcnRUeXBlc109ImRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyQgfCBhc3luYyJcbiAgICAgIFtmb2N1c2VkRXhlY3V0aW9uSW5kZXhdPSJmb2N1c2VkRXhlY3V0aW9uSW5kZXgkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleF09ImZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkIHwgYXN5bmMiXG4gICAgICAob25OYXZpZ2F0ZUxlZnQpPSJvbk5hdmlnYXRlTGVmdCgpIlxuICAgICAgKG9uTmF2aWdhdGVSaWdodCk9Im9uTmF2aWdhdGVSaWdodCgpIlxuICAgICAgKG9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZCk9Im9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZCgkZXZlbnQpIlxuICAgICAgKG9uU2xpZGVyQ2hhbmdlKT0ib25TbGlkZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC90aW1lbGluZS1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBUUT1mdW5jdGlvbih0KXtyZXR1cm5bdF19O2NsYXNzIE5Re2NvbnN0cnVjdG9yKCl7dGhpcy5vbk9wTmFtZUNsaWNrPW5ldyBTeX19ZnVuY3Rpb24gelEodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJkaXYiLDEzKSxfdSgxLCJkaXYiLDE0KSxQZigyKSxDdSgpLF91KDMsImdyYXBoLW9wIiwxNSksRHUoIm9uT3BOYW1lQ2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89TnUoMyk7cmV0dXJuIG8ub25HcmFwaE9wTmF2aWdhdGUuZW1pdCh7b3BfbmFtZTpuLm9wX25hbWUsZ3JhcGhfaWQ6by5ncmFwaElkfSl9KSksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXg7RGMoMiksa2YoIklucHV0IHNsb3QgIixuLCI6IiksRGMoMSksaHUoImtpbmQiLCJpbnB1dCIpKCJvcE5hbWUiLHQub3BfbmFtZSkoInNsb3QiLHQub3V0cHV0X3Nsb3QpKCJvcERhdGEiLHQuZGF0YSl9fWZ1bmN0aW9uIElRKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxMSksX3UoMSwiZGl2IiksSG0oMix6USw0LDUsImRpdiIsMTIpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDIpLGh1KCJuZ0Zvck9mIix0LmlucHV0T3BzKX19ZnVuY3Rpb24gSFEodCxlKXsxJnQmJihfdSgwLCJkaXYiLDE2KSxQZigxLCIgKFRoaXMgb3AgaGFzIG5vIGlucHV0IHRlbnNvci4pICIpLEN1KCkpfWZ1bmN0aW9uIEZRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwyMyksX3UoMSwiZ3JhcGgtb3AiLDE1KSxEdSgib25PcE5hbWVDbGljayIsKGZ1bmN0aW9uIGUobil7UGkodCk7Y29uc3Qgbz1OdSg0KTtyZXR1cm4gby5vbkdyYXBoT3BOYXZpZ2F0ZS5lbWl0KHtvcF9uYW1lOm4ub3BfbmFtZSxncmFwaF9pZDpvLmdyYXBoSWR9KX0pKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O0RjKDEpLGh1KCJraW5kIiwiY29uc3VtZXIiKSgib3BOYW1lIix0Lm9wX25hbWUpKCJzbG90Iix0LmlucHV0X3Nsb3QpKCJvcERhdGEiLHQuZGF0YSl9fWZ1bmN0aW9uIExRKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxOSksX3UoMSwiZGl2IiwyMCksUGYoMiksX3UoMywic3BhbiIpLFJoKDQsMjEpLEN1KCksUGYoNSwiKSAiKSxDdSgpLEhtKDYsRlEsMiw0LCJkaXYiLDIyKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4O0RjKDIpLFNmKCIgT3V0cHV0IHNsb3QgIixuLCI6ICgiLHQubGVuZ3RoLCIgIiksRGMoMiksQWgodC5sZW5ndGgpLFRoKDQpLERjKDIpLGh1KCJuZ0Zvck9mIix0KX19ZnVuY3Rpb24gQlEodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDE3KSxfdSgxLCJkaXYiKSxIbSgyLExRLDcsNCwiZGl2IiwxOCksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoMiksaHUoIm5nRm9yT2YiLHQuY29uc3VtZXJPcHMpfX1mdW5jdGlvbiBWUSh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsMjQpLFBmKDEpLF91KDIsInNwYW4iKSxSaCgzLDI1KSxDdSgpLFBmKDQsIiBhbmQgbm8gY29uc3VtZXIuKSAiKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoMSksa2YoIiAoVGhpcyBvcCBoYXMgIix0Lm9wSW5mby5jb25zdW1lcnMubGVuZ3RoLCIgb3V0cHV0ICIpLERjKDIpLEFoKHQub3BJbmZvLmNvbnN1bWVycy5sZW5ndGgpLFRoKDMpfX1mdW5jdGlvbiBVUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIpLEhtKDEsSVEsMywxLCJkaXYiLDQpLEhtKDIsSFEsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw1LHF5KSxfdSg0LCJkaXYiLDYpLF91KDUsImRpdiIsNyksUGYoNiwiT3A6IiksQ3UoKSxfdSg3LCJncmFwaC1vcCIsOCksRHUoIm9uT3BOYW1lQ2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89TnUoKTtyZXR1cm4gby5vbkdyYXBoT3BOYXZpZ2F0ZS5lbWl0KHtvcF9uYW1lOm4ub3BfbmFtZSxncmFwaF9pZDpvLmdyYXBoSWR9KX0pKSxDdSgpLEN1KCksSG0oOCxCUSwzLDEsImRpdiIsOSksSG0oOSxWUSw1LDIsIm5nLXRlbXBsYXRlIixudWxsLDEwLHF5KSxDdSgpfWlmKDImdCl7Y29uc3QgdD1GbSgzKSxlPUZtKDEwKSxuPU51KCk7RGMoMSksaHUoIm5nSWYiLG4uaW5wdXRPcHMubGVuZ3RoPjApKCJuZ0lmRWxzZSIsdCksRGMoNiksaHUoImtpbmQiLCJzZWxmIikoIm9wTmFtZSIsbi5vcEluZm8ub3BfbmFtZSkoIm9wRGF0YSIsbi5vcEluZm8pLERjKDEpLGh1KCJuZ0lmIixuLnRvdGFsTnVtQ29uc3VtZXJzPjApKCJuZ0lmRWxzZSIsZSl9fWZ1bmN0aW9uIGpRKHQsZSl7MSZ0JiYoX3UoMCwic3BhbiIsMjYpLFBmKDEsIiAoT3AgaW5mbyB1bmF2YWlsYWJsZS4pICIpLEN1KCkpfWZ1bmN0aW9uIFdRKHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwyNyksUGYoMSwiIE5vIGdyYXBoIG9wIHNlbGVjdGVkLiBDbGljayBhIHRlbnNvciBuYW1lIGluIHRoZSBHcmFwaCBFeGVjdXRpb25zIHRhYmxlIHRvIHZpZXcgdGhlIG5laWdoYm9yaG9vZCBvZiB0aGUgdGVuc29yJ3Mgb3AgaW4gaXRzIGdyYXBoLiAiKSxDdSgpKX1OUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TlEpfSxOUS7JtWNtcD1zbyh7dHlwZTpOUSxzZWxlY3RvcnM6W1siZ3JhcGgtb3AiXV0saW5wdXRzOntraW5kOiJraW5kIixvcE5hbWU6Im9wTmFtZSIsc2xvdDoic2xvdCIsb3BEYXRhOiJvcERhdGEifSxvdXRwdXRzOntvbk9wTmFtZUNsaWNrOiJvbk9wTmFtZUNsaWNrIn0sZGVjbHM6OSx2YXJzOjcsY29uc3RzOltbMSwib3AtY29udGFpbmVyIl0sWzEsImlucHV0LXRlbnNvci1uYW1lIl0sWzEsIm9wLW5hbWUiLDMsIm5nQ2xhc3MiLCJjbGljayJdLFsiY2xhc3MiLCJzbG90Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm9wLXR5cGUiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsib3BJbmZvTWlzc2luZyIsIiJdLFsxLCJzbG90Il0sWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJvcC10eXBlIl0sWzEsIm9wLWluZm8tbWlzc2luZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiYnV0dG9uIiwwKSxfdSgxLCJkaXYiLDEpLF91KDIsImJ1dHRvbiIsMiksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uT3BOYW1lQ2xpY2suZW1pdCh7b3BfbmFtZTpuLm9wTmFtZX0pfSkpLF91KDMsInNwYW4iKSxQZig0KSxDdSgpLEN1KCksSG0oNSxSUSw1LDQsImRpdiIsMyksQ3UoKSxIbSg2LEVRLDIsMSwiZGl2Iiw0KSxIbSg3LEFRLDIsMCwibmctdGVtcGxhdGUiLG51bGwsNSxxeSksQ3UoKSksMiZlKXtjb25zdCB0PUZtKDgpO0RjKDIpLGh1KCJuZ0NsYXNzIixpeSg1LFRRLCJzZWxmIj09PW4ua2luZD8ic2VsZi1vcC1uYW1lIjoiIikpLERjKDIpLHdmKG4ub3BOYW1lKSxEYygxKSxodSgibmdJZiIsInNlbGYiIT09bi5raW5kKSxEYygxKSxodSgibmdJZiIsdm9pZCAwIT09bi5vcERhdGEpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOltDdixQdixEdixSdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjJweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MXB4IDNweCAjZWVlO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDVweCAwIDA7cGFkZGluZzoycHggNnB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MjAwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoycHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzoxcHggM3B4ICM3NTc1NzV9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZTowfS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JvcmRlcjoycHggc29saWQgI2ZmZDNiMn0ub3AtaW5mby1taXNzaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5fS5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdy13cmFwOmFueXdoZXJlO3BhZGRpbmc6MDt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7d2hpdGUtc3BhY2U6cHJlLXdyYXB9Lm9wLW5hbWVbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmU6MH0ub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWNlZmYxO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjRweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtmb250LXNpemU6MTBweDtoZWlnaHQ6MTRweDtsaW5lLWhlaWdodDoxNHB4O3BhZGRpbmc6MXB4IDNweDt3aWR0aDptYXgtY29udGVudDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjNweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNDU1YTY0fS5zZWxmLW9wLW5hbWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnNsb3RbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNsb3RbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xvdFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5RLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLW9wIix0ZW1wbGF0ZVVybDoiZ3JhcGhfb3BfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZ3JhcGhfb3BfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtraW5kOlt7dHlwZTpSX31dLG9wTmFtZTpbe3R5cGU6Ul99XSxzbG90Olt7dHlwZTpSX31dLG9wRGF0YTpbe3R5cGU6Ul99XSxvbk9wTmFtZUNsaWNrOlt7dHlwZTpFX31dfSk7Y2xhc3MgR1F7Y29uc3RydWN0b3IoKXt0aGlzLm9uR3JhcGhPcE5hdmlnYXRlPW5ldyBTeX1nZXQgZ3JhcGhJZCgpe3JldHVybiB0aGlzLm9wSW5mby5ncmFwaF9pZHNbdGhpcy5vcEluZm8uZ3JhcGhfaWRzLmxlbmd0aC0xXX1nZXQgdG90YWxOdW1Db25zdW1lcnMoKXtyZXR1cm4gdGhpcy5jb25zdW1lck9wcy5yZWR1Y2UoKCh0LGUpPT50K2UubGVuZ3RoKSwwKX19R1EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdRKX0sR1EuybVjbXA9c28oe3R5cGU6R1Esc2VsZWN0b3JzOltbImdyYXBoLWNvbXBvbmVudCJdXSxpbnB1dHM6e29wSW5mbzoib3BJbmZvIixpbnB1dE9wczoiaW5wdXRPcHMiLGNvbnN1bWVyT3BzOiJjb25zdW1lck9wcyJ9LG91dHB1dHM6e29uR3JhcGhPcE5hdmlnYXRlOiJvbkdyYXBoT3BOYXZpZ2F0ZSJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGUsbixvO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJ7VkFSX1BMVVJBTCwgcGx1cmFsLCA9MCB7Y29uc3VtZXJ9ID0xIHtjb25zdW1lcn0gb3RoZXIge2NvbnN1bWVyc319Iil9ZWxzZSB0PSRsb2NhbGl6ZWA64pCfZmU1NWY5YjE5M2VhMjBhYWU1YjU2MzVlNjhkOTM4NjUwMzg0Nzc0NuKQnzQ5NTUxMzM3NDA4NDEyOTk4NTE6e1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge2NvbnN1bWVyfSA9MSB7Y29uc3VtZXJ9IG90aGVyIHtjb25zdW1lcnN9fWA7aWYodD1OaCh0LHtWQVJfUExVUkFMOiLvv70w77+9In0pLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCIgeyRpY3V9Iix7aWN1OnR9KX1lbHNlIGU9JGxvY2FsaXplYDrikJ9iYWE0NjBlMmYyYjg1N2UyNjI5MmIyNDZmYzE4YWUwZWE5YjVlNTM34pCfNTU1NjM0MDM0Mzg1MDE2NTUxNjogJHt0fTpJQ1U6YDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7bj1nb29nLmdldE1zZygie1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge3RlbnNvcn0gPTEge3RlbnNvcn0gb3RoZXIge3RlbnNvcnN9fSIpfWVsc2Ugbj0kbG9jYWxpemVgOuKQnzZhYTc1ZjYyN2UwZGMxNjE1MGVmNDQ4NDY0ZTBjODU3YWFhMGRjMTjikJ81MTU2NzEyOTM1MTUwNTg2ODc4OntWQVJfUExVUkFMLCBwbHVyYWwsID0wIHt0ZW5zb3J9ID0xIHt0ZW5zb3J9IG90aGVyIHt0ZW5zb3JzfX1gO2lmKG49Tmgobix7VkFSX1BMVVJBTDoi77+9MO+/vSJ9KSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7bz1nb29nLmdldE1zZygiIHskaWN1fSIse2ljdTpufSl9ZWxzZSBvPSRsb2NhbGl6ZWA64pCfODkzNDc2YzJjNDIxY2VlNDc2NjNjOTczMmZhNDFhNzUwZDNhNzNkZuKQnzI0NjA2NzA1MzczNTE2MjYzNDogJHtufTpJQ1U6YDtyZXR1cm5bWzEsImdyYXBoLXN0cnVjdHVyZS1jb250YWluZXIiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJvcEluZm9NaXNzaW5nIiwiIl0sWyJub09wRm9jdXNlZCIsIiJdLFsiY2xhc3MiLCJpbnB1dHMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW5wdXRzIiwiIl0sWzEsInNlbGYtb3AtY29udGFpbmVyIl0sWzEsInNlbGYtb3AtaGVhZGVyIl0sWzMsImtpbmQiLCJvcE5hbWUiLCJvcERhdGEiLCJvbk9wTmFtZUNsaWNrIl0sWyJjbGFzcyIsImNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9Db25zdW1lcnMiLCIiXSxbMSwiaW5wdXRzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJpbnB1dC1vcC1zZWN0aW9uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaW5wdXQtb3Atc2VjdGlvbiJdLFsxLCJpbnB1dC1zbG90LWhlYWRlciJdLFszLCJraW5kIiwib3BOYW1lIiwic2xvdCIsIm9wRGF0YSIsIm9uT3BOYW1lQ2xpY2siXSxbMSwiaW5wdXRzLWNvbnRhaW5lciIsIm5vLWlucHV0cy1pbmRpY2F0b3IiXSxbMSwiY29uc3VtZXJzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiXSxbMSwic2xvdC1jb25zdW1lcnMtaGVhZGVyIl0sZSxbImNsYXNzIiwiY29uc3VtZXItc2VjdGlvbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnN1bWVyLXNlY3Rpb24iXSxbMSwib3AtY29uc3VtZXJzLWNvbnRhaW5lciJdLG8sWzEsIm9wLWluZm8tbWlzc2luZyJdLFsxLCJuby1vcC1mb2N1c2VkIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiZGl2IiksX3UoMSwiZGl2IiksUGYoMiwiR3JhcGggU3RydWN0dXJlIiksQ3UoKSxfdSgzLCJkaXYiLDApLEhtKDQsVVEsMTEsNywiZGl2IiwxKSxDdSgpLEhtKDUsalEsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxIbSg3LFdRLDIsMCwibmctdGVtcGxhdGUiLG51bGwsMyxxeSksQ3UoKSksMiZlKXtjb25zdCB0PUZtKDgpO0RjKDQpLGh1KCJuZ0lmIixudWxsIT1uLm9wSW5mbykoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LE5RLHh2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtvdmVyZmxvdy15OmF1dG99LmNvbnN1bWVycy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjVweDtvdmVyZmxvdy14OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfS5jb25zdW1lci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO21hcmdpbjo1cHggMH0uZ3JhcGgtc3RydWN0dXJlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7b3ZlcmZsb3cteTphdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5wdXRzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO21hcmdpbi10b3A6NXB4O292ZXJmbG93LXg6YXV0bztwYWRkaW5nLWJvdHRvbTowO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5wdXQtb3Atc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OjVweDtwYWRkaW5nLWJvdHRvbTo1cHh9LmlucHV0LXNsb3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYwOTk7bWFyZ2luLWJvdHRvbTo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LXNsb3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LXNsb3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjUxMDB9LmlucHV0LXRlbnNvci1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcH0ubm8tb3AtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheTtmb250LWZhbWlseToiUm9ib3RvIixBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MTNweDt3aGl0ZS1zcGFjZTpub3JtYWx9LnNlbGYtb3AtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpib2xkO21hcmdpbi1ib3R0b206NXB4fS5zZWxmLW9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO3BhZGRpbmctYm90dG9tOjVweH0uc2xvdC1jb25zdW1lcnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6NXB4O3BhZGRpbmctdG9wOjVweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnNsb3QtY29uc3VtZXJzLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihHUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJncmFwaC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2dyYXBoX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2dyYXBoX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtvcEluZm86W3t0eXBlOlJffV0saW5wdXRPcHM6W3t0eXBlOlJffV0sY29uc3VtZXJPcHM6W3t0eXBlOlJffV0sb25HcmFwaE9wTmF2aWdhdGU6W3t0eXBlOkVffV19KTtjbGFzcyBZUXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5vcEluZm8kPXRoaXMuc3RvcmUucGlwZShyUyhySikpLHRoaXMuaW5wdXRPcHMkPXRoaXMuc3RvcmUucGlwZShyUyhzSikpLHRoaXMuY29uc3VtZXJPcHMkPXRoaXMuc3RvcmUucGlwZShyUyhjSikpfW9uR3JhcGhPcE5hdmlnYXRlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goc0sodCkpfX1mdW5jdGlvbiBxUSh0LGUpezEmdCYmKF91KDAsImRpdiIsMTIpLFBmKDEsIuKWtiIpLEN1KCkpfVlRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZUSkoZnUoaVMpKX0sWVEuybVjbXA9c28oe3R5cGU6WVEsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWdyYXBoIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm9wSW5mbyIsImlucHV0T3BzIiwiY29uc3VtZXJPcHMiLCJvbkdyYXBoT3BOYXZpZ2F0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZ3JhcGgtY29tcG9uZW50IiwwKSxEdSgib25HcmFwaE9wTmF2aWdhdGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uR3JhcGhPcE5hdmlnYXRlKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoIm9wSW5mbyIsQ3koMSwzLG4ub3BJbmZvJCkpKCJpbnB1dE9wcyIsQ3koMiw1LG4uaW5wdXRPcHMkKSkoImNvbnN1bWVyT3BzIixDeSgzLDcsbi5jb25zdW1lck9wcyQpKX0sZGlyZWN0aXZlczpbR1FdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZUSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1ncmFwaCIsdGVtcGxhdGU6J1xuICAgIDxncmFwaC1jb21wb25lbnRcbiAgICAgIFtvcEluZm9dPSJvcEluZm8kIHwgYXN5bmMiXG4gICAgICBbaW5wdXRPcHNdPSJpbnB1dE9wcyQgfCBhc3luYyJcbiAgICAgIFtjb25zdW1lck9wc109ImNvbnN1bWVyT3BzJCB8IGFzeW5jIlxuICAgICAgKG9uR3JhcGhPcE5hdmlnYXRlKT0ib25HcmFwaE9wTmF2aWdhdGUoJGV2ZW50KSJcbiAgICA+PC9ncmFwaC1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgWlE9ZnVuY3Rpb24odCxlKXtyZXR1cm57dGVuc29yRGVidWdNb2RlOnQsYXJyYXk6ZX19O2Z1bmN0aW9uIFhRKHQsZSl7aWYoMSZ0JiZNdSgwLCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE3KSwyJnQpe2NvbnN0IHQ9TnUoMikuJGltcGxpY2l0LGU9TnUoMik7aHUoImRlYnVnVGVuc29yVmFsdWUiLGUucGFyc2VEZWJ1Z1RlbnNvclZhbHVlKGF5KDEsWlEsZS5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0udGVuc29yX2RlYnVnX21vZGUsZS5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0uZGVidWdfdGVuc29yX3ZhbHVlKSkpfX1mdW5jdGlvbiBLUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIpLF91KDEsImRpdiIsMTMpLF91KDIsImJ1dHRvbiIsMTQpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPU51KCkuJGltcGxpY2l0LG89TnUoMik7cmV0dXJuIG8ub25UZW5zb3JOYW1lQ2xpY2suZW1pdCh7aW5kZXg6bixncmFwaF9pZDpvLmdyYXBoRXhlY3V0aW9uRGF0YVtuXS5ncmFwaF9pZCxvcF9uYW1lOm8uZ3JhcGhFeGVjdXRpb25EYXRhW25dLm9wX25hbWV9KX0pKSxQZigzKSxDdSgpLF91KDQsImRpdiIsMTUpLFBmKDUpLEN1KCksQ3UoKSxIbSg2LFhRLDEsNCwiZGVidWctdGVuc29yLXZhbHVlIiwxNiksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKS4kaW1wbGljaXQsZT1OdSgyKTtEYygyKSxGdSgidGl0bGUiLGUuZ2V0VGVuc29yTmFtZSh0KSksRGMoMSksa2YoIiAiLGUuZ2V0VGVuc29yTmFtZSh0KSwiICIpLERjKDIpLHdmKGUuZ3JhcGhFeGVjdXRpb25EYXRhW3RdLm9wX3R5cGUpLERjKDEpLGh1KCJuZ0lmIixudWxsIT09ZS5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0uZGVidWdfdGVuc29yX3ZhbHVlKX19ZnVuY3Rpb24gSlEodCxlKXsxJnQmJihfdSgwLCJkaXYiLDE4KSxQZigxLCIgTG9hZGluZy4uLiAiKSxDdSgpKX1jb25zdCBRUT1mdW5jdGlvbih0KXtyZXR1cm57ImlucHV0LW9mLWZvY3VzIjp0fX07ZnVuY3Rpb24gJFEodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDUpLF91KDEsImRpdiIsNiksX3UoMiwiZGl2Iiw3KSxIbSgzLHFRLDIsMCwiZGl2Iiw4KSxQZig0KSxDdSgpLEhtKDUsS1EsNyw0LCJkaXYiLDkpLEhtKDYsSlEsMiwwLCJuZy10ZW1wbGF0ZSIsMTAsMTEscXkpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49Rm0oNyksbz1OdSgyKTtEYygxKSxodSgibmdDbGFzcyIsaXkoNSxRUSxvLmlzSW5wdXRPZkZvY3VzKHQpKSksRGMoMiksaHUoIm5nSWYiLHQ9PT1vLmZvY3VzSW5kZXgpLERjKDEpLGtmKCIgIix0LCIgIiksRGMoMSksaHUoIm5nSWYiLG8uZ3JhcGhFeGVjdXRpb25EYXRhW3RdKSgibmdJZkVsc2UiLG4pfX1mdW5jdGlvbiB0JCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMyksRHUoInNjcm9sbGVkSW5kZXhDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uU2Nyb2xsZWRJbmRleENoYW5nZS5lbWl0KG4pfSkpLEhtKDEsJFEsOCw3LCJkaXYiLDQpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksaHUoImNka1ZpcnR1YWxGb3JPZiIsdC5ncmFwaEV4ZWN1dGlvbkluZGljZXMpfX1jbGFzcyBlJHtjb25zdHJ1Y3Rvcigpe3RoaXMub25TY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyBTeSx0aGlzLm9uVGVuc29yTmFtZUNsaWNrPW5ldyBTeSx0aGlzLnBhcnNlRGVidWdUZW5zb3JWYWx1ZT1VSix0aGlzLlRFU1RfT05MWT17Z2V0Vmlld1BvcnQ6KCk9PnRoaXMudmlld1BvcnR9fW5nT25DaGFuZ2VzKHQpe2lmKHRoaXMudmlld1BvcnQmJnQuZm9jdXNJbmRleCYmbnVsbCE9PXQuZm9jdXNJbmRleC5jdXJyZW50VmFsdWUpe2NvbnN0IGU9dGhpcy52aWV3UG9ydC5nZXRSZW5kZXJlZFJhbmdlKCksbj10LmZvY3VzSW5kZXguY3VycmVudFZhbHVlLG89TWF0aC5yb3VuZCgoZS5lbmQtZS5zdGFydCkvMyksaT1NYXRoLm1heChuLW8sMCk7dGhpcy52aWV3UG9ydC5zY3JvbGxUb0luZGV4KGksbj49ZS5zdGFydCYmbjxlLmVuZD8ic21vb3RoIjp2b2lkIDApfX1nZXRUZW5zb3JOYW1lKHQpe3JldHVybmAke3RoaXMuZ3JhcGhFeGVjdXRpb25EYXRhW3RdLm9wX25hbWV9OiR7dGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3V0cHV0X3Nsb3R9YH1pc0lucHV0T2ZGb2N1cyh0KXtyZXR1cm4gbnVsbCE9PXRoaXMuZm9jdXNJbnB1dEluZGljZXMmJnRoaXMuZm9jdXNJbnB1dEluZGljZXMuaW5jbHVkZXModCl9fWUkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlJCl9LGUkLsm1Y21wPXNvKHt0eXBlOmUkLHNlbGVjdG9yczpbWyJncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoZEIsNSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi52aWV3UG9ydD10LmZpcnN0KX19LGlucHV0czp7bnVtR3JhcGhFeGVjdXRpb25zOiJudW1HcmFwaEV4ZWN1dGlvbnMiLGdyYXBoRXhlY3V0aW9uRGF0YToiZ3JhcGhFeGVjdXRpb25EYXRhIixncmFwaEV4ZWN1dGlvbkluZGljZXM6ImdyYXBoRXhlY3V0aW9uSW5kaWNlcyIsZm9jdXNJbmRleDoiZm9jdXNJbmRleCIsZm9jdXNJbnB1dEluZGljZXM6ImZvY3VzSW5wdXRJbmRpY2VzIn0sb3V0cHV0czp7b25TY3JvbGxlZEluZGV4Q2hhbmdlOiJvblNjcm9sbGVkSW5kZXhDaGFuZ2UiLG9uVGVuc29yTmFtZUNsaWNrOiJvblRlbnNvck5hbWVDbGljayJ9LGZlYXR1cmVzOltxb10sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiZ3JhcGgtZXhlY3V0aW9ucy1jb250YWluZXIiXSxbMSwiZ3JhcGgtZXhlY3V0aW9ucy10aXRsZSJdLFsiaXRlbVNpemUiLCIzOCIsImNsYXNzIiwiZ3JhcGgtZXhlY3V0aW9ucy12aWV3cG9ydCIsMywic2Nyb2xsZWRJbmRleENoYW5nZSIsNCwibmdJZiJdLFsiaXRlbVNpemUiLCIzOCIsMSwiZ3JhcGgtZXhlY3V0aW9ucy12aWV3cG9ydCIsMywic2Nyb2xsZWRJbmRleENoYW5nZSJdLFsiY2xhc3MiLCJ0ZW5zb3ItY29udGFpbmVyIiw0LCJjZGtWaXJ0dWFsRm9yIiwiY2RrVmlydHVhbEZvck9mIl0sWzEsInRlbnNvci1jb250YWluZXIiXSxbMSwidGVuc29yLWl0ZW0iLDMsIm5nQ2xhc3MiXSxbMSwiZ3JhcGgtZXhlY3V0aW9uLWluZGV4Il0sWyJjbGFzcyIsImdyYXBoLWV4ZWN1dGlvbi1mb2N1cyIsNCwibmdJZiJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImNsYXNzIiwidGVuc29yLWl0ZW0iXSxbImRhdGFMb2FkaW5nIiwiIl0sWzEsImdyYXBoLWV4ZWN1dGlvbi1mb2N1cyJdLFsxLCJ0ZW5zb3ItbmFtZS1hbmQtb3AtdHlwZSJdLFsxLCJ0ZW5zb3ItbmFtZSIsMywidGl0bGUiLCJjbGljayJdLFsxLCJvcC10eXBlIl0sWzMsImRlYnVnVGVuc29yVmFsdWUiLDQsIm5nSWYiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSJdLFsxLCJsb2FkaW5nLXNwaW5uZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwiZGl2IiwxKSxQZigyKSxDdSgpLEhtKDMsdCQsMiwxLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLDIpLEN1KCkpLDImZSYmKERjKDIpLGtmKCIgR3JhcGggRXhlY3V0aW9ucyAoIixuLm51bUdyYXBoRXhlY3V0aW9ucywiKSAiKSxEYygxKSxodSgibmdJZiIsbnVsbCE9PW4ubnVtR3JhcGhFeGVjdXRpb25zJiZuLm51bUdyYXBoRXhlY3V0aW9ucz4wKSl9LGRpcmVjdGl2ZXM6W1B2LGRCLGFCLG1CLEN2LGRRXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmdyYXBoLWV4ZWN1dGlvbnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO21hcmdpbi1sZWZ0OjhweDtwYWRkaW5nLWxlZnQ6MTBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JhcGgtZXhlY3V0aW9ucy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JhcGgtZXhlY3V0aW9ucy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5ncmFwaC1leGVjdXRpb24tZm9jdXNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5ncmFwaC1leGVjdXRpb24taW5kZXhbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1yaWdodDo0cHg7dGV4dC1hbGlnbjpyaWdodDt3aWR0aDo0MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncmFwaC1leGVjdXRpb24taW5kZXhbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JhcGgtZXhlY3V0aW9uLWluZGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JhcGgtZXhlY3V0aW9ucy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowIDVweCAzcHggLTNweCAjY2NjO3BhZGRpbmctYm90dG9tOjVweH0uZ3JhcGgtZXhlY3V0aW9ucy12aWV3cG9ydFtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7Zm9udC1zaXplOjEycHg7d2lkdGg6MTAwJTtvdmVyZmxvdy14OmhpZGRlbn0uaW5wdXQtb2YtZm9jdXNbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjA5OX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtb2YtZm9jdXNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtb2YtZm9jdXNbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2U2NTEwMH0ubG9hZGluZy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja30ub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWNlZmYxO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjRweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtmb250LXNpemU6MTBweDtoZWlnaHQ6MTRweDtsaW5lLWhlaWdodDoxNHB4O3BhZGRpbmc6MXB4IDNweDt3aWR0aDptYXgtY29udGVudDtkaXJlY3Rpb246cnRsO2Rpc3BsYXk6YmxvY2t9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzQ1NWE2NH0udGVuc29yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0udGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7aGVpZ2h0OjM4cHg7bGluZS1oZWlnaHQ6MzhweDt0ZXh0LWFsaWduOmxlZnQ7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50ZW5zb3ItaXRlbVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC50ZW5zb3ItaXRlbVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0udGVuc29yLW5hbWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXI6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246cnRsO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweDttYXJnaW46MnB4IDAgMXB4O21heC13aWR0aDpjYWxjKDEwMCUgLSAycHgpO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjAgMnB4O3RleHQtYWxpZ246cmlnaHQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0udGVuc29yLW5hbWVbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmU6MXB4IHNvbGlkICNjNmNhZDF9LnRlbnNvci1uYW1lLWFuZC1vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXJlY3Rpb246cnRsO2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLXJpZ2h0OjhweDt0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjI0MHB4fWRlYnVnLXRlbnNvci12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjJweCAwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihlJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZ3JhcGhfZXhlY3V0aW9uc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9ncmFwaF9leGVjdXRpb25zX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtudW1HcmFwaEV4ZWN1dGlvbnM6W3t0eXBlOlJffV0sZ3JhcGhFeGVjdXRpb25EYXRhOlt7dHlwZTpSX31dLGdyYXBoRXhlY3V0aW9uSW5kaWNlczpbe3R5cGU6Ul99XSxmb2N1c0luZGV4Olt7dHlwZTpSX31dLGZvY3VzSW5wdXRJbmRpY2VzOlt7dHlwZTpSX31dLG9uU2Nyb2xsZWRJbmRleENoYW5nZTpbe3R5cGU6RV99XSxvblRlbnNvck5hbWVDbGljazpbe3R5cGU6RV99XSx2aWV3UG9ydDpbe3R5cGU6YXIsYXJnczpbZEIse3N0YXRpYzohMX1dfV19KTtjbGFzcyBuJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5udW1HcmFwaEV4ZWN1dGlvbnMkPXRoaXMuc3RvcmUucGlwZShyUyhKSykpLHRoaXMuZ3JhcGhFeGVjdXRpb25EYXRhJD10aGlzLnN0b3JlLnBpcGUoclMob0opKSx0aGlzLmdyYXBoRXhlY3V0aW9uSW5kaWNlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKEpLLCh0PT4wPT09dD9udWxsOkFycmF5LmZyb20oe2xlbmd0aDp0fSkubWFwKCgodCxlKT0+ZSkpKSkpKSx0aGlzLmZvY3VzSW5kZXgkPXRoaXMuc3RvcmUucGlwZShyUyhpSikpLHRoaXMuZm9jdXNJbnB1dEluZGljZXMkPXRoaXMuc3RvcmUucGlwZShyUyhsSikpfW9uU2Nyb2xsZWRJbmRleENoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGFLKHtpbmRleDp0fSkpfW9uVGVuc29yTmFtZUNsaWNrKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocksodCkpfX1uJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8biQpKGZ1KGlTKSl9LG4kLsm1Y21wPXNvKHt0eXBlOm4kLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1ncmFwaC1leGVjdXRpb25zIl1dLGRlY2xzOjYsdmFyczoxNSxjb25zdHM6W1szLCJudW1HcmFwaEV4ZWN1dGlvbnMiLCJncmFwaEV4ZWN1dGlvbkRhdGEiLCJncmFwaEV4ZWN1dGlvbkluZGljZXMiLCJmb2N1c0luZGV4IiwiZm9jdXNJbnB1dEluZGljZXMiLCJvblNjcm9sbGVkSW5kZXhDaGFuZ2UiLCJvblRlbnNvck5hbWVDbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZ3JhcGgtZXhlY3V0aW9ucy1jb21wb25lbnQiLDApLER1KCJvblNjcm9sbGVkSW5kZXhDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU2Nyb2xsZWRJbmRleENoYW5nZShlKX0pKSgib25UZW5zb3JOYW1lQ2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVGVuc29yTmFtZUNsaWNrKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJudW1HcmFwaEV4ZWN1dGlvbnMiLEN5KDEsNSxuLm51bUdyYXBoRXhlY3V0aW9ucyQpKSgiZ3JhcGhFeGVjdXRpb25EYXRhIixDeSgyLDcsbi5ncmFwaEV4ZWN1dGlvbkRhdGEkKSkoImdyYXBoRXhlY3V0aW9uSW5kaWNlcyIsQ3koMyw5LG4uZ3JhcGhFeGVjdXRpb25JbmRpY2VzJCkpKCJmb2N1c0luZGV4IixDeSg0LDExLG4uZm9jdXNJbmRleCQpKSgiZm9jdXNJbnB1dEluZGljZXMiLEN5KDUsMTMsbi5mb2N1c0lucHV0SW5kaWNlcyQpKX0sZGlyZWN0aXZlczpbZSRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihuJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1ncmFwaC1leGVjdXRpb25zIix0ZW1wbGF0ZTonXG4gICAgPGdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50XG4gICAgICBbbnVtR3JhcGhFeGVjdXRpb25zXT0ibnVtR3JhcGhFeGVjdXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2dyYXBoRXhlY3V0aW9uRGF0YV09ImdyYXBoRXhlY3V0aW9uRGF0YSQgfCBhc3luYyJcbiAgICAgIFtncmFwaEV4ZWN1dGlvbkluZGljZXNdPSJncmFwaEV4ZWN1dGlvbkluZGljZXMkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNJbmRleF09ImZvY3VzSW5kZXgkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNJbnB1dEluZGljZXNdPSJmb2N1c0lucHV0SW5kaWNlcyQgfCBhc3luYyJcbiAgICAgIChvblNjcm9sbGVkSW5kZXhDaGFuZ2UpPSJvblNjcm9sbGVkSW5kZXhDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblRlbnNvck5hbWVDbGljayk9Im9uVGVuc29yTmFtZUNsaWNrKCRldmVudCkiXG4gICAgPjwvZ3JhcGgtZXhlY3V0aW9ucy1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgbyQ9e2dldFdpbmRvdzpmdW5jdGlvbiBpJCgpe3JldHVybiB3aW5kb3d9fSxhJD0idnMiO2Z1bmN0aW9uIHIkKHQpe2NvbnN0IGU9byQuZ2V0V2luZG93KCkucmVxdWlyZTtyZXR1cm4gbmV3IFByb21pc2UoKG49PntlKHQsbil9KSl9ZnVuY3Rpb24gcyQoKXtyZXR1cm4gSlQodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PW8kLmdldFdpbmRvdygpO2lmKHZvaWQgMD09PXQubW9uYWNvKXtpZighdC5yZXF1aXJlKXRocm93IG5ldyBFcnJvcigibG9hZE1vbmFjbygpIGZhaWxlZCBiZWNhdXNlIGZ1bmN0aW9uIHJlcXVpcmUoKSBpcyB1bmF2YWlsYWJsZSIpO3QucmVxdWlyZS5jb25maWcoe3BhdGhzOntbYSRdOiIvdGYtaW1wb3J0cy92cyJ9fSkseWllbGQgciQoWyJ2cy9lZGl0b3IvZWRpdG9yLm1haW4iXSkseWllbGQgciQoWyJ2cy9weXRob24vcHl0aG9uLmNvbnRyaWJ1dGlvbiJdKX19KSl9ZnVuY3Rpb24gbCQodCl7cmV0dXJuIHQ/InZzLWRhcmsiOiJ2cyJ9Y2xhc3MgYyR7Y29uc3RydWN0b3IodCl7dGhpcy5yZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5Ncz0xMDAsdGhpcy5vblJlc2l6ZT1uZXcgU3ksdGhpcy5uZ1Vuc3Vic2NyaWJlJD1uZXcgQix0aGlzLm9uUmVzaXplJD1uZXcgQjtjb25zdCBlPW5ldyBSZXNpemVPYnNlcnZlcigoKCk9Pnt0aGlzLm9uUmVzaXplJC5uZXh0KCl9KSk7ZS5vYnNlcnZlKHQubmF0aXZlRWxlbWVudCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5zdWJzY3JpYmUoKCgpPT57ZS51bm9ic2VydmUodC5uYXRpdmVFbGVtZW50KX0pKX1uZ09uSW5pdCgpe3RoaXMub25SZXNpemUkLnBpcGUoTGUoMSksQ2UodGhpcy5yZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyksVWUodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLm9uUmVzaXplLmVtaXQoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZSQuY29tcGxldGUoKX19YyQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGMkKShmdShLaCkpfSxjJC7JtWRpcj1obyh7dHlwZTpjJCxzZWxlY3RvcnM6W1siIiwiZGV0ZWN0UmVzaXplIiwiIl1dLGlucHV0czp7cmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXM6InJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIn0sb3V0cHV0czp7b25SZXNpemU6Im9uUmVzaXplIn19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGMkLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltkZXRlY3RSZXNpemVdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofV19KSx7cmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXM6W3t0eXBlOlJffV0sb25SZXNpemU6W3t0eXBlOkVffV19KTtjb25zdCBkJD1bImNvZGVWaWV3ZXJDb250YWluZXIiXTtjbGFzcyBwJHtjb25zdHJ1Y3Rvcigpe3RoaXMubGluZXM9bnVsbCx0aGlzLmZvY3VzZWRMaW5lbm89bnVsbCx0aGlzLm1vbmFjbz1udWxsLHRoaXMuZWRpdG9yPW51bGwsdGhpcy5kZWNvcmF0aW9ucz1bXSx0aGlzLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUz01MH1vblJlc2l6ZSgpe3RoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5sYXlvdXQoKX1uZ09uQ2hhbmdlcyh0KXt2YXIgZTtpZihudWxsPT09dGhpcy5tb25hY28pcmV0dXJuO2NvbnN0IG49dC5tb25hY28mJm51bGw9PT10aGlzLmVkaXRvcjtudWxsPT09dGhpcy5lZGl0b3ImJih0aGlzLmVkaXRvcj10aGlzLm1vbmFjby5lZGl0b3IuY3JlYXRlKHRoaXMuY29kZVZpZXdlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LHt2YWx1ZToobnVsbCE9PShlPXRoaXMubGluZXMpJiZ2b2lkIDAhPT1lP2U6W10pLmpvaW4oIlxuIiksbGFuZ3VhZ2U6InB5dGhvbiIscmVhZE9ubHk6ITAsZm9udFNpemU6MTAsbWluaW1hcDp7ZW5hYmxlZDohMH0sdGhlbWU6bCQodGhpcy51c2VEYXJrTW9kZSl9KSksdC5saW5lcyYmdGhpcy5saW5lcyYmdGhpcy5lZGl0b3Iuc2V0VmFsdWUodGhpcy5saW5lcy5qb2luKCJcbiIpKTtjb25zdCBvPW58fHQuZm9jdXNlZExpbmVubz90aGlzLmZvY3VzZWRMaW5lbm86bnVsbDtpZihvJiZ0aGlzLmxpbmVzKXt0aGlzLmVkaXRvci5yZXZlYWxMaW5lSW5DZW50ZXIobyx0aGlzLm1vbmFjby5lZGl0b3IuU2Nyb2xsVHlwZS5TbW9vdGgpO2NvbnN0IHQ9dGhpcy5saW5lc1tvLTFdLmxlbmd0aDt0aGlzLmRlY29yYXRpb25zPXRoaXMuZWRpdG9yLmRlbHRhRGVjb3JhdGlvbnModGhpcy5kZWNvcmF0aW9ucyxbe3JhbmdlOm5ldyB0aGlzLm1vbmFjby5SYW5nZShvLDEsbywxKSxvcHRpb25zOntpc1dob2xlTGluZTohMCxsaW5lc0RlY29yYXRpb25zQ2xhc3NOYW1lOiJoaWdobGlnaHQtZ3V0dGVyIn19LHtyYW5nZTpuZXcgdGhpcy5tb25hY28uUmFuZ2UobywxLG8sdCsxKSxvcHRpb25zOntpbmxpbmVDbGFzc05hbWU6ImhpZ2hsaWdodC1saW5lIn19XSl9dC51c2VEYXJrTW9kZSYmdGhpcy5tb25hY28uZWRpdG9yLnNldFRoZW1lKGwkKHRoaXMudXNlRGFya01vZGUpKX19cCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHAkKX0scCQuybVjbXA9c28oe3R5cGU6cCQsc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoZCQsNyxLaCksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5jb2RlVmlld2VyQ29udGFpbmVyPXQuZmlyc3QpfX0saW5wdXRzOntsaW5lczoibGluZXMiLGZvY3VzZWRMaW5lbm86ImZvY3VzZWRMaW5lbm8iLG1vbmFjbzoibW9uYWNvIix1c2VEYXJrTW9kZToidXNlRGFya01vZGUifSxmZWF0dXJlczpbcW9dLGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWyJkZXRlY3RSZXNpemUiLCIiLDEsImNvZGUtdmlld2VyLWNvbnRhaW5lciIsMywicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLCJvblJlc2l6ZSJdLFsiY29kZVZpZXdlckNvbnRhaW5lciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwLDEpLER1KCJvblJlc2l6ZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZSgpfSkpLEN1KCkpLDImZSYmaHUoInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIixuLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUyl9LGRpcmVjdGl2ZXM6W2MkXSxzdHlsZXM6WyIuY29kZS12aWV3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICAgLmhpZ2hsaWdodC1ndXR0ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMTExLCAwLCAwLjcpO1xuICB3aWR0aDogNXB4ICFpbXBvcnRhbnQ7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgIC5oaWdobGlnaHQtbGluZSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxMTEsIDAsIDAuMyk7XG59Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHAkLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNvdXJjZS1jb2RlLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vc291cmNlX2NvZGVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vc291cmNlX2NvZGVfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse2xpbmVzOlt7dHlwZTpSX31dLGZvY3VzZWRMaW5lbm86W3t0eXBlOlJffV0sbW9uYWNvOlt7dHlwZTpSX31dLHVzZURhcmtNb2RlOlt7dHlwZTpSX31dLGNvZGVWaWV3ZXJDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJjb2RlVmlld2VyQ29udGFpbmVyIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dfSk7Y2xhc3MgbSR7Y29uc3RydWN0b3IoKXt0aGlzLmxpbmVzPW51bGwsdGhpcy5mb2N1c2VkTGluZW5vPW51bGwsdGhpcy51c2VEYXJrTW9kZT0hMSx0aGlzLm1vbmFjbyQ9bnVsbH1uZ09uSW5pdCgpe3RoaXMubW9uYWNvJD1QdChzJCgpKS5waXBlKFZ0KCgoKT0+d2luZG93Lm1vbmFjbykpKX19ZnVuY3Rpb24gdSQodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDYpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGtmKCIgIix0LmZvY3VzZWRTb3VyY2VMaW5lU3BlYy5maWxlX3BhdGgsIiAiKX19ZnVuY3Rpb24gZiQodCxlKXsxJnQmJihfdSgwLCJkaXYiLDcpLFBmKDEsIiBObyBmaWxlIHNlbGVjdGVkLiBDbGljayBhIGxpbmUgbnVtYmVyIGluIHRoZSBTdGFjayBUcmFjZSBzZWN0aW9uIHRvIHNob3cgdGhlIHNvdXJjZSBjb2RlLiAiKSxDdSgpKX1mdW5jdGlvbiBnJCh0LGUpe2lmKDEmdCYmTXUoMCwic291cmNlLWNvZGUiLDgpLDImdCl7Y29uc3QgdD1OdSgpO2h1KCJsaW5lcyIsdC5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQubGluZXMpKCJmb2N1c2VkTGluZW5vIix0LmZvY3VzZWRTb3VyY2VMaW5lU3BlYy5saW5lbm8pKCJ1c2VEYXJrTW9kZSIsdC51c2VEYXJrTW9kZSl9fW0kLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtJCl9LG0kLsm1Y21wPXNvKHt0eXBlOm0kLHNlbGVjdG9yczpbWyJzb3VyY2UtY29kZSJdXSxpbnB1dHM6e2xpbmVzOiJsaW5lcyIsZm9jdXNlZExpbmVubzoiZm9jdXNlZExpbmVubyIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIn0sZGVjbHM6Mix2YXJzOjYsY29uc3RzOltbMywibGluZXMiLCJmb2N1c2VkTGluZW5vIiwibW9uYWNvIiwidXNlRGFya01vZGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsInNvdXJjZS1jb2RlLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSksMiZlJiZodSgibGluZXMiLG4ubGluZXMpKCJmb2N1c2VkTGluZW5vIixuLmZvY3VzZWRMaW5lbm8pKCJtb25hY28iLEN5KDEsNCxuLm1vbmFjbyQpKSgidXNlRGFya01vZGUiLG4udXNlRGFya01vZGUpfSxkaXJlY3RpdmVzOltwJF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG0kLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNvdXJjZS1jb2RlIix0ZW1wbGF0ZTonXG4gICAgPHNvdXJjZS1jb2RlLWNvbXBvbmVudFxuICAgICAgW2xpbmVzXT0ibGluZXMiXG4gICAgICBbZm9jdXNlZExpbmVub109ImZvY3VzZWRMaW5lbm8iXG4gICAgICBbbW9uYWNvXT0ibW9uYWNvJCB8IGFzeW5jIlxuICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUiXG4gICAgPjwvc291cmNlLWNvZGUtY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtsaW5lczpbe3R5cGU6Ul99XSxmb2N1c2VkTGluZW5vOlt7dHlwZTpSX31dLHVzZURhcmtNb2RlOlt7dHlwZTpSX31dfSk7Y2xhc3MgaCR7Y29uc3RydWN0b3IoKXt0aGlzLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudD1udWxsLHRoaXMuZm9jdXNlZFNvdXJjZUxpbmVTcGVjPW51bGx9fWgkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxoJCl9LGgkLsm1Y21wPXNvKHt0eXBlOmgkLHNlbGVjdG9yczpbWyJzb3VyY2UtZmlsZXMtY29tcG9uZW50Il1dLGlucHV0czp7Zm9jdXNlZFNvdXJjZUZpbGVDb250ZW50OiJmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQiLGZvY3VzZWRTb3VyY2VMaW5lU3BlYzoiZm9jdXNlZFNvdXJjZUxpbmVTcGVjIix1c2VEYXJrTW9kZToidXNlRGFya01vZGUifSxkZWNsczo4LHZhcnM6Myxjb25zdHM6W1sxLCJzb3VyY2UtZmlsZXMtY29udGFpbmVyIl0sWzEsImhlYWRlci1zZWN0aW9uIl0sWzEsInRpdGxlLXRhZyJdLFsiY2xhc3MiLCJmaWxlLWxhYmVsIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vRmlsZVNlbGVjdGVkIiwiIl0sWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsInVzZURhcmtNb2RlIiw0LCJuZ0lmIl0sWzEsImZpbGUtbGFiZWwiXSxbMSwibm8tZmlsZS1zZWxlY3RlZCJdLFszLCJsaW5lcyIsImZvY3VzZWRMaW5lbm8iLCJ1c2VEYXJrTW9kZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJkaXYiLDEpLF91KDIsImRpdiIsMiksUGYoMywiU291cmNlIENvZGUiKSxDdSgpLEhtKDQsdSQsMiwxLCJkaXYiLDMpLEhtKDUsZiQsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LHF5KSxDdSgpLEhtKDcsZyQsMSwzLCJzb3VyY2UtY29kZSIsNSksQ3UoKSksMiZlKXtjb25zdCB0PUZtKDYpO0RjKDQpLGh1KCJuZ0lmIixudWxsIT09bi5mb2N1c2VkU291cmNlTGluZVNwZWMpKCJuZ0lmRWxzZSIsdCksRGMoMyksaHUoIm5nSWYiLG51bGwhPT1uLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCYmbnVsbCE9PW4uZm9jdXNlZFNvdXJjZUxpbmVTcGVjJiZudWxsIT09bi5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQubGluZXMpfX0sZGlyZWN0aXZlczpbUHYsbSRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGVhZGVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDoyNHB4O3BhZGRpbmctYm90dG9tOjZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5maWxlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO292ZXJmbG93LXdyYXA6YW55d2hlcmU7b3ZlcmZsb3cteTphdXRvO3BhZGRpbmc6MCAyMHB4fS5uby1maWxlLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojNjY2O3BhZGRpbmc6MCAyMHB4O3doaXRlLXNwYWNlOm5vcm1hbH0uc291cmNlLWZpbGVzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtmb250LXNpemU6MTBweDtoZWlnaHQ6MTAwJX0udGl0bGUtdGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpib2xkO2hlaWdodDoxMDAlO3BhZGRpbmctbGVmdDo2cHg7dmVydGljYWwtYWxpZ246dG9wfXNvdXJjZS1jb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MTt3aWR0aDoxMDAlfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihoJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzb3VyY2UtZmlsZXMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9zb3VyY2VfZmlsZXNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vc291cmNlX2ZpbGVzX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7Zm9jdXNlZFNvdXJjZUZpbGVDb250ZW50Olt7dHlwZTpSX31dLGZvY3VzZWRTb3VyY2VMaW5lU3BlYzpbe3R5cGU6Ul99XSx1c2VEYXJrTW9kZTpbe3R5cGU6Ul99XX0pO2NsYXNzIGIke2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCQ9dGhpcy5zdG9yZS5zZWxlY3QoeEopLHRoaXMuZm9jdXNlZFNvdXJjZUxpbmVTcGVjJD10aGlzLnN0b3JlLnNlbGVjdChPSiksdGhpcy51c2VEYXJrTW9kZSQ9dGhpcy5zdG9yZS5zZWxlY3QoVkQpfX1iJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YiQpKGZ1KGlTKSl9LGIkLsm1Y21wPXNvKHt0eXBlOmIkLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXMiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywiZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50IiwiZm9jdXNlZFNvdXJjZUxpbmVTcGVjIiwidXNlRGFya01vZGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsInNvdXJjZS1maWxlcy1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpKSwyJmUmJmh1KCJmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQiLEN5KDEsMyxuLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCQpKSgiZm9jdXNlZFNvdXJjZUxpbmVTcGVjIixDeSgyLDUsbi5mb2N1c2VkU291cmNlTGluZVNwZWMkKSkoInVzZURhcmtNb2RlIixDeSgzLDcsbi51c2VEYXJrTW9kZSQpKX0sZGlyZWN0aXZlczpbaCRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihiJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXMiLHRlbXBsYXRlOidcbiAgICA8c291cmNlLWZpbGVzLWNvbXBvbmVudFxuICAgICAgW2ZvY3VzZWRTb3VyY2VGaWxlQ29udGVudF09ImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCQgfCBhc3luYyJcbiAgICAgIFtmb2N1c2VkU291cmNlTGluZVNwZWNdPSJmb2N1c2VkU291cmNlTGluZVNwZWMkIHwgYXN5bmMiXG4gICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSQgfCBhc3luYyJcbiAgICA+PC9zb3VyY2UtZmlsZXMtY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IHkkPVsic3RhY2tGcmFtZUFycmF5Il07ZnVuY3Rpb24gXyQodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwxMyksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDMpO0RjKDEpLGtmKCIgIyIsdC5leGVjdXRpb25JbmRleCwiOiAiKX19ZnVuY3Rpb24gQyQodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwxNCksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDMpO0RjKDEpLGtmKCIgIix0Lm9wVHlwZSwiICIpfX1mdW5jdGlvbiBNJCh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIpLFBmKDEsIiBFYWdlciBleGVjdXRpb24gIiksSG0oMixfJCwyLDEsInNwYW4iLDExKSxIbSgzLEMkLDIsMSwic3BhbiIsMTIpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTtEYygyKSxodSgibmdJZiIsbnVsbCE9PXQub3BUeXBlKSxEYygxKSxodSgibmdJZiIsbnVsbCE9PXQub3BUeXBlKX19ZnVuY3Rpb24gdiQodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwxNiksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDMpO0RjKDEpLGtmKCcgIicsdC5vcE5hbWUsJyIgJyl9fWZ1bmN0aW9uIHgkKHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsMTQpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgzKTtEYygxKSxrZigiICIsdC5vcFR5cGUsIiAiKX19ZnVuY3Rpb24gTyQodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiKSxQZigxLCIgQ3JlYXRpb24gb2YgZ3JhcGggb3AgIiksSG0oMix2JCwyLDEsInNwYW4iLDE1KSxIbSgzLHgkLDIsMSwic3BhbiIsMTIpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTtEYygyKSxodSgibmdJZiIsbnVsbCE9PXQub3BOYW1lKSxEYygxKSxodSgibmdJZiIsbnVsbCE9PXQub3BUeXBlKX19ZnVuY3Rpb24gUCQodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwxNyksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDEpLGtmKCIgKEhvc3QgbmFtZTogIix0LnN0YWNrRnJhbWVzRm9yRGlzcGxheVswXS5ob3N0X25hbWUsIikgIil9fWZ1bmN0aW9uIHckKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2Iiw3KSxfdSgxLCJzcGFuIiksX3UoMiwic3BhbiIsOCksSG0oMyxNJCw0LDIsImRpdiIsOSksSG0oNCxPJCw0LDIsImRpdiIsOSksQ3UoKSxDdSgpLF91KDUsImRpdiIpLEhtKDYsUCQsMiwxLCJzcGFuIiwxMCksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygyKSxodSgibmdTd2l0Y2giLHQuY29kZUxvY2F0aW9uVHlwZSksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsdC5Db2RlTG9jYXRpb25UeXBlLkVYRUNVVElPTiksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsdC5Db2RlTG9jYXRpb25UeXBlLkdSQVBIX09QX0NSRUFUSU9OKSxEYygyKSxodSgibmdJZiIsbnVsbCE9PXQuc3RhY2tGcmFtZXNGb3JEaXNwbGF5JiZ0LnN0YWNrRnJhbWVzRm9yRGlzcGxheS5sZW5ndGg+MCl9fWZ1bmN0aW9uIGskKHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwxOCksUGYoMSwiIENsaWNrIGFuIGVhZ2VyIGV4ZWN1dGlvbiBvciBncmFwaCBvcCB0byBzaG93IGl0cyBvcmlnaW5hbCBzdGFjayB0cmFjZS4gIiksQ3UoKSl9ZnVuY3Rpb24gUyQodCxlKXsxJnQmJihfdSgwLCJkaXYiLDI4KSxQZigxLCIg4qSTICIpLEN1KCkpfWNvbnN0IEQkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QsZV19O2Z1bmN0aW9uIFIkKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwyMiksX3UoMSwiZGl2IiwyMyksUGYoMiksQ3UoKSxfdSgzLCJkaXYiLDI0KSxIbSg0LFMkLDIsMCwiZGl2IiwyNSksX3UoNSwiZGl2IiwyNiksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe2NvbnN0IG49UGkodCkuJGltcGxpY2l0O3JldHVybiBOdSgyKS5vblNvdXJjZUxpbmVDbGlja2VkLmVtaXQobil9KSksUGYoNiksQ3UoKSxfdSg3LCJkaXYiLDI3KSxQZig4KSxDdSgpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgyKTtodSgibmdDbGFzcyIsYXkoNixEJCx0LmJlbG9uZ3NUb0ZvY3VzZWRGaWxlPyJmb2N1c2VkLWZpbGUiOiIiLHQuZm9jdXNlZD8iZm9jdXNlZC1zdGFjay1mcmFtZSI6IiIpKSxEYygxKSxGdSgidGl0bGUiLHQuZmlsZV9wYXRoKSxEYygxKSxrZigiICIsdC5jb25jaXNlX2ZpbGVfcGF0aCwiICIpLERjKDIpLGh1KCJuZ0lmIixuLnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlJiZ0LmZvY3VzZWQpLERjKDIpLGtmKCIgTGluZSAiLHQubGluZW5vLCIgIiksRGMoMiksa2YoIiAiLHQuZnVuY3Rpb25fbmFtZSwiICIpfX1mdW5jdGlvbiBFJCh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsMTksMjApLEhtKDIsUiQsOSw5LCJkaXYiLDIxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygyKSxodSgibmdGb3JPZiIsdC5zdGFja0ZyYW1lc0ZvckRpc3BsYXkpfX1mdW5jdGlvbiBBJCh0LGUpe31jbGFzcyBUJHtjb25zdHJ1Y3Rvcigpe3RoaXMuc3RhY2tGcmFtZXNGb3JEaXNwbGF5PW51bGwsdGhpcy5vblNvdXJjZUxpbmVDbGlja2VkPW5ldyBTeSx0aGlzLkNvZGVMb2NhdGlvblR5cGU9X0t9bmdBZnRlclZpZXdDaGVja2VkKCl7aWYodm9pZCAwPT09dGhpcy5zdGFja0ZyYW1lQXJyYXkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5zdGFja0ZyYW1lQXJyYXkubmF0aXZlRWxlbWVudCxlPXQucXVlcnlTZWxlY3RvcigiLmZvY3VzZWQtc3RhY2stZnJhbWUiKTtpZihudWxsIT09ZSlyZXR1cm4gdm9pZCB0aGlzLnNjcm9sbFRvRWxlbWVudCh0LGUpO2NvbnN0IG49dC5xdWVyeVNlbGVjdG9yKCIuc3RhY2stZnJhbWUtY29udGFpbmVyOmxhc3QtY2hpbGQiKTtudWxsIT09biYmdGhpcy5zY3JvbGxUb0VsZW1lbnQodCxuKX1zY3JvbGxUb0VsZW1lbnQodCxlKXt0LnNjcm9sbFRvcD1lLm9mZnNldFRvcH19VCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFQkKX0sVCQuybVjbXA9c28oe3R5cGU6VCQsc2VsZWN0b3JzOltbInN0YWNrLXRyYWNlLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoeSQsNSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5zdGFja0ZyYW1lQXJyYXk9dC5maXJzdCl9fSxpbnB1dHM6e2NvZGVMb2NhdGlvblR5cGU6ImNvZGVMb2NhdGlvblR5cGUiLG9wVHlwZToib3BUeXBlIixvcE5hbWU6Im9wTmFtZSIsZXhlY3V0aW9uSW5kZXg6ImV4ZWN1dGlvbkluZGV4IixzdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZToic3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUiLHN0YWNrRnJhbWVzRm9yRGlzcGxheToic3RhY2tGcmFtZXNGb3JEaXNwbGF5In0sb3V0cHV0czp7b25Tb3VyY2VMaW5lQ2xpY2tlZDoib25Tb3VyY2VMaW5lQ2xpY2tlZCJ9LGRlY2xzOjEwLHZhcnM6NCxjb25zdHM6W1sxLCJzdGFjay10cmFjZS1jb250YWluZXIiXSxbMSwic3RhY2stdHJhY2UtaGVhZGVyIl0sWzEsInN0YWNrLXRyYWNlLXRpdGxlIl0sWyJjbGFzcyIsInN0YWNrLXRyYWNlLWF1eC1pbmZvIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vU3RhY2tUcmFjZSIsIiJdLFsiY2xhc3MiLCJzdGFjay1mcmFtZS1hcnJheSIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJsb2FkaW5nU2VjdGlvbiIsIiJdLFsxLCJzdGFjay10cmFjZS1hdXgtaW5mbyJdLFsxLCJjb2RlLWxvY2F0aW9uLW9yaWdpbiIsMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsInN0YWNrLXRyYWNlLWhvc3QtbmFtZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJlYWdlci1leGVjdXRpb24taW5kZXgiLDQsIm5nSWYiXSxbImNsYXNzIiwib3AtdHlwZSIsNCwibmdJZiJdLFsxLCJlYWdlci1leGVjdXRpb24taW5kZXgiXSxbMSwib3AtdHlwZSJdLFsiY2xhc3MiLCJvcC1uYW1lIiw0LCJuZ0lmIl0sWzEsIm9wLW5hbWUiXSxbMSwic3RhY2stdHJhY2UtaG9zdC1uYW1lIl0sWzEsInN0YWNrLXRyYWNlLWF1eC1pbmZvIiwibm8tc3RhY2stdHJhY2UiXSxbMSwic3RhY2stZnJhbWUtYXJyYXkiXSxbInN0YWNrRnJhbWVBcnJheSIsIiJdLFsiY2xhc3MiLCJzdGFjay1mcmFtZS1jb250YWluZXIiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJzdGFjay1mcmFtZS1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwic3RhY2stZnJhbWUtZmlsZS1wYXRoIiwzLCJ0aXRsZSJdLFsxLCJzdGFjay1mcmFtZS1saW5lbm8tZnVuY3Rpb24iXSxbImNsYXNzIiwic3RpY2stdG8tYm90dG9tbW9zdC1pbmRpY2F0b3IiLCJ0aXRsZSIsIlN0aWNraW5nIHRvIHRoZSBib3R0b21tb3N0IGZyYW1lIGluIHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlIHdoZW4gbmF2aWdhdGluZyBleGVjdXRpb25zIGFuZCBncmFwaCBvcHMuIFRvIHJlbW92ZSB0aGlzIHN0aWNraW5nLCBjbGljayBhbnkgbm9uLWJvdHRvbW1vc3Qgc3RhY2sgZnJhbWUuIiw0LCJuZ0lmIl0sWzEsInN0YWNrLWZyYW1lLWxpbmVubyIsMywiY2xpY2siXSxbMSwic3RhY2stZnJhbWUtZnVuY3Rpb24iXSxbInRpdGxlIiwiU3RpY2tpbmcgdG8gdGhlIGJvdHRvbW1vc3QgZnJhbWUgaW4gdGhlIGN1cnJlbnQgc291cmNlIGZpbGUgd2hlbiBuYXZpZ2F0aW5nIGV4ZWN1dGlvbnMgYW5kIGdyYXBoIG9wcy4gVG8gcmVtb3ZlIHRoaXMgc3RpY2tpbmcsIGNsaWNrIGFueSBub24tYm90dG9tbW9zdCBzdGFjayBmcmFtZS4iLDEsInN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihfdSgwLCJkaXYiLDApLF91KDEsImRpdiIsMSksX3UoMiwic3BhbiIsMiksUGYoMywiIFN0YWNrIFRyYWNlICIpLEN1KCksSG0oNCx3JCw3LDQsImRpdiIsMyksSG0oNSxrJCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQscXkpLEN1KCksSG0oNyxFJCwzLDEsImRpdiIsNSksSG0oOCxBJCwwLDAsIm5nLXRlbXBsYXRlIixudWxsLDYscXkpLEN1KCkpLDImZSl7Y29uc3QgdD1GbSg2KSxlPUZtKDkpO0RjKDQpLGh1KCJuZ0lmIixudWxsIT09bi5jb2RlTG9jYXRpb25UeXBlKSgibmdJZkVsc2UiLHQpLERjKDMpLGh1KCJuZ0lmIixudWxsIT09bi5zdGFja0ZyYW1lc0ZvckRpc3BsYXkpKCJuZ0lmRWxzZSIsZSl9fSxkaXJlY3RpdmVzOltQdixEdixSdix4dixDdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5mb2N1c2VkLWZpbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LmZvY3VzZWQtc3RhY2stZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTExLDAsLjMpfS5uby1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0ub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17d29yZC13cmFwOmFueXdoZXJlfS5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VmZjE7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxMHB4O2hlaWdodDoxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7cGFkZGluZzoxcHggM3B4O3dpZHRoOm1heC1jb250ZW50fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnN0YWNrLWZyYW1lLWFycmF5W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87d2lkdGg6Y2FsYygxMDAlIC0gOHB4KX0uc3RhY2stZnJhbWUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYTBhMGEwfS5zdGFjay1mcmFtZS1maWxlLXBhdGhbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxODBweDt3aWR0aDoxODBweH0uc3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcH0uc3RhY2stZnJhbWUtZnVuY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoyMDBweDtwYWRkaW5nLWxlZnQ6MTBweDt0ZXh0LWFsaWduOmxlZnQ7d2hpdGUtc3BhY2U6bm9ybWFsO3dpZHRoOjIwMHB4O3dvcmQtd3JhcDphbnl3aGVyZX0uc3RhY2stZnJhbWUtbGluZW5vW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6ODBweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt3aWR0aDo4MHB4fS5zdGFjay10cmFjZS1hdXgtaW5mb1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxNXB4O3BhZGRpbmctbGVmdDoyNHB4fS5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbjtmb250LXNpemU6MTBweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDo4cHg7bWF4LWhlaWdodDozNjBweDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmhpZGRlbjtwYWRkaW5nLWxlZnQ6OHB4O3dpZHRoOjEwMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnN0YWNrLXRyYWNlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5zdGFjay10cmFjZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCA1cHggM3B4IC0zcHggI2NjYztwYWRkaW5nLWJvdHRvbTozcHh9LnN0YWNrLXRyYWNlLWhvc3QtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0uc3RhY2stdHJhY2UtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LnN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctcmlnaHQ6M3B4fSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzdGFjay10cmFjZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7Y29kZUxvY2F0aW9uVHlwZTpbe3R5cGU6Ul99XSxvcFR5cGU6W3t0eXBlOlJffV0sb3BOYW1lOlt7dHlwZTpSX31dLGV4ZWN1dGlvbkluZGV4Olt7dHlwZTpSX31dLHN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlOlt7dHlwZTpSX31dLHN0YWNrRnJhbWVzRm9yRGlzcGxheTpbe3R5cGU6Ul99XSxvblNvdXJjZUxpbmVDbGlja2VkOlt7dHlwZTpFX31dLHN0YWNrRnJhbWVBcnJheTpbe3R5cGU6YXIsYXJnczpbInN0YWNrRnJhbWVBcnJheSJdfV19KTtjbGFzcyBOJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jb2RlTG9jYXRpb25UeXBlJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoeUosKHQ9Pm51bGw9PT10P251bGw6dC5jb2RlTG9jYXRpb25UeXBlKSkpKSx0aGlzLm9wVHlwZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKHlKLCh0PT5udWxsPT09dD9udWxsOnQub3BUeXBlKSkpKSx0aGlzLm9wTmFtZSQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKHlKLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09X0suR1JBUEhfT1BfQ1JFQVRJT04/bnVsbDp0Lm9wTmFtZSkpKSksdGhpcy5leGVjdXRpb25JbmRleCQ9dGhpcy5zdG9yZS5waXBlKHJTKGJTKHlKLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09X0suRVhFQ1VUSU9OP251bGw6dC5leGVjdXRpb25JbmRleCkpKSksdGhpcy5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSQ9dGhpcy5zdG9yZS5waXBlKHJTKFBKKSksdGhpcy5zdGFja0ZyYW1lc0ZvckRpc3BsYXkkPXRoaXMuc3RvcmUucGlwZShyUyhiUyhfSixPSiwoKHQsZSk9PntpZihudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0e2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGxpbmVubzphLGZ1bmN0aW9uX25hbWU6cn09byxzPWkuc3BsaXQoIi8iKSxsPW51bGwhPT1lJiZ0PT09ZS5ob3N0X25hbWUmJmk9PT1lLmZpbGVfcGF0aDtuLnB1c2goe2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGNvbmNpc2VfZmlsZV9wYXRoOnNbcy5sZW5ndGgtMV0sbGluZW5vOmEsZnVuY3Rpb25fbmFtZTpyLGJlbG9uZ3NUb0ZvY3VzZWRGaWxlOmwsZm9jdXNlZDpsJiZhPT09ZS5saW5lbm99KX1yZXR1cm4gbn0pKSkpfW9uU291cmNlTGluZUNsaWNrZWQodCl7Y29uc3R7aG9zdF9uYW1lOmUsZmlsZV9wYXRoOm4sbGluZW5vOm8sZnVuY3Rpb25fbmFtZTppfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2gobUsoe3N0YWNrRnJhbWU6e2hvc3RfbmFtZTplLGZpbGVfcGF0aDpuLGxpbmVubzpvLGZ1bmN0aW9uX25hbWU6aX19KSl9fWZ1bmN0aW9uIHokKHQsZSl7MSZ0JiZNdSgwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIpfWZ1bmN0aW9uIEkkKHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwzKSxNdSgxLCJ0Zi1kZWJ1Z2dlci12Mi1hbGVydHMiKSxfdSgyLCJkaXYiLDQpLE11KDMsInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIiksTXUoNCwidGYtZGVidWdnZXItdjItZ3JhcGgiKSxDdSgpLE11KDUsInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiKSxDdSgpLF91KDYsImRpdiIsNSksTXUoNywidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIiksTXUoOCwidGYtZGVidWdnZXItdjItc3RhY2stdHJhY2UiKSxDdSgpKX1OJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TiQpKGZ1KGlTKSl9LE4kLsm1Y21wPXNvKHt0eXBlOk4kLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSJdXSxkZWNsczo3LHZhcnM6MTgsY29uc3RzOltbMywiY29kZUxvY2F0aW9uVHlwZSIsIm9wVHlwZSIsIm9wTmFtZSIsImV4ZWN1dGlvbkluZGV4Iiwic3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUiLCJzdGFja0ZyYW1lc0ZvckRpc3BsYXkiLCJvblNvdXJjZUxpbmVDbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJzdGFjay10cmFjZS1jb21wb25lbnQiLDApLER1KCJvblNvdXJjZUxpbmVDbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNvdXJjZUxpbmVDbGlja2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLEN1KCkpLDImZSYmaHUoImNvZGVMb2NhdGlvblR5cGUiLEN5KDEsNixuLmNvZGVMb2NhdGlvblR5cGUkKSkoIm9wVHlwZSIsQ3koMiw4LG4ub3BUeXBlJCkpKCJvcE5hbWUiLEN5KDMsMTAsbi5vcE5hbWUkKSkoImV4ZWN1dGlvbkluZGV4IixDeSg0LDEyLG4uZXhlY3V0aW9uSW5kZXgkKSkoInN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixDeSg1LDE0LG4uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkKSkoInN0YWNrRnJhbWVzRm9yRGlzcGxheSIsQ3koNiwxNixuLnN0YWNrRnJhbWVzRm9yRGlzcGxheSQpKX0sZGlyZWN0aXZlczpbVCRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihOJCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSIsdGVtcGxhdGU6J1xuICAgIDxzdGFjay10cmFjZS1jb21wb25lbnRcbiAgICAgIFtjb2RlTG9jYXRpb25UeXBlXT0iY29kZUxvY2F0aW9uVHlwZSQgfCBhc3luYyJcbiAgICAgIFtvcFR5cGVdPSJvcFR5cGUkIHwgYXN5bmMiXG4gICAgICBbb3BOYW1lXT0ib3BOYW1lJCB8IGFzeW5jIlxuICAgICAgW2V4ZWN1dGlvbkluZGV4XT0iZXhlY3V0aW9uSW5kZXgkIHwgYXN5bmMiXG4gICAgICBbc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGVdPSJcbiAgICAgICAgc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkIHwgYXN5bmNcbiAgICAgICJcbiAgICAgIFtzdGFja0ZyYW1lc0ZvckRpc3BsYXldPSJzdGFja0ZyYW1lc0ZvckRpc3BsYXkkIHwgYXN5bmMiXG4gICAgICAob25Tb3VyY2VMaW5lQ2xpY2tlZCk9Im9uU291cmNlTGluZUNsaWNrZWQoJGV2ZW50KSJcbiAgICA+PC9zdGFjay10cmFjZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgSCR7Y29uc3RydWN0b3IoKXt0aGlzLnJ1bnM9e30sdGhpcy5ydW5JZHM9W10sdGhpcy5hY3RpdmVSdW5JZD1udWxsfX1IJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SCQpfSxIJC7JtWNtcD1zbyh7dHlwZTpIJCxzZWxlY3RvcnM6W1siZGVidWdnZXItY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIscnVuSWRzOiJydW5JZHMiLGFjdGl2ZVJ1bklkOiJhY3RpdmVSdW5JZCJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImRlYnVnZ2VyLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbMSwidG9wLXNlY3Rpb24iXSxbMSwidG9wLWNlbnRlci1zZWN0aW9uIl0sWzEsImJvdHRvbS1zZWN0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihfdSgwLCJkaXYiLDApLEhtKDEseiQsMSwwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIsMSksSG0oMixJJCw5LDAsIm5nLXRlbXBsYXRlIixudWxsLDIscXkpLEN1KCkpLDImZSl7Y29uc3QgdD1GbSgzKTtEYygxKSxodSgibmdJZiIsMD09PW4ucnVuSWRzLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LHpYLFJKLGtRLFlRLG4kLGIkLE4kXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmJvdHRvbS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXRvcDoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7aGVpZ2h0OjM0JTtwYWRkaW5nLXRvcDo2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmJvdHRvbS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmJvdHRvbS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fS5kZWJ1Z2dlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59LnRvcC1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO2hlaWdodDo2NiU7cGFkZGluZzo2cHggMH10Zi1kZWJ1Z2dlci12Mi1hbGVydHNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6MTBweDttaW4td2lkdGg6MTYwcHg7d2lkdGg6Y2FsYygxNSUgLSAxMXB4KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICB0Zi1kZWJ1Z2dlci12Mi1hbGVydHNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICB0Zi1kZWJ1Z2dlci12Mi1hbGVydHNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgIzU1NX10Zi1kZWJ1Z2dlci12Mi1ncmFwaC1leGVjdXRpb25zW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4LWdyb3c6MTttaW4td2lkdGg6NTQwcHg7d2lkdGg6NTQwcHh9dGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDo3MCV9dGYtZGVidWdnZXItdjItc3RhY2stdHJhY2VbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2hlaWdodDoxMDAlO21pbi13aWR0aDo1NDBweDt3aWR0aDo1NDBweH0udG9wLWNlbnRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzphdXRvO3dpZHRoOjU1JX10Zi1kZWJ1Z2dlci12Mi10aW1lbGluZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9ja310Zi1kZWJ1Z2dlci12Mi1ncmFwaFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWdyYXBoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgdGYtZGVidWdnZXItdjItZ3JhcGhbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEgkLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRlYnVnZ2VyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZGVidWdnZXJfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZGVidWdnZXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse3J1bnM6W3t0eXBlOlJffV0scnVuSWRzOlt7dHlwZTpSX31dLGFjdGl2ZVJ1bklkOlt7dHlwZTpSX31dfSk7Y2xhc3MgRiR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVucyQ9dGhpcy5zdG9yZS5waXBlKHJTKFJLKSksdGhpcy5ydW5zSWRzJD10aGlzLnN0b3JlLnBpcGUoclMoYlMoUkssKHQ9Pk9iamVjdC5rZXlzKHQpKSkpKSx0aGlzLmFjdGl2ZVJ1bklkJD10aGlzLnN0b3JlLnBpcGUoclMoQUspKX1uZ09uSW5pdCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goSVgoKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEhYKCkpfX1GJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RiQpKGZ1KGlTKSl9LEYkLsm1Y21wPXNvKHt0eXBlOkYkLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12MiJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJydW5zIiwicnVuSWRzIiwiYWN0aXZlUnVuSWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsImRlYnVnZ2VyLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIikpLDImZSYmaHUoInJ1bnMiLEN5KDEsMyxuLnJ1bnMkKSkoInJ1bklkcyIsQ3koMiw1LG4ucnVuc0lkcyQpKSgiYWN0aXZlUnVuSWQiLEN5KDMsNyxuLmFjdGl2ZVJ1bklkJCkpfSxkaXJlY3RpdmVzOltIJF0scGlwZXM6W1Z2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRiQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjIiLHRlbXBsYXRlOidcbiAgICA8ZGVidWdnZXItY29tcG9uZW50XG4gICAgICBbcnVuc109InJ1bnMkIHwgYXN5bmMiXG4gICAgICBbcnVuSWRzXT0icnVuc0lkcyQgfCBhc3luYyJcbiAgICAgIFthY3RpdmVSdW5JZF09ImFjdGl2ZVJ1bklkJCB8IGFzeW5jIlxuICAgID48L2RlYnVnZ2VyLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBMJD0iZGVidWdnZXItdjIiO2Z1bmN0aW9uIEIkKHQsZSxuLG8saSl7aWYobjw9MHx8IU51bWJlci5pc0ludGVnZXIobikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhZ2VTaXplOiAke259YCk7aWYoZT5vKXRocm93IG5ldyBFcnJvcihgZW5kIGluZGV4ICgke2V9KSBleGNlZWRzIHRvdGFsIG51bWJlciBvZiBpdGVtcyAoJHtvfSlgKTtpZihlLXQ+bil0aHJvdyBuZXcgRXJyb3IoImJlZ2luLWVuZCBzcGFuIGV4Y2VlZHMgcGFnZSBzaXplLCB3aGljaCBpcyBub3QgYWxsb3dlZCIpO2NvbnN0IGE9W10scj1NYXRoLmZsb29yKHQvbik7KCEociBpbiBpKXx8aVtyXTxuJiZyKm4raVtyXTxvKSYmYS5wdXNoKHIpO2NvbnN0IHM9TWF0aC5mbG9vcigoZS0xKS9uKTtpZihzIT09cil7KCEocyBpbiBpKXx8cypuK2lbc108ZSYmZTxvKSYmYS5wdXNoKHMpfXJldHVybiBhfWNsYXNzIFYke2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuZGF0YVNvdXJjZT1uLHRoaXMubG9hZERhdGEkPVdTKCgoKT0+e2NvbnN0IHQ9dGhpcy5sb2FkRGVidWdnZXJSdW5zKHBlKHRoaXMub25EZWJ1Z2dlckRhdGFQb2xsKCksdGhpcy5vbkNvcmVSZWxvYWQoKSkpLnBpcGUoSWUoKSksZT10aGlzLmxvYWRTb3VyY2VGaWxlTGlzdCh0KSxuPXRoaXMuY3JlYXRlTnVtRXhlY3V0aW9uTG9hZGVyKHQpLG89dGhpcy5jcmVhdGVOdW1BbGVydHNBbmRCcmVha2Rvd25Mb2FkZXIodCksaT10aGlzLm9uQWxlcnRUeXBlRm9jdXNlZCgpLGE9dGhpcy5mZXRjaEV4ZWN1dGlvbkRpZ2VzdHNGb3JBbGVydFR5cGVGb2N1cyhpKSxyPXRoaXMuY3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRldGVjdG9yKG4pLnBpcGUoSWUoKSkscz10aGlzLmNyZWF0ZUV4ZWN1dGlvbkRpZ2VzdExvYWRlcihwZSh0aGlzLm9uRXhlY3V0aW9uU2Nyb2xsKCksdGhpcy5jcmVhdGVJbml0aWFsRXhlY3V0aW9uRGlnZXN0KHIpLGEpKSxsPXRoaXMuY3JlYXRlRXhlY3V0aW9uRGF0YUFuZFN0YWNrRnJhbWVzTG9hZGVyKHBlKHRoaXMub25FeGVjdXRpb25EaWdlc3RGb2N1c2VkKCksci5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KEFLKSx0aGlzLnN0b3JlLnNlbGVjdChmSikpLFZ0KCgoWyx0LGVdKT0+KHthY3RpdmVSdW5JZDp0LGxvYWRlZEV4ZWN1dGlvbkRhdGE6ZSxmb2N1c0luZGV4OjB9KSkpKSkpO3JldHVybiBwZShvLHMsbCx0aGlzLmNyZWF0ZU51bUdyYXBoRXhlY3V0aW9uTG9hZGVyKHQpLGUsdGhpcy5vblNvdXJjZUZpbGVGb2N1c2VkKCksdGhpcy5sb2FkR3JhcGhFeGVjdXRpb25QYWdlcyh0aGlzLm9uR3JhcGhFeGVjdXRpb25TY3JvbGwoKSksdGhpcy5sb2FkR3JhcGhPcFN0YWNrRnJhbWVzKHRoaXMubG9hZEdyYXBoT3BJbmZvKCkpKS5waXBlKFZ0KCgoKT0+KHt9KSkpKX0pLHtkaXNwYXRjaDohMX0pfW9uRGVidWdnZXJEYXRhUG9sbCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoJFMoSVgpLFZlKCh0PT4oZnVuY3Rpb24gZSh0LG4sbyl7cmV0dXJuIHQucGlwZSh6ZSgodD0+dC5waXBlKHFlKG4pLE9lKCgoWyx0XSk9PmRlKHQpKSkpKSksVWUobyksVnQoKCgpPT57fSkpKX0pKHp0KHQpLHRoaXMuc3RvcmUuc2VsZWN0KFRLKS5waXBlKFZ0KCh0PT4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD42ZTQ/NmU0OnQ+NGUzP3Q6MmUzfSkodCkpKSksdGhpcy5hY3Rpb25zJC5waXBlKCRTKEhYKSkpKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKEZYKCkpKSksVnQoKCgpPT57fSkpKX1vbkNvcmVSZWxvYWQoKXtyZXR1cm4gcGUodGhpcy5hY3Rpb25zJC5waXBlKCRTKCRFLHRBKSksdGhpcy5hY3Rpb25zJC5waXBlKCRTKEtFKSkucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChFSykpLGZlKCgoWyx0XSk9PnQuc3RhdGU9PT1HRS5OT1RfTE9BREVEfHx0LnN0YXRlPT09R0UuRkFJTEVEJiZudWxsPT09dC5sYXN0TG9hZGVkVGltZUluTXMpKSkpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3Qob1QpKSxmZSgoKFssdF0pPT50PT09TCQpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goRlgoKSkpKSxWdCgoKCk9Pnt9KSkpfWxvYWREZWJ1Z2dlclJ1bnModCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChFSykpLGZlKCgoWyx7c3RhdGU6dH1dKT0+dCE9PUdFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goTFgoKSkpKSwkdCgoKCk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFJ1bnMoKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChCWCh7cnVuczp0fSkpfSkpLFZ0KCgoKT0+e30pKSkpKSl9Y3JlYXRlTnVtRXhlY3V0aW9uTG9hZGVyKHQpe3JldHVybiB0LnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoUkspLHRoaXMuc3RvcmUuc2VsZWN0KFVLKSksZmUoKChbLHQsZV0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmZS5zdGF0ZSE9PUdFLkxPQURJTkcpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goWVgoKSkpKSwkdCgoKFssdF0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoRXhlY3V0aW9uRGlnZXN0cyhlLDAsMCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gocVgoe251bUV4ZWN1dGlvbnM6dC5udW1fZGlnZXN0c30pKX0pKSxWdCgoKCk9Pnt9KSkpfSkpKX1jcmVhdGVOdW1HcmFwaEV4ZWN1dGlvbkxvYWRlcih0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KFJLKSx0aGlzLnN0b3JlLnNlbGVjdChLSykpLGZlKCgoWyx0LGVdKT0+T2JqZWN0LmtleXModCkubGVuZ3RoPjAmJmUuc3RhdGUhPT1HRS5MT0FESU5HKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKGVLKCkpKSksJHQoKChbLHRdKT0+e2NvbnN0IGU9T2JqZWN0LmtleXModClbMF07cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEdyYXBoRXhlY3V0aW9uRGlnZXN0cyhlLDAsMCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gobksoe251bUdyYXBoRXhlY3V0aW9uczp0Lm51bV9kaWdlc3RzfSkpfSkpLFZ0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZU51bUFsZXJ0c0FuZEJyZWFrZG93bkxvYWRlcih0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KFJLKSx0aGlzLnN0b3JlLnNlbGVjdCh6SykpLGZlKCgoWyx0LGVdKT0+T2JqZWN0LmtleXModCkubGVuZ3RoPjAmJmUuc3RhdGUhPT1HRS5MT0FESU5HKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKFVYKCkpKSksJHQoKChbLHRdKT0+e2NvbnN0IGU9T2JqZWN0LmtleXModClbMF07cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEFsZXJ0cyhlLDAsMCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goalgoe251bUFsZXJ0czp0Lm51bV9hbGVydHMsYWxlcnRzQnJlYWtkb3duOnQuYWxlcnRzX2JyZWFrZG93bn0pKX0pKSxWdCgoKCk9Pnt9KSkpfSkpKX1jcmVhdGVJbml0aWFsRXhlY3V0aW9uRGV0ZWN0b3IodCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChXSyksdGhpcy5zdG9yZS5zZWxlY3QoakspKSxmZSgoKFssdCxlXSk9PnQ+MCYmMD09PU9iamVjdC5rZXlzKGUucGFnZUxvYWRlZFNpemVzKS5sZW5ndGgpKSxWdCgoKCk9Pnt9KSkpfWNyZWF0ZUluaXRpYWxFeGVjdXRpb25EaWdlc3QodCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChXSyksdGhpcy5zdG9yZS5zZWxlY3QoQUspLHRoaXMuc3RvcmUuc2VsZWN0KFlLKSksZmUoKChbLCx0XSk9Pm51bGwhPT10KSksVnQoKChbLHQsZSxuXSk9Pih7YmVnaW46MCxlbmQ6TWF0aC5taW4odCxuKSxydW5JZDplfSkpKSl9b25FeGVjdXRpb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKEtYLEpYLFFYKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChBSyksdGhpcy5zdG9yZS5zZWxlY3QoR0spLHRoaXMuc3RvcmUuc2VsZWN0KFdLKSx0aGlzLnN0b3JlLnNlbGVjdChxSyksdGhpcy5zdG9yZS5zZWxlY3QoWUspKSxmZSgoKFt0XSk9Pm51bGwhPT10KSksVnQoKChbLHQsZSxuLG8saV0pPT4oe3J1bklkOnQsYmVnaW46ZSxlbmQ6TWF0aC5taW4obixlK28pLHBhZ2VTaXplOml9KSkpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KGpLKSksVnQoKChbdCxlXSk9Pih7cHJvcHM6dCxsb2FkZWQ6ZSxtaXNzaW5nUGFnZXM6QiQodC5iZWdpbix0LmVuZCx0LnBhZ2VTaXplLGUubnVtRXhlY3V0aW9ucyxlLnBhZ2VMb2FkZWRTaXplcyl9KSkpLGZlKCgoe21pc3NpbmdQYWdlczp0fSk9PnQubGVuZ3RoPjApKSxWdCgoKHtwcm9wczp0LGxvYWRlZDplLG1pc3NpbmdQYWdlczpufSk9Pntjb25zdHtydW5JZDpvLHBhZ2VTaXplOml9PXQ7cmV0dXJue2JlZ2luOm5bMF0qaSxlbmQ6TWF0aC5taW4oZS5udW1FeGVjdXRpb25zLChuW24ubGVuZ3RoLTFdKzEpKmkpLHJ1bklkOm99fSkpKX1jcmVhdGVFeGVjdXRpb25EaWdlc3RMb2FkZXIodCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChqSykpLGZlKCgoW3tiZWdpbjp0LGVuZDplfSxuXSk9PmU+dCYmIShmdW5jdGlvbiBvKHQsZSxuKXtpZihlPj1uKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYmVnaW4gdG8gYmUgbGVzcyB0aGFuIGVuZCwgYnV0IGdvdCBiZWdpbj0ke2V9LCBlbmQ9JHtufWApO3JldHVybi0xIT09dC5maW5kSW5kZXgoKHQ9PnQuYmVnaW4+PWUmJnQuZW5kPD1uKSl9KShuLmxvYWRpbmdSYW5nZXMsdCxlKSkpLFdlKCgoW3tiZWdpbjp0LGVuZDplfV0pPT57dGhpcy5zdG9yZS5kaXNwYXRjaChaWCh7YmVnaW46dCxlbmQ6ZX0pKX0pKSwkdCgoKFt7cnVuSWQ6dCxiZWdpbjplLGVuZDpufV0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hFeGVjdXRpb25EaWdlc3RzKHQsZSxuKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChYWCh0KSl9KSksVnQoKCgpPT57fSkpKSkpKX1vbkV4ZWN1dGlvbkRpZ2VzdEZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKCRTKCRYKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChBSyksdGhpcy5zdG9yZS5zZWxlY3QoZkopLHRoaXMuc3RvcmUuc2VsZWN0KEdLKSksVnQoKChbdCxlLG4sb10pPT4oe2FjdGl2ZVJ1bklkOmUsbG9hZGVkRXhlY3V0aW9uRGF0YTpuLGZvY3VzSW5kZXg6byt0LmRpc3BsYXlJbmRleH0pKSkpfWNyZWF0ZUV4ZWN1dGlvbkRhdGFBbmRTdGFja0ZyYW1lc0xvYWRlcih0KXtyZXR1cm4gdC5waXBlKGZlKCgoe2FjdGl2ZVJ1bklkOnQsbG9hZGVkRXhlY3V0aW9uRGF0YTplLGZvY3VzSW5kZXg6bn0pPT5udWxsIT09dCYmbnVsbCE9PW4mJnZvaWQgMD09PWVbbl0pKSwkdCgoKHthY3RpdmVSdW5JZDp0LGZvY3VzSW5kZXg6ZX0pPT57Y29uc3Qgbj1lLG89bisxO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hFeGVjdXRpb25EYXRhKHQsbixvKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaCh0Syh0KSl9KSksVnQoKHQ9Pih7ZXhlY3V0aW9uRGF0YTp0LGJlZ2luOm4sZW5kOm99KSkpKX0pKSxWdCgoKHtleGVjdXRpb25EYXRhOnR9KT0+dC5leGVjdXRpb25zWzBdKSkscWUodGhpcy5zdG9yZS5zZWxlY3QoQUspLHRoaXMuc3RvcmUuc2VsZWN0KGhKKSksZmUoKChbdCxlLG5dKT0+e2lmKG51bGw9PT1lKXJldHVybiExO2Zvcihjb25zdCBlIG9mIHQuc3RhY2tfZnJhbWVfaWRzKWlmKHZvaWQgMD09PW5bZV0pcmV0dXJuITA7cmV0dXJuITF9KSksJHQoKChbdCxlXSk9Pntjb25zdCBuPXQuc3RhY2tfZnJhbWVfaWRzO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hTdGFja0ZyYW1lcyhlLG4pLnBpcGUoV2UoKHQ9Pntjb25zdCBlPXt9O2ZvcihsZXQgbz0wO288bi5sZW5ndGg7KytvKWVbbltvXV09dC5zdGFja19mcmFtZXNbb107dGhpcy5zdG9yZS5kaXNwYXRjaChnSyh7c3RhY2tGcmFtZXM6ZX0pKX0pKSxWdCgoKCk9Pnt9KSkpfSkpKX1vbkdyYXBoRXhlY3V0aW9uU2Nyb2xsKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZSgkUyhhSyksQ2UoMTAwKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChBSyksdGhpcy5zdG9yZS5zZWxlY3QoSkspLHRoaXMuc3RvcmUuc2VsZWN0KFFLKSksZmUoKChbLHQsZV0pPT5udWxsIT09dCYmZT4wKSksVnQoKChbLHQsZSxuXSk9Pih7cnVuSWQ6dCxudW1HcmFwaEV4ZWN1dGlvbnM6ZSxzY3JvbGxCZWdpbkluZGV4Om59KSkpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHRKKSx0aGlzLnN0b3JlLnNlbGVjdCgkSyksdGhpcy5zdG9yZS5zZWxlY3QoZUopLHRoaXMuc3RvcmUuc2VsZWN0KG5KKSksVnQoKChbe3J1bklkOnQsbnVtR3JhcGhFeGVjdXRpb25zOmUsc2Nyb2xsQmVnaW5JbmRleDpufSxvLGksYSxyXSk9PntsZXQgcz1CJChuLE1hdGgubWluKG4raSxlKSxvLGUscik7cmV0dXJuIHM9cy5maWx0ZXIoKHQ9Pi0xPT09YS5pbmRleE9mKHQpKSkse3J1bklkOnQsbWlzc2luZ1BhZ2VzOnMscGFnZVNpemU6byxudW1HcmFwaEV4ZWN1dGlvbnM6ZX19KSkpfWxvYWRHcmFwaEV4ZWN1dGlvblBhZ2VzKHQpe3JldHVybiB0LnBpcGUoZmUoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+dC5sZW5ndGg+MCkpLFdlKCgoe21pc3NpbmdQYWdlczp0fSk9Pnt0LmZvckVhY2goKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKG9LKHtwYWdlSW5kZXg6dH0pKX0pKX0pKSwkdCgoKHtydW5JZDp0LG1pc3NpbmdQYWdlczplLHBhZ2VTaXplOm4sbnVtR3JhcGhFeGVjdXRpb25zOm99KT0+e2NvbnN0IGk9ZVswXSpuLGE9TWF0aC5taW4oKGVbZS5sZW5ndGgtMV0rMSkqbixvKTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoR3JhcGhFeGVjdXRpb25EYXRhKHQsaSxhKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChpSyh0KSl9KSksVnQoKCgpPT57fSkpKX0pKSl9bG9hZEdyYXBoT3BJbmZvKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZSgkUyhzSyxySykscWUodGhpcy5zdG9yZS5zZWxlY3QoQUspLHRoaXMuc3RvcmUuc2VsZWN0KGdKKSksZmUoKChbdCxlLG5dKT0+e2NvbnN0e2dyYXBoX2lkOm8sb3BfbmFtZTppfT10O3JldHVybiEobnVsbD09PWV8fHZvaWQgMCE9PW5bb10mJm5bb10uaGFzKGkpJiYobltvXS5nZXQoaSk9PT1HRS5MT0FESU5HfHxuW29dLmdldChpKT09PUdFLkxPQURFRCkpfSkpLFdlKCgoW3tncmFwaF9pZDp0LG9wX25hbWU6ZX1dKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChsSyh7Z3JhcGhfaWQ6dCxvcF9uYW1lOmV9KSkpKSwkdCgoKFt0LGVdKT0+e2NvbnN0e2dyYXBoX2lkOm4sb3BfbmFtZTpvfT10O3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hHcmFwaE9wSW5mbyhlLG4sbykucGlwZShXZSgodD0+dGhpcy5zdG9yZS5kaXNwYXRjaChjSyh7Z3JhcGhPcEluZm9SZXNwb25zZTp0fSkpKSksVnQoKHQ9Pih7cnVuSWQ6ZSxzdGFja0ZyYW1lSWRzOnQuc3RhY2tfZnJhbWVfaWRzfSkpKSl9KSkpfWxvYWRHcmFwaE9wU3RhY2tGcmFtZXModCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChoSikpLFZ0KCgoW3tydW5JZDp0LHN0YWNrRnJhbWVJZHM6ZX0sbl0pPT4oe3J1bklkOnQsbWlzc2luZ1N0YWNrRnJhbWVJZHM6ZS5maWx0ZXIoKHQ9PnZvaWQgMD09PW5bdF0pKX0pKSksZmUoKCh7cnVuSWQ6dCxtaXNzaW5nU3RhY2tGcmFtZUlkczplfSk9Pm51bGwhPT10JiZlLmxlbmd0aD4wKSksJHQoKCh7cnVuSWQ6dCxtaXNzaW5nU3RhY2tGcmFtZUlkczplfSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFN0YWNrRnJhbWVzKHQsZSkucGlwZShXZSgodD0+e2NvbnN0IG49e307Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDsrK28pbltlW29dXT10LnN0YWNrX2ZyYW1lc1tvXTt0aGlzLnN0b3JlLmRpc3BhdGNoKGdLKHtzdGFja0ZyYW1lczpufSkpfSkpLFZ0KCgoKT0+e30pKSkpKSl9b25BbGVydFR5cGVGb2N1c2VkKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZSgkUyhHWCkscWUodGhpcy5zdG9yZS5zZWxlY3QoQUspLHRoaXMuc3RvcmUuc2VsZWN0KEhLKSx0aGlzLnN0b3JlLnNlbGVjdChGSyksdGhpcy5zdG9yZS5zZWxlY3QoTEspLHRoaXMuc3RvcmUuc2VsZWN0KHpLKSksZmUoKChbLHQsZSxuLG8saV0pPT5udWxsIT09dCYmbnVsbCE9PWUmJm4+MCYmKG51bGw9PT1vfHxPYmplY3Qua2V5cyhvKS5sZW5ndGg8bikmJmkuc3RhdGUhPT1HRS5MT0FESU5HKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKFVYKCkpKSksJHQoKChbLHQsZV0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hBbGVydHModCwwLC0xLGUpKSksV2UoKCh7bnVtX2FsZXJ0czp0LGFsZXJ0c19icmVha2Rvd246ZSxhbGVydF90eXBlOm4sYmVnaW46byxlbmQ6aSxhbGVydHM6YX0pPT57dGhpcy5zdG9yZS5kaXNwYXRjaChXWCh7bnVtQWxlcnRzOnQsYWxlcnRzQnJlYWtkb3duOmUsYWxlcnRUeXBlOm4sYmVnaW46byxlbmQ6aSxhbGVydHM6YX0pKX0pKSl9ZmV0Y2hFeGVjdXRpb25EaWdlc3RzRm9yQWxlcnRUeXBlRm9jdXModCl7cmV0dXJuIHQucGlwZShxZSh0aGlzLnN0b3JlLnNlbGVjdChZSyksdGhpcy5zdG9yZS5zZWxlY3QocUspLHRoaXMuc3RvcmUuc2VsZWN0KFdLKSx0aGlzLnN0b3JlLnNlbGVjdChqSyksdGhpcy5zdG9yZS5zZWxlY3QoQUspKSxWdCgoKFt0LGUsbixvLGksYV0pPT57Y29uc3Qgcj10LmFsZXJ0c1swXS5leGVjdXRpb25faW5kZXgscz1CJChNYXRoLm1heCgwLHItTWF0aC5mbG9vcihuLzIpKSxNYXRoLm1pbihyK01hdGguZmxvb3Iobi8yKSxvKSxlLG8saS5wYWdlTG9hZGVkU2l6ZXMpO2lmKDA9PT1zLmxlbmd0aClyZXR1cm57cnVuSWQ6YSxiZWdpbjowLGVuZDowfTtyZXR1cm57cnVuSWQ6YSxiZWdpbjpzWzBdKmUsZW5kOk1hdGgubWluKGkubnVtRXhlY3V0aW9ucywoc1tzLmxlbmd0aC0xXSsxKSplKX19KSkpfWxvYWRTb3VyY2VGaWxlTGlzdCh0KXtyZXR1cm4gdC5waXBlKHFlKHRoaXMuc3RvcmUuc2VsZWN0KEFLKSx0aGlzLnN0b3JlLnNlbGVjdChNSikpLGZlKCgoWyx0LGVdKT0+bnVsbCE9PXQmJmUuc3RhdGUhPT1HRS5MT0FESU5HKSksV2UoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKGRLKCkpKSksJHQoKChbLHRdKT0+dGhpcy5kYXRhU291cmNlLmZldGNoU291cmNlRmlsZUxpc3QodCkucGlwZShXZSgodD0+e2NvbnN0IGU9W107dC5mb3JFYWNoKCgoW3Qsbl0pPT57ZS5wdXNoKHtob3N0X25hbWU6dCxmaWxlX3BhdGg6bn0pfSkpLHRoaXMuc3RvcmUuZGlzcGF0Y2gocEsoe3NvdXJjZUZpbGVzOmV9KSl9KSksVnQoKCgpPT57fSkpKSkpKX1vblNvdXJjZUZpbGVGb2N1c2VkKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZSgkUyhtSykscWUodGhpcy5zdG9yZS5zZWxlY3QoQUspLHRoaXMuc3RvcmUuc2VsZWN0KHZKKSx0aGlzLnN0b3JlLnNlbGVjdCh4SikpLFZ0KCgoW3QsZSxuLG9dKT0+KHtydW5JZDplLHN0YWNrRnJhbWU6dC5zdGFja0ZyYW1lLGZpbGVJbmRleDpuLGZpbGVDb250ZW50Om99KSkpLGZlKCgoe3J1bklkOnQsZmlsZUNvbnRlbnQ6ZX0pPT5udWxsIT09dCYmbnVsbCE9PWUmJmUubG9hZFN0YXRlPT09R0UuTk9UX0xPQURFRCkpLFdlKCgoe3N0YWNrRnJhbWU6dH0pPT50aGlzLnN0b3JlLmRpc3BhdGNoKHVLKHtob3N0X25hbWU6dC5ob3N0X25hbWUsZmlsZV9wYXRoOnQuZmlsZV9wYXRofSkpKSksJHQoKCh7ZmlsZUluZGV4OnQscnVuSWQ6ZX0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hTb3VyY2VGaWxlKGUsdCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goZksodCkpfSkpLFZ0KCgoKT0+e30pKSkpKSl9fVYkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWJCkoVHIoUVMpLFRyKGlTKSxUcihBWCkpfSxWJC7JtXByb3Y9U24oe3Rva2VuOlYkLGZhY3Rvcnk6ViQuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFYkLFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRU30se3R5cGU6aVN9LHt0eXBlOkFYfV19KSxudWxsKTtjbGFzcyBVJHt9VSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFUkKX0sVSQuybVtb2Q9dW8oe3R5cGU6VSR9KSxVJC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFUkLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltTSixSSl0saW1wb3J0czpbcnhdLGV4cG9ydHM6W1JKXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFUkLHtkZWNsYXJhdGlvbnM6W1NKLFJKXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbUkpdfSk7Y2xhc3MgaiR7fWokLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqJCl9LGokLsm1bW9kPXVvKHt0eXBlOmokfSksaiQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbR1EsTlEsWVFdLGltcG9ydHM6W3J4XSxleHBvcnRzOltZUV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhqJCx7ZGVjbGFyYXRpb25zOltHUSxOUSxZUV0saW1wb3J0czpbcnhdLGV4cG9ydHM6W1lRXX0pO2NsYXNzIFcke31XJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VyQpfSxXJC7JtW1vZD11byh7dHlwZTpXJH0pLFckLsm1aW5qPURuKHtpbXBvcnRzOltbcnhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVyQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2FRLGNRLGxRLHJRLHNRLGRRXSxpbXBvcnRzOltyeF0sZXhwb3J0czpbZFFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oVyQse2RlY2xhcmF0aW9uczpbYVEsY1EsbFEsclEsc1EsZFFdLGltcG9ydHM6W3J4XSxleHBvcnRzOltkUV19KTtjbGFzcyBHJHt9RyQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEckKX0sRyQuybVtb2Q9dW8oe3R5cGU6RyR9KSxHJC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFckLGZCXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEckLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltlJCxuJF0saW1wb3J0czpbcngsVyQsZkJdLGV4cG9ydHM6W24kXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEckLHtkZWNsYXJhdGlvbnM6W2UkLG4kXSxpbXBvcnRzOltyeCxXJCxmQl0sZXhwb3J0czpbbiRdfSk7Y2xhc3MgWSR7fVkkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZJCl9LFkkLsm1bW9kPXVvKHt0eXBlOlkkfSksWSQuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWSQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W05YLHpYXSxleHBvcnRzOlt6WF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhZJCx7ZGVjbGFyYXRpb25zOltOWCx6WF0sZXhwb3J0czpbelhdfSk7Y2xhc3MgcSR7fXEkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxJCl9LHEkLsm1bW9kPXVvKHt0eXBlOnEkfSkscSQuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocSQsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltjJF0sZGVjbGFyYXRpb25zOltjJF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhxJCx7ZGVjbGFyYXRpb25zOltjJF0sZXhwb3J0czpbYyRdfSk7Y29uc3QgWiQ9WyJjb2RlVmlld2VyQ29udGFpbmVyIl07Y2xhc3MgWCR7Y29uc3RydWN0b3IoKXt0aGlzLmZpcnN0VGV4dD1udWxsLHRoaXMuc2Vjb25kVGV4dD1udWxsLHRoaXMucmVuZGVyU2lkZUJ5U2lkZT0hMCx0aGlzLm1vbmFjbz1udWxsLHRoaXMuZWRpdG9yPW51bGwsdGhpcy5SRVNJWkVfREVCT1VOQ0VfSU5URVJWQUxfTVM9NTB9b25SZXNpemUoKXt0aGlzLmVkaXRvciYmdGhpcy5lZGl0b3IubGF5b3V0KCl9bmdPbkNoYW5nZXModCl7aWYoIXRoaXMubW9uYWNvKXJldHVybjtjb25zdCBlPSF0aGlzLmVkaXRvcjtlJiYodGhpcy5lZGl0b3I9dGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZURpZmZFZGl0b3IodGhpcy5jb2RlVmlld2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQse3JlYWRPbmx5OiEwLGZvbnRTaXplOjEwLG1pbmltYXA6e2VuYWJsZWQ6ITB9LHJlbmRlclNpZGVCeVNpZGU6dGhpcy5yZW5kZXJTaWRlQnlTaWRlLHRoZW1lOmwkKHRoaXMudXNlRGFya01vZGUpfSkpLChlfHx0LmZpcnN0VGV4dHx8dC5zZWNvbmRUZXh0KSYmdGhpcy5lZGl0b3Iuc2V0TW9kZWwoe29yaWdpbmFsOnRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLmZpcnN0VGV4dHx8IiIpLG1vZGlmaWVkOnRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLnNlY29uZFRleHR8fCIiKX0pLHQucmVuZGVyU2lkZUJ5U2lkZSYmdGhpcy5lZGl0b3IudXBkYXRlT3B0aW9ucyh7cmVuZGVyU2lkZUJ5U2lkZTp0aGlzLnJlbmRlclNpZGVCeVNpZGV9KSx0LnVzZURhcmtNb2RlJiZ0aGlzLm1vbmFjby5lZGl0b3Iuc2V0VGhlbWUobCQodGhpcy51c2VEYXJrTW9kZSkpfX1YJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WCQpfSxYJC7JtWNtcD1zbyh7dHlwZTpYJCxzZWxlY3RvcnM6W1sic291cmNlLWNvZGUtZGlmZi1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KFokLDcsS2gpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uY29kZVZpZXdlckNvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7Zmlyc3RUZXh0OiJmaXJzdFRleHQiLHNlY29uZFRleHQ6InNlY29uZFRleHQiLHJlbmRlclNpZGVCeVNpZGU6InJlbmRlclNpZGVCeVNpZGUiLG1vbmFjbzoibW9uYWNvIix1c2VEYXJrTW9kZToidXNlRGFya01vZGUifSxmZWF0dXJlczpbcW9dLGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWyJkZXRlY3RSZXNpemUiLCIiLDEsImNvZGUtdmlld2VyLWNvbnRhaW5lciIsMywicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLCJvblJlc2l6ZSJdLFsiY29kZVZpZXdlckNvbnRhaW5lciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwLDEpLER1KCJvblJlc2l6ZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZSgpfSkpLEN1KCkpLDImZSYmaHUoInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIixuLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUyl9LGRpcmVjdGl2ZXM6W2MkXSxzdHlsZXM6WyIuY29kZS12aWV3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWCQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtZGlmZi1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8ZGl2XG4gICAgICAjY29kZVZpZXdlckNvbnRhaW5lclxuICAgICAgY2xhc3M9ImNvZGUtdmlld2VyLWNvbnRhaW5lciJcbiAgICAgIGRldGVjdFJlc2l6ZVxuICAgICAgW3Jlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zXT0iUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TIlxuICAgICAgKG9uUmVzaXplKT0ib25SZXNpemUoKSJcbiAgICA+PC9kaXY+XG4gICcsc3R5bGVzOlsiXG4gICAgICAuY29kZS12aWV3ZXItY29udGFpbmVyIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse2ZpcnN0VGV4dDpbe3R5cGU6Ul99XSxzZWNvbmRUZXh0Olt7dHlwZTpSX31dLHJlbmRlclNpZGVCeVNpZGU6W3t0eXBlOlJffV0sbW9uYWNvOlt7dHlwZTpSX31dLHVzZURhcmtNb2RlOlt7dHlwZTpSX31dLGNvZGVWaWV3ZXJDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJjb2RlVmlld2VyQ29udGFpbmVyIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dfSk7Y2xhc3MgSyR7Y29uc3RydWN0b3IoKXt0aGlzLmZpcnN0VGV4dD1udWxsLHRoaXMuc2Vjb25kVGV4dD1udWxsLHRoaXMucmVuZGVyU2lkZUJ5U2lkZT0hMCx0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMubW9uYWNvJD1udWxsfW5nT25Jbml0KCl7dGhpcy5tb25hY28kPVB0KHMkKCkpLnBpcGUoVnQoKCgpPT53aW5kb3cubW9uYWNvKSkpfX1LJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SyQpfSxLJC7JtWNtcD1zbyh7dHlwZTpLJCxzZWxlY3RvcnM6W1sic291cmNlLWNvZGUtZGlmZiJdXSxpbnB1dHM6e2ZpcnN0VGV4dDoiZmlyc3RUZXh0IixzZWNvbmRUZXh0OiJzZWNvbmRUZXh0IixyZW5kZXJTaWRlQnlTaWRlOiJyZW5kZXJTaWRlQnlTaWRlIix1c2VEYXJrTW9kZToidXNlRGFya01vZGUifSxkZWNsczoyLHZhcnM6Nyxjb25zdHM6W1szLCJmaXJzdFRleHQiLCJzZWNvbmRUZXh0IiwicmVuZGVyU2lkZUJ5U2lkZSIsIm1vbmFjbyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihNdSgwLCJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSksMiZlJiZodSgiZmlyc3RUZXh0IixuLmZpcnN0VGV4dCkoInNlY29uZFRleHQiLG4uc2Vjb25kVGV4dCkoInJlbmRlclNpZGVCeVNpZGUiLG4ucmVuZGVyU2lkZUJ5U2lkZSkoIm1vbmFjbyIsQ3koMSw1LG4ubW9uYWNvJCkpKCJ1c2VEYXJrTW9kZSIsbi51c2VEYXJrTW9kZSl9LGRpcmVjdGl2ZXM6W1gkXSxwaXBlczpbVnZdLHN0eWxlczpbInNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEskLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNvdXJjZS1jb2RlLWRpZmYiLHRlbXBsYXRlOidcbiAgICA8c291cmNlLWNvZGUtZGlmZi1jb21wb25lbnRcbiAgICAgIFtmaXJzdFRleHRdPSJmaXJzdFRleHQiXG4gICAgICBbc2Vjb25kVGV4dF09InNlY29uZFRleHQiXG4gICAgICBbcmVuZGVyU2lkZUJ5U2lkZV09InJlbmRlclNpZGVCeVNpZGUiXG4gICAgICBbbW9uYWNvXT0ibW9uYWNvJCB8IGFzeW5jIlxuICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUiXG4gICAgPjwvc291cmNlLWNvZGUtZGlmZi1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICBzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7Zmlyc3RUZXh0Olt7dHlwZTpSX31dLHNlY29uZFRleHQ6W3t0eXBlOlJffV0scmVuZGVyU2lkZUJ5U2lkZTpbe3R5cGU6Ul99XSx1c2VEYXJrTW9kZTpbe3R5cGU6Ul99XX0pO2NsYXNzIEoke31KJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SiQpfSxKJC7JtW1vZD11byh7dHlwZTpKJH0pLEokLsm1aW5qPURuKHtpbXBvcnRzOltbcngscSRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSiQsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3AkLG0kLFgkLEskXSxpbXBvcnRzOltyeCxxJF0sZXhwb3J0czpbbSQsSyRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oSiQse2RlY2xhcmF0aW9uczpbcCQsbSQsWCQsSyRdLGltcG9ydHM6W3J4LHEkXSxleHBvcnRzOlttJCxLJF19KTtjbGFzcyBRJHt9USQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFEkKX0sUSQuybVtb2Q9dW8oe3R5cGU6USR9KSxRJC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LEokXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFEkLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltoJCxiJF0saW1wb3J0czpbcngsSiRdLGV4cG9ydHM6W2IkXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFEkLHtkZWNsYXJhdGlvbnM6W2gkLGIkXSxpbXBvcnRzOltyeCxKJF0sZXhwb3J0czpbYiRdfSk7Y2xhc3MgJCR7fSQkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkJCl9LCQkLsm1bW9kPXVvKHt0eXBlOiQkfSksJCQuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxKJF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkJCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbVCQsTiRdLGltcG9ydHM6W3J4LEokXSxleHBvcnRzOltOJF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbygkJCx7ZGVjbGFyYXRpb25zOltUJCxOJF0saW1wb3J0czpbcngsSiRdLGV4cG9ydHM6W04kXX0pO2NsYXNzIHQwe310MC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dDApfSx0MC7JtW1vZD11byh7dHlwZTp0MH0pLHQwLsm1aW5qPURuKHtpbXBvcnRzOltbcngsVyRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodDAsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2hRLHlRXSxpbXBvcnRzOltyeCxXJF0sZXhwb3J0czpbeVFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8odDAse2RlY2xhcmF0aW9uczpbaFEseVFdLGltcG9ydHM6W3J4LFckXSxleHBvcnRzOlt5UV19KTtjbGFzcyBlMHt9ZTAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGUwKX0sZTAuybVtb2Q9dW8oe3R5cGU6ZTB9KSxlMC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LHQwLFlMLEJKXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGUwLFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltQUSxrUV0saW1wb3J0czpbcngsdDAsWUwsQkpdLGV4cG9ydHM6W2tRXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGUwLHtkZWNsYXJhdGlvbnM6W1BRLGtRXSxpbXBvcnRzOltyeCx0MCxZTCxCSl0sZXhwb3J0czpba1FdfSk7Y2xhc3MgbjB7fWZ1bmN0aW9uIG8wKHQsZSl7Y29uc3Qgbj17fTtmb3IoY29uc3QgbyBvZiBPYmplY3Qua2V5cyh0KSl7bltvXT1lKHRbb10sbyl9cmV0dXJuIG59ZnVuY3Rpb24gaTAodCl7Y29uc3QgZT1uZXcgTWFwLG49dC5zbGljZSgpLnNvcnQoKCh0LGUpPT5hMCh0LnRhZyxlLnRhZykpKTtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBuPXQudGFnLnNwbGl0KCIvIiwxKVswXTtlLmhhcyhuKXx8ZS5zZXQobix7Z3JvdXBOYW1lOm4saXRlbXM6W119KSxlLmdldChuKS5pdGVtcy5wdXNoKHQpfXJldHVyblsuLi5lLnZhbHVlcygpXX1mdW5jdGlvbiBhMCh0LGUpe2xldCBuPTAsbz0wO2Zvcig7Oyl7aWYobj09PXQubGVuZ3RoKXJldHVybiBvPT09ZS5sZW5ndGg/MDotMTtpZihvPT09ZS5sZW5ndGgpcmV0dXJuIDE7aWYoczAodFtuXSkmJnMwKGVbb10pKXtjb25zdCBpPW4sYT1vO249cjAodCxuKzEpLG89cjAoZSxvKzEpO2NvbnN0IHI9TnVtYmVyKHQuc2xpY2UoaSxuKSkscz1OdW1iZXIoZS5zbGljZShhLG8pKTtpZihyPHMpcmV0dXJuLTE7aWYocj5zKXJldHVybiAxfWVsc2V7aWYobDAodFtuXSkpe2lmKCFsMChlW29dKSlyZXR1cm4tMX1lbHNle2lmKGwwKGVbb10pKXJldHVybiAxO2lmKHRbbl08ZVtvXSlyZXR1cm4tMTtpZih0W25dPmVbb10pcmV0dXJuIDF9bisrLG8rK319fWZ1bmN0aW9uIHIwKHQsZSl7bGV0IG47IShmdW5jdGlvbih0KXt0W3QuTkFUVVJBTD0wXT0iTkFUVVJBTCIsdFt0LlJFQUw9MV09IlJFQUwiLHRbdC5FWFBPTkVOVF9TSUdOPTJdPSJFWFBPTkVOVF9TSUdOIix0W3QuRVhQT05FTlQ9M109IkVYUE9ORU5UIn0pKG58fChuPXt9KSk7bGV0IG89bi5OQVRVUkFMLGk9ZTtmb3IoO2k8dC5sZW5ndGg7aSsrKWlmKG89PT1uLk5BVFVSQUwpe2lmKCIuIj09PXRbaV0pbz1uLlJFQUw7ZWxzZSBpZigiZSI9PT10W2ldfHwiRSI9PT10W2ldKW89bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIXMwKHRbaV0pKWJyZWFrfWVsc2UgaWYobz09PW4uUkVBTCl7aWYoImUiPT09dFtpXXx8IkUiPT09dFtpXSlvPW4uRVhQT05FTlRfU0lHTjtlbHNlIGlmKCFzMCh0W2ldKSlicmVha31lbHNlIGlmKG89PT1uLkVYUE9ORU5UX1NJR04pe2lmKCFzMCh0W2ldKSYmIisiIT09dFtpXSYmIi0iIT09dFtpXSlicmVhaztvPW4uRVhQT05FTlR9ZWxzZSBpZihvPT09bi5FWFBPTkVOVCYmIXMwKHRbaV0pKWJyZWFrO3JldHVybiBpfWZ1bmN0aW9uIHMwKHQpe3JldHVybiIwIjw9dCYmdDw9IjkifWZ1bmN0aW9uIGwwKHQpe3JldHVybiIvIj09PXR8fHMwKHQpfWZ1bmN0aW9uIGMwKHQsZSxuKXtjb25zdHtwbHVnaW46byx0YWc6aSxydW5JZDphLHNhbXBsZTpyfT1lW3RdLHM9V04obixvLGkscik7aWYocyl7aWYobnVsbCE9PWEmJnMucnVuVG9TZXJpZXMuaGFzT3duUHJvcGVydHkoYSkpe2NvbnN0IHQ9cy5ydW5Ub1Nlcmllc1thXS5sZW5ndGg7cmV0dXJuIHQ+MD90LTE6bnVsbH1jb25zdCB0PU9iamVjdC52YWx1ZXMocy5ydW5Ub1NlcmllcykubWFwKCh0PT50Lmxlbmd0aCkpO2lmKHQubGVuZ3RoKXJldHVybiBNYXRoLm1heCguLi50KS0xfXJldHVybiBudWxsfWZ1bmN0aW9uIGQwKHQsZSxuLG8pe2NvbnN0IGk9T2JqZWN0LmFzc2lnbih7fSxlKTtmb3IoY29uc3QgYSBpbiB0KXtpZighdC5oYXNPd25Qcm9wZXJ0eShhKSljb250aW51ZTtjb25zdCByPWMwKGEsdCxuKTtpZihudWxsPT09cil7ZS5oYXNPd25Qcm9wZXJ0eShhKSYmKGlbYV09bnVsbCk7Y29udGludWV9Y29uc3Qgcz1lLmhhc093blByb3BlcnR5KGEpP2VbYV0uaW5kZXg6bnVsbCxsPWMwKGEsdCxvKSxjPW51bGwhPT1zJiZzPT09bCxkPW51bGw9PT1zfHxjOyhudWxsIT09cyYmcz5yfHxkKSYmKGlbYV09e2luZGV4OnIsaXNDbG9zZXN0OiExfSl9cmV0dXJuIGl9ZnVuY3Rpb24gcDAodCl7Y29uc3QgZT1vMCh0LnJ1blRvTG9hZFN0YXRlLCh0PT50PT09R0UuTE9BRElORz9HRS5MT0FESU5HOkdFLk5PVF9MT0FERUQpKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5Ub0xvYWRTdGF0ZTplfSl9ZnVuY3Rpb24gbTAodCxlLG4sbyl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFt0LGUsbnx8IiIsb10pfW4wLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuMCl9LG4wLsm1bW9kPXVvKHt0eXBlOm4wfSksbjAuybVpbmo9RG4oe2ltcG9ydHM6W1tVJCxyeCxtVCxHJCxqJCxZJCxRJCwkJCxUWCxlMCxUUy5mb3JGZWF0dXJlKGhLLFNLKSxoRC5mb3JGZWF0dXJlKFtWJF0pLEVYLmZvclBsdWdpbihMJCxGJCldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobjAsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0gkLEYkXSxpbXBvcnRzOltVJCxyeCxtVCxHJCxqJCxZJCxRJCwkJCxUWCxlMCxUUy5mb3JGZWF0dXJlKGhLLFNLKSxoRC5mb3JGZWF0dXJlKFtWJF0pLEVYLmZvclBsdWdpbihMJCxGJCldLGV4cG9ydHM6W0YkXSxlbnRyeUNvbXBvbmVudHM6W0YkXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKG4wLHtkZWNsYXJhdGlvbnM6W0gkLEYkXSxpbXBvcnRzOltVJCxyeCxtVCxHJCxqJCxZJCxRJCwkJCxUWCxlMCxBUyxnRCxFWF0sZXhwb3J0czpbRiRdfSk7Y29uc3R7aW5pdGlhbFN0YXRlOnUwLHJlZHVjZXJzOmYwfT1wQSh7dGFnTWV0YWRhdGFMb2FkU3RhdGU6e3N0YXRlOkdFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LHRhZ01ldGFkYXRhOntzY2FsYXJzOnt0YWdEZXNjcmlwdGlvbnM6e30sdGFnVG9SdW5zOnt9fSxoaXN0b2dyYW1zOnt0YWdEZXNjcmlwdGlvbnM6e30sdGFnVG9SdW5zOnt9fSxpbWFnZXM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdSdW5TYW1wbGVkSW5mbzp7fX19LGNhcmRMaXN0OltdLGNhcmRUb1Bpbm5lZENvcHk6bmV3IE1hcCxjYXJkVG9QaW5uZWRDb3B5Q2FjaGU6bmV3IE1hcCxwaW5uZWRDYXJkVG9PcmlnaW5hbDpuZXcgTWFwLHVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzOltdLGNhcmRNZXRhZGF0YU1hcDp7fSxjYXJkU3RlcEluZGV4Ont9LHRhZ0ZpbHRlcjoiIix0YWdHcm91cEV4cGFuZGVkOm5ldyBNYXAsc2VsZWN0ZWRUaW1lOm51bGwsc2VsZWN0VGltZUVuYWJsZWQ6ITEsdXNlUmFuZ2VTZWxlY3RUaW1lOiExLGZpbHRlcmVkUGx1Z2luVHlwZXM6bmV3IFNldCxzdGVwTWluTWF4OnttaW46MS8wLG1heDotMS8wfX0se2lzU2V0dGluZ3NQYW5lT3BlbjohMCxwcm9tb3RlVGltZVNlcmllczohMCx0aW1lU2VyaWVzRGF0YTp7c2NhbGFyczp7fSxoaXN0b2dyYW1zOnt9LGltYWdlczp7fX0sc2V0dGluZ3M6b3osc2V0dGluZ092ZXJyaWRlczp7fSx2aXNpYmxlQ2FyZE1hcDpuZXcgTWFwfSwoKHQsZSxuKT0+T0QoZSxuKT90Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGFnTWV0YWRhdGFMb2FkU3RhdGU6e3N0YXRlOkdFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LHRhZ01ldGFkYXRhOntzY2FsYXJzOnt0YWdEZXNjcmlwdGlvbnM6e30sdGFnVG9SdW5zOnt9fSxoaXN0b2dyYW1zOnt0YWdEZXNjcmlwdGlvbnM6e30sdGFnVG9SdW5zOnt9fSxpbWFnZXM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdSdW5TYW1wbGVkSW5mbzp7fX19LGNhcmRMaXN0OltdLGNhcmRNZXRhZGF0YU1hcDp7fSx2aXNpYmxlQ2FyZE1hcDpuZXcgTWFwfSkpKSxnMD11MCxoMD1WUyh1MCxCUyh0UiwoKHQse3JvdXRlS2luZDplLHBhcnRpYWxTdGF0ZTpufSk9PntpZihlIT09X0QuRVhQRVJJTUVOVCYmZSE9PV9ELkNPTVBBUkVfRVhQRVJJTUVOVClyZXR1cm4gdDtjb25zdCBvPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgdC5waW5uZWRDYXJkVG9PcmlnaW5hbC5rZXlzKCkpe2NvbnN0e3BsdWdpbjpuLHRhZzppLHJ1bklkOmEsc2FtcGxlOnJ9PXQuY2FyZE1ldGFkYXRhTWFwW2VdO28uYWRkKG0wKG4saSxhLHIpKX1jb25zdCBpPW4sYT1bXTtmb3IoY29uc3QgZSBvZlsuLi50LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLC4uLmkubWV0cmljcy5waW5uZWRDYXJkc10pe2NvbnN0IHQ9bTAoZS5wbHVnaW4sZS50YWcsZS5ydW5JZCxlLnNhbXBsZSk7by5oYXModCl8fChvLmFkZCh0KSxhLnB1c2goZSkpfWNvbnN0IHI9S04oYSx0LmNhcmRMaXN0LHQuY2FyZE1ldGFkYXRhTWFwLHQuY2FyZFRvUGlubmVkQ29weSx0LnBpbm5lZENhcmRUb09yaWdpbmFsLHQuY2FyZFN0ZXBJbmRleCkscz1pLm1ldHJpY3Muc21vb3RoaW5nO2xldCBsPXQuc2V0dGluZ092ZXJyaWRlcztpZihOdW1iZXIuaXNGaW5pdGUocykmJm51bGwhPT1zKXtjb25zdCBlPU1hdGgubWF4KDAsTWF0aC5taW4oLjk5OSxOdW1iZXIocy50b1ByZWNpc2lvbigzKSkpKTtsPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtzY2FsYXJTbW9vdGhpbmc6ZX0pfWNvbnN0IGM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkscikse2NhcmRUb1Bpbm5lZENvcHlDYWNoZTpyLmNhcmRUb1Bpbm5lZENvcHksc2V0dGluZ092ZXJyaWRlczpsfSk7cmV0dXJuIG51bGwhPT1pLm1ldHJpY3MudGFnRmlsdGVyJiYoYy50YWdGaWx0ZXI9aS5tZXRyaWNzLnRhZ0ZpbHRlciksY30pKSxCUyhYUiwoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9Pnt2YXIgbjtjb25zdCBvPXt9O2lmKGUudG9vbHRpcFNvcnRTdHJpbmcpc3dpdGNoKGUudG9vbHRpcFNvcnRTdHJpbmcpe2Nhc2UgJFQuREVGQVVMVDpjYXNlICRULkFMUEhBQkVUSUNBTDpvLnRvb2x0aXBTb3J0PSRULkFMUEhBQkVUSUNBTDticmVhaztjYXNlICRULkFTQ0VORElORzpvLnRvb2x0aXBTb3J0PSRULkFTQ0VORElORzticmVhaztjYXNlICRULkRFU0NFTkRJTkc6by50b29sdGlwU29ydD0kVC5ERVNDRU5ESU5HO2JyZWFrO2Nhc2UgJFQuTkVBUkVTVDpvLnRvb2x0aXBTb3J0PSRULk5FQVJFU1R9Im51bWJlciI9PXR5cGVvZiBlLnRpbWVTZXJpZXNDYXJkTWluV2lkdGgmJihvLmNhcmRNaW5XaWR0aD1lLnRpbWVTZXJpZXNDYXJkTWluV2lkdGgpLCJib29sZWFuIj09dHlwZW9mIGUuaWdub3JlT3V0bGllcnMmJihvLmlnbm9yZU91dGxpZXJzPWUuaWdub3JlT3V0bGllcnMpLCJudW1iZXIiPT10eXBlb2YgZS5zY2FsYXJTbW9vdGhpbmcmJihvLnNjYWxhclNtb290aGluZz1lLnNjYWxhclNtb290aGluZyk7Y29uc3QgaT0iYm9vbGVhbiI9PXR5cGVvZiBlLnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ/IWUudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZDp0LnByb21vdGVUaW1lU2VyaWVzLGE9bnVsbCE9PShuPWUudGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZCkmJnZvaWQgMCE9PW4/bjp0LmlzU2V0dGluZ3NQYW5lT3BlbjtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwcm9tb3RlVGltZVNlcmllczppLGlzU2V0dGluZ3NQYW5lT3BlbjphLHNldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSxvKX0pfSkpLEJTKHRBLCRFLCh0PT57Y29uc3QgZT10LnRhZ01ldGFkYXRhTG9hZFN0YXRlLnN0YXRlPT09R0UuTE9BRElORz9HRS5MT0FESU5HOkdFLk5PVF9MT0FERUQsbj1vMCh0LnRpbWVTZXJpZXNEYXRhLCgodCxlKT0+bzAodCwodD0+b04oZSk/bzAodCwodD0+cDAodCkpKTpwMCh0KSkpKSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGFnTWV0YWRhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQudGFnTWV0YWRhdGFMb2FkU3RhdGUpLHtzdGF0ZTplfSksdGltZVNlcmllc0RhdGE6bn0pfSkpLEJTKGZBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnRhZ01ldGFkYXRhTG9hZFN0YXRlKSx7c3RhdGU6R0UuTE9BRElOR30pfSkpKSxCUyhoQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC50YWdNZXRhZGF0YUxvYWRTdGF0ZSkse3N0YXRlOkdFLkZBSUxFRH0pfSkpKSxCUyhnQSwoKHQse3RhZ01ldGFkYXRhOmV9KT0+e2NvbnN0IG49e3NjYWxhcnM6eTAoZSxRVC5TQ0FMQVJTKSxoaXN0b2dyYW1zOnkwKGUsUVQuSElTVE9HUkFNUyksaW1hZ2VzOmVbUVQuSU1BR0VTXX0sbz17fSxpPShmdW5jdGlvbiBhKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuIG9mIE9iamVjdC5rZXlzKHQpKXtjb25zdCBvPW47bGV0IGk7aWYob04obykpe2lmKCFhTihvKSl0aHJvdyBuZXcgRXJyb3IoIk11bHRpLXJ1biwgc2FtcGxlZCBwbHVnaW4gc3VwcG9ydCBub3QgeWV0IGltcGxlbWVudGVkIik7e2NvbnN0IG49dFtvXS50YWdSdW5TYW1wbGVkSW5mbztmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhuKSlmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhuW3RdKSl7Y29uc3R7bWF4U2FtcGxlc1BlclN0ZXA6YX09blt0XVtpXTtmb3IobGV0IG49MDtuPGE7bisrKWUucHVzaCh7cGx1Z2luOm8sdGFnOnQscnVuSWQ6aSxzYW1wbGU6bixudW1TYW1wbGU6YX0pfX19ZWxzZSBpZihhTihvKSl7aT10W29dLnRhZ1RvUnVucztmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhpKSlmb3IoY29uc3QgbiBvZiBpW3RdKWUucHVzaCh7cGx1Z2luOm8sdGFnOnQscnVuSWQ6bn0pfWVsc2V7aT10W29dLnRhZ1RvUnVucztmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhpKSllLnB1c2goe3BsdWdpbjpvLHRhZzp0LHJ1bklkOm51bGx9KX19cmV0dXJuIGV9KShuKSxyPVtdO2Zvcihjb25zdCB0IG9mIGkpe2NvbnN0IGU9WU4odCk7b1tlXT10LHIucHVzaChlKX1sZXQgcz10LnRhZ0dyb3VwRXhwYW5kZWQ7aWYoMD09PXQudGFnR3JvdXBFeHBhbmRlZC5zaXplKXtjb25zdCBlPWkwKHIubWFwKCh0PT57dmFyIGU7cmV0dXJuIG51bGwhPT0oZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sb1t0XSkse2NhcmRJZDp0fSkpJiZ2b2lkIDAhPT1lP2U6bnVsbH0pKS5maWx0ZXIoQm9vbGVhbikpO3M9bmV3IE1hcCh0LnRhZ0dyb3VwRXhwYW5kZWQpO2Zvcihjb25zdCB0IG9mIGUuc2xpY2UoMCwyKSlzLnNldCh0Lmdyb3VwTmFtZSwhMCl9Y29uc3R7bmV4dENhcmRUb1Bpbm5lZENvcHk6bCxuZXh0UGlubmVkQ2FyZFRvT3JpZ2luYWw6YyxwaW5uZWRDYXJkTWV0YWRhdGFNYXA6ZH09KGZ1bmN0aW9uIHAodCxlLG4pe2NvbnN0IG89bmV3IE1hcCxpPW5ldyBNYXAsYT17fTtyZXR1cm4gdC5mb3JFYWNoKCgodCxyKT0+ey0xIT09bi5pbmRleE9mKHIpJiYoby5zZXQocix0KSxpLnNldCh0LHIpLGFbdF09ZVtyXSl9KSkse25leHRDYXJkVG9QaW5uZWRDb3B5Om8sbmV4dFBpbm5lZENhcmRUb09yaWdpbmFsOmkscGlubmVkQ2FyZE1ldGFkYXRhTWFwOmF9fSkodC5jYXJkVG9QaW5uZWRDb3B5Q2FjaGUsbyxyKSxtPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSxkKSx1PShmdW5jdGlvbiBmKHQsZSl7Y29uc3Qgbj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoKFt0LG9dKT0+e2VbdF0mJihuW3RdPW8pfSkpLG59KSh0LmNhcmRTdGVwSW5kZXgsbSksZz1LTih0LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLHIsbSxsLGMsdSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGcpLHt0YWdHcm91cEV4cGFuZGVkOnMsdGFnTWV0YWRhdGFMb2FkU3RhdGU6e3N0YXRlOkdFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0sdGFnTWV0YWRhdGE6bixjYXJkTGlzdDpyfSl9KSksQlMoekEsKCh0LHt0YWdGaWx0ZXI6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0ZpbHRlcjplfSkpKSxCUyhiQSwoKHQse3NvcnQ6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3Rvb2x0aXBTb3J0OmV9KX0pKSksQlMoeUEsKHQ9Pnt2YXIgZTtjb25zdCBuPSEobnVsbCE9PShlPXQuc2V0dGluZ092ZXJyaWRlcy5pZ25vcmVPdXRsaWVycykmJnZvaWQgMCE9PWU/ZTp0LnNldHRpbmdzLmlnbm9yZU91dGxpZXJzKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpZ25vcmVPdXRsaWVyczpufSl9KX0pKSxCUyhfQSwoKHQse3hBeGlzVHlwZTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7eEF4aXNUeXBlOmV9KX0pKSksQlModkEsKCh0LHtzbW9vdGhpbmc6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclNtb290aGluZzplfSl9KSkpLEJTKHhBLCh0PT57dmFyIGU7Y29uc3Qgbj0hKG51bGwhPT0oZT10LnNldHRpbmdPdmVycmlkZXMuc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWCkmJnZvaWQgMCE9PWU/ZTp0LnNldHRpbmdzLnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1g6bn0pfSl9KSksQlMoT0EsKCh0LHticmlnaHRuZXNzSW5NaWxsaTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aW1hZ2VCcmlnaHRuZXNzSW5NaWxsaTplfSl9KSkpLEJTKFBBLCgodCx7Y29udHJhc3RJbk1pbGxpOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZUNvbnRyYXN0SW5NaWxsaTplfSl9KSkpLEJTKHdBLCh0PT57Y29uc3QgZT1LVCh0LnNldHRpbmdPdmVycmlkZXMsWyJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6ZX0pfSkpLEJTKGtBLCh0PT57Y29uc3QgZT1LVCh0LnNldHRpbmdPdmVycmlkZXMsWyJpbWFnZUNvbnRyYXN0SW5NaWxsaSJdKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOmV9KX0pKSxCUyhTQSwodD0+e3ZhciBlO2NvbnN0IG49IShudWxsIT09KGU9dC5zZXR0aW5nT3ZlcnJpZGVzLmltYWdlU2hvd0FjdHVhbFNpemUpJiZ2b2lkIDAhPT1lP2U6dC5zZXR0aW5ncy5pbWFnZVNob3dBY3R1YWxTaXplKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZVNob3dBY3R1YWxTaXplOm59KX0pfSkpLEJTKERBLCgodCx7aGlzdG9ncmFtTW9kZTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aGlzdG9ncmFtTW9kZTplfSl9KSkpLEJTKENBLCgodCx7Y2FyZE1pbldpZHRoOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtjYXJkTWluV2lkdGg6ZX0pfSkpKSxCUyhNQSwodD0+e2NvbnN0IGU9S1QodC5zZXR0aW5nT3ZlcnJpZGVzLFsiY2FyZE1pbldpZHRoIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6ZX0pfSkpLEJTKFJBLCgodCx7cmVxdWVzdHM6ZX0pPT57aWYoIWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKTtmb3IoY29uc3QgbyBvZiBlKXtjb25zdHtwbHVnaW46ZSx0YWc6aSxzYW1wbGU6YX09bztuW2VdPUdOKG4sZSxpLGEpO2NvbnN0IHI9V04obixlLGksYSkscz1yTihvKT9bby5ydW5JZF06Wk4odC50YWdNZXRhZGF0YSxlLGksYSk7ci5ydW5Ub0xvYWRTdGF0ZT1xTihHRS5MT0FESU5HLHMsci5ydW5Ub0xvYWRTdGF0ZSl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGltZVNlcmllc0RhdGE6bn0pfSkpLEJTKEVBLCgodCx7cmVxdWVzdDplfSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC50aW1lU2VyaWVzRGF0YSkse3BsdWdpbjpvLHRhZzppLHNhbXBsZTphfT1lO25bb109R04obixvLGksYSk7Y29uc3Qgcj1XTihuLG8saSxhKSxzPXJOKGUpP1tlLnJ1bklkXTpaTih0LnRhZ01ldGFkYXRhLG8saSxhKTtyZXR1cm4gci5ydW5Ub0xvYWRTdGF0ZT1xTihHRS5GQUlMRUQscyxyLnJ1blRvTG9hZFN0YXRlKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RpbWVTZXJpZXNEYXRhOm59KX0pKSxCUyhBQSwoKHQse3Jlc3BvbnNlOmV9KT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0LnN0ZXBNaW5NYXgpLG89T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKSx7cGx1Z2luOmksdGFnOmEscnVuSWQ6cixzYW1wbGU6c309ZTtvW2ldPUdOKG8saSxhLHMpO2NvbnN0IGw9V04obyxpLGEscyk7aWYobE4oZSkpe2NvbnN0IGU9cj9bcl06Wk4odC50YWdNZXRhZGF0YSxpLGEscyk7bC5ydW5Ub0xvYWRTdGF0ZT1xTihHRS5GQUlMRUQsZSxsLnJ1blRvTG9hZFN0YXRlKX1lbHNle2NvbnN0IHQ9ZS5ydW5Ub1NlcmllcztsLnJ1blRvU2VyaWVzPU9iamVjdC5hc3NpZ24oe30sbC5ydW5Ub1NlcmllcyksbC5ydW5Ub0xvYWRTdGF0ZT1PYmplY3QuYXNzaWduKHt9LGwucnVuVG9Mb2FkU3RhdGUpO2Zvcihjb25zdCBlIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShlKSl7bC5ydW5Ub1Nlcmllc1tlXT10W2VdLGwucnVuVG9Mb2FkU3RhdGVbZV09R0UuTE9BREVEO2Zvcihjb25zdCBvIG9mIHRbZV0pbi5taW49TWF0aC5taW4obi5taW4sby5zdGVwKSxuLm1heD1NYXRoLm1heChuLm1heCxvLnN0ZXApfX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0aW1lU2VyaWVzRGF0YTpvLGNhcmRTdGVwSW5kZXg6ZDAodC5jYXJkTWV0YWRhdGFNYXAsdC5jYXJkU3RlcEluZGV4LG8sdC50aW1lU2VyaWVzRGF0YSksc3RlcE1pbk1heDpufSl9KSksQlMoTkEsKCh0LHtjYXJkSWQ6ZSxzdGVwSW5kZXg6bn0pPT57Y29uc3Qgbz1jMChlLHQuY2FyZE1ldGFkYXRhTWFwLHQudGltZVNlcmllc0RhdGEpO2xldCBpPW47cmV0dXJuIG51bGw9PT1vP2k9bnVsbDpuPm8mJihpPW8pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y2FyZFN0ZXBJbmRleDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5jYXJkU3RlcEluZGV4KSx7W2VdOntpbmRleDppLGlzQ2xvc2VzdDohMX19KX0pfSkpLEJTKElBLCgodCx7dGFnR3JvdXA6ZX0pPT57Y29uc3Qgbj1uZXcgTWFwKHQudGFnR3JvdXBFeHBhbmRlZCk7cmV0dXJuIG4uc2V0KGUsIW4uZ2V0KGUpKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0dyb3VwRXhwYW5kZWQ6bn0pfSkpLEJTKFRBLCgodCx7ZW50ZXJlZENhcmRzOmUsZXhpdGVkQ2FyZHM6bn0pPT57aWYoIWUubGVuZ3RoJiYhbi5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgbz1uZXcgTWFwKHQudmlzaWJsZUNhcmRNYXApO3JldHVybiBlLmZvckVhY2goKCh7ZWxlbWVudElkOnQsY2FyZElkOmV9KT0+e3ZhciBuO2NvbnN0IGk9bnVsbCE9PShuPW8uZ2V0KHQpKSYmdm9pZCAwIT09bj9uOm51bGw7aWYobnVsbCE9PWkmJmkhPT1lKXRocm93IG5ldyBFcnJvcigiQSBET00gZWxlbWVudCBjYW5ub3QgYmUgcmV1c2VkIGZvciBtb3JlIHRoYW4gMSB1bmlxdWUgY2FyZCBtZXRhZGF0YSIpO28uc2V0KHQsZSl9KSksbi5mb3JFYWNoKCgoe2VsZW1lbnRJZDp0fSk9PntvLmRlbGV0ZSh0KX0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Zpc2libGVDYXJkTWFwOm99KX0pKSxCUyhIQSwoKHQse2NhcmRJZDplfSk9Pntjb25zdCBuPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwuaGFzKGUpLG89IW4mJiF0LmNhcmRUb1Bpbm5lZENvcHkuaGFzKGUpO2lmKG8mJiEkTih0KSlyZXR1cm4gdDtsZXQgaT1uZXcgTWFwKHQuY2FyZFRvUGlubmVkQ29weSksYT1uZXcgTWFwKHQuY2FyZFRvUGlubmVkQ29weUNhY2hlKSxyPW5ldyBNYXAodC5waW5uZWRDYXJkVG9PcmlnaW5hbCkscz1PYmplY3QuYXNzaWduKHt9LHQuY2FyZE1ldGFkYXRhTWFwKSxsPU9iamVjdC5hc3NpZ24oe30sdC5jYXJkU3RlcEluZGV4KTtpZihuKXtjb25zdCBuPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwuZ2V0KGUpO2kuZGVsZXRlKG4pLGEuZGVsZXRlKG4pLHIuZGVsZXRlKGUpLGRlbGV0ZSBzW2VdLGRlbGV0ZSBsW2VdfWVsc2UgaWYobyl7Y29uc3QgdD1KTihlLGkscixsLHMpO2k9dC5jYXJkVG9QaW5uZWRDb3B5LGE9dC5jYXJkVG9QaW5uZWRDb3B5LHI9dC5waW5uZWRDYXJkVG9PcmlnaW5hbCxzPXQuY2FyZE1ldGFkYXRhTWFwLGw9dC5jYXJkU3RlcEluZGV4fWVsc2V7Y29uc3Qgbj10LmNhcmRUb1Bpbm5lZENvcHkuZ2V0KGUpO2kuZGVsZXRlKGUpLGEuZGVsZXRlKGUpLHIuZGVsZXRlKG4pLGRlbGV0ZSBzW25dLGRlbGV0ZSBsW25dfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NhcmRNZXRhZGF0YU1hcDpzLGNhcmRTdGVwSW5kZXg6bCxjYXJkVG9QaW5uZWRDb3B5OmksY2FyZFRvUGlubmVkQ29weUNhY2hlOmEscGlubmVkQ2FyZFRvT3JpZ2luYWw6cn0pfSkpLEJTKFVBLCh0PT57dmFyIGU7Y29uc3Qgbj0hdC5zZWxlY3RUaW1lRW5hYmxlZDtsZXQgbz1PYmplY3QuYXNzaWduKHt9LHQuY2FyZFN0ZXBJbmRleCksaT10LnNlbGVjdGVkVGltZTtpZihuKXtjb25zdHttaW46bn09dC5zdGVwTWluTWF4LGE9bj09PTEvMD8wOm47aT1udWxsIT09KGU9dC5zZWxlY3RlZFRpbWUpJiZ2b2lkIDAhPT1lP2U6e3N0YXJ0OntzdGVwOmF9LGVuZDpudWxsfSxvPXR6KHQuY2FyZFN0ZXBJbmRleCx0LmNhcmRNZXRhZGF0YU1hcCx0LnRpbWVTZXJpZXNEYXRhLGkpfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NhcmRTdGVwSW5kZXg6byxzZWxlY3RUaW1lRW5hYmxlZDpuLHNlbGVjdGVkVGltZTppfSl9KSksQlMoQkEsKCh0LGUpPT57Y29uc3Qgbj1lLnN0YXJ0U3RlcCxvPWUuZW5kU3RlcCxpPXZvaWQgMCE9PW8sYT17c3RhcnQ6e3N0ZXA6bn0sZW5kOnZvaWQgMD09PW8/bnVsbDp7c3RlcDpuPm8/bjpvfX0scj10eih0LmNhcmRTdGVwSW5kZXgsdC5jYXJkTWV0YWRhdGFNYXAsdC50aW1lU2VyaWVzRGF0YSxhKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RUaW1lRW5hYmxlZDohMCxzZWxlY3RlZFRpbWU6YSxjYXJkU3RlcEluZGV4OnIsdXNlUmFuZ2VTZWxlY3RUaW1lOml9KX0pKSxCUyhqQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt1c2VSYW5nZVNlbGVjdFRpbWU6IXQudXNlUmFuZ2VTZWxlY3RUaW1lfSkpKSxCUyhWQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZFRpbWU6bnVsbH0pKSksQlMoRkEsKCh0LHtwbHVnaW46ZX0pPT57bGV0IG49bmV3IFNldCh0LmZpbHRlcmVkUGx1Z2luVHlwZXMpO3JldHVybiBuLmhhcyhlKT9uLmRlbGV0ZShlKTpuLmFkZChlKSxPYmplY3QudmFsdWVzKFFUKS5ldmVyeSgodD0+bi5oYXModCkpKSYmKG49bmV3IFNldCksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJlZFBsdWdpblR5cGVzOm59KX0pKSxCUyhMQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJlZFBsdWdpblR5cGVzOm5ldyBTZXR9KSkpLEJTKFdBLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Byb21vdGVUaW1lU2VyaWVzOiExfSkpKSxCUyh1QSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtpc1NldHRpbmdzUGFuZU9wZW46IXQuaXNTZXR0aW5nc1BhbmVPcGVufSkpKSxCUyhtQSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtpc1NldHRpbmdzUGFuZU9wZW46ITF9KSkpKTtmdW5jdGlvbiBiMCh0LGUpe3JldHVybiBZQShoMCxmMCkodCxlKX1mdW5jdGlvbiB5MCh0LGUpe3JldHVybnt0YWdEZXNjcmlwdGlvbnM6dFtlXS50YWdEZXNjcmlwdGlvbnMsdGFnVG9SdW5zOl8wKHRbZV0ucnVuVGFnSW5mbyl9fWZ1bmN0aW9uIF8wKHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0IG4gaW4gdClmb3IoY29uc3QgbyBvZiB0W25dKWVbb109Wy4uLmVbb118fFtdLG5dO3JldHVybiBlfWNvbnN0IEMwPWJTKHN6LGR6LCgodCxlLG4pPT5lP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bG9hZFN0YXRlOnQsaWQ6bn0pOm51bGwpKSxNMD1faygiW01ldHJpY3MgRWZmZWN0c10gSW5pdCIpO2NsYXNzIHYwe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuZGF0YVNvdXJjZT1uLHRoaXMuZGFzaGJvYXJkU2hvd25XaXRob3V0RGF0YSQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKE0wLEtFLG5BLGlSKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChvVCksdGhpcy5zdG9yZS5zZWxlY3QoYXopKSxmZSgoKFssdCxlXSk9PnQ9PT1lTiYmZS5zdGF0ZT09PUdFLk5PVF9MT0FERUQpKSksdGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJD10aGlzLmFjdGlvbnMkLnBpcGUoJFModEEsJEUpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KG9UKSksZmUoKChbLHRdKT0+dD09PWVOKSkpLHRoaXMubG9hZFRhZ01ldGFkYXRhJD1wZSh0aGlzLmRhc2hib2FyZFNob3duV2l0aG91dERhdGEkLHRoaXMucmVsb2FkUmVxdWVzdGVkV2hpbGVTaG93biQpLnBpcGUocWUodGhpcy5zdG9yZS5zZWxlY3QoYXopLHRoaXMuc3RvcmUuc2VsZWN0KGtSKSksZmUoKChbLHQsZV0pPT50LnN0YXRlIT09R0UuTE9BRElORyYmbnVsbCE9PWUpKSxXZSgoKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGZBKCkpfSkpLFZlKCgoWywsdF0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hUYWdNZXRhZGF0YSh0KS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChnQSh7dGFnTWV0YWRhdGE6dH0pKX0pKSxoZSgoKCk9Pih0aGlzLnN0b3JlLmRpc3BhdGNoKGhBKCkpLHp0KG51bGwpKSkpKSkpKSx0aGlzLnZpc2libGVDYXJkc1dpdGhvdXREYXRhQ2hhbmdlZCQ9dGhpcy5hY3Rpb25zJC5waXBlKCRTKFRBKSxxZSh0aGlzLmdldFZpc2libGVDYXJkRmV0Y2hJbmZvcygpKSxWdCgoKFssdF0pPT50LmZpbHRlcigodD0+dC5sb2FkU3RhdGU9PT1HRS5OT1RfTE9BREVEKSkpKSksdGhpcy52aXNpYmxlQ2FyZHNSZWxvYWRlZCQ9dGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJC5waXBlKHFlKHRoaXMuZ2V0VmlzaWJsZUNhcmRGZXRjaEluZm9zKCkpLFZ0KCgoWyx0XSk9PnQuZmlsdGVyKCh0PT50LmxvYWRTdGF0ZSE9PUdFLkxPQURJTkcpKSkpKSx0aGlzLmxvYWRUaW1lU2VyaWVzJD1wZSh0aGlzLnZpc2libGVDYXJkc1dpdGhvdXREYXRhQ2hhbmdlZCQsdGhpcy52aXNpYmxlQ2FyZHNSZWxvYWRlZCQpLnBpcGUoZmUoKHQ9PnQubGVuZ3RoPjApKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChrUikucGlwZShmZSgodD0+bnVsbCE9PXQpKSkpLCR0KCgoW3QsZV0pPT50aGlzLmZldGNoVGltZVNlcmllc0ZvckNhcmRzKHQsZSkpKSksdGhpcy5kYXRhRWZmZWN0cyQ9V1MoKCgpPT5wZSh0aGlzLmxvYWRUYWdNZXRhZGF0YSQsdGhpcy5sb2FkVGltZVNlcmllcyQpKSx7ZGlzcGF0Y2g6ITF9KX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiBNMCgpfWdldFZpc2libGVDYXJkRmV0Y2hJbmZvcygpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChteikucGlwZShWZSgodD0+e2lmKCF0LnNpemUpcmV0dXJuIHp0KFtdKTtyZXR1cm4gaWUoWy4uLnRdLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QoQzAsdCkucGlwZSh2ZSgxKSkpKSl9KSksVnQoKHQ9PnQuZmlsdGVyKEJvb2xlYW4pKSkpfWZldGNoVGltZVNlcmllcyh0KXtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoVGltZVNlcmllcyhbdF0pLnBpcGUoV2UoKHQ9Pntjb25zdCBlPXQuZmlsdGVyKGxOKTtlLmxlbmd0aCYmY29uc29sZS5lcnJvcigiVGltZSBzZXJpZXMgcmVzcG9uc2UgY29udGFpbmVkIGVycm9yczoiLGUpLHRoaXMuc3RvcmUuZGlzcGF0Y2goQUEoe3Jlc3BvbnNlOnRbMF19KSl9KSksaGUoKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaChFQSh7cmVxdWVzdDp0fSkpLHp0KG51bGwpKSkpKX1mZXRjaFRpbWVTZXJpZXNGb3JDYXJkcyh0LGUpe3JldHVybiB6dCh0Lm1hcCgodD0+e2NvbnN0e3BsdWdpbjpuLHRhZzpvLHJ1bklkOmksc2FtcGxlOmF9PXQscj1hTihuKT97cGx1Z2luOm4sdGFnOm8scnVuSWQ6aX06e3BsdWdpbjpuLHRhZzpvLGV4cGVyaW1lbnRJZHM6ZX07cmV0dXJuIHZvaWQgMCE9PWEmJihyLnNhbXBsZT1hKSxyfSkpKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChSQSh7cmVxdWVzdHM6dH0pKX0pKSwkdCgodD0+cGUoLi4udC5tYXAoKHQ9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzKHQpKSkpKSkpfX12MC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8djApKFRyKFFTKSxUcihpUyksVHIoc04pKX0sdjAuybVwcm92PVNuKHt0b2tlbjp2MCxmYWN0b3J5OnYwLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2MCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTpzTn1dfSksbnVsbCk7Y29uc3QgeDA9bmV3IGVyKCJNZXRyaWNzIFN0b3JlIENvbmZpZyIpLE8wPW5ldyBlcigiTWV0cmljcyBJbml0aWFsIFNldHRpbmdzIENvbmZpZyIpO2Z1bmN0aW9uIFAwKHQpe3JldHVybiB0P3tpbml0aWFsU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGcwKSx7c2V0dGluZ3M6dH0pfTp7aW5pdGlhbFN0YXRlOmcwfX12YXIgdzA7IShmdW5jdGlvbih0KXt0W3QuTEVGVD0xXT0iTEVGVCIsdFt0LlJJR0hUPTJdPSJSSUdIVCIsdFt0Lk1JRERMRT00XT0iTUlERExFIix0W3QuRk9VUlRIPThdPSJGT1VSVEgiLHRbdC5GSUZUSD0zMl09IkZJRlRIIn0pKHcwfHwodzA9e30pKTtsZXQgazA9MDtmdW5jdGlvbiBTMCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImJ1dHRvbiIsMyksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgpLmV4cGFuZFNpZGViYXIoKX0pKSxNdSgxLCJtYXQtaWNvbiIsNCksQ3UoKX19ZnVuY3Rpb24gRDAodCxlKXtpZigxJnQmJihfdSgwLCJuYXYiLDUpLF95KDEsImFzeW5jIiksSHUoMiwxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtsZigid2lkdGgiLEN5KDEsNCx0LndpZHRoJCksIiUiKSgibWluLXdpZHRoIix0Lk1JTklNVU1fU0lERUJBUl9XSURUSF9JTl9QWCwicHgiKX19ZnVuY3Rpb24gUjAodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJkaXYiLDYpLER1KCJtb3VzZWRvd24iLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkucmVzaXplR3JhYmJlZCgpfSkpLEN1KCl9fWNvbnN0IEUwPVtbWyIiLCJtYWluIiwiIl1dLFtbIiIsInNpZGViYXIiLCIiXV1dO2NsYXNzIEEwe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMud2lkdGgkPXRoaXMuc3RvcmUuc2VsZWN0KHJUKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEIsdGhpcy5yZXNpemluZz0hMSx0aGlzLk1JTklNVU1fU0lERUJBUl9XSURUSF9JTl9QWD03NSxsZShlLm5hdGl2ZUVsZW1lbnQsIm1vdXNlbW92ZSIpLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxmZSgoKCk9PnRoaXMucmVzaXppbmcpKSkuc3Vic2NyaWJlKCh0PT57aWYoKHQuYnV0dG9ucyZ3MC5MRUZUKSE9PXcwLkxFRlQpcmV0dXJuIHZvaWQodGhpcy5yZXNpemluZz0hMSk7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0e3dpZHRoOm59PWUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLnN0b3JlLmRpc3BhdGNoKGRBKHt3aWR0aEluUGVyY2VudDp0LmNsaWVudFg8PXRoaXMuTUlOSU1VTV9TSURFQkFSX1dJRFRIX0lOX1BYPzA6dC5jbGllbnRYL24qMTAwfSkpfSkpLGxlKGUubmF0aXZlRWxlbWVudCwibW91c2V1cCIse3Bhc3NpdmU6ITB9KS5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnJlc2l6aW5nPSExfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1yZXNpemVHcmFiYmVkKCl7dGhpcy5yZXNpemluZz0hMH1leHBhbmRTaWRlYmFyKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChkQSh7d2lkdGhJblBlcmNlbnQ6MjB9KSl9fXZhciBUMDtBMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QTApKGZ1KGlTKSxmdShLaCkpfSxBMC7JtWNtcD1zbyh7dHlwZTpBMCxzZWxlY3RvcnM6W1sidGItZGFzaGJvYXJkLWxheW91dCJdXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyJbbWFpbl0iLCJbc2lkZWJhcl0iXSxkZWNsczo3LHZhcnM6OSxjb25zdHM6W1siY2xhc3MiLCJleHBhbmQiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNpZGViYXIiLDMsIndpZHRoIiwibWluV2lkdGgiLDQsIm5nSWYiXSxbImNsYXNzIiwicmVzaXplciIsMywibW91c2Vkb3duIiw0LCJuZ0lmIl0sWzEsImV4cGFuZCIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJleHBhbmRfbW9yZV8yNHB4Il0sWzEsInNpZGViYXIiXSxbMSwicmVzaXplciIsMywibW91c2Vkb3duIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihJdShFMCksSG0oMCxTMCwyLDAsImJ1dHRvbiIsMCksX3koMSwiYXN5bmMiKSxIbSgyLEQwLDMsNiwibmF2IiwxKSxfeSgzLCJhc3luYyIpLEhtKDQsUjAsMSwwLCJkaXYiLDIpLF95KDUsImFzeW5jIiksSHUoNikpLDImZSYmKGh1KCJuZ0lmIiwwPT09Q3koMSwzLG4ud2lkdGgkKSksRGMoMiksaHUoIm5nSWYiLEN5KDMsNSxuLndpZHRoJCk+MCksRGMoMiksaHUoIm5nSWYiLEN5KDUsNyxuLndpZHRoJCk+MCkpfSxkaXJlY3RpdmVzOltQdixFcV0scGlwZXM6W1Z2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDo4MHZ3fS5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmV4cGFuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNlYmViZWI7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXg6MCAwO2p1c3RpZnktc2VsZjpzdHJldGNofWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzU1NX0uZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMHB4fS5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowIDJweDtjdXJzb3I6ZXctcmVzaXplO2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LXNlbGY6c3RyZXRjaH0ucmVzaXplcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JvcmRlci1jb2xvcjojY2NjO291dGxpbmU6M3B4IHNvbGlkICNjY2M7ei1pbmRleDoxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye291dGxpbmUtY29sb3I6Izc3Nztib3JkZXItY29sb3I6Izc3N30uZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MCAxcHggMCAwO2NvbG9yOmluaGVyaXQ7Y29udGFpbjpjb250ZW50O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LXNlbGY6c3RyZXRjaDtwYWRkaW5nOjB9LmV4cGFuZFtfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBMCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1kYXNoYm9hcmQtbGF5b3V0Iix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9Iih3aWR0aCQgfCBhc3luYykgPT09IDAiXG4gICAgICBjbGFzcz0iZXhwYW5kIlxuICAgICAgKGNsaWNrKT0iZXhwYW5kU2lkZWJhcigpIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPSJleHBhbmRfbW9yZV8yNHB4Ij48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuYXZcbiAgICAgICpuZ0lmPSIod2lkdGgkIHwgYXN5bmMpID4gMCJcbiAgICAgIGNsYXNzPSJzaWRlYmFyIlxuICAgICAgW3N0eWxlLndpZHRoLiVdPSJ3aWR0aCQgfCBhc3luYyJcbiAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09Ik1JTklNVU1fU0lERUJBUl9XSURUSF9JTl9QWCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9IltzaWRlYmFyXSI+PC9uZy1jb250ZW50PlxuICAgIDwvbmF2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPSIod2lkdGgkIHwgYXN5bmMpID4gMCJcbiAgICAgIGNsYXNzPSJyZXNpemVyIlxuICAgICAgKG1vdXNlZG93bik9InJlc2l6ZUdyYWJiZWQoKSJcbiAgICA+PC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbbWFpbl0iPjwvbmctY29udGVudD5cbiAgJyxzdHlsZVVybHM6WyJsYXlvdXRfY29udGFpbmVyLmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU30se3R5cGU6S2h9XX0pLG51bGwpLChmdW5jdGlvbih0KXt0LkNIRUNLQk9YPSJjaGVja2JveCIsdC5SVU5fTkFNRT0icnVuX25hbWUiLHQuRVhQRVJJTUVOVF9OQU1FPSJleHBlcmltZW50X25hbWUiLHQuUlVOX0NPTE9SPSJydW5fY29sb3IifSkoVDB8fChUMD17fSkpO2NvbnN0IE4wPV9TKExUKSx6MD1iUyhOMCwoKHQsZSk9Pntjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpdC5zcGVjc1tvXSYmbi5wdXNoKHQuc3BlY3Nbb10uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKTtyZXR1cm4gelQobil9KSksSTA9YlMoejAsTjAsKCh0LGUsbik9Pnt2YXIgbztjb25zdCBpPU5UKG4pLGE9ZS5maWx0ZXJzW2ldO3JldHVybiBuZXcgTWFwKFsuLi50LC4uLm51bGwhPT0obz1udWxsPT1hP3ZvaWQgMDphLmhwYXJhbXMpJiZ2b2lkIDAhPT1vP286W11dKX0pKSxIMD1iUyhOMCwoKHQsZSk9Pntjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpdC5zcGVjc1tvXSYmbi5wdXNoKHQuc3BlY3Nbb10ubWV0cmljLmRlZmF1bHRGaWx0ZXJzKTtyZXR1cm4gSVQobil9KSksRjA9YlMoSDAsTjAsKCh0LGUsbik9Pnt2YXIgbztjb25zdCBpPU5UKG4pLGE9ZS5maWx0ZXJzW2ldO3JldHVybiBuZXcgTWFwKFsuLi50LC4uLm51bGwhPT0obz1udWxsPT1hP3ZvaWQgMDphLm1ldHJpY3MpJiZ2b2lkIDAhPT1vP286W11dKX0pKSxMMD1iUyhOMCwoKHQsZSk9PihmdW5jdGlvbiBuKC4uLnQpe2NvbnN0IGU9bmV3IE1hcCxuPW5ldyBNYXAsbz1uZXcgTWFwLGk9bmV3IE1hcCxhPVtdO2Zvcihjb25zdCByIG9mIHQpe2Zvcihjb25zdCB0IG9mIHIuaHBhcmFtcylpZihuLmhhcyh0Lm5hbWUpfHxuLnNldCh0Lm5hbWUsbmV3IFNldCksbi5nZXQodC5uYW1lKS5hZGQodC5kaXNwbGF5TmFtZSksZS5oYXModC5uYW1lKSl7Y29uc3Qgbj1lLmdldCh0Lm5hbWUpLG89dDtpZihuLnR5cGUhPT1vLnR5cGUmJmEucHVzaChgSHBhcmFtLCAke28ubmFtZX0sIHR5cGVzIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLnR5cGV9IHZzLiAke28udHlwZX1gKSxuLmRvbWFpbi50eXBlPT09RFQuSU5URVJWQUwmJm8uZG9tYWluLnR5cGU9PT1EVC5JTlRFUlZBTCluLmRvbWFpbi5taW5WYWx1ZT09PW8uZG9tYWluLm1pblZhbHVlJiZuLmRvbWFpbi5tYXhWYWx1ZT09PW8uZG9tYWluLm1heFZhbHVlfHxhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLmRvbWFpbn0gdnMuICR7by5kb21haW59YCk7ZWxzZSBpZihuLmRvbWFpbi50eXBlPT09RFQuRElTQ1JFVEUmJm8uZG9tYWluLnR5cGU9PT1EVC5ESVNDUkVURSl7Y29uc3QgdD1uZXcgU2V0KFsuLi5uLmRvbWFpbi52YWx1ZXMsLi4uby5kb21haW4udmFsdWVzXSk7bi5kb21haW4udmFsdWVzLmxlbmd0aD09PW8uZG9tYWluLnZhbHVlcy5sZW5ndGgmJm4uZG9tYWluLnZhbHVlcy5sZW5ndGg9PT10LnNpemV8fGEucHVzaChgSHBhcmFtLCAke28ubmFtZX0sIGRvbWFpbnMgaGF2ZSB0byBtYXRjaC4gR290OiAke24uZG9tYWlufSB2cy4gJHtvLmRvbWFpbn1gKX1lbHNlIGEucHVzaChgSHBhcmFtLCAke28ubmFtZX0sIGRvbWFpbnMgaGF2ZSB0byBtYXRjaC4gR290OiAke24uZG9tYWlufSB2cy4gJHtvLmRvbWFpbn1gKX1lbHNlIGUuc2V0KHQubmFtZSxPYmplY3QuYXNzaWduKHt9LHQpKTtmb3IoY29uc3QgdCBvZiByLm1ldHJpY3MpaWYoaS5oYXModC50YWcpfHxpLnNldCh0LnRhZyxuZXcgU2V0KSxpLmdldCh0LnRhZykuYWRkKHQuZGlzcGxheU5hbWUpLG8uaGFzKHQudGFnKSl7Y29uc3QgZT1vLmdldCh0LnRhZyksbj10O2UuZGF0YXNldFR5cGUhPT1uLmRhdGFzZXRUeXBlJiZhLnB1c2goYE1ldHJpYywgJHtuLnRhZ30sIGRhdGFzZXRUeXBlcyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7ZS5kYXRhc2V0VHlwZX0gdnMuICR7bi5kYXRhc2V0VHlwZX1gKX1lbHNlIG8uc2V0KHQudGFnLE9iamVjdC5hc3NpZ24oe30sdCkpfWlmKGEubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVmFsaWRhdGlvbiBlcnJvcjpcbiR7YS5qb2luKCJcbiIpfWApO3JldHVybntocGFyYW1zOlsuLi5lXS5tYXAoKChbdCxlXSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZGlzcGxheU5hbWU6Wy4uLm4uZ2V0KHQpXS5qb2luKCIgb3IgIil9KSkpLG1ldHJpY3M6Wy4uLm9dLm1hcCgoKFt0LGVdKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtkaXNwbGF5TmFtZTpbLi4uaS5nZXQodCldLmpvaW4oIiBvciAiKX0pKSl9fSkoLi4uZS5leHBlcmltZW50SWRzLm1hcCgoZT0+e2NvbnN0IG49dC5zcGVjc1tlXTtyZXR1cm4gbj97aHBhcmFtczpuLmhwYXJhbS5zcGVjcyxtZXRyaWNzOm4ubWV0cmljLnNwZWNzfTpudWxsfSkpLmZpbHRlcihCb29sZWFuKSkpKSxCMD17dG9vbHRpcFN0YXRlOnhPKCJzdGF0ZSIsW2tPKCJpbml0aWFsLCB2b2lkLCBoaWRkZW4iLHdPKHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJzY2FsZSgwKSJ9KSksa08oInZpc2libGUiLHdPKHt0cmFuc2Zvcm06InNjYWxlKDEpIn0pKSxETygiKiA9PiB2aXNpYmxlIixPTygiMjAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLFNPKFt3Tyh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMCkiLG9mZnNldDowfSksd08oe29wYWNpdHk6LjUsdHJhbnNmb3JtOiJzY2FsZSgwLjk5KSIsb2Zmc2V0Oi41fSksd08oe29wYWNpdHk6MSx0cmFuc2Zvcm06InNjYWxlKDEpIixvZmZzZXQ6MX0pXSkpKSxETygiKiA9PiBoaWRkZW4iLE9PKCIxMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIsd08oe29wYWNpdHk6MH0pKSldKX0sVjA9a0goe3Bhc3NpdmU6ITB9KTtmdW5jdGlvbiBVMCh0KXtyZXR1cm4gRXJyb3IoYFRvb2x0aXAgcG9zaXRpb24gIiR7dH0iIGlzIGludmFsaWQuYCl9Y29uc3QgajA9bmV3IGVyKCJtYXQtdG9vbHRpcC1zY3JvbGwtc3RyYXRlZ3kiKTtjb25zdCBXMD17cHJvdmlkZTpqMCxkZXBzOltyVl0sdXNlRmFjdG9yeTpmdW5jdGlvbiBHMCh0KXtyZXR1cm4oKT0+dC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oe3Njcm9sbFRocm90dGxlOjIwfSl9fSxZMD1uZXcgZXIoIm1hdC10b29sdGlwLWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gcTAoKXtyZXR1cm57c2hvd0RlbGF5OjAsaGlkZURlbGF5OjAsdG91Y2hlbmRIaWRlRGVsYXk6MTUwMH19fSk7Y2xhc3MgWjB7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkLHApe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj1uLHRoaXMuX3ZpZXdDb250YWluZXJSZWY9byx0aGlzLl9uZ1pvbmU9aSx0aGlzLl9wbGF0Zm9ybT1hLHRoaXMuX2FyaWFEZXNjcmliZXI9cix0aGlzLl9mb2N1c01vbml0b3I9cyx0aGlzLl9kaXI9Yyx0aGlzLl9kZWZhdWx0T3B0aW9ucz1kLHRoaXMuX3Bvc2l0aW9uPSJiZWxvdyIsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fdmlld0luaXRpYWxpemVkPSExLHRoaXMuX3BvaW50ZXJFeGl0RXZlbnRzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5fdmlld3BvcnRNYXJnaW49OCx0aGlzLl9jc3NDbGFzc1ByZWZpeD0ibWF0Iix0aGlzLnNob3dEZWxheT10aGlzLl9kZWZhdWx0T3B0aW9ucy5zaG93RGVsYXksdGhpcy5oaWRlRGVsYXk9dGhpcy5fZGVmYXVsdE9wdGlvbnMuaGlkZURlbGF5LHRoaXMudG91Y2hHZXN0dXJlcz0iYXV0byIsdGhpcy5fbWVzc2FnZT0iIix0aGlzLl9wYXNzaXZlTGlzdGVuZXJzPVtdLHRoaXMuX2Rlc3Ryb3llZD1uZXcgQix0aGlzLl9oYW5kbGVLZXlkb3duPXQ9Pnt0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkmJnQua2V5Q29kZT09PXJIJiYhZEgodCkmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5oaWRlKDApKSkpfSx0aGlzLl9zY3JvbGxTdHJhdGVneT1sLHRoaXMuX2RvY3VtZW50PXAsZCYmKGQucG9zaXRpb24mJih0aGlzLnBvc2l0aW9uPWQucG9zaXRpb24pLGQudG91Y2hHZXN0dXJlcyYmKHRoaXMudG91Y2hHZXN0dXJlcz1kLnRvdWNoR2VzdHVyZXMpKSxjLmNoYW5nZS5waXBlKFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl91cGRhdGVQb3NpdGlvbih0aGlzLl9vdmVybGF5UmVmKX0pKSxpLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2UubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9oYW5kbGVLZXlkb3duKX0pKX1nZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259c2V0IHBvc2l0aW9uKHQpe3ZhciBlO3QhPT10aGlzLl9wb3NpdGlvbiYmKHRoaXMuX3Bvc2l0aW9uPXQsdGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuX3VwZGF0ZVBvc2l0aW9uKHRoaXMuX292ZXJsYXlSZWYpLG51bGw9PT0oZT10aGlzLl90b29sdGlwSW5zdGFuY2UpfHx2b2lkIDA9PT1lfHxlLnNob3coMCksdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpKSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1wSCh0KSx0aGlzLl9kaXNhYmxlZD90aGlzLmhpZGUoMCk6dGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpfWdldCBtZXNzYWdlKCl7cmV0dXJuIHRoaXMuX21lc3NhZ2V9c2V0IG1lc3NhZ2UodCl7dGhpcy5fYXJpYURlc2NyaWJlci5yZW1vdmVEZXNjcmlwdGlvbih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdGhpcy5fbWVzc2FnZSwidG9vbHRpcCIpLHRoaXMuX21lc3NhZ2U9bnVsbCE9dD9TdHJpbmcodCkudHJpbSgpOiIiLCF0aGlzLl9tZXNzYWdlJiZ0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCk/dGhpcy5oaWRlKDApOih0aGlzLl9zZXR1cFBvaW50ZXJFbnRlckV2ZW50c0lmTmVlZGVkKCksdGhpcy5fdXBkYXRlVG9vbHRpcE1lc3NhZ2UoKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9hcmlhRGVzY3JpYmVyLmRlc2NyaWJlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCx0aGlzLm1lc3NhZ2UsInRvb2x0aXAiKX0pKX0pKSl9Z2V0IHRvb2x0aXBDbGFzcygpe3JldHVybiB0aGlzLl90b29sdGlwQ2xhc3N9c2V0IHRvb2x0aXBDbGFzcyh0KXt0aGlzLl90b29sdGlwQ2xhc3M9dCx0aGlzLl90b29sdGlwSW5zdGFuY2UmJnRoaXMuX3NldFRvb2x0aXBDbGFzcyh0aGlzLl90b29sdGlwQ2xhc3MpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3ZpZXdJbml0aWFsaXplZD0hMCx0aGlzLl9zZXR1cFBvaW50ZXJFbnRlckV2ZW50c0lmTmVlZGVkKCksdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZikucGlwZShVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHQ9Pnt0PyJrZXlib2FyZCI9PT10JiZ0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5zaG93KCkpKTp0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5oaWRlKDApKSl9KSl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtjbGVhclRpbWVvdXQodGhpcy5fdG91Y2hzdGFydFRpbWVvdXQpLHRoaXMuX292ZXJsYXlSZWYmJih0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKSx0aGlzLl90b29sdGlwSW5zdGFuY2U9bnVsbCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9oYW5kbGVLZXlkb3duKSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLmZvckVhY2goKChbZSxuXSk9Pnt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuLFYwKX0pKSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLmxlbmd0aD0wLHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fYXJpYURlc2NyaWJlci5yZW1vdmVEZXNjcmlwdGlvbih0LHRoaXMubWVzc2FnZSwidG9vbHRpcCIpLHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0KX1zaG93KHQ9dGhpcy5zaG93RGVsYXkpe2lmKHRoaXMuZGlzYWJsZWR8fCF0aGlzLm1lc3NhZ2V8fHRoaXMuX2lzVG9vbHRpcFZpc2libGUoKSYmIXRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fc2hvd1RpbWVvdXRJZCYmIXRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5faGlkZVRpbWVvdXRJZClyZXR1cm47Y29uc3QgZT10aGlzLl9jcmVhdGVPdmVybGF5KCk7dGhpcy5fZGV0YWNoKCksdGhpcy5fcG9ydGFsPXRoaXMuX3BvcnRhbHx8bmV3IGJCKHRoaXMuX3Rvb2x0aXBDb21wb25lbnQsdGhpcy5fdmlld0NvbnRhaW5lclJlZiksdGhpcy5fdG9vbHRpcEluc3RhbmNlPWUuYXR0YWNoKHRoaXMuX3BvcnRhbCkuaW5zdGFuY2UsdGhpcy5fdG9vbHRpcEluc3RhbmNlLmFmdGVySGlkZGVuKCkucGlwZShVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9kZXRhY2goKSkpLHRoaXMuX3NldFRvb2x0aXBDbGFzcyh0aGlzLl90b29sdGlwQ2xhc3MpLHRoaXMuX3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCksdGhpcy5fdG9vbHRpcEluc3RhbmNlLnNob3codCl9aGlkZSh0PXRoaXMuaGlkZURlbGF5KXt0aGlzLl90b29sdGlwSW5zdGFuY2UmJnRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5oaWRlKHQpfXRvZ2dsZSgpe3RoaXMuX2lzVG9vbHRpcFZpc2libGUoKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX1faXNUb29sdGlwVmlzaWJsZSgpe3JldHVybiEhdGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl90b29sdGlwSW5zdGFuY2UuaXNWaXNpYmxlKCl9X2NyZWF0ZU92ZXJsYXkoKXtpZih0aGlzLl9vdmVybGF5UmVmKXJldHVybiB0aGlzLl9vdmVybGF5UmVmO2NvbnN0IHQ9dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModGhpcy5fZWxlbWVudFJlZiksZT10aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50UmVmKS53aXRoVHJhbnNmb3JtT3JpZ2luT24oYC4ke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS10b29sdGlwYCkud2l0aEZsZXhpYmxlRGltZW5zaW9ucyghMSkud2l0aFZpZXdwb3J0TWFyZ2luKHRoaXMuX3ZpZXdwb3J0TWFyZ2luKS53aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCk7cmV0dXJuIGUucG9zaXRpb25DaGFuZ2VzLnBpcGUoVWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fdXBkYXRlQ3VycmVudFBvc2l0aW9uQ2xhc3ModC5jb25uZWN0aW9uUGFpciksdGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0LnNjcm9sbGFibGVWaWV3UHJvcGVydGllcy5pc092ZXJsYXlDbGlwcGVkJiZ0aGlzLl90b29sdGlwSW5zdGFuY2UuaXNWaXNpYmxlKCkmJnRoaXMuX25nWm9uZS5ydW4oKCgpPT50aGlzLmhpZGUoMCkpKX0pKSx0aGlzLl9vdmVybGF5UmVmPXRoaXMuX292ZXJsYXkuY3JlYXRlKHtkaXJlY3Rpb246dGhpcy5fZGlyLHBvc2l0aW9uU3RyYXRlZ3k6ZSxwYW5lbENsYXNzOmAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS10b29sdGlwLXBhbmVsYCxzY3JvbGxTdHJhdGVneTp0aGlzLl9zY3JvbGxTdHJhdGVneSgpfSksdGhpcy5fdXBkYXRlUG9zaXRpb24odGhpcy5fb3ZlcmxheVJlZiksdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnBpcGUoVWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZGV0YWNoKCkpKSx0aGlzLl9vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkucGlwZShVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dmFyIHQ7cmV0dXJuIG51bGw9PT0odD10aGlzLl90b29sdGlwSW5zdGFuY2UpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Ll9oYW5kbGVCb2R5SW50ZXJhY3Rpb24oKX0pKSx0aGlzLl9vdmVybGF5UmVmfV9kZXRhY2goKXt0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkmJnRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksdGhpcy5fdG9vbHRpcEluc3RhbmNlPW51bGx9X3VwZGF0ZVBvc2l0aW9uKHQpe2NvbnN0IGU9dC5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5LG49dGhpcy5fZ2V0T3JpZ2luKCksbz10aGlzLl9nZXRPdmVybGF5UG9zaXRpb24oKTtlLndpdGhQb3NpdGlvbnMoW3RoaXMuX2FkZE9mZnNldChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5tYWluKSxvLm1haW4pKSx0aGlzLl9hZGRPZmZzZXQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZmFsbGJhY2spLG8uZmFsbGJhY2spKV0pfV9hZGRPZmZzZXQodCl7cmV0dXJuIHR9X2dldE9yaWdpbigpe2NvbnN0IHQ9IXRoaXMuX2Rpcnx8Imx0ciI9PXRoaXMuX2Rpci52YWx1ZSxlPXRoaXMucG9zaXRpb247bGV0IG47aWYoImFib3ZlIj09ZXx8ImJlbG93Ij09ZSluPXtvcmlnaW5YOiJjZW50ZXIiLG9yaWdpblk6ImFib3ZlIj09ZT8idG9wIjoiYm90dG9tIn07ZWxzZSBpZigiYmVmb3JlIj09ZXx8ImxlZnQiPT1lJiZ0fHwicmlnaHQiPT1lJiYhdCluPXtvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiY2VudGVyIn07ZWxzZSBpZigiYWZ0ZXIiPT1lfHwicmlnaHQiPT1lJiZ0fHwibGVmdCI9PWUmJiF0KW49e29yaWdpblg6ImVuZCIsb3JpZ2luWToiY2VudGVyIn07ZWxzZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXRocm93IFUwKGUpO2NvbnN0e3g6byx5Oml9PXRoaXMuX2ludmVydFBvc2l0aW9uKG4ub3JpZ2luWCxuLm9yaWdpblkpO3JldHVybnttYWluOm4sZmFsbGJhY2s6e29yaWdpblg6byxvcmlnaW5ZOml9fX1fZ2V0T3ZlcmxheVBvc2l0aW9uKCl7Y29uc3QgdD0hdGhpcy5fZGlyfHwibHRyIj09dGhpcy5fZGlyLnZhbHVlLGU9dGhpcy5wb3NpdGlvbjtsZXQgbjtpZigiYWJvdmUiPT1lKW49e292ZXJsYXlYOiJjZW50ZXIiLG92ZXJsYXlZOiJib3R0b20ifTtlbHNlIGlmKCJiZWxvdyI9PWUpbj17b3ZlcmxheVg6ImNlbnRlciIsb3ZlcmxheVk6InRvcCJ9O2Vsc2UgaWYoImJlZm9yZSI9PWV8fCJsZWZ0Ij09ZSYmdHx8InJpZ2h0Ij09ZSYmIXQpbj17b3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6ImNlbnRlciJ9O2Vsc2UgaWYoImFmdGVyIj09ZXx8InJpZ2h0Ij09ZSYmdHx8ImxlZnQiPT1lJiYhdCluPXtvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJjZW50ZXIifTtlbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpdGhyb3cgVTAoZSk7Y29uc3R7eDpvLHk6aX09dGhpcy5faW52ZXJ0UG9zaXRpb24obi5vdmVybGF5WCxuLm92ZXJsYXlZKTtyZXR1cm57bWFpbjpuLGZhbGxiYWNrOntvdmVybGF5WDpvLG92ZXJsYXlZOml9fX1fdXBkYXRlVG9vbHRpcE1lc3NhZ2UoKXt0aGlzLl90b29sdGlwSW5zdGFuY2UmJih0aGlzLl90b29sdGlwSW5zdGFuY2UubWVzc2FnZT10aGlzLm1lc3NhZ2UsdGhpcy5fdG9vbHRpcEluc3RhbmNlLl9tYXJrRm9yQ2hlY2soKSx0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHZlKDEpLFVlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl90b29sdGlwSW5zdGFuY2UmJnRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKX0pKSl9X3NldFRvb2x0aXBDbGFzcyh0KXt0aGlzLl90b29sdGlwSW5zdGFuY2UmJih0aGlzLl90b29sdGlwSW5zdGFuY2UudG9vbHRpcENsYXNzPXQsdGhpcy5fdG9vbHRpcEluc3RhbmNlLl9tYXJrRm9yQ2hlY2soKSl9X2ludmVydFBvc2l0aW9uKHQsZSl7cmV0dXJuImFib3ZlIj09PXRoaXMucG9zaXRpb258fCJiZWxvdyI9PT10aGlzLnBvc2l0aW9uPyJ0b3AiPT09ZT9lPSJib3R0b20iOiJib3R0b20iPT09ZSYmKGU9InRvcCIpOiJlbmQiPT09dD90PSJzdGFydCI6InN0YXJ0Ij09PXQmJih0PSJlbmQiKSx7eDp0LHk6ZX19X3VwZGF0ZUN1cnJlbnRQb3NpdGlvbkNsYXNzKHQpe2NvbnN0e292ZXJsYXlZOmUsb3JpZ2luWDpuLG9yaWdpblk6b309dDtsZXQgaTtpZihpPSJjZW50ZXIiPT09ZT90aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJlbmQiPT09bj8ibGVmdCI6InJpZ2h0Ijoic3RhcnQiPT09bj8ibGVmdCI6InJpZ2h0IjoiYm90dG9tIj09PWUmJiJ0b3AiPT09bz8iYWJvdmUiOiJiZWxvdyIsaSE9PXRoaXMuX2N1cnJlbnRQb3NpdGlvbil7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmO2lmKHQpe2NvbnN0IGU9YCR7dGhpcy5fY3NzQ2xhc3NQcmVmaXh9LXRvb2x0aXAtcGFuZWwtYDt0LnJlbW92ZVBhbmVsQ2xhc3MoZSt0aGlzLl9jdXJyZW50UG9zaXRpb24pLHQuYWRkUGFuZWxDbGFzcyhlK2kpfXRoaXMuX2N1cnJlbnRQb3NpdGlvbj1pfX1fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpeyF0aGlzLl9kaXNhYmxlZCYmdGhpcy5tZXNzYWdlJiZ0aGlzLl92aWV3SW5pdGlhbGl6ZWQmJiF0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLmxlbmd0aCYmKHRoaXMuX3BsYXRmb3JtU3VwcG9ydHNNb3VzZUV2ZW50cygpP3RoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMucHVzaChbIm1vdXNlZW50ZXIiLCgpPT57dGhpcy5fc2V0dXBQb2ludGVyRXhpdEV2ZW50c0lmTmVlZGVkKCksdGhpcy5zaG93KCl9XSk6Im9mZiIhPT10aGlzLnRvdWNoR2VzdHVyZXMmJih0aGlzLl9kaXNhYmxlTmF0aXZlR2VzdHVyZXNJZk5lY2Vzc2FyeSgpLHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMucHVzaChbInRvdWNoc3RhcnQiLCgpPT57dGhpcy5fc2V0dXBQb2ludGVyRXhpdEV2ZW50c0lmTmVlZGVkKCksY2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLl90b3VjaHN0YXJ0VGltZW91dD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5zaG93KCkpLDUwMCl9XSkpLHRoaXMuX2FkZExpc3RlbmVycyh0aGlzLl9wYXNzaXZlTGlzdGVuZXJzKSl9X3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpe2lmKHRoaXMuX3BvaW50ZXJFeGl0RXZlbnRzSW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuX3BvaW50ZXJFeGl0RXZlbnRzSW5pdGlhbGl6ZWQ9ITA7Y29uc3QgdD1bXTtpZih0aGlzLl9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKSl0LnB1c2goWyJtb3VzZWxlYXZlIiwoKT0+dGhpcy5oaWRlKCldLFsid2hlZWwiLHQ9PnRoaXMuX3doZWVsTGlzdGVuZXIodCldKTtlbHNlIGlmKCJvZmYiIT09dGhpcy50b3VjaEdlc3R1cmVzKXt0aGlzLl9kaXNhYmxlTmF0aXZlR2VzdHVyZXNJZk5lY2Vzc2FyeSgpO2NvbnN0IGU9KCk9PntjbGVhclRpbWVvdXQodGhpcy5fdG91Y2hzdGFydFRpbWVvdXQpLHRoaXMuaGlkZSh0aGlzLl9kZWZhdWx0T3B0aW9ucy50b3VjaGVuZEhpZGVEZWxheSl9O3QucHVzaChbInRvdWNoZW5kIixlXSxbInRvdWNoY2FuY2VsIixlXSl9dGhpcy5fYWRkTGlzdGVuZXJzKHQpLHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMucHVzaCguLi50KX1fYWRkTGlzdGVuZXJzKHQpe3QuZm9yRWFjaCgoKFt0LGVdKT0+e3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHQsZSxWMCl9KSl9X3BsYXRmb3JtU3VwcG9ydHNNb3VzZUV2ZW50cygpe3JldHVybiF0aGlzLl9wbGF0Zm9ybS5JT1MmJiF0aGlzLl9wbGF0Zm9ybS5BTkRST0lEfV93aGVlbExpc3RlbmVyKHQpe2lmKHRoaXMuX2lzVG9vbHRpcFZpc2libGUoKSl7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHQuY2xpZW50WCx0LmNsaWVudFkpLG49dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2U9PT1ufHxuLmNvbnRhaW5zKGUpfHx0aGlzLmhpZGUoKX19X2Rpc2FibGVOYXRpdmVHZXN0dXJlc0lmTmVjZXNzYXJ5KCl7Y29uc3QgdD10aGlzLnRvdWNoR2VzdHVyZXM7aWYoIm9mZiIhPT10KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxuPWUuc3R5bGU7KCJvbiI9PT10fHwiSU5QVVQiIT09ZS5ub2RlTmFtZSYmIlRFWFRBUkVBIiE9PWUubm9kZU5hbWUpJiYobi51c2VyU2VsZWN0PW4ubXNVc2VyU2VsZWN0PW4ud2Via2l0VXNlclNlbGVjdD1uLk1velVzZXJTZWxlY3Q9Im5vbmUiKSwib24iIT09dCYmZS5kcmFnZ2FibGV8fChuLndlYmtpdFVzZXJEcmFnPSJub25lIiksbi50b3VjaEFjdGlvbj0ibm9uZSIsbi53ZWJraXRUYXBIaWdobGlnaHRDb2xvcj0idHJhbnNwYXJlbnQifX19WjAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFowKShmdShyViksZnUoS2gpLGZ1KHJCKSxmdShGYiksZnUobUMpLGZ1KF9IKSxmdShXSCksZnUoeEYpLGZ1KHZvaWQgMCksZnUoQUYpLGZ1KHZvaWQgMCksZnUoc00pKX0sWjAuybVkaXI9aG8oe3R5cGU6WjAsaW5wdXRzOntzaG93RGVsYXk6WyJtYXRUb29sdGlwU2hvd0RlbGF5Iiwic2hvd0RlbGF5Il0saGlkZURlbGF5OlsibWF0VG9vbHRpcEhpZGVEZWxheSIsImhpZGVEZWxheSJdLHRvdWNoR2VzdHVyZXM6WyJtYXRUb29sdGlwVG91Y2hHZXN0dXJlcyIsInRvdWNoR2VzdHVyZXMiXSxwb3NpdGlvbjpbIm1hdFRvb2x0aXBQb3NpdGlvbiIsInBvc2l0aW9uIl0sZGlzYWJsZWQ6WyJtYXRUb29sdGlwRGlzYWJsZWQiLCJkaXNhYmxlZCJdLG1lc3NhZ2U6WyJtYXRUb29sdGlwIiwibWVzc2FnZSJdLHRvb2x0aXBDbGFzczpbIm1hdFRvb2x0aXBDbGFzcyIsInRvb2x0aXBDbGFzcyJdfX0pLFowLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6clZ9LHt0eXBlOktofSx7dHlwZTpyQn0se3R5cGU6RmJ9LHt0eXBlOm1DfSx7dHlwZTpfSH0se3R5cGU6V0h9LHt0eXBlOnhGfSx7dHlwZTp2b2lkIDB9LHt0eXBlOkFGfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dLFowLnByb3BEZWNvcmF0b3JzPXtwb3NpdGlvbjpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBQb3NpdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwRGlzYWJsZWQiXX1dLHNob3dEZWxheTpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBTaG93RGVsYXkiXX1dLGhpZGVEZWxheTpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBIaWRlRGVsYXkiXX1dLHRvdWNoR2VzdHVyZXM6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwVG91Y2hHZXN0dXJlcyJdfV0sbWVzc2FnZTpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXAiXX1dLHRvb2x0aXBDbGFzczpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBDbGFzcyJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWjAsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnJWfSx7dHlwZTpLaH0se3R5cGU6ckJ9LHt0eXBlOkZifSx7dHlwZTptQ30se3R5cGU6X0h9LHt0eXBlOldIfSx7dHlwZTp4Rn0se3R5cGU6dm9pZCAwfSx7dHlwZTpBRn0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19XX0pLHtzaG93RGVsYXk6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwU2hvd0RlbGF5Il19XSxoaWRlRGVsYXk6W3t0eXBlOlJfLGFyZ3M6WyJtYXRUb29sdGlwSGlkZURlbGF5Il19XSx0b3VjaEdlc3R1cmVzOlt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiXX1dLHBvc2l0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0VG9vbHRpcFBvc2l0aW9uIl19XSxkaXNhYmxlZDpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBEaXNhYmxlZCJdfV0sbWVzc2FnZTpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXAiXX1dLHRvb2x0aXBDbGFzczpbe3R5cGU6Ul8sYXJnczpbIm1hdFRvb2x0aXBDbGFzcyJdfV19KTtjbGFzcyBYMCBleHRlbmRzIFowe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXtzdXBlcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCksdGhpcy5fdG9vbHRpcENvbXBvbmVudD1KMH19WDAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFgwKShmdShyViksZnUoS2gpLGZ1KHJCKSxmdShGYiksZnUobUMpLGZ1KF9IKSxmdShXSCksZnUoeEYpLGZ1KGowKSxmdShBRiw4KSxmdShZMCw4KSxmdShzTSkpfSxYMC7JtWRpcj1obyh7dHlwZTpYMCxzZWxlY3RvcnM6W1siIiwibWF0VG9vbHRpcCIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC10b29sdGlwLXRyaWdnZXIiXSxleHBvcnRBczpbIm1hdFRvb2x0aXAiXSxmZWF0dXJlczpbUXBdfSksWDAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpyVn0se3R5cGU6S2h9LHt0eXBlOnJCfSx7dHlwZTpGYn0se3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTpXSH0se3R5cGU6eEZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltqMF19XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltZMF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYMCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0VG9vbHRpcF0iLGV4cG9ydEFzOiJtYXRUb29sdGlwIixob3N0OntjbGFzczoibWF0LXRvb2x0aXAtdHJpZ2dlciJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6clZ9LHt0eXBlOktofSx7dHlwZTpyQn0se3R5cGU6RmJ9LHt0eXBlOm1DfSx7dHlwZTpfSH0se3R5cGU6V0h9LHt0eXBlOnhGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbajBdfV19LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbWTBdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX1dfSksbnVsbCk7Y2xhc3MgSzB7Y29uc3RydWN0b3IodCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9dCx0aGlzLl92aXNpYmlsaXR5PSJpbml0aWFsIix0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITEsdGhpcy5fb25IaWRlPW5ldyBCfXNob3codCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0SWQpLHRoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbj0hMCx0aGlzLl9zaG93VGltZW91dElkPXNldFRpbWVvdXQoKCgpPT57dGhpcy5fdmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5fc2hvd1RpbWVvdXRJZD12b2lkIDAsdGhpcy5fb25TaG93KCksdGhpcy5fbWFya0ZvckNoZWNrKCl9KSx0KX1oaWRlKHQpe2NsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dElkKSx0aGlzLl9oaWRlVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT57dGhpcy5fdmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLl9oaWRlVGltZW91dElkPXZvaWQgMCx0aGlzLl9tYXJrRm9yQ2hlY2soKX0pLHQpfWFmdGVySGlkZGVuKCl7cmV0dXJuIHRoaXMuX29uSGlkZX1pc1Zpc2libGUoKXtyZXR1cm4idmlzaWJsZSI9PT10aGlzLl92aXNpYmlsaXR5fW5nT25EZXN0cm95KCl7Y2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0SWQpLGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKSx0aGlzLl9vbkhpZGUuY29tcGxldGUoKX1fYW5pbWF0aW9uU3RhcnQoKXt0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITF9X2FuaW1hdGlvbkRvbmUodCl7Y29uc3QgZT10LnRvU3RhdGU7ImhpZGRlbiIhPT1lfHx0aGlzLmlzVmlzaWJsZSgpfHx0aGlzLl9vbkhpZGUubmV4dCgpLCJ2aXNpYmxlIiE9PWUmJiJoaWRkZW4iIT09ZXx8KHRoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbj0hMCl9X2hhbmRsZUJvZHlJbnRlcmFjdGlvbigpe3RoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbiYmdGhpcy5oaWRlKDApfV9tYXJrRm9yQ2hlY2soKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1fb25TaG93KCl7fX1LMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SzApKGZ1KE9iKSl9LEswLsm1ZGlyPWhvKHt0eXBlOkswfSksSzAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSzAsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSxudWxsKTtjbGFzcyBKMCBleHRlbmRzIEswe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCksdGhpcy5fYnJlYWtwb2ludE9ic2VydmVyPWUsdGhpcy5faXNIYW5kc2V0PXRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKHZWKX19SjAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEowKShmdShPYiksZnUoQ1YpKX0sSjAuybVjbXA9c28oe3R5cGU6SjAsc2VsZWN0b3JzOltbIm1hdC10b29sdGlwLWNvbXBvbmVudCJdXSxob3N0QXR0cnM6WyJhcmlhLWhpZGRlbiIsInRydWUiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZsZigiem9vbSIsInZpc2libGUiPT09bi5fdmlzaWJpbGl0eT8xOm51bGwpfSxmZWF0dXJlczpbUXBdLGRlY2xzOjMsdmFyczo3LGNvbnN0czpbWzEsIm1hdC10b29sdGlwIiwzLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihfdSgwLCJkaXYiLDApLER1KCJAc3RhdGUuc3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2FuaW1hdGlvblN0YXJ0KCl9KSkoIkBzdGF0ZS5kb25lIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fYW5pbWF0aW9uRG9uZShlKX0pKSxfeSgxLCJhc3luYyIpLFBmKDIpLEN1KCkpLDImZSl7bGV0IHQ7Y2YoIm1hdC10b29sdGlwLWhhbmRzZXQiLG51bGw9PSh0PUN5KDEsNSxuLl9pc0hhbmRzZXQpKT9udWxsOnQubWF0Y2hlcyksaHUoIm5nQ2xhc3MiLG4udG9vbHRpcENsYXNzKSgiQHN0YXRlIixuLl92aXNpYmlsaXR5KSxEYygyKSx3ZihuLm1lc3NhZ2UpfX0sZGlyZWN0aXZlczpbQ3ZdLHBpcGVzOltWdl0sc3R5bGVzOlsiLm1hdC10b29sdGlwLXBhbmVse3BvaW50ZXItZXZlbnRzOm5vbmUgIWltcG9ydGFudH0ubWF0LXRvb2x0aXB7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjRweDttYXJnaW46MTRweDttYXgtd2lkdGg6MjUwcHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbHRpcHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2x0aXAtaGFuZHNldHttYXJnaW46MjRweDtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjE2cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltCMC50b29sdGlwU3RhdGVdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLEowLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2J9LHt0eXBlOkNWfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKMCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtdG9vbHRpcC1jb21wb25lbnQiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdG9vbHRpcCJcbiAgICAgW25nQ2xhc3NdPSJ0b29sdGlwQ2xhc3MiXG4gICAgIFtjbGFzcy5tYXQtdG9vbHRpcC1oYW5kc2V0XT0iKF9pc0hhbmRzZXQgfCBhc3luYyk/Lm1hdGNoZXMiXG4gICAgIFtAc3RhdGVdPSJfdmlzaWJpbGl0eSJcbiAgICAgKEBzdGF0ZS5zdGFydCk9Il9hbmltYXRpb25TdGFydCgpIlxuICAgICAoQHN0YXRlLmRvbmUpPSJfYW5pbWF0aW9uRG9uZSgkZXZlbnQpIj57e21lc3NhZ2V9fTwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxhbmltYXRpb25zOltCMC50b29sdGlwU3RhdGVdLGhvc3Q6eyJbc3R5bGUuem9vbV0iOidfdmlzaWJpbGl0eSA9PT0gInZpc2libGUiID8gMSA6IG51bGwnLCJhcmlhLWhpZGRlbiI6InRydWUifSxzdHlsZXM6WyIubWF0LXRvb2x0aXAtcGFuZWx7cG9pbnRlci1ldmVudHM6bm9uZSAhaW1wb3J0YW50fS5tYXQtdG9vbHRpcHtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O21hcmdpbjoxNHB4O21heC13aWR0aDoyNTBweDtwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6OHB4O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sdGlwe291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e21hcmdpbjoyNHB4O3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctcmlnaHQ6MTZweH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9LHt0eXBlOkNWfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFEwe31mdW5jdGlvbiAkMCh0LGUpe2lmKDEmdCYmKF91KDAsIm1hdC1vcHRpb24iLDE5KSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7aHUoInZhbHVlIix0KSxEYygxKSxrZigiICIsdCwiICIpfX1mdW5jdGlvbiB0MSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsIm1hdC1mb3JtLWZpZWxkIiwxNiksX3UoMSwibWF0LXNlbGVjdCIsMTcpLER1KCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5fY2hhbmdlUGFnZVNpemUobi52YWx1ZSl9KSksSG0oMiwkMCwyLDIsIm1hdC1vcHRpb24iLDE4KSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KDIpO2h1KCJhcHBlYXJhbmNlIix0Ll9mb3JtRmllbGRBcHBlYXJhbmNlKSgiY29sb3IiLHQuY29sb3IpLERjKDEpLGh1KCJ2YWx1ZSIsdC5wYWdlU2l6ZSkoImRpc2FibGVkIix0LmRpc2FibGVkKSgiYXJpYS1sYWJlbCIsdC5faW50bC5pdGVtc1BlclBhZ2VMYWJlbCksRGMoMSksaHUoIm5nRm9yT2YiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucyl9fWZ1bmN0aW9uIGUxKHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwyMCksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDEpLHdmKHQucGFnZVNpemUpfX1mdW5jdGlvbiBuMSh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsMTIpLF91KDEsImRpdiIsMTMpLFBmKDIpLEN1KCksSG0oMyx0MSwzLDYsIm1hdC1mb3JtLWZpZWxkIiwxNCksSG0oNCxlMSwyLDEsImRpdiIsMTUpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDIpLGtmKCIgIix0Ll9pbnRsLml0ZW1zUGVyUGFnZUxhYmVsLCIgIiksRGMoMSksaHUoIm5nSWYiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGg+MSksRGMoMSksaHUoIm5nSWYiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGg8PTEpfX1mdW5jdGlvbiBvMSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImJ1dHRvbiIsMjEpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5maXJzdFBhZ2UoKX0pKSxvYSgpLF91KDEsInN2ZyIsNyksTXUoMiwicGF0aCIsMjIpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtodSgibWF0VG9vbHRpcCIsdC5faW50bC5maXJzdFBhZ2VMYWJlbCkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsdC5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIix0Ll9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpKSx5bSgiYXJpYS1sYWJlbCIsdC5faW50bC5maXJzdFBhZ2VMYWJlbCl9fWZ1bmN0aW9uIGkxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7b2EoKSxhYSgpLF91KDAsImJ1dHRvbiIsMjMpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5sYXN0UGFnZSgpfSkpLG9hKCksX3UoMSwic3ZnIiw3KSxNdSgyLCJwYXRoIiwyNCksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO2h1KCJtYXRUb29sdGlwIix0Ll9pbnRsLmxhc3RQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLHQuX25leHRCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIix0Ll9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpLHltKCJhcmlhLWxhYmVsIix0Ll9pbnRsLmxhc3RQYWdlTGFiZWwpfX1RMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UTApfSxRMC7JtW1vZD11byh7dHlwZTpRMH0pLFEwLsm1aW5qPURuKHtwcm92aWRlcnM6W1cwXSxpbXBvcnRzOltbREYscngsdVYsV0ZdLFdGLHVCXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUTAsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltERixyeCx1VixXRl0sZXhwb3J0czpbWDAsSjAsV0YsdUJdLGRlY2xhcmF0aW9uczpbWDAsSjBdLGVudHJ5Q29tcG9uZW50czpbSjBdLHByb3ZpZGVyczpbVzBdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oUTAse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltYMCxKMF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bREYscngsdVYsV0ZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1gwLEowLFdGLHVCXX19KTtjbGFzcyBhMXtjb25zdHJ1Y3Rvcigpe3RoaXMuY2hhbmdlcz1uZXcgQix0aGlzLml0ZW1zUGVyUGFnZUxhYmVsPSJJdGVtcyBwZXIgcGFnZToiLHRoaXMubmV4dFBhZ2VMYWJlbD0iTmV4dCBwYWdlIix0aGlzLnByZXZpb3VzUGFnZUxhYmVsPSJQcmV2aW91cyBwYWdlIix0aGlzLmZpcnN0UGFnZUxhYmVsPSJGaXJzdCBwYWdlIix0aGlzLmxhc3RQYWdlTGFiZWw9Ikxhc3QgcGFnZSIsdGhpcy5nZXRSYW5nZUxhYmVsPSh0LGUsbik9PntpZigwPT1ufHwwPT1lKXJldHVybmAwIG9mICR7bn1gO2NvbnN0IG89dCplO3JldHVybmAke28rMX0g4oCTICR7bzwobj1NYXRoLm1heChuLDApKT9NYXRoLm1pbihvK2Usbik6bytlfSBvZiAke259YH19fWExLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhMSl9LGExLsm1cHJvdj1Tbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBhMX0sdG9rZW46YTEscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGExLFt7dHlwZTpqbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgcjE9e3Byb3ZpZGU6YTEsZGVwczpbW25ldyBCcixuZXcgVXIsYTFdXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHMxKHQpe3JldHVybiB0fHxuZXcgYTF9fSxsMT1uZXcgZXIoIk1BVF9QQUdJTkFUT1JfREVGQVVMVF9PUFRJT05TIiksYzE9R0YoS0YoY2xhc3N7fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBkMSBleHRlbmRzIGMxe2NvbnN0cnVjdG9yKHQsZSxuKXtpZihzdXBlcigpLHRoaXMuX2ludGw9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3BhZ2VJbmRleD0wLHRoaXMuX2xlbmd0aD0wLHRoaXMuX3BhZ2VTaXplT3B0aW9ucz1bXSx0aGlzLl9oaWRlUGFnZVNpemU9ITEsdGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9ITEsdGhpcy5wYWdlPW5ldyBTeSx0aGlzLl9pbnRsQ2hhbmdlcz10LmNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpKSxuKXtjb25zdHtwYWdlU2l6ZTp0LHBhZ2VTaXplT3B0aW9uczplLGhpZGVQYWdlU2l6ZTpvLHNob3dGaXJzdExhc3RCdXR0b25zOml9PW47bnVsbCE9dCYmKHRoaXMuX3BhZ2VTaXplPXQpLG51bGwhPWUmJih0aGlzLl9wYWdlU2l6ZU9wdGlvbnM9ZSksbnVsbCE9byYmKHRoaXMuX2hpZGVQYWdlU2l6ZT1vKSxudWxsIT1pJiYodGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9aSl9fWdldCBwYWdlSW5kZXgoKXtyZXR1cm4gdGhpcy5fcGFnZUluZGV4fXNldCBwYWdlSW5kZXgodCl7dGhpcy5fcGFnZUluZGV4PU1hdGgubWF4KG1IKHQpLDApLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbGVuZ3RofXNldCBsZW5ndGgodCl7dGhpcy5fbGVuZ3RoPW1IKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBwYWdlU2l6ZSgpe3JldHVybiB0aGlzLl9wYWdlU2l6ZX1zZXQgcGFnZVNpemUodCl7dGhpcy5fcGFnZVNpemU9TWF0aC5tYXgobUgodCksMCksdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCl9Z2V0IHBhZ2VTaXplT3B0aW9ucygpe3JldHVybiB0aGlzLl9wYWdlU2l6ZU9wdGlvbnN9c2V0IHBhZ2VTaXplT3B0aW9ucyh0KXt0aGlzLl9wYWdlU2l6ZU9wdGlvbnM9KHR8fFtdKS5tYXAoKHQ9Pm1IKHQpKSksdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCl9Z2V0IGhpZGVQYWdlU2l6ZSgpe3JldHVybiB0aGlzLl9oaWRlUGFnZVNpemV9c2V0IGhpZGVQYWdlU2l6ZSh0KXt0aGlzLl9oaWRlUGFnZVNpemU9cEgodCl9Z2V0IHNob3dGaXJzdExhc3RCdXR0b25zKCl7cmV0dXJuIHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zfXNldCBzaG93Rmlyc3RMYXN0QnV0dG9ucyh0KXt0aGlzLl9zaG93Rmlyc3RMYXN0QnV0dG9ucz1wSCh0KX1uZ09uSW5pdCgpe3RoaXMuX2luaXRpYWxpemVkPSEwLHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpLHRoaXMuX21hcmtJbml0aWFsaXplZCgpfW5nT25EZXN0cm95KCl7dGhpcy5faW50bENoYW5nZXMudW5zdWJzY3JpYmUoKX1uZXh0UGFnZSgpe2lmKCF0aGlzLmhhc05leHRQYWdlKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXgrKyx0aGlzLl9lbWl0UGFnZUV2ZW50KHQpfXByZXZpb3VzUGFnZSgpe2lmKCF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpKXJldHVybjtjb25zdCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4LS0sdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1maXJzdFBhZ2UoKXtpZighdGhpcy5oYXNQcmV2aW91c1BhZ2UoKSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleD0wLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9bGFzdFBhZ2UoKXtpZighdGhpcy5oYXNOZXh0UGFnZSgpKXJldHVybjtjb25zdCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PXRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpLTEsdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1oYXNQcmV2aW91c1BhZ2UoKXtyZXR1cm4gdGhpcy5wYWdlSW5kZXg+PTEmJjAhPXRoaXMucGFnZVNpemV9aGFzTmV4dFBhZ2UoKXtjb25zdCB0PXRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpLTE7cmV0dXJuIHRoaXMucGFnZUluZGV4PHQmJjAhPXRoaXMucGFnZVNpemV9Z2V0TnVtYmVyT2ZQYWdlcygpe3JldHVybiB0aGlzLnBhZ2VTaXplP01hdGguY2VpbCh0aGlzLmxlbmd0aC90aGlzLnBhZ2VTaXplKTowfV9jaGFuZ2VQYWdlU2l6ZSh0KXtjb25zdCBlPXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PU1hdGguZmxvb3IodGhpcy5wYWdlSW5kZXgqdGhpcy5wYWdlU2l6ZS90KXx8MCx0aGlzLnBhZ2VTaXplPXQsdGhpcy5fZW1pdFBhZ2VFdmVudChlKX1fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5oYXNOZXh0UGFnZSgpfV9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5oYXNQcmV2aW91c1BhZ2UoKX1fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCl7dGhpcy5faW5pdGlhbGl6ZWQmJih0aGlzLnBhZ2VTaXplfHwodGhpcy5fcGFnZVNpemU9MCE9dGhpcy5wYWdlU2l6ZU9wdGlvbnMubGVuZ3RoP3RoaXMucGFnZVNpemVPcHRpb25zWzBdOjUwKSx0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnM9dGhpcy5wYWdlU2l6ZU9wdGlvbnMuc2xpY2UoKSwtMT09PXRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5pbmRleE9mKHRoaXMucGFnZVNpemUpJiZ0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMucHVzaCh0aGlzLnBhZ2VTaXplKSx0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMuc29ydCgoKHQsZSk9PnQtZSkpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1fZW1pdFBhZ2VFdmVudCh0KXt0aGlzLnBhZ2UuZW1pdCh7cHJldmlvdXNQYWdlSW5kZXg6dCxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgscGFnZVNpemU6dGhpcy5wYWdlU2l6ZSxsZW5ndGg6dGhpcy5sZW5ndGh9KX19ZDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGQxKShmdShhMSksZnUoT2IpLGZ1KHZvaWQgMCkpfSxkMS7JtWRpcj1obyh7dHlwZTpkMSxpbnB1dHM6e3BhZ2VJbmRleDoicGFnZUluZGV4IixsZW5ndGg6Imxlbmd0aCIscGFnZVNpemU6InBhZ2VTaXplIixwYWdlU2l6ZU9wdGlvbnM6InBhZ2VTaXplT3B0aW9ucyIsaGlkZVBhZ2VTaXplOiJoaWRlUGFnZVNpemUiLHNob3dGaXJzdExhc3RCdXR0b25zOiJzaG93Rmlyc3RMYXN0QnV0dG9ucyIsY29sb3I6ImNvbG9yIn0sb3V0cHV0czp7cGFnZToicGFnZSJ9LGZlYXR1cmVzOltRcF19KSxkMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmExfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwfV0sZDEucHJvcERlY29yYXRvcnM9e2NvbG9yOlt7dHlwZTpSX31dLHBhZ2VJbmRleDpbe3R5cGU6Ul99XSxsZW5ndGg6W3t0eXBlOlJffV0scGFnZVNpemU6W3t0eXBlOlJffV0scGFnZVNpemVPcHRpb25zOlt7dHlwZTpSX31dLGhpZGVQYWdlU2l6ZTpbe3R5cGU6Ul99XSxzaG93Rmlyc3RMYXN0QnV0dG9uczpbe3R5cGU6Ul99XSxwYWdlOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGQxLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTphMX0se3R5cGU6T2J9LHt0eXBlOnZvaWQgMH1dfSkse3BhZ2U6W3t0eXBlOkVffV0scGFnZUluZGV4Olt7dHlwZTpSX31dLGxlbmd0aDpbe3R5cGU6Ul99XSxwYWdlU2l6ZTpbe3R5cGU6Ul99XSxwYWdlU2l6ZU9wdGlvbnM6W3t0eXBlOlJffV0saGlkZVBhZ2VTaXplOlt7dHlwZTpSX31dLHNob3dGaXJzdExhc3RCdXR0b25zOlt7dHlwZTpSX31dLGNvbG9yOlt7dHlwZTpSX31dfSk7Y2xhc3MgcDEgZXh0ZW5kcyBkMXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pLG4mJm51bGwhPW4uZm9ybUZpZWxkQXBwZWFyYW5jZSYmKHRoaXMuX2Zvcm1GaWVsZEFwcGVhcmFuY2U9bi5mb3JtRmllbGRBcHBlYXJhbmNlKX19cDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHAxKShmdShhMSksZnUoT2IpLGZ1KGwxLDgpKX0scDEuybVjbXA9c28oe3R5cGU6cDEsc2VsZWN0b3JzOltbIm1hdC1wYWdpbmF0b3IiXV0saG9zdEF0dHJzOlsicm9sZSIsImdyb3VwIiwxLCJtYXQtcGFnaW5hdG9yIl0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxleHBvcnRBczpbIm1hdFBhZ2luYXRvciJdLGZlYXR1cmVzOltRcF0sZGVjbHM6MTQsdmFyczoxNCxjb25zdHM6W1sxLCJtYXQtcGFnaW5hdG9yLW91dGVyLWNvbnRhaW5lciJdLFsxLCJtYXQtcGFnaW5hdG9yLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSIsNCwibmdJZiJdLFsxLCJtYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnMiXSxbMSwibWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWZpcnN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLXByZXZpb3VzIiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsidmlld0JveCIsIjAgMCAyNCAyNCIsImZvY3VzYWJsZSIsImZhbHNlIiwxLCJtYXQtcGFnaW5hdG9yLWljb24iXSxbImQiLCJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLCJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1sYXN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1sYWJlbCJdLFsiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QiLDMsImFwcGVhcmFuY2UiLCJjb2xvciIsNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS12YWx1ZSIsNCwibmdJZiJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QiLDMsImFwcGVhcmFuY2UiLCJjb2xvciJdLFszLCJ2YWx1ZSIsImRpc2FibGVkIiwiYXJpYS1sYWJlbCIsInNlbGVjdGlvbkNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl0sWzEsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXZhbHVlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tZmlyc3QiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJkIiwiTTE4LjQxIDE2LjU5TDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2eiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWxhc3QiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJkIiwiTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yeiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJkaXYiLDEpLEhtKDIsbjEsNSwzLCJkaXYiLDIpLF91KDMsImRpdiIsMyksX3UoNCwiZGl2Iiw0KSxQZig1KSxDdSgpLEhtKDYsbzEsMyw1LCJidXR0b24iLDUpLF91KDcsImJ1dHRvbiIsNiksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnByZXZpb3VzUGFnZSgpfSkpLG9hKCksX3UoOCwic3ZnIiw3KSxNdSg5LCJwYXRoIiw4KSxDdSgpLEN1KCksYWEoKSxfdSgxMCwiYnV0dG9uIiw5KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ubmV4dFBhZ2UoKX0pKSxvYSgpLF91KDExLCJzdmciLDcpLE11KDEyLCJwYXRoIiwxMCksQ3UoKSxDdSgpLEhtKDEzLGkxLDMsNSwiYnV0dG9uIiwxMSksQ3UoKSxDdSgpLEN1KCkpLDImZSYmKERjKDIpLGh1KCJuZ0lmIiwhbi5oaWRlUGFnZVNpemUpLERjKDMpLGtmKCIgIixuLl9pbnRsLmdldFJhbmdlTGFiZWwobi5wYWdlSW5kZXgsbi5wYWdlU2l6ZSxuLmxlbmd0aCksIiAiKSxEYygxKSxodSgibmdJZiIsbi5zaG93Rmlyc3RMYXN0QnV0dG9ucyksRGMoMSksaHUoIm1hdFRvb2x0aXAiLG4uX2ludGwucHJldmlvdXNQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLG4uX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsbi5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkseW0oImFyaWEtbGFiZWwiLG4uX2ludGwucHJldmlvdXNQYWdlTGFiZWwpLERjKDMpLGh1KCJtYXRUb29sdGlwIixuLl9pbnRsLm5leHRQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLG4uX25leHRCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIixuLl9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpLHltKCJhcmlhLWxhYmVsIixuLl9pbnRsLm5leHRQYWdlTGFiZWwpLERjKDMpLGh1KCJuZ0lmIixuLnNob3dGaXJzdExhc3RCdXR0b25zKSl9LGRpcmVjdGl2ZXM6W1B2LFdMLFgwLERqLE5ZLHh2LHpMXSxzdHlsZXM6WyIubWF0LXBhZ2luYXRvcntkaXNwbGF5OmJsb2NrfS5tYXQtcGFnaW5hdG9yLW91dGVyLWNvbnRhaW5lcntkaXNwbGF5OmZsZXh9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6MCA4cHg7ZmxleC13cmFwOndyYXAtcmV2ZXJzZTt3aWR0aDoxMDAlfS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7bWFyZ2luLXJpZ2h0OjhweH1bZGlyPXJ0bF0gLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXple21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjhweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtbGFiZWx7bWFyZ2luOjAgNHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3R7bWFyZ2luOjZweCA0cHggMCA0cHg7d2lkdGg6NTZweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZXt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxse3dpZHRoOjY0cHh9Lm1hdC1wYWdpbmF0b3ItcmFuZ2UtbGFiZWx7bWFyZ2luOjAgMzJweCAwIDI0cHh9Lm1hdC1wYWdpbmF0b3ItcmFuZ2UtYWN0aW9uc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtcGFnaW5hdG9yLWljb257d2lkdGg6MjhweDtmaWxsOmN1cnJlbnRDb2xvcn1bZGlyPXJ0bF0gLm1hdC1wYWdpbmF0b3ItaWNvbnt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXBhZ2luYXRvci1pY29ue2ZpbGw6Q2FudmFzVGV4dH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHAxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YTF9LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2wxXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwMSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtcGFnaW5hdG9yIixleHBvcnRBczoibWF0UGFnaW5hdG9yIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXIiPlxuICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLWNvbnRhaW5lciI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiICpuZ0lmPSIhaGlkZVBhZ2VTaXplIj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVsIj5cbiAgICAgICAge3tfaW50bC5pdGVtc1BlclBhZ2VMYWJlbH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICpuZ0lmPSJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmxlbmd0aCA+IDEiXG4gICAgICAgIFthcHBlYXJhbmNlXT0iX2Zvcm1GaWVsZEFwcGVhcmFuY2UhIlxuICAgICAgICBbY29sb3JdPSJjb2xvciJcbiAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdCI+XG4gICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgW3ZhbHVlXT0icGFnZVNpemUiXG4gICAgICAgICAgW2Rpc2FibGVkXT0iZGlzYWJsZWQiXG4gICAgICAgICAgW2FyaWEtbGFiZWxdPSJfaW50bC5pdGVtc1BlclBhZ2VMYWJlbCJcbiAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT0iX2NoYW5nZVBhZ2VTaXplKCRldmVudC52YWx1ZSkiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj0ibGV0IHBhZ2VTaXplT3B0aW9uIG9mIF9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMiIFt2YWx1ZV09InBhZ2VTaXplT3B0aW9uIj5cbiAgICAgICAgICAgIHt7cGFnZVNpemVPcHRpb259fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtdmFsdWUiXG4gICAgICAgICpuZ0lmPSJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmxlbmd0aCA8PSAxIj57e3BhZ2VTaXplfX08L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcmFuZ2UtYWN0aW9ucyI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVsIj5cbiAgICAgICAge3tfaW50bC5nZXRSYW5nZUxhYmVsKHBhZ2VJbmRleCwgcGFnZVNpemUsIGxlbmd0aCl9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1maXJzdCJcbiAgICAgICAgICAgICAgKGNsaWNrKT0iZmlyc3RQYWdlKCkiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5maXJzdFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPSJfaW50bC5maXJzdFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iXCdhYm92ZVwnIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgKm5nSWY9InNob3dGaXJzdExhc3RCdXR0b25zIj5cbiAgICAgICAgPHN2ZyBjbGFzcz0ibWF0LXBhZ2luYXRvci1pY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZvY3VzYWJsZT0iZmFsc2UiPlxuICAgICAgICAgIDxwYXRoIGQ9Ik0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1wcmV2aW91cyJcbiAgICAgICAgICAgICAgKGNsaWNrKT0icHJldmlvdXNQYWdlKCkiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5wcmV2aW91c1BhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPSJfaW50bC5wcmV2aW91c1BhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iXCdhYm92ZVwnIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0IlxuICAgICAgICAgICAgICAoY2xpY2spPSJuZXh0UGFnZSgpIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iX2ludGwubmV4dFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPSJfaW50bC5uZXh0UGFnZUxhYmVsIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT0iX25leHRCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09IlwnYWJvdmVcJyJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0iX25leHRCdXR0b25zRGlzYWJsZWQoKSI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbGFzdCJcbiAgICAgICAgICAgICAgKGNsaWNrKT0ibGFzdFBhZ2UoKSJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09Il9pbnRsLmxhc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwubGFzdFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPSJcJ2Fib3ZlXCciXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgICpuZ0lmPSJzaG93Rmlyc3RMYXN0QnV0dG9ucyI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNNS41OSA3LjQxTDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02ek0xNiA2aDJ2MTJoLTJ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4nLGlucHV0czpbImRpc2FibGVkIl0saG9zdDp7Y2xhc3M6Im1hdC1wYWdpbmF0b3IiLHJvbGU6Imdyb3VwIn0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxlbmNhcHN1bGF0aW9uOlduLk5vbmUsc3R5bGVzOlsiLm1hdC1wYWdpbmF0b3J7ZGlzcGxheTpibG9ja30ubWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4fS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOjAgOHB4O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2U7d2lkdGg6MTAwJX0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo4cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVse21hcmdpbjowIDRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0e21hcmdpbjo2cHggNHB4IDAgNHB4O3dpZHRoOjU2cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmV7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbHt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVse21hcmdpbjowIDMycHggMCAyNHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWF0LXBhZ2luYXRvci1pY29ue3dpZHRoOjI4cHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLWljb257dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wYWdpbmF0b3ItaWNvbntmaWxsOkNhbnZhc1RleHR9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmExfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltsMV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBtMXt9bTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG0xKX0sbTEuybVtb2Q9dW8oe3R5cGU6bTF9KSxtMS7JtWluaj1Ebih7cHJvdmlkZXJzOltyMV0saW1wb3J0czpbW3J4LFlMLHpZLFEwLFdGXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG0xLFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsWUwselksUTAsV0ZdLGV4cG9ydHM6W3AxXSxkZWNsYXJhdGlvbnM6W3AxXSxwcm92aWRlcnM6W3IxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKG0xLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bcDFdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3J4LFlMLHpZLFEwLFdGXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltwMV19fSk7ZnVuY3Rpb24gdTEodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJkaXYiLDMpLER1KCJAYXJyb3dQb3NpdGlvbi5zdGFydCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMH0pKSgiQGFycm93UG9zaXRpb24uZG9uZSIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMX0pKSxNdSgxLCJkaXYiLDQpLF91KDIsImRpdiIsNSksTXUoMywiZGl2Iiw2KSxNdSg0LCJkaXYiLDcpLE11KDUsImRpdiIsOCksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO2h1KCJAYXJyb3dPcGFjaXR5Iix0Ll9nZXRBcnJvd1ZpZXdTdGF0ZSgpKSgiQGFycm93UG9zaXRpb24iLHQuX2dldEFycm93Vmlld1N0YXRlKCkpKCJAYWxsb3dDaGlsZHJlbiIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKSxEYygyKSxodSgiQGluZGljYXRvciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKSxEYygxKSxodSgiQGxlZnRQb2ludGVyIix0Ll9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkpLERjKDEpLGh1KCJAcmlnaHRQb2ludGVyIix0Ll9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGYxPW5ldyBlcigiTUFUX1NPUlRfREVGQVVMVF9PUFRJT05TIiksZzE9S0YoR0YoY2xhc3N7fSkpO2NsYXNzIGgxIGV4dGVuZHMgZzF7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kZWZhdWx0T3B0aW9ucz10LHRoaXMuc29ydGFibGVzPW5ldyBNYXAsdGhpcy5fc3RhdGVDaGFuZ2VzPW5ldyBCLHRoaXMuc3RhcnQ9ImFzYyIsdGhpcy5fZGlyZWN0aW9uPSIiLHRoaXMuc29ydENoYW5nZT1uZXcgU3l9Z2V0IGRpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXJlY3Rpb259c2V0IGRpcmVjdGlvbih0KXtpZih0JiYiYXNjIiE9PXQmJiJkZXNjIiE9PXQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgJHt0fSBpcyBub3QgYSB2YWxpZCBzb3J0IGRpcmVjdGlvbiAoJ2FzYycgb3IgJ2Rlc2MnKS5gKX0pKHQpO3RoaXMuX2RpcmVjdGlvbj10fWdldCBkaXNhYmxlQ2xlYXIoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZUNsZWFyfXNldCBkaXNhYmxlQ2xlYXIodCl7dGhpcy5fZGlzYWJsZUNsZWFyPXBIKHQpfXJlZ2lzdGVyKHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2lmKCF0LmlkKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIk1hdFNvcnRIZWFkZXIgbXVzdCBiZSBwcm92aWRlZCB3aXRoIGEgdW5pcXVlIGlkLiIpfSkoKTtpZih0aGlzLnNvcnRhYmxlcy5oYXModC5pZCkpdGhyb3coZnVuY3Rpb24gbih0KXtyZXR1cm4gRXJyb3IoYENhbm5vdCBoYXZlIHR3byBNYXRTb3J0YWJsZXMgd2l0aCB0aGUgc2FtZSBpZCAoJHt0fSkuYCl9KSh0LmlkKX10aGlzLnNvcnRhYmxlcy5zZXQodC5pZCx0KX1kZXJlZ2lzdGVyKHQpe3RoaXMuc29ydGFibGVzLmRlbGV0ZSh0LmlkKX1zb3J0KHQpe3RoaXMuYWN0aXZlIT10LmlkPyh0aGlzLmFjdGl2ZT10LmlkLHRoaXMuZGlyZWN0aW9uPXQuc3RhcnQ/dC5zdGFydDp0aGlzLnN0YXJ0KTp0aGlzLmRpcmVjdGlvbj10aGlzLmdldE5leHRTb3J0RGlyZWN0aW9uKHQpLHRoaXMuc29ydENoYW5nZS5lbWl0KHthY3RpdmU6dGhpcy5hY3RpdmUsZGlyZWN0aW9uOnRoaXMuZGlyZWN0aW9ufSl9Z2V0TmV4dFNvcnREaXJlY3Rpb24odCl7dmFyIGUsbixvO2lmKCF0KXJldHVybiIiO2NvbnN0IGk9bnVsbCE9PShuPW51bGwhPT0oZT1udWxsPT10P3ZvaWQgMDp0LmRpc2FibGVDbGVhcikmJnZvaWQgMCE9PWU/ZTp0aGlzLmRpc2FibGVDbGVhcikmJnZvaWQgMCE9PW4/bjohIShudWxsPT09KG89dGhpcy5fZGVmYXVsdE9wdGlvbnMpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmRpc2FibGVDbGVhcik7bGV0IGE9KGZ1bmN0aW9uIHIodCxlKXtsZXQgbj1bImFzYyIsImRlc2MiXTsiZGVzYyI9PXQmJm4ucmV2ZXJzZSgpO2V8fG4ucHVzaCgiIik7cmV0dXJuIG59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodC5zdGFydHx8dGhpcy5zdGFydCxpKSxzPWEuaW5kZXhPZih0aGlzLmRpcmVjdGlvbikrMTtyZXR1cm4gcz49YS5sZW5ndGgmJihzPTApLGFbc119bmdPbkluaXQoKXt0aGlzLl9tYXJrSW5pdGlhbGl6ZWQoKX1uZ09uQ2hhbmdlcygpe3RoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX19aDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGgxKShmdShmMSw4KSl9LGgxLsm1ZGlyPWhvKHt0eXBlOmgxLHNlbGVjdG9yczpbWyIiLCJtYXRTb3J0IiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXNvcnQiXSxpbnB1dHM6e2Rpc2FibGVkOlsibWF0U29ydERpc2FibGVkIiwiZGlzYWJsZWQiXSxzdGFydDpbIm1hdFNvcnRTdGFydCIsInN0YXJ0Il0sZGlyZWN0aW9uOlsibWF0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiJdLGRpc2FibGVDbGVhcjpbIm1hdFNvcnREaXNhYmxlQ2xlYXIiLCJkaXNhYmxlQ2xlYXIiXSxhY3RpdmU6WyJtYXRTb3J0QWN0aXZlIiwiYWN0aXZlIl19LG91dHB1dHM6e3NvcnRDaGFuZ2U6Im1hdFNvcnRDaGFuZ2UifSxleHBvcnRBczpbIm1hdFNvcnQiXSxmZWF0dXJlczpbUXAscW9dfSksaDEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2YxXX1dfV0saDEucHJvcERlY29yYXRvcnM9e2FjdGl2ZTpbe3R5cGU6Ul8sYXJnczpbIm1hdFNvcnRBY3RpdmUiXX1dLHN0YXJ0Olt7dHlwZTpSXyxhcmdzOlsibWF0U29ydFN0YXJ0Il19XSxkaXJlY3Rpb246W3t0eXBlOlJfLGFyZ3M6WyJtYXRTb3J0RGlyZWN0aW9uIl19XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOlJfLGFyZ3M6WyJtYXRTb3J0RGlzYWJsZUNsZWFyIl19XSxzb3J0Q2hhbmdlOlt7dHlwZTpFXyxhcmdzOlsibWF0U29ydENoYW5nZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaDEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdFNvcnRdIixleHBvcnRBczoibWF0U29ydCIsaG9zdDp7Y2xhc3M6Im1hdC1zb3J0In0saW5wdXRzOlsiZGlzYWJsZWQ6IG1hdFNvcnREaXNhYmxlZCJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltmMV19XX1dfSkse3N0YXJ0Olt7dHlwZTpSXyxhcmdzOlsibWF0U29ydFN0YXJ0Il19XSxzb3J0Q2hhbmdlOlt7dHlwZTpFXyxhcmdzOlsibWF0U29ydENoYW5nZSJdfV0sZGlyZWN0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0U29ydERpcmVjdGlvbiJdfV0sZGlzYWJsZUNsZWFyOlt7dHlwZTpSXyxhcmdzOlsibWF0U29ydERpc2FibGVDbGVhciJdfV0sYWN0aXZlOlt7dHlwZTpSXyxhcmdzOlsibWF0U29ydEFjdGl2ZSJdfV19KTtjb25zdCBiMT1CRi5FTlRFUklORysiICIrTEYuU1RBTkRBUkRfQ1VSVkUseTE9e2luZGljYXRvcjp4TygiaW5kaWNhdG9yIixba08oImFjdGl2ZS1hc2MsIGFzYyIsd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwcHgpIn0pKSxrTygiYWN0aXZlLWRlc2MsIGRlc2MiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMTBweCkifSkpLERPKCJhY3RpdmUtYXNjIDw9PiBhY3RpdmUtZGVzYyIsT08oYjEpKV0pLGxlZnRQb2ludGVyOnhPKCJsZWZ0UG9pbnRlciIsW2tPKCJhY3RpdmUtYXNjLCBhc2MiLHdPKHt0cmFuc2Zvcm06InJvdGF0ZSgtNDVkZWcpIn0pKSxrTygiYWN0aXZlLWRlc2MsIGRlc2MiLHdPKHt0cmFuc2Zvcm06InJvdGF0ZSg0NWRlZykifSkpLERPKCJhY3RpdmUtYXNjIDw9PiBhY3RpdmUtZGVzYyIsT08oYjEpKV0pLHJpZ2h0UG9pbnRlcjp4TygicmlnaHRQb2ludGVyIixba08oImFjdGl2ZS1hc2MsIGFzYyIsd08oe3RyYW5zZm9ybToicm90YXRlKDQ1ZGVnKSJ9KSksa08oImFjdGl2ZS1kZXNjLCBkZXNjIix3Tyh7dHJhbnNmb3JtOiJyb3RhdGUoLTQ1ZGVnKSJ9KSksRE8oImFjdGl2ZS1hc2MgPD0+IGFjdGl2ZS1kZXNjIixPTyhiMSkpXSksYXJyb3dPcGFjaXR5OnhPKCJhcnJvd09wYWNpdHkiLFtrTygiZGVzYy10by1hY3RpdmUsIGFzYy10by1hY3RpdmUsIGFjdGl2ZSIsd08oe29wYWNpdHk6MX0pKSxrTygiZGVzYy10by1oaW50LCBhc2MtdG8taGludCwgaGludCIsd08oe29wYWNpdHk6LjU0fSkpLGtPKCJoaW50LXRvLWRlc2MsIGFjdGl2ZS10by1kZXNjLCBkZXNjLCBoaW50LXRvLWFzYywgYWN0aXZlLXRvLWFzYywgYXNjLCB2b2lkIix3Tyh7b3BhY2l0eTowfSkpLERPKCIqID0+IGFzYywgKiA9PiBkZXNjLCAqID0+IGFjdGl2ZSwgKiA9PiBoaW50LCAqID0+IHZvaWQiLE9PKCIwbXMiKSksRE8oIiogPD0+ICoiLE9PKGIxKSldKSxhcnJvd1Bvc2l0aW9uOnhPKCJhcnJvd1Bvc2l0aW9uIixbRE8oIiogPT4gZGVzYy10by1oaW50LCAqID0+IGRlc2MtdG8tYWN0aXZlIixPTyhiMSxTTyhbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgtMjUlKSJ9KSx3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0pXSkpKSxETygiKiA9PiBoaW50LXRvLWRlc2MsICogPT4gYWN0aXZlLXRvLWRlc2MiLE9PKGIxLFNPKFt3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0pLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMjUlKSJ9KV0pKSksRE8oIiogPT4gYXNjLXRvLWhpbnQsICogPT4gYXNjLXRvLWFjdGl2ZSIsT08oYjEsU08oW3dPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMjUlKSJ9KSx3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0pXSkpKSxETygiKiA9PiBoaW50LXRvLWFzYywgKiA9PiBhY3RpdmUtdG8tYXNjIixPTyhiMSxTTyhbd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KSx3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yNSUpIn0pXSkpKSxrTygiZGVzYy10by1oaW50LCBhc2MtdG8taGludCwgaGludCwgZGVzYy10by1hY3RpdmUsIGFzYy10by1hY3RpdmUsIGFjdGl2ZSIsd08oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KSksa08oImhpbnQtdG8tZGVzYywgYWN0aXZlLXRvLWRlc2MsIGRlc2MiLHdPKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTI1JSkifSkpLGtPKCJoaW50LXRvLWFzYywgYWN0aXZlLXRvLWFzYywgYXNjIix3Tyh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDI1JSkifSkpXSksYWxsb3dDaGlsZHJlbjp4TygiYWxsb3dDaGlsZHJlbiIsW0RPKCIqIDw9PiAqIixbRU8oIkAqIixSTygpLHtvcHRpb25hbDohMH0pXSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBfMXtjb25zdHJ1Y3Rvcigpe3RoaXMuY2hhbmdlcz1uZXcgQn19XzEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF8xKX0sXzEuybVwcm92PVNuKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IF8xfSx0b2tlbjpfMSxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoXzEsW3t0eXBlOmptLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjb25zdCBDMT17cHJvdmlkZTpfMSxkZXBzOltbbmV3IEJyLG5ldyBVcixfMV1dLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gTTEodCl7cmV0dXJuIHR8fG5ldyBfMX19LHYxPUdGKGNsYXNze30pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB4MSBleHRlbmRzIHYxe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXtpZihzdXBlcigpLHRoaXMuX2ludGw9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3NvcnQ9bix0aGlzLl9jb2x1bW5EZWY9byx0aGlzLl9mb2N1c01vbml0b3I9aSx0aGlzLl9lbGVtZW50UmVmPWEsdGhpcy5fc2hvd0luZGljYXRvckhpbnQ9ITEsdGhpcy5fdmlld1N0YXRlPXt9LHRoaXMuX2Fycm93RGlyZWN0aW9uPSIiLHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITEsdGhpcy5hcnJvd1Bvc2l0aW9uPSJhZnRlciIsIW4mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiByKCl7cmV0dXJuIEVycm9yKCJNYXRTb3J0SGVhZGVyIG11c3QgYmUgcGxhY2VkIHdpdGhpbiBhIHBhcmVudCBlbGVtZW50IHdpdGggdGhlIE1hdFNvcnQgZGlyZWN0aXZlLiIpfSkoKTt0aGlzLl9oYW5kbGVTdGF0ZUNoYW5nZXMoKX1nZXQgZGlzYWJsZUNsZWFyKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVDbGVhcn1zZXQgZGlzYWJsZUNsZWFyKHQpe3RoaXMuX2Rpc2FibGVDbGVhcj1wSCh0KX1uZ09uSW5pdCgpeyF0aGlzLmlkJiZ0aGlzLl9jb2x1bW5EZWYmJih0aGlzLmlkPXRoaXMuX2NvbHVtbkRlZi5uYW1lKSx0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7dG9TdGF0ZTp0aGlzLl9pc1NvcnRlZCgpPyJhY3RpdmUiOnRoaXMuX2Fycm93RGlyZWN0aW9ufSksdGhpcy5fc29ydC5yZWdpc3Rlcih0aGlzKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPSEhdDtlIT09dGhpcy5fc2hvd0luZGljYXRvckhpbnQmJih0aGlzLl9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZShlKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdGhpcy5fc29ydC5kZXJlZ2lzdGVyKHRoaXMpLHRoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9X3NldEluZGljYXRvckhpbnRWaXNpYmxlKHQpe3RoaXMuX2lzRGlzYWJsZWQoKSYmdHx8KHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50PXQsdGhpcy5faXNTb3J0ZWQoKXx8KHRoaXMuX3VwZGF0ZUFycm93RGlyZWN0aW9uKCksdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50P3tmcm9tU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb24sdG9TdGF0ZToiaGludCJ9Ontmcm9tU3RhdGU6ImhpbnQiLHRvU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb259KSkpfV9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUodCl7dGhpcy5fdmlld1N0YXRlPXR8fHt9LHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24mJih0aGlzLl92aWV3U3RhdGU9e3RvU3RhdGU6dC50b1N0YXRlfSl9X3RvZ2dsZU9uSW50ZXJhY3Rpb24oKXt0aGlzLl9zb3J0LnNvcnQodGhpcyksImhpbnQiIT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGUmJiJhY3RpdmUiIT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGV8fCh0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSEwKX1faGFuZGxlQ2xpY2soKXt0aGlzLl9pc0Rpc2FibGVkKCl8fHRoaXMuX3NvcnQuc29ydCh0aGlzKX1faGFuZGxlS2V5ZG93bih0KXt0aGlzLl9pc0Rpc2FibGVkKCl8fHQua2V5Q29kZSE9PXNIJiZ0LmtleUNvZGUhPT1hSHx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLl90b2dnbGVPbkludGVyYWN0aW9uKCkpfV9pc1NvcnRlZCgpe3JldHVybiB0aGlzLl9zb3J0LmFjdGl2ZT09dGhpcy5pZCYmKCJhc2MiPT09dGhpcy5fc29ydC5kaXJlY3Rpb258fCJkZXNjIj09PXRoaXMuX3NvcnQuZGlyZWN0aW9uKX1fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpe3JldHVybmAke3RoaXMuX2lzU29ydGVkKCk/ImFjdGl2ZS0iOiIifSR7dGhpcy5fYXJyb3dEaXJlY3Rpb259YH1fZ2V0QXJyb3dWaWV3U3RhdGUoKXtjb25zdCB0PXRoaXMuX3ZpZXdTdGF0ZS5mcm9tU3RhdGU7cmV0dXJuKHQ/YCR7dH0tdG8tYDoiIikrdGhpcy5fdmlld1N0YXRlLnRvU3RhdGV9X3VwZGF0ZUFycm93RGlyZWN0aW9uKCl7dGhpcy5fYXJyb3dEaXJlY3Rpb249dGhpcy5faXNTb3J0ZWQoKT90aGlzLl9zb3J0LmRpcmVjdGlvbjp0aGlzLnN0YXJ0fHx0aGlzLl9zb3J0LnN0YXJ0fV9pc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuX3NvcnQuZGlzYWJsZWR8fHRoaXMuZGlzYWJsZWR9X2dldEFyaWFTb3J0QXR0cmlidXRlKCl7cmV0dXJuIHRoaXMuX2lzU29ydGVkKCk/ImFzYyI9PXRoaXMuX3NvcnQuZGlyZWN0aW9uPyJhc2NlbmRpbmciOiJkZXNjZW5kaW5nIjoibm9uZSJ9X3JlbmRlckFycm93KCl7cmV0dXJuIXRoaXMuX2lzRGlzYWJsZWQoKXx8dGhpcy5faXNTb3J0ZWQoKX1faGFuZGxlU3RhdGVDaGFuZ2VzKCl7dGhpcy5fcmVyZW5kZXJTdWJzY3JpcHRpb249cGUodGhpcy5fc29ydC5zb3J0Q2hhbmdlLHRoaXMuX3NvcnQuX3N0YXRlQ2hhbmdlcyx0aGlzLl9pbnRsLmNoYW5nZXMpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9pc1NvcnRlZCgpJiYodGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSwiaGludCIhPT10aGlzLl92aWV3U3RhdGUudG9TdGF0ZSYmImFjdGl2ZSIhPT10aGlzLl92aWV3U3RhdGUudG9TdGF0ZXx8KHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITApLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7ZnJvbVN0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9uLHRvU3RhdGU6ImFjdGl2ZSJ9KSx0aGlzLl9zaG93SW5kaWNhdG9ySGludD0hMSksIXRoaXMuX2lzU29ydGVkKCkmJnRoaXMuX3ZpZXdTdGF0ZSYmImFjdGl2ZSI9PT10aGlzLl92aWV3U3RhdGUudG9TdGF0ZSYmKHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITEsdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHtmcm9tU3RhdGU6ImFjdGl2ZSIsdG9TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbn0pKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX19eDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHgxKShmdShfMSksZnUoT2IpLGZ1KGgxLDgpLGZ1KCJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsOCksZnUoeEYpLGZ1KEtoKSl9LHgxLsm1Y21wPXNvKHt0eXBlOngxLHNlbGVjdG9yczpbWyIiLCJtYXQtc29ydC1oZWFkZXIiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtc29ydC1oZWFkZXIiXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZUNsaWNrKCl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpKCJtb3VzZWVudGVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSghMCl9KSkoIm1vdXNlbGVhdmUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX3NldEluZGljYXRvckhpbnRWaXNpYmxlKCExKX0pKSwyJmUmJih5bSgiYXJpYS1zb3J0IixuLl9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpKSxjZigibWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkIixuLl9pc0Rpc2FibGVkKCkpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGFycm93UG9zaXRpb246ImFycm93UG9zaXRpb24iLGRpc2FibGVDbGVhcjoiZGlzYWJsZUNsZWFyIixpZDpbIm1hdC1zb3J0LWhlYWRlciIsImlkIl0sc3RhcnQ6InN0YXJ0In0sZXhwb3J0QXM6WyJtYXRTb3J0SGVhZGVyIl0sZmVhdHVyZXM6W1FwXSxhdHRyczpbIm1hdC1zb3J0LWhlYWRlciIsIiJdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo0LHZhcnM6Nixjb25zdHM6W1sicm9sZSIsImJ1dHRvbiIsMSwibWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lciIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxbMSwibWF0LXNvcnQtaGVhZGVyLWNvbnRlbnQiXSxbImNsYXNzIiwibWF0LXNvcnQtaGVhZGVyLWFycm93Iiw0LCJuZ0lmIl0sWzEsIm1hdC1zb3J0LWhlYWRlci1hcnJvdyJdLFsxLCJtYXQtc29ydC1oZWFkZXItc3RlbSJdLFsxLCJtYXQtc29ydC1oZWFkZXItaW5kaWNhdG9yIl0sWzEsIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQiXSxbMSwibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHQiXSxbMSwibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihJdSgpLF91KDAsImRpdiIsMCksX3UoMSwiZGl2IiwxKSxIdSgyKSxDdSgpLEhtKDMsdTEsNiw2LCJkaXYiLDIpLEN1KCkpLDImZSYmKGNmKCJtYXQtc29ydC1oZWFkZXItc29ydGVkIixuLl9pc1NvcnRlZCgpKSgibWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSIsImJlZm9yZSI9PW4uYXJyb3dQb3NpdGlvbikseW0oInRhYmluZGV4IixuLl9pc0Rpc2FibGVkKCk/bnVsbDowKSxEYygzKSxodSgibmdJZiIsbi5fcmVuZGVyQXJyb3coKSkpfSxkaXJlY3RpdmVzOltQdl0sc3R5bGVzOlsiLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2N1cnNvcjpwb2ludGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtsZXR0ZXItc3BhY2luZzpub3JtYWw7b3V0bGluZTowfVttYXQtc29ydC1oZWFkZXJdLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVyLFttYXQtc29ydC1oZWFkZXJdLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7Ym9yZGVyLWJvdHRvbTpzb2xpZCAxcHggY3VycmVudENvbG9yfS5tYXQtc29ydC1oZWFkZXItZGlzYWJsZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zb3J0LWhlYWRlci1jb250ZW50e3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Lm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmV7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd3toZWlnaHQ6MTJweDt3aWR0aDoxMnB4O21pbi13aWR0aDoxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtvcGFjaXR5OjB9Lm1hdC1zb3J0LWhlYWRlci1hcnJvdyxbZGlyPXJ0bF0gLm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUgLm1hdC1zb3J0LWhlYWRlci1hcnJvd3ttYXJnaW46MCAwIDAgNnB4fS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgNnB4IDAgMH0ubWF0LXNvcnQtaGVhZGVyLXN0ZW17YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7aGVpZ2h0OjEwcHg7d2lkdGg6MnB4O21hcmdpbjphdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXN0ZW17d2lkdGg6MDtib3JkZXItbGVmdDpzb2xpZCAycHh9Lm1hdC1zb3J0LWhlYWRlci1pbmRpY2F0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGV7bWFyZ2luOmF1dG87aGVpZ2h0OjJweDt3aWR0aDoycHg7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0LC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjt3aWR0aDo2cHg7aGVpZ2h0OjJweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0LC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6c29saWQgNnB4O2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0e3RyYW5zZm9ybS1vcmlnaW46cmlnaHQ7bGVmdDowfS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQ7cmlnaHQ6MH1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W3kxLmluZGljYXRvcix5MS5sZWZ0UG9pbnRlcix5MS5yaWdodFBvaW50ZXIseTEuYXJyb3dPcGFjaXR5LHkxLmFycm93UG9zaXRpb24seTEuYWxsb3dDaGlsZHJlbl19LGNoYW5nZURldGVjdGlvbjowfSkseDEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfMX0se3R5cGU6T2J9LHt0eXBlOmgxLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlsiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiXX0se3R5cGU6QnJ9XX0se3R5cGU6eEZ9LHt0eXBlOktofV0seDEucHJvcERlY29yYXRvcnM9e2lkOlt7dHlwZTpSXyxhcmdzOlsibWF0LXNvcnQtaGVhZGVyIl19XSxhcnJvd1Bvc2l0aW9uOlt7dHlwZTpSX31dLHN0YXJ0Olt7dHlwZTpSX31dLGRpc2FibGVDbGVhcjpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4MSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJbbWF0LXNvcnQtaGVhZGVyXSIsZXhwb3J0QXM6Im1hdFNvcnRIZWFkZXIiLHRlbXBsYXRlOidceDNjIS0tXG4gIFdlIHNldCB0aGUgYHRhYmluZGV4YCBvbiBhbiBlbGVtZW50IGluc2lkZSB0aGUgdGFibGUgaGVhZGVyLCByYXRoZXIgdGhhbiB0aGUgaGVhZGVyIGl0c2VsZixcbiAgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBOVkRBIHdoZXJlIGhhdmluZyBhIGB0YWJpbmRleGAgb24gYSBgdGhgIGJyZWFrcyBrZXlib2FyZCBuYXZpZ2F0aW9uIGluIHRoZVxuICB0YWJsZSAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9udmFjY2Vzcy9udmRhL2lzc3Vlcy83NzE4KS4gVGhpcyBhbGxvd3MgZm9yIHRoZSBoZWFkZXIgdG8gYm90aFxuICBiZSBmb2N1c2FibGUsIGFuZCBoYXZlIHNjcmVlbiByZWFkZXJzIHJlYWQgb3V0IGl0cyBgYXJpYS1zb3J0YCBzdGF0ZS4gV2UgcHJlZmVyIHRoaXMgYXBwcm9hY2hcbiAgb3ZlciBoYXZpbmcgYSBidXR0b24gd2l0aCBhbiBgYXJpYS1sYWJlbGAgaW5zaWRlIHRoZSBoZWFkZXIsIGJlY2F1c2UgdGhlIGJ1dHRvblwncyBgYXJpYS1sYWJlbGBcbiAgd2lsbCBiZSByZWFkIG91dCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nIHRoZSB0YWJsZVwncyBjZWxsIChzZWUgIzEzMDEyKS5cblxuICBUaGUgYXBwcm9hY2ggaXMgYmFzZWQgb2ZmIG9mOiBodHRwczovL2RlcXVldW5pdmVyc2l0eS5jb20vbGlicmFyeS9hcmlhL3RhYmxlcy9zZi1zb3J0YWJsZS1ncmlkXG4tLVx4M2VcbjxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1jb250YWluZXIgbWF0LWZvY3VzLWluZGljYXRvciJcbiAgICAgW2NsYXNzLm1hdC1zb3J0LWhlYWRlci1zb3J0ZWRdPSJfaXNTb3J0ZWQoKSJcbiAgICAgW2NsYXNzLm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmVdPSJhcnJvd1Bvc2l0aW9uID09IFwnYmVmb3JlXCciXG4gICAgIFthdHRyLnRhYmluZGV4XT0iX2lzRGlzYWJsZWQoKSA/IG51bGwgOiAwIlxuICAgICByb2xlPSJidXR0b24iPlxuXG4gIFx4M2MhLS1cbiAgICBUT0RPKGNyaXNiZXRvKTogdGhpcyBkaXYgaXNuXCd0IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IHdlIGhhdmUgdG8ga2VlcCBpdCBkdWUgdG8gYSBsYXJnZVxuICAgIG51bWJlciBvZiBzY3JlZW5zaG90IGRpZmYgZmFpbHVyZXMuIEl0IHNob3VsZCBiZSByZW1vdmVkIGV2ZW50dWFsbHkuIE5vdGUgdGhhdCB0aGUgZGlmZmVyZW5jZVxuICAgIGlzblwndCB2aXNpYmxlIHdpdGggYSBzaG9ydGVyIGhlYWRlciwgYnV0IG9uY2UgaXQgYnJlYWtzIHVwIGludG8gbXVsdGlwbGUgbGluZXMsIHRoaXMgZWxlbWVudFxuICAgIGNhdXNlcyBpdCB0byBiZSBjZW50ZXItYWxpZ25lZCwgd2hlcmVhcyByZW1vdmluZyBpdCB3aWxsIGtlZXAgdGhlIHRleHQgdG8gdGhlIGxlZnQuXG4gIC0tXHgzZVxuICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItY29udGVudCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICBceDNjIS0tIERpc2FibGUgYW5pbWF0aW9ucyB3aGlsZSBhIGN1cnJlbnQgYW5pbWF0aW9uIGlzIHJ1bm5pbmcgLS1ceDNlXG4gIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1hcnJvdyJcbiAgICAgICAqbmdJZj0iX3JlbmRlckFycm93KCkiXG4gICAgICAgW0BhcnJvd09wYWNpdHldPSJfZ2V0QXJyb3dWaWV3U3RhdGUoKSJcbiAgICAgICBbQGFycm93UG9zaXRpb25dPSJfZ2V0QXJyb3dWaWV3U3RhdGUoKSJcbiAgICAgICBbQGFsbG93Q2hpbGRyZW5dPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIlxuICAgICAgIChAYXJyb3dQb3NpdGlvbi5zdGFydCk9Il9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uID0gdHJ1ZSJcbiAgICAgICAoQGFycm93UG9zaXRpb24uZG9uZSk9Il9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uID0gZmFsc2UiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1zdGVtIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItaW5kaWNhdG9yIiBbQGluZGljYXRvcl09Il9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkiPlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCIgW0BsZWZ0UG9pbnRlcl09Il9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHQiIFtAcmlnaHRQb2ludGVyXT0iX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGUiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxob3N0OntjbGFzczoibWF0LXNvcnQtaGVhZGVyIiwiKGNsaWNrKSI6Il9oYW5kbGVDbGljaygpIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSIsIihtb3VzZWVudGVyKSI6Il9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSh0cnVlKSIsIihtb3VzZWxlYXZlKSI6Il9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZShmYWxzZSkiLCJbYXR0ci5hcmlhLXNvcnRdIjoiX2dldEFyaWFTb3J0QXR0cmlidXRlKCkiLCJbY2xhc3MubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkXSI6Il9pc0Rpc2FibGVkKCkifSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxpbnB1dHM6WyJkaXNhYmxlZCJdLGFuaW1hdGlvbnM6W3kxLmluZGljYXRvcix5MS5sZWZ0UG9pbnRlcix5MS5yaWdodFBvaW50ZXIseTEuYXJyb3dPcGFjaXR5LHkxLmFycm93UG9zaXRpb24seTEuYWxsb3dDaGlsZHJlbl0sc3R5bGVzOlsiLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2N1cnNvcjpwb2ludGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtsZXR0ZXItc3BhY2luZzpub3JtYWw7b3V0bGluZTowfVttYXQtc29ydC1oZWFkZXJdLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVyLFttYXQtc29ydC1oZWFkZXJdLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7Ym9yZGVyLWJvdHRvbTpzb2xpZCAxcHggY3VycmVudENvbG9yfS5tYXQtc29ydC1oZWFkZXItZGlzYWJsZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zb3J0LWhlYWRlci1jb250ZW50e3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Lm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmV7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd3toZWlnaHQ6MTJweDt3aWR0aDoxMnB4O21pbi13aWR0aDoxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtvcGFjaXR5OjB9Lm1hdC1zb3J0LWhlYWRlci1hcnJvdyxbZGlyPXJ0bF0gLm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUgLm1hdC1zb3J0LWhlYWRlci1hcnJvd3ttYXJnaW46MCAwIDAgNnB4fS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgNnB4IDAgMH0ubWF0LXNvcnQtaGVhZGVyLXN0ZW17YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7aGVpZ2h0OjEwcHg7d2lkdGg6MnB4O21hcmdpbjphdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXN0ZW17d2lkdGg6MDtib3JkZXItbGVmdDpzb2xpZCAycHh9Lm1hdC1zb3J0LWhlYWRlci1pbmRpY2F0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGV7bWFyZ2luOmF1dG87aGVpZ2h0OjJweDt3aWR0aDoycHg7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0LC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjt3aWR0aDo2cHg7aGVpZ2h0OjJweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0LC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6c29saWQgNnB4O2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0e3RyYW5zZm9ybS1vcmlnaW46cmlnaHQ7bGVmdDowfS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQ7cmlnaHQ6MH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6XzF9LHt0eXBlOk9ifSx7dHlwZTpoMSxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbIk1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIl19LHt0eXBlOkJyfV19LHt0eXBlOnhGfSx7dHlwZTpLaH1dfSkse2Fycm93UG9zaXRpb246W3t0eXBlOlJffV0sZGlzYWJsZUNsZWFyOlt7dHlwZTpSX31dLGlkOlt7dHlwZTpSXyxhcmdzOlsibWF0LXNvcnQtaGVhZGVyIl19XSxzdGFydDpbe3R5cGU6Ul99XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTzF7fU8xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPMSl9LE8xLsm1bW9kPXVvKHt0eXBlOk8xfSksTzEuybVpbmo9RG4oe3Byb3ZpZGVyczpbQzFdLGltcG9ydHM6W1tyeCxXRl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPMSxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LFdGXSxleHBvcnRzOltoMSx4MV0sZGVjbGFyYXRpb25zOltoMSx4MV0scHJvdmlkZXJzOltDMV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhPMSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2gxLHgxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltyeCxXRl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5baDEseDFdfX0pO2NvbnN0IFAxPVtbWyJjYXB0aW9uIl1dLFtbImNvbGdyb3VwIl0sWyJjb2wiXV1dO2Z1bmN0aW9uIHcxKHQsZSl7aWYoMSZ0JiYoX3UoMCwidGgiLDMpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO2xmKCJ0ZXh0LWFsaWduIix0Lmp1c3RpZnkpLERjKDEpLGtmKCIgIix0LmhlYWRlclRleHQsIiAiKX19ZnVuY3Rpb24gazEodCxlKXtpZigxJnQmJihfdSgwLCJ0ZCIsNCksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoKTtsZigidGV4dC1hbGlnbiIsbi5qdXN0aWZ5KSxEYygxKSxrZigiICIsbi5kYXRhQWNjZXNzb3IodCxuLm5hbWUpLCIgIil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBTMSh0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX3N0aWNreT0hMSx0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPSExfWdldCBzdGlja3koKXtyZXR1cm4gdGhpcy5fc3RpY2t5fXNldCBzdGlja3kodCl7Y29uc3QgZT10aGlzLl9zdGlja3k7dGhpcy5fc3RpY2t5PXBIKHQpLHRoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ZSE9PXRoaXMuX3N0aWNreX1oYXNTdGlja3lDaGFuZ2VkKCl7Y29uc3QgdD10aGlzLl9oYXNTdGlja3lDaGFuZ2VkO3JldHVybiB0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPSExLHR9cmVzZXRTdGlja3lDaGFuZ2VkKCl7dGhpcy5faGFzU3RpY2t5Q2hhbmdlZD0hMX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBEMT1uZXcgZXIoIkNES19UQUJMRSIpLFIxPW5ldyBlcigidGV4dC1jb2x1bW4tb3B0aW9ucyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgRTF7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZT10fX1FMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RTEpKGZ1KEViKSl9LEUxLsm1ZGlyPWhvKHt0eXBlOkUxLHNlbGVjdG9yczpbWyIiLCJjZGtDZWxsRGVmIiwiIl1dfSksRTEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFYn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRTEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NlbGxEZWZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifV19KSxudWxsKTtjbGFzcyBBMXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlPXR9fUExLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBMSkoZnUoRWIpKX0sQTEuybVkaXI9aG8oe3R5cGU6QTEsc2VsZWN0b3JzOltbIiIsImNka0hlYWRlckNlbGxEZWYiLCIiXV19KSxBMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrSGVhZGVyQ2VsbERlZl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9XX0pLG51bGwpO2NsYXNzIFQxe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19VDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFQxKShmdShFYikpfSxUMS7JtWRpcj1obyh7dHlwZTpUMSxzZWxlY3RvcnM6W1siIiwiY2RrRm9vdGVyQ2VsbERlZiIsIiJdXX0pLFQxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFQxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtGb290ZXJDZWxsRGVmXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn1dfSksbnVsbCk7Y29uc3QgTjE9UzEoY2xhc3N7fSk7Y2xhc3MgejEgZXh0ZW5kcyBOMXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX3RhYmxlPXQsdGhpcy5fc3RpY2t5RW5kPSExfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fc2V0TmFtZUlucHV0KHQpfWdldCBzdGlja3lFbmQoKXtyZXR1cm4gdGhpcy5fc3RpY2t5RW5kfXNldCBzdGlja3lFbmQodCl7Y29uc3QgZT10aGlzLl9zdGlja3lFbmQ7dGhpcy5fc3RpY2t5RW5kPXBIKHQpLHRoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ZSE9PXRoaXMuX3N0aWNreUVuZH1fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCl7dGhpcy5fY29sdW1uQ3NzQ2xhc3NOYW1lPVtgY2RrLWNvbHVtbi0ke3RoaXMuY3NzQ2xhc3NGcmllbmRseU5hbWV9YF19X3NldE5hbWVJbnB1dCh0KXt0JiYodGhpcy5fbmFtZT10LHRoaXMuY3NzQ2xhc3NGcmllbmRseU5hbWU9dC5yZXBsYWNlKC9bXmEtejAtOV8tXS9naSwiLSIpLHRoaXMuX3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpKX19ejEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHoxKShmdShEMSw4KSl9LHoxLsm1ZGlyPWhvKHt0eXBlOnoxLHNlbGVjdG9yczpbWyIiLCJjZGtDb2x1bW5EZWYiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoVXkobyxFMSw1KSxVeShvLEExLDUpLFV5KG8sVDEsNSkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uY2VsbD10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5oZWFkZXJDZWxsPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLmZvb3RlckNlbGw9dC5maXJzdCl9fSxpbnB1dHM6e3N0aWNreToic3RpY2t5IixuYW1lOlsiY2RrQ29sdW1uRGVmIiwibmFtZSJdLHN0aWNreUVuZDoic3RpY2t5RW5kIn0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOnoxfV0pLFFwXX0pLHoxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0QxXX0se3R5cGU6QnJ9XX1dLHoxLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29sdW1uRGVmIl19XSxzdGlja3lFbmQ6W3t0eXBlOlJfLGFyZ3M6WyJzdGlja3lFbmQiXX1dLGNlbGw6W3t0eXBlOmlyLGFyZ3M6W0UxXX1dLGhlYWRlckNlbGw6W3t0eXBlOmlyLGFyZ3M6W0ExXX1dLGZvb3RlckNlbGw6W3t0eXBlOmlyLGFyZ3M6W1QxXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHoxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtDb2x1bW5EZWZdIixpbnB1dHM6WyJzdGlja3kiXSxwcm92aWRlcnM6W3twcm92aWRlOiJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsdXNlRXhpc3Rpbmc6ejF9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltEMV19LHt0eXBlOkJyfV19XX0pLHtuYW1lOlt7dHlwZTpSXyxhcmdzOlsiY2RrQ29sdW1uRGVmIl19XSxzdGlja3lFbmQ6W3t0eXBlOlJfLGFyZ3M6WyJzdGlja3lFbmQiXX1dLGNlbGw6W3t0eXBlOmlyLGFyZ3M6W0UxXX1dLGhlYWRlckNlbGw6W3t0eXBlOmlyLGFyZ3M6W0ExXX1dLGZvb3RlckNlbGw6W3t0eXBlOmlyLGFyZ3M6W1QxXX1dfSk7Y2xhc3MgSTF7Y29uc3RydWN0b3IodCxlKXtjb25zdCBuPWUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7Zm9yKGNvbnN0IGUgb2YgdC5fY29sdW1uQ3NzQ2xhc3NOYW1lKW4uYWRkKGUpfX1jbGFzcyBIMSBleHRlbmRzIEkxe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKX19SDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEgxKShmdSh6MSksZnUoS2gpKX0sSDEuybVkaXI9aG8oe3R5cGU6SDEsc2VsZWN0b3JzOltbImNkay1oZWFkZXItY2VsbCJdLFsidGgiLCJjZGstaGVhZGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwiY2RrLWhlYWRlci1jZWxsIl0sZmVhdHVyZXM6W1FwXX0pLEgxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ejF9LHt0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJjZGstaGVhZGVyLWNlbGwsIHRoW2Nkay1oZWFkZXItY2VsbF0iLGhvc3Q6e2NsYXNzOiJjZGstaGVhZGVyLWNlbGwiLHJvbGU6ImNvbHVtbmhlYWRlciJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ejF9LHt0eXBlOktofV19KSxudWxsKTtjbGFzcyBGMSBleHRlbmRzIEkxe2NvbnN0cnVjdG9yKHQsZSl7dmFyIG47aWYoc3VwZXIodCxlKSwxPT09KG51bGw9PT0obj10Ll90YWJsZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlVHlwZSkpe2NvbnN0IG49dC5fdGFibGUuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoInJvbGUiKTtlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwiZ3JpZCI9PT1ufHwidHJlZWdyaWQiPT09bj8iZ3JpZGNlbGwiOiJjZWxsIil9fX1GMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RjEpKGZ1KHoxKSxmdShLaCkpfSxGMS7JtWRpcj1obyh7dHlwZTpGMSxzZWxlY3RvcnM6W1siY2RrLWZvb3Rlci1jZWxsIl0sWyJ0ZCIsImNkay1mb290ZXItY2VsbCIsIiJdXSxob3N0QXR0cnM6WzEsImNkay1mb290ZXItY2VsbCJdLGZlYXR1cmVzOltRcF19KSxGMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnoxfSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRjEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWZvb3Rlci1jZWxsLCB0ZFtjZGstZm9vdGVyLWNlbGxdIixob3N0OntjbGFzczoiY2RrLWZvb3Rlci1jZWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp6MX0se3R5cGU6S2h9XX0pLG51bGwpO2NsYXNzIEwxIGV4dGVuZHMgSTF7Y29uc3RydWN0b3IodCxlKXt2YXIgbjtpZihzdXBlcih0LGUpLDE9PT0obnVsbD09PShuPXQuX3RhYmxlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVUeXBlKSl7Y29uc3Qgbj10Ll90YWJsZS5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgicm9sZSIpO2UubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJncmlkIj09PW58fCJ0cmVlZ3JpZCI9PT1uPyJncmlkY2VsbCI6ImNlbGwiKX19fUwxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMMSkoZnUoejEpLGZ1KEtoKSl9LEwxLsm1ZGlyPWhvKHt0eXBlOkwxLHNlbGVjdG9yczpbWyJjZGstY2VsbCJdLFsidGQiLCJjZGstY2VsbCIsIiJdXSxob3N0QXR0cnM6WzEsImNkay1jZWxsIl0sZmVhdHVyZXM6W1FwXX0pLEwxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ejF9LHt0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihMMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJjZGstY2VsbCwgdGRbY2RrLWNlbGxdIixob3N0OntjbGFzczoiY2RrLWNlbGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnoxfSx7dHlwZTpLaH1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBCMXtjb25zdHJ1Y3Rvcigpe3RoaXMudGFza3M9W10sdGhpcy5lbmRUYXNrcz1bXX19Y29uc3QgVjE9bmV3IGVyKCJfQ09BTEVTQ0VEX1NUWUxFX1NDSEVEVUxFUiIpO2NsYXNzIFUxe2NvbnN0cnVjdG9yKHQpe3RoaXMuX25nWm9uZT10LHRoaXMuX2N1cnJlbnRTY2hlZHVsZT1udWxsLHRoaXMuX2Rlc3Ryb3llZD1uZXcgQn1zY2hlZHVsZSh0KXt0aGlzLl9jcmVhdGVTY2hlZHVsZUlmTmVlZGVkKCksdGhpcy5fY3VycmVudFNjaGVkdWxlLnRhc2tzLnB1c2godCl9c2NoZWR1bGVFbmQodCl7dGhpcy5fY3JlYXRlU2NoZWR1bGVJZk5lZWRlZCgpLHRoaXMuX2N1cnJlbnRTY2hlZHVsZS5lbmRUYXNrcy5wdXNoKHQpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fY3JlYXRlU2NoZWR1bGVJZk5lZWRlZCgpe3RoaXMuX2N1cnJlbnRTY2hlZHVsZXx8KHRoaXMuX2N1cnJlbnRTY2hlZHVsZT1uZXcgQjEsdGhpcy5fZ2V0U2NoZWR1bGVPYnNlcnZhYmxlKCkucGlwZShVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57Zm9yKDt0aGlzLl9jdXJyZW50U2NoZWR1bGUudGFza3MubGVuZ3RofHx0aGlzLl9jdXJyZW50U2NoZWR1bGUuZW5kVGFza3MubGVuZ3RoOyl7Y29uc3QgdD10aGlzLl9jdXJyZW50U2NoZWR1bGU7dGhpcy5fY3VycmVudFNjaGVkdWxlPW5ldyBCMTtmb3IoY29uc3QgZSBvZiB0LnRhc2tzKWUoKTtmb3IoY29uc3QgZSBvZiB0LmVuZFRhc2tzKWUoKX10aGlzLl9jdXJyZW50U2NoZWR1bGU9bnVsbH0pKSl9X2dldFNjaGVkdWxlT2JzZXJ2YWJsZSgpe3JldHVybiB0aGlzLl9uZ1pvbmUuaXNTdGFibGU/UHQoUHJvbWlzZS5yZXNvbHZlKHZvaWQgMCkpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHZlKDEpKX19VTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFUxKShUcihtQykpfSxVMS7JtXByb3Y9U24oe3Rva2VuOlUxLGZhY3Rvcnk6VTEuybVmYWN9KSxVMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm1DfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVMSxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bUN9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgajE9IjxuZy1jb250YWluZXIgY2RrQ2VsbE91dGxldD48L25nLWNvbnRhaW5lcj4iO2NsYXNzIFcxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50ZW1wbGF0ZT10LHRoaXMuX2RpZmZlcnM9ZX1uZ09uQ2hhbmdlcyh0KXtpZighdGhpcy5fY29sdW1uc0RpZmZlcil7Y29uc3QgZT10LmNvbHVtbnMmJnQuY29sdW1ucy5jdXJyZW50VmFsdWV8fFtdO3RoaXMuX2NvbHVtbnNEaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKGUpLmNyZWF0ZSgpLHRoaXMuX2NvbHVtbnNEaWZmZXIuZGlmZihlKX19Z2V0Q29sdW1uc0RpZmYoKXtyZXR1cm4gdGhpcy5fY29sdW1uc0RpZmZlci5kaWZmKHRoaXMuY29sdW1ucyl9ZXh0cmFjdENlbGxUZW1wbGF0ZSh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFkxP3QuaGVhZGVyQ2VsbC50ZW1wbGF0ZTp0aGlzIGluc3RhbmNlb2YgWjE/dC5mb290ZXJDZWxsLnRlbXBsYXRlOnQuY2VsbC50ZW1wbGF0ZX19VzEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFcxKShmdShFYiksZnUoaGIpKX0sVzEuybVkaXI9aG8oe3R5cGU6VzEsZmVhdHVyZXM6W3FvXX0pLFcxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9LHt0eXBlOmhifV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXMSxbe3R5cGU6a199XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9LHt0eXBlOmhifV19KSxudWxsKTtjb25zdCBHMT1TMShjbGFzcyBleHRlbmRzIFcxe30pO2NsYXNzIFkxIGV4dGVuZHMgRzF7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSksdGhpcy5fdGFibGU9bn1uZ09uQ2hhbmdlcyh0KXtzdXBlci5uZ09uQ2hhbmdlcyh0KX19WTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFkxKShmdShFYiksZnUoaGIpLGZ1KEQxLDgpKX0sWTEuybVkaXI9aG8oe3R5cGU6WTEsc2VsZWN0b3JzOltbIiIsImNka0hlYWRlclJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJjZGtIZWFkZXJSb3dEZWYiLCJjb2x1bW5zIl0sc3RpY2t5OlsiY2RrSGVhZGVyUm93RGVmU3RpY2t5Iiwic3RpY2t5Il19LGZlYXR1cmVzOltRcCxxb119KSxZMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifSx7dHlwZTpoYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0QxXX0se3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWTEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0hlYWRlclJvd0RlZl0iLGlucHV0czpbImNvbHVtbnM6IGNka0hlYWRlclJvd0RlZiIsInN0aWNreTogY2RrSGVhZGVyUm93RGVmU3RpY2t5Il19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltEMV19LHt0eXBlOkJyfV19XX0pLG51bGwpO2NvbnN0IHExPVMxKGNsYXNzIGV4dGVuZHMgVzF7fSk7Y2xhc3MgWjEgZXh0ZW5kcyBxMXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLl90YWJsZT1ufW5nT25DaGFuZ2VzKHQpe3N1cGVyLm5nT25DaGFuZ2VzKHQpfX1aMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WjEpKGZ1KEViKSxmdShoYiksZnUoRDEsOCkpfSxaMS7JtWRpcj1obyh7dHlwZTpaMSxzZWxlY3RvcnM6W1siIiwiY2RrRm9vdGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbImNka0Zvb3RlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJjZGtGb290ZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W1FwLHFvXX0pLFoxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9LHt0eXBlOmhifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbRDFdfSx7dHlwZTpCcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihaMSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbY2RrRm9vdGVyUm93RGVmXSIsaW5wdXRzOlsiY29sdW1uczogY2RrRm9vdGVyUm93RGVmIiwic3RpY2t5OiBjZGtGb290ZXJSb3dEZWZTdGlja3kiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVifSx7dHlwZTpoYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0QxXX0se3R5cGU6QnJ9XX1dfSksbnVsbCk7Y2xhc3MgWDEgZXh0ZW5kcyBXMXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLl90YWJsZT1ufX1YMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WDEpKGZ1KEViKSxmdShoYiksZnUoRDEsOCkpfSxYMS7JtWRpcj1obyh7dHlwZTpYMSxzZWxlY3RvcnM6W1siIiwiY2RrUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbImNka1Jvd0RlZkNvbHVtbnMiLCJjb2x1bW5zIl0sd2hlbjpbImNka1Jvd0RlZldoZW4iLCJ3aGVuIl19LGZlYXR1cmVzOltRcF19KSxYMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkVifSx7dHlwZTpoYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0QxXX0se3R5cGU6QnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWDEsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1Jvd0RlZl0iLGlucHV0czpbImNvbHVtbnM6IGNka1Jvd0RlZkNvbHVtbnMiLCJ3aGVuOiBjZGtSb3dEZWZXaGVuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpFYn0se3R5cGU6aGJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltEMV19LHt0eXBlOkJyfV19XX0pLG51bGwpO2NsYXNzIEsxe2NvbnN0cnVjdG9yKHQpe3RoaXMuX3ZpZXdDb250YWluZXI9dCxLMS5tb3N0UmVjZW50Q2VsbE91dGxldD10aGlzfW5nT25EZXN0cm95KCl7SzEubW9zdFJlY2VudENlbGxPdXRsZXQ9PT10aGlzJiYoSzEubW9zdFJlY2VudENlbGxPdXRsZXQ9bnVsbCl9fUsxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLMSkoZnUoRmIpKX0sSzEuybVkaXI9aG8oe3R5cGU6SzEsc2VsZWN0b3JzOltbIiIsImNka0NlbGxPdXRsZXQiLCIiXV19KSxLMS5tb3N0UmVjZW50Q2VsbE91dGxldD1udWxsLEsxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEsxLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjZGtDZWxsT3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn1dfSksbnVsbCk7Y2xhc3MgSjF7fUoxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKMSl9LEoxLsm1Y21wPXNvKHt0eXBlOkoxLHNlbGVjdG9yczpbWyJjZGstaGVhZGVyLXJvdyJdLFsidHIiLCJjZGstaGVhZGVyLXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJjZGstaGVhZGVyLXJvdyJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJk91KDAsMCl9LGRpcmVjdGl2ZXM6W0sxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEoxLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNkay1oZWFkZXItcm93LCB0cltjZGstaGVhZGVyLXJvd10iLHRlbXBsYXRlOmoxLGhvc3Q6e2NsYXNzOiJjZGstaGVhZGVyLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOlVuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lfV19XSxudWxsLG51bGwpO2NsYXNzIFExe31RMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UTEpfSxRMS7JtWNtcD1zbyh7dHlwZTpRMSxzZWxlY3RvcnM6W1siY2RrLWZvb3Rlci1yb3ciXSxbInRyIiwiY2RrLWZvb3Rlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwiY2RrLWZvb3Rlci1yb3ciXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZPdSgwLDApfSxkaXJlY3RpdmVzOltLMV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRMSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjZGstZm9vdGVyLXJvdywgdHJbY2RrLWZvb3Rlci1yb3ddIix0ZW1wbGF0ZTpqMSxob3N0OntjbGFzczoiY2RrLWZvb3Rlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZX1dfV0sbnVsbCxudWxsKTtjbGFzcyAkMXt9JDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCQxKX0sJDEuybVjbXA9c28oe3R5cGU6JDEsc2VsZWN0b3JzOltbImNkay1yb3ciXSxbInRyIiwiY2RrLXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJjZGstcm93Il0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmT3UoMCwwKX0sZGlyZWN0aXZlczpbSzFdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJDEsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXJvdywgdHJbY2RrLXJvd10iLHRlbXBsYXRlOmoxLGhvc3Q6e2NsYXNzOiJjZGstcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246VW4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOlduLk5vbmV9XX1dLG51bGwsbnVsbCk7Y2xhc3MgdDN7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZVJlZj10fX10My7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dDMpKGZ1KEViKSl9LHQzLsm1ZGlyPWhvKHt0eXBlOnQzLHNlbGVjdG9yczpbWyJuZy10ZW1wbGF0ZSIsImNka05vRGF0YVJvdyIsIiJdXX0pLHQzLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWJ9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHQzLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im5nLXRlbXBsYXRlW2Nka05vRGF0YVJvd10ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RWJ9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZTM9WyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXTtjbGFzcyBuM3tjb25zdHJ1Y3Rvcih0LGUsbixvLGk9ITAsYT0hMCxyKXt0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZT10LHRoaXMuX3N0aWNrQ2VsbENzcz1lLHRoaXMuZGlyZWN0aW9uPW4sdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXI9byx0aGlzLl9pc0Jyb3dzZXI9aSx0aGlzLl9uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50PWEsdGhpcy5fcG9zaXRpb25MaXN0ZW5lcj1yLHRoaXMuX2NhY2hlZENlbGxXaWR0aHM9W10sdGhpcy5fYm9yZGVyQ2VsbENzcz17dG9wOmAke2V9LWJvcmRlci1lbGVtLXRvcGAsYm90dG9tOmAke2V9LWJvcmRlci1lbGVtLWJvdHRvbWAsbGVmdDpgJHtlfS1ib3JkZXItZWxlbS1sZWZ0YCxyaWdodDpgJHtlfS1ib3JkZXItZWxlbS1yaWdodGB9fWNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxlKXtjb25zdCBuPVtdO2Zvcihjb25zdCBlIG9mIHQpaWYoZS5ub2RlVHlwZT09PWUuRUxFTUVOVF9OT0RFKXtuLnB1c2goZSk7Zm9yKGxldCB0PTA7dDxlLmNoaWxkcmVuLmxlbmd0aDt0Kyspbi5wdXNoKGUuY2hpbGRyZW5bdF0pfXRoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgoKT0+e2Zvcihjb25zdCB0IG9mIG4pdGhpcy5fcmVtb3ZlU3RpY2t5U3R5bGUodCxlKX0pKX11cGRhdGVTdGlja3lDb2x1bW5zKHQsZSxuLG89ITApe2lmKCF0Lmxlbmd0aHx8IXRoaXMuX2lzQnJvd3Nlcnx8IWUuc29tZSgodD0+dCkpJiYhbi5zb21lKCh0PT50KSkpcmV0dXJuIHZvaWQodGhpcy5fcG9zaXRpb25MaXN0ZW5lciYmKHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5Q29sdW1uc1VwZGF0ZWQoe3NpemVzOltdfSksdGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lFbmRDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6W119KSkpO2NvbnN0IGk9dFswXSxhPWkuY2hpbGRyZW4ubGVuZ3RoLHI9dGhpcy5fZ2V0Q2VsbFdpZHRocyhpLG8pLHM9dGhpcy5fZ2V0U3RpY2t5U3RhcnRDb2x1bW5Qb3NpdGlvbnMocixlKSxsPXRoaXMuX2dldFN0aWNreUVuZENvbHVtblBvc2l0aW9ucyhyLG4pLGM9ZS5sYXN0SW5kZXhPZighMCksZD1uLmluZGV4T2YoITApO3RoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgoKT0+e2NvbnN0IG89InJ0bCI9PT10aGlzLmRpcmVjdGlvbixpPW8/InJpZ2h0IjoibGVmdCIscD1vPyJsZWZ0IjoicmlnaHQiO2Zvcihjb25zdCBvIG9mIHQpZm9yKGxldCB0PTA7dDxhO3QrKyl7Y29uc3QgYT1vLmNoaWxkcmVuW3RdO2VbdF0mJnRoaXMuX2FkZFN0aWNreVN0eWxlKGEsaSxzW3RdLHQ9PT1jKSxuW3RdJiZ0aGlzLl9hZGRTdGlja3lTdHlsZShhLHAsbFt0XSx0PT09ZCl9dGhpcy5fcG9zaXRpb25MaXN0ZW5lciYmKHRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIuc3RpY2t5Q29sdW1uc1VwZGF0ZWQoe3NpemVzOi0xPT09Yz9bXTpyLnNsaWNlKDAsYysxKS5tYXAoKCh0LG4pPT5lW25dP3Q6bnVsbCkpfSksdGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lFbmRDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6LTE9PT1kP1tdOnIuc2xpY2UoZCkubWFwKCgodCxlKT0+bltlK2RdP3Q6bnVsbCkpLnJldmVyc2UoKX0pKX0pKX1zdGlja1Jvd3ModCxlLG4pe2lmKCF0aGlzLl9pc0Jyb3dzZXIpcmV0dXJuO2NvbnN0IG89ImJvdHRvbSI9PT1uP3Quc2xpY2UoKS5yZXZlcnNlKCk6dCxpPSJib3R0b20iPT09bj9lLnNsaWNlKCkucmV2ZXJzZSgpOmUsYT1bXSxyPVtdLHM9W107Zm9yKGxldCB0PTAsZT0wO3Q8by5sZW5ndGg7dCsrKXtpZighaVt0XSljb250aW51ZTthW3RdPWU7Y29uc3Qgbj1vW3RdO3NbdF09dGhpcy5faXNOYXRpdmVIdG1sVGFibGU/QXJyYXkuZnJvbShuLmNoaWxkcmVuKTpbbl07Y29uc3QgbD1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtlKz1sLHJbdF09bH1jb25zdCBsPWkubGFzdEluZGV4T2YoITApO3RoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgoKT0+e3ZhciB0LGU7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2lmKCFpW3RdKWNvbnRpbnVlO2NvbnN0IGU9YVt0XSxvPXQ9PT1sO2Zvcihjb25zdCBpIG9mIHNbdF0pdGhpcy5fYWRkU3RpY2t5U3R5bGUoaSxuLGUsbyl9InRvcCI9PT1uP251bGw9PT0odD10aGlzLl9wb3NpdGlvbkxpc3RlbmVyKXx8dm9pZCAwPT09dHx8dC5zdGlja3lIZWFkZXJSb3dzVXBkYXRlZCh7c2l6ZXM6cixvZmZzZXRzOmEsZWxlbWVudHM6c30pOm51bGw9PT0oZT10aGlzLl9wb3NpdGlvbkxpc3RlbmVyKXx8dm9pZCAwPT09ZXx8ZS5zdGlja3lGb290ZXJSb3dzVXBkYXRlZCh7c2l6ZXM6cixvZmZzZXRzOmEsZWxlbWVudHM6c30pfSkpfXVwZGF0ZVN0aWNreUZvb3RlckNvbnRhaW5lcih0LGUpe2lmKCF0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZSlyZXR1cm47Y29uc3Qgbj10LnF1ZXJ5U2VsZWN0b3IoInRmb290Iik7dGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIuc2NoZWR1bGUoKCgpPT57ZS5zb21lKCh0PT4hdCkpP3RoaXMuX3JlbW92ZVN0aWNreVN0eWxlKG4sWyJib3R0b20iXSk6dGhpcy5fYWRkU3RpY2t5U3R5bGUobiwiYm90dG9tIiwwLCExKX0pKX1fcmVtb3ZlU3RpY2t5U3R5bGUodCxlKXtmb3IoY29uc3QgbiBvZiBlKXQuc3R5bGVbbl09IiIsdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2JvcmRlckNlbGxDc3Nbbl0pO2UzLnNvbWUoKG49Pi0xPT09ZS5pbmRleE9mKG4pJiZ0LnN0eWxlW25dKSk/dC5zdHlsZS56SW5kZXg9dGhpcy5fZ2V0Q2FsY3VsYXRlZFpJbmRleCh0KToodC5zdHlsZS56SW5kZXg9IiIsdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCYmKHQuc3R5bGUucG9zaXRpb249IiIpLHQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9zdGlja0NlbGxDc3MpKX1fYWRkU3RpY2t5U3R5bGUodCxlLG4sbyl7dC5jbGFzc0xpc3QuYWRkKHRoaXMuX3N0aWNrQ2VsbENzcyksbyYmdC5jbGFzc0xpc3QuYWRkKHRoaXMuX2JvcmRlckNlbGxDc3NbZV0pLHQuc3R5bGVbZV09YCR7bn1weGAsdC5zdHlsZS56SW5kZXg9dGhpcy5fZ2V0Q2FsY3VsYXRlZFpJbmRleCh0KSx0aGlzLl9uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50JiYodC5zdHlsZS5jc3NUZXh0Kz0icG9zaXRpb246IC13ZWJraXQtc3RpY2t5OyBwb3NpdGlvbjogc3RpY2t5OyAiKX1fZ2V0Q2FsY3VsYXRlZFpJbmRleCh0KXtjb25zdCBlPXt0b3A6MTAwLGJvdHRvbToxMCxsZWZ0OjEscmlnaHQ6MX07bGV0IG49MDtmb3IoY29uc3QgbyBvZiBlMyl0LnN0eWxlW29dJiYobis9ZVtvXSk7cmV0dXJuIG4/YCR7bn1gOiIifV9nZXRDZWxsV2lkdGhzKHQsZT0hMCl7aWYoIWUmJnRoaXMuX2NhY2hlZENlbGxXaWR0aHMubGVuZ3RoKXJldHVybiB0aGlzLl9jYWNoZWRDZWxsV2lkdGhzO2NvbnN0IG49W10sbz10LmNoaWxkcmVuO2ZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCsrKXtuLnB1c2gob1t0XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCl9cmV0dXJuIHRoaXMuX2NhY2hlZENlbGxXaWR0aHM9bixufV9nZXRTdGlja3lTdGFydENvbHVtblBvc2l0aW9ucyh0LGUpe2NvbnN0IG49W107bGV0IG89MDtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyllW2ldJiYobltpXT1vLG8rPXRbaV0pO3JldHVybiBufV9nZXRTdGlja3lFbmRDb2x1bW5Qb3NpdGlvbnModCxlKXtjb25zdCBuPVtdO2xldCBvPTA7Zm9yKGxldCBpPXQubGVuZ3RoO2k+MDtpLS0pZVtpXSYmKG5baV09byxvKz10W2ldKTtyZXR1cm4gbn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG8zKHQpe3JldHVybiBFcnJvcihgQ291bGQgbm90IGZpbmQgY29sdW1uIHdpdGggaWQgIiR7dH0iLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgaTM9bmV3IGVyKCJDREtfU1BMIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGEze31hMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YTMpfSxhMy7JtWRpcj1obyh7dHlwZTphMyxzZWxlY3RvcnM6W1siY2RrLXRhYmxlIiwicmVjeWNsZVJvd3MiLCIiXSxbInRhYmxlIiwiY2RrLXRhYmxlIiwiIiwicmVjeWNsZVJvd3MiLCIiXV0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTp0Qix1c2VDbGFzczpKTH1dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGEzLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImNkay10YWJsZVtyZWN5Y2xlUm93c10sIHRhYmxlW2Nkay10YWJsZV1bcmVjeWNsZVJvd3NdIixwcm92aWRlcnM6W3twcm92aWRlOnRCLHVzZUNsYXNzOkpMfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgcjN7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9ZX19cjMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHIzKShmdShGYiksZnUoS2gpKX0scjMuybVkaXI9aG8oe3R5cGU6cjMsc2VsZWN0b3JzOltbIiIsInJvd091dGxldCIsIiJdXX0pLHIzLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbcm93T3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6S2h9XX0pLG51bGwpO2NsYXNzIHMze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fXMzLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzMykoZnUoRmIpLGZ1KEtoKSl9LHMzLsm1ZGlyPWhvKHt0eXBlOnMzLHNlbGVjdG9yczpbWyIiLCJoZWFkZXJSb3dPdXRsZXQiLCIiXV19KSxzMy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkZifSx7dHlwZTpLaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoczMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2hlYWRlclJvd091dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RmJ9LHt0eXBlOktofV19KSxudWxsKTtjbGFzcyBsM3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudmlld0NvbnRhaW5lcj10LHRoaXMuZWxlbWVudFJlZj1lfX1sMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bDMpKGZ1KEZiKSxmdShLaCkpfSxsMy7JtWRpcj1obyh7dHlwZTpsMyxzZWxlY3RvcnM6W1siIiwiZm9vdGVyUm93T3V0bGV0IiwiIl1dfSksbDMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpGYn0se3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGwzLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Iltmb290ZXJSb3dPdXRsZXRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZifSx7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgYzN7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9ZX19YzMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGMzKShmdShGYiksZnUoS2gpKX0sYzMuybVkaXI9aG8oe3R5cGU6YzMsc2VsZWN0b3JzOltbIiIsIm5vRGF0YVJvd091dGxldCIsIiJdXX0pLGMzLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RmJ9LHt0eXBlOktofV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbm9EYXRhUm93T3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6S2h9XX0pLG51bGwpO2NvbnN0IGQzPSdcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PSJjYXB0aW9uIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD0iY29sZ3JvdXAsIGNvbCI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGFpbmVyIGhlYWRlclJvd091dGxldD48L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciByb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgbm9EYXRhUm93T3V0bGV0PjwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIGZvb3RlclJvd091dGxldD48L25nLWNvbnRhaW5lcj5cbic7Y2xhc3MgcDN7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkKXt0aGlzLl9kaWZmZXJzPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5fZGlyPWksdGhpcy5fcGxhdGZvcm09cix0aGlzLl92aWV3UmVwZWF0ZXI9cyx0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlcj1sLHRoaXMuX3ZpZXdwb3J0UnVsZXI9Yyx0aGlzLl9zdGlja3lQb3NpdGlvbmluZ0xpc3RlbmVyPWQsdGhpcy5fb25EZXN0cm95PW5ldyBCLHRoaXMuX2NvbHVtbkRlZnNCeU5hbWU9bmV3IE1hcCx0aGlzLl9jdXN0b21Db2x1bW5EZWZzPW5ldyBTZXQsdGhpcy5fY3VzdG9tUm93RGVmcz1uZXcgU2V0LHRoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnM9bmV3IFNldCx0aGlzLl9jdXN0b21Gb290ZXJSb3dEZWZzPW5ldyBTZXQsdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZD0hMCx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkPSEwLHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMCx0aGlzLl9mb3JjZVJlY2FsY3VsYXRlQ2VsbFdpZHRocz0hMCx0aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwPW5ldyBNYXAsdGhpcy5zdGlja3lDc3NDbGFzcz0iY2RrLXRhYmxlLXN0aWNreSIsdGhpcy5uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50PSEwLHRoaXMuX2lzU2hvd2luZ05vRGF0YVJvdz0hMSx0aGlzLl9tdWx0aVRlbXBsYXRlRGF0YVJvd3M9ITEsdGhpcy5fZml4ZWRMYXlvdXQ9ITEsdGhpcy5jb250ZW50Q2hhbmdlZD1uZXcgU3ksdGhpcy52aWV3Q2hhbmdlPW5ldyBVKHtzdGFydDowLGVuZDpOdW1iZXIuTUFYX1ZBTFVFfSksb3x8dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsInRhYmxlIiksdGhpcy5fZG9jdW1lbnQ9YSx0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZT0iVEFCTEUiPT09dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lfWdldCB0cmFja0J5KCl7cmV0dXJuIHRoaXMuX3RyYWNrQnlGbn1zZXQgdHJhY2tCeSh0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8bnVsbD09dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHR8fGNvbnNvbGUud2FybihgdHJhY2tCeSBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfS5gKSx0aGlzLl90cmFja0J5Rm49dH1nZXQgZGF0YVNvdXJjZSgpe3JldHVybiB0aGlzLl9kYXRhU291cmNlfXNldCBkYXRhU291cmNlKHQpe3RoaXMuX2RhdGFTb3VyY2UhPT10JiZ0aGlzLl9zd2l0Y2hEYXRhU291cmNlKHQpfWdldCBtdWx0aVRlbXBsYXRlRGF0YVJvd3MoKXtyZXR1cm4gdGhpcy5fbXVsdGlUZW1wbGF0ZURhdGFSb3dzfXNldCBtdWx0aVRlbXBsYXRlRGF0YVJvd3ModCl7dGhpcy5fbXVsdGlUZW1wbGF0ZURhdGFSb3dzPXBIKHQpLHRoaXMuX3Jvd091dGxldCYmdGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoJiYodGhpcy5fZm9yY2VSZW5kZXJEYXRhUm93cygpLHRoaXMudXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCkpfWdldCBmaXhlZExheW91dCgpe3JldHVybiB0aGlzLl9maXhlZExheW91dH1zZXQgZml4ZWRMYXlvdXQodCl7dGhpcy5fZml4ZWRMYXlvdXQ9cEgodCksdGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITAsdGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PSEwfW5nT25Jbml0KCl7dGhpcy5fc2V0dXBTdGlja3lTdHlsZXIoKSx0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZSYmdGhpcy5fYXBwbHlOYXRpdmVUYWJsZVNlY3Rpb25zKCksdGhpcy5fZGF0YURpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgoKHQsZSk9PnRoaXMudHJhY2tCeT90aGlzLnRyYWNrQnkoZS5kYXRhSW5kZXgsZS5kYXRhKTplKSksdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5waXBlKFVlKHRoaXMuX29uRGVzdHJveSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9mb3JjZVJlY2FsY3VsYXRlQ2VsbFdpZHRocz0hMH0pKX1uZ0FmdGVyQ29udGVudENoZWNrZWQoKXtpZih0aGlzLl9jYWNoZVJvd0RlZnMoKSx0aGlzLl9jYWNoZUNvbHVtbkRlZnMoKSwhdGhpcy5faGVhZGVyUm93RGVmcy5sZW5ndGgmJiF0aGlzLl9mb290ZXJSb3dEZWZzLmxlbmd0aCYmIXRoaXMuX3Jvd0RlZnMubGVuZ3RoJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiTWlzc2luZyBkZWZpbml0aW9ucyBmb3IgaGVhZGVyLCBmb290ZXIsIGFuZCByb3c7IGNhbm5vdCBkZXRlcm1pbmUgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgcmVuZGVyZWQuIil9KSgpO2NvbnN0IGU9dGhpcy5fcmVuZGVyVXBkYXRlZENvbHVtbnMoKXx8dGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZHx8dGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZDt0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQ9dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0fHxlLHRoaXMuX2ZvcmNlUmVjYWxjdWxhdGVDZWxsV2lkdGhzPWUsdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZCYmKHRoaXMuX2ZvcmNlUmVuZGVySGVhZGVyUm93cygpLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITEpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQmJih0aGlzLl9mb3JjZVJlbmRlckZvb3RlclJvd3MoKSx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkPSExKSx0aGlzLmRhdGFTb3VyY2UmJnRoaXMuX3Jvd0RlZnMubGVuZ3RoPjAmJiF0aGlzLl9yZW5kZXJDaGFuZ2VTdWJzY3JpcHRpb24/dGhpcy5fb2JzZXJ2ZVJlbmRlckNoYW5nZXMoKTp0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQmJnRoaXMudXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCksdGhpcy5fY2hlY2tTdGlja3lTdGF0ZXMoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fbm9EYXRhUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9oZWFkZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Zvb3RlclJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5jbGVhcigpLHRoaXMuX29uRGVzdHJveS5uZXh0KCksdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCksWkwodGhpcy5kYXRhU291cmNlKSYmdGhpcy5kYXRhU291cmNlLmRpc2Nvbm5lY3QodGhpcyl9cmVuZGVyUm93cygpe3RoaXMuX3JlbmRlclJvd3M9dGhpcy5fZ2V0QWxsUmVuZGVyUm93cygpO2NvbnN0IHQ9dGhpcy5fZGF0YURpZmZlci5kaWZmKHRoaXMuX3JlbmRlclJvd3MpO2lmKCF0KXJldHVybiB0aGlzLl91cGRhdGVOb0RhdGFSb3coKSx2b2lkIHRoaXMuY29udGVudENoYW5nZWQubmV4dCgpO2NvbnN0IGU9dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXI7dGhpcy5fdmlld1JlcGVhdGVyLmFwcGx5Q2hhbmdlcyh0LGUsKCh0LGUsbik9PnRoaXMuX2dldEVtYmVkZGVkVmlld0FyZ3ModC5pdGVtLG4pKSwodD0+dC5pdGVtLmRhdGEpLCh0PT57MT09PXQub3BlcmF0aW9uJiZ0LmNvbnRleHQmJnRoaXMuX3JlbmRlckNlbGxUZW1wbGF0ZUZvckl0ZW0odC5yZWNvcmQuaXRlbS5yb3dEZWYsdC5jb250ZXh0KX0pKSx0aGlzLl91cGRhdGVSb3dJbmRleENvbnRleHQoKSx0LmZvckVhY2hJZGVudGl0eUNoYW5nZSgodD0+e2UuZ2V0KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0ZW0uZGF0YX0pKSx0aGlzLl91cGRhdGVOb0RhdGFSb3coKSx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpLHRoaXMuY29udGVudENoYW5nZWQubmV4dCgpfWFkZENvbHVtbkRlZih0KXt0aGlzLl9jdXN0b21Db2x1bW5EZWZzLmFkZCh0KX1yZW1vdmVDb2x1bW5EZWYodCl7dGhpcy5fY3VzdG9tQ29sdW1uRGVmcy5kZWxldGUodCl9YWRkUm93RGVmKHQpe3RoaXMuX2N1c3RvbVJvd0RlZnMuYWRkKHQpfXJlbW92ZVJvd0RlZih0KXt0aGlzLl9jdXN0b21Sb3dEZWZzLmRlbGV0ZSh0KX1hZGRIZWFkZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tSGVhZGVyUm93RGVmcy5hZGQodCksdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZD0hMH1yZW1vdmVIZWFkZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tSGVhZGVyUm93RGVmcy5kZWxldGUodCksdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZD0hMH1hZGRGb290ZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcy5hZGQodCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMH1yZW1vdmVGb290ZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcy5kZWxldGUodCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMH1zZXROb0RhdGFSb3codCl7dGhpcy5fY3VzdG9tTm9EYXRhUm93PXR9dXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCl7Y29uc3QgdD10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5faGVhZGVyUm93T3V0bGV0KSxlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCJ0aGVhZCIpO2UmJihlLnN0eWxlLmRpc3BsYXk9dC5sZW5ndGg/IiI6Im5vbmUiKTtjb25zdCBuPXRoaXMuX2hlYWRlclJvd0RlZnMubWFwKCh0PT50LnN0aWNreSkpO3RoaXMuX3N0aWNreVN0eWxlci5jbGVhclN0aWNreVBvc2l0aW9uaW5nKHQsWyJ0b3AiXSksdGhpcy5fc3RpY2t5U3R5bGVyLnN0aWNrUm93cyh0LG4sInRvcCIpLHRoaXMuX2hlYWRlclJvd0RlZnMuZm9yRWFjaCgodD0+dC5yZXNldFN0aWNreUNoYW5nZWQoKSkpfXVwZGF0ZVN0aWNreUZvb3RlclJvd1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2Zvb3RlclJvd091dGxldCksZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigidGZvb3QiKTtlJiYoZS5zdHlsZS5kaXNwbGF5PXQubGVuZ3RoPyIiOiJub25lIik7Y29uc3Qgbj10aGlzLl9mb290ZXJSb3dEZWZzLm1hcCgodD0+dC5zdGlja3kpKTt0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyh0LFsiYm90dG9tIl0pLHRoaXMuX3N0aWNreVN0eWxlci5zdGlja1Jvd3ModCxuLCJib3R0b20iKSx0aGlzLl9zdGlja3lTdHlsZXIudXBkYXRlU3RpY2t5Rm9vdGVyQ29udGFpbmVyKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxuKSx0aGlzLl9mb290ZXJSb3dEZWZzLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX11cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKXtjb25zdCB0PXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9oZWFkZXJSb3dPdXRsZXQpLGU9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX3Jvd091dGxldCksbj10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5fZm9vdGVyUm93T3V0bGV0KTsodGhpcy5faXNOYXRpdmVIdG1sVGFibGUmJiF0aGlzLl9maXhlZExheW91dHx8dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0KSYmKHRoaXMuX3N0aWNreVN0eWxlci5jbGVhclN0aWNreVBvc2l0aW9uaW5nKFsuLi50LC4uLmUsLi4ubl0sWyJsZWZ0IiwicmlnaHQiXSksdGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PSExKSx0LmZvckVhY2goKCh0LGUpPT57dGhpcy5fYWRkU3RpY2t5Q29sdW1uU3R5bGVzKFt0XSx0aGlzLl9oZWFkZXJSb3dEZWZzW2VdKX0pKSx0aGlzLl9yb3dEZWZzLmZvckVhY2goKHQ9Pntjb25zdCBuPVtdO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXRoaXMuX3JlbmRlclJvd3Nbb10ucm93RGVmPT09dCYmbi5wdXNoKGVbb10pO3RoaXMuX2FkZFN0aWNreUNvbHVtblN0eWxlcyhuLHQpfSkpLG4uZm9yRWFjaCgoKHQsZSk9Pnt0aGlzLl9hZGRTdGlja3lDb2x1bW5TdHlsZXMoW3RdLHRoaXMuX2Zvb3RlclJvd0RlZnNbZV0pfSkpLEFycmF5LmZyb20odGhpcy5fY29sdW1uRGVmc0J5TmFtZS52YWx1ZXMoKSkuZm9yRWFjaCgodD0+dC5yZXNldFN0aWNreUNoYW5nZWQoKSkpfV9nZXRBbGxSZW5kZXJSb3dzKCl7Y29uc3QgdD1bXSxlPXRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA7dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcD1uZXcgTWFwO2ZvcihsZXQgbj0wO248dGhpcy5fZGF0YS5sZW5ndGg7bisrKXtsZXQgbz10aGlzLl9kYXRhW25dO2NvbnN0IGk9dGhpcy5fZ2V0UmVuZGVyUm93c0ZvckRhdGEobyxuLGUuZ2V0KG8pKTt0aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmhhcyhvKXx8dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5zZXQobyxuZXcgV2Vha01hcCk7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspe2xldCBuPWlbZV07Y29uc3Qgbz10aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmdldChuLmRhdGEpO28uaGFzKG4ucm93RGVmKT9vLmdldChuLnJvd0RlZikucHVzaChuKTpvLnNldChuLnJvd0RlZixbbl0pLHQucHVzaChuKX19cmV0dXJuIHR9X2dldFJlbmRlclJvd3NGb3JEYXRhKHQsZSxuKXtyZXR1cm4gdGhpcy5fZ2V0Um93RGVmcyh0LGUpLm1hcCgobz0+e2NvbnN0IGk9biYmbi5oYXMobyk/bi5nZXQobyk6W107aWYoaS5sZW5ndGgpe2NvbnN0IHQ9aS5zaGlmdCgpO3JldHVybiB0LmRhdGFJbmRleD1lLHR9cmV0dXJue2RhdGE6dCxyb3dEZWY6byxkYXRhSW5kZXg6ZX19KSl9X2NhY2hlQ29sdW1uRGVmcygpe3RoaXMuX2NvbHVtbkRlZnNCeU5hbWUuY2xlYXIoKTttMyh0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRDb2x1bW5EZWZzKSx0aGlzLl9jdXN0b21Db2x1bW5EZWZzKS5mb3JFYWNoKCh0PT57aWYodGhpcy5fY29sdW1uRGVmc0J5TmFtZS5oYXModC5uYW1lKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUodCl7cmV0dXJuIEVycm9yKGBEdXBsaWNhdGUgY29sdW1uIGRlZmluaXRpb24gbmFtZSBwcm92aWRlZDogIiR7dH0iLmApfSkodC5uYW1lKTt0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLnNldCh0Lm5hbWUsdCl9KSl9X2NhY2hlUm93RGVmcygpe3RoaXMuX2hlYWRlclJvd0RlZnM9bTModGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50SGVhZGVyUm93RGVmcyksdGhpcy5fY3VzdG9tSGVhZGVyUm93RGVmcyksdGhpcy5fZm9vdGVyUm93RGVmcz1tMyh0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRGb290ZXJSb3dEZWZzKSx0aGlzLl9jdXN0b21Gb290ZXJSb3dEZWZzKSx0aGlzLl9yb3dEZWZzPW0zKHRoaXMuX2dldE93bkRlZnModGhpcy5fY29udGVudFJvd0RlZnMpLHRoaXMuX2N1c3RvbVJvd0RlZnMpO2NvbnN0IHQ9dGhpcy5fcm93RGVmcy5maWx0ZXIoKHQ9PiF0LndoZW4pKTtpZighdGhpcy5tdWx0aVRlbXBsYXRlRGF0YVJvd3MmJnQubGVuZ3RoPjEmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJUaGVyZSBjYW4gb25seSBiZSBvbmUgZGVmYXVsdCByb3cgd2l0aG91dCBhIHdoZW4gcHJlZGljYXRlIGZ1bmN0aW9uLiIpfSkoKTt0aGlzLl9kZWZhdWx0Um93RGVmPXRbMF19X3JlbmRlclVwZGF0ZWRDb2x1bW5zKCl7Y29uc3QgdD0odCxlKT0+dHx8ISFlLmdldENvbHVtbnNEaWZmKCksZT10aGlzLl9yb3dEZWZzLnJlZHVjZSh0LCExKTtlJiZ0aGlzLl9mb3JjZVJlbmRlckRhdGFSb3dzKCk7Y29uc3Qgbj10aGlzLl9oZWFkZXJSb3dEZWZzLnJlZHVjZSh0LCExKTtuJiZ0aGlzLl9mb3JjZVJlbmRlckhlYWRlclJvd3MoKTtjb25zdCBvPXRoaXMuX2Zvb3RlclJvd0RlZnMucmVkdWNlKHQsITEpO3JldHVybiBvJiZ0aGlzLl9mb3JjZVJlbmRlckZvb3RlclJvd3MoKSxlfHxufHxvfV9zd2l0Y2hEYXRhU291cmNlKHQpe3RoaXMuX2RhdGE9W10sWkwodGhpcy5kYXRhU291cmNlKSYmdGhpcy5kYXRhU291cmNlLmRpc2Nvbm5lY3QodGhpcyksdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uJiYodGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uPW51bGwpLHR8fCh0aGlzLl9kYXRhRGlmZmVyJiZ0aGlzLl9kYXRhRGlmZmVyLmRpZmYoW10pLHRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCkpLHRoaXMuX2RhdGFTb3VyY2U9dH1fb2JzZXJ2ZVJlbmRlckNoYW5nZXMoKXtpZighdGhpcy5kYXRhU291cmNlKXJldHVybjtsZXQgdDtpZihaTCh0aGlzLmRhdGFTb3VyY2UpP3Q9dGhpcy5kYXRhU291cmNlLmNvbm5lY3QodGhpcyk6THQodGhpcy5kYXRhU291cmNlKT90PXRoaXMuZGF0YVNvdXJjZTpBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNvdXJjZSkmJih0PXp0KHRoaXMuZGF0YVNvdXJjZSkpLHZvaWQgMD09PXQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJQcm92aWRlZCBkYXRhIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIGFycmF5LCBPYnNlcnZhYmxlLCBvciBEYXRhU291cmNlIil9KSgpO3RoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbj10LnBpcGUoVWUodGhpcy5fb25EZXN0cm95KSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fZGF0YT10fHxbXSx0aGlzLnJlbmRlclJvd3MoKX0pKX1fZm9yY2VSZW5kZXJIZWFkZXJSb3dzKCl7dGhpcy5faGVhZGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoPjAmJnRoaXMuX2hlYWRlclJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5faGVhZGVyUm93RGVmcy5mb3JFYWNoKCgodCxlKT0+dGhpcy5fcmVuZGVyUm93KHRoaXMuX2hlYWRlclJvd091dGxldCx0LGUpKSksdGhpcy51cGRhdGVTdGlja3lIZWFkZXJSb3dTdHlsZXMoKX1fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCl7dGhpcy5fZm9vdGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoPjAmJnRoaXMuX2Zvb3RlclJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZm9vdGVyUm93RGVmcy5mb3JFYWNoKCgodCxlKT0+dGhpcy5fcmVuZGVyUm93KHRoaXMuX2Zvb3RlclJvd091dGxldCx0LGUpKSksdGhpcy51cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKX1fYWRkU3RpY2t5Q29sdW1uU3R5bGVzKHQsZSl7Y29uc3Qgbj1BcnJheS5mcm9tKGUuY29sdW1uc3x8W10pLm1hcCgodD0+e2NvbnN0IGU9dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5nZXQodCk7aWYoIWUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBvMyh0KTtyZXR1cm4gZX0pKSxvPW4ubWFwKCh0PT50LnN0aWNreSkpLGk9bi5tYXAoKHQ9PnQuc3RpY2t5RW5kKSk7dGhpcy5fc3RpY2t5U3R5bGVyLnVwZGF0ZVN0aWNreUNvbHVtbnModCxvLGksIXRoaXMuX2ZpeGVkTGF5b3V0fHx0aGlzLl9mb3JjZVJlY2FsY3VsYXRlQ2VsbFdpZHRocyl9X2dldFJlbmRlcmVkUm93cyh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248dC52aWV3Q29udGFpbmVyLmxlbmd0aDtuKyspe2NvbnN0IG89dC52aWV3Q29udGFpbmVyLmdldChuKTtlLnB1c2goby5yb290Tm9kZXNbMF0pfXJldHVybiBlfV9nZXRSb3dEZWZzKHQsZSl7aWYoMT09dGhpcy5fcm93RGVmcy5sZW5ndGgpcmV0dXJuW3RoaXMuX3Jvd0RlZnNbMF1dO2xldCBuPVtdO2lmKHRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzKW49dGhpcy5fcm93RGVmcy5maWx0ZXIoKG49PiFuLndoZW58fG4ud2hlbihlLHQpKSk7ZWxzZXtsZXQgbz10aGlzLl9yb3dEZWZzLmZpbmQoKG49Pm4ud2hlbiYmbi53aGVuKGUsdCkpKXx8dGhpcy5fZGVmYXVsdFJvd0RlZjtvJiZuLnB1c2gobyl9aWYoIW4ubGVuZ3RoJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gbyh0KXtyZXR1cm4gRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgcm93IGRlZmluaXRpb24gZm9yIHRoZXByb3ZpZGVkIHJvdyBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHQpfWApfSkodCk7cmV0dXJuIG59X2dldEVtYmVkZGVkVmlld0FyZ3ModCxlKXtyZXR1cm57dGVtcGxhdGVSZWY6dC5yb3dEZWYudGVtcGxhdGUsY29udGV4dDp7JGltcGxpY2l0OnQuZGF0YX0saW5kZXg6ZX19X3JlbmRlclJvdyh0LGUsbixvPXt9KXtjb25zdCBpPXQudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZS50ZW1wbGF0ZSxvLG4pO3JldHVybiB0aGlzLl9yZW5kZXJDZWxsVGVtcGxhdGVGb3JJdGVtKGUsbyksaX1fcmVuZGVyQ2VsbFRlbXBsYXRlRm9ySXRlbSh0LGUpe2ZvcihsZXQgbiBvZiB0aGlzLl9nZXRDZWxsVGVtcGxhdGVzKHQpKUsxLm1vc3RSZWNlbnRDZWxsT3V0bGV0JiZLMS5tb3N0UmVjZW50Q2VsbE91dGxldC5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcobixlKTt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1fdXBkYXRlUm93SW5kZXhDb250ZXh0KCl7Y29uc3QgdD10aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lcjtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG89dC5nZXQoZSkuY29udGV4dDtvLmNvdW50PW4sby5maXJzdD0wPT09ZSxvLmxhc3Q9ZT09PW4tMSxvLmV2ZW49ZSUyPT0wLG8ub2RkPSFvLmV2ZW4sdGhpcy5tdWx0aVRlbXBsYXRlRGF0YVJvd3M/KG8uZGF0YUluZGV4PXRoaXMuX3JlbmRlclJvd3NbZV0uZGF0YUluZGV4LG8ucmVuZGVySW5kZXg9ZSk6by5pbmRleD10aGlzLl9yZW5kZXJSb3dzW2VdLmRhdGFJbmRleH19X2dldENlbGxUZW1wbGF0ZXModCl7cmV0dXJuIHQmJnQuY29sdW1ucz9BcnJheS5mcm9tKHQuY29sdW1ucywoZT0+e2NvbnN0IG49dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5nZXQoZSk7aWYoIW4mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBvMyhlKTtyZXR1cm4gdC5leHRyYWN0Q2VsbFRlbXBsYXRlKG4pfSkpOltdfV9hcHBseU5hdGl2ZVRhYmxlU2VjdGlvbnMoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxlPVt7dGFnOiJ0aGVhZCIsb3V0bGV0czpbdGhpcy5faGVhZGVyUm93T3V0bGV0XX0se3RhZzoidGJvZHkiLG91dGxldHM6W3RoaXMuX3Jvd091dGxldCx0aGlzLl9ub0RhdGFSb3dPdXRsZXRdfSx7dGFnOiJ0Zm9vdCIsb3V0bGV0czpbdGhpcy5fZm9vdGVyUm93T3V0bGV0XX1dO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuLnRhZyk7ZS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3dncm91cCIpO2Zvcihjb25zdCB0IG9mIG4ub3V0bGV0cyllLmFwcGVuZENoaWxkKHQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTt0LmFwcGVuZENoaWxkKGUpfXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0KX1fZm9yY2VSZW5kZXJEYXRhUm93cygpe3RoaXMuX2RhdGFEaWZmZXIuZGlmZihbXSksdGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLnJlbmRlclJvd3MoKX1fY2hlY2tTdGlja3lTdGF0ZXMoKXtjb25zdCB0PSh0LGUpPT50fHxlLmhhc1N0aWNreUNoYW5nZWQoKTt0aGlzLl9oZWFkZXJSb3dEZWZzLnJlZHVjZSh0LCExKSYmdGhpcy51cGRhdGVTdGlja3lIZWFkZXJSb3dTdHlsZXMoKSx0aGlzLl9mb290ZXJSb3dEZWZzLnJlZHVjZSh0LCExKSYmdGhpcy51cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKSxBcnJheS5mcm9tKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUudmFsdWVzKCkpLnJlZHVjZSh0LCExKSYmKHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMCx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpKX1fc2V0dXBTdGlja3lTdHlsZXIoKXt0aGlzLl9zdGlja3lTdHlsZXI9bmV3IG4zKHRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlLHRoaXMuc3RpY2t5Q3NzQ2xhc3MsdGhpcy5fZGlyP3RoaXMuX2Rpci52YWx1ZToibHRyIix0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlcix0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIsdGhpcy5uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50LHRoaXMuX3N0aWNreVBvc2l0aW9uaW5nTGlzdGVuZXIpLCh0aGlzLl9kaXI/dGhpcy5fZGlyLmNoYW5nZTp6dCgpKS5waXBlKFVlKHRoaXMuX29uRGVzdHJveSkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3N0aWNreVN0eWxlci5kaXJlY3Rpb249dCx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpfSkpfV9nZXRPd25EZWZzKHQpe3JldHVybiB0LmZpbHRlcigodD0+IXQuX3RhYmxlfHx0Ll90YWJsZT09PXRoaXMpKX1fdXBkYXRlTm9EYXRhUm93KCl7Y29uc3QgdD10aGlzLl9jdXN0b21Ob0RhdGFSb3d8fHRoaXMuX25vRGF0YVJvdztpZih0KXtjb25zdCBlPTA9PT10aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5sZW5ndGg7aWYoZSE9PXRoaXMuX2lzU2hvd2luZ05vRGF0YVJvdyl7Y29uc3Qgbj10aGlzLl9ub0RhdGFSb3dPdXRsZXQudmlld0NvbnRhaW5lcjtlP24uY3JlYXRlRW1iZWRkZWRWaWV3KHQudGVtcGxhdGVSZWYpOm4uY2xlYXIoKSx0aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3c9ZX19fX1mdW5jdGlvbiBtMyh0LGUpe3JldHVybiB0LmNvbmNhdChBcnJheS5mcm9tKGUpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovcDMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHAzKShmdShoYiksZnUoT2IpLGZ1KEtoKSxHYSgicm9sZSIpLGZ1KEFGLDgpLGZ1KHNNKSxmdShfSCksZnUodEIpLGZ1KFYxKSxmdShsQiksZnUoaTMsMTIpKX0scDMuybVjbXA9c28oe3R5cGU6cDMsc2VsZWN0b3JzOltbImNkay10YWJsZSJdLFsidGFibGUiLCJjZGstdGFibGUiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoVXkobyx0Myw1KSxVeShvLHoxLDUpLFV5KG8sWDEsNSksVXkobyxZMSw1KSxVeShvLFoxLDUpKSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLl9ub0RhdGFSb3c9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2NvbnRlbnRDb2x1bW5EZWZzPXQpLEJ5KHQ9ankoKSkmJihuLl9jb250ZW50Um93RGVmcz10KSxCeSh0PWp5KCkpJiYobi5fY29udGVudEhlYWRlclJvd0RlZnM9dCksQnkodD1qeSgpKSYmKG4uX2NvbnRlbnRGb290ZXJSb3dEZWZzPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShyMyw3KSxWeShzMyw3KSxWeShsMyw3KSxWeShjMyw3KSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5fcm93T3V0bGV0PXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLl9oZWFkZXJSb3dPdXRsZXQ9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2Zvb3RlclJvd091dGxldD10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5fbm9EYXRhUm93T3V0bGV0PXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJjZGstdGFibGUiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigiY2RrLXRhYmxlLWZpeGVkLWxheW91dCIsbi5maXhlZExheW91dCl9LGlucHV0czp7dHJhY2tCeToidHJhY2tCeSIsZGF0YVNvdXJjZToiZGF0YVNvdXJjZSIsbXVsdGlUZW1wbGF0ZURhdGFSb3dzOiJtdWx0aVRlbXBsYXRlRGF0YVJvd3MiLGZpeGVkTGF5b3V0OiJmaXhlZExheW91dCJ9LG91dHB1dHM6e2NvbnRlbnRDaGFuZ2VkOiJjb250ZW50Q2hhbmdlZCJ9LGV4cG9ydEFzOlsiY2RrVGFibGUiXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOkQxLHVzZUV4aXN0aW5nOnAzfSx7cHJvdmlkZTp0Qix1c2VDbGFzczpLTH0se3Byb3ZpZGU6VjEsdXNlQ2xhc3M6VTF9LHtwcm92aWRlOmkzLHVzZVZhbHVlOm51bGx9XSldLG5nQ29udGVudFNlbGVjdG9yczpbImNhcHRpb24iLCJjb2xncm91cCwgY29sIl0sZGVjbHM6Nix2YXJzOjAsY29uc3RzOltbImhlYWRlclJvd091dGxldCIsIiJdLFsicm93T3V0bGV0IiwiIl0sWyJub0RhdGFSb3dPdXRsZXQiLCIiXSxbImZvb3RlclJvd091dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSXUoUDEpLEh1KDApLEh1KDEsMSksT3UoMiwwKSxPdSgzLDEpLE91KDQsMiksT3UoNSwzKSl9LGRpcmVjdGl2ZXM6W3MzLHIzLGMzLGwzXSxzdHlsZXM6WyIuY2RrLXRhYmxlLWZpeGVkLWxheW91dHt0YWJsZS1sYXlvdXQ6Zml4ZWR9XG4iXSxlbmNhcHN1bGF0aW9uOjJ9KSxwMy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhifSx7dHlwZTpPYn0se3R5cGU6S2h9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsicm9sZSJdfV19LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6X0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOlt0Ql19XX0se3R5cGU6VTEsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbVjFdfV19LHt0eXBlOmxCfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlVyfSx7dHlwZTpMcixhcmdzOltpM119XX1dLHAzLnByb3BEZWNvcmF0b3JzPXt0cmFja0J5Olt7dHlwZTpSX31dLGRhdGFTb3VyY2U6W3t0eXBlOlJffV0sbXVsdGlUZW1wbGF0ZURhdGFSb3dzOlt7dHlwZTpSX31dLGZpeGVkTGF5b3V0Olt7dHlwZTpSX31dLGNvbnRlbnRDaGFuZ2VkOlt7dHlwZTpFX31dLF9yb3dPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W3IzLHtzdGF0aWM6ITB9XX1dLF9oZWFkZXJSb3dPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W3MzLHtzdGF0aWM6ITB9XX1dLF9mb290ZXJSb3dPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W2wzLHtzdGF0aWM6ITB9XX1dLF9ub0RhdGFSb3dPdXRsZXQ6W3t0eXBlOmFyLGFyZ3M6W2MzLHtzdGF0aWM6ITB9XX1dLF9jb250ZW50Q29sdW1uRGVmczpbe3R5cGU6b3IsYXJnczpbejEse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudFJvd0RlZnM6W3t0eXBlOm9yLGFyZ3M6W1gxLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRIZWFkZXJSb3dEZWZzOlt7dHlwZTpvcixhcmdzOltZMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50Rm9vdGVyUm93RGVmczpbe3R5cGU6b3IsYXJnczpbWjEse2Rlc2NlbmRhbnRzOiEwfV19XSxfbm9EYXRhUm93Olt7dHlwZTppcixhcmdzOlt0M119XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwMyxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjZGstdGFibGUsIHRhYmxlW2Nkay10YWJsZV0iLGV4cG9ydEFzOiJjZGtUYWJsZSIsdGVtcGxhdGU6ZDMsaG9zdDp7Y2xhc3M6ImNkay10YWJsZSIsIltjbGFzcy5jZGstdGFibGUtZml4ZWQtbGF5b3V0XSI6ImZpeGVkTGF5b3V0In0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0LHByb3ZpZGVyczpbe3Byb3ZpZGU6RDEsdXNlRXhpc3Rpbmc6cDN9LHtwcm92aWRlOnRCLHVzZUNsYXNzOktMfSx7cHJvdmlkZTpWMSx1c2VDbGFzczpVMX0se3Byb3ZpZGU6aTMsdXNlVmFsdWU6bnVsbH1dLHN0eWxlczpbIi5jZGstdGFibGUtZml4ZWQtbGF5b3V0e3RhYmxlLWxheW91dDpmaXhlZH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGJ9LHt0eXBlOk9ifSx7dHlwZTpLaH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJyb2xlIl19XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpfSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3RCXX1dfSx7dHlwZTpVMSxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltWMV19XX0se3R5cGU6bEJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VXJ9LHt0eXBlOkxyLGFyZ3M6W2kzXX1dfV19KSx7Y29udGVudENoYW5nZWQ6W3t0eXBlOkVffV0sdHJhY2tCeTpbe3R5cGU6Ul99XSxkYXRhU291cmNlOlt7dHlwZTpSX31dLG11bHRpVGVtcGxhdGVEYXRhUm93czpbe3R5cGU6Ul99XSxmaXhlZExheW91dDpbe3R5cGU6Ul99XSxfcm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltyMyx7c3RhdGljOiEwfV19XSxfaGVhZGVyUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltzMyx7c3RhdGljOiEwfV19XSxfZm9vdGVyUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltsMyx7c3RhdGljOiEwfV19XSxfbm9EYXRhUm93T3V0bGV0Olt7dHlwZTphcixhcmdzOltjMyx7c3RhdGljOiEwfV19XSxfY29udGVudENvbHVtbkRlZnM6W3t0eXBlOm9yLGFyZ3M6W3oxLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRSb3dEZWZzOlt7dHlwZTpvcixhcmdzOltYMSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50SGVhZGVyUm93RGVmczpbe3R5cGU6b3IsYXJnczpbWTEse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEZvb3RlclJvd0RlZnM6W3t0eXBlOm9yLGFyZ3M6W1oxLHtkZXNjZW5kYW50czohMH1dfV0sX25vRGF0YVJvdzpbe3R5cGU6aXIsYXJnczpbdDNdfV19KTtjbGFzcyB1M3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3RhYmxlPXQsdGhpcy5fb3B0aW9ucz1lLHRoaXMuanVzdGlmeT0ic3RhcnQiLHRoaXMuX29wdGlvbnM9ZXx8e319Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh0KXt0aGlzLl9uYW1lPXQsdGhpcy5fc3luY0NvbHVtbkRlZk5hbWUoKX1uZ09uSW5pdCgpe2lmKHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCksdm9pZCAwPT09dGhpcy5oZWFkZXJUZXh0JiYodGhpcy5oZWFkZXJUZXh0PXRoaXMuX2NyZWF0ZURlZmF1bHRIZWFkZXJUZXh0KCkpLHRoaXMuZGF0YUFjY2Vzc29yfHwodGhpcy5kYXRhQWNjZXNzb3I9dGhpcy5fb3B0aW9ucy5kZWZhdWx0RGF0YUFjY2Vzc29yfHwoKHQsZSk9PnRbZV0pKSx0aGlzLl90YWJsZSl0aGlzLmNvbHVtbkRlZi5jZWxsPXRoaXMuY2VsbCx0aGlzLmNvbHVtbkRlZi5oZWFkZXJDZWxsPXRoaXMuaGVhZGVyQ2VsbCx0aGlzLl90YWJsZS5hZGRDb2x1bW5EZWYodGhpcy5jb2x1bW5EZWYpO2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl0aHJvdyhmdW5jdGlvbiB0KCl7cmV0dXJuIEVycm9yKCJUZXh0IGNvbHVtbiBjb3VsZCBub3QgZmluZCBhIHBhcmVudCB0YWJsZSBmb3IgcmVnaXN0cmF0aW9uLiIpfSkoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3RhYmxlJiZ0aGlzLl90YWJsZS5yZW1vdmVDb2x1bW5EZWYodGhpcy5jb2x1bW5EZWYpfV9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpe2NvbnN0IHQ9dGhpcy5uYW1lO2lmKCF0JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiVGFibGUgdGV4dCBjb2x1bW4gbXVzdCBoYXZlIGEgbmFtZS4iKX0pKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMuZGVmYXVsdEhlYWRlclRleHRUcmFuc2Zvcm0/dGhpcy5fb3B0aW9ucy5kZWZhdWx0SGVhZGVyVGV4dFRyYW5zZm9ybSh0KTp0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX1fc3luY0NvbHVtbkRlZk5hbWUoKXt0aGlzLmNvbHVtbkRlZiYmKHRoaXMuY29sdW1uRGVmLm5hbWU9dGhpcy5uYW1lKX19dTMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHUzKShmdShwMyw4KSxmdShSMSw4KSl9LHUzLsm1Y21wPXNvKHt0eXBlOnUzLHNlbGVjdG9yczpbWyJjZGstdGV4dC1jb2x1bW4iXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeSh6MSw3KSxWeShFMSw3KSxWeShBMSw3KSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5jb2x1bW5EZWY9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uY2VsbD10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5oZWFkZXJDZWxsPXQuZmlyc3QpfX0saW5wdXRzOntqdXN0aWZ5OiJqdXN0aWZ5IixuYW1lOiJuYW1lIixoZWFkZXJUZXh0OiJoZWFkZXJUZXh0IixkYXRhQWNjZXNzb3I6ImRhdGFBY2Nlc3NvciJ9LGRlY2xzOjMsdmFyczowLGNvbnN0czpbWyJjZGtDb2x1bW5EZWYiLCIiXSxbImNkay1oZWFkZXItY2VsbCIsIiIsMywidGV4dC1hbGlnbiIsNCwiY2RrSGVhZGVyQ2VsbERlZiJdLFsiY2RrLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsImNka0NlbGxEZWYiXSxbImNkay1oZWFkZXItY2VsbCIsIiJdLFsiY2RrLWNlbGwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHZ1KDAsMCksSG0oMSx3MSwyLDMsInRoIiwxKSxIbSgyLGsxLDIsMywidGQiLDIpLHh1KCkpfSxkaXJlY3RpdmVzOlt6MSxBMSxFMSxIMSxMMV0sZW5jYXBzdWxhdGlvbjoyfSksdTMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpwMyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W1IxXX1dfV0sdTMucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOlJffV0saGVhZGVyVGV4dDpbe3R5cGU6Ul99XSxkYXRhQWNjZXNzb3I6W3t0eXBlOlJffV0sanVzdGlmeTpbe3R5cGU6Ul99XSxjb2x1bW5EZWY6W3t0eXBlOmFyLGFyZ3M6W3oxLHtzdGF0aWM6ITB9XX1dLGNlbGw6W3t0eXBlOmFyLGFyZ3M6W0UxLHtzdGF0aWM6ITB9XX1dLGhlYWRlckNlbGw6W3t0eXBlOmFyLGFyZ3M6W0ExLHtzdGF0aWM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHUzLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNkay10ZXh0LWNvbHVtbiIsdGVtcGxhdGU6J1xuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPlxuICAgICAgPHRoIGNkay1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPlxuICAgICAgICB7e2hlYWRlclRleHR9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBjZGstY2VsbCAqY2RrQ2VsbERlZj0ibGV0IGRhdGEiIFtzdHlsZS50ZXh0LWFsaWduXT0ianVzdGlmeSI+XG4gICAgICAgIHt7ZGF0YUFjY2Vzc29yKGRhdGEsIG5hbWUpfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICcsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cDMsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltSMV19XX1dfSkse2p1c3RpZnk6W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSxoZWFkZXJUZXh0Olt7dHlwZTpSX31dLGRhdGFBY2Nlc3Nvcjpbe3R5cGU6Ul99XSxjb2x1bW5EZWY6W3t0eXBlOmFyLGFyZ3M6W3oxLHtzdGF0aWM6ITB9XX1dLGNlbGw6W3t0eXBlOmFyLGFyZ3M6W0UxLHtzdGF0aWM6ITB9XX1dLGhlYWRlckNlbGw6W3t0eXBlOmFyLGFyZ3M6W0ExLHtzdGF0aWM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBmMz1bcDMsWDEsRTEsSzEsQTEsVDEsejEsTDEsJDEsSDEsRjEsSjEsWTEsUTEsWjEscjMsczMsbDMsdTMsdDMsYTMsYzNdO2NsYXNzIGcze31nMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZzMpfSxnMy7JtW1vZD11byh7dHlwZTpnM30pLGczLsm1aW5qPURuKHtpbXBvcnRzOltbZkJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZzMsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOmYzLGRlY2xhcmF0aW9uczpmMyxpbXBvcnRzOltmQl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhnMyx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3AzLFgxLEUxLEsxLEExLFQxLHoxLEwxLCQxLEgxLEYxLEoxLFkxLFExLFoxLHIzLHMzLGwzLHUzLHQzLGEzLGMzXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltmQl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcDMsWDEsRTEsSzEsQTEsVDEsejEsTDEsJDEsSDEsRjEsSjEsWTEsUTEsWjEscjMsczMsbDMsdTMsdDMsYTMsYzNdfX0pO2NvbnN0IGgzPVtbWyJjYXB0aW9uIl1dLFtbImNvbGdyb3VwIl0sWyJjb2wiXV1dO2Z1bmN0aW9uIGIzKHQsZSl7aWYoMSZ0JiYoX3UoMCwidGgiLDMpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO2xmKCJ0ZXh0LWFsaWduIix0Lmp1c3RpZnkpLERjKDEpLGtmKCIgIix0LmhlYWRlclRleHQsIiAiKX19ZnVuY3Rpb24geTModCxlKXtpZigxJnQmJihfdSgwLCJ0ZCIsNCksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoKTtsZigidGV4dC1hbGlnbiIsbi5qdXN0aWZ5KSxEYygxKSxrZigiICIsbi5kYXRhQWNjZXNzb3IodCxuLm5hbWUpLCIgIil9fWNsYXNzIF8ze31fMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8XzMpfSxfMy7JtWRpcj1obyh7dHlwZTpfMyxzZWxlY3RvcnM6W1sibWF0LXRhYmxlIiwicmVjeWNsZVJvd3MiLCIiXSxbInRhYmxlIiwibWF0LXRhYmxlIiwiIiwicmVjeWNsZVJvd3MiLCIiXV0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTp0Qix1c2VDbGFzczpKTH1dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF8zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWJsZVtyZWN5Y2xlUm93c10sIHRhYmxlW21hdC10YWJsZV1bcmVjeWNsZVJvd3NdIixwcm92aWRlcnM6W3twcm92aWRlOnRCLHVzZUNsYXNzOkpMfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgQzMgZXh0ZW5kcyBwM3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zdGlja3lDc3NDbGFzcz0ibWF0LXRhYmxlLXN0aWNreSIsdGhpcy5uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50PSExfX1DMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoQzMpKSkobnx8QzMpfX0pKCksQzMuybVjbXA9c28oe3R5cGU6QzMsc2VsZWN0b3JzOltbIm1hdC10YWJsZSJdLFsidGFibGUiLCJtYXQtdGFibGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtdGFibGUiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigibWF0LXRhYmxlLWZpeGVkLWxheW91dCIsbi5maXhlZExheW91dCl9LGV4cG9ydEFzOlsibWF0VGFibGUiXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOnRCLHVzZUNsYXNzOktMfSx7cHJvdmlkZTpwMyx1c2VFeGlzdGluZzpDM30se3Byb3ZpZGU6RDEsdXNlRXhpc3Rpbmc6QzN9LHtwcm92aWRlOlYxLHVzZUNsYXNzOlUxfSx7cHJvdmlkZTppMyx1c2VWYWx1ZTpudWxsfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyJjYXB0aW9uIiwiY29sZ3JvdXAsIGNvbCJdLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWyJoZWFkZXJSb3dPdXRsZXQiLCIiXSxbInJvd091dGxldCIsIiJdLFsibm9EYXRhUm93T3V0bGV0IiwiIl0sWyJmb290ZXJSb3dPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEl1KGgzKSxIdSgwKSxIdSgxLDEpLE91KDIsMCksT3UoMywxKSxPdSg0LDIpLE91KDUsMykpfSxkaXJlY3RpdmVzOltzMyxyMyxjMyxsM10sc3R5bGVzOlsnbWF0LXRhYmxle2Rpc3BsYXk6YmxvY2t9bWF0LWhlYWRlci1yb3d7bWluLWhlaWdodDo1NnB4fW1hdC1yb3csbWF0LWZvb3Rlci1yb3d7bWluLWhlaWdodDo0OHB4fW1hdC1yb3csbWF0LWhlYWRlci1yb3csbWF0LWZvb3Rlci1yb3d7ZGlzcGxheTpmbGV4O2JvcmRlci13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZDthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94fW1hdC1yb3c6OmFmdGVyLG1hdC1oZWFkZXItcm93OjphZnRlcixtYXQtZm9vdGVyLXJvdzo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLWhlaWdodDppbmhlcml0O2NvbnRlbnQ6IiJ9bWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZSxtYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZSxtYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZXtwYWRkaW5nLWxlZnQ6MjRweH1bZGlyPXJ0bF0gbWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MjRweH1tYXQtY2VsbDpsYXN0LW9mLXR5cGUsbWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZSxtYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBle3BhZGRpbmctcmlnaHQ6MjRweH1bZGlyPXJ0bF0gbWF0LWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MjRweH1tYXQtY2VsbCxtYXQtaGVhZGVyLWNlbGwsbWF0LWZvb3Rlci1jZWxse2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO292ZXJmbG93OmhpZGRlbjt3b3JkLXdyYXA6YnJlYWstd29yZDttaW4taGVpZ2h0OmluaGVyaXR9dGFibGUubWF0LXRhYmxle2JvcmRlci1zcGFjaW5nOjB9dHIubWF0LWhlYWRlci1yb3d7aGVpZ2h0OjU2cHh9dHIubWF0LXJvdyx0ci5tYXQtZm9vdGVyLXJvd3toZWlnaHQ6NDhweH10aC5tYXQtaGVhZGVyLWNlbGx7dGV4dC1hbGlnbjpsZWZ0fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGx7dGV4dC1hbGlnbjpyaWdodH10aC5tYXQtaGVhZGVyLWNlbGwsdGQubWF0LWNlbGwsdGQubWF0LWZvb3Rlci1jZWxse3BhZGRpbmc6MDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkfXRoLm1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlLHRkLm1hdC1jZWxsOmZpcnN0LW9mLXR5cGUsdGQubWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGV7cGFkZGluZy1sZWZ0OjI0cHh9W2Rpcj1ydGxdIHRoLm1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjI0cHh9dGgubWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZSx0ZC5tYXQtY2VsbDpsYXN0LW9mLXR5cGUsdGQubWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLXJpZ2h0OjI0cHh9W2Rpcj1ydGxdIHRoLm1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjI0cHh9Lm1hdC10YWJsZS1zdGlja3l7cG9zaXRpb246LXdlYmtpdC1zdGlja3kgIWltcG9ydGFudDtwb3NpdGlvbjpzdGlja3kgIWltcG9ydGFudH0ubWF0LXRhYmxlLWZpeGVkLWxheW91dHt0YWJsZS1sYXlvdXQ6Zml4ZWR9XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEMzLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWJsZSwgdGFibGVbbWF0LXRhYmxlXSIsZXhwb3J0QXM6Im1hdFRhYmxlIix0ZW1wbGF0ZTpkMyxob3N0OntjbGFzczoibWF0LXRhYmxlIiwiW2NsYXNzLm1hdC10YWJsZS1maXhlZC1sYXlvdXRdIjoiZml4ZWRMYXlvdXQifSxwcm92aWRlcnM6W3twcm92aWRlOnRCLHVzZUNsYXNzOktMfSx7cHJvdmlkZTpwMyx1c2VFeGlzdGluZzpDM30se3Byb3ZpZGU6RDEsdXNlRXhpc3Rpbmc6QzN9LHtwcm92aWRlOlYxLHVzZUNsYXNzOlUxfSx7cHJvdmlkZTppMyx1c2VWYWx1ZTpudWxsfV0sZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGNoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0LHN0eWxlczpbJ21hdC10YWJsZXtkaXNwbGF5OmJsb2NrfW1hdC1oZWFkZXItcm93e21pbi1oZWlnaHQ6NTZweH1tYXQtcm93LG1hdC1mb290ZXItcm93e21pbi1oZWlnaHQ6NDhweH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93e2Rpc3BsYXk6ZmxleDtib3JkZXItd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveH1tYXQtcm93OjphZnRlcixtYXQtaGVhZGVyLXJvdzo6YWZ0ZXIsbWF0LWZvb3Rlci1yb3c6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi1oZWlnaHQ6aW5oZXJpdDtjb250ZW50OiIifW1hdC1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGV7cGFkZGluZy1sZWZ0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjI0cHh9bWF0LWNlbGw6bGFzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLXJpZ2h0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjI0cHh9bWF0LWNlbGwsbWF0LWhlYWRlci1jZWxsLG1hdC1mb290ZXItY2VsbHtmbGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d29yZC13cmFwOmJyZWFrLXdvcmQ7bWluLWhlaWdodDppbmhlcml0fXRhYmxlLm1hdC10YWJsZXtib3JkZXItc3BhY2luZzowfXRyLm1hdC1oZWFkZXItcm93e2hlaWdodDo1NnB4fXRyLm1hdC1yb3csdHIubWF0LWZvb3Rlci1yb3d7aGVpZ2h0OjQ4cHh9dGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246cmlnaHR9dGgubWF0LWhlYWRlci1jZWxsLHRkLm1hdC1jZWxsLHRkLm1hdC1mb290ZXItY2VsbHtwYWRkaW5nOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZH10aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fXRoLm1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fS5tYXQtdGFibGUtc3RpY2t5e3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5ICFpbXBvcnRhbnQ7cG9zaXRpb246c3RpY2t5ICFpbXBvcnRhbnR9Lm1hdC10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfVxuJ119XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBNMyBleHRlbmRzIEUxe31NMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoTTMpKSkobnx8TTMpfX0pKCksTTMuybVkaXI9aG8oe3R5cGU6TTMsc2VsZWN0b3JzOltbIiIsIm1hdENlbGxEZWYiLCIiXV0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpFMSx1c2VFeGlzdGluZzpNM31dKSxRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE0zLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IlttYXRDZWxsRGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpFMSx1c2VFeGlzdGluZzpNM31dfV19XSxudWxsLG51bGwpO2NsYXNzIHYzIGV4dGVuZHMgQTF7fXYzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYSh2MykpKShufHx2Myl9fSkoKSx2My7JtWRpcj1obyh7dHlwZTp2MyxzZWxlY3RvcnM6W1siIiwibWF0SGVhZGVyQ2VsbERlZiIsIiJdXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOkExLHVzZUV4aXN0aW5nOnYzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEhlYWRlckNlbGxEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOkExLHVzZUV4aXN0aW5nOnYzfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgeDMgZXh0ZW5kcyBUMXt9eDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKHgzKSkpKG58fHgzKX19KSgpLHgzLsm1ZGlyPWhvKHt0eXBlOngzLHNlbGVjdG9yczpbWyIiLCJtYXRGb290ZXJDZWxsRGVmIiwiIl1dLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6VDEsdXNlRXhpc3Rpbmc6eDN9XSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4Myxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0Rm9vdGVyQ2VsbERlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6VDEsdXNlRXhpc3Rpbmc6eDN9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBPMyBleHRlbmRzIHoxe2dldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fc2V0TmFtZUlucHV0KHQpfV91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKXtzdXBlci5fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCksdGhpcy5fY29sdW1uQ3NzQ2xhc3NOYW1lLnB1c2goYG1hdC1jb2x1bW4tJHt0aGlzLmNzc0NsYXNzRnJpZW5kbHlOYW1lfWApfX1PMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoTzMpKSkobnx8TzMpfX0pKCksTzMuybVkaXI9aG8oe3R5cGU6TzMsc2VsZWN0b3JzOltbIiIsIm1hdENvbHVtbkRlZiIsIiJdXSxpbnB1dHM6e3N0aWNreToic3RpY2t5IixuYW1lOlsibWF0Q29sdW1uRGVmIiwibmFtZSJdfSxmZWF0dXJlczpbVWgoW3twcm92aWRlOnoxLHVzZUV4aXN0aW5nOk8zfSx7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOk8zfV0pLFFwXX0pLE8zLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpSXyxhcmdzOlsibWF0Q29sdW1uRGVmIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihPMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0Q29sdW1uRGVmXSIsaW5wdXRzOlsic3RpY2t5Il0scHJvdmlkZXJzOlt7cHJvdmlkZTp6MSx1c2VFeGlzdGluZzpPM30se3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzpPM31dfV19XSxudWxsLHtuYW1lOlt7dHlwZTpSXyxhcmdzOlsibWF0Q29sdW1uRGVmIl19XX0pO2NsYXNzIFAzIGV4dGVuZHMgSDF7fVAzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYShQMykpKShufHxQMyl9fSkoKSxQMy7JtWRpcj1obyh7dHlwZTpQMyxzZWxlY3RvcnM6W1sibWF0LWhlYWRlci1jZWxsIl0sWyJ0aCIsIm1hdC1oZWFkZXItY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJtYXQtaGVhZGVyLWNlbGwiXSxmZWF0dXJlczpbUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtaGVhZGVyLWNlbGwsIHRoW21hdC1oZWFkZXItY2VsbF0iLGhvc3Q6e2NsYXNzOiJtYXQtaGVhZGVyLWNlbGwiLHJvbGU6ImNvbHVtbmhlYWRlciJ9fV19XSxudWxsLG51bGwpO2NsYXNzIHczIGV4dGVuZHMgRjF7fXczLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYSh3MykpKShufHx3Myl9fSkoKSx3My7JtWRpcj1obyh7dHlwZTp3MyxzZWxlY3RvcnM6W1sibWF0LWZvb3Rlci1jZWxsIl0sWyJ0ZCIsIm1hdC1mb290ZXItY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JpZGNlbGwiLDEsIm1hdC1mb290ZXItY2VsbCJdLGZlYXR1cmVzOltRcF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHczLFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1mb290ZXItY2VsbCwgdGRbbWF0LWZvb3Rlci1jZWxsXSIsaG9zdDp7Y2xhc3M6Im1hdC1mb290ZXItY2VsbCIscm9sZToiZ3JpZGNlbGwifX1dfV0sbnVsbCxudWxsKTtjbGFzcyBrMyBleHRlbmRzIEwxe31rMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoazMpKSkobnx8azMpfX0pKCksazMuybVkaXI9aG8oe3R5cGU6azMsc2VsZWN0b3JzOltbIm1hdC1jZWxsIl0sWyJ0ZCIsIm1hdC1jZWxsIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJncmlkY2VsbCIsMSwibWF0LWNlbGwiXSxmZWF0dXJlczpbUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihrMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtY2VsbCwgdGRbbWF0LWNlbGxdIixob3N0OntjbGFzczoibWF0LWNlbGwiLHJvbGU6ImdyaWRjZWxsIn19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBTMyBleHRlbmRzIFkxe31TMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoUzMpKSkobnx8UzMpfX0pKCksUzMuybVkaXI9aG8oe3R5cGU6UzMsc2VsZWN0b3JzOltbIiIsIm1hdEhlYWRlclJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJtYXRIZWFkZXJSb3dEZWYiLCJjb2x1bW5zIl0sc3RpY2t5OlsibWF0SGVhZGVyUm93RGVmU3RpY2t5Iiwic3RpY2t5Il19LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6WTEsdXNlRXhpc3Rpbmc6UzN9XSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0SGVhZGVyUm93RGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpZMSx1c2VFeGlzdGluZzpTM31dLGlucHV0czpbImNvbHVtbnM6IG1hdEhlYWRlclJvd0RlZiIsInN0aWNreTogbWF0SGVhZGVyUm93RGVmU3RpY2t5Il19XX1dLG51bGwsbnVsbCk7Y2xhc3MgRDMgZXh0ZW5kcyBaMXt9RDMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKEQzKSkpKG58fEQzKX19KSgpLEQzLsm1ZGlyPWhvKHt0eXBlOkQzLHNlbGVjdG9yczpbWyIiLCJtYXRGb290ZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsibWF0Rm9vdGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbIm1hdEZvb3RlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbVWgoW3twcm92aWRlOloxLHVzZUV4aXN0aW5nOkQzfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRDMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW21hdEZvb3RlclJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6WjEsdXNlRXhpc3Rpbmc6RDN9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRGb290ZXJSb3dEZWYiLCJzdGlja3k6IG1hdEZvb3RlclJvd0RlZlN0aWNreSJdfV19XSxudWxsLG51bGwpO2NsYXNzIFIzIGV4dGVuZHMgWDF7fVIzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYShSMykpKShufHxSMyl9fSkoKSxSMy7JtWRpcj1obyh7dHlwZTpSMyxzZWxlY3RvcnM6W1siIiwibWF0Um93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdFJvd0RlZkNvbHVtbnMiLCJjb2x1bW5zIl0sd2hlbjpbIm1hdFJvd0RlZldoZW4iLCJ3aGVuIl19LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6WDEsdXNlRXhpc3Rpbmc6UjN9XSksUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihSMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0Um93RGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpYMSx1c2VFeGlzdGluZzpSM31dLGlucHV0czpbImNvbHVtbnM6IG1hdFJvd0RlZkNvbHVtbnMiLCJ3aGVuOiBtYXRSb3dEZWZXaGVuIl19XX1dLG51bGwsbnVsbCk7Y2xhc3MgRTMgZXh0ZW5kcyBKMXt9RTMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKEUzKSkpKG58fEUzKX19KSgpLEUzLsm1Y21wPXNvKHt0eXBlOkUzLHNlbGVjdG9yczpbWyJtYXQtaGVhZGVyLXJvdyJdLFsidHIiLCJtYXQtaGVhZGVyLXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJtYXQtaGVhZGVyLXJvdyJdLGV4cG9ydEFzOlsibWF0SGVhZGVyUm93Il0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpKMSx1c2VFeGlzdGluZzpFM31dKSxRcF0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmT3UoMCwwKX0sZGlyZWN0aXZlczpbSzFdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRTMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWhlYWRlci1yb3csIHRyW21hdC1oZWFkZXItcm93XSIsdGVtcGxhdGU6ajEsaG9zdDp7Y2xhc3M6Im1hdC1oZWFkZXItcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246VW4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOlduLk5vbmUsZXhwb3J0QXM6Im1hdEhlYWRlclJvdyIscHJvdmlkZXJzOlt7cHJvdmlkZTpKMSx1c2VFeGlzdGluZzpFM31dfV19XSxudWxsLG51bGwpO2NsYXNzIEEzIGV4dGVuZHMgUTF7fUEzLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1qYShBMykpKShufHxBMyl9fSkoKSxBMy7JtWNtcD1zbyh7dHlwZTpBMyxzZWxlY3RvcnM6W1sibWF0LWZvb3Rlci1yb3ciXSxbInRyIiwibWF0LWZvb3Rlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LWZvb3Rlci1yb3ciXSxleHBvcnRBczpbIm1hdEZvb3RlclJvdyJdLGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6UTEsdXNlRXhpc3Rpbmc6QTN9XSksUXBdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJk91KDAsMCl9LGRpcmVjdGl2ZXM6W0sxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEEzLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1mb290ZXItcm93LCB0clttYXQtZm9vdGVyLXJvd10iLHRlbXBsYXRlOmoxLGhvc3Q6e2NsYXNzOiJtYXQtZm9vdGVyLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOlVuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpXbi5Ob25lLGV4cG9ydEFzOiJtYXRGb290ZXJSb3ciLHByb3ZpZGVyczpbe3Byb3ZpZGU6UTEsdXNlRXhpc3Rpbmc6QTN9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBUMyBleHRlbmRzICQxe31UMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoVDMpKSkobnx8VDMpfX0pKCksVDMuybVjbXA9c28oe3R5cGU6VDMsc2VsZWN0b3JzOltbIm1hdC1yb3ciXSxbInRyIiwibWF0LXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJtYXQtcm93Il0sZXhwb3J0QXM6WyJtYXRSb3ciXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOiQxLHVzZUV4aXN0aW5nOlQzfV0pLFFwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZPdSgwLDApfSxkaXJlY3RpdmVzOltLMV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihUMyxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtcm93LCB0clttYXQtcm93XSIsdGVtcGxhdGU6ajEsaG9zdDp7Y2xhc3M6Im1hdC1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjpVbi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246V24uTm9uZSxleHBvcnRBczoibWF0Um93Iixwcm92aWRlcnM6W3twcm92aWRlOiQxLHVzZUV4aXN0aW5nOlQzfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgTjMgZXh0ZW5kcyB0M3t9TjMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKE4zKSkpKG58fE4zKX19KSgpLE4zLsm1ZGlyPWhvKHt0eXBlOk4zLHNlbGVjdG9yczpbWyJuZy10ZW1wbGF0ZSIsIm1hdE5vRGF0YVJvdyIsIiJdXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOnQzLHVzZUV4aXN0aW5nOk4zfV0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTjMsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibmctdGVtcGxhdGVbbWF0Tm9EYXRhUm93XSIscHJvdmlkZXJzOlt7cHJvdmlkZTp0Myx1c2VFeGlzdGluZzpOM31dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgejMgZXh0ZW5kcyB1M3t9ejMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKHozKSkpKG58fHozKX19KSgpLHozLsm1Y21wPXNvKHt0eXBlOnozLHNlbGVjdG9yczpbWyJtYXQtdGV4dC1jb2x1bW4iXV0sZmVhdHVyZXM6W1FwXSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1sibWF0Q29sdW1uRGVmIiwiIl0sWyJtYXQtaGVhZGVyLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsIm1hdEhlYWRlckNlbGxEZWYiXSxbIm1hdC1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJtYXRDZWxsRGVmIl0sWyJtYXQtaGVhZGVyLWNlbGwiLCIiXSxbIm1hdC1jZWxsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJih2dSgwLDApLEhtKDEsYjMsMiwzLCJ0aCIsMSksSG0oMix5MywyLDMsInRkIiwyKSx4dSgpKX0sZGlyZWN0aXZlczpbTzMsdjMsTTMsUDMsazNdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoejMsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRleHQtY29sdW1uIix0ZW1wbGF0ZTonXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtzdHlsZS50ZXh0LWFsaWduXT0ianVzdGlmeSI+XG4gICAgICAgIHt7aGVhZGVyVGV4dH19XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPSJsZXQgZGF0YSIgW3N0eWxlLnRleHQtYWxpZ25dPSJqdXN0aWZ5Ij5cbiAgICAgICAge3tkYXRhQWNjZXNzb3IoZGF0YSwgbmFtZSl9fVxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLkRlZmF1bHR9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBJMz1bQzMsXzMsdjMsUzMsTzMsTTMsUjMseDMsRDMsUDMsazMsdzMsRTMsVDMsQTMsTjMsejNdO2NsYXNzIEgze31IMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SDMpfSxIMy7JtW1vZD11byh7dHlwZTpIM30pLEgzLsm1aW5qPURuKHtpbXBvcnRzOltbZzMsV0ZdLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSDMsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltnMyxXRl0sZXhwb3J0czpbV0YsSTNdLGRlY2xhcmF0aW9uczpJM31dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEgzLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bQzMsXzMsdjMsUzMsTzMsTTMsUjMseDMsRDMsUDMsazMsdzMsRTMsVDMsQTMsTjMsejNdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2czLFdGXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltXRixDMyxfMyx2MyxTMyxPMyxNMyxSMyx4MyxEMyxQMyxrMyx3MyxFMyxUMyxBMyxOMyx6M119fSk7Y2xhc3MgRjMgZXh0ZW5kcyBxTHtjb25zdHJ1Y3Rvcih0PVtdKXtzdXBlcigpLHRoaXMuX3JlbmRlckRhdGE9bmV3IFUoW10pLHRoaXMuX2ZpbHRlcj1uZXcgVSgiIiksdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcz1uZXcgQix0aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5zb3J0aW5nRGF0YUFjY2Vzc29yPSh0LGUpPT57Y29uc3Qgbj10W2VdO2lmKHVIKG4pKXtjb25zdCB0PU51bWJlcihuKTtyZXR1cm4gdDw5MDA3MTk5MjU0NzQwOTkxP3Q6bn1yZXR1cm4gbn0sdGhpcy5zb3J0RGF0YT0odCxlKT0+e2NvbnN0IG49ZS5hY3RpdmUsbz1lLmRpcmVjdGlvbjtyZXR1cm4gbiYmIiIhPW8/dC5zb3J0KCgodCxlKT0+e2xldCBpPXRoaXMuc29ydGluZ0RhdGFBY2Nlc3Nvcih0LG4pLGE9dGhpcy5zb3J0aW5nRGF0YUFjY2Vzc29yKGUsbik7Y29uc3Qgcj10eXBlb2YgaSxzPXR5cGVvZiBhO3IhPT1zJiYoIm51bWJlciI9PT1yJiYoaSs9IiIpLCJudW1iZXIiPT09cyYmKGErPSIiKSk7bGV0IGw9MDtyZXR1cm4gbnVsbCE9aSYmbnVsbCE9YT9pPmE/bD0xOmk8YSYmKGw9LTEpOm51bGwhPWk/bD0xOm51bGwhPWEmJihsPS0xKSxsKigiYXNjIj09bz8xOi0xKX0pKTp0fSx0aGlzLmZpbHRlclByZWRpY2F0ZT0odCxlKT0+e2NvbnN0IG49T2JqZWN0LmtleXModCkucmVkdWNlKCgoZSxuKT0+ZSt0W25dKyLil6wiKSwiIikudG9Mb3dlckNhc2UoKSxvPWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuLTEhPW4uaW5kZXhPZihvKX0sdGhpcy5fZGF0YT1uZXcgVSh0KSx0aGlzLl91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKX1nZXQgZGF0YSgpe3JldHVybiB0aGlzLl9kYXRhLnZhbHVlfXNldCBkYXRhKHQpe3RoaXMuX2RhdGEubmV4dCh0KSx0aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9ufHx0aGlzLl9maWx0ZXJEYXRhKHQpfWdldCBmaWx0ZXIoKXtyZXR1cm4gdGhpcy5fZmlsdGVyLnZhbHVlfXNldCBmaWx0ZXIodCl7dGhpcy5fZmlsdGVyLm5leHQodCksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbnx8dGhpcy5fZmlsdGVyRGF0YSh0aGlzLmRhdGEpfWdldCBzb3J0KCl7cmV0dXJuIHRoaXMuX3NvcnR9c2V0IHNvcnQodCl7dGhpcy5fc29ydD10LHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpfWdldCBwYWdpbmF0b3IoKXtyZXR1cm4gdGhpcy5fcGFnaW5hdG9yfXNldCBwYWdpbmF0b3IodCl7dGhpcy5fcGFnaW5hdG9yPXQsdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl9X3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpe3ZhciB0O2NvbnN0IGU9dGhpcy5fc29ydD9wZSh0aGlzLl9zb3J0LnNvcnRDaGFuZ2UsdGhpcy5fc29ydC5pbml0aWFsaXplZCk6enQobnVsbCksbj10aGlzLl9wYWdpbmF0b3I/cGUodGhpcy5fcGFnaW5hdG9yLnBhZ2UsdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcyx0aGlzLl9wYWdpbmF0b3IuaW5pdGlhbGl6ZWQpOnp0KG51bGwpLG89S3QoW3RoaXMuX2RhdGEsdGhpcy5fZmlsdGVyXSkucGlwZShWdCgoKFt0XSk9PnRoaXMuX2ZpbHRlckRhdGEodCkpKSksaT1LdChbbyxlXSkucGlwZShWdCgoKFt0XSk9PnRoaXMuX29yZGVyRGF0YSh0KSkpKSxhPUt0KFtpLG5dKS5waXBlKFZ0KCgoW3RdKT0+dGhpcy5fcGFnZURhdGEodCkpKSk7bnVsbD09PSh0PXRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb24pfHx2b2lkIDA9PT10fHx0LnVuc3Vic2NyaWJlKCksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbj1hLnN1YnNjcmliZSgodD0+dGhpcy5fcmVuZGVyRGF0YS5uZXh0KHQpKSl9X2ZpbHRlckRhdGEodCl7cmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhPW51bGw9PXRoaXMuZmlsdGVyfHwiIj09PXRoaXMuZmlsdGVyP3Q6dC5maWx0ZXIoKHQ9PnRoaXMuZmlsdGVyUHJlZGljYXRlKHQsdGhpcy5maWx0ZXIpKSksdGhpcy5wYWdpbmF0b3ImJnRoaXMuX3VwZGF0ZVBhZ2luYXRvcih0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGgpLHRoaXMuZmlsdGVyZWREYXRhfV9vcmRlckRhdGEodCl7cmV0dXJuIHRoaXMuc29ydD90aGlzLnNvcnREYXRhKHQuc2xpY2UoKSx0aGlzLnNvcnQpOnR9X3BhZ2VEYXRhKHQpe2lmKCF0aGlzLnBhZ2luYXRvcilyZXR1cm4gdDtjb25zdCBlPXRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCp0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZTtyZXR1cm4gdC5zbGljZShlLGUrdGhpcy5wYWdpbmF0b3IucGFnZVNpemUpfV91cGRhdGVQYWdpbmF0b3IodCl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pntjb25zdCBlPXRoaXMucGFnaW5hdG9yO2lmKGUmJihlLmxlbmd0aD10LGUucGFnZUluZGV4PjApKXtjb25zdCB0PU1hdGguY2VpbChlLmxlbmd0aC9lLnBhZ2VTaXplKS0xfHwwLG49TWF0aC5taW4oZS5wYWdlSW5kZXgsdCk7biE9PWUucGFnZUluZGV4JiYoZS5wYWdlSW5kZXg9bix0aGlzLl9pbnRlcm5hbFBhZ2VDaGFuZ2VzLm5leHQoKSl9fSkpfWNvbm5lY3QoKXtyZXR1cm4gdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbnx8dGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCksdGhpcy5fcmVuZGVyRGF0YX1kaXNjb25uZWN0KCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb24pfHx2b2lkIDA9PT10fHx0LnVuc3Vic2NyaWJlKCksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbj1udWxsfX1jbGFzcyBMMyBleHRlbmRzIEYze31jb25zdCBCMz1bInBhbmVsIl07ZnVuY3Rpb24gVjModCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDAsMSksSHUoMiksQ3UoKSksMiZ0KXtjb25zdCB0PWUuaWQsbj1OdSgpO2h1KCJpZCIsbi5pZCkoIm5nQ2xhc3MiLG4uX2NsYXNzTGlzdCkseW0oImFyaWEtbGFiZWwiLG4uYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IixuLl9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KHQpKX19bGV0IFUzPTA7Y2xhc3MgajN7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMub3B0aW9uPWV9fWNvbnN0IFczPXFGKGNsYXNze30pLEczPW5ldyBlcigibWF0LWF1dG9jb21wbGV0ZS1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIFkzKCl7cmV0dXJue2F1dG9BY3RpdmVGaXJzdE9wdGlvbjohMX19fSk7Y2xhc3MgcTMgZXh0ZW5kcyBXM3tjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcigpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2FjdGl2ZU9wdGlvbkNoYW5nZXM9Zi5FTVBUWSx0aGlzLnNob3dQYW5lbD0hMSx0aGlzLl9pc09wZW49ITEsdGhpcy5kaXNwbGF5V2l0aD1udWxsLHRoaXMub3B0aW9uU2VsZWN0ZWQ9bmV3IFN5LHRoaXMub3BlbmVkPW5ldyBTeSx0aGlzLmNsb3NlZD1uZXcgU3ksdGhpcy5vcHRpb25BY3RpdmF0ZWQ9bmV3IFN5LHRoaXMuX2NsYXNzTGlzdD17fSx0aGlzLmlkPSJtYXQtYXV0b2NvbXBsZXRlLSIrVTMrKyx0aGlzLmluZXJ0R3JvdXBzPShudWxsPT1vP3ZvaWQgMDpvLlNBRkFSSSl8fCExLHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbj0hIW4uYXV0b0FjdGl2ZUZpcnN0T3B0aW9ufWdldCBpc09wZW4oKXtyZXR1cm4gdGhpcy5faXNPcGVuJiZ0aGlzLnNob3dQYW5lbH1nZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbn1zZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKHQpe3RoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbj1wSCh0KX1zZXQgY2xhc3NMaXN0KHQpe3RoaXMuX2NsYXNzTGlzdD10JiZ0Lmxlbmd0aD8oZnVuY3Rpb24gZSh0LG49L1xzKy8pe2NvbnN0IG89W107aWYobnVsbCE9dCl7Y29uc3QgZT1BcnJheS5pc0FycmF5KHQpP3Q6YCR7dH1gLnNwbGl0KG4pO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9YCR7dH1gLnRyaW0oKTtlJiZvLnB1c2goZSl9fXJldHVybiBvfSkodCkucmVkdWNlKCgodCxlKT0+KHRbZV09ITAsdCkpLHt9KTp7fSx0aGlzLl9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0aGlzLl9jbGFzc0xpc3QpLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWU9IiJ9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fa2V5TWFuYWdlcj1uZXcgWkgodGhpcy5vcHRpb25zKS53aXRoV3JhcCgpLHRoaXMuX2FjdGl2ZU9wdGlvbkNoYW5nZXM9dGhpcy5fa2V5TWFuYWdlci5jaGFuZ2Uuc3Vic2NyaWJlKCh0PT57dGhpcy5vcHRpb25BY3RpdmF0ZWQuZW1pdCh7c291cmNlOnRoaXMsb3B0aW9uOnRoaXMub3B0aW9ucy50b0FycmF5KClbdF18fG51bGx9KX0pKSx0aGlzLl9zZXRWaXNpYmlsaXR5KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzLnVuc3Vic2NyaWJlKCl9X3NldFNjcm9sbFRvcCh0KXt0aGlzLnBhbmVsJiYodGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcD10KX1fZ2V0U2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMucGFuZWw/dGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDowfV9zZXRWaXNpYmlsaXR5KCl7dGhpcy5zaG93UGFuZWw9ISF0aGlzLm9wdGlvbnMubGVuZ3RoLHRoaXMuX3NldFZpc2liaWxpdHlDbGFzc2VzKHRoaXMuX2NsYXNzTGlzdCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X2VtaXRTZWxlY3RFdmVudCh0KXtjb25zdCBlPW5ldyBqMyh0aGlzLHQpO3RoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChlKX1fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSh0KXtpZih0aGlzLmFyaWFMYWJlbClyZXR1cm4gbnVsbDtyZXR1cm4gdGhpcy5hcmlhTGFiZWxsZWRieT8odD90KyIgIjoiIikrdGhpcy5hcmlhTGFiZWxsZWRieTp0fV9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0KXt0W3RoaXMuX3Zpc2libGVDbGFzc109dGhpcy5zaG93UGFuZWwsdFt0aGlzLl9oaWRkZW5DbGFzc109IXRoaXMuc2hvd1BhbmVsfX1xMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cTMpKGZ1KE9iKSxmdShLaCksZnUoRzMpLGZ1KF9IKSl9LHEzLsm1ZGlyPWhvKHt0eXBlOnEzLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoRWIsNyksVnkoQjMsNSkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4udGVtcGxhdGU9dC5maXJzdCksQnkodD1qeSgpKSYmKG4ucGFuZWw9dC5maXJzdCl9fSxpbnB1dHM6e2Rpc3BsYXlXaXRoOiJkaXNwbGF5V2l0aCIsYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiJhdXRvQWN0aXZlRmlyc3RPcHRpb24iLGNsYXNzTGlzdDpbImNsYXNzIiwiY2xhc3NMaXN0Il0sYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxwYW5lbFdpZHRoOiJwYW5lbFdpZHRoIn0sb3V0cHV0czp7b3B0aW9uU2VsZWN0ZWQ6Im9wdGlvblNlbGVjdGVkIixvcGVuZWQ6Im9wZW5lZCIsY2xvc2VkOiJjbG9zZWQiLG9wdGlvbkFjdGl2YXRlZDoib3B0aW9uQWN0aXZhdGVkIn0sZmVhdHVyZXM6W1FwXX0pLHEzLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2J9LHt0eXBlOktofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbRzNdfV19LHt0eXBlOl9IfV0scTMucHJvcERlY29yYXRvcnM9e3RlbXBsYXRlOlt7dHlwZTphcixhcmdzOltFYix7c3RhdGljOiEwfV19XSxwYW5lbDpbe3R5cGU6YXIsYXJnczpbInBhbmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sZGlzcGxheVdpdGg6W3t0eXBlOlJffV0sYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOlt7dHlwZTpSX31dLHBhbmVsV2lkdGg6W3t0eXBlOlJffV0sb3B0aW9uU2VsZWN0ZWQ6W3t0eXBlOkVffV0sb3BlbmVkOlt7dHlwZTpFX31dLGNsb3NlZDpbe3R5cGU6RV99XSxvcHRpb25BY3RpdmF0ZWQ6W3t0eXBlOkVffV0sY2xhc3NMaXN0Olt7dHlwZTpSXyxhcmdzOlsiY2xhc3MiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHEzLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn0se3R5cGU6S2h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltHM119XX0se3R5cGU6X0h9XX0pLHtkaXNwbGF5V2l0aDpbe3R5cGU6Ul99XSxvcHRpb25TZWxlY3RlZDpbe3R5cGU6RV99XSxvcGVuZWQ6W3t0eXBlOkVffV0sY2xvc2VkOlt7dHlwZTpFX31dLG9wdGlvbkFjdGl2YXRlZDpbe3R5cGU6RV99XSxhdXRvQWN0aXZlRmlyc3RPcHRpb246W3t0eXBlOlJffV0sY2xhc3NMaXN0Olt7dHlwZTpSXyxhcmdzOlsiY2xhc3MiXX1dLHRlbXBsYXRlOlt7dHlwZTphcixhcmdzOltFYix7c3RhdGljOiEwfV19XSxwYW5lbDpbe3R5cGU6YXIsYXJnczpbInBhbmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0scGFuZWxXaWR0aDpbe3R5cGU6Ul99XX0pO2NsYXNzIFozIGV4dGVuZHMgcTN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3Zpc2libGVDbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS12aXNpYmxlIix0aGlzLl9oaWRkZW5DbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS1oaWRkZW4ifX1aMy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEoWjMpKSkobnx8WjMpfX0pKCksWjMuybVjbXA9c28oe3R5cGU6WjMsc2VsZWN0b3JzOltbIm1hdC1hdXRvY29tcGxldGUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoVXkobyxSTCw1KSxVeShvLHpMLDUpKSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLm9wdGlvbkdyb3Vwcz10KSxCeSh0PWp5KCkpJiYobi5vcHRpb25zPXQpfX0saG9zdEF0dHJzOlsxLCJtYXQtYXV0b2NvbXBsZXRlIl0saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZXhwb3J0QXM6WyJtYXRBdXRvY29tcGxldGUiXSxmZWF0dXJlczpbVWgoW3twcm92aWRlOndMLHVzZUV4aXN0aW5nOlozfV0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbInJvbGUiLCJsaXN0Ym94IiwxLCJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsIiwzLCJpZCIsIm5nQ2xhc3MiXSxbInBhbmVsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihJdSgpLEhtKDAsVjMsMyw0LCJuZy10ZW1wbGF0ZSIpKX0sZGlyZWN0aXZlczpbQ3ZdLHN0eWxlczpbIi5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt2aXNpYmlsaXR5OmhpZGRlbjttYXgtd2lkdGg6bm9uZTttYXgtaGVpZ2h0OjI1NnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LWRpdmlkZXItaG9yaXpvbnRhbHttYXJnaW4tdG9wOi0xcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH1tYXQtYXV0b2NvbXBsZXRle2Rpc3BsYXk6bm9uZX1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLFozLnByb3BEZWNvcmF0b3JzPXtvcHRpb25Hcm91cHM6W3t0eXBlOm9yLGFyZ3M6W1JMLHtkZXNjZW5kYW50czohMH1dfV0sb3B0aW9uczpbe3R5cGU6b3IsYXJnczpbekwse2Rlc2NlbmRhbnRzOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihaMyxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtYXV0b2NvbXBsZXRlIix0ZW1wbGF0ZTonPG5nLXRlbXBsYXRlIGxldC1mb3JtRmllbGRJZD0iaWQiPlxuICA8ZGl2IGNsYXNzPSJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsIlxuICAgICAgIHJvbGU9Imxpc3Rib3giXG4gICAgICAgW2lkXT0iaWQiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCB8fCBudWxsIlxuICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09Il9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KGZvcm1GaWVsZElkKSJcbiAgICAgICBbbmdDbGFzc109Il9jbGFzc0xpc3QiXG4gICAgICAgI3BhbmVsPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxleHBvcnRBczoibWF0QXV0b2NvbXBsZXRlIixpbnB1dHM6WyJkaXNhYmxlUmlwcGxlIl0saG9zdDp7Y2xhc3M6Im1hdC1hdXRvY29tcGxldGUifSxwcm92aWRlcnM6W3twcm92aWRlOndMLHVzZUV4aXN0aW5nOlozfV0sc3R5bGVzOlsiLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7bWluLXdpZHRoOjExMnB4O21heC13aWR0aDoyODBweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO3Zpc2liaWxpdHk6aGlkZGVuO21heC13aWR0aDpub25lO21heC1oZWlnaHQ6MjU2cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHh9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS12aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbC5tYXQtYXV0b2NvbXBsZXRlLWhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbC1hYm92ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtZGl2aWRlci1ob3Jpem9udGFse21hcmdpbi10b3A6LTFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse291dGxpbmU6c29saWQgMXB4fW1hdC1hdXRvY29tcGxldGV7ZGlzcGxheTpub25lfVxuIl19XX1dLG51bGwse29wdGlvbkdyb3Vwczpbe3R5cGU6b3IsYXJnczpbUkwse2Rlc2NlbmRhbnRzOiEwfV19XSxvcHRpb25zOlt7dHlwZTpvcixhcmdzOlt6TCx7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBYM3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnRSZWY9dH19WDMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFgzKShmdShLaCkpfSxYMy7JtWRpcj1obyh7dHlwZTpYM30pLFgzLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFgzLFt7dHlwZTprX31dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH1dfSksbnVsbCk7Y2xhc3MgSzMgZXh0ZW5kcyBYM3t9SzMuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKEszKSkpKG58fEszKX19KSgpLEszLsm1ZGlyPWhvKHt0eXBlOkszLHNlbGVjdG9yczpbWyIiLCJtYXRBdXRvY29tcGxldGVPcmlnaW4iLCIiXV0sZXhwb3J0QXM6WyJtYXRBdXRvY29tcGxldGVPcmlnaW4iXSxmZWF0dXJlczpbUXBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLMyxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0QXV0b2NvbXBsZXRlT3JpZ2luXSIsZXhwb3J0QXM6Im1hdEF1dG9jb21wbGV0ZU9yaWdpbiJ9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBKMz1uZXcgZXIoIm1hdC1hdXRvY29tcGxldGUtc2Nyb2xsLXN0cmF0ZWd5Iik7Y29uc3QgUTM9e3Byb3ZpZGU6SjMsZGVwczpbclZdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gJDModCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fSx0Mj17cHJvdmlkZTpUaix1c2VFeGlzdGluZzokZSgoKCk9Pm4yKSksbXVsdGk6ITB9O2NsYXNzIGUye2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7dGhpcy5fZWxlbWVudD10LHRoaXMuX292ZXJsYXk9ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW4sdGhpcy5fem9uZT1vLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWksdGhpcy5fZGlyPXIsdGhpcy5fZm9ybUZpZWxkPXMsdGhpcy5fZG9jdW1lbnQ9bCx0aGlzLl92aWV3cG9ydFJ1bGVyPWMsdGhpcy5fZGVmYXVsdHM9ZCx0aGlzLl9jb21wb25lbnREZXN0cm95ZWQ9ITEsdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWQ9ITEsdGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsPSExLHRoaXMuX3ZpZXdwb3J0U3Vic2NyaXB0aW9uPWYuRU1QVFksdGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzPSEwLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW09bmV3IEIsdGhpcy5fd2luZG93Qmx1ckhhbmRsZXI9KCk9Pnt0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM9dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudHx8dGhpcy5wYW5lbE9wZW59LHRoaXMuX29uQ2hhbmdlPSgpPT57fSx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMucG9zaXRpb249ImF1dG8iLHRoaXMuYXV0b2NvbXBsZXRlQXR0cmlidXRlPSJvZmYiLHRoaXMuX292ZXJsYXlBdHRhY2hlZD0hMSx0aGlzLm9wdGlvblNlbGVjdGlvbnM9b2UoKCgpPT50aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUub3B0aW9ucz9wZSguLi50aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25zLm1hcCgodD0+dC5vblNlbGVjdGlvbkNoYW5nZSkpKTp0aGlzLl96b25lLm9uU3RhYmxlLnBpcGUodmUoMSksVmUoKCgpPT50aGlzLm9wdGlvblNlbGVjdGlvbnMpKSkpKSx0aGlzLl9zY3JvbGxTdHJhdGVneT1hfWdldCBhdXRvY29tcGxldGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZH1zZXQgYXV0b2NvbXBsZXRlRGlzYWJsZWQodCl7dGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWQ9cEgodCl9bmdBZnRlclZpZXdJbml0KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTt2b2lkIDAhPT10JiZ0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVySGFuZGxlcikpKX1uZ09uQ2hhbmdlcyh0KXt0LnBvc2l0aW9uJiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiYodGhpcy5fc2V0U3RyYXRlZ3lQb3NpdGlvbnModGhpcy5fcG9zaXRpb25TdHJhdGVneSksdGhpcy5wYW5lbE9wZW4mJnRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3ZvaWQgMCE9PXQmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1ckhhbmRsZXIpLHRoaXMuX3ZpZXdwb3J0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY29tcG9uZW50RGVzdHJveWVkPSEwLHRoaXMuX2Rlc3Ryb3lQYW5lbCgpLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW0uY29tcGxldGUoKX1nZXQgcGFuZWxPcGVuKCl7cmV0dXJuIHRoaXMuX292ZXJsYXlBdHRhY2hlZCYmdGhpcy5hdXRvY29tcGxldGUuc2hvd1BhbmVsfW9wZW5QYW5lbCgpe3RoaXMuX2F0dGFjaE92ZXJsYXkoKSx0aGlzLl9mbG9hdExhYmVsKCl9Y2xvc2VQYW5lbCgpe3RoaXMuX3Jlc2V0TGFiZWwoKSx0aGlzLl9vdmVybGF5QXR0YWNoZWQmJih0aGlzLnBhbmVsT3BlbiYmdGhpcy5hdXRvY29tcGxldGUuY2xvc2VkLmVtaXQoKSx0aGlzLmF1dG9jb21wbGV0ZS5faXNPcGVuPXRoaXMuX292ZXJsYXlBdHRhY2hlZD0hMSx0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkmJih0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpLHRoaXMuX2NvbXBvbmVudERlc3Ryb3llZHx8dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpKX11cGRhdGVQb3NpdGlvbigpe3RoaXMuX292ZXJsYXlBdHRhY2hlZCYmdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfWdldCBwYW5lbENsb3NpbmdBY3Rpb25zKCl7cmV0dXJuIHBlKHRoaXMub3B0aW9uU2VsZWN0aW9ucyx0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci50YWJPdXQucGlwZShmZSgoKCk9PnRoaXMuX292ZXJsYXlBdHRhY2hlZCkpKSx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLHRoaXMuX2dldE91dHNpZGVDbGlja1N0cmVhbSgpLHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnBpcGUoZmUoKCgpPT50aGlzLl9vdmVybGF5QXR0YWNoZWQpKSk6enQoKSkucGlwZShWdCgodD0+dCBpbnN0YW5jZW9mIFRMP3Q6bnVsbCkpKX1nZXQgYWN0aXZlT3B0aW9uKCl7cmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlJiZ0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlcj90aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtOm51bGx9X2dldE91dHNpZGVDbGlja1N0cmVhbSgpe3JldHVybiBwZShsZSh0aGlzLl9kb2N1bWVudCwiY2xpY2siKSxsZSh0aGlzLl9kb2N1bWVudCwiYXV4Y2xpY2siKSxsZSh0aGlzLl9kb2N1bWVudCwidG91Y2hlbmQiKSkucGlwZShmZSgodD0+e2NvbnN0IGU9QUgodCksbj10aGlzLl9mb3JtRmllbGQ/dGhpcy5fZm9ybUZpZWxkLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbCxvPXRoaXMuY29ubmVjdGVkVG8/dGhpcy5jb25uZWN0ZWRUby5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbDtyZXR1cm4gdGhpcy5fb3ZlcmxheUF0dGFjaGVkJiZlIT09dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50JiYoIW58fCFuLmNvbnRhaW5zKGUpKSYmKCFvfHwhby5jb250YWlucyhlKSkmJiEhdGhpcy5fb3ZlcmxheVJlZiYmIXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuY29udGFpbnMoZSl9KSkpfXdyaXRlVmFsdWUodCl7UHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCgpPT50aGlzLl9zZXRUcmlnZ2VyVmFsdWUodCkpKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQ9dH1faGFuZGxlS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZTtpZihlIT09ckh8fGRIKHQpfHx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5hY3RpdmVPcHRpb24mJmU9PT1hSCYmdGhpcy5wYW5lbE9wZW4pdGhpcy5hY3RpdmVPcHRpb24uX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdGhpcy5fcmVzZXRBY3RpdmVJdGVtKCksdC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgaWYodGhpcy5hdXRvY29tcGxldGUpe2NvbnN0IG49dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSxvPWU9PT1sSHx8ZT09PWNIO3RoaXMucGFuZWxPcGVufHw5PT09ZT90aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5vbktleWRvd24odCk6byYmdGhpcy5fY2FuT3BlbigpJiZ0aGlzLm9wZW5QYW5lbCgpLChvfHx0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtIT09bikmJnRoaXMuX3Njcm9sbFRvT3B0aW9uKHRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleHx8MCl9fV9oYW5kbGVJbnB1dCh0KXtsZXQgZT10LnRhcmdldCxuPWUudmFsdWU7Im51bWJlciI9PT1lLnR5cGUmJihuPSIiPT1uP251bGw6cGFyc2VGbG9hdChuKSksdGhpcy5fcHJldmlvdXNWYWx1ZSE9PW4mJih0aGlzLl9wcmV2aW91c1ZhbHVlPW4sdGhpcy5fb25DaGFuZ2UobiksdGhpcy5fY2FuT3BlbigpJiZ0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dC50YXJnZXQmJnRoaXMub3BlblBhbmVsKCkpfV9oYW5kbGVGb2N1cygpe3RoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cz90aGlzLl9jYW5PcGVuKCkmJih0aGlzLl9wcmV2aW91c1ZhbHVlPXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSx0aGlzLl9hdHRhY2hPdmVybGF5KCksdGhpcy5fZmxvYXRMYWJlbCghMCkpOnRoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cz0hMH1fZmxvYXRMYWJlbCh0PSExKXt0aGlzLl9mb3JtRmllbGQmJiJhdXRvIj09PXRoaXMuX2Zvcm1GaWVsZC5mbG9hdExhYmVsJiYodD90aGlzLl9mb3JtRmllbGQuX2FuaW1hdGVBbmRMb2NrTGFiZWwoKTp0aGlzLl9mb3JtRmllbGQuZmxvYXRMYWJlbD0iYWx3YXlzIix0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWw9ITApfV9yZXNldExhYmVsKCl7dGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsJiYodGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWw9ImF1dG8iLHRoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbD0hMSl9X3N1YnNjcmliZVRvQ2xvc2luZ0FjdGlvbnMoKXtyZXR1cm4gcGUodGhpcy5fem9uZS5vblN0YWJsZS5waXBlKHZlKDEpKSx0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25zLmNoYW5nZXMucGlwZShXZSgoKCk9PnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kucmVhcHBseUxhc3RQb3NpdGlvbigpKSksUGUoMCkpKS5waXBlKFZlKCgoKT0+e2NvbnN0IHQ9dGhpcy5wYW5lbE9wZW47cmV0dXJuIHRoaXMuX3Jlc2V0QWN0aXZlSXRlbSgpLHRoaXMuYXV0b2NvbXBsZXRlLl9zZXRWaXNpYmlsaXR5KCksdGhpcy5wYW5lbE9wZW4mJih0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdCE9PXRoaXMucGFuZWxPcGVuJiZ0aGlzLmF1dG9jb21wbGV0ZS5vcGVuZWQuZW1pdCgpKSx0aGlzLnBhbmVsQ2xvc2luZ0FjdGlvbnN9KSksdmUoMSkpLnN1YnNjcmliZSgodD0+dGhpcy5fc2V0VmFsdWVBbmRDbG9zZSh0KSkpfV9kZXN0cm95UGFuZWwoKXt0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5jbG9zZVBhbmVsKCksdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsKX1fc2V0VHJpZ2dlclZhbHVlKHQpe2NvbnN0IGU9dGhpcy5hdXRvY29tcGxldGUmJnRoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoP3RoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKHQpOnQsbj1udWxsIT1lP2U6IiI7dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5fY29udHJvbC52YWx1ZT1uOnRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZT1uLHRoaXMuX3ByZXZpb3VzVmFsdWU9bn1fc2V0VmFsdWVBbmRDbG9zZSh0KXt0JiZ0LnNvdXJjZSYmKHRoaXMuX2NsZWFyUHJldmlvdXNTZWxlY3RlZE9wdGlvbih0LnNvdXJjZSksdGhpcy5fc2V0VHJpZ2dlclZhbHVlKHQuc291cmNlLnZhbHVlKSx0aGlzLl9vbkNoYW5nZSh0LnNvdXJjZS52YWx1ZSksdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCksdGhpcy5hdXRvY29tcGxldGUuX2VtaXRTZWxlY3RFdmVudCh0LnNvdXJjZSkpLHRoaXMuY2xvc2VQYW5lbCgpfV9jbGVhclByZXZpb3VzU2VsZWN0ZWRPcHRpb24odCl7dGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5mb3JFYWNoKChlPT57ZSE9PXQmJmUuc2VsZWN0ZWQmJmUuZGVzZWxlY3QoKX0pKX1fYXR0YWNoT3ZlcmxheSgpe3ZhciB0O2lmKCF0aGlzLmF1dG9jb21wbGV0ZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIkF0dGVtcHRpbmcgdG8gb3BlbiBhbiB1bmRlZmluZWQgaW5zdGFuY2Ugb2YgYG1hdC1hdXRvY29tcGxldGVgLiBNYWtlIHN1cmUgdGhhdCB0aGUgaWQgcGFzc2VkIHRvIHRoZSBgbWF0QXV0b2NvbXBsZXRlYCBpcyBjb3JyZWN0IGFuZCB0aGF0IHlvdSdyZSBhdHRlbXB0aW5nIHRvIG9wZW4gaXQgYWZ0ZXIgdGhlIG5nQWZ0ZXJDb250ZW50SW5pdCBob29rLiIpfSkoKTtsZXQgbj10aGlzLl9vdmVybGF5UmVmO24/KHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuc2V0T3JpZ2luKHRoaXMuX2dldENvbm5lY3RlZEVsZW1lbnQoKSksbi51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCl9KSk6KHRoaXMuX3BvcnRhbD1uZXcgeUIodGhpcy5hdXRvY29tcGxldGUudGVtcGxhdGUsdGhpcy5fdmlld0NvbnRhaW5lclJlZix7aWQ6bnVsbD09PSh0PXRoaXMuX2Zvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0TGFiZWxJZCgpfSksbj10aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCkpLHRoaXMuX292ZXJsYXlSZWY9bixuLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKHQ9PnsodC5rZXlDb2RlPT09ckgmJiFkSCh0KXx8dC5rZXlDb2RlPT09bEgmJmRIKHQsImFsdEtleSIpKSYmKHRoaXMuX3Jlc2V0QWN0aXZlSXRlbSgpLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW0ubmV4dCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpKX0pKSx0aGlzLl92aWV3cG9ydFN1YnNjcmlwdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnBhbmVsT3BlbiYmbiYmbi51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCl9KX0pKSksbiYmIW4uaGFzQXR0YWNoZWQoKSYmKG4uYXR0YWNoKHRoaXMuX3BvcnRhbCksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249dGhpcy5fc3Vic2NyaWJlVG9DbG9zaW5nQWN0aW9ucygpKTtjb25zdCBvPXRoaXMucGFuZWxPcGVuO3RoaXMuYXV0b2NvbXBsZXRlLl9zZXRWaXNpYmlsaXR5KCksdGhpcy5hdXRvY29tcGxldGUuX2lzT3Blbj10aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITAsdGhpcy5wYW5lbE9wZW4mJm8hPT10aGlzLnBhbmVsT3BlbiYmdGhpcy5hdXRvY29tcGxldGUub3BlbmVkLmVtaXQoKX1fZ2V0T3ZlcmxheUNvbmZpZygpe3ZhciB0O3JldHVybiBuZXcgSUIoe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCksc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSx3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCksZGlyZWN0aW9uOnRoaXMuX2RpcixwYW5lbENsYXNzOm51bGw9PT0odD10aGlzLl9kZWZhdWx0cyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQub3ZlcmxheVBhbmVsQ2xhc3N9KX1fZ2V0T3ZlcmxheVBvc2l0aW9uKCl7Y29uc3QgdD10aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9nZXRDb25uZWN0ZWRFbGVtZW50KCkpLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoITEpLndpdGhQdXNoKCExKTtyZXR1cm4gdGhpcy5fc2V0U3RyYXRlZ3lQb3NpdGlvbnModCksdGhpcy5fcG9zaXRpb25TdHJhdGVneT10LHR9X3NldFN0cmF0ZWd5UG9zaXRpb25zKHQpe2NvbnN0IGU9W3tvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJ0b3AifSx7b3JpZ2luWDoiZW5kIixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJ0b3AifV0sbj10aGlzLl9hYm92ZUNsYXNzLG89W3tvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJib3R0b20iLHBhbmVsQ2xhc3M6bn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToiYm90dG9tIixwYW5lbENsYXNzOm59XTtsZXQgaTtpPSJhYm92ZSI9PT10aGlzLnBvc2l0aW9uP286ImJlbG93Ij09PXRoaXMucG9zaXRpb24/ZTpbLi4uZSwuLi5vXSx0LndpdGhQb3NpdGlvbnMoaSl9X2dldENvbm5lY3RlZEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5jb25uZWN0ZWRUbz90aGlzLmNvbm5lY3RlZFRvLmVsZW1lbnRSZWY6dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCk6dGhpcy5fZWxlbWVudH1fZ2V0UGFuZWxXaWR0aCgpe3JldHVybiB0aGlzLmF1dG9jb21wbGV0ZS5wYW5lbFdpZHRofHx0aGlzLl9nZXRIb3N0V2lkdGgoKX1fZ2V0SG9zdFdpZHRoKCl7cmV0dXJuIHRoaXMuX2dldENvbm5lY3RlZEVsZW1lbnQoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofV9yZXNldEFjdGl2ZUl0ZW0oKXtjb25zdCB0PXRoaXMuYXV0b2NvbXBsZXRlO3QuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uP3QuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk6dC5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKX1fY2FuT3Blbigpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O3JldHVybiF0LnJlYWRPbmx5JiYhdC5kaXNhYmxlZCYmIXRoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkfV9nZXRXaW5kb3coKXt2YXIgdDtyZXR1cm4obnVsbD09PSh0PXRoaXMuX2RvY3VtZW50KXx8dm9pZCAwPT09dD92b2lkIDA6dC5kZWZhdWx0Vmlldyl8fHdpbmRvd31fc2Nyb2xsVG9PcHRpb24odCl7Y29uc3QgZT10aGlzLmF1dG9jb21wbGV0ZSxuPUlMKHQsZS5vcHRpb25zLGUub3B0aW9uR3JvdXBzKTtpZigwPT09dCYmMT09PW4pZS5fc2V0U2Nyb2xsVG9wKDApO2Vsc2UgaWYoZS5wYW5lbCl7Y29uc3Qgbj1lLm9wdGlvbnMudG9BcnJheSgpW3RdO2lmKG4pe2NvbnN0IHQ9bi5fZ2V0SG9zdEVsZW1lbnQoKSxvPUhMKHQub2Zmc2V0VG9wLHQub2Zmc2V0SGVpZ2h0LGUuX2dldFNjcm9sbFRvcCgpLGUucGFuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpO2UuX3NldFNjcm9sbFRvcChvKX19fX1lMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZTIpKGZ1KEtoKSxmdShyViksZnUoRmIpLGZ1KG1DKSxmdShPYiksZnUoSjMpLGZ1KEFGLDgpLGZ1KFNqLDkpLGZ1KHNNLDgpLGZ1KGxCKSxmdShHMyw4KSl9LGUyLsm1ZGlyPWhvKHt0eXBlOmUyLGlucHV0czp7cG9zaXRpb246WyJtYXRBdXRvY29tcGxldGVQb3NpdGlvbiIsInBvc2l0aW9uIl0sYXV0b2NvbXBsZXRlQXR0cmlidXRlOlsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlQXR0cmlidXRlIl0sYXV0b2NvbXBsZXRlRGlzYWJsZWQ6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCIsImF1dG9jb21wbGV0ZURpc2FibGVkIl0sYXV0b2NvbXBsZXRlOlsibWF0QXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlIl0sY29ubmVjdGVkVG86WyJtYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUbyIsImNvbm5lY3RlZFRvIl19LGZlYXR1cmVzOltxb119KSxlMi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTpyVn0se3R5cGU6RmJ9LHt0eXBlOm1DfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0ozXX1dfSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpEaixkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbU2pdfSx7dHlwZTpqcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpsQn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltHM119XX1dLGUyLnByb3BEZWNvcmF0b3JzPXthdXRvY29tcGxldGU6W3t0eXBlOlJfLGFyZ3M6WyJtYXRBdXRvY29tcGxldGUiXX1dLHBvc2l0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iXX1dLGNvbm5lY3RlZFRvOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG8iXX1dLGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTpbe3R5cGU6Ul8sYXJnczpbImF1dG9jb21wbGV0ZSJdfV0sYXV0b2NvbXBsZXRlRGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZTIsW3t0eXBlOmtffV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpyVn0se3R5cGU6RmJ9LHt0eXBlOm1DfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W0ozXX1dfSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTpEaixkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbU2pdfSx7dHlwZTpqcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpsQn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltHM119XX1dfSkse3Bvc2l0aW9uOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iXX1dLGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTpbe3R5cGU6Ul8sYXJnczpbImF1dG9jb21wbGV0ZSJdfV0sYXV0b2NvbXBsZXRlRGlzYWJsZWQ6W3t0eXBlOlJfLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCJdfV0sYXV0b2NvbXBsZXRlOlt7dHlwZTpSXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlIl19XSxjb25uZWN0ZWRUbzpbe3R5cGU6Ul8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvIl19XX0pO2NsYXNzIG4yIGV4dGVuZHMgZTJ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Fib3ZlQ2xhc3M9Im1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUifX1uMi7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEobjIpKSkobnx8bjIpfX0pKCksbjIuybVkaXI9aG8oe3R5cGU6bjIsc2VsZWN0b3JzOltbImlucHV0IiwibWF0QXV0b2NvbXBsZXRlIiwiIl0sWyJ0ZXh0YXJlYSIsIm1hdEF1dG9jb21wbGV0ZSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1hdXRvY29tcGxldGUtdHJpZ2dlciJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJmb2N1c2luIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVGb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vblRvdWNoZWQoKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVJbnB1dChlKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksMiZlJiZ5bSgiYXV0b2NvbXBsZXRlIixuLmF1dG9jb21wbGV0ZUF0dHJpYnV0ZSkoInJvbGUiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWQ/bnVsbDoiY29tYm9ib3giKSgiYXJpYS1hdXRvY29tcGxldGUiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWQ/bnVsbDoibGlzdCIpKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLG4ucGFuZWxPcGVuJiZuLmFjdGl2ZU9wdGlvbj9uLmFjdGl2ZU9wdGlvbi5pZDpudWxsKSgiYXJpYS1leHBhbmRlZCIsbi5hdXRvY29tcGxldGVEaXNhYmxlZD9udWxsOm4ucGFuZWxPcGVuLnRvU3RyaW5nKCkpKCJhcmlhLW93bnMiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWR8fCFuLnBhbmVsT3Blbnx8bnVsbD09bi5hdXRvY29tcGxldGU/bnVsbDpuLmF1dG9jb21wbGV0ZS5pZCkoImFyaWEtaGFzcG9wdXAiLCFuLmF1dG9jb21wbGV0ZURpc2FibGVkKX0sZXhwb3J0QXM6WyJtYXRBdXRvY29tcGxldGVUcmlnZ2VyIl0sZmVhdHVyZXM6W1VoKFt0Ml0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobjIsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbbWF0QXV0b2NvbXBsZXRlXSwgdGV4dGFyZWFbbWF0QXV0b2NvbXBsZXRlXSIsaG9zdDp7Y2xhc3M6Im1hdC1hdXRvY29tcGxldGUtdHJpZ2dlciIsIlthdHRyLmF1dG9jb21wbGV0ZV0iOiJhdXRvY29tcGxldGVBdHRyaWJ1dGUiLCJbYXR0ci5yb2xlXSI6J2F1dG9jb21wbGV0ZURpc2FibGVkID8gbnVsbCA6ICJjb21ib2JveCInLCJbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV0iOidhdXRvY29tcGxldGVEaXNhYmxlZCA/IG51bGwgOiAibGlzdCInLCJbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdIjoiKHBhbmVsT3BlbiAmJiBhY3RpdmVPcHRpb24pID8gYWN0aXZlT3B0aW9uLmlkIDogbnVsbCIsIlthdHRyLmFyaWEtZXhwYW5kZWRdIjoiYXV0b2NvbXBsZXRlRGlzYWJsZWQgPyBudWxsIDogcGFuZWxPcGVuLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLW93bnNdIjoiKGF1dG9jb21wbGV0ZURpc2FibGVkIHx8ICFwYW5lbE9wZW4pID8gbnVsbCA6IGF1dG9jb21wbGV0ZT8uaWQiLCJbYXR0ci5hcmlhLWhhc3BvcHVwXSI6IiFhdXRvY29tcGxldGVEaXNhYmxlZCIsIihmb2N1c2luKSI6Il9oYW5kbGVGb2N1cygpIiwiKGJsdXIpIjoiX29uVG91Y2hlZCgpIiwiKGlucHV0KSI6Il9oYW5kbGVJbnB1dCgkZXZlbnQpIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSJ9LGV4cG9ydEFzOiJtYXRBdXRvY29tcGxldGVUcmlnZ2VyIixwcm92aWRlcnM6W3QyXX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG8ye31vMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bzIpfSxvMi7JtW1vZD11byh7dHlwZTpvMn0pLG8yLsm1aW5qPURuKHtwcm92aWRlcnM6W1EzXSxpbXBvcnRzOltbdVYsRkwsV0YscnhdLHVCLEZMLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobzIsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOlt1VixGTCxXRixyeF0sZXhwb3J0czpbWjMsbjIsSzMsdUIsRkwsV0ZdLGRlY2xhcmF0aW9uczpbWjMsbjIsSzNdLHByb3ZpZGVyczpbUTNdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8obzIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltaMyxuMixLM119LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdVYsRkwsV0YscnhdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1ozLG4yLEszLHVCLEZMLFdGXX19KTtjbGFzcyBpMntjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9IiIsdGhpcy5wbGFjZWhvbGRlcj0iIn1vbklucHV0S2V5VXAodCl7IkVudGVyIj09PXQua2V5JiZ0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY2xvc2VQYW5lbCgpfX1mdW5jdGlvbiBhMih0LGUpe2lmKDEmdCYmKG9hKCksTXUoMCwiY2lyY2xlIiwzKSksMiZ0KXtjb25zdCB0PU51KCk7bGYoImFuaW1hdGlvbi1uYW1lIiwibWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0iK3QuX3NwaW5uZXJBbmltYXRpb25MYWJlbCkoInN0cm9rZS1kYXNob2Zmc2V0Iix0Ll9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLHQuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIix0Ll9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIikseW0oInIiLHQuX2dldENpcmNsZVJhZGl1cygpKX19ZnVuY3Rpb24gcjIodCxlKXtpZigxJnQmJihvYSgpLE11KDAsImNpcmNsZSIsMykpLDImdCl7Y29uc3QgdD1OdSgpO2xmKCJzdHJva2UtZGFzaG9mZnNldCIsdC5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5Iix0Ll9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsdC5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLHltKCJyIix0Ll9nZXRDaXJjbGVSYWRpdXMoKSl9fWZ1bmN0aW9uIHMyKHQsZSl7aWYoMSZ0JiYob2EoKSxNdSgwLCJjaXJjbGUiLDMpKSwyJnQpe2NvbnN0IHQ9TnUoKTtsZigiYW5pbWF0aW9uLW5hbWUiLCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLSIrdC5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsKSgic3Ryb2tlLWRhc2hvZmZzZXQiLHQuX2dldFN0cm9rZURhc2hPZmZzZXQoKSwicHgiKSgic3Ryb2tlLWRhc2hhcnJheSIsdC5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpLCJweCIpKCJzdHJva2Utd2lkdGgiLHQuX2dldENpcmNsZVN0cm9rZVdpZHRoKCksIiUiKSx5bSgiciIsdC5fZ2V0Q2lyY2xlUmFkaXVzKCkpfX1mdW5jdGlvbiBsMih0LGUpe2lmKDEmdCYmKG9hKCksTXUoMCwiY2lyY2xlIiwzKSksMiZ0KXtjb25zdCB0PU51KCk7bGYoInN0cm9rZS1kYXNob2Zmc2V0Iix0Ll9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLHQuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIix0Ll9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIikseW0oInIiLHQuX2dldENpcmNsZVJhZGl1cygpKX19aTIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGkyKX0saTIuybVjbXA9c28oe3R5cGU6aTIsc2VsZWN0b3JzOltbInRiLWZpbHRlci1pbnB1dCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkobjIsNSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5hdXRvY29tcGxldGVUcmlnZ2VyPXQuZmlyc3QpfX0saW5wdXRzOnt2YWx1ZToidmFsdWUiLG1hdEF1dG9jb21wbGV0ZToibWF0QXV0b2NvbXBsZXRlIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIifSxkZWNsczoyLHZhcnM6NCxjb25zdHM6W1sic3ZnSWNvbiIsInNlYXJjaF8yNHB4Il0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywicGxhY2Vob2xkZXIiLCJtYXRBdXRvY29tcGxldGUiLCJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCIsInZhbHVlIiwia2V5dXAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsIm1hdC1pY29uIiwwKSxfdSgxLCJpbnB1dCIsMSksRHUoImtleXVwIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbklucHV0S2V5VXAoZSl9KSksQ3UoKSksMiZlJiYoRGMoMSksaHUoInBsYWNlaG9sZGVyIixuLnBsYWNlaG9sZGVyKSgibWF0QXV0b2NvbXBsZXRlIixuLm1hdEF1dG9jb21wbGV0ZSkoIm1hdEF1dG9jb21wbGV0ZURpc2FibGVkIiwhbi5tYXRBdXRvY29tcGxldGUpKCJ2YWx1ZSIsbi52YWx1ZSkpfSxkaXJlY3RpdmVzOltFcSxuMl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxM3B4fW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yO2NvbG9yOmN1cnJlbnRDb2xvcjtmb250OmluaGVyaXQ7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDtmbGV4LWdyb3c6MX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaTIsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItZmlsdGVyLWlucHV0Iix0ZW1wbGF0ZTonXG4gICAgPG1hdC1pY29uIHN2Z0ljb249InNlYXJjaF8yNHB4Ij48L21hdC1pY29uPlxuXG4gICAgXHgzYyEtLSBOb3RlOiB0byBhbGxvdyBmYWxzeSBcJ21hdEF1dG9jb21wbGV0ZVwnIHZhbHVlcywgd2UgbmVlZCBcJ21hdEF1dG9jb21wbGV0ZURpc2FibGVkXCdcbiAgICB0byBwcmV2ZW50IHJ1bnRpbWUgZXJyb3JzLiAtLVx4M2VcbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9InRleHQiXG4gICAgICBhdXRvY29tcGxldGU9Im9mZiJcbiAgICAgIFtwbGFjZWhvbGRlcl09InBsYWNlaG9sZGVyIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09Im1hdEF1dG9jb21wbGV0ZSJcbiAgICAgIFttYXRBdXRvY29tcGxldGVEaXNhYmxlZF09IiFtYXRBdXRvY29tcGxldGUiXG4gICAgICBbdmFsdWVdPSJ2YWx1ZSJcbiAgICAgIChrZXl1cCk9Im9uSW5wdXRLZXlVcCgkZXZlbnQpIlxuICAgIC8+XG4gICcsc3R5bGVVcmxzOlsiZmlsdGVyX2lucHV0X2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOlJffV0sbWF0QXV0b2NvbXBsZXRlOlt7dHlwZTpSX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpSX31dLGF1dG9jb21wbGV0ZVRyaWdnZXI6W3t0eXBlOmFyLGFyZ3M6W24yXX1dfSk7Y29uc3QgYzI9Ii5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0ubWF0LXByb2dyZXNzLXNwaW5uZXIgc3Zne3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0b3A6MDtsZWZ0OjA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle2ZpbGw6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNpdGlvbjpzdHJva2UtZGFzaG9mZnNldCAyMjVtcyBsaW5lYXJ9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlOkNhbnZhc1RleHR9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne2FuaW1hdGlvbjptYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1saW5lYXItcm90YXRlIDIwMDBtcyBsaW5lYXIgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2U7YW5pbWF0aW9uLWR1cmF0aW9uOjQwMDBtczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne2FuaW1hdGlvbjptYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLWZhbGxiYWNrIDEwMDAwbXMgY3ViaWMtYmV6aWVyKDAuODcsIDAuMDMsIDAuMzMsIDEpIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1saW5lYXItcm90YXRlezAle3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0xMDB7MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyl9NTAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyl9NTAuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyl9NzUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyl9NzUuMDAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLWZhbGxiYWNrezAle3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MjUle3RyYW5zZm9ybTpyb3RhdGUoMTE3MGRlZyl9NTAle3RyYW5zZm9ybTpyb3RhdGUoMjM0MGRlZyl9NzUle3RyYW5zZm9ybTpyb3RhdGUoMzUxMGRlZyl9MTAwJXt0cmFuc2Zvcm06cm90YXRlKDQ2ODBkZWcpfX1cbiIsZDI9WUYoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0sInByaW1hcnkiKSxwMj1uZXcgZXIoIm1hdC1wcm9ncmVzcy1zcGlubmVyLWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gbTIoKXtyZXR1cm57ZGlhbWV0ZXI6MTAwfX19KTtjb25zdCB1Mj0iXG4gQGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLURJQU1FVEVSIHtcbiAgICAwJSAgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyk7IH1cbiAgICAyNSUgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpOyB9XG5cbiAgICAyNS4wMDAxJSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgfVxuICAgIDM3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyB9XG4gICAgMzcuNTAwMSUgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKTsgfVxuICAgIDUwJSAgICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpOyB9XG5cbiAgICA1MC4wMDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XG4gICAgNjIuNSUgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cbiAgICA2Mi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpOyB9XG4gICAgNzUlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyk7IH1cblxuICAgIDc1LjAwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuICAgIDg3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cbiAgICA4Ny41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpOyB9XG4gICAgMTAwJSAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyk7IH1cbiAgfVxuIjtjbGFzcyBmMiBleHRlbmRzIGQye2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIodCksdGhpcy5fZG9jdW1lbnQ9bix0aGlzLl9kaWFtZXRlcj0xMDAsdGhpcy5fdmFsdWU9MCx0aGlzLl9mYWxsYmFja0FuaW1hdGlvbj0hMSx0aGlzLm1vZGU9ImRldGVybWluYXRlIjtjb25zdCBhPWYyLl9kaWFtZXRlcnM7dGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLGEuaGFzKG4uaGVhZCl8fGEuc2V0KG4uaGVhZCxuZXcgU2V0KFsxMDBdKSksdGhpcy5fZmFsbGJhY2tBbmltYXRpb249ZS5FREdFfHxlLlRSSURFTlQsdGhpcy5fbm9vcEFuaW1hdGlvbnM9Ik5vb3BBbmltYXRpb25zIj09PW8mJiEhaSYmIWkuX2ZvcmNlQW5pbWF0aW9ucyxpJiYoaS5kaWFtZXRlciYmKHRoaXMuZGlhbWV0ZXI9aS5kaWFtZXRlciksaS5zdHJva2VXaWR0aCYmKHRoaXMuc3Ryb2tlV2lkdGg9aS5zdHJva2VXaWR0aCkpfWdldCBkaWFtZXRlcigpe3JldHVybiB0aGlzLl9kaWFtZXRlcn1zZXQgZGlhbWV0ZXIodCl7dGhpcy5fZGlhbWV0ZXI9bUgodCksdGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLCF0aGlzLl9mYWxsYmFja0FuaW1hdGlvbiYmdGhpcy5fc3R5bGVSb290JiZ0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKX1nZXQgc3Ryb2tlV2lkdGgoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlV2lkdGh8fHRoaXMuZGlhbWV0ZXIvMTB9c2V0IHN0cm9rZVdpZHRoKHQpe3RoaXMuX3N0cm9rZVdpZHRoPW1IKHQpfWdldCB2YWx1ZSgpe3JldHVybiJkZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/dGhpcy5fdmFsdWU6MH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAsbUgodCkpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3N0eWxlUm9vdD1SSCh0KXx8dGhpcy5fZG9jdW1lbnQuaGVhZCx0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKTt0LmNsYXNzTGlzdC5hZGQoYG1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUke3RoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uPyItZmFsbGJhY2siOiIifS1hbmltYXRpb25gKX1fZ2V0Q2lyY2xlUmFkaXVzKCl7cmV0dXJuKHRoaXMuZGlhbWV0ZXItMTApLzJ9X2dldFZpZXdCb3goKXtjb25zdCB0PTIqdGhpcy5fZ2V0Q2lyY2xlUmFkaXVzKCkrdGhpcy5zdHJva2VXaWR0aDtyZXR1cm5gMCAwICR7dH0gJHt0fWB9X2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKXtyZXR1cm4gMipNYXRoLlBJKnRoaXMuX2dldENpcmNsZVJhZGl1cygpfV9nZXRTdHJva2VEYXNoT2Zmc2V0KCl7cmV0dXJuImRldGVybWluYXRlIj09PXRoaXMubW9kZT90aGlzLl9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkqKDEwMC10aGlzLl92YWx1ZSkvMTAwOnRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uJiYiaW5kZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/LjIqdGhpcy5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpOm51bGx9X2dldENpcmNsZVN0cm9rZVdpZHRoKCl7cmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGgvdGhpcy5kaWFtZXRlcioxMDB9X2F0dGFjaFN0eWxlTm9kZSgpe2NvbnN0IHQ9dGhpcy5fc3R5bGVSb290LGU9dGhpcy5fZGlhbWV0ZXIsbj1mMi5fZGlhbWV0ZXJzO2xldCBvPW4uZ2V0KHQpO2lmKCFvfHwhby5oYXMoZSkpe2NvbnN0IGk9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtpLnNldEF0dHJpYnV0ZSgibWF0LXNwaW5uZXItYW5pbWF0aW9uIix0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWwpLGkudGV4dENvbnRlbnQ9dGhpcy5fZ2V0QW5pbWF0aW9uVGV4dCgpLHQuYXBwZW5kQ2hpbGQoaSksb3x8KG89bmV3IFNldCxuLnNldCh0LG8pKSxvLmFkZChlKX19X2dldEFuaW1hdGlvblRleHQoKXtjb25zdCB0PXRoaXMuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKTtyZXR1cm4gdTIucmVwbGFjZSgvU1RBUlRfVkFMVUUvZywiIisuOTUqdCkucmVwbGFjZSgvRU5EX1ZBTFVFL2csIiIrLjIqdCkucmVwbGFjZSgvRElBTUVURVIvZyxgJHt0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWx9YCl9X2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpe3JldHVybiB0aGlzLmRpYW1ldGVyLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIl8iKX19ZjIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGYyKShmdShLaCksZnUoX0gpLGZ1KHNNLDgpLGZ1KGNrLDgpLGZ1KHAyKSl9LGYyLsm1Y21wPXNvKHt0eXBlOmYyLHNlbGVjdG9yczpbWyJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciJdXSxob3N0QXR0cnM6WyJyb2xlIiwicHJvZ3Jlc3NiYXIiLCJ0YWJpbmRleCIsIi0xIiwxLCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoeW0oImFyaWEtdmFsdWVtaW4iLCJkZXRlcm1pbmF0ZSI9PT1uLm1vZGU/MDpudWxsKSgiYXJpYS12YWx1ZW1heCIsImRldGVybWluYXRlIj09PW4ubW9kZT8xMDA6bnVsbCkoImFyaWEtdmFsdWVub3ciLCJkZXRlcm1pbmF0ZSI9PT1uLm1vZGU/bi52YWx1ZTpudWxsKSgibW9kZSIsbi5tb2RlKSxsZigid2lkdGgiLG4uZGlhbWV0ZXIsInB4IikoImhlaWdodCIsbi5kaWFtZXRlciwicHgiKSxjZigiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLG4uX25vb3BBbmltYXRpb25zKSl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixtb2RlOiJtb2RlIixkaWFtZXRlcjoiZGlhbWV0ZXIiLHN0cm9rZVdpZHRoOiJzdHJva2VXaWR0aCIsdmFsdWU6InZhbHVlIn0sZXhwb3J0QXM6WyJtYXRQcm9ncmVzc1NwaW5uZXIiXSxmZWF0dXJlczpbUXBdLGRlY2xzOjMsdmFyczo4LGNvbnN0czpbWyJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIsImZvY3VzYWJsZSIsImZhbHNlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwzLCJuZ1N3aXRjaCJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywiYW5pbWF0aW9uLW5hbWUiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLXdpZHRoIiw0LCJuZ1N3aXRjaENhc2UiXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKG9hKCksX3UoMCwic3ZnIiwwKSxIbSgxLGEyLDEsOSwiY2lyY2xlIiwxKSxIbSgyLHIyLDEsNywiY2lyY2xlIiwyKSxDdSgpKSwyJmUmJihsZigid2lkdGgiLG4uZGlhbWV0ZXIsInB4IikoImhlaWdodCIsbi5kaWFtZXRlciwicHgiKSxodSgibmdTd2l0Y2giLCJpbmRldGVybWluYXRlIj09PW4ubW9kZSkseW0oInZpZXdCb3giLG4uX2dldFZpZXdCb3goKSksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsITApLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLCExKSl9LGRpcmVjdGl2ZXM6W0R2LFJ2XSxzdHlsZXM6W2MyXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxmMi5fZGlhbWV0ZXJzPW5ldyBXZWFrTWFwLGYyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbcDJdfV19XSxmMi5wcm9wRGVjb3JhdG9ycz17ZGlhbWV0ZXI6W3t0eXBlOlJffV0sc3Ryb2tlV2lkdGg6W3t0eXBlOlJffV0sbW9kZTpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsZXhwb3J0QXM6Im1hdFByb2dyZXNzU3Bpbm5lciIsaG9zdDp7cm9sZToicHJvZ3Jlc3NiYXIiLGNsYXNzOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsdGFiaW5kZXg6Ii0xIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyIsIltzdHlsZS53aWR0aC5weF0iOiJkaWFtZXRlciIsIltzdHlsZS5oZWlnaHQucHhdIjoiZGlhbWV0ZXIiLCJbYXR0ci5hcmlhLXZhbHVlbWluXSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyAwIDogbnVsbCcsIlthdHRyLmFyaWEtdmFsdWVtYXhdIjonbW9kZSA9PT0gImRldGVybWluYXRlIiA/IDEwMCA6IG51bGwnLCJbYXR0ci5hcmlhLXZhbHVlbm93XSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyB2YWx1ZSA6IG51bGwnLCJbYXR0ci5tb2RlXSI6Im1vZGUifSxpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOidceDNjIS0tXG4gIHByZXNlcnZlQXNwZWN0UmF0aW8gb2YgeE1pZFlNaWQgbWVldCBhcyB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCBpcyB0aGUgY2lyY2xlXCdzXG4gIGNlbnRlci4gVGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlIHdpbGwgcmVtYWluIGF0IHRoZSBjZW50ZXIgb2YgdGhlIG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gIGVsZW1lbnQgY29udGFpbmluZyB0aGUgU1ZHLiBgZm9jdXNhYmxlPSJmYWxzZSJgIHByZXZlbnRzIElFIGZyb20gYWxsb3dpbmcgdGhlIHVzZXIgdG9cbiAgdGFiIGludG8gdGhlIFNWRyBlbGVtZW50LlxuLS1ceDNlXG5ceDNjIS0tXG4gIEFsbCBjaGlsZHJlbiBuZWVkIHRvIGJlIGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgaW4gb3JkZXIgdG8gc3VwcG9ydCBDaHJvbWVWb3guXG4gIE1vcmUgY29udGV4dCBpbiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIyMTY1LlxuLS1ceDNlXG48c3ZnXG4gIFtzdHlsZS53aWR0aC5weF09ImRpYW1ldGVyIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT0iZGlhbWV0ZXIiXG4gIFthdHRyLnZpZXdCb3hdPSJfZ2V0Vmlld0JveCgpIlxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICBmb2N1c2FibGU9ImZhbHNlIlxuICBbbmdTd2l0Y2hdPSJtb2RlID09PSBcJ2luZGV0ZXJtaW5hdGVcJyJcbiAgYXJpYS1oaWRkZW49InRydWUiPlxuXG4gIFx4M2MhLS1cbiAgICBUZWNobmljYWxseSB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgYGNpcmNsZWAgZWxlbWVudCwgaG93ZXZlciBTYWZhcmkgaGFzIGFuIGlzc3VlIHRoYXQgYnJlYWtzXG4gICAgdGhlIFNWRyByZW5kZXJpbmcgaW4gZGV0ZXJtaW5hdGUgbW9kZSwgYWZ0ZXIgc3dpdGNoaW5nIGJldHdlZW4gaW5kZXRlcm1pbmF0ZSBhbmQgZGV0ZXJtaW5hdGUuXG4gICAgVXNpbmcgYSBkaWZmZXJlbnQgZWxlbWVudCBhdm9pZHMgdGhlIGlzc3VlLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIGlzIGFkZGluZyBgZGlzcGxheTogbm9uZWBcbiAgICBmb3IgYSBzcGxpdCBzZWNvbmQgYW5kIHRoZW4gcmVtb3ZpbmcgaXQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBtb2RlcywgYnV0IGl0XCdzIGhhcmQgdG8ga25vd1xuICAgIGZvciBob3cgbG9uZyB0byBoaWRlIHRoZSBlbGVtZW50IGFuZCBpdCBjYW4gY2F1c2UgdGhlIFVJIHRvIGJsaW5rLlxuICAtLVx4M2VcbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9InRydWUiXG4gICAgY3g9IjUwJSJcbiAgICBjeT0iNTAlIlxuICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiXG4gICAgW3N0eWxlLmFuaW1hdGlvbi1uYW1lXT0iXCdtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLVwnICsgX3NwaW5uZXJBbmltYXRpb25MYWJlbCJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG5cbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9ImZhbHNlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaG9mZnNldC5weF09Il9nZXRTdHJva2VEYXNoT2Zmc2V0KCkiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNoYXJyYXkucHhdPSJfZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpIlxuICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT5cbjwvc3ZnPlxuJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Lm1hdC1wcm9ncmVzcy1zcGlubmVyIHN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dG9wOjA7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO292ZXJmbG93OnZpc2libGV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtmaWxsOnRyYW5zcGFyZW50O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246c3Ryb2tlLWRhc2hvZmZzZXQgMjI1bXMgbGluZWFyfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZTpDYW52YXNUZXh0fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZSAyMDAwbXMgbGluZWFyIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFjayAxMDAwMG1zIGN1YmljLWJlemllcigwLjg3LCAwLjAzLCAwLjMzLCAxKSBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtMTAwezAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwLjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFja3swJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDExNzBkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDIzNDBkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDM1MTBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSg0NjgwZGVnKX19XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpfSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3AyXX1dfV19KSx7bW9kZTpbe3R5cGU6Ul99XSxkaWFtZXRlcjpbe3R5cGU6Ul99XSxzdHJva2VXaWR0aDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XX0pO2NsYXNzIGcyIGV4dGVuZHMgZjJ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcih0LGUsbixvLGkpLHRoaXMubW9kZT0iaW5kZXRlcm1pbmF0ZSJ9fWcyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnMikoZnUoS2gpLGZ1KF9IKSxmdShzTSw4KSxmdShjayw4KSxmdShwMikpfSxnMi7JtWNtcD1zbyh7dHlwZTpnMixzZWxlY3RvcnM6W1sibWF0LXNwaW5uZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsInByb2dyZXNzYmFyIiwibW9kZSIsImluZGV0ZXJtaW5hdGUiLDEsIm1hdC1zcGlubmVyIiwibWF0LXByb2dyZXNzLXNwaW5uZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYobGYoIndpZHRoIixuLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLG4uZGlhbWV0ZXIsInB4IiksY2YoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGZlYXR1cmVzOltRcF0sZGVjbHM6Myx2YXJzOjgsY29uc3RzOltbInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0IiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJhcmlhLWhpZGRlbiIsInRydWUiLDMsIm5nU3dpdGNoIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJhbmltYXRpb24tbmFtZSIsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxfdSgwLCJzdmciLDApLEhtKDEsczIsMSw5LCJjaXJjbGUiLDEpLEhtKDIsbDIsMSw3LCJjaXJjbGUiLDIpLEN1KCkpLDImZSYmKGxmKCJ3aWR0aCIsbi5kaWFtZXRlciwicHgiKSgiaGVpZ2h0IixuLmRpYW1ldGVyLCJweCIpLGh1KCJuZ1N3aXRjaCIsImluZGV0ZXJtaW5hdGUiPT09bi5tb2RlKSx5bSgidmlld0JveCIsbi5fZ2V0Vmlld0JveCgpKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIiwhMCksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsITEpKX0sZGlyZWN0aXZlczpbRHYsUnZdLHN0eWxlczpbYzJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGcyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbcDJdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGcyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zcGlubmVyIixob3N0Ontyb2xlOiJwcm9ncmVzc2JhciIsbW9kZToiaW5kZXRlcm1pbmF0ZSIsY2xhc3M6Im1hdC1zcGlubmVyIG1hdC1wcm9ncmVzcy1zcGlubmVyIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyIsIltzdHlsZS53aWR0aC5weF0iOiJkaWFtZXRlciIsIltzdHlsZS5oZWlnaHQucHhdIjoiZGlhbWV0ZXIifSxpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOidceDNjIS0tXG4gIHByZXNlcnZlQXNwZWN0UmF0aW8gb2YgeE1pZFlNaWQgbWVldCBhcyB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCBpcyB0aGUgY2lyY2xlXCdzXG4gIGNlbnRlci4gVGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlIHdpbGwgcmVtYWluIGF0IHRoZSBjZW50ZXIgb2YgdGhlIG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gIGVsZW1lbnQgY29udGFpbmluZyB0aGUgU1ZHLiBgZm9jdXNhYmxlPSJmYWxzZSJgIHByZXZlbnRzIElFIGZyb20gYWxsb3dpbmcgdGhlIHVzZXIgdG9cbiAgdGFiIGludG8gdGhlIFNWRyBlbGVtZW50LlxuLS1ceDNlXG5ceDNjIS0tXG4gIEFsbCBjaGlsZHJlbiBuZWVkIHRvIGJlIGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgaW4gb3JkZXIgdG8gc3VwcG9ydCBDaHJvbWVWb3guXG4gIE1vcmUgY29udGV4dCBpbiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIyMTY1LlxuLS1ceDNlXG48c3ZnXG4gIFtzdHlsZS53aWR0aC5weF09ImRpYW1ldGVyIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT0iZGlhbWV0ZXIiXG4gIFthdHRyLnZpZXdCb3hdPSJfZ2V0Vmlld0JveCgpIlxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICBmb2N1c2FibGU9ImZhbHNlIlxuICBbbmdTd2l0Y2hdPSJtb2RlID09PSBcJ2luZGV0ZXJtaW5hdGVcJyJcbiAgYXJpYS1oaWRkZW49InRydWUiPlxuXG4gIFx4M2MhLS1cbiAgICBUZWNobmljYWxseSB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgYGNpcmNsZWAgZWxlbWVudCwgaG93ZXZlciBTYWZhcmkgaGFzIGFuIGlzc3VlIHRoYXQgYnJlYWtzXG4gICAgdGhlIFNWRyByZW5kZXJpbmcgaW4gZGV0ZXJtaW5hdGUgbW9kZSwgYWZ0ZXIgc3dpdGNoaW5nIGJldHdlZW4gaW5kZXRlcm1pbmF0ZSBhbmQgZGV0ZXJtaW5hdGUuXG4gICAgVXNpbmcgYSBkaWZmZXJlbnQgZWxlbWVudCBhdm9pZHMgdGhlIGlzc3VlLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIGlzIGFkZGluZyBgZGlzcGxheTogbm9uZWBcbiAgICBmb3IgYSBzcGxpdCBzZWNvbmQgYW5kIHRoZW4gcmVtb3ZpbmcgaXQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBtb2RlcywgYnV0IGl0XCdzIGhhcmQgdG8ga25vd1xuICAgIGZvciBob3cgbG9uZyB0byBoaWRlIHRoZSBlbGVtZW50IGFuZCBpdCBjYW4gY2F1c2UgdGhlIFVJIHRvIGJsaW5rLlxuICAtLVx4M2VcbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9InRydWUiXG4gICAgY3g9IjUwJSJcbiAgICBjeT0iNTAlIlxuICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiXG4gICAgW3N0eWxlLmFuaW1hdGlvbi1uYW1lXT0iXCdtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLVwnICsgX3NwaW5uZXJBbmltYXRpb25MYWJlbCJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG5cbiAgPGNpcmNsZVxuICAgICpuZ1N3aXRjaENhc2U9ImZhbHNlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaG9mZnNldC5weF09Il9nZXRTdHJva2VEYXNoT2Zmc2V0KCkiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNoYXJyYXkucHhdPSJfZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpIlxuICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT5cbjwvc3ZnPlxuJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNoLGVuY2Fwc3VsYXRpb246V24uTm9uZSxzdHlsZXM6WyIubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Lm1hdC1wcm9ncmVzcy1zcGlubmVyIHN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dG9wOjA7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO292ZXJmbG93OnZpc2libGV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtmaWxsOnRyYW5zcGFyZW50O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246c3Ryb2tlLWRhc2hvZmZzZXQgMjI1bXMgbGluZWFyfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZTpDYW52YXNUZXh0fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZSAyMDAwbXMgbGluZWFyIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFjayAxMDAwMG1zIGN1YmljLWJlemllcigwLjg3LCAwLjAzLCAwLjMzLCAxKSBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtMTAwezAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwLjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFja3swJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDExNzBkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDIzNDBkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDM1MTBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSg0NjgwZGVnKX19XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpfSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltzTV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3AyXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGgye31oMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aDIpfSxoMi7JtW1vZD11byh7dHlwZTpoMn0pLGgyLsm1aW5qPURuKHtpbXBvcnRzOltbV0YscnhdLFdGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaDIsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltXRixyeF0sZXhwb3J0czpbZjIsZzIsV0ZdLGRlY2xhcmF0aW9uczpbZjIsZzJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oaDIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltmMixnMl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bV0YscnhdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2YyLGcyLFdGXX19KTtjb25zdCBiMj1bInJlZ2V4U3RyaW5nSW5wdXQiXTtmdW5jdGlvbiB5Mih0LGUpe2lmKDEmdCYmKHZ1KDApLF91KDEsImxpIiwyMiksUGYoMiksQ3UoKSx4dSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RGMoMSksaHUoInRpdGxlIix0Lm5hbWUpLERjKDEpLHdmKHQubmFtZSl9fWZ1bmN0aW9uIF8yKHQsZSl7aWYoMSZ0JiYoX3UoMCwibGkiLDIzKSxfdSgxLCJlbSIpLFBmKDIpLF95KDMsIm51bWJlciIpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCkuJGltcGxpY2l0O0RjKDIpLGtmKCJhbmQgIixDeSgzLDEsdC5ydW5zLmxlbmd0aC01KSwiIG1vcmUiKX19ZnVuY3Rpb24gQzIodCxlKXsxJnQmJihfdSgwLCJsaSIsMjQpLF91KDEsImVtIiksUGYoMiwiTm8gcnVucyBhcmUgaW4gdGhlIGdyb3VwIiksQ3UoKSxDdSgpKX1jb25zdCBNMj1mdW5jdGlvbih0KXtyZXR1cm57Ym9yZGVyQ29sb3I6dH19LHYyPWZ1bmN0aW9uKHQpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dH19O2Z1bmN0aW9uIHgyKHQsZSl7aWYoMSZ0JiYoX3UoMCwidWwiLDE2KSxfdSgxLCJsaSIpLF91KDIsImxhYmVsIiksTXUoMywic3BhbiIsMTcpLF91KDQsImNvZGUiLDE4KSxQZig1KSxDdSgpLEN1KCksX3UoNiwidWwiKSxIbSg3LHkyLDMsMiwibmctY29udGFpbmVyIiwxOSksX3koOCwic2xpY2UiKSxIbSg5LF8yLDQsMywibGkiLDIwKSxIbSgxMCxDMiwzLDAsImxpIiwyMSksQ3UoKSxDdSgpLEN1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtodSgibmdTdHlsZSIsaXkoMTEsTTIsdC5jb2xvcikpLERjKDMpLGh1KCJuZ1N0eWxlIixpeSgxMyx2Mix0LmNvbG9yKSksRGMoMSksaHUoInRpdGxlIix0Lmdyb3VwSWQpLERjKDEpLHdmKHQuZ3JvdXBJZCksRGMoMiksaHUoIm5nRm9yT2YiLHZ5KDgsNyx0LnJ1bnMsMCw1KSksRGMoMiksaHUoIm5nSWYiLHQucnVucy5sZW5ndGg+NSksRGMoMSksaHUoIm5nSWYiLDA9PT10LnJ1bnMubGVuZ3RoKX19ZnVuY3Rpb24gTzIodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDE0KSxIbSgxLHgyLDExLDE1LCJ1bCIsMTUpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTtEYygxKSxodSgibmdGb3JPZiIsdC5jb2xvclJ1blBhaXJMaXN0KX19ZnVuY3Rpb24gUDIodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDI1KSxQZigxLCIgVGhlcmUgYXJlIG5vIHJ1bnMgbWF0Y2hpbmcgdGhlIHJlZ2V4LCAiKSxfdSgyLCJjb2RlIiksUGYoMyksQ3UoKSxQZig0LCIuIFBsZWFzZSBjaGVjayBpZiB5b3VyIHJlZ2V4IHN0cmluZyBpcyBjb3JyZWN0LiAiKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoMyksa2YoIi8iLHQucmVnZXhTdHJpbmcsIi8iKX19ZnVuY3Rpb24gdzIodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDEwKSxfdSgxLCJoNCIpLFBmKDIsIkNvbG9yIGdyb3VwIHByZXZpZXciKSxDdSgpLF91KDMsImRpdiIsMTEpLEhtKDQsTzIsMiwxLCJkaXYiLDEyKSxIbSg1LFAyLDUsMSwibmctdGVtcGxhdGUiLG51bGwsMTMscXkpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PUZtKDYpLGU9TnUoKTtEYyg0KSxodSgibmdJZiIsZS5jb2xvclJ1blBhaXJMaXN0Lmxlbmd0aCkoIm5nSWZFbHNlIix0KX19Y2xhc3MgazJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLmRpYWxvZ1JlZj10LHRoaXMuaG9zdEVsUmVmPWUsdGhpcy5vblNhdmU9bmV3IFN5LHRoaXMucmVnZXhJbnB1dE9uQ2hhbmdlPW5ldyBTeSx0aGlzLnRpbWVPdXRJZD0wfXJlc2V0Rm9jdXMoKXtpZighdGhpcy5ob3N0RWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSl7dGhpcy5yZWdleFN0cmluZ0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19b25FbnRlcih0KXt0aGlzLm9uU2F2ZUNsaWNrKHQpLHRoaXMuZGlhbG9nUmVmLmNsb3NlKCl9b25TYXZlQ2xpY2sodCl7dGhpcy5vblNhdmUuZW1pdCh0KX1maWxsRXhhbXBsZSh0KXt0aGlzLnJlZ2V4U3RyaW5nPXQsdGhpcy5yZWdleElucHV0Q2hhbmdlKHQpfXJlZ2V4SW5wdXRDaGFuZ2UodCl7dGhpcy5yZWdleElucHV0T25DaGFuZ2UuZW1pdCh0KX1oYW5kbGVGb2N1c091dCgpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVPdXRJZCksdGhpcy50aW1lT3V0SWQ9c2V0VGltZW91dCh0aGlzLnJlc2V0Rm9jdXMuYmluZCh0aGlzKSwwKX19azIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGsyKShmdShKWSksZnUoS2gpKX0sazIuybVjbXA9c28oe3R5cGU6azIsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoYjIsNyksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5yZWdleFN0cmluZ0lucHV0PXQuZmlyc3QpfX0saW5wdXRzOntyZWdleFN0cmluZzoicmVnZXhTdHJpbmciLGNvbG9yUnVuUGFpckxpc3Q6ImNvbG9yUnVuUGFpckxpc3QifSxvdXRwdXRzOntvblNhdmU6Im9uU2F2ZSIscmVnZXhJbnB1dE9uQ2hhbmdlOiJyZWdleElucHV0T25DaGFuZ2UifSxkZWNsczozMCx2YXJzOjIsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkNvbG9yIFJ1bnMgYnkgUmVnZXggUXVlcnkiKX1lbHNlIHQ9JGxvY2FsaXplYDpDb2xvciBSdW5zIGJ5IFJlZ2V4IFF1ZXJ54pCfMTVlZDlmNmZkMmQ0OTA2YTQ4MDNmYzEyNTVkZTNjNWRiMmM1NjUzMOKQnzkwODg5ODUxMTM5NjAzMTI4MDg6Q29sb3IgUnVucyBieSBSZWdleCBRdWVyeWA7cmV0dXJuW1sxLCJyZWdleC1lZGl0LWRpYWxvZyIsMywiZm9jdXNvdXQiXSxbIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIm1hdElucHV0IiwiIiwiYXJpYS1sYWJlbCIsdCwiY2RrRm9jdXNJbml0aWFsIiwiIiwzLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJpbnB1dCJdLFsicmVnZXhTdHJpbmdJbnB1dCIsIiJdLFsxLCJleGFtcGxlLWRldGFpbHMiXSxbMywiY2xpY2siXSxbImNsYXNzIiwiZ3JvdXAtY29udGFpbmVyIiw0LCJuZ0lmIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiLCIiLCJhbGlnbiIsImVuZCJdLFsibWF0LWJ1dHRvbiIsIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIm1hdC1yYWlzZWQtYnV0dG9uIiwiIiwiY29sb3IiLCJwcmltYXJ5IiwibWF0LWRpYWxvZy1jbG9zZSIsIiIsMywiY2xpY2siXSxbMSwiZ3JvdXAtY29udGFpbmVyIl0sWzEsImdyb3VwaW5nLXByZXZpZXciXSxbImNsYXNzIiwibWF0Y2gtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImVtcHR5IiwiIl0sWzEsIm1hdGNoLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJncm91cCIsMywibmdTdHlsZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImdyb3VwIiwzLCJuZ1N0eWxlIl0sWzEsImNvbG9yLXN3YXRjaCIsMywibmdTdHlsZSJdLFsxLCJncm91cC1pZCIsMywidGl0bGUiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsIm1vcmUiLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tbWF0Y2giLDQsIm5nSWYiXSxbMywidGl0bGUiXSxbMSwibW9yZSJdLFsxLCJuby1tYXRjaCJdLFsxLCJ3YXJuaW5nIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlKXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwwKSxEdSgiZm9jdXNvdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uaGFuZGxlRm9jdXNPdXQoKX0pKSxfdSgxLCJoMSIsMSksUGYoMiwiQ29sb3IgcnVucyBieSByZWdleCIpLEN1KCksX3UoMywibWF0LWRpYWxvZy1jb250ZW50IiksX3UoNCwicCIpLFBmKDUsIkVudGVyIGEgcmVnZXggd2l0aCBjYXB0dXJpbmcgZ3JvdXBzIHRvIG1hdGNoIGFnYWluc3QgcnVuIG5hbWVzOiIpLEN1KCksX3UoNiwibWF0LWZvcm0tZmllbGQiKSxfdSg3LCJpbnB1dCIsMiwzKSxEdSgia2V5ZG93bi5lbnRlciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25FbnRlcihlLnRhcmdldC52YWx1ZSl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yZWdleElucHV0Q2hhbmdlKGUudGFyZ2V0LnZhbHVlKX0pKSxDdSgpLEN1KCksQ3UoKSxfdSg5LCJkaXYiLDQpLF91KDEwLCJwIiksUGYoMTEsJyBFYWNoIG1hdGNoaW5nIHJ1biB3aWxsIGJlIGFzc2lnbmVkIGEgY29sb3IgYmFzZWQgb24gdGhlICJrZXkiIGZvcm1lZCBieSBpdHMgbWF0Y2hlcyB0byB0aGUgY2FwdHVyaW5nIGdyb3Vwcy4gJyksTXUoMTIsImJyIiksX3UoMTMsImJ1dHRvbiIsNSksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZpbGxFeGFtcGxlKCIodHJhaW58ZXZhbCkiKX0pKSxQZigxNCwiIFRyeSAiKSxfdSgxNSwiY29kZSIpLFBmKDE2LCIodHJhaW58ZXZhbCkiKSxDdSgpLEN1KCksUGYoMTcsIiB0byBhc3NpZ24gYWxsIHJ1bnMgY29udGFpbmluZyAiKSxfdSgxOCwiY29kZSIpLFBmKDE5LCJ0cmFpbiIpLEN1KCksUGYoMjAsIiB0byBvbmUgY29sb3IgYW5kIGFsbCBydW5zIGNvbnRhaW5pbmcgIiksX3UoMjEsImNvZGUiKSxQZigyMiwiZXZhbCIpLEN1KCksUGYoMjMsIiB0byBhbm90aGVyIGNvbG9yLiAiKSxDdSgpLEN1KCksSG0oMjQsdzIsNywyLCJkaXYiLDYpLF91KDI1LCJkaXYiLDcpLF91KDI2LCJidXR0b24iLDgpLFBmKDI3LCJDYW5jZWwiKSxDdSgpLF91KDI4LCJidXR0b24iLDkpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBvPUZtKDgpO3JldHVybiBuLm9uU2F2ZUNsaWNrKG8udmFsdWUpfSkpLFBmKDI5LCIgU2F2ZSAiKSxDdSgpLEN1KCksQ3UoKX0yJmUmJihEYyg3KSxGdSgidmFsdWUiLG4ucmVnZXhTdHJpbmcpLERjKDE3KSxodSgibmdJZiIsbi5yZWdleFN0cmluZykpfSxkaXJlY3RpdmVzOltscSxjcSxEaixVWixQdixkcSxXTCxzcSx4dix6dl0scGlwZXM6W2l4LCR2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMTk3NmQyfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leGFtcGxlLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM0MmE1ZjV9LmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6IzdiMWZhMn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhhbXBsZS1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06dmlzaXRlZCwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6I2JhNjhjOH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MTBweCAwfS5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206MTBweH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZTouOWVtfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLndhcm5pbmdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXBpbmctcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO21heC1oZWlnaHQ6NTB2aDtvdmVyZmxvdy15OmF1dG87cGFkZGluZzoyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cGluZy1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwaW5nLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX0ubWF0Y2gtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6Z3JpZDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIG1pbm1heCg1MCUsIDFmcikpfS5jb2xvci1zd2F0Y2hbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MCAwIDJweCAjMDAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxNXB4O3dpZHRoOjE1cHh9dWxbX25nY29udGVudC0lQ09NUCVde2xpc3Qtc3R5bGUtdHlwZTpub25lO3BhZGRpbmc6MH1tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDttYXJnaW46MDtwYWRkaW5nOjEwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1heC1jb250ZW50IGF1dG87cGFkZGluZzo1cHggMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5ncm91cC1pZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45NWVtO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgdWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICB1bFtfbmdjb250ZW50LSVDT01QJV0gICBsaVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubW9yZVtfbmdjb250ZW50LSVDT01QJV0sIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgLm5vLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1tYXRjaFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGsyLFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InJlZ2V4X2VkaXRfZGlhbG9nLm5nLmh0bWwiLHN0eWxlVXJsczpbInJlZ2V4X2VkaXRfZGlhbG9nX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Sll9LHt0eXBlOktofV19KSx7cmVnZXhTdHJpbmc6W3t0eXBlOlJffV0sY29sb3JSdW5QYWlyTGlzdDpbe3R5cGU6Ul99XSxvblNhdmU6W3t0eXBlOkVffV0scmVnZXhJbnB1dE9uQ2hhbmdlOlt7dHlwZTpFX31dLHJlZ2V4U3RyaW5nSW5wdXQ6W3t0eXBlOmFyLGFyZ3M6WyJyZWdleFN0cmluZ0lucHV0Iix7c3RhdGljOiEwfV19XX0pO2NsYXNzIFMye2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnN0b3JlPXQsdGhpcy5kaWFsb2dSZWY9ZSx0aGlzLnRlbnRhdGl2ZVJlZ2V4U3RyaW5nJD1uZXcgQix0aGlzLmdyb3VwQnlSZWdleFN0cmluZyQ9b2UoKCgpPT5wZSh0aGlzLnN0b3JlLnNlbGVjdChnSSkucGlwZSh2ZSgxKSksdGhpcy50ZW50YXRpdmVSZWdleFN0cmluZyQpKSkucGlwZShCZSgiIikpLHRoaXMuY29sb3JSdW5QYWlyTGlzdCQ9b2UoKCgpPT50aGlzLmdyb3VwQnlSZWdleFN0cmluZyQucGlwZShDZSg1MDApLGZlKCh0PT57dHJ5e2NvbnN0IGU9bmV3IFJlZ0V4cCh0KTtyZXR1cm4gQm9vbGVhbihlKX1jYXRjaCh0KXtyZXR1cm4hMX19KSksX2UodGhpcy5hbGxSdW5zJCx0aGlzLnJ1bklkVG9FaWQkLHRoaXMuc3RvcmUuc2VsZWN0KHdJKSx0aGlzLnN0b3JlLnNlbGVjdChWRCkpLFZ0KCgoW3QsZSxuLG8saV0pPT57Y29uc3QgYT1Yeih7a2V5Olp6LlJFR0VYLHJlZ2V4U3RyaW5nOnR9LGUsbikscj1uZXcgTWFwLHM9W107Zm9yKGNvbnN0W3QsZV1vZiBPYmplY3QuZW50cmllcyhhLm1hdGNoZXMpKXtsZXQgbj1yLmdldCh0KTtpZighbil7Y29uc3QgZT1vLmNvbG9yc1tyLnNpemUlby5jb2xvcnMubGVuZ3RoXTtuPWk/ZS5kYXJrSGV4OmUubGlnaHRIZXgsci5zZXQodCxuKX1zLnB1c2goe2dyb3VwSWQ6dCxjb2xvcjpuLHJ1bnM6ZX0pfXJldHVybiBzfSkpKSkpLnBpcGUoQmUoW10pKSx0aGlzLmV4cGVyaW1lbnRJZHM9bi5leHBlcmltZW50SWRzLHRoaXMucnVuSWRUb0VpZCQ9S3QodGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3Qob0kse2V4cGVyaW1lbnRJZDp0fSkucGlwZShWdCgoZT0+KHtleHBlcmltZW50SWQ6dCxydW5JZHM6ZX0pKSkpKSkpLnBpcGUoVnQoKHQ9Pntjb25zdCBlPXt9O2Zvcihjb25zdHtydW5JZHM6bixleHBlcmltZW50SWQ6b31vZiB0KWZvcihjb25zdCB0IG9mIG4pZVt0XT1vO3JldHVybiBlfSkpKSx0aGlzLmFsbFJ1bnMkPUt0KHRoaXMuZXhwZXJpbWVudElkcy5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KG5JLHtleHBlcmltZW50SWQ6dH0pKSkpLnBpcGUoVnQoKHQ9PnQuZmxhdCgpKSkpfW9uUmVnZXhJbnB1dE9uQ2hhbmdlKHQpe3RoaXMudGVudGF0aXZlUmVnZXhTdHJpbmckLm5leHQodCl9b25TYXZlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUFQoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLGdyb3VwQnk6e2tleTpaei5SRUdFWCxyZWdleFN0cmluZzp0fX0pKX19ZnVuY3Rpb24gRDIodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24gUjIodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJidXR0b24iLDEwKSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj1OdSgpO3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6bi5Hcm91cEJ5S2V5LkVYUEVSSU1FTlR9KX0pKSxfdSgxLCJzcGFuIiksSG0oMixEMiwxLDAsIm1hdC1pY29uIiw3KSxDdSgpLF91KDMsImxhYmVsIiksUGYoNCwiRXhwZXJpbWVudCIpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTt5bSgiYXJpYS1jaGVja2VkIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuRVhQRVJJTUVOVCksRGMoMiksaHUoIm5nSWYiLHQuc2VsZWN0ZWRHcm91cEJ5LmtleT09PXQuR3JvdXBCeUtleS5FWFBFUklNRU5UKX19ZnVuY3Rpb24gRTIodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24gQTIodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiwxMSl9ZnVuY3Rpb24gVDIodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJidXR0b24iLDEyKSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkub25Hcm91cEJ5UmVnZXhDbGljaygpfSkpLF91KDEsInNwYW4iKSxIbSgyLEEyLDEsMCwibWF0LWljb24iLDcpLEN1KCksX3UoMywibGFiZWwiKSxQZig0LCJSZWdleCIpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTt5bSgiYXJpYS1jaGVja2VkIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuUkVHRVgpLERjKDIpLGh1KCJuZ0lmIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuUkVHRVgpfX1mdW5jdGlvbiBOMih0LGUpe2lmKDEmdCYmKF91KDAsImxhYmVsIiksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpO0RjKDEpLHdmKHQucmVnZXhTdHJpbmcpfX1mdW5jdGlvbiB6Mih0LGUpezEmdCYmKF91KDAsImxhYmVsIiwxNyksUGYoMSwiKG5vbmUgc2V0KSIpLEN1KCkpfWZ1bmN0aW9uIEkyKHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiYnV0dG9uIiwxMyksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgpLm9uUmVnZXhTdHJpbmdFZGl0KCl9KSksX3UoMSwic3BhbiIpLE11KDIsIm1hdC1pY29uIiwxNCksQ3UoKSxIbSgzLE4yLDIsMSwibGFiZWwiLDE1KSxIbSg0LHoyLDIsMCwibGFiZWwiLDE2KSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO0RjKDMpLGh1KCJuZ0lmIix0LnJlZ2V4U3RyaW5nKSxEYygxKSxodSgibmdJZiIsIXQucmVnZXhTdHJpbmcpfX1TMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UzIpKGZ1KGlTKSxmdShKWSksZnUoJFkpKX0sUzIuybVjbXA9c28oe3R5cGU6UzIsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJlZ2V4U3RyaW5nIiwiY29sb3JSdW5QYWlyTGlzdCIsIm9uU2F2ZSIsInJlZ2V4SW5wdXRPbkNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwicmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50IiwwKSxEdSgib25TYXZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNhdmUoZSl9KSkoInJlZ2V4SW5wdXRPbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleElucHV0T25DaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoInJlZ2V4U3RyaW5nIixDeSgxLDIsbi5ncm91cEJ5UmVnZXhTdHJpbmckKSkoImNvbG9yUnVuUGFpckxpc3QiLEN5KDIsNCxuLmNvbG9yUnVuUGFpckxpc3QkKSl9LGRpcmVjdGl2ZXM6W2syXSxwaXBlczpbVnZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0sIHJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUzIsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicmVnZXgtZWRpdC1kaWFsb2ciLHRlbXBsYXRlOic8cmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50XG4gICAgW3JlZ2V4U3RyaW5nXT0iZ3JvdXBCeVJlZ2V4U3RyaW5nJCB8IGFzeW5jIlxuICAgIFtjb2xvclJ1blBhaXJMaXN0XT0iY29sb3JSdW5QYWlyTGlzdCQgfCBhc3luYyJcbiAgICAob25TYXZlKT0ib25TYXZlKCRldmVudCkiXG4gICAgKHJlZ2V4SW5wdXRPbkNoYW5nZSk9Im9uUmVnZXhJbnB1dE9uQ2hhbmdlKCRldmVudCkiXG4gID48L3JlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudD4nLHN0eWxlczpbIlxuICAgICAgOmhvc3QsXG4gICAgICByZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpKWX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6WyRZXX1dfV19KSxudWxsKTtjbGFzcyBIMntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZz10LHRoaXMuR3JvdXBCeUtleT1aeix0aGlzLm9uR3JvdXBCeUNoYW5nZT1uZXcgU3l9b25SZWdleFN0cmluZ0VkaXQoKXt0aGlzLmRpYWxvZy5vcGVuKFMyLHttYXhIZWlnaHQ6Ijk1dmgiLG1heFdpZHRoOiI4MHZ3IixkYXRhOntleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc319KX1vbkdyb3VwQnlSZWdleENsaWNrKCl7dGhpcy5yZWdleFN0cmluZz90aGlzLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6WnouUkVHRVgscmVnZXhTdHJpbmc6dGhpcy5yZWdleFN0cmluZ30pOnRoaXMub25SZWdleFN0cmluZ0VkaXQoKX19SDIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEgyKShmdShhcSkpfSxIMi7JtWNtcD1zbyh7dHlwZTpIMixzZWxlY3RvcnM6W1sicnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnQiXV0saW5wdXRzOntzaG93RXhwZXJpbWVudHNHcm91cEJ5OiJzaG93RXhwZXJpbWVudHNHcm91cEJ5IixleHBlcmltZW50SWRzOiJleHBlcmltZW50SWRzIixyZWdleFN0cmluZzoicmVnZXhTdHJpbmciLHNlbGVjdGVkR3JvdXBCeToic2VsZWN0ZWRHcm91cEJ5IixzaG93R3JvdXBCeVJlZ2V4OiJzaG93R3JvdXBCeVJlZ2V4In0sb3V0cHV0czp7b25Hcm91cEJ5Q2hhbmdlOiJvbkdyb3VwQnlDaGFuZ2UifSxkZWNsczoxNCx2YXJzOjYsY29uc3RzOltbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ29sb3IgcnVucyBieS4uLiIsMywibWF0TWVudVRyaWdnZXJGb3IiXSxbInN2Z0ljb24iLCJwYWxldHRlXzI0cHgiXSxbMSwicnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5Il0sWyJncm91cEJ5TWVudSIsIm1hdE1lbnUiXSxbMSwibGFiZWwiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJleHBlcmltZW50IiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbXJhZGlvIiwiZGF0YS12YWx1ZSIsInJ1biIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJkb25lXzI0cHgiLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJyZWdleCIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW0iLCJkYXRhLXZhbHVlIiwicmVnZXgtZWRpdCIsImNsYXNzIiwiZGlzcGxheS1yZWdleC1zdHJpbmciLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtcmFkaW8iLCJkYXRhLXZhbHVlIiwiZXhwZXJpbWVudCIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJkb25lXzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJyZWdleCIsMywiY2xpY2siXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW0iLCJkYXRhLXZhbHVlIiwicmVnZXgtZWRpdCIsMSwiZGlzcGxheS1yZWdleC1zdHJpbmciLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZWRpdF8yNHB4Il0sWzQsIm5nSWYiXSxbImNsYXNzIiwibm9uZS1zZXQtc3RyaW5nIiw0LCJuZ0lmIl0sWzEsIm5vbmUtc2V0LXN0cmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiYnV0dG9uIiwwKSxNdSgxLCJtYXQtaWNvbiIsMSksQ3UoKSxfdSgyLCJtYXQtbWVudSIsMiwzKSxfdSg0LCJkaXYiLDQpLFBmKDUsIkNvbG9yIHJ1bnMgYnkiKSxDdSgpLEhtKDYsUjIsNSwyLCJidXR0b24iLDUpLF91KDcsImJ1dHRvbiIsNiksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6bi5Hcm91cEJ5S2V5LlJVTn0pfSkpLF91KDgsInNwYW4iKSxIbSg5LEUyLDEsMCwibWF0LWljb24iLDcpLEN1KCksX3UoMTAsImxhYmVsIiksUGYoMTEsIlJ1biIpLEN1KCksQ3UoKSxIbSgxMixUMiw1LDIsImJ1dHRvbiIsOCksSG0oMTMsSTIsNSwyLCJidXR0b24iLDkpLEN1KCkpLDImZSl7aHUoIm1hdE1lbnVUcmlnZ2VyRm9yIixGbSgzKSksRGMoNiksaHUoIm5nSWYiLG4uc2hvd0V4cGVyaW1lbnRzR3JvdXBCeSksRGMoMSkseW0oImFyaWEtY2hlY2tlZCIsbi5zZWxlY3RlZEdyb3VwQnkua2V5PT09bi5Hcm91cEJ5S2V5LlJVTiksRGMoMiksaHUoIm5nSWYiLG4uc2VsZWN0ZWRHcm91cEJ5LmtleT09PW4uR3JvdXBCeUtleS5SVU4pLERjKDMpLGh1KCJuZ0lmIixuLnNob3dHcm91cEJ5UmVnZXgpLERjKDEpLGh1KCJuZ0lmIixuLnNob3dHcm91cEJ5UmVnZXgpfX0sZGlyZWN0aXZlczpbV0wsb1osRXEsUXEsUHYscXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnl7Zm9udC1zaXplOjE2cHh9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5sYWJlbHtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZTouOWVtO21hcmdpbjoxMHB4IDA7cGFkZGluZzowIDE2cHg7cG9pbnRlci1ldmVudHM6bm9uZX0gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgYnV0dG9ue2Rpc3BsYXk6Z3JpZDtnYXA6MnB4IDEwcHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjIwcHggYXV0b30gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgbWF0LWljb257aGVpZ2h0OjIwcHg7d2lkdGg6MjBweH0gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmRpc3BsYXktcmVnZXgtc3RyaW5ne3BhZGRpbmctbGVmdDo0MHB4fSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAuZGlzcGxheS1yZWdleC1zdHJpbmcgLm5vbmUtc2V0LXN0cmluZ3tjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgICAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAuZGlzcGxheS1yZWdleC1zdHJpbmcgLm5vbmUtc2V0LXN0cmluZywgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5kaXNwbGF5LXJlZ2V4LXN0cmluZyAubm9uZS1zZXQtc3RyaW5ne2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihIMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InJ1bnNfZ3JvdXBfbWVudV9idXR0b25fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbInJ1bnNfZ3JvdXBfbWVudV9idXR0b25fY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTphcX1dfSkse3Nob3dFeHBlcmltZW50c0dyb3VwQnk6W3t0eXBlOlJffV0sZXhwZXJpbWVudElkczpbe3R5cGU6Ul99XSxyZWdleFN0cmluZzpbe3R5cGU6Ul99XSxzZWxlY3RlZEdyb3VwQnk6W3t0eXBlOlJffV0sc2hvd0dyb3VwQnlSZWdleDpbe3R5cGU6Ul99XSxvbkdyb3VwQnlDaGFuZ2U6W3t0eXBlOkVffV19KTtjbGFzcyBGMntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zaG93R3JvdXBCeVJlZ2V4JD10aGlzLnN0b3JlLnNlbGVjdChZRCksdGhpcy5zaG93RXhwZXJpbWVudHNHcm91cEJ5JD10aGlzLnN0b3JlLnNlbGVjdChPUikucGlwZShWdCgodD0+dC5oYXMoX0QuQ09NUEFSRV9FWFBFUklNRU5UKSkpKSx0aGlzLnNlbGVjdGVkR3JvdXBCeSQ9dGhpcy5zdG9yZS5zZWxlY3Qoc0kpLHRoaXMuZ3JvdXBCeVJlZ2V4U3RyaW5nJD10aGlzLnN0b3JlLnNlbGVjdChnSSl9b25Hcm91cEJ5Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUFQoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLGdyb3VwQnk6dH0pKX19RjIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEYyKShmdShpUykpfSxGMi7JtWNtcD1zbyh7dHlwZTpGMixzZWxlY3RvcnM6W1sicnVucy1ncm91cC1tZW51LWJ1dHRvbiJdXSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMifSxkZWNsczo1LHZhcnM6MTMsY29uc3RzOltbMywicmVnZXhTdHJpbmciLCJzZWxlY3RlZEdyb3VwQnkiLCJzaG93R3JvdXBCeVJlZ2V4Iiwic2hvd0V4cGVyaW1lbnRzR3JvdXBCeSIsImV4cGVyaW1lbnRJZHMiLCJvbkdyb3VwQnlDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsInJ1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50IiwwKSxEdSgib25Hcm91cEJ5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkdyb3VwQnlDaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJyZWdleFN0cmluZyIsQ3koMSw1LG4uZ3JvdXBCeVJlZ2V4U3RyaW5nJCkpKCJzZWxlY3RlZEdyb3VwQnkiLEN5KDIsNyxuLnNlbGVjdGVkR3JvdXBCeSQpKSgic2hvd0dyb3VwQnlSZWdleCIsQ3koMyw5LG4uc2hvd0dyb3VwQnlSZWdleCQpKSgic2hvd0V4cGVyaW1lbnRzR3JvdXBCeSIsQ3koNCwxMSxuLnNob3dFeHBlcmltZW50c0dyb3VwQnkkKSkoImV4cGVyaW1lbnRJZHMiLG4uZXhwZXJpbWVudElkcyl9LGRpcmVjdGl2ZXM6W0gyXSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRjIsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicnVucy1ncm91cC1tZW51LWJ1dHRvbiIsdGVtcGxhdGU6J1xuICAgIDxydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudFxuICAgICAgW3JlZ2V4U3RyaW5nXT0iZ3JvdXBCeVJlZ2V4U3RyaW5nJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkR3JvdXBCeV09InNlbGVjdGVkR3JvdXBCeSQgfCBhc3luYyJcbiAgICAgIFtzaG93R3JvdXBCeVJlZ2V4XT0ic2hvd0dyb3VwQnlSZWdleCQgfCBhc3luYyJcbiAgICAgIFtzaG93RXhwZXJpbWVudHNHcm91cEJ5XT0ic2hvd0V4cGVyaW1lbnRzR3JvdXBCeSQgfCBhc3luYyJcbiAgICAgIFtleHBlcmltZW50SWRzXT0iZXhwZXJpbWVudElkcyJcbiAgICAgIChvbkdyb3VwQnlDaGFuZ2UpPSJvbkdyb3VwQnlDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9ydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtleHBlcmltZW50SWRzOlt7dHlwZTpSX31dfSk7Y29uc3QgTDI9WyJjb250YWluZXIiXTtmdW5jdGlvbiBCMih0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsIm1hdC1zbGlkZXIiLDQpLER1KCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkuc2luZ2xlVmFsdWVDaGFuZ2VkLmVtaXQobi52YWx1ZSl9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtodSgiZGlzYWJsZWQiLCF0LmVuYWJsZWQpKCJtaW4iLHQubWluKSgibWF4Iix0Lm1heCkoInN0ZXAiLDEpKCJ2YWx1ZSIsdC5sb3dlclZhbHVlKX19ZnVuY3Rpb24gVjIodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJzcGFuIiw1LDYpLE11KDIsInNwYW4iLDcpLE11KDMsInNwYW4iLDgpLF91KDQsInNwYW4iLDkpLER1KCJtb3VzZWRvd24iLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89TnUoKTtyZXR1cm4gby5oYW5kbGVNb3VzZURvd24obixvLlBvc2l0aW9uLkxFRlQpfSkpLEN1KCksX3UoNSwic3BhbiIsOSksRHUoIm1vdXNlZG93biIsKGZ1bmN0aW9uIGUobil7UGkodCk7Y29uc3Qgbz1OdSgpO3JldHVybiBvLmhhbmRsZU1vdXNlRG93bihuLG8uUG9zaXRpb24uUklHSFQpfSkpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtEYygzKSxsZigibGVmdCIsdC5nZXRUaHVtYlBvc2l0aW9uKHQubG93ZXJWYWx1ZSkpKCJ3aWR0aCIsdC5nZXRUcmFja1dpZHRoKCkpLERjKDEpLGxmKCJsZWZ0Iix0LmdldFRodW1iUG9zaXRpb24odC5sb3dlclZhbHVlKSksY2YoImFjdGl2ZSIsdC5pc1RodW1iQWN0aXZlKHQuUG9zaXRpb24uTEVGVCkpLERjKDEpLGxmKCJsZWZ0Iix0LmdldFRodW1iUG9zaXRpb24odC51cHBlclZhbHVlKSksY2YoImFjdGl2ZSIsdC5pc1RodW1iQWN0aXZlKHQuUG9zaXRpb24uUklHSFQpKX19dmFyIFUyOyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5MRUZUPTFdPSJMRUZUIix0W3QuUklHSFQ9Ml09IlJJR0hUIn0pKFUyfHwoVTI9e30pKTtjbGFzcyBqMntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy50aWNrQ291bnQ9MjAsdGhpcy5lbmFibGVkPSEwLHRoaXMucmFuZ2VWYWx1ZXNDaGFuZ2VkPW5ldyBTeSx0aGlzLnNpbmdsZVZhbHVlQ2hhbmdlZD1uZXcgU3ksdGhpcy5Qb3NpdGlvbj1VMix0aGlzLmFjdGl2ZVRodW1iPVUyLk5PTkUsdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI9MCx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9Z2V0VGh1bWJQb3NpdGlvbih0KXtjb25zdCBlPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKHQpLG49dGhpcy5tYXgtdGhpcy5taW47aWYobjw9MClyZXR1cm4iNTAlIjtyZXR1cm5gJHsoZS10aGlzLm1pbikvbioxMDB9JWB9Z2V0VHJhY2tXaWR0aCgpe2lmKG51bGw9PT10aGlzLnVwcGVyVmFsdWUpcmV0dXJuIjAlIjtjb25zdCB0PXRoaXMubWF4LXRoaXMubWluO2lmKHQ8PTApcmV0dXJuIjAlIjtyZXR1cm5gJHsodGhpcy5nZXRDbGlwcGVkVmFsdWUodGhpcy51cHBlclZhbHVlKS10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLmxvd2VyVmFsdWUpKS90KjEwMH0lYH1nZXRDbGlwcGVkVmFsdWUodCl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHQsdGhpcy5taW4pLHRoaXMubWF4KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkluaXQoKXtsZShkb2N1bWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5oYW5kbGVNb3VzZU1vdmUodCl9KSksbGUoZG9jdW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmhhbmRsZU1vdXNlT3V0KHQpfSkpfWhhbmRsZU1vdXNlRG93bih0LGUpe3RoaXMuYWN0aXZlVGh1bWI9ZTt0aGlzLm9mZnNldFhGcm9tT3JpZ2luT2ZBY3RpdmVUaHVtYj02LXQub2Zmc2V0WH1jYWxjdWxhdGVWYWx1ZUZyb21Nb3VzZUV2ZW50KHQpe2NvbnN0e2xlZnQ6ZSxyaWdodDpufT10aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89dC5jbGllbnRYLWUrdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI7bGV0IGk7aWYobnVsbCE9PXRoaXMudGlja0NvdW50JiZ0aGlzLnRpY2tDb3VudD4wKXtjb25zdCB0PShuLWUpL3RoaXMudGlja0NvdW50O2k9TWF0aC5yb3VuZChvL3QpKnQvKG4tZSl9ZWxzZSBpPW8vKG4tZSk7Y29uc3QgYT10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLm1pbisodGhpcy5tYXgtdGhpcy5taW4pKmkpO3JldHVybiBOdW1iZXIoYS50b0ZpeGVkKDEwKSl9aGFuZGxlTW91c2VNb3ZlKHQpe2lmKHRoaXMuYWN0aXZlVGh1bWI9PT1VMi5OT05FKXJldHVybjtpZihudWxsPT09dGhpcy51cHBlclZhbHVlKXJldHVybjtjb25zdCBlPXRoaXMuY2FsY3VsYXRlVmFsdWVGcm9tTW91c2VFdmVudCh0KTtsZXQgbj1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07dGhpcy5hY3RpdmVUaHVtYj09PVUyLkxFRlQ/KGU+dGhpcy51cHBlclZhbHVlJiYodGhpcy5hY3RpdmVUaHVtYj1VMi5SSUdIVCksbj1bZSx0aGlzLnVwcGVyVmFsdWVdKTooZTx0aGlzLmxvd2VyVmFsdWUmJih0aGlzLmFjdGl2ZVRodW1iPVUyLkxFRlQpLG49W3RoaXMubG93ZXJWYWx1ZSxlXSksdGhpcy5tYXliZU5vdGlmeU5leHRSYW5nZVZhbHVlcyhuKSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfW1heWJlTm90aWZ5TmV4dFJhbmdlVmFsdWVzKHQpe2NvbnN0W2Usbl09dC5zb3J0KCgodCxlKT0+dC1lKSk7dGhpcy5sb3dlclZhbHVlPT09ZSYmdGhpcy51cHBlclZhbHVlPT09bnx8dGhpcy5yYW5nZVZhbHVlc0NoYW5nZWQuZW1pdCh7bG93ZXJWYWx1ZTplLHVwcGVyVmFsdWU6bn0pfWhhbmRsZU1vdXNlT3V0KHQpe3RoaXMuYWN0aXZlVGh1bWIhPT1VMi5OT05FJiYodGhpcy5hY3RpdmVUaHVtYj1VMi5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfWhhbmRsZUlucHV0Q2hhbmdlKHQsZSl7Y29uc3Qgbj10LnRhcmdldCxvPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKE51bWJlcihuLnZhbHVlKSk7aXNOYU4obyl8fChlPT09VTIuTEVGVD9udWxsPT09dGhpcy51cHBlclZhbHVlP3RoaXMuc2luZ2xlVmFsdWVDaGFuZ2VkLmVtaXQobyk6dGhpcy5tYXliZU5vdGlmeU5leHRSYW5nZVZhbHVlcyhbbyx0aGlzLnVwcGVyVmFsdWVdKToiIj09PW4udmFsdWU/dGhpcy5zaW5nbGVWYWx1ZUNoYW5nZWQuZW1pdCh0aGlzLmxvd2VyVmFsdWUpOnRoaXMubWF5YmVOb3RpZnlOZXh0UmFuZ2VWYWx1ZXMoW3RoaXMubG93ZXJWYWx1ZSxvXSkpfWlzVGh1bWJBY3RpdmUodCl7cmV0dXJuIHRoaXMuYWN0aXZlVGh1bWI9PT10fX1qMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ajIpKGZ1KE9iKSl9LGoyLsm1Y21wPXNvKHt0eXBlOmoyLHNlbGVjdG9yczpbWyJ0Yi1yYW5nZS1pbnB1dCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmVnkoTDIsNSxLaCksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5jb250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e21pbjoibWluIixtYXg6Im1heCIsbG93ZXJWYWx1ZToibG93ZXJWYWx1ZSIsdXBwZXJWYWx1ZToidXBwZXJWYWx1ZSIsdGlja0NvdW50OiJ0aWNrQ291bnQiLGVuYWJsZWQ6ImVuYWJsZWQifSxvdXRwdXRzOntyYW5nZVZhbHVlc0NoYW5nZWQ6InJhbmdlVmFsdWVzQ2hhbmdlZCIsc2luZ2xlVmFsdWVDaGFuZ2VkOiJzaW5nbGVWYWx1ZUNoYW5nZWQifSxkZWNsczo1LHZhcnM6Nixjb25zdHM6W1sidHlwZSIsIm51bWJlciIsMSwibG93ZXItaW5wdXQiLDMsImRpc2FibGVkIiwidmFsdWUiLCJjaGFuZ2UiXSxbInR5cGUiLCJudW1iZXIiLDEsInVwcGVyLWlucHV0IiwzLCJkaXNhYmxlZCIsInZhbHVlIiwiY2hhbmdlIl0sWyJjbGFzcyIsInNpbmdsZS1zbGlkZXIiLCJjb2xvciIsInByaW1hcnkiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInZhbHVlIiwiaW5wdXQiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsicmFuZ2UiLCIiXSxbImNvbG9yIiwicHJpbWFyeSIsMSwic2luZ2xlLXNsaWRlciIsMywiZGlzYWJsZWQiLCJtaW4iLCJtYXgiLCJzdGVwIiwidmFsdWUiLCJpbnB1dCJdLFsxLCJjb250YWluZXIiXSxbImNvbnRhaW5lciIsIiJdLFsxLCJzbGlkZXItdHJhY2siXSxbMSwic2xpZGVyLXRyYWNrLWZpbGwiXSxbMSwidGh1bWIiLDMsIm1vdXNlZG93biJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiaW5wdXQiLDApLER1KCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUlucHV0Q2hhbmdlKGUsbi5Qb3NpdGlvbi5MRUZUKX0pKSxDdSgpLF91KDEsImlucHV0IiwxKSxEdSgiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVJbnB1dENoYW5nZShlLG4uUG9zaXRpb24uUklHSFQpfSkpLEN1KCksSG0oMixCMiwxLDUsIm1hdC1zbGlkZXIiLDIpLEhtKDMsVjIsNiwxMiwibmctdGVtcGxhdGUiLG51bGwsMyxxeSkpLDImZSl7Y29uc3QgdD1GbSg0KTtodSgiZGlzYWJsZWQiLCFuLmVuYWJsZWQpKCJ2YWx1ZSIsbi5sb3dlclZhbHVlKSxEYygxKSxodSgiZGlzYWJsZWQiLCFuLmVuYWJsZWQpKCJ2YWx1ZSIsbnVsbCE9PW4udXBwZXJWYWx1ZT9uLnVwcGVyVmFsdWU6IiIpLERjKDEpLGh1KCJuZ0lmIixudWxsPT09bi51cHBlclZhbHVlKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbUHYsSUpdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1ncmlkO2dyaWQtZ2FwOjEwcHg7Z3JpZC10ZW1wbGF0ZS1hcmVhczoibG93ZXItaW5wdXQgdXBwZXItaW5wdXQiICJzbGlkZXIgc2xpZGVyIjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtmb250LXNpemU6MDttaW4td2lkdGg6MTAwcHg7cGFkZGluZzo2cHh9aW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItc3R5bGU6c29saWQ7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9Lmxvd2VyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6bG93ZXItaW5wdXR9LnVwcGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6dXBwZXItaW5wdXQ7anVzdGlmeS1zZWxmOmZsZXgtZW5kfS5zaW5nbGUtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2xpZGVyO3BhZGRpbmc6MHB4fS5zaW5nbGUtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1hdC1zbGlkZXItd3JhcHBlcnt0b3A6NXB4O2xlZnQ6MHB4O3JpZ2h0OjBweH0gIC5zaW5nbGUtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6MTJweH0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2xpZGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnNsaWRlci10cmFja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNik7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjMpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjJweH0udGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMCwwLDAsLjI2KTtib3JkZXItcmFkaXVzOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEycHg7bWFyZ2luLWxlZnQ6LTZweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZTt3aWR0aDoxMnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjMpfS50aHVtYi5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpzY2FsZSgxLjIpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1yYW5nZS1pbnB1dCIsdGVtcGxhdGVVcmw6Ii4vcmFuZ2VfaW5wdXRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcmFuZ2VfaW5wdXRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYn1dfSkse2NvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNvbnRhaW5lciIse3N0YXRpYzohMSxyZWFkOktofV19XSxtaW46W3t0eXBlOlJffV0sbWF4Olt7dHlwZTpSX31dLGxvd2VyVmFsdWU6W3t0eXBlOlJffV0sdXBwZXJWYWx1ZTpbe3R5cGU6Ul99XSx0aWNrQ291bnQ6W3t0eXBlOlJffV0sZW5hYmxlZDpbe3R5cGU6Ul99XSxyYW5nZVZhbHVlc0NoYW5nZWQ6W3t0eXBlOkVffV0sc2luZ2xlVmFsdWVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y29uc3QgVzI9WyJtZWFzdXJlciJdLEcyPVsiaW5wdXQiXTtjbGFzcyBZMntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy5wbGFjZWhvbGRlcj0iIix0aGlzLnN0eWxlPSJkZWZhdWx0Iix0aGlzLnBhdHRlcm5SZWdleD1uZXcgUmVnRXhwKCIuKiIpLHRoaXMuaXNWYWxpZD0hMCx0aGlzLm9uVmFsdWVDaGFuZ2U9bmV3IFN5LHRoaXMuYmx1cj1uZXcgU3ksdGhpcy5mb2N1cz1uZXcgU3ksdGhpcy5rZXlkb3duPW5ldyBTeSx0aGlzLmtleXVwPW5ldyBTeSx0aGlzLmludGVybmFsVmFsdWU9IiIsdGhpcy5mb250Q2hhbmdlTGlzdGVuZXI9dGhpcy51cGRhdGVJbnB1dFdpZHRoLmJpbmQodGhpcyl9bmdPbkluaXQoKXtkb2N1bWVudC5mb250cyYmZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGluZ2RvbmUiLHRoaXMuZm9udENoYW5nZUxpc3RlbmVyKX1uZ09uRGVzdHJveSgpe2RvY3VtZW50LmZvbnRzJiZkb2N1bWVudC5mb250cy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkaW5nZG9uZSIsdGhpcy5mb250Q2hhbmdlTGlzdGVuZXIpfW5nT25DaGFuZ2VzKHQpe3ZhciBlO3QucGF0dGVybiYmKHRoaXMucGF0dGVyblJlZ2V4PW5ldyBSZWdFeHAobnVsbCE9PShlPXRoaXMucGF0dGVybikmJnZvaWQgMCE9PWU/ZToiIikpLHQudmFsdWUmJih0aGlzLmludGVybmFsVmFsdWU9dGhpcy52YWx1ZSksdGhpcy5pc1ZhbGlkPXRoaXMucGF0dGVyblJlZ2V4LnRlc3QodGhpcy5pbnRlcm5hbFZhbHVlKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnVwZGF0ZUlucHV0V2lkdGgoKX1vbklucHV0KHQpe2NvbnN0IGU9dGhpcy5pbnRlcm5hbFZhbHVlO3RoaXMuaW50ZXJuYWxWYWx1ZT10aGlzLmlucHV0RWxSZWYubmF0aXZlRWxlbWVudC52YWx1ZSx0aGlzLmludGVybmFsVmFsdWUhPT1lJiYodGhpcy5pc1ZhbGlkPXRoaXMucGF0dGVyblJlZ2V4LnRlc3QodGhpcy5pbnRlcm5hbFZhbHVlKSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKSx0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCh7dmFsdWU6dGhpcy5pbnRlcm5hbFZhbHVlfSl9dXBkYXRlSW5wdXRXaWR0aCgpe2NvbnN0e3dpZHRoOnR9PXRoaXMubWVhc3VyZXJFbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuaW5wdXRFbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoPWAke3R9cHhgfX1mdW5jdGlvbiBxMih0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImNvbnRlbnQtd3JhcHBpbmctaW5wdXQiLDMpLER1KCJvblZhbHVlQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5hbGlhc0NoYW5nZWQuZW1pdChuKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO2RmKHQuaXNBbGlhc05hbWVMZWdhbD8iaGlnaC1jb250cmFzdCI6ImVycm9yIiksaHUoInZhbHVlIix0LmFsaWFzLmFsaWFzVGV4dCl9fWZ1bmN0aW9uIFoyKHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO2NmKCJpbGxlZ2FsIiwhdC5pc0FsaWFzTmFtZUxlZ2FsKSxEYygxKSx3Zih0LmFsaWFzLmFsaWFzVGV4dCl9fVkyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZMikoZnUoT2IpKX0sWTIuybVjbXA9c28oe3R5cGU6WTIsc2VsZWN0b3JzOltbImNvbnRlbnQtd3JhcHBpbmctaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShXMiw3LEtoKSxWeShHMiw3LEtoKSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5tZWFzdXJlckVsUmVmPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLmlucHV0RWxSZWY9dC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZtZihuLnN0eWxlKX0saW5wdXRzOnt2YWx1ZToidmFsdWUiLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsc3R5bGU6InN0eWxlIixwYXR0ZXJuOiJwYXR0ZXJuIn0sb3V0cHV0czp7b25WYWx1ZUNoYW5nZToib25WYWx1ZUNoYW5nZSIsYmx1cjoiYmx1ciIsZm9jdXM6ImZvY3VzIixrZXlkb3duOiJrZXlkb3duIixrZXl1cDoia2V5dXAifSxmZWF0dXJlczpbcW9dLGRlY2xzOjYsdmFyczo3LGNvbnN0czpbWyJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1lYXN1cmVyIl0sWyJtZWFzdXJlciIsIiJdLFsiYXV0b2NvbXBsZXRlIiwib2ZmIiwic3BlbGxjaGVjayIsImZhbHNlIiwidHlwZSIsInRleHQiLDMsInZhbHVlIiwicGxhY2Vob2xkZXIiLCJibHVyIiwiZm9jdXMiLCJpbnB1dCIsImtleWRvd24iLCJrZXl1cCJdLFsiaW5wdXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsInNwYW4iKSxfdSgxLCJzcGFuIiwwLDEpLFBmKDMpLEN1KCksX3UoNCwiaW5wdXQiLDIsMyksRHUoImJsdXIiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmJsdXIuZW1pdChlKX0pKSgiZm9jdXMiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmZvY3VzLmVtaXQoZSl9KSkoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbklucHV0KGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duLmVtaXQoZSl9KSkoImtleXVwIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXl1cC5lbWl0KGUpfSkpLEN1KCksQ3UoKSksMiZlJiYoY2YoImNvbnRhaW5lciIsITApKCJpcy12YWxpZCIsbi5pc1ZhbGlkKSxEYygzKSx3ZihuLmludGVybmFsVmFsdWV8fG4ucGxhY2Vob2xkZXIpLERjKDEpLGh1KCJ2YWx1ZSIsbi52YWx1ZSkoInBsYWNlaG9sZGVyIixuLnBsYWNlaG9sZGVyKSl9LHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWZsZXg7d2lkdGg6bWF4LWNvbnRlbnR9W19uZ2hvc3QtJUNPTVAlXTpmb2N1cy13aXRoaW4gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y1N2MwMH0uZGVmYXVsdFtfbmdob3N0LSVDT01QJV06aG92ZXIgICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ViZWJlYn0uZXJyb3JbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIFtfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmlzLXZhbGlkKXtib3JkZXItY29sb3I6I2VmOWE5YX0uZXJyb3JbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5lcnJvcltfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cy13aXRoaW4sIFtfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmlzLXZhbGlkKTpob3ZlciwgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCguaXMtdmFsaWQpOmZvY3VzLXdpdGhpbntib3JkZXItY29sb3I6I2VmOWE5YX0uaGlnaC1jb250cmFzdFtfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2JkYmRiZH0uaGlnaC1jb250cmFzdFtfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcntib3JkZXItY29sb3I6Izc1NzU3NX0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMCwwLDAsMCk7cGFkZGluZzoxcHggMnB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5tZWFzdXJlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbn0ubWVhc3VyZXJbX25nY29udGVudC0lQ09NUCVdLCBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjQ7cGFkZGluZzowO3doaXRlLXNwYWNlOnByZX0ubWVhc3VyZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5LCBpbnB1dFtfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7d2lkdGg6MmNofWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1mYW1pbHk6aW5oZXJpdDtvdXRsaW5lOjB9aW5wdXRbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze3BhZGRpbmctcmlnaHQ6MWNofSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihZMixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjb250ZW50LXdyYXBwaW5nLWlucHV0Iix0ZW1wbGF0ZTonXG4gICAgPHNwYW4gW2NsYXNzLmNvbnRhaW5lcl09InRydWUiIFtjbGFzcy5pcy12YWxpZF09ImlzVmFsaWQiPlxuICAgICAgPHNwYW4gI21lYXN1cmVyIGNsYXNzPSJtZWFzdXJlciIgYXJpYS1oaWRkZW49InRydWUiPnt7XG4gICAgICAgIGludGVybmFsVmFsdWUgfHwgcGxhY2Vob2xkZXJcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBhdXRvY29tcGxldGU9Im9mZiJcbiAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiXG4gICAgICAgIHR5cGU9InRleHQiXG4gICAgICAgIChibHVyKT0iYmx1ci5lbWl0KCRldmVudCkiXG4gICAgICAgIChmb2N1cyk9ImZvY3VzLmVtaXQoJGV2ZW50KSJcbiAgICAgICAgKGlucHV0KT0ib25JbnB1dCgkZXZlbnQpIlxuICAgICAgICAoa2V5ZG93bik9ImtleWRvd24uZW1pdCgkZXZlbnQpIlxuICAgICAgICAoa2V5dXApPSJrZXl1cC5lbWl0KCRldmVudCkiXG4gICAgICAgIFt2YWx1ZV09InZhbHVlIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPSJwbGFjZWhvbGRlciJcbiAgICAgIC8+XG4gICAgPC9zcGFuPlxuICAnLHN0eWxlVXJsczpbIi4vY29udGVudF93cmFwcGluZ19pbnB1dF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSx7bWVhc3VyZXJFbFJlZjpbe3R5cGU6YXIsYXJnczpbIm1lYXN1cmVyIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLGlucHV0RWxSZWY6W3t0eXBlOmFyLGFyZ3M6WyJpbnB1dCIse3N0YXRpYzohMCxyZWFkOktofV19XSx2YWx1ZTpbe3R5cGU6Ul99XSxwbGFjZWhvbGRlcjpbe3R5cGU6Ul99XSxzdHlsZTpbe3R5cGU6QV8sYXJnczpbImNsYXNzIl19LHt0eXBlOlJffV0scGF0dGVybjpbe3R5cGU6Ul99XSxvblZhbHVlQ2hhbmdlOlt7dHlwZTpFX31dLGJsdXI6W3t0eXBlOkVffV0sZm9jdXM6W3t0eXBlOkVffV0sa2V5ZG93bjpbe3R5cGU6RV99XSxrZXl1cDpbe3R5cGU6RV99XX0pO2NsYXNzIFgye2NvbnN0cnVjdG9yKCl7dGhpcy5pc0FsaWFzTmFtZUxlZ2FsPSEwLHRoaXMuYWxpYXNDaGFuZ2VkPW5ldyBTeX19WDIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFgyKX0sWDIuybVjbXA9c28oe3R5cGU6WDIsc2VsZWN0b3JzOltbInRiLWV4cGVyaW1lbnQtYWxpYXMiXV0saW5wdXRzOnthbGlhczoiYWxpYXMiLGFsaWFzRWRpdGFibGU6ImFsaWFzRWRpdGFibGUiLGlzQWxpYXNOYW1lTGVnYWw6ImlzQWxpYXNOYW1lTGVnYWwifSxvdXRwdXRzOnthbGlhc0NoYW5nZWQ6ImFsaWFzQ2hhbmdlZCJ9LGRlY2xzOjUsdmFyczozLGNvbnN0czpbWzEsImFsaWFzLW51bWJlciJdLFsicGxhY2Vob2xkZXIiLCJBbGlhcyBmb3IgZXhwZXJpbWVudCIsMywic3R5bGUiLCJ2YWx1ZSIsIm9uVmFsdWVDaGFuZ2UiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9FZGl0QWxpYXNOYW1lIiwiIl0sWyJwbGFjZWhvbGRlciIsIkFsaWFzIGZvciBleHBlcmltZW50IiwzLCJ2YWx1ZSIsIm9uVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKF91KDAsInNwYW4iLDApLFBmKDEpLEN1KCksSG0oMixxMiwxLDMsImNvbnRlbnQtd3JhcHBpbmctaW5wdXQiLDEpLEhtKDMsWjIsMiwzLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSksMiZlKXtjb25zdCB0PUZtKDQpO0RjKDEpLHdmKG4uYWxpYXMuYWxpYXNOdW1iZXIpLERjKDEpLGh1KCJuZ0lmIixuLmFsaWFzRWRpdGFibGUpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOltQdixZMl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Y29sb3I6IzIxMjEyMTtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tcmlnaHQ6MnB4O3BhZGRpbmc6MCAycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWDIsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItZXhwZXJpbWVudC1hbGlhcyIsdGVtcGxhdGU6J1xuICAgIDxzcGFuIGNsYXNzPSJhbGlhcy1udW1iZXIiPnt7IGFsaWFzLmFsaWFzTnVtYmVyIH19PC9zcGFuPlxuICAgIDxjb250ZW50LXdyYXBwaW5nLWlucHV0XG4gICAgICAqbmdJZj0iYWxpYXNFZGl0YWJsZTsgZWxzZSBub0VkaXRBbGlhc05hbWUiXG4gICAgICBwbGFjZWhvbGRlcj0iQWxpYXMgZm9yIGV4cGVyaW1lbnQiXG4gICAgICBbc3R5bGVdPSJpc0FsaWFzTmFtZUxlZ2FsID8gXCdoaWdoLWNvbnRyYXN0XCcgOiBcJ2Vycm9yXCciXG4gICAgICBbdmFsdWVdPSJhbGlhcy5hbGlhc1RleHQiXG4gICAgICAob25WYWx1ZUNoYW5nZSk9ImFsaWFzQ2hhbmdlZC5lbWl0KCRldmVudCkiXG4gICAgPjwvY29udGVudC13cmFwcGluZy1pbnB1dD5cbiAgICA8bmctdGVtcGxhdGUgI25vRWRpdEFsaWFzTmFtZT5cbiAgICAgIDxzcGFuIFtjbGFzcy5pbGxlZ2FsXT0iIWlzQWxpYXNOYW1lTGVnYWwiPnt7IGFsaWFzLmFsaWFzVGV4dCB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAnLHN0eWxlVXJsczpbImV4cGVyaW1lbnRfYWxpYXNfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHthbGlhczpbe3R5cGU6Ul99XSxhbGlhc0VkaXRhYmxlOlt7dHlwZTpSX31dLGlzQWxpYXNOYW1lTGVnYWw6W3t0eXBlOlJffV0sYWxpYXNDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y29uc3QgSzI9WyJkaWFsb2dQb3B1cCJdLEoyPVsiaHVlU2xpZGVyIl0sUTI9WyJhbHBoYVNsaWRlciJdO2Z1bmN0aW9uICQyKHQsZSl7aWYoMSZ0JiZNdSgwLCJkaXYiKSwyJnQpe2NvbnN0IHQ9TnUoKTtJZigiYXJyb3cgYXJyb3ctIix0LmNwVXNlUG9zaXRpb24sIiIpLGxmKCJ0b3AiLHQuYXJyb3dUb3AsInB4Iil9fWZ1bmN0aW9uIHQ1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwyNiksRHUoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkNvbG9yQ2hhbmdlKG4pfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkub25EcmFnU3RhcnQoInNhdHVyYXRpb24tbGlnaHRuZXNzIil9KSkoImRyYWdFbmQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkub25EcmFnRW5kKCJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIpfSkpLE11KDEsImRpdiIsMTMpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7bGYoImJhY2tncm91bmQtY29sb3IiLHQuaHVlU2xpZGVyQ29sb3IpLGh1KCJyZ1giLDEpKCJyZ1kiLDEpLERjKDEpLGxmKCJ0b3AiLG51bGw9PXQuc2xpZGVyP251bGw6dC5zbGlkZXIudiwicHgiKSgibGVmdCIsbnVsbD09dC5zbGlkZXI/bnVsbDp0LnNsaWRlci5zLCJweCIpfX1mdW5jdGlvbiBlNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImJ1dHRvbiIsMjcpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUobil7UGkodCk7Y29uc3Qgbz1OdSgpO3JldHVybiBvLm9uQWRkUHJlc2V0Q29sb3IobixvLnNlbGVjdGVkQ29sb3IpfSkpLFBmKDEpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7bWYodC5jcEFkZENvbG9yQnV0dG9uQ2xhc3MpLGh1KCJkaXNhYmxlZCIsdC5jcFByZXNldENvbG9ycyYmdC5jcFByZXNldENvbG9ycy5sZW5ndGg+PXQuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGgpLERjKDEpLGtmKCIgIix0LmNwQWRkQ29sb3JCdXR0b25UZXh0LCIgIil9fWZ1bmN0aW9uIG41KHQsZSl7MSZ0JiZNdSgwLCJkaXYiLDI4KX1mdW5jdGlvbiBvNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImlucHV0IiwzNCksRHUoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoMikub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vbkFscGhhSW5wdXQobil9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMik7aHUoInJnIiwxKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LmEpfX1mdW5jdGlvbiBpNSh0LGUpezEmdCYmKF91KDAsImRpdiIpLFBmKDEsIkEiKSxDdSgpKX1mdW5jdGlvbiBhNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMjkpLF91KDEsImRpdiIsMzApLF91KDIsImlucHV0IiwzMSksRHUoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkub25DeWFuSW5wdXQobil9KSksQ3UoKSxfdSgzLCJpbnB1dCIsMzEpLER1KCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uTWFnZW50YUlucHV0KG4pfSkpLEN1KCksX3UoNCwiaW5wdXQiLDMxKSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vblllbGxvd0lucHV0KG4pfSkpLEN1KCksX3UoNSwiaW5wdXQiLDMxKSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkJsYWNrSW5wdXQobil9KSksQ3UoKSxIbSg2LG81LDEsMiwiaW5wdXQiLDMyKSxDdSgpLF91KDcsImRpdiIsMzApLF91KDgsImRpdiIpLFBmKDksIkMiKSxDdSgpLF91KDEwLCJkaXYiKSxQZigxMSwiTSIpLEN1KCksX3UoMTIsImRpdiIpLFBmKDEzLCJZIiksQ3UoKSxfdSgxNCwiZGl2IiksUGYoMTUsIksiKSxDdSgpLEhtKDE2LGk1LDIsMCwiZGl2IiwzMyksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO2xmKCJkaXNwbGF5IiwzIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLERjKDIpLGh1KCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LmMpLERjKDEpLGh1KCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0Lm0pLERjKDEpLGh1KCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LnkpLERjKDEpLGh1KCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LmspLERjKDEpLGh1KCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCksRGMoMTApLGh1KCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCl9fWZ1bmN0aW9uIHI1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiaW5wdXQiLDM0KSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDIpLm9uQWxwaGFJbnB1dChuKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgyKTtodSgicmciLDEpKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQuYSl9fWZ1bmN0aW9uIHM1KHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiksUGYoMSwiQSIpLEN1KCkpfWZ1bmN0aW9uIGw1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwzNSksX3UoMSwiZGl2IiwzMCksX3UoMiwiaW5wdXQiLDM2KSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkh1ZUlucHV0KG4pfSkpLEN1KCksX3UoMywiaW5wdXQiLDMxKSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vblNhdHVyYXRpb25JbnB1dChuKX0pKSxDdSgpLF91KDQsImlucHV0IiwzMSksRHUoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkub25MaWdodG5lc3NJbnB1dChuKX0pKSxDdSgpLEhtKDUscjUsMSwyLCJpbnB1dCIsMzIpLEN1KCksX3UoNiwiZGl2IiwzMCksX3UoNywiZGl2IiksUGYoOCwiSCIpLEN1KCksX3UoOSwiZGl2IiksUGYoMTAsIlMiKSxDdSgpLF91KDExLCJkaXYiKSxQZigxMiwiTCIpLEN1KCksSG0oMTMsczUsMiwwLCJkaXYiLDMzKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7bGYoImRpc3BsYXkiLDIhPT10LmZvcm1hdD8ibm9uZSI6ImJsb2NrIiksRGMoMiksaHUoInJnIiwzNjApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQuaCksRGMoMSksaHUoInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQucyksRGMoMSksaHUoInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQubCksRGMoMSksaHUoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKSxEYyg4KSxodSgibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBjNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImlucHV0IiwzNCksRHUoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoMikub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vbkFscGhhSW5wdXQobil9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMik7aHUoInJnIiwxKSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LmEpfX1mdW5jdGlvbiBkNSh0LGUpezEmdCYmKF91KDAsImRpdiIpLFBmKDEsIkEiKSxDdSgpKX1mdW5jdGlvbiBwNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMzcpLF91KDEsImRpdiIsMzApLF91KDIsImlucHV0IiwzOCksRHUoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkub25SZWRJbnB1dChuKX0pKSxDdSgpLF91KDMsImlucHV0IiwzOCksRHUoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkub25HcmVlbklucHV0KG4pfSkpLEN1KCksX3UoNCwiaW5wdXQiLDM4KSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkJsdWVJbnB1dChuKX0pKSxDdSgpLEhtKDUsYzUsMSwyLCJpbnB1dCIsMzIpLEN1KCksX3UoNiwiZGl2IiwzMCksX3UoNywiZGl2IiksUGYoOCwiUiIpLEN1KCksX3UoOSwiZGl2IiksUGYoMTAsIkciKSxDdSgpLF91KDExLCJkaXYiKSxQZigxMiwiQiIpLEN1KCksSG0oMTMsZDUsMiwwLCJkaXYiLDMzKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7bGYoImRpc3BsYXkiLDEhPT10LmZvcm1hdD8ibm9uZSI6ImJsb2NrIiksRGMoMiksaHUoInJnIiwyNTUpKCJ2YWx1ZSIsbnVsbD09dC5yZ2JhVGV4dD9udWxsOnQucmdiYVRleHQuciksRGMoMSksaHUoInJnIiwyNTUpKCJ2YWx1ZSIsbnVsbD09dC5yZ2JhVGV4dD9udWxsOnQucmdiYVRleHQuZyksRGMoMSksaHUoInJnIiwyNTUpKCJ2YWx1ZSIsbnVsbD09dC5yZ2JhVGV4dD9udWxsOnQucmdiYVRleHQuYiksRGMoMSksaHUoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKSxEYyg4KSxodSgibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBtNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImlucHV0IiwzNCksRHUoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoMikub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vbkFscGhhSW5wdXQobil9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMik7aHUoInJnIiwxKSgidmFsdWUiLHQuaGV4QWxwaGEpfX1mdW5jdGlvbiB1NSh0LGUpezEmdCYmKF91KDAsImRpdiIpLFBmKDEsIkEiKSxDdSgpKX1mdW5jdGlvbiBmNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMzkpLF91KDEsImRpdiIsMzApLF91KDIsImlucHV0Iiw0MCksRHUoImJsdXIiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkub25IZXhJbnB1dChudWxsKX0pKSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkhleElucHV0KG4pfSkpLEN1KCksSG0oMyxtNSwxLDIsImlucHV0IiwzMiksQ3UoKSxfdSg0LCJkaXYiLDMwKSxfdSg1LCJkaXYiKSxQZig2LCJIZXgiKSxDdSgpLEhtKDcsdTUsMiwwLCJkaXYiLDMzKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7bGYoImRpc3BsYXkiLDAhPT10LmZvcm1hdD8ibm9uZSI6ImJsb2NrIiksY2YoImhleC1hbHBoYSIsImZvcmNlZCI9PT10LmNwQWxwaGFDaGFubmVsKSxEYygyKSxodSgidmFsdWUiLHQuaGV4VGV4dCksRGMoMSksaHUoIm5nSWYiLCJmb3JjZWQiPT09dC5jcEFscGhhQ2hhbm5lbCksRGMoNCksaHUoIm5nSWYiLCJmb3JjZWQiPT09dC5jcEFscGhhQ2hhbm5lbCl9fWZ1bmN0aW9uIGc1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiaW5wdXQiLDM0KSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDIpLm9uQWxwaGFJbnB1dChuKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgyKTtodSgicmciLDEpKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQuYSl9fWZ1bmN0aW9uIGg1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2Iiw0MSksX3UoMSwiZGl2IiwzMCksX3UoMiwiaW5wdXQiLDMxKSxEdSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vblZhbHVlSW5wdXQobil9KSksQ3UoKSxIbSgzLGc1LDEsMiwiaW5wdXQiLDMyKSxDdSgpLF91KDQsImRpdiIsMzApLF91KDUsImRpdiIpLFBmKDYsIlYiKSxDdSgpLF91KDcsImRpdiIpLFBmKDgsIkEiKSxDdSgpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtEYygyKSxodSgicmciLDEwMCkoInZhbHVlIixudWxsPT10LmhzbGFUZXh0P251bGw6dC5oc2xhVGV4dC5sKSxEYygxKSxodSgibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBiNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsNDIpLF91KDEsInNwYW4iLDQzKSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkub25Gb3JtYXRUb2dnbGUoLTEpfSkpLEN1KCksX3UoMiwic3BhbiIsNDMpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkZvcm1hdFRvZ2dsZSgxKX0pKSxDdSgpLEN1KCl9fWZ1bmN0aW9uIHk1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwic3BhbiIsNTApLER1KCJjbGljayIsKGZ1bmN0aW9uIGUobil7UGkodCk7Y29uc3Qgbz1OdSgpLiRpbXBsaWNpdDtyZXR1cm4gTnUoMykub25SZW1vdmVQcmVzZXRDb2xvcihuLG8pfSkpLEN1KCl9aWYoMiZ0KXttZihOdSg0KS5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3MpfX1mdW5jdGlvbiBfNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsNDgpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLiRpbXBsaWNpdDtyZXR1cm4gTnUoMykuc2V0Q29sb3JGcm9tU3RyaW5nKG4pfSkpLEhtKDEseTUsMSwzLCJzcGFuIiw0OSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgzKTtsZigiYmFja2dyb3VuZC1jb2xvciIsdCksRGMoMSksaHUoIm5nSWYiLG4uY3BBZGRDb2xvckJ1dHRvbil9fWZ1bmN0aW9uIEM1KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiksSG0oMSxfNSwyLDMsImRpdiIsNDcpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTttZih0LmNwUHJlc2V0Q29sb3JzQ2xhc3MpLERjKDEpLGh1KCJuZ0Zvck9mIix0LmNwUHJlc2V0Q29sb3JzKX19ZnVuY3Rpb24gTTUodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiKSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7bWYodC5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzKSxEYygxKSx3Zih0LmNwUHJlc2V0RW1wdHlNZXNzYWdlKX19ZnVuY3Rpb24gdjUodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDQ0KSxNdSgxLCJociIpLF91KDIsImRpdiIsNDUpLFBmKDMpLEN1KCksSG0oNCxDNSwyLDQsImRpdiIsNDYpLEhtKDUsTTUsMiw0LCJkaXYiLDQ2KSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygzKSx3Zih0LmNwUHJlc2V0TGFiZWwpLERjKDEpLGh1KCJuZ0lmIixudWxsPT10LmNwUHJlc2V0Q29sb3JzP251bGw6dC5jcFByZXNldENvbG9ycy5sZW5ndGgpLERjKDEpLGh1KCJuZ0lmIiwhKG51bGwhPXQuY3BQcmVzZXRDb2xvcnMmJnQuY3BQcmVzZXRDb2xvcnMubGVuZ3RoKSYmdC5jcEFkZENvbG9yQnV0dG9uKX19ZnVuY3Rpb24geDUodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJidXR0b24iLDUzKSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vbkNhbmNlbENvbG9yKG4pfSkpLFBmKDEpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KDIpO21mKHQuY3BDYW5jZWxCdXR0b25DbGFzcyksRGMoMSksd2YodC5jcENhbmNlbEJ1dHRvblRleHQpfX1mdW5jdGlvbiBPNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImJ1dHRvbiIsNTMpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDIpLm9uQWNjZXB0Q29sb3Iobil9KSksUGYoMSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMik7bWYodC5jcE9LQnV0dG9uQ2xhc3MpLERjKDEpLHdmKHQuY3BPS0J1dHRvblRleHQpfX1mdW5jdGlvbiBQNSh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsNTEpLEhtKDEseDUsMiw0LCJidXR0b24iLDUyKSxIbSgyLE81LDIsNCwiYnV0dG9uIiw1MiksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksaHUoIm5nSWYiLHQuY3BDYW5jZWxCdXR0b24pLERjKDEpLGh1KCJuZ0lmIix0LmNwT0tCdXR0b24pfX12YXIgdzU7IShmdW5jdGlvbih0KXt0W3QuSEVYPTBdPSJIRVgiLHRbdC5SR0JBPTFdPSJSR0JBIix0W3QuSFNMQT0yXT0iSFNMQSIsdFt0LkNNWUs9M109IkNNWUsifSkodzV8fCh3NT17fSkpO2NsYXNzIGs1e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMucj10LHRoaXMuZz1lLHRoaXMuYj1uLHRoaXMuYT1vfX1jbGFzcyBTNXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmg9dCx0aGlzLnM9ZSx0aGlzLnY9bix0aGlzLmE9b319Y2xhc3MgRDV7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy5sPW4sdGhpcy5hPW99fWNsYXNzIFI1e2NvbnN0cnVjdG9yKHQsZSxuLG8saT0xKXt0aGlzLmM9dCx0aGlzLm09ZSx0aGlzLnk9bix0aGlzLms9byx0aGlzLmE9aX19Y2xhc3MgRTV7Y29uc3RydWN0b3IoKXt0aGlzLm5ld1ZhbHVlPW5ldyBTeX1pbnB1dENoYW5nZSh0KXtjb25zdCBlPXQudGFyZ2V0LnZhbHVlO2lmKHZvaWQgMD09PXRoaXMucmcpdGhpcy5uZXdWYWx1ZS5lbWl0KGUpO2Vsc2V7Y29uc3QgdD1wYXJzZUZsb2F0KGUpO3RoaXMubmV3VmFsdWUuZW1pdCh7djp0LHJnOnRoaXMucmd9KX19fUU1Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFNSl9LEU1Lsm1ZGlyPWhvKHt0eXBlOkU1LHNlbGVjdG9yczpbWyIiLCJ0ZXh0IiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmlucHV0Q2hhbmdlKGUpfSkpfSxpbnB1dHM6e3JnOiJyZyIsdGV4dDoidGV4dCJ9LG91dHB1dHM6e25ld1ZhbHVlOiJuZXdWYWx1ZSJ9fSksRTUucHJvcERlY29yYXRvcnM9e3JnOlt7dHlwZTpSX31dLHRleHQ6W3t0eXBlOlJffV0sbmV3VmFsdWU6W3t0eXBlOkVffV0saW5wdXRDaGFuZ2U6W3t0eXBlOlRfLGFyZ3M6WyJpbnB1dCIsWyIkZXZlbnQiXV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFNSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbdGV4dF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHtuZXdWYWx1ZTpbe3R5cGU6RV99XSxpbnB1dENoYW5nZTpbe3R5cGU6VF8sYXJnczpbImlucHV0IixbIiRldmVudCJdXX1dLHJnOlt7dHlwZTpSX31dLHRleHQ6W3t0eXBlOlJffV19KTtjbGFzcyBBNXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsUmVmPXQsdGhpcy5kcmFnRW5kPW5ldyBTeSx0aGlzLmRyYWdTdGFydD1uZXcgU3ksdGhpcy5uZXdWYWx1ZT1uZXcgU3ksdGhpcy5saXN0ZW5lck1vdmU9dD0+dGhpcy5tb3ZlKHQpLHRoaXMubGlzdGVuZXJTdG9wPSgpPT50aGlzLnN0b3AoKX1tb3VzZURvd24odCl7dGhpcy5zdGFydCh0KX10b3VjaFN0YXJ0KHQpe3RoaXMuc3RhcnQodCl9bW92ZSh0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy5zZXRDdXJzb3IodCl9c3RhcnQodCl7dGhpcy5zZXRDdXJzb3IodCksdC5zdG9wUHJvcGFnYXRpb24oKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSx0aGlzLmRyYWdTdGFydC5lbWl0KCl9c3RvcCgpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5saXN0ZW5lclN0b3ApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5saXN0ZW5lck1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5saXN0ZW5lck1vdmUpLHRoaXMuZHJhZ0VuZC5lbWl0KCl9Z2V0WCh0KXtjb25zdCBlPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4odm9pZCAwIT09dC5wYWdlWD90LnBhZ2VYOnQudG91Y2hlc1swXS5wYWdlWCktZS5sZWZ0LXdpbmRvdy5wYWdlWE9mZnNldH1nZXRZKHQpe2NvbnN0IGU9dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybih2b2lkIDAhPT10LnBhZ2VZP3QucGFnZVk6dC50b3VjaGVzWzBdLnBhZ2VZKS1lLnRvcC13aW5kb3cucGFnZVlPZmZzZXR9c2V0Q3Vyc29yKHQpe2NvbnN0IGU9dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLG49dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCxvPU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5nZXRYKHQpLGUpKSxpPU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5nZXRZKHQpLG4pKTt2b2lkIDAhPT10aGlzLnJnWCYmdm9pZCAwIT09dGhpcy5yZ1k/dGhpcy5uZXdWYWx1ZS5lbWl0KHtzOm8vZSx2OjEtaS9uLHJnWDp0aGlzLnJnWCxyZ1k6dGhpcy5yZ1l9KTp2b2lkIDA9PT10aGlzLnJnWCYmdm9pZCAwIT09dGhpcy5yZ1k/dGhpcy5uZXdWYWx1ZS5lbWl0KHt2OmkvbixyZ1k6dGhpcy5yZ1l9KTp2b2lkIDAhPT10aGlzLnJnWCYmdm9pZCAwPT09dGhpcy5yZ1kmJnRoaXMubmV3VmFsdWUuZW1pdCh7djpvL2UscmdYOnRoaXMucmdYfSl9fUE1Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBNSkoZnUoS2gpKX0sQTUuybVkaXI9aG8oe3R5cGU6QTUsc2VsZWN0b3JzOltbIiIsInNsaWRlciIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmRHUoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ubW91c2VEb3duKGUpfSkpKCJ0b3VjaHN0YXJ0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi50b3VjaFN0YXJ0KGUpfSkpfSxpbnB1dHM6e3JnWDoicmdYIixyZ1k6InJnWSIsc2xpZGVyOiJzbGlkZXIifSxvdXRwdXRzOntkcmFnRW5kOiJkcmFnRW5kIixkcmFnU3RhcnQ6ImRyYWdTdGFydCIsbmV3VmFsdWU6Im5ld1ZhbHVlIn19KSxBNS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofV0sQTUucHJvcERlY29yYXRvcnM9e3JnWDpbe3R5cGU6Ul99XSxyZ1k6W3t0eXBlOlJffV0sc2xpZGVyOlt7dHlwZTpSX31dLGRyYWdFbmQ6W3t0eXBlOkVffV0sZHJhZ1N0YXJ0Olt7dHlwZTpFX31dLG5ld1ZhbHVlOlt7dHlwZTpFX31dLG1vdXNlRG93bjpbe3R5cGU6VF8sYXJnczpbIm1vdXNlZG93biIsWyIkZXZlbnQiXV19XSx0b3VjaFN0YXJ0Olt7dHlwZTpUXyxhcmdzOlsidG91Y2hzdGFydCIsWyIkZXZlbnQiXV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihBNSxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbc2xpZGVyXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH1dfSkse2RyYWdFbmQ6W3t0eXBlOkVffV0sZHJhZ1N0YXJ0Olt7dHlwZTpFX31dLG5ld1ZhbHVlOlt7dHlwZTpFX31dLG1vdXNlRG93bjpbe3R5cGU6VF8sYXJnczpbIm1vdXNlZG93biIsWyIkZXZlbnQiXV19XSx0b3VjaFN0YXJ0Olt7dHlwZTpUXyxhcmdzOlsidG91Y2hzdGFydCIsWyIkZXZlbnQiXV19XSxyZ1g6W3t0eXBlOlJffV0scmdZOlt7dHlwZTpSX31dLHNsaWRlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIFQ1e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuaD10LHRoaXMucz1lLHRoaXMudj1uLHRoaXMuYT1vfX1jbGFzcyBONXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmg9dCx0aGlzLnM9ZSx0aGlzLnY9bix0aGlzLmE9b319Y2xhc3MgejV7Y29uc3RydWN0b3IoKXt0aGlzLmFjdGl2ZT1udWxsfXNldEFjdGl2ZSh0KXt0aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUhPT10JiYiaW5saW5lIiE9PXRoaXMuYWN0aXZlLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5hY3RpdmUuY2xvc2VEaWFsb2coKSx0aGlzLmFjdGl2ZT10fWhzdmEyaHNsYSh0KXtjb25zdCBlPXQuaCxuPXQucyxvPXQudixpPXQuYTtpZigwPT09bylyZXR1cm4gbmV3IEQ1KGUsMCwwLGkpO2lmKDA9PT1uJiYxPT09bylyZXR1cm4gbmV3IEQ1KGUsMSwxLGkpO3tjb25zdCB0PW8qKDItbikvMjtyZXR1cm4gbmV3IEQ1KGUsbypuLygxLU1hdGguYWJzKDIqdC0xKSksdCxpKX19aHNsYTJoc3ZhKHQpe2NvbnN0IGU9TWF0aC5taW4odC5oLDEpLG49TWF0aC5taW4odC5zLDEpLG89TWF0aC5taW4odC5sLDEpLGk9TWF0aC5taW4odC5hLDEpO2lmKDA9PT1vKXJldHVybiBuZXcgUzUoZSwwLDAsaSk7e2NvbnN0IHQ9bytuKigxLU1hdGguYWJzKDIqby0xKSkvMjtyZXR1cm4gbmV3IFM1KGUsMioodC1vKS90LHQsaSl9fWhzdmFUb1JnYmEodCl7bGV0IGUsbixvO2NvbnN0IGk9dC5oLGE9dC5zLHI9dC52LHM9dC5hLGw9TWF0aC5mbG9vcig2KmkpLGM9NippLWwsZD1yKigxLWEpLHA9ciooMS1jKmEpLG09ciooMS0oMS1jKSphKTtzd2l0Y2gobCU2KXtjYXNlIDA6ZT1yLG49bSxvPWQ7YnJlYWs7Y2FzZSAxOmU9cCxuPXIsbz1kO2JyZWFrO2Nhc2UgMjplPWQsbj1yLG89bTticmVhaztjYXNlIDM6ZT1kLG49cCxvPXI7YnJlYWs7Y2FzZSA0OmU9bSxuPWQsbz1yO2JyZWFrO2Nhc2UgNTplPXIsbj1kLG89cDticmVhaztkZWZhdWx0OmU9MCxuPTAsbz0wfXJldHVybiBuZXcgazUoZSxuLG8scyl9Y215a1RvUmdiKHQpe3JldHVybiBuZXcgazUoKDEtdC5jKSooMS10LmspLCgxLXQubSkqKDEtdC5rKSwoMS10LnkpKigxLXQuayksdC5hKX1yZ2JhVG9DbXlrKHQpe2NvbnN0IGU9MS1NYXRoLm1heCh0LnIsdC5nLHQuYik7aWYoMT09PWUpcmV0dXJuIG5ldyBSNSgwLDAsMCwxLHQuYSk7cmV0dXJuIG5ldyBSNSgoMS10LnItZSkvKDEtZSksKDEtdC5nLWUpLygxLWUpLCgxLXQuYi1lKS8oMS1lKSxlLHQuYSl9cmdiYVRvSHN2YSh0KXtsZXQgZSxuO2NvbnN0IG89TWF0aC5taW4odC5yLDEpLGk9TWF0aC5taW4odC5nLDEpLGE9TWF0aC5taW4odC5iLDEpLHI9TWF0aC5taW4odC5hLDEpLHM9TWF0aC5tYXgobyxpLGEpLGw9TWF0aC5taW4obyxpLGEpLGM9cyxkPXMtbDtpZihuPTA9PT1zPzA6ZC9zLHM9PT1sKWU9MDtlbHNle3N3aXRjaChzKXtjYXNlIG86ZT0oaS1hKS9kKyhpPGE/NjowKTticmVhaztjYXNlIGk6ZT0oYS1vKS9kKzI7YnJlYWs7Y2FzZSBhOmU9KG8taSkvZCs0O2JyZWFrO2RlZmF1bHQ6ZT0wfWUvPTZ9cmV0dXJuIG5ldyBTNShlLG4sYyxyKX1yZ2JhVG9IZXgodCxlKXtsZXQgbj0iIyIrKDE8PDI0fHQucjw8MTZ8dC5nPDw4fHQuYikudG9TdHJpbmcoMTYpLnN1YnN0cigxKTtyZXR1cm4gZSYmKG4rPSgyNTZ8TWF0aC5yb3VuZCgyNTUqdC5hKSkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSksbn1ub3JtYWxpemVDTVlLKHQpe3JldHVybiBuZXcgUjUodC5jLzEwMCx0Lm0vMTAwLHQueS8xMDAsdC5rLzEwMCx0LmEpfWRlbm9ybWFsaXplQ01ZSyh0KXtyZXR1cm4gbmV3IFI1KE1hdGguZmxvb3IoMTAwKnQuYyksTWF0aC5mbG9vcigxMDAqdC5tKSxNYXRoLmZsb29yKDEwMCp0LnkpLE1hdGguZmxvb3IoMTAwKnQuayksdC5hKX1kZW5vcm1hbGl6ZVJHQkEodCl7cmV0dXJuIG5ldyBrNShNYXRoLnJvdW5kKDI1NSp0LnIpLE1hdGgucm91bmQoMjU1KnQuZyksTWF0aC5yb3VuZCgyNTUqdC5iKSx0LmEpfXN0cmluZ1RvSHN2YSh0PSIiLGU9ITEpe2xldCBuPW51bGw7dD0odHx8IiIpLnRvTG93ZXJDYXNlKCk7Y29uc3Qgbz1be3JlOi8ocmdiKWE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqJT8sXHMqKFxkezEsM30pXHMqJT8oPzosXHMqKFxkKyg/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrNShwYXJzZUludCh0WzJdLDEwKS8yNTUscGFyc2VJbnQodFszXSwxMCkvMjU1LHBhcnNlSW50KHRbNF0sMTApLzI1NSxpc05hTihwYXJzZUZsb2F0KHRbNV0pKT8xOnBhcnNlRmxvYXQodFs1XSkpfX0se3JlOi8oaHNsKWE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pJVxzKixccyooXGR7MSwzfSklXHMqKD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRDUocGFyc2VJbnQodFsyXSwxMCkvMzYwLHBhcnNlSW50KHRbM10sMTApLzEwMCxwYXJzZUludCh0WzRdLDEwKS8xMDAsaXNOYU4ocGFyc2VGbG9hdCh0WzVdKSk/MTpwYXJzZUZsb2F0KHRbNV0pKX19XTtvLnB1c2goZT97cmU6LyMoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pPyQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgazUocGFyc2VJbnQodFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0sMTYpLzI1NSxwYXJzZUludCh0WzNdLDE2KS8yNTUscGFyc2VJbnQodFs0XXx8IkZGIiwxNikvMjU1KX19OntyZTovIyhbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KSQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgazUocGFyc2VJbnQodFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0sMTYpLzI1NSxwYXJzZUludCh0WzNdLDE2KS8yNTUsMSl9fSksby5wdXNoKHtyZTovIyhbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKSQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgazUocGFyc2VJbnQodFsxXSt0WzFdLDE2KS8yNTUscGFyc2VJbnQodFsyXSt0WzJdLDE2KS8yNTUscGFyc2VJbnQodFszXSt0WzNdLDE2KS8yNTUsMSl9fSk7Zm9yKGNvbnN0IGUgaW4gbylpZihvLmhhc093blByb3BlcnR5KGUpKXtjb25zdCBpPW9bZV0sYT1pLnJlLmV4ZWModCkscj1hJiZpLnBhcnNlKGEpO2lmKHIpcmV0dXJuIHIgaW5zdGFuY2VvZiBrNT9uPXRoaXMucmdiYVRvSHN2YShyKTpyIGluc3RhbmNlb2YgRDUmJihuPXRoaXMuaHNsYTJoc3ZhKHIpKSxufXJldHVybiBufW91dHB1dEZvcm1hdCh0LGUsbil7c3dpdGNoKCJhdXRvIj09PWUmJihlPXQuYTwxPyJyZ2JhIjoiaGV4IiksZSl7Y2FzZSJoc2xhIjpjb25zdCBlPXRoaXMuaHN2YTJoc2xhKHQpLG89bmV3IEQ1KE1hdGgucm91bmQoMzYwKmUuaCksTWF0aC5yb3VuZCgxMDAqZS5zKSxNYXRoLnJvdW5kKDEwMCplLmwpLE1hdGgucm91bmQoMTAwKmUuYSkvMTAwKTtyZXR1cm4gdC5hPDF8fCJhbHdheXMiPT09bj8iaHNsYSgiK28uaCsiLCIrby5zKyIlLCIrby5sKyIlLCIrby5hKyIpIjoiaHNsKCIrby5oKyIsIitvLnMrIiUsIitvLmwrIiUpIjtjYXNlInJnYmEiOmNvbnN0IGk9dGhpcy5kZW5vcm1hbGl6ZVJHQkEodGhpcy5oc3ZhVG9SZ2JhKHQpKTtyZXR1cm4gdC5hPDF8fCJhbHdheXMiPT09bj8icmdiYSgiK2kucisiLCIraS5nKyIsIitpLmIrIiwiK01hdGgucm91bmQoMTAwKmkuYSkvMTAwKyIpIjoicmdiKCIraS5yKyIsIitpLmcrIiwiK2kuYisiKSI7ZGVmYXVsdDpjb25zdCBhPSJhbHdheXMiPT09bnx8ImZvcmNlZCI9PT1uO3JldHVybiB0aGlzLnJnYmFUb0hleCh0aGlzLmRlbm9ybWFsaXplUkdCQSh0aGlzLmhzdmFUb1JnYmEodCkpLGEpfX19ejUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHo1KX0sejUuybVwcm92PVNuKHt0b2tlbjp6NSxmYWN0b3J5Ono1Lsm1ZmFjfSksejUuY3RvclBhcmFtZXRlcnM9KCk9PltdLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoejUsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBJNXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5lbFJlZj10LHRoaXMuY2RSZWY9ZSx0aGlzLnNlcnZpY2U9bix0aGlzLmlzSUUxMD0hMSx0aGlzLmRpYWxvZ0Fycm93U2l6ZT0xMCx0aGlzLmRpYWxvZ0Fycm93T2Zmc2V0PTE1LHRoaXMuZGlhbG9nSW5wdXRGaWVsZHM9W3c1LkhFWCx3NS5SR0JBLHc1LkhTTEEsdzUuQ01ZS10sdGhpcy51c2VSb290Vmlld0NvbnRhaW5lcj0hMX1oYW5kbGVFc2ModCl7dGhpcy5zaG93JiYicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMub25DYW5jZWxDb2xvcih0KX1oYW5kbGVFbnRlcih0KXt0aGlzLnNob3cmJiJwb3B1cCI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5vbkFjY2VwdENvbG9yKHQpfW5nT25Jbml0KCl7dGhpcy5zbGlkZXI9bmV3IFQ1KDAsMCwwLDApO3RoaXMuc2xpZGVyRGltTWF4PW5ldyBONSh0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDAsdGhpcy5jcFdpZHRoLDEzMCx0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDE0MCksdGhpcy5mb3JtYXQ9dGhpcy5jcENteWtFbmFibGVkP3c1LkNNWUs6InJnYmEiPT09dGhpcy5jcE91dHB1dEZvcm1hdD93NS5SR0JBOiJoc2xhIj09PXRoaXMuY3BPdXRwdXRGb3JtYXQ/dzUuSFNMQTp3NS5IRVgsdGhpcy5saXN0ZW5lck1vdXNlRG93bj10PT57dGhpcy5vbk1vdXNlRG93bih0KX0sdGhpcy5saXN0ZW5lclJlc2l6ZT0oKT0+e3RoaXMub25SZXNpemUoKX0sdGhpcy5vcGVuRGlhbG9nKHRoaXMuaW5pdGlhbENvbG9yLCExKX1uZ09uRGVzdHJveSgpe3RoaXMuY2xvc2VEaWFsb2coKX1uZ0FmdGVyVmlld0luaXQoKXtpZigyMzAhPT10aGlzLmNwV2lkdGh8fCJpbmxpbmUiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkpe3RoaXMuc2xpZGVyRGltTWF4PW5ldyBONSh0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDAsdGhpcy5jcFdpZHRoLDEzMCx0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDE0MCksdGhpcy51cGRhdGVDb2xvclBpY2tlcighMSksdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCl9fW9wZW5EaWFsb2codCxlPSEwKXt0aGlzLnNlcnZpY2Uuc2V0QWN0aXZlKHRoaXMpLHRoaXMud2lkdGh8fCh0aGlzLmNwV2lkdGg9dGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpLHRoaXMuaGVpZ2h0fHwodGhpcy5oZWlnaHQ9MzIwKSx0aGlzLnNldEluaXRpYWxDb2xvcih0KSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0LGUpLHRoaXMub3BlbkNvbG9yUGlja2VyKCl9Y2xvc2VEaWFsb2coKXt0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKX1zZXR1cERpYWxvZyh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYix5LF8sQyxNLHYseCxPLFAsdyxrLFMsRCxSLEUsQSxULE4seil7dGhpcy5zZXRJbml0aWFsQ29sb3IobiksdGhpcy5zZXRDb2xvck1vZGUocyksdGhpcy5pc0lFMTA9MTA9PT0oZnVuY3Rpb24gSSgpe2xldCB0PSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYodD1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpO2NvbnN0IGU9dC5pbmRleE9mKCJtc2llICIpO3JldHVybiBlPjAmJnBhcnNlSW50KHQuc3Vic3RyaW5nKGUrNSx0LmluZGV4T2YoIi4iLGUpKSwxMCl9KSgpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2U9dCx0aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWY9ZSx0aGlzLmNwRGlzYWJsZUlucHV0PXAsdGhpcy5jcENteWtFbmFibGVkPWwsdGhpcy5jcEFscGhhQ2hhbm5lbD1jLHRoaXMuY3BPdXRwdXRGb3JtYXQ9ZCx0aGlzLmNwRGlhbG9nRGlzcGxheT1hLHRoaXMuY3BJZ25vcmVkRWxlbWVudHM9bSx0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZT11LHRoaXMuY3BDbG9zZUNsaWNrT3V0c2lkZT1mLHRoaXMudXNlUm9vdFZpZXdDb250YWluZXI9Zyx0aGlzLndpZHRoPXRoaXMuY3BXaWR0aD1wYXJzZUludChvLDEwKSx0aGlzLmhlaWdodD10aGlzLmNwSGVpZ2h0PXBhcnNlSW50KGksMTApLHRoaXMuY3BQb3NpdGlvbj1oLHRoaXMuY3BQb3NpdGlvbk9mZnNldD1wYXJzZUludChiLDEwKSx0aGlzLmNwT0tCdXR0b249UCx0aGlzLmNwT0tCdXR0b25UZXh0PWssdGhpcy5jcE9LQnV0dG9uQ2xhc3M9dyx0aGlzLmNwQ2FuY2VsQnV0dG9uPVMsdGhpcy5jcENhbmNlbEJ1dHRvblRleHQ9Uix0aGlzLmNwQ2FuY2VsQnV0dG9uQ2xhc3M9RCx0aGlzLmZhbGxiYWNrQ29sb3I9cnx8IiNmZmYiLHRoaXMuc2V0UHJlc2V0Q29uZmlnKF8sQyksdGhpcy5jcFByZXNldENvbG9yc0NsYXNzPU0sdGhpcy5jcE1heFByZXNldENvbG9yc0xlbmd0aD12LHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2U9eCx0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M9Tyx0aGlzLmNwQWRkQ29sb3JCdXR0b249RSx0aGlzLmNwQWRkQ29sb3JCdXR0b25UZXh0PVQsdGhpcy5jcEFkZENvbG9yQnV0dG9uQ2xhc3M9QSx0aGlzLmNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcz1OLHRoaXMuY3BUcmlnZ2VyRWxlbWVudD16LHl8fCh0aGlzLmRpYWxvZ0Fycm93T2Zmc2V0PTApLCJpbmxpbmUiPT09YSYmKHRoaXMuZGlhbG9nQXJyb3dTaXplPTAsdGhpcy5kaWFsb2dBcnJvd09mZnNldD0wKSwiaGV4Ij09PWQmJiJhbHdheXMiIT09YyYmImZvcmNlZCIhPT1jJiYodGhpcy5jcEFscGhhQ2hhbm5lbD0iZGlzYWJsZWQiKX1zZXRDb2xvck1vZGUodCl7c3dpdGNoKHQudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpKXtjYXNlIjEiOmNhc2UiQyI6Y2FzZSJDT0xPUiI6dGhpcy5jcENvbG9yTW9kZT0xO2JyZWFrO2Nhc2UiMiI6Y2FzZSJHIjpjYXNlIkdSQVlTQ0FMRSI6dGhpcy5jcENvbG9yTW9kZT0yO2JyZWFrO2Nhc2UiMyI6Y2FzZSJQIjpjYXNlIlBSRVNFVFMiOnRoaXMuY3BDb2xvck1vZGU9MzticmVhaztkZWZhdWx0OnRoaXMuY3BDb2xvck1vZGU9MX19c2V0SW5pdGlhbENvbG9yKHQpe3RoaXMuaW5pdGlhbENvbG9yPXR9c2V0UHJlc2V0Q29uZmlnKHQsZSl7dGhpcy5jcFByZXNldExhYmVsPXQsdGhpcy5jcFByZXNldENvbG9ycz1lfXNldENvbG9yRnJvbVN0cmluZyh0LGU9ITAsbj0hMCl7bGV0IG87ImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsfHwiZm9yY2VkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWw/KG89dGhpcy5zZXJ2aWNlLnN0cmluZ1RvSHN2YSh0LCEwKSxvfHx0aGlzLmhzdmF8fChvPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMSkpKTpvPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMSksb3x8dGhpcy5oc3ZhfHwobz10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHRoaXMuZmFsbGJhY2tDb2xvciwhMSkpLG8mJih0aGlzLmhzdmE9byx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsImhleCI9PT10aGlzLmNwT3V0cHV0Rm9ybWF0JiYiZGlzYWJsZWQiPT09dGhpcy5jcEFscGhhQ2hhbm5lbCYmKHRoaXMuaHN2YS5hPTEpLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoZSxuKSl9b25SZXNpemUoKXsiZml4ZWQiPT09dGhpcy5wb3NpdGlvbj90aGlzLnNldERpYWxvZ1Bvc2l0aW9uKCk6ImlubGluZSIhPT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5jbG9zZUNvbG9yUGlja2VyKCl9b25EcmFnRW5kKHQpe3RoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyRHJhZ0VuZCh7c2xpZGVyOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uRHJhZ1N0YXJ0KHQpe3RoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyRHJhZ1N0YXJ0KHtzbGlkZXI6dCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25Nb3VzZURvd24odCl7IXRoaXMuc2hvd3x8dGhpcy5pc0lFMTB8fCJwb3B1cCIhPT10aGlzLmNwRGlhbG9nRGlzcGxheXx8dC50YXJnZXQ9PT10aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudHx8dGhpcy5pc0Rlc2NlbmRhbnQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LHQudGFyZ2V0KXx8dGhpcy5pc0Rlc2NlbmRhbnQodGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdC50YXJnZXQpfHwwIT09dGhpcy5jcElnbm9yZWRFbGVtZW50cy5maWx0ZXIoKGU9PmU9PT10LnRhcmdldCkpLmxlbmd0aHx8KHRoaXMuY3BTYXZlQ2xpY2tPdXRzaWRlP3RoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JTZWxlY3RlZCh0aGlzLm91dHB1dENvbG9yKToodGhpcy5oc3ZhPW51bGwsdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodGhpcy5pbml0aWFsQ29sb3IsITEpLHRoaXMuY3BDbXlrRW5hYmxlZCYmdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jbXlrQ2hhbmdlZCh0aGlzLmNteWtDb2xvciksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvckNoYW5nZWQodGhpcy5pbml0aWFsQ29sb3IpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JDYW5jZWxlZCgpKSx0aGlzLmNwQ2xvc2VDbGlja091dHNpZGUmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpKX1vbkFjY2VwdENvbG9yKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vdXRwdXRDb2xvciYmdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvclNlbGVjdGVkKHRoaXMub3V0cHV0Q29sb3IpLCJwb3B1cCI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5jbG9zZUNvbG9yUGlja2VyKCl9b25DYW5jZWxDb2xvcih0KXt0aGlzLmhzdmE9bnVsbCx0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JDYW5jZWxlZCgpLHRoaXMuc2V0Q29sb3JGcm9tU3RyaW5nKHRoaXMuaW5pdGlhbENvbG9yLCEwKSwicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJih0aGlzLmNwQ215a0VuYWJsZWQmJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY215a0NoYW5nZWQodGhpcy5jbXlrQ29sb3IpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JDaGFuZ2VkKHRoaXMuaW5pdGlhbENvbG9yLCEwKSx0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKSl9b25Gb3JtYXRUb2dnbGUodCl7Y29uc3QgZT10aGlzLmRpYWxvZ0lucHV0RmllbGRzLmxlbmd0aC0odGhpcy5jcENteWtFbmFibGVkPzA6MSksbj0oKHRoaXMuZGlhbG9nSW5wdXRGaWVsZHMuaW5kZXhPZih0aGlzLmZvcm1hdCkrdCklZStlKSVlO3RoaXMuZm9ybWF0PXRoaXMuZGlhbG9nSW5wdXRGaWVsZHNbbl19b25Db2xvckNoYW5nZSh0KXt0aGlzLmhzdmEucz10LnMvdC5yZ1gsdGhpcy5oc3ZhLnY9dC52L3QucmdZLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoibGlnaHRuZXNzIix2YWx1ZTp0aGlzLmhzdmEudixjb2xvcjp0aGlzLm91dHB1dENvbG9yfSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6InNhdHVyYXRpb24iLHZhbHVlOnRoaXMuaHN2YS5zLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkh1ZUNoYW5nZSh0KXt0aGlzLmhzdmEuaD10LnYvdC5yZ1gsdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoiaHVlIix2YWx1ZTp0aGlzLmhzdmEuaCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25WYWx1ZUNoYW5nZSh0KXt0aGlzLmhzdmEudj10LnYvdC5yZ1gsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyQ2hhbmdlZCh7c2xpZGVyOiJ2YWx1ZSIsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQWxwaGFDaGFuZ2UodCl7dGhpcy5oc3ZhLmE9dC52L3QucmdYLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoiYWxwaGEiLHZhbHVlOnRoaXMuaHN2YS5hLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkhleElucHV0KHQpe2lmKG51bGw9PT10KXRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKTtlbHNle3QmJiIjIiE9PXRbMF0mJih0PSIjIit0KTtsZXQgZT0vXiMoW2EtZjAtOV17M318W2EtZjAtOV17Nn0pJC9naTsiYWx3YXlzIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwmJihlPS9eIyhbYS1mMC05XXszfXxbYS1mMC05XXs2fXxbYS1mMC05XXs4fSkkL2dpKTtjb25zdCBuPWUudGVzdCh0KTtuJiYodC5sZW5ndGg8NSYmKHQ9IiMiK3Quc3Vic3RyaW5nKDEpLnNwbGl0KCIiKS5tYXAoKHQ9PnQrdCkpLmpvaW4oIiIpKSwiZm9yY2VkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwmJih0Kz1NYXRoLnJvdW5kKDI1NSp0aGlzLmhzdmEuYSkudG9TdHJpbmcoMTYpKSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0LCEwLCExKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJoZXgiLHZhbGlkOm4sdmFsdWU6dCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9fW9uUmVkSW5wdXQodCl7Y29uc3QgZT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLnI9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoicmVkIix2YWxpZDpuLHZhbHVlOmUucixjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25CbHVlSW5wdXQodCl7Y29uc3QgZT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLmI9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiYmx1ZSIsdmFsaWQ6bix2YWx1ZTplLmIsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uR3JlZW5JbnB1dCh0KXtjb25zdCBlPXRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKHRoaXMuaHN2YSksbj0haXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmc7biYmKGUuZz10LnYvdC5yZyx0aGlzLmhzdmE9dGhpcy5zZXJ2aWNlLnJnYmFUb0hzdmEoZSksdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJncmVlbiIsdmFsaWQ6bix2YWx1ZTplLmcsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uSHVlSW5wdXQodCl7Y29uc3QgZT0haXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmc7ZSYmKHRoaXMuaHN2YS5oPXQudi90LnJnLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiaHVlIix2YWxpZDplLHZhbHVlOnRoaXMuaHN2YS5oLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblZhbHVlSW5wdXQodCl7Y29uc3QgZT0haXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmc7ZSYmKHRoaXMuaHN2YS52PXQudi90LnJnLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJ2YWx1ZSIsdmFsaWQ6ZSx2YWx1ZTp0aGlzLmhzdmEudixjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25BbHBoYUlucHV0KHQpe2NvbnN0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEuYT10LnYvdC5yZyx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiYWxwaGEiLHZhbGlkOmUsdmFsdWU6dGhpcy5oc3ZhLmEsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uTGlnaHRuZXNzSW5wdXQodCl7Y29uc3QgZT10aGlzLnNlcnZpY2UuaHN2YTJoc2xhKHRoaXMuaHN2YSksbj0haXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmc7biYmKGUubD10LnYvdC5yZyx0aGlzLmhzdmE9dGhpcy5zZXJ2aWNlLmhzbGEyaHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImxpZ2h0bmVzcyIsdmFsaWQ6bix2YWx1ZTplLmwsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uU2F0dXJhdGlvbklucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmEyaHNsYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLnM9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5oc2xhMmhzdmEoZSksdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJzYXR1cmF0aW9uIix2YWxpZDpuLHZhbHVlOmUucyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25DeWFuSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLmM9dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImN5YW4iLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay5jLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbk1hZ2VudGFJbnB1dCh0KXshaXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmcmJih0aGlzLmNteWsubT10LnYsdGhpcy51cGRhdGVDb2xvclBpY2tlcighMSwhMCwhMCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoibWFnZW50YSIsdmFsaWQ6ITAsdmFsdWU6dGhpcy5jbXlrLm0sY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uWWVsbG93SW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLnk9dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6InllbGxvdyIsdmFsaWQ6ITAsdmFsdWU6dGhpcy5jbXlrLnksY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQmxhY2tJbnB1dCh0KXshaXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmcmJih0aGlzLmNteWsuaz10LnYsdGhpcy51cGRhdGVDb2xvclBpY2tlcighMSwhMCwhMCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiYmxhY2siLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay5rLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkFkZFByZXNldENvbG9yKHQsZSl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmNwUHJlc2V0Q29sb3JzLmZpbHRlcigodD0+dD09PWUpKS5sZW5ndGh8fCh0aGlzLmNwUHJlc2V0Q29sb3JzPXRoaXMuY3BQcmVzZXRDb2xvcnMuY29uY2F0KGUpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UucHJlc2V0Q29sb3JzQ2hhbmdlZCh0aGlzLmNwUHJlc2V0Q29sb3JzKSl9b25SZW1vdmVQcmVzZXRDb2xvcih0LGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jcFByZXNldENvbG9ycz10aGlzLmNwUHJlc2V0Q29sb3JzLmZpbHRlcigodD0+dCE9PWUpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnByZXNldENvbG9yc0NoYW5nZWQodGhpcy5jcFByZXNldENvbG9ycyl9b3BlbkNvbG9yUGlja2VyKCl7dGhpcy5zaG93fHwodGhpcy5zaG93PSEwLHRoaXMuaGlkZGVuPSEwLHNldFRpbWVvdXQoKCgpPT57dGhpcy5oaWRkZW49ITEsdGhpcy5zZXREaWFsb2dQb3NpdGlvbigpLHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpfSksMCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zdGF0ZUNoYW5nZWQoITApLHRoaXMuaXNJRTEwfHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLmxpc3RlbmVyTW91c2VEb3duKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLmxpc3RlbmVyTW91c2VEb3duKSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5saXN0ZW5lclJlc2l6ZSkpfWNsb3NlQ29sb3JQaWNrZXIoKXt0aGlzLnNob3cmJih0aGlzLnNob3c9ITEsdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zdGF0ZUNoYW5nZWQoITEpLHRoaXMuaXNJRTEwfHwoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLmxpc3RlbmVyTW91c2VEb3duKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLmxpc3RlbmVyTW91c2VEb3duKSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5saXN0ZW5lclJlc2l6ZSksdGhpcy5jZFJlZi5kZXN0cm95ZWR8fHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpKX11cGRhdGVDb2xvclBpY2tlcih0PSEwLGU9ITAsbj0hMSl7aWYodGhpcy5zbGlkZXJEaW1NYXgpe2xldCBvLGksYTsyPT09dGhpcy5jcENvbG9yTW9kZSYmKHRoaXMuaHN2YS5zPTApO2NvbnN0IHI9dGhpcy5vdXRwdXRDb2xvcjtpZihpPXRoaXMuc2VydmljZS5oc3ZhMmhzbGEodGhpcy5oc3ZhKSx0aGlzLmNwQ215a0VuYWJsZWQ/KG4/KGE9dGhpcy5zZXJ2aWNlLmNteWtUb1JnYih0aGlzLnNlcnZpY2Uubm9ybWFsaXplQ01ZSyh0aGlzLmNteWspKSx0aGlzLmhzdmE9dGhpcy5zZXJ2aWNlLnJnYmFUb0hzdmEoYSkpOihhPXRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKHRoaXMuaHN2YSksdGhpcy5jbXlrPXRoaXMuc2VydmljZS5kZW5vcm1hbGl6ZUNNWUsodGhpcy5zZXJ2aWNlLnJnYmFUb0NteWsoYSkpKSxhPXRoaXMuc2VydmljZS5kZW5vcm1hbGl6ZVJHQkEoYSksdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oKTphPXRoaXMuc2VydmljZS5kZW5vcm1hbGl6ZVJHQkEodGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSksbz10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKG5ldyBTNSh0aGlzLnNsaWRlckh8fHRoaXMuaHN2YS5oLDEsMSwxKSkpLGUpe3RoaXMuaHNsYVRleHQ9bmV3IEQ1KE1hdGgucm91bmQoMzYwKmkuaCksTWF0aC5yb3VuZCgxMDAqaS5zKSxNYXRoLnJvdW5kKDEwMCppLmwpLE1hdGgucm91bmQoMTAwKmkuYSkvMTAwKSx0aGlzLnJnYmFUZXh0PW5ldyBrNShhLnIsYS5nLGEuYixNYXRoLnJvdW5kKDEwMCphLmEpLzEwMCksdGhpcy5jcENteWtFbmFibGVkJiYodGhpcy5jbXlrVGV4dD1uZXcgUjUodGhpcy5jbXlrLmMsdGhpcy5jbXlrLm0sdGhpcy5jbXlrLnksdGhpcy5jbXlrLmssTWF0aC5yb3VuZCgxMDAqdGhpcy5jbXlrLmEpLzEwMCkpO3RoaXMuaGV4VGV4dD10aGlzLnNlcnZpY2UucmdiYVRvSGV4KGEsImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsKSx0aGlzLmhleEFscGhhPXRoaXMucmdiYVRleHQuYX1pZigiYXV0byI9PT10aGlzLmNwT3V0cHV0Rm9ybWF0JiZ0aGlzLmZvcm1hdCE9PXc1LlJHQkEmJnRoaXMuZm9ybWF0IT09dzUuQ01ZSyYmdGhpcy5oc3ZhLmE8MSYmKHRoaXMuZm9ybWF0PXRoaXMuaHN2YS5hPDE/dzUuUkdCQTp3NS5IRVgpLHRoaXMuaHVlU2xpZGVyQ29sb3I9InJnYigiK28ucisiLCIrby5nKyIsIitvLmIrIikiLHRoaXMuYWxwaGFTbGlkZXJDb2xvcj0icmdiKCIrYS5yKyIsIithLmcrIiwiK2EuYisiKSIsdGhpcy5vdXRwdXRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSx0aGlzLmNwT3V0cHV0Rm9ybWF0LHRoaXMuY3BBbHBoYUNoYW5uZWwpLHRoaXMuc2VsZWN0ZWRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSwicmdiYSIsbnVsbCksdGhpcy5mb3JtYXQhPT13NS5DTVlLKXRoaXMuY215a0NvbG9yPSIiO2Vsc2UgaWYoImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsfHwiZW5hYmxlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsfHwiZm9yY2VkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwpe2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqdGhpcy5jbXlrLmEpLzEwMDt0aGlzLmNteWtDb2xvcj1gY215a2EoJHt0aGlzLmNteWsuY30sJHt0aGlzLmNteWsubX0sJHt0aGlzLmNteWsueX0sJHt0aGlzLmNteWsua30sJHt0fSlgfWVsc2UgdGhpcy5jbXlrQ29sb3I9YGNteWsoJHt0aGlzLmNteWsuY30sJHt0aGlzLmNteWsubX0sJHt0aGlzLmNteWsueX0sJHt0aGlzLmNteWsua30pYDt0aGlzLnNsaWRlcj1uZXcgVDUoKHRoaXMuc2xpZGVySHx8dGhpcy5oc3ZhLmgpKnRoaXMuc2xpZGVyRGltTWF4LmgtOCx0aGlzLmhzdmEucyp0aGlzLnNsaWRlckRpbU1heC5zLTgsKDEtdGhpcy5oc3ZhLnYpKnRoaXMuc2xpZGVyRGltTWF4LnYtOCx0aGlzLmhzdmEuYSp0aGlzLnNsaWRlckRpbU1heC5hLTgpLHQmJnIhPT10aGlzLm91dHB1dENvbG9yJiYodGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLm91dHB1dENvbG9yKSl9fXNldERpYWxvZ1Bvc2l0aW9uKCl7aWYoImlubGluZSI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSl0aGlzLnBvc2l0aW9uPSJyZWxhdGl2ZSI7ZWxzZXtsZXQgdCxlPSJzdGF0aWMiLG49IiIsbz1udWxsLGk9bnVsbCxhPXRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7Y29uc3Qgcj10aGlzLmRpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7Zm9yKDtudWxsIT09YSYmIkhUTUwiIT09YS50YWdOYW1lOyl7aWYodD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhKSxlPXQuZ2V0UHJvcGVydHlWYWx1ZSgicG9zaXRpb24iKSxuPXQuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksInN0YXRpYyIhPT1lJiZudWxsPT09byYmKG89YSksbiYmIm5vbmUiIT09biYmbnVsbD09PWkmJihpPWEpLCJmaXhlZCI9PT1lKXtvPWk7YnJlYWt9YT1hLnBhcmVudE5vZGV9Y29uc3Qgcz10aGlzLmNyZWF0ZURpYWxvZ0JveCh0aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZml4ZWQiIT09ZSk7aWYodGhpcy51c2VSb290Vmlld0NvbnRhaW5lcnx8ImZpeGVkIj09PWUmJighb3x8byBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCkpdGhpcy50b3A9cy50b3AsdGhpcy5sZWZ0PXMubGVmdDtlbHNle251bGw9PT1vJiYobz1hKTtjb25zdCB0PXRoaXMuY3JlYXRlRGlhbG9nQm94KG8sImZpeGVkIiE9PWUpO3RoaXMudG9wPXMudG9wLXQudG9wLHRoaXMubGVmdD1zLmxlZnQtdC5sZWZ0fSJmaXhlZCI9PT1lJiYodGhpcy5wb3NpdGlvbj0iZml4ZWQiKTtsZXQgbD10aGlzLmNwUG9zaXRpb247aWYoImF1dG8iPT09dGhpcy5jcFBvc2l0aW9uKXtsPShmdW5jdGlvbiB0KGUsbil7bGV0IG89InJpZ2h0IixpPSJib3R0b20iO2NvbnN0e2hlaWdodDphLHdpZHRoOnJ9PWUse3RvcDpzLGxlZnQ6bH09bixjPXMrbi5oZWlnaHQsZD1sK24ud2lkdGgscD1zLWE8MCxtPWMrYT4od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSx1PWwtcjwwLGY9ZCtyPih3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKTtpZihtJiYoaT0idG9wIikscCYmKGk9ImJvdHRvbSIpLHUmJihvPSJyaWdodCIpLGYmJihvPSJsZWZ0IikscCYmbSYmdSYmZilyZXR1cm5bImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLnJlZHVjZSgoKHQsbik9PmVbdF0+ZVtuXT90Om4pKTtyZXR1cm4gdSYmZj9wPyJib3R0b20iOm18fHM+Yz8idG9wIjoiYm90dG9tIjpwJiZtP3U/InJpZ2h0IjpmfHxsPmQ/ImxlZnQiOiJyaWdodCI6YCR7aX0tJHtvfWB9KSh0aGlzLmRpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLmNwVHJpZ2dlckVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSl9InRvcCI9PT1sPyh0aGlzLmFycm93VG9wPXItMSx0aGlzLnRvcC09cit0aGlzLmRpYWxvZ0Fycm93U2l6ZSx0aGlzLmxlZnQrPXRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAqcy53aWR0aC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToiYm90dG9tIj09PWw/KHRoaXMudG9wKz1zLmhlaWdodCt0aGlzLmRpYWxvZ0Fycm93U2l6ZSx0aGlzLmxlZnQrPXRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAqcy53aWR0aC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToidG9wLWxlZnQiPT09bHx8ImxlZnQtdG9wIj09PWw/KHRoaXMudG9wLT1yLXMuaGVpZ2h0K3MuaGVpZ2h0KnRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAsdGhpcy5sZWZ0LT10aGlzLmNwV2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMi10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToidG9wLXJpZ2h0Ij09PWx8fCJyaWdodC10b3AiPT09bD8odGhpcy50b3AtPXItcy5oZWlnaHQrcy5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMCx0aGlzLmxlZnQrPXMud2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMi10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToibGVmdCI9PT1sfHwiYm90dG9tLWxlZnQiPT09bHx8ImxlZnQtYm90dG9tIj09PWw/KHRoaXMudG9wKz1zLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQsdGhpcy5sZWZ0LT10aGlzLmNwV2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMik6KHRoaXMudG9wKz1zLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQsdGhpcy5sZWZ0Kz1zLndpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTIpLHRoaXMuY3BVc2VQb3NpdGlvbj1sfX1pc0Rlc2NlbmRhbnQodCxlKXtsZXQgbj1lLnBhcmVudE5vZGU7Zm9yKDtudWxsIT09bjspe2lmKG49PT10KXJldHVybiEwO249bi5wYXJlbnROb2RlfXJldHVybiExfWNyZWF0ZURpYWxvZ0JveCh0LGUpe3JldHVybnt0b3A6dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArKGU/d2luZG93LnBhZ2VZT2Zmc2V0OjApLGxlZnQ6dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KyhlP3dpbmRvdy5wYWdlWE9mZnNldDowKSx3aWR0aDp0Lm9mZnNldFdpZHRoLGhlaWdodDp0Lm9mZnNldEhlaWdodH19fUk1Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJNSkoZnUoS2gpLGZ1KE9iKSxmdSh6NSkpfSxJNS7JtWNtcD1zbyh7dHlwZTpJNSxzZWxlY3RvcnM6W1siY29sb3ItcGlja2VyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoSzIsNyksVnkoSjIsNyksVnkoUTIsNykpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uZGlhbG9nRWxlbWVudD10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5odWVTbGlkZXI9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uYWxwaGFTbGlkZXI9dC5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmRHUoImtleXVwLmVzYyIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGFuZGxlRXNjKGUpfSksITEsUGwpKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGFuZGxlRW50ZXIoZSl9KSwhMSxQbCl9LGRlY2xzOjI4LHZhcnM6NDcsY29uc3RzOltbMSwiY29sb3ItcGlja2VyIiwzLCJjbGljayJdLFsiZGlhbG9nUG9wdXAiLCIiXSxbMywiY2xhc3MiLCJ0b3AiLDQsIm5nSWYiXSxbImNsYXNzIiwic2F0dXJhdGlvbi1saWdodG5lc3MiLDMsInNsaWRlciIsInJnWCIsInJnWSIsImJhY2tncm91bmQtY29sb3IiLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiLDQsIm5nSWYiXSxbMSwiaHVlLWFscGhhIiwiYm94Il0sWzEsImxlZnQiXSxbMSwic2VsZWN0ZWQtY29sb3ItYmFja2dyb3VuZCJdLFsxLCJzZWxlY3RlZC1jb2xvciJdLFsidHlwZSIsImJ1dHRvbiIsMywiY2xhc3MiLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsInJpZ2h0Il0sWyJzdHlsZSIsImhlaWdodDogMTZweDsiLDQsIm5nSWYiXSxbMSwiaHVlIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbImh1ZVNsaWRlciIsIiJdLFsxLCJjdXJzb3IiXSxbMSwidmFsdWUiLDMsInNsaWRlciIsInJnWCIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCJdLFsidmFsdWVTbGlkZXIiLCIiXSxbMSwiYWxwaGEiLDMsInNsaWRlciIsInJnWCIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCJdLFsiYWxwaGFTbGlkZXIiLCIiXSxbImNsYXNzIiwiY215ay10ZXh0IiwzLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImhzbGEtdGV4dCIsMywiZGlzcGxheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJyZ2JhLXRleHQiLDMsImRpc3BsYXkiLDQsIm5nSWYiXSxbImNsYXNzIiwiaGV4LXRleHQiLDMsImhleC1hbHBoYSIsImRpc3BsYXkiLDQsIm5nSWYiXSxbImNsYXNzIiwidmFsdWUtdGV4dCIsNCwibmdJZiJdLFsiY2xhc3MiLCJ0eXBlLXBvbGljeSIsNCwibmdJZiJdLFsiY2xhc3MiLCJwcmVzZXQtYXJlYSIsNCwibmdJZiJdLFsiY2xhc3MiLCJidXR0b24tYXJlYSIsNCwibmdJZiJdLFsxLCJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIsMywic2xpZGVyIiwicmdYIiwicmdZIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIl0sWyJ0eXBlIiwiYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWzIsImhlaWdodCIsIjE2cHgiXSxbMSwiY215ay10ZXh0Il0sWzEsImJveCJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSoiLCJtaW4iLCIwIiwibWF4IiwiMTAwIiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIsIm1pbiIsIjAiLCJtYXgiLCIxIiwic3RlcCIsIjAuMSIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIsIm1pbiIsIjAiLCJtYXgiLCIxIiwic3RlcCIsIjAuMSIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWzEsImhzbGEtdGV4dCJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSoiLCJtaW4iLCIwIiwibWF4IiwiMzYwIiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwicmdiYS10ZXh0Il0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKiIsIm1pbiIsIjAiLCJtYXgiLCIyNTUiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsxLCJoZXgtdGV4dCJdLFszLCJ0ZXh0IiwidmFsdWUiLCJibHVyIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsxLCJ2YWx1ZS10ZXh0Il0sWzEsInR5cGUtcG9saWN5Il0sWzEsInR5cGUtcG9saWN5LWFycm93IiwzLCJjbGljayJdLFsxLCJwcmVzZXQtYXJlYSJdLFsxLCJwcmVzZXQtbGFiZWwiXSxbMywiY2xhc3MiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJlc2V0LWNvbG9yIiwzLCJiYWNrZ3JvdW5kQ29sb3IiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsInByZXNldC1jb2xvciIsMywiY2xpY2siXSxbMywiY2xhc3MiLCJjbGljayIsNCwibmdJZiJdLFszLCJjbGljayJdLFsxLCJidXR0b24tYXJlYSJdLFsidHlwZSIsImJ1dHRvbiIsMywiY2xhc3MiLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMywiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCwxKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLEhtKDIsJDIsMSw1LCJkaXYiLDIpLEhtKDMsdDUsMiw4LCJkaXYiLDMpLF91KDQsImRpdiIsNCksX3UoNSwiZGl2Iiw1KSxNdSg2LCJkaXYiLDYpLE11KDcsImRpdiIsNyksSG0oOCxlNSwyLDUsImJ1dHRvbiIsOCksQ3UoKSxfdSg5LCJkaXYiLDkpLEhtKDEwLG41LDEsMCwiZGl2IiwxMCksX3UoMTEsImRpdiIsMTEsMTIpLER1KCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25IdWVDaGFuZ2UoZSl9KSkoImRyYWdTdGFydCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRyYWdTdGFydCgiaHVlIil9KSkoImRyYWdFbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnRW5kKCJodWUiKX0pKSxNdSgxMywiZGl2IiwxMyksQ3UoKSxfdSgxNCwiZGl2IiwxNCwxNSksRHUoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZhbHVlQ2hhbmdlKGUpfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnU3RhcnQoInZhbHVlIil9KSkoImRyYWdFbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25EcmFnRW5kKCJ2YWx1ZSIpfSkpLE11KDE2LCJkaXYiLDEzKSxDdSgpLF91KDE3LCJkaXYiLDE2LDE3KSxEdSgibmV3VmFsdWUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQWxwaGFDaGFuZ2UoZSl9KSkoImRyYWdTdGFydCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRyYWdTdGFydCgiYWxwaGEiKX0pKSgiZHJhZ0VuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRyYWdFbmQoImFscGhhIil9KSksTXUoMTksImRpdiIsMTMpLEN1KCksQ3UoKSxDdSgpLEhtKDIwLGE1LDE3LDEyLCJkaXYiLDE4KSxIbSgyMSxsNSwxNCwxMCwiZGl2IiwxOSksSG0oMjIscDUsMTQsMTAsImRpdiIsMjApLEhtKDIzLGY1LDgsNywiZGl2IiwyMSksSG0oMjQsaDUsOSwzLCJkaXYiLDIyKSxIbSgyNSxiNSwzLDAsImRpdiIsMjMpLEhtKDI2LHY1LDYsMywiZGl2IiwyNCksSG0oMjcsUDUsMywyLCJkaXYiLDI1KSxDdSgpKSwyJmUmJihsZigiZGlzcGxheSIsbi5zaG93PyJibG9jayI6Im5vbmUiKSgidmlzaWJpbGl0eSIsbi5oaWRkZW4/ImhpZGRlbiI6InZpc2libGUiKSgidG9wIixuLnRvcCwicHgiKSgibGVmdCIsbi5sZWZ0LCJweCIpKCJwb3NpdGlvbiIsbi5wb3NpdGlvbikoImhlaWdodCIsbi5jcEhlaWdodCwicHgiKSgid2lkdGgiLG4uY3BXaWR0aCwicHgiKSxjZigib3BlbiIsbi5zaG93KSxEYygyKSxodSgibmdJZiIsInBvcHVwIj09bi5jcERpYWxvZ0Rpc3BsYXkpLERjKDEpLGh1KCJuZ0lmIiwxPT09KG4uY3BDb2xvck1vZGV8fDEpKSxEYyg0KSxsZigiYmFja2dyb3VuZC1jb2xvciIsbi5zZWxlY3RlZENvbG9yKSxEYygxKSxodSgibmdJZiIsbi5jcEFkZENvbG9yQnV0dG9uKSxEYygyKSxodSgibmdJZiIsImRpc2FibGVkIj09PW4uY3BBbHBoYUNoYW5uZWwpLERjKDEpLGxmKCJkaXNwbGF5IiwxPT09KG4uY3BDb2xvck1vZGV8fDEpPyJibG9jayI6Im5vbmUiKSxodSgicmdYIiwxKSxEYygyKSxsZigibGVmdCIsbnVsbD09bi5zbGlkZXI/bnVsbDpuLnNsaWRlci5oLCJweCIpLERjKDEpLGxmKCJkaXNwbGF5IiwyPT09KG4uY3BDb2xvck1vZGV8fDEpPyJibG9jayI6Im5vbmUiKSxodSgicmdYIiwxKSxEYygyKSxsZigicmlnaHQiLG51bGw9PW4uc2xpZGVyP251bGw6bi5zbGlkZXIudiwicHgiKSxEYygxKSxsZigiZGlzcGxheSIsImRpc2FibGVkIj09PW4uY3BBbHBoYUNoYW5uZWw/Im5vbmUiOiJibG9jayIpKCJiYWNrZ3JvdW5kLWNvbG9yIixuLmFscGhhU2xpZGVyQ29sb3IpLGh1KCJyZ1giLDEpLERjKDIpLGxmKCJsZWZ0IixudWxsPT1uLnNsaWRlcj9udWxsOm4uc2xpZGVyLmEsInB4IiksRGMoMSksaHUoIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYxPT09KG4uY3BDb2xvck1vZGV8fDEpKSxEYygxKSxodSgibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjE9PT0obi5jcENvbG9yTW9kZXx8MSkpLERjKDEpLGh1KCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoMSksaHUoIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYxPT09KG4uY3BDb2xvck1vZGV8fDEpKSxEYygxKSxodSgibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjI9PT0obi5jcENvbG9yTW9kZXx8MSkpLERjKDEpLGh1KCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMT09PShuLmNwQ29sb3JNb2RlfHwxKSksRGMoMSksaHUoIm5nSWYiLChudWxsPT1uLmNwUHJlc2V0Q29sb3JzP251bGw6bi5jcFByZXNldENvbG9ycy5sZW5ndGgpfHxuLmNwQWRkQ29sb3JCdXR0b24pLERjKDEpLGh1KCJuZ0lmIixuLmNwT0tCdXR0b258fG4uY3BDYW5jZWxCdXR0b24pKX0sZGlyZWN0aXZlczpbUHYsQTUsRTUseHZdLHN0eWxlczpbJy5jb2xvci1waWNrZXJ7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjNzc3O2N1cnNvcjpkZWZhdWx0O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3VzZXItc2VsZWN0Om5vbmU7d2lkdGg6MjMwcHg7ei1pbmRleDoxMDAwfS5jb2xvci1waWNrZXIgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1zaXplOjExcHg7bWFyZ2luOjB9LmNvbG9yLXBpY2tlciBpbnB1dHtjb2xvcjojMDAwO2ZvbnQtc2l6ZToxM3B4O2hlaWdodDoyNnB4O21pbi13aWR0aDowO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjB9LmNvbG9yLXBpY2tlciBpbnB1dDotbW96LXN1Ym1pdC1pbnZhbGlkLC5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei11aS1pbnZhbGlkLC5jb2xvci1waWNrZXIgaW5wdXQ6aW52YWxpZHtib3gtc2hhZG93Om5vbmV9LmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwuY29sb3ItcGlja2VyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS5jb2xvci1waWNrZXIgLmFycm93e2JvcmRlci1zdHlsZTpzb2xpZDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO3otaW5kZXg6OTk5OTk5fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcHtib3JkZXItY29sb3I6Izc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDoxMHB4IDVweDtsZWZ0OjhweDt0b3A6LTIwcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdC10b3AsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9wLWxlZnR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7cmlnaHQ6LTIxcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1yaWdodHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6NXB4IDEwcHg7Ym90dG9tOjhweDtsZWZ0Oi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O3JpZ2h0Oi0yMXB4O3RvcDo4cHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9tLXJpZ2h0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzc3NyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6NXB4IDEwcHg7bGVmdDotMjBweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmN1cnNvcntib3JkZXI6MnB4IHNvbGlkICMyMjI7Ym9yZGVyLXJhZGl1czo1MCU7Y3Vyc29yOmRlZmF1bHQ7aGVpZ2h0OjE2cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTZweH0uY29sb3ItcGlja2VyIC5ib3h7ZGlzcGxheTpmbGV4O3BhZGRpbmc6NHB4IDhweH0uY29sb3ItcGlja2VyIC5sZWZ0e3BhZGRpbmc6MTZweCA4cHg7cG9zaXRpb246cmVsYXRpdmV9LmNvbG9yLXBpY2tlciAucmlnaHR7ZmxleDoxIDEgYXV0bztwYWRkaW5nOjEycHggOHB4fS5jb2xvci1waWNrZXIgLmJ1dHRvbi1hcmVhe3BhZGRpbmc6MCAxNnB4IDE2cHg7dGV4dC1hbGlnbjpyaWdodH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYSBidXR0b257bWFyZ2luLWxlZnQ6OHB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhe3BhZGRpbmc6NHB4IDE1cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1sYWJlbHtjb2xvcjojNTU1O2ZvbnQtc2l6ZToxMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjRweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjI1JTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MThweDttYXJnaW46NHB4IDZweCA4cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MThweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWVtcHR5LW1lc3NhZ2V7Zm9udC1zdHlsZTppdGFsaWM7bWFyZ2luLWJvdHRvbTo4cHg7bWFyZ2luLXRvcDo0cHg7bWluLWhlaWdodDoxOHB4O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmhleC10ZXh0e2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6NHB4IDhweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGRpdntjbGVhcjpsZWZ0O2NvbG9yOiM1NTU7ZmxleDoxIDEgYXV0bztmbG9hdDpsZWZ0O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3ggaW5wdXR7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxcHh9LmNvbG9yLXBpY2tlciAuaGV4LWFscGhhIC5ib3ggZGl2OmZpcnN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGlucHV0OmZpcnN0LWNoaWxke2ZsZXgtZ3JvdzozO21hcmdpbi1yaWdodDo4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveHtwYWRkaW5nOjAgMjRweCA4cHggOHB4fS5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveHtwYWRkaW5nOjAgOHB4IDhweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2e2NvbG9yOiM1NTU7ZmxleDoxIDEgYXV0bzttYXJnaW4tcmlnaHQ6OHB4O3RleHQtYWxpZ246Y2VudGVyfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggaW5wdXR7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2ZsZXg6MTtmbG9hdDpsZWZ0O21hcmdpbjowIDhweCAwIDA7cGFkZGluZzoxcHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuaHVlLWFscGhhe2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjNweH0uY29sb3ItcGlja2VyIC5odWV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdrVUZXYkNDQUFBQUZ4SlJFRlVhTjd0MGtFS2cwQVFBTUUyeDgzL24ycXU1cUNnRDFpRGhDb1lkcG5iUUM5YmJZMXFWTy9qdmM2azNhZDkxczcvN0YxL2NzZ1BydWp1UTE3QkRZU0ZzQkFXd2dKaElTeUVCY0pDV0FnTGhJV3dFQllJaTJmN0FyLzFUQ2dGSDJYOUFBQUFBRWxGVGtTdVFtQ0MiKTtkaXJlY3Rpb246bHRyfS5jb2xvci1waWNrZXIgLmh1ZSwuY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2hlaWdodDoxNnB4O21hcmdpbi1ib3R0b206MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnZhbHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFDVGtsRVFWUjQydTNTWVVjckFCaEE0VTJTa21SSk1tV1NKa2xLSmlXWlpwS1VKSnNrS1VtYVRGSW1LWk9Vek15U3BHUm1saVJOSmlsSlNwS1NKRXRtU3BJcG1XbVNkTzczNi82RCt4N09QM2dVQ29XQ3YxY3FsU1FsSlpHY25FeEtTZ3FwcWFta3BhV1JucDVPUmtZR21abVpxRlFxc3JLeXlNN09KaWNuaDl6Y1hOUnFOWGw1ZWVUbjU2UFJhQ2dvS0tDd3NKQ2lvaUswV2kzRnhjV1VsSlJRV2xwS1dWa1o1ZVhsVkZSVVVGbFppVTZubzZxcWl1cnFhbXBxYXFpdHJhV3VyZzY5WGs5OWZUMEdnd0dqMFVoRFF3T05qWTAwTlRYUjNOeE1TMHNMcmEydHRMVzEwZDdlanNsa3dtdzIwOUhSUVdkbkoxMWRYWFIzZDlQVDAwTnZieTk5ZlgzMDkvY3pNRERBNE9BZ0ZvdUZvYUVockZZcnc4UERqSXlNTURvNnl0allHRGFiamZIeGNTWW1KcGljbkdScWFncTczYzcwOURRek16UE16czR5TnpmSC9QdzhEb2NEcDlPSnkrWEM3WGF6c0xEQTR1SWlTMHRMTEM4dnM3S3l3dXJxS210cmEzZzhIcnhlTHo2ZkQ3L2Z6L3I2T2hzYkcyeHVicksxdGNYMjlqYUJRSUNkblIyQ3dTQzd1N3ZzN2UyeHY3L1B3Y0VCaDRlSEhCMGRjWHg4ek1uSkNhZW5wNXlkblhGK2ZzN0Z4UVdYbDVkY1hWMXhmWDNOemMwTnQ3ZTMzTjNkRVFxRnVMKy81K0hoZ1hBNFRDUVM0Zkh4a2Flbko1NmZuM2w1ZWVIMTlaVm9OTXJiMnh2djcrOThmSHdRaThXSXgrTjhmbjZTU0NUNCt2cmkrL3VibjU4ZmZuOS8rVmNLZ1NXd0JKYkFFbGdDUzJBSkxJRWxzQVNXd0JKWUFrdGdDU3lCSmJBRWxzQVNXQUpMWUFrc2dTV3dCSmJBRWxnQ1MyQUpMSUVsc1A0L1dIOEFtSjVaNmpIUzRoOEFBQUFBU1VWT1JLNUNZSUk9Iik7ZGlyZWN0aW9uOnJ0bH0uY29sb3ItcGlja2VyIC5hbHBoYXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd1lRbFpNYTNnQUFBV1ZKUkVGVWFON3RtRUdPNmpBUVJDc09BckhnQnB5QUpZR2pjR29jeEFtNEEySUhwbW9XRTBlQkgrZXptRmxOdlUwNnNoSjNXNlZFZWxXTVVRQUlJRjlmNnFacGltc0ExTFl0UzJ1RjUxL3UyN1lWQUZaVlJVa0VvR0hkUFYvc0ljYklFSUlrVWRJLzlYYTduZXl2NjErU1dGVVZBVkNTY3QwMFRXbjJmdjZ1MytFY2ZkM3RYenkvMCtuRVV1K1NQam8va3F6cm1pUXBTY042djk4WGV3ZkE4L2xNa2lMSjJXeEdTVW9wY1Q2Zk02VTBOWDkvZnJmYmpldjFXdGZybFpmTGhZZkRRUUhHL0FJT2xuR3dqSU5sSEN4akhDempZSm0vVEpXZEN3cXVKWHNlRkZ6R3dETk5laUtNT0pUTzh4UWREUWFlQjI5K0s5ZWZlTGFCbzlKN3ZkdnRKajFSakZGamZpdjdxdjk1dGp4LzdsZVNRZ2g5M2UxZmZNZUlwNk8rWVFqaG8vTjc5MXQxWFZPU1NJN04vL0srNC9Hb3hXTEJ4K1BCNS9PcDVYTEorLzNPbEpKV3F4VTNtODNvdnY1aUdmOEtqWU5sSEN4akhDempZQmtIeTVnZjVndXN2UVU3VTM3alRBQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxNnB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3l7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBZ0NBWUFBQUFmZkNqeEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBQ2V3QUFBbnNCMDFDTzNBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQUlBU1VSQlZFaUo3Wlk5YXhSUkZJYWZzeE1TdHJMUUpwQWdwQkZoaStDOXcxWVNvMDBJNlJaL2c5dlpwQmYvUU9yNEd5UmdrU0tOU3JBYWRzWnFRR3dDa3VBV3lSWkpzeVN3dmhaN04vdmh6cmdiTEgzTGQ4NTk3amx6ejUwekpva3l4WEg4RHFEVmFyMHFpNnY4QmJJdHFTR3BFY2Z4ZGxtc0ZXWGt2WDhBZkFWV2czVUtQRW5UOUdLdWpNenNBRmdac1ZhQ04xVlRRZDc3WFVucmdFMWt2KzY5MzUyNjhXUnB6cm5IWnZZUldDN1l2QzNwUlpabDN3b3pxdFZxaXlIOUlnakFzcGtkMUdxMXhVSlF0VnJkQjlaS0lBT3RoZGcvUWM2NUxVazd3TklNb0NWSk84NjVyWUZoa3FqWDYvZDd2VjRHUEp3Qk1xb2ZVUlM1SkVrNkZZQmVyL2VlWWIvTW85V3dGblBPdlFiZUF2ZnVBQUs0Qk40c0FKdEFHL2dKSUVsbU51aUp5YmEzRUdObVppUGVadUVWbVZlbGwvWS82TitDekRuM0FYaEVPT283SHYvM0JlQXo4SXpRa01QbkpidVB4MXdDK3lZSjcvMG5ZSVA1Uy8wRkhLZHArcndDRUVYUlMvcmY1SGwxR3RiMk0waVNwQ09wQ1p6UEFUbVgxRXlTcEhNTEFzaXk3TWpNRG9IckdTRFhabmFZWmRuUndCaDdKOTF1dHdtY3pBQTZDYkczR2dQbGVYNGpxVUgvYTFDa3RxUkdudWMzaFNDQU1CMzJnS3Nwa0N0Z2IzS0NRTW1ramVQNFdOSlRock5OWnZhbDFXcHRUSXN2N0p0UTR0bUlkUmE4cVNvRXBXbDZZV1pOb0FOMHpLeFpOUGVocExTQlp2MnQrUTBDSjlsTG5BUlFMQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6OHB4IDE2cHg7aGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTJweDt0b3A6MjE4cHg7d2lkdGg6MTZweH0uY29sb3ItcGlja2VyIC50eXBlLXBvbGljeSAudHlwZS1wb2xpY3ktYXJyb3d7ZGlzcGxheTpibG9jaztoZWlnaHQ6NTAlO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuc2VsZWN0ZWQtY29sb3J7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDo0MHB4O2xlZnQ6OHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNnB4O3dpZHRoOjQwcHh9LmNvbG9yLXBpY2tlciAuc2VsZWN0ZWQtY29sb3ItYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDZ0FBQUFvQ0FZQUFBQ00vcmh0QUFBQWgwbEVRVlJZUisyVzBRbEFNUWdENjB6ZGZ3T2RxYThUbUkvd1FNcjVLMEk1YlpMSXpMT2EybnQzN1ZWVmJkK2REeDVvYmdDQzNLQkx3SjJmZjRQblZpZGtmK3VjSWh3ODBIUWFDTG8zRE1IM0NSSzNpRnNtQVdWbDZoUE5Ed3Q4RXZORTVxK1l1RVhjTWdrb25WTTZTZHlDb0V2QW5aOHYxSGp4ODE3TWlsbXhTVUI1cmRMSkR5Y1pnVUFaVWNoL0FBQUFBRWxGVGtTdVFtQ0MiKTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNhdHVyYXRpb24tbGlnaHRuZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9ZQUFBQ0NDQVlBQUFCU0Q3VDNBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a3NQV1I2bGdBQUlBQkpSRUZVZU5ydG5WdVQ0N2dSckFITitQLy9Pci82MVk1d09OWjdtWjF1M1hBZUxNakpaR1pWZ2RLc2ZjNXhSM1MwUklJVVcrQ0h6Q3BjMk1jWW83WEd2M2V4N1VpWmQ1N3JqeXp6dit2KzMzWC9SLyszci9mN3ZSMzg2WStUdktOY2Yvd2RoVExQY3Y5cVUyd1pkNzR1dGgwdDE4MjFqa0laTFBjc0kvNm5XYTRYdnV0cXVVMFo4NW1ueDgwUy9aemdwbkxuT3RITnQ3L29meDFUS1hjU056Ti83cWJNUTNqdTdyTlFtTVlZZC80czJqOWFhK1ArZ0dhTWNacmIxTS90ZHJ2ZjcvZDJ2OTlQOS90OTNPLzNjYnZkeHUxMkc5ZnJkVnd1bDNFK244Yy8vL25QKzIrLy9YYjY2YWVmeGwvLyt0Zng1ei8vMllLNUFsMnJndmY0VXNicGRHckI1MmJBdkFyWHB1emptaXFBVlNHejVlRG1HWVh6aGJBWm1Dcm5temRkcFVVKzhZMWRBT1llWEN0RFV3VndWN1lDR0g2dUFteU1jWjlsNXZrVWFCUEdNVVo3L0o1dy83OTIvZnZ2OVhxOTMyNjNkci9mVHhQRUNlTUU4bks1ak0vUHovSFRUei9kdjMzN2R2cmxsMS9HUC83eGovRzN2LzF0L09VdmZ3a1Zzd29uZ2pkT3A5UHpIM1UzRDN6bVdHblpWWG40akNxczd3QzJCS1A0Lzh0QXprWnNvV3g2WHJxZUhaeW12cDRBQkNCSmhUUXdLZkRUOGd6clpDSXFpNUFoaUFDakJmRUIyclA4L1g2M01NN2Y2L1Y2djkvdjdYYTdiWUM4M1c3amNybHNWSElxNWZmdjMwKy8vZmJiK09XWFg4WlBQLzAwL3Y3M3Y0K2ZmLzc1SlN2YmV1K2JMMldNTWFGYkFscEJOTTg1UVgrY3Q2cW9TcWtQQXd1UWxCVktxR05GU1VPQUEzQm11N2dDNWhOT2QxNW5Td3ZBT1VXN0M0Z2lVQ1Y4U2duNUw5aE5GSXFUc3AwR3hJMHlzaW95akFqa1kvdEdKVkVweitmeitPV1hYKzdmdjM4Ly9mNzc3K1BidDIvajExOS9IVC8vL1BQNDlkZGZ4OGZIUndybVRqVjc3OUVYdTJweDJ4aGp3dGRKWlFjQVdRSVBMUElTc01KYVN3aUQ4Z3pJS3J3U3lBVEU1ajVuQWJSNWMxZEJVd0Jsc0VXVzBoNkxxaVlzcUZQQVF4Q3lSWjN3T1NBUnhtbFhNWDVrNjRwUWZ2djI3Zjc1K2RrK1BqNU9IeDhmNC92MzcrUGJ0Mi9qdDk5K0c5KytmUnNmSHgvamNybVVGTE8zMWdZRFdibHhSSXMvVHFmVDdvdXN4SnNBeFhBMkdjN1RBOVhkZ2Zkb0hiRnNqNzZYMisxV0FyZ0kxYWdlR3dBM3F1cHFvSHNtY2JJNkZ1OTNxdWdnRmE5ZDdMZUR0Z0tmQUZIQkorTkVCeUlrY0o1S2VydmRUbWhoR2NnSkpTWjV2bi8vZmorZnorMThQcDgrUHovSDUrZm5tR0QrL3Z2djQvdjM3K1BqNDJOOGZuNk8yKzFXczdKampQNndyYU1JNUU0Ulo4eDJ2VjVUU3drcXVvdFY3L2Q3VHo2SEZXc0QvcU5jZHcwQ1EzcS8zMjFjNjg2VHdEVklkYnV5NzN6TmxkaFNIYjhJMmtsWnpubStJbkJTNFU2bjAzMDJhQkZzTGhIREFLSlZKVmdsZkk5amh2dTUzVzUzc0xBTllOeEFpREE2TUNlVUh4OGY5K3YxMmk2WFM3dGNMcWNaVzU3UDV5ZVk4L2Z6ODNPY3orZm5zU21ZVXlrbldFRzg1V0JzdDlzdHpTTHlNZGZyOVFpMDhpWTE1VVowTGxER0xoUjNvNXpLMmo3T1BVVEQwRStuVTN0azdYYi8xNk5GYmhsb0FNdVkxempMVU9PM0JLZUlEZStaOHMzL0o0Z0ZvNFRNNWpQbXVSZzI4Zm9VS0tWU3dvMTZUZ0E1bnB5d2NXTEhnWWwvUHo4LzczLzYwNS9hYjcvOTFtNjNXN3RjTGllMHNaajRtYW81Z1R5Zno4OEUwZjErajhFY1l6d1RQRUcyY3FqeWZITkYwTThmdXFFaWFPVm5SelpaUU5oNWZ3UXlIZy9IREdmSm84OVExemIvcXV1NVhDNjc3M0kyWEtmVHFkL3Y5K2Qzd3VxV3ZhL1lUZFVkRVYzZmhJdi9WaXlwczZZRTN4M3I0M0s1YkpRUzY2emF4VkdGc3ZkKy8vajRhRisvZm0zZnYzOXZ0OXV0ZmYzNnRmMysrKy90ZHJ1ZHZuMzdadU5MQmFhQ01nVXpDK3JaUmlGb3d4VXVKSThZTXFjQ3A5T3BxNXZhZ2FZVTZsR0pBMVhRcWVqY2h3NkNqMEd3NW5ZQnJHdzAxQTJPMjA2bjA0QkdvdU5OeVRmcC9Gd0VsaFVleTZuWHJJS3c3UVFXZGR4dU4ybGRMNWZMODM5Z1NQRjhhaHUvSnZCTzQ4Q1BTdXFNZjhWcDkvUDUzTDU4K2RMdTkzczduOC90ZnI4LzM5L3Y5L2I1K1RraFBKM1A1Nm1RNDM2L2orL2Z2Ky9pU2diemVyMCtBWngvNSs4OGJ2Nk9NZGE2UzV6NmtkMjFmWUM5ZHh2N2NJSkoyZDlBT1MzMGZQTXp5SGlUTThCNERGNlhVbFlIcDRLUVczVysxdDc3TU5CMXZHSHhXcTdYYTd2Zjc4K3k1L041QStIMWV0Mjl4dVA1ZGJZdHlhUnU0QWtzYlBxNjkzNmZqUnpYUnhCYlByL2IrYjE4K2ZLbGpUSGFCQkJmbjgvbjAvMStIMSsrZkJubjh6bTBzQjhmSDV1NGNyNUd1QmhNVmswRUVuOVJzY3RnVmhNK2l4bEp0TUEyM1I4QjZ5eXNBc3RCT2dGWElLS0NNSWdUb01xTkV1MmZZTUg3enRjNzMyZFFLa0NqMXl0QVp0WTBLeDhwSXI4R0dKK0FUM1YrMkhpcmhsKytmQm1YeTJXejczdytiMTdQOHArZm44L3RVd0dWbGVWa1R5VWI2OERrZmF5V1k0enhOUmloVTRFcExKUFpWcksrdTdKNC9tZ2ZLcWVMVzlYMlJFV2xJdEwxZGl5bmJERGIzK2pYZ1lqUXFuMHJyeFdjK05rSUxQN0Y3eEliTXZ4N3ZWNTN4NDB4bmxiV0pGMTJaU2FnL04wcFc2dCtaem1PTXpIamFqS3dEZm9uZDc4ellUZGZxMTh1cDk3enIycTh2M0lpb0JwclJ0QmwwRVo5b2c1V0JSR09kT0hqSWpYRjdVb3RGYmdPV25YeklKeXpZdmpHNUlZZ3NtTU94SGt6OE9zTVNyVk5XZXE1VDhEYU9jYkV2MU9kNXJiczlhTzdZdk1ldDYzRWtGKytmTUV4cStNUmw0L0w1YkxaTi8rZXorZm5aNkthenVNcVhTUVZPNXNwSlhmbEhBSXplcy94SnNlY2tSSmlETW9nOWQ2VmZScnFYTXI2S3BWVjI3alJ3SmFjR292T0FNMXpNZFFNbndLMUF1Yks2M2tkQ0NodkkxQzdnMHo5bmYvRCtYemUyVmo4SDdHeDRQOWR1UWxzWUNycXlOOFhxRzNIbS8xME9qM2p3L24rY3Jsc3R1TStqUG1teFQyZFR1UHo4M1B6dDJwbjFYc0VIWC9iblBhVnFWbWgweHdPdDBvNlhMTEFIZVBVVTIwM3dIZmNyc3BDd21WM1RyeUI1czBNc2VlZzk3eC9Cd3pDakJsYkIrcFJBUGxhMEJWUXVUNlY2UUhkQmxqM2QwS0cxNDdiK0RxeFFlVXltRE80M1c0ZFFhcitUSWp3bUFkMHo4L2g2NXZmMC95THYzUGI1WExwcnUveWREbzlzN0VUMEkrUGo2ZEtLOVZVRUllS1dRV1BBT3JKOExLZDR2RSt0OTFZM2U3VUZsV2F0ZzJWd0puYitIUG10dm0vc2ZLNTkvT2FXRjN4L2VQMVVQSHZBNUREWURwWVhmYjBkcnYxVjJEa0JreHR3L3RFV1ZWbFhXZEM5cEZZczUvamZoOWRTLzE2dlc3czZsVEcrVGZxc3hTSkh4a1hYcS9YZHIxZXU0THNmRDZQM3ZzVDNONzdEa0wrelBtNWpTZEtMNHpSM0F4UWQ2ckhrTGtZbFNvd3NycTd6bnp1NndTd2RzTUpPWG1BNWZCY2p4dGdNR0JZSGxyNXpva2h0c01DVGdYTFFPVzRYQzZkRXlFTXByTDhtQVF6WFJnZHVpeDJ5WnpvcnhrWXNEbjNoQjFWZU1MR3NYc1Z0Z2wycFc4UzNzdmswdnc3UjRoTmFIdnY0Y0FDbDVIRnp3SUgwS2M2enU0WGpEUFIvanBBVnhXek8xWGsyRERiM3ZUY3hlR1UxaVdaSGttSURXemlXS3ZpckNKNERyYXZzNklKL0dHNmNUcVdkWER5K2ZBclFEVlZrTHFrVmpBb1pJSVRkbW1JcVh3cWE5NU4zK01HWW9aUWRSVk5PNTNZMXhSa2hPMTZ2WTdldTUwN0NhOWxKbmJHcHhPZW1RaFN3L0FRc21tcDV6VTlCaVU4RzZ3dlg3Nk02L1U2UGo0K2RvMEJ6NENwZ2lrblRVZURxd2xLQm1nM3U0T1ZqcloxQStyQWNnYWVqV3E2ZUpDdkNZRkRPTlN3T2dIWDRFUVJ3OGx4YnpET2RFSzZnWjNIazFiKzhnMm8xSkZ0S1h5di9mRWRUWHVXaldYZEFaaUJwNkFEZURyQ0ZpaW03QjZaRm5lZUk3R3ZtL1BNa1VEWDY3Vzd4SThiMEQ3L3Y4ZEE5cWZONW9hQ2Y3NFdaakgwbWYxY21mWTFZMEpVRm1WclRXdTh1emtOY0x0RWo3dTVGWEJUa2ZDNkdPQTVxOFlNeE84S1Z2RjZzQVZHZGNyVWJzS09EY1FLa0xNT01kbWx4dW02NDJZclBtMjZBbGhaVzFZQjFSK3JyR3N3RThUYVlBV2VVTXhkZitXandTdloyRWYzeXRPeWZuNStQcFZQQWFxT240M010TkJxdm1qanhiak00bFpqWlk0Z3FOTUk1a3RhVy9zWUtOd1MrOWxGUXpHaWhtTUNLUGE3K1owVjZFYjBHUm1vYnRwWDhKbGpXdTVGTUxONWphNmhHOWt3UWdacWY1KzFOSDVVeHprRlJlQ2RXaEo4WGRsR1VreE83SFJsWVJtNG1WTzQzVzd0ZXIxMlRQSkV3L3JtRU4zTDVTS0hJV1pnOW16K3BVb0tPWXE1YkpUSmRYMmdtZTFVY3hNWlFGYUVRSWxIY3QzMk0rWTFCekdrR3V6Zml5QU45eit1Z3BsWjFzeW1DckRDWVlrR3hEVHBJOVJ6Qnkwckh5ZURVQzFuV2FlVWFEOW40eGtOeVlNQkRadHpaM0IrK2ZKbFkyMVhGRE9jQVJKbGFiT3lpUzN1Q3BMSTlqclpqQ0RrYVZ2Y0NDandvZ25LU2hXZHpYWldsWk12VlRnRDhMcHFsQ0xycWdiY0IrcVl3cmdLWXBUMGNjQ3FiS3lDVmFsa0VhYm4vRnlub2dDclBLZnFmNTF4SjdzR0IyWlhjWm14b1NPenRqeDMwMERaaTdhMC8yQUlSMFVsQmFnOVN1RHc2S2NBemxhQjd2SFp2V3BqSzkwZHlycTZiS3lEVVpRYlIwQjA1YmlMUWtISWNTVW1nSUsrU3d1cWdIQ25vaW8yUlFVMXlqK0JuQnk5cHBoVktMR3lDN1p6RksxcHhXSytFOEloVkNXTE4vdUx0blVVNGF5b1lMb2FBTno4RmR0YVN2WTRwVjBCRVcybHM2MWN6cWxsQktwVHlLZ01BaHJaMWNkYzFSUk90UG12V05rZGNLWjdaS3hhV2ppUExKTXBwN09aS3hBK3JxRy9vSkxqeGYwcG5KbHFMb0RabzNneVUwbUtHeXMydGFLZWNqL2QxQytySlNwbEJxbFR5QXFnUitEOEtqS2xtUkwyZ3RVY0FkQ3RzTCtpakNOVDFvcXFxa0gyT0hFYkc1c0RGblVnNUFhK3lMb3UyVlUxcHRqMVMyWlFxdjFPUlpOOUlXelJmZ2FSQnhLb0JFOFVXeXFsSkZ0ckljMEF4TmpTamVkOTlDVFkvWERmU3pDejVNMElab1ZFc1duUEZOVHNsOG9vVkMxVHpiR2dxRlpORFNnVndLSysxc0dETUtxeFpDV0dWTUR5c2lFcjFqVlNRSlVZd2o1aUhPbFRoZEh0NDRTUWc5Q04rbmw4RDkwTk1JZ0FkZ3I0NkpxUmlSOUk4dlJkRnZicjE3bS95eFVNS2pOTE1pVlVBRHd1MkNXR2hoaStGNTVUV005TTljb2d6bXMxZG5NNHVPRi9MQUVZV2RjcW5NN3lGbXlxM0lmd21PUk9kN1kxaUZXdE9qb1k4VG80MW1UVjVJeXNnRkZ1UnpzYldGR2JOSUlKQ0R2MWRPbzRsWkc3aldCd1JGdFZUS3VXeWVDQnlKS09hbjhvWjNlcDlYZGRObDB0RHVheXdMejljWFBZZURBQTBTcGtCTzlzYlZjVE9WV2xkUHY0dXl6RWt6eEh0anZvbkhvU2tGRVdOb28xZDhEaGNRcHV0ZDJwcE5vbjRCem9BaUoxaEJGUWcwZFZ0ZGJHSEhEUVd1c2htTkVRdWtMTTJRTzFHMlk4YmdUWHFGaGNCSmo3RWpQZ2NQdHM4VVM4cVBwUEIvZFh6bk9oNVo0Mzh0ekg1ZWM2UWdyT0tyUlJmS215c0JtVURCK1BoWWFiTWxWUEVSK0dDU0lUVHpyN2FtMnRBckgzYmdjRXpQSm0rY3I1ako0Tm5ITkZEVnJGWGNJNUxlOWs1Sm53K2JlZGJWK0ZmUnpaSUhhT09hT3NMWTAvN1VHczU4RGpyR3dLTUlNRklHek9FVzEvakdzZEF0Q042aEVBSTRoQmU5WVhlUlJPQlNWUEFWUEFxdklNNWJ4NWhWS1dBTVA2ekJSeTNpZXNjcmlkVmRGQmluQnhYRG5HMkdSWTJYYkN2cDFsaHZHdE85Qnh1NWg5MDhYUXU0MmxuU0FyTUZkaXpNaW04dXdSQ3hQR25uT1M4bHdwbmJPaURxVEFqc3JSTi9QY29BU2NDYmFBQ3FWTTQweWxuampUQnMrYndXbEFHMjMvVUtiZGtpd0tXSVFQR3pXYWN6cG9TbHhQRWo4MjJjTldrcFM3Rnl6c0RycXBmZ3BHM2phaHcydmdiYVNRQXh1TFdaWXQ3Snp5TmU4Sm9acE5BY3ZERk9kdzB3cVlUOUFLMXJaei9EZGJTbExQcDByeUl4Z1FKbEs5QVpsRXE3SU9YcG9oZzlQSWhyQ25nODhKc094aVY0WldBWWZnNHNpa3gvOGt5Mlo5bDg2MnVxd3Jmc2NJSDgrdWdUbVZHeWlkZGVWWVVnRU1uNEdaemcxNEV3SXNoOXN4MmNLS2lXWFJldU9FNWd6R09RZ2RsUktWVmRsZXZxYjI3OVhxMFFuc3RzMlZEYUJPMGNvZXpzcnVXdEhBcHU2c0tHNElCaE4wYUdVMmtMck1LR1JUTjNIbWJDRHdLVjE0enZrTUVERzRRZlpWc3BWbGFOVTJtaGM1VEVaM04xaC96cVRoZXVMcFcwNVpXVEdWamIzZGJuTm14S1pCbk44SnFpZGFWTEtBT3lBUk5MUytNQjU0WjIrVmFxb01MS3JvVkJsbmdlZm5UUEFjb0hOV0NTdmxmQThDSTBIRW1CTkJuQmxYeU1yelU3QTdXVm05NFBQcVEyZ21xS3grV0RHc252aWxtY1NPQkpxT0sxbll5QUl6dUF5ZXNxM1VkU0szS2ZXY1lLRDk1SG1mWU9VM3FzZXIyQ3RZRVVBK0ZwZnFkTnZnUEJaVUJoRHJHT05SVmxRc2g4ckxjYVVDeWtIRzBPT1V3VGxMQnJzaDVzb0VNR2V6aTFFNEhSVnQxaWNwNXdaRUZYZGliQ2tHOFk4dlg3NXNiTzRFMGlvbTl6K2hqU2lPZnkzRGhwWEl0cFZoRStVR1Fkdm9XanRDaG1yR0hmNFlBektnQk5uR3R1SnhGQ2VHZGhVQWZRTExLOGtCWUFQNmd2RkpaYWpNRzNYa3ljeThLdUMwcTRFeXltd3R3ZHhkdjJNMG1JQnRLMExLbmY2NDBqMDBBdXE0Z1VrZFdHbGhzMjJxSmM2ZFpDc0wxOW94bmxUSkc0U1lWUklHcEQ4VFBGQnVNNk9FbGJTMXBsZGlkNG1HQXlONlpJdXBiQzViWEpOOWZkcGJUaFN4TFVhSThJRzFYSVlCeFczVGpzNktRb3NLY3hmeGNRbWRud1JHTTEwR25GY0N5MlhZdW5MTXlBa2RnazRtZVBpY3pzTHlndGhjQnV0NmdvT3FTN1lWRlhBRExqYW9zQjZzNm9mY1pXQVpTSVJZcVNVa2l6WXd0dFlhYjN2VU9ROXcySFJ4SUlnOFd3UlZlRTY4eGk0VXRMM3pScGh4cGx6d3VacmNxWUNxMUkzalBJNWRuSkl5Z0VvaE1iUHFWSlN6cnd6eEJKVHM1ek4rUmVVU2d4aWtQUVZGM0pWQmVOUXhiSEVOckVNTnZFZEZaVlY5bEg5K09SR0VzTlpRcHlUTmM0QzNBRzdYRjRuZ3pxK0RyTzJ6YnVhYU9YZ2RhRmNka0VvdG9TRkJWWDJxSjBDOE9XWmVHNEtHbHBnaEEwWGZUT1BDcVYycXF3UTI2UVdmRjJQTUxoSTJ3MWxWQWEyYVBzWWQwemEyNU1RUndnY1pONnVRRENpK1p4aUQ0WEVNMmtaeE9UNDFGblpuYVJsY3Bab3V6bFJxcWRiUVZXb3BRb1NCNThSVjUwbEJOckhpL0F3WFM1THJ3RFZscFkzRmMzQnlpWUdjNTJUcmlzdDZrT1hkd0luQVF0SnBwNVFjaHlhcXVZT1Y3U3UrZnhWTWFWM2RjMFJFMlM2bVVZMGdMdDJwTWNZcXJLSVE5dzJsMWdwUVVNdFFZY21tYnQ1RFROeGRoblVDalFxdGJLOVNVU3p2ckMwbW1oaEUxZTJGUzIrb3h5cHkvWkFTdXRrbXRqeDN2Y0JDMjRQWDY1bmJxa0JDUmhmalM5a0lZUG5lZThjTWFnVk9oSS8zVDFmQW1kdEFXWnNDc3dUSkNrUVZOYTBxV0tTS1BPcEhBVWhEOURyYlZjeW9Za3dxaHZoMTd2WUFheVhMUXlLR1lkeGxVREZwNDk0ckJYUmpZZ08xN0REWWV0TklVai9lenA2UzBsbmxwRXdzV21KTWtPd3NLWGVaS0VBaklIbjBFUUpJU2FSQmNPNlVNSU56N3AvYkVqam53NGZ0K3htRHZrc3hYNEcycklyaXM3cWFlS3dBRk1QMk9pN240Y3JpdVp3dHBTVXdwZkx4U25PUlNySXF1c2M1WkZhWHlzcVJXamlaMkR5QVdFSUwzNXRWU29RRWxGQUNqT2VHR1NFN0FIRVFnZG8vTFN2Q09nR0J2a3hzbURidmxTM0ZwNXZoYUIyVEFHcVJLcktLTXJoTFZwYUd6RVZqWjBPUXhEaGFDVEErUXlSUjFkMTVhUXpySm50TDNSaWJzaXBqRzZqbGdMNHlxYlMwc05ZZzFlODR2aGJCVnJFbEs2NENVY1dZWERmS3hocEl1eGlWSlpVeHNiTXkvdVJCS1ROUlE0a1EzTGRSWUxTMHJKalJQbFRQcVk2Z2RKc0VEYythUVhBbitIZ3NOVUNiUnVGME9qMHp3bkE3YldEa2JoTzVFbnMwMHFlUWhTMWxhQk1sNU0vY0FheHNMRjhyS3lxbCtUZjdFTExFR3UvaXhpaW1kQ3ZvMFRqZnBqS3dhZ2dlbjRlaDV2N0xva0xLYkx1eXZIaGNaRzhkaEdyRUR4N0hnOTNacHBKRjdxQnFPM2lWdmVYRURRTkluemVvZThZcTZlUGFaQloySnZpTTNXMlVBR290ZWtSQ0FHcTRFa0YxWDNET25SMTF5UnNCTDF0UmEwUFZjWmlORlhaMmMzNEZza3ZvbUluUVE2bHpwSm9aYkp4azQzTndLSkZCcXVKU3NyQnlIeWR4S09uVHhRQVNCbVMzaitKTW5zSFNsYTNFYzZLOVZXb0pWbjl6Zmp3T003aHFZQUFxSlF3RTJhM25BNDhKMlFHZWdSa3BaTml2U1kreXMzRWtLZDRvSkl3c3ZJSGwzY1dnTHQ1azROSDZPbXRMV2RwdXJPa3dFTXVwWWM3ZU10RFJoT2NJMnVpNUpoVkl6WHpMeXRvL0dBUHVab3lvOHdrb2R1VmdKZ2xDdDdPaEdiZ0lENE1xNHNpKzYzelVTMUZ1RkZYRmxxeWFqMmVtSGxMTWNCcVl1MEZNdVIyOEJiQjdsT3hSTVNpQ1FYRmhDS3V3a2haK3BZRGlHU2dic0tLVjhNaVNSc3VIU0lXTTlya2xSaUlsWlp1cVhqc1FLOG9vWUpNZ3EzSktXVmtoSGJoc1Z4RlV6dGhPV1BrWWlqY2J4NTRJS3NTZFQrdUxyM2NyR0t5b1lnRmlHUjlpQms0a2Zsb1VYK0pJbFFSUXFhYm1wZ25ocXRwUXBiNlJWUTFXSDVEbnJTNGhFb0dacWFlclEyZGhGYno4WGVQeFNobURibzcwZUlTam9vck8ydks4U0pYSTRTVW1FVTR6V0tEelVEdFdUWXc3eFhsYlNURWo0RlJnN3pLbktvR1JBTHYwR3M5VGdjMUJwQ3l3R1pSUUF0cVZ6MnhyQmNBTXpFcGZad0ZTYTJHNVcwUUJGalNNYXBXQUVGYTNIY0dON0N4RHpFQ3lJa0o5N3F3cnFXTlRXVm84NzZQUHNqUGtqMnd2Z3JvTTVsTFpLTUVUS1ZxbC9Ddm5XVkZpRmEvU3pKVVF3a29ac3I2N1k2dmxTUlYzLzJ0bU5UT1kzdm5heFl3TXVvUEtxZHpSMXc3SXFIeW1sUHhhQVRoZlU3S28yWlhZajRBWUpITCtrTmRLd1JRWUVTVFJhNWZzVVovclZDMVRNVHlXVnlZb3FOdHV6YUhzTXl2MnR2b2FyeGRmcXdZZ1UxYXhGby9jbnFsMUZHc3FLK3VBUk9WOEJYNEdVOFdjWlRBVGkycTdRY3lpME8wVitHaFdCTU5SVWtuOEgxU3NXVkU1QnkzR2kwRUNxVWVKb0JmQXREYTRhbWtkWEczN0FHUDVHZ2ViODRwN1VhenBvS1J6ZEZ6ZVE4SGtvSEd4cHJLeS9IcG01dDEycDQ3SjZ4VFlERXo3dUlORVhTdXhZWHZGc2tZQWMreVN4SDlzZjVmdEt6VTZJYndWQmNVR2c1ZTVGTUNFWFNFclpSMHdHYXlWMTl3b005Z3VQalRxSmRWVHFSNHVFNG5KbkxsZFdWa0VDQ1pMZDJWTEYreHRhbWV4N0lwaXJpU0RVcHZycG45bHJ3R01DSHlwcE1IK3BzNkxJTHN1RkdVajFYRU9YaXFicVNIUFVLbkNscFdWNjhrcXRVUlZORFk0VE5hb2N5a29ZZVRVNW5nR0VRYS9TMURubkU0QWVYTWNLakhQQW1GVmpDQkVOYWV5TFZOSGZyM3B4OHhVc3RKOTRoSXBmSDRIS0UvZURhQXJLNmxTeVZWRmJkdDFneFRJVmszcHBwVmxGWGk0cEVoVkJUT2JxdW9oVTg1TUxYbjFpYWh2VWtISmpTQ01jMDF0TEZ2ZVZWQngwRG9kTTZqZnRDdTdET3RJell4cmMwcXAxSkdQMmF5WUZ6MkdiNkh2TXJPOGNuR3RWNkdqbTN1SW1TZkQyR3BXSzZ1b3diWkdNeEZLUUNvMXBPTXRjTVhGcFJzdCtoWEdvQW9tRjNzU1RCR2dUZ2xiQktXd3NRM3RacWFZU3AwWjFDaW1SRFdGY0NKVVBZSjAwQkk1RmtLWU5vaWZ1UXhtTjg4U1dWWFdMTWFVcXFxZ0MwQm1RSlI2c2szdTlOQ2Y2allMWHhBZnFzWUVnVkxBaFJZMkF0Z3RmbFpORm1GeWh4ZHJMa0FkV2xrNEQ4OE0yaXhIeWVwSWRoTUhyRy9pUjFaR3RxME1HcGJEYlJQWU9YZVNZMU02Tnk0WnN0dkdTa3RLK1hiRlBBVGoyRDM3MXNhUEVzQU1YaFhyc1owa20vWFN0a2hoTXlCZnNhNnVYRlplMlZDZStZTXIxK0dLZ3dyUXlOWXExVlJyQitFaXpBb3c2TnNkTktjeVZFa1llTTczeXM2cTRrQUhwNkJpRmtsVGtJclZDNW9ZVjd1endPR0N6NFVKMFN0cTJsV01KeTR3dGIrUmV0TDZ0WkZpY25KbUJ3NVVqQ3ZYWE1aVkpYMk1Ra2JmK1hONUVXZDc4Vno4L0pFc01aVEJpS056c20xaW5MUlVRNzRINE5pZGFxSTY4ajVzQUZneGNSdmVDN2llTEpYZlFZeGpaWjJDc2lXRmV3WlhKbUJJbFoxdGR0clg0aFN1YXRlS3NvL1JaT3RPS1cybm1xMW9UemVLNmRSV0FXdTJOUlZiNGhxMFNYbTFHdnR1Z0hyYnI1SVhxbVNrdGc1Q3VERTJNU2xQd3NZNWtORTJXcDNBcWlaYldWTEF4aUJGKzJpQlpidU5qNk1CNnJzTUxDN0Z5YXNhWUR5bzdLa29QeUV0dzNwRU1YZlB2eEFKaTJqQVFRZ2pyejByTElaU1dabElvTmh3ZDV4SzRBUjltWU5qV0FhTHJudUltSmVCVk45ekJPUk9iVnZicittVFRmRlNFSkxTUm5IbzdoRUpvSWk4TUZxanhtdmdtRjVVUlp6NHpMRmdaWjhDdHUyWDdnZ1ZjY0ttOWdWeElzT0hxeFhnTk1LbkZXWlluZjFkQm5PaGF5WHExN1F3RmxXVzA5ZU5LeVZKRm1YcWFPTkdBNWFDZWdNYkozVVVrR1kxaWMzbktXZ2pxOHFmVllHUUcxZ1J0NnJzNjJhNkhpcXFVT3FkZXNLNU5tWDRuR29mSm9pRTFkMGRGOWxWVmt2VDEva0VFYWFDb1lPd0ZwY1Zjb0xNKzc2NjlQeEM5cldxa3RIMHNXVVlsZDBWQ3B1Qlovc3RWUmNHZ3k5V1gyK1UxUXRoaTlTekFxU3h6WnN5K09pRnpCWW55U0dWNkdrdTQ0ckQ4QkNPWkJWM0J2RDUrQUtSSE53TUVzQjZFekhuSnBrVEFlaVVsRUdrY0VDZUI2R0RaVHA1WUVKVGx2ZHJrbnhZalRsbE1rZk50WHdEak03dVZqSzVKWFVVbjQzcnJxcEsyanl0YXhIVzBNNUc4REM4cnRITVlzN0tTZ2R1VlFNR1RZRnFGdlZTNnJrRDNzREo0NmFmZFlGd29xMTFBT0tDQkxodndvVWdjOElHQU55Y1I2a25acmRKUGRzdXhueWpmZDNGb3ZUbFJNZEVkdE9sNUNNVjVFSHNYUUJpczdUT3d2SURaYUdqMlZucGJoN2NwSzYzVndZRU1Md3Fianp5bDY5OXNhd0ZGa0YxeXFqVVUzMUhmQzZzVzFaRlZGdVhWWFZnejlrZUVhdzB5czFsV2ZtK2F6UUFRU1dBK2hLWVZmc1pqUG5jQWNVQjlvSWF5eS9VWlhSTmNrREdqaTc3R3NXYnZCbzZ0UHJXUHFPeVZrQlVxK0lOZXFwek5kWXMvdTBpZmg1cW1wcUlXKzMzSlZTVWN3WTcwS0w0VTlsWWRVNmxqdFNsczdsbWZpOWczWXplUWZWa2FHRmFWM09EQ25hRDJOOHdzRURGa2xFM1J6TTNaZ2hkWWtXSHNzenE3MEZJZWNuS2tWa3Q4ZXpNelJxOWJrR3VLb2pSTEJWU29kM1kxeVBxS2dZVzdKUlFUUFZ5eTV4SVlMak9neGdUNTJSS0pVWTFkT3JJaVJkNGZ1dFF4L0E1QWNTbUVqejB2Rldya0x6dmJXQXU5SE9XYkdneEZrMVZOVHBuQktrNlRnd2lzSS9IY3hZWFAxdUFXTzcyVUxGbEJUcSthU3UyVlRVczZocnhNMkNGK2hFb3IxVklBOVptRlVhYWIxbFNTZ1pzVnM0c3h6SGxWTG9KSHI5SDREaE9OVGtJMVhDMC93aVkyTm9XQUc1UmxuSEZucTZvTGNjcFFkZE11Si9PMTdKVkE1T0hMaTBCcUN6dHE3WTErK3VjQ2Q5OHFMSThNSUhCVi9jS2p4UVRtZTNoRkJTM015Q3FuRHN1eW0ybzgwSGp2RkZUdHJVUm1OYUdKc21WYWhJbWpUc1VYS3RRWlRBVnM3TXZ2OC8rZnpVclpBWGNMSjZNNGtvZTZYUDBiNlNtV1dORHp5VXBROGJsK0x0V3g0dHVxWjM2Y1JZVjN5dVZ4UE53dklpcWlRQ1NtdTdzcmdUelI2bmt5aHBDYXJYd0Z5MXZHZDVpUDJjWTA2bEZyNU5qaGhnMVk2K05CMjhmdGJLODNzOHJmN2tMSmJLd0RGUGJMZzI1YTBBZFpKRWlxcjVwaGl4S01EbFJVdGNzc3ExaHJpTHFHb0gremVOZ1ZtOU9lbWpzRVRWOEpkRjBOSG5rSUZ4V1kxT0I0WXJwN3J0V0o3TmdBQUFQWGtsRVFWUTNvTnM1bnBseVZmOHUyRm9MdTFKckh2ZWFaV1FqcUFrc2h0RmEyZ3pzU0czWnBrYnZnM0hhZkY5c2xQUGxsZGpGbEs4MEd5c204TXI0TVBobmVOV0VOUEdqQUlwbWlsVFBBVGRUUlRYbENCWUhZQVF1UHdBMzZ4SXBXdEdONHEzWTJNaGlHc1VwdVNTbmxFSlJEOFBvckM3Q0ZZVncrRjUxcVRoZ2FieHNUeFd6Q0dZMFpTc2IzbGZxQXkwT1BOak55OHhpUVFLc0hZRlEySEJaVnZWYkJ1cTNtMW9XS2FqcWFvbnNNNnVaVXI2Q2pYV05aMGw1RTNoM2pVUm1hNmtQM01KSWl5MUxtK2thaFFxNDFOMmlaamE1c2p0bExZTlpIWnJINnFVR200dk1iRHA2UncyQ0ZtdnV5RmtyQmNDeU10RnFCYUVDbXNIb0s5QloyTEEvbEpjUnFTYURxbmFXYnJaZEdhejNETGdJdkJsbjR3b0d6dGJ5Skdxc2x3eGtoaEhyVGpUWUZYQ3RPb0tTOHVMZG9mVmRBYk95bEdVNm5sWXBYV1p0czRuWEJxNld4Sml0TU5va0hVSm5ibkpwbFFtK2FHcFkyYTVHTVYyUUQxaFJ1YkJQRktkdW1mNU9Ia0xIejBGOWx1RTVrakJqUmEwbkZFNUNVR3FIdzMyTW1qWjZ4a2dJTlZuU25aMVZaU3RLMnFLbFJhTGxRZ0s3dVRxN0pGWEp3TSszU09FS3loWk5JK3RKMEk1cU1ZeTlrMnFKRDdkVldkcUtYYTBDS05SMENjamcrQjJJWXUyZmNCWkpaa01GZ00xMXIwWDkyd2lsZ2hGR2d6Vm5leGxxQjd4TDltUzI5U2lZVVZZMm5YT1pqTkJSc3lEc1FQUldXNWhyWjRYY2RDNEhWV1JiamdKcjRzRm9mSzVTempRN3JoSTFVZWJkUGRFYmo2c3FJdlRaUVo1dmEwOHJBQnNBVzBVeGVXeXRBazdBMktKOVpweHpDaW9CMjRYRnRZQWVYWXhyNmFuU3FoTGdwcEVxV2JHd0x1blRnclYrSWpXbEwyOWxqYUFsNEVRTUdzRXJwNGFwZVppcXV3UlhMWEFxT0NlcnUzMm1teWRjNm9XVFNXcEZBR2R6ZVRCOFJUSFZNRXRsTTkwQ2JiUUNZaFBqcTNlZ1lyMUZHZFlJUWppdURHWjV6Wi9Bem9iS0dPeUx4dGk2YzRSd3R2MmFueVdsTElDbmxMaHhKUlh0NkE1ZWJEQldGTk9OYnhXWjJkMDJtbnU0UzlZRUNwZXBwVjF6U1dSQld4SFl6Vkl2MUNYU291d3FxWDNqQkJCRFpkWVFicFRRVzRaUWxTOHI1a0g0c3VTUm1nMisrM0pOMTB4MVBhQW1Fa210WWxFZGVHcEpFTTZrT3VDcUNSMjJvU3VqajVJVjJIZFQwemo1cHJMS1RqWEZBUGpkUWx5cTd4SUJ4QVFQNXlNY3pHNFZ4QUt3MG42aWxaMlFCY2UycEx1bGt1eHhxbm9JekZmZ3F5cWppbDlTMVZOd0JyRm1leWVvcHM4eU9qWlV5YlpkZlM4Q3VhVElKdW16czV0T0RhTnRMcEZEUS9QY0pHd2VMaG1lTDFuQjBLcWlVRFNjc2lVVkQ4OURpM0h0ckt0U1VMdzNSTGl5Z1pEKzdzRjhKVE9iZ1lzckd2RE5VRlJHbDFpeTBMbDFZa1VjMmFKWU1vZzkyMEk4cVc2WURDZzFNcWswSkhKRktYa2JnYlJyZUkrcXBZTk9aSHJWY0RVYmE3cGpzcGhTSk50SzZ1cGdSTkFWb09TMG11Z0JlTjRiSVpnSGh1UFovczFFTmFYNktzVnIrWU5yaDFOYjdpcFIwUEU1emJOUmVnQ2JySFJVdzZZZjA3ZExCSmwxZjhLQjlhczJWMW5OcUFzbDYyTEJCaGVod2FsZXJrSG1CMUpGSUVaS1NFdXNkbDVKUWoxbkpsSFhTQ0YzNDJnSjlDWUdyWGVsa25KSVhxVlA4c0QrcXRwbENSM1hIMnFmS3EweWdNcCtLblZrS3hObFo4bTJZa0lsVk1pQ25YVXdsN3F6bkJLU3ZRejNtM1B0Nm9RYlhPNWI1Rml4Q2gvZkh4VVFXL0FFY0s2ekNOcUtRbkw5c3l3cW1LdXd2cVNZelQvYVBWTk5wVnlodlJXMjFhcWNpQ3NqZFd2QndJTFV2aDVWeUN6YldvQzFwSmpKNjgwQ1dzbCt1ZEtCNlQ1UndHMW1sb2hubHBiZzQ3aXo1VTloYTBGR3RtUkxGWUJ0Tzk5eTk3QXAweitaRFRBb2c2a1NMWnNNSGcvSUZra2dwNkNwdlUyVTBjWVZTZG5ta2p3QmRPbVhieFRXTld6dUliaXBNaW9WeEVja1pFb2FoU09peTJNM0swamNDMUxoVkR3YXFHMFp2a2NXcUNuckc0R0l4eWtycWxiV2R3NkxReUJhWlI4SG1MUkloUVdzSHN3RDQyWlhWTE5rZjlsK0ZsVzBIVlEybHdGc0MvWjFGZHpsUVIwS2FQZm8rRmRmdSsvZHdWUklDdTFDR1I3QUVJaUFoYytBWlVGMGtPQmFQeG1VcWc0aTY0dlFuVTRuRkRZSjlOeisxZlZYdmVIOXFtcitrUElMeDhvS2NSVi9CRmJ4YkUwSk1UMGtTRDR3NkwvbE5ZOG9jc3FhZ1ZkVTNBM01qeGh4Y0d1cXpzUEg0aXJwYW93MXE2T3lyVmp2cDlOcGM1OUU5MUxsZGJvWVZ6SldkaW1XZkFXMlNORUtjRGFYMkZtQkxMQS91S3hsbWhoNjEzSXMxVVJRQXBiS2Z0dHd4TDAycTZPbng1cFF4U2JQb2pBZyt2NWhBbk42TEhWUkRYSXN2S3RSamlTMHFKVXlaVEFYVmJBSzgyRWxGSldhUWRWb3FVQzFVbnQ3QlZhVFF1ZE02U3VxZXhqUUpONCswaWNheHYvdXRiS3Y4M0VUYlQ4SDhnamNPS3hPSm1iVWE2T09WWGh0M2RGWTZySHY5WG9OekZMY2VFQTFvOCtwS20wTEFIUEhaMnJZS2pGcTBoZlpGaXhzcUhKZ0QzZUQ1bitVMGtiMW1GalhrbjJsdk1TU09zTkUvQ2RJQUtGMFN5dHE2dXJPSFVONWd3ZzRHWm9zZ2JtZ2dNNXVjcmEycXJTMklnMWNiaUJCY3hZemd6VUROTEN2TDhHYlpYTnA2T1J5M0xtUytLazgzelJJQUs2QTFpb0thMkk5TmFwSXVpVUZkZkM5NzY2UEZaVXRxVXI2S2JXayt6WlUxYS9acklYRXp0cmpUT2Z6N2h3S3ppQ2VYSWFyYUh0YlpJTXorMnBHZ2F6Q213NHFXQUZ2RWRob2RZcDBYcTBwVjdHMVlXWVdiTzRxaEdxNDIrWjhCWXRyTFd2bHVOUHBaQWVhRkZTMXZ1YlBnYmd4c3FjcG5BYXN6Qm92S2FGb0RROEJHdGpmVU9sNE5BRzJubVFWMDRmZUpndW12WDJmc3JRRVdaZ2hMMEpuVmRZa24zRE9aSWVSTjg2UnFQV0Ntc3ZHVnFFTVJud3hRQXh3UzhFTVlvM0l6bVkyK0JDY0xwNE1LaXV5dWhJbWFtbGJaRmNOb05sN3RwK1JIZDE4WmpRSVJLeVhkRlJoTjk4L2h5S3F3WFdObzdPMXdpYVhvSE4xMDhSRVpaV0VxNmdybklmanplZzhqZFJmMVhFTDRra1hhNWJCakt4b0thbGpCamVIbFZ4UTRHYXljcFc0bERPQUt0blR4SEF0T2Z6T3Rad0hBTTdzcVZYa1Y2eXU2a2FwMW5Ia1hLcVdGLzRYSHFqZW5OS3FCanBSM2wxY2gzRWpnMStFc2dkUWhzZEcwQjRGTTlzV0FWV3B1QXlpd1RQbGVaeHQ5VnlaVlMycVhmUmVXcVRBaWxwcjlBcG9XVGp4eW1pdDdOd1Y0SlRyaVp5T0E5QjBrN0hGZlVMb3VybUtZSFZuUlF2cUdMNUhNSGRxRmNSMnFXcG1jSzZlVHd4MmRpcFdydmlEaWxyK2ZLV3EzT1dSV2RIS3dBNGV1OHdqY2hiZVJ6RmlscWpqWk4zdWZDcGZrSjAvc2NWcG5ZazZMMFBJNzdseGRXQ1o4N1dpV203Qi9BR3F1UVNudWpHS3NCOENKbWlKcThxMXBLSVZXeXFPaVRLNjZyMThCTjhyNzQvQUU3MWZkQzN5UFMyTXhkT3BuRTF0bFZ4RDlKbVZPb2dnTityNFBqQVhWRlBhM0VnNWpWSkdGVlVHTm9sSDIwR1ZyVUI3Qk95U1dxNldxWVFkV1I5MnBjRk1ZTXdja2JTZ0NLQ3FENjdEaWlXdTFnOE1RQzlCeWZjRnFXMUwrakw3MTRxTkN1em5vU3h0MGRhMmd0V04xRzhGMEJLME5OMG51aW1lbFVGOWRJZEFmak80NFVUM0NqUUxvVWVMSEpGVE8zZ21wUnVJSU92d0JRQ2JxTmVvM3F0WjlpRjZ4VksxM0dSbG80enFpbXErQ0dkVGlSMXVSWThvcWdFMDJoWkJhNzlrWlhQTXF1eFJIS2xhMnNhWldONG1ScVpVajB2TENLaGtqS25xT1FITnVTWlZKb0t2QXFTMXdwRXF1dldEQzFCMnlwd3JDUHNSTUVQVlRPRE1MSk1EdjZxZUtYd2kySllWNVNxNHFLeXZnR3NIQ0xpdWoyalI1OVY4Z01xU0oyRkpaUlhFSFZSSGozc0ZQcmN0Nk9wcWxXMUdwYXRRZHQwR3Z3Zk02bjYzSW5zR1ZGaEpHYUJxZ3FxSVY2SXNYbGxaZ3lTUHE0UjNibnQzd2k1Y3YrY04yeXFRTFcxVDk1S1lWc1dXdEtrNGNCOVc1M1dRUWZsUVlSNldsNEhhSlpqdlZFMEQ1eXZxK1JLZ1pDczVxZEJFUDVzRDk0Y0F2UUxsU2dOYVNNQXRIeDg4QnVOUTQxemRGc1gzMHpLYmNzME1MRC9paGtwUXpsMHdpVHFLTFRmYkttQ215WUlDbkswSWJhaWVDNENHOWlTeUxRN2NJTUdRd2F1NlRLb3E2MEFwbDNXTjQwTFpwY2ExQ0tLSzlWUXl5SUVuOHcwRjhGNkNMMmg4bzNpeEd3QzdzN0VXekNPcW1jQXBZeFlENGpzQXpWUzBzbDJ0OThwQTd2cktvcGhDVlNvbmJZcGdINm12U24yNHBUQlY0c2R0VjNCdE1xNWs4MnkrSUFEdlVKMHVBbGtDVlR4SWFQbStVTnUvcWtWNEYxVHpIWENHclhJQXFJdEJLeXBxSzk5VnRBT1ZzNjRPNE9iWDdwSExWQ3BZSGNSbXd2TFI3VHZZQUtCQk41OExHVnpEdUZ6K2hRYldnbmNReUNaQWsrVmJzUFNvdWY5MzI2MWlaZ21mQ3B3UmJBdnFtU3FyaVUyUHdoamFvT3lZcXRJZWdWWFZpVHNteXRhNmJHeVNwWTNneVJycEl5QWVhV0REeHRwc1h3S3lhbE1ES05QN1lCWE1xRXNrVXNpMnVDOEZOQVB4QUtUVmZUMW82VnpNMEUwakYrMXJXY1V1SHZkeWc3dmdvRnBsWDhIcHZIcE1DT01SVVBIelprSW5zcWxGS05YL0VJTzUyRTBTeFN6T3dvYjJWbVJMVzVEMVhJVTByYmdNMUF6V2d5QzdmZThHN3hVQUsvdGFFQmF0N2x1cXR5UDdFbXNhSlFPajVGK21yblpmQ3VZQ2ZCVUFXd1NoeWQ2cE1ZL3ZBSEcxVXFPWXBiSS9neTVUMENNS20rVU8zZ0Z1Qzg1ZGdmRFZlZ3VQRGZJVHJJQkxzTHJjZ2RoM0NGZ0ZaamFLSjRJdjNGOEFORXF2dXhSMXRWS09nTG9DYTFqeGJvQkFrajZ2N2ovaWNGYkE3ZjRyZlJuUURMUlZpRzEzaTB2cUJRcllWcUJiQURaVDBacGlIb1N6dlFwb3BLSUZTM3NFMUhmQldsSFhkMEg3TG5BcnF2b3VnTXRsakhCZ1puaDNFb3ovQktqTE1MNFoyQXEwK2hFSnI5amFWVUJidk56Q0lVaXJvQzdBV21tRnc0bzVBSzNNdEI1VnlwWk1TRmdzMDVKeUdWd2x3QnFzRUdBQWEyWlUxQ2pVZXhYR3NFNHJLcmlpbEJ2RnpPS0tvM0F1QXJvRTZRRlFVM3U4WXBOWHdTNWsrMVRadDVVcndvdU40S2lVRXcrazNaV0RwMVJYSE5ScVhiMjFUczM5OTQ1eVpTZzNWblpGTlE5Q0YzWGVaeXI1RGdCWEtpd0NNYTJNeGVURFlYZ1AxRnNmOVFOS1pjMGs4MVJKazNyNkVRM3JDbUJWeUxMNzVFaloxcElWREhvRnRpT0FIb0IwQmRUVnlscUJzS0tLUytBZUJYSlZMWStDWEFTdUd2Ty9BdXE3R3VFakRmR0tnMW9LYTF6L2RtbWk5STlTVUdOaGwwQXRmdWxIQWF3b1lyblNrbU5YQVZ1R0VockVWWHZVRitBNUN0MlBxTk9qRGV0eW5hNENtZVVvbG1lWExONEFxN0M1U2oxMFE3eWpnbCt0NkNOeFNSSG1JNVgrQ3B3cmVZQjNRZmRxbmE0cTIxS2RCdWM0R29ac240OVpPT2lWaW53SHFLOVd6anZnZXdlRWgyQVU1K3Z0eFo5Q2Q5V3FraDQ5VjE4RTVvajZ2VnluMFJTdEF5R0lPNWVkWFJLZDVCMFZHVlhxMnlyM3hZcCs1VXQrQzRRSjRQMU4zMzlwUU1qUmVqajR2Yi9EY3I2clFjM08vMHJqbXRacGVZQ0JpQ0hmQ2VtUmJOaGJLL3BOVVBjM3dmS3k1ZjJEN09sTDMvdVBodmUvb1U0VDBGOGYrVk5NMnZ5b2l2MGpLK0tIUWZkSHErMGJuY3o0b3o3My8rWTZMYkt3MW8vNUI3ZU9mMVJsLzBkdTlCOXRuLzlidnJmL2ordjBoNnR0bjJ0cC9yLzQ4MTl5NC96djUzOTF1dnp6ZndEaWZ6NnBoVDFNUGdBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpsdHI7aGVpZ2h0OjEzMHB4O3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmU7bWFyZ2luOjNweCAtM3B4O3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZHtjb2xvcjojOTk5O2N1cnNvcjpub3QtYWxsb3dlZH0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmRpc2FibGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5jb2xvci1waWNrZXIgLmNwLXJlbW92ZS1jb2xvci1idXR0b24tY2xhc3N7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MXB4IDFweCA1cHggIzMzMztjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi01cHg7dGV4dC1hbGlnbjpjZW50ZXI7dG9wOi01cHg7d2lkdGg6MTBweH0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNzOmJlZm9yZXtib3R0b206My41cHg7Y29udGVudDoieCI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEwcHg7cG9zaXRpb246cmVsYXRpdmV9J10sZW5jYXBzdWxhdGlvbjoyfSksSTUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOno1fV0sSTUucHJvcERlY29yYXRvcnM9e2RpYWxvZ0VsZW1lbnQ6W3t0eXBlOmFyLGFyZ3M6WyJkaWFsb2dQb3B1cCIse3N0YXRpYzohMH1dfV0saHVlU2xpZGVyOlt7dHlwZTphcixhcmdzOlsiaHVlU2xpZGVyIix7c3RhdGljOiEwfV19XSxhbHBoYVNsaWRlcjpbe3R5cGU6YXIsYXJnczpbImFscGhhU2xpZGVyIix7c3RhdGljOiEwfV19XSxoYW5kbGVFc2M6W3t0eXBlOlRfLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lc2MiLFsiJGV2ZW50Il1dfV0saGFuZGxlRW50ZXI6W3t0eXBlOlRfLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lbnRlciIsWyIkZXZlbnQiXV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJNSxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjb2xvci1waWNrZXIiLHRlbXBsYXRlOic8ZGl2ICNkaWFsb2dQb3B1cCBjbGFzcz0iY29sb3ItcGlja2VyIiBbY2xhc3Mub3Blbl09InNob3ciIFtzdHlsZS5kaXNwbGF5XT0iIXNob3cgPyBcJ25vbmVcJyA6IFwnYmxvY2tcJyIgW3N0eWxlLnZpc2liaWxpdHldPSJoaWRkZW4gPyBcJ2hpZGRlblwnIDogXCd2aXNpYmxlXCciIFtzdHlsZS50b3AucHhdPSJ0b3AiIFtzdHlsZS5sZWZ0LnB4XT0ibGVmdCIgW3N0eWxlLnBvc2l0aW9uXT0icG9zaXRpb24iIFtzdHlsZS5oZWlnaHQucHhdPSJjcEhlaWdodCIgW3N0eWxlLndpZHRoLnB4XT0iY3BXaWR0aCIgKGNsaWNrKT0iJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIj5cbiAgPGRpdiAqbmdJZj0iY3BEaWFsb2dEaXNwbGF5PT1cJ3BvcHVwXCciIGNsYXNzPSJhcnJvdyBhcnJvdy17e2NwVXNlUG9zaXRpb259fSIgW3N0eWxlLnRvcC5weF09ImFycm93VG9wIj48L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxIiBjbGFzcz0ic2F0dXJhdGlvbi1saWdodG5lc3MiIFtzbGlkZXJdIFtyZ1hdPSIxIiBbcmdZXT0iMSIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPSJodWVTbGlkZXJDb2xvciIgKG5ld1ZhbHVlKT0ib25Db2xvckNoYW5nZSgkZXZlbnQpIiAoZHJhZ1N0YXJ0KT0ib25EcmFnU3RhcnQoXCdzYXR1cmF0aW9uLWxpZ2h0bmVzc1wnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoXCdzYXR1cmF0aW9uLWxpZ2h0bmVzc1wnKSI+XG4gICAgPGRpdiBjbGFzcz0iY3Vyc29yIiBbc3R5bGUudG9wLnB4XT0ic2xpZGVyPy52IiBbc3R5bGUubGVmdC5weF09InNsaWRlcj8ucyI+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9Imh1ZS1hbHBoYSBib3giPlxuICAgIDxkaXYgY2xhc3M9ImxlZnQiPlxuICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQtY29sb3ItYmFja2dyb3VuZCI+PC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkLWNvbG9yIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09InNlbGVjdGVkQ29sb3IiPjwvZGl2PlxuXG4gICAgICA8YnV0dG9uICpuZ0lmPSJjcEFkZENvbG9yQnV0dG9uIiB0eXBlPSJidXR0b24iIGNsYXNzPSJ7e2NwQWRkQ29sb3JCdXR0b25DbGFzc319IiBbZGlzYWJsZWRdPSJjcFByZXNldENvbG9ycyAmJiBjcFByZXNldENvbG9ycy5sZW5ndGggPj0gY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGgiIChjbGljayk9Im9uQWRkUHJlc2V0Q29sb3IoJGV2ZW50LCBzZWxlY3RlZENvbG9yKSI+XG4gICAgICAgIHt7Y3BBZGRDb2xvckJ1dHRvblRleHR9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJyaWdodCI+XG4gICAgICA8ZGl2ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbD09PVwnZGlzYWJsZWRcJyIgc3R5bGU9ImhlaWdodDogMTZweDsiPjwvZGl2PlxuXG4gICAgICA8ZGl2ICNodWVTbGlkZXIgY2xhc3M9Imh1ZSIgW3NsaWRlcl0gW3JnWF09IjEiIFtzdHlsZS5kaXNwbGF5XT0iKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSA/IFwnYmxvY2tcJyA6IFwnbm9uZVwnIiAobmV3VmFsdWUpPSJvbkh1ZUNoYW5nZSgkZXZlbnQpIiAoZHJhZ1N0YXJ0KT0ib25EcmFnU3RhcnQoXCdodWVcJykiIChkcmFnRW5kKT0ib25EcmFnRW5kKFwnaHVlXCcpIj5cbiAgICAgICAgPGRpdiBjbGFzcz0iY3Vyc29yIiBbc3R5bGUubGVmdC5weF09InNsaWRlcj8uaCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAjdmFsdWVTbGlkZXIgY2xhc3M9InZhbHVlIiBbc2xpZGVyXSBbcmdYXT0iMSIgW3N0eWxlLmRpc3BsYXldPSIoY3BDb2xvck1vZGUgfHzCoDEpID09PSAyID8gXCdibG9ja1wnOiBcJ25vbmVcJyIgKG5ld1ZhbHVlKT0ib25WYWx1ZUNoYW5nZSgkZXZlbnQpIiAoZHJhZ1N0YXJ0KT0ib25EcmFnU3RhcnQoXCd2YWx1ZVwnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoXCd2YWx1ZVwnKSI+XG4gICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLnJpZ2h0LnB4XT0ic2xpZGVyPy52Ij48L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICNhbHBoYVNsaWRlciBjbGFzcz0iYWxwaGEiIFtzbGlkZXJdIFtyZ1hdPSIxIiBbc3R5bGUuZGlzcGxheV09ImNwQWxwaGFDaGFubmVsID09PSBcJ2Rpc2FibGVkXCcgPyBcJ25vbmVcJyA6IFwnYmxvY2tcJyIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPSJhbHBoYVNsaWRlckNvbG9yIiAobmV3VmFsdWUpPSJvbkFscGhhQ2hhbmdlKCRldmVudCkiIChkcmFnU3RhcnQpPSJvbkRyYWdTdGFydChcJ2FscGhhXCcpIiAoZHJhZ0VuZCk9Im9uRHJhZ0VuZChcJ2FscGhhXCcpIj5cbiAgICAgICAgPGRpdiBjbGFzcz0iY3Vyc29yIiBbc3R5bGUubGVmdC5weF09InNsaWRlcj8uYSI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEiIGNsYXNzPSJjbXlrLXRleHQiIFtzdHlsZS5kaXNwbGF5XT0iZm9ybWF0ICE9PSAzID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciPlxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImNteWtUZXh0Py5jIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQ3lhbklucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImNteWtUZXh0Py5tIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uTWFnZW50YUlucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImNteWtUZXh0Py55IiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uWWVsbG93SW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iY215a1RleHQ/LmsiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25CbGFja0lucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIiB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iIG1pbj0iMCIgbWF4PSIxIiBzdGVwPSIwLjEiIFt0ZXh0XSBbcmddPSIxIiBbdmFsdWVdPSJjbXlrVGV4dD8uYSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkFscGhhSW5wdXQoJGV2ZW50KSIgLz5cbiAgICA8L2Rpdj5cblxuICAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5DPC9kaXY+PGRpdj5NPC9kaXY+PGRpdj5ZPC9kaXY+PGRpdj5LPC9kaXY+PGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciID5BPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxICIgY2xhc3M9ImhzbGEtdGV4dCIgW3N0eWxlLmRpc3BsYXldPSJmb3JtYXQgIT09IDIgPyBcJ25vbmVcJyA6IFwnYmxvY2tcJyI+XG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjM2MCIgW3RleHRdIFtyZ109IjM2MCIgW3ZhbHVlXT0iaHNsYVRleHQ/LmgiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25IdWVJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJoc2xhVGV4dD8ucyIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvblNhdHVyYXRpb25JbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJoc2xhVGV4dD8ubCIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkxpZ2h0bmVzc0lucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIiB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iIG1pbj0iMCIgbWF4PSIxIiBzdGVwPSIwLjEiIFt0ZXh0XSBbcmddPSIxIiBbdmFsdWVdPSJoc2xhVGV4dD8uYSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkFscGhhSW5wdXQoJGV2ZW50KSIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8ZGl2Pkg8L2Rpdj48ZGl2PlM8L2Rpdj48ZGl2Pkw8L2Rpdj48ZGl2ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyI+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSAiIFtzdHlsZS5kaXNwbGF5XT0iZm9ybWF0ICE9PSAxID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciIGNsYXNzPSJyZ2JhLXRleHQiPlxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIyNTUiIFt0ZXh0XSBbcmddPSIyNTUiIFt2YWx1ZV09InJnYmFUZXh0Py5yIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uUmVkSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjI1NSIgW3RleHRdIFtyZ109IjI1NSIgW3ZhbHVlXT0icmdiYVRleHQ/LmciIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25HcmVlbklucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIyNTUiIFt0ZXh0XSBbcmddPSIyNTUiIFt2YWx1ZV09InJnYmFUZXh0Py5iIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQmx1ZUlucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIiB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iIG1pbj0iMCIgbWF4PSIxIiBzdGVwPSIwLjEiIFt0ZXh0XSBbcmddPSIxIiBbdmFsdWVdPSJyZ2JhVGV4dD8uYSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkFscGhhSW5wdXQoJGV2ZW50KSIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8ZGl2PlI8L2Rpdj48ZGl2Pkc8L2Rpdj48ZGl2PkI8L2Rpdj48ZGl2ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgPkE8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEiIGNsYXNzPSJoZXgtdGV4dCIgW2NsYXNzLmhleC1hbHBoYV09ImNwQWxwaGFDaGFubmVsPT09XCdmb3JjZWRcJyJcbiAgICBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMCA/IFwnbm9uZVwnIDogXCdibG9ja1wnIj5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGlucHV0IFt0ZXh0XSBbdmFsdWVdPSJoZXhUZXh0IiAoYmx1cik9Im9uSGV4SW5wdXQobnVsbCkiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25IZXhJbnB1dCgkZXZlbnQpIi8+XG4gICAgICA8aW5wdXQgKm5nSWY9ImNwQWxwaGFDaGFubmVsPT09XCdmb3JjZWRcJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iaGV4QWxwaGEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8ZGl2PkhleDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWw9PT1cJ2ZvcmNlZFwnIj5BPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAyIiBjbGFzcz0idmFsdWUtdGV4dCI+XG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iaHNsYVRleHQ/LmwiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25WYWx1ZUlucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIiB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iIG1pbj0iMCIgbWF4PSIxIiBzdGVwPSIwLjEiICBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iaHNsYVRleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGRpdj5WPC9kaXY+PGRpdj5BPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxIiBjbGFzcz0idHlwZS1wb2xpY3kiPlxuICAgIDxzcGFuIGNsYXNzPSJ0eXBlLXBvbGljeS1hcnJvdyIgKGNsaWNrKT0ib25Gb3JtYXRUb2dnbGUoLTEpIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9InR5cGUtcG9saWN5LWFycm93IiAoY2xpY2spPSJvbkZvcm1hdFRvZ2dsZSgxKSI+PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSJjcFByZXNldENvbG9ycz8ubGVuZ3RoIHx8IGNwQWRkQ29sb3JCdXR0b24iIGNsYXNzPSJwcmVzZXQtYXJlYSI+XG4gICAgPGhyPlxuXG4gICAgPGRpdiBjbGFzcz0icHJlc2V0LWxhYmVsIj57e2NwUHJlc2V0TGFiZWx9fTwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj0iY3BQcmVzZXRDb2xvcnM/Lmxlbmd0aCIgY2xhc3M9Int7Y3BQcmVzZXRDb2xvcnNDbGFzc319Ij5cbiAgICAgIDxkaXYgKm5nRm9yPSJsZXQgY29sb3Igb2YgY3BQcmVzZXRDb2xvcnMiIGNsYXNzPSJwcmVzZXQtY29sb3IiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPSJjb2xvciIgKGNsaWNrKT0ic2V0Q29sb3JGcm9tU3RyaW5nKGNvbG9yKSI+XG4gICAgICAgIDxzcGFuICpuZ0lmPSJjcEFkZENvbG9yQnV0dG9uIiBjbGFzcz0ie3tjcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3N9fSIgKGNsaWNrKT0ib25SZW1vdmVQcmVzZXRDb2xvcigkZXZlbnQsIGNvbG9yKSI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPSIhY3BQcmVzZXRDb2xvcnM/Lmxlbmd0aCAmJiBjcEFkZENvbG9yQnV0dG9uIiBjbGFzcz0ie3tjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzfX0iPnt7Y3BQcmVzZXRFbXB0eU1lc3NhZ2V9fTwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSJjcE9LQnV0dG9uIHx8IGNwQ2FuY2VsQnV0dG9uIiBjbGFzcz0iYnV0dG9uLWFyZWEiPlxuICAgIDxidXR0b24gKm5nSWY9ImNwQ2FuY2VsQnV0dG9uIiB0eXBlPSJidXR0b24iIGNsYXNzPSJ7e2NwQ2FuY2VsQnV0dG9uQ2xhc3N9fSIgKGNsaWNrKT0ib25DYW5jZWxDb2xvcigkZXZlbnQpIj57e2NwQ2FuY2VsQnV0dG9uVGV4dH19PC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPSJjcE9LQnV0dG9uIiB0eXBlPSJidXR0b24iIGNsYXNzPSJ7e2NwT0tCdXR0b25DbGFzc319IiAoY2xpY2spPSJvbkFjY2VwdENvbG9yKCRldmVudCkiPnt7Y3BPS0J1dHRvblRleHR9fTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsc3R5bGVzOlsnLmNvbG9yLXBpY2tlcnstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICM3Nzc7Y3Vyc29yOmRlZmF1bHQ7aGVpZ2h0OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dXNlci1zZWxlY3Q6bm9uZTt3aWR0aDoyMzBweDt6LWluZGV4OjEwMDB9LmNvbG9yLXBpY2tlciAqe2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXNpemU6MTFweDttYXJnaW46MH0uY29sb3ItcGlja2VyIGlucHV0e2NvbG9yOiMwMDA7Zm9udC1zaXplOjEzcHg7aGVpZ2h0OjI2cHg7bWluLXdpZHRoOjA7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MH0uY29sb3ItcGlja2VyIGlucHV0Oi1tb3otc3VibWl0LWludmFsaWQsLmNvbG9yLXBpY2tlciBpbnB1dDotbW96LXVpLWludmFsaWQsLmNvbG9yLXBpY2tlciBpbnB1dDppbnZhbGlke2JveC1zaGFkb3c6bm9uZX0uY29sb3ItcGlja2VyIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLC5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LmNvbG9yLXBpY2tlciAuYXJyb3d7Ym9yZGVyLXN0eWxlOnNvbGlkO2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7ei1pbmRleDo5OTk5OTl9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9we2JvcmRlci1jb2xvcjojNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDoxMHB4IDVweDtsZWZ0OjhweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4O3RvcDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtbGVmdHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6NXB4IDEwcHg7Ym90dG9tOjhweDtyaWdodDotMjFweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC10b3AsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9wLXJpZ2h0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O2xlZnQ6LTIwcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9tLWxlZnQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6NXB4IDEwcHg7cmlnaHQ6LTIxcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tcmlnaHQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo1cHggMTBweDtsZWZ0Oi0yMHB4O3RvcDo4cHh9LmNvbG9yLXBpY2tlciAuY3Vyc29ye2JvcmRlcjoycHggc29saWQgIzIyMjtib3JkZXItcmFkaXVzOjUwJTtjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxNnB4fS5jb2xvci1waWNrZXIgLmJveHtkaXNwbGF5OmZsZXg7cGFkZGluZzo0cHggOHB4fS5jb2xvci1waWNrZXIgLmxlZnR7cGFkZGluZzoxNnB4IDhweDtwb3NpdGlvbjpyZWxhdGl2ZX0uY29sb3ItcGlja2VyIC5yaWdodHtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MTJweCA4cHh9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWF7cGFkZGluZzowIDE2cHggMTZweDt0ZXh0LWFsaWduOnJpZ2h0fS5jb2xvci1waWNrZXIgLmJ1dHRvbi1hcmVhIGJ1dHRvbnttYXJnaW4tbGVmdDo4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWF7cGFkZGluZzo0cHggMTVweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWxhYmVse2NvbG9yOiM1NTU7Zm9udC1zaXplOjExcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NHB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtY29sb3J7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2JvcmRlci1yYWRpdXM6MjUlO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxOHB4O21hcmdpbjo0cHggNnB4IDhweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxOHB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtZW1wdHktbWVzc2FnZXtmb250LXN0eWxlOml0YWxpYzttYXJnaW4tYm90dG9tOjhweDttYXJnaW4tdG9wOjRweDttaW4taGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuaGV4LXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveHtwYWRkaW5nOjAgMjRweCA4cHggOHB4fS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3ggZGl2e2NsZWFyOmxlZnQ7Y29sb3I6IzU1NTtmbGV4OjEgMSBhdXRvO2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBpbnB1dHtib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7ZmxleDoxIDEgYXV0bztwYWRkaW5nOjFweH0uY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBkaXY6Zmlyc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaGV4LWFscGhhIC5ib3ggaW5wdXQ6Zmlyc3QtY2hpbGR7ZmxleC1ncm93OjM7bWFyZ2luLXJpZ2h0OjhweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0e2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6NHB4IDhweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94e3BhZGRpbmc6MCA4cHggOHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBkaXZ7Y29sb3I6IzU1NTtmbGV4OjEgMSBhdXRvO21hcmdpbi1yaWdodDo4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dHtib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7ZmxleDoxO2Zsb2F0OmxlZnQ7bWFyZ2luOjAgOHB4IDAgMDtwYWRkaW5nOjFweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uY29sb3ItcGlja2VyIC5odWUtYWxwaGF7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206M3B4fS5jb2xvci1waWNrZXIgLmh1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tVRldiQ0NBQUFBRnhKUkVGVWFON3Qwa0VLZzBBUUFNRTJ4ODMvbjJxdTVxQ2dEMWlEaENvWWRwbmJRQzliYlkxcVZPL2p2YzZrM2FkOTFzNy83RjEvY3NnUHJ1anVRMTdCRFlTRnNCQVd3Z0poSVN5RUJjSkNXQWdMaElXd0VCWUlpMmY3QXIvMVRDZ0ZIMlg5QUFBQUFFbEZUa1N1UW1DQyIpO2RpcmVjdGlvbjpsdHJ9LmNvbG9yLXBpY2tlciAuaHVlLC5jb2xvci1waWNrZXIgLnZhbHVle2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjE2cHg7bWFyZ2luLWJvdHRvbToxNnB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUNUa2xFUVZSNDJ1M1NZVWNyQUJoQTRVMlNrbVJKTW1XU0prbEtKaVdaWnBLVUpKc2tLVW1hVEZJbUtaT1V6TXlTcEdSbWxpUk5KaWxKU3BLU0pFdG1TcElwbVdtU2RPNzM2LzZEK3g3T1AzZ1VDb1dDdjFjcWxTUWxKWkdjbkV4S1NncXBxYW1rcGFXUm5wNU9Sa1lHbVptWnFGUXFzckt5eU03T0ppY25oOXpjWE5ScU5YbDVlZVRuNTZQUmFDZ29LS0N3c0pDaW9pSzBXaTNGeGNXVWxKUlFXbHBLV1ZrWjVlWGxWRlJVVUZsWmlVNm5vNnFxaXVycWFtcHFhcWl0cmFXdXJnNjlYazk5ZlQwR2d3R2owVWhEUXdPTmpZMDBOVFhSM054TVMwc0xyYTJ0dExXMTBkN2Vqc2xrd213MjA5SFJRV2RuSjExZFhYUjNkOVBUMDBOdmJ5OTlmWDMwOS9jek1EREE0T0FnRm91Rm9hRWhyRllydzhQRGpJeU1NRG82eXRqWUdEYWJqZkh4Y1NZbUpwaWNuR1JxYWdxNzNjNzA5RFF6TXpQTXpzNHlOemZIL1B3OERvY0RwOU9KeStYQzdYYXpzTERBNHVJaVMwdExMQzh2czdLeXd1cnFLbXRyYTNnOEhyeGVMejZmRDcvZnovcjZPaHNiRzJ4dWJySzF0Y1gyOWphQlFJQ2RuUjJDd1NDN3U3dnM3ZTJ4djcvUHdjRUJoNGVISEIwZGNYeDh6TW5KQ2FlbnA1eWRuWEYrZnM3RnhRV1hsNWRjWFYxeGZYM056YzBOdDdlMzNOM2RFUXFGdUwrLzUrSGhnWEE0VENRUzRmSHhrYWVuSjU2Zm4zbDVlZUgxOVpWb05NcmIyeHZ2Nys5OGZId1FpOFdJeCtOOGZuNlNTQ1Q0K3ZyaSsvdWJuNThmZm45LytWY0tnU1d3QkpiQUVsZ0NTMkFKTElFbHNBU1d3QkpZQWt0Z0NTeUJKYkFFbHNBU1dBSkxZQWtzZ1NXd0JKYkFFbGdDUzJBSkxJRWxzUDQvV0g4QW1KNVo2akhTNGg4QUFBQUFTVVZPUks1Q1lJST0iKTtkaXJlY3Rpb246cnRsfS5jb2xvci1waWNrZXIgLmFscGhhe2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3WVFsWk1hM2dBQUFXVkpSRUZVYU43dG1FR082akFRUkNzT0FySGdCcHlBSllHamNHb2N4QW00QTJJSHBtb1dFMGVCSCtlem1GbE52VTA2c2hKM1c2VkVlbFdNVVFBSUlGOWY2cVpwaW1zQTFMWXRTMnVGNTEvdTI3WVZBRlpWUlVrRW9HSGRQVi9zSWNiSUVJSWtVZEkvOVhhN25leXY2MStTV0ZVVkFWQ1NjdDAwVFduMmZ2NnUzK0VjZmQzdFh6eS8wK25FVXUrU1Bqby9rcXpybWlRcFNjTjZ2OThYZXdmQTgvbE1raUxKMld4R1NVb3BjVDZmTTZVME5YOS9mcmZiamV2MVd0ZnJsWmZMaFlmRFFRSEcvQUlPbG5Hd2pJTmxIQ3hqSEN6allKbS9USldkQ3dxdUpYc2VGRnpHd0ROTmVpS01PSlRPOHhRZERRYWVCMjkrSzllZmVMYUJvOUo3dmR2dEpqMVJqRkZqZml2N3F2OTV0angvN2xlU1FnaDkzZTFmZk1lSXA2TytZUWpoby9ONzkxdDFYVk9TU0k3Ti8vSys0L0dveFdMQngrUEI1L09wNVhMSisvM09sSkpXcXhVM204M292djVpR2Y4S2pZTmxIQ3hqSEN6allCa0h5NWdmNWd1c3ZRVTdVMzdqVEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpsdHI7aGVpZ2h0OjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC50eXBlLXBvbGljeXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCSUFBQUFnQ0FZQUFBQWZmQ2p4QUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFDZXdBQUFuc0IwMUNPM0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSUFTVVJCVkVpSjdaWTlheFJSRklhZnN4TVN0ckxRSnBBZ3BCRmhpK0M5dzFZU28wMEk2UlovZzl2WnBCZi9RT3I0R3lSZ2tTS05TckFhZHNacVFHd0NrdUFXeVJaSnN5U3d2aFo3Ti92aHpyZ2JMSDNMZDg1OTdqbHp6NTB6Sm9reXhYSDhEcURWYXIwcWk2djhCYkl0cVNHcEVjZnhkbG1zRldYa3ZYOEFmQVZXZzNVS1BFblQ5R0t1ak16c0FGZ1pzVmFDTjFWVFFkNzdYVW5yZ0Uxa3YrNjkzNTI2OFdScHpybkhadllSV0M3WXZDM3BSWlpsM3dvenF0VnFpeUg5SWdqQXNwa2QxR3ExeFVKUXRWcmRCOVpLSUFPdGhkZy9RYzY1TFVrN3dOSU1vQ1ZKTzg2NXJZRmhrcWpYNi9kN3ZWNEdQSndCTXFvZlVSUzVKRWs2RllCZXIvZWVZYi9NbzlXd0ZuUE92UWJlQXZmdUFBSzRCTjRzQUp0QUcvZ0pJRWxtTnVpSnliYTNFR05tWmlQZVp1RVZtVmVsbC9ZLzZOK0N6RG4zQVhoRU9PbzdIdi8zQmVBejhJelFrTVBuSmJ1UHgxd0MreVlKNy8wbllJUDVTLzBGSEtkcCtyd0NFRVhSUy9yZjVIbDFHdGIyTTBpU3BDT3BDWnpQQVRtWDFFeVNwSE1MQXNpeTdNak1Eb0hyR1NEWFpuYVlaZG5Sd0JoN0o5MXV0d21jekFBNkNiRzNHZ1BsZVg0anFVSC9hMUNrdHFSR251YzNoU0NBTUIzMmdLc3BrQ3RnYjNLQ1FNbWtqZVA0V05KVGhyTk5admFsMVdwdFRJc3Y3SnRRNHRtSWRSYThxU29FcFdsNllXWk5vQU4wekt4Wk5QZWhwTFNCWnYydCtRMENKOWxMbkFSUUxBQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTo4cHggMTZweDtoZWlnaHQ6MjRweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMnB4O3RvcDoyMThweDt3aWR0aDoxNnB4fS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5IC50eXBlLXBvbGljeS1hcnJvd3tkaXNwbGF5OmJsb2NrO2hlaWdodDo1MCU7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5zZWxlY3RlZC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7bGVmdDo4cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjE2cHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zZWxlY3RlZC1jb2xvci1iYWNrZ3JvdW5ke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQVlBQUFDTS9yaHRBQUFBaDBsRVFWUllSKzJXMFFsQU1RZ0Q2MHpkZndPZHFhOFRtSS93UU1yNUswSTViWkxJekxPYTJudDM3VlZWYmQrZER4NW9iZ0NDM0tCTHdKMmZmNFBuVmlka2YrdWNJaHc4MEhRYUNMbzNETUgzQ1JLM2lGc21BV1ZsNmhQTkR3dDhFdk5FNXErWXVFWGNNZ2tvblZNNlNkeUNvRXZBblo4djFIang4MTdNaWxteFNVQjVyZExKRHljWmdVQVpVY2gvQUFBQUFFbEZUa1N1UW1DQyIpO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDo0MHB4O3dpZHRoOjQwcHh9LmNvbG9yLXBpY2tlciAuc2F0dXJhdGlvbi1saWdodG5lc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBT1lBQUFDQ0NBWUFBQUJTRDdUM0FBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdrc1BXUjZsZ0FBSUFCSlJFRlVlTnJ0blZ1VDQ3Z1JyQUhOK1AvL09yLzYxWTV3T05aN21aMXUzWEFlTE1qSlpHWlZnZEtzZmM1eFIzUzBSSUlVVytDSHpDcGMyTWNZbzdYR3YzZXg3VWlaZDU3cmp5enp2K3YrMzNYL1IvKzNyL2Y3dlIzODZZK1R2S05jZi93ZGhUTFBjdjlxVTJ3WmQ3NHV0aDB0MTgyMWprSVpMUGNzSS82bldhNFh2dXRxdVUwWjg1bW54ODBTL1p6Z3BuTG5PdEhOdDcvb2Z4MVRLWGNTTnpOLzdxYk1RM2p1N3JOUW1NWVlkLzRzMmo5YWErUCtnR2FNY1pyYjFNL3RkcnZmNy9kMnY5OVA5L3Q5M08vM2NidmR4dTEyRzlmcmRWd3VsM0UrbjhjLy8vblArMisvL1hiNjZhZWZ4bC8vK3RmeDV6Ly8yWUs1QWwycmd2ZjRVc2JwZEdyQjUyYkF2QXJYcHV6am1pcUFWU0d6NWVEbUdZWHpoYkFabUNybm16ZGRwVVUrOFkxZEFPWWVYQ3REVXdWd1Y3WUNHSDZ1QW15TWNaOWw1dmtVYUJQR01VWjcvSjV3Lzc5Mi9mdnY5WHE5MzI2M2RyL2ZUeFBFQ2VNRThuSzVqTS9Qei9IVFR6L2R2MzM3ZHZybGwxL0dQLzd4ai9HM3YvMXQvT1V2ZndrVnN3b25namRPcDlQekgzVTNEM3ptV0duWlZYbjRqQ3FzN3dDMkJLUDQvOHRBemtac29XeDZYcnFlSFp5bXZwNEFCQ0JKaFRRd0tmRFQ4Z3pyWkNJcWk1QWhpQUNqQmZFQjJyUDgvWDYzTU03ZjYvVjZ2OS92N1hhN2JZQzgzVzdqY3Jsc1ZISXE1ZmZ2MzArLy9mYmIrT1dYWDhaUFAvMDAvdjczdjQrZmYvNzVKU3ZiZXUrYkwyV01NYUZiQWxwQk5NODVRWCtjdDZxb1Nxa1BBd3VRbEJWS3FHTkZTVU9BQTNCbXU3Z0M1aE5PZDE1blN3dkFPVVc3QzRnaVVDVjhTZ241TDloTkZJcVRzcDBHeEkweXNpb3lqQWprWS90R0pWRXB6K2Z6K09XWFgrN2Z2MzgvL2Y3NzcrUGJ0Mi9qMTE5L0hULy8vUFA0OWRkZng4ZkhSd3JtVGpWNzc5RVh1MnB4Mnhoand0ZEpaUWNBV1FJUExQSVNzTUphU3dpRDhneklLcndTeUFURTVqNW5BYlI1YzFkQlV3QmxzRVdXMGg2THFpWXNxRlBBUXhDeVJaM3dPU0FSeG1sWE1YNWs2NHBRZnZ2MjdmNzUrZGsrUGo1T0h4OGY0L3YzNytQYnQyL2p0OTkrRzkrK2ZSc2ZIeC9qY3JtVUZMTzMxZ1lEV2JseFJJcy9UcWZUN291c3hKc0F4WEEyR2M3VEE5WGRnZmRvSGJGc2o3NlgyKzFXQXJnSTFhZ2VHd0EzcXVwcW9Ic21jYkk2RnU5M3F1Z2dGYTlkN0xlRHRnS2ZBRkhCSitORUJ5SWtjSjVLZXJ2ZFRtaGhHY2dKSlNaNXZuLy9maitmeisxOFBwOCtQei9INStmbm1HRCsvdnZ2NC92MzcrUGo0Mk44Zm42TzIrMVdzN0pqalA2d3JhTUk1RTRSWjh4MnZWNVRTd2txdW90VjcvZDdUejZIRldzRC9xTmNkdzBDUTNxLzMyMWM2ODZUd0RWSWRidXk3M3pObGRoU0hiOEkya2xaem5tK0luQlM0VTZuMDMwMmFCRnNMaEhEQUtKVkpWZ2xmSTlqaHZ1NTNXNTNzTEFOWU54QWlEQTZNQ2VVSHg4ZjkrdjEyaTZYUzd0Y0xxY1pXNTdQNXllWTgvZno4M09jeitmbnNTbVlVeWtuV0VHODVXQnN0OXN0elNMeU1kZnI5UWkwOGlZMTVVWjBMbERHTGhSM281eksyajdPUFVURDBFK25VM3RrN1hiLzE2TkZiaGxvQU11WTF6akxVT08zQktlSURlK1o4czMvSjRnRm80VE01alBtdVJnMjhmb1VLS1ZTd28xNlRnQTVucHl3Y1dMSGdZbC9QejgvNzMvNjA1L2FiNy85MW02M1c3dGNMaWUwc1pqNG1hbzVnVHlmejg4RTBmMStqOEVjWXp3VFBFRzJjcWp5ZkhORjBNOGZ1cUVpYU9WblJ6WlpRTmg1ZndReUhnL0hER2ZKbzg5UTF6Yi9xdXU1WEM2NzczSTJYS2ZUcWQvdjkrZDN3dXFXdmEvWVRkVWRFVjNmaEl2L1ZpeXBzNllFM3gzcjQzSzViSlFTNjZ6YXhWR0ZzdmQrLy9qNGFGKy9mbTNmdjM5dnQ5dXRmZjM2dGYzKysrL3RkcnVkdm4zN1p1TkxCYWFDTWdVekMrclpSaUZvd3hVdUpJOFlNcWNDcDlPcHE1dmFnYVlVNmxHSkExWFFxZWpjaHc2Q2owR3c1bllCckd3MDFBMk8yMDZuMDRCR291Tk55VGZwL0Z3RWxoVWV5Nm5YcklLdzdRUVdkZHh1TjJsZEw1Zkw4MzlnU1BGOGFodS9KdkJPNDhDUFN1cU1mOFZwOS9QNTNMNTgrZEx1OTNzN244L3RmcjgvMzkvdjkvYjUrVGtoUEozUDU2bVE0MzYvaisvZnYrL2lTZ2J6ZXIwK0FaeC81Kzg4YnY2T01kYTZTNXo2a2QyMWZZQzlkeHY3Y0lKSjJkOUFPUzMwZlBNenlIaVRNOEI0REY2WFVsWUhwNEtRVzNXKzF0NzdNTkIxdkdIeFdxN1hhN3ZmNzgreTUvTjVBK0gxZXQyOXh1UDVkYll0eWFSdTRBa3NiUHE2OTM2ZmpSelhSeEJiUHIvYitiMTgrZktsalRIYUJCQmZuOC9uMC8xK0gxKytmQm5uOHptMHNCOGZINXU0Y3I1R3VCaE1WazBFRW45UnNjdGdWaE0raXhsSnRNQTIzUjhCNnl5c0FzdEJPZ0ZYSUtLQ01JZ1RvTXFORXUyZllNSDd6dGM3MzJkUUtrQ2oxeXRBWnRZMEt4OHBJcjhHR0orQVQzVisySGlyaGwrK2ZCbVh5Mld6NzN3K2IxN1A4cCtmbjgvdFV3R1ZsZVZrVHlVYjY4RGtmYXlXWTR6eE5SaWhVNEVwTEpQWlZySyt1N0o0L21nZktxZUxXOVgyUkVXbEl0TDFkaXluYkREYjMralhnWWpRcW4wcnJ4V2MrTmtJTFA3Rjd4SWJNdng3dlY1M3g0MHhubGJXSkYxMlpTYWcvTjBwVzZ0K1p6bU9NekhqYWpLd0Rmb25kNzh6WVRkZnExOHVwOTd6cjJxOHYzSWlvQnByUnRCbDBFWjlvZzVXQlJHT2RPSGpJalhGN1VvdEZiZ09Xblh6SUp5ell2akc1SVlnc21NT3hIa3o4T3NNU3JWTldlcTVUOERhT2NiRXYxT2Q1cmJzOWFPN1l2TWV0NjNFa0YrK2ZNRXhxK01SbDQvTDViTFpOLytleitmblo2S2F6dU1xWFNRVk81c3BKWGZsSEFJemVzL3hKc2Vja1JKaURNb2c5ZDZWZlJycVhNcjZLcFZWMjdqUndKYWNHb3ZPQU0xek1kUU1ud0sxQXViSzYza2RDQ2h2STFDN2cwejluZi9EK1h6ZTJWajhIN0d4NFA5ZHVRbHNZQ3JxeU44WHFHM0htLzEwT2ozancvbitjcmxzdHVNK2pQbW14VDJkVHVQejgzUHp0MnBuMVhzRUhYL2JuUGFWcVZtaDB4d090MG82WExMQUhlUFVVMjAzd0hmY3JzcEN3bVYzVHJ5QjVzME1zZWVnOTd4L0J3ekNqQmxiQitwUkFQbGEwQlZRdVQ2VjZRSGRCbGozZDBLRzE0N2IrRHF4UWVVeW1ETzQzVzRkUWFyK1RJandtQWQwejgvaDY1dmYwL3lMdjNQYjVYTHBydS95ZERvOXM3RVQwSStQajZkS0s5VlVFSWVLV1FXUEFPcko4TEtkNHZFK3Q5MVkzZTdVRmxXYXRnMlZ3Sm5iK0hQbXR2bS9zZks1OS9PYVdGM3gvZVAxVVBIdkE1RERZRHBZWGZiMGRydjFWMkRrQmt4dHcvdEVXVlZsWFdkQzlwRllzNS9qZmg5ZFMvMTZ2VzdzNmxURytUZnFzeFNKSHhrWFhxL1hkcjFldTRMc2ZENlAzdnNUM043N0RrTCt6UG01alNkS0w0elIzQXhRZDZySGtMa1lsU293c3JxN3puenU2d1N3ZHNNSk9YbUE1ZkJjanh0Z01HQllIbHI1em9raHRzTUNUZ1hMUU9XNFhDNmRFeUVNcHJMOG1BUXpYUmdkdWl4Mnlaem9yeGtZc0RuM2hCMVZlTUxHc1hzVnRnbDJwVzhTM3N2azB2dzdSNGhOYUh2djRjQUNsNUhGendJSDBLYzZ6dTRYakRQUi9qcEFWeFd6TzFYazJERGIzdlRjeGVHVTFpV1pIa21JRFd6aVdLdmlyQ0o0RHJhdnM2SUovR0c2Y1RxV2RYRHkrZkFyUURWVmtMcWtWakFvWklJVGRtbUlxWHdxYTk1TjMrTUdZb1pRZFJWTk81M1kxeFJraE8xNnZZN2V1NTA3Q2E5bEpuYkdweE9lbVFoU3cvQVFzbW1wNXpVOUJpVThHNnd2WDc2TTYvVTZQajQrZG8wQno0Q3BnaWtuVFVlRHF3bEtCbWczdTRPVmpyWjFBK3JBY2dhZWpXcTZlSkN2Q1lGRE9OU3dPZ0hYNEVRUnc4bHhiekRPZEVLNmdaM0hrMWIrOGcybzFKRnRLWHl2L2ZFZFRYdVdqV1hkQVppQnA2QURlRHJDRmlpbTdCNlpGbmVlSTdHdm0vUE1rVURYNjdXN3hJOGIwRDcvdjhkQTlxZk41b2FDZjc0V1pqSDBtZjFjbWZZMVkwSlVGbVZyVFd1OHV6a05jTHRFajd1NUZYQlRrZkM2R09BNXE4WU14TzhLVnZGNnNBVkdkY3JVYnNLT0RjUUtrTE1PTWRtbHh1bTY0MllyUG0yNkFsaFpXMVlCMVIrcnJHc3dFOFRhWUFXZVVNeGRmK1dqd1N2WjJFZjN5dE95Zm41K1BwVlBBYXFPbjQzTXROQnF2bWpqeGJqTTRsWmpaWTRncU5NSTVrdGFXL3NZS053Uys5bEZRekdpaG1NQ0tQYTcrWjBWNkViMEdSbW9idHBYOEpsald1NUZNTE41amE2aEc5a3dRZ1pxZjUrMU5INVV4emtGUmVDZFdoSjhYZGxHVWt4TzdIUmxZUm00bVZPNDNXN3RlcjEyVFBKRXcvcm1FTjNMNVNLSElXWmc5bXorcFVvS09ZcTViSlRKZFgyZ21lMVVjeE1aUUZhRVFJbEhjdDMyTStZMUJ6R2tHdXpmaXlBTjl6K3VncGxaMXN5bUNyRENZWWtHeERUcEk5UnpCeTBySHllRFVDMW5XYWVVYUQ5bjR4a055WU1CRFp0elozQisrZkpsWTIxWEZET2NBUkpsYWJPeWlTM3VDcExJOWpyWmpDRGthVnZjQ0Nqd29nbktTaFdkelhaV2xaTXZWVGdEOExwcWxDTHJxZ2JjQitxWXdyZ0tZcFQwY2NDcWJLeUNWYWxrRWFibi9GeW5vZ0NyUEtmcWY1MXhKN3NHQjJaWGNabXhvU096dGp4MzAwRFppN2EwLzJBSVIwVWxCYWc5U3VEdzZLY0F6bGFCN3ZIWnZXcGpLOTBkeXJxNmJLeURVWlFiUjBCMDViaUxRa0hJY1NVbWdJSytTd3VxZ0hDbm9pbzJSUVUxeWorQm5CeTlwcGhWS0xHeUM3WnpGSzFweFdLK0U4SWhWQ1dMTi91THRuVVU0YXlvWUxvYUFOejhGZHRhU3ZZNHBWMEJFVzJsczYxY3pxbGxCS3BUeUtnTUFocloxY2RjMVJST3RQbXZXTmtkY0taN1pLeGFXamlQTEpNcHA3T1pLeEErcnFHL29KTGp4ZjBwbkpscUxvRFpvM2d5VTBtS0d5czJ0YUtlY2ovZDFDK3JKU3BsQnFsVHlBcWdSK0Q4S2pLbG1STDJndFVjQWRDdHNMK2lqQ05UMW9xcXFrSDJPSEViRzVzREZuVWc1QWEreUxvdTJWVTFwdGoxUzJaUXF2MU9SWk45SVd6UmZnYVJCeEtvQkU4VVd5cWxKRnRySWMwQXhOalNqZWQ5OUNUWS9YRGZTekN6NU0wSVpvVkVzV25QRk5Uc2w4b29WQzFUemJHZ3FGWk5EU2dWd0tLKzFzR0RNS3F4WkNXR1ZNRHlzaUVyMWpWU1FKVVl3ajVpSE9sVGhkSHQ0NFNRZzlDTitubDhEOTBOTUlnQWRncjQ2SnFSaVI5STh2UmRGdmJyMTdtL3l4VU1Lak5MTWlWVUFEd3UyQ1dHaGhpK0Y1NVRXTTlNOWNvZ3ptczFkbk00dU9GL0xBRVlXZGNxbk03eUZteXEzSWZ3bU9ST2Q3WTFpRld0T2pvWThUbzQxbVRWNUl5c2dGRnVSenNiV0ZHYk5JSUpDRHYxZE9vNGxaRzdqV0J3UkZ0VlRLdVd5ZUNCeUpLT2FuOG9aM2VwOVhkZE5sMHREdWF5d0x6OWNYUFllREFBMFNwa0JPOXNiVmNUT1ZXbGRQdjR1eXpFa3p4SHRqdm9uSG9Ta0ZFV05vbzFkOERoY1FwdXRkMnBwTm9uNEJ6b0FpSjFoQkZRZzBkVnRkYkdISERRV3VzaG1ORVF1a0xNMlFPMUcyWThiZ1RYcUZoY0JKajdFalBnY1B0czhVUzhxUHBQQi9kWHpuT2g1WjQzOHR6SDVlYzZRZ3JPS3JSUmZLbXlzQm1VREIrUGhZYWJNbFZQRVIrR0NTSVRUenI3YW0ydEFySDNiZ2NFelBKbStjcjVqSjRObkhORkRWckZYY0k1TGU5azVKbncrYmVkYlYrRmZSelpJSGFPT2FPc0xZMC83VUdzNThEanJHd0tNSU1GSUd6T0VXMS9qR3NkQXRDTjZoRUFJNGhCZTlZWGVSUk9CU1ZQQVZQQXF2SU01Yng1aFZLV0FNUDZ6QlJ5M2llc2NyaWRWZEZCaW5CeFhEbkcyR1JZMlhiQ3ZwMWxodkd0TzlCeHU1aDkwOFhRdTQybG5TQXJNRmRpek1pbTh1d1JDeFBHbm5PUzhsd3BuYk9pRHFUQWpzclJOL1Bjb0FTY0NiYUFDcVZNNDB5bG5qalRCcytid1dsQUcyMy9VS2Jka2l3S1dJUVBHeldhY3pwb1NseFBFajgyMmNOV2twUzdGeXpzRHJxcGZncEczamFodzJ2Z2JhU1FBeHVMV1pZdDdKenlOZThKb1pwTkFjdkRGT2R3MHdxWVQ5QUsxclp6L0RkYlNsTFBwMHJ5SXhnUUpsSzlBWmxFcTdJT1hwb2hnOVBJaHJDbmc4OEpzT3hpVjRaV0FZZmc0c2lreC84a3kyWjlsODYydXF3cmZzY0lIOCt1Z1RtVkd5aWRkZVZZVWdFTW40R1p6ZzE0RXdJc2g5c3gyY0tLaVdYUmV1T0U1Z3pHT1FnZGxSS1ZWZGxldnFiMjc5WHEwUW5zdHMyVkRhQk8wY29lenNydVd0SEFwdTZzS0c0SUJoTjBhR1Uya0xyTUtHUlROM0htYkNEd0tWMTR6dmtNRURHNFFmWlZzcFZsYU5VMm1oYzVURVozTjFoL3pxVGhldUxwVzA1WldUR1ZqYjNkYm5ObXhLWkJuTjhKcWlkYVZMS0FPeUFSTkxTK01CNTRaMitWYXFvTUxLcm9WQmxuZ2VmblRQQWNvSE5XQ1N2bGZBOENJMEhFbUJOQm5CbFh5TXJ6VTdBN1dWbTk0UFBxUTJnbXFLeCtXREdzbnZpbG1jU09CSnFPSzFuWXlBSXp1QXllc3EzVWRTSzNLZldjWUtEOTVIbWZZT1UzcXNlcjJDdFlFVUErRnBmcWROdmdQQlpVQmhEckdPTlJWbFFzaDhyTGNhVUN5a0hHME9PVXdUbExCcnNoNXNvRU1HZXppMUU0SFJWdDFpY3A1d1pFRlhkaWJDa0c4WTh2WDc1c2JPNEUwaW9tOXoraGpTaU9meTNEaHBYSXRwVmhFK1VHUWR2b1dqdENobXJHSGY0WUF6S2dCTm5HdHVKeEZDZUdkaFVBZlFMTEs4a0JZQVA2Z3ZGSlphak1HM1hreWN5OEt1QzBxNEV5eW13dHdkeGR2Mk0wbUlCdEswTEtuZjY0MGowMEF1cTRnVWtkV0dsaHMyMnFKYzZkWkNzTDE5b3hubFRKRzRTWVZSSUdwRDhUUEZCdU02T0VsYlMxcGxkaWQ0bUdBeU42Wkl1cGJDNWJYSk45ZmRwYlRoU3hMVWFJOElHMVhJWUJ4VzNUanM2S1Fvc0tjeGZ4Y1FtZG53UkdNMTBHbkZjQ3kyWFl1bkxNeUFrZGdrNG1lUGljenNMeWd0aGNCdXQ2Z29PcVM3WVZGWEFETGphb3NCNnM2b2ZjWldBWlNJUllxU1VraXpZd3R0WWFiM3ZVT1E5dzJIUnhJSWc4V3dSVmVFNjh4aTRVdEwzelJwaHhwbHp3dVpyY3FZQ3ExSTNqUEk1ZG5KSXlnRW9oTWJQcVZKU3pyd3p4QkpUczV6TitSZVVTZ3hpa1BRVkYzSlZCZU5ReGJIRU5yRU1OdkVkRlpWVjlsSDkrT1JHRXNOWlFweVROYzRDM0FHN1hGNG5nenErRHJPMnpidWFhT1hnZGFGY2RrRW90b1NGQlZYMnFKMEM4T1daZUc0S0dscGdoQTBYZlRPUENxVjJxcXdRMjZRV2ZGMlBNTGhJMncxbFZBYTJhUHNZZDB6YTI1TVFSd2djWk42dVFEQ2krWnhpRDRYRU0ya1p4T1Q0MUZuWm5hUmxjcFpvdXpsUnFxZGJRVldvcFFvU0I1OFJWNTBsQk5ySGkvQXdYUzVMcndEVmxwWTNGYzNCeWlZR2M1MlRyaXN0NmtPWGR3SW5BUXRKcHA1UWNoeWFxdVlPVjdTdStmeFZNYVYzZGMwUkUyUzZtVVkwZ0x0MnBNY1lxcktJUTl3MmwxZ3BRVU10UVljbW1idDVEVE54ZGhuVUNqUXF0Yks5U1VTenZyQzBtbWhoRTFlMkZTMitveHlweS9aQVN1dGttdGp4M3ZjQkMyNFBYNjVuYnFrQkNSaGZqUzlrSVlQbmVlOGNNYWdWT2hJLzNUMWZBbWR0QVdac0Nzd1RKQ2tRVk5hMHFXS1NLUE9wSEFVaEQ5RHJiVmN5b1lrd3FodmgxN3ZZQWF5WExReUtHWWR4bFVERnA0OTRyQlhSallnTzE3RERZZXROSVVqL2V6cDZTMGxubHBFd3NXbUpNa093c0tYZVpLRUFqSUhuMEVRSklTYVJCY082VU1JTno3cC9iRWpqbnc0ZnQreG1EdmtzeFg0RzJySXJpczdxYWVLd0FGTVAyT2k3bjRjcml1Wnd0cFNVd3BmTHhTbk9SU3JJcXVzYzVaRmFYeXNxUldqaVoyRHlBV0VJTDM1dFZTb1FFbEZBQ2pPZUdHU0U3QUhFUWdkby9MU3ZDT2dHQnZreHNtRGJ2bFMzRnA1dmhhQjJUQUdxUktyS0tNcmhMVnBhR3pFVmpaME9ReERoYUNUQStReVJSMWQxNWFRenJKbnRMM1JpYnNpcGpHNmpsZ0w0eXFiUzBzTllnMWU4NHZoYkJWckVsSzY0Q1VjV1lYRGZLeGhwSXV4aVZKWlV4c2JNeS91UkJLVE5SUTRrUTNMZFJZTFMwckpqUlBsVFBxWTZnZEpzRURjK2FRWEFuK0hnc05VQ2JSdUYwT2owenduQTdiV0RrYmhPNUVuczAwcWVRaFMxbGFCTWw1TS9jQWF4c0xGOHJLeXFsK1RmN0VMTEVHdS9peGlpbWRDdm8wVGpmcGpLd2FnZ2VuNGVoNXY3TG9rTEtiTHV5dkhoY1pHOGRoR3JFRHg3SGc5M1pwcEpGN3FCcU8zaVZ2ZVhFRFFOSW56ZW9lOFlxNmVQYVpCWjJKdmlNM1cyVUFHb3Rla1JDQUdxNEVrRjFYM0RPblIxMXlSc0JMMXRSYTBQVmNaaU5GWFoyYzM0RnNrdm9tSW5RUTZsenBKb1piSnhrNDNOd0tKRkJxdUpTc3JCeUh5ZHhLT25UeFFBU0JtUzNqK0pNbnNIU2xhM0VjNks5VldvSlZuOXpmandPTTdocVlBQXFKUXdFMmEzbkE0OEoyUUdlZ1JrcFpOaXZTWSt5czNFa0tkNG9KSXdzdklIbDNjV2dMdDVrNE5INk9tdExXZHB1ck9rd0VNdXBZYzdlTXREUmhPY0kydWk1SmhWSXpYekx5dG8vR0FQdVpveW84d2tvZHVWZ0pnbEN0N09oR2JnSUQ0TXE0c2krNjN6VVMxRnVGRlhGbHF5YWoyZW1IbExNY0JxWXUwRk11UjI4QmJCN2xPeFJNU2lDUVhGaENLdXdraForcFlEaUdTZ2JzS0tWOE1pU1JzdUhTSVdNOXJrbFJpSWxaWnVxWGpzUUs4b29ZSk1ncTNKS1dWa2hIYmhzVnhGVXp0aE9XUGtZaWpjYng1NElLc1NkVCt1THIzY3JHS3lvWWdGaUdSOWlCazRrZmxvVVgrSklsUVJRcWFibXBnbmhxdHBRcGI2UlZRMVdINURuclM0aEVvR1pxYWVyUTJkaEZiejhYZVB4U2htRGJvNzBlSVNqb29yTzJ2SzhTSlhJNFNVbUVVNHpXS0R6VUR0V1RZdzd4WGxiU1RFajRGUmc3ektuS29HUkFMdjBHczlUZ2MxQnBDeXdHWlJRQXRxVnoyeHJCY0FNekVwZlp3RlNhMkc1VzBRQkZqU01hcFdBRUZhM0hjR043Q3hEekVDeUlrSjk3cXdycVdOVFdWbzg3NlBQc2pQa2oyd3Zncm9NNWxMWktNRVRLVnFsL0N2bldWRmlGYS9TekpVUXdrb1pzcjY3WTZ2bFNSVjMvMnRtTlRPWTN2bmF4WXdNdW9QS3FkelIxdzdJcUh5bWxQeGFBVGhmVTdLbzJaWFlqNEFZSkhMK2tOZEt3UlFZRVNUUmE1ZnNVWi9yVkMxVE1UeVdWeVlvcU50dXphSHNNeXYydHZvYXJ4ZGZxd1lnVTFheEZvL2NucWwxRkdzcUsrdUFST1Y4Qlg0R1U4V2NaVEFUaTJxN1FjeWkwTzBWK0doV0JNTlJVa244SDFTc1dWRTVCeTNHaTBFQ3FVZUpvQmZBdERhNGFta2RYRzM3QUdQNUdnZWI4NHA3VWF6cG9LUnpkRnplUThIa29IR3hwckt5L0hwbTV0MTJwNDdKNnhUWURFejd1SU5FWFN1eFlYdkZza1lBYyt5U3hIOXNmNWZ0S3pVNklid1ZCY1VHZzVlNUZNQ0VYU0VyWlIwd0dheVYxOXdvTTlndVBqVHFKZFZUcVI0dUU0bkpuTGxkV1ZrRUNDWkxkMlZMRit4dGFtZXg3SXBpcmlTRFVwdnJwbjlscndHTUNIeXBwTUgrcHM2TElMc3VGR1VqMVhFT1hpcWJxU0hQVUtuQ2xwV1Y2OGtxdFVSVk5EWTRUTmFvY3lrb1llVFU1bmdHRVFhL1MxRG5uRTRBZVhNY0tqSFBBbUZWakNCRU5hZXlMVk5IZnIzcHg4eFVzdEo5NGhJcGZINEhLRS9lRGFBcks2bFN5VlZGYmR0MWd4VElWazNwcHBWbEZYaTRwRWhWQlRPYnF1b2hVODVNTFhuMWlhaHZVa0hKalNDTWMwMXRMRnZlVlZCeDBEb2RNNmpmdEN1N0RPdEl6WXhyYzBxcDFKR1AyYXlZRnoyR2I2SHZNck84Y25HdFY2R2ptM3VJbVNmRDJHcFdLNnVvd2JaR014RktRQ28xcE9NdGNNWEZwUnN0K2hYR29Bb21GM3NTVEJHZ1RnbGJCS1d3c1EzdFpxYVlTcDBaMUNpbVJEV0ZjQ0pVUFlKMDBCSTVGa0tZTm9pZnVReG1OODhTV1ZYV0xNYVVxcXFnQzBCbVFKUjZzazN1OU5DZjZqWUxYeEFmcXNZRWdWTEFoUlkyQXRndGZsWk5GbUZ5aHhkckxrQWRXbGs0RDg4TTJpeEh5ZXBJZGhNSHJHL2lSMVpHdHEwTUdwYkRiUlBZT1hlU1kxTTZOeTRac3R2R1NrdEsrWGJGUEFUajJEMzcxc2FQRXNBTVhoWHJzWjBrbS9YU3RraGhNeUJmc2E2dVhGWmUyVkNlK1lNcjErR0tnd3JReU5ZcTFWUnJCK0VpekFvdzZOc2ROS2N5VkVrWWVNNzN5czZxNGtBSHA2QmlGa2xUa0lyVkM1b1lWN3V6d09HQ3o0VUowU3RxMmxXTUp5NHd0YitSZXRMNnRaRmljbkptQnc1VWpDdlhYTVpWSlgyTVFrYmYrWE41RVdkNzhWejgvSkVzTVpUQmlLTnpzbTFpbkxSVVE3NEg0TmlkYXFJNjhqNXNBRmd4Y1J2ZUM3aWVMSlhmUVl4alpaMkNzaVdGZXdaWEptQklsWjF0ZHRyWDRoU3VhdGVLc28vUlpPdE9LVzJubXExb1R6ZUs2ZFJXQVd1Mk5SVmI0aHEwU1htMUd2dHVnSHJicjVJWHFtU2t0ZzVDdURFMk1TbFB3c1k1a05FMldwM0FxaVpiV1ZMQXhpQkYrMmlCWmJ1Tmo2TUI2cnNNTEM3Rnlhc2FZRHlvN0trb1B5RXR3M3BFTVhmUHZ4QUppMmpBUVFnanJ6MHJMSVpTV1psSW9OaHdkNXhLNEFSOW1ZTmpXQWFMcm51SW1KZUJWTjl6Qk9ST2JWdmJyK21UVGZGU0VKTFNSbkhvN2hFSm9JaThNRnFqeG12Z21GNVVSWno0ekxGZ1paOEN0dTJYN2dnVmNjS205Z1Z4SXNPSHF4WGdOTUtuRldaWW5mMWRCbk9oYXlYcTE3UXdGbFdXMDllTkt5VkpGbVhxYU9OR0E1YUNlZ01iSjNVVWtHWTFpYzNuS1dnanE4cWZWWUdRRzFnUnQ2cnM2MmE2SGlxcVVPcWRlc0s1Tm1YNG5Hb2ZKb2lFMWQwZEY5bFZWa3ZUMS9rRUVhYUNvWU93RnBjVmNvTE0rNzY2OVB4QzlyV3FrdEgwc1dVWWxkMFZDcHVCWi9zdFZSY0dneTlXWDIrVTFRdGhpOVN6QXFTeHpac3krT2lGekJZbnlTR1Y2R2t1NDRyRDhCQ09aQlYzQnZENStBS1JITndNRXNCNkV6SG5KcGtUQWVpVWxFR2tjRUNlQjZHRFpUcDVZRUpUbHZkcmtueFlqVGxsTWtmTnRYd0RqTTd1VmpLNUpYVVVuNDNycnFwSzJqeXRheEhXME01RzhEQzhydEhNWXM3S1NnZHVWUU1HVFlGcUZ2VlM2cmtEM3NESjQ2YWZkWUZ3b3ExMUFPS0NCTGh2d29VZ2M4SUdBTnljUjZrblpyZEpQZHN1eG55amZkM0ZvdlRsUk1kRWR0T2w1Q01WNUVIc1hRQmlzN1RPd3ZJRFphR2oyVm5wYmg3Y3BLNjNWd1lFTUx3cWJqenlsNjk5c2F3RkZrRjF5cWpVVTMxSGZDNnNXMVpGVkZ1WFZYVmd6OWtlRWF3MHlzMWxXZm0rYXpRQVFTV0EraEtZVmZzWmpQbmNBY1VCOW9JYXl5L1VaWFJOY2tER2ppNzdHc1didkJvNnRQcldQcU95VmtCVXErSU5lcXB6TmRZcy91MGlmaDVxbXBxSVcrMzNKVlNVY3dZNzBLTDRVOWxZZFU2bGp0U2xzN2xtZmk5ZzNZemVRZlZrYUdGYVYzT0RDbmFEMk44d3NFREZrbEUzUnpNM1pnaGRZa1dIc3N6cTcwRkllY25La1ZrdDhlek16UnE5YmtHdUtvalJMQlZTb2QzWTF5UHFLZ1lXN0pSUVRQVnl5NXhJWUxqT2d4Z1Q1MlJLSlVZMWRPcklpUmQ0ZnV0UXgvQTVBY1NtRWp6MHZGV3JrTHp2YldBdTlIT1diR2d4RmsxVk5UcG5CS2s2VGd3aXNJL0hjeFlYUDF1QVdPNzJVTEZsQlRxK2FTdTJWVFVzNmhyeE0yQ0YraEVvcjFWSUE5Wm1GVWFhYjFsU1NnWnNWczRzeHpIbFZMb0pIcjlINERoT05Ua0kxWEMwL3dpWTJOb1dBRzVSbG5IRm5xNm9MY2NwUWRkTXVKL08xN0pWQTVPSExpMEJxQ3p0cTdZMSsrdWNDZDk4cUxJOE1JSEJWL2NLanhRVG1lM2hGQlMzTXlDcW5Ec3V5bTJvODBIanZGRlR0clVSbU5hR0pzbVZhaEltalRzVVhLdFFaVEFWczdNdnY4LytmelVyWkFYY0xKNk00a29lNlhQMGI2U21XV05EenlVcFE4YmwrTHRXeDR0dXFaMzZjUllWM3l1VnhQTnd2SWlxaVFDU211N3NyZ1R6UjZua3locENhclh3RnkxdkdkNWlQMmNZMDZsRnI1TmpoaGcxWTYrTkIyOGZ0Yks4M3M4cmY3a0xKYkt3REZQYkxnMjVhMEFkWkpFaXFyNXBoaXhLTURsUlV0Y3NzcTFocmlMcUdvSCt6ZU5nVm05T2VtanNFVFY4SmRGME5IbmtJRnhXWTFPQjRZcnA3cnRXSjdOZ0FBQVBYa2xFUVZRM29OczVucGx5VmY4dTJGb0x1MUpySHZlYVpXUWpxQWtzaHRGYTJnenNTRzNacGtidmczSGFmRjlzbFBQbGxkakZsSzgwR3lzbThNcjRNUGhuZU5XRU5QR2pBSXBtaWxUUEFUZFRSVFhsQ0JZSFlBUXVQd0EzNnhJcFd0R040cTNZMk1oaUdzVXB1U1NubEVKUkQ4UG9yQzdDRllWdytGNTFxVGhnYWJ4c1R4V3pDR1kwWlNzYjNsZnFBeTBPUE5qTnk4eGlRUUtzSFlGUTJIQlpWdlZiQnVxM20xb1dLYWpxYW9uc002dVpVcjZDalhXTlowbDVFM2gzalVSbWE2a1AzTUpJaXkxTG0ra2FoUXE0MU4yaVpqYTVzanRsTFlOWkhackg2cVVHbTR2TWJEcDZSdzJDRm12dXlGa3JCY0N5TXRGcUJhRUNtc0hvSzlCWjJMQS9sSmNScVNhRHFuYVdiclpkR2F6M0RMZ0l2QmxuNHdvR3p0YnlKR3FzbHd4a2hoSHJUalRZRlhDdE9vS1M4dUxkb2ZWZEFiT3lsR1U2bmxZcFhXWnRzNG5YQnE2V3hKaXRNTm9rSFVKbmJuSnBsUW0rYUdwWTJhNUdNVjJRRDFoUnViQlBGS2R1bWY1T0hrTEh6MEY5bHVFNWtqQmpSYTBuRkU1Q1VHcUh3MzJNbWpaNnhrZ0lOVm5TbloxVlpTdEsycUtsUmFMbFFnSzd1VHE3SkZYSndNKzNTT0VLeWhaTkkrdEowSTVxTVl5OWsycUpEN2RWV2RxS1hhMENLTlIwQ2NqZytCMklZdTJmY0JaSlprTUZnTTExcjBYOTJ3aWxnaEZHZ3pWbmV4bHFCN3hMOW1TMjlTaVlVVlkyblhPWmpOQlJzeURzUVBSV1c1aHJaNFhjZEM0SFZXUmJqZ0pyNHNGb2ZLNVN6alE3cmhJMVVlYmRQZEViajZzcUl2VFpRWjV2YTA4ckFCc0FXMFV4ZVd5dEFrN0EyS0o5WnB4ekNpb0IyNFhGdFlBZVhZeHI2YW5TcWhMZ3BwRXFXYkd3THVuVGdyVitJaldsTDI5bGphQWw0RVFNR3NFcnA0YXBlWmlxdXdSWExYQXFPQ2VydTMybW15ZGM2b1dUU1dwRkFHZHplVEI4UlRIVk1FdGxNOTBDYmJRQ1loUGpxM2VnWXIxRkdkWUlRaml1REdaNXpaL0F6b2JLR095THh0aTZjNFJ3dHYyYW55V2xMSUNubExoeEpSWHQ2QTVlYkRCV0ZOT05ieFdaMmQwMm1udTRTOVlFQ3BlcHBWMXpTV1JCV3hIWXpWSXYxQ1hTb3V3cXFYM2pCQkJEWmRZUWJwVFFXNFpRbFM4cjVrSDRzdVNSbWcyKyszSk4xMHgxUGFBbUVrbXRZbEVkZUdwSkVNNmtPdUNxQ1IyMm9TdWpqNUlWMkhkVDB6ajVwckxLVGpYRkFQamRRbHlxN3hJQnhBUVA1eU1jekc0VnhBS3cwbjZpbFoyUUJjZTJwTHVsa3V4eHFub0l6RmZncXlxamlsOVMxVk53QnJGbWV5ZW9wczh5T2paVXliWmRmUzhDdWFUSUp1bXpzNXRPRGFOdExwRkRRL1BjSkd3ZUxobWVMMW5CMEtxaVVEU2NzaVVWRDg5RGkzSHRyS3RTVUx3M1JMaXlnWkQrN3NGOEpUT2JnWXNyR3ZETlVGUkdsMWl5MExsMVlrVWMyYUpZTW9nOTIwSThxVzZZRENnMU1xazBKSEpGS1hrYmdiUnJlSStxcFlOT1pIclZjRFViYTdwanNwaFNKTnRLNnVwZ1JOQVZvT1MwbXVnQmVONGJJWmdIaHVQWi9zMUVOYVg2S3NWcitZTnJoMU5iN2lwUjBQRTV6Yk5SZWdDYnJIUlV3NllmMDdkTEJKbDFmOEtCOWFzMlYxbk5xQXNsNjJMQkJoZWh3YWxlcmtIbUIxSkZJRVpLU0V1c2RsNUpRajFuSmxIWFNDRjM0MmdKOUNZR3JYZWxrbkpJWHFWUDhzRCtxdHBsQ1IzWEgycWZLcTB5Z01wK0tuVmtLeE5sWjhtMllrSWxWTWlDblhVd2w3cXpuQktTdlF6M20zUHQ2b1FiWE81YjVGaXhDaC9mSHhVUVcvQUVjSzZ6Q05xS1FuTDlzeXdxbUt1d3ZxU1l6VC9hUFZOTnBWeWh2UlcyMWFxY2lDc2pkV3ZCd0lMVXZoNVZ5Q3piV29DMXBKako2ODBDV3NsK3VkS0I2VDVSd0cxbWxvaG5scGJnNDdpejVVOWhhMEZHdG1STEZZQnRPOTl5OTdBcDB6K1pEVEFvZzZrU0xac01IZy9JRmtrZ3A2Q3B2VTJVMGNZVlNkbm1randCZE9tWGJ4VFdOV3p1SWJpcE1pb1Z4RWNrWkVvYWhTT2l5Mk0zSzBqY0MxTGhWRHdhcUcwWnZrY1dxQ25yRzRHSXh5a3JxbGJXZHc2TFF5QmFaUjhIbUxSSWhRV3NIc3dENDJaWFZMTmtmOWwrRmxXMEhWUTJsd0ZzQy9aMUZkemxRUjBLYVBmbytGZGZ1Ky9kd1ZSSUN1MUNHUjdBRUlpQWhjK0FaVUYwa09CYVB4bVVxZzRpNjR2UW5VNG5GRFlKOU56KzFmVlh2ZUg5cW1yK2tQSUx4OG9LY1JWL0JGYnhiRTBKTVQwa1NENHc2TC9sTlk4b2NzcWFnVmRVM0EzTWp4aHhjR3VxenNQSDRpcnBhb3cxcTZPeXJWanZwOU5wYzU5RTkxTGxkYm9ZVnpKV2RpbVdmQVcyU05FS2NEYVgyRm1CTExBL3VLeGxtaGg2MTNJczFVUlFBcGJLZnR0d3hMMDJxNk9ueDVwUXhTYlBvakFnK3Y1aEFuTjZMSFZSRFhJc3ZLdFJqaVMwcUpVeVpUQVhWYkFLODJFbEZKV2FRZFZvcVVDMVVudDdCVmFUUXVkTTZTdXFleGpRSk40KzBpY2F4di91dGJLdjgzRVRiVDhIOGdqY09LeE9KbWJVYTZPT1ZYaHQzZEZZNnJIdjlYb056RkxjZUVBMW84K3BLbTBMQUhQSFoycllLakZxMGhmWkZpeHNxSEpnRDNlRDVuK1Uwa2IxbUZqWGtuMmx2TVNTT3NORS9DZElBS0YwU3l0cTZ1ck9IVU41Z3dnNEdab3NnYm1nZ001dWNyYTJxclMySWcxY2JpQkJjeFl6Z3pVRE5MQ3ZMOEdiWlhOcDZPUnkzTG1TK0trODN6UklBSzZBMWlvS2EySTlOYXBJdWlVRmRmQzk3NjZQRlpVdHFVcjZLYldrK3paVTFhL1pySVhFenRyalRPZno3aHdLemlDZVhJYXJhSHRiWklNeisycEdnYXpDbXc0cVdBRnZFZGhvZFlwMFhxMHBWN0cxWVdZV2JPNHFoR3E0MitaOEJZdHJMV3ZsdU5QcFpBZWFGRlMxdnViUGdiZ3hzcWNwbkFhc3pCb3ZLYUZvRFE4Qkd0amZVT2w0TkFHMm5tUVYwNGZlSmd1bXZYMmZzclFFV1pnaEwwSm5WZFlrbjNET1pJZVJOODZScVBXQ21zdkdWcUVNUm53eFFBeHdTOEVNWW8zSXptWTIrQkNjTHA0TUtpdXl1aEltYW1sYlpGY05vTmw3dHArUkhkMThaalFJUkt5WGRGUmhOOTgvaHlLcXdYV05vN08xd2lhWG9ITjEwOFJFWlpXRXE2Z3JuSWZqemVnOGpkUmYxWEVMNGtrWGE1YkJqS3hvS2FsakJqZUhsVnhRNEdheWNwVzRsRE9BS3RuVHhIQXRPZnpPdFp3SEFNN3NxVlhrVjZ5dTZrYXAxbkhrWEtxV0YvNFhIcWplbk5LcUJqcFIzbDFjaDNFamcxK0VzZ2RRaHNkRzBCNEZNOXNXQVZXcHVBeWl3VFBsZVp4dDlWeVpWUzJxWGZSZVdxVEFpbHByOUFwb1dUanh5bWl0N053VjRKVHJpWnlPQTlCMGs3SEZmVUxvdXJtS1lIVm5SUXZxR0w1SE1IZHFGY1IycVdwbWNLNmVUd3gyZGlwV3J2aURpbHIrZktXcTNPV1JXZEhLd0E0ZXU4d2pjaGJlUnpGaWxxampaTjN1ZkNwZmtKMC9zY1ZwbllrNkwwUEk3N2x4ZFdDWjg3V2lXbTdCL0FHcXVRU251akdLc0I4Q0ptaUpxOHExcEtJVld5cU9pVEs2NnIxOEJOOHI3NC9BRTcxZmRDM3lQUzJNeGRPcG5FMXRsVnhEOUptVk9vZ2dOK3I0UGpBWFZGUGEzRWc1alZKR0ZWVUdOb2xIMjBHVnJVQjdCT3lTV3E2V3FZUWRXUjkycGNGTVlNd2NrYlNnQ0tDcUQ2N0RpaVd1MWc4TVFDOUJ5ZmNGcVcxTCtqTDcxNHFOQ3V6bm9TeHQwZGEyZ3RXTjFHOEYwQkswTk4wbnVpbWVsVUY5ZElkQWZqTzQ0VVQzQ2pRTG9VZUxISkZUTzNnbXBSdUlJT3Z3QlFDYnFOZW8zcXRaOWlGNnhWSzEzR1JsbzR6cWltcStDR2RUaVIxdVJZOG9xZ0UwMmhaQmE3OWtaWFBNcXV4UkhLbGEyc2FaV040bVJxWlVqMHZMQ0toa2pLbnFPUUhOdVNaVkpvS3ZBcVMxd3BFcXV2V0RDMUIyeXB3ckNQc1JNRVBWVE9ETUxKTUR2NnFlS1h3aTJKWVY1U3E0cUt5dmdHc0hDTGl1ajJqUjU5VjhnTXFTSjJGSlpSWEVIVlJIajNzRlByY3Q2T3BxbFcxR3BhdFFkdDBHdndmTTZuNjNJbnNHVkZoSkdhQnFncXFJVjZJc1hsbFpneVNQcTRSM2JudDN3aTVjditjTjJ5cVFMVzFUOTVLWVZzV1d0S2s0Y0I5VzUzV1FRZmxRWVI2V2w0SGFKWmp2VkUwRDV5dnErUktnWkNzNXFkQkVQNXNEOTRjQXZRTGxTZ05hU01BdEh4ODhCdU5RNDF6ZEZzWDMwektiY3MwTUxEL2loa3BRemwwd2lUcUtMVGZiS21DbXlZSUNuSzBJYmFpZUM0Q0c5aVN5TFE3Y0lNR1F3YXU2VEtvcTYwQXBsM1dONDBMWnBjYTFDS0tLOVZReXlJRW44dzBGOEY2Q0wyaDhvM2l4R3dDN3M3RVd6Q09xbWNBcFl4WUQ0anNBelZTMHNsMnQ5OHBBN3ZyS29waENWU29uYllwZ0g2bXZTbjI0cFRCVjRzZHRWM0J0TXE1azgyeStJQUR2VUowdUFsa0NWVHhJYVBtK1VOdS9xa1Y0RjFUekhYQ0dyWElBcUl0Qkt5cHFLOTlWdEFPVnM2NE80T2JYN3BITFZDcFlIY1Jtd3ZMUjdUdllBS0JCTjU4TEdWekR1RnoraFFiV2duY1F5Q1pBaytWYnNQU291ZjkzMjYxaVpnbWZDcHdSYkF2cW1TcXJpVTJQd2hqYW9PeVlxdEllZ1ZYVmlUc215dGE2Ykd5U3BZM2d5UnJwSXlBZWFXRER4dHBzWHdLeWFsTURLTlA3WUJYTXFFc2tVc2kydUM4Rk5BUHhBS1RWZlQxbzZWek0wRTBqRisxcldjVXVIdmR5Zzd2Z29GcGxYOEhwdkhwTUNPTVJVUEh6WmtJbnNxbEZLTlgvRUlPNTJFMFN4U3pPd29iMlZtUkxXNUQxWElVMHJiZ00xQXpXZ3lDN2ZlOEc3eFVBSy90YUVCYXQ3bHVxdHlQN0Vtc2FKUU9qNUYrbXJuWmZDdVlDZkJVQVd3U2h5ZDZwTVkvdkFIRzFVcU9ZcGJJL2d5NVQwQ01LbStVTzNnRnVDODVkZ2ZEVmVndVBEZklUcklCTHNMcmNnZGgzQ0ZnRlpqYUtKNEl2M0Y4QU5FcXZ1eFIxdFZLT2dMb0NhMWp4Ym9CQWtqNnY3ai9pY0ZiQTdmNHJmUm5RRExSVmlHMTNpMHZxQlFyWVZxQmJBRFpUMFpwaUhvU3p2UXBvcEtJRlMzc0UxSGZCV2xIWGQwSDdMbkFycXZvdWdNdGxqSEJnWm5oM0Vvei9CS2pMTUw0WjJBcTAraEVKcjlqYVZVQmJ2TnpDSVVpcm9DN0FXbW1GdzRvNUFLM010QjVWeXBaTVNGZ3MwNUp5R1Z3bHdCcXNFR0FBYTJaVTFDalVleFhHc0U0cktyaWlsQnZGek9LS28zQXVBcm9FNlFGUVUzdThZcE5Yd1M1aysxVFp0NVVyd291TjRLaVVFdytrM1pXRHAxUlhITlJxWGIyMVRzMzk5NDV5WlNnM1ZuWkZOUTlDRjNYZVp5cjVEZ0JYS2l3Q01hMk14ZVREWVhnUDFGc2Y5UU5LWmMwazgxUkprM3I2RVEzckNtQlZ5TEw3NUVqWjFwSVZESG9GdGlPQUhvQjBCZFRWeWxxQnNLS0tTK0FlQlhKVkxZK0NYQVN1R3ZPL0F1cTdHdUVqRGZHS2cxb0thMXovZG1taTlJOVNVR05obDBBdGZ1bEhBYXdvWXJuU2ttTlhBVnVHRWhyRVZYdlVGK0E1Q3QyUHFOT2pEZXR5bmE0Q21lVW9sbWVYTE40QXE3QzVTajEwUTd5amdsK3Q2Q054U1JIbUk1WCtDcHdyZVlCM1FmZHFuYTRxMjFLZEJ1YzRHb1pzbjQ5Wk9PaVZpbndIcUs5V3pqdmdld2VFaDJBVTUrdnR4WjlDZDlXcWtoNDlWMThFNW9qNnZWeW4wUlN0QXlHSU81ZWRYUktkNUIwVkdWWHEyeXIzeFlwKzVVdCtDNFFKNFAxTjMzOXBRTWpSZWpqNHZiL0RjcjZyUWMzTy8wcmptdFpwZVlDQmlDSGZDZW1SYk5oYksvcE5VUGMzd2ZLeTVmMkQ3T2xMMy91UGh2ZS9vVTRUMEY4ZitWTk0ydnlvaXYwaksrS0hRZmRIcSswYm5jejRvejczLytZNkxiS3cxby81QjdlT2YxUmwvMGR1OUI5dG4vOWJ2cmYvait2MGg2dHRuMnRwL3IvNDgxOXk0L3p2NTM5MXV2enpmd0RpZno2cGhUMU1QZ0FBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTMwcHg7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3N7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZTttYXJnaW46M3B4IC0zcHg7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmRpc2FibGVke2NvbG9yOiM5OTk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNoYWRvdzoxcHggMXB4IDVweCAjMzMzO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTVweDt0ZXh0LWFsaWduOmNlbnRlcjt0b3A6LTVweDt3aWR0aDoxMHB4fS5jb2xvci1waWNrZXIgLmNwLXJlbW92ZS1jb2xvci1idXR0b24tY2xhc3M6YmVmb3Jle2JvdHRvbTozLjVweDtjb250ZW50OiJ4IjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTBweDtwb3NpdGlvbjpyZWxhdGl2ZX0nXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofSx7dHlwZTpPYn0se3R5cGU6ejV9XX0pLHtoYW5kbGVFc2M6W3t0eXBlOlRfLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lc2MiLFsiJGV2ZW50Il1dfV0saGFuZGxlRW50ZXI6W3t0eXBlOlRfLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lbnRlciIsWyIkZXZlbnQiXV19XSxkaWFsb2dFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiZGlhbG9nUG9wdXAiLHtzdGF0aWM6ITB9XX1dLGh1ZVNsaWRlcjpbe3R5cGU6YXIsYXJnczpbImh1ZVNsaWRlciIse3N0YXRpYzohMH1dfV0sYWxwaGFTbGlkZXI6W3t0eXBlOmFyLGFyZ3M6WyJhbHBoYVNsaWRlciIse3N0YXRpYzohMH1dfV19KTtjbGFzcyBINXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7dGhpcy5pbmplY3Rvcj10LHRoaXMuY2ZyPWUsdGhpcy5hcHBSZWY9bix0aGlzLnZjUmVmPW8sdGhpcy5lbFJlZj1pLHRoaXMuX3NlcnZpY2U9YSx0aGlzLmRpYWxvZ0NyZWF0ZWQ9ITEsdGhpcy5pZ25vcmVDaGFuZ2VzPSExLHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWY9ITEsdGhpcy5jcFdpZHRoPSIyMzBweCIsdGhpcy5jcEhlaWdodD0iYXV0byIsdGhpcy5jcFRvZ2dsZT0hMSx0aGlzLmNwRGlzYWJsZWQ9ITEsdGhpcy5jcElnbm9yZWRFbGVtZW50cz1bXSx0aGlzLmNwRmFsbGJhY2tDb2xvcj0iIix0aGlzLmNwQ29sb3JNb2RlPSJjb2xvciIsdGhpcy5jcENteWtFbmFibGVkPSExLHRoaXMuY3BPdXRwdXRGb3JtYXQ9ImF1dG8iLHRoaXMuY3BBbHBoYUNoYW5uZWw9ImVuYWJsZWQiLHRoaXMuY3BEaXNhYmxlSW5wdXQ9ITEsdGhpcy5jcERpYWxvZ0Rpc3BsYXk9InBvcHVwIix0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZT0hMCx0aGlzLmNwQ2xvc2VDbGlja091dHNpZGU9ITAsdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyPSExLHRoaXMuY3BQb3NpdGlvbj0iYXV0byIsdGhpcy5jcFBvc2l0aW9uT2Zmc2V0PSIwJSIsdGhpcy5jcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93PSExLHRoaXMuY3BPS0J1dHRvbj0hMSx0aGlzLmNwT0tCdXR0b25UZXh0PSJPSyIsdGhpcy5jcE9LQnV0dG9uQ2xhc3M9ImNwLW9rLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcENhbmNlbEJ1dHRvbj0hMSx0aGlzLmNwQ2FuY2VsQnV0dG9uVGV4dD0iQ2FuY2VsIix0aGlzLmNwQ2FuY2VsQnV0dG9uQ2xhc3M9ImNwLWNhbmNlbC1idXR0b24tY2xhc3MiLHRoaXMuY3BQcmVzZXRMYWJlbD0iUHJlc2V0IGNvbG9ycyIsdGhpcy5jcFByZXNldENvbG9yc0NsYXNzPSJjcC1wcmVzZXQtY29sb3JzLWNsYXNzIix0aGlzLmNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoPTYsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZT0iTm8gY29sb3JzIGFkZGVkIix0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M9InByZXNldC1lbXB0eS1tZXNzYWdlIix0aGlzLmNwQWRkQ29sb3JCdXR0b249ITEsdGhpcy5jcEFkZENvbG9yQnV0dG9uVGV4dD0iQWRkIGNvbG9yIix0aGlzLmNwQWRkQ29sb3JCdXR0b25DbGFzcz0iY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M9ImNwLXJlbW92ZS1jb2xvci1idXR0b24tY2xhc3MiLHRoaXMuY3BJbnB1dENoYW5nZT1uZXcgU3koITApLHRoaXMuY3BUb2dnbGVDaGFuZ2U9bmV3IFN5KCEwKSx0aGlzLmNwU2xpZGVyQ2hhbmdlPW5ldyBTeSghMCksdGhpcy5jcFNsaWRlckRyYWdFbmQ9bmV3IFN5KCEwKSx0aGlzLmNwU2xpZGVyRHJhZ1N0YXJ0PW5ldyBTeSghMCksdGhpcy5jb2xvclBpY2tlck9wZW49bmV3IFN5KCEwKSx0aGlzLmNvbG9yUGlja2VyQ2xvc2U9bmV3IFN5KCEwKSx0aGlzLmNvbG9yUGlja2VyQ2FuY2VsPW5ldyBTeSghMCksdGhpcy5jb2xvclBpY2tlclNlbGVjdD1uZXcgU3koITApLHRoaXMuY29sb3JQaWNrZXJDaGFuZ2U9bmV3IFN5KCExKSx0aGlzLmNwQ215a0NvbG9yQ2hhbmdlPW5ldyBTeSghMCksdGhpcy5jcFByZXNldENvbG9yc0NoYW5nZT1uZXcgU3koITApfWhhbmRsZUNsaWNrKCl7dGhpcy5pbnB1dEZvY3VzKCl9aGFuZGxlRm9jdXMoKXt0aGlzLmlucHV0Rm9jdXMoKX1oYW5kbGVJbnB1dCh0KXt0aGlzLmlucHV0Q2hhbmdlKHQpfW5nT25EZXN0cm95KCl7bnVsbCE9dGhpcy5jbXBSZWYmJih0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmJiZ0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuY21wUmVmLmhvc3RWaWV3KSx0aGlzLmNtcFJlZi5kZXN0cm95KCksdGhpcy5jbXBSZWY9bnVsbCx0aGlzLmRpYWxvZz1udWxsKX1uZ09uQ2hhbmdlcyh0KXt0LmNwVG9nZ2xlJiYhdGhpcy5jcERpc2FibGVkJiYodC5jcFRvZ2dsZS5jdXJyZW50VmFsdWU/dGhpcy5vcGVuRGlhbG9nKCk6dC5jcFRvZ2dsZS5jdXJyZW50VmFsdWV8fHRoaXMuY2xvc2VEaWFsb2coKSksdC5jb2xvclBpY2tlciYmKHRoaXMuZGlhbG9nJiYhdGhpcy5pZ25vcmVDaGFuZ2VzJiYoImlubGluZSI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5kaWFsb2cuc2V0SW5pdGlhbENvbG9yKHQuY29sb3JQaWNrZXIuY3VycmVudFZhbHVlKSx0aGlzLmRpYWxvZy5zZXRDb2xvckZyb21TdHJpbmcodC5jb2xvclBpY2tlci5jdXJyZW50VmFsdWUsITEpLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lciYmImlubGluZSIhPT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5jbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpKSx0aGlzLmlnbm9yZUNoYW5nZXM9ITEpLCh0LmNwUHJlc2V0TGFiZWx8fHQuY3BQcmVzZXRDb2xvcnMpJiZ0aGlzLmRpYWxvZyYmdGhpcy5kaWFsb2cuc2V0UHJlc2V0Q29uZmlnKHRoaXMuY3BQcmVzZXRMYWJlbCx0aGlzLmNwUHJlc2V0Q29sb3JzKX1vcGVuRGlhbG9nKCl7aWYodGhpcy5kaWFsb2dDcmVhdGVkKXRoaXMuZGlhbG9nJiZ0aGlzLmRpYWxvZy5vcGVuRGlhbG9nKHRoaXMuY29sb3JQaWNrZXIpO2Vsc2V7bGV0IHQ9dGhpcy52Y1JlZjtpZih0aGlzLmRpYWxvZ0NyZWF0ZWQ9ITAsdGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZj0hMSx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXImJiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkpe2NvbnN0IGU9dGhpcy5pbmplY3Rvci5nZXQodGhpcy5hcHBSZWYuY29tcG9uZW50VHlwZXNbMF0sTnAuTlVMTCk7ZSE9PU5wLk5VTEw/KHQ9ZS52Y1JlZnx8ZS52aWV3Q29udGFpbmVyUmVmfHx0aGlzLnZjUmVmLHQ9PT10aGlzLnZjUmVmJiZjb25zb2xlLndhcm4oIllvdSBhcmUgdXNpbmcgY3BVc2VSb290Vmlld0NvbnRhaW5lciwgYnV0IHRoZSByb290IGNvbXBvbmVudCBpcyBub3QgZXhwb3Npbmcgdmlld0NvbnRhaW5lclJlZiFQbGVhc2UgZXhwb3NlIGl0IGJ5IGFkZGluZyAncHVibGljIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmJyB0byB0aGUgY29uc3RydWN0b3IuIikpOnRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWY9ITB9Y29uc3QgZT10aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShJNSk7aWYodGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZil0aGlzLmNtcFJlZj1lLmNyZWF0ZSh0aGlzLmluamVjdG9yKSx0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMuY21wUmVmLmhvc3RWaWV3KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY21wUmVmLmhvc3RWaWV3LnJvb3ROb2Rlc1swXSk7ZWxzZXtjb25zdCBuPW11LmZyb21SZXNvbHZlZFByb3ZpZGVycyhbXSx0LnBhcmVudEluamVjdG9yKTt0aGlzLmNtcFJlZj10LmNyZWF0ZUNvbXBvbmVudChlLDAsbixbXSl9dGhpcy5jbXBSZWYuaW5zdGFuY2Uuc2V0dXBEaWFsb2codGhpcyx0aGlzLmVsUmVmLHRoaXMuY29sb3JQaWNrZXIsdGhpcy5jcFdpZHRoLHRoaXMuY3BIZWlnaHQsdGhpcy5jcERpYWxvZ0Rpc3BsYXksdGhpcy5jcEZhbGxiYWNrQ29sb3IsdGhpcy5jcENvbG9yTW9kZSx0aGlzLmNwQ215a0VuYWJsZWQsdGhpcy5jcEFscGhhQ2hhbm5lbCx0aGlzLmNwT3V0cHV0Rm9ybWF0LHRoaXMuY3BEaXNhYmxlSW5wdXQsdGhpcy5jcElnbm9yZWRFbGVtZW50cyx0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZSx0aGlzLmNwQ2xvc2VDbGlja091dHNpZGUsdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyLHRoaXMuY3BQb3NpdGlvbix0aGlzLmNwUG9zaXRpb25PZmZzZXQsdGhpcy5jcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93LHRoaXMuY3BQcmVzZXRMYWJlbCx0aGlzLmNwUHJlc2V0Q29sb3JzLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcyx0aGlzLmNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2UsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzLHRoaXMuY3BPS0J1dHRvbix0aGlzLmNwT0tCdXR0b25DbGFzcyx0aGlzLmNwT0tCdXR0b25UZXh0LHRoaXMuY3BDYW5jZWxCdXR0b24sdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0LHRoaXMuY3BBZGRDb2xvckJ1dHRvbix0aGlzLmNwQWRkQ29sb3JCdXR0b25DbGFzcyx0aGlzLmNwQWRkQ29sb3JCdXR0b25UZXh0LHRoaXMuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzLHRoaXMuZWxSZWYpLHRoaXMuZGlhbG9nPXRoaXMuY21wUmVmLmluc3RhbmNlLHRoaXMudmNSZWYhPT10JiZ0aGlzLmNtcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9fWNsb3NlRGlhbG9nKCl7dGhpcy5kaWFsb2cmJiJwb3B1cCI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5kaWFsb2cuY2xvc2VEaWFsb2coKX1jbXlrQ2hhbmdlZCh0KXt0aGlzLmNwQ215a0NvbG9yQ2hhbmdlLmVtaXQodCl9c3RhdGVDaGFuZ2VkKHQpe3RoaXMuY3BUb2dnbGVDaGFuZ2UuZW1pdCh0KSx0P3RoaXMuY29sb3JQaWNrZXJPcGVuLmVtaXQodGhpcy5jb2xvclBpY2tlcik6dGhpcy5jb2xvclBpY2tlckNsb3NlLmVtaXQodGhpcy5jb2xvclBpY2tlcil9Y29sb3JDaGFuZ2VkKHQsZT0hMCl7dGhpcy5pZ25vcmVDaGFuZ2VzPWUsdGhpcy5jb2xvclBpY2tlckNoYW5nZS5lbWl0KHQpfWNvbG9yU2VsZWN0ZWQodCl7dGhpcy5jb2xvclBpY2tlclNlbGVjdC5lbWl0KHQpfWNvbG9yQ2FuY2VsZWQoKXt0aGlzLmNvbG9yUGlja2VyQ2FuY2VsLmVtaXQoKX1pbnB1dEZvY3VzKCl7Y29uc3QgdD10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsZT10aGlzLmNwSWdub3JlZEVsZW1lbnRzLmZpbHRlcigoZT0+ZT09PXQpKTt0aGlzLmNwRGlzYWJsZWR8fGUubGVuZ3RofHwoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmdD09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/dGhpcy5vcGVuRGlhbG9nKCk6dGhpcy5kaWFsb2cmJnRoaXMuZGlhbG9nLnNob3c/dGhpcy5jbG9zZURpYWxvZygpOnRoaXMub3BlbkRpYWxvZygpKX1pbnB1dENoYW5nZSh0KXt0aGlzLmRpYWxvZz90aGlzLmRpYWxvZy5zZXRDb2xvckZyb21TdHJpbmcodC50YXJnZXQudmFsdWUsITApOih0aGlzLmNvbG9yUGlja2VyPXQudGFyZ2V0LnZhbHVlLHRoaXMuY29sb3JQaWNrZXJDaGFuZ2UuZW1pdCh0aGlzLmNvbG9yUGlja2VyKSl9aW5wdXRDaGFuZ2VkKHQpe3RoaXMuY3BJbnB1dENoYW5nZS5lbWl0KHQpfXNsaWRlckNoYW5nZWQodCl7dGhpcy5jcFNsaWRlckNoYW5nZS5lbWl0KHQpfXNsaWRlckRyYWdFbmQodCl7dGhpcy5jcFNsaWRlckRyYWdFbmQuZW1pdCh0KX1zbGlkZXJEcmFnU3RhcnQodCl7dGhpcy5jcFNsaWRlckRyYWdTdGFydC5lbWl0KHQpfXByZXNldENvbG9yc0NoYW5nZWQodCl7dGhpcy5jcFByZXNldENvbG9yc0NoYW5nZS5lbWl0KHQpfX1INS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SDUpKGZ1KE5wKSxmdShHaCksZnUoSEMpLGZ1KEZiKSxmdShLaCksZnUoejUpKX0sSDUuybVkaXI9aG8oe3R5cGU6SDUsc2VsZWN0b3JzOltbIiIsImNvbG9yUGlja2VyIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uaGFuZGxlQ2xpY2soKX0pKSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uaGFuZGxlRm9jdXMoKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUlucHV0KGUpfSkpfSxpbnB1dHM6e2NwV2lkdGg6ImNwV2lkdGgiLGNwSGVpZ2h0OiJjcEhlaWdodCIsY3BUb2dnbGU6ImNwVG9nZ2xlIixjcERpc2FibGVkOiJjcERpc2FibGVkIixjcElnbm9yZWRFbGVtZW50czoiY3BJZ25vcmVkRWxlbWVudHMiLGNwRmFsbGJhY2tDb2xvcjoiY3BGYWxsYmFja0NvbG9yIixjcENvbG9yTW9kZToiY3BDb2xvck1vZGUiLGNwQ215a0VuYWJsZWQ6ImNwQ215a0VuYWJsZWQiLGNwT3V0cHV0Rm9ybWF0OiJjcE91dHB1dEZvcm1hdCIsY3BBbHBoYUNoYW5uZWw6ImNwQWxwaGFDaGFubmVsIixjcERpc2FibGVJbnB1dDoiY3BEaXNhYmxlSW5wdXQiLGNwRGlhbG9nRGlzcGxheToiY3BEaWFsb2dEaXNwbGF5IixjcFNhdmVDbGlja091dHNpZGU6ImNwU2F2ZUNsaWNrT3V0c2lkZSIsY3BDbG9zZUNsaWNrT3V0c2lkZToiY3BDbG9zZUNsaWNrT3V0c2lkZSIsY3BVc2VSb290Vmlld0NvbnRhaW5lcjoiY3BVc2VSb290Vmlld0NvbnRhaW5lciIsY3BQb3NpdGlvbjoiY3BQb3NpdGlvbiIsY3BQb3NpdGlvbk9mZnNldDoiY3BQb3NpdGlvbk9mZnNldCIsY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdzoiY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdyIsY3BPS0J1dHRvbjoiY3BPS0J1dHRvbiIsY3BPS0J1dHRvblRleHQ6ImNwT0tCdXR0b25UZXh0IixjcE9LQnV0dG9uQ2xhc3M6ImNwT0tCdXR0b25DbGFzcyIsY3BDYW5jZWxCdXR0b246ImNwQ2FuY2VsQnV0dG9uIixjcENhbmNlbEJ1dHRvblRleHQ6ImNwQ2FuY2VsQnV0dG9uVGV4dCIsY3BDYW5jZWxCdXR0b25DbGFzczoiY3BDYW5jZWxCdXR0b25DbGFzcyIsY3BQcmVzZXRMYWJlbDoiY3BQcmVzZXRMYWJlbCIsY3BQcmVzZXRDb2xvcnNDbGFzczoiY3BQcmVzZXRDb2xvcnNDbGFzcyIsY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg6ImNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoIixjcFByZXNldEVtcHR5TWVzc2FnZToiY3BQcmVzZXRFbXB0eU1lc3NhZ2UiLGNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M6ImNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3MiLGNwQWRkQ29sb3JCdXR0b246ImNwQWRkQ29sb3JCdXR0b24iLGNwQWRkQ29sb3JCdXR0b25UZXh0OiJjcEFkZENvbG9yQnV0dG9uVGV4dCIsY3BBZGRDb2xvckJ1dHRvbkNsYXNzOiJjcEFkZENvbG9yQnV0dG9uQ2xhc3MiLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczoiY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzIixjb2xvclBpY2tlcjoiY29sb3JQaWNrZXIiLGNwUHJlc2V0Q29sb3JzOiJjcFByZXNldENvbG9ycyJ9LG91dHB1dHM6e2NwSW5wdXRDaGFuZ2U6ImNwSW5wdXRDaGFuZ2UiLGNwVG9nZ2xlQ2hhbmdlOiJjcFRvZ2dsZUNoYW5nZSIsY3BTbGlkZXJDaGFuZ2U6ImNwU2xpZGVyQ2hhbmdlIixjcFNsaWRlckRyYWdFbmQ6ImNwU2xpZGVyRHJhZ0VuZCIsY3BTbGlkZXJEcmFnU3RhcnQ6ImNwU2xpZGVyRHJhZ1N0YXJ0Iixjb2xvclBpY2tlck9wZW46ImNvbG9yUGlja2VyT3BlbiIsY29sb3JQaWNrZXJDbG9zZToiY29sb3JQaWNrZXJDbG9zZSIsY29sb3JQaWNrZXJDYW5jZWw6ImNvbG9yUGlja2VyQ2FuY2VsIixjb2xvclBpY2tlclNlbGVjdDoiY29sb3JQaWNrZXJTZWxlY3QiLGNvbG9yUGlja2VyQ2hhbmdlOiJjb2xvclBpY2tlckNoYW5nZSIsY3BDbXlrQ29sb3JDaGFuZ2U6ImNwQ215a0NvbG9yQ2hhbmdlIixjcFByZXNldENvbG9yc0NoYW5nZToiY3BQcmVzZXRDb2xvcnNDaGFuZ2UifSxleHBvcnRBczpbIm5neENvbG9yUGlja2VyIl0sZmVhdHVyZXM6W3FvXX0pLEg1LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TnB9LHt0eXBlOkdofSx7dHlwZTpIQ30se3R5cGU6RmJ9LHt0eXBlOktofSx7dHlwZTp6NX1dLEg1LnByb3BEZWNvcmF0b3JzPXtjb2xvclBpY2tlcjpbe3R5cGU6Ul99XSxjcFdpZHRoOlt7dHlwZTpSX31dLGNwSGVpZ2h0Olt7dHlwZTpSX31dLGNwVG9nZ2xlOlt7dHlwZTpSX31dLGNwRGlzYWJsZWQ6W3t0eXBlOlJffV0sY3BJZ25vcmVkRWxlbWVudHM6W3t0eXBlOlJffV0sY3BGYWxsYmFja0NvbG9yOlt7dHlwZTpSX31dLGNwQ29sb3JNb2RlOlt7dHlwZTpSX31dLGNwQ215a0VuYWJsZWQ6W3t0eXBlOlJffV0sY3BPdXRwdXRGb3JtYXQ6W3t0eXBlOlJffV0sY3BBbHBoYUNoYW5uZWw6W3t0eXBlOlJffV0sY3BEaXNhYmxlSW5wdXQ6W3t0eXBlOlJffV0sY3BEaWFsb2dEaXNwbGF5Olt7dHlwZTpSX31dLGNwU2F2ZUNsaWNrT3V0c2lkZTpbe3R5cGU6Ul99XSxjcENsb3NlQ2xpY2tPdXRzaWRlOlt7dHlwZTpSX31dLGNwVXNlUm9vdFZpZXdDb250YWluZXI6W3t0eXBlOlJffV0sY3BQb3NpdGlvbjpbe3R5cGU6Ul99XSxjcFBvc2l0aW9uT2Zmc2V0Olt7dHlwZTpSX31dLGNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c6W3t0eXBlOlJffV0sY3BPS0J1dHRvbjpbe3R5cGU6Ul99XSxjcE9LQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcE9LQnV0dG9uQ2xhc3M6W3t0eXBlOlJffV0sY3BDYW5jZWxCdXR0b246W3t0eXBlOlJffV0sY3BDYW5jZWxCdXR0b25UZXh0Olt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uQ2xhc3M6W3t0eXBlOlJffV0sY3BQcmVzZXRMYWJlbDpbe3R5cGU6Ul99XSxjcFByZXNldENvbG9yczpbe3R5cGU6Ul99XSxjcFByZXNldENvbG9yc0NsYXNzOlt7dHlwZTpSX31dLGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoOlt7dHlwZTpSX31dLGNwUHJlc2V0RW1wdHlNZXNzYWdlOlt7dHlwZTpSX31dLGNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M6W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvbjpbe3R5cGU6Ul99XSxjcEFkZENvbG9yQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcEFkZENvbG9yQnV0dG9uQ2xhc3M6W3t0eXBlOlJffV0sY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwSW5wdXRDaGFuZ2U6W3t0eXBlOkVffV0sY3BUb2dnbGVDaGFuZ2U6W3t0eXBlOkVffV0sY3BTbGlkZXJDaGFuZ2U6W3t0eXBlOkVffV0sY3BTbGlkZXJEcmFnRW5kOlt7dHlwZTpFX31dLGNwU2xpZGVyRHJhZ1N0YXJ0Olt7dHlwZTpFX31dLGNvbG9yUGlja2VyT3Blbjpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNsb3NlOlt7dHlwZTpFX31dLGNvbG9yUGlja2VyQ2FuY2VsOlt7dHlwZTpFX31dLGNvbG9yUGlja2VyU2VsZWN0Olt7dHlwZTpFX31dLGNvbG9yUGlja2VyQ2hhbmdlOlt7dHlwZTpFX31dLGNwQ215a0NvbG9yQ2hhbmdlOlt7dHlwZTpFX31dLGNwUHJlc2V0Q29sb3JzQ2hhbmdlOlt7dHlwZTpFX31dLGhhbmRsZUNsaWNrOlt7dHlwZTpUXyxhcmdzOlsiY2xpY2siXX1dLGhhbmRsZUZvY3VzOlt7dHlwZTpUXyxhcmdzOlsiZm9jdXMiXX1dLGhhbmRsZUlucHV0Olt7dHlwZTpUXyxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSDUsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoiW2NvbG9yUGlja2VyXSIsZXhwb3J0QXM6Im5neENvbG9yUGlja2VyIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk5wfSx7dHlwZTpHaH0se3R5cGU6SEN9LHt0eXBlOkZifSx7dHlwZTpLaH0se3R5cGU6ejV9XX0pLHtjcFdpZHRoOlt7dHlwZTpSX31dLGNwSGVpZ2h0Olt7dHlwZTpSX31dLGNwVG9nZ2xlOlt7dHlwZTpSX31dLGNwRGlzYWJsZWQ6W3t0eXBlOlJffV0sY3BJZ25vcmVkRWxlbWVudHM6W3t0eXBlOlJffV0sY3BGYWxsYmFja0NvbG9yOlt7dHlwZTpSX31dLGNwQ29sb3JNb2RlOlt7dHlwZTpSX31dLGNwQ215a0VuYWJsZWQ6W3t0eXBlOlJffV0sY3BPdXRwdXRGb3JtYXQ6W3t0eXBlOlJffV0sY3BBbHBoYUNoYW5uZWw6W3t0eXBlOlJffV0sY3BEaXNhYmxlSW5wdXQ6W3t0eXBlOlJffV0sY3BEaWFsb2dEaXNwbGF5Olt7dHlwZTpSX31dLGNwU2F2ZUNsaWNrT3V0c2lkZTpbe3R5cGU6Ul99XSxjcENsb3NlQ2xpY2tPdXRzaWRlOlt7dHlwZTpSX31dLGNwVXNlUm9vdFZpZXdDb250YWluZXI6W3t0eXBlOlJffV0sY3BQb3NpdGlvbjpbe3R5cGU6Ul99XSxjcFBvc2l0aW9uT2Zmc2V0Olt7dHlwZTpSX31dLGNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c6W3t0eXBlOlJffV0sY3BPS0J1dHRvbjpbe3R5cGU6Ul99XSxjcE9LQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcE9LQnV0dG9uQ2xhc3M6W3t0eXBlOlJffV0sY3BDYW5jZWxCdXR0b246W3t0eXBlOlJffV0sY3BDYW5jZWxCdXR0b25UZXh0Olt7dHlwZTpSX31dLGNwQ2FuY2VsQnV0dG9uQ2xhc3M6W3t0eXBlOlJffV0sY3BQcmVzZXRMYWJlbDpbe3R5cGU6Ul99XSxjcFByZXNldENvbG9yc0NsYXNzOlt7dHlwZTpSX31dLGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoOlt7dHlwZTpSX31dLGNwUHJlc2V0RW1wdHlNZXNzYWdlOlt7dHlwZTpSX31dLGNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M6W3t0eXBlOlJffV0sY3BBZGRDb2xvckJ1dHRvbjpbe3R5cGU6Ul99XSxjcEFkZENvbG9yQnV0dG9uVGV4dDpbe3R5cGU6Ul99XSxjcEFkZENvbG9yQnV0dG9uQ2xhc3M6W3t0eXBlOlJffV0sY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpSX31dLGNwSW5wdXRDaGFuZ2U6W3t0eXBlOkVffV0sY3BUb2dnbGVDaGFuZ2U6W3t0eXBlOkVffV0sY3BTbGlkZXJDaGFuZ2U6W3t0eXBlOkVffV0sY3BTbGlkZXJEcmFnRW5kOlt7dHlwZTpFX31dLGNwU2xpZGVyRHJhZ1N0YXJ0Olt7dHlwZTpFX31dLGNvbG9yUGlja2VyT3Blbjpbe3R5cGU6RV99XSxjb2xvclBpY2tlckNsb3NlOlt7dHlwZTpFX31dLGNvbG9yUGlja2VyQ2FuY2VsOlt7dHlwZTpFX31dLGNvbG9yUGlja2VyU2VsZWN0Olt7dHlwZTpFX31dLGNvbG9yUGlja2VyQ2hhbmdlOlt7dHlwZTpFX31dLGNwQ215a0NvbG9yQ2hhbmdlOlt7dHlwZTpFX31dLGNwUHJlc2V0Q29sb3JzQ2hhbmdlOlt7dHlwZTpFX31dLGhhbmRsZUNsaWNrOlt7dHlwZTpUXyxhcmdzOlsiY2xpY2siXX1dLGhhbmRsZUZvY3VzOlt7dHlwZTpUXyxhcmdzOlsiZm9jdXMiXX1dLGhhbmRsZUlucHV0Olt7dHlwZTpUXyxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV0sY29sb3JQaWNrZXI6W3t0eXBlOlJffV0sY3BQcmVzZXRDb2xvcnM6W3t0eXBlOlJffV19KTtjbGFzcyBGNXt9RjUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEY1KX0sRjUuybVtb2Q9dW8oe3R5cGU6RjV9KSxGNS7JtWluaj1Ebih7cHJvdmlkZXJzOlt6NV0saW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEY1LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcnhdLGV4cG9ydHM6W0g1XSxwcm92aWRlcnM6W3o1XSxkZWNsYXJhdGlvbnM6W0k1LEg1LEU1LEE1XSxlbnRyeUNvbXBvbmVudHM6W0k1XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEY1LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bSTUsSDUsRTUsQTVdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3J4XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltINV19fSk7Y29uc3QgTDU9WyJmaWx0ZXIiXTtmdW5jdGlvbiBCNSh0LGUpezEmdCYmT3UoMCl9ZnVuY3Rpb24gVjUodCxlKXsxJnQmJk91KDApfWNvbnN0IFU1PWZ1bmN0aW9uKHQpe3JldHVybntpdGVtOnR9fTtmdW5jdGlvbiBqNSh0LGUpe2lmKDEmdCYmKHZ1KDApLEhtKDEsVjUsMSwwLCJuZy1jb250YWluZXIiLDEyKSx4dSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7TnUoKTtjb25zdCBuPUZtKDE0KTtEYygxKSxodSgibmdUZW1wbGF0ZU91dGxldCIsbikoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixpeSgyLFU1LHQpKX19ZnVuY3Rpb24gVzUodCxlKXsxJnQmJihfdSgwLCJkaXYiLDEzKSxNdSgxLCJtYXQtc3Bpbm5lciIsMTQpLEN1KCkpfWZ1bmN0aW9uIEc1KHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwxNSksUGYoMSwiTm8gUnVucyIpLEN1KCkpfWZ1bmN0aW9uIFk1KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxNSksX3UoMSwic3BhbiIpLFBmKDIsJ05vIHJ1bnMgbWF0Y2ggIicpLF91KDMsImNvZGUiKSxQZig0KSxDdSgpLFBmKDUsJyInKSxDdSgpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDQpLHdmKHQucmVnZXhGaWx0ZXIpfX1jb25zdCBxNT1mdW5jdGlvbigpe3JldHVybls1LDEwLDIwXX07ZnVuY3Rpb24gWjUodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJtYXQtcGFnaW5hdG9yIiwxNiksRHUoInBhZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uUGFnaW5hdGlvbkNoYW5nZS5lbWl0KG4pfSkpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7aHUoInBhZ2VTaXplT3B0aW9ucyIsb3koNCxxNSkpKCJwYWdlSW5kZXgiLHQucGFnaW5hdGlvbk9wdGlvbi5wYWdlSW5kZXgpKCJwYWdlU2l6ZSIsdC5wYWdpbmF0aW9uT3B0aW9uLnBhZ2VTaXplKSgibGVuZ3RoIix0LmZpbHRlcmVkSXRlbXNMZW5ndGgpfX1mdW5jdGlvbiBYNSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsIm1hdC1jaGVja2JveCIsMjYpLER1KCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KDMpLmhhbmRsZVBhZ2VUb2dnbGUoKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgzKTtodSgiY2hlY2tlZCIsdC5hbGxQYWdlSXRlbXNTZWxlY3RlZCgpKSgiaW5kZXRlcm1pbmF0ZSIsIXQuYWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKSYmdC5zb21lUGFnZUl0ZW1zU2VsZWN0ZWQoKSl9fWNvbnN0IEs1PWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOnR9fTtmdW5jdGlvbiBKNSh0LGUpe2lmKDEmdCYmKF91KDAsInNwYW4iLDI3KSxQZigxLCJFeHBlcmltZW50IiksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDMpO2h1KCJtYXQtc29ydC1oZWFkZXIiLGl5KDEsSzUsdC5Tb3J0VHlwZS5FWFBFUklNRU5UX05BTUUpKX19ZnVuY3Rpb24gUTUodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwyNyksUGYoMSwiUnVuIiksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDMpO2h1KCJtYXQtc29ydC1oZWFkZXIiLGl5KDEsSzUsdC5Tb3J0VHlwZS5SVU5fTkFNRSkpfX1mdW5jdGlvbiAkNSh0LGUpe2lmKDEmdCYmTXUoMCwicnVucy1ncm91cC1tZW51LWJ1dHRvbiIsMjkpLDImdCl7aHUoImV4cGVyaW1lbnRJZHMiLE51KDQpLmV4cGVyaW1lbnRJZHMpfX1mdW5jdGlvbiB0NCh0LGUpe2lmKDEmdCYmKF91KDAsInNwYW4iKSxIbSgxLCQ1LDEsMSwicnVucy1ncm91cC1tZW51LWJ1dHRvbiIsMjgpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgzKTtEYygxKSxodSgibmdJZiIsdC5zaG93R3JvdXBDb250cm9sKX19Y29uc3QgZTQ9ZnVuY3Rpb24odCl7cmV0dXJuWyJjb2x1bW4iLHRdfTtmdW5jdGlvbiBuNCh0LGUpe2lmKDEmdCYmKF91KDAsInNwYW4iLDIxKSx2dSgxLDIyKSxIbSgyLFg1LDEsMiwibWF0LWNoZWNrYm94IiwyMyksSG0oMyxKNSwyLDMsInNwYW4iLDI0KSxIbSg0LFE1LDIsMywic3BhbiIsMjQpLEhtKDUsdDQsMiwxLCJzcGFuIiwyNSkseHUoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgyKTtodSgibmdDbGFzcyIsaXkoNixlNCwidGItY29sdW1uLSIrdCkpLERjKDEpLGh1KCJuZ1N3aXRjaCIsdCksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uQ0hFQ0tCT1gpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLkVYUEVSSU1FTlRfTkFNRSksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uUlVOX05BTUUpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLlJVTl9DT0xPUil9fWZ1bmN0aW9uIG80KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7dnUoMCksX3UoMSwiZGl2IiwzOCksRHUoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxfdSgyLCJ0Yi1yYW5nZS1pbnB1dCIsMzkpLER1KCJyYW5nZVZhbHVlc0NoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89TnUoMikuJGltcGxpY2l0O3JldHVybiBOdSgyKS5oYW5kbGVIcGFyYW1JbnRlcnZhbENoYW5nZWQobyxuKX0pKSxDdSgpLEN1KCkseHUoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMikuJGltcGxpY2l0O0RjKDIpLGh1KCJtaW4iLHQuZmlsdGVyLm1pblZhbHVlKSgibWF4Iix0LmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLHQuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIix0LmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19ZnVuY3Rpb24gaTQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJkaXYiLDQxKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLF91KDEsIm1hdC1jaGVja2JveCIsMzcpLER1KCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1QaSh0KS4kaW1wbGljaXQsbz1OdSgzKS4kaW1wbGljaXQ7cmV0dXJuIE51KDIpLmhhbmRsZUhwYXJhbURpc2NyZXRlQ2hhbmdlZChvLG4pfSkpLF91KDIsInNwYW4iKSxQZigzKSxDdSgpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgzKS4kaW1wbGljaXQ7RGMoMSksaHUoImNoZWNrZWQiLG4uZmlsdGVyLmZpbHRlclZhbHVlcy5pbmNsdWRlcyh0KSksRGMoMiksd2YodCl9fWZ1bmN0aW9uIGE0KHQsZSl7aWYoMSZ0JiYodnUoMCksSG0oMSxpNCw0LDIsImRpdiIsNDApLHh1KCkpLDImdCl7Y29uc3QgdD1OdSgyKS4kaW1wbGljaXQ7RGMoMSksaHUoIm5nRm9yT2YiLHQuZmlsdGVyLnBvc3NpYmxlVmFsdWVzKX19ZnVuY3Rpb24gcjQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTt2dSgwKSxfdSgxLCJidXR0b24iLDMzKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLE11KDIsIm1hdC1pY29uIiwzNCksQ3UoKSxfdSgzLCJtYXQtbWVudSIsbnVsbCwzNSksX3UoNSwiZGl2IiwzNiksRHUoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxfdSg2LCJtYXQtY2hlY2tib3giLDM3KSxEdSgiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG49TnUoKS4kaW1wbGljaXQ7cmV0dXJuIE51KDIpLmhhbmRsZUhwYXJhbUluY2x1ZGVVbmRlZmluZWRUb2dnbGVkKG4pfSkpLF91KDcsInNwYW4iKSxQZig4LCIoc2hvdyBlbXB0eSB2YWx1ZSkiKSxDdSgpLEN1KCksQ3UoKSxIbSg5LG80LDMsNCwibmctY29udGFpbmVyIiwzMiksSG0oMTAsYTQsMiwxLCJuZy1jb250YWluZXIiLDMyKSxDdSgpLHh1KCl9aWYoMiZ0KXtjb25zdCB0PUZtKDQpLGU9TnUoKS4kaW1wbGljaXQsbj1OdSgyKTtEYygxKSxodSgibWF0TWVudVRyaWdnZXJGb3IiLHQpLHltKCJhcmlhLWxhYmVsIiwiRmlsdGVyIGhwYXJhbSAiKyhlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKSxEYyg1KSxodSgiY2hlY2tlZCIsZS5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCksRGMoMyksaHUoIm5nSWYiLGUuZmlsdGVyLnR5cGU9PT1uLkRvbWFpblR5cGUuSU5URVJWQUwpLERjKDEpLGh1KCJuZ0lmIixlLmZpbHRlci50eXBlPT09bi5Eb21haW5UeXBlLkRJU0NSRVRFKX19Y29uc3QgczQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp0LG5hbWU6ZX19O2Z1bmN0aW9uIGw0KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsMzApLF91KDEsInNwYW4iLDMxKSxQZigyKSxDdSgpLEhtKDMscjQsMTEsNSwibmctY29udGFpbmVyIiwzMiksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoMik7aHUoIm1hdC1zb3J0LWhlYWRlciIsYXkoMyxzNCxuLlNvcnRUeXBlLkhQQVJBTSx0Lm5hbWUpKSxEYygyKSx3Zih0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpLERjKDEpLGh1KCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIGM0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7dnUoMCksX3UoMSwiYnV0dG9uIiwzMyksRHUoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxNdSgyLCJtYXQtaWNvbiIsMzQpLEN1KCksX3UoMywibWF0LW1lbnUiLG51bGwsMzUpLF91KDUsImRpdiIsMzYpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksX3UoNiwibWF0LWNoZWNrYm94IiwzNyksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPU51KCkuJGltcGxpY2l0O3JldHVybiBOdSgyKS5oYW5kbGVNZXRyaWNJbmNsdWRlVW5kZWZpbmVkQ2hhbmdlZChuKX0pKSxfdSg3LCJzcGFuIiksUGYoOCwiKHNob3cgZW1wdHkgdmFsdWUpIiksQ3UoKSxDdSgpLEN1KCksX3UoOSwiZGl2IiwzOCksRHUoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxfdSgxMCwidGItcmFuZ2UtaW5wdXQiLDM5KSxEdSgicmFuZ2VWYWx1ZXNDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPU51KCkuJGltcGxpY2l0O3JldHVybiBOdSgyKS5oYW5kbGVNZXRyaWNGaWx0ZXJDaGFuZ2VkKG8sbil9KSksQ3UoKSxDdSgpLEN1KCkseHUoKX1pZigyJnQpe2NvbnN0IHQ9Rm0oNCksZT1OdSgpLiRpbXBsaWNpdDtEYygxKSxodSgibWF0TWVudVRyaWdnZXJGb3IiLHQpLHltKCJhcmlhLWxhYmVsIiwiRmlsdGVyIG1ldHJpYyAiKyhlLmRpc3BsYXlOYW1lfHxlLnRhZykpLERjKDUpLGh1KCJjaGVja2VkIixlLmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkKSxEYyg0KSxodSgibWluIixlLmZpbHRlci5taW5WYWx1ZSkoIm1heCIsZS5maWx0ZXIubWF4VmFsdWUpKCJsb3dlclZhbHVlIixlLmZpbHRlci5maWx0ZXJMb3dlclZhbHVlKSgidXBwZXJWYWx1ZSIsZS5maWx0ZXIuZmlsdGVyVXBwZXJWYWx1ZSl9fWNvbnN0IGQ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6dCx0YWc6ZX19O2Z1bmN0aW9uIHA0KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsMzApLF91KDEsInNwYW4iLDMxKSxQZigyKSxDdSgpLEhtKDMsYzQsMTEsNywibmctY29udGFpbmVyIiwzMiksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoMik7aHUoIm1hdC1zb3J0LWhlYWRlciIsYXkoMyxkNCxuLlNvcnRUeXBlLk1FVFJJQyx0LnRhZykpLERjKDIpLHdmKHQuZGlzcGxheU5hbWV8fHQudGFnKSxEYygxKSxodSgibmdJZiIsdC5maWx0ZXIpfX1mdW5jdGlvbiBtNCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMTcpLF91KDEsImRpdiIsMTgpLER1KCJtYXRTb3J0Q2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5oYW5kbGVTb3J0Q2hhbmdlKG4pfSkpLEhtKDIsbjQsNiw4LCJzcGFuIiwxOSksSG0oMyxsNCw0LDYsInNwYW4iLDIwKSxIbSg0LHA0LDQsNiwic3BhbiIsMjApLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxodSgibWF0U29ydEFjdGl2ZSIsdC5zb3J0T3B0aW9uLmNvbHVtbiksRGMoMSksaHUoIm5nRm9yT2YiLHQuY29sdW1ucyksRGMoMSksaHUoIm5nRm9yT2YiLHQuaHBhcmFtQ29sdW1ucykoIm5nRm9yVHJhY2tCeSIsdC50cmFja0J5SHBhcmFtQ29sdW1uKSxEYygxKSxodSgibmdGb3JPZiIsdC5tZXRyaWNDb2x1bW5zKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlNZXRyaWNDb2x1bW4pfX1mdW5jdGlvbiB1NCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsInNwYW4iKSxfdSgxLCJtYXQtY2hlY2tib3giLDM3KSxEdSgiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG49TnUoMikuaXRlbTtyZXR1cm4gTnUoKS5vblNlbGVjdGlvblRvZ2dsZS5lbWl0KG4pfSkpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMikuaXRlbTtEYygxKSxodSgiY2hlY2tlZCIsdC5zZWxlY3RlZCl9fWZ1bmN0aW9uIGY0KHQsZSl7aWYoMSZ0JiZNdSgwLCJ0Yi1leHBlcmltZW50LWFsaWFzIiw0OCksMiZ0KXtodSgiYWxpYXMiLE51KDIpLml0ZW0uZXhwZXJpbWVudEFsaWFzKX19ZnVuY3Rpb24gZzQodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwzMSksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDIpLml0ZW07RGMoMSksd2YodC5ydW4ubmFtZSl9fWNvbnN0IGg0PWZ1bmN0aW9uKHQpe3JldHVybnsicnVuLWNvbG9yLXN3YXRjaCI6ITAsIm5vLWNvbG9yIjp0fX07ZnVuY3Rpb24gYjQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJzcGFuIiksX3UoMSwiYnV0dG9uIiw0OSksRHUoImNvbG9yUGlja2VyQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPU51KDIpLml0ZW07cmV0dXJuIE51KCkub25SdW5Db2xvckNoYW5nZS5lbWl0KHtydW5JZDpvLnJ1bi5pZCxuZXdDb2xvcjpufSl9KSksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgyKS5pdGVtO0RjKDEpLGxmKCJiYWNrZ3JvdW5kIix0LnJ1bkNvbG9yKSxodSgibmdDbGFzcyIsaXkoOCxoNCwhdC5ydW5Db2xvcikpKCJjb2xvclBpY2tlciIsdC5ydW5Db2xvcikoImNwRGlhbG9nRGlzcGxheSIsInBvcHVwIikoImNwUG9zaXRpb25PZmZzZXQiLC0yMCkoImNwVXNlUm9vdFZpZXdDb250YWluZXIiLCEwKSgiY3BPdXRwdXRGb3JtYXQiLCJoZXgiKX19ZnVuY3Rpb24geTQodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiw0NSksdnUoMSwyMiksSG0oMix1NCwyLDEsInNwYW4iLDI1KSxIbSgzLGY0LDEsMSwidGItZXhwZXJpbWVudC1hbGlhcyIsNDYpLEhtKDQsZzQsMiwxLCJzcGFuIiw0NyksSG0oNSxiNCwyLDEwLCJzcGFuIiwyNSkseHUoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgyKTtodSgibmdDbGFzcyIsaXkoNixlNCwidGItY29sdW1uLSIrdCkpLERjKDEpLGh1KCJuZ1N3aXRjaCIsdCksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uQ0hFQ0tCT1gpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLkVYUEVSSU1FTlRfTkFNRSksRGMoMSksaHUoIm5nU3dpdGNoQ2FzZSIsbi5SdW5zVGFibGVDb2x1bW4uUlVOX05BTUUpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLlJVTl9DT0xPUil9fWZ1bmN0aW9uIF80KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsNTApLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPU51KCkuaXRlbTtEYygxKSx3ZihuLmhwYXJhbXMuZ2V0KHQubmFtZSkpfX1mdW5jdGlvbiBDNCh0LGUpe2lmKDEmdCYmKF91KDAsInNwYW4iLDUwKSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgpLml0ZW07RGMoMSksd2Yobi5tZXRyaWNzLmdldCh0LnRhZykpfX1mdW5jdGlvbiBNNCh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsNDIpLEhtKDEseTQsNiw4LCJzcGFuIiw0MyksSG0oMixfNCwyLDEsInNwYW4iLDQ0KSxIbSgzLEM0LDIsMSwic3BhbiIsNDQpLEN1KCkpLDImdCl7Y29uc3QgdD1lLml0ZW0sbj1OdSgpO3ltKCJkYXRhLWlkIix0LnJ1bi5pZCksRGMoMSksaHUoIm5nRm9yT2YiLG4uY29sdW1ucyksRGMoMSksaHUoIm5nRm9yT2YiLG4uaHBhcmFtQ29sdW1ucyksRGMoMSksaHUoIm5nRm9yT2YiLG4ubWV0cmljQ29sdW1ucyl9fWNsYXNzIHY0IGV4dGVuZHMgYTF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaXRlbXNQZXJQYWdlTGFiZWw9IlNob3cgcnVuczoifX12NC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9amEodjQpKSkobnx8djQpfX0pKCksdjQuybVwcm92PVNuKHt0b2tlbjp2NCxmYWN0b3J5OnY0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2NCxbe3R5cGU6am19XSxudWxsLG51bGwpO2NsYXNzIHg0e2NvbnN0cnVjdG9yKCl7dGhpcy5kYXRhU291cmNlPW5ldyBMMyx0aGlzLkRvbWFpblR5cGU9RFQsdGhpcy5SdW5zVGFibGVDb2x1bW49VDAsdGhpcy5Tb3J0VHlwZT1xeix0aGlzLm9uUmVnZXhGaWx0ZXJDaGFuZ2U9bmV3IFN5LHRoaXMub25TZWxlY3Rpb25Ub2dnbGU9bmV3IFN5LHRoaXMub25QYWdlU2VsZWN0aW9uVG9nZ2xlPW5ldyBTeSx0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZT1uZXcgU3ksdGhpcy5vblNvcnRDaGFuZ2U9bmV3IFN5LHRoaXMub25SdW5Db2xvckNoYW5nZT1uZXcgU3ksdGhpcy5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZD1uZXcgU3ksdGhpcy5vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZD1uZXcgU3ksdGhpcy5vbk1ldHJpY0ZpbHRlckNoYW5nZWQ9bmV3IFN5fW5nT25DaGFuZ2VzKCl7dGhpcy5kYXRhU291cmNlLmRhdGE9dGhpcy5wYWdlSXRlbXN9Z2V0SHBhcmFtQ29sdW1uSWQodCl7cmV0dXJuYGg6JHt0Lm5hbWV9YH1nZXRNZXRyaWNDb2x1bW5JZCh0KXtyZXR1cm5gbToke3QudGFnfWB9Z2V0Q29sdW1uSWRzKCl7cmV0dXJuWy4uLnRoaXMuY29sdW1ucywuLi50aGlzLmhwYXJhbUNvbHVtbnMubWFwKHRoaXMuZ2V0SHBhcmFtQ29sdW1uSWQpLC4uLnRoaXMubWV0cmljQ29sdW1ucy5tYXAodGhpcy5nZXRNZXRyaWNDb2x1bW5JZCldfWFsbFBhZ2VJdGVtc1NlbGVjdGVkKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5wYWdlSXRlbXMubGVuZ3RoKSYmdGhpcy5wYWdlSXRlbXMuZXZlcnkoKHQ9PnQuc2VsZWN0ZWQpKX1zb21lUGFnZUl0ZW1zU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5wYWdlSXRlbXMuc29tZSgodD0+dC5zZWxlY3RlZCkpfWhhbmRsZVBhZ2VUb2dnbGUoKXt0aGlzLm9uUGFnZVNlbGVjdGlvblRvZ2dsZS5lbWl0KHtpdGVtczp0aGlzLnBhZ2VJdGVtc30pfWhhbmRsZVNvcnRDaGFuZ2UodCl7bGV0IGU7c3dpdGNoKHQuZGlyZWN0aW9uKXtjYXNlImFzYyI6ZT1BSS5BU0M7YnJlYWs7Y2FzZSJkZXNjIjplPUFJLkRFU0M7YnJlYWs7ZGVmYXVsdDplPUFJLlVOU0VUfXRoaXMub25Tb3J0Q2hhbmdlLmVtaXQoe2tleTp0LmFjdGl2ZSxkaXJlY3Rpb246ZX0pfW9uRmlsdGVyS2V5VXAodCl7dGhpcy5vblJlZ2V4RmlsdGVyQ2hhbmdlLmVtaXQodC50YXJnZXQudmFsdWUpfXRhYmxlVHJhY2tCeSh0LGUpe3JldHVybiBlLnJ1bi5pZH1oYW5kbGVIcGFyYW1JbmNsdWRlVW5kZWZpbmVkVG9nZ2xlZCh0KXtjb25zdHtuYW1lOmUsZmlsdGVyOm59PXQ7aWYoIW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO24udHlwZT09PURULkRJU0NSRVRFP3RoaXMub25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQuZW1pdCh7aHBhcmFtTmFtZTplLGluY2x1ZGVVbmRlZmluZWQ6IW4uaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJWYWx1ZXM6bi5maWx0ZXJWYWx1ZXN9KTp0aGlzLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6ZSxpbmNsdWRlVW5kZWZpbmVkOiFuLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTpuLmZpbHRlckxvd2VyVmFsdWUsZmlsdGVyVXBwZXJWYWx1ZTpuLmZpbHRlclVwcGVyVmFsdWV9KX1oYW5kbGVIcGFyYW1JbnRlcnZhbENoYW5nZWQodCxlKXtjb25zdHtuYW1lOm4sZmlsdGVyOm99PXQ7aWYoIW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO3RoaXMub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTpuLGluY2x1ZGVVbmRlZmluZWQ6by5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6ZS5sb3dlclZhbHVlLGZpbHRlclVwcGVyVmFsdWU6ZS51cHBlclZhbHVlfSl9aGFuZGxlSHBhcmFtRGlzY3JldGVDaGFuZ2VkKHQsZSl7Y29uc3R7bmFtZTpuLGZpbHRlcjpvfT10O2lmKCFvKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTtpZihvLnR5cGUhPT1EVC5ESVNDUkVURSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YXJpYW50IGVycm9yOiBleHBlY3RlZCBkaXNjcmV0ZSBkb21haW4gZm9yICR7bn1gKTtjb25zdCBpPW5ldyBTZXQoWy4uLm8uZmlsdGVyVmFsdWVzXSk7aS5oYXMoZSk/aS5kZWxldGUoZSk6aS5hZGQoZSksdGhpcy5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZC5lbWl0KHtocGFyYW1OYW1lOm4saW5jbHVkZVVuZGVmaW5lZDpvLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyVmFsdWVzOlsuLi5pXX0pfWhhbmRsZU1ldHJpY0luY2x1ZGVVbmRlZmluZWRDaGFuZ2VkKHQpe2lmKCF0LmZpbHRlcil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7dGhpcy5vbk1ldHJpY0ZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTp0LnRhZyxpbmNsdWRlVW5kZWZpbmVkOiF0LmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6dC5maWx0ZXIuZmlsdGVyTG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOnQuZmlsdGVyLmZpbHRlclVwcGVyVmFsdWV9KX1oYW5kbGVNZXRyaWNGaWx0ZXJDaGFuZ2VkKHQsZSl7aWYoIXQuZmlsdGVyKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTt0aGlzLm9uTWV0cmljRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOnQudGFnLGluY2x1ZGVVbmRlZmluZWQ6dC5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOmUubG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOmUudXBwZXJWYWx1ZX0pfXRyYWNrQnlIcGFyYW1Db2x1bW4odCl7cmV0dXJuIHQubmFtZX10cmFja0J5TWV0cmljQ29sdW1uKHQpe3JldHVybiB0LnRhZ319eDQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHg0KX0seDQuybVjbXA9c28oe3R5cGU6eDQsc2VsZWN0b3JzOltbInJ1bnMtdGFibGUtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoTDUsNyxLaCksVnkocDEsNyksVnkoaDEsNykpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uZmlsdGVyPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLnBhZ2luYXRvcj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5zb3J0PXQuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY2YoImZsZXgtbGF5b3V0IixuLnVzZUZsZXhpYmxlTGF5b3V0KX0saW5wdXRzOntleHBlcmltZW50SWRzOiJleHBlcmltZW50SWRzIixzaG93RXhwZXJpbWVudE5hbWU6InNob3dFeHBlcmltZW50TmFtZSIsY29sdW1uczoiY29sdW1ucyIsaHBhcmFtQ29sdW1uczoiaHBhcmFtQ29sdW1ucyIsbWV0cmljQ29sdW1uczoibWV0cmljQ29sdW1ucyIsYWxsSXRlbXNMZW5ndGg6ImFsbEl0ZW1zTGVuZ3RoIixmaWx0ZXJlZEl0ZW1zTGVuZ3RoOiJmaWx0ZXJlZEl0ZW1zTGVuZ3RoIix1c2VGbGV4aWJsZUxheW91dDoidXNlRmxleGlibGVMYXlvdXQiLHVzZVBhZ2luYXRpb246InVzZVBhZ2luYXRpb24iLHNob3dHcm91cENvbnRyb2w6InNob3dHcm91cENvbnRyb2wiLHBhZ2VJdGVtczoicGFnZUl0ZW1zIixsb2FkaW5nOiJsb2FkaW5nIixudW1TZWxlY3RlZEl0ZW1zOiJudW1TZWxlY3RlZEl0ZW1zIixzb3J0T3B0aW9uOiJzb3J0T3B0aW9uIixwYWdpbmF0aW9uT3B0aW9uOiJwYWdpbmF0aW9uT3B0aW9uIixyZWdleEZpbHRlcjoicmVnZXhGaWx0ZXIifSxvdXRwdXRzOntvblJlZ2V4RmlsdGVyQ2hhbmdlOiJvblJlZ2V4RmlsdGVyQ2hhbmdlIixvblNlbGVjdGlvblRvZ2dsZToib25TZWxlY3Rpb25Ub2dnbGUiLG9uUGFnZVNlbGVjdGlvblRvZ2dsZToib25QYWdlU2VsZWN0aW9uVG9nZ2xlIixvblBhZ2luYXRpb25DaGFuZ2U6Im9uUGFnaW5hdGlvbkNoYW5nZSIsb25Tb3J0Q2hhbmdlOiJvblNvcnRDaGFuZ2UiLG9uUnVuQ29sb3JDaGFuZ2U6Im9uUnVuQ29sb3JDaGFuZ2UiLG9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkOiJvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCIsb25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQ6Im9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkIixvbk1ldHJpY0ZpbHRlckNoYW5nZWQ6Im9uTWV0cmljRmlsdGVyQ2hhbmdlZCJ9LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6YTEsdXNlQ2xhc3M6djR9XSkscW9dLGRlY2xzOjE1LHZhcnM6OCxjb25zdHM6W1sxLCJmaWx0ZXItcm93Il0sWyJwbGFjZWhvbGRlciIsIkZpbHRlciBydW5zIChyZWdleCkiLDEsInJ1bi1maWx0ZXIiLDMsInZhbHVlIiwia2V5dXAiXSxbMSwidGFibGUtY29udGFpbmVyIl0sWyJyb2xlIiwidGFibGUiXSxbNCwibmdUZW1wbGF0ZU91dGxldCJdLFsicm9sZSIsInJvd2dyb3VwIiwxLCJyb3dzIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiY2xhc3MiLCJsb2FkaW5nIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vLXJ1bnMiLDQsIm5nSWYiXSxbInNob3dGaXJzdExhc3RCdXR0b25zIiwiIiwzLCJwYWdlU2l6ZU9wdGlvbnMiLCJwYWdlSW5kZXgiLCJwYWdlU2l6ZSIsImxlbmd0aCIsInBhZ2UiLDQsIm5nSWYiXSxbImhlYWRlciIsIiJdLFsicm93IiwiIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJsb2FkaW5nIl0sWyJtb2RlIiwiaW5kZXRlcm1pbmF0ZSIsImRpYW1ldGVyIiwiMjgiXSxbMSwibm8tcnVucyJdLFsic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLCIiLDMsInBhZ2VTaXplT3B0aW9ucyIsInBhZ2VJbmRleCIsInBhZ2VTaXplIiwibGVuZ3RoIiwicGFnZSJdLFsicm9sZSIsInJvd2dyb3VwIiwxLCJoZWFkZXIiXSxbIm1hdFNvcnQiLCIiLCJyb2xlIiwicm93IiwzLCJtYXRTb3J0QWN0aXZlIiwibWF0U29ydENoYW5nZSJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsMywibmdDbGFzcyIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJjb2x1bW4iLDMsIm1hdC1zb3J0LWhlYWRlciIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwzLCJuZ0NsYXNzIl0sWzMsIm5nU3dpdGNoIl0sWzMsImNoZWNrZWQiLCJpbmRldGVybWluYXRlIiwiY2hhbmdlIiw0LCJuZ1N3aXRjaENhc2UiXSxbMywibWF0LXNvcnQtaGVhZGVyIiw0LCJuZ1N3aXRjaENhc2UiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzMsImNoZWNrZWQiLCJpbmRldGVybWluYXRlIiwiY2hhbmdlIl0sWzMsIm1hdC1zb3J0LWhlYWRlciJdLFszLCJleHBlcmltZW50SWRzIiw0LCJuZ0lmIl0sWzMsImV4cGVyaW1lbnRJZHMiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImNvbHVtbiIsMywibWF0LXNvcnQtaGVhZGVyIl0sWzEsIm5hbWUiXSxbNCwibmdJZiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwzLCJtYXRNZW51VHJpZ2dlckZvciIsImNsaWNrIl0sWyJzdmdJY29uIiwiZmlsdGVyX2FsdF8yNHB4Il0sWyJmaWx0ZXJNZW51IiwibWF0TWVudSJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbWNoZWNrYm94IiwiZGlzYWJsZVJpcHBsZSIsIiIsMSwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93IiwzLCJjbGljayJdLFszLCJjaGVja2VkIiwiY2hhbmdlIl0sWyJkaXNhYmxlUmlwcGxlIiwiIiwibWF0LW1lbnUtaXRlbSIsIiIsMSwicmFuZ2UtaW5wdXQtY29udGFpbmVyIiwzLCJjbGljayJdLFszLCJtaW4iLCJtYXgiLCJsb3dlclZhbHVlIiwidXBwZXJWYWx1ZSIsInJhbmdlVmFsdWVzQ2hhbmdlZCJdLFsibWF0LW1lbnUtaXRlbSIsIiIsImNsYXNzIiwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93Iiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLDMsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1jaGVja2JveCIsMSwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93IiwzLCJjbGljayJdLFsicm9sZSIsInJvdyJdLFsicm9sZSIsImNlbGwiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImNlbGwiLCJjbGFzcyIsImNvbHVtbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJyb2xlIiwiY2VsbCIsMywibmdDbGFzcyJdLFszLCJhbGlhcyIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsIm5hbWUiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJhbGlhcyJdLFszLCJuZ0NsYXNzIiwiY29sb3JQaWNrZXIiLCJjcERpYWxvZ0Rpc3BsYXkiLCJjcFBvc2l0aW9uT2Zmc2V0IiwiY3BVc2VSb290Vmlld0NvbnRhaW5lciIsImNwT3V0cHV0Rm9ybWF0IiwiY29sb3JQaWNrZXJDaGFuZ2UiXSxbInJvbGUiLCJjZWxsIiwxLCJjb2x1bW4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwidGItZmlsdGVyLWlucHV0IiwxKSxEdSgia2V5dXAiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uRmlsdGVyS2V5VXAoZSl9KSksQ3UoKSxDdSgpLF91KDIsImRpdiIsMiksX3UoMywiZGl2IiwzKSxIbSg0LEI1LDEsMCwibmctY29udGFpbmVyIiw0KSxfdSg1LCJkaXYiLDUpLEhtKDYsajUsMiw0LCJuZy1jb250YWluZXIiLDYpLEN1KCksQ3UoKSxIbSg3LFc1LDIsMCwiZGl2Iiw3KSxIbSg4LEc1LDIsMCwiZGl2Iiw4KSxIbSg5LFk1LDYsMSwiZGl2Iiw4KSxDdSgpLEhtKDEwLFo1LDEsNSwibWF0LXBhZ2luYXRvciIsOSksSG0oMTEsbTQsNSw2LCJuZy10ZW1wbGF0ZSIsbnVsbCwxMCxxeSksSG0oMTMsTTQsNCw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwxMSxxeSkpLDImZSl7Y29uc3QgdD1GbSgxMik7RGMoMSksRnUoInZhbHVlIixuLnJlZ2V4RmlsdGVyKSxEYygzKSxodSgibmdUZW1wbGF0ZU91dGxldCIsdCksRGMoMiksaHUoIm5nRm9yT2YiLG4ucGFnZUl0ZW1zKSgibmdGb3JUcmFja0J5IixuLnRhYmxlVHJhY2tCeSksRGMoMSksaHUoIm5nSWYiLG4ubG9hZGluZyksRGMoMSksaHUoIm5nSWYiLCFuLmxvYWRpbmcmJjA9PT1uLmFsbEl0ZW1zTGVuZ3RoKSxEYygxKSxodSgibmdJZiIsIW4ubG9hZGluZyYmbi5hbGxJdGVtc0xlbmd0aD4wJiYwPT09bi5maWx0ZXJlZEl0ZW1zTGVuZ3RoKSxEYygxKSxodSgibmdJZiIsbi51c2VQYWdpbmF0aW9uKX19LGRpcmVjdGl2ZXM6W2kyLEl2LHh2LFB2LGcyLHAxLGgxLEN2LER2LFJ2LGtaLHgxLEYyLFdMLG9aLEVxLFFxLHFxLGoyLFgyLEg1XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtc2l6ZToxM3B4O292ZXJmbG93OmhpZGRlbn0uZmlsdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lfS50YWJsZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46bGF5b3V0IHBhaW50O2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlO292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OmF1dG87d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLHNjcm9sbC1wb3NpdGlvbn0uZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgLm5hbWVbX25nY29udGVudC0lQ09NUCVde3dvcmQtYnJlYWs6YnJlYWstd29yZDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZy1ib3R0b206MTJweH1ib2R5LmRhcmstbW9kZSAgIC5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0gICBtYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlfVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgW3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPWNvbHVtbmhlYWRlcl1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTp0YWJsZS1yb3c7aGVpZ2h0OjQzcHh9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzo1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBbcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDoyNHB4fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDoyNHB4fVtyb2xlPXJvd2dyb3VwXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXB9W3JvbGU9cm93Z3JvdXBdLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9LmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdLCAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm5vLXJ1bnNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OmNlbnRlcn0uc2VsZWN0LWFsbFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MTJweDtwYWRkaW5nLXRvcDoxMnB4fS5zZWxlY3QtYWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAuc2VsZWN0LWFsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNjt0ZXh0LWFsaWduOmxlZnR9LnNlbGVjdC1hbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nOjAgNHB4fS5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHggMCAyMXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgdGItZmlsdGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MX0udGItY29sdW1uLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIwcHh9LnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS5ydW4tY29sb3Itc3dhdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7b3V0bGluZTpub25lfS5ydW4tY29sb3Itc3dhdGNoLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2M2Y2FkMTtib3JkZXItd2lkdGg6MnB4fS5yYW5nZS1pbnB1dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDphdXRvfVtfbmdob3N0LSVDT01QJV0gICAgIG1hdC1wYWdpbmF0b3IgbWF0LWZvcm0tZmllbGR7bWFyZ2luOjB9LmZpbHRlci1tZW51LWNoZWNrYm94LXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBtYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgICBsYWJlbHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyfS5maWx0ZXItbWVudS1jaGVja2JveC1yb3dbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgbGFiZWwgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6MH0uZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAgIGxhYmVsIC5tYXQtY2hlY2tib3gtbGFiZWx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgbWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeDQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicnVucy10YWJsZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJydW5zX3RhYmxlX2NvbXBvbmVudC5uZy5odG1sIixob3N0OnsiW2NsYXNzLmZsZXgtbGF5b3V0XSI6InVzZUZsZXhpYmxlTGF5b3V0In0sc3R5bGVVcmxzOlsicnVuc190YWJsZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOmExLHVzZUNsYXNzOnY0fV19XX1dLG51bGwse2V4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV0sc2hvd0V4cGVyaW1lbnROYW1lOlt7dHlwZTpSX31dLGNvbHVtbnM6W3t0eXBlOlJffV0saHBhcmFtQ29sdW1uczpbe3R5cGU6Ul99XSxtZXRyaWNDb2x1bW5zOlt7dHlwZTpSX31dLGFsbEl0ZW1zTGVuZ3RoOlt7dHlwZTpSX31dLGZpbHRlcmVkSXRlbXNMZW5ndGg6W3t0eXBlOlJffV0sdXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOlJffV0sdXNlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XSxzaG93R3JvdXBDb250cm9sOlt7dHlwZTpSX31dLHBhZ2VJdGVtczpbe3R5cGU6Ul99XSxsb2FkaW5nOlt7dHlwZTpSX31dLG51bVNlbGVjdGVkSXRlbXM6W3t0eXBlOlJffV0sc29ydE9wdGlvbjpbe3R5cGU6Ul99XSxwYWdpbmF0aW9uT3B0aW9uOlt7dHlwZTpSX31dLHJlZ2V4RmlsdGVyOlt7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJDaGFuZ2U6W3t0eXBlOkVffV0sb25TZWxlY3Rpb25Ub2dnbGU6W3t0eXBlOkVffV0sb25QYWdlU2VsZWN0aW9uVG9nZ2xlOlt7dHlwZTpFX31dLG9uUGFnaW5hdGlvbkNoYW5nZTpbe3R5cGU6RV99XSxvblNvcnRDaGFuZ2U6W3t0eXBlOkVffV0sb25SdW5Db2xvckNoYW5nZTpbe3R5cGU6RV99XSxvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZDpbe3R5cGU6RV99XSxvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZDpbe3R5cGU6RV99XSxvbk1ldHJpY0ZpbHRlckNoYW5nZWQ6W3t0eXBlOkVffV0sZmlsdGVyOlt7dHlwZTphcixhcmdzOlsiZmlsdGVyIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLHBhZ2luYXRvcjpbe3R5cGU6YXIsYXJnczpbcDEse3N0YXRpYzohMH1dfV0sc29ydDpbe3R5cGU6YXIsYXJnczpbaDEse3N0YXRpYzohMH1dfV19KTtjb25zdCBPND1iUyhhSSwodD0+dC5zdGF0ZT09PUdFLkxPQURJTkcpKTtmdW5jdGlvbiBQNCh0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgcXouRVhQRVJJTUVOVF9OQU1FOnJldHVyblt0LmV4cGVyaW1lbnRBbGlhcyx0LnJ1bi5uYW1lLHQucnVuLmlkXTtjYXNlIHF6LlJVTl9OQU1FOnJldHVyblt0LnJ1bi5uYW1lLHQuZXhwZXJpbWVudEFsaWFzLHQucnVuLmlkXTtjYXNlIHF6LkhQQVJBTTpyZXR1cm5bdC5ocGFyYW1zLmdldChlLm5hbWUpLHQucnVuLm5hbWUsdC5leHBlcmltZW50QWxpYXMsdC5ydW4uaWRdO2Nhc2UgcXouTUVUUklDOnJldHVyblt0Lm1ldHJpY3MuZ2V0KGUudGFnKSx0LnJ1bi5uYW1lLHQuZXhwZXJpbWVudEFsaWFzLHQucnVuLmlkXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZDogJHtlfWApfX1mdW5jdGlvbiB3NCh0LGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHQuaW5jbHVkZVVuZGVmaW5lZDtpZih0LnR5cGU9PT1EVC5ESVNDUkVURSl7cmV0dXJuIHQuZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGUpfXJldHVybiB0LnR5cGU9PT1EVC5JTlRFUlZBTCYmKHQuZmlsdGVyTG93ZXJWYWx1ZTw9ZSYmZTw9dC5maWx0ZXJVcHBlclZhbHVlKX1jbGFzcyBrNHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5sb2FkaW5nJD1udWxsLHRoaXMuaHBhcmFtQ29sdW1ucyQ9enQoW10pLHRoaXMubWV0cmljQ29sdW1ucyQ9enQoW10pLHRoaXMudXNlRmxleGlibGVMYXlvdXQ9ITEsdGhpcy51c2VQYWdpbmF0aW9uPSExLHRoaXMuY29sdW1ucz1bVDAuUlVOX05BTUVdLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzPSExLHRoaXMuc29ydE9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QocEkpLHRoaXMucGFnaW5hdGlvbk9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QoZEkpLHRoaXMucmVnZXhGaWx0ZXIkPXRoaXMuc3RvcmUuc2VsZWN0KGxJKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9aXNFeHBlcmltZW50TmFtZVZpc2libGUoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoKHQ9PnQ9PT1UMC5FWFBFUklNRU5UX05BTUUpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9S3QodGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5nZXRSdW5UYWJsZUl0ZW1zRm9yRXhwZXJpbWVudCh0KSkpKS5waXBlKFZ0KCh0PT5bXS5jb25jYXQoLi4udCkpKSk7dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkPXQucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKDEpKSx0aGlzLmFsbEl0ZW1zTGVuZ3RoJD10aGlzLmFsbFVuc29ydGVkUnVuVGFibGVJdGVtcyQucGlwZShWdCgodD0+dC5sZW5ndGgpKSk7Y29uc3QgZT10aGlzLmdldEZpbHRlcmVkSXRlbXMkKHRoaXMuYWxsVW5zb3J0ZWRSdW5UYWJsZUl0ZW1zJCkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKDEpKTt0aGlzLmZpbHRlcmVkSXRlbXNMZW5ndGgkPWUucGlwZShWdCgodD0+dC5sZW5ndGgpKSksdGhpcy5wYWdlSXRlbXMkPXRoaXMuc29ydGVkQW5kU2xpY2VkSXRlbXMkKGUpLHRoaXMubnVtU2VsZWN0ZWRJdGVtcyQ9dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkLnBpcGUoVnQoKHQ9PnQucmVkdWNlKCgodCxlKT0+dCtOdW1iZXIoZS5zZWxlY3RlZCkpLDApKSkpO2NvbnN0IG49dGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QoTzQse2V4cGVyaW1lbnRJZDp0fSkpKTtpZih0aGlzLmxvYWRpbmckPUt0KG4pLnBpcGUoVnQoKHQ9PnQuc29tZSgodD0+dCkpKSkpLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzKXtjb25zdCB0PXRoaXMuc3RvcmUuc2VsZWN0KEwwLHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pO3RoaXMuaHBhcmFtQ29sdW1ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KEkwLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoVnQoKChbdCx7aHBhcmFtczplfV0pPT5lLm1hcCgoKHtuYW1lOmUsZGlzcGxheU5hbWU6bn0pPT57Y29uc3Qgbz10LmdldChlKTtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YXJpYW50IGVycm9yOiBhIGZpbHRlciBmb3IgJHtlfSBtdXN0IGV4aXN0IHdoZW4gdGhlIGhwYXJhbSBleGlzdHNgKTtyZXR1cm57ZGlzcGxheU5hbWU6bixuYW1lOmUsZmlsdGVyOm99fSkpKSkpLHRoaXMubWV0cmljQ29sdW1ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KEYwLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoVnQoKChbdCx7bWV0cmljczplfV0pPT5lLm1hcCgoKHt0YWc6ZSxkaXNwbGF5TmFtZTpufSk9Pntjb25zdCBvPXQuZ2V0KGUpO2lmKCFvKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZmlsdGVyIGZvciAke2V9IG11c3QgZXhpc3Qgd2hlbiB0aGUgbWV0cmljIGV4aXN0c2ApO3JldHVybntkaXNwbGF5TmFtZTpuLHRhZzplLGZpbHRlcjpvfX0pKSkpKX1pZih0aGlzLmNvbHVtbnMuaW5jbHVkZXMoVDAuQ0hFQ0tCT1gpKXt0aGlzLnN0b3JlLnNlbGVjdChDUikucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHdlKCgodCxlKT0+T0QodCxlKSkpLFZlKCgoKT0+dC5waXBlKGZlKCh0PT50Lmxlbmd0aD41MDApKSx2ZSgxKSkpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goZUgoe2xvY2FsaXplZE1lc3NhZ2U6IlRoZSBudW1iZXIgb2YgcnVucyBleGNlZWRzIDUwMC4gTmV3IHJ1bnMgYXJlIHVuc2VsZWN0ZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIn0pKX0pKX10aGlzLnNob3dHcm91cENvbnRyb2wkPXRoaXMuc3RvcmUuc2VsZWN0KEdEKS5waXBlKFZ0KCh0PT50JiZ0aGlzLmNvbHVtbnMuaW5jbHVkZXMoVDAuUlVOX0NPTE9SKSkpKSx0aGlzLnN0b3JlLmRpc3BhdGNoKE9UKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9Z2V0RmlsdGVyZWRJdGVtcyQodCl7cmV0dXJuIEt0KFt0LHRoaXMuc3RvcmUuc2VsZWN0KGxJKV0pLnBpcGUoVnQoKChbdCxlXSk9PntpZighZSlyZXR1cm4gdDtjb25zdCBuPXRoaXMuY29sdW1ucy5pbmNsdWRlcyhUMC5FWFBFUklNRU5UX05BTUUpO3JldHVybiB0LmZpbHRlcigodD0+a0koe3J1bk5hbWU6dC5ydW4ubmFtZSxleHBlcmltZW50QWxpYXM6dC5leHBlcmltZW50QWxpYXN9LGUsbikpKX0pKSxWZSgodD0+dGhpcy5zaG93SHBhcmFtc0FuZE1ldHJpY3M/S3QodGhpcy5zdG9yZS5zZWxlY3QoSTAsdGhpcy5leHBlcmltZW50SWRzKSx0aGlzLnN0b3JlLnNlbGVjdChGMCx0aGlzLmV4cGVyaW1lbnRJZHMpKS5waXBlKFZ0KCgoW2Usbl0pPT50LmZpbHRlcigoKHtocGFyYW1zOnQsbWV0cmljczpvfSk9PlsuLi5lLmVudHJpZXMoKV0uZXZlcnkoKChbZSxuXSk9Pnc0KG4sdC5nZXQoZSkpKSkmJlsuLi5uLmVudHJpZXMoKV0uZXZlcnkoKChbdCxlXSk9Pnc0KGUsby5nZXQodCkpKSkpKSkpKTp6dCh0KSkpKX1zb3J0ZWRBbmRTbGljZWRJdGVtcyQodCl7Y29uc3QgZT1LdChbdCx0aGlzLnN0b3JlLnNlbGVjdChwSSldKS5waXBlKFZ0KCgoW3QsZV0pPT4oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49ZS5rZXksbz1bLi4udF07cmV0dXJuIG51bGw9PT1ufHxlLmRpcmVjdGlvbj09PUFJLlVOU0VUfHxvLnNvcnQoKCh0LG8pPT57Y29uc3QgaT1QNCh0LG4pLGE9UDQobyxuKTtpZihpLmxlbmd0aCE9PWEubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgSW52YXJpYW50IGVycm9yOiBhIGdpdmVuIHNvcnQgc2hvdWxkIHJlc3VsdCBpbiBzYW1lIG51bWJlciBvZiBpdGVtczogJHtlfWApO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBuPWlbdF0sbz1hW3RdO2lmKG4hPT1vKXtpZih2b2lkIDA9PT1ufHx2b2lkIDA9PT1vKXJldHVybiB2b2lkIDA9PT1vPy0xOjE7aWYodHlwZW9mIG4hPXR5cGVvZiBvKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbXBhcmUgdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlczogJHt0eXBlb2Ygbn0gdnMuICR7dHlwZW9mIG99YCk7cmV0dXJuIG48bz09KGUuZGlyZWN0aW9uPT09QUkuQVNDKT8tMToxfX1yZXR1cm4gMH0pKSxvfSkodCxlKSkpKTtyZXR1cm4gS3QoW2UsdGhpcy5zdG9yZS5zZWxlY3QoZEkpXSkucGlwZShWdCgoKFt0LGVdKT0+e2lmKCF0aGlzLnVzZVBhZ2luYXRpb24pcmV0dXJuIHQuc2xpY2UoKTtjb25zdHtwYWdlU2l6ZTpuLHBhZ2VJbmRleDpvfT1lO3JldHVybiB0LnNsaWNlKG8qbiwobysxKSpuKX0pKSxCZShbXSkpfWdldFJ1blRhYmxlSXRlbXNGb3JFeHBlcmltZW50KHQpe3JldHVybiBLdChbdGhpcy5zdG9yZS5zZWxlY3Qobkkse2V4cGVyaW1lbnRJZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QoWFQse2V4cGVyaW1lbnRJZDp0fSksdGhpcy5zdG9yZS5zZWxlY3QoREkpLHRoaXMuc3RvcmUuc2VsZWN0KFJJKSx0aGlzLnN0b3JlLnNlbGVjdChTUildKS5waXBlKFZ0KCgoW2UsbixvLGksYV0pPT5lLm1hcCgoZT0+e2NvbnN0IHI9bmV3IE1hcDsoZS5ocGFyYW1zfHxbXSkuZm9yRWFjaCgodD0+e3Iuc2V0KHQubmFtZSx0LnZhbHVlKX0pKTtjb25zdCBzPW5ldyBNYXA7cmV0dXJuKGUubWV0cmljc3x8W10pLmZvckVhY2goKHQ9PntzLnNldCh0LnRhZyx0LnZhbHVlKX0pKSx7cnVuOmUsZXhwZXJpbWVudE5hbWU6KG51bGw9PW4/dm9pZCAwOm4ubmFtZSl8fCIiLGV4cGVyaW1lbnRBbGlhczphW3RdLHNlbGVjdGVkOkJvb2xlYW4obyYmby5nZXQoZS5pZCkpLHJ1bkNvbG9yOmlbZS5pZF0saHBhcmFtczpyLG1ldHJpY3M6c319KSkpKSl9b25SdW5TZWxlY3Rpb25Ub2dnbGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh5VCh7cnVuSWQ6dC5ydW4uaWR9KSl9b25QYWdlU2VsZWN0aW9uVG9nZ2xlKHQpe2NvbnN0e2l0ZW1zOmV9PXQsbj1lLm1hcCgoKHtydW46dH0pPT50LmlkKSk7dGhpcy5zdG9yZS5kaXNwYXRjaChfVCh7cnVuSWRzOm59KSl9b25QYWdpbmF0aW9uQ2hhbmdlKHQpe2lmKCF0aGlzLnVzZVBhZ2luYXRpb24pdGhyb3cgbmV3IEVycm9yKCJQYWdpbmF0aW9uIGV2ZW50cyBjYW5ub3QgYmUgZGlzcGF0Y2hlZCB3aGVuIHBhZ2luYXRpb24gaXMgZGlzYWJsZWQiKTtjb25zdHtwYWdlSW5kZXg6ZSxwYWdlU2l6ZTpufT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goQ1Qoe3BhZ2VJbmRleDplLHBhZ2VTaXplOm59KSl9b25Tb3J0Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goTVQodCkpfW9uUmVnZXhGaWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh2VCh7cmVnZXhTdHJpbmc6dH0pKX1vblJ1bkNvbG9yQ2hhbmdlKHtydW5JZDp0LG5ld0NvbG9yOmV9KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHhUKHtydW5JZDp0LG5ld0NvbG9yOmV9KSl9b25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQodCl7Y29uc3R7aHBhcmFtTmFtZTplLGZpbHRlclZhbHVlczpuLGluY2x1ZGVVbmRlZmluZWQ6b309dDt0aGlzLnN0b3JlLmRpc3BhdGNoKEVUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyVmFsdWVzOm4saW5jbHVkZVVuZGVmaW5lZDpvfSkpfW9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKHQpe2NvbnN0e25hbWU6ZSxmaWx0ZXJMb3dlclZhbHVlOm4sZmlsdGVyVXBwZXJWYWx1ZTpvLGluY2x1ZGVVbmRlZmluZWQ6aX09dDt0aGlzLnN0b3JlLmRpc3BhdGNoKEFUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyTG93ZXJWYWx1ZTpuLGZpbHRlclVwcGVyVmFsdWU6byxpbmNsdWRlVW5kZWZpbmVkOml9KSl9b25NZXRyaWNGaWx0ZXJDaGFuZ2VkKHQpe2NvbnN0e25hbWU6ZSxpbmNsdWRlVW5kZWZpbmVkOm4sZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aX09dDt0aGlzLnN0b3JlLmRpc3BhdGNoKFRUKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxtZXRyaWNUYWc6ZSxpbmNsdWRlVW5kZWZpbmVkOm4sZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aX0pKX19azQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGs0KShmdShpUykpfSxrNC7JtWNtcD1zbyh7dHlwZTprNCxzZWxlY3RvcnM6W1sicnVucy10YWJsZSJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigiZmxleC1sYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpfSxpbnB1dHM6e3VzZUZsZXhpYmxlTGF5b3V0OiJ1c2VGbGV4aWJsZUxheW91dCIsdXNlUGFnaW5hdGlvbjoidXNlUGFnaW5hdGlvbiIsY29sdW1uczoiY29sdW1ucyIsZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyIsc2hvd0hwYXJhbXNBbmRNZXRyaWNzOiJzaG93SHBhcmFtc0FuZE1ldHJpY3MifSxkZWNsczoxMix2YXJzOjM4LGNvbnN0czpbWzMsImV4cGVyaW1lbnRJZHMiLCJ1c2VGbGV4aWJsZUxheW91dCIsIm51bVNlbGVjdGVkSXRlbXMiLCJjb2x1bW5zIiwiaHBhcmFtQ29sdW1ucyIsIm1ldHJpY0NvbHVtbnMiLCJzaG93RXhwZXJpbWVudE5hbWUiLCJwYWdlSXRlbXMiLCJmaWx0ZXJlZEl0ZW1zTGVuZ3RoIiwiYWxsSXRlbXNMZW5ndGgiLCJsb2FkaW5nIiwicGFnaW5hdGlvbk9wdGlvbiIsInJlZ2V4RmlsdGVyIiwic2hvd0dyb3VwQ29udHJvbCIsInNvcnRPcHRpb24iLCJ1c2VQYWdpbmF0aW9uIiwib25TZWxlY3Rpb25Ub2dnbGUiLCJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLCJvblBhZ2luYXRpb25DaGFuZ2UiLCJvblJlZ2V4RmlsdGVyQ2hhbmdlIiwib25Tb3J0Q2hhbmdlIiwib25SdW5Db2xvckNoYW5nZSIsIm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkIiwib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQiLCJvbk1ldHJpY0ZpbHRlckNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsInJ1bnMtdGFibGUtY29tcG9uZW50IiwwKSxEdSgib25TZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUnVuU2VsZWN0aW9uVG9nZ2xlKGUpfSkpKCJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGFnZVNlbGVjdGlvblRvZ2dsZShlKX0pKSgib25QYWdpbmF0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblBhZ2luYXRpb25DaGFuZ2UoZSl9KSkoIm9uUmVnZXhGaWx0ZXJDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVnZXhGaWx0ZXJDaGFuZ2UoZSl9KSkoIm9uU29ydENoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Tb3J0Q2hhbmdlKGUpfSkpKCJvblJ1bkNvbG9yQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJ1bkNvbG9yQ2hhbmdlKGUpfSkpKCJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQoZSl9KSkoIm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZChlKX0pKSgib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbk1ldHJpY0ZpbHRlckNoYW5nZWQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksX3koMTAsImFzeW5jIiksX3koMTEsImFzeW5jIiksQ3UoKSksMiZlJiZodSgiZXhwZXJpbWVudElkcyIsbi5leHBlcmltZW50SWRzKSgidXNlRmxleGlibGVMYXlvdXQiLG4udXNlRmxleGlibGVMYXlvdXQpKCJudW1TZWxlY3RlZEl0ZW1zIixDeSgxLDE2LG4ubnVtU2VsZWN0ZWRJdGVtcyQpKSgiY29sdW1ucyIsbi5jb2x1bW5zKSgiaHBhcmFtQ29sdW1ucyIsQ3koMiwxOCxuLmhwYXJhbUNvbHVtbnMkKSkoIm1ldHJpY0NvbHVtbnMiLEN5KDMsMjAsbi5tZXRyaWNDb2x1bW5zJCkpKCJzaG93RXhwZXJpbWVudE5hbWUiLG4uaXNFeHBlcmltZW50TmFtZVZpc2libGUoKSkoInBhZ2VJdGVtcyIsQ3koNCwyMixuLnBhZ2VJdGVtcyQpKSgiZmlsdGVyZWRJdGVtc0xlbmd0aCIsQ3koNSwyNCxuLmZpbHRlcmVkSXRlbXNMZW5ndGgkKSkoImFsbEl0ZW1zTGVuZ3RoIixDeSg2LDI2LG4uYWxsSXRlbXNMZW5ndGgkKSkoImxvYWRpbmciLEN5KDcsMjgsbi5sb2FkaW5nJCkpKCJwYWdpbmF0aW9uT3B0aW9uIixDeSg4LDMwLG4ucGFnaW5hdGlvbk9wdGlvbiQpKSgicmVnZXhGaWx0ZXIiLEN5KDksMzIsbi5yZWdleEZpbHRlciQpKSgic2hvd0dyb3VwQ29udHJvbCIsQ3koMTAsMzQsbi5zaG93R3JvdXBDb250cm9sJCkpKCJzb3J0T3B0aW9uIixDeSgxMSwzNixuLnNvcnRPcHRpb24kKSkoInVzZVBhZ2luYXRpb24iLG4udXNlUGFnaW5hdGlvbil9LGRpcmVjdGl2ZXM6W3g0XSxwaXBlczpbVnZdLHN0eWxlczpbIi5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuXG4gICAgICAuZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgID4gcnVucy10YWJsZS1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGs0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtdGFibGUiLHRlbXBsYXRlOidcbiAgICA8cnVucy10YWJsZS1jb21wb25lbnRcbiAgICAgIFtleHBlcmltZW50SWRzXT0iZXhwZXJpbWVudElkcyJcbiAgICAgIFt1c2VGbGV4aWJsZUxheW91dF09InVzZUZsZXhpYmxlTGF5b3V0IlxuICAgICAgW251bVNlbGVjdGVkSXRlbXNdPSJudW1TZWxlY3RlZEl0ZW1zJCB8IGFzeW5jIlxuICAgICAgW2NvbHVtbnNdPSJjb2x1bW5zIlxuICAgICAgW2hwYXJhbUNvbHVtbnNdPSJocGFyYW1Db2x1bW5zJCB8IGFzeW5jIlxuICAgICAgW21ldHJpY0NvbHVtbnNdPSJtZXRyaWNDb2x1bW5zJCB8IGFzeW5jIlxuICAgICAgW3Nob3dFeHBlcmltZW50TmFtZV09ImlzRXhwZXJpbWVudE5hbWVWaXNpYmxlKCkiXG4gICAgICBbcGFnZUl0ZW1zXT0icGFnZUl0ZW1zJCB8IGFzeW5jIlxuICAgICAgW2ZpbHRlcmVkSXRlbXNMZW5ndGhdPSJmaWx0ZXJlZEl0ZW1zTGVuZ3RoJCB8IGFzeW5jIlxuICAgICAgW2FsbEl0ZW1zTGVuZ3RoXT0iYWxsSXRlbXNMZW5ndGgkIHwgYXN5bmMiXG4gICAgICBbbG9hZGluZ109ImxvYWRpbmckIHwgYXN5bmMiXG4gICAgICBbcGFnaW5hdGlvbk9wdGlvbl09InBhZ2luYXRpb25PcHRpb24kIHwgYXN5bmMiXG4gICAgICBbcmVnZXhGaWx0ZXJdPSJyZWdleEZpbHRlciQgfCBhc3luYyJcbiAgICAgIFtzaG93R3JvdXBDb250cm9sXT0ic2hvd0dyb3VwQ29udHJvbCQgfCBhc3luYyJcbiAgICAgIFtzb3J0T3B0aW9uXT0ic29ydE9wdGlvbiQgfCBhc3luYyJcbiAgICAgIFt1c2VQYWdpbmF0aW9uXT0idXNlUGFnaW5hdGlvbiJcbiAgICAgIChvblNlbGVjdGlvblRvZ2dsZSk9Im9uUnVuU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkiXG4gICAgICAob25QYWdlU2VsZWN0aW9uVG9nZ2xlKT0ib25QYWdlU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkiXG4gICAgICAob25QYWdpbmF0aW9uQ2hhbmdlKT0ib25QYWdpbmF0aW9uQ2hhbmdlKCRldmVudCkiXG4gICAgICAob25SZWdleEZpbHRlckNoYW5nZSk9Im9uUmVnZXhGaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblNvcnRDaGFuZ2UpPSJvblNvcnRDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblJ1bkNvbG9yQ2hhbmdlKT0ib25SdW5Db2xvckNoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKT0ib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIChvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCk9Im9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkKCRldmVudCkiXG4gICAgICAob25NZXRyaWNGaWx0ZXJDaGFuZ2VkKT0ib25NZXRyaWNGaWx0ZXJDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvcnVucy10YWJsZS1jb21wb25lbnQ+XG4gICcsaG9zdDp7IltjbGFzcy5mbGV4LWxheW91dF0iOiJ1c2VGbGV4aWJsZUxheW91dCJ9LHN0eWxlczpbIlxuICAgICAgOmhvc3QuZmxleC1sYXlvdXQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdC5mbGV4LWxheW91dCA+IHJ1bnMtdGFibGUtY29tcG9uZW50IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7dXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOlJffV0sdXNlUGFnaW5hdGlvbjpbe3R5cGU6Ul99XSxjb2x1bW5zOlt7dHlwZTpSX31dLGV4cGVyaW1lbnRJZHM6W3t0eXBlOlJffV0sc2hvd0hwYXJhbXNBbmRNZXRyaWNzOlt7dHlwZTpSX31dfSk7Y2xhc3MgUzR7fVM0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTNCl9LFM0Lsm1Y21wPXNvKHt0eXBlOlM0LHNlbGVjdG9yczpbWyJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCJdXSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIixjb2x1bW5zOiJjb2x1bW5zIn0sZGVjbHM6MSx2YXJzOjQsY29uc3RzOltbMywidXNlRmxleGlibGVMYXlvdXQiLCJjb2x1bW5zIiwiZXhwZXJpbWVudElkcyIsInNob3dIcGFyYW1zQW5kTWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZNdSgwLCJydW5zLXRhYmxlIiwwKSwyJmUmJmh1KCJ1c2VGbGV4aWJsZUxheW91dCIsITApKCJjb2x1bW5zIixuLmNvbHVtbnMpKCJleHBlcmltZW50SWRzIixuLmV4cGVyaW1lbnRJZHMpKCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiLG4uc2hvd0hwYXJhbXNBbmRNZXRyaWNzKX0sZGlyZWN0aXZlczpbazRdLHN0eWxlczpbInJ1bnMtdGFibGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihTNCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxydW5zLXRhYmxlXG4gICAgICBbdXNlRmxleGlibGVMYXlvdXRdPSJ0cnVlIlxuICAgICAgW2NvbHVtbnNdPSJjb2x1bW5zIlxuICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIlxuICAgICAgW3Nob3dIcGFyYW1zQW5kTWV0cmljc109InNob3dIcGFyYW1zQW5kTWV0cmljcyJcbiAgICA+PC9ydW5zLXRhYmxlPlxuICAnLHN0eWxlczpbIlxuICAgICAgcnVucy10YWJsZSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtleHBlcmltZW50SWRzOlt7dHlwZTpSX31dLHNob3dIcGFyYW1zQW5kTWV0cmljczpbe3R5cGU6Ul99XSxjb2x1bW5zOlt7dHlwZTpSX31dfSk7Y2xhc3MgRDR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZXhwZXJpbWVudElkcyQ9dGhpcy5zdG9yZS5zZWxlY3Qoa1IpLnBpcGUoVnQoKHQ9Pm51bGwhPXQ/dDpbXSkpKSx0aGlzLmNvbHVtbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGtSKS5waXBlKFZ0KCh0PT5bVDAuQ0hFQ0tCT1gsVDAuUlVOX05BTUUsdCYmdC5sZW5ndGg+MT9UMC5FWFBFUklNRU5UX05BTUU6bnVsbCxUMC5SVU5fQ09MT1JdLmZpbHRlcigodD0+bnVsbCE9PXQpKSkpKX19RDQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEQ0KShmdShpUykpfSxENC7JtWNtcD1zbyh7dHlwZTpENCxzZWxlY3RvcnM6W1sicnVucy1zZWxlY3RvciJdXSxpbnB1dHM6e3Nob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiZXhwZXJpbWVudElkcyIsImNvbHVtbnMiLCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsInJ1bnMtc2VsZWN0b3ItY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIikpLDImZSYmaHUoImV4cGVyaW1lbnRJZHMiLEN5KDEsMyxuLmV4cGVyaW1lbnRJZHMkKSkoImNvbHVtbnMiLEN5KDIsNSxuLmNvbHVtbnMkKSkoInNob3dIcGFyYW1zQW5kTWV0cmljcyIsbi5zaG93SHBhcmFtc0FuZE1ldHJpY3MpfSxkaXJlY3RpdmVzOltTNF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEQ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtc2VsZWN0b3IiLHRlbXBsYXRlOidcbiAgICA8cnVucy1zZWxlY3Rvci1jb21wb25lbnRcbiAgICAgIFtleHBlcmltZW50SWRzXT0iZXhwZXJpbWVudElkcyQgfCBhc3luYyJcbiAgICAgIFtjb2x1bW5zXT0iY29sdW1ucyQgfCBhc3luYyJcbiAgICAgIFtzaG93SHBhcmFtc0FuZE1ldHJpY3NdPSJzaG93SHBhcmFtc0FuZE1ldHJpY3MiXG4gICAgPjwvcnVucy1zZWxlY3Rvci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7c2hvd0hwYXJhbXNBbmRNZXRyaWNzOlt7dHlwZTpSX31dfSk7Y29uc3QgUjQ9bmV3IFdlYWtNYXA7Y2xhc3MgRTR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJvb3Q9dCx0aGlzLmJ1ZmZlcj1lLHRoaXMuZGVzdHJveWVkVGFyZ2V0cz1uZXcgV2Vha1NldH1pbml0aWFsaXplKHQpe3ZhciBlO2lmKHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIpcmV0dXJuO3RoaXMuaW50ZXJzZWN0aW9uQ2FsbGJhY2s9dDtjb25zdCBuPXt0aHJlc2hvbGQ6MCxyb290Om51bGwhPT0oZT10aGlzLnJvb3QpJiZ2b2lkIDAhPT1lP2U6bnVsbH07dGhpcy5idWZmZXImJihuLnJvb3RNYXJnaW49dGhpcy5idWZmZXIpLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMub25DYXJkSW50ZXJzZWN0aW9uLmJpbmQodGhpcyksbil9YWRkKHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKHQpfXdpbGxEZXN0cm95KHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5kZXN0cm95ZWRUYXJnZXRzLmFkZCh0KX1lbnN1cmVJbml0aWFsaXplZCgpe2lmKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyKXRocm93IG5ldyBFcnJvcigiQ2FyZE9ic2VydmVyIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSIpO3JldHVybiEwfW9uQ2FyZEludGVyc2VjdGlvbih0KXt0LnNvcnQoKCh0LGUpPT50LnRpbWUtZS50aW1lKSk7Y29uc3QgZT1uZXcgU2V0LG49bmV3IFNldDtmb3IoY29uc3R7aXNJbnRlcnNlY3Rpbmc6byx0YXJnZXQ6aX1vZiB0KW8/KGUuYWRkKGkpLG4uZGVsZXRlKGkpKTooZS5kZWxldGUoaSksbi5hZGQoaSkpLHRoaXMuZGVzdHJveWVkVGFyZ2V0cy5oYXMoaSkmJiFvJiYodGhpcy5kZXN0cm95ZWRUYXJnZXRzLmRlbGV0ZShpKSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLnVub2JzZXJ2ZShpKSk7dGhpcy5pbnRlcnNlY3Rpb25DYWxsYmFjayhlLG4pfW9uQ2FyZEludGVyc2VjdGlvbkZvclRlc3QodCl7dGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24odCl9fWNsYXNzIEE0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5ob3N0PXQsdGhpcy5zdG9yZT1lfW9uQ2FyZEludGVyc2VjdGlvbih0LGUpe2NvbnN0IG49Wy4uLnRdLm1hcCgodD0+e2NvbnN0IGU9UjQuZ2V0KHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQSBDYXJkT2JzZXJ2ZXIgZWxlbWVudCBtdXN0IGhhdmUgYW4gYXNzb2NpYXRlZCBlbGVtZW50IGlkIGFuZCBjYXJkIGlkLiIpO3JldHVybntlbGVtZW50SWQ6ZS5lbGVtZW50SWQsY2FyZElkOmUuY2FyZElkfX0pKSxvPVsuLi5lXS5tYXAoKHQ9Pntjb25zdCBlPVI0LmdldCh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkEgQ2FyZE9ic2VydmVyIGVsZW1lbnQgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgZWxlbWVudCBpZCBhbmQgY2FyZCBpZC4iKTtyZXR1cm57ZWxlbWVudElkOmUuZWxlbWVudElkLGNhcmRJZDplLmNhcmRJZH19KSk7dGhpcy5zdG9yZS5kaXNwYXRjaChUQSh7ZW50ZXJlZENhcmRzOm4sZXhpdGVkQ2FyZHM6b30pKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7UjQuc2V0KHQse2VsZW1lbnRJZDooazArKyxTeW1ib2woazApKSxjYXJkSWQ6dGhpcy5jYXJkSWR9KSx0aGlzLmNhcmRPYnNlcnZlcnx8KHRoaXMuY2FyZE9ic2VydmVyPW5ldyBFNCksdGhpcy5jYXJkT2JzZXJ2ZXIuaW5pdGlhbGl6ZSh0aGlzLm9uQ2FyZEludGVyc2VjdGlvbi5iaW5kKHRoaXMpKSx0aGlzLmNhcmRPYnNlcnZlci5hZGQodCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNhcmRPYnNlcnZlciYmdGhpcy5jYXJkT2JzZXJ2ZXIud2lsbERlc3Ryb3kodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpfWhvc3RGb3JUZXN0KCl7cmV0dXJuIHRoaXMuaG9zdH19ZnVuY3Rpb24gVDQodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiw3KX1mdW5jdGlvbiBONCh0LGUpe2lmKDEmdCYmKF91KDAsIm1hdC1vcHRpb24iLDgpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtodSgidmFsdWUiLHQpLHltKCJ0aXRsZSIsdCksRGMoMSksd2YodCl9fWZ1bmN0aW9uIHo0KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2Iiw5KSxfdSgxLCJlbSIpLFBmKDIpLF95KDMsIm51bWJlciIpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMiksa2YoImFuZCAiLEN5KDMsMSx0LmNvbXBsZXRpb25zLmxlbmd0aC0yNSksIiBtb3JlIHRhZ3MgbWF0Y2hlZCIpfX1BNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QTQpKGZ1KEtoKSxmdShpUykpfSxBNC7JtWRpcj1obyh7dHlwZTpBNCxzZWxlY3RvcnM6W1siIiwiY2FyZExhenlMb2FkZXIiLCIiXV0saW5wdXRzOntjYXJkSWQ6WyJjYXJkTGF6eUxvYWRlciIsImNhcmRJZCJdLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEE0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltjYXJkTGF6eUxvYWRlcl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOmlTfV19KSx7Y2FyZElkOlt7dHlwZTpSXyxhcmdzOlsiY2FyZExhenlMb2FkZXIiXX1dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIEk0e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3IFN5fW9uQ29tcGxldGlvbkFjY2VwdGVkKHQpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZShIViwiXFwkJiIpfSkodCkpfX1JNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8STQpfSxJNC7JtWNtcD1zbyh7dHlwZTpJNCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntyZWdleEZpbHRlclZhbHVlOiJyZWdleEZpbHRlclZhbHVlIixpc1JlZ2V4RmlsdGVyVmFsaWQ6ImlzUmVnZXhGaWx0ZXJWYWxpZCIsY29tcGxldGlvbnM6ImNvbXBsZXRpb25zIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UifSxkZWNsczo3LHZhcnM6NSxjb25zdHM6W1sxLCJ0YWctZmlsdGVyIl0sWyJwbGFjZWhvbGRlciIsIkZpbHRlciB0YWdzIChyZWdleCkiLDMsInZhbHVlIiwibWF0QXV0b2NvbXBsZXRlIiwiaW5wdXQiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwidGl0bGUiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiw0LCJuZ0lmIl0sWzEsInRhZy1vcHRpb25zIiwzLCJvcHRpb25TZWxlY3RlZCJdLFsiZmlsdGVyTWF0Y2hlcyIsIm1hdEF1dG9jb21wbGV0ZSJdLFsiY2xhc3MiLCJvcHRpb24iLDMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiYW5kLW1vcmUiLDQsIm5nSWYiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwidGl0bGUiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiwxLCJlcnJvci1pY29uIl0sWzEsIm9wdGlvbiIsMywidmFsdWUiXSxbMSwiYW5kLW1vcmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwidGItZmlsdGVyLWlucHV0IiwxKSxEdSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KGUudGFyZ2V0LnZhbHVlKX0pKSxDdSgpLEhtKDIsVDQsMSwwLCJtYXQtaWNvbiIsMiksQ3UoKSxfdSgzLCJtYXQtYXV0b2NvbXBsZXRlIiwzLDQpLER1KCJvcHRpb25TZWxlY3RlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Db21wbGV0aW9uQWNjZXB0ZWQoZS5vcHRpb24udmFsdWUpfSkpLEhtKDUsTjQsMiwzLCJtYXQtb3B0aW9uIiw1KSxIbSg2LHo0LDQsMywiZGl2Iiw2KSxDdSgpKSwyJmUpe2NvbnN0IHQ9Rm0oNCk7RGMoMSksaHUoInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLERjKDEpLGh1KCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpLERjKDMpLGh1KCJuZ0Zvck9mIixudWxsPT1uLmNvbXBsZXRpb25zP251bGw6bi5jb21wbGV0aW9ucy5zbGljZSgwLDI1KSksRGMoMSksaHUoIm5nSWYiLChudWxsPT1uLmNvbXBsZXRpb25zP251bGw6bi5jb21wbGV0aW9ucy5sZW5ndGgpPjI1KX19LGRpcmVjdGl2ZXM6W2kyLFB2LFozLHh2LEVxLHpMXSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0udGFnLWZpbHRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfXRiLWZpbHRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjF9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojMjEyMTIxfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojZmZmfVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCl7Y29sb3I6I2M2MjgyOH1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpICAgLmVycm9yLWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNjNjI4Mjg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0gIC50YWctb3B0aW9ucyAub3B0aW9uLCAgIC50YWctb3B0aW9ucyAuYW5kLW1vcmV7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtbGluZS1jbGFtcDozO2Rpc3BsYXk6LXdlYmtpdC1ib3g7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40O3BhZGRpbmc6OHB4IDE2cHh9ICAudGFnLW9wdGlvbnMgLmFuZC1tb3Jle2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgICAudGFnLW9wdGlvbnMgLmFuZC1tb3JlLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAgIC50YWctb3B0aW9ucyAuYW5kLW1vcmV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEk0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJmaWx0ZXJfaW5wdXRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImZpbHRlcl9pbnB1dF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7cmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6Ul99XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTpSX31dLGNvbXBsZXRpb25zOlt7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6RV99XX0pO2NsYXNzIEg0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnRhZ0ZpbHRlciQ9dGhpcy5zdG9yZS5zZWxlY3QoTnopLHRoaXMuaXNUYWdGaWx0ZXJSZWdleFZhbGlkJD10aGlzLnRhZ0ZpbHRlciQucGlwZShWdCgodD0+e3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KSkpLHRoaXMuY29tcGxldGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KHV6KS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KFZ6KSksVnQoKChbdCxlXSk9PnQuZmlsdGVyKCgoe3BsdWdpbjp0fSk9PiFlLnNpemV8fGUuaGFzKHQpKSkubWFwKCgoe3RhZzp0fSk9PnQpKSkpLFZ0KCh0PT5bLi4ubmV3IFNldCh0KV0pKSxWdCgodD0+dC5zb3J0KGEwKSkpLF9lKHRoaXMuc3RvcmUuc2VsZWN0KE56KSksVnQoKChbdCxlXSk9Pnt0cnl7cmV0dXJuW3QsbmV3IFJlZ0V4cChlLCJpIildfWNhdGNoKGUpe3JldHVyblt0LG51bGxdfX0pKSxmZSgoKFssdF0pPT5udWxsIT09dCkpLFZ0KCgoW3QsZV0pPT50LmZpbHRlcigodD0+ZS50ZXN0KHQpKSkpKSl9b25UYWdGaWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh6QSh7dGFnRmlsdGVyOnR9KSl9fUg0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxINCkoZnUoaVMpKX0sSDQuybVjbXA9c28oe3R5cGU6SDQsc2VsZWN0b3JzOltbIm1ldHJpY3MtdGFnLWZpbHRlciJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiaXNSZWdleEZpbHRlclZhbGlkIiwiY29tcGxldGlvbnMiLCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQiLDApLER1KCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVGFnRmlsdGVyQ2hhbmdlKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoInJlZ2V4RmlsdGVyVmFsdWUiLEN5KDEsMyxuLnRhZ0ZpbHRlciQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixDeSgyLDUsbi5pc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkKSkoImNvbXBsZXRpb25zIixDeSgzLDcsbi5jb21wbGV0aW9ucyQpKX0sZGlyZWN0aXZlczpbSTRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihINCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLXRhZy1maWx0ZXIiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudFxuICAgICAgW3JlZ2V4RmlsdGVyVmFsdWVdPSJ0YWdGaWx0ZXIkIHwgYXN5bmMiXG4gICAgICBbaXNSZWdleEZpbHRlclZhbGlkXT0iaXNUYWdGaWx0ZXJSZWdleFZhbGlkJCB8IGFzeW5jIlxuICAgICAgW2NvbXBsZXRpb25zXT0iY29tcGxldGlvbnMkIHwgYXN5bmMiXG4gICAgICAob25SZWdleEZpbHRlclZhbHVlQ2hhbmdlKT0ib25UYWdGaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9tZXRyaWNzLXRhZy1maWx0ZXItY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgRjQ9WyJidXR0b24iXSxMND1uZXcgZXIoIk1BVF9CVVRUT05fVE9HR0xFX0RFRkFVTFRfT1BUSU9OUyIpLEI0PW5ldyBlcigiTWF0QnV0dG9uVG9nZ2xlR3JvdXAiKSxWND17cHJvdmlkZTpUaix1c2VFeGlzdGluZzokZSgoKCk9Plc0KSksbXVsdGk6ITB9O2xldCBVND0wO2NsYXNzIGo0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLnZhbHVlPWV9fWNsYXNzIFc0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLl92ZXJ0aWNhbD0hMSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX25hbWU9Im1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLSIrVTQrKyx0aGlzLnZhbHVlQ2hhbmdlPW5ldyBTeSx0aGlzLmNoYW5nZT1uZXcgU3ksdGhpcy5hcHBlYXJhbmNlPWUmJmUuYXBwZWFyYW5jZT9lLmFwcGVhcmFuY2U6InN0YW5kYXJkIn1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX25hbWU9dCx0aGlzLl9idXR0b25Ub2dnbGVzJiZ0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goKHQ9Pnt0Lm5hbWU9dGhpcy5fbmFtZSx0Ll9tYXJrRm9yQ2hlY2soKX0pKX1nZXQgdmVydGljYWwoKXtyZXR1cm4gdGhpcy5fdmVydGljYWx9c2V0IHZlcnRpY2FsKHQpe3RoaXMuX3ZlcnRpY2FsPXBIKHQpfWdldCB2YWx1ZSgpe2NvbnN0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWw/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6W107cmV0dXJuIHRoaXMubXVsdGlwbGU/dC5tYXAoKHQ9PnQudmFsdWUpKTp0WzBdP3RbMF0udmFsdWU6dm9pZCAwfXNldCB2YWx1ZSh0KXt0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHQpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKX1nZXQgc2VsZWN0ZWQoKXtjb25zdCB0PXRoaXMuX3NlbGVjdGlvbk1vZGVsP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkOltdO3JldHVybiB0aGlzLm11bHRpcGxlP3Q6dFswXXx8bnVsbH1nZXQgbXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fbXVsdGlwbGV9c2V0IG11bHRpcGxlKHQpe3RoaXMuX211bHRpcGxlPXBIKHQpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9cEgodCksdGhpcy5fYnV0dG9uVG9nZ2xlcyYmdGhpcy5fYnV0dG9uVG9nZ2xlcy5mb3JFYWNoKCh0PT50Ll9tYXJrRm9yQ2hlY2soKSkpfW5nT25Jbml0KCl7dGhpcy5fc2VsZWN0aW9uTW9kZWw9bmV3IFFMKHRoaXMubXVsdGlwbGUsdm9pZCAwLCExKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoLi4udGhpcy5fYnV0dG9uVG9nZ2xlcy5maWx0ZXIoKHQ9PnQuY2hlY2tlZCkpKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dCx0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dH1fZW1pdENoYW5nZUV2ZW50KCl7Y29uc3QgdD10aGlzLnNlbGVjdGVkLGU9QXJyYXkuaXNBcnJheSh0KT90W3QubGVuZ3RoLTFdOnQsbj1uZXcgajQoZSx0aGlzLnZhbHVlKTt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKG4udmFsdWUpLHRoaXMuY2hhbmdlLmVtaXQobil9X3N5bmNCdXR0b25Ub2dnbGUodCxlLG49ITEsbz0hMSl7dGhpcy5tdWx0aXBsZXx8IXRoaXMuc2VsZWN0ZWR8fHQuY2hlY2tlZHx8KHRoaXMuc2VsZWN0ZWQuY2hlY2tlZD0hMSksdGhpcy5fc2VsZWN0aW9uTW9kZWw/ZT90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCk6dGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3QodCk6bz0hMCxvP1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT50aGlzLl91cGRhdGVNb2RlbFZhbHVlKG4pKSk6dGhpcy5fdXBkYXRlTW9kZWxWYWx1ZShuKX1faXNTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwmJnRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCl9X2lzUHJlY2hlY2tlZCh0KXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmF3VmFsdWUmJih0aGlzLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KHRoaXMuX3Jhd1ZhbHVlKT90aGlzLl9yYXdWYWx1ZS5zb21lKChlPT5udWxsIT10LnZhbHVlJiZlPT09dC52YWx1ZSkpOnQudmFsdWU9PT10aGlzLl9yYXdWYWx1ZSl9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCl7aWYodGhpcy5fcmF3VmFsdWU9dCx0aGlzLl9idXR0b25Ub2dnbGVzKWlmKHRoaXMubXVsdGlwbGUmJnQpe2lmKCFBcnJheS5pc0FycmF5KHQpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIlZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuIik7dGhpcy5fY2xlYXJTZWxlY3Rpb24oKSx0LmZvckVhY2goKHQ9PnRoaXMuX3NlbGVjdFZhbHVlKHQpKSl9ZWxzZSB0aGlzLl9jbGVhclNlbGVjdGlvbigpLHRoaXMuX3NlbGVjdFZhbHVlKHQpfV9jbGVhclNlbGVjdGlvbigpe3RoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksdGhpcy5fYnV0dG9uVG9nZ2xlcy5mb3JFYWNoKCh0PT50LmNoZWNrZWQ9ITEpKX1fc2VsZWN0VmFsdWUodCl7Y29uc3QgZT10aGlzLl9idXR0b25Ub2dnbGVzLmZpbmQoKGU9Pm51bGwhPWUudmFsdWUmJmUudmFsdWU9PT10KSk7ZSYmKGUuY2hlY2tlZD0hMCx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoZSkpfV91cGRhdGVNb2RlbFZhbHVlKHQpe3QmJnRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKX19VzQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFc0KShmdShPYiksZnUoTDQsOCkpfSxXNC7JtWRpcj1obyh7dHlwZTpXNCxzZWxlY3RvcnM6W1sibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiZVeShvLFk0LDUpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX2J1dHRvblRvZ2dsZXM9dCl9fSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JvdXAiLDEsIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIl0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKHltKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkKSxjZigibWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwiLG4udmVydGljYWwpKCJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIiwic3RhbmRhcmQiPT09bi5hcHBlYXJhbmNlKSl9LGlucHV0czp7YXBwZWFyYW5jZToiYXBwZWFyYW5jZSIsbmFtZToibmFtZSIsdmVydGljYWw6InZlcnRpY2FsIix2YWx1ZToidmFsdWUiLG11bHRpcGxlOiJtdWx0aXBsZSIsZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7dmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIixjaGFuZ2U6ImNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uVG9nZ2xlR3JvdXAiXSxmZWF0dXJlczpbVWgoW1Y0LHtwcm92aWRlOkI0LHVzZUV4aXN0aW5nOlc0fV0pXX0pLFc0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbTDRdfV19XSxXNC5wcm9wRGVjb3JhdG9ycz17X2J1dHRvblRvZ2dsZXM6W3t0eXBlOm9yLGFyZ3M6WyRlKCgoKT0+WTQpKSx7ZGVzY2VuZGFudHM6ITB9XX1dLGFwcGVhcmFuY2U6W3t0eXBlOlJffV0sbmFtZTpbe3R5cGU6Ul99XSx2ZXJ0aWNhbDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxtdWx0aXBsZTpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVzQsW3t0eXBlOmtfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiLHByb3ZpZGVyczpbVjQse3Byb3ZpZGU6QjQsdXNlRXhpc3Rpbmc6VzR9XSxob3N0Ontyb2xlOiJncm91cCIsY2xhc3M6Im1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbF0iOiJ2ZXJ0aWNhbCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT09ICJzdGFuZGFyZCInfSxleHBvcnRBczoibWF0QnV0dG9uVG9nZ2xlR3JvdXAifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbTDRdfV19XX0pLHt2YWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxjaGFuZ2U6W3t0eXBlOkVffV0sYXBwZWFyYW5jZTpbe3R5cGU6Ul99XSxuYW1lOlt7dHlwZTpSX31dLHZlcnRpY2FsOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLG11bHRpcGxlOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLF9idXR0b25Ub2dnbGVzOlt7dHlwZTpvcixhcmdzOlskZSgoKCk9Plk0KSkse2Rlc2NlbmRhbnRzOiEwfV19XX0pO2NvbnN0IEc0PXFGKGNsYXNze30pO2NsYXNzIFk0IGV4dGVuZHMgRzR7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3N1cGVyKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5fZm9jdXNNb25pdG9yPW8sdGhpcy5faXNTaW5nbGVTZWxlY3Rvcj0hMSx0aGlzLl9jaGVja2VkPSExLHRoaXMuYXJpYUxhYmVsbGVkYnk9bnVsbCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLmNoYW5nZT1uZXcgU3k7Y29uc3Qgcj1OdW1iZXIoaSk7dGhpcy50YWJJbmRleD1yfHwwPT09cj9yOm51bGwsdGhpcy5idXR0b25Ub2dnbGVHcm91cD10LHRoaXMuYXBwZWFyYW5jZT1hJiZhLmFwcGVhcmFuY2U/YS5hcHBlYXJhbmNlOiJzdGFuZGFyZCJ9Z2V0IGJ1dHRvbklkKCl7cmV0dXJuYCR7dGhpcy5pZH0tYnV0dG9uYH1nZXQgYXBwZWFyYW5jZSgpe3JldHVybiB0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwP3RoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuYXBwZWFyYW5jZTp0aGlzLl9hcHBlYXJhbmNlfXNldCBhcHBlYXJhbmNlKHQpe3RoaXMuX2FwcGVhcmFuY2U9dH1nZXQgY2hlY2tlZCgpe3JldHVybiB0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwP3RoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX2lzU2VsZWN0ZWQodGhpcyk6dGhpcy5fY2hlY2tlZH1zZXQgY2hlY2tlZCh0KXtjb25zdCBlPXBIKHQpO2UhPT10aGlzLl9jaGVja2VkJiYodGhpcy5fY2hlY2tlZD1lLHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJnRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwJiZ0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLmRpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1wSCh0KX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5idXR0b25Ub2dnbGVHcm91cDt0aGlzLl9pc1NpbmdsZVNlbGVjdG9yPXQmJiF0Lm11bHRpcGxlLHRoaXMuaWQ9dGhpcy5pZHx8Im1hdC1idXR0b24tdG9nZ2xlLSIrVTQrKyx0aGlzLl9pc1NpbmdsZVNlbGVjdG9yJiYodGhpcy5uYW1lPXQubmFtZSksdCYmKHQuX2lzUHJlY2hlY2tlZCh0aGlzKT90aGlzLmNoZWNrZWQ9ITA6dC5faXNTZWxlY3RlZCh0aGlzKSE9PXRoaXMuX2NoZWNrZWQmJnQuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkKSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHQmJnQuX2lzU2VsZWN0ZWQodGhpcykmJnQuX3N5bmNCdXR0b25Ub2dnbGUodGhpcywhMSwhMSwhMCl9Zm9jdXModCl7dGhpcy5fYnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9vbkJ1dHRvbkNsaWNrKCl7Y29uc3QgdD0hIXRoaXMuX2lzU2luZ2xlU2VsZWN0b3J8fCF0aGlzLl9jaGVja2VkO3QhPT10aGlzLl9jaGVja2VkJiYodGhpcy5fY2hlY2tlZD10LHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJih0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLl9zeW5jQnV0dG9uVG9nZ2xlKHRoaXMsdGhpcy5fY2hlY2tlZCwhMCksdGhpcy5idXR0b25Ub2dnbGVHcm91cC5fb25Ub3VjaGVkKCkpKSx0aGlzLmNoYW5nZS5lbWl0KG5ldyBqNCh0aGlzLHRoaXMudmFsdWUpKX1fbWFya0ZvckNoZWNrKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9fVk0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZNCkoZnUoQjQsOCksZnUoT2IpLGZ1KEtoKSxmdSh4RiksR2EoInRhYmluZGV4IiksZnUoTDQsOCkpfSxZNC7JtWNtcD1zbyh7dHlwZTpZNCxzZWxlY3RvcnM6W1sibWF0LWJ1dHRvbi10b2dnbGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KEY0LDUpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX2J1dHRvbkVsZW1lbnQ9dC5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwicHJlc2VudGF0aW9uIiwxLCJtYXQtYnV0dG9uLXRvZ2dsZSJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXMoKX0pKSwyJmUmJih5bSgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCkoImlkIixuLmlkKSgibmFtZSIsbnVsbCksY2YoIm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUiLCFuLmJ1dHRvblRvZ2dsZUdyb3VwKSgibWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCIsbi5jaGVja2VkKSgibWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIiwic3RhbmRhcmQiPT09bi5hcHBlYXJhbmNlKSl9LGlucHV0czp7ZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLHRhYkluZGV4OiJ0YWJJbmRleCIsYXBwZWFyYW5jZToiYXBwZWFyYW5jZSIsY2hlY2tlZDoiY2hlY2tlZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixpZDoiaWQiLG5hbWU6Im5hbWUiLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSx2YWx1ZToidmFsdWUifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uVG9nZ2xlIl0sZmVhdHVyZXM6W1FwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6Nix2YXJzOjksY29uc3RzOltbInR5cGUiLCJidXR0b24iLDEsIm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbiIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsImlkIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiYnV0dG9uIiwiIl0sWzEsIm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQiXSxbMSwibWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGUiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoSXUoKSxfdSgwLCJidXR0b24iLDAsMSksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkJ1dHRvbkNsaWNrKCl9KSksX3UoMiwic3BhbiIsMiksSHUoMyksQ3UoKSxDdSgpLE11KDQsInNwYW4iLDMpLE11KDUsInNwYW4iLDQpKSwyJmUpe2NvbnN0IHQ9Rm0oMSk7aHUoImlkIixuLmJ1dHRvbklkKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpLHltKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD8tMTpuLnRhYkluZGV4KSgiYXJpYS1wcmVzc2VkIixuLmNoZWNrZWQpKCJuYW1lIixuLm5hbWV8fG51bGwpKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbCkoImFyaWEtbGFiZWxsZWRieSIsbi5hcmlhTGFiZWxsZWRieSksRGMoNSksaHUoIm1hdFJpcHBsZVRyaWdnZXIiLHQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5kaXNhYmxlUmlwcGxlfHxuLmRpc2FibGVkKX19LGRpcmVjdGl2ZXM6W3ZMXSxzdHlsZXM6WyIubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjJweDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JvcmRlci1yYWRpdXM6NHB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke291dGxpbmU6MH0ubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHtkaXNwbGF5OmJsb2NrfS5tYXQtYnV0dG9uLXRvZ2dsZXt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfS5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKTpob3ZlciAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4wNH0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjV9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKTpob3ZlciAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtkaXNwbGF5Om5vbmV9fS5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50ey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e3BhZGRpbmc6MCAxMnB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50Pip7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1yYWRpdXM6aW5oZXJpdDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtib3JkZXItYm90dG9tOnNvbGlkIDM2cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41O2hlaWdodDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtib3JkZXItYm90dG9tOnNvbGlkIDUwMHB4fS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWJ1dHRvbi10b2dnbGUtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjA7bWFyZ2luOjA7Zm9udDppbmhlcml0O291dGxpbmU6bm9uZTt3aWR0aDoxMDAlO2N1cnNvcjpwb2ludGVyfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCAubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxZNC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlc0LGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltCNF19XX0se3R5cGU6T2J9LHt0eXBlOktofSx7dHlwZTp4Rn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbTDRdfV19XSxZNC5wcm9wRGVjb3JhdG9ycz17YXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLF9idXR0b25FbGVtZW50Olt7dHlwZTphcixhcmdzOlsiYnV0dG9uIl19XSxpZDpbe3R5cGU6Ul99XSxuYW1lOlt7dHlwZTpSX31dLHZhbHVlOlt7dHlwZTpSX31dLHRhYkluZGV4Olt7dHlwZTpSX31dLGFwcGVhcmFuY2U6W3t0eXBlOlJffV0sY2hlY2tlZDpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWTQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWF0LWJ1dHRvbi10b2dnbGUiLHRlbXBsYXRlOic8YnV0dG9uICNidXR0b24gY2xhc3M9Im1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbiBtYXQtZm9jdXMtaW5kaWNhdG9yIlxuICAgICAgICB0eXBlPSJidXR0b24iXG4gICAgICAgIFtpZF09ImJ1dHRvbklkIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09ImRpc2FibGVkID8gLTEgOiB0YWJJbmRleCJcbiAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT0iY2hlY2tlZCJcbiAgICAgICAgW2Rpc2FibGVkXT0iZGlzYWJsZWQgfHwgbnVsbCJcbiAgICAgICAgW2F0dHIubmFtZV09Im5hbWUgfHwgbnVsbCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiXG4gICAgICAgIChjbGljayk9Il9vbkJ1dHRvbkNsaWNrKCkiPlxuICA8c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG48L2J1dHRvbj5cblxuPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkiPjwvc3Bhbj5cbjxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGUiIG1hdFJpcHBsZVxuICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09ImJ1dHRvbiJcbiAgICAgW21hdFJpcHBsZURpc2FibGVkXT0idGhpcy5kaXNhYmxlUmlwcGxlIHx8IHRoaXMuZGlzYWJsZWQiPlxuPC9zcGFuPlxuJyxlbmNhcHN1bGF0aW9uOlduLk5vbmUsZXhwb3J0QXM6Im1hdEJ1dHRvblRvZ2dsZSIsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxpbnB1dHM6WyJkaXNhYmxlUmlwcGxlIl0saG9zdDp7IltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lXSI6IiFidXR0b25Ub2dnbGVHcm91cCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkXSI6ImNoZWNrZWQiLCJbY2xhc3MubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZF0iOidhcHBlYXJhbmNlID09PSAic3RhbmRhcmQiJyxjbGFzczoibWF0LWJ1dHRvbi10b2dnbGUiLCJbYXR0ci5hcmlhLWxhYmVsXSI6Im51bGwiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoibnVsbCIsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIubmFtZV0iOiJudWxsIiwiKGZvY3VzKSI6ImZvY3VzKCkiLHJvbGU6InByZXNlbnRhdGlvbiJ9LHN0eWxlczpbIi5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe291dGxpbmU6c29saWQgMXB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyLXJhZGl1czo0cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7b3V0bGluZTowfS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9Lm1hdC1idXR0b24tdG9nZ2xle3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2Rpc3BsYXk6bm9uZX19Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7cGFkZGluZzowIDEycHh9Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQ+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLXJhZGl1czppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgMzZweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjU7aGVpZ2h0OjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgNTAwcHh9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O3BhZGRpbmc6MDttYXJnaW46MDtmb250OmluaGVyaXQ7b3V0bGluZTpub25lO3dpZHRoOjEwMCU7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIC5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VzQsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W0I0XX1dfSx7dHlwZTpPYn0se3R5cGU6S2h9LHt0eXBlOnhGfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltMNF19XX1dfSkse2FyaWFMYWJlbGxlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxjaGFuZ2U6W3t0eXBlOkVffV0sdGFiSW5kZXg6W3t0eXBlOlJffV0sYXBwZWFyYW5jZTpbe3R5cGU6Ul99XSxjaGVja2VkOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLGlkOlt7dHlwZTpSX31dLG5hbWU6W3t0eXBlOlJffV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sX2J1dHRvbkVsZW1lbnQ6W3t0eXBlOmFyLGFyZ3M6WyJidXR0b24iXX1dLHZhbHVlOlt7dHlwZTpSX31dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBxNHt9cTQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHE0KX0scTQuybVtb2Q9dW8oe3R5cGU6cTR9KSxxNC7JtWluaj1Ebih7aW1wb3J0czpbW1dGLHhMXSxXRl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHE0LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbV0YseExdLGV4cG9ydHM6W1dGLFc0LFk0XSxkZWNsYXJhdGlvbnM6W1c0LFk0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHE0LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bVzQsWTRdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dGLHhMXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltXRixXNCxZNF19fSk7Y29uc3QgWjQ9Ii9zY2FsYXJfc3VtbWFyeSI7ZnVuY3Rpb24gWDQodCxlKXtsZXQgbj10O3JldHVybiBlJiZ0LnN0YXJ0c1dpdGgoZSsiLyIpJiYobj10LnNsaWNlKGUubGVuZ3RoKzEpKSxuLmVuZHNXaXRoKFo0KSYmKG49bi5zbGljZSgwLC1aNC5sZW5ndGgpKSxufHx0fWZ1bmN0aW9uIEs0KHQsZSxuKXt2YXIgbyxpLGEscjtyZXR1cm4gdC5zdGFydC5zdGVwPD1lJiZ0LmVuZCYmbjw9dC5lbmQuc3RlcHx8ZTw9dC5zdGFydC5zdGVwJiZ0LnN0YXJ0LnN0ZXA8PW58fHQuZW5kJiZlPD0obnVsbD09PShvPXQuZW5kKXx8dm9pZCAwPT09bz92b2lkIDA6by5zdGVwKSYmKG51bGw9PT0oaT10LmVuZCl8fHZvaWQgMD09PWk/dm9pZCAwOmkuc3RlcCk8PW4/e3N0YXJ0U3RlcDp0LnN0YXJ0LnN0ZXAsZW5kU3RlcDpudWxsIT09KHI9bnVsbD09PShhPXQuZW5kKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zdGVwKSYmdm9pZCAwIT09cj9yOm51bGwsY2xpcHBlZDohMX06bjw9dC5zdGFydC5zdGVwP3tzdGFydFN0ZXA6bixlbmRTdGVwOm51bGwsY2xpcHBlZDohMH06e3N0YXJ0U3RlcDplLGVuZFN0ZXA6bnVsbCxjbGlwcGVkOiEwfX1mdW5jdGlvbiBKNCh0LGUpe2lmKG51bGwhPT10LmVuZFN0ZXApcmV0dXJuIHQ7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0LGUpe2xldCBuPTEvMCxvPW51bGw7Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1NYXRoLmFicyh0LWkpO2U8biYmKG49ZSxvPWkpfXJldHVybiBvfSkodC5zdGFydFN0ZXAsZSk7cmV0dXJuIG51bGwhPT1uP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c3RhcnRTdGVwOm59KTp0fWZ1bmN0aW9uIFE0KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsMiksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksd2YodC5maXJzdFRleHRQYXJ0KCkpfX1jbGFzcyAkNHtwYXJzZVZhbHVlKCl7Y29uc3QgdD10aGlzLnZhbHVlLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT10P3tmaXJzdDoiIixzZWNvbmQ6dGhpcy52YWx1ZX06e2ZpcnN0OnRoaXMudmFsdWUuc2xpY2UoMCx0KSxzZWNvbmQ6dGhpcy52YWx1ZS5zbGljZSh0KX19Zmlyc3RUZXh0UGFydCgpe3JldHVybiB0aGlzLnBhcnNlVmFsdWUoKS5maXJzdH1zZWNvbmRUZXh0UGFydCgpe3JldHVybiB0aGlzLnBhcnNlVmFsdWUoKS5zZWNvbmR9fWZ1bmN0aW9uIHQ2KHQsZSl7MSZ0JiZNdSgwLCJtYXQtaWNvbiIsMil9ZnVuY3Rpb24gZTYodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiwzKX0kNC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JDQpfSwkNC7JtWNtcD1zbyh7dHlwZTokNCxzZWxlY3RvcnM6W1sidGItdHJ1bmNhdGVkLXBhdGgiXV0saW5wdXRzOnt2YWx1ZToidmFsdWUifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1siY2xhc3MiLCJmaXJzdC10ZXh0LXBhcnQiLDQsIm5nSWYiXSxbMSwic2Vjb25kLXRleHQtcGFydCJdLFsxLCJmaXJzdC10ZXh0LXBhcnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsUTQsMiwxLCJzcGFuIiwwKSxfdSgxLCJzcGFuIiwxKSxQZigyKSxDdSgpKSwyJmUmJihodSgibmdJZiIsbi5maXJzdFRleHRQYXJ0KCkubGVuZ3RoPjApLERjKDIpLHdmKG4uc2Vjb25kVGV4dFBhcnQoKSkpfSxkaXJlY3RpdmVzOltQdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1mbGV4O3doaXRlLXNwYWNlOm5vd3JhcH0uZmlyc3QtdGV4dC1wYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMSA0Y2g7bWF4LXdpZHRoOm1heC1jb250ZW50fS5maXJzdC10ZXh0LXBhcnRbX25nY29udGVudC0lQ09NUCVdLCAuc2Vjb25kLXRleHQtcGFydFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCQ0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRiLXRydW5jYXRlZC1wYXRoIix0ZW1wbGF0ZTonXG4gICAgPHNwYW4gKm5nSWY9ImZpcnN0VGV4dFBhcnQoKS5sZW5ndGggPiAwIiBjbGFzcz0iZmlyc3QtdGV4dC1wYXJ0Ij57e1xuICAgICAgZmlyc3RUZXh0UGFydCgpXG4gICAgfX08L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9InNlY29uZC10ZXh0LXBhcnQiPnt7IHNlY29uZFRleHRQYXJ0KCkgfX08L3NwYW4+XG4gICcsc3R5bGVVcmxzOlsidHJ1bmNhdGVkX3BhdGhfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHt2YWx1ZTpbe3R5cGU6Ul99XX0pO2NsYXNzIG42e2NvbnN0cnVjdG9yKCl7dGhpcy5pc0NsaXBwZWQ9ITEsdGhpcy5pc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQ9ITF9fWZ1bmN0aW9uIG82KHQsZSl7aWYoMSZ0JiZNdSgwLCJ0Yi1leHBlcmltZW50LWFsaWFzIiwyKSwyJnQpe2h1KCJhbGlhcyIsTnUoKS5leHBlcmltZW50QWxpYXMpfX1mdW5jdGlvbiBpNih0LGUpezEmdCYmKF91KDAsInNwYW4iKSxQZigxLCIvIiksQ3UoKSl9bjYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG42KX0sbjYuybVjbXA9c28oe3R5cGU6bjYsc2VsZWN0b3JzOltbInZpcy1zZWxlY3RlZC10aW1lLXdhcm5pbmciXV0saW5wdXRzOntpc0NsaXBwZWQ6ImlzQ2xpcHBlZCIsaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkOiJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQifSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1siZGF0YS12YWx1ZSIsImNsaXBwZWQiLCJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsIkxpbmtlZCBzdGVwIGlzIG5vdCBmb3VuZCBpbiB0aGlzIHZpc3VhbGl6YXRpb24uIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iLDQsIm5nSWYiXSxbImRhdGEtdmFsdWUiLCJjbG9zZXN0U3RlcEhpZ2hsaWdodGVkIiwic3ZnSWNvbiIsImluZm9fb3V0bGluZV8yNHB4IiwidGl0bGUiLCJEYXRhIGlzIG5vdCBmb3VuZCBvbiBzZWxlY3RlZCBzdGVwLiBXZSBoaWdobGlnaHRlZCB0aGUgY2xvc2VzdCBzdGVwIGZvciB5b3UuIiw0LCJuZ0lmIl0sWyJkYXRhLXZhbHVlIiwiY2xpcHBlZCIsInN2Z0ljb24iLCJpbmZvX291dGxpbmVfMjRweCIsInRpdGxlIiwiTGlua2VkIHN0ZXAgaXMgbm90IGZvdW5kIGluIHRoaXMgdmlzdWFsaXphdGlvbi4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiJdLFsiZGF0YS12YWx1ZSIsImNsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiLCJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsIkRhdGEgaXMgbm90IGZvdW5kIG9uIHNlbGVjdGVkIHN0ZXAuIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsdDYsMSwwLCJtYXQtaWNvbiIsMCksSG0oMSxlNiwxLDAsIm1hdC1pY29uIiwxKSksMiZlJiYoaHUoIm5nSWYiLG4uaXNDbGlwcGVkKSxEYygxKSxodSgibmdJZiIsbi5pc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQpKX0sZGlyZWN0aXZlczpbUHYsRXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbG9yOiNkMzJmMmY7aGVpZ2h0OjFlbTtsaW5lLWhlaWdodDowO2Rpc3BsYXk6aW5saW5lLWZsZXh9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOiNkMzJmMmZ9W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihuNixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ2aXMtc2VsZWN0ZWQtdGltZS13YXJuaW5nIix0ZW1wbGF0ZTonXG4gICAgPG1hdC1pY29uXG4gICAgICAqbmdJZj0iaXNDbGlwcGVkIlxuICAgICAgZGF0YS12YWx1ZT0iY2xpcHBlZCJcbiAgICAgIHN2Z0ljb249ImluZm9fb3V0bGluZV8yNHB4IlxuICAgICAgdGl0bGU9IkxpbmtlZCBzdGVwIGlzIG5vdCBmb3VuZCBpbiB0aGlzIHZpc3VhbGl6YXRpb24uIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iXG4gICAgPjwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uXG4gICAgICAqbmdJZj0iaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIlxuICAgICAgZGF0YS12YWx1ZT0iY2xvc2VzdFN0ZXBIaWdobGlnaHRlZCJcbiAgICAgIHN2Z0ljb249ImluZm9fb3V0bGluZV8yNHB4IlxuICAgICAgdGl0bGU9IkRhdGEgaXMgbm90IGZvdW5kIG9uIHNlbGVjdGVkIHN0ZXAuIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iXG4gICAgPjwvbWF0LWljb24+XG4gICcsc3R5bGVVcmxzOlsidmlzX3NlbGVjdGVkX3RpbWVfd2FybmluZ19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7aXNDbGlwcGVkOlt7dHlwZTpSX31dLGlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZDpbe3R5cGU6Ul99XX0pO2NsYXNzIGE2e31hNi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YTYpfSxhNi7JtWNtcD1zbyh7dHlwZTphNixzZWxlY3RvcnM6W1siY2FyZC1ydW4tbmFtZS1jb21wb25lbnQiXV0saW5wdXRzOntuYW1lOiJuYW1lIixleHBlcmltZW50QWxpYXM6ImV4cGVyaW1lbnRBbGlhcyJ9LGRlY2xzOjQsdmFyczozLGNvbnN0czpbWzMsImFsaWFzIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMywiYWxpYXMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsbzYsMSwxLCJ0Yi1leHBlcmltZW50LWFsaWFzIiwwKSxIbSgxLGk2LDIsMCwic3BhbiIsMSksX3UoMiwic3BhbiIpLFBmKDMpLEN1KCkpLDImZSYmKGh1KCJuZ0lmIixudWxsIT1uLmV4cGVyaW1lbnRBbGlhcyksRGMoMSksaHUoIm5nSWYiLG51bGwhPW4uZXhwZXJpbWVudEFsaWFzKSxEYygyKSx3ZihuLm5hbWUpKX0sZGlyZWN0aXZlczpbUHYsWDJdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihhNixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXJ1bi1uYW1lLWNvbXBvbmVudCIsdGVtcGxhdGU6Jzx0Yi1leHBlcmltZW50LWFsaWFzXG4gICAgICAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiXG4gICAgICBbYWxpYXNdPSJleHBlcmltZW50QWxpYXMiXG4gICAgPjwvdGItZXhwZXJpbWVudC1hbGlhcz5cbiAgICA8c3BhbiAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiPi88L3NwYW4+XG4gICAgPHNwYW4+e3sgbmFtZSB9fTwvc3Bhbj4nLHN0eWxlVXJsczpbInJ1bl9uYW1lX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtuYW1lOlt7dHlwZTpSX31dLGV4cGVyaW1lbnRBbGlhczpbe3R5cGU6Ul99XX0pO2NsYXNzIHI2e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH1uZ09uSW5pdCgpe3RoaXMubmFtZSQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KGVJLHtydW5JZDp0aGlzLnJ1bklkfSldKS5waXBlKFZ0KCgoW3RdKT0+KGZ1bmN0aW9uIGUodCxuLG8pe3ZhciBpO2lmKCFuJiYhbylyZXR1cm4gdDtsZXQgYT1udWxsIT09KGk9bnVsbD09bj92b2lkIDA6bi5uYW1lKSYmdm9pZCAwIT09aT9pOiIuLi4iO3JldHVybiBvJiYoYT1gWyR7by5hbGlhc051bWJlcn1dICR7by5hbGlhc1RleHR9LyR7YX1gKSxhfSkodGhpcy5ydW5JZCx0LG51bGwpKSkpLHRoaXMuZXhwZXJpbWVudEFsaWFzJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QodEkse3J1bklkOnRoaXMucnVuSWR9KSx0aGlzLnN0b3JlLnNlbGVjdChTUildKS5waXBlKFZ0KCgoW3QsZV0pPT50P2VbdF06bnVsbCkpKX19ZnVuY3Rpb24gczYodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwxOSksUGYoMSksX3koMiwibnVtYmVyIiksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksa2YoIlN0ZXAgIixDeSgyLDEsdC5zdGVwc1t0LnN0ZXBJbmRleF0pLCIiKX19ZnVuY3Rpb24gbDYodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwyMCksUGYoMSksX3koMiwibnVtYmVyIiksX3koMywibnVtYmVyIiksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksU2YoIlNhbXBsZSAiLEN5KDIsMix0LnNhbXBsZSsxKSwiLyIsQ3koMyw0LHQubnVtU2FtcGxlKSwiIil9fWZ1bmN0aW9uIGM2KHQsZSl7MSZ0JiZNdSgwLCJtYXQtc3Bpbm5lciIsMjEpfWZ1bmN0aW9uIGQ2KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIpLE11KDEsInNwYW4iLDMwKSxNdSgyLCJzcGFuIiwzMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KDMpO0RjKDIpLGxmKCJsZWZ0Iix0LnNsaWRlclN0YXJ0UG9zaXRpb24pKCJ3aWR0aCIsdC5zbGlkZXJUcmFja1dpZHRoKX19ZnVuY3Rpb24gcDYodCxlKXtpZigxJnQmJk11KDAsImRpdiIsMzIpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPU51KDMpO2xmKCJsZWZ0IixuLmdldExpbmtlZFRpbWVUaWNrTGVmdFN0eWxlKHQpKSgibWFyZ2luLWxlZnQiLG4uZ2V0TGlua2VkVGltZVRpY2tNYXJnaW5MZWZ0U3R5bGUodCkpfX1mdW5jdGlvbiBtNih0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsMjcpLEhtKDEsZDYsMyw0LCJzcGFuIiwyOCksSG0oMixwNiwxLDQsImRpdiIsMjkpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgyKTtEYygxKSxodSgibmdJZiIsbnVsbCE9PXQuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApLERjKDEpLGh1KCJuZ0Zvck9mIix0LnNlbGVjdGVkU3RlcHMpfX1yNi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cjYpKGZ1KGlTKSl9LHI2Lsm1Y21wPXNvKHt0eXBlOnI2LHNlbGVjdG9yczpbWyJjYXJkLXJ1bi1uYW1lIl1dLGlucHV0czp7cnVuSWQ6InJ1bklkIn0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywibmFtZSIsImV4cGVyaW1lbnRBbGlhcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwiY2FyZC1ydW4tbmFtZS1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpKSwyJmUmJihodSgibmFtZSIsQ3koMSwzLG4ubmFtZSQpKSgiZXhwZXJpbWVudEFsaWFzIixDeSgzLDcsbi5leHBlcmltZW50QWxpYXMkKSkseW0oInRpdGxlIixDeSgyLDUsbi5uYW1lJCkpKX0sZGlyZWN0aXZlczpbYTZdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyNixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXJ1bi1uYW1lIix0ZW1wbGF0ZTonXG4gICAgPGNhcmQtcnVuLW5hbWUtY29tcG9uZW50XG4gICAgICBbbmFtZV09Im5hbWUkIHwgYXN5bmMiXG4gICAgICBbYXR0ci50aXRsZV09Im5hbWUkIHwgYXN5bmMiXG4gICAgICBbZXhwZXJpbWVudEFsaWFzXT0iZXhwZXJpbWVudEFsaWFzJCB8IGFzeW5jIlxuICAgID48L2NhcmQtcnVuLW5hbWUtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse3J1bklkOlt7dHlwZTpSX31dfSk7Y29uc3QgdTY9ZnVuY3Rpb24odCl7cmV0dXJuW3RdfSxmNj1mdW5jdGlvbih0KXtyZXR1cm57ZmlsdGVyOnR9fTtmdW5jdGlvbiBnNih0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO3Z1KDApLF91KDEsImRpdiIsMjIpLF91KDIsIm1hdC1zbGlkZXIiLDIzKSxEdSgiaW5wdXQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uU2xpZGVySW5wdXQobil9KSksQ3UoKSxIbSgzLG02LDMsMiwiZGl2IiwyNCksQ3UoKSxfdSg0LCJkaXYiLDI1KSxNdSg1LCJpbWciLDI2KSxDdSgpLHh1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7RGMoMiksaHUoIm5nQ2xhc3MiLGl5KDExLHU2LHQuc2VsZWN0ZWRUaW1lJiYhdC5zZWxlY3RlZFRpbWUuY2xpcHBlZCYmbnVsbCE9PXQuc2VsZWN0ZWRUaW1lLmVuZFN0ZXA/ImhpZGUtc2xpZGVyIjoiIikpKCJkaXNhYmxlZCIsdC5zdGVwcy5sZW5ndGg8PTEpKCJtaW4iLDApKCJtYXgiLHQuc3RlcHMubGVuZ3RoLTEpKCJzdGVwIiwxKSgidGlja0ludGVydmFsIiwxKSgidmFsdWUiLHQuc3RlcEluZGV4KSxEYygxKSxodSgibmdJZiIsdC5zZWxlY3RlZFRpbWUmJiF0LnNlbGVjdGVkVGltZS5jbGlwcGVkKSxEYygyKSxMdSgiYWx0IiwiSW1hZ2UgYXQgc3RlcCAiLHQuc3RlcHNbdC5zdGVwSW5kZXhdLCIiKSxGdSgic3JjIix0LmltYWdlVXJsLFhzKSxodSgibmdTdHlsZSIsaXkoMTMsZjYsdC5jc3NGaWx0ZXIoKSkpfX1mdW5jdGlvbiBoNih0LGUpezEmdCYmKF91KDAsImRpdiIsMzQpLFBmKDEsIiBEYXRhIGZhaWxlZCB0byBsb2FkLiAiKSxDdSgpKX1mdW5jdGlvbiBiNih0LGUpe2lmKDEmdCYmSG0oMCxoNiwyLDAsImRpdiIsMzMpLDImdCl7Y29uc3QgdD1OdSgpO2h1KCJuZ0lmIix0LmxvYWRTdGF0ZT09PXQuRGF0YUxvYWRTdGF0ZS5GQUlMRUQpfX1jb25zdCB5Nj1mdW5jdGlvbih0KXtyZXR1cm57YmFja2dyb3VuZENvbG9yOnR9fTtjbGFzcyBfNntjb25zdHJ1Y3Rvcigpe3RoaXMuRGF0YUxvYWRTdGF0ZT1HRSx0aGlzLnNsaWRlclN0YXJ0UG9zaXRpb249IiIsdGhpcy5zbGlkZXJUcmFja1dpZHRoPSIiLHRoaXMuc2VsZWN0ZWRUaW1lPW51bGwsdGhpcy5pc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQ9ITEsdGhpcy5vbkFjdHVhbFNpemVUb2dnbGU9bmV3IFN5LHRoaXMuc3RlcEluZGV4Q2hhbmdlPW5ldyBTeSx0aGlzLm9uUGluQ2xpY2tlZD1uZXcgU3l9Y3NzRmlsdGVyKCl7cmV0dXJuYGNvbnRyYXN0KCR7dGhpcy5jb250cmFzdEluTWlsbGkvMTB9JSkgYnJpZ2h0bmVzcygke3RoaXMuYnJpZ2h0bmVzc0luTWlsbGkvMWUzfSlgfW9uU2xpZGVySW5wdXQodCl7dGhpcy5zdGVwSW5kZXhDaGFuZ2UuZW1pdCh0LnZhbHVlKX1jaGFuZ2VEaXN0aW5jdCh0KXtyZXR1cm4gdC5jdXJyZW50VmFsdWUhPT10LnByZXZpb3VzVmFsdWV9bmdPbkNoYW5nZXModCl7KHQuc2VsZWN0ZWRTdGVwcyYmdGhpcy5jaGFuZ2VEaXN0aW5jdCh0LnNlbGVjdGVkU3RlcHMpfHx0LnNlbGVjdGVkVGltZSYmdGhpcy5jaGFuZ2VEaXN0aW5jdCh0LnNlbGVjdGVkVGltZSkpJiZ0aGlzLnJlbmRlclJhbmdlU2xpZGVyKCl9cmVuZGVyUmFuZ2VTbGlkZXIoKXtpZighdGhpcy5zZWxlY3RlZFRpbWV8fCF0aGlzLnNlbGVjdGVkVGltZS5lbmRTdGVwfHx0aGlzLnNlbGVjdGVkVGltZS5jbGlwcGVkKXJldHVybjtjb25zdCB0PXRoaXMuc3RlcHMubGVuZ3RoLTEsZT10aGlzLnNlbGVjdGVkVGltZS5zdGFydFN0ZXA8dGhpcy5zdGVwc1swXT90aGlzLnN0ZXBzWzBdOnRoaXMuc2VsZWN0ZWRUaW1lLnN0YXJ0U3RlcCxuPXRoaXMuc2VsZWN0ZWRUaW1lLmVuZFN0ZXA+dGhpcy5zdGVwc1t0XT90aGlzLnN0ZXBzW3RdOnRoaXMuc2VsZWN0ZWRUaW1lLmVuZFN0ZXAse3N0YXJ0UG9zaXRpb246byx3aWR0aDppfT10aGlzLmdldFRyYWNrU3RhcnRQb3NpdGlvbkFuZFdpZHRoKGUsbix0KTt0aGlzLnNsaWRlclN0YXJ0UG9zaXRpb249MTAwKm8rIiUiLHRoaXMuc2xpZGVyVHJhY2tXaWR0aD0xMDAqaSsiJSJ9Z2V0VHJhY2tTdGFydFBvc2l0aW9uQW5kV2lkdGgodCxlLG4pe2NvbnN0IG89MS9uO2xldCBpPTAsYT0wLHI9MDtmb3IoO3I8dGhpcy5zdGVwcy5sZW5ndGgtMTtyKyspe2NvbnN0IGU9dGhpcy5zdGVwc1tyXSxuPXRoaXMuc3RlcHNbcisxXTtpZihlPD10JiZ0PD1uKXtpKz0odC1lKS8obi1lKTticmVha319Zm9yKGk9KGkrcikqbztyPHRoaXMuc3RlcHMubGVuZ3RoLTE7cisrKXtjb25zdCBuPXRoaXMuc3RlcHNbcl0sbz10aGlzLnN0ZXBzW3IrMV07aWYodD49biYmZTw9byl7YT0oZS10KS8oby1uKTticmVha31pZih0Pj1uJiZlPj1vKWErPShvLXQpLyhvLW4pO2Vsc2V7aWYoIShlPj1vKSl7YSs9KGUtbikvKG8tbik7YnJlYWt9YSs9MX19cmV0dXJuIGEqPW8sKGk+MXx8aTwwKSYmKGk9MCkse3N0YXJ0UG9zaXRpb246aSx3aWR0aDphfX1nZXRMaW5rZWRUaW1lVGlja0xlZnRTdHlsZSh0KXtpZigtMT09dGhpcy5zdGVwcy5pbmRleE9mKHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdGVwSW5kZXg6IHN0ZXBJbmRleCB2YWx1ZSBpcyBub3QgaW5jbHVkZWQgaW4gc3RlcHMiKTtyZXR1cm4gdGhpcy5zdGVwcy5pbmRleE9mKHQpLyh0aGlzLnN0ZXBzLmxlbmd0aC0xKSoxMDArIiUifWdldExpbmtlZFRpbWVUaWNrTWFyZ2luTGVmdFN0eWxlKHQpe2lmKC0xPT10aGlzLnN0ZXBzLmluZGV4T2YodCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0ZXBJbmRleDogc3RlcEluZGV4IHZhbHVlIGlzIG5vdCBpbmNsdWRlZCBpbiBzdGVwcyIpO3JldHVybmAtJHt0aGlzLnN0ZXBzLmluZGV4T2YodCkvKHRoaXMuc3RlcHMubGVuZ3RoLTEpKjE0fXB4YH19XzYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF82KX0sXzYuybVjbXA9c28oe3R5cGU6XzYsc2VsZWN0b3JzOltbImltYWdlLWNhcmQtY29tcG9uZW50Il1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJhY3R1YWwtc2l6ZSIsbi5zaG93QWN0dWFsU2l6ZSl9LGlucHV0czp7bG9hZFN0YXRlOiJsb2FkU3RhdGUiLHRpdGxlOiJ0aXRsZSIsdGFnOiJ0YWciLHJ1bklkOiJydW5JZCIsc2FtcGxlOiJzYW1wbGUiLG51bVNhbXBsZToibnVtU2FtcGxlIixpbWFnZVVybDoiaW1hZ2VVcmwiLHN0ZXBJbmRleDoic3RlcEluZGV4IixzdGVwczoic3RlcHMiLGJyaWdodG5lc3NJbk1pbGxpOiJicmlnaHRuZXNzSW5NaWxsaSIsY29udHJhc3RJbk1pbGxpOiJjb250cmFzdEluTWlsbGkiLHNob3dBY3R1YWxTaXplOiJzaG93QWN0dWFsU2l6ZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSIsYWxsb3dUb2dnbGVBY3R1YWxTaXplOiJhbGxvd1RvZ2dsZUFjdHVhbFNpemUiLGlzUGlubmVkOiJpc1Bpbm5lZCIsc2VsZWN0ZWRTdGVwczoic2VsZWN0ZWRTdGVwcyIsc2VsZWN0ZWRUaW1lOiJzZWxlY3RlZFRpbWUiLGlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZDoiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIn0sb3V0cHV0czp7b25BY3R1YWxTaXplVG9nZ2xlOiJvbkFjdHVhbFNpemVUb2dnbGUiLHN0ZXBJbmRleENoYW5nZToic3RlcEluZGV4Q2hhbmdlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCJ9LGZlYXR1cmVzOltxb10sZGVjbHM6MjEsdmFyczoxNixjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHBpbiBhIGNhcmQu4pCfZTY2NWRjNzEyYmQ1ZjE4ZDRkZmEzYTI5ZTEyNWQ1NjVjYzUxZTJmNuKQnzcyODQ2MDY0MjYyMzQzNzUzNDQ6UGluIGNhcmRgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJUb2dnbGUgYWN0dWFsIGltYWdlIHNpemUiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiBvbiBhbiBpbWFnZSBjYXJkIHRoYXQgdG9nZ2xlcyBhY3R1YWwgaW1hZ2Ugc2l6ZS7ikJ8zY2EwNWVmM2E2ZTNhMzcwNjVmNWUwZjY5YzVkNWEyMTc4ZDkwNzkx4pCfNzYzNTEwMTkzNjY2NDc4OTE0MDpUb2dnbGUgYWN0dWFsIGltYWdlIHNpemVgO3JldHVybltbMSwiaGVhZGluZyJdLFsxLCJsaW5lIl0sWzEsInRhZyJdLFsxLCJ0YWctcGF0aCIsMywidGl0bGUiLCJ2YWx1ZSJdLFszLCJpc0NsaXBwZWQiLCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJUb2dnbGUgYWN0dWFsIGltYWdlIHNpemUiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJpbWFnZV9zZWFyY2hfMjRweCJdLFsxLCJydW4iXSxbMSwiZG90IiwzLCJuZ1N0eWxlIl0sWzEsInJ1bi10ZXh0IiwzLCJydW5JZCJdLFsxLCJtZXRhZGF0YSJdLFsiY2xhc3MiLCJzdGVwIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNhbXBsZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJsb2FkaW5nIiwiZGlhbWV0ZXIiLCIxOCIsNCwibmdJZiJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW1hZ2VEYXRhIiwiIl0sWzEsInN0ZXAiXSxbMSwic2FtcGxlIl0sWyJkaWFtZXRlciIsIjE4IiwxLCJsb2FkaW5nIl0sWzEsInNsaWRlci1yb3ciXSxbImNvbG9yIiwicHJpbWFyeSIsMSwic3RlcC1zbGlkZXIiLDMsIm5nQ2xhc3MiLCJkaXNhYmxlZCIsIm1pbiIsIm1heCIsInN0ZXAiLCJ0aWNrSW50ZXJ2YWwiLCJ2YWx1ZSIsImlucHV0Il0sWyJjbGFzcyIsImxpbmtlZC10aW1lLXdyYXBwZXIiLDQsIm5nSWYiXSxbMSwiaW1nLWNvbnRhaW5lciJdLFszLCJhbHQiLCJzcmMiLCJuZ1N0eWxlIl0sWzEsImxpbmtlZC10aW1lLXdyYXBwZXIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJsaW5rZWQtdGltZS10aWNrIiwzLCJsZWZ0IiwibWFyZ2luLWxlZnQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJzbGlkZXItdHJhY2siXSxbMSwic2xpZGVyLXRyYWNrLWZpbGwiXSxbMSwibGlua2VkLXRpbWUtdGljayJdLFsiY2xhc3MiLCJlbXB0eS1tZXNzYWdlIiw0LCJuZ0lmIl0sWzEsImVtcHR5LW1lc3NhZ2UiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihfdSgwLCJkaXYiLDApLF91KDEsImRpdiIsMSksX3UoMiwic3BhbiIsMiksTXUoMywidGItdHJ1bmNhdGVkLXBhdGgiLDMpLE11KDQsInZpcy1zZWxlY3RlZC10aW1lLXdhcm5pbmciLDQpLEN1KCksX3UoNSwic3BhbiIsNSksX3UoNiwiYnV0dG9uIiw2KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QaW5DbGlja2VkLmVtaXQoIW4uaXNQaW5uZWQpfSkpLE11KDcsIm1hdC1pY29uIiw3KSxDdSgpLF91KDgsImJ1dHRvbiIsOCksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQWN0dWFsU2l6ZVRvZ2dsZS5lbWl0KCl9KSksTXUoOSwibWF0LWljb24iLDkpLEN1KCksQ3UoKSxDdSgpLF91KDEwLCJkaXYiLDEpLF91KDExLCJzcGFuIiwxMCksTXUoMTIsInNwYW4iLDExKSxNdSgxMywiY2FyZC1ydW4tbmFtZSIsMTIpLEN1KCksX3UoMTQsImRpdiIsMTMpLEhtKDE1LHM2LDMsMywic3BhbiIsMTQpLEhtKDE2LGw2LDQsNiwic3BhbiIsMTUpLEhtKDE3LGM2LDEsMCwibWF0LXNwaW5uZXIiLDE2KSxDdSgpLEN1KCksQ3UoKSxIbSgxOCxnNiw2LDE1LCJuZy1jb250YWluZXIiLDE3KSxIbSgxOSxiNiwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDE4LHF5KSksMiZlKXtjb25zdCB0PUZtKDIwKTtEYygzKSxGdSgidGl0bGUiLG4udGFnKSxGdSgidmFsdWUiLG4udGl0bGUpLERjKDEpLGh1KCJpc0NsaXBwZWQiLG4uc2VsZWN0ZWRUaW1lJiZuLnNlbGVjdGVkVGltZS5jbGlwcGVkKSgiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIixuLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCksRGMoMikseW0oInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxEYygxKSxodSgic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxEYygxKSxodSgiZGlzYWJsZWQiLCFuLmFsbG93VG9nZ2xlQWN0dWFsU2l6ZSksRGMoNCksaHUoIm5nU3R5bGUiLGl5KDE0LHk2LG4ucnVuQ29sb3JTY2FsZShuLnJ1bklkKSkpLERjKDEpLGh1KCJydW5JZCIsbi5ydW5JZCksRGMoMiksaHUoIm5nSWYiLG51bGwhPT1uLnN0ZXBJbmRleCYmbi5zdGVwSW5kZXg8bi5zdGVwcy5sZW5ndGgpLERjKDEpLGh1KCJuZ0lmIixuLm51bVNhbXBsZT4xKSxEYygxKSxodSgibmdJZiIsbi5sb2FkU3RhdGU9PT1uLkRhdGFMb2FkU3RhdGUuTE9BRElORyksRGMoMSksaHUoIm5nSWYiLG51bGwhPT1uLnN0ZXBJbmRleCYmbi5zdGVwSW5kZXg8bi5zdGVwcy5sZW5ndGgpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOlskNCxuNixXTCxFcSx6dixyNixQdixnMixJSixDdix4dl0scGlwZXM6WyR2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDo0cHh9LmFjdHVhbC1zaXplW19uZ2hvc3QtJUNPTVAlXXtoZWlnaHQ6YXV0b30uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgbWF4LWNvbnRlbnR9LnRhZ1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtnYXA6NXB4fS5tZXRhZGF0YVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo1cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21heC13aWR0aDoxNzVweDt0ZXh0LWFsaWduOmVuZH0udGFnLXBhdGhbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbn0ucGluLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE4cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV17YWxpZ24tc2VsZjpiYXNlbGluZTtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kb3RbX25nY29udGVudC0lQ09NUCVde2ZsZXg6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxM3B4O2hlaWdodDoxM3B4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbi1yaWdodDo0cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAucnVuLXRleHRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO21heC13aWR0aDoxMjBweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ydW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAucnVuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2FtcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnN0ZXBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc3RlcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3doaXRlLXNwYWNlOm5vd3JhcDtqdXN0aWZ5LXNlbGY6ZmxleC1lbmQ7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uaW1nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDEgMDtvdmVyZmxvdy15OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LmltZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgaW1nW19uZ2NvbnRlbnQtJUNPTVAlXXtpbWFnZS1yZW5kZXJpbmc6LW1vei1jcmlzcC1lZGdlcztpbWFnZS1yZW5kZXJpbmc6cGl4ZWxhdGVkfS5hY3R1YWwtc2l6ZVtfbmdob3N0LSVDT01QJV0gICAuaW1nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0bztmbGV4Om5vbmV9W19uZ2hvc3QtJUNPTVAlXTpub3QoLmFjdHVhbC1zaXplKSAgIGltZ1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDoxMDAlO3dpZHRoOmF1dG87aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb250YWlufS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5zdGVwLXNsaWRlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxfVtfbmdob3N0LSVDT01QJV0gICAgIC5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmhpZGUtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDowfS5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjFlbTtmb250LXNpemU6MTNweH0ubGlua2VkLXRpbWUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjVweDt3aWR0aDoxMDAlfS5saW5rZWQtdGltZS10aWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjE0cHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTRweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAubGlua2VkLXRpbWUtdGlja1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5saW5rZWQtdGltZS10aWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMyMTIxMjF9LnNsaWRlci10cmFja1tfbmdjb250ZW50LSVDT01QJV0sIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjJweDt0b3A6NnB4O3Bvc2l0aW9uOmFic29sdXRlfS5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMjYpO2xlZnQ6N3B4O3dpZHRoOmNhbGMoMTAwJSAtIDE0cHgpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjMpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfNixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJpbWFnZS1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImltYWdlX2NhcmRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImltYWdlX2NhcmRfY29tcG9uZW50LmNzcyJdLGhvc3Q6eyJbY2xhc3MuYWN0dWFsLXNpemVdIjoic2hvd0FjdHVhbFNpemUifSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtsb2FkU3RhdGU6W3t0eXBlOlJffV0sdGl0bGU6W3t0eXBlOlJffV0sdGFnOlt7dHlwZTpSX31dLHJ1bklkOlt7dHlwZTpSX31dLHNhbXBsZTpbe3R5cGU6Ul99XSxudW1TYW1wbGU6W3t0eXBlOlJffV0saW1hZ2VVcmw6W3t0eXBlOlJffV0sc3RlcEluZGV4Olt7dHlwZTpSX31dLHN0ZXBzOlt7dHlwZTpSX31dLGJyaWdodG5lc3NJbk1pbGxpOlt7dHlwZTpSX31dLGNvbnRyYXN0SW5NaWxsaTpbe3R5cGU6Ul99XSxzaG93QWN0dWFsU2l6ZTpbe3R5cGU6Ul99XSxydW5Db2xvclNjYWxlOlt7dHlwZTpSX31dLGFsbG93VG9nZ2xlQWN0dWFsU2l6ZTpbe3R5cGU6Ul99XSxpc1Bpbm5lZDpbe3R5cGU6Ul99XSxzZWxlY3RlZFN0ZXBzOlt7dHlwZTpSX31dLHNlbGVjdGVkVGltZTpbe3R5cGU6Ul99XSxpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQ6W3t0eXBlOlJffV0sb25BY3R1YWxTaXplVG9nZ2xlOlt7dHlwZTpFX31dLHN0ZXBJbmRleENoYW5nZTpbe3R5cGU6RV99XSxvblBpbkNsaWNrZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBDNntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLmRhdGFTb3VyY2U9ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQ9bmV3IFN5LHRoaXMucGluU3RhdGVDaGFuZ2VkPW5ldyBTeSx0aGlzLmJyaWdodG5lc3NJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdChFeiksdGhpcy5jb250cmFzdEluTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KEF6KSx0aGlzLmFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJD10aGlzLnN0b3JlLnNlbGVjdChUeiksdGhpcy5zaG93QWN0dWFsU2l6ZT0hMSx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQ9ITEsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVTdWJqZWN0PW5ldyBVKHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZCksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW9uU3RlcEluZGV4Q2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKE5BKHtjYXJkSWQ6dGhpcy5jYXJkSWQsc3RlcEluZGV4OnR9KSl9aXNJbWFnZUNhcmRNZXRhZGF0YSh0KXtjb25zdHtwbHVnaW46ZX09dDtyZXR1cm4gZT09PVFULklNQUdFU31vbkFjdHVhbFNpemVUb2dnbGUoKXt0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQ9IXRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZCx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZVN1YmplY3QubmV4dCh0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQpfW5nT25Jbml0KCl7S3QoW3RoaXMuYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckLHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlU3ViamVjdF0pLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxXZSgoKFt0LGVdKT0+e3RoaXMuc2hvd0FjdHVhbFNpemU9dHx8ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dBY3R1YWxTaXplKX0pKSkuc3Vic2NyaWJlKCgoKT0+e30pKTtjb25zdCB0PXRoaXMuc3RvcmUuc2VsZWN0KGR6LHRoaXMuY2FyZElkKS5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSksZmUoKHQ9PiEhdCYmdGhpcy5pc0ltYWdlQ2FyZE1ldGFkYXRhKHQpKSksVnQoKHQ9PnQpKSxGZSgxKSksZT1LdChbdCx0aGlzLnN0b3JlLnNlbGVjdChseix0aGlzLmNhcmRJZCldKS5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSksVnQoKChbdCxlXSk9Pntjb25zdCBuPXQucnVuSWQ7cmV0dXJuIGUmJmUuaGFzT3duUHJvcGVydHkobik/ZVtuXTpbXX0pKSx3ZSgoKHQsZSk9PnQubGVuZ3RoPT09ZS5sZW5ndGgmJjA9PT10Lmxlbmd0aHx8dD09PWUpKSxGZSgxKSk7dGhpcy5zdGVwSW5kZXgkPXRoaXMuc3RvcmUuc2VsZWN0KGZ6LHRoaXMuY2FyZElkKS5waXBlKFZ0KCh0PT50P3QuaW5kZXg6bnVsbCkpKSx0aGlzLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoZnosdGhpcy5jYXJkSWQpLnBpcGUoVnQoKHQ9PiEhdCYmdC5pc0Nsb3Nlc3QpKSksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KHN6LHRoaXMuY2FyZElkKSx0aGlzLnRhZyQ9dC5waXBlKFZ0KCh0PT50LnRhZykpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShWdCgodD0+WDQodCx0aGlzLmdyb3VwTmFtZSkpKSksdGhpcy5ydW5JZCQ9dC5waXBlKFZ0KCh0PT50LnJ1bklkKSkpLHRoaXMuc2FtcGxlJD10LnBpcGUoVnQoKHQ9PnQuc2FtcGxlKSkpLHRoaXMubnVtU2FtcGxlJD10LnBpcGUoVnQoKHQ9PnQubnVtU2FtcGxlKSkpLHRoaXMuc3RlcHMkPXRoaXMuc3RvcmUuc2VsZWN0KGd6LHRoaXMuY2FyZElkKSx0aGlzLmlzUGlubmVkJD10aGlzLnN0b3JlLnNlbGVjdChfeix0aGlzLmNhcmRJZCksdGhpcy5zZWxlY3RlZFRpbWUkPXRoaXMuc3RvcmUuc2VsZWN0KEJ6KS5waXBlKF9lKHRoaXMuc3RlcHMkKSxWdCgoKFt0LGVdKT0+e2lmKCF0KXJldHVybiBudWxsO2xldCBuPTEvMCxvPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZSluPU1hdGgubWluKHQsbiksbz1NYXRoLm1heCh0LG8pO3JldHVybiBLNCh0LG4sbyl9KSkpLHRoaXMuc2VsZWN0ZWRTdGVwcyQ9dGhpcy5zZWxlY3RlZFRpbWUkLnBpcGUoX2UodGhpcy5zdGVwcyQpLFZ0KCgoW3QsZV0pPT57aWYoIXQpcmV0dXJuW107aWYobnVsbD09PXQuZW5kU3RlcClyZXR1cm4tMSE9PWUuaW5kZXhPZih0LnN0YXJ0U3RlcCk/W3Quc3RhcnRTdGVwXTpbXTtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpbz49dC5zdGFydFN0ZXAmJm88PXQuZW5kU3RlcCYmbi5wdXNoKG8pO3JldHVybiBufSkpKTtjb25zdCBuPUt0KFtlLHRoaXMuc3RlcEluZGV4JF0pLnBpcGUoVnQoKChbdCxlXSk9Pm51bGwhPT1lJiZ0W2VdP3RbZV06bnVsbCkpKTt0aGlzLmltYWdlVXJsJD1uLnBpcGUoVnQoKHQ9PnQ/dGhpcy5kYXRhU291cmNlLmltYWdlVXJsKHQuaW1hZ2VJZCk6bnVsbCkpKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9fXZhciBNNix2Nix4NjtmdW5jdGlvbiBPNih0LGUpezEmdCYmKF91KDAsInNwYW4iKSxQZigxLCJzY2FsYXIiKSxDdSgpKX1mdW5jdGlvbiBQNih0LGUpezEmdCYmKF91KDAsInNwYW4iKSxQZigxLCJoaXN0b2dyYW0iKSxDdSgpKX1mdW5jdGlvbiB3Nih0LGUpezEmdCYmKF91KDAsInNwYW4iKSxQZigxLCJ1bmtub3duIiksQ3UoKSl9ZnVuY3Rpb24gazYodCxlKXtpZigxJnQmJih2dSgwLDEzKSxIbSgxLE82LDIsMCwic3BhbiIsMTQpLEhtKDIsUDYsMiwwLCJzcGFuIiwxNCksSG0oMyx3NiwyLDAsInNwYW4iLDE1KSx4dSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7aHUoIm5nU3dpdGNoIix0LmNhcmRNZXRhZGF0YS5wbHVnaW4pLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5TQ0FMQVJTKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuSElTVE9HUkFNUyl9fWZ1bmN0aW9uIFM2KHQsZSl7MSZ0JiZPdSgwKX1mdW5jdGlvbiBENih0LGUpe2lmKDEmdCYmKF91KDAsIm9wdGlvbiIsMTYpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtodSgidmFsdWUiLHQuaWQpLERjKDEpLHdmKHQubmFtZSl9fWZ1bmN0aW9uIFI2KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7dnUoMCksX3UoMSwiaDIiKSxIbSgyLGs2LDQsMywibmctdGVtcGxhdGUiLG51bGwsMixxeSksX3UoNCwic3BhbiIpLFBmKDUsIkRvd25sb2FkwqAiKSxDdSgpLEhtKDYsUzYsMSwwLCJuZy1jb250YWluZXIiLDMpLF91KDcsInNwYW4iKSxQZig4LCLCoGRhdGEgZm9ywqAiKSxDdSgpLF91KDksImNvZGUiLDQpLFBmKDEwKSxDdSgpLEN1KCksX3UoMTEsIm1hdC1kaWFsb2ctY29udGVudCIpLF91KDEyLCJtYXQtZm9ybS1maWVsZCIsNSksX3UoMTMsIm1hdC1sYWJlbCIpLFBmKDE0LCJTZWxlY3QgYSBydW4gdG8gZG93bmxvYWQgYSBkYXRhIGZvciBhIHNlcmllcyIpLEN1KCksX3UoMTUsInNlbGVjdCIsNiksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkucnVuU2VsZWN0ZWQuZW1pdChuLnRhcmdldC52YWx1ZSl9KSksX3UoMTYsIm9wdGlvbiIsNyksUGYoMTcsIi0iKSxDdSgpLEhtKDE4LEQ2LDIsMiwib3B0aW9uIiw4KSxDdSgpLEN1KCksX3UoMTksImRpdiIsOSksX3UoMjAsInNwYW4iKSxQZigyMSwiRG93bmxvYWQgYXPigKYiKSxDdSgpLFBmKDIyLCLCoCIpLF91KDIzLCJhIiwxMCksUGYoMjQsIkpTT04iKSxDdSgpLF91KDI1LCJhIiwxMCksUGYoMjYsIkNTViIpLEN1KCksQ3UoKSxDdSgpLF91KDI3LCJtYXQtZGlhbG9nLWFjdGlvbnMiLDExKSxfdSgyOCwiYnV0dG9uIiwxMiksUGYoMjksIkNsb3NlIiksQ3UoKSxDdSgpLHh1KCl9aWYoMiZ0KXtjb25zdCB0PUZtKDMpLGU9TnUoKTtEYyg2KSxodSgibmdUZW1wbGF0ZU91dGxldCIsdCksRGMoMyksaHUoInRpdGxlIixlLmNhcmRNZXRhZGF0YS50YWcpLERjKDEpLHdmKGUuY2FyZE1ldGFkYXRhLnRhZyksRGMoNSksaHUoInZhbHVlIixlLnNlbGVjdGVkUnVuSWR8fCIiKSxEYygxKSxodSgidmFsdWUiLCIiKSxEYygyKSxodSgibmdGb3JPZiIsZS5ydW5zKSxEYyg1KSxodSgiZGlzYWJsZWQiLCFlLmRvd25sb2FkVXJsSnNvbikoImRvd25sb2FkIixlLmdldERvd25sb2FkTmFtZSgianNvbiIpKSx5bSgiaHJlZiIsZS5kb3dubG9hZFVybEpzb24sWHMpLERjKDIpLGh1KCJkaXNhYmxlZCIsIWUuZG93bmxvYWRVcmxDc3YpKCJkb3dubG9hZCIsZS5nZXREb3dubG9hZE5hbWUoImNzdiIpKSx5bSgiaHJlZiIsZS5kb3dubG9hZFVybENzdixYcyl9fWZ1bmN0aW9uIEU2KHQsZSl7MSZ0JiZQZigwLCJMb2FkaW5nLi4uIil9QzYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEM2KShmdShpUyksZnUoc04pKX0sQzYuybVjbXA9c28oe3R5cGU6QzYsc2VsZWN0b3JzOltbImltYWdlLWNhcmQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixwaW5TdGF0ZUNoYW5nZWQ6InBpblN0YXRlQ2hhbmdlZCJ9LGRlY2xzOjE3LHZhcnM6NTAsY29uc3RzOltbMywibG9hZFN0YXRlIiwidGl0bGUiLCJ0YWciLCJydW5JZCIsInNhbXBsZSIsIm51bVNhbXBsZSIsImltYWdlVXJsIiwic3RlcEluZGV4Iiwic3RlcHMiLCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiLCJicmlnaHRuZXNzSW5NaWxsaSIsImNvbnRyYXN0SW5NaWxsaSIsInJ1bkNvbG9yU2NhbGUiLCJzaG93QWN0dWFsU2l6ZSIsImFsbG93VG9nZ2xlQWN0dWFsU2l6ZSIsImlzUGlubmVkIiwic2VsZWN0ZWRUaW1lIiwic2VsZWN0ZWRTdGVwcyIsInN0ZXBJbmRleENoYW5nZSIsIm9uQWN0dWFsU2l6ZVRvZ2dsZSIsIm9uUGluQ2xpY2tlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiaW1hZ2UtY2FyZC1jb21wb25lbnQiLDApLER1KCJzdGVwSW5kZXhDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU3RlcEluZGV4Q2hhbmdlZChlKX0pKSgib25BY3R1YWxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQWN0dWFsU2l6ZVRvZ2dsZSgpfSkpKCJvblBpbkNsaWNrZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnBpblN0YXRlQ2hhbmdlZC5lbWl0KGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLF95KDcsImFzeW5jIiksX3koOCwiYXN5bmMiKSxfeSg5LCJhc3luYyIpLF95KDEwLCJhc3luYyIpLF95KDExLCJhc3luYyIpLF95KDEyLCJhc3luYyIpLF95KDEzLCJhc3luYyIpLF95KDE0LCJhc3luYyIpLF95KDE1LCJhc3luYyIpLF95KDE2LCJhc3luYyIpLEN1KCkpLDImZSYmaHUoImxvYWRTdGF0ZSIsQ3koMSwxOCxuLmxvYWRTdGF0ZSQpKSgidGl0bGUiLEN5KDIsMjAsbi50aXRsZSQpKSgidGFnIixDeSgzLDIyLG4udGFnJCkpKCJydW5JZCIsQ3koNCwyNCxuLnJ1bklkJCkpKCJzYW1wbGUiLEN5KDUsMjYsbi5zYW1wbGUkKSkoIm51bVNhbXBsZSIsQ3koNiwyOCxuLm51bVNhbXBsZSQpKSgiaW1hZ2VVcmwiLEN5KDcsMzAsbi5pbWFnZVVybCQpKSgic3RlcEluZGV4IixDeSg4LDMyLG4uc3RlcEluZGV4JCkpKCJzdGVwcyIsQ3koOSwzNCxuLnN0ZXBzJCkpKCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiLEN5KDEwLDM2LG4uaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkJCkpKCJicmlnaHRuZXNzSW5NaWxsaSIsQ3koMTEsMzgsbi5icmlnaHRuZXNzSW5NaWxsaSQpKSgiY29udHJhc3RJbk1pbGxpIixDeSgxMiw0MCxuLmNvbnRyYXN0SW5NaWxsaSQpKSgicnVuQ29sb3JTY2FsZSIsbi5ydW5Db2xvclNjYWxlKSgic2hvd0FjdHVhbFNpemUiLG4uc2hvd0FjdHVhbFNpemUpKCJhbGxvd1RvZ2dsZUFjdHVhbFNpemUiLCExPT09Q3koMTMsNDIsbi5hY3R1YWxTaXplR2xvYmFsU2V0dGluZyQpKSgiaXNQaW5uZWQiLEN5KDE0LDQ0LG4uaXNQaW5uZWQkKSkoInNlbGVjdGVkVGltZSIsQ3koMTUsNDYsbi5zZWxlY3RlZFRpbWUkKSkoInNlbGVjdGVkU3RlcHMiLEN5KDE2LDQ4LG4uc2VsZWN0ZWRTdGVwcyQpKX0sZGlyZWN0aXZlczpbXzZdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDNixbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJpbWFnZS1jYXJkIix0ZW1wbGF0ZTonXG4gICAgPGltYWdlLWNhcmQtY29tcG9uZW50XG4gICAgICBbbG9hZFN0YXRlXT0ibG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgICAgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiXG4gICAgICBbdGFnXT0idGFnJCB8IGFzeW5jIlxuICAgICAgW3J1bklkXT0icnVuSWQkIHwgYXN5bmMiXG4gICAgICBbc2FtcGxlXT0ic2FtcGxlJCB8IGFzeW5jIlxuICAgICAgW251bVNhbXBsZV09Im51bVNhbXBsZSQgfCBhc3luYyJcbiAgICAgIFtpbWFnZVVybF09ImltYWdlVXJsJCB8IGFzeW5jIlxuICAgICAgW3N0ZXBJbmRleF09InN0ZXBJbmRleCQgfCBhc3luYyJcbiAgICAgIFtzdGVwc109InN0ZXBzJCB8IGFzeW5jIlxuICAgICAgW2lzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZF09ImlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCQgfCBhc3luYyJcbiAgICAgIChzdGVwSW5kZXhDaGFuZ2UpPSJvblN0ZXBJbmRleENoYW5nZWQoJGV2ZW50KSJcbiAgICAgIFticmlnaHRuZXNzSW5NaWxsaV09ImJyaWdodG5lc3NJbk1pbGxpJCB8IGFzeW5jIlxuICAgICAgW2NvbnRyYXN0SW5NaWxsaV09ImNvbnRyYXN0SW5NaWxsaSQgfCBhc3luYyJcbiAgICAgIFtydW5Db2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSJcbiAgICAgIFtzaG93QWN0dWFsU2l6ZV09InNob3dBY3R1YWxTaXplIlxuICAgICAgW2FsbG93VG9nZ2xlQWN0dWFsU2l6ZV09IihhY3R1YWxTaXplR2xvYmFsU2V0dGluZyQgfCBhc3luYykgPT09IGZhbHNlIlxuICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRUaW1lXT0ic2VsZWN0ZWRUaW1lJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkU3RlcHNdPSJzZWxlY3RlZFN0ZXBzJCB8IGFzeW5jIlxuICAgICAgKG9uQWN0dWFsU2l6ZVRvZ2dsZSk9Im9uQWN0dWFsU2l6ZVRvZ2dsZSgpIlxuICAgICAgKG9uUGluQ2xpY2tlZCk9InBpblN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudCkiXG4gICAgPjwvaW1hZ2UtY2FyZC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfSx7dHlwZTpzTn1dfSkse2NhcmRJZDpbe3R5cGU6Ul99XSxncm91cE5hbWU6W3t0eXBlOlJffV0scnVuQ29sb3JTY2FsZTpbe3R5cGU6Ul99XSxmdWxsV2lkdGhDaGFuZ2VkOlt7dHlwZTpFX31dLHBpblN0YXRlQ2hhbmdlZDpbe3R5cGU6RV99XX0pLChmdW5jdGlvbih0KXt0W3QuU1ZHPTBdPSJTVkciLHRbdC5XRUJHTD0xXT0iV0VCR0wifSkoTTZ8fChNNj17fSkpLChmdW5jdGlvbih0KXt0W3QuTElORUFSPTBdPSJMSU5FQVIiLHRbdC5MT0cxMD0xXT0iTE9HMTAiLHRbdC5USU1FPTJdPSJUSU1FIn0pKHY2fHwodjY9e30pKTtjbGFzcyBBNntjb25zdHJ1Y3Rvcigpe3RoaXMucnVuU2VsZWN0ZWQ9bmV3IFN5LHRoaXMuUGx1Z2luVHlwZT1RVH1nZXREb3dubG9hZE5hbWUodCl7Y29uc3QgZT10aGlzLnJ1bnMuZmluZCgodD0+dC5pZD09PXRoaXMuc2VsZWN0ZWRSdW5JZCkpO3JldHVybiBlP2Ake2UubmFtZX0uJHt0fWA6IiJ9fUE2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBNil9LEE2Lsm1Y21wPXNvKHt0eXBlOkE2LHNlbGVjdG9yczpbWyJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQiXV0saW5wdXRzOntjYXJkTWV0YWRhdGE6ImNhcmRNZXRhZGF0YSIscnVuczoicnVucyIsc2VsZWN0ZWRSdW5JZDoic2VsZWN0ZWRSdW5JZCIsZG93bmxvYWRVcmxDc3Y6ImRvd25sb2FkVXJsQ3N2Iixkb3dubG9hZFVybEpzb246ImRvd25sb2FkVXJsSnNvbiJ9LG91dHB1dHM6e3J1blNlbGVjdGVkOiJydW5TZWxlY3RlZCJ9LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9DYXJkTWV0YWRhdGEiLCIiXSxbImRhdGFOYW1lIiwiIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiXSxbMSwidGFnLW5hbWUiLDMsInRpdGxlIl0sWyJhcHBlYXJhbmNlIiwiZmlsbCIsMSwicnVuLXNlbGVjdG9yIl0sWyJtYXROYXRpdmVDb250cm9sIiwiIiwibmFtZSIsInJ1biIsImNka0ZvY3VzSW5pdGlhbCIsIiIsInJlcXVpcmVkIiwiIiwzLCJ2YWx1ZSIsImNoYW5nZSJdLFsic2VsZWN0ZWQiLCIiLDMsInZhbHVlIl0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiZG93bmxvYWQtY29udHJvbHMiXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMywiZGlzYWJsZWQiLCJkb3dubG9hZCJdLFsiYWxpZ24iLCJlbmQiXSxbIm1hdC1idXR0b24iLCIiLCJtYXQtZGlhbG9nLWNsb3NlIiwiIl0sWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJOZ1N3aXRjaERlZmF1bHQiXSxbMywidmFsdWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKEhtKDAsUjYsMzAsMTIsIm5nLWNvbnRhaW5lciIsMCksSG0oMSxFNiwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDEscXkpKSwyJmUpe2NvbnN0IHQ9Rm0oMik7aHUoIm5nSWYiLG4uY2FyZE1ldGFkYXRhKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbUHYsSXYsY3EsRGosX2osVVosSEcsVkcseHYsR0wsZHEsV0wsc3EsRHYsUnZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1oMltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEuMjVlbTtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LnJ1bi1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45ZW07d2lkdGg6MTAwJX0uZG93bmxvYWQtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5kb3dubG9hZC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46M3B4IDEwcHggM3B4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEE2LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7Y2FyZE1ldGFkYXRhOlt7dHlwZTpSX31dLHJ1bnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRSdW5JZDpbe3R5cGU6Ul99XSxkb3dubG9hZFVybENzdjpbe3R5cGU6Ul99XSxkb3dubG9hZFVybEpzb246W3t0eXBlOlJffV0scnVuU2VsZWN0ZWQ6W3t0eXBlOkVffV19KTtjbGFzcyBUNntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zZWxlY3RlZFJ1bklkJD1uZXcgVShudWxsKSx0aGlzLmNhcmRNZXRhZGF0YSQ9dC5zZWxlY3QoZHosbi5jYXJkSWQpLnBpcGUoZmUoKHQ9PkJvb2xlYW4odCkpKSksdGhpcy5kb3dubG9hZFVybENzdiQ9S3QoW3Quc2VsZWN0KGR6LG4uY2FyZElkKSx0aGlzLnNlbGVjdGVkUnVuSWQkXSkucGlwZShWdCgoKFt0LG5dKT0+dCYmbj9lLmRvd25sb2FkVXJsKHQucGx1Z2luLHQudGFnLG4sImNzdiIpOm51bGwpKSxCZShudWxsKSksdGhpcy5kb3dubG9hZFVybEpzb24kPUt0KFt0LnNlbGVjdChkeixuLmNhcmRJZCksdGhpcy5zZWxlY3RlZFJ1bklkJF0pLnBpcGUoVnQoKChbdCxuXSk9PnQmJm4/ZS5kb3dubG9hZFVybCh0LnBsdWdpbix0LnRhZyxuLCJqc29uIik6bnVsbCkpLEJlKG51bGwpKSx0aGlzLnJ1bnMkPUt0KFt0LnNlbGVjdChpSSksdC5zZWxlY3QobHosbi5jYXJkSWQpXSkucGlwZShWdCgoKFt0LGVdKT0+ZT9PYmplY3Qua2V5cyhlKS5tYXAoKGU9PnQuZ2V0KGUpKSkuZmlsdGVyKEJvb2xlYW4pOltdKSkpfX1mdW5jdGlvbiBONih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiB6Nih0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gTjYodChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLG8saSl7Zm9yKG51bGw9PW8mJihvPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO3QoZVthXSxuKTwwP289YSsxOmk9YX1yZXR1cm4gb30scmlnaHQ6ZnVuY3Rpb24oZSxuLG8saSl7Zm9yKG51bGw9PW8mJihvPTApLG51bGw9PWkmJihpPWUubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO3QoZVthXSxuKT4wP2k9YTpvPWErMX1yZXR1cm4gb319fVQ2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUNikoZnUoaVMpLGZ1KHNOKSxmdSgkWSkpfSxUNi7JtWNtcD1zbyh7dHlwZTpUNixzZWxlY3RvcnM6W1siZGF0YV9kb3dubG9hZF9kaWFsb2ciXV0sZGVjbHM6Nix2YXJzOjE1LGNvbnN0czpbWzMsImNhcmRNZXRhZGF0YSIsInJ1bnMiLCJzZWxlY3RlZFJ1bklkIiwiZG93bmxvYWRVcmxDc3YiLCJkb3dubG9hZFVybEpzb24iLCJydW5TZWxlY3RlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50IiwwKSxEdSgicnVuU2VsZWN0ZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdGVkUnVuSWQkLm5leHQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLEN1KCkpLDImZSYmaHUoImNhcmRNZXRhZGF0YSIsQ3koMSw1LG4uY2FyZE1ldGFkYXRhJCkpKCJydW5zIixDeSgyLDcsbi5ydW5zJCkpKCJzZWxlY3RlZFJ1bklkIixDeSgzLDksbi5zZWxlY3RlZFJ1bklkJCkpKCJkb3dubG9hZFVybENzdiIsQ3koNCwxMSxuLmRvd25sb2FkVXJsQ3N2JCkpKCJkb3dubG9hZFVybEpzb24iLEN5KDUsMTMsbi5kb3dubG9hZFVybEpzb24kKSl9LGRpcmVjdGl2ZXM6W0E2XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVDYsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZGF0YV9kb3dubG9hZF9kaWFsb2ciLHRlbXBsYXRlOic8ZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50XG4gICAgW2NhcmRNZXRhZGF0YV09ImNhcmRNZXRhZGF0YSQgfCBhc3luYyJcbiAgICBbcnVuc109InJ1bnMkIHwgYXN5bmMiXG4gICAgW3NlbGVjdGVkUnVuSWRdPSJzZWxlY3RlZFJ1bklkJCB8IGFzeW5jIlxuICAgIFtkb3dubG9hZFVybENzdl09ImRvd25sb2FkVXJsQ3N2JCB8IGFzeW5jIlxuICAgIFtkb3dubG9hZFVybEpzb25dPSJkb3dubG9hZFVybEpzb24kIHwgYXN5bmMiXG4gICAgKHJ1blNlbGVjdGVkKT0ic2VsZWN0ZWRSdW5JZCQubmV4dCgkZXZlbnQpIlxuICA+PC9kYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQ+JyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOnNOfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbJFldfV19XX0pLG51bGwpLChmdW5jdGlvbih0KXt0W3QuT1JJR0lOQUw9MF09Ik9SSUdJTkFMIix0W3QuREVSSVZFRD0xXT0iREVSSVZFRCJ9KSh4Nnx8KHg2PXt9KSk7dmFyIEk2PXo2KE42KS5yaWdodDtmdW5jdGlvbiBINih0LGUpe3ZhciBuLG8saSxhPXQubGVuZ3RoLHI9LTE7aWYobnVsbD09ZSl7Zm9yKDsrK3I8YTspaWYobnVsbCE9KG49dFtyXSkmJm4+PW4pZm9yKG89aT1uOysrcjxhOyludWxsIT0obj10W3JdKSYmKG8+biYmKG89biksaTxuJiYoaT1uKSl9ZWxzZSBmb3IoOysrcjxhOylpZihudWxsIT0obj1lKHRbcl0scix0KSkmJm4+PW4pZm9yKG89aT1uOysrcjxhOyludWxsIT0obj1lKHRbcl0scix0KSkmJihvPm4mJihvPW4pLGk8biYmKGk9bikpO3JldHVybltvLGldfXZhciBGNj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gTDYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEI2KHQpe3JldHVybiB0fWZ1bmN0aW9uIFY2KHQsZSxuKXt0PSt0LGU9K2Usbj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOmk8Mz8xOituO2Zvcih2YXIgbz0tMSxpPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLGE9bmV3IEFycmF5KGkpOysrbzxpOylhW29dPXQrbypuO3JldHVybiBhfXZhciBVNj1NYXRoLnNxcnQoNTApLGo2PU1hdGguc3FydCgxMCksVzY9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIEc2KHQsZSxuKXt2YXIgbyxpLGEscixzPS0xO2lmKG49K24sKHQ9K3QpPT09KGU9K2UpJiZuPjApcmV0dXJuW3RdO2lmKChvPWU8dCkmJihpPXQsdD1lLGU9aSksMD09PShyPVk2KHQsZSxuKSl8fCFpc0Zpbml0ZShyKSlyZXR1cm5bXTtpZihyPjApZm9yKHQ9TWF0aC5jZWlsKHQvciksZT1NYXRoLmZsb29yKGUvciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwoZS10KzEpKTsrK3M8aTspYVtzXT0odCtzKSpyO2Vsc2UgZm9yKHQ9TWF0aC5mbG9vcih0KnIpLGU9TWF0aC5jZWlsKGUqciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwodC1lKzEpKTsrK3M8aTspYVtzXT0odC1zKS9yO3JldHVybiBvJiZhLnJldmVyc2UoKSxhfWZ1bmN0aW9uIFk2KHQsZSxuKXt2YXIgbz0oZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApLGE9by9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49VTY/MTA6YT49ajY/NTphPj1XNj8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PVU2PzEwOmE+PWo2PzU6YT49VzY/MjoxKX1mdW5jdGlvbiBxNih0LGUsbil7dmFyIG89TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApKSxhPW8vaTtyZXR1cm4gYT49VTY/aSo9MTA6YT49ajY/aSo9NTphPj1XNiYmKGkqPTIpLGU8dD8taTppfWZ1bmN0aW9uIFo2KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIFg2KCl7dmFyIHQ9QjYsZT1INixuPVo2O2Z1bmN0aW9uIG8obyl7dmFyIGksYSxyPW8ubGVuZ3RoLHM9bmV3IEFycmF5KHIpO2ZvcihpPTA7aTxyOysraSlzW2ldPXQob1tpXSxpLG8pO3ZhciBsPWUocyksYz1sWzBdLGQ9bFsxXSxwPW4ocyxjLGQpO0FycmF5LmlzQXJyYXkocCl8fChwPXE2KGMsZCxwKSxwPVY2KE1hdGguY2VpbChjL3ApKnAsZCxwKSk7Zm9yKHZhciBtPXAubGVuZ3RoO3BbMF08PWM7KXAuc2hpZnQoKSwtLW07Zm9yKDtwW20tMV0+ZDspcC5wb3AoKSwtLW07dmFyIHUsZj1uZXcgQXJyYXkobSsxKTtmb3IoaT0wO2k8PW07KytpKSh1PWZbaV09W10pLngwPWk+MD9wW2ktMV06Yyx1LngxPWk8bT9wW2ldOmQ7Zm9yKGk9MDtpPHI7KytpKWM8PShhPXNbaV0pJiZhPD1kJiZmW0k2KHAsYSwwLG0pXS5wdXNoKG9baV0pO3JldHVybiBmfXJldHVybiBvLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6TDYoZSksbyk6dH0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMNihbdFswXSx0WzFdXSksbyk6ZX0sby50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9MNihGNi5jYWxsKHQpKTpMNih0KSxvKTpufSxvfXZhciBLNj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gSjYodCl7cmV0dXJuIHR9dmFyIFE2PTFlLTY7ZnVuY3Rpb24gJDYodCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Ky41KSsiLDApIn1mdW5jdGlvbiB0Nyh0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIGU3KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4rdChlKX19ZnVuY3Rpb24gbjcodCl7dmFyIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTEpLzI7cmV0dXJuIHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSksZnVuY3Rpb24obil7cmV0dXJuK3QobikrZX19ZnVuY3Rpb24gbzcoKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gaTcodCxlKXt2YXIgbj1bXSxvPW51bGwsaT1udWxsLGE9NixyPTYscz0zLGw9MT09PXR8fDQ9PT10Py0xOjEsYz00PT09dHx8Mj09PXQ/IngiOiJ5IixkPTE9PT10fHwzPT09dD8kNjp0NztmdW5jdGlvbiBwKHApe3ZhciBtPW51bGw9PW8/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTpvLHU9bnVsbD09aT9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6SjY6aSxmPU1hdGgubWF4KGEsMCkrcyxnPWUucmFuZ2UoKSxoPStnWzBdKy41LGI9K2dbZy5sZW5ndGgtMV0rLjUseT0oZS5iYW5kd2lkdGg/bjc6ZTcpKGUuY29weSgpKSxfPXAuc2VsZWN0aW9uP3Auc2VsZWN0aW9uKCk6cCxDPV8uc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLE09Xy5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShtLGUpLm9yZGVyKCksdj1NLmV4aXQoKSx4PU0uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxPPU0uc2VsZWN0KCJsaW5lIiksUD1NLnNlbGVjdCgidGV4dCIpO0M9Qy5tZXJnZShDLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSxNPU0ubWVyZ2UoeCksTz1PLm1lcmdlKHguYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihjKyIyIixsKmEpKSxQPVAubWVyZ2UoeC5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihjLGwqZikuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSkscCE9PV8mJihDPUMudHJhbnNpdGlvbihwKSxNPU0udHJhbnNpdGlvbihwKSxPPU8udHJhbnNpdGlvbihwKSxQPVAudHJhbnNpdGlvbihwKSx2PXYudHJhbnNpdGlvbihwKS5hdHRyKCJvcGFjaXR5IixRNikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9eSh0KSk/ZCh0KTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSkseC5hdHRyKCJvcGFjaXR5IixRNikuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gZChlJiZpc0Zpbml0ZShlPWUodCkpP2U6eSh0KSl9KSkpLHYucmVtb3ZlKCksQy5hdHRyKCJkIiw0PT09dHx8Mj09dD9yPyJNIitsKnIrIiwiK2grIkgwLjVWIitiKyJIIitsKnI6Ik0wLjUsIitoKyJWIitiOnI/Ik0iK2grIiwiK2wqcisiVjAuNUgiK2IrIlYiK2wqcjoiTSIraCsiLDAuNUgiK2IpLE0uYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGQoeSh0KSl9KSksTy5hdHRyKGMrIjIiLGwqYSksUC5hdHRyKGMsbCpmKS50ZXh0KHUpLF8uZmlsdGVyKG83KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSxfLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9eX0pKX1yZXR1cm4gcC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHApOmV9LHAudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1LNi5jYWxsKGFyZ3VtZW50cykscH0scC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106SzYuY2FsbCh0KSxwKTpuLnNsaWNlKCl9LHAudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6SzYuY2FsbCh0KSxwKTpvJiZvLnNsaWNlKCl9LHAudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHApOml9LHAudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9cj0rdCxwKTphfSxwLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QscCk6YX0scC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LHApOnJ9LHAudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QscCk6c30scH1mdW5jdGlvbiBhNyh0KXtyZXR1cm4gaTcoMix0KX1mdW5jdGlvbiByNyh0KXtyZXR1cm4gaTcoMyx0KX12YXIgczc9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gbDcoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxvPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIG98fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtvW3RdPVtdfXJldHVybiBuZXcgYzcobyl9ZnVuY3Rpb24gYzcodCl7dGhpcy5fPXR9ZnVuY3Rpb24gZDcodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixvPXQuaW5kZXhPZigiLiIpO2lmKG8+PTAmJihuPXQuc2xpY2UobysxKSx0PXQuc2xpY2UoMCxvKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIHA3KHQsZSl7Zm9yKHZhciBuLG89MCxpPXQubGVuZ3RoO288aTsrK28paWYoKG49dFtvXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gbTcodCxlLG4pe2Zvcih2YXIgbz0wLGk9dC5sZW5ndGg7bzxpOysrbylpZih0W29dLm5hbWU9PT1lKXt0W29dPXM3LHQ9dC5zbGljZSgwLG8pLmNvbmNhdCh0LnNsaWNlKG8rMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1jNy5wcm90b3R5cGU9bDcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjNyxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLG89dGhpcy5fLGk9ZDcodCsiIixvKSxhPS0xLHI9aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8cjspaWYobj0odD1pW2FdKS50eXBlKW9bbl09bTcob1tuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIG8pb1tuXT1tNyhvW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxyOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49cDcob1tuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgYzcodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLG8saT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0obz10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKW9bYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBvPXRoaXMuX1t0XSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKW9baV0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciB1Nz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsZjc9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnU3LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gZzcodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksZjcuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmY3W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gaDcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT11NyYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09dTc/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIGI3KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHk3KHQpe3ZhciBlPWc3KHQpO3JldHVybihlLmxvY2FsP2I3Omg3KShlKX1mdW5jdGlvbiBfNygpe31mdW5jdGlvbiBDNyh0KXtyZXR1cm4gbnVsbD09dD9fNzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIE03KCl7cmV0dXJuW119ZnVuY3Rpb24gdjcodCl7cmV0dXJuIG51bGw9PXQ/TTc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiB4Nyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiBPNyh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBQNyh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1QNy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlA3LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O2Z1bmN0aW9uIHc3KHQsZSxuLG8saSxhKXtmb3IodmFyIHIscz0wLGw9ZS5sZW5ndGgsYz1hLmxlbmd0aDtzPGM7KytzKShyPWVbc10pPyhyLl9fZGF0YV9fPWFbc10sb1tzXT1yKTpuW3NdPW5ldyBQNyh0LGFbc10pO2Zvcig7czxsOysrcykocj1lW3NdKSYmKGlbc109cil9ZnVuY3Rpb24gazcodCxlLG4sbyxpLGEscil7dmFyIHMsbCxjLGQ9e30scD1lLmxlbmd0aCxtPWEubGVuZ3RoLHU9bmV3IEFycmF5KHApO2ZvcihzPTA7czxwOysrcykobD1lW3NdKSYmKHVbc109Yz0iJCIrci5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gZD9pW3NdPWw6ZFtjXT1sKTtmb3Iocz0wO3M8bTsrK3MpKGw9ZFtjPSIkIityLmNhbGwodCxhW3NdLHMsYSldKT8ob1tzXT1sLGwuX19kYXRhX189YVtzXSxkW2NdPW51bGwpOm5bc109bmV3IFA3KHQsYVtzXSk7Zm9yKHM9MDtzPHA7KytzKShsPWVbc10pJiZkW3Vbc11dPT09bCYmKGlbc109bCl9ZnVuY3Rpb24gUzcodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gRDcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIFI3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gRTcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBBNyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBUNyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gTjcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gejcodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIEk3KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIEg3KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gRjcodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW8/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbyxuKX19ZnVuY3Rpb24gTDcodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHx6Nyh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBCNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gVjcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIFU3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIGo3KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBXNyh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBHNyh0KX1mdW5jdGlvbiBHNyh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9ajcodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBZNyh0LGUpe2Zvcih2YXIgbj1XNyh0KSxvPS0xLGk9ZS5sZW5ndGg7KytvPGk7KW4uYWRkKGVbb10pfWZ1bmN0aW9uIHE3KHQsZSl7Zm9yKHZhciBuPVc3KHQpLG89LTEsaT1lLmxlbmd0aDsrK288aTspbi5yZW1vdmUoZVtvXSl9ZnVuY3Rpb24gWjcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7WTcodGhpcyx0KX19ZnVuY3Rpb24gWDcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cTcodGhpcyx0KX19ZnVuY3Rpb24gSzcodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/WTc6cTcpKHRoaXMsdCl9fWZ1bmN0aW9uIEo3KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBRNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uICQ3KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiB0OCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIGU4KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIG44KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gbzgoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gaTgoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBhOCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIHI4KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gczgoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGw4KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1HNy5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBjOD17fSxkOD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KGM4PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTtmdW5jdGlvbiBwOCh0LGUsbil7cmV0dXJuIHQ9bTgodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBtOCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBpPWQ4O2Q4PW87dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e2Q4PWl9fX1mdW5jdGlvbiB1OCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBmOCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLG89MCxpPS0xLGE9ZS5sZW5ndGg7bzxhOysrbyluPWVbb10sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysraV09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK2k/ZS5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gZzgodCxlLG4pe3ZhciBvPWM4Lmhhc093blByb3BlcnR5KHQudHlwZSk/cDg6bTg7cmV0dXJuIGZ1bmN0aW9uKGksYSxyKXt2YXIgcyxsPXRoaXMuX19vbixjPW8oZSxhLHIpO2lmKGwpZm9yKHZhciBkPTAscD1sLmxlbmd0aDtkPHA7KytkKWlmKChzPWxbZF0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gaDgodCxlLG4pe3ZhciBvPXo3KHQpLGk9by5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2YgaT9pPW5ldyBpKGUsbik6KGk9by5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhpLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLGkuZGV0YWlsPW4uZGV0YWlsKTppLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIGI4KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGg4KHRoaXMsdCxlKX19ZnVuY3Rpb24geTgodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaDgodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIF84PVtudWxsXTtmdW5jdGlvbiBDOCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBNOCgpe3JldHVybiBuZXcgQzgoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxfOCl9ZnVuY3Rpb24gdjgodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBDOChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEM4KFtbdF1dLF84KX1mdW5jdGlvbiB4OCgpe2Zvcih2YXIgdCxlPWQ4O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIE84KHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIG89bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBvLng9ZS5jbGllbnRYLG8ueT1lLmNsaWVudFksWyhvPW8ubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxvLnldfXZhciBpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1pLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1pLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gUDgodCl7dmFyIGU9eDgoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksTzgodCxlKX1mdW5jdGlvbiB3OCgpe2Q4LnByZXZlbnREZWZhdWx0KCksZDguc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gazgodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj12OCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLHc4LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLHc4LCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBTOCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89djgodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoby5vbigiY2xpY2suZHJhZyIsdzgsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7by5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9vLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBEOCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gUjgodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIG8gaW4gZSluW29dPWVbb107cmV0dXJuIG59ZnVuY3Rpb24gRTgoKXt9QzgucHJvdG90eXBlPU04LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Qzgsc2VsZWN0OmZ1bmN0aW9uIEE4KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1DNyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLG89bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxyLHM9ZVtpXSxsPXMubGVuZ3RoLGM9b1tpXT1uZXcgQXJyYXkobCksZD0wO2Q8bDsrK2QpKGE9c1tkXSkmJihyPXQuY2FsbChhLGEuX19kYXRhX18sZCxzKSkmJigiX19kYXRhX18iaW4gYSYmKHIuX19kYXRhX189YS5fX2RhdGFfXyksY1tkXT1yKTtyZXR1cm4gbmV3IEM4KG8sdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBUOCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9djcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciByLHM9ZVthXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShyPXNbY10pJiYoby5wdXNoKHQuY2FsbChyLHIuX19kYXRhX18sYyxzKSksaS5wdXNoKHIpKTtyZXR1cm4gbmV3IEM4KG8saSl9LGZpbHRlcjpmdW5jdGlvbiBOOCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9eDcodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEscj1lW2ldLHM9ci5sZW5ndGgsbD1vW2ldPVtdLGM9MDtjPHM7KytjKShhPXJbY10pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLGMscikmJmwucHVzaChhKTtyZXR1cm4gbmV3IEM4KG8sdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gejgodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGQ9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrZF09dH0pKSxmO3ZhciBuPWU/azc6dzcsbz10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciByPWkubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGw9bmV3IEFycmF5KHIpLGM9bmV3IEFycmF5KHIpLGQ9MDtkPHI7KytkKXt2YXIgcD1vW2RdLG09aVtkXSx1PW0ubGVuZ3RoLGY9dC5jYWxsKHAscCYmcC5fX2RhdGFfXyxkLG8pLGc9Zi5sZW5ndGgsaD1sW2RdPW5ldyBBcnJheShnKSxiPXNbZF09bmV3IEFycmF5KGcpO24ocCxtLGgsYixjW2RdPW5ldyBBcnJheSh1KSxmLGUpO2Zvcih2YXIgeSxfLEM9MCxNPTA7QzxnOysrQylpZih5PWhbQ10pe2ZvcihDPj1NJiYoTT1DKzEpOyEoXz1iW01dKSYmKytNPGc7KTt5Ll9uZXh0PV98fG51bGx9fXJldHVybihzPW5ldyBDOChzLG8pKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gSTgoKXtyZXR1cm4gbmV3IEM4KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKE83KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBIOCgpe3JldHVybiBuZXcgQzgodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChPNyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gRjgodCxlLG4pe3ZhciBvPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4gbz0iZnVuY3Rpb24iPT10eXBlb2YgdD90KG8pOm8uYXBwZW5kKHQrIiIpLG51bGwhPWUmJihpPWUoaSkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLG8mJmk/by5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uIEw4KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsbz1lLmxlbmd0aCxpPU1hdGgubWluKG8sbi5sZW5ndGgpLGE9bmV3IEFycmF5KG8pLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsPWVbcl0sYz1uW3JdLGQ9bC5sZW5ndGgscD1hW3JdPW5ldyBBcnJheShkKSxtPTA7bTxkOysrbSkocz1sW21dfHxjW21dKSYmKHBbbV09cyk7Zm9yKDtyPG87KytyKWFbcl09ZVtyXTtyZXR1cm4gbmV3IEM4KGEsdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIEI4KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgbyxpPXRbZV0sYT1pLmxlbmd0aC0xLHI9aVthXTstLWE+PTA7KShvPWlbYV0pJiYociYmNF5vLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpJiZyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8scikscj1vKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBWOCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PVM3KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLG89bi5sZW5ndGgsaT1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2Epe2Zvcih2YXIgcixzPW5bYV0sbD1zLmxlbmd0aCxjPWlbYV09bmV3IEFycmF5KGwpLGQ9MDtkPGw7KytkKShyPXNbZF0pJiYoY1tkXT1yKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyBDOChpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gVTgoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIGo4KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBXOCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIG89dFtlXSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKXt2YXIgcj1vW2ldO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gRzgoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIFk4KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIHE4KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLG89ZS5sZW5ndGg7bjxvOysrbilmb3IodmFyIGksYT1lW25dLHI9MCxzPWEubGVuZ3RoO3I8czsrK3IpKGk9YVtyXSkmJnQuY2FsbChpLGkuX19kYXRhX18scixhKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBaOCh0LGUpe3ZhciBuPWc3KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIG89dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/by5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOm8uZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9SNzpENzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP043OlQ3Om4ubG9jYWw/QTc6RTcpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBYOCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/STc6ImZ1bmN0aW9uIj09dHlwZW9mIGU/Rjc6SDcpKHQsZSxudWxsPT1uPyIiOm4pKTpMNyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gSzgodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9CNzoiZnVuY3Rpb24iPT10eXBlb2YgZT9VNzpWNykodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gSjgodCxlKXt2YXIgbj1qNyh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbz1XNyh0aGlzLm5vZGUoKSksaT0tMSxhPW4ubGVuZ3RoOysraTxhOylpZighby5jb250YWlucyhuW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9LNzplP1o3Olg3KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBROCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9KNzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/JDc6UTcpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiAkOCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD90ODooImZ1bmN0aW9uIj09dHlwZW9mIHQ/bjg6ZTgpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIHQ5KCl7cmV0dXJuIHRoaXMuZWFjaChvOCl9LGxvd2VyOmZ1bmN0aW9uIGU5KCl7cmV0dXJuIHRoaXMuZWFjaChpOCl9LGFwcGVuZDpmdW5jdGlvbiBuOSh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Onk3KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBvOSh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eTcodCksbz1udWxsPT1lP2E4OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6QzcoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBpOSgpe3JldHVybiB0aGlzLmVhY2gocjgpfSxjbG9uZTpmdW5jdGlvbiBhOSh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9sODpzOCl9LGRhdHVtOmZ1bmN0aW9uIHI5KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gczkodCxlLG4pe3ZhciBvLGksYT11OCh0KyIiKSxyPWEubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9nODpmOCxudWxsPT1uJiYobj0hMSksbz0wO288cjsrK28pdGhpcy5lYWNoKHMoYVtvXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCxkPXMubGVuZ3RoO2M8ZDsrK2MpZm9yKG89MCxsPXNbY107bzxyOysrbylpZigoaT1hW29dKS50eXBlPT09bC50eXBlJiZpLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIGw5KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/eTg6YjgpKHQsZSkpfX07dmFyIGM5PS43LGQ5PTEvYzkscDk9IlxccyooWystXT9cXGQrKVxccyoiLG05PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLHU5PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixmOT0vXiMoWzAtOWEtZl17Myw4fSkkLyxnOT1uZXcgUmVnRXhwKCJecmdiXFwoIitbcDkscDkscDldKyJcXCkkIiksaDk9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3U5LHU5LHU5XSsiXFwpJCIpLGI5PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbcDkscDkscDksbTldKyJcXCkkIikseTk9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1t1OSx1OSx1OSxtOV0rIlxcKSQiKSxfOT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbbTksdTksdTldKyJcXCkkIiksQzk9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1ttOSx1OSx1OSxtOV0rIlxcKSQiKSxNOT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB2OSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIHg5KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gTzkodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9ZjkuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9QOShlKTozPT09bj9uZXcgRDkoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP3c5KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP3c5KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9ZzkuZXhlYyh0KSk/bmV3IEQ5KGVbMV0sZVsyXSxlWzNdLDEpOihlPWg5LmV4ZWModCkpP25ldyBEOSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1iOS5leGVjKHQpKT93OShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT15OS5leGVjKHQpKT93OSgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1fOS5leGVjKHQpKT9UOShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPUM5LmV4ZWModCkpP1Q5KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6TTkuaGFzT3duUHJvcGVydHkodCk/UDkoTTlbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBEOShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFA5KHQpe3JldHVybiBuZXcgRDkodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHc5KHQsZSxuLG8pe3JldHVybiBvPD0wJiYodD1lPW49TmFOKSxuZXcgRDkodCxlLG4sbyl9ZnVuY3Rpb24gazkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBFOHx8KHQ9TzkodCkpLHQ/bmV3IEQ5KCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBEOX1mdW5jdGlvbiBTOSh0LGUsbixvKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/azkodCk6bmV3IEQ5KHQsZSxuLG51bGw9PW8/MTpvKX1mdW5jdGlvbiBEOSh0LGUsbixvKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K299ZnVuY3Rpb24gUjkoKXtyZXR1cm4iIyIrQTkodGhpcy5yKStBOSh0aGlzLmcpK0E5KHRoaXMuYil9ZnVuY3Rpb24gRTkoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBBOSh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFQ5KHQsZSxuLG8pe3JldHVybiBvPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgSTkodCxlLG4sbyl9ZnVuY3Rpb24gTjkodCl7aWYodCBpbnN0YW5jZW9mIEk5KXJldHVybiBuZXcgSTkodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgRTh8fCh0PU85KHQpKSwhdClyZXR1cm4gbmV3IEk5O2lmKHQgaW5zdGFuY2VvZiBJOSlyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsbz10LmIvMjU1LGk9TWF0aC5taW4oZSxuLG8pLGE9TWF0aC5tYXgoZSxuLG8pLHI9TmFOLHM9YS1pLGw9KGEraSkvMjtyZXR1cm4gcz8ocj1lPT09YT8obi1vKS9zKzYqKG48byk6bj09PWE/KG8tZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P2EraToyLWEtaSxyKj02MCk6cz1sPjAmJmw8MT8wOnIsbmV3IEk5KHIscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gejkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP045KHQpOm5ldyBJOSh0LGUsbixudWxsPT1vPzE6byl9ZnVuY3Rpb24gSTkodCxlLG4sbyl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIEg5KHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1EOChFOCxPOSx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDp2OSxmb3JtYXRIZXg6djksZm9ybWF0SHNsOmZ1bmN0aW9uIEY5KCl7cmV0dXJuIE45KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6eDksdG9TdHJpbmc6eDl9KSxEOChEOSxTOSxSOChFOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9kOTpNYXRoLnBvdyhkOSx0KSxuZXcgRDkodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Yzk6TWF0aC5wb3coYzksdCksbmV3IEQ5KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6UjksZm9ybWF0SGV4OlI5LGZvcm1hdFJnYjpFOSx0b1N0cmluZzpFOX0pKSxEOChJOSx6OSxSOChFOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9kOTpNYXRoLnBvdyhkOSx0KSxuZXcgSTkodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9jOTpNYXRoLnBvdyhjOSx0KSxuZXcgSTkodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsbz1uKyhuPC41P246MS1uKSplLGk9MipuLW87cmV0dXJuIG5ldyBEOShIOSh0Pj0yNDA/dC0yNDA6dCsxMjAsaSxvKSxIOSh0LGksbyksSDkodDwxMjA/dCsyNDA6dC0xMjAsaSxvKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgTDk9TWF0aC5QSS8xODAsQjk9MTgwL01hdGguUEksVjk9Ljk2NDIyLFU5PS44MjUyMSxqOT00LzI5LFc5PTYvMjksRzk9MypXOSpXOTtmdW5jdGlvbiBZOSh0KXtpZih0IGluc3RhbmNlb2YgcTkpcmV0dXJuIG5ldyBxOSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiB0dHQpcmV0dXJuIGV0dCh0KTt0IGluc3RhbmNlb2YgRDl8fCh0PWs5KHQpKTt2YXIgZSxuLG89SjkodC5yKSxpPUo5KHQuZyksYT1KOSh0LmIpLHI9WjkoKC4yMjI1MDQ1Km8rLjcxNjg3ODYqaSsuMDYwNjE2OSphKS8xKTtyZXR1cm4gbz09PWkmJmk9PT1hP2U9bj1yOihlPVo5KCguNDM2MDc0NypvKy4zODUwNjQ5KmkrLjE0MzA4MDQqYSkvVjkpLG49WjkoKC4wMTM5MzIyKm8rLjA5NzEwNDUqaSsuNzE0MTczMyphKS9VOSkpLG5ldyBxOSgxMTYqci0xNiw1MDAqKGUtciksMjAwKihyLW4pLHQub3BhY2l0eSl9ZnVuY3Rpb24gcTkodCxlLG4sbyl7dGhpcy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIFo5KHQpe3JldHVybiB0Pi4wMDg4NTY0NTE2NzkwMzU2MzE/TWF0aC5wb3codCwxLzMpOnQvRzkrajl9ZnVuY3Rpb24gWDkodCl7cmV0dXJuIHQ+Vzk/dCp0KnQ6RzkqKHQtajkpfWZ1bmN0aW9uIEs5KHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gSjkodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gUTkodCl7aWYodCBpbnN0YW5jZW9mIHR0dClyZXR1cm4gbmV3IHR0dCh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBxOXx8KHQ9WTkodCkpLDA9PT10LmEmJjA9PT10LmIpcmV0dXJuIG5ldyB0dHQoTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqQjk7cmV0dXJuIG5ldyB0dHQoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gJDkodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1E5KHQpOm5ldyB0dHQodCxlLG4sbnVsbD09bz8xOm8pfWZ1bmN0aW9uIHR0dCh0LGUsbixvKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K299ZnVuY3Rpb24gZXR0KHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyBxOSh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKkw5O3JldHVybiBuZXcgcTkodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1mdW5jdGlvbiBudHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIG90dCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIGl0dCh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9vdHQodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOm50dChpc05hTih0KT9lOnQpfWZ1bmN0aW9uIGF0dCh0KXtyZXR1cm4gMT09KHQ9K3QpP3J0dDpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24obyl7cmV0dXJuIE1hdGgucG93KHQrbyplLG4pfX0pKGUsbix0KTpudHQoaXNOYU4oZSk/bjplKX19ZnVuY3Rpb24gcnR0KHQsZSl7dmFyIG49ZS10O3JldHVybiBuP290dCh0LG4pOm50dChpc05hTih0KT9lOnQpfUQ4KHE5LChmdW5jdGlvbiBzdHQodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1k5KHQpOm5ldyBxOSh0LGUsbixudWxsPT1vPzE6byl9KSxSOChFOCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBxOSh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHE5KHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBEOShLOSgzLjEzMzg1NjEqKGU9VjkqWDkoZSkpLTEuNjE2ODY2NyoodD0xKlg5KHQpKS0uNDkwNjE0Nioobj1VOSpYOShuKSkpLEs5KC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksSzkoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxEOCh0dHQsJDksUjgoRTgse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdHR0KHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdHR0KHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIGV0dCh0aGlzKS5yZ2IoKX19KSk7dmFyIGx0dD0oZnVuY3Rpb24gdChlKXt2YXIgbj1hdHQoZSk7ZnVuY3Rpb24gbyh0LGUpe3ZhciBvPW4oKHQ9UzkodCkpLnIsKGU9UzkoZSkpLnIpLGk9bih0LmcsZS5nKSxhPW4odC5iLGUuYikscj1ydHQodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9byhlKSx0Lmc9aShlKSx0LmI9YShlKSx0Lm9wYWNpdHk9cihlKSx0KyIifX1yZXR1cm4gby5nYW1tYT10LG99KSgxKTt2YXIgY3R0PShmdW5jdGlvbiBwdHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLG8saT1lLmxlbmd0aCxhPW5ldyBBcnJheShpKSxyPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pbz1TOShlW25dKSxhW25dPW8ucnx8MCxyW25dPW8uZ3x8MCxzW25dPW8uYnx8MDtyZXR1cm4gYT10KGEpLHI9dChyKSxzPXQocyksby5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIG8ucj1hKHQpLG8uZz1yKHQpLG8uYj1zKHQpLG8rIiJ9fX0pKChmdW5jdGlvbiBkdHQodCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIG89bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLGk9dFtvXSxhPXRbbysxXTtyZXR1cm4oZnVuY3Rpb24gcih0LGUsbixvLGkpe3ZhciBhPXQqdCxyPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1yKSplKyg0LTYqYSszKnIpKm4rKDErMyp0KzMqYS0zKnIpKm8rcippKS82fSkoKG4tby9lKSplLG8+MD90W28tMV06MippLWEsaSxhLG88ZS0xP3RbbysyXToyKmEtaSl9fSkpO2Z1bmN0aW9uIG10dCh0LGUpe2V8fChlPVtdKTt2YXIgbixvPXQ/TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpOjAsaT1lLnNsaWNlKCk7cmV0dXJuIGZ1bmN0aW9uKGEpe2ZvcihuPTA7bjxvOysrbilpW25dPXRbbl0qKDEtYSkrZVtuXSphO3JldHVybiBpfX1mdW5jdGlvbiB1dHQodCxlKXt2YXIgbixvPWU/ZS5sZW5ndGg6MCxpPXQ/TWF0aC5taW4obyx0Lmxlbmd0aCk6MCxhPW5ldyBBcnJheShpKSxyPW5ldyBBcnJheShvKTtmb3Iobj0wO248aTsrK24pYVtuXT1DdHQodFtuXSxlW25dKTtmb3IoO248bzsrK24pcltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248aTsrK24pcltuXT1hW25dKHQpO3JldHVybiByfX1mdW5jdGlvbiBmdHQodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG8pe3JldHVybiBuLnNldFRpbWUodCooMS1vKStlKm8pLG59fWZ1bmN0aW9uIGd0dCh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX1mdW5jdGlvbiBodHQodCxlKXt2YXIgbixvPXt9LGk9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9vW25dPUN0dCh0W25dLGVbbl0pOmlbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG4gaW4gbylpW25dPW9bbl0odCk7cmV0dXJuIGl9fXZhciBidHQ9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLHl0dD1uZXcgUmVnRXhwKGJ0dC5zb3VyY2UsImciKTtmdW5jdGlvbiBfdHQodCxlKXt2YXIgbixvLGksYT1idHQubGFzdEluZGV4PXl0dC5sYXN0SW5kZXg9MCxyPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KG49YnR0LmV4ZWModCkpJiYobz15dHQuZXhlYyhlKSk7KShpPW8uaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW3JdP3Nbcl0rPWk6c1srK3JdPWkpLChuPW5bMF0pPT09KG89b1swXSk/c1tyXT9zW3JdKz1vOnNbKytyXT1vOihzWysrcl09bnVsbCxsLnB1c2goe2k6cix4Omd0dChuLG8pfSkpLGE9eXR0Lmxhc3RJbmRleDtyZXR1cm4gYTxlLmxlbmd0aCYmKGk9ZS5zbGljZShhKSxzW3JdP3Nbcl0rPWk6c1srK3JdPWkpLHMubGVuZ3RoPDI/bFswXT8oZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fSkobFswXS54KTooZnVuY3Rpb24gZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShlKTooZT1sLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIG4sbz0wO288ZTsrK28pc1sobj1sW29dKS5pXT1uLngodCk7cmV0dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBDdHQodCxlKXt2YXIgbixvPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1vP250dChlKTooIm51bWJlciI9PT1vP2d0dDoic3RyaW5nIj09PW8/KG49TzkoZSkpPyhlPW4sbHR0KTpfdHQ6ZSBpbnN0YW5jZW9mIE85P2x0dDplIGluc3RhbmNlb2YgRGF0ZT9mdHQ6KGZ1bmN0aW9uIGkodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/bXR0OkFycmF5LmlzQXJyYXkoZSk/dXR0OiJmdW5jdGlvbiIhPXR5cGVvZiBlLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nfHxpc05hTihlKT9odHQ6Z3R0KSh0LGUpfWZ1bmN0aW9uIE10dCh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQodCooMS1uKStlKm4pfX12YXIgdnR0LHh0dCxPdHQsUHR0LHd0dD0xODAvTWF0aC5QSSxrdHQ9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gU3R0KHQsZSxuLG8saSxhKXt2YXIgcixzLGw7cmV0dXJuKHI9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPXIsZS89ciksKGw9dCpuK2UqbykmJihuLT10Kmwsby09ZSpsKSwocz1NYXRoLnNxcnQobipuK28qbykpJiYobi89cyxvLz1zLGwvPXMpLHQqbzxlKm4mJih0PS10LGU9LWUsbD0tbCxyPS1yKSx7dHJhbnNsYXRlWDppLHRyYW5zbGF0ZVk6YSxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKnd0dCxza2V3WDpNYXRoLmF0YW4obCkqd3R0LHNjYWxlWDpyLHNjYWxlWTpzfX1mdW5jdGlvbiBEdHQodCxlLG4sbyl7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKGEscil7dmFyIHM9W10sbD1bXTtyZXR1cm4gYT10KGEpLHI9dChyKSwoZnVuY3Rpb24gYyh0LG8saSxhLHIscyl7aWYodCE9PWl8fG8hPT1hKXt2YXIgbD1yLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpndHQodCxpKX0se2k6bC0yLHg6Z3R0KG8sYSl9KX1lbHNlKGl8fGEpJiZyLnB1c2goInRyYW5zbGF0ZSgiK2krZSthK24pfSkoYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxyLnRyYW5zbGF0ZVgsci50cmFuc2xhdGVZLHMsbCksKGZ1bmN0aW9uIGQodCxlLG4sYSl7dCE9PWU/KHQtZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLGEucHVzaCh7aTpuLnB1c2goaShuKSsicm90YXRlKCIsbnVsbCxvKS0yLHg6Z3R0KHQsZSl9KSk6ZSYmbi5wdXNoKGkobikrInJvdGF0ZSgiK2Urbyl9KShhLnJvdGF0ZSxyLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBwKHQsZSxuLGEpe3QhPT1lP2EucHVzaCh7aTpuLnB1c2goaShuKSsic2tld1goIixudWxsLG8pLTIseDpndHQodCxlKX0pOmUmJm4ucHVzaChpKG4pKyJza2V3WCgiK2Urbyl9KShhLnNrZXdYLHIuc2tld1gscyxsKSwoZnVuY3Rpb24gbSh0LGUsbixvLGEscil7aWYodCE9PW58fGUhPT1vKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7ci5wdXNoKHtpOnMtNCx4Omd0dCh0LG4pfSx7aTpzLTIseDpndHQoZSxvKX0pfWVsc2UgMT09PW4mJjE9PT1vfHxhLnB1c2goaShhKSsic2NhbGUoIituKyIsIitvKyIpIil9KShhLnNjYWxlWCxhLnNjYWxlWSxyLnNjYWxlWCxyLnNjYWxlWSxzLGwpLGE9cj1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLG89bC5sZW5ndGg7KytuPG87KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIFJ0dD1EdHQoKGZ1bmN0aW9uIEV0dCh0KXtyZXR1cm4ibm9uZSI9PT10P2t0dDoodnR0fHwodnR0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHh0dD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsT3R0PWRvY3VtZW50LmRlZmF1bHRWaWV3KSx2dHQuc3R5bGUudHJhbnNmb3JtPXQsdD1PdHQuZ2V0Q29tcHV0ZWRTdHlsZSh4dHQuYXBwZW5kQ2hpbGQodnR0KSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSx4dHQucmVtb3ZlQ2hpbGQodnR0KSxTdHQoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLEF0dD1EdHQoKGZ1bmN0aW9uIFR0dCh0KXtyZXR1cm4gbnVsbD09dD9rdHQ6KFB0dHx8KFB0dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxQdHQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQpLCh0PVB0dC50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9TdHQoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6a3R0KX0pLCIsICIsIikiLCIpIik7dmFyIE50dD0oZnVuY3Rpb24genR0KHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvPXQoKGU9ejkoZSkpLmgsKG49ejkobikpLmgpLGk9cnR0KGUucyxuLnMpLGE9cnR0KGUubCxuLmwpLHI9cnR0KGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPW8odCksZS5zPWkodCksZS5sPWEodCksZS5vcGFjaXR5PXIodCksZSsiIn19fSkoaXR0KTt2YXIgSXR0LEh0dCxGdHQ9KGZ1bmN0aW9uIEx0dCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgbz10KChlPSQ5KGUpKS5oLChuPSQ5KG4pKS5oKSxpPXJ0dChlLmMsbi5jKSxhPXJ0dChlLmwsbi5sKSxyPXJ0dChlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1vKHQpLGUuYz1pKHQpLGUubD1hKHQpLGUub3BhY2l0eT1yKHQpLGUrIiJ9fX0pKGl0dCksQnR0PTAsVnR0PTAsVXR0PTAsanR0PTAsV3R0PTAsR3R0PTAsWXR0PSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLHF0dD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBadHQoKXtyZXR1cm4gV3R0fHwocXR0KFh0dCksV3R0PVl0dC5ub3coKStHdHQpfWZ1bmN0aW9uIFh0dCgpe1d0dD0wfWZ1bmN0aW9uIEt0dCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gSnR0KHQsZSxuKXt2YXIgbz1uZXcgS3R0O3JldHVybiBvLnJlc3RhcnQodCxlLG4pLG99ZnVuY3Rpb24gUXR0KCl7V3R0PShqdHQ9WXR0Lm5vdygpKStHdHQsQnR0PVZ0dD0wO3RyeXshKGZ1bmN0aW9uIHQoKXtadHQoKSwrK0J0dDtmb3IodmFyIHQsZT1JdHQ7ZTspKHQ9V3R0LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1CdHR9KSgpfWZpbmFsbHl7QnR0PTAsKGZ1bmN0aW9uIGUoKXt2YXIgdCxlLG49SXR0LG89MS8wO2Zvcig7bjspbi5fY2FsbD8obz5uLl90aW1lJiYobz1uLl90aW1lKSx0PW4sbj1uLl9uZXh0KTooZT1uLl9uZXh0LG4uX25leHQ9bnVsbCxuPXQ/dC5fbmV4dD1lOkl0dD1lKTtIdHQ9dCx0ZXQobyl9KSgpLFd0dD0wfX1mdW5jdGlvbiAkdHQoKXt2YXIgdD1ZdHQubm93KCksZT10LWp0dDtlPjFlMyYmKEd0dC09ZSxqdHQ9dCl9ZnVuY3Rpb24gdGV0KHQpe0J0dHx8KFZ0dCYmKFZ0dD1jbGVhclRpbWVvdXQoVnR0KSksdC1XdHQ+MjQ/KHQ8MS8wJiYoVnR0PXNldFRpbWVvdXQoUXR0LHQtWXR0Lm5vdygpLUd0dCkpLFV0dCYmKFV0dD1jbGVhckludGVydmFsKFV0dCkpKTooVXR0fHwoanR0PVl0dC5ub3coKSxVdHQ9c2V0SW50ZXJ2YWwoJHR0LDFlMykpLEJ0dD0xLHF0dChRdHQpKSl9ZnVuY3Rpb24gZWV0KHQsZSxuKXt2YXIgbz1uZXcgS3R0O3JldHVybiBvLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe28uc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLG99S3R0LnByb3RvdHlwZT1KdHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpLdHQscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP1p0dCgpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxIdHQ9PT10aGlzfHwoSHR0P0h0dC5fbmV4dD10aGlzOkl0dD10aGlzLEh0dD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHRldCgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCx0ZXQoKSl9fTt2YXIgbmV0PWw3KCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLG9ldD1bXTtmdW5jdGlvbiBpZXQodCxlLG4sbyxpLGEpe3ZhciByPXQuX190cmFuc2l0aW9uO2lmKHIpe2lmKG4gaW4gcilyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBvLGk9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gYSh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KHIsbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJnIodC1uLmRlbGF5KX1mdW5jdGlvbiByKGEpe3ZhciBjLGQscCxtO2lmKDEhPT1uLnN0YXRlKXJldHVybiBsKCk7Zm9yKGMgaW4gaSlpZigobT1pW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09bS5zdGF0ZSlyZXR1cm4gZWV0KHIpOzQ9PT1tLnN0YXRlPyhtLnN0YXRlPTYsbS50aW1lci5zdG9wKCksbS5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxtLmluZGV4LG0uZ3JvdXApLGRlbGV0ZSBpW2NdKTorYzxlJiYobS5zdGF0ZT02LG0udGltZXIuc3RvcCgpLG0ub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sbS5pbmRleCxtLmdyb3VwKSxkZWxldGUgaVtjXSl9aWYoZWV0KChmdW5jdGlvbigpezM9PT1uLnN0YXRlJiYobi5zdGF0ZT00LG4udGltZXIucmVzdGFydChzLG4uZGVsYXksbi50aW1lKSxzKGEpKX0pKSxuLnN0YXRlPTIsbi5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksMj09PW4uc3RhdGUpe2ZvcihuLnN0YXRlPTMsbz1uZXcgQXJyYXkocD1uLnR3ZWVuLmxlbmd0aCksYz0wLGQ9LTE7YzxwOysrYykobT1uLnR3ZWVuW2NdLnZhbHVlLmNhbGwodCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkpJiYob1srK2RdPW0pO28ubGVuZ3RoPWQrMX19ZnVuY3Rpb24gcyhlKXtmb3IodmFyIGk9ZTxuLmR1cmF0aW9uP24uZWFzZS5jYWxsKG51bGwsZS9uLmR1cmF0aW9uKToobi50aW1lci5yZXN0YXJ0KGwpLG4uc3RhdGU9NSwxKSxhPS0xLHI9by5sZW5ndGg7KythPHI7KW9bYV0uY2FsbCh0LGkpOzU9PT1uLnN0YXRlJiYobi5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGwoKSl9ZnVuY3Rpb24gbCgpe2Zvcih2YXIgbyBpbiBuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksZGVsZXRlIGlbZV0saSlyZXR1cm47ZGVsZXRlIHQuX190cmFuc2l0aW9ufWlbZV09bixuLnRpbWVyPUp0dChhLDAsbi50aW1lKX0pKHQsbix7bmFtZTplLGluZGV4Om8sZ3JvdXA6aSxvbjpuZXQsdHdlZW46b2V0LHRpbWU6YS50aW1lLGRlbGF5OmEuZGVsYXksZHVyYXRpb246YS5kdXJhdGlvbixlYXNlOmEuZWFzZSx0aW1lcjpudWxsLHN0YXRlOjB9KX1mdW5jdGlvbiBhZXQodCxlKXt2YXIgbj1zZXQodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiByZXQodCxlKXt2YXIgbj1zZXQodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gc2V0KHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gY2V0KHQsZSl7dmFyIG4sbyxpLGE9dC5fX3RyYW5zaXRpb24scj0hMDtpZihhKXtmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLGEpKG49YVtpXSkubmFtZT09PWU/KG89bi5zdGF0ZT4yJiZuLnN0YXRlPDUsbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLG4ub24uY2FsbChvPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBhW2ldKTpyPSExO3ImJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gZGV0KHQsZSl7dmFyIG4sbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1yZXQodGhpcyx0KSxhPWkudHdlZW47aWYoYSE9PW4pZm9yKHZhciByPTAscz0obz1uPWEpLmxlbmd0aDtyPHM7KytyKWlmKG9bcl0ubmFtZT09PWUpeyhvPW8uc2xpY2UoKSkuc3BsaWNlKHIsMSk7YnJlYWt9aS50d2Vlbj1vfX1mdW5jdGlvbiBwZXQodCxlLG4pe3ZhciBvLGk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXJldCh0aGlzLHQpLHI9YS50d2VlbjtpZihyIT09byl7aT0obz1yKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGw9MCxjPWkubGVuZ3RoO2w8YzsrK2wpaWYoaVtsXS5uYW1lPT09ZSl7aVtsXT1zO2JyZWFrfWw9PT1jJiZpLnB1c2gocyl9YS50d2Vlbj1pfX1mdW5jdGlvbiBtZXQodCxlLG4pe3ZhciBvPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9cmV0KHRoaXMsbyk7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbZV09bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSksZnVuY3Rpb24odCl7cmV0dXJuIHNldCh0LG8pLnZhbHVlW2VdfX1mdW5jdGlvbiB1ZXQodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP2d0dDplIGluc3RhbmNlb2YgTzk/bHR0OihuPU85KGUpKT8oZT1uLGx0dCk6X3R0KSh0LGUpfWZ1bmN0aW9uIGZldCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gZ2V0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gaGV0KHQsZSxuKXt2YXIgbyxpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gcj09PWE/bnVsbDpyPT09bz9pOmk9ZShvPXIsbil9fWZ1bmN0aW9uIGJldCh0LGUsbil7dmFyIG8saSxhPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiByPT09YT9udWxsOnI9PT1vP2k6aT1lKG89cixuKX19ZnVuY3Rpb24geWV0KHQsZSxuKXt2YXIgbyxpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4ocj10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1sKyIiKT9udWxsOnI9PT1vJiZzPT09aT9hOihpPXMsYT1lKG89cixsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIF9ldCh0LGUsbil7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKHI9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShzPWwrIiIpP251bGw6cj09PW8mJnM9PT1pP2E6KGk9cyxhPWUobz1yLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIENldCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gTWV0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gdmV0KHQsZSl7dmFyIG4sbztmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1vJiYobj0obz1pKSYmTWV0KHQsaSkpLG59cmV0dXJuIGkuX3ZhbHVlPWUsaX1mdW5jdGlvbiB4ZXQodCxlKXt2YXIgbixvO2Z1bmN0aW9uIGkoKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PW8mJihuPShvPWkpJiZDZXQodCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIE9ldCh0LGUpe3JldHVybiBmdW5jdGlvbigpe2FldCh0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gUGV0KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXthZXQodGhpcyx0KS5kZWxheT1lfX1mdW5jdGlvbiB3ZXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXQodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGtldCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7cmV0KHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gRGV0KHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3JldCh0aGlzLHQpLmVhc2U9ZX19ZnVuY3Rpb24gUmV0KHQsZSxuKXt2YXIgbyxpLGE9KGZ1bmN0aW9uIHIodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfSkoZSk/YWV0OnJldDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1hKHRoaXMsdCkscz1yLm9uO3MhPT1vJiYoaT0obz1zKS5jb3B5KCkpLm9uKGUsbiksci5vbj1pfX12YXIgRWV0PU04LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBBZXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gVGV0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24obyl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLG8pLG4pfX1mdW5jdGlvbiBOZXQodCxlLG4pe3ZhciBvLGk7ZnVuY3Rpb24gYSgpe3ZhciBhPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhIT09aSYmKG89KGk9YSkmJlRldCh0LGEsbikpLG99cmV0dXJuIGEuX3ZhbHVlPWUsYX1mdW5jdGlvbiB6ZXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIElldCh0KXt2YXIgZSxuO2Z1bmN0aW9uIG8oKXt2YXIgbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PW4mJihlPShuPW8pJiZ6ZXQobykpLGV9cmV0dXJuIG8uX3ZhbHVlPXQsb312YXIgSGV0PTA7ZnVuY3Rpb24gRmV0KHQsZSxuLG8pe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9b31mdW5jdGlvbiBMZXQoKXtyZXR1cm4rK0hldH12YXIgQmV0PU04LnByb3RvdHlwZTtGZXQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGZXQsc2VsZWN0OmZ1bmN0aW9uIFZldCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUM3KHQpKTtmb3IodmFyIG89dGhpcy5fZ3JvdXBzLGk9by5sZW5ndGgsYT1uZXcgQXJyYXkoaSkscj0wO3I8aTsrK3IpZm9yKHZhciBzLGwsYz1vW3JdLGQ9Yy5sZW5ndGgscD1hW3JdPW5ldyBBcnJheShkKSxtPTA7bTxkOysrbSkocz1jW21dKSYmKGw9dC5jYWxsKHMscy5fX2RhdGFfXyxtLGMpKSYmKCJfX2RhdGFfXyJpbiBzJiYobC5fX2RhdGFfXz1zLl9fZGF0YV9fKSxwW21dPWwsaWV0KHBbbV0sZSxuLG0scCxzZXQocyxuKSkpO3JldHVybiBuZXcgRmV0KGEsdGhpcy5fcGFyZW50cyxlLG4pfSxzZWxlY3RBbGw6ZnVuY3Rpb24gVWV0KHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9djcodCkpO2Zvcih2YXIgbz10aGlzLl9ncm91cHMsaT1vLmxlbmd0aCxhPVtdLHI9W10scz0wO3M8aTsrK3MpZm9yKHZhciBsLGM9b1tzXSxkPWMubGVuZ3RoLHA9MDtwPGQ7KytwKWlmKGw9Y1twXSl7Zm9yKHZhciBtLHU9dC5jYWxsKGwsbC5fX2RhdGFfXyxwLGMpLGY9c2V0KGwsbiksZz0wLGg9dS5sZW5ndGg7ZzxoOysrZykobT11W2ddKSYmaWV0KG0sZSxuLGcsdSxmKTthLnB1c2godSksci5wdXNoKGwpfXJldHVybiBuZXcgRmV0KGEscixlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24gamV0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD14Nyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLG89bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxyPWVbaV0scz1yLmxlbmd0aCxsPW9baV09W10sYz0wO2M8czsrK2MpKGE9cltjXSkmJnQuY2FsbChhLGEuX19kYXRhX18sYyxyKSYmbC5wdXNoKGEpO3JldHVybiBuZXcgRmV0KG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gV2V0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsbz1lLmxlbmd0aCxpPU1hdGgubWluKG8sbi5sZW5ndGgpLGE9bmV3IEFycmF5KG8pLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsPWVbcl0sYz1uW3JdLGQ9bC5sZW5ndGgscD1hW3JdPW5ldyBBcnJheShkKSxtPTA7bTxkOysrbSkocz1sW21dfHxjW21dKSYmKHBbbV09cyk7Zm9yKDtyPG87KytyKWFbcl09ZVtyXTtyZXR1cm4gbmV3IEZldChhLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBHZXQoKXtyZXR1cm4gbmV3IEVldCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gWWV0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUxldCgpLG89dGhpcy5fZ3JvdXBzLGk9by5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciByLHM9b1thXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKHI9c1tjXSl7dmFyIGQ9c2V0KHIsZSk7aWV0KHIsdCxuLGMscyx7dGltZTpkLnRpbWUrZC5kZWxheStkLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246ZC5kdXJhdGlvbixlYXNlOmQuZWFzZX0pfXJldHVybiBuZXcgRmV0KG8sdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOkJldC5jYWxsLG5vZGVzOkJldC5ub2Rlcyxub2RlOkJldC5ub2RlLHNpemU6QmV0LnNpemUsZW1wdHk6QmV0LmVtcHR5LGVhY2g6QmV0LmVhY2gsb246ZnVuY3Rpb24gcWV0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9zZXQodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKFJldChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIFpldCh0LGUpe3ZhciBuPWc3KHQpLG89InRyYW5zZm9ybSI9PT1uP0F0dDp1ZXQ7cmV0dXJuIHRoaXMuYXR0clR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG4ubG9jYWw/X2V0OnlldCkobixvLG1ldCh0aGlzLCJhdHRyLiIrdCxlKSk6bnVsbD09ZT8obi5sb2NhbD9nZXQ6ZmV0KShuKToobi5sb2NhbD9iZXQ6aGV0KShuLG8sZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24gWGV0KHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgbz1nNyh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChvLmxvY2FsP3ZldDp4ZXQpKG8sZSkpfSxzdHlsZTpmdW5jdGlvbiBLZXQodCxlLG4pe3ZhciBvPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP1J0dDp1ZXQ7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGkodCxlKXt2YXIgbixvLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9TDcodGhpcyx0KSxyPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLEw3KHRoaXMsdCkpO3JldHVybiBhPT09cj9udWxsOmE9PT1uJiZyPT09bz9pOmk9ZShuPWEsbz1yKX19KSh0LG8pKS5vbigiZW5kLnN0eWxlLiIrdCxBZXQodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiByKHQsZSxuKXt2YXIgbyxpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9TDcodGhpcyx0KSxzPW4odGhpcyksbD1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsPXM9TDcodGhpcyx0KSkscj09PWw/bnVsbDpyPT09byYmbD09PWk/YTooaT1sLGE9ZShvPXIscykpfX0pKHQsbyxtZXQodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaCgoZnVuY3Rpb24gYSh0LGUpe3ZhciBuLG8saSxhLHI9InN0eWxlLiIrZSxzPSJlbmQuIityO3JldHVybiBmdW5jdGlvbigpe3ZhciBsPXJldCh0aGlzLHQpLGM9bC5vbixkPW51bGw9PWwudmFsdWVbcl0/YXx8KGE9QWV0KGUpKTp2b2lkIDA7Yz09PW4mJmk9PT1kfHwobz0obj1jKS5jb3B5KCkpLm9uKHMsaT1kKSxsLm9uPW99fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgbyxpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1MNyh0aGlzLHQpO3JldHVybiByPT09YT9udWxsOnI9PT1vP2k6aT1lKG89cixuKX19KSh0LG8sZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24gSmV0KHQsZSxuKXt2YXIgbz0ic3R5bGUuIisodCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obz10aGlzLnR3ZWVuKG8pKSYmby5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihvLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihvLE5ldCh0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gUWV0KHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKG1ldCh0aGlzLCJ0ZXh0Iix0KSk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0pKG51bGw9PXQ/IiI6dCsiIikpfSx0ZXh0VHdlZW46ZnVuY3Rpb24gJGV0KHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxJZXQodCkpfSxyZW1vdmU6ZnVuY3Rpb24gdG50KCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIG4gaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK24hPT1lKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX0pKHRoaXMuX2lkKSl9LHR3ZWVuOmZ1bmN0aW9uIGVudCh0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBvLGk9c2V0KHRoaXMubm9kZSgpLG4pLnR3ZWVuLGE9MCxyPWkubGVuZ3RoO2E8cjsrK2EpaWYoKG89aVthXSkubmFtZT09PXQpcmV0dXJuIG8udmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9kZXQ6cGV0KShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiBubnQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9PZXQ6UGV0KShlLHQpKTpzZXQodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIG9udCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3dldDprZXQpKGUsdCkpOnNldCh0aGlzLm5vZGUoKSxlKS5kdXJhdGlvbn0sZWFzZTpmdW5jdGlvbiBpbnQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKERldChlLHQpKTpzZXQodGhpcy5ub2RlKCksZSkuZWFzZX0sZW5kOmZ1bmN0aW9uIGFudCgpe3ZhciB0LGUsbj10aGlzLG89bi5faWQsaT1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEscil7dmFyIHM9e3ZhbHVlOnJ9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1pJiZhKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49cmV0KHRoaXMsbyksaT1uLm9uO2khPT10JiYoKGU9KHQ9aSkuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2gobCkpLG4ub249ZX0pKX0pKX19O3ZhciBybnQ9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOmZ1bmN0aW9uIHNudCh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn19O2Z1bmN0aW9uIGxudCh0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBybnQudGltZT1adHQoKSxybnQ7cmV0dXJuIG59ZnVuY3Rpb24gY250KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBkbnQodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zZWxlY3Rpb249bn1mdW5jdGlvbiBwbnQoKXtkOC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBtbnQoKXtkOC5wcmV2ZW50RGVmYXVsdCgpLGQ4LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfU04LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24gdW50KHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y2V0KHRoaXMsdCl9KSl9LE04LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIGZudCh0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBGZXQ/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1MZXQoKSwobj1ybnQpLnRpbWU9WnR0KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgcixzPW9bYV0sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykocj1zW2NdKSYmaWV0KHIsdCxlLGMscyxufHxsbnQocixlKSk7cmV0dXJuIG5ldyBGZXQobyx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBnbnQ9e25hbWU6ImRyYWcifSxobnQ9e25hbWU6InNwYWNlIn0sYm50PXtuYW1lOiJoYW5kbGUifSx5bnQ9e25hbWU6ImNlbnRlciJ9O2Z1bmN0aW9uIF9udCh0KXtyZXR1cm5bK3RbMF0sK3RbMV1dfWZ1bmN0aW9uIENudCh0KXtyZXR1cm5bX250KHRbMF0pLF9udCh0WzFdKV19ZnVuY3Rpb24gTW50KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUsbyl7YXJndW1lbnRzLmxlbmd0aDwzJiYobz1lLGU9eDgoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLGE9MCxyPWU/ZS5sZW5ndGg6MDthPHI7KythKWlmKChpPWVbYV0pLmlkZW50aWZpZXI9PT1vKXJldHVybiBPOCh0LGkpO3JldHVybiBudWxsfSkoZSxkOC50b3VjaGVzLHQpfX12YXIgdm50PXtuYW1lOiJ4IixoYW5kbGVzOlsidyIsImUiXS5tYXAoRG50KSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P251bGw6W1srdFswXSxlWzBdWzFdXSxbK3RbMV0sZVsxXVsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzBdLHRbMV1bMF1dfX0seG50PXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoRG50KSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P251bGw6W1tlWzBdWzBdLCt0WzBdXSxbZVsxXVswXSwrdFsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzFdLHRbMV1bMV1dfX0sT250PXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxQbnQ9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LHdudD17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sa250PXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LFNudD17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiBEbnQodCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gUm50KCl7cmV0dXJuIWQ4LmN0cmxLZXkmJiFkOC5idXR0b259ZnVuY3Rpb24gRW50KCl7dmFyIHQ9dGhpcy5vd25lclNWR0VsZW1lbnR8fHRoaXM7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJ2aWV3Qm94Iik/W1sodD10LnZpZXdCb3guYmFzZVZhbCkueCx0LnldLFt0LngrdC53aWR0aCx0LnkrdC5oZWlnaHRdXTpbWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gQW50KCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIFRudCh0KXtmb3IoOyF0Ll9fYnJ1c2g7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gdC5fX2JydXNofWZ1bmN0aW9uIE5udCh0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfWZ1bmN0aW9uIHpudCgpe3JldHVybihmdW5jdGlvbiB0KGUpe3ZhciBuLG89RW50LGk9Um50LGE9QW50LHI9ITAscz1sNygic3RhcnQiLCJicnVzaCIsImVuZCIpLGw9NjtmdW5jdGlvbiBjKHQpe3ZhciBuPXQucHJvcGVydHkoIl9fYnJ1c2giLGgpLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFtEbnQoIm92ZXJsYXkiKV0pO24uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsT250Lm92ZXJsYXkpLm1lcmdlKG4pLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9VG50KHRoaXMpLmV4dGVudDt2OCh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksdC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtEbnQoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsT250LnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciBvPXQuc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YShlLmhhbmRsZXMsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGV9KSk7by5leGl0KCkucmVtb3ZlKCksby5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24odCl7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrdC50eXBlfSkpLmF0dHIoImN1cnNvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBPbnRbdC50eXBlXX0pKSx0LmVhY2goZCkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHUpLmZpbHRlcihhKS5vbigidG91Y2hzdGFydC5icnVzaCIsdSkub24oInRvdWNobW92ZS5icnVzaCIsZikub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixnKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gZCgpe3ZhciB0PXY4KHRoaXMpLGU9VG50KHRoaXMpLnNlbGVjdGlvbjtlPyh0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixlWzBdWzBdKS5hdHRyKCJ5IixlWzBdWzFdKS5hdHRyKCJ3aWR0aCIsZVsxXVswXS1lWzBdWzBdKS5hdHRyKCJoZWlnaHQiLGVbMV1bMV0tZVswXVsxXSksdC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZVt0LnR5cGUubGVuZ3RoLTFdP2VbMV1bMF0tbC8yOmVbMF1bMF0tbC8yfSkpLmF0dHIoInkiLChmdW5jdGlvbih0KXtyZXR1cm4icyI9PT10LnR5cGVbMF0/ZVsxXVsxXS1sLzI6ZVswXVsxXS1sLzJ9KSkuYXR0cigid2lkdGgiLChmdW5jdGlvbih0KXtyZXR1cm4ibiI9PT10LnR5cGV8fCJzIj09PXQudHlwZT9lWzFdWzBdLWVbMF1bMF0rbDpsfSkpLmF0dHIoImhlaWdodCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZXx8InciPT09dC50eXBlP2VbMV1bMV0tZVswXVsxXStsOmx9KSkpOnQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uLC5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKS5hdHRyKCJ4IixudWxsKS5hdHRyKCJ5IixudWxsKS5hdHRyKCJ3aWR0aCIsbnVsbCkuYXR0cigiaGVpZ2h0IixudWxsKX1mdW5jdGlvbiBwKHQsZSxuKXt2YXIgbz10Ll9fYnJ1c2guZW1pdHRlcjtyZXR1cm4hb3x8biYmby5jbGVhbj9uZXcgbSh0LGUsbik6b31mdW5jdGlvbiBtKHQsZSxuKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLnN0YXRlPXQuX19icnVzaCx0aGlzLmFjdGl2ZT0wLHRoaXMuY2xlYW49bn1mdW5jdGlvbiB1KCl7aWYoKCFufHxkOC50b3VjaGVzKSYmaS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LG8sYSxzLGwsYyxtLHUsZixnLGgsYj10aGlzLHk9ZDgudGFyZ2V0Ll9fZGF0YV9fLnR5cGUsXz0ic2VsZWN0aW9uIj09PShyJiZkOC5tZXRhS2V5P3k9Im92ZXJsYXkiOnkpP2dudDpyJiZkOC5hbHRLZXk/eW50OmJudCxDPWU9PT14bnQ/bnVsbDprbnRbeV0sTT1lPT09dm50P251bGw6U250W3ldLHY9VG50KGIpLHg9di5leHRlbnQsTz12LnNlbGVjdGlvbixQPXhbMF1bMF0sdz14WzBdWzFdLGs9eFsxXVswXSxTPXhbMV1bMV0sRD0wLFI9MCxFPUMmJk0mJnImJmQ4LnNoaWZ0S2V5LEE9ZDgudG91Y2hlcz9NbnQoZDguY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcik6UDgsVD1BKGIpLE49VCx6PXAoYixhcmd1bWVudHMsITApLmJlZm9yZXN0YXJ0KCk7Im92ZXJsYXkiPT09eT8oTyYmKGY9ITApLHYuc2VsZWN0aW9uPU89W1t0PWU9PT14bnQ/UDpUWzBdLGE9ZT09PXZudD93OlRbMV1dLFtsPWU9PT14bnQ/azp0LG09ZT09PXZudD9TOmFdXSk6KHQ9T1swXVswXSxhPU9bMF1bMV0sbD1PWzFdWzBdLG09T1sxXVsxXSksbz10LHM9YSxjPWwsdT1tO3ZhciBJPXY4KGIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLEg9SS5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixPbnRbeV0pO2lmKGQ4LnRvdWNoZXMpei5tb3ZlZD1MLHouZW5kZWQ9VjtlbHNle3ZhciBGPXY4KGQ4LnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEwsITApLm9uKCJtb3VzZXVwLmJydXNoIixWLCEwKTtyJiZGLm9uKCJrZXlkb3duLmJydXNoIixVLCEwKS5vbigia2V5dXAuYnJ1c2giLGosITApLGs4KGQ4LnZpZXcpfXBudCgpLGNldChiKSxkLmNhbGwoYiksei5zdGFydCgpfWZ1bmN0aW9uIEwoKXt2YXIgdD1BKGIpOyFFfHxnfHxofHwoTWF0aC5hYnModFswXS1OWzBdKT5NYXRoLmFicyh0WzFdLU5bMV0pP2g9ITA6Zz0hMCksTj10LGY9ITAsbW50KCksQigpfWZ1bmN0aW9uIEIoKXt2YXIgZTtzd2l0Y2goRD1OWzBdLVRbMF0sUj1OWzFdLVRbMV0sXyl7Y2FzZSBobnQ6Y2FzZSBnbnQ6QyYmKEQ9TWF0aC5tYXgoUC10LE1hdGgubWluKGstbCxEKSksbz10K0QsYz1sK0QpLE0mJihSPU1hdGgubWF4KHctYSxNYXRoLm1pbihTLW0sUikpLHM9YStSLHU9bStSKTticmVhaztjYXNlIGJudDpDPDA/KEQ9TWF0aC5tYXgoUC10LE1hdGgubWluKGstdCxEKSksbz10K0QsYz1sKTpDPjAmJihEPU1hdGgubWF4KFAtbCxNYXRoLm1pbihrLWwsRCkpLG89dCxjPWwrRCksTTwwPyhSPU1hdGgubWF4KHctYSxNYXRoLm1pbihTLWEsUikpLHM9YStSLHU9bSk6TT4wJiYoUj1NYXRoLm1heCh3LW0sTWF0aC5taW4oUy1tLFIpKSxzPWEsdT1tK1IpO2JyZWFrO2Nhc2UgeW50OkMmJihvPU1hdGgubWF4KFAsTWF0aC5taW4oayx0LUQqQykpLGM9TWF0aC5tYXgoUCxNYXRoLm1pbihrLGwrRCpDKSkpLE0mJihzPU1hdGgubWF4KHcsTWF0aC5taW4oUyxhLVIqTSkpLHU9TWF0aC5tYXgodyxNYXRoLm1pbihTLG0rUipNKSkpfWM8byYmKEMqPS0xLGU9dCx0PWwsbD1lLGU9byxvPWMsYz1lLHkgaW4gUG50JiZILmF0dHIoImN1cnNvciIsT250W3k9UG50W3ldXSkpLHU8cyYmKE0qPS0xLGU9YSxhPW0sbT1lLGU9cyxzPXUsdT1lLHkgaW4gd250JiZILmF0dHIoImN1cnNvciIsT250W3k9d250W3ldXSkpLHYuc2VsZWN0aW9uJiYoTz12LnNlbGVjdGlvbiksZyYmKG89T1swXVswXSxjPU9bMV1bMF0pLGgmJihzPU9bMF1bMV0sdT1PWzFdWzFdKSxPWzBdWzBdPT09byYmT1swXVsxXT09PXMmJk9bMV1bMF09PT1jJiZPWzFdWzFdPT09dXx8KHYuc2VsZWN0aW9uPVtbbyxzXSxbYyx1XV0sZC5jYWxsKGIpLHouYnJ1c2goKSl9ZnVuY3Rpb24gVigpe2lmKHBudCgpLGQ4LnRvdWNoZXMpe2lmKGQ4LnRvdWNoZXMubGVuZ3RoKXJldHVybjtuJiZjbGVhclRpbWVvdXQobiksbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe249bnVsbH0pLDUwMCl9ZWxzZSBTOChkOC52aWV3LGYpLEYub24oImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2giLG51bGwpO0kuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKSxILmF0dHIoImN1cnNvciIsT250Lm92ZXJsYXkpLHYuc2VsZWN0aW9uJiYoTz12LnNlbGVjdGlvbiksTm50KE8pJiYodi5zZWxlY3Rpb249bnVsbCxkLmNhbGwoYikpLHouZW5kKCl9ZnVuY3Rpb24gVSgpe3N3aXRjaChkOC5rZXlDb2RlKXtjYXNlIDE2OkU9QyYmTTticmVhaztjYXNlIDE4Ol89PT1ibnQmJihDJiYobD1jLUQqQyx0PW8rRCpDKSxNJiYobT11LVIqTSxhPXMrUipNKSxfPXludCxCKCkpO2JyZWFrO2Nhc2UgMzI6XyE9PWJudCYmXyE9PXludHx8KEM8MD9sPWMtRDpDPjAmJih0PW8tRCksTTwwP209dS1SOk0+MCYmKGE9cy1SKSxfPWhudCxILmF0dHIoImN1cnNvciIsT250LnNlbGVjdGlvbiksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1tbnQoKX1mdW5jdGlvbiBqKCl7c3dpdGNoKGQ4LmtleUNvZGUpe2Nhc2UgMTY6RSYmKGc9aD1FPSExLEIoKSk7YnJlYWs7Y2FzZSAxODpfPT09eW50JiYoQzwwP2w9YzpDPjAmJih0PW8pLE08MD9tPXU6TT4wJiYoYT1zKSxfPWJudCxCKCkpO2JyZWFrO2Nhc2UgMzI6Xz09PWhudCYmKGQ4LmFsdEtleT8oQyYmKGw9Yy1EKkMsdD1vK0QqQyksTSYmKG09dS1SKk0sYT1zK1IqTSksXz15bnQpOihDPDA/bD1jOkM+MCYmKHQ9byksTTwwP209dTpNPjAmJihhPXMpLF89Ym50KSxILmF0dHIoImN1cnNvciIsT250W3ldKSxCKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufW1udCgpfX1mdW5jdGlvbiBmKCl7cCh0aGlzLGFyZ3VtZW50cykubW92ZWQoKX1mdW5jdGlvbiBnKCl7cCh0aGlzLGFyZ3VtZW50cykuZW5kZWQoKX1mdW5jdGlvbiBoKCl7dmFyIHQ9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiB0LmV4dGVudD1DbnQoby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHQuZGltPWUsdH1yZXR1cm4gYy5tb3ZlPWZ1bmN0aW9uKHQsbil7dC5zZWxlY3Rpb24/dC5vbigic3RhcnQuYnJ1c2giLChmdW5jdGlvbigpe3AodGhpcyxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCkuc3RhcnQoKX0pKS5vbigiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaCIsKGZ1bmN0aW9uKCl7cCh0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oImJydXNoIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLG89dC5fX2JydXNoLGk9cCh0LGFyZ3VtZW50cyksYT1vLnNlbGVjdGlvbixyPWUuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bixvLmV4dGVudCkscz1DdHQoYSxyKTtmdW5jdGlvbiBsKGUpe28uc2VsZWN0aW9uPTE9PT1lJiZudWxsPT09cj9udWxsOnMoZSksZC5jYWxsKHQpLGkuYnJ1c2goKX1yZXR1cm4gbnVsbCE9PWEmJm51bGwhPT1yP2w6bCgxKX0pKTp0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPWFyZ3VtZW50cyxpPXQuX19icnVzaCxhPWUuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0LG8pOm4saS5leHRlbnQpLHI9cCh0LG8pLmJlZm9yZXN0YXJ0KCk7Y2V0KHQpLGkuc2VsZWN0aW9uPW51bGw9PT1hP251bGw6YSxkLmNhbGwodCksci5zdGFydCgpLmJydXNoKCkuZW5kKCl9KSl9LGMuY2xlYXI9ZnVuY3Rpb24odCl7Yy5tb3ZlKHQsbnVsbCl9LG0ucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpOnRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24odCl7IShmdW5jdGlvbiBuKHQsZSxvLGkpe3ZhciBhPWQ4O3Quc291cmNlRXZlbnQ9ZDgsZDg9dDt0cnl7cmV0dXJuIGUuYXBwbHkobyxpKX1maW5hbGx5e2Q4PWF9fSkobmV3IGRudChjLHQsZS5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxzLmFwcGx5LHMsW3QsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sYy5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjbnQoQ250KHQpKSxjKTpvfSxjLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmNudCghIXQpLGMpOml9LGMudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Y250KCEhdCksYyk6YX0sYy5oYW5kbGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSt0LGMpOmx9LGMua2V5TW9kaWZpZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEhdCxjKTpyfSxjLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9cy5vbi5hcHBseShzLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1zP2M6dH0sY30pKHhudCl9dmFyIEludD1NYXRoLlBJLEhudD0yKkludCxGbnQ9MWUtNixMbnQ9SG50LUZudDtmdW5jdGlvbiBCbnQoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBWbnQoKXtyZXR1cm4gbmV3IEJudH1CbnQucHJvdG90eXBlPVZudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkJudCxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4sbyl7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0rbyl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyArbysiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPSthKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4sbyxpKXt2YXIgYT10aGlzLl94MSxyPXRoaXMuX3kxLHM9KG49K24pLSh0PSt0KSxsPShvPStvKS0oZT0rZSksYz1hLXQsZD1yLWUscD1jKmMrZCpkO2lmKChpPStpKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKHA+Rm50KWlmKE1hdGguYWJzKGQqcy1sKmMpPkZudCYmaSl7dmFyIG09bi1hLHU9by1yLGY9cypzK2wqbCxnPW0qbSt1KnUsaD1NYXRoLnNxcnQoZiksYj1NYXRoLnNxcnQocCkseT1pKk1hdGgudGFuKChJbnQtTWF0aC5hY29zKChmK3AtZykvKDIqaCpiKSkpLzIpLF89eS9iLEM9eS9oO01hdGguYWJzKF8tMSk+Rm50JiYodGhpcy5fKz0iTCIrKHQrXypjKSsiLCIrKGUrXypkKSksdGhpcy5fKz0iQSIraSsiLCIraSsiLDAsMCwiKyArKGQqbT5jKnUpKyIsIisodGhpcy5feDE9dCtDKnMpKyIsIisodGhpcy5feTE9ZStDKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGUsbixvLGksYSl7dD0rdCxlPStlLGE9ISFhO3ZhciByPShuPStuKSpNYXRoLmNvcyhvKSxzPW4qTWF0aC5zaW4obyksbD10K3IsYz1lK3MsZD0xXmEscD1hP28taTppLW87aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5GbnR8fE1hdGguYWJzKHRoaXMuX3kxLWMpPkZudCkmJih0aGlzLl8rPSJMIitsKyIsIitjKSxuJiYocDwwJiYocD1wJUhudCtIbnQpLHA+TG50P3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIitkKyIsIisodC1yKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIitkKyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpwPkZudCYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsocD49SW50KSsiLCIrZCsiLCIrKHRoaXMuX3gxPXQrbipNYXRoLmNvcyhpKSkrIiwiKyh0aGlzLl95MT1lK24qTWF0aC5zaW4oaSkpKSl9LHJlY3Q6ZnVuY3Rpb24odCxlLG4sbyl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKSsiaCIrICtuKyJ2IisgK28rImgiKy1uKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIFVudD0iJCI7ZnVuY3Rpb24gam50KCl7fWZ1bmN0aW9uIFdudCh0LGUpe3ZhciBuPW5ldyBqbnQ7aWYodCBpbnN0YW5jZW9mIGpudCl0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBvLGk9LTEsYT10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytpPGE7KW4uc2V0KGksdFtpXSk7ZWxzZSBmb3IoOysraTxhOyluLnNldChlKG89dFtpXSxpLHQpLG8pfWVsc2UgaWYodClmb3IodmFyIHIgaW4gdCluLnNldChyLHRbcl0pO3JldHVybiBufWZ1bmN0aW9uIEdudCgpe31qbnQucHJvdG90eXBlPVdudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmpudCxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIFVudCt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tVbnQrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzW1VudCt0XT1lLHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT1VbnQrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09VW50JiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1VbnQmJnQucHVzaChlLnNsaWNlKDEpKTtyZXR1cm4gdH0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PVVudCYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PVVudCYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1VbnQmJisrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcylpZih0WzBdPT09VW50KXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1VbnQmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIFludD1XbnQucHJvdG90eXBlO2Z1bmN0aW9uIHFudCh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixvPXQuc2xpY2UoMCxuKTtyZXR1cm5bby5sZW5ndGg+MT9vWzBdK28uc2xpY2UoMik6bywrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBabnQodCl7cmV0dXJuKHQ9cW50KE1hdGguYWJzKHQpKSk/dFsxXTpOYU59R250LnByb3RvdHlwZT17Y29uc3RydWN0b3I6R250LGhhczpZbnQuaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tVbnQrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6WW50LnJlbW92ZSxjbGVhcjpZbnQuY2xlYXIsdmFsdWVzOlludC5rZXlzLHNpemU6WW50LnNpemUsZW1wdHk6WW50LmVtcHR5LGVhY2g6WW50LmVhY2h9O3ZhciBYbnQsS250PS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIEpudCh0KXtpZighKGU9S250LmV4ZWModCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGU7cmV0dXJuIG5ldyBRbnQoe2ZpbGw6ZVsxXSxhbGlnbjplWzJdLHNpZ246ZVszXSxzeW1ib2w6ZVs0XSx6ZXJvOmVbNV0sd2lkdGg6ZVs2XSxjb21tYTplWzddLHByZWNpc2lvbjplWzhdJiZlWzhdLnNsaWNlKDEpLHRyaW06ZVs5XSx0eXBlOmVbMTBdfSl9ZnVuY3Rpb24gUW50KHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uICRudCh0LGUpe3ZhciBuPXFudCh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciBvPW5bMF0saT1uWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStvOm8ubGVuZ3RoPmkrMT9vLnNsaWNlKDAsaSsxKSsiLiIrby5zbGljZShpKzEpOm8rbmV3IEFycmF5KGktby5sZW5ndGgrMikuam9pbigiMCIpfUpudC5wcm90b3R5cGU9UW50LnByb3RvdHlwZSxRbnQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07dmFyIHRvdD17IiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uIGVvdCh0KXtyZXR1cm4gTWF0aC5hYnModD1NYXRoLnJvdW5kKHQpKT49MWUyMT90LnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6dC50b1N0cmluZygxMCl9LGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0V4cG9uZW50aWFsKGUpfSxmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9GaXhlZChlKX0sZzpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvUHJlY2lzaW9uKGUpfSxvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuICRudCgxMDAqdCxlKX0scjokbnQsczpmdW5jdGlvbiBub3QodCxlKXt2YXIgbj1xbnQodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgbz1uWzBdLGk9blsxXSxhPWktKFhudD0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihpLzMpKSkpKzEscj1vLmxlbmd0aDtyZXR1cm4gYT09PXI/bzphPnI/bytuZXcgQXJyYXkoYS1yKzEpLmpvaW4oIjAiKTphPjA/by5zbGljZSgwLGEpKyIuIitvLnNsaWNlKGEpOiIwLiIrbmV3IEFycmF5KDEtYSkuam9pbigiMCIpK3FudCh0LE1hdGgubWF4KDAsZSthLTEpKVswXX0sWDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNil9fTtmdW5jdGlvbiBvb3QodCl7cmV0dXJuIHR9dmFyIGlvdCxhb3Qscm90LHNvdD1BcnJheS5wcm90b3R5cGUubWFwLGxvdD1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gY290KHQpe3ZhciBlPXZvaWQgMD09PXQuZ3JvdXBpbmd8fHZvaWQgMD09PXQudGhvdXNhbmRzP29vdDooZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLG8pe2Zvcih2YXIgaT1uLmxlbmd0aCxhPVtdLHI9MCxzPXRbMF0sbD0wO2k+MCYmcz4wJiYobCtzKzE+byYmKHM9TWF0aC5tYXgoMSxvLWwpKSxhLnB1c2gobi5zdWJzdHJpbmcoaS09cyxpK3MpKSwhKChsKz1zKzEpPm8pKTspcz10W3I9KHIrMSkldC5sZW5ndGhdO3JldHVybiBhLnJldmVyc2UoKS5qb2luKGUpfX0pKHNvdC5jYWxsKHQuZ3JvdXBpbmcsTnVtYmVyKSx0LnRob3VzYW5kcysiIiksbz12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMF0rIiIsaT12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMV0rIiIsYT12b2lkIDA9PT10LmRlY2ltYWw/Ii4iOnQuZGVjaW1hbCsiIixyPXZvaWQgMD09PXQubnVtZXJhbHM/b290OihmdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFsrZV19KSl9fSkoc290LmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxsPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGM9dm9pZCAwPT09dC5taW51cz8iLSI6dC5taW51cysiIixkPXZvaWQgMD09PXQubmFuPyJOYU4iOnQubmFuKyIiO2Z1bmN0aW9uIHAodCl7dmFyIG49KHQ9Sm50KHQpKS5maWxsLHM9dC5hbGlnbixwPXQuc2lnbixtPXQuc3ltYm9sLHU9dC56ZXJvLGY9dC53aWR0aCxnPXQuY29tbWEsaD10LnByZWNpc2lvbixiPXQudHJpbSx5PXQudHlwZTsibiI9PT15PyhnPSEwLHk9ImciKTp0b3RbeV18fCh2b2lkIDA9PT1oJiYoaD0xMiksYj0hMCx5PSJnIiksKHV8fCIwIj09PW4mJiI9Ij09PXMpJiYodT0hMCxuPSIwIixzPSI9Iik7dmFyIF89IiQiPT09bT9vOiIjIj09PW0mJi9bYm94WF0vLnRlc3QoeSk/IjAiK3kudG9Mb3dlckNhc2UoKToiIixDPSIkIj09PW0/aTovWyVwXS8udGVzdCh5KT9sOiIiLE09dG90W3ldLHY9L1tkZWZncHJzJV0vLnRlc3QoeSk7ZnVuY3Rpb24geCh0KXt2YXIgbyxpLGwsbT1fLHg9QztpZigiYyI9PT15KXg9TSh0KSt4LHQ9IiI7ZWxzZXt2YXIgTz0odD0rdCk8MHx8MS90PDA7aWYodD1pc05hTih0KT9kOk0oTWF0aC5hYnModCksaCksYiYmKHQ9KGZ1bmN0aW9uIFAodCl7dDpmb3IodmFyIGUsbj10Lmxlbmd0aCxvPTEsaT0tMTtvPG47KytvKXN3aXRjaCh0W29dKXtjYXNlIi4iOmk9ZT1vO2JyZWFrO2Nhc2UiMCI6MD09PWkmJihpPW8pLGU9bzticmVhaztkZWZhdWx0OmlmKCErdFtvXSlicmVhayB0O2k+MCYmKGk9MCl9cmV0dXJuIGk+MD90LnNsaWNlKDAsaSkrdC5zbGljZShlKzEpOnR9KSh0KSksTyYmMD09K3QmJiIrIiE9PXAmJihPPSExKSxtPShPPyIoIj09PXA/cDpjOiItIj09PXB8fCIoIj09PXA/IiI6cCkrbSx4PSgicyI9PT15P2xvdFs4K1hudC8zXToiIikreCsoTyYmIigiPT09cD8iKSI6IiIpLHYpZm9yKG89LTEsaT10Lmxlbmd0aDsrK288aTspaWYoNDg+KGw9dC5jaGFyQ29kZUF0KG8pKXx8bD41Nyl7eD0oNDY9PT1sP2ErdC5zbGljZShvKzEpOnQuc2xpY2UobykpK3gsdD10LnNsaWNlKDAsbyk7YnJlYWt9fWcmJiF1JiYodD1lKHQsMS8wKSk7dmFyIHc9bS5sZW5ndGgrdC5sZW5ndGgreC5sZW5ndGgsaz13PGY/bmV3IEFycmF5KGYtdysxKS5qb2luKG4pOiIiO3N3aXRjaChnJiZ1JiYodD1lKGsrdCxrLmxlbmd0aD9mLXgubGVuZ3RoOjEvMCksaz0iIikscyl7Y2FzZSI8Ijp0PW0rdCt4K2s7YnJlYWs7Y2FzZSI9Ijp0PW0rayt0K3g7YnJlYWs7Y2FzZSJeIjp0PWsuc2xpY2UoMCx3PWsubGVuZ3RoPj4xKSttK3QreCtrLnNsaWNlKHcpO2JyZWFrO2RlZmF1bHQ6dD1rK20rdCt4fXJldHVybiByKHQpfXJldHVybiBoPXZvaWQgMD09PWg/NjovW2dwcnNdLy50ZXN0KHkpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsaCkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsaCkpLHgudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0seH1yZXR1cm57Zm9ybWF0OnAsZm9ybWF0UHJlZml4OmZ1bmN0aW9uIG0odCxlKXt2YXIgbj1wKCgodD1KbnQodCkpLnR5cGU9ImYiLHQpKSxvPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKFpudChlKS8zKSkpLGk9TWF0aC5wb3coMTAsLW8pLGE9bG90Wzgrby8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4oaSp0KSthfX19fWZ1bmN0aW9uIGRvdCh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc30hKGZ1bmN0aW9uIHBvdCh0KXtyZXR1cm4gaW90PWNvdCh0KSxhb3Q9aW90LmZvcm1hdCxyb3Q9aW90LmZvcm1hdFByZWZpeCxpb3R9KSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSk7dmFyIG1vdD1BcnJheS5wcm90b3R5cGUsdW90PW1vdC5tYXAsZm90PW1vdC5zbGljZSxnb3Q9e25hbWU6ImltcGxpY2l0In07ZnVuY3Rpb24gaG90KCl7dmFyIHQ9V250KCksZT1bXSxuPVtdLG89Z290O2Z1bmN0aW9uIGkoaSl7dmFyIGE9aSsiIixyPXQuZ2V0KGEpO2lmKCFyKXtpZihvIT09Z290KXJldHVybiBvO3Quc2V0KGEscj1lLnB1c2goaSkpfXJldHVybiBuWyhyLTEpJW4ubGVuZ3RoXX1yZXR1cm4gaS5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9V250KCk7Zm9yKHZhciBvLGEscj0tMSxzPW4ubGVuZ3RoOysrcjxzOyl0LmhhcyhhPShvPW5bcl0pKyIiKXx8dC5zZXQoYSxlLnB1c2gobykpO3JldHVybiBpfSxpLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWZvdC5jYWxsKHQpLGkpOm4uc2xpY2UoKX0saS51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsaSk6b30saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGhvdChlLG4pLnVua25vd24obyl9LGRvdC5hcHBseShpLGFyZ3VtZW50cyksaX1mdW5jdGlvbiBib3QoKXt2YXIgdCxlLG49aG90KCkudW5rbm93bih2b2lkIDApLG89bi5kb21haW4saT1uLnJhbmdlLGE9WzAsMV0scj0hMSxzPTAsbD0wLGM9LjU7ZnVuY3Rpb24gZCgpe3ZhciBuPW8oKS5sZW5ndGgsZD1hWzFdPGFbMF0scD1hW2QtMF0sbT1hWzEtZF07dD0obS1wKS9NYXRoLm1heCgxLG4tcysyKmwpLHImJih0PU1hdGguZmxvb3IodCkpLHArPShtLXAtdCoobi1zKSkqYyxlPXQqKDEtcyksciYmKHA9TWF0aC5yb3VuZChwKSxlPU1hdGgucm91bmQoZSkpO3ZhciB1PVY2KG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHArdCplfSkpO3JldHVybiBpKGQ/dS5yZXZlcnNlKCk6dSl9cmV0dXJuIGRlbGV0ZSBuLnVua25vd24sbi5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8odCksZCgpKTpvKCl9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9Wyt0WzBdLCt0WzFdXSxkKCkpOmEuc2xpY2UoKX0sbi5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhPVsrdFswXSwrdFsxXV0scj0hMCxkKCl9LG4uYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LG4uc3RlcD1mdW5jdGlvbigpe3JldHVybiB0fSxuLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEhdCxkKCkpOnJ9LG4ucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLGw9K3QpLGQoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSx0KSxkKCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSt0LGQoKSk6bH0sbi5hbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLGQoKSk6Y30sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGJvdChvKCksYSkucm91bmQocikucGFkZGluZ0lubmVyKHMpLnBhZGRpbmdPdXRlcihsKS5hbGlnbihjKX0sZG90LmFwcGx5KGQoKSxhcmd1bWVudHMpfWZ1bmN0aW9uIHlvdCh0KXt2YXIgZT10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiB5b3QoZSgpKX0sdH1mdW5jdGlvbiBfb3QoKXtyZXR1cm4geW90KGJvdC5hcHBseShudWxsLGFyZ3VtZW50cykucGFkZGluZ0lubmVyKDEpKX1mdW5jdGlvbiBDb3QodCl7cmV0dXJuK3R9dmFyIE1vdD1bMCwxXTtmdW5jdGlvbiB2b3QodCl7cmV0dXJuIHR9ZnVuY3Rpb24geG90KHQsZSl7cmV0dXJuKGUtPXQ9K3QpP2Z1bmN0aW9uKG4pe3JldHVybihuLXQpL2V9OihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGlzTmFOKGUpP05hTjouNSl9ZnVuY3Rpb24gT290KHQpe3ZhciBlLG49dFswXSxvPXRbdC5sZW5ndGgtMV07cmV0dXJuIG4+byYmKGU9bixuPW8sbz1lKSxmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgobixNYXRoLm1pbihvLHQpKX19ZnVuY3Rpb24gUG90KHQsZSxuKXt2YXIgbz10WzBdLGk9dFsxXSxhPWVbMF0scj1lWzFdO3JldHVybiBpPG8/KG89eG90KGksbyksYT1uKHIsYSkpOihvPXhvdChvLGkpLGE9bihhLHIpKSxmdW5jdGlvbih0KXtyZXR1cm4gYShvKHQpKX19ZnVuY3Rpb24gd290KHQsZSxuKXt2YXIgbz1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCktMSxpPW5ldyBBcnJheShvKSxhPW5ldyBBcnJheShvKSxyPS0xO2Zvcih0W29dPHRbMF0mJih0PXQuc2xpY2UoKS5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTsrK3I8bzspaVtyXT14b3QodFtyXSx0W3IrMV0pLGFbcl09bihlW3JdLGVbcisxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPUk2KHQsZSwxLG8pLTE7cmV0dXJuIGFbbl0oaVtuXShlKSl9fWZ1bmN0aW9uIGtvdCh0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5yYW5nZSh0LnJhbmdlKCkpLmludGVycG9sYXRlKHQuaW50ZXJwb2xhdGUoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBTb3QoKXt2YXIgdCxlLG4sbyxpLGEscj1Nb3Qscz1Nb3QsbD1DdHQsYz12b3Q7ZnVuY3Rpb24gZCgpe3JldHVybiBvPU1hdGgubWluKHIubGVuZ3RoLHMubGVuZ3RoKT4yP3dvdDpQb3QsaT1hPW51bGwscH1mdW5jdGlvbiBwKGUpe3JldHVybiBpc05hTihlPStlKT9uOihpfHwoaT1vKHIubWFwKHQpLHMsbCkpKSh0KGMoZSkpKX1yZXR1cm4gcC5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIGMoZSgoYXx8KGE9byhzLHIubWFwKHQpLGd0dCkpKShuKSkpfSxwLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj11b3QuY2FsbCh0LENvdCksYz09PXZvdHx8KGM9T290KHIpKSxkKCkpOnIuc2xpY2UoKX0scC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1mb3QuY2FsbCh0KSxkKCkpOnMuc2xpY2UoKX0scC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPWZvdC5jYWxsKHQpLGw9TXR0LGQoKX0scC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10P09vdChyKTp2b3QscCk6YyE9PXZvdH0scC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LGQoKSk6bH0scC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscCk6bn0sZnVuY3Rpb24obixvKXtyZXR1cm4gdD1uLGU9byxkKCl9fWZ1bmN0aW9uIERvdCh0LGUpe3JldHVybiBTb3QoKSh0LGUpfWZ1bmN0aW9uIFJvdCh0LGUsbixvKXt2YXIgaSxhPXE2KHQsZSxuKTtzd2l0Y2goKG89Sm50KG51bGw9PW8/IixmIjpvKSkudHlwZSl7Y2FzZSJzIjp2YXIgcj1NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhlKSk7cmV0dXJuIG51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoWm50KGUpLzMpKSktWm50KE1hdGguYWJzKHQpKSl9KShhLHIpKXx8KG8ucHJlY2lzaW9uPWkpLHJvdChvLHIpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsWm50KGUpLVpudCh0KSkrMX0pKGEsTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChvLnByZWNpc2lvbj1pLSgiZSI9PT1vLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9by5wcmVjaXNpb258fGlzTmFOKGk9KGZ1bmN0aW9uIGModCl7cmV0dXJuIE1hdGgubWF4KDAsLVpudChNYXRoLmFicyh0KSkpfSkoYSkpfHwoby5wcmVjaXNpb249aS0yKigiJSI9PT1vLnR5cGUpKX1yZXR1cm4gYW90KG8pfWZ1bmN0aW9uIEVvdCh0KXt2YXIgZT10LmRvbWFpbjtyZXR1cm4gdC50aWNrcz1mdW5jdGlvbih0KXt2YXIgbj1lKCk7cmV0dXJuIEc2KG5bMF0sbltuLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXt2YXIgbz1lKCk7cmV0dXJuIFJvdChvWzBdLG9bby5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBvLGk9ZSgpLGE9MCxyPWkubGVuZ3RoLTEscz1pW2FdLGw9aVtyXTtyZXR1cm4gbDxzJiYobz1zLHM9bCxsPW8sbz1hLGE9cixyPW8pLChvPVk2KHMsbCxuKSk+MD9vPVk2KHM9TWF0aC5mbG9vcihzL28pKm8sbD1NYXRoLmNlaWwobC9vKSpvLG4pOm88MCYmKG89WTYocz1NYXRoLmNlaWwocypvKS9vLGw9TWF0aC5mbG9vcihsKm8pL28sbikpLG8+MD8oaVthXT1NYXRoLmZsb29yKHMvbykqbyxpW3JdPU1hdGguY2VpbChsL28pKm8sZShpKSk6bzwwJiYoaVthXT1NYXRoLmNlaWwocypvKS9vLGlbcl09TWF0aC5mbG9vcihsKm8pL28sZShpKSksdH0sdH1mdW5jdGlvbiBBb3QoKXt2YXIgdD1Eb3Qodm90LHZvdCk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBrb3QodCxBb3QoKSl9LGRvdC5hcHBseSh0LGFyZ3VtZW50cyksRW90KHQpfWZ1bmN0aW9uIFRvdCh0LGUpe3ZhciBuLG89MCxpPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsYT10W29dLHI9dFtpXTtyZXR1cm4gcjxhJiYobj1vLG89aSxpPW4sbj1hLGE9cixyPW4pLHRbb109ZS5mbG9vcihhKSx0W2ldPWUuY2VpbChyKSx0fWZ1bmN0aW9uIE5vdCh0KXtyZXR1cm4gTWF0aC5sb2codCl9ZnVuY3Rpb24gem90KHQpe3JldHVybiBNYXRoLmV4cCh0KX1mdW5jdGlvbiBJb3QodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBIb3QodCl7cmV0dXJuLU1hdGguZXhwKC10KX1mdW5jdGlvbiBGb3QodCl7cmV0dXJuIGlzRmluaXRlKHQpPysoIjFlIit0KTp0PDA/MDp0fWZ1bmN0aW9uIExvdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiBCb3QodCl7dmFyIGUsbixvPXQoTm90LHpvdCksaT1vLmRvbWFpbixhPTEwO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZT0oZnVuY3Rpb24gcih0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9KShhKSxuPShmdW5jdGlvbiBzKHQpe3JldHVybiAxMD09PXQ/Rm90OnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fSkoYSksaSgpWzBdPDA/KGU9TG90KGUpLG49TG90KG4pLHQoSW90LEhvdCkpOnQoTm90LHpvdCksb31yZXR1cm4gby5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LHIoKSk6YX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCkscigpKTppKCl9LG8udGlja3M9ZnVuY3Rpb24odCl7dmFyIG8scj1pKCkscz1yWzBdLGw9cltyLmxlbmd0aC0xXTsobz1sPHMpJiYobT1zLHM9bCxsPW0pO3ZhciBjLGQscCxtPWUocyksdT1lKGwpLGY9bnVsbD09dD8xMDordCxnPVtdO2lmKCEoYSUxKSYmdS1tPGYpe2lmKG09TWF0aC5yb3VuZChtKS0xLHU9TWF0aC5yb3VuZCh1KSsxLHM+MCl7Zm9yKDttPHU7KyttKWZvcihkPTEsYz1uKG0pO2Q8YTsrK2QpaWYoISgocD1jKmQpPHMpKXtpZihwPmwpYnJlYWs7Zy5wdXNoKHApfX1lbHNlIGZvcig7bTx1OysrbSlmb3IoZD1hLTEsYz1uKG0pO2Q+PTE7LS1kKWlmKCEoKHA9YypkKTxzKSl7aWYocD5sKWJyZWFrO2cucHVzaChwKX19ZWxzZSBnPUc2KG0sdSxNYXRoLm1pbih1LW0sZikpLm1hcChuKTtyZXR1cm4gbz9nLnJldmVyc2UoKTpnfSxvLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxpKXtpZihudWxsPT1pJiYoaT0xMD09PWE/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmKGk9YW90KGkpKSx0PT09MS8wKXJldHVybiBpO251bGw9PXQmJih0PTEwKTt2YXIgcj1NYXRoLm1heCgxLGEqdC9vLnRpY2tzKCkubGVuZ3RoKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG89dC9uKE1hdGgucm91bmQoZSh0KSkpO3JldHVybiBvKmE8YS0uNSYmKG8qPWEpLG88PXI/aSh0KToiIn19LG8ubmljZT1mdW5jdGlvbigpe3JldHVybiBpKFRvdChpKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguZmxvb3IoZSh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguY2VpbChlKHQpKSl9fSkpfSxvfWZ1bmN0aW9uIFZvdCgpe3ZhciB0PUJvdChTb3QoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBrb3QodCxWb3QoKSkuYmFzZSh0LmJhc2UoKSl9LGRvdC5hcHBseSh0LGFyZ3VtZW50cyksdH12YXIgVW90PW5ldyBEYXRlLGpvdD1uZXcgRGF0ZTtmdW5jdGlvbiBXb3QodCxlLG4sbyl7ZnVuY3Rpb24gaShlKXtyZXR1cm4gdChlPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtlKSksZX1yZXR1cm4gaS5mbG9vcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX0saS5jZWlsPWZ1bmN0aW9uKG4pe3JldHVybiB0KG49bmV3IERhdGUobi0xKSksZShuLDEpLHQobiksbn0saS5yb3VuZD1mdW5jdGlvbih0KXt2YXIgZT1pKHQpLG49aS5jZWlsKHQpO3JldHVybiB0LWU8bi10P2U6bn0saS5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0PW5ldyBEYXRlKCt0KSxudWxsPT1uPzE6TWF0aC5mbG9vcihuKSksdH0saS5yYW5nZT1mdW5jdGlvbihuLG8sYSl7dmFyIHIscz1bXTtpZihuPWkuY2VpbChuKSxhPW51bGw9PWE/MTpNYXRoLmZsb29yKGEpLCEobjxvJiZhPjApKXJldHVybiBzO2Rve3MucHVzaChyPW5ldyBEYXRlKCtuKSksZShuLGEpLHQobil9d2hpbGUocjxuJiZuPG8pO3JldHVybiBzfSxpLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gV290KChmdW5jdGlvbihlKXtpZihlPj1lKWZvcig7dChlKSwhbihlKTspZS5zZXRUaW1lKGUtMSl9KSwoZnVuY3Rpb24odCxvKXtpZih0Pj10KWlmKG88MClmb3IoOysrbzw9MDspZm9yKDtlKHQsLTEpLCFuKHQpOyk7ZWxzZSBmb3IoOy0tbz49MDspZm9yKDtlKHQsMSksIW4odCk7KTt9KSl9LG4mJihpLmNvdW50PWZ1bmN0aW9uKGUsbyl7cmV0dXJuIFVvdC5zZXRUaW1lKCtlKSxqb3Quc2V0VGltZSgrbyksdChVb3QpLHQoam90KSxNYXRoLmZsb29yKG4oVW90LGpvdCkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/aS5maWx0ZXIobz9mdW5jdGlvbihlKXtyZXR1cm4gbyhlKSV0PT0wfTpmdW5jdGlvbihlKXtyZXR1cm4gaS5jb3VudCgwLGUpJXQ9PTB9KTppOm51bGx9KSxpfXZhciBHb3Q9V290KChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7R290LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/V290KChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOkdvdDpudWxsfTt2YXIgWW90PUdvdCxxb3Q9MWUzLFpvdD02ZTQsWG90PTM2ZTUsS290PTg2NGU1LEpvdD02MDQ4ZTUsUW90PVdvdCgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpxb3QpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvcW90fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSwkb3Q9V290KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKnFvdCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpab3QpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvWm90fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pKSx0aXQ9V290KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKnFvdC10LmdldE1pbnV0ZXMoKSpab3QpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqWG90KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL1hvdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRIb3VycygpfSkpLGVpdD1Xb3QoKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpab3QpL0tvdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtmdW5jdGlvbiBuaXQodCl7cmV0dXJuIFdvdCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqWm90KS9Kb3R9KSl9dmFyIG9pdD1uaXQoMCksaWl0PW5pdCgxKTtuaXQoMiksbml0KDMpO3ZhciBhaXQ9bml0KDQpO25pdCg1KSxuaXQoNik7dmFyIHJpdD1Xb3QoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxzaXQ9V290KChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtzaXQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9Xb3QoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBsaXQ9c2l0LGNpdD1Xb3QoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9Lb3R9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSk7ZnVuY3Rpb24gZGl0KHQpe3JldHVybiBXb3QoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0pvdH0pKX12YXIgcGl0PWRpdCgwKSxtaXQ9ZGl0KDEpO2RpdCgyKSxkaXQoMyk7dmFyIHVpdD1kaXQoNCk7ZGl0KDUpLGRpdCg2KTt2YXIgZml0PVdvdCgoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7Zml0LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/V290KChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgZ2l0PWZpdDtmdW5jdGlvbiBoaXQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIGJpdCh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiB5aXQodCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fXZhciBfaXQsQ2l0LE1pdD17Ii0iOiIiLF86IiAiLDA6IjAifSx2aXQ9L15ccypcZCsvLHhpdD0vXiUvLE9pdD0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gUGl0KHQsZSxuKXt2YXIgbz10PDA/Ii0iOiIiLGk9KG8/LXQ6dCkrIiIsYT1pLmxlbmd0aDtyZXR1cm4gbysoYTxuP25ldyBBcnJheShuLWErMSkuam9pbihlKStpOmkpfWZ1bmN0aW9uIHdpdCh0KXtyZXR1cm4gdC5yZXBsYWNlKE9pdCwiXFwkJiIpfWZ1bmN0aW9uIGtpdCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAod2l0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gU2l0KHQpe2Zvcih2YXIgZT17fSxuPS0xLG89dC5sZW5ndGg7KytuPG87KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIERpdCh0LGUsbil7dmFyIG89dml0LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBvPyh0Lnc9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUml0KHQsZSxuKXt2YXIgbz12aXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIG8/KHQudT0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBFaXQodCxlLG4pe3ZhciBvPXZpdC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5VPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFpdCh0LGUsbil7dmFyIG89dml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0LlY9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVGl0KHQsZSxuKXt2YXIgbz12aXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuVz0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBOaXQodCxlLG4pe3ZhciBvPXZpdC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gbz8odC55PStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHppdCh0LGUsbil7dmFyIG89dml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lnk9K29bMF0rKCtvWzBdPjY4PzE5MDA6MmUzKSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJaXQodCxlLG4pe3ZhciBvPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gbz8odC5aPW9bMV0/MDotKG9bMl0rKG9bM118fCIwMCIpKSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBIaXQodCxlLG4pe3ZhciBvPXZpdC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gbz8odC5xPTMqb1swXS0zLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEZpdCh0LGUsbil7dmFyIG89dml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lm09b1swXS0xLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIExpdCh0LGUsbil7dmFyIG89dml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0LmQ9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQml0KHQsZSxuKXt2YXIgbz12aXQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIG8/KHQubT0wLHQuZD0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBWaXQodCxlLG4pe3ZhciBvPXZpdC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5IPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFVpdCh0LGUsbil7dmFyIG89dml0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Lk09K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaml0KHQsZSxuKXt2YXIgbz12aXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuUz0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBXaXQodCxlLG4pe3ZhciBvPXZpdC5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gbz8odC5MPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEdpdCh0LGUsbil7dmFyIG89dml0LmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBvPyh0Lkw9TWF0aC5mbG9vcihvWzBdLzFlMyksbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWWl0KHQsZSxuKXt2YXIgbz14aXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIG8/bitvWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBxaXQodCxlLG4pe3ZhciBvPXZpdC5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0LlE9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWml0KHQsZSxuKXt2YXIgbz12aXQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5zPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFhpdCh0LGUpe3JldHVybiBQaXQodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBLaXQodCxlKXtyZXR1cm4gUGl0KHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIEppdCh0LGUpe3JldHVybiBQaXQodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIFFpdCh0LGUpe3JldHVybiBQaXQoMStlaXQuY291bnQobGl0KHQpLHQpLGUsMyl9ZnVuY3Rpb24gJGl0KHQsZSl7cmV0dXJuIFBpdCh0LmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gdGF0KHQsZSl7cmV0dXJuICRpdCh0LGUpKyIwMDAifWZ1bmN0aW9uIGVhdCh0LGUpe3JldHVybiBQaXQodC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBuYXQodCxlKXtyZXR1cm4gUGl0KHQuZ2V0TWludXRlcygpLGUsMil9ZnVuY3Rpb24gb2F0KHQsZSl7cmV0dXJuIFBpdCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIGlhdCh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gYWF0KHQsZSl7cmV0dXJuIFBpdChvaXQuY291bnQobGl0KHQpLTEsdCksZSwyKX1mdW5jdGlvbiByYXQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/YWl0KHQpOmFpdC5jZWlsKHQpfWZ1bmN0aW9uIHNhdCh0LGUpe3JldHVybiB0PXJhdCh0KSxQaXQoYWl0LmNvdW50KGxpdCh0KSx0KSsoND09PWxpdCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBsYXQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gY2F0KHQsZSl7cmV0dXJuIFBpdChpaXQuY291bnQobGl0KHQpLTEsdCksZSwyKX1mdW5jdGlvbiBkYXQodCxlKXtyZXR1cm4gUGl0KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBwYXQodCxlKXtyZXR1cm4gUGl0KCh0PXJhdCh0KSkuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBtYXQodCxlKXtyZXR1cm4gUGl0KHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiB1YXQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiBQaXQoKHQ9bj49NHx8MD09PW4/YWl0KHQpOmFpdC5jZWlsKHQpKS5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGZhdCh0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKGU+MD8iLSI6KGUqPS0xLCIrIikpK1BpdChlLzYwfDAsIjAiLDIpK1BpdChlJTYwLCIwIiwyKX1mdW5jdGlvbiBnYXQodCxlKXtyZXR1cm4gUGl0KHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gaGF0KHQsZSl7cmV0dXJuIFBpdCh0LmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBiYXQodCxlKXtyZXR1cm4gUGl0KHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiB5YXQodCxlKXtyZXR1cm4gUGl0KDErY2l0LmNvdW50KGdpdCh0KSx0KSxlLDMpfWZ1bmN0aW9uIF9hdCh0LGUpe3JldHVybiBQaXQodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIENhdCh0LGUpe3JldHVybiBfYXQodCxlKSsiMDAwIn1mdW5jdGlvbiBNYXQodCxlKXtyZXR1cm4gUGl0KHQuZ2V0VVRDTW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gdmF0KHQsZSl7cmV0dXJuIFBpdCh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIHhhdCh0LGUpe3JldHVybiBQaXQodC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBPYXQodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIFBhdCh0LGUpe3JldHVybiBQaXQocGl0LmNvdW50KGdpdCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gd2F0KHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP3VpdCh0KTp1aXQuY2VpbCh0KX1mdW5jdGlvbiBrYXQodCxlKXtyZXR1cm4gdD13YXQodCksUGl0KHVpdC5jb3VudChnaXQodCksdCkrKDQ9PT1naXQodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gU2F0KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIERhdCh0LGUpe3JldHVybiBQaXQobWl0LmNvdW50KGdpdCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gUmF0KHQsZSl7cmV0dXJuIFBpdCh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gRWF0KHQsZSl7cmV0dXJuIFBpdCgodD13YXQodCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gQWF0KHQsZSl7cmV0dXJuIFBpdCh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gVGF0KHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gUGl0KCh0PW4+PTR8fDA9PT1uP3VpdCh0KTp1aXQuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBOYXQoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIHphdCgpe3JldHVybiIlIn1mdW5jdGlvbiBJYXQodCl7cmV0dXJuK3R9ZnVuY3Rpb24gSGF0KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9IShmdW5jdGlvbiBGYXQodCl7cmV0dXJuIF9pdD0oZnVuY3Rpb24gZSh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLG89dC50aW1lLGk9dC5wZXJpb2RzLGE9dC5kYXlzLHI9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1raXQoaSksZD1TaXQoaSkscD1raXQoYSksbT1TaXQoYSksdT1raXQociksZj1TaXQociksZz1raXQocyksaD1TaXQocyksYj1raXQobCkseT1TaXQobCksXz17YTpmdW5jdGlvbiBDKHQpe3JldHVybiByW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIE0odCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdih0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIHgodCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6WGl0LGU6WGl0LGY6dGF0LGc6cGF0LEc6dWF0LEg6S2l0LEk6Sml0LGo6UWl0LEw6JGl0LG06ZWF0LE06bmF0LHA6ZnVuY3Rpb24gTyh0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBQKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpJYXQsczpIYXQsUzpvYXQsdTppYXQsVTphYXQsVjpzYXQsdzpsYXQsVzpjYXQseDpudWxsLFg6bnVsbCx5OmRhdCxZOm1hdCxaOmZhdCwiJSI6emF0fSx3PXthOmZ1bmN0aW9uIGsodCl7cmV0dXJuIHJbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBEKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gUih0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpnYXQsZTpnYXQsZjpDYXQsZzpFYXQsRzpUYXQsSDpoYXQsSTpiYXQsajp5YXQsTDpfYXQsbTpNYXQsTTp2YXQscDpmdW5jdGlvbiBFKHQpe3JldHVybiBpWysodC5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uIEEodCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROklhdCxzOkhhdCxTOnhhdCx1Ok9hdCxVOlBhdCxWOmthdCx3OlNhdCxXOkRhdCx4Om51bGwsWDpudWxsLHk6UmF0LFk6QWF0LFo6TmF0LCIlIjp6YXR9LFQ9e2E6ZnVuY3Rpb24gTih0LGUsbil7dmFyIG89dS5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lnc9ZltvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBvPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC53PW1bb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBJKHQsZSxuKXt2YXIgbz1iLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIG8/KHQubT15W29bMF0udG9Mb3dlckNhc2UoKV0sbitvWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIG89Zy5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lm09aFtvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIEYodCxuLG8pe3JldHVybiBXKHQsZSxuLG8pfSxkOkxpdCxlOkxpdCxmOkdpdCxnOnppdCxHOk5pdCxIOlZpdCxJOlZpdCxqOkJpdCxMOldpdCxtOkZpdCxNOlVpdCxwOmZ1bmN0aW9uIEwodCxlLG4pe3ZhciBvPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5wPWRbb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0scTpIaXQsUTpxaXQsczpaaXQsUzpqaXQsdTpSaXQsVTpFaXQsVjpBaXQsdzpEaXQsVzpUaXQseDpmdW5jdGlvbiBCKHQsZSxvKXtyZXR1cm4gVyh0LG4sZSxvKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gVyh0LG8sZSxuKX0seTp6aXQsWTpOaXQsWjpJaXQsIiUiOllpdH07ZnVuY3Rpb24gVSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgbyxpLGEscj1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihyLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0oaT1NaXRbbz10LmNoYXJBdCgrK3MpXSk/bz10LmNoYXJBdCgrK3MpOmk9ImUiPT09bz8iICI6IjAiLChhPWVbb10pJiYobz1hKG4saSkpLHIucHVzaChvKSxsPXMrMSk7cmV0dXJuIHIucHVzaCh0LnNsaWNlKGwscykpLHIuam9pbigiIil9fWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIG8saSxhPXlpdCgxOTAwLHZvaWQgMCwxKTtpZihXKGEsdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoZSYmISgiWiJpbiBhKSYmKGEuWj0wKSwicCJpbiBhJiYoYS5IPWEuSCUxMisxMiphLnApLHZvaWQgMD09PWEubSYmKGEubT0icSJpbiBhP2EucTowKSwiViJpbiBhKXtpZihhLlY8MXx8YS5WPjUzKXJldHVybiBudWxsOyJ3ImluIGF8fChhLnc9MSksIloiaW4gYT8oaT0obz1iaXQoeWl0KGEueSwwLDEpKSkuZ2V0VVRDRGF5KCksbz1pPjR8fDA9PT1pP21pdC5jZWlsKG8pOm1pdChvKSxvPWNpdC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldFVUQ0Z1bGxZZWFyKCksYS5tPW8uZ2V0VVRDTW9udGgoKSxhLmQ9by5nZXRVVENEYXRlKCkrKGEudys2KSU3KTooaT0obz1oaXQoeWl0KGEueSwwLDEpKSkuZ2V0RGF5KCksbz1pPjR8fDA9PT1pP2lpdC5jZWlsKG8pOmlpdChvKSxvPWVpdC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldEZ1bGxZZWFyKCksYS5tPW8uZ2V0TW9udGgoKSxhLmQ9by5nZXREYXRlKCkrKGEudys2KSU3KX1lbHNlKCJXImluIGF8fCJVImluIGEpJiYoInciaW4gYXx8KGEudz0idSJpbiBhP2EudSU3OiJXImluIGE/MTowKSxpPSJaImluIGE/Yml0KHlpdChhLnksMCwxKSkuZ2V0VVRDRGF5KCk6aGl0KHlpdChhLnksMCwxKSkuZ2V0RGF5KCksYS5tPTAsYS5kPSJXImluIGE/KGEudys2KSU3KzcqYS5XLShpKzUpJTc6YS53KzcqYS5VLShpKzYpJTcpO3JldHVybiJaImluIGE/KGEuSCs9YS5aLzEwMHwwLGEuTSs9YS5aJTEwMCxiaXQoYSkpOmhpdChhKX19ZnVuY3Rpb24gVyh0LGUsbixvKXtmb3IodmFyIGksYSxyPTAscz1lLmxlbmd0aCxsPW4ubGVuZ3RoO3I8czspe2lmKG8+PWwpcmV0dXJuLTE7aWYoMzc9PT0oaT1lLmNoYXJDb2RlQXQocisrKSkpe2lmKGk9ZS5jaGFyQXQocisrKSwhKGE9VFtpIGluIE1pdD9lLmNoYXJBdChyKyspOmldKXx8KG89YSh0LG4sbykpPDApcmV0dXJuLTF9ZWxzZSBpZihpIT1uLmNoYXJDb2RlQXQobysrKSlyZXR1cm4tMX1yZXR1cm4gb31yZXR1cm4gXy54PVUobixfKSxfLlg9VShvLF8pLF8uYz1VKGUsXyksdy54PVUobix3KSx3Llg9VShvLHcpLHcuYz1VKGUsdykse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLF8pO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLHcpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX0pKHQpLENpdD1faXQuZm9ybWF0LF9pdH0pKHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7dmFyIExhdD0xZTMsQmF0PTZlNCxWYXQ9MzZlNSxVYXQ9ODY0ZTUsamF0PTI1OTJlNixXYXQ9MzE1MzZlNjtmdW5jdGlvbiBHYXQodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIFlhdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiBxYXQodCxlLG4sbyxpLGEscixzLGwpe3ZhciBjPURvdCh2b3Qsdm90KSxkPWMuaW52ZXJ0LHA9Yy5kb21haW4sbT1sKCIuJUwiKSx1PWwoIjolUyIpLGY9bCgiJUk6JU0iKSxnPWwoIiVJICVwIiksaD1sKCIlYSAlZCIpLGI9bCgiJWIgJWQiKSx5PWwoIiVCIiksXz1sKCIlWSIpLEM9W1tyLDEsTGF0XSxbciw1LDVlM10sW3IsMTUsMTVlM10sW3IsMzAsM2U0XSxbYSwxLEJhdF0sW2EsNSwzZTVdLFthLDE1LDllNV0sW2EsMzAsMThlNV0sW2ksMSxWYXRdLFtpLDMsMTA4ZTVdLFtpLDYsMjE2ZTVdLFtpLDEyLDQzMmU1XSxbbywxLFVhdF0sW28sMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLGphdF0sW2UsMyw3Nzc2ZTZdLFt0LDEsV2F0XV07ZnVuY3Rpb24gTShzKXtyZXR1cm4ocihzKTxzP206YShzKTxzP3U6aShzKTxzP2Y6byhzKTxzP2c6ZShzKTxzP24ocyk8cz9oOmI6dChzKTxzP3k6Xykocyl9ZnVuY3Rpb24gdihlLG4sbyxpKXtpZihudWxsPT1lJiYoZT0xMCksIm51bWJlciI9PXR5cGVvZiBlKXt2YXIgYT1NYXRoLmFicyhvLW4pL2Uscj16NigoZnVuY3Rpb24odCl7cmV0dXJuIHRbMl19KSkucmlnaHQoQyxhKTtyPT09Qy5sZW5ndGg/KGk9cTYobi9XYXQsby9XYXQsZSksZT10KTpyPyhpPShyPUNbYS9DW3ItMV1bMl08Q1tyXVsyXS9hP3ItMTpyXSlbMV0sZT1yWzBdKTooaT1NYXRoLm1heChxNihuLG8sZSksMSksZT1zKX1yZXR1cm4gbnVsbD09aT9lOmUuZXZlcnkoaSl9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZShkKHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cCh1b3QuY2FsbCh0LFlhdCkpOnAoKS5tYXAoR2F0KX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLG89cCgpLGk9b1swXSxhPW9bby5sZW5ndGgtMV0scj1hPGk7cmV0dXJuIHImJihuPWksaT1hLGE9biksbj0obj12KHQsaSxhLGUpKT9uLnJhbmdlKGksYSsxKTpbXSxyP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP006bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49cCgpO3JldHVybih0PXYodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP3AoVG90KG4sdCkpOmN9LGMuY29weT1mdW5jdGlvbigpe3JldHVybiBrb3QoYyxxYXQodCxlLG4sbyxpLGEscixzLGwpKX0sY31mdW5jdGlvbiBaYXQoKXtyZXR1cm4gZG90LmFwcGx5KHFhdChsaXQscml0LG9pdCxlaXQsdGl0LCRvdCxRb3QsWW90LENpdCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWGF0KHQpe2Zvcih2YXIgZT10Lmxlbmd0aC82fDAsbj1uZXcgQXJyYXkoZSksbz0wO288ZTspbltvXT0iIyIrdC5zbGljZSg2Km8sNiorK28pO3JldHVybiBufWZ1bmN0aW9uIEthdCh0KXtyZXR1cm4gY3R0KHRbdC5sZW5ndGgtMV0pfXZhciBKYXQ9S2F0KG5ldyBBcnJheSgzKS5jb25jYXQoImRlZWJmNzllY2FlMTMxODJiZCIsImVmZjNmZmJkZDdlNzZiYWVkNjIxNzFiNSIsImVmZjNmZmJkZDdlNzZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NTE5YzA4MzA2YiIpLm1hcChYYXQpKSxRYXQ9S2F0KG5ldyBBcnJheSgzKS5jb25jYXQoImYwZjBmMGJkYmRiZDYzNjM2MyIsImY3ZjdmN2NjY2NjYzk2OTY5NjUyNTI1MiIsImY3ZjdmN2NjY2NjYzk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNTAwMDAwMCIpLm1hcChYYXQpKSwkYXQ9S2F0KG5ldyBBcnJheSgzKS5jb25jYXQoImZlZTBkMmZjOTI3MmRlMmQyNiIsImZlZTVkOWZjYWU5MWZiNmE0YWNiMTgxZCIsImZlZTVkOWZjYWU5MWZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZGE1MGYxNTY3MDAwZCIpLm1hcChYYXQpKTtmdW5jdGlvbiB0cnQodCl7cmV0dXJuIGZ1bmN0aW9uIGUoKXtyZXR1cm4gdH19ZnVuY3Rpb24gZXJ0KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBucnQodCl7cmV0dXJuIG5ldyBlcnQodCl9ZnVuY3Rpb24gb3J0KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIGlydCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBhcnQoKXt2YXIgdD1vcnQsZT1pcnQsbj10cnQoITApLG89bnVsbCxpPW5ydCxhPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgcyxsLGMsZD1yLmxlbmd0aCxwPSExO2ZvcihudWxsPT1vJiYoYT1pKGM9Vm50KCkpKSxzPTA7czw9ZDsrK3MpIShzPGQmJm4obD1yW3NdLHMscikpPT09cCYmKChwPSFwKT9hLmxpbmVTdGFydCgpOmEubGluZUVuZCgpKSxwJiZhLnBvaW50KCt0KGwscyxyKSwrZShsLHMscikpO2lmKGMpcmV0dXJuIGE9bnVsbCxjKyIifHxudWxsfXJldHVybiByLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp0cnQoK2UpLHIpOnR9LHIueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnRydCgrdCkscik6ZX0sci5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dHJ0KCEhdCkscik6bn0sci5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG51bGwhPW8mJihhPWkobykpLHIpOml9LHIuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9vPWE9bnVsbDphPWkobz10KSxyKTpvfSxyfWZ1bmN0aW9uIHJydCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIHNydCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9ZnVuY3Rpb24gbHJ0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9ZXJ0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpfX19LHNydC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6cnJ0KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpycnQodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19LGxydC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxvPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4rbypvLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OiEoZnVuY3Rpb24gaSh0LGUsbil7dmFyIG89dC5feDEsaT10Ll95MSxhPXQuX3gyLHI9dC5feTI7aWYodC5fbDAxX2E+MWUtMTIpe3ZhciBzPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGw9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO289KG8qcy10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9sLGk9KGkqcy10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9sfWlmKHQuX2wyM19hPjFlLTEyKXt2YXIgYz0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxkPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTthPShhKmMrdC5feDEqdC5fbDIzXzJhLWUqdC5fbDEyXzJhKS9kLHI9KHIqYyt0Ll95MSp0Ll9sMjNfMmEtbip0Ll9sMTJfMmEpL2R9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG8saSxhLHIsdC5feDIsdC5feTIpfSkodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgY3J0PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IGxydCh0LGUpOm5ldyBzcnQodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7Y29uc3QgZHJ0PTFlNCxwcnQ9LjAwMSxtcnQ9YW90KCIuMn5lIiksdXJ0PWFvdCgiLjR+ciIpLGZydD1hb3QoIix+Iik7ZnVuY3Rpb24gZ3J0KHQpe2lmKDA9PT10KXJldHVybiIwIjtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj1kcnR8fGU8cHJ0P21ydCh0KTp1cnQodCl9Y29uc3QgaHJ0PXtmb3JtYXRUaWNrOmdydCxmb3JtYXRTaG9ydDpncnQsZm9ybWF0UmVhZGFibGUodCl7Y29uc3QgZT1NYXRoLmFicyh0KTtyZXR1cm4gZT49ZHJ0fHxlPHBydD9tcnQodCk6ZnJ0KHQpfSxmb3JtYXRMb25nOmZydH0sYnJ0PW5ldyBJbnRsLk51bWJlckZvcm1hdCh2b2lkIDAse21heGltdW1GcmFjdGlvbkRpZ2l0czozfSk7ZnVuY3Rpb24geXJ0KHQpe3JldHVybiBicnQuZm9ybWF0KHQpfWNvbnN0IF9ydD17Zm9ybWF0VGljazp5cnQsZm9ybWF0U2hvcnQ6eXJ0LGZvcm1hdFJlYWRhYmxlOnlydCxmb3JtYXRMb25nOnlydH0sQ3J0PWFvdCgiMC4zfnMiKSxNcnQ9YW90KCIsLjN+ZiIpO2Z1bmN0aW9uIHZydCh0KXtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj1kcnR8fGU8cHJ0P0NydCh0KTpNcnQodCl9Y29uc3QgeHJ0PXtmb3JtYXRUaWNrOnZydCxmb3JtYXRTaG9ydDp2cnQsZm9ybWF0UmVhZGFibGU6dnJ0LGZvcm1hdExvbmc6dnJ0fSxPcnQ9MWUzLFBydD02ZTQsd3J0PTM2ZTUsa3J0PTg2NGU1LFNydD0zMTUzNmU2LERydD1hb3QoIi40fiIpO2Z1bmN0aW9uIFJydCh0KXtpZigwPT09dClyZXR1cm4iMCI7bGV0IGU9TWF0aC5zaWduKHQpPjA/IiI6Ii0iO2NvbnN0IG49TWF0aC5hYnModCk7cmV0dXJuIGUrPW48T3J0P2Ake0RydChuKX0gbXNgOm48UHJ0P2Ake0RydChuL09ydCl9IHNlY2A6bjx3cnQ/YCR7RHJ0KG4vUHJ0KX0gbWluYDpuPGtydD9gJHtEcnQobi93cnQpfSBocmA6bjxTcnQ/YCR7RHJ0KG4va3J0KX0gZGF5YDpgJHtEcnQobi9TcnQpfSB5cmAsZX1jb25zdCBFcnQ9e2Zvcm1hdFRpY2s6UnJ0LGZvcm1hdFNob3J0OlJydCxmb3JtYXRSZWFkYWJsZTpScnQsZm9ybWF0TG9uZzpScnR9LEFydD1aYXQoKS50aWNrRm9ybWF0KCk7bGV0IFRydDtjb25zdCBOcnQ9e2Zvcm1hdFRpY2s6dD0+QXJ0KG5ldyBEYXRlKHQpKSxmb3JtYXRTaG9ydDp0PT5uZXcgRGF0ZSh0KS50b0xvY2FsZVN0cmluZyhUcnQse3llYXI6Im51bWVyaWMiLG1vbnRoOiJzaG9ydCIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyJ9KSxmb3JtYXRSZWFkYWJsZTp0PT5uZXcgRGF0ZSh0KS50b0xvY2FsZVN0cmluZyhUcnQse3llYXI6Im51bWVyaWMiLG1vbnRoOiJzaG9ydCIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCJ9KSxmb3JtYXRMb25nOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKFRydCx7eWVhcjoibnVtZXJpYyIsbW9udGg6ImxvbmciLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMiLHRpbWVab25lTmFtZToic2hvcnQiLGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6M30pfTtmdW5jdGlvbiB6cnQodCl7c3dpdGNoKHQpe2Nhc2UgdjYuTElORUFSOnJldHVybiBuZXcgSXJ0O2Nhc2UgdjYuTE9HMTA6cmV0dXJuIG5ldyBIcnQ7Y2FzZSB2Ni5USU1FOnJldHVybiBuZXcgRnJ0O2RlZmF1bHQ6dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFNjYWxlVHlwZSAke3R9IG5vdCBzdXBwb3J0ZWQuYCl9fWNsYXNzIElydHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1ocnR9dHJhbnNmb3JtKHQsZSxuKXtjb25zdFtvLGldPXQsYT1pLW8sW3Isc109ZTtyZXR1cm4gMD09PWE/cjoocy1yKS9hKihuLW8pK3J9Zm9yd2FyZCh0LGUsbil7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHQsZSxuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oZSx0LG4pfW5pY2VEb21haW4odCl7bGV0W2Usbl09dDtpZihuPGUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7aWYobj09PWUpcmV0dXJuIDA9PT1lP1stMSwxXTplPDA/WzIqZSwwXTpbMCwyKmVdO2NvbnN0IG89QW90KCksaT0uMDUqKG4tZStOdW1iZXIuRVBTSUxPTiksW2Escl09by5kb21haW4oW2UtaSxuK2ldKS5uaWNlKCkuZG9tYWluKCk7cmV0dXJuW2Escl19dGlja3ModCxlKXtyZXR1cm4gQW90KCkuZG9tYWluKHQpLnRpY2tzKGUpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1jbGFzcyBIcnR7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9aHJ0fXRyYW5zZm9ybSh0KXtyZXR1cm4gTWF0aC5sb2cxMCh0PjA/dDpOdW1iZXIuTUlOX1ZBTFVFKX11bnRyYW5zZm9ybSh0KXtyZXR1cm4gTWF0aC5leHAodC9NYXRoLkxPRzEwRSl9Zm9yd2FyZCh0LGUsbil7aWYobjw9MClyZXR1cm4gZVswXTtjb25zdFtvLGldPXQsW2Escl09ZSxzPXRoaXMudHJhbnNmb3JtKG8pLGw9dGhpcy50cmFuc2Zvcm0oaSktcyxjPXItYTtyZXR1cm4gbj10aGlzLnRyYW5zZm9ybShuKSxjLyhsK051bWJlci5FUFNJTE9OKSoobi1zKSthfXJldmVyc2UodCxlLG4pe2NvbnN0W28saV09dCxbYSxyXT1lLHM9dGhpcy50cmFuc2Zvcm0obyksbD10aGlzLnRyYW5zZm9ybShpKTtyZXR1cm4gdGhpcy51bnRyYW5zZm9ybSgobC1zKS8oci1hK051bWJlci5FUFNJTE9OKSoobi1hKStzKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dDtpZihlPm4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7Y29uc3Qgbz1NYXRoLm1heChlLE51bWJlci5NSU5fVkFMVUUpLGk9TWF0aC5tYXgobixOdW1iZXIuTUlOX1ZBTFVFKTtyZXR1cm4gbjw9MD9bTnVtYmVyLk1JTl9WQUxVRSwxXTpbTWF0aC5tYXgoTnVtYmVyLk1JTl9WQUxVRSwuNSpvKSwyKmldfXRpY2tzKHQsZSl7Y29uc3Qgbj10WzBdPD0wP051bWJlci5NSU5fVkFMVUU6dFswXSxvPXRbMV08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzFdLGk9Vm90KCkuZG9tYWluKFtuLG9dKS50aWNrcyhlKTtyZXR1cm4gaS5sZW5ndGg/aTp0fWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpJiZ0PjB9fWNsYXNzIEZydHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2NhbGU9WmF0KCksdGhpcy5kZWZhdWx0Rm9ybWF0dGVyPU5ydH1mb3J3YXJkKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkobil9cmV2ZXJzZSh0LGUsbil7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnJhbmdlKGUpLmludmVydChuKS5nZXRUaW1lKCl9bmljZURvbWFpbih0KXtjb25zdFtlLG5dPXRoaXMuc2NhbGUuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bZS5nZXRUaW1lKCksbi5nZXRUaW1lKCldfXRpY2tzKHQsZSl7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnRpY2tzKGUpLm1hcCgodD0+dC5nZXRUaW1lKCkpKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19bGV0IExydD0hMTtpZihzZWxmLmhhc093blByb3BlcnR5KCJXZWJHTDJSZW5kZXJpbmdDb250ZXh0IikmJnNlbGYuaGFzT3duUHJvcGVydHkoImRvY3VtZW50Iikpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwoKCk9PntMcnQ9ITF9KSk7Y29uc3QgZT10LmdldENvbnRleHQoIndlYmdsMiIpO0xydD1Cb29sZWFuKGUpfWZ1bmN0aW9uIEJydCgpe3JldHVybiBzZWxmLmhhc093blByb3BlcnR5KCJPZmZzY3JlZW5DYW52YXMiKX1mdW5jdGlvbiBWcnQodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0hPT1lW25dKXJldHVybiExO3JldHVybiEwfWNsYXNzIFVydHtjb25zdHJ1Y3Rvcigpe3RoaXMueFNjYWxlPXpydCh2Ni5MSU5FQVIpLHRoaXMueVNjYWxlPXpydCh2Ni5MSU5FQVIpLHRoaXMuZG9tQ29udGFpbmVyUmVjdD17eDowLHdpZHRoOjEseTowLGhlaWdodDoxfSx0aGlzLmxhc3RVcGRhdGVkPTAsdGhpcy5jdXJyZW50Vmlld0JveFJlY3Q9e3g6MCx3aWR0aDoxLHk6MCxoZWlnaHQ6MX19Z2V0VXBkYXRlSWRlbnRpZmllcigpe3JldHVybiB0aGlzLmxhc3RVcGRhdGVkfXVwZGF0ZUlkZW50aWZpZXIoKXt0aGlzLmxhc3RVcGRhdGVkKyt9aXNZQXhpc1BvaW50ZWREb3duKCl7cmV0dXJuITB9c2V0WFNjYWxlKHQpe3RoaXMueFNjYWxlPXQsdGhpcy51cGRhdGVJZGVudGlmaWVyKCl9c2V0WVNjYWxlKHQpe3RoaXMueVNjYWxlPXQsdGhpcy51cGRhdGVJZGVudGlmaWVyKCl9Z2V0Q3VycmVudFZpZXdCb3hSZWN0KCl7cmV0dXJuIHRoaXMuY3VycmVudFZpZXdCb3hSZWN0fXNldFZpZXdCb3hSZWN0KHQpe3RoaXMuY3VycmVudFZpZXdCb3hSZWN0PXQsdGhpcy51cGRhdGVJZGVudGlmaWVyKCl9c2V0RG9tQ29udGFpbmVyUmVjdCh0KXt0aGlzLmRvbUNvbnRhaW5lclJlY3Q9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX10cmFuc2Zvcm1EYXRhVG9VaUNvb3JkKHQsZSl7Y29uc3Qgbj10LG89KGZ1bmN0aW9uIGkodCl7cmV0dXJue3g6W3QueCx0LngrdC53aWR0aF0seTpbdC55LHQueSt0LmhlaWdodF19fSkodGhpcy5jdXJyZW50Vmlld0JveFJlY3QpO3JldHVyblt0aGlzLnhTY2FsZS5mb3J3YXJkKG8ueCxbbi54LG4ueCtuLndpZHRoXSxlWzBdKSx0aGlzLnlTY2FsZS5mb3J3YXJkKG8ueSx0aGlzLmlzWUF4aXNQb2ludGVkRG93bigpP1tuLnkrbi5oZWlnaHQsbi55XTpbbi55LG4ueStuLmhlaWdodF0sZVsxXSldfX1mdW5jdGlvbiBqcnQodCxlLG4sbyl7Y29uc3R7Y29sb3I6aSx2aXNpYmxlOmEsb3BhY2l0eTpyfT1vO2xldCBzPXQ7cmV0dXJuIHN8fGE/KHM9bnVsbCE9cz9zOmUoKSxzPW4ocykscy5zdHlsZS5kaXNwbGF5PWE/IiI6Im5vbmUiLHMuc3R5bGUuc3Ryb2tlPWkscy5zdHlsZS5vcGFjaXR5PVN0cmluZyhudWxsIT1yP3I6MSkscyk6bnVsbH1jbGFzcyBXcnR7Y29uc3RydWN0b3IodCl7dGhpcy5zdmc9dH1mbHVzaCgpe31vblJlc2l6ZSh0KXt9ZGVzdHJveU9iamVjdCh0KXt0aGlzLnN2Zy5yZW1vdmVDaGlsZCh0LmRvbSl9c2V0VXNlRGFya01vZGUodCl7fWNyZWF0ZVBhdGhEU3RyaW5nKHQpe2lmKCF0Lmxlbmd0aClyZXR1cm4iIjtjb25zdCBlPW5ldyBBcnJheSh0Lmxlbmd0aC8yKTtlWzBdPWBNJHt0WzBdfSwke3RbMV19YDtmb3IobGV0IG49MTtuPHQubGVuZ3RoLzI7bisrKWVbbl09YEwke3RbMipuXX0sJHt0WzIqbisxXX1gO3JldHVybiBlLmpvaW4oIiIpfWNyZWF0ZU9yVXBkYXRlTGluZU9iamVjdCh0LGUsbil7Y29uc3Qgbz1qcnQobnVsbD09dD92b2lkIDA6dC5kb20sKCgpPT57Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpO3Quc3R5bGUuZmlsbD0ibm9uZSI7Y29uc3Qgbj10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKGUpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZCIsbiksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodCksdH0pLChuPT57aWYoIShudWxsPT10P3ZvaWQgMDp0LmRhdGEpfHwhVnJ0KGUsbnVsbD09dD92b2lkIDA6dC5kYXRhKSl7Y29uc3QgdD10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKGUpO24uc2V0QXR0cmlidXRlKCJkIix0KX1yZXR1cm4gbn0pLG4pO3JldHVybiBudWxsPT09bz9udWxsOihvLnN0eWxlLnN0cm9rZVdpZHRoPVN0cmluZyhuLndpZHRoKSx7ZG9tOm8sZGF0YTplfSl9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LGUsbil7Y29uc3R7c2l6ZTpvLGNvbG9yOml9PW4sYT1vKk1hdGguc3FydCgzKS8yLHI9bmV3IEZsb2F0MzJBcnJheShbZS54LW8vMixlLnkrYS8zLGUueCtvLzIsZS55K2EvMyxlLngsZS55LTIqYS8zXSkscz1qcnQobnVsbD09dD92b2lkIDA6dC5kb20sKCgpPT57Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpO3QuY2xhc3NMaXN0LmFkZCgidHJpYW5nbGUiKSx0LnN0eWxlLmZpbGw9Im5vbmUiO2NvbnN0IGU9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhyKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLGUrIloiKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKHQ9Pntjb25zdCBlPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcocik7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixlKyJaIiksdH0pLG4pO3JldHVybiBudWxsPT09cz9udWxsOihzLnN0eWxlLmZpbGw9aSx7ZG9tOnMsZGF0YTpyfSl9Y3JlYXRlT3JVcGRhdGVDaXJjbGVPYmplY3QodCxlLG4pe2NvbnN0e2NvbG9yOm8scmFkaXVzOml9PW4sYT1qcnQobnVsbD09dD92b2lkIDA6dC5kb20sKCgpPT57Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiY2lyY2xlIik7cmV0dXJuIHQuc3R5bGUuZmlsbD1vLHQuc2V0QXR0cmlidXRlKCJjeCIsU3RyaW5nKGUueCkpLHQuc2V0QXR0cmlidXRlKCJjeSIsU3RyaW5nKGUueSkpLHQuc2V0QXR0cmlidXRlKCJyIixTdHJpbmcoaSkpLHRoaXMuc3ZnLmFwcGVuZENoaWxkKHQpLHR9KSwodD0+KHQuc3R5bGUuZmlsbD1vLHQuc2V0QXR0cmlidXRlKCJjeCIsU3RyaW5nKGUueCkpLHQuc2V0QXR0cmlidXRlKCJjeSIsU3RyaW5nKGUueSkpLHQuc2V0QXR0cmlidXRlKCJyIixTdHJpbmcoaSkpLHQpKSxuKTtyZXR1cm4gbnVsbD09PWE/bnVsbDp7ZG9tOmEsZGF0YTplfX1jcmVhdGVPclVwZGF0ZVRyYXBlem9pZE9iamVjdCh0LGUsbixvKXtpZihlLnkhPT1uLnkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIklucHV0IGVycm9yOiBzdGFydC55ICE9IGVuZC55LiIpO2NvbnN0e2FsdGl0dWRlOmksY29sb3I6YX09byxyPTIvTWF0aC5zcXJ0KDMpKmkscz1uZXcgRmxvYXQzMkFycmF5KFtlLngtci8yLGUueStpLzIsZS54LGUueS1pLzIsbi54LG4ueS1pLzIsbi54K3IvMixuLnkraS8yXSksbD1qcnQobnVsbD09dD92b2lkIDA6dC5kb20sKCgpPT57Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpO3QuY2xhc3NMaXN0LmFkZCgidHJhcGV6b2lkIiksdC5zdHlsZS5maWxsPSJub25lIjtjb25zdCBlPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcocyk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixlKyJaIiksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodCksdH0pLCh0PT57Y29uc3QgZT10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKHMpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZCIsZSsiWiIpLHR9KSxvKTtyZXR1cm4gbnVsbD09PWw/bnVsbDoobC5zdHlsZS5maWxsPWEse2RvbTpsLGRhdGE6c30pfWRpc3Bvc2UoKXt9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgMjAxMC0yMDIyIFRocmVlLmpzIEF1dGhvcnMKICAgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICAgICAqL2NvbnN0IEdydD0iMTM3IixZcnQ9MTAwLHFydD0zMDEsWnJ0PTMwMixYcnQ9MzA2LEtydD0xZTMsSnJ0PTEwMDEsUXJ0PTEwMDIsJHJ0PTEwMDMsdHN0PTEwMDYsZXN0PTEwMDgsbnN0PTEwMDksb3N0PTEwMTIsaXN0PTEwMTQsYXN0PTEwMTUscnN0PTEwMTYsc3N0PTEwMjAsbHN0PTEwMjMsY3N0PTEwMjYsZHN0PTEwMjcscHN0PTMzNzc2LG1zdD0zMzc3Nyx1c3Q9MzM3NzgsZnN0PTMzNzc5LGdzdD0yMzAwLGhzdD0yMzAxLGJzdD0yMzAyLHlzdD0yNDAwLF9zdD0yNDAxLENzdD0yNDAyLE1zdD0yNTAwLHZzdD0zZTMseHN0PTMwMDEsT3N0PTc2ODAsUHN0PTM1MDQ0LHdzdD0zNTA0OCxrc3Q9IjMwMCBlcyIsU3N0PTEwMzU7Y2xhc3MgRHN0e2FkZEV2ZW50TGlzdGVuZXIodCxlKXt2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9e30pO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3ZvaWQgMD09PW5bdF0mJihuW3RdPVtdKSwtMT09PW5bdF0uaW5kZXhPZihlKSYmblt0XS5wdXNoKGUpfWhhc0V2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuITE7Y29uc3Qgbj10aGlzLl9saXN0ZW5lcnM7cmV0dXJuIHZvaWQgMCE9PW5bdF0mJi0xIT09blt0XS5pbmRleE9mKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzW3RdO2lmKHZvaWQgMCE9PW4pe2NvbnN0IHQ9bi5pbmRleE9mKGUpOy0xIT09dCYmbi5zcGxpY2UodCwxKX19ZGlzcGF0Y2hFdmVudCh0KXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IGU9dGhpcy5fbGlzdGVuZXJzW3QudHlwZV07aWYodm9pZCAwIT09ZSl7dC50YXJnZXQ9dGhpcztjb25zdCBuPWUuc2xpY2UoMCk7Zm9yKGxldCBlPTAsbz1uLmxlbmd0aDtlPG87ZSsrKW5bZV0uY2FsbCh0aGlzLHQpO3QudGFyZ2V0PW51bGx9fX1jb25zdCBSc3Q9W107Zm9yKGxldCB0PTA7dDwyNTY7dCsrKVJzdFt0XT0odDwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpO2NvbnN0IEVzdD1NYXRoLlBJLzE4MCxBc3Q9MTgwL01hdGguUEk7ZnVuY3Rpb24gVHN0KCl7Y29uc3QgdD00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxlPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLG49NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsbz00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MDtyZXR1cm4oUnN0WzI1NSZ0XStSc3RbdD4+OCYyNTVdK1JzdFt0Pj4xNiYyNTVdK1JzdFt0Pj4yNCYyNTVdKyItIitSc3RbMjU1JmVdK1JzdFtlPj44JjI1NV0rIi0iK1JzdFtlPj4xNiYxNXw2NF0rUnN0W2U+PjI0JjI1NV0rIi0iK1JzdFs2MyZufDEyOF0rUnN0W24+PjgmMjU1XSsiLSIrUnN0W24+PjE2JjI1NV0rUnN0W24+PjI0JjI1NV0rUnN0WzI1NSZvXStSc3Rbbz4+OCYyNTVdK1JzdFtvPj4xNiYyNTVdK1JzdFtvPj4yNCYyNTVdKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIE5zdCh0LGUsbil7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4obix0KSl9ZnVuY3Rpb24genN0KHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX1mdW5jdGlvbiBJc3QodCl7cmV0dXJuIDA9PSh0JnQtMSkmJjAhPT10fWZ1bmN0aW9uIEhzdCh0KXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSl9Y2xhc3MgRnN0e2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PW9bMF0qZStvWzNdKm4rb1s2XSx0aGlzLnk9b1sxXSplK29bNF0qbitvWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55O3JldHVybiBlKmUrbipufW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxvPU1hdGguc2luKGUpLGk9dGhpcy54LXQueCxhPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1pKm4tYSpvK3QueCx0aGlzLnk9aSpvK2Eqbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55fX1Gc3QucHJvdG90eXBlLmlzVmVjdG9yMj0hMDtjbGFzcyBMc3R7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDEsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz10aGlzLmVsZW1lbnRzO3JldHVybiBjWzBdPXQsY1sxXT1vLGNbMl09cixjWzNdPWUsY1s0XT1pLGNbNV09cyxjWzZdPW4sY1s3XT1hLGNbOF09bCx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMSwwLDAsMCwxKSx0aGlzfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sdGhpc31leHRyYWN0QmFzaXModCxlLG4pe3JldHVybiB0LnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywyKSx0aGlzfXNldEZyb21NYXRyaXg0KHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy5zZXQoZVswXSxlWzRdLGVbOF0sZVsxXSxlWzVdLGVbOV0sZVsyXSxlWzZdLGVbMTBdKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxvPWUuZWxlbWVudHMsaT10aGlzLmVsZW1lbnRzLGE9blswXSxyPW5bM10scz1uWzZdLGw9blsxXSxjPW5bNF0sZD1uWzddLHA9blsyXSxtPW5bNV0sdT1uWzhdLGY9b1swXSxnPW9bM10saD1vWzZdLGI9b1sxXSx5PW9bNF0sXz1vWzddLEM9b1syXSxNPW9bNV0sdj1vWzhdO3JldHVybiBpWzBdPWEqZityKmIrcypDLGlbM109YSpnK3IqeStzKk0saVs2XT1hKmgrcipfK3MqdixpWzFdPWwqZitjKmIrZCpDLGlbNF09bCpnK2MqeStkKk0saVs3XT1sKmgrYypfK2QqdixpWzJdPXAqZittKmIrdSpDLGlbNV09cCpnK20qeSt1Kk0saVs4XT1wKmgrbSpfK3Uqdix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzNdKj10LGVbNl0qPXQsZVsxXSo9dCxlWzRdKj10LGVbN10qPXQsZVsyXSo9dCxlWzVdKj10LGVbOF0qPXQsdGhpc31kZXRlcm1pbmFudCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLG89dFsyXSxpPXRbM10sYT10WzRdLHI9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XTtyZXR1cm4gZSphKmMtZSpyKmwtbippKmMrbipyKnMrbyppKmwtbyphKnN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0sbz10WzJdLGk9dFszXSxhPXRbNF0scj10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLGQ9YyphLXIqbCxwPXIqcy1jKmksbT1sKmktYSpzLHU9ZSpkK24qcCtvKm07aWYoMD09PXUpcmV0dXJuIHRoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCBmPTEvdTtyZXR1cm4gdFswXT1kKmYsdFsxXT0obypsLWMqbikqZix0WzJdPShyKm4tbyphKSpmLHRbM109cCpmLHRbNF09KGMqZS1vKnMpKmYsdFs1XT0obyppLXIqZSkqZix0WzZdPW0qZix0WzddPShuKnMtbCplKSpmLHRbOF09KGEqZS1uKmkpKmYsdGhpc310cmFuc3Bvc2UoKXtsZXQgdDtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQ9ZVsxXSxlWzFdPWVbM10sZVszXT10LHQ9ZVsyXSxlWzJdPWVbNl0sZVs2XT10LHQ9ZVs1XSxlWzVdPWVbN10sZVs3XT10LHRoaXN9Z2V0Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLnNldEZyb21NYXRyaXg0KHQpLmludmVydCgpLnRyYW5zcG9zZSgpfXRyYW5zcG9zZUludG9BcnJheSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbMF09ZVswXSx0WzFdPWVbM10sdFsyXT1lWzZdLHRbM109ZVsxXSx0WzRdPWVbNF0sdFs1XT1lWzddLHRbNl09ZVsyXSx0WzddPWVbNV0sdFs4XT1lWzhdLHRoaXN9c2V0VXZUcmFuc2Zvcm0odCxlLG4sbyxpLGEscil7Y29uc3Qgcz1NYXRoLmNvcyhpKSxsPU1hdGguc2luKGkpO3JldHVybiB0aGlzLnNldChuKnMsbipsLC1uKihzKmErbCpyKSthK3QsLW8qbCxvKnMsLW8qKC1sKmErcypyKStyK2UsMCwwLDEpLHRoaXN9c2NhbGUodCxlKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIG5bMF0qPXQsblszXSo9dCxuWzZdKj10LG5bMV0qPWUsbls0XSo9ZSxuWzddKj1lLHRoaXN9cm90YXRlKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KSxvPXRoaXMuZWxlbWVudHMsaT1vWzBdLGE9b1szXSxyPW9bNl0scz1vWzFdLGw9b1s0XSxjPW9bN107cmV0dXJuIG9bMF09ZSppK24qcyxvWzNdPWUqYStuKmwsb1s2XT1lKnIrbipjLG9bMV09LW4qaStlKnMsb1s0XT0tbiphK2UqbCxvWzddPS1uKnIrZSpjLHRoaXN9dHJhbnNsYXRlKHQsZSl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiBuWzBdKz10Km5bMl0sblszXSs9dCpuWzVdLG5bNl0rPXQqbls4XSxuWzFdKz1lKm5bMl0sbls0XSs9ZSpuWzVdLG5bN10rPWUqbls4XSx0aGlzfWVxdWFscyh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8OTt0KyspaWYoZVt0XSE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuZWxlbWVudHNbbl09dFtuK2VdO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gdFtlXT1uWzBdLHRbZSsxXT1uWzFdLHRbZSsyXT1uWzJdLHRbZSszXT1uWzNdLHRbZSs0XT1uWzRdLHRbZSs1XT1uWzVdLHRbZSs2XT1uWzZdLHRbZSs3XT1uWzddLHRbZSs4XT1uWzhdLHR9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmZyb21BcnJheSh0aGlzLmVsZW1lbnRzKX19ZnVuY3Rpb24gQnN0KHQpe2ZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7LS1lKWlmKHRbZV0+NjU1MzUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gVnN0KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHQpfUxzdC5wcm90b3R5cGUuaXNNYXRyaXgzPSEwO2NvbnN0IFVzdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSxqc3Q9e2g6MCxzOjAsbDowfSxXc3Q9e2g6MCxzOjAsbDowfTtmdW5jdGlvbiBHc3QodCxlLG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuPDEvNj90KzYqKGUtdCkqbjpuPC41P2U6bjwyLzM/dCs2KihlLXQpKigyLzMtbik6dH1mdW5jdGlvbiBZc3QodCl7cmV0dXJuIHQ8LjA0MDQ1Py4wNzczOTkzODA4KnQ6TWF0aC5wb3coLjk0Nzg2NzI5ODYqdCsuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIHFzdCh0KXtyZXR1cm4gdDwuMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsLjQxNjY2KS0uMDU1fWNsYXNzIFpzdHtjb25zdHJ1Y3Rvcih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJnZvaWQgMD09PW4/dGhpcy5zZXQodCk6dGhpcy5zZXRSR0IodCxlLG4pfXNldCh0KXtyZXR1cm4gdCYmdC5pc0NvbG9yP3RoaXMuY29weSh0KToibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5zZXRIZXgodCk6InN0cmluZyI9PXR5cGVvZiB0JiZ0aGlzLnNldFN0eWxlKHQpLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLnI9dCx0aGlzLmc9dCx0aGlzLmI9dCx0aGlzfXNldEhleCh0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLHRoaXMucj0odD4+MTYmMjU1KS8yNTUsdGhpcy5nPSh0Pj44JjI1NSkvMjU1LHRoaXMuYj0oMjU1JnQpLzI1NSx0aGlzfXNldFJHQih0LGUsbil7cmV0dXJuIHRoaXMucj10LHRoaXMuZz1lLHRoaXMuYj1uLHRoaXN9c2V0SFNMKHQsZSxuKXtpZih0PShmdW5jdGlvbiBvKHQsZSl7cmV0dXJuKHQlZStlKSVlfSkodCwxKSxlPU5zdChlLDAsMSksbj1Oc3QobiwwLDEpLDA9PT1lKXRoaXMucj10aGlzLmc9dGhpcy5iPW47ZWxzZXtjb25zdCBvPW48PS41P24qKDErZSk6bitlLW4qZSxpPTIqbi1vO3RoaXMucj1Hc3QoaSxvLHQrMS8zKSx0aGlzLmc9R3N0KGksbyx0KSx0aGlzLmI9R3N0KGksbyx0LTEvMyl9cmV0dXJuIHRoaXN9c2V0U3R5bGUodCl7ZnVuY3Rpb24gZShlKXt2b2lkIDAhPT1lJiZwYXJzZUZsb2F0KGUpPDEmJmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAiK3QrIiB3aWxsIGJlIGlnbm9yZWQuIil9bGV0IG47aWYobj0vXigoPzpyZ2J8aHNsKWE/KVwoKFteXCldKilcKS8uZXhlYyh0KSl7bGV0IHQ7Y29uc3Qgbz1uWzJdO3N3aXRjaChuWzFdKXtjYXNlInJnYiI6Y2FzZSJyZ2JhIjppZih0PS9eXHMqKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigyNTUscGFyc2VJbnQodFsxXSwxMCkpLzI1NSx0aGlzLmc9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbMl0sMTApKS8yNTUsdGhpcy5iPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzNdLDEwKSkvMjU1LGUodFs0XSksdGhpcztpZih0PS9eXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigxMDAscGFyc2VJbnQodFsxXSwxMCkpLzEwMCx0aGlzLmc9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbMl0sMTApKS8xMDAsdGhpcy5iPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzNdLDEwKSkvMTAwLGUodFs0XSksdGhpczticmVhaztjYXNlImhzbCI6Y2FzZSJoc2xhIjppZih0PS9eXHMqKFxkKlwuP1xkKylccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKG8pKXtjb25zdCBuPXBhcnNlRmxvYXQodFsxXSkvMzYwLG89cGFyc2VJbnQodFsyXSwxMCkvMTAwLGk9cGFyc2VJbnQodFszXSwxMCkvMTAwO3JldHVybiBlKHRbNF0pLHRoaXMuc2V0SFNMKG4sbyxpKX19fWVsc2UgaWYobj0vXlwjKFtBLUZhLWZcZF0rKSQvLmV4ZWModCkpe2NvbnN0IHQ9blsxXSxlPXQubGVuZ3RoO2lmKDM9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMCksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMSkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMiksMTYpLzI1NSx0aGlzO2lmKDY9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMyksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoNCkrdC5jaGFyQXQoNSksMTYpLzI1NSx0aGlzfXJldHVybiB0JiZ0Lmxlbmd0aD4wP3RoaXMuc2V0Q29sb3JOYW1lKHQpOnRoaXN9c2V0Q29sb3JOYW1lKHQpe2NvbnN0IGU9VXN0W3QudG9Mb3dlckNhc2UoKV07cmV0dXJuIHZvaWQgMCE9PWU/dGhpcy5zZXRIZXgoZSk6Y29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogVW5rbm93biBjb2xvciAiK3QpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfWNvcHkodCl7cmV0dXJuIHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iLHRoaXN9Y29weVNSR0JUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5yPVlzdCh0LnIpLHRoaXMuZz1Zc3QodC5nKSx0aGlzLmI9WXN0KHQuYiksdGhpc31jb3B5TGluZWFyVG9TUkdCKHQpe3JldHVybiB0aGlzLnI9cXN0KHQuciksdGhpcy5nPXFzdCh0LmcpLHRoaXMuYj1xc3QodC5iKSx0aGlzfWNvbnZlcnRTUkdCVG9MaW5lYXIoKXtyZXR1cm4gdGhpcy5jb3B5U1JHQlRvTGluZWFyKHRoaXMpLHRoaXN9Y29udmVydExpbmVhclRvU1JHQigpe3JldHVybiB0aGlzLmNvcHlMaW5lYXJUb1NSR0IodGhpcyksdGhpc31nZXRIZXgoKXtyZXR1cm4gMjU1KnRoaXMucjw8MTZeMjU1KnRoaXMuZzw8OF4yNTUqdGhpcy5iPDwwfWdldEhleFN0cmluZygpe3JldHVybigiMDAwMDAwIit0aGlzLmdldEhleCgpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpfWdldEhTTCh0KXtjb25zdCBlPXRoaXMucixuPXRoaXMuZyxvPXRoaXMuYixpPU1hdGgubWF4KGUsbixvKSxhPU1hdGgubWluKGUsbixvKTtsZXQgcixzO2NvbnN0IGw9KGEraSkvMjtpZihhPT09aSlyPTAscz0wO2Vsc2V7Y29uc3QgdD1pLWE7c3dpdGNoKHM9bDw9LjU/dC8oaSthKTp0LygyLWktYSksaSl7Y2FzZSBlOnI9KG4tbykvdCsobjxvPzY6MCk7YnJlYWs7Y2FzZSBuOnI9KG8tZSkvdCsyO2JyZWFrO2Nhc2UgbzpyPShlLW4pL3QrNH1yLz02fXJldHVybiB0Lmg9cix0LnM9cyx0Lmw9bCx0fWdldFN0eWxlKCl7cmV0dXJuInJnYigiKygyNTUqdGhpcy5yfDApKyIsIisoMjU1KnRoaXMuZ3wwKSsiLCIrKDI1NSp0aGlzLmJ8MCkrIikifW9mZnNldEhTTCh0LGUsbil7cmV0dXJuIHRoaXMuZ2V0SFNMKGpzdCksanN0LmgrPXQsanN0LnMrPWUsanN0LmwrPW4sdGhpcy5zZXRIU0woanN0LmgsanN0LnMsanN0LmwpLHRoaXN9YWRkKHQpe3JldHVybiB0aGlzLnIrPXQucix0aGlzLmcrPXQuZyx0aGlzLmIrPXQuYix0aGlzfWFkZENvbG9ycyh0LGUpe3JldHVybiB0aGlzLnI9dC5yK2Uucix0aGlzLmc9dC5nK2UuZyx0aGlzLmI9dC5iK2UuYix0aGlzfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKz10LHRoaXMuZys9dCx0aGlzLmIrPXQsdGhpc31zdWIodCl7cmV0dXJuIHRoaXMucj1NYXRoLm1heCgwLHRoaXMuci10LnIpLHRoaXMuZz1NYXRoLm1heCgwLHRoaXMuZy10LmcpLHRoaXMuYj1NYXRoLm1heCgwLHRoaXMuYi10LmIpLHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMucio9dC5yLHRoaXMuZyo9dC5nLHRoaXMuYio9dC5iLHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMucio9dCx0aGlzLmcqPXQsdGhpcy5iKj10LHRoaXN9bGVycCh0LGUpe3JldHVybiB0aGlzLnIrPSh0LnItdGhpcy5yKSplLHRoaXMuZys9KHQuZy10aGlzLmcpKmUsdGhpcy5iKz0odC5iLXRoaXMuYikqZSx0aGlzfWxlcnBDb2xvcnModCxlLG4pe3JldHVybiB0aGlzLnI9dC5yKyhlLnItdC5yKSpuLHRoaXMuZz10LmcrKGUuZy10LmcpKm4sdGhpcy5iPXQuYisoZS5iLXQuYikqbix0aGlzfWxlcnBIU0wodCxlKXt0aGlzLmdldEhTTChqc3QpLHQuZ2V0SFNMKFdzdCk7Y29uc3Qgbj16c3QoanN0LmgsV3N0LmgsZSksbz16c3QoanN0LnMsV3N0LnMsZSksaT16c3QoanN0LmwsV3N0LmwsZSk7cmV0dXJuIHRoaXMuc2V0SFNMKG4sbyxpKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5yPT09dGhpcy5yJiZ0Lmc9PT10aGlzLmcmJnQuYj09PXRoaXMuYn1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLnI9dFtlXSx0aGlzLmc9dFtlKzFdLHRoaXMuYj10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLnIsdFtlKzFdPXRoaXMuZyx0W2UrMl09dGhpcy5iLHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLnI9dC5nZXRYKGUpLHRoaXMuZz10LmdldFkoZSksdGhpcy5iPXQuZ2V0WihlKSwhMD09PXQubm9ybWFsaXplZCYmKHRoaXMuci89MjU1LHRoaXMuZy89MjU1LHRoaXMuYi89MjU1KSx0aGlzfXRvSlNPTigpe3JldHVybiB0aGlzLmdldEhleCgpfX1sZXQgWHN0O1pzdC5OQU1FUz1Vc3QsWnN0LnByb3RvdHlwZS5pc0NvbG9yPSEwLFpzdC5wcm90b3R5cGUucj0xLFpzdC5wcm90b3R5cGUuZz0xLFpzdC5wcm90b3R5cGUuYj0xO2NsYXNzIEtzdHtzdGF0aWMgZ2V0RGF0YVVSTCh0KXtpZigvXmRhdGE6L2kudGVzdCh0LnNyYykpcmV0dXJuIHQuc3JjO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQpcmV0dXJuIHQuc3JjO2xldCBlO2lmKHQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCllPXQ7ZWxzZXt2b2lkIDA9PT1Yc3QmJihYc3Q9VnN0KCJjYW52YXMiKSksWHN0LndpZHRoPXQud2lkdGgsWHN0LmhlaWdodD10LmhlaWdodDtjb25zdCBuPVhzdC5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/bi5wdXRJbWFnZURhdGEodCwwLDApOm4uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLGU9WHN0fXJldHVybiBlLndpZHRoPjIwNDh8fGUuaGVpZ2h0PjIwNDg/KGNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5nZXREYXRhVVJMOiBJbWFnZSBjb252ZXJ0ZWQgdG8ganBnIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIix0KSxlLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsLjYpKTplLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIil9c3RhdGljIHNSR0JUb0xpbmVhcih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VCaXRtYXAmJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcCl7Y29uc3QgZT1Wc3QoImNhbnZhcyIpO2Uud2lkdGg9dC53aWR0aCxlLmhlaWdodD10LmhlaWdodDtjb25zdCBuPWUuZ2V0Q29udGV4dCgiMmQiKTtuLmRyYXdJbWFnZSh0LDAsMCx0LndpZHRoLHQuaGVpZ2h0KTtjb25zdCBvPW4uZ2V0SW1hZ2VEYXRhKDAsMCx0LndpZHRoLHQuaGVpZ2h0KSxpPW8uZGF0YTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKylpW3RdPTI1NSpZc3QoaVt0XS8yNTUpO3JldHVybiBuLnB1dEltYWdlRGF0YShvLDAsMCksZX1pZih0LmRhdGEpe2NvbnN0IGU9dC5kYXRhLnNsaWNlKDApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF09ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fGUgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheT9NYXRoLmZsb29yKDI1NSpZc3QoZVt0XS8yNTUpKTpZc3QoZVt0XSk7cmV0dXJue2RhdGE6ZSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5zUkdCVG9MaW5lYXIoKTogVW5zdXBwb3J0ZWQgaW1hZ2UgdHlwZS4gTm8gY29sb3Igc3BhY2UgY29udmVyc2lvbiBhcHBsaWVkLiIpLHR9fWxldCBKc3Q9MDtjbGFzcyBRc3QgZXh0ZW5kcyBEc3R7Y29uc3RydWN0b3IodD1Rc3QuREVGQVVMVF9JTUFHRSxlPVFzdC5ERUZBVUxUX01BUFBJTkcsbj0xMDAxLG89MTAwMSxpPTEwMDYsYT0xMDA4LHI9MTAyMyxzPTEwMDksbD0xLGM9M2UzKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOkpzdCsrfSksdGhpcy51dWlkPVRzdCgpLHRoaXMubmFtZT0iIix0aGlzLmltYWdlPXQsdGhpcy5taXBtYXBzPVtdLHRoaXMubWFwcGluZz1lLHRoaXMud3JhcFM9bix0aGlzLndyYXBUPW8sdGhpcy5tYWdGaWx0ZXI9aSx0aGlzLm1pbkZpbHRlcj1hLHRoaXMuYW5pc290cm9weT1sLHRoaXMuZm9ybWF0PXIsdGhpcy5pbnRlcm5hbEZvcm1hdD1udWxsLHRoaXMudHlwZT1zLHRoaXMub2Zmc2V0PW5ldyBGc3QoMCwwKSx0aGlzLnJlcGVhdD1uZXcgRnN0KDEsMSksdGhpcy5jZW50ZXI9bmV3IEZzdCgwLDApLHRoaXMucm90YXRpb249MCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITAsdGhpcy5tYXRyaXg9bmV3IExzdCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMCx0aGlzLnByZW11bHRpcGx5QWxwaGE9ITEsdGhpcy5mbGlwWT0hMCx0aGlzLnVucGFja0FsaWdubWVudD00LHRoaXMuZW5jb2Rpbmc9Yyx0aGlzLnVzZXJEYXRhPXt9LHRoaXMudmVyc2lvbj0wLHRoaXMub25VcGRhdGU9bnVsbCx0aGlzLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMSx0aGlzLm5lZWRzUE1SRU1VcGRhdGU9ITF9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguc2V0VXZUcmFuc2Zvcm0odGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5taXBtYXBzPXQubWlwbWFwcy5zbGljZSgwKSx0aGlzLm1hcHBpbmc9dC5tYXBwaW5nLHRoaXMud3JhcFM9dC53cmFwUyx0aGlzLndyYXBUPXQud3JhcFQsdGhpcy5tYWdGaWx0ZXI9dC5tYWdGaWx0ZXIsdGhpcy5taW5GaWx0ZXI9dC5taW5GaWx0ZXIsdGhpcy5hbmlzb3Ryb3B5PXQuYW5pc290cm9weSx0aGlzLmZvcm1hdD10LmZvcm1hdCx0aGlzLmludGVybmFsRm9ybWF0PXQuaW50ZXJuYWxGb3JtYXQsdGhpcy50eXBlPXQudHlwZSx0aGlzLm9mZnNldC5jb3B5KHQub2Zmc2V0KSx0aGlzLnJlcGVhdC5jb3B5KHQucmVwZWF0KSx0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLmdlbmVyYXRlTWlwbWFwcz10LmdlbmVyYXRlTWlwbWFwcyx0aGlzLnByZW11bHRpcGx5QWxwaGE9dC5wcmVtdWx0aXBseUFscGhhLHRoaXMuZmxpcFk9dC5mbGlwWSx0aGlzLnVucGFja0FsaWdubWVudD10LnVucGFja0FsaWdubWVudCx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdDtpZighZSYmdm9pZCAwIT09dC50ZXh0dXJlc1t0aGlzLnV1aWRdKXJldHVybiB0LnRleHR1cmVzW3RoaXMudXVpZF07Y29uc3Qgbj17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IlRleHR1cmUiLGdlbmVyYXRvcjoiVGV4dHVyZS50b0pTT04ifSx1dWlkOnRoaXMudXVpZCxuYW1lOnRoaXMubmFtZSxtYXBwaW5nOnRoaXMubWFwcGluZyxyZXBlYXQ6W3RoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueV0sb2Zmc2V0Olt0aGlzLm9mZnNldC54LHRoaXMub2Zmc2V0LnldLGNlbnRlcjpbdGhpcy5jZW50ZXIueCx0aGlzLmNlbnRlci55XSxyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHdyYXA6W3RoaXMud3JhcFMsdGhpcy53cmFwVF0sZm9ybWF0OnRoaXMuZm9ybWF0LHR5cGU6dGhpcy50eXBlLGVuY29kaW5nOnRoaXMuZW5jb2RpbmcsbWluRmlsdGVyOnRoaXMubWluRmlsdGVyLG1hZ0ZpbHRlcjp0aGlzLm1hZ0ZpbHRlcixhbmlzb3Ryb3B5OnRoaXMuYW5pc290cm9weSxmbGlwWTp0aGlzLmZsaXBZLHByZW11bHRpcGx5QWxwaGE6dGhpcy5wcmVtdWx0aXBseUFscGhhLHVucGFja0FsaWdubWVudDp0aGlzLnVucGFja0FsaWdubWVudH07aWYodm9pZCAwIT09dGhpcy5pbWFnZSl7Y29uc3Qgbz10aGlzLmltYWdlO2lmKHZvaWQgMD09PW8udXVpZCYmKG8udXVpZD1Uc3QoKSksIWUmJnZvaWQgMD09PXQuaW1hZ2VzW28udXVpZF0pe2xldCBlO2lmKEFycmF5LmlzQXJyYXkobykpe2U9W107Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKWUucHVzaCgkc3Qob1t0XS5pc0RhdGFUZXh0dXJlP29bdF0uaW1hZ2U6b1t0XSkpfWVsc2UgZT0kc3Qobyk7dC5pbWFnZXNbby51dWlkXT17dXVpZDpvLnV1aWQsdXJsOmV9fW4uaW1hZ2U9by51dWlkfXJldHVybiJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG4udXNlckRhdGE9dGhpcy51c2VyRGF0YSksZXx8KHQudGV4dHVyZXNbdGhpcy51dWlkXT1uKSxufWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9dHJhbnNmb3JtVXYodCl7aWYoMzAwIT09dGhpcy5tYXBwaW5nKXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgS3J0OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrO2Nhc2UgSnJ0OnQueD10Lng8MD8wOjE7YnJlYWs7Y2FzZSBRcnQ6dC54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik/TWF0aC5jZWlsKHQueCktdC54OnQueC1NYXRoLmZsb29yKHQueCl9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIEtydDp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIEpydDp0Lnk9dC55PDA/MDoxO2JyZWFrO2Nhc2UgUXJ0OnQueT0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LnkpJTIpP01hdGguY2VpbCh0LnkpLXQueTp0LnktTWF0aC5mbG9vcih0LnkpfXJldHVybiB0aGlzLmZsaXBZJiYodC55PTEtdC55KSx0fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX1mdW5jdGlvbiAkc3QodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/S3N0LmdldERhdGFVUkwodCk6dC5kYXRhP3tkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHQsdHlwZTp0LmRhdGEuY29uc3RydWN0b3IubmFtZX06KGNvbnNvbGUud2FybigiVEhSRUUuVGV4dHVyZTogVW5hYmxlIHRvIHNlcmlhbGl6ZSBUZXh0dXJlLiIpLHt9KX1Rc3QuREVGQVVMVF9JTUFHRT12b2lkIDAsUXN0LkRFRkFVTFRfTUFQUElORz0zMDAsUXN0LnByb3RvdHlwZS5pc1RleHR1cmU9ITA7Y2xhc3MgdGx0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLG89MSl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpcy53PW99Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMuen1zZXQgd2lkdGgodCl7dGhpcy56PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnd9c2V0IGhlaWdodCh0KXt0aGlzLnc9dH1zZXQodCxlLG4sbyl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXMudz1vLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzLnc9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldFcodCl7cmV0dXJuIHRoaXMudz10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2Nhc2UgMzp0aGlzLnc9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7Y2FzZSAzOnJldHVybiB0aGlzLnc7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy53KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzLnc9dm9pZCAwIT09dC53P3QudzoxLHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcy53Kz10LncsdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzLncrPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXMudz10LncrZS53LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXMudys9dC53KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzLnctPXQudyx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXMudy09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpcy53PXQudy1lLncsdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcy53Kj10LncsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpcy53Kj10LHRoaXN9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dGhpcy53LGE9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWFbMF0qZSthWzRdKm4rYVs4XSpvK2FbMTJdKmksdGhpcy55PWFbMV0qZSthWzVdKm4rYVs5XSpvK2FbMTNdKmksdGhpcy56PWFbMl0qZSthWzZdKm4rYVsxMF0qbythWzE0XSppLHRoaXMudz1hWzNdKmUrYVs3XSpuK2FbMTFdKm8rYVsxNV0qaSx0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfXNldEF4aXNBbmdsZUZyb21RdWF0ZXJuaW9uKHQpe3RoaXMudz0yKk1hdGguYWNvcyh0LncpO2NvbnN0IGU9TWF0aC5zcXJ0KDEtdC53KnQudyk7cmV0dXJuIGU8MWUtND8odGhpcy54PTEsdGhpcy55PTAsdGhpcy56PTApOih0aGlzLng9dC54L2UsdGhpcy55PXQueS9lLHRoaXMuej10LnovZSksdGhpc31zZXRBeGlzQW5nbGVGcm9tUm90YXRpb25NYXRyaXgodCl7bGV0IGUsbixvLGk7Y29uc3QgYT0uMDEscj0uMSxzPXQuZWxlbWVudHMsbD1zWzBdLGM9c1s0XSxkPXNbOF0scD1zWzFdLG09c1s1XSx1PXNbOV0sZj1zWzJdLGc9c1s2XSxoPXNbMTBdO2lmKE1hdGguYWJzKGMtcCk8YSYmTWF0aC5hYnMoZC1mKTxhJiZNYXRoLmFicyh1LWcpPGEpe2lmKE1hdGguYWJzKGMrcCk8ciYmTWF0aC5hYnMoZCtmKTxyJiZNYXRoLmFicyh1K2cpPHImJk1hdGguYWJzKGwrbStoLTMpPHIpcmV0dXJuIHRoaXMuc2V0KDEsMCwwLDApLHRoaXM7ZT1NYXRoLlBJO2NvbnN0IHQ9KGwrMSkvMixzPShtKzEpLzIsYj0oaCsxKS8yLHk9KGMrcCkvNCxfPShkK2YpLzQsQz0odStnKS80O3JldHVybiB0PnMmJnQ+Yj90PGE/KG49MCxvPS43MDcxMDY3ODEsaT0uNzA3MTA2NzgxKToobj1NYXRoLnNxcnQodCksbz15L24saT1fL24pOnM+Yj9zPGE/KG49LjcwNzEwNjc4MSxvPTAsaT0uNzA3MTA2NzgxKToobz1NYXRoLnNxcnQocyksbj15L28saT1DL28pOmI8YT8obj0uNzA3MTA2NzgxLG89LjcwNzEwNjc4MSxpPTApOihpPU1hdGguc3FydChiKSxuPV8vaSxvPUMvaSksdGhpcy5zZXQobixvLGksZSksdGhpc31sZXQgYj1NYXRoLnNxcnQoKGctdSkqKGctdSkrKGQtZikqKGQtZikrKHAtYykqKHAtYykpO3JldHVybiBNYXRoLmFicyhiKTwuMDAxJiYoYj0xKSx0aGlzLng9KGctdSkvYix0aGlzLnk9KGQtZikvYix0aGlzLno9KHAtYykvYix0aGlzLnc9TWF0aC5hY29zKChsK20raC0xKS8yKSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpcy53PU1hdGgubWluKHRoaXMudyx0LncpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5tYXgodGhpcy53LHQudyksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodC53LE1hdGgubWluKGUudyx0aGlzLncpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy53KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpcy53PU1hdGguZmxvb3IodGhpcy53KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpcy53PU1hdGguY2VpbCh0aGlzLncpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpcy53PU1hdGgucm91bmQodGhpcy53KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz10aGlzLnc8MD9NYXRoLmNlaWwodGhpcy53KTpNYXRoLmZsb29yKHRoaXMudyksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpcy53PS10aGlzLncsdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56K3RoaXMudyp0Lnd9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMud31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLncpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KStNYXRoLmFicyh0aGlzLncpfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzLncrPSh0LnctdGhpcy53KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpcy56PXQueisoZS56LXQueikqbix0aGlzLnc9dC53KyhlLnctdC53KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56JiZ0Lnc9PT10aGlzLnd9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXMudz10W2UrM10sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHRbZSszXT10aGlzLncsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpcy53PXQuZ2V0VyhlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzLnc9TWF0aC5yYW5kb20oKSx0aGlzfSpbU3ltYm9sLml0ZXJhdG9yXSgpe3lpZWxkIHRoaXMueCx5aWVsZCB0aGlzLnkseWllbGQgdGhpcy56LHlpZWxkIHRoaXMud319dGx0LnByb3RvdHlwZS5pc1ZlY3RvcjQ9ITA7Y2xhc3MgZWx0IGV4dGVuZHMgRHN0e2NvbnN0cnVjdG9yKHQsZSxuPXt9KXtzdXBlcigpLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9MSx0aGlzLnNjaXNzb3I9bmV3IHRsdCgwLDAsdCxlKSx0aGlzLnNjaXNzb3JUZXN0PSExLHRoaXMudmlld3BvcnQ9bmV3IHRsdCgwLDAsdCxlKSx0aGlzLnRleHR1cmU9bmV3IFFzdCh2b2lkIDAsbi5tYXBwaW5nLG4ud3JhcFMsbi53cmFwVCxuLm1hZ0ZpbHRlcixuLm1pbkZpbHRlcixuLmZvcm1hdCxuLnR5cGUsbi5hbmlzb3Ryb3B5LG4uZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmltYWdlPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOjF9LHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dm9pZCAwIT09bi5nZW5lcmF0ZU1pcG1hcHMmJm4uZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5pbnRlcm5hbEZvcm1hdD12b2lkIDAhPT1uLmludGVybmFsRm9ybWF0P24uaW50ZXJuYWxGb3JtYXQ6bnVsbCx0aGlzLnRleHR1cmUubWluRmlsdGVyPXZvaWQgMCE9PW4ubWluRmlsdGVyP24ubWluRmlsdGVyOnRzdCx0aGlzLmRlcHRoQnVmZmVyPXZvaWQgMD09PW4uZGVwdGhCdWZmZXJ8fG4uZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXZvaWQgMCE9PW4uc3RlbmNpbEJ1ZmZlciYmbi5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXZvaWQgMCE9PW4uZGVwdGhUZXh0dXJlP24uZGVwdGhUZXh0dXJlOm51bGx9c2V0VGV4dHVyZSh0KXt0LmltYWdlPXt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodCxkZXB0aDp0aGlzLmRlcHRofSx0aGlzLnRleHR1cmU9dH1zZXRTaXplKHQsZSxuPTEpe3RoaXMud2lkdGg9PT10JiZ0aGlzLmhlaWdodD09PWUmJnRoaXMuZGVwdGg9PT1ufHwodGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5kZXB0aD1uLHRoaXMudGV4dHVyZS5pbWFnZS53aWR0aD10LHRoaXMudGV4dHVyZS5pbWFnZS5oZWlnaHQ9ZSx0aGlzLnRleHR1cmUuaW1hZ2UuZGVwdGg9bix0aGlzLmRpc3Bvc2UoKSksdGhpcy52aWV3cG9ydC5zZXQoMCwwLHQsZSksdGhpcy5zY2lzc29yLnNldCgwLDAsdCxlKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuY29weSh0LnZpZXdwb3J0KSx0aGlzLnRleHR1cmU9dC50ZXh0dXJlLmNsb25lKCksdGhpcy50ZXh0dXJlLmltYWdlPU9iamVjdC5hc3NpZ24oe30sdC50ZXh0dXJlLmltYWdlKSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fWVsdC5wcm90b3R5cGUuaXNXZWJHTFJlbmRlclRhcmdldD0hMDsoY2xhc3MgZXh0ZW5kcyBlbHR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSk7Y29uc3Qgbz10aGlzLnRleHR1cmU7dGhpcy50ZXh0dXJlPVtdO2ZvcihsZXQgdD0wO3Q8bjt0KyspdGhpcy50ZXh0dXJlW3RdPW8uY2xvbmUoKX1zZXRTaXplKHQsZSxuPTEpe2lmKHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1uKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW47Zm9yKGxldCBvPTAsaT10aGlzLnRleHR1cmUubGVuZ3RoO288aTtvKyspdGhpcy50ZXh0dXJlW29dLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlW29dLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZVtvXS5pbWFnZS5kZXB0aD1uO3RoaXMuZGlzcG9zZSgpfXJldHVybiB0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpLHRoaXN9Y29weSh0KXt0aGlzLmRpc3Bvc2UoKSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzLnRleHR1cmUubGVuZ3RoPTA7Zm9yKGxldCBlPTAsbj10LnRleHR1cmUubGVuZ3RoO2U8bjtlKyspdGhpcy50ZXh0dXJlW2VdPXQudGV4dHVyZVtlXS5jbG9uZSgpO3JldHVybiB0aGlzfX0pLnByb3RvdHlwZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzPSEwO2NsYXNzIG5sdCBleHRlbmRzIGVsdHtjb25zdHJ1Y3Rvcih0LGUsbj17fSl7c3VwZXIodCxlLG4pLHRoaXMuc2FtcGxlcz00LHRoaXMuaWdub3JlRGVwdGhGb3JNdWx0aXNhbXBsZUNvcHk9dm9pZCAwPT09bi5pZ25vcmVEZXB0aHx8bi5pZ25vcmVEZXB0aCx0aGlzLnVzZVJlbmRlclRvVGV4dHVyZT12b2lkIDAhPT1uLnVzZVJlbmRlclRvVGV4dHVyZSYmbi51c2VSZW5kZXJUb1RleHR1cmUsdGhpcy51c2VSZW5kZXJidWZmZXI9ITE9PT10aGlzLnVzZVJlbmRlclRvVGV4dHVyZX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLnNhbXBsZXM9dC5zYW1wbGVzLHRoaXMudXNlUmVuZGVyVG9UZXh0dXJlPXQudXNlUmVuZGVyVG9UZXh0dXJlLHRoaXMudXNlUmVuZGVyYnVmZmVyPXQudXNlUmVuZGVyYnVmZmVyLHRoaXN9fW5sdC5wcm90b3R5cGUuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0PSEwO2NsYXNzIG9sdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxvPTEpe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX3c9b31zdGF0aWMgc2xlcnAodCxlLG4sbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogU3RhdGljIC5zbGVycCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBxbS5zbGVycFF1YXRlcm5pb25zKCBxYSwgcWIsIHQgKSBpbnN0ZWFkLiIpLG4uc2xlcnBRdWF0ZXJuaW9ucyh0LGUsbyl9c3RhdGljIHNsZXJwRmxhdCh0LGUsbixvLGksYSxyKXtsZXQgcz1uW28rMF0sbD1uW28rMV0sYz1uW28rMl0sZD1uW28rM107Y29uc3QgcD1pW2ErMF0sbT1pW2ErMV0sdT1pW2ErMl0sZj1pW2ErM107aWYoMD09PXIpcmV0dXJuIHRbZSswXT1zLHRbZSsxXT1sLHRbZSsyXT1jLHZvaWQodFtlKzNdPWQpO2lmKDE9PT1yKXJldHVybiB0W2UrMF09cCx0W2UrMV09bSx0W2UrMl09dSx2b2lkKHRbZSszXT1mKTtpZihkIT09Znx8cyE9PXB8fGwhPT1tfHxjIT09dSl7bGV0IHQ9MS1yO2NvbnN0IGU9cypwK2wqbStjKnUrZCpmLG49ZT49MD8xOi0xLG89MS1lKmU7aWYobz5OdW1iZXIuRVBTSUxPTil7Y29uc3QgaT1NYXRoLnNxcnQobyksYT1NYXRoLmF0YW4yKGksZSpuKTt0PU1hdGguc2luKHQqYSkvaSxyPU1hdGguc2luKHIqYSkvaX1jb25zdCBpPXIqbjtpZihzPXMqdCtwKmksbD1sKnQrbSppLGM9Yyp0K3UqaSxkPWQqdCtmKmksdD09PTEtcil7Y29uc3QgdD0xL01hdGguc3FydChzKnMrbCpsK2MqYytkKmQpO3MqPXQsbCo9dCxjKj10LGQqPXR9fXRbZV09cyx0W2UrMV09bCx0W2UrMl09Yyx0W2UrM109ZH1zdGF0aWMgbXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxlLG4sbyxpLGEpe2NvbnN0IHI9bltvXSxzPW5bbysxXSxsPW5bbysyXSxjPW5bbyszXSxkPWlbYV0scD1pW2ErMV0sbT1pW2ErMl0sdT1pW2ErM107cmV0dXJuIHRbZV09cip1K2MqZCtzKm0tbCpwLHRbZSsxXT1zKnUrYypwK2wqZC1yKm0sdFtlKzJdPWwqdStjKm0rcipwLXMqZCx0W2UrM109Yyp1LXIqZC1zKnAtbCptLHR9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHcoKXtyZXR1cm4gdGhpcy5fd31zZXQgdyh0KXt0aGlzLl93PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LGUsbixvKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fdz1vLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96LHRoaXMuX3cpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC54LHRoaXMuX3k9dC55LHRoaXMuX3o9dC56LHRoaXMuX3c9dC53LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21FdWxlcih0LGUpe2lmKCF0fHwhdC5pc0V1bGVyKXRocm93IG5ldyBFcnJvcigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3Qgbj10Ll94LG89dC5feSxpPXQuX3osYT10Ll9vcmRlcixyPU1hdGguY29zLHM9TWF0aC5zaW4sbD1yKG4vMiksYz1yKG8vMiksZD1yKGkvMikscD1zKG4vMiksbT1zKG8vMiksdT1zKGkvMik7c3dpdGNoKGEpe2Nhc2UiWFlaIjp0aGlzLl94PXAqYypkK2wqbSp1LHRoaXMuX3k9bCptKmQtcCpjKnUsdGhpcy5fej1sKmMqdStwKm0qZCx0aGlzLl93PWwqYypkLXAqbSp1O2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PXAqYypkK2wqbSp1LHRoaXMuX3k9bCptKmQtcCpjKnUsdGhpcy5fej1sKmMqdS1wKm0qZCx0aGlzLl93PWwqYypkK3AqbSp1O2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PXAqYypkLWwqbSp1LHRoaXMuX3k9bCptKmQrcCpjKnUsdGhpcy5fej1sKmMqdStwKm0qZCx0aGlzLl93PWwqYypkLXAqbSp1O2JyZWFrO2Nhc2UiWllYIjp0aGlzLl94PXAqYypkLWwqbSp1LHRoaXMuX3k9bCptKmQrcCpjKnUsdGhpcy5fej1sKmMqdS1wKm0qZCx0aGlzLl93PWwqYypkK3AqbSp1O2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl94PXAqYypkK2wqbSp1LHRoaXMuX3k9bCptKmQrcCpjKnUsdGhpcy5fej1sKmMqdS1wKm0qZCx0aGlzLl93PWwqYypkLXAqbSp1O2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl94PXAqYypkLWwqbSp1LHRoaXMuX3k9bCptKmQtcCpjKnUsdGhpcy5fej1sKmMqdStwKm0qZCx0aGlzLl93PWwqYypkK3AqbSp1O2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIithKX1yZXR1cm4hMSE9PWUmJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21BeGlzQW5nbGUodCxlKXtjb25zdCBuPWUvMixvPU1hdGguc2luKG4pO3JldHVybiB0aGlzLl94PXQueCpvLHRoaXMuX3k9dC55Km8sdGhpcy5fej10Lnoqbyx0aGlzLl93PU1hdGguY29zKG4pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KXtjb25zdCBlPXQuZWxlbWVudHMsbj1lWzBdLG89ZVs0XSxpPWVbOF0sYT1lWzFdLHI9ZVs1XSxzPWVbOV0sbD1lWzJdLGM9ZVs2XSxkPWVbMTBdLHA9bityK2Q7aWYocD4wKXtjb25zdCB0PS41L01hdGguc3FydChwKzEpO3RoaXMuX3c9LjI1L3QsdGhpcy5feD0oYy1zKSp0LHRoaXMuX3k9KGktbCkqdCx0aGlzLl96PShhLW8pKnR9ZWxzZSBpZihuPnImJm4+ZCl7Y29uc3QgdD0yKk1hdGguc3FydCgxK24tci1kKTt0aGlzLl93PShjLXMpL3QsdGhpcy5feD0uMjUqdCx0aGlzLl95PShvK2EpL3QsdGhpcy5fej0oaStsKS90fWVsc2UgaWYocj5kKXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErci1uLWQpO3RoaXMuX3c9KGktbCkvdCx0aGlzLl94PShvK2EpL3QsdGhpcy5feT0uMjUqdCx0aGlzLl96PShzK2MpL3R9ZWxzZXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErZC1uLXIpO3RoaXMuX3c9KGEtbykvdCx0aGlzLl94PShpK2wpL3QsdGhpcy5feT0ocytjKS90LHRoaXMuX3o9LjI1KnR9cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Vbml0VmVjdG9ycyh0LGUpe2xldCBuPXQuZG90KGUpKzE7cmV0dXJuIG48TnVtYmVyLkVQU0lMT04/KG49MCxNYXRoLmFicyh0LngpPk1hdGguYWJzKHQueik/KHRoaXMuX3g9LXQueSx0aGlzLl95PXQueCx0aGlzLl96PTAsdGhpcy5fdz1uKToodGhpcy5feD0wLHRoaXMuX3k9LXQueix0aGlzLl96PXQueSx0aGlzLl93PW4pKToodGhpcy5feD10LnkqZS56LXQueiplLnksdGhpcy5feT10LnoqZS54LXQueCplLnosdGhpcy5fej10LngqZS55LXQueSplLngsdGhpcy5fdz1uKSx0aGlzLm5vcm1hbGl6ZSgpfWFuZ2xlVG8odCl7cmV0dXJuIDIqTWF0aC5hY29zKE1hdGguYWJzKE5zdCh0aGlzLmRvdCh0KSwtMSwxKSkpfXJvdGF0ZVRvd2FyZHModCxlKXtjb25zdCBuPXRoaXMuYW5nbGVUbyh0KTtpZigwPT09bilyZXR1cm4gdGhpcztjb25zdCBvPU1hdGgubWluKDEsZS9uKTtyZXR1cm4gdGhpcy5zbGVycCh0LG8pLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMSl9aW52ZXJ0KCl7cmV0dXJuIHRoaXMuY29uanVnYXRlKCl9Y29uanVnYXRlKCl7cmV0dXJuIHRoaXMuX3gqPS0xLHRoaXMuX3kqPS0xLHRoaXMuX3oqPS0xLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy5feCp0Ll94K3RoaXMuX3kqdC5feSt0aGlzLl96KnQuX3ordGhpcy5fdyp0Ll93fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fd31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fdyl9bm9ybWFsaXplKCl7bGV0IHQ9dGhpcy5sZW5ndGgoKTtyZXR1cm4gMD09PXQ/KHRoaXMuX3g9MCx0aGlzLl95PTAsdGhpcy5fej0wLHRoaXMuX3c9MSk6KHQ9MS90LHRoaXMuX3g9dGhpcy5feCp0LHRoaXMuX3k9dGhpcy5feSp0LHRoaXMuX3o9dGhpcy5feip0LHRoaXMuX3c9dGhpcy5fdyp0KSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5UXVhdGVybmlvbnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LGUpKTp0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQsdGhpcyl9bXVsdGlwbHlRdWF0ZXJuaW9ucyh0LGUpe2NvbnN0IG49dC5feCxvPXQuX3ksaT10Ll96LGE9dC5fdyxyPWUuX3gscz1lLl95LGw9ZS5feixjPWUuX3c7cmV0dXJuIHRoaXMuX3g9bipjK2EqcitvKmwtaSpzLHRoaXMuX3k9bypjK2EqcytpKnItbipsLHRoaXMuX3o9aSpjK2EqbCtuKnMtbypyLHRoaXMuX3c9YSpjLW4qci1vKnMtaSpsLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwKHQsZSl7aWYoMD09PWUpcmV0dXJuIHRoaXM7aWYoMT09PWUpcmV0dXJuIHRoaXMuY29weSh0KTtjb25zdCBuPXRoaXMuX3gsbz10aGlzLl95LGk9dGhpcy5feixhPXRoaXMuX3c7bGV0IHI9YSp0Ll93K24qdC5feCtvKnQuX3kraSp0Ll96O2lmKHI8MD8odGhpcy5fdz0tdC5fdyx0aGlzLl94PS10Ll94LHRoaXMuX3k9LXQuX3ksdGhpcy5fej0tdC5feixyPS1yKTp0aGlzLmNvcHkodCkscj49MSlyZXR1cm4gdGhpcy5fdz1hLHRoaXMuX3g9bix0aGlzLl95PW8sdGhpcy5fej1pLHRoaXM7Y29uc3Qgcz0xLXIqcjtpZihzPD1OdW1iZXIuRVBTSUxPTil7Y29uc3QgdD0xLWU7cmV0dXJuIHRoaXMuX3c9dCphK2UqdGhpcy5fdyx0aGlzLl94PXQqbitlKnRoaXMuX3gsdGhpcy5feT10Km8rZSp0aGlzLl95LHRoaXMuX3o9dCppK2UqdGhpcy5feix0aGlzLm5vcm1hbGl6ZSgpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNvbnN0IGw9TWF0aC5zcXJ0KHMpLGM9TWF0aC5hdGFuMihsLHIpLGQ9TWF0aC5zaW4oKDEtZSkqYykvbCxwPU1hdGguc2luKGUqYykvbDtyZXR1cm4gdGhpcy5fdz1hKmQrdGhpcy5fdypwLHRoaXMuX3g9bipkK3RoaXMuX3gqcCx0aGlzLl95PW8qZCt0aGlzLl95KnAsdGhpcy5fej1pKmQrdGhpcy5feipwLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwUXVhdGVybmlvbnModCxlLG4pe3JldHVybiB0aGlzLmNvcHkodCkuc2xlcnAoZSxuKX1yYW5kb20oKXtjb25zdCB0PU1hdGgucmFuZG9tKCksZT1NYXRoLnNxcnQoMS10KSxuPU1hdGguc3FydCh0KSxvPTIqTWF0aC5QSSpNYXRoLnJhbmRvbSgpLGk9MipNYXRoLlBJKk1hdGgucmFuZG9tKCk7cmV0dXJuIHRoaXMuc2V0KGUqTWF0aC5jb3MobyksbipNYXRoLnNpbihpKSxuKk1hdGguY29zKGkpLGUqTWF0aC5zaW4obykpfWVxdWFscyh0KXtyZXR1cm4gdC5feD09PXRoaXMuX3gmJnQuX3k9PT10aGlzLl95JiZ0Ll96PT09dGhpcy5feiYmdC5fdz09PXRoaXMuX3d9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy5feD10W2VdLHRoaXMuX3k9dFtlKzFdLHRoaXMuX3o9dFtlKzJdLHRoaXMuX3c9dFtlKzNdLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMuX3gsdFtlKzFdPXRoaXMuX3ksdFtlKzJdPXRoaXMuX3osdFtlKzNdPXRoaXMuX3csdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMuX3g9dC5nZXRYKGUpLHRoaXMuX3k9dC5nZXRZKGUpLHRoaXMuX3o9dC5nZXRaKGUpLHRoaXMuX3c9dC5nZXRXKGUpLHRoaXN9X29uQ2hhbmdlKHQpe3JldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPXQsdGhpc31fb25DaGFuZ2VDYWxsYmFjaygpe319b2x0LnByb3RvdHlwZS5pc1F1YXRlcm5pb249ITA7Y2xhc3MgaWx0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bn1zZXQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj10aGlzLnopLHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldENvbXBvbmVudCh0LGUpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PWU7YnJlYWs7Y2FzZSAxOnRoaXMueT1lO2JyZWFrO2Nhc2UgMjp0aGlzLno9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnopfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpcy56PXQueitlLnosdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXMueis9dC56KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzLno9dC56LWUueix0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5VmVjdG9ycyh0LGUpKToodGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcyl9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXN9bXVsdGlwbHlWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngqZS54LHRoaXMueT10LnkqZS55LHRoaXMuej10LnoqZS56LHRoaXN9YXBwbHlFdWxlcih0KXtyZXR1cm4gdCYmdC5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlFdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIiksdGhpcy5hcHBseVF1YXRlcm5pb24ocmx0LnNldEZyb21FdWxlcih0KSl9YXBwbHlBeGlzQW5nbGUodCxlKXtyZXR1cm4gdGhpcy5hcHBseVF1YXRlcm5pb24ocmx0LnNldEZyb21BeGlzQW5nbGUodCxlKSl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWlbMF0qZStpWzNdKm4raVs2XSpvLHRoaXMueT1pWzFdKmUraVs0XSpuK2lbN10qbyx0aGlzLno9aVsyXSplK2lbNV0qbitpWzhdKm8sdGhpc31hcHBseU5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDModCkubm9ybWFsaXplKCl9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dC5lbGVtZW50cyxhPTEvKGlbM10qZStpWzddKm4raVsxMV0qbytpWzE1XSk7cmV0dXJuIHRoaXMueD0oaVswXSplK2lbNF0qbitpWzhdKm8raVsxMl0pKmEsdGhpcy55PShpWzFdKmUraVs1XSpuK2lbOV0qbytpWzEzXSkqYSx0aGlzLno9KGlbMl0qZStpWzZdKm4raVsxMF0qbytpWzE0XSkqYSx0aGlzfWFwcGx5UXVhdGVybmlvbih0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxvPXRoaXMueixpPXQueCxhPXQueSxyPXQueixzPXQudyxsPXMqZSthKm8tcipuLGM9cypuK3IqZS1pKm8sZD1zKm8raSpuLWEqZSxwPS1pKmUtYSpuLXIqbztyZXR1cm4gdGhpcy54PWwqcytwKi1pK2MqLXItZCotYSx0aGlzLnk9YypzK3AqLWErZCotaS1sKi1yLHRoaXMuej1kKnMrcCotcitsKi1hLWMqLWksdGhpc31wcm9qZWN0KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkSW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQucHJvamVjdGlvbk1hdHJpeCl9dW5wcm9qZWN0KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCl9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LG89dGhpcy56LGk9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWlbMF0qZStpWzRdKm4raVs4XSpvLHRoaXMueT1pWzFdKmUraVs1XSpuK2lbOV0qbyx0aGlzLno9aVsyXSplK2lbNl0qbitpWzEwXSpvLHRoaXMubm9ybWFsaXplKCl9ZGl2aWRlKHQpe3JldHVybiB0aGlzLngvPXQueCx0aGlzLnkvPXQueSx0aGlzLnovPXQueix0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpcy56PU1hdGgubWF4KHRoaXMueix0LnopLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQueixNYXRoLm1pbihlLnosdGhpcy56KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnopKSx0aGlzfWNsYW1wTGVuZ3RoKHQsZSl7Y29uc3Qgbj10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihufHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsbikpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpcy56PU1hdGguZmxvb3IodGhpcy56KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpcy56PU1hdGgucm91bmQodGhpcy56KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXMuej0tdGhpcy56LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0LnkrdGhpcy56KnQuen1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMuen1sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpK01hdGguYWJzKHRoaXMueil9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzLnorPSh0LnotdGhpcy56KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpcy56PXQueisoZS56LXQueikqbix0aGlzfWNyb3NzKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmNyb3NzKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuY3Jvc3NWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmNyb3NzVmVjdG9ycyh0LGUpKTp0aGlzLmNyb3NzVmVjdG9ycyh0aGlzLHQpfWNyb3NzVmVjdG9ycyh0LGUpe2NvbnN0IG49dC54LG89dC55LGk9dC56LGE9ZS54LHI9ZS55LHM9ZS56O3JldHVybiB0aGlzLng9bypzLWkqcix0aGlzLnk9aSphLW4qcyx0aGlzLno9bipyLW8qYSx0aGlzfXByb2plY3RPblZlY3Rvcih0KXtjb25zdCBlPXQubGVuZ3RoU3EoKTtpZigwPT09ZSlyZXR1cm4gdGhpcy5zZXQoMCwwLDApO2NvbnN0IG49dC5kb3QodGhpcykvZTtyZXR1cm4gdGhpcy5jb3B5KHQpLm11bHRpcGx5U2NhbGFyKG4pfXByb2plY3RPblBsYW5lKHQpe3JldHVybiBhbHQuY29weSh0aGlzKS5wcm9qZWN0T25WZWN0b3IodCksdGhpcy5zdWIoYWx0KX1yZWZsZWN0KHQpe3JldHVybiB0aGlzLnN1YihhbHQuY29weSh0KS5tdWx0aXBseVNjYWxhcigyKnRoaXMuZG90KHQpKSl9YW5nbGVUbyh0KXtjb25zdCBlPU1hdGguc3FydCh0aGlzLmxlbmd0aFNxKCkqdC5sZW5ndGhTcSgpKTtpZigwPT09ZSlyZXR1cm4gTWF0aC5QSS8yO2NvbnN0IG49dGhpcy5kb3QodCkvZTtyZXR1cm4gTWF0aC5hY29zKE5zdChuLC0xLDEpKX1kaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VUb1NxdWFyZWQodCl7Y29uc3QgZT10aGlzLngtdC54LG49dGhpcy55LXQueSxvPXRoaXMuei10Lno7cmV0dXJuIGUqZStuKm4rbypvfW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpK01hdGguYWJzKHRoaXMuei10LnopfXNldEZyb21TcGhlcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnBoaSx0LnRoZXRhKX1zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQsZSxuKXtjb25zdCBvPU1hdGguc2luKGUpKnQ7cmV0dXJuIHRoaXMueD1vKk1hdGguc2luKG4pLHRoaXMueT1NYXRoLmNvcyhlKSp0LHRoaXMuej1vKk1hdGguY29zKG4pLHRoaXN9c2V0RnJvbUN5bGluZHJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnRoZXRhLHQueSl9c2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQqTWF0aC5zaW4oZSksdGhpcy55PW4sdGhpcy56PXQqTWF0aC5jb3MoZSksdGhpc31zZXRGcm9tTWF0cml4UG9zaXRpb24odCl7Y29uc3QgZT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9ZVsxMl0sdGhpcy55PWVbMTNdLHRoaXMuej1lWzE0XSx0aGlzfXNldEZyb21NYXRyaXhTY2FsZSh0KXtjb25zdCBlPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLG49dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMSkubGVuZ3RoKCksbz10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gdGhpcy54PWUsdGhpcy55PW4sdGhpcy56PW8sdGhpc31zZXRGcm9tTWF0cml4Q29sdW1uKHQsZSl7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsNCplKX1zZXRGcm9tTWF0cml4M0NvbHVtbih0LGUpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLDMqZSl9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMueD10W2VdLHRoaXMueT10W2UrMV0sdGhpcy56PXRbZSsyXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHRbZSsyXT10aGlzLnosdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpc31yYW5kb21EaXJlY3Rpb24oKXtjb25zdCB0PTIqKE1hdGgucmFuZG9tKCktLjUpLGU9TWF0aC5yYW5kb20oKSpNYXRoLlBJKjIsbj1NYXRoLnNxcnQoMS10KioyKTtyZXR1cm4gdGhpcy54PW4qTWF0aC5jb3MoZSksdGhpcy55PW4qTWF0aC5zaW4oZSksdGhpcy56PXQsdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55LHlpZWxkIHRoaXMuen19aWx0LnByb3RvdHlwZS5pc1ZlY3RvcjM9ITA7Y29uc3QgYWx0PW5ldyBpbHQscmx0PW5ldyBvbHQ7Y2xhc3Mgc2x0e2NvbnN0cnVjdG9yKHQ9bmV3IGlsdCgxLzAsMS8wLDEvMCksZT1uZXcgaWx0KC0xLzAsLTEvMCwtMS8wKSl7dGhpcy5taW49dCx0aGlzLm1heD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tQXJyYXkodCl7bGV0IGU9MS8wLG49MS8wLG89MS8wLGk9LTEvMCxhPS0xLzAscj0tMS8wO2ZvcihsZXQgcz0wLGw9dC5sZW5ndGg7czxsO3MrPTMpe2NvbnN0IGw9dFtzXSxjPXRbcysxXSxkPXRbcysyXTtsPGUmJihlPWwpLGM8biYmKG49YyksZDxvJiYobz1kKSxsPmkmJihpPWwpLGM+YSYmKGE9YyksZD5yJiYocj1kKX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbixvKSx0aGlzLm1heC5zZXQoaSxhLHIpLHRoaXN9c2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KXtsZXQgZT0xLzAsbj0xLzAsbz0xLzAsaT0tMS8wLGE9LTEvMCxyPS0xLzA7Zm9yKGxldCBzPTAsbD10LmNvdW50O3M8bDtzKyspe2NvbnN0IGw9dC5nZXRYKHMpLGM9dC5nZXRZKHMpLGQ9dC5nZXRaKHMpO2w8ZSYmKGU9bCksYzxuJiYobj1jKSxkPG8mJihvPWQpLGw+aSYmKGk9bCksYz5hJiYoYT1jKSxkPnImJihyPWQpfXJldHVybiB0aGlzLm1pbi5zZXQoZSxuLG8pLHRoaXMubWF4LnNldChpLGEsciksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2NvbnN0IG49Y2x0LmNvcHkoZSkubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihuKSx0aGlzLm1heC5jb3B5KHQpLmFkZChuKSx0aGlzfXNldEZyb21PYmplY3QodCxlPSExKXtyZXR1cm4gdGhpcy5tYWtlRW1wdHkoKSx0aGlzLmV4cGFuZEJ5T2JqZWN0KHQsZSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5taW4uY29weSh0Lm1pbiksdGhpcy5tYXguY29weSh0Lm1heCksdGhpc31tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5taW4ueD10aGlzLm1pbi55PXRoaXMubWluLno9MS8wLHRoaXMubWF4Lng9dGhpcy5tYXgueT10aGlzLm1heC56PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fHx0aGlzLm1heC56PHRoaXMubWluLnp9Z2V0Q2VudGVyKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9ZXhwYW5kQnlPYmplY3QodCxlPSExKXt0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCExKTtjb25zdCBuPXQuZ2VvbWV0cnk7aWYodm9pZCAwIT09bilpZihlJiZudWxsIT1uLmF0dHJpYnV0ZXMmJnZvaWQgMCE9PW4uYXR0cmlidXRlcy5wb3NpdGlvbil7Y29uc3QgZT1uLmF0dHJpYnV0ZXMucG9zaXRpb247Zm9yKGxldCBuPTAsbz1lLmNvdW50O248bztuKyspY2x0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxuKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5leHBhbmRCeVBvaW50KGNsdCl9ZWxzZSBudWxsPT09bi5ib3VuZGluZ0JveCYmbi5jb21wdXRlQm91bmRpbmdCb3goKSxkbHQuY29weShuLmJvdW5kaW5nQm94KSxkbHQuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMudW5pb24oZGx0KTtjb25zdCBvPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKXRoaXMuZXhwYW5kQnlPYmplY3Qob1t0XSxlKTtyZXR1cm4gdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4Lnl8fHQuejx0aGlzLm1pbi56fHx0Lno+dGhpcy5tYXgueil9Y29udGFpbnNCb3godCl7cmV0dXJuIHRoaXMubWluLng8PXQubWluLngmJnQubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PXQubWluLnkmJnQubWF4Lnk8PXRoaXMubWF4LnkmJnRoaXMubWluLno8PXQubWluLnomJnQubWF4Lno8PXRoaXMubWF4Lnp9Z2V0UGFyYW1ldGVyKHQsZSl7cmV0dXJuIGUuc2V0KCh0LngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKHQueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSwodC56LXRoaXMubWluLnopLyh0aGlzLm1heC56LXRoaXMubWluLnopKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55fHx0Lm1heC56PHRoaXMubWluLnp8fHQubWluLno+dGhpcy5tYXgueil9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5jbGFtcFBvaW50KHQuY2VudGVyLGNsdCksY2x0LmRpc3RhbmNlVG9TcXVhcmVkKHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9aW50ZXJzZWN0c1BsYW5lKHQpe2xldCBlLG47cmV0dXJuIHQubm9ybWFsLng+MD8oZT10Lm5vcm1hbC54KnRoaXMubWluLngsbj10Lm5vcm1hbC54KnRoaXMubWF4LngpOihlPXQubm9ybWFsLngqdGhpcy5tYXgueCxuPXQubm9ybWFsLngqdGhpcy5taW4ueCksdC5ub3JtYWwueT4wPyhlKz10Lm5vcm1hbC55KnRoaXMubWluLnksbis9dC5ub3JtYWwueSp0aGlzLm1heC55KTooZSs9dC5ub3JtYWwueSp0aGlzLm1heC55LG4rPXQubm9ybWFsLnkqdGhpcy5taW4ueSksdC5ub3JtYWwuej4wPyhlKz10Lm5vcm1hbC56KnRoaXMubWluLnosbis9dC5ub3JtYWwueip0aGlzLm1heC56KTooZSs9dC5ub3JtYWwueip0aGlzLm1heC56LG4rPXQubm9ybWFsLnoqdGhpcy5taW4ueiksZTw9LXQuY29uc3RhbnQmJm4+PS10LmNvbnN0YW50fWludGVyc2VjdHNUcmlhbmdsZSh0KXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4hMTt0aGlzLmdldENlbnRlcihibHQpLHlsdC5zdWJWZWN0b3JzKHRoaXMubWF4LGJsdCkscGx0LnN1YlZlY3RvcnModC5hLGJsdCksbWx0LnN1YlZlY3RvcnModC5iLGJsdCksdWx0LnN1YlZlY3RvcnModC5jLGJsdCksZmx0LnN1YlZlY3RvcnMobWx0LHBsdCksZ2x0LnN1YlZlY3RvcnModWx0LG1sdCksaGx0LnN1YlZlY3RvcnMocGx0LHVsdCk7bGV0IGU9WzAsLWZsdC56LGZsdC55LDAsLWdsdC56LGdsdC55LDAsLWhsdC56LGhsdC55LGZsdC56LDAsLWZsdC54LGdsdC56LDAsLWdsdC54LGhsdC56LDAsLWhsdC54LC1mbHQueSxmbHQueCwwLC1nbHQueSxnbHQueCwwLC1obHQueSxobHQueCwwXTtyZXR1cm4hIU1sdChlLHBsdCxtbHQsdWx0LHlsdCkmJihlPVsxLDAsMCwwLDEsMCwwLDAsMV0sISFNbHQoZSxwbHQsbWx0LHVsdCx5bHQpJiYoX2x0LmNyb3NzVmVjdG9ycyhmbHQsZ2x0KSxlPVtfbHQueCxfbHQueSxfbHQuel0sTWx0KGUscGx0LG1sdCx1bHQseWx0KSkpfWNsYW1wUG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIGNsdC5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIodCkubGVuZ3RoKCl9Z2V0Qm91bmRpbmdTcGhlcmUodCl7cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKHQuY2VudGVyKSx0LnJhZGl1cz0uNSp0aGlzLmdldFNpemUoY2x0KS5sZW5ndGgoKSx0fWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXMuaXNFbXB0eSgpJiZ0aGlzLm1ha2VFbXB0eSgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCl8fChsbHRbMF0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksbGx0WzFdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLGxsdFsyXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxsbHRbM10uc2V0KHRoaXMubWluLngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksbGx0WzRdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLGxsdFs1XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxsbHRbNl0uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksbGx0WzddLnNldCh0aGlzLm1heC54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0RnJvbVBvaW50cyhsbHQpKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19c2x0LnByb3RvdHlwZS5pc0JveDM9ITA7Y29uc3QgbGx0PVtuZXcgaWx0LG5ldyBpbHQsbmV3IGlsdCxuZXcgaWx0LG5ldyBpbHQsbmV3IGlsdCxuZXcgaWx0LG5ldyBpbHRdLGNsdD1uZXcgaWx0LGRsdD1uZXcgc2x0LHBsdD1uZXcgaWx0LG1sdD1uZXcgaWx0LHVsdD1uZXcgaWx0LGZsdD1uZXcgaWx0LGdsdD1uZXcgaWx0LGhsdD1uZXcgaWx0LGJsdD1uZXcgaWx0LHlsdD1uZXcgaWx0LF9sdD1uZXcgaWx0LENsdD1uZXcgaWx0O2Z1bmN0aW9uIE1sdCh0LGUsbixvLGkpe2ZvcihsZXQgYT0wLHI9dC5sZW5ndGgtMzthPD1yO2ErPTMpe0NsdC5mcm9tQXJyYXkodCxhKTtjb25zdCByPWkueCpNYXRoLmFicyhDbHQueCkraS55Kk1hdGguYWJzKENsdC55KStpLnoqTWF0aC5hYnMoQ2x0LnopLHM9ZS5kb3QoQ2x0KSxsPW4uZG90KENsdCksYz1vLmRvdChDbHQpO2lmKE1hdGgubWF4KC1NYXRoLm1heChzLGwsYyksTWF0aC5taW4ocyxsLGMpKT5yKXJldHVybiExfXJldHVybiEwfWNvbnN0IHZsdD1uZXcgc2x0LHhsdD1uZXcgaWx0LE9sdD1uZXcgaWx0LFBsdD1uZXcgaWx0O2NsYXNzIHdsdHtjb25zdHJ1Y3Rvcih0PW5ldyBpbHQsZT0tMSl7dGhpcy5jZW50ZXI9dCx0aGlzLnJhZGl1cz1lfXNldCh0LGUpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQpLHRoaXMucmFkaXVzPWUsdGhpc31zZXRGcm9tUG9pbnRzKHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlcjt2b2lkIDAhPT1lP24uY29weShlKTp2bHQuc2V0RnJvbVBvaW50cyh0KS5nZXRDZW50ZXIobik7bGV0IG89MDtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspbz1NYXRoLm1heChvLG4uZGlzdGFuY2VUb1NxdWFyZWQodFtlXSkpO3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQobyksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5yYWRpdXM8MH1tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5jZW50ZXIuc2V0KDAsMCwwKSx0aGlzLnJhZGl1cz0tMSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD10aGlzLnJhZGl1cyp0aGlzLnJhZGl1c31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLmNlbnRlciktdGhpcy5yYWRpdXN9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucmFkaXVzK3QucmFkaXVzO3JldHVybiB0LmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PWUqZX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNTcGhlcmUodGhpcyl9aW50ZXJzZWN0c1BsYW5lKHQpe3JldHVybiBNYXRoLmFicyh0LmRpc3RhbmNlVG9Qb2ludCh0aGlzLmNlbnRlcikpPD10aGlzLnJhZGl1c31jbGFtcFBvaW50KHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0KTtyZXR1cm4gZS5jb3B5KHQpLG4+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMmJihlLnN1Yih0aGlzLmNlbnRlcikubm9ybWFsaXplKCksZS5tdWx0aXBseVNjYWxhcih0aGlzLnJhZGl1cykuYWRkKHRoaXMuY2VudGVyKSksZX1nZXRCb3VuZGluZ0JveCh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/KHQubWFrZUVtcHR5KCksdCk6KHQuc2V0KHRoaXMuY2VudGVyLHRoaXMuY2VudGVyKSx0LmV4cGFuZEJ5U2NhbGFyKHRoaXMucmFkaXVzKSx0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFwcGx5TWF0cml4NCh0KSx0aGlzLnJhZGl1cz10aGlzLnJhZGl1cyp0LmdldE1heFNjYWxlT25BeGlzKCksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFkZCh0KSx0aGlzfWV4cGFuZEJ5UG9pbnQodCl7UGx0LnN1YlZlY3RvcnModCx0aGlzLmNlbnRlcik7Y29uc3QgZT1QbHQubGVuZ3RoU3EoKTtpZihlPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzKXtjb25zdCB0PU1hdGguc3FydChlKSxuPS41Kih0LXRoaXMucmFkaXVzKTt0aGlzLmNlbnRlci5hZGQoUGx0Lm11bHRpcGx5U2NhbGFyKG4vdCkpLHRoaXMucmFkaXVzKz1ufXJldHVybiB0aGlzfXVuaW9uKHQpe3JldHVybiEwPT09dGhpcy5jZW50ZXIuZXF1YWxzKHQuY2VudGVyKT9PbHQuc2V0KDAsMCwxKS5tdWx0aXBseVNjYWxhcih0LnJhZGl1cyk6T2x0LnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQucmFkaXVzKSx0aGlzLmV4cGFuZEJ5UG9pbnQoeGx0LmNvcHkodC5jZW50ZXIpLmFkZChPbHQpKSx0aGlzLmV4cGFuZEJ5UG9pbnQoeGx0LmNvcHkodC5jZW50ZXIpLnN1YihPbHQpKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5jZW50ZXIuZXF1YWxzKHRoaXMuY2VudGVyKSYmdC5yYWRpdXM9PT10aGlzLnJhZGl1c31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y29uc3Qga2x0PW5ldyBpbHQsU2x0PW5ldyBpbHQsRGx0PW5ldyBpbHQsUmx0PW5ldyBpbHQsRWx0PW5ldyBpbHQsQWx0PW5ldyBpbHQsVGx0PW5ldyBpbHQ7Y2xhc3MgTmx0e2NvbnN0cnVjdG9yKHQ9bmV3IGlsdCxlPW5ldyBpbHQoMCwwLC0xKSl7dGhpcy5vcmlnaW49dCx0aGlzLmRpcmVjdGlvbj1lfXNldCh0LGUpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHQpLHRoaXMuZGlyZWN0aW9uLmNvcHkoZSksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHQub3JpZ2luKSx0aGlzLmRpcmVjdGlvbi5jb3B5KHQuZGlyZWN0aW9uKSx0aGlzfWF0KHQsZSl7cmV0dXJuIGUuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMub3JpZ2luKX1sb29rQXQodCl7cmV0dXJuIHRoaXMuZGlyZWN0aW9uLmNvcHkodCkuc3ViKHRoaXMub3JpZ2luKS5ub3JtYWxpemUoKSx0aGlzfXJlY2FzdCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0aGlzLmF0KHQsa2x0KSksdGhpc31jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSl7ZS5zdWJWZWN0b3JzKHQsdGhpcy5vcmlnaW4pO2NvbnN0IG49ZS5kb3QodGhpcy5kaXJlY3Rpb24pO3JldHVybiBuPDA/ZS5jb3B5KHRoaXMub3JpZ2luKTplLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKG4pLmFkZCh0aGlzLm9yaWdpbil9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVNxVG9Qb2ludCh0KSl9ZGlzdGFuY2VTcVRvUG9pbnQodCl7Y29uc3QgZT1rbHQuc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKS5kb3QodGhpcy5kaXJlY3Rpb24pO3JldHVybiBlPDA/dGhpcy5vcmlnaW4uZGlzdGFuY2VUb1NxdWFyZWQodCk6KGtsdC5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihlKS5hZGQodGhpcy5vcmlnaW4pLGtsdC5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VTcVRvU2VnbWVudCh0LGUsbixvKXtTbHQuY29weSh0KS5hZGQoZSkubXVsdGlwbHlTY2FsYXIoLjUpLERsdC5jb3B5KGUpLnN1Yih0KS5ub3JtYWxpemUoKSxSbHQuY29weSh0aGlzLm9yaWdpbikuc3ViKFNsdCk7Y29uc3QgaT0uNSp0LmRpc3RhbmNlVG8oZSksYT0tdGhpcy5kaXJlY3Rpb24uZG90KERsdCkscj1SbHQuZG90KHRoaXMuZGlyZWN0aW9uKSxzPS1SbHQuZG90KERsdCksbD1SbHQubGVuZ3RoU3EoKSxjPU1hdGguYWJzKDEtYSphKTtsZXQgZCxwLG0sdTtpZihjPjApaWYoZD1hKnMtcixwPWEqci1zLHU9aSpjLGQ+PTApaWYocD49LXUpaWYocDw9dSl7Y29uc3QgdD0xL2M7ZCo9dCxwKj10LG09ZCooZCthKnArMipyKStwKihhKmQrcCsyKnMpK2x9ZWxzZSBwPWksZD1NYXRoLm1heCgwLC0oYSpwK3IpKSxtPS1kKmQrcCoocCsyKnMpK2w7ZWxzZSBwPS1pLGQ9TWF0aC5tYXgoMCwtKGEqcCtyKSksbT0tZCpkK3AqKHArMipzKStsO2Vsc2UgcDw9LXU/KGQ9TWF0aC5tYXgoMCwtKC1hKmkrcikpLHA9ZD4wPy1pOk1hdGgubWluKE1hdGgubWF4KC1pLC1zKSxpKSxtPS1kKmQrcCoocCsyKnMpK2wpOnA8PXU/KGQ9MCxwPU1hdGgubWluKE1hdGgubWF4KC1pLC1zKSxpKSxtPXAqKHArMipzKStsKTooZD1NYXRoLm1heCgwLC0oYSppK3IpKSxwPWQ+MD9pOk1hdGgubWluKE1hdGgubWF4KC1pLC1zKSxpKSxtPS1kKmQrcCoocCsyKnMpK2wpO2Vsc2UgcD1hPjA/LWk6aSxkPU1hdGgubWF4KDAsLShhKnArcikpLG09LWQqZCtwKihwKzIqcykrbDtyZXR1cm4gbiYmbi5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihkKS5hZGQodGhpcy5vcmlnaW4pLG8mJm8uY29weShEbHQpLm11bHRpcGx5U2NhbGFyKHApLmFkZChTbHQpLG19aW50ZXJzZWN0U3BoZXJlKHQsZSl7a2x0LnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5vcmlnaW4pO2NvbnN0IG49a2x0LmRvdCh0aGlzLmRpcmVjdGlvbiksbz1rbHQuZG90KGtsdCktbipuLGk9dC5yYWRpdXMqdC5yYWRpdXM7aWYobz5pKXJldHVybiBudWxsO2NvbnN0IGE9TWF0aC5zcXJ0KGktbykscj1uLWEscz1uK2E7cmV0dXJuIHI8MCYmczwwP251bGw6dGhpcy5hdChyPDA/czpyLGUpfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31kaXN0YW5jZVRvUGxhbmUodCl7Y29uc3QgZT10Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pO2lmKDA9PT1lKXJldHVybiAwPT09dC5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pPzA6bnVsbDtjb25zdCBuPS0odGhpcy5vcmlnaW4uZG90KHQubm9ybWFsKSt0LmNvbnN0YW50KS9lO3JldHVybiBuPj0wP246bnVsbH1pbnRlcnNlY3RQbGFuZSh0LGUpe2NvbnN0IG49dGhpcy5kaXN0YW5jZVRvUGxhbmUodCk7cmV0dXJuIG51bGw9PT1uP251bGw6dGhpcy5hdChuLGUpfWludGVyc2VjdHNQbGFuZSh0KXtjb25zdCBlPXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKSplPDB9aW50ZXJzZWN0Qm94KHQsZSl7bGV0IG4sbyxpLGEscixzO2NvbnN0IGw9MS90aGlzLmRpcmVjdGlvbi54LGM9MS90aGlzLmRpcmVjdGlvbi55LGQ9MS90aGlzLmRpcmVjdGlvbi56LHA9dGhpcy5vcmlnaW47cmV0dXJuIGw+PTA/KG49KHQubWluLngtcC54KSpsLG89KHQubWF4LngtcC54KSpsKToobj0odC5tYXgueC1wLngpKmwsbz0odC5taW4ueC1wLngpKmwpLGM+PTA/KGk9KHQubWluLnktcC55KSpjLGE9KHQubWF4LnktcC55KSpjKTooaT0odC5tYXgueS1wLnkpKmMsYT0odC5taW4ueS1wLnkpKmMpLG4+YXx8aT5vP251bGw6KChpPm58fG4hPW4pJiYobj1pKSwoYTxvfHxvIT1vKSYmKG89YSksZD49MD8ocj0odC5taW4uei1wLnopKmQscz0odC5tYXguei1wLnopKmQpOihyPSh0Lm1heC56LXAueikqZCxzPSh0Lm1pbi56LXAueikqZCksbj5zfHxyPm8/bnVsbDooKHI+bnx8biE9bikmJihuPXIpLChzPG98fG8hPW8pJiYobz1zKSxvPDA/bnVsbDp0aGlzLmF0KG4+PTA/bjpvLGUpKSl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gbnVsbCE9PXRoaXMuaW50ZXJzZWN0Qm94KHQsa2x0KX1pbnRlcnNlY3RUcmlhbmdsZSh0LGUsbixvLGkpe0VsdC5zdWJWZWN0b3JzKGUsdCksQWx0LnN1YlZlY3RvcnMobix0KSxUbHQuY3Jvc3NWZWN0b3JzKEVsdCxBbHQpO2xldCBhLHI9dGhpcy5kaXJlY3Rpb24uZG90KFRsdCk7aWYocj4wKXtpZihvKXJldHVybiBudWxsO2E9MX1lbHNle2lmKCEocjwwKSlyZXR1cm4gbnVsbDthPS0xLHI9LXJ9Umx0LnN1YlZlY3RvcnModGhpcy5vcmlnaW4sdCk7Y29uc3Qgcz1hKnRoaXMuZGlyZWN0aW9uLmRvdChBbHQuY3Jvc3NWZWN0b3JzKFJsdCxBbHQpKTtpZihzPDApcmV0dXJuIG51bGw7Y29uc3QgbD1hKnRoaXMuZGlyZWN0aW9uLmRvdChFbHQuY3Jvc3MoUmx0KSk7aWYobDwwKXJldHVybiBudWxsO2lmKHMrbD5yKXJldHVybiBudWxsO2NvbnN0IGM9LWEqUmx0LmRvdChUbHQpO3JldHVybiBjPDA/bnVsbDp0aGlzLmF0KGMvcixpKX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMub3JpZ2luLmFwcGx5TWF0cml4NCh0KSx0aGlzLmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQub3JpZ2luLmVxdWFscyh0aGlzLm9yaWdpbikmJnQuZGlyZWN0aW9uLmVxdWFscyh0aGlzLmRpcmVjdGlvbil9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNsYXNzIHpsdHtjb25zdHJ1Y3Rvcigpe3RoaXMuZWxlbWVudHM9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyl7Y29uc3QgaD10aGlzLmVsZW1lbnRzO3JldHVybiBoWzBdPXQsaFs0XT1lLGhbOF09bixoWzEyXT1vLGhbMV09aSxoWzVdPWEsaFs5XT1yLGhbMTNdPXMsaFsyXT1sLGhbNl09YyxoWzEwXT1kLGhbMTRdPXAsaFszXT1tLGhbN109dSxoWzExXT1mLGhbMTVdPWcsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB6bHQpLmZyb21BcnJheSh0aGlzLmVsZW1lbnRzKX1jb3B5KHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMF09blswXSxlWzFdPW5bMV0sZVsyXT1uWzJdLGVbM109blszXSxlWzRdPW5bNF0sZVs1XT1uWzVdLGVbNl09bls2XSxlWzddPW5bN10sZVs4XT1uWzhdLGVbOV09bls5XSxlWzEwXT1uWzEwXSxlWzExXT1uWzExXSxlWzEyXT1uWzEyXSxlWzEzXT1uWzEzXSxlWzE0XT1uWzE0XSxlWzE1XT1uWzE1XSx0aGlzfWNvcHlQb3NpdGlvbih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiBlWzEyXT1uWzEyXSxlWzEzXT1uWzEzXSxlWzE0XT1uWzE0XSx0aGlzfXNldEZyb21NYXRyaXgzKHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy5zZXQoZVswXSxlWzNdLGVbNl0sMCxlWzFdLGVbNF0sZVs3XSwwLGVbMl0sZVs1XSxlWzhdLDAsMCwwLDAsMSksdGhpc31leHRyYWN0QmFzaXModCxlLG4pe3JldHVybiB0LnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywwKSxlLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywxKSxuLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywyKSx0aGlzfW1ha2VCYXNpcyh0LGUsbil7cmV0dXJuIHRoaXMuc2V0KHQueCxlLngsbi54LDAsdC55LGUueSxuLnksMCx0LnosZS56LG4ueiwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdFJvdGF0aW9uKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHMsbz0xL0lsdC5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMCkubGVuZ3RoKCksaT0xL0lsdC5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMSkubGVuZ3RoKCksYT0xL0lsdC5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMikubGVuZ3RoKCk7cmV0dXJuIGVbMF09blswXSpvLGVbMV09blsxXSpvLGVbMl09blsyXSpvLGVbM109MCxlWzRdPW5bNF0qaSxlWzVdPW5bNV0qaSxlWzZdPW5bNl0qaSxlWzddPTAsZVs4XT1uWzhdKmEsZVs5XT1uWzldKmEsZVsxMF09blsxMF0qYSxlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsdGhpc31tYWtlUm90YXRpb25Gcm9tRXVsZXIodCl7dCYmdC5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubWFrZVJvdGF0aW9uRnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYSBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpO2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQueCxvPXQueSxpPXQueixhPU1hdGguY29zKG4pLHI9TWF0aC5zaW4obikscz1NYXRoLmNvcyhvKSxsPU1hdGguc2luKG8pLGM9TWF0aC5jb3MoaSksZD1NYXRoLnNpbihpKTtpZigiWFlaIj09PXQub3JkZXIpe2NvbnN0IHQ9YSpjLG49YSpkLG89cipjLGk9cipkO2VbMF09cypjLGVbNF09LXMqZCxlWzhdPWwsZVsxXT1uK28qbCxlWzVdPXQtaSpsLGVbOV09LXIqcyxlWzJdPWktdCpsLGVbNl09bytuKmwsZVsxMF09YSpzfWVsc2UgaWYoIllYWiI9PT10Lm9yZGVyKXtjb25zdCB0PXMqYyxuPXMqZCxvPWwqYyxpPWwqZDtlWzBdPXQraSpyLGVbNF09bypyLW4sZVs4XT1hKmwsZVsxXT1hKmQsZVs1XT1hKmMsZVs5XT0tcixlWzJdPW4qci1vLGVbNl09aSt0KnIsZVsxMF09YSpzfWVsc2UgaWYoIlpYWSI9PT10Lm9yZGVyKXtjb25zdCB0PXMqYyxuPXMqZCxvPWwqYyxpPWwqZDtlWzBdPXQtaSpyLGVbNF09LWEqZCxlWzhdPW8rbipyLGVbMV09bitvKnIsZVs1XT1hKmMsZVs5XT1pLXQqcixlWzJdPS1hKmwsZVs2XT1yLGVbMTBdPWEqc31lbHNlIGlmKCJaWVgiPT09dC5vcmRlcil7Y29uc3QgdD1hKmMsbj1hKmQsbz1yKmMsaT1yKmQ7ZVswXT1zKmMsZVs0XT1vKmwtbixlWzhdPXQqbCtpLGVbMV09cypkLGVbNV09aSpsK3QsZVs5XT1uKmwtbyxlWzJdPS1sLGVbNl09cipzLGVbMTBdPWEqc31lbHNlIGlmKCJZWlgiPT09dC5vcmRlcil7Y29uc3QgdD1hKnMsbj1hKmwsbz1yKnMsaT1yKmw7ZVswXT1zKmMsZVs0XT1pLXQqZCxlWzhdPW8qZCtuLGVbMV09ZCxlWzVdPWEqYyxlWzldPS1yKmMsZVsyXT0tbCpjLGVbNl09bipkK28sZVsxMF09dC1pKmR9ZWxzZSBpZigiWFpZIj09PXQub3JkZXIpe2NvbnN0IHQ9YSpzLG49YSpsLG89cipzLGk9cipsO2VbMF09cypjLGVbNF09LWQsZVs4XT1sKmMsZVsxXT10KmQraSxlWzVdPWEqYyxlWzldPW4qZC1vLGVbMl09bypkLW4sZVs2XT1yKmMsZVsxMF09aSpkK3R9cmV0dXJuIGVbM109MCxlWzddPTAsZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMuY29tcG9zZShGbHQsdCxMbHQpfWxvb2tBdCh0LGUsbil7Y29uc3Qgbz10aGlzLmVsZW1lbnRzO3JldHVybiBVbHQuc3ViVmVjdG9ycyh0LGUpLDA9PT1VbHQubGVuZ3RoU3EoKSYmKFVsdC56PTEpLFVsdC5ub3JtYWxpemUoKSxCbHQuY3Jvc3NWZWN0b3JzKG4sVWx0KSwwPT09Qmx0Lmxlbmd0aFNxKCkmJigxPT09TWF0aC5hYnMobi56KT9VbHQueCs9MWUtNDpVbHQueis9MWUtNCxVbHQubm9ybWFsaXplKCksQmx0LmNyb3NzVmVjdG9ycyhuLFVsdCkpLEJsdC5ub3JtYWxpemUoKSxWbHQuY3Jvc3NWZWN0b3JzKFVsdCxCbHQpLG9bMF09Qmx0Lngsb1s0XT1WbHQueCxvWzhdPVVsdC54LG9bMV09Qmx0Lnksb1s1XT1WbHQueSxvWzldPVVsdC55LG9bMl09Qmx0Lnosb1s2XT1WbHQueixvWzEwXT1VbHQueix0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlNYXRyaWNlcyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsZSkpOnRoaXMubXVsdGlwbHlNYXRyaWNlcyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModCx0aGlzKX1tdWx0aXBseU1hdHJpY2VzKHQsZSl7Y29uc3Qgbj10LmVsZW1lbnRzLG89ZS5lbGVtZW50cyxpPXRoaXMuZWxlbWVudHMsYT1uWzBdLHI9bls0XSxzPW5bOF0sbD1uWzEyXSxjPW5bMV0sZD1uWzVdLHA9bls5XSxtPW5bMTNdLHU9blsyXSxmPW5bNl0sZz1uWzEwXSxoPW5bMTRdLGI9blszXSx5PW5bN10sXz1uWzExXSxDPW5bMTVdLE09b1swXSx2PW9bNF0seD1vWzhdLE89b1sxMl0sUD1vWzFdLHc9b1s1XSxrPW9bOV0sUz1vWzEzXSxEPW9bMl0sUj1vWzZdLEU9b1sxMF0sQT1vWzE0XSxUPW9bM10sTj1vWzddLHo9b1sxMV0sST1vWzE1XTtyZXR1cm4gaVswXT1hKk0rcipQK3MqRCtsKlQsaVs0XT1hKnYrcip3K3MqUitsKk4saVs4XT1hKngrciprK3MqRStsKnosaVsxMl09YSpPK3IqUytzKkErbCpJLGlbMV09YypNK2QqUCtwKkQrbSpULGlbNV09Yyp2K2QqdytwKlIrbSpOLGlbOV09Yyp4K2QqaytwKkUrbSp6LGlbMTNdPWMqTytkKlMrcCpBK20qSSxpWzJdPXUqTStmKlArZypEK2gqVCxpWzZdPXUqditmKncrZypSK2gqTixpWzEwXT11KngrZiprK2cqRStoKnosaVsxNF09dSpPK2YqUytnKkEraCpJLGlbM109YipNK3kqUCtfKkQrQypULGlbN109Yip2K3kqdytfKlIrQypOLGlbMTFdPWIqeCt5KmsrXypFK0MqeixpWzE1XT1iKk8reSpTK18qQStDKkksdGhpc31tdWx0aXBseVNjYWxhcih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVs0XSo9dCxlWzhdKj10LGVbMTJdKj10LGVbMV0qPXQsZVs1XSo9dCxlWzldKj10LGVbMTNdKj10LGVbMl0qPXQsZVs2XSo9dCxlWzEwXSo9dCxlWzE0XSo9dCxlWzNdKj10LGVbN10qPXQsZVsxMV0qPXQsZVsxNV0qPXQsdGhpc31kZXRlcm1pbmFudCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzRdLG89dFs4XSxpPXRbMTJdLGE9dFsxXSxyPXRbNV0scz10WzldLGw9dFsxM10sYz10WzJdLGQ9dFs2XSxwPXRbMTBdLG09dFsxNF07cmV0dXJuIHRbM10qKCtpKnMqZC1vKmwqZC1pKnIqcCtuKmwqcCtvKnIqbS1uKnMqbSkrdFs3XSooK2UqcyptLWUqbCpwK2kqYSpwLW8qYSptK28qbCpjLWkqcypjKSt0WzExXSooK2UqbCpkLWUqciptLWkqYSpkK24qYSptK2kqcipjLW4qbCpjKSt0WzE1XSooLW8qcipjLWUqcypkK2UqcipwK28qYSpkLW4qYSpwK24qcypjKX10cmFuc3Bvc2UoKXtjb25zdCB0PXRoaXMuZWxlbWVudHM7bGV0IGU7cmV0dXJuIGU9dFsxXSx0WzFdPXRbNF0sdFs0XT1lLGU9dFsyXSx0WzJdPXRbOF0sdFs4XT1lLGU9dFs2XSx0WzZdPXRbOV0sdFs5XT1lLGU9dFszXSx0WzNdPXRbMTJdLHRbMTJdPWUsZT10WzddLHRbN109dFsxM10sdFsxM109ZSxlPXRbMTFdLHRbMTFdPXRbMTRdLHRbMTRdPWUsdGhpc31zZXRQb3NpdGlvbih0LGUsbil7Y29uc3Qgbz10aGlzLmVsZW1lbnRzO3JldHVybiB0LmlzVmVjdG9yMz8ob1sxMl09dC54LG9bMTNdPXQueSxvWzE0XT10LnopOihvWzEyXT10LG9bMTNdPWUsb1sxNF09biksdGhpc31pbnZlcnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFsxXSxvPXRbMl0saT10WzNdLGE9dFs0XSxyPXRbNV0scz10WzZdLGw9dFs3XSxjPXRbOF0sZD10WzldLHA9dFsxMF0sbT10WzExXSx1PXRbMTJdLGY9dFsxM10sZz10WzE0XSxoPXRbMTVdLGI9ZCpnKmwtZipwKmwrZipzKm0tcipnKm0tZCpzKmgrcipwKmgseT11KnAqbC1jKmcqbC11KnMqbSthKmcqbStjKnMqaC1hKnAqaCxfPWMqZipsLXUqZCpsK3UqciptLWEqZiptLWMqcipoK2EqZCpoLEM9dSpkKnMtYypmKnMtdSpyKnArYSpmKnArYypyKmctYSpkKmcsTT1lKmIrbip5K28qXytpKkM7aWYoMD09PU0pcmV0dXJuIHRoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDApO2NvbnN0IHY9MS9NO3JldHVybiB0WzBdPWIqdix0WzFdPShmKnAqaS1kKmcqaS1mKm8qbStuKmcqbStkKm8qaC1uKnAqaCkqdix0WzJdPShyKmcqaS1mKnMqaStmKm8qbC1uKmcqbC1yKm8qaCtuKnMqaCkqdix0WzNdPShkKnMqaS1yKnAqaS1kKm8qbCtuKnAqbCtyKm8qbS1uKnMqbSkqdix0WzRdPXkqdix0WzVdPShjKmcqaS11KnAqaSt1Km8qbS1lKmcqbS1jKm8qaCtlKnAqaCkqdix0WzZdPSh1KnMqaS1hKmcqaS11Km8qbCtlKmcqbCthKm8qaC1lKnMqaCkqdix0WzddPShhKnAqaS1jKnMqaStjKm8qbC1lKnAqbC1hKm8qbStlKnMqbSkqdix0WzhdPV8qdix0WzldPSh1KmQqaS1jKmYqaS11Km4qbStlKmYqbStjKm4qaC1lKmQqaCkqdix0WzEwXT0oYSpmKmktdSpyKmkrdSpuKmwtZSpmKmwtYSpuKmgrZSpyKmgpKnYsdFsxMV09KGMqcippLWEqZCppLWMqbipsK2UqZCpsK2EqbiptLWUqciptKSp2LHRbMTJdPUMqdix0WzEzXT0oYypmKm8tdSpkKm8rdSpuKnAtZSpmKnAtYypuKmcrZSpkKmcpKnYsdFsxNF09KHUqcipvLWEqZipvLXUqbipzK2UqZipzK2EqbipnLWUqcipnKSp2LHRbMTVdPShhKmQqby1jKnIqbytjKm4qcy1lKmQqcy1hKm4qcCtlKnIqcCkqdix0aGlzfXNjYWxlKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQueCxvPXQueSxpPXQuejtyZXR1cm4gZVswXSo9bixlWzRdKj1vLGVbOF0qPWksZVsxXSo9bixlWzVdKj1vLGVbOV0qPWksZVsyXSo9bixlWzZdKj1vLGVbMTBdKj1pLGVbM10qPW4sZVs3XSo9byxlWzExXSo9aSx0aGlzfWdldE1heFNjYWxlT25BeGlzKCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzO3JldHVybiBNYXRoLnNxcnQoTWF0aC5tYXgodFswXSp0WzBdK3RbMV0qdFsxXSt0WzJdKnRbMl0sdFs0XSp0WzRdK3RbNV0qdFs1XSt0WzZdKnRbNl0sdFs4XSp0WzhdK3RbOV0qdFs5XSt0WzEwXSp0WzEwXSkpfW1ha2VUcmFuc2xhdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLHQsMCwxLDAsZSwwLDAsMSxuLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWCh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMCxlLC1uLDAsMCxuLGUsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvblkodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChlLDAsbiwwLDAsMSwwLDAsLW4sMCxlLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25aKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoZSwtbiwwLDAsbixlLDAsMCwwLDAsMSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uQXhpcyh0LGUpe2NvbnN0IG49TWF0aC5jb3MoZSksbz1NYXRoLnNpbihlKSxpPTEtbixhPXQueCxyPXQueSxzPXQueixsPWkqYSxjPWkqcjtyZXR1cm4gdGhpcy5zZXQobCphK24sbCpyLW8qcyxsKnMrbypyLDAsbCpyK28qcyxjKnIrbixjKnMtbyphLDAsbCpzLW8qcixjKnMrbyphLGkqcypzK24sMCwwLDAsMCwxKSx0aGlzfW1ha2VTY2FsZSh0LGUsbil7cmV0dXJuIHRoaXMuc2V0KHQsMCwwLDAsMCxlLDAsMCwwLDAsbiwwLDAsMCwwLDEpLHRoaXN9bWFrZVNoZWFyKHQsZSxuLG8saSxhKXtyZXR1cm4gdGhpcy5zZXQoMSxuLGksMCx0LDEsYSwwLGUsbywxLDAsMCwwLDAsMSksdGhpc31jb21wb3NlKHQsZSxuKXtjb25zdCBvPXRoaXMuZWxlbWVudHMsaT1lLl94LGE9ZS5feSxyPWUuX3oscz1lLl93LGw9aStpLGM9YSthLGQ9cityLHA9aSpsLG09aSpjLHU9aSpkLGY9YSpjLGc9YSpkLGg9cipkLGI9cypsLHk9cypjLF89cypkLEM9bi54LE09bi55LHY9bi56O3JldHVybiBvWzBdPSgxLShmK2gpKSpDLG9bMV09KG0rXykqQyxvWzJdPSh1LXkpKkMsb1szXT0wLG9bNF09KG0tXykqTSxvWzVdPSgxLShwK2gpKSpNLG9bNl09KGcrYikqTSxvWzddPTAsb1s4XT0odSt5KSp2LG9bOV09KGctYikqdixvWzEwXT0oMS0ocCtmKSkqdixvWzExXT0wLG9bMTJdPXQueCxvWzEzXT10Lnksb1sxNF09dC56LG9bMTVdPTEsdGhpc31kZWNvbXBvc2UodCxlLG4pe2NvbnN0IG89dGhpcy5lbGVtZW50cztsZXQgaT1JbHQuc2V0KG9bMF0sb1sxXSxvWzJdKS5sZW5ndGgoKTtjb25zdCBhPUlsdC5zZXQob1s0XSxvWzVdLG9bNl0pLmxlbmd0aCgpLHI9SWx0LnNldChvWzhdLG9bOV0sb1sxMF0pLmxlbmd0aCgpO3RoaXMuZGV0ZXJtaW5hbnQoKTwwJiYoaT0taSksdC54PW9bMTJdLHQueT1vWzEzXSx0Lno9b1sxNF0sSGx0LmNvcHkodGhpcyk7Y29uc3Qgcz0xL2ksbD0xL2EsYz0xL3I7cmV0dXJuIEhsdC5lbGVtZW50c1swXSo9cyxIbHQuZWxlbWVudHNbMV0qPXMsSGx0LmVsZW1lbnRzWzJdKj1zLEhsdC5lbGVtZW50c1s0XSo9bCxIbHQuZWxlbWVudHNbNV0qPWwsSGx0LmVsZW1lbnRzWzZdKj1sLEhsdC5lbGVtZW50c1s4XSo9YyxIbHQuZWxlbWVudHNbOV0qPWMsSGx0LmVsZW1lbnRzWzEwXSo9YyxlLnNldEZyb21Sb3RhdGlvbk1hdHJpeChIbHQpLG4ueD1pLG4ueT1hLG4uej1yLHRoaXN9bWFrZVBlcnNwZWN0aXZlKHQsZSxuLG8saSxhKXt2b2lkIDA9PT1hJiZjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUGVyc3BlY3RpdmUoKSBoYXMgYmVlbiByZWRlZmluZWQgYW5kIGhhcyBhIG5ldyBzaWduYXR1cmUuIFBsZWFzZSBjaGVjayB0aGUgZG9jcy4iKTtjb25zdCByPXRoaXMuZWxlbWVudHMscz0yKmkvKG4tbyksbD0oZSt0KS8oZS10KSxjPShuK28pLyhuLW8pLGQ9LShhK2kpLyhhLWkpLHA9LTIqYSppLyhhLWkpO3JldHVybiByWzBdPTIqaS8oZS10KSxyWzRdPTAscls4XT1sLHJbMTJdPTAsclsxXT0wLHJbNV09cyxyWzldPWMsclsxM109MCxyWzJdPTAscls2XT0wLHJbMTBdPWQsclsxNF09cCxyWzNdPTAscls3XT0wLHJbMTFdPS0xLHJbMTVdPTAsdGhpc31tYWtlT3J0aG9ncmFwaGljKHQsZSxuLG8saSxhKXtjb25zdCByPXRoaXMuZWxlbWVudHMscz0xLyhlLXQpLGw9MS8obi1vKSxjPTEvKGEtaSksZD0oZSt0KSpzLHA9KG4rbykqbCxtPShhK2kpKmM7cmV0dXJuIHJbMF09MipzLHJbNF09MCxyWzhdPTAsclsxMl09LWQsclsxXT0wLHJbNV09MipsLHJbOV09MCxyWzEzXT0tcCxyWzJdPTAscls2XT0wLHJbMTBdPS0yKmMsclsxNF09LW0sclszXT0wLHJbN109MCxyWzExXT0wLHJbMTVdPTEsdGhpc31lcXVhbHModCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztmb3IobGV0IHQ9MDt0PDE2O3QrKylpZihlW3RdIT09blt0XSlyZXR1cm4hMTtyZXR1cm4hMH1mcm9tQXJyYXkodCxlPTApe2ZvcihsZXQgbj0wO248MTY7bisrKXRoaXMuZWxlbWVudHNbbl09dFtuK2VdO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gdFtlXT1uWzBdLHRbZSsxXT1uWzFdLHRbZSsyXT1uWzJdLHRbZSszXT1uWzNdLHRbZSs0XT1uWzRdLHRbZSs1XT1uWzVdLHRbZSs2XT1uWzZdLHRbZSs3XT1uWzddLHRbZSs4XT1uWzhdLHRbZSs5XT1uWzldLHRbZSsxMF09blsxMF0sdFtlKzExXT1uWzExXSx0W2UrMTJdPW5bMTJdLHRbZSsxM109blsxM10sdFtlKzE0XT1uWzE0XSx0W2UrMTVdPW5bMTVdLHR9fXpsdC5wcm90b3R5cGUuaXNNYXRyaXg0PSEwO2NvbnN0IElsdD1uZXcgaWx0LEhsdD1uZXcgemx0LEZsdD1uZXcgaWx0KDAsMCwwKSxMbHQ9bmV3IGlsdCgxLDEsMSksQmx0PW5ldyBpbHQsVmx0PW5ldyBpbHQsVWx0PW5ldyBpbHQsamx0PW5ldyB6bHQsV2x0PW5ldyBvbHQ7Y2xhc3MgR2x0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wLG89R2x0LkRlZmF1bHRPcmRlcil7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fb3JkZXI9b31nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgb3JkZXIoKXtyZXR1cm4gdGhpcy5fb3JkZXJ9c2V0IG9yZGVyKHQpe3RoaXMuX29yZGVyPXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LGUsbixvPXRoaXMuX29yZGVyKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fb3JkZXI9byx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl9vcmRlcil9Y29weSh0KXtyZXR1cm4gdGhpcy5feD10Ll94LHRoaXMuX3k9dC5feSx0aGlzLl96PXQuX3osdGhpcy5fb3JkZXI9dC5fb3JkZXIsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQsZT10aGlzLl9vcmRlcixuPSEwKXtjb25zdCBvPXQuZWxlbWVudHMsaT1vWzBdLGE9b1s0XSxyPW9bOF0scz1vWzFdLGw9b1s1XSxjPW9bOV0sZD1vWzJdLHA9b1s2XSxtPW9bMTBdO3N3aXRjaChlKXtjYXNlIlhZWiI6dGhpcy5feT1NYXRoLmFzaW4oTnN0KHIsLTEsMSkpLE1hdGguYWJzKHIpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIoLWMsbSksdGhpcy5fej1NYXRoLmF0YW4yKC1hLGkpKToodGhpcy5feD1NYXRoLmF0YW4yKHAsbCksdGhpcy5fej0wKTticmVhaztjYXNlIllYWiI6dGhpcy5feD1NYXRoLmFzaW4oLU5zdChjLC0xLDEpKSxNYXRoLmFicyhjKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKHIsbSksdGhpcy5fej1NYXRoLmF0YW4yKHMsbCkpOih0aGlzLl95PU1hdGguYXRhbjIoLWQsaSksdGhpcy5fej0wKTticmVhaztjYXNlIlpYWSI6dGhpcy5feD1NYXRoLmFzaW4oTnN0KHAsLTEsMSkpLE1hdGguYWJzKHApPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIoLWQsbSksdGhpcy5fej1NYXRoLmF0YW4yKC1hLGwpKToodGhpcy5feT0wLHRoaXMuX3o9TWF0aC5hdGFuMihzLGkpKTticmVhaztjYXNlIlpZWCI6dGhpcy5feT1NYXRoLmFzaW4oLU5zdChkLC0xLDEpKSxNYXRoLmFicyhkKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKHAsbSksdGhpcy5fej1NYXRoLmF0YW4yKHMsaSkpOih0aGlzLl94PTAsdGhpcy5fej1NYXRoLmF0YW4yKC1hLGwpKTticmVhaztjYXNlIllaWCI6dGhpcy5fej1NYXRoLmFzaW4oTnN0KHMsLTEsMSkpLE1hdGguYWJzKHMpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIoLWMsbCksdGhpcy5feT1NYXRoLmF0YW4yKC1kLGkpKToodGhpcy5feD0wLHRoaXMuX3k9TWF0aC5hdGFuMihyLG0pKTticmVhaztjYXNlIlhaWSI6dGhpcy5fej1NYXRoLmFzaW4oLU5zdChhLC0xLDEpKSxNYXRoLmFicyhhKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKHAsbCksdGhpcy5feT1NYXRoLmF0YW4yKHIsaSkpOih0aGlzLl94PU1hdGguYXRhbjIoLWMsbSksdGhpcy5feT0wKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuRXVsZXI6IC5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBlbmNvdW50ZXJlZCBhbiB1bmtub3duIG9yZGVyOiAiK2UpfXJldHVybiB0aGlzLl9vcmRlcj1lLCEwPT09biYmdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVF1YXRlcm5pb24odCxlLG4pe3JldHVybiBqbHQubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5zZXRGcm9tUm90YXRpb25NYXRyaXgoamx0LGUsbil9c2V0RnJvbVZlY3RvcjModCxlPXRoaXMuX29yZGVyKXtyZXR1cm4gdGhpcy5zZXQodC54LHQueSx0LnosZSl9cmVvcmRlcih0KXtyZXR1cm4gV2x0LnNldEZyb21FdWxlcih0aGlzKSx0aGlzLnNldEZyb21RdWF0ZXJuaW9uKFdsdCx0KX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX29yZGVyPT09dGhpcy5fb3JkZXJ9ZnJvbUFycmF5KHQpe3JldHVybiB0aGlzLl94PXRbMF0sdGhpcy5feT10WzFdLHRoaXMuX3o9dFsyXSx2b2lkIDAhPT10WzNdJiYodGhpcy5fb3JkZXI9dFszXSksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5feCx0W2UrMV09dGhpcy5feSx0W2UrMl09dGhpcy5feix0W2UrM109dGhpcy5fb3JkZXIsdH10b1ZlY3RvcjModCl7cmV0dXJuIHQ/dC5zZXQodGhpcy5feCx0aGlzLl95LHRoaXMuX3opOm5ldyBpbHQodGhpcy5feCx0aGlzLl95LHRoaXMuX3opfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fUdsdC5wcm90b3R5cGUuaXNFdWxlcj0hMCxHbHQuRGVmYXVsdE9yZGVyPSJYWVoiLEdsdC5Sb3RhdGlvbk9yZGVycz1bIlhZWiIsIllaWCIsIlpYWSIsIlhaWSIsIllYWiIsIlpZWCJdO2NsYXNzIFlsdHtjb25zdHJ1Y3Rvcigpe3RoaXMubWFzaz0xfXNldCh0KXt0aGlzLm1hc2s9KDE8PHR8MCk+Pj4wfWVuYWJsZSh0KXt0aGlzLm1hc2t8PTE8PHR8MH1lbmFibGVBbGwoKXt0aGlzLm1hc2s9LTF9dG9nZ2xlKHQpe3RoaXMubWFza149MTw8dHwwfWRpc2FibGUodCl7dGhpcy5tYXNrJj1+KDE8PHR8MCl9ZGlzYWJsZUFsbCgpe3RoaXMubWFzaz0wfXRlc3QodCl7cmV0dXJuIDAhPSh0aGlzLm1hc2smdC5tYXNrKX1pc0VuYWJsZWQodCl7cmV0dXJuIDAhPSh0aGlzLm1hc2smKDE8PHR8MCkpfX1sZXQgcWx0PTA7Y29uc3QgWmx0PW5ldyBpbHQsWGx0PW5ldyBvbHQsS2x0PW5ldyB6bHQsSmx0PW5ldyBpbHQsUWx0PW5ldyBpbHQsJGx0PW5ldyBpbHQsdGN0PW5ldyBvbHQsZWN0PW5ldyBpbHQoMSwwLDApLG5jdD1uZXcgaWx0KDAsMSwwKSxvY3Q9bmV3IGlsdCgwLDAsMSksaWN0PXt0eXBlOiJhZGRlZCJ9LGFjdD17dHlwZToicmVtb3ZlZCJ9O2NsYXNzIHJjdCBleHRlbmRzIERzdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6cWx0Kyt9KSx0aGlzLnV1aWQ9VHN0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iT2JqZWN0M0QiLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1bXSx0aGlzLnVwPXJjdC5EZWZhdWx0VXAuY2xvbmUoKTtjb25zdCB0PW5ldyBpbHQsZT1uZXcgR2x0LG49bmV3IG9sdCxvPW5ldyBpbHQoMSwxLDEpO2UuX29uQ2hhbmdlKChmdW5jdGlvbiBpKCl7bi5zZXRGcm9tRXVsZXIoZSwhMSl9KSksbi5fb25DaGFuZ2UoKGZ1bmN0aW9uIGEoKXtlLnNldEZyb21RdWF0ZXJuaW9uKG4sdm9pZCAwLCExKX0pKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtwb3NpdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dH0scm90YXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmV9LHF1YXRlcm5pb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm59LHNjYWxlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpvfSxtb2RlbFZpZXdNYXRyaXg6e3ZhbHVlOm5ldyB6bHR9LG5vcm1hbE1hdHJpeDp7dmFsdWU6bmV3IExzdH19KSx0aGlzLm1hdHJpeD1uZXcgemx0LHRoaXMubWF0cml4V29ybGQ9bmV3IHpsdCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9cmN0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0aGlzLmxheWVycz1uZXcgWWx0LHRoaXMudmlzaWJsZT0hMCx0aGlzLmNhc3RTaGFkb3c9ITEsdGhpcy5yZWNlaXZlU2hhZG93PSExLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMCx0aGlzLnJlbmRlck9yZGVyPTAsdGhpcy5hbmltYXRpb25zPVtdLHRoaXMudXNlckRhdGE9e319b25CZWZvcmVSZW5kZXIoKXt9b25BZnRlclJlbmRlcigpe31hcHBseU1hdHJpeDQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMubWF0cml4LnByZW11bHRpcGx5KHQpLHRoaXMubWF0cml4LmRlY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKX1hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh0KSx0aGlzfXNldFJvdGF0aW9uRnJvbUF4aXNBbmdsZSh0LGUpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tQXhpc0FuZ2xlKHQsZSl9c2V0Um90YXRpb25Gcm9tRXVsZXIodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21FdWxlcih0LCEwKX1zZXRSb3RhdGlvbkZyb21NYXRyaXgodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KX1zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3RoaXMucXVhdGVybmlvbi5jb3B5KHQpfXJvdGF0ZU9uQXhpcyh0LGUpe3JldHVybiBYbHQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5tdWx0aXBseShYbHQpLHRoaXN9cm90YXRlT25Xb3JsZEF4aXModCxlKXtyZXR1cm4gWGx0LnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoWGx0KSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKGVjdCx0KX1yb3RhdGVZKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhuY3QsdCl9cm90YXRlWih0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMob2N0LHQpfXRyYW5zbGF0ZU9uQXhpcyh0LGUpe3JldHVybiBabHQuY29weSh0KS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKSx0aGlzLnBvc2l0aW9uLmFkZChabHQubXVsdGlwbHlTY2FsYXIoZSkpLHRoaXN9dHJhbnNsYXRlWCh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoZWN0LHQpfXRyYW5zbGF0ZVkodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKG5jdCx0KX10cmFuc2xhdGVaKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhvY3QsdCl9bG9jYWxUb1dvcmxkKHQpe3JldHVybiB0LmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKX13b3JsZFRvTG9jYWwodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KEtsdC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpKX1sb29rQXQodCxlLG4pe3QuaXNWZWN0b3IzP0psdC5jb3B5KHQpOkpsdC5zZXQodCxlLG4pO2NvbnN0IG89dGhpcy5wYXJlbnQ7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksUWx0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmlzQ2FtZXJhfHx0aGlzLmlzTGlnaHQ/S2x0Lmxvb2tBdChRbHQsSmx0LHRoaXMudXApOktsdC5sb29rQXQoSmx0LFFsdCx0aGlzLnVwKSx0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KEtsdCksbyYmKEtsdC5leHRyYWN0Um90YXRpb24oby5tYXRyaXhXb3JsZCksWGx0LnNldEZyb21Sb3RhdGlvbk1hdHJpeChLbHQpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShYbHQuaW52ZXJ0KCkpKX1hZGQodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMuYWRkKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9cmV0dXJuIHQ9PT10aGlzPyhjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBjYW4ndCBiZSBhZGRlZCBhcyBhIGNoaWxkIG9mIGl0c2VsZi4iLHQpLHRoaXMpOih0JiZ0LmlzT2JqZWN0M0Q/KG51bGwhPT10LnBhcmVudCYmdC5wYXJlbnQucmVtb3ZlKHQpLHQucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlbi5wdXNoKHQpLHQuZGlzcGF0Y2hFdmVudChpY3QpKTpjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuT2JqZWN0M0QuIix0KSx0aGlzKX1yZW1vdmUodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMucmVtb3ZlKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9Y29uc3QgZT10aGlzLmNoaWxkcmVuLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiYodC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuLnNwbGljZShlLDEpLHQuZGlzcGF0Y2hFdmVudChhY3QpKSx0aGlzfXJlbW92ZUZyb21QYXJlbnQoKXtjb25zdCB0PXRoaXMucGFyZW50O3JldHVybiBudWxsIT09dCYmdC5yZW1vdmUodGhpcyksdGhpc31jbGVhcigpe2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPXRoaXMuY2hpbGRyZW5bdF07ZS5wYXJlbnQ9bnVsbCxlLmRpc3BhdGNoRXZlbnQoYWN0KX1yZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg9MCx0aGlzfWF0dGFjaCh0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksS2x0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksbnVsbCE9PXQucGFyZW50JiYodC5wYXJlbnQudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLEtsdC5tdWx0aXBseSh0LnBhcmVudC5tYXRyaXhXb3JsZCkpLHQuYXBwbHlNYXRyaXg0KEtsdCksdGhpcy5hZGQodCksdC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCksdGhpc31nZXRPYmplY3RCeUlkKHQpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoImlkIix0KX1nZXRPYmplY3RCeU5hbWUodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgibmFtZSIsdCl9Z2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpe2lmKHRoaXNbdF09PT1lKXJldHVybiB0aGlzO2ZvcihsZXQgbj0wLG89dGhpcy5jaGlsZHJlbi5sZW5ndGg7bjxvO24rKyl7Y29uc3Qgbz10aGlzLmNoaWxkcmVuW25dLmdldE9iamVjdEJ5UHJvcGVydHkodCxlKTtpZih2b2lkIDAhPT1vKXJldHVybiBvfX1nZXRXb3JsZFBvc2l0aW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKX1nZXRXb3JsZFF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKFFsdCx0LCRsdCksdH1nZXRXb3JsZFNjYWxlKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShRbHQsdGN0LHQpLHR9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldChlWzhdLGVbOV0sZVsxMF0pLm5vcm1hbGl6ZSgpfXJheWNhc3QoKXt9dHJhdmVyc2UodCl7dCh0aGlzKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl0udHJhdmVyc2UodCl9dHJhdmVyc2VWaXNpYmxlKHQpe2lmKCExPT09dGhpcy52aXNpYmxlKXJldHVybjt0KHRoaXMpO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspZVtuXS50cmF2ZXJzZVZpc2libGUodCl9dHJhdmVyc2VBbmNlc3RvcnModCl7Y29uc3QgZT10aGlzLnBhcmVudDtudWxsIT09ZSYmKHQoZSksZS50cmF2ZXJzZUFuY2VzdG9ycyh0KSl9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9dXBkYXRlTWF0cml4V29ybGQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLCh0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGV8fHQpJiYobnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITEsdD0hMCk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rKyllW25dLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7Y29uc3Qgbj10aGlzLnBhcmVudDtpZighMD09PXQmJm51bGwhPT1uJiZuLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksbnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSwhMD09PWUpe2NvbnN0IHQ9dGhpcy5jaGlsZHJlbjtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXS51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCl9fXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdCxuPXt9O2UmJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxuLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2NvbnN0IG89e307ZnVuY3Rpb24gaShlLG4pe3JldHVybiB2b2lkIDA9PT1lW24udXVpZF0mJihlW24udXVpZF09bi50b0pTT04odCkpLG4udXVpZH1pZihvLnV1aWQ9dGhpcy51dWlkLG8udHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihvLm5hbWU9dGhpcy5uYW1lKSwhMD09PXRoaXMuY2FzdFNoYWRvdyYmKG8uY2FzdFNoYWRvdz0hMCksITA9PT10aGlzLnJlY2VpdmVTaGFkb3cmJihvLnJlY2VpdmVTaGFkb3c9ITApLCExPT09dGhpcy52aXNpYmxlJiYoby52aXNpYmxlPSExKSwhMT09PXRoaXMuZnJ1c3R1bUN1bGxlZCYmKG8uZnJ1c3R1bUN1bGxlZD0hMSksMCE9PXRoaXMucmVuZGVyT3JkZXImJihvLnJlbmRlck9yZGVyPXRoaXMucmVuZGVyT3JkZXIpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG8udXNlckRhdGE9dGhpcy51c2VyRGF0YSksby5sYXllcnM9dGhpcy5sYXllcnMubWFzayxvLm1hdHJpeD10aGlzLm1hdHJpeC50b0FycmF5KCksITE9PT10aGlzLm1hdHJpeEF1dG9VcGRhdGUmJihvLm1hdHJpeEF1dG9VcGRhdGU9ITEpLHRoaXMuaXNJbnN0YW5jZWRNZXNoJiYoby50eXBlPSJJbnN0YW5jZWRNZXNoIixvLmNvdW50PXRoaXMuY291bnQsby5pbnN0YW5jZU1hdHJpeD10aGlzLmluc3RhbmNlTWF0cml4LnRvSlNPTigpLG51bGwhPT10aGlzLmluc3RhbmNlQ29sb3ImJihvLmluc3RhbmNlQ29sb3I9dGhpcy5pbnN0YW5jZUNvbG9yLnRvSlNPTigpKSksdGhpcy5pc1NjZW5lKXRoaXMuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZC5pc0NvbG9yP28uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKCk6dGhpcy5iYWNrZ3JvdW5kLmlzVGV4dHVyZSYmKG8uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKHQpLnV1aWQpKSx0aGlzLmVudmlyb25tZW50JiZ0aGlzLmVudmlyb25tZW50LmlzVGV4dHVyZSYmKG8uZW52aXJvbm1lbnQ9dGhpcy5lbnZpcm9ubWVudC50b0pTT04odCkudXVpZCk7ZWxzZSBpZih0aGlzLmlzTWVzaHx8dGhpcy5pc0xpbmV8fHRoaXMuaXNQb2ludHMpe28uZ2VvbWV0cnk9aSh0Lmdlb21ldHJpZXMsdGhpcy5nZW9tZXRyeSk7Y29uc3QgZT10aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09ZS5zaGFwZXMpe2NvbnN0IG49ZS5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGU9MCxvPW4ubGVuZ3RoO2U8bztlKyspe2kodC5zaGFwZXMsbltlXSl9ZWxzZSBpKHQuc2hhcGVzLG4pfX1pZih0aGlzLmlzU2tpbm5lZE1lc2gmJihvLmJpbmRNb2RlPXRoaXMuYmluZE1vZGUsby5iaW5kTWF0cml4PXRoaXMuYmluZE1hdHJpeC50b0FycmF5KCksdm9pZCAwIT09dGhpcy5za2VsZXRvbiYmKGkodC5za2VsZXRvbnMsdGhpcy5za2VsZXRvbiksby5za2VsZXRvbj10aGlzLnNrZWxldG9uLnV1aWQpKSx2b2lkIDAhPT10aGlzLm1hdGVyaWFsKWlmKEFycmF5LmlzQXJyYXkodGhpcy5tYXRlcmlhbCkpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsbz10aGlzLm1hdGVyaWFsLmxlbmd0aDtuPG87bisrKWUucHVzaChpKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWxbbl0pKTtvLm1hdGVyaWFsPWV9ZWxzZSBvLm1hdGVyaWFsPWkodC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbCk7aWYodGhpcy5jaGlsZHJlbi5sZW5ndGg+MCl7by5jaGlsZHJlbj1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKylvLmNoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltlXS50b0pTT04odCkub2JqZWN0KX1pZih0aGlzLmFuaW1hdGlvbnMubGVuZ3RoPjApe28uYW5pbWF0aW9ucz1bXTtmb3IobGV0IGU9MDtlPHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg7ZSsrKXtvLmFuaW1hdGlvbnMucHVzaChpKHQuYW5pbWF0aW9ucyx0aGlzLmFuaW1hdGlvbnNbZV0pKX19aWYoZSl7Y29uc3QgZT1hKHQuZ2VvbWV0cmllcyksbz1hKHQubWF0ZXJpYWxzKSxpPWEodC50ZXh0dXJlcykscj1hKHQuaW1hZ2VzKSxzPWEodC5zaGFwZXMpLGw9YSh0LnNrZWxldG9ucyksYz1hKHQuYW5pbWF0aW9ucyk7ZS5sZW5ndGg+MCYmKG4uZ2VvbWV0cmllcz1lKSxvLmxlbmd0aD4wJiYobi5tYXRlcmlhbHM9byksaS5sZW5ndGg+MCYmKG4udGV4dHVyZXM9aSksci5sZW5ndGg+MCYmKG4uaW1hZ2VzPXIpLHMubGVuZ3RoPjAmJihuLnNoYXBlcz1zKSxsLmxlbmd0aD4wJiYobi5za2VsZXRvbnM9bCksYy5sZW5ndGg+MCYmKG4uYW5pbWF0aW9ucz1jKX1yZXR1cm4gbi5vYmplY3Q9byxuO2Z1bmN0aW9uIGEodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPXRbbl07ZGVsZXRlIG8ubWV0YWRhdGEsZS5wdXNoKG8pfXJldHVybiBlfX1jbG9uZSh0KXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyx0KX1jb3B5KHQsZT0hMCl7aWYodGhpcy5uYW1lPXQubmFtZSx0aGlzLnVwLmNvcHkodC51cCksdGhpcy5wb3NpdGlvbi5jb3B5KHQucG9zaXRpb24pLHRoaXMucm90YXRpb24ub3JkZXI9dC5yb3RhdGlvbi5vcmRlcix0aGlzLnF1YXRlcm5pb24uY29weSh0LnF1YXRlcm5pb24pLHRoaXMuc2NhbGUuY29weSh0LnNjYWxlKSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCksdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9dC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlLHRoaXMubGF5ZXJzLm1hc2s9dC5sYXllcnMubWFzayx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMuY2FzdFNoYWRvdz10LmNhc3RTaGFkb3csdGhpcy5yZWNlaXZlU2hhZG93PXQucmVjZWl2ZVNoYWRvdyx0aGlzLmZydXN0dW1DdWxsZWQ9dC5mcnVzdHVtQ3VsbGVkLHRoaXMucmVuZGVyT3JkZXI9dC5yZW5kZXJPcmRlcix0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLCEwPT09ZSlmb3IobGV0IGU9MDtlPHQuY2hpbGRyZW4ubGVuZ3RoO2UrKyl7dGhpcy5hZGQodC5jaGlsZHJlbltlXS5jbG9uZSgpKX1yZXR1cm4gdGhpc319cmN0LkRlZmF1bHRVcD1uZXcgaWx0KDAsMSwwKSxyY3QuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU9ITAscmN0LnByb3RvdHlwZS5pc09iamVjdDNEPSEwO2NvbnN0IHNjdD1uZXcgaWx0LGxjdD1uZXcgaWx0LGNjdD1uZXcgaWx0LGRjdD1uZXcgaWx0LHBjdD1uZXcgaWx0LG1jdD1uZXcgaWx0LHVjdD1uZXcgaWx0LGZjdD1uZXcgaWx0LGdjdD1uZXcgaWx0LGhjdD1uZXcgaWx0O2NsYXNzIGJjdHtjb25zdHJ1Y3Rvcih0PW5ldyBpbHQsZT1uZXcgaWx0LG49bmV3IGlsdCl7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy5jPW59c3RhdGljIGdldE5vcm1hbCh0LGUsbixvKXtvLnN1YlZlY3RvcnMobixlKSxzY3Quc3ViVmVjdG9ycyh0LGUpLG8uY3Jvc3Moc2N0KTtjb25zdCBpPW8ubGVuZ3RoU3EoKTtyZXR1cm4gaT4wP28ubXVsdGlwbHlTY2FsYXIoMS9NYXRoLnNxcnQoaSkpOm8uc2V0KDAsMCwwKX1zdGF0aWMgZ2V0QmFyeWNvb3JkKHQsZSxuLG8saSl7c2N0LnN1YlZlY3RvcnMobyxlKSxsY3Quc3ViVmVjdG9ycyhuLGUpLGNjdC5zdWJWZWN0b3JzKHQsZSk7Y29uc3QgYT1zY3QuZG90KHNjdCkscj1zY3QuZG90KGxjdCkscz1zY3QuZG90KGNjdCksbD1sY3QuZG90KGxjdCksYz1sY3QuZG90KGNjdCksZD1hKmwtcipyO2lmKDA9PT1kKXJldHVybiBpLnNldCgtMiwtMSwtMSk7Y29uc3QgcD0xL2QsbT0obCpzLXIqYykqcCx1PShhKmMtcipzKSpwO3JldHVybiBpLnNldCgxLW0tdSx1LG0pfXN0YXRpYyBjb250YWluc1BvaW50KHQsZSxuLG8pe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LGUsbixvLGRjdCksZGN0Lng+PTAmJmRjdC55Pj0wJiZkY3QueCtkY3QueTw9MX1zdGF0aWMgZ2V0VVYodCxlLG4sbyxpLGEscixzKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxlLG4sbyxkY3QpLHMuc2V0KDAsMCkscy5hZGRTY2FsZWRWZWN0b3IoaSxkY3QueCkscy5hZGRTY2FsZWRWZWN0b3IoYSxkY3QueSkscy5hZGRTY2FsZWRWZWN0b3IocixkY3Queiksc31zdGF0aWMgaXNGcm9udEZhY2luZyh0LGUsbixvKXtyZXR1cm4gc2N0LnN1YlZlY3RvcnMobixlKSxsY3Quc3ViVmVjdG9ycyh0LGUpLHNjdC5jcm9zcyhsY3QpLmRvdChvKTwwfXNldCh0LGUsbil7cmV0dXJuIHRoaXMuYS5jb3B5KHQpLHRoaXMuYi5jb3B5KGUpLHRoaXMuYy5jb3B5KG4pLHRoaXN9c2V0RnJvbVBvaW50c0FuZEluZGljZXModCxlLG4sbyl7cmV0dXJuIHRoaXMuYS5jb3B5KHRbZV0pLHRoaXMuYi5jb3B5KHRbbl0pLHRoaXMuYy5jb3B5KHRbb10pLHRoaXN9c2V0RnJvbUF0dHJpYnV0ZUFuZEluZGljZXModCxlLG4sbyl7cmV0dXJuIHRoaXMuYS5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksdGhpcy5iLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxuKSx0aGlzLmMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG8pLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hLmNvcHkodC5hKSx0aGlzLmIuY29weSh0LmIpLHRoaXMuYy5jb3B5KHQuYyksdGhpc31nZXRBcmVhKCl7cmV0dXJuIHNjdC5zdWJWZWN0b3JzKHRoaXMuYyx0aGlzLmIpLGxjdC5zdWJWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLC41KnNjdC5jcm9zcyhsY3QpLmxlbmd0aCgpfWdldE1pZHBvaW50KHQpe3JldHVybiB0LmFkZFZlY3RvcnModGhpcy5hLHRoaXMuYikuYWRkKHRoaXMuYykubXVsdGlwbHlTY2FsYXIoMS8zKX1nZXROb3JtYWwodCl7cmV0dXJuIGJjdC5nZXROb3JtYWwodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9Z2V0UGxhbmUodCl7cmV0dXJuIHQuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1nZXRCYXJ5Y29vcmQodCxlKXtyZXR1cm4gYmN0LmdldEJhcnljb29yZCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUpfWdldFVWKHQsZSxuLG8saSl7cmV0dXJuIGJjdC5nZXRVVih0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUsbixvLGkpfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIGJjdC5jb250YWluc1BvaW50KHQsdGhpcy5hLHRoaXMuYix0aGlzLmMpfWlzRnJvbnRGYWNpbmcodCl7cmV0dXJuIGJjdC5pc0Zyb250RmFjaW5nKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1RyaWFuZ2xlKHRoaXMpfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXtjb25zdCBuPXRoaXMuYSxvPXRoaXMuYixpPXRoaXMuYztsZXQgYSxyO3BjdC5zdWJWZWN0b3JzKG8sbiksbWN0LnN1YlZlY3RvcnMoaSxuKSxmY3Quc3ViVmVjdG9ycyh0LG4pO2NvbnN0IHM9cGN0LmRvdChmY3QpLGw9bWN0LmRvdChmY3QpO2lmKHM8PTAmJmw8PTApcmV0dXJuIGUuY29weShuKTtnY3Quc3ViVmVjdG9ycyh0LG8pO2NvbnN0IGM9cGN0LmRvdChnY3QpLGQ9bWN0LmRvdChnY3QpO2lmKGM+PTAmJmQ8PWMpcmV0dXJuIGUuY29weShvKTtjb25zdCBwPXMqZC1jKmw7aWYocDw9MCYmcz49MCYmYzw9MClyZXR1cm4gYT1zLyhzLWMpLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IocGN0LGEpO2hjdC5zdWJWZWN0b3JzKHQsaSk7Y29uc3QgbT1wY3QuZG90KGhjdCksdT1tY3QuZG90KGhjdCk7aWYodT49MCYmbTw9dSlyZXR1cm4gZS5jb3B5KGkpO2NvbnN0IGY9bSpsLXMqdTtpZihmPD0wJiZsPj0wJiZ1PD0wKXJldHVybiByPWwvKGwtdSksZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihtY3Qscik7Y29uc3QgZz1jKnUtbSpkO2lmKGc8PTAmJmQtYz49MCYmbS11Pj0wKXJldHVybiB1Y3Quc3ViVmVjdG9ycyhpLG8pLHI9KGQtYykvKGQtYysobS11KSksZS5jb3B5KG8pLmFkZFNjYWxlZFZlY3Rvcih1Y3Qscik7Y29uc3QgaD0xLyhnK2YrcCk7cmV0dXJuIGE9ZipoLHI9cCpoLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IocGN0LGEpLmFkZFNjYWxlZFZlY3RvcihtY3Qscil9ZXF1YWxzKHQpe3JldHVybiB0LmEuZXF1YWxzKHRoaXMuYSkmJnQuYi5lcXVhbHModGhpcy5iKSYmdC5jLmVxdWFscyh0aGlzLmMpfX1sZXQgeWN0PTA7Y2xhc3MgX2N0IGV4dGVuZHMgRHN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTp5Y3QrK30pLHRoaXMudXVpZD1Uc3QoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJNYXRlcmlhbCIsdGhpcy5mb2c9ITAsdGhpcy5ibGVuZGluZz0xLHRoaXMuc2lkZT0wLHRoaXMudmVydGV4Q29sb3JzPSExLHRoaXMub3BhY2l0eT0xLHRoaXMudHJhbnNwYXJlbnQ9ITEsdGhpcy5ibGVuZFNyYz0yMDQsdGhpcy5ibGVuZERzdD0yMDUsdGhpcy5ibGVuZEVxdWF0aW9uPVlydCx0aGlzLmJsZW5kU3JjQWxwaGE9bnVsbCx0aGlzLmJsZW5kRHN0QWxwaGE9bnVsbCx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT1udWxsLHRoaXMuZGVwdGhGdW5jPTMsdGhpcy5kZXB0aFRlc3Q9ITAsdGhpcy5kZXB0aFdyaXRlPSEwLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz0yNTUsdGhpcy5zdGVuY2lsRnVuYz01MTksdGhpcy5zdGVuY2lsUmVmPTAsdGhpcy5zdGVuY2lsRnVuY01hc2s9MjU1LHRoaXMuc3RlbmNpbEZhaWw9T3N0LHRoaXMuc3RlbmNpbFpGYWlsPU9zdCx0aGlzLnN0ZW5jaWxaUGFzcz1Pc3QsdGhpcy5zdGVuY2lsV3JpdGU9ITEsdGhpcy5jbGlwcGluZ1BsYW5lcz1udWxsLHRoaXMuY2xpcEludGVyc2VjdGlvbj0hMSx0aGlzLmNsaXBTaGFkb3dzPSExLHRoaXMuc2hhZG93U2lkZT1udWxsLHRoaXMuY29sb3JXcml0ZT0hMCx0aGlzLmFscGhhV3JpdGU9ITAsdGhpcy5wcmVjaXNpb249bnVsbCx0aGlzLnBvbHlnb25PZmZzZXQ9ITEsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPTAsdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9MCx0aGlzLmRpdGhlcmluZz0hMSx0aGlzLmFscGhhVG9Db3ZlcmFnZT0hMSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMSx0aGlzLnZpc2libGU9ITAsdGhpcy50b25lTWFwcGVkPSEwLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTAsdGhpcy5fYWxwaGFUZXN0PTB9Z2V0IGFscGhhVGVzdCgpe3JldHVybiB0aGlzLl9hbHBoYVRlc3R9c2V0IGFscGhhVGVzdCh0KXt0aGlzLl9hbHBoYVRlc3Q+MCE9dD4wJiZ0aGlzLnZlcnNpb24rKyx0aGlzLl9hbHBoYVRlc3Q9dH1vbkJ1aWxkKCl7fW9uQmVmb3JlUmVuZGVyKCl7fW9uQmVmb3JlQ29tcGlsZSgpe31jdXN0b21Qcm9ncmFtQ2FjaGVLZXkoKXtyZXR1cm4gdGhpcy5vbkJlZm9yZUNvbXBpbGUudG9TdHJpbmcoKX1zZXRWYWx1ZXModCl7aWYodm9pZCAwIT09dClmb3IoY29uc3QgZSBpbiB0KXtjb25zdCBuPXRbZV07aWYodm9pZCAwPT09bil7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogJyIrZSsiJyBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWlmKCJzaGFkaW5nIj09PWUpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9MT09PW47Y29udGludWV9Y29uc3Qgbz10aGlzW2VdO3ZvaWQgMCE9PW8/byYmby5pc0NvbG9yP28uc2V0KG4pOm8mJm8uaXNWZWN0b3IzJiZuJiZuLmlzVmVjdG9yMz9vLmNvcHkobik6dGhpc1tlXT1uOmNvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogJyIrZSsiJyBpcyBub3QgYSBwcm9wZXJ0eSBvZiB0aGlzIG1hdGVyaWFsLiIpfX10b0pTT04odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7ZSYmKHQ9e3RleHR1cmVzOnt9LGltYWdlczp7fX0pO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJNYXRlcmlhbCIsZ2VuZXJhdG9yOiJNYXRlcmlhbC50b0pTT04ifX07ZnVuY3Rpb24gbyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IG89dFtuXTtkZWxldGUgby5tZXRhZGF0YSxlLnB1c2gobyl9cmV0dXJuIGV9aWYobi51dWlkPXRoaXMudXVpZCxuLnR5cGU9dGhpcy50eXBlLCIiIT09dGhpcy5uYW1lJiYobi5uYW1lPXRoaXMubmFtZSksdGhpcy5jb2xvciYmdGhpcy5jb2xvci5pc0NvbG9yJiYobi5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnJvdWdobmVzcyYmKG4ucm91Z2huZXNzPXRoaXMucm91Z2huZXNzKSx2b2lkIDAhPT10aGlzLm1ldGFsbmVzcyYmKG4ubWV0YWxuZXNzPXRoaXMubWV0YWxuZXNzKSx2b2lkIDAhPT10aGlzLnNoZWVuJiYobi5zaGVlbj10aGlzLnNoZWVuKSx0aGlzLnNoZWVuQ29sb3ImJnRoaXMuc2hlZW5Db2xvci5pc0NvbG9yJiYobi5zaGVlbkNvbG9yPXRoaXMuc2hlZW5Db2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaGVlblJvdWdobmVzcyYmKG4uc2hlZW5Sb3VnaG5lc3M9dGhpcy5zaGVlblJvdWdobmVzcyksdGhpcy5lbWlzc2l2ZSYmdGhpcy5lbWlzc2l2ZS5pc0NvbG9yJiYobi5lbWlzc2l2ZT10aGlzLmVtaXNzaXZlLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYxIT09dGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmKG4uZW1pc3NpdmVJbnRlbnNpdHk9dGhpcy5lbWlzc2l2ZUludGVuc2l0eSksdGhpcy5zcGVjdWxhciYmdGhpcy5zcGVjdWxhci5pc0NvbG9yJiYobi5zcGVjdWxhcj10aGlzLnNwZWN1bGFyLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnNwZWN1bGFySW50ZW5zaXR5JiYobi5zcGVjdWxhckludGVuc2l0eT10aGlzLnNwZWN1bGFySW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyQ29sb3ImJnRoaXMuc3BlY3VsYXJDb2xvci5pc0NvbG9yJiYobi5zcGVjdWxhckNvbG9yPXRoaXMuc3BlY3VsYXJDb2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaGluaW5lc3MmJihuLnNoaW5pbmVzcz10aGlzLnNoaW5pbmVzcyksdm9pZCAwIT09dGhpcy5jbGVhcmNvYXQmJihuLmNsZWFyY29hdD10aGlzLmNsZWFyY29hdCksdm9pZCAwIT09dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MmJihuLmNsZWFyY29hdFJvdWdobmVzcz10aGlzLmNsZWFyY29hdFJvdWdobmVzcyksdGhpcy5jbGVhcmNvYXRNYXAmJnRoaXMuY2xlYXJjb2F0TWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0TWFwPXRoaXMuY2xlYXJjb2F0TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcCYmdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwJiZ0aGlzLmNsZWFyY29hdE5vcm1hbE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE5vcm1hbE1hcD10aGlzLmNsZWFyY29hdE5vcm1hbE1hcC50b0pTT04odCkudXVpZCxuLmNsZWFyY29hdE5vcm1hbFNjYWxlPXRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudG9BcnJheSgpKSx0aGlzLm1hcCYmdGhpcy5tYXAuaXNUZXh0dXJlJiYobi5tYXA9dGhpcy5tYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWF0Y2FwJiZ0aGlzLm1hdGNhcC5pc1RleHR1cmUmJihuLm1hdGNhcD10aGlzLm1hdGNhcC50b0pTT04odCkudXVpZCksdGhpcy5hbHBoYU1hcCYmdGhpcy5hbHBoYU1hcC5pc1RleHR1cmUmJihuLmFscGhhTWFwPXRoaXMuYWxwaGFNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubGlnaHRNYXAmJnRoaXMubGlnaHRNYXAuaXNUZXh0dXJlJiYobi5saWdodE1hcD10aGlzLmxpZ2h0TWFwLnRvSlNPTih0KS51dWlkLG4ubGlnaHRNYXBJbnRlbnNpdHk9dGhpcy5saWdodE1hcEludGVuc2l0eSksdGhpcy5hb01hcCYmdGhpcy5hb01hcC5pc1RleHR1cmUmJihuLmFvTWFwPXRoaXMuYW9NYXAudG9KU09OKHQpLnV1aWQsbi5hb01hcEludGVuc2l0eT10aGlzLmFvTWFwSW50ZW5zaXR5KSx0aGlzLmJ1bXBNYXAmJnRoaXMuYnVtcE1hcC5pc1RleHR1cmUmJihuLmJ1bXBNYXA9dGhpcy5idW1wTWFwLnRvSlNPTih0KS51dWlkLG4uYnVtcFNjYWxlPXRoaXMuYnVtcFNjYWxlKSx0aGlzLm5vcm1hbE1hcCYmdGhpcy5ub3JtYWxNYXAuaXNUZXh0dXJlJiYobi5ub3JtYWxNYXA9dGhpcy5ub3JtYWxNYXAudG9KU09OKHQpLnV1aWQsbi5ub3JtYWxNYXBUeXBlPXRoaXMubm9ybWFsTWFwVHlwZSxuLm5vcm1hbFNjYWxlPXRoaXMubm9ybWFsU2NhbGUudG9BcnJheSgpKSx0aGlzLmRpc3BsYWNlbWVudE1hcCYmdGhpcy5kaXNwbGFjZW1lbnRNYXAuaXNUZXh0dXJlJiYobi5kaXNwbGFjZW1lbnRNYXA9dGhpcy5kaXNwbGFjZW1lbnRNYXAudG9KU09OKHQpLnV1aWQsbi5kaXNwbGFjZW1lbnRTY2FsZT10aGlzLmRpc3BsYWNlbWVudFNjYWxlLG4uZGlzcGxhY2VtZW50Qmlhcz10aGlzLmRpc3BsYWNlbWVudEJpYXMpLHRoaXMucm91Z2huZXNzTWFwJiZ0aGlzLnJvdWdobmVzc01hcC5pc1RleHR1cmUmJihuLnJvdWdobmVzc01hcD10aGlzLnJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5tZXRhbG5lc3NNYXAmJnRoaXMubWV0YWxuZXNzTWFwLmlzVGV4dHVyZSYmKG4ubWV0YWxuZXNzTWFwPXRoaXMubWV0YWxuZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVtaXNzaXZlTWFwJiZ0aGlzLmVtaXNzaXZlTWFwLmlzVGV4dHVyZSYmKG4uZW1pc3NpdmVNYXA9dGhpcy5lbWlzc2l2ZU1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhck1hcCYmdGhpcy5zcGVjdWxhck1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFyTWFwPXRoaXMuc3BlY3VsYXJNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJnRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhckludGVuc2l0eU1hcD10aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyQ29sb3JNYXAmJnRoaXMuc3BlY3VsYXJDb2xvck1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFyQ29sb3JNYXA9dGhpcy5zcGVjdWxhckNvbG9yTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVudk1hcCYmdGhpcy5lbnZNYXAuaXNUZXh0dXJlJiYobi5lbnZNYXA9dGhpcy5lbnZNYXAudG9KU09OKHQpLnV1aWQsdm9pZCAwIT09dGhpcy5jb21iaW5lJiYobi5jb21iaW5lPXRoaXMuY29tYmluZSkpLHZvaWQgMCE9PXRoaXMuZW52TWFwSW50ZW5zaXR5JiYobi5lbnZNYXBJbnRlbnNpdHk9dGhpcy5lbnZNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXRoaXMucmVmbGVjdGl2aXR5JiYobi5yZWZsZWN0aXZpdHk9dGhpcy5yZWZsZWN0aXZpdHkpLHZvaWQgMCE9PXRoaXMucmVmcmFjdGlvblJhdGlvJiYobi5yZWZyYWN0aW9uUmF0aW89dGhpcy5yZWZyYWN0aW9uUmF0aW8pLHRoaXMuZ3JhZGllbnRNYXAmJnRoaXMuZ3JhZGllbnRNYXAuaXNUZXh0dXJlJiYobi5ncmFkaWVudE1hcD10aGlzLmdyYWRpZW50TWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnRyYW5zbWlzc2lvbiYmKG4udHJhbnNtaXNzaW9uPXRoaXMudHJhbnNtaXNzaW9uKSx0aGlzLnRyYW5zbWlzc2lvbk1hcCYmdGhpcy50cmFuc21pc3Npb25NYXAuaXNUZXh0dXJlJiYobi50cmFuc21pc3Npb25NYXA9dGhpcy50cmFuc21pc3Npb25NYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMudGhpY2tuZXNzJiYobi50aGlja25lc3M9dGhpcy50aGlja25lc3MpLHRoaXMudGhpY2tuZXNzTWFwJiZ0aGlzLnRoaWNrbmVzc01hcC5pc1RleHR1cmUmJihuLnRoaWNrbmVzc01hcD10aGlzLnRoaWNrbmVzc01hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlJiYobi5hdHRlbnVhdGlvbkRpc3RhbmNlPXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvbkNvbG9yJiYobi5hdHRlbnVhdGlvbkNvbG9yPXRoaXMuYXR0ZW51YXRpb25Db2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaXplJiYobi5zaXplPXRoaXMuc2l6ZSksbnVsbCE9PXRoaXMuc2hhZG93U2lkZSYmKG4uc2hhZG93U2lkZT10aGlzLnNoYWRvd1NpZGUpLHZvaWQgMCE9PXRoaXMuc2l6ZUF0dGVudWF0aW9uJiYobi5zaXplQXR0ZW51YXRpb249dGhpcy5zaXplQXR0ZW51YXRpb24pLDEhPT10aGlzLmJsZW5kaW5nJiYobi5ibGVuZGluZz10aGlzLmJsZW5kaW5nKSwwIT09dGhpcy5zaWRlJiYobi5zaWRlPXRoaXMuc2lkZSksdGhpcy52ZXJ0ZXhDb2xvcnMmJihuLnZlcnRleENvbG9ycz0hMCksdGhpcy5vcGFjaXR5PDEmJihuLm9wYWNpdHk9dGhpcy5vcGFjaXR5KSwhMD09PXRoaXMudHJhbnNwYXJlbnQmJihuLnRyYW5zcGFyZW50PXRoaXMudHJhbnNwYXJlbnQpLG4uZGVwdGhGdW5jPXRoaXMuZGVwdGhGdW5jLG4uZGVwdGhUZXN0PXRoaXMuZGVwdGhUZXN0LG4uZGVwdGhXcml0ZT10aGlzLmRlcHRoV3JpdGUsbi5jb2xvcldyaXRlPXRoaXMuY29sb3JXcml0ZSxuLmFscGhhV3JpdGU9dGhpcy5hbHBoYVdyaXRlLG4uc3RlbmNpbFdyaXRlPXRoaXMuc3RlbmNpbFdyaXRlLG4uc3RlbmNpbFdyaXRlTWFzaz10aGlzLnN0ZW5jaWxXcml0ZU1hc2ssbi5zdGVuY2lsRnVuYz10aGlzLnN0ZW5jaWxGdW5jLG4uc3RlbmNpbFJlZj10aGlzLnN0ZW5jaWxSZWYsbi5zdGVuY2lsRnVuY01hc2s9dGhpcy5zdGVuY2lsRnVuY01hc2ssbi5zdGVuY2lsRmFpbD10aGlzLnN0ZW5jaWxGYWlsLG4uc3RlbmNpbFpGYWlsPXRoaXMuc3RlbmNpbFpGYWlsLG4uc3RlbmNpbFpQYXNzPXRoaXMuc3RlbmNpbFpQYXNzLHRoaXMucm90YXRpb24mJjAhPT10aGlzLnJvdGF0aW9uJiYobi5yb3RhdGlvbj10aGlzLnJvdGF0aW9uKSwhMD09PXRoaXMucG9seWdvbk9mZnNldCYmKG4ucG9seWdvbk9mZnNldD0hMCksMCE9PXRoaXMucG9seWdvbk9mZnNldEZhY3RvciYmKG4ucG9seWdvbk9mZnNldEZhY3Rvcj10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3IpLDAhPT10aGlzLnBvbHlnb25PZmZzZXRVbml0cyYmKG4ucG9seWdvbk9mZnNldFVuaXRzPXRoaXMucG9seWdvbk9mZnNldFVuaXRzKSx0aGlzLmxpbmV3aWR0aCYmMSE9PXRoaXMubGluZXdpZHRoJiYobi5saW5ld2lkdGg9dGhpcy5saW5ld2lkdGgpLHZvaWQgMCE9PXRoaXMuZGFzaFNpemUmJihuLmRhc2hTaXplPXRoaXMuZGFzaFNpemUpLHZvaWQgMCE9PXRoaXMuZ2FwU2l6ZSYmKG4uZ2FwU2l6ZT10aGlzLmdhcFNpemUpLHZvaWQgMCE9PXRoaXMuc2NhbGUmJihuLnNjYWxlPXRoaXMuc2NhbGUpLCEwPT09dGhpcy5kaXRoZXJpbmcmJihuLmRpdGhlcmluZz0hMCksdGhpcy5hbHBoYVRlc3Q+MCYmKG4uYWxwaGFUZXN0PXRoaXMuYWxwaGFUZXN0KSwhMD09PXRoaXMuYWxwaGFUb0NvdmVyYWdlJiYobi5hbHBoYVRvQ292ZXJhZ2U9dGhpcy5hbHBoYVRvQ292ZXJhZ2UpLCEwPT09dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEmJihuLnByZW11bHRpcGxpZWRBbHBoYT10aGlzLnByZW11bHRpcGxpZWRBbHBoYSksITA9PT10aGlzLndpcmVmcmFtZSYmKG4ud2lyZWZyYW1lPXRoaXMud2lyZWZyYW1lKSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD4xJiYobi53aXJlZnJhbWVMaW5ld2lkdGg9dGhpcy53aXJlZnJhbWVMaW5ld2lkdGgpLCJyb3VuZCIhPT10aGlzLndpcmVmcmFtZUxpbmVjYXAmJihuLndpcmVmcmFtZUxpbmVjYXA9dGhpcy53aXJlZnJhbWVMaW5lY2FwKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lam9pbiYmKG4ud2lyZWZyYW1lTGluZWpvaW49dGhpcy53aXJlZnJhbWVMaW5lam9pbiksITA9PT10aGlzLmZsYXRTaGFkaW5nJiYobi5mbGF0U2hhZGluZz10aGlzLmZsYXRTaGFkaW5nKSwhMT09PXRoaXMudmlzaWJsZSYmKG4udmlzaWJsZT0hMSksITE9PT10aGlzLnRvbmVNYXBwZWQmJihuLnRvbmVNYXBwZWQ9ITEpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG4udXNlckRhdGE9dGhpcy51c2VyRGF0YSksZSl7Y29uc3QgZT1vKHQudGV4dHVyZXMpLGk9byh0LmltYWdlcyk7ZS5sZW5ndGg+MCYmKG4udGV4dHVyZXM9ZSksaS5sZW5ndGg+MCYmKG4uaW1hZ2VzPWkpfXJldHVybiBufWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7dGhpcy5uYW1lPXQubmFtZSx0aGlzLmZvZz10LmZvZyx0aGlzLmJsZW5kaW5nPXQuYmxlbmRpbmcsdGhpcy5zaWRlPXQuc2lkZSx0aGlzLnZlcnRleENvbG9ycz10LnZlcnRleENvbG9ycyx0aGlzLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCx0aGlzLmJsZW5kU3JjPXQuYmxlbmRTcmMsdGhpcy5ibGVuZERzdD10LmJsZW5kRHN0LHRoaXMuYmxlbmRFcXVhdGlvbj10LmJsZW5kRXF1YXRpb24sdGhpcy5ibGVuZFNyY0FscGhhPXQuYmxlbmRTcmNBbHBoYSx0aGlzLmJsZW5kRHN0QWxwaGE9dC5ibGVuZERzdEFscGhhLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPXQuYmxlbmRFcXVhdGlvbkFscGhhLHRoaXMuZGVwdGhGdW5jPXQuZGVwdGhGdW5jLHRoaXMuZGVwdGhUZXN0PXQuZGVwdGhUZXN0LHRoaXMuZGVwdGhXcml0ZT10LmRlcHRoV3JpdGUsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayx0aGlzLnN0ZW5jaWxGdW5jPXQuc3RlbmNpbEZ1bmMsdGhpcy5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZix0aGlzLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayx0aGlzLnN0ZW5jaWxGYWlsPXQuc3RlbmNpbEZhaWwsdGhpcy5zdGVuY2lsWkZhaWw9dC5zdGVuY2lsWkZhaWwsdGhpcy5zdGVuY2lsWlBhc3M9dC5zdGVuY2lsWlBhc3MsdGhpcy5zdGVuY2lsV3JpdGU9dC5zdGVuY2lsV3JpdGU7Y29uc3QgZT10LmNsaXBwaW5nUGxhbmVzO2xldCBuPW51bGw7aWYobnVsbCE9PWUpe2NvbnN0IHQ9ZS5sZW5ndGg7bj1uZXcgQXJyYXkodCk7Zm9yKGxldCBvPTA7byE9PXQ7KytvKW5bb109ZVtvXS5jbG9uZSgpfXJldHVybiB0aGlzLmNsaXBwaW5nUGxhbmVzPW4sdGhpcy5jbGlwSW50ZXJzZWN0aW9uPXQuY2xpcEludGVyc2VjdGlvbix0aGlzLmNsaXBTaGFkb3dzPXQuY2xpcFNoYWRvd3MsdGhpcy5zaGFkb3dTaWRlPXQuc2hhZG93U2lkZSx0aGlzLmNvbG9yV3JpdGU9dC5jb2xvcldyaXRlLHRoaXMuYWxwaGFXcml0ZT10LmFscGhhV3JpdGUsdGhpcy5wcmVjaXNpb249dC5wcmVjaXNpb24sdGhpcy5wb2x5Z29uT2Zmc2V0PXQucG9seWdvbk9mZnNldCx0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3I9dC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPXQucG9seWdvbk9mZnNldFVuaXRzLHRoaXMuZGl0aGVyaW5nPXQuZGl0aGVyaW5nLHRoaXMuYWxwaGFUZXN0PXQuYWxwaGFUZXN0LHRoaXMuYWxwaGFUb0NvdmVyYWdlPXQuYWxwaGFUb0NvdmVyYWdlLHRoaXMucHJlbXVsdGlwbGllZEFscGhhPXQucHJlbXVsdGlwbGllZEFscGhhLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy50b25lTWFwcGVkPXQudG9uZU1hcHBlZCx0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX1zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK319X2N0LnByb3RvdHlwZS5pc01hdGVyaWFsPSEwO2NsYXNzIENjdCBleHRlbmRzIF9jdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaEJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFpzdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319Q2N0LnByb3RvdHlwZS5pc01lc2hCYXNpY01hdGVyaWFsPSEwO2NvbnN0IE1jdD1uZXcgaWx0LHZjdD1uZXcgRnN0O2NsYXNzIHhjdHtjb25zdHJ1Y3Rvcih0LGUsbil7aWYoQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IGFycmF5IHNob3VsZCBiZSBhIFR5cGVkIEFycmF5LiIpO3RoaXMubmFtZT0iIix0aGlzLmFycmF5PXQsdGhpcy5pdGVtU2l6ZT1lLHRoaXMuY291bnQ9dm9pZCAwIT09dD90Lmxlbmd0aC9lOjAsdGhpcy5ub3JtYWxpemVkPSEwPT09bix0aGlzLnVzYWdlPVBzdCx0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX0sdGhpcy52ZXJzaW9uPTB9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuaXRlbVNpemU9dC5pdGVtU2l6ZSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5ub3JtYWxpemVkPXQubm9ybWFsaXplZCx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc31jb3B5QXQodCxlLG4pe3QqPXRoaXMuaXRlbVNpemUsbio9ZS5pdGVtU2l6ZTtmb3IobGV0IG89MCxpPXRoaXMuaXRlbVNpemU7bzxpO28rKyl0aGlzLmFycmF5W3Qrb109ZS5hcnJheVtuK29dO3JldHVybiB0aGlzfWNvcHlBcnJheSh0KXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCksdGhpc31jb3B5Q29sb3JzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBvPTAsaT10Lmxlbmd0aDtvPGk7bysrKXtsZXQgaT10W29dO3ZvaWQgMD09PWkmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoKTogY29sb3IgaXMgdW5kZWZpbmVkIixvKSxpPW5ldyBac3QpLGVbbisrXT1pLnIsZVtuKytdPWkuZyxlW24rK109aS5ifXJldHVybiB0aGlzfWNvcHlWZWN0b3Iyc0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IGk9dFtvXTt2b2lkIDA9PT1pJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjJzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsbyksaT1uZXcgRnN0KSxlW24rK109aS54LGVbbisrXT1pLnl9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjNzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBvPTAsaT10Lmxlbmd0aDtvPGk7bysrKXtsZXQgaT10W29dO3ZvaWQgMD09PWkmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yM3NBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixvKSxpPW5ldyBpbHQpLGVbbisrXT1pLngsZVtuKytdPWkueSxlW24rK109aS56fXJldHVybiB0aGlzfWNvcHlWZWN0b3I0c0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IGk9dFtvXTt2b2lkIDA9PT1pJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjRzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsbyksaT1uZXcgdGx0KSxlW24rK109aS54LGVbbisrXT1pLnksZVtuKytdPWkueixlW24rK109aS53fXJldHVybiB0aGlzfWFwcGx5TWF0cml4Myh0KXtpZigyPT09dGhpcy5pdGVtU2l6ZSlmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKyl2Y3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0aGlzLGUpLHZjdC5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWShlLHZjdC54LHZjdC55KTtlbHNlIGlmKDM9PT10aGlzLml0ZW1TaXplKWZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKU1jdC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksTWN0LmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZWihlLE1jdC54LE1jdC55LE1jdC56KTtyZXR1cm4gdGhpc31hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspTWN0Lng9dGhpcy5nZXRYKGUpLE1jdC55PXRoaXMuZ2V0WShlKSxNY3Quej10aGlzLmdldFooZSksTWN0LmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldFhZWihlLE1jdC54LE1jdC55LE1jdC56KTtyZXR1cm4gdGhpc31hcHBseU5vcm1hbE1hdHJpeCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylNY3QueD10aGlzLmdldFgoZSksTWN0Lnk9dGhpcy5nZXRZKGUpLE1jdC56PXRoaXMuZ2V0WihlKSxNY3QuYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVooZSxNY3QueCxNY3QueSxNY3Queik7cmV0dXJuIHRoaXN9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKU1jdC54PXRoaXMuZ2V0WChlKSxNY3QueT10aGlzLmdldFkoZSksTWN0Lno9dGhpcy5nZXRaKGUpLE1jdC50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpcy5zZXRYWVooZSxNY3QueCxNY3QueSxNY3Queik7cmV0dXJuIHRoaXN9c2V0KHQsZT0wKXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCxlKSx0aGlzfWdldFgodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXX1zZXRYKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXT1lLHRoaXN9Z2V0WSh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV19c2V0WSh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXT1lLHRoaXN9Z2V0Wih0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMl19c2V0Wih0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXT1lLHRoaXN9Z2V0Vyh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM119c2V0Vyh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXT1lLHRoaXN9c2V0WFkodCxlLG4pe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXN9c2V0WFlaKHQsZSxuLG8pe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXMuYXJyYXlbdCsyXT1vLHRoaXN9c2V0WFlaVyh0LGUsbixvLGkpe3JldHVybiB0aGlzLmFycmF5Wyh0Kj10aGlzLml0ZW1TaXplKSswXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXMuYXJyYXlbdCsyXT1vLHRoaXMuYXJyYXlbdCszXT1pLHRoaXN9b25VcGxvYWQodCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hcnJheSx0aGlzLml0ZW1TaXplKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9e2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5hcnJheSksbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9O3JldHVybiIiIT09dGhpcy5uYW1lJiYodC5uYW1lPXRoaXMubmFtZSksdGhpcy51c2FnZSE9PVBzdCYmKHQudXNhZ2U9dGhpcy51c2FnZSksMD09PXRoaXMudXBkYXRlUmFuZ2Uub2Zmc2V0JiYtMT09PXRoaXMudXBkYXRlUmFuZ2UuY291bnR8fCh0LnVwZGF0ZVJhbmdlPXRoaXMudXBkYXRlUmFuZ2UpLHR9fXhjdC5wcm90b3R5cGUuaXNCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgT2N0IGV4dGVuZHMgeGN0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDE2QXJyYXkodCksZSxuKX19Y2xhc3MgUGN0IGV4dGVuZHMgeGN0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDMyQXJyYXkodCksZSxuKX19KGNsYXNzIGV4dGVuZHMgeGN0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDE2QXJyYXkodCksZSxuKX19KS5wcm90b3R5cGUuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlPSEwO2NsYXNzIHdjdCBleHRlbmRzIHhjdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEZsb2F0MzJBcnJheSh0KSxlLG4pfX1sZXQga2N0PTA7Y29uc3QgU2N0PW5ldyB6bHQsRGN0PW5ldyByY3QsUmN0PW5ldyBpbHQsRWN0PW5ldyBzbHQsQWN0PW5ldyBzbHQsVGN0PW5ldyBpbHQ7Y2xhc3MgTmN0IGV4dGVuZHMgRHN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTprY3QrK30pLHRoaXMudXVpZD1Uc3QoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbmRleD1udWxsLHRoaXMuYXR0cmlidXRlcz17fSx0aGlzLm1vcnBoQXR0cmlidXRlcz17fSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPSExLHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGwsdGhpcy5kcmF3UmFuZ2U9e3N0YXJ0OjAsY291bnQ6MS8wfSx0aGlzLnVzZXJEYXRhPXt9fWdldEluZGV4KCl7cmV0dXJuIHRoaXMuaW5kZXh9c2V0SW5kZXgodCl7cmV0dXJuIHRoaXMuaW5kZXg9QXJyYXkuaXNBcnJheSh0KT9uZXcoQnN0KHQpP1BjdDpPY3QpKHQsMSk6dCx0aGlzfWdldEF0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdfXNldEF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF09ZSx0aGlzfWRlbGV0ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gZGVsZXRlIHRoaXMuYXR0cmlidXRlc1t0XSx0aGlzfWhhc0F0dHJpYnV0ZSh0KXtyZXR1cm4gdm9pZCAwIT09dGhpcy5hdHRyaWJ1dGVzW3RdfWFkZEdyb3VwKHQsZSxuPTApe3RoaXMuZ3JvdXBzLnB1c2goe3N0YXJ0OnQsY291bnQ6ZSxtYXRlcmlhbEluZGV4Om59KX1jbGVhckdyb3Vwcygpe3RoaXMuZ3JvdXBzPVtdfXNldERyYXdSYW5nZSh0LGUpe3RoaXMuZHJhd1JhbmdlLnN0YXJ0PXQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9ZX1hcHBseU1hdHJpeDQodCl7Y29uc3QgZT10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb247dm9pZCAwIT09ZSYmKGUuYXBwbHlNYXRyaXg0KHQpLGUubmVlZHNVcGRhdGU9ITApO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtpZih2b2lkIDAhPT1uKXtjb25zdCBlPShuZXcgTHN0KS5nZXROb3JtYWxNYXRyaXgodCk7bi5hcHBseU5vcm1hbE1hdHJpeChlKSxuLm5lZWRzVXBkYXRlPSEwfWNvbnN0IG89dGhpcy5hdHRyaWJ1dGVzLnRhbmdlbnQ7cmV0dXJuIHZvaWQgMCE9PW8mJihvLnRyYW5zZm9ybURpcmVjdGlvbih0KSxvLm5lZWRzVXBkYXRlPSEwKSxudWxsIT09dGhpcy5ib3VuZGluZ0JveCYmdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSxudWxsIT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmdGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSx0aGlzfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gU2N0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFNjdCksdGhpc31yb3RhdGVYKHQpe3JldHVybiBTY3QubWFrZVJvdGF0aW9uWCh0KSx0aGlzLmFwcGx5TWF0cml4NChTY3QpLHRoaXN9cm90YXRlWSh0KXtyZXR1cm4gU2N0Lm1ha2VSb3RhdGlvblkodCksdGhpcy5hcHBseU1hdHJpeDQoU2N0KSx0aGlzfXJvdGF0ZVoodCl7cmV0dXJuIFNjdC5tYWtlUm90YXRpb25aKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFNjdCksdGhpc310cmFuc2xhdGUodCxlLG4pe3JldHVybiBTY3QubWFrZVRyYW5zbGF0aW9uKHQsZSxuKSx0aGlzLmFwcGx5TWF0cml4NChTY3QpLHRoaXN9c2NhbGUodCxlLG4pe3JldHVybiBTY3QubWFrZVNjYWxlKHQsZSxuKSx0aGlzLmFwcGx5TWF0cml4NChTY3QpLHRoaXN9bG9va0F0KHQpe3JldHVybiBEY3QubG9va0F0KHQpLERjdC51cGRhdGVNYXRyaXgoKSx0aGlzLmFwcGx5TWF0cml4NChEY3QubWF0cml4KSx0aGlzfWNlbnRlcigpe3JldHVybiB0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLHRoaXMuYm91bmRpbmdCb3guZ2V0Q2VudGVyKFJjdCkubmVnYXRlKCksdGhpcy50cmFuc2xhdGUoUmN0LngsUmN0LnksUmN0LnopLHRoaXN9c2V0RnJvbVBvaW50cyh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7bjxvO24rKyl7Y29uc3Qgbz10W25dO2UucHVzaChvLngsby55LG8uenx8MCl9cmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHdjdChlLDMpKSx0aGlzfWNvbXB1dGVCb3VuZGluZ0JveCgpe251bGw9PT10aGlzLmJvdW5kaW5nQm94JiYodGhpcy5ib3VuZGluZ0JveD1uZXcgc2x0KTtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixlPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHQmJnQuaXNHTEJ1ZmZlckF0dHJpYnV0ZSlyZXR1cm4gY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IEdMQnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIGEgbWFudWFsIGJvdW5kaW5nIGJveC4gQWx0ZXJuYXRpdmVseSBzZXQgIm1lc2guZnJ1c3R1bUN1bGxlZCIgdG8gImZhbHNlIi4nLHRoaXMpLHZvaWQgdGhpcy5ib3VuZGluZ0JveC5zZXQobmV3IGlsdCgtMS8wLC0xLzAsLTEvMCksbmV3IGlsdCgxLzAsMS8wLDEvMCkpO2lmKHZvaWQgMCE9PXQpe2lmKHRoaXMuYm91bmRpbmdCb3guc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxlKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7RWN0LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUoZVt0XSksdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT8oVGN0LmFkZFZlY3RvcnModGhpcy5ib3VuZGluZ0JveC5taW4sRWN0Lm1pbiksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KFRjdCksVGN0LmFkZFZlY3RvcnModGhpcy5ib3VuZGluZ0JveC5tYXgsRWN0Lm1heCksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KFRjdCkpOih0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoRWN0Lm1pbiksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KEVjdC5tYXgpKX19ZWxzZSB0aGlzLmJvdW5kaW5nQm94Lm1ha2VFbXB0eSgpOyhpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi54KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueSl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnopKSYmY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IENvbXB1dGVkIG1pbi9tYXggaGF2ZSBOYU4gdmFsdWVzLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLHRoaXMpfWNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpe251bGw9PT10aGlzLmJvdW5kaW5nU3BoZXJlJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1uZXcgd2x0KTtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixlPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHQmJnQuaXNHTEJ1ZmZlckF0dHJpYnV0ZSlyZXR1cm4gY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk6IEdMQnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIGEgbWFudWFsIGJvdW5kaW5nIHNwaGVyZS4gQWx0ZXJuYXRpdmVseSBzZXQgIm1lc2guZnJ1c3R1bUN1bGxlZCIgdG8gImZhbHNlIi4nLHRoaXMpLHZvaWQgdGhpcy5ib3VuZGluZ1NwaGVyZS5zZXQobmV3IGlsdCwxLzApO2lmKHQpe2NvbnN0IG49dGhpcy5ib3VuZGluZ1NwaGVyZS5jZW50ZXI7aWYoRWN0LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCksZSlmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe0FjdC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGVbdF0pLHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU/KFRjdC5hZGRWZWN0b3JzKEVjdC5taW4sQWN0Lm1pbiksRWN0LmV4cGFuZEJ5UG9pbnQoVGN0KSxUY3QuYWRkVmVjdG9ycyhFY3QubWF4LEFjdC5tYXgpLEVjdC5leHBhbmRCeVBvaW50KFRjdCkpOihFY3QuZXhwYW5kQnlQb2ludChBY3QubWluKSxFY3QuZXhwYW5kQnlQb2ludChBY3QubWF4KSl9RWN0LmdldENlbnRlcihuKTtsZXQgbz0wO2ZvcihsZXQgZT0wLGk9dC5jb3VudDtlPGk7ZSsrKVRjdC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksbz1NYXRoLm1heChvLG4uZGlzdGFuY2VUb1NxdWFyZWQoVGN0KSk7aWYoZSlmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXSxyPXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU7Zm9yKGxldCBlPTAsaT1hLmNvdW50O2U8aTtlKyspVGN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxlKSxyJiYoUmN0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxUY3QuYWRkKFJjdCkpLG89TWF0aC5tYXgobyxuLmRpc3RhbmNlVG9TcXVhcmVkKFRjdCkpfXRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzPU1hdGguc3FydChvKSxpc05hTih0aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cykmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBDb21wdXRlZCByYWRpdXMgaXMgTmFOLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLHRoaXMpfX1jb21wdXRlVGFuZ2VudHMoKXtjb25zdCB0PXRoaXMuaW5kZXgsZT10aGlzLmF0dHJpYnV0ZXM7aWYobnVsbD09PXR8fHZvaWQgMD09PWUucG9zaXRpb258fHZvaWQgMD09PWUubm9ybWFsfHx2b2lkIDA9PT1lLnV2KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgZmFpbGVkLiBNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKGluZGV4LCBwb3NpdGlvbiwgbm9ybWFsIG9yIHV2KSIpO2NvbnN0IG49dC5hcnJheSxvPWUucG9zaXRpb24uYXJyYXksaT1lLm5vcm1hbC5hcnJheSxhPWUudXYuYXJyYXkscj1vLmxlbmd0aC8zO3ZvaWQgMD09PWUudGFuZ2VudCYmdGhpcy5zZXRBdHRyaWJ1dGUoInRhbmdlbnQiLG5ldyB4Y3QobmV3IEZsb2F0MzJBcnJheSg0KnIpLDQpKTtjb25zdCBzPWUudGFuZ2VudC5hcnJheSxsPVtdLGM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylsW3RdPW5ldyBpbHQsY1t0XT1uZXcgaWx0O2NvbnN0IGQ9bmV3IGlsdCxwPW5ldyBpbHQsbT1uZXcgaWx0LHU9bmV3IEZzdCxmPW5ldyBGc3QsZz1uZXcgRnN0LGg9bmV3IGlsdCxiPW5ldyBpbHQ7ZnVuY3Rpb24geSh0LGUsbil7ZC5mcm9tQXJyYXkobywzKnQpLHAuZnJvbUFycmF5KG8sMyplKSxtLmZyb21BcnJheShvLDMqbiksdS5mcm9tQXJyYXkoYSwyKnQpLGYuZnJvbUFycmF5KGEsMiplKSxnLmZyb21BcnJheShhLDIqbikscC5zdWIoZCksbS5zdWIoZCksZi5zdWIodSksZy5zdWIodSk7Y29uc3QgaT0xLyhmLngqZy55LWcueCpmLnkpO2lzRmluaXRlKGkpJiYoaC5jb3B5KHApLm11bHRpcGx5U2NhbGFyKGcueSkuYWRkU2NhbGVkVmVjdG9yKG0sLWYueSkubXVsdGlwbHlTY2FsYXIoaSksYi5jb3B5KG0pLm11bHRpcGx5U2NhbGFyKGYueCkuYWRkU2NhbGVkVmVjdG9yKHAsLWcueCkubXVsdGlwbHlTY2FsYXIoaSksbFt0XS5hZGQoaCksbFtlXS5hZGQoaCksbFtuXS5hZGQoaCksY1t0XS5hZGQoYiksY1tlXS5hZGQoYiksY1tuXS5hZGQoYikpfWxldCBfPXRoaXMuZ3JvdXBzOzA9PT1fLmxlbmd0aCYmKF89W3tzdGFydDowLGNvdW50Om4ubGVuZ3RofV0pO2ZvcihsZXQgdD0wLGU9Xy5sZW5ndGg7dDxlOysrdCl7Y29uc3QgZT1fW3RdLG89ZS5zdGFydDtmb3IobGV0IHQ9byxpPW8rZS5jb3VudDt0PGk7dCs9Myl5KG5bdCswXSxuW3QrMV0sblt0KzJdKX1jb25zdCBDPW5ldyBpbHQsTT1uZXcgaWx0LHY9bmV3IGlsdCx4PW5ldyBpbHQ7ZnVuY3Rpb24gTyh0KXt2LmZyb21BcnJheShpLDMqdCkseC5jb3B5KHYpO2NvbnN0IGU9bFt0XTtDLmNvcHkoZSksQy5zdWIodi5tdWx0aXBseVNjYWxhcih2LmRvdChlKSkpLm5vcm1hbGl6ZSgpLE0uY3Jvc3NWZWN0b3JzKHgsZSk7Y29uc3Qgbj1NLmRvdChjW3RdKTwwPy0xOjE7c1s0KnRdPUMueCxzWzQqdCsxXT1DLnksc1s0KnQrMl09Qy56LHNbNCp0KzNdPW59Zm9yKGxldCB0PTAsZT1fLmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPV9bdF0sbz1lLnN0YXJ0O2ZvcihsZXQgdD1vLGk9bytlLmNvdW50O3Q8aTt0Kz0zKU8oblt0KzBdKSxPKG5bdCsxXSksTyhuW3QrMl0pfX1jb21wdXRlVmVydGV4Tm9ybWFscygpe2NvbnN0IHQ9dGhpcy5pbmRleCxlPXRoaXMuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpO2lmKHZvaWQgMCE9PWUpe2xldCBuPXRoaXMuZ2V0QXR0cmlidXRlKCJub3JtYWwiKTtpZih2b2lkIDA9PT1uKW49bmV3IHhjdChuZXcgRmxvYXQzMkFycmF5KDMqZS5jb3VudCksMyksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbik7ZWxzZSBmb3IobGV0IHQ9MCxlPW4uY291bnQ7dDxlO3QrKyluLnNldFhZWih0LDAsMCwwKTtjb25zdCBvPW5ldyBpbHQsaT1uZXcgaWx0LGE9bmV3IGlsdCxyPW5ldyBpbHQscz1uZXcgaWx0LGw9bmV3IGlsdCxjPW5ldyBpbHQsZD1uZXcgaWx0O2lmKHQpZm9yKGxldCBwPTAsbT10LmNvdW50O3A8bTtwKz0zKXtjb25zdCBtPXQuZ2V0WChwKzApLHU9dC5nZXRYKHArMSksZj10LmdldFgocCsyKTtvLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxtKSxpLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx1KSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxmKSxjLnN1YlZlY3RvcnMoYSxpKSxkLnN1YlZlY3RvcnMobyxpKSxjLmNyb3NzKGQpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLG0pLHMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHUpLGwuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGYpLHIuYWRkKGMpLHMuYWRkKGMpLGwuYWRkKGMpLG4uc2V0WFlaKG0sci54LHIueSxyLnopLG4uc2V0WFlaKHUscy54LHMueSxzLnopLG4uc2V0WFlaKGYsbC54LGwueSxsLnopfWVsc2UgZm9yKGxldCB0PTAscj1lLmNvdW50O3Q8cjt0Kz0zKW8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMCksaS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCsxKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzIpLGMuc3ViVmVjdG9ycyhhLGkpLGQuc3ViVmVjdG9ycyhvLGkpLGMuY3Jvc3MoZCksbi5zZXRYWVoodCswLGMueCxjLnksYy56KSxuLnNldFhZWih0KzEsYy54LGMueSxjLnopLG4uc2V0WFlaKHQrMixjLngsYy55LGMueik7dGhpcy5ub3JtYWxpemVOb3JtYWxzKCksbi5uZWVkc1VwZGF0ZT0hMH19bWVyZ2UodCxlKXtpZighdHx8IXQuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBnZW9tZXRyeSBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQnVmZmVyR2VvbWV0cnkuIix0KTt2b2lkIDA9PT1lJiYoZT0wLGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkubWVyZ2UoKTogT3ZlcndyaXRpbmcgb3JpZ2luYWwgZ2VvbWV0cnksIHN0YXJ0aW5nIGF0IG9mZnNldD0wLiBVc2UgQnVmZmVyR2VvbWV0cnlVdGlscy5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoKSBmb3IgbG9zc2xlc3MgbWVyZ2UuIikpO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBvIGluIG4pe2lmKHZvaWQgMD09PXQuYXR0cmlidXRlc1tvXSljb250aW51ZTtjb25zdCBpPW5bb10uYXJyYXksYT10LmF0dHJpYnV0ZXNbb10scj1hLmFycmF5LHM9YS5pdGVtU2l6ZSplLGw9TWF0aC5taW4oci5sZW5ndGgsaS5sZW5ndGgtcyk7Zm9yKGxldCB0PTAsZT1zO3Q8bDt0KyssZSsrKWlbZV09clt0XX1yZXR1cm4gdGhpc31ub3JtYWxpemVOb3JtYWxzKCl7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2ZvcihsZXQgZT0wLG49dC5jb3VudDtlPG47ZSsrKVRjdC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksVGN0Lm5vcm1hbGl6ZSgpLHQuc2V0WFlaKGUsVGN0LngsVGN0LnksVGN0LnopfXRvTm9uSW5kZXhlZCgpe2Z1bmN0aW9uIHQodCxlKXtjb25zdCBuPXQuYXJyYXksbz10Lml0ZW1TaXplLGk9dC5ub3JtYWxpemVkLGE9bmV3IG4uY29uc3RydWN0b3IoZS5sZW5ndGgqbyk7bGV0IHI9MCxzPTA7Zm9yKGxldCBpPTAsbD1lLmxlbmd0aDtpPGw7aSsrKXtyPXQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT9lW2ldKnQuZGF0YS5zdHJpZGUrdC5vZmZzZXQ6ZVtpXSpvO2ZvcihsZXQgdD0wO3Q8bzt0KyspYVtzKytdPW5bcisrXX1yZXR1cm4gbmV3IHhjdChhLG8saSl9aWYobnVsbD09PXRoaXMuaW5kZXgpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkudG9Ob25JbmRleGVkKCk6IEJ1ZmZlckdlb21ldHJ5IGlzIGFscmVhZHkgbm9uLWluZGV4ZWQuIiksdGhpcztjb25zdCBlPW5ldyBOY3Qsbj10aGlzLmluZGV4LmFycmF5LG89dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBpIGluIG8pe2NvbnN0IGE9dChvW2ldLG4pO2Uuc2V0QXR0cmlidXRlKGksYSl9Y29uc3QgaT10aGlzLm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgbyBpbiBpKXtjb25zdCBhPVtdLHI9aVtvXTtmb3IobGV0IGU9MCxvPXIubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dChyW2VdLG4pO2EucHVzaChvKX1lLm1vcnBoQXR0cmlidXRlc1tvXT1hfWUubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCBhPXRoaXMuZ3JvdXBzO2ZvcihsZXQgdD0wLG49YS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1hW3RdO2UuYWRkR3JvdXAobi5zdGFydCxuLmNvdW50LG4ubWF0ZXJpYWxJbmRleCl9cmV0dXJuIGV9dG9KU09OKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkJ1ZmZlckdlb21ldHJ5IixnZW5lcmF0b3I6IkJ1ZmZlckdlb21ldHJ5LnRvSlNPTiJ9fTtpZih0LnV1aWQ9dGhpcy51dWlkLHQudHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJih0Lm5hbWU9dGhpcy5uYW1lKSxPYmplY3Qua2V5cyh0aGlzLnVzZXJEYXRhKS5sZW5ndGg+MCYmKHQudXNlckRhdGE9dGhpcy51c2VyRGF0YSksdm9pZCAwIT09dGhpcy5wYXJhbWV0ZXJzKXtjb25zdCBlPXRoaXMucGFyYW1ldGVycztmb3IoY29uc3QgbiBpbiBlKXZvaWQgMCE9PWVbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXQuZGF0YT17YXR0cmlidXRlczp7fX07Y29uc3QgZT10aGlzLmluZGV4O251bGwhPT1lJiYodC5kYXRhLmluZGV4PXt0eXBlOmUuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLmFycmF5KX0pO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBlIGluIG4pe3QuZGF0YS5hdHRyaWJ1dGVzW2VdPW5bZV0udG9KU09OKHQuZGF0YSl9Y29uc3Qgbz17fTtsZXQgaT0hMTtmb3IoY29uc3QgZSBpbiB0aGlzLm1vcnBoQXR0cmlidXRlcyl7Y29uc3Qgbj10aGlzLm1vcnBoQXR0cmlidXRlc1tlXSxhPVtdO2ZvcihsZXQgZT0wLG89bi5sZW5ndGg7ZTxvO2UrKyl7YS5wdXNoKG5bZV0udG9KU09OKHQuZGF0YSkpfWEubGVuZ3RoPjAmJihvW2VdPWEsaT0hMCl9aSYmKHQuZGF0YS5tb3JwaEF0dHJpYnV0ZXM9byx0LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZSk7Y29uc3QgYT10aGlzLmdyb3VwczthLmxlbmd0aD4wJiYodC5kYXRhLmdyb3Vwcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKSk7Y29uc3Qgcj10aGlzLmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09ciYmKHQuZGF0YS5ib3VuZGluZ1NwaGVyZT17Y2VudGVyOnIuY2VudGVyLnRvQXJyYXkoKSxyYWRpdXM6ci5yYWRpdXN9KSx0fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7dGhpcy5pbmRleD1udWxsLHRoaXMuYXR0cmlidXRlcz17fSx0aGlzLm1vcnBoQXR0cmlidXRlcz17fSx0aGlzLmdyb3Vwcz1bXSx0aGlzLmJvdW5kaW5nQm94PW51bGwsdGhpcy5ib3VuZGluZ1NwaGVyZT1udWxsO2NvbnN0IGU9e307dGhpcy5uYW1lPXQubmFtZTtjb25zdCBuPXQuaW5kZXg7bnVsbCE9PW4mJnRoaXMuc2V0SW5kZXgobi5jbG9uZShlKSk7Y29uc3Qgbz10LmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gbyl7dGhpcy5zZXRBdHRyaWJ1dGUodCxvW3RdLmNsb25lKGUpKX1jb25zdCBpPXQubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIGkpe2NvbnN0IG49W10sbz1pW3RdO2ZvcihsZXQgdD0wLGk9by5sZW5ndGg7dDxpO3QrKyluLnB1c2gob1t0XS5jbG9uZShlKSk7dGhpcy5tb3JwaEF0dHJpYnV0ZXNbdF09bn10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPXQubW9ycGhUYXJnZXRzUmVsYXRpdmU7Y29uc3QgYT10Lmdyb3Vwcztmb3IobGV0IHQ9MCxlPWEubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9YVt0XTt0aGlzLmFkZEdyb3VwKGUuc3RhcnQsZS5jb3VudCxlLm1hdGVyaWFsSW5kZXgpfWNvbnN0IHI9dC5ib3VuZGluZ0JveDtudWxsIT09ciYmKHRoaXMuYm91bmRpbmdCb3g9ci5jbG9uZSgpKTtjb25zdCBzPXQuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1zJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1zLmNsb25lKCkpLHRoaXMuZHJhd1JhbmdlLnN0YXJ0PXQuZHJhd1JhbmdlLnN0YXJ0LHRoaXMuZHJhd1JhbmdlLmNvdW50PXQuZHJhd1JhbmdlLmNvdW50LHRoaXMudXNlckRhdGE9dC51c2VyRGF0YSx2b2lkIDAhPT10LnBhcmFtZXRlcnMmJih0aGlzLnBhcmFtZXRlcnM9T2JqZWN0LmFzc2lnbih7fSx0LnBhcmFtZXRlcnMpKSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fU5jdC5wcm90b3R5cGUuaXNCdWZmZXJHZW9tZXRyeT0hMDtjb25zdCB6Y3Q9bmV3IHpsdCxJY3Q9bmV3IE5sdCxIY3Q9bmV3IHdsdCxGY3Q9bmV3IGlsdCxMY3Q9bmV3IGlsdCxCY3Q9bmV3IGlsdCxWY3Q9bmV3IGlsdCxVY3Q9bmV3IGlsdCxqY3Q9bmV3IGlsdCxXY3Q9bmV3IGlsdCxHY3Q9bmV3IGlsdCxZY3Q9bmV3IGlsdCxxY3Q9bmV3IEZzdCxaY3Q9bmV3IEZzdCxYY3Q9bmV3IEZzdCxLY3Q9bmV3IGlsdCxKY3Q9bmV3IGlsdDtjbGFzcyBRY3QgZXh0ZW5kcyByY3R7Y29uc3RydWN0b3IodD1uZXcgTmN0LGU9bmV3IENjdCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2giLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPWUsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzJiYodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMuc2xpY2UoKSksdm9pZCAwIT09dC5tb3JwaFRhcmdldERpY3Rpb25hcnkmJih0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT1PYmplY3QuYXNzaWduKHt9LHQubW9ycGhUYXJnZXREaWN0aW9uYXJ5KSksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC51cGRhdGVNb3JwaFRhcmdldHMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX1yYXljYXN0KHQsZSl7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LG89dGhpcy5tYXRlcmlhbCxpPXRoaXMubWF0cml4V29ybGQ7aWYodm9pZCAwPT09bylyZXR1cm47aWYobnVsbD09PW4uYm91bmRpbmdTcGhlcmUmJm4uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksSGN0LmNvcHkobi5ib3VuZGluZ1NwaGVyZSksSGN0LmFwcGx5TWF0cml4NChpKSwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUoSGN0KSlyZXR1cm47aWYoemN0LmNvcHkoaSkuaW52ZXJ0KCksSWN0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NCh6Y3QpLG51bGwhPT1uLmJvdW5kaW5nQm94JiYhMT09PUljdC5pbnRlcnNlY3RzQm94KG4uYm91bmRpbmdCb3gpKXJldHVybjtsZXQgYTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbixzPW4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLGw9bi5tb3JwaFRhcmdldHNSZWxhdGl2ZSxjPW4uYXR0cmlidXRlcy51dixkPW4uYXR0cmlidXRlcy51djIscD1uLmdyb3VwcyxtPW4uZHJhd1JhbmdlO2lmKG51bGwhPT1pKWlmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBuPTAsdT1wLmxlbmd0aDtuPHU7bisrKXtjb25zdCB1PXBbbl0sZj1vW3UubWF0ZXJpYWxJbmRleF07Zm9yKGxldCBuPU1hdGgubWF4KHUuc3RhcnQsbS5zdGFydCksbz1NYXRoLm1pbihpLmNvdW50LE1hdGgubWluKHUuc3RhcnQrdS5jb3VudCxtLnN0YXJ0K20uY291bnQpKTtuPG87bis9Myl7Y29uc3Qgbz1pLmdldFgobikscD1pLmdldFgobisxKSxtPWkuZ2V0WChuKzIpO2E9JGN0KHRoaXMsZix0LEljdCxyLHMsbCxjLGQsbyxwLG0pLGEmJihhLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksYS5mYWNlLm1hdGVyaWFsSW5kZXg9dS5tYXRlcmlhbEluZGV4LGUucHVzaChhKSl9fWVsc2V7Zm9yKGxldCBuPU1hdGgubWF4KDAsbS5zdGFydCkscD1NYXRoLm1pbihpLmNvdW50LG0uc3RhcnQrbS5jb3VudCk7bjxwO24rPTMpe2NvbnN0IHA9aS5nZXRYKG4pLG09aS5nZXRYKG4rMSksdT1pLmdldFgobisyKTthPSRjdCh0aGlzLG8sdCxJY3QscixzLGwsYyxkLHAsbSx1KSxhJiYoYS5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGUucHVzaChhKSl9fWVsc2UgaWYodm9pZCAwIT09cilpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgbj0wLGk9cC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT1wW25dLHU9b1tpLm1hdGVyaWFsSW5kZXhdO2ZvcihsZXQgbj1NYXRoLm1heChpLnN0YXJ0LG0uc3RhcnQpLG89TWF0aC5taW4oci5jb3VudCxNYXRoLm1pbihpLnN0YXJ0K2kuY291bnQsbS5zdGFydCttLmNvdW50KSk7bjxvO24rPTMpe2E9JGN0KHRoaXMsdSx0LEljdCxyLHMsbCxjLGQsbixuKzEsbisyKSxhJiYoYS5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGEuZmFjZS5tYXRlcmlhbEluZGV4PWkubWF0ZXJpYWxJbmRleCxlLnB1c2goYSkpfX1lbHNle2ZvcihsZXQgbj1NYXRoLm1heCgwLG0uc3RhcnQpLGk9TWF0aC5taW4oci5jb3VudCxtLnN0YXJ0K20uY291bnQpO248aTtuKz0zKXthPSRjdCh0aGlzLG8sdCxJY3QscixzLGwsYyxkLG4sbisxLG4rMiksYSYmKGEuZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxlLnB1c2goYSkpfX19ZWxzZSBuLmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fWZ1bmN0aW9uICRjdCh0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7RmN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxjKSxMY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGQpLEJjdC5mcm9tQnVmZmVyQXR0cmlidXRlKGkscCk7Y29uc3QgbT10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcztpZihhJiZtKXtXY3Quc2V0KDAsMCwwKSxHY3Quc2V0KDAsMCwwKSxZY3Quc2V0KDAsMCwwKTtmb3IobGV0IHQ9MCxlPWEubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9bVt0XSxuPWFbdF07MCE9PWUmJihWY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGMpLFVjdC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZCksamN0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixwKSxyPyhXY3QuYWRkU2NhbGVkVmVjdG9yKFZjdCxlKSxHY3QuYWRkU2NhbGVkVmVjdG9yKFVjdCxlKSxZY3QuYWRkU2NhbGVkVmVjdG9yKGpjdCxlKSk6KFdjdC5hZGRTY2FsZWRWZWN0b3IoVmN0LnN1YihGY3QpLGUpLEdjdC5hZGRTY2FsZWRWZWN0b3IoVWN0LnN1YihMY3QpLGUpLFljdC5hZGRTY2FsZWRWZWN0b3IoamN0LnN1YihCY3QpLGUpKSl9RmN0LmFkZChXY3QpLExjdC5hZGQoR2N0KSxCY3QuYWRkKFljdCl9dC5pc1NraW5uZWRNZXNoJiYodC5ib25lVHJhbnNmb3JtKGMsRmN0KSx0LmJvbmVUcmFuc2Zvcm0oZCxMY3QpLHQuYm9uZVRyYW5zZm9ybShwLEJjdCkpO2NvbnN0IHU9KGZ1bmN0aW9uIGYodCxlLG4sbyxpLGEscixzKXtsZXQgbDtpZihsPTE9PT1lLnNpZGU/by5pbnRlcnNlY3RUcmlhbmdsZShyLGEsaSwhMCxzKTpvLmludGVyc2VjdFRyaWFuZ2xlKGksYSxyLDIhPT1lLnNpZGUscyksbnVsbD09PWwpcmV0dXJuIG51bGw7SmN0LmNvcHkocyksSmN0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKTtjb25zdCBjPW4ucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKEpjdCk7cmV0dXJuIGM8bi5uZWFyfHxjPm4uZmFyP251bGw6e2Rpc3RhbmNlOmMscG9pbnQ6SmN0LmNsb25lKCksb2JqZWN0OnR9fSkodCxlLG4sbyxGY3QsTGN0LEJjdCxLY3QpO2lmKHUpe3MmJihxY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLGMpLFpjdC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsZCksWGN0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxwKSx1LnV2PWJjdC5nZXRVVihLY3QsRmN0LExjdCxCY3QscWN0LFpjdCxYY3QsbmV3IEZzdCkpLGwmJihxY3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLGMpLFpjdC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsZCksWGN0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxwKSx1LnV2Mj1iY3QuZ2V0VVYoS2N0LEZjdCxMY3QsQmN0LHFjdCxaY3QsWGN0LG5ldyBGc3QpKTtjb25zdCB0PXthOmMsYjpkLGM6cCxub3JtYWw6bmV3IGlsdCxtYXRlcmlhbEluZGV4OjB9O2JjdC5nZXROb3JtYWwoRmN0LExjdCxCY3QsdC5ub3JtYWwpLHUuZmFjZT10fXJldHVybiB1fVFjdC5wcm90b3R5cGUuaXNNZXNoPSEwO2NsYXNzIHRkdCBleHRlbmRzIE5jdHtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49MSxvPTEsaT0xLGE9MSl7c3VwZXIoKSx0aGlzLnR5cGU9IkJveEdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0OmUsZGVwdGg6bix3aWR0aFNlZ21lbnRzOm8saGVpZ2h0U2VnbWVudHM6aSxkZXB0aFNlZ21lbnRzOmF9O2NvbnN0IHI9dGhpcztvPU1hdGguZmxvb3IobyksaT1NYXRoLmZsb29yKGkpLGE9TWF0aC5mbG9vcihhKTtjb25zdCBzPVtdLGw9W10sYz1bXSxkPVtdO2xldCBwPTAsbT0wO2Z1bmN0aW9uIHUodCxlLG4sbyxpLGEsdSxmLGcsaCxiKXtjb25zdCB5PWEvZyxfPXUvaCxDPWEvMixNPXUvMix2PWYvMix4PWcrMSxPPWgrMTtsZXQgUD0wLHc9MDtjb25zdCBrPW5ldyBpbHQ7Zm9yKGxldCBhPTA7YTxPO2ErKyl7Y29uc3Qgcj1hKl8tTTtmb3IobGV0IHM9MDtzPHg7cysrKXtrW3RdPShzKnktQykqbyxrW2VdPXIqaSxrW25dPXYsbC5wdXNoKGsueCxrLnksay56KSxrW3RdPTAsa1tlXT0wLGtbbl09Zj4wPzE6LTEsYy5wdXNoKGsueCxrLnksay56KSxkLnB1c2gocy9nKSxkLnB1c2goMS1hL2gpLFArPTF9fWZvcihsZXQgdD0wO3Q8aDt0KyspZm9yKGxldCBlPTA7ZTxnO2UrKyl7Y29uc3Qgbj1wK2UreCoodCsxKSxvPXArKGUrMSkreCoodCsxKSxpPXArKGUrMSkreCp0O3MucHVzaChwK2UreCp0LG4saSkscy5wdXNoKG4sbyxpKSx3Kz02fXIuYWRkR3JvdXAobSx3LGIpLG0rPXcscCs9UH11KCJ6IiwieSIsIngiLC0xLC0xLG4sZSx0LGEsaSwwKSx1KCJ6IiwieSIsIngiLDEsLTEsbixlLC10LGEsaSwxKSx1KCJ4IiwieiIsInkiLDEsMSx0LG4sZSxvLGEsMiksdSgieCIsInoiLCJ5IiwxLC0xLHQsbiwtZSxvLGEsMyksdSgieCIsInkiLCJ6IiwxLC0xLHQsZSxuLG8saSw0KSx1KCJ4IiwieSIsInoiLC0xLC0xLHQsZSwtbixvLGksNSksdGhpcy5zZXRJbmRleChzKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB3Y3QobCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IHdjdChjLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyB3Y3QoZCwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgdGR0KHQud2lkdGgsdC5oZWlnaHQsdC5kZXB0aCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0LmRlcHRoU2VnbWVudHMpfX1mdW5jdGlvbiBlZHQodCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBpbiB0KXtlW25dPXt9O2Zvcihjb25zdCBvIGluIHRbbl0pe2NvbnN0IGk9dFtuXVtvXTtlW25dW29dPWkmJihpLmlzQ29sb3J8fGkuaXNNYXRyaXgzfHxpLmlzTWF0cml4NHx8aS5pc1ZlY3RvcjJ8fGkuaXNWZWN0b3IzfHxpLmlzVmVjdG9yNHx8aS5pc1RleHR1cmV8fGkuaXNRdWF0ZXJuaW9uKT9pLmNsb25lKCk6QXJyYXkuaXNBcnJheShpKT9pLnNsaWNlKCk6aX19cmV0dXJuIGV9ZnVuY3Rpb24gbmR0KHQpe2NvbnN0IGU9e307Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89ZWR0KHRbbl0pO2Zvcihjb25zdCB0IGluIG8pZVt0XT1vW3RdfXJldHVybiBlfWNvbnN0IG9kdD17Y2xvbmU6ZWR0LG1lcmdlOm5kdH07Y2xhc3MgaWR0IGV4dGVuZHMgX2N0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFkZXJNYXRlcmlhbCIsdGhpcy5kZWZpbmVzPXt9LHRoaXMudW5pZm9ybXM9e30sdGhpcy52ZXJ0ZXhTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsdGhpcy5mcmFnbWVudFNoYWRlcj0idm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAxLjAsIDAuMCwgMC4wLCAxLjAgKTtcbn0iLHRoaXMubGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmxpZ2h0cz0hMSx0aGlzLmNsaXBwaW5nPSExLHRoaXMuZXh0ZW5zaW9ucz17ZGVyaXZhdGl2ZXM6ITEsZnJhZ0RlcHRoOiExLGRyYXdCdWZmZXJzOiExLHNoYWRlclRleHR1cmVMT0Q6ITF9LHRoaXMuZGVmYXVsdEF0dHJpYnV0ZVZhbHVlcz17Y29sb3I6WzEsMSwxXSx1djpbMCwwXSx1djI6WzAsMF19LHRoaXMuaW5kZXgwQXR0cmlidXRlTmFtZT12b2lkIDAsdGhpcy51bmlmb3Jtc05lZWRVcGRhdGU9ITEsdGhpcy5nbHNsVmVyc2lvbj1udWxsLHZvaWQgMCE9PXQmJih2b2lkIDAhPT10LmF0dHJpYnV0ZXMmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlNoYWRlck1hdGVyaWFsOiBhdHRyaWJ1dGVzIHNob3VsZCBub3cgYmUgZGVmaW5lZCBpbiBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpLHRoaXMuc2V0VmFsdWVzKHQpKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZnJhZ21lbnRTaGFkZXI9dC5mcmFnbWVudFNoYWRlcix0aGlzLnZlcnRleFNoYWRlcj10LnZlcnRleFNoYWRlcix0aGlzLnVuaWZvcm1zPWVkdCh0LnVuaWZvcm1zKSx0aGlzLmRlZmluZXM9T2JqZWN0LmFzc2lnbih7fSx0LmRlZmluZXMpLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMubGlnaHRzPXQubGlnaHRzLHRoaXMuY2xpcHBpbmc9dC5jbGlwcGluZyx0aGlzLmV4dGVuc2lvbnM9T2JqZWN0LmFzc2lnbih7fSx0LmV4dGVuc2lvbnMpLHRoaXMuZ2xzbFZlcnNpb249dC5nbHNsVmVyc2lvbix0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtlLmdsc2xWZXJzaW9uPXRoaXMuZ2xzbFZlcnNpb24sZS51bmlmb3Jtcz17fTtmb3IoY29uc3QgbiBpbiB0aGlzLnVuaWZvcm1zKXtjb25zdCBvPXRoaXMudW5pZm9ybXNbbl0udmFsdWU7ZS51bmlmb3Jtc1tuXT1vJiZvLmlzVGV4dHVyZT97dHlwZToidCIsdmFsdWU6by50b0pTT04odCkudXVpZH06byYmby5pc0NvbG9yP3t0eXBlOiJjIix2YWx1ZTpvLmdldEhleCgpfTpvJiZvLmlzVmVjdG9yMj97dHlwZToidjIiLHZhbHVlOm8udG9BcnJheSgpfTpvJiZvLmlzVmVjdG9yMz97dHlwZToidjMiLHZhbHVlOm8udG9BcnJheSgpfTpvJiZvLmlzVmVjdG9yND97dHlwZToidjQiLHZhbHVlOm8udG9BcnJheSgpfTpvJiZvLmlzTWF0cml4Mz97dHlwZToibTMiLHZhbHVlOm8udG9BcnJheSgpfTpvJiZvLmlzTWF0cml4ND97dHlwZToibTQiLHZhbHVlOm8udG9BcnJheSgpfTp7dmFsdWU6b319T2JqZWN0LmtleXModGhpcy5kZWZpbmVzKS5sZW5ndGg+MCYmKGUuZGVmaW5lcz10aGlzLmRlZmluZXMpLGUudmVydGV4U2hhZGVyPXRoaXMudmVydGV4U2hhZGVyLGUuZnJhZ21lbnRTaGFkZXI9dGhpcy5mcmFnbWVudFNoYWRlcjtjb25zdCBuPXt9O2Zvcihjb25zdCB0IGluIHRoaXMuZXh0ZW5zaW9ucykhMD09PXRoaXMuZXh0ZW5zaW9uc1t0XSYmKG5bdF09ITApO3JldHVybiBPYmplY3Qua2V5cyhuKS5sZW5ndGg+MCYmKGUuZXh0ZW5zaW9ucz1uKSxlfX1pZHQucHJvdG90eXBlLmlzU2hhZGVyTWF0ZXJpYWw9ITA7Y2xhc3MgYWR0IGV4dGVuZHMgcmN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkNhbWVyYSIsdGhpcy5tYXRyaXhXb3JsZEludmVyc2U9bmV3IHpsdCx0aGlzLnByb2plY3Rpb25NYXRyaXg9bmV3IHpsdCx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlPW5ldyB6bHR9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5wcm9qZWN0aW9uTWF0cml4LmNvcHkodC5wcm9qZWN0aW9uTWF0cml4KSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSksdGhpc31nZXRXb3JsZERpcmVjdGlvbih0KXt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTtjb25zdCBlPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KC1lWzhdLC1lWzldLC1lWzEwXSkubm9ybWFsaXplKCl9dXBkYXRlTWF0cml4V29ybGQodCl7c3VwZXIudXBkYXRlTWF0cml4V29ybGQodCksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKX11cGRhdGVXb3JsZE1hdHJpeCh0LGUpe3N1cGVyLnVwZGF0ZVdvcmxkTWF0cml4KHQsZSksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19YWR0LnByb3RvdHlwZS5pc0NhbWVyYT0hMDtjbGFzcyByZHQgZXh0ZW5kcyBhZHR7Y29uc3RydWN0b3IodD01MCxlPTEsbj0uMSxvPTJlMyl7c3VwZXIoKSx0aGlzLnR5cGU9IlBlcnNwZWN0aXZlQ2FtZXJhIix0aGlzLmZvdj10LHRoaXMuem9vbT0xLHRoaXMubmVhcj1uLHRoaXMuZmFyPW8sdGhpcy5mb2N1cz0xMCx0aGlzLmFzcGVjdD1lLHRoaXMudmlldz1udWxsLHRoaXMuZmlsbUdhdWdlPTM1LHRoaXMuZmlsbU9mZnNldD0wLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMuZm92PXQuZm92LHRoaXMuem9vbT10Lnpvb20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLmZvY3VzPXQuZm9jdXMsdGhpcy5hc3BlY3Q9dC5hc3BlY3QsdGhpcy52aWV3PW51bGw9PT10LnZpZXc/bnVsbDpPYmplY3QuYXNzaWduKHt9LHQudmlldyksdGhpcy5maWxtR2F1Z2U9dC5maWxtR2F1Z2UsdGhpcy5maWxtT2Zmc2V0PXQuZmlsbU9mZnNldCx0aGlzfXNldEZvY2FsTGVuZ3RoKHQpe2NvbnN0IGU9LjUqdGhpcy5nZXRGaWxtSGVpZ2h0KCkvdDt0aGlzLmZvdj0yKkFzdCpNYXRoLmF0YW4oZSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Z2V0Rm9jYWxMZW5ndGgoKXtjb25zdCB0PU1hdGgudGFuKC41KkVzdCp0aGlzLmZvdik7cmV0dXJuLjUqdGhpcy5nZXRGaWxtSGVpZ2h0KCkvdH1nZXRFZmZlY3RpdmVGT1YoKXtyZXR1cm4gMipBc3QqTWF0aC5hdGFuKE1hdGgudGFuKC41KkVzdCp0aGlzLmZvdikvdGhpcy56b29tKX1nZXRGaWxtV2lkdGgoKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UqTWF0aC5taW4odGhpcy5hc3BlY3QsMSl9Z2V0RmlsbUhlaWdodCgpe3JldHVybiB0aGlzLmZpbG1HYXVnZS9NYXRoLm1heCh0aGlzLmFzcGVjdCwxKX1zZXRWaWV3T2Zmc2V0KHQsZSxuLG8saSxhKXt0aGlzLmFzcGVjdD10L2UsbnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PWUsdGhpcy52aWV3Lm9mZnNldFg9bix0aGlzLnZpZXcub2Zmc2V0WT1vLHRoaXMudmlldy53aWR0aD1pLHRoaXMudmlldy5oZWlnaHQ9YSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jbGVhclZpZXdPZmZzZXQoKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKXtjb25zdCB0PXRoaXMubmVhcjtsZXQgZT10Kk1hdGgudGFuKC41KkVzdCp0aGlzLmZvdikvdGhpcy56b29tLG49MiplLG89dGhpcy5hc3BlY3QqbixpPS0uNSpvO2NvbnN0IGE9dGhpcy52aWV3O2lmKG51bGwhPT10aGlzLnZpZXcmJnRoaXMudmlldy5lbmFibGVkKXtjb25zdCB0PWEuZnVsbFdpZHRoLHI9YS5mdWxsSGVpZ2h0O2krPWEub2Zmc2V0WCpvL3QsZS09YS5vZmZzZXRZKm4vcixvKj1hLndpZHRoL3Qsbio9YS5oZWlnaHQvcn1jb25zdCByPXRoaXMuZmlsbU9mZnNldDswIT09ciYmKGkrPXQqci90aGlzLmdldEZpbG1XaWR0aCgpKSx0aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKGksaStvLGUsZS1uLHQsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3QuZm92PXRoaXMuZm92LGUub2JqZWN0Lnpvb209dGhpcy56b29tLGUub2JqZWN0Lm5lYXI9dGhpcy5uZWFyLGUub2JqZWN0LmZhcj10aGlzLmZhcixlLm9iamVjdC5mb2N1cz10aGlzLmZvY3VzLGUub2JqZWN0LmFzcGVjdD10aGlzLmFzcGVjdCxudWxsIT09dGhpcy52aWV3JiYoZS5vYmplY3Qudmlldz1PYmplY3QuYXNzaWduKHt9LHRoaXMudmlldykpLGUub2JqZWN0LmZpbG1HYXVnZT10aGlzLmZpbG1HYXVnZSxlLm9iamVjdC5maWxtT2Zmc2V0PXRoaXMuZmlsbU9mZnNldCxlfX1yZHQucHJvdG90eXBlLmlzUGVyc3BlY3RpdmVDYW1lcmE9ITA7Y29uc3Qgc2R0PTkwO2NsYXNzIGxkdCBleHRlbmRzIHJjdHtjb25zdHJ1Y3Rvcih0LGUsbil7aWYoc3VwZXIoKSx0aGlzLnR5cGU9IkN1YmVDYW1lcmEiLCEwIT09bi5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5DdWJlQ2FtZXJhOiBUaGUgY29uc3RydWN0b3Igbm93IGV4cGVjdHMgYW4gaW5zdGFuY2Ugb2YgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0IGFzIHRoaXJkIHBhcmFtZXRlci4iKTt0aGlzLnJlbmRlclRhcmdldD1uO2NvbnN0IG89bmV3IHJkdChzZHQsMSx0LGUpO28ubGF5ZXJzPXRoaXMubGF5ZXJzLG8udXAuc2V0KDAsLTEsMCksby5sb29rQXQobmV3IGlsdCgxLDAsMCkpLHRoaXMuYWRkKG8pO2NvbnN0IGk9bmV3IHJkdChzZHQsMSx0LGUpO2kubGF5ZXJzPXRoaXMubGF5ZXJzLGkudXAuc2V0KDAsLTEsMCksaS5sb29rQXQobmV3IGlsdCgtMSwwLDApKSx0aGlzLmFkZChpKTtjb25zdCBhPW5ldyByZHQoc2R0LDEsdCxlKTthLmxheWVycz10aGlzLmxheWVycyxhLnVwLnNldCgwLDAsMSksYS5sb29rQXQobmV3IGlsdCgwLDEsMCkpLHRoaXMuYWRkKGEpO2NvbnN0IHI9bmV3IHJkdChzZHQsMSx0LGUpO3IubGF5ZXJzPXRoaXMubGF5ZXJzLHIudXAuc2V0KDAsMCwtMSksci5sb29rQXQobmV3IGlsdCgwLC0xLDApKSx0aGlzLmFkZChyKTtjb25zdCBzPW5ldyByZHQoc2R0LDEsdCxlKTtzLmxheWVycz10aGlzLmxheWVycyxzLnVwLnNldCgwLC0xLDApLHMubG9va0F0KG5ldyBpbHQoMCwwLDEpKSx0aGlzLmFkZChzKTtjb25zdCBsPW5ldyByZHQoc2R0LDEsdCxlKTtsLmxheWVycz10aGlzLmxheWVycyxsLnVwLnNldCgwLC0xLDApLGwubG9va0F0KG5ldyBpbHQoMCwwLC0xKSksdGhpcy5hZGQobCl9dXBkYXRlKHQsZSl7bnVsbD09PXRoaXMucGFyZW50JiZ0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCk7Y29uc3Qgbj10aGlzLnJlbmRlclRhcmdldCxbbyxpLGEscixzLGxdPXRoaXMuY2hpbGRyZW4sYz10LnhyLmVuYWJsZWQsZD10LmdldFJlbmRlclRhcmdldCgpO3QueHIuZW5hYmxlZD0hMTtjb25zdCBwPW4udGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM7bi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz0hMSx0LnNldFJlbmRlclRhcmdldChuLDApLHQucmVuZGVyKGUsbyksdC5zZXRSZW5kZXJUYXJnZXQobiwxKSx0LnJlbmRlcihlLGkpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMiksdC5yZW5kZXIoZSxhKSx0LnNldFJlbmRlclRhcmdldChuLDMpLHQucmVuZGVyKGUsciksdC5zZXRSZW5kZXJUYXJnZXQobiw0KSx0LnJlbmRlcihlLHMpLG4udGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9cCx0LnNldFJlbmRlclRhcmdldChuLDUpLHQucmVuZGVyKGUsbCksdC5zZXRSZW5kZXJUYXJnZXQoZCksdC54ci5lbmFibGVkPWMsbi50ZXh0dXJlLm5lZWRzUE1SRU1VcGRhdGU9ITB9fWNsYXNzIGNkdCBleHRlbmRzIFFzdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjKXtzdXBlcih0PXZvaWQgMCE9PXQ/dDpbXSxlPXZvaWQgMCE9PWU/ZTpxcnQsbixvLGksYSxyLHMsbCxjKSx0aGlzLmZsaXBZPSExfWdldCBpbWFnZXMoKXtyZXR1cm4gdGhpcy5pbWFnZX1zZXQgaW1hZ2VzKHQpe3RoaXMuaW1hZ2U9dH19Y2R0LnByb3RvdHlwZS5pc0N1YmVUZXh0dXJlPSEwO2NsYXNzIGRkdCBleHRlbmRzIGVsdHtjb25zdHJ1Y3Rvcih0LGUsbil7TnVtYmVyLmlzSW50ZWdlcihlKSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xDdWJlUmVuZGVyVGFyZ2V0OiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgaXMgbm93IFdlYkdMQ3ViZVJlbmRlclRhcmdldCggc2l6ZSwgb3B0aW9ucyApIiksZT1uKSxzdXBlcih0LHQsZSksdGhpcy50ZXh0dXJlPW5ldyBjZHQodm9pZCAwLChlPWV8fHt9KS5tYXBwaW5nLGUud3JhcFMsZS53cmFwVCxlLm1hZ0ZpbHRlcixlLm1pbkZpbHRlcixlLmZvcm1hdCxlLnR5cGUsZS5hbmlzb3Ryb3B5LGUuZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1lLmdlbmVyYXRlTWlwbWFwcyYmZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1lLm1pbkZpbHRlcj9lLm1pbkZpbHRlcjp0c3R9ZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxlKXt0aGlzLnRleHR1cmUudHlwZT1lLnR5cGUsdGhpcy50ZXh0dXJlLmZvcm1hdD1sc3QsdGhpcy50ZXh0dXJlLmVuY29kaW5nPWUuZW5jb2RpbmcsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1lLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPWUubWluRmlsdGVyLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZS5tYWdGaWx0ZXI7Y29uc3Qgbj17dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjoiXG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHR2ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXG5cdFx0XHRcdFx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cblx0XHRcdFx0XHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHRcdFx0XHRcdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblxuXHRcdFx0XHR9XG5cdFx0XHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXG5cdFx0XHRcdH1cblx0XHRcdCJ9LG89bmV3IHRkdCg1LDUsNSksaT1uZXcgaWR0KHtuYW1lOiJDdWJlbWFwRnJvbUVxdWlyZWN0Iix1bmlmb3JtczplZHQobi51bmlmb3JtcyksdmVydGV4U2hhZGVyOm4udmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOm4uZnJhZ21lbnRTaGFkZXIsc2lkZToxLGJsZW5kaW5nOjB9KTtpLnVuaWZvcm1zLnRFcXVpcmVjdC52YWx1ZT1lO2NvbnN0IGE9bmV3IFFjdChvLGkpLHI9ZS5taW5GaWx0ZXI7ZS5taW5GaWx0ZXI9PT1lc3QmJihlLm1pbkZpbHRlcj10c3QpO3JldHVybiBuZXcgbGR0KDEsMTAsdGhpcykudXBkYXRlKHQsYSksZS5taW5GaWx0ZXI9cixhLmdlb21ldHJ5LmRpc3Bvc2UoKSxhLm1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzfWNsZWFyKHQsZSxuLG8pe2NvbnN0IGk9dC5nZXRSZW5kZXJUYXJnZXQoKTtmb3IobGV0IGk9MDtpPDY7aSsrKXQuc2V0UmVuZGVyVGFyZ2V0KHRoaXMsaSksdC5jbGVhcihlLG4sbyk7dC5zZXRSZW5kZXJUYXJnZXQoaSl9fWRkdC5wcm90b3R5cGUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ9ITA7Y29uc3QgcGR0PW5ldyBpbHQsbWR0PW5ldyBpbHQsdWR0PW5ldyBMc3Q7Y2xhc3MgZmR0e2NvbnN0cnVjdG9yKHQ9bmV3IGlsdCgxLDAsMCksZT0wKXt0aGlzLm5vcm1hbD10LHRoaXMuY29uc3RhbnQ9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PWUsdGhpc31zZXRDb21wb25lbnRzKHQsZSxuLG8pe3JldHVybiB0aGlzLm5vcm1hbC5zZXQodCxlLG4pLHRoaXMuY29uc3RhbnQ9byx0aGlzfXNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHQsZSl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD0tZS5kb3QodGhpcy5ub3JtYWwpLHRoaXN9c2V0RnJvbUNvcGxhbmFyUG9pbnRzKHQsZSxuKXtjb25zdCBvPXBkdC5zdWJWZWN0b3JzKG4sZSkuY3Jvc3MobWR0LnN1YlZlY3RvcnModCxlKSkubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuc2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQobyx0KSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodC5ub3JtYWwpLHRoaXMuY29uc3RhbnQ9dC5jb25zdGFudCx0aGlzfW5vcm1hbGl6ZSgpe2NvbnN0IHQ9MS90aGlzLm5vcm1hbC5sZW5ndGgoKTtyZXR1cm4gdGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIodCksdGhpcy5jb25zdGFudCo9dCx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLmNvbnN0YW50Kj0tMSx0aGlzLm5vcm1hbC5uZWdhdGUoKSx0aGlzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuZG90KHQpK3RoaXMuY29uc3RhbnR9ZGlzdGFuY2VUb1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQodC5jZW50ZXIpLXQucmFkaXVzfXByb2plY3RQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludCh0KSkuYWRkKHQpfWludGVyc2VjdExpbmUodCxlKXtjb25zdCBuPXQuZGVsdGEocGR0KSxvPXRoaXMubm9ybWFsLmRvdChuKTtpZigwPT09bylyZXR1cm4gMD09PXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpP2UuY29weSh0LnN0YXJ0KTpudWxsO2NvbnN0IGk9LSh0LnN0YXJ0LmRvdCh0aGlzLm5vcm1hbCkrdGhpcy5jb25zdGFudCkvbztyZXR1cm4gaTwwfHxpPjE/bnVsbDplLmNvcHkobikubXVsdGlwbHlTY2FsYXIoaSkuYWRkKHQuc3RhcnQpfWludGVyc2VjdHNMaW5lKHQpe2NvbnN0IGU9dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5zdGFydCksbj10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmVuZCk7cmV0dXJuIGU8MCYmbj4wfHxuPDAmJmU+MH1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1jb3BsYW5hclBvaW50KHQpe3JldHVybiB0LmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmNvbnN0YW50KX1hcHBseU1hdHJpeDQodCxlKXtjb25zdCBuPWV8fHVkdC5nZXROb3JtYWxNYXRyaXgodCksbz10aGlzLmNvcGxhbmFyUG9pbnQocGR0KS5hcHBseU1hdHJpeDQodCksaT10aGlzLm5vcm1hbC5hcHBseU1hdHJpeDMobikubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuY29uc3RhbnQ9LW8uZG90KGkpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLmNvbnN0YW50LT10LmRvdCh0aGlzLm5vcm1hbCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubm9ybWFsLmVxdWFscyh0aGlzLm5vcm1hbCkmJnQuY29uc3RhbnQ9PT10aGlzLmNvbnN0YW50fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1mZHQucHJvdG90eXBlLmlzUGxhbmU9ITA7Y29uc3QgZ2R0PW5ldyB3bHQsaGR0PW5ldyBpbHQ7Y2xhc3MgYmR0e2NvbnN0cnVjdG9yKHQ9bmV3IGZkdCxlPW5ldyBmZHQsbj1uZXcgZmR0LG89bmV3IGZkdCxpPW5ldyBmZHQsYT1uZXcgZmR0KXt0aGlzLnBsYW5lcz1bdCxlLG4sbyxpLGFdfXNldCh0LGUsbixvLGksYSl7Y29uc3Qgcj10aGlzLnBsYW5lcztyZXR1cm4gclswXS5jb3B5KHQpLHJbMV0uY29weShlKSxyWzJdLmNvcHkobiksclszXS5jb3B5KG8pLHJbNF0uY29weShpKSxyWzVdLmNvcHkoYSksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyllW25dLmNvcHkodC5wbGFuZXNbbl0pO3JldHVybiB0aGlzfXNldEZyb21Qcm9qZWN0aW9uTWF0cml4KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXMsbj10LmVsZW1lbnRzLG89blswXSxpPW5bMV0sYT1uWzJdLHI9blszXSxzPW5bNF0sbD1uWzVdLGM9bls2XSxkPW5bN10scD1uWzhdLG09bls5XSx1PW5bMTBdLGY9blsxMV0sZz1uWzEyXSxoPW5bMTNdLGI9blsxNF0seT1uWzE1XTtyZXR1cm4gZVswXS5zZXRDb21wb25lbnRzKHItbyxkLXMsZi1wLHktZykubm9ybWFsaXplKCksZVsxXS5zZXRDb21wb25lbnRzKHIrbyxkK3MsZitwLHkrZykubm9ybWFsaXplKCksZVsyXS5zZXRDb21wb25lbnRzKHIraSxkK2wsZittLHkraCkubm9ybWFsaXplKCksZVszXS5zZXRDb21wb25lbnRzKHItaSxkLWwsZi1tLHktaCkubm9ybWFsaXplKCksZVs0XS5zZXRDb21wb25lbnRzKHItYSxkLWMsZi11LHktYikubm9ybWFsaXplKCksZVs1XS5zZXRDb21wb25lbnRzKHIrYSxkK2MsZit1LHkrYikubm9ybWFsaXplKCksdGhpc31pbnRlcnNlY3RzT2JqZWN0KHQpe2NvbnN0IGU9dC5nZW9tZXRyeTtyZXR1cm4gbnVsbD09PWUuYm91bmRpbmdTcGhlcmUmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksZ2R0LmNvcHkoZS5ib3VuZGluZ1NwaGVyZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShnZHQpfWludGVyc2VjdHNTcHJpdGUodCl7cmV0dXJuIGdkdC5jZW50ZXIuc2V0KDAsMCwwKSxnZHQucmFkaXVzPS43MDcxMDY3ODExODY1NDc2LGdkdC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKGdkdCl9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucGxhbmVzLG49dC5jZW50ZXIsbz0tdC5yYWRpdXM7Zm9yKGxldCB0PTA7dDw2O3QrKyl7aWYoZVt0XS5kaXN0YW5jZVRvUG9pbnQobik8bylyZXR1cm4hMX1yZXR1cm4hMH1pbnRlcnNlY3RzQm94KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyl7Y29uc3Qgbz1lW25dO2lmKGhkdC54PW8ubm9ybWFsLng+MD90Lm1heC54OnQubWluLngsaGR0Lnk9by5ub3JtYWwueT4wP3QubWF4Lnk6dC5taW4ueSxoZHQuej1vLm5vcm1hbC56PjA/dC5tYXguejp0Lm1pbi56LG8uZGlzdGFuY2VUb1BvaW50KGhkdCk8MClyZXR1cm4hMX1yZXR1cm4hMH1jb250YWluc1BvaW50KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKylpZihlW25dLmRpc3RhbmNlVG9Qb2ludCh0KTwwKXJldHVybiExO3JldHVybiEwfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1mdW5jdGlvbiB5ZHQoKXtsZXQgdD1udWxsLGU9ITEsbj1udWxsLG89bnVsbDtmdW5jdGlvbiBpKGUsYSl7bihlLGEpLG89dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaSl9cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7ITAhPT1lJiZudWxsIT09biYmKG89dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaSksZT0hMCl9LHN0b3A6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKG8pLGU9ITF9LHNldEFuaW1hdGlvbkxvb3A6ZnVuY3Rpb24odCl7bj10fSxzZXRDb250ZXh0OmZ1bmN0aW9uKGUpe3Q9ZX19fWZ1bmN0aW9uIF9kdCh0LGUpe2NvbnN0IG49ZS5pc1dlYkdMMixvPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYodD10LmRhdGEpLG8uZ2V0KHQpfSxyZW1vdmU6ZnVuY3Rpb24gYShlKXtlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihlPWUuZGF0YSk7Y29uc3Qgbj1vLmdldChlKTtuJiYodC5kZWxldGVCdWZmZXIobi5idWZmZXIpLG8uZGVsZXRlKGUpKX0sdXBkYXRlOmZ1bmN0aW9uIHIoZSxpKXtpZihlLmlzR0xCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IHQ9by5nZXQoZSk7cmV0dXJuIHZvaWQoKCF0fHx0LnZlcnNpb248ZS52ZXJzaW9uKSYmby5zZXQoZSx7YnVmZmVyOmUuYnVmZmVyLHR5cGU6ZS50eXBlLGJ5dGVzUGVyRWxlbWVudDplLmVsZW1lbnRTaXplLHZlcnNpb246ZS52ZXJzaW9ufSkpfWUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGU9ZS5kYXRhKTtjb25zdCBhPW8uZ2V0KGUpO3ZvaWQgMD09PWE/by5zZXQoZSwoZnVuY3Rpb24gcihlLG8pe2NvbnN0IGk9ZS5hcnJheSxhPWUudXNhZ2Uscj10LmNyZWF0ZUJ1ZmZlcigpO3QuYmluZEJ1ZmZlcihvLHIpLHQuYnVmZmVyRGF0YShvLGksYSksZS5vblVwbG9hZENhbGxiYWNrKCk7bGV0IHM9NTEyNjtyZXR1cm4gaSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheT9zPTUxMjY6aSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheT9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVW5zdXBwb3J0ZWQgZGF0YSBidWZmZXIgZm9ybWF0OiBGbG9hdDY0QXJyYXkuIik6aSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5P2UuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlP24/cz01MTMxOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVc2FnZSBvZiBGbG9hdDE2QnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIFdlYkdMMi4iKTpzPTUxMjM6aSBpbnN0YW5jZW9mIEludDE2QXJyYXk/cz01MTIyOmkgaW5zdGFuY2VvZiBVaW50MzJBcnJheT9zPTUxMjU6aSBpbnN0YW5jZW9mIEludDMyQXJyYXk/cz01MTI0OmkgaW5zdGFuY2VvZiBJbnQ4QXJyYXk/cz01MTIwOihpIGluc3RhbmNlb2YgVWludDhBcnJheXx8aSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSYmKHM9NTEyMSkse2J1ZmZlcjpyLHR5cGU6cyxieXRlc1BlckVsZW1lbnQ6aS5CWVRFU19QRVJfRUxFTUVOVCx2ZXJzaW9uOmUudmVyc2lvbn19KShlLGkpKTphLnZlcnNpb248ZS52ZXJzaW9uJiYoIShmdW5jdGlvbiBzKGUsbyxpKXtjb25zdCBhPW8uYXJyYXkscj1vLnVwZGF0ZVJhbmdlO3QuYmluZEJ1ZmZlcihpLGUpLC0xPT09ci5jb3VudD90LmJ1ZmZlclN1YkRhdGEoaSwwLGEpOihuP3QuYnVmZmVyU3ViRGF0YShpLHIub2Zmc2V0KmEuQllURVNfUEVSX0VMRU1FTlQsYSxyLm9mZnNldCxyLmNvdW50KTp0LmJ1ZmZlclN1YkRhdGEoaSxyLm9mZnNldCphLkJZVEVTX1BFUl9FTEVNRU5ULGEuc3ViYXJyYXkoci5vZmZzZXQsci5vZmZzZXQrci5jb3VudCkpLHIuY291bnQ9LTEpfSkoYS5idWZmZXIsZSxpKSxhLnZlcnNpb249ZS52ZXJzaW9uKX19fWNsYXNzIENkdCBleHRlbmRzIE5jdHtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49MSxvPTEpe3N1cGVyKCksdGhpcy50eXBlPSJQbGFuZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0OmUsd2lkdGhTZWdtZW50czpuLGhlaWdodFNlZ21lbnRzOm99O2NvbnN0IGk9dC8yLGE9ZS8yLHI9TWF0aC5mbG9vcihuKSxzPU1hdGguZmxvb3IobyksbD1yKzEsYz1zKzEsZD10L3IscD1lL3MsbT1bXSx1PVtdLGY9W10sZz1bXTtmb3IobGV0IHQ9MDt0PGM7dCsrKXtjb25zdCBlPXQqcC1hO2ZvcihsZXQgbj0wO248bDtuKyspe3UucHVzaChuKmQtaSwtZSwwKSxmLnB1c2goMCwwLDEpLGcucHVzaChuL3IpLGcucHVzaCgxLXQvcyl9fWZvcihsZXQgdD0wO3Q8czt0KyspZm9yKGxldCBlPTA7ZTxyO2UrKyl7Y29uc3Qgbj1lK2wqKHQrMSksbz1lKzErbCoodCsxKSxpPWUrMStsKnQ7bS5wdXNoKGUrbCp0LG4saSksbS5wdXNoKG4sbyxpKX10aGlzLnNldEluZGV4KG0pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHdjdCh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgd2N0KGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHdjdChnLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBDZHQodC53aWR0aCx0LmhlaWdodCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyl9fWNvbnN0IE1kdD17YWxwaGFtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZztcbiNlbmRpZiIsYWxwaGFtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsYWxwaGF0ZXN0X2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FMUEhBVEVTVFxuXHRpZiAoIGRpZmZ1c2VDb2xvci5hIDwgYWxwaGFUZXN0ICkgZGlzY2FyZDtcbiNlbmRpZiIsYWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFURVNUXG5cdHVuaWZvcm0gZmxvYXQgYWxwaGFUZXN0O1xuI2VuZGlmIixhb21hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHRmbG9hdCBhbWJpZW50T2NjbHVzaW9uID0gKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBhbWJpZW50T2NjbHVzaW9uO1xuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEIClcblx0XHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqPSBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5yb3VnaG5lc3MgKTtcblx0I2VuZGlmXG4jZW5kaWYiLGFvbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQU9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYW9NYXA7XG5cdHVuaWZvcm0gZmxvYXQgYW9NYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGJlZ2luX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMoIHBvc2l0aW9uICk7IixiZWdpbm5vcm1hbF92ZXJ0ZXg6InZlYzMgb2JqZWN0Tm9ybWFsID0gdmVjMyggbm9ybWFsICk7XG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyBvYmplY3RUYW5nZW50ID0gdmVjMyggdGFuZ2VudC54eXogKTtcbiNlbmRpZiIsYnNkZnM6InZlYzMgQlJERl9MYW1iZXJ0KCBjb25zdCBpbiB2ZWMzIGRpZmZ1c2VDb2xvciApIHtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBkaWZmdXNlQ29sb3I7XG59XG52ZWMzIEZfU2NobGljayggY29uc3QgaW4gdmVjMyBmMCwgY29uc3QgaW4gZmxvYXQgZjkwLCBjb25zdCBpbiBmbG9hdCBkb3RWSCApIHtcblx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLSA1LjU1NDczICogZG90VkggLSA2Ljk4MzE2ICkgKiBkb3RWSCApO1xuXHRyZXR1cm4gZjAgKiAoIDEuMCAtIGZyZXNuZWwgKSArICggZjkwICogZnJlc25lbCApO1xufVxuZmxvYXQgVl9HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGd2ID0gZG90TkwgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRyZXR1cm4gMC41IC8gbWF4KCBndiArIGdsLCBFUFNJTE9OICk7XG59XG5mbG9hdCBEX0dHWCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGRlbm9tID0gcG93MiggZG90TkggKSAqICggYTIgLSAxLjAgKSArIDEuMDtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBhMiAvIHBvdzIoIGRlbm9tICk7XG59XG52ZWMzIEJSREZfR0dYKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiBmbG9hdCBmOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0ZmxvYXQgYWxwaGEgPSBwb3cyKCByb3VnaG5lc3MgKTtcblx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBsaWdodERpciArIHZpZXdEaXIgKTtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGxpZ2h0RGlyICkgKTtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7XG5cdGZsb2F0IGRvdFZIID0gc2F0dXJhdGUoIGRvdCggdmlld0RpciwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggZjAsIGY5MCwgZG90VkggKTtcblx0ZmxvYXQgViA9IFZfR0dYX1NtaXRoQ29ycmVsYXRlZCggYWxwaGEsIGRvdE5MLCBkb3ROViApO1xuXHRmbG9hdCBEID0gRF9HR1goIGFscGhhLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggViAqIEQgKTtcbn1cbnZlYzIgTFRDX1V2KCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCBmbG9hdCBMVVRfU0laRSA9IDY0LjA7XG5cdGNvbnN0IGZsb2F0IExVVF9TQ0FMRSA9ICggTFVUX1NJWkUgLSAxLjAgKSAvIExVVF9TSVpFO1xuXHRjb25zdCBmbG9hdCBMVVRfQklBUyA9IDAuNSAvIExVVF9TSVpFO1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIE4sIFYgKSApO1xuXHR2ZWMyIHV2ID0gdmVjMiggcm91Z2huZXNzLCBzcXJ0KCAxLjAgLSBkb3ROViApICk7XG5cdHV2ID0gdXYgKiBMVVRfU0NBTEUgKyBMVVRfQklBUztcblx0cmV0dXJuIHV2O1xufVxuZmxvYXQgTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIGYgKSB7XG5cdGZsb2F0IGwgPSBsZW5ndGgoIGYgKTtcblx0cmV0dXJuIG1heCggKCBsICogbCArIGYueiApIC8gKCBsICsgMS4wICksIDAuMCApO1xufVxudmVjMyBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgdjEsIGNvbnN0IGluIHZlYzMgdjIgKSB7XG5cdGZsb2F0IHggPSBkb3QoIHYxLCB2MiApO1xuXHRmbG9hdCB5ID0gYWJzKCB4ICk7XG5cdGZsb2F0IGEgPSAwLjg1NDM5ODUgKyAoIDAuNDk2NTE1NSArIDAuMDE0NTIwNiAqIHkgKSAqIHk7XG5cdGZsb2F0IGIgPSAzLjQxNzU5NDAgKyAoIDQuMTYxNjcyNCArIHkgKSAqIHk7XG5cdGZsb2F0IHYgPSBhIC8gYjtcblx0ZmxvYXQgdGhldGFfc2ludGhldGEgPSAoIHggPiAwLjAgKSA/IHYgOiAwLjUgKiBpbnZlcnNlc3FydCggbWF4KCAxLjAgLSB4ICogeCwgMWUtNyApICkgLSB2O1xuXHRyZXR1cm4gY3Jvc3MoIHYxLCB2MiApICogdGhldGFfc2ludGhldGE7XG59XG52ZWMzIExUQ19FdmFsdWF0ZSggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIHZlYzMgUCwgY29uc3QgaW4gbWF0MyBtSW52LCBjb25zdCBpbiB2ZWMzIHJlY3RDb29yZHNbIDQgXSApIHtcblx0dmVjMyB2MSA9IHJlY3RDb29yZHNbIDEgXSAtIHJlY3RDb29yZHNbIDAgXTtcblx0dmVjMyB2MiA9IHJlY3RDb29yZHNbIDMgXSAtIHJlY3RDb29yZHNbIDAgXTtcblx0dmVjMyBsaWdodE5vcm1hbCA9IGNyb3NzKCB2MSwgdjIgKTtcblx0aWYoIGRvdCggbGlnaHROb3JtYWwsIFAgLSByZWN0Q29vcmRzWyAwIF0gKSA8IDAuMCApIHJldHVybiB2ZWMzKCAwLjAgKTtcblx0dmVjMyBUMSwgVDI7XG5cdFQxID0gbm9ybWFsaXplKCBWIC0gTiAqIGRvdCggViwgTiApICk7XG5cdFQyID0gLSBjcm9zcyggTiwgVDEgKTtcblx0bWF0MyBtYXQgPSBtSW52ICogdHJhbnNwb3NlTWF0MyggbWF0MyggVDEsIFQyLCBOICkgKTtcblx0dmVjMyBjb29yZHNbIDQgXTtcblx0Y29vcmRzWyAwIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDAgXSAtIFAgKTtcblx0Y29vcmRzWyAxIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDEgXSAtIFAgKTtcblx0Y29vcmRzWyAyIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDIgXSAtIFAgKTtcblx0Y29vcmRzWyAzIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDMgXSAtIFAgKTtcblx0Y29vcmRzWyAwIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMCBdICk7XG5cdGNvb3Jkc1sgMSBdID0gbm9ybWFsaXplKCBjb29yZHNbIDEgXSApO1xuXHRjb29yZHNbIDIgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAyIF0gKTtcblx0Y29vcmRzWyAzIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMyBdICk7XG5cdHZlYzMgdmVjdG9yRm9ybUZhY3RvciA9IHZlYzMoIDAuMCApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAwIF0sIGNvb3Jkc1sgMSBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDEgXSwgY29vcmRzWyAyIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMiBdLCBjb29yZHNbIDMgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAzIF0sIGNvb3Jkc1sgMCBdICk7XG5cdGZsb2F0IHJlc3VsdCA9IExUQ19DbGlwcGVkU3BoZXJlRm9ybUZhY3RvciggdmVjdG9yRm9ybUZhY3RvciApO1xuXHRyZXR1cm4gdmVjMyggcmVzdWx0ICk7XG59XG5mbG9hdCBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICkge1xuXHRyZXR1cm4gMC4yNTtcbn1cbmZsb2F0IERfQmxpbm5QaG9uZyggY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiAoIHNoaW5pbmVzcyAqIDAuNSArIDEuMCApICogcG93KCBkb3ROSCwgc2hpbmluZXNzICk7XG59XG52ZWMzIEJSREZfQmxpbm5QaG9uZyggY29uc3QgaW4gdmVjMyBsaWdodERpciwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MgKSB7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggbGlnaHREaXIgKyB2aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90VkggPSBzYXR1cmF0ZSggZG90KCB2aWV3RGlyLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBzcGVjdWxhckNvbG9yLCAxLjAsIGRvdFZIICk7XG5cdGZsb2F0IEcgPSBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICk7XG5cdGZsb2F0IEQgPSBEX0JsaW5uUGhvbmcoIHNoaW5pbmVzcywgZG90TkggKTtcblx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XG59XG4jaWYgZGVmaW5lZCggVVNFX1NIRUVOIClcbmZsb2F0IERfQ2hhcmxpZSggZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBkb3ROSCApIHtcblx0ZmxvYXQgYWxwaGEgPSBwb3cyKCByb3VnaG5lc3MgKTtcblx0ZmxvYXQgaW52QWxwaGEgPSAxLjAgLyBhbHBoYTtcblx0ZmxvYXQgY29zMmggPSBkb3ROSCAqIGRvdE5IO1xuXHRmbG9hdCBzaW4yaCA9IG1heCggMS4wIC0gY29zMmgsIDAuMDA3ODEyNSApO1xuXHRyZXR1cm4gKCAyLjAgKyBpbnZBbHBoYSApICogcG93KCBzaW4yaCwgaW52QWxwaGEgKiAwLjUgKSAvICggMi4wICogUEkgKTtcbn1cbmZsb2F0IFZfTmV1YmVsdCggZmxvYXQgZG90TlYsIGZsb2F0IGRvdE5MICkge1xuXHRyZXR1cm4gc2F0dXJhdGUoIDEuMCAvICggNC4wICogKCBkb3ROTCArIGRvdE5WIC0gZG90TkwgKiBkb3ROViApICkgKTtcbn1cbnZlYzMgQlJERl9TaGVlbiggY29uc3QgaW4gdmVjMyBsaWdodERpciwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgdmVjMyBzaGVlbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGVlblJvdWdobmVzcyApIHtcblx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBsaWdodERpciArIHZpZXdEaXIgKTtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGxpZ2h0RGlyICkgKTtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7XG5cdGZsb2F0IEQgPSBEX0NoYXJsaWUoIHNoZWVuUm91Z2huZXNzLCBkb3ROSCApO1xuXHRmbG9hdCBWID0gVl9OZXViZWx0KCBkb3ROViwgZG90TkwgKTtcblx0cmV0dXJuIHNoZWVuQ29sb3IgKiAoIEQgKiBWICk7XG59XG4jZW5kaWYiLGJ1bXBtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9CVU1QTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGJ1bXBNYXA7XG5cdHVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlO1xuXHR2ZWMyIGRIZHh5X2Z3ZCgpIHtcblx0XHR2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7XG5cdFx0dmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApO1xuXHRcdGZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDtcblx0XHRmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDtcblx0XHRmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDtcblx0XHRyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTtcblx0fVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5LCBmbG9hdCBmYWNlRGlyZWN0aW9uICkge1xuXHRcdHZlYzMgdlNpZ21hWCA9IHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZTaWdtYVkgPSB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2TiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIFIxID0gY3Jvc3MoIHZTaWdtYVksIHZOICk7XG5cdFx0dmVjMyBSMiA9IGNyb3NzKCB2TiwgdlNpZ21hWCApO1xuXHRcdGZsb2F0IGZEZXQgPSBkb3QoIHZTaWdtYVgsIFIxICkgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdHZlYzMgdkdyYWQgPSBzaWduKCBmRGV0ICkgKiAoIGRIZHh5LnggKiBSMSArIGRIZHh5LnkgKiBSMiApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIGFicyggZkRldCApICogc3VyZl9ub3JtIC0gdkdyYWQgKTtcblx0fVxuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2ZWM0IHBsYW5lO1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0aWYgKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApIGRpc2NhcmQ7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2lmIFVOSU9OX0NMSVBQSU5HX1BMQU5FUyA8IE5VTV9DTElQUElOR19QTEFORVNcblx0XHRib29sIGNsaXBwZWQgPSB0cnVlO1xuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSA8IE5VTV9DTElQUElOR19QTEFORVM7IGkgKysgKSB7XG5cdFx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0XHRjbGlwcGVkID0gKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApICYmIGNsaXBwZWQ7XG5cdFx0fVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdFx0aWYgKCBjbGlwcGVkICkgZGlzY2FyZDtcblx0I2VuZGlmXG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247XG5cdHVuaWZvcm0gdmVjNCBjbGlwcGluZ1BsYW5lc1sgTlVNX0NMSVBQSU5HX1BMQU5FUyBdO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZDbGlwUG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmIixjb2xvcl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdGRpZmZ1c2VDb2xvciAqPSB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKVxuXHRkaWZmdXNlQ29sb3IucmdiICo9IHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZhcnlpbmcgdmVjNCB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKVxuXHR2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZhcnlpbmcgdmVjNCB2Q29sb3I7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApXG5cdHZDb2xvciA9IHZlYzQoIDEuMCApO1xuI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKVxuXHR2Q29sb3IgPSB2ZWMzKCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DT0xPUlxuXHR2Q29sb3IgKj0gY29sb3I7XG4jZW5kaWZcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUlxuXHR2Q29sb3IueHl6ICo9IGluc3RhbmNlQ29sb3IueHl6O1xuI2VuZGlmIixjb21tb246IiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTNcbiNkZWZpbmUgUEkyIDYuMjgzMTg1MzA3MTc5NTg2XG4jZGVmaW5lIFBJX0hBTEYgMS41NzA3OTYzMjY3OTQ4OTY2XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkgMC4zMTgzMDk4ODYxODM3OTA3XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkyIDAuMTU5MTU0OTQzMDkxODk1MzVcbiNkZWZpbmUgRVBTSUxPTiAxZS02XG4jaWZuZGVmIHNhdHVyYXRlXG4jZGVmaW5lIHNhdHVyYXRlKCBhICkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxuI2RlZmluZSB3aGl0ZUNvbXBsZW1lbnQoIGEgKSAoIDEuMCAtIHNhdHVyYXRlKCBhICkgKVxuZmxvYXQgcG93MiggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeDsgfVxuZmxvYXQgcG93MyggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeCp4OyB9XG5mbG9hdCBwb3c0KCBjb25zdCBpbiBmbG9hdCB4ICkgeyBmbG9hdCB4MiA9IHgqeDsgcmV0dXJuIHgyKngyOyB9XG5mbG9hdCBtYXgzKCBjb25zdCBpbiB2ZWMzIHYgKSB7IHJldHVybiBtYXgoIG1heCggdi54LCB2LnkgKSwgdi56ICk7IH1cbmZsb2F0IGF2ZXJhZ2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7IHJldHVybiBkb3QoIGNvbG9yLCB2ZWMzKCAwLjMzMzMgKSApOyB9XG5oaWdocCBmbG9hdCByYW5kKCBjb25zdCBpbiB2ZWMyIHV2ICkge1xuXHRjb25zdCBoaWdocCBmbG9hdCBhID0gMTIuOTg5OCwgYiA9IDc4LjIzMywgYyA9IDQzNzU4LjU0NTM7XG5cdGhpZ2hwIGZsb2F0IGR0ID0gZG90KCB1di54eSwgdmVjMiggYSxiICkgKSwgc24gPSBtb2QoIGR0LCBQSSApO1xuXHRyZXR1cm4gZnJhY3QoIHNpbiggc24gKSAqIGMgKTtcbn1cbiNpZmRlZiBISUdIX1BSRUNJU0lPTlxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7IHJldHVybiBsZW5ndGgoIHYgKTsgfVxuI2Vsc2Vcblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkge1xuXHRcdGZsb2F0IG1heENvbXBvbmVudCA9IG1heDMoIGFicyggdiApICk7XG5cdFx0cmV0dXJuIGxlbmd0aCggdiAvIG1heENvbXBvbmVudCApICogbWF4Q29tcG9uZW50O1xuXHR9XG4jZW5kaWZcbnN0cnVjdCBJbmNpZGVudExpZ2h0IHtcblx0dmVjMyBjb2xvcjtcblx0dmVjMyBkaXJlY3Rpb247XG5cdGJvb2wgdmlzaWJsZTtcbn07XG5zdHJ1Y3QgUmVmbGVjdGVkTGlnaHQge1xuXHR2ZWMzIGRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgZGlyZWN0U3BlY3VsYXI7XG5cdHZlYzMgaW5kaXJlY3REaWZmdXNlO1xuXHR2ZWMzIGluZGlyZWN0U3BlY3VsYXI7XG59O1xuc3RydWN0IEdlb21ldHJpY0NvbnRleHQge1xuXHR2ZWMzIHBvc2l0aW9uO1xuXHR2ZWMzIG5vcm1hbDtcblx0dmVjMyB2aWV3RGlyO1xuI2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbn07XG52ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTtcbn1cbnZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIHZlYzQoIGRpciwgMC4wICkgKiBtYXRyaXggKS54eXogKTtcbn1cbm1hdDMgdHJhbnNwb3NlTWF0MyggY29uc3QgaW4gbWF0MyBtICkge1xuXHRtYXQzIHRtcDtcblx0dG1wWyAwIF0gPSB2ZWMzKCBtWyAwIF0ueCwgbVsgMSBdLngsIG1bIDIgXS54ICk7XG5cdHRtcFsgMSBdID0gdmVjMyggbVsgMCBdLnksIG1bIDEgXS55LCBtWyAyIF0ueSApO1xuXHR0bXBbIDIgXSA9IHZlYzMoIG1bIDAgXS56LCBtWyAxIF0ueiwgbVsgMiBdLnogKTtcblx0cmV0dXJuIHRtcDtcbn1cbmZsb2F0IGxpbmVhclRvUmVsYXRpdmVMdW1pbmFuY2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7XG5cdHZlYzMgd2VpZ2h0cyA9IHZlYzMoIDAuMjEyNiwgMC43MTUyLCAwLjA3MjIgKTtcblx0cmV0dXJuIGRvdCggd2VpZ2h0cywgY29sb3IucmdiICk7XG59XG5ib29sIGlzUGVyc3BlY3RpdmVNYXRyaXgoIG1hdDQgbSApIHtcblx0cmV0dXJuIG1bIDIgXVsgMyBdID09IC0gMS4wO1xufVxudmVjMiBlcXVpcmVjdFV2KCBpbiB2ZWMzIGRpciApIHtcblx0ZmxvYXQgdSA9IGF0YW4oIGRpci56LCBkaXIueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7XG5cdGZsb2F0IHYgPSBhc2luKCBjbGFtcCggZGlyLnksIC0gMS4wLCAxLjAgKSApICogUkVDSVBST0NBTF9QSSArIDAuNTtcblx0cmV0dXJuIHZlYzIoIHUsIHYgKTtcbn0iLGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudDoiI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVfVVZcblx0I2RlZmluZSBjdWJlVVZfbWF4TWlwTGV2ZWwgOC4wXG5cdCNkZWZpbmUgY3ViZVVWX21pbk1pcExldmVsIDQuMFxuXHQjZGVmaW5lIGN1YmVVVl9tYXhUaWxlU2l6ZSAyNTYuMFxuXHQjZGVmaW5lIGN1YmVVVl9taW5UaWxlU2l6ZSAxNi4wXG5cdGZsb2F0IGdldEZhY2UoIHZlYzMgZGlyZWN0aW9uICkge1xuXHRcdHZlYzMgYWJzRGlyZWN0aW9uID0gYWJzKCBkaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBmYWNlID0gLSAxLjA7XG5cdFx0aWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi56ICkge1xuXHRcdFx0aWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi55IClcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi54ID4gMC4wID8gMC4wIDogMy4wO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggYWJzRGlyZWN0aW9uLnogPiBhYnNEaXJlY3Rpb24ueSApXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueiA+IDAuMCA/IDIuMCA6IDUuMDtcblx0XHRcdGVsc2Vcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZTtcblx0fVxuXHR2ZWMyIGdldFVWKCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgZmFjZSApIHtcblx0XHR2ZWMyIHV2O1xuXHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCAtIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHV2ID0gdmVjMiggZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7XG5cdFx0fVxuXHRcdHJldHVybiAwLjUgKiAoIHV2ICsgMS4wICk7XG5cdH1cblx0dmVjMyBiaWxpbmVhckN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBkaXJlY3Rpb24sIGZsb2F0IG1pcEludCApIHtcblx0XHRmbG9hdCBmYWNlID0gZ2V0RmFjZSggZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgZmlsdGVySW50ID0gbWF4KCBjdWJlVVZfbWluTWlwTGV2ZWwgLSBtaXBJbnQsIDAuMCApO1xuXHRcdG1pcEludCA9IG1heCggbWlwSW50LCBjdWJlVVZfbWluTWlwTGV2ZWwgKTtcblx0XHRmbG9hdCBmYWNlU2l6ZSA9IGV4cDIoIG1pcEludCApO1xuXHRcdGZsb2F0IHRleGVsU2l6ZSA9IDEuMCAvICggMy4wICogY3ViZVVWX21heFRpbGVTaXplICk7XG5cdFx0dmVjMiB1diA9IGdldFVWKCBkaXJlY3Rpb24sIGZhY2UgKSAqICggZmFjZVNpemUgLSAxLjAgKSArIDAuNTtcblx0XHRpZiAoIGZhY2UgPiAyLjAgKSB7XG5cdFx0XHR1di55ICs9IGZhY2VTaXplO1xuXHRcdFx0ZmFjZSAtPSAzLjA7XG5cdFx0fVxuXHRcdHV2LnggKz0gZmFjZSAqIGZhY2VTaXplO1xuXHRcdGlmICggbWlwSW50IDwgY3ViZVVWX21heE1pcExldmVsICkge1xuXHRcdFx0dXYueSArPSAyLjAgKiBjdWJlVVZfbWF4VGlsZVNpemU7XG5cdFx0fVxuXHRcdHV2LnkgKz0gZmlsdGVySW50ICogMi4wICogY3ViZVVWX21pblRpbGVTaXplO1xuXHRcdHV2LnggKz0gMy4wICogbWF4KCAwLjAsIGN1YmVVVl9tYXhUaWxlU2l6ZSAtIDIuMCAqIGZhY2VTaXplICk7XG5cdFx0dXYgKj0gdGV4ZWxTaXplO1xuXHRcdHJldHVybiB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKS5yZ2I7XG5cdH1cblx0I2RlZmluZSByMCAxLjBcblx0I2RlZmluZSB2MCAwLjMzOVxuXHQjZGVmaW5lIG0wIC0gMi4wXG5cdCNkZWZpbmUgcjEgMC44XG5cdCNkZWZpbmUgdjEgMC4yNzZcblx0I2RlZmluZSBtMSAtIDEuMFxuXHQjZGVmaW5lIHI0IDAuNFxuXHQjZGVmaW5lIHY0IDAuMDQ2XG5cdCNkZWZpbmUgbTQgMi4wXG5cdCNkZWZpbmUgcjUgMC4zMDVcblx0I2RlZmluZSB2NSAwLjAxNlxuXHQjZGVmaW5lIG01IDMuMFxuXHQjZGVmaW5lIHI2IDAuMjFcblx0I2RlZmluZSB2NiAwLjAwMzhcblx0I2RlZmluZSBtNiA0LjBcblx0ZmxvYXQgcm91Z2huZXNzVG9NaXAoIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSAwLjA7XG5cdFx0aWYgKCByb3VnaG5lc3MgPj0gcjEgKSB7XG5cdFx0XHRtaXAgPSAoIHIwIC0gcm91Z2huZXNzICkgKiAoIG0xIC0gbTAgKSAvICggcjAgLSByMSApICsgbTA7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI0ICkge1xuXHRcdFx0bWlwID0gKCByMSAtIHJvdWdobmVzcyApICogKCBtNCAtIG0xICkgLyAoIHIxIC0gcjQgKSArIG0xO1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNSApIHtcblx0XHRcdG1pcCA9ICggcjQgLSByb3VnaG5lc3MgKSAqICggbTUgLSBtNCApIC8gKCByNCAtIHI1ICkgKyBtNDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjYgKSB7XG5cdFx0XHRtaXAgPSAoIHI1IC0gcm91Z2huZXNzICkgKiAoIG02IC0gbTUgKSAvICggcjUgLSByNiApICsgbTU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1pcCA9IC0gMi4wICogbG9nMiggMS4xNiAqIHJvdWdobmVzcyApO1x0XHR9XG5cdFx0cmV0dXJuIG1pcDtcblx0fVxuXHR2ZWM0IHRleHR1cmVDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgc2FtcGxlRGlyLCBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdFx0ZmxvYXQgbWlwID0gY2xhbXAoIHJvdWdobmVzc1RvTWlwKCByb3VnaG5lc3MgKSwgbTAsIGN1YmVVVl9tYXhNaXBMZXZlbCApO1xuXHRcdGZsb2F0IG1pcEYgPSBmcmFjdCggbWlwICk7XG5cdFx0ZmxvYXQgbWlwSW50ID0gZmxvb3IoIG1pcCApO1xuXHRcdHZlYzMgY29sb3IwID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKTtcblx0XHRpZiAoIG1pcEYgPT0gMC4wICkge1xuXHRcdFx0cmV0dXJuIHZlYzQoIGNvbG9yMCwgMS4wICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZlYzMgY29sb3IxID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKyAxLjAgKTtcblx0XHRcdHJldHVybiB2ZWM0KCBtaXgoIGNvbG9yMCwgY29sb3IxLCBtaXBGICksIDEuMCApO1xuXHRcdH1cblx0fVxuI2VuZGlmIixkZWZhdWx0bm9ybWFsX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZE5vcm1hbCA9IG9iamVjdE5vcm1hbDtcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRtYXQzIG0gPSBtYXQzKCBpbnN0YW5jZU1hdHJpeCApO1xuXHR0cmFuc2Zvcm1lZE5vcm1hbCAvPSB2ZWMzKCBkb3QoIG1bIDAgXSwgbVsgMCBdICksIGRvdCggbVsgMSBdLCBtWyAxIF0gKSwgZG90KCBtWyAyIF0sIG1bIDIgXSApICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsID0gbSAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2VuZGlmXG50cmFuc2Zvcm1lZE5vcm1hbCA9IG5vcm1hbE1hdHJpeCAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2lmZGVmIEZMSVBfU0lERURcblx0dHJhbnNmb3JtZWROb3JtYWwgPSAtIHRyYW5zZm9ybWVkTm9ybWFsO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyB0cmFuc2Zvcm1lZFRhbmdlbnQgPSAoIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdHRyYW5zZm9ybWVkVGFuZ2VudCA9IC0gdHJhbnNmb3JtZWRUYW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZiIsZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBkaXNwbGFjZW1lbnRNYXA7XG5cdHVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50U2NhbGU7XG5cdHVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50QmlhcztcbiNlbmRpZiIsZGlzcGxhY2VtZW50bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0dHJhbnNmb3JtZWQgKz0gbm9ybWFsaXplKCBvYmplY3ROb3JtYWwgKSAqICggdGV4dHVyZTJEKCBkaXNwbGFjZW1lbnRNYXAsIHZVdiApLnggKiBkaXNwbGFjZW1lbnRTY2FsZSArIGRpc3BsYWNlbWVudEJpYXMgKTtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU1JU1NJVkVNQVBcblx0dmVjNCBlbWlzc2l2ZUNvbG9yID0gdGV4dHVyZTJEKCBlbWlzc2l2ZU1hcCwgdlV2ICk7XG5cdHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBlbWlzc2l2ZU1hcDtcbiNlbmRpZiIsZW5jb2RpbmdzX2ZyYWdtZW50OiJnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTsiLGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiJ2ZWM0IExpbmVhclRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmFsdWU7XG59XG52ZWM0IExpbmVhclRvc1JHQiggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIG1peCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDAuNDE2NjYgKSApICogMS4wNTUgLSB2ZWMzKCAwLjA1NSApLCB2YWx1ZS5yZ2IgKiAxMi45MiwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjAwMzEzMDggKSApICkgKSwgdmFsdWUuYSApO1xufSIsZW52bWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmVjMyBjYW1lcmFUb0ZyYWc7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbiApO1xuXHRcdH1cblx0XHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdCNlbHNlXG5cdFx0dmVjMyByZWZsZWN0VmVjID0gdlJlZmxlY3Q7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcmVmbGVjdFZlYywgMC4wICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBlbnZDb2xvciA9IHZlYzQoIDAuMCApO1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVk1BUF9CTEVORElOR19NVUxUSVBMWVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIG91dGdvaW5nTGlnaHQgKiBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX0JMRU5ESU5HX01JWCApXG5cdFx0b3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19BREQgKVxuXHRcdG91dGdvaW5nTGlnaHQgKz0gZW52Q29sb3IueHl6ICogc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eTtcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCBlbnZNYXBJbnRlbnNpdHk7XG5cdHVuaWZvcm0gZmxvYXQgZmxpcEVudk1hcDtcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdCNlbmRpZlxuXHRcbiNlbmRpZiIsZW52bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgcmVmbGVjdGl2aXR5O1xuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8ZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0XG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApXG5cdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZSQUNUSU9OXG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbmRpZlxuXHR2ZWMzIGdldElCTElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkge1xuXHRcdCNpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHdvcmxkTm9ybWFsLCAxLjAgKTtcblx0XHRcdHJldHVybiBQSSAqIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0XHQjZWxzZVxuXHRcdFx0cmV0dXJuIHZlYzMoIDAuMCApO1xuXHRcdCNlbmRpZlxuXHR9XG5cdHZlYzMgZ2V0SUJMUmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHQjaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWM7XG5cdFx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0XHRyZWZsZWN0VmVjID0gcmVmbGVjdCggLSB2aWV3RGlyLCBub3JtYWwgKTtcblx0XHRcdFx0cmVmbGVjdFZlYyA9IG5vcm1hbGl6ZSggbWl4KCByZWZsZWN0VmVjLCBub3JtYWwsIHJvdWdobmVzcyAqIHJvdWdobmVzcykgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHJlZmxlY3RWZWMgPSByZWZyYWN0KCAtIHZpZXdEaXIsIG5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0XHQjZW5kaWZcblx0XHRcdHJlZmxlY3RWZWMgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCByZWZsZWN0VmVjLCB2aWV3TWF0cml4ICk7XG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCByb3VnaG5lc3MgKTtcblx0XHRcdHJldHVybiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiB2ZWMzKCAwLjAgKTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmIixlbnZtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcblx0I2Vsc2Vcblx0XHR2ZWMzIGNhbWVyYVRvVmVydGV4O1xuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB3b3JsZFBvc2l0aW9uLnh5eiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0fVxuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2UmVmbGVjdCA9IHJlZmxlY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2UmVmbGVjdCA9IHJlZnJhY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmIixmb2dfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHR2Rm9nRGVwdGggPSAtIG12UG9zaXRpb24uejtcbiNlbmRpZiIsZm9nX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHR2YXJ5aW5nIGZsb2F0IHZGb2dEZXB0aDtcbiNlbmRpZiIsZm9nX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSAxLjAgLSBleHAoIC0gZm9nRGVuc2l0eSAqIGZvZ0RlbnNpdHkgKiB2Rm9nRGVwdGggKiB2Rm9nRGVwdGggKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSBzbW9vdGhzdGVwKCBmb2dOZWFyLCBmb2dGYXIsIHZGb2dEZXB0aCApO1xuXHQjZW5kaWZcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggZ2xfRnJhZ0NvbG9yLnJnYiwgZm9nQ29sb3IsIGZvZ0ZhY3RvciApO1xuI2VuZGlmIixmb2dfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0dW5pZm9ybSB2ZWMzIGZvZ0NvbG9yO1xuXHR2YXJ5aW5nIGZsb2F0IHZGb2dEZXB0aDtcblx0I2lmZGVmIEZPR19FWFAyXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dEZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgZm9nTmVhcjtcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0Zhcjtcblx0I2VuZGlmXG4jZW5kaWYiLGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfR1JBRElFTlRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZ3JhZGllbnRNYXA7XG4jZW5kaWZcbnZlYzMgZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCB2ZWMzIG5vcm1hbCwgdmVjMyBsaWdodERpcmVjdGlvbiApIHtcblx0ZmxvYXQgZG90TkwgPSBkb3QoIG5vcm1hbCwgbGlnaHREaXJlY3Rpb24gKTtcblx0dmVjMiBjb29yZCA9IHZlYzIoIGRvdE5MICogMC41ICsgMC41LCAwLjAgKTtcblx0I2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHRcdHJldHVybiB2ZWMzKCB0ZXh0dXJlMkQoIGdyYWRpZW50TWFwLCBjb29yZCApLnIgKTtcblx0I2Vsc2Vcblx0XHRyZXR1cm4gKCBjb29yZC54IDwgMC43ICkgPyB2ZWMzKCAwLjcgKSA6IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcbn0iLGxpZ2h0bWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHZlYzQgbGlnaHRNYXBUZXhlbCA9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0dmVjMyBsaWdodE1hcElycmFkaWFuY2UgPSBsaWdodE1hcFRleGVsLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRsaWdodE1hcElycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBJcnJhZGlhbmNlO1xuI2VuZGlmIixsaWdodG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGxpZ2h0TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodHNfbGFtYmVydF92ZXJ0ZXg6InZlYzMgZGlmZnVzZSA9IHZlYzMoIDEuMCApO1xuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gbXZQb3NpdGlvbi54eXo7XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTtcbkdlb21ldHJpY0NvbnRleHQgYmFja0dlb21ldHJ5O1xuYmFja0dlb21ldHJ5LnBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5iYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDtcbmJhY2tHZW9tZXRyeS52aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjtcbnZMaWdodEZyb250ID0gdmVjMyggMC4wICk7XG52SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7XG5cdHZJbmRpcmVjdEJhY2sgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbmZsb2F0IGRvdE5MO1xudmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG52SW5kaXJlY3RGcm9udCArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xudkluZGlyZWN0RnJvbnQgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5Lm5vcm1hbCApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2SW5kaXJlY3RCYWNrICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGJhY2tHZW9tZXRyeS5ub3JtYWwgKTtcbiNlbmRpZlxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXRQb2ludExpZ2h0SW5mbyggcG9pbnRMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLSBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdGdldFNwb3RMaWdodEluZm8oIHNwb3RMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLSBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggZGlyZWN0aW9uYWxMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLSBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xuXHRcdHZJbmRpcmVjdEZyb250ICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkubm9ybWFsICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkluZGlyZWN0QmFjayArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGJhY2tHZW9tZXRyeS5ub3JtYWwgKTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmIixsaWdodHNfcGFyc19iZWdpbjoidW5pZm9ybSBib29sIHJlY2VpdmVTaGFkb3c7XG51bmlmb3JtIHZlYzMgYW1iaWVudExpZ2h0Q29sb3I7XG51bmlmb3JtIHZlYzMgbGlnaHRQcm9iZVsgOSBdO1xudmVjMyBzaEdldElycmFkaWFuY2VBdCggaW4gdmVjMyBub3JtYWwsIGluIHZlYzMgc2hDb2VmZmljaWVudHNbIDkgXSApIHtcblx0ZmxvYXQgeCA9IG5vcm1hbC54LCB5ID0gbm9ybWFsLnksIHogPSBub3JtYWwuejtcblx0dmVjMyByZXN1bHQgPSBzaENvZWZmaWNpZW50c1sgMCBdICogMC44ODYyMjc7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMSBdICogMi4wICogMC41MTE2NjQgKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDIgXSAqIDIuMCAqIDAuNTExNjY0ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAzIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHg7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNCBdICogMi4wICogMC40MjkwNDMgKiB4ICogeTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA1IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHkgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDYgXSAqICggMC43NDMxMjUgKiB6ICogeiAtIDAuMjQ3NzA4ICk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNyBdICogMi4wICogMC40MjkwNDMgKiB4ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA4IF0gKiAwLjQyOTA0MyAqICggeCAqIHggLSB5ICogeSApO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxudmVjMyBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBsaWdodFByb2JlWyA5IF0sIGNvbnN0IGluIHZlYzMgbm9ybWFsICkge1xuXHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IHNoR2V0SXJyYWRpYW5jZUF0KCB3b3JsZE5vcm1hbCwgbGlnaHRQcm9iZSApO1xuXHRyZXR1cm4gaXJyYWRpYW5jZTtcbn1cbnZlYzMgZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBhbWJpZW50TGlnaHRDb2xvciApIHtcblx0dmVjMyBpcnJhZGlhbmNlID0gYW1iaWVudExpZ2h0Q29sb3I7XG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxuZmxvYXQgZ2V0RGlzdGFuY2VBdHRlbnVhdGlvbiggY29uc3QgaW4gZmxvYXQgbGlnaHREaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgY3V0b2ZmRGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGRlY2F5RXhwb25lbnQgKSB7XG5cdCNpZiBkZWZpbmVkICggUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyApXG5cdFx0ZmxvYXQgZGlzdGFuY2VGYWxsb2ZmID0gMS4wIC8gbWF4KCBwb3coIGxpZ2h0RGlzdGFuY2UsIGRlY2F5RXhwb25lbnQgKSwgMC4wMSApO1xuXHRcdGlmICggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgKSB7XG5cdFx0XHRkaXN0YW5jZUZhbGxvZmYgKj0gcG93Miggc2F0dXJhdGUoIDEuMCAtIHBvdzQoIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSApICkgKTtcblx0XHR9XG5cdFx0cmV0dXJuIGRpc3RhbmNlRmFsbG9mZjtcblx0I2Vsc2Vcblx0XHRpZiAoIGN1dG9mZkRpc3RhbmNlID4gMC4wICYmIGRlY2F5RXhwb25lbnQgPiAwLjAgKSB7XG5cdFx0XHRyZXR1cm4gcG93KCBzYXR1cmF0ZSggLSBsaWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKyAxLjAgKSwgZGVjYXlFeHBvbmVudCApO1xuXHRcdH1cblx0XHRyZXR1cm4gMS4wO1xuXHQjZW5kaWZcbn1cbmZsb2F0IGdldFNwb3RBdHRlbnVhdGlvbiggY29uc3QgaW4gZmxvYXQgY29uZUNvc2luZSwgY29uc3QgaW4gZmxvYXQgcGVudW1icmFDb3NpbmUsIGNvbnN0IGluIGZsb2F0IGFuZ2xlQ29zaW5lICkge1xuXHRyZXR1cm4gc21vb3Roc3RlcCggY29uZUNvc2luZSwgcGVudW1icmFDb3NpbmUsIGFuZ2xlQ29zaW5lICk7XG59XG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodHNbIE5VTV9ESVJfTElHSFRTIF07XG5cdHZvaWQgZ2V0RGlyZWN0aW9uYWxMaWdodEluZm8oIGNvbnN0IGluIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgbGlnaHQgKSB7XG5cdFx0bGlnaHQuY29sb3IgPSBkaXJlY3Rpb25hbExpZ2h0LmNvbG9yO1xuXHRcdGxpZ2h0LmRpcmVjdGlvbiA9IGRpcmVjdGlvbmFsTGlnaHQuZGlyZWN0aW9uO1xuXHRcdGxpZ2h0LnZpc2libGUgPSB0cnVlO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUG9pbnRMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHR9O1xuXHR1bmlmb3JtIFBvaW50TGlnaHQgcG9pbnRMaWdodHNbIE5VTV9QT0lOVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRQb2ludExpZ2h0SW5mbyggY29uc3QgaW4gUG9pbnRMaWdodCBwb2ludExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBsaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBwb2ludExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0bGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGxpZ2h0LmNvbG9yID0gcG9pbnRMaWdodC5jb2xvcjtcblx0XHRsaWdodC5jb2xvciAqPSBnZXREaXN0YW5jZUF0dGVudWF0aW9uKCBsaWdodERpc3RhbmNlLCBwb2ludExpZ2h0LmRpc3RhbmNlLCBwb2ludExpZ2h0LmRlY2F5ICk7XG5cdFx0bGlnaHQudmlzaWJsZSA9ICggbGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTID4gMFxuXHRzdHJ1Y3QgU3BvdExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdFx0ZmxvYXQgY29uZUNvcztcblx0XHRmbG9hdCBwZW51bWJyYUNvcztcblx0fTtcblx0dW5pZm9ybSBTcG90TGlnaHQgc3BvdExpZ2h0c1sgTlVNX1NQT1RfTElHSFRTIF07XG5cdHZvaWQgZ2V0U3BvdExpZ2h0SW5mbyggY29uc3QgaW4gU3BvdExpZ2h0IHNwb3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgbGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0bGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgYW5nbGVDb3MgPSBkb3QoIGxpZ2h0LmRpcmVjdGlvbiwgc3BvdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IHNwb3RBdHRlbnVhdGlvbiA9IGdldFNwb3RBdHRlbnVhdGlvbiggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTtcblx0XHRpZiAoIHNwb3RBdHRlbnVhdGlvbiA+IDAuMCApIHtcblx0XHRcdGZsb2F0IGxpZ2h0RGlzdGFuY2UgPSBsZW5ndGgoIGxWZWN0b3IgKTtcblx0XHRcdGxpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yICogc3BvdEF0dGVudWF0aW9uO1xuXHRcdFx0bGlnaHQuY29sb3IgKj0gZ2V0RGlzdGFuY2VBdHRlbnVhdGlvbiggbGlnaHREaXN0YW5jZSwgc3BvdExpZ2h0LmRpc3RhbmNlLCBzcG90TGlnaHQuZGVjYXkgKTtcblx0XHRcdGxpZ2h0LnZpc2libGUgPSAoIGxpZ2h0LmNvbG9yICE9IHZlYzMoIDAuMCApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxpZ2h0LmNvbG9yID0gdmVjMyggMC4wICk7XG5cdFx0XHRsaWdodC52aXNpYmxlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDBcblx0c3RydWN0IFJlY3RBcmVhTGlnaHQge1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aDtcblx0XHR2ZWMzIGhhbGZIZWlnaHQ7XG5cdH07XG5cdHVuaWZvcm0gc2FtcGxlcjJEIGx0Y18xO1x0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzI7XG5cdHVuaWZvcm0gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0c1sgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgXTtcbiNlbmRpZlxuI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDBcblx0c3RydWN0IEhlbWlzcGhlcmVMaWdodCB7XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBza3lDb2xvcjtcblx0XHR2ZWMzIGdyb3VuZENvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIEhlbWlzcGhlcmVMaWdodCBoZW1pc3BoZXJlTGlnaHRzWyBOVU1fSEVNSV9MSUdIVFMgXTtcblx0dmVjMyBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBIZW1pc3BoZXJlTGlnaHQgaGVtaUxpZ2h0LCBjb25zdCBpbiB2ZWMzIG5vcm1hbCApIHtcblx0XHRmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBoZW1pTGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgaGVtaURpZmZ1c2VXZWlnaHQgPSAwLjUgKiBkb3ROTCArIDAuNTtcblx0XHR2ZWMzIGlycmFkaWFuY2UgPSBtaXgoIGhlbWlMaWdodC5ncm91bmRDb2xvciwgaGVtaUxpZ2h0LnNreUNvbG9yLCBoZW1pRGlmZnVzZVdlaWdodCApO1xuXHRcdHJldHVybiBpcnJhZGlhbmNlO1xuXHR9XG4jZW5kaWYiLGxpZ2h0c190b29uX2ZyYWdtZW50OiJUb29uTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiOyIsbGlnaHRzX3Rvb25fcGFyc19mcmFnbWVudDoidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG5zdHJ1Y3QgVG9vbk1hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG59O1xudm9pZCBSRV9EaXJlY3RfVG9vbiggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfVG9vblxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX1Rvb25cbiNkZWZpbmUgTWF0ZXJpYWxfTGlnaHRQcm9iZUxPRCggbWF0ZXJpYWwgKVx0KDApIixsaWdodHNfcGhvbmdfZnJhZ21lbnQ6IkJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5tYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gc3BlY3VsYXI7XG5tYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyA9IHNoaW5pbmVzcztcbm1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGggPSBzcGVjdWxhclN0cmVuZ3RoOyIsbGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ6InZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuc3RydWN0IEJsaW5uUGhvbmdNYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3I7XG5cdGZsb2F0IHNwZWN1bGFyU2hpbmluZXNzO1xuXHRmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xufTtcbnZvaWQgUkVfRGlyZWN0X0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9CbGlublBob25nKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgKSAqIG1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGg7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfQmxpbm5QaG9uZ1xuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmdcbiNkZWZpbmUgTWF0ZXJpYWxfTGlnaHRQcm9iZUxPRCggbWF0ZXJpYWwgKVx0KDApIixsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ6IlBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiICogKCAxLjAgLSBtZXRhbG5lc3NGYWN0b3IgKTtcbnZlYzMgZHh5ID0gbWF4KCBhYnMoIGRGZHgoIGdlb21ldHJ5Tm9ybWFsICkgKSwgYWJzKCBkRmR5KCBnZW9tZXRyeU5vcm1hbCApICkgKTtcbmZsb2F0IGdlb21ldHJ5Um91Z2huZXNzID0gbWF4KCBtYXgoIGR4eS54LCBkeHkueSApLCBkeHkueiApO1xubWF0ZXJpYWwucm91Z2huZXNzID0gbWF4KCByb3VnaG5lc3NGYWN0b3IsIDAuMDUyNSApO21hdGVyaWFsLnJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzcztcbm1hdGVyaWFsLnJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwucm91Z2huZXNzLCAxLjAgKTtcbiNpZmRlZiBJT1Jcblx0I2lmZGVmIFNQRUNVTEFSXG5cdFx0ZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSBzcGVjdWxhckludGVuc2l0eTtcblx0XHR2ZWMzIHNwZWN1bGFyQ29sb3JGYWN0b3IgPSBzcGVjdWxhckNvbG9yO1xuXHRcdCNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVBcblx0XHRcdHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yICo9IHRleHR1cmUyRCggc3BlY3VsYXJJbnRlbnNpdHlNYXAsIHZVdiApLmE7XG5cdFx0I2VuZGlmXG5cdFx0I2lmZGVmIFVTRV9TUEVDVUxBUkNPTE9STUFQXG5cdFx0XHRzcGVjdWxhckNvbG9yRmFjdG9yICo9IHRleHR1cmUyRCggc3BlY3VsYXJDb2xvck1hcCwgdlV2ICkucmdiO1xuXHRcdCNlbmRpZlxuXHRcdG1hdGVyaWFsLnNwZWN1bGFyRjkwID0gbWl4KCBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgMS4wLCBtZXRhbG5lc3NGYWN0b3IgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IDEuMDtcblx0XHR2ZWMzIHNwZWN1bGFyQ29sb3JGYWN0b3IgPSB2ZWMzKCAxLjAgKTtcblx0XHRtYXRlcmlhbC5zcGVjdWxhckY5MCA9IDEuMDtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIG1pbiggcG93MiggKCBpb3IgLSAxLjAgKSAvICggaW9yICsgMS4wICkgKSAqIHNwZWN1bGFyQ29sb3JGYWN0b3IsIHZlYzMoIDEuMCApICkgKiBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG4jZWxzZVxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCAwLjA0ICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuXHRtYXRlcmlhbC5zcGVjdWxhckY5MCA9IDEuMDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gY2xlYXJjb2F0O1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBjbGVhcmNvYXRSb3VnaG5lc3M7XG5cdG1hdGVyaWFsLmNsZWFyY29hdEYwID0gdmVjMyggMC4wNCApO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRGOTAgPSAxLjA7XG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0ICo9IHRleHR1cmUyRCggY2xlYXJjb2F0TWFwLCB2VXYgKS54O1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICo9IHRleHR1cmUyRCggY2xlYXJjb2F0Um91Z2huZXNzTWFwLCB2VXYgKS55O1xuXHQjZW5kaWZcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gc2F0dXJhdGUoIG1hdGVyaWFsLmNsZWFyY29hdCApO1x0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWF4KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDAuMDUyNSApO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHRtYXRlcmlhbC5zaGVlbkNvbG9yID0gc2hlZW5Db2xvcjtcblx0I2lmZGVmIFVTRV9TSEVFTkNPTE9STUFQXG5cdFx0bWF0ZXJpYWwuc2hlZW5Db2xvciAqPSB0ZXh0dXJlMkQoIHNoZWVuQ29sb3JNYXAsIHZVdiApLnJnYjtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLnNoZWVuUm91Z2huZXNzID0gY2xhbXAoIHNoZWVuUm91Z2huZXNzLCAwLjA3LCAxLjAgKTtcblx0I2lmZGVmIFVTRV9TSEVFTlJPVUdITkVTU01BUFxuXHRcdG1hdGVyaWFsLnNoZWVuUm91Z2huZXNzICo9IHRleHR1cmUyRCggc2hlZW5Sb3VnaG5lc3NNYXAsIHZVdiApLmE7XG5cdCNlbmRpZlxuI2VuZGlmIixsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoic3RydWN0IFBoeXNpY2FsTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0ZmxvYXQgcm91Z2huZXNzO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3I7XG5cdGZsb2F0IHNwZWN1bGFyRjkwO1xuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVFxuXHRcdGZsb2F0IGNsZWFyY29hdDtcblx0XHRmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG5cdFx0dmVjMyBjbGVhcmNvYXRGMDtcblx0XHRmbG9hdCBjbGVhcmNvYXRGOTA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NIRUVOXG5cdFx0dmVjMyBzaGVlbkNvbG9yO1xuXHRcdGZsb2F0IHNoZWVuUm91Z2huZXNzO1xuXHQjZW5kaWZcbn07XG52ZWMzIGNsZWFyY29hdFNwZWN1bGFyID0gdmVjMyggMC4wICk7XG52ZWMzIHNoZWVuU3BlY3VsYXIgPSB2ZWMzKCAwLjAgKTtcbmZsb2F0IElCTFNoZWVuQlJERiggY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzKSB7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0ZmxvYXQgcjIgPSByb3VnaG5lc3MgKiByb3VnaG5lc3M7XG5cdGZsb2F0IGEgPSByb3VnaG5lc3MgPCAwLjI1ID8gLTMzOS4yICogcjIgKyAxNjEuNCAqIHJvdWdobmVzcyAtIDI1LjkgOiAtOC40OCAqIHIyICsgMTQuMyAqIHJvdWdobmVzcyAtIDkuOTU7XG5cdGZsb2F0IGIgPSByb3VnaG5lc3MgPCAwLjI1ID8gNDQuMCAqIHIyIC0gMjMuNyAqIHJvdWdobmVzcyArIDMuMjYgOiAxLjk3ICogcjIgLSAzLjI3ICogcm91Z2huZXNzICsgMC43Mjtcblx0ZmxvYXQgREcgPSBleHAoIGEgKiBkb3ROViArIGIgKSArICggcm91Z2huZXNzIDwgMC4yNSA/IDAuMCA6IDAuMSAqICggcm91Z2huZXNzIC0gMC4yNSApICk7XG5cdHJldHVybiBzYXR1cmF0ZSggREcgKiBSRUNJUFJPQ0FMX1BJICk7XG59XG52ZWMyIERGR0FwcHJveCggY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdGNvbnN0IHZlYzQgYzAgPSB2ZWM0KCAtIDEsIC0gMC4wMjc1LCAtIDAuNTcyLCAwLjAyMiApO1xuXHRjb25zdCB2ZWM0IGMxID0gdmVjNCggMSwgMC4wNDI1LCAxLjA0LCAtIDAuMDQgKTtcblx0dmVjNCByID0gcm91Z2huZXNzICogYzAgKyBjMTtcblx0ZmxvYXQgYTAwNCA9IG1pbiggci54ICogci54LCBleHAyKCAtIDkuMjggKiBkb3ROViApICkgKiByLnggKyByLnk7XG5cdHZlYzIgZmFiID0gdmVjMiggLSAxLjA0LCAxLjA0ICkgKiBhMDA0ICsgci56dztcblx0cmV0dXJuIGZhYjtcbn1cbnZlYzMgRW52aXJvbm1lbnRCUkRGKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNwZWN1bGFyRjkwLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdHZlYzIgZmFiID0gREZHQXBwcm94KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGZhYi54ICsgc3BlY3VsYXJGOTAgKiBmYWIueTtcbn1cbnZvaWQgY29tcHV0ZU11bHRpc2NhdHRlcmluZyggY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzcGVjdWxhckY5MCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBpbm91dCB2ZWMzIHNpbmdsZVNjYXR0ZXIsIGlub3V0IHZlYzMgbXVsdGlTY2F0dGVyICkge1xuXHR2ZWMyIGZhYiA9IERGR0FwcHJveCggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTtcblx0dmVjMyBGc3NFc3MgPSBzcGVjdWxhckNvbG9yICogZmFiLnggKyBzcGVjdWxhckY5MCAqIGZhYi55O1xuXHRmbG9hdCBFc3MgPSBmYWIueCArIGZhYi55O1xuXHRmbG9hdCBFbXMgPSAxLjAgLSBFc3M7XG5cdHZlYzMgRmF2ZyA9IHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5O1x0dmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7XG5cdHNpbmdsZVNjYXR0ZXIgKz0gRnNzRXNzO1xuXHRtdWx0aVNjYXR0ZXIgKz0gRm1zICogRW1zO1xufVxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHR2b2lkIFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbCggY29uc3QgaW4gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0XHR2ZWMzIG5vcm1hbCA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0XHR2ZWMzIHZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHRcdHZlYzMgcG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHR2ZWMzIGxpZ2h0UG9zID0gcmVjdEFyZWFMaWdodC5wb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aCA9IHJlY3RBcmVhTGlnaHQuaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodCA9IHJlY3RBcmVhTGlnaHQuaGFsZkhlaWdodDtcblx0XHR2ZWMzIGxpZ2h0Q29sb3IgPSByZWN0QXJlYUxpZ2h0LmNvbG9yO1xuXHRcdGZsb2F0IHJvdWdobmVzcyA9IG1hdGVyaWFsLnJvdWdobmVzcztcblx0XHR2ZWMzIHJlY3RDb29yZHNbIDQgXTtcblx0XHRyZWN0Q29vcmRzWyAwIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7XHRcdHJlY3RDb29yZHNbIDEgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAyIF0gPSBsaWdodFBvcyAtIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0cmVjdENvb3Jkc1sgMyBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0O1xuXHRcdHZlYzIgdXYgPSBMVENfVXYoIG5vcm1hbCwgdmlld0Rpciwgcm91Z2huZXNzICk7XG5cdFx0dmVjNCB0MSA9IHRleHR1cmUyRCggbHRjXzEsIHV2ICk7XG5cdFx0dmVjNCB0MiA9IHRleHR1cmUyRCggbHRjXzIsIHV2ICk7XG5cdFx0bWF0MyBtSW52ID0gbWF0Myhcblx0XHRcdHZlYzMoIHQxLngsIDAsIHQxLnkgKSxcblx0XHRcdHZlYzMoICAgIDAsIDEsICAgIDAgKSxcblx0XHRcdHZlYzMoIHQxLnosIDAsIHQxLncgKVxuXHRcdCk7XG5cdFx0dmVjMyBmcmVzbmVsID0gKCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yICogdDIueCArICggdmVjMyggMS4wICkgLSBtYXRlcmlhbC5zcGVjdWxhckNvbG9yICkgKiB0Mi55ICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gbGlnaHRDb2xvciAqIGZyZXNuZWwgKiBMVENfRXZhbHVhdGUoIG5vcm1hbCwgdmlld0RpciwgcG9zaXRpb24sIG1JbnYsIHJlY3RDb29yZHMgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGxpZ2h0Q29sb3IgKiBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKiBMVENfRXZhbHVhdGUoIG5vcm1hbCwgdmlld0RpciwgcG9zaXRpb24sIG1hdDMoIDEuMCApLCByZWN0Q29vcmRzICk7XG5cdH1cbiNlbmRpZlxudm9pZCBSRV9EaXJlY3RfUGh5c2ljYWwoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0XHRmbG9hdCBkb3ROTGNjID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHRcdHZlYzMgY2NJcnJhZGlhbmNlID0gZG90TkxjYyAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdGNsZWFyY29hdFNwZWN1bGFyICs9IGNjSXJyYWRpYW5jZSAqIEJSREZfR0dYKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwuY2xlYXJjb2F0RjAsIG1hdGVyaWFsLmNsZWFyY29hdEY5MCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NIRUVOXG5cdFx0c2hlZW5TcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9TaGVlbiggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNoZWVuQ29sb3IsIG1hdGVyaWFsLnNoZWVuUm91Z2huZXNzICk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9HR1goIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCwgbWF0ZXJpYWwucm91Z2huZXNzICk7XG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0KSB7XG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUXG5cdFx0Y2xlYXJjb2F0U3BlY3VsYXIgKz0gY2xlYXJjb2F0UmFkaWFuY2UgKiBFbnZpcm9ubWVudEJSREYoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciwgbWF0ZXJpYWwuY2xlYXJjb2F0RjAsIG1hdGVyaWFsLmNsZWFyY29hdEY5MCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NIRUVOXG5cdFx0c2hlZW5TcGVjdWxhciArPSBpcnJhZGlhbmNlICogbWF0ZXJpYWwuc2hlZW5Db2xvciAqIElCTFNoZWVuQlJERiggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyLCBtYXRlcmlhbC5zaGVlblJvdWdobmVzcyApO1xuXHQjZW5kaWZcblx0dmVjMyBzaW5nbGVTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgbXVsdGlTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlID0gaXJyYWRpYW5jZSAqIFJFQ0lQUk9DQUxfUEk7XG5cdGNvbXB1dGVNdWx0aXNjYXR0ZXJpbmcoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJGOTAsIG1hdGVyaWFsLnJvdWdobmVzcywgc2luZ2xlU2NhdHRlcmluZywgbXVsdGlTY2F0dGVyaW5nICk7XG5cdHZlYzMgZGlmZnVzZSA9IG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqICggMS4wIC0gKCBzaW5nbGVTY2F0dGVyaW5nICsgbXVsdGlTY2F0dGVyaW5nICkgKTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSByYWRpYW5jZSAqIHNpbmdsZVNjYXR0ZXJpbmc7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gbXVsdGlTY2F0dGVyaW5nICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gZGlmZnVzZSAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfUGh5c2ljYWxcbiNkZWZpbmUgUkVfRGlyZWN0X1JlY3RBcmVhXHRcdFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0U3BlY3VsYXJcdFx0UkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbFxuZmxvYXQgY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgYW1iaWVudE9jY2x1c2lvbiwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRyZXR1cm4gc2F0dXJhdGUoIHBvdyggZG90TlYgKyBhbWJpZW50T2NjbHVzaW9uLCBleHAyKCAtIDE2LjAgKiByb3VnaG5lc3MgLSAxLjAgKSApIC0gMS4wICsgYW1iaWVudE9jY2x1c2lvbiApO1xufSIsbGlnaHRzX2ZyYWdtZW50X2JlZ2luOiJcbkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XG5nZW9tZXRyeS5wb3NpdGlvbiA9IC0gdlZpZXdQb3NpdGlvbjtcbmdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbDtcbmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcbiNpZmRlZiBVU0VfQ0xFQVJDT0FUXG5cdGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07XG5cdFx0Z2V0UG9pbnRMaWdodEluZm8oIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKVxuXHRcdHBvaW50TGlnaHRTaGFkb3cgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fU1BPVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0U3BvdExpZ2h0IHNwb3RMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0c1sgaSBdO1xuXHRcdGdldFNwb3RMaWdodEluZm8oIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIClcblx0XHRzcG90TGlnaHRTaGFkb3cgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX0RJUl9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0RGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodHNbIGkgXTtcblx0XHRnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fRElSX0xJR0hUX1NIQURPV1MgKVxuXHRcdGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhIClcblx0UmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkge1xuXHRcdHJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdO1xuXHRcdFJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHR2ZWMzIGlibElycmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0aXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkubm9ybWFsICk7XG5cdCNpZiAoIE5VTV9IRU1JX0xJR0hUUyA+IDAgKVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0XHRpcnJhZGlhbmNlICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkubm9ybWFsICk7XG5cdFx0fVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHZlYzMgcmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjbGVhcmNvYXRSYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuI2VuZGlmIixsaWdodHNfZnJhZ21lbnRfbWFwczoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWwgPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdFx0dmVjMyBsaWdodE1hcElycmFkaWFuY2UgPSBsaWdodE1hcFRleGVsLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0bGlnaHRNYXBJcnJhZGlhbmNlICo9IFBJO1xuXHRcdCNlbmRpZlxuXHRcdGlycmFkaWFuY2UgKz0gbGlnaHRNYXBJcnJhZGlhbmNlO1xuXHQjZW5kaWZcblx0I2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBTVEFOREFSRCApICYmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdGlibElycmFkaWFuY2UgKz0gZ2V0SUJMSXJyYWRpYW5jZSggZ2VvbWV0cnkubm9ybWFsICk7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHRyYWRpYW5jZSArPSBnZXRJQkxSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5yb3VnaG5lc3MgKTtcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0XHRjbGVhcmNvYXRSYWRpYW5jZSArPSBnZXRJQkxSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0I2VuZGlmXG4jZW5kaWYiLGxpZ2h0c19mcmFnbWVudF9lbmQ6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHRSRV9JbmRpcmVjdERpZmZ1c2UoIGlycmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHRSRV9JbmRpcmVjdFNwZWN1bGFyKCByYWRpYW5jZSwgaWJsSXJyYWRpYW5jZSwgY2xlYXJjb2F0UmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0Z2xfRnJhZ0RlcHRoRVhUID0gdklzUGVyc3BlY3RpdmUgPT0gMC4wID8gZ2xfRnJhZ0Nvb3JkLnogOiBsb2cyKCB2RnJhZ0RlcHRoICkgKiBsb2dEZXB0aEJ1ZkZDICogMC41O1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApXG5cdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHR2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcblx0XHR2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0I2VuZGlmXG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZGcmFnRGVwdGggPSAxLjAgKyBnbF9Qb3NpdGlvbi53O1xuXHRcdHZJc1BlcnNwZWN0aXZlID0gZmxvYXQoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApO1xuXHQjZWxzZVxuXHRcdGlmICggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICkge1xuXHRcdFx0Z2xfUG9zaXRpb24ueiA9IGxvZzIoIG1heCggRVBTSUxPTiwgZ2xfUG9zaXRpb24udyArIDEuMCApICkgKiBsb2dEZXB0aEJ1ZkZDIC0gMS4wO1xuXHRcdFx0Z2xfUG9zaXRpb24ueiAqPSBnbF9Qb3NpdGlvbi53O1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWYiLG1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dmVjNCBzYW1wbGVkRGlmZnVzZUNvbG9yID0gdGV4dHVyZTJEKCBtYXAsIHZVdiApO1xuXHQjaWZkZWYgREVDT0RFX1ZJREVPX1RFWFRVUkVcblx0XHRzYW1wbGVkRGlmZnVzZUNvbG9yID0gdmVjNCggbWl4KCBwb3coIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiICogMC4wNzczOTkzODA4LCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCBzYW1wbGVkRGlmZnVzZUNvbG9yLnJnYiwgdmVjMyggMC4wNDA0NSApICkgKSApLCBzYW1wbGVkRGlmZnVzZUNvbG9yLncgKTtcblx0I2VuZGlmXG5cdGRpZmZ1c2VDb2xvciAqPSBzYW1wbGVkRGlmZnVzZUNvbG9yO1xuI2VuZGlmIixtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmIixtYXBfcGFydGljbGVfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQIClcblx0dmVjMiB1diA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCBnbF9Qb2ludENvb3JkLngsIDEuMCAtIGdsX1BvaW50Q29vcmQueSwgMSApICkueHk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdGRpZmZ1c2VDb2xvciAqPSB0ZXh0dXJlMkQoIG1hcCwgdXYgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB1diApLmc7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX01BUCApIHx8IGRlZmluZWQoIFVTRV9BTFBIQU1BUCApXG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IG1ldGFsbmVzc0ZhY3RvciA9IG1ldGFsbmVzcztcbiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHZlYzQgdGV4ZWxNZXRhbG5lc3MgPSB0ZXh0dXJlMkQoIG1ldGFsbmVzc01hcCwgdlV2ICk7XG5cdG1ldGFsbmVzc0ZhY3RvciAqPSB0ZXhlbE1ldGFsbmVzcy5iO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWV0YWxuZXNzTWFwO1xuI2VuZGlmIixtb3JwaG5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdG9iamVjdE5vcm1hbCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdCNpZmRlZiBNT1JQSFRBUkdFVFNfVEVYVFVSRVxuXHRcdGZvciAoIGludCBpID0gMDsgaSA8IE1PUlBIVEFSR0VUU19DT1VOVDsgaSArKyApIHtcblx0XHRcdGlmICggbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF0gIT0gMC4wICkgb2JqZWN0Tm9ybWFsICs9IGdldE1vcnBoKCBnbF9WZXJ0ZXhJRCwgaSwgMSwgMiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF07XG5cdFx0fVxuXHQjZWxzZVxuXHRcdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0XHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwxICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07XG5cdFx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdO1xuXHRcdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcblx0I2VuZGlmXG4jZW5kaWYiLG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0I2lmZGVmIE1PUlBIVEFSR0VUU19URVhUVVJFXG5cdFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIE1PUlBIVEFSR0VUU19DT1VOVCBdO1xuXHRcdHVuaWZvcm0gc2FtcGxlcjJEQXJyYXkgbW9ycGhUYXJnZXRzVGV4dHVyZTtcblx0XHR1bmlmb3JtIHZlYzIgbW9ycGhUYXJnZXRzVGV4dHVyZVNpemU7XG5cdFx0dmVjMyBnZXRNb3JwaCggY29uc3QgaW4gaW50IHZlcnRleEluZGV4LCBjb25zdCBpbiBpbnQgbW9ycGhUYXJnZXRJbmRleCwgY29uc3QgaW4gaW50IG9mZnNldCwgY29uc3QgaW4gaW50IHN0cmlkZSApIHtcblx0XHRcdGZsb2F0IHRleGVsSW5kZXggPSBmbG9hdCggdmVydGV4SW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKTtcblx0XHRcdGZsb2F0IHkgPSBmbG9vciggdGV4ZWxJbmRleCAvIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLnggKTtcblx0XHRcdGZsb2F0IHggPSB0ZXhlbEluZGV4IC0geSAqIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLng7XG5cdFx0XHR2ZWMzIG1vcnBoVVYgPSB2ZWMzKCAoIHggKyAwLjUgKSAvIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLngsIHkgLyBtb3JwaFRhcmdldHNUZXh0dXJlU2l6ZS55LCBtb3JwaFRhcmdldEluZGV4ICk7XG5cdFx0XHRyZXR1cm4gdGV4dHVyZSggbW9ycGhUYXJnZXRzVGV4dHVyZSwgbW9ycGhVViApLnh5ejtcblx0XHR9XG5cdCNlbHNlXG5cdFx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgOCBdO1xuXHRcdCNlbHNlXG5cdFx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcbiNlbmRpZiIsbW9ycGh0YXJnZXRfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR0cmFuc2Zvcm1lZCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdCNpZmRlZiBNT1JQSFRBUkdFVFNfVEVYVFVSRVxuXHRcdGZvciAoIGludCBpID0gMDsgaSA8IE1PUlBIVEFSR0VUU19DT1VOVDsgaSArKyApIHtcblx0XHRcdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHRcdFx0XHRpZiAoIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdICE9IDAuMCApIHRyYW5zZm9ybWVkICs9IGdldE1vcnBoKCBnbF9WZXJ0ZXhJRCwgaSwgMCwgMSApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF07XG5cdFx0XHQjZWxzZVxuXHRcdFx0XHRpZiAoIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdICE9IDAuMCApIHRyYW5zZm9ybWVkICs9IGdldE1vcnBoKCBnbF9WZXJ0ZXhJRCwgaSwgMCwgMiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF07XG5cdFx0XHQjZW5kaWZcblx0XHR9XG5cdCNlbHNlXG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQxICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG5cdFx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDQgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0XHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNSBdO1xuXHRcdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ2ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA2IF07XG5cdFx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDcgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWYiLG5vcm1hbF9mcmFnbWVudF9iZWdpbjoiZmxvYXQgZmFjZURpcmVjdGlvbiA9IGdsX0Zyb250RmFjaW5nID8gMS4wIDogLSAxLjA7XG4jaWZkZWYgRkxBVF9TSEFERURcblx0dmVjMyBmZHggPSB2ZWMzKCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeCggdlZpZXdQb3NpdGlvbi55ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgZmR5ID0gdmVjMyggZEZkeSggdlZpZXdQb3NpdGlvbi54ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnogKSApO1xuXHR2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggY3Jvc3MoIGZkeCwgZmR5ICkgKTtcbiNlbHNlXG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCB2Tm9ybWFsICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmVjMyB0YW5nZW50ID0gbm9ybWFsaXplKCB2VGFuZ2VudCApO1xuXHRcdHZlYzMgYml0YW5nZW50ID0gbm9ybWFsaXplKCB2Qml0YW5nZW50ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dGFuZ2VudCA9IHRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdFx0Yml0YW5nZW50ID0gYml0YW5nZW50ICogZmFjZURpcmVjdGlvbjtcblx0XHQjZW5kaWZcblx0XHQjaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIClcblx0XHRcdG1hdDMgdlRCTiA9IG1hdDMoIHRhbmdlbnQsIGJpdGFuZ2VudCwgbm9ybWFsICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmXG52ZWMzIGdlb21ldHJ5Tm9ybWFsID0gbm9ybWFsOyIsbm9ybWFsX2ZyYWdtZW50X21hcHM6IiNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVBcblx0bm9ybWFsID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0I2lmZGVmIEZMSVBfU0lERURcblx0XHRub3JtYWwgPSAtIG5vcm1hbDtcblx0I2VuZGlmXG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uO1xuXHQjZW5kaWZcblx0bm9ybWFsID0gbm9ybWFsaXplKCBub3JtYWxNYXRyaXggKiBub3JtYWwgKTtcbiNlbGlmIGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRtYXBOLnh5ICo9IG5vcm1hbFNjYWxlO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRub3JtYWwgPSBub3JtYWxpemUoIHZUQk4gKiBtYXBOICk7XG5cdCNlbHNlXG5cdFx0bm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBtYXBOLCBmYWNlRGlyZWN0aW9uICk7XG5cdCNlbmRpZlxuI2VsaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKVxuXHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsQXJiKCAtIHZWaWV3UG9zaXRpb24sIG5vcm1hbCwgZEhkeHlfZndkKCksIGZhY2VEaXJlY3Rpb24gKTtcbiNlbmRpZiIsbm9ybWFsX3BhcnNfZnJhZ21lbnQ6IiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWYiLG5vcm1hbF9wYXJzX3ZlcnRleDoiI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZiIsbm9ybWFsX3ZlcnRleDoiI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7XG5cdFx0dkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTtcblx0I2VuZGlmXG4jZW5kaWYiLG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBub3JtYWxTY2FsZTtcbiNlbmRpZlxuI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4O1xuI2VuZGlmXG4jaWYgISBkZWZpbmVkICggVVNFX1RBTkdFTlQgKSAmJiAoIGRlZmluZWQgKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQICkgKVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMzIG1hcE4sIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzIgc3QwID0gZEZkeCggdlV2LnN0ICk7XG5cdFx0dmVjMiBzdDEgPSBkRmR5KCB2VXYuc3QgKTtcblx0XHR2ZWMzIE4gPSBzdXJmX25vcm07XG5cdFx0dmVjMyBxMXBlcnAgPSBjcm9zcyggcTEsIE4gKTtcblx0XHR2ZWMzIHEwcGVycCA9IGNyb3NzKCBOLCBxMCApO1xuXHRcdHZlYzMgVCA9IHExcGVycCAqIHN0MC54ICsgcTBwZXJwICogc3QxLng7XG5cdFx0dmVjMyBCID0gcTFwZXJwICogc3QwLnkgKyBxMHBlcnAgKiBzdDEueTtcblx0XHRmbG9hdCBkZXQgPSBtYXgoIGRvdCggVCwgVCApLCBkb3QoIEIsIEIgKSApO1xuXHRcdGZsb2F0IHNjYWxlID0gKCBkZXQgPT0gMC4wICkgPyAwLjAgOiBmYWNlRGlyZWN0aW9uICogaW52ZXJzZXNxcnQoIGRldCApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIFQgKiAoIG1hcE4ueCAqIHNjYWxlICkgKyBCICogKCBtYXBOLnkgKiBzY2FsZSApICsgTiAqIG1hcE4ueiApO1xuXHR9XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW46IiNpZmRlZiBVU0VfQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsID0gZ2VvbWV0cnlOb3JtYWw7XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHZlYzMgY2xlYXJjb2F0TWFwTiA9IHRleHR1cmUyRCggY2xlYXJjb2F0Tm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdGNsZWFyY29hdE1hcE4ueHkgKj0gY2xlYXJjb2F0Tm9ybWFsU2NhbGU7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIGNsZWFyY29hdE1hcE4gKTtcblx0I2Vsc2Vcblx0XHRjbGVhcmNvYXROb3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLSB2Vmlld1Bvc2l0aW9uLCBjbGVhcmNvYXROb3JtYWwsIGNsZWFyY29hdE1hcE4sIGZhY2VEaXJlY3Rpb24gKTtcblx0I2VuZGlmXG4jZW5kaWYiLGNsZWFyY29hdF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0NMRUFSQ09BVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXRNYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXRSb3VnaG5lc3NNYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXROb3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBjbGVhcmNvYXROb3JtYWxTY2FsZTtcbiNlbmRpZiIsb3V0cHV0X2ZyYWdtZW50OiIjaWZkZWYgT1BBUVVFXG5kaWZmdXNlQ29sb3IuYSA9IDEuMDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cbmRpZmZ1c2VDb2xvci5hICo9IHRyYW5zbWlzc2lvbkFscGhhICsgMC4xO1xuI2VuZGlmXG5nbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApOyIscGFja2luZzoidmVjMyBwYWNrTm9ybWFsVG9SR0IoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCBub3JtYWwgKSAqIDAuNSArIDAuNTtcbn1cbnZlYzMgdW5wYWNrUkdCVG9Ob3JtYWwoIGNvbnN0IGluIHZlYzMgcmdiICkge1xuXHRyZXR1cm4gMi4wICogcmdiLnh5eiAtIDEuMDtcbn1cbmNvbnN0IGZsb2F0IFBhY2tVcHNjYWxlID0gMjU2LiAvIDI1NS47Y29uc3QgZmxvYXQgVW5wYWNrRG93bnNjYWxlID0gMjU1LiAvIDI1Ni47XG5jb25zdCB2ZWMzIFBhY2tGYWN0b3JzID0gdmVjMyggMjU2LiAqIDI1Ni4gKiAyNTYuLCAyNTYuICogMjU2LiwgMjU2LiApO1xuY29uc3QgdmVjNCBVbnBhY2tGYWN0b3JzID0gVW5wYWNrRG93bnNjYWxlIC8gdmVjNCggUGFja0ZhY3RvcnMsIDEuICk7XG5jb25zdCBmbG9hdCBTaGlmdFJpZ2h0OCA9IDEuIC8gMjU2LjtcbnZlYzQgcGFja0RlcHRoVG9SR0JBKCBjb25zdCBpbiBmbG9hdCB2ICkge1xuXHR2ZWM0IHIgPSB2ZWM0KCBmcmFjdCggdiAqIFBhY2tGYWN0b3JzICksIHYgKTtcblx0ci55encgLT0gci54eXogKiBTaGlmdFJpZ2h0ODtcdHJldHVybiByICogUGFja1Vwc2NhbGU7XG59XG5mbG9hdCB1bnBhY2tSR0JBVG9EZXB0aCggY29uc3QgaW4gdmVjNCB2ICkge1xuXHRyZXR1cm4gZG90KCB2LCBVbnBhY2tGYWN0b3JzICk7XG59XG52ZWM0IHBhY2sySGFsZlRvUkdCQSggdmVjMiB2ICkge1xuXHR2ZWM0IHIgPSB2ZWM0KCB2LngsIGZyYWN0KCB2LnggKiAyNTUuMCApLCB2LnksIGZyYWN0KCB2LnkgKiAyNTUuMCApICk7XG5cdHJldHVybiB2ZWM0KCByLnggLSByLnkgLyAyNTUuMCwgci55LCByLnogLSByLncgLyAyNTUuMCwgci53ICk7XG59XG52ZWMyIHVucGFja1JHQkFUbzJIYWxmKCB2ZWM0IHYgKSB7XG5cdHJldHVybiB2ZWMyKCB2LnggKyAoIHYueSAvIDI1NS4wICksIHYueiArICggdi53IC8gMjU1LjAgKSApO1xufVxuZmxvYXQgdmlld1pUb09ydGhvZ3JhcGhpY0RlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCB2aWV3WiArIG5lYXIgKSAvICggbmVhciAtIGZhciApO1xufVxuZmxvYXQgb3J0aG9ncmFwaGljRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBsaW5lYXJDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gbGluZWFyQ2xpcFogKiAoIG5lYXIgLSBmYXIgKSAtIG5lYXI7XG59XG5mbG9hdCB2aWV3WlRvUGVyc3BlY3RpdmVEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggKCBuZWFyICsgdmlld1ogKSAqIGZhciApIC8gKCAoIGZhciAtIG5lYXIgKSAqIHZpZXdaICk7XG59XG5mbG9hdCBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgaW52Q2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggbmVhciAqIGZhciApIC8gKCAoIGZhciAtIG5lYXIgKSAqIGludkNsaXBaIC0gZmFyICk7XG59IixwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50OiIjaWZkZWYgUFJFTVVMVElQTElFRF9BTFBIQVxuXHRnbF9GcmFnQ29sb3IucmdiICo9IGdsX0ZyYWdDb2xvci5hO1xuI2VuZGlmIixwcm9qZWN0X3ZlcnRleDoidmVjNCBtdlBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG12UG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIG12UG9zaXRpb247XG4jZW5kaWZcbm12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiBtdlBvc2l0aW9uO1xuZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjsiLGRpdGhlcmluZ19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHRnbF9GcmFnQ29sb3IucmdiID0gZGl0aGVyaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdHZlYzMgZGl0aGVyaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRcdGZsb2F0IGdyaWRfcG9zaXRpb24gPSByYW5kKCBnbF9GcmFnQ29vcmQueHkgKTtcblx0XHR2ZWMzIGRpdGhlcl9zaGlmdF9SR0IgPSB2ZWMzKCAwLjI1IC8gMjU1LjAsIC0wLjI1IC8gMjU1LjAsIDAuMjUgLyAyNTUuMCApO1xuXHRcdGRpdGhlcl9zaGlmdF9SR0IgPSBtaXgoIDIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIC0yLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCBncmlkX3Bvc2l0aW9uICk7XG5cdFx0cmV0dXJuIGNvbG9yICsgZGl0aGVyX3NoaWZ0X1JHQjtcblx0fVxuI2VuZGlmIixyb3VnaG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IHJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzcztcbiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHZlYzQgdGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7XG5cdHJvdWdobmVzc0ZhY3RvciAqPSB0ZXhlbFJvdWdobmVzcy5nO1xuI2VuZGlmIixyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgcm91Z2huZXNzTWFwO1xuI2VuZGlmIixzaGFkb3dtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcG90U2hhZG93TWFwWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHBvaW50U2hhZG93TWFwWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHRmbG9hdCB0ZXh0dXJlMkRDb21wYXJlKCBzYW1wbGVyMkQgZGVwdGhzLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkge1xuXHRcdHJldHVybiBzdGVwKCBjb21wYXJlLCB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBkZXB0aHMsIHV2ICkgKSApO1xuXHR9XG5cdHZlYzIgdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2ICkge1xuXHRcdHJldHVybiB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3csIHV2ICkgKTtcblx0fVxuXHRmbG9hdCBWU01TaGFkb3cgKHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKXtcblx0XHRmbG9hdCBvY2NsdXNpb24gPSAxLjA7XG5cdFx0dmVjMiBkaXN0cmlidXRpb24gPSB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNoYWRvdywgdXYgKTtcblx0XHRmbG9hdCBoYXJkX3NoYWRvdyA9IHN0ZXAoIGNvbXBhcmUgLCBkaXN0cmlidXRpb24ueCApO1xuXHRcdGlmIChoYXJkX3NoYWRvdyAhPSAxLjAgKSB7XG5cdFx0XHRmbG9hdCBkaXN0YW5jZSA9IGNvbXBhcmUgLSBkaXN0cmlidXRpb24ueCA7XG5cdFx0XHRmbG9hdCB2YXJpYW5jZSA9IG1heCggMC4wMDAwMCwgZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSApO1xuXHRcdFx0ZmxvYXQgc29mdG5lc3NfcHJvYmFiaWxpdHkgPSB2YXJpYW5jZSAvICh2YXJpYW5jZSArIGRpc3RhbmNlICogZGlzdGFuY2UgKTtcdFx0XHRzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IGNsYW1wKCAoIHNvZnRuZXNzX3Byb2JhYmlsaXR5IC0gMC4zICkgLyAoIDAuOTUgLSAwLjMgKSwgMC4wLCAxLjAgKTtcdFx0XHRvY2NsdXNpb24gPSBjbGFtcCggbWF4KCBoYXJkX3NoYWRvdywgc29mdG5lc3NfcHJvYmFiaWxpdHkgKSwgMC4wLCAxLjAgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9jY2x1c2lvbjtcblx0fVxuXHRmbG9hdCBnZXRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkICkge1xuXHRcdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0XHRzaGFkb3dDb29yZC54eXogLz0gc2hhZG93Q29vcmQudztcblx0XHRzaGFkb3dDb29yZC56ICs9IHNoYWRvd0JpYXM7XG5cdFx0YnZlYzQgaW5GcnVzdHVtVmVjID0gYnZlYzQgKCBzaGFkb3dDb29yZC54ID49IDAuMCwgc2hhZG93Q29vcmQueCA8PSAxLjAsIHNoYWRvd0Nvb3JkLnkgPj0gMC4wLCBzaGFkb3dDb29yZC55IDw9IDEuMCApO1xuXHRcdGJvb2wgaW5GcnVzdHVtID0gYWxsKCBpbkZydXN0dW1WZWMgKTtcblx0XHRidmVjMiBmcnVzdHVtVGVzdFZlYyA9IGJ2ZWMyKCBpbkZydXN0dW0sIHNoYWRvd0Nvb3JkLnogPD0gMS4wICk7XG5cdFx0Ym9vbCBmcnVzdHVtVGVzdCA9IGFsbCggZnJ1c3R1bVRlc3RWZWMgKTtcblx0XHRpZiAoIGZydXN0dW1UZXN0ICkge1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkwID0gLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MSA9ICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgyID0gZHgwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkyID0gZHkwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHgzID0gZHgxIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkzID0gZHkxIC8gMi4wO1xuXHRcdFx0c2hhZG93ID0gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApXG5cdFx0XHQpICogKCAxLjAgLyAxNy4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeCA9IHRleGVsU2l6ZS54O1xuXHRcdFx0ZmxvYXQgZHkgPSB0ZXhlbFNpemUueTtcblx0XHRcdHZlYzIgdXYgPSBzaGFkb3dDb29yZC54eTtcblx0XHRcdHZlYzIgZiA9IGZyYWN0KCB1diAqIHNoYWRvd01hcFNpemUgKyAwLjUgKTtcblx0XHRcdHV2IC09IGYgKiB0ZXhlbFNpemU7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB0ZXhlbFNpemUsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi54ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnggKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi55ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnkgKSArXG5cdFx0XHRcdG1peCggbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHRcdCAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdFx0ICBmLnggKSxcblx0XHRcdFx0XHQgbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdFx0ICB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHRcdCAgZi54ICksXG5cdFx0XHRcdFx0IGYueSApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0c2hhZG93ID0gVlNNU2hhZG93KCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZW5kaWZcblx0XHR9XG5cdFx0cmV0dXJuIHNoYWRvdztcblx0fVxuXHR2ZWMyIGN1YmVUb1VWKCB2ZWMzIHYsIGZsb2F0IHRleGVsU2l6ZVkgKSB7XG5cdFx0dmVjMyBhYnNWID0gYWJzKCB2ICk7XG5cdFx0ZmxvYXQgc2NhbGVUb0N1YmUgPSAxLjAgLyBtYXgoIGFic1YueCwgbWF4KCBhYnNWLnksIGFic1YueiApICk7XG5cdFx0YWJzViAqPSBzY2FsZVRvQ3ViZTtcblx0XHR2ICo9IHNjYWxlVG9DdWJlICogKCAxLjAgLSAyLjAgKiB0ZXhlbFNpemVZICk7XG5cdFx0dmVjMiBwbGFuYXIgPSB2Lnh5O1xuXHRcdGZsb2F0IGFsbW9zdEFUZXhlbCA9IDEuNSAqIHRleGVsU2l6ZVk7XG5cdFx0ZmxvYXQgYWxtb3N0T25lID0gMS4wIC0gYWxtb3N0QVRleGVsO1xuXHRcdGlmICggYWJzVi56ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGlmICggdi56ID4gMC4wIClcblx0XHRcdFx0cGxhbmFyLnggPSA0LjAgLSB2Lng7XG5cdFx0fSBlbHNlIGlmICggYWJzVi54ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25YID0gc2lnbiggdi54ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7XG5cdFx0fSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25ZID0gc2lnbiggdi55ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueCArIDIuMCAqIHNpZ25ZICsgMi4wO1xuXHRcdFx0cGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDtcblx0XHR9XG5cdFx0cmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApO1xuXHR9XG5cdGZsb2F0IGdldFBvaW50U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCwgZmxvYXQgc2hhZG93Q2FtZXJhTmVhciwgZmxvYXQgc2hhZG93Q2FtZXJhRmFyICkge1xuXHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyAoIHNoYWRvd01hcFNpemUgKiB2ZWMyKCA0LjAsIDIuMCApICk7XG5cdFx0dmVjMyBsaWdodFRvUG9zaXRpb24gPSBzaGFkb3dDb29yZC54eXo7XG5cdFx0ZmxvYXQgZHAgPSAoIGxlbmd0aCggbGlnaHRUb1Bvc2l0aW9uICkgLSBzaGFkb3dDYW1lcmFOZWFyICkgLyAoIHNoYWRvd0NhbWVyYUZhciAtIHNoYWRvd0NhbWVyYU5lYXIgKTtcdFx0ZHAgKz0gc2hhZG93Qmlhcztcblx0XHR2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApO1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHR2ZWMyIG9mZnNldCA9IHZlYzIoIC0gMSwgMSApICogc2hhZG93UmFkaXVzICogdGV4ZWxTaXplLnk7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHNwb3RTaGFkb3dNYXRyaXhbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBTcG90TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHBvaW50U2hhZG93TWF0cml4WyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXBfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR2ZWMzIHNoYWRvd1dvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHR2ZWM0IHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdCNlbmRpZlxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSA9IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBzcG90TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZTcG90U2hhZG93Q29vcmRbIGkgXSA9IHNwb3RTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogcG9pbnRMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dlBvaW50U2hhZG93Q29vcmRbIGkgXSA9IHBvaW50U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ6ImZsb2F0IGdldFNoYWRvd01hc2soKSB7XG5cdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0I2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodC5zaGFkb3dCaWFzLCBwb2ludExpZ2h0LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjZW5kaWZcblx0cmV0dXJuIHNoYWRvdztcbn0iLHNraW5iYXNlX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IGJvbmVNYXRYID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnggKTtcblx0bWF0NCBib25lTWF0WSA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC55ICk7XG5cdG1hdDQgYm9uZU1hdFogPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueiApO1xuXHRtYXQ0IGJvbmVNYXRXID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LncgKTtcbiNlbmRpZiIsc2tpbm5pbmdfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXg7XG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4SW52ZXJzZTtcblx0I2lmZGVmIEJPTkVfVEVYVFVSRVxuXHRcdHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIGJvbmVUZXh0dXJlO1xuXHRcdHVuaWZvcm0gaW50IGJvbmVUZXh0dXJlU2l6ZTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRmbG9hdCBqID0gaSAqIDQuMDtcblx0XHRcdGZsb2F0IHggPSBtb2QoIGosIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgeSA9IGZsb29yKCBqIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCBkeCA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdGZsb2F0IGR5ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0eSA9IGR5ICogKCB5ICsgMC41ICk7XG5cdFx0XHR2ZWM0IHYxID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAwLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYyID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAxLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYzID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAyLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHY0ID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAzLjUgKSwgeSApICk7XG5cdFx0XHRtYXQ0IGJvbmUgPSBtYXQ0KCB2MSwgdjIsIHYzLCB2NCApO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZWxzZVxuXHRcdHVuaWZvcm0gbWF0NCBib25lTWF0cmljZXNbIE1BWF9CT05FUyBdO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdG1hdDQgYm9uZSA9IGJvbmVNYXRyaWNlc1sgaW50KGkpIF07XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIixza2lubmluZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dmVjNCBza2luVmVydGV4ID0gYmluZE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0dmVjNCBza2lubmVkID0gdmVjNCggMC4wICk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFggKiBza2luVmVydGV4ICogc2tpbldlaWdodC54O1xuXHRza2lubmVkICs9IGJvbmVNYXRZICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueTtcblx0c2tpbm5lZCArPSBib25lTWF0WiAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lno7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFcgKiBza2luVmVydGV4ICogc2tpbldlaWdodC53O1xuXHR0cmFuc2Zvcm1lZCA9ICggYmluZE1hdHJpeEludmVyc2UgKiBza2lubmVkICkueHl6O1xuI2VuZGlmIixza2lubm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IHNraW5NYXRyaXggPSBtYXQ0KCAwLjAgKTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnggKiBib25lTWF0WDtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnkgKiBib25lTWF0WTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnogKiBib25lTWF0Wjtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LncgKiBib25lTWF0Vztcblx0c2tpbk1hdHJpeCA9IGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbk1hdHJpeCAqIGJpbmRNYXRyaXg7XG5cdG9iamVjdE5vcm1hbCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3ROb3JtYWwsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRvYmplY3RUYW5nZW50ID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjZW5kaWZcbiNlbmRpZiIsc3BlY3VsYXJtYXBfZnJhZ21lbnQ6ImZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG4jaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHZlYzQgdGV4ZWxTcGVjdWxhciA9IHRleHR1cmUyRCggc3BlY3VsYXJNYXAsIHZVdiApO1xuXHRzcGVjdWxhclN0cmVuZ3RoID0gdGV4ZWxTcGVjdWxhci5yO1xuI2Vsc2Vcblx0c3BlY3VsYXJTdHJlbmd0aCA9IDEuMDtcbiNlbmRpZiIsc3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhck1hcDtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBUT05FX01BUFBJTkcgKVxuXHRnbF9GcmFnQ29sb3IucmdiID0gdG9uZU1hcHBpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiI2lmbmRlZiBzYXR1cmF0ZVxuI2RlZmluZSBzYXR1cmF0ZSggYSApIGNsYW1wKCBhLCAwLjAsIDEuMCApXG4jZW5kaWZcbnVuaWZvcm0gZmxvYXQgdG9uZU1hcHBpbmdFeHBvc3VyZTtcbnZlYzMgTGluZWFyVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdHJldHVybiB0b25lTWFwcGluZ0V4cG9zdXJlICogY29sb3I7XG59XG52ZWMzIFJlaW5oYXJkVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgLyAoIHZlYzMoIDEuMCApICsgY29sb3IgKSApO1xufVxudmVjMyBPcHRpbWl6ZWRDaW5lb25Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcblx0Y29sb3IgPSBtYXgoIHZlYzMoIDAuMCApLCBjb2xvciAtIDAuMDA0ICk7XG5cdHJldHVybiBwb3coICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMC41ICkgKSAvICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMS43ICkgKyAwLjA2ICksIHZlYzMoIDIuMiApICk7XG59XG52ZWMzIFJSVEFuZE9EVEZpdCggdmVjMyB2ICkge1xuXHR2ZWMzIGEgPSB2ICogKCB2ICsgMC4wMjQ1Nzg2ICkgLSAwLjAwMDA5MDUzNztcblx0dmVjMyBiID0gdiAqICggMC45ODM3MjkgKiB2ICsgMC40MzI5NTEwICkgKyAwLjIzODA4MTtcblx0cmV0dXJuIGEgLyBiO1xufVxudmVjMyBBQ0VTRmlsbWljVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbnN0IG1hdDMgQUNFU0lucHV0TWF0ID0gbWF0Myhcblx0XHR2ZWMzKCAwLjU5NzE5LCAwLjA3NjAwLCAwLjAyODQwICksXHRcdHZlYzMoIDAuMzU0NTgsIDAuOTA4MzQsIDAuMTMzODMgKSxcblx0XHR2ZWMzKCAwLjA0ODIzLCAwLjAxNTY2LCAwLjgzNzc3IClcblx0KTtcblx0Y29uc3QgbWF0MyBBQ0VTT3V0cHV0TWF0ID0gbWF0Myhcblx0XHR2ZWMzKCAgMS42MDQ3NSwgLTAuMTAyMDgsIC0wLjAwMzI3ICksXHRcdHZlYzMoIC0wLjUzMTA4LCAgMS4xMDgxMywgLTAuMDcyNzYgKSxcblx0XHR2ZWMzKCAtMC4wNzM2NywgLTAuMDA2MDUsICAxLjA3NjAyIClcblx0KTtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZSAvIDAuNjtcblx0Y29sb3IgPSBBQ0VTSW5wdXRNYXQgKiBjb2xvcjtcblx0Y29sb3IgPSBSUlRBbmRPRFRGaXQoIGNvbG9yICk7XG5cdGNvbG9yID0gQUNFU091dHB1dE1hdCAqIGNvbG9yO1xuXHRyZXR1cm4gc2F0dXJhdGUoIGNvbG9yICk7XG59XG52ZWMzIEN1c3RvbVRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gY29sb3I7IH0iLHRyYW5zbWlzc2lvbl9mcmFnbWVudDoiI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0ZmxvYXQgdHJhbnNtaXNzaW9uQWxwaGEgPSAxLjA7XG5cdGZsb2F0IHRyYW5zbWlzc2lvbkZhY3RvciA9IHRyYW5zbWlzc2lvbjtcblx0ZmxvYXQgdGhpY2tuZXNzRmFjdG9yID0gdGhpY2tuZXNzO1xuXHQjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHRcdHRyYW5zbWlzc2lvbkZhY3RvciAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG5cdFx0dGhpY2tuZXNzRmFjdG9yICo9IHRleHR1cmUyRCggdGhpY2tuZXNzTWFwLCB2VXYgKS5nO1xuXHQjZW5kaWZcblx0dmVjMyBwb3MgPSB2V29ybGRQb3NpdGlvbjtcblx0dmVjMyB2ID0gbm9ybWFsaXplKCBjYW1lcmFQb3NpdGlvbiAtIHBvcyApO1xuXHR2ZWMzIG4gPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0dmVjNCB0cmFuc21pc3Npb24gPSBnZXRJQkxWb2x1bWVSZWZyYWN0aW9uKFxuXHRcdG4sIHYsIHJvdWdobmVzc0ZhY3RvciwgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcblx0XHRwb3MsIG1vZGVsTWF0cml4LCB2aWV3TWF0cml4LCBwcm9qZWN0aW9uTWF0cml4LCBpb3IsIHRoaWNrbmVzc0ZhY3Rvcixcblx0XHRhdHRlbnVhdGlvbkNvbG9yLCBhdHRlbnVhdGlvbkRpc3RhbmNlICk7XG5cdHRvdGFsRGlmZnVzZSA9IG1peCggdG90YWxEaWZmdXNlLCB0cmFuc21pc3Npb24ucmdiLCB0cmFuc21pc3Npb25GYWN0b3IgKTtcblx0dHJhbnNtaXNzaW9uQWxwaGEgPSBtaXgoIHRyYW5zbWlzc2lvbkFscGhhLCB0cmFuc21pc3Npb24uYSwgdHJhbnNtaXNzaW9uRmFjdG9yICk7XG4jZW5kaWYiLHRyYW5zbWlzc2lvbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHR1bmlmb3JtIGZsb2F0IHRyYW5zbWlzc2lvbjtcblx0dW5pZm9ybSBmbG9hdCB0aGlja25lc3M7XG5cdHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZTtcblx0dW5pZm9ybSB2ZWMzIGF0dGVudWF0aW9uQ29sb3I7XG5cdCNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uTWFwO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9USElDS05FU1NNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0aGlja25lc3NNYXA7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIHZlYzIgdHJhbnNtaXNzaW9uU2FtcGxlclNpemU7XG5cdHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvblNhbXBsZXJNYXA7XG5cdHVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDtcblx0dW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XG5cdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcblx0dmVjMyBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkoIGNvbnN0IGluIHZlYzMgbiwgY29uc3QgaW4gdmVjMyB2LCBjb25zdCBpbiBmbG9hdCB0aGlja25lc3MsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gbWF0NCBtb2RlbE1hdHJpeCApIHtcblx0XHR2ZWMzIHJlZnJhY3Rpb25WZWN0b3IgPSByZWZyYWN0KCAtIHYsIG5vcm1hbGl6ZSggbiApLCAxLjAgLyBpb3IgKTtcblx0XHR2ZWMzIG1vZGVsU2NhbGU7XG5cdFx0bW9kZWxTY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLnh5eiApICk7XG5cdFx0bW9kZWxTY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLnh5eiApICk7XG5cdFx0bW9kZWxTY2FsZS56ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMiBdLnh5eiApICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggcmVmcmFjdGlvblZlY3RvciApICogdGhpY2tuZXNzICogbW9kZWxTY2FsZTtcblx0fVxuXHRmbG9hdCBhcHBseUlvclRvUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGlvciApIHtcblx0XHRyZXR1cm4gcm91Z2huZXNzICogY2xhbXAoIGlvciAqIDIuMCAtIDIuMCwgMC4wLCAxLjAgKTtcblx0fVxuXHR2ZWM0IGdldFRyYW5zbWlzc2lvblNhbXBsZSggY29uc3QgaW4gdmVjMiBmcmFnQ29vcmQsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgaW9yICkge1xuXHRcdGZsb2F0IGZyYW1lYnVmZmVyTG9kID0gbG9nMiggdHJhbnNtaXNzaW9uU2FtcGxlclNpemUueCApICogYXBwbHlJb3JUb1JvdWdobmVzcyggcm91Z2huZXNzLCBpb3IgKTtcblx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRyZXR1cm4gdGV4dHVyZTJETG9kRVhUKCB0cmFuc21pc3Npb25TYW1wbGVyTWFwLCBmcmFnQ29vcmQueHksIGZyYW1lYnVmZmVyTG9kICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QgKTtcblx0XHQjZW5kaWZcblx0fVxuXHR2ZWMzIGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24oIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIGZsb2F0IHRyYW5zbWlzc2lvbkRpc3RhbmNlLCBjb25zdCBpbiB2ZWMzIGF0dGVudWF0aW9uQ29sb3IsIGNvbnN0IGluIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2UgKSB7XG5cdFx0aWYgKCBhdHRlbnVhdGlvbkRpc3RhbmNlID09IDAuMCApIHtcblx0XHRcdHJldHVybiByYWRpYW5jZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmVjMyBhdHRlbnVhdGlvbkNvZWZmaWNpZW50ID0gLWxvZyggYXR0ZW51YXRpb25Db2xvciApIC8gYXR0ZW51YXRpb25EaXN0YW5jZTtcblx0XHRcdHZlYzMgdHJhbnNtaXR0YW5jZSA9IGV4cCggLSBhdHRlbnVhdGlvbkNvZWZmaWNpZW50ICogdHJhbnNtaXNzaW9uRGlzdGFuY2UgKTtcdFx0XHRyZXR1cm4gdHJhbnNtaXR0YW5jZSAqIHJhZGlhbmNlO1xuXHRcdH1cblx0fVxuXHR2ZWM0IGdldElCTFZvbHVtZVJlZnJhY3Rpb24oIGNvbnN0IGluIHZlYzMgbiwgY29uc3QgaW4gdmVjMyB2LCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yLFxuXHRcdGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc3BlY3VsYXJGOTAsIGNvbnN0IGluIHZlYzMgcG9zaXRpb24sIGNvbnN0IGluIG1hdDQgbW9kZWxNYXRyaXgsXG5cdFx0Y29uc3QgaW4gbWF0NCB2aWV3TWF0cml4LCBjb25zdCBpbiBtYXQ0IHByb2pNYXRyaXgsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gZmxvYXQgdGhpY2tuZXNzLFxuXHRcdGNvbnN0IGluIHZlYzMgYXR0ZW51YXRpb25Db2xvciwgY29uc3QgaW4gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSApIHtcblx0XHR2ZWMzIHRyYW5zbWlzc2lvblJheSA9IGdldFZvbHVtZVRyYW5zbWlzc2lvblJheSggbiwgdiwgdGhpY2tuZXNzLCBpb3IsIG1vZGVsTWF0cml4ICk7XG5cdFx0dmVjMyByZWZyYWN0ZWRSYXlFeGl0ID0gcG9zaXRpb24gKyB0cmFuc21pc3Npb25SYXk7XG5cdFx0dmVjNCBuZGNQb3MgPSBwcm9qTWF0cml4ICogdmlld01hdHJpeCAqIHZlYzQoIHJlZnJhY3RlZFJheUV4aXQsIDEuMCApO1xuXHRcdHZlYzIgcmVmcmFjdGlvbkNvb3JkcyA9IG5kY1Bvcy54eSAvIG5kY1Bvcy53O1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgKz0gMS4wO1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgLz0gMi4wO1xuXHRcdHZlYzQgdHJhbnNtaXR0ZWRMaWdodCA9IGdldFRyYW5zbWlzc2lvblNhbXBsZSggcmVmcmFjdGlvbkNvb3Jkcywgcm91Z2huZXNzLCBpb3IgKTtcblx0XHR2ZWMzIGF0dGVudWF0ZWRDb2xvciA9IGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24oIHRyYW5zbWl0dGVkTGlnaHQucmdiLCBsZW5ndGgoIHRyYW5zbWlzc2lvblJheSApLCBhdHRlbnVhdGlvbkNvbG9yLCBhdHRlbnVhdGlvbkRpc3RhbmNlICk7XG5cdFx0dmVjMyBGID0gRW52aXJvbm1lbnRCUkRGKCBuLCB2LCBzcGVjdWxhckNvbG9yLCBzcGVjdWxhckY5MCwgcm91Z2huZXNzICk7XG5cdFx0cmV0dXJuIHZlYzQoICggMS4wIC0gRiApICogYXR0ZW51YXRlZENvbG9yICogZGlmZnVzZUNvbG9yLCB0cmFuc21pdHRlZExpZ2h0LmEgKTtcblx0fVxuI2VuZGlmIix1dl9wYXJzX2ZyYWdtZW50OiIjaWYgKCBkZWZpbmVkKCBVU0VfVVYgKSAmJiAhIGRlZmluZWQoIFVWU19WRVJURVhfT05MWSApIClcblx0dmFyeWluZyB2ZWMyIHZVdjtcbiNlbmRpZiIsdXZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0I2lmZGVmIFVWU19WRVJURVhfT05MWVxuXHRcdHZlYzIgdlV2O1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMiB2VXY7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWYiLHV2X3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuI2VuZGlmIix1djJfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuI2VuZGlmIix1djJfcGFyc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHRhdHRyaWJ1dGUgdmVjMiB1djI7XG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuXHR1bmlmb3JtIG1hdDMgdXYyVHJhbnNmb3JtO1xuI2VuZGlmIix1djJfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dlV2MiA9ICggdXYyVHJhbnNmb3JtICogdmVjMyggdXYyLCAxICkgKS54eTtcbiNlbmRpZiIsd29ybGRwb3NfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQoIERJU1RBTkNFICkgfHwgZGVmaW5lZCAoIFVTRV9TSEFET1dNQVAgKSB8fCBkZWZpbmVkICggVVNFX1RSQU5TTUlTU0lPTiApXG5cdHZlYzQgd29ybGRQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0I2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdFx0d29ybGRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogd29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHdvcmxkUG9zaXRpb247XG4jZW5kaWYiLGJhY2tncm91bmRfdmVydDoidmFyeWluZyB2ZWMyIHZVdjtcbnVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbnZvaWQgbWFpbigpIHtcblx0dlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcblx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbi54eSwgMS4wLCAxLjAgKTtcbn0iLGJhY2tncm91bmRfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdDJEO1xudmFyeWluZyB2ZWMyIHZVdjtcbnZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCB0MkQsIHZVdiApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixjdWJlX3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53O1xufSIsY3ViZV9mcmFnOiIjaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgdlJlZmxlY3QgPSB2V29ybGREaXJlY3Rpb247XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IGVudkNvbG9yO1xuXHRnbF9GcmFnQ29sb3IuYSAqPSBvcGFjaXR5O1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixkZXB0aF92ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZIaWdoUHJlY2lzaW9uWlcgPSBnbF9Qb3NpdGlvbi56dztcbn0iLGRlcHRoX2ZyYWc6IiNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0dW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGRpZmZ1c2VDb2xvci5hID0gb3BhY2l0eTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHRmbG9hdCBmcmFnQ29vcmRaID0gMC41ICogdkhpZ2hQcmVjaXNpb25aV1swXSAvIHZIaWdoUHJlY2lzaW9uWldbMV0gKyAwLjU7XG5cdCNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTtcblx0I2VsaWYgREVQVEhfUEFDS0lORyA9PSAzMjAxXG5cdFx0Z2xfRnJhZ0NvbG9yID0gcGFja0RlcHRoVG9SR0JBKCBmcmFnQ29vcmRaICk7XG5cdCNlbmRpZlxufSIsZGlzdGFuY2VSR0JBX3ZlcnQ6IiNkZWZpbmUgRElTVEFOQ0VcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG59IixkaXN0YW5jZVJHQkFfZnJhZzoiI2RlZmluZSBESVNUQU5DRVxudW5pZm9ybSB2ZWMzIHJlZmVyZW5jZVBvc2l0aW9uO1xudW5pZm9ybSBmbG9hdCBuZWFyRGlzdGFuY2U7XG51bmlmb3JtIGZsb2F0IGZhckRpc3RhbmNlO1xudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbiAoKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0ZmxvYXQgZGlzdCA9IGxlbmd0aCggdldvcmxkUG9zaXRpb24gLSByZWZlcmVuY2VQb3NpdGlvbiApO1xuXHRkaXN0ID0gKCBkaXN0IC0gbmVhckRpc3RhbmNlICkgLyAoIGZhckRpc3RhbmNlIC0gbmVhckRpc3RhbmNlICk7XG5cdGRpc3QgPSBzYXR1cmF0ZSggZGlzdCApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGRpc3QgKTtcbn0iLGVxdWlyZWN0X3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG59IixlcXVpcmVjdF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cdGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixsaW5lZGFzaGVkX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2NhbGU7XG5hdHRyaWJ1dGUgZmxvYXQgbGluZURpc3RhbmNlO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHR2TGluZURpc3RhbmNlID0gc2NhbGUgKiBsaW5lRGlzdGFuY2U7XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbGluZWRhc2hlZF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gZmxvYXQgZGFzaFNpemU7XG51bmlmb3JtIGZsb2F0IHRvdGFsU2l6ZTtcbnZhcnlpbmcgZmxvYXQgdkxpbmVEaXN0YW5jZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHRpZiAoIG1vZCggdkxpbmVEaXN0YW5jZSwgdG90YWxTaXplICkgPiBkYXNoU2l6ZSApIHtcblx0XHRkaXNjYXJkO1xuXHR9XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHQjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxufSIsbWVzaGJhc2ljX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2lmIGRlZmluZWQgKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9TS0lOTklORyApXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hiYXNpY19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHQjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdFx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGxpZ2h0TWFwVGV4ZWwucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gZGlmZnVzZUNvbG9yLnJnYjtcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGxhbWJlcnRfdmVydDoiI2RlZmluZSBMQU1CRVJUXG52YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7XG52YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrO1xuXHR2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjaztcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2xhbWJlcnRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNobGFtYmVydF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gKCBnbF9Gcm9udEZhY2luZyApID8gdkluZGlyZWN0RnJvbnQgOiB2SW5kaXJlY3RCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2SW5kaXJlY3RGcm9udDtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsaWdodG1hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IEJSREZfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApO1xuXHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9ICggZ2xfRnJvbnRGYWNpbmcgKSA/IHZMaWdodEZyb250IDogdkxpZ2h0QmFjaztcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gdkxpZ2h0RnJvbnQ7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICo9IEJSREZfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpO1xuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNobWF0Y2FwX3ZlcnQ6IiNkZWZpbmUgTUFUQ0FQXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG59IixtZXNobWF0Y2FwX2ZyYWc6IiNkZWZpbmUgTUFUQ0FQXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gc2FtcGxlcjJEIG1hdGNhcDtcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0dmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG5cdHZlYzMgeCA9IG5vcm1hbGl6ZSggdmVjMyggdmlld0Rpci56LCAwLjAsIC0gdmlld0Rpci54ICkgKTtcblx0dmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTtcblx0dmVjMiB1diA9IHZlYzIoIGRvdCggeCwgbm9ybWFsICksIGRvdCggeSwgbm9ybWFsICkgKSAqIDAuNDk1ICsgMC41O1xuXHQjaWZkZWYgVVNFX01BVENBUFxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgPSB0ZXh0dXJlMkQoIG1hdGNhcCwgdXYgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IG1hdGNhcENvbG9yID0gdmVjNCggdmVjMyggbWl4KCAwLjIsIDAuOCwgdXYueSApICksIDEuMCApO1xuXHQjZW5kaWZcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYiAqIG1hdGNhcENvbG9yLnJnYjtcblx0I2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hub3JtYWxfdmVydDoiI2RlZmluZSBOT1JNQUxcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWZcbn0iLG1lc2hub3JtYWxfZnJhZzoiI2RlZmluZSBOT1JNQUxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApO1xufSIsbWVzaHBob25nX3ZlcnQ6IiNkZWZpbmUgUEhPTkdcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bm9ybWFsX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hwaG9uZ19mcmFnOiIjZGVmaW5lIFBIT05HXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gdmVjMyBzcGVjdWxhcjtcbnVuaWZvcm0gZmxvYXQgc2hpbmluZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfcGhvbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hwaHlzaWNhbF92ZXJ0OiIjZGVmaW5lIFNUQU5EQVJEXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG4jaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xuI2VuZGlmXG59IixtZXNocGh5c2ljYWxfZnJhZzoiI2RlZmluZSBTVEFOREFSRFxuI2lmZGVmIFBIWVNJQ0FMXG5cdCNkZWZpbmUgSU9SXG5cdCNkZWZpbmUgU1BFQ1VMQVJcbiNlbmRpZlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcztcbnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmZGVmIElPUlxuXHR1bmlmb3JtIGZsb2F0IGlvcjtcbiNlbmRpZlxuI2lmZGVmIFNQRUNVTEFSXG5cdHVuaWZvcm0gZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHk7XG5cdHVuaWZvcm0gdmVjMyBzcGVjdWxhckNvbG9yO1xuXHQjaWZkZWYgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJJbnRlbnNpdHlNYXA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NQRUNVTEFSQ09MT1JNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhckNvbG9yTWFwO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXQ7XG5cdHVuaWZvcm0gZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHVuaWZvcm0gdmVjMyBzaGVlbkNvbG9yO1xuXHR1bmlmb3JtIGZsb2F0IHNoZWVuUm91Z2huZXNzO1xuXHQjaWZkZWYgVVNFX1NIRUVOQ09MT1JNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzaGVlbkNvbG9yTWFwO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9TSEVFTlJPVUdITkVTU01BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNoZWVuUm91Z2huZXNzTWFwO1xuXHQjZW5kaWZcbiNlbmRpZlxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8cm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIHRvdGFsRGlmZnVzZSA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgdG90YWxTcGVjdWxhciA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhcjtcblx0I2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdG90YWxEaWZmdXNlICsgdG90YWxTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2lmZGVmIFVTRV9TSEVFTlxuXHRcdGZsb2F0IHNoZWVuRW5lcmd5Q29tcCA9IDEuMCAtIDAuMTU3ICogbWF4MyggbWF0ZXJpYWwuc2hlZW5Db2xvciApO1xuXHRcdG91dGdvaW5nTGlnaHQgPSBvdXRnb2luZ0xpZ2h0ICogc2hlZW5FbmVyZ3lDb21wICsgc2hlZW5TcGVjdWxhcjtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgZG90TlZjYyA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0dmVjMyBGY2MgPSBGX1NjaGxpY2soIG1hdGVyaWFsLmNsZWFyY29hdEYwLCBtYXRlcmlhbC5jbGVhcmNvYXRGOTAsIGRvdE5WY2MgKTtcblx0XHRvdXRnb2luZ0xpZ2h0ID0gb3V0Z29pbmdMaWdodCAqICggMS4wIC0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogRmNjICkgKyBjbGVhcmNvYXRTcGVjdWxhciAqIG1hdGVyaWFsLmNsZWFyY29hdDtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNodG9vbl92ZXJ0OiIjZGVmaW5lIFRPT05cbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNodG9vbl9mcmFnOiIjZGVmaW5lIFRPT05cbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRzX3Rvb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3Rvb25fZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLHBvaW50c192ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNpemU7XG51bmlmb3JtIGZsb2F0IHNjYWxlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1BvaW50U2l6ZSA9IHNpemU7XG5cdCNpZmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIGdsX1BvaW50U2l6ZSAqPSAoIHNjYWxlIC8gLSBtdlBvc2l0aW9uLnogKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHBvaW50c19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0I2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLHNoYWRvd192ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNoYWRvd19mcmFnOiJ1bmlmb3JtIHZlYzMgY29sb3I7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBjb2xvciwgb3BhY2l0eSAqICggMS4wIC0gZ2V0U2hhZG93TWFzaygpICkgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSIsc3ByaXRlX3ZlcnQ6InVuaWZvcm0gZmxvYXQgcm90YXRpb247XG51bmlmb3JtIHZlYzIgY2VudGVyO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHR2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0dmVjMiBzY2FsZTtcblx0c2NhbGUueCA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDAgXS54LCBtb2RlbE1hdHJpeFsgMCBdLnksIG1vZGVsTWF0cml4WyAwIF0ueiApICk7XG5cdHNjYWxlLnkgPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAxIF0ueCwgbW9kZWxNYXRyaXhbIDEgXS55LCBtb2RlbE1hdHJpeFsgMSBdLnogKSApO1xuXHQjaWZuZGVmIFVTRV9TSVpFQVRURU5VQVRJT05cblx0XHRib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7XG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlICkgc2NhbGUgKj0gLSBtdlBvc2l0aW9uLno7XG5cdCNlbmRpZlxuXHR2ZWMyIGFsaWduZWRQb3NpdGlvbiA9ICggcG9zaXRpb24ueHkgLSAoIGNlbnRlciAtIHZlYzIoIDAuNSApICkgKSAqIHNjYWxlO1xuXHR2ZWMyIHJvdGF0ZWRQb3NpdGlvbjtcblx0cm90YXRlZFBvc2l0aW9uLnggPSBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCAtIHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRyb3RhdGVkUG9zaXRpb24ueSA9IHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi54ICsgY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnk7XG5cdG12UG9zaXRpb24ueHkgKz0gcm90YXRlZFBvc2l0aW9uO1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixzcHJpdGVfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0I2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSJ9LHZkdD17Y29tbW9uOntkaWZmdXNlOnt2YWx1ZTpuZXcgWnN0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IExzdH0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgTHN0fSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sYWxwaGFUZXN0Ont2YWx1ZTowfX0sc3BlY3VsYXJtYXA6e3NwZWN1bGFyTWFwOnt2YWx1ZTpudWxsfX0sZW52bWFwOntlbnZNYXA6e3ZhbHVlOm51bGx9LGZsaXBFbnZNYXA6e3ZhbHVlOi0xfSxyZWZsZWN0aXZpdHk6e3ZhbHVlOjF9LGlvcjp7dmFsdWU6MS41fSxyZWZyYWN0aW9uUmF0aW86e3ZhbHVlOi45OH19LGFvbWFwOnthb01hcDp7dmFsdWU6bnVsbH0sYW9NYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxsaWdodG1hcDp7bGlnaHRNYXA6e3ZhbHVlOm51bGx9LGxpZ2h0TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sZW1pc3NpdmVtYXA6e2VtaXNzaXZlTWFwOnt2YWx1ZTpudWxsfX0sYnVtcG1hcDp7YnVtcE1hcDp7dmFsdWU6bnVsbH0sYnVtcFNjYWxlOnt2YWx1ZToxfX0sbm9ybWFsbWFwOntub3JtYWxNYXA6e3ZhbHVlOm51bGx9LG5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgRnN0KDEsMSl9fSxkaXNwbGFjZW1lbnRtYXA6e2Rpc3BsYWNlbWVudE1hcDp7dmFsdWU6bnVsbH0sZGlzcGxhY2VtZW50U2NhbGU6e3ZhbHVlOjF9LGRpc3BsYWNlbWVudEJpYXM6e3ZhbHVlOjB9fSxyb3VnaG5lc3NtYXA6e3JvdWdobmVzc01hcDp7dmFsdWU6bnVsbH19LG1ldGFsbmVzc21hcDp7bWV0YWxuZXNzTWFwOnt2YWx1ZTpudWxsfX0sZ3JhZGllbnRtYXA6e2dyYWRpZW50TWFwOnt2YWx1ZTpudWxsfX0sZm9nOntmb2dEZW5zaXR5Ont2YWx1ZToyNWUtNX0sZm9nTmVhcjp7dmFsdWU6MX0sZm9nRmFyOnt2YWx1ZToyZTN9LGZvZ0NvbG9yOnt2YWx1ZTpuZXcgWnN0KDE2Nzc3MjE1KX19LGxpZ2h0czp7YW1iaWVudExpZ2h0Q29sb3I6e3ZhbHVlOltdfSxsaWdodFByb2JlOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxjb2xvcjp7fX19LGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxkaXJlY3Rpb25hbFNoYWRvd01hcDp7dmFsdWU6W119LGRpcmVjdGlvbmFsU2hhZG93TWF0cml4Ont2YWx1ZTpbXX0sc3BvdExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGlyZWN0aW9uOnt9LGRpc3RhbmNlOnt9LGNvbmVDb3M6e30scGVudW1icmFDb3M6e30sZGVjYXk6e319fSxzcG90TGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxzcG90U2hhZG93TWFwOnt2YWx1ZTpbXX0sc3BvdFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHBvaW50TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkZWNheTp7fSxkaXN0YW5jZTp7fX19LHBvaW50TGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e30sc2hhZG93Q2FtZXJhTmVhcjp7fSxzaGFkb3dDYW1lcmFGYXI6e319fSxwb2ludFNoYWRvd01hcDp7dmFsdWU6W119LHBvaW50U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0saGVtaXNwaGVyZUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LHNreUNvbG9yOnt9LGdyb3VuZENvbG9yOnt9fX0scmVjdEFyZWFMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LHdpZHRoOnt9LGhlaWdodDp7fX19LGx0Y18xOnt2YWx1ZTpudWxsfSxsdGNfMjp7dmFsdWU6bnVsbH19LHBvaW50czp7ZGlmZnVzZTp7dmFsdWU6bmV3IFpzdCgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LHNpemU6e3ZhbHVlOjF9LHNjYWxlOnt2YWx1ZToxfSxtYXA6e3ZhbHVlOm51bGx9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSxhbHBoYVRlc3Q6e3ZhbHVlOjB9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgTHN0fX0sc3ByaXRlOntkaWZmdXNlOnt2YWx1ZTpuZXcgWnN0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sY2VudGVyOnt2YWx1ZTpuZXcgRnN0KC41LC41KX0scm90YXRpb246e3ZhbHVlOjB9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LGFscGhhVGVzdDp7dmFsdWU6MH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBMc3R9fX0seGR0PXtiYXNpYzp7dW5pZm9ybXM6bmR0KFt2ZHQuY29tbW9uLHZkdC5zcGVjdWxhcm1hcCx2ZHQuZW52bWFwLHZkdC5hb21hcCx2ZHQubGlnaHRtYXAsdmR0LmZvZ10pLHZlcnRleFNoYWRlcjpNZHQubWVzaGJhc2ljX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TWR0Lm1lc2hiYXNpY19mcmFnfSxsYW1iZXJ0Ont1bmlmb3JtczpuZHQoW3ZkdC5jb21tb24sdmR0LnNwZWN1bGFybWFwLHZkdC5lbnZtYXAsdmR0LmFvbWFwLHZkdC5saWdodG1hcCx2ZHQuZW1pc3NpdmVtYXAsdmR0LmZvZyx2ZHQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IFpzdCgwKX19XSksdmVydGV4U2hhZGVyOk1kdC5tZXNobGFtYmVydF92ZXJ0LGZyYWdtZW50U2hhZGVyOk1kdC5tZXNobGFtYmVydF9mcmFnfSxwaG9uZzp7dW5pZm9ybXM6bmR0KFt2ZHQuY29tbW9uLHZkdC5zcGVjdWxhcm1hcCx2ZHQuZW52bWFwLHZkdC5hb21hcCx2ZHQubGlnaHRtYXAsdmR0LmVtaXNzaXZlbWFwLHZkdC5idW1wbWFwLHZkdC5ub3JtYWxtYXAsdmR0LmRpc3BsYWNlbWVudG1hcCx2ZHQuZm9nLHZkdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgWnN0KDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IFpzdCgxMTE4NDgxKX0sc2hpbmluZXNzOnt2YWx1ZTozMH19XSksdmVydGV4U2hhZGVyOk1kdC5tZXNocGhvbmdfdmVydCxmcmFnbWVudFNoYWRlcjpNZHQubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3JtczpuZHQoW3ZkdC5jb21tb24sdmR0LmVudm1hcCx2ZHQuYW9tYXAsdmR0LmxpZ2h0bWFwLHZkdC5lbWlzc2l2ZW1hcCx2ZHQuYnVtcG1hcCx2ZHQubm9ybWFsbWFwLHZkdC5kaXNwbGFjZW1lbnRtYXAsdmR0LnJvdWdobmVzc21hcCx2ZHQubWV0YWxuZXNzbWFwLHZkdC5mb2csdmR0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBac3QoMCl9LHJvdWdobmVzczp7dmFsdWU6MX0sbWV0YWxuZXNzOnt2YWx1ZTowfSxlbnZNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpNZHQubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TWR0Lm1lc2hwaHlzaWNhbF9mcmFnfSx0b29uOnt1bmlmb3JtczpuZHQoW3ZkdC5jb21tb24sdmR0LmFvbWFwLHZkdC5saWdodG1hcCx2ZHQuZW1pc3NpdmVtYXAsdmR0LmJ1bXBtYXAsdmR0Lm5vcm1hbG1hcCx2ZHQuZGlzcGxhY2VtZW50bWFwLHZkdC5ncmFkaWVudG1hcCx2ZHQuZm9nLHZkdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgWnN0KDApfX1dKSx2ZXJ0ZXhTaGFkZXI6TWR0Lm1lc2h0b29uX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TWR0Lm1lc2h0b29uX2ZyYWd9LG1hdGNhcDp7dW5pZm9ybXM6bmR0KFt2ZHQuY29tbW9uLHZkdC5idW1wbWFwLHZkdC5ub3JtYWxtYXAsdmR0LmRpc3BsYWNlbWVudG1hcCx2ZHQuZm9nLHttYXRjYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpNZHQubWVzaG1hdGNhcF92ZXJ0LGZyYWdtZW50U2hhZGVyOk1kdC5tZXNobWF0Y2FwX2ZyYWd9LHBvaW50czp7dW5pZm9ybXM6bmR0KFt2ZHQucG9pbnRzLHZkdC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6TWR0LnBvaW50c192ZXJ0LGZyYWdtZW50U2hhZGVyOk1kdC5wb2ludHNfZnJhZ30sZGFzaGVkOnt1bmlmb3JtczpuZHQoW3ZkdC5jb21tb24sdmR0LmZvZyx7c2NhbGU6e3ZhbHVlOjF9LGRhc2hTaXplOnt2YWx1ZToxfSx0b3RhbFNpemU6e3ZhbHVlOjJ9fV0pLHZlcnRleFNoYWRlcjpNZHQubGluZWRhc2hlZF92ZXJ0LGZyYWdtZW50U2hhZGVyOk1kdC5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3JtczpuZHQoW3ZkdC5jb21tb24sdmR0LmRpc3BsYWNlbWVudG1hcF0pLHZlcnRleFNoYWRlcjpNZHQuZGVwdGhfdmVydCxmcmFnbWVudFNoYWRlcjpNZHQuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3JtczpuZHQoW3ZkdC5jb21tb24sdmR0LmJ1bXBtYXAsdmR0Lm5vcm1hbG1hcCx2ZHQuZGlzcGxhY2VtZW50bWFwLHtvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6TWR0Lm1lc2hub3JtYWxfdmVydCxmcmFnbWVudFNoYWRlcjpNZHQubWVzaG5vcm1hbF9mcmFnfSxzcHJpdGU6e3VuaWZvcm1zOm5kdChbdmR0LnNwcml0ZSx2ZHQuZm9nXSksdmVydGV4U2hhZGVyOk1kdC5zcHJpdGVfdmVydCxmcmFnbWVudFNoYWRlcjpNZHQuc3ByaXRlX2ZyYWd9LGJhY2tncm91bmQ6e3VuaWZvcm1zOnt1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IExzdH0sdDJEOnt2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOk1kdC5iYWNrZ3JvdW5kX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TWR0LmJhY2tncm91bmRfZnJhZ30sY3ViZTp7dW5pZm9ybXM6bmR0KFt2ZHQuZW52bWFwLHtvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6TWR0LmN1YmVfdmVydCxmcmFnbWVudFNoYWRlcjpNZHQuY3ViZV9mcmFnfSxlcXVpcmVjdDp7dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpNZHQuZXF1aXJlY3RfdmVydCxmcmFnbWVudFNoYWRlcjpNZHQuZXF1aXJlY3RfZnJhZ30sZGlzdGFuY2VSR0JBOnt1bmlmb3JtczpuZHQoW3ZkdC5jb21tb24sdmR0LmRpc3BsYWNlbWVudG1hcCx7cmVmZXJlbmNlUG9zaXRpb246e3ZhbHVlOm5ldyBpbHR9LG5lYXJEaXN0YW5jZTp7dmFsdWU6MX0sZmFyRGlzdGFuY2U6e3ZhbHVlOjFlM319XSksdmVydGV4U2hhZGVyOk1kdC5kaXN0YW5jZVJHQkFfdmVydCxmcmFnbWVudFNoYWRlcjpNZHQuZGlzdGFuY2VSR0JBX2ZyYWd9LHNoYWRvdzp7dW5pZm9ybXM6bmR0KFt2ZHQubGlnaHRzLHZkdC5mb2cse2NvbG9yOnt2YWx1ZTpuZXcgWnN0KDApfSxvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6TWR0LnNoYWRvd192ZXJ0LGZyYWdtZW50U2hhZGVyOk1kdC5zaGFkb3dfZnJhZ319O2Z1bmN0aW9uIE9kdCh0LGUsbixvLGksYSl7Y29uc3Qgcj1uZXcgWnN0KDApO2xldCBzLGwsYz0hMD09PWk/MDoxLGQ9bnVsbCxwPTAsbT1udWxsO2Z1bmN0aW9uIHUodCxlKXtuLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIodC5yLHQuZyx0LmIsZSxhKX1yZXR1cm57Z2V0Q2xlYXJDb2xvcjpmdW5jdGlvbigpe3JldHVybiByfSxzZXRDbGVhckNvbG9yOmZ1bmN0aW9uKHQsZT0xKXtyLnNldCh0KSxjPWUsdShyLGMpfSxnZXRDbGVhckFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHNldENsZWFyQWxwaGE6ZnVuY3Rpb24odCl7Yz10LHUocixjKX0scmVuZGVyOmZ1bmN0aW9uIGYobixpKXtsZXQgYT0hMSxmPSEwPT09aS5pc1NjZW5lP2kuYmFja2dyb3VuZDpudWxsO2YmJmYuaXNUZXh0dXJlJiYoZj1lLmdldChmKSk7Y29uc3QgZz10LnhyLGg9Zy5nZXRTZXNzaW9uJiZnLmdldFNlc3Npb24oKTtoJiYiYWRkaXRpdmUiPT09aC5lbnZpcm9ubWVudEJsZW5kTW9kZSYmKGY9bnVsbCksbnVsbD09PWY/dShyLGMpOmYmJmYuaXNDb2xvciYmKHUoZiwxKSxhPSEwKSwodC5hdXRvQ2xlYXJ8fGEpJiZ0LmNsZWFyKHQuYXV0b0NsZWFyQ29sb3IsdC5hdXRvQ2xlYXJEZXB0aCx0LmF1dG9DbGVhclN0ZW5jaWwpLGYmJihmLmlzQ3ViZVRleHR1cmV8fGYubWFwcGluZz09PVhydCk/KHZvaWQgMD09PWwmJihsPW5ldyBRY3QobmV3IHRkdCgxLDEsMSksbmV3IGlkdCh7bmFtZToiQmFja2dyb3VuZEN1YmVNYXRlcmlhbCIsdW5pZm9ybXM6ZWR0KHhkdC5jdWJlLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6eGR0LmN1YmUudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOnhkdC5jdWJlLmZyYWdtZW50U2hhZGVyLHNpZGU6MSxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSksbC5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLGwuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJ1diIpLGwub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24odCxlLG4pe3RoaXMubWF0cml4V29ybGQuY29weVBvc2l0aW9uKG4ubWF0cml4V29ybGQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5tYXRlcmlhbCwiZW52TWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMuZW52TWFwLnZhbHVlfX0pLG8udXBkYXRlKGwpKSxsLm1hdGVyaWFsLnVuaWZvcm1zLmVudk1hcC52YWx1ZT1mLGwubWF0ZXJpYWwudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT1mLmlzQ3ViZVRleHR1cmUmJiExPT09Zi5pc1JlbmRlclRhcmdldFRleHR1cmU/LTE6MSxkPT09ZiYmcD09PWYudmVyc2lvbiYmbT09PXQudG9uZU1hcHBpbmd8fChsLm1hdGVyaWFsLm5lZWRzVXBkYXRlPSEwLGQ9ZixwPWYudmVyc2lvbixtPXQudG9uZU1hcHBpbmcpLG4udW5zaGlmdChsLGwuZ2VvbWV0cnksbC5tYXRlcmlhbCwwLDAsbnVsbCkpOmYmJmYuaXNUZXh0dXJlJiYodm9pZCAwPT09cyYmKHM9bmV3IFFjdChuZXcgQ2R0KDIsMiksbmV3IGlkdCh7bmFtZToiQmFja2dyb3VuZE1hdGVyaWFsIix1bmlmb3JtczplZHQoeGR0LmJhY2tncm91bmQudW5pZm9ybXMpLHZlcnRleFNoYWRlcjp4ZHQuYmFja2dyb3VuZC52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6eGR0LmJhY2tncm91bmQuZnJhZ21lbnRTaGFkZXIsc2lkZTowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxzLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMubWF0ZXJpYWwsIm1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLnQyRC52YWx1ZX19KSxvLnVwZGF0ZShzKSkscy5tYXRlcmlhbC51bmlmb3Jtcy50MkQudmFsdWU9ZiwhMD09PWYubWF0cml4QXV0b1VwZGF0ZSYmZi51cGRhdGVNYXRyaXgoKSxzLm1hdGVyaWFsLnVuaWZvcm1zLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoZi5tYXRyaXgpLGQ9PT1mJiZwPT09Zi52ZXJzaW9uJiZtPT09dC50b25lTWFwcGluZ3x8KHMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsZD1mLHA9Zi52ZXJzaW9uLG09dC50b25lTWFwcGluZyksbi51bnNoaWZ0KHMscy5nZW9tZXRyeSxzLm1hdGVyaWFsLDAsMCxudWxsKSl9fX1mdW5jdGlvbiBQZHQodCxlLG4sbyl7Y29uc3QgaT10LmdldFBhcmFtZXRlcigzNDkyMSksYT1vLmlzV2ViR0wyP251bGw6ZS5nZXQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iikscj1vLmlzV2ViR0wyfHxudWxsIT09YSxzPXt9LGw9bShudWxsKTtsZXQgYz1sO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIG8uaXNXZWJHTDI/dC5iaW5kVmVydGV4QXJyYXkoZSk6YS5iaW5kVmVydGV4QXJyYXlPRVMoZSl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gby5pc1dlYkdMMj90LmRlbGV0ZVZlcnRleEFycmF5KGUpOmEuZGVsZXRlVmVydGV4QXJyYXlPRVMoZSl9ZnVuY3Rpb24gbSh0KXtjb25zdCBlPVtdLG49W10sbz1bXTtmb3IobGV0IHQ9MDt0PGk7dCsrKWVbdF09MCxuW3RdPTAsb1t0XT0wO3JldHVybntnZW9tZXRyeTpudWxsLHByb2dyYW06bnVsbCx3aXJlZnJhbWU6ITEsbmV3QXR0cmlidXRlczplLGVuYWJsZWRBdHRyaWJ1dGVzOm4sYXR0cmlidXRlRGl2aXNvcnM6byxvYmplY3Q6dCxhdHRyaWJ1dGVzOnt9LGluZGV4Om51bGx9fWZ1bmN0aW9uIHUoKXtjb25zdCB0PWMubmV3QXR0cmlidXRlcztmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXT0wfWZ1bmN0aW9uIGYodCl7Zyh0LDApfWZ1bmN0aW9uIGcobixpKXtjb25zdCBhPWMuZW5hYmxlZEF0dHJpYnV0ZXMscj1jLmF0dHJpYnV0ZURpdmlzb3JzO2lmKGMubmV3QXR0cmlidXRlc1tuXT0xLDA9PT1hW25dJiYodC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShuKSxhW25dPTEpLHJbbl0hPT1pKXsoby5pc1dlYkdMMj90OmUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpW28uaXNXZWJHTDI/InZlcnRleEF0dHJpYkRpdmlzb3IiOiJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiXShuLGkpLHJbbl09aX19ZnVuY3Rpb24gaCgpe2NvbnN0IGU9Yy5uZXdBdHRyaWJ1dGVzLG49Yy5lbmFibGVkQXR0cmlidXRlcztmb3IobGV0IG89MCxpPW4ubGVuZ3RoO288aTtvKyspbltvXSE9PWVbb10mJih0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShvKSxuW29dPTApfWZ1bmN0aW9uIGIoZSxuLGksYSxyLHMpeyEwIT09by5pc1dlYkdMMnx8NTEyNCE9PWkmJjUxMjUhPT1pP3QudmVydGV4QXR0cmliUG9pbnRlcihlLG4saSxhLHIscyk6dC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihlLG4saSxyLHMpfWZ1bmN0aW9uIHkoKXtfKCksYyE9PWwmJihjPWwsZChjLm9iamVjdCkpfWZ1bmN0aW9uIF8oKXtsLmdlb21ldHJ5PW51bGwsbC5wcm9ncmFtPW51bGwsbC53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOmZ1bmN0aW9uIEMoaSxsLHAseSxfKXtsZXQgQz0hMTtpZihyKXtjb25zdCBlPShmdW5jdGlvbiBNKGUsbixpKXtjb25zdCByPSEwPT09aS53aXJlZnJhbWU7bGV0IGw9c1tlLmlkXTt2b2lkIDA9PT1sJiYobD17fSxzW2UuaWRdPWwpO2xldCBjPWxbbi5pZF07dm9pZCAwPT09YyYmKGM9e30sbFtuLmlkXT1jKTtsZXQgZD1jW3JdO3ZvaWQgMD09PWQmJihkPW0oKGZ1bmN0aW9uIHAoKXtyZXR1cm4gby5pc1dlYkdMMj90LmNyZWF0ZVZlcnRleEFycmF5KCk6YS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpfSkoKSksY1tyXT1kKTtyZXR1cm4gZH0pKHkscCxsKTtjIT09ZSYmKGM9ZSxkKGMub2JqZWN0KSksQz0oZnVuY3Rpb24gdih0LGUpe2NvbnN0IG49Yy5hdHRyaWJ1dGVzLG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1uW3RdLGE9b1t0XTtpZih2b2lkIDA9PT1lKXJldHVybiEwO2lmKGUuYXR0cmlidXRlIT09YSlyZXR1cm4hMDtpZihlLmRhdGEhPT1hLmRhdGEpcmV0dXJuITA7aSsrfXJldHVybiBjLmF0dHJpYnV0ZXNOdW0hPT1pfHxjLmluZGV4IT09ZX0pKHksXyksQyYmKGZ1bmN0aW9uIHgodCxlKXtjb25zdCBuPXt9LG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1vW3RdLGE9e307YS5hdHRyaWJ1dGU9ZSxlLmRhdGEmJihhLmRhdGE9ZS5kYXRhKSxuW3RdPWEsaSsrfWMuYXR0cmlidXRlcz1uLGMuYXR0cmlidXRlc051bT1pLGMuaW5kZXg9ZX0pKHksXyl9ZWxzZXtjb25zdCB0PSEwPT09bC53aXJlZnJhbWU7Yy5nZW9tZXRyeT09PXkuaWQmJmMucHJvZ3JhbT09PXAuaWQmJmMud2lyZWZyYW1lPT09dHx8KGMuZ2VvbWV0cnk9eS5pZCxjLnByb2dyYW09cC5pZCxjLndpcmVmcmFtZT10LEM9ITApfSEwPT09aS5pc0luc3RhbmNlZE1lc2gmJihDPSEwKSxudWxsIT09XyYmbi51cGRhdGUoXywzNDk2MyksQyYmKCEoZnVuY3Rpb24gTyhpLGEscixzKXtpZighMT09PW8uaXNXZWJHTDImJihpLmlzSW5zdGFuY2VkTWVzaHx8cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KSYmbnVsbD09PWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpcmV0dXJuO3UoKTtjb25zdCBsPXMuYXR0cmlidXRlcyxjPXIuZ2V0QXR0cmlidXRlcygpLGQ9YS5kZWZhdWx0QXR0cmlidXRlVmFsdWVzO2Zvcihjb25zdCBlIGluIGMpe2NvbnN0IG89Y1tlXTtpZihvLmxvY2F0aW9uPj0wKXtsZXQgYT1sW2VdO2lmKHZvaWQgMD09PWEmJigiaW5zdGFuY2VNYXRyaXgiPT09ZSYmaS5pbnN0YW5jZU1hdHJpeCYmKGE9aS5pbnN0YW5jZU1hdHJpeCksImluc3RhbmNlQ29sb3IiPT09ZSYmaS5pbnN0YW5jZUNvbG9yJiYoYT1pLmluc3RhbmNlQ29sb3IpKSx2b2lkIDAhPT1hKXtjb25zdCBlPWEubm9ybWFsaXplZCxyPWEuaXRlbVNpemUsbD1uLmdldChhKTtpZih2b2lkIDA9PT1sKWNvbnRpbnVlO2NvbnN0IGM9bC5idWZmZXIsZD1sLnR5cGUscD1sLmJ5dGVzUGVyRWxlbWVudDtpZihhLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IG49YS5kYXRhLGw9bi5zdHJpZGUsbT1hLm9mZnNldDtpZihuJiZuLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXIpe2ZvcihsZXQgdD0wO3Q8by5sb2NhdGlvblNpemU7dCsrKWcoby5sb2NhdGlvbit0LG4ubWVzaFBlckF0dHJpYnV0ZSk7ITAhPT1pLmlzSW5zdGFuY2VkTWVzaCYmdm9pZCAwPT09cy5fbWF4SW5zdGFuY2VDb3VudCYmKHMuX21heEluc3RhbmNlQ291bnQ9bi5tZXNoUGVyQXR0cmlidXRlKm4uY291bnQpfWVsc2UgZm9yKGxldCB0PTA7dDxvLmxvY2F0aW9uU2l6ZTt0KyspZihvLmxvY2F0aW9uK3QpO3QuYmluZEJ1ZmZlcigzNDk2MixjKTtmb3IobGV0IHQ9MDt0PG8ubG9jYXRpb25TaXplO3QrKyliKG8ubG9jYXRpb24rdCxyL28ubG9jYXRpb25TaXplLGQsZSxsKnAsKG0rci9vLmxvY2F0aW9uU2l6ZSp0KSpwKX1lbHNle2lmKGEuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUpe2ZvcihsZXQgdD0wO3Q8by5sb2NhdGlvblNpemU7dCsrKWcoby5sb2NhdGlvbit0LGEubWVzaFBlckF0dHJpYnV0ZSk7ITAhPT1pLmlzSW5zdGFuY2VkTWVzaCYmdm9pZCAwPT09cy5fbWF4SW5zdGFuY2VDb3VudCYmKHMuX21heEluc3RhbmNlQ291bnQ9YS5tZXNoUGVyQXR0cmlidXRlKmEuY291bnQpfWVsc2UgZm9yKGxldCB0PTA7dDxvLmxvY2F0aW9uU2l6ZTt0KyspZihvLmxvY2F0aW9uK3QpO3QuYmluZEJ1ZmZlcigzNDk2MixjKTtmb3IobGV0IHQ9MDt0PG8ubG9jYXRpb25TaXplO3QrKyliKG8ubG9jYXRpb24rdCxyL28ubG9jYXRpb25TaXplLGQsZSxyKnAsci9vLmxvY2F0aW9uU2l6ZSp0KnApfX1lbHNlIGlmKHZvaWQgMCE9PWQpe2NvbnN0IG49ZFtlXTtpZih2b2lkIDAhPT1uKXN3aXRjaChuLmxlbmd0aCl7Y2FzZSAyOnQudmVydGV4QXR0cmliMmZ2KG8ubG9jYXRpb24sbik7YnJlYWs7Y2FzZSAzOnQudmVydGV4QXR0cmliM2Z2KG8ubG9jYXRpb24sbik7YnJlYWs7Y2FzZSA0OnQudmVydGV4QXR0cmliNGZ2KG8ubG9jYXRpb24sbik7YnJlYWs7ZGVmYXVsdDp0LnZlcnRleEF0dHJpYjFmdihvLmxvY2F0aW9uLG4pfX19fWgoKX0pKGksbCxwLHkpLG51bGwhPT1fJiZ0LmJpbmRCdWZmZXIoMzQ5NjMsbi5nZXQoXykuYnVmZmVyKSl9LHJlc2V0OnkscmVzZXREZWZhdWx0U3RhdGU6XyxkaXNwb3NlOmZ1bmN0aW9uIE0oKXt5KCk7Zm9yKGNvbnN0IHQgaW4gcyl7Y29uc3QgZT1zW3RdO2Zvcihjb25zdCB0IGluIGUpe2NvbnN0IG49ZVt0XTtmb3IoY29uc3QgdCBpbiBuKXAoblt0XS5vYmplY3QpLGRlbGV0ZSBuW3RdO2RlbGV0ZSBlW3RdfWRlbGV0ZSBzW3RdfX0scmVsZWFzZVN0YXRlc09mR2VvbWV0cnk6ZnVuY3Rpb24gdih0KXtpZih2b2lkIDA9PT1zW3QuaWRdKXJldHVybjtjb25zdCBlPXNbdC5pZF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4pcChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdC5pZF19LHJlbGVhc2VTdGF0ZXNPZlByb2dyYW06ZnVuY3Rpb24geCh0KXtmb3IoY29uc3QgZSBpbiBzKXtjb25zdCBuPXNbZV07aWYodm9pZCAwPT09blt0LmlkXSljb250aW51ZTtjb25zdCBvPW5bdC5pZF07Zm9yKGNvbnN0IHQgaW4gbylwKG9bdF0ub2JqZWN0KSxkZWxldGUgb1t0XTtkZWxldGUgblt0LmlkXX19LGluaXRBdHRyaWJ1dGVzOnUsZW5hYmxlQXR0cmlidXRlOmYsZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXM6aH19ZnVuY3Rpb24gd2R0KHQsZSxuLG8pe2NvbnN0IGk9by5pc1dlYkdMMjtsZXQgYTt0aGlzLnNldE1vZGU9ZnVuY3Rpb24gcih0KXthPXR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIHMoZSxvKXt0LmRyYXdBcnJheXMoYSxlLG8pLG4udXBkYXRlKG8sYSwxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gbChvLHIscyl7aWYoMD09PXMpcmV0dXJuO2xldCBsLGM7aWYoaSlsPXQsYz0iZHJhd0FycmF5c0luc3RhbmNlZCI7ZWxzZSBpZihsPWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiksYz0iZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIixudWxsPT09bClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtsW2NdKGEsbyxyLHMpLG4udXBkYXRlKHIsYSxzKX19ZnVuY3Rpb24ga2R0KHQsZSxuKXtsZXQgbztmdW5jdGlvbiBpKGUpe2lmKCJoaWdocCI9PT1lKXtpZih0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMywzNjMzOCkucHJlY2lzaW9uPjAmJnQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMyLDM2MzM4KS5wcmVjaXNpb24+MClyZXR1cm4iaGlnaHAiO2U9Im1lZGl1bXAifXJldHVybiJtZWRpdW1wIj09PWUmJnQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM3KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzcpLnByZWNpc2lvbj4wPyJtZWRpdW1wIjoibG93cCJ9Y29uc3QgYT0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0fHwidW5kZWZpbmVkIiE9dHlwZW9mIFdlYkdMMkNvbXB1dGVSZW5kZXJpbmdDb250ZXh0JiZ0IGluc3RhbmNlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQ7bGV0IHI9dm9pZCAwIT09bi5wcmVjaXNpb24/bi5wcmVjaXNpb246ImhpZ2hwIjtjb25zdCBzPWkocik7cyE9PXImJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IixyLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIscywiaW5zdGVhZC4iKSxyPXMpO2NvbnN0IGw9YXx8ZS5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLGM9ITA9PT1uLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsZD10LmdldFBhcmFtZXRlcigzNDkzMCkscD10LmdldFBhcmFtZXRlcigzNTY2MCksbT10LmdldFBhcmFtZXRlcigzMzc5KSx1PXQuZ2V0UGFyYW1ldGVyKDM0MDc2KSxmPXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxnPXQuZ2V0UGFyYW1ldGVyKDM2MzQ3KSxoPXQuZ2V0UGFyYW1ldGVyKDM2MzQ4KSxiPXQuZ2V0UGFyYW1ldGVyKDM2MzQ5KSx5PXA+MCxfPWF8fGUuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpO3JldHVybntpc1dlYkdMMjphLGRyYXdCdWZmZXJzOmwsZ2V0TWF4QW5pc290cm9weTpmdW5jdGlvbiBDKCl7aWYodm9pZCAwIT09bylyZXR1cm4gbztpZighMD09PWUuaGFzKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSl7Y29uc3Qgbj1lLmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7bz10LmdldFBhcmFtZXRlcihuLk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCl9ZWxzZSBvPTA7cmV0dXJuIG99LGdldE1heFByZWNpc2lvbjppLHByZWNpc2lvbjpyLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6YyxtYXhUZXh0dXJlczpkLG1heFZlcnRleFRleHR1cmVzOnAsbWF4VGV4dHVyZVNpemU6bSxtYXhDdWJlbWFwU2l6ZTp1LG1heEF0dHJpYnV0ZXM6ZixtYXhWZXJ0ZXhVbmlmb3JtczpnLG1heFZhcnlpbmdzOmgsbWF4RnJhZ21lbnRVbmlmb3JtczpiLHZlcnRleFRleHR1cmVzOnksZmxvYXRGcmFnbWVudFRleHR1cmVzOl8sZmxvYXRWZXJ0ZXhUZXh0dXJlczp5JiZfLG1heFNhbXBsZXM6YT90LmdldFBhcmFtZXRlcigzNjE4Myk6MH19ZnVuY3Rpb24gU2R0KHQpe2NvbnN0IGU9dGhpcztsZXQgbj1udWxsLG89MCxpPSExLGE9ITE7Y29uc3Qgcj1uZXcgZmR0LHM9bmV3IExzdCxsPXt2YWx1ZTpudWxsLG5lZWRzVXBkYXRlOiExfTtmdW5jdGlvbiBjKCl7bC52YWx1ZSE9PW4mJihsLnZhbHVlPW4sbC5uZWVkc1VwZGF0ZT1vPjApLGUubnVtUGxhbmVzPW8sZS5udW1JbnRlcnNlY3Rpb249MH1mdW5jdGlvbiBkKHQsbixvLGkpe2NvbnN0IGE9bnVsbCE9PXQ/dC5sZW5ndGg6MDtsZXQgYz1udWxsO2lmKDAhPT1hKXtpZihjPWwudmFsdWUsITAhPT1pfHxudWxsPT09Yyl7Y29uc3QgZT1vKzQqYSxpPW4ubWF0cml4V29ybGRJbnZlcnNlO3MuZ2V0Tm9ybWFsTWF0cml4KGkpLChudWxsPT09Y3x8Yy5sZW5ndGg8ZSkmJihjPW5ldyBGbG9hdDMyQXJyYXkoZSkpO2ZvcihsZXQgZT0wLG49bztlIT09YTsrK2Usbis9NClyLmNvcHkodFtlXSkuYXBwbHlNYXRyaXg0KGkscyksci5ub3JtYWwudG9BcnJheShjLG4pLGNbbiszXT1yLmNvbnN0YW50fWwudmFsdWU9YyxsLm5lZWRzVXBkYXRlPSEwfXJldHVybiBlLm51bVBsYW5lcz1hLGUubnVtSW50ZXJzZWN0aW9uPTAsY310aGlzLnVuaWZvcm09bCx0aGlzLm51bVBsYW5lcz0wLHRoaXMubnVtSW50ZXJzZWN0aW9uPTAsdGhpcy5pbml0PWZ1bmN0aW9uKHQsZSxhKXtjb25zdCByPTAhPT10Lmxlbmd0aHx8ZXx8MCE9PW98fGk7cmV0dXJuIGk9ZSxuPWQodCxhLDApLG89dC5sZW5ndGgscn0sdGhpcy5iZWdpblNoYWRvd3M9ZnVuY3Rpb24oKXthPSEwLGQobnVsbCl9LHRoaXMuZW5kU2hhZG93cz1mdW5jdGlvbigpe2E9ITEsYygpfSx0aGlzLnNldFN0YXRlPWZ1bmN0aW9uKGUscixzKXtjb25zdCBwPWUuY2xpcHBpbmdQbGFuZXMsbT1lLmNsaXBJbnRlcnNlY3Rpb24sdT1lLmNsaXBTaGFkb3dzLGY9dC5nZXQoZSk7aWYoIWl8fG51bGw9PT1wfHwwPT09cC5sZW5ndGh8fGEmJiF1KWE/ZChudWxsKTpjKCk7ZWxzZXtjb25zdCB0PWE/MDpvLGU9NCp0O2xldCBpPWYuY2xpcHBpbmdTdGF0ZXx8bnVsbDtsLnZhbHVlPWksaT1kKHAscixlLHMpO2ZvcihsZXQgdD0wO3QhPT1lOysrdClpW3RdPW5bdF07Zi5jbGlwcGluZ1N0YXRlPWksdGhpcy5udW1JbnRlcnNlY3Rpb249bT90aGlzLm51bVBsYW5lczowLHRoaXMubnVtUGxhbmVzKz10fX19ZnVuY3Rpb24gRGR0KHQpe2xldCBlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gMzAzPT09ZT90Lm1hcHBpbmc9cXJ0OjMwND09PWUmJih0Lm1hcHBpbmc9WnJ0KSx0fWZ1bmN0aW9uIG8odCl7Y29uc3Qgbj10LnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pO2NvbnN0IGk9ZS5nZXQobik7dm9pZCAwIT09aSYmKGUuZGVsZXRlKG4pLGkuZGlzcG9zZSgpKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIGkoYSl7aWYoYSYmYS5pc1RleHR1cmUmJiExPT09YS5pc1JlbmRlclRhcmdldFRleHR1cmUpe2NvbnN0IGk9YS5tYXBwaW5nO2lmKDMwMz09PWl8fDMwND09PWkpe2lmKGUuaGFzKGEpKXtyZXR1cm4gbihlLmdldChhKS50ZXh0dXJlLGEubWFwcGluZyl9e2NvbnN0IGk9YS5pbWFnZTtpZihpJiZpLmhlaWdodD4wKXtjb25zdCByPW5ldyBkZHQoaS5oZWlnaHQvMik7cmV0dXJuIHIuZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxhKSxlLnNldChhLHIpLGEuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksbihyLnRleHR1cmUsYS5tYXBwaW5nKX1yZXR1cm4gbnVsbH19fXJldHVybiBhfSxkaXNwb3NlOmZ1bmN0aW9uIGEoKXtlPW5ldyBXZWFrTWFwfX19eGR0LnBoeXNpY2FsPXt1bmlmb3JtczpuZHQoW3hkdC5zdGFuZGFyZC51bmlmb3Jtcyx7Y2xlYXJjb2F0Ont2YWx1ZTowfSxjbGVhcmNvYXRNYXA6e3ZhbHVlOm51bGx9LGNsZWFyY29hdFJvdWdobmVzczp7dmFsdWU6MH0sY2xlYXJjb2F0Um91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXROb3JtYWxTY2FsZTp7dmFsdWU6bmV3IEZzdCgxLDEpfSxjbGVhcmNvYXROb3JtYWxNYXA6e3ZhbHVlOm51bGx9LHNoZWVuOnt2YWx1ZTowfSxzaGVlbkNvbG9yOnt2YWx1ZTpuZXcgWnN0KDApfSxzaGVlbkNvbG9yTWFwOnt2YWx1ZTpudWxsfSxzaGVlblJvdWdobmVzczp7dmFsdWU6MX0sc2hlZW5Sb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9LHRyYW5zbWlzc2lvbjp7dmFsdWU6MH0sdHJhbnNtaXNzaW9uTWFwOnt2YWx1ZTpudWxsfSx0cmFuc21pc3Npb25TYW1wbGVyU2l6ZTp7dmFsdWU6bmV3IEZzdH0sdHJhbnNtaXNzaW9uU2FtcGxlck1hcDp7dmFsdWU6bnVsbH0sdGhpY2tuZXNzOnt2YWx1ZTowfSx0aGlja25lc3NNYXA6e3ZhbHVlOm51bGx9LGF0dGVudWF0aW9uRGlzdGFuY2U6e3ZhbHVlOjB9LGF0dGVudWF0aW9uQ29sb3I6e3ZhbHVlOm5ldyBac3QoMCl9LHNwZWN1bGFySW50ZW5zaXR5Ont2YWx1ZToxfSxzcGVjdWxhckludGVuc2l0eU1hcDp7dmFsdWU6bnVsbH0sc3BlY3VsYXJDb2xvcjp7dmFsdWU6bmV3IFpzdCgxLDEsMSl9LHNwZWN1bGFyQ29sb3JNYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpNZHQubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TWR0Lm1lc2hwaHlzaWNhbF9mcmFnfTtjbGFzcyBSZHQgZXh0ZW5kcyBhZHR7Y29uc3RydWN0b3IodD0tMSxlPTEsbj0xLG89LTEsaT0uMSxhPTJlMyl7c3VwZXIoKSx0aGlzLnR5cGU9Ik9ydGhvZ3JhcGhpY0NhbWVyYSIsdGhpcy56b29tPTEsdGhpcy52aWV3PW51bGwsdGhpcy5sZWZ0PXQsdGhpcy5yaWdodD1lLHRoaXMudG9wPW4sdGhpcy5ib3R0b209byx0aGlzLm5lYXI9aSx0aGlzLmZhcj1hLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMubGVmdD10LmxlZnQsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMudG9wPXQudG9wLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy56b29tPXQuem9vbSx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzfXNldFZpZXdPZmZzZXQodCxlLG4sbyxpLGEpe251bGw9PT10aGlzLnZpZXcmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMudmlldy5lbmFibGVkPSEwLHRoaXMudmlldy5mdWxsV2lkdGg9dCx0aGlzLnZpZXcuZnVsbEhlaWdodD1lLHRoaXMudmlldy5vZmZzZXRYPW4sdGhpcy52aWV3Lm9mZnNldFk9byx0aGlzLnZpZXcud2lkdGg9aSx0aGlzLnZpZXcuaGVpZ2h0PWEsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y2xlYXJWaWV3T2Zmc2V0KCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX11cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl7Y29uc3QgdD0odGhpcy5yaWdodC10aGlzLmxlZnQpLygyKnRoaXMuem9vbSksZT0odGhpcy50b3AtdGhpcy5ib3R0b20pLygyKnRoaXMuem9vbSksbj0odGhpcy5yaWdodCt0aGlzLmxlZnQpLzIsbz0odGhpcy50b3ArdGhpcy5ib3R0b20pLzI7bGV0IGk9bi10LGE9bit0LHI9bytlLHM9by1lO2lmKG51bGwhPT10aGlzLnZpZXcmJnRoaXMudmlldy5lbmFibGVkKXtjb25zdCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvdGhpcy52aWV3LmZ1bGxXaWR0aC90aGlzLnpvb20sZT0odGhpcy50b3AtdGhpcy5ib3R0b20pL3RoaXMudmlldy5mdWxsSGVpZ2h0L3RoaXMuem9vbTtpKz10KnRoaXMudmlldy5vZmZzZXRYLGE9aSt0KnRoaXMudmlldy53aWR0aCxyLT1lKnRoaXMudmlldy5vZmZzZXRZLHM9ci1lKnRoaXMudmlldy5oZWlnaHR9dGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VPcnRob2dyYXBoaWMoaSxhLHIscyx0aGlzLm5lYXIsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Quem9vbT10aGlzLnpvb20sZS5vYmplY3QubGVmdD10aGlzLmxlZnQsZS5vYmplY3QucmlnaHQ9dGhpcy5yaWdodCxlLm9iamVjdC50b3A9dGhpcy50b3AsZS5vYmplY3QuYm90dG9tPXRoaXMuYm90dG9tLGUub2JqZWN0Lm5lYXI9dGhpcy5uZWFyLGUub2JqZWN0LmZhcj10aGlzLmZhcixudWxsIT09dGhpcy52aWV3JiYoZS5vYmplY3Qudmlldz1PYmplY3QuYXNzaWduKHt9LHRoaXMudmlldykpLGV9fVJkdC5wcm90b3R5cGUuaXNPcnRob2dyYXBoaWNDYW1lcmE9ITA7Y2xhc3MgRWR0IGV4dGVuZHMgaWR0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMudHlwZT0iUmF3U2hhZGVyTWF0ZXJpYWwifX1FZHQucHJvdG90eXBlLmlzUmF3U2hhZGVyTWF0ZXJpYWw9ITA7Y29uc3QgQWR0PU1hdGgucG93KDIsOCksVGR0PVsuMTI1LC4yMTUsLjM1LC40NDYsLjUyNiwuNTgyXSxOZHQ9NStUZHQubGVuZ3RoLHpkdD0yMCxJZHQ9bmV3IFJkdCx7X2xvZFBsYW5lczpIZHQsX3NpemVMb2RzOkZkdCxfc2lnbWFzOkxkdH09WWR0KCksQmR0PW5ldyBac3Q7bGV0IFZkdD1udWxsO2NvbnN0IFVkdD0oMStNYXRoLnNxcnQoNSkpLzIsamR0PTEvVWR0LFdkdD1bbmV3IGlsdCgxLDEsMSksbmV3IGlsdCgtMSwxLDEpLG5ldyBpbHQoMSwxLC0xKSxuZXcgaWx0KC0xLDEsLTEpLG5ldyBpbHQoMCxVZHQsamR0KSxuZXcgaWx0KDAsVWR0LC1qZHQpLG5ldyBpbHQoamR0LDAsVWR0KSxuZXcgaWx0KC1qZHQsMCxVZHQpLG5ldyBpbHQoVWR0LGpkdCwwKSxuZXcgaWx0KC1VZHQsamR0LDApXTtjbGFzcyBHZHR7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD1udWxsLHRoaXMuX2JsdXJNYXRlcmlhbD0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkodCksbj1uZXcgaWx0KDAsMSwwKTtyZXR1cm4gbmV3IEVkdCh7bmFtZToiU3BoZXJpY2FsR2F1c3NpYW5CbHVyIixkZWZpbmVzOntuOnR9LHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHNhbXBsZXM6e3ZhbHVlOjF9LHdlaWdodHM6e3ZhbHVlOmV9LGxhdGl0dWRpbmFsOnt2YWx1ZTohMX0sZFRoZXRhOnt2YWx1ZTowfSxtaXBJbnQ6e3ZhbHVlOjB9LHBvbGVBeGlzOnt2YWx1ZTpufX0sdmVydGV4U2hhZGVyOkpkdCgpLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdFx0XHR1bmlmb3JtIGludCBzYW1wbGVzO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCB3ZWlnaHRzWyBuIF07XG5cdFx0XHR1bmlmb3JtIGJvb2wgbGF0aXR1ZGluYWw7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IGRUaGV0YTtcblx0XHRcdHVuaWZvcm0gZmxvYXQgbWlwSW50O1xuXHRcdFx0dW5pZm9ybSB2ZWMzIHBvbGVBeGlzO1xuXG5cdFx0XHQjZGVmaW5lIEVOVk1BUF9UWVBFX0NVQkVfVVZcblx0XHRcdCNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG5cblx0XHRcdHZlYzMgZ2V0U2FtcGxlKCBmbG9hdCB0aGV0YSwgdmVjMyBheGlzICkge1xuXG5cdFx0XHRcdGZsb2F0IGNvc1RoZXRhID0gY29zKCB0aGV0YSApO1xuXHRcdFx0XHQvLyBSb2RyaWd1ZXMnIGF4aXMtYW5nbGUgcm90YXRpb25cblx0XHRcdFx0dmVjMyBzYW1wbGVEaXJlY3Rpb24gPSB2T3V0cHV0RGlyZWN0aW9uICogY29zVGhldGFcblx0XHRcdFx0XHQrIGNyb3NzKCBheGlzLCB2T3V0cHV0RGlyZWN0aW9uICkgKiBzaW4oIHRoZXRhIClcblx0XHRcdFx0XHQrIGF4aXMgKiBkb3QoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqICggMS4wIC0gY29zVGhldGEgKTtcblxuXHRcdFx0XHRyZXR1cm4gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyZWN0aW9uLCBtaXBJbnQgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0dmVjMyBheGlzID0gbGF0aXR1ZGluYWwgPyBwb2xlQXhpcyA6IGNyb3NzKCBwb2xlQXhpcywgdk91dHB1dERpcmVjdGlvbiApO1xuXG5cdFx0XHRcdGlmICggYWxsKCBlcXVhbCggYXhpcywgdmVjMyggMC4wICkgKSApICkge1xuXG5cdFx0XHRcdFx0YXhpcyA9IHZlYzMoIHZPdXRwdXREaXJlY3Rpb24ueiwgMC4wLCAtIHZPdXRwdXREaXJlY3Rpb24ueCApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRheGlzID0gbm9ybWFsaXplKCBheGlzICk7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgMCBdICogZ2V0U2FtcGxlKCAwLjAsIGF4aXMgKTtcblxuXHRcdFx0XHRmb3IgKCBpbnQgaSA9IDE7IGkgPCBuOyBpKysgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGkgPj0gc2FtcGxlcyApIHtcblxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRmbG9hdCB0aGV0YSA9IGRUaGV0YSAqIGZsb2F0KCBpICk7XG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIC0xLjAgKiB0aGV0YSwgYXhpcyApO1xuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgaSBdICogZ2V0U2FtcGxlKCB0aGV0YSwgYXhpcyApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXHRcdCIsYmxlbmRpbmc6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfSkoemR0KSx0aGlzLl9lcXVpcmVjdFNoYWRlcj1udWxsLHRoaXMuX2N1YmVtYXBTaGFkZXI9bnVsbCx0aGlzLl9jb21waWxlTWF0ZXJpYWwodGhpcy5fYmx1ck1hdGVyaWFsKX1mcm9tU2NlbmUodCxlPTAsbj0uMSxvPTEwMCl7VmR0PXRoaXMuX3JlbmRlcmVyLmdldFJlbmRlclRhcmdldCgpO2NvbnN0IGk9dGhpcy5fYWxsb2NhdGVUYXJnZXRzKCk7cmV0dXJuIHRoaXMuX3NjZW5lVG9DdWJlVVYodCxuLG8saSksZT4wJiZ0aGlzLl9ibHVyKGksMCwwLGUpLHRoaXMuX2FwcGx5UE1SRU0oaSksdGhpcy5fY2xlYW51cChpKSxpfWZyb21FcXVpcmVjdGFuZ3VsYXIodCxlPW51bGwpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0LGUpfWZyb21DdWJlbWFwKHQsZT1udWxsKXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCxlKX1jb21waWxlQ3ViZW1hcFNoYWRlcigpe251bGw9PT10aGlzLl9jdWJlbWFwU2hhZGVyJiYodGhpcy5fY3ViZW1hcFNoYWRlcj1LZHQoKSx0aGlzLl9jb21waWxlTWF0ZXJpYWwodGhpcy5fY3ViZW1hcFNoYWRlcikpfWNvbXBpbGVFcXVpcmVjdGFuZ3VsYXJTaGFkZXIoKXtudWxsPT09dGhpcy5fZXF1aXJlY3RTaGFkZXImJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1YZHQoKSx0aGlzLl9jb21waWxlTWF0ZXJpYWwodGhpcy5fZXF1aXJlY3RTaGFkZXIpKX1kaXNwb3NlKCl7dGhpcy5fYmx1ck1hdGVyaWFsLmRpc3Bvc2UoKSxudWxsIT09dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQmJnRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0LmRpc3Bvc2UoKSxudWxsIT09dGhpcy5fY3ViZW1hcFNoYWRlciYmdGhpcy5fY3ViZW1hcFNoYWRlci5kaXNwb3NlKCksbnVsbCE9PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiZ0aGlzLl9lcXVpcmVjdFNoYWRlci5kaXNwb3NlKCk7Zm9yKGxldCB0PTA7dDxIZHQubGVuZ3RoO3QrKylIZHRbdF0uZGlzcG9zZSgpfV9jbGVhbnVwKHQpe3RoaXMuX3JlbmRlcmVyLnNldFJlbmRlclRhcmdldChWZHQpLHQuc2Npc3NvclRlc3Q9ITEsWmR0KHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpfV9mcm9tVGV4dHVyZSh0LGUpe1ZkdD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCBuPWV8fHRoaXMuX2FsbG9jYXRlVGFyZ2V0cyh0KTtyZXR1cm4gdGhpcy5fdGV4dHVyZVRvQ3ViZVVWKHQsbiksdGhpcy5fYXBwbHlQTVJFTShuKSx0aGlzLl9jbGVhbnVwKG4pLG59X2FsbG9jYXRlVGFyZ2V0cyh0KXtjb25zdCBlPXttYWdGaWx0ZXI6dHN0LG1pbkZpbHRlcjp0c3QsZ2VuZXJhdGVNaXBtYXBzOiExLHR5cGU6cnN0LGZvcm1hdDpsc3QsZW5jb2Rpbmc6dnN0LGRlcHRoQnVmZmVyOiExfSxuPXFkdChlKTtyZXR1cm4gbi5kZXB0aEJ1ZmZlcj0hdCxudWxsPT09dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQmJih0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD1xZHQoZSkpLG59X2NvbXBpbGVNYXRlcmlhbCh0KXtjb25zdCBlPW5ldyBRY3QoSGR0WzBdLHQpO3RoaXMuX3JlbmRlcmVyLmNvbXBpbGUoZSxJZHQpfV9zY2VuZVRvQ3ViZVVWKHQsZSxuLG8pe2NvbnN0IGk9bmV3IHJkdCg5MCwxLGUsbiksYT1bMSwtMSwxLDEsMSwxXSxyPVsxLDEsMSwtMSwtMSwtMV0scz10aGlzLl9yZW5kZXJlcixsPXMuYXV0b0NsZWFyLGM9cy50b25lTWFwcGluZztzLmdldENsZWFyQ29sb3IoQmR0KSxzLnRvbmVNYXBwaW5nPTAscy5hdXRvQ2xlYXI9ITE7Y29uc3QgZD1uZXcgQ2N0KHtuYW1lOiJQTVJFTS5CYWNrZ3JvdW5kIixzaWRlOjEsZGVwdGhXcml0ZTohMSxkZXB0aFRlc3Q6ITF9KSxwPW5ldyBRY3QobmV3IHRkdCxkKTtsZXQgbT0hMTtjb25zdCB1PXQuYmFja2dyb3VuZDt1P3UuaXNDb2xvciYmKGQuY29sb3IuY29weSh1KSx0LmJhY2tncm91bmQ9bnVsbCxtPSEwKTooZC5jb2xvci5jb3B5KEJkdCksbT0hMCk7Zm9yKGxldCBlPTA7ZTw2O2UrKyl7Y29uc3Qgbj1lJTM7MD09PW4/KGkudXAuc2V0KDAsYVtlXSwwKSxpLmxvb2tBdChyW2VdLDAsMCkpOjE9PT1uPyhpLnVwLnNldCgwLDAsYVtlXSksaS5sb29rQXQoMCxyW2VdLDApKTooaS51cC5zZXQoMCxhW2VdLDApLGkubG9va0F0KDAsMCxyW2VdKSksWmR0KG8sbipBZHQsZT4yP0FkdDowLEFkdCxBZHQpLHMuc2V0UmVuZGVyVGFyZ2V0KG8pLG0mJnMucmVuZGVyKHAsaSkscy5yZW5kZXIodCxpKX1wLmdlb21ldHJ5LmRpc3Bvc2UoKSxwLm1hdGVyaWFsLmRpc3Bvc2UoKSxzLnRvbmVNYXBwaW5nPWMscy5hdXRvQ2xlYXI9bCx0LmJhY2tncm91bmQ9dX1fdGV4dHVyZVRvQ3ViZVVWKHQsZSl7Y29uc3Qgbj10aGlzLl9yZW5kZXJlcixvPXQubWFwcGluZz09PXFydHx8dC5tYXBwaW5nPT09WnJ0O28/KG51bGw9PT10aGlzLl9jdWJlbWFwU2hhZGVyJiYodGhpcy5fY3ViZW1hcFNoYWRlcj1LZHQoKSksdGhpcy5fY3ViZW1hcFNoYWRlci51bmlmb3Jtcy5mbGlwRW52TWFwLnZhbHVlPSExPT09dC5pc1JlbmRlclRhcmdldFRleHR1cmU/LTE6MSk6bnVsbD09PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9WGR0KCkpO2NvbnN0IGk9bz90aGlzLl9jdWJlbWFwU2hhZGVyOnRoaXMuX2VxdWlyZWN0U2hhZGVyLGE9bmV3IFFjdChIZHRbMF0saSkscj1pLnVuaWZvcm1zO3IuZW52TWFwLnZhbHVlPXQsb3x8ci50ZXhlbFNpemUudmFsdWUuc2V0KDEvdC5pbWFnZS53aWR0aCwxL3QuaW1hZ2UuaGVpZ2h0KSxaZHQoZSwwLDAsMypBZHQsMipBZHQpLG4uc2V0UmVuZGVyVGFyZ2V0KGUpLG4ucmVuZGVyKGEsSWR0KX1fYXBwbHlQTVJFTSh0KXtjb25zdCBlPXRoaXMuX3JlbmRlcmVyLG49ZS5hdXRvQ2xlYXI7ZS5hdXRvQ2xlYXI9ITE7Zm9yKGxldCBlPTE7ZTxOZHQ7ZSsrKXtjb25zdCBuPU1hdGguc3FydChMZHRbZV0qTGR0W2VdLUxkdFtlLTFdKkxkdFtlLTFdKTt0aGlzLl9ibHVyKHQsZS0xLGUsbixXZHRbKGUtMSklV2R0Lmxlbmd0aF0pfWUuYXV0b0NsZWFyPW59X2JsdXIodCxlLG4sbyxpKXtjb25zdCBhPXRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0O3RoaXMuX2hhbGZCbHVyKHQsYSxlLG4sbywibGF0aXR1ZGluYWwiLGkpLHRoaXMuX2hhbGZCbHVyKGEsdCxuLG4sbywibG9uZ2l0dWRpbmFsIixpKX1faGFsZkJsdXIodCxlLG4sbyxpLGEscil7Y29uc3Qgcz10aGlzLl9yZW5kZXJlcixsPXRoaXMuX2JsdXJNYXRlcmlhbDsibGF0aXR1ZGluYWwiIT09YSYmImxvbmdpdHVkaW5hbCIhPT1hJiZjb25zb2xlLmVycm9yKCJibHVyIGRpcmVjdGlvbiBtdXN0IGJlIGVpdGhlciBsYXRpdHVkaW5hbCBvciBsb25naXR1ZGluYWwhIik7Y29uc3QgYz1uZXcgUWN0KEhkdFtvXSxsKSxkPWwudW5pZm9ybXMscD1GZHRbbl0tMSxtPWlzRmluaXRlKGkpP01hdGguUEkvKDIqcCk6MipNYXRoLlBJLzM5LHU9aS9tLGY9aXNGaW5pdGUoaSk/MStNYXRoLmZsb29yKDMqdSk6emR0O2Y+emR0JiZjb25zb2xlLndhcm4oYHNpZ21hUmFkaWFucywgJHtpfSwgaXMgdG9vIGxhcmdlIGFuZCB3aWxsIGNsaXAsIGFzIGl0IHJlcXVlc3RlZCAke2Z9IHNhbXBsZXMgd2hlbiB0aGUgbWF4aW11bSBpcyBzZXQgdG8gMjBgKTtjb25zdCBnPVtdO2xldCBoPTA7Zm9yKGxldCB0PTA7dDx6ZHQ7Kyt0KXtjb25zdCBlPXQvdSxuPU1hdGguZXhwKC1lKmUvMik7Zy5wdXNoKG4pLDA9PT10P2grPW46dDxmJiYoaCs9MipuKX1mb3IobGV0IHQ9MDt0PGcubGVuZ3RoO3QrKylnW3RdPWdbdF0vaDtkLmVudk1hcC52YWx1ZT10LnRleHR1cmUsZC5zYW1wbGVzLnZhbHVlPWYsZC53ZWlnaHRzLnZhbHVlPWcsZC5sYXRpdHVkaW5hbC52YWx1ZT0ibGF0aXR1ZGluYWwiPT09YSxyJiYoZC5wb2xlQXhpcy52YWx1ZT1yKSxkLmRUaGV0YS52YWx1ZT1tLGQubWlwSW50LnZhbHVlPTgtbjtjb25zdCBiPUZkdFtvXTtaZHQoZSwzKk1hdGgubWF4KDAsQWR0LTIqYiksKDA9PT1vPzA6MipBZHQpKzIqYioobz40P28tOCs0OjApLDMqYiwyKmIpLHMuc2V0UmVuZGVyVGFyZ2V0KGUpLHMucmVuZGVyKGMsSWR0KX19ZnVuY3Rpb24gWWR0KCl7Y29uc3QgdD1bXSxlPVtdLG49W107bGV0IG89ODtmb3IobGV0IGk9MDtpPE5kdDtpKyspe2NvbnN0IGE9TWF0aC5wb3coMixvKTtlLnB1c2goYSk7bGV0IHI9MS9hO2k+ND9yPVRkdFtpLTgrNC0xXTowPT09aSYmKHI9MCksbi5wdXNoKHIpO2NvbnN0IHM9MS8oYS0xKSxsPS1zLzIsYz0xK3MvMixkPVtsLGwsYyxsLGMsYyxsLGwsYyxjLGwsY10scD02LG09Nix1PTMsZj0yLGc9MSxoPW5ldyBGbG9hdDMyQXJyYXkodSptKnApLGI9bmV3IEZsb2F0MzJBcnJheShmKm0qcCkseT1uZXcgRmxvYXQzMkFycmF5KGcqbSpwKTtmb3IobGV0IHQ9MDt0PHA7dCsrKXtjb25zdCBlPXQlMyoyLzMtMSxuPXQ+Mj8wOi0xO2guc2V0KFtlLG4sMCxlKzIvMyxuLDAsZSsyLzMsbisxLDAsZSxuLDAsZSsyLzMsbisxLDAsZSxuKzEsMF0sdSptKnQpLGIuc2V0KGQsZiptKnQpO3kuc2V0KFt0LHQsdCx0LHQsdF0sZyptKnQpfWNvbnN0IF89bmV3IE5jdDtfLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4Y3QoaCx1KSksXy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgeGN0KGIsZikpLF8uc2V0QXR0cmlidXRlKCJmYWNlSW5kZXgiLG5ldyB4Y3QoeSxnKSksdC5wdXNoKF8pLG8+NCYmby0tfXJldHVybntfbG9kUGxhbmVzOnQsX3NpemVMb2RzOmUsX3NpZ21hczpufX1mdW5jdGlvbiBxZHQodCl7Y29uc3QgZT1uZXcgZWx0KDMqQWR0LDMqQWR0LHQpO3JldHVybiBlLnRleHR1cmUubWFwcGluZz1YcnQsZS50ZXh0dXJlLm5hbWU9IlBNUkVNLmN1YmVVdiIsZS5zY2lzc29yVGVzdD0hMCxlfWZ1bmN0aW9uIFpkdCh0LGUsbixvLGkpe3Qudmlld3BvcnQuc2V0KGUsbixvLGkpLHQuc2Npc3Nvci5zZXQoZSxuLG8saSl9ZnVuY3Rpb24gWGR0KCl7Y29uc3QgdD1uZXcgRnN0KDEsMSk7cmV0dXJuIG5ldyBFZHQoe25hbWU6IkVxdWlyZWN0YW5ndWxhclRvQ3ViZVVWIix1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSx0ZXhlbFNpemU6e3ZhbHVlOnR9fSx2ZXJ0ZXhTaGFkZXI6SmR0KCksZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0XHRcdHVuaWZvcm0gdmVjMiB0ZXhlbFNpemU7XG5cblx0XHRcdCNpbmNsdWRlIDxjb21tb24+XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblxuXHRcdFx0XHR2ZWMzIG91dHB1dERpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdk91dHB1dERpcmVjdGlvbiApO1xuXHRcdFx0XHR2ZWMyIHV2ID0gZXF1aXJlY3RVdiggb3V0cHV0RGlyZWN0aW9uICk7XG5cblx0XHRcdFx0dmVjMiBmID0gZnJhY3QoIHV2IC8gdGV4ZWxTaXplIC0gMC41ICk7XG5cdFx0XHRcdHV2IC09IGYgKiB0ZXhlbFNpemU7XG5cdFx0XHRcdHZlYzMgdGwgPSB0ZXh0dXJlMkQgKCBlbnZNYXAsIHV2ICkucmdiO1xuXHRcdFx0XHR1di54ICs9IHRleGVsU2l6ZS54O1xuXHRcdFx0XHR2ZWMzIHRyID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjtcblx0XHRcdFx0dXYueSArPSB0ZXhlbFNpemUueTtcblx0XHRcdFx0dmVjMyBiciA9IHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKS5yZ2I7XG5cdFx0XHRcdHV2LnggLT0gdGV4ZWxTaXplLng7XG5cdFx0XHRcdHZlYzMgYmwgPSB0ZXh0dXJlMkQgKCBlbnZNYXAsIHV2ICkucmdiO1xuXG5cdFx0XHRcdHZlYzMgdG0gPSBtaXgoIHRsLCB0ciwgZi54ICk7XG5cdFx0XHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIHRtLCBibSwgZi55ICk7XG5cblx0XHRcdH1cblx0XHQiLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBLZHQoKXtyZXR1cm4gbmV3IEVkdCh7bmFtZToiQ3ViZW1hcFRvQ3ViZVVWIix1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSxmbGlwRW52TWFwOnt2YWx1ZTotMX19LHZlcnRleFNoYWRlcjpKZHQoKSxmcmFnbWVudFNoYWRlcjoiXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR1bmlmb3JtIGZsb2F0IGZsaXBFbnZNYXA7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIGZsaXBFbnZNYXAgKiB2T3V0cHV0RGlyZWN0aW9uLngsIHZPdXRwdXREaXJlY3Rpb24ueXogKSApO1xuXG5cdFx0XHR9XG5cdFx0IixibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gSmR0KCl7cmV0dXJuIlxuXG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0YXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cdFx0YXR0cmlidXRlIHZlYzIgdXY7XG5cdFx0YXR0cmlidXRlIGZsb2F0IGZhY2VJbmRleDtcblxuXHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0Ly8gUkggY29vcmRpbmF0ZSBzeXN0ZW07IFBNUkVNIGZhY2UtaW5kZXhpbmcgY29udmVudGlvblxuXHRcdHZlYzMgZ2V0RGlyZWN0aW9uKCB2ZWMyIHV2LCBmbG9hdCBmYWNlICkge1xuXG5cdFx0XHR1diA9IDIuMCAqIHV2IC0gMS4wO1xuXG5cdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IHZlYzMoIHV2LCAxLjAgKTtcblxuXHRcdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OyAvLyAoIDEsIHYsIHUgKSBwb3MgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtdSwgMSwgLXYgKSBwb3MgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueCAqPSAtMS4wOyAvLyAoIC11LCB2LCAxICkgcG9zIHpcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLTEsIHYsIC11ICkgbmVnIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh5ICo9IC0xLjA7IC8vICggLXUsIC0xLCB2ICkgbmVnIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA1LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnogKj0gLTEuMDsgLy8gKCB1LCB2LCAtMSApIG5lZyB6XG5cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRpcmVjdGlvbjtcblxuXHRcdH1cblxuXHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0dk91dHB1dERpcmVjdGlvbiA9IGdldERpcmVjdGlvbiggdXYsIGZhY2VJbmRleCApO1xuXHRcdFx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG5cblx0XHR9XG5cdCJ9ZnVuY3Rpb24gUWR0KHQpe2xldCBlPW5ldyBXZWFrTWFwLG49bnVsbDtmdW5jdGlvbiBvKHQpe2NvbnN0IG49dC50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKTtjb25zdCBpPWUuZ2V0KG4pO3ZvaWQgMCE9PWkmJihlLmRlbGV0ZShuKSxpLmRpc3Bvc2UoKSl9cmV0dXJue2dldDpmdW5jdGlvbiBpKGEpe2lmKGEmJmEuaXNUZXh0dXJlKXtjb25zdCBpPWEubWFwcGluZyxyPTMwMz09PWl8fDMwND09PWkscz1pPT09cXJ0fHxpPT09WnJ0O2lmKHJ8fHMpe2lmKGEuaXNSZW5kZXJUYXJnZXRUZXh0dXJlJiYhMD09PWEubmVlZHNQTVJFTVVwZGF0ZSl7YS5uZWVkc1BNUkVNVXBkYXRlPSExO2xldCBvPWUuZ2V0KGEpO3JldHVybiBudWxsPT09biYmKG49bmV3IEdkdCh0KSksbz1yP24uZnJvbUVxdWlyZWN0YW5ndWxhcihhLG8pOm4uZnJvbUN1YmVtYXAoYSxvKSxlLnNldChhLG8pLG8udGV4dHVyZX1pZihlLmhhcyhhKSlyZXR1cm4gZS5nZXQoYSkudGV4dHVyZTt7Y29uc3QgaT1hLmltYWdlO2lmKHImJmkmJmkuaGVpZ2h0PjB8fHMmJmkmJihmdW5jdGlvbiByKHQpe2xldCBlPTA7Y29uc3Qgbj02O2ZvcihsZXQgbz0wO288bjtvKyspdm9pZCAwIT09dFtvXSYmZSsrO3JldHVybiBlPT09bn0pKGkpKXtudWxsPT09biYmKG49bmV3IEdkdCh0KSk7Y29uc3QgaT1yP24uZnJvbUVxdWlyZWN0YW5ndWxhcihhKTpuLmZyb21DdWJlbWFwKGEpO3JldHVybiBlLnNldChhLGkpLGEuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksaS50ZXh0dXJlfXJldHVybiBudWxsfX19cmV0dXJuIGF9LGRpc3Bvc2U6ZnVuY3Rpb24gYSgpe2U9bmV3IFdlYWtNYXAsbnVsbCE9PW4mJihuLmRpc3Bvc2UoKSxuPW51bGwpfX19ZnVuY3Rpb24gJGR0KHQpe2NvbnN0IGU9e307ZnVuY3Rpb24gbihuKXtpZih2b2lkIDAhPT1lW25dKXJldHVybiBlW25dO2xldCBvO3N3aXRjaChuKXtjYXNlIldFQkdMX2RlcHRoX3RleHR1cmUiOm89dC5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2JyZWFrO2Nhc2UiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIjpvPXQuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjpvPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyI6bz10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7YnJlYWs7ZGVmYXVsdDpvPXQuZ2V0RXh0ZW5zaW9uKG4pfXJldHVybiBlW25dPW8sb31yZXR1cm57aGFzOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09bih0KX0saW5pdDpmdW5jdGlvbih0KXt0LmlzV2ViR0wyP24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKToobigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLG4oIk9FU190ZXh0dXJlX2Zsb2F0IiksbigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiksbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiksbigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpLG4oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiksbigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKSxuKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSxuKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSxuKCJXRUJHTF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKX0sZ2V0OmZ1bmN0aW9uKHQpe2NvbnN0IGU9bih0KTtyZXR1cm4gbnVsbD09PWUmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIit0KyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIiksZX19fWZ1bmN0aW9uIHRwdCh0LGUsbixvKXtjb25zdCBpPXt9LGE9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcih0KXtjb25zdCBzPXQudGFyZ2V0O251bGwhPT1zLmluZGV4JiZlLnJlbW92ZShzLmluZGV4KTtmb3IoY29uc3QgdCBpbiBzLmF0dHJpYnV0ZXMpZS5yZW1vdmUocy5hdHRyaWJ1dGVzW3RdKTtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHIpLGRlbGV0ZSBpW3MuaWRdO2NvbnN0IGw9YS5nZXQocyk7bCYmKGUucmVtb3ZlKGwpLGEuZGVsZXRlKHMpKSxvLnJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5KHMpLCEwPT09cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5JiZkZWxldGUgcy5fbWF4SW5zdGFuY2VDb3VudCxuLm1lbW9yeS5nZW9tZXRyaWVzLS19ZnVuY3Rpb24gcyh0KXtjb25zdCBuPVtdLG89dC5pbmRleCxpPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtsZXQgcj0wO2lmKG51bGwhPT1vKXtjb25zdCB0PW8uYXJyYXk7cj1vLnZlcnNpb247Zm9yKGxldCBlPTAsbz10Lmxlbmd0aDtlPG87ZSs9Myl7Y29uc3Qgbz10W2UrMF0saT10W2UrMV0sYT10W2UrMl07bi5wdXNoKG8saSxpLGEsYSxvKX19ZWxzZXtyPWkudmVyc2lvbjtmb3IobGV0IHQ9MCxlPWkuYXJyYXkubGVuZ3RoLzMtMTt0PGU7dCs9Myl7Y29uc3QgZT10KzAsbz10KzEsaT10KzI7bi5wdXNoKGUsbyxvLGksaSxlKX19Y29uc3Qgcz1uZXcoQnN0KG4pP1BjdDpPY3QpKG4sMSk7cy52ZXJzaW9uPXI7Y29uc3QgbD1hLmdldCh0KTtsJiZlLnJlbW92ZShsKSxhLnNldCh0LHMpfXJldHVybntnZXQ6ZnVuY3Rpb24gbCh0LGUpe3JldHVybiEwPT09aVtlLmlkXXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsciksaVtlLmlkXT0hMCxuLm1lbW9yeS5nZW9tZXRyaWVzKyspLGV9LHVwZGF0ZTpmdW5jdGlvbiBjKHQpe2NvbnN0IG49dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIG4pZS51cGRhdGUoblt0XSwzNDk2Mik7Y29uc3Qgbz10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBvKXtjb25zdCBuPW9bdF07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0PG87dCsrKWUudXBkYXRlKG5bdF0sMzQ5NjIpfX0sZ2V0V2lyZWZyYW1lQXR0cmlidXRlOmZ1bmN0aW9uIGQodCl7Y29uc3QgZT1hLmdldCh0KTtpZihlKXtjb25zdCBuPXQuaW5kZXg7bnVsbCE9PW4mJmUudmVyc2lvbjxuLnZlcnNpb24mJnModCl9ZWxzZSBzKHQpO3JldHVybiBhLmdldCh0KX19fWZ1bmN0aW9uIGVwdCh0LGUsbixvKXtjb25zdCBpPW8uaXNXZWJHTDI7bGV0IGEscixzO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBsKHQpe2E9dH0sdGhpcy5zZXRJbmRleD1mdW5jdGlvbiBjKHQpe3I9dC50eXBlLHM9dC5ieXRlc1BlckVsZW1lbnR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIGQoZSxvKXt0LmRyYXdFbGVtZW50cyhhLG8scixlKnMpLG4udXBkYXRlKG8sYSwxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gcChvLGwsYyl7aWYoMD09PWMpcmV0dXJuO2xldCBkLHA7aWYoaSlkPXQscD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkIjtlbHNlIGlmKGQ9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxwPSJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIsbnVsbD09PWQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO2RbcF0oYSxsLHIsbypzLGMpLG4udXBkYXRlKGwsYSxjKX19ZnVuY3Rpb24gbnB0KHQpe2NvbnN0IGU9e2ZyYW1lOjAsY2FsbHM6MCx0cmlhbmdsZXM6MCxwb2ludHM6MCxsaW5lczowfTtyZXR1cm57bWVtb3J5OntnZW9tZXRyaWVzOjAsdGV4dHVyZXM6MH0scmVuZGVyOmUscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6ZnVuY3Rpb24gbigpe2UuZnJhbWUrKyxlLmNhbGxzPTAsZS50cmlhbmdsZXM9MCxlLnBvaW50cz0wLGUubGluZXM9MH0sdXBkYXRlOmZ1bmN0aW9uIG8odCxuLGkpe3N3aXRjaChlLmNhbGxzKyssbil7Y2FzZSA0OmUudHJpYW5nbGVzKz1pKih0LzMpO2JyZWFrO2Nhc2UgMTplLmxpbmVzKz1pKih0LzIpO2JyZWFrO2Nhc2UgMzplLmxpbmVzKz1pKih0LTEpO2JyZWFrO2Nhc2UgMjplLmxpbmVzKz1pKnQ7YnJlYWs7Y2FzZSAwOmUucG9pbnRzKz1pKnQ7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZm86IFVua25vd24gZHJhdyBtb2RlOiIsbil9fX19Y2xhc3Mgb3B0IGV4dGVuZHMgUXN0e2NvbnN0cnVjdG9yKHQ9bnVsbCxlPTEsbj0xLG89MSl7c3VwZXIobnVsbCksdGhpcy5pbWFnZT17ZGF0YTp0LHdpZHRoOmUsaGVpZ2h0Om4sZGVwdGg6b30sdGhpcy5tYWdGaWx0ZXI9JHJ0LHRoaXMubWluRmlsdGVyPSRydCx0aGlzLndyYXBSPUpydCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTF9fWZ1bmN0aW9uIGlwdCh0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24gYXB0KHQsZSl7cmV0dXJuIE1hdGguYWJzKGVbMV0pLU1hdGguYWJzKHRbMV0pfWZ1bmN0aW9uIHJwdCh0LGUpe2xldCBuPTE7Y29uc3Qgbz1lLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ZS5kYXRhLmFycmF5OmUuYXJyYXk7byBpbnN0YW5jZW9mIEludDhBcnJheT9uPTEyNzpvIGluc3RhbmNlb2YgSW50MTZBcnJheT9uPTMyNzY3Om8gaW5zdGFuY2VvZiBJbnQzMkFycmF5P249MjE0NzQ4MzY0Nzpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTE1vcnBodGFyZ2V0czogVW5zdXBwb3J0ZWQgbW9ycGggYXR0cmlidXRlIGRhdGEgdHlwZTogIixvKSx0LmRpdmlkZVNjYWxhcihuKX1mdW5jdGlvbiBzcHQodCxlLG4pe2NvbnN0IG89e30saT1uZXcgRmxvYXQzMkFycmF5KDgpLGE9bmV3IFdlYWtNYXAscj1uZXcgaWx0LHM9W107Zm9yKGxldCB0PTA7dDw4O3QrKylzW3RdPVt0LDBdO3JldHVybnt1cGRhdGU6ZnVuY3Rpb24gbChjLGQscCxtKXtjb25zdCB1PWMubW9ycGhUYXJnZXRJbmZsdWVuY2VzO2lmKCEwPT09ZS5pc1dlYkdMMil7Y29uc3Qgbz1kLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbi5sZW5ndGg7bGV0IGk9YS5nZXQoZCk7aWYodm9pZCAwPT09aXx8aS5jb3VudCE9PW8pe3ZvaWQgMCE9PWkmJmkudGV4dHVyZS5kaXNwb3NlKCk7Y29uc3QgdD12b2lkIDAhPT1kLm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsbj1kLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixzPWQubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbHx8W10sbD0hMD09PXQ/MjoxO2xldCBjPWQuYXR0cmlidXRlcy5wb3NpdGlvbi5jb3VudCpsLHA9MTtjPmUubWF4VGV4dHVyZVNpemUmJihwPU1hdGguY2VpbChjL2UubWF4VGV4dHVyZVNpemUpLGM9ZS5tYXhUZXh0dXJlU2l6ZSk7Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGMqcCo0Km8pLHU9bmV3IG9wdChtLGMscCxvKTt1LmZvcm1hdD1sc3QsdS50eXBlPWFzdCx1Lm5lZWRzVXBkYXRlPSEwO2NvbnN0IGY9NCpsO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IG89bltlXSxpPXNbZV0sYT1jKnAqNCplO2ZvcihsZXQgZT0wO2U8by5jb3VudDtlKyspe3IuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGUpLCEwPT09by5ub3JtYWxpemVkJiZycHQocixvKTtjb25zdCBuPWUqZjttW2ErbiswXT1yLngsbVthK24rMV09ci55LG1bYStuKzJdPXIueixtW2ErbiszXT0wLCEwPT09dCYmKHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGUpLCEwPT09aS5ub3JtYWxpemVkJiZycHQocixpKSxtW2Erbis0XT1yLngsbVthK24rNV09ci55LG1bYStuKzZdPXIueixtW2Erbis3XT0wKX19aT17Y291bnQ6byx0ZXh0dXJlOnUsc2l6ZTpuZXcgRnN0KGMscCl9LGEuc2V0KGQsaSksZC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIiwoZnVuY3Rpb24gdCgpe3UuZGlzcG9zZSgpLGEuZGVsZXRlKGQpLGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsdCl9KSl9bGV0IHM9MDtmb3IobGV0IHQ9MDt0PHUubGVuZ3RoO3QrKylzKz11W3RdO2NvbnN0IGw9ZC5tb3JwaFRhcmdldHNSZWxhdGl2ZT8xOjEtczttLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlIixsKSxtLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRJbmZsdWVuY2VzIix1KSxtLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRzVGV4dHVyZSIsaS50ZXh0dXJlLG4pLG0uZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldHNUZXh0dXJlU2l6ZSIsaS5zaXplKX1lbHNle2NvbnN0IGU9dm9pZCAwPT09dT8wOnUubGVuZ3RoO2xldCBuPW9bZC5pZF07aWYodm9pZCAwPT09bnx8bi5sZW5ndGghPT1lKXtuPVtdO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspblt0XT1bdCwwXTtvW2QuaWRdPW59Zm9yKGxldCB0PTA7dDxlO3QrKyl7Y29uc3QgZT1uW3RdO2VbMF09dCxlWzFdPXVbdF19bi5zb3J0KGFwdCk7Zm9yKGxldCB0PTA7dDw4O3QrKyl0PGUmJm5bdF1bMV0/KHNbdF1bMF09blt0XVswXSxzW3RdWzFdPW5bdF1bMV0pOihzW3RdWzBdPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLHNbdF1bMV09MCk7cy5zb3J0KGlwdCk7Y29uc3QgYT1kLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixyPWQubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbDtsZXQgbD0wO2ZvcihsZXQgdD0wO3Q8ODt0Kyspe2NvbnN0IGU9c1t0XSxuPWVbMF0sbz1lWzFdO24hPT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUiYmbz8oYSYmZC5nZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSE9PWFbbl0mJmQuc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCxhW25dKSxyJiZkLmdldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpIT09cltuXSYmZC5zZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0LHJbbl0pLGlbdF09byxsKz1vKTooYSYmITA9PT1kLmhhc0F0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpJiZkLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpLHImJiEwPT09ZC5oYXNBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSYmZC5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSxpW3RdPTApfWNvbnN0IGM9ZC5tb3JwaFRhcmdldHNSZWxhdGl2ZT8xOjEtbDttLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlIixjKSxtLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRJbmZsdWVuY2VzIixpKX19fX1mdW5jdGlvbiBscHQodCxlLG4sbyl7bGV0IGk9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSksbi5yZW1vdmUoZS5pbnN0YW5jZU1hdHJpeCksbnVsbCE9PWUuaW5zdGFuY2VDb2xvciYmbi5yZW1vdmUoZS5pbnN0YW5jZUNvbG9yKX1yZXR1cm57dXBkYXRlOmZ1bmN0aW9uIHIodCl7Y29uc3Qgcj1vLnJlbmRlci5mcmFtZSxzPWUuZ2V0KHQsdC5nZW9tZXRyeSk7cmV0dXJuIGkuZ2V0KHMpIT09ciYmKGUudXBkYXRlKHMpLGkuc2V0KHMscikpLHQuaXNJbnN0YW5jZWRNZXNoJiYoITE9PT10Lmhhc0V2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpJiZ0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLG4udXBkYXRlKHQuaW5zdGFuY2VNYXRyaXgsMzQ5NjIpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJm4udXBkYXRlKHQuaW5zdGFuY2VDb2xvciwzNDk2MikpLHN9LGRpc3Bvc2U6ZnVuY3Rpb24gcygpe2k9bmV3IFdlYWtNYXB9fX1vcHQucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwO2NsYXNzIGNwdCBleHRlbmRzIFFzdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpuLGRlcHRoOm99LHRoaXMubWFnRmlsdGVyPSRydCx0aGlzLm1pbkZpbHRlcj0kcnQsdGhpcy53cmFwUj1KcnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xfX1jcHQucHJvdG90eXBlLmlzRGF0YVRleHR1cmUzRD0hMDtjb25zdCBkcHQ9bmV3IFFzdCxwcHQ9bmV3IG9wdCxtcHQ9bmV3IGNwdCx1cHQ9bmV3IGNkdCxmcHQ9W10sZ3B0PVtdLGhwdD1uZXcgRmxvYXQzMkFycmF5KDE2KSxicHQ9bmV3IEZsb2F0MzJBcnJheSg5KSx5cHQ9bmV3IEZsb2F0MzJBcnJheSg0KTtmdW5jdGlvbiBfcHQodCxlLG4pe2NvbnN0IG89dFswXTtpZihvPD0wfHxvPjApcmV0dXJuIHQ7Y29uc3QgaT1lKm47bGV0IGE9ZnB0W2ldO2lmKHZvaWQgMD09PWEmJihhPW5ldyBGbG9hdDMyQXJyYXkoaSksZnB0W2ldPWEpLDAhPT1lKXtvLnRvQXJyYXkoYSwwKTtmb3IobGV0IG89MSxpPTA7byE9PWU7KytvKWkrPW4sdFtvXS50b0FycmF5KGEsaSl9cmV0dXJuIGF9ZnVuY3Rpb24gQ3B0KHQsZSl7aWYodC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MCxvPXQubGVuZ3RoO248bztuKyspaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gTXB0KHQsZSl7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bisrKXRbbl09ZVtuXX1mdW5jdGlvbiB2cHQodCxlKXtsZXQgbj1ncHRbZV07dm9pZCAwPT09biYmKG49bmV3IEludDMyQXJyYXkoZSksZ3B0W2VdPW4pO2ZvcihsZXQgbz0wO28hPT1lOysrbyluW29dPXQuYWxsb2NhdGVUZXh0dXJlVW5pdCgpO3JldHVybiBufWZ1bmN0aW9uIHhwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTFmKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIE9wdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtpZih2b2lkIDAhPT1lLngpblswXT09PWUueCYmblsxXT09PWUueXx8KHQudW5pZm9ybTJmKHRoaXMuYWRkcixlLngsZS55KSxuWzBdPWUueCxuWzFdPWUueSk7ZWxzZXtpZihDcHQobixlKSlyZXR1cm47dC51bmlmb3JtMmZ2KHRoaXMuYWRkcixlKSxNcHQobixlKX19ZnVuY3Rpb24gUHB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55JiZuWzJdPT09ZS56fHwodC51bmlmb3JtM2YodGhpcy5hZGRyLGUueCxlLnksZS56KSxuWzBdPWUueCxuWzFdPWUueSxuWzJdPWUueik7ZWxzZSBpZih2b2lkIDAhPT1lLnIpblswXT09PWUuciYmblsxXT09PWUuZyYmblsyXT09PWUuYnx8KHQudW5pZm9ybTNmKHRoaXMuYWRkcixlLnIsZS5nLGUuYiksblswXT1lLnIsblsxXT1lLmcsblsyXT1lLmIpO2Vsc2V7aWYoQ3B0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTNmdih0aGlzLmFkZHIsZSksTXB0KG4sZSl9fWZ1bmN0aW9uIHdwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtpZih2b2lkIDAhPT1lLngpblswXT09PWUueCYmblsxXT09PWUueSYmblsyXT09PWUueiYmblszXT09PWUud3x8KHQudW5pZm9ybTRmKHRoaXMuYWRkcixlLngsZS55LGUueixlLncpLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56LG5bM109ZS53KTtlbHNle2lmKENwdChuLGUpKXJldHVybjt0LnVuaWZvcm00ZnYodGhpcy5hZGRyLGUpLE1wdChuLGUpfX1mdW5jdGlvbiBrcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGUsbz1lLmVsZW1lbnRzO2lmKHZvaWQgMD09PW8pe2lmKENwdChuLGUpKXJldHVybjt0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLGUpLE1wdChuLGUpfWVsc2V7aWYoQ3B0KG4sbykpcmV0dXJuO3lwdC5zZXQobyksdC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSx5cHQpLE1wdChuLG8pfX1mdW5jdGlvbiBTcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGUsbz1lLmVsZW1lbnRzO2lmKHZvaWQgMD09PW8pe2lmKENwdChuLGUpKXJldHVybjt0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLGUpLE1wdChuLGUpfWVsc2V7aWYoQ3B0KG4sbykpcmV0dXJuO2JwdC5zZXQobyksdC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxicHQpLE1wdChuLG8pfX1mdW5jdGlvbiBEcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGUsbz1lLmVsZW1lbnRzO2lmKHZvaWQgMD09PW8pe2lmKENwdChuLGUpKXJldHVybjt0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLGUpLE1wdChuLGUpfWVsc2V7aWYoQ3B0KG4sbykpcmV0dXJuO2hwdC5zZXQobyksdC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxocHQpLE1wdChuLG8pfX1mdW5jdGlvbiBScHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7blswXSE9PWUmJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBFcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7Q3B0KG4sZSl8fCh0LnVuaWZvcm0yaXYodGhpcy5hZGRyLGUpLE1wdChuLGUpKX1mdW5jdGlvbiBBcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7Q3B0KG4sZSl8fCh0LnVuaWZvcm0zaXYodGhpcy5hZGRyLGUpLE1wdChuLGUpKX1mdW5jdGlvbiBUcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7Q3B0KG4sZSl8fCh0LnVuaWZvcm00aXYodGhpcy5hZGRyLGUpLE1wdChuLGUpKX1mdW5jdGlvbiBOcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7blswXSE9PWUmJih0LnVuaWZvcm0xdWkodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24genB0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO0NwdChuLGUpfHwodC51bmlmb3JtMnVpdih0aGlzLmFkZHIsZSksTXB0KG4sZSkpfWZ1bmN0aW9uIElwdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtDcHQobixlKXx8KHQudW5pZm9ybTN1aXYodGhpcy5hZGRyLGUpLE1wdChuLGUpKX1mdW5jdGlvbiBIcHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7Q3B0KG4sZSl8fCh0LnVuaWZvcm00dWl2KHRoaXMuYWRkcixlKSxNcHQobixlKSl9ZnVuY3Rpb24gRnB0KHQsZSxuKXtjb25zdCBvPXRoaXMuY2FjaGUsaT1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtvWzBdIT09aSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixpKSxvWzBdPWkpLG4uc2FmZVNldFRleHR1cmUyRChlfHxkcHQsaSl9ZnVuY3Rpb24gTHB0KHQsZSxuKXtjb25zdCBvPXRoaXMuY2FjaGUsaT1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtvWzBdIT09aSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixpKSxvWzBdPWkpLG4uc2V0VGV4dHVyZTNEKGV8fG1wdCxpKX1mdW5jdGlvbiBCcHQodCxlLG4pe2NvbnN0IG89dGhpcy5jYWNoZSxpPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO29bMF0hPT1pJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGkpLG9bMF09aSksbi5zYWZlU2V0VGV4dHVyZUN1YmUoZXx8dXB0LGkpfWZ1bmN0aW9uIFZwdCh0LGUsbil7Y29uc3Qgbz10aGlzLmNhY2hlLGk9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7b1swXSE9PWkmJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksb1swXT1pKSxuLnNldFRleHR1cmUyREFycmF5KGV8fHBwdCxpKX1mdW5jdGlvbiBVcHQodCxlKXt0LnVuaWZvcm0xZnYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIGpwdCh0LGUpe2NvbnN0IG49X3B0KGUsdGhpcy5zaXplLDIpO3QudW5pZm9ybTJmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gV3B0KHQsZSl7Y29uc3Qgbj1fcHQoZSx0aGlzLnNpemUsMyk7dC51bmlmb3JtM2Z2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBHcHQodCxlKXtjb25zdCBuPV9wdChlLHRoaXMuc2l6ZSw0KTt0LnVuaWZvcm00ZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIFlwdCh0LGUpe2NvbnN0IG49X3B0KGUsdGhpcy5zaXplLDQpO3QudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gcXB0KHQsZSl7Y29uc3Qgbj1fcHQoZSx0aGlzLnNpemUsOSk7dC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxuKX1mdW5jdGlvbiBacHQodCxlKXtjb25zdCBuPV9wdChlLHRoaXMuc2l6ZSwxNik7dC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxuKX1mdW5jdGlvbiBYcHQodCxlKXt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIEtwdCh0LGUpe3QudW5pZm9ybTJpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSnB0KHQsZSl7dC51bmlmb3JtM2l2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBRcHQodCxlKXt0LnVuaWZvcm00aXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uICRwdCh0LGUpe3QudW5pZm9ybTF1aXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIHRtdCh0LGUpe3QudW5pZm9ybTJ1aXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIGVtdCh0LGUpe3QudW5pZm9ybTN1aXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIG5tdCh0LGUpe3QudW5pZm9ybTR1aXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIG9tdCh0LGUsbil7Y29uc3Qgbz1lLmxlbmd0aCxpPXZwdChuLG8pO3QudW5pZm9ybTFpdih0aGlzLmFkZHIsaSk7Zm9yKGxldCB0PTA7dCE9PW87Kyt0KW4uc2FmZVNldFRleHR1cmUyRChlW3RdfHxkcHQsaVt0XSl9ZnVuY3Rpb24gaW10KHQsZSxuKXtjb25zdCBvPWUubGVuZ3RoLGk9dnB0KG4sbyk7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixpKTtmb3IobGV0IHQ9MDt0IT09bzsrK3Qpbi5zZXRUZXh0dXJlM0QoZVt0XXx8bXB0LGlbdF0pfWZ1bmN0aW9uIGFtdCh0LGUsbil7Y29uc3Qgbz1lLmxlbmd0aCxpPXZwdChuLG8pO3QudW5pZm9ybTFpdih0aGlzLmFkZHIsaSk7Zm9yKGxldCB0PTA7dCE9PW87Kyt0KW4uc2FmZVNldFRleHR1cmVDdWJlKGVbdF18fHVwdCxpW3RdKX1mdW5jdGlvbiBybXQodCxlLG4pe2NvbnN0IG89ZS5sZW5ndGgsaT12cHQobixvKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLGkpO2ZvcihsZXQgdD0wO3QhPT1vOysrdCluLnNldFRleHR1cmUyREFycmF5KGVbdF18fHBwdCxpW3RdKX1mdW5jdGlvbiBzbXQodCxlLG4pe3RoaXMuaWQ9dCx0aGlzLmFkZHI9bix0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIG8odCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4geHB0O2Nhc2UgMzU2NjQ6cmV0dXJuIE9wdDtjYXNlIDM1NjY1OnJldHVybiBQcHQ7Y2FzZSAzNTY2NjpyZXR1cm4gd3B0O2Nhc2UgMzU2NzQ6cmV0dXJuIGtwdDtjYXNlIDM1Njc1OnJldHVybiBTcHQ7Y2FzZSAzNTY3NjpyZXR1cm4gRHB0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBScHQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBFcHQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBBcHQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBUcHQ7Y2FzZSA1MTI1OnJldHVybiBOcHQ7Y2FzZSAzNjI5NDpyZXR1cm4genB0O2Nhc2UgMzYyOTU6cmV0dXJuIElwdDtjYXNlIDM2Mjk2OnJldHVybiBIcHQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBGcHQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIExwdDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBCcHQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gVnB0fX0pKGUudHlwZSl9ZnVuY3Rpb24gbG10KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNpemU9ZS5zaXplLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIG8odCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gVXB0O2Nhc2UgMzU2NjQ6cmV0dXJuIGpwdDtjYXNlIDM1NjY1OnJldHVybiBXcHQ7Y2FzZSAzNTY2NjpyZXR1cm4gR3B0O2Nhc2UgMzU2NzQ6cmV0dXJuIFlwdDtjYXNlIDM1Njc1OnJldHVybiBxcHQ7Y2FzZSAzNTY3NjpyZXR1cm4gWnB0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBYcHQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBLcHQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBKcHQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBRcHQ7Y2FzZSA1MTI1OnJldHVybiAkcHQ7Y2FzZSAzNjI5NDpyZXR1cm4gdG10O2Nhc2UgMzYyOTU6cmV0dXJuIGVtdDtjYXNlIDM2Mjk2OnJldHVybiBubXQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBvbXQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIGltdDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBhbXQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gcm10fX0pKGUudHlwZSl9ZnVuY3Rpb24gY210KHQpe3RoaXMuaWQ9dCx0aGlzLnNlcT1bXSx0aGlzLm1hcD17fX1sbXQucHJvdG90eXBlLnVwZGF0ZUNhY2hlPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5jYWNoZTt0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5JiZlLmxlbmd0aCE9PXQubGVuZ3RoJiYodGhpcy5jYWNoZT1uZXcgRmxvYXQzMkFycmF5KHQubGVuZ3RoKSksTXB0KGUsdCl9LGNtdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IG89dGhpcy5zZXE7Zm9yKGxldCBpPTAsYT1vLmxlbmd0aDtpIT09YTsrK2kpe2NvbnN0IGE9b1tpXTthLnNldFZhbHVlKHQsZVthLmlkXSxuKX19O2NvbnN0IGRtdD0vKFx3KykoXF0pPyhcW3xcLik/L2c7ZnVuY3Rpb24gcG10KHQsZSl7dC5zZXEucHVzaChlKSx0Lm1hcFtlLmlkXT1lfWZ1bmN0aW9uIG1tdCh0LGUsbil7Y29uc3Qgbz10Lm5hbWUsaT1vLmxlbmd0aDtmb3IoZG10Lmxhc3RJbmRleD0wOzspe2NvbnN0IGE9ZG10LmV4ZWMobykscj1kbXQubGFzdEluZGV4O2xldCBzPWFbMV07Y29uc3QgbD1hWzNdO2lmKCJdIj09PWFbMl0mJihzfD0wKSx2b2lkIDA9PT1sfHwiWyI9PT1sJiZyKzI9PT1pKXtwbXQobix2b2lkIDA9PT1sP25ldyBzbXQocyx0LGUpOm5ldyBsbXQocyx0LGUpKTticmVha317bGV0IHQ9bi5tYXBbc107dm9pZCAwPT09dCYmKHQ9bmV3IGNtdChzKSxwbXQobix0KSksbj10fX19ZnVuY3Rpb24gdW10KHQsZSl7dGhpcy5zZXE9W10sdGhpcy5tYXA9e307Y29uc3Qgbj10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSwzNTcxOCk7Zm9yKGxldCBvPTA7bzxuOysrbyl7Y29uc3Qgbj10LmdldEFjdGl2ZVVuaWZvcm0oZSxvKTttbXQobix0LmdldFVuaWZvcm1Mb2NhdGlvbihlLG4ubmFtZSksdGhpcyl9fWZ1bmN0aW9uIGZtdCh0LGUsbil7Y29uc3Qgbz10LmNyZWF0ZVNoYWRlcihlKTtyZXR1cm4gdC5zaGFkZXJTb3VyY2UobyxuKSx0LmNvbXBpbGVTaGFkZXIobyksb311bXQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5tYXBbZV07dm9pZCAwIT09aSYmaS5zZXRWYWx1ZSh0LG4sbyl9LHVtdC5wcm90b3R5cGUuc2V0T3B0aW9uYWw9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IG89ZVtuXTt2b2lkIDAhPT1vJiZ0aGlzLnNldFZhbHVlKHQsbixvKX0sdW10LnVwbG9hZD1mdW5jdGlvbih0LGUsbixvKXtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2khPT1hOysraSl7Y29uc3QgYT1lW2ldLHI9blthLmlkXTshMSE9PXIubmVlZHNVcGRhdGUmJmEuc2V0VmFsdWUodCxyLnZhbHVlLG8pfX0sdW10LnNlcVdpdGhWYWx1ZT1mdW5jdGlvbih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBvPTAsaT10Lmxlbmd0aDtvIT09aTsrK28pe2NvbnN0IGk9dFtvXTtpLmlkIGluIGUmJm4ucHVzaChpKX1yZXR1cm4gbn07bGV0IGdtdD0wO2Z1bmN0aW9uIGhtdCh0LGUsbil7Y29uc3Qgbz10LmdldFNoYWRlclBhcmFtZXRlcihlLDM1NzEzKSxpPXQuZ2V0U2hhZGVySW5mb0xvZyhlKS50cmltKCk7cmV0dXJuIG8mJiIiPT09aT8iIjpuLnRvVXBwZXJDYXNlKCkrIlxuXG4iK2krIlxuXG4iKyhmdW5jdGlvbiBhKHQpe2NvbnN0IGU9dC5zcGxpdCgiXG4iKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdPXQrMSsiOiAiK2VbdF07cmV0dXJuIGUuam9pbigiXG4iKX0pKHQuZ2V0U2hhZGVyU291cmNlKGUpKX1mdW5jdGlvbiBibXQodCxlKXtjb25zdCBuPShmdW5jdGlvbiBvKHQpe3N3aXRjaCh0KXtjYXNlIHZzdDpyZXR1cm5bIkxpbmVhciIsIiggdmFsdWUgKSJdO2Nhc2UgeHN0OnJldHVyblsic1JHQiIsIiggdmFsdWUgKSJdO2RlZmF1bHQ6cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBVbnN1cHBvcnRlZCBlbmNvZGluZzoiLHQpLFsiTGluZWFyIiwiKCB2YWx1ZSApIl19fSkoZSk7cmV0dXJuInZlYzQgIit0KyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiBMaW5lYXJUbyIrblswXStuWzFdKyI7IH0ifWZ1bmN0aW9uIHltdCh0LGUpe2xldCBuO3N3aXRjaChlKXtjYXNlIDE6bj0iTGluZWFyIjticmVhaztjYXNlIDI6bj0iUmVpbmhhcmQiO2JyZWFrO2Nhc2UgMzpuPSJPcHRpbWl6ZWRDaW5lb24iO2JyZWFrO2Nhc2UgNDpuPSJBQ0VTRmlsbWljIjticmVhaztjYXNlIDU6bj0iQ3VzdG9tIjticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBVbnN1cHBvcnRlZCB0b25lTWFwcGluZzoiLGUpLG49IkxpbmVhciJ9cmV0dXJuInZlYzMgIit0KyIoIHZlYzMgY29sb3IgKSB7IHJldHVybiAiK24rIlRvbmVNYXBwaW5nKCBjb2xvciApOyB9In1mdW5jdGlvbiBfbXQodCl7cmV0dXJuIiIhPT10fWZ1bmN0aW9uIENtdCh0LGUpe3JldHVybiB0LnJlcGxhY2UoL05VTV9ESVJfTElHSFRTL2csZS5udW1EaXJMaWdodHMpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUUy9nLGUubnVtU3BvdExpZ2h0cykucmVwbGFjZSgvTlVNX1JFQ1RfQVJFQV9MSUdIVFMvZyxlLm51bVJlY3RBcmVhTGlnaHRzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRTL2csZS5udW1Qb2ludExpZ2h0cykucmVwbGFjZSgvTlVNX0hFTUlfTElHSFRTL2csZS5udW1IZW1pTGlnaHRzKS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUX1NIQURPV1MvZyxlLm51bURpckxpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRfU0hBRE9XUy9nLGUubnVtU3BvdExpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MvZyxlLm51bVBvaW50TGlnaHRTaGFkb3dzKX1mdW5jdGlvbiBNbXQodCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9OVU1fQ0xJUFBJTkdfUExBTkVTL2csZS5udW1DbGlwcGluZ1BsYW5lcykucmVwbGFjZSgvVU5JT05fQ0xJUFBJTkdfUExBTkVTL2csZS5udW1DbGlwcGluZ1BsYW5lcy1lLm51bUNsaXBJbnRlcnNlY3Rpb24pfWNvbnN0IHZtdD0vXlsgXHRdKiNpbmNsdWRlICs8KFtcd1xkLi9dKyk+L2dtO2Z1bmN0aW9uIHhtdCh0KXtyZXR1cm4gdC5yZXBsYWNlKHZtdCxPbXQpfWZ1bmN0aW9uIE9tdCh0LGUpe2NvbnN0IG49TWR0W2VdO2lmKHZvaWQgMD09PW4pdGhyb3cgbmV3IEVycm9yKCJDYW4gbm90IHJlc29sdmUgI2luY2x1ZGUgPCIrZSsiPiIpO3JldHVybiB4bXQobil9Y29uc3QgUG10PS8jcHJhZ21hIHVucm9sbF9sb29wW1xzXSs/Zm9yIFwoIGludCBpIFw9IChcZCspXDsgaSA8IChcZCspXDsgaSBcK1wrIFwpIFx7KFtcc1xTXSs/KSg/PVx9KVx9L2csd210PS8jcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XHMrZm9yXHMqXChccyppbnRccytpXHMqPVxzKihcZCspXHMqO1xzKmlccyo8XHMqKFxkKylccyo7XHMqaVxzKlwrXCtccypcKVxzKnsoW1xzXFNdKz8pfVxzKyNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kL2c7ZnVuY3Rpb24ga210KHQpe3JldHVybiB0LnJlcGxhY2Uod210LERtdCkucmVwbGFjZShQbXQsU210KX1mdW5jdGlvbiBTbXQodCxlLG4sbyl7cmV0dXJuIGNvbnNvbGUud2FybigiV2ViR0xQcm9ncmFtOiAjcHJhZ21hIHVucm9sbF9sb29wIHNoYWRlciBzeW50YXggaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0IHN5bnRheCBpbnN0ZWFkLiIpLERtdCh0LGUsbixvKX1mdW5jdGlvbiBEbXQodCxlLG4sbyl7bGV0IGk9IiI7Zm9yKGxldCB0PXBhcnNlSW50KGUpO3Q8cGFyc2VJbnQobik7dCsrKWkrPW8ucmVwbGFjZSgvXFtccyppXHMqXF0vZywiWyAiK3QrIiBdIikucmVwbGFjZSgvVU5ST0xMRURfTE9PUF9JTkRFWC9nLHQpO3JldHVybiBpfWZ1bmN0aW9uIFJtdCh0KXtsZXQgZT0icHJlY2lzaW9uICIrdC5wcmVjaXNpb24rIiBmbG9hdDtcbnByZWNpc2lvbiAiK3QucHJlY2lzaW9uKyIgaW50OyI7cmV0dXJuImhpZ2hwIj09PXQucHJlY2lzaW9uP2UrPSJcbiNkZWZpbmUgSElHSF9QUkVDSVNJT04iOiJtZWRpdW1wIj09PXQucHJlY2lzaW9uP2UrPSJcbiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiI6Imxvd3AiPT09dC5wcmVjaXNpb24mJihlKz0iXG4jZGVmaW5lIExPV19QUkVDSVNJT04iKSxlfWZ1bmN0aW9uIEVtdCh0LGUsbixvKXtjb25zdCBpPXQuZ2V0Q29udGV4dCgpLGE9bi5kZWZpbmVzO2xldCByPW4udmVydGV4U2hhZGVyLHM9bi5mcmFnbWVudFNoYWRlcjtjb25zdCBsPShmdW5jdGlvbiBjKHQpe2xldCBlPSJTSEFET1dNQVBfVFlQRV9CQVNJQyI7cmV0dXJuIDE9PT10LnNoYWRvd01hcFR5cGU/ZT0iU0hBRE9XTUFQX1RZUEVfUENGIjoyPT09dC5zaGFkb3dNYXBUeXBlP2U9IlNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIjozPT09dC5zaGFkb3dNYXBUeXBlJiYoZT0iU0hBRE9XTUFQX1RZUEVfVlNNIiksZX0pKG4pLGQ9KGZ1bmN0aW9uIHAodCl7bGV0IGU9IkVOVk1BUF9UWVBFX0NVQkUiO2lmKHQuZW52TWFwKXN3aXRjaCh0LmVudk1hcE1vZGUpe2Nhc2UgcXJ0OmNhc2UgWnJ0OmU9IkVOVk1BUF9UWVBFX0NVQkUiO2JyZWFrO2Nhc2UgWHJ0OmNhc2UgMzA3OmU9IkVOVk1BUF9UWVBFX0NVQkVfVVYifXJldHVybiBlfSkobiksbT0oZnVuY3Rpb24gdSh0KXtsZXQgZT0iRU5WTUFQX01PREVfUkVGTEVDVElPTiI7aWYodC5lbnZNYXApc3dpdGNoKHQuZW52TWFwTW9kZSl7Y2FzZSBacnQ6Y2FzZSAzMDc6ZT0iRU5WTUFQX01PREVfUkVGUkFDVElPTiJ9cmV0dXJuIGV9KShuKSxmPShmdW5jdGlvbiBnKHQpe2xldCBlPSJFTlZNQVBfQkxFTkRJTkdfTk9ORSI7aWYodC5lbnZNYXApc3dpdGNoKHQuY29tYmluZSl7Y2FzZSAwOmU9IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7YnJlYWs7Y2FzZSAxOmU9IkVOVk1BUF9CTEVORElOR19NSVgiO2JyZWFrO2Nhc2UgMjplPSJFTlZNQVBfQkxFTkRJTkdfQUREIn1yZXR1cm4gZX0pKG4pLGg9bi5pc1dlYkdMMj8iIjooZnVuY3Rpb24gYih0KXtyZXR1cm5bdC5leHRlbnNpb25EZXJpdmF0aXZlc3x8dC5lbnZNYXBDdWJlVVZ8fHQuYnVtcE1hcHx8dC50YW5nZW50U3BhY2VOb3JtYWxNYXB8fHQuY2xlYXJjb2F0Tm9ybWFsTWFwfHx0LmZsYXRTaGFkaW5nfHwicGh5c2ljYWwiPT09dC5zaGFkZXJJRD8iI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUiOiIiLCh0LmV4dGVuc2lvbkZyYWdEZXB0aHx8dC5sb2dhcml0aG1pY0RlcHRoQnVmZmVyKSYmdC5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2V4dGVuc2lvbiBHTF9FWFRfZnJhZ19kZXB0aCA6IGVuYWJsZSI6IiIsdC5leHRlbnNpb25EcmF3QnVmZmVycyYmdC5yZW5kZXJlckV4dGVuc2lvbkRyYXdCdWZmZXJzPyIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlIjoiIiwodC5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHx0LmVudk1hcHx8dC50cmFuc21pc3Npb24pJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2V4dGVuc2lvbiBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIDogZW5hYmxlIjoiIl0uZmlsdGVyKF9tdCkuam9pbigiXG4iKX0pKG4pLHk9KGZ1bmN0aW9uIF8odCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPXRbbl07ITEhPT1vJiZlLnB1c2goIiNkZWZpbmUgIituKyIgIitvKX1yZXR1cm4gZS5qb2luKCJcbiIpfSkoYSksQz1pLmNyZWF0ZVByb2dyYW0oKTtsZXQgTSx2LHg9bi5nbHNsVmVyc2lvbj8iI3ZlcnNpb24gIituLmdsc2xWZXJzaW9uKyJcbiI6IiI7bi5pc1Jhd1NoYWRlck1hdGVyaWFsPyhNPVt5XS5maWx0ZXIoX210KS5qb2luKCJcbiIpLE0ubGVuZ3RoPjAmJihNKz0iXG4iKSx2PVtoLHldLmZpbHRlcihfbXQpLmpvaW4oIlxuIiksdi5sZW5ndGg+MCYmKHYrPSJcbiIpKTooTT1bUm10KG4pLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrbi5zaGFkZXJOYW1lLHksbi5pbnN0YW5jaW5nPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HIjoiIixuLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfSU5TVEFOQ0lOR19DT0xPUiI6IiIsbi5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFZFUlRFWF9URVhUVVJFUyI6IiIsIiNkZWZpbmUgTUFYX0JPTkVTICIrbi5tYXhCb25lcyxuLnVzZUZvZyYmbi5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsbi51c2VGb2cmJm4uZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsbi5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIittOiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLmRpc3BsYWNlbWVudE1hcCYmbi5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFVTRV9ESVNQTEFDRU1FTlRNQVAiOiIiLG4uc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixuLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsbi5zcGVjdWxhckNvbG9yTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUkNPTE9STUFQIjoiIixuLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixuLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixuLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsbi50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsbi5zaGVlbkNvbG9yTWFwPyIjZGVmaW5lIFVTRV9TSEVFTkNPTE9STUFQIjoiIixuLnNoZWVuUm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9TSEVFTlJPVUdITkVTU01BUCI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnM/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixuLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLG4udmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsbi51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsbi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsbi5za2lubmluZz8iI2RlZmluZSBVU0VfU0tJTk5JTkciOiIiLG4udXNlVmVydGV4VGV4dHVyZT8iI2RlZmluZSBCT05FX1RFWFRVUkUiOiIiLG4ubW9ycGhUYXJnZXRzPyIjZGVmaW5lIFVTRV9NT1JQSFRBUkdFVFMiOiIiLG4ubW9ycGhOb3JtYWxzJiYhMT09PW4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgVVNFX01PUlBITk9STUFMUyI6IiIsbi5tb3JwaFRhcmdldHMmJm4uaXNXZWJHTDI/IiNkZWZpbmUgTU9SUEhUQVJHRVRTX1RFWFRVUkUiOiIiLG4ubW9ycGhUYXJnZXRzJiZuLmlzV2ViR0wyPyIjZGVmaW5lIE1PUlBIVEFSR0VUU19DT1VOVCAiK24ubW9ycGhUYXJnZXRzQ291bnQ6IiIsbi5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLG4uZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitsOiIiLG4uc2l6ZUF0dGVudWF0aW9uPyIjZGVmaW5lIFVTRV9TSVpFQVRURU5VQVRJT04iOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmbi5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4OyIsInVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lORyIsIlx0YXR0cmlidXRlIG1hdDQgaW5zdGFuY2VNYXRyaXg7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SIiwiXHRhdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZUNvbG9yOyIsIiNlbmRpZiIsImF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uOyIsImF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDsiLCJhdHRyaWJ1dGUgdmVjMiB1djsiLCIjaWZkZWYgVVNFX1RBTkdFTlQiLCJcdGF0dHJpYnV0ZSB2ZWM0IHRhbmdlbnQ7IiwiI2VuZGlmIiwiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApIiwiXHRhdHRyaWJ1dGUgdmVjNCBjb2xvcjsiLCIjZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSIsIlx0YXR0cmlidXRlIHZlYzMgY29sb3I7IiwiI2VuZGlmIiwiI2lmICggZGVmaW5lZCggVVNFX01PUlBIVEFSR0VUUyApICYmICEgZGVmaW5lZCggTU9SUEhUQVJHRVRTX1RFWFRVUkUgKSApIiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDA7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDI7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDM7IiwiXHQjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDA7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwyOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDM7IiwiXHQjZWxzZSIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDQ7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ2OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDc7IiwiXHQjZW5kaWYiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX1NLSU5OSU5HIiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luSW5kZXg7IiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luV2VpZ2h0OyIsIiNlbmRpZiIsIlxuIl0uZmlsdGVyKF9tdCkuam9pbigiXG4iKSx2PVtoLFJtdChuKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK24uc2hhZGVyTmFtZSx5LG4udXNlRm9nJiZuLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixuLnVzZUZvZyYmbi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixuLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixuLm1hdGNhcD8iI2RlZmluZSBVU0VfTUFUQ0FQIjoiIixuLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSAiK2Q6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIittOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZjoiIixuLmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsbi5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLG4uZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIixuLmJ1bXBNYXA/IiNkZWZpbmUgVVNFX0JVTVBNQVAiOiIiLG4ubm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLm9iamVjdFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIE9CSkVDVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4udGFuZ2VudFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAiOiIiLG4uY2xlYXJjb2F0PyIjZGVmaW5lIFVTRV9DTEVBUkNPQVQiOiIiLG4uY2xlYXJjb2F0TWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRNQVAiOiIiLG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQIjoiIixuLmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsbi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQIjoiIixuLnNwZWN1bGFyQ29sb3JNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSQ09MT1JNQVAiOiIiLG4ucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLG4ubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLG4uYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixuLmFscGhhVGVzdD8iI2RlZmluZSBVU0VfQUxQSEFURVNUIjoiIixuLnNoZWVuPyIjZGVmaW5lIFVTRV9TSEVFTiI6IiIsbi5zaGVlbkNvbG9yTWFwPyIjZGVmaW5lIFVTRV9TSEVFTkNPTE9STUFQIjoiIixuLnNoZWVuUm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9TSEVFTlJPVUdITkVTU01BUCI6IiIsbi50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsbi5kZWNvZGVWaWRlb1RleHR1cmU/IiNkZWZpbmUgREVDT0RFX1ZJREVPX1RFWFRVUkUiOiIiLG4udmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLG4udmVydGV4Q29sb3JzfHxuLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLG4udmVydGV4QWxwaGFzPyIjZGVmaW5lIFVTRV9DT0xPUl9BTFBIQSI6IiIsbi52ZXJ0ZXhVdnM/IiNkZWZpbmUgVVNFX1VWIjoiIixuLnV2c1ZlcnRleE9ubHk/IiNkZWZpbmUgVVZTX1ZFUlRFWF9PTkxZIjoiIixuLmdyYWRpZW50TWFwPyIjZGVmaW5lIFVTRV9HUkFESUVOVE1BUCI6IiIsbi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsbi5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLG4uZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitsOiIiLG4ucHJlbXVsdGlwbGllZEFscGhhPyIjZGVmaW5lIFBSRU1VTFRJUExJRURfQUxQSEEiOiIiLG4ucGh5c2ljYWxseUNvcnJlY3RMaWdodHM/IiNkZWZpbmUgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRl9FWFQiOiIiLChuLmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fG4uZW52TWFwKSYmbi5yZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q/IiNkZWZpbmUgVEVYVFVSRV9MT0RfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLDAhPT1uLnRvbmVNYXBwaW5nPyIjZGVmaW5lIFRPTkVfTUFQUElORyI6IiIsMCE9PW4udG9uZU1hcHBpbmc/TWR0LnRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiIsMCE9PW4udG9uZU1hcHBpbmc/eW10KCJ0b25lTWFwcGluZyIsbi50b25lTWFwcGluZyk6IiIsbi5kaXRoZXJpbmc/IiNkZWZpbmUgRElUSEVSSU5HIjoiIixuLmFscGhhV3JpdGU/IiI6IiNkZWZpbmUgT1BBUVVFIixNZHQuZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQsYm10KCJsaW5lYXJUb091dHB1dFRleGVsIixuLm91dHB1dEVuY29kaW5nKSxuLmRlcHRoUGFja2luZz8iI2RlZmluZSBERVBUSF9QQUNLSU5HICIrbi5kZXB0aFBhY2tpbmc6IiIsIlxuIl0uZmlsdGVyKF9tdCkuam9pbigiXG4iKSkscj14bXQocikscj1DbXQocixuKSxyPU1tdChyLG4pLHM9eG10KHMpLHM9Q210KHMsbikscz1NbXQocyxuKSxyPWttdChyKSxzPWttdChzKSxuLmlzV2ViR0wyJiYhMCE9PW4uaXNSYXdTaGFkZXJNYXRlcmlhbCYmKHg9IiN2ZXJzaW9uIDMwMCBlc1xuIixNPVsicHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEQXJyYXk7IiwiI2RlZmluZSBhdHRyaWJ1dGUgaW4iLCIjZGVmaW5lIHZhcnlpbmcgb3V0IiwiI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZSJdLmpvaW4oIlxuIikrIlxuIitNLHY9WyIjZGVmaW5lIHZhcnlpbmcgaW4iLG4uZ2xzbFZlcnNpb249PT1rc3Q/IiI6ImxheW91dChsb2NhdGlvbiA9IDApIG91dCBoaWdocCB2ZWM0IHBjX2ZyYWdDb2xvcjsiLG4uZ2xzbFZlcnNpb249PT1rc3Q/IiI6IiNkZWZpbmUgZ2xfRnJhZ0NvbG9yIHBjX2ZyYWdDb2xvciIsIiNkZWZpbmUgZ2xfRnJhZ0RlcHRoRVhUIGdsX0ZyYWdEZXB0aCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmVDdWJlIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmUyRFByb2ogdGV4dHVyZVByb2oiLCIjZGVmaW5lIHRleHR1cmUyRExvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qTG9kRVhUIHRleHR1cmVQcm9qTG9kIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUxvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRHcmFkRVhUIHRleHR1cmVHcmFkIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qR3JhZEVYVCB0ZXh0dXJlUHJvakdyYWQiLCIjZGVmaW5lIHRleHR1cmVDdWJlR3JhZEVYVCB0ZXh0dXJlR3JhZCJdLmpvaW4oIlxuIikrIlxuIit2KTtjb25zdCBPPXgrditzLFA9Zm10KGksMzU2MzMseCtNK3IpLHc9Zm10KGksMzU2MzIsTyk7aWYoaS5hdHRhY2hTaGFkZXIoQyxQKSxpLmF0dGFjaFNoYWRlcihDLHcpLHZvaWQgMCE9PW4uaW5kZXgwQXR0cmlidXRlTmFtZT9pLmJpbmRBdHRyaWJMb2NhdGlvbihDLDAsbi5pbmRleDBBdHRyaWJ1dGVOYW1lKTohMD09PW4ubW9ycGhUYXJnZXRzJiZpLmJpbmRBdHRyaWJMb2NhdGlvbihDLDAsInBvc2l0aW9uIiksaS5saW5rUHJvZ3JhbShDKSx0LmRlYnVnLmNoZWNrU2hhZGVyRXJyb3JzKXtjb25zdCB0PWkuZ2V0UHJvZ3JhbUluZm9Mb2coQykudHJpbSgpLGU9aS5nZXRTaGFkZXJJbmZvTG9nKFApLnRyaW0oKSxuPWkuZ2V0U2hhZGVySW5mb0xvZyh3KS50cmltKCk7bGV0IG89ITAsYT0hMDtpZighMT09PWkuZ2V0UHJvZ3JhbVBhcmFtZXRlcihDLDM1NzE0KSl7bz0hMTtjb25zdCBlPWhtdChpLFAsInZlcnRleCIpLG49aG10KGksdywiZnJhZ21lbnQiKTtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFByb2dyYW06IFNoYWRlciBFcnJvciAiK2kuZ2V0RXJyb3IoKSsiIC0gVkFMSURBVEVfU1RBVFVTICIraS5nZXRQcm9ncmFtUGFyYW1ldGVyKEMsMzU3MTUpKyJcblxuUHJvZ3JhbSBJbmZvIExvZzogIit0KyJcbiIrZSsiXG4iK24pfWVsc2UiIiE9PXQ/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFByb2dyYW0gSW5mbyBMb2c6Iix0KToiIiE9PWUmJiIiIT09bnx8KGE9ITEpO2EmJih0aGlzLmRpYWdub3N0aWNzPXtydW5uYWJsZTpvLHByb2dyYW1Mb2c6dCx2ZXJ0ZXhTaGFkZXI6e2xvZzplLHByZWZpeDpNfSxmcmFnbWVudFNoYWRlcjp7bG9nOm4scHJlZml4OnZ9fSl9bGV0IGssUztyZXR1cm4gaS5kZWxldGVTaGFkZXIoUCksaS5kZWxldGVTaGFkZXIodyksdGhpcy5nZXRVbmlmb3Jtcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1rJiYoaz1uZXcgdW10KGksQykpLGt9LHRoaXMuZ2V0QXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1TJiYoUz0oZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89e30saT1lLmdldFByb2dyYW1QYXJhbWV0ZXIobiwzNTcyMSk7Zm9yKGxldCB0PTA7dDxpO3QrKyl7Y29uc3QgaT1lLmdldEFjdGl2ZUF0dHJpYihuLHQpLGE9aS5uYW1lO2xldCByPTE7MzU2NzQ9PT1pLnR5cGUmJihyPTIpLDM1Njc1PT09aS50eXBlJiYocj0zKSwzNTY3Nj09PWkudHlwZSYmKHI9NCksb1thXT17dHlwZTppLnR5cGUsbG9jYXRpb246ZS5nZXRBdHRyaWJMb2NhdGlvbihuLGEpLGxvY2F0aW9uU2l6ZTpyfX1yZXR1cm4gb30pKGksQykpLFN9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe28ucmVsZWFzZVN0YXRlc09mUHJvZ3JhbSh0aGlzKSxpLmRlbGV0ZVByb2dyYW0oQyksdGhpcy5wcm9ncmFtPXZvaWQgMH0sdGhpcy5uYW1lPW4uc2hhZGVyTmFtZSx0aGlzLmlkPWdtdCsrLHRoaXMuY2FjaGVLZXk9ZSx0aGlzLnVzZWRUaW1lcz0xLHRoaXMucHJvZ3JhbT1DLHRoaXMudmVydGV4U2hhZGVyPVAsdGhpcy5mcmFnbWVudFNoYWRlcj13LHRoaXN9bGV0IEFtdD0wO2NsYXNzIFRtdHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2hhZGVyQ2FjaGU9bmV3IE1hcCx0aGlzLm1hdGVyaWFsQ2FjaGU9bmV3IE1hcH11cGRhdGUodCl7Y29uc3QgZT10LmZyYWdtZW50U2hhZGVyLG49dGhpcy5fZ2V0U2hhZGVyU3RhZ2UodC52ZXJ0ZXhTaGFkZXIpLG89dGhpcy5fZ2V0U2hhZGVyU3RhZ2UoZSksaT10aGlzLl9nZXRTaGFkZXJDYWNoZUZvck1hdGVyaWFsKHQpO3JldHVybiExPT09aS5oYXMobikmJihpLmFkZChuKSxuLnVzZWRUaW1lcysrKSwhMT09PWkuaGFzKG8pJiYoaS5hZGQobyksby51c2VkVGltZXMrKyksdGhpc31yZW1vdmUodCl7Y29uc3QgZT10aGlzLm1hdGVyaWFsQ2FjaGUuZ2V0KHQpO2Zvcihjb25zdCB0IG9mIGUpdC51c2VkVGltZXMtLSwwPT09dC51c2VkVGltZXMmJnRoaXMuc2hhZGVyQ2FjaGUuZGVsZXRlKHQpO3JldHVybiB0aGlzLm1hdGVyaWFsQ2FjaGUuZGVsZXRlKHQpLHRoaXN9Z2V0VmVydGV4U2hhZGVySUQodCl7cmV0dXJuIHRoaXMuX2dldFNoYWRlclN0YWdlKHQudmVydGV4U2hhZGVyKS5pZH1nZXRGcmFnbWVudFNoYWRlcklEKHQpe3JldHVybiB0aGlzLl9nZXRTaGFkZXJTdGFnZSh0LmZyYWdtZW50U2hhZGVyKS5pZH1kaXNwb3NlKCl7dGhpcy5zaGFkZXJDYWNoZS5jbGVhcigpLHRoaXMubWF0ZXJpYWxDYWNoZS5jbGVhcigpfV9nZXRTaGFkZXJDYWNoZUZvck1hdGVyaWFsKHQpe2NvbnN0IGU9dGhpcy5tYXRlcmlhbENhY2hlO3JldHVybiExPT09ZS5oYXModCkmJmUuc2V0KHQsbmV3IFNldCksZS5nZXQodCl9X2dldFNoYWRlclN0YWdlKHQpe2NvbnN0IGU9dGhpcy5zaGFkZXJDYWNoZTtpZighMT09PWUuaGFzKHQpKXtjb25zdCBuPW5ldyBObXQ7ZS5zZXQodCxuKX1yZXR1cm4gZS5nZXQodCl9fWNsYXNzIE5tdHtjb25zdHJ1Y3Rvcigpe3RoaXMuaWQ9QW10KyssdGhpcy51c2VkVGltZXM9MH19ZnVuY3Rpb24gem10KHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9bmV3IFlsdCxsPW5ldyBUbXQsYz1bXSxkPWkuaXNXZWJHTDIscD1pLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsbT1pLmZsb2F0VmVydGV4VGV4dHVyZXMsdT1pLm1heFZlcnRleFVuaWZvcm1zLGY9aS52ZXJ0ZXhUZXh0dXJlcztsZXQgZz1pLnByZWNpc2lvbjtjb25zdCBoPXtNZXNoRGVwdGhNYXRlcmlhbDoiZGVwdGgiLE1lc2hEaXN0YW5jZU1hdGVyaWFsOiJkaXN0YW5jZVJHQkEiLE1lc2hOb3JtYWxNYXRlcmlhbDoibm9ybWFsIixNZXNoQmFzaWNNYXRlcmlhbDoiYmFzaWMiLE1lc2hMYW1iZXJ0TWF0ZXJpYWw6ImxhbWJlcnQiLE1lc2hQaG9uZ01hdGVyaWFsOiJwaG9uZyIsTWVzaFRvb25NYXRlcmlhbDoidG9vbiIsTWVzaFN0YW5kYXJkTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoUGh5c2ljYWxNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hNYXRjYXBNYXRlcmlhbDoibWF0Y2FwIixMaW5lQmFzaWNNYXRlcmlhbDoiYmFzaWMiLExpbmVEYXNoZWRNYXRlcmlhbDoiZGFzaGVkIixQb2ludHNNYXRlcmlhbDoicG9pbnRzIixTaGFkb3dNYXRlcmlhbDoic2hhZG93IixTcHJpdGVNYXRlcmlhbDoic3ByaXRlIn07cmV0dXJue2dldFBhcmFtZXRlcnM6ZnVuY3Rpb24gYihhLHMsYyx5LF8pe2NvbnN0IEM9eS5mb2csTT0oYS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP246ZSkuZ2V0KGEuZW52TWFwfHwoYS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP3kuZW52aXJvbm1lbnQ6bnVsbCkpLHY9aFthLnR5cGVdLHg9Xy5pc1NraW5uZWRNZXNoPyhmdW5jdGlvbiBPKHQpe2NvbnN0IGU9dC5za2VsZXRvbi5ib25lcztpZihtKXJldHVybiAxMDI0O3tjb25zdCB0PU1hdGguZmxvb3IoKHUtMjApLzQpLG49TWF0aC5taW4odCxlLmxlbmd0aCk7cmV0dXJuIG48ZS5sZW5ndGg/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogU2tlbGV0b24gaGFzICIrZS5sZW5ndGgrIiBib25lcy4gVGhpcyBHUFUgc3VwcG9ydHMgIituKyIuIiksMCk6bn19KShfKTowO2xldCBQLHcsayxTO2lmKG51bGwhPT1hLnByZWNpc2lvbiYmKGc9aS5nZXRNYXhQcmVjaXNpb24oYS5wcmVjaXNpb24pLGchPT1hLnByZWNpc2lvbiYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW0uZ2V0UGFyYW1ldGVyczoiLGEucHJlY2lzaW9uLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIsZywiaW5zdGVhZC4iKSksdil7Y29uc3QgdD14ZHRbdl07UD10LnZlcnRleFNoYWRlcix3PXQuZnJhZ21lbnRTaGFkZXJ9ZWxzZSBQPWEudmVydGV4U2hhZGVyLHc9YS5mcmFnbWVudFNoYWRlcixsLnVwZGF0ZShhKSxrPWwuZ2V0VmVydGV4U2hhZGVySUQoYSksUz1sLmdldEZyYWdtZW50U2hhZGVySUQoYSk7Y29uc3QgRD10LmdldFJlbmRlclRhcmdldCgpLFI9YS5jbGVhcmNvYXQ+MDtyZXR1cm57aXNXZWJHTDI6ZCxzaGFkZXJJRDp2LHNoYWRlck5hbWU6YS50eXBlLHZlcnRleFNoYWRlcjpQLGZyYWdtZW50U2hhZGVyOncsZGVmaW5lczphLmRlZmluZXMsY3VzdG9tVmVydGV4U2hhZGVySUQ6ayxjdXN0b21GcmFnbWVudFNoYWRlcklEOlMsaXNSYXdTaGFkZXJNYXRlcmlhbDohMD09PWEuaXNSYXdTaGFkZXJNYXRlcmlhbCxnbHNsVmVyc2lvbjphLmdsc2xWZXJzaW9uLHByZWNpc2lvbjpnLGluc3RhbmNpbmc6ITA9PT1fLmlzSW5zdGFuY2VkTWVzaCxpbnN0YW5jaW5nQ29sb3I6ITA9PT1fLmlzSW5zdGFuY2VkTWVzaCYmbnVsbCE9PV8uaW5zdGFuY2VDb2xvcixzdXBwb3J0c1ZlcnRleFRleHR1cmVzOmYsb3V0cHV0RW5jb2Rpbmc6bnVsbD09PUQ/dC5vdXRwdXRFbmNvZGluZzohMD09PUQuaXNYUlJlbmRlclRhcmdldD9ELnRleHR1cmUuZW5jb2Rpbmc6dnN0LG1hcDohIWEubWFwLG1hdGNhcDohIWEubWF0Y2FwLGVudk1hcDohIU0sZW52TWFwTW9kZTpNJiZNLm1hcHBpbmcsZW52TWFwQ3ViZVVWOiEhTSYmKE0ubWFwcGluZz09PVhydHx8MzA3PT09TS5tYXBwaW5nKSxsaWdodE1hcDohIWEubGlnaHRNYXAsYW9NYXA6ISFhLmFvTWFwLGVtaXNzaXZlTWFwOiEhYS5lbWlzc2l2ZU1hcCxidW1wTWFwOiEhYS5idW1wTWFwLG5vcm1hbE1hcDohIWEubm9ybWFsTWFwLG9iamVjdFNwYWNlTm9ybWFsTWFwOjE9PT1hLm5vcm1hbE1hcFR5cGUsdGFuZ2VudFNwYWNlTm9ybWFsTWFwOjA9PT1hLm5vcm1hbE1hcFR5cGUsZGVjb2RlVmlkZW9UZXh0dXJlOiEhYS5tYXAmJiEwPT09YS5tYXAuaXNWaWRlb1RleHR1cmUmJmEubWFwLmVuY29kaW5nPT09eHN0LGNsZWFyY29hdDpSLGNsZWFyY29hdE1hcDpSJiYhIWEuY2xlYXJjb2F0TWFwLGNsZWFyY29hdFJvdWdobmVzc01hcDpSJiYhIWEuY2xlYXJjb2F0Um91Z2huZXNzTWFwLGNsZWFyY29hdE5vcm1hbE1hcDpSJiYhIWEuY2xlYXJjb2F0Tm9ybWFsTWFwLGRpc3BsYWNlbWVudE1hcDohIWEuZGlzcGxhY2VtZW50TWFwLHJvdWdobmVzc01hcDohIWEucm91Z2huZXNzTWFwLG1ldGFsbmVzc01hcDohIWEubWV0YWxuZXNzTWFwLHNwZWN1bGFyTWFwOiEhYS5zcGVjdWxhck1hcCxzcGVjdWxhckludGVuc2l0eU1hcDohIWEuc3BlY3VsYXJJbnRlbnNpdHlNYXAsc3BlY3VsYXJDb2xvck1hcDohIWEuc3BlY3VsYXJDb2xvck1hcCxhbHBoYU1hcDohIWEuYWxwaGFNYXAsYWxwaGFUZXN0OmEuYWxwaGFUZXN0PjAsYWxwaGFXcml0ZTphLmFscGhhV3JpdGV8fGEudHJhbnNwYXJlbnQsZ3JhZGllbnRNYXA6ISFhLmdyYWRpZW50TWFwLHNoZWVuOmEuc2hlZW4+MCxzaGVlbkNvbG9yTWFwOiEhYS5zaGVlbkNvbG9yTWFwLHNoZWVuUm91Z2huZXNzTWFwOiEhYS5zaGVlblJvdWdobmVzc01hcCx0cmFuc21pc3Npb246YS50cmFuc21pc3Npb24+MCx0cmFuc21pc3Npb25NYXA6ISFhLnRyYW5zbWlzc2lvbk1hcCx0aGlja25lc3NNYXA6ISFhLnRoaWNrbmVzc01hcCxjb21iaW5lOmEuY29tYmluZSx2ZXJ0ZXhUYW5nZW50czohIWEubm9ybWFsTWFwJiYhIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsdmVydGV4Q29sb3JzOmEudmVydGV4Q29sb3JzLHZlcnRleEFscGhhczohMD09PWEudmVydGV4Q29sb3JzJiYhIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yJiY0PT09Xy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplLHZlcnRleFV2czohIShhLm1hcHx8YS5idW1wTWFwfHxhLm5vcm1hbE1hcHx8YS5zcGVjdWxhck1hcHx8YS5hbHBoYU1hcHx8YS5lbWlzc2l2ZU1hcHx8YS5yb3VnaG5lc3NNYXB8fGEubWV0YWxuZXNzTWFwfHxhLmNsZWFyY29hdE1hcHx8YS5jbGVhcmNvYXRSb3VnaG5lc3NNYXB8fGEuY2xlYXJjb2F0Tm9ybWFsTWFwfHxhLmRpc3BsYWNlbWVudE1hcHx8YS50cmFuc21pc3Npb25NYXB8fGEudGhpY2tuZXNzTWFwfHxhLnNwZWN1bGFySW50ZW5zaXR5TWFwfHxhLnNwZWN1bGFyQ29sb3JNYXB8fGEuc2hlZW5Db2xvck1hcHx8YS5zaGVlblJvdWdobmVzc01hcCksdXZzVmVydGV4T25seTohKGEubWFwfHxhLmJ1bXBNYXB8fGEubm9ybWFsTWFwfHxhLnNwZWN1bGFyTWFwfHxhLmFscGhhTWFwfHxhLmVtaXNzaXZlTWFwfHxhLnJvdWdobmVzc01hcHx8YS5tZXRhbG5lc3NNYXB8fGEuY2xlYXJjb2F0Tm9ybWFsTWFwfHxhLnRyYW5zbWlzc2lvbj4wfHxhLnRyYW5zbWlzc2lvbk1hcHx8YS50aGlja25lc3NNYXB8fGEuc3BlY3VsYXJJbnRlbnNpdHlNYXB8fGEuc3BlY3VsYXJDb2xvck1hcHx8YS5zaGVlbj4wfHxhLnNoZWVuQ29sb3JNYXB8fGEuc2hlZW5Sb3VnaG5lc3NNYXB8fCFhLmRpc3BsYWNlbWVudE1hcCksZm9nOiEhQyx1c2VGb2c6YS5mb2csZm9nRXhwMjpDJiZDLmlzRm9nRXhwMixmbGF0U2hhZGluZzohIWEuZmxhdFNoYWRpbmcsc2l6ZUF0dGVudWF0aW9uOmEuc2l6ZUF0dGVudWF0aW9uLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6cCxza2lubmluZzohMD09PV8uaXNTa2lubmVkTWVzaCYmeD4wLG1heEJvbmVzOngsdXNlVmVydGV4VGV4dHVyZTptLG1vcnBoVGFyZ2V0czohIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbW9ycGhOb3JtYWxzOiEhXy5nZW9tZXRyeSYmISFfLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsbW9ycGhUYXJnZXRzQ291bnQ6Xy5nZW9tZXRyeSYmXy5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24/Xy5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24ubGVuZ3RoOjAsbnVtRGlyTGlnaHRzOnMuZGlyZWN0aW9uYWwubGVuZ3RoLG51bVBvaW50TGlnaHRzOnMucG9pbnQubGVuZ3RoLG51bVNwb3RMaWdodHM6cy5zcG90Lmxlbmd0aCxudW1SZWN0QXJlYUxpZ2h0czpzLnJlY3RBcmVhLmxlbmd0aCxudW1IZW1pTGlnaHRzOnMuaGVtaS5sZW5ndGgsbnVtRGlyTGlnaHRTaGFkb3dzOnMuZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoLG51bVBvaW50TGlnaHRTaGFkb3dzOnMucG9pbnRTaGFkb3dNYXAubGVuZ3RoLG51bVNwb3RMaWdodFNoYWRvd3M6cy5zcG90U2hhZG93TWFwLmxlbmd0aCxudW1DbGlwcGluZ1BsYW5lczpyLm51bVBsYW5lcyxudW1DbGlwSW50ZXJzZWN0aW9uOnIubnVtSW50ZXJzZWN0aW9uLGRpdGhlcmluZzphLmRpdGhlcmluZyxzaGFkb3dNYXBFbmFibGVkOnQuc2hhZG93TWFwLmVuYWJsZWQmJmMubGVuZ3RoPjAsc2hhZG93TWFwVHlwZTp0LnNoYWRvd01hcC50eXBlLHRvbmVNYXBwaW5nOmEudG9uZU1hcHBlZD90LnRvbmVNYXBwaW5nOjAscGh5c2ljYWxseUNvcnJlY3RMaWdodHM6dC5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyxwcmVtdWx0aXBsaWVkQWxwaGE6YS5wcmVtdWx0aXBsaWVkQWxwaGEsZG91YmxlU2lkZWQ6Mj09PWEuc2lkZSxmbGlwU2lkZWQ6MT09PWEuc2lkZSxkZXB0aFBhY2tpbmc6dm9pZCAwIT09YS5kZXB0aFBhY2tpbmcmJmEuZGVwdGhQYWNraW5nLGluZGV4MEF0dHJpYnV0ZU5hbWU6YS5pbmRleDBBdHRyaWJ1dGVOYW1lLGV4dGVuc2lvbkRlcml2YXRpdmVzOmEuZXh0ZW5zaW9ucyYmYS5leHRlbnNpb25zLmRlcml2YXRpdmVzLGV4dGVuc2lvbkZyYWdEZXB0aDphLmV4dGVuc2lvbnMmJmEuZXh0ZW5zaW9ucy5mcmFnRGVwdGgsZXh0ZW5zaW9uRHJhd0J1ZmZlcnM6YS5leHRlbnNpb25zJiZhLmV4dGVuc2lvbnMuZHJhd0J1ZmZlcnMsZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRDphLmV4dGVuc2lvbnMmJmEuZXh0ZW5zaW9ucy5zaGFkZXJUZXh0dXJlTE9ELHJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoOmR8fG8uaGFzKCJFWFRfZnJhZ19kZXB0aCIpLHJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM6ZHx8by5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZDpkfHxvLmhhcygiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpLGN1c3RvbVByb2dyYW1DYWNoZUtleTphLmN1c3RvbVByb2dyYW1DYWNoZUtleSgpfX0sZ2V0UHJvZ3JhbUNhY2hlS2V5OmZ1bmN0aW9uIHkoZSl7Y29uc3Qgbj1bXTtpZihlLnNoYWRlcklEP24ucHVzaChlLnNoYWRlcklEKToobi5wdXNoKGUuY3VzdG9tVmVydGV4U2hhZGVySUQpLG4ucHVzaChlLmN1c3RvbUZyYWdtZW50U2hhZGVySUQpKSx2b2lkIDAhPT1lLmRlZmluZXMpZm9yKGNvbnN0IHQgaW4gZS5kZWZpbmVzKW4ucHVzaCh0KSxuLnB1c2goZS5kZWZpbmVzW3RdKTtyZXR1cm4hMT09PWUuaXNSYXdTaGFkZXJNYXRlcmlhbCYmKCEoZnVuY3Rpb24gbyh0LGUpe3QucHVzaChlLnByZWNpc2lvbiksdC5wdXNoKGUub3V0cHV0RW5jb2RpbmcpLHQucHVzaChlLmVudk1hcE1vZGUpLHQucHVzaChlLmNvbWJpbmUpLHQucHVzaChlLnZlcnRleFV2cyksdC5wdXNoKGUuZm9nRXhwMiksdC5wdXNoKGUuc2l6ZUF0dGVudWF0aW9uKSx0LnB1c2goZS5tYXhCb25lcyksdC5wdXNoKGUubW9ycGhUYXJnZXRzQ291bnQpLHQucHVzaChlLm51bURpckxpZ2h0cyksdC5wdXNoKGUubnVtUG9pbnRMaWdodHMpLHQucHVzaChlLm51bVNwb3RMaWdodHMpLHQucHVzaChlLm51bUhlbWlMaWdodHMpLHQucHVzaChlLm51bVJlY3RBcmVhTGlnaHRzKSx0LnB1c2goZS5udW1EaXJMaWdodFNoYWRvd3MpLHQucHVzaChlLm51bVBvaW50TGlnaHRTaGFkb3dzKSx0LnB1c2goZS5udW1TcG90TGlnaHRTaGFkb3dzKSx0LnB1c2goZS5zaGFkb3dNYXBUeXBlKSx0LnB1c2goZS50b25lTWFwcGluZyksdC5wdXNoKGUubnVtQ2xpcHBpbmdQbGFuZXMpLHQucHVzaChlLm51bUNsaXBJbnRlcnNlY3Rpb24pLHQucHVzaChlLmFscGhhV3JpdGUpfSkobixlKSwoZnVuY3Rpb24gaSh0LGUpe3MuZGlzYWJsZUFsbCgpLGUuaXNXZWJHTDImJnMuZW5hYmxlKDApO2Uuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcyYmcy5lbmFibGUoMSk7ZS5pbnN0YW5jaW5nJiZzLmVuYWJsZSgyKTtlLmluc3RhbmNpbmdDb2xvciYmcy5lbmFibGUoMyk7ZS5tYXAmJnMuZW5hYmxlKDQpO2UubWF0Y2FwJiZzLmVuYWJsZSg1KTtlLmVudk1hcCYmcy5lbmFibGUoNik7ZS5lbnZNYXBDdWJlVVYmJnMuZW5hYmxlKDcpO2UubGlnaHRNYXAmJnMuZW5hYmxlKDgpO2UuYW9NYXAmJnMuZW5hYmxlKDkpO2UuZW1pc3NpdmVNYXAmJnMuZW5hYmxlKDEwKTtlLmJ1bXBNYXAmJnMuZW5hYmxlKDExKTtlLm5vcm1hbE1hcCYmcy5lbmFibGUoMTIpO2Uub2JqZWN0U3BhY2VOb3JtYWxNYXAmJnMuZW5hYmxlKDEzKTtlLnRhbmdlbnRTcGFjZU5vcm1hbE1hcCYmcy5lbmFibGUoMTQpO2UuY2xlYXJjb2F0JiZzLmVuYWJsZSgxNSk7ZS5jbGVhcmNvYXRNYXAmJnMuZW5hYmxlKDE2KTtlLmNsZWFyY29hdFJvdWdobmVzc01hcCYmcy5lbmFibGUoMTcpO2UuY2xlYXJjb2F0Tm9ybWFsTWFwJiZzLmVuYWJsZSgxOCk7ZS5kaXNwbGFjZW1lbnRNYXAmJnMuZW5hYmxlKDE5KTtlLnNwZWN1bGFyTWFwJiZzLmVuYWJsZSgyMCk7ZS5yb3VnaG5lc3NNYXAmJnMuZW5hYmxlKDIxKTtlLm1ldGFsbmVzc01hcCYmcy5lbmFibGUoMjIpO2UuZ3JhZGllbnRNYXAmJnMuZW5hYmxlKDIzKTtlLmFscGhhTWFwJiZzLmVuYWJsZSgyNCk7ZS5hbHBoYVRlc3QmJnMuZW5hYmxlKDI1KTtlLnZlcnRleENvbG9ycyYmcy5lbmFibGUoMjYpO2UudmVydGV4QWxwaGFzJiZzLmVuYWJsZSgyNyk7ZS52ZXJ0ZXhVdnMmJnMuZW5hYmxlKDI4KTtlLnZlcnRleFRhbmdlbnRzJiZzLmVuYWJsZSgyOSk7ZS51dnNWZXJ0ZXhPbmx5JiZzLmVuYWJsZSgzMCk7ZS5mb2cmJnMuZW5hYmxlKDMxKTt0LnB1c2gocy5tYXNrKSxzLmRpc2FibGVBbGwoKSxlLnVzZUZvZyYmcy5lbmFibGUoMCk7ZS5mbGF0U2hhZGluZyYmcy5lbmFibGUoMSk7ZS5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZzLmVuYWJsZSgyKTtlLnNraW5uaW5nJiZzLmVuYWJsZSgzKTtlLnVzZVZlcnRleFRleHR1cmUmJnMuZW5hYmxlKDQpO2UubW9ycGhUYXJnZXRzJiZzLmVuYWJsZSg1KTtlLm1vcnBoTm9ybWFscyYmcy5lbmFibGUoNik7ZS5wcmVtdWx0aXBsaWVkQWxwaGEmJnMuZW5hYmxlKDcpO2Uuc2hhZG93TWFwRW5hYmxlZCYmcy5lbmFibGUoOCk7ZS5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyYmcy5lbmFibGUoOSk7ZS5kb3VibGVTaWRlZCYmcy5lbmFibGUoMTApO2UuZmxpcFNpZGVkJiZzLmVuYWJsZSgxMSk7ZS5kZXB0aFBhY2tpbmcmJnMuZW5hYmxlKDEyKTtlLmRpdGhlcmluZyYmcy5lbmFibGUoMTMpO2Uuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJnMuZW5hYmxlKDE0KTtlLnNwZWN1bGFyQ29sb3JNYXAmJnMuZW5hYmxlKDE1KTtlLnRyYW5zbWlzc2lvbiYmcy5lbmFibGUoMTYpO2UudHJhbnNtaXNzaW9uTWFwJiZzLmVuYWJsZSgxNyk7ZS50aGlja25lc3NNYXAmJnMuZW5hYmxlKDE4KTtlLnNoZWVuJiZzLmVuYWJsZSgxOSk7ZS5zaGVlbkNvbG9yTWFwJiZzLmVuYWJsZSgyMCk7ZS5zaGVlblJvdWdobmVzc01hcCYmcy5lbmFibGUoMjEpO2UuZGVjb2RlVmlkZW9UZXh0dXJlJiZzLmVuYWJsZSgyMik7dC5wdXNoKHMubWFzayl9KShuLGUpLG4ucHVzaCh0Lm91dHB1dEVuY29kaW5nKSksbi5wdXNoKGUuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KSxuLmpvaW4oKX0sZ2V0VW5pZm9ybXM6ZnVuY3Rpb24gXyh0KXtjb25zdCBlPWhbdC50eXBlXTtsZXQgbjtpZihlKXtuPW9kdC5jbG9uZSh4ZHRbZV0udW5pZm9ybXMpfWVsc2Ugbj10LnVuaWZvcm1zO3JldHVybiBufSxhY3F1aXJlUHJvZ3JhbTpmdW5jdGlvbiBDKGUsbil7bGV0IG87Zm9yKGxldCB0PTAsZT1jLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWNbdF07aWYoZS5jYWNoZUtleT09PW4pe289ZSwrK28udXNlZFRpbWVzO2JyZWFrfX1yZXR1cm4gdm9pZCAwPT09byYmKG89bmV3IEVtdCh0LG4sZSxhKSxjLnB1c2gobykpLG99LHJlbGVhc2VQcm9ncmFtOmZ1bmN0aW9uIE0odCl7aWYoMD09LS10LnVzZWRUaW1lcyl7Y29uc3QgZT1jLmluZGV4T2YodCk7Y1tlXT1jW2MubGVuZ3RoLTFdLGMucG9wKCksdC5kZXN0cm95KCl9fSxyZWxlYXNlU2hhZGVyQ2FjaGU6ZnVuY3Rpb24gdih0KXtsLnJlbW92ZSh0KX0scHJvZ3JhbXM6YyxkaXNwb3NlOmZ1bmN0aW9uIHgoKXtsLmRpc3Bvc2UoKX19fWZ1bmN0aW9uIEltdCgpe2xldCB0PW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gZShuKXtsZXQgbz10LmdldChuKTtyZXR1cm4gdm9pZCAwPT09byYmKG89e30sdC5zZXQobixvKSksb30scmVtb3ZlOmZ1bmN0aW9uIG4oZSl7dC5kZWxldGUoZSl9LHVwZGF0ZTpmdW5jdGlvbiBvKGUsbixpKXt0LmdldChlKVtuXT1pfSxkaXNwb3NlOmZ1bmN0aW9uIGkoKXt0PW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gSG10KHQsZSl7cmV0dXJuIHQuZ3JvdXBPcmRlciE9PWUuZ3JvdXBPcmRlcj90Lmdyb3VwT3JkZXItZS5ncm91cE9yZGVyOnQucmVuZGVyT3JkZXIhPT1lLnJlbmRlck9yZGVyP3QucmVuZGVyT3JkZXItZS5yZW5kZXJPcmRlcjp0Lm1hdGVyaWFsLmlkIT09ZS5tYXRlcmlhbC5pZD90Lm1hdGVyaWFsLmlkLWUubWF0ZXJpYWwuaWQ6dC56IT09ZS56P3Quei1lLno6dC5pZC1lLmlkfWZ1bmN0aW9uIEZtdCh0LGUpe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1lLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLWUuZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09ZS5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLWUucmVuZGVyT3JkZXI6dC56IT09ZS56P2Uuei10Lno6dC5pZC1lLmlkfWZ1bmN0aW9uIExtdCgpe2NvbnN0IHQ9W107bGV0IGU9MDtjb25zdCBuPVtdLG89W10saT1bXTtmdW5jdGlvbiBhKG4sbyxpLGEscixzKXtsZXQgbD10W2VdO3JldHVybiB2b2lkIDA9PT1sPyhsPXtpZDpuLmlkLG9iamVjdDpuLGdlb21ldHJ5Om8sbWF0ZXJpYWw6aSxncm91cE9yZGVyOmEscmVuZGVyT3JkZXI6bi5yZW5kZXJPcmRlcix6OnIsZ3JvdXA6c30sdFtlXT1sKToobC5pZD1uLmlkLGwub2JqZWN0PW4sbC5nZW9tZXRyeT1vLGwubWF0ZXJpYWw9aSxsLmdyb3VwT3JkZXI9YSxsLnJlbmRlck9yZGVyPW4ucmVuZGVyT3JkZXIsbC56PXIsbC5ncm91cD1zKSxlKyssbH1yZXR1cm57b3BhcXVlOm4sdHJhbnNtaXNzaXZlOm8sdHJhbnNwYXJlbnQ6aSxpbml0OmZ1bmN0aW9uIHIoKXtlPTAsbi5sZW5ndGg9MCxvLmxlbmd0aD0wLGkubGVuZ3RoPTB9LHB1c2g6ZnVuY3Rpb24gcyh0LGUscixsLGMsZCl7Y29uc3QgcD1hKHQsZSxyLGwsYyxkKTtyLnRyYW5zbWlzc2lvbj4wP28ucHVzaChwKTohMD09PXIudHJhbnNwYXJlbnQ/aS5wdXNoKHApOm4ucHVzaChwKX0sdW5zaGlmdDpmdW5jdGlvbiBsKHQsZSxyLHMsYyxkKXtjb25zdCBwPWEodCxlLHIscyxjLGQpO3IudHJhbnNtaXNzaW9uPjA/by51bnNoaWZ0KHApOiEwPT09ci50cmFuc3BhcmVudD9pLnVuc2hpZnQocCk6bi51bnNoaWZ0KHApfSxmaW5pc2g6ZnVuY3Rpb24gYygpe2ZvcihsZXQgbj1lLG89dC5sZW5ndGg7bjxvO24rKyl7Y29uc3QgZT10W25dO2lmKG51bGw9PT1lLmlkKWJyZWFrO2UuaWQ9bnVsbCxlLm9iamVjdD1udWxsLGUuZ2VvbWV0cnk9bnVsbCxlLm1hdGVyaWFsPW51bGwsZS5ncm91cD1udWxsfX0sc29ydDpmdW5jdGlvbiBkKHQsZSl7bi5sZW5ndGg+MSYmbi5zb3J0KHR8fEhtdCksby5sZW5ndGg+MSYmby5zb3J0KGV8fEZtdCksaS5sZW5ndGg+MSYmaS5zb3J0KGV8fEZtdCl9fX1mdW5jdGlvbiBCbXQoKXtsZXQgdD1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIGUobixvKXtsZXQgaTtyZXR1cm4hMT09PXQuaGFzKG4pPyhpPW5ldyBMbXQsdC5zZXQobixbaV0pKTpvPj10LmdldChuKS5sZW5ndGg/KGk9bmV3IExtdCx0LmdldChuKS5wdXNoKGkpKTppPXQuZ2V0KG4pW29dLGl9LGRpc3Bvc2U6ZnVuY3Rpb24gbigpe3Q9bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBWbXQoKXtjb25zdCB0PXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dFtlLmlkXSlyZXR1cm4gdFtlLmlkXTtsZXQgbjtzd2l0Y2goZS50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOm49e2RpcmVjdGlvbjpuZXcgaWx0LGNvbG9yOm5ldyBac3R9O2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpuPXtwb3NpdGlvbjpuZXcgaWx0LGRpcmVjdGlvbjpuZXcgaWx0LGNvbG9yOm5ldyBac3QsZGlzdGFuY2U6MCxjb25lQ29zOjAscGVudW1icmFDb3M6MCxkZWNheTowfTticmVhaztjYXNlIlBvaW50TGlnaHQiOm49e3Bvc2l0aW9uOm5ldyBpbHQsY29sb3I6bmV3IFpzdCxkaXN0YW5jZTowLGRlY2F5OjB9O2JyZWFrO2Nhc2UiSGVtaXNwaGVyZUxpZ2h0IjpuPXtkaXJlY3Rpb246bmV3IGlsdCxza3lDb2xvcjpuZXcgWnN0LGdyb3VuZENvbG9yOm5ldyBac3R9O2JyZWFrO2Nhc2UiUmVjdEFyZWFMaWdodCI6bj17Y29sb3I6bmV3IFpzdCxwb3NpdGlvbjpuZXcgaWx0LGhhbGZXaWR0aDpuZXcgaWx0LGhhbGZIZWlnaHQ6bmV3IGlsdH19cmV0dXJuIHRbZS5pZF09bixufX19bGV0IFVtdD0wO2Z1bmN0aW9uIGptdCh0LGUpe3JldHVybihlLmNhc3RTaGFkb3c/MTowKS0odC5jYXN0U2hhZG93PzE6MCl9ZnVuY3Rpb24gV210KHQsZSl7Y29uc3Qgbj1uZXcgVm10LG89KGZ1bmN0aW9uIGkoKXtjb25zdCB0PXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dFtlLmlkXSlyZXR1cm4gdFtlLmlkXTtsZXQgbjtzd2l0Y2goZS50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOmNhc2UiU3BvdExpZ2h0IjpuPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IEZzdH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpuPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IEZzdCxzaGFkb3dDYW1lcmFOZWFyOjEsc2hhZG93Q2FtZXJhRmFyOjFlM319cmV0dXJuIHRbZS5pZF09bixufX19KSgpLGE9e3ZlcnNpb246MCxoYXNoOntkaXJlY3Rpb25hbExlbmd0aDotMSxwb2ludExlbmd0aDotMSxzcG90TGVuZ3RoOi0xLHJlY3RBcmVhTGVuZ3RoOi0xLGhlbWlMZW5ndGg6LTEsbnVtRGlyZWN0aW9uYWxTaGFkb3dzOi0xLG51bVBvaW50U2hhZG93czotMSxudW1TcG90U2hhZG93czotMX0sYW1iaWVudDpbMCwwLDBdLHByb2JlOltdLGRpcmVjdGlvbmFsOltdLGRpcmVjdGlvbmFsU2hhZG93OltdLGRpcmVjdGlvbmFsU2hhZG93TWFwOltdLGRpcmVjdGlvbmFsU2hhZG93TWF0cml4OltdLHNwb3Q6W10sc3BvdFNoYWRvdzpbXSxzcG90U2hhZG93TWFwOltdLHNwb3RTaGFkb3dNYXRyaXg6W10scmVjdEFyZWE6W10scmVjdEFyZWFMVEMxOm51bGwscmVjdEFyZWFMVEMyOm51bGwscG9pbnQ6W10scG9pbnRTaGFkb3c6W10scG9pbnRTaGFkb3dNYXA6W10scG9pbnRTaGFkb3dNYXRyaXg6W10saGVtaTpbXX07Zm9yKGxldCB0PTA7dDw5O3QrKylhLnByb2JlLnB1c2gobmV3IGlsdCk7Y29uc3Qgcj1uZXcgaWx0LHM9bmV3IHpsdCxsPW5ldyB6bHQ7cmV0dXJue3NldHVwOmZ1bmN0aW9uIGMoaSxyKXtsZXQgcz0wLGw9MCxjPTA7Zm9yKGxldCB0PTA7dDw5O3QrKylhLnByb2JlW3RdLnNldCgwLDAsMCk7bGV0IGQ9MCxwPTAsbT0wLHU9MCxmPTAsZz0wLGg9MCxiPTA7aS5zb3J0KGptdCk7Y29uc3QgeT0hMCE9PXI/TWF0aC5QSToxO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1pW3RdLHI9ZS5jb2xvcixfPWUuaW50ZW5zaXR5LEM9ZS5kaXN0YW5jZSxNPWUuc2hhZG93JiZlLnNoYWRvdy5tYXA/ZS5zaGFkb3cubWFwLnRleHR1cmU6bnVsbDtpZihlLmlzQW1iaWVudExpZ2h0KXMrPXIucipfKnksbCs9ci5nKl8qeSxjKz1yLmIqXyp5O2Vsc2UgaWYoZS5pc0xpZ2h0UHJvYmUpZm9yKGxldCB0PTA7dDw5O3QrKylhLnByb2JlW3RdLmFkZFNjYWxlZFZlY3RvcihlLnNoLmNvZWZmaWNpZW50c1t0XSxfKTtlbHNlIGlmKGUuaXNEaXJlY3Rpb25hbExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQuY29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcihlLmludGVuc2l0eSp5KSxlLmNhc3RTaGFkb3cpe2NvbnN0IHQ9ZS5zaGFkb3csbj1vLmdldChlKTtuLnNoYWRvd0JpYXM9dC5iaWFzLG4uc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsbi5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsbi5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxhLmRpcmVjdGlvbmFsU2hhZG93W2RdPW4sYS5kaXJlY3Rpb25hbFNoYWRvd01hcFtkXT1NLGEuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbZF09ZS5zaGFkb3cubWF0cml4LGcrK31hLmRpcmVjdGlvbmFsW2RdPXQsZCsrfWVsc2UgaWYoZS5pc1Nwb3RMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSx0LmNvbG9yLmNvcHkocikubXVsdGlwbHlTY2FsYXIoXyp5KSx0LmRpc3RhbmNlPUMsdC5jb25lQ29zPU1hdGguY29zKGUuYW5nbGUpLHQucGVudW1icmFDb3M9TWF0aC5jb3MoZS5hbmdsZSooMS1lLnBlbnVtYnJhKSksdC5kZWNheT1lLmRlY2F5LGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPW8uZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLGEuc3BvdFNoYWRvd1ttXT1uLGEuc3BvdFNoYWRvd01hcFttXT1NLGEuc3BvdFNoYWRvd01hdHJpeFttXT1lLnNoYWRvdy5tYXRyaXgsYisrfWEuc3BvdFttXT10LG0rK31lbHNlIGlmKGUuaXNSZWN0QXJlYUxpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO3QuY29sb3IuY29weShyKS5tdWx0aXBseVNjYWxhcihfKSx0LmhhbGZXaWR0aC5zZXQoLjUqZS53aWR0aCwwLDApLHQuaGFsZkhlaWdodC5zZXQoMCwuNSplLmhlaWdodCwwKSxhLnJlY3RBcmVhW3VdPXQsdSsrfWVsc2UgaWYoZS5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5jb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKGUuaW50ZW5zaXR5KnkpLHQuZGlzdGFuY2U9ZS5kaXN0YW5jZSx0LmRlY2F5PWUuZGVjYXksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49by5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsbi5zaGFkb3dDYW1lcmFOZWFyPXQuY2FtZXJhLm5lYXIsbi5zaGFkb3dDYW1lcmFGYXI9dC5jYW1lcmEuZmFyLGEucG9pbnRTaGFkb3dbcF09bixhLnBvaW50U2hhZG93TWFwW3BdPU0sYS5wb2ludFNoYWRvd01hdHJpeFtwXT1lLnNoYWRvdy5tYXRyaXgsaCsrfWEucG9pbnRbcF09dCxwKyt9ZWxzZSBpZihlLmlzSGVtaXNwaGVyZUxpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO3Quc2t5Q29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcihfKnkpLHQuZ3JvdW5kQ29sb3IuY29weShlLmdyb3VuZENvbG9yKS5tdWx0aXBseVNjYWxhcihfKnkpLGEuaGVtaVtmXT10LGYrK319dT4wJiYoZS5pc1dlYkdMMnx8ITA9PT10LmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik/KGEucmVjdEFyZWFMVEMxPXZkdC5MVENfRkxPQVRfMSxhLnJlY3RBcmVhTFRDMj12ZHQuTFRDX0ZMT0FUXzIpOiEwPT09dC5oYXMoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik/KGEucmVjdEFyZWFMVEMxPXZkdC5MVENfSEFMRl8xLGEucmVjdEFyZWFMVEMyPXZkdC5MVENfSEFMRl8yKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVbmFibGUgdG8gdXNlIFJlY3RBcmVhTGlnaHQuIE1pc3NpbmcgV2ViR0wgZXh0ZW5zaW9ucy4iKSksYS5hbWJpZW50WzBdPXMsYS5hbWJpZW50WzFdPWwsYS5hbWJpZW50WzJdPWM7Y29uc3QgXz1hLmhhc2g7Xy5kaXJlY3Rpb25hbExlbmd0aD09PWQmJl8ucG9pbnRMZW5ndGg9PT1wJiZfLnNwb3RMZW5ndGg9PT1tJiZfLnJlY3RBcmVhTGVuZ3RoPT09dSYmXy5oZW1pTGVuZ3RoPT09ZiYmXy5udW1EaXJlY3Rpb25hbFNoYWRvd3M9PT1nJiZfLm51bVBvaW50U2hhZG93cz09PWgmJl8ubnVtU3BvdFNoYWRvd3M9PT1ifHwoYS5kaXJlY3Rpb25hbC5sZW5ndGg9ZCxhLnNwb3QubGVuZ3RoPW0sYS5yZWN0QXJlYS5sZW5ndGg9dSxhLnBvaW50Lmxlbmd0aD1wLGEuaGVtaS5sZW5ndGg9ZixhLmRpcmVjdGlvbmFsU2hhZG93Lmxlbmd0aD1nLGEuZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoPWcsYS5wb2ludFNoYWRvdy5sZW5ndGg9aCxhLnBvaW50U2hhZG93TWFwLmxlbmd0aD1oLGEuc3BvdFNoYWRvdy5sZW5ndGg9YixhLnNwb3RTaGFkb3dNYXAubGVuZ3RoPWIsYS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC5sZW5ndGg9ZyxhLnBvaW50U2hhZG93TWF0cml4Lmxlbmd0aD1oLGEuc3BvdFNoYWRvd01hdHJpeC5sZW5ndGg9YixfLmRpcmVjdGlvbmFsTGVuZ3RoPWQsXy5wb2ludExlbmd0aD1wLF8uc3BvdExlbmd0aD1tLF8ucmVjdEFyZWFMZW5ndGg9dSxfLmhlbWlMZW5ndGg9ZixfLm51bURpcmVjdGlvbmFsU2hhZG93cz1nLF8ubnVtUG9pbnRTaGFkb3dzPWgsXy5udW1TcG90U2hhZG93cz1iLGEudmVyc2lvbj1VbXQrKyl9LHNldHVwVmlldzpmdW5jdGlvbiBkKHQsZSl7bGV0IG49MCxvPTAsaT0wLGM9MCxkPTA7Y29uc3QgcD1lLm1hdHJpeFdvcmxkSW52ZXJzZTtmb3IobGV0IGU9MCxtPXQubGVuZ3RoO2U8bTtlKyspe2NvbnN0IG09dFtlXTtpZihtLmlzRGlyZWN0aW9uYWxMaWdodCl7Y29uc3QgdD1hLmRpcmVjdGlvbmFsW25dO3QuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSxyLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLnRhcmdldC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24uc3ViKHIpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihwKSxuKyt9ZWxzZSBpZihtLmlzU3BvdExpZ2h0KXtjb25zdCB0PWEuc3BvdFtpXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChwKSx0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksci5zZXRGcm9tTWF0cml4UG9zaXRpb24obS50YXJnZXQubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnN1YihyKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24ocCksaSsrfWVsc2UgaWYobS5pc1JlY3RBcmVhTGlnaHQpe2NvbnN0IHQ9YS5yZWN0QXJlYVtjXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChwKSxsLmlkZW50aXR5KCkscy5jb3B5KG0ubWF0cml4V29ybGQpLHMucHJlbXVsdGlwbHkocCksbC5leHRyYWN0Um90YXRpb24ocyksdC5oYWxmV2lkdGguc2V0KC41Km0ud2lkdGgsMCwwKSx0LmhhbGZIZWlnaHQuc2V0KDAsLjUqbS5oZWlnaHQsMCksdC5oYWxmV2lkdGguYXBwbHlNYXRyaXg0KGwpLHQuaGFsZkhlaWdodC5hcHBseU1hdHJpeDQobCksYysrfWVsc2UgaWYobS5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9YS5wb2ludFtvXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChwKSxvKyt9ZWxzZSBpZihtLmlzSGVtaXNwaGVyZUxpZ2h0KXtjb25zdCB0PWEuaGVtaVtkXTt0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHApLHQuZGlyZWN0aW9uLm5vcm1hbGl6ZSgpLGQrK319fSxzdGF0ZTphfX1mdW5jdGlvbiBHbXQodCxlKXtjb25zdCBuPW5ldyBXbXQodCxlKSxvPVtdLGk9W107cmV0dXJue2luaXQ6ZnVuY3Rpb24gYSgpe28ubGVuZ3RoPTAsaS5sZW5ndGg9MH0sc3RhdGU6e2xpZ2h0c0FycmF5Om8sc2hhZG93c0FycmF5OmksbGlnaHRzOm59LHNldHVwTGlnaHRzOmZ1bmN0aW9uIHIodCl7bi5zZXR1cChvLHQpfSxzZXR1cExpZ2h0c1ZpZXc6ZnVuY3Rpb24gcyh0KXtuLnNldHVwVmlldyhvLHQpfSxwdXNoTGlnaHQ6ZnVuY3Rpb24gbCh0KXtvLnB1c2godCl9LHB1c2hTaGFkb3c6ZnVuY3Rpb24gYyh0KXtpLnB1c2godCl9fX1mdW5jdGlvbiBZbXQodCxlKXtsZXQgbj1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIG8oaSxhPTApe2xldCByO3JldHVybiExPT09bi5oYXMoaSk/KHI9bmV3IEdtdCh0LGUpLG4uc2V0KGksW3JdKSk6YT49bi5nZXQoaSkubGVuZ3RoPyhyPW5ldyBHbXQodCxlKSxuLmdldChpKS5wdXNoKHIpKTpyPW4uZ2V0KGkpW2FdLHJ9LGRpc3Bvc2U6ZnVuY3Rpb24gaSgpe249bmV3IFdlYWtNYXB9fX1jbGFzcyBxbXQgZXh0ZW5kcyBfY3R7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hEZXB0aE1hdGVyaWFsIix0aGlzLmRlcHRoUGFja2luZz0zMjAwLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlcHRoUGFja2luZz10LmRlcHRoUGFja2luZyx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpc319cW10LnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwO2NsYXNzIFptdCBleHRlbmRzIF9jdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaERpc3RhbmNlTWF0ZXJpYWwiLHRoaXMucmVmZXJlbmNlUG9zaXRpb249bmV3IGlsdCx0aGlzLm5lYXJEaXN0YW5jZT0xLHRoaXMuZmFyRGlzdGFuY2U9MWUzLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5yZWZlcmVuY2VQb3NpdGlvbi5jb3B5KHQucmVmZXJlbmNlUG9zaXRpb24pLHRoaXMubmVhckRpc3RhbmNlPXQubmVhckRpc3RhbmNlLHRoaXMuZmFyRGlzdGFuY2U9dC5mYXJEaXN0YW5jZSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpc319Wm10LnByb3RvdHlwZS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPSEwO2Z1bmN0aW9uIFhtdCh0LGUsbil7bGV0IG89bmV3IGJkdDtjb25zdCBpPW5ldyBGc3QsYT1uZXcgRnN0LHI9bmV3IHRsdCxzPW5ldyBxbXQoe2RlcHRoUGFja2luZzozMjAxfSksbD1uZXcgWm10LGM9e30sZD1uLm1heFRleHR1cmVTaXplLHA9ezA6MSwxOjAsMjoyfSxtPW5ldyBpZHQoe2RlZmluZXM6e1ZTTV9TQU1QTEVTOjh9LHVuaWZvcm1zOntzaGFkb3dfcGFzczp7dmFsdWU6bnVsbH0scmVzb2x1dGlvbjp7dmFsdWU6bmV3IEZzdH0scmFkaXVzOnt2YWx1ZTo0fX0sdmVydGV4U2hhZGVyOiJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsZnJhZ21lbnRTaGFkZXI6InVuaWZvcm0gc2FtcGxlcjJEIHNoYWRvd19wYXNzO1xudW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG51bmlmb3JtIGZsb2F0IHJhZGl1cztcbiNpbmNsdWRlIDxwYWNraW5nPlxudm9pZCBtYWluKCkge1xuXHRjb25zdCBmbG9hdCBzYW1wbGVzID0gZmxvYXQoIFZTTV9TQU1QTEVTICk7XG5cdGZsb2F0IG1lYW4gPSAwLjA7XG5cdGZsb2F0IHNxdWFyZWRfbWVhbiA9IDAuMDtcblx0ZmxvYXQgdXZTdHJpZGUgPSBzYW1wbGVzIDw9IDEuMCA/IDAuMCA6IDIuMCAvICggc2FtcGxlcyAtIDEuMCApO1xuXHRmbG9hdCB1dlN0YXJ0ID0gc2FtcGxlcyA8PSAxLjAgPyAwLjAgOiAtIDEuMDtcblx0Zm9yICggZmxvYXQgaSA9IDAuMDsgaSA8IHNhbXBsZXM7IGkgKysgKSB7XG5cdFx0ZmxvYXQgdXZPZmZzZXQgPSB1dlN0YXJ0ICsgaSAqIHV2U3RyaWRlO1xuXHRcdCNpZmRlZiBIT1JJWk9OVEFMX1BBU1Ncblx0XHRcdHZlYzIgZGlzdHJpYnV0aW9uID0gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggdXZPZmZzZXQsIDAuMCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGlzdHJpYnV0aW9uLng7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSArIGRpc3RyaWJ1dGlvbi54ICogZGlzdHJpYnV0aW9uLng7XG5cdFx0I2Vsc2Vcblx0XHRcdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggMC4wLCB1dk9mZnNldCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGVwdGg7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGVwdGggKiBkZXB0aDtcblx0XHQjZW5kaWZcblx0fVxuXHRtZWFuID0gbWVhbiAvIHNhbXBsZXM7XG5cdHNxdWFyZWRfbWVhbiA9IHNxdWFyZWRfbWVhbiAvIHNhbXBsZXM7XG5cdGZsb2F0IHN0ZF9kZXYgPSBzcXJ0KCBzcXVhcmVkX21lYW4gLSBtZWFuICogbWVhbiApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrMkhhbGZUb1JHQkEoIHZlYzIoIG1lYW4sIHN0ZF9kZXYgKSApO1xufSJ9KSx1PW0uY2xvbmUoKTt1LmRlZmluZXMuSE9SSVpPTlRBTF9QQVNTPTE7Y29uc3QgZj1uZXcgTmN0O2Yuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhjdChuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwuNSwzLC0xLC41LC0xLDMsLjVdKSwzKSk7Y29uc3QgZz1uZXcgUWN0KGYsbSksaD10aGlzO2Z1bmN0aW9uIGIobixvKXtjb25zdCBpPWUudXBkYXRlKGcpO20uZGVmaW5lcy5WU01fU0FNUExFUyE9PW4uYmx1clNhbXBsZXMmJihtLmRlZmluZXMuVlNNX1NBTVBMRVM9bi5ibHVyU2FtcGxlcyx1LmRlZmluZXMuVlNNX1NBTVBMRVM9bi5ibHVyU2FtcGxlcyxtLm5lZWRzVXBkYXRlPSEwLHUubmVlZHNVcGRhdGU9ITApLG0udW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXAudGV4dHVyZSxtLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9bi5tYXBTaXplLG0udW5pZm9ybXMucmFkaXVzLnZhbHVlPW4ucmFkaXVzLHQuc2V0UmVuZGVyVGFyZ2V0KG4ubWFwUGFzcyksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KG8sbnVsbCxpLG0sZyxudWxsKSx1LnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPW4ubWFwUGFzcy50ZXh0dXJlLHUudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUsdS51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXApLHQuY2xlYXIoKSx0LnJlbmRlckJ1ZmZlckRpcmVjdChvLG51bGwsaSx1LGcsbnVsbCl9ZnVuY3Rpb24geShlLG4sbyxpLGEscixkKXtsZXQgbT1udWxsO2NvbnN0IHU9ITA9PT1pLmlzUG9pbnRMaWdodD9lLmN1c3RvbURpc3RhbmNlTWF0ZXJpYWw6ZS5jdXN0b21EZXB0aE1hdGVyaWFsO2lmKG09dm9pZCAwIT09dT91OiEwPT09aS5pc1BvaW50TGlnaHQ/bDpzLHQubG9jYWxDbGlwcGluZ0VuYWJsZWQmJiEwPT09by5jbGlwU2hhZG93cyYmMCE9PW8uY2xpcHBpbmdQbGFuZXMubGVuZ3RofHxvLmRpc3BsYWNlbWVudE1hcCYmMCE9PW8uZGlzcGxhY2VtZW50U2NhbGV8fG8uYWxwaGFNYXAmJm8uYWxwaGFUZXN0PjApe2NvbnN0IHQ9bS51dWlkLGU9by51dWlkO2xldCBuPWNbdF07dm9pZCAwPT09biYmKG49e30sY1t0XT1uKTtsZXQgaT1uW2VdO3ZvaWQgMD09PWkmJihpPW0uY2xvbmUoKSxuW2VdPWkpLG09aX1yZXR1cm4gbS52aXNpYmxlPW8udmlzaWJsZSxtLndpcmVmcmFtZT1vLndpcmVmcmFtZSxtLnNpZGU9Mz09PWQ/bnVsbCE9PW8uc2hhZG93U2lkZT9vLnNoYWRvd1NpZGU6by5zaWRlOm51bGwhPT1vLnNoYWRvd1NpZGU/by5zaGFkb3dTaWRlOnBbby5zaWRlXSxtLmFscGhhTWFwPW8uYWxwaGFNYXAsbS5hbHBoYVRlc3Q9by5hbHBoYVRlc3QsbS5jbGlwU2hhZG93cz1vLmNsaXBTaGFkb3dzLG0uY2xpcHBpbmdQbGFuZXM9by5jbGlwcGluZ1BsYW5lcyxtLmNsaXBJbnRlcnNlY3Rpb249by5jbGlwSW50ZXJzZWN0aW9uLG0uZGlzcGxhY2VtZW50TWFwPW8uZGlzcGxhY2VtZW50TWFwLG0uZGlzcGxhY2VtZW50U2NhbGU9by5kaXNwbGFjZW1lbnRTY2FsZSxtLmRpc3BsYWNlbWVudEJpYXM9by5kaXNwbGFjZW1lbnRCaWFzLG0ud2lyZWZyYW1lTGluZXdpZHRoPW8ud2lyZWZyYW1lTGluZXdpZHRoLG0ubGluZXdpZHRoPW8ubGluZXdpZHRoLCEwPT09aS5pc1BvaW50TGlnaHQmJiEwPT09bS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsJiYobS5yZWZlcmVuY2VQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oaS5tYXRyaXhXb3JsZCksbS5uZWFyRGlzdGFuY2U9YSxtLmZhckRpc3RhbmNlPXIpLG19ZnVuY3Rpb24gXyhuLGksYSxyLHMpe2lmKCExPT09bi52aXNpYmxlKXJldHVybjtpZihuLmxheWVycy50ZXN0KGkubGF5ZXJzKSYmKG4uaXNNZXNofHxuLmlzTGluZXx8bi5pc1BvaW50cykmJihuLmNhc3RTaGFkb3d8fG4ucmVjZWl2ZVNoYWRvdyYmMz09PXMpJiYoIW4uZnJ1c3R1bUN1bGxlZHx8by5pbnRlcnNlY3RzT2JqZWN0KG4pKSl7bi5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhhLm1hdHJpeFdvcmxkSW52ZXJzZSxuLm1hdHJpeFdvcmxkKTtjb25zdCBvPWUudXBkYXRlKG4pLGk9bi5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBlPW8uZ3JvdXBzO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLGQ9aVtjLm1hdGVyaWFsSW5kZXhdO2lmKGQmJmQudmlzaWJsZSl7Y29uc3QgZT15KG4sMCxkLHIsYS5uZWFyLGEuZmFyLHMpO3QucmVuZGVyQnVmZmVyRGlyZWN0KGEsbnVsbCxvLGUsbixjKX19fWVsc2UgaWYoaS52aXNpYmxlKXtjb25zdCBlPXkobiwwLGkscixhLm5lYXIsYS5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QoYSxudWxsLG8sZSxuLG51bGwpfX1jb25zdCBsPW4uY2hpbGRyZW47Zm9yKGxldCB0PTAsZT1sLmxlbmd0aDt0PGU7dCsrKV8obFt0XSxpLGEscixzKX10aGlzLmVuYWJsZWQ9ITEsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy50eXBlPTEsdGhpcy5yZW5kZXI9ZnVuY3Rpb24oZSxuLHMpe2lmKCExPT09aC5lbmFibGVkKXJldHVybjtpZighMT09PWguYXV0b1VwZGF0ZSYmITE9PT1oLm5lZWRzVXBkYXRlKXJldHVybjtpZigwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IGw9dC5nZXRSZW5kZXJUYXJnZXQoKSxjPXQuZ2V0QWN0aXZlQ3ViZUZhY2UoKSxwPXQuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKSxtPXQuc3RhdGU7bS5zZXRCbGVuZGluZygwKSxtLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoMSwxLDEsMSksbS5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLG0uc2V0U2Npc3NvclRlc3QoITEpO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLHA9Yy5zaGFkb3c7aWYodm9pZCAwPT09cCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDoiLGMsImhhcyBubyBzaGFkb3cuIik7Y29udGludWV9aWYoITE9PT1wLmF1dG9VcGRhdGUmJiExPT09cC5uZWVkc1VwZGF0ZSljb250aW51ZTtpLmNvcHkocC5tYXBTaXplKTtjb25zdCB1PXAuZ2V0RnJhbWVFeHRlbnRzKCk7aWYoaS5tdWx0aXBseSh1KSxhLmNvcHkocC5tYXBTaXplKSwoaS54PmR8fGkueT5kKSYmKGkueD5kJiYoYS54PU1hdGguZmxvb3IoZC91LngpLGkueD1hLngqdS54LHAubWFwU2l6ZS54PWEueCksaS55PmQmJihhLnk9TWF0aC5mbG9vcihkL3UueSksaS55PWEueSp1LnkscC5tYXBTaXplLnk9YS55KSksbnVsbD09PXAubWFwJiYhcC5pc1BvaW50TGlnaHRTaGFkb3cmJjM9PT10aGlzLnR5cGUpe2NvbnN0IHQ9e21pbkZpbHRlcjp0c3QsbWFnRmlsdGVyOnRzdCxmb3JtYXQ6bHN0fTtwLm1hcD1uZXcgZWx0KGkueCxpLnksdCkscC5tYXAudGV4dHVyZS5uYW1lPWMubmFtZSsiLnNoYWRvd01hcCIscC5tYXBQYXNzPW5ldyBlbHQoaS54LGkueSx0KSxwLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9aWYobnVsbD09PXAubWFwKXtwLm1hcD1uZXcgZWx0KGkueCxpLnkse21pbkZpbHRlcjokcnQsbWFnRmlsdGVyOiRydCxmb3JtYXQ6bHN0fSkscC5tYXAudGV4dHVyZS5uYW1lPWMubmFtZSsiLnNoYWRvd01hcCIscC5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXQuc2V0UmVuZGVyVGFyZ2V0KHAubWFwKSx0LmNsZWFyKCk7Y29uc3QgZj1wLmdldFZpZXdwb3J0Q291bnQoKTtmb3IobGV0IHQ9MDt0PGY7dCsrKXtjb25zdCBlPXAuZ2V0Vmlld3BvcnQodCk7ci5zZXQoYS54KmUueCxhLnkqZS55LGEueCplLnosYS55KmUudyksbS52aWV3cG9ydChyKSxwLnVwZGF0ZU1hdHJpY2VzKGMsdCksbz1wLmdldEZydXN0dW0oKSxfKG4scyxwLmNhbWVyYSxjLHRoaXMudHlwZSl9cC5pc1BvaW50TGlnaHRTaGFkb3d8fDMhPT10aGlzLnR5cGV8fGIocCxzKSxwLm5lZWRzVXBkYXRlPSExfWgubmVlZHNVcGRhdGU9ITEsdC5zZXRSZW5kZXJUYXJnZXQobCxjLHApfX1mdW5jdGlvbiBLbXQodCxlLG4pe2NvbnN0IG89bi5pc1dlYkdMMjtjb25zdCBpPW5ldyhmdW5jdGlvbiBhKCl7bGV0IGU9ITE7Y29uc3Qgbj1uZXcgdGx0O2xldCBvPW51bGw7Y29uc3QgaT1uZXcgdGx0KDAsMCwwLDApO3JldHVybntzZXRNYXNrOmZ1bmN0aW9uKG4pe289PT1ufHxlfHwodC5jb2xvck1hc2sobixuLG4sbiksbz1uKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSxvLGEscixzKXshMD09PXMmJihlKj1yLG8qPXIsYSo9ciksbi5zZXQoZSxvLGEsciksITE9PT1pLmVxdWFscyhuKSYmKHQuY2xlYXJDb2xvcihlLG8sYSxyKSxpLmNvcHkobikpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbz1udWxsLGkuc2V0KC0xLDAsMCwwKX19fSkscj1uZXcoZnVuY3Rpb24gcygpe2xldCBlPSExLG49bnVsbCxvPW51bGwsaT1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe3Q/VigyOTI5KTpVKDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKG8pe249PT1vfHxlfHwodC5kZXB0aE1hc2sobyksbj1vKX0sc2V0RnVuYzpmdW5jdGlvbihlKXtpZihvIT09ZSl7aWYoZSlzd2l0Y2goZSl7Y2FzZSAwOnQuZGVwdGhGdW5jKDUxMik7YnJlYWs7Y2FzZSAxOnQuZGVwdGhGdW5jKDUxOSk7YnJlYWs7Y2FzZSAyOnQuZGVwdGhGdW5jKDUxMyk7YnJlYWs7Y2FzZSAzOnQuZGVwdGhGdW5jKDUxNSk7YnJlYWs7Y2FzZSA0OnQuZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSA1OnQuZGVwdGhGdW5jKDUxOCk7YnJlYWs7Y2FzZSA2OnQuZGVwdGhGdW5jKDUxNik7YnJlYWs7Y2FzZSA3OnQuZGVwdGhGdW5jKDUxNyk7YnJlYWs7ZGVmYXVsdDp0LmRlcHRoRnVuYyg1MTUpfWVsc2UgdC5kZXB0aEZ1bmMoNTE1KTtvPWV9fSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtpIT09ZSYmKHQuY2xlYXJEZXB0aChlKSxpPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGx9fX0pLGw9bmV3KGZ1bmN0aW9uIGMoKXtsZXQgZT0hMSxuPW51bGwsbz1udWxsLGk9bnVsbCxhPW51bGwscj1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe2V8fCh0P1YoMjk2MCk6VSgyOTYwKSl9LHNldE1hc2s6ZnVuY3Rpb24obyl7bj09PW98fGV8fCh0LnN0ZW5jaWxNYXNrKG8pLG49byl9LHNldEZ1bmM6ZnVuY3Rpb24oZSxuLHIpe289PT1lJiZpPT09biYmYT09PXJ8fCh0LnN0ZW5jaWxGdW5jKGUsbixyKSxvPWUsaT1uLGE9cil9LHNldE9wOmZ1bmN0aW9uKGUsbixvKXtyPT09ZSYmcz09PW4mJmw9PT1vfHwodC5zdGVuY2lsT3AoZSxuLG8pLHI9ZSxzPW4sbD1vKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSl7YyE9PWUmJih0LmNsZWFyU3RlbmNpbChlKSxjPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGwsYT1udWxsLHI9bnVsbCxzPW51bGwsbD1udWxsLGM9bnVsbH19fSk7bGV0IGQ9e30scD17fSxtPW5ldyBXZWFrTWFwLHU9W10sZj1udWxsLGc9ITEsaD1udWxsLGI9bnVsbCx5PW51bGwsXz1udWxsLEM9bnVsbCxNPW51bGwsdj1udWxsLHg9ITEsTz1udWxsLFA9bnVsbCx3PW51bGwsaz1udWxsLFM9bnVsbDtjb25zdCBEPXQuZ2V0UGFyYW1ldGVyKDM1NjYxKTtsZXQgUj0hMSxFPTA7Y29uc3QgQT10LmdldFBhcmFtZXRlcig3OTM4KTstMSE9PUEuaW5kZXhPZigiV2ViR0wiKT8oRT1wYXJzZUZsb2F0KC9eV2ViR0wgKFxkKS8uZXhlYyhBKVsxXSksUj1FPj0xKTotMSE9PUEuaW5kZXhPZigiT3BlbkdMIEVTIikmJihFPXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFxkKS8uZXhlYyhBKVsxXSksUj1FPj0yKTtsZXQgVD1udWxsLE49e307Y29uc3Qgej10LmdldFBhcmFtZXRlcigzMDg4KSxJPXQuZ2V0UGFyYW1ldGVyKDI5NzgpLEg9KG5ldyB0bHQpLmZyb21BcnJheSh6KSxGPShuZXcgdGx0KS5mcm9tQXJyYXkoSSk7ZnVuY3Rpb24gTChlLG4sbyl7Y29uc3QgaT1uZXcgVWludDhBcnJheSg0KSxhPXQuY3JlYXRlVGV4dHVyZSgpO3QuYmluZFRleHR1cmUoZSxhKSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MSw5NzI4KSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MCw5NzI4KTtmb3IobGV0IGU9MDtlPG87ZSsrKXQudGV4SW1hZ2UyRChuK2UsMCw2NDA4LDEsMSwwLDY0MDgsNTEyMSxpKTtyZXR1cm4gYX1jb25zdCBCPXt9O2Z1bmN0aW9uIFYoZSl7ITAhPT1kW2VdJiYodC5lbmFibGUoZSksZFtlXT0hMCl9ZnVuY3Rpb24gVShlKXshMSE9PWRbZV0mJih0LmRpc2FibGUoZSksZFtlXT0hMSl9QlszNTUzXT1MKDM1NTMsMzU1MywxKSxCWzM0MDY3XT1MKDM0MDY3LDM0MDY5LDYpLGkuc2V0Q2xlYXIoMCwwLDAsMSksci5zZXRDbGVhcigxKSxsLnNldENsZWFyKDApLFYoMjkyOSksci5zZXRGdW5jKDMpLFkoITEpLHEoMSksVigyODg0KSxHKDApO2NvbnN0IGo9e1tZcnRdOjMyNzc0LDEwMTozMjc3OCwxMDI6MzI3Nzl9O2lmKG8palsxMDNdPTMyNzc1LGpbMTA0XT0zMjc3NjtlbHNle2NvbnN0IHQ9ZS5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKTtudWxsIT09dCYmKGpbMTAzXT10Lk1JTl9FWFQsalsxMDRdPXQuTUFYX0VYVCl9Y29uc3QgVz17MjAwOjAsMjAxOjEsMjAyOjc2OCwyMDQ6NzcwLDIxMDo3NzYsMjA4Ojc3NCwyMDY6NzcyLDIwMzo3NjksMjA1Ojc3MSwyMDk6Nzc1LDIwNzo3NzN9O2Z1bmN0aW9uIEcoZSxuLG8saSxhLHIscyxsKXtpZigwIT09ZSl7aWYoITE9PT1nJiYoVigzMDQyKSxnPSEwKSw1PT09ZSlhPWF8fG4scj1yfHxvLHM9c3x8aSxuPT09YiYmYT09PUN8fCh0LmJsZW5kRXF1YXRpb25TZXBhcmF0ZShqW25dLGpbYV0pLGI9bixDPWEpLG89PT15JiZpPT09XyYmcj09PU0mJnM9PT12fHwodC5ibGVuZEZ1bmNTZXBhcmF0ZShXW29dLFdbaV0sV1tyXSxXW3NdKSx5PW8sXz1pLE09cix2PXMpLGg9ZSx4PW51bGw7ZWxzZSBpZihlIT09aHx8bCE9PXgpe2lmKGI9PT1ZcnQmJkM9PT1ZcnR8fCh0LmJsZW5kRXF1YXRpb24oMzI3NzQpLGI9WXJ0LEM9WXJ0KSxsKXN3aXRjaChlKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDEsMSk7YnJlYWs7Y2FzZSAzOnQuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjksMCwxKTticmVhaztjYXNlIDQ6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OCwwLDc3MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGUpfWVsc2Ugc3dpdGNoKGUpe2Nhc2UgMTp0LmJsZW5kRnVuY1NlcGFyYXRlKDc3MCw3NzEsMSw3NzEpO2JyZWFrO2Nhc2UgMjp0LmJsZW5kRnVuYyg3NzAsMSk7YnJlYWs7Y2FzZSAzOnQuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjksMCwxKTticmVhaztjYXNlIDQ6dC5ibGVuZEZ1bmMoMCw3NjgpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixlKX15PW51bGwsXz1udWxsLE09bnVsbCx2PW51bGwsaD1lLHg9bH19ZWxzZSEwPT09ZyYmKFUoMzA0MiksZz0hMSl9ZnVuY3Rpb24gWShlKXtPIT09ZSYmKHQuZnJvbnRGYWNlKGU/MjMwNDoyMzA1KSxPPWUpfWZ1bmN0aW9uIHEoZSl7MCE9PWU/KFYoMjg4NCksZSE9PVAmJnQuY3VsbEZhY2UoMT09PWU/MTAyOToyPT09ZT8xMDI4OjEwMzIpKTpVKDI4ODQpLFA9ZX1mdW5jdGlvbiBaKGUsbixvKXtlPyhWKDMyODIzKSxrPT09biYmUz09PW98fCh0LnBvbHlnb25PZmZzZXQobixvKSxrPW4sUz1vKSk6VSgzMjgyMyl9ZnVuY3Rpb24gWChlKXt2b2lkIDA9PT1lJiYoZT0zMzk4NCtELTEpLFQhPT1lJiYodC5hY3RpdmVUZXh0dXJlKGUpLFQ9ZSl9cmV0dXJue2J1ZmZlcnM6e2NvbG9yOmksZGVwdGg6cixzdGVuY2lsOmx9LGVuYWJsZTpWLGRpc2FibGU6VSxiaW5kRnJhbWVidWZmZXI6ZnVuY3Rpb24gSyhlLG4pe3JldHVybiBwW2VdIT09biYmKHQuYmluZEZyYW1lYnVmZmVyKGUsbikscFtlXT1uLG8mJigzNjAwOT09PWUmJihwWzM2MTYwXT1uKSwzNjE2MD09PWUmJihwWzM2MDA5XT1uKSksITApfSxkcmF3QnVmZmVyczpmdW5jdGlvbiBKKG8saSl7bGV0IGE9dSxyPSExO2lmKG8paWYoYT1tLmdldChpKSx2b2lkIDA9PT1hJiYoYT1bXSxtLnNldChpLGEpKSxvLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpe2NvbnN0IHQ9by50ZXh0dXJlO2lmKGEubGVuZ3RoIT09dC5sZW5ndGh8fDM2MDY0IT09YVswXSl7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKWFbZV09MzYwNjQrZTthLmxlbmd0aD10Lmxlbmd0aCxyPSEwfX1lbHNlIDM2MDY0IT09YVswXSYmKGFbMF09MzYwNjQscj0hMCk7ZWxzZSAxMDI5IT09YVswXSYmKGFbMF09MTAyOSxyPSEwKTtyJiYobi5pc1dlYkdMMj90LmRyYXdCdWZmZXJzKGEpOmUuZ2V0KCJXRUJHTF9kcmF3X2J1ZmZlcnMiKS5kcmF3QnVmZmVyc1dFQkdMKGEpKX0sdXNlUHJvZ3JhbTpmdW5jdGlvbiBRKGUpe3JldHVybiBmIT09ZSYmKHQudXNlUHJvZ3JhbShlKSxmPWUsITApfSxzZXRCbGVuZGluZzpHLHNldE1hdGVyaWFsOmZ1bmN0aW9uICQodCxlKXsyPT09dC5zaWRlP1UoMjg4NCk6VigyODg0KTtsZXQgbj0xPT09dC5zaWRlO2UmJihuPSFuKSxZKG4pLDE9PT10LmJsZW5kaW5nJiYhMT09PXQudHJhbnNwYXJlbnQ/RygwKTpHKHQuYmxlbmRpbmcsdC5ibGVuZEVxdWF0aW9uLHQuYmxlbmRTcmMsdC5ibGVuZERzdCx0LmJsZW5kRXF1YXRpb25BbHBoYSx0LmJsZW5kU3JjQWxwaGEsdC5ibGVuZERzdEFscGhhLHQucHJlbXVsdGlwbGllZEFscGhhKSxyLnNldEZ1bmModC5kZXB0aEZ1bmMpLHIuc2V0VGVzdCh0LmRlcHRoVGVzdCksci5zZXRNYXNrKHQuZGVwdGhXcml0ZSksaS5zZXRNYXNrKHQuY29sb3JXcml0ZSk7Y29uc3Qgbz10LnN0ZW5jaWxXcml0ZTtsLnNldFRlc3QobyksbyYmKGwuc2V0TWFzayh0LnN0ZW5jaWxXcml0ZU1hc2spLGwuc2V0RnVuYyh0LnN0ZW5jaWxGdW5jLHQuc3RlbmNpbFJlZix0LnN0ZW5jaWxGdW5jTWFzayksbC5zZXRPcCh0LnN0ZW5jaWxGYWlsLHQuc3RlbmNpbFpGYWlsLHQuc3RlbmNpbFpQYXNzKSksWih0LnBvbHlnb25PZmZzZXQsdC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHQucG9seWdvbk9mZnNldFVuaXRzKSwhMD09PXQuYWxwaGFUb0NvdmVyYWdlP1YoMzI5MjYpOlUoMzI5MjYpfSxzZXRGbGlwU2lkZWQ6WSxzZXRDdWxsRmFjZTpxLHNldExpbmVXaWR0aDpmdW5jdGlvbiB0dChlKXtlIT09dyYmKFImJnQubGluZVdpZHRoKGUpLHc9ZSl9LHNldFBvbHlnb25PZmZzZXQ6WixzZXRTY2lzc29yVGVzdDpmdW5jdGlvbiBldCh0KXt0P1YoMzA4OSk6VSgzMDg5KX0sYWN0aXZlVGV4dHVyZTpYLGJpbmRUZXh0dXJlOmZ1bmN0aW9uIG50KGUsbil7bnVsbD09PVQmJlgoKTtsZXQgbz1OW1RdO3ZvaWQgMD09PW8mJihvPXt0eXBlOnZvaWQgMCx0ZXh0dXJlOnZvaWQgMH0sTltUXT1vKSxvLnR5cGU9PT1lJiZvLnRleHR1cmU9PT1ufHwodC5iaW5kVGV4dHVyZShlLG58fEJbZV0pLG8udHlwZT1lLG8udGV4dHVyZT1uKX0sdW5iaW5kVGV4dHVyZTpmdW5jdGlvbiBvdCgpe2NvbnN0IGU9TltUXTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnR5cGUmJih0LmJpbmRUZXh0dXJlKGUudHlwZSxudWxsKSxlLnR5cGU9dm9pZCAwLGUudGV4dHVyZT12b2lkIDApfSxjb21wcmVzc2VkVGV4SW1hZ2UyRDpmdW5jdGlvbiBpdCgpe3RyeXt0LmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTJEOmZ1bmN0aW9uIGF0KCl7dHJ5e3QudGV4SW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4SW1hZ2UzRDpmdW5jdGlvbiBydCgpe3RyeXt0LnRleEltYWdlM0QuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHRleFN0b3JhZ2UyRDpmdW5jdGlvbiBzdCgpe3RyeXt0LnRleFN0b3JhZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4U3RvcmFnZTNEOmZ1bmN0aW9uIGx0KCl7dHJ5e3QudGV4U3RvcmFnZTNELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhTdWJJbWFnZTJEOmZ1bmN0aW9uIGN0KCl7dHJ5e3QudGV4U3ViSW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4U3ViSW1hZ2UzRDpmdW5jdGlvbiBkdCgpe3RyeXt0LnRleFN1YkltYWdlM0QuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEOmZ1bmN0aW9uIHB0KCl7dHJ5e3QuY29tcHJlc3NlZFRleFN1YkltYWdlMkQuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHNjaXNzb3I6ZnVuY3Rpb24gbXQoZSl7ITE9PT1ILmVxdWFscyhlKSYmKHQuc2Npc3NvcihlLngsZS55LGUueixlLncpLEguY29weShlKSl9LHZpZXdwb3J0OmZ1bmN0aW9uIHV0KGUpeyExPT09Ri5lcXVhbHMoZSkmJih0LnZpZXdwb3J0KGUueCxlLnksZS56LGUudyksRi5jb3B5KGUpKX0scmVzZXQ6ZnVuY3Rpb24gZnQoKXt0LmRpc2FibGUoMzA0MiksdC5kaXNhYmxlKDI4ODQpLHQuZGlzYWJsZSgyOTI5KSx0LmRpc2FibGUoMzI4MjMpLHQuZGlzYWJsZSgzMDg5KSx0LmRpc2FibGUoMjk2MCksdC5kaXNhYmxlKDMyOTI2KSx0LmJsZW5kRXF1YXRpb24oMzI3NzQpLHQuYmxlbmRGdW5jKDEsMCksdC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDAsMSwwKSx0LmNvbG9yTWFzayghMCwhMCwhMCwhMCksdC5jbGVhckNvbG9yKDAsMCwwLDApLHQuZGVwdGhNYXNrKCEwKSx0LmRlcHRoRnVuYyg1MTMpLHQuY2xlYXJEZXB0aCgxKSx0LnN0ZW5jaWxNYXNrKDQyOTQ5NjcyOTUpLHQuc3RlbmNpbEZ1bmMoNTE5LDAsNDI5NDk2NzI5NSksdC5zdGVuY2lsT3AoNzY4MCw3NjgwLDc2ODApLHQuY2xlYXJTdGVuY2lsKDApLHQuY3VsbEZhY2UoMTAyOSksdC5mcm9udEZhY2UoMjMwNSksdC5wb2x5Z29uT2Zmc2V0KDAsMCksdC5hY3RpdmVUZXh0dXJlKDMzOTg0KSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKSwhMD09PW8mJih0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxudWxsKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSksdC51c2VQcm9ncmFtKG51bGwpLHQubGluZVdpZHRoKDEpLHQuc2Npc3NvcigwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSx0LnZpZXdwb3J0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLGQ9e30sVD1udWxsLE49e30scD17fSxtPW5ldyBXZWFrTWFwLHU9W10sZj1udWxsLGc9ITEsaD1udWxsLGI9bnVsbCx5PW51bGwsXz1udWxsLEM9bnVsbCxNPW51bGwsdj1udWxsLHg9ITEsTz1udWxsLFA9bnVsbCx3PW51bGwsaz1udWxsLFM9bnVsbCxILnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxGLnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxpLnJlc2V0KCksci5yZXNldCgpLGwucmVzZXQoKX19fWZ1bmN0aW9uIEptdCh0LGUsbixvLGksYSxyKXtjb25zdCBzPWkuaXNXZWJHTDIsbD1pLm1heFRleHR1cmVzLGM9aS5tYXhDdWJlbWFwU2l6ZSxkPWkubWF4VGV4dHVyZVNpemUscD1pLm1heFNhbXBsZXMsbT1lLmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIik/ZS5nZXQoIldFQkdMX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpOnZvaWQgMCx1PW5ldyBXZWFrTWFwO2xldCBmLGc9ITE7dHJ5e2c9InVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMmJm51bGwhPT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKX1jYXRjaCh0KXt9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBnP25ldyBPZmZzY3JlZW5DYW52YXModCxlKTpWc3QoImNhbnZhcyIpfWZ1bmN0aW9uIGIodCxlLG4sbyl7bGV0IGk9MTtpZigodC53aWR0aD5vfHx0LmhlaWdodD5vKSYmKGk9by9NYXRoLm1heCh0LndpZHRoLHQuaGVpZ2h0KSksaTwxfHwhMD09PWUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEltYWdlRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZUJpdG1hcCYmdCBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXtjb25zdCBvPWU/SHN0Ok1hdGguZmxvb3IsYT1vKGkqdC53aWR0aCkscj1vKGkqdC5oZWlnaHQpO3ZvaWQgMD09PWYmJihmPWgoYSxyKSk7Y29uc3Qgcz1uP2goYSxyKTpmO3Mud2lkdGg9YSxzLmhlaWdodD1yO3JldHVybiBzLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKHQsMCwwLGEsciksY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGhhcyBiZWVuIHJlc2l6ZWQgZnJvbSAoIit0LndpZHRoKyJ4Iit0LmhlaWdodCsiKSB0byAoIithKyJ4IityKyIpLiIpLHN9cmV0dXJuImRhdGEiaW4gdCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBJbWFnZSBpbiBEYXRhVGV4dHVyZSBpcyB0b28gYmlnICgiK3Qud2lkdGgrIngiK3QuaGVpZ2h0KyIpLiIpLHR9cmV0dXJuIHR9ZnVuY3Rpb24geSh0KXtyZXR1cm4gSXN0KHQud2lkdGgpJiZJc3QodC5oZWlnaHQpfWZ1bmN0aW9uIF8odCxlKXtyZXR1cm4gdC5nZW5lcmF0ZU1pcG1hcHMmJmUmJnQubWluRmlsdGVyIT09JHJ0JiZ0Lm1pbkZpbHRlciE9PXRzdH1mdW5jdGlvbiBDKGUpe3QuZ2VuZXJhdGVNaXBtYXAoZSl9ZnVuY3Rpb24gTShuLG8saSxhLHI9ITEpe2lmKCExPT09cylyZXR1cm4gbztpZihudWxsIT09bil7aWYodm9pZCAwIT09dFtuXSlyZXR1cm4gdFtuXTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gdXNlIG5vbi1leGlzdGluZyBXZWJHTCBpbnRlcm5hbCBmb3JtYXQgJyIrbisiJyIpfWxldCBsPW87cmV0dXJuIDY0MDM9PT1vJiYoNTEyNj09PWkmJihsPTMzMzI2KSw1MTMxPT09aSYmKGw9MzMzMjUpLDUxMjE9PT1pJiYobD0zMzMyMSkpLDMzMzE5PT09byYmKDUxMjY9PT1pJiYobD0zMzMyOCksNTEzMT09PWkmJihsPTMzMzI3KSw1MTIxPT09aSYmKGw9MzMzMjMpKSw2NDA4PT09byYmKDUxMjY9PT1pJiYobD0zNDgzNiksNTEzMT09PWkmJihsPTM0ODQyKSw1MTIxPT09aSYmKGw9YT09PXhzdCYmITE9PT1yPzM1OTA3OjMyODU2KSwzMjgxOT09PWkmJihsPTMyODU0KSwzMjgyMD09PWkmJihsPTMyODU1KSksMzMzMjUhPT1sJiYzMzMyNiE9PWwmJjMzMzI3IT09bCYmMzMzMjghPT1sJiYzNDg0MiE9PWwmJjM0ODM2IT09bHx8ZS5nZXQoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSxsfWZ1bmN0aW9uIHYodCxlLG4pe3JldHVybiEwPT09Xyh0LG4pfHx0LmlzRnJhbWVidWZmZXJUZXh0dXJlJiZ0Lm1pbkZpbHRlciE9PSRydCYmdC5taW5GaWx0ZXIhPT10c3Q/TWF0aC5sb2cyKE1hdGgubWF4KGUud2lkdGgsZS5oZWlnaHQpKSsxOnZvaWQgMCE9PXQubWlwbWFwcyYmdC5taXBtYXBzLmxlbmd0aD4wP3QubWlwbWFwcy5sZW5ndGg6dC5pc0NvbXByZXNzZWRUZXh0dXJlJiZBcnJheS5pc0FycmF5KHQuaW1hZ2UpP2UubWlwbWFwcy5sZW5ndGg6MX1mdW5jdGlvbiB4KHQpe3JldHVybiB0PT09JHJ0fHwxMDA0PT09dHx8MTAwNT09PXQ/OTcyODo5NzI5fWZ1bmN0aW9uIE8oZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLE8pLChmdW5jdGlvbiBpKGUpe2NvbnN0IG49by5nZXQoZSk7aWYodm9pZCAwPT09bi5fX3dlYmdsSW5pdClyZXR1cm47dC5kZWxldGVUZXh0dXJlKG4uX193ZWJnbFRleHR1cmUpLG8ucmVtb3ZlKGUpfSkobiksbi5pc1ZpZGVvVGV4dHVyZSYmdS5kZWxldGUobiksci5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiBQKGUpe2NvbnN0IG49ZS50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixQKSwoZnVuY3Rpb24gaShlKXtjb25zdCBuPWUudGV4dHVyZSxpPW8uZ2V0KGUpLGE9by5nZXQobik7aWYoIWUpcmV0dXJuO3ZvaWQgMCE9PWEuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoYS5fX3dlYmdsVGV4dHVyZSksci5tZW1vcnkudGV4dHVyZXMtLSk7ZS5kZXB0aFRleHR1cmUmJmUuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KWZvcihsZXQgZT0wO2U8NjtlKyspdC5kZWxldGVGcmFtZWJ1ZmZlcihpLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXSksaS5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGkuX193ZWJnbERlcHRoYnVmZmVyW2VdKTtlbHNlIHQuZGVsZXRlRnJhbWVidWZmZXIoaS5fX3dlYmdsRnJhbWVidWZmZXIpLGkuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xEZXB0aGJ1ZmZlciksaS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXImJnQuZGVsZXRlRnJhbWVidWZmZXIoaS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLGkuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksaS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGkuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyKTtpZihlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpZm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPW8uZ2V0KG5bZV0pO2kuX193ZWJnbFRleHR1cmUmJih0LmRlbGV0ZVRleHR1cmUoaS5fX3dlYmdsVGV4dHVyZSksci5tZW1vcnkudGV4dHVyZXMtLSksby5yZW1vdmUobltlXSl9by5yZW1vdmUobiksby5yZW1vdmUoZSl9KShuKX1sZXQgdz0wO2Z1bmN0aW9uIGsodCxlKXtjb25zdCBpPW8uZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiBhKHQpe2NvbnN0IGU9ci5yZW5kZXIuZnJhbWU7dS5nZXQodCkhPT1lJiYodS5zZXQodCxlKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZpLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3Qgbj10LmltYWdlO2lmKHZvaWQgMD09PW4pY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09bi5jb21wbGV0ZSlyZXR1cm4gdm9pZCBUKGksdCxlKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19bi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU1MyxpLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBTKGUsaSl7Y29uc3Qgcj1vLmdldChlKTtlLnZlcnNpb24+MCYmci5fX3ZlcnNpb24hPT1lLnZlcnNpb24/KGZ1bmN0aW9uIGwoZSxvLGkpe2lmKDYhPT1vLmltYWdlLmxlbmd0aClyZXR1cm47QShlLG8pLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtpKSxuLmJpbmRUZXh0dXJlKDM0MDY3LGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsby5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxvLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxvLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCByPW8mJihvLmlzQ29tcHJlc3NlZFRleHR1cmV8fG8uaW1hZ2VbMF0uaXNDb21wcmVzc2VkVGV4dHVyZSksbD1vLmltYWdlWzBdJiZvLmltYWdlWzBdLmlzRGF0YVRleHR1cmUsZD1bXTtmb3IobGV0IHQ9MDt0PDY7dCsrKWRbdF09cnx8bD9sP28uaW1hZ2VbdF0uaW1hZ2U6by5pbWFnZVt0XTpiKG8uaW1hZ2VbdF0sITEsITAsYyksZFt0XT1GKG8sZFt0XSk7Y29uc3QgcD1kWzBdLG09eShwKXx8cyx1PWEuY29udmVydChvLmZvcm1hdCxvLmVuY29kaW5nKSxmPWEuY29udmVydChvLnR5cGUpLGc9TShvLmludGVybmFsRm9ybWF0LHUsZixvLmVuY29kaW5nKSxoPXMmJiEwIT09by5pc1ZpZGVvVGV4dHVyZSx4PXZvaWQgMD09PWUuX192ZXJzaW9uO2xldCBPLFA9dihvLHAsbSk7aWYoRSgzNDA2NyxvLG0pLHIpe2gmJngmJm4udGV4U3RvcmFnZTJEKDM0MDY3LFAsZyxwLndpZHRoLHAuaGVpZ2h0KTtmb3IobGV0IHQ9MDt0PDY7dCsrKXtPPWRbdF0ubWlwbWFwcztmb3IobGV0IGU9MDtlPE8ubGVuZ3RoO2UrKyl7Y29uc3QgaT1PW2VdO28uZm9ybWF0IT09bHN0P251bGwhPT11P2g/bi5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNDA2OSt0LGUsMCwwLGkud2lkdGgsaS5oZWlnaHQsdSxpLmRhdGEpOm4uY29tcHJlc3NlZFRleEltYWdlMkQoMzQwNjkrdCxlLGcsaS53aWR0aCxpLmhlaWdodCwwLGkuZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAuc2V0VGV4dHVyZUN1YmUoKSIpOmg/bi50ZXhTdWJJbWFnZTJEKDM0MDY5K3QsZSwwLDAsaS53aWR0aCxpLmhlaWdodCx1LGYsaS5kYXRhKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlLGcsaS53aWR0aCxpLmhlaWdodCwwLHUsZixpLmRhdGEpfX19ZWxzZXtPPW8ubWlwbWFwcyxoJiZ4JiYoTy5sZW5ndGg+MCYmUCsrLG4udGV4U3RvcmFnZTJEKDM0MDY3LFAsZyxkWzBdLndpZHRoLGRbMF0uaGVpZ2h0KSk7Zm9yKGxldCB0PTA7dDw2O3QrKylpZihsKXtoP24udGV4U3ViSW1hZ2UyRCgzNDA2OSt0LDAsMCwwLGRbdF0ud2lkdGgsZFt0XS5oZWlnaHQsdSxmLGRbdF0uZGF0YSk6bi50ZXhJbWFnZTJEKDM0MDY5K3QsMCxnLGRbdF0ud2lkdGgsZFt0XS5oZWlnaHQsMCx1LGYsZFt0XS5kYXRhKTtmb3IobGV0IGU9MDtlPE8ubGVuZ3RoO2UrKyl7Y29uc3Qgbz1PW2VdLmltYWdlW3RdLmltYWdlO2g/bi50ZXhTdWJJbWFnZTJEKDM0MDY5K3QsZSsxLDAsMCxvLndpZHRoLG8uaGVpZ2h0LHUsZixvLmRhdGEpOm4udGV4SW1hZ2UyRCgzNDA2OSt0LGUrMSxnLG8ud2lkdGgsby5oZWlnaHQsMCx1LGYsby5kYXRhKX19ZWxzZXtoP24udGV4U3ViSW1hZ2UyRCgzNDA2OSt0LDAsMCwwLHUsZixkW3RdKTpuLnRleEltYWdlMkQoMzQwNjkrdCwwLGcsdSxmLGRbdF0pO2ZvcihsZXQgZT0wO2U8Ty5sZW5ndGg7ZSsrKXtjb25zdCBvPU9bZV07aD9uLnRleFN1YkltYWdlMkQoMzQwNjkrdCxlKzEsMCwwLHUsZixvLmltYWdlW3RdKTpuLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsZyx1LGYsby5pbWFnZVt0XSl9fX1fKG8sbSkmJkMoMzQwNjcpO2UuX192ZXJzaW9uPW8udmVyc2lvbixvLm9uVXBkYXRlJiZvLm9uVXBkYXRlKG8pfSkocixlLGkpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQraSksbi5iaW5kVGV4dHVyZSgzNDA2NyxyLl9fd2ViZ2xUZXh0dXJlKSl9Y29uc3QgRD17W0tydF06MTA0OTcsW0pydF06MzMwNzEsW1FydF06MzM2NDh9LFI9e1skcnRdOjk3MjgsMTAwNDo5OTg0LDEwMDU6OTk4NixbdHN0XTo5NzI5LDEwMDc6OTk4NSxbZXN0XTo5OTg3fTtmdW5jdGlvbiBFKG4sYSxyKXtpZihyPyh0LnRleFBhcmFtZXRlcmkobiwxMDI0MixEW2Eud3JhcFNdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MyxEW2Eud3JhcFRdKSwzMjg3OSE9PW4mJjM1ODY2IT09bnx8dC50ZXhQYXJhbWV0ZXJpKG4sMzI4ODIsRFthLndyYXBSXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDAsUlthLm1hZ0ZpbHRlcl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQxLFJbYS5taW5GaWx0ZXJdKSk6KHQudGV4UGFyYW1ldGVyaShuLDEwMjQyLDMzMDcxKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MywzMzA3MSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLDMzMDcxKSxhLndyYXBTPT09SnJ0JiZhLndyYXBUPT09SnJ0fHxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS53cmFwUyBhbmQgVGV4dHVyZS53cmFwVCBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLkNsYW1wVG9FZGdlV3JhcHBpbmcuIiksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDAseChhLm1hZ0ZpbHRlcikpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQxLHgoYS5taW5GaWx0ZXIpKSxhLm1pbkZpbHRlciE9PSRydCYmYS5taW5GaWx0ZXIhPT10c3QmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLm1pbkZpbHRlciBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLk5lYXJlc3RGaWx0ZXIgb3IgVEhSRUUuTGluZWFyRmlsdGVyLiIpKSwhMD09PWUuaGFzKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSl7Y29uc3Qgcj1lLmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7aWYoYS50eXBlPT09YXN0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSlyZXR1cm47aWYoITE9PT1zJiZhLnR5cGU9PT1yc3QmJiExPT09ZS5oYXMoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpcmV0dXJuOyhhLmFuaXNvdHJvcHk+MXx8by5nZXQoYSkuX19jdXJyZW50QW5pc290cm9weSkmJih0LnRleFBhcmFtZXRlcmYobixyLlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULE1hdGgubWluKGEuYW5pc290cm9weSxpLmdldE1heEFuaXNvdHJvcHkoKSkpLG8uZ2V0KGEpLl9fY3VycmVudEFuaXNvdHJvcHk9YS5hbmlzb3Ryb3B5KX19ZnVuY3Rpb24gQShlLG4pe3ZvaWQgMD09PWUuX193ZWJnbEluaXQmJihlLl9fd2ViZ2xJbml0PSEwLG4uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsTyksZS5fX3dlYmdsVGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSxyLm1lbW9yeS50ZXh0dXJlcysrKX1mdW5jdGlvbiBUKGUsbyxpKXtsZXQgcj0zNTUzO28uaXNEYXRhVGV4dHVyZTJEQXJyYXkmJihyPTM1ODY2KSxvLmlzRGF0YVRleHR1cmUzRCYmKHI9MzI4NzkpLEEoZSxvKSxuLmFjdGl2ZVRleHR1cmUoMzM5ODQraSksbi5iaW5kVGV4dHVyZShyLGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsby5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxvLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxvLnVucGFja0FsaWdubWVudCksdC5waXhlbFN0b3JlaSgzNzQ0MywwKTtjb25zdCBsPShmdW5jdGlvbiBjKHQpe3JldHVybiFzJiYodC53cmFwUyE9PUpydHx8dC53cmFwVCE9PUpydHx8dC5taW5GaWx0ZXIhPT0kcnQmJnQubWluRmlsdGVyIT09dHN0KX0pKG8pJiYhMT09PXkoby5pbWFnZSk7bGV0IHA9YihvLmltYWdlLGwsITEsZCk7cD1GKG8scCk7Y29uc3QgbT15KHApfHxzLHU9YS5jb252ZXJ0KG8uZm9ybWF0LG8uZW5jb2RpbmcpO2xldCBmLGc9YS5jb252ZXJ0KG8udHlwZSksaD1NKG8uaW50ZXJuYWxGb3JtYXQsdSxnLG8uZW5jb2Rpbmcsby5pc1ZpZGVvVGV4dHVyZSk7RShyLG8sbSk7Y29uc3QgeD1vLm1pcG1hcHMsTz1zJiYhMCE9PW8uaXNWaWRlb1RleHR1cmUsUD12b2lkIDA9PT1lLl9fdmVyc2lvbix3PXYobyxwLG0pO2lmKG8uaXNEZXB0aFRleHR1cmUpaD02NDAyLHM/aD1vLnR5cGU9PT1hc3Q/MzYwMTI6by50eXBlPT09aXN0PzMzMTkwOm8udHlwZT09PXNzdD8zNTA1NjozMzE4OTpvLnR5cGU9PT1hc3QmJmNvbnNvbGUuZXJyb3IoIldlYkdMUmVuZGVyZXI6IEZsb2F0aW5nIHBvaW50IGRlcHRoIHRleHR1cmUgcmVxdWlyZXMgV2ViR0wyLiIpLG8uZm9ybWF0PT09Y3N0JiY2NDAyPT09aCYmby50eXBlIT09b3N0JiZvLnR5cGUhPT1pc3QmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZFNob3J0VHlwZSBvciBVbnNpZ25lZEludFR5cGUgZm9yIERlcHRoRm9ybWF0IERlcHRoVGV4dHVyZS4iKSxvLnR5cGU9b3N0LGc9YS5jb252ZXJ0KG8udHlwZSkpLG8uZm9ybWF0PT09ZHN0JiY2NDAyPT09aCYmKGg9MzQwNDEsby50eXBlIT09c3N0JiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRJbnQyNDhUeXBlIGZvciBEZXB0aFN0ZW5jaWxGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLG8udHlwZT1zc3QsZz1hLmNvbnZlcnQoby50eXBlKSkpLE8mJlA/bi50ZXhTdG9yYWdlMkQoMzU1MywxLGgscC53aWR0aCxwLmhlaWdodCk6bi50ZXhJbWFnZTJEKDM1NTMsMCxoLHAud2lkdGgscC5oZWlnaHQsMCx1LGcsbnVsbCk7ZWxzZSBpZihvLmlzRGF0YVRleHR1cmUpaWYoeC5sZW5ndGg+MCYmbSl7TyYmUCYmbi50ZXhTdG9yYWdlMkQoMzU1Myx3LGgseFswXS53aWR0aCx4WzBdLmhlaWdodCk7Zm9yKGxldCB0PTAsZT14Lmxlbmd0aDt0PGU7dCsrKWY9eFt0XSxPP24udGV4U3ViSW1hZ2UyRCgzNTUzLDAsMCwwLGYud2lkdGgsZi5oZWlnaHQsdSxnLGYuZGF0YSk6bi50ZXhJbWFnZTJEKDM1NTMsdCxoLGYud2lkdGgsZi5oZWlnaHQsMCx1LGcsZi5kYXRhKTtvLmdlbmVyYXRlTWlwbWFwcz0hMX1lbHNlIE8/KFAmJm4udGV4U3RvcmFnZTJEKDM1NTMsdyxoLHAud2lkdGgscC5oZWlnaHQpLG4udGV4U3ViSW1hZ2UyRCgzNTUzLDAsMCwwLHAud2lkdGgscC5oZWlnaHQsdSxnLHAuZGF0YSkpOm4udGV4SW1hZ2UyRCgzNTUzLDAsaCxwLndpZHRoLHAuaGVpZ2h0LDAsdSxnLHAuZGF0YSk7ZWxzZSBpZihvLmlzQ29tcHJlc3NlZFRleHR1cmUpe08mJlAmJm4udGV4U3RvcmFnZTJEKDM1NTMsdyxoLHhbMF0ud2lkdGgseFswXS5oZWlnaHQpO2ZvcihsZXQgdD0wLGU9eC5sZW5ndGg7dDxlO3QrKylmPXhbdF0sby5mb3JtYXQhPT1sc3Q/bnVsbCE9PXU/Tz9uLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsdCwwLDAsZi53aWR0aCxmLmhlaWdodCx1LGYuZGF0YSk6bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQsaCxmLndpZHRoLGYuaGVpZ2h0LDAsZi5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpPP24udGV4U3ViSW1hZ2UyRCgzNTUzLHQsMCwwLGYud2lkdGgsZi5oZWlnaHQsdSxnLGYuZGF0YSk6bi50ZXhJbWFnZTJEKDM1NTMsdCxoLGYud2lkdGgsZi5oZWlnaHQsMCx1LGcsZi5kYXRhKX1lbHNlIGlmKG8uaXNEYXRhVGV4dHVyZTJEQXJyYXkpTz8oUCYmbi50ZXhTdG9yYWdlM0QoMzU4NjYsdyxoLHAud2lkdGgscC5oZWlnaHQscC5kZXB0aCksbi50ZXhTdWJJbWFnZTNEKDM1ODY2LDAsMCwwLDAscC53aWR0aCxwLmhlaWdodCxwLmRlcHRoLHUsZyxwLmRhdGEpKTpuLnRleEltYWdlM0QoMzU4NjYsMCxoLHAud2lkdGgscC5oZWlnaHQscC5kZXB0aCwwLHUsZyxwLmRhdGEpO2Vsc2UgaWYoby5pc0RhdGFUZXh0dXJlM0QpTz8oUCYmbi50ZXhTdG9yYWdlM0QoMzI4NzksdyxoLHAud2lkdGgscC5oZWlnaHQscC5kZXB0aCksbi50ZXhTdWJJbWFnZTNEKDMyODc5LDAsMCwwLDAscC53aWR0aCxwLmhlaWdodCxwLmRlcHRoLHUsZyxwLmRhdGEpKTpuLnRleEltYWdlM0QoMzI4NzksMCxoLHAud2lkdGgscC5oZWlnaHQscC5kZXB0aCwwLHUsZyxwLmRhdGEpO2Vsc2UgaWYoby5pc0ZyYW1lYnVmZmVyVGV4dHVyZSlPJiZQP24udGV4U3RvcmFnZTJEKDM1NTMsdyxoLHAud2lkdGgscC5oZWlnaHQpOm4udGV4SW1hZ2UyRCgzNTUzLDAsaCxwLndpZHRoLHAuaGVpZ2h0LDAsdSxnLG51bGwpO2Vsc2UgaWYoeC5sZW5ndGg+MCYmbSl7TyYmUCYmbi50ZXhTdG9yYWdlMkQoMzU1Myx3LGgseFswXS53aWR0aCx4WzBdLmhlaWdodCk7Zm9yKGxldCB0PTAsZT14Lmxlbmd0aDt0PGU7dCsrKWY9eFt0XSxPP24udGV4U3ViSW1hZ2UyRCgzNTUzLHQsMCwwLHUsZyxmKTpuLnRleEltYWdlMkQoMzU1Myx0LGgsdSxnLGYpO28uZ2VuZXJhdGVNaXBtYXBzPSExfWVsc2UgTz8oUCYmbi50ZXhTdG9yYWdlMkQoMzU1Myx3LGgscC53aWR0aCxwLmhlaWdodCksbi50ZXhTdWJJbWFnZTJEKDM1NTMsMCwwLDAsdSxnLHApKTpuLnRleEltYWdlMkQoMzU1MywwLGgsdSxnLHApO18obyxtKSYmQyhyKSxlLl9fdmVyc2lvbj1vLnZlcnNpb24sby5vblVwZGF0ZSYmby5vblVwZGF0ZShvKX1mdW5jdGlvbiBOKGUsaSxyLHMsbCl7Y29uc3QgYz1hLmNvbnZlcnQoci5mb3JtYXQsci5lbmNvZGluZyksZD1hLmNvbnZlcnQoci50eXBlKSxwPU0oci5pbnRlcm5hbEZvcm1hdCxjLGQsci5lbmNvZGluZyk7by5nZXQoaSkuX19oYXNFeHRlcm5hbFRleHR1cmVzfHwoMzI4Nzk9PT1sfHwzNTg2Nj09PWw/bi50ZXhJbWFnZTNEKGwsMCxwLGkud2lkdGgsaS5oZWlnaHQsaS5kZXB0aCwwLGMsZCxudWxsKTpuLnRleEltYWdlMkQobCwwLHAsaS53aWR0aCxpLmhlaWdodCwwLGMsZCxudWxsKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZSksaS51c2VSZW5kZXJUb1RleHR1cmU/bS5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLHMsbCxvLmdldChyKS5fX3dlYmdsVGV4dHVyZSwwLEgoaSkpOnQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLG8uZ2V0KHIpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIHooZSxuLG8pe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgaT0zMzE4OTtpZihvfHxuLnVzZVJlbmRlclRvVGV4dHVyZSl7Y29uc3QgZT1uLmRlcHRoVGV4dHVyZTtlJiZlLmlzRGVwdGhUZXh0dXJlJiYoZS50eXBlPT09YXN0P2k9MzYwMTI6ZS50eXBlPT09aXN0JiYoaT0zMzE5MCkpO2NvbnN0IG89SChuKTtuLnVzZVJlbmRlclRvVGV4dHVyZT9tLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgzNjE2MSxvLGksbi53aWR0aCxuLmhlaWdodCk6dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsbyxpLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLGksbi53aWR0aCxuLmhlaWdodCk7dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA5NiwzNjE2MSxlKX1lbHNlIGlmKG4uZGVwdGhCdWZmZXImJm4uc3RlbmNpbEJ1ZmZlcil7Y29uc3QgaT1IKG4pO28mJm4udXNlUmVuZGVyYnVmZmVyP3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLGksMzUwNTYsbi53aWR0aCxuLmhlaWdodCk6bi51c2VSZW5kZXJUb1RleHR1cmU/bS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoMzYxNjEsaSwzNTA1NixuLndpZHRoLG4uaGVpZ2h0KTp0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsMzQwNDEsbi53aWR0aCxuLmhlaWdodCksdC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzMzMwNiwzNjE2MSxlKX1lbHNle2NvbnN0IGU9ITA9PT1uLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM/bi50ZXh0dXJlWzBdOm4udGV4dHVyZSxpPWEuY29udmVydChlLmZvcm1hdCxlLmVuY29kaW5nKSxyPWEuY29udmVydChlLnR5cGUpLHM9TShlLmludGVybmFsRm9ybWF0LGkscixlLmVuY29kaW5nKSxsPUgobik7byYmbi51c2VSZW5kZXJidWZmZXI/dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsbCxzLG4ud2lkdGgsbi5oZWlnaHQpOm4udXNlUmVuZGVyVG9UZXh0dXJlP20ucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKDM2MTYxLGwscyxuLndpZHRoLG4uaGVpZ2h0KTp0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEscyxuLndpZHRoLG4uaGVpZ2h0KX10LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCl9ZnVuY3Rpb24gSShlKXtjb25zdCBpPW8uZ2V0KGUpLGE9ITA9PT1lLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0O2lmKGUuZGVwdGhUZXh0dXJlJiYhaS5fX2F1dG9BbGxvY2F0ZURlcHRoQnVmZmVyKXtpZihhKXRocm93IG5ldyBFcnJvcigidGFyZ2V0LmRlcHRoVGV4dHVyZSBub3Qgc3VwcG9ydGVkIGluIEN1YmUgcmVuZGVyIHRhcmdldHMiKTshKGZ1bmN0aW9uIHIoZSxpKXtpZihpJiZpLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXRocm93IG5ldyBFcnJvcigiRGVwdGggVGV4dHVyZSB3aXRoIGN1YmUgcmVuZGVyIHRhcmdldHMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLCFpLmRlcHRoVGV4dHVyZXx8IWkuZGVwdGhUZXh0dXJlLmlzRGVwdGhUZXh0dXJlKXRocm93IG5ldyBFcnJvcigicmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFRIUkVFLkRlcHRoVGV4dHVyZSIpO28uZ2V0KGkuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZSYmaS5kZXB0aFRleHR1cmUuaW1hZ2Uud2lkdGg9PT1pLndpZHRoJiZpLmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQ9PT1pLmhlaWdodHx8KGkuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPWkud2lkdGgsaS5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PWkuaGVpZ2h0LGkuZGVwdGhUZXh0dXJlLm5lZWRzVXBkYXRlPSEwKSxrKGkuZGVwdGhUZXh0dXJlLDApO2NvbnN0IGE9by5nZXQoaS5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlLHI9SChpKTtpZihpLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1jc3QpaS51c2VSZW5kZXJUb1RleHR1cmU/bS5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLDM2MDk2LDM1NTMsYSwwLHIpOnQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1MyxhLDApO2Vsc2V7aWYoaS5kZXB0aFRleHR1cmUuZm9ybWF0IT09ZHN0KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBkZXB0aFRleHR1cmUgZm9ybWF0Iik7aS51c2VSZW5kZXJUb1RleHR1cmU/bS5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLDMzMzA2LDM1NTMsYSwwLHIpOnQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzMzMDYsMzU1MyxhLDApfX0pKGkuX193ZWJnbEZyYW1lYnVmZmVyLGUpfWVsc2UgaWYoYSl7aS5fX3dlYmdsRGVwdGhidWZmZXI9W107Zm9yKGxldCBvPTA7bzw2O28rKyluLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxpLl9fd2ViZ2xGcmFtZWJ1ZmZlcltvXSksaS5fX3dlYmdsRGVwdGhidWZmZXJbb109dC5jcmVhdGVSZW5kZXJidWZmZXIoKSx6KGkuX193ZWJnbERlcHRoYnVmZmVyW29dLGUsITEpfWVsc2Ugbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaS5fX3dlYmdsRnJhbWVidWZmZXIpLGkuX193ZWJnbERlcHRoYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCkseihpLl9fd2ViZ2xEZXB0aGJ1ZmZlcixlLCExKTtuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1mdW5jdGlvbiBIKHQpe3JldHVybiBzJiYodC51c2VSZW5kZXJidWZmZXJ8fHQudXNlUmVuZGVyVG9UZXh0dXJlKT9NYXRoLm1pbihwLHQuc2FtcGxlcyk6MH1mdW5jdGlvbiBGKHQsbil7Y29uc3Qgbz10LmVuY29kaW5nLGk9dC5mb3JtYXQsYT10LnR5cGU7cmV0dXJuITA9PT10LmlzQ29tcHJlc3NlZFRleHR1cmV8fCEwPT09dC5pc1ZpZGVvVGV4dHVyZXx8dC5mb3JtYXQ9PT1Tc3R8fG8hPT12c3QmJihvPT09eHN0PyExPT09cz8hMD09PWUuaGFzKCJFWFRfc1JHQiIpJiZpPT09bHN0Pyh0LmZvcm1hdD1Tc3QsdC5taW5GaWx0ZXI9dHN0LHQuZ2VuZXJhdGVNaXBtYXBzPSExKTpuPUtzdC5zUkdCVG9MaW5lYXIobik6aT09PWxzdCYmYT09PW5zdHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBzUkdCIGVuY29kZWQgdGV4dHVyZXMgaGF2ZSB0byB1c2UgUkdCQUZvcm1hdCBhbmQgVW5zaWduZWRCeXRlVHlwZS4iKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBVbnN1cHBvcnRlZCB0ZXh0dXJlIGVuY29kaW5nOiIsbykpLG59bGV0IEw9ITEsQj0hMTt0aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9ZnVuY3Rpb24gVigpe2NvbnN0IHQ9dztyZXR1cm4gdD49bCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBUcnlpbmcgdG8gdXNlICIrdCsiIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAiK2wpLHcrPTEsdH0sdGhpcy5yZXNldFRleHR1cmVVbml0cz1mdW5jdGlvbiBVKCl7dz0wfSx0aGlzLnNldFRleHR1cmUyRD1rLHRoaXMuc2V0VGV4dHVyZTJEQXJyYXk9ZnVuY3Rpb24gaih0LGUpe2NvbnN0IGk9by5nZXQodCk7dC52ZXJzaW9uPjAmJmkuX192ZXJzaW9uIT09dC52ZXJzaW9uP1QoaSx0LGUpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTg2NixpLl9fd2ViZ2xUZXh0dXJlKSl9LHRoaXMuc2V0VGV4dHVyZTNEPWZ1bmN0aW9uIFcodCxlKXtjb25zdCBpPW8uZ2V0KHQpO3QudmVyc2lvbj4wJiZpLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9UKGksdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzI4NzksaS5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmVDdWJlPVMsdGhpcy5yZWJpbmRUZXh0dXJlcz1mdW5jdGlvbiBHKHQsZSxuKXtjb25zdCBpPW8uZ2V0KHQpO3ZvaWQgMCE9PWUmJk4oaS5fX3dlYmdsRnJhbWVidWZmZXIsdCx0LnRleHR1cmUsMzYwNjQsMzU1Myksdm9pZCAwIT09biYmSSh0KX0sdGhpcy5zZXR1cFJlbmRlclRhcmdldD1mdW5jdGlvbiBZKGUpe2NvbnN0IGw9ZS50ZXh0dXJlLGM9by5nZXQoZSksZD1vLmdldChsKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFApLCEwIT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzJiYodm9pZCAwPT09ZC5fX3dlYmdsVGV4dHVyZSYmKGQuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCkpLGQuX192ZXJzaW9uPWwudmVyc2lvbixyLm1lbW9yeS50ZXh0dXJlcysrKTtjb25zdCBwPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCxtPSEwPT09ZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzLHU9bC5pc0RhdGFUZXh0dXJlM0R8fGwuaXNEYXRhVGV4dHVyZTJEQXJyYXksZj15KGUpfHxzO2lmKHApe2MuX193ZWJnbEZyYW1lYnVmZmVyPVtdO2ZvcihsZXQgZT0wO2U8NjtlKyspYy5fX3dlYmdsRnJhbWVidWZmZXJbZV09dC5jcmVhdGVGcmFtZWJ1ZmZlcigpfWVsc2UgaWYoYy5fX3dlYmdsRnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLG0paWYoaS5kcmF3QnVmZmVycyl7Y29uc3Qgbj1lLnRleHR1cmU7Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPW8uZ2V0KG5bZV0pO3ZvaWQgMD09PWkuX193ZWJnbFRleHR1cmUmJihpLl9fd2ViZ2xUZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgpLHIubWVtb3J5LnRleHR1cmVzKyspfX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMiBvciBXRUJHTF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uLiIpO2Vsc2UgaWYoZS51c2VSZW5kZXJidWZmZXIpaWYocyl7Yy5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKTtjb25zdCBvPWEuY29udmVydChsLmZvcm1hdCxsLmVuY29kaW5nKSxpPWEuY29udmVydChsLnR5cGUpLHI9TShsLmludGVybmFsRm9ybWF0LG8saSxsLmVuY29kaW5nKSxzPUgoZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEscyxyLGUud2lkdGgsZS5oZWlnaHQpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLGMuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCksZS5kZXB0aEJ1ZmZlciYmKGMuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCkseihjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixlLCEwKSksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihwKXtuLmJpbmRUZXh0dXJlKDM0MDY3LGQuX193ZWJnbFRleHR1cmUpLEUoMzQwNjcsbCxmKTtmb3IobGV0IHQ9MDt0PDY7dCsrKU4oYy5fX3dlYmdsRnJhbWVidWZmZXJbdF0sZSxsLDM2MDY0LDM0MDY5K3QpO18obCxmKSYmQygzNDA2Nyksbi51bmJpbmRUZXh0dXJlKCl9ZWxzZSBpZihtKXtjb25zdCB0PWUudGV4dHVyZTtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9dFtpXSxyPW8uZ2V0KGEpO24uYmluZFRleHR1cmUoMzU1MyxyLl9fd2ViZ2xUZXh0dXJlKSxFKDM1NTMsYSxmKSxOKGMuX193ZWJnbEZyYW1lYnVmZmVyLGUsYSwzNjA2NCtpLDM1NTMpLF8oYSxmKSYmQygzNTUzKX1uLnVuYmluZFRleHR1cmUoKX1lbHNle2xldCB0PTM1NTM7aWYodSlpZihzKXt0PWwuaXNEYXRhVGV4dHVyZTNEPzMyODc5OjM1ODY2fWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkgb25seSBzdXBwb3J0ZWQgd2l0aCBXZWJHTDIuIik7bi5iaW5kVGV4dHVyZSh0LGQuX193ZWJnbFRleHR1cmUpLEUodCxsLGYpLE4oYy5fX3dlYmdsRnJhbWVidWZmZXIsZSxsLDM2MDY0LHQpLF8obCxmKSYmQyh0KSxuLnVuYmluZFRleHR1cmUoKX1lLmRlcHRoQnVmZmVyJiZJKGUpfSx0aGlzLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcD1mdW5jdGlvbiBxKHQpe2NvbnN0IGU9eSh0KXx8cyxpPSEwPT09dC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP3QudGV4dHVyZTpbdC50ZXh0dXJlXTtmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9aVthXTtpZihfKHIsZSkpe2NvbnN0IGU9dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLGk9by5nZXQocikuX193ZWJnbFRleHR1cmU7bi5iaW5kVGV4dHVyZShlLGkpLEMoZSksbi51bmJpbmRUZXh0dXJlKCl9fX0sdGhpcy51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldD1mdW5jdGlvbiBaKGUpe2lmKGUudXNlUmVuZGVyYnVmZmVyKWlmKHMpe2NvbnN0IGk9ZS53aWR0aCxhPWUuaGVpZ2h0O2xldCByPTE2Mzg0O2NvbnN0IHM9WzM2MDY0XSxsPWUuc3RlbmNpbEJ1ZmZlcj8zMzMwNjozNjA5NjtlLmRlcHRoQnVmZmVyJiZzLnB1c2gobCksZS5pZ25vcmVEZXB0aEZvck11bHRpc2FtcGxlQ29weXx8KGUuZGVwdGhCdWZmZXImJihyfD0yNTYpLGUuc3RlbmNpbEJ1ZmZlciYmKHJ8PTEwMjQpKTtjb25zdCBjPW8uZ2V0KGUpO24uYmluZEZyYW1lYnVmZmVyKDM2MDA4LGMuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxjLl9fd2ViZ2xGcmFtZWJ1ZmZlciksZS5pZ25vcmVEZXB0aEZvck11bHRpc2FtcGxlQ29weSYmKHQuaW52YWxpZGF0ZUZyYW1lYnVmZmVyKDM2MDA4LFtsXSksdC5pbnZhbGlkYXRlRnJhbWVidWZmZXIoMzYwMDksW2xdKSksdC5ibGl0RnJhbWVidWZmZXIoMCwwLGksYSwwLDAsaSxhLHIsOTcyOCksdC5pbnZhbGlkYXRlRnJhbWVidWZmZXIoMzYwMDgscyksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDgsbnVsbCksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDksYy5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIil9LHRoaXMuc2V0dXBEZXB0aFJlbmRlcmJ1ZmZlcj1JLHRoaXMuc2V0dXBGcmFtZUJ1ZmZlclRleHR1cmU9Tix0aGlzLnNhZmVTZXRUZXh0dXJlMkQ9ZnVuY3Rpb24gWCh0LGUpe3QmJnQuaXNXZWJHTFJlbmRlclRhcmdldCYmKCExPT09TCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEw9ITApLHQ9dC50ZXh0dXJlKSxrKHQsZSl9LHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uIEsodCxlKXt0JiZ0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiYoITE9PT1CJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlQ3ViZTogZG9uJ3QgdXNlIGN1YmUgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEI9ITApLHQ9dC50ZXh0dXJlKSxTKHQsZSl9fWZ1bmN0aW9uIFFtdCh0LGUsbil7Y29uc3Qgbz1uLmlzV2ViR0wyO3JldHVybntjb252ZXJ0OmZ1bmN0aW9uIGkodCxuPW51bGwpe2xldCBpO2lmKHQ9PT1uc3QpcmV0dXJuIDUxMjE7aWYoMTAxNz09PXQpcmV0dXJuIDMyODE5O2lmKDEwMTg9PT10KXJldHVybiAzMjgyMDtpZigxMDEwPT09dClyZXR1cm4gNTEyMDtpZigxMDExPT09dClyZXR1cm4gNTEyMjtpZih0PT09b3N0KXJldHVybiA1MTIzO2lmKDEwMTM9PT10KXJldHVybiA1MTI0O2lmKHQ9PT1pc3QpcmV0dXJuIDUxMjU7aWYodD09PWFzdClyZXR1cm4gNTEyNjtpZih0PT09cnN0KXJldHVybiBvPzUxMzE6KGk9ZS5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxudWxsIT09aT9pLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKDEwMjE9PT10KXJldHVybiA2NDA2O2lmKHQ9PT1sc3QpcmV0dXJuIDY0MDg7aWYoMTAyND09PXQpcmV0dXJuIDY0MDk7aWYoMTAyNT09PXQpcmV0dXJuIDY0MTA7aWYodD09PWNzdClyZXR1cm4gNjQwMjtpZih0PT09ZHN0KXJldHVybiAzNDA0MTtpZigxMDI4PT09dClyZXR1cm4gNjQwMztpZih0PT09U3N0KXJldHVybiBpPWUuZ2V0KCJFWFRfc1JHQiIpLG51bGwhPT1pP2kuU1JHQl9BTFBIQV9FWFQ6bnVsbDtpZigxMDI5PT09dClyZXR1cm4gMzYyNDQ7aWYoMTAzMD09PXQpcmV0dXJuIDMzMzE5O2lmKDEwMzE9PT10KXJldHVybiAzMzMyMDtpZigxMDMzPT09dClyZXR1cm4gMzYyNDk7aWYodD09PXBzdHx8dD09PW1zdHx8dD09PXVzdHx8dD09PWZzdClpZihuPT09eHN0KXtpZihpPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIiksbnVsbD09PWkpcmV0dXJuIG51bGw7aWYodD09PXBzdClyZXR1cm4gaS5DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDtpZih0PT09bXN0KXJldHVybiBpLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUO2lmKHQ9PT11c3QpcmV0dXJuIGkuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ7aWYodD09PWZzdClyZXR1cm4gaS5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVH1lbHNle2lmKGk9ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIiksbnVsbD09PWkpcmV0dXJuIG51bGw7aWYodD09PXBzdClyZXR1cm4gaS5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUO2lmKHQ9PT1tc3QpcmV0dXJuIGkuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYodD09PXVzdClyZXR1cm4gaS5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDtpZih0PT09ZnN0KXJldHVybiBpLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUfWlmKDM1ODQwPT09dHx8MzU4NDE9PT10fHwzNTg0Mj09PXR8fDM1ODQzPT09dCl7aWYoaT1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIiksbnVsbD09PWkpcmV0dXJuIG51bGw7aWYoMzU4NDA9PT10KXJldHVybiBpLkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc7aWYoMzU4NDE9PT10KXJldHVybiBpLkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc7aWYoMzU4NDI9PT10KXJldHVybiBpLkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HO2lmKDM1ODQzPT09dClyZXR1cm4gaS5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNR31pZigzNjE5Nj09PXQpcmV0dXJuIGk9ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIiksbnVsbCE9PWk/aS5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOm51bGw7aWYoMzc0OTI9PT10fHwzNzQ5Nj09PXQpe2lmKGk9ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKSxudWxsPT09aSlyZXR1cm4gbnVsbDtpZigzNzQ5Mj09PXQpcmV0dXJuIG49PT14c3Q/aS5DT01QUkVTU0VEX1NSR0I4X0VUQzI6aS5DT01QUkVTU0VEX1JHQjhfRVRDMjtpZigzNzQ5Nj09PXQpcmV0dXJuIG49PT14c3Q/aS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzppLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUN9aWYoMzc4MDg9PT10fHwzNzgwOT09PXR8fDM3ODEwPT09dHx8Mzc4MTE9PT10fHwzNzgxMj09PXR8fDM3ODEzPT09dHx8Mzc4MTQ9PT10fHwzNzgxNT09PXR8fDM3ODE2PT09dHx8Mzc4MTc9PT10fHwzNzgxOD09PXR8fDM3ODE5PT09dHx8Mzc4MjA9PT10fHwzNzgyMT09PXQpe2lmKGk9ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiksbnVsbD09PWkpcmV0dXJuIG51bGw7aWYoMzc4MDg9PT10KXJldHVybiBuPT09eHN0P2kuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOmkuQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjtpZigzNzgwOT09PXQpcmV0dXJuIG49PT14c3Q/aS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6aS5DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSO2lmKDM3ODEwPT09dClyZXR1cm4gbj09PXhzdD9pLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjppLkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI7aWYoMzc4MTE9PT10KXJldHVybiBuPT09eHN0P2kuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOmkuQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjtpZigzNzgxMj09PXQpcmV0dXJuIG49PT14c3Q/aS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6aS5DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSO2lmKDM3ODEzPT09dClyZXR1cm4gbj09PXhzdD9pLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjppLkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI7aWYoMzc4MTQ9PT10KXJldHVybiBuPT09eHN0P2kuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOmkuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjtpZigzNzgxNT09PXQpcmV0dXJuIG49PT14c3Q/aS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6aS5DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSO2lmKDM3ODE2PT09dClyZXR1cm4gbj09PXhzdD9pLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6aS5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjtpZigzNzgxNz09PXQpcmV0dXJuIG49PT14c3Q/aS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOmkuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI7aWYoMzc4MTg9PT10KXJldHVybiBuPT09eHN0P2kuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjppLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSO2lmKDM3ODE5PT09dClyZXR1cm4gbj09PXhzdD9pLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOmkuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSO2lmKDM3ODIwPT09dClyZXR1cm4gbj09PXhzdD9pLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOmkuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSO2lmKDM3ODIxPT09dClyZXR1cm4gbj09PXhzdD9pLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOmkuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSfWlmKDM2NDkyPT09dCl7aWYoaT1lLmdldCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIpLG51bGw9PT1pKXJldHVybiBudWxsO2lmKDM2NDkyPT09dClyZXR1cm4gbj09PXhzdD9pLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9CUFRDX1VOT1JNX0VYVDppLkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVH1yZXR1cm4gdD09PXNzdD9vPzM0MDQyOihpPWUuZ2V0KCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksbnVsbCE9PWk/aS5VTlNJR05FRF9JTlRfMjRfOF9XRUJHTDpudWxsKTp2b2lkIDB9fX1jbGFzcyAkbXQgZXh0ZW5kcyByZHR7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLmNhbWVyYXM9dH19JG10LnByb3RvdHlwZS5pc0FycmF5Q2FtZXJhPSEwO2NsYXNzIHR1dCBleHRlbmRzIHJjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJHcm91cCJ9fXR1dC5wcm90b3R5cGUuaXNHcm91cD0hMDtjb25zdCBldXQ9e3R5cGU6Im1vdmUifTtjbGFzcyBudXR7Y29uc3RydWN0b3IoKXt0aGlzLl90YXJnZXRSYXk9bnVsbCx0aGlzLl9ncmlwPW51bGwsdGhpcy5faGFuZD1udWxsfWdldEhhbmRTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5faGFuZCYmKHRoaXMuX2hhbmQ9bmV3IHR1dCx0aGlzLl9oYW5kLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5faGFuZC52aXNpYmxlPSExLHRoaXMuX2hhbmQuam9pbnRzPXt9LHRoaXMuX2hhbmQuaW5wdXRTdGF0ZT17cGluY2hpbmc6ITF9KSx0aGlzLl9oYW5kfWdldFRhcmdldFJheVNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl90YXJnZXRSYXkmJih0aGlzLl90YXJnZXRSYXk9bmV3IHR1dCx0aGlzLl90YXJnZXRSYXkubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSx0aGlzLl90YXJnZXRSYXkuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmxpbmVhclZlbG9jaXR5PW5ldyBpbHQsdGhpcy5fdGFyZ2V0UmF5Lmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLl90YXJnZXRSYXkuYW5ndWxhclZlbG9jaXR5PW5ldyBpbHQpLHRoaXMuX3RhcmdldFJheX1nZXRHcmlwU3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2dyaXAmJih0aGlzLl9ncmlwPW5ldyB0dXQsdGhpcy5fZ3JpcC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2dyaXAudmlzaWJsZT0hMSx0aGlzLl9ncmlwLmhhc0xpbmVhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAubGluZWFyVmVsb2NpdHk9bmV3IGlsdCx0aGlzLl9ncmlwLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmFuZ3VsYXJWZWxvY2l0eT1uZXcgaWx0KSx0aGlzLl9ncmlwfWRpc3BhdGNoRXZlbnQodCl7cmV0dXJuIG51bGwhPT10aGlzLl90YXJnZXRSYXkmJnRoaXMuX3RhcmdldFJheS5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9ncmlwJiZ0aGlzLl9ncmlwLmRpc3BhdGNoRXZlbnQodCksbnVsbCE9PXRoaXMuX2hhbmQmJnRoaXMuX2hhbmQuZGlzcGF0Y2hFdmVudCh0KSx0aGlzfWRpc2Nvbm5lY3QodCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOnR9KSxudWxsIT09dGhpcy5fdGFyZ2V0UmF5JiYodGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEpLG51bGwhPT10aGlzLl9ncmlwJiYodGhpcy5fZ3JpcC52aXNpYmxlPSExKSxudWxsIT09dGhpcy5faGFuZCYmKHRoaXMuX2hhbmQudmlzaWJsZT0hMSksdGhpc311cGRhdGUodCxlLG4pe2xldCBvPW51bGwsaT1udWxsLGE9bnVsbDtjb25zdCByPXRoaXMuX3RhcmdldFJheSxzPXRoaXMuX2dyaXAsbD10aGlzLl9oYW5kO2lmKHQmJiJ2aXNpYmxlLWJsdXJyZWQiIT09ZS5zZXNzaW9uLnZpc2liaWxpdHlTdGF0ZSlpZihudWxsIT09ciYmKG89ZS5nZXRQb3NlKHQudGFyZ2V0UmF5U3BhY2UsbiksbnVsbCE9PW8mJihyLm1hdHJpeC5mcm9tQXJyYXkoby50cmFuc2Zvcm0ubWF0cml4KSxyLm1hdHJpeC5kZWNvbXBvc2Uoci5wb3NpdGlvbixyLnJvdGF0aW9uLHIuc2NhbGUpLG8ubGluZWFyVmVsb2NpdHk/KHIuaGFzTGluZWFyVmVsb2NpdHk9ITAsci5saW5lYXJWZWxvY2l0eS5jb3B5KG8ubGluZWFyVmVsb2NpdHkpKTpyLmhhc0xpbmVhclZlbG9jaXR5PSExLG8uYW5ndWxhclZlbG9jaXR5PyhyLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxyLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KG8uYW5ndWxhclZlbG9jaXR5KSk6ci5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KGV1dCkpKSxsJiZ0LmhhbmQpe2E9ITA7Zm9yKGNvbnN0IG8gb2YgdC5oYW5kLnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0Sm9pbnRQb3NlKG8sbik7aWYodm9pZCAwPT09bC5qb2ludHNbby5qb2ludE5hbWVdKXtjb25zdCB0PW5ldyB0dXQ7dC5tYXRyaXhBdXRvVXBkYXRlPSExLHQudmlzaWJsZT0hMSxsLmpvaW50c1tvLmpvaW50TmFtZV09dCxsLmFkZCh0KX1jb25zdCBpPWwuam9pbnRzW28uam9pbnROYW1lXTtudWxsIT09dCYmKGkubWF0cml4LmZyb21BcnJheSh0LnRyYW5zZm9ybS5tYXRyaXgpLGkubWF0cml4LmRlY29tcG9zZShpLnBvc2l0aW9uLGkucm90YXRpb24saS5zY2FsZSksaS5qb2ludFJhZGl1cz10LnJhZGl1cyksaS52aXNpYmxlPW51bGwhPT10fWNvbnN0IG89bC5qb2ludHNbImluZGV4LWZpbmdlci10aXAiXS5wb3NpdGlvbi5kaXN0YW5jZVRvKGwuam9pbnRzWyJ0aHVtYi10aXAiXS5wb3NpdGlvbiksaT0uMDIscj0uMDA1O2wuaW5wdXRTdGF0ZS5waW5jaGluZyYmbz5pK3I/KGwuaW5wdXRTdGF0ZS5waW5jaGluZz0hMSx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoZW5kIixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKTohbC5pbnB1dFN0YXRlLnBpbmNoaW5nJiZvPD1pLXImJihsLmlucHV0U3RhdGUucGluY2hpbmc9ITAsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaHN0YXJ0IixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKX1lbHNlIG51bGwhPT1zJiZ0LmdyaXBTcGFjZSYmKGk9ZS5nZXRQb3NlKHQuZ3JpcFNwYWNlLG4pLG51bGwhPT1pJiYocy5tYXRyaXguZnJvbUFycmF5KGkudHJhbnNmb3JtLm1hdHJpeCkscy5tYXRyaXguZGVjb21wb3NlKHMucG9zaXRpb24scy5yb3RhdGlvbixzLnNjYWxlKSxpLmxpbmVhclZlbG9jaXR5PyhzLmhhc0xpbmVhclZlbG9jaXR5PSEwLHMubGluZWFyVmVsb2NpdHkuY29weShpLmxpbmVhclZlbG9jaXR5KSk6cy5oYXNMaW5lYXJWZWxvY2l0eT0hMSxpLmFuZ3VsYXJWZWxvY2l0eT8ocy5oYXNBbmd1bGFyVmVsb2NpdHk9ITAscy5hbmd1bGFyVmVsb2NpdHkuY29weShpLmFuZ3VsYXJWZWxvY2l0eSkpOnMuaGFzQW5ndWxhclZlbG9jaXR5PSExKSk7cmV0dXJuIG51bGwhPT1yJiYoci52aXNpYmxlPW51bGwhPT1vKSxudWxsIT09cyYmKHMudmlzaWJsZT1udWxsIT09aSksbnVsbCE9PWwmJihsLnZpc2libGU9bnVsbCE9PWEpLHRoaXN9fWNsYXNzIG91dCBleHRlbmRzIFFzdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjKXtpZigoYz12b2lkIDAhPT1jP2M6Y3N0KSE9PWNzdCYmYyE9PWRzdCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoVGV4dHVyZSBmb3JtYXQgbXVzdCBiZSBlaXRoZXIgVEhSRUUuRGVwdGhGb3JtYXQgb3IgVEhSRUUuRGVwdGhTdGVuY2lsRm9ybWF0Iik7dm9pZCAwPT09biYmYz09PWNzdCYmKG49b3N0KSx2b2lkIDA9PT1uJiZjPT09ZHN0JiYobj1zc3QpLHN1cGVyKG51bGwsbyxpLGEscixzLGMsbixsKSx0aGlzLmltYWdlPXt3aWR0aDp0LGhlaWdodDplfSx0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1yP3I6JHJ0LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PXM/czokcnQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19b3V0LnByb3RvdHlwZS5pc0RlcHRoVGV4dHVyZT0hMDtjbGFzcyBpdXQgZXh0ZW5kcyBEc3R7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpO2NvbnN0IG49dGhpcztsZXQgbz1udWxsLGk9MSxhPW51bGwscj0ibG9jYWwtZmxvb3IiO2NvbnN0IHM9dC5leHRlbnNpb25zLmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIik7bGV0IGw9bnVsbCxjPW51bGwsZD1udWxsLHA9bnVsbCxtPSExLHU9bnVsbDtjb25zdCBmPWUuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTtsZXQgZz1udWxsLGg9bnVsbDtjb25zdCBiPVtdLHk9bmV3IE1hcCxfPW5ldyByZHQ7Xy5sYXllcnMuZW5hYmxlKDEpLF8udmlld3BvcnQ9bmV3IHRsdDtjb25zdCBDPW5ldyByZHQ7Qy5sYXllcnMuZW5hYmxlKDIpLEMudmlld3BvcnQ9bmV3IHRsdDtjb25zdCBNPVtfLENdLHY9bmV3ICRtdDt2LmxheWVycy5lbmFibGUoMSksdi5sYXllcnMuZW5hYmxlKDIpO2xldCB4PW51bGwsTz1udWxsO2Z1bmN0aW9uIFAodCl7Y29uc3QgZT15LmdldCh0LmlucHV0U291cmNlKTtlJiZlLmRpc3BhdGNoRXZlbnQoe3R5cGU6dC50eXBlLGRhdGE6dC5pbnB1dFNvdXJjZX0pfWZ1bmN0aW9uIHcoKXt5LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5kaXNjb25uZWN0KGUpfSkpLHkuY2xlYXIoKSx4PW51bGwsTz1udWxsLHQuc2V0UmVuZGVyVGFyZ2V0KGcpLHA9bnVsbCxkPW51bGwsYz1udWxsLG89bnVsbCxoPW51bGwsQS5zdG9wKCksbi5pc1ByZXNlbnRpbmc9ITEsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uZW5kIn0pfWZ1bmN0aW9uIGsodCl7Y29uc3QgZT1vLmlucHV0U291cmNlcztmb3IobGV0IHQ9MDt0PGIubGVuZ3RoO3QrKyl5LnNldChlW3RdLGJbdF0pO2ZvcihsZXQgZT0wO2U8dC5yZW1vdmVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5yZW1vdmVkW2VdLG89eS5nZXQobik7byYmKG8uZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOm59KSx5LmRlbGV0ZShuKSl9Zm9yKGxldCBlPTA7ZTx0LmFkZGVkLmxlbmd0aDtlKyspe2NvbnN0IG49dC5hZGRlZFtlXSxvPXkuZ2V0KG4pO28mJm8uZGlzcGF0Y2hFdmVudCh7dHlwZToiY29ubmVjdGVkIixkYXRhOm59KX19dGhpcy5jYW1lcmFBdXRvVXBkYXRlPSEwLHRoaXMuZW5hYmxlZD0hMSx0aGlzLmlzUHJlc2VudGluZz0hMSx0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24odCl7bGV0IGU9Ylt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IG51dCxiW3RdPWUpLGUuZ2V0VGFyZ2V0UmF5U3BhY2UoKX0sdGhpcy5nZXRDb250cm9sbGVyR3JpcD1mdW5jdGlvbih0KXtsZXQgZT1iW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgbnV0LGJbdF09ZSksZS5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKHQpe2xldCBlPWJbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBudXQsYlt0XT1lKSxlLmdldEhhbmRTcGFjZSgpfSx0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24odCl7aT10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIGZyYW1lYnVmZmVyIHNjYWxlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuc2V0UmVmZXJlbmNlU3BhY2VUeXBlPWZ1bmN0aW9uKHQpe3I9dCwhMD09PW4uaXNQcmVzZW50aW5nJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSByZWZlcmVuY2Ugc3BhY2UgdHlwZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLmdldFJlZmVyZW5jZVNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHRoaXMuZ2V0QmFzZUxheWVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1kP2Q6cH0sdGhpcy5nZXRCaW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGN9LHRoaXMuZ2V0RnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdX0sdGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG99LHRoaXMuc2V0U2Vzc2lvbj1hc3luYyBmdW5jdGlvbihsKXtpZihvPWwsbnVsbCE9PW8pe2lmKGc9dC5nZXRSZW5kZXJUYXJnZXQoKSxvLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsUCksby5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsUCksby5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlbmQiLFApLG8uYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZSIsUCksby5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLFApLG8uYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZWVuZCIsUCksby5hZGRFdmVudExpc3RlbmVyKCJlbmQiLHcpLG8uYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIixrKSwhMCE9PWYueHJDb21wYXRpYmxlJiZhd2FpdCBlLm1ha2VYUkNvbXBhdGlibGUoKSx2b2lkIDA9PT1vLnJlbmRlclN0YXRlLmxheWVyc3x8ITE9PT10LmNhcGFiaWxpdGllcy5pc1dlYkdMMil7cD1uZXcgWFJXZWJHTExheWVyKG8sZSx7YW50aWFsaWFzOnZvaWQgMCE9PW8ucmVuZGVyU3RhdGUubGF5ZXJzfHxmLmFudGlhbGlhcyxhbHBoYTpmLmFscGhhLGRlcHRoOmYuZGVwdGgsc3RlbmNpbDpmLnN0ZW5jaWwsZnJhbWVidWZmZXJTY2FsZUZhY3RvcjppfSksby51cGRhdGVSZW5kZXJTdGF0ZSh7YmFzZUxheWVyOnB9KSxoPW5ldyBlbHQocC5mcmFtZWJ1ZmZlcldpZHRoLHAuZnJhbWVidWZmZXJIZWlnaHQse2Zvcm1hdDpsc3QsdHlwZTpuc3QsZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pfWVsc2V7bT1mLmFudGlhbGlhcztsZXQgbj1udWxsLGE9bnVsbCxyPW51bGw7Zi5kZXB0aCYmKHI9Zi5zdGVuY2lsPzM1MDU2OjMzMTkwLG49Zi5zdGVuY2lsP2RzdDpjc3QsYT1mLnN0ZW5jaWw/c3N0Om9zdCk7Y29uc3QgbD17Y29sb3JGb3JtYXQ6dC5vdXRwdXRFbmNvZGluZz09PXhzdD8zNTkwNzozMjg1NixkZXB0aEZvcm1hdDpyLHNjYWxlRmFjdG9yOml9O2M9bmV3IFhSV2ViR0xCaW5kaW5nKG8sZSksZD1jLmNyZWF0ZVByb2plY3Rpb25MYXllcihsKSxvLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W2RdfSksaD1tP25ldyBubHQoZC50ZXh0dXJlV2lkdGgsZC50ZXh0dXJlSGVpZ2h0LHtmb3JtYXQ6bHN0LHR5cGU6bnN0LGRlcHRoVGV4dHVyZTpuZXcgb3V0KGQudGV4dHVyZVdpZHRoLGQudGV4dHVyZUhlaWdodCxhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4pLHN0ZW5jaWxCdWZmZXI6Zi5zdGVuY2lsLGlnbm9yZURlcHRoOmQuaWdub3JlRGVwdGhWYWx1ZXMsdXNlUmVuZGVyVG9UZXh0dXJlOnMsZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pOm5ldyBlbHQoZC50ZXh0dXJlV2lkdGgsZC50ZXh0dXJlSGVpZ2h0LHtmb3JtYXQ6bHN0LHR5cGU6bnN0LGRlcHRoVGV4dHVyZTpuZXcgb3V0KGQudGV4dHVyZVdpZHRoLGQudGV4dHVyZUhlaWdodCxhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4pLHN0ZW5jaWxCdWZmZXI6Zi5zdGVuY2lsLGlnbm9yZURlcHRoOmQuaWdub3JlRGVwdGhWYWx1ZXMsZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pfWguaXNYUlJlbmRlclRhcmdldD0hMCx0aGlzLnNldEZvdmVhdGlvbigxKSxhPWF3YWl0IG8ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKHIpLEEuc2V0Q29udGV4dChvKSxBLnN0YXJ0KCksbi5pc1ByZXNlbnRpbmc9ITAsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9fTtjb25zdCBTPW5ldyBpbHQsRD1uZXcgaWx0O2Z1bmN0aW9uIFIodCxlKXtudWxsPT09ZT90Lm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXgpOnQubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyhlLm1hdHJpeFdvcmxkLHQubWF0cml4KSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpfXRoaXMudXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKHQpe2lmKG51bGw9PT1vKXJldHVybjt2Lm5lYXI9Qy5uZWFyPV8ubmVhcj10Lm5lYXIsdi5mYXI9Qy5mYXI9Xy5mYXI9dC5mYXIseD09PXYubmVhciYmTz09PXYuZmFyfHwoby51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOnYubmVhcixkZXB0aEZhcjp2LmZhcn0pLHg9di5uZWFyLE89di5mYXIpO2NvbnN0IGU9dC5wYXJlbnQsbj12LmNhbWVyYXM7Uih2LGUpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKVIoblt0XSxlKTt2Lm1hdHJpeFdvcmxkLmRlY29tcG9zZSh2LnBvc2l0aW9uLHYucXVhdGVybmlvbix2LnNjYWxlKSx0LnBvc2l0aW9uLmNvcHkodi5wb3NpdGlvbiksdC5xdWF0ZXJuaW9uLmNvcHkodi5xdWF0ZXJuaW9uKSx0LnNjYWxlLmNvcHkodi5zY2FsZSksdC5tYXRyaXguY29weSh2Lm1hdHJpeCksdC5tYXRyaXhXb3JsZC5jb3B5KHYubWF0cml4V29ybGQpO2NvbnN0IGk9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPWkubGVuZ3RoO3Q8ZTt0KyspaVt0XS51cGRhdGVNYXRyaXhXb3JsZCghMCk7Mj09PW4ubGVuZ3RoPyhmdW5jdGlvbiBhKHQsZSxuKXtTLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSxELnNldEZyb21NYXRyaXhQb3NpdGlvbihuLm1hdHJpeFdvcmxkKTtjb25zdCBvPVMuZGlzdGFuY2VUbyhEKSxpPWUucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxhPW4ucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxyPWlbMTRdLyhpWzEwXS0xKSxzPWlbMTRdLyhpWzEwXSsxKSxsPShpWzldKzEpL2lbNV0sYz0oaVs5XS0xKS9pWzVdLGQ9KGlbOF0tMSkvaVswXSxwPShhWzhdKzEpL2FbMF0sbT1yKmQsdT1yKnAsZj1vLygtZCtwKSxnPWYqLWQ7ZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC50cmFuc2xhdGVYKGcpLHQudHJhbnNsYXRlWihmKSx0Lm1hdHJpeFdvcmxkLmNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtjb25zdCBoPXIrZixiPXMrZjt0LnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKG0tZyx1KyhvLWcpLGwqcy9iKmgsYypzL2IqaCxoLGIpfSkodixfLEMpOnYucHJvamVjdGlvbk1hdHJpeC5jb3B5KF8ucHJvamVjdGlvbk1hdHJpeCl9LHRoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKCl7cmV0dXJuIHZ9LHRoaXMuZ2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1kP2QuZml4ZWRGb3ZlYXRpb246bnVsbCE9PXA/cC5maXhlZEZvdmVhdGlvbjp2b2lkIDB9LHRoaXMuc2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKHQpe251bGwhPT1kJiYoZC5maXhlZEZvdmVhdGlvbj10KSxudWxsIT09cCYmdm9pZCAwIT09cC5maXhlZEZvdmVhdGlvbiYmKHAuZml4ZWRGb3ZlYXRpb249dCl9O2xldCBFPW51bGw7Y29uc3QgQT1uZXcgeWR0O0Euc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24gVChlLG4pe2lmKGw9bi5nZXRWaWV3ZXJQb3NlKGEpLHU9bixudWxsIT09bCl7Y29uc3QgZT1sLnZpZXdzO251bGwhPT1wJiYodC5zZXRSZW5kZXJUYXJnZXRGcmFtZWJ1ZmZlcihoLHAuZnJhbWVidWZmZXIpLHQuc2V0UmVuZGVyVGFyZ2V0KGgpKTtsZXQgbj0hMTtlLmxlbmd0aCE9PXYuY2FtZXJhcy5sZW5ndGgmJih2LmNhbWVyYXMubGVuZ3RoPTAsbj0hMCk7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IGk9ZVtvXTtsZXQgYT1udWxsO2lmKG51bGwhPT1wKWE9cC5nZXRWaWV3cG9ydChpKTtlbHNle2NvbnN0IGU9Yy5nZXRWaWV3U3ViSW1hZ2UoZCxpKTthPWUudmlld3BvcnQsMD09PW8mJih0LnNldFJlbmRlclRhcmdldFRleHR1cmVzKGgsZS5jb2xvclRleHR1cmUsZC5pZ25vcmVEZXB0aFZhbHVlcz92b2lkIDA6ZS5kZXB0aFN0ZW5jaWxUZXh0dXJlKSx0LnNldFJlbmRlclRhcmdldChoKSl9Y29uc3Qgcj1NW29dO3IubWF0cml4LmZyb21BcnJheShpLnRyYW5zZm9ybS5tYXRyaXgpLHIucHJvamVjdGlvbk1hdHJpeC5mcm9tQXJyYXkoaS5wcm9qZWN0aW9uTWF0cml4KSxyLnZpZXdwb3J0LnNldChhLngsYS55LGEud2lkdGgsYS5oZWlnaHQpLDA9PT1vJiZ2Lm1hdHJpeC5jb3B5KHIubWF0cml4KSwhMD09PW4mJnYuY2FtZXJhcy5wdXNoKHIpfX1jb25zdCBpPW8uaW5wdXRTb3VyY2VzO2ZvcihsZXQgdD0wO3Q8Yi5sZW5ndGg7dCsrKXtiW3RdLnVwZGF0ZShpW3RdLG4sYSl9RSYmRShlLG4pLHU9bnVsbH0pKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7RT10fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fX1mdW5jdGlvbiBhdXQodCl7ZnVuY3Rpb24gZShlLG4pe2Uub3BhY2l0eS52YWx1ZT1uLm9wYWNpdHksbi5jb2xvciYmZS5kaWZmdXNlLnZhbHVlLmNvcHkobi5jb2xvciksbi5lbWlzc2l2ZSYmZS5lbWlzc2l2ZS52YWx1ZS5jb3B5KG4uZW1pc3NpdmUpLm11bHRpcGx5U2NhbGFyKG4uZW1pc3NpdmVJbnRlbnNpdHkpLG4ubWFwJiYoZS5tYXAudmFsdWU9bi5tYXApLG4uYWxwaGFNYXAmJihlLmFscGhhTWFwLnZhbHVlPW4uYWxwaGFNYXApLG4uc3BlY3VsYXJNYXAmJihlLnNwZWN1bGFyTWFwLnZhbHVlPW4uc3BlY3VsYXJNYXApLG4uYWxwaGFUZXN0PjAmJihlLmFscGhhVGVzdC52YWx1ZT1uLmFscGhhVGVzdCk7Y29uc3Qgbz10LmdldChuKS5lbnZNYXA7bGV0IGksYTtvJiYoZS5lbnZNYXAudmFsdWU9byxlLmZsaXBFbnZNYXAudmFsdWU9by5pc0N1YmVUZXh0dXJlJiYhMT09PW8uaXNSZW5kZXJUYXJnZXRUZXh0dXJlPy0xOjEsZS5yZWZsZWN0aXZpdHkudmFsdWU9bi5yZWZsZWN0aXZpdHksZS5pb3IudmFsdWU9bi5pb3IsZS5yZWZyYWN0aW9uUmF0aW8udmFsdWU9bi5yZWZyYWN0aW9uUmF0aW8pLG4ubGlnaHRNYXAmJihlLmxpZ2h0TWFwLnZhbHVlPW4ubGlnaHRNYXAsZS5saWdodE1hcEludGVuc2l0eS52YWx1ZT1uLmxpZ2h0TWFwSW50ZW5zaXR5KSxuLmFvTWFwJiYoZS5hb01hcC52YWx1ZT1uLmFvTWFwLGUuYW9NYXBJbnRlbnNpdHkudmFsdWU9bi5hb01hcEludGVuc2l0eSksbi5tYXA/aT1uLm1hcDpuLnNwZWN1bGFyTWFwP2k9bi5zcGVjdWxhck1hcDpuLmRpc3BsYWNlbWVudE1hcD9pPW4uZGlzcGxhY2VtZW50TWFwOm4ubm9ybWFsTWFwP2k9bi5ub3JtYWxNYXA6bi5idW1wTWFwP2k9bi5idW1wTWFwOm4ucm91Z2huZXNzTWFwP2k9bi5yb3VnaG5lc3NNYXA6bi5tZXRhbG5lc3NNYXA/aT1uLm1ldGFsbmVzc01hcDpuLmFscGhhTWFwP2k9bi5hbHBoYU1hcDpuLmVtaXNzaXZlTWFwP2k9bi5lbWlzc2l2ZU1hcDpuLmNsZWFyY29hdE1hcD9pPW4uY2xlYXJjb2F0TWFwOm4uY2xlYXJjb2F0Tm9ybWFsTWFwP2k9bi5jbGVhcmNvYXROb3JtYWxNYXA6bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/aT1uLmNsZWFyY29hdFJvdWdobmVzc01hcDpuLnNwZWN1bGFySW50ZW5zaXR5TWFwP2k9bi5zcGVjdWxhckludGVuc2l0eU1hcDpuLnNwZWN1bGFyQ29sb3JNYXA/aT1uLnNwZWN1bGFyQ29sb3JNYXA6bi50cmFuc21pc3Npb25NYXA/aT1uLnRyYW5zbWlzc2lvbk1hcDpuLnRoaWNrbmVzc01hcD9pPW4udGhpY2tuZXNzTWFwOm4uc2hlZW5Db2xvck1hcD9pPW4uc2hlZW5Db2xvck1hcDpuLnNoZWVuUm91Z2huZXNzTWFwJiYoaT1uLnNoZWVuUm91Z2huZXNzTWFwKSx2b2lkIDAhPT1pJiYoaS5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoaT1pLnRleHR1cmUpLCEwPT09aS5tYXRyaXhBdXRvVXBkYXRlJiZpLnVwZGF0ZU1hdHJpeCgpLGUudXZUcmFuc2Zvcm0udmFsdWUuY29weShpLm1hdHJpeCkpLG4uYW9NYXA/YT1uLmFvTWFwOm4ubGlnaHRNYXAmJihhPW4ubGlnaHRNYXApLHZvaWQgMCE9PWEmJihhLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihhPWEudGV4dHVyZSksITA9PT1hLm1hdHJpeEF1dG9VcGRhdGUmJmEudXBkYXRlTWF0cml4KCksZS51djJUcmFuc2Zvcm0udmFsdWUuY29weShhLm1hdHJpeCkpfWZ1bmN0aW9uIG4oZSxuKXtlLnJvdWdobmVzcy52YWx1ZT1uLnJvdWdobmVzcyxlLm1ldGFsbmVzcy52YWx1ZT1uLm1ldGFsbmVzcyxuLnJvdWdobmVzc01hcCYmKGUucm91Z2huZXNzTWFwLnZhbHVlPW4ucm91Z2huZXNzTWFwKSxuLm1ldGFsbmVzc01hcCYmKGUubWV0YWxuZXNzTWFwLnZhbHVlPW4ubWV0YWxuZXNzTWFwKSxuLmVtaXNzaXZlTWFwJiYoZS5lbWlzc2l2ZU1hcC52YWx1ZT1uLmVtaXNzaXZlTWFwKSxuLmJ1bXBNYXAmJihlLmJ1bXBNYXAudmFsdWU9bi5idW1wTWFwLGUuYnVtcFNjYWxlLnZhbHVlPW4uYnVtcFNjYWxlLDE9PT1uLnNpZGUmJihlLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxuLm5vcm1hbE1hcCYmKGUubm9ybWFsTWFwLnZhbHVlPW4ubm9ybWFsTWFwLGUubm9ybWFsU2NhbGUudmFsdWUuY29weShuLm5vcm1hbFNjYWxlKSwxPT09bi5zaWRlJiZlLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxuLmRpc3BsYWNlbWVudE1hcCYmKGUuZGlzcGxhY2VtZW50TWFwLnZhbHVlPW4uZGlzcGxhY2VtZW50TWFwLGUuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9bi5kaXNwbGFjZW1lbnRTY2FsZSxlLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9bi5kaXNwbGFjZW1lbnRCaWFzKTt0LmdldChuKS5lbnZNYXAmJihlLmVudk1hcEludGVuc2l0eS52YWx1ZT1uLmVudk1hcEludGVuc2l0eSl9cmV0dXJue3JlZnJlc2hGb2dVbmlmb3JtczpmdW5jdGlvbiBvKHQsZSl7dC5mb2dDb2xvci52YWx1ZS5jb3B5KGUuY29sb3IpLGUuaXNGb2c/KHQuZm9nTmVhci52YWx1ZT1lLm5lYXIsdC5mb2dGYXIudmFsdWU9ZS5mYXIpOmUuaXNGb2dFeHAyJiYodC5mb2dEZW5zaXR5LnZhbHVlPWUuZGVuc2l0eSl9LHJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zOmZ1bmN0aW9uIGkodCxvLGEscixzKXtvLmlzTWVzaEJhc2ljTWF0ZXJpYWw/ZSh0LG8pOm8uaXNNZXNoTGFtYmVydE1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGwodCxlKXtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKX0pKHQsbykpOm8uaXNNZXNoVG9vbk1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGModCxlKXtlLmdyYWRpZW50TWFwJiYodC5ncmFkaWVudE1hcC52YWx1ZT1lLmdyYWRpZW50TWFwKTtlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKTtlLmJ1bXBNYXAmJih0LmJ1bXBNYXAudmFsdWU9ZS5idW1wTWFwLHQuYnVtcFNjYWxlLnZhbHVlPWUuYnVtcFNjYWxlLDE9PT1lLnNpZGUmJih0LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKTtlLm5vcm1hbE1hcCYmKHQubm9ybWFsTWFwLnZhbHVlPWUubm9ybWFsTWFwLHQubm9ybWFsU2NhbGUudmFsdWUuY29weShlLm5vcm1hbFNjYWxlKSwxPT09ZS5zaWRlJiZ0Lm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsbykpOm8uaXNNZXNoUGhvbmdNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiBkKHQsZSl7dC5zcGVjdWxhci52YWx1ZS5jb3B5KGUuc3BlY3VsYXIpLHQuc2hpbmluZXNzLnZhbHVlPU1hdGgubWF4KGUuc2hpbmluZXNzLDFlLTQpLGUuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPyhlKHQsbyksby5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPyhmdW5jdGlvbiBwKHQsZSxvKXtuKHQsZSksdC5pb3IudmFsdWU9ZS5pb3IsZS5zaGVlbj4wJiYodC5zaGVlbkNvbG9yLnZhbHVlLmNvcHkoZS5zaGVlbkNvbG9yKS5tdWx0aXBseVNjYWxhcihlLnNoZWVuKSx0LnNoZWVuUm91Z2huZXNzLnZhbHVlPWUuc2hlZW5Sb3VnaG5lc3MsZS5zaGVlbkNvbG9yTWFwJiYodC5zaGVlbkNvbG9yTWFwLnZhbHVlPWUuc2hlZW5Db2xvck1hcCksZS5zaGVlblJvdWdobmVzc01hcCYmKHQuc2hlZW5Sb3VnaG5lc3NNYXAudmFsdWU9ZS5zaGVlblJvdWdobmVzc01hcCkpO2UuY2xlYXJjb2F0PjAmJih0LmNsZWFyY29hdC52YWx1ZT1lLmNsZWFyY29hdCx0LmNsZWFyY29hdFJvdWdobmVzcy52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzcyxlLmNsZWFyY29hdE1hcCYmKHQuY2xlYXJjb2F0TWFwLnZhbHVlPWUuY2xlYXJjb2F0TWFwKSxlLmNsZWFyY29hdFJvdWdobmVzc01hcCYmKHQuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnZhbHVlPWUuY2xlYXJjb2F0Um91Z2huZXNzTWFwKSxlLmNsZWFyY29hdE5vcm1hbE1hcCYmKHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUuY29weShlLmNsZWFyY29hdE5vcm1hbFNjYWxlKSx0LmNsZWFyY29hdE5vcm1hbE1hcC52YWx1ZT1lLmNsZWFyY29hdE5vcm1hbE1hcCwxPT09ZS5zaWRlJiZ0LmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSk7ZS50cmFuc21pc3Npb24+MCYmKHQudHJhbnNtaXNzaW9uLnZhbHVlPWUudHJhbnNtaXNzaW9uLHQudHJhbnNtaXNzaW9uU2FtcGxlck1hcC52YWx1ZT1vLnRleHR1cmUsdC50cmFuc21pc3Npb25TYW1wbGVyU2l6ZS52YWx1ZS5zZXQoby53aWR0aCxvLmhlaWdodCksZS50cmFuc21pc3Npb25NYXAmJih0LnRyYW5zbWlzc2lvbk1hcC52YWx1ZT1lLnRyYW5zbWlzc2lvbk1hcCksdC50aGlja25lc3MudmFsdWU9ZS50aGlja25lc3MsZS50aGlja25lc3NNYXAmJih0LnRoaWNrbmVzc01hcC52YWx1ZT1lLnRoaWNrbmVzc01hcCksdC5hdHRlbnVhdGlvbkRpc3RhbmNlLnZhbHVlPWUuYXR0ZW51YXRpb25EaXN0YW5jZSx0LmF0dGVudWF0aW9uQ29sb3IudmFsdWUuY29weShlLmF0dGVudWF0aW9uQ29sb3IpKTt0LnNwZWN1bGFySW50ZW5zaXR5LnZhbHVlPWUuc3BlY3VsYXJJbnRlbnNpdHksdC5zcGVjdWxhckNvbG9yLnZhbHVlLmNvcHkoZS5zcGVjdWxhckNvbG9yKSxlLnNwZWN1bGFySW50ZW5zaXR5TWFwJiYodC5zcGVjdWxhckludGVuc2l0eU1hcC52YWx1ZT1lLnNwZWN1bGFySW50ZW5zaXR5TWFwKTtlLnNwZWN1bGFyQ29sb3JNYXAmJih0LnNwZWN1bGFyQ29sb3JNYXAudmFsdWU9ZS5zcGVjdWxhckNvbG9yTWFwKX0pKHQsbyxzKTpuKHQsbykpOm8uaXNNZXNoTWF0Y2FwTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gbSh0LGUpe2UubWF0Y2FwJiYodC5tYXRjYXAudmFsdWU9ZS5tYXRjYXApO2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hEZXB0aE1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIHUodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsbykpOm8uaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiBmKHQsZSl7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyk7dC5yZWZlcmVuY2VQb3NpdGlvbi52YWx1ZS5jb3B5KGUucmVmZXJlbmNlUG9zaXRpb24pLHQubmVhckRpc3RhbmNlLnZhbHVlPWUubmVhckRpc3RhbmNlLHQuZmFyRGlzdGFuY2UudmFsdWU9ZS5mYXJEaXN0YW5jZX0pKHQsbykpOm8uaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gZyh0LGUpe2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2Uubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc0xpbmVCYXNpY01hdGVyaWFsPyghKGZ1bmN0aW9uIGgodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5fSkodCxvKSxvLmlzTGluZURhc2hlZE1hdGVyaWFsJiYoZnVuY3Rpb24gYih0LGUpe3QuZGFzaFNpemUudmFsdWU9ZS5kYXNoU2l6ZSx0LnRvdGFsU2l6ZS52YWx1ZT1lLmRhc2hTaXplK2UuZ2FwU2l6ZSx0LnNjYWxlLnZhbHVlPWUuc2NhbGV9KSh0LG8pKTpvLmlzUG9pbnRzTWF0ZXJpYWw/KGZ1bmN0aW9uIHkodCxlLG4sbyl7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnNpemUudmFsdWU9ZS5zaXplKm4sdC5zY2FsZS52YWx1ZT0uNSpvLGUubWFwJiYodC5tYXAudmFsdWU9ZS5tYXApO2UuYWxwaGFNYXAmJih0LmFscGhhTWFwLnZhbHVlPWUuYWxwaGFNYXApO2UuYWxwaGFUZXN0PjAmJih0LmFscGhhVGVzdC52YWx1ZT1lLmFscGhhVGVzdCk7bGV0IGk7ZS5tYXA/aT1lLm1hcDplLmFscGhhTWFwJiYoaT1lLmFscGhhTWFwKTt2b2lkIDAhPT1pJiYoITA9PT1pLm1hdHJpeEF1dG9VcGRhdGUmJmkudXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KGkubWF0cml4KSl9KSh0LG8sYSxyKTpvLmlzU3ByaXRlTWF0ZXJpYWw/KGZ1bmN0aW9uIF8odCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQucm90YXRpb24udmFsdWU9ZS5yb3RhdGlvbixlLm1hcCYmKHQubWFwLnZhbHVlPWUubWFwKTtlLmFscGhhTWFwJiYodC5hbHBoYU1hcC52YWx1ZT1lLmFscGhhTWFwKTtlLmFscGhhVGVzdD4wJiYodC5hbHBoYVRlc3QudmFsdWU9ZS5hbHBoYVRlc3QpO2xldCBuO2UubWFwP249ZS5tYXA6ZS5hbHBoYU1hcCYmKG49ZS5hbHBoYU1hcCk7dm9pZCAwIT09biYmKCEwPT09bi5tYXRyaXhBdXRvVXBkYXRlJiZuLnVwZGF0ZU1hdHJpeCgpLHQudXZUcmFuc2Zvcm0udmFsdWUuY29weShuLm1hdHJpeCkpfSkodCxvKTpvLmlzU2hhZG93TWF0ZXJpYWw/KHQuY29sb3IudmFsdWUuY29weShvLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9by5vcGFjaXR5KTpvLmlzU2hhZGVyTWF0ZXJpYWwmJihvLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSl9fX1mdW5jdGlvbiBydXQodD17fSl7Y29uc3QgZT12b2lkIDAhPT10LmNhbnZhcz90LmNhbnZhczooZnVuY3Rpb24gbigpe2NvbnN0IHQ9VnN0KCJjYW52YXMiKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdH0pKCksbz12b2lkIDAhPT10LmNvbnRleHQ/dC5jb250ZXh0Om51bGwsaT12b2lkIDAhPT10LmFscGhhJiZ0LmFscGhhLGE9dm9pZCAwPT09dC5kZXB0aHx8dC5kZXB0aCxyPXZvaWQgMD09PXQuc3RlbmNpbHx8dC5zdGVuY2lsLHM9dm9pZCAwIT09dC5hbnRpYWxpYXMmJnQuYW50aWFsaWFzLGw9dm9pZCAwPT09dC5wcmVtdWx0aXBsaWVkQWxwaGF8fHQucHJlbXVsdGlwbGllZEFscGhhLGM9dm9pZCAwIT09dC5wcmVzZXJ2ZURyYXdpbmdCdWZmZXImJnQucHJlc2VydmVEcmF3aW5nQnVmZmVyLGQ9dm9pZCAwIT09dC5wb3dlclByZWZlcmVuY2U/dC5wb3dlclByZWZlcmVuY2U6ImRlZmF1bHQiLHA9dm9pZCAwIT09dC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0JiZ0LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7bGV0IG09bnVsbCx1PW51bGw7Y29uc3QgZj1bXSxnPVtdO3RoaXMuZG9tRWxlbWVudD1lLHRoaXMuZGVidWc9e2NoZWNrU2hhZGVyRXJyb3JzOiEwfSx0aGlzLmF1dG9DbGVhcj0hMCx0aGlzLmF1dG9DbGVhckNvbG9yPSEwLHRoaXMuYXV0b0NsZWFyRGVwdGg9ITAsdGhpcy5hdXRvQ2xlYXJTdGVuY2lsPSEwLHRoaXMuc29ydE9iamVjdHM9ITAsdGhpcy5jbGlwcGluZ1BsYW5lcz1bXSx0aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkPSExLHRoaXMub3V0cHV0RW5jb2Rpbmc9dnN0LHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHM9ITEsdGhpcy50b25lTWFwcGluZz0wLHRoaXMudG9uZU1hcHBpbmdFeHBvc3VyZT0xO2NvbnN0IGg9dGhpcztsZXQgYj0hMSx5PTAsXz0wLEM9bnVsbCxNPS0xLHY9bnVsbDtjb25zdCB4PW5ldyB0bHQsTz1uZXcgdGx0O2xldCBQPW51bGwsdz1lLndpZHRoLGs9ZS5oZWlnaHQsUz0xLEQ9bnVsbCxSPW51bGw7Y29uc3QgRT1uZXcgdGx0KDAsMCx3LGspLEE9bmV3IHRsdCgwLDAsdyxrKTtsZXQgVD0hMTtjb25zdCBOPW5ldyBiZHQ7bGV0IHo9ITEsST0hMSxIPW51bGw7Y29uc3QgRj1uZXcgemx0LEw9bmV3IGlsdCxCPXtiYWNrZ3JvdW5kOm51bGwsZm9nOm51bGwsZW52aXJvbm1lbnQ6bnVsbCxvdmVycmlkZU1hdGVyaWFsOm51bGwsaXNTY2VuZTohMH07ZnVuY3Rpb24gVigpe3JldHVybiBudWxsPT09Qz9TOjF9bGV0IFUsaixXLEcsWSxxLFosWCxLLEosUSwkLHR0LGV0LG50LG90LGl0LGF0LHJ0LHN0LGx0LGN0LGR0LHB0PW87ZnVuY3Rpb24gbXQodCxuKXtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3QgaT1lLmdldENvbnRleHQodFtvXSxuKTtpZihudWxsIT09aSlyZXR1cm4gaX1yZXR1cm4gbnVsbH10cnl7Y29uc3QgdD17YWxwaGE6ITAsZGVwdGg6YSxzdGVuY2lsOnIsYW50aWFsaWFzOnMscHJlbXVsdGlwbGllZEFscGhhOmwscHJlc2VydmVEcmF3aW5nQnVmZmVyOmMscG93ZXJQcmVmZXJlbmNlOmQsZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDpwfTtpZigic2V0QXR0cmlidXRlImluIGUmJmUuc2V0QXR0cmlidXRlKCJkYXRhLWVuZ2luZSIsInRocmVlLmpzIHIxMzciKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGd0LCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixodCwhMSksbnVsbD09PXB0KXtjb25zdCBlPVsid2ViZ2wyIiwid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiXTtpZighMD09PWguaXNXZWJHTDFSZW5kZXJlciYmZS5zaGlmdCgpLHB0PW10KGUsdCksbnVsbD09PXB0KXRocm93IG10KGUpP25ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dCB3aXRoIHlvdXIgc2VsZWN0ZWQgYXR0cmlidXRlcy4iKTpuZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQuIil9dm9pZCAwPT09cHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JiYocHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaCh0KXt0aHJvdyBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK3QubWVzc2FnZSksdH1mdW5jdGlvbiB1dCgpe1U9bmV3ICRkdChwdCksaj1uZXcga2R0KHB0LFUsdCksVS5pbml0KGopLGN0PW5ldyBRbXQocHQsVSxqKSxXPW5ldyBLbXQocHQsVSxqKSxHPW5ldyBucHQocHQpLFk9bmV3IEltdCxxPW5ldyBKbXQocHQsVSxXLFksaixjdCxHKSxaPW5ldyBEZHQoaCksWD1uZXcgUWR0KGgpLEs9bmV3IF9kdChwdCxqKSxkdD1uZXcgUGR0KHB0LFUsSyxqKSxKPW5ldyB0cHQocHQsSyxHLGR0KSxRPW5ldyBscHQocHQsSixLLEcpLHJ0PW5ldyBzcHQocHQsaixxKSxvdD1uZXcgU2R0KFkpLCQ9bmV3IHptdChoLFosWCxVLGosZHQsb3QpLHR0PW5ldyBhdXQoWSksZXQ9bmV3IEJtdCxudD1uZXcgWW10KFUsaiksYXQ9bmV3IE9kdChoLFosVyxRLGksbCksaXQ9bmV3IFhtdChoLFEsaiksc3Q9bmV3IHdkdChwdCxVLEcsaiksbHQ9bmV3IGVwdChwdCxVLEcsaiksRy5wcm9ncmFtcz0kLnByb2dyYW1zLGguY2FwYWJpbGl0aWVzPWosaC5leHRlbnNpb25zPVUsaC5wcm9wZXJ0aWVzPVksaC5yZW5kZXJMaXN0cz1ldCxoLnNoYWRvd01hcD1pdCxoLnN0YXRlPVcsaC5pbmZvPUd9dXQoKTtjb25zdCBmdD1uZXcgaXV0KGgscHQpO2Z1bmN0aW9uIGd0KHQpe3QucHJldmVudERlZmF1bHQoKSxjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LiIpLGI9ITB9ZnVuY3Rpb24gaHQoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKSxiPSExO2NvbnN0IHQ9Ry5hdXRvUmVzZXQsZT1pdC5lbmFibGVkLG49aXQuYXV0b1VwZGF0ZSxvPWl0Lm5lZWRzVXBkYXRlLGk9aXQudHlwZTt1dCgpLEcuYXV0b1Jlc2V0PXQsaXQuZW5hYmxlZD1lLGl0LmF1dG9VcGRhdGU9bixpdC5uZWVkc1VwZGF0ZT1vLGl0LnR5cGU9aX1mdW5jdGlvbiBidCh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYnQpLChmdW5jdGlvbiBuKHQpeyhmdW5jdGlvbiBlKHQpe2NvbnN0IGU9WS5nZXQodCkucHJvZ3JhbXM7dm9pZCAwIT09ZSYmKGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7JC5yZWxlYXNlUHJvZ3JhbSh0KX0pKSx0LmlzU2hhZGVyTWF0ZXJpYWwmJiQucmVsZWFzZVNoYWRlckNhY2hlKHQpKX0pKHQpLFkucmVtb3ZlKHQpfSkoZSl9dGhpcy54cj1mdCx0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gcHR9LHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gcHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKX0sdGhpcy5mb3JjZUNvbnRleHRMb3NzPWZ1bmN0aW9uKCl7Y29uc3QgdD1VLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtjb25zdCB0PVUuZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0LnJlc3RvcmVDb250ZXh0KCl9LHRoaXMuZ2V0UGl4ZWxSYXRpbz1mdW5jdGlvbigpe3JldHVybiBTfSx0aGlzLnNldFBpeGVsUmF0aW89ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKFM9dCx0aGlzLnNldFNpemUodyxrLCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQodyxrKX0sdGhpcy5zZXRTaXplPWZ1bmN0aW9uKHQsbixvKXtmdC5pc1ByZXNlbnRpbmc/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDYW4ndCBjaGFuZ2Ugc2l6ZSB3aGlsZSBWUiBkZXZpY2UgaXMgcHJlc2VudGluZy4iKToodz10LGs9bixlLndpZHRoPU1hdGguZmxvb3IodCpTKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qUyksITEhPT1vJiYoZS5zdHlsZS53aWR0aD10KyJweCIsZS5zdHlsZS5oZWlnaHQ9bisicHgiKSx0aGlzLnNldFZpZXdwb3J0KDAsMCx0LG4pKX0sdGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQodypTLGsqUykuZmxvb3IoKX0sdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0LG4sbyl7dz10LGs9bixTPW8sZS53aWR0aD1NYXRoLmZsb29yKHQqbyksZS5oZWlnaHQ9TWF0aC5mbG9vcihuKm8pLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbil9LHRoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoeCl9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShFKX0sdGhpcy5zZXRWaWV3cG9ydD1mdW5jdGlvbih0LGUsbixvKXt0LmlzVmVjdG9yND9FLnNldCh0LngsdC55LHQueix0LncpOkUuc2V0KHQsZSxuLG8pLFcudmlld3BvcnQoeC5jb3B5KEUpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShBKX0sdGhpcy5zZXRTY2lzc29yPWZ1bmN0aW9uKHQsZSxuLG8pe3QuaXNWZWN0b3I0P0Euc2V0KHQueCx0LnksdC56LHQudyk6QS5zZXQodCxlLG4sbyksVy5zY2lzc29yKE8uY29weShBKS5tdWx0aXBseVNjYWxhcihTKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yVGVzdD1mdW5jdGlvbigpe3JldHVybiBUfSx0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe1cuc2V0U2Npc3NvclRlc3QoVD10KX0sdGhpcy5zZXRPcGFxdWVTb3J0PWZ1bmN0aW9uKHQpe0Q9dH0sdGhpcy5zZXRUcmFuc3BhcmVudFNvcnQ9ZnVuY3Rpb24odCl7Uj10fSx0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShhdC5nZXRDbGVhckNvbG9yKCkpfSx0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXthdC5zZXRDbGVhckNvbG9yLmFwcGx5KGF0LGFyZ3VtZW50cyl9LHRoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiBhdC5nZXRDbGVhckFscGhhKCl9LHRoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe2F0LnNldENsZWFyQWxwaGEuYXBwbHkoYXQsYXJndW1lbnRzKX0sdGhpcy5jbGVhcj1mdW5jdGlvbih0LGUsbil7bGV0IG89MDsodm9pZCAwPT09dHx8dCkmJihvfD0xNjM4NCksKHZvaWQgMD09PWV8fGUpJiYob3w9MjU2KSwodm9pZCAwPT09bnx8bikmJihvfD0xMDI0KSxwdC5jbGVhcihvKX0sdGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9LHRoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfSx0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGd0LCExKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixodCwhMSksZXQuZGlzcG9zZSgpLG50LmRpc3Bvc2UoKSxZLmRpc3Bvc2UoKSxaLmRpc3Bvc2UoKSxYLmRpc3Bvc2UoKSxRLmRpc3Bvc2UoKSxkdC5kaXNwb3NlKCksJC5kaXNwb3NlKCksZnQuZGlzcG9zZSgpLGZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsX3QpLGZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLEN0KSxIJiYoSC5kaXNwb3NlKCksSD1udWxsKSxNdC5zdG9wKCl9LHRoaXMucmVuZGVyQnVmZmVyRGlyZWN0PWZ1bmN0aW9uKHQsZSxuLG8saSxhKXtudWxsPT09ZSYmKGU9Qik7Y29uc3Qgcj1pLmlzTWVzaCYmaS5tYXRyaXhXb3JsZC5kZXRlcm1pbmFudCgpPDAscz0oZnVuY3Rpb24gbCh0LGUsbixvLGkpeyEwIT09ZS5pc1NjZW5lJiYoZT1CKTtxLnJlc2V0VGV4dHVyZVVuaXRzKCk7Y29uc3QgYT1lLmZvZyxyPW8uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwscz1udWxsPT09Qz9oLm91dHB1dEVuY29kaW5nOiEwPT09Qy5pc1hSUmVuZGVyVGFyZ2V0P0MudGV4dHVyZS5lbmNvZGluZzp2c3QsbD0oby5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP1g6WikuZ2V0KG8uZW52TWFwfHxyKSxjPSEwPT09by52ZXJ0ZXhDb2xvcnMmJiEhbi5hdHRyaWJ1dGVzLmNvbG9yJiY0PT09bi5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplLGQ9ISFvLm5vcm1hbE1hcCYmISFuLmF0dHJpYnV0ZXMudGFuZ2VudCxwPSEhbi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbT0hIW4ubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxmPW4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uP24ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aDowLGc9by50b25lTWFwcGVkP2gudG9uZU1hcHBpbmc6MCxiPVkuZ2V0KG8pLHk9dS5zdGF0ZS5saWdodHM7aWYoITA9PT16JiYoITA9PT1JfHx0IT09dikpe290LnNldFN0YXRlKG8sdCx0PT09diYmby5pZD09PU0pfWxldCBfPSExO28udmVyc2lvbj09PWIuX192ZXJzaW9uP2IubmVlZHNMaWdodHMmJmIubGlnaHRzU3RhdGVWZXJzaW9uIT09eS5zdGF0ZS52ZXJzaW9ufHxiLm91dHB1dEVuY29kaW5nIT09c3x8aS5pc0luc3RhbmNlZE1lc2gmJiExPT09Yi5pbnN0YW5jaW5nP189ITA6aS5pc0luc3RhbmNlZE1lc2h8fCEwIT09Yi5pbnN0YW5jaW5nP2kuaXNTa2lubmVkTWVzaCYmITE9PT1iLnNraW5uaW5nP189ITA6aS5pc1NraW5uZWRNZXNofHwhMCE9PWIuc2tpbm5pbmc/Yi5lbnZNYXAhPT1sfHxvLmZvZyYmYi5mb2chPT1hP189ITA6dm9pZCAwPT09Yi5udW1DbGlwcGluZ1BsYW5lc3x8Yi5udW1DbGlwcGluZ1BsYW5lcz09PW90Lm51bVBsYW5lcyYmYi5udW1JbnRlcnNlY3Rpb249PT1vdC5udW1JbnRlcnNlY3Rpb24/KGIudmVydGV4QWxwaGFzIT09Y3x8Yi52ZXJ0ZXhUYW5nZW50cyE9PWR8fGIubW9ycGhUYXJnZXRzIT09cHx8Yi5tb3JwaE5vcm1hbHMhPT1tfHxiLnRvbmVNYXBwaW5nIT09Z3x8ITA9PT1qLmlzV2ViR0wyJiZiLm1vcnBoVGFyZ2V0c0NvdW50IT09ZikmJihfPSEwKTpfPSEwOl89ITA6Xz0hMDooXz0hMCxiLl9fdmVyc2lvbj1vLnZlcnNpb24pO2xldCB4PWIuY3VycmVudFByb2dyYW07ITA9PT1fJiYoeD13dChvLGUsaSkpO2xldCBPPSExLFA9ITEsdz0hMTtjb25zdCBEPXguZ2V0VW5pZm9ybXMoKSxSPWIudW5pZm9ybXM7Vy51c2VQcm9ncmFtKHgucHJvZ3JhbSkmJihPPSEwLFA9ITAsdz0hMCk7by5pZCE9PU0mJihNPW8uaWQsUD0hMCk7aWYoT3x8diE9PXQpe2lmKEQuc2V0VmFsdWUocHQsInByb2plY3Rpb25NYXRyaXgiLHQucHJvamVjdGlvbk1hdHJpeCksai5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZELnNldFZhbHVlKHB0LCJsb2dEZXB0aEJ1ZkZDIiwyLyhNYXRoLmxvZyh0LmZhcisxKS9NYXRoLkxOMikpLHYhPT10JiYodj10LFA9ITAsdz0hMCksby5pc1NoYWRlck1hdGVyaWFsfHxvLmlzTWVzaFBob25nTWF0ZXJpYWx8fG8uaXNNZXNoVG9vbk1hdGVyaWFsfHxvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG8uZW52TWFwKXtjb25zdCBlPUQubWFwLmNhbWVyYVBvc2l0aW9uO3ZvaWQgMCE9PWUmJmUuc2V0VmFsdWUocHQsTC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkpfShvLmlzTWVzaFBob25nTWF0ZXJpYWx8fG8uaXNNZXNoVG9vbk1hdGVyaWFsfHxvLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8by5pc01lc2hCYXNpY01hdGVyaWFsfHxvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG8uaXNTaGFkZXJNYXRlcmlhbCkmJkQuc2V0VmFsdWUocHQsImlzT3J0aG9ncmFwaGljIiwhMD09PXQuaXNPcnRob2dyYXBoaWNDYW1lcmEpLChvLmlzTWVzaFBob25nTWF0ZXJpYWx8fG8uaXNNZXNoVG9vbk1hdGVyaWFsfHxvLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8by5pc01lc2hCYXNpY01hdGVyaWFsfHxvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fG8uaXNTaGFkZXJNYXRlcmlhbHx8by5pc1NoYWRvd01hdGVyaWFsfHxpLmlzU2tpbm5lZE1lc2gpJiZELnNldFZhbHVlKHB0LCJ2aWV3TWF0cml4Iix0Lm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYoaS5pc1NraW5uZWRNZXNoKXtELnNldE9wdGlvbmFsKHB0LGksImJpbmRNYXRyaXgiKSxELnNldE9wdGlvbmFsKHB0LGksImJpbmRNYXRyaXhJbnZlcnNlIik7Y29uc3QgdD1pLnNrZWxldG9uO3QmJihqLmZsb2F0VmVydGV4VGV4dHVyZXM/KG51bGw9PT10LmJvbmVUZXh0dXJlJiZ0LmNvbXB1dGVCb25lVGV4dHVyZSgpLEQuc2V0VmFsdWUocHQsImJvbmVUZXh0dXJlIix0LmJvbmVUZXh0dXJlLHEpLEQuc2V0VmFsdWUocHQsImJvbmVUZXh0dXJlU2l6ZSIsdC5ib25lVGV4dHVyZVNpemUpKTpELnNldE9wdGlvbmFsKHB0LHQsImJvbmVNYXRyaWNlcyIpKX0hbnx8dm9pZCAwPT09bi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24mJnZvaWQgMD09PW4ubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbHx8cnQudXBkYXRlKGksbixvLHgpOyhQfHxiLnJlY2VpdmVTaGFkb3chPT1pLnJlY2VpdmVTaGFkb3cpJiYoYi5yZWNlaXZlU2hhZG93PWkucmVjZWl2ZVNoYWRvdyxELnNldFZhbHVlKHB0LCJyZWNlaXZlU2hhZG93IixpLnJlY2VpdmVTaGFkb3cpKTtQJiYoRC5zZXRWYWx1ZShwdCwidG9uZU1hcHBpbmdFeHBvc3VyZSIsaC50b25lTWFwcGluZ0V4cG9zdXJlKSxiLm5lZWRzTGlnaHRzJiYoZnVuY3Rpb24gRSh0LGUpe3QuYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9ZSx0LmxpZ2h0UHJvYmUubmVlZHNVcGRhdGU9ZSx0LmRpcmVjdGlvbmFsTGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQucG9pbnRMaWdodHMubmVlZHNVcGRhdGU9ZSx0LnBvaW50TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5yZWN0QXJlYUxpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1lfSkoUix3KSxhJiZvLmZvZyYmdHQucmVmcmVzaEZvZ1VuaWZvcm1zKFIsYSksdHQucmVmcmVzaE1hdGVyaWFsVW5pZm9ybXMoUixvLFMsayxIKSx1bXQudXBsb2FkKHB0LGIudW5pZm9ybXNMaXN0LFIscSkpO28uaXNTaGFkZXJNYXRlcmlhbCYmITA9PT1vLnVuaWZvcm1zTmVlZFVwZGF0ZSYmKHVtdC51cGxvYWQocHQsYi51bmlmb3Jtc0xpc3QsUixxKSxvLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSk7by5pc1Nwcml0ZU1hdGVyaWFsJiZELnNldFZhbHVlKHB0LCJjZW50ZXIiLGkuY2VudGVyKTtyZXR1cm4gRC5zZXRWYWx1ZShwdCwibW9kZWxWaWV3TWF0cml4IixpLm1vZGVsVmlld01hdHJpeCksRC5zZXRWYWx1ZShwdCwibm9ybWFsTWF0cml4IixpLm5vcm1hbE1hdHJpeCksRC5zZXRWYWx1ZShwdCwibW9kZWxNYXRyaXgiLGkubWF0cml4V29ybGQpLHh9KSh0LGUsbixvLGkpO1cuc2V0TWF0ZXJpYWwobyxyKTtsZXQgYz1uLmluZGV4O2NvbnN0IGQ9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGw9PT1jKXtpZih2b2lkIDA9PT1kfHwwPT09ZC5jb3VudClyZXR1cm59ZWxzZSBpZigwPT09Yy5jb3VudClyZXR1cm47bGV0IHAsbT0xOyEwPT09by53aXJlZnJhbWUmJihjPUouZ2V0V2lyZWZyYW1lQXR0cmlidXRlKG4pLG09MiksZHQuc2V0dXAoaSxvLHMsbixjKTtsZXQgZj1zdDtudWxsIT09YyYmKHA9Sy5nZXQoYyksZj1sdCxmLnNldEluZGV4KHApKTtjb25zdCBnPW51bGwhPT1jP2MuY291bnQ6ZC5jb3VudCxiPW4uZHJhd1JhbmdlLnN0YXJ0Km0seT1uLmRyYXdSYW5nZS5jb3VudCptLF89bnVsbCE9PWE/YS5zdGFydCptOjAseD1udWxsIT09YT9hLmNvdW50Km06MS8wLE89TWF0aC5tYXgoYixfKSxQPU1hdGgubWluKGcsYit5LF8reCktMSx3PU1hdGgubWF4KDAsUC1PKzEpO2lmKDAhPT13KXtpZihpLmlzTWVzaCkhMD09PW8ud2lyZWZyYW1lPyhXLnNldExpbmVXaWR0aChvLndpcmVmcmFtZUxpbmV3aWR0aCpWKCkpLGYuc2V0TW9kZSgxKSk6Zi5zZXRNb2RlKDQpO2Vsc2UgaWYoaS5pc0xpbmUpe2xldCB0PW8ubGluZXdpZHRoO3ZvaWQgMD09PXQmJih0PTEpLFcuc2V0TGluZVdpZHRoKHQqVigpKSxmLnNldE1vZGUoaS5pc0xpbmVTZWdtZW50cz8xOmkuaXNMaW5lTG9vcD8yOjMpfWVsc2UgaS5pc1BvaW50cz9mLnNldE1vZGUoMCk6aS5pc1Nwcml0ZSYmZi5zZXRNb2RlKDQpO2lmKGkuaXNJbnN0YW5jZWRNZXNoKWYucmVuZGVySW5zdGFuY2VzKE8sdyxpLmNvdW50KTtlbHNlIGlmKG4uaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSl7Y29uc3QgdD1NYXRoLm1pbihuLmluc3RhbmNlQ291bnQsbi5fbWF4SW5zdGFuY2VDb3VudCk7Zi5yZW5kZXJJbnN0YW5jZXMoTyx3LHQpfWVsc2UgZi5yZW5kZXIoTyx3KX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbih0LGUpe3U9bnQuZ2V0KHQpLHUuaW5pdCgpLGcucHVzaCh1KSx0LnRyYXZlcnNlVmlzaWJsZSgoZnVuY3Rpb24odCl7dC5pc0xpZ2h0JiZ0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmKHUucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmdS5wdXNoU2hhZG93KHQpKX0pKSx1LnNldHVwTGlnaHRzKGgucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLHQudHJhdmVyc2UoKGZ1bmN0aW9uKGUpe2NvbnN0IG49ZS5tYXRlcmlhbDtpZihuKWlmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspe3d0KG5bb10sdCxlKX1lbHNlIHd0KG4sdCxlKX0pKSxnLnBvcCgpLHU9bnVsbH07bGV0IHl0PW51bGw7ZnVuY3Rpb24gX3QoKXtNdC5zdG9wKCl9ZnVuY3Rpb24gQ3QoKXtNdC5zdGFydCgpfWNvbnN0IE10PW5ldyB5ZHQ7ZnVuY3Rpb24gdnQodCxlLG4sbyl7aWYoITE9PT10LnZpc2libGUpcmV0dXJuO2lmKHQubGF5ZXJzLnRlc3QoZS5sYXllcnMpKWlmKHQuaXNHcm91cCluPXQucmVuZGVyT3JkZXI7ZWxzZSBpZih0LmlzTE9EKSEwPT09dC5hdXRvVXBkYXRlJiZ0LnVwZGF0ZShlKTtlbHNlIGlmKHQuaXNMaWdodCl1LnB1c2hMaWdodCh0KSx0LmNhc3RTaGFkb3cmJnUucHVzaFNoYWRvdyh0KTtlbHNlIGlmKHQuaXNTcHJpdGUpe2lmKCF0LmZydXN0dW1DdWxsZWR8fE4uaW50ZXJzZWN0c1Nwcml0ZSh0KSl7byYmTC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KEYpO2NvbnN0IGU9US51cGRhdGUodCksaT10Lm1hdGVyaWFsO2kudmlzaWJsZSYmbS5wdXNoKHQsZSxpLG4sTC56LG51bGwpfX1lbHNlIGlmKCh0LmlzTWVzaHx8dC5pc0xpbmV8fHQuaXNQb2ludHMpJiYodC5pc1NraW5uZWRNZXNoJiZ0LnNrZWxldG9uLmZyYW1lIT09Ry5yZW5kZXIuZnJhbWUmJih0LnNrZWxldG9uLnVwZGF0ZSgpLHQuc2tlbGV0b24uZnJhbWU9Ry5yZW5kZXIuZnJhbWUpLCF0LmZydXN0dW1DdWxsZWR8fE4uaW50ZXJzZWN0c09iamVjdCh0KSkpe28mJkwuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChGKTtjb25zdCBlPVEudXBkYXRlKHQpLGk9dC5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBvPWUuZ3JvdXBzO2ZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1vW2FdLHM9aVtyLm1hdGVyaWFsSW5kZXhdO3MmJnMudmlzaWJsZSYmbS5wdXNoKHQsZSxzLG4sTC56LHIpfX1lbHNlIGkudmlzaWJsZSYmbS5wdXNoKHQsZSxpLG4sTC56LG51bGwpfWNvbnN0IGk9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxhPWkubGVuZ3RoO3Q8YTt0KyspdnQoaVt0XSxlLG4sbyl9ZnVuY3Rpb24geHQodCxlLG4sbyl7Y29uc3QgaT10Lm9wYXF1ZSxhPXQudHJhbnNtaXNzaXZlLHI9dC50cmFuc3BhcmVudDt1LnNldHVwTGlnaHRzVmlldyhuKSxhLmxlbmd0aD4wJiYoZnVuY3Rpb24gbCh0LGUsbil7aWYobnVsbD09PUgpe0g9bmV3KCEwPT09cyYmITA9PT1qLmlzV2ViR0wyP25sdDplbHQpKDEwMjQsMTAyNCx7Z2VuZXJhdGVNaXBtYXBzOiEwLHR5cGU6bnVsbCE9PWN0LmNvbnZlcnQocnN0KT9yc3Q6bnN0LG1pbkZpbHRlcjplc3QsbWFnRmlsdGVyOiRydCx3cmFwUzpKcnQsd3JhcFQ6SnJ0LHVzZVJlbmRlclRvVGV4dHVyZTpVLmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIil9KX1jb25zdCBvPWguZ2V0UmVuZGVyVGFyZ2V0KCk7aC5zZXRSZW5kZXJUYXJnZXQoSCksaC5jbGVhcigpO2NvbnN0IGk9aC50b25lTWFwcGluZztoLnRvbmVNYXBwaW5nPTAsT3QodCxlLG4pLGgudG9uZU1hcHBpbmc9aSxxLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEgpLHEudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEgpLGguc2V0UmVuZGVyVGFyZ2V0KG8pfSkoaSxlLG4pLG8mJlcudmlld3BvcnQoeC5jb3B5KG8pKSxpLmxlbmd0aD4wJiZPdChpLGUsbiksYS5sZW5ndGg+MCYmT3QoYSxlLG4pLHIubGVuZ3RoPjAmJk90KHIsZSxuKX1mdW5jdGlvbiBPdCh0LGUsbil7Y29uc3Qgbz0hMD09PWUuaXNTY2VuZT9lLm92ZXJyaWRlTWF0ZXJpYWw6bnVsbDtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9dFtpXSxyPWEub2JqZWN0LHM9YS5nZW9tZXRyeSxsPW51bGw9PT1vP2EubWF0ZXJpYWw6byxjPWEuZ3JvdXA7ci5sYXllcnMudGVzdChuLmxheWVycykmJlB0KHIsZSxuLHMsbCxjKX19ZnVuY3Rpb24gUHQodCxlLG4sbyxpLGEpe3Qub25CZWZvcmVSZW5kZXIoaCxlLG4sbyxpLGEpLHQubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMobi5tYXRyaXhXb3JsZEludmVyc2UsdC5tYXRyaXhXb3JsZCksdC5ub3JtYWxNYXRyaXguZ2V0Tm9ybWFsTWF0cml4KHQubW9kZWxWaWV3TWF0cml4KSxpLm9uQmVmb3JlUmVuZGVyKGgsZSxuLG8sdCxhKSwhMD09PWkudHJhbnNwYXJlbnQmJjI9PT1pLnNpZGU/KGkuc2lkZT0xLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0wLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0yKTpoLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsbyxpLHQsYSksdC5vbkFmdGVyUmVuZGVyKGgsZSxuLG8saSxhKX1mdW5jdGlvbiB3dCh0LGUsbil7ITAhPT1lLmlzU2NlbmUmJihlPUIpO2NvbnN0IG89WS5nZXQodCksaT11LnN0YXRlLmxpZ2h0cyxhPWkuc3RhdGUudmVyc2lvbixyPSQuZ2V0UGFyYW1ldGVycyh0LGkuc3RhdGUsdS5zdGF0ZS5zaGFkb3dzQXJyYXksZSxuKSxzPSQuZ2V0UHJvZ3JhbUNhY2hlS2V5KHIpO2xldCBsPW8ucHJvZ3JhbXM7by5lbnZpcm9ubWVudD10LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/ZS5lbnZpcm9ubWVudDpudWxsLG8uZm9nPWUuZm9nLG8uZW52TWFwPSh0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/WDpaKS5nZXQodC5lbnZNYXB8fG8uZW52aXJvbm1lbnQpLHZvaWQgMD09PWwmJih0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGJ0KSxsPW5ldyBNYXAsby5wcm9ncmFtcz1sKTtsZXQgYz1sLmdldChzKTtpZih2b2lkIDAhPT1jKXtpZihvLmN1cnJlbnRQcm9ncmFtPT09YyYmby5saWdodHNTdGF0ZVZlcnNpb249PT1hKXJldHVybiBrdCh0LHIpLGN9ZWxzZSByLnVuaWZvcm1zPSQuZ2V0VW5pZm9ybXModCksdC5vbkJ1aWxkKG4scixoKSx0Lm9uQmVmb3JlQ29tcGlsZShyLGgpLGM9JC5hY3F1aXJlUHJvZ3JhbShyLHMpLGwuc2V0KHMsYyksby51bmlmb3Jtcz1yLnVuaWZvcm1zO2NvbnN0IGQ9by51bmlmb3JtczsodC5pc1NoYWRlck1hdGVyaWFsfHx0LmlzUmF3U2hhZGVyTWF0ZXJpYWwpJiYhMCE9PXQuY2xpcHBpbmd8fChkLmNsaXBwaW5nUGxhbmVzPW90LnVuaWZvcm0pLGt0KHQsciksby5uZWVkc0xpZ2h0cz0oZnVuY3Rpb24gcCh0KXtyZXR1cm4gdC5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fHQuaXNNZXNoVG9vbk1hdGVyaWFsfHx0LmlzTWVzaFBob25nTWF0ZXJpYWx8fHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8dC5pc1NoYWRvd01hdGVyaWFsfHx0LmlzU2hhZGVyTWF0ZXJpYWwmJiEwPT09dC5saWdodHN9KSh0KSxvLmxpZ2h0c1N0YXRlVmVyc2lvbj1hLG8ubmVlZHNMaWdodHMmJihkLmFtYmllbnRMaWdodENvbG9yLnZhbHVlPWkuc3RhdGUuYW1iaWVudCxkLmxpZ2h0UHJvYmUudmFsdWU9aS5zdGF0ZS5wcm9iZSxkLmRpcmVjdGlvbmFsTGlnaHRzLnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWwsZC5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy52YWx1ZT1pLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93LGQuc3BvdExpZ2h0cy52YWx1ZT1pLnN0YXRlLnNwb3QsZC5zcG90TGlnaHRTaGFkb3dzLnZhbHVlPWkuc3RhdGUuc3BvdFNoYWRvdyxkLnJlY3RBcmVhTGlnaHRzLnZhbHVlPWkuc3RhdGUucmVjdEFyZWEsZC5sdGNfMS52YWx1ZT1pLnN0YXRlLnJlY3RBcmVhTFRDMSxkLmx0Y18yLnZhbHVlPWkuc3RhdGUucmVjdEFyZWFMVEMyLGQucG9pbnRMaWdodHMudmFsdWU9aS5zdGF0ZS5wb2ludCxkLnBvaW50TGlnaHRTaGFkb3dzLnZhbHVlPWkuc3RhdGUucG9pbnRTaGFkb3csZC5oZW1pc3BoZXJlTGlnaHRzLnZhbHVlPWkuc3RhdGUuaGVtaSxkLmRpcmVjdGlvbmFsU2hhZG93TWFwLnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXAsZC5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC52YWx1ZT1pLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LGQuc3BvdFNoYWRvd01hcC52YWx1ZT1pLnN0YXRlLnNwb3RTaGFkb3dNYXAsZC5zcG90U2hhZG93TWF0cml4LnZhbHVlPWkuc3RhdGUuc3BvdFNoYWRvd01hdHJpeCxkLnBvaW50U2hhZG93TWFwLnZhbHVlPWkuc3RhdGUucG9pbnRTaGFkb3dNYXAsZC5wb2ludFNoYWRvd01hdHJpeC52YWx1ZT1pLnN0YXRlLnBvaW50U2hhZG93TWF0cml4KTtjb25zdCBtPWMuZ2V0VW5pZm9ybXMoKSxmPXVtdC5zZXFXaXRoVmFsdWUobS5zZXEsZCk7cmV0dXJuIG8uY3VycmVudFByb2dyYW09YyxvLnVuaWZvcm1zTGlzdD1mLGN9ZnVuY3Rpb24ga3QodCxlKXtjb25zdCBuPVkuZ2V0KHQpO24ub3V0cHV0RW5jb2Rpbmc9ZS5vdXRwdXRFbmNvZGluZyxuLmluc3RhbmNpbmc9ZS5pbnN0YW5jaW5nLG4uc2tpbm5pbmc9ZS5za2lubmluZyxuLm1vcnBoVGFyZ2V0cz1lLm1vcnBoVGFyZ2V0cyxuLm1vcnBoTm9ybWFscz1lLm1vcnBoTm9ybWFscyxuLm1vcnBoVGFyZ2V0c0NvdW50PWUubW9ycGhUYXJnZXRzQ291bnQsbi5udW1DbGlwcGluZ1BsYW5lcz1lLm51bUNsaXBwaW5nUGxhbmVzLG4ubnVtSW50ZXJzZWN0aW9uPWUubnVtQ2xpcEludGVyc2VjdGlvbixuLnZlcnRleEFscGhhcz1lLnZlcnRleEFscGhhcyxuLnZlcnRleFRhbmdlbnRzPWUudmVydGV4VGFuZ2VudHMsbi50b25lTWFwcGluZz1lLnRvbmVNYXBwaW5nfU10LnNldEFuaW1hdGlvbkxvb3AoKGZ1bmN0aW9uIFN0KHQpe3l0JiZ5dCh0KX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmTXQuc2V0Q29udGV4dCh3aW5kb3cpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbih0KXt5dD10LGZ0LnNldEFuaW1hdGlvbkxvb3AodCksbnVsbD09PXQ/TXQuc3RvcCgpOk10LnN0YXJ0KCl9LGZ0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsX3QpLGZ0LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLEN0KSx0aGlzLnJlbmRlcj1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUmJiEwIT09ZS5pc0NhbWVyYSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcjogY2FtZXJhIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5DYW1lcmEuIik7aWYoITA9PT1iKXJldHVybjshMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGVNYXRyaXhXb3JsZCgpLG51bGw9PT1lLnBhcmVudCYmZS51cGRhdGVNYXRyaXhXb3JsZCgpLCEwPT09ZnQuZW5hYmxlZCYmITA9PT1mdC5pc1ByZXNlbnRpbmcmJighMD09PWZ0LmNhbWVyYUF1dG9VcGRhdGUmJmZ0LnVwZGF0ZUNhbWVyYShlKSxlPWZ0LmdldENhbWVyYSgpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkJlZm9yZVJlbmRlcihoLHQsZSxDKSx1PW50LmdldCh0LGcubGVuZ3RoKSx1LmluaXQoKSxnLnB1c2godSksRi5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksTi5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChGKSxJPXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQsej1vdC5pbml0KHRoaXMuY2xpcHBpbmdQbGFuZXMsSSxlKSxtPWV0LmdldCh0LGYubGVuZ3RoKSxtLmluaXQoKSxmLnB1c2gobSksdnQodCxlLDAsaC5zb3J0T2JqZWN0cyksbS5maW5pc2goKSwhMD09PWguc29ydE9iamVjdHMmJm0uc29ydChELFIpLCEwPT09eiYmb3QuYmVnaW5TaGFkb3dzKCk7aWYoaXQucmVuZGVyKHUuc3RhdGUuc2hhZG93c0FycmF5LHQsZSksITA9PT16JiZvdC5lbmRTaGFkb3dzKCksITA9PT10aGlzLmluZm8uYXV0b1Jlc2V0JiZ0aGlzLmluZm8ucmVzZXQoKSxhdC5yZW5kZXIobSx0KSx1LnNldHVwTGlnaHRzKGgucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLGUuaXNBcnJheUNhbWVyYSl7Y29uc3Qgbj1lLmNhbWVyYXM7Zm9yKGxldCBlPTAsbz1uLmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPW5bZV07eHQobSx0LG8sby52aWV3cG9ydCl9fWVsc2UgeHQobSx0LGUpO251bGwhPT1DJiYocS51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldChDKSxxLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcChDKSksITA9PT10LmlzU2NlbmUmJnQub25BZnRlclJlbmRlcihoLHQsZSksVy5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLFcuYnVmZmVycy5kZXB0aC5zZXRNYXNrKCEwKSxXLmJ1ZmZlcnMuY29sb3Iuc2V0TWFzayghMCksVy5zZXRQb2x5Z29uT2Zmc2V0KCExKSxkdC5yZXNldERlZmF1bHRTdGF0ZSgpLE09LTEsdj1udWxsLGcucG9wKCksdT1nLmxlbmd0aD4wP2dbZy5sZW5ndGgtMV06bnVsbCxmLnBvcCgpLG09Zi5sZW5ndGg+MD9mW2YubGVuZ3RoLTFdOm51bGx9LHRoaXMuZ2V0QWN0aXZlQ3ViZUZhY2U9ZnVuY3Rpb24oKXtyZXR1cm4geX0sdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiBffSx0aGlzLmdldFJlbmRlclRhcmdldD1mdW5jdGlvbigpe3JldHVybiBDfSx0aGlzLnNldFJlbmRlclRhcmdldFRleHR1cmVzPWZ1bmN0aW9uKHQsZSxuKXtZLmdldCh0LnRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlPWUsWS5nZXQodC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlPW47Y29uc3Qgbz1ZLmdldCh0KTtvLl9faGFzRXh0ZXJuYWxUZXh0dXJlcz0hMCxvLl9faGFzRXh0ZXJuYWxUZXh0dXJlcyYmKG8uX19hdXRvQWxsb2NhdGVEZXB0aEJ1ZmZlcj12b2lkIDA9PT1uLG8uX19hdXRvQWxsb2NhdGVEZXB0aEJ1ZmZlcnx8dC51c2VSZW5kZXJUb1RleHR1cmUmJihjb25zb2xlLndhcm4oInJlbmRlci10by10ZXh0dXJlIGV4dGVuc2lvbiB3YXMgZGlzYWJsZWQgYmVjYXVzZSBhbiBleHRlcm5hbCB0ZXh0dXJlIHdhcyBwcm92aWRlZCIpLHQudXNlUmVuZGVyVG9UZXh0dXJlPSExLHQudXNlUmVuZGVyYnVmZmVyPSEwKSl9LHRoaXMuc2V0UmVuZGVyVGFyZ2V0RnJhbWVidWZmZXI9ZnVuY3Rpb24odCxlKXtjb25zdCBuPVkuZ2V0KHQpO24uX193ZWJnbEZyYW1lYnVmZmVyPWUsbi5fX3VzZURlZmF1bHRGcmFtZWJ1ZmZlcj12b2lkIDA9PT1lfSx0aGlzLnNldFJlbmRlclRhcmdldD1mdW5jdGlvbih0LGU9MCxuPTApe0M9dCx5PWUsXz1uO2xldCBvPSEwO2lmKHQpe2NvbnN0IGU9WS5nZXQodCk7dm9pZCAwIT09ZS5fX3VzZURlZmF1bHRGcmFtZWJ1ZmZlcj8oVy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCksbz0hMSk6dm9pZCAwPT09ZS5fX3dlYmdsRnJhbWVidWZmZXI/cS5zZXR1cFJlbmRlclRhcmdldCh0KTplLl9faGFzRXh0ZXJuYWxUZXh0dXJlcyYmcS5yZWJpbmRUZXh0dXJlcyh0LFkuZ2V0KHQudGV4dHVyZSkuX193ZWJnbFRleHR1cmUsWS5nZXQodC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlKX1sZXQgaT1udWxsLGE9ITEscj0hMTtpZih0KXtjb25zdCBuPXQudGV4dHVyZTsobi5pc0RhdGFUZXh0dXJlM0R8fG4uaXNEYXRhVGV4dHVyZTJEQXJyYXkpJiYocj0hMCk7Y29uc3Qgbz1ZLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXI7dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8oaT1vW2VdLGE9ITApOmk9dC51c2VSZW5kZXJidWZmZXI/WS5nZXQodCkuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyOm8seC5jb3B5KHQudmlld3BvcnQpLE8uY29weSh0LnNjaXNzb3IpLFA9dC5zY2lzc29yVGVzdH1lbHNlIHguY29weShFKS5tdWx0aXBseVNjYWxhcihTKS5mbG9vcigpLE8uY29weShBKS5tdWx0aXBseVNjYWxhcihTKS5mbG9vcigpLFA9VDtpZihXLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxpKSYmai5kcmF3QnVmZmVycyYmbyYmVy5kcmF3QnVmZmVycyh0LGkpLFcudmlld3BvcnQoeCksVy5zY2lzc29yKE8pLFcuc2V0U2Npc3NvclRlc3QoUCksYSl7Y29uc3Qgbz1ZLmdldCh0LnRleHR1cmUpO3B0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM0MDY5K2Usby5fX3dlYmdsVGV4dHVyZSxuKX1lbHNlIGlmKHIpe2NvbnN0IG89WS5nZXQodC50ZXh0dXJlKTtwdC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcigzNjE2MCwzNjA2NCxvLl9fd2ViZ2xUZXh0dXJlLG58fDAsZXx8MCl9TT0tMX0sdGhpcy5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzPWZ1bmN0aW9uKHQsZSxuLG8saSxhLHIpe2lmKCF0fHwhdC5pc1dlYkdMUmVuZGVyVGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBUSFJFRS5XZWJHTFJlbmRlclRhcmdldC4iKTtsZXQgcz1ZLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXI7aWYodC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmdm9pZCAwIT09ciYmKHM9c1tyXSkscyl7Vy5iaW5kRnJhbWVidWZmZXIoMzYxNjAscyk7dHJ5e2NvbnN0IHI9dC50ZXh0dXJlLHM9ci5mb3JtYXQsbD1yLnR5cGU7aWYocyE9PWxzdCYmY3QuY29udmVydChzKSE9PXB0LmdldFBhcmFtZXRlcigzNTczOSkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFJHQkEgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBmb3JtYXQuIik7Y29uc3QgYz1sPT09cnN0JiYoVS5oYXMoIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpfHxqLmlzV2ViR0wyJiZVLmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKTtpZighKGw9PT1uc3R8fGN0LmNvbnZlcnQobCk9PT1wdC5nZXRQYXJhbWV0ZXIoMzU3MzgpfHxsPT09YXN0JiYoai5pc1dlYkdMMnx8VS5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0Iil8fFUuaGFzKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiKSl8fGMpKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBpbiBVbnNpZ25lZEJ5dGVUeXBlIG9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHlwZS4iKTszNjA1Mz09PXB0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoMzYxNjApP2U+PTAmJmU8PXQud2lkdGgtbyYmbj49MCYmbjw9dC5oZWlnaHQtaSYmcHQucmVhZFBpeGVscyhlLG4sbyxpLGN0LmNvbnZlcnQocyksY3QuY29udmVydChsKSxhKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlYWRQaXhlbHMgZnJvbSByZW5kZXJUYXJnZXQgZmFpbGVkLiBGcmFtZWJ1ZmZlciBub3QgY29tcGxldGUuIil9ZmluYWxseXtjb25zdCB0PW51bGwhPT1DP1kuZ2V0KEMpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjpudWxsO1cuYmluZEZyYW1lYnVmZmVyKDM2MTYwLHQpfX19LHRoaXMuY29weUZyYW1lYnVmZmVyVG9UZXh0dXJlPWZ1bmN0aW9uKHQsZSxuPTApe2lmKCEwIT09ZS5pc0ZyYW1lYnVmZmVyVGV4dHVyZSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBjb3B5RnJhbWVidWZmZXJUb1RleHR1cmUoKSBjYW4gb25seSBiZSB1c2VkIHdpdGggRnJhbWVidWZmZXJUZXh0dXJlLiIpO2NvbnN0IG89TWF0aC5wb3coMiwtbiksaT1NYXRoLmZsb29yKGUuaW1hZ2Uud2lkdGgqbyksYT1NYXRoLmZsb29yKGUuaW1hZ2UuaGVpZ2h0Km8pO3Euc2V0VGV4dHVyZTJEKGUsMCkscHQuY29weVRleFN1YkltYWdlMkQoMzU1MyxuLDAsMCx0LngsdC55LGksYSksVy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuY29weVRleHR1cmVUb1RleHR1cmU9ZnVuY3Rpb24odCxlLG4sbz0wKXtjb25zdCBpPWUuaW1hZ2Uud2lkdGgsYT1lLmltYWdlLmhlaWdodCxyPWN0LmNvbnZlcnQobi5mb3JtYXQpLHM9Y3QuY29udmVydChuLnR5cGUpO3Euc2V0VGV4dHVyZTJEKG4sMCkscHQucGl4ZWxTdG9yZWkoMzc0NDAsbi5mbGlwWSkscHQucGl4ZWxTdG9yZWkoMzc0NDEsbi5wcmVtdWx0aXBseUFscGhhKSxwdC5waXhlbFN0b3JlaSgzMzE3LG4udW5wYWNrQWxpZ25tZW50KSxlLmlzRGF0YVRleHR1cmU/cHQudGV4U3ViSW1hZ2UyRCgzNTUzLG8sdC54LHQueSxpLGEscixzLGUuaW1hZ2UuZGF0YSk6ZS5pc0NvbXByZXNzZWRUZXh0dXJlP3B0LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsbyx0LngsdC55LGUubWlwbWFwc1swXS53aWR0aCxlLm1pcG1hcHNbMF0uaGVpZ2h0LHIsZS5taXBtYXBzWzBdLmRhdGEpOnB0LnRleFN1YkltYWdlMkQoMzU1MyxvLHQueCx0LnkscixzLGUuaW1hZ2UpLDA9PT1vJiZuLmdlbmVyYXRlTWlwbWFwcyYmcHQuZ2VuZXJhdGVNaXBtYXAoMzU1MyksVy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuY29weVRleHR1cmVUb1RleHR1cmUzRD1mdW5jdGlvbih0LGUsbixvLGk9MCl7aWYoaC5pc1dlYkdMMVJlbmRlcmVyKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpO2NvbnN0IGE9dC5tYXgueC10Lm1pbi54KzEscj10Lm1heC55LXQubWluLnkrMSxzPXQubWF4LnotdC5taW4ueisxLGw9Y3QuY29udmVydChvLmZvcm1hdCksYz1jdC5jb252ZXJ0KG8udHlwZSk7bGV0IGQ7aWYoby5pc0RhdGFUZXh0dXJlM0QpcS5zZXRUZXh0dXJlM0QobywwKSxkPTMyODc5O2Vsc2V7aWYoIW8uaXNEYXRhVGV4dHVyZTJEQXJyYXkpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IG9ubHkgc3VwcG9ydHMgVEhSRUUuRGF0YVRleHR1cmUzRCBhbmQgVEhSRUUuRGF0YVRleHR1cmUyREFycmF5LiIpO3Euc2V0VGV4dHVyZTJEQXJyYXkobywwKSxkPTM1ODY2fXB0LnBpeGVsU3RvcmVpKDM3NDQwLG8uZmxpcFkpLHB0LnBpeGVsU3RvcmVpKDM3NDQxLG8ucHJlbXVsdGlwbHlBbHBoYSkscHQucGl4ZWxTdG9yZWkoMzMxNyxvLnVucGFja0FsaWdubWVudCk7Y29uc3QgcD1wdC5nZXRQYXJhbWV0ZXIoMzMxNCksbT1wdC5nZXRQYXJhbWV0ZXIoMzI4NzgpLHU9cHQuZ2V0UGFyYW1ldGVyKDMzMTYpLGY9cHQuZ2V0UGFyYW1ldGVyKDMzMTUpLGc9cHQuZ2V0UGFyYW1ldGVyKDMyODc3KSxiPW4uaXNDb21wcmVzc2VkVGV4dHVyZT9uLm1pcG1hcHNbMF06bi5pbWFnZTtwdC5waXhlbFN0b3JlaSgzMzE0LGIud2lkdGgpLHB0LnBpeGVsU3RvcmVpKDMyODc4LGIuaGVpZ2h0KSxwdC5waXhlbFN0b3JlaSgzMzE2LHQubWluLngpLHB0LnBpeGVsU3RvcmVpKDMzMTUsdC5taW4ueSkscHQucGl4ZWxTdG9yZWkoMzI4NzcsdC5taW4ueiksbi5pc0RhdGFUZXh0dXJlfHxuLmlzRGF0YVRleHR1cmUzRD9wdC50ZXhTdWJJbWFnZTNEKGQsaSxlLngsZS55LGUueixhLHIscyxsLGMsYi5kYXRhKTpuLmlzQ29tcHJlc3NlZFRleHR1cmU/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiB1bnRlc3RlZCBzdXBwb3J0IGZvciBjb21wcmVzc2VkIHNyY1RleHR1cmUuIikscHQuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoZCxpLGUueCxlLnksZS56LGEscixzLGwsYi5kYXRhKSk6cHQudGV4U3ViSW1hZ2UzRChkLGksZS54LGUueSxlLnosYSxyLHMsbCxjLGIpLHB0LnBpeGVsU3RvcmVpKDMzMTQscCkscHQucGl4ZWxTdG9yZWkoMzI4NzgsbSkscHQucGl4ZWxTdG9yZWkoMzMxNix1KSxwdC5waXhlbFN0b3JlaSgzMzE1LGYpLHB0LnBpeGVsU3RvcmVpKDMyODc3LGcpLDA9PT1pJiZvLmdlbmVyYXRlTWlwbWFwcyYmcHQuZ2VuZXJhdGVNaXBtYXAoZCksVy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuaW5pdFRleHR1cmU9ZnVuY3Rpb24odCl7cS5zZXRUZXh0dXJlMkQodCwwKSxXLnVuYmluZFRleHR1cmUoKX0sdGhpcy5yZXNldFN0YXRlPWZ1bmN0aW9uKCl7eT0wLF89MCxDPW51bGwsVy5yZXNldCgpLGR0LnJlc2V0KCl9LCJ1bmRlZmluZWQiIT10eXBlb2YgX19USFJFRV9ERVZUT09MU19fJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm9ic2VydmUiLHtkZXRhaWw6dGhpc30pKX1ydXQucHJvdG90eXBlLmlzV2ViR0xSZW5kZXJlcj0hMDsoY2xhc3MgZXh0ZW5kcyBydXR7fSkucHJvdG90eXBlLmlzV2ViR0wxUmVuZGVyZXI9ITA7Y2xhc3Mgc3V0IGV4dGVuZHMgcmN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNjZW5lIix0aGlzLmJhY2tncm91bmQ9bnVsbCx0aGlzLmVudmlyb25tZW50PW51bGwsdGhpcy5mb2c9bnVsbCx0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9bnVsbCx0aGlzLmF1dG9VcGRhdGU9ITAsInVuZGVmaW5lZCIhPXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLG51bGwhPT10LmJhY2tncm91bmQmJih0aGlzLmJhY2tncm91bmQ9dC5iYWNrZ3JvdW5kLmNsb25lKCkpLG51bGwhPT10LmVudmlyb25tZW50JiYodGhpcy5lbnZpcm9ubWVudD10LmVudmlyb25tZW50LmNsb25lKCkpLG51bGwhPT10LmZvZyYmKHRoaXMuZm9nPXQuZm9nLmNsb25lKCkpLG51bGwhPT10Lm92ZXJyaWRlTWF0ZXJpYWwmJih0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9dC5vdmVycmlkZU1hdGVyaWFsLmNsb25lKCkpLHRoaXMuYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gbnVsbCE9PXRoaXMuZm9nJiYoZS5vYmplY3QuZm9nPXRoaXMuZm9nLnRvSlNPTigpKSxlfX1zdXQucHJvdG90eXBlLmlzU2NlbmU9ITA7Y2xhc3MgbHV0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5hcnJheT10LHRoaXMuc3RyaWRlPWUsdGhpcy5jb3VudD12b2lkIDAhPT10P3QubGVuZ3RoL2U6MCx0aGlzLnVzYWdlPVBzdCx0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX0sdGhpcy52ZXJzaW9uPTAsdGhpcy51dWlkPVRzdCgpfW9uVXBsb2FkQ2FsbGJhY2soKXt9c2V0IG5lZWRzVXBkYXRlKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9c2V0VXNhZ2UodCl7cmV0dXJuIHRoaXMudXNhZ2U9dCx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuYXJyYXk9bmV3IHQuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheSksdGhpcy5jb3VudD10LmNvdW50LHRoaXMuc3RyaWRlPXQuc3RyaWRlLHRoaXMudXNhZ2U9dC51c2FnZSx0aGlzfWNvcHlBdCh0LGUsbil7dCo9dGhpcy5zdHJpZGUsbio9ZS5zdHJpZGU7Zm9yKGxldCBvPTAsaT10aGlzLnN0cmlkZTtvPGk7bysrKXRoaXMuYXJyYXlbdCtvXT1lLmFycmF5W24rb107cmV0dXJuIHRoaXN9c2V0KHQsZT0wKXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCxlKSx0aGlzfWNsb25lKHQpe3ZvaWQgMD09PXQuYXJyYXlCdWZmZXJzJiYodC5hcnJheUJ1ZmZlcnM9e30pLHZvaWQgMD09PXRoaXMuYXJyYXkuYnVmZmVyLl91dWlkJiYodGhpcy5hcnJheS5idWZmZXIuX3V1aWQ9VHN0KCkpLHZvaWQgMD09PXQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT10aGlzLmFycmF5LnNsaWNlKDApLmJ1ZmZlcik7Y29uc3QgZT1uZXcgdGhpcy5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF0pLG49bmV3IHRoaXMuY29uc3RydWN0b3IoZSx0aGlzLnN0cmlkZSk7cmV0dXJuIG4uc2V0VXNhZ2UodGhpcy51c2FnZSksbn1vblVwbG9hZCh0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc310b0pTT04odCl7cmV0dXJuIHZvaWQgMD09PXQuYXJyYXlCdWZmZXJzJiYodC5hcnJheUJ1ZmZlcnM9e30pLHZvaWQgMD09PXRoaXMuYXJyYXkuYnVmZmVyLl91dWlkJiYodGhpcy5hcnJheS5idWZmZXIuX3V1aWQ9VHN0KCkpLHZvaWQgMD09PXQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuZXcgVWludDMyQXJyYXkodGhpcy5hcnJheS5idWZmZXIpKSkse3V1aWQ6dGhpcy51dWlkLGJ1ZmZlcjp0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZCx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxzdHJpZGU6dGhpcy5zdHJpZGV9fX1sdXQucHJvdG90eXBlLmlzSW50ZXJsZWF2ZWRCdWZmZXI9ITA7Y29uc3QgY3V0PW5ldyBpbHQ7Y2xhc3MgZHV0e2NvbnN0cnVjdG9yKHQsZSxuLG89ITEpe3RoaXMubmFtZT0iIix0aGlzLmRhdGE9dCx0aGlzLml0ZW1TaXplPWUsdGhpcy5vZmZzZXQ9bix0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1vfWdldCBjb3VudCgpe3JldHVybiB0aGlzLmRhdGEuY291bnR9Z2V0IGFycmF5KCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheX1zZXQgbmVlZHNVcGRhdGUodCl7dGhpcy5kYXRhLm5lZWRzVXBkYXRlPXR9YXBwbHlNYXRyaXg0KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5kYXRhLmNvdW50O2U8bjtlKyspY3V0Lng9dGhpcy5nZXRYKGUpLGN1dC55PXRoaXMuZ2V0WShlKSxjdXQuej10aGlzLmdldFooZSksY3V0LmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldFhZWihlLGN1dC54LGN1dC55LGN1dC56KTtyZXR1cm4gdGhpc31hcHBseU5vcm1hbE1hdHJpeCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKyljdXQueD10aGlzLmdldFgoZSksY3V0Lnk9dGhpcy5nZXRZKGUpLGN1dC56PXRoaXMuZ2V0WihlKSxjdXQuYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVooZSxjdXQueCxjdXQueSxjdXQueik7cmV0dXJuIHRoaXN9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKWN1dC54PXRoaXMuZ2V0WChlKSxjdXQueT10aGlzLmdldFkoZSksY3V0Lno9dGhpcy5nZXRaKGUpLGN1dC50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpcy5zZXRYWVooZSxjdXQueCxjdXQueSxjdXQueik7cmV0dXJuIHRoaXN9c2V0WCh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XT1lLHRoaXN9c2V0WSh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdPWUsdGhpc31zZXRaKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl09ZSx0aGlzfXNldFcodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXT1lLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldF19Z2V0WSh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsxXX1nZXRaKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdfWdldFcodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrM119c2V0WFkodCxlLG4pe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbKHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KSswXT1lLHRoaXMuZGF0YS5hcnJheVt0KzFdPW4sdGhpc31zZXRYWVoodCxlLG4sbyl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1vLHRoaXN9c2V0WFlaVyh0LGUsbixvLGkpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbKHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KSswXT1lLHRoaXMuZGF0YS5hcnJheVt0KzFdPW4sdGhpcy5kYXRhLmFycmF5W3QrMl09byx0aGlzLmRhdGEuYXJyYXlbdCszXT1pLHRoaXN9Y2xvbmUodCl7aWYodm9pZCAwPT09dCl7Y29uc29sZS5sb2coIlRIUkVFLkludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlLmNsb25lKCk6IENsb25pbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybiBuZXcgeGN0KG5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQpLHRoaXMuaXRlbVNpemUsdGhpcy5ub3JtYWxpemVkKX1yZXR1cm4gdm9pZCAwPT09dC5pbnRlcmxlYXZlZEJ1ZmZlcnMmJih0LmludGVybGVhdmVkQnVmZmVycz17fSksdm9pZCAwPT09dC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPXRoaXMuZGF0YS5jbG9uZSh0KSksbmV3IGR1dCh0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0sdGhpcy5pdGVtU2l6ZSx0aGlzLm9mZnNldCx0aGlzLm5vcm1hbGl6ZWQpfXRvSlNPTih0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUudG9KU09OKCk6IFNlcmlhbGl6aW5nIGFuIGludGVybGF2ZWQgYnVmZmVyIGF0dHJpYnV0ZSB3aWxsIGRlaW50ZXJsZWF2ZSBidWZmZXIgZGF0YS4iKTtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5jb3VudDtlKyspe2NvbnN0IG49ZSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O2ZvcihsZXQgZT0wO2U8dGhpcy5pdGVtU2l6ZTtlKyspdC5wdXNoKHRoaXMuZGF0YS5hcnJheVtuK2VdKX1yZXR1cm57aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTp0LG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfX1yZXR1cm4gdm9pZCAwPT09dC5pbnRlcmxlYXZlZEJ1ZmZlcnMmJih0LmludGVybGVhdmVkQnVmZmVycz17fSksdm9pZCAwPT09dC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPXRoaXMuZGF0YS50b0pTT04odCkpLHtpc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlOiEwLGl0ZW1TaXplOnRoaXMuaXRlbVNpemUsZGF0YTp0aGlzLmRhdGEudXVpZCxvZmZzZXQ6dGhpcy5vZmZzZXQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fX1kdXQucHJvdG90eXBlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgcHV0IGV4dGVuZHMgX2N0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJTcHJpdGVNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWnN0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLnJvdGF0aW9uPTAsdGhpcy5zaXplQXR0ZW51YXRpb249ITAsdGhpcy50cmFuc3BhcmVudD0hMCx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5yb3RhdGlvbj10LnJvdGF0aW9uLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fWxldCBtdXQ7cHV0LnByb3RvdHlwZS5pc1Nwcml0ZU1hdGVyaWFsPSEwO2NvbnN0IHV1dD1uZXcgaWx0LGZ1dD1uZXcgaWx0LGd1dD1uZXcgaWx0LGh1dD1uZXcgRnN0LGJ1dD1uZXcgRnN0LHl1dD1uZXcgemx0LF91dD1uZXcgaWx0LEN1dD1uZXcgaWx0LE11dD1uZXcgaWx0LHZ1dD1uZXcgRnN0LHh1dD1uZXcgRnN0LE91dD1uZXcgRnN0O2Z1bmN0aW9uIFB1dCh0LGUsbixvLGksYSl7aHV0LnN1YlZlY3RvcnModCxuKS5hZGRTY2FsYXIoLjUpLm11bHRpcGx5KG8pLHZvaWQgMCE9PWk/KGJ1dC54PWEqaHV0LngtaSpodXQueSxidXQueT1pKmh1dC54K2EqaHV0LnkpOmJ1dC5jb3B5KGh1dCksdC5jb3B5KGUpLHQueCs9YnV0LngsdC55Kz1idXQueSx0LmFwcGx5TWF0cml4NCh5dXQpfShjbGFzcyBleHRlbmRzIHJjdHtjb25zdHJ1Y3Rvcih0KXtpZihzdXBlcigpLHRoaXMudHlwZT0iU3ByaXRlIix2b2lkIDA9PT1tdXQpe211dD1uZXcgTmN0O2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShbLS41LC0uNSwwLDAsMCwuNSwtLjUsMCwxLDAsLjUsLjUsMCwxLDEsLS41LC41LDAsMCwxXSksZT1uZXcgbHV0KHQsNSk7bXV0LnNldEluZGV4KFswLDEsMiwwLDIsM10pLG11dC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZHV0KGUsMywwLCExKSksbXV0LnNldEF0dHJpYnV0ZSgidXYiLG5ldyBkdXQoZSwyLDMsITEpKX10aGlzLmdlb21ldHJ5PW11dCx0aGlzLm1hdGVyaWFsPXZvaWQgMCE9PXQ/dDpuZXcgcHV0LHRoaXMuY2VudGVyPW5ldyBGc3QoLjUsLjUpfXJheWNhc3QodCxlKXtudWxsPT09dC5jYW1lcmEmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLlNwcml0ZTogIlJheWNhc3Rlci5jYW1lcmEiIG5lZWRzIHRvIGJlIHNldCBpbiBvcmRlciB0byByYXljYXN0IGFnYWluc3Qgc3ByaXRlcy4nKSxmdXQuc2V0RnJvbU1hdHJpeFNjYWxlKHRoaXMubWF0cml4V29ybGQpLHl1dC5jb3B5KHQuY2FtZXJhLm1hdHJpeFdvcmxkKSx0aGlzLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKHQuY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSx0aGlzLm1hdHJpeFdvcmxkKSxndXQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubW9kZWxWaWV3TWF0cml4KSx0LmNhbWVyYS5pc1BlcnNwZWN0aXZlQ2FtZXJhJiYhMT09PXRoaXMubWF0ZXJpYWwuc2l6ZUF0dGVudWF0aW9uJiZmdXQubXVsdGlwbHlTY2FsYXIoLWd1dC56KTtjb25zdCBuPXRoaXMubWF0ZXJpYWwucm90YXRpb247bGV0IG8saTswIT09biYmKGk9TWF0aC5jb3Mobiksbz1NYXRoLnNpbihuKSk7Y29uc3QgYT10aGlzLmNlbnRlcjtQdXQoX3V0LnNldCgtLjUsLS41LDApLGd1dCxhLGZ1dCxvLGkpLFB1dChDdXQuc2V0KC41LC0uNSwwKSxndXQsYSxmdXQsbyxpKSxQdXQoTXV0LnNldCguNSwuNSwwKSxndXQsYSxmdXQsbyxpKSx2dXQuc2V0KDAsMCkseHV0LnNldCgxLDApLE91dC5zZXQoMSwxKTtsZXQgcj10LnJheS5pbnRlcnNlY3RUcmlhbmdsZShfdXQsQ3V0LE11dCwhMSx1dXQpO2lmKG51bGw9PT1yJiYoUHV0KEN1dC5zZXQoLS41LC41LDApLGd1dCxhLGZ1dCxvLGkpLHh1dC5zZXQoMCwxKSxyPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKF91dCxNdXQsQ3V0LCExLHV1dCksbnVsbD09PXIpKXJldHVybjtjb25zdCBzPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKHV1dCk7czx0Lm5lYXJ8fHM+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6cyxwb2ludDp1dXQuY2xvbmUoKSx1djpiY3QuZ2V0VVYodXV0LF91dCxDdXQsTXV0LHZ1dCx4dXQsT3V0LG5ldyBGc3QpLGZhY2U6bnVsbCxvYmplY3Q6dGhpc30pfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdm9pZCAwIT09dC5jZW50ZXImJnRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzfX0pLnByb3RvdHlwZS5pc1Nwcml0ZT0hMDtjb25zdCB3dXQ9bmV3IGlsdCxrdXQ9bmV3IHRsdCxTdXQ9bmV3IHRsdCxEdXQ9bmV3IGlsdCxSdXQ9bmV3IHpsdDtjbGFzcyBFdXQgZXh0ZW5kcyBRY3R7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iU2tpbm5lZE1lc2giLHRoaXMuYmluZE1vZGU9ImF0dGFjaGVkIix0aGlzLmJpbmRNYXRyaXg9bmV3IHpsdCx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlPW5ldyB6bHR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJpbmRNb2RlPXQuYmluZE1vZGUsdGhpcy5iaW5kTWF0cml4LmNvcHkodC5iaW5kTWF0cml4KSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodC5iaW5kTWF0cml4SW52ZXJzZSksdGhpcy5za2VsZXRvbj10LnNrZWxldG9uLHRoaXN9YmluZCh0LGUpe3RoaXMuc2tlbGV0b249dCx2b2lkIDA9PT1lJiYodGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCksdGhpcy5za2VsZXRvbi5jYWxjdWxhdGVJbnZlcnNlcygpLGU9dGhpcy5tYXRyaXhXb3JsZCksdGhpcy5iaW5kTWF0cml4LmNvcHkoZSksdGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KGUpLmludmVydCgpfXBvc2UoKXt0aGlzLnNrZWxldG9uLnBvc2UoKX1ub3JtYWxpemVTa2luV2VpZ2h0cygpe2NvbnN0IHQ9bmV3IHRsdCxlPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O2ZvcihsZXQgbj0wLG89ZS5jb3VudDtuPG87bisrKXt0Lng9ZS5nZXRYKG4pLHQueT1lLmdldFkobiksdC56PWUuZ2V0WihuKSx0Lnc9ZS5nZXRXKG4pO2NvbnN0IG89MS90Lm1hbmhhdHRhbkxlbmd0aCgpO28hPT0xLzA/dC5tdWx0aXBseVNjYWxhcihvKTp0LnNldCgxLDAsMCwwKSxlLnNldFhZWlcobix0LngsdC55LHQueix0LncpfX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwiYXR0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk6ImRldGFjaGVkIj09PXRoaXMuYmluZE1vZGU/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuYmluZE1hdHJpeCkuaW52ZXJ0KCk6Y29uc29sZS53YXJuKCJUSFJFRS5Ta2lubmVkTWVzaDogVW5yZWNvZ25pemVkIGJpbmRNb2RlOiAiK3RoaXMuYmluZE1vZGUpfWJvbmVUcmFuc2Zvcm0odCxlKXtjb25zdCBuPXRoaXMuc2tlbGV0b24sbz10aGlzLmdlb21ldHJ5O2t1dC5mcm9tQnVmZmVyQXR0cmlidXRlKG8uYXR0cmlidXRlcy5za2luSW5kZXgsdCksU3V0LmZyb21CdWZmZXJBdHRyaWJ1dGUoby5hdHRyaWJ1dGVzLnNraW5XZWlnaHQsdCksd3V0LmNvcHkoZSkuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeCksZS5zZXQoMCwwLDApO2ZvcihsZXQgdD0wO3Q8NDt0Kyspe2NvbnN0IG89U3V0LmdldENvbXBvbmVudCh0KTtpZigwIT09byl7Y29uc3QgaT1rdXQuZ2V0Q29tcG9uZW50KHQpO1J1dC5tdWx0aXBseU1hdHJpY2VzKG4uYm9uZXNbaV0ubWF0cml4V29ybGQsbi5ib25lSW52ZXJzZXNbaV0pLGUuYWRkU2NhbGVkVmVjdG9yKER1dC5jb3B5KHd1dCkuYXBwbHlNYXRyaXg0KFJ1dCksbyl9fXJldHVybiBlLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXhJbnZlcnNlKX19RXV0LnByb3RvdHlwZS5pc1NraW5uZWRNZXNoPSEwOyhjbGFzcyBleHRlbmRzIHJjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJCb25lIn19KS5wcm90b3R5cGUuaXNCb25lPSEwOyhjbGFzcyBleHRlbmRzIFFzdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvLGksYSxyLHMsbD0xMDAzLGM9MTAwMyxkLHApe3N1cGVyKG51bGwsYSxyLHMsbCxjLG8saSxkLHApLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpufSx0aGlzLm1hZ0ZpbHRlcj1sLHRoaXMubWluRmlsdGVyPWMsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xfX0pLnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlPSEwO2NsYXNzIEF1dCBleHRlbmRzIHhjdHtjb25zdHJ1Y3Rvcih0LGUsbixvPTEpeyJudW1iZXIiPT10eXBlb2YgbiYmKG89bixuPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKSxzdXBlcih0LGUsbiksdGhpcy5tZXNoUGVyQXR0cmlidXRlPW99Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9dC5tZXNoUGVyQXR0cmlidXRlLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSx0LmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwLHR9fUF1dC5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITA7Y29uc3QgVHV0PW5ldyB6bHQsTnV0PW5ldyB6bHQsenV0PVtdLEl1dD1uZXcgUWN0OyhjbGFzcyBleHRlbmRzIFFjdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLmluc3RhbmNlTWF0cml4PW5ldyBBdXQobmV3IEZsb2F0MzJBcnJheSgxNipuKSwxNiksdGhpcy5pbnN0YW5jZUNvbG9yPW51bGwsdGhpcy5jb3VudD1uLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VNYXRyaXguY29weSh0Lmluc3RhbmNlTWF0cml4KSxudWxsIT09dC5pbnN0YW5jZUNvbG9yJiYodGhpcy5pbnN0YW5jZUNvbG9yPXQuaW5zdGFuY2VDb2xvci5jbG9uZSgpKSx0aGlzLmNvdW50PXQuY291bnQsdGhpc31nZXRDb2xvckF0KHQsZSl7ZS5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LDMqdCl9Z2V0TWF0cml4QXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMubWF0cml4V29ybGQsbz10aGlzLmNvdW50O2lmKEl1dC5nZW9tZXRyeT10aGlzLmdlb21ldHJ5LEl1dC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHZvaWQgMCE9PUl1dC5tYXRlcmlhbClmb3IobGV0IGk9MDtpPG87aSsrKXt0aGlzLmdldE1hdHJpeEF0KGksVHV0KSxOdXQubXVsdGlwbHlNYXRyaWNlcyhuLFR1dCksSXV0Lm1hdHJpeFdvcmxkPU51dCxJdXQucmF5Y2FzdCh0LHp1dCk7Zm9yKGxldCB0PTAsbj16dXQubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49enV0W3RdO24uaW5zdGFuY2VJZD1pLG4ub2JqZWN0PXRoaXMsZS5wdXNoKG4pfXp1dC5sZW5ndGg9MH19c2V0Q29sb3JBdCh0LGUpe251bGw9PT10aGlzLmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9bmV3IEF1dChuZXcgRmxvYXQzMkFycmF5KDMqdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3VudCksMykpLGUudG9BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1zZXRNYXRyaXhBdCh0LGUpe2UudG9BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZE1lc2g9ITA7Y2xhc3MgSHV0IGV4dGVuZHMgX2N0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWnN0KDE2Nzc3MjE1KSx0aGlzLmxpbmV3aWR0aD0xLHRoaXMubGluZWNhcD0icm91bmQiLHRoaXMubGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmxpbmV3aWR0aD10LmxpbmV3aWR0aCx0aGlzLmxpbmVjYXA9dC5saW5lY2FwLHRoaXMubGluZWpvaW49dC5saW5lam9pbix0aGlzfX1IdXQucHJvdG90eXBlLmlzTGluZUJhc2ljTWF0ZXJpYWw9ITA7Y29uc3QgRnV0PW5ldyBpbHQsTHV0PW5ldyBpbHQsQnV0PW5ldyB6bHQsVnV0PW5ldyBObHQsVXV0PW5ldyB3bHQ7Y2xhc3MganV0IGV4dGVuZHMgcmN0e2NvbnN0cnVjdG9yKHQ9bmV3IE5jdCxlPW5ldyBIdXQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9Y29tcHV0ZUxpbmVEaXN0YW5jZXMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KWlmKG51bGw9PT10LmluZGV4KXtjb25zdCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixuPVswXTtmb3IobGV0IHQ9MSxvPWUuY291bnQ7dDxvO3QrKylGdXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQtMSksTHV0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KSxuW3RdPW5bdC0xXSxuW3RdKz1GdXQuZGlzdGFuY2VUbyhMdXQpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyB3Y3QobiwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpc31yYXljYXN0KHQsZSl7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LG89dGhpcy5tYXRyaXhXb3JsZCxpPXQucGFyYW1zLkxpbmUudGhyZXNob2xkLGE9bi5kcmF3UmFuZ2U7aWYobnVsbD09PW4uYm91bmRpbmdTcGhlcmUmJm4uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksVXV0LmNvcHkobi5ib3VuZGluZ1NwaGVyZSksVXV0LmFwcGx5TWF0cml4NChvKSxVdXQucmFkaXVzKz1pLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZShVdXQpKXJldHVybjtCdXQuY29weShvKS5pbnZlcnQoKSxWdXQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KEJ1dCk7Y29uc3Qgcj1pLygodGhpcy5zY2FsZS54K3RoaXMuc2NhbGUueSt0aGlzLnNjYWxlLnopLzMpLHM9cipyLGw9bmV3IGlsdCxjPW5ldyBpbHQsZD1uZXcgaWx0LHA9bmV3IGlsdCxtPXRoaXMuaXNMaW5lU2VnbWVudHM/MjoxO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3Qgbz1uLmluZGV4LGk9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGwhPT1vKXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxyPU1hdGgubWluKG8uY291bnQsYS5zdGFydCthLmNvdW50KS0xO248cjtuKz1tKXtjb25zdCBhPW8uZ2V0WChuKSxyPW8uZ2V0WChuKzEpO2wuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGEpLGMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLHIpO2lmKFZ1dC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxwLGQpPnMpY29udGludWU7cC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3QgbT10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTttPHQubmVhcnx8bT50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTptLHBvaW50OmQuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxvPU1hdGgubWluKGkuY291bnQsYS5zdGFydCthLmNvdW50KS0xO248bztuKz1tKXtsLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKzEpO2lmKFZ1dC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxwLGQpPnMpY29udGludWU7cC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbz10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTtvPHQubmVhcnx8bz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpvLHBvaW50OmQuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19fWVsc2Ugbi5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19fWp1dC5wcm90b3R5cGUuaXNMaW5lPSEwO2NvbnN0IFd1dD1uZXcgaWx0LEd1dD1uZXcgaWx0O2NsYXNzIFl1dCBleHRlbmRzIGp1dHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lU2VnbWVudHMifWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3QgZT10LmF0dHJpYnV0ZXMucG9zaXRpb24sbj1bXTtmb3IobGV0IHQ9MCxvPWUuY291bnQ7dDxvO3QrPTIpV3V0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KSxHdXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMSksblt0XT0wPT09dD8wOm5bdC0xXSxuW3QrMV09blt0XStXdXQuZGlzdGFuY2VUbyhHdXQpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyB3Y3QobiwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9fVl1dC5wcm90b3R5cGUuaXNMaW5lU2VnbWVudHM9ITA7KGNsYXNzIGV4dGVuZHMganV0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkxpbmVMb29wIn19KS5wcm90b3R5cGUuaXNMaW5lTG9vcD0hMDtjbGFzcyBxdXQgZXh0ZW5kcyBfY3R7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBac3QoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fXF1dC5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtjb25zdCBadXQ9bmV3IHpsdCxYdXQ9bmV3IE5sdCxLdXQ9bmV3IHdsdCxKdXQ9bmV3IGlsdDtmdW5jdGlvbiBRdXQodCxlLG4sbyxpLGEscil7Y29uc3Qgcz1YdXQuZGlzdGFuY2VTcVRvUG9pbnQodCk7aWYoczxuKXtjb25zdCBuPW5ldyBpbHQ7WHV0LmNsb3Nlc3RQb2ludFRvUG9pbnQodCxuKSxuLmFwcGx5TWF0cml4NChvKTtjb25zdCBsPWkucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKG4pO2lmKGw8aS5uZWFyfHxsPmkuZmFyKXJldHVybjthLnB1c2goe2Rpc3RhbmNlOmwsZGlzdGFuY2VUb1JheTpNYXRoLnNxcnQocykscG9pbnQ6bixpbmRleDplLGZhY2U6bnVsbCxvYmplY3Q6cn0pfX0oY2xhc3MgZXh0ZW5kcyByY3R7Y29uc3RydWN0b3IodD1uZXcgTmN0LGU9bmV3IHF1dCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksbz10aGlzLm1hdHJpeFdvcmxkLGk9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxhPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEt1dC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLEt1dC5hcHBseU1hdHJpeDQobyksS3V0LnJhZGl1cys9aSwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUoS3V0KSlyZXR1cm47WnV0LmNvcHkobykuaW52ZXJ0KCksWHV0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChadXQpO2NvbnN0IHI9aS8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPXIqcjtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSl7Zm9yKGxldCBuPU1hdGgubWF4KDAsYS5zdGFydCksbD1NYXRoLm1pbihpLmNvdW50LGEuc3RhcnQrYS5jb3VudCk7bjxsO24rKyl7Y29uc3QgYT1pLmdldFgobik7SnV0LmZyb21CdWZmZXJBdHRyaWJ1dGUocixhKSxRdXQoSnV0LGEscyxvLHQsZSx0aGlzKX19ZWxzZXtmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxpPU1hdGgubWluKHIuY291bnQsYS5zdGFydCthLmNvdW50KTtuPGk7bisrKUp1dC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksUXV0KEp1dCxuLHMsbyx0LGUsdGhpcyl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19KS5wcm90b3R5cGUuaXNQb2ludHM9ITA7KGNsYXNzIGV4dGVuZHMgUXN0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsKXtzdXBlcih0LGUsbixvLGksYSxyLHMsbCksdGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09YT9hOnRzdCx0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1pP2k6dHN0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExO2NvbnN0IGM9dGhpczsicmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayJpbiB0JiZ0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soKGZ1bmN0aW9uIGUoKXtjLm5lZWRzVXBkYXRlPSEwLHQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhlKX0pKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmltYWdlKS5jb3B5KHRoaXMpfXVwZGF0ZSgpe2NvbnN0IHQ9dGhpcy5pbWFnZTshMT09PSJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVhZHlTdGF0ZT49dC5IQVZFX0NVUlJFTlRfREFUQSYmKHRoaXMubmVlZHNVcGRhdGU9ITApfX0pLnByb3RvdHlwZS5pc1ZpZGVvVGV4dHVyZT0hMDsoY2xhc3MgZXh0ZW5kcyBRc3R7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHt3aWR0aDp0LGhlaWdodDplfSksdGhpcy5mb3JtYXQ9bix0aGlzLm1hZ0ZpbHRlcj0kcnQsdGhpcy5taW5GaWx0ZXI9JHJ0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMubmVlZHNVcGRhdGU9ITB9fSkucHJvdG90eXBlLmlzRnJhbWVidWZmZXJUZXh0dXJlPSEwOyhjbGFzcyBleHRlbmRzIFFzdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7c3VwZXIobnVsbCxhLHIscyxsLGMsbyxpLGQscCksdGhpcy5pbWFnZT17d2lkdGg6ZSxoZWlnaHQ6bn0sdGhpcy5taXBtYXBzPXQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19KS5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMDsoY2xhc3MgZXh0ZW5kcyBRc3R7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3N1cGVyKHQsZSxuLG8saSxhLHIscyxsKSx0aGlzLm5lZWRzVXBkYXRlPSEwfX0pLnByb3RvdHlwZS5pc0NhbnZhc1RleHR1cmU9ITA7Y2xhc3MgJHV0IGV4dGVuZHMgTmN0e2NvbnN0cnVjdG9yKHQ9MSxlPTgsbj0wLG89MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iQ2lyY2xlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsc2VnbWVudHM6ZSx0aGV0YVN0YXJ0Om4sdGhldGFMZW5ndGg6b30sZT1NYXRoLm1heCgzLGUpO2NvbnN0IGk9W10sYT1bXSxyPVtdLHM9W10sbD1uZXcgaWx0LGM9bmV3IEZzdDthLnB1c2goMCwwLDApLHIucHVzaCgwLDAsMSkscy5wdXNoKC41LC41KTtmb3IobGV0IGk9MCxkPTM7aTw9ZTtpKyssZCs9Myl7Y29uc3QgcD1uK2kvZSpvO2wueD10Kk1hdGguY29zKHApLGwueT10Kk1hdGguc2luKHApLGEucHVzaChsLngsbC55LGwueiksci5wdXNoKDAsMCwxKSxjLng9KGFbZF0vdCsxKS8yLGMueT0oYVtkKzFdL3QrMSkvMixzLnB1c2goYy54LGMueSl9Zm9yKGxldCB0PTE7dDw9ZTt0KyspaS5wdXNoKHQsdCsxLDApO3RoaXMuc2V0SW5kZXgoaSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgd2N0KGEsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyB3Y3QociwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgd2N0KHMsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3ICR1dCh0LnJhZGl1cyx0LnNlZ21lbnRzLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19bmV3IGlsdCxuZXcgaWx0LG5ldyBpbHQsbmV3IGJjdDtjbGFzcyB0ZnR7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IkN1cnZlIix0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz0yMDB9Z2V0UG9pbnQoKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdXJ2ZTogLmdldFBvaW50KCkgbm90IGltcGxlbWVudGVkLiIpLG51bGx9Z2V0UG9pbnRBdCh0LGUpe2NvbnN0IG49dGhpcy5nZXRVdG9UbWFwcGluZyh0KTtyZXR1cm4gdGhpcy5nZXRQb2ludChuLGUpfWdldFBvaW50cyh0PTUpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnQobi90KSk7cmV0dXJuIGV9Z2V0U3BhY2VkUG9pbnRzKHQ9NSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludEF0KG4vdCkpO3JldHVybiBlfWdldExlbmd0aCgpe2NvbnN0IHQ9dGhpcy5nZXRMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19Z2V0TGVuZ3Rocyh0PXRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zKXtpZih0aGlzLmNhY2hlQXJjTGVuZ3RocyYmdGhpcy5jYWNoZUFyY0xlbmd0aHMubGVuZ3RoPT09dCsxJiYhdGhpcy5uZWVkc1VwZGF0ZSlyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM7dGhpcy5uZWVkc1VwZGF0ZT0hMTtjb25zdCBlPVtdO2xldCBuLG89dGhpcy5nZXRQb2ludCgwKSxpPTA7ZS5wdXNoKDApO2ZvcihsZXQgYT0xO2E8PXQ7YSsrKW49dGhpcy5nZXRQb2ludChhL3QpLGkrPW4uZGlzdGFuY2VUbyhvKSxlLnB1c2goaSksbz1uO3JldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Rocz1lLGV9dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5nZXRMZW5ndGhzKCl9Z2V0VXRvVG1hcHBpbmcodCxlKXtjb25zdCBuPXRoaXMuZ2V0TGVuZ3RocygpO2xldCBvPTA7Y29uc3QgaT1uLmxlbmd0aDtsZXQgYTthPWV8fHQqbltpLTFdO2xldCByLHM9MCxsPWktMTtmb3IoO3M8PWw7KWlmKG89TWF0aC5mbG9vcihzKyhsLXMpLzIpLHI9bltvXS1hLHI8MClzPW8rMTtlbHNle2lmKCEocj4wKSl7bD1vO2JyZWFrfWw9by0xfWlmKG89bCxuW29dPT09YSlyZXR1cm4gby8oaS0xKTtjb25zdCBjPW5bb107cmV0dXJuKG8rKGEtYykvKG5bbysxXS1jKSkvKGktMSl9Z2V0VGFuZ2VudCh0LGUpe2NvbnN0IG49MWUtNDtsZXQgbz10LW4saT10K247bzwwJiYobz0wKSxpPjEmJihpPTEpO2NvbnN0IGE9dGhpcy5nZXRQb2ludChvKSxyPXRoaXMuZ2V0UG9pbnQoaSkscz1lfHwoYS5pc1ZlY3RvcjI/bmV3IEZzdDpuZXcgaWx0KTtyZXR1cm4gcy5jb3B5KHIpLnN1YihhKS5ub3JtYWxpemUoKSxzfWdldFRhbmdlbnRBdCh0LGUpe2NvbnN0IG49dGhpcy5nZXRVdG9UbWFwcGluZyh0KTtyZXR1cm4gdGhpcy5nZXRUYW5nZW50KG4sZSl9Y29tcHV0ZUZyZW5ldEZyYW1lcyh0LGUpe2NvbnN0IG49bmV3IGlsdCxvPVtdLGk9W10sYT1bXSxyPW5ldyBpbHQscz1uZXcgemx0O2ZvcihsZXQgZT0wO2U8PXQ7ZSsrKXtvW2VdPXRoaXMuZ2V0VGFuZ2VudEF0KGUvdCxuZXcgaWx0KX1pWzBdPW5ldyBpbHQsYVswXT1uZXcgaWx0O2xldCBsPU51bWJlci5NQVhfVkFMVUU7Y29uc3QgYz1NYXRoLmFicyhvWzBdLngpLGQ9TWF0aC5hYnMob1swXS55KSxwPU1hdGguYWJzKG9bMF0ueik7Yzw9bCYmKGw9YyxuLnNldCgxLDAsMCkpLGQ8PWwmJihsPWQsbi5zZXQoMCwxLDApKSxwPD1sJiZuLnNldCgwLDAsMSksci5jcm9zc1ZlY3RvcnMob1swXSxuKS5ub3JtYWxpemUoKSxpWzBdLmNyb3NzVmVjdG9ycyhvWzBdLHIpLGFbMF0uY3Jvc3NWZWN0b3JzKG9bMF0saVswXSk7Zm9yKGxldCBlPTE7ZTw9dDtlKyspe2lmKGlbZV09aVtlLTFdLmNsb25lKCksYVtlXT1hW2UtMV0uY2xvbmUoKSxyLmNyb3NzVmVjdG9ycyhvW2UtMV0sb1tlXSksci5sZW5ndGgoKT5OdW1iZXIuRVBTSUxPTil7ci5ub3JtYWxpemUoKTtjb25zdCB0PU1hdGguYWNvcyhOc3Qob1tlLTFdLmRvdChvW2VdKSwtMSwxKSk7aVtlXS5hcHBseU1hdHJpeDQocy5tYWtlUm90YXRpb25BeGlzKHIsdCkpfWFbZV0uY3Jvc3NWZWN0b3JzKG9bZV0saVtlXSl9aWYoITA9PT1lKXtsZXQgZT1NYXRoLmFjb3MoTnN0KGlbMF0uZG90KGlbdF0pLC0xLDEpKTtlLz10LG9bMF0uZG90KHIuY3Jvc3NWZWN0b3JzKGlbMF0saVt0XSkpPjAmJihlPS1lKTtmb3IobGV0IG49MTtuPD10O24rKylpW25dLmFwcGx5TWF0cml4NChzLm1ha2VSb3RhdGlvbkF4aXMob1tuXSxlKm4pKSxhW25dLmNyb3NzVmVjdG9ycyhvW25dLGlbbl0pfXJldHVybnt0YW5nZW50czpvLG5vcm1hbHM6aSxiaW5vcm1hbHM6YX19Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc310b0pTT04oKXtjb25zdCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQ3VydmUiLGdlbmVyYXRvcjoiQ3VydmUudG9KU09OIn19O3JldHVybiB0LmFyY0xlbmd0aERpdmlzaW9ucz10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyx0LnR5cGU9dGhpcy50eXBlLHR9ZnJvbUpTT04odCl7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXQuYXJjTGVuZ3RoRGl2aXNpb25zLHRoaXN9fWNsYXNzIGVmdCBleHRlbmRzIHRmdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MSxvPTEsaT0wLGE9MipNYXRoLlBJLHI9ITEscz0wKXtzdXBlcigpLHRoaXMudHlwZT0iRWxsaXBzZUN1cnZlIix0aGlzLmFYPXQsdGhpcy5hWT1lLHRoaXMueFJhZGl1cz1uLHRoaXMueVJhZGl1cz1vLHRoaXMuYVN0YXJ0QW5nbGU9aSx0aGlzLmFFbmRBbmdsZT1hLHRoaXMuYUNsb2Nrd2lzZT1yLHRoaXMuYVJvdGF0aW9uPXN9Z2V0UG9pbnQodCxlKXtjb25zdCBuPWV8fG5ldyBGc3Qsbz0yKk1hdGguUEk7bGV0IGk9dGhpcy5hRW5kQW5nbGUtdGhpcy5hU3RhcnRBbmdsZTtjb25zdCBhPU1hdGguYWJzKGkpPE51bWJlci5FUFNJTE9OO2Zvcig7aTwwOylpKz1vO2Zvcig7aT5vOylpLT1vO2k8TnVtYmVyLkVQU0lMT04mJihpPWE/MDpvKSwhMCE9PXRoaXMuYUNsb2Nrd2lzZXx8YXx8KGk9PT1vP2k9LW86aS09byk7Y29uc3Qgcj10aGlzLmFTdGFydEFuZ2xlK3QqaTtsZXQgcz10aGlzLmFYK3RoaXMueFJhZGl1cypNYXRoLmNvcyhyKSxsPXRoaXMuYVkrdGhpcy55UmFkaXVzKk1hdGguc2luKHIpO2lmKDAhPT10aGlzLmFSb3RhdGlvbil7Y29uc3QgdD1NYXRoLmNvcyh0aGlzLmFSb3RhdGlvbiksZT1NYXRoLnNpbih0aGlzLmFSb3RhdGlvbiksbj1zLXRoaXMuYVgsbz1sLXRoaXMuYVk7cz1uKnQtbyplK3RoaXMuYVgsbD1uKmUrbyp0K3RoaXMuYVl9cmV0dXJuIG4uc2V0KHMsbCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmFYPXQuYVgsdGhpcy5hWT10LmFZLHRoaXMueFJhZGl1cz10LnhSYWRpdXMsdGhpcy55UmFkaXVzPXQueVJhZGl1cyx0aGlzLmFTdGFydEFuZ2xlPXQuYVN0YXJ0QW5nbGUsdGhpcy5hRW5kQW5nbGU9dC5hRW5kQW5nbGUsdGhpcy5hQ2xvY2t3aXNlPXQuYUNsb2Nrd2lzZSx0aGlzLmFSb3RhdGlvbj10LmFSb3RhdGlvbix0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQuYVg9dGhpcy5hWCx0LmFZPXRoaXMuYVksdC54UmFkaXVzPXRoaXMueFJhZGl1cyx0LnlSYWRpdXM9dGhpcy55UmFkaXVzLHQuYVN0YXJ0QW5nbGU9dGhpcy5hU3RhcnRBbmdsZSx0LmFFbmRBbmdsZT10aGlzLmFFbmRBbmdsZSx0LmFDbG9ja3dpc2U9dGhpcy5hQ2xvY2t3aXNlLHQuYVJvdGF0aW9uPXRoaXMuYVJvdGF0aW9uLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMuYVg9dC5hWCx0aGlzLmFZPXQuYVksdGhpcy54UmFkaXVzPXQueFJhZGl1cyx0aGlzLnlSYWRpdXM9dC55UmFkaXVzLHRoaXMuYVN0YXJ0QW5nbGU9dC5hU3RhcnRBbmdsZSx0aGlzLmFFbmRBbmdsZT10LmFFbmRBbmdsZSx0aGlzLmFDbG9ja3dpc2U9dC5hQ2xvY2t3aXNlLHRoaXMuYVJvdGF0aW9uPXQuYVJvdGF0aW9uLHRoaXN9fWVmdC5wcm90b3R5cGUuaXNFbGxpcHNlQ3VydmU9ITA7Y2xhc3MgbmZ0IGV4dGVuZHMgZWZ0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXtzdXBlcih0LGUsbixuLG8saSxhKSx0aGlzLnR5cGU9IkFyY0N1cnZlIn19ZnVuY3Rpb24gb2Z0KCl7bGV0IHQ9MCxlPTAsbj0wLG89MDtmdW5jdGlvbiBpKGksYSxyLHMpe3Q9aSxlPXIsbj0tMyppKzMqYS0yKnItcyxvPTIqaS0yKmErcitzfXJldHVybntpbml0Q2F0bXVsbFJvbTpmdW5jdGlvbih0LGUsbixvLGEpe2koZSxuLGEqKG4tdCksYSooby1lKSl9LGluaXROb251bmlmb3JtQ2F0bXVsbFJvbTpmdW5jdGlvbih0LGUsbixvLGEscixzKXtsZXQgbD0oZS10KS9hLShuLXQpLyhhK3IpKyhuLWUpL3IsYz0obi1lKS9yLShvLWUpLyhyK3MpKyhvLW4pL3M7bCo9cixjKj1yLGkoZSxuLGwsYyl9LGNhbGM6ZnVuY3Rpb24oaSl7Y29uc3QgYT1pKmk7cmV0dXJuIHQrZSppK24qYStvKihhKmkpfX19bmZ0LnByb3RvdHlwZS5pc0FyY0N1cnZlPSEwO2NvbnN0IGlmdD1uZXcgaWx0LGFmdD1uZXcgb2Z0LHJmdD1uZXcgb2Z0LHNmdD1uZXcgb2Z0O2NsYXNzIGxmdCBleHRlbmRzIHRmdHtjb25zdHJ1Y3Rvcih0PVtdLGU9ITEsbj0iY2VudHJpcGV0YWwiLG89LjUpe3N1cGVyKCksdGhpcy50eXBlPSJDYXRtdWxsUm9tQ3VydmUzIix0aGlzLnBvaW50cz10LHRoaXMuY2xvc2VkPWUsdGhpcy5jdXJ2ZVR5cGU9bix0aGlzLnRlbnNpb249b31nZXRQb2ludCh0LGU9bmV3IGlsdCl7Y29uc3Qgbj1lLG89dGhpcy5wb2ludHMsaT1vLmxlbmd0aCxhPShpLSh0aGlzLmNsb3NlZD8wOjEpKSp0O2xldCByLHMsbD1NYXRoLmZsb29yKGEpLGM9YS1sO3RoaXMuY2xvc2VkP2wrPWw+MD8wOihNYXRoLmZsb29yKE1hdGguYWJzKGwpL2kpKzEpKmk6MD09PWMmJmw9PT1pLTEmJihsPWktMixjPTEpLHRoaXMuY2xvc2VkfHxsPjA/cj1vWyhsLTEpJWldOihpZnQuc3ViVmVjdG9ycyhvWzBdLG9bMV0pLmFkZChvWzBdKSxyPWlmdCk7Y29uc3QgZD1vW2wlaV0scD1vWyhsKzEpJWldO2lmKHRoaXMuY2xvc2VkfHxsKzI8aT9zPW9bKGwrMiklaV06KGlmdC5zdWJWZWN0b3JzKG9baS0xXSxvW2ktMl0pLmFkZChvW2ktMV0pLHM9aWZ0KSwiY2VudHJpcGV0YWwiPT09dGhpcy5jdXJ2ZVR5cGV8fCJjaG9yZGFsIj09PXRoaXMuY3VydmVUeXBlKXtjb25zdCB0PSJjaG9yZGFsIj09PXRoaXMuY3VydmVUeXBlPy41Oi4yNTtsZXQgZT1NYXRoLnBvdyhyLmRpc3RhbmNlVG9TcXVhcmVkKGQpLHQpLG49TWF0aC5wb3coZC5kaXN0YW5jZVRvU3F1YXJlZChwKSx0KSxvPU1hdGgucG93KHAuZGlzdGFuY2VUb1NxdWFyZWQocyksdCk7bjwxZS00JiYobj0xKSxlPDFlLTQmJihlPW4pLG88MWUtNCYmKG89biksYWZ0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShyLngsZC54LHAueCxzLngsZSxuLG8pLHJmdC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oci55LGQueSxwLnkscy55LGUsbixvKSxzZnQuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKHIueixkLnoscC56LHMueixlLG4sbyl9ZWxzZSJjYXRtdWxscm9tIj09PXRoaXMuY3VydmVUeXBlJiYoYWZ0LmluaXRDYXRtdWxsUm9tKHIueCxkLngscC54LHMueCx0aGlzLnRlbnNpb24pLHJmdC5pbml0Q2F0bXVsbFJvbShyLnksZC55LHAueSxzLnksdGhpcy50ZW5zaW9uKSxzZnQuaW5pdENhdG11bGxSb20oci56LGQueixwLnoscy56LHRoaXMudGVuc2lvbikpO3JldHVybiBuLnNldChhZnQuY2FsYyhjKSxyZnQuY2FsYyhjKSxzZnQuY2FsYyhjKSksbn1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10LnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7dGhpcy5wb2ludHMucHVzaCh0LnBvaW50c1tlXS5jbG9uZSgpKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10aGlzLnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7dC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpfXJldHVybiB0LmNsb3NlZD10aGlzLmNsb3NlZCx0LmN1cnZlVHlwZT10aGlzLmN1cnZlVHlwZSx0LnRlbnNpb249dGhpcy50ZW5zaW9uLHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10LnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LnBvaW50c1tlXTt0aGlzLnBvaW50cy5wdXNoKChuZXcgaWx0KS5mcm9tQXJyYXkobikpfXJldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9fWZ1bmN0aW9uIGNmdCh0LGUsbixvLGkpe2NvbnN0IGE9LjUqKG8tZSkscj0uNSooaS1uKSxzPXQqdDtyZXR1cm4oMipuLTIqbythK3IpKih0KnMpKygtMypuKzMqby0yKmEtcikqcythKnQrbn1mdW5jdGlvbiBkZnQodCxlLG4sbyl7cmV0dXJuKGZ1bmN0aW9uIGkodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gbipuKmV9KSh0LGUpKyhmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIDIqKDEtdCkqdCplfSkodCxuKSsoZnVuY3Rpb24gcih0LGUpe3JldHVybiB0KnQqZX0pKHQsbyl9ZnVuY3Rpb24gcGZ0KHQsZSxuLG8saSl7cmV0dXJuKGZ1bmN0aW9uIGEodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gbipuKm4qZX0pKHQsZSkrKGZ1bmN0aW9uIHIodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gMypuKm4qdCplfSkodCxuKSsoZnVuY3Rpb24gcyh0LGUpe3JldHVybiAzKigxLXQpKnQqdCplfSkodCxvKSsoZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0KnQqdCplfSkodCxpKX1sZnQucHJvdG90eXBlLmlzQ2F0bXVsbFJvbUN1cnZlMz0hMDtjbGFzcyBtZnQgZXh0ZW5kcyB0ZnR7Y29uc3RydWN0b3IodD1uZXcgRnN0LGU9bmV3IEZzdCxuPW5ldyBGc3Qsbz1uZXcgRnN0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZSIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW4sdGhpcy52Mz1vfWdldFBvaW50KHQsZT1uZXcgRnN0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjIscj10aGlzLnYzO3JldHVybiBuLnNldChwZnQodCxvLngsaS54LGEueCxyLngpLHBmdCh0LG8ueSxpLnksYS55LHIueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fW1mdC5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlPSEwO2NsYXNzIHVmdCBleHRlbmRzIHRmdHtjb25zdHJ1Y3Rvcih0PW5ldyBpbHQsZT1uZXcgaWx0LG49bmV3IGlsdCxvPW5ldyBpbHQpe3N1cGVyKCksdGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlMyIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW4sdGhpcy52Mz1vfWdldFBvaW50KHQsZT1uZXcgaWx0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjIscj10aGlzLnYzO3JldHVybiBuLnNldChwZnQodCxvLngsaS54LGEueCxyLngpLHBmdCh0LG8ueSxpLnksYS55LHIueSkscGZ0KHQsby56LGkueixhLnosci56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXMudjMuY29weSh0LnYzKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHQudjM9dGhpcy52My50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpcy52My5mcm9tQXJyYXkodC52MyksdGhpc319dWZ0LnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmUzPSEwO2NsYXNzIGZmdCBleHRlbmRzIHRmdHtjb25zdHJ1Y3Rvcih0PW5ldyBGc3QsZT1uZXcgRnN0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlIix0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgRnN0KXtjb25zdCBuPWU7cmV0dXJuIDE9PT10P24uY29weSh0aGlzLnYyKToobi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxuLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnYxKSksbn1nZXRQb2ludEF0KHQsZSl7cmV0dXJuIHRoaXMuZ2V0UG9pbnQodCxlKX1nZXRUYW5nZW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgRnN0O3JldHVybiBuLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLm5vcm1hbGl6ZSgpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fWZmdC5wcm90b3R5cGUuaXNMaW5lQ3VydmU9ITA7Y2xhc3MgZ2Z0IGV4dGVuZHMgdGZ0e2NvbnN0cnVjdG9yKHQ9bmV3IEZzdCxlPW5ldyBGc3Qsbj1uZXcgRnN0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1ufWdldFBvaW50KHQsZT1uZXcgRnN0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjI7cmV0dXJuIG4uc2V0KGRmdCh0LG8ueCxpLngsYS54KSxkZnQodCxvLnksaS55LGEueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fWdmdC5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyBoZnQgZXh0ZW5kcyB0ZnR7Y29uc3RydWN0b3IodD1uZXcgaWx0LGU9bmV3IGlsdCxuPW5ldyBpbHQpe3N1cGVyKCksdGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1ufWdldFBvaW50KHQsZT1uZXcgaWx0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjI7cmV0dXJuIG4uc2V0KGRmdCh0LG8ueCxpLngsYS54KSxkZnQodCxvLnksaS55LGEueSksZGZ0KHQsby56LGkueixhLnopKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1oZnQucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmUzPSEwO2NsYXNzIGJmdCBleHRlbmRzIHRmdHtjb25zdHJ1Y3Rvcih0PVtdKXtzdXBlcigpLHRoaXMudHlwZT0iU3BsaW5lQ3VydmUiLHRoaXMucG9pbnRzPXR9Z2V0UG9pbnQodCxlPW5ldyBGc3Qpe2NvbnN0IG49ZSxvPXRoaXMucG9pbnRzLGk9KG8ubGVuZ3RoLTEpKnQsYT1NYXRoLmZsb29yKGkpLHI9aS1hLHM9b1swPT09YT9hOmEtMV0sbD1vW2FdLGM9b1thPm8ubGVuZ3RoLTI/by5sZW5ndGgtMTphKzFdLGQ9b1thPm8ubGVuZ3RoLTM/by5sZW5ndGgtMTphKzJdO3JldHVybiBuLnNldChjZnQocixzLngsbC54LGMueCxkLngpLGNmdChyLHMueSxsLnksYy55LGQueSkpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe3RoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXRoaXMucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXt0LnBvaW50cy5wdXNoKHRoaXMucG9pbnRzW2VdLnRvQXJyYXkoKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10LnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LnBvaW50c1tlXTt0aGlzLnBvaW50cy5wdXNoKChuZXcgRnN0KS5mcm9tQXJyYXkobikpfXJldHVybiB0aGlzfX1iZnQucHJvdG90eXBlLmlzU3BsaW5lQ3VydmU9ITA7dmFyIHlmdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBcmNDdXJ2ZTpuZnQsQ2F0bXVsbFJvbUN1cnZlMzpsZnQsQ3ViaWNCZXppZXJDdXJ2ZTptZnQsQ3ViaWNCZXppZXJDdXJ2ZTM6dWZ0LEVsbGlwc2VDdXJ2ZTplZnQsTGluZUN1cnZlOmZmdCxMaW5lQ3VydmUzOmNsYXNzIGV4dGVuZHMgdGZ0e2NvbnN0cnVjdG9yKHQ9bmV3IGlsdCxlPW5ldyBpbHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQ3VydmUzIix0aGlzLmlzTGluZUN1cnZlMz0hMCx0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgaWx0KXtjb25zdCBuPWU7cmV0dXJuIDE9PT10P24uY29weSh0aGlzLnYyKToobi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxuLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnYxKSksbn1nZXRQb2ludEF0KHQsZSl7cmV0dXJuIHRoaXMuZ2V0UG9pbnQodCxlKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319LFF1YWRyYXRpY0JlemllckN1cnZlOmdmdCxRdWFkcmF0aWNCZXppZXJDdXJ2ZTM6aGZ0LFNwbGluZUN1cnZlOmJmdH0pO2NsYXNzIF9mdCBleHRlbmRzIHRmdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJDdXJ2ZVBhdGgiLHRoaXMuY3VydmVzPVtdLHRoaXMuYXV0b0Nsb3NlPSExfWFkZCh0KXt0aGlzLmN1cnZlcy5wdXNoKHQpfWNsb3NlUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJ2ZXNbMF0uZ2V0UG9pbnQoMCksZT10aGlzLmN1cnZlc1t0aGlzLmN1cnZlcy5sZW5ndGgtMV0uZ2V0UG9pbnQoMSk7dC5lcXVhbHMoZSl8fHRoaXMuY3VydmVzLnB1c2gobmV3IGZmdChlLHQpKX1nZXRQb2ludCh0LGUpe2NvbnN0IG49dCp0aGlzLmdldExlbmd0aCgpLG89dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtsZXQgaT0wO2Zvcig7aTxvLmxlbmd0aDspe2lmKG9baV0+PW4pe2NvbnN0IHQ9b1tpXS1uLGE9dGhpcy5jdXJ2ZXNbaV0scj1hLmdldExlbmd0aCgpO3JldHVybiBhLmdldFBvaW50QXQoMD09PXI/MDoxLXQvcixlKX1pKyt9cmV0dXJuIG51bGx9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldEN1cnZlTGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfXVwZGF0ZUFyY0xlbmd0aHMoKXt0aGlzLm5lZWRzVXBkYXRlPSEwLHRoaXMuY2FjaGVMZW5ndGhzPW51bGwsdGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKX1nZXRDdXJ2ZUxlbmd0aHMoKXtpZih0aGlzLmNhY2hlTGVuZ3RocyYmdGhpcy5jYWNoZUxlbmd0aHMubGVuZ3RoPT09dGhpcy5jdXJ2ZXMubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlTGVuZ3Rocztjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGxldCBuPTAsbz10aGlzLmN1cnZlcy5sZW5ndGg7bjxvO24rKyllKz10aGlzLmN1cnZlc1tuXS5nZXRMZW5ndGgoKSx0LnB1c2goZSk7cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzPXQsdH1nZXRTcGFjZWRQb2ludHModD00MCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUucHVzaChlWzBdKSxlfWdldFBvaW50cyh0PTEyKXtjb25zdCBlPVtdO2xldCBuO2ZvcihsZXQgbz0wLGk9dGhpcy5jdXJ2ZXM7bzxpLmxlbmd0aDtvKyspe2NvbnN0IGE9aVtvXSxyPWEuZ2V0UG9pbnRzKGEmJmEuaXNFbGxpcHNlQ3VydmU/Mip0OmEmJihhLmlzTGluZUN1cnZlfHxhLmlzTGluZUN1cnZlMyk/MTphJiZhLmlzU3BsaW5lQ3VydmU/dCphLnBvaW50cy5sZW5ndGg6dCk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2NvbnN0IG89clt0XTtuJiZuLmVxdWFscyhvKXx8KGUucHVzaChvKSxuPW8pfX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUubGVuZ3RoPjEmJiFlW2UubGVuZ3RoLTFdLmVxdWFscyhlWzBdKSYmZS5wdXNoKGVbMF0pLGV9Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dC5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspe3RoaXMuY3VydmVzLnB1c2godC5jdXJ2ZXNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXMuYXV0b0Nsb3NlPXQuYXV0b0Nsb3NlLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LmF1dG9DbG9zZT10aGlzLmF1dG9DbG9zZSx0LmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXRoaXMuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXt0LmN1cnZlcy5wdXNoKHRoaXMuY3VydmVzW2VdLnRvSlNPTigpKX1yZXR1cm4gdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzLmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXQuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXQuY3VydmVzW2VdO3RoaXMuY3VydmVzLnB1c2goKG5ldyB5ZnRbbi50eXBlXSkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX1jbGFzcyBDZnQgZXh0ZW5kcyBfZnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBhdGgiLHRoaXMuY3VycmVudFBvaW50PW5ldyBGc3QsdCYmdGhpcy5zZXRGcm9tUG9pbnRzKHQpfXNldEZyb21Qb2ludHModCl7dGhpcy5tb3ZlVG8odFswXS54LHRbMF0ueSk7Zm9yKGxldCBlPTEsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMubGluZVRvKHRbZV0ueCx0W2VdLnkpO3JldHVybiB0aGlzfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5zZXQodCxlKSx0aGlzfWxpbmVUbyh0LGUpe2NvbnN0IG49bmV3IGZmdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBGc3QodCxlKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gobiksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31xdWFkcmF0aWNDdXJ2ZVRvKHQsZSxuLG8pe2NvbnN0IGk9bmV3IGdmdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBGc3QodCxlKSxuZXcgRnN0KG4sbykpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKGkpLHRoaXMuY3VycmVudFBvaW50LnNldChuLG8pLHRoaXN9YmV6aWVyQ3VydmVUbyh0LGUsbixvLGksYSl7Y29uc3Qgcj1uZXcgbWZ0KHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IEZzdCh0LGUpLG5ldyBGc3QobixvKSxuZXcgRnN0KGksYSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKHIpLHRoaXMuY3VycmVudFBvaW50LnNldChpLGEpLHRoaXN9c3BsaW5lVGhydSh0KXtjb25zdCBlPVt0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpXS5jb25jYXQodCksbj1uZXcgYmZ0KGUpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG4pLHRoaXMuY3VycmVudFBvaW50LmNvcHkodFt0Lmxlbmd0aC0xXSksdGhpc31hcmModCxlLG4sbyxpLGEpe3JldHVybiB0aGlzLmFic2FyYyh0K3RoaXMuY3VycmVudFBvaW50LngsZSt0aGlzLmN1cnJlbnRQb2ludC55LG4sbyxpLGEpLHRoaXN9YWJzYXJjKHQsZSxuLG8saSxhKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQsZSxuLG4sbyxpLGEpLHRoaXN9ZWxsaXBzZSh0LGUsbixvLGksYSxyLHMpe3JldHVybiB0aGlzLmFic2VsbGlwc2UodCt0aGlzLmN1cnJlbnRQb2ludC54LGUrdGhpcy5jdXJyZW50UG9pbnQueSxuLG8saSxhLHIscyksdGhpc31hYnNlbGxpcHNlKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1uZXcgZWZ0KHQsZSxuLG8saSxhLHIscyk7aWYodGhpcy5jdXJ2ZXMubGVuZ3RoPjApe2NvbnN0IHQ9bC5nZXRQb2ludCgwKTt0LmVxdWFscyh0aGlzLmN1cnJlbnRQb2ludCl8fHRoaXMubGluZVRvKHQueCx0LnkpfXRoaXMuY3VydmVzLnB1c2gobCk7Y29uc3QgYz1sLmdldFBvaW50KDEpO3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5jb3B5KGMpLHRoaXN9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHQuY3VycmVudFBvaW50KSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQuY3VycmVudFBvaW50PXRoaXMuY3VycmVudFBvaW50LnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmN1cnJlbnRQb2ludC5mcm9tQXJyYXkodC5jdXJyZW50UG9pbnQpLHRoaXN9fWNsYXNzIE1mdCBleHRlbmRzIENmdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnV1aWQ9VHN0KCksdGhpcy50eXBlPSJTaGFwZSIsdGhpcy5ob2xlcz1bXX1nZXRQb2ludHNIb2xlcyh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLG89dGhpcy5ob2xlcy5sZW5ndGg7bjxvO24rKyllW25dPXRoaXMuaG9sZXNbbl0uZ2V0UG9pbnRzKHQpO3JldHVybiBlfWV4dHJhY3RQb2ludHModCl7cmV0dXJue3NoYXBlOnRoaXMuZ2V0UG9pbnRzKHQpLGhvbGVzOnRoaXMuZ2V0UG9pbnRzSG9sZXModCl9fWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7dGhpcy5ob2xlcy5wdXNoKHQuaG9sZXNbZV0uY2xvbmUoKSl9cmV0dXJuIHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LnV1aWQ9dGhpcy51dWlkLHQuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmhvbGVzLmxlbmd0aDtlPG47ZSsrKXt0LmhvbGVzLnB1c2godGhpcy5ob2xlc1tlXS50b0pTT04oKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy51dWlkPXQudXVpZCx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LmhvbGVzW2VdO3RoaXMuaG9sZXMucHVzaCgobmV3IENmdCkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX1jb25zdCB2ZnQ9ZnVuY3Rpb24odCxlLG49Mil7Y29uc3Qgbz1lJiZlLmxlbmd0aCxpPW8/ZVswXSpuOnQubGVuZ3RoO2xldCBhPXhmdCh0LDAsaSxuLCEwKTtjb25zdCByPVtdO2lmKCFhfHxhLm5leHQ9PT1hLnByZXYpcmV0dXJuIHI7bGV0IHMsbCxjLGQscCxtLHU7aWYobyYmKGE9KGZ1bmN0aW9uIGYodCxlLG4sbyl7Y29uc3QgaT1bXTtsZXQgYSxyLHMsbCxjO2ZvcihhPTAscj1lLmxlbmd0aDthPHI7YSsrKXM9ZVthXSpvLGw9YTxyLTE/ZVthKzFdKm86dC5sZW5ndGgsYz14ZnQodCxzLGwsbywhMSksYz09PWMubmV4dCYmKGMuc3RlaW5lcj0hMCksaS5wdXNoKE5mdChjKSk7Zm9yKGkuc29ydChSZnQpLGE9MDthPGkubGVuZ3RoO2ErKylFZnQoaVthXSxuKSxuPU9mdChuLG4ubmV4dCk7cmV0dXJuIG59KSh0LGUsYSxuKSksdC5sZW5ndGg+ODAqbil7cz1jPXRbMF0sbD1kPXRbMV07Zm9yKGxldCBlPW47ZTxpO2UrPW4pcD10W2VdLG09dFtlKzFdLHA8cyYmKHM9cCksbTxsJiYobD1tKSxwPmMmJihjPXApLG0+ZCYmKGQ9bSk7dT1NYXRoLm1heChjLXMsZC1sKSx1PTAhPT11PzEvdTowfXJldHVybiBQZnQoYSxyLG4scyxsLHUpLHJ9O2Z1bmN0aW9uIHhmdCh0LGUsbixvLGkpe2xldCBhLHI7aWYoaT09PShmdW5jdGlvbiBzKHQsZSxuLG8pe2xldCBpPTA7Zm9yKGxldCBhPWUscj1uLW87YTxuO2ErPW8paSs9KHRbcl0tdFthXSkqKHRbYSsxXSt0W3IrMV0pLHI9YTtyZXR1cm4gaX0pKHQsZSxuLG8pPjApZm9yKGE9ZTthPG47YSs9bylyPVdmdChhLHRbYV0sdFthKzFdLHIpO2Vsc2UgZm9yKGE9bi1vO2E+PWU7YS09bylyPVdmdChhLHRbYV0sdFthKzFdLHIpO3JldHVybiByJiZGZnQocixyLm5leHQpJiYoR2Z0KHIpLHI9ci5uZXh0KSxyfWZ1bmN0aW9uIE9mdCh0LGUpe2lmKCF0KXJldHVybiB0O2V8fChlPXQpO2xldCBuLG89dDtkb3tpZihuPSExLG8uc3RlaW5lcnx8IUZmdChvLG8ubmV4dCkmJjAhPT1IZnQoby5wcmV2LG8sby5uZXh0KSlvPW8ubmV4dDtlbHNle2lmKEdmdChvKSxvPWU9by5wcmV2LG89PT1vLm5leHQpYnJlYWs7bj0hMH19d2hpbGUobnx8byE9PWUpO3JldHVybiBlfWZ1bmN0aW9uIFBmdCh0LGUsbixvLGksYSxyKXtpZighdClyZXR1cm47IXImJmEmJihmdW5jdGlvbiBzKHQsZSxuLG8pe2xldCBpPXQ7ZG97bnVsbD09PWkueiYmKGkuej1UZnQoaS54LGkueSxlLG4sbykpLGkucHJldlo9aS5wcmV2LGkubmV4dFo9aS5uZXh0LGk9aS5uZXh0fXdoaWxlKGkhPT10KTtpLnByZXZaLm5leHRaPW51bGwsaS5wcmV2Wj1udWxsLChmdW5jdGlvbiBhKHQpe2xldCBlLG4sbyxpLGEscixzLGwsYz0xO2Rve2ZvcihuPXQsdD1udWxsLGE9bnVsbCxyPTA7bjspe2ZvcihyKyssbz1uLHM9MCxlPTA7ZTxjJiYocysrLG89by5uZXh0WixvKTtlKyspO2ZvcihsPWM7cz4wfHxsPjAmJm87KTAhPT1zJiYoMD09PWx8fCFvfHxuLno8PW8ueik/KGk9bixuPW4ubmV4dFoscy0tKTooaT1vLG89by5uZXh0WixsLS0pLGE/YS5uZXh0Wj1pOnQ9aSxpLnByZXZaPWEsYT1pO249b31hLm5leHRaPW51bGwsYyo9Mn13aGlsZShyPjEpO3JldHVybiB0fSkoaSl9KSh0LG8saSxhKTtsZXQgbCxjLGQ9dDtmb3IoO3QucHJldiE9PXQubmV4dDspaWYobD10LnByZXYsYz10Lm5leHQsYT9rZnQodCxvLGksYSk6d2Z0KHQpKWUucHVzaChsLmkvbiksZS5wdXNoKHQuaS9uKSxlLnB1c2goYy5pL24pLEdmdCh0KSx0PWMubmV4dCxkPWMubmV4dDtlbHNlIGlmKCh0PWMpPT09ZCl7cj8xPT09cj9QZnQodD1TZnQoT2Z0KHQpLGUsbiksZSxuLG8saSxhLDIpOjI9PT1yJiZEZnQodCxlLG4sbyxpLGEpOlBmdChPZnQodCksZSxuLG8saSxhLDEpO2JyZWFrfX1mdW5jdGlvbiB3ZnQodCl7Y29uc3QgZT10LnByZXYsbj10LG89dC5uZXh0O2lmKEhmdChlLG4sbyk+PTApcmV0dXJuITE7bGV0IGk9dC5uZXh0Lm5leHQ7Zm9yKDtpIT09dC5wcmV2Oyl7aWYoemZ0KGUueCxlLnksbi54LG4ueSxvLngsby55LGkueCxpLnkpJiZIZnQoaS5wcmV2LGksaS5uZXh0KT49MClyZXR1cm4hMTtpPWkubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiBrZnQodCxlLG4sbyl7Y29uc3QgaT10LnByZXYsYT10LHI9dC5uZXh0O2lmKEhmdChpLGEscik+PTApcmV0dXJuITE7Y29uc3Qgcz1pLng+YS54P2kueD5yLng/aS54OnIueDphLng+ci54P2EueDpyLngsbD1pLnk+YS55P2kueT5yLnk/aS55OnIueTphLnk+ci55P2EueTpyLnksYz1UZnQoaS54PGEueD9pLng8ci54P2kueDpyLng6YS54PHIueD9hLng6ci54LGkueTxhLnk/aS55PHIueT9pLnk6ci55OmEueTxyLnk/YS55OnIueSxlLG4sbyksZD1UZnQocyxsLGUsbixvKTtsZXQgcD10LnByZXZaLG09dC5uZXh0Wjtmb3IoO3AmJnAuej49YyYmbSYmbS56PD1kOyl7aWYocCE9PXQucHJldiYmcCE9PXQubmV4dCYmemZ0KGkueCxpLnksYS54LGEueSxyLngsci55LHAueCxwLnkpJiZIZnQocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtpZihwPXAucHJldlosbSE9PXQucHJldiYmbSE9PXQubmV4dCYmemZ0KGkueCxpLnksYS54LGEueSxyLngsci55LG0ueCxtLnkpJiZIZnQobS5wcmV2LG0sbS5uZXh0KT49MClyZXR1cm4hMTttPW0ubmV4dFp9Zm9yKDtwJiZwLno+PWM7KXtpZihwIT09dC5wcmV2JiZwIT09dC5uZXh0JiZ6ZnQoaS54LGkueSxhLngsYS55LHIueCxyLnkscC54LHAueSkmJkhmdChwLnByZXYscCxwLm5leHQpPj0wKXJldHVybiExO3A9cC5wcmV2Wn1mb3IoO20mJm0uejw9ZDspe2lmKG0hPT10LnByZXYmJm0hPT10Lm5leHQmJnpmdChpLngsaS55LGEueCxhLnksci54LHIueSxtLngsbS55KSYmSGZ0KG0ucHJldixtLG0ubmV4dCk+PTApcmV0dXJuITE7bT1tLm5leHRafXJldHVybiEwfWZ1bmN0aW9uIFNmdCh0LGUsbil7bGV0IG89dDtkb3tjb25zdCBpPW8ucHJldixhPW8ubmV4dC5uZXh0OyFGZnQoaSxhKSYmTGZ0KGksbyxvLm5leHQsYSkmJlVmdChpLGEpJiZVZnQoYSxpKSYmKGUucHVzaChpLmkvbiksZS5wdXNoKG8uaS9uKSxlLnB1c2goYS5pL24pLEdmdChvKSxHZnQoby5uZXh0KSxvPXQ9YSksbz1vLm5leHR9d2hpbGUobyE9PXQpO3JldHVybiBPZnQobyl9ZnVuY3Rpb24gRGZ0KHQsZSxuLG8saSxhKXtsZXQgcj10O2Rve2xldCB0PXIubmV4dC5uZXh0O2Zvcig7dCE9PXIucHJldjspe2lmKHIuaSE9PXQuaSYmSWZ0KHIsdCkpe2xldCBzPWpmdChyLHQpO3JldHVybiByPU9mdChyLHIubmV4dCkscz1PZnQocyxzLm5leHQpLFBmdChyLGUsbixvLGksYSksdm9pZCBQZnQocyxlLG4sbyxpLGEpfXQ9dC5uZXh0fXI9ci5uZXh0fXdoaWxlKHIhPT10KX1mdW5jdGlvbiBSZnQodCxlKXtyZXR1cm4gdC54LWUueH1mdW5jdGlvbiBFZnQodCxlKXtpZihlPShmdW5jdGlvbiBuKHQsZSl7bGV0IG49ZTtjb25zdCBvPXQueCxpPXQueTtsZXQgYSxyPS0xLzA7ZG97aWYoaTw9bi55JiZpPj1uLm5leHQueSYmbi5uZXh0LnkhPT1uLnkpe2NvbnN0IHQ9bi54KyhpLW4ueSkqKG4ubmV4dC54LW4ueCkvKG4ubmV4dC55LW4ueSk7aWYodDw9byYmdD5yKXtpZihyPXQsdD09PW8pe2lmKGk9PT1uLnkpcmV0dXJuIG47aWYoaT09PW4ubmV4dC55KXJldHVybiBuLm5leHR9YT1uLng8bi5uZXh0Lng/bjpuLm5leHR9fW49bi5uZXh0fXdoaWxlKG4hPT1lKTtpZighYSlyZXR1cm4gbnVsbDtpZihvPT09cilyZXR1cm4gYTtjb25zdCBzPWEsbD1hLngsYz1hLnk7bGV0IGQscD0xLzA7bj1hO2Rve28+PW4ueCYmbi54Pj1sJiZvIT09bi54JiZ6ZnQoaTxjP286cixpLGwsYyxpPGM/cjpvLGksbi54LG4ueSkmJihkPU1hdGguYWJzKGktbi55KS8oby1uLngpLFVmdChuLHQpJiYoZDxwfHxkPT09cCYmKG4ueD5hLnh8fG4ueD09PWEueCYmQWZ0KGEsbikpKSYmKGE9bixwPWQpKSxuPW4ubmV4dH13aGlsZShuIT09cyk7cmV0dXJuIGF9KSh0LGUpKXtjb25zdCBuPWpmdChlLHQpO09mdChlLGUubmV4dCksT2Z0KG4sbi5uZXh0KX19ZnVuY3Rpb24gQWZ0KHQsZSl7cmV0dXJuIEhmdCh0LnByZXYsdCxlLnByZXYpPDAmJkhmdChlLm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gVGZ0KHQsZSxuLG8saSl7cmV0dXJuKHQ9MTQzMTY1NTc2NSYoKHQ9ODU4OTkzNDU5JigodD0yNTI2NDUxMzUmKCh0PTE2NzExOTM1JigodD0zMjc2NyoodC1uKSppKXx0PDw4KSl8dDw8NCkpfHQ8PDIpKXx0PDwxKSl8KGU9MTQzMTY1NTc2NSYoKGU9ODU4OTkzNDU5JigoZT0yNTI2NDUxMzUmKChlPTE2NzExOTM1JigoZT0zMjc2NyooZS1vKSppKXxlPDw4KSl8ZTw8NCkpfGU8PDIpKXxlPDwxKSk8PDF9ZnVuY3Rpb24gTmZ0KHQpe2xldCBlPXQsbj10O2RveyhlLng8bi54fHxlLng9PT1uLngmJmUueTxuLnkpJiYobj1lKSxlPWUubmV4dH13aGlsZShlIT09dCk7cmV0dXJuIG59ZnVuY3Rpb24gemZ0KHQsZSxuLG8saSxhLHIscyl7cmV0dXJuKGktcikqKGUtcyktKHQtcikqKGEtcyk+PTAmJih0LXIpKihvLXMpLShuLXIpKihlLXMpPj0wJiYobi1yKSooYS1zKS0oaS1yKSooby1zKT49MH1mdW5jdGlvbiBJZnQodCxlKXtyZXR1cm4gdC5uZXh0LmkhPT1lLmkmJnQucHJldi5pIT09ZS5pJiYhKGZ1bmN0aW9uIG4odCxlKXtsZXQgbj10O2Rve2lmKG4uaSE9PXQuaSYmbi5uZXh0LmkhPT10LmkmJm4uaSE9PWUuaSYmbi5uZXh0LmkhPT1lLmkmJkxmdChuLG4ubmV4dCx0LGUpKXJldHVybiEwO249bi5uZXh0fXdoaWxlKG4hPT10KTtyZXR1cm4hMX0pKHQsZSkmJihVZnQodCxlKSYmVWZ0KGUsdCkmJihmdW5jdGlvbiBvKHQsZSl7bGV0IG49dCxvPSExO2NvbnN0IGk9KHQueCtlLngpLzIsYT0odC55K2UueSkvMjtkb3tuLnk+YSE9bi5uZXh0Lnk+YSYmbi5uZXh0LnkhPT1uLnkmJmk8KG4ubmV4dC54LW4ueCkqKGEtbi55KS8obi5uZXh0Lnktbi55KStuLngmJihvPSFvKSxuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuIG99KSh0LGUpJiYoSGZ0KHQucHJldix0LGUucHJldil8fEhmdCh0LGUucHJldixlKSl8fEZmdCh0LGUpJiZIZnQodC5wcmV2LHQsdC5uZXh0KT4wJiZIZnQoZS5wcmV2LGUsZS5uZXh0KT4wKX1mdW5jdGlvbiBIZnQodCxlLG4pe3JldHVybihlLnktdC55KSoobi54LWUueCktKGUueC10LngpKihuLnktZS55KX1mdW5jdGlvbiBGZnQodCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9ZnVuY3Rpb24gTGZ0KHQsZSxuLG8pe2NvbnN0IGk9VmZ0KEhmdCh0LGUsbikpLGE9VmZ0KEhmdCh0LGUsbykpLHI9VmZ0KEhmdChuLG8sdCkpLHM9VmZ0KEhmdChuLG8sZSkpO3JldHVybiBpIT09YSYmciE9PXN8fCghKDAhPT1pfHwhQmZ0KHQsbixlKSl8fCghKDAhPT1hfHwhQmZ0KHQsbyxlKSl8fCghKDAhPT1yfHwhQmZ0KG4sdCxvKSl8fCEoMCE9PXN8fCFCZnQobixlLG8pKSkpKX1mdW5jdGlvbiBCZnQodCxlLG4pe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxuLngpJiZlLng+PU1hdGgubWluKHQueCxuLngpJiZlLnk8PU1hdGgubWF4KHQueSxuLnkpJiZlLnk+PU1hdGgubWluKHQueSxuLnkpfWZ1bmN0aW9uIFZmdCh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9ZnVuY3Rpb24gVWZ0KHQsZSl7cmV0dXJuIEhmdCh0LnByZXYsdCx0Lm5leHQpPDA/SGZ0KHQsZSx0Lm5leHQpPj0wJiZIZnQodCx0LnByZXYsZSk+PTA6SGZ0KHQsZSx0LnByZXYpPDB8fEhmdCh0LHQubmV4dCxlKTwwfWZ1bmN0aW9uIGpmdCh0LGUpe2NvbnN0IG49bmV3IFlmdCh0LmksdC54LHQueSksbz1uZXcgWWZ0KGUuaSxlLngsZS55KSxpPXQubmV4dCxhPWUucHJldjtyZXR1cm4gdC5uZXh0PWUsZS5wcmV2PXQsbi5uZXh0PWksaS5wcmV2PW4sby5uZXh0PW4sbi5wcmV2PW8sYS5uZXh0PW8sby5wcmV2PWEsb31mdW5jdGlvbiBXZnQodCxlLG4sbyl7Y29uc3QgaT1uZXcgWWZ0KHQsZSxuKTtyZXR1cm4gbz8oaS5uZXh0PW8ubmV4dCxpLnByZXY9byxvLm5leHQucHJldj1pLG8ubmV4dD1pKTooaS5wcmV2PWksaS5uZXh0PWkpLGl9ZnVuY3Rpb24gR2Z0KHQpe3QubmV4dC5wcmV2PXQucHJldix0LnByZXYubmV4dD10Lm5leHQsdC5wcmV2WiYmKHQucHJldloubmV4dFo9dC5uZXh0WiksdC5uZXh0WiYmKHQubmV4dFoucHJldlo9dC5wcmV2Wil9ZnVuY3Rpb24gWWZ0KHQsZSxuKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9bix0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9bnVsbCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX1jbGFzcyBxZnR7c3RhdGljIGFyZWEodCl7Y29uc3QgZT10Lmxlbmd0aDtsZXQgbj0wO2ZvcihsZXQgbz1lLTEsaT0wO2k8ZTtvPWkrKyluKz10W29dLngqdFtpXS55LXRbaV0ueCp0W29dLnk7cmV0dXJuLjUqbn1zdGF0aWMgaXNDbG9ja1dpc2UodCl7cmV0dXJuIHFmdC5hcmVhKHQpPDB9c3RhdGljIHRyaWFuZ3VsYXRlU2hhcGUodCxlKXtjb25zdCBuPVtdLG89W10saT1bXTtaZnQodCksWGZ0KG4sdCk7bGV0IGE9dC5sZW5ndGg7ZS5mb3JFYWNoKFpmdCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspby5wdXNoKGEpLGErPWVbdF0ubGVuZ3RoLFhmdChuLGVbdF0pO2NvbnN0IHI9dmZ0KG4sbyk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kz0zKWkucHVzaChyLnNsaWNlKHQsdCszKSk7cmV0dXJuIGl9fWZ1bmN0aW9uIFpmdCh0KXtjb25zdCBlPXQubGVuZ3RoO2U+MiYmdFtlLTFdLmVxdWFscyh0WzBdKSYmdC5wb3AoKX1mdW5jdGlvbiBYZnQodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0LnB1c2goZVtuXS54KSx0LnB1c2goZVtuXS55KX1jbGFzcyBLZnQgZXh0ZW5kcyBOY3R7Y29uc3RydWN0b3IodD1uZXcgTWZ0KFtuZXcgRnN0KC41LC41KSxuZXcgRnN0KC0uNSwuNSksbmV3IEZzdCgtLjUsLS41KSxuZXcgRnN0KC41LC0uNSldKSxlPXt9KXtzdXBlcigpLHRoaXMudHlwZT0iRXh0cnVkZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LG9wdGlvbnM6ZX0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2NvbnN0IG49dGhpcyxvPVtdLGk9W107Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXthKHRbZV0pfWZ1bmN0aW9uIGEodCl7Y29uc3QgYT1bXSxyPXZvaWQgMCE9PWUuY3VydmVTZWdtZW50cz9lLmN1cnZlU2VnbWVudHM6MTIscz12b2lkIDAhPT1lLnN0ZXBzP2Uuc3RlcHM6MTtsZXQgbD12b2lkIDAhPT1lLmRlcHRoP2UuZGVwdGg6MSxjPXZvaWQgMD09PWUuYmV2ZWxFbmFibGVkfHxlLmJldmVsRW5hYmxlZCxkPXZvaWQgMCE9PWUuYmV2ZWxUaGlja25lc3M/ZS5iZXZlbFRoaWNrbmVzczouMixwPXZvaWQgMCE9PWUuYmV2ZWxTaXplP2UuYmV2ZWxTaXplOmQtLjEsbT12b2lkIDAhPT1lLmJldmVsT2Zmc2V0P2UuYmV2ZWxPZmZzZXQ6MCx1PXZvaWQgMCE9PWUuYmV2ZWxTZWdtZW50cz9lLmJldmVsU2VnbWVudHM6Mztjb25zdCBmPWUuZXh0cnVkZVBhdGgsZz12b2lkIDAhPT1lLlVWR2VuZXJhdG9yP2UuVVZHZW5lcmF0b3I6SmZ0O3ZvaWQgMCE9PWUuYW1vdW50JiYoY29uc29sZS53YXJuKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IGFtb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIGRlcHRoLiIpLGw9ZS5hbW91bnQpO2xldCBoLGIseSxfLEMsTT0hMTtmJiYoaD1mLmdldFNwYWNlZFBvaW50cyhzKSxNPSEwLGM9ITEsYj1mLmNvbXB1dGVGcmVuZXRGcmFtZXMocywhMSkseT1uZXcgaWx0LF89bmV3IGlsdCxDPW5ldyBpbHQpLGN8fCh1PTAsZD0wLHA9MCxtPTApO2NvbnN0IHY9dC5leHRyYWN0UG9pbnRzKHIpO2xldCB4PXYuc2hhcGU7Y29uc3QgTz12LmhvbGVzO2lmKCFxZnQuaXNDbG9ja1dpc2UoeCkpe3g9eC5yZXZlcnNlKCk7Zm9yKGxldCB0PTAsZT1PLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU9bdF07cWZ0LmlzQ2xvY2tXaXNlKGUpJiYoT1t0XT1lLnJldmVyc2UoKSl9fWNvbnN0IFA9cWZ0LnRyaWFuZ3VsYXRlU2hhcGUoeCxPKSx3PXg7Zm9yKGxldCB0PTAsZT1PLmxlbmd0aDt0PGU7dCsrKXt4PXguY29uY2F0KE9bdF0pfWZ1bmN0aW9uIGsodCxlLG4pe3JldHVybiBlfHxjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IHZlYyBkb2VzIG5vdCBleGlzdCIpLGUuY2xvbmUoKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodCl9Y29uc3QgUz14Lmxlbmd0aCxEPVAubGVuZ3RoO2Z1bmN0aW9uIFIodCxlLG4pe2xldCBvLGksYTtjb25zdCByPXQueC1lLngscz10LnktZS55LGw9bi54LXQueCxjPW4ueS10LnksZD1yKnIrcypzO2lmKE1hdGguYWJzKHIqYy1zKmwpPk51bWJlci5FUFNJTE9OKXtjb25zdCBwPU1hdGguc3FydChkKSxtPU1hdGguc3FydChsKmwrYypjKSx1PWUueC1zL3AsZj1lLnkrci9wLGc9KChuLngtYy9tLXUpKmMtKG4ueStsL20tZikqbCkvKHIqYy1zKmwpO289dStyKmctdC54LGk9ZitzKmctdC55O2NvbnN0IGg9bypvK2kqaTtpZihoPD0yKXJldHVybiBuZXcgRnN0KG8saSk7YT1NYXRoLnNxcnQoaC8yKX1lbHNle2xldCB0PSExO3I+TnVtYmVyLkVQU0lMT04/bD5OdW1iZXIuRVBTSUxPTiYmKHQ9ITApOnI8LU51bWJlci5FUFNJTE9OP2w8LU51bWJlci5FUFNJTE9OJiYodD0hMCk6TWF0aC5zaWduKHMpPT09TWF0aC5zaWduKGMpJiYodD0hMCksdD8obz0tcyxpPXIsYT1NYXRoLnNxcnQoZCkpOihvPXIsaT1zLGE9TWF0aC5zcXJ0KGQvMikpfXJldHVybiBuZXcgRnN0KG8vYSxpL2EpfWNvbnN0IEU9W107Zm9yKGxldCB0PTAsZT13Lmxlbmd0aCxuPWUtMSxvPXQrMTt0PGU7dCsrLG4rKyxvKyspbj09PWUmJihuPTApLG89PT1lJiYobz0wKSxFW3RdPVIod1t0XSx3W25dLHdbb10pO2NvbnN0IEE9W107bGV0IFQsTj1FLmNvbmNhdCgpO2ZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9W107Zm9yKGxldCB0PTAsbj1lLmxlbmd0aCxvPW4tMSxpPXQrMTt0PG47dCsrLG8rKyxpKyspbz09PW4mJihvPTApLGk9PT1uJiYoaT0wKSxUW3RdPVIoZVt0XSxlW29dLGVbaV0pO0EucHVzaChUKSxOPU4uY29uY2F0KFQpfWZvcihsZXQgdD0wO3Q8dTt0Kyspe2NvbnN0IGU9dC91LG49ZCpNYXRoLmNvcyhlKk1hdGguUEkvMiksbz1wKk1hdGguc2luKGUqTWF0aC5QSS8yKSttO2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1rKHdbdF0sRVt0XSxvKTtIKGUueCxlLnksLW4pfWZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9QVt0XTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ayhlW3RdLFRbdF0sbyk7SChpLngsaS55LC1uKX19fWNvbnN0IHo9cCttO2ZvcihsZXQgdD0wO3Q8Uzt0Kyspe2NvbnN0IGU9Yz9rKHhbdF0sTlt0XSx6KTp4W3RdO00/KF8uY29weShiLm5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGUueCkseS5jb3B5KGIuYmlub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihlLnkpLEMuY29weShoWzBdKS5hZGQoXykuYWRkKHkpLEgoQy54LEMueSxDLnopKTpIKGUueCxlLnksMCl9Zm9yKGxldCB0PTE7dDw9czt0KyspZm9yKGxldCBlPTA7ZTxTO2UrKyl7Y29uc3Qgbj1jP2soeFtlXSxOW2VdLHopOnhbZV07TT8oXy5jb3B5KGIubm9ybWFsc1t0XSkubXVsdGlwbHlTY2FsYXIobi54KSx5LmNvcHkoYi5iaW5vcm1hbHNbdF0pLm11bHRpcGx5U2NhbGFyKG4ueSksQy5jb3B5KGhbdF0pLmFkZChfKS5hZGQoeSksSChDLngsQy55LEMueikpOkgobi54LG4ueSxsL3MqdCl9Zm9yKGxldCB0PXUtMTt0Pj0wO3QtLSl7Y29uc3QgZT10L3Usbj1kKk1hdGguY29zKGUqTWF0aC5QSS8yKSxvPXAqTWF0aC5zaW4oZSpNYXRoLlBJLzIpK207Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWsod1t0XSxFW3RdLG8pO0goZS54LGUueSxsK24pfWZvcihsZXQgdD0wLGU9Ty5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PW3RdO1Q9QVt0XTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ayhlW3RdLFRbdF0sbyk7TT9IKGkueCxpLnkraFtzLTFdLnksaFtzLTFdLngrbik6SChpLngsaS55LGwrbil9fX1mdW5jdGlvbiBJKHQsZSl7bGV0IG49dC5sZW5ndGg7Zm9yKDstLW4+PTA7KXtjb25zdCBvPW47bGV0IGk9bi0xO2k8MCYmKGk9dC5sZW5ndGgtMSk7Zm9yKGxldCB0PTAsbj1zKzIqdTt0PG47dCsrKXtjb25zdCBuPVMqdCxhPVMqKHQrMSk7TChlK28rbixlK2krbixlK2krYSxlK28rYSl9fX1mdW5jdGlvbiBIKHQsZSxuKXthLnB1c2godCksYS5wdXNoKGUpLGEucHVzaChuKX1mdW5jdGlvbiBGKHQsZSxpKXtCKHQpLEIoZSksQihpKTtjb25zdCBhPW8ubGVuZ3RoLzMscj1nLmdlbmVyYXRlVG9wVVYobixvLGEtMyxhLTIsYS0xKTtWKHJbMF0pLFYoclsxXSksVihyWzJdKX1mdW5jdGlvbiBMKHQsZSxpLGEpe0IodCksQihlKSxCKGEpLEIoZSksQihpKSxCKGEpO2NvbnN0IHI9by5sZW5ndGgvMyxzPWcuZ2VuZXJhdGVTaWRlV2FsbFVWKG4sbyxyLTYsci0zLHItMixyLTEpO1Yoc1swXSksVihzWzFdKSxWKHNbM10pLFYoc1sxXSksVihzWzJdKSxWKHNbM10pfWZ1bmN0aW9uIEIodCl7by5wdXNoKGFbMyp0KzBdKSxvLnB1c2goYVszKnQrMV0pLG8ucHVzaChhWzMqdCsyXSl9ZnVuY3Rpb24gVih0KXtpLnB1c2godC54KSxpLnB1c2godC55KX0hKGZ1bmN0aW9uIFUoKXtjb25zdCB0PW8ubGVuZ3RoLzM7aWYoYyl7bGV0IHQ9MCxlPVMqdDtmb3IobGV0IHQ9MDt0PEQ7dCsrKXtjb25zdCBuPVBbdF07RihuWzJdK2UsblsxXStlLG5bMF0rZSl9dD1zKzIqdSxlPVMqdDtmb3IobGV0IHQ9MDt0PEQ7dCsrKXtjb25zdCBuPVBbdF07RihuWzBdK2UsblsxXStlLG5bMl0rZSl9fWVsc2V7Zm9yKGxldCB0PTA7dDxEO3QrKyl7Y29uc3QgZT1QW3RdO0YoZVsyXSxlWzFdLGVbMF0pfWZvcihsZXQgdD0wO3Q8RDt0Kyspe2NvbnN0IGU9UFt0XTtGKGVbMF0rUypzLGVbMV0rUypzLGVbMl0rUypzKX19bi5hZGRHcm91cCh0LG8ubGVuZ3RoLzMtdCwwKX0pKCksKGZ1bmN0aW9uIGooKXtjb25zdCB0PW8ubGVuZ3RoLzM7bGV0IGU9MDtJKHcsZSksZSs9dy5sZW5ndGg7Zm9yKGxldCB0PTAsbj1PLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPU9bdF07SShuLGUpLGUrPW4ubGVuZ3RofW4uYWRkR3JvdXAodCxvLmxlbmd0aC8zLXQsMSl9KSgpfXRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHdjdChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyB3Y3QoaSwyKSksdGhpcy5jb21wdXRlVmVydGV4Tm9ybWFscygpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuKGZ1bmN0aW9uIGUodCxuLG8pe2lmKG8uc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtvLnNoYXBlcy5wdXNoKHRbZV0udXVpZCl9ZWxzZSBvLnNoYXBlcy5wdXNoKHQudXVpZCk7dm9pZCAwIT09bi5leHRydWRlUGF0aCYmKG8ub3B0aW9ucy5leHRydWRlUGF0aD1uLmV4dHJ1ZGVQYXRoLnRvSlNPTigpKTtyZXR1cm4gb30pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdGhpcy5wYXJhbWV0ZXJzLm9wdGlvbnMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IG89MCxpPXQuc2hhcGVzLmxlbmd0aDtvPGk7bysrKXtuLnB1c2goZVt0LnNoYXBlc1tvXV0pfWNvbnN0IG89dC5vcHRpb25zLmV4dHJ1ZGVQYXRoO3JldHVybiB2b2lkIDAhPT1vJiYodC5vcHRpb25zLmV4dHJ1ZGVQYXRoPShuZXcgeWZ0W28udHlwZV0pLmZyb21KU09OKG8pKSxuZXcgS2Z0KG4sdC5vcHRpb25zKX19Y29uc3QgSmZ0PXtnZW5lcmF0ZVRvcFVWOmZ1bmN0aW9uKHQsZSxuLG8saSl7Y29uc3QgYT1lWzMqb10scj1lWzMqbysxXSxzPWVbMyppXSxsPWVbMyppKzFdO3JldHVybltuZXcgRnN0KGVbMypuXSxlWzMqbisxXSksbmV3IEZzdChhLHIpLG5ldyBGc3QocyxsKV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbih0LGUsbixvLGksYSl7Y29uc3Qgcj1lWzMqbl0scz1lWzMqbisxXSxsPWVbMypuKzJdLGM9ZVszKm9dLGQ9ZVszKm8rMV0scD1lWzMqbysyXSxtPWVbMyppXSx1PWVbMyppKzFdLGY9ZVszKmkrMl0sZz1lWzMqYV0saD1lWzMqYSsxXSxiPWVbMyphKzJdO3JldHVybiBNYXRoLmFicyhzLWQpPE1hdGguYWJzKHItYyk/W25ldyBGc3QociwxLWwpLG5ldyBGc3QoYywxLXApLG5ldyBGc3QobSwxLWYpLG5ldyBGc3QoZywxLWIpXTpbbmV3IEZzdChzLDEtbCksbmV3IEZzdChkLDEtcCksbmV3IEZzdCh1LDEtZiksbmV3IEZzdChoLDEtYildfX07Y2xhc3MgUWZ0IGV4dGVuZHMgTmN0e2NvbnN0cnVjdG9yKHQ9bmV3IE1mdChbbmV3IEZzdCgwLC41KSxuZXcgRnN0KC0uNSwtLjUpLG5ldyBGc3QoLjUsLS41KV0pLGU9MTIpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFwZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LGN1cnZlU2VnbWVudHM6ZX07Y29uc3Qgbj1bXSxvPVtdLGk9W10sYT1bXTtsZXQgcj0wLHM9MDtpZighMT09PUFycmF5LmlzQXJyYXkodCkpbCh0KTtlbHNlIGZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWwodFtlXSksdGhpcy5hZGRHcm91cChyLHMsZSkscis9cyxzPTA7ZnVuY3Rpb24gbCh0KXtjb25zdCByPW8ubGVuZ3RoLzMsbD10LmV4dHJhY3RQb2ludHMoZSk7bGV0IGM9bC5zaGFwZTtjb25zdCBkPWwuaG9sZXM7ITE9PT1xZnQuaXNDbG9ja1dpc2UoYykmJihjPWMucmV2ZXJzZSgpKTtmb3IobGV0IHQ9MCxlPWQubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9ZFt0XTshMD09PXFmdC5pc0Nsb2NrV2lzZShlKSYmKGRbdF09ZS5yZXZlcnNlKCkpfWNvbnN0IHA9cWZ0LnRyaWFuZ3VsYXRlU2hhcGUoYyxkKTtmb3IobGV0IHQ9MCxlPWQubGVuZ3RoO3Q8ZTt0Kyspe2M9Yy5jb25jYXQoZFt0XSl9Zm9yKGxldCB0PTAsZT1jLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWNbdF07by5wdXNoKGUueCxlLnksMCksaS5wdXNoKDAsMCwxKSxhLnB1c2goZS54LGUueSl9Zm9yKGxldCB0PTAsZT1wLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPXBbdF07bi5wdXNoKGVbMF0rcixlWzFdK3IsZVsyXStyKSxzKz0zfX10aGlzLnNldEluZGV4KG4pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHdjdChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgd2N0KGksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHdjdChhLDIpKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybihmdW5jdGlvbiBlKHQsbil7aWYobi5zaGFwZXM9W10sQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxvPXQubGVuZ3RoO2U8bztlKyspe24uc2hhcGVzLnB1c2godFtlXS51dWlkKX1lbHNlIG4uc2hhcGVzLnB1c2godC51dWlkKTtyZXR1cm4gbn0pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IG89MCxpPXQuc2hhcGVzLmxlbmd0aDtvPGk7bysrKXtuLnB1c2goZVt0LnNoYXBlc1tvXV0pfXJldHVybiBuZXcgUWZ0KG4sdC5jdXJ2ZVNlZ21lbnRzKX19KGNsYXNzIGV4dGVuZHMgX2N0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFkb3dNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWnN0KDApLHRoaXMudHJhbnNwYXJlbnQ9ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpc319KS5wcm90b3R5cGUuaXNTaGFkb3dNYXRlcmlhbD0hMDtjbGFzcyAkZnQgZXh0ZW5kcyBfY3R7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLnR5cGU9Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBac3QoMTY3NzcyMTUpLHRoaXMucm91Z2huZXNzPTEsdGhpcy5tZXRhbG5lc3M9MCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBac3QoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgRnN0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5yb3VnaG5lc3NNYXA9bnVsbCx0aGlzLm1ldGFsbmVzc01hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuZW52TWFwSW50ZW5zaXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5yb3VnaG5lc3M9dC5yb3VnaG5lc3MsdGhpcy5tZXRhbG5lc3M9dC5tZXRhbG5lc3MsdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5yb3VnaG5lc3NNYXA9dC5yb3VnaG5lc3NNYXAsdGhpcy5tZXRhbG5lc3NNYXA9dC5tZXRhbG5lc3NNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuZW52TWFwSW50ZW5zaXR5PXQuZW52TWFwSW50ZW5zaXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX0kZnQucHJvdG90eXBlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgJGZ0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCIsdGhpcy5jbGVhcmNvYXRNYXA9bnVsbCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz0wLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwPW51bGwsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZT1uZXcgRnN0KDEsMSksdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9bnVsbCx0aGlzLmlvcj0xLjUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInJlZmxlY3Rpdml0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiBOc3QoMi41Kih0aGlzLmlvci0xKS8odGhpcy5pb3IrMSksMCwxKX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuaW9yPSgxKy40KnQpLygxLS40KnQpfX0pLHRoaXMuc2hlZW5Db2xvcj1uZXcgWnN0KDApLHRoaXMuc2hlZW5Db2xvck1hcD1udWxsLHRoaXMuc2hlZW5Sb3VnaG5lc3M9MSx0aGlzLnNoZWVuUm91Z2huZXNzTWFwPW51bGwsdGhpcy50cmFuc21pc3Npb25NYXA9bnVsbCx0aGlzLnRoaWNrbmVzcz0wLHRoaXMudGhpY2tuZXNzTWFwPW51bGwsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPTAsdGhpcy5hdHRlbnVhdGlvbkNvbG9yPW5ldyBac3QoMSwxLDEpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHk9MSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwPW51bGwsdGhpcy5zcGVjdWxhckNvbG9yPW5ldyBac3QoMSwxLDEpLHRoaXMuc3BlY3VsYXJDb2xvck1hcD1udWxsLHRoaXMuX3NoZWVuPTAsdGhpcy5fY2xlYXJjb2F0PTAsdGhpcy5fdHJhbnNtaXNzaW9uPTAsdGhpcy5zZXRWYWx1ZXModCl9Z2V0IHNoZWVuKCl7cmV0dXJuIHRoaXMuX3NoZWVufXNldCBzaGVlbih0KXt0aGlzLl9zaGVlbj4wIT10PjAmJnRoaXMudmVyc2lvbisrLHRoaXMuX3NoZWVuPXR9Z2V0IGNsZWFyY29hdCgpe3JldHVybiB0aGlzLl9jbGVhcmNvYXR9c2V0IGNsZWFyY29hdCh0KXt0aGlzLl9jbGVhcmNvYXQ+MCE9dD4wJiZ0aGlzLnZlcnNpb24rKyx0aGlzLl9jbGVhcmNvYXQ9dH1nZXQgdHJhbnNtaXNzaW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbWlzc2lvbn1zZXQgdHJhbnNtaXNzaW9uKHQpe3RoaXMuX3RyYW5zbWlzc2lvbj4wIT10PjAmJnRoaXMudmVyc2lvbisrLHRoaXMuX3RyYW5zbWlzc2lvbj10fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQsdGhpcy5jbGVhcmNvYXRNYXA9dC5jbGVhcmNvYXRNYXAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9dC5jbGVhcmNvYXROb3JtYWxNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS5jb3B5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHRoaXMuaW9yPXQuaW9yLHRoaXMuc2hlZW49dC5zaGVlbix0aGlzLnNoZWVuQ29sb3IuY29weSh0LnNoZWVuQ29sb3IpLHRoaXMuc2hlZW5Db2xvck1hcD10LnNoZWVuQ29sb3JNYXAsdGhpcy5zaGVlblJvdWdobmVzcz10LnNoZWVuUm91Z2huZXNzLHRoaXMuc2hlZW5Sb3VnaG5lc3NNYXA9dC5zaGVlblJvdWdobmVzc01hcCx0aGlzLnRyYW5zbWlzc2lvbj10LnRyYW5zbWlzc2lvbix0aGlzLnRyYW5zbWlzc2lvbk1hcD10LnRyYW5zbWlzc2lvbk1hcCx0aGlzLnRoaWNrbmVzcz10LnRoaWNrbmVzcyx0aGlzLnRoaWNrbmVzc01hcD10LnRoaWNrbmVzc01hcCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9dC5hdHRlbnVhdGlvbkRpc3RhbmNlLHRoaXMuYXR0ZW51YXRpb25Db2xvci5jb3B5KHQuYXR0ZW51YXRpb25Db2xvciksdGhpcy5zcGVjdWxhckludGVuc2l0eT10LnNwZWN1bGFySW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9dC5zcGVjdWxhckludGVuc2l0eU1hcCx0aGlzLnNwZWN1bGFyQ29sb3IuY29weSh0LnNwZWN1bGFyQ29sb3IpLHRoaXMuc3BlY3VsYXJDb2xvck1hcD10LnNwZWN1bGFyQ29sb3JNYXAsdGhpc319KS5wcm90b3R5cGUuaXNNZXNoUGh5c2ljYWxNYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyBfY3R7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hQaG9uZ01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBac3QoMTY3NzcyMTUpLHRoaXMuc3BlY3VsYXI9bmV3IFpzdCgxMTE4NDgxKSx0aGlzLnNoaW5pbmVzcz0zMCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBac3QoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgRnN0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5zcGVjdWxhci5jb3B5KHQuc3BlY3VsYXIpLHRoaXMuc2hpbmluZXNzPXQuc2hpbmluZXNzLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319KS5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyBfY3R7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1RPT046IiJ9LHRoaXMudHlwZT0iTWVzaFRvb25NYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWnN0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuZ3JhZGllbnRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgWnN0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IEZzdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmdyYWRpZW50TWFwPXQuZ3JhZGllbnRNYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fSkucHJvdG90eXBlLmlzTWVzaFRvb25NYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyBfY3R7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hOb3JtYWxNYXRlcmlhbCIsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IEZzdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fSkucHJvdG90eXBlLmlzTWVzaE5vcm1hbE1hdGVyaWFsPSEwOyhjbGFzcyBleHRlbmRzIF9jdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaExhbWJlcnRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgWnN0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBac3QoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX0pLnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw9ITA7KGNsYXNzIGV4dGVuZHMgX2N0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMudHlwZT0iTWVzaE1hdGNhcE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBac3QoMTY3NzcyMTUpLHRoaXMubWF0Y2FwPW51bGwsdGhpcy5tYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgRnN0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e01BVENBUDoiIn0sdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWF0Y2FwPXQubWF0Y2FwLHRoaXMubWFwPXQubWFwLHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX0pLnByb3RvdHlwZS5pc01lc2hNYXRjYXBNYXRlcmlhbD0hMDsoY2xhc3MgZXh0ZW5kcyBIdXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVEYXNoZWRNYXRlcmlhbCIsdGhpcy5zY2FsZT0xLHRoaXMuZGFzaFNpemU9Myx0aGlzLmdhcFNpemU9MSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuc2NhbGU9dC5zY2FsZSx0aGlzLmRhc2hTaXplPXQuZGFzaFNpemUsdGhpcy5nYXBTaXplPXQuZ2FwU2l6ZSx0aGlzfX0pLnByb3RvdHlwZS5pc0xpbmVEYXNoZWRNYXRlcmlhbD0hMDtjb25zdCB0Z3Q9e2FycmF5U2xpY2U6ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Z3QuaXNUeXBlZEFycmF5KHQpP25ldyB0LmNvbnN0cnVjdG9yKHQuc3ViYXJyYXkoZSx2b2lkIDAhPT1uP246dC5sZW5ndGgpKTp0LnNsaWNlKGUsbil9LGNvbnZlcnRBcnJheTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIXR8fCFuJiZ0LmNvbnN0cnVjdG9yPT09ZT90OiJudW1iZXIiPT10eXBlb2YgZS5CWVRFU19QRVJfRUxFTUVOVD9uZXcgZSh0KTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KX0saXNUeXBlZEFycmF5OmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX0sZ2V0S2V5ZnJhbWVPcmRlcjpmdW5jdGlvbih0KXtjb25zdCBlPXQubGVuZ3RoLG49bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3QhPT1lOysrdCluW3RdPXQ7cmV0dXJuIG4uc29ydCgoZnVuY3Rpb24gbyhlLG4pe3JldHVybiB0W2VdLXRbbl19KSksbn0sc29ydGVkQXJyYXk6ZnVuY3Rpb24odCxlLG4pe2NvbnN0IG89dC5sZW5ndGgsaT1uZXcgdC5jb25zdHJ1Y3RvcihvKTtmb3IobGV0IGE9MCxyPTA7ciE9PW87KythKXtjb25zdCBvPW5bYV0qZTtmb3IobGV0IG49MDtuIT09ZTsrK24paVtyKytdPXRbbytuXX1yZXR1cm4gaX0sZmxhdHRlbkpTT046ZnVuY3Rpb24odCxlLG4sbyl7bGV0IGk9MSxhPXRbMF07Zm9yKDt2b2lkIDAhPT1hJiZ2b2lkIDA9PT1hW29dOylhPXRbaSsrXTtpZih2b2lkIDA9PT1hKXJldHVybjtsZXQgcj1hW29dO2lmKHZvaWQgMCE9PXIpaWYoQXJyYXkuaXNBcnJheShyKSlkb3tyPWFbb10sdm9pZCAwIT09ciYmKGUucHVzaChhLnRpbWUpLG4ucHVzaC5hcHBseShuLHIpKSxhPXRbaSsrXX13aGlsZSh2b2lkIDAhPT1hKTtlbHNlIGlmKHZvaWQgMCE9PXIudG9BcnJheSlkb3tyPWFbb10sdm9pZCAwIT09ciYmKGUucHVzaChhLnRpbWUpLHIudG9BcnJheShuLG4ubGVuZ3RoKSksYT10W2krK119d2hpbGUodm9pZCAwIT09YSk7ZWxzZSBkb3tyPWFbb10sdm9pZCAwIT09ciYmKGUucHVzaChhLnRpbWUpLG4ucHVzaChyKSksYT10W2krK119d2hpbGUodm9pZCAwIT09YSl9LHN1YmNsaXA6ZnVuY3Rpb24odCxlLG4sbyxpPTMwKXtjb25zdCBhPXQuY2xvbmUoKTthLm5hbWU9ZTtjb25zdCByPVtdO2ZvcihsZXQgdD0wO3Q8YS50cmFja3MubGVuZ3RoOysrdCl7Y29uc3QgZT1hLnRyYWNrc1t0XSxzPWUuZ2V0VmFsdWVTaXplKCksbD1bXSxjPVtdO2ZvcihsZXQgdD0wO3Q8ZS50aW1lcy5sZW5ndGg7Kyt0KXtjb25zdCBhPWUudGltZXNbdF0qaTtpZighKGE8bnx8YT49bykpe2wucHVzaChlLnRpbWVzW3RdKTtmb3IobGV0IG49MDtuPHM7KytuKWMucHVzaChlLnZhbHVlc1t0KnMrbl0pfX0wIT09bC5sZW5ndGgmJihlLnRpbWVzPXRndC5jb252ZXJ0QXJyYXkobCxlLnRpbWVzLmNvbnN0cnVjdG9yKSxlLnZhbHVlcz10Z3QuY29udmVydEFycmF5KGMsZS52YWx1ZXMuY29uc3RydWN0b3IpLHIucHVzaChlKSl9YS50cmFja3M9cjtsZXQgcz0xLzA7Zm9yKGxldCB0PTA7dDxhLnRyYWNrcy5sZW5ndGg7Kyt0KXM+YS50cmFja3NbdF0udGltZXNbMF0mJihzPWEudHJhY2tzW3RdLnRpbWVzWzBdKTtmb3IobGV0IHQ9MDt0PGEudHJhY2tzLmxlbmd0aDsrK3QpYS50cmFja3NbdF0uc2hpZnQoLTEqcyk7cmV0dXJuIGEucmVzZXREdXJhdGlvbigpLGF9LG1ha2VDbGlwQWRkaXRpdmU6ZnVuY3Rpb24odCxlPTAsbj10LG89MzApe288PTAmJihvPTMwKTtjb25zdCBpPW4udHJhY2tzLmxlbmd0aCxhPWUvbztmb3IobGV0IGU9MDtlPGk7KytlKXtjb25zdCBvPW4udHJhY2tzW2VdLGk9by5WYWx1ZVR5cGVOYW1lO2lmKCJib29sIj09PWl8fCJzdHJpbmciPT09aSljb250aW51ZTtjb25zdCByPXQudHJhY2tzLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1vLm5hbWUmJnQuVmFsdWVUeXBlTmFtZT09PWl9KSk7aWYodm9pZCAwPT09ciljb250aW51ZTtsZXQgcz0wO2NvbnN0IGw9by5nZXRWYWx1ZVNpemUoKTtvLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYocz1sLzMpO2xldCBjPTA7Y29uc3QgZD1yLmdldFZhbHVlU2l6ZSgpO3IuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihjPWQvMyk7Y29uc3QgcD1vLnRpbWVzLmxlbmd0aC0xO2xldCBtO2lmKGE8PW8udGltZXNbMF0pe209dGd0LmFycmF5U2xpY2Uoby52YWx1ZXMscyxsLXMpfWVsc2UgaWYoYT49by50aW1lc1twXSl7Y29uc3QgdD1wKmwrczttPXRndC5hcnJheVNsaWNlKG8udmFsdWVzLHQsdCtsLXMpfWVsc2V7Y29uc3QgdD1vLmNyZWF0ZUludGVycG9sYW50KCksZT1zLG49bC1zO3QuZXZhbHVhdGUoYSksbT10Z3QuYXJyYXlTbGljZSh0LnJlc3VsdEJ1ZmZlcixlLG4pfWlmKCJxdWF0ZXJuaW9uIj09PWkpeyhuZXcgb2x0KS5mcm9tQXJyYXkobSkubm9ybWFsaXplKCkuY29uanVnYXRlKCkudG9BcnJheShtKX1jb25zdCB1PXIudGltZXMubGVuZ3RoO2ZvcihsZXQgdD0wO3Q8dTsrK3Qpe2NvbnN0IGU9dCpkK2M7aWYoInF1YXRlcm5pb24iPT09aSlvbHQubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQoci52YWx1ZXMsZSxtLDAsci52YWx1ZXMsZSk7ZWxzZXtjb25zdCB0PWQtMipjO2ZvcihsZXQgbj0wO248dDsrK24pci52YWx1ZXNbZStuXS09bVtuXX19fXJldHVybiB0LmJsZW5kTW9kZT0yNTAxLHR9fTtjbGFzcyBlZ3R7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM9dCx0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMucmVzdWx0QnVmZmVyPXZvaWQgMCE9PW8/bzpuZXcgZS5jb25zdHJ1Y3RvcihuKSx0aGlzLnNhbXBsZVZhbHVlcz1lLHRoaXMudmFsdWVTaXplPW4sdGhpcy5zZXR0aW5ncz1udWxsLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17fX1ldmFsdWF0ZSh0KXtjb25zdCBlPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zO2xldCBuPXRoaXMuX2NhY2hlZEluZGV4LG89ZVtuXSxpPWVbbi0xXTt0OntlOntsZXQgYTtuOntvOmlmKCEodDxvKSl7Zm9yKGxldCBhPW4rMjs7KXtpZih2b2lkIDA9PT1vKXtpZih0PGkpYnJlYWsgbztyZXR1cm4gbj1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuYWZ0ZXJFbmRfKG4tMSx0LGkpfWlmKG49PT1hKWJyZWFrO2lmKGk9byxvPWVbKytuXSx0PG8pYnJlYWsgZX1hPWUubGVuZ3RoO2JyZWFrIG59aWYodD49aSlicmVhayB0O3tjb25zdCByPWVbMV07dDxyJiYobj0yLGk9cik7Zm9yKGxldCBhPW4tMjs7KXtpZih2b2lkIDA9PT1pKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxvKTtpZihuPT09YSlicmVhaztpZihvPWksaT1lWy0tbi0xXSx0Pj1pKWJyZWFrIGV9YT1uLG49MH19Zm9yKDtuPGE7KXtjb25zdCBvPW4rYT4+PjE7dDxlW29dP2E9bzpuPW8rMX1pZihvPWVbbl0saT1lW24tMV0sdm9pZCAwPT09aSlyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsbyk7aWYodm9pZCAwPT09bylyZXR1cm4gbj1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuYWZ0ZXJFbmRfKG4tMSxpLHQpfXRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5pbnRlcnZhbENoYW5nZWRfKG4saSxvKX1yZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZV8obixpLHQsbyl9Z2V0U2V0dGluZ3NfKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3N8fHRoaXMuRGVmYXVsdFNldHRpbmdzX31jb3B5U2FtcGxlVmFsdWVfKHQpe2NvbnN0IGU9dGhpcy5yZXN1bHRCdWZmZXIsbj10aGlzLnNhbXBsZVZhbHVlcyxvPXRoaXMudmFsdWVTaXplLGk9dCpvO2ZvcihsZXQgdD0wO3QhPT1vOysrdCllW3RdPW5baSt0XTtyZXR1cm4gZX1pbnRlcnBvbGF0ZV8oKXt0aHJvdyBuZXcgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIil9aW50ZXJ2YWxDaGFuZ2VkXygpe319ZWd0LnByb3RvdHlwZS5iZWZvcmVTdGFydF89ZWd0LnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfLGVndC5wcm90b3R5cGUuYWZ0ZXJFbmRfPWVndC5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXztjbGFzcyBuZ3QgZXh0ZW5kcyBlZ3R7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyksdGhpcy5fd2VpZ2h0UHJldj0tMCx0aGlzLl9vZmZzZXRQcmV2PS0wLHRoaXMuX3dlaWdodE5leHQ9LTAsdGhpcy5fb2Zmc2V0TmV4dD0tMCx0aGlzLkRlZmF1bHRTZXR0aW5nc189e2VuZGluZ1N0YXJ0OnlzdCxlbmRpbmdFbmQ6eXN0fX1pbnRlcnZhbENoYW5nZWRfKHQsZSxuKXtjb25zdCBvPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zO2xldCBpPXQtMixhPXQrMSxyPW9baV0scz1vW2FdO2lmKHZvaWQgMD09PXIpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nU3RhcnQpe2Nhc2UgX3N0Omk9dCxyPTIqZS1uO2JyZWFrO2Nhc2UgQ3N0Omk9by5sZW5ndGgtMixyPWUrb1tpXS1vW2krMV07YnJlYWs7ZGVmYXVsdDppPXQscj1ufWlmKHZvaWQgMD09PXMpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nRW5kKXtjYXNlIF9zdDphPXQscz0yKm4tZTticmVhaztjYXNlIENzdDphPTEscz1uK29bMV0tb1swXTticmVhaztkZWZhdWx0OmE9dC0xLHM9ZX1jb25zdCBsPS41KihuLWUpLGM9dGhpcy52YWx1ZVNpemU7dGhpcy5fd2VpZ2h0UHJldj1sLyhlLXIpLHRoaXMuX3dlaWdodE5leHQ9bC8ocy1uKSx0aGlzLl9vZmZzZXRQcmV2PWkqYyx0aGlzLl9vZmZzZXROZXh0PWEqY31pbnRlcnBvbGF0ZV8odCxlLG4sbyl7Y29uc3QgaT10aGlzLnJlc3VsdEJ1ZmZlcixhPXRoaXMuc2FtcGxlVmFsdWVzLHI9dGhpcy52YWx1ZVNpemUscz10KnIsbD1zLXIsYz10aGlzLl9vZmZzZXRQcmV2LGQ9dGhpcy5fb2Zmc2V0TmV4dCxwPXRoaXMuX3dlaWdodFByZXYsbT10aGlzLl93ZWlnaHROZXh0LHU9KG4tZSkvKG8tZSksZj11KnUsZz1mKnUsaD0tcCpnKzIqcCpmLXAqdSxiPSgxK3ApKmcrKC0xLjUtMipwKSpmKygtLjUrcCkqdSsxLHk9KC0xLW0pKmcrKDEuNSttKSpmKy41KnUsXz1tKmctbSpmO2ZvcihsZXQgdD0wO3QhPT1yOysrdClpW3RdPWgqYVtjK3RdK2IqYVtsK3RdK3kqYVtzK3RdK18qYVtkK3RdO3JldHVybiBpfX1jbGFzcyBvZ3QgZXh0ZW5kcyBlZ3R7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyl9aW50ZXJwb2xhdGVfKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5yZXN1bHRCdWZmZXIsYT10aGlzLnNhbXBsZVZhbHVlcyxyPXRoaXMudmFsdWVTaXplLHM9dCpyLGw9cy1yLGM9KG4tZSkvKG8tZSksZD0xLWM7Zm9yKGxldCB0PTA7dCE9PXI7Kyt0KWlbdF09YVtsK3RdKmQrYVtzK3RdKmM7cmV0dXJuIGl9fWNsYXNzIGlndCBleHRlbmRzIGVndHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUsbixvKX1pbnRlcnBvbGF0ZV8odCl7cmV0dXJuIHRoaXMuY29weVNhbXBsZVZhbHVlXyh0LTEpfX1jbGFzcyBhZ3R7Y29uc3RydWN0b3IodCxlLG4sbyl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkIik7aWYodm9pZCAwPT09ZXx8MD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogbm8ga2V5ZnJhbWVzIGluIHRyYWNrIG5hbWVkICIrdCk7dGhpcy5uYW1lPXQsdGhpcy50aW1lcz10Z3QuY29udmVydEFycmF5KGUsdGhpcy5UaW1lQnVmZmVyVHlwZSksdGhpcy52YWx1ZXM9dGd0LmNvbnZlcnRBcnJheShuLHRoaXMuVmFsdWVCdWZmZXJUeXBlKSx0aGlzLnNldEludGVycG9sYXRpb24ob3x8dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil9c3RhdGljIHRvSlNPTih0KXtjb25zdCBlPXQuY29uc3RydWN0b3I7bGV0IG47aWYoZS50b0pTT04hPT10aGlzLnRvSlNPTiluPWUudG9KU09OKHQpO2Vsc2V7bj17bmFtZTp0Lm5hbWUsdGltZXM6dGd0LmNvbnZlcnRBcnJheSh0LnRpbWVzLEFycmF5KSx2YWx1ZXM6dGd0LmNvbnZlcnRBcnJheSh0LnZhbHVlcyxBcnJheSl9O2NvbnN0IGU9dC5nZXRJbnRlcnBvbGF0aW9uKCk7ZSE9PXQuRGVmYXVsdEludGVycG9sYXRpb24mJihuLmludGVycG9sYXRpb249ZSl9cmV0dXJuIG4udHlwZT10LlZhbHVlVHlwZU5hbWUsbn1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZSh0KXtyZXR1cm4gbmV3IGlndCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyKHQpe3JldHVybiBuZXcgb2d0KHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGgodCl7cmV0dXJuIG5ldyBuZ3QodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfXNldEludGVycG9sYXRpb24odCl7bGV0IGU7c3dpdGNoKHQpe2Nhc2UgZ3N0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTticmVhaztjYXNlIGhzdDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyO2JyZWFrO2Nhc2UgYnN0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGh9aWYodm9pZCAwPT09ZSl7Y29uc3QgZT0idW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgIit0aGlzLlZhbHVlVHlwZU5hbWUrIiBrZXlmcmFtZSB0cmFjayBuYW1lZCAiK3RoaXMubmFtZTtpZih2b2lkIDA9PT10aGlzLmNyZWF0ZUludGVycG9sYW50KXtpZih0PT09dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil0aHJvdyBuZXcgRXJyb3IoZSk7dGhpcy5zZXRJbnRlcnBvbGF0aW9uKHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLktleWZyYW1lVHJhY2s6IixlKSx0aGlzfXJldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYW50PWUsdGhpc31nZXRJbnRlcnBvbGF0aW9uKCl7c3dpdGNoKHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQpe2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTpyZXR1cm4gZ3N0O2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6cmV0dXJuIGhzdDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnJldHVybiBic3R9fWdldFZhbHVlU2l6ZSgpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGgvdGhpcy50aW1lcy5sZW5ndGh9c2hpZnQodCl7aWYoMCE9PXQpe2NvbnN0IGU9dGhpcy50aW1lcztmb3IobGV0IG49MCxvPWUubGVuZ3RoO24hPT1vOysrbillW25dKz10fXJldHVybiB0aGlzfXNjYWxlKHQpe2lmKDEhPT10KXtjb25zdCBlPXRoaXMudGltZXM7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuIT09bzsrK24pZVtuXSo9dH1yZXR1cm4gdGhpc310cmltKHQsZSl7Y29uc3Qgbj10aGlzLnRpbWVzLG89bi5sZW5ndGg7bGV0IGk9MCxhPW8tMTtmb3IoO2khPT1vJiZuW2ldPHQ7KSsraTtmb3IoOy0xIT09YSYmblthXT5lOyktLWE7aWYoKythLDAhPT1pfHxhIT09byl7aT49YSYmKGE9TWF0aC5tYXgoYSwxKSxpPWEtMSk7Y29uc3QgdD10aGlzLmdldFZhbHVlU2l6ZSgpO3RoaXMudGltZXM9dGd0LmFycmF5U2xpY2UobixpLGEpLHRoaXMudmFsdWVzPXRndC5hcnJheVNsaWNlKHRoaXMudmFsdWVzLGkqdCxhKnQpfXJldHVybiB0aGlzfXZhbGlkYXRlKCl7bGV0IHQ9ITA7Y29uc3QgZT10aGlzLmdldFZhbHVlU2l6ZSgpO2UtTWF0aC5mbG9vcihlKSE9MCYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IEludmFsaWQgdmFsdWUgc2l6ZSBpbiB0cmFjay4iLHRoaXMpLHQ9ITEpO2NvbnN0IG49dGhpcy50aW1lcyxvPXRoaXMudmFsdWVzLGk9bi5sZW5ndGg7MD09PWkmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUcmFjayBpcyBlbXB0eS4iLHRoaXMpLHQ9ITEpO2xldCBhPW51bGw7Zm9yKGxldCBlPTA7ZSE9PWk7ZSsrKXtjb25zdCBvPW5bZV07aWYoIm51bWJlciI9PXR5cGVvZiBvJiZpc05hTihvKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLGUsbyksdD0hMTticmVha31pZihudWxsIT09YSYmYT5vKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBPdXQgb2Ygb3JkZXIga2V5cy4iLHRoaXMsZSxvLGEpLHQ9ITE7YnJlYWt9YT1vfWlmKHZvaWQgMCE9PW8mJnRndC5pc1R5cGVkQXJyYXkobykpZm9yKGxldCBlPTAsbj1vLmxlbmd0aDtlIT09bjsrK2Upe2NvbnN0IG49b1tlXTtpZihpc05hTihuKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxlLG4pLHQ9ITE7YnJlYWt9fXJldHVybiB0fW9wdGltaXplKCl7Y29uc3QgdD10Z3QuYXJyYXlTbGljZSh0aGlzLnRpbWVzKSxlPXRndC5hcnJheVNsaWNlKHRoaXMudmFsdWVzKSxuPXRoaXMuZ2V0VmFsdWVTaXplKCksbz10aGlzLmdldEludGVycG9sYXRpb24oKT09PWJzdCxpPXQubGVuZ3RoLTE7bGV0IGE9MTtmb3IobGV0IHI9MTtyPGk7KytyKXtsZXQgaT0hMTtjb25zdCBzPXRbcl07aWYocyE9PXRbcisxXSYmKDEhPT1yfHxzIT09dFswXSkpaWYobylpPSEwO2Vsc2V7Y29uc3QgdD1yKm4sbz10LW4sYT10K247Zm9yKGxldCByPTA7ciE9PW47KytyKXtjb25zdCBuPWVbdCtyXTtpZihuIT09ZVtvK3JdfHxuIT09ZVthK3JdKXtpPSEwO2JyZWFrfX19aWYoaSl7aWYociE9PWEpe3RbYV09dFtyXTtjb25zdCBvPXIqbixpPWEqbjtmb3IobGV0IHQ9MDt0IT09bjsrK3QpZVtpK3RdPWVbbyt0XX0rK2F9fWlmKGk+MCl7dFthXT10W2ldO2ZvcihsZXQgdD1pKm4sbz1hKm4scj0wO3IhPT1uOysrcillW28rcl09ZVt0K3JdOysrYX1yZXR1cm4gYSE9PXQubGVuZ3RoPyh0aGlzLnRpbWVzPXRndC5hcnJheVNsaWNlKHQsMCxhKSx0aGlzLnZhbHVlcz10Z3QuYXJyYXlTbGljZShlLDAsYSpuKSk6KHRoaXMudGltZXM9dCx0aGlzLnZhbHVlcz1lKSx0aGlzfWNsb25lKCl7Y29uc3QgdD10Z3QuYXJyYXlTbGljZSh0aGlzLnRpbWVzLDApLGU9dGd0LmFycmF5U2xpY2UodGhpcy52YWx1ZXMsMCksbj1uZXcoMCx0aGlzLmNvbnN0cnVjdG9yKSh0aGlzLm5hbWUsdCxlKTtyZXR1cm4gbi5jcmVhdGVJbnRlcnBvbGFudD10aGlzLmNyZWF0ZUludGVycG9sYW50LG59fWFndC5wcm90b3R5cGUuVGltZUJ1ZmZlclR5cGU9RmxvYXQzMkFycmF5LGFndC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUZsb2F0MzJBcnJheSxhZ3QucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPWhzdDtjbGFzcyByZ3QgZXh0ZW5kcyBhZ3R7fXJndC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0iYm9vbCIscmd0LnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9QXJyYXkscmd0LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1nc3Qscmd0LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI9dm9pZCAwLHJndC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyBzZ3QgZXh0ZW5kcyBhZ3R7fXNndC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0iY29sb3IiO2NsYXNzIGxndCBleHRlbmRzIGFndHt9bGd0LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJudW1iZXIiO2NsYXNzIGNndCBleHRlbmRzIGVndHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUsbixvKX1pbnRlcnBvbGF0ZV8odCxlLG4sbyl7Y29uc3QgaT10aGlzLnJlc3VsdEJ1ZmZlcixhPXRoaXMuc2FtcGxlVmFsdWVzLHI9dGhpcy52YWx1ZVNpemUscz0obi1lKS8oby1lKTtsZXQgbD10KnI7Zm9yKGxldCB0PWwrcjtsIT09dDtsKz00KW9sdC5zbGVycEZsYXQoaSwwLGEsbC1yLGEsbCxzKTtyZXR1cm4gaX19Y2xhc3MgZGd0IGV4dGVuZHMgYWd0e0ludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IGNndCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9fWRndC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0icXVhdGVybmlvbiIsZGd0LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1oc3QsZGd0LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIHBndCBleHRlbmRzIGFndHt9cGd0LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJzdHJpbmciLHBndC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5LHBndC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249Z3N0LHBndC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMCxwZ3QucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3MgbWd0IGV4dGVuZHMgYWd0e31tZ3QucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InZlY3RvciI7Y2xhc3MgdWd0e2NvbnN0cnVjdG9yKHQsZT0tMSxuLG89MjUwMCl7dGhpcy5uYW1lPXQsdGhpcy50cmFja3M9bix0aGlzLmR1cmF0aW9uPWUsdGhpcy5ibGVuZE1vZGU9byx0aGlzLnV1aWQ9VHN0KCksdGhpcy5kdXJhdGlvbjwwJiZ0aGlzLnJlc2V0RHVyYXRpb24oKX1zdGF0aWMgcGFyc2UodCl7Y29uc3QgZT1bXSxuPXQudHJhY2tzLG89MS8odC5mcHN8fDEpO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dCE9PWk7Kyt0KWUucHVzaChmZ3Qoblt0XSkuc2NhbGUobykpO2NvbnN0IGk9bmV3IHRoaXModC5uYW1lLHQuZHVyYXRpb24sZSx0LmJsZW5kTW9kZSk7cmV0dXJuIGkudXVpZD10LnV1aWQsaX1zdGF0aWMgdG9KU09OKHQpe2NvbnN0IGU9W10sbj10LnRyYWNrcyxvPXtuYW1lOnQubmFtZSxkdXJhdGlvbjp0LmR1cmF0aW9uLHRyYWNrczplLHV1aWQ6dC51dWlkLGJsZW5kTW9kZTp0LmJsZW5kTW9kZX07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0IT09bzsrK3QpZS5wdXNoKGFndC50b0pTT04oblt0XSkpO3JldHVybiBvfXN0YXRpYyBDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LGUsbixvKXtjb25zdCBpPWUubGVuZ3RoLGE9W107Zm9yKGxldCB0PTA7dDxpO3QrKyl7bGV0IHI9W10scz1bXTtyLnB1c2goKHQraS0xKSVpLHQsKHQrMSklaSkscy5wdXNoKDAsMSwwKTtjb25zdCBsPXRndC5nZXRLZXlmcmFtZU9yZGVyKHIpO3I9dGd0LnNvcnRlZEFycmF5KHIsMSxsKSxzPXRndC5zb3J0ZWRBcnJheShzLDEsbCksb3x8MCE9PXJbMF18fChyLnB1c2goaSkscy5wdXNoKHNbMF0pKSxhLnB1c2gobmV3IGxndCgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1siK2VbdF0ubmFtZSsiXSIscixzKS5zY2FsZSgxL24pKX1yZXR1cm4gbmV3IHRoaXModCwtMSxhKX1zdGF0aWMgZmluZEJ5TmFtZSh0LGUpe2xldCBuPXQ7aWYoIUFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGU9dDtuPWUuZ2VvbWV0cnkmJmUuZ2VvbWV0cnkuYW5pbWF0aW9uc3x8ZS5hbmltYXRpb25zfWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKWlmKG5bdF0ubmFtZT09PWUpcmV0dXJuIG5bdF07cmV0dXJuIG51bGx9c3RhdGljIENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzKHQsZSxuKXtjb25zdCBvPXt9LGk9L14oW1x3LV0qPykoW1xkXSspJC87Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0sYT1uLm5hbWUubWF0Y2goaSk7aWYoYSYmYS5sZW5ndGg+MSl7Y29uc3QgdD1hWzFdO2xldCBlPW9bdF07ZXx8KG9bdF09ZT1bXSksZS5wdXNoKG4pfX1jb25zdCBhPVtdO2Zvcihjb25zdCB0IGluIG8pYS5wdXNoKHRoaXMuQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UodCxvW3RdLGUsbikpO3JldHVybiBhfXN0YXRpYyBwYXJzZUFuaW1hdGlvbih0LGUpe2lmKCF0KXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5BbmltYXRpb25DbGlwOiBObyBhbmltYXRpb24gaW4gSlNPTkxvYWRlciBkYXRhLiIpLG51bGw7Y29uc3Qgbj1mdW5jdGlvbih0LGUsbixvLGkpe2lmKDAhPT1uLmxlbmd0aCl7Y29uc3QgYT1bXSxyPVtdO3RndC5mbGF0dGVuSlNPTihuLGEscixvKSwwIT09YS5sZW5ndGgmJmkucHVzaChuZXcgdChlLGEscikpfX0sbz1bXSxpPXQubmFtZXx8ImRlZmF1bHQiLGE9dC5mcHN8fDMwLHI9dC5ibGVuZE1vZGU7bGV0IHM9dC5sZW5ndGh8fC0xO2NvbnN0IGw9dC5oaWVyYXJjaHl8fFtdO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCsrKXtjb25zdCBpPWxbdF0ua2V5cztpZihpJiYwIT09aS5sZW5ndGgpaWYoaVswXS5tb3JwaFRhcmdldHMpe2NvbnN0IHQ9e307bGV0IGU7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKylpZihpW2VdLm1vcnBoVGFyZ2V0cylmb3IobGV0IG49MDtuPGlbZV0ubW9ycGhUYXJnZXRzLmxlbmd0aDtuKyspdFtpW2VdLm1vcnBoVGFyZ2V0c1tuXV09LTE7Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgdD1bXSxhPVtdO2ZvcihsZXQgbz0wO28hPT1pW2VdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7KytvKXtjb25zdCBvPWlbZV07dC5wdXNoKG8udGltZSksYS5wdXNoKG8ubW9ycGhUYXJnZXQ9PT1uPzE6MCl9by5wdXNoKG5ldyBsZ3QoIi5tb3JwaFRhcmdldEluZmx1ZW5jZVsiK24rIl0iLHQsYSkpfXM9dC5sZW5ndGgqKGF8fDEpfWVsc2V7Y29uc3QgYT0iLmJvbmVzWyIrZVt0XS5uYW1lKyJdIjtuKG1ndCxhKyIucG9zaXRpb24iLGksInBvcyIsbyksbihkZ3QsYSsiLnF1YXRlcm5pb24iLGksInJvdCIsbyksbihtZ3QsYSsiLnNjYWxlIixpLCJzY2wiLG8pfX1pZigwPT09by5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyB0aGlzKGkscyxvLHIpfXJlc2V0RHVyYXRpb24oKXtsZXQgdD0wO2ZvcihsZXQgZT0wLG49dGhpcy50cmFja3MubGVuZ3RoO2UhPT1uOysrZSl7Y29uc3Qgbj10aGlzLnRyYWNrc1tlXTt0PU1hdGgubWF4KHQsbi50aW1lc1tuLnRpbWVzLmxlbmd0aC0xXSl9cmV0dXJuIHRoaXMuZHVyYXRpb249dCx0aGlzfXRyaW0oKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0udHJpbSgwLHRoaXMuZHVyYXRpb24pO3JldHVybiB0aGlzfXZhbGlkYXRlKCl7bGV0IHQ9ITA7Zm9yKGxldCBlPTA7ZTx0aGlzLnRyYWNrcy5sZW5ndGg7ZSsrKXQ9dCYmdGhpcy50cmFja3NbZV0udmFsaWRhdGUoKTtyZXR1cm4gdH1vcHRpbWl6ZSgpe2ZvcihsZXQgdD0wO3Q8dGhpcy50cmFja3MubGVuZ3RoO3QrKyl0aGlzLnRyYWNrc1t0XS5vcHRpbWl6ZSgpO3JldHVybiB0aGlzfWNsb25lKCl7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMudHJhY2tzLmxlbmd0aDtlKyspdC5wdXNoKHRoaXMudHJhY2tzW2VdLmNsb25lKCkpO3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLm5hbWUsdGhpcy5kdXJhdGlvbix0LHRoaXMuYmxlbmRNb2RlKX10b0pTT04oKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci50b0pTT04odGhpcyl9fWZ1bmN0aW9uIGZndCh0KXtpZih2b2lkIDA9PT10LnR5cGUpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiB0cmFjayB0eXBlIHVuZGVmaW5lZCwgY2FuIG5vdCBwYXJzZSIpO2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7c3dpdGNoKHQudG9Mb3dlckNhc2UoKSl7Y2FzZSJzY2FsYXIiOmNhc2UiZG91YmxlIjpjYXNlImZsb2F0IjpjYXNlIm51bWJlciI6Y2FzZSJpbnRlZ2VyIjpyZXR1cm4gbGd0O2Nhc2UidmVjdG9yIjpjYXNlInZlY3RvcjIiOmNhc2UidmVjdG9yMyI6Y2FzZSJ2ZWN0b3I0IjpyZXR1cm4gbWd0O2Nhc2UiY29sb3IiOnJldHVybiBzZ3Q7Y2FzZSJxdWF0ZXJuaW9uIjpyZXR1cm4gZGd0O2Nhc2UiYm9vbCI6Y2FzZSJib29sZWFuIjpyZXR1cm4gcmd0O2Nhc2Uic3RyaW5nIjpyZXR1cm4gcGd0fXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVW5zdXBwb3J0ZWQgdHlwZU5hbWU6ICIrdCl9KSh0LnR5cGUpO2lmKHZvaWQgMD09PXQudGltZXMpe2NvbnN0IGU9W10sbj1bXTt0Z3QuZmxhdHRlbkpTT04odC5rZXlzLGUsbiwidmFsdWUiKSx0LnRpbWVzPWUsdC52YWx1ZXM9bn1yZXR1cm4gdm9pZCAwIT09ZS5wYXJzZT9lLnBhcnNlKHQpOm5ldyBlKHQubmFtZSx0LnRpbWVzLHQudmFsdWVzLHQuaW50ZXJwb2xhdGlvbil9Y29uc3QgZ2d0PXtlbmFibGVkOiExLGZpbGVzOnt9LGFkZDpmdW5jdGlvbih0LGUpeyExIT09dGhpcy5lbmFibGVkJiYodGhpcy5maWxlc1t0XT1lKX0sZ2V0OmZ1bmN0aW9uKHQpe2lmKCExIT09dGhpcy5lbmFibGVkKXJldHVybiB0aGlzLmZpbGVzW3RdfSxyZW1vdmU6ZnVuY3Rpb24odCl7ZGVsZXRlIHRoaXMuZmlsZXNbdF19LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5maWxlcz17fX19O2NvbnN0IGhndD1uZXcgY2xhc3N7Y29uc3RydWN0b3IodCxlLG4pe2NvbnN0IG89dGhpcztsZXQgaSxhPSExLHI9MCxzPTA7Y29uc3QgbD1bXTt0aGlzLm9uU3RhcnQ9dm9pZCAwLHRoaXMub25Mb2FkPXQsdGhpcy5vblByb2dyZXNzPWUsdGhpcy5vbkVycm9yPW4sdGhpcy5pdGVtU3RhcnQ9ZnVuY3Rpb24odCl7cysrLCExPT09YSYmdm9pZCAwIT09by5vblN0YXJ0JiZvLm9uU3RhcnQodCxyLHMpLGE9ITB9LHRoaXMuaXRlbUVuZD1mdW5jdGlvbih0KXtyKyssdm9pZCAwIT09by5vblByb2dyZXNzJiZvLm9uUHJvZ3Jlc3ModCxyLHMpLHI9PT1zJiYoYT0hMSx2b2lkIDAhPT1vLm9uTG9hZCYmby5vbkxvYWQoKSl9LHRoaXMuaXRlbUVycm9yPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PW8ub25FcnJvciYmby5vbkVycm9yKHQpfSx0aGlzLnJlc29sdmVVUkw9ZnVuY3Rpb24odCl7cmV0dXJuIGk/aSh0KTp0fSx0aGlzLnNldFVSTE1vZGlmaWVyPWZ1bmN0aW9uKHQpe3JldHVybiBpPXQsdGhpc30sdGhpcy5hZGRIYW5kbGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGwucHVzaCh0LGUpLHRoaXN9LHRoaXMucmVtb3ZlSGFuZGxlcj1mdW5jdGlvbih0KXtjb25zdCBlPWwuaW5kZXhPZih0KTtyZXR1cm4tMSE9PWUmJmwuc3BsaWNlKGUsMiksdGhpc30sdGhpcy5nZXRIYW5kbGVyPWZ1bmN0aW9uKHQpe2ZvcihsZXQgZT0wLG49bC5sZW5ndGg7ZTxuO2UrPTIpe2NvbnN0IG49bFtlXSxvPWxbZSsxXTtpZihuLmdsb2JhbCYmKG4ubGFzdEluZGV4PTApLG4udGVzdCh0KSlyZXR1cm4gb31yZXR1cm4gbnVsbH19fTtjbGFzcyBiZ3R7Y29uc3RydWN0b3IodCl7dGhpcy5tYW5hZ2VyPXZvaWQgMCE9PXQ/dDpoZ3QsdGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnBhdGg9IiIsdGhpcy5yZXNvdXJjZVBhdGg9IiIsdGhpcy5yZXF1ZXN0SGVhZGVyPXt9fWxvYWQoKXt9bG9hZEFzeW5jKHQsZSl7Y29uc3Qgbj10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyxpKXtuLmxvYWQodCxvLGUsaSl9KSl9cGFyc2UoKXt9c2V0Q3Jvc3NPcmlnaW4odCl7cmV0dXJuIHRoaXMuY3Jvc3NPcmlnaW49dCx0aGlzfXNldFdpdGhDcmVkZW50aWFscyh0KXtyZXR1cm4gdGhpcy53aXRoQ3JlZGVudGlhbHM9dCx0aGlzfXNldFBhdGgodCl7cmV0dXJuIHRoaXMucGF0aD10LHRoaXN9c2V0UmVzb3VyY2VQYXRoKHQpe3JldHVybiB0aGlzLnJlc291cmNlUGF0aD10LHRoaXN9c2V0UmVxdWVzdEhlYWRlcih0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyPXQsdGhpc319Y29uc3QgeWd0PXt9O2NsYXNzIF9ndCBleHRlbmRzIGJndHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLG8pe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IGk9Z2d0LmdldCh0KTtpZih2b2lkIDAhPT1pKXJldHVybiB0aGlzLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKCgpPT57ZSYmZShpKSx0aGlzLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApLGk7aWYodm9pZCAwIT09eWd0W3RdKXJldHVybiB2b2lkIHlndFt0XS5wdXNoKHtvbkxvYWQ6ZSxvblByb2dyZXNzOm4sb25FcnJvcjpvfSk7eWd0W3RdPVtdLHlndFt0XS5wdXNoKHtvbkxvYWQ6ZSxvblByb2dyZXNzOm4sb25FcnJvcjpvfSk7Y29uc3QgYT1uZXcgUmVxdWVzdCh0LHtoZWFkZXJzOm5ldyBIZWFkZXJzKHRoaXMucmVxdWVzdEhlYWRlciksY3JlZGVudGlhbHM6dGhpcy53aXRoQ3JlZGVudGlhbHM/ImluY2x1ZGUiOiJzYW1lLW9yaWdpbiJ9KSxyPXRoaXMubWltZVR5cGUscz10aGlzLnJlc3BvbnNlVHlwZTtmZXRjaChhKS50aGVuKChlPT57aWYoMjAwPT09ZS5zdGF0dXN8fDA9PT1lLnN0YXR1cyl7aWYoMD09PWUuc3RhdHVzJiZjb25zb2xlLndhcm4oIlRIUkVFLkZpbGVMb2FkZXI6IEhUVFAgU3RhdHVzIDAgcmVjZWl2ZWQuIiksInVuZGVmaW5lZCI9PXR5cGVvZiBSZWFkYWJsZVN0cmVhbXx8dm9pZCAwPT09ZS5ib2R5LmdldFJlYWRlcilyZXR1cm4gZTtjb25zdCBuPXlndFt0XSxvPWUuYm9keS5nZXRSZWFkZXIoKSxpPWUuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIiksYT1pP3BhcnNlSW50KGkpOjAscj0wIT09YTtsZXQgcz0wO2NvbnN0IGw9bmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydCh0KXshKGZ1bmN0aW9uIGUoKXtvLnJlYWQoKS50aGVuKCgoe2RvbmU6byx2YWx1ZTppfSk9PntpZihvKXQuY2xvc2UoKTtlbHNle3MrPWkuYnl0ZUxlbmd0aDtjb25zdCBvPW5ldyBQcm9ncmVzc0V2ZW50KCJwcm9ncmVzcyIse2xlbmd0aENvbXB1dGFibGU6cixsb2FkZWQ6cyx0b3RhbDphfSk7Zm9yKGxldCB0PTAsZT1uLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW5bdF07ZS5vblByb2dyZXNzJiZlLm9uUHJvZ3Jlc3Mobyl9dC5lbnF1ZXVlKGkpLGUoKX19KSl9KSgpfX0pO3JldHVybiBuZXcgUmVzcG9uc2UobCl9dGhyb3cgRXJyb3IoYGZldGNoIGZvciAiJHtlLnVybH0iIHJlc3BvbmRlZCB3aXRoICR7ZS5zdGF0dXN9OiAke2Uuc3RhdHVzVGV4dH1gKX0pKS50aGVuKCh0PT57c3dpdGNoKHMpe2Nhc2UiYXJyYXlidWZmZXIiOnJldHVybiB0LmFycmF5QnVmZmVyKCk7Y2FzZSJibG9iIjpyZXR1cm4gdC5ibG9iKCk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIHQudGV4dCgpLnRoZW4oKHQ9PihuZXcgRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcodCxyKSkpO2Nhc2UianNvbiI6cmV0dXJuIHQuanNvbigpO2RlZmF1bHQ6aWYodm9pZCAwPT09cilyZXR1cm4gdC50ZXh0KCk7e2NvbnN0IGU9L2NoYXJzZXQ9Ij8oW147IlxzXSopIj8vaS5leGVjKHIpLG49ZSYmZVsxXT9lWzFdLnRvTG93ZXJDYXNlKCk6dm9pZCAwLG89bmV3IFRleHREZWNvZGVyKG4pO3JldHVybiB0LmFycmF5QnVmZmVyKCkudGhlbigodD0+by5kZWNvZGUodCkpKX19fSkpLnRoZW4oKGU9PntnZ3QuYWRkKHQsZSk7Y29uc3Qgbj15Z3RbdF07ZGVsZXRlIHlndFt0XTtmb3IobGV0IHQ9MCxvPW4ubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG89blt0XTtvLm9uTG9hZCYmby5vbkxvYWQoZSl9fSkpLmNhdGNoKChlPT57Y29uc3Qgbj15Z3RbdF07aWYodm9pZCAwPT09bil0aHJvdyB0aGlzLm1hbmFnZXIuaXRlbUVycm9yKHQpLGU7ZGVsZXRlIHlndFt0XTtmb3IobGV0IHQ9MCxvPW4ubGVuZ3RoO3Q8bzt0Kyspe2NvbnN0IG89blt0XTtvLm9uRXJyb3ImJm8ub25FcnJvcihlKX10aGlzLm1hbmFnZXIuaXRlbUVycm9yKHQpfSkpLmZpbmFsbHkoKCgpPT57dGhpcy5tYW5hZ2VyLml0ZW1FbmQodCl9KSksdGhpcy5tYW5hZ2VyLml0ZW1TdGFydCh0KX1zZXRSZXNwb25zZVR5cGUodCl7cmV0dXJuIHRoaXMucmVzcG9uc2VUeXBlPXQsdGhpc31zZXRNaW1lVHlwZSh0KXtyZXR1cm4gdGhpcy5taW1lVHlwZT10LHRoaXN9fWNsYXNzIENndCBleHRlbmRzIGJndHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLG8pe3ZvaWQgMCE9PXRoaXMucGF0aCYmKHQ9dGhpcy5wYXRoK3QpLHQ9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwodCk7Y29uc3QgaT10aGlzLGE9Z2d0LmdldCh0KTtpZih2b2lkIDAhPT1hKXJldHVybiBpLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSYmZShhKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApLGE7Y29uc3Qgcj1Wc3QoImltZyIpO2Z1bmN0aW9uIHMoKXtjKCksZ2d0LmFkZCh0LHRoaXMpLGUmJmUodGhpcyksaS5tYW5hZ2VyLml0ZW1FbmQodCl9ZnVuY3Rpb24gbChlKXtjKCksbyYmbyhlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfWZ1bmN0aW9uIGMoKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpfXJldHVybiByLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLHIuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLCJkYXRhOiIhPT10LnN1YnN0cigwLDUpJiZ2b2lkIDAhPT10aGlzLmNyb3NzT3JpZ2luJiYoci5jcm9zc09yaWdpbj10aGlzLmNyb3NzT3JpZ2luKSxpLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHIuc3JjPXQscn19Y2xhc3MgTWd0IGV4dGVuZHMgYmd0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7Y29uc3QgaT1uZXcgY2R0LGE9bmV3IENndCh0aGlzLm1hbmFnZXIpO2Euc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksYS5zZXRQYXRoKHRoaXMucGF0aCk7bGV0IHI9MDtmdW5jdGlvbiBzKG4pe2EubG9hZCh0W25dLChmdW5jdGlvbih0KXtpLmltYWdlc1tuXT10LHIrKyw2PT09ciYmKGkubmVlZHNVcGRhdGU9ITAsZSYmZShpKSl9KSx2b2lkIDAsbyl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2UpcyhlKTtyZXR1cm4gaX19Y2xhc3Mgdmd0IGV4dGVuZHMgYmd0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7Y29uc3QgaT1uZXcgUXN0LGE9bmV3IENndCh0aGlzLm1hbmFnZXIpO3JldHVybiBhLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEubG9hZCh0LChmdW5jdGlvbih0KXtpLmltYWdlPXQsaS5uZWVkc1VwZGF0ZT0hMCx2b2lkIDAhPT1lJiZlKGkpfSksbixvKSxpfX1jbGFzcyB4Z3QgZXh0ZW5kcyByY3R7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKCksdGhpcy50eXBlPSJMaWdodCIsdGhpcy5jb2xvcj1uZXcgWnN0KHQpLHRoaXMuaW50ZW5zaXR5PWV9ZGlzcG9zZSgpe31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmludGVuc2l0eT10LmludGVuc2l0eSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3QuY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSxlLm9iamVjdC5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHksdm9pZCAwIT09dGhpcy5ncm91bmRDb2xvciYmKGUub2JqZWN0Lmdyb3VuZENvbG9yPXRoaXMuZ3JvdW5kQ29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuZGlzdGFuY2UmJihlLm9iamVjdC5kaXN0YW5jZT10aGlzLmRpc3RhbmNlKSx2b2lkIDAhPT10aGlzLmFuZ2xlJiYoZS5vYmplY3QuYW5nbGU9dGhpcy5hbmdsZSksdm9pZCAwIT09dGhpcy5kZWNheSYmKGUub2JqZWN0LmRlY2F5PXRoaXMuZGVjYXkpLHZvaWQgMCE9PXRoaXMucGVudW1icmEmJihlLm9iamVjdC5wZW51bWJyYT10aGlzLnBlbnVtYnJhKSx2b2lkIDAhPT10aGlzLnNoYWRvdyYmKGUub2JqZWN0LnNoYWRvdz10aGlzLnNoYWRvdy50b0pTT04oKSksZX19eGd0LnByb3RvdHlwZS5pc0xpZ2h0PSEwOyhjbGFzcyBleHRlbmRzIHhndHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxuKSx0aGlzLnR5cGU9IkhlbWlzcGhlcmVMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KHJjdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5ncm91bmRDb2xvcj1uZXcgWnN0KGUpfWNvcHkodCl7cmV0dXJuIHhndC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5ncm91bmRDb2xvci5jb3B5KHQuZ3JvdW5kQ29sb3IpLHRoaXN9fSkucHJvdG90eXBlLmlzSGVtaXNwaGVyZUxpZ2h0PSEwO2NvbnN0IE9ndD1uZXcgemx0LFBndD1uZXcgaWx0LHdndD1uZXcgaWx0O2NsYXNzIGtndHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNhbWVyYT10LHRoaXMuYmlhcz0wLHRoaXMubm9ybWFsQmlhcz0wLHRoaXMucmFkaXVzPTEsdGhpcy5ibHVyU2FtcGxlcz04LHRoaXMubWFwU2l6ZT1uZXcgRnN0KDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IHpsdCx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLl9mcnVzdHVtPW5ldyBiZHQsdGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBGc3QoMSwxKSx0aGlzLl92aWV3cG9ydENvdW50PTEsdGhpcy5fdmlld3BvcnRzPVtuZXcgdGx0KDAsMCwxLDEpXX1nZXRWaWV3cG9ydENvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0Q291bnR9Z2V0RnJ1c3R1bSgpe3JldHVybiB0aGlzLl9mcnVzdHVtfXVwZGF0ZU1hdHJpY2VzKHQpe2NvbnN0IGU9dGhpcy5jYW1lcmEsbj10aGlzLm1hdHJpeDtQZ3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLGUucG9zaXRpb24uY29weShQZ3QpLHdndC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC50YXJnZXQubWF0cml4V29ybGQpLGUubG9va0F0KHdndCksZS51cGRhdGVNYXRyaXhXb3JsZCgpLE9ndC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChPZ3QpLG4uc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpLG4ubXVsdGlwbHkoZS5wcm9qZWN0aW9uTWF0cml4KSxuLm11bHRpcGx5KGUubWF0cml4V29ybGRJbnZlcnNlKX1nZXRWaWV3cG9ydCh0KXtyZXR1cm4gdGhpcy5fdmlld3BvcnRzW3RdfWdldEZyYW1lRXh0ZW50cygpe3JldHVybiB0aGlzLl9mcmFtZUV4dGVudHN9ZGlzcG9zZSgpe3RoaXMubWFwJiZ0aGlzLm1hcC5kaXNwb3NlKCksdGhpcy5tYXBQYXNzJiZ0aGlzLm1hcFBhc3MuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHRoaXMuY2FtZXJhPXQuY2FtZXJhLmNsb25lKCksdGhpcy5iaWFzPXQuYmlhcyx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLm1hcFNpemUuY29weSh0Lm1hcFNpemUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD17fTtyZXR1cm4gMCE9PXRoaXMuYmlhcyYmKHQuYmlhcz10aGlzLmJpYXMpLDAhPT10aGlzLm5vcm1hbEJpYXMmJih0Lm5vcm1hbEJpYXM9dGhpcy5ub3JtYWxCaWFzKSwxIT09dGhpcy5yYWRpdXMmJih0LnJhZGl1cz10aGlzLnJhZGl1cyksNTEyPT09dGhpcy5tYXBTaXplLngmJjUxMj09PXRoaXMubWFwU2l6ZS55fHwodC5tYXBTaXplPXRoaXMubWFwU2l6ZS50b0FycmF5KCkpLHQuY2FtZXJhPXRoaXMuY2FtZXJhLnRvSlNPTighMSkub2JqZWN0LGRlbGV0ZSB0LmNhbWVyYS5tYXRyaXgsdH19Y2xhc3MgU2d0IGV4dGVuZHMga2d0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IHJkdCg1MCwxLC41LDUwMCkpLHRoaXMuZm9jdXM9MX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49MipBc3QqdC5hbmdsZSp0aGlzLmZvY3VzLG89dGhpcy5tYXBTaXplLndpZHRoL3RoaXMubWFwU2l6ZS5oZWlnaHQsaT10LmRpc3RhbmNlfHxlLmZhcjtuPT09ZS5mb3YmJm89PT1lLmFzcGVjdCYmaT09PWUuZmFyfHwoZS5mb3Y9bixlLmFzcGVjdD1vLGUuZmFyPWksZS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHN1cGVyLnVwZGF0ZU1hdHJpY2VzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mb2N1cz10LmZvY3VzLHRoaXN9fVNndC5wcm90b3R5cGUuaXNTcG90TGlnaHRTaGFkb3c9ITA7KGNsYXNzIGV4dGVuZHMgeGd0e2NvbnN0cnVjdG9yKHQsZSxuPTAsbz1NYXRoLlBJLzMsaT0wLGE9MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlNwb3RMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KHJjdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy50YXJnZXQ9bmV3IHJjdCx0aGlzLmRpc3RhbmNlPW4sdGhpcy5hbmdsZT1vLHRoaXMucGVudW1icmE9aSx0aGlzLmRlY2F5PWEsdGhpcy5zaGFkb3c9bmV3IFNndH1nZXQgcG93ZXIoKXtyZXR1cm4gdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fSkucHJvdG90eXBlLmlzU3BvdExpZ2h0PSEwO2NvbnN0IERndD1uZXcgemx0LFJndD1uZXcgaWx0LEVndD1uZXcgaWx0O2NsYXNzIEFndCBleHRlbmRzIGtndHtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyByZHQoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IEZzdCg0LDIpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9Nix0aGlzLl92aWV3cG9ydHM9W25ldyB0bHQoMiwxLDEsMSksbmV3IHRsdCgwLDEsMSwxKSxuZXcgdGx0KDMsMSwxLDEpLG5ldyB0bHQoMSwxLDEsMSksbmV3IHRsdCgzLDAsMSwxKSxuZXcgdGx0KDEsMCwxLDEpXSx0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IGlsdCgxLDAsMCksbmV3IGlsdCgtMSwwLDApLG5ldyBpbHQoMCwwLDEpLG5ldyBpbHQoMCwwLC0xKSxuZXcgaWx0KDAsMSwwKSxuZXcgaWx0KDAsLTEsMCldLHRoaXMuX2N1YmVVcHM9W25ldyBpbHQoMCwxLDApLG5ldyBpbHQoMCwxLDApLG5ldyBpbHQoMCwxLDApLG5ldyBpbHQoMCwxLDApLG5ldyBpbHQoMCwwLDEpLG5ldyBpbHQoMCwwLC0xKV19dXBkYXRlTWF0cmljZXModCxlPTApe2NvbnN0IG49dGhpcy5jYW1lcmEsbz10aGlzLm1hdHJpeCxpPXQuZGlzdGFuY2V8fG4uZmFyO2khPT1uLmZhciYmKG4uZmFyPWksbi51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLFJndC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksbi5wb3NpdGlvbi5jb3B5KFJndCksRWd0LmNvcHkobi5wb3NpdGlvbiksRWd0LmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tlXSksbi51cC5jb3B5KHRoaXMuX2N1YmVVcHNbZV0pLG4ubG9va0F0KEVndCksbi51cGRhdGVNYXRyaXhXb3JsZCgpLG8ubWFrZVRyYW5zbGF0aW9uKC1SZ3QueCwtUmd0LnksLVJndC56KSxEZ3QubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoRGd0KX19QWd0LnByb3RvdHlwZS5pc1BvaW50TGlnaHRTaGFkb3c9ITA7KGNsYXNzIGV4dGVuZHMgeGd0e2NvbnN0cnVjdG9yKHQsZSxuPTAsbz0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1uLHRoaXMuZGVjYXk9byx0aGlzLnNoYWRvdz1uZXcgQWd0fWdldCBwb3dlcigpe3JldHVybiA0KnRoaXMuaW50ZW5zaXR5Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLnByb3RvdHlwZS5pc1BvaW50TGlnaHQ9ITA7Y2xhc3MgVGd0IGV4dGVuZHMga2d0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFJkdCgtNSw1LDUsLTUsLjUsNTAwKSl9fVRndC5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0U2hhZG93PSEwOyhjbGFzcyBleHRlbmRzIHhndHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJEaXJlY3Rpb25hbExpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkocmN0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgcmN0LHRoaXMuc2hhZG93PW5ldyBUZ3R9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHQ9ITA7KGNsYXNzIGV4dGVuZHMgeGd0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkFtYmllbnRMaWdodCJ9fSkucHJvdG90eXBlLmlzQW1iaWVudExpZ2h0PSEwOyhjbGFzcyBleHRlbmRzIHhndHtjb25zdHJ1Y3Rvcih0LGUsbj0xMCxvPTEwKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1uLHRoaXMuaGVpZ2h0PW99Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5KnRoaXMud2lkdGgqdGhpcy5oZWlnaHQqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC8odGhpcy53aWR0aCp0aGlzLmhlaWdodCpNYXRoLlBJKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Qud2lkdGg9dGhpcy53aWR0aCxlLm9iamVjdC5oZWlnaHQ9dGhpcy5oZWlnaHQsZX19KS5wcm90b3R5cGUuaXNSZWN0QXJlYUxpZ2h0PSEwO2NsYXNzIE5ndHtjb25zdHJ1Y3Rvcigpe3RoaXMuY29lZmZpY2llbnRzPVtdO2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHMucHVzaChuZXcgaWx0KX1zZXQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5jb3B5KHRbZV0pO3JldHVybiB0aGlzfXplcm8oKXtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzW3RdLnNldCgwLDAsMCk7cmV0dXJuIHRoaXN9Z2V0QXQodCxlKXtjb25zdCBuPXQueCxvPXQueSxpPXQueixhPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiBlLmNvcHkoYVswXSkubXVsdGlwbHlTY2FsYXIoLjI4MjA5NSksZS5hZGRTY2FsZWRWZWN0b3IoYVsxXSwuNDg4NjAzKm8pLGUuYWRkU2NhbGVkVmVjdG9yKGFbMl0sLjQ4ODYwMyppKSxlLmFkZFNjYWxlZFZlY3RvcihhWzNdLC40ODg2MDMqbiksZS5hZGRTY2FsZWRWZWN0b3IoYVs0XSxuKm8qMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKGFbNV0sbyppKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihhWzZdLC4zMTUzOTIqKDMqaSppLTEpKSxlLmFkZFNjYWxlZFZlY3RvcihhWzddLG4qaSoxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3IoYVs4XSwuNTQ2Mjc0KihuKm4tbypvKSksZX1nZXRJcnJhZGlhbmNlQXQodCxlKXtjb25zdCBuPXQueCxvPXQueSxpPXQueixhPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiBlLmNvcHkoYVswXSkubXVsdGlwbHlTY2FsYXIoLjg4NjIyNyksZS5hZGRTY2FsZWRWZWN0b3IoYVsxXSwxLjAyMzMyOCpvKSxlLmFkZFNjYWxlZFZlY3RvcihhWzJdLDEuMDIzMzI4KmkpLGUuYWRkU2NhbGVkVmVjdG9yKGFbM10sMS4wMjMzMjgqbiksZS5hZGRTY2FsZWRWZWN0b3IoYVs0XSwuODU4MDg2Km4qbyksZS5hZGRTY2FsZWRWZWN0b3IoYVs1XSwuODU4MDg2Km8qaSksZS5hZGRTY2FsZWRWZWN0b3IoYVs2XSwuNzQzMTI1KmkqaS0uMjQ3NzA4KSxlLmFkZFNjYWxlZFZlY3RvcihhWzddLC44NTgwODYqbippKSxlLmFkZFNjYWxlZFZlY3RvcihhWzhdLC40MjkwNDMqKG4qbi1vKm8pKSxlfWFkZCh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLmFkZCh0LmNvZWZmaWNpZW50c1tlXSk7cmV0dXJuIHRoaXN9YWRkU2NhbGVkU0godCxlKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmFkZFNjYWxlZFZlY3Rvcih0LmNvZWZmaWNpZW50c1tuXSxlKTtyZXR1cm4gdGhpc31zY2FsZSh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLm11bHRpcGx5U2NhbGFyKHQpO3JldHVybiB0aGlzfWxlcnAodCxlKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmxlcnAodC5jb2VmZmljaWVudHNbbl0sZSk7cmV0dXJuIHRoaXN9ZXF1YWxzKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspaWYoIXRoaXMuY29lZmZpY2llbnRzW2VdLmVxdWFscyh0LmNvZWZmaWNpZW50c1tlXSkpcmV0dXJuITE7cmV0dXJuITB9Y29weSh0KXtyZXR1cm4gdGhpcy5zZXQodC5jb2VmZmljaWVudHMpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWZyb21BcnJheSh0LGU9MCl7Y29uc3Qgbj10aGlzLmNvZWZmaWNpZW50cztmb3IobGV0IG89MDtvPDk7bysrKW5bb10uZnJvbUFycmF5KHQsZSszKm8pO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2NvbnN0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBvPTA7bzw5O28rKyluW29dLnRvQXJyYXkodCxlKzMqbyk7cmV0dXJuIHR9c3RhdGljIGdldEJhc2lzQXQodCxlKXtjb25zdCBuPXQueCxvPXQueSxpPXQuejtlWzBdPS4yODIwOTUsZVsxXT0uNDg4NjAzKm8sZVsyXT0uNDg4NjAzKmksZVszXT0uNDg4NjAzKm4sZVs0XT0xLjA5MjU0OCpuKm8sZVs1XT0xLjA5MjU0OCpvKmksZVs2XT0uMzE1MzkyKigzKmkqaS0xKSxlWzddPTEuMDkyNTQ4Km4qaSxlWzhdPS41NDYyNzQqKG4qbi1vKm8pfX1OZ3QucHJvdG90eXBlLmlzU3BoZXJpY2FsSGFybW9uaWNzMz0hMDtjbGFzcyB6Z3QgZXh0ZW5kcyB4Z3R7Y29uc3RydWN0b3IodD1uZXcgTmd0LGU9MSl7c3VwZXIodm9pZCAwLGUpLHRoaXMuc2g9dH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuc2guY29weSh0LnNoKSx0aGlzfWZyb21KU09OKHQpe3JldHVybiB0aGlzLmludGVuc2l0eT10LmludGVuc2l0eSx0aGlzLnNoLmZyb21BcnJheSh0LnNoKSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Quc2g9dGhpcy5zaC50b0FycmF5KCksZX19emd0LnByb3RvdHlwZS5pc0xpZ2h0UHJvYmU9ITA7KGNsYXNzIGV4dGVuZHMgTmN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluc3RhbmNlQ291bnQ9MS8wfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZUNvdW50PXQuaW5zdGFuY2VDb3VudCx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKHRoaXMpO3JldHVybiB0Lmluc3RhbmNlQ291bnQ9dGhpcy5pbnN0YW5jZUNvdW50LHQuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMCx0fX0pLnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwO2xldCBJZ3Q7KGNsYXNzIGV4dGVuZHMgYmd0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLCJ1bmRlZmluZWQiPT10eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXAmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGNyZWF0ZUltYWdlQml0bWFwKCkgbm90IHN1cHBvcnRlZC4iKSwidW5kZWZpbmVkIj09dHlwZW9mIGZldGNoJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBmZXRjaCgpIG5vdCBzdXBwb3J0ZWQuIiksdGhpcy5vcHRpb25zPXtwcmVtdWx0aXBseUFscGhhOiJub25lIn19c2V0T3B0aW9ucyh0KXtyZXR1cm4gdGhpcy5vcHRpb25zPXQsdGhpc31sb2FkKHQsZSxuLG8pe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IGk9dGhpcyxhPWdndC5nZXQodCk7aWYodm9pZCAwIT09YSlyZXR1cm4gaS5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUoYSksaS5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxhO2NvbnN0IHI9e307ci5jcmVkZW50aWFscz0iYW5vbnltb3VzIj09PXRoaXMuY3Jvc3NPcmlnaW4/InNhbWUtb3JpZ2luIjoiaW5jbHVkZSIsci5oZWFkZXJzPXRoaXMucmVxdWVzdEhlYWRlcixmZXRjaCh0LHIpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJsb2IoKX0pKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAodCxPYmplY3QuYXNzaWduKGkub3B0aW9ucyx7Y29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifSkpfSkpLnRoZW4oKGZ1bmN0aW9uKG4pe2dndC5hZGQodCxuKSxlJiZlKG4pLGkubWFuYWdlci5pdGVtRW5kKHQpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtvJiZvKGUpLGkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9KSksaS5tYW5hZ2VyLml0ZW1TdGFydCh0KX19KS5wcm90b3R5cGUuaXNJbWFnZUJpdG1hcExvYWRlcj0hMDtjb25zdCBIZ3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09SWd0JiYoSWd0PW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksSWd0fTtjbGFzcyBGZ3QgZXh0ZW5kcyBiZ3R7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixvKXtjb25zdCBpPXRoaXMsYT1uZXcgX2d0KHRoaXMubWFuYWdlcik7YS5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIiksYS5zZXRQYXRoKHRoaXMucGF0aCksYS5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksYS5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLGEubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7Y29uc3QgdD1uLnNsaWNlKDApO0hndCgpLmRlY29kZUF1ZGlvRGF0YSh0LChmdW5jdGlvbih0KXtlKHQpfSkpfWNhdGNoKGUpe28/byhlKTpjb25zb2xlLmVycm9yKGUpLGkubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixvKX19KGNsYXNzIGV4dGVuZHMgemd0e2NvbnN0cnVjdG9yKHQsZSxuPTEpe3N1cGVyKHZvaWQgMCxuKTtjb25zdCBvPShuZXcgWnN0KS5zZXQodCksaT0obmV3IFpzdCkuc2V0KGUpLGE9bmV3IGlsdChvLnIsby5nLG8uYikscj1uZXcgaWx0KGkucixpLmcsaS5iKSxzPU1hdGguc3FydChNYXRoLlBJKSxsPXMqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShhKS5hZGQocikubXVsdGlwbHlTY2FsYXIocyksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShhKS5zdWIocikubXVsdGlwbHlTY2FsYXIobCl9fSkucHJvdG90eXBlLmlzSGVtaXNwaGVyZUxpZ2h0UHJvYmU9ITA7KGNsYXNzIGV4dGVuZHMgemd0e2NvbnN0cnVjdG9yKHQsZT0xKXtzdXBlcih2b2lkIDAsZSk7Y29uc3Qgbj0obmV3IFpzdCkuc2V0KHQpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLnNldChuLnIsbi5nLG4uYikubXVsdGlwbHlTY2FsYXIoMipNYXRoLnNxcnQoTWF0aC5QSSkpfX0pLnByb3RvdHlwZS5pc0FtYmllbnRMaWdodFByb2JlPSEwO2NsYXNzIExndHtjb25zdHJ1Y3Rvcih0LGUsbil7bGV0IG8saSxhO3N3aXRjaCh0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1uLGUpe2Nhc2UicXVhdGVybmlvbiI6bz10aGlzLl9zbGVycCxpPXRoaXMuX3NsZXJwQWRkaXRpdmUsYT10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbix0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDYqbiksdGhpcy5fd29ya0luZGV4PTU7YnJlYWs7Y2FzZSJzdHJpbmciOmNhc2UiYm9vbCI6bz10aGlzLl9zZWxlY3QsaT10aGlzLl9zZWxlY3QsYT10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIsdGhpcy5idWZmZXI9bmV3IEFycmF5KDUqbik7YnJlYWs7ZGVmYXVsdDpvPXRoaXMuX2xlcnAsaT10aGlzLl9sZXJwQWRkaXRpdmUsYT10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYyx0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDUqbil9dGhpcy5fbWl4QnVmZmVyUmVnaW9uPW8sdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmU9aSx0aGlzLl9zZXRJZGVudGl0eT1hLHRoaXMuX29yaWdJbmRleD0zLHRoaXMuX2FkZEluZGV4PTQsdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCx0aGlzLnVzZUNvdW50PTAsdGhpcy5yZWZlcmVuY2VDb3VudD0wfWFjY3VtdWxhdGUodCxlKXtjb25zdCBuPXRoaXMuYnVmZmVyLG89dGhpcy52YWx1ZVNpemUsaT10Km8rbztsZXQgYT10aGlzLmN1bXVsYXRpdmVXZWlnaHQ7aWYoMD09PWEpe2ZvcihsZXQgdD0wO3QhPT1vOysrdCluW2krdF09blt0XTthPWV9ZWxzZXthKz1lO3RoaXMuX21peEJ1ZmZlclJlZ2lvbihuLGksMCxlL2Esbyl9dGhpcy5jdW11bGF0aXZlV2VpZ2h0PWF9YWNjdW11bGF0ZUFkZGl0aXZlKHQpe2NvbnN0IGU9dGhpcy5idWZmZXIsbj10aGlzLnZhbHVlU2l6ZSxvPW4qdGhpcy5fYWRkSW5kZXg7MD09PXRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlJiZ0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKGUsbywwLHQsbiksdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUrPXR9YXBwbHkodCl7Y29uc3QgZT10aGlzLnZhbHVlU2l6ZSxuPXRoaXMuYnVmZmVyLG89dCplK2UsaT10aGlzLmN1bXVsYXRpdmVXZWlnaHQsYT10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxyPXRoaXMuYmluZGluZztpZih0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLGk8MSl7dGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4sbyxlKnRoaXMuX29yaWdJbmRleCwxLWksZSl9YT4wJiZ0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShuLG8sdGhpcy5fYWRkSW5kZXgqZSwxLGUpO2ZvcihsZXQgdD1lLGk9ZStlO3QhPT1pOysrdClpZihuW3RdIT09blt0K2VdKXtyLnNldFZhbHVlKG4sbyk7YnJlYWt9fXNhdmVPcmlnaW5hbFN0YXRlKCl7Y29uc3QgdD10aGlzLmJ1ZmZlcixlPXRoaXMudmFsdWVTaXplLG49ZSp0aGlzLl9vcmlnSW5kZXg7dGhpcy5iaW5kaW5nLmdldFZhbHVlKHQsbik7Zm9yKGxldCBvPWUsaT1uO28hPT1pOysrbyl0W29dPXRbbitvJWVdO3RoaXMuX3NldElkZW50aXR5KCksdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MH1yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpe3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlciwzKnRoaXMudmFsdWVTaXplKX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtjb25zdCB0PXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplLGU9dCt0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IG49dDtuPGU7bisrKXRoaXMuYnVmZmVyW25dPTB9X3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uKCl7dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKSx0aGlzLmJ1ZmZlclt0aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSszXT0xfV9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIoKXtjb25zdCB0PXRoaXMuX29yaWdJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplO2ZvcihsZXQgbj0wO248dGhpcy52YWx1ZVNpemU7bisrKXRoaXMuYnVmZmVyW2Urbl09dGhpcy5idWZmZXJbdCtuXX1fc2VsZWN0KHQsZSxuLG8saSl7aWYobz49LjUpZm9yKGxldCBvPTA7byE9PWk7KytvKXRbZStvXT10W24rb119X3NsZXJwKHQsZSxuLG8pe29sdC5zbGVycEZsYXQodCxlLHQsZSx0LG4sbyl9X3NsZXJwQWRkaXRpdmUodCxlLG4sbyxpKXtjb25zdCBhPXRoaXMuX3dvcmtJbmRleCppO29sdC5tdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LGEsdCxlLHQsbiksb2x0LnNsZXJwRmxhdCh0LGUsdCxlLHQsYSxvKX1fbGVycCh0LGUsbixvLGkpe2NvbnN0IGE9MS1vO2ZvcihsZXQgcj0wO3IhPT1pOysrcil7Y29uc3QgaT1lK3I7dFtpXT10W2ldKmErdFtuK3JdKm99fV9sZXJwQWRkaXRpdmUodCxlLG4sbyxpKXtmb3IobGV0IGE9MDthIT09aTsrK2Epe2NvbnN0IGk9ZSthO3RbaV09dFtpXSt0W24rYV0qb319fWNvbnN0IEJndD0iXFxbXFxdXFwuOlxcLyIsVmd0PW5ldyBSZWdFeHAoIltcXFtcXF1cXC46XFwvXSIsImciKSxVZ3Q9IlteXFxbXFxdXFwuOlxcL10iLGpndD0iW14iK0JndC5yZXBsYWNlKCJcXC4iLCIiKSsiXSIsV2d0PS8oKD86V0MrW1wvOl0pKikvLnNvdXJjZS5yZXBsYWNlKCJXQyIsVWd0KSxHZ3Q9LyhXQ09EKyk/Ly5zb3VyY2UucmVwbGFjZSgiV0NPRCIsamd0KSxZZ3Q9Lyg/OlwuKFdDKykoPzpcWyguKylcXSk/KT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsVWd0KSxxZ3Q9L1wuKFdDKykoPzpcWyguKylcXSk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLFVndCksWmd0PW5ldyBSZWdFeHAoIl4iK1dndCtHZ3QrWWd0K3FndCsiJCIpLFhndD1bIm1hdGVyaWFsIiwibWF0ZXJpYWxzIiwiYm9uZXMiXTtjbGFzcyBLZ3R7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMucGF0aD1lLHRoaXMucGFyc2VkUGF0aD1ufHxLZ3QucGFyc2VUcmFja05hbWUoZSksdGhpcy5ub2RlPUtndC5maW5kTm9kZSh0LHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fHQsdGhpcy5yb290Tm9kZT10LHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9c3RhdGljIGNyZWF0ZSh0LGUsbil7cmV0dXJuIHQmJnQuaXNBbmltYXRpb25PYmplY3RHcm91cD9uZXcgS2d0LkNvbXBvc2l0ZSh0LGUsbik6bmV3IEtndCh0LGUsbil9c3RhdGljIHNhbml0aXplTm9kZU5hbWUodCl7cmV0dXJuIHQucmVwbGFjZSgvXHMvZywiXyIpLnJlcGxhY2UoVmd0LCIiKX1zdGF0aWMgcGFyc2VUcmFja05hbWUodCl7Y29uc3QgZT1aZ3QuZXhlYyh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtjb25zdCBuPXtub2RlTmFtZTplWzJdLG9iamVjdE5hbWU6ZVszXSxvYmplY3RJbmRleDplWzRdLHByb3BlcnR5TmFtZTplWzVdLHByb3BlcnR5SW5kZXg6ZVs2XX0sbz1uLm5vZGVOYW1lJiZuLm5vZGVOYW1lLmxhc3RJbmRleE9mKCIuIik7aWYodm9pZCAwIT09byYmLTEhPT1vKXtjb25zdCB0PW4ubm9kZU5hbWUuc3Vic3RyaW5nKG8rMSk7LTEhPT1YZ3QuaW5kZXhPZih0KSYmKG4ubm9kZU5hbWU9bi5ub2RlTmFtZS5zdWJzdHJpbmcoMCxvKSxuLm9iamVjdE5hbWU9dCl9aWYobnVsbD09PW4ucHJvcGVydHlOYW1lfHwwPT09bi5wcm9wZXJ0eU5hbWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiUHJvcGVydHlCaW5kaW5nOiBjYW4gbm90IHBhcnNlIHByb3BlcnR5TmFtZSBmcm9tIHRyYWNrTmFtZTogIit0KTtyZXR1cm4gbn1zdGF0aWMgZmluZE5vZGUodCxlKXtpZighZXx8IiI9PT1lfHwiLiI9PT1lfHwtMT09PWV8fGU9PT10Lm5hbWV8fGU9PT10LnV1aWQpcmV0dXJuIHQ7aWYodC5za2VsZXRvbil7Y29uc3Qgbj10LnNrZWxldG9uLmdldEJvbmVCeU5hbWUoZSk7aWYodm9pZCAwIT09bilyZXR1cm4gbn1pZih0LmNoaWxkcmVuKXtjb25zdCBuPWZ1bmN0aW9uKHQpe2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtjb25zdCBpPXRbb107aWYoaS5uYW1lPT09ZXx8aS51dWlkPT09ZSlyZXR1cm4gaTtjb25zdCBhPW4oaS5jaGlsZHJlbik7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sbz1uKHQuY2hpbGRyZW4pO2lmKG8pcmV0dXJuIG99cmV0dXJuIG51bGx9X2dldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9zZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fZ2V0VmFsdWVfZGlyZWN0KHQsZSl7dFtlXT10aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV19X2dldFZhbHVlX2FycmF5KHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBvPTAsaT1uLmxlbmd0aDtvIT09aTsrK28pdFtlKytdPW5bb119X2dldFZhbHVlX2FycmF5RWxlbWVudCh0LGUpe3RbZV09dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF19X2dldFZhbHVlX3RvQXJyYXkodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkudG9BcnJheSh0LGUpfV9zZXRWYWx1ZV9kaXJlY3QodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXX1fc2V0VmFsdWVfZGlyZWN0X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2RpcmVjdF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXkodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IG89MCxpPW4ubGVuZ3RoO28hPT1pOysrbyluW29dPXRbZSsrXX1fc2V0VmFsdWVfYXJyYXlfc2V0TmVlZHNVcGRhdGUodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IG89MCxpPW4ubGVuZ3RoO28hPT1pOysrbyluW29dPXRbZSsrXTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7byE9PWk7KytvKW5bb109dFtlKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5RWxlbWVudCh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV19X3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9mcm9tQXJyYXkodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSl9X3NldFZhbHVlX2Zyb21BcnJheV9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSksdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fZ2V0VmFsdWVfdW5ib3VuZCh0LGUpe3RoaXMuYmluZCgpLHRoaXMuZ2V0VmFsdWUodCxlKX1fc2V0VmFsdWVfdW5ib3VuZCh0LGUpe3RoaXMuYmluZCgpLHRoaXMuc2V0VmFsdWUodCxlKX1iaW5kKCl7bGV0IHQ9dGhpcy5ub2RlO2NvbnN0IGU9dGhpcy5wYXJzZWRQYXRoLG49ZS5vYmplY3ROYW1lLG89ZS5wcm9wZXJ0eU5hbWU7bGV0IGk9ZS5wcm9wZXJ0eUluZGV4O2lmKHR8fCh0PUtndC5maW5kTm9kZSh0aGlzLnJvb3ROb2RlLGUubm9kZU5hbWUpfHx0aGlzLnJvb3ROb2RlLHRoaXMubm9kZT10KSx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYXZhaWxhYmxlLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5hdmFpbGFibGUsIXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIG5vZGUgZm9yIHRyYWNrOiAiK3RoaXMucGF0aCsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIik7aWYobil7bGV0IG89ZS5vYmplY3RJbmRleDtzd2l0Y2gobil7Y2FzZSJtYXRlcmlhbHMiOmlmKCF0Lm1hdGVyaWFsKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIG1hdGVyaWFsLiIsdGhpcyk7aWYoIXQubWF0ZXJpYWwubWF0ZXJpYWxzKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsLm1hdGVyaWFscyBhcyBub2RlLm1hdGVyaWFsIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbHMgYXJyYXkuIix0aGlzKTt0PXQubWF0ZXJpYWwubWF0ZXJpYWxzO2JyZWFrO2Nhc2UiYm9uZXMiOmlmKCF0LnNrZWxldG9uKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIGJvbmVzIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHNrZWxldG9uLiIsdGhpcyk7dD10LnNrZWxldG9uLmJvbmVzO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0ubmFtZT09PW8pe289ZTticmVha31icmVhaztkZWZhdWx0OmlmKHZvaWQgMD09PXRbbl0pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gb2JqZWN0TmFtZSBvZiBub2RlIHVuZGVmaW5lZC4iLHRoaXMpO3Q9dFtuXX1pZih2b2lkIDAhPT1vKXtpZih2b2lkIDA9PT10W29dKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIGJpbmQgdG8gb2JqZWN0SW5kZXggb2Ygb2JqZWN0TmFtZSwgYnV0IGlzIHVuZGVmaW5lZC4iLHRoaXMsdCk7dD10W29dfX1jb25zdCBhPXRbb107aWYodm9pZCAwPT09YSl7cmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIHByb3BlcnR5IGZvciB0cmFjazogIitlLm5vZGVOYW1lKyIuIitvKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iLHQpfWxldCByPXRoaXMuVmVyc2lvbmluZy5Ob25lO3RoaXMudGFyZ2V0T2JqZWN0PXQsdm9pZCAwIT09dC5uZWVkc1VwZGF0ZT9yPXRoaXMuVmVyc2lvbmluZy5OZWVkc1VwZGF0ZTp2b2lkIDAhPT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUmJihyPXRoaXMuVmVyc2lvbmluZy5NYXRyaXhXb3JsZE5lZWRzVXBkYXRlKTtsZXQgcz10aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtpZih2b2lkIDAhPT1pKXtpZigibW9ycGhUYXJnZXRJbmZsdWVuY2VzIj09PW8pe2lmKCF0Lmdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5LiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgb24gVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy4iLHRoaXMpO3ZvaWQgMCE9PXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W2ldJiYoaT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtpXSl9cz10aGlzLkJpbmRpbmdUeXBlLkFycmF5RWxlbWVudCx0aGlzLnJlc29sdmVkUHJvcGVydHk9YSx0aGlzLnByb3BlcnR5SW5kZXg9aX1lbHNlIHZvaWQgMCE9PWEuZnJvbUFycmF5JiZ2b2lkIDAhPT1hLnRvQXJyYXk/KHM9dGhpcy5CaW5kaW5nVHlwZS5IYXNGcm9tVG9BcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9YSk6QXJyYXkuaXNBcnJheShhKT8ocz10aGlzLkJpbmRpbmdUeXBlLkVudGlyZUFycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hKTp0aGlzLnByb3BlcnR5TmFtZT1vO3RoaXMuZ2V0VmFsdWU9dGhpcy5HZXR0ZXJCeUJpbmRpbmdUeXBlW3NdLHRoaXMuc2V0VmFsdWU9dGhpcy5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZ1tzXVtyXX11bmJpbmQoKXt0aGlzLm5vZGU9bnVsbCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfX1LZ3QuQ29tcG9zaXRlPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBvPW58fEtndC5wYXJzZVRyYWNrTmFtZShlKTt0aGlzLl90YXJnZXRHcm91cD10LHRoaXMuX2JpbmRpbmdzPXQuc3Vic2NyaWJlXyhlLG8pfWdldFZhbHVlKHQsZSl7dGhpcy5iaW5kKCk7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc1t0aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c19dO3ZvaWQgMCE9PW4mJm4uZ2V0VmFsdWUodCxlKX1zZXRWYWx1ZSh0LGUpe2NvbnN0IG49dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBvPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxpPW4ubGVuZ3RoO28hPT1pOysrbyluW29dLnNldFZhbHVlKHQsZSl9YmluZCgpe2NvbnN0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBlPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxuPXQubGVuZ3RoO2UhPT1uOysrZSl0W2VdLmJpbmQoKX11bmJpbmQoKXtjb25zdCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtlIT09bjsrK2UpdFtlXS51bmJpbmQoKX19LEtndC5wcm90b3R5cGUuQmluZGluZ1R5cGU9e0RpcmVjdDowLEVudGlyZUFycmF5OjEsQXJyYXlFbGVtZW50OjIsSGFzRnJvbVRvQXJyYXk6M30sS2d0LnByb3RvdHlwZS5WZXJzaW9uaW5nPXtOb25lOjAsTmVlZHNVcGRhdGU6MSxNYXRyaXhXb3JsZE5lZWRzVXBkYXRlOjJ9LEtndC5wcm90b3R5cGUuR2V0dGVyQnlCaW5kaW5nVHlwZT1bS2d0LnByb3RvdHlwZS5fZ2V0VmFsdWVfZGlyZWN0LEtndC5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5LEtndC5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5RWxlbWVudCxLZ3QucHJvdG90eXBlLl9nZXRWYWx1ZV90b0FycmF5XSxLZ3QucHJvdG90eXBlLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nPVtbS2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0LEtndC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSxLZ3QucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW0tndC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5LEtndC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlLEtndC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtLZ3QucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnQsS2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE5lZWRzVXBkYXRlLEtndC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbS2d0LnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5LEtndC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheV9zZXROZWVkc1VwZGF0ZSxLZ3QucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV1dO2NsYXNzIEpndHtjb25zdHJ1Y3Rvcih0LGUsbj1udWxsLG89ZS5ibGVuZE1vZGUpe3RoaXMuX21peGVyPXQsdGhpcy5fY2xpcD1lLHRoaXMuX2xvY2FsUm9vdD1uLHRoaXMuYmxlbmRNb2RlPW87Y29uc3QgaT1lLnRyYWNrcyxhPWkubGVuZ3RoLHI9bmV3IEFycmF5KGEpLHM9e2VuZGluZ1N0YXJ0OnlzdCxlbmRpbmdFbmQ6eXN0fTtmb3IobGV0IHQ9MDt0IT09YTsrK3Qpe2NvbnN0IGU9aVt0XS5jcmVhdGVJbnRlcnBvbGFudChudWxsKTtyW3RdPWUsZS5zZXR0aW5ncz1zfXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M9cyx0aGlzLl9pbnRlcnBvbGFudHM9cix0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzPW5ldyBBcnJheShhKSx0aGlzLl9jYWNoZUluZGV4PW51bGwsdGhpcy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PW51bGwsdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLmxvb3A9MjIwMSx0aGlzLl9sb29wQ291bnQ9LTEsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MSx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9MSx0aGlzLndlaWdodD0xLHRoaXMuX2VmZmVjdGl2ZVdlaWdodD0xLHRoaXMucmVwZXRpdGlvbnM9MS8wLHRoaXMucGF1c2VkPSExLHRoaXMuZW5hYmxlZD0hMCx0aGlzLmNsYW1wV2hlbkZpbmlzaGVkPSExLHRoaXMuemVyb1Nsb3BlQXRTdGFydD0hMCx0aGlzLnplcm9TbG9wZUF0RW5kPSEwfXBsYXkoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2FjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXN9c3RvcCgpe3JldHVybiB0aGlzLl9taXhlci5fZGVhY3RpdmF0ZUFjdGlvbih0aGlzKSx0aGlzLnJlc2V0KCl9cmVzZXQoKXtyZXR1cm4gdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMudGltZT0wLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnN0b3BGYWRpbmcoKS5zdG9wV2FycGluZygpfWlzUnVubmluZygpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLnBhdXNlZCYmMCE9PXRoaXMudGltZVNjYWxlJiZudWxsPT09dGhpcy5fc3RhcnRUaW1lJiZ0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9aXNTY2hlZHVsZWQoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfXN0YXJ0QXQodCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZT10LHRoaXN9c2V0TG9vcCh0LGUpe3JldHVybiB0aGlzLmxvb3A9dCx0aGlzLnJlcGV0aXRpb25zPWUsdGhpc31zZXRFZmZlY3RpdmVXZWlnaHQodCl7cmV0dXJuIHRoaXMud2VpZ2h0PXQsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMuZW5hYmxlZD90OjAsdGhpcy5zdG9wRmFkaW5nKCl9Z2V0RWZmZWN0aXZlV2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodH1mYWRlSW4odCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMCwxKX1mYWRlT3V0KHQpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyh0LDEsMCl9Y3Jvc3NGYWRlRnJvbSh0LGUsbil7aWYodC5mYWRlT3V0KGUpLHRoaXMuZmFkZUluKGUpLG4pe2NvbnN0IG49dGhpcy5fY2xpcC5kdXJhdGlvbixvPXQuX2NsaXAuZHVyYXRpb24saT1uL287dC53YXJwKDEsby9uLGUpLHRoaXMud2FycChpLDEsZSl9cmV0dXJuIHRoaXN9Y3Jvc3NGYWRlVG8odCxlLG4pe3JldHVybiB0LmNyb3NzRmFkZUZyb20odGhpcyxlLG4pfXN0b3BGYWRpbmcoKXtjb25zdCB0PXRoaXMuX3dlaWdodEludGVycG9sYW50O3JldHVybiBudWxsIT09dCYmKHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpKSx0aGlzfXNldEVmZmVjdGl2ZVRpbWVTY2FsZSh0KXtyZXR1cm4gdGhpcy50aW1lU2NhbGU9dCx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9dGhpcy5wYXVzZWQ/MDp0LHRoaXMuc3RvcFdhcnBpbmcoKX1nZXRFZmZlY3RpdmVUaW1lU2NhbGUoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlfXNldER1cmF0aW9uKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10aGlzLl9jbGlwLmR1cmF0aW9uL3QsdGhpcy5zdG9wV2FycGluZygpfXN5bmNXaXRoKHQpe3JldHVybiB0aGlzLnRpbWU9dC50aW1lLHRoaXMudGltZVNjYWxlPXQudGltZVNjYWxlLHRoaXMuc3RvcFdhcnBpbmcoKX1oYWx0KHQpe3JldHVybiB0aGlzLndhcnAodGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlLDAsdCl9d2FycCh0LGUsbil7Y29uc3Qgbz10aGlzLl9taXhlcixpPW8udGltZSxhPXRoaXMudGltZVNjYWxlO2xldCByPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O251bGw9PT1yJiYocj1vLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9cik7Y29uc3Qgcz1yLnBhcmFtZXRlclBvc2l0aW9ucyxsPXIuc2FtcGxlVmFsdWVzO3JldHVybiBzWzBdPWksc1sxXT1pK24sbFswXT10L2EsbFsxXT1lL2EsdGhpc31zdG9wV2FycGluZygpe2NvbnN0IHQ9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9Z2V0TWl4ZXIoKXtyZXR1cm4gdGhpcy5fbWl4ZXJ9Z2V0Q2xpcCgpe3JldHVybiB0aGlzLl9jbGlwfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fbG9jYWxSb290fHx0aGlzLl9taXhlci5fcm9vdH1fdXBkYXRlKHQsZSxuLG8pe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQgdGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2NvbnN0IGk9dGhpcy5fc3RhcnRUaW1lO2lmKG51bGwhPT1pKXtjb25zdCBvPSh0LWkpKm47aWYobzwwfHwwPT09bilyZXR1cm47dGhpcy5fc3RhcnRUaW1lPW51bGwsZT1uKm99ZSo9dGhpcy5fdXBkYXRlVGltZVNjYWxlKHQpO2NvbnN0IGE9dGhpcy5fdXBkYXRlVGltZShlKSxyPXRoaXMuX3VwZGF0ZVdlaWdodCh0KTtpZihyPjApe2NvbnN0IHQ9dGhpcy5faW50ZXJwb2xhbnRzLGU9dGhpcy5fcHJvcGVydHlCaW5kaW5ncztzd2l0Y2godGhpcy5ibGVuZE1vZGUpe2Nhc2UgMjUwMTpmb3IobGV0IG49MCxvPXQubGVuZ3RoO24hPT1vOysrbil0W25dLmV2YWx1YXRlKGEpLGVbbl0uYWNjdW11bGF0ZUFkZGl0aXZlKHIpO2JyZWFrO2Nhc2UgTXN0OmRlZmF1bHQ6Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuIT09aTsrK24pdFtuXS5ldmFsdWF0ZShhKSxlW25dLmFjY3VtdWxhdGUobyxyKX19fV91cGRhdGVXZWlnaHQodCl7bGV0IGU9MDtpZih0aGlzLmVuYWJsZWQpe2U9dGhpcy53ZWlnaHQ7Y29uc3Qgbj10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtpZihudWxsIT09bil7Y29uc3Qgbz1uLmV2YWx1YXRlKHQpWzBdO2UqPW8sdD5uLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcEZhZGluZygpLDA9PT1vJiYodGhpcy5lbmFibGVkPSExKSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9ZSxlfV91cGRhdGVUaW1lU2NhbGUodCl7bGV0IGU9MDtpZighdGhpcy5wYXVzZWQpe2U9dGhpcy50aW1lU2NhbGU7Y29uc3Qgbj10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtpZihudWxsIT09bil7ZSo9bi5ldmFsdWF0ZSh0KVswXSx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wV2FycGluZygpLDA9PT1lP3RoaXMucGF1c2VkPSEwOnRoaXMudGltZVNjYWxlPWUpfX1yZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlPWUsZX1fdXBkYXRlVGltZSh0KXtjb25zdCBlPXRoaXMuX2NsaXAuZHVyYXRpb24sbj10aGlzLmxvb3A7bGV0IG89dGhpcy50aW1lK3QsaT10aGlzLl9sb29wQ291bnQ7Y29uc3QgYT0yMjAyPT09bjtpZigwPT09dClyZXR1cm4tMT09PWk/bzphJiYxPT0oMSZpKT9lLW86bztpZigyMjAwPT09bil7LTE9PT1pJiYodGhpcy5fbG9vcENvdW50PTAsdGhpcy5fc2V0RW5kaW5ncyghMCwhMCwhMSkpO3Q6e2lmKG8+PWUpbz1lO2Vsc2V7aWYoIShvPDApKXt0aGlzLnRpbWU9bzticmVhayB0fW89MH10aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSx0aGlzLnRpbWU9byx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOnQ8MD8tMToxfSl9fWVsc2V7aWYoLTE9PT1pJiYodD49MD8oaT0wLHRoaXMuX3NldEVuZGluZ3MoITAsMD09PXRoaXMucmVwZXRpdGlvbnMsYSkpOnRoaXMuX3NldEVuZGluZ3MoMD09PXRoaXMucmVwZXRpdGlvbnMsITAsYSkpLG8+PWV8fG88MCl7Y29uc3Qgbj1NYXRoLmZsb29yKG8vZSk7by09ZSpuLGkrPU1hdGguYWJzKG4pO2NvbnN0IHI9dGhpcy5yZXBldGl0aW9ucy1pO2lmKHI8PTApdGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITEsbz10PjA/ZTowLHRoaXMudGltZT1vLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dD4wPzE6LTF9KTtlbHNle2lmKDE9PT1yKXtjb25zdCBlPXQ8MDt0aGlzLl9zZXRFbmRpbmdzKGUsIWUsYSl9ZWxzZSB0aGlzLl9zZXRFbmRpbmdzKCExLCExLGEpO3RoaXMuX2xvb3BDb3VudD1pLHRoaXMudGltZT1vLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6Imxvb3AiLGFjdGlvbjp0aGlzLGxvb3BEZWx0YTpufSl9fWVsc2UgdGhpcy50aW1lPW87aWYoYSYmMT09KDEmaSkpcmV0dXJuIGUtb31yZXR1cm4gb31fc2V0RW5kaW5ncyh0LGUsbil7Y29uc3Qgbz10aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzO24/KG8uZW5kaW5nU3RhcnQ9X3N0LG8uZW5kaW5nRW5kPV9zdCk6KG8uZW5kaW5nU3RhcnQ9dD90aGlzLnplcm9TbG9wZUF0U3RhcnQ/X3N0OnlzdDpDc3Qsby5lbmRpbmdFbmQ9ZT90aGlzLnplcm9TbG9wZUF0RW5kP19zdDp5c3Q6Q3N0KX1fc2NoZWR1bGVGYWRpbmcodCxlLG4pe2NvbnN0IG89dGhpcy5fbWl4ZXIsaT1vLnRpbWU7bGV0IGE9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7bnVsbD09PWEmJihhPW8uX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1hKTtjb25zdCByPWEucGFyYW1ldGVyUG9zaXRpb25zLHM9YS5zYW1wbGVWYWx1ZXM7cmV0dXJuIHJbMF09aSxzWzBdPWUsclsxXT1pK3Qsc1sxXT1uLHRoaXN9fShjbGFzcyBleHRlbmRzIERzdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX3Jvb3Q9dCx0aGlzLl9pbml0TWVtb3J5TWFuYWdlcigpLHRoaXMuX2FjY3VJbmRleD0wLHRoaXMudGltZT0wLHRoaXMudGltZVNjYWxlPTF9X2JpbmRBY3Rpb24odCxlKXtjb25zdCBuPXQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCxvPXQuX2NsaXAudHJhY2tzLGk9by5sZW5ndGgsYT10Ll9wcm9wZXJ0eUJpbmRpbmdzLHI9dC5faW50ZXJwb2xhbnRzLHM9bi51dWlkLGw9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lO2xldCBjPWxbc107dm9pZCAwPT09YyYmKGM9e30sbFtzXT1jKTtmb3IobGV0IHQ9MDt0IT09aTsrK3Qpe2NvbnN0IGk9b1t0XSxsPWkubmFtZTtsZXQgZD1jW2xdO2lmKHZvaWQgMCE9PWQpKytkLnJlZmVyZW5jZUNvdW50LGFbdF09ZDtlbHNle2lmKGQ9YVt0XSx2b2lkIDAhPT1kKXtudWxsPT09ZC5fY2FjaGVJbmRleCYmKCsrZC5yZWZlcmVuY2VDb3VudCx0aGlzLl9hZGRJbmFjdGl2ZUJpbmRpbmcoZCxzLGwpKTtjb250aW51ZX1kPW5ldyBMZ3QoS2d0LmNyZWF0ZShuLGwsZSYmZS5fcHJvcGVydHlCaW5kaW5nc1t0XS5iaW5kaW5nLnBhcnNlZFBhdGgpLGkuVmFsdWVUeXBlTmFtZSxpLmdldFZhbHVlU2l6ZSgpKSwrK2QucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKGQscyxsKSxhW3RdPWR9clt0XS5yZXN1bHRCdWZmZXI9ZC5idWZmZXJ9fV9hY3RpdmF0ZUFjdGlvbih0KXtpZighdGhpcy5faXNBY3RpdmVBY3Rpb24odCkpe2lmKG51bGw9PT10Ll9jYWNoZUluZGV4KXtjb25zdCBlPSh0Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QpLnV1aWQsbj10Ll9jbGlwLnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwW25dO3RoaXMuX2JpbmRBY3Rpb24odCxvJiZvLmtub3duQWN0aW9uc1swXSksdGhpcy5fYWRkSW5hY3RpdmVBY3Rpb24odCxuLGUpfWNvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PW4udXNlQ291bnQrKyYmKHRoaXMuX2xlbmRCaW5kaW5nKG4pLG4uc2F2ZU9yaWdpbmFsU3RhdGUoKSl9dGhpcy5fbGVuZEFjdGlvbih0KX19X2RlYWN0aXZhdGVBY3Rpb24odCl7aWYodGhpcy5faXNBY3RpdmVBY3Rpb24odCkpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi51c2VDb3VudCYmKG4ucmVzdG9yZU9yaWdpbmFsU3RhdGUoKSx0aGlzLl90YWtlQmFja0JpbmRpbmcobikpfXRoaXMuX3Rha2VCYWNrQWN0aW9uKHQpfX1faW5pdE1lbW9yeU1hbmFnZXIoKXt0aGlzLl9hY3Rpb25zPVtdLHRoaXMuX25BY3RpdmVBY3Rpb25zPTAsdGhpcy5fYWN0aW9uc0J5Q2xpcD17fSx0aGlzLl9iaW5kaW5ncz1bXSx0aGlzLl9uQWN0aXZlQmluZGluZ3M9MCx0aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU9e30sdGhpcy5fY29udHJvbEludGVycG9sYW50cz1bXSx0aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cz0wO2NvbnN0IHQ9dGhpczt0aGlzLnN0YXRzPXthY3Rpb25zOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fYWN0aW9ucy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0Ll9uQWN0aXZlQWN0aW9uc319LGJpbmRpbmdzOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fYmluZGluZ3MubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUJpbmRpbmdzfX0sY29udHJvbEludGVycG9sYW50czp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2NvbnRyb2xJbnRlcnBvbGFudHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHN9fX19X2lzQWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dC5fY2FjaGVJbmRleDtyZXR1cm4gbnVsbCE9PWUmJmU8dGhpcy5fbkFjdGl2ZUFjdGlvbnN9X2FkZEluYWN0aXZlQWN0aW9uKHQsZSxuKXtjb25zdCBvPXRoaXMuX2FjdGlvbnMsaT10aGlzLl9hY3Rpb25zQnlDbGlwO2xldCBhPWlbZV07aWYodm9pZCAwPT09YSlhPXtrbm93bkFjdGlvbnM6W3RdLGFjdGlvbkJ5Um9vdDp7fX0sdC5fYnlDbGlwQ2FjaGVJbmRleD0wLGlbZV09YTtlbHNle2NvbnN0IGU9YS5rbm93bkFjdGlvbnM7dC5fYnlDbGlwQ2FjaGVJbmRleD1lLmxlbmd0aCxlLnB1c2godCl9dC5fY2FjaGVJbmRleD1vLmxlbmd0aCxvLnB1c2godCksYS5hY3Rpb25CeVJvb3Rbbl09dH1fcmVtb3ZlSW5hY3RpdmVBY3Rpb24odCl7Y29uc3QgZT10aGlzLl9hY3Rpb25zLG49ZVtlLmxlbmd0aC0xXSxvPXQuX2NhY2hlSW5kZXg7bi5fY2FjaGVJbmRleD1vLGVbb109bixlLnBvcCgpLHQuX2NhY2hlSW5kZXg9bnVsbDtjb25zdCBpPXQuX2NsaXAudXVpZCxhPXRoaXMuX2FjdGlvbnNCeUNsaXAscj1hW2ldLHM9ci5rbm93bkFjdGlvbnMsbD1zW3MubGVuZ3RoLTFdLGM9dC5fYnlDbGlwQ2FjaGVJbmRleDtsLl9ieUNsaXBDYWNoZUluZGV4PWMsc1tjXT1sLHMucG9wKCksdC5fYnlDbGlwQ2FjaGVJbmRleD1udWxsO2RlbGV0ZSByLmFjdGlvbkJ5Um9vdFsodC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkXSwwPT09cy5sZW5ndGgmJmRlbGV0ZSBhW2ldLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24odCl9X3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24odCl7Y29uc3QgZT10Ll9wcm9wZXJ0eUJpbmRpbmdzO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dCE9PW47Kyt0KXtjb25zdCBuPWVbdF07MD09LS1uLnJlZmVyZW5jZUNvdW50JiZ0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcobil9fV9sZW5kQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXQuX2NhY2hlSW5kZXgsbz10aGlzLl9uQWN0aXZlQWN0aW9ucysrLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X3Rha2VCYWNrQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXQuX2NhY2hlSW5kZXgsbz0tLXRoaXMuX25BY3RpdmVBY3Rpb25zLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X2FkZEluYWN0aXZlQmluZGluZyh0LGUsbil7Y29uc3Qgbz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsaT10aGlzLl9iaW5kaW5ncztsZXQgYT1vW2VdO3ZvaWQgMD09PWEmJihhPXt9LG9bZV09YSksYVtuXT10LHQuX2NhY2hlSW5kZXg9aS5sZW5ndGgsaS5wdXNoKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcodCl7Y29uc3QgZT10aGlzLl9iaW5kaW5ncyxuPXQuYmluZGluZyxvPW4ucm9vdE5vZGUudXVpZCxpPW4ucGF0aCxhPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxyPWFbb10scz1lW2UubGVuZ3RoLTFdLGw9dC5fY2FjaGVJbmRleDtzLl9jYWNoZUluZGV4PWwsZVtsXT1zLGUucG9wKCksZGVsZXRlIHJbaV0sMD09PU9iamVjdC5rZXlzKHIpLmxlbmd0aCYmZGVsZXRlIGFbb119X2xlbmRCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10Ll9jYWNoZUluZGV4LG89dGhpcy5fbkFjdGl2ZUJpbmRpbmdzKyssaT1lW29dO3QuX2NhY2hlSW5kZXg9byxlW29dPXQsaS5fY2FjaGVJbmRleD1uLGVbbl09aX1fdGFrZUJhY2tCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10Ll9jYWNoZUluZGV4LG89LS10aGlzLl9uQWN0aXZlQmluZGluZ3MsaT1lW29dO3QuX2NhY2hlSW5kZXg9byxlW29dPXQsaS5fY2FjaGVJbmRleD1uLGVbbl09aX1fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpe2NvbnN0IHQ9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxlPXRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzKys7bGV0IG49dFtlXTtyZXR1cm4gdm9pZCAwPT09biYmKG49bmV3IG9ndChuZXcgRmxvYXQzMkFycmF5KDIpLG5ldyBGbG9hdDMyQXJyYXkoMiksMSx0aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzUmVzdWx0QnVmZmVyKSxuLl9fY2FjaGVJbmRleD1lLHRbZV09biksbn1fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCl7Y29uc3QgZT10aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzLG49dC5fX2NhY2hlSW5kZXgsbz0tLXRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzLGk9ZVtvXTt0Ll9fY2FjaGVJbmRleD1vLGVbb109dCxpLl9fY2FjaGVJbmRleD1uLGVbbl09aX1jbGlwQWN0aW9uKHQsZSxuKXtjb25zdCBvPWV8fHRoaXMuX3Jvb3QsaT1vLnV1aWQ7bGV0IGE9InN0cmluZyI9PXR5cGVvZiB0P3VndC5maW5kQnlOYW1lKG8sdCk6dDtjb25zdCByPW51bGwhPT1hP2EudXVpZDp0LHM9dGhpcy5fYWN0aW9uc0J5Q2xpcFtyXTtsZXQgbD1udWxsO2lmKHZvaWQgMD09PW4mJihuPW51bGwhPT1hP2EuYmxlbmRNb2RlOk1zdCksdm9pZCAwIT09cyl7Y29uc3QgdD1zLmFjdGlvbkJ5Um9vdFtpXTtpZih2b2lkIDAhPT10JiZ0LmJsZW5kTW9kZT09PW4pcmV0dXJuIHQ7bD1zLmtub3duQWN0aW9uc1swXSxudWxsPT09YSYmKGE9bC5fY2xpcCl9aWYobnVsbD09PWEpcmV0dXJuIG51bGw7Y29uc3QgYz1uZXcgSmd0KHRoaXMsYSxlLG4pO3JldHVybiB0aGlzLl9iaW5kQWN0aW9uKGMsbCksdGhpcy5fYWRkSW5hY3RpdmVBY3Rpb24oYyxyLGkpLGN9ZXhpc3RpbmdBY3Rpb24odCxlKXtjb25zdCBuPWV8fHRoaXMuX3Jvb3Qsbz1uLnV1aWQsaT0ic3RyaW5nIj09dHlwZW9mIHQ/dWd0LmZpbmRCeU5hbWUobix0KTp0LGE9dGhpcy5fYWN0aW9uc0J5Q2xpcFtpP2kudXVpZDp0XTtyZXR1cm4gdm9pZCAwIT09YSYmYS5hY3Rpb25CeVJvb3Rbb118fG51bGx9c3RvcEFsbEFjdGlvbigpe2NvbnN0IHQ9dGhpcy5fYWN0aW9ucztmb3IobGV0IGU9dGhpcy5fbkFjdGl2ZUFjdGlvbnMtMTtlPj0wOy0tZSl0W2VdLnN0b3AoKTtyZXR1cm4gdGhpc311cGRhdGUodCl7Y29uc3QgZT10aGlzLl9hY3Rpb25zLG49dGhpcy5fbkFjdGl2ZUFjdGlvbnMsbz10aGlzLnRpbWUrPXQqPXRoaXMudGltZVNjYWxlLGk9TWF0aC5zaWduKHQpLGE9dGhpcy5fYWNjdUluZGV4Xj0xO2ZvcihsZXQgcj0wO3IhPT1uOysrcil7ZVtyXS5fdXBkYXRlKG8sdCxpLGEpfWNvbnN0IHI9dGhpcy5fYmluZGluZ3Mscz10aGlzLl9uQWN0aXZlQmluZGluZ3M7Zm9yKGxldCB0PTA7dCE9PXM7Kyt0KXJbdF0uYXBwbHkoYSk7cmV0dXJuIHRoaXN9c2V0VGltZSh0KXt0aGlzLnRpbWU9MDtmb3IobGV0IHQ9MDt0PHRoaXMuX2FjdGlvbnMubGVuZ3RoO3QrKyl0aGlzLl9hY3Rpb25zW3RdLnRpbWU9MDtyZXR1cm4gdGhpcy51cGRhdGUodCl9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9yb290fXVuY2FjaGVDbGlwKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXQudXVpZCxvPXRoaXMuX2FjdGlvbnNCeUNsaXAsaT1vW25dO2lmKHZvaWQgMCE9PWkpe2NvbnN0IHQ9aS5rbm93bkFjdGlvbnM7Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuIT09bzsrK24pe2NvbnN0IG89dFtuXTt0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG8pO2NvbnN0IGk9by5fY2FjaGVJbmRleCxhPWVbZS5sZW5ndGgtMV07by5fY2FjaGVJbmRleD1udWxsLG8uX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCxhLl9jYWNoZUluZGV4PWksZVtpXT1hLGUucG9wKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbihvKX1kZWxldGUgb1tuXX19dW5jYWNoZVJvb3QodCl7Y29uc3QgZT10LnV1aWQsbj10aGlzLl9hY3Rpb25zQnlDbGlwO2Zvcihjb25zdCB0IGluIG4pe2NvbnN0IG89blt0XS5hY3Rpb25CeVJvb3RbZV07dm9pZCAwIT09byYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24obyksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24obykpfWNvbnN0IG89dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lW2VdO2lmKHZvaWQgMCE9PW8pZm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1vW3RdO2UucmVzdG9yZU9yaWdpbmFsU3RhdGUoKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcoZSl9fXVuY2FjaGVBY3Rpb24odCxlKXtjb25zdCBuPXRoaXMuZXhpc3RpbmdBY3Rpb24odCxlKTtudWxsIT09biYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24obiksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24obikpfX0pLnByb3RvdHlwZS5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlcj1uZXcgRmxvYXQzMkFycmF5KDEpOyhjbGFzcyBleHRlbmRzIGx1dHtjb25zdHJ1Y3Rvcih0LGUsbj0xKXtzdXBlcih0LGUpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1ufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfWNsb25lKHQpe2NvbnN0IGU9c3VwZXIuY2xvbmUodCk7cmV0dXJuIGUubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsZX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMCxlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9fSkucHJvdG90eXBlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI9ITA7Y29uc3QgUWd0PW5ldyBpbHQsJGd0PW5ldyB6bHQsdGh0PW5ldyB6bHQ7ZnVuY3Rpb24gZWh0KHQpe2NvbnN0IGU9W107dCYmdC5pc0JvbmUmJmUucHVzaCh0KTtmb3IobGV0IG49MDtuPHQuY2hpbGRyZW4ubGVuZ3RoO24rKyllLnB1c2guYXBwbHkoZSxlaHQodC5jaGlsZHJlbltuXSkpO3JldHVybiBlfWNvbnN0IG5odD1uZXcgRmxvYXQzMkFycmF5KDEpO2Z1bmN0aW9uIG9odCh0LGUsbil7aWYoMT09PW4pcmV0dXJuIG5ldyBac3QoZSk7Y29uc3Qgbz16OShlKTtpZighbyl0aHJvdyBuZXcgRXJyb3IoYGQzIGZhaWxlZCB0byByZWNvZ25pemUgdGhlIGNvbG9yOiAke2V9YCk7cmV0dXJuIG5ldyBac3QoTnR0KG8sdCkoMS1uKSl9dmFyIGlodCxhaHQ7ZnVuY3Rpb24gcmh0KHQsZSl7Y29uc3Qgbj1lLmxlbmd0aC8yO2xldCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtvJiZvLmNvdW50PT09MypufHwobz1uZXcgeGN0KG5ldyBGbG9hdDMyQXJyYXkoMypuKSwzKSx0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG8pKTtjb25zdCBpPW8uYXJyYXk7Zm9yKGxldCB0PTA7dDxuO3QrKylpWzMqdF09ZVsyKnRdLGlbMyp0KzFdPWVbMip0KzFdO28ubmVlZHNVcGRhdGU9ITAsdC5zZXREcmF3UmFuZ2UoMCwzKm4pLHQuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl9ZnVuY3Rpb24gc2h0KHQsZSxuKXtjb25zdCBvPU1hdGgubWF4KGUubGVuZ3RoLzItMSwwKSxpPTIqbyozLGE9MyppO2xldCByPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtyJiZyLmNvdW50PT09aXx8KHI9bmV3IHhjdChuZXcgRmxvYXQzMkFycmF5KGEpLDMpLHQuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIscikpO2NvbnN0IHM9ci5hcnJheTtmb3IobGV0IHQ9MDt0PG87dCsrKXtjb25zdFtvLGksYSxyXT1bZVsyKnRdLGVbMip0KzFdLGVbMip0KzJdLGVbMip0KzNdXSxsPW5ldyBGc3QobyxpKSxjPW5ldyBGc3QoYSxyKSxkPW5ldyBGc3QoYS1vLHItaSkscD1uZXcgRnN0KC1kLnksZC54KS5zZXRMZW5ndGgobi8yKSxtPWwuY2xvbmUoKS5hZGQocCksdT1sLmNsb25lKCkuc3ViKHApLGY9Yy5jbG9uZSgpLmFkZChwKSxnPWMuY2xvbmUoKS5zdWIocCksaD1bbS54LG0ueSwwLHUueCx1LnksMCxmLngsZi55LDAsZi54LGYueSwwLHUueCx1LnksMCxnLngsZy55LDBdO3Muc2V0KGgsdCpoLmxlbmd0aCl9ci5uZWVkc1VwZGF0ZT0hMCx0LnNldERyYXdSYW5nZSgwLGEpLHQuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl9ZnVuY3Rpb24gbGh0KHQsZSxuLG8pe2NvbnN0e3Zpc2libGU6aSxjb2xvcjphLG9wYWNpdHk6cn09bztpZihBcnJheS5pc0FycmF5KGUubWF0ZXJpYWwpKXRocm93IG5ldyBFcnJvcigiSW52YXJpYW50IGVycm9yOiBvbmx5IGV4cGVjdCBvbmUgbWF0ZXJpYWwgb24gYW4gb2JqZWN0Iik7Y29uc3Qgcz1lLm1hdGVyaWFsO2lmKHMudmlzaWJsZSE9PWkmJihzLnZpc2libGU9aSxzLm5lZWRzVXBkYXRlPSEwKSwhaSlyZXR1cm4hMTtjb25zdCBsPW9odCh0LGEsbnVsbCE9cj9yOjEpLGM9bihlLmdlb21ldHJ5KTtlLmdlb21ldHJ5IT09YyYmKGUuZ2VvbWV0cnk9Yyk7cmV0dXJuIHMuY29sb3IuZXF1YWxzKGwpfHwocy5jb2xvci5zZXQobCkscy5uZWVkc1VwZGF0ZT0hMCksITB9bmV3IEludDMyQXJyYXkobmh0LmJ1ZmZlciksdGZ0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLmxvZygiVEhSRUUuQ3VydmUuY3JlYXRlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCIpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGZ0LnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5nZXRQb2ludD1lLHR9LENmdC5wcm90b3R5cGUuZnJvbVBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXRoOiAuZnJvbVBvaW50cygpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21Qb2ludHMoKS4iKSx0aGlzLnNldEZyb21Qb2ludHModCl9LGNsYXNzIGV4dGVuZHMgWXV0e2NvbnN0cnVjdG9yKHQ9MTAsZT0xMCxuPTQ0NzM5MjQsbz04OTQ3ODQ4KXtuPW5ldyBac3Qobiksbz1uZXcgWnN0KG8pO2NvbnN0IGk9ZS8yLGE9dC9lLHI9dC8yLHM9W10sbD1bXTtmb3IobGV0IHQ9MCxjPTAsZD0tcjt0PD1lO3QrKyxkKz1hKXtzLnB1c2goLXIsMCxkLHIsMCxkKSxzLnB1c2goZCwwLC1yLGQsMCxyKTtjb25zdCBlPXQ9PT1pP246bztlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zfWNvbnN0IGM9bmV3IE5jdDtjLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB3Y3QocywzKSksYy5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgd2N0KGwsMykpO3N1cGVyKGMsbmV3IEh1dCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJHcmlkSGVscGVyIn19LnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HcmlkSGVscGVyOiBzZXRDb2xvcnMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLCBwYXNzIHRoZW0gaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQuIil9LGNsYXNzIGV4dGVuZHMgWXV0e2NvbnN0cnVjdG9yKHQpe2NvbnN0IGU9ZWh0KHQpLG49bmV3IE5jdCxvPVtdLGk9W10sYT1uZXcgWnN0KDAsMCwxKSxyPW5ldyBac3QoMCwxLDApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF07bi5wYXJlbnQmJm4ucGFyZW50LmlzQm9uZSYmKG8ucHVzaCgwLDAsMCksby5wdXNoKDAsMCwwKSxpLnB1c2goYS5yLGEuZyxhLmIpLGkucHVzaChyLnIsci5nLHIuYikpfW4uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHdjdChvLDMpKSxuLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyB3Y3QoaSwzKSk7c3VwZXIobixuZXcgSHV0KHt2ZXJ0ZXhDb2xvcnM6ITAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsdG9uZU1hcHBlZDohMSx0cmFuc3BhcmVudDohMH0pKSx0aGlzLnR5cGU9IlNrZWxldG9uSGVscGVyIix0aGlzLmlzU2tlbGV0b25IZWxwZXI9ITAsdGhpcy5yb290PXQsdGhpcy5ib25lcz1lLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2NvbnN0IGU9dGhpcy5ib25lcyxuPXRoaXMuZ2VvbWV0cnksbz1uLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTt0aHQuY29weSh0aGlzLnJvb3QubWF0cml4V29ybGQpLmludmVydCgpO2ZvcihsZXQgdD0wLG49MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3QgaT1lW3RdO2kucGFyZW50JiZpLnBhcmVudC5pc0JvbmUmJigkZ3QubXVsdGlwbHlNYXRyaWNlcyh0aHQsaS5tYXRyaXhXb3JsZCksUWd0LnNldEZyb21NYXRyaXhQb3NpdGlvbigkZ3QpLG8uc2V0WFlaKG4sUWd0LngsUWd0LnksUWd0LnopLCRndC5tdWx0aXBseU1hdHJpY2VzKHRodCxpLnBhcmVudC5tYXRyaXhXb3JsZCksUWd0LnNldEZyb21NYXRyaXhQb3NpdGlvbigkZ3QpLG8uc2V0WFlaKG4rMSxRZ3QueCxRZ3QueSxRZ3Queiksbis9Mil9bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIikubmVlZHNVcGRhdGU9ITAsc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCl9fS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tlbGV0b25IZWxwZXI6IHVwZGF0ZSgpIG5vIGxvbmdlciBuZWVkcyB0byBiZSBjYWxsZWQuIil9LGJndC5wcm90b3R5cGUuZXh0cmFjdFVybEJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTG9hZGVyOiAuZXh0cmFjdFVybEJhc2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoKSBpbnN0ZWFkLiIpLGNsYXNze3N0YXRpYyBkZWNvZGVUZXh0KHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXIpcmV0dXJuKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKHQpO2xldCBlPSIiO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7bjxvO24rKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbbl0pO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9Y2F0Y2godCl7cmV0dXJuIGV9fXN0YXRpYyBleHRyYWN0VXJsQmFzZSh0KXtjb25zdCBlPXQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PWU/Ii4vIjp0LnN1YnN0cigwLGUrMSl9c3RhdGljIHJlc29sdmVVUkwodCxlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fCIiPT09dD8iIjooL15odHRwcz86XC9cLy9pLnRlc3QoZSkmJi9eXC8vLnRlc3QodCkmJihlPWUucmVwbGFjZSgvKF5odHRwcz86XC9cL1teXC9dKykuKi9pLCIkMSIpKSwvXihodHRwcz86KT9cL1wvL2kudGVzdCh0KXx8L15kYXRhOi4qLC4qJC9pLnRlc3QodCl8fC9eYmxvYjouKiQvaS50ZXN0KHQpP3Q6ZSt0KX19LmV4dHJhY3RVcmxCYXNlKHQpfSxiZ3QuSGFuZGxlcnM9e2FkZDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuYWRkKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmFkZEhhbmRsZXIoKSBpbnN0ZWFkLiIpfSxnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmdldCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5nZXRIYW5kbGVyKCkgaW5zdGVhZC4iKX19LHNsdC5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sc2x0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX0sc2x0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkJveD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KHQpfSxzbHQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uU3BoZXJlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LHNsdC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4iKSx0aGlzLmdldFNpemUodCl9LHdsdC5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX0sYmR0LnByb3RvdHlwZS5zZXRGcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkZydXN0dW06IC5zZXRGcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoKS4iKSx0aGlzLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KHQpfSxMc3QucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxlKX0sTHN0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXgzKCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXgzKHRoaXMpfSxMc3QucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sTHN0LnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LExzdC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sTHN0LnByb3RvdHlwZS5nZXRJbnZlcnNlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5nZXRJbnZlcnNlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeEludi5jb3B5KCBtYXRyaXggKS5pbnZlcnQoKTsgaW5zdGVhZC4iKSx0aGlzLmNvcHkodCkuaW52ZXJ0KCl9LHpsdC5wcm90b3R5cGUuZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5leHRyYWN0UG9zaXRpb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5jb3B5UG9zaXRpb24oKS4iKSx0aGlzLmNvcHlQb3NpdGlvbih0KX0semx0LnByb3RvdHlwZS5mbGF0dGVuVG9BcnJheU9mZnNldD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIiksdGhpcy50b0FycmF5KHQsZSl9LHpsdC5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0UG9zaXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy5zZXRGcm9tTWF0cml4UG9zaXRpb24oIG1hdHJpeCApIGluc3RlYWQuIiksKG5ldyBpbHQpLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywzKX0semx0LnByb3RvdHlwZS5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKS4iKSx0aGlzLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpfSx6bHQucHJvdG90eXBlLm11bHRpcGx5VG9BcnJheT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VG9BcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHpsdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0semx0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yNCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSx6bHQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0semx0LnByb3RvdHlwZS5yb3RhdGVBeGlzPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy50cmFuc2Zvcm1EaXJlY3Rpb24oIG1hdHJpeCApIGluc3RlYWQuIiksdC50cmFuc2Zvcm1EaXJlY3Rpb24odGhpcyl9LHpsdC5wcm90b3R5cGUuY3Jvc3NWZWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmNyb3NzVmVjdG9yKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LHpsdC5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHpsdC5wcm90b3R5cGUucm90YXRlWD1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVYKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0semx0LnByb3RvdHlwZS5yb3RhdGVZPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSx6bHQucHJvdG90eXBlLnJvdGF0ZVo9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHpsdC5wcm90b3R5cGUucm90YXRlQnlBeGlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUJ5QXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHpsdC5wcm90b3R5cGUuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhdHRyaWJ1dGUuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSx6bHQucHJvdG90eXBlLmFwcGx5VG9WZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHpsdC5wcm90b3R5cGUubWFrZUZydXN0dW09ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlRnJ1c3R1bSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAubWFrZVBlcnNwZWN0aXZlKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApIGluc3RlYWQuIiksdGhpcy5tYWtlUGVyc3BlY3RpdmUodCxlLG8sbixpLGEpfSx6bHQucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX0sZmR0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkxpbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5pc0ludGVyc2VjdGlvbkxpbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzTGluZSgpLiIpLHRoaXMuaW50ZXJzZWN0c0xpbmUodCl9LG9sdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgaXMgbm93IHZlY3Rvci5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24gKSBpbnN0ZWFkLiIpLHQuYXBwbHlRdWF0ZXJuaW9uKHRoaXMpfSxvbHQucHJvdG90eXBlLmludmVyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuaW52ZXJzZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gaW52ZXJ0KCkuIiksdGhpcy5pbnZlcnQoKX0sTmx0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkJveD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LE5sdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25QbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1BsYW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzUGxhbmUodCl9LE5sdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25TcGhlcmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzU3BoZXJlKCkuIiksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKHQpfSxiY3QucHJvdG90eXBlLmFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmFyZWEoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRBcmVhKCkuIiksdGhpcy5nZXRBcmVhKCl9LGJjdC5wcm90b3R5cGUuYmFyeWNvb3JkRnJvbVBvaW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSx0aGlzLmdldEJhcnljb29yZCh0LGUpfSxiY3QucHJvdG90eXBlLm1pZHBvaW50PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubWlkcG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRNaWRwb2ludCgpLiIpLHRoaXMuZ2V0TWlkcG9pbnQodCl9LGJjdC5wcm90b3R5cGVub3JtYWw9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSx0aGlzLmdldE5vcm1hbCh0KX0sYmN0LnByb3RvdHlwZS5wbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLnBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0UGxhbmUoKS4iKSx0aGlzLmdldFBsYW5lKHQpfSxiY3QuYmFyeWNvb3JkRnJvbVBvaW50PWZ1bmN0aW9uKHQsZSxuLG8saSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSxiY3QuZ2V0QmFyeWNvb3JkKHQsZSxuLG8saSl9LGJjdC5ub3JtYWw9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSxiY3QuZ2V0Tm9ybWFsKHQsZSxuLG8pfSxNZnQucHJvdG90eXBlLmV4dHJhY3RBbGxQb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5leHRyYWN0QWxsUG9pbnRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5leHRyYWN0UG9pbnRzKCkgaW5zdGVhZC4iKSx0aGlzLmV4dHJhY3RQb2ludHModCl9LE1mdC5wcm90b3R5cGUuZXh0cnVkZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJ1ZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXh0cnVkZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgS2Z0KHRoaXMsdCl9LE1mdC5wcm90b3R5cGUubWFrZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAubWFrZUdlb21ldHJ5KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFNoYXBlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyBRZnQodGhpcyx0KX0sRnN0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSxGc3QucHJvdG90eXBlLmRpc3RhbmNlVG9NYW5oYXR0YW49ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKHQpfSxGc3QucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSxpbHQucHJvdG90eXBlLnNldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21Sb3RhdGlvbk1hdHJpeCgpIGluc3RlYWQuIil9LGlsdC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUXVhdGVybmlvbj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21RdWF0ZXJuaW9uKCkgaW5zdGVhZC4iKX0saWx0LnByb3RvdHlwZS5nZXRQb3NpdGlvbkZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFBvc2l0aW9uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhQb3NpdGlvbigpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQpfSxpbHQucHJvdG90eXBlLmdldFNjYWxlRnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0U2NhbGVGcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFNjYWxlKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4U2NhbGUodCl9LGlsdC5wcm90b3R5cGUuZ2V0Q29sdW1uRnJvbU1hdHJpeD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRDb2x1bW5Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeENvbHVtbigpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbihlLHQpfSxpbHQucHJvdG90eXBlLmFwcGx5UHJvamVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlQcm9qZWN0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5hcHBseU1hdHJpeDQoIG0gKSBpbnN0ZWFkLiIpLHRoaXMuYXBwbHlNYXRyaXg0KHQpfSxpbHQucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LGlsdC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8odCl9LGlsdC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LHRsdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sdGx0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0scmN0LnByb3RvdHlwZS5nZXRDaGlsZEJ5TmFtZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldENoaWxkQnlOYW1lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0T2JqZWN0QnlOYW1lKCkuIiksdGhpcy5nZXRPYmplY3RCeU5hbWUodCl9LHJjdC5wcm90b3R5cGUucmVuZGVyRGVwdGg9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAucmVuZGVyRGVwdGggaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5yZW5kZXJPcmRlciwgaW5zdGVhZC4iKX0scmN0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAudHJhbnNsYXRlT25BeGlzKCBheGlzLCBkaXN0YW5jZSApIGluc3RlYWQuIiksdGhpcy50cmFuc2xhdGVPbkF4aXMoZSx0KX0scmN0LnByb3RvdHlwZS5nZXRXb3JsZFJvdGF0aW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFJvdGF0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLk9iamVjdDNELmdldFdvcmxkUXVhdGVybmlvbiggdGFyZ2V0ICkgaW5zdGVhZC4iKX0scmN0LnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJjdC5wcm90b3R5cGUse2V1bGVyT3JkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpLHRoaXMucm90YXRpb24ub3JkZXJ9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpLHRoaXMucm90YXRpb24ub3JkZXI9dH19LHVzZVF1YXRlcm5pb246e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9fX0pLFFjdC5wcm90b3R5cGUuc2V0RHJhd01vZGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuc2V0RHJhd01vZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhRY3QucHJvdG90eXBlLHtkcmF3TW9kZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5kcmF3TW9kZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiIpLDB9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5kcmF3TW9kZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfX19KSxFdXQucHJvdG90eXBlLmluaXRCb25lcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoOiBpbml0Qm9uZXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyZHQucHJvdG90eXBlLnNldExlbnM9ZnVuY3Rpb24odCxlKXtjb25zb2xlLndhcm4oIlRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhLnNldExlbnMgaXMgZGVwcmVjYXRlZC4gVXNlIC5zZXRGb2NhbExlbmd0aCBhbmQgLmZpbG1HYXVnZSBmb3IgYSBwaG90b2dyYXBoaWMgc2V0dXAuIiksdm9pZCAwIT09ZSYmKHRoaXMuZmlsbUdhdWdlPWUpLHRoaXMuc2V0Rm9jYWxMZW5ndGgodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHhndC5wcm90b3R5cGUse29ubHlTaGFkb3c6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5vbmx5U2hhZG93IGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dDYW1lcmFGb3Y6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRm92IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mb3YuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZvdj10fX0sc2hhZG93Q2FtZXJhTGVmdDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFMZWZ0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5sZWZ0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5sZWZ0PXR9fSxzaGFkb3dDYW1lcmFSaWdodDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFSaWdodCBpcyBub3cgLnNoYWRvdy5jYW1lcmEucmlnaHQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLnJpZ2h0PXR9fSxzaGFkb3dDYW1lcmFUb3A6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVG9wIGlzIG5vdyAuc2hhZG93LmNhbWVyYS50b3AuIiksdGhpcy5zaGFkb3cuY2FtZXJhLnRvcD10fX0sc2hhZG93Q2FtZXJhQm90dG9tOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUJvdHRvbSBpcyBub3cgLnNoYWRvdy5jYW1lcmEuYm90dG9tLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5ib3R0b209dH19LHNoYWRvd0NhbWVyYU5lYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTmVhciBpcyBub3cgLnNoYWRvdy5jYW1lcmEubmVhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubmVhcj10fX0sc2hhZG93Q2FtZXJhRmFyOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZhciBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZmFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mYXI9dH19LHNoYWRvd0NhbWVyYVZpc2libGU6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFWaXNpYmxlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQ2FtZXJhSGVscGVyKCBsaWdodC5zaGFkb3cuY2FtZXJhICkgaW5zdGVhZC4iKX19LHNoYWRvd0JpYXM6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93QmlhcyBpcyBub3cgLnNoYWRvdy5iaWFzLiIpLHRoaXMuc2hhZG93LmJpYXM9dH19LHNoYWRvd0RhcmtuZXNzOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93RGFya25lc3MgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd01hcFdpZHRoOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcFdpZHRoIGlzIG5vdyAuc2hhZG93Lm1hcFNpemUud2lkdGguIiksdGhpcy5zaGFkb3cubWFwU2l6ZS53aWR0aD10fX0sc2hhZG93TWFwSGVpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcEhlaWdodCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLmhlaWdodC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLmhlaWdodD10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh4Y3QucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuIiksdGhpcy5hcnJheS5sZW5ndGh9fSxkeW5hbWljOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnVzYWdlPT09d3N0fSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmR5bmFtaWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2Uod3N0KX19fSkseGN0LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKCEwPT09dD93c3Q6UHN0KSx0aGlzfSx4Y3QucHJvdG90eXBlLmNvcHlJbmRpY2VzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5jb3B5SW5kaWNlc0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0seGN0LnByb3RvdHlwZS5zZXRBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9LE5jdC5wcm90b3R5cGUuYWRkSW5kZXg9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEluZGV4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0SW5kZXgoKS4iKSx0aGlzLnNldEluZGV4KHQpfSxOY3QucHJvdG90eXBlLmFkZEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0QXR0cmlidXRlKCkuIiksZSYmZS5pc0J1ZmZlckF0dHJpYnV0ZXx8ZSYmZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlPyJpbmRleCI9PT10Pyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LmFkZEF0dHJpYnV0ZTogVXNlIC5zZXRJbmRleCgpIGZvciBpbmRleCBhdHRyaWJ1dGUuIiksdGhpcy5zZXRJbmRleChlKSx0aGlzKTp0aGlzLnNldEF0dHJpYnV0ZSh0LGUpOihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4iKSx0aGlzLnNldEF0dHJpYnV0ZSh0LG5ldyB4Y3QoYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSkpKX0sTmN0LnByb3RvdHlwZS5hZGREcmF3Q2FsbD1mdW5jdGlvbih0LGUsbil7dm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIGluZGV4T2Zmc2V0LiIpLGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIGlzIG5vdyAuYWRkR3JvdXAoKS4iKSx0aGlzLmFkZEdyb3VwKHQsZSl9LE5jdC5wcm90b3R5cGUuY2xlYXJEcmF3Q2FsbHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY2xlYXJEcmF3Q2FsbHMoKSBpcyBub3cgLmNsZWFyR3JvdXBzKCkuIiksdGhpcy5jbGVhckdyb3VwcygpfSxOY3QucHJvdG90eXBlLmNvbXB1dGVPZmZzZXRzPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVPZmZzZXRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sTmN0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5yZW1vdmVBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5kZWxldGVBdHRyaWJ1dGUoKS4iKSx0aGlzLmRlbGV0ZUF0dHJpYnV0ZSh0KX0sTmN0LnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE5jdC5wcm90b3R5cGUse2RyYXdjYWxsczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuZHJhd2NhbGxzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319LG9mZnNldHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAub2Zmc2V0cyBoYXMgYmVlbiByZW5hbWVkIHRvIC5ncm91cHMuIiksdGhpcy5ncm91cHN9fX0pLGx1dC5wcm90b3R5cGUuc2V0RHluYW1pYz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKCEwPT09dD93c3Q6UHN0KSx0aGlzfSxsdXQucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5zZXRBcnJheSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgQnVmZmVyR2VvbWV0cnkgLnNldEF0dHJpYnV0ZSB0byByZXBsYWNlL3Jlc2l6ZSBhdHRyaWJ1dGUgYnVmZmVycyIpfSxLZnQucHJvdG90eXBlLmdldEFycmF5cz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmdldEFycmF5cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEtmdC5wcm90b3R5cGUuYWRkU2hhcGVMaXN0PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGVMaXN0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sS2Z0LnByb3RvdHlwZS5hZGRTaGFwZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmFkZFNoYXBlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc3V0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmU6IC5kaXNwb3NlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoX2N0LnByb3RvdHlwZSx7d3JhcEFyb3VuZDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LG92ZXJkcmF3OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLm92ZXJkcmF3IGhhcyBiZWVuIHJlbW92ZWQuIil9fSx3cmFwUkdCOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLndyYXBSR0IgaGFzIGJlZW4gcmVtb3ZlZC4iKSxuZXcgWnN0fX0sc2hhZGluZzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIiksdGhpcy5mbGF0U2hhZGluZz0xPT09dH19LHN0ZW5jaWxNYXNrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFza30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIiksdGhpcy5zdGVuY2lsRnVuY01hc2s9dH19LHZlcnRleFRhbmdlbnRzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpZHQucHJvdG90eXBlLHtkZXJpdmF0aXZlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKSx0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiBTaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcz10fX19KSxydXQucHJvdG90eXBlLmNsZWFyVGFyZ2V0PWZ1bmN0aW9uKHQsZSxuLG8pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNsZWFyVGFyZ2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRSZW5kZXJUYXJnZXQoKSBhbmQgLmNsZWFyKCkgaW5zdGVhZC4iKSx0aGlzLnNldFJlbmRlclRhcmdldCh0KSx0aGlzLmNsZWFyKGUsbixvKX0scnV0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFuaW1hdGUoKSBpcyBub3cgLnNldEFuaW1hdGlvbkxvb3AoKS4iKSx0aGlzLnNldEFuaW1hdGlvbkxvb3AodCl9LHJ1dC5wcm90b3R5cGUuZ2V0Q3VycmVudFJlbmRlclRhcmdldD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0KCkgaXMgbm93IC5nZXRSZW5kZXJUYXJnZXQoKS4iKSx0aGlzLmdldFJlbmRlclRhcmdldCgpfSxydXQucHJvdG90eXBlLmdldE1heEFuaXNvdHJvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0TWF4QW5pc290cm9weSgpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKS4iKSx0aGlzLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCl9LHJ1dC5wcm90b3R5cGUuZ2V0UHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldFByZWNpc2lvbigpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnByZWNpc2lvbi4iKSx0aGlzLmNhcGFiaWxpdGllcy5wcmVjaXNpb259LHJ1dC5wcm90b3R5cGUucmVzZXRHTFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnJlc2V0R0xTdGF0ZSgpIGlzIG5vdyAuc3RhdGUucmVzZXQoKS4iKSx0aGlzLnN0YXRlLnJlc2V0KCl9LHJ1dC5wcm90b3R5cGUuc3VwcG9ydHNGbG9hdFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9mbG9hdCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpfSxydXQucHJvdG90eXBlLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKX0scnV0LnByb3RvdHlwZS5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNTdGFuZGFyZERlcml2YXRpdmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKX0scnV0LnByb3RvdHlwZS5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfSxydXQucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUFZSVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfSxydXQucHJvdG90eXBlLnN1cHBvcnRzQmxlbmRNaW5NYXg9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNCbGVuZE1pbk1heCgpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdFWFRfYmxlbmRfbWlubWF4JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKX0scnV0LnByb3RvdHlwZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMoKSBpcyBub3cgLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlcy4iKSx0aGlzLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlc30scnV0LnByb3RvdHlwZS5zdXBwb3J0c0luc3RhbmNlZEFycmF5cz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0luc3RhbmNlZEFycmF5cygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKX0scnV0LnByb3RvdHlwZS5lbmFibGVTY2lzc29yVGVzdD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5lbmFibGVTY2lzc29yVGVzdCgpIGlzIG5vdyAuc2V0U2Npc3NvclRlc3QoKS4iKSx0aGlzLnNldFNjaXNzb3JUZXN0KHQpfSxydXQucHJvdG90eXBlLmluaXRNYXRlcmlhbD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmluaXRNYXRlcmlhbCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJ1dC5wcm90b3R5cGUuYWRkUHJlUGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUHJlUGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scnV0LnByb3RvdHlwZS5hZGRQb3N0UGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUG9zdFBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJ1dC5wcm90b3R5cGUudXBkYXRlU2hhZG93TWFwPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudXBkYXRlU2hhZG93TWFwKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scnV0LnByb3RvdHlwZS5zZXRGYWNlQ3VsbGluZz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldEZhY2VDdWxsaW5nKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scnV0LnByb3RvdHlwZS5hbGxvY1RleHR1cmVVbml0PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWxsb2NUZXh0dXJlVW5pdCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJ1dC5wcm90b3R5cGUuc2V0VGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxydXQucHJvdG90eXBlLnNldFRleHR1cmUyRD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUyRCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJ1dC5wcm90b3R5cGUuc2V0VGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlQ3ViZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJ1dC5wcm90b3R5cGUuZ2V0QWN0aXZlTWlwTWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0QWN0aXZlTWlwTWFwTGV2ZWwoKSBpcyBub3cgLmdldEFjdGl2ZU1pcG1hcExldmVsKCkuIiksdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhydXQucHJvdG90eXBlLHtzaGFkb3dNYXBFbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAuZW5hYmxlZH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4iKSx0aGlzLnNoYWRvd01hcC5lbmFibGVkPXR9fSxzaGFkb3dNYXBUeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcFR5cGUgaXMgbm93IC5zaGFkb3dNYXAudHlwZS4iKSx0aGlzLnNoYWRvd01hcC50eXBlPXR9fSxzaGFkb3dNYXBDdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LGNvbnRleHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZ2V0Q29udGV4dCgpIGluc3RlYWQuIiksdGhpcy5nZXRDb250ZXh0KCl9fSx2cjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnZyIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnhyIiksdGhpcy54cn19LGdhbW1hSW5wdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUlucHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCB0aGUgZW5jb2RpbmcgZm9yIHRleHR1cmVzIHZpYSBUZXh0dXJlLmVuY29kaW5nIGluc3RlYWQuIiksITF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKX19LGdhbW1hT3V0cHV0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hT3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCBXZWJHTFJlbmRlcmVyLm91dHB1dEVuY29kaW5nIGluc3RlYWQuIiksdGhpcy5vdXRwdXRFbmNvZGluZz0hMD09PXQ/eHN0OnZzdH19LHRvbmVNYXBwaW5nV2hpdGVQb2ludDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpLDF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sZ2FtbWFGYWN0b3I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUZhY3RvciBoYXMgYmVlbiByZW1vdmVkLiIpLDJ9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hRmFjdG9yIGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFhtdC5wcm90b3R5cGUse2N1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJSZXZlcnNlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyU2luZ2xlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZWx0LnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9dH19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dH19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PXR9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PXR9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PXR9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PXR9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT10fX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz10fX19KSxjbGFzcyBleHRlbmRzIHJjdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4iKTtjb25zdCBlPXRoaXM7cmV0dXJuKG5ldyBGZ3QpLmxvYWQodCwoZnVuY3Rpb24odCl7ZS5zZXRCdWZmZXIodCl9KSksdGhpc30sbGR0LnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLiIpLHRoaXMudXBkYXRlKHQsZSl9LGxkdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLmNsZWFyKCkgaXMgbm93IC5yZW5kZXJUYXJnZXQuY2xlYXIoKS4iKSx0aGlzLnJlbmRlclRhcmdldC5jbGVhcih0LGUsbixvKX0sS3N0LmNyb3NzT3JpZ2luPXZvaWQgMCxLc3QubG9hZFRleHR1cmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5UZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtjb25zdCBpPW5ldyB2Z3Q7aS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtjb25zdCBhPWkubG9hZCh0LG4sdm9pZCAwLG8pO3JldHVybiBlJiYoYS5tYXBwaW5nPWUpLGF9LEtzdC5sb2FkVGV4dHVyZUN1YmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ3ViZVRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IGk9bmV3IE1ndDtpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IGE9aS5sb2FkKHQsbix2b2lkIDAsbyk7cmV0dXJuIGUmJihhLm1hcHBpbmc9ZSksYX0sS3N0LmxvYWRDb21wcmVzc2VkVGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX0sS3N0LmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246R3J0fX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5fX1RIUkVFX18/Y29uc29sZS53YXJuKCJXQVJOSU5HOiBNdWx0aXBsZSBpbnN0YW5jZXMgb2YgVGhyZWUuanMgYmVpbmcgaW1wb3J0ZWQuIik6d2luZG93Ll9fVEhSRUVfXz1HcnQpLChmdW5jdGlvbih0KXt0W3QuQ0lSQ0xFPTBdPSJDSVJDTEUiLHRbdC5MSU5FPTFdPSJMSU5FIix0W3QuVFJJQU5HTEU9Ml09IlRSSUFOR0xFIix0W3QuVFJBUEVaT0lEPTNdPSJUUkFQRVpPSUQifSkoaWh0fHwoaWh0PXt9KSk7Y2xhc3MgY2h0e2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuY29vcmRpbmF0b3I9ZSx0aGlzLnNjZW5lPW5ldyBzdXQsdGhpcy5iYWNrZ3JvdW5kQ29sb3I9IiNmZmYiLEJydCgpJiZ0IGluc3RhbmNlb2YgT2Zmc2NyZWVuQ2FudmFzJiYodC5zdHlsZT10LnN0eWxlfHx7fSksbyYmdC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixvKSx0aGlzLnJlbmRlcmVyPW5ldyBydXQoe2NhbnZhczp0LGFudGlhbGlhczohMCxhbHBoYTohMH0pLHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhuKX1vblJlc2l6ZSh0KXt0aGlzLnJlbmRlcmVyLnNldFNpemUodC53aWR0aCx0LmhlaWdodCl9ZGVzdHJveU9iamVjdCh0KXtjb25zdCBlPXQub2JqM2Q7aWYodGhpcy5zY2VuZS5yZW1vdmUoZSksZSBpbnN0YW5jZW9mIFFjdCl7ZS5nZW9tZXRyeS5kaXNwb3NlKCk7Y29uc3QgdD1BcnJheS5pc0FycmF5KGUubWF0ZXJpYWwpP2UubWF0ZXJpYWw6W2UubWF0ZXJpYWxdO2Zvcihjb25zdCBlIG9mIHQpZS5kaXNwb3NlKCl9fXNldFVzZURhcmtNb2RlKHQpe3RoaXMuYmFja2dyb3VuZENvbG9yPXQ/IiMzMDMwMzAiOiIjZmZmIn1jcmVhdGVPclVwZGF0ZUxpbmVPYmplY3QodCxlLG4pe3ZhciBvO2lmKCF0JiYhbi52aXNpYmxlKXJldHVybiBudWxsO2NvbnN0e3Zpc2libGU6aSx3aWR0aDphfT1uO2lmKCF0KXtjb25zdCB0PW9odCh0aGlzLmJhY2tncm91bmRDb2xvcixuLmNvbG9yLG51bGwhPT0obz1uLm9wYWNpdHkpJiZ2b2lkIDAhPT1vP286MSkscj1uZXcgTmN0LHM9bmV3IEh1dCh7Y29sb3I6dH0pLGw9bmV3IFFjdChyLHMpO3JldHVybiBzLnZpc2libGU9aSxzaHQocixlLGEpLHRoaXMuc2NlbmUuYWRkKGwpLHt0eXBlOmlodC5MSU5FLGRhdGE6ZSxvYmozZDpsLHdpZHRoOmF9fWNvbnN0e2RhdGE6cixvYmozZDpzLHdpZHRoOmx9PXQ7cmV0dXJuIGxodCh0aGlzLmJhY2tncm91bmRDb2xvcixzLCh0PT4oYT09PWwmJnImJlZydChyLGUpfHxzaHQodCxlLGEpLHQpKSxuKT97dHlwZTppaHQuTElORSxkYXRhOmUsb2JqM2Q6cyx3aWR0aDphfTp0fWNyZWF0ZU1lc2godCxlKXtpZighZS52aXNpYmxlKXJldHVybiBudWxsO2NvbnN0e3Zpc2libGU6bixjb2xvcjpvLG9wYWNpdHk6aX09ZSxhPW9odCh0aGlzLmJhY2tncm91bmRDb2xvcixvLG51bGwhPWk/aToxKSxyPW5ldyBDY3Qoe2NvbG9yOmEsdmlzaWJsZTpufSk7cmV0dXJuIG5ldyBRY3QodCxyKX1jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHQsZSxuKXtjb25zdHtzaXplOm99PW4saT1vKk1hdGguc3FydCgzKS8yLGE9bmV3IEZsb2F0MzJBcnJheShbZS54LW8vMixlLnktaS8zLGUueCtvLzIsZS55LWkvMyxlLngsZS55KzIqaS8zXSk7aWYoIXQpe2NvbnN0IHQ9bmV3IE5jdDtyaHQodCxhKTtjb25zdCBvPXRoaXMuY3JlYXRlTWVzaCh0LG4pO3JldHVybiBudWxsPT09bz9udWxsOih0aGlzLnNjZW5lLmFkZChvKSx7dHlwZTppaHQuVFJJQU5HTEUsZGF0YTplLG9iajNkOm99KX1yZXR1cm4gbGh0KHRoaXMuYmFja2dyb3VuZENvbG9yLHQub2JqM2QsKHQ9PihyaHQodCxhKSx0KSksbik/e3R5cGU6aWh0LlRSSUFOR0xFLGRhdGE6ZSxvYmozZDp0Lm9iajNkfTp0fWNyZWF0ZU9yVXBkYXRlQ2lyY2xlT2JqZWN0KHQsZSxuKXtjb25zdHtyYWRpdXM6b309bixpPW5ldyAkdXQobi5yYWRpdXMpO2lmKCF0KXtjb25zdCB0PXRoaXMuY3JlYXRlTWVzaChpLG4pO3JldHVybiBudWxsPT09dD9udWxsOih0LnBvc2l0aW9uLnNldChlLngsZS55LDApLHRoaXMuc2NlbmUuYWRkKHQpLHt0eXBlOmlodC5DSVJDTEUsZGF0YTp7bG9jOmUscmFkaXVzOm99LG9iajNkOnR9KX1yZXR1cm4gbGh0KHRoaXMuYmFja2dyb3VuZENvbG9yLHQub2JqM2QsKCgpPT5pKSxuKT8odC5vYmozZC5wb3NpdGlvbi5zZXQoZS54LGUueSwwKSx7dHlwZTppaHQuQ0lSQ0xFLGRhdGE6e2xvYzplLHJhZGl1czpvfSxvYmozZDp0Lm9iajNkfSk6dH1jcmVhdGVPclVwZGF0ZVRyYXBlem9pZE9iamVjdCh0LGUsbixvKXtpZihlLnkhPT1uLnkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIklucHV0IGVycm9yOiBzdGFydC55ICE9IGVuZC55LiIpO2NvbnN0e2FsdGl0dWRlOml9PW8sYT0yL01hdGguc3FydCgzKSppLHI9bmV3IE1mdChbbmV3IEZzdChlLngtYS8yLGUueS1pLzIpLG5ldyBGc3QoZS54LGUueStpLzIpLG5ldyBGc3Qobi54LG4ueStpLzIpLG5ldyBGc3Qobi54K2EvMixuLnktaS8yKV0pO3IuYXV0b0Nsb3NlPSEwO2NvbnN0IHM9bmV3IFFmdChyKTtpZighdCl7Y29uc3QgdD10aGlzLmNyZWF0ZU1lc2gocyxvKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDoodGhpcy5zY2VuZS5hZGQodCkse3R5cGU6aWh0LlRSQVBFWk9JRCxkYXRhOltlLG5dLG9iajNkOnR9KX1yZXR1cm4gbGh0KHRoaXMuYmFja2dyb3VuZENvbG9yLHQub2JqM2QsKCgpPT5zKSxvKT97dHlwZTppaHQuVFJBUEVaT0lELGRhdGE6W2Usbl0sb2JqM2Q6dC5vYmozZH06dH1mbHVzaCgpe3RoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuc2NlbmUsdGhpcy5jb29yZGluYXRvci5nZXRDYW1lcmEoKSl9ZGlzcG9zZSgpe3RoaXMucmVuZGVyZXIuZGlzcG9zZSgpfX1jbGFzcyBkaHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlbmRlckNhY2hlPXQsdGhpcy5yZW5kZXJlcj1lfXNldExpbmUodCxlLG4pe2NvbnN0IG89dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZUxpbmVPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4pO28mJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxvKX1zZXRUcmlhbmdsZSh0LGUsbil7Y29uc3Qgbz10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlVHJpYW5nbGVPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4pO28mJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxvKX1zZXRDaXJjbGUodCxlLG4pe2NvbnN0IG89dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0aGlzLnJlbmRlckNhY2hlLmdldEZyb21QcmV2aW91c0ZyYW1lKHQpLGUsbik7byYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LG8pfXNldFRyYXBlem9pZCh0LGUsbixvKXtjb25zdCBpPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4sbyk7aSYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LGkpfX1jbGFzcyBwaHR7Y29uc3RydWN0b3IoKXt0aGlzLnByZXZGcmFtZUNhY2hlPW5ldyBNYXAsdGhpcy5jdXJyRnJhbWVDYWNoZT1uZXcgTWFwfWdldEZyb21QcmV2aW91c0ZyYW1lKHQpe2NvbnN0IGU9dGhpcy5wcmV2RnJhbWVDYWNoZS5nZXQodCk7cmV0dXJuIG51bGwhPWU/ZTpudWxsfXNldFRvQ3VycmVudEZyYW1lKHQsZSl7dGhpcy5jdXJyRnJhbWVDYWNoZS5zZXQodCxlKX1maW5hbGl6ZUZyYW1lQW5kR2V0UmVtb3ZlZCgpe2NvbnN0IHQ9W107Zm9yKGNvbnN0W2Usbl1vZiB0aGlzLnByZXZGcmFtZUNhY2hlLmVudHJpZXMoKSl0aGlzLmN1cnJGcmFtZUNhY2hlLmhhcyhlKXx8dC5wdXNoKG4pO3JldHVybiB0aGlzLnByZXZGcmFtZUNhY2hlPXRoaXMuY3VyckZyYW1lQ2FjaGUsdGhpcy5jdXJyRnJhbWVDYWNoZT1uZXcgTWFwLHR9fSEoZnVuY3Rpb24odCl7dFt0Lk5VTUJFUj0wXT0iTlVNQkVSIix0W3QuTkFOPTFdPSJOQU4ifSkoYWh0fHwoYWh0PXt9KSk7Y2xhc3MgbWh0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5yYXdTZXJpZXNEYXRhPVtdLHRoaXMuc2VyaWVzPVtdLHRoaXMucGFpbnREaXJ0eT0hMCx0aGlzLnJlbmRlckNhY2hlPW5ldyBwaHQsdGhpcy5jb29yZGluYXRlSWRlbnRpZmllcj1udWxsLHRoaXMubGF5b3V0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9LHRoaXMuZ2V0TWV0YWRhdGFNYXBJbXBsPXQuZ2V0TWV0YWRhdGFNYXAsdGhpcy5jb29yZGluYXRvcj10LmNvb3JkaW5hdG9yLHRoaXMucmVuZGVyZXI9dC5yZW5kZXJlcix0aGlzLnBhaW50QnJ1c2g9bmV3IGRodCh0aGlzLnJlbmRlckNhY2hlLHRoaXMucmVuZGVyZXIpfXNldExheW91dFJlY3QodCl7dGhpcy5sYXlvdXQueD09PXQueCYmdGhpcy5sYXlvdXQud2lkdGg9PT10LndpZHRoJiZ0aGlzLmxheW91dC55PT09dC55JiZ0aGlzLmxheW91dC5oZWlnaHQ9PT10LmhlaWdodHx8KHRoaXMucGFpbnREaXJ0eT0hMCksdGhpcy5sYXlvdXQ9dH1nZXRMYXlvdXRSZWN0KCl7cmV0dXJuIHRoaXMubGF5b3V0fWdldE1ldGFkYXRhTWFwKCl7cmV0dXJuIHRoaXMuZ2V0TWV0YWRhdGFNYXBJbXBsKCl9bWFya0FzUGFpbnREaXJ0eSgpe3RoaXMucGFpbnREaXJ0eT0hMH1yZW5kZXIoKXtpZih0aGlzLnRyYW5zZm9ybUNvb3JkaW5hdGVzSWZTdGFsZSgpLHRoaXMucGFpbnREaXJ0eSl7dGhpcy5yZWRyYXcoKTtmb3IoY29uc3QgdCBvZiB0aGlzLnJlbmRlckNhY2hlLmZpbmFsaXplRnJhbWVBbmRHZXRSZW1vdmVkKCkpdGhpcy5yZW5kZXJlci5kZXN0cm95T2JqZWN0KHQpO3RoaXMucGFpbnREaXJ0eT0hMX19aXNDb29yZGluYXRlVXBkYXRlZCgpe3JldHVybiB0aGlzLmNvb3JkaW5hdG9yLmdldFVwZGF0ZUlkZW50aWZpZXIoKSE9PXRoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXJ9Y2xlYXJDb29yZGluYXRlSWRlbnRpZmllcigpe3RoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXI9bnVsbH1zZXREYXRhKHQpe3RoaXMuY2xlYXJDb29yZGluYXRlSWRlbnRpZmllcigpLHRoaXMucmF3U2VyaWVzRGF0YT10fXRyYW5zZm9ybUNvb3JkaW5hdGVzSWZTdGFsZSgpe2lmKCF0aGlzLmlzQ29vcmRpbmF0ZVVwZGF0ZWQoKSlyZXR1cm47Y29uc3QgdD10aGlzLmdldExheW91dFJlY3QoKTt0aGlzLnNlcmllcz1uZXcgQXJyYXkodGhpcy5yYXdTZXJpZXNEYXRhLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJhd1Nlcmllc0RhdGEubGVuZ3RoO2UrKyl7Y29uc3Qgbj10aGlzLnJhd1Nlcmllc0RhdGFbZV07dGhpcy5zZXJpZXNbZV09e2lkOm4uaWQscG9seWxpbmU6bmV3IEZsb2F0MzJBcnJheSgyKm4ucG9pbnRzLmxlbmd0aCl9O2ZvcihsZXQgbz0wO288bi5wb2ludHMubGVuZ3RoO28rKyl7Y29uc3RbaSxhXT10aGlzLmNvb3JkaW5hdG9yLnRyYW5zZm9ybURhdGFUb1VpQ29vcmQodCxbbi5wb2ludHNbb10ueCxuLnBvaW50c1tvXS55XSk7dGhpcy5zZXJpZXNbZV0ucG9seWxpbmVbMipvXT1pLHRoaXMuc2VyaWVzW2VdLnBvbHlsaW5lWzIqbysxXT1hfX10aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPXRoaXMuY29vcmRpbmF0b3IuZ2V0VXBkYXRlSWRlbnRpZmllcigpLHRoaXMubWFya0FzUGFpbnREaXJ0eSgpfX17cmVjb3JkUGFydGl0aW9uKHQsZSxuKXtyZXR1cm4gdD97dHlwZTphaHQuTlVNQkVSLHBvbHlsaW5lOmV9Ont0eXBlOmFodC5OQU4scG9seWxpbmU6ZS5tYXAoKCh0LGUpPT5pc05hTih0KT9lJTI9PTA/bi54Om4ueTp0KSl9fXBhcnRpdGlvblBvbHlsaW5lKHQpe2NvbnN0IGU9W107bGV0IG49MCxvPSExO2NvbnN0IGk9dGhpcy5jb29yZGluYXRvci50cmFuc2Zvcm1EYXRhVG9VaUNvb3JkKHRoaXMuZ2V0TGF5b3V0UmVjdCgpLFswLDBdKSxhPXt4OmlbMF0seTppWzFdfTtsZXQgcj1udWxsO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSs9Mil7Y29uc3QgYT10W2ldLHM9dFtpKzFdLGw9aXNOYU4oYSl8fGlzTmFOKHMpO2whPT1vJiZuIT09aSYmKGUucHVzaCh0aGlzLnJlY29yZFBhcnRpdGlvbighbyx0LnNsaWNlKG4saSksbnVsbD09PXI/e3g6YSx5OnN9OnIpKSxuPWkpLGx8fChyPXt4OmEseTpzfSksbz1sfXJldHVybiBuIT09dC5sZW5ndGgtMSYmZS5wdXNoKHRoaXMucmVjb3JkUGFydGl0aW9uKCFvLHQuc2xpY2Uobix0Lmxlbmd0aCksbnVsbCE9cj9yOmEpKSxlfXJlZHJhdygpe3ZhciB0LGUsbjtmb3IoY29uc3QgbyBvZiB0aGlzLnNlcmllcyl7Y29uc3QgaT10aGlzLmdldE1ldGFkYXRhTWFwKClbby5pZF07aWYoIWkpY29udGludWU7aWYoby5wb2x5bGluZS5sZW5ndGglMiE9MCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBoYXZlIG9kZCBsZW5ndGgtZWQgcG9seWxpbmU6ICR7by5wb2x5bGluZS5sZW5ndGh9YCk7Y29uc3QgYT10aGlzLnBhcnRpdGlvblBvbHlsaW5lKG8ucG9seWxpbmUpO2Zvcihjb25zdFtyLHt0eXBlOnMscG9seWxpbmU6bH1db2YgYS5lbnRyaWVzKCkpaWYocz09PWFodC5OVU1CRVIpMj09PWwubGVuZ3RoP3RoaXMucGFpbnRCcnVzaC5zZXRDaXJjbGUoSlNPTi5zdHJpbmdpZnkoWyJjaXJjbGUiLG8uaWQscl0pLHt4OmxbMF0seTpsWzFdfSx7Y29sb3I6aS5jb2xvcix2aXNpYmxlOmkudmlzaWJsZSxvcGFjaXR5Om51bGwhPT0odD1pLm9wYWNpdHkpJiZ2b2lkIDAhPT10P3Q6MSxyYWRpdXM6NH0pOnRoaXMucGFpbnRCcnVzaC5zZXRMaW5lKEpTT04uc3RyaW5naWZ5KFsibGluZSIsby5pZCxyXSksbCx7Y29sb3I6aS5jb2xvcix2aXNpYmxlOmkudmlzaWJsZSxvcGFjaXR5Om51bGwhPT0oZT1pLm9wYWNpdHkpJiZ2b2lkIDAhPT1lP2U6MSx3aWR0aDoyfSk7ZWxzZSBpZighaS5hdXgpZm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kz0yKXRoaXMucGFpbnRCcnVzaC5zZXRUcmlhbmdsZShKU09OLnN0cmluZ2lmeShbIk5hTiIsby5pZCxsW3RdLGxbdCsxXV0pLHt4OmxbdF0seTpsW3QrMV19LHtjb2xvcjppLmNvbG9yLHZpc2libGU6aS52aXNpYmxlLG9wYWNpdHk6bnVsbCE9PShuPWkub3BhY2l0eSkmJnZvaWQgMCE9PW4/bjoxLHNpemU6MTJ9KX19fWNsYXNzIHVodCBleHRlbmRzIFVydHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5jYW1lcmE9bmV3IFJkdCgwLDFlMywxZTMsMCwwLDEwMCl9aXNZQXhpc1BvaW50ZWREb3duKCl7cmV0dXJuITF9c2V0RG9tQ29udGFpbmVyUmVjdCh0KXtzdXBlci5zZXREb21Db250YWluZXJSZWN0KHQpLHRoaXMuY2FtZXJhLmxlZnQ9dC54LHRoaXMuY2FtZXJhLnJpZ2h0PXQueCt0LndpZHRoLHRoaXMuY2FtZXJhLnRvcD10LnkrdC5oZWlnaHQsdGhpcy5jYW1lcmEuYm90dG9tPXQueSx0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Z2V0Q2FtZXJhKCl7cmV0dXJuIHRoaXMuY2FtZXJhfX1jb25zdCBmaHQ9dD0+c2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCk7Y2xhc3MgZ2h0e2NvbnN0cnVjdG9yKHQpe3N3aXRjaCh0aGlzLm1ldGFkYXRhTWFwPXt9LHRoaXMuc2hvdWxkUmVwYWludD0hMSx0aGlzLmNhbGxiYWNrcz10LmNhbGxiYWNrcyx0LnR5cGUpe2Nhc2UgTTYuU1ZHOnRoaXMuY29vcmRpbmF0b3I9bmV3IFVydCx0aGlzLnJlbmRlcmVyPW5ldyBXcnQodC5jb250YWluZXIpO2JyZWFrO2Nhc2UgTTYuV0VCR0w6e2NvbnN0IGU9bmV3IHVodDt0aGlzLmNvb3JkaW5hdG9yPWUsdGhpcy5yZW5kZXJlcj1uZXcgY2h0KHQuY29udGFpbmVyLGUsdC5kZXZpY2VQaXhlbFJhdGlvLHQuY2FsbGJhY2tzLm9uQ29udGV4dExvc3QpO2JyZWFrfX10aGlzLnJlbmRlcmVyLnNldFVzZURhcmtNb2RlKHQudXNlRGFya01vZGUpLHRoaXMuc2VyaWVzTGluZVZpZXc9bmV3IG1odCh7cmVuZGVyZXI6dGhpcy5yZW5kZXJlcixjb29yZGluYXRvcjp0aGlzLmNvb3JkaW5hdG9yLGdldE1ldGFkYXRhTWFwOigpPT50aGlzLm1ldGFkYXRhTWFwfSksdGhpcy5yZXNpemUodC5kb21EaW1lbnNpb24pfWRpc3Bvc2UoKXt9c2V0WFNjYWxlVHlwZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldFhTY2FsZSh6cnQodCkpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0WVNjYWxlVHlwZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldFlTY2FsZSh6cnQodCkpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9cmVzaXplKHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0RG9tQ29udGFpbmVyUmVjdChPYmplY3QuYXNzaWduKHt4OjAseTowfSx0KSksdGhpcy5yZW5kZXJlci5vblJlc2l6ZShPYmplY3QuYXNzaWduKHt4OjAseTowfSx0KSksdGhpcy5zZXJpZXNMaW5lVmlldy5zZXRMYXlvdXRSZWN0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7eDowLHk6MH0pKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldE1ldGFkYXRhKHQpe2xldCBlPSExO09iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKChbdCxuXSk9Pntjb25zdCBvPXRoaXMubWV0YWRhdGFNYXBbdF07byYmbi5jb2xvcj09PW8uY29sb3ImJm4udmlzaWJsZT09PW8udmlzaWJsZSYmbi5vcGFjaXR5PT09by5vcGFjaXR5fHwoZT0hMCksdGhpcy5tZXRhZGF0YU1hcFt0XT1ufSkpLGUmJnRoaXMuc2VyaWVzTGluZVZpZXcubWFya0FzUGFpbnREaXJ0eSgpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0Vmlld0JveCh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldFZpZXdCb3hSZWN0KHt4OnQueFswXSx3aWR0aDp0LnhbMV0tdC54WzBdLHk6dC55WzBdLGhlaWdodDp0LnlbMV0tdC55WzBdfSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXREYXRhKHQpe3RoaXMuc2VyaWVzTGluZVZpZXcuc2V0RGF0YSh0KSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFVzZURhcmtNb2RlKHQpe3RoaXMucmVuZGVyZXIuc2V0VXNlRGFya01vZGUodCksdGhpcy5zZXJpZXNMaW5lVmlldy5tYXJrQXNQYWludERpcnR5KCksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zY2hlZHVsZVJlcGFpbnQoKXt0aGlzLnNob3VsZFJlcGFpbnR8fCh0aGlzLnNob3VsZFJlcGFpbnQ9ITAsZmh0KCgoKT0+e3RoaXMucmVwYWludCgpLHRoaXMuc2hvdWxkUmVwYWludD0hMX0pKSl9cmVwYWludCgpe3RoaXMuc2VyaWVzTGluZVZpZXcucmVuZGVyKCksdGhpcy5yZW5kZXJlci5mbHVzaCgpLHRoaXMuY2FsbGJhY2tzLm9uRHJhd0VuZCgpfX12YXIgaGh0LGJodDtmdW5jdGlvbiB5aHQodCl7aWYodC5pbmNsdWRlcygiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKCJXb3JrZXIgZmFjdG9yeSBvbmx5IGFsbG93cyBmaWxlIG5hbWUgYW5kIG5vIHJlc291cmNlIHBhdGguIik7cmV0dXJuIG5ldyBXb3JrZXIodCl9IShmdW5jdGlvbih0KXt0W3QuU0VSSUVTX0RBVEFfVVBEQVRFRD0wXT0iU0VSSUVTX0RBVEFfVVBEQVRFRCIsdFt0LlNFUklFU19NRVRBREFUQV9DSEFOR0VEPTFdPSJTRVJJRVNfTUVUQURBVEFfQ0hBTkdFRCIsdFt0LlNDQUxFX1VQREFURUQ9Ml09IlNDQUxFX1VQREFURUQiLHRbdC5WSUVXX0JPWF9VUERBVEVEPTNdPSJWSUVXX0JPWF9VUERBVEVEIix0W3QuSU5JVD00XT0iSU5JVCIsdFt0LkRPTV9SRVNJWkVEPTVdPSJET01fUkVTSVpFRCIsdFt0LkRBUktfTU9ERV9VUERBVEVEPTZdPSJEQVJLX01PREVfVVBEQVRFRCIsdFt0LkRJU1BPU0VEPTddPSJESVNQT1NFRCJ9KShoaHR8fChoaHQ9e30pKSwoZnVuY3Rpb24odCl7dFt0Lk9OX1JFRFJBV19FTkQ9MF09Ik9OX1JFRFJBV19FTkQiLHRbdC5PTl9DT05URVhUX0xPU1Q9MV09Ik9OX0NPTlRFWFRfTE9TVCJ9KShiaHR8fChiaHQ9e30pKTtjbGFzcyBfaHR7Y29uc3RydWN0b3IodCl7aWYodGhpcy5jYWxsYmFja3M9dC5jYWxsYmFja3MsdC50eXBlIT09TTYuV0VCR0wpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYENhbm5vdCB1c2Ugbm9uIFdFQkdMIHJlbmRlcmVyIGZvciB0aGUgb2Zmc2NyZWVuIGxpbmUgY2hhcnQuIFJlY2VpdmVkICR7TTZbdC50eXBlXX0gYCk7Y29uc3QgZT1uZXcgTWVzc2FnZUNoYW5uZWw7ZS5wb3J0MS5vbm1lc3NhZ2U9dD0+e3RoaXMub25NZXNzYWdlRnJvbVdvcmtlcih0LmRhdGEpfSx0aGlzLnR4TWVzc2FnZVBvcnQ9ZS5wb3J0MTtjb25zdCBuPXQuY29udGFpbmVyLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7dGhpcy53b3JrZXJJbnN0YW5jZT1faHQud29ya2VyUG9vbC5nZXROZXh0KCk7Y29uc3Qgbz17dHlwZTpoaHQuSU5JVCxjYW52YXM6bixkZXZpY2VQaXhlbFJhdGlvOndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLGRpbTp0LmRvbURpbWVuc2lvbixyZW5kZXJlclR5cGU6dC50eXBlLHVzZURhcmtNb2RlOnQudXNlRGFya01vZGV9O3RoaXMud29ya2VySW5zdGFuY2UucG9zdE1lc3NhZ2UobyxbbixlLnBvcnQyXSl9ZGlzcG9zZSgpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6aGh0LkRJU1BPU0VEfSksdGhpcy53b3JrZXJJbnN0YW5jZS5mcmVlKCksdGhpcy50eE1lc3NhZ2VQb3J0LmNsb3NlKCl9c2V0WFNjYWxlVHlwZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOmhodC5TQ0FMRV9VUERBVEVELGF4aXM6IngiLHNjYWxlVHlwZTp0fSl9c2V0WVNjYWxlVHlwZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOmhodC5TQ0FMRV9VUERBVEVELGF4aXM6InkiLHNjYWxlVHlwZTp0fSl9cmVzaXplKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6aGh0LkRPTV9SRVNJWkVELGRpbTp0fSl9c2V0TWV0YWRhdGEodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpoaHQuU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQsbWV0YWRhdGE6dH0pfXNldFZpZXdCb3godCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpoaHQuVklFV19CT1hfVVBEQVRFRCxleHRlbnQ6dH0pfXNldERhdGEodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPXQucmVkdWNlKCgodCxlKT0+dCtlLnBvaW50cy5sZW5ndGgpLDApO2xldCBuPTA7Y29uc3Qgbz1uZXcgRmxvYXQ2NEFycmF5KDIqZSksaT1bXTtmb3IoY29uc3QgZSBvZiB0KXtpLnB1c2goe2lkOmUuaWQsbGVuZ3RoOmUucG9pbnRzLmxlbmd0aH0pO2ZvcihsZXQgdD0wO3Q8ZS5wb2ludHMubGVuZ3RoO3QrKylvW24rK109ZS5wb2ludHNbdF0ueCxvW24rK109ZS5wb2ludHNbdF0ueX1yZXR1cm57aWRzQW5kTGVuZ3RoczppLGZsYXR0ZW5lZFNlcmllczpvLmJ1ZmZlcn19KSh0KTt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOmhodC5TRVJJRVNfREFUQV9VUERBVEVELGNvbXBhY3REYXRhU2VyaWVzOmV9LFtlLmZsYXR0ZW5lZFNlcmllc10pfXNldFVzZURhcmtNb2RlKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6aGh0LkRBUktfTU9ERV9VUERBVEVELHVzZURhcmtNb2RlOnR9KX1zZW5kTWVzc2FnZSh0LGUpe2U/dGhpcy50eE1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKHQsZSk6dGhpcy50eE1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKHQpfW9uTWVzc2FnZUZyb21Xb3JrZXIodCl7c3dpdGNoKHQudHlwZSl7Y2FzZSBiaHQuT05fUkVEUkFXX0VORDp0aGlzLmNhbGxiYWNrcy5vbkRyYXdFbmQoKTticmVhaztjYXNlIGJodC5PTl9DT05URVhUX0xPU1Q6dGhpcy5jYWxsYmFja3Mub25Db250ZXh0TG9zdCgpfX19ZnVuY3Rpb24gQ2h0KHQpe3N3aXRjaCh0KXtjYXNlIE02LlNWRzpyZXR1cm4gTTYuU1ZHO2Nhc2UgTTYuV0VCR0w6cmV0dXJuKGZ1bmN0aW9uIGUoKXtyZXR1cm4gTHJ0fSkoKT9NNi5XRUJHTDpNNi5TVkc7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVuZGVyZXJUeXBlOiAke3R9YCl9fWZ1bmN0aW9uIE1odCh0LGUpe3JldHVybiJ4Ij09PWU/WzAsdC53aWR0aF06W3QuaGVpZ2h0LDBdfWZ1bmN0aW9uIHZodCh0LGUpe2NvbnN0IG49TWF0aC5mbG9vcih0LzUwKTtyZXR1cm4gTWF0aC5taW4obixlKX1mdW5jdGlvbiB4aHQodCxlKXtpZigxJnQmJihvYSgpLE11KDAsImxpbmUiLDIpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgpO2NmKCJ6ZXJvIiwwPT09dCkseW0oIngxIixuLmdldERvbVgodCkpKCJ4MiIsbi5nZXREb21YKHQpKSgieTIiLG4uZG9tRGltLmhlaWdodCl9fWZ1bmN0aW9uIE9odCh0LGUpe2lmKDEmdCYmKG9hKCksTXUoMCwibGluZSIsMykpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPU51KCk7Y2YoInplcm8iLDA9PT10KSx5bSgieTEiLG4uZ2V0RG9tWSh0KSkoIngyIixuLmRvbURpbS53aWR0aCkoInkyIixuLmdldERvbVkodCkpfX1faHQud29ya2VyUG9vbD1uZXcgY2xhc3N7Y29uc3RydWN0b3IodCxlPTEwLG49eWh0KXt0aGlzLndvcmtlclJlc291cmNlUGF0aD10LHRoaXMubWF4UG9vbFNpemU9ZSx0aGlzLndvcmtlckZhY3Rvcnk9bix0aGlzLndvcmtlcnM9W119Z2V0TmV4dCgpe2xldCB0O2lmKHRoaXMud29ya2Vycy5ldmVyeSgoKHthY3RpdmVDb3VudDp0fSk9PnQ+MCkpJiZ0aGlzLndvcmtlcnMubGVuZ3RoPHRoaXMubWF4UG9vbFNpemUpe2NvbnN0IGU9dGhpcy53b3JrZXJGYWN0b3J5KHRoaXMud29ya2VyUmVzb3VyY2VQYXRoKTt0PXthY3RpdmVDb3VudDowLHBvc3RNZXNzYWdlOih0LG4pPT57ZS5wb3N0TWVzc2FnZSh0LG4pfSxmcmVlOigpPT57dC5hY3RpdmVDb3VudD1NYXRoLm1heCh0LmFjdGl2ZUNvdW50LTEsMCl9fSx0aGlzLndvcmtlcnMucHVzaCh0KX1lbHNle2NvbnN0IGU9dGhpcy53b3JrZXJzLm1hcCgoKHthY3RpdmVDb3VudDp0fSk9PnQpKSxuPWUuaW5kZXhPZihNYXRoLm1pbiguLi5lKSk7dD10aGlzLndvcmtlcnNbbl19cmV0dXJuIHQuYWN0aXZlQ291bnQrKyx0fX0oImNoYXJ0X3dvcmtlci5qcz9fZmlsZV9oYXNoPTg2NzRmMTU4Iik7Y2xhc3MgUGh0e2dldERvbVgodCl7cmV0dXJuIHRoaXMueFNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LngsTWh0KHRoaXMuZG9tRGltLCJ4IiksdCl9Z2V0RG9tWSh0KXtyZXR1cm4gdGhpcy55U2NhbGUuZm9yd2FyZCh0aGlzLnZpZXdFeHRlbnQueSxNaHQodGhpcy5kb21EaW0sInkiKSx0KX1nZXRYVGlja3MoKXtyZXR1cm4gdGhpcy54U2NhbGUudGlja3ModGhpcy52aWV3RXh0ZW50Lngsdmh0KHRoaXMuZG9tRGltLndpZHRoLHRoaXMueEdyaWRDb3VudCkpfWdldFlUaWNrcygpe3JldHVybiB0aGlzLnlTY2FsZS50aWNrcyh0aGlzLnZpZXdFeHRlbnQueSx2aHQodGhpcy5kb21EaW0uaGVpZ2h0LHRoaXMueUdyaWRDb3VudCkpfX1mdW5jdGlvbiB3aHQodCxlLG4sbyxpLGEpe2xldCByO3N3aXRjaCh0LmRlbHRhTW9kZSl7Y2FzZSBXaGVlbEV2ZW50LkRPTV9ERUxUQV9QSVhFTDpyPTE7YnJlYWs7Y2FzZSBXaGVlbEV2ZW50LkRPTV9ERUxUQV9MSU5FOnI9ODticmVhaztjYXNlIFdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0U6cj0yMDticmVhaztkZWZhdWx0OnI9MSxjb25zb2xlLndhcm4oYFVua25vd24gV2hlZWxFdmVudCBkZWx0YU1vZGU6ICR7dC5kZWx0YU1vZGV9LmApfWNvbnN0IHM9dC5kZWx0YVkqcixsPXM8MD9NYXRoLm1heChzKm8sLS45NSk6cypvLHt3aWR0aDpjLGhlaWdodDpkfT1uLHA9W2kucmV2ZXJzZShlLngsWzAsY10sLXQub2Zmc2V0WCpsKSxpLnJldmVyc2UoZS54LFswLGNdLGMrKGMtdC5vZmZzZXRYKSpsKV0sbT1bYS5yZXZlcnNlKGUueSxbZCwwXSwtdC5vZmZzZXRZKmwpLGEucmV2ZXJzZShlLnksW2QsMF0sZCsoZC10Lm9mZnNldFkpKmwpXTtyZXR1cm57eDpwWzFdPHBbMF0/W3BbMV0scFswXV06cCx5Om1bMV08bVswXT9bbVsxXSxtWzBdXTptfX1QaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBodCl9LFBodC7JtWNtcD1zbyh7dHlwZTpQaHQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQtZ3JpZC12aWV3Il1dLGlucHV0czp7dmlld0V4dGVudDoidmlld0V4dGVudCIseFNjYWxlOiJ4U2NhbGUiLHhHcmlkQ291bnQ6InhHcmlkQ291bnQiLHlTY2FsZToieVNjYWxlIix5R3JpZENvdW50OiJ5R3JpZENvdW50Iixkb21EaW06ImRvbURpbSJ9LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJ5MSIsIjAiLDMsInplcm8iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsieDEiLCIwIiwzLCJ6ZXJvIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInkxIiwiMCJdLFsieDEiLCIwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihvYSgpLF91KDAsInN2ZyIpLEhtKDEseGh0LDEsNSwibGluZSIsMCksSG0oMixPaHQsMSw1LCJsaW5lIiwxKSxDdSgpKSwyJmUmJihEYygxKSxodSgibmdGb3JPZiIsbi5nZXRYVGlja3MoKSksRGMoMSksaHUoIm5nRm9yT2YiLG4uZ2V0WVRpY2tzKCkpKX0sZGlyZWN0aXZlczpbeHZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICBzdmdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgbGluZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBzdHJva2U6ICNjY2M7XG4gICAgICAgIHN0cm9rZS13aWR0aDogMXB4O1xuICAgICAgfVxuXG4gICAgICAuemVyb1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBzdHJva2U6ICNhYWE7XG4gICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFBodCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0LWdyaWQtdmlldyIsdGVtcGxhdGU6Jzxzdmc+XG4gICAgPGxpbmVcbiAgICAgICpuZ0Zvcj0ibGV0IHRpY2sgb2YgZ2V0WFRpY2tzKCkiXG4gICAgICBbY2xhc3MuemVyb109InRpY2sgPT09IDAiXG4gICAgICBbYXR0ci54MV09ImdldERvbVgodGljaykiXG4gICAgICB5MT0iMCJcbiAgICAgIFthdHRyLngyXT0iZ2V0RG9tWCh0aWNrKSJcbiAgICAgIFthdHRyLnkyXT0iZG9tRGltLmhlaWdodCJcbiAgICA+PC9saW5lPlxuICAgIDxsaW5lXG4gICAgICAqbmdGb3I9ImxldCB0aWNrIG9mIGdldFlUaWNrcygpIlxuICAgICAgW2NsYXNzLnplcm9dPSJ0aWNrID09PSAwIlxuICAgICAgeDE9IjAiXG4gICAgICBbYXR0ci55MV09ImdldERvbVkodGljaykiXG4gICAgICBbYXR0ci54Ml09ImRvbURpbS53aWR0aCJcbiAgICAgIFthdHRyLnkyXT0iZ2V0RG9tWSh0aWNrKSJcbiAgICA+PC9saW5lPlxuICA8L3N2Zz4nLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICBzdmcge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBsaW5lIHtcbiAgICAgICAgc3Ryb2tlOiAjY2NjO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgICAgIH1cblxuICAgICAgLnplcm8ge1xuICAgICAgICBzdHJva2U6ICNhYWE7XG4gICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7dmlld0V4dGVudDpbe3R5cGU6Ul99XSx4U2NhbGU6W3t0eXBlOlJffV0seEdyaWRDb3VudDpbe3R5cGU6Ul99XSx5U2NhbGU6W3t0eXBlOlJffV0seUdyaWRDb3VudDpbe3R5cGU6Ul99XSxkb21EaW06W3t0eXBlOlJffV19KTtjb25zdCBraHQ9WyJkb3RzIl07ZnVuY3Rpb24gU2h0KHQsZSl7aWYoMSZ0JiYob2EoKSxNdSgwLCJjaXJjbGUiLDEyKSksMiZ0KXtjb25zdCB0PU51KCkuJGltcGxpY2l0LGU9TnUoMik7eW0oImN4IixlLmdldERvbVgodC5wb2ludC54KSkoImN5IixlLmdldERvbVkodC5wb2ludC55KSkoImZpbGwiLHQubWV0YWRhdGEuY29sb3IpfX1mdW5jdGlvbiBEaHQodCxlKXtpZigxJnQmJihvYSgpLHZ1KDApLEhtKDEsU2h0LDEsMywiY2lyY2xlIiwxMSkseHUoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoMik7RGMoMSksaHUoIm5nSWYiLG4uc2hvdWxkUmVuZGVyVG9vbHRpcFBvaW50KHQucG9pbnQpKX19ZnVuY3Rpb24gUmh0KHQsZSl7aWYoMSZ0JiYob2EoKSx2dSgwKSxIbSgxLERodCwyLDEsIm5nLWNvbnRhaW5lciIsMTApLHh1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGh1KCJuZ0Zvck9mIix0LmN1cnNvcmVkRGF0YSkoIm5nRm9yVHJhY2tCeSIsdC50cmFja0J5U2VyaWVzTmFtZSl9fWZ1bmN0aW9uIEVodCh0LGUpe2lmKDEmdCYmKG9hKCksTXUoMCwicmVjdCIsMTMpKSwyJnQpe2NvbnN0IHQ9TnUoKTt5bSgieCIsdC56b29tQm94SW5VaUNvb3JkaW5hdGUueCkoIndpZHRoIix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS53aWR0aCkoInkiLHQuem9vbUJveEluVWlDb29yZGluYXRlLnkpKCJoZWlnaHQiLHQuem9vbUJveEluVWlDb29yZGluYXRlLmhlaWdodCl9fWNvbnN0IEFodD1mdW5jdGlvbih0LGUpe3JldHVybntkYXRhOnQsY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZDplfX07ZnVuY3Rpb24gVGh0KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxNCksT3UoMSwxNSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCksZT1GbSgxMSk7RGMoMSksaHUoIm5nVGVtcGxhdGVPdXRsZXQiLHQudG9vbHRpcFRlbXBsYXRlP3QudG9vbHRpcFRlbXBsYXRlOmUpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsYXkoMixBaHQsdC5jdXJzb3JlZERhdGEsdC5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkKSl9fWZ1bmN0aW9uIE5odCh0LGUpe2lmKDEmdCYmKHZ1KDApLF91KDEsInRyIiwxNyksX3UoMiwidGQiLDE4KSxNdSgzLCJzcGFuIiksQ3UoKSxfdSg0LCJ0ZCIsMTkpLFBmKDUpLEN1KCksX3UoNiwidGQiKSxQZig3KSxDdSgpLF91KDgsInRkIiksUGYoOSksQ3UoKSxDdSgpLHh1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtEYygzKSxsZigiYmFja2dyb3VuZC1jb2xvciIsdC5tZXRhZGF0YS5jb2xvciksRGMoMiksd2YodC5tZXRhZGF0YS5kaXNwbGF5TmFtZSksRGMoMiksd2YodC5wb2ludC55KSxEYygyKSx3Zih0LnBvaW50LngpfX1mdW5jdGlvbiB6aHQodCxlKXtpZigxJnQmJihfdSgwLCJ0YWJsZSIpLF91KDEsInRoZWFkIiksX3UoMiwidHIiKSxNdSgzLCJ0aCIsMTYpLF91KDQsInRoIiksUGYoNSwiTmFtZSIpLEN1KCksX3UoNiwidGgiKSxQZig3LCJZIiksQ3UoKSxfdSg4LCJ0aCIpLFBmKDksIlgiKSxDdSgpLEN1KCksQ3UoKSxfdSgxMCwidGJvZHkiKSxIbSgxMSxOaHQsMTAsNSwibmctY29udGFpbmVyIiwxMCksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS5kYXRhLG49TnUoKTtEYygxMSksaHUoIm5nRm9yT2YiLHQpKCJuZ0ZvclRyYWNrQnkiLG4udHJhY2tCeVNlcmllc05hbWUpfX12YXIgSWh0OyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5EUkFHX1pPT01JTkc9MV09IkRSQUdfWk9PTUlORyIsdFt0LlNDUk9MTF9aT09NSU5HPTJdPSJTQ1JPTExfWk9PTUlORyIsdFt0LlBBTk5JTkc9M109IlBBTk5JTkcifSkoSWh0fHwoSWh0PXt9KSk7ZnVuY3Rpb24gSGh0KHQpe3JldHVybiB0LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfWNsYXNzIEZodHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLnNjcm9sbFN0cmF0ZWd5PWUsdGhpcy5vblZpZXdFeHRlbnRDaGFuZ2U9bmV3IFN5LHRoaXMub25WaWV3RXh0ZW50UmVzZXQ9bmV3IFN5LHRoaXMuSW50ZXJhY3Rpb25TdGF0ZT1JaHQsdGhpcy5zdGF0ZT1JaHQuTk9ORSx0aGlzLnNwZWNpYWxLZXlQcmVzc2VkPSExLHRoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4OjAsd2lkdGg6MCxoZWlnaHQ6MCx5OjB9LHRoaXMudG9vbHRpcFBvc2l0aW9ucz1be29mZnNldFk6NSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlZOiJ0b3AifSx7b2Zmc2V0WTo1LG9yaWdpblg6ImVuZCIsb3ZlcmxheVg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WToidG9wIn0se29mZnNldFk6LTE1LG9yaWdpblg6InN0YXJ0IixvdmVybGF5WDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvZmZzZXRZOi0xNSxvcmlnaW5YOiJlbmQiLG92ZXJsYXlYOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvZmZzZXRYOjUsb3JpZ2luWDoiZW5kIixvdmVybGF5WDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6InRvcCJ9LHtvZmZzZXRYOi01LG9yaWdpblg6InN0YXJ0IixvdmVybGF5WDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJ0b3AifV0sdGhpcy5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkPW51bGwsdGhpcy5jdXJzb3JlZERhdGE9W10sdGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPSExLHRoaXMuc2hvd1pvb21JbnN0cnVjdGlvbj0hMSx0aGlzLmRyYWdTdGFydENvb3JkPW51bGwsdGhpcy5pc0N1cnNvckluc2lkZT0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEJ9bmdBZnRlclZpZXdJbml0KCl7bGUodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsImRibGNsaWNrIix7cGFzc2l2ZTohMH0pLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMub25WaWV3RXh0ZW50UmVzZXQuZW1pdCgpLHRoaXMuc3RhdGU9SWh0Lk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pKSxsZSh3aW5kb3csImtleWRvd24iLHtwYXNzaXZlOiEwfSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXRoaXMuc2hvdWxkUGFuKHQpO2UhPT10aGlzLnNwZWNpYWxLZXlQcmVzc2VkJiYodGhpcy5zcGVjaWFsS2V5UHJlc3NlZD1lLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSkpLGxlKHdpbmRvdywia2V5dXAiLHtwYXNzaXZlOiEwfSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXRoaXMuc2hvdWxkUGFuKHQpO2UhPT10aGlzLnNwZWNpYWxLZXlQcmVzc2VkJiYodGhpcy5zcGVjaWFsS2V5UHJlc3NlZD1lLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSkpLGxlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZWRvd24iLHtwYXNzaXZlOiEwfSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXRoaXMuc3RhdGUsbj10aGlzLnNob3VsZFBhbih0KT9JaHQuUEFOTklORzpJaHQuRFJBR19aT09NSU5HO2U9PT1JaHQuTk9ORSYmbj09PUlodC5EUkFHX1pPT01JTkcmJih0aGlzLmRyYWdTdGFydENvb3JkPXt4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WX0sdGhpcy56b29tQm94SW5VaUNvb3JkaW5hdGU9e3g6dC5vZmZzZXRYLHdpZHRoOjAseTp0Lm9mZnNldFksaGVpZ2h0OjB9KSxlIT09biYmKHRoaXMuc3RhdGU9bix0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxsZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2V1cCIse3Bhc3NpdmU6ITB9KS5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9KHQuYnV0dG9ucyZ3MC5MRUZUKT09PXcwLkxFRlQ7dGhpcy5kcmFnU3RhcnRDb29yZD1udWxsO2NvbnN0IG49dGhpcy56b29tQm94SW5VaUNvb3JkaW5hdGU7aWYoIWUmJnRoaXMuc3RhdGU9PT1JaHQuRFJBR19aT09NSU5HJiZuLndpZHRoPjAmJm4uaGVpZ2h0PjApe2NvbnN0IHQ9dGhpcy5nZXREYXRhWChuLngpLGU9dGhpcy5nZXREYXRhWChuLngrbi53aWR0aCksbz10aGlzLmdldERhdGFZKG4ueStuLmhlaWdodCksaT10aGlzLmdldERhdGFZKG4ueSk7dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdCh7ZGF0YUV4dGVudDp7eDpbdCxlXSx5OltvLGldfX0pfXRoaXMuc3RhdGUhPT1JaHQuTk9ORSYmKHRoaXMuc3RhdGU9SWh0Lk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSksbGUodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlZW50ZXIiLHtwYXNzaXZlOiEwfSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmlzQ3Vyc29ySW5zaWRlPSEwLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfSkpLGxlKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZWxlYXZlIix7cGFzc2l2ZTohMH0pLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5kcmFnU3RhcnRDb29yZD1udWxsLHRoaXMuaXNDdXJzb3JJbnNpZGU9ITEsdGhpcy51cGRhdGVUb29sdGlwKHQpLHRoaXMuc3RhdGU9SWh0Lk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pKSxsZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2UgSWh0LlNDUk9MTF9aT09NSU5HOnRoaXMuc3RhdGU9SWh0Lk5PTkUsdGhpcy51cGRhdGVUb29sdGlwKHQpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7YnJlYWs7Y2FzZSBJaHQuTk9ORTp0aGlzLnVwZGF0ZVRvb2x0aXAodCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTticmVhaztjYXNlIElodC5QQU5OSU5HOntjb25zdCBlPS10Lm1vdmVtZW50WCxuPS10Lm1vdmVtZW50WSx7d2lkdGg6byxoZWlnaHQ6aX09dGhpcy5kb21EaW0sYT10aGlzLmdldERhdGFYKGUpLHI9dGhpcy5nZXREYXRhWChvK2UpLHM9dGhpcy5nZXREYXRhWShpK24pLGw9dGhpcy5nZXREYXRhWShuKTt0aGlzLm9uVmlld0V4dGVudENoYW5nZS5lbWl0KHtkYXRhRXh0ZW50Ont4OlthLHJdLHk6W3MsbF19fSk7YnJlYWt9Y2FzZSBJaHQuRFJBR19aT09NSU5HOntpZighdGhpcy5kcmFnU3RhcnRDb29yZClicmVhaztjb25zdCBlPVt0aGlzLmRyYWdTdGFydENvb3JkLngsdC5vZmZzZXRYXSxuPVt0aGlzLmRyYWdTdGFydENvb3JkLnksdC5vZmZzZXRZXTt0aGlzLnpvb21Cb3hJblVpQ29vcmRpbmF0ZT17eDpNYXRoLm1pbiguLi5lKSx3aWR0aDpNYXRoLm1heCguLi5lKS1NYXRoLm1pbiguLi5lKSx5Ok1hdGgubWluKC4uLm4pLGhlaWdodDpNYXRoLm1heCguLi5uKS1NYXRoLm1pbiguLi5uKX19dGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX19KSksbGUodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIndoZWVsIix7cGFzc2l2ZTohMX0pLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxWZSgodD0+e2NvbnN0IGU9IXQuY3RybEtleSYmIXQuc2hpZnRLZXkmJnQuYWx0S2V5O3JldHVybiB0aGlzLnNob3dab29tSW5zdHJ1Y3Rpb249IWUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSxlPyh0LnByZXZlbnREZWZhdWx0KCksenQodCkpOmRlKDNlMykucGlwZShXZSgoKCk9Pnt0aGlzLnNob3dab29tSW5zdHJ1Y3Rpb249ITEsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pKSxWdCgoKCk9Pm51bGwpKSl9KSksZmUoKHQ9PkJvb2xlYW4odCkpKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdCh7ZGF0YUV4dGVudDp3aHQodCx0aGlzLnZpZXdFeHRlbnQsdGhpcy5kb21EaW0sLjAxLHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKX0pLHRoaXMuc3RhdGUhPT1JaHQuU0NST0xMX1pPT01JTkcmJih0aGlzLnN0YXRlPUlodC5TQ1JPTExfWk9PTUlORyx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKX1uZ09uQ2hhbmdlcygpe3RoaXMudXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9c2hvdWxkUGFuKHQpe2NvbnN0IGU9dC5zaGlmdEtleXx8dC5hbHRLZXk7aWYodCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQpcmV0dXJuIGU7Y29uc3Qgbj0odC5idXR0b25zJncwLkxFRlQpPT09dzAuTEVGVCxvPSh0LmJ1dHRvbnMmdzAuTUlERExFKT09PXcwLk1JRERMRTtyZXR1cm4hKCFuJiYhbykmJihvJiYhbnx8ZSl9dHJhY2tCeVNlcmllc05hbWUodCxlKXtyZXR1cm4gZS5pZH1nZXREb21YKHQpe3JldHVybiB0aGlzLnhTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC54LE1odCh0aGlzLmRvbURpbSwieCIpLHQpfWdldERhdGFYKHQpe3JldHVybiB0aGlzLnhTY2FsZS5yZXZlcnNlKHRoaXMudmlld0V4dGVudC54LE1odCh0aGlzLmRvbURpbSwieCIpLHQpfWdldERvbVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LnksTWh0KHRoaXMuZG9tRGltLCJ5IiksdCl9Z2V0RGF0YVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLnJldmVyc2UodGhpcy52aWV3RXh0ZW50LnksTWh0KHRoaXMuZG9tRGltLCJ5IiksdCl9c2hvdWxkUmVuZGVyVG9vbHRpcFBvaW50KHQpe3JldHVybiBudWxsIT09dCYmIWlzTmFOKHQueCkmJiFpc05hTih0LnkpfXVwZGF0ZVRvb2x0aXAodCl7dGhpcy5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkPXt4OnRoaXMuZ2V0RGF0YVgodC5vZmZzZXRYKSx5OnRoaXMuZ2V0RGF0YVkodC5vZmZzZXRZKX0sdGhpcy51cGRhdGVDdXJzb3JlZERhdGFBbmRUb29sdGlwVmlzaWJpbGl0eSgpfW9uVG9vbHRpcERpc3BsYXlEZXRhY2hlZCgpe3RoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD0hMX11cGRhdGVDdXJzb3JlZERhdGFBbmRUb29sdGlwVmlzaWJpbGl0eSgpe2NvbnN0IHQ9dGhpcy5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkO2lmKG51bGw9PT10KXJldHVybiB0aGlzLmN1cnNvcmVkRGF0YT1bXSx2b2lkKHRoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD0hMSk7dGhpcy5jdXJzb3JlZERhdGE9dGhpcy5pc0N1cnNvckluc2lkZT90aGlzLnNlcmllc0RhdGEubWFwKCh0PT4oe3Nlcmllc0RhdHVtOnQsbWV0YWRhdGE6dGhpcy5zZXJpZXNNZXRhZGF0YU1hcFt0LmlkXX0pKSkuZmlsdGVyKCgoe21ldGFkYXRhOnR9KT0+dCYmdC52aXNpYmxlJiYhQm9vbGVhbih0LmF1eCkpKS5tYXAoKCh7c2VyaWVzRGF0dW06ZSxtZXRhZGF0YTpufSk9Pntjb25zdCBvPShmdW5jdGlvbiBpKHQsZSl7Y29uc3Qgbj1NYXRoLm1pbihJNih0Lm1hcCgoKHt4OnR9KT0+dCkpLGUpLHQubGVuZ3RoLTEpLG89TWF0aC5tYXgoMCxuLTEpO3JldHVybiBNYXRoLmFicyh0W29dLngtZSktTWF0aC5hYnModFtuXS54LWUpPD0wP286bn0pKGUucG9pbnRzLHQueCk7cmV0dXJue2lkOmUuaWQsY2xvc2VzdFBvaW50SW5kZXg6byxwb2ludDplLnBvaW50c1tvXSxtZXRhZGF0YTpufX0pKS5maWx0ZXIoKHQ9PnQpKTpbXSx0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9Qm9vbGVhbih0aGlzLmN1cnNvcmVkRGF0YS5sZW5ndGgpfX1GaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZodCkoZnUoT2IpLGZ1KE5CKSl9LEZodC7JtWNtcD1zbyh7dHlwZTpGaHQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KGtodCw3LEtoKSxWeShkViw1KSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5kb3RzQ29udGFpbmVyPXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLm92ZXJsYXk9dC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZjZigic2hvdy16b29tLWluc3RydWN0aW9uIixuLnNob3dab29tSW5zdHJ1Y3Rpb24pfSxpbnB1dHM6e3Nlcmllc0RhdGE6InNlcmllc0RhdGEiLHNlcmllc01ldGFkYXRhTWFwOiJzZXJpZXNNZXRhZGF0YU1hcCIsdmlld0V4dGVudDoidmlld0V4dGVudCIseFNjYWxlOiJ4U2NhbGUiLHlTY2FsZToieVNjYWxlIixkb21EaW06ImRvbURpbSIsdG9vbHRpcE9yaWdpbkVsOiJ0b29sdGlwT3JpZ2luRWwiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIn0sb3V0cHV0czp7b25WaWV3RXh0ZW50Q2hhbmdlOiJvblZpZXdFeHRlbnRDaGFuZ2UiLG9uVmlld0V4dGVudFJlc2V0OiJvblZpZXdFeHRlbnRSZXNldCJ9LGZlYXR1cmVzOltVaChbe3Byb3ZpZGU6TkIsdXNlRmFjdG9yeTpIaHQsZGVwczpbclZdfV0pLHFvXSxkZWNsczoxMix2YXJzOjE1LGNvbnN0czpbWzEsImRvdHMiXSxbImRvdHMiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJ6b29tLWJveCIsNCwibmdJZiJdLFsxLCJ6b29tLWluc3RydWN0aW9uIl0sWzEsImluc3RydWN0aW9uLWNvbnRlbnQiXSxbImNka092ZXJsYXlPcmlnaW4iLCIiLDEsInRvb2x0aXAtb3JpZ2luIl0sWyJ0b29sdGlwT3JpZ2luIiwiY2RrT3ZlcmxheU9yaWdpbiJdLFsiY2RrQ29ubmVjdGVkT3ZlcmxheSIsIiIsMywiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIiwiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIiwiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iLCJkZXRhY2giXSxbImRlZmF1bHRUb29sdGlwIiwiIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiciIsIjQiLDQsIm5nSWYiXSxbInIiLCI0Il0sWzEsInpvb20tYm94Il0sWzEsInRvb2x0aXAtY29udGFpbmVyIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzEsInRvb2x0aXAtcm93Il0sWzEsInRvb2x0aXAtcm93LWNpcmNsZSJdLFsxLCJuYW1lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihvYSgpLF91KDAsInN2ZyIsMCwxKSxIbSgyLFJodCwyLDIsIm5nLWNvbnRhaW5lciIsMiksSG0oMyxFaHQsMSw0LCJyZWN0IiwzKSxDdSgpLGFhKCksX3UoNCwiZGl2Iiw0KSxfdSg1LCJzcGFuIiw1KSxQZig2LCJBbHQgKyBTY3JvbGwgdG8gWm9vbSIpLEN1KCksQ3UoKSxNdSg3LCJkaXYiLDYsNyksSG0oOSxUaHQsMiw1LCJuZy10ZW1wbGF0ZSIsOCksRHUoImRldGFjaCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvb2x0aXBEaXNwbGF5RGV0YWNoZWQoKX0pKSxIbSgxMCx6aHQsMTIsMiwibmctdGVtcGxhdGUiLG51bGwsOSxxeSkpLDImZSYmKGNmKCJwYW5uYWJsZSIsbi5zcGVjaWFsS2V5UHJlc3NlZCkoImRyYWdnYWJsZSIsbi5zdGF0ZT09PW4uSW50ZXJhY3Rpb25TdGF0ZS5OT05FfHxuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLkRSQUdfWk9PTUlORykoInBhbm5pbmciLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuUEFOTklORyksRGMoMiksaHUoIm5nSWYiLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuTk9ORSksRGMoMSksaHUoIm5nSWYiLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuRFJBR19aT09NSU5HKSxEYyg2KSxodSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsbi50b29sdGlwT3JpZ2luRWwpKCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsbi50b29sdGlwRGlzcGxheUF0dGFjaGVkJiZuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLk5PTkUpKCJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIixuLnRvb2x0aXBQb3NpdGlvbnMpKCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLG4uc2Nyb2xsU3RyYXRlZ3kpKCJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIiwhMSkoImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiLCEwKSgiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iLCEwKSl9LGRpcmVjdGl2ZXM6W1B2LGNWLGRWLHh2LEl2XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZTt1c2VyLXNlbGVjdDpub25lfS5kb3RzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5kb3RzLmRyYWdnYWJsZVtfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOmNyb3NzaGFpcn0uZG90cy5wYW5uYWJsZVtfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOmdyYWJ9LmRvdHMucGFubmluZ1tfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOmdyYWJiaW5nfS50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjYpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9LnRvb2x0aXAtb3JpZ2luW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0udG9vbHRpcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuODUpO2JvcmRlci1yYWRpdXM6NHB4O2NvbG9yOiNmZmY7Y29udGFpbjpwYWludCBzdHlsZSBsYXlvdXQ7Zm9udC1zaXplOi45ZW07b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjVweDtwb2ludGVyLWV2ZW50czpub25lO3dpZHRoOjEwMCV9dGhbX25nY29udGVudC0lQ09NUCVdLCB0ZFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggNXB4O3RleHQtYWxpZ246bGVmdH10aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmctYm90dG9tOjVweH0uem9vbS1ib3hbX25nY29udGVudC0lQ09NUCVde2ZpbGwtb3BhY2l0eTouMDM7ZmlsbDojMDAwO3N0cm9rZTojY2NjfS56b29tLWluc3RydWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDowO29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjEwcHg7dHJhbnNpdGlvbjpvcGFjaXR5IC41czt6LWluZGV4OjF9Lmluc3RydWN0aW9uLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNik7Ym9yZGVyLXJhZGl1czo1cHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjVweCAxMHB4O3VzZXItc2VsZWN0Om5vbmV9LnNob3ctem9vbS1pbnN0cnVjdGlvbltfbmdob3N0LSVDT01QJV0gICAuem9vbS1pbnN0cnVjdGlvbltfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihGaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibGluZS1jaGFydC1pbnRlcmFjdGl2ZS12aWV3Iix0ZW1wbGF0ZVVybDoiLi9saW5lX2NoYXJ0X2ludGVyYWN0aXZlX3ZpZXcubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9saW5lX2NoYXJ0X2ludGVyYWN0aXZlX3ZpZXcuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOk5CLHVzZUZhY3Rvcnk6SGh0LGRlcHM6W3JWXX1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2J9LHt0eXBlOk5CfV19KSx7ZG90c0NvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImRvdHMiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0sb3ZlcmxheTpbe3R5cGU6YXIsYXJnczpbZFZdfV0sc2VyaWVzRGF0YTpbe3R5cGU6Ul99XSxzZXJpZXNNZXRhZGF0YU1hcDpbe3R5cGU6Ul99XSx2aWV3RXh0ZW50Olt7dHlwZTpSX31dLHhTY2FsZTpbe3R5cGU6Ul99XSx5U2NhbGU6W3t0eXBlOlJffV0sZG9tRGltOlt7dHlwZTpSX31dLHRvb2x0aXBPcmlnaW5FbDpbe3R5cGU6Ul99XSx0b29sdGlwVGVtcGxhdGU6W3t0eXBlOlJffV0sb25WaWV3RXh0ZW50Q2hhbmdlOlt7dHlwZTpFX31dLG9uVmlld0V4dGVudFJlc2V0Olt7dHlwZTpFX31dLHNob3dab29tSW5zdHJ1Y3Rpb246W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy5zaG93LXpvb20taW5zdHJ1Y3Rpb24iXX1dfSk7ZnVuY3Rpb24gTGh0KHQsZSxuLG8pe3JldHVybnttYWpvcjpbXSxtaW5vcjp0LnRpY2tzKG8sbikubWFwKCh0PT4oe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzplLmZvcm1hdFRpY2sodCl9KSkpfX1mdW5jdGlvbiBCaHQodCxlLG4sbyl7Y29uc3RbaSxhXT1vLHI9TWF0aC5hYnMoYS1pKTtpZihyPi4wMDEpcmV0dXJuIExodCh0LGUsbixvKTtjb25zdCBzPXQudGlja3MoW2ksYV0sbiksbD10LnRpY2tzKFtpLGFdLDIpLGM9W107bGV0IGQ9KGZ1bmN0aW9uIHAodCl7Y29uc3QgZT10LnRvRXhwb25lbnRpYWwoKS5zcGxpdCgiZS0iLDIpO3JldHVybiAyPT09ZS5sZW5ndGg/TnVtYmVyKGVbMV0pLTE6MH0pKHIpO3I8MSYmbC5ldmVyeSgodD0+e2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIGU+PTAmJmU8MX0pKSYmKGQrPTEpO2NvbnN0IG09bmV3IE1hcDtmb3IoY29uc3QgdCBvZiBsKXtjb25zdFtuLG89IiJdPVN0cmluZyh0KS5zcGxpdCgiLiIsMiksaT1OdW1iZXIobisiLiIrby5zbGljZSgwLGQpKTttLnNldChpLHtzdGFydDppLHRpY2tGb3JtYXR0ZWRTdHJpbmc6MD09PWk/IuKAlCI6ZS5mb3JtYXRSZWFkYWJsZShpKX0pfWNvbnN0IHU9MTAqTWF0aC5wb3coMTAsLWQpO2Zvcihjb25zdCB0IG9mIHMpZm9yKGNvbnN0IG4gb2ZbLi4ubS5rZXlzKCldLnJldmVyc2UoKSl7Y29uc3Qgbz10LW47aWYobz49MCYmbzx1KXtpZigwPT09biljLnB1c2goe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzplLmZvcm1hdFRpY2sodCl9KTtlbHNle2NvbnN0IGU9U3RyaW5nKHQpLnNsaWNlKFN0cmluZyhuKS5sZW5ndGgpO2MucHVzaCh7dmFsdWU6dCx0aWNrRm9ybWF0dGVkU3RyaW5nOmDigKYke2V8fCIwIn1gfSl9YnJlYWt9fXJldHVybnttYWpvcjpBcnJheS5mcm9tKG0udmFsdWVzKCkpLG1pbm9yOmN9fWNvbnN0IFZodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpO2Z1bmN0aW9uIFVodCh0LGUpe2lmKDEmdCYmKG9hKCksX3UoMCwiZyIsMTcpLF91KDEsInRleHQiKSxQZigyKSxDdSgpLF91KDMsInRpdGxlIiksUGYoNCksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgpO0RjKDEpLGxmKCJmb250IixuLmF4aXNGb250KSx5bSgieCIsbi50ZXh0WFBvc2l0aW9uKHQudmFsdWUpKSgieSIsbi50ZXh0WVBvc2l0aW9uKHQudmFsdWUpKSxEYygxKSxrZigiICIsdC50aWNrRm9ybWF0dGVkU3RyaW5nLCIgIiksRGMoMiksd2Yobi5nZXRGb3JtYXR0ZXIoKS5mb3JtYXRMb25nKHQudmFsdWUpKX19ZnVuY3Rpb24gamh0KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsMjApLF91KDEsInNwYW4iKSxQZigyKSxDdSgpLEN1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXgsbz1lLmxhc3QsaT1OdSgyKTtsZigibGVmdCIsaS5nZXRNYWpvclhQb3NpdGlvbih0KSwicHgiKSgid2lkdGgiLGkuZ2V0TWFqb3JXaWR0aFN0cmluZyh0LG8saS5tYWpvclRpY2tzW24rMV0pKSgiYm90dG9tIixpLmdldE1ham9yWVBvc2l0aW9uKHQpLCJweCIpKCJoZWlnaHQiLGkuZ2V0TWFqb3JIZWlnaHRTdHJpbmcodCxvLGkubWFqb3JUaWNrc1tuKzFdKSkoImZvbnQiLGkuYXhpc0ZvbnQpLGNmKCJtYWpvci1sYWJlbCIsITApKCJsYXN0IixvKSxodSgidGl0bGUiLGkuZ2V0Rm9ybWF0dGVyKCkuZm9ybWF0TG9uZyh0LnN0YXJ0KSksRGMoMiksd2YodC50aWNrRm9ybWF0dGVkU3RyaW5nKX19ZnVuY3Rpb24gV2h0KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxOCksSG0oMSxqaHQsMywxNiwic3BhbiIsMTkpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGh1KCJuZ0Zvck9mIix0Lm1ham9yVGlja3MpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeU1ham9yVGljayl9fWNsYXNzIEdodHtjb25zdHJ1Y3Rvcigpe3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlPW5ldyBTeSx0aGlzLmVkaXRNZW51T3BlbmVkPSExLHRoaXMubWFqb3JUaWNrcz1bXSx0aGlzLm1pbm9yVGlja3M9W119bmdPbkNoYW5nZXMoKXtsZXQgdD1udWxsO2NvbnN0IGU9dmh0KCJ4Ij09PXRoaXMuYXhpcz90aGlzLmRvbURpbS53aWR0aDp0aGlzLmRvbURpbS5oZWlnaHQsdGhpcy5ncmlkQ291bnQpO3Q9dGhpcy5zY2FsZSBpbnN0YW5jZW9mIElydD9CaHQodGhpcy5zY2FsZSx0aGlzLmdldEZvcm1hdHRlcigpLGUsdGhpcy5heGlzRXh0ZW50KTp0aGlzLnNjYWxlIGluc3RhbmNlb2YgRnJ0PyhmdW5jdGlvbiBuKHQsZSxvLGkpe2NvbnN0W2Escl09aTtsZXQgcz10LnRpY2tzKGksMik7aWYoci1hPj04NjRlNXx8cy5sZW5ndGg+MilyZXR1cm4gTGh0KHQsZSxvLGkpO2NvbnN0IGw9dC50aWNrcyhpLG8pO3JldHVybnttYWpvcjpzLm1hcCgodD0+KHtzdGFydDp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6ZS5mb3JtYXRTaG9ydCh0KX0pKSksbWlub3I6bC5tYXAoKHQ9Pih7dmFsdWU6dCx0aWNrRm9ybWF0dGVkU3RyaW5nOmUuZm9ybWF0VGljayh0KX0pKSl9fSkodGhpcy5zY2FsZSx0aGlzLmdldEZvcm1hdHRlcigpLGUsdGhpcy5heGlzRXh0ZW50KTpMaHQodGhpcy5zY2FsZSx0aGlzLmdldEZvcm1hdHRlcigpLGUsdGhpcy5heGlzRXh0ZW50KSx0aGlzLm1ham9yVGlja3M9dC5tYWpvcix0aGlzLm1pbm9yVGlja3M9KGZ1bmN0aW9uIG8odCxlLG4saSxhPTUpe2lmKCF0Lmxlbmd0aHx8IVZodClyZXR1cm4gdDtjb25zdCByPSJ4Ij09PW4/MTotMTtsZXQgcz1udWxsO3JldHVybiB0LmZpbHRlcigodD0+e2NvbnN0IG89ZSh0KTtWaHQuZm9udD1pO2NvbnN0IGw9Vmh0Lm1lYXN1cmVUZXh0KHQudGlja0Zvcm1hdHRlZFN0cmluZyksYz0ieCI9PT1uP2wud2lkdGg6bC5hY3R1YWxCb3VuZGluZ0JveEFzY2VudC1sLmFjdHVhbEJvdW5kaW5nQm94RGVzY2VudDtyZXR1cm4gbnVsbD09PXM/IShvK3IqYzwwfHwocz1vK3IqYywwKSk6IShyKihzK3IqYS1vKT4wfHwocz1vK3IqYywwKSl9KSl9KSh0Lm1pbm9yLCh0PT50aGlzLmdldERvbVBvcyh0LnZhbHVlKSksdGhpcy5heGlzLCIxMXB4IFJvYm90bywgc2Fucy1zZXJpZiIpfWdldEZvcm1hdHRlcigpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9dGhpcy5jdXN0b21Gb3JtYXR0ZXIpJiZ2b2lkIDAhPT10P3Q6dGhpcy5zY2FsZS5kZWZhdWx0Rm9ybWF0dGVyfXRyYWNrQnlNaW5vclRpY2sodCl7cmV0dXJuIHQudmFsdWV9dHJhY2tCeU1ham9yVGljayh0KXtyZXR1cm4gdC5zdGFydH1nZXREb21Qb3ModCl7cmV0dXJuIHRoaXMuc2NhbGUuZm9yd2FyZCh0aGlzLmF4aXNFeHRlbnQsTWh0KHRoaXMuZG9tRGltLHRoaXMuYXhpcyksdCl9dGV4dFhQb3NpdGlvbih0KXtyZXR1cm4ieCI9PT10aGlzLmF4aXM/U3RyaW5nKHRoaXMuZ2V0RG9tUG9zKHQpKToiMTAwJSJ9dGV4dFlQb3NpdGlvbih0KXtyZXR1cm4ieCI9PT10aGlzLmF4aXM/IiI6U3RyaW5nKHRoaXMuZ2V0RG9tUG9zKHQpKX1nZXRNYWpvclhQb3NpdGlvbih0KXtyZXR1cm4ieSI9PT10aGlzLmF4aXM/MDpNYXRoLm1pbih0aGlzLmRvbURpbS53aWR0aCxNYXRoLm1heCgwLHRoaXMuZ2V0RG9tUG9zKHQuc3RhcnQpKSl9Z2V0TWFqb3JXaWR0aFN0cmluZyh0LGUsbil7cmV0dXJuInkiPT09dGhpcy5heGlzPyIiOihlfHwhbj90aGlzLmRvbURpbS53aWR0aDp0aGlzLmdldE1ham9yWFBvc2l0aW9uKG4pKS10aGlzLmdldE1ham9yWFBvc2l0aW9uKHQpKyJweCJ9Z2V0TWFqb3JZUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzPzA6dGhpcy5kb21EaW0uaGVpZ2h0LU1hdGgubWluKHRoaXMuZG9tRGltLmhlaWdodCxNYXRoLm1heCgwLHRoaXMuZ2V0RG9tUG9zKHQuc3RhcnQpKSl9Z2V0TWFqb3JIZWlnaHRTdHJpbmcodCxlLG4pe3JldHVybiJ4Ij09PXRoaXMuYXhpcz8iIjooZXx8IW4/dGhpcy5kb21EaW0uaGVpZ2h0OnRoaXMuZ2V0TWFqb3JZUG9zaXRpb24obikpLXRoaXMuZ2V0TWFqb3JZUG9zaXRpb24odCkrInB4In1rZXlkb3duUHJldmVudENsb3NlKHQpeyJFc2NhcGUiIT09dC5rZXkmJnQuc3RvcFByb3BhZ2F0aW9uKCl9ZXh0ZW50Q2hhbmdlZCh0LGUpe2xldCBuPU51bWJlcih0KSxvPU51bWJlcihlKTtpZihvPG4pe2NvbnN0IHQ9bjtuPW8sbz10fU51bWJlci5pc0Zpbml0ZShuKSYmTnVtYmVyLmlzRmluaXRlKG8pJiZ0aGlzLm9uVmlld0V4dGVudENoYW5nZS5lbWl0KFtuLG9dKX1vbkF4aXNVcGRhdGVNZW51T3Blbih0LGUsbil7dC52YWx1ZT1TdHJpbmcoblswXSksZS52YWx1ZT1TdHJpbmcoblsxXSksdC5mb2N1cygpfXNldEVkaXRNZW51T3BlbmVkKHQpe3RoaXMuZWRpdE1lbnVPcGVuZWQ9dH19R2h0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxHaHQpfSxHaHQuybVjbXA9c28oe3R5cGU6R2h0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWF4aXMiXV0saW5wdXRzOntheGlzRXh0ZW50OiJheGlzRXh0ZW50IixheGlzOiJheGlzIixzY2FsZToic2NhbGUiLGdyaWRDb3VudDoiZ3JpZENvdW50Iixkb21EaW06ImRvbURpbSIsY3VzdG9tRm9ybWF0dGVyOiJjdXN0b21Gb3JtYXR0ZXIifSxvdXRwdXRzOntvblZpZXdFeHRlbnRDaGFuZ2U6Im9uVmlld0V4dGVudENoYW5nZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6MjYsdmFyczoxMyxjb25zdHM6W1sxLCJsaW5lIl0sWzEsIm1pbm9yIl0sWzEsInRpY2tzIl0sWyJjbGFzcyIsIm1pbm9yLXRpY2stbGFiZWwiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidGl0bGUiLCJDbGljayB0byBtYW51YWxseSBzZXQgbWluICYgbWF4IHZhbHVlcyIsMywibWF0TWVudVRyaWdnZXJGb3IiLCJtZW51T3BlbmVkIiwibWVudUNsb3NlZCJdLFsibWF0TWVudVRyaWdnZXIiLCJtYXRNZW51VHJpZ2dlciJdLFsic3ZnSWNvbiIsImVkaXRfMjRweCJdLFsiY2xhc3MiLCJtYWpvciB0aWNrcyIsNCwibmdJZiJdLFsieFBvc2l0aW9uIiwiYmVmb3JlIiwzLCJ5UG9zaXRpb24iXSxbIm1hbnVhbENvbnRyb2wiLCJtYXRNZW51Il0sWzEsImV4dGVudC1lZGl0LWlucHV0IiwzLCJjbGljayIsImtleWRvd24iXSxbInR5cGUiLCJudW1iZXIiLDMsInZhbHVlIl0sWyJtaW5JbnB1dCIsIiJdLFsibWF4SW5wdXQiLCIiXSxbMSwiZXh0ZW50LWVkaXQtY29udHJvbCIsMywia2V5ZG93biJdLFsibWF0LXJhaXNlZC1idXR0b24iLCIiLCJjb2xvciIsInByaW1hcnkiLDEsImV4dGVudC1lZGl0LWNoYW5nZSIsMywiY2xpY2siXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMSwiZXh0ZW50LWVkaXQtY2FuY2VsIiwzLCJjbGljayJdLFsxLCJtaW5vci10aWNrLWxhYmVsIl0sWzEsIm1ham9yIiwidGlja3MiXSxbMywibWFqb3ItbGFiZWwiLCJsYXN0IiwibGVmdCIsIndpZHRoIiwiYm90dG9tIiwiaGVpZ2h0IiwiZm9udCIsInRpdGxlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMywidGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIpLE11KDEsImRpdiIsMCksX3UoMiwiZGl2IiwxKSxvYSgpLF91KDMsInN2ZyIsMiksSG0oNCxVaHQsNSw2LCJnIiwzKSxDdSgpLGFhKCksX3UoNSwiYnV0dG9uIiw0LDUpLER1KCJtZW51T3BlbmVkIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG89Rm0oMTUpLGk9Rm0oMjApO3JldHVybiBuLm9uQXhpc1VwZGF0ZU1lbnVPcGVuKG8saSxuLmF4aXNFeHRlbnQpLG4uc2V0RWRpdE1lbnVPcGVuZWQoITApfSkpKCJtZW51Q2xvc2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnNldEVkaXRNZW51T3BlbmVkKCExKX0pKSxNdSg3LCJtYXQtaWNvbiIsNiksQ3UoKSxDdSgpLEhtKDgsV2h0LDIsMiwiZGl2Iiw3KSxDdSgpLF91KDksIm1hdC1tZW51Iiw4LDkpLF91KDExLCJkaXYiLDEwKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duUHJldmVudENsb3NlKGUpfSkpLF91KDEyLCJsYWJlbCIpLFBmKDEzLCJtaW4iKSxDdSgpLE11KDE0LCJpbnB1dCIsMTEsMTIpLEN1KCksX3UoMTYsImRpdiIsMTApLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmtleWRvd25QcmV2ZW50Q2xvc2UoZSl9KSksX3UoMTcsImxhYmVsIiksUGYoMTgsIm1heCIpLEN1KCksTXUoMTksImlucHV0IiwxMSwxMyksQ3UoKSxfdSgyMSwiZGl2IiwxNCksRHUoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmtleWRvd25QcmV2ZW50Q2xvc2UoZSl9KSksX3UoMjIsImJ1dHRvbiIsMTUpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBvPUZtKDE1KSxpPUZtKDIwKSxhPUZtKDYpO3JldHVybiBuLmV4dGVudENoYW5nZWQoby52YWx1ZSxpLnZhbHVlKSxhLmNsb3NlTWVudSgpfSkpLFBmKDIzLCIgQ2hhbmdlICIpLEN1KCksX3UoMjQsImJ1dHRvbiIsMTYpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gRm0oNikuY2xvc2VNZW51KCl9KSksUGYoMjUsIiBDYW5jZWwgIiksQ3UoKSxDdSgpLEN1KCl9aWYoMiZlKXtjb25zdCB0PUZtKDEwKTttZihuLmF4aXMrIi1heGlzIGF4aXMiKSxEYyg0KSxodSgibmdGb3JPZiIsbi5taW5vclRpY2tzKSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlNaW5vclRpY2spLERjKDEpLGNmKCJleHRlbnQtZWRpdC1idXR0b24iLCEwKSgiZXh0ZW50LWVkaXQtbWVudS1vcGVuZWQiLG4uZWRpdE1lbnVPcGVuZWQpLGh1KCJtYXRNZW51VHJpZ2dlckZvciIsdCksRGMoMyksaHUoIm5nSWYiLG4ubWFqb3JUaWNrcy5sZW5ndGgpLERjKDEpLGh1KCJ5UG9zaXRpb24iLCJ5Ij09PW4uYXhpcz8iYWJvdmUiOiJiZWxvdyIpLERjKDUpLGh1KCJ2YWx1ZSIsbi5heGlzRXh0ZW50WzBdKSxEYyg1KSxodSgidmFsdWUiLG4uYXhpc0V4dGVudFsxXSl9fSxkaXJlY3RpdmVzOlt4dixXTCxvWixFcSxQdixRcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbn0ubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOmN1cnJlbnRDb2xvcjtmb250LXNpemU6MTFweDt1c2VyLXNlbGVjdDpub25lfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdLCAubWlub3JbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAwO292ZXJmbG93OmhpZGRlbn0ubGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYWFhO2ZsZXg6MCAwIDFweDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH0udGlja3NbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246Y29sdW1ufS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmxpbmVbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206M3B4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6dGV4dC1iZWZvcmUtZWRnZTt0ZXh0LWFuY2hvcjptaWRkbGV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudGlja3NbX25nY29udGVudC0lQ09NUCVdey13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMCkgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwKSAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmxpbmVbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0OjVweH0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVde2RvbWluYW50LWJhc2VsaW5lOmNlbnRyYWw7dGV4dC1hbmNob3I6ZW5kfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwKSAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwKSAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpfS5leHRlbnQtZWRpdC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZTtmb250LXNpemU6MDtoZWlnaHQ6MjRweDtsaW5lLWhlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjVweDt0b3A6NXB4O3Zpc2liaWxpdHk6aGlkZGVuO3dpZHRoOjI0cHh9LmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5leHRlbnQtZWRpdC1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2NvbHVtbi1nYXA6NXB4O2Rpc3BsYXk6Z3JpZDtmb250LXNpemU6MTJweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MzBweCBtaW5tYXgoYXV0bywgMTAwcHgpO2hlaWdodDozMHB4O21hcmdpbjoxMHB4IDIwcHh9LmV4dGVudC1lZGl0LWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2NvbG9yOmluaGVyaXR9LmV4dGVudC1lZGl0LWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjoxMHB4IDIwcHh9LmV4dGVudC1lZGl0LWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDoxLjQ7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbmc6MCAxMHB4fS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5leHRlbnQtZWRpdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAuYXhpc1tfbmdjb250ZW50LSVDT01QJV06Zm9jdXMtd2l0aGluICAgLmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5leHRlbnQtZWRpdC1tZW51LW9wZW5lZFtfbmdjb250ZW50LSVDT01QJV17dmlzaWJpbGl0eTp2aXNpYmxlfS5tYWpvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2NvbnRhaW46c3RyaWN0fS5tYWpvcltfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtd2lkdGg6MTAwJX0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5ZTllOWU7cGFkZGluZzowIDVweH0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbC5sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICM5ZTllOWV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5ZTllOWU7aGVpZ2h0OjEwMCU7cGFkZGluZzo1cHggMDt3aWR0aDoxMDAlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsLmxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM5ZTllOWV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVdID4gc3Bhbltfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihHaHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibGluZS1jaGFydC1heGlzIix0ZW1wbGF0ZVVybDoibGluZV9jaGFydF9heGlzX3ZpZXcubmcuaHRtbCIsc3R5bGVVcmxzOlsibGluZV9jaGFydF9heGlzX3ZpZXcuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7YXhpc0V4dGVudDpbe3R5cGU6Ul99XSxheGlzOlt7dHlwZTpSX31dLHNjYWxlOlt7dHlwZTpSX31dLGdyaWRDb3VudDpbe3R5cGU6Ul99XSxkb21EaW06W3t0eXBlOlJffV0sY3VzdG9tRm9ybWF0dGVyOlt7dHlwZTpSX31dLG9uVmlld0V4dGVudENoYW5nZTpbe3R5cGU6RV99XX0pO2NvbnN0IFlodD1bInNlcmllc1ZpZXciXSxxaHQ9WyJ4QXhpcyJdLFpodD1bInlBeGlzIl0sWGh0PVsiY2hhcnRFbCJdO2Z1bmN0aW9uIEtodCh0LGUpe2lmKDEmdCYmTXUoMCwibGluZS1jaGFydC1ncmlkLXZpZXciLDE1KSwyJnQpe2NvbnN0IHQ9TnUoKTtodSgidmlld0V4dGVudCIsdC52aWV3Qm94KSgieFNjYWxlIix0LnhTY2FsZSkoInlTY2FsZSIsdC55U2NhbGUpKCJ4R3JpZENvdW50Iix0LlhfR1JJRF9DT1VOVCkoInlHcmlkQ291bnQiLHQuWV9HUklEX0NPVU5UKSgiZG9tRGltIix0LmRvbURpbWVuc2lvbnMubWFpbil9fWZ1bmN0aW9uIEpodCh0LGUpezEmdCYmKG9hKCksTXUoMCwic3ZnIixudWxsLDE2KSl9ZnVuY3Rpb24gUWh0KHQsZSl7MSZ0JiZNdSgwLCJjYW52YXMiLG51bGwsMTYpfWZ1bmN0aW9uICRodCh0LGUpe2lmKDEmdCYmKHZ1KDApLEhtKDEsSmh0LDIsMCwic3ZnIiw1KSxIbSgyLFFodCwyLDAsImNhbnZhcyIsNSkseHUoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksaHUoIm5nSWYiLHQuZ2V0UmVuZGVyZXJUeXBlKCk9PT10LlJlbmRlcmVyVHlwZS5TVkcpLERjKDEpLGh1KCJuZ0lmIix0LmdldFJlbmRlcmVyVHlwZSgpPT09dC5SZW5kZXJlclR5cGUuV0VCR0wpfX1mdW5jdGlvbiB0YnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciLDE3KSxEdSgib25WaWV3RXh0ZW50Q2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vblZpZXdCb3hDaGFuZ2VkKG4pfSkpKCJvblZpZXdFeHRlbnRSZXNldCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS52aWV3Qm94UmVzZXQoKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpLGU9Rm0oMSk7aHUoInNlcmllc0RhdGEiLHQuc2VyaWVzRGF0YSkoInNlcmllc01ldGFkYXRhTWFwIix0LnNlcmllc01ldGFkYXRhTWFwKSgidmlld0V4dGVudCIsdC52aWV3Qm94KSgieFNjYWxlIix0LnhTY2FsZSkoInlTY2FsZSIsdC55U2NhbGUpKCJ0b29sdGlwT3JpZ2luRWwiLGUpKCJkb21EaW0iLHQuZG9tRGltZW5zaW9ucy5tYWluKSgidG9vbHRpcFRlbXBsYXRlIix0LnRvb2x0aXBUZW1wbGF0ZSl9fWNvbnN0IGVidD1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm57eFNjYWxlOnQseVNjYWxlOmUsZG9tRGltZW5zaW9uOm4sdmlld0V4dGVudDpvfX07ZnVuY3Rpb24gbmJ0KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxOCksT3UoMSwxOSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksaHUoIm5nVGVtcGxhdGVPdXRsZXQiLHQuY3VzdG9tVmlzVGVtcGxhdGUpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsc3koMixlYnQsdC54U2NhbGUsdC55U2NhbGUsdC5kb21EaW1lbnNpb25zLm1haW4sdC52aWV3Qm94KSl9fWZ1bmN0aW9uIG9idCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImxpbmUtY2hhcnQtYXhpcyIsMjApLER1KCJvblZpZXdFeHRlbnRDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uVmlld0JveENoYW5nZWRGcm9tQXhpcyhuLCJ5Iil9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtodSgiYXhpc0V4dGVudCIsdC52aWV3Qm94LnkpKCJjdXN0b21Gb3JtYXR0ZXIiLHQuY3VzdG9tWUZvcm1hdHRlcikoImRvbURpbSIsdC5kb21EaW1lbnNpb25zLnlBeGlzKSgiZ3JpZENvdW50Iix0LllfR1JJRF9DT1VOVCkoInNjYWxlIix0LnlTY2FsZSl9fWZ1bmN0aW9uIGlidCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImxpbmUtY2hhcnQtYXhpcyIsMjEpLER1KCJvblZpZXdFeHRlbnRDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uVmlld0JveENoYW5nZWRGcm9tQXhpcyhuLCJ4Iil9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtodSgiYXhpc0V4dGVudCIsdC52aWV3Qm94LngpKCJjdXN0b21Gb3JtYXR0ZXIiLHQuY3VzdG9tWEZvcm1hdHRlcikoImRvbURpbSIsdC5kb21EaW1lbnNpb25zLnhBeGlzKSgiZ3JpZENvdW50Iix0LlhfR1JJRF9DT1VOVCkoInNjYWxlIix0LnhTY2FsZSl9fWNvbnN0IGFidD1mdW5jdGlvbih0LGUsbixvLGkpe3JldHVybnt4U2NhbGU6dCx5U2NhbGU6ZSxkb21EaW1lbnNpb246bix2aWV3RXh0ZW50Om8sZm9ybWF0dGVyOml9fTtmdW5jdGlvbiByYnQodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDE4KSxPdSgxLDE5KSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxodSgibmdUZW1wbGF0ZU91dGxldCIsdC5jdXN0b21YQXhpc1RlbXBsYXRlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGx5KDIsYWJ0LHQueFNjYWxlLHQueVNjYWxlLHQuZG9tRGltZW5zaW9ucy54QXhpcyx0LnZpZXdCb3gsdC5jdXN0b21YRm9ybWF0dGVyfHx0LnhTY2FsZS5kZWZhdWx0Rm9ybWF0dGVyKSl9fWZ1bmN0aW9uIHNidCh0LGUpezEmdCYmKF91KDAsImRpdiIsMjIpLE11KDEsInNwYW4iLDIzKSxDdSgpKX1jb25zdCBsYnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57Y29udGFpbmVyOiEwLCJkYXJrLW1vZGUiOnQsImxpbmUtb25seS1tb2RlIjplfX0sY2J0PXt4OlswLDFdLHk6WzAsMV19O2NsYXNzIGRidHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy5SZW5kZXJlclR5cGU9TTYsdGhpcy51c2VEYXJrTW9kZT0hMSx0aGlzLnByZWZlcnJlZFJlbmRlcmVyVHlwZT1NNi5XRUJHTCx0aGlzLnhTY2FsZVR5cGU9djYuTElORUFSLHRoaXMueVNjYWxlVHlwZT12Ni5MSU5FQVIsdGhpcy5saW5lT25seT0hMSx0aGlzLm9uVmlld0JveE92ZXJyaWRkZW49bmV3IFcoMSksdGhpcy5pZ25vcmVZT3V0bGllcnM9ITEsdGhpcy5ZX0dSSURfQ09VTlQ9Nix0aGlzLlhfR1JJRF9DT1VOVD0xMCx0aGlzLnhTY2FsZT16cnQodGhpcy54U2NhbGVUeXBlKSx0aGlzLnlTY2FsZT16cnQodGhpcy54U2NhbGVUeXBlKSx0aGlzLnZpZXdCb3g9Y2J0LHRoaXMuZG9tRGltZW5zaW9ucz17bWFpbjp7d2lkdGg6MCxoZWlnaHQ6MH0seEF4aXM6e3dpZHRoOjAsaGVpZ2h0OjB9LHlBeGlzOnt3aWR0aDowLGhlaWdodDowfX0sdGhpcy5zaG93Q2hhcnRSZW5kZXJlckVsZW1lbnQ9ITAsdGhpcy5saW5lQ2hhcnQ9bnVsbCx0aGlzLmlzRGF0YVVwZGF0ZWQ9ITEsdGhpcy5pc01ldGFkYXRhVXBkYXRlZD0hMSx0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMSx0aGlzLmlzVmlld0JveE92ZXJyaWRkZW49ITEsdGhpcy51c2VEYXJrTW9kZVVwZGF0ZWQ9ITEsdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkPSEwLHRoaXMuc2NhbGVVcGRhdGVkPSEwLHRoaXMuaXNSZW5kZXJpbmdDb250ZXh0TG9zdD0hMX1uZ09uSW5pdCgpe3RoaXMub25WaWV3Qm94T3ZlcnJpZGRlbi5uZXh0KHRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbil9bmdPbkNoYW5nZXModCl7dC54U2NhbGVUeXBlJiYodGhpcy54U2NhbGU9enJ0KHRoaXMueFNjYWxlVHlwZSksdGhpcy5zY2FsZVVwZGF0ZWQ9ITApLHQueVNjYWxlVHlwZSYmKHRoaXMueVNjYWxlPXpydCh0aGlzLnlTY2FsZVR5cGUpLHRoaXMuc2NhbGVVcGRhdGVkPSEwKSx0LnNlcmllc0RhdGEmJih0aGlzLmlzRGF0YVVwZGF0ZWQ9ITApLHQuZml4ZWRWaWV3Qm94JiYodGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWQ9ITApLHQuc2VyaWVzTWV0YWRhdGFNYXAmJih0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSEwKSx0LnVzZURhcmtNb2RlJiYodGhpcy51c2VEYXJrTW9kZVVwZGF0ZWQ9ITApLHRoaXMuc2NhbGVVcGRhdGVkJiZ0aGlzLnNldElzVmlld0JveE92ZXJyaWRkZW4oITEpLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD10aGlzLmlzVmlld0JveENoYW5nZWR8fHRoaXMuc2NhbGVVcGRhdGVkfHwhdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuJiZ0aGlzLnNob3VsZFVwZGF0ZURlZmF1bHRWaWV3Qm94KHQpLHRoaXMudXBkYXRlTGluZUNoYXJ0KCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5pbml0aWFsaXplQ2hhcnQoKSx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpfXJlY292ZXJSZW5kZXJlcklmTmVlZGVkKCl7dGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0JiYhdGhpcy5kaXNhYmxlVXBkYXRlJiYodGhpcy5zaG93Q2hhcnRSZW5kZXJlckVsZW1lbnQ9ITEsdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCksdGhpcy5zaG93Q2hhcnRSZW5kZXJlckVsZW1lbnQ9ITAsdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCksdGhpcy5pbml0aWFsaXplQ2hhcnQoKSx0aGlzLnNjYWxlVXBkYXRlZD0hMCx0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSEwLHRoaXMuaXNEYXRhVXBkYXRlZD0hMCx0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMCx0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMCx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0PSExKX1vblZpZXdSZXNpemUoKXt0aGlzLmxpbmVDaGFydCYmKHRoaXMucmVhZEFuZFVwZGF0ZURvbURpbWVuc2lvbnMoKSx0aGlzLmxpbmVDaGFydC5yZXNpemUodGhpcy5kb21EaW1lbnNpb25zLm1haW4pLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpKX1zaG91bGRVcGRhdGVEZWZhdWx0Vmlld0JveCh0KXtpZih0LnhTY2FsZVR5cGV8fHQueVNjYWxlVHlwZXx8dC5pZ25vcmVZT3V0bGllcnMpcmV0dXJuITA7aWYodC5zZXJpZXNEYXRhKXJldHVybiEwO2NvbnN0IGU9dC5zZXJpZXNNZXRhZGF0YU1hcDtpZihlKXtjb25zdCB0PWUucHJldmlvdXNWYWx1ZTtpZihPYmplY3Qua2V5cyh0aGlzLnNlcmllc01ldGFkYXRhTWFwKS5sZW5ndGghPT1PYmplY3Qua2V5cyhudWxsIT10P3Q6e30pLmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3RbZSxuXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc2VyaWVzTWV0YWRhdGFNYXApKXtjb25zdCBvPXQmJnRbZV07aWYoIW98fG4udmlzaWJsZSE9PW8udmlzaWJsZSlyZXR1cm4hMH19cmV0dXJuITF9b25Db250ZXh0TG9zdCgpe3RoaXMuaXNSZW5kZXJpbmdDb250ZXh0TG9zdD0hMCx0aGlzLmxpbmVDaGFydCYmKHRoaXMubGluZUNoYXJ0LmRpc3Bvc2UoKSx0aGlzLmxpbmVDaGFydD1udWxsKX10cmlnZ2VyQ29udGV4dExvc3RGb3JUZXN0KCl7dGhpcy5vbkNvbnRleHRMb3N0KCl9Z2V0TGluZUNoYXJ0Rm9yVGVzdCgpe3JldHVybiB0aGlzLmxpbmVDaGFydH1pbml0aWFsaXplQ2hhcnQoKXt0aGlzLmxpbmVDaGFydCYmdGhpcy5saW5lQ2hhcnQuZGlzcG9zZSgpO2NvbnN0IHQ9dGhpcy5nZXRSZW5kZXJlclR5cGUoKSxlPXtvbkRyYXdFbmQ6KCk9Pnt9LG9uQ29udGV4dExvc3Q6dGhpcy5vbkNvbnRleHRMb3N0LmJpbmQodGhpcyl9O2xldCBuPW51bGw7c3dpdGNoKHRoaXMucmVhZEFuZFVwZGF0ZURvbURpbWVuc2lvbnMoKSx0KXtjYXNlIE02LlNWRzpuPXt0eXBlOk02LlNWRyxjb250YWluZXI6dGhpcy5jaGFydEVsLm5hdGl2ZUVsZW1lbnQsY2FsbGJhY2tzOmUsZG9tRGltZW5zaW9uOnRoaXMuZG9tRGltZW5zaW9ucy5tYWluLHVzZURhcmtNb2RlOnRoaXMudXNlRGFya01vZGV9O2JyZWFrO2Nhc2UgTTYuV0VCR0w6bj17dHlwZTpNNi5XRUJHTCxjb250YWluZXI6dGhpcy5jaGFydEVsLm5hdGl2ZUVsZW1lbnQsZGV2aWNlUGl4ZWxSYXRpbzp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxjYWxsYmFja3M6ZSxkb21EaW1lbnNpb246dGhpcy5kb21EaW1lbnNpb25zLm1haW4sdXNlRGFya01vZGU6dGhpcy51c2VEYXJrTW9kZX07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYDxsaW5lLWNoYXJ0PiBkb2VzIG5vdCB5ZXQgc3VwcG9ydCByZW5kZXJlclR5cGU6ICR7dH1gKX1jb25zdCBvPXQhPT1NNi5TVkcmJkJydCgpO3RoaXMubGluZUNoYXJ0PW5ldyhvP19odDpnaHQpKG4pfW5nT25EZXN0cm95KCl7dGhpcy5saW5lQ2hhcnQmJnRoaXMubGluZUNoYXJ0LmRpc3Bvc2UoKX1nZXRSZW5kZXJlclR5cGUoKXtyZXR1cm4gQ2h0KHRoaXMucHJlZmVycmVkUmVuZGVyZXJUeXBlKX1yZWFkQW5kVXBkYXRlRG9tRGltZW5zaW9ucygpe3RoaXMuZG9tRGltZW5zaW9ucz17bWFpbjp7d2lkdGg6dGhpcy5zZXJpZXNWaWV3Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsaGVpZ2h0OnRoaXMuc2VyaWVzVmlldy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodH0seEF4aXM6e3dpZHRoOnRoaXMueEF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxoZWlnaHQ6dGhpcy54QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodH0seUF4aXM6e3dpZHRoOnRoaXMueUF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxoZWlnaHQ6dGhpcy55QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodH19fXVwZGF0ZUxpbmVDaGFydCgpe3ZhciB0LGU7aWYodGhpcy5yZWNvdmVyUmVuZGVyZXJJZk5lZWRlZCgpLCF0aGlzLmxpbmVDaGFydHx8dGhpcy5kaXNhYmxlVXBkYXRlKXJldHVybjtpZih0aGlzLnNjYWxlVXBkYXRlZCYmKHRoaXMuc2NhbGVVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldFhTY2FsZVR5cGUodGhpcy54U2NhbGVUeXBlKSx0aGlzLmxpbmVDaGFydC5zZXRZU2NhbGVUeXBlKHRoaXMueVNjYWxlVHlwZSkpLHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQmJih0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldE1ldGFkYXRhKHRoaXMuc2VyaWVzTWV0YWRhdGFNYXApKSx0aGlzLmlzRGF0YVVwZGF0ZWQmJih0aGlzLmlzRGF0YVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0RGF0YSh0aGlzLnNlcmllc0RhdGEpKSx0aGlzLnVzZURhcmtNb2RlVXBkYXRlZCYmKHRoaXMudXNlRGFya01vZGVVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldFVzZURhcmtNb2RlKHRoaXMudXNlRGFya01vZGUpKSwhdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuJiZ0aGlzLmZpeGVkVmlld0JveCl0aGlzLnZpZXdCb3g9dGhpcy5maXhlZFZpZXdCb3g7ZWxzZSBpZighdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuJiZ0aGlzLmlzVmlld0JveENoYW5nZWQpe2NvbnN0IG49KGZ1bmN0aW9uIG8odCxlLG4saSxhKXtsZXQgcj1udWxsLHM9bnVsbCxsPVtdO2Zvcihjb25zdHtpZDpuLHBvaW50czpvfW9mIHQpe2NvbnN0IHQ9ZVtuXTtpZih0JiYhdC5hdXgmJnQudmlzaWJsZSlmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Y29uc3R7eDplLHk6bn09b1t0XTtpKGUpJiYocj1udWxsPT09cnx8ZTxyP2U6cixzPW51bGw9PT1zfHxlPnM/ZTpzKSxhKG4pJiZsLnB1c2gobil9fWwuc29ydChONik7bGV0IGM9bFswXSxkPWxbbC5sZW5ndGgtMV07cmV0dXJuIG4mJmwubGVuZ3RoPjImJihjPWxbTWF0aC5jZWlsKC4wNSoobC5sZW5ndGgtMSkpXSxkPWxbTWF0aC5mbG9vciguOTUqKGwubGVuZ3RoLTEpKV0pLHt4Om51bGwhPT1yJiZudWxsIT09cz9bcixzXTp2b2lkIDAseTp2b2lkIDAhPT1jJiZ2b2lkIDAhPT1kP1tjLGRdOnZvaWQgMH19KSh0aGlzLnNlcmllc0RhdGEsdGhpcy5zZXJpZXNNZXRhZGF0YU1hcCx0aGlzLmlnbm9yZVlPdXRsaWVycyx0aGlzLnhTY2FsZS5pc1NhZmVOdW1iZXIsdGhpcy55U2NhbGUuaXNTYWZlTnVtYmVyKTt0aGlzLnZpZXdCb3g9e3g6dGhpcy54U2NhbGUubmljZURvbWFpbihudWxsIT09KHQ9bi54KSYmdm9pZCAwIT09dD90OmNidC54KSx5OnRoaXMueVNjYWxlLm5pY2VEb21haW4obnVsbCE9PShlPW4ueSkmJnZvaWQgMCE9PWU/ZTpjYnQueSl9fSh0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZHx8dGhpcy5pc1ZpZXdCb3hDaGFuZ2VkKSYmKHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSExLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMSx0aGlzLmxpbmVDaGFydC5zZXRWaWV3Qm94KHRoaXMudmlld0JveCkpfW9uVmlld0JveENoYW5nZWQoe2RhdGFFeHRlbnQ6dH0pe3RoaXMuc2V0SXNWaWV3Qm94T3ZlcnJpZGRlbighMCksdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkPSEwLHRoaXMudmlld0JveD10LHRoaXMudXBkYXRlTGluZUNoYXJ0KCl9dmlld0JveFJlc2V0KCl7dGhpcy5zZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCExKSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy51cGRhdGVMaW5lQ2hhcnQoKX1zZXRJc1ZpZXdCb3hPdmVycmlkZGVuKHQpe2NvbnN0IGU9dGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuO3RoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbj10LGUhPT10JiZ0aGlzLm9uVmlld0JveE92ZXJyaWRkZW4ubmV4dCh0KX1nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCl7cmV0dXJuIHRoaXMub25WaWV3Qm94T3ZlcnJpZGRlbn1vblZpZXdCb3hDaGFuZ2VkRnJvbUF4aXModCxlKXtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXdCb3gpLHtbZV06dH0pO3RoaXMub25WaWV3Qm94Q2hhbmdlZCh7ZGF0YUV4dGVudDpufSl9fXZhciBwYnQ7ZnVuY3Rpb24gbWJ0KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIpLFBmKDEpLF95KDIsIm51bWJlciIpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGtmKCIgIixDeSgyLDEsdC5zdGVwKSwiICIpfX1mdW5jdGlvbiB1YnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJidXR0b24iLDQpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5yZW1vdmVTdGVwLmVtaXQoKX0pKSxNdSgxLCJtYXQtaWNvbiIsNSksQ3UoKX19ZnVuY3Rpb24gZmJ0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiaW5wdXQiLDYpLER1KCJjaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLnN0ZXBUeXBlZChuKX0pKSgiZm9jdXNvdXQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkubG9zdEZvY3VzKCl9KSksQ3UoKX1pZigyJnQpe2h1KCJ2YWx1ZSIsTnUoKS5zdGVwKX19ZGJ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkYnQpKGZ1KE9iKSl9LGRidC7JtWNtcD1zbyh7dHlwZTpkYnQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShZaHQsNyxLaCksVnkocWh0LDcsS2gpLFZ5KFpodCw3LEtoKSxWeShYaHQsNSxLaCkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uc2VyaWVzVmlldz10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi54QXhpcz10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi55QXhpcz10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5jaGFydEVsPXQuZmlyc3QpfX0saW5wdXRzOntjdXN0b21WaXNUZW1wbGF0ZToiY3VzdG9tVmlzVGVtcGxhdGUiLGN1c3RvbVhBeGlzVGVtcGxhdGU6ImN1c3RvbVhBeGlzVGVtcGxhdGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSIscHJlZmVycmVkUmVuZGVyZXJUeXBlOiJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLHNlcmllc0RhdGE6InNlcmllc0RhdGEiLGZpeGVkVmlld0JveDoiZml4ZWRWaWV3Qm94IixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHlTY2FsZVR5cGU6InlTY2FsZVR5cGUiLGN1c3RvbVhGb3JtYXR0ZXI6ImN1c3RvbVhGb3JtYXR0ZXIiLGN1c3RvbVlGb3JtYXR0ZXI6ImN1c3RvbVlGb3JtYXR0ZXIiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIixsaW5lT25seToibGluZU9ubHkiLGRpc2FibGVVcGRhdGU6ImRpc2FibGVVcGRhdGUiLGlnbm9yZVlPdXRsaWVyczoiaWdub3JlWU91dGxpZXJzIn0sZmVhdHVyZXM6W3FvXSxkZWNsczoxNix2YXJzOjEzLGNvbnN0czpbWyJkZXRlY3RSZXNpemUiLCIiLCJjZGtPdmVybGF5T3JpZ2luIiwiIiwzLCJuZ0NsYXNzIiwicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLCJvblJlc2l6ZSJdLFsib3ZlcmxheVRhcmdldCIsImNka092ZXJsYXlPcmlnaW4iXSxbMSwic2VyaWVzLXZpZXciXSxbInNlcmllc1ZpZXciLCIiXSxbMywidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInhHcmlkQ291bnQiLCJ5R3JpZENvdW50IiwiZG9tRGltIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImN1c3RvbS12aXMiLDQsIm5nSWYiXSxbMSwieS1heGlzIl0sWyJ5QXhpcyIsIiJdLFsiYXhpcyIsInkiLDMsImF4aXNFeHRlbnQiLCJjdXN0b21Gb3JtYXR0ZXIiLCJkb21EaW0iLCJncmlkQ291bnQiLCJzY2FsZSIsIm9uVmlld0V4dGVudENoYW5nZSIsNCwibmdJZiJdLFsxLCJ4LWF4aXMiXSxbInhBeGlzIiwiIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRvdCIsNCwibmdJZiJdLFszLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwieEdyaWRDb3VudCIsInlHcmlkQ291bnQiLCJkb21EaW0iXSxbImNoYXJ0RWwiLCIiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Il0sWzEsImN1c3RvbS12aXMiXSxbMywibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWyJheGlzIiwieSIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWzEsImRvdCJdLFsxLCJyZWN0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJkaXYiLDAsMSksRHUoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVmlld1Jlc2l6ZSgpfSkpLF91KDIsImRpdiIsMiwzKSxIbSg0LEtodCwxLDYsImxpbmUtY2hhcnQtZ3JpZC12aWV3Iiw0KSxIbSg1LCRodCwzLDIsIm5nLWNvbnRhaW5lciIsNSksSG0oNix0YnQsMSw4LCJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciLDYpLEhtKDcsbmJ0LDIsNywiZGl2Iiw3KSxDdSgpLF91KDgsImRpdiIsOCw5KSxIbSgxMCxvYnQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEwKSxDdSgpLF91KDExLCJkaXYiLDExLDEyKSxIbSgxMyxpYnQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEzKSxIbSgxNCxyYnQsMiw4LCJkaXYiLDcpLEN1KCksSG0oMTUsc2J0LDIsMCwiZGl2IiwxNCksQ3UoKSksMiZlJiYoaHUoIm5nQ2xhc3MiLGF5KDEwLGxidCxuLnVzZURhcmtNb2RlLG4ubGluZU9ubHkpKSgicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLDApLERjKDQpLGh1KCJuZ0lmIiwhbi5saW5lT25seSksRGMoMSksaHUoIm5nSWYiLG4uc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50KSxEYygxKSxodSgibmdJZiIsIW4ubGluZU9ubHkpLERjKDEpLGh1KCJuZ0lmIixuLmN1c3RvbVZpc1RlbXBsYXRlKSxEYygzKSxodSgibmdJZiIsIW4ubGluZU9ubHkpLERjKDMpLGh1KCJuZ0lmIiwhbi5saW5lT25seSksRGMoMSksaHUoIm5nSWYiLG4uY3VzdG9tWEF4aXNUZW1wbGF0ZSksRGMoMSksaHUoIm5nSWYiLCFuLmxpbmVPbmx5KSl9LGRpcmVjdGl2ZXM6W2MkLGNWLEN2LFB2LFBodCxGaHQsSXYsR2h0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb250YWluOnN0cmljdDtkaXNwbGF5OmlubGluZS1ibG9ja31bX25naG9zdC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmV9LmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDppbmhlcml0O2Rpc3BsYXk6Z3JpZDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTtncmlkLXRlbXBsYXRlLWFyZWFzOiJ5YXhpcyBzZXJpZXMiICJkb3QgeGF4aXMiO2dyaWQtdGVtcGxhdGUtY29sdW1uczo1MHB4IDFmcjtncmlkLWF1dG8tcm93czoxZnIgMzBweH0uY29udGFpbmVyLmRhcmstbW9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0uY29udGFpbmVyLmxpbmUtb25seS1tb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MCAxZnI7Z3JpZC1hdXRvLXJvd3M6MWZyIDB9LnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2VyaWVzO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0uc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVdLCAuc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgY2FudmFzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHN2Z1tfbmdjb250ZW50LSVDT01QJV0sIC5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lLWNoYXJ0LWdyaWQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIC5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXdbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVdLCAueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jdXN0b20tdmlzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCU7LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwKSAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDApIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSl9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lLWNoYXJ0LWF4aXNbX25nY29udGVudC0lQ09NUCVdLCAueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtYXhpc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnhheGlzO3Bvc2l0aW9uOnJlbGF0aXZlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp5YXhpc30uZG90W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6ZG90O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MXB4O3dpZHRoOjFweDtiYWNrZ3JvdW5kLWNvbG9yOiNhYWF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGRidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0Iix0ZW1wbGF0ZVVybDoibGluZV9jaGFydF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibGluZV9jaGFydF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSx7c2VyaWVzVmlldzpbe3R5cGU6YXIsYXJnczpbInNlcmllc1ZpZXciLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0seEF4aXM6W3t0eXBlOmFyLGFyZ3M6WyJ4QXhpcyIse3N0YXRpYzohMCxyZWFkOktofV19XSx5QXhpczpbe3R5cGU6YXIsYXJnczpbInlBeGlzIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLGNoYXJ0RWw6W3t0eXBlOmFyLGFyZ3M6WyJjaGFydEVsIix7c3RhdGljOiExLHJlYWQ6S2h9XX1dLGN1c3RvbVZpc1RlbXBsYXRlOlt7dHlwZTpSX31dLGN1c3RvbVhBeGlzVGVtcGxhdGU6W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0scHJlZmVycmVkUmVuZGVyZXJUeXBlOlt7dHlwZTpSX31dLHNlcmllc0RhdGE6W3t0eXBlOlJffV0sZml4ZWRWaWV3Qm94Olt7dHlwZTpSX31dLHNlcmllc01ldGFkYXRhTWFwOlt7dHlwZTpSX31dLHhTY2FsZVR5cGU6W3t0eXBlOlJffV0seVNjYWxlVHlwZTpbe3R5cGU6Ul99XSxjdXN0b21YRm9ybWF0dGVyOlt7dHlwZTpSX31dLGN1c3RvbVlGb3JtYXR0ZXI6W3t0eXBlOlJffV0sdG9vbHRpcFRlbXBsYXRlOlt7dHlwZTpSX31dLGxpbmVPbmx5Olt7dHlwZTpSX31dLGRpc2FibGVVcGRhdGU6W3t0eXBlOlJffV0saWdub3JlWU91dGxpZXJzOlt7dHlwZTpSX31dfSksKGZ1bmN0aW9uKHQpe3RbdC5IT1JJWk9OVEFMPTBdPSJIT1JJWk9OVEFMIix0W3QuVkVSVElDQUw9MV09IlZFUlRJQ0FMIn0pKHBidHx8KHBidD17fSkpO2NsYXNzIGdidHtjb25zdHJ1Y3Rvcigpe3RoaXMuc3RlcENoYW5nZT1uZXcgU3ksdGhpcy5yZW1vdmVTdGVwPW5ldyBTeSx0aGlzLmlzVHlwaW5nPSExfXR5cGVTdGVwUmVxdWVzdGVkKCl7dGhpcy5pc1R5cGluZz0hMH1zdGVwVHlwZWQodCl7bGV0IGU9TnVtYmVyKHQudGFyZ2V0LnZhbHVlKTtpc05hTihlKXx8KHRoaXMuc3RlcENoYW5nZS5lbWl0KGUpLHRoaXMuaXNUeXBpbmc9ITEpfWxvc3RGb2N1cygpe3RoaXMuaXNUeXBpbmc9ITF9fWdidC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z2J0KX0sZ2J0Lsm1Y21wPXNvKHt0eXBlOmdidCxzZWxlY3RvcnM6W1sibGlua2VkLXRpbWUtZm9iIl1dLGlucHV0czp7c3RlcDoic3RlcCJ9LG91dHB1dHM6e3N0ZXBDaGFuZ2U6InN0ZXBDaGFuZ2UiLHJlbW92ZVN0ZXA6InJlbW92ZVN0ZXAifSxkZWNsczo0LHZhcnM6Myxjb25zdHM6W1sxLCJmb2IiLDMsImRibGNsaWNrIl0sWzQsIm5nSWYiXSxbImFyaWEtbGFiZWwiLCJkZXNlbGVjdCBmb2IiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJ0eXBlIiwibnVtYmVyIiwzLCJ2YWx1ZSIsImNoYW5nZSIsImZvY3Vzb3V0Iiw0LCJuZ0lmIl0sWyJhcmlhLWxhYmVsIiwiZGVzZWxlY3QgZm9iIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsb3NlXzI0cHgiXSxbInR5cGUiLCJudW1iZXIiLDMsInZhbHVlIiwiY2hhbmdlIiwiZm9jdXNvdXQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksRHUoImRibGNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnR5cGVTdGVwUmVxdWVzdGVkKCl9KSksSG0oMSxtYnQsMywzLCJzcGFuIiwxKSxIbSgyLHVidCwyLDAsImJ1dHRvbiIsMiksSG0oMyxmYnQsMSwxLCJpbnB1dCIsMyksQ3UoKSksMiZlJiYoRGMoMSksaHUoIm5nSWYiLCFuLmlzVHlwaW5nKSxEYygxKSxodSgibmdJZiIsIW4uaXNUeXBpbmcpLERjKDEpLGh1KCJuZ0lmIixuLmlzVHlwaW5nKSl9LGRpcmVjdGl2ZXM6W1B2LEVxXSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5mb2JbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWZsZXg7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2JvcmRlci1yYWRpdXM6MjVweDtwYWRkaW5nOjJweCAycHggMnB4IDRweDtmb250LXNpemU6MTFweDt3aWR0aDptaW4tY29udGVudH1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MzBweDttYXJnaW4tcmlnaHQ6MnB4O2ZvbnQtc2l6ZToxMXB4O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXI6bm9uZTtjb2xvcjppbmhlcml0O2JvcmRlci1ib3R0b206MnB4IHNvbGlkICNhOWE5YTl9aW5wdXRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLCBpbnB1dFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9aW5wdXRbdHlwZT1udW1iZXJdW19uZ2NvbnRlbnQtJUNPTVAlXXstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkfXNwYW5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1raHRtbC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfXNwYW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtib3JkZXItY29sb3I6IzhlOThhM31ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIGJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV06YWN0aXZle2JvcmRlci1jb2xvcjojZWVlfWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6MnB4O3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDoxMXB4O2hlaWdodDoxMXB4O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtjb2xvcjppbmhlcml0fWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7aGVpZ2h0OjExMCV9YnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM5ZTllOWU7Y29sb3I6I2VlZX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ2J0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImxpbmtlZC10aW1lLWZvYiIsdGVtcGxhdGVVcmw6ImxpbmtlZF90aW1lX2ZvYl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibGlua2VkX3RpbWVfZm9iX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtzdGVwOlt7dHlwZTpSX31dLHN0ZXBDaGFuZ2U6W3t0eXBlOkVffV0scmVtb3ZlU3RlcDpbe3R5cGU6RV99XX0pO2NvbnN0IGhidD1bImF4aXNPdmVybGF5Il0sYmJ0PVsic3RhcnRGb2JXcmFwcGVyIl0seWJ0PVsiZW5kRm9iV3JhcHBlciJdO2Z1bmN0aW9uIF9idCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMiw2KSxfdSgyLCJsaW5rZWQtdGltZS1mb2IiLDcpLER1KCJtb3VzZWRvd24iLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj1OdSgpO3JldHVybiBuLnN0YXJ0RHJhZyhuLkZvYlR5cGUoKS5FTkQpfSkpKCJzdGVwQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPU51KCk7cmV0dXJuIG8uc3RlcFR5cGVkKG8uRm9iVHlwZSgpLkVORCxuKX0pKSgicmVtb3ZlU3RlcCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPU51KCk7cmV0dXJuIG4uZGVzZWxlY3RGb2Iobi5Gb2JUeXBlKCkuRU5EKX0pKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7bGYoInRyYW5zZm9ybSIsdC5nZXRDc3NUcmFuc2xhdGVQeCh0LmxpbmtlZFRpbWUuZW5kLnN0ZXApKSxEYygyKSxodSgibmdDbGFzcyIsdC5pc1ZlcnRpY2FsKCk/InZlcnRpY2FsLWZvYiI6Imhvcml6b250YWwtZm9iIikoInN0ZXAiLHQubGlua2VkVGltZS5lbmQuc3RlcCl9fWNvbnN0IENidD1mdW5jdGlvbih0KXtyZXR1cm57dmVydGljYWw6dH19O3ZhciBNYnQ7IShmdW5jdGlvbih0KXt0W3QuTk9ORT0wXT0iTk9ORSIsdFt0LlNUQVJUPTFdPSJTVEFSVCIsdFt0LkVORD0yXT0iRU5EIn0pKE1idHx8KE1idD17fSkpO2NsYXNzIHZidHtjb25zdHJ1Y3Rvcigpe3RoaXMub25TZWxlY3RUaW1lVG9nZ2xlPW5ldyBTeSx0aGlzLm9uU2VsZWN0VGltZUNoYW5nZWQ9bmV3IFN5LHRoaXMuY3VycmVudERyYWdnaW5nRm9iPU1idC5OT05FfUZvYlR5cGUoKXtyZXR1cm4gTWJ0fWdldENzc1RyYW5zbGF0ZVB4KHQpe3JldHVybiB0aGlzLmF4aXNEaXJlY3Rpb249PT1wYnQuVkVSVElDQUw/YHRyYW5zbGF0ZSgwcHgsICR7dGhpcy5jYXJkQWRhcHRlci5nZXRBeGlzUG9zaXRpb25Gcm9tU3RlcCh0KX1weClgOmB0cmFuc2xhdGUoJHt0aGlzLmNhcmRBZGFwdGVyLmdldEF4aXNQb3NpdGlvbkZyb21TdGVwKHQpfXB4LCAwcHgpYH1zdGFydERyYWcodCl7dGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9dH1zdG9wRHJhZygpe3RoaXMuY3VycmVudERyYWdnaW5nRm9iPU1idC5OT05FfWlzVmVydGljYWwoKXtyZXR1cm4gdGhpcy5heGlzRGlyZWN0aW9uPT09cGJ0LlZFUlRJQ0FMfW1vdXNlTW92ZSh0KXtpZih0aGlzLmN1cnJlbnREcmFnZ2luZ0ZvYj09PU1idC5OT05FKXJldHVybjtjb25zdCBlPXRoaXMubGlua2VkVGltZTtsZXQgbj1udWxsO2NvbnN0IG89dGhpcy5nZXRNb3VzZVBvc2l0aW9uRnJvbUV2ZW50KHQpLGk9dGhpcy5heGlzRGlyZWN0aW9uPT09cGJ0LlZFUlRJQ0FMP3QubW92ZW1lbnRZOnQubW92ZW1lbnRYO3RoaXMuaXNEcmFnZ2luZ0hpZ2hlcihvLGkpP249dGhpcy5jYXJkQWRhcHRlci5nZXRTdGVwSGlnaGVyVGhhbkF4aXNQb3NpdGlvbihvKTp0aGlzLmlzRHJhZ2dpbmdMb3dlcihvLGkpJiYobj10aGlzLmNhcmRBZGFwdGVyLmdldFN0ZXBMb3dlclRoYW5BeGlzUG9zaXRpb24obykpLG51bGwhPT1uJiYodGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9PT1NYnQuRU5EPyhuPD10aGlzLmxpbmtlZFRpbWUuc3RhcnQuc3RlcCYmKG49dGhpcy5saW5rZWRUaW1lLnN0YXJ0LnN0ZXApLGUuZW5kLnN0ZXA9bik6KHRoaXMubGlua2VkVGltZS5lbmQmJm4+PXRoaXMubGlua2VkVGltZS5lbmQuc3RlcCYmKG49dGhpcy5saW5rZWRUaW1lLmVuZC5zdGVwKSxlLnN0YXJ0LnN0ZXA9biksdGhpcy5vblNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQoZSkpfWlzRHJhZ2dpbmdMb3dlcih0LGUpe3JldHVybiB0PHRoaXMuZ2V0RHJhZ2dpbmdGb2JDZW50ZXIoKSYmZTwwJiZ0aGlzLmdldERyYWdnaW5nRm9iU3RlcCgpPnRoaXMuY2FyZEFkYXB0ZXIuZ2V0TG93ZXN0U3RlcCgpfWlzRHJhZ2dpbmdIaWdoZXIodCxlKXtyZXR1cm4gdD50aGlzLmdldERyYWdnaW5nRm9iQ2VudGVyKCkmJmU+MCYmdGhpcy5nZXREcmFnZ2luZ0ZvYlN0ZXAoKTx0aGlzLmNhcmRBZGFwdGVyLmdldEhpZ2hlc3RTdGVwKCl9Z2V0RHJhZ2dpbmdGb2JDZW50ZXIoKXtyZXR1cm4gdGhpcy5heGlzRGlyZWN0aW9uPT09cGJ0LlZFUlRJQ0FMPyh0aGlzLmN1cnJlbnREcmFnZ2luZ0ZvYiE9PU1idC5FTkQ/dGhpcy5zdGFydEZvYldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A6dGhpcy5lbmRGb2JXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKS10aGlzLmF4aXNPdmVybGF5Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wOih0aGlzLmN1cnJlbnREcmFnZ2luZ0ZvYiE9PU1idC5FTkQ/dGhpcy5zdGFydEZvYldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0OnRoaXMuZW5kRm9iV3JhcHBlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpLXRoaXMuYXhpc092ZXJsYXkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fWdldERyYWdnaW5nRm9iU3RlcCgpe3JldHVybiB0aGlzLmN1cnJlbnREcmFnZ2luZ0ZvYiE9PU1idC5FTkQ/dGhpcy5saW5rZWRUaW1lLnN0YXJ0LnN0ZXA6dGhpcy5saW5rZWRUaW1lLmVuZC5zdGVwfWdldE1vdXNlUG9zaXRpb25Gcm9tRXZlbnQodCl7cmV0dXJuIHRoaXMuYXhpc0RpcmVjdGlvbj09PXBidC5WRVJUSUNBTD90LmNsaWVudFktdGhpcy5heGlzT3ZlcmxheS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDp0LmNsaWVudFgtdGhpcy5heGlzT3ZlcmxheS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9c3RlcFR5cGVkKHQsZSl7bGV0IG49T2JqZWN0LmFzc2lnbih7fSx0aGlzLmxpbmtlZFRpbWUpO3Q9PT1NYnQuU1RBUlQ/bi5zdGFydD17c3RlcDplfTp0PT09TWJ0LkVORCYmKG4uZW5kPXtzdGVwOmV9KSxudWxsIT09bi5lbmQmJm4uc3RhcnQuc3RlcD5uLmVuZC5zdGVwJiYobj17c3RhcnQ6bi5lbmQsZW5kOm4uc3RhcnR9KSx0aGlzLm9uU2VsZWN0VGltZUNoYW5nZWQuZW1pdChuKX1kZXNlbGVjdEZvYih0KXt0IT09TWJ0LkVORD9udWxsPT09dGhpcy5saW5rZWRUaW1lLmVuZD90aGlzLm9uU2VsZWN0VGltZVRvZ2dsZS5lbWl0KCk6dGhpcy5vblNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQoe3N0YXJ0OnRoaXMubGlua2VkVGltZS5lbmQsZW5kOm51bGx9KTp0aGlzLm9uU2VsZWN0VGltZUNoYW5nZWQuZW1pdChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5saW5rZWRUaW1lKSx7ZW5kOm51bGx9KSl9fXZidC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dmJ0KX0sdmJ0Lsm1Y21wPXNvKHt0eXBlOnZidCxzZWxlY3RvcnM6W1sibGlua2VkLXRpbWUtZm9iLWNvbnRyb2xsZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihWeShoYnQsNSksVnkoYmJ0LDUpLFZ5KHlidCw1KSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5heGlzT3ZlcmxheT10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5zdGFydEZvYldyYXBwZXI9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uZW5kRm9iV3JhcHBlcj10LmZpcnN0KX19LGlucHV0czp7YXhpc0RpcmVjdGlvbjoiYXhpc0RpcmVjdGlvbiIsbGlua2VkVGltZToibGlua2VkVGltZSIsY2FyZEFkYXB0ZXI6ImNhcmRBZGFwdGVyIn0sb3V0cHV0czp7b25TZWxlY3RUaW1lVG9nZ2xlOiJvblNlbGVjdFRpbWVUb2dnbGUiLG9uU2VsZWN0VGltZUNoYW5nZWQ6Im9uU2VsZWN0VGltZUNoYW5nZWQifSxkZWNsczo2LHZhcnM6OCxjb25zdHM6W1sxLCJheGlzLW92ZXJsYXkiLDMsIm5nQ2xhc3MiLCJtb3VzZW1vdmUiLCJtb3VzZXVwIiwibW91c2VsZWF2ZSJdLFsiYXhpc092ZXJsYXkiLCIiXSxbMSwidGltZS1mb2Itd3JhcHBlciJdLFsic3RhcnRGb2JXcmFwcGVyIiwiIl0sWzEsInN0YXJ0Rm9iIiwzLCJuZ0NsYXNzIiwic3RlcCIsIm1vdXNlZG93biIsInN0ZXBDaGFuZ2UiLCJyZW1vdmVTdGVwIl0sWyJjbGFzcyIsInRpbWUtZm9iLXdyYXBwZXIiLDMsInRyYW5zZm9ybSIsNCwibmdJZiJdLFsiZW5kRm9iV3JhcHBlciIsIiJdLFsxLCJlbmRGb2IiLDMsIm5nQ2xhc3MiLCJzdGVwIiwibW91c2Vkb3duIiwic3RlcENoYW5nZSIsInJlbW92ZVN0ZXAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCwxKSxEdSgibW91c2Vtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5tb3VzZU1vdmUoZSl9KSkoIm1vdXNldXAiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uc3RvcERyYWcoKX0pKSgibW91c2VsZWF2ZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5zdG9wRHJhZygpfSkpLF91KDIsImRpdiIsMiwzKSxfdSg0LCJsaW5rZWQtdGltZS1mb2IiLDQpLER1KCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uc3RhcnREcmFnKG4uRm9iVHlwZSgpLlNUQVJUKX0pKSgic3RlcENoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uc3RlcFR5cGVkKG4uRm9iVHlwZSgpLlNUQVJULGUpfSkpKCJyZW1vdmVTdGVwIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmRlc2VsZWN0Rm9iKG4uRm9iVHlwZSgpLlNUQVJUKX0pKSxDdSgpLEN1KCksSG0oNSxfYnQsMyw0LCJkaXYiLDUpLEN1KCkpLDImZSYmKGh1KCJuZ0NsYXNzIixpeSg2LENidCxuLmlzVmVydGljYWwoKSkpLERjKDIpLGxmKCJ0cmFuc2Zvcm0iLG4uZ2V0Q3NzVHJhbnNsYXRlUHgobi5saW5rZWRUaW1lLnN0YXJ0LnN0ZXApKSxEYygyKSxodSgibmdDbGFzcyIsbi5pc1ZlcnRpY2FsKCk/InZlcnRpY2FsLWZvYiI6Imhvcml6b250YWwtZm9iIikoInN0ZXAiLG4ubGlua2VkVGltZS5zdGFydC5zdGVwKSxEYygxKSxodSgibmdJZiIsbi5saW5rZWRUaW1lLmVuZCkpfSxkaXJlY3RpdmVzOltDdixnYnQsUHZdLHN0eWxlczpbIi5heGlzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphbGw7cmlnaHQ6MDt0b3A6MH0uYXhpcy1vdmVybGF5LnZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OjlweH0uYXhpcy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aW1lLWZvYi13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZX0udmVydGljYWwtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uaG9yaXpvbnRhbC1mb2JbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2YnQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibGlua2VkLXRpbWUtZm9iLWNvbnRyb2xsZXIiLHRlbXBsYXRlVXJsOiJsaW5rZWRfdGltZV9mb2JfY29udHJvbGxlcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibGlua2VkX3RpbWVfZm9iX2NvbnRyb2xsZXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse2F4aXNPdmVybGF5Olt7dHlwZTphcixhcmdzOlsiYXhpc092ZXJsYXkiXX1dLHN0YXJ0Rm9iV3JhcHBlcjpbe3R5cGU6YXIsYXJnczpbInN0YXJ0Rm9iV3JhcHBlciJdfV0sZW5kRm9iV3JhcHBlcjpbe3R5cGU6YXIsYXJnczpbImVuZEZvYldyYXBwZXIiXX1dLGF4aXNEaXJlY3Rpb246W3t0eXBlOlJffV0sbGlua2VkVGltZTpbe3R5cGU6Ul99XSxjYXJkQWRhcHRlcjpbe3R5cGU6Ul99XSxvblNlbGVjdFRpbWVUb2dnbGU6W3t0eXBlOkVffV0sb25TZWxlY3RUaW1lQ2hhbmdlZDpbe3R5cGU6RV99XX0pO2NsYXNzIHhidHtjb25zdHJ1Y3Rvcigpe3RoaXMub25TZWxlY3RUaW1lQ2hhbmdlZD1uZXcgU3ksdGhpcy5heGlzRGlyZWN0aW9uPXBidC5IT1JJWk9OVEFMfWdldEhpZ2hlc3RTdGVwKCl7Y29uc3QgdD10aGlzLm1pbk1heDtyZXR1cm4gdFswXTx0WzFdP3RbMV06dFswXX1nZXRMb3dlc3RTdGVwKCl7Y29uc3QgdD10aGlzLm1pbk1heDtyZXR1cm4gdFswXTx0WzFdP3RbMF06dFsxXX1nZXRBeGlzUG9zaXRpb25Gcm9tU3RlcCh0KXtyZXR1cm4gdGhpcy5zY2FsZS5mb3J3YXJkKHRoaXMubWluTWF4LFswLHRoaXMuYXhpc1NpemVdLHQpfWdldFN0ZXBIaWdoZXJUaGFuQXhpc1Bvc2l0aW9uKHQpe3JldHVybiB0aGlzLmdldFN0ZXBBdE1vdXNlUG9zdGlvbih0KX1nZXRTdGVwTG93ZXJUaGFuQXhpc1Bvc2l0aW9uKHQpe3JldHVybiB0aGlzLmdldFN0ZXBBdE1vdXNlUG9zdGlvbih0KX1nZXRTdGVwQXRNb3VzZVBvc3Rpb24odCl7Y29uc3QgZT1NYXRoLnJvdW5kKHRoaXMuc2NhbGUucmV2ZXJzZSh0aGlzLm1pbk1heCxbMCx0aGlzLmF4aXNTaXplXSx0KSk7cmV0dXJuIGU+dGhpcy5nZXRIaWdoZXN0U3RlcCgpP3RoaXMuZ2V0SGlnaGVzdFN0ZXAoKTplPHRoaXMuZ2V0TG93ZXN0U3RlcCgpP3RoaXMuZ2V0TG93ZXN0U3RlcCgpOmV9fWZ1bmN0aW9uIE9idCh0LGUpezEmdCYmTXUoMCwibWF0LXNwaW5uZXIiLDIzKX1mdW5jdGlvbiBQYnQodCxlKXsxJnQmJihfdSgwLCJ0aCIpLFBmKDEsIlNtb290aGVkIiksQ3UoKSl9ZnVuY3Rpb24gd2J0KHQsZSl7aWYoMSZ0JiYodnUoMCksTXUoMSwidGItZXhwZXJpbWVudC1hbGlhcyIsMzApLFBmKDIsIi8iKSx4dSgpKSwyJnQpe2NvbnN0IHQ9TnUoKS4kaW1wbGljaXQ7RGMoMSksaHUoImFsaWFzIix0Lm1ldGFkYXRhLmFsaWFzKX19ZnVuY3Rpb24ga2J0KHQsZSl7aWYoMSZ0JiYoX3UoMCwidGQiKSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKS4kaW1wbGljaXQsZT1OdSgyKTtEYygxKSxrZigiICIsZS52YWx1ZUZvcm1hdHRlci5mb3JtYXRTaG9ydCh0LnBvaW50LnkpLCIgIil9fWZ1bmN0aW9uIFNidCh0LGUpe2lmKDEmdCYmKHZ1KDApLF91KDEsInRyIiwyOCksX3UoMiwidGQiLDI5KSxNdSgzLCJzcGFuIiksQ3UoKSxfdSg0LCJ0ZCIsMSksSG0oNSx3YnQsMywxLCJuZy1jb250YWluZXIiLDI2KSxQZig2KSxDdSgpLEhtKDcsa2J0LDIsMSwidGQiLDI2KSxfdSg4LCJ0ZCIpLFBmKDkpLEN1KCksX3UoMTAsInRkIiksUGYoMTEpLEN1KCksX3UoMTIsInRkIiksUGYoMTMpLF95KDE0LCJkYXRlIiksQ3UoKSxfdSgxNSwidGQiKSxQZigxNiksQ3UoKSxDdSgpLHh1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPU51KDIpO0RjKDEpLGNmKCJjbG9zZXN0Iix0Lm1ldGFkYXRhLmNsb3Nlc3QpLERjKDIpLGxmKCJiYWNrZ3JvdW5kLWNvbG9yIix0Lm1ldGFkYXRhLmNvbG9yKSxEYygyKSxodSgibmdJZiIsdC5tZXRhZGF0YS5hbGlhcyksRGMoMSksa2YoIiIsdC5tZXRhZGF0YS5kaXNwbGF5TmFtZSwiICIpLERjKDEpLGh1KCJuZ0lmIixuLnNtb290aGluZ0VuYWJsZWQpLERjKDIpLHdmKG4udmFsdWVGb3JtYXR0ZXIuZm9ybWF0U2hvcnQodC5wb2ludC52YWx1ZSkpLERjKDIpLHdmKG4uc3RlcEZvcm1hdHRlci5mb3JtYXRTaG9ydCh0LnBvaW50LnN0ZXApKSxEYygyKSx3ZihNeSgxNCwxMSx0LnBvaW50LndhbGxUaW1lLCJzaG9ydCIpKSxEYygzKSxrZigiICIsbi5yZWxhdGl2ZVhGb3JtYXR0ZXIuZm9ybWF0UmVhZGFibGUodC5wb2ludC5yZWxhdGl2ZVRpbWVJbk1zKSwiICIpfX1mdW5jdGlvbiBEYnQodCxlKXtpZigxJnQmJihfdSgwLCJ0YWJsZSIsMjQpLF91KDEsInRoZWFkIiksX3UoMiwidHIiKSxNdSgzLCJ0aCIsMjUpLF91KDQsInRoIiksUGYoNSwiUnVuIiksQ3UoKSxIbSg2LFBidCwyLDAsInRoIiwyNiksX3UoNywidGgiKSxQZig4LCJWYWx1ZSIpLEN1KCksX3UoOSwidGgiKSxQZigxMCwiU3RlcCIpLEN1KCksX3UoMTEsInRoIiksUGYoMTIsIlRpbWUiKSxDdSgpLF91KDEzLCJ0aCIpLFBmKDE0LCJSZWxhdGl2ZSIpLEN1KCksQ3UoKSxDdSgpLF91KDE1LCJ0Ym9keSIpLEhtKDE2LFNidCwxNywxNCwibmctY29udGFpbmVyIiwyNyksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9ZS5kYXRhLG49ZS5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkLG89TnUoKTtEYyg2KSxodSgibmdJZiIsby5zbW9vdGhpbmdFbmFibGVkKSxEYygxMCksaHUoIm5nRm9yT2YiLG8uZ2V0Q3Vyc29yQXdhcmVUb29sdGlwRGF0YSh0LG4pKSgibmdGb3JUcmFja0J5IixvLnRyYWNrQnlUb29sdGlwRGF0dW0pfX14YnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhidCl9LHhidC7JtWNtcD1zbyh7dHlwZTp4YnQsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkLWxpbmtlZC10aW1lLWZvYi1jb250cm9sbGVyIl1dLGlucHV0czp7bGlua2VkVGltZToibGlua2VkVGltZSIsc2NhbGU6InNjYWxlIixtaW5NYXg6Im1pbk1heCIsYXhpc1NpemU6ImF4aXNTaXplIn0sb3V0cHV0czp7b25TZWxlY3RUaW1lQ2hhbmdlZDoib25TZWxlY3RUaW1lQ2hhbmdlZCJ9LGRlY2xzOjEsdmFyczozLGNvbnN0czpbWzMsImF4aXNEaXJlY3Rpb24iLCJsaW5rZWRUaW1lIiwiY2FyZEFkYXB0ZXIiLCJvblNlbGVjdFRpbWVDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJsaW5rZWQtdGltZS1mb2ItY29udHJvbGxlciIsMCksRHUoIm9uU2VsZWN0VGltZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU2VsZWN0VGltZUNoYW5nZWQuZW1pdChlKX0pKSxDdSgpKSwyJmUmJmh1KCJheGlzRGlyZWN0aW9uIixuLmF4aXNEaXJlY3Rpb24pKCJsaW5rZWRUaW1lIixuLmxpbmtlZFRpbWUpKCJjYXJkQWRhcHRlciIsbil9LGRpcmVjdGl2ZXM6W3ZidF0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4YnQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2NhbGFyLWNhcmQtbGlua2VkLXRpbWUtZm9iLWNvbnRyb2xsZXIiLHRlbXBsYXRlOidcbiAgICA8bGlua2VkLXRpbWUtZm9iLWNvbnRyb2xsZXJcbiAgICAgIFtheGlzRGlyZWN0aW9uXT0iYXhpc0RpcmVjdGlvbiJcbiAgICAgIFtsaW5rZWRUaW1lXT0ibGlua2VkVGltZSJcbiAgICAgIFtjYXJkQWRhcHRlcl09InRoaXMiXG4gICAgICAob25TZWxlY3RUaW1lQ2hhbmdlZCk9Im9uU2VsZWN0VGltZUNoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgID48L2xpbmtlZC10aW1lLWZvYi1jb250cm9sbGVyPlxuICAnfV19XSxudWxsLHtsaW5rZWRUaW1lOlt7dHlwZTpSX31dLHNjYWxlOlt7dHlwZTpSX31dLG1pbk1heDpbe3R5cGU6Ul99XSxheGlzU2l6ZTpbe3R5cGU6Ul99XSxvblNlbGVjdFRpbWVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y29uc3QgUmJ0PWZ1bmN0aW9uKHQpe3JldHVyblswLHRdfSxFYnQ9ZnVuY3Rpb24oKXtyZXR1cm57Im91dC1vZi1zZWxlY3RlZC10aW1lIjohMCxlbmQ6ITAscmFuZ2U6ITB9fTtmdW5jdGlvbiBBYnQodCxlKXtpZigxJnQmJk11KDAsImRpdiIsMzEpLDImdCl7Y29uc3QgdD1OdSgyKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT1OdSgpO2xmKCJsZWZ0IixvLmZvcndhcmQoZS54LGl5KDMsUmJ0LG4ud2lkdGgpLGkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApKyJweCIpLGh1KCJuZ0NsYXNzIixveSg1LEVidCkpfX1jb25zdCBUYnQ9ZnVuY3Rpb24odCl7cmV0dXJuW3QsMF19LE5idD1mdW5jdGlvbih0KXtyZXR1cm57Im91dC1vZi1zZWxlY3RlZC10aW1lIjohMCxzdGFydDohMCxyYW5nZTp0fX07ZnVuY3Rpb24gemJ0KHQsZSl7aWYoMSZ0JiYodnUoMCksTXUoMSwiZGl2IiwzMSksSG0oMixBYnQsMSw2LCJkaXYiLDMyKSx4dSgpKSwyJnQpe2NvbnN0IHQ9TnUoKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT1OdSgpO0RjKDEpLGxmKCJyaWdodCIsby5mb3J3YXJkKGUueCxpeSg0LFRidCxuLndpZHRoKSxpLnNlbGVjdGVkVGltZS5zdGFydFN0ZXApKyJweCIpLGh1KCJuZ0NsYXNzIixpeSg2LE5idCwhIWkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApKSxEYygxKSxodSgibmdJZiIsaS5zZWxlY3RlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIElidCh0LGUpe2lmKDEmdCYmSG0oMCx6YnQsMyw4LCJuZy1jb250YWluZXIiLDI2KSwyJnQpe2h1KCJuZ0lmIixOdSgpLnNlbGVjdGVkVGltZSl9fWZ1bmN0aW9uIEhidCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO3Z1KDApLF91KDEsInNjYWxhci1jYXJkLWxpbmtlZC10aW1lLWZvYi1jb250cm9sbGVyIiwzMyksRHUoIm9uU2VsZWN0VGltZUNoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vblNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQobil9KSksQ3UoKSx4dSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpLGU9dC54U2NhbGUsbj10LnZpZXdFeHRlbnQsbz10LmRvbURpbWVuc2lvbixpPU51KCk7RGMoMSksaHUoImxpbmtlZFRpbWUiLGkuZ2V0TGlua2VkVGltZSgpKSgic2NhbGUiLGUpKCJtaW5NYXgiLG4ueCkoImF4aXNTaXplIixvLndpZHRoKX19ZnVuY3Rpb24gRmJ0KHQsZSl7aWYoMSZ0JiZIbSgwLEhidCwyLDQsIm5nLWNvbnRhaW5lciIsMjYpLDImdCl7aHUoIm5nSWYiLE51KCkuc2VsZWN0ZWRUaW1lKX19Y2xhc3MgTGJ0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5yZWY9dCx0aGlzLmRpYWxvZz1lLHRoaXMuRGF0YUxvYWRTdGF0ZT1HRSx0aGlzLlJlbmRlcmVyVHlwZT1NNix0aGlzLlNjYWxlVHlwZT12Nix0aGlzLm9uRnVsbFNpemVUb2dnbGU9bmV3IFN5LHRoaXMub25QaW5DbGlja2VkPW5ldyBTeSx0aGlzLm9uU2VsZWN0VGltZUNoYW5nZWQ9bmV3IFN5LHRoaXMueVNjYWxlVHlwZT12Ni5MSU5FQVIsdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPSExLHRoaXMucmVsYXRpdmVYRm9ybWF0dGVyPUVydCx0aGlzLnZhbHVlRm9ybWF0dGVyPWhydCx0aGlzLnN0ZXBGb3JtYXR0ZXI9X3J0fXRvZ2dsZVlTY2FsZVR5cGUoKXt0aGlzLnlTY2FsZVR5cGU9dGhpcy55U2NhbGVUeXBlPT09djYuTElORUFSP3Y2LkxPRzEwOnY2LkxJTkVBUn1yZXNldERvbWFpbigpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLmxpbmVDaGFydC52aWV3Qm94UmVzZXQoKX10cmFja0J5VG9vbHRpcERhdHVtKHQsZSl7cmV0dXJuIGUuaWR9Z2V0Q3VzdG9tWEZvcm1hdHRlcigpe3N3aXRjaCh0aGlzLnhBeGlzVHlwZSl7Y2FzZSB0Ti5SRUxBVElWRTpyZXR1cm4gRXJ0O2Nhc2UgdE4uU1RFUDpyZXR1cm4geHJ0O2Nhc2UgdE4uV0FMTF9USU1FOmRlZmF1bHQ6cmV0dXJufX1nZXRDdXJzb3JBd2FyZVRvb2x0aXBEYXRhKHQsZSl7Y29uc3Qgbj10Lm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRhZGF0YTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRhZGF0YSkse2Nsb3Nlc3Q6ITEsZGlzdFNxVG9DdXJzb3I6TWF0aC5oeXBvdCh0LnBvaW50LngtZS54LHQucG9pbnQueS1lLnkpfSl9KSkpO2xldCBvPTEvMCxpPTA7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspbz5uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yJiYobz1uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yLGk9dCk7c3dpdGNoKG4ubGVuZ3RoJiYobltpXS5tZXRhZGF0YS5jbG9zZXN0PSEwKSx0aGlzLnRvb2x0aXBTb3J0KXtjYXNlICRULkFTQ0VORElORzpyZXR1cm4gbi5zb3J0KCgodCxlKT0+dC5wb2ludC55LWUucG9pbnQueSkpO2Nhc2UgJFQuREVTQ0VORElORzpyZXR1cm4gbi5zb3J0KCgodCxlKT0+ZS5wb2ludC55LXQucG9pbnQueSkpO2Nhc2UgJFQuTkVBUkVTVDpyZXR1cm4gbi5zb3J0KCgodCxlKT0+dC5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvci1lLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yKSk7Y2FzZSAkVC5ERUZBVUxUOmNhc2UgJFQuQUxQSEFCRVRJQ0FMOnJldHVybiBuLnNvcnQoKCh0LGUpPT50Lm1ldGFkYXRhLmRpc3BsYXlOYW1lPGUubWV0YWRhdGEuZGlzcGxheU5hbWU/LTE6dC5tZXRhZGF0YS5kaXNwbGF5TmFtZT5lLm1ldGFkYXRhLmRpc3BsYXlOYW1lPzE6MCkpfX1vcGVuRGF0YURvd25sb2FkRGlhbG9nKCl7dGhpcy5kaWFsb2cub3Blbih0aGlzLkRhdGFEb3dubG9hZENvbXBvbmVudCx7ZGF0YTp7Y2FyZElkOnRoaXMuY2FyZElkfX0pfWdldExpbmtlZFRpbWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuc2VsZWN0ZWRUaW1lP251bGw6e3N0YXJ0OntzdGVwOnRoaXMuc2VsZWN0ZWRUaW1lLnN0YXJ0U3RlcH0sZW5kOnRoaXMuc2VsZWN0ZWRUaW1lLmVuZFN0ZXA/e3N0ZXA6dGhpcy5zZWxlY3RlZFRpbWUuZW5kU3RlcH06bnVsbH19fUxidC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TGJ0KShmdShLaCksZnUoYXEpKX0sTGJ0Lsm1Y21wPXNvKHt0eXBlOkxidCxzZWxlY3RvcnM6W1sic2NhbGFyLWNhcmQtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShkYnQsNSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5saW5lQ2hhcnQ9dC5maXJzdCl9fSxpbnB1dHM6e2NhcmRJZDoiY2FyZElkIixjaGFydE1ldGFkYXRhTWFwOiJjaGFydE1ldGFkYXRhTWFwIixEYXRhRG93bmxvYWRDb21wb25lbnQ6IkRhdGFEb3dubG9hZENvbXBvbmVudCIsZGF0YVNlcmllczoiZGF0YVNlcmllcyIsaWdub3JlT3V0bGllcnM6Imlnbm9yZU91dGxpZXJzIixpc0NhcmRWaXNpYmxlOiJpc0NhcmRWaXNpYmxlIixpc1Bpbm5lZDoiaXNQaW5uZWQiLGxvYWRTdGF0ZToibG9hZFN0YXRlIixzaG93RnVsbFNpemU6InNob3dGdWxsU2l6ZSIsc21vb3RoaW5nRW5hYmxlZDoic21vb3RoaW5nRW5hYmxlZCIsdGFnOiJ0YWciLHRpdGxlOiJ0aXRsZSIsdG9vbHRpcFNvcnQ6InRvb2x0aXBTb3J0Iix4QXhpc1R5cGU6InhBeGlzVHlwZSIseFNjYWxlVHlwZToieFNjYWxlVHlwZSIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIixmb3JjZVN2ZzoiZm9yY2VTdmciLHNlbGVjdGVkVGltZToic2VsZWN0ZWRUaW1lIn0sb3V0cHV0czp7b25GdWxsU2l6ZVRvZ2dsZToib25GdWxsU2l6ZVRvZ2dsZSIsb25QaW5DbGlja2VkOiJvblBpbkNsaWNrZWQiLG9uU2VsZWN0VGltZUNoYW5nZWQ6Im9uU2VsZWN0VGltZUNoYW5nZWQifSxkZWNsczozNCx2YXJzOjI2LGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGUsbixvLGk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkZpdCBsaW5lIGNoYXJ0IGRvbWFpbnMgdG8gZGF0YSIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgcmVzZXRzIGxpbmUgY2hhcnQgZG9tYWluIHRvIHRoZSBkYXRh4pCfZTY4YTU1Mjk0MWFiNDI3YTk5ZTc0MzdlMDg0NDNmMzBhYzcxY2NkNuKQnzM4MzA2NDY1MjEwNTgyNjg1NTg6Rml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhYDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7ZT1nb29nLmdldE1zZygiUGluIGNhcmQiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7bj1nb29nLmdldE1zZygiVG9nZ2xlIGZ1bGwgc2l6ZSBtb2RlIil9ZWxzZSBuPSRsb2NhbGl6ZWA6QSBidXR0b24gb24gbGluZSBjaGFydCB0aGF0IHRvZ2dsZXMgZnVsbCBzaXplIG1vZGUu4pCfZmM4Zjc2N2QwYjlmOTMwMTg3YTFiYWUzNDQ3N2FkMjg3MzZlY2UzM+KQnzkxNTcyMTU2MzYzODkyNjU5NzpUb2dnbGUgZnVsbCBzaXplIG1vZGVgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtvPWdvb2cuZ2V0TXNnKCJNb3JlIGxpbmUgY2hhcnQgb3B0aW9ucyIpfWVsc2Ugbz0kbG9jYWxpemVgOkFuIG92ZXJmbG93IG1lbnUgYnV0dG9uIHRoYXQgb3BlbnMgbW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnPikJ9iMjYwZmFiOTQ2YTMwNzdjZTIwZmQyOGUzMzY5NzlmNTg2NzIwZThk4pCfODc4MDUzNzQwMjEwMzM2NDM1Ok1vcmUgbGluZSBjaGFydCBvcHRpb25zYDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7aT1nb29nLmdldE1zZygiVG9nZ2xlIFktYXhpcyBsb2cgc2NhbGUgb24gbGluZSBjaGFydCIpfWVsc2UgaT0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgdG9nZ2xlcyBsb2cgc2NhbGUgb24geS1heGlzIG9uIGEgbGluZSBjaGFydOKQn2ZlOTFmOTZhYjliM2JhY2E1YTQ4OTEzZjJiMGZhZTg0NDgzZDkzZTPikJ8zMzc0NjQ1NjIwNjM4ODgzOTI2OlRvZ2dsZSBZLWF4aXMgbG9nIHNjYWxlIG9uIGxpbmUgY2hhcnRgO3JldHVybltbMSwiaGVhZGluZyJdLFsxLCJuYW1lIl0sWzEsInRhZyIsMywidGl0bGUiLCJ2YWx1ZSJdLFszLCJpc0NsaXBwZWQiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiZGlzYWJsZWQiLCJ0aXRsZSIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3Nfb3ZlcnNjYW5fMjRweCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwxLCJwaW4tYnV0dG9uIiwzLCJjbGljayJdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIsMywiY2xpY2siXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG8sInRpdGxlIiwiTW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnMiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIl0sWyJzdmdJY29uIiwibW9yZV92ZXJ0XzI0cHgiXSxbIm1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwiYXJpYS1sYWJlbCIsaSwzLCJjbGljayJdLFsic3ZnSWNvbiIsImxpbmVfd2VpZ2h0XzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJhcmlhLWxhYmVsIiwiT3BlbiBkaWFsb2cgdG8gZG93bmxvYWQgZGF0YSIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJnZXRfYXBwXzI0cHgiXSxbMSwiY2hhcnQtY29udGFpbmVyIl0sWyJkaWFtZXRlciIsIjE4Iiw0LCJuZ0lmIl0sWzMsImRpc2FibGVVcGRhdGUiLCJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLCJzZXJpZXNEYXRhIiwic2VyaWVzTWV0YWRhdGFNYXAiLCJ4U2NhbGVUeXBlIiwieVNjYWxlVHlwZSIsImN1c3RvbVhGb3JtYXR0ZXIiLCJpZ25vcmVZT3V0bGllcnMiLCJ0b29sdGlwVGVtcGxhdGUiLCJ1c2VEYXJrTW9kZSIsImN1c3RvbVZpc1RlbXBsYXRlIiwiY3VzdG9tWEF4aXNUZW1wbGF0ZSIsIm9uVmlld0JveE92ZXJyaWRkZW4iXSxbInRvb2x0aXAiLCIiXSxbImxpbmVDaGFydEN1c3RvbVZpcyIsIiJdLFsibGluZUNoYXJ0Q3VzdG9tWEF4aXNWaXMiLCIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMSwidG9vbHRpcCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzEsInRvb2x0aXAtcm93Il0sWzEsInRvb2x0aXAtcm93LWNpcmNsZSJdLFszLCJhbGlhcyJdLFszLCJuZ0NsYXNzIl0sWzMsIm5nQ2xhc3MiLCJsZWZ0Iiw0LCJuZ0lmIl0sWzMsImxpbmtlZFRpbWUiLCJzY2FsZSIsIm1pbk1heCIsImF4aXNTaXplIiwib25TZWxlY3RUaW1lQ2hhbmdlZCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwic3BhbiIsMSksTXUoMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLE11KDMsInZpcy1zZWxlY3RlZC10aW1lLXdhcm5pbmciLDMpLEN1KCksX3UoNCwic3BhbiIsNCksX3UoNSwiYnV0dG9uIiw1KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ucmVzZXREb21haW4oKX0pKSxfeSg2LCJhc3luYyIpLF95KDcsImFzeW5jIiksTXUoOCwibWF0LWljb24iLDYpLEN1KCksX3UoOSwiYnV0dG9uIiw3KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QaW5DbGlja2VkLmVtaXQoIW4uaXNQaW5uZWQpfSkpLE11KDEwLCJtYXQtaWNvbiIsOCksQ3UoKSxfdSgxMSwiYnV0dG9uIiw5KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25GdWxsU2l6ZVRvZ2dsZS5lbWl0KCl9KSksTXUoMTIsIm1hdC1pY29uIiw4KSxDdSgpLF91KDEzLCJidXR0b24iLDEwKSxNdSgxNCwibWF0LWljb24iLDExKSxDdSgpLF91KDE1LCJtYXQtbWVudSIsbnVsbCwxMiksX3UoMTcsImJ1dHRvbiIsMTMpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVZU2NhbGVUeXBlKCl9KSksTXUoMTgsIm1hdC1pY29uIiwxNCksX3UoMTksInNwYW4iKSxQZigyMCwiVG9nZ2xlIFktYXhpcyBsb2cgc2NhbGUiKSxDdSgpLEN1KCksX3UoMjEsImJ1dHRvbiIsMTUpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vcGVuRGF0YURvd25sb2FkRGlhbG9nKCl9KSksTXUoMjIsIm1hdC1pY29uIiwxNiksX3UoMjMsInNwYW4iKSxQZigyNCwiRG93bmxvYWQgZGF0YSIpLEN1KCksQ3UoKSxDdSgpLEN1KCksQ3UoKSxfdSgyNSwiZGl2IiwxNyksSG0oMjYsT2J0LDEsMCwibWF0LXNwaW5uZXIiLDE4KSxfdSgyNywibGluZS1jaGFydCIsMTkpLER1KCJvblZpZXdCb3hPdmVycmlkZGVuIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5pc1ZpZXdCb3hPdmVycmlkZGVuPWV9KSksQ3UoKSxIbSgyOCxEYnQsMTcsMywibmctdGVtcGxhdGUiLG51bGwsMjAscXkpLEN1KCksSG0oMzAsSWJ0LDEsMSwibmctdGVtcGxhdGUiLG51bGwsMjEscXkpLEhtKDMyLEZidCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDIyLHF5KSksMiZlKXtjb25zdCB0PUZtKDE2KSxlPUZtKDI5KSxvPUZtKDMxKSxpPUZtKDMzKTtEYygyKSxGdSgidGl0bGUiLG4udGFnKSxGdSgidmFsdWUiLG4udGl0bGUpLERjKDEpLGh1KCJpc0NsaXBwZWQiLG4uc2VsZWN0ZWRUaW1lJiZuLnNlbGVjdGVkVGltZS5jbGlwcGVkKSxEYygyKSxodSgiZGlzYWJsZWQiLCFuLmxpbmVDaGFydHx8IUN5KDYsMjIsbi5saW5lQ2hhcnQuZ2V0SXNWaWV3Qm94T3ZlcnJpZGRlbigpKSkoInRpdGxlIixuLmxpbmVDaGFydCYmQ3koNywyNCxuLmxpbmVDaGFydC5nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCkpPyJMaW5lIGNoYXJ0IGlzIGFscmVhZHkgZml0dGVkIHRvIGRhdGEuIFdoZW4gZGF0YSB1cGRhdGVzLCB0aGUgbGluZSBjaGFydCB3aWxsIGF1dG8gZml0IHRvIGl0cyBkb21haW4uIjoiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIiksRGMoNCkseW0oInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxEYygxKSxodSgic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxEYygyKSxodSgic3ZnSWNvbiIsbi5zaG93RnVsbFNpemU/ImZ1bGxzY3JlZW5fZXhpdF8yNHB4IjoiZnVsbHNjcmVlbl8yNHB4IiksRGMoMSksaHUoIm1hdE1lbnVUcmlnZ2VyRm9yIix0KSxEYygxMyksaHUoIm5nSWYiLG4ubG9hZFN0YXRlPT09bi5EYXRhTG9hZFN0YXRlLkxPQURJTkcpLERjKDEpLGh1KCJkaXNhYmxlVXBkYXRlIiwhbi5pc0NhcmRWaXNpYmxlKSgicHJlZmVycmVkUmVuZGVyZXJUeXBlIixuLmZvcmNlU3ZnP24uUmVuZGVyZXJUeXBlLlNWRzpuLlJlbmRlcmVyVHlwZS5XRUJHTCkoInNlcmllc0RhdGEiLG4uZGF0YVNlcmllcykoInNlcmllc01ldGFkYXRhTWFwIixuLmNoYXJ0TWV0YWRhdGFNYXApKCJ4U2NhbGVUeXBlIixuLnhTY2FsZVR5cGUpKCJ5U2NhbGVUeXBlIixuLnlTY2FsZVR5cGUpKCJjdXN0b21YRm9ybWF0dGVyIixuLmdldEN1c3RvbVhGb3JtYXR0ZXIoKSkoImlnbm9yZVlPdXRsaWVycyIsbi5pZ25vcmVPdXRsaWVycykoInRvb2x0aXBUZW1wbGF0ZSIsZSkoInVzZURhcmtNb2RlIixuLnVzZURhcmtNb2RlKSgiY3VzdG9tVmlzVGVtcGxhdGUiLG8pKCJjdXN0b21YQXhpc1RlbXBsYXRlIixpKX19LGRpcmVjdGl2ZXM6WyQ0LG42LFdMLEVxLG9aLFFxLHFxLFB2LGRidCxnMix4dixYMixDdix4YnRdLHBpcGVzOltWdixZdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNHB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dhcDo1cHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gYXV0b30uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV0gICB2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MS4yZW07bGluZS1oZWlnaHQ6MH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjF9LmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTFweDt0b3A6MTFweH0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwMCV9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1zcGFjaW5nOjRweDtmb250LXNpemU6MTNweH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvd1tfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjQpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLmNsb3Nlc3RbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5vdXQtb2Ytc2VsZWN0ZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjAgZGFzaGVkIGN1cnJlbnRDb2xvcjtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZX0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC13aWR0aDoycHg7bWFyZ2luLWxlZnQ6LTFweH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnQucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdC13aWR0aDoycHg7bWFyZ2luLXJpZ2h0Oi0xcHg7cmlnaHQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQpfS5saW5rZWQtdGltZS1mb2ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKExidCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJzY2FsYXItY2FyZC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJzY2FsYXJfY2FyZF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsic2NhbGFyX2NhcmRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6YXF9XX0pLHtjYXJkSWQ6W3t0eXBlOlJffV0sY2hhcnRNZXRhZGF0YU1hcDpbe3R5cGU6Ul99XSxEYXRhRG93bmxvYWRDb21wb25lbnQ6W3t0eXBlOlJffV0sZGF0YVNlcmllczpbe3R5cGU6Ul99XSxpZ25vcmVPdXRsaWVyczpbe3R5cGU6Ul99XSxpc0NhcmRWaXNpYmxlOlt7dHlwZTpSX31dLGlzUGlubmVkOlt7dHlwZTpSX31dLGxvYWRTdGF0ZTpbe3R5cGU6Ul99XSxzaG93RnVsbFNpemU6W3t0eXBlOlJffV0sc21vb3RoaW5nRW5hYmxlZDpbe3R5cGU6Ul99XSx0YWc6W3t0eXBlOlJffV0sdGl0bGU6W3t0eXBlOlJffV0sdG9vbHRpcFNvcnQ6W3t0eXBlOlJffV0seEF4aXNUeXBlOlt7dHlwZTpSX31dLHhTY2FsZVR5cGU6W3t0eXBlOlJffV0sdXNlRGFya01vZGU6W3t0eXBlOlJffV0sZm9yY2VTdmc6W3t0eXBlOlJffV0sc2VsZWN0ZWRUaW1lOlt7dHlwZTpSX31dLG9uRnVsbFNpemVUb2dnbGU6W3t0eXBlOkVffV0sb25QaW5DbGlja2VkOlt7dHlwZTpFX31dLG9uU2VsZWN0VGltZUNoYW5nZWQ6W3t0eXBlOkVffV0sbGluZUNoYXJ0Olt7dHlwZTphcixhcmdzOltkYnRdfV19KTtjbGFzcyBCYnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlZj10LHRoaXMuY2RrU2Nyb2xsYWJsZT1lLHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlPW5ldyBTeSx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBCLHRoaXMub25FdmVudCQ9bmV3IEJ9bmdPbkluaXQoKXtjb25zdCB0PXtyb290OnRoaXMuY2RrU2Nyb2xsYWJsZT90aGlzLmNka1Njcm9sbGFibGUuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ6bnVsbH07dGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiYmKHQucm9vdE1hcmdpbj10aGlzLmludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luKTtjb25zdCBlPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigodD0+e3RoaXMub25FdmVudCQubmV4dCh0KX0pLHQpO2Uub2JzZXJ2ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KSx0aGlzLm5nVW5zdWJzY3JpYmUkLnN1YnNjcmliZSgoKCk9PntlLnVub2JzZXJ2ZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KX0pKSx0aGlzLm9uRXZlbnQkLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dC5zbGljZSgtMSlbMF07dGhpcy5vblZpc2liaWxpdHlDaGFuZ2UuZW1pdCh7dmlzaWJsZTplLmlzSW50ZXJzZWN0aW5nfSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCl9d2FpdEZvckV2ZW50Rm9yVGVzdE9ubHkoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9PnRoaXMub25FdmVudCQucGlwZSh2ZSgxKSkuc3Vic2NyaWJlKCgoKT0+e3QoKX0pKSkpfX1mdW5jdGlvbiBWYnQodCxlKXtyZXR1cm4gdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoKHQsbik9Pntjb25zdCBvPWVbbl0saT10LnBvaW50cyxhPW8ucG9pbnRzO3JldHVybiB0LnJ1bklkPT09by5ydW5JZCYmaS5sZW5ndGg9PT1hLmxlbmd0aCYmaS5ldmVyeSgoKHQsZSk9Pntjb25zdCBuPWFbZV07cmV0dXJuIHQueD09PW4ueCYmdC55PT09bi55fSkpfSkpfUJidC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QmJ0KShmdShLaCksZnUoc0IsOCkpfSxCYnQuybVkaXI9aG8oe3R5cGU6QmJ0LHNlbGVjdG9yczpbWyIiLCJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIl1dLGlucHV0czp7aW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW46ImludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luIn0sb3V0cHV0czp7b25WaXNpYmlsaXR5Q2hhbmdlOiJvblZpc2liaWxpdHlDaGFuZ2UifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQmJ0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6IltvYnNlcnZlSW50ZXJzZWN0aW9uXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6c0IsZGVjb3JhdG9yczpbe3R5cGU6QnJ9XX1dfSkse2ludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luOlt7dHlwZTpSX31dLG9uVmlzaWJpbGl0eUNoYW5nZTpbe3R5cGU6RV99XX0pO2NsYXNzIFVidHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5EYXRhRG93bmxvYWRDb21wb25lbnQ9VDYsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBTeSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBTeSx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgU3ksdGhpcy5pc1Zpc2libGU9ITEsdGhpcy51c2VEYXJrTW9kZSQ9dGhpcy5zdG9yZS5zZWxlY3QoVkQpLHRoaXMuaWdub3JlT3V0bGllcnMkPXRoaXMuc3RvcmUuc2VsZWN0KHd6KSx0aGlzLnRvb2x0aXBTb3J0JD10aGlzLnN0b3JlLnNlbGVjdChQeiksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KGt6KSx0aGlzLmZvcmNlU3ZnJD10aGlzLnN0b3JlLnNlbGVjdChRRCksdGhpcy54U2NhbGVUeXBlJD10aGlzLnN0b3JlLnNlbGVjdChreikucGlwZShWdCgodD0+e3N3aXRjaCh0KXtjYXNlIHROLlNURVA6Y2FzZSB0Ti5SRUxBVElWRTpyZXR1cm4gdjYuTElORUFSO2Nhc2UgdE4uV0FMTF9USU1FOnJldHVybiB2Ni5USU1FO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHhBeGlzVHlwZSBmb3IgbGluZSBjaGFydC4gJHt0fWApfX0pKSksdGhpcy5zY2FsYXJTbW9vdGhpbmckPXRoaXMuc3RvcmUuc2VsZWN0KER6KSx0aGlzLnNtb290aGluZ0VuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KER6KS5waXBlKFZ0KCh0PT50PjApKSksdGhpcy5zaG93RnVsbFNpemU9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5pc1Zpc2libGU9dH1pc1NjYWxhckNhcmRNZXRhZGF0YSh0KXtjb25zdHtwbHVnaW46ZX09dDtyZXR1cm4gZT09PVFULlNDQUxBUlN9b25GdWxsU2l6ZVRvZ2dsZSgpe3RoaXMuc2hvd0Z1bGxTaXplPSF0aGlzLnNob3dGdWxsU2l6ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dGdWxsU2l6ZSksdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QoZHosdGhpcy5jYXJkSWQpLnBpcGUoZmUoKHQ9PiEhdCYmdGhpcy5pc1NjYWxhckNhcmRNZXRhZGF0YSh0KSkpLFZ0KCh0PT50KSkpO2Z1bmN0aW9uIGUodCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFsic21vb3RoZWQiLHRdKX1jb25zdCBuPXRoaXMuc3RvcmUuc2VsZWN0KGx6LHRoaXMuY2FyZElkKS5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSksZmUoKHQ9PkJvb2xlYW4odCkpKSxWdCgodD0+dCkpLEZlKDEpKS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KGt6KSksVnQoKChbdCxlXSk9Pk9iamVjdC5rZXlzKHQpLm1hcCgobj0+KHtydW5JZDpuLHBvaW50czp0aGlzLnN0ZXBTZXJpZXNUb0xpbmVTZXJpZXModFtuXSxlKX0pKSkpKSx3ZShWYnQpKS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KFJ6KSksVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxWdCgoKFt0LGVdKT0+ZT8oZnVuY3Rpb24gbih0KXt2YXIgZTtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0IHQ9W107bGV0IGk9TnVtYmVyLmlzRmluaXRlKG51bGw9PT0oZT1vLnBvaW50c1swXSl8fHZvaWQgMD09PWU/dm9pZCAwOmUueCk/by5wb2ludHNbMF0ueDotMS8wLGE9W107Zm9yKGNvbnN0IGUgb2Ygby5wb2ludHMpTnVtYmVyLmlzRmluaXRlKGUueCk/KGUueDxpJiYodC5wdXNoKHtzZXJpZXNJZDpKU09OLnN0cmluZ2lmeShbby5ydW5JZCx0Lmxlbmd0aF0pLHJ1bklkOm8ucnVuSWQscG9pbnRzOmF9KSxhPVtdKSxhLnB1c2goZSksaT1lLngpOmEucHVzaChlKTt0LnB1c2goe3Nlcmllc0lkOkpTT04uc3RyaW5naWZ5KFtvLnJ1bklkLHQubGVuZ3RoXSkscnVuSWQ6by5ydW5JZCxwb2ludHM6YX0pO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKW4ucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdFtlXSkse3BhcnRpdGlvbkluZGV4OmUscGFydGl0aW9uU2l6ZTp0Lmxlbmd0aH0pKX1yZXR1cm4gbn0pKHQpOnQubWFwKCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Nlcmllc0lkOnQucnVuSWQscGFydGl0aW9uSW5kZXg6MCxwYXJ0aXRpb25TaXplOjF9KSkpKSksVnQoKHQ9PnQubWFwKCh0PT57dmFyIGU7Y29uc3Qgbj1udWxsPT09KGU9dC5wb2ludHNbMF0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLndhbGxUaW1lO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BvaW50czp0LnBvaW50cy5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cmVsYXRpdmVUaW1lSW5Nczp0LndhbGxUaW1lLW59KSkpfSl9KSkpKSxfZSh0aGlzLnN0b3JlLnNlbGVjdChreikpLFZ0KCgoW3QsZV0pPT50Lm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2ludHM6dC5wb2ludHMubWFwKCh0PT57bGV0IG47c3dpdGNoKGUpe2Nhc2UgdE4uUkVMQVRJVkU6bj10LnJlbGF0aXZlVGltZUluTXM7YnJlYWs7Y2FzZSB0Ti5XQUxMX1RJTUU6bj10LndhbGxUaW1lO2JyZWFrO2Nhc2UgdE4uU1RFUDpkZWZhdWx0Om49dC5zdGVwfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6bn0pfSkpfSkpKSkpLEZlKDEpKTt0aGlzLmRhdGFTZXJpZXMkPW4ucGlwZShfZSh0aGlzLnN0b3JlLnNlbGVjdChEeikpLFZlKCgoW3Qsbl0pPT57Y29uc3Qgbz10Lm1hcCgoKHtzZXJpZXNJZDp0LHBvaW50czplfSk9Pih7aWQ6dCxwb2ludHM6ZX0pKSk7cmV0dXJuIG48PTA/enQobyk6UHQoKGZ1bmN0aW9uIGkodCxlKXt2YXIgbjtyZXR1cm4gSlQodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtOdW1iZXIuaXNGaW5pdGUoZSl8fChlPTApLGU9TWF0aC5tYXgoMCxNYXRoLm1pbihlLDEpKTtjb25zdCBvPVtdO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9bnVsbD09PShuPWkucG9pbnRzWzBdKXx8dm9pZCAwPT09bj92b2lkIDA6bi55O2lmKGkucG9pbnRzLmV2ZXJ5KChlPT5lLnk9PXQpKSl7by5wdXNoKGkpO2NvbnRpbnVlfWxldCBhPWkucG9pbnRzLmxlbmd0aD4wPzA6TmFOLHI9MDtjb25zdCBzPWkucG9pbnRzLm1hcCgodD0+e2NvbnN0IG49dC55O2lmKE51bWJlci5pc0Zpbml0ZShuKSl7YT1hKmUrKDEtZSkqbixyKys7Y29uc3Qgbz0xPT09ZT8xOjEtTWF0aC5wb3coZSxyKTtyZXR1cm57eDp0LngseTphL299fXJldHVybnt4OnQueCx5Om59fSkpO28ucHVzaCh7aWQ6aS5pZCxwb2ludHM6c30pfXJldHVybiBvfSkpfSkobyxuKSkucGlwZShWdCgodD0+e2NvbnN0IG49by5tYXAoKChuLG8pPT4oe2lkOmUobi5pZCkscG9pbnRzOnRbb10ucG9pbnRzLm1hcCgoKHt5OnR9LGUpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5wb2ludHNbZV0pLHt5OnR9KSkpfSkpKTtyZXR1cm5bLi4ubywuLi5uXX0pKSl9KSksQmUoW10pKSx0aGlzLnNlbGVjdGVkVGltZSQ9S3QoW24sdGhpcy5zdG9yZS5zZWxlY3QoQnopLHRoaXMuc3RvcmUuc2VsZWN0KGt6KV0pLnBpcGUoVnQoKChbdCxlLG5dKT0+e2lmKG4hPT10Ti5TVEVQfHwhZSlyZXR1cm4gbnVsbDtsZXQgbz0xLzAsaT0tMS8wO2Zvcihjb25zdHtwb2ludHM6ZX1vZiB0KWZvcihjb25zdCB0IG9mIGUpbz1vPnQueD90Lng6byxpPWk8dC54P3QueDppO3JldHVybiBLNChlLG8saSl9KSkpLHRoaXMuY2hhcnRNZXRhZGF0YU1hcCQ9bi5waXBlKFZlKCh0PT5LdCh0Lm1hcCgodD0+dGhpcy5nZXRSdW5EaXNwbGF5TmFtZUFuZEFsaWFzKHQucnVuSWQpLnBpcGUoVnQoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSxlKSkpKSkpKSkpLF9lKHRoaXMuc3RvcmUuc2VsZWN0KERJKSx0aGlzLnN0b3JlLnNlbGVjdChSSSksdGhpcy5zdG9yZS5zZWxlY3QoRHopKSxDZSgwKSxWdCgoKFt0LG4sbyxpXSk9Pnt2YXIgYTtjb25zdCByPXt9LHM9aT4wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0e3Nlcmllc0lkOnQscnVuSWQ6aSxkaXNwbGF5TmFtZTpzLGFsaWFzOmwscGFydGl0aW9uSW5kZXg6YyxwYXJ0aXRpb25TaXplOmR9PWU7clt0XT17dHlwZTp4Ni5PUklHSU5BTCxpZDp0LGFsaWFzOmwsZGlzcGxheU5hbWU6ZD4xP2Ake3N9OiAke2N9YDpzLHZpc2libGU6Qm9vbGVhbihuJiZuLmdldChpKSksY29sb3I6bnVsbCE9PShhPW9baV0pJiZ2b2lkIDAhPT1hP2E6IiNmZmYiLGF1eDohMSxvcGFjaXR5OjF9fWlmKCFzKXJldHVybiByO2Zvcihjb25zdFt0LG5db2YgT2JqZWN0LmVudHJpZXMocikpe2NvbnN0IG89ZSh0KTtyW29dPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6byx0eXBlOng2LkRFUklWRUQsYXV4OiExLG9yaWdpbmFsU2VyaWVzSWQ6dH0pLG4uYXV4PSEwLG4ub3BhY2l0eT0uMjV9cmV0dXJuIHJ9KSksQmUoe30pKSx0aGlzLmxvYWRTdGF0ZSQ9dGhpcy5zdG9yZS5zZWxlY3Qoc3osdGhpcy5jYXJkSWQpLHRoaXMudGFnJD10LnBpcGUoVnQoKHQ9PnQudGFnKSkpLHRoaXMudGl0bGUkPXRoaXMudGFnJC5waXBlKFZ0KCh0PT5YNCh0LHRoaXMuZ3JvdXBOYW1lKSkpKSx0aGlzLmlzUGlubmVkJD10aGlzLnN0b3JlLnNlbGVjdChfeix0aGlzLmNhcmRJZCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfWdldFJ1bkRpc3BsYXlOYW1lQW5kQWxpYXModCl7cmV0dXJuIEt0KFt0aGlzLnN0b3JlLnNlbGVjdCh0SSx7cnVuSWQ6dH0pLHRoaXMuc3RvcmUuc2VsZWN0KFNSKSx0aGlzLnN0b3JlLnNlbGVjdChlSSx7cnVuSWQ6dH0pXSkucGlwZShWdCgoKFtlLG4sb10pPT57dmFyIGksYTtjb25zdCByPW51bGwhPT1lJiZudWxsIT09KGk9bltlXSkmJnZvaWQgMCE9PWk/aTpudWxsO3JldHVybntkaXNwbGF5TmFtZTpvfHxyP251bGwhPT0oYT1udWxsPT1vP3ZvaWQgMDpvLm5hbWUpJiZ2b2lkIDAhPT1hP2E6Ii4uLiI6dCxhbGlhczpyfX0pKSl9c3RlcFNlcmllc1RvTGluZVNlcmllcyh0LGUpe2NvbnN0IG49ZT09PXROLlNURVA7cmV0dXJuIHQubWFwKCh0PT57Y29uc3QgZT0xZTMqdC53YWxsVGltZTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt4Om4/dC5zdGVwOmUseTp0LnZhbHVlLHdhbGxUaW1lOmUscmVsYXRpdmVUaW1lSW5NczowfSl9KSl9b25TZWxlY3RUaW1lQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEJBKHtzdGFydFN0ZXA6dC5zdGFydC5zdGVwLGVuZFN0ZXA6dC5lbmQ/dC5lbmQuc3RlcDp2b2lkIDB9KSl9fVVidC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VWJ0KShmdShpUykpfSxVYnQuybVjbXA9c28oe3R5cGU6VWJ0LHNlbGVjdG9yczpbWyJzY2FsYXItY2FyZCJdXSxpbnB1dHM6e0RhdGFEb3dubG9hZENvbXBvbmVudDoiRGF0YURvd25sb2FkQ29tcG9uZW50IixjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MTUsdmFyczo0Nixjb25zdHM6W1sib2JzZXJ2ZUludGVyc2VjdGlvbiIsIiIsMywiY2FyZElkIiwiY2hhcnRNZXRhZGF0YU1hcCIsIkRhdGFEb3dubG9hZENvbXBvbmVudCIsImRhdGFTZXJpZXMiLCJpZ25vcmVPdXRsaWVycyIsImlzQ2FyZFZpc2libGUiLCJpc1Bpbm5lZCIsImxvYWRTdGF0ZSIsInNob3dGdWxsU2l6ZSIsInNtb290aGluZ0VuYWJsZWQiLCJ0YWciLCJ0aXRsZSIsInRvb2x0aXBTb3J0IiwieEF4aXNUeXBlIiwieFNjYWxlVHlwZSIsInVzZURhcmtNb2RlIiwic2VsZWN0ZWRUaW1lIiwiZm9yY2VTdmciLCJvbkZ1bGxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIiwib25WaXNpYmlsaXR5Q2hhbmdlIiwib25TZWxlY3RUaW1lQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwic2NhbGFyLWNhcmQtY29tcG9uZW50IiwwKSxEdSgib25GdWxsU2l6ZVRvZ2dsZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkZ1bGxTaXplVG9nZ2xlKCl9KSkoIm9uUGluQ2xpY2tlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ucGluU3RhdGVDaGFuZ2VkLmVtaXQoZSl9KSkoIm9uVmlzaWJpbGl0eUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25WaXNpYmlsaXR5Q2hhbmdlKGUpfSkpKCJvblNlbGVjdFRpbWVDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNlbGVjdFRpbWVDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLF95KDcsImFzeW5jIiksX3koOCwiYXN5bmMiKSxfeSg5LCJhc3luYyIpLF95KDEwLCJhc3luYyIpLF95KDExLCJhc3luYyIpLF95KDEyLCJhc3luYyIpLF95KDEzLCJhc3luYyIpLF95KDE0LCJhc3luYyIpLEN1KCkpLDImZSYmaHUoImNhcmRJZCIsbi5jYXJkSWQpKCJjaGFydE1ldGFkYXRhTWFwIixDeSgxLDE4LG4uY2hhcnRNZXRhZGF0YU1hcCQpKSgiRGF0YURvd25sb2FkQ29tcG9uZW50IixuLkRhdGFEb3dubG9hZENvbXBvbmVudCkoImRhdGFTZXJpZXMiLEN5KDIsMjAsbi5kYXRhU2VyaWVzJCkpKCJpZ25vcmVPdXRsaWVycyIsQ3koMywyMixuLmlnbm9yZU91dGxpZXJzJCkpKCJpc0NhcmRWaXNpYmxlIixuLmlzVmlzaWJsZSkoImlzUGlubmVkIixDeSg0LDI0LG4uaXNQaW5uZWQkKSkoImxvYWRTdGF0ZSIsQ3koNSwyNixuLmxvYWRTdGF0ZSQpKSgic2hvd0Z1bGxTaXplIixuLnNob3dGdWxsU2l6ZSkoInNtb290aGluZ0VuYWJsZWQiLEN5KDYsMjgsbi5zbW9vdGhpbmdFbmFibGVkJCkpKCJ0YWciLEN5KDcsMzAsbi50YWckKSkoInRpdGxlIixDeSg4LDMyLG4udGl0bGUkKSkoInRvb2x0aXBTb3J0IixDeSg5LDM0LG4udG9vbHRpcFNvcnQkKSkoInhBeGlzVHlwZSIsQ3koMTAsMzYsbi54QXhpc1R5cGUkKSkoInhTY2FsZVR5cGUiLEN5KDExLDM4LG4ueFNjYWxlVHlwZSQpKSgidXNlRGFya01vZGUiLEN5KDEyLDQwLG4udXNlRGFya01vZGUkKSkoInNlbGVjdGVkVGltZSIsQ3koMTMsNDIsbi5zZWxlY3RlZFRpbWUkKSkoImZvcmNlU3ZnIixDeSgxNCw0NCxuLmZvcmNlU3ZnJCkpfSxkaXJlY3RpdmVzOltMYnQsQmJ0XSxwaXBlczpbVnZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVYnQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3Rvcjoic2NhbGFyLWNhcmQiLHRlbXBsYXRlOidcbiAgICA8c2NhbGFyLWNhcmQtY29tcG9uZW50XG4gICAgICBbY2FyZElkXT0iY2FyZElkIlxuICAgICAgW2NoYXJ0TWV0YWRhdGFNYXBdPSJjaGFydE1ldGFkYXRhTWFwJCB8IGFzeW5jIlxuICAgICAgW0RhdGFEb3dubG9hZENvbXBvbmVudF09IkRhdGFEb3dubG9hZENvbXBvbmVudCJcbiAgICAgIFtkYXRhU2VyaWVzXT0iZGF0YVNlcmllcyQgfCBhc3luYyJcbiAgICAgIFtpZ25vcmVPdXRsaWVyc109Imlnbm9yZU91dGxpZXJzJCB8IGFzeW5jIlxuICAgICAgW2lzQ2FyZFZpc2libGVdPSJpc1Zpc2libGUiXG4gICAgICBbaXNQaW5uZWRdPSJpc1Bpbm5lZCQgfCBhc3luYyJcbiAgICAgIFtsb2FkU3RhdGVdPSJsb2FkU3RhdGUkIHwgYXN5bmMiXG4gICAgICBbc2hvd0Z1bGxTaXplXT0ic2hvd0Z1bGxTaXplIlxuICAgICAgW3Ntb290aGluZ0VuYWJsZWRdPSJzbW9vdGhpbmdFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3RhZ109InRhZyQgfCBhc3luYyJcbiAgICAgIFt0aXRsZV09InRpdGxlJCB8IGFzeW5jIlxuICAgICAgW3Rvb2x0aXBTb3J0XT0idG9vbHRpcFNvcnQkIHwgYXN5bmMiXG4gICAgICBbeEF4aXNUeXBlXT0ieEF4aXNUeXBlJCB8IGFzeW5jIlxuICAgICAgW3hTY2FsZVR5cGVdPSJ4U2NhbGVUeXBlJCB8IGFzeW5jIlxuICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRUaW1lXT0ic2VsZWN0ZWRUaW1lJCB8IGFzeW5jIlxuICAgICAgW2ZvcmNlU3ZnXT0iZm9yY2VTdmckIHwgYXN5bmMiXG4gICAgICAob25GdWxsU2l6ZVRvZ2dsZSk9Im9uRnVsbFNpemVUb2dnbGUoKSJcbiAgICAgIChvblBpbkNsaWNrZWQpPSJwaW5TdGF0ZUNoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgICAgb2JzZXJ2ZUludGVyc2VjdGlvblxuICAgICAgKG9uVmlzaWJpbGl0eUNoYW5nZSk9Im9uVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uU2VsZWN0VGltZUNoYW5nZWQpPSJvblNlbGVjdFRpbWVDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvc2NhbGFyLWNhcmQtY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse0RhdGFEb3dubG9hZENvbXBvbmVudDpbe3R5cGU6Ul99XSxjYXJkSWQ6W3t0eXBlOlJffV0sZ3JvdXBOYW1lOlt7dHlwZTpSX31dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOkVffV0sZnVsbEhlaWdodENoYW5nZWQ6W3t0eXBlOkVffV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7ZnVuY3Rpb24gamJ0KHQsZSxuKXtjb25zdCBvPVtdLHtsZWZ0OmkscmlnaHQ6YX09ZSxyPShhLWkpL247bGV0IHM9MCxsPTA7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgYT1pK2UqcixjPWErcixkPWU9PT1uLTE7bGV0IHA9bDtmb3IobD0wO3M8dC5sZW5ndGg7KXtjb25zdCBlPXRbc10sbj1XYnQoZSxhLGMsIWQpO2lmKHArPW4uY3VycixsKz1uLm5leHQsZS54K2UuZHg+YylicmVhaztzKyt9by5wdXNoKHt4OmEsZHg6cix5OnB9KX1yZXR1cm4gb31mdW5jdGlvbiBXYnQodCxlLG4sbyl7Y29uc3QgaT10LngsYT10LngrdC5keDtpZihpPm58fGE8ZSlyZXR1cm57Y3VycjowLG5leHQ6MH07aWYoMD09PXQuZHgpcmV0dXJuIG8mJmE+PW4/e2N1cnI6MCxuZXh0OnQueX06e2N1cnI6dC55LG5leHQ6MH07Y29uc3Qgcj1NYXRoLm1pbihhLG4pLU1hdGgubWF4KGksZSk7cmV0dXJue2N1cnI6dC55KnIvdC5keCxuZXh0OjB9fWNvbnN0IEdidD1bIm1haW4iXSxZYnQ9WyJ4QXhpcyJdLHFidD1bInlBeGlzIl0sWmJ0PVsiY29udGVudCJdLFhidD1bImhpc3RvZ3JhbXMiXTtmdW5jdGlvbiBLYnQodCxlKXtpZigxJnQmJihvYSgpLF91KDAsImciKSxfdSgxLCJ0ZXh0IiksUGYoMiksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtsZigidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KHQudG9vbHRpcERhdGEueEF4aXMucG9zaXRpb24sOSkpLERjKDIpLHdmKHQudG9vbHRpcERhdGEueEF4aXMubGFiZWwpfX1mdW5jdGlvbiBKYnQodCxlKXtpZigxJnQmJihvYSgpLF91KDAsImciKSxfdSgxLCJ0ZXh0IiksUGYoMiksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtsZigidHJhbnNmb3JtIix0LmdldEdyb3VwVHJhbnNmb3JtKHQudG9vbHRpcERhdGEuY2xvc2VzdERhdHVtKSksRGMoMSkseW0oInkiLHQudG9vbHRpcERhdGEueUF4aXMucG9zaXRpb24pLERjKDEpLGtmKCIgIix0LnRvb2x0aXBEYXRhLnlBeGlzLmxhYmVsLCIgIil9fWZ1bmN0aW9uIFFidCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO29hKCksYWEoKSx2dSgwKSxfdSgxLCJoaXN0b2dyYW0tbGlua2VkLXRpbWUtZm9iLWNvbnRyb2xsZXIiLDE2KSxEdSgib25TZWxlY3RUaW1lQ2hhbmdlZCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkub25TZWxlY3RUaW1lQ2hhbmdlZC5lbWl0KG4pfSkpLEN1KCkseHUoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxodSgibGlua2VkVGltZSIsdC5saW5rZWRUaW1lKSgic3RlcHMiLHQuZ2V0U3RlcHMoKSkoInRlbXBvcmFsU2NhbGUiLHQuc2NhbGVzLnRlbXBvcmFsU2NhbGUpfX1mdW5jdGlvbiAkYnQodCxlKXtpZigxJnQmJihvYSgpLF91KDAsImciKSxNdSgxLCJsaW5lIiwxNyksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2xmKCJ0cmFuc2Zvcm0iLE51KCkuZ2V0Q3NzVHJhbnNsYXRlUHgoMCx0KSl9fWZ1bmN0aW9uIHR5dCh0LGUpezEmdCYmKG9hKCksTXUoMCwibGluZSIsMjEpKX1mdW5jdGlvbiBleXQodCxlKXtpZigxJnQmJihvYSgpLE11KDAsImNpcmNsZSIsMjIpKSwyJnQpe2NvbnN0IHQ9TnUoKS4kaW1wbGljaXQsZT1OdSgpO2xmKCJ0cmFuc2Zvcm0iLGUuZ2V0Q3NzVHJhbnNsYXRlUHgoZS5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQoZS5nZXRDbG9zZXN0QmluRnJvbUJpbkNvb3JkaW5hdGUodCxlLnRvb2x0aXBEYXRhLnhQb3NpdGlvbkluQmluQ29vcmQpKS54LGUuZ2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KGUuZ2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKHQsZS50b29sdGlwRGF0YS54UG9zaXRpb25JbkJpbkNvb3JkKSkueSkpfX1mdW5jdGlvbiBueXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtvYSgpLF91KDAsImciLDE4KSxEdSgibW91c2VlbnRlciIsKGZ1bmN0aW9uIGUobil7Y29uc3Qgbz1QaSh0KS4kaW1wbGljaXQ7cmV0dXJuIE51KCkudXBkYXRlQ29sb3JPbkhvdmVyKG4sbywhMCl9KSkoIm1vdXNlbGVhdmUiLChmdW5jdGlvbiBlKG4pe2NvbnN0IG89UGkodCkuJGltcGxpY2l0O3JldHVybiBOdSgpLnVwZGF0ZUNvbG9yT25Ib3ZlcihuLG8sITEpfSkpKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLiRpbXBsaWNpdDtyZXR1cm4gTnUoKS5vblNlbGVjdFRpbWVSYW5nZUNoYW5nZShuKX0pKSxIbSgxLHR5dCwxLDAsImxpbmUiLDE5KSxNdSgyLCJwYXRoIiksSG0oMyxleXQsMSwyLCJjaXJjbGUiLDIwKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPU51KCk7bGYoInRyYW5zZm9ybSIsbi5nZXRHcm91cFRyYW5zZm9ybSh0KSkoImNvbG9yIixuLmdldEhpc3RvZ3JhbUZpbGwodCkpLGNmKCJoaXN0b2dyYW0iLCEwKSgibm8tY29sb3IiLCFuLmlzRGF0dW1JbkxpbmtlZFRpbWVSYW5nZSh0KSksRGMoMSksaHUoIm5nSWYiLG4ubW9kZT09PW4uSGlzdG9ncmFtTW9kZS5PRkZTRVQpLERjKDEpLHltKCJkIixuLmdldEhpc3RvZ3JhbVBhdGgodCkpLERjKDEpLGh1KCJuZ0lmIixuLnRvb2x0aXBEYXRhKX19ZnVuY3Rpb24gb3l0KHQsZSl7aWYoMSZ0JiYob2EoKSxNdSgwLCJjaXJjbGUiLDIyKSksMiZ0KXtjb25zdCB0PU51KDIpO3ltKCJjeCIsdC5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQodC50b29sdGlwRGF0YS5jbG9zZXN0QmluKS54KSgiY3kiLHQuZ2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KHQudG9vbHRpcERhdGEuY2xvc2VzdEJpbikueSl9fWZ1bmN0aW9uIGl5dCh0LGUpe2lmKDEmdCYmKG9hKCksX3UoMCwiZyIsNCksX3UoMSwiZyIpLE11KDIsInBhdGgiKSxIbSgzLG95dCwxLDIsImNpcmNsZSIsMjMpLEN1KCksX3UoNCwiZyIsMjQpLF91KDUsInRleHQiLDI1KSxQZig2KSxDdSgpLEN1KCksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksbGYoInRyYW5zZm9ybSIsdC5nZXRHcm91cFRyYW5zZm9ybSh0LnRvb2x0aXBEYXRhLmNsb3Nlc3REYXR1bSkpLERjKDEpLHltKCJkIix0LmdldEhpc3RvZ3JhbVBhdGgodC50b29sdGlwRGF0YS5jbG9zZXN0RGF0dW0pKSxEYygxKSxodSgibmdJZiIsdC50b29sdGlwRGF0YS5jbG9zZXN0QmluKSxEYygxKSxsZigidHJhbnNmb3JtIix0LmdldENzc1RyYW5zbGF0ZVB4KHQudG9vbHRpcERhdGEudmFsdWUucG9zaXRpb24ueCx0LnRvb2x0aXBEYXRhLnZhbHVlLnBvc2l0aW9uLnkpKSxEYygyKSx3Zih0LnRvb2x0aXBEYXRhLnZhbHVlLmxhYmVsKX19Y2xhc3MgYXl0e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLm1vZGU9V0UuT0ZGU0VULHRoaXMudGltZVByb3BlcnR5PWpFLlNURVAsdGhpcy5saW5rZWRUaW1lPW51bGwsdGhpcy5vblNlbGVjdFRpbWVDaGFuZ2VkPW5ldyBTeSx0aGlzLkhpc3RvZ3JhbU1vZGU9V0UsdGhpcy5UaW1lUHJvcGVydHk9akUsdGhpcy50b29sdGlwRGF0YT1udWxsLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgQix0aGlzLmxheW91dD17aGlzdG9ncmFtSGVpZ2h0OjAsY29udGVudENsaWVudFJlY3Q6e2hlaWdodDowLHdpZHRoOjB9fSx0aGlzLnNjYWxlcz1udWxsLHRoaXMuZm9ybWF0dGVycz17YmluTnVtYmVyOmFvdCgiLjN+cyIpLGNvdW50OmFvdCgiLjNuIiksd2FsbFRpbWU6Q2l0KCIlbS8lZCAlWCIpLHN0ZXA6YW90KCIuMGYiKSxyZWxhdGl2ZTp0PT5hb3QoIi4xciIpKHQvMzZlNSkrImgifSx0aGlzLmRvbVZpc2libGU9ITF9bmdPbkNoYW5nZXMoKXt0aGlzLnVwZGF0ZUNoYXJ0SWZWaXNpYmxlKCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe2xlKHRoaXMubWFpbi5uYXRpdmVFbGVtZW50LCJtb3VzZW1vdmUiLHtwYXNzaXZlOiEwfSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9PnRoaXMub25Nb3VzZU1vdmUodCkpKX1nZXRDc3NUcmFuc2xhdGVQeCh0LGUpe3JldHVybmB0cmFuc2xhdGUoJHt0fXB4LCAke2V9cHgpYH1nZXRDbG9zZXN0QmluRnJvbUJpbkNvb3JkaW5hdGUodCxlKXtpZighdC5iaW5zLmxlbmd0aClyZXR1cm57eDowLGR4OjAseTowfTtjb25zdCBuPXQuYmluc1swXSxvPXQuYmlucy5zbGljZSgtMSlbMF07aWYoZTxuLngpcmV0dXJuIG47aWYoZT49by54K28uZHgpcmV0dXJuIG87cmV0dXJuIHQuYmlucy5maW5kKCh0PT50Lng8PWUmJmU8dC54K3QuZHgpKX1nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQodCl7cmV0dXJuIHRoaXMuc2NhbGVzP3t4OnRoaXMuc2NhbGVzLmJpblNjYWxlKGx5dCh0KSkseTp0aGlzLnNjYWxlcy5jb3VudFNjYWxlKHQueSl9Ont4OjAseTowfX1nZXRIaXN0b2dyYW1QYXRoKHQpe2lmKCF0aGlzLnNjYWxlc3x8IXQuYmlucy5sZW5ndGgpcmV0dXJuIiI7Y29uc3QgZT10aGlzLnNjYWxlcy5iaW5TY2FsZSxuPXRoaXMuc2NhbGVzLmNvdW50U2NhbGUsbz10LmJpbnNbMF0saT10LmJpbnMuc2xpY2UoLTEpWzBdLGE9W2BNJHtlKGx5dChvKSl9LCR7bigwKX1gXTtmb3IoY29uc3QgbyBvZiB0LmJpbnMpYS5wdXNoKGBMJHtlKGx5dChvKSl9LCR7bihvLnkpfWApO3JldHVybiBhLnB1c2goYEwke2UobHl0KGkpKX0sJHtuKDApfWApLGEuam9pbigiIil9dHJhY2tCeVdhbGxUaW1lKHQpe3JldHVybiB0LndhbGxUaW1lfWdldEdyb3VwVHJhbnNmb3JtKHQpe3JldHVybiB0aGlzLnNjYWxlcyYmdGhpcy5tb2RlIT09V0UuT1ZFUkxBWT90aGlzLmdldENzc1RyYW5zbGF0ZVB4KDAsdGhpcy5zY2FsZXMudGVtcG9yYWxTY2FsZSh0aGlzLmdldFRpbWVWYWx1ZSh0KSkpOiIifWdldFN0ZXBzKCl7cmV0dXJuIHRoaXMuZGF0YS5tYXAoKHQ9PnQuc3RlcCkpfWlzTGlua2VkVGltZUVuYWJsZWQodCl7cmV0dXJuIEJvb2xlYW4odGhpcy5tb2RlPT09V0UuT0ZGU0VUJiZ0aGlzLnRpbWVQcm9wZXJ0eT09PWpFLlNURVAmJnRoaXMuc2NhbGVzJiZ0KX1pc0RhdHVtSW5MaW5rZWRUaW1lUmFuZ2UodCl7cmV0dXJuIXRoaXMuaXNMaW5rZWRUaW1lRW5hYmxlZCh0aGlzLmxpbmtlZFRpbWUpfHwobnVsbD09PXRoaXMubGlua2VkVGltZS5lbmQ/dGhpcy5saW5rZWRUaW1lLnN0YXJ0LnN0ZXA9PT10LnN0ZXA6dGhpcy5saW5rZWRUaW1lLnN0YXJ0LnN0ZXA8PXQuc3RlcCYmdGhpcy5saW5rZWRUaW1lLmVuZC5zdGVwPj10LnN0ZXApfWdldEhpc3RvZ3JhbUZpbGwodCl7cmV0dXJuIHRoaXMuc2NhbGVzP3RoaXMuc2NhbGVzLmQzQ29sb3JTY2FsZSh0aGlzLmdldFRpbWVWYWx1ZSh0KSk6IiJ9dXBkYXRlQ29sb3JPbkhvdmVyKHQsZSxuKXt0aGlzLmlzTGlua2VkVGltZUVuYWJsZWQodGhpcy5saW5rZWRUaW1lKSYmKHRoaXMuaXNEYXR1bUluTGlua2VkVGltZVJhbmdlKGUpfHwobj90LnRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCJuby1jb2xvciIpOnQudGFyZ2V0LmNsYXNzTGlzdC5hZGQoIm5vLWNvbG9yIikpKX1nZXRHcmlkVGlja1lMb2NzKCl7aWYoIXRoaXMuc2NhbGVzfHx0aGlzLm1vZGU9PT1XRS5PRkZTRVQpcmV0dXJuW107Y29uc3QgdD10aGlzLnNjYWxlcy5jb3VudFNjYWxlO3JldHVybiB0LnRpY2tzKCkubWFwKChlPT50KGUpKSl9b25SZXNpemUoKXt0aGlzLnVwZGF0ZUNsaWVudFJlY3RzKCksdGhpcy51cGRhdGVDaGFydElmVmlzaWJsZSgpfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5kb21WaXNpYmxlPXQsdCYmKHRoaXMudXBkYXRlQ2xpZW50UmVjdHMoKSx0aGlzLnVwZGF0ZUNoYXJ0SWZWaXNpYmxlKCkpfW9uU2VsZWN0VGltZVJhbmdlQ2hhbmdlKHQpe3ZhciBlO2lmKCF0aGlzLmlzTGlua2VkVGltZUVuYWJsZWQodGhpcy5saW5rZWRUaW1lKSlyZXR1cm47Y29uc3Qgbj10aGlzLmxpbmtlZFRpbWUuc3RhcnQuc3RlcCxvPW51bGw9PT0oZT10aGlzLmxpbmtlZFRpbWUuZW5kKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zdGVwLGk9dC5zdGVwPG4/dC5zdGVwOm47bGV0IGE9bzthPXZvaWQgMD09PWE/dC5zdGVwPm4/dC5zdGVwOm46dC5zdGVwPmE/dC5zdGVwOmEsaT09PW4mJmE9PT1vfHxpPT09YXx8dGhpcy5vblNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQoe3N0YXJ0OntzdGVwOml9LGVuZDp7c3RlcDphfX0pfWdldFRpbWVWYWx1ZSh0KXtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgakUuV0FMTF9USU1FOnJldHVybiB0LndhbGxUaW1lO2Nhc2UgakUuU1RFUDpyZXR1cm4gdC5zdGVwO2Nhc2UgakUuUkVMQVRJVkU6cmV0dXJuIHQud2FsbFRpbWUtdGhpcy5kYXRhWzBdLndhbGxUaW1lfX11cGRhdGVDbGllbnRSZWN0cygpe3RoaXMuY29udGVudCYmKHRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0PXRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodD10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdC5oZWlnaHQvMi41KX11cGRhdGVDaGFydElmVmlzaWJsZSgpe3RoaXMuZG9tVmlzaWJsZSYmKHRoaXMuc2NhbGVzPXRoaXMuY29tcHV0ZVNjYWxlcyh0aGlzLmRhdGEpLHRoaXMucmVuZGVyWEF4aXMoKSx0aGlzLnJlbmRlcllBeGlzKCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpfWNvbXB1dGVTY2FsZXModCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5sYXlvdXQuY29udGVudENsaWVudFJlY3Qse21pbjpvLG1heDppfT1zeXQodCwodD0+KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdC5yZWR1Y2UoKCh0LGUpPT5NYXRoLm1pbih0LG4oZSkpKSwxLzApfSkodC5iaW5zLCh0PT50LngpKSksKHQ9PnJ5dCh0LmJpbnMsKCh7eDp0LGR4OmV9KT0+dCtlKSkpKSxhPXJ5dCh0LCh0PT5yeXQodC5iaW5zLCgoe3k6dH0pPT50KSkpKSxyPUFvdCgpLmRvbWFpbihbbyxpXSkubmljZSgpLHM9dGhpcy5tb2RlIT09V0UuT1ZFUkxBWSYmdGhpcy50aW1lUHJvcGVydHk9PWpFLldBTExfVElNRT9aYXQoKTpBb3QoKSxsPXQubWFwKCh0PT50aGlzLmdldFRpbWVWYWx1ZSh0KSkpLHttaW46YyxtYXg6ZH09c3l0KGwsKHQ9PnQpKSxwPVtjLGRdO3MuZG9tYWluKHApO2NvbnN0IG09QW90KCk7bS5kb21haW4oWzAsYV0pO2NvbnN0IHU9JDkodGhpcy5jb2xvcnx8IiMwMDAiKSxmPUFvdCgpO2lmKGYuZG9tYWluKHApLHIucmFuZ2UoWzAsZV0pLGYucmFuZ2UoW3UuYnJpZ2h0ZXIoKSx1LmRhcmtlcigpXSksZi5pbnRlcnBvbGF0ZShGdHQpLHRoaXMubW9kZT09PVdFLk9WRVJMQVkpcy5yYW5nZShbbixuXSksbS5yYW5nZShbbiwwXSk7ZWxzZXtzLnJhbmdlKFtuLSh0aGlzLm1vZGU9PT1XRS5PRkZTRVQ/bi10aGlzLmxheW91dC5oaXN0b2dyYW1IZWlnaHQ6MCksbl0pLG0ucmFuZ2UoWzAsLXRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodF0pfXJldHVybntiaW5TY2FsZTpyLGQzQ29sb3JTY2FsZTpmLGNvdW50U2NhbGU6bSx0ZW1wb3JhbFNjYWxlOnN9fXJlbmRlclhBeGlzKCl7aWYoIXRoaXMuc2NhbGVzKXJldHVybjtjb25zdHt3aWR0aDp0fT10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdCxlPXI3KHRoaXMuc2NhbGVzLmJpblNjYWxlKS50aWNrcyhNYXRoLm1heCgyLHQvMjApKTtlLnRpY2tGb3JtYXQodGhpcy5mb3JtYXR0ZXJzLmJpbk51bWJlciksZSh2OCh0aGlzLnhBeGlzLm5hdGl2ZUVsZW1lbnQpKX1nZXRZQXhpc0Zvcm1hdHRlcigpe2lmKHRoaXMubW9kZT09PVdFLk9WRVJMQVkpcmV0dXJuIHRoaXMuZm9ybWF0dGVycy5jb3VudDtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgakUuV0FMTF9USU1FOnJldHVybiB0aGlzLmZvcm1hdHRlcnMud2FsbFRpbWU7Y2FzZSBqRS5TVEVQOnJldHVybiB0aGlzLmZvcm1hdHRlcnMuc3RlcDtjYXNlIGpFLlJFTEFUSVZFOnJldHVybiB0aGlzLmZvcm1hdHRlcnMucmVsYXRpdmU7ZGVmYXVsdDp0aHJvdyBSYW5nZUVycm9yKGBZIGF4aXMgZm9ybWF0dGVyIGZvciAke3RoaXMudGltZVByb3BlcnR5fSBtdXN0IGJlIGltcGxlbWVudGVkYCl9fXJlbmRlcllBeGlzKCl7aWYoIXRoaXMuc2NhbGVzKXJldHVybjtjb25zdCB0PXRoaXMubW9kZT09PVdFLk9WRVJMQVk/dGhpcy5zY2FsZXMuY291bnRTY2FsZTp0aGlzLnNjYWxlcy50ZW1wb3JhbFNjYWxlLHtoZWlnaHQ6ZX09dGhpcy5sYXlvdXQuY29udGVudENsaWVudFJlY3Qsbj1hNyh0KS50aWNrcyhNYXRoLm1heCgyLGUvMTUpKTtuLnRpY2tGb3JtYXQodGhpcy5nZXRZQXhpc0Zvcm1hdHRlcigpKSxuKHY4KHRoaXMueUF4aXMubmF0aXZlRWxlbWVudCkpfWZpbmRDbG9zZXN0RGF0dW1JbmRleCh0KXtsZXQgZT10LnRhcmdldCxuPWU7Zm9yKDtlJiZlIT09dGhpcy5oaXN0b2dyYW1zLm5hdGl2ZUVsZW1lbnQ7KW49ZSxlPWUucGFyZW50RWxlbWVudDtyZXR1cm4gZT9BcnJheS5mcm9tKGUuY2hpbGRyZW4pLmluZGV4T2Yobik6LTF9b25Nb3VzZU1vdmVGb3JUZXN0T25seSh0KXtyZXR1cm4gdGhpcy5vbk1vdXNlTW92ZSh0KX1vbk1vdXNlTW92ZSh0KXtpZighdGhpcy5zY2FsZXMpcmV0dXJuO2NvbnN0IGU9dC5vZmZzZXRYLG49dC5vZmZzZXRZLG89dGhpcy5maW5kQ2xvc2VzdERhdHVtSW5kZXgodCk7aWYobzwwKXJldHVybjtjb25zdCBpPXRoaXMuc2NhbGVzLmJpblNjYWxlLmludmVydChlKSxhPXRoaXMuZGF0YVtvXSxyPXRoaXMuZ2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKGEsaSk7dGhpcy50b29sdGlwRGF0YT17dmFsdWU6e3Bvc2l0aW9uOnt4OmUseTpufSxsYWJlbDp0aGlzLm1vZGU9PT1XRS5PRkZTRVQ/dGhpcy5mb3JtYXR0ZXJzLmNvdW50KHIueSk6YFN0ZXA6ICR7dGhpcy5mb3JtYXR0ZXJzLnN0ZXAoYS5zdGVwKX1gfSx4QXhpczp7cG9zaXRpb246dGhpcy5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQocikueCxsYWJlbDp0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKGx5dChyKSl9LHlBeGlzOntwb3NpdGlvbjp0aGlzLnNjYWxlcy5jb3VudFNjYWxlKHRoaXMubW9kZT09PVdFLk9GRlNFVD8wOnIueSksbGFiZWw6dGhpcy5tb2RlPT09V0UuT0ZGU0VUP3RoaXMuZ2V0WUF4aXNGb3JtYXR0ZXIoKSh0aGlzLmdldFRpbWVWYWx1ZShhKSk6dGhpcy5mb3JtYXR0ZXJzLmJpbk51bWJlcihyLnkpfSx4UG9zaXRpb25JbkJpbkNvb3JkOmksY2xvc2VzdERhdHVtOmEsY2xvc2VzdEJpbjpyfSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKX19ZnVuY3Rpb24gcnl0KHQsZSl7cmV0dXJuIHQucmVkdWNlKCgodCxuKT0+TWF0aC5tYXgodCxlKG4pKSksLTEvMCl9ZnVuY3Rpb24gc3l0KHQsZSxuKXtufHwobj1lKTtsZXQgbz0xLzAsaT0tMS8wO2Zvcihjb25zdCBhIG9mIHQpbz1NYXRoLm1pbihvLGUoYSkpLGk9TWF0aC5tYXgoaSxuKGEpKTtyZXR1cm57bWluOm8sbWF4Oml9fWZ1bmN0aW9uIGx5dCh0KXtyZXR1cm4gdC54Ky41KnQuZHh9ZnVuY3Rpb24gY3l0KHQsZSl7MSZ0JiYoX3UoMCwic3BhbiIsMTQpLE11KDEsIm1hdC1zcGlubmVyIiwxNSksQ3UoKSl9ZnVuY3Rpb24gZHl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwidGItaGlzdG9ncmFtIiwxNiksRHUoIm9uU2VsZWN0VGltZUNoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLm9uU2VsZWN0VGltZUNoYW5nZWQuZW1pdChuKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO2h1KCJkYXRhIix0LmRhdGEpKCJtb2RlIix0Lm1vZGUpKCJ0aW1lUHJvcGVydHkiLHQudGltZVByb3BlcnR5KHQueEF4aXNUeXBlKSkoImNvbG9yIix0LnJ1bkNvbG9yU2NhbGUodC5ydW5JZCkpKCJsaW5rZWRUaW1lIix0LmNvbnZlcnRUb0xpbmtlZFRpbWUodC5zZWxlY3RlZFRpbWUpKX19ZnVuY3Rpb24gcHl0KHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwxOCksUGYoMSwiIERhdGEgZmFpbGVkIHRvIGxvYWQuICIpLEN1KCkpfWZ1bmN0aW9uIG15dCh0LGUpe2lmKDEmdCYmSG0oMCxweXQsMiwwLCJkaXYiLDE3KSwyJnQpe2NvbnN0IHQ9TnUoKTtodSgibmdJZiIsdC5sb2FkU3RhdGU9PT10LkRhdGFMb2FkU3RhdGUuRkFJTEVEKX19YXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxheXQpKGZ1KE9iKSl9LGF5dC7JtWNtcD1zbyh7dHlwZTpheXQsc2VsZWN0b3JzOltbInRiLWhpc3RvZ3JhbSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEdidCw1KSxWeShZYnQsNSksVnkocWJ0LDUpLFZ5KFpidCw1KSxWeShYYnQsNSkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4ubWFpbj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi54QXhpcz10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi55QXhpcz10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5jb250ZW50PXQuZmlyc3QpLEJ5KHQ9ankoKSkmJihuLmhpc3RvZ3JhbXM9dC5maXJzdCl9fSxpbnB1dHM6e21vZGU6Im1vZGUiLHRpbWVQcm9wZXJ0eToidGltZVByb3BlcnR5Iixjb2xvcjoiY29sb3IiLGRhdGE6ImRhdGEiLGxpbmtlZFRpbWU6ImxpbmtlZFRpbWUifSxvdXRwdXRzOntvblNlbGVjdFRpbWVDaGFuZ2VkOiJvblNlbGVjdFRpbWVDaGFuZ2VkIn0sZmVhdHVyZXM6W3FvXSxkZWNsczoyMix2YXJzOjE3LGNvbnN0czpbWyJkZXRlY3RSZXNpemUiLCIiLCJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIiwzLCJvblJlc2l6ZSIsIm9uVmlzaWJpbGl0eUNoYW5nZSJdLFsibWFpbiIsIiJdLFsxLCJheGlzIiwieC1heGlzIl0sWyJ4QXhpcyIsIiJdLFsxLCJ0b29sdGlwIl0sWzMsInRyYW5zZm9ybSIsNCwibmdJZiJdLFsxLCJheGlzIiwieS1heGlzIl0sWyJ5QXhpcyIsIiJdLFs0LCJuZ0lmIl0sWzEsImNvbnRlbnQiXSxbImNvbnRlbnQiLCIiXSxbMSwiZ3JpZCJdLFszLCJ0cmFuc2Zvcm0iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiaGlzdG9ncmFtcyIsIiJdLFszLCJ0cmFuc2Zvcm0iLCJoaXN0b2dyYW0iLCJuby1jb2xvciIsImNvbG9yIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJjbGFzcyIsInRvb2x0aXAiLDQsIm5nSWYiXSxbMywibGlua2VkVGltZSIsInN0ZXBzIiwidGVtcG9yYWxTY2FsZSIsIm9uU2VsZWN0VGltZUNoYW5nZWQiXSxbIngyIiwiMTAwJSIsMSwidGljayJdLFszLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsImNsaWNrIl0sWyJjbGFzcyIsImJhc2VsaW5lIiwieDIiLCIxMDAlIiw0LCJuZ0lmIl0sWyJyIiwiMiIsMywidHJhbnNmb3JtIiw0LCJuZ0lmIl0sWyJ4MiIsIjEwMCUiLDEsImJhc2VsaW5lIl0sWyJyIiwiMiJdLFsiciIsIjIiLDQsIm5nSWYiXSxbMSwidmFsdWUtbGFiZWwiXSxbIngiLCIzIiwieSIsIi0zIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJkaXYiLDAsMSksRHUoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSkoIm9uVmlzaWJpbGl0eUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25WaXNpYmlsaXR5Q2hhbmdlKGUpfSkpLG9hKCksX3UoMiwic3ZnIiwyKSxNdSgzLCJnIixudWxsLDMpLF91KDUsImciLDQpLEhtKDYsS2J0LDMsMywiZyIsNSksQ3UoKSxDdSgpLGFhKCksX3UoNywiZGl2Iiw2KSxvYSgpLF91KDgsInN2ZyIpLE11KDksImciLG51bGwsNyksX3UoMTEsImciLDQpLEhtKDEyLEpidCwzLDQsImciLDUpLEN1KCksQ3UoKSxIbSgxMyxRYnQsMiwzLCJuZy1jb250YWluZXIiLDgpLEN1KCksX3UoMTQsInN2ZyIsOSwxMCksX3UoMTYsImciLDExKSxIbSgxNywkYnQsMiwyLCJnIiwxMiksQ3UoKSxfdSgxOCwiZyIsbnVsbCwxMyksSG0oMjAsbnl0LDQsMTEsImciLDE0KSxDdSgpLEhtKDIxLGl5dCw3LDcsImciLDE1KSxDdSgpLEN1KCkpLDImZSYmKG1mKCJtYWluICIrbi5tb2RlKyIgIituLnRpbWVQcm9wZXJ0eSksRGMoNiksaHUoIm5nSWYiLG4udG9vbHRpcERhdGEpLERjKDUpLGxmKCJ0cmFuc2Zvcm0iLG4uZ2V0Q3NzVHJhbnNsYXRlUHgoOSwwKSksRGMoMSksaHUoIm5nSWYiLG4udG9vbHRpcERhdGEpLERjKDEpLGh1KCJuZ0lmIixuLmlzTGlua2VkVGltZUVuYWJsZWQobi5saW5rZWRUaW1lKSksRGMoNCksaHUoIm5nRm9yT2YiLG4uZ2V0R3JpZFRpY2tZTG9jcygpKSxEYygxKSxjZigiaGlzdG9ncmFtcyIsITApKCJsaW5rZWQtdGltZS1lbmFibGVkIixuLmxpbmtlZFRpbWUpKCJsaW5rZWQtdGltZS1zaW5nbGUtc3RlcCIsbi5saW5rZWRUaW1lJiYhbi5saW5rZWRUaW1lLmVuZCksRGMoMiksaHUoIm5nRm9yT2YiLG4uZGF0YSkoIm5nRm9yVHJhY2tCeSIsbi50cmFja0J5V2FsbFRpbWUpLERjKDEpLGh1KCJuZ0lmIixuLnRvb2x0aXBEYXRhKSl9LHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdLCAubWFpbltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX1bX25naG9zdC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjEwcHh9Lm1haW5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWFyZWFzOiJjb250ZW50IHktYXhpcyIgIngtYXhpcyAuIjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDUwcHg7Z3JpZC10ZW1wbGF0ZS1yb3dzOjFmciAzMHB4fS5tYWluLndhbGxfdGltZVtfbmdjb250ZW50LSVDT01QJV17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciA3NXB4fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmJhc2VsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMDAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmJhc2VsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmJhc2VsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjEwcHh9LmxpbmtlZC10aW1lLWZvYltfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLmxpbmtlZC10aW1lLWZvYltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOmN1cnJlbnRDb2xvcn0ubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6aWRlb2dyYXBoaWM7dGV4dC1hbmNob3I6c3RhcnR9LmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgIHtjb2xvcjojNjE2MTYxO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAge2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmRvbWFpbiwgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayB0ZXh0e2Rpc3BsYXk6bm9uZX0uYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrOm50aC1jaGlsZCgybisxKSB0ZXh0e2Rpc3BsYXk6aW5pdGlhbH1zdmdbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7cG9pbnRlci1ldmVudHM6dmlzaWJsZVBhaW50ZWR9c3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmVbX25nY29udGVudC0lQ09NUCVdLCBzdmdbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lfXN2Z1tfbmdjb250ZW50LSVDT01QJV0gICBnW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOngtYXhpc30ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTpoYW5naW5nO3RleHQtYW5jaG9yOm1pZGRsZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6eS1heGlzOy13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDApIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDApIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSl9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6bWlkZGxlO3RleHQtYW5jaG9yOnN0YXJ0fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayBsaW5le3N0cm9rZTojZGRkfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgbGluZSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayBsaW5le3N0cm9rZTojNTU1fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6Y29udGVudDtvdmVyZmxvdzp2aXNpYmxlO3otaW5kZXg6MX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudGlja1tfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtZGFzaGFycmF5OjJ9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDpjdXJyZW50Q29sb3I7c3Ryb2tlLW9wYWNpdHk6LjY7c3Ryb2tlLXdpZHRoOjFweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde2ZpbHRlcjpkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC42KSk7c3Ryb2tlOiNmZmY7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5iYXNlbGluZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlLW9wYWNpdHk6LjE7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2U6Y3VycmVudENvbG9yO3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2U6Y3VycmVudENvbG9yO2ZpbGw6cmdiYSgwLDAsMCwwKX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tY29sb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjIxLDIyMSwyMjEsLjQpICFpbXBvcnRhbnR9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS1vcGFjaXR5Oi4yfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg1MSw1MSw1MSwuNCkgIWltcG9ydGFudH0ub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiM1NTV9Lm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtcy5saW5rZWQtdGltZS1zaW5nbGUtc3RlcFtfbmdjb250ZW50LSVDT01QJV0gICBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubm8tY29sb3IpICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiMwMDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtcy5saW5rZWQtdGltZS1zaW5nbGUtc3RlcFtfbmdjb250ZW50LSVDT01QJV0gICBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubm8tY29sb3IpICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXMubGlua2VkLXRpbWUtc2luZ2xlLXN0ZXBbX25nY29udGVudC0lQ09NUCVdICAgW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm5vLWNvbG9yKSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmZmfS5vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayBsaW5le2Rpc3BsYXk6bm9uZX0ub3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsLW9wYWNpdHk6MDtzdHJva2U6Y3VycmVudENvbG9yfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1haW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGF5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1oaXN0b2dyYW0iLHRlbXBsYXRlVXJsOiJoaXN0b2dyYW1fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImhpc3RvZ3JhbV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9ifV19KSx7bWFpbjpbe3R5cGU6YXIsYXJnczpbIm1haW4iXX1dLHhBeGlzOlt7dHlwZTphcixhcmdzOlsieEF4aXMiXX1dLHlBeGlzOlt7dHlwZTphcixhcmdzOlsieUF4aXMiXX1dLGNvbnRlbnQ6W3t0eXBlOmFyLGFyZ3M6WyJjb250ZW50Il19XSxoaXN0b2dyYW1zOlt7dHlwZTphcixhcmdzOlsiaGlzdG9ncmFtcyJdfV0sbW9kZTpbe3R5cGU6Ul99XSx0aW1lUHJvcGVydHk6W3t0eXBlOlJffV0sY29sb3I6W3t0eXBlOlJffV0sZGF0YTpbe3R5cGU6Ul99XSxsaW5rZWRUaW1lOlt7dHlwZTpSX31dLG9uU2VsZWN0VGltZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjb25zdCB1eXQ9ZnVuY3Rpb24odCl7cmV0dXJue2JhY2tncm91bmRDb2xvcjp0fX07Y2xhc3MgZnl0e2NvbnN0cnVjdG9yKCl7dGhpcy5EYXRhTG9hZFN0YXRlPUdFLHRoaXMub25GdWxsU2l6ZVRvZ2dsZT1uZXcgU3ksdGhpcy5vblBpbkNsaWNrZWQ9bmV3IFN5LHRoaXMub25TZWxlY3RUaW1lQ2hhbmdlZD1uZXcgU3l9dGltZVByb3BlcnR5KHQpe3N3aXRjaCh0KXtjYXNlIHROLlNURVA6cmV0dXJuIGpFLlNURVA7Y2FzZSB0Ti5XQUxMX1RJTUU6cmV0dXJuIGpFLldBTExfVElNRTtjYXNlIHROLlJFTEFUSVZFOnJldHVybiBqRS5SRUxBVElWRTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCB4QXhpc1R5cGUgZm9yIGhpc3RvZ3JhbSB0aW1lIHByb3BlcnR5LiIpfX1jb252ZXJ0VG9MaW5rZWRUaW1lKHQpe3JldHVybiBudWxsPT09dD9udWxsOntzdGFydDp7c3RlcDp0LnN0YXJ0U3RlcH0sZW5kOnQuZW5kU3RlcD97c3RlcDp0LmVuZFN0ZXB9Om51bGx9fX1meXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZ5dCl9LGZ5dC7JtWNtcD1zbyh7dHlwZTpmeXQsc2VsZWN0b3JzOltbImhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudCJdXSxpbnB1dHM6e2xvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIixydW5JZDoicnVuSWQiLGRhdGE6ImRhdGEiLG1vZGU6Im1vZGUiLHhBeGlzVHlwZToieEF4aXNUeXBlIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIixzaG93RnVsbFNpemU6InNob3dGdWxsU2l6ZSIsaXNQaW5uZWQ6ImlzUGlubmVkIixzZWxlY3RlZFRpbWU6InNlbGVjdGVkVGltZSIsaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkOiJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQifSxvdXRwdXRzOntvbkZ1bGxTaXplVG9nZ2xlOiJvbkZ1bGxTaXplVG9nZ2xlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCIsb25TZWxlY3RUaW1lQ2hhbmdlZDoib25TZWxlY3RUaW1lQ2hhbmdlZCJ9LGRlY2xzOjE2LHZhcnM6MTQsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiUGluIGNhcmQiKX1lbHNlIHQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7ZT1nb29nLmdldE1zZygiVG9nZ2xlIGZ1bGwgc2l6ZSBtb2RlIil9ZWxzZSBlPSRsb2NhbGl6ZWA6QSBidXR0b24gb24gYSBoaXN0b2dyYW0gY2FyZCB0aGF0IHRvZ2dsZXMgZnVsbCBzaXplIG1vZGUu4pCfZmM4Zjc2N2QwYjlmOTMwMTg3YTFiYWUzNDQ3N2FkMjg3MzZlY2UzM+KQnzkxNTcyMTU2MzYzODkyNjU5NzpUb2dnbGUgZnVsbCBzaXplIG1vZGVgO3JldHVybltbMSwiaGVhZGluZyJdLFsxLCJ0YWciXSxbMywidGl0bGUiLCJ2YWx1ZSJdLFszLCJpc0NsaXBwZWQiLCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiXSxbMSwicnVuIl0sWzEsImRvdCIsMywibmdTdHlsZSJdLFsxLCJydW4tdGV4dCIsMywicnVuSWQiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiLDMsImNsaWNrIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMywiZGF0YSIsIm1vZGUiLCJ0aW1lUHJvcGVydHkiLCJjb2xvciIsImxpbmtlZFRpbWUiLCJvblNlbGVjdFRpbWVDaGFuZ2VkIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vRGF0YSIsIiJdLFsxLCJzcGlubmVyIl0sWyJkaWFtZXRlciIsIjE4Il0sWzMsImRhdGEiLCJtb2RlIiwidGltZVByb3BlcnR5IiwiY29sb3IiLCJsaW5rZWRUaW1lIiwib25TZWxlY3RUaW1lQ2hhbmdlZCJdLFsiY2xhc3MiLCJlbXB0eS1tZXNzYWdlIiw0LCJuZ0lmIl0sWzEsImVtcHR5LW1lc3NhZ2UiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihfdSgwLCJkaXYiLDApLF91KDEsImRpdiIsMSksTXUoMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLE11KDMsInZpcy1zZWxlY3RlZC10aW1lLXdhcm5pbmciLDMpLEN1KCksX3UoNCwiZGl2Iiw0KSxNdSg1LCJzcGFuIiw1KSxNdSg2LCJjYXJkLXJ1bi1uYW1lIiw2KSxDdSgpLF91KDcsInNwYW4iLDcpLF91KDgsImJ1dHRvbiIsOCksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGluQ2xpY2tlZC5lbWl0KCFuLmlzUGlubmVkKX0pKSxNdSg5LCJtYXQtaWNvbiIsOSksQ3UoKSxfdSgxMCwiYnV0dG9uIiwxMCksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUuZW1pdCgpfSkpLE11KDExLCJtYXQtaWNvbiIsOSksQ3UoKSxDdSgpLEhtKDEyLGN5dCwyLDAsInNwYW4iLDExKSxDdSgpLEhtKDEzLGR5dCwxLDUsInRiLWhpc3RvZ3JhbSIsMTIpLEhtKDE0LG15dCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDEzLHF5KSksMiZlKXtjb25zdCB0PUZtKDE1KTtEYygyKSxodSgidGl0bGUiLG4udGFnKSgidmFsdWUiLG4udGl0bGUpLERjKDEpLGh1KCJpc0NsaXBwZWQiLG4uc2VsZWN0ZWRUaW1lJiZuLnNlbGVjdGVkVGltZS5jbGlwcGVkKSgiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIixuLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCksRGMoMiksaHUoIm5nU3R5bGUiLGl5KDEyLHV5dCxuLnJ1bkNvbG9yU2NhbGUobi5ydW5JZCkpKSxEYygxKSxodSgicnVuSWQiLG4ucnVuSWQpLERjKDIpLHltKCJ0aXRsZSIsbi5pc1Bpbm5lZD8iVW5waW4gY2FyZCI6IlBpbiBjYXJkIiksRGMoMSksaHUoInN2Z0ljb24iLG4uaXNQaW5uZWQ/ImtlZXBfMjRweCI6ImtlZXBfb3V0bGluZV8yNHB4IiksRGMoMiksaHUoInN2Z0ljb24iLG4uc2hvd0Z1bGxTaXplPyJmdWxsc2NyZWVuX2V4aXRfMjRweCI6ImZ1bGxzY3JlZW5fMjRweCIpLERjKDEpLGh1KCJuZ0lmIixuLmxvYWRTdGF0ZT09PW4uRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSxEYygxKSxodSgibmdJZiIsbi5kYXRhJiZuLmRhdGEubGVuZ3RoKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbJDQsbjYsenYscjYsV0wsRXEsUHYsZzIsYXl0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDo0cHh9LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1hcmVhczoidGFnIGNvbnRyb2xzIiAicnVuIHNwaW5uZXIiO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bztmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjRweH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2dhcDo1cHg7Z3JpZC1hcmVhOnRhZztvdmVyZmxvdzpoaWRkZW59LnRhZ1tfbmdjb250ZW50LSVDT01QJV0gICB2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDowfS5waW4tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MThweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6cnVuO2Rpc3BsYXk6ZmxleDt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjEzcHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAuZG90W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4tcmlnaHQ6NHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVdICAgLnJ1bi10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6MTIwcHh9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3doaXRlLXNwYWNlOm5vd3JhcDtncmlkLWFyZWE6Y29udHJvbHM7anVzdGlmeS1zZWxmOmZsZXgtZW5kO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXJpZ2h0Oi0xMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6c3Bpbm5lcjtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MDtyaWdodDowO3Bvc2l0aW9uOmFic29sdXRlfXRiLWhpc3RvZ3JhbVtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjF9LmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MWVtO2ZvbnQtc2l6ZToxM3B4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmeXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiaGlzdG9ncmFtLWNhcmQtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiaGlzdG9ncmFtX2NhcmRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImhpc3RvZ3JhbV9jYXJkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtsb2FkU3RhdGU6W3t0eXBlOlJffV0sdGl0bGU6W3t0eXBlOlJffV0sdGFnOlt7dHlwZTpSX31dLHJ1bklkOlt7dHlwZTpSX31dLGRhdGE6W3t0eXBlOlJffV0sbW9kZTpbe3R5cGU6Ul99XSx4QXhpc1R5cGU6W3t0eXBlOlJffV0scnVuQ29sb3JTY2FsZTpbe3R5cGU6Ul99XSxzaG93RnVsbFNpemU6W3t0eXBlOlJffV0saXNQaW5uZWQ6W3t0eXBlOlJffV0sc2VsZWN0ZWRUaW1lOlt7dHlwZTpSX31dLGlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZDpbe3R5cGU6Ul99XSxvbkZ1bGxTaXplVG9nZ2xlOlt7dHlwZTpFX31dLG9uUGluQ2xpY2tlZDpbe3R5cGU6RV99XSxvblNlbGVjdFRpbWVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgZ3l0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZ1bGxXaWR0aENoYW5nZWQ9bmV3IFN5LHRoaXMuZnVsbEhlaWdodENoYW5nZWQ9bmV3IFN5LHRoaXMucGluU3RhdGVDaGFuZ2VkPW5ldyBTeSx0aGlzLm1vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KFN6KSx0aGlzLnhBeGlzVHlwZSQ9dGhpcy5zdG9yZS5zZWxlY3Qoa3opLHRoaXMuc2hvd0Z1bGxTaXplPSExfWlzSGlzdG9ncmFtQ2FyZE1ldGFkYXRhKHQpe2NvbnN0e3BsdWdpbjplfT10O3JldHVybiBlPT09UVQuSElTVE9HUkFNU31vbkZ1bGxTaXplVG9nZ2xlKCl7dGhpcy5zaG93RnVsbFNpemU9IXRoaXMuc2hvd0Z1bGxTaXplLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkLmVtaXQodGhpcy5zaG93RnVsbFNpemUpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdChkeix0aGlzLmNhcmRJZCkucGlwZShmZSgodD0+ISF0JiZ0aGlzLmlzSGlzdG9ncmFtQ2FyZE1ldGFkYXRhKHQpKSksVnQoKHQ9PnQpKSksZT1LdChbdCx0aGlzLnN0b3JlLnNlbGVjdChseix0aGlzLmNhcmRJZCldKTt0aGlzLmRhdGEkPWUucGlwZShWdCgoKFt0LGVdKT0+e2NvbnN0IG49dC5ydW5JZDtpZighZXx8IWUuaGFzT3duUHJvcGVydHkobikpcmV0dXJuW107cmV0dXJuKGZ1bmN0aW9uIG8odCxlPTMwKXtpZighdC5sZW5ndGh8fGU8MSlyZXR1cm5bXTtjb25zdCBuPShmdW5jdGlvbiBvKHQpe2xldCBlPW51bGwsbj1udWxsO2Zvcihjb25zdHtiaW5zOm99b2YgdCl7aWYoIW8ubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHQ9b1tvLmxlbmd0aC0xXSxpPW9bMF0ueCxhPXQueCt0LmR4OyhudWxsPT09ZXx8aTxlKSYmKGU9aSksKG51bGw9PT1ufHxhPm4pJiYobj1hKX1yZXR1cm4gbnVsbD09PWV8fG51bGw9PT1uP251bGw6e2xlZnQ6ZSxyaWdodDpufX0pKHQpO3JldHVybiBuJiZuLmxlZnQ9PT1uLnJpZ2h0JiYobi5yaWdodD0xLjEqbi5yaWdodCsxLG4ubGVmdD1uLmxlZnQvMS4xLTEpLHQubWFwKCh0PT4oe3N0ZXA6dC5zdGVwLHdhbGxUaW1lOnQud2FsbFRpbWUsYmluczpuP2pidCh0LmJpbnMsbixlKTpbXX0pKSl9KShlW25dLm1hcCgodD0+e2NvbnN0e3dhbGxUaW1lOmUsc3RlcDpufT10O3JldHVybnt3YWxsVGltZTplLHN0ZXA6bixiaW5zOnQuYmlucy5tYXAoKHQ9Pih7eDp0Lm1pbixkeDp0Lm1heC10Lm1pbix5OnQuY291bnR9KSkpfX0pKSl9KSkpLHRoaXMuc3RlcHMkPXRoaXMuZGF0YSQucGlwZShWdCgodD0+dC5tYXAoKHQ9PnQuc3RlcCkpKSkpLHRoaXMudmlld1NlbGVjdGVkVGltZSQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KEJ6KSx0aGlzLnN0ZXBzJF0pLnBpcGUoVnQoKChbdCxlXSk9PntpZighdClyZXR1cm4gbnVsbDtsZXQgbj0xLzAsbz0tMS8wO2Zvcihjb25zdCB0IG9mIGUpbj1NYXRoLm1pbih0LG4pLG89TWF0aC5tYXgodCxvKTtyZXR1cm4gSjQoSzQodCxuLG8pLGUpfSkpKSx0aGlzLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KEJ6KSx0aGlzLnZpZXdTZWxlY3RlZFRpbWUkXSkucGlwZShWdCgoKFt0LGVdKT0+dCYmZSYmIWUuY2xpcHBlZCYmbnVsbD09PXQuZW5kJiZ0LnN0YXJ0LnN0ZXAhPT1lLnN0YXJ0U3RlcCkpKSx0aGlzLmxvYWRTdGF0ZSQ9dGhpcy5zdG9yZS5zZWxlY3Qoc3osdGhpcy5jYXJkSWQpLHRoaXMudGFnJD10LnBpcGUoVnQoKHQ9PnQudGFnKSkpLHRoaXMudGl0bGUkPXRoaXMudGFnJC5waXBlKFZ0KCh0PT5YNCh0LHRoaXMuZ3JvdXBOYW1lKSkpKSx0aGlzLnJ1bklkJD10LnBpcGUoVnQoKHQ9PnQucnVuSWQpKSksdGhpcy5pc1Bpbm5lZCQ9dGhpcy5zdG9yZS5zZWxlY3QoX3osdGhpcy5jYXJkSWQpfW9uU2VsZWN0VGltZUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChCQSh7c3RhcnRTdGVwOnQuc3RhcnQuc3RlcCxlbmRTdGVwOnQuZW5kP3QuZW5kLnN0ZXA6dm9pZCAwfSkpfX1mdW5jdGlvbiBoeXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJpbWFnZS1jYXJkIiw2KSxEdSgiZnVsbFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDIpLm9uRnVsbFdpZHRoQ2hhbmdlZChuKX0pKSgicGluU3RhdGVDaGFuZ2VkIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgyKS5vblBpblN0YXRlQ2hhbmdlZCgpfSkpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KDIpO2h1KCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIix0Lmdyb3VwTmFtZSkoInJ1bkNvbG9yU2NhbGUiLHQucnVuQ29sb3JTY2FsZSl9fWZ1bmN0aW9uIGJ5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsInNjYWxhci1jYXJkIiw3KSxEdSgiZnVsbFdpZHRoQ2hhbmdlZCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDIpLm9uRnVsbFdpZHRoQ2hhbmdlZChuKX0pKSgiZnVsbEhlaWdodENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgyKS5vbkZ1bGxIZWlnaHRDaGFuZ2VkKG4pfSkpKCJwaW5TdGF0ZUNoYW5nZWQiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KDIpLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9TnUoMik7aHUoImNhcmRJZCIsdC5jYXJkSWQpKCJncm91cE5hbWUiLHQuZ3JvdXBOYW1lKX19ZnVuY3Rpb24geXl0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiaGlzdG9ncmFtLWNhcmQiLDgpLER1KCJmdWxsV2lkdGhDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoMikub25GdWxsV2lkdGhDaGFuZ2VkKG4pfSkpKCJmdWxsSGVpZ2h0Q2hhbmdlZCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDIpLm9uRnVsbEhlaWdodENoYW5nZWQobil9KSkoInBpblN0YXRlQ2hhbmdlZCIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoMikub25QaW5TdGF0ZUNoYW5nZWQoKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgyKTtodSgiY2FyZElkIix0LmNhcmRJZCkoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpKCJydW5Db2xvclNjYWxlIix0LnJ1bkNvbG9yU2NhbGUpfX1mdW5jdGlvbiBfeXQodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiKSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoMSksa2YoIlBsYWNlaG9sZGVyIGVycm9yIGZvcjogIix0LmNhcmRJZCwiIil9fWZ1bmN0aW9uIEN5dCh0LGUpe2lmKDEmdCYmKHZ1KDAsMSksSG0oMSxoeXQsMSwzLCJpbWFnZS1jYXJkIiwyKSxIbSgyLGJ5dCwxLDIsInNjYWxhci1jYXJkIiwzKSxIbSgzLHl5dCwxLDMsImhpc3RvZ3JhbS1jYXJkIiw0KSxIbSg0LF95dCwyLDEsImRpdiIsNSkseHUoKSksMiZ0KXtjb25zdCB0PU51KCk7aHUoIm5nU3dpdGNoIix0LnBsdWdpblR5cGUpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5JTUFHRVMpLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5TQ0FMQVJTKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuSElTVE9HUkFNUyl9fWd5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z3l0KShmdShpUykpfSxneXQuybVjbXA9c28oe3R5cGU6Z3l0LHNlbGVjdG9yczpbWyJoaXN0b2dyYW0tY2FyZCJdXSxpbnB1dHM6e2NhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLGZ1bGxIZWlnaHRDaGFuZ2VkOiJmdWxsSGVpZ2h0Q2hhbmdlZCIscGluU3RhdGVDaGFuZ2VkOiJwaW5TdGF0ZUNoYW5nZWQifSxkZWNsczoxMSx2YXJzOjMyLGNvbnN0czpbWzMsImxvYWRTdGF0ZSIsInRpdGxlIiwidGFnIiwicnVuSWQiLCJkYXRhIiwibW9kZSIsInhBeGlzVHlwZSIsInJ1bkNvbG9yU2NhbGUiLCJzaG93RnVsbFNpemUiLCJpc1Bpbm5lZCIsImlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCIsInNlbGVjdGVkVGltZSIsIm9uRnVsbFNpemVUb2dnbGUiLCJvblBpbkNsaWNrZWQiLCJvblNlbGVjdFRpbWVDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJoaXN0b2dyYW0tY2FyZC1jb21wb25lbnQiLDApLER1KCJvbkZ1bGxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5waW5TdGF0ZUNoYW5nZWQuZW1pdChlKX0pKSgib25TZWxlY3RUaW1lQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TZWxlY3RUaW1lQ2hhbmdlZChlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksX3koOSwiYXN5bmMiKSxfeSgxMCwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJsb2FkU3RhdGUiLEN5KDEsMTIsbi5sb2FkU3RhdGUkKSkoInRpdGxlIixDeSgyLDE0LG4udGl0bGUkKSkoInRhZyIsQ3koMywxNixuLnRhZyQpKSgicnVuSWQiLEN5KDQsMTgsbi5ydW5JZCQpKSgiZGF0YSIsQ3koNSwyMCxuLmRhdGEkKSkoIm1vZGUiLEN5KDYsMjIsbi5tb2RlJCkpKCJ4QXhpc1R5cGUiLEN5KDcsMjQsbi54QXhpc1R5cGUkKSkoInJ1bkNvbG9yU2NhbGUiLG4ucnVuQ29sb3JTY2FsZSkoInNob3dGdWxsU2l6ZSIsbi5zaG93RnVsbFNpemUpKCJpc1Bpbm5lZCIsQ3koOCwyNixuLmlzUGlubmVkJCkpKCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiLEN5KDksMjgsbi5pc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQkKSkoInNlbGVjdGVkVGltZSIsQ3koMTAsMzAsbi52aWV3U2VsZWN0ZWRUaW1lJCkpfSxkaXJlY3RpdmVzOltmeXRdLHBpcGVzOltWdl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGd5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJoaXN0b2dyYW0tY2FyZCIsdGVtcGxhdGU6J1xuICAgIDxoaXN0b2dyYW0tY2FyZC1jb21wb25lbnRcbiAgICAgIFtsb2FkU3RhdGVdPSJsb2FkU3RhdGUkIHwgYXN5bmMiXG4gICAgICBbdGl0bGVdPSJ0aXRsZSQgfCBhc3luYyJcbiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiXG4gICAgICBbcnVuSWRdPSJydW5JZCQgfCBhc3luYyJcbiAgICAgIFtkYXRhXT0iZGF0YSQgfCBhc3luYyJcbiAgICAgIFttb2RlXT0ibW9kZSQgfCBhc3luYyJcbiAgICAgIFt4QXhpc1R5cGVdPSJ4QXhpc1R5cGUkIHwgYXN5bmMiXG4gICAgICBbcnVuQ29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUiXG4gICAgICBbc2hvd0Z1bGxTaXplXT0ic2hvd0Z1bGxTaXplIlxuICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiXG4gICAgICBbaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkXT0iaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkVGltZV09InZpZXdTZWxlY3RlZFRpbWUkIHwgYXN5bmMiXG4gICAgICAob25GdWxsU2l6ZVRvZ2dsZSk9Im9uRnVsbFNpemVUb2dnbGUoKSJcbiAgICAgIChvblBpbkNsaWNrZWQpPSJwaW5TdGF0ZUNoYW5nZWQuZW1pdCgkZXZlbnQpIlxuICAgICAgKG9uU2VsZWN0VGltZUNoYW5nZWQpPSJvblNlbGVjdFRpbWVDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvaGlzdG9ncmFtLWNhcmQtY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2NhcmRJZDpbe3R5cGU6Ul99XSxncm91cE5hbWU6W3t0eXBlOlJffV0scnVuQ29sb3JTY2FsZTpbe3R5cGU6Ul99XSxmdWxsV2lkdGhDaGFuZ2VkOlt7dHlwZTpFX31dLGZ1bGxIZWlnaHRDaGFuZ2VkOlt7dHlwZTpFX31dLHBpblN0YXRlQ2hhbmdlZDpbe3R5cGU6RV99XX0pO2NsYXNzIE15dHtjb25zdHJ1Y3Rvcigpe3RoaXMuUGx1Z2luVHlwZT1RVCx0aGlzLmZ1bGxXaWR0aENoYW5nZWQ9bmV3IFN5LHRoaXMuZnVsbEhlaWdodENoYW5nZWQ9bmV3IFN5LHRoaXMucGluU3RhdGVDaGFuZ2VkPW5ldyBTeX1vbkZ1bGxXaWR0aENoYW5nZWQodCl7dGhpcy5mdWxsV2lkdGhDaGFuZ2VkLmVtaXQodCl9b25GdWxsSGVpZ2h0Q2hhbmdlZCh0KXt0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkLmVtaXQodCl9b25QaW5TdGF0ZUNoYW5nZWQoKXt0aGlzLnBpblN0YXRlQ2hhbmdlZC5lbWl0KCl9fU15dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TXl0KX0sTXl0Lsm1Y21wPXNvKHt0eXBlOk15dCxzZWxlY3RvcnM6W1siY2FyZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzRXZlclZpc2libGU6ImlzRXZlclZpc2libGUiLGNhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscGx1Z2luVHlwZToicGx1Z2luVHlwZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLGZ1bGxIZWlnaHRDaGFuZ2VkOiJmdWxsSGVpZ2h0Q2hhbmdlZCIscGluU3RhdGVDaGFuZ2VkOiJwaW5TdGF0ZUNoYW5nZWQifSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1szLCJuZ1N3aXRjaCIsNCwibmdJZiJdLFszLCJuZ1N3aXRjaCJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCIsNCwibmdTd2l0Y2hDYXNlIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJmdWxsSGVpZ2h0Q2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCIsNCwibmdTd2l0Y2hDYXNlIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLDQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1N3aXRjaERlZmF1bHQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmSG0oMCxDeXQsNSw0LCJuZy1jb250YWluZXIiLDApLDImZSYmaHUoIm5nSWYiLG4uaXNFdmVyVmlzaWJsZSl9LGRpcmVjdGl2ZXM6W1B2LER2LFJ2LEV2LEM2LFVidCxneXRdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTXl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImNhcmQtdmlldy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJjYXJkX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse2lzRXZlclZpc2libGU6W3t0eXBlOlJffV0sY2FyZElkOlt7dHlwZTpSX31dLGdyb3VwTmFtZTpbe3R5cGU6Ul99XSxwbHVnaW5UeXBlOlt7dHlwZTpSX31dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOlJffV0sZnVsbFdpZHRoQ2hhbmdlZDpbe3R5cGU6RV99XSxmdWxsSGVpZ2h0Q2hhbmdlZDpbe3R5cGU6RV99XSxwaW5TdGF0ZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyB2eXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuaXNFdmVyVmlzaWJsZT0hMSx0aGlzLnNob3dGdWxsV2lkdGg9ITEsdGhpcy5zaG93RnVsbEhlaWdodD0hMSx0aGlzLnJ1bkNvbG9yU2NhbGUkPXRoaXMuc3RvcmUuc2VsZWN0KFJJKS5waXBlKFllKDM1MCx2b2lkIDAse2xlYWRpbmc6ITAsdHJhaWxpbmc6ITB9KSxWdCgodD0+ZT0+dC5oYXNPd25Qcm9wZXJ0eShlKT90W2VdOiIjZmZmIikpKX1vblZpc2liaWxpdHlDaGFuZ2Uoe3Zpc2libGU6dH0pe3RoaXMuaXNFdmVyVmlzaWJsZT10aGlzLmlzRXZlclZpc2libGV8fHR9b25GdWxsV2lkdGhDaGFuZ2VkKHQpe3RoaXMuc2hvd0Z1bGxXaWR0aD10fW9uRnVsbEhlaWdodENoYW5nZWQodCl7dGhpcy5zaG93RnVsbEhlaWdodD10fW9uUGluU3RhdGVDaGFuZ2VkKCl7dGhpcy5zdG9yZS5zZWxlY3QoX3osdGhpcy5jYXJkSWQpLnBpcGUodmUoMSkscWUodGhpcy5zdG9yZS5zZWxlY3QoTXopKSkuc3Vic2NyaWJlKCgoW3QsZV0pPT57dGhpcy5zdG9yZS5kaXNwYXRjaChIQSh7Y2FyZElkOnRoaXMuY2FyZElkLGNhbkNyZWF0ZU5ld1BpbnM6ZSx3YXNQaW5uZWQ6dH0pKX0pKX19ZnVuY3Rpb24geHl0KHQsZSl7MSZ0JiZPdSgwKX1mdW5jdGlvbiBPeXQodCxlKXtpZigxJnQmJk11KDAsImNhcmQtdmlldyIsNSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoMik7aHUoImNhcmRJZCIsdC5jYXJkSWQpKCJncm91cE5hbWUiLG4uZ3JvdXBOYW1lKSgicGx1Z2luVHlwZSIsdC5wbHVnaW4pKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKSgiY2FyZExhenlMb2FkZXIiLHQuY2FyZElkKX19ZnVuY3Rpb24gUHl0KHQsZSl7MSZ0JiZPdSgwKX12eXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHZ5dCkoZnUoaVMpKX0sdnl0Lsm1Y21wPXNvKHt0eXBlOnZ5dCxzZWxlY3RvcnM6W1siY2FyZC12aWV3Il1dLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJmdWxsLXdpZHRoIixuLnNob3dGdWxsV2lkdGgpKCJmdWxsLWhlaWdodCIsbi5zaG93RnVsbEhlaWdodCl9LGlucHV0czp7Y2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixwbHVnaW5UeXBlOiJwbHVnaW5UeXBlIn0sZGVjbHM6Mix2YXJzOjcsY29uc3RzOltbIm9ic2VydmVJbnRlcnNlY3Rpb24iLCIiLCJpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiIsIjIwMHB4IDIwMHB4IDIwMHB4IDIwMHB4IiwzLCJpc0V2ZXJWaXNpYmxlIiwiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLCJvblZpc2liaWxpdHlDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImNhcmQtdmlldy1jb21wb25lbnQiLDApLER1KCJmdWxsV2lkdGhDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZ1bGxXaWR0aENoYW5nZWQoZSl9KSkoImZ1bGxIZWlnaHRDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZ1bGxIZWlnaHRDaGFuZ2VkKGUpfSkpKCJwaW5TdGF0ZUNoYW5nZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QaW5TdGF0ZUNoYW5nZWQoKX0pKSgib25WaXNpYmlsaXR5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZpc2liaWxpdHlDaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJpc0V2ZXJWaXNpYmxlIixuLmlzRXZlclZpc2libGUpKCJjYXJkSWQiLG4uY2FyZElkKSgiZ3JvdXBOYW1lIixuLmdyb3VwTmFtZSkoInBsdWdpblR5cGUiLG4ucGx1Z2luVHlwZSkoInJ1bkNvbG9yU2NhbGUiLEN5KDEsNSxuLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W015dCxCYnRdLHBpcGVzOltWdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZ5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJjYXJkLXZpZXciLHRlbXBsYXRlOidcbiAgICA8Y2FyZC12aWV3LWNvbXBvbmVudFxuICAgICAgW2lzRXZlclZpc2libGVdPSJpc0V2ZXJWaXNpYmxlIlxuICAgICAgW2NhcmRJZF09ImNhcmRJZCJcbiAgICAgIFtncm91cE5hbWVdPSJncm91cE5hbWUiXG4gICAgICBbcGx1Z2luVHlwZV09InBsdWdpblR5cGUiXG4gICAgICBbcnVuQ29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUkIHwgYXN5bmMiXG4gICAgICAoZnVsbFdpZHRoQ2hhbmdlZCk9Im9uRnVsbFdpZHRoQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKGZ1bGxIZWlnaHRDaGFuZ2VkKT0ib25GdWxsSGVpZ2h0Q2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKHBpblN0YXRlQ2hhbmdlZCk9Im9uUGluU3RhdGVDaGFuZ2VkKCkiXG4gICAgICBvYnNlcnZlSW50ZXJzZWN0aW9uXG4gICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbj0iMjAwcHggMjAwcHggMjAwcHggMjAwcHgiXG4gICAgICAob25WaXNpYmlsaXR5Q2hhbmdlKT0ib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudCkiXG4gICAgPlxuICAgIDwvY2FyZC12aWV3LWNvbXBvbmVudD5cbiAgJyxzdHlsZVVybHM6WyJjYXJkX3ZpZXdfY29udGFpbmVyLmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2NhcmRJZDpbe3R5cGU6Ul99XSxncm91cE5hbWU6W3t0eXBlOlJffV0scGx1Z2luVHlwZTpbe3R5cGU6Ul99XSxzaG93RnVsbFdpZHRoOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3MuZnVsbC13aWR0aCJdfV0sc2hvd0Z1bGxIZWlnaHQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy5mdWxsLWhlaWdodCJdfV19KTtjb25zdCB3eXQ9ZnVuY3Rpb24oKXtyZXR1cm57aXNCb3R0b21Db250cm9sOiExfX0sa3l0PWZ1bmN0aW9uKCl7cmV0dXJue2lzQm90dG9tQ29udHJvbDohMH19O2Z1bmN0aW9uIFN5dCh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIpLEhtKDEseHl0LDEsMCwibmctY29udGFpbmVyIiwyKSxfdSgyLCJkaXYiLDMpLEhtKDMsT3l0LDEsNSwiY2FyZC12aWV3Iiw0KSxDdSgpLEhtKDQsUHl0LDEsMCwibmctY29udGFpbmVyIiwyKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKSxlPUZtKDIpO0RjKDEpLGh1KCJuZ1RlbXBsYXRlT3V0bGV0IixlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLG95KDgsd3l0KSksRGMoMSksbGYoImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsdC5ncmlkVGVtcGxhdGVDb2x1bW4pLERjKDEpLGh1KCJuZ0Zvck9mIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeUNhcmRzKSxEYygxKSxodSgibmdUZW1wbGF0ZU91dGxldCIsZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixveSg5LGt5dCkpfX1mdW5jdGlvbiBEeXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJidXR0b24iLDExKSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKG4pe1BpKHQpO2NvbnN0IG89TnUoMyk7cmV0dXJuIG8uaGFuZGxlUGFnZUNoYW5nZShvLnBhZ2VJbmRleC0xLG4udGFyZ2V0KX0pKSxQZigxLCIgUHJldmlvdXMgIiksQ3UoKX1pZigyJnQpe2h1KCJkaXNhYmxlZCIsMD09PU51KDMpLnBhZ2VJbmRleCl9fWZ1bmN0aW9uIFJ5dCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsInNwYW4iLDE0KSxfdSgxLCJpbnB1dCIsMTUpLER1KCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KDQpLm9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKG4pfSkpKCJjaGFuZ2UiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSg0KS5vblBhZ2luYXRpb25JbnB1dENoYW5nZShuKX0pKSxDdSgpLFBmKDIpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KDQpO0RjKDEpLGh1KCJ2YWx1ZSIsdC5wYWdlSW5kZXgrMSkoIm1heCIsdC5udW1QYWdlcyksRGMoMSksa2YoIiBvZiAiLHQubnVtUGFnZXMsIiIpfX1mdW5jdGlvbiBFeXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJzcGFuIiksSG0oMSxSeXQsMywzLCJzcGFuIiwxMiksX3UoMiwiYnV0dG9uIiwxMyksRHUoImNsaWNrIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtjb25zdCBvPU51KDMpO3JldHVybiBvLmhhbmRsZVBhZ2VDaGFuZ2Uoby5wYWdlSW5kZXgrMSxuLnRhcmdldCl9KSksUGYoMywiIE5leHQgIiksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgyKS5pc0JvdHRvbUNvbnRyb2wsZT1OdSgpO0RjKDEpLGh1KCJuZ0lmIixlLnNob3dQYWdpbmF0aW9uSW5wdXQodCkpLERjKDEpLGh1KCJkaXNhYmxlZCIsZS5wYWdlSW5kZXgrMT49ZS5udW1QYWdlcyl9fWZ1bmN0aW9uIEF5dCh0LGUpe2lmKDEmdCYmKF91KDAsImRpdiIsNyksX3UoMSwic3BhbiIsOCksSG0oMixEeXQsMiwxLCJidXR0b24iLDkpLEN1KCksX3UoMywic3BhbiIsMTApLEhtKDQsRXl0LDQsMiwic3BhbiIsMCksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoMiksaHUoIm5nSWYiLHQuc2hvd1BhZ2luYXRpb25Db250cm9scyksRGMoMiksaHUoIm5nSWYiLHQuc2hvd1BhZ2luYXRpb25Db250cm9scyl9fWZ1bmN0aW9uIFR5dCh0LGUpe2lmKDEmdCYmSG0oMCxBeXQsNSwyLCJkaXYiLDYpLDImdCl7aHUoIm5nSWYiLE51KCkuc2hvd1BhZ2luYXRpb25Db250cm9scyl9fWNsYXNzIE55dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNka1Njcm9sbGFibGU9dCx0aGlzLlBsdWdpblR5cGU9UVQsdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49IiIsdGhpcy5wYWdlSW5kZXhDaGFuZ2VkPW5ldyBTeX1uZ09uSW5pdCgpe3RoaXMuaXNDYXJkV2lkdGhWYWxpZCh0aGlzLmNhcmRNaW5XaWR0aCkmJih0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbj1gcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KCR7dGhpcy5jYXJkTWluV2lkdGh9cHgsIGF1dG8pKWApfW5nT25DaGFuZ2VzKHQpe2lmKHQuY2FyZE1pbldpZHRoKXtjb25zdCBlPXQuY2FyZE1pbldpZHRoLmN1cnJlbnRWYWx1ZTt0aGlzLmlzQ2FyZFdpZHRoVmFsaWQoZSk/KHRoaXMuY2FyZE1pbldpZHRoPWUsdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49YHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgke3RoaXMuY2FyZE1pbldpZHRofXB4LCBhdXRvKSlgKTp0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbj0iIn19aXNDYXJkV2lkdGhWYWxpZCh0KXtyZXR1cm4gdCYmdD49MzM1JiZ0PD03MzV9c2hvd1BhZ2luYXRpb25JbnB1dCh0KXtyZXR1cm4gdH1oYW5kbGVQYWdlQ2hhbmdlKHQsZSl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtzZXRUaW1lb3V0KCgoKT0+e3RoaXMuc2Nyb2xsVG9LZWVwVGFyZ2V0UG9zaXRpb24oZSxuKX0pLDApLHRoaXMucGFnZUluZGV4Q2hhbmdlZC5lbWl0KHQpfXNjcm9sbFRvS2VlcFRhcmdldFBvc2l0aW9uKHQsZSl7dmFyIG47Y29uc3Qgbz1udWxsPT09KG49dGhpcy5jZGtTY3JvbGxhYmxlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudDtvJiZvLnNjcm9sbFRvKDAsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtZStvLnNjcm9sbFRvcCl9dHJhY2tCeUNhcmRzKHQsZSl7cmV0dXJuIGUuY2FyZElkfW9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoImlucHV0Ij09PXQudHlwZSYmIiI9PT1lLnZhbHVlKXJldHVybjtjb25zdCBuPU51bWJlcihlLnZhbHVlKS0xLG89TWF0aC5taW4oTWF0aC5tYXgoMCxuKSx0aGlzLm51bVBhZ2VzLTEpO2UudmFsdWUhPT1TdHJpbmcobysxKSYmKGUudmFsdWU9U3RyaW5nKG8rMSkpLHRoaXMuaGFuZGxlUGFnZUNoYW5nZShvLGUpfX1OeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE55dCkoZnUoc0IsOCkpfSxOeXQuybVjbXA9c28oe3R5cGU6Tnl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQiXV0saW5wdXRzOntpc0dyb3VwRXhwYW5kZWQ6ImlzR3JvdXBFeHBhbmRlZCIscGFnZUluZGV4OiJwYWdlSW5kZXgiLG51bVBhZ2VzOiJudW1QYWdlcyIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE1pbldpZHRoOiJjYXJkTWluV2lkdGgiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIixzaG93UGFnaW5hdGlvbkNvbnRyb2xzOiJzaG93UGFnaW5hdGlvbkNvbnRyb2xzIn0sb3V0cHV0czp7cGFnZUluZGV4Q2hhbmdlZDoicGFnZUluZGV4Q2hhbmdlZCJ9LGZlYXR1cmVzOltxb10sZGVjbHM6Myx2YXJzOjEsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiUHJldmlvdXMgcGFnZSIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgc2V0cyBhIGdyb3VwIHRvIHRoZSBwcmV2aW91cyBwYWdlLuKQnzU3NWU3ODJmZDI3ZjJlZTcwYTAzNGE3NzVlZmU5YWQxNjI0NzIyNTDikJ8zNjI5OTYwNTQ0ODc1MzYwMDQ2OlByZXZpb3VzIHBhZ2VgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJOZXh0IHBhZ2UiKX1lbHNlIGU9JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHNldHMgYSBncm91cCB0byB0aGUgbmV4dCBwYWdlLuKQn2NlM2NlZmIxY2QwMDk5YWE1MDAzZGRhMTZlYzllYjIxZmQ4YmE3ODnikJ8zMzM3MzAxNjk0MjEwMjg3NTk1Ok5leHQgcGFnZWA7cmV0dXJuW1s0LCJuZ0lmIl0sWyJncm91cENvbnRyb2xzIiwiIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJjYXJkLWdyaWQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsImNhcmRPYnNlcnZlciIsImNhcmRMYXp5TG9hZGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsImNhcmRPYnNlcnZlciIsImNhcmRMYXp5TG9hZGVyIl0sWyJjbGFzcyIsImdyb3VwLWNvbnRyb2xzIiw0LCJuZ0lmIl0sWzEsImdyb3VwLWNvbnRyb2xzIl0sWzEsInByZXYtY29udGFpbmVyIl0sWyJjbGFzcyIsInByZXYgcGFnaW5hdGlvbi1idXR0b24iLCJtYXQtYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImlucHV0LWFuZC1uZXh0LWNvbnRhaW5lciJdLFsibWF0LWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicHJldiIsInBhZ2luYXRpb24tYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJjbGFzcyIsInBhZ2luYXRpb24taW5wdXQiLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixlLDEsIm5leHQiLCJwYWdpbmF0aW9uLWJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJwYWdpbmF0aW9uLWlucHV0Il0sWyJ0eXBlIiwibnVtYmVyIiwibWluIiwiMSIsMywidmFsdWUiLCJtYXgiLCJpbnB1dCIsImNoYW5nZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEhtKDAsU3l0LDUsMTAsImRpdiIsMCksSG0oMSxUeXQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxLHF5KSksMiZlJiZodSgibmdJZiIsbi5pc0dyb3VwRXhwYW5kZWQpfSxkaXJlY3RpdmVzOltQdixJdix4dix2eXQsQTQsV0xdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46Y29udGVudH0uY2FyZC1ncmlkW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgzMzVweCwgYXV0bykpO2dhcDoxNnB4O3BhZGRpbmc6MTZweH1jYXJkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29udGFpbjpzdHJpY3Q7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDozMjBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBjYXJkLXZpZXdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBjYXJkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1jYXJkLXZpZXcuZnVsbC13aWR0aFtfbmdjb250ZW50LSVDT01QJV17Y29udGFpbjpsYXlvdXQgcGFpbnQ7Z3JpZC1jb2x1bW4tc3RhcnQ6MTtncmlkLWNvbHVtbi1lbmQ6LTF9Y2FyZC12aWV3LmZ1bGwtaGVpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4MHB4fS5ncm91cC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtkaXNwbGF5OmdyaWQ7YWxpZ24taXRlbXM6Y2VudGVyO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxNnB4O3BhZGRpbmc6MCAxNnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXTpmaXJzdC1vZi10eXBle3BhZGRpbmctdG9wOjE2cHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LW9mLXR5cGV7cGFkZGluZy1ib3R0b206MTZweH0ucHJldi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2p1c3RpZnktc2VsZjpmbGV4LXN0YXJ0fS5pbnB1dC1hbmQtbmV4dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2p1c3RpZnktc2VsZjpmbGV4LWVuZH0ucGFnaW5hdGlvbi1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjE2cHh9LnBhZ2luYXRpb24taW5wdXRbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdH0ucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LnBhZ2luYXRpb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZHtjb2xvcjojNzU3NTc1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6IzYxNjE2MX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTnl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vY2FyZF9ncmlkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2NhcmRfZ3JpZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNCLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19XX0pLHtpc0dyb3VwRXhwYW5kZWQ6W3t0eXBlOlJffV0scGFnZUluZGV4Olt7dHlwZTpSX31dLG51bVBhZ2VzOlt7dHlwZTpSX31dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOlJffV0sY2FyZE1pbldpZHRoOlt7dHlwZTpSX31dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XSxzaG93UGFnaW5hdGlvbkNvbnRyb2xzOlt7dHlwZTpSX31dLHBhZ2VJbmRleENoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyB6eXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZ3JvdXBOYW1lPW51bGwsdGhpcy5ncm91cE5hbWUkPW5ldyBVKG51bGwpLHRoaXMucGFnZUluZGV4JD1uZXcgVSgwKSx0aGlzLml0ZW1zJD1uZXcgVShbXSksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCLHRoaXMubnVtUGFnZXMkPUt0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChQSSldKS5waXBlKFZ0KCgoW3QsZV0pPT5NYXRoLmNlaWwodC5sZW5ndGgvZSkpKSksdGhpcy5pc0dyb3VwRXhwYW5kZWQkPXRoaXMuZ3JvdXBOYW1lJC5waXBlKFZlKCh0PT5udWxsIT09dD90aGlzLnN0b3JlLnNlbGVjdCh6eix0KTp6dCghMCkpKSksdGhpcy5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJD10aGlzLm51bVBhZ2VzJC5waXBlKFZ0KCh0PT50PjEpKSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JD1LdChbdGhpcy5wYWdlSW5kZXgkLHRoaXMubnVtUGFnZXMkXSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFdlKCgoW3QsZV0pPT57MCE9PWUmJih0Pj1lP3RoaXMucGFnZUluZGV4JC5uZXh0KGUtMSk6dDwwJiZ0aGlzLnBhZ2VJbmRleCQubmV4dCgwKSl9KSksVnQoKChbdCxlXSk9Pk1hdGgubWluKE1hdGgubWF4KHQsMCksZS0xKSkpLEZlKDEpKSx0aGlzLnBhZ2VkSXRlbXMkPUt0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChQSSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JCx0aGlzLmlzR3JvdXBFeHBhbmRlZCRdKS5waXBlKFZ0KCgoW3QsZSxuLG9dKT0+dC5zbGljZShlKm4sZSpuKyhvP2U6MCkpKSkpLHRoaXMuY2FyZE1pbldpZHRoJD1LdChbdGhpcy5zdG9yZS5zZWxlY3QoT3opLHRoaXMuc3RvcmUuc2VsZWN0KEtEKV0pLnBpcGUoVnQoKChbdCxlXSk9PmU/dDpudWxsKSkpfW5nT25DaGFuZ2VzKHQpe3QuY2FyZElkc1dpdGhNZXRhZGF0YSYmdGhpcy5pdGVtcyQubmV4dCh0aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEpLHQuZ3JvdXBOYW1lJiZ0aGlzLmdyb3VwTmFtZSQubmV4dCh0aGlzLmdyb3VwTmFtZSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW9uUGFnZUluZGV4Q2hhbmdlZCh0KXt0aGlzLnBhZ2VJbmRleCQubmV4dCh0KX19ZnVuY3Rpb24gSXl0KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIsOCksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PU51KCk7RGMoMSksa2YoIiIsdC5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCwiIGNhcmRzIil9fWZ1bmN0aW9uIEh5dCh0LGUpe2lmKDEmdCYmKF91KDAsInNwYW4iLDkpLFBmKDEsIk5ldyBjYXJkIHBpbm5lZCIpLEN1KCkpLDImdCl7eW0oImRhdGEtaWQiLGUuJGltcGxpY2l0KX19ZnVuY3Rpb24gRnl0KHQsZSl7aWYoMSZ0JiZNdSgwLCJtZXRyaWNzLWNhcmQtZ3JpZCIsMTApLDImdCl7Y29uc3QgdD1OdSgpO2h1KCJjYXJkSWRzV2l0aE1ldGFkYXRhIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEpKCJjYXJkT2JzZXJ2ZXIiLHQuY2FyZE9ic2VydmVyKX19ZnVuY3Rpb24gTHl0KHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwxMSksUGYoMSwiUGluIGNhcmRzIGZvciBhIHF1aWNrIHZpZXcgYW5kIGNvbXBhcmlzb24iKSxDdSgpKX16eXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHp5dCkoZnUoaVMpKX0senl0Lsm1Y21wPXNvKHt0eXBlOnp5dCxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyaWQiXV0saW5wdXRzOntncm91cE5hbWU6Imdyb3VwTmFtZSIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxmZWF0dXJlczpbcW9dLGRlY2xzOjcsdmFyczoxOSxjb25zdHM6W1szLCJpc0dyb3VwRXhwYW5kZWQiLCJwYWdlSW5kZXgiLCJudW1QYWdlcyIsInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE1pbldpZHRoIiwiY2FyZE9ic2VydmVyIiwicGFnZUluZGV4Q2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwibWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50IiwwKSxEdSgicGFnZUluZGV4Q2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QYWdlSW5kZXhDaGFuZ2VkKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLF95KDQsImFzeW5jIiksX3koNSwiYXN5bmMiKSxfeSg2LCJhc3luYyIpLEN1KCkpLDImZSYmaHUoImlzR3JvdXBFeHBhbmRlZCIsQ3koMSw3LG4uaXNHcm91cEV4cGFuZGVkJCkpKCJwYWdlSW5kZXgiLEN5KDIsOSxuLm5vcm1hbGl6ZWRQYWdlSW5kZXgkKSkoIm51bVBhZ2VzIixDeSgzLDExLG4ubnVtUGFnZXMkKSkoInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLEN5KDQsMTMsbi5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixDeSg1LDE1LG4ucGFnZWRJdGVtcyQpKSgiY2FyZE1pbldpZHRoIixDeSg2LDE3LG4uY2FyZE1pbldpZHRoJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbTnl0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoenl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncmlkIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudFxuICAgICAgW2lzR3JvdXBFeHBhbmRlZF09ImlzR3JvdXBFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtwYWdlSW5kZXhdPSJub3JtYWxpemVkUGFnZUluZGV4JCB8IGFzeW5jIlxuICAgICAgW251bVBhZ2VzXT0ibnVtUGFnZXMkIHwgYXN5bmMiXG4gICAgICBbc2hvd1BhZ2luYXRpb25Db250cm9sc109InNob3dQYWdpbmF0aW9uQ29udHJvbHMkIHwgYXN5bmMiXG4gICAgICBbY2FyZElkc1dpdGhNZXRhZGF0YV09InBhZ2VkSXRlbXMkIHwgYXN5bmMiXG4gICAgICBbY2FyZE1pbldpZHRoXT0iY2FyZE1pbldpZHRoJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICAgIChwYWdlSW5kZXhDaGFuZ2VkKT0ib25QYWdlSW5kZXhDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvbWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2dyb3VwTmFtZTpbe3R5cGU6Ul99XSxjYXJkSWRzV2l0aE1ldGFkYXRhOlt7dHlwZTpSX31dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XX0pO2NsYXNzIEJ5dHt9Qnl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCeXQpfSxCeXQuybVjbXA9c28oe3R5cGU6Qnl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIixjYXJkSWRzV2l0aE1ldGFkYXRhOiJjYXJkSWRzV2l0aE1ldGFkYXRhIixuZXdDYXJkUGlubmVkSWRzOiJuZXdDYXJkUGlubmVkSWRzIn0sZGVjbHM6MTAsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbInN2Z0ljb24iLCJrZWVwXzI0cHgiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5ldy1jYXJkLXBpbm5lZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiZW1wdHlQaW5uZWRWaWV3IiwiIl0sWzEsImdyb3VwLWNhcmQtY291bnQiXSxbMSwibmV3LWNhcmQtcGlubmVkIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiXSxbMSwiZW1wdHktbWVzc2FnZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiZGl2IiwwKSxNdSgxLCJtYXQtaWNvbiIsMSksX3UoMiwic3BhbiIsMiksX3UoMywic3BhbiIsMyksUGYoNCwiUGlubmVkIiksQ3UoKSxIbSg1LEl5dCwyLDEsInNwYW4iLDQpLEhtKDYsSHl0LDIsMSwic3BhbiIsNSksQ3UoKSxDdSgpLEhtKDcsRnl0LDEsMiwibWV0cmljcy1jYXJkLWdyaWQiLDYpLEhtKDgsTHl0LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNyxxeSkpLDImZSl7Y29uc3QgdD1GbSg5KTtEYyg1KSxodSgibmdJZiIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aD4xKSxEYygxKSxodSgibmdGb3JPZiIsbi5uZXdDYXJkUGlubmVkSWRzKSxEYygxKSxodSgibmdJZiIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W0VxLFB2LHh2LHp5dF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Lmdyb3VwLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtnYXA6NnB4fS5ncm91cC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo0MDA7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZW1wdHktbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTNweDtmb250LXN0eWxlOml0YWxpYztwYWRkaW5nOjE2cHg7dGV4dC1hbGlnbjpjZW50ZXJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZW1wdHktbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Lm5ldy1jYXJkLXBpbm5lZFtfbmdjb250ZW50LSVDT01QJV17YW5pbWF0aW9uOnBpbm5lZC12aWV3LWZhZGUtb3V0IDNzIGxpbmVhcjtiYWNrZ3JvdW5kOiNmNDQzMzY7Ym9yZGVyLXJhZGl1czo1cHg7Y29sb3I6I2ZmZjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTNweDtvcGFjaXR5OjA7cGFkZGluZzozcHggNXB4fUBrZXlmcmFtZXMgcGlubmVkLXZpZXctZmFkZS1vdXR7ZnJvbXtvcGFjaXR5OjF9NjYle29wYWNpdHk6Ljk5fXRve29wYWNpdHk6MH19J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEJ5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXYgY2xhc3M9Imdyb3VwLXRvb2xiYXIiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249ImtlZXBfMjRweCI+PC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPSJncm91cC10ZXh0Ij5cbiAgICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRpdGxlIiBhcmlhLXJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiXG4gICAgICAgICAgPlBpbm5lZDwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPSJjYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCA+IDEiIGNsYXNzPSJncm91cC1jYXJkLWNvdW50IlxuICAgICAgICAgID57eyBjYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCB9fSBjYXJkczwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nRm9yPSJsZXQgaWQgb2YgbmV3Q2FyZFBpbm5lZElkcyJcbiAgICAgICAgICBbYXR0ci5kYXRhLWlkXT0iaWQiXG4gICAgICAgICAgY2xhc3M9Im5ldy1jYXJkLXBpbm5lZCJcbiAgICAgICAgICA+TmV3IGNhcmQgcGlubmVkPC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bWV0cmljcy1jYXJkLWdyaWRcbiAgICAgICpuZ0lmPSJjYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aDsgZWxzZSBlbXB0eVBpbm5lZFZpZXciXG4gICAgICBbY2FyZElkc1dpdGhNZXRhZGF0YV09ImNhcmRJZHNXaXRoTWV0YWRhdGEiXG4gICAgICBbY2FyZE9ic2VydmVyXT0iY2FyZE9ic2VydmVyIlxuICAgID48L21ldHJpY3MtY2FyZC1ncmlkPlxuICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlQaW5uZWRWaWV3PlxuICAgICAgPGRpdiBjbGFzcz0iZW1wdHktbWVzc2FnZSI+UGluIGNhcmRzIGZvciBhIHF1aWNrIHZpZXcgYW5kIGNvbXBhcmlzb248L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAnLHN0eWxlVXJsczpbInBpbm5lZF92aWV3X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtjYXJkT2JzZXJ2ZXI6W3t0eXBlOlJffV0sY2FyZElkc1dpdGhNZXRhZGF0YTpbe3R5cGU6Ul99XSxuZXdDYXJkUGlubmVkSWRzOlt7dHlwZTpSX31dfSk7Y2xhc3MgVnl0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEkPXRoaXMuc3RvcmUuc2VsZWN0KHl6KS5waXBlKEJlKFtdKSksdGhpcy5uZXdDYXJkUGlubmVkSWRzJD10aGlzLnN0b3JlLnNlbGVjdCh5eikucGlwZShMZSgxKSxWdCgodD0+dC5tYXAoKHQ9PnQuY2FyZElkKSkpKSxOZSgpLFZ0KCgoW3QsZV0pPT57Y29uc3Qgbj1uZXcgU2V0KHQpLG89bmV3IFNldChlKTtmb3IoY29uc3QgdCBvZiBvKWlmKCFuLmhhcyh0KSlyZXR1cm4gRGF0ZS5ub3coKTtyZXR1cm4gbnVsbH0pKSxCZShudWxsKSxOZSgpLFZ0KCgoW3QsZV0pPT5udWxsPT09dCYmbnVsbD09PWU/bnVsbDpudWxsPT09ZT9bdF06W2VdKSksZmUoKHQ9Pm51bGwhPT10KSksVnQoKHQ9Plt0WzBdXSkpKX19Vnl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWeXQpKGZ1KGlTKSl9LFZ5dC7JtWNtcD1zbyh7dHlwZTpWeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtcGlubmVkLXZpZXciXV0saW5wdXRzOntjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjMsdmFyczo3LGNvbnN0czpbWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJuZXdDYXJkUGlubmVkSWRzIiwiY2FyZE9ic2VydmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihNdSgwLCJtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpKSwyJmUmJmh1KCJjYXJkSWRzV2l0aE1ldGFkYXRhIixDeSgxLDMsbi5jYXJkSWRzV2l0aE1ldGFkYXRhJCkpKCJuZXdDYXJkUGlubmVkSWRzIixDeSgyLDUsbi5uZXdDYXJkUGlubmVkSWRzJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbQnl0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVnl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtcGlubmVkLXZpZXciLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1waW5uZWQtdmlldy1jb21wb25lbnRcbiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iY2FyZElkc1dpdGhNZXRhZGF0YSQgfCBhc3luYyJcbiAgICAgIFtuZXdDYXJkUGlubmVkSWRzXT0ibmV3Q2FyZFBpbm5lZElkcyQgfCBhc3luYyJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1waW5uZWQtdmlldy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7Y2FyZE9ic2VydmVyOlt7dHlwZTpSX31dfSk7Y29uc3QgVXl0PWJTKHV6LERJLCgodCxlKT0+dC5maWx0ZXIoKHQ9PiFhTih0LnBsdWdpbil8fEJvb2xlYW4oZSYmZS5nZXQodC5ydW5JZCkpKSkpKSxqeXQ9YlMoVXl0LCh0PT50LnNvcnQoKCh0LGUpPT5hMCh0LnRhZyxlLnRhZykpKSkpO2Z1bmN0aW9uIFd5dCh0LGUpe2lmKDEmdCYmKF91KDAsInNwYW4iLDcpLFBmKDEpLF95KDIsIm51bWJlciIpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGtmKCIiLEN5KDIsMSx0Lm51bWJlck9mQ2FyZHMpLCIgY2FyZHMiKX19ZnVuY3Rpb24gR3l0KHQsZSl7MSZ0JiZNdSgwLCJtYXQtaWNvbiIsOCl9ZnVuY3Rpb24gWXl0KHQsZSl7MSZ0JiZNdSgwLCJtYXQtaWNvbiIsOSl9Y2xhc3MgcXl0e2NvbnN0cnVjdG9yKCl7dGhpcy5ncm91cEV4cGFuc2lvblRvZ2dsZWQ9bmV3IFN5fX1xeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHF5dCl9LHF5dC7JtWNtcD1zbyh7dHlwZTpxeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyLWNvbXBvbmVudCJdXSxpbnB1dHM6e2dyb3VwTmFtZToiZ3JvdXBOYW1lIixudW1iZXJPZkNhcmRzOiJudW1iZXJPZkNhcmRzIixpc0dyb3VwRXhwYW5kZWQ6ImlzR3JvdXBFeHBhbmRlZCJ9LG91dHB1dHM6e2dyb3VwRXhwYW5zaW9uVG9nZ2xlZDoiZ3JvdXBFeHBhbnNpb25Ub2dnbGVkIn0sZGVjbHM6OSx2YXJzOjUsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkV4cGFuZCBncm91cCIpfWVsc2UgdD0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgYWxsb3dzIHVzZXIgdG8gZXhwYW5kIGEgdGFnIGdyb3VwLuKQn2ZmYWExMTQ3MWI4NzhhNmRmZmUyZTY4YzZmMzcwNjRhOWUwNzQ4NTPikJ81Mzg2MDU0MzI1Mjc0Nzc5MjU4OkV4cGFuZCBncm91cGA7cmV0dXJuW1siYXJpYS1sYWJlbCIsdCwxLCJncm91cC10b29sYmFyIiwzLCJjbGljayJdLFsxLCJncm91cC10aXRsZS13cmFwcGVyIl0sWyJhcmlhLXJvbGUiLCJoZWFkaW5nIiwiYXJpYS1sZXZlbCIsIjMiLDEsImdyb3VwLXRpdGxlIiwzLCJ0aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWzEsImV4cGFuZC1ncm91cC1pY29uIl0sWyJzdmdJY29uIiwiZXhwYW5kX2xlc3NfMjRweCIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJleHBhbmRNb3JlIiwiIl0sWzEsImdyb3VwLWNhcmQtY291bnQiXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4Il0sWyJzdmdJY29uIiwiZXhwYW5kX21vcmVfMjRweCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKF91KDAsImJ1dHRvbiIsMCksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmdyb3VwRXhwYW5zaW9uVG9nZ2xlZC5lbWl0KCl9KSksX3UoMSwic3BhbiIsMSksX3UoMiwic3BhbiIsMiksUGYoMyksQ3UoKSxIbSg0LFd5dCwzLDMsInNwYW4iLDMpLEN1KCksX3UoNSwic3BhbiIsNCksSG0oNixHeXQsMSwwLCJtYXQtaWNvbiIsNSksSG0oNyxZeXQsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LHF5KSxDdSgpLEN1KCkpLDImZSl7Y29uc3QgdD1GbSg4KTtEYygyKSxGdSgidGl0bGUiLG4uZ3JvdXBOYW1lKSxEYygxKSx3ZihuLmdyb3VwTmFtZSksRGMoMSksaHUoIm5nSWYiLG4ubnVtYmVyT2ZDYXJkcz4xKSxEYygyKSxodSgibmdJZiIsbi5pc0dyb3VwRXhwYW5kZWQpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOltQdixFcV0scGlwZXM6WyR2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4Om5vbmU7aGVpZ2h0OjQycHg7bWFyZ2luLWJvdHRvbTotMXB4O3BhZGRpbmc6MCAxNnB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjE7Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgwLDAsMCwuMTUpfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMjU1LDI1NSwyNTUsLjE1KX1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7Y29sb3I6IzIxMjEyMTt0b3A6LTFweDtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTtmb250OmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9LmNhcmQtZ3JvdXA6Zmlyc3Qtb2YtdHlwZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDowfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmV4cGFuZC1ncm91cC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmV4cGFuZC1ncm91cC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZHtjb2xvcjojNzU3NTc1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6IzYxNjE2MX0uZ3JvdXAtdGl0bGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7dGV4dC1hbGlnbjpsZWZ0fS5ncm91cC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo0MDA7Y29sb3I6IzYxNjE2MTttYXJnaW4tbGVmdDo2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHF5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhci1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz0iZ3JvdXAtdG9vbGJhciJcbiAgICAgIGkxOG4tYXJpYS1sYWJlbD0iQSBidXR0b24gdGhhdCBhbGxvd3MgdXNlciB0byBleHBhbmQgYSB0YWcgZ3JvdXAuIlxuICAgICAgYXJpYS1sYWJlbD0iRXhwYW5kIGdyb3VwIlxuICAgICAgKGNsaWNrKT0iZ3JvdXBFeHBhbnNpb25Ub2dnbGVkLmVtaXQoKSJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGl0bGUtd3JhcHBlciI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9Imdyb3VwLXRpdGxlIlxuICAgICAgICAgIGFyaWEtcm9sZT0iaGVhZGluZyJcbiAgICAgICAgICBhcmlhLWxldmVsPSIzIlxuICAgICAgICAgIHRpdGxlPSJ7eyBncm91cE5hbWUgfX0iXG4gICAgICAgICAgPnt7IGdyb3VwTmFtZSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPSJudW1iZXJPZkNhcmRzID4gMSIgY2xhc3M9Imdyb3VwLWNhcmQtY291bnQiXG4gICAgICAgICAgPnt7IG51bWJlck9mQ2FyZHMgfCBudW1iZXIgfX0gY2FyZHM8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9ImV4cGFuZC1ncm91cC1pY29uIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgKm5nSWY9ImlzR3JvdXBFeHBhbmRlZDsgZWxzZSBleHBhbmRNb3JlIlxuICAgICAgICAgIHN2Z0ljb249ImV4cGFuZF9sZXNzXzI0cHgiXG4gICAgICAgID48L21hdC1pY29uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2V4cGFuZE1vcmU+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249ImV4cGFuZF9tb3JlXzI0cHgiPjwvbWF0LWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICcsc3R5bGVVcmxzOlsiY2FyZF9ncm91cF90b29sYmFyX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtncm91cE5hbWU6W3t0eXBlOlJffV0sbnVtYmVyT2ZDYXJkczpbe3R5cGU6Ul99XSxpc0dyb3VwRXhwYW5kZWQ6W3t0eXBlOlJffV0sZ3JvdXBFeHBhbnNpb25Ub2dnbGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgWnl0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmdyb3VwTmFtZT1udWxsLHRoaXMuaXNHcm91cEV4cGFuZGVkJD16dCghMSl9bmdPbkluaXQoKXt0aGlzLmlzR3JvdXBFeHBhbmRlZCQ9bnVsbCE9PXRoaXMuZ3JvdXBOYW1lP3RoaXMuc3RvcmUuc2VsZWN0KHp6LHRoaXMuZ3JvdXBOYW1lKTp6dCghMSl9b25Hcm91cEV4cGFuc2lvblRvZ2dsZWQoKXtpZihudWxsPT09dGhpcy5ncm91cE5hbWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogZXhwYW5zaW9uIGNhbm5vdCBiZSB0b2dnbGVkIHdoZW4gZ3JvdXBOYW1lIGlzIG51bGwiKTt0aGlzLnN0b3JlLmRpc3BhdGNoKElBKHt0YWdHcm91cDp0aGlzLmdyb3VwTmFtZX0pKX19ZnVuY3Rpb24gWHl0KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiwxKSxNdSgxLCJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhciIsMiksTXUoMiwibWV0cmljcy1jYXJkLWdyaWQiLDMpLEN1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPU51KCk7RGMoMSksaHUoIm51bWJlck9mQ2FyZHMiLHQuaXRlbXMubGVuZ3RoKSgiZ3JvdXBOYW1lIix0Lmdyb3VwTmFtZSksRGMoMSksaHUoImNhcmRJZHNXaXRoTWV0YWRhdGEiLHQuaXRlbXMpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKSgiZ3JvdXBOYW1lIix0Lmdyb3VwTmFtZSl9fVp5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Wnl0KShmdShpUykpfSxaeXQuybVjbXA9c28oe3R5cGU6Wnl0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhciJdXSxpbnB1dHM6e2dyb3VwTmFtZToiZ3JvdXBOYW1lIixudW1iZXJPZkNhcmRzOiJudW1iZXJPZkNhcmRzIn0sZGVjbHM6Mix2YXJzOjUsY29uc3RzOltbMywibnVtYmVyT2ZDYXJkcyIsImlzR3JvdXBFeHBhbmRlZCIsImdyb3VwTmFtZSIsImdyb3VwRXhwYW5zaW9uVG9nZ2xlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50IiwwKSxEdSgiZ3JvdXBFeHBhbnNpb25Ub2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR3JvdXBFeHBhbnNpb25Ub2dnbGVkKCl9KSksX3koMSwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJudW1iZXJPZkNhcmRzIixuLm51bWJlck9mQ2FyZHMpKCJpc0dyb3VwRXhwYW5kZWQiLEN5KDEsMyxuLmlzR3JvdXBFeHBhbmRlZCQpKSgiZ3JvdXBOYW1lIixuLmdyb3VwTmFtZSl9LGRpcmVjdGl2ZXM6W3F5dF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFp5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhciIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhci1jb21wb25lbnRcbiAgICAgIFtudW1iZXJPZkNhcmRzXT0ibnVtYmVyT2ZDYXJkcyJcbiAgICAgIFtpc0dyb3VwRXhwYW5kZWRdPSJpc0dyb3VwRXhwYW5kZWQkIHwgYXN5bmMiXG4gICAgICBbZ3JvdXBOYW1lXT0iZ3JvdXBOYW1lIlxuICAgICAgKGdyb3VwRXhwYW5zaW9uVG9nZ2xlZCk9Im9uR3JvdXBFeHBhbnNpb25Ub2dnbGVkKCkiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2dyb3VwTmFtZTpbe3R5cGU6Ul99XSxudW1iZXJPZkNhcmRzOlt7dHlwZTpSX31dfSk7Y2xhc3MgS3l0e2NvbnN0cnVjdG9yKCl7dGhpcy5QbHVnaW5UeXBlPVFUfXRyYWNrQnlHcm91cCh0LGUpe3JldHVybiBlLmdyb3VwTmFtZX19S3l0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLeXQpfSxLeXQuybVjbXA9c28oe3R5cGU6S3l0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudCJdXSxpbnB1dHM6e2NhcmRHcm91cHM6ImNhcmRHcm91cHMiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZGVjbHM6MSx2YXJzOjIsY29uc3RzOltbImNsYXNzIiwiY2FyZC1ncm91cCIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzEsImNhcmQtZ3JvdXAiXSxbMywibnVtYmVyT2ZDYXJkcyIsImdyb3VwTmFtZSJdLFszLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIiwiZ3JvdXBOYW1lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkhtKDAsWHl0LDMsNSwiZGl2IiwwKSwyJmUmJmh1KCJuZ0Zvck9mIixuLmNhcmRHcm91cHMpKCJuZ0ZvclRyYWNrQnkiLG4udHJhY2tCeUdyb3VwKX0sZGlyZWN0aXZlczpbeHYsWnl0LHp5dF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEt5dCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj0ibGV0IGdyb3VwIG9mIGNhcmRHcm91cHM7IHRyYWNrQnk6IHRyYWNrQnlHcm91cCJcbiAgICAgIGNsYXNzPSJjYXJkLWdyb3VwIlxuICAgID5cbiAgICAgIDxtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhclxuICAgICAgICBbbnVtYmVyT2ZDYXJkc109Imdyb3VwLml0ZW1zLmxlbmd0aCJcbiAgICAgICAgW2dyb3VwTmFtZV09Imdyb3VwLmdyb3VwTmFtZSJcbiAgICAgID48L21ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyPlxuICAgICAgPG1ldHJpY3MtY2FyZC1ncmlkXG4gICAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iZ3JvdXAuaXRlbXMiXG4gICAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgICAgIFtncm91cE5hbWVdPSJncm91cC5ncm91cE5hbWUiXG4gICAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD5cbiAgICA8L2Rpdj5cbiAgJyxzdHlsZVVybHM6WyJjYXJkX2dyb3Vwc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7Y2FyZEdyb3Vwczpbe3R5cGU6Ul99XSxjYXJkT2JzZXJ2ZXI6W3t0eXBlOlJffV19KTtjbGFzcyBKeXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZEdyb3VwcyQ9dGhpcy5zdG9yZS5zZWxlY3Qoanl0KS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KFZ6KSksVnQoKChbdCxlXSk9PmUuc2l6ZT90LmZpbHRlcigodD0+ZS5oYXModC5wbHVnaW4pKSk6dCkpLFZ0KCh0PT5pMCh0KSkpKX19ZnVuY3Rpb24gUXl0KHQsZSl7aWYoMSZ0JiYoX3UoMCwic3BhbiIpLFBmKDEpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGtmKCIgYW5kICIsdC5nZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHQucGx1Z2luVHlwZXMpLCIgdmlzdWFsaXphdGlvbiBmaWx0ZXIiKX19Snl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKeXQpKGZ1KGlTKSl9LEp5dC7JtWNtcD1zbyh7dHlwZTpKeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cHMiXV0saW5wdXRzOntjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWzMsImNhcmRHcm91cHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsIm1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpKSwyJmUmJmh1KCJjYXJkR3JvdXBzIixDeSgxLDIsbi5jYXJkR3JvdXBzJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbS3l0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoSnl0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncm91cHMiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnRcbiAgICAgIFtjYXJkR3JvdXBzXT0iY2FyZEdyb3VwcyQgfCBhc3luYyJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7Y2FyZE9ic2VydmVyOlt7dHlwZTpSX31dfSk7Y2xhc3MgJHl0e2NvbnN0cnVjdG9yKCl7dGhpcy5QbHVnaW5UeXBlPVFULHRoaXMubGlzdEZvcm1hdHRlcj1uZXcgSW50bC5MaXN0Rm9ybWF0KHZvaWQgMCx7c3R5bGU6ImxvbmciLHR5cGU6ImRpc2p1bmN0aW9uIn0pfWdldFBsdWdpblR5cGVGaWx0ZXJTdHJpbmcodCl7Y29uc3QgZT1bLi4udF0ubWFwKCh0PT57c3dpdGNoKHQpe2Nhc2UgUVQuU0NBTEFSUzpyZXR1cm4ic2NhbGFyIjtjYXNlIFFULklNQUdFUzpyZXR1cm4iaW1hZ2UiO2Nhc2UgUVQuSElTVE9HUkFNUzpyZXR1cm4iaGlzdG9ncmFtIjtkZWZhdWx0OnRocm93IG5ldyBSYW5nZUVycm9yKGBQbGVhc2UgaW1wbGVtZW50IGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHBsdWdpbiB0eXBlOiAke3R9YCl9fSkpO3JldHVybiB0aGlzLmxpc3RGb3JtYXR0ZXIuZm9ybWF0KGUpfX0keXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCR5dCl9LCR5dC7JtWNtcD1zbyh7dHlwZTokeXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoLWNvbXBvbmVudCJdXSxpbnB1dHM6e3BsdWdpblR5cGVzOiJwbHVnaW5UeXBlcyIsdGFnRmlsdGVyUmVnZXg6InRhZ0ZpbHRlclJlZ2V4Iix0YWdDb3VudHM6InRhZ0NvdW50cyJ9LGRlY2xzOjYsdmFyczo1LGNvbnN0czpbWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFBmKDAsIk5vIG1hdGNoZXMgZm9yIHRhZyBmaWx0ZXIgIiksX3UoMSwiY29kZSIpLFBmKDIpLEN1KCksSG0oMyxReXQsMiwxLCJzcGFuIiwwKSxQZig0KSxfeSg1LCJudW1iZXIiKSksMiZlJiYoRGMoMiksa2YoIi8iLG4udGFnRmlsdGVyUmVnZXgsIi8iKSxEYygxKSxodSgibmdJZiIsbi5wbHVnaW5UeXBlcy5zaXplKSxEYygxKSxrZigiIG91dCBvZiAiLEN5KDUsMyxuLnRhZ0NvdW50cyksIiB0YWdzLiIpKX0sZGlyZWN0aXZlczpbUHZdLHBpcGVzOlskdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYigkeXQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50Iix0ZW1wbGF0ZTonTm8gbWF0Y2hlcyBmb3IgdGFnIGZpbHRlciA8Y29kZT4ve3sgdGFnRmlsdGVyUmVnZXggfX0vPC9jb2RlXG4gICAgPjxzcGFuICpuZ0lmPSJwbHVnaW5UeXBlcy5zaXplIj5cbiAgICAgIGFuZCB7eyBnZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHBsdWdpblR5cGVzKSB9fSB2aXN1YWxpemF0aW9uXG4gICAgICBmaWx0ZXI8L3NwYW5cbiAgICA+XG4gICAgb3V0IG9mIHt7IHRhZ0NvdW50cyB8IG51bWJlciB9fSB0YWdzLicsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7cGx1Z2luVHlwZXM6W3t0eXBlOlJffV0sdGFnRmlsdGVyUmVnZXg6W3t0eXBlOlJffV0sdGFnQ291bnRzOlt7dHlwZTpSX31dfSk7Y2xhc3MgdF90e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnBsdWdpblR5cGVzJD10aGlzLnN0b3JlLnNlbGVjdChWeiksdGhpcy50YWdGaWx0ZXJSZWdleCQ9dGhpcy5zdG9yZS5zZWxlY3QoTnopLHRoaXMudGFnQ291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChqeXQpLnBpcGUoVnQoKHQ9Pm5ldyBTZXQodC5tYXAoKCh7dGFnOnR9KT0+dCkpKS5zaXplKSkpfX1mdW5jdGlvbiBlX3QodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiw2KSxQZigxKSxfeSgyLCJudW1iZXIiKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxrZigiIixDeSgyLDEsdC5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCksIiBjYXJkcyIpfX1mdW5jdGlvbiBuX3QodCxlKXsxJnQmJk11KDAsIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoIiw3KX10X3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRfdCkoZnUoaVMpKX0sdF90Lsm1Y21wPXNvKHt0eXBlOnRfdCxzZWxlY3RvcnM6W1sibWV0cmljcy1lbXB0eS10YWctbWF0Y2giXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicGx1Z2luVHlwZXMiLCJ0YWdGaWx0ZXJSZWdleCIsInRhZ0NvdW50cyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSksMiZlJiZodSgicGx1Z2luVHlwZXMiLEN5KDEsMyxuLnBsdWdpblR5cGVzJCkpKCJ0YWdGaWx0ZXJSZWdleCIsQ3koMiw1LG4udGFnRmlsdGVyUmVnZXgkKSkoInRhZ0NvdW50cyIsQ3koMyw3LG4udGFnQ291bnRzJCkpfSxkaXJlY3RpdmVzOlskeXRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih0X3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50XG4gICAgICBbcGx1Z2luVHlwZXNdPSJwbHVnaW5UeXBlcyQgfCBhc3luYyJcbiAgICAgIFt0YWdGaWx0ZXJSZWdleF09InRhZ0ZpbHRlclJlZ2V4JCB8IGFzeW5jIlxuICAgICAgW3RhZ0NvdW50c109InRhZ0NvdW50cyQgfCBhc3luYyJcbiAgICA+PC9tZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBvX3R7fW9fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b190KX0sb190Lsm1Y21wPXNvKHt0eXBlOm9fdCxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzRW1wdHlNYXRjaDoiaXNFbXB0eU1hdGNoIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIndhcm4iLDQsIm5nSWYiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJncm91cC1jYXJkLWNvdW50Il0sWzEsIndhcm4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwic3BhbiIsMSksX3UoMiwic3BhbiIsMiksUGYoMywiVGFncyBtYXRjaGluZyBmaWx0ZXIiKSxDdSgpLEhtKDQsZV90LDMsMywic3BhbiIsMyksQ3UoKSxDdSgpLEhtKDUsbl90LDEsMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLDQpLE11KDYsIm1ldHJpY3MtY2FyZC1ncmlkIiw1KSksMiZlJiYoRGMoNCksaHUoIm5nSWYiLG4uY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGg+MSksRGMoMSksaHUoIm5nSWYiLG4uaXNFbXB0eU1hdGNoKSxEYygxKSxodSgiY2FyZElkc1dpdGhNZXRhZGF0YSIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikpfSxkaXJlY3RpdmVzOltQdix6eXQsdF90XSxwaXBlczpbJHZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZsZXg6bm9uZTtoZWlnaHQ6NDJweDttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDAsMCwwLC4xNSl9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgyNTUsMjU1LDI1NSwuMTUpfS5ncm91cC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmV9Lmdyb3VwLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjE2MTYxO21hcmdpbi1sZWZ0OjZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1tZXRyaWNzLWVtcHR5LXRhZy1tYXRjaFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTNweDtmb250LXN0eWxlOml0YWxpYztwYWRkaW5nOjE2cHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpibG9ja31ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIob190LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZmlsdGVyZWQtdmlldy1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8ZGl2IGNsYXNzPSJncm91cC10b29sYmFyIj5cbiAgICAgIDxzcGFuIGNsYXNzPSJncm91cC10ZXh0Ij5cbiAgICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRpdGxlIiBhcmlhLXJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiXG4gICAgICAgICAgPlRhZ3MgbWF0Y2hpbmcgZmlsdGVyPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9ImNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoID4gMSIgY2xhc3M9Imdyb3VwLWNhcmQtY291bnQiXG4gICAgICAgICAgPnt7IGNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoIHwgbnVtYmVyIH19IGNhcmRzPC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bWV0cmljcy1lbXB0eS10YWctbWF0Y2hcbiAgICAgICpuZ0lmPSJpc0VtcHR5TWF0Y2giXG4gICAgICBjbGFzcz0id2FybiJcbiAgICA+PC9tZXRyaWNzLWVtcHR5LXRhZy1tYXRjaD5cbiAgICA8bWV0cmljcy1jYXJkLWdyaWRcbiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iY2FyZElkc1dpdGhNZXRhZGF0YSJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyaWQ+XG4gICcsc3R5bGVVcmxzOlsiZmlsdGVyZWRfdmlld19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7aXNFbXB0eU1hdGNoOlt7dHlwZTpSX31dLGNhcmRPYnNlcnZlcjpbe3R5cGU6Ul99XSxjYXJkSWRzV2l0aE1ldGFkYXRhOlt7dHlwZTpSX31dfSk7Y2xhc3MgaV90e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEkPXRoaXMuc3RvcmUuc2VsZWN0KGp5dCkucGlwZShfZSh0aGlzLnN0b3JlLnNlbGVjdChWeikpLFZ0KCgoW3QsZV0pPT5lLnNpemU/dC5maWx0ZXIoKHQ9PmUuaGFzKHQucGx1Z2luKSkpOnQpKSxfZSh0aGlzLnN0b3JlLnNlbGVjdChOeikpLENlKDIwMCksVnQoKChbdCxlXSk9Pnt0cnl7cmV0dXJue2NhcmRMaXN0OnQscmVnZXg6bmV3IFJlZ0V4cChlLCJpIil9fWNhdGNoKGUpe3JldHVybntjYXJkTGlzdDp0LHJlZ2V4Om51bGx9fX0pKSxmZSgoKHtyZWdleDp0fSk9Pm51bGwhPT10KSksVnQoKCh7Y2FyZExpc3Q6dCxyZWdleDplfSk9PnQuZmlsdGVyKCgoe3RhZzp0fSk9PmUudGVzdCh0KSkpKSksd2UoKCh0LGUpPT50Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxuKT0+dC5jYXJkSWQ9PT1lW25dLmNhcmRJZCkpKSksSWUoKSxCZShbXSkpLHRoaXMuaXNFbXB0eU1hdGNoJD10aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEkLnBpcGUoX2UodGhpcy5zdG9yZS5zZWxlY3Qoanl0KSksVnQoKChbdCxlXSk9PkJvb2xlYW4oZS5sZW5ndGgpJiYwPT09dC5sZW5ndGgpKSl9fWZ1bmN0aW9uIGFfdCh0LGUpe2lmKDEmdCYmKF91KDAsImIiKSxQZigxKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoKS4kaW1wbGljaXQ7RGMoMSksa2YoIiIsdC5kaXNwbGF5QWxpYXMsIjoiKX19ZnVuY3Rpb24gcl90KHQsZSl7aWYoMSZ0JiYoX3UoMCwibWF0LW9wdGlvbiIsMiksX3UoMSwic3BhbiIsMyksSG0oMixhX3QsMiwxLCJiIiw0KSxQZigzKSxDdSgpLEN1KCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtodSgidmFsdWUiLHQudmFsdWUpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCksRGMoMSksQnUoInRpdGxlIiwiIix0LmRpc3BsYXlBbGlhcywiOiAiLHQuZGlzcGxheVRleHQsIiIpLERjKDEpLGh1KCJuZ0lmIix0LmRpc3BsYXlBbGlhcyksRGMoMSksa2YoIiAiLHQuZGlzcGxheVRleHQsIiAiKX19aV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpX3QpKGZ1KGlTKSl9LGlfdC7JtWNtcD1zbyh7dHlwZTppX3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtZmlsdGVyZWQtdmlldyJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiaXNFbXB0eU1hdGNoIiwiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpKSwyJmUmJmh1KCJpc0VtcHR5TWF0Y2giLEN5KDEsMyxuLmlzRW1wdHlNYXRjaCQpKSgiY2FyZElkc1dpdGhNZXRhZGF0YSIsQ3koMiw1LG4uY2FyZElkc1dpdGhNZXRhZGF0YSQpKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W29fdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGlfdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWZpbHRlcmVkLXZpZXciLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudFxuICAgICAgW2lzRW1wdHlNYXRjaF09ImlzRW1wdHlNYXRjaCQgfCBhc3luYyJcbiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iY2FyZElkc1dpdGhNZXRhZGF0YSQgfCBhc3luYyJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtjYXJkT2JzZXJ2ZXI6W3t0eXBlOlJffV19KTtjbGFzcyBzX3R7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlPSIiLHRoaXMub3B0aW9ucz1bXSx0aGlzLnNlbGVjdGlvbkNoYW5nZT1uZXcgU3l9fWZ1bmN0aW9uIGxfdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMjIpLF91KDEsImRpdiIsMjMpLFBmKDIsIkNhcmQgV2lkdGgiKSxDdSgpLF91KDMsImRpdiIsMTApLF91KDQsIm1hdC1zbGlkZXIiLDI0KSxEdSgiaW5wdXQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLmNhcmRXaWR0aFNsaWRlckNoYW5nZWQkLmVtaXQobi52YWx1ZSl9KSksQ3UoKSxfdSg1LCJidXR0b24iLDI1KSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkuY2FyZFdpZHRoUmVzZXQuZW1pdCgpfSkpLE11KDYsIm1hdC1pY29uIiwyNiksQ3UoKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7RGMoNCksaHUoIm1heCIsdC5NQVhfQ0FSRF9XSURUSF9TTElERVJfVkFMVUUpKCJtaW4iLHQuTUlOX0NBUkRfV0lEVEhfU0xJREVSX1ZBTFVFKSgic3RlcCIsNTApKCJ2YWx1ZSIsdC5jYXJkTWluV2lkdGgpKCJ0aHVtYkxhYmVsIiwhMSl9fWZ1bmN0aW9uIGNfdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMjcpLF91KDEsImxhYmVsIiksUGYoMiwiTGluayB2aXN1YWxpemF0aW9uIGJ5IHN0ZXAiKSxDdSgpLF91KDMsImRpdiIsMjgpLF91KDQsImRpdiIpLF91KDUsIm1hdC1jaGVja2JveCIsMTYpLER1KCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkuc2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQuZW1pdCgpfSkpLFBmKDYsIkVuYWJsZWQiKSxDdSgpLEN1KCksX3UoNywiZGl2IiwyOSksX3UoOCwidGItcmFuZ2UtaW5wdXQiLDMwKSxEdSgic2luZ2xlVmFsdWVDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vblNpbmdsZVZhbHVlQ2hhbmdlZChuKX0pKSgicmFuZ2VWYWx1ZXNDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5vblJhbmdlVmFsdWVzQ2hhbmdlZChuKX0pKSxDdSgpLEN1KCksQ3UoKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1OdSgpO0RjKDUpLGh1KCJjaGVja2VkIix0LnNlbGVjdFRpbWVFbmFibGVkKSxEYygzKSxodSgibWluIix0LnN0ZXBNaW5NYXgubWluKSgibWF4Iix0LnN0ZXBNaW5NYXgubWF4KSgibG93ZXJWYWx1ZSIsbnVsbD09dC5zZWxlY3RlZFRpbWU/bnVsbDp0LnNlbGVjdGVkVGltZS5zdGFydC5zdGVwKSgidXBwZXJWYWx1ZSIsbnVsbD09dC5zZWxlY3RlZFRpbWV8fG51bGw9PXQuc2VsZWN0ZWRUaW1lLmVuZD9udWxsOnQuc2VsZWN0ZWRUaW1lLmVuZC5zdGVwKSgiZW5hYmxlZCIsdC5zZWxlY3RUaW1lRW5hYmxlZCl9fWZ1bmN0aW9uIGRfdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsInNlY3Rpb24iLDMxKSxfdSgxLCJoMyIsMSksUGYoMiwiSW1hZ2VzIiksQ3UoKSxfdSgzLCJkaXYiLDMyKSxfdSg0LCJkaXYiLDMzKSxQZig1LCJCcmlnaHRuZXNzIiksQ3UoKSxfdSg2LCJkaXYiLDEwKSxfdSg3LCJtYXQtc2xpZGVyIiwzNCksRHUoImlucHV0IiwoZnVuY3Rpb24gZShuKXtQaSh0KTtyZXR1cm4gTnUoKS5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5lbWl0KG4udmFsdWUpfSkpLEN1KCksX3UoOCwiYnV0dG9uIiwzNSksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgpLmltYWdlQnJpZ2h0bmVzc1Jlc2V0LmVtaXQoKX0pKSxNdSg5LCJtYXQtaWNvbiIsMjYpLEN1KCksQ3UoKSxDdSgpLF91KDEwLCJkaXYiLDM2KSxfdSgxMSwiZGl2IiwzNyksUGYoMTIsIkNvbnRyYXN0IiksQ3UoKSxfdSgxMywiZGl2IiwxMCksX3UoMTQsIm1hdC1zbGlkZXIiLDM4KSxEdSgiaW5wdXQiLChmdW5jdGlvbiBlKG4pe1BpKHQpO3JldHVybiBOdSgpLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5lbWl0KG4udmFsdWUpfSkpLEN1KCksX3UoMTUsImJ1dHRvbiIsMzkpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5pbWFnZUNvbnRyYXN0UmVzZXQuZW1pdCgpfSkpLE11KDE2LCJtYXQtaWNvbiIsMjYpLEN1KCksQ3UoKSxDdSgpLF91KDE3LCJkaXYiLDQwKSxfdSgxOCwibWF0LWNoZWNrYm94IiwxNiksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIGUobil7UGkodCk7cmV0dXJuIE51KCkuaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQuZW1pdChuLmNoZWNrZWQpfSkpLFBmKDE5LCJTaG93IGFjdHVhbCBpbWFnZSBzaXplIiksQ3UoKSxDdSgpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7RGMoNyksaHUoIm1heCIsMmUzKSgibWluIiwwKSgic3RlcCIsMTApKCJ2YWx1ZSIsdC5pbWFnZUJyaWdodG5lc3NJbk1pbGxpKSgidGh1bWJMYWJlbCIsITApKCJkaXNwbGF5V2l0aCIsdC5mb3JtYXRNaWxsaVRvWmVyb3RoKSxEYyg3KSxodSgibWF4Iiw1ZTMpKCJtaW4iLDApKCJzdGVwIiwxMCkoInZhbHVlIix0LmltYWdlQ29udHJhc3RJbk1pbGxpKSgidGh1bWJMYWJlbCIsITApKCJkaXNwbGF5V2l0aCIsdC5mb3JtYXRNaWxsaVRvWmVyb3RoKSxEYyg0KSxodSgiY2hlY2tlZCIsdC5pbWFnZVNob3dBY3R1YWxTaXplKX19c190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzX3QpfSxzX3QuybVjbXA9c28oe3R5cGU6c190LHNlbGVjdG9yczpbWyJ0Yi1kcm9wZG93biJdXSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSIsb3B0aW9uczoib3B0aW9ucyJ9LG91dHB1dHM6e3NlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uQ2hhbmdlIn0sZGVjbHM6Mix2YXJzOjIsY29uc3RzOltbMywidmFsdWUiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLCJkaXNhYmxlZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIiwiZGlzYWJsZWQiXSxbMSwib3B0aW9uLWNvbnRlbnQiLDMsInRpdGxlIl0sWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1hdC1zZWxlY3QiLDApLER1KCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGUudmFsdWUpfSkpLEhtKDEscl90LDQsNiwibWF0LW9wdGlvbiIsMSksQ3UoKSksMiZlJiYoaHUoInZhbHVlIixuLnZhbHVlKSxEYygxKSxodSgibmdGb3JPZiIsbi5vcHRpb25zKSl9LGRpcmVjdGl2ZXM6W05ZLHh2LHpMLFB2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9bWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjOGU5OGEzO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjZweH1tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tvdXRsaW5lLWNvbG9yOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLXN0eWxlOmF1dG99ICAubWF0LXNlbGVjdC1wYW5lbHttYXgtd2lkdGg6NzB2d30gIG1hdC1vcHRpb24ubWF0LW9wdGlvbntoZWlnaHQ6YXV0b30gIC5tYXQtb3B0aW9uLXRleHR7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstYWxsfS5vcHRpb24tY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihzX3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidGItZHJvcGRvd24iLHRlbXBsYXRlOidcbiAgICA8bWF0LXNlbGVjdFxuICAgICAgW3ZhbHVlXT0idmFsdWUiXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT0ic2VsZWN0aW9uQ2hhbmdlLmVtaXQoJGV2ZW50LnZhbHVlKSJcbiAgICA+XG4gICAgICA8bWF0LW9wdGlvblxuICAgICAgICAqbmdGb3I9ImxldCBvcHRpb24gb2Ygb3B0aW9ucyJcbiAgICAgICAgW3ZhbHVlXT0ib3B0aW9uLnZhbHVlIlxuICAgICAgICBbZGlzYWJsZWRdPSJvcHRpb24uZGlzYWJsZWQiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9Im9wdGlvbi1jb250ZW50IlxuICAgICAgICAgIHRpdGxlPSJ7eyBvcHRpb24uZGlzcGxheUFsaWFzIH19OiB7eyBvcHRpb24uZGlzcGxheVRleHQgfX0iXG4gICAgICAgID5cbiAgICAgICAgICA8YiAqbmdJZj0ib3B0aW9uLmRpc3BsYXlBbGlhcyI+e3sgb3B0aW9uLmRpc3BsYXlBbGlhcyB9fTo8L2I+XG4gICAgICAgICAge3sgb3B0aW9uLmRpc3BsYXlUZXh0IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gICcsc3R5bGVVcmxzOlsiZHJvcGRvd25fY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHt2YWx1ZTpbe3R5cGU6Ul99XSxvcHRpb25zOlt7dHlwZTpSX31dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XX0pO2NvbnN0IHBfdD0yNTA7Y2xhc3MgbV90e2NvbnN0cnVjdG9yKHQpe3RoaXMubG9jYWxlPXQsdGhpcy5zZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZD1uZXcgU3ksdGhpcy5zZWxlY3RUaW1lQ2hhbmdlZD1uZXcgU3ksdGhpcy5Ub29sdGlwU29ydERyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOiRULkFMUEhBQkVUSUNBTCxkaXNwbGF5VGV4dDoiQWxwaGFiZXRpY2FsIn0se3ZhbHVlOiRULkFTQ0VORElORyxkaXNwbGF5VGV4dDoiQXNjZW5kaW5nIn0se3ZhbHVlOiRULkRFU0NFTkRJTkcsZGlzcGxheVRleHQ6IkRlc2NlbmRpbmcifSx7dmFsdWU6JFQuTkVBUkVTVCxkaXNwbGF5VGV4dDoiTmVhcmVzdCJ9XSx0aGlzLnRvb2x0aXBTb3J0Q2hhbmdlZD1uZXcgU3ksdGhpcy5pZ25vcmVPdXRsaWVyc0NoYW5nZWQ9bmV3IFN5LHRoaXMuWEF4aXNUeXBlPXROLHRoaXMuWEF4aXNUeXBlRHJvcGRvd25PcHRpb25zPVt7dmFsdWU6dE4uU1RFUCxkaXNwbGF5VGV4dDoiU3RlcCJ9LHt2YWx1ZTp0Ti5SRUxBVElWRSxkaXNwbGF5VGV4dDoiUmVsYXRpdmUifSx7dmFsdWU6dE4uV0FMTF9USU1FLGRpc3BsYXlUZXh0OiJXYWxsIn1dLHRoaXMueEF4aXNUeXBlQ2hhbmdlZD1uZXcgU3ksdGhpcy5NQVhfQ0FSRF9XSURUSF9TTElERVJfVkFMVUU9NzM1LHRoaXMuTUlOX0NBUkRfV0lEVEhfU0xJREVSX1ZBTFVFPTMzNSx0aGlzLmNhcmRXaWR0aFNsaWRlckNoYW5nZWQkPW5ldyBTeSx0aGlzLmNhcmRXaWR0aENoYW5nZWQ9dGhpcy5jYXJkV2lkdGhTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKHBfdCkpLHRoaXMuY2FyZFdpZHRoUmVzZXQ9bmV3IFN5LHRoaXMuSGlzdG9ncmFtTW9kZURyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOldFLk9GRlNFVCxkaXNwbGF5VGV4dDoiT2Zmc2V0In0se3ZhbHVlOldFLk9WRVJMQVksZGlzcGxheVRleHQ6Ik92ZXJsYXkifV0sdGhpcy5oaXN0b2dyYW1Nb2RlQ2hhbmdlZD1uZXcgU3ksdGhpcy5NQVhfU01PT1RISU5HX1ZBTFVFPS45OTksdGhpcy5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRT0uOTksdGhpcy5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQ9bmV3IFN5LHRoaXMuc2NhbGFyU21vb3RoaW5nQ2hhbmdlZD10aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5waXBlKGdlKHBfdCkpLHRoaXMuc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQ9bmV3IFN5LHRoaXMuaW1hZ2VCcmlnaHRuZXNzU2xpZGVyQ2hhbmdlZCQ9bmV3IFN5LHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ9dGhpcy5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKHBfdCkpLHRoaXMuaW1hZ2VCcmlnaHRuZXNzUmVzZXQ9bmV3IFN5LHRoaXMuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkPW5ldyBTeSx0aGlzLmltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZD10aGlzLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5waXBlKGdlKHBfdCkpLHRoaXMuaW1hZ2VDb250cmFzdFJlc2V0PW5ldyBTeSx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkPW5ldyBTeX1vblNjYWxhclNtb290aGluZ0lucHV0KHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoIWUudmFsdWUpcmV0dXJuO2NvbnN0IG49TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUZsb2F0KGUudmFsdWUpKSwuOTk5KTtuIT09cGFyc2VGbG9hdChlLnZhbHVlKSYmKGUudmFsdWU9U3RyaW5nKG4pKSx0aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5lbWl0KG4pfWZvcm1hdE1pbGxpVG9aZXJvdGgodCl7cmV0dXJuIHV2KHQvMWUzLHRoaXMubG9jYWxlfHwiZW4tVVMiLCIxLjAtMiIpfW9uU2luZ2xlVmFsdWVDaGFuZ2VkKHQpe3RoaXMuc2VsZWN0VGltZUNoYW5nZWQuZW1pdCh7c3RhcnQ6e3N0ZXA6dH0sZW5kOm51bGx9KX1vblJhbmdlVmFsdWVzQ2hhbmdlZCh7bG93ZXJWYWx1ZTp0LHVwcGVyVmFsdWU6ZX0pe3RoaXMuc2VsZWN0VGltZUNoYW5nZWQuZW1pdCh7c3RhcnQ6e3N0ZXA6dH0sZW5kOntzdGVwOmV9fSl9fW1fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bV90KShmdShRXykpfSxtX3QuybVjbXA9c28oe3R5cGU6bV90LHNlbGVjdG9yczpbWyJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncy1jb21wb25lbnQiXV0saW5wdXRzOntpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkOiJpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkIixpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZDoiaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQiLHNlbGVjdFRpbWVFbmFibGVkOiJzZWxlY3RUaW1lRW5hYmxlZCIsdXNlUmFuZ2VTZWxlY3RUaW1lOiJ1c2VSYW5nZVNlbGVjdFRpbWUiLHNlbGVjdGVkVGltZToic2VsZWN0ZWRUaW1lIixzdGVwTWluTWF4OiJzdGVwTWluTWF4Iixpc0ltYWdlU3VwcG9ydEVuYWJsZWQ6ImlzSW1hZ2VTdXBwb3J0RW5hYmxlZCIsdG9vbHRpcFNvcnQ6InRvb2x0aXBTb3J0IixpZ25vcmVPdXRsaWVyczoiaWdub3JlT3V0bGllcnMiLHhBeGlzVHlwZToieEF4aXNUeXBlIixjYXJkTWluV2lkdGg6ImNhcmRNaW5XaWR0aCIsaGlzdG9ncmFtTW9kZToiaGlzdG9ncmFtTW9kZSIsc2NhbGFyU21vb3RoaW5nOiJzY2FsYXJTbW9vdGhpbmciLHNjYWxhclBhcnRpdGlvblg6InNjYWxhclBhcnRpdGlvblgiLGltYWdlQnJpZ2h0bmVzc0luTWlsbGk6ImltYWdlQnJpZ2h0bmVzc0luTWlsbGkiLGltYWdlQ29udHJhc3RJbk1pbGxpOiJpbWFnZUNvbnRyYXN0SW5NaWxsaSIsaW1hZ2VTaG93QWN0dWFsU2l6ZToiaW1hZ2VTaG93QWN0dWFsU2l6ZSJ9LG91dHB1dHM6e3NlbGVjdFRpbWVFbmFibGVUb2dnbGVkOiJzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCIsc2VsZWN0VGltZUNoYW5nZWQ6InNlbGVjdFRpbWVDaGFuZ2VkIix0b29sdGlwU29ydENoYW5nZWQ6InRvb2x0aXBTb3J0Q2hhbmdlZCIsaWdub3JlT3V0bGllcnNDaGFuZ2VkOiJpZ25vcmVPdXRsaWVyc0NoYW5nZWQiLHhBeGlzVHlwZUNoYW5nZWQ6InhBeGlzVHlwZUNoYW5nZWQiLGNhcmRXaWR0aENoYW5nZWQ6ImNhcmRXaWR0aENoYW5nZWQiLGNhcmRXaWR0aFJlc2V0OiJjYXJkV2lkdGhSZXNldCIsaGlzdG9ncmFtTW9kZUNoYW5nZWQ6Imhpc3RvZ3JhbU1vZGVDaGFuZ2VkIixzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkOiJzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkIixzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZDoic2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQiLGltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkOiJpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCIsaW1hZ2VCcmlnaHRuZXNzUmVzZXQ6ImltYWdlQnJpZ2h0bmVzc1Jlc2V0IixpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQ6ImltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCIsaW1hZ2VDb250cmFzdFJlc2V0OiJpbWFnZUNvbnRyYXN0UmVzZXQiLGltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkOiJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCJ9LGRlY2xzOjM3LHZhcnM6MTgsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZSxuO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJSZXNldCBjYXJkIHdpZHRoIil9ZWxzZSB0PSRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcmVzZXQgdGhlIGNhcmQgd2lkdGggc2V0dGluZ+KQn2NjZGM5NmIwMDNmYmJhOTBkYjdhNjk1OWI1YjI2ZTNjYzU4ZjdkODDikJ81MjIzMTExMDQ3OTY4MTAyNDY2OlJlc2V0IGNhcmQgd2lkdGhgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJSZXNldCBicmlnaHRuZXNzIil9ZWxzZSBlPSRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcmVzZXQgdGhlIGltYWdlIGJyaWdodG5lc3Mgc2V0dGluZ+KQn2M0ODJiM2E0N2VhMDk3NWZhOGJlMDFhZmIzZmJlYzliNzY2MjhiZDfikJ8xMTg5MTYxODU3MjQwMzc4Mzk1OlJlc2V0IGJyaWdodG5lc3NgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtuPWdvb2cuZ2V0TXNnKCJSZXNldCBjb250cmFzdCIpfWVsc2Ugbj0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHJlc2V0IHRoZSBpbWFnZSBjb250cmFzdCBzZXR0aW5n4pCfZWQ3MTJhOGI5MjcwNDFiZTE1MjUyYjI5ZWI1MjFlYmIxMzc0YmFkOOKQnzUzNzA3MDMzNDI5MjM2MTE5NTU6UmVzZXQgY29udHJhc3RgO3JldHVybltbMSwiZ2VuZXJhbCJdLFsxLCJzZWN0aW9uLXRpdGxlIl0sWzEsImNvbnRyb2wtcm93IiwieC1heGlzLXR5cGUiXSxbImlkIiwieC1heGlzLXR5cGUtbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFszLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbImNsYXNzIiwiY29udHJvbC1yb3cgY2FyZC13aWR0aCIsNCwibmdJZiJdLFsiY2xhc3MiLCJjb250cm9sLXJvdyBsaW5rZWQtdGltZSIsNCwibmdJZiJdLFsxLCJzY2FsYXJzIl0sWzEsImNvbnRyb2wtcm93Iiwic2NhbGFycy1zbW9vdGhpbmciXSxbImlkIiwic2NhbGFycy1zbW9vdGhpbmctbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFsxLCJzbGlkZXItcm93Il0sWyJhcmlhLWxhYmVsbGVkYnkiLCJzY2FsYXJzLXNtb290aGluZy1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImlucHV0Il0sWyJhcmlhLWxhYmVsbGVkYnkiLCJzY2FsYXJzLXNtb290aGluZy1sYWJlbCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIwIiwic3RlcCIsIjAuMDAxIiwxLCJzbGlkZXItaW5wdXQiLDMsIm1heCIsInZhbHVlIiwiaW5wdXQiXSxbMSwiY29udHJvbC1yb3ciLCJ0b29sdGlwLXNvcnQiXSxbMSwiY29udHJvbC1uYW1lIl0sWzEsImNvbnRyb2wtcm93Iiwic2NhbGFycy1pZ25vcmUtb3V0bGllcnMiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsxLCJjb250cm9sLXJvdyIsInNjYWxhcnMtcGFydGl0aW9uLXgiXSxbInN2Z0ljb24iLCJoZWxwX291dGxpbmVfMjRweCIsInRpdGxlIiwiTm9uLW1vbm90b25pYyBzdGVwcyBjYW4gb2NjdXIgd2hlbiByZXVzaW5nIGEgbG9nZGlyIHdpdGggbXVsdGlwbGUgc3VtbWFyeSB3cml0ZXJzIGFuZCBvdmVybGFwcGluZyBzdGVwcy4gTGluZSBjaGFydHMsIHdpdGhvdXQgdGhpcyBvcHRpb24gZW5hYmxlZCwgY2FuIGFwcGVhciB6aWcgemFnZ2VkLiBUaGlzIGlzIGNvbW1vbiB3aGVuIHJlc3RhcnRpbmcgZnJvbSBhIGNoZWNrcG9pbnQuXG5cbldoZW4gZW5hYmxlZCwgYSBub24tbW9ub3RvbmljIHRpbWUgc2VyaWVzIGNvbXBvc2VkIG9mIE4gbW9ub3RvbmljIHBpZWNlcyB3aWxsIGJlIHNob3duIGFzIE4gbW9ub3RvbmljIGxpbmVzLiIsMSwiaW5mbyJdLFsxLCJIaXN0b2dyYW1zIl0sWzEsImNvbnRyb2wtcm93IiwiaGlzdG9ncmFtLW1vZGUiXSxbImNsYXNzIiwiaW1hZ2UiLDQsIm5nSWYiXSxbMSwiY29udHJvbC1yb3ciLCJjYXJkLXdpZHRoIl0sWyJpZCIsImNhcmQtd2lkdGgtbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFsiYXJpYS1sYWJlbGxlZGJ5IiwiY2FyZC13aWR0aC1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImlucHV0Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LCJ0aXRsZSIsIlJlc2V0IGNhcmQgd2lkdGgiLDEsInJlc2V0LWJ1dHRvbiIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJzZXR0aW5nc19iYWNrdXBfcmVzdG9yZV8yNHB4Il0sWzEsImNvbnRyb2wtcm93IiwibGlua2VkLXRpbWUiXSxbMSwiY29udHJvbHMiXSxbMSwic3RlcC1zZWxlY3RvciJdLFszLCJtaW4iLCJtYXgiLCJsb3dlclZhbHVlIiwidXBwZXJWYWx1ZSIsImVuYWJsZWQiLCJzaW5nbGVWYWx1ZUNoYW5nZWQiLCJyYW5nZVZhbHVlc0NoYW5nZWQiXSxbMSwiaW1hZ2UiXSxbMSwiY29udHJvbC1yb3ciLCJpbWFnZS1icmlnaHRuZXNzIl0sWyJpZCIsImltYWdlLWJyaWdodG5lc3MtbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFsiYXJpYS1sYWJlbGxlZGJ5IiwiaW1hZ2UtYnJpZ2h0bmVzcy1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImRpc3BsYXlXaXRoIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiUmVzZXQgYnJpZ2h0bmVzcyIsMSwicmVzZXQtYnV0dG9uIiwzLCJjbGljayJdLFsxLCJjb250cm9sLXJvdyIsImltYWdlLWNvbnRyYXN0Il0sWyJpZCIsImltYWdlLWNvbnN0cmFzdC1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWyJhcmlhLWxhYmVsbGVkYnkiLCJpbWFnZS1jb25zdHJhc3QtbGFiZWwiLCJjb2xvciIsInByaW1hcnkiLDMsIm1heCIsIm1pbiIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJkaXNwbGF5V2l0aCIsImlucHV0Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlJlc2V0IGNvbnRyYXN0IiwxLCJyZXNldC1idXR0b24iLDMsImNsaWNrIl0sWzEsImNvbnRyb2wtcm93IiwiaW1hZ2Utc2hvdy1hY3R1YWwtc2l6ZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsInNlY3Rpb24iLDApLF91KDEsImgzIiwxKSxQZigyLCJHZW5lcmFsIiksQ3UoKSxfdSgzLCJkaXYiLDIpLF91KDQsImRpdiIsMyksUGYoNSwiSG9yaXpvbnRhbCBBeGlzIiksQ3UoKSxfdSg2LCJ0Yi1kcm9wZG93biIsNCksRHUoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ueEF4aXNUeXBlQ2hhbmdlZC5lbWl0KGUpfSkpLEN1KCksQ3UoKSxIbSg3LGxfdCw3LDUsImRpdiIsNSksSG0oOCxjX3QsOSw2LCJkaXYiLDYpLEN1KCksX3UoOSwic2VjdGlvbiIsNyksX3UoMTAsImgzIiwxKSxQZigxMSwiU2NhbGFycyIpLEN1KCksX3UoMTIsImRpdiIsOCksX3UoMTMsImRpdiIsOSksUGYoMTQsIlNtb290aGluZyIpLEN1KCksX3UoMTUsImRpdiIsMTApLF91KDE2LCJtYXQtc2xpZGVyIiwxMSksRHUoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQuZW1pdChlLnZhbHVlKX0pKSxDdSgpLF91KDE3LCJpbnB1dCIsMTIpLER1KCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TY2FsYXJTbW9vdGhpbmdJbnB1dChlKX0pKSxDdSgpLEN1KCksQ3UoKSxfdSgxOCwiZGl2IiwxMyksX3UoMTksImRpdiIsMTQpLFBmKDIwLCJUb29sdGlwIHNvcnRpbmcgbWV0aG9kIiksQ3UoKSxfdSgyMSwidGItZHJvcGRvd24iLDQpLER1KCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnRvb2x0aXBTb3J0Q2hhbmdlZC5lbWl0KGUpfSkpLEN1KCksQ3UoKSxfdSgyMiwiZGl2IiwxNSksX3UoMjMsIm1hdC1jaGVja2JveCIsMTYpLER1KCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmlnbm9yZU91dGxpZXJzQ2hhbmdlZC5lbWl0KGUuY2hlY2tlZCl9KSksUGYoMjQsIklnbm9yZSBvdXRsaWVycyBpbiBjaGFydCBzY2FsaW5nIiksQ3UoKSxDdSgpLF91KDI1LCJkaXYiLDE3KSxfdSgyNiwibWF0LWNoZWNrYm94IiwxNiksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5zY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZC5lbWl0KCl9KSksUGYoMjcsIlBhcnRpdGlvbiBub24tbW9ub3RvbmljIFggYXhpcyIpLEN1KCksTXUoMjgsIm1hdC1pY29uIiwxOCksQ3UoKSxDdSgpLF91KDI5LCJzZWN0aW9uIiwxOSksX3UoMzAsImgzIiwxKSxQZigzMSwiSGlzdG9ncmFtcyIpLEN1KCksX3UoMzIsImRpdiIsMjApLF91KDMzLCJkaXYiLDE0KSxQZigzNCwiTW9kZSIpLEN1KCksX3UoMzUsInRiLWRyb3Bkb3duIiw0KSxEdSgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oaXN0b2dyYW1Nb2RlQ2hhbmdlZC5lbWl0KGUpfSkpLEN1KCksQ3UoKSxDdSgpLEhtKDM2LGRfdCwyMCwxMywic2VjdGlvbiIsMjEpKSwyJmUmJihEYyg2KSxodSgidmFsdWUiLG4ueEF4aXNUeXBlKSgib3B0aW9ucyIsbi5YQXhpc1R5cGVEcm9wZG93bk9wdGlvbnMpLERjKDEpLGh1KCJuZ0lmIixuLmlzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQpLERjKDEpLGh1KCJuZ0lmIixuLmlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkJiZuLnhBeGlzVHlwZT09bi5YQXhpc1R5cGUuU1RFUCksRGMoOCksaHUoIm1heCIsbi5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRSkoIm1pbiIsMCkoInN0ZXAiLC4wMSkoInZhbHVlIixuLnNjYWxhclNtb290aGluZykoInRodW1iTGFiZWwiLCEwKSxEYygxKSxodSgibWF4IixuLk1BWF9TTU9PVEhJTkdfVkFMVUUpKCJ2YWx1ZSIsbi5zY2FsYXJTbW9vdGhpbmcpLERjKDQpLGh1KCJ2YWx1ZSIsbi50b29sdGlwU29ydCkoIm9wdGlvbnMiLG4uVG9vbHRpcFNvcnREcm9wZG93bk9wdGlvbnMpLERjKDIpLGh1KCJjaGVja2VkIixuLmlnbm9yZU91dGxpZXJzKSxEYygzKSxodSgiY2hlY2tlZCIsbi5zY2FsYXJQYXJ0aXRpb25YKSxEYyg5KSxodSgidmFsdWUiLG4uaGlzdG9ncmFtTW9kZSkoIm9wdGlvbnMiLG4uSGlzdG9ncmFtTW9kZURyb3Bkb3duT3B0aW9ucyksRGMoMSksaHUoIm5nSWYiLG4uaXNJbWFnZVN1cHBvcnRFbmFibGVkKSl9LGRpcmVjdGl2ZXM6W3NfdCxQdixJSixrWixFcSxXTCxqMl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTJweH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9c2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtwYWRkaW5nOjE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnNlY3Rpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjAgMCAxMnB4IDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNlY3Rpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2VjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250cm9sLXJvd1tfbmdjb250ZW50LSVDT01QJV06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjEycHh9LmNvbnRyb2wtbmFtZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWJvdHRvbTo4cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI4cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnJlc2V0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6NnB4fS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXI6MXB4IHNvbGlkICM4ZTk4YTM7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7aGVpZ2h0OjEwMCU7bWFyZ2luLWxlZnQ6MTJweDtwYWRkaW5nOjAgNHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAuc2xpZGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzQyNTA2Nn0uc2NhbGFycy1zbW9vdGhpbmdbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO3dpZHRoOjVlbX0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV0gICAuaW5mb1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE1cHg7bWFyZ2luLWxlZnQ6NXB4O3dpZHRoOjE1cHh9bWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxO21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXJpZ2h0Oi04cHh9dGItZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9LmxpbmtlZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zdGVwLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjAgMTBweH0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjVweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobV90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNldHRpbmdzX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2gsc3R5bGVVcmxzOlsic2V0dGluZ3Nfdmlld19jb21wb25lbnQuY3NzIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbUV9dfV19XX0pLHtpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkOlt7dHlwZTpSX31dLGlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkOlt7dHlwZTpSX31dLHNlbGVjdFRpbWVFbmFibGVkOlt7dHlwZTpSX31dLHVzZVJhbmdlU2VsZWN0VGltZTpbe3R5cGU6Ul99XSxzZWxlY3RlZFRpbWU6W3t0eXBlOlJffV0sc3RlcE1pbk1heDpbe3R5cGU6Ul99XSxzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZDpbe3R5cGU6RV99XSxzZWxlY3RUaW1lQ2hhbmdlZDpbe3R5cGU6RV99XSxpc0ltYWdlU3VwcG9ydEVuYWJsZWQ6W3t0eXBlOlJffV0sdG9vbHRpcFNvcnQ6W3t0eXBlOlJffV0sdG9vbHRpcFNvcnRDaGFuZ2VkOlt7dHlwZTpFX31dLGlnbm9yZU91dGxpZXJzOlt7dHlwZTpSX31dLGlnbm9yZU91dGxpZXJzQ2hhbmdlZDpbe3R5cGU6RV99XSx4QXhpc1R5cGU6W3t0eXBlOlJffV0seEF4aXNUeXBlQ2hhbmdlZDpbe3R5cGU6RV99XSxjYXJkTWluV2lkdGg6W3t0eXBlOlJffV0sY2FyZFdpZHRoQ2hhbmdlZDpbe3R5cGU6RV99XSxjYXJkV2lkdGhSZXNldDpbe3R5cGU6RV99XSxoaXN0b2dyYW1Nb2RlOlt7dHlwZTpSX31dLGhpc3RvZ3JhbU1vZGVDaGFuZ2VkOlt7dHlwZTpFX31dLHNjYWxhclNtb290aGluZzpbe3R5cGU6Ul99XSxzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkOlt7dHlwZTpFX31dLHNjYWxhclBhcnRpdGlvblg6W3t0eXBlOlJffV0sc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQ6W3t0eXBlOkVffV0saW1hZ2VCcmlnaHRuZXNzSW5NaWxsaTpbe3R5cGU6Ul99XSxpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZDpbe3R5cGU6RV99XSxpbWFnZUJyaWdodG5lc3NSZXNldDpbe3R5cGU6RV99XSxpbWFnZUNvbnRyYXN0SW5NaWxsaTpbe3R5cGU6Ul99XSxpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQ6W3t0eXBlOkVffV0saW1hZ2VDb250cmFzdFJlc2V0Olt7dHlwZTpFX31dLGltYWdlU2hvd0FjdHVhbFNpemU6W3t0eXBlOlJffV0saW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQ6W3t0eXBlOkVffV19KTtjbGFzcyB1X3R7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuaXNDYXJkV2lkdGhTZXR0aW5nRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoS0QpLHRoaXMuaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KFpEKSx0aGlzLnNlbGVjdFRpbWVFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdChJeiksdGhpcy51c2VSYW5nZVNlbGVjdFRpbWUkPXRoaXMuc3RvcmUuc2VsZWN0KEh6KSx0aGlzLnNlbGVjdGVkVGltZSQ9dGhpcy5zdG9yZS5zZWxlY3QoTHopLHRoaXMuc3RlcE1pbk1heCQ9dGhpcy5zdG9yZS5zZWxlY3QoRnopLHRoaXMuaXNJbWFnZVN1cHBvcnRFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdChIRCkucGlwZShmZShCb29sZWFuKSx2ZSgxKSxxZSh0aGlzLnN0b3JlLnNlbGVjdChxRCkpLFZ0KCgoWyx0XSk9PnQpKSksdGhpcy50b29sdGlwU29ydCQ9dGhpcy5zdG9yZS5zZWxlY3QoUHopLHRoaXMuaWdub3JlT3V0bGllcnMkPXRoaXMuc3RvcmUuc2VsZWN0KHd6KSx0aGlzLnhBeGlzVHlwZSQ9dGhpcy5zdG9yZS5zZWxlY3Qoa3opLHRoaXMuY2FyZE1pbldpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChPeiksdGhpcy5oaXN0b2dyYW1Nb2RlJD10aGlzLnN0b3JlLnNlbGVjdChTeiksdGhpcy5zY2FsYXJTbW9vdGhpbmckPXRoaXMuc3RvcmUuc2VsZWN0KER6KSx0aGlzLnNjYWxhclBhcnRpdGlvblgkPXRoaXMuc3RvcmUuc2VsZWN0KFJ6KSx0aGlzLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KEV6KSx0aGlzLmltYWdlQ29udHJhc3RJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdChBeiksdGhpcy5pbWFnZVNob3dBY3R1YWxTaXplJD10aGlzLnN0b3JlLnNlbGVjdChUeil9b25Ub29sdGlwU29ydENoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChiQSh7c29ydDp0fSkpfW9uSWdub3JlT3V0bGllcnNDaGFuZ2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh5QSgpKX1vblhBeGlzVHlwZUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChfQSh7eEF4aXNUeXBlOnR9KSl9b25DYXJkV2lkdGhDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQ0Eoe2NhcmRNaW5XaWR0aDp0fSkpfW9uQ2FyZFdpZHRoUmVzZXQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKE1BKCkpfW9uSGlzdG9ncmFtTW9kZUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChEQSh7aGlzdG9ncmFtTW9kZTp0fSkpfW9uU2NhbGFyU21vb3RoaW5nQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHZBKHtzbW9vdGhpbmc6dH0pKX1vblNjYWxhclBhcnRpdGlvblhUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh4QSgpKX1vbkltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goT0Eoe2JyaWdodG5lc3NJbk1pbGxpOnR9KSl9b25JbWFnZUJyaWdodG5lc3NSZXNldCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2god0EoKSl9b25JbWFnZUNvbnRyYXN0UmVzZXQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGtBKCkpfW9uSW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUEEoe2NvbnRyYXN0SW5NaWxsaTp0fSkpfW9uSW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFNBKCkpfW9uU2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFVBKCkpfW9uU2VsZWN0VGltZUNoYW5nZWQodCl7dmFyIGU7dGhpcy5zdG9yZS5kaXNwYXRjaChCQSh7c3RhcnRTdGVwOnQuc3RhcnQuc3RlcCxlbmRTdGVwOm51bGw9PT0oZT10LmVuZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3RlcH0pKX19dV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1X3QpKGZ1KGlTKSl9LHVfdC7JtWNtcD1zbyh7dHlwZTp1X3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzIl1dLGRlY2xzOjE4LHZhcnM6NTEsY29uc3RzOltbMywiaXNJbWFnZVN1cHBvcnRFbmFibGVkIiwidG9vbHRpcFNvcnQiLCJpZ25vcmVPdXRsaWVycyIsInhBeGlzVHlwZSIsImlzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQiLCJjYXJkTWluV2lkdGgiLCJoaXN0b2dyYW1Nb2RlIiwic2NhbGFyU21vb3RoaW5nIiwic2NhbGFyUGFydGl0aW9uWCIsImltYWdlQnJpZ2h0bmVzc0luTWlsbGkiLCJpbWFnZUNvbnRyYXN0SW5NaWxsaSIsImltYWdlU2hvd0FjdHVhbFNpemUiLCJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCIsInNlbGVjdFRpbWVFbmFibGVkIiwic2VsZWN0ZWRUaW1lIiwidXNlUmFuZ2VTZWxlY3RUaW1lIiwic3RlcE1pbk1heCIsInRvb2x0aXBTb3J0Q2hhbmdlZCIsImlnbm9yZU91dGxpZXJzQ2hhbmdlZCIsInhBeGlzVHlwZUNoYW5nZWQiLCJjYXJkV2lkdGhDaGFuZ2VkIiwiY2FyZFdpZHRoUmVzZXQiLCJoaXN0b2dyYW1Nb2RlQ2hhbmdlZCIsInNjYWxhclNtb290aGluZ0NoYW5nZWQiLCJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIiwiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLCJpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQiLCJpbWFnZUNvbnRyYXN0UmVzZXQiLCJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCIsInNlbGVjdFRpbWVFbmFibGVUb2dnbGVkIiwic2VsZWN0VGltZUNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudCIsMCksRHUoInRvb2x0aXBTb3J0Q2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Ub29sdGlwU29ydENoYW5nZWQoZSl9KSkoImlnbm9yZU91dGxpZXJzQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbklnbm9yZU91dGxpZXJzQ2hhbmdlZCgpfSkpKCJ4QXhpc1R5cGVDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblhBeGlzVHlwZUNoYW5nZWQoZSl9KSkoImNhcmRXaWR0aENoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ2FyZFdpZHRoQ2hhbmdlZChlKX0pKSgiY2FyZFdpZHRoUmVzZXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25DYXJkV2lkdGhSZXNldCgpfSkpKCJoaXN0b2dyYW1Nb2RlQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25IaXN0b2dyYW1Nb2RlQ2hhbmdlZChlKX0pKSgic2NhbGFyU21vb3RoaW5nQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKGUpfSkpKCJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblNjYWxhclBhcnRpdGlvblhUb2dnbGVkKCl9KSkoImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkKGUpfSkpKCJpbWFnZUJyaWdodG5lc3NSZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCl9KSkoImltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25JbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQoZSl9KSkoImltYWdlQ29udHJhc3RSZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkltYWdlQ29udHJhc3RSZXNldCgpfSkpKCJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkKCl9KSkoInNlbGVjdFRpbWVFbmFibGVUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQoKX0pKSgic2VsZWN0VGltZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU2VsZWN0VGltZUNoYW5nZWQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksX3koMTAsImFzeW5jIiksX3koMTEsImFzeW5jIiksX3koMTIsImFzeW5jIiksX3koMTMsImFzeW5jIiksX3koMTQsImFzeW5jIiksX3koMTUsImFzeW5jIiksX3koMTYsImFzeW5jIiksX3koMTcsImFzeW5jIiksQ3UoKSksMiZlJiZodSgiaXNJbWFnZVN1cHBvcnRFbmFibGVkIixDeSgxLDE3LG4uaXNJbWFnZVN1cHBvcnRFbmFibGVkJCkpKCJ0b29sdGlwU29ydCIsQ3koMiwxOSxuLnRvb2x0aXBTb3J0JCkpKCJpZ25vcmVPdXRsaWVycyIsQ3koMywyMSxuLmlnbm9yZU91dGxpZXJzJCkpKCJ4QXhpc1R5cGUiLEN5KDQsMjMsbi54QXhpc1R5cGUkKSkoImlzQ2FyZFdpZHRoU2V0dGluZ0VuYWJsZWQiLEN5KDUsMjUsbi5pc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkJCkpKCJjYXJkTWluV2lkdGgiLEN5KDYsMjcsbi5jYXJkTWluV2lkdGgkKSkoImhpc3RvZ3JhbU1vZGUiLEN5KDcsMjksbi5oaXN0b2dyYW1Nb2RlJCkpKCJzY2FsYXJTbW9vdGhpbmciLEN5KDgsMzEsbi5zY2FsYXJTbW9vdGhpbmckKSkoInNjYWxhclBhcnRpdGlvblgiLEN5KDksMzMsbi5zY2FsYXJQYXJ0aXRpb25YJCkpKCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIixDeSgxMCwzNSxuLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkkKSkoImltYWdlQ29udHJhc3RJbk1pbGxpIixDeSgxMSwzNyxuLmltYWdlQ29udHJhc3RJbk1pbGxpJCkpKCJpbWFnZVNob3dBY3R1YWxTaXplIixDeSgxMiwzOSxuLmltYWdlU2hvd0FjdHVhbFNpemUkKSkoImlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkIixDeSgxMyw0MSxuLmlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkJCkpKCJzZWxlY3RUaW1lRW5hYmxlZCIsQ3koMTQsNDMsbi5zZWxlY3RUaW1lRW5hYmxlZCQpKSgic2VsZWN0ZWRUaW1lIixDeSgxNSw0NSxuLnNlbGVjdGVkVGltZSQpKSgidXNlUmFuZ2VTZWxlY3RUaW1lIixDeSgxNiw0NyxuLnVzZVJhbmdlU2VsZWN0VGltZSQpKSgic3RlcE1pbk1heCIsQ3koMTcsNDksbi5zdGVwTWluTWF4JCkpfSxkaXJlY3RpdmVzOlttX3RdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih1X3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50XG4gICAgICBbaXNJbWFnZVN1cHBvcnRFbmFibGVkXT0iaXNJbWFnZVN1cHBvcnRFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3Rvb2x0aXBTb3J0XT0idG9vbHRpcFNvcnQkIHwgYXN5bmMiXG4gICAgICAodG9vbHRpcFNvcnRDaGFuZ2VkKT0ib25Ub29sdGlwU29ydENoYW5nZWQoJGV2ZW50KSJcbiAgICAgIFtpZ25vcmVPdXRsaWVyc109Imlnbm9yZU91dGxpZXJzJCB8IGFzeW5jIlxuICAgICAgKGlnbm9yZU91dGxpZXJzQ2hhbmdlZCk9Im9uSWdub3JlT3V0bGllcnNDaGFuZ2VkKCkiXG4gICAgICBbeEF4aXNUeXBlXT0ieEF4aXNUeXBlJCB8IGFzeW5jIlxuICAgICAgKHhBeGlzVHlwZUNoYW5nZWQpPSJvblhBeGlzVHlwZUNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIFtpc0NhcmRXaWR0aFNldHRpbmdFbmFibGVkXT0iaXNDYXJkV2lkdGhTZXR0aW5nRW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIFtjYXJkTWluV2lkdGhdPSJjYXJkTWluV2lkdGgkIHwgYXN5bmMiXG4gICAgICAoY2FyZFdpZHRoQ2hhbmdlZCk9Im9uQ2FyZFdpZHRoQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKGNhcmRXaWR0aFJlc2V0KT0ib25DYXJkV2lkdGhSZXNldCgpIlxuICAgICAgW2hpc3RvZ3JhbU1vZGVdPSJoaXN0b2dyYW1Nb2RlJCB8IGFzeW5jIlxuICAgICAgKGhpc3RvZ3JhbU1vZGVDaGFuZ2VkKT0ib25IaXN0b2dyYW1Nb2RlQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgW3NjYWxhclNtb290aGluZ109InNjYWxhclNtb290aGluZyQgfCBhc3luYyJcbiAgICAgIChzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKT0ib25TY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKCRldmVudCkiXG4gICAgICBbc2NhbGFyUGFydGl0aW9uWF09InNjYWxhclBhcnRpdGlvblgkIHwgYXN5bmMiXG4gICAgICAoc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQpPSJvblNjYWxhclBhcnRpdGlvblhUb2dnbGVkKCkiXG4gICAgICBbaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaV09ImltYWdlQnJpZ2h0bmVzc0luTWlsbGkkIHwgYXN5bmMiXG4gICAgICAoaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQpPSJvbkltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoaW1hZ2VCcmlnaHRuZXNzUmVzZXQpPSJvbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCkiXG4gICAgICBbaW1hZ2VDb250cmFzdEluTWlsbGldPSJpbWFnZUNvbnRyYXN0SW5NaWxsaSQgfCBhc3luYyJcbiAgICAgIChpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQpPSJvbkltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKGltYWdlQ29udHJhc3RSZXNldCk9Im9uSW1hZ2VDb250cmFzdFJlc2V0KCkiXG4gICAgICBbaW1hZ2VTaG93QWN0dWFsU2l6ZV09ImltYWdlU2hvd0FjdHVhbFNpemUkIHwgYXN5bmMiXG4gICAgICAoaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQpPSJvbkltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkKCkiXG4gICAgICBbaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWRdPSJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RUaW1lRW5hYmxlZF09InNlbGVjdFRpbWVFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkVGltZV09InNlbGVjdGVkVGltZSQgfCBhc3luYyJcbiAgICAgIFt1c2VSYW5nZVNlbGVjdFRpbWVdPSJ1c2VSYW5nZVNlbGVjdFRpbWUkIHwgYXN5bmMiXG4gICAgICBbc3RlcE1pbk1heF09InN0ZXBNaW5NYXgkIHwgYXN5bmMiXG4gICAgICAoc2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQpPSJvblNlbGVjdFRpbWVFbmFibGVUb2dnbGVkKCkiXG4gICAgICAoc2VsZWN0VGltZUNoYW5nZWQpPSJvblNlbGVjdFRpbWVDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvbWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgZl90e31mdW5jdGlvbiBnX3QodCxlKXtpZigxJnQmJk11KDAsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsMTIpLDImdCl7aHUoImNhcmRPYnNlcnZlciIsTnUoKS5jYXJkT2JzZXJ2ZXIpfX1mdW5jdGlvbiBoX3QodCxlKXsxJnQmJihfdSgwLCJkaXYiLDE1KSxNdSgxLCJtYXQtc3Bpbm5lciIsMTYpLEN1KCkpfWZ1bmN0aW9uIGJfdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMTcpLF91KDEsImRpdiIsMTgpLF91KDIsImgyIiwxOSksUGYoMywiU2V0dGluZ3MiKSxDdSgpLF91KDQsImJ1dHRvbiIsMjApLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5vbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkLmVtaXQoKX0pKSxNdSg1LCJtYXQtaWNvbiIsMjEpLEN1KCksQ3UoKSxNdSg2LCJtZXRyaWNzLWRhc2hib2FyZC1yaWdodC1wYW5lIiksQ3UoKX19Zl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmX3QpfSxmX3QuybVjbXA9c28oe3R5cGU6Zl90LHNlbGVjdG9yczpbWyJtZXRyaWNzLWRhc2hib2FyZC1yaWdodC1wYW5lIl1dLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJk11KDAsIm1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzIil9LGRpcmVjdGl2ZXM6W3VfdF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihmX3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1kYXNoYm9hcmQtcmlnaHQtcGFuZSIsdGVtcGxhdGU6IjxtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncz48L21ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzPiIsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCxudWxsKTtjb25zdCB5X3Q9ZnVuY3Rpb24odCl7cmV0dXJue2NoZWNrZWQ6dCwic2V0dGluZ3MtYnV0dG9uIjohMH19O2NsYXNzIF9fdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmhvc3Q9dCx0aGlzLm9uU2V0dGluZ3NCdXR0b25DbGlja2VkPW5ldyBTeSx0aGlzLm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQ9bmV3IFN5LHRoaXMub25QbHVnaW5UeXBlVG9nZ2xlZD1uZXcgU3ksdGhpcy5vblBsdWdpblR5cGVBbGxUb2dnbGVkPW5ldyBTeSx0aGlzLlBsdWdpblR5cGU9UVQsdGhpcy5jYXJkT2JzZXJ2ZXI9bmV3IEU0KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCI2MDBweCAwcHggNjAwcHggMHB4Iil9fV9fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8X190KShmdShLaCkpfSxfX3QuybVjbXA9c28oe3R5cGU6X190LHNlbGVjdG9yczpbWyJtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnQiXV0saW5wdXRzOntzaG93RmlsdGVyZWRWaWV3OiJzaG93RmlsdGVyZWRWaWV3Iixpc1NpZGVwYW5lT3BlbjoiaXNTaWRlcGFuZU9wZW4iLGZpbHRlcmVkUGx1Z2luVHlwZXM6ImZpbHRlcmVkUGx1Z2luVHlwZXMiLGluaXRpYWxUYWdzTG9hZGluZzoiaW5pdGlhbFRhZ3NMb2FkaW5nIn0sb3V0cHV0czp7b25TZXR0aW5nc0J1dHRvbkNsaWNrZWQ6Im9uU2V0dGluZ3NCdXR0b25DbGlja2VkIixvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkOiJvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkIixvblBsdWdpblR5cGVUb2dnbGVkOiJvblBsdWdpblR5cGVUb2dnbGVkIixvblBsdWdpblR5cGVBbGxUb2dnbGVkOiJvblBsdWdpblR5cGVBbGxUb2dnbGVkIn0sZGVjbHM6MjIsdmFyczoyMSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJUb2dnbGUgc2V0dGluZ3Mgc2lkZSBwYW5lIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgb24gYSB0b29sYmFyIGJ1dHRvbiB0byB0b2dnbGUgdGhlIHNldHRpbmdzIHNpZGUgcGFuZS7ikJ9kMzUxNmRiNmJiZTY4NjBhNTViZWFiNjZlNDk2OWRhYzYyNWI4ZDcy4pCfNzY1OTI4NTQ0NTU4MDgzODkyNTpUb2dnbGUgc2V0dGluZ3Mgc2lkZSBwYW5lYDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7ZT1nb29nLmdldE1zZygiQ2xvc2Ugc2lkZSBwYW5lIil9ZWxzZSBlPSRsb2NhbGl6ZWA6TGFiZWwgb24gYSBidXR0b24gdG8gY2xvc2UgdGhlIHNldHRpbmdzIHNpZGUgcGFuZS7ikJ8wNDUyMWRjMGI2YTY1Y2Y1YzM4Mjk0NGM5YThiNGI4NDRhM2U5NTk44pCfODE1Njc2Njk5Nzc0NzE2NTg3MTpDbG9zZSBzaWRlIHBhbmVgO3JldHVybltbMSwidG9vbGJhciJdLFsibXVsdGlwbGUiLCIiLCJhcHBlYXJhbmNlIiwic3RhbmRhcmQiLDEsImZpbHRlci12aWV3Il0sWyJtYXQtYnV0dG9uIiwiIiwicm9sZSIsImNoZWNrYm94IiwiZGF0YS12YWx1ZSIsImFsbCIsMSwiZmlsdGVyLXZpZXctYnV0dG9uIiwzLCJjbGljayJdLFsibWF0LWJ1dHRvbiIsIiIsInJvbGUiLCJjaGVja2JveCIsImRhdGEtdmFsdWUiLCJzY2FsYXJzIiwxLCJmaWx0ZXItdmlldy1idXR0b24iLDMsImNsaWNrIl0sWyJtYXQtYnV0dG9uIiwiIiwicm9sZSIsImNoZWNrYm94IiwiZGF0YS12YWx1ZSIsImltYWdlIiwxLCJmaWx0ZXItdmlldy1idXR0b24iLDMsImNsaWNrIl0sWyJtYXQtYnV0dG9uIiwiIiwicm9sZSIsImNoZWNrYm94IiwiZGF0YS12YWx1ZSIsImhpc3RvZ3JhbSIsMSwiZmlsdGVyLXZpZXctYnV0dG9uIiwzLCJjbGljayJdLFsxLCJyaWdodC1pdGVtcyJdLFsibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJuZ0NsYXNzIiwiY2xpY2siXSxbInN2Z0ljb24iLCJzZXR0aW5nc18yNHB4Il0sWzEsInNwbGl0LWNvbnRlbnQiXSxbImNka1Njcm9sbGFibGUiLCIiXSxbMywiY2FyZE9ic2VydmVyIiw0LCJuZ0lmIl0sWzMsImNhcmRPYnNlcnZlciJdLFsiY2xhc3MiLCJsb2FkaW5nLWNvbnRhaW5lciIsNCwibmdJZiJdLFsiY2xhc3MiLCJzaWRlYmFyIiw0LCJuZ0lmIl0sWzEsImxvYWRpbmctY29udGFpbmVyIl0sWyJkaWFtZXRlciIsIjM2Il0sWzEsInNpZGViYXIiXSxbMSwiaGVhZGVyIl0sWzEsInRpdGxlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixlLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiY2xvc2VfMjRweCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksTXUoMSwibWV0cmljcy10YWctZmlsdGVyIiksX3UoMiwibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiLDEpLF91KDMsImJ1dHRvbiIsMiksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQuZW1pdCgpfSkpLFBmKDQsIiBBbGwgIiksQ3UoKSxfdSg1LCJidXR0b24iLDMpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBsdWdpblR5cGVUb2dnbGVkLmVtaXQobi5QbHVnaW5UeXBlLlNDQUxBUlMpfSkpLFBmKDYsIiBTY2FsYXJzICIpLEN1KCksX3UoNywiYnV0dG9uIiw0KSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QbHVnaW5UeXBlVG9nZ2xlZC5lbWl0KG4uUGx1Z2luVHlwZS5JTUFHRVMpfSkpLFBmKDgsIiBJbWFnZSAiKSxDdSgpLF91KDksImJ1dHRvbiIsNSksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZVRvZ2dsZWQuZW1pdChuLlBsdWdpblR5cGUuSElTVE9HUkFNUyl9KSksUGYoMTAsIiBIaXN0b2dyYW0gIiksQ3UoKSxDdSgpLF91KDExLCJkaXYiLDYpLF91KDEyLCJidXR0b24iLDcpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblNldHRpbmdzQnV0dG9uQ2xpY2tlZC5lbWl0KCl9KSksTXUoMTMsIm1hdC1pY29uIiw4KSxQZigxNCwiIFNldHRpbmdzICIpLEN1KCksQ3UoKSxDdSgpLF91KDE1LCJkaXYiLDkpLF91KDE2LCJkaXYiLDEwKSxIbSgxNyxnX3QsMSwxLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXciLDExKSxNdSgxOCwibWV0cmljcy1waW5uZWQtdmlldyIsMTIpLEhtKDE5LGhfdCwyLDAsImRpdiIsMTMpLE11KDIwLCJtZXRyaWNzLWNhcmQtZ3JvdXBzIiwxMiksQ3UoKSxIbSgyMSxiX3QsNywwLCJkaXYiLDE0KSxDdSgpKSwyJmUmJihEYygzKSx5bSgiYXJpYS1jaGVja2VkIiwwPT09bi5maWx0ZXJlZFBsdWdpblR5cGVzLnNpemUpLERjKDIpLHltKCJhcmlhLWNoZWNrZWQiLG4uZmlsdGVyZWRQbHVnaW5UeXBlcy5oYXMobi5QbHVnaW5UeXBlLlNDQUxBUlMpKSxEYygyKSx5bSgiYXJpYS1jaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5JTUFHRVMpKSxEYygyKSx5bSgiYXJpYS1jaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5ISVNUT0dSQU1TKSksRGMoMyksaHUoIm5nQ2xhc3MiLGl5KDE5LHlfdCxuLmlzU2lkZXBhbmVPcGVuKSkseW0oImFyaWEtcHJlc3NlZCIsbi5pc1NpZGVwYW5lT3BlbiksRGMoNCksY2YoIm1haW4iLCEwKSgiZmlsdGVyLXZpZXciLG4uc2hvd0ZpbHRlcmVkVmlldyksRGMoMSksaHUoIm5nSWYiLG4uc2hvd0ZpbHRlcmVkVmlldyksRGMoMSksbGYoImRpc3BsYXkiLG4uc2hvd0ZpbHRlcmVkVmlldz8ibm9uZSI6IiIpLGh1KCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKSxEYygxKSxodSgibmdJZiIsbi5pbml0aWFsVGFnc0xvYWRpbmcpLERjKDEpLGxmKCJkaXNwbGF5IixuLnNob3dGaWx0ZXJlZFZpZXc/Im5vbmUiOiIiKSxodSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlciksRGMoMSksaHUoIm5nSWYiLG4uaXNTaWRlcGFuZU9wZW4pKX0sZGlyZWN0aXZlczpbSDQsVzQsV0wsQ3YsRXEsc0IsUHYsVnl0LEp5dCxpX3QsZzIsZl90XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2ZsZXg6bm9uZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy10YWctZmlsdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMSAxMDBweH0udG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO21hcmdpbi1sZWZ0OjE2cHg7cGFkZGluZy1sZWZ0OjE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLnJpZ2h0LWl0ZW1zW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLnJpZ2h0LWl0ZW1zW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzU1NX0uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NHB4O2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fS5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6MDtmb250LXNpemU6MTJweDtmb250LXdlaWdodDpub3JtYWw7aGVpZ2h0OjI1cHg7bGluZS1oZWlnaHQ6MjVweDttaW4td2lkdGg6dW5zZXQ7cGFkZGluZzowIDEycHh9LmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gKyBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmVifWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdICsgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gKyBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bYXJpYS1jaGVja2VkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvblthcmlhLWNoZWNrZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW2FyaWEtY2hlY2tlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxfS5zcGxpdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7b3ZlcmZsb3cteTphdXRvO2ZsZXg6MX0ubWFpbltfbmdjb250ZW50LSVDT01QJV0sIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOnN0cmljdDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLHNjcm9sbC1wb3NpdGlvbn0ubWFpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjVmNmY3O2ZsZXg6MSAxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojM2EzYTNhfS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtZmlsdGVyZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLXBpbm5lZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5tYWluLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59Lm1haW4uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOmNvbnRlbnQ7b3ZlcmZsb3c6YXV0bzt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sc2Nyb2xsLXBvc2l0aW9ufS5sb2FkaW5nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoyMHB4IDB9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2ZsZXg6MCAwIDI1MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0Om5vcm1hbDttYXJnaW46MH1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtkaXNwbGF5OmlubGluZS1mbGV4fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfVtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uLmNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXItY29sb3I6I2UwZTBlMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uLmNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzIxMjEyMX1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAgIC5tYXQtYnV0dG9uLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9W19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo0cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKF9fdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJtYWluX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIm1haW5fdmlld19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOktofV19KSx7c2hvd0ZpbHRlcmVkVmlldzpbe3R5cGU6Ul99XSxpc1NpZGVwYW5lT3Blbjpbe3R5cGU6Ul99XSxmaWx0ZXJlZFBsdWdpblR5cGVzOlt7dHlwZTpSX31dLGluaXRpYWxUYWdzTG9hZGluZzpbe3R5cGU6Ul99XSxvblNldHRpbmdzQnV0dG9uQ2xpY2tlZDpbe3R5cGU6RV99XSxvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkOlt7dHlwZTpFX31dLG9uUGx1Z2luVHlwZVRvZ2dsZWQ6W3t0eXBlOkVffV0sb25QbHVnaW5UeXBlQWxsVG9nZ2xlZDpbe3R5cGU6RV99XX0pO2NsYXNzIENfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc1NpZGVwYW5lT3BlbiQ9dGhpcy5zdG9yZS5zZWxlY3QoanopLHRoaXMuaW5pdGlhbFRhZ3NMb2FkaW5nJD10aGlzLnN0b3JlLnNlbGVjdChheikucGlwZShqZSgodD0+bnVsbD09PXQubGFzdExvYWRlZFRpbWVJbk1zKSwhMCksVnQoKHQ9PnQuc3RhdGU9PT1HRS5MT0FESU5HJiZudWxsPT09dC5sYXN0TG9hZGVkVGltZUluTXMpKSksdGhpcy5zaG93RmlsdGVyZWRWaWV3JD10aGlzLnN0b3JlLnNlbGVjdChOeikucGlwZShWdCgodD0+dC5sZW5ndGg+MCkpKSx0aGlzLmZpbHRlcmVkUGx1Z2luVHlwZXMkPXRoaXMuc3RvcmUuc2VsZWN0KFZ6KX1vblNldHRpbmdzQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2godUEoKSl9b25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2gobUEoKSl9b25QbHVnaW5WaXNpYmlsaXR5VG9nZ2xlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEZBKHtwbHVnaW46dH0pKX1vblNob3dBbGxQbHVnaW5zKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChMQSgpKX19Q190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDX3QpKGZ1KGlTKSl9LENfdC7JtWNtcD1zbyh7dHlwZTpDX3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtbWFpbi12aWV3Il1dLGRlY2xzOjUsdmFyczoxMixjb25zdHM6W1szLCJzaG93RmlsdGVyZWRWaWV3IiwiaXNTaWRlcGFuZU9wZW4iLCJpbml0aWFsVGFnc0xvYWRpbmciLCJmaWx0ZXJlZFBsdWdpblR5cGVzIiwib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLCJvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkIiwib25QbHVnaW5UeXBlVG9nZ2xlZCIsIm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCIsMCksRHUoIm9uU2V0dGluZ3NCdXR0b25DbGlja2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCl9KSkoIm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCgpfSkpKCJvblBsdWdpblR5cGVUb2dnbGVkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblBsdWdpblZpc2liaWxpdHlUb2dnbGVkKGUpfSkpKCJvblBsdWdpblR5cGVBbGxUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2hvd0FsbFBsdWdpbnMoKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLEN1KCkpLDImZSYmaHUoInNob3dGaWx0ZXJlZFZpZXciLEN5KDEsNCxuLnNob3dGaWx0ZXJlZFZpZXckKSkoImlzU2lkZXBhbmVPcGVuIixDeSgyLDYsbi5pc1NpZGVwYW5lT3BlbiQpKSgiaW5pdGlhbFRhZ3NMb2FkaW5nIixDeSgzLDgsbi5pbml0aWFsVGFnc0xvYWRpbmckKSkoImZpbHRlcmVkUGx1Z2luVHlwZXMiLEN5KDQsMTAsbi5maWx0ZXJlZFBsdWdpblR5cGVzJCkpfSxkaXJlY3RpdmVzOltfX3RdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihDX3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1tYWluLXZpZXciLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50XG4gICAgICBbc2hvd0ZpbHRlcmVkVmlld109InNob3dGaWx0ZXJlZFZpZXckIHwgYXN5bmMiXG4gICAgICBbaXNTaWRlcGFuZU9wZW5dPSJpc1NpZGVwYW5lT3BlbiQgfCBhc3luYyJcbiAgICAgIFtpbml0aWFsVGFnc0xvYWRpbmddPSJpbml0aWFsVGFnc0xvYWRpbmckIHwgYXN5bmMiXG4gICAgICBbZmlsdGVyZWRQbHVnaW5UeXBlc109ImZpbHRlcmVkUGx1Z2luVHlwZXMkIHwgYXN5bmMiXG4gICAgICAob25TZXR0aW5nc0J1dHRvbkNsaWNrZWQpPSJvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCgpIlxuICAgICAgKG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQpPSJvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkKCkiXG4gICAgICAob25QbHVnaW5UeXBlVG9nZ2xlZCk9Im9uUGx1Z2luVmlzaWJpbGl0eVRvZ2dsZWQoJGV2ZW50KSJcbiAgICAgIChvblBsdWdpblR5cGVBbGxUb2dnbGVkKT0ib25TaG93QWxsUGx1Z2lucygpIlxuICAgID48L21ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NvbnN0IE1fdD1uZXcgZXIoIltNZXRyaWNzXSBNRVRSSUNTX1Byb21vIE1lc3NhZ2UgQ29tcG9uZW50Iik7ZnVuY3Rpb24gdl90KHQsZSl7MSZ0JiYodnUoMCksSHUoMSkseHUoKSl9Y2xhc3MgeF90e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9ZX1uZ09uSW5pdCgpe2lmKHRoaXMuY3VzdG9taXphYmxlQ29tcG9uZW50KXtjb25zdCB0PXRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY3VzdG9taXphYmxlQ29tcG9uZW50LmNvbnN0cnVjdG9yKTt0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHQpfX19eF90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4X3QpKGZ1KEZiKSxmdShHaCkpfSx4X3QuybVjbXA9c28oe3R5cGU6eF90LHNlbGVjdG9yczpbWyJ0Yi1jdXN0b21pemF0aW9uIl1dLGlucHV0czp7Y3VzdG9taXphYmxlQ29tcG9uZW50OiJjdXN0b21pemFibGVDb21wb25lbnQifSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoSXUoKSxIbSgwLHZfdCwyLDAsIm5nLWNvbnRhaW5lciIsMCkpLDImZSYmaHUoIm5nSWYiLCFuLmN1c3RvbWl6YWJsZUNvbXBvbmVudCl9LGRpcmVjdGl2ZXM6W1B2XSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHhfdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJ0Yi1jdXN0b21pemF0aW9uIix0ZW1wbGF0ZTonXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj0iIWN1c3RvbWl6YWJsZUNvbXBvbmVudCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpGYn0se3R5cGU6R2h9XX0pLHtjdXN0b21pemFibGVDb21wb25lbnQ6W3t0eXBlOlJffV19KTtjbGFzcyBPX3R7Y29uc3RydWN0b3IodCl7dGhpcy5jdXN0b21Qcm9tb01lc3NhZ2U9dCx0aGlzLm9uRGlzbWlzcz1uZXcgU3ksdGhpcy5vbkdvVG9TY2FsYXJzPW5ldyBTeX19T190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPX3QpKGZ1KE1fdCw4KSl9LE9fdC7JtWNtcD1zbyh7dHlwZTpPX3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudCJdXSxvdXRwdXRzOntvbkRpc21pc3M6Im9uRGlzbWlzcyIsb25Hb1RvU2NhbGFyczoib25Hb1RvU2NhbGFycyJ9LGRlY2xzOjcsdmFyczoxLGNvbnN0czpbWzEsIm1lc3NhZ2UiLDMsImN1c3RvbWl6YWJsZUNvbXBvbmVudCJdLFsxLCJnby10by1zY2FsYXJzIiwzLCJjbGljayJdLFsxLCJkaXNtaXNzIiwzLCJjbGljayJdLFsiaW5saW5lIiwiIiwic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsInRiLWN1c3RvbWl6YXRpb24iLDApLFBmKDEsIiBXZWxjb21lIHRvIG5ldyBkZWZhdWx0IGV4cGVyaWVuY2Ugb2YgVGVuc29yQm9hcmQuIFRpbWUgU2VyaWVzIGxldHMgeW91IHZpZXcgYWxsIHZpc3VhbGl6YXRpb25zIGF0IG9uY2UsIHB1dCB0aGVtIHNpZGUtYnktc2lkZSB3aXRoIHBpbnMsIGFuZCBjdXN0b21pemUgY29sb3JzLiBTY2FsYXJzIGFuZCBvdGhlciBwbHVnaW5zIGFyZSBzdGlsbCBhdmFpbGFibGUuICIpLF91KDIsImJ1dHRvbiIsMSksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR29Ub1NjYWxhcnMuZW1pdCgpfSkpLFBmKDMsIiBHbyB0byBTY2FsYXJzIHBsdWdpbiIpLEN1KCksUGYoNCwiLlxuIiksQ3UoKSxfdSg1LCJidXR0b24iLDIpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRpc21pc3MuZW1pdCgpfSkpLE11KDYsIm1hdC1pY29uIiwzKSxDdSgpKSwyJmUmJmh1KCJjdXN0b21pemFibGVDb21wb25lbnQiLG4uY3VzdG9tUHJvbW9NZXNzYWdlKX0sZGlyZWN0aXZlczpbeF90LEVxXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjE0cHg7Z2FwOjVweDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtsaW5lLWhlaWdodDoyMHB4O3BhZGRpbmc6NXB4IDEwcHh9YnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCk7Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjtmb250OmluaGVyaXQ7cGFkZGluZzowfWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX10Yi1jdXN0b21pemF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzE5NzZkMn0uZGlzbWlzc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24tc2VsZjpiYXNlbGluZTtmbGV4Om5vbmU7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoT190LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Im1ldHJpY3NfcHJvbW9fbm90aWNlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJtZXRyaWNzX3Byb21vX25vdGljZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmNyLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltNX3RdfV19XX0pLHtvbkRpc21pc3M6W3t0eXBlOkVffV0sb25Hb1RvU2NhbGFyczpbe3R5cGU6RV99XX0pO2NsYXNzIFBfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXR9b25EaXNtaXNzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChXQSgpKX1vbkdvVG9TY2FsYXJzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChHQSgpKX19ZnVuY3Rpb24gd190KHQsZSl7MSZ0JiZNdSgwLCJtZXRyaWNzLXByb21vLW5vdGljZSIsMyl9UF90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQX3QpKGZ1KGlTKSl9LFBfdC7JtWNtcD1zbyh7dHlwZTpQX3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtcHJvbW8tbm90aWNlIl1dLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWzMsIm9uRGlzbWlzcyIsIm9uR29Ub1NjYWxhcnMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudCIsMCksRHUoIm9uRGlzbWlzcyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRpc21pc3MoKX0pKSgib25Hb1RvU2NhbGFycyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkdvVG9TY2FsYXJzKCl9KSksQ3UoKSl9LGRpcmVjdGl2ZXM6W09fdF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQX3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1wcm9tby1ub3RpY2UiLHRlbXBsYXRlOic8bWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50XG4gICAgKG9uRGlzbWlzcyk9Im9uRGlzbWlzcygpIlxuICAgIChvbkdvVG9TY2FsYXJzKT0ib25Hb1RvU2NhbGFycygpIlxuICA+PC9tZXRyaWNzLXByb21vLW5vdGljZS1jb21wb25lbnQ+JyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIGtfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc0J1dHRlckJhckVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KFhEKS5waXBlKF9lKHRoaXMuc3RvcmUuc2VsZWN0KFV6KSksVnQoKChbdCxlXSk9PnQmJmUpKSl9fWtfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8a190KShmdShpUykpfSxrX3QuybVjbXA9c28oe3R5cGU6a190LHNlbGVjdG9yczpbWyJtZXRyaWNzLWRhc2hib2FyZCJdXSxkZWNsczo1LHZhcnM6Myxjb25zdHM6W1siY2xhc3MiLCJub3RpY2UiLDQsIm5nSWYiXSxbInNpZGViYXIiLCIiXSxbIm1haW4iLCIiXSxbMSwibm90aWNlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihIbSgwLHdfdCwxLDAsIm1ldHJpY3MtcHJvbW8tbm90aWNlIiwwKSxfeSgxLCJhc3luYyIpLF91KDIsInRiLWRhc2hib2FyZC1sYXlvdXQiKSxNdSgzLCJydW5zLXNlbGVjdG9yIiwxKSxNdSg0LCJtZXRyaWNzLW1haW4tdmlldyIsMiksQ3UoKSksMiZlJiZodSgibmdJZiIsQ3koMSwxLG4uaXNCdXR0ZXJCYXJFbmFibGVkJCkpfSxkaXJlY3RpdmVzOltQdixBMCxENCxDX3QsUF90XSxwaXBlczpbVnZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7anVzdGlmeS1jb250ZW50OnN0cmV0Y2g7b3ZlcmZsb3c6aGlkZGVufS5ub3RpY2VbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjQ1LDE1NywuODUpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmZmViM2I7Y29sb3I6IzIxMjEyMTtkaXNwbGF5OmJsb2NrO2ZsZXg6MCAwfXRiLWRhc2hib2FyZC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxO292ZXJmbG93OmhpZGRlbn1uYXZbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNlYmViZWI7ZmxleDpub25lO3dpZHRoOjM0MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG5hdltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG5hdltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwO2JvcmRlci1yaWdodC1jb2xvcjojNTU1fW1ldHJpY3MtbWFpbi12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa190LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZGFzaGJvYXJkIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpY3MtcHJvbW8tbm90aWNlXG4gICAgICAqbmdJZj0iaXNCdXR0ZXJCYXJFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgY2xhc3M9Im5vdGljZSJcbiAgICA+PC9tZXRyaWNzLXByb21vLW5vdGljZT5cbiAgICA8dGItZGFzaGJvYXJkLWxheW91dD5cbiAgICAgIDxydW5zLXNlbGVjdG9yIHNpZGViYXI+PC9ydW5zLXNlbGVjdG9yPlxuICAgICAgPG1ldHJpY3MtbWFpbi12aWV3IG1haW4+PC9tZXRyaWNzLW1haW4tdmlldz5cbiAgICA8L3RiLWRhc2hib2FyZC1sYXlvdXQ+XG4gICcsc3R5bGVVcmxzOlsibWV0cmljc19jb250YWluZXIuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBTX3R7fVNfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U190KX0sU190Lsm1bW9kPXVvKHt0eXBlOlNfdH0pLFNfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LEFxLFlMXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFNfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbQTBdLGV4cG9ydHM6W0EwXSxpbXBvcnRzOltyeCxBcSxZTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhTX3Qse2RlY2xhcmF0aW9uczpbQTBdLGltcG9ydHM6W3J4LEFxLFlMXSxleHBvcnRzOltBMF19KTtjbGFzcyBEX3R7fURfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RF90KX0sRF90Lsm1bW9kPXVvKHt0eXBlOkRfdH0pLERfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERfdCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4XSxkZWNsYXJhdGlvbnM6W3hfdF0sZXhwb3J0czpbeF90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKERfdCx7ZGVjbGFyYXRpb25zOlt4X3RdLGltcG9ydHM6W3J4XSxleHBvcnRzOlt4X3RdfSk7Y2xhc3MgUl90e31SX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJfdCl9LFJfdC7JtW1vZD11byh7dHlwZTpSX3R9KSxSX3QuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUl90LFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbWTJdLGRlY2xhcmF0aW9uczpbWTJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oUl90LHtkZWNsYXJhdGlvbnM6W1kyXSxleHBvcnRzOltZMl19KTtjbGFzcyBFX3R7fUVfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RV90KX0sRV90Lsm1bW9kPXVvKHt0eXBlOkVfdH0pLEVfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFJfdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFX3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxSX3RdLGV4cG9ydHM6W1gyXSxkZWNsYXJhdGlvbnM6W1gyXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKEVfdCx7ZGVjbGFyYXRpb25zOltYMl0saW1wb3J0czpbcngsUl90XSxleHBvcnRzOltYMl19KTtjbGFzcyBBX3R7fUFfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QV90KX0sQV90Lsm1bW9kPXVvKHt0eXBlOkFfdH0pLEFfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LG8yLEFxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEFfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbaTJdLGV4cG9ydHM6W2kyXSxpbXBvcnRzOltyeCxvMixBcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhBX3Qse2RlY2xhcmF0aW9uczpbaTJdLGltcG9ydHM6W3J4LG8yLEFxXSxleHBvcnRzOltpMl19KTtjbGFzcyBUX3R7fVRfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VF90KX0sVF90Lsm1bW9kPXVvKHt0eXBlOlRfdH0pLFRfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LEJKXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFRfdCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LEJKXSxleHBvcnRzOltqMl0sZGVjbGFyYXRpb25zOltqMl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhUX3Qse2RlY2xhcmF0aW9uczpbajJdLGltcG9ydHM6W3J4LEJKXSxleHBvcnRzOltqMl19KTtjbGFzcyBOX3R7fU5fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Tl90KX0sTl90Lsm1bW9kPXVvKHt0eXBlOk5fdH0pLE5fdC7JtWluaj1Ebih7aW1wb3J0czpbW0Y1LHJ4LEVfdCxBX3QsUmosWUwsRVosbXEsalosQXEsYVosbTEsaDIsTzEsSDMsVF90LFpWXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE5fdCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W0Y1LHJ4LEVfdCxBX3QsUmosWUwsRVosbXEsalosQXEsYVosbTEsaDIsTzEsSDMsVF90LFpWXSxleHBvcnRzOltrNF0sZW50cnlDb21wb25lbnRzOltTMl0sZGVjbGFyYXRpb25zOltrMixTMixIMixGMix4NCxrNF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhOX3Qse2RlY2xhcmF0aW9uczpbazIsUzIsSDIsRjIseDQsazRdLGltcG9ydHM6W0Y1LHJ4LEVfdCxBX3QsUmosWUwsRVosbXEsalosQXEsYVosbTEsaDIsTzEsSDMsVF90LFpWXSxleHBvcnRzOltrNF19KTtjbGFzcyB6X3R7fXpfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8el90KX0sel90Lsm1bW9kPXVvKHt0eXBlOnpfdH0pLHpfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LE5fdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6X3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltyeCxOX3RdLGV4cG9ydHM6W0Q0XSxkZWNsYXJhdGlvbnM6W1M0LEQ0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHpfdCx7ZGVjbGFyYXRpb25zOltTNCxENF0saW1wb3J0czpbcngsTl90XSxleHBvcnRzOltENF19KTtjbGFzcyBJX3R7fUlfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SV90KX0sSV90Lsm1bW9kPXVvKHt0eXBlOklfdH0pLElfdC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihJX3QsW3t0eXBlOkxfLGFyZ3M6W3tleHBvcnRzOltCYnRdLGRlY2xhcmF0aW9uczpbQmJ0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKElfdCx7ZGVjbGFyYXRpb25zOltCYnRdLGV4cG9ydHM6W0JidF19KTtjbGFzcyBIX3R7fUhfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SF90KX0sSF90Lsm1bW9kPXVvKHt0eXBlOkhfdH0pLEhfdC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LEFxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEhfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbZ2J0LHZidF0sZXhwb3J0czpbZ2J0LHZidF0saW1wb3J0czpbcngsQXFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oSF90LHtkZWNsYXJhdGlvbnM6W2didCx2YnRdLGltcG9ydHM6W3J4LEFxXSxleHBvcnRzOltnYnQsdmJ0XX0pO2NsYXNzIEZfdHtjb25zdHJ1Y3Rvcigpe3RoaXMub25TZWxlY3RUaW1lQ2hhbmdlZD1uZXcgU3ksdGhpcy5heGlzRGlyZWN0aW9uPXBidC5WRVJUSUNBTH1nZXRIaWdoZXN0U3RlcCgpe3JldHVybiB0aGlzLnN0ZXBzW3RoaXMuc3RlcHMubGVuZ3RoLTFdfWdldExvd2VzdFN0ZXAoKXtyZXR1cm4gdGhpcy5zdGVwc1swXX1nZXRBeGlzUG9zaXRpb25Gcm9tU3RlcCh0KXtyZXR1cm4gdGhpcy50ZW1wb3JhbFNjYWxlKHQpfWdldFN0ZXBIaWdoZXJUaGFuQXhpc1Bvc2l0aW9uKHQpe2xldCBlPTA7Zm9yKDt0PnRoaXMudGVtcG9yYWxTY2FsZSh0aGlzLnN0ZXBzW2VdKSYmZTx0aGlzLnN0ZXBzLmxlbmd0aC0xOyllKys7cmV0dXJuIHRoaXMuc3RlcHNbZV19Z2V0U3RlcExvd2VyVGhhbkF4aXNQb3NpdGlvbih0KXtsZXQgZT10aGlzLnN0ZXBzLmxlbmd0aC0xO2Zvcig7dDx0aGlzLnRlbXBvcmFsU2NhbGUodGhpcy5zdGVwc1tlXSkmJmU+MDspZS0tO3JldHVybiB0aGlzLnN0ZXBzW2VdfX1GX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZfdCl9LEZfdC7JtWNtcD1zbyh7dHlwZTpGX3Qsc2VsZWN0b3JzOltbImhpc3RvZ3JhbS1saW5rZWQtdGltZS1mb2ItY29udHJvbGxlciJdXSxpbnB1dHM6e3N0ZXBzOiJzdGVwcyIsbGlua2VkVGltZToibGlua2VkVGltZSIsdGVtcG9yYWxTY2FsZToidGVtcG9yYWxTY2FsZSJ9LG91dHB1dHM6e29uU2VsZWN0VGltZUNoYW5nZWQ6Im9uU2VsZWN0VGltZUNoYW5nZWQifSxkZWNsczoxLHZhcnM6Myxjb25zdHM6W1szLCJheGlzRGlyZWN0aW9uIiwibGlua2VkVGltZSIsImNhcmRBZGFwdGVyIiwib25TZWxlY3RUaW1lQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwibGlua2VkLXRpbWUtZm9iLWNvbnRyb2xsZXIiLDApLER1KCJvblNlbGVjdFRpbWVDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQoZSl9KSksQ3UoKSksMiZlJiZodSgiYXhpc0RpcmVjdGlvbiIsbi5heGlzRGlyZWN0aW9uKSgibGlua2VkVGltZSIsbi5saW5rZWRUaW1lKSgiY2FyZEFkYXB0ZXIiLG4pfSxkaXJlY3RpdmVzOlt2YnRdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRl90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Imhpc3RvZ3JhbS1saW5rZWQtdGltZS1mb2ItY29udHJvbGxlciIsdGVtcGxhdGU6J1xuICAgIDxsaW5rZWQtdGltZS1mb2ItY29udHJvbGxlclxuICAgICAgW2F4aXNEaXJlY3Rpb25dPSJheGlzRGlyZWN0aW9uIlxuICAgICAgW2xpbmtlZFRpbWVdPSJsaW5rZWRUaW1lIlxuICAgICAgW2NhcmRBZGFwdGVyXT0idGhpcyJcbiAgICAgIChvblNlbGVjdFRpbWVDaGFuZ2VkKT0ib25TZWxlY3RUaW1lQ2hhbmdlZC5lbWl0KCRldmVudCkiXG4gICAgPjwvbGlua2VkLXRpbWUtZm9iLWNvbnRyb2xsZXI+XG4gICd9XX1dLG51bGwse3N0ZXBzOlt7dHlwZTpSX31dLGxpbmtlZFRpbWU6W3t0eXBlOlJffV0sdGVtcG9yYWxTY2FsZTpbe3R5cGU6Ul99XSxvblNlbGVjdFRpbWVDaGFuZ2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgTF90e31MX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExfdCl9LExfdC7JtW1vZD11byh7dHlwZTpMX3R9KSxMX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxxJCxJX3QsSF90XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKExfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbYXl0LEZfdF0sZXhwb3J0czpbYXl0XSxpbXBvcnRzOltyeCxxJCxJX3QsSF90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKExfdCx7ZGVjbGFyYXRpb25zOltheXQsRl90XSxpbXBvcnRzOltyeCxxJCxJX3QsSF90XSxleHBvcnRzOltheXRdfSksbG8oYXl0LFtjJCxCYnQsUHYsRl90LHh2XSxbXSk7Y2xhc3MgQl90e31CX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJfdCl9LEJfdC7JtW1vZD11byh7dHlwZTpCX3R9KSxCX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6WyQ0XSxleHBvcnRzOlskNF0saW1wb3J0czpbcnhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oQl90LHtkZWNsYXJhdGlvbnM6WyQ0XSxpbXBvcnRzOltyeF0sZXhwb3J0czpbJDRdfSk7Y2xhc3MgVl90e31WX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZfdCl9LFZfdC7JtW1vZD11byh7dHlwZTpWX3R9KSxWX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxFX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVl90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltyNixhNl0sZXhwb3J0czpbcjZdLGltcG9ydHM6W3J4LEVfdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhWX3Qse2RlY2xhcmF0aW9uczpbcjYsYTZdLGltcG9ydHM6W3J4LEVfdF0sZXhwb3J0czpbcjZdfSk7Y2xhc3MgVV90e31VX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVfdCl9LFVfdC7JtW1vZD11byh7dHlwZTpVX3R9KSxVX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxBcV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W242XSxleHBvcnRzOltuNl0saW1wb3J0czpbcngsQXFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oVV90LHtkZWNsYXJhdGlvbnM6W242XSxpbXBvcnRzOltyeCxBcV0sZXhwb3J0czpbbjZdfSk7Y2xhc3Mgal90e31qX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpfdCl9LGpfdC7JtW1vZD11byh7dHlwZTpqX3R9KSxqX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxMX3QsWUwsQXEsaDIsVl90LEJfdCxVX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoal90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltneXQsZnl0XSxleHBvcnRzOltneXRdLGltcG9ydHM6W3J4LExfdCxZTCxBcSxoMixWX3QsQl90LFVfdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhqX3Qse2RlY2xhcmF0aW9uczpbZ3l0LGZ5dF0saW1wb3J0czpbcngsTF90LFlMLEFxLGgyLFZfdCxCX3QsVV90XSxleHBvcnRzOltneXRdfSk7Y2xhc3MgV190e31XX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFdfdCl9LFdfdC7JtW1vZD11byh7dHlwZTpXX3R9KSxXX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxZTCxBcSxoMixCSixWX3QsQl90LFVfdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihXX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0M2LF82XSxleHBvcnRzOltDNl0saW1wb3J0czpbcngsWUwsQXEsaDIsQkosVl90LEJfdCxVX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oV190LHtkZWNsYXJhdGlvbnM6W0M2LF82XSxpbXBvcnRzOltyeCxZTCxBcSxoMixCSixWX3QsQl90LFVfdF0sZXhwb3J0czpbQzZdfSk7Y2xhc3MgR190e31HX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdfdCl9LEdfdC7JtW1vZD11byh7dHlwZTpHX3R9KSxHX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx1VixZTCxBcSxqWixhWl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihHX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0dodCxGaHQsUGh0XSxleHBvcnRzOltHaHQsRmh0LFBodF0saW1wb3J0czpbcngsdVYsWUwsQXEsalosYVpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oR190LHtkZWNsYXJhdGlvbnM6W0dodCxGaHQsUGh0XSxpbXBvcnRzOltyeCx1VixZTCxBcSxqWixhWl0sZXhwb3J0czpbR2h0LEZodCxQaHRdfSk7Y2xhc3MgWV90e31ZX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFlfdCl9LFlfdC7JtW1vZD11byh7dHlwZTpZX3R9KSxZX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx1VixHX3QscSRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWV90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltkYnRdLGV4cG9ydHM6W2RidF0saW1wb3J0czpbcngsdVYsR190LHEkXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFlfdCx7ZGVjbGFyYXRpb25zOltkYnRdLGltcG9ydHM6W3J4LHVWLEdfdCxxJF0sZXhwb3J0czpbZGJ0XX0pO2NsYXNzIHFfdHt9cV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxX3QpfSxxX3QuybVtb2Q9dW8oe3R5cGU6cV90fSkscV90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsZFksWUwsbXEsaloselksak5dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocV90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltUNixBNl0sZXhwb3J0czpbVDZdLGltcG9ydHM6W3J4LGRZLFlMLG1xLGpaLHpZLGpOXSxlbnRyeUNvbXBvbmVudHM6W1Q2XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHFfdCx7ZGVjbGFyYXRpb25zOltUNixBNl0saW1wb3J0czpbcngsZFksWUwsbXEsaloselksak5dLGV4cG9ydHM6W1Q2XX0pO2NsYXNzIFpfdHt9Wl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaX3QpfSxaX3QuybVtb2Q9dW8oe3R5cGU6Wl90fSksWl90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngscV90LEVfdCxJX3QsWV90LEhfdCxZTCxBcSxhWixoMixxJCxCX3QsVV90XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFpfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbVWJ0LExidCx4YnRdLGV4cG9ydHM6W1VidF0saW1wb3J0czpbcngscV90LEVfdCxJX3QsWV90LEhfdCxZTCxBcSxhWixoMixxJCxCX3QsVV90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFpfdCx7ZGVjbGFyYXRpb25zOltVYnQsTGJ0LHhidF0saW1wb3J0czpbcngscV90LEVfdCxJX3QsWV90LEhfdCxZTCxBcSxhWixoMixxJCxCX3QsVV90XSxleHBvcnRzOltVYnRdfSk7Y2xhc3MgWF90e31YX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhfdCl9LFhfdC7JtW1vZD11byh7dHlwZTpYX3R9KSxYX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxXX3QsWl90LGpfdCxJX3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoWF90LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltBNCxNeXQsdnl0XSxleHBvcnRzOltBNCx2eXRdLGltcG9ydHM6W3J4LFdfdCxaX3Qsal90LElfdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhYX3Qse2RlY2xhcmF0aW9uczpbQTQsTXl0LHZ5dF0saW1wb3J0czpbcngsV190LFpfdCxqX3QsSV90XSxleHBvcnRzOltBNCx2eXRdfSk7Y2xhc3MgS190e31LX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtfdCl9LEtfdC7JtW1vZD11byh7dHlwZTpLX3R9KSxLX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx6WV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3NfdF0sZXhwb3J0czpbc190XSxpbXBvcnRzOltyeCx6WV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhLX3Qse2RlY2xhcmF0aW9uczpbc190XSxpbXBvcnRzOltyeCx6WV0sZXhwb3J0czpbc190XX0pO2NsYXNzIEpfdHt9Sl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKX3QpfSxKX3QuybVtb2Q9dW8oe3R5cGU6Sl90fSksSl90Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsS190LFlMLHE0LEVaLEFxLHpZLEJKLFVOLFRfdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihKX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2ZfdCxtX3QsdV90XSxleHBvcnRzOltmX3RdLGltcG9ydHM6W3J4LEtfdCxZTCxxNCxFWixBcSx6WSxCSixVTixUX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oSl90LHtkZWNsYXJhdGlvbnM6W2ZfdCxtX3QsdV90XSxpbXBvcnRzOltyeCxLX3QsWUwscTQsRVosQXEselksQkosVU4sVF90XSxleHBvcnRzOltmX3RdfSk7Y2xhc3MgUV90e31RX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFFfdCl9LFFfdC7JtW1vZD11byh7dHlwZTpRX3R9KSxRX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tYX3QscngsQV90LG8yLFlMLHE0LEFxLGpaLGgyLEpfdCxmQl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihRX3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W055dCx6eXQsS3l0LEp5dCxxeXQsWnl0LCR5dCx0X3Qsb190LGlfdCxfX3QsQ190LEk0LEg0LEJ5dCxWeXRdLGV4cG9ydHM6W0NfdF0saW1wb3J0czpbWF90LHJ4LEFfdCxvMixZTCxxNCxBcSxqWixoMixKX3QsZkJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oUV90LHtkZWNsYXJhdGlvbnM6W055dCx6eXQsS3l0LEp5dCxxeXQsWnl0LCR5dCx0X3Qsb190LGlfdCxfX3QsQ190LEk0LEg0LEJ5dCxWeXRdLGltcG9ydHM6W1hfdCxyeCxBX3QsbzIsWUwscTQsQXEsalosaDIsSl90LGZCXSxleHBvcnRzOltDX3RdfSk7Y2xhc3MgJF90e30kX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRfdCl9LCRfdC7JtW1vZD11byh7dHlwZTokX3R9KSwkX3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxEX3QsU190LFFfdCxBcSxKX3Qsel90XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKCRfdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpba190LE9fdCxQX3RdLGV4cG9ydHM6W2tfdF0saW1wb3J0czpbcngsRF90LFNfdCxRX3QsQXEsSl90LHpfdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbygkX3Qse2RlY2xhcmF0aW9uczpba190LE9fdCxQX3RdLGltcG9ydHM6W3J4LERfdCxTX3QsUV90LEFxLEpfdCx6X3RdLGV4cG9ydHM6W2tfdF19KTtmdW5jdGlvbiB0Q3QoKXtyZXR1cm5be2FjdGlvbkNyZWF0b3I6SEEsYWxlcnRGcm9tQWN0aW9uOnQ9Pntjb25zdHt3YXNQaW5uZWQ6ZSxjYW5DcmVhdGVOZXdQaW5zOm59PXQ7cmV0dXJuIGV8fG4/bnVsbDp7bG9jYWxpemVkTWVzc2FnZToiTWF4IHBpbiBsaW1pdCBleGNlZWRlZC4gUmVtb3ZlIGV4aXN0aW5nIHBpbnMgYmVmb3JlIGFkZGluZyBtb3JlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvaXNzdWVzLzQyNDIifX19XX1mdW5jdGlvbiBlQ3QoKXtyZXR1cm4gYlMoRHosKHQ9Pih7c2NhbGFyU21vb3RoaW5nOnR9KSkpfWZ1bmN0aW9uIG5DdCgpe3JldHVybiBiUyh3eiwodD0+KHtpZ25vcmVPdXRsaWVyczp0fSkpKX1mdW5jdGlvbiBvQ3QoKXtyZXR1cm4gYlMoUHosKHQ9Pih7dG9vbHRpcFNvcnRTdHJpbmc6U3RyaW5nKHQpfSkpKX1mdW5jdGlvbiBpQ3QoKXtyZXR1cm4gYlMoVXosKHQ9Pih7dGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZDohdH0pKSl9ZnVuY3Rpb24gYUN0KCl7cmV0dXJuIGJTKGp6LCh0PT4oe3RpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ6dH0pKSl9ZnVuY3Rpb24gckN0KCl7cmV0dXJuIGJTKE96LCh0PT4oe3RpbWVTZXJpZXNDYXJkTWluV2lkdGg6dH0pKSl9Y2xhc3Mgc0N0e31mdW5jdGlvbiBsQ3QodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCgiY291bnRAIil9ZnVuY3Rpb24gY0N0KHQpe3JldHVybiB0LnN0YXJ0c1dpdGgoIm5QTUlAIil8fHQuc3RhcnRzV2l0aCgiblBNSV9kaWZmQCIpfWZ1bmN0aW9uIGRDdCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCJuUE1JQCIpfWZ1bmN0aW9uIHBDdCh0KXtyZXR1cm4gdC5zcGxpdCgiQCIsMilbMV19c0N0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzQ3QpfSxzQ3QuybVtb2Q9dW8oe3R5cGU6c0N0fSksc0N0Lsm1aW5qPURuKHtwcm92aWRlcnM6W3twcm92aWRlOngwLHVzZUZhY3Rvcnk6UDAsZGVwczpbTzBdfSx7cHJvdmlkZTpPMCx1c2VWYWx1ZTpven1dLGltcG9ydHM6W1tyeCxOUixtVCxFWC5mb3JQbHVnaW4oZU4sa190KSxqTiwkX3QsVFMuZm9yRmVhdHVyZShueixiMCx4MCksaEQuZm9yRmVhdHVyZShbdjBdKSxmVC5yZWdpc3RlckFsZXJ0QWN0aW9ucyh0Q3QpLExSLmRlZmluZUdsb2JhbFNldHRpbmcoZUN0KSxMUi5kZWZpbmVHbG9iYWxTZXR0aW5nKG5DdCksTFIuZGVmaW5lR2xvYmFsU2V0dGluZyhvQ3QpLExSLmRlZmluZUdsb2JhbFNldHRpbmcoaUN0KSxMUi5kZWZpbmVHbG9iYWxTZXR0aW5nKGFDdCksTFIuZGVmaW5lR2xvYmFsU2V0dGluZyhyQ3QpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHNDdCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W3J4LE5SLG1ULEVYLmZvclBsdWdpbihlTixrX3QpLGpOLCRfdCxUUy5mb3JGZWF0dXJlKG56LGIwLHgwKSxoRC5mb3JGZWF0dXJlKFt2MF0pLGZULnJlZ2lzdGVyQWxlcnRBY3Rpb25zKHRDdCksTFIuZGVmaW5lR2xvYmFsU2V0dGluZyhlQ3QpLExSLmRlZmluZUdsb2JhbFNldHRpbmcobkN0KSxMUi5kZWZpbmVHbG9iYWxTZXR0aW5nKG9DdCksTFIuZGVmaW5lR2xvYmFsU2V0dGluZyhpQ3QpLExSLmRlZmluZUdsb2JhbFNldHRpbmcoYUN0KSxMUi5kZWZpbmVHbG9iYWxTZXR0aW5nKHJDdCldLHByb3ZpZGVyczpbe3Byb3ZpZGU6eDAsdXNlRmFjdG9yeTpQMCxkZXBzOltPMF19LHtwcm92aWRlOk8wLHVzZVZhbHVlOm96fV0sZW50cnlDb21wb25lbnRzOltrX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oc0N0LHtpbXBvcnRzOltyeCxOUixtVCxFWCxqTiwkX3QsQVMsZ0QsZlQsTFIsTFIsTFIsTFIsTFIsTFJdfSk7dmFyIG1DdD17fSx1Q3Q9e30sZkN0PXt9LGdDdD17fSxoQ3Q9X08mJl9PLl9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19O2Z1bmN0aW9uIGJDdCh0LGUpe3JldHVybiBNYXRoLmZsb29yKGUoKSp0KX1mdW5jdGlvbiB5Q3QodCl7Zm9yKHZhciBlPVtdLG49MDtuPHQ7bisrKWUucHVzaCh2b2lkIDApO3JldHVybiBlfWZ1bmN0aW9uIF9DdCh0LGUpe3JldHVybiB5Q3QodCkubWFwKChmdW5jdGlvbigpe3JldHVybiBlfSkpfWZ1bmN0aW9uIENDdCh0KXtyZXR1cm4gX0N0KHQsMCl9ZnVuY3Rpb24gTUN0KHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSkpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShnQ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGdDdC50YXVSYW5kSW50PWJDdCxnQ3QudGF1UmFuZD1mdW5jdGlvbiB2Q3QodCl7cmV0dXJuIHQoKX0sZ0N0Lm5vcm09ZnVuY3Rpb24geEN0KHQpe3ZhciBlLG4sbz0wO3RyeXtmb3IodmFyIGk9aEN0KHQpLGE9aS5uZXh0KCk7IWEuZG9uZTthPWkubmV4dCgpKXtvKz1NYXRoLnBvdyhhLnZhbHVlLDIpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIE1hdGguc3FydChvKX0sZ0N0LmVtcHR5PXlDdCxnQ3QucmFuZ2U9ZnVuY3Rpb24gT0N0KHQpe3JldHVybiB5Q3QodCkubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpfSxnQ3QuZmlsbGVkPV9DdCxnQ3QuemVyb3M9Q0N0LGdDdC5vbmVzPWZ1bmN0aW9uIFBDdCh0KXtyZXR1cm4gX0N0KHQsMSl9LGdDdC5saW5lYXI9ZnVuY3Rpb24gd0N0KHQsZSxuKXtyZXR1cm4geUN0KG4pLm1hcCgoZnVuY3Rpb24obyxpKXtyZXR1cm4gdCtpKigoZS10KS8obi0xKSl9KSl9LGdDdC5zdW09TUN0LGdDdC5tZWFuPWZ1bmN0aW9uIGtDdCh0KXtyZXR1cm4gTUN0KHQpL3QubGVuZ3RofSxnQ3QubWF4PWZ1bmN0aW9uIFNDdCh0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZT10W25dPmU/dFtuXTplO3JldHVybiBlfSxnQ3QubWF4MmQ9ZnVuY3Rpb24gREN0KHQpe2Zvcih2YXIgZT0wLG49MDtuPHQubGVuZ3RoO24rKylmb3IodmFyIG89MDtvPHRbbl0ubGVuZ3RoO28rKyllPXRbbl1bb10+ZT90W25dW29dOmU7cmV0dXJuIGV9LGdDdC5yZWplY3Rpb25TYW1wbGU9ZnVuY3Rpb24gUkN0KHQsZSxuKXtmb3IodmFyIG89Q0N0KHQpLGk9MDtpPHQ7aSsrKWZvcih2YXIgYT0hMDthOyl7Zm9yKHZhciByPWJDdChlLG4pLHM9ITEsbD0wO2w8aTtsKyspaWYocj09PW9bbF0pe3M9ITA7YnJlYWt9c3x8KGE9ITEpLG9baV09cn1yZXR1cm4gb30sZ0N0LnJlc2hhcGUyZD1mdW5jdGlvbiBFQ3QodCxlLG4pe3ZhciBvPVtdLGk9MDtpZih0Lmxlbmd0aCE9PWUqbil0aHJvdyBuZXcgRXJyb3IoIkFycmF5IGRpbWVuc2lvbnMgbXVzdCBtYXRjaCBpbnB1dCBsZW5ndGguIik7Zm9yKHZhciBhPTA7YTxlO2ErKyl7Zm9yKHZhciByPVtdLHM9MDtzPG47cysrKXIucHVzaCh0W2ldKSxpKz0xO28ucHVzaChyKX1yZXR1cm4gb307dmFyIEFDdD1fTyYmX08uX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGZDdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFRDdD1BQ3QoZ0N0KTtmdW5jdGlvbiBOQ3QodCxlKXt2YXIgbj1mdW5jdGlvbihuKXtyZXR1cm4gVEN0LmVtcHR5KHQpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gVEN0LmZpbGxlZChlLG4pfSkpfSxvPVtdO3JldHVybiBvLnB1c2gobigtMSkpLG8ucHVzaChuKDEvMCkpLG8ucHVzaChuKDApKSxvfWZ1bmN0aW9uIHpDdCh0LGUsbixvLGkpe2U9TWF0aC5mbG9vcihlKTt2YXIgYT10WzBdW2VdO2lmKG4+PXRbMV1bZV1bMF0pcmV0dXJuIDA7Zm9yKHZhciByPTA7cjxhLmxlbmd0aDtyKyspaWYobz09PWFbcl0pcmV0dXJuIDA7cmV0dXJuIElDdCh0LGUsbixvLGkpfWZ1bmN0aW9uIElDdCh0LGUsbixvLGkpe3ZhciBhPXRbMF1bZV0scj10WzFdW2VdLHM9dFsyXVtlXTtpZihuPj1yWzBdKXJldHVybiAwO3JbMF09bixhWzBdPW8sc1swXT1pO2Zvcih2YXIgbD0wLGM9MDs7KXt2YXIgZD0yKmwrMSxwPWQrMSxtPXRbMF1bMF0ubGVuZ3RoO2lmKGQ+PW0pYnJlYWs7aWYocD49bSl7aWYoIShyW2RdPm4pKWJyZWFrO2M9ZH1lbHNlIGlmKHJbZF0+PXJbcF0pe2lmKCEobjxyW2RdKSlicmVhaztjPWR9ZWxzZXtpZighKG48cltwXSkpYnJlYWs7Yz1wfXJbbF09cltjXSxhW2xdPWFbY10sc1tsXT1zW2NdLGw9Y31yZXR1cm4gcltsXT1uLGFbbF09byxzW2xdPWksMX1mdW5jdGlvbiBIQ3QodCxlLG4sbyl7Zm9yKDsyKm8rMTxuOyl7dmFyIGk9MipvKzEsYT1pKzEscj1vO2lmKHRbcl08dFtpXSYmKHI9aSksYTxuJiZ0W3JdPHRbYV0mJihyPWEpLHI9PT1vKWJyZWFrO3ZhciBzPXRbb107dFtvXT10W3JdLHRbcl09czt2YXIgbD1lW29dO2Vbb109ZVtyXSxlW3JdPWwsbz1yfX1mQ3QubWFrZUhlYXA9TkN0LGZDdC5yZWplY3Rpb25TYW1wbGU9ZnVuY3Rpb24gRkN0KHQsZSxuKXtmb3IodmFyIG89VEN0Lnplcm9zKHQpLGk9MDtpPHQ7aSsrKXtmb3IodmFyIGE9ITAscj0wO2E7KXtyPVRDdC50YXVSYW5kSW50KGUsbik7Zm9yKHZhciBzPSExLGw9MDtsPGk7bCsrKWlmKHI9PT1vW2xdKXtzPSEwO2JyZWFrfXN8fChhPSExKX1vW2ldPXJ9cmV0dXJuIG99LGZDdC5oZWFwUHVzaD16Q3QsZkN0LnVuY2hlY2tlZEhlYXBQdXNoPUlDdCxmQ3QuYnVpbGRDYW5kaWRhdGVzPWZ1bmN0aW9uIExDdCh0LGUsbixvLGkpe2Zvcih2YXIgYT1OQ3QoZSxvKSxyPTA7cjxlO3IrKylmb3IodmFyIHM9MDtzPG47cysrKWlmKCEodFswXVtyXVtzXTwwKSl7dmFyIGw9dFswXVtyXVtzXSxjPXRbMl1bcl1bc10sZD1UQ3QudGF1UmFuZChpKTt6Q3QoYSxyLGQsbCxjKSx6Q3QoYSxsLGQscixjKSx0WzJdW3JdW3NdPTB9cmV0dXJuIGF9LGZDdC5kZWhlYXBTb3J0PWZ1bmN0aW9uIEJDdCh0KXtmb3IodmFyIGU9dFswXSxuPXRbMV0sbz0wO288ZS5sZW5ndGg7bysrKWZvcih2YXIgaT1lW29dLGE9bltvXSxyPTA7cjxpLmxlbmd0aC0xO3IrKyl7dmFyIHM9aS5sZW5ndGgtci0xLGw9YS5sZW5ndGgtci0xLGM9aVswXTtpWzBdPWlbc10saVtzXT1jO3ZhciBkPWFbMF07YVswXT1hW2xdLGFbbF09ZCxIQ3QoYSxpLGwsMCl9cmV0dXJue2luZGljZXM6ZSx3ZWlnaHRzOm59fSxmQ3Quc21hbGxlc3RGbGFnZ2VkPWZ1bmN0aW9uIFZDdCh0LGUpe2Zvcih2YXIgbj10WzBdW2VdLG89dFsxXVtlXSxpPXRbMl1bZV0sYT0xLzAscj0tMSxzPTA7cz5uLmxlbmd0aDtzKyspMT09PWlbc10mJm9bc108YSYmKGE9b1tzXSxyPXMpO3JldHVybiByPj0wPyhpW3JdPTAsTWF0aC5mbG9vcihuW3JdKSk6LTF9O3ZhciBVQ3QsakN0PXt9LFdDdD1fTyYmX08uX19yZWFkfHxmdW5jdGlvbih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgbyxpLGE9bi5jYWxsKHQpLHI9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobz1hLm5leHQoKSkuZG9uZTspci5wdXNoKG8udmFsdWUpfWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWEucmV0dXJuKSYmbi5jYWxsKGEpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gcn0sR0N0PV9PJiZfTy5fX3ZhbHVlc3x8ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fSxZQ3Q9X08mJl9PLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGUuZGVmYXVsdD10LGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqQ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBxQ3Q9WUN0KGdDdCksWkN0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4sbyl7aWYodGhpcy5lbnRyaWVzPW5ldyBNYXAsdGhpcy5uUm93cz0wLHRoaXMubkNvbHM9MCx0Lmxlbmd0aCE9PWUubGVuZ3RofHx0Lmxlbmd0aCE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicm93cywgY29scyBhbmQgdmFsdWVzIGFycmF5cyBtdXN0IGFsbCBoYXZlIHRoZSBzYW1lIGxlbmd0aCIpO3RoaXMublJvd3M9b1swXSx0aGlzLm5Db2xzPW9bMV07Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBhPXRbaV0scj1lW2ldO3RoaXMuY2hlY2tEaW1zKGEscik7dmFyIHM9dGhpcy5tYWtlS2V5KGEscik7dGhpcy5lbnRyaWVzLnNldChzLHt2YWx1ZTpuW2ldLHJvdzphLGNvbDpyfSl9fXJldHVybiB0LnByb3RvdHlwZS5tYWtlS2V5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrIjoiK2V9LHQucHJvdG90eXBlLmNoZWNrRGltcz1mdW5jdGlvbih0LGUpe2lmKCEodDx0aGlzLm5Sb3dzJiZlPHRoaXMubkNvbHMpKXRocm93IG5ldyBFcnJvcigicm93IGFuZC9vciBjb2wgc3BlY2lmaWVkIG91dHNpZGUgb2YgbWF0cml4IGRpbWVuc2lvbnMiKX0sdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSxuKXt0aGlzLmNoZWNrRGltcyh0LGUpO3ZhciBvPXRoaXMubWFrZUtleSh0LGUpO3RoaXMuZW50cmllcy5oYXMobyk/dGhpcy5lbnRyaWVzLmdldChvKS52YWx1ZT1uOnRoaXMuZW50cmllcy5zZXQobyx7dmFsdWU6bixyb3c6dCxjb2w6ZX0pfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPTApLHRoaXMuY2hlY2tEaW1zKHQsZSk7dmFyIG89dGhpcy5tYWtlS2V5KHQsZSk7cmV0dXJuIHRoaXMuZW50cmllcy5oYXMobyk/dGhpcy5lbnRyaWVzLmdldChvKS52YWx1ZTpufSx0LnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITApO3ZhciBlPVtdO3JldHVybiB0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSkpLHQmJmUuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yb3c9PT1lLnJvdz90LmNvbC1lLmNvbDp0LnJvdy1lLnJvd30pKSxlfSx0LnByb3RvdHlwZS5nZXREaW1zPWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMublJvd3MsdGhpcy5uQ29sc119LHQucHJvdG90eXBlLmdldFJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsKGZ1bmN0aW9uKHQpe3ZhciBlPVdDdCh0LDIpO3JldHVybiBlWzFdLnJvd30pKX0sdC5wcm90b3R5cGUuZ2V0Q29scz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywoZnVuY3Rpb24odCl7dmFyIGU9V0N0KHQsMik7cmV0dXJuIGVbMV0uY29sfSkpfSx0LnByb3RvdHlwZS5nZXRWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsKGZ1bmN0aW9uKHQpe3ZhciBlPVdDdCh0LDIpO3JldHVybiBlWzFdLnZhbHVlfSkpfSx0LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQpe3RoaXMuZW50cmllcy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLnZhbHVlLGUucm93LGUuY29sKX0pKX0sdC5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGUpe3ZhciBuPVtdO3RoaXMuZW50cmllcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2goZSh0LnZhbHVlLHQucm93LHQuY29sKSl9KSk7dmFyIG89W3RoaXMublJvd3MsdGhpcy5uQ29sc107cmV0dXJuIG5ldyB0KHRoaXMuZ2V0Um93cygpLHRoaXMuZ2V0Q29scygpLG4sbyl9LHQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9cUN0LmVtcHR5KHRoaXMublJvd3MpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gcUN0Lnplcm9zKHQubkNvbHMpfSkpO3JldHVybiB0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0LnJvd11bdC5jb2xdPXQudmFsdWV9KSksZX0sdH0pKCk7akN0LlNwYXJzZU1hdHJpeD1aQ3QsakN0LnRyYW5zcG9zZT1mdW5jdGlvbiBYQ3QodCl7dmFyIGU9W10sbj1bXSxvPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSxhKXtlLnB1c2goaSksbi5wdXNoKGEpLG8ucHVzaCh0KX0pKSxuZXcgWkN0KG4sZSxvLFt0Lm5Db2xzLHQublJvd3NdKX0sakN0LmlkZW50aXR5PWZ1bmN0aW9uIEtDdCh0KXtmb3IodmFyIGU9V0N0KHQsMSlbMF0sbj1uZXcgWkN0KFtdLFtdLFtdLHQpLG89MDtvPGU7bysrKW4uc2V0KG8sbywxKTtyZXR1cm4gbn0sakN0LnBhaXJ3aXNlTXVsdGlwbHk9ZnVuY3Rpb24gSkN0KHQsZSl7cmV0dXJuIGFNdCh0LGUsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQqZX0pKX0sakN0LmFkZD1mdW5jdGlvbiBRQ3QodCxlKXtyZXR1cm4gYU10KHQsZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSkpfSxqQ3Quc3VidHJhY3Q9ZnVuY3Rpb24gJEN0KHQsZSl7cmV0dXJuIGFNdCh0LGUsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKX0sakN0Lm1heGltdW09ZnVuY3Rpb24gdE10KHQsZSl7cmV0dXJuIGFNdCh0LGUsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+ZT90OmV9KSl9LGpDdC5tdWx0aXBseVNjYWxhcj1mdW5jdGlvbiBlTXQodCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0KmV9KSl9LGpDdC5lbGltaW5hdGVaZXJvcz1mdW5jdGlvbiBuTXQodCl7Zm9yKHZhciBlPW5ldyBTZXQsbj10LmdldFZhbHVlcygpLG89dC5nZXRSb3dzKCksaT10LmdldENvbHMoKSxhPTA7YTxuLmxlbmd0aDthKyspMD09PW5bYV0mJmUuYWRkKGEpO3ZhciByPWZ1bmN0aW9uKHQsbil7cmV0dXJuIWUuaGFzKG4pfSxzPW4uZmlsdGVyKHIpLGw9by5maWx0ZXIociksYz1pLmZpbHRlcihyKTtyZXR1cm4gbmV3IFpDdChsLGMscyx0LmdldERpbXMoKSl9LGpDdC5ub3JtYWxpemU9ZnVuY3Rpb24gb010KHQsZSl7dmFyIG4sbzt2b2lkIDA9PT1lJiYoZT0ibDIiKTt2YXIgaT1pTXRbZV0sYT1uZXcgTWFwO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxlLG4pe3ZhciBvPWEuZ2V0KGUpfHxbXTtvLnB1c2gobiksYS5zZXQoZSxvKX0pKTt2YXIgcj1uZXcgWkN0KFtdLFtdLFtdLHQuZ2V0RGltcygpKSxzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1hLmdldChlKS5zb3J0KCksbz1uLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHQuZ2V0KGUsbil9KSkscz1pKG8pLGw9MDtsPHMubGVuZ3RoO2wrKylyLnNldChlLG5bbF0sc1tsXSl9O3RyeXtmb3IodmFyIGw9R0N0KGEua2V5cygpKSxjPWwubmV4dCgpOyFjLmRvbmU7Yz1sLm5leHQoKSl7cyhjLnZhbHVlKX19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7YyYmIWMuZG9uZSYmKG89bC5yZXR1cm4pJiZvLmNhbGwobCl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiByfTt2YXIgaU10PSgoVUN0PXt9KS5tYXg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPS0xLzAsbj0wO248dC5sZW5ndGg7bisrKWU9dFtuXT5lP3Rbbl06ZTtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L2V9KSl9LFVDdC5sMT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZSs9dFtuXTtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L2V9KSl9LFVDdC5sMj1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZSs9TWF0aC5wb3codFtuXSwyKTtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3codCwyKS9lKX0pKX0sVUN0KTtmdW5jdGlvbiBhTXQodCxlLG4pe2Zvcih2YXIgbz1uZXcgU2V0LGk9W10sYT1bXSxyPVtdLHM9ZnVuY3Rpb24obyxzKXtpLnB1c2gobyksYS5wdXNoKHMpO3ZhciBsPW4odC5nZXQobyxzKSxlLmdldChvLHMpKTtyLnB1c2gobCl9LGw9dC5nZXRWYWx1ZXMoKSxjPXQuZ2V0Um93cygpLGQ9dC5nZXRDb2xzKCkscD0wO3A8bC5sZW5ndGg7cCsrKXtvLmFkZCgoZz1jW3BdKSsiOiIrKGg9ZFtwXSkpLHMoZyxoKX12YXIgbT1lLmdldFZhbHVlcygpLHU9ZS5nZXRSb3dzKCksZj1lLmdldENvbHMoKTtmb3IocD0wO3A8bS5sZW5ndGg7cCsrKXt2YXIgZyxoO28uaGFzKChnPXVbcF0pKyI6IisoaD1mW3BdKSl8fHMoZyxoKX1yZXR1cm4gbmV3IFpDdChpLGEscixbdC5uUm93cyx0Lm5Db2xzXSl9akN0LmdldENTUj1mdW5jdGlvbiByTXQodCl7dmFyIGU9W107dC5mb3JFYWNoKChmdW5jdGlvbih0LG4sbyl7ZS5wdXNoKHt2YWx1ZTp0LHJvdzpuLGNvbDpvfSl9KSksZS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LnJvdz09PWUucm93P3QuY29sLWUuY29sOnQucm93LWUucm93fSkpO2Zvcih2YXIgbj1bXSxvPVtdLGk9W10sYT0tMSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBzPWVbcl0sbD1zLnJvdyxjPXMuY29sLGQ9cy52YWx1ZTtsIT09YSYmKGE9bCxpLnB1c2gocikpLG4ucHVzaChjKSxvLnB1c2goZCl9cmV0dXJue2luZGljZXM6bix2YWx1ZXM6byxpbmRwdHI6aX19O3ZhciBzTXQ9e30sbE10PXt9LGNNdD1fTyYmX08uX19yZWFkfHxmdW5jdGlvbih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgbyxpLGE9bi5jYWxsKHQpLHI9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobz1hLm5leHQoKSkuZG9uZTspci5wdXNoKG8udmFsdWUpfWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWEucmV0dXJuKSYmbi5jYWxsKGEpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gcn0sZE10PV9PJiZfTy5fX3NwcmVhZHx8ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdD10LmNvbmNhdChjTXQoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9LHBNdD1fTyYmX08uX192YWx1ZXN8fGZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIGU/ZS5jYWxsKHQpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fX0sbU10PV9PJiZfTy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkobE10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdU10PW1NdChnQ3QpLGZNdD1mdW5jdGlvbiBmTXQodCxlLG4sbyl7dGhpcy5oeXBlcnBsYW5lcz10LHRoaXMub2Zmc2V0cz1lLHRoaXMuY2hpbGRyZW49bix0aGlzLmluZGljZXM9b307ZnVuY3Rpb24gZ010KHQsZSxuLG8saSl7aWYodm9pZCAwPT09biYmKG49MzApLGUubGVuZ3RoPm4pe3ZhciBhPShmdW5jdGlvbiByKHQsZSxuKXtmb3IodmFyIG89dFswXS5sZW5ndGgsaT11TXQudGF1UmFuZEludChlLmxlbmd0aCxuKSxhPXVNdC50YXVSYW5kSW50KGUubGVuZ3RoLG4pLHI9ZVtpXSxzPWVbYT0oYSs9aT09PWE/MTowKSVlLmxlbmd0aF0sbD0wLGM9dU10Lnplcm9zKG8pLGQ9MDtkPGMubGVuZ3RoO2QrKyljW2RdPXRbcl1bZF0tdFtzXVtkXSxsLT1jW2RdKih0W3JdW2RdK3Rbc11bZF0pLzI7dmFyIHA9MCxtPTAsdT11TXQuemVyb3MoZS5sZW5ndGgpO2ZvcihkPTA7ZDxlLmxlbmd0aDtkKyspe2Zvcih2YXIgZj1sLGc9MDtnPG87ZysrKWYrPWNbZ10qdFtlW2RdXVtnXTswPT09Zj8odVtkXT11TXQudGF1UmFuZEludCgyLG4pLDA9PT11W2RdP3ArPTE6bSs9MSk6Zj4wPyh1W2RdPTAscCs9MSk6KHVbZF09MSxtKz0xKX12YXIgaD11TXQuemVyb3MocCksYj11TXQuemVyb3MobSk7cD0wLG09MDtmb3IoZD0wO2Q8dS5sZW5ndGg7ZCsrKTA9PT11W2RdPyhoW3BdPWVbZF0scCs9MSk6KGJbbV09ZVtkXSxtKz0xKTtyZXR1cm57aW5kaWNlc0xlZnQ6aCxpbmRpY2VzUmlnaHQ6YixoeXBlcnBsYW5lOmMsb2Zmc2V0Omx9fSkodCxlLGkpLHM9YS5pbmRpY2VzUmlnaHQsbD1hLmh5cGVycGxhbmUsYz1hLm9mZnNldDtyZXR1cm57bGVmdENoaWxkOmdNdCh0LGEuaW5kaWNlc0xlZnQsbixvKzEsaSkscmlnaHRDaGlsZDpnTXQodCxzLG4sbysxLGkpLGlzTGVhZjohMSxoeXBlcnBsYW5lOmwsb2Zmc2V0OmN9fXJldHVybntpbmRpY2VzOmUsaXNMZWFmOiEwfX1mdW5jdGlvbiBoTXQodCxlLG4sbyxpLGEscil7dmFyIHM7aWYodC5pc0xlYWYpcmV0dXJuIG9bYV1bMF09LXIsKHM9aVtyXSkuc3BsaWNlLmFwcGx5KHMsZE10KFswLHQuaW5kaWNlcy5sZW5ndGhdLHQuaW5kaWNlcykpLHtub2RlTnVtOmEsbGVhZk51bTpyKz0xfTtlW2FdPXQuaHlwZXJwbGFuZSxuW2FdPXQub2Zmc2V0LG9bYV1bMF09YSsxO3ZhciBsPWEsYz1oTXQodC5sZWZ0Q2hpbGQsZSxuLG8saSxhKzEscik7cmV0dXJuIHI9Yy5sZWFmTnVtLG9bbF1bMV09KGE9Yy5ub2RlTnVtKSsxLHtub2RlTnVtOihjPWhNdCh0LnJpZ2h0Q2hpbGQsZSxuLG8saSxhKzEscikpLm5vZGVOdW0sbGVhZk51bTpjLmxlYWZOdW19fWZ1bmN0aW9uIGJNdCh0KXtyZXR1cm4gdC5pc0xlYWY/MToxK2JNdCh0LmxlZnRDaGlsZCkrYk10KHQucmlnaHRDaGlsZCl9ZnVuY3Rpb24geU10KHQpe3JldHVybiB0LmlzTGVhZj8xOnlNdCh0LmxlZnRDaGlsZCkreU10KHQucmlnaHRDaGlsZCl9ZnVuY3Rpb24gX010KHQsZSxuLG8pe2Zvcih2YXIgaT1lLGE9MDthPG4ubGVuZ3RoO2ErKylpKz10W2FdKm5bYV07cmV0dXJuIDA9PT1pP3VNdC50YXVSYW5kSW50KDIsbyk6aT4wPzA6MX1sTXQuRmxhdFRyZWU9Zk10LGxNdC5tYWtlRm9yZXN0PWZ1bmN0aW9uIENNdCh0LGUsbixvKXt2YXIgaT1NYXRoLm1heCgxMCxlKTtyZXR1cm4gdU10LnJhbmdlKG4pLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4oZnVuY3Rpb24gYSh0LGUsbixvKXt2b2lkIDA9PT1lJiYoZT0zMCk7dmFyIGk9dU10LnJhbmdlKHQubGVuZ3RoKTtyZXR1cm4gZ010KHQsaSxlLG4sbyl9KSh0LGksbixvKX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbil7dmFyIG89Yk10KHQpLGk9eU10KHQpLGE9dU10LnJhbmdlKG8pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gdU10Lnplcm9zKHQuaHlwZXJwbGFuZT90Lmh5cGVycGxhbmUubGVuZ3RoOjApfSkpLHI9dU10Lnplcm9zKG8pLHM9dU10LnJhbmdlKG8pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5bLTEsLTFdfSkpLGw9dU10LnJhbmdlKGkpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gdU10LnJhbmdlKG4pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4tMX0pKX0pKTtyZXR1cm4gaE10KHQsYSxyLHMsbCwwLDApLG5ldyBmTXQoYSxyLHMsbCl9KSh0LGkpfSkpfSxsTXQubWFrZUxlYWZBcnJheT1mdW5jdGlvbiBNTXQodCl7dmFyIGUsbjtpZih0Lmxlbmd0aD4wKXt2YXIgbz1bXTt0cnl7Zm9yKHZhciBpPXBNdCh0KSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSl7by5wdXNoLmFwcGx5KG8sZE10KGEudmFsdWUuaW5kaWNlcykpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIG99cmV0dXJuW1stMV1dfSxsTXQuc2VhcmNoRmxhdFRyZWU9ZnVuY3Rpb24gdk10KHQsZSxuKXtmb3IodmFyIG89MDtlLmNoaWxkcmVuW29dWzBdPjA7KXtvPTA9PT1fTXQoZS5oeXBlcnBsYW5lc1tvXSxlLm9mZnNldHNbb10sdCxuKT9lLmNoaWxkcmVuW29dWzBdOmUuY2hpbGRyZW5bb11bMV19cmV0dXJuIGUuaW5kaWNlc1stMSplLmNoaWxkcmVuW29dWzBdXX07dmFyIHhNdD1fTyYmX08uX192YWx1ZXN8fGZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIGU/ZS5jYWxsKHQpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fX0sT010PV9PJiZfTy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoc010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgUE10PU9NdChmQ3QpLHdNdD1PTXQoakN0KSxrTXQ9T010KGxNdCksU010PU9NdChnQ3QpO3NNdC5tYWtlTk5EZXNjZW50PWZ1bmN0aW9uIERNdCh0LGUpe3JldHVybiBmdW5jdGlvbiBuKG8saSxhLHIscyxsLGMsZCl7dm9pZCAwPT09ciYmKHI9MTApLHZvaWQgMD09PXMmJihzPTUwKSx2b2lkIDA9PT1sJiYobD0uMDAxKSx2b2lkIDA9PT1jJiYoYz0uNSksdm9pZCAwPT09ZCYmKGQ9ITApO2Zvcih2YXIgcD1vLmxlbmd0aCxtPVBNdC5tYWtlSGVhcChvLmxlbmd0aCxhKSx1PTA7dTxvLmxlbmd0aDt1KyspZm9yKHZhciBmPVBNdC5yZWplY3Rpb25TYW1wbGUoYSxvLmxlbmd0aCxlKSxnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPXQob1t1XSxvW2ZbZ11dKTtQTXQuaGVhcFB1c2gobSx1LGgsZltnXSwxKSxQTXQuaGVhcFB1c2gobSxmW2ddLGgsdSwxKX1pZihkKWZvcih2YXIgYj0wO2I8aS5sZW5ndGg7YisrKWZvcih1PTA7dTxpW2JdLmxlbmd0aCYmIShpW2JdW3VdPDApO3UrKylmb3IoZz11KzE7ZzxpW2JdLmxlbmd0aCYmIShpW2JdW2ddPDApO2crKyl7aD10KG9baVtiXVt1XV0sb1tpW2JdW2ddXSk7UE10LmhlYXBQdXNoKG0saVtiXVt1XSxoLGlbYl1bZ10sMSksUE10LmhlYXBQdXNoKG0saVtiXVtnXSxoLGlbYl1bdV0sMSl9Zm9yKGI9MDtiPHI7YisrKXt2YXIgeT1QTXQuYnVpbGRDYW5kaWRhdGVzKG0scCxhLHMsZSksXz0wO2Zvcih1PTA7dTxwO3UrKylmb3IoZz0wO2c8cztnKyspe3ZhciBDPU1hdGguZmxvb3IoeVswXVt1XVtnXSk7aWYoIShDPDB8fFNNdC50YXVSYW5kKGUpPGMpKWZvcih2YXIgTT0wO008cztNKyspe3ZhciB2PU1hdGguZmxvb3IoeVswXVt1XVtNXSk7aWYoISh2PDB8fCF5WzJdW3VdW2ddJiYheVsyXVt1XVtNXSkpe2g9dChvW0NdLG9bdl0pO18rPVBNdC5oZWFwUHVzaChtLEMsaCx2LDEpLF8rPVBNdC5oZWFwUHVzaChtLHYsaCxDLDEpfX19aWYoXzw9bCphKm8ubGVuZ3RoKWJyZWFrfXJldHVybiBQTXQuZGVoZWFwU29ydChtKX19LHNNdC5tYWtlSW5pdGlhbGl6YXRpb25zPWZ1bmN0aW9uIFJNdCh0KXtyZXR1cm57aW5pdEZyb21SYW5kb206ZnVuY3Rpb24gZShuLG8saSxhLHIpe2Zvcih2YXIgcz0wO3M8aS5sZW5ndGg7cysrKWZvcih2YXIgbD1TTXQucmVqZWN0aW9uU2FtcGxlKG4sby5sZW5ndGgsciksYz0wO2M8bC5sZW5ndGg7YysrKWlmKCEobFtjXTwwKSl7dmFyIGQ9dChvW2xbY11dLGlbc10pO1BNdC5oZWFwUHVzaChhLHMsZCxsW2NdLDEpfX0saW5pdEZyb21UcmVlOmZ1bmN0aW9uIG4oZSxvLGksYSxyKXtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylmb3IodmFyIGw9a010LnNlYXJjaEZsYXRUcmVlKGlbc10sZSxyKSxjPTA7YzxsLmxlbmd0aDtjKyspe2lmKGxbY108MClyZXR1cm47dmFyIGQ9dChvW2xbY11dLGlbc10pO1BNdC5oZWFwUHVzaChhLHMsZCxsW2NdLDEpfX19fSxzTXQubWFrZUluaXRpYWxpemVkTk5TZWFyY2g9ZnVuY3Rpb24gRU10KHQpe3JldHVybiBmdW5jdGlvbiBlKG4sbyxpLGEpe2Zvcih2YXIgcixzLGw9d010LmdldENTUihvKSxjPWwuaW5kaWNlcyxkPWwuaW5kcHRyLHA9MDtwPGEubGVuZ3RoO3ArKylmb3IodmFyIG09bmV3IFNldChpWzBdW3BdKTs7KXt2YXIgdT1QTXQuc21hbGxlc3RGbGFnZ2VkKGkscCk7aWYoLTE9PT11KWJyZWFrO3ZhciBmPWMuc2xpY2UoZFt1XSxkW3UrMV0pO3RyeXtmb3IodmFyIGc9eE10KGYpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgYj1oLnZhbHVlO2lmKGIhPT11JiYtMSE9PWImJiFtLmhhcyhiKSl7dmFyIHk9dChuW2JdLGFbcF0pO1BNdC51bmNoZWNrZWRIZWFwUHVzaChpLHAseSxiLDEpLG0uYWRkKGIpfX19Y2F0Y2godCl7cj17ZXJyb3I6dH19ZmluYWxseXt0cnl7aCYmIWguZG9uZSYmKHM9Zy5yZXR1cm4pJiZzLmNhbGwoZyl9ZmluYWxseXtpZihyKXRocm93IHIuZXJyb3J9fX1yZXR1cm4gaX19LHNNdC5pbml0aWFsaXplU2VhcmNoPWZ1bmN0aW9uIEFNdCh0LGUsbixvLGksYSxyKXt2YXIgcyxsLGM9UE10Lm1ha2VIZWFwKG4ubGVuZ3RoLG8pO2lmKGkobyxlLG4sYyxyKSx0KXRyeXtmb3IodmFyIGQ9eE10KHQpLHA9ZC5uZXh0KCk7IXAuZG9uZTtwPWQubmV4dCgpKXthKHAudmFsdWUsZSxuLGMscil9fWNhdGNoKHQpe3M9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3AmJiFwLmRvbmUmJihsPWQucmV0dXJuKSYmbC5jYWxsKGQpfWZpbmFsbHl7aWYocyl0aHJvdyBzLmVycm9yfX1yZXR1cm4gY307Y29uc3QgVE10PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gTk10KHQpe3JldHVybiBUTXQuY2FsbCh0KS5lbmRzV2l0aCgiQXJyYXldIil9ZnVuY3Rpb24gek10KHQsZSxuKXtsZXQgbz0wO2NvbnN0IGk9bihlKTtmb3IobGV0IGU9MDtlPHQueC5sZW5ndGg7ZSsrKW8rPU1hdGguYWJzKHQueVtlXS1pKHQueFtlXSkpO3JldHVybiBvfWNvbnN0IElNdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEhNdCh0KXtyZXR1cm4gSU10LmNhbGwodCkuZW5kc1dpdGgoIkFycmF5XSIpfWZ1bmN0aW9uIEZNdCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYoIUhNdCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IGJlIGFuIGFycmF5Iik7aWYoMD09PXQubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3Qgbm90IGJlIGVtcHR5Iik7dmFyIG49ZS5mcm9tSW5kZXgsbz12b2lkIDA9PT1uPzA6bixpPWUudG9JbmRleCxhPXZvaWQgMD09PWk/dC5sZW5ndGg6aTtpZihvPDB8fG8+PXQubGVuZ3RofHwhTnVtYmVyLmlzSW50ZWdlcihvKSl0aHJvdyBuZXcgRXJyb3IoImZyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoIik7aWYoYTw9b3x8YT50Lmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEVycm9yKCJ0b0luZGV4IG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gZnJvbUluZGV4IGFuZCBhdCBtb3N0IGVxdWFsIHRvIGxlbmd0aCIpO2Zvcih2YXIgcj10W29dLHM9bysxO3M8YTtzKyspdFtzXT5yJiYocj10W3NdKTtyZXR1cm4gcn1mdW5jdGlvbiBMTXQodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFITXQodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO3ZhciBuPWUuZnJvbUluZGV4LG89dm9pZCAwPT09bj8wOm4saT1lLnRvSW5kZXgsYT12b2lkIDA9PT1pP3QubGVuZ3RoOmk7aWYobzwwfHxvPj10Lmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEVycm9yKCJmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCIpO2lmKGE8PW98fGE+dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBFcnJvcigidG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgiKTtmb3IodmFyIHI9dFtvXSxzPW8rMTtzPGE7cysrKXRbc108ciYmKHI9dFtzXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gQk10KHQpe3ZhciBlLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFITXQodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO2lmKHZvaWQgMCE9PW4ub3V0cHV0KXtpZighSE10KG4ub3V0cHV0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvdXRwdXQgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgaWYgc3BlY2lmaWVkIik7ZT1uLm91dHB1dH1lbHNlIGU9bmV3IEFycmF5KHQubGVuZ3RoKTt2YXIgbz1MTXQodCksaT1GTXQodCk7aWYobz09PWkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbmltdW0gYW5kIG1heGltdW0gaW5wdXQgdmFsdWVzIGFyZSBlcXVhbC4gQ2Fubm90IHJlc2NhbGUgYSBjb25zdGFudCBhcnJheSIpO3ZhciBhPW4ubWluLHI9dm9pZCAwPT09YT9uLmF1dG9NaW5NYXg/bzowOmEscz1uLm1heCxsPXZvaWQgMD09PXM/bi5hdXRvTWluTWF4P2k6MTpzO2lmKHI+PWwpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBvcHRpb24gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4IG9wdGlvbiIpO2Zvcih2YXIgYz0obC1yKS8oaS1vKSxkPTA7ZDx0Lmxlbmd0aDtkKyspZVtkXT0odFtkXS1vKSpjK3I7cmV0dXJuIGV9Y29uc3QgVk10PSIgIi5yZXBlYXQoMiksVU10PSIgIi5yZXBlYXQoNCk7ZnVuY3Rpb24gak10KHQsZT17fSl7Y29uc3R7bWF4Um93czpuPTE1LG1heENvbHVtbnM6bz0xMCxtYXhOdW1TaXplOmk9OH09ZTtyZXR1cm5gJHt0LmNvbnN0cnVjdG9yLm5hbWV9IHtcbiR7Vk10fVtcbiR7VU10fSR7KGZ1bmN0aW9uIGEodCxlLG4sbyl7Y29uc3R7cm93czppLGNvbHVtbnM6YX09dCxyPU1hdGgubWluKGksZSkscz1NYXRoLm1pbihhLG4pLGw9W107Zm9yKGxldCBlPTA7ZTxyO2UrKyl7bGV0IG49W107Zm9yKGxldCBpPTA7aTxzO2krKyluLnB1c2goV010KHQuZ2V0KGUsaSksbykpO2wucHVzaChgJHtuLmpvaW4oIiAiKX1gKX1zIT09YSYmKGxbbC5sZW5ndGgtMV0rPWAgLi4uICR7YS1ufSBtb3JlIGNvbHVtbnNgKTtyIT09aSYmbC5wdXNoKGAuLi4gJHtpLWV9IG1vcmUgcm93c2ApO3JldHVybiBsLmpvaW4oYFxuJHtVTXR9YCl9KSh0LG4sbyxpKX1cbiR7Vk10fV1cbiR7Vk10fXJvd3M6ICR7dC5yb3dzfVxuJHtWTXR9Y29sdW1uczogJHt0LmNvbHVtbnN9XG59YH1mdW5jdGlvbiBXTXQodCxlKXtjb25zdCBuPVN0cmluZyh0KTtpZihuLmxlbmd0aDw9ZSlyZXR1cm4gbi5wYWRFbmQoZSwiICIpO2NvbnN0IG89dC50b1ByZWNpc2lvbihlLTIpO2lmKG8ubGVuZ3RoPD1lKXJldHVybiBvO2NvbnN0IGk9dC50b0V4cG9uZW50aWFsKGUtMiksYT1pLmluZGV4T2YoImUiKSxyPWkuc2xpY2UoYSk7cmV0dXJuIGkuc2xpY2UoMCxlLXIubGVuZ3RoKStyfWZ1bmN0aW9uIEdNdCh0LGUsbil7aWYoZTwwfHxlPihuP3Qucm93czp0LnJvd3MtMSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJvdyBpbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBZTXQodCxlLG4pe2lmKGU8MHx8ZT4obj90LmNvbHVtbnM6dC5jb2x1bW5zLTEpKXRocm93IG5ldyBSYW5nZUVycm9yKCJDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gcU10KHQsZSl7aWYoZS50bzFEQXJyYXkmJihlPWUudG8xREFycmF5KCkpLGUubGVuZ3RoIT09dC5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJ2ZWN0b3Igc2l6ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY29sdW1ucyIpO3JldHVybiBlfWZ1bmN0aW9uIFpNdCh0LGUpe2lmKGUudG8xREFycmF5JiYoZT1lLnRvMURBcnJheSgpKSxlLmxlbmd0aCE9PXQucm93cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHJvd3MiKTtyZXR1cm4gZX1mdW5jdGlvbiBYTXQodCxlKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigidW5leHBlY3RlZCB0eXBlIGZvciByb3cgaW5kaWNlcyIpO2lmKGUuc29tZSgoZT0+ZTwwfHxlPj10LnJvd3MpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicm93IGluZGljZXMgYXJlIG91dCBvZiByYW5nZSIpO3JldHVybiBBcnJheS5pc0FycmF5KGUpfHwoZT1BcnJheS5mcm9tKGUpKSxlfWZ1bmN0aW9uIEtNdCh0LGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ1bmV4cGVjdGVkIHR5cGUgZm9yIGNvbHVtbiBpbmRpY2VzIik7aWYoZS5zb21lKChlPT5lPDB8fGU+PXQuY29sdW1ucykpKXRocm93IG5ldyBSYW5nZUVycm9yKCJjb2x1bW4gaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlIik7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fChlPUFycmF5LmZyb20oZSkpLGV9ZnVuY3Rpb24gSk10KHQsZSxuLG8saSl7aWYoNSE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImV4cGVjdGVkIDQgYXJndW1lbnRzIik7aWYoJE10KCJzdGFydFJvdyIsZSksJE10KCJlbmRSb3ciLG4pLCRNdCgic3RhcnRDb2x1bW4iLG8pLCRNdCgiZW5kQ29sdW1uIixpKSxlPm58fG8+aXx8ZTwwfHxlPj10LnJvd3N8fG48MHx8bj49dC5yb3dzfHxvPDB8fG8+PXQuY29sdW1uc3x8aTwwfHxpPj10LmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlN1Ym1hdHJpeCBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBRTXQodCxlPTApe2xldCBuPVtdO2ZvcihsZXQgbz0wO288dDtvKyspbi5wdXNoKGUpO3JldHVybiBufWZ1bmN0aW9uICRNdCh0LGUpe2lmKCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKGAke3R9IG11c3QgYmUgYSBudW1iZXJgKX1mdW5jdGlvbiB0dnQodCl7aWYodC5pc0VtcHR5KCkpdGhyb3cgbmV3IEVycm9yKCJFbXB0eSBtYXRyaXggaGFzIG5vIGVsZW1lbnRzIHRvIGluZGV4Iil9Y2xhc3MgZXZ0e3N0YXRpYyBmcm9tMURBcnJheSh0LGUsbil7aWYodCplIT09bi5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImRhdGEgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGdpdmVuIGRpbWVuc2lvbnMiKTtsZXQgbz1uZXcgaXZ0KHQsZSk7Zm9yKGxldCBpPTA7aTx0O2krKylmb3IobGV0IHQ9MDt0PGU7dCsrKW8uc2V0KGksdCxuW2kqZSt0XSk7cmV0dXJuIG99c3RhdGljIHJvd1ZlY3Rvcih0KXtsZXQgZT1uZXcgaXZ0KDEsdC5sZW5ndGgpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUuc2V0KDAsbix0W25dKTtyZXR1cm4gZX1zdGF0aWMgY29sdW1uVmVjdG9yKHQpe2xldCBlPW5ldyBpdnQodC5sZW5ndGgsMSk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZS5zZXQobiwwLHRbbl0pO3JldHVybiBlfXN0YXRpYyB6ZXJvcyh0LGUpe3JldHVybiBuZXcgaXZ0KHQsZSl9c3RhdGljIG9uZXModCxlKXtyZXR1cm4gbmV3IGl2dCh0LGUpLmZpbGwoMSl9c3RhdGljIHJhbmQodCxlLG49e30pe2lmKCJvYmplY3QiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7cmFuZG9tOm89TWF0aC5yYW5kb219PW47bGV0IGk9bmV3IGl2dCh0LGUpO2ZvcihsZXQgbj0wO248dDtuKyspZm9yKGxldCB0PTA7dDxlO3QrKylpLnNldChuLHQsbygpKTtyZXR1cm4gaX1zdGF0aWMgcmFuZEludCh0LGUsbj17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46bz0wLG1heDppPTFlMyxyYW5kb206YT1NYXRoLnJhbmRvbX09bjtpZighTnVtYmVyLmlzSW50ZWdlcihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhbiBpbnRlZ2VyIik7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYW4gaW50ZWdlciIpO2lmKG8+PWkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgiKTtsZXQgcj1pLW8scz1uZXcgaXZ0KHQsZSk7Zm9yKGxldCBuPTA7bjx0O24rKylmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1vK01hdGgucm91bmQoYSgpKnIpO3Muc2V0KG4sdCxlKX1yZXR1cm4gc31zdGF0aWMgZXllKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT10KSx2b2lkIDA9PT1uJiYobj0xKTtsZXQgbz1NYXRoLm1pbih0LGUpLGk9dGhpcy56ZXJvcyh0LGUpO2ZvcihsZXQgdD0wO3Q8bzt0KyspaS5zZXQodCx0LG4pO3JldHVybiBpfXN0YXRpYyBkaWFnKHQsZSxuKXtsZXQgbz10Lmxlbmd0aDt2b2lkIDA9PT1lJiYoZT1vKSx2b2lkIDA9PT1uJiYobj1lKTtsZXQgaT1NYXRoLm1pbihvLGUsbiksYT10aGlzLnplcm9zKGUsbik7Zm9yKGxldCBlPTA7ZTxpO2UrKylhLnNldChlLGUsdFtlXSk7cmV0dXJuIGF9c3RhdGljIG1pbih0LGUpe3Q9dGhpcy5jaGVja01hdHJpeCh0KSxlPXRoaXMuY2hlY2tNYXRyaXgoZSk7bGV0IG49dC5yb3dzLG89dC5jb2x1bW5zLGk9bmV3IGl2dChuLG8pO2ZvcihsZXQgYT0wO2E8bjthKyspZm9yKGxldCBuPTA7bjxvO24rKylpLnNldChhLG4sTWF0aC5taW4odC5nZXQoYSxuKSxlLmdldChhLG4pKSk7cmV0dXJuIGl9c3RhdGljIG1heCh0LGUpe3Q9dGhpcy5jaGVja01hdHJpeCh0KSxlPXRoaXMuY2hlY2tNYXRyaXgoZSk7bGV0IG49dC5yb3dzLG89dC5jb2x1bW5zLGk9bmV3IHRoaXMobixvKTtmb3IobGV0IGE9MDthPG47YSsrKWZvcihsZXQgbj0wO248bztuKyspaS5zZXQoYSxuLE1hdGgubWF4KHQuZ2V0KGEsbiksZS5nZXQoYSxuKSkpO3JldHVybiBpfXN0YXRpYyBjaGVja01hdHJpeCh0KXtyZXR1cm4gZXZ0LmlzTWF0cml4KHQpP3Q6bmV3IGl2dCh0KX1zdGF0aWMgaXNNYXRyaXgodCl7cmV0dXJuIG51bGwhPXQmJiJNYXRyaXgiPT09dC5rbGFzc31nZXQgc2l6ZSgpe3JldHVybiB0aGlzLnJvd3MqdGhpcy5jb2x1bW5zfWFwcGx5KHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdC5jYWxsKHRoaXMsZSxuKTtyZXR1cm4gdGhpc310bzFEQXJyYXkoKXtsZXQgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQucHVzaCh0aGlzLmdldChlLG4pKTtyZXR1cm4gdH10bzJEQXJyYXkoKXtsZXQgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspe3QucHVzaChbXSk7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRbZV0ucHVzaCh0aGlzLmdldChlLG4pKX1yZXR1cm4gdH10b0pTT04oKXtyZXR1cm4gdGhpcy50bzJEQXJyYXkoKX1pc1Jvd1ZlY3Rvcigpe3JldHVybiAxPT09dGhpcy5yb3dzfWlzQ29sdW1uVmVjdG9yKCl7cmV0dXJuIDE9PT10aGlzLmNvbHVtbnN9aXNWZWN0b3IoKXtyZXR1cm4gMT09PXRoaXMucm93c3x8MT09PXRoaXMuY29sdW1uc31pc1NxdWFyZSgpe3JldHVybiB0aGlzLnJvd3M9PT10aGlzLmNvbHVtbnN9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5yb3dzfHwwPT09dGhpcy5jb2x1bW5zfWlzU3ltbWV0cmljKCl7aWYodGhpcy5pc1NxdWFyZSgpKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTw9dDtlKyspaWYodGhpcy5nZXQodCxlKSE9PXRoaXMuZ2V0KGUsdCkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9aXNFY2hlbG9uRm9ybSgpe2xldCB0PTAsZT0wLG49LTEsbz0hMCxpPSExO2Zvcig7dDx0aGlzLnJvd3MmJm87KXtmb3IoZT0wLGk9ITE7ZTx0aGlzLmNvbHVtbnMmJiExPT09aTspMD09PXRoaXMuZ2V0KHQsZSk/ZSsrOjE9PT10aGlzLmdldCh0LGUpJiZlPm4/KGk9ITAsbj1lKToobz0hMSxpPSEwKTt0Kyt9cmV0dXJuIG99aXNSZWR1Y2VkRWNoZWxvbkZvcm0oKXtsZXQgdD0wLGU9MCxuPS0xLG89ITAsaT0hMTtmb3IoO3Q8dGhpcy5yb3dzJiZvOyl7Zm9yKGU9MCxpPSExO2U8dGhpcy5jb2x1bW5zJiYhMT09PWk7KTA9PT10aGlzLmdldCh0LGUpP2UrKzoxPT09dGhpcy5nZXQodCxlKSYmZT5uPyhpPSEwLG49ZSk6KG89ITEsaT0hMCk7Zm9yKGxldCBuPWUrMTtuPHRoaXMucm93cztuKyspMCE9PXRoaXMuZ2V0KHQsbikmJihvPSExKTt0Kyt9cmV0dXJuIG99ZWNoZWxvbkZvcm0oKXtsZXQgdD10aGlzLmNsb25lKCksZT0wLG49MDtmb3IoO2U8dC5yb3dzJiZuPHQuY29sdW1uczspe2xldCBvPWU7Zm9yKGxldCBpPWU7aTx0LnJvd3M7aSsrKXQuZ2V0KGksbik+dC5nZXQobyxuKSYmKG89aSk7aWYoMD09PXQuZ2V0KG8sbikpbisrO2Vsc2V7dC5zd2FwUm93cyhlLG8pO2xldCBpPXQuZ2V0KGUsbik7Zm9yKGxldCBvPW47bzx0LmNvbHVtbnM7bysrKXQuc2V0KGUsbyx0LmdldChlLG8pL2kpO2ZvcihsZXQgbz1lKzE7bzx0LnJvd3M7bysrKXtsZXQgaT10LmdldChvLG4pL3QuZ2V0KGUsbik7dC5zZXQobyxuLDApO2ZvcihsZXQgYT1uKzE7YTx0LmNvbHVtbnM7YSsrKXQuc2V0KG8sYSx0LmdldChvLGEpLXQuZ2V0KGUsYSkqaSl9ZSsrLG4rK319cmV0dXJuIHR9cmVkdWNlZEVjaGVsb25Gb3JtKCl7bGV0IHQ9dGhpcy5lY2hlbG9uRm9ybSgpLGU9dC5jb2x1bW5zLG49dC5yb3dzLG89bi0xO2Zvcig7bz49MDspaWYoMD09PXQubWF4Um93KG8pKW8tLTtlbHNle2xldCBpPTAsYT0hMTtmb3IoO2k8biYmITE9PT1hOykxPT09dC5nZXQobyxpKT9hPSEwOmkrKztmb3IobGV0IG49MDtuPG87bisrKXtsZXQgYT10LmdldChuLGkpO2ZvcihsZXQgcj1pO3I8ZTtyKyspe2xldCBlPXQuZ2V0KG4sciktYSp0LmdldChvLHIpO3Quc2V0KG4scixlKX19by0tfXJldHVybiB0fXNldCgpe3Rocm93IG5ldyBFcnJvcigic2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkIil9Z2V0KCl7dGhyb3cgbmV3IEVycm9yKCJnZXQgbWV0aG9kIGlzIHVuaW1wbGVtZW50ZWQiKX1yZXBlYXQodD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHtyb3dzOmU9MSxjb2x1bW5zOm49MX09dDtpZighTnVtYmVyLmlzSW50ZWdlcihlKXx8ZTw9MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJyb3dzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIik7aWYoIU51bWJlci5pc0ludGVnZXIobil8fG48PTApdGhyb3cgbmV3IFR5cGVFcnJvcigiY29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2xldCBvPW5ldyBpdnQodGhpcy5yb3dzKmUsdGhpcy5jb2x1bW5zKm4pO2ZvcihsZXQgdD0wO3Q8ZTt0KyspZm9yKGxldCBlPTA7ZTxuO2UrKylvLnNldFN1Yk1hdHJpeCh0aGlzLHRoaXMucm93cyp0LHRoaXMuY29sdW1ucyplKTtyZXR1cm4gb31maWxsKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHQpO3JldHVybiB0aGlzfW5lZygpe3JldHVybiB0aGlzLm11bFMoLTEpfWdldFJvdyh0KXtHTXQodGhpcyx0KTtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspZS5wdXNoKHRoaXMuZ2V0KHQsbikpO3JldHVybiBlfWdldFJvd1ZlY3Rvcih0KXtyZXR1cm4gaXZ0LnJvd1ZlY3Rvcih0aGlzLmdldFJvdyh0KSl9c2V0Um93KHQsZSl7R010KHRoaXMsdCksZT1xTXQodGhpcyxlKTtmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLGVbbl0pO3JldHVybiB0aGlzfXN3YXBSb3dzKHQsZSl7R010KHRoaXMsdCksR010KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXtsZXQgbz10aGlzLmdldCh0LG4pO3RoaXMuc2V0KHQsbix0aGlzLmdldChlLG4pKSx0aGlzLnNldChlLG4sbyl9cmV0dXJuIHRoaXN9Z2V0Q29sdW1uKHQpe1lNdCh0aGlzLHQpO2xldCBlPVtdO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKyllLnB1c2godGhpcy5nZXQobix0KSk7cmV0dXJuIGV9Z2V0Q29sdW1uVmVjdG9yKHQpe3JldHVybiBpdnQuY29sdW1uVmVjdG9yKHRoaXMuZ2V0Q29sdW1uKHQpKX1zZXRDb2x1bW4odCxlKXtZTXQodGhpcyx0KSxlPVpNdCh0aGlzLGUpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKyl0aGlzLnNldChuLHQsZVtuXSk7cmV0dXJuIHRoaXN9c3dhcENvbHVtbnModCxlKXtZTXQodGhpcyx0KSxZTXQodGhpcyxlKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspe2xldCBvPXRoaXMuZ2V0KG4sdCk7dGhpcy5zZXQobix0LHRoaXMuZ2V0KG4sZSkpLHRoaXMuc2V0KG4sZSxvKX1yZXR1cm4gdGhpc31hZGRSb3dWZWN0b3IodCl7dD1xTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pK3Rbbl0pO3JldHVybiB0aGlzfXN1YlJvd1ZlY3Rvcih0KXt0PXFNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbiktdFtuXSk7cmV0dXJuIHRoaXN9bXVsUm93VmVjdG9yKHQpe3Q9cU10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKSp0W25dKTtyZXR1cm4gdGhpc31kaXZSb3dWZWN0b3IodCl7dD1xTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pL3Rbbl0pO3JldHVybiB0aGlzfWFkZENvbHVtblZlY3Rvcih0KXt0PVpNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbikrdFtlXSk7cmV0dXJuIHRoaXN9c3ViQ29sdW1uVmVjdG9yKHQpe3Q9Wk10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKS10W2VdKTtyZXR1cm4gdGhpc31tdWxDb2x1bW5WZWN0b3IodCl7dD1aTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pKnRbZV0pO3JldHVybiB0aGlzfWRpdkNvbHVtblZlY3Rvcih0KXt0PVpNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbikvdFtlXSk7cmV0dXJuIHRoaXN9bXVsUm93KHQsZSl7R010KHRoaXMsdCk7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pKmUpO3JldHVybiB0aGlzfW11bENvbHVtbih0LGUpe1lNdCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKyl0aGlzLnNldChuLHQsdGhpcy5nZXQobix0KSplKTtyZXR1cm4gdGhpc31tYXgoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCB0PXRoaXMuZ2V0KDAsMCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLmdldChlLG4pPnQmJih0PXRoaXMuZ2V0KGUsbikpO3JldHVybiB0fW1heEluZGV4KCl7dHZ0KHRoaXMpO2xldCB0PXRoaXMuZ2V0KDAsMCksZT1bMCwwXTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBvPTA7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuZ2V0KG4sbyk+dCYmKHQ9dGhpcy5nZXQobixvKSxlWzBdPW4sZVsxXT1vKTtyZXR1cm4gZX1taW4oKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCB0PXRoaXMuZ2V0KDAsMCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLmdldChlLG4pPHQmJih0PXRoaXMuZ2V0KGUsbikpO3JldHVybiB0fW1pbkluZGV4KCl7dHZ0KHRoaXMpO2xldCB0PXRoaXMuZ2V0KDAsMCksZT1bMCwwXTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBvPTA7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuZ2V0KG4sbyk8dCYmKHQ9dGhpcy5nZXQobixvKSxlWzBdPW4sZVsxXT1vKTtyZXR1cm4gZX1tYXhSb3codCl7aWYoR010KHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgZT10aGlzLmdldCh0LDApO2ZvcihsZXQgbj0xO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLmdldCh0LG4pPmUmJihlPXRoaXMuZ2V0KHQsbikpO3JldHVybiBlfW1heFJvd0luZGV4KHQpe0dNdCh0aGlzLHQpLHR2dCh0aGlzKTtsZXQgZT10aGlzLmdldCh0LDApLG49W3QsMF07Zm9yKGxldCBvPTE7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuZ2V0KHQsbyk+ZSYmKGU9dGhpcy5nZXQodCxvKSxuWzFdPW8pO3JldHVybiBufW1pblJvdyh0KXtpZihHTXQodGhpcyx0KSx0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCBlPXRoaXMuZ2V0KHQsMCk7Zm9yKGxldCBuPTE7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuZ2V0KHQsbik8ZSYmKGU9dGhpcy5nZXQodCxuKSk7cmV0dXJuIGV9bWluUm93SW5kZXgodCl7R010KHRoaXMsdCksdHZ0KHRoaXMpO2xldCBlPXRoaXMuZ2V0KHQsMCksbj1bdCwwXTtmb3IobGV0IG89MTtvPHRoaXMuY29sdW1ucztvKyspdGhpcy5nZXQodCxvKTxlJiYoZT10aGlzLmdldCh0LG8pLG5bMV09byk7cmV0dXJuIG59bWF4Q29sdW1uKHQpe2lmKFlNdCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQoMCx0KTtmb3IobGV0IG49MTtuPHRoaXMucm93cztuKyspdGhpcy5nZXQobix0KT5lJiYoZT10aGlzLmdldChuLHQpKTtyZXR1cm4gZX1tYXhDb2x1bW5JbmRleCh0KXtZTXQodGhpcyx0KSx0dnQodGhpcyk7bGV0IGU9dGhpcy5nZXQoMCx0KSxuPVswLHRdO2ZvcihsZXQgbz0xO288dGhpcy5yb3dzO28rKyl0aGlzLmdldChvLHQpPmUmJihlPXRoaXMuZ2V0KG8sdCksblswXT1vKTtyZXR1cm4gbn1taW5Db2x1bW4odCl7aWYoWU10KHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgZT10aGlzLmdldCgwLHQpO2ZvcihsZXQgbj0xO248dGhpcy5yb3dzO24rKyl0aGlzLmdldChuLHQpPGUmJihlPXRoaXMuZ2V0KG4sdCkpO3JldHVybiBlfW1pbkNvbHVtbkluZGV4KHQpe1lNdCh0aGlzLHQpLHR2dCh0aGlzKTtsZXQgZT10aGlzLmdldCgwLHQpLG49WzAsdF07Zm9yKGxldCBvPTE7bzx0aGlzLnJvd3M7bysrKXRoaXMuZ2V0KG8sdCk8ZSYmKGU9dGhpcy5nZXQobyx0KSxuWzBdPW8pO3JldHVybiBufWRpYWcoKXtsZXQgdD1NYXRoLm1pbih0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKSxlPVtdO2ZvcihsZXQgbj0wO248dDtuKyspZS5wdXNoKHRoaXMuZ2V0KG4sbikpO3JldHVybiBlfW5vcm0odD0iZnJvYmVuaXVzIil7bGV0IGU9MDtpZigibWF4Ij09PXQpcmV0dXJuIHRoaXMubWF4KCk7aWYoImZyb2Jlbml1cyI9PT10KXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKWUrPXRoaXMuZ2V0KHQsbikqdGhpcy5nZXQodCxuKTtyZXR1cm4gTWF0aC5zcXJ0KGUpfXRocm93IG5ldyBSYW5nZUVycm9yKGB1bmtub3duIG5vcm0gdHlwZTogJHt0fWApfWN1bXVsYXRpdmVTdW0oKXtsZXQgdD0wO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdCs9dGhpcy5nZXQoZSxuKSx0aGlzLnNldChlLG4sdCk7cmV0dXJuIHRoaXN9ZG90KHQpe2V2dC5pc01hdHJpeCh0KSYmKHQ9dC50bzFEQXJyYXkoKSk7bGV0IGU9dGhpcy50bzFEQXJyYXkoKTtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJ2ZWN0b3JzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNpemUiKTtsZXQgbj0wO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKW4rPWVbb10qdFtvXTtyZXR1cm4gbn1tbXVsKHQpe3Q9aXZ0LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMucm93cyxuPXRoaXMuY29sdW1ucyxvPXQuY29sdW1ucyxpPW5ldyBpdnQoZSxvKSxhPW5ldyBGbG9hdDY0QXJyYXkobik7Zm9yKGxldCByPTA7cjxvO3IrKyl7Zm9yKGxldCBlPTA7ZTxuO2UrKylhW2VdPXQuZ2V0KGUscik7Zm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9MDtmb3IobGV0IG89MDtvPG47bysrKWUrPXRoaXMuZ2V0KHQsbykqYVtvXTtpLnNldCh0LHIsZSl9fXJldHVybiBpfXN0cmFzc2VuMngyKHQpe3Q9aXZ0LmNoZWNrTWF0cml4KHQpO2xldCBlPW5ldyBpdnQoMiwyKTtjb25zdCBuPXRoaXMuZ2V0KDAsMCksbz10LmdldCgwLDApLGk9dGhpcy5nZXQoMCwxKSxhPXQuZ2V0KDAsMSkscj10aGlzLmdldCgxLDApLHM9dC5nZXQoMSwwKSxsPXRoaXMuZ2V0KDEsMSksYz10LmdldCgxLDEpLGQ9KG4rbCkqKG8rYykscD0ocitsKSpvLG09biooYS1jKSx1PWwqKHMtbyksZj0obitpKSpjLGc9bStmLGg9cCt1LGI9ZC1wK20rKHItbikqKG8rYSk7cmV0dXJuIGUuc2V0KDAsMCxkK3UtZisoaS1sKSoocytjKSksZS5zZXQoMCwxLGcpLGUuc2V0KDEsMCxoKSxlLnNldCgxLDEsYiksZX1zdHJhc3NlbjN4Myh0KXt0PWl2dC5jaGVja01hdHJpeCh0KTtsZXQgZT1uZXcgaXZ0KDMsMyk7Y29uc3Qgbj10aGlzLmdldCgwLDApLG89dGhpcy5nZXQoMCwxKSxpPXRoaXMuZ2V0KDAsMiksYT10aGlzLmdldCgxLDApLHI9dGhpcy5nZXQoMSwxKSxzPXRoaXMuZ2V0KDEsMiksbD10aGlzLmdldCgyLDApLGM9dGhpcy5nZXQoMiwxKSxkPXRoaXMuZ2V0KDIsMikscD10LmdldCgwLDApLG09dC5nZXQoMCwxKSx1PXQuZ2V0KDAsMiksZj10LmdldCgxLDApLGc9dC5nZXQoMSwxKSxoPXQuZ2V0KDEsMiksYj10LmdldCgyLDApLHk9dC5nZXQoMiwxKSxfPXQuZ2V0KDIsMiksQz0obi1hKSooLW0rZyksTT0oLW4rYStyKSoocC1tK2cpLHY9KGErcikqKC1wK20pLHg9bipwLE89KC1uK2wrYykqKHAtdStoKSxQPSgtbitsKSoodS1oKSx3PShsK2MpKigtcCt1KSxrPSgtaStjK2QpKihnK2IteSksUz0oaS1kKSooZy15KSxEPWkqYixSPShjK2QpKigtYit5KSxFPSgtaStyK3MpKihoK2ItXyksQT0oaS1zKSooaC1fKSxUPShyK3MpKigtYitfKSxOPShuK28raS1hLXItYy1kKSpnK00rdit4K2srRCtSLHo9eCtPK3crKG4rbytpLXItcy1sLWMpKmgrRCtFK1QsST1DK3IqKC1wK20rZi1nLWgtYitfKStNK3grRCtFK0EsSD1DK00rdit4K3MqeSxGPUQrRStBK1QrYSp1LEw9eCtPK1ArYyooLXArdStmLWctaC1iK3kpK2srUytELEI9aytTK0QrUitsKm0sVj14K08rUCt3K2QqXztyZXR1cm4gZS5zZXQoMCwwLHgrRCtvKmYpLGUuc2V0KDAsMSxOKSxlLnNldCgwLDIseiksZS5zZXQoMSwwLEkpLGUuc2V0KDEsMSxIKSxlLnNldCgxLDIsRiksZS5zZXQoMiwwLEwpLGUuc2V0KDIsMSxCKSxlLnNldCgyLDIsViksZX1tbXVsU3RyYXNzZW4odCl7dD1pdnQuY2hlY2tNYXRyaXgodCk7bGV0IGU9dGhpcy5jbG9uZSgpLG49ZS5yb3dzLG89ZS5jb2x1bW5zLGk9dC5yb3dzLGE9dC5jb2x1bW5zO2Z1bmN0aW9uIHIodCxlLG4pe2lmKHQucm93cz09PWUmJnQuY29sdW1ucz09PW4pcmV0dXJuIHQ7e2xldCBvPWV2dC56ZXJvcyhlLG4pO3JldHVybiBvPW8uc2V0U3ViTWF0cml4KHQsMCwwKSxvfX1vIT09aSYmY29uc29sZS53YXJuKGBNdWx0aXBseWluZyAke259IHggJHtvfSBhbmQgJHtpfSB4ICR7YX0gbWF0cml4OiBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaC5gKTtsZXQgcz1NYXRoLm1heChuLGkpLGw9TWF0aC5tYXgobyxhKTtyZXR1cm4gZT1yKGUscyxsKSwoZnVuY3Rpb24gdChlLG4sbyxpKXtpZihvPD01MTJ8fGk8PTUxMilyZXR1cm4gZS5tbXVsKG4pO28lMj09MSYmaSUyPT0xPyhlPXIoZSxvKzEsaSsxKSxuPXIobixvKzEsaSsxKSk6byUyPT0xPyhlPXIoZSxvKzEsaSksbj1yKG4sbysxLGkpKTppJTI9PTEmJihlPXIoZSxvLGkrMSksbj1yKG4sbyxpKzEpKTtsZXQgYT1wYXJzZUludChlLnJvd3MvMiwxMCkscz1wYXJzZUludChlLmNvbHVtbnMvMiwxMCksbD1lLnN1Yk1hdHJpeCgwLGEtMSwwLHMtMSksYz1uLnN1Yk1hdHJpeCgwLGEtMSwwLHMtMSksZD1lLnN1Yk1hdHJpeCgwLGEtMSxzLGUuY29sdW1ucy0xKSxwPW4uc3ViTWF0cml4KDAsYS0xLHMsbi5jb2x1bW5zLTEpLG09ZS5zdWJNYXRyaXgoYSxlLnJvd3MtMSwwLHMtMSksdT1uLnN1Yk1hdHJpeChhLG4ucm93cy0xLDAscy0xKSxmPWUuc3ViTWF0cml4KGEsZS5yb3dzLTEscyxlLmNvbHVtbnMtMSksZz1uLnN1Yk1hdHJpeChhLG4ucm93cy0xLHMsbi5jb2x1bW5zLTEpLGg9dChldnQuYWRkKGwsZiksZXZ0LmFkZChjLGcpLGEscyksYj10KGV2dC5hZGQobSxmKSxjLGEscykseT10KGwsZXZ0LnN1YihwLGcpLGEscyksXz10KGYsZXZ0LnN1Yih1LGMpLGEscyksQz10KGV2dC5hZGQobCxkKSxnLGEscyksTT10KGV2dC5zdWIobSxsKSxldnQuYWRkKGMscCksYSxzKSx2PXQoZXZ0LnN1YihkLGYpLGV2dC5hZGQodSxnKSxhLHMpLHg9ZXZ0LmFkZChoLF8pO3guc3ViKEMpLHguYWRkKHYpO2xldCBPPWV2dC5hZGQoeSxDKSxQPWV2dC5hZGQoYixfKSx3PWV2dC5zdWIoaCxiKTt3LmFkZCh5KSx3LmFkZChNKTtsZXQgaz1ldnQuemVyb3MoMip4LnJvd3MsMip4LmNvbHVtbnMpO3JldHVybiBrPWsuc2V0U3ViTWF0cml4KHgsMCwwKSxrPWsuc2V0U3ViTWF0cml4KE8seC5yb3dzLDApLGs9ay5zZXRTdWJNYXRyaXgoUCwwLHguY29sdW1ucyksaz1rLnNldFN1Yk1hdHJpeCh3LHgucm93cyx4LmNvbHVtbnMpLGsuc3ViTWF0cml4KDAsby0xLDAsaS0xKX0pKGUsdD1yKHQscyxsKSxzLGwpfXNjYWxlUm93cyh0PXt9KXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e21pbjplPTAsbWF4Om49MX09dDtpZighTnVtYmVyLmlzRmluaXRlKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1pbiBtdXN0IGJlIGEgbnVtYmVyIik7aWYoIU51bWJlci5pc0Zpbml0ZShuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtYXggbXVzdCBiZSBhIG51bWJlciIpO2lmKGU+PW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgiKTtsZXQgbz1uZXcgaXZ0KHRoaXMucm93cyx0aGlzLmNvbHVtbnMpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKyl7Y29uc3QgaT10aGlzLmdldFJvdyh0KTtpLmxlbmd0aD4wJiZCTXQoaSx7bWluOmUsbWF4Om4sb3V0cHV0Oml9KSxvLnNldFJvdyh0LGkpfXJldHVybiBvfXNjYWxlQ29sdW1ucyh0PXt9KXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e21pbjplPTAsbWF4Om49MX09dDtpZighTnVtYmVyLmlzRmluaXRlKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1pbiBtdXN0IGJlIGEgbnVtYmVyIik7aWYoIU51bWJlci5pc0Zpbml0ZShuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtYXggbXVzdCBiZSBhIG51bWJlciIpO2lmKGU+PW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgiKTtsZXQgbz1uZXcgaXZ0KHRoaXMucm93cyx0aGlzLmNvbHVtbnMpO2ZvcihsZXQgdD0wO3Q8dGhpcy5jb2x1bW5zO3QrKyl7Y29uc3QgaT10aGlzLmdldENvbHVtbih0KTtpLmxlbmd0aCYmQk10KGkse21pbjplLG1heDpuLG91dHB1dDppfSksby5zZXRDb2x1bW4odCxpKX1yZXR1cm4gb31mbGlwUm93cygpe2NvbnN0IHQ9TWF0aC5jZWlsKHRoaXMuY29sdW1ucy8yKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0O24rKyl7bGV0IHQ9dGhpcy5nZXQoZSxuKSxvPXRoaXMuZ2V0KGUsdGhpcy5jb2x1bW5zLTEtbik7dGhpcy5zZXQoZSxuLG8pLHRoaXMuc2V0KGUsdGhpcy5jb2x1bW5zLTEtbix0KX1yZXR1cm4gdGhpc31mbGlwQ29sdW1ucygpe2NvbnN0IHQ9TWF0aC5jZWlsKHRoaXMucm93cy8yKTtmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspZm9yKGxldCBuPTA7bjx0O24rKyl7bGV0IHQ9dGhpcy5nZXQobixlKSxvPXRoaXMuZ2V0KHRoaXMucm93cy0xLW4sZSk7dGhpcy5zZXQobixlLG8pLHRoaXMuc2V0KHRoaXMucm93cy0xLW4sZSx0KX1yZXR1cm4gdGhpc31rcm9uZWNrZXJQcm9kdWN0KHQpe3Q9aXZ0LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMucm93cyxuPXRoaXMuY29sdW1ucyxvPXQucm93cyxpPXQuY29sdW1ucyxhPW5ldyBpdnQoZSpvLG4qaSk7Zm9yKGxldCByPTA7cjxlO3IrKylmb3IobGV0IGU9MDtlPG47ZSsrKWZvcihsZXQgbj0wO248bztuKyspZm9yKGxldCBzPTA7czxpO3MrKylhLnNldChvKnIrbixpKmUrcyx0aGlzLmdldChyLGUpKnQuZ2V0KG4scykpO3JldHVybiBhfWtyb25lY2tlclN1bSh0KXtpZih0PWl2dC5jaGVja01hdHJpeCh0KSwhdGhpcy5pc1NxdWFyZSgpfHwhdC5pc1NxdWFyZSgpKXRocm93IG5ldyBFcnJvcigiS3JvbmVja2VyIFN1bSBuZWVkcyB0d28gU3F1YXJlIE1hdHJpY2VzIik7bGV0IGU9dGhpcy5yb3dzLG49dC5yb3dzLG89dGhpcy5rcm9uZWNrZXJQcm9kdWN0KGl2dC5leWUobixuKSksaT1pdnQuZXllKGUsZSkua3JvbmVja2VyUHJvZHVjdCh0KTtyZXR1cm4gby5hZGQoaSl9dHJhbnNwb3NlKCl7bGV0IHQ9bmV3IGl2dCh0aGlzLmNvbHVtbnMsdGhpcy5yb3dzKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQuc2V0KG4sZSx0aGlzLmdldChlLG4pKTtyZXR1cm4gdH1zb3J0Um93cyh0PW52dCl7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKXRoaXMuc2V0Um93KGUsdGhpcy5nZXRSb3coZSkuc29ydCh0KSk7cmV0dXJuIHRoaXN9c29ydENvbHVtbnModD1udnQpe2ZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldENvbHVtbihlLHRoaXMuZ2V0Q29sdW1uKGUpLnNvcnQodCkpO3JldHVybiB0aGlzfXN1Yk1hdHJpeCh0LGUsbixvKXtKTXQodGhpcyx0LGUsbixvKTtsZXQgaT1uZXcgaXZ0KGUtdCsxLG8tbisxKTtmb3IobGV0IGE9dDthPD1lO2ErKylmb3IobGV0IGU9bjtlPD1vO2UrKylpLnNldChhLXQsZS1uLHRoaXMuZ2V0KGEsZSkpO3JldHVybiBpfXN1Yk1hdHJpeFJvdyh0LGUsbil7aWYodm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09biYmKG49dGhpcy5jb2x1bW5zLTEpLGU+bnx8ZTwwfHxlPj10aGlzLmNvbHVtbnN8fG48MHx8bj49dGhpcy5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJBcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTtsZXQgbz1uZXcgaXZ0KHQubGVuZ3RoLG4tZSsxKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKylmb3IobGV0IGE9ZTthPD1uO2ErKyl7aWYodFtpXTwwfHx0W2ldPj10aGlzLnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFJvdyBpbmRleCBvdXQgb2YgcmFuZ2U6ICR7dFtpXX1gKTtvLnNldChpLGEtZSx0aGlzLmdldCh0W2ldLGEpKX1yZXR1cm4gb31zdWJNYXRyaXhDb2x1bW4odCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPXRoaXMucm93cy0xKSxlPm58fGU8MHx8ZT49dGhpcy5yb3dzfHxuPDB8fG4+PXRoaXMucm93cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXJndW1lbnQgb3V0IG9mIHJhbmdlIik7bGV0IG89bmV3IGl2dChuLWUrMSx0Lmxlbmd0aCk7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKGxldCBhPWU7YTw9bjthKyspe2lmKHRbaV08MHx8dFtpXT49dGhpcy5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKGBDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlOiAke3RbaV19YCk7by5zZXQoYS1lLGksdGhpcy5nZXQoYSx0W2ldKSl9cmV0dXJuIG99c2V0U3ViTWF0cml4KHQsZSxuKXtpZigodD1pdnQuY2hlY2tNYXRyaXgodCkpLmlzRW1wdHkoKSlyZXR1cm4gdGhpcztKTXQodGhpcyxlLGUrdC5yb3dzLTEsbixuK3QuY29sdW1ucy0xKTtmb3IobGV0IG89MDtvPHQucm93cztvKyspZm9yKGxldCBpPTA7aTx0LmNvbHVtbnM7aSsrKXRoaXMuc2V0KGUrbyxuK2ksdC5nZXQobyxpKSk7cmV0dXJuIHRoaXN9c2VsZWN0aW9uKHQsZSl7bGV0IG49KGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybntyb3c6WE10KHQsZSksY29sdW1uOktNdCh0LG4pfX0pKHRoaXMsdCxlKSxpPW5ldyBpdnQodC5sZW5ndGgsZS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8bi5yb3cubGVuZ3RoO3QrKyl7bGV0IGU9bi5yb3dbdF07Zm9yKGxldCBvPTA7bzxuLmNvbHVtbi5sZW5ndGg7bysrKXtpLnNldCh0LG8sdGhpcy5nZXQoZSxuLmNvbHVtbltvXSkpfX1yZXR1cm4gaX10cmFjZSgpe2xldCB0PU1hdGgubWluKHRoaXMucm93cyx0aGlzLmNvbHVtbnMpLGU9MDtmb3IobGV0IG49MDtuPHQ7bisrKWUrPXRoaXMuZ2V0KG4sbik7cmV0dXJuIGV9Y2xvbmUoKXtsZXQgdD1uZXcgaXZ0KHRoaXMucm93cyx0aGlzLmNvbHVtbnMpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdC5zZXQoZSxuLHRoaXMuZ2V0KGUsbikpO3JldHVybiB0fXN1bSh0KXtzd2l0Y2godCl7Y2FzZSJyb3ciOnJldHVybihmdW5jdGlvbiBlKHQpe2xldCBlPVFNdCh0LnJvd3MpO2ZvcihsZXQgbj0wO248dC5yb3dzOysrbilmb3IobGV0IG89MDtvPHQuY29sdW1uczsrK28pZVtuXSs9dC5nZXQobixvKTtyZXR1cm4gZX0pKHRoaXMpO2Nhc2UiY29sdW1uIjpyZXR1cm4oZnVuY3Rpb24gbih0KXtsZXQgZT1RTXQodC5jb2x1bW5zKTtmb3IobGV0IG49MDtuPHQucm93czsrK24pZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7KytvKWVbb10rPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtjYXNlIHZvaWQgMDpyZXR1cm4oZnVuY3Rpb24gbyh0KXtsZXQgZT0wO2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspZSs9dC5nZXQobixvKTtyZXR1cm4gZX0pKHRoaXMpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX1wcm9kdWN0KHQpe3N3aXRjaCh0KXtjYXNlInJvdyI6cmV0dXJuKGZ1bmN0aW9uIGUodCl7bGV0IGU9UU10KHQucm93cywxKTtmb3IobGV0IG49MDtuPHQucm93czsrK24pZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7KytvKWVbbl0qPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtjYXNlImNvbHVtbiI6cmV0dXJuKGZ1bmN0aW9uIG4odCl7bGV0IGU9UU10KHQuY29sdW1ucywxKTtmb3IobGV0IG49MDtuPHQucm93czsrK24pZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7KytvKWVbb10qPXQuZ2V0KG4sbyk7cmV0dXJuIGV9KSh0aGlzKTtjYXNlIHZvaWQgMDpyZXR1cm4oZnVuY3Rpb24gbyh0KXtsZXQgZT0xO2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspZSo9dC5nZXQobixvKTtyZXR1cm4gZX0pKHRoaXMpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX1tZWFuKHQpe2NvbnN0IGU9dGhpcy5zdW0odCk7c3dpdGNoKHQpe2Nhc2Uicm93Ijpmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZVt0XS89dGhpcy5jb2x1bW5zO3JldHVybiBlO2Nhc2UiY29sdW1uIjpmb3IobGV0IHQ9MDt0PHRoaXMuY29sdW1uczt0KyspZVt0XS89dGhpcy5yb3dzO3JldHVybiBlO2Nhc2Ugdm9pZCAwOnJldHVybiBlL3RoaXMuc2l6ZTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19dmFyaWFuY2UodCxlPXt9KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJihlPXQsdD12b2lkIDApLCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7dW5iaWFzZWQ6bj0hMCxtZWFuOm89dGhpcy5tZWFuKHQpfT1lO2lmKCJib29sZWFuIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigidW5iaWFzZWQgbXVzdCBiZSBhIGJvb2xlYW4iKTtzd2l0Y2godCl7Y2FzZSJyb3ciOmlmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyBUeXBlRXJyb3IoIm1lYW4gbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBlKHQsbixvKXtjb25zdCBpPXQucm93cyxhPXQuY29sdW1ucyxyPVtdO2ZvcihsZXQgZT0wO2U8aTtlKyspe2xldCBpPTAscz0wLGw9MDtmb3IobGV0IG49MDtuPGE7bisrKWw9dC5nZXQoZSxuKS1vW2VdLGkrPWwscys9bCpsO3IucHVzaChuPyhzLWkqaS9hKS8oYS0xKToocy1pKmkvYSkvYSl9cmV0dXJuIHJ9KSh0aGlzLG4sbyk7Y2FzZSJjb2x1bW4iOmlmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyBUeXBlRXJyb3IoIm1lYW4gbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPXQucm93cyxpPXQuY29sdW1ucyxhPVtdO2ZvcihsZXQgcj0wO3I8aTtyKyspe2xldCBpPTAscz0wLGw9MDtmb3IobGV0IGU9MDtlPG87ZSsrKWw9dC5nZXQoZSxyKS1uW3JdLGkrPWwscys9bCpsO2EucHVzaChlPyhzLWkqaS9vKS8oby0xKToocy1pKmkvbykvbyl9cmV0dXJuIGF9KSh0aGlzLG4sbyk7Y2FzZSB2b2lkIDA6aWYoIm51bWJlciIhPXR5cGVvZiBvKXRocm93IG5ldyBUeXBlRXJyb3IoIm1lYW4gbXVzdCBiZSBhIG51bWJlciIpO3JldHVybihmdW5jdGlvbiBhKHQsZSxuKXtjb25zdCBvPXQucm93cyxpPXQuY29sdW1ucyxhPW8qaTtsZXQgcj0wLHM9MCxsPTA7Zm9yKGxldCBlPTA7ZTxvO2UrKylmb3IobGV0IG89MDtvPGk7bysrKWw9dC5nZXQoZSxvKS1uLHIrPWwscys9bCpsO3JldHVybiBlPyhzLXIqci9hKS8oYS0xKToocy1yKnIvYSkvYX0pKHRoaXMsbixvKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19c3RhbmRhcmREZXZpYXRpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIHQmJihlPXQsdD12b2lkIDApO2NvbnN0IG49dGhpcy52YXJpYW5jZSh0LGUpO2lmKHZvaWQgMD09PXQpcmV0dXJuIE1hdGguc3FydChuKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdPU1hdGguc3FydChuW3RdKTtyZXR1cm4gbn1jZW50ZXIodCxlPXt9KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJihlPXQsdD12b2lkIDApLCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7Y2VudGVyOm49dGhpcy5tZWFuKHQpfT1lO3N3aXRjaCh0KXtjYXNlInJvdyI6aWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2VudGVyIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe2ZvcihsZXQgZT0wO2U8dC5yb3dzO2UrKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQoZSxvLHQuZ2V0KGUsbyktbltlXSl9KSh0aGlzLG4pLHRoaXM7Y2FzZSJjb2x1bW4iOmlmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImNlbnRlciBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIG8odCxlKXtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXQuc2V0KG4sbyx0LmdldChuLG8pLWVbb10pfSkodGhpcyxuKSx0aGlzO2Nhc2Ugdm9pZCAwOmlmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJjZW50ZXIgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybihmdW5jdGlvbiBpKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS1lKX0pKHRoaXMsbiksdGhpcztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19c2NhbGUodCxlPXt9KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJihlPXQsdD12b2lkIDApLCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7bGV0IG49ZS5zY2FsZTtzd2l0Y2godCl7Y2FzZSJyb3ciOmlmKHZvaWQgMD09PW4pbj0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248dC5yb3dzO24rKyl7bGV0IG89MDtmb3IobGV0IGU9MDtlPHQuY29sdW1ucztlKyspbys9TWF0aC5wb3codC5nZXQobixlKSwyKS8odC5jb2x1bW5zLTEpO2UucHVzaChNYXRoLnNxcnQobykpfXJldHVybiBlfSkodGhpcyk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzY2FsZSBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIG8odCxlKXtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXQuc2V0KG4sbyx0LmdldChuLG8pL2Vbbl0pfSkodGhpcyxuKSx0aGlzO2Nhc2UiY29sdW1uIjppZih2b2lkIDA9PT1uKW49KGZ1bmN0aW9uIGkodCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQuY29sdW1ucztuKyspe2xldCBvPTA7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7ZSsrKW8rPU1hdGgucG93KHQuZ2V0KGUsbiksMikvKHQucm93cy0xKTtlLnB1c2goTWF0aC5zcXJ0KG8pKX1yZXR1cm4gZX0pKHRoaXMpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBhKHQsZSl7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChuLG8sdC5nZXQobixvKS9lW29dKX0pKHRoaXMsbiksdGhpcztjYXNlIHZvaWQgMDppZih2b2lkIDA9PT1uKW49KGZ1bmN0aW9uIHIodCl7Y29uc3QgZT10LnNpemUtMTtsZXQgbj0wO2ZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKylmb3IobGV0IGk9MDtpPHQucm93cztpKyspbis9TWF0aC5wb3codC5nZXQoaSxvKSwyKS9lO3JldHVybiBNYXRoLnNxcnQobil9KSh0aGlzKTtlbHNlIGlmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJzY2FsZSBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuKGZ1bmN0aW9uIHModCxlKXtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXQuc2V0KG4sbyx0LmdldChuLG8pL2UpfSkodGhpcyxuKSx0aGlzO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX10b1N0cmluZyh0KXtyZXR1cm4gak10KHRoaXMsdCl9fWZ1bmN0aW9uIG52dCh0LGUpe3JldHVybiB0LWV9ZXZ0LnByb3RvdHlwZS5rbGFzcz0iTWF0cml4IiwidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmKGV2dC5wcm90b3R5cGVbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09ZnVuY3Rpb24gb3Z0KCl7cmV0dXJuIGpNdCh0aGlzKX0pLGV2dC5yYW5kb209ZXZ0LnJhbmQsZXZ0LnJhbmRvbUludD1ldnQucmFuZEludCxldnQuZGlhZ29uYWw9ZXZ0LmRpYWcsZXZ0LnByb3RvdHlwZS5kaWFnb25hbD1ldnQucHJvdG90eXBlLmRpYWcsZXZ0LmlkZW50aXR5PWV2dC5leWUsZXZ0LnByb3RvdHlwZS5uZWdhdGU9ZXZ0LnByb3RvdHlwZS5uZWcsZXZ0LnByb3RvdHlwZS50ZW5zb3JQcm9kdWN0PWV2dC5wcm90b3R5cGUua3JvbmVja2VyUHJvZHVjdDtjbGFzcyBpdnQgZXh0ZW5kcyBldnR7Y29uc3RydWN0b3IodCxlKXtpZihzdXBlcigpLGl2dC5pc01hdHJpeCh0KSlyZXR1cm4gdC5jbG9uZSgpO2lmKE51bWJlci5pc0ludGVnZXIodCkmJnQ+PTApe2lmKHRoaXMuZGF0YT1bXSwhKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTApKXRocm93IG5ldyBUeXBlRXJyb3IoIm5Db2x1bW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIik7Zm9yKGxldCBuPTA7bjx0O24rKyl0aGlzLmRhdGEucHVzaChuZXcgRmxvYXQ2NEFycmF5KGUpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIgb3IgYW4gYXJyYXkiKTt7Y29uc3Qgbj10O2lmKCJudW1iZXIiIT10eXBlb2YoZT0odD1uLmxlbmd0aCk/blswXS5sZW5ndGg6MCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGF0YSBtdXN0IGJlIGEgMkQgYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCIpO3RoaXMuZGF0YT1bXTtmb3IobGV0IG89MDtvPHQ7bysrKXtpZihuW29dLmxlbmd0aCE9PWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluY29uc2lzdGVudCBhcnJheSBkaW1lbnNpb25zIik7dGhpcy5kYXRhLnB1c2goRmxvYXQ2NEFycmF5LmZyb20obltvXSkpfX19dGhpcy5yb3dzPXQsdGhpcy5jb2x1bW5zPWV9c2V0KHQsZSxuKXtyZXR1cm4gdGhpcy5kYXRhW3RdW2VdPW4sdGhpc31nZXQodCxlKXtyZXR1cm4gdGhpcy5kYXRhW3RdW2VdfXJlbW92ZVJvdyh0KXtyZXR1cm4gR010KHRoaXMsdCksdGhpcy5kYXRhLnNwbGljZSh0LDEpLHRoaXMucm93cy09MSx0aGlzfWFkZFJvdyh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT10LHQ9dGhpcy5yb3dzKSxHTXQodGhpcyx0LCEwKSxlPUZsb2F0NjRBcnJheS5mcm9tKHFNdCh0aGlzLGUpKSx0aGlzLmRhdGEuc3BsaWNlKHQsMCxlKSx0aGlzLnJvd3MrPTEsdGhpc31yZW1vdmVDb2x1bW4odCl7WU10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKXtjb25zdCBuPW5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zLTEpO2ZvcihsZXQgbz0wO288dDtvKyspbltvXT10aGlzLmRhdGFbZV1bb107Zm9yKGxldCBvPXQrMTtvPHRoaXMuY29sdW1ucztvKyspbltvLTFdPXRoaXMuZGF0YVtlXVtvXTt0aGlzLmRhdGFbZV09bn1yZXR1cm4gdGhpcy5jb2x1bW5zLT0xLHRoaXN9YWRkQ29sdW1uKHQsZSl7dm9pZCAwPT09ZSYmKGU9dCx0PXRoaXMuY29sdW1ucyksWU10KHRoaXMsdCwhMCksZT1aTXQodGhpcyxlKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspe2NvbnN0IG89bmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMrMSk7bGV0IGk9MDtmb3IoO2k8dDtpKyspb1tpXT10aGlzLmRhdGFbbl1baV07Zm9yKG9baSsrXT1lW25dO2k8dGhpcy5jb2x1bW5zKzE7aSsrKW9baV09dGhpcy5kYXRhW25dW2ktMV07dGhpcy5kYXRhW25dPW99cmV0dXJuIHRoaXMuY29sdW1ucys9MSx0aGlzfX0hKGZ1bmN0aW9uIGF2dCh0LGUpe3QucHJvdG90eXBlLmFkZD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLmFkZFMoZSk6dGhpcy5hZGRNKGUpfSx0LnByb3RvdHlwZS5hZGRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKStlKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuYWRkTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKStuLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5hZGQ9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5hZGQobyl9LHQucHJvdG90eXBlLnN1Yj1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLnN1YlMoZSk6dGhpcy5zdWJNKGUpfSx0LnByb3RvdHlwZS5zdWJTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKS1lKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuc3ViTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKS1uLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5zdWI9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5zdWIobyl9LHQucHJvdG90eXBlLnN1YnRyYWN0PXQucHJvdG90eXBlLnN1Yix0LnByb3RvdHlwZS5zdWJ0cmFjdFM9dC5wcm90b3R5cGUuc3ViUyx0LnByb3RvdHlwZS5zdWJ0cmFjdE09dC5wcm90b3R5cGUuc3ViTSx0LnN1YnRyYWN0PXQuc3ViLHQucHJvdG90eXBlLm11bD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLm11bFMoZSk6dGhpcy5tdWxNKGUpfSx0LnByb3RvdHlwZS5tdWxTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKSplKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUubXVsTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKSpuLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5tdWw9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5tdWwobyl9LHQucHJvdG90eXBlLm11bHRpcGx5PXQucHJvdG90eXBlLm11bCx0LnByb3RvdHlwZS5tdWx0aXBseVM9dC5wcm90b3R5cGUubXVsUyx0LnByb3RvdHlwZS5tdWx0aXBseU09dC5wcm90b3R5cGUubXVsTSx0Lm11bHRpcGx5PXQubXVsLHQucHJvdG90eXBlLmRpdj1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLmRpdlMoZSk6dGhpcy5kaXZNKGUpfSx0LnByb3RvdHlwZS5kaXZTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKS9lKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGl2TT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKS9uLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5kaXY9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5kaXYobyl9LHQucHJvdG90eXBlLmRpdmlkZT10LnByb3RvdHlwZS5kaXYsdC5wcm90b3R5cGUuZGl2aWRlUz10LnByb3RvdHlwZS5kaXZTLHQucHJvdG90eXBlLmRpdmlkZU09dC5wcm90b3R5cGUuZGl2TSx0LmRpdmlkZT10LmRpdix0LnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5tb2RTKGUpOnRoaXMubW9kTShlKX0sdC5wcm90b3R5cGUubW9kUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbiklZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLm1vZE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSklbi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQubW9kPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikubW9kKG8pfSx0LnByb3RvdHlwZS5tb2R1bHVzPXQucHJvdG90eXBlLm1vZCx0LnByb3RvdHlwZS5tb2R1bHVzUz10LnByb3RvdHlwZS5tb2RTLHQucHJvdG90eXBlLm1vZHVsdXNNPXQucHJvdG90eXBlLm1vZE0sdC5tb2R1bHVzPXQubW9kLHQucHJvdG90eXBlLmFuZD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLmFuZFMoZSk6dGhpcy5hbmRNKGUpfSx0LnByb3RvdHlwZS5hbmRTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKSZlKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuYW5kTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKSZuLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5hbmQ9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5hbmQobyl9LHQucHJvdG90eXBlLm9yPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMub3JTKGUpOnRoaXMub3JNKGUpfSx0LnByb3RvdHlwZS5vclM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pfGUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5vck09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSl8bi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQub3I9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5vcihvKX0sdC5wcm90b3R5cGUueG9yPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMueG9yUyhlKTp0aGlzLnhvck0oZSl9LHQucHJvdG90eXBlLnhvclM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pXmUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS54b3JNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpXm4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lnhvcj1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLnhvcihvKX0sdC5wcm90b3R5cGUubGVmdFNoaWZ0PWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMubGVmdFNoaWZ0UyhlKTp0aGlzLmxlZnRTaGlmdE0oZSl9LHQucHJvdG90eXBlLmxlZnRTaGlmdFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pPDxlKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUubGVmdFNoaWZ0TT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKTw8bi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQubGVmdFNoaWZ0PWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikubGVmdFNoaWZ0KG8pfSx0LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0PWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFMoZSk6dGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TShlKX0sdC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pPj5lKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSk+Pm4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQ9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KG8pfSx0LnByb3RvdHlwZS5yaWdodFNoaWZ0PWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMucmlnaHRTaGlmdFMoZSk6dGhpcy5yaWdodFNoaWZ0TShlKX0sdC5wcm90b3R5cGUucmlnaHRTaGlmdFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pPj4+ZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnJpZ2h0U2hpZnRNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpPj4+bi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQucmlnaHRTaGlmdD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLnJpZ2h0U2hpZnQobyl9LHQucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdD10LnByb3RvdHlwZS5yaWdodFNoaWZ0LHQucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdFM9dC5wcm90b3R5cGUucmlnaHRTaGlmdFMsdC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0TT10LnByb3RvdHlwZS5yaWdodFNoaWZ0TSx0Lnplcm9GaWxsUmlnaHRTaGlmdD10LnJpZ2h0U2hpZnQsdC5wcm90b3R5cGUubm90PWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx+dGhpcy5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQubm90PWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLm5vdCgpfSx0LnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYWJzKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hYnM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYWJzKCl9LHQucHJvdG90eXBlLmFjb3M9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYWNvcyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYWNvcz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hY29zKCl9LHQucHJvdG90eXBlLmFjb3NoPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmFjb3NoKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hY29zaD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hY29zaCgpfSx0LnByb3RvdHlwZS5hc2luPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmFzaW4odGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmFzaW49ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYXNpbigpfSx0LnByb3RvdHlwZS5hc2luaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hc2luaCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYXNpbmg9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYXNpbmgoKX0sdC5wcm90b3R5cGUuYXRhbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hdGFuKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hdGFuPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmF0YW4oKX0sdC5wcm90b3R5cGUuYXRhbmg9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYXRhbmgodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmF0YW5oPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmF0YW5oKCl9LHQucHJvdG90eXBlLmNicnQ9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguY2JydCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuY2JydD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5jYnJ0KCl9LHQucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguY2VpbCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuY2VpbD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5jZWlsKCl9LHQucHJvdG90eXBlLmNsejMyPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmNsejMyKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5jbHozMj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5jbHozMigpfSx0LnByb3RvdHlwZS5jb3M9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguY29zKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5jb3M9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuY29zKCl9LHQucHJvdG90eXBlLmNvc2g9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguY29zaCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuY29zaD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5jb3NoKCl9LHQucHJvdG90eXBlLmV4cD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5leHAodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmV4cD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5leHAoKX0sdC5wcm90b3R5cGUuZXhwbTE9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguZXhwbTEodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmV4cG0xPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmV4cG0xKCl9LHQucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmZsb29yKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5mbG9vcj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5mbG9vcigpfSx0LnByb3RvdHlwZS5mcm91bmQ9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguZnJvdW5kKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5mcm91bmQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuZnJvdW5kKCl9LHQucHJvdG90eXBlLmxvZz1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5sb2codGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmxvZz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5sb2coKX0sdC5wcm90b3R5cGUubG9nMXA9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgubG9nMXAodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmxvZzFwPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmxvZzFwKCl9LHQucHJvdG90eXBlLmxvZzEwPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmxvZzEwKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5sb2cxMD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5sb2cxMCgpfSx0LnByb3RvdHlwZS5sb2cyPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmxvZzIodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmxvZzI9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikubG9nMigpfSx0LnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5yb3VuZCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQucm91bmQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikucm91bmQoKX0sdC5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5zaWduKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5zaWduPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnNpZ24oKX0sdC5wcm90b3R5cGUuc2luPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnNpbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuc2luPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnNpbigpfSx0LnByb3RvdHlwZS5zaW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnNpbmgodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnNpbmg9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuc2luaCgpfSx0LnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnNxcnQodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnNxcnQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuc3FydCgpfSx0LnByb3RvdHlwZS50YW49ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgudGFuKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC50YW49ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikudGFuKCl9LHQucHJvdG90eXBlLnRhbmg9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgudGFuaCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQudGFuaD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS50YW5oKCl9LHQucHJvdG90eXBlLnRydW5jPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnRydW5jKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC50cnVuYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS50cnVuYygpfSx0LnBvdz1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLnBvdyhvKX0sdC5wcm90b3R5cGUucG93PWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMucG93UyhlKTp0aGlzLnBvd00oZSl9LHQucHJvdG90eXBlLnBvd1M9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLnBvdyh0aGlzLmdldCh0LG4pLGUpKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucG93TT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5wb3codGhpcy5nZXQodCxlKSxuLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9fSkoZXZ0LGl2dCk7Y2xhc3MgcnZ0IGV4dGVuZHMgZXZ0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kYXRhPXQsdGhpcy5yb3dzPXQubGVuZ3RoLHRoaXMuY29sdW1ucz10WzBdLmxlbmd0aH1zZXQodCxlLG4pe3JldHVybiB0aGlzLmRhdGFbdF1bZV09bix0aGlzfWdldCh0LGUpe3JldHVybiB0aGlzLmRhdGFbdF1bZV19fWNsYXNzIHN2dHtjb25zdHJ1Y3Rvcih0KXtsZXQgZSxuLG8saSxhLHIscyxsLGMsZD0odD1ydnQuY2hlY2tNYXRyaXgodCkpLmNsb25lKCkscD1kLnJvd3MsbT1kLmNvbHVtbnMsdT1uZXcgRmxvYXQ2NEFycmF5KHApLGY9MTtmb3IoZT0wO2U8cDtlKyspdVtlXT1lO2ZvcihsPW5ldyBGbG9hdDY0QXJyYXkocCksbj0wO248bTtuKyspe2ZvcihlPTA7ZTxwO2UrKylsW2VdPWQuZ2V0KGUsbik7Zm9yKGU9MDtlPHA7ZSsrKXtmb3IoYz1NYXRoLm1pbihlLG4pLGE9MCxvPTA7bzxjO28rKylhKz1kLmdldChlLG8pKmxbb107bFtlXS09YSxkLnNldChlLG4sbFtlXSl9Zm9yKGk9bixlPW4rMTtlPHA7ZSsrKU1hdGguYWJzKGxbZV0pPk1hdGguYWJzKGxbaV0pJiYoaT1lKTtpZihpIT09bil7Zm9yKG89MDtvPG07bysrKXI9ZC5nZXQoaSxvKSxkLnNldChpLG8sZC5nZXQobixvKSksZC5zZXQobixvLHIpO3M9dVtpXSx1W2ldPXVbbl0sdVtuXT1zLGY9LWZ9aWYobjxwJiYwIT09ZC5nZXQobixuKSlmb3IoZT1uKzE7ZTxwO2UrKylkLnNldChlLG4sZC5nZXQoZSxuKS9kLmdldChuLG4pKX10aGlzLkxVPWQsdGhpcy5waXZvdFZlY3Rvcj11LHRoaXMucGl2b3RTaWduPWZ9aXNTaW5ndWxhcigpe2xldCB0PXRoaXMuTFUsZT10LmNvbHVtbnM7Zm9yKGxldCBuPTA7bjxlO24rKylpZigwPT09dC5nZXQobixuKSlyZXR1cm4hMDtyZXR1cm4hMX1zb2x2ZSh0KXt0PWl2dC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLkxVO2lmKGUucm93cyE9PXQucm93cyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbWF0cml4IGRpbWVuc2lvbnMiKTtpZih0aGlzLmlzU2luZ3VsYXIoKSl0aHJvdyBuZXcgRXJyb3IoIkxVIG1hdHJpeCBpcyBzaW5ndWxhciIpO2xldCBuLG8saSxhPXQuY29sdW1ucyxyPXQuc3ViTWF0cml4Um93KHRoaXMucGl2b3RWZWN0b3IsMCxhLTEpLHM9ZS5jb2x1bW5zO2ZvcihpPTA7aTxzO2krKylmb3Iobj1pKzE7bjxzO24rKylmb3Iobz0wO288YTtvKyspci5zZXQobixvLHIuZ2V0KG4sbyktci5nZXQoaSxvKSplLmdldChuLGkpKTtmb3IoaT1zLTE7aT49MDtpLS0pe2ZvcihvPTA7bzxhO28rKylyLnNldChpLG8sci5nZXQoaSxvKS9lLmdldChpLGkpKTtmb3Iobj0wO248aTtuKyspZm9yKG89MDtvPGE7bysrKXIuc2V0KG4sbyxyLmdldChuLG8pLXIuZ2V0KGksbykqZS5nZXQobixpKSl9cmV0dXJuIHJ9Z2V0IGRldGVybWluYW50KCl7bGV0IHQ9dGhpcy5MVTtpZighdC5pc1NxdWFyZSgpKXRocm93IG5ldyBFcnJvcigiTWF0cml4IG11c3QgYmUgc3F1YXJlIik7bGV0IGU9dGhpcy5waXZvdFNpZ24sbj10LmNvbHVtbnM7Zm9yKGxldCBvPTA7bzxuO28rKyllKj10LmdldChvLG8pO3JldHVybiBlfWdldCBsb3dlclRyaWFuZ3VsYXJNYXRyaXgoKXtsZXQgdD10aGlzLkxVLGU9dC5yb3dzLG49dC5jb2x1bW5zLG89bmV3IGl2dChlLG4pO2ZvcihsZXQgaT0wO2k8ZTtpKyspZm9yKGxldCBlPTA7ZTxuO2UrKylvLnNldChpLGUsaT5lP3QuZ2V0KGksZSk6aT09PWU/MTowKTtyZXR1cm4gb31nZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCl7bGV0IHQ9dGhpcy5MVSxlPXQucm93cyxuPXQuY29sdW1ucyxvPW5ldyBpdnQoZSxuKTtmb3IobGV0IGk9MDtpPGU7aSsrKWZvcihsZXQgZT0wO2U8bjtlKyspby5zZXQoaSxlLGk8PWU/dC5nZXQoaSxlKTowKTtyZXR1cm4gb31nZXQgcGl2b3RQZXJtdXRhdGlvblZlY3Rvcigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMucGl2b3RWZWN0b3IpfX1mdW5jdGlvbiBsdnQodCxlKXtsZXQgbj0wO3JldHVybiBNYXRoLmFicyh0KT5NYXRoLmFicyhlKT8obj1lL3QsTWF0aC5hYnModCkqTWF0aC5zcXJ0KDErbipuKSk6MCE9PWU/KG49dC9lLE1hdGguYWJzKGUpKk1hdGguc3FydCgxK24qbikpOjB9Y2xhc3MgY3Z0e2NvbnN0cnVjdG9yKHQpe2xldCBlLG4sbyxpLGE9KHQ9cnZ0LmNoZWNrTWF0cml4KHQpKS5jbG9uZSgpLHI9dC5yb3dzLHM9dC5jb2x1bW5zLGw9bmV3IEZsb2F0NjRBcnJheShzKTtmb3Iobz0wO288cztvKyspe2xldCB0PTA7Zm9yKGU9bztlPHI7ZSsrKXQ9bHZ0KHQsYS5nZXQoZSxvKSk7aWYoMCE9PXQpe2ZvcihhLmdldChvLG8pPDAmJih0PS10KSxlPW87ZTxyO2UrKylhLnNldChlLG8sYS5nZXQoZSxvKS90KTtmb3IoYS5zZXQobyxvLGEuZ2V0KG8sbykrMSksbj1vKzE7bjxzO24rKyl7Zm9yKGk9MCxlPW87ZTxyO2UrKylpKz1hLmdldChlLG8pKmEuZ2V0KGUsbik7Zm9yKGk9LWkvYS5nZXQobyxvKSxlPW87ZTxyO2UrKylhLnNldChlLG4sYS5nZXQoZSxuKStpKmEuZ2V0KGUsbykpfX1sW29dPS10fXRoaXMuUVI9YSx0aGlzLlJkaWFnPWx9c29sdmUodCl7dD1pdnQuY2hlY2tNYXRyaXgodCk7bGV0IGU9dGhpcy5RUixuPWUucm93cztpZih0LnJvd3MhPT1uKXRocm93IG5ldyBFcnJvcigiTWF0cml4IHJvdyBkaW1lbnNpb25zIG11c3QgYWdyZWUiKTtpZighdGhpcy5pc0Z1bGxSYW5rKCkpdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggaXMgcmFuayBkZWZpY2llbnQiKTtsZXQgbyxpLGEscixzPXQuY29sdW1ucyxsPXQuY2xvbmUoKSxjPWUuY29sdW1ucztmb3IoYT0wO2E8YzthKyspZm9yKGk9MDtpPHM7aSsrKXtmb3Iocj0wLG89YTtvPG47bysrKXIrPWUuZ2V0KG8sYSkqbC5nZXQobyxpKTtmb3Iocj0tci9lLmdldChhLGEpLG89YTtvPG47bysrKWwuc2V0KG8saSxsLmdldChvLGkpK3IqZS5nZXQobyxhKSl9Zm9yKGE9Yy0xO2E+PTA7YS0tKXtmb3IoaT0wO2k8cztpKyspbC5zZXQoYSxpLGwuZ2V0KGEsaSkvdGhpcy5SZGlhZ1thXSk7Zm9yKG89MDtvPGE7bysrKWZvcihpPTA7aTxzO2krKylsLnNldChvLGksbC5nZXQobyxpKS1sLmdldChhLGkpKmUuZ2V0KG8sYSkpfXJldHVybiBsLnN1Yk1hdHJpeCgwLGMtMSwwLHMtMSl9aXNGdWxsUmFuaygpe2xldCB0PXRoaXMuUVIuY29sdW1ucztmb3IobGV0IGU9MDtlPHQ7ZSsrKWlmKDA9PT10aGlzLlJkaWFnW2VdKXJldHVybiExO3JldHVybiEwfWdldCB1cHBlclRyaWFuZ3VsYXJNYXRyaXgoKXtsZXQgdCxlLG49dGhpcy5RUixvPW4uY29sdW1ucyxpPW5ldyBpdnQobyxvKTtmb3IodD0wO3Q8bzt0KyspZm9yKGU9MDtlPG87ZSsrKWkuc2V0KHQsZSx0PGU/bi5nZXQodCxlKTp0PT09ZT90aGlzLlJkaWFnW3RdOjApO3JldHVybiBpfWdldCBvcnRob2dvbmFsTWF0cml4KCl7bGV0IHQsZSxuLG8saT10aGlzLlFSLGE9aS5yb3dzLHI9aS5jb2x1bW5zLHM9bmV3IGl2dChhLHIpO2ZvcihuPXItMTtuPj0wO24tLSl7Zm9yKHQ9MDt0PGE7dCsrKXMuc2V0KHQsbiwwKTtmb3Iocy5zZXQobixuLDEpLGU9bjtlPHI7ZSsrKWlmKDAhPT1pLmdldChuLG4pKXtmb3Iobz0wLHQ9bjt0PGE7dCsrKW8rPWkuZ2V0KHQsbikqcy5nZXQodCxlKTtmb3Iobz0tby9pLmdldChuLG4pLHQ9bjt0PGE7dCsrKXMuc2V0KHQsZSxzLmdldCh0LGUpK28qaS5nZXQodCxuKSl9fXJldHVybiBzfX1jbGFzcyBkdnR7Y29uc3RydWN0b3IodCxlPXt9KXtpZigodD1ydnQuY2hlY2tNYXRyaXgodCkpLmlzRW1wdHkoKSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCBtdXN0IGJlIG5vbi1lbXB0eSIpO2xldCBuPXQucm93cyxvPXQuY29sdW1ucztjb25zdHtjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9yczppPSEwLGNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9yczphPSEwLGF1dG9UcmFuc3Bvc2U6cj0hMX09ZTtsZXQgcyxsPUJvb2xlYW4oaSksYz1Cb29sZWFuKGEpLGQ9ITE7aWYobjxvKWlmKHIpe3M9dC50cmFuc3Bvc2UoKSxuPXMucm93cyxvPXMuY29sdW1ucyxkPSEwO2xldCBlPWw7bD1jLGM9ZX1lbHNlIHM9dC5jbG9uZSgpLGNvbnNvbGUud2FybigiQ29tcHV0aW5nIFNWRCBvbiBhIG1hdHJpeCB3aXRoIG1vcmUgY29sdW1ucyB0aGFuIHJvd3MuIENvbnNpZGVyIGVuYWJsaW5nIGF1dG9UcmFuc3Bvc2UiKTtlbHNlIHM9dC5jbG9uZSgpO2xldCBwPU1hdGgubWluKG4sbyksbT1NYXRoLm1pbihuKzEsbyksdT1uZXcgRmxvYXQ2NEFycmF5KG0pLGY9bmV3IGl2dChuLHApLGc9bmV3IGl2dChvLG8pLGg9bmV3IEZsb2F0NjRBcnJheShvKSxiPW5ldyBGbG9hdDY0QXJyYXkobikseT1uZXcgRmxvYXQ2NEFycmF5KG0pO2ZvcihsZXQgdD0wO3Q8bTt0KyspeVt0XT10O2xldCBfPU1hdGgubWluKG4tMSxvKSxDPU1hdGgubWF4KDAsTWF0aC5taW4oby0yLG4pKSxNPU1hdGgubWF4KF8sQyk7Zm9yKGxldCB0PTA7dDxNO3QrKyl7aWYodDxfKXt1W3RdPTA7Zm9yKGxldCBlPXQ7ZTxuO2UrKyl1W3RdPWx2dCh1W3RdLHMuZ2V0KGUsdCkpO2lmKDAhPT11W3RdKXtzLmdldCh0LHQpPDAmJih1W3RdPS11W3RdKTtmb3IobGV0IGU9dDtlPG47ZSsrKXMuc2V0KGUsdCxzLmdldChlLHQpL3VbdF0pO3Muc2V0KHQsdCxzLmdldCh0LHQpKzEpfXVbdF09LXVbdF19Zm9yKGxldCBlPXQrMTtlPG87ZSsrKXtpZih0PF8mJjAhPT11W3RdKXtsZXQgbz0wO2ZvcihsZXQgaT10O2k8bjtpKyspbys9cy5nZXQoaSx0KSpzLmdldChpLGUpO289LW8vcy5nZXQodCx0KTtmb3IobGV0IGk9dDtpPG47aSsrKXMuc2V0KGksZSxzLmdldChpLGUpK28qcy5nZXQoaSx0KSl9aFtlXT1zLmdldCh0LGUpfWlmKGwmJnQ8Xylmb3IobGV0IGU9dDtlPG47ZSsrKWYuc2V0KGUsdCxzLmdldChlLHQpKTtpZih0PEMpe2hbdF09MDtmb3IobGV0IGU9dCsxO2U8bztlKyspaFt0XT1sdnQoaFt0XSxoW2VdKTtpZigwIT09aFt0XSl7aFt0KzFdPDAmJihoW3RdPTAtaFt0XSk7Zm9yKGxldCBlPXQrMTtlPG87ZSsrKWhbZV0vPWhbdF07aFt0KzFdKz0xfWlmKGhbdF09LWhbdF0sdCsxPG4mJjAhPT1oW3RdKXtmb3IobGV0IGU9dCsxO2U8bjtlKyspYltlXT0wO2ZvcihsZXQgZT10KzE7ZTxuO2UrKylmb3IobGV0IG49dCsxO248bztuKyspYltlXSs9aFtuXSpzLmdldChlLG4pO2ZvcihsZXQgZT10KzE7ZTxvO2UrKyl7bGV0IG89LWhbZV0vaFt0KzFdO2ZvcihsZXQgaT10KzE7aTxuO2krKylzLnNldChpLGUscy5nZXQoaSxlKStvKmJbaV0pfX1pZihjKWZvcihsZXQgZT10KzE7ZTxvO2UrKylnLnNldChlLHQsaFtlXSl9fWxldCB2PU1hdGgubWluKG8sbisxKTtpZihfPG8mJih1W19dPXMuZ2V0KF8sXykpLG48diYmKHVbdi0xXT0wKSxDKzE8diYmKGhbQ109cy5nZXQoQyx2LTEpKSxoW3YtMV09MCxsKXtmb3IobGV0IHQ9Xzt0PHA7dCsrKXtmb3IobGV0IGU9MDtlPG47ZSsrKWYuc2V0KGUsdCwwKTtmLnNldCh0LHQsMSl9Zm9yKGxldCB0PV8tMTt0Pj0wO3QtLSlpZigwIT09dVt0XSl7Zm9yKGxldCBlPXQrMTtlPHA7ZSsrKXtsZXQgbz0wO2ZvcihsZXQgaT10O2k8bjtpKyspbys9Zi5nZXQoaSx0KSpmLmdldChpLGUpO289LW8vZi5nZXQodCx0KTtmb3IobGV0IGk9dDtpPG47aSsrKWYuc2V0KGksZSxmLmdldChpLGUpK28qZi5nZXQoaSx0KSl9Zm9yKGxldCBlPXQ7ZTxuO2UrKylmLnNldChlLHQsLWYuZ2V0KGUsdCkpO2Yuc2V0KHQsdCwxK2YuZ2V0KHQsdCkpO2ZvcihsZXQgZT0wO2U8dC0xO2UrKylmLnNldChlLHQsMCl9ZWxzZXtmb3IobGV0IGU9MDtlPG47ZSsrKWYuc2V0KGUsdCwwKTtmLnNldCh0LHQsMSl9fWlmKGMpZm9yKGxldCB0PW8tMTt0Pj0wO3QtLSl7aWYodDxDJiYwIT09aFt0XSlmb3IobGV0IGU9dCsxO2U8bztlKyspe2xldCBuPTA7Zm9yKGxldCBpPXQrMTtpPG87aSsrKW4rPWcuZ2V0KGksdCkqZy5nZXQoaSxlKTtuPS1uL2cuZ2V0KHQrMSx0KTtmb3IobGV0IGk9dCsxO2k8bztpKyspZy5zZXQoaSxlLGcuZ2V0KGksZSkrbipnLmdldChpLHQpKX1mb3IobGV0IGU9MDtlPG87ZSsrKWcuc2V0KGUsdCwwKTtnLnNldCh0LHQsMSl9bGV0IHg9di0xLE89TnVtYmVyLkVQU0lMT047Zm9yKDt2PjA7KXtsZXQgdCxlO2Zvcih0PXYtMjt0Pj0tMSYmLTEhPT10O3QtLSl7Y29uc3QgZT1OdW1iZXIuTUlOX1ZBTFVFK08qTWF0aC5hYnModVt0XStNYXRoLmFicyh1W3QrMV0pKTtpZihNYXRoLmFicyhoW3RdKTw9ZXx8TnVtYmVyLmlzTmFOKGhbdF0pKXtoW3RdPTA7YnJlYWt9fWlmKHQ9PT12LTIpZT00O2Vsc2V7bGV0IG47Zm9yKG49di0xO24+PXQmJm4hPT10O24tLSl7bGV0IGU9KG4hPT12P01hdGguYWJzKGhbbl0pOjApKyhuIT09dCsxP01hdGguYWJzKGhbbi0xXSk6MCk7aWYoTWF0aC5hYnModVtuXSk8PU8qZSl7dVtuXT0wO2JyZWFrfX1uPT09dD9lPTM6bj09PXYtMT9lPTE6KGU9Mix0PW4pfXN3aXRjaCh0KyssZSl7Y2FzZSAxOntsZXQgZT1oW3YtMl07aFt2LTJdPTA7Zm9yKGxldCBuPXYtMjtuPj10O24tLSl7bGV0IGk9bHZ0KHVbbl0sZSksYT11W25dL2kscj1lL2k7aWYodVtuXT1pLG4hPT10JiYoZT0tcipoW24tMV0saFtuLTFdPWEqaFtuLTFdKSxjKWZvcihsZXQgdD0wO3Q8bzt0KyspaT1hKmcuZ2V0KHQsbikrcipnLmdldCh0LHYtMSksZy5zZXQodCx2LTEsLXIqZy5nZXQodCxuKSthKmcuZ2V0KHQsdi0xKSksZy5zZXQodCxuLGkpfWJyZWFrfWNhc2UgMjp7bGV0IGU9aFt0LTFdO2hbdC0xXT0wO2ZvcihsZXQgbz10O288djtvKyspe2xldCBpPWx2dCh1W29dLGUpLGE9dVtvXS9pLHI9ZS9pO2lmKHVbb109aSxlPS1yKmhbb10saFtvXT1hKmhbb10sbClmb3IobGV0IGU9MDtlPG47ZSsrKWk9YSpmLmdldChlLG8pK3IqZi5nZXQoZSx0LTEpLGYuc2V0KGUsdC0xLC1yKmYuZ2V0KGUsbykrYSpmLmdldChlLHQtMSkpLGYuc2V0KGUsbyxpKX1icmVha31jYXNlIDM6e2NvbnN0IGU9TWF0aC5tYXgoTWF0aC5hYnModVt2LTFdKSxNYXRoLmFicyh1W3YtMl0pLE1hdGguYWJzKGhbdi0yXSksTWF0aC5hYnModVt0XSksTWF0aC5hYnMoaFt0XSkpLGk9dVt2LTFdL2UsYT11W3YtMl0vZSxyPWhbdi0yXS9lLHM9dVt0XS9lLGQ9aFt0XS9lLHA9KChhK2kpKihhLWkpK3IqcikvMixtPWkqciooaSpyKTtsZXQgYj0wOzA9PT1wJiYwPT09bXx8KGI9cDwwPzAtTWF0aC5zcXJ0KHAqcCttKTpNYXRoLnNxcnQocCpwK20pLGI9bS8ocCtiKSk7bGV0IHk9KHMraSkqKHMtaSkrYixfPXMqZDtmb3IobGV0IGU9dDtlPHYtMTtlKyspe2xldCBpPWx2dCh5LF8pOzA9PT1pJiYoaT1OdW1iZXIuTUlOX1ZBTFVFKTtsZXQgYT15L2kscj1fL2k7aWYoZSE9PXQmJihoW2UtMV09aSkseT1hKnVbZV0rcipoW2VdLGhbZV09YSpoW2VdLXIqdVtlXSxfPXIqdVtlKzFdLHVbZSsxXT1hKnVbZSsxXSxjKWZvcihsZXQgdD0wO3Q8bzt0KyspaT1hKmcuZ2V0KHQsZSkrcipnLmdldCh0LGUrMSksZy5zZXQodCxlKzEsLXIqZy5nZXQodCxlKSthKmcuZ2V0KHQsZSsxKSksZy5zZXQodCxlLGkpO2lmKGk9bHZ0KHksXyksMD09PWkmJihpPU51bWJlci5NSU5fVkFMVUUpLGE9eS9pLHI9Xy9pLHVbZV09aSx5PWEqaFtlXStyKnVbZSsxXSx1W2UrMV09LXIqaFtlXSthKnVbZSsxXSxfPXIqaFtlKzFdLGhbZSsxXT1hKmhbZSsxXSxsJiZlPG4tMSlmb3IobGV0IHQ9MDt0PG47dCsrKWk9YSpmLmdldCh0LGUpK3IqZi5nZXQodCxlKzEpLGYuc2V0KHQsZSsxLC1yKmYuZ2V0KHQsZSkrYSpmLmdldCh0LGUrMSkpLGYuc2V0KHQsZSxpKX1oW3YtMl09eTticmVha31jYXNlIDQ6aWYodVt0XTw9MCYmKHVbdF09dVt0XTwwPy11W3RdOjAsYykpZm9yKGxldCBlPTA7ZTw9eDtlKyspZy5zZXQoZSx0LC1nLmdldChlLHQpKTtmb3IoO3Q8eCYmISh1W3RdPj11W3QrMV0pOyl7bGV0IGU9dVt0XTtpZih1W3RdPXVbdCsxXSx1W3QrMV09ZSxjJiZ0PG8tMSlmb3IobGV0IG49MDtuPG87bisrKWU9Zy5nZXQobix0KzEpLGcuc2V0KG4sdCsxLGcuZ2V0KG4sdCkpLGcuc2V0KG4sdCxlKTtpZihsJiZ0PG4tMSlmb3IobGV0IG89MDtvPG47bysrKWU9Zi5nZXQobyx0KzEpLGYuc2V0KG8sdCsxLGYuZ2V0KG8sdCkpLGYuc2V0KG8sdCxlKTt0Kyt9di0tfX1pZihkKXtsZXQgdD1nO2c9ZixmPXR9dGhpcy5tPW4sdGhpcy5uPW8sdGhpcy5zPXUsdGhpcy5VPWYsdGhpcy5WPWd9c29sdmUodCl7bGV0IGU9dCxuPXRoaXMudGhyZXNob2xkLG89dGhpcy5zLmxlbmd0aCxpPWl2dC56ZXJvcyhvLG8pO2ZvcihsZXQgdD0wO3Q8bzt0KyspTWF0aC5hYnModGhpcy5zW3RdKTw9bj9pLnNldCh0LHQsMCk6aS5zZXQodCx0LDEvdGhpcy5zW3RdKTtsZXQgYT10aGlzLlUscj10aGlzLnJpZ2h0U2luZ3VsYXJWZWN0b3JzLHM9ci5tbXVsKGkpLGw9ci5yb3dzLGM9YS5yb3dzLGQ9aXZ0Lnplcm9zKGwsYyk7Zm9yKGxldCB0PTA7dDxsO3QrKylmb3IobGV0IGU9MDtlPGM7ZSsrKXtsZXQgbj0wO2ZvcihsZXQgaT0wO2k8bztpKyspbis9cy5nZXQodCxpKSphLmdldChlLGkpO2Quc2V0KHQsZSxuKX1yZXR1cm4gZC5tbXVsKGUpfXNvbHZlRm9yRGlhZ29uYWwodCl7cmV0dXJuIHRoaXMuc29sdmUoaXZ0LmRpYWcodCkpfWludmVyc2UoKXtsZXQgdD10aGlzLlYsZT10aGlzLnRocmVzaG9sZCxuPXQucm93cyxvPXQuY29sdW1ucyxpPW5ldyBpdnQobix0aGlzLnMubGVuZ3RoKTtmb3IobGV0IGE9MDthPG47YSsrKWZvcihsZXQgbj0wO248bztuKyspTWF0aC5hYnModGhpcy5zW25dKT5lJiZpLnNldChhLG4sdC5nZXQoYSxuKS90aGlzLnNbbl0pO2xldCBhPXRoaXMuVSxyPWEucm93cyxzPWEuY29sdW1ucyxsPW5ldyBpdnQobixyKTtmb3IobGV0IHQ9MDt0PG47dCsrKWZvcihsZXQgZT0wO2U8cjtlKyspe2xldCBuPTA7Zm9yKGxldCBvPTA7bzxzO28rKyluKz1pLmdldCh0LG8pKmEuZ2V0KGUsbyk7bC5zZXQodCxlLG4pfXJldHVybiBsfWdldCBjb25kaXRpb24oKXtyZXR1cm4gdGhpcy5zWzBdL3RoaXMuc1tNYXRoLm1pbih0aGlzLm0sdGhpcy5uKS0xXX1nZXQgbm9ybTIoKXtyZXR1cm4gdGhpcy5zWzBdfWdldCByYW5rKCl7bGV0IHQ9TWF0aC5tYXgodGhpcy5tLHRoaXMubikqdGhpcy5zWzBdKk51bWJlci5FUFNJTE9OLGU9MCxuPXRoaXMucztmb3IobGV0IG89MCxpPW4ubGVuZ3RoO288aTtvKyspbltvXT50JiZlKys7cmV0dXJuIGV9Z2V0IGRpYWdvbmFsKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5zKX1nZXQgdGhyZXNob2xkKCl7cmV0dXJuIE51bWJlci5FUFNJTE9OLzIqTWF0aC5tYXgodGhpcy5tLHRoaXMubikqdGhpcy5zWzBdfWdldCBsZWZ0U2luZ3VsYXJWZWN0b3JzKCl7cmV0dXJuIHRoaXMuVX1nZXQgcmlnaHRTaW5ndWxhclZlY3RvcnMoKXtyZXR1cm4gdGhpcy5WfWdldCBkaWFnb25hbE1hdHJpeCgpe3JldHVybiBpdnQuZGlhZyh0aGlzLnMpfX1mdW5jdGlvbiBwdnQodCxlPSExKXtyZXR1cm4gdD1ydnQuY2hlY2tNYXRyaXgodCksZT9uZXcgZHZ0KHQpLmludmVyc2UoKTooZnVuY3Rpb24gbih0LGUsbz0hMSl7cmV0dXJuIHQ9cnZ0LmNoZWNrTWF0cml4KHQpLGU9cnZ0LmNoZWNrTWF0cml4KGUpLG8/bmV3IGR2dCh0KS5zb2x2ZShlKTp0LmlzU3F1YXJlKCk/bmV3IHN2dCh0KS5zb2x2ZShlKTpuZXcgY3Z0KHQpLnNvbHZlKGUpfSkodCxpdnQuZXllKHQucm93cykpfWZ1bmN0aW9uIG12dCh0LGUsbixvLGkpe2xldCBhPWl2dC5leWUoZS5sZW5ndGgsZS5sZW5ndGgsbipvKm8pO2NvbnN0IHI9aShlKTtsZXQgcz1uZXcgRmxvYXQ2NEFycmF5KHQueC5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8dC54Lmxlbmd0aDtlKyspc1tlXT1yKHQueFtlXSk7bGV0IGw9KGZ1bmN0aW9uIGModCxlLG4sbyxpKXtjb25zdCBhPW4ubGVuZ3RoLHI9dC54Lmxlbmd0aDtsZXQgcz1uZXcgQXJyYXkoYSk7Zm9yKGxldCBsPTA7bDxhO2wrKyl7c1tsXT1uZXcgQXJyYXkocik7bGV0IGE9bi5zbGljZSgpO2FbbF0rPW87bGV0IGM9aShhKTtmb3IobGV0IG49MDtuPHI7bisrKXNbbF1bbl09ZVtuXS1jKHQueFtuXSl9cmV0dXJuIG5ldyBpdnQocyl9KSh0LHMsZSxvLGkpLGQ9KGZ1bmN0aW9uIHAodCxlKXtjb25zdCBuPXQueC5sZW5ndGg7bGV0IG89bmV3IEFycmF5KG4pO2ZvcihsZXQgaT0wO2k8bjtpKyspb1tpXT1bdC55W2ldLWVbaV1dO3JldHVybiBuZXcgaXZ0KG8pfSkodCxzKSxtPXB2dChhLmFkZChsLm1tdWwobC50cmFuc3Bvc2UoKSkpKTtyZXR1cm4oZT0oZT1uZXcgaXZ0KFtlXSkpLnN1YihtLm1tdWwobCkubW11bChkKS5tdWwobykudHJhbnNwb3NlKCkpKS50bzFEQXJyYXkoKX12YXIgdXZ0PUNPKE9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGRlZmF1bHQ6ZnVuY3Rpb24gZnZ0KHQsZSxuPXt9KXtsZXR7bWF4SXRlcmF0aW9uczpvPTEwMCxncmFkaWVudERpZmZlcmVuY2U6aT0uMSxkYW1waW5nOmE9MCxlcnJvclRvbGVyYW5jZTpyPS4wMSxtaW5WYWx1ZXM6cyxtYXhWYWx1ZXM6bCxpbml0aWFsVmFsdWVzOmN9PW47aWYoYTw9MCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYW1waW5nIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIik7aWYoIXQueHx8IXQueSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYXRhIHBhcmFtZXRlciBtdXN0IGhhdmUgeCBhbmQgeSBlbGVtZW50cyIpO2lmKCFOTXQodC54KXx8dC54Lmxlbmd0aDwyfHwhTk10KHQueSl8fHQueS5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGJlIGFuIGFycmF5IHdpdGggbW9yZSB0aGFuIDIgcG9pbnRzIik7aWYodC54Lmxlbmd0aCE9PXQueS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgZWxlbWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIHNpemUiKTtsZXQgZD1jfHxuZXcgQXJyYXkoZS5sZW5ndGgpLmZpbGwoMSkscD1kLmxlbmd0aDtpZihsPWx8fG5ldyBBcnJheShwKS5maWxsKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxzPXN8fG5ldyBBcnJheShwKS5maWxsKE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSxsLmxlbmd0aCE9PXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigibWluVmFsdWVzIGFuZCBtYXhWYWx1ZXMgbXVzdCBiZSB0aGUgc2FtZSBzaXplIik7aWYoIU5NdChkKSl0aHJvdyBuZXcgRXJyb3IoImluaXRpYWxWYWx1ZXMgbXVzdCBiZSBhbiBhcnJheSIpO2xldCBtLHU9ek10KHQsZCxlKSxmPXU8PXI7Zm9yKG09MDttPG8mJiFmO20rKyl7ZD1tdnQodCxkLGEsaSxlKTtmb3IobGV0IHQ9MDt0PHA7dCsrKWRbdF09TWF0aC5taW4oTWF0aC5tYXgoc1t0XSxkW3RdKSxsW3RdKTtpZih1PXpNdCh0LGQsZSksaXNOYU4odSkpYnJlYWs7Zj11PD1yfXJldHVybntwYXJhbWV0ZXJWYWx1ZXM6ZCxwYXJhbWV0ZXJFcnJvcjp1LGl0ZXJhdGlvbnM6bX19fSkpLGd2dD1fTyYmX08uX19hd2FpdGVyfHxmdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiByKHQpe3RyeXtsKG8ubmV4dCh0KSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChvLnRocm93KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9pKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4ocixzKX1sKChvPW8uYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9LGh2dD1fTyYmX08uX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHQsZSl7dmFyIG4sbyxpLGEscj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gcyhhKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuKGZ1bmN0aW9uIGwoYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtyOyl0cnl7aWYobj0xLG8mJihpPTImYVswXT9vLnJldHVybjphWzBdP28udGhyb3d8fCgoaT1vLnJldHVybikmJmkuY2FsbChvKSwwKTpvLm5leHQpJiYhKGk9aS5jYWxsKG8sYVsxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKG89MCxpJiYoYT1bMiZhWzBdLGkudmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOmk9YTticmVhaztjYXNlIDQ6cmV0dXJuIHIubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6ci5sYWJlbCsrLG89YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1yLm9wcy5wb3AoKSxyLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9ci50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtyPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighaXx8YVsxXT5pWzBdJiZhWzFdPGlbM10pKXtyLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJnIubGFiZWw8aVsxXSl7ci5sYWJlbD1pWzFdLGk9YTticmVha31pZihpJiZyLmxhYmVsPGlbMl0pe3IubGFiZWw9aVsyXSxyLm9wcy5wdXNoKGEpO2JyZWFrfWlbMl0mJnIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZX1hPWUuY2FsbCh0LHIpfWNhdGNoKHQpe2E9WzYsdF0sbz0wfWZpbmFsbHl7bj1pPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KShbYSxzXSl9fX0sYnZ0PV9PJiZfTy5fX3JlYWR8fGZ1bmN0aW9uKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciBvLGksYT1uLmNhbGwodCkscj1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShvPWEubmV4dCgpKS5kb25lOylyLnB1c2goby52YWx1ZSl9Y2F0Y2godCl7aT17ZXJyb3I6dH19ZmluYWxseXt0cnl7byYmIW8uZG9uZSYmKG49YS5yZXR1cm4pJiZuLmNhbGwoYSl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiByfSx5dnQ9X08mJl9PLl9fc3ByZWFkfHxmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0PXQuY29uY2F0KGJ2dChhcmd1bWVudHNbZV0pKTtyZXR1cm4gdH0sX3Z0PV9PJiZfTy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfSxDdnQ9X08mJl9PLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodUN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTXZ0PV92dChmQ3QpLHZ2dD1fdnQoakN0KSx4dnQ9X3Z0KHNNdCksT3Z0PV92dChsTXQpLFB2dD1fdnQoZ0N0KSx3dnQ9Q3Z0KHV2dCksa3Z0PTFlLTUsU3Z0PS4wMDEsRHZ0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXRoaXM7dGhpcy5sZWFybmluZ1JhdGU9MSx0aGlzLmxvY2FsQ29ubmVjdGl2aXR5PTEsdGhpcy5taW5EaXN0PS4xLHRoaXMubkNvbXBvbmVudHM9Mix0aGlzLm5FcG9jaHM9MCx0aGlzLm5OZWlnaGJvcnM9MTUsdGhpcy5uZWdhdGl2ZVNhbXBsZVJhdGU9NSx0aGlzLnJhbmRvbT1NYXRoLnJhbmRvbSx0aGlzLnJlcHVsc2lvblN0cmVuZ3RoPTEsdGhpcy5zZXRPcE1peFJhdGlvPTEsdGhpcy5zcHJlYWQ9MSx0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZT00LHRoaXMudGFyZ2V0TWV0cmljPSJjYXRlZ29yaWNhbCIsdGhpcy50YXJnZXRXZWlnaHQ9LjUsdGhpcy50YXJnZXROTmVpZ2hib3JzPXRoaXMubk5laWdoYm9ycyx0aGlzLmRpc3RhbmNlRm49UnZ0LHRoaXMuaXNJbml0aWFsaXplZD0hMSx0aGlzLnJwRm9yZXN0PVtdLHRoaXMuZW1iZWRkaW5nPVtdLHRoaXMub3B0aW1pemF0aW9uU3RhdGU9bmV3IEF2dDt2YXIgbj1mdW5jdGlvbihuKXt2b2lkIDAhPT10W25dJiYoZVtuXT10W25dKX07bigiZGlzdGFuY2VGbiIpLG4oImxlYXJuaW5nUmF0ZSIpLG4oImxvY2FsQ29ubmVjdGl2aXR5IiksbigibWluRGlzdCIpLG4oIm5Db21wb25lbnRzIiksbigibkVwb2NocyIpLG4oIm5OZWlnaGJvcnMiKSxuKCJuZWdhdGl2ZVNhbXBsZVJhdGUiKSxuKCJyYW5kb20iKSxuKCJyZXB1bHNpb25TdHJlbmd0aCIpLG4oInNldE9wTWl4UmF0aW8iKSxuKCJzcHJlYWQiKSxuKCJ0cmFuc2Zvcm1RdWV1ZVNpemUiKX1yZXR1cm4gdC5wcm90b3R5cGUuZml0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluaXRpYWxpemVGaXQodCksdGhpcy5vcHRpbWl6ZUxheW91dCgpLHRoaXMuZW1iZWRkaW5nfSx0LnByb3RvdHlwZS5maXRBc3luYz1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1mdW5jdGlvbigpe3JldHVybiEwfSksZ3Z0KHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gaHZ0KHRoaXMsKGZ1bmN0aW9uKG4pe3N3aXRjaChuLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUZpdCh0KSxbNCx0aGlzLm9wdGltaXplTGF5b3V0QXN5bmMoZSldO2Nhc2UgMTpyZXR1cm4gbi5zZW50KCksWzIsdGhpcy5lbWJlZGRpbmddfX0pKX0pKX0sdC5wcm90b3R5cGUuc2V0U3VwZXJ2aXNlZFByb2plY3Rpb249ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5ZPXQsdGhpcy50YXJnZXRNZXRyaWM9ZS50YXJnZXRNZXRyaWN8fHRoaXMudGFyZ2V0TWV0cmljLHRoaXMudGFyZ2V0V2VpZ2h0PWUudGFyZ2V0V2VpZ2h0fHx0aGlzLnRhcmdldFdlaWdodCx0aGlzLnRhcmdldE5OZWlnaGJvcnM9ZS50YXJnZXROTmVpZ2hib3JzfHx0aGlzLnRhcmdldE5OZWlnaGJvcnN9LHQucHJvdG90eXBlLnNldFByZWNvbXB1dGVkS05OPWZ1bmN0aW9uKHQsZSl7dGhpcy5rbm5JbmRpY2VzPXQsdGhpcy5rbm5EaXN0YW5jZXM9ZX0sdC5wcm90b3R5cGUuaW5pdGlhbGl6ZUZpdD1mdW5jdGlvbih0KXtpZih0Lmxlbmd0aDw9dGhpcy5uTmVpZ2hib3JzKXRocm93IG5ldyBFcnJvcigiTm90IGVub3VnaCBkYXRhIHBvaW50cyAoIit0Lmxlbmd0aCsiKSB0byBjcmVhdGUgbk5laWdoYm9yczogIit0aGlzLm5OZWlnaGJvcnMrIi4gIEFkZCBtb3JlIGRhdGEgcG9pbnRzIG9yIGFkanVzdCB0aGUgY29uZmlndXJhdGlvbi4iKTtpZih0aGlzLlg9PT10JiZ0aGlzLmlzSW5pdGlhbGl6ZWQpcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO2lmKHRoaXMuWD10LCF0aGlzLmtubkluZGljZXMmJiF0aGlzLmtubkRpc3RhbmNlcyl7dmFyIGU9dGhpcy5uZWFyZXN0TmVpZ2hib3JzKHQpO3RoaXMua25uSW5kaWNlcz1lLmtubkluZGljZXMsdGhpcy5rbm5EaXN0YW5jZXM9ZS5rbm5EaXN0YW5jZXN9dGhpcy5ncmFwaD10aGlzLmZ1enp5U2ltcGxpY2lhbFNldCh0LHRoaXMubk5laWdoYm9ycyx0aGlzLnNldE9wTWl4UmF0aW8pLHRoaXMubWFrZVNlYXJjaEZucygpLHRoaXMuc2VhcmNoR3JhcGg9dGhpcy5tYWtlU2VhcmNoR3JhcGgodCksdGhpcy5wcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbigpO3ZhciBuPXRoaXMuaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmcoKSxvPW4udGFpbCxpPW4uZXBvY2hzUGVyU2FtcGxlO3JldHVybiB0aGlzLm9wdGltaXphdGlvblN0YXRlLmhlYWQ9bi5oZWFkLHRoaXMub3B0aW1pemF0aW9uU3RhdGUudGFpbD1vLHRoaXMub3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyU2FtcGxlPWksdGhpcy5pbml0aWFsaXplT3B0aW1pemF0aW9uKCksdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpLHRoaXMuaXNJbml0aWFsaXplZD0hMCx0aGlzLmdldE5FcG9jaHMoKX0sdC5wcm90b3R5cGUubWFrZVNlYXJjaEZucz1mdW5jdGlvbigpe3ZhciB0PXh2dC5tYWtlSW5pdGlhbGl6YXRpb25zKHRoaXMuZGlzdGFuY2VGbiksZT10LmluaXRGcm9tUmFuZG9tO3RoaXMuaW5pdEZyb21UcmVlPXQuaW5pdEZyb21UcmVlLHRoaXMuaW5pdEZyb21SYW5kb209ZSx0aGlzLnNlYXJjaD14dnQubWFrZUluaXRpYWxpemVkTk5TZWFyY2godGhpcy5kaXN0YW5jZUZuKX0sdC5wcm90b3R5cGUubWFrZVNlYXJjaEdyYXBoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLmtubkluZGljZXMsbj10aGlzLmtubkRpc3RhbmNlcyxvPW5ldyB2dnQuU3BhcnNlTWF0cml4KFtdLFtdLFtdLFt0Lmxlbmd0aCx0Lmxlbmd0aF0pLGk9MDtpPGUubGVuZ3RoO2krKylmb3IodmFyIGE9ZVtpXSxyPW5baV0scz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgbD1yW3NdO2w+MCYmby5zZXQoaSxhW3NdLGwpfXZhciBjPXZ2dC50cmFuc3Bvc2Uobyk7cmV0dXJuIHZ2dC5tYXhpbXVtKG8sYyl9LHQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5YO2lmKHZvaWQgMD09PW58fDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIk5vIGRhdGEgaGFzIGJlZW4gZml0LiIpO3ZhciBvPU1hdGguZmxvb3IodGhpcy5uTmVpZ2hib3JzKnRoaXMudHJhbnNmb3JtUXVldWVTaXplKTtvPU1hdGgubWluKG4ubGVuZ3RoLG8pO3ZhciBpPXh2dC5pbml0aWFsaXplU2VhcmNoKHRoaXMucnBGb3Jlc3Qsbix0LG8sdGhpcy5pbml0RnJvbVJhbmRvbSx0aGlzLmluaXRGcm9tVHJlZSx0aGlzLnJhbmRvbSksYT10aGlzLnNlYXJjaChuLHRoaXMuc2VhcmNoR3JhcGgsaSx0KSxyPU12dC5kZWhlYXBTb3J0KGEpLHM9ci5pbmRpY2VzLGw9ci53ZWlnaHRzO3M9cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKDAsZS5uTmVpZ2hib3JzKX0pKSxsPWwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgwLGUubk5laWdoYm9ycyl9KSk7dmFyIGM9TWF0aC5tYXgoMCx0aGlzLmxvY2FsQ29ubmVjdGl2aXR5LTEpLGQ9dGhpcy5zbW9vdGhLTk5EaXN0YW5jZShsLHRoaXMubk5laWdoYm9ycyxjKSxwPXRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMocyxsLGQuc2lnbWFzLGQucmhvcyksbT1uZXcgdnZ0LlNwYXJzZU1hdHJpeChwLnJvd3MscC5jb2xzLHAudmFscyxbdC5sZW5ndGgsbi5sZW5ndGhdKSx1PXZ2dC5ub3JtYWxpemUobSwibDEiKSxmPXZ2dC5nZXRDU1IodSksZz10Lmxlbmd0aCxoPUZ2dChQdnQucmVzaGFwZTJkKGYuaW5kaWNlcyxnLHRoaXMubk5laWdoYm9ycyksUHZ0LnJlc2hhcGUyZChmLnZhbHVlcyxnLHRoaXMubk5laWdoYm9ycyksdGhpcy5lbWJlZGRpbmcpLGI9dGhpcy5uRXBvY2hzP3RoaXMubkVwb2Nocy8zOm0ublJvd3M8PTFlND8xMDA6MzAseT1tLmdldFZhbHVlcygpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZT50P2U6dH0pLDApO209bS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0PHkvYj8wOnR9KSksbT12dnQuZWxpbWluYXRlWmVyb3MobSk7dmFyIF89dGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKG0uZ2V0VmFsdWVzKCksYiksQz1tLmdldFJvd3MoKSxNPW0uZ2V0Q29scygpO3JldHVybiB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7aGVhZEVtYmVkZGluZzpoLHRhaWxFbWJlZGRpbmc6dGhpcy5lbWJlZGRpbmcsaGVhZDpDLHRhaWw6TSxjdXJyZW50RXBvY2g6MCxuRXBvY2hzOmIsblZlcnRpY2VzOm0uZ2V0RGltcygpWzFdLGVwb2Noc1BlclNhbXBsZTpffSksdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpLHRoaXMub3B0aW1pemVMYXlvdXQoKX0sdC5wcm90b3R5cGUucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLlk7aWYodCl7aWYodC5sZW5ndGghPT10aGlzLlgubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG9mIFggYW5kIHkgbXVzdCBiZSBlcXVhbCIpO2lmKCJjYXRlZ29yaWNhbCI9PT10aGlzLnRhcmdldE1ldHJpYyl0aGlzLmdyYXBoPXRoaXMuY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uKHRoaXMuZ3JhcGgsdCx0aGlzLnRhcmdldFdlaWdodDwxPzEvKDEtdGhpcy50YXJnZXRXZWlnaHQpKjIuNToxZTEyKX19LHQucHJvdG90eXBlLnN0ZXA9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtyZXR1cm4gdDx0aGlzLmdldE5FcG9jaHMoKSYmdGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAodCksdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2h9LHQucHJvdG90eXBlLmdldEVtYmVkZGluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVtYmVkZGluZ30sdC5wcm90b3R5cGUubmVhcmVzdE5laWdoYm9ycz1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMubk5laWdoYm9ycyxvPXh2dC5tYWtlTk5EZXNjZW50KHRoaXMuZGlzdGFuY2VGbix0aGlzLnJhbmRvbSksaT01K01hdGguZmxvb3IoLjU9PT0oZT1NYXRoLnBvdyh0Lmxlbmd0aCwuNSkvMjApPzA6TWF0aC5yb3VuZChlKSksYT1NYXRoLm1heCg1LE1hdGguZmxvb3IoTWF0aC5yb3VuZCgoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGgubG9nKDIpfSkodC5sZW5ndGgpKSkpO3RoaXMucnBGb3Jlc3Q9T3Z0Lm1ha2VGb3Jlc3QodCxuLGksdGhpcy5yYW5kb20pO3ZhciByPW8odCxPdnQubWFrZUxlYWZBcnJheSh0aGlzLnJwRm9yZXN0KSxuLGEpO3JldHVybntrbm5JbmRpY2VzOnIuaW5kaWNlcyxrbm5EaXN0YW5jZXM6ci53ZWlnaHRzfX0sdC5wcm90b3R5cGUuZnV6enlTaW1wbGljaWFsU2V0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj0xKTt2YXIgbz10aGlzLGk9by5rbm5JbmRpY2VzLGE9dm9pZCAwPT09aT9bXTppLHI9by5rbm5EaXN0YW5jZXMscz12b2lkIDA9PT1yP1tdOnIsbD10aGlzLnNtb290aEtOTkRpc3RhbmNlKHMsZSxvLmxvY2FsQ29ubmVjdGl2aXR5KSxjPXRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoYSxzLGwuc2lnbWFzLGwucmhvcyksZD1uZXcgdnZ0LlNwYXJzZU1hdHJpeChjLnJvd3MsYy5jb2xzLGMudmFscyxbdC5sZW5ndGgsdC5sZW5ndGhdKSxwPXZ2dC50cmFuc3Bvc2UoZCksbT12dnQucGFpcndpc2VNdWx0aXBseShkLHApLHU9dnZ0LnN1YnRyYWN0KHZ2dC5hZGQoZCxwKSxtKSxmPXZ2dC5tdWx0aXBseVNjYWxhcih1LG4pLGc9dnZ0Lm11bHRpcGx5U2NhbGFyKG0sMS1uKTtyZXR1cm4gdnZ0LmFkZChmLGcpfSx0LnByb3RvdHlwZS5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLG4sbyl7dm9pZCAwPT09byYmKG89MSk7dmFyIGk9SXZ0KHQsZSxvLG4pO3JldHVybiBIdnQoaT12dnQuZWxpbWluYXRlWmVyb3MoaSkpfSx0LnByb3RvdHlwZS5zbW9vdGhLTk5EaXN0YW5jZT1mdW5jdGlvbih0LGUsbixvLGkpe3ZvaWQgMD09PW4mJihuPTEpLHZvaWQgMD09PW8mJihvPTY0KSx2b2lkIDA9PT1pJiYoaT0xKTtmb3IodmFyIGE9TWF0aC5sb2coZSkvTWF0aC5sb2coMikqaSxyPVB2dC56ZXJvcyh0Lmxlbmd0aCkscz1QdnQuemVyb3ModC5sZW5ndGgpLGw9MDtsPHQubGVuZ3RoO2wrKyl7dmFyIGM9MCxkPTEvMCxwPTEsbT10W2xdLHU9bS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0PjB9KSk7aWYodS5sZW5ndGg+PW4pe3ZhciBmPU1hdGguZmxvb3IobiksZz1uLWY7Zj4wPyhyW2xdPXVbZi0xXSxnPmt2dCYmKHJbbF0rPWcqKHVbZl0tdVtmLTFdKSkpOnJbbF09Zyp1WzBdfWVsc2UgdS5sZW5ndGg+MCYmKHJbbF09UHZ0Lm1heCh1KSk7Zm9yKHZhciBoPTA7aDxvO2grKyl7Zm9yKHZhciBiPTAseT0xO3k8dFtsXS5sZW5ndGg7eSsrKXt2YXIgXz10W2xdW3ldLXJbbF07Yis9Xz4wP01hdGguZXhwKC1fL3ApOjF9aWYoTWF0aC5hYnMoYi1hKTxrdnQpYnJlYWs7Yj5hP3A9KGMrKGQ9cCkpLzI6KGM9cCxkPT09MS8wP3AqPTI6cD0oYytkKS8yKX1pZihzW2xdPXAscltsXT4wKXt2YXIgQz1QdnQubWVhbihtKTtzW2xdPFN2dCpDJiYoc1tsXT1TdnQqQyl9ZWxzZXt2YXIgTT1QdnQubWVhbih0Lm1hcChQdnQubWVhbikpO3NbbF08U3Z0Kk0mJihzW2xdPVN2dCpNKX19cmV0dXJue3NpZ21hczpzLHJob3M6cn19LHQucHJvdG90eXBlLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzPWZ1bmN0aW9uKHQsZSxuLG8pe2Zvcih2YXIgaT10Lmxlbmd0aCxhPXRbMF0ubGVuZ3RoLHI9UHZ0Lnplcm9zKGkqYSkscz1QdnQuemVyb3MoaSphKSxsPVB2dC56ZXJvcyhpKmEpLGM9MDtjPGk7YysrKWZvcih2YXIgZD0wO2Q8YTtkKyspe3ZhciBwPTA7LTEhPT10W2NdW2RdJiYocD10W2NdW2RdPT09Yz8wOmVbY11bZF0tb1tjXTw9MD8xOk1hdGguZXhwKC0oZVtjXVtkXS1vW2NdKS9uW2NdKSxyW2MqYStkXT1jLHNbYyphK2RdPXRbY11bZF0sbFtjKmErZF09cCl9cmV0dXJue3Jvd3M6cixjb2xzOnMsdmFsczpsfX0sdC5wcm90b3R5cGUuaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuZ2V0TkVwb2NocygpLG49dGhpcy5uQ29tcG9uZW50cyxvPXRoaXMuZ3JhcGguZ2V0VmFsdWVzKCksaT0wLGE9MDthPG8ubGVuZ3RoO2ErKyl7aTxvW2FdJiYoaT1vW2FdKX12YXIgcj10aGlzLmdyYXBoLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ8aS9lPzA6dH0pKTt0aGlzLmVtYmVkZGluZz1QdnQuemVyb3Moci5uUm93cykubWFwKChmdW5jdGlvbigpe3JldHVybiBQdnQuemVyb3MobikubWFwKChmdW5jdGlvbigpe3JldHVybiAyMCpQdnQudGF1UmFuZCh0LnJhbmRvbSktMTB9KSl9KSk7dmFyIHM9W10sbD1bXSxjPVtdLGQ9ci5nZXRBbGwoKTtmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKXt2YXIgcD1kW2FdO3AudmFsdWUmJihzLnB1c2gocC52YWx1ZSksYy5wdXNoKHAucm93KSxsLnB1c2gocC5jb2wpKX1yZXR1cm57aGVhZDpsLHRhaWw6YyxlcG9jaHNQZXJTYW1wbGU6dGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKHMsZSl9fSx0LnByb3RvdHlwZS5tYWtlRXBvY2hzUGVyU2FtcGxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49UHZ0LmZpbGxlZCh0Lmxlbmd0aCwtMSksbz1QdnQubWF4KHQpLGk9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L28qZX0pKTtyZXR1cm4gaS5mb3JFYWNoKChmdW5jdGlvbih0LG8pe3Q+MCYmKG5bb109ZS9pW29dKX0pKSxufSx0LnByb3RvdHlwZS5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLm9wdGltaXphdGlvblN0YXRlLHQpfSx0LnByb3RvdHlwZS5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LnJlcHVsc2lvblN0cmVuZ3RoLG49dC5sZWFybmluZ1JhdGUsbz10Lm5lZ2F0aXZlU2FtcGxlUmF0ZSxpPXRoaXMub3B0aW1pemF0aW9uU3RhdGUsYT1pLmVwb2Noc1BlclNhbXBsZSxyPWkuaGVhZEVtYmVkZGluZyxzPXJbMF0ubGVuZ3RoLGw9ci5sZW5ndGg9PT1pLnRhaWxFbWJlZGRpbmcubGVuZ3RoLGM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L299KSksZD15dnQoYykscD15dnQoYSk7dGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe2Vwb2NoT2ZOZXh0U2FtcGxlOnAsZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZTpkLGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlOmMsbW92ZU90aGVyOmwsaW5pdGlhbEFscGhhOm4sYWxwaGE6bixnYW1tYTplLGRpbTpzfSl9LHQucHJvdG90eXBlLmluaXRpYWxpemVPcHRpbWl6YXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVtYmVkZGluZyxlPXRoaXMuZW1iZWRkaW5nLG49dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxvPW4uaGVhZCxpPW4udGFpbCxhPW4uZXBvY2hzUGVyU2FtcGxlLHI9dGhpcy5nZXRORXBvY2hzKCkscz10aGlzLmdyYXBoLm5Db2xzLGw9enZ0KHRoaXMuc3ByZWFkLHRoaXMubWluRGlzdCk7dGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe2hlYWRFbWJlZGRpbmc6dCx0YWlsRW1iZWRkaW5nOmUsaGVhZDpvLHRhaWw6aSxlcG9jaHNQZXJTYW1wbGU6YSxhOmwuYSxiOmwuYixuRXBvY2hzOnIsblZlcnRpY2VzOnN9KX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRTdGVwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLm9wdGltaXphdGlvblN0YXRlLG49ZS5oZWFkLG89ZS50YWlsLGk9ZS5oZWFkRW1iZWRkaW5nLGE9ZS50YWlsRW1iZWRkaW5nLHI9ZS5lcG9jaHNQZXJTYW1wbGUscz1lLmVwb2NoT2ZOZXh0U2FtcGxlLGw9ZS5lcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLGM9ZS5lcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSxkPWUubW92ZU90aGVyLHA9ZS5pbml0aWFsQWxwaGEsbT1lLmFscGhhLHU9ZS5nYW1tYSxmPWUuYSxnPWUuYixoPWUuZGltLGI9ZS5uRXBvY2hzLHk9ZS5uVmVydGljZXMsXz0wO188ci5sZW5ndGg7XysrKWlmKCEoc1tfXT50KSl7dmFyIEM9bltfXSxNPWlbQ10sdj1hW29bX11dLHg9TnZ0KE0sdiksTz0wO3g+MCYmKE89LTIqZipnKk1hdGgucG93KHgsZy0xKSxPLz1mKk1hdGgucG93KHgsZykrMSk7Zm9yKHZhciBQPTA7UDxoO1ArKyl7dmFyIHc9VHZ0KE8qKE1bUF0tdltQXSksNCk7TVtQXSs9dyptLGQmJih2W1BdKz0tdyptKX1zW19dKz1yW19dO2Zvcih2YXIgaz1NYXRoLmZsb29yKCh0LWxbX10pL2NbX10pLFM9MDtTPGs7UysrKXt2YXIgRD1QdnQudGF1UmFuZEludCh5LHRoaXMucmFuZG9tKSxSPWFbRF0sRT1OdnQoTSxSKSxBPTA7aWYoRT4wKUE9Mip1KmcsQS89KC4wMDErRSkqKGYqTWF0aC5wb3coRSxnKSsxKTtlbHNlIGlmKEM9PT1EKWNvbnRpbnVlO2ZvcihQPTA7UDxoO1ArKyl7dz00O0E+MCYmKHc9VHZ0KEEqKE1bUF0tUltQXSksNCkpLE1bUF0rPXcqbX19bFtfXSs9aypjW19dfXJldHVybiBlLmFscGhhPXAqKDEtdC9iKSxlLmN1cnJlbnRFcG9jaCs9MSxpfSx0LnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dEFzeW5jPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHZvaWQgMD09PXQmJih0PWZ1bmN0aW9uKCl7cmV0dXJuITB9KSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixvKXt2YXIgaT1mdW5jdGlvbigpe3JldHVybiBndnQoZSx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlLGEscixzLGw7cmV0dXJuIGh2dCh0aGlzLChmdW5jdGlvbihjKXt0cnl7aWYoYT0oZT10aGlzLm9wdGltaXphdGlvblN0YXRlKS5uRXBvY2hzLHRoaXMuZW1iZWRkaW5nPXRoaXMub3B0aW1pemVMYXlvdXRTdGVwKGUuY3VycmVudEVwb2NoKSxzPSExPT09dChyPXRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoKSxsPXI9PT1hLHN8fGwpcmV0dXJuWzIsbihsKV07c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gaSgpfSksMCl9Y2F0Y2godCl7byh0KX1yZXR1cm5bMl19KSl9KSl9O3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGkoKX0pLDApfSkpfSx0LnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD1mdW5jdGlvbigpe3JldHVybiEwfSk7Zm9yKHZhciBlPSExLG49W107IWU7KXt2YXIgbz10aGlzLm9wdGltaXphdGlvblN0YXRlLGk9by5uRXBvY2hzO249dGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAoby5jdXJyZW50RXBvY2gpO3ZhciBhPXRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoLHI9ITE9PT10KGEpO2U9YT09PWl8fHJ9cmV0dXJuIG59LHQucHJvdG90eXBlLmdldE5FcG9jaHM9ZnVuY3Rpb24oKXtpZih0aGlzLm5FcG9jaHM+MClyZXR1cm4gdGhpcy5uRXBvY2hzO3ZhciB0PXRoaXMuZ3JhcGgublJvd3M7cmV0dXJuIHQ8PTI1MDA/NTAwOnQ8PTVlMz80MDA6dDw9NzUwMD8zMDA6MjAwfSx0fSkoKTtmdW5jdGlvbiBSdnQodCxlKXtmb3IodmFyIG49MCxvPTA7bzx0Lmxlbmd0aDtvKyspbis9TWF0aC5wb3codFtvXS1lW29dLDIpO3JldHVybiBNYXRoLnNxcnQobil9dUN0LlVNQVA9RHZ0LHVDdC5ldWNsaWRlYW49UnZ0LHVDdC5jb3NpbmU9ZnVuY3Rpb24gRXZ0KHQsZSl7Zm9yKHZhciBuPTAsbz0wLGk9MCxhPTA7YTx0Lmxlbmd0aDthKyspbis9dFthXSplW2FdLG8rPU1hdGgucG93KHRbYV0sMiksaSs9TWF0aC5wb3coZVthXSwyKTtyZXR1cm4gMD09PW8mJjA9PT1pPzA6MD09PW98fDA9PT1pPzE6MS1uL01hdGguc3FydChvKmkpfTt2YXIgQXZ0PWZ1bmN0aW9uIEF2dCgpe3RoaXMuY3VycmVudEVwb2NoPTAsdGhpcy5oZWFkRW1iZWRkaW5nPVtdLHRoaXMudGFpbEVtYmVkZGluZz1bXSx0aGlzLmhlYWQ9W10sdGhpcy50YWlsPVtdLHRoaXMuZXBvY2hzUGVyU2FtcGxlPVtdLHRoaXMuZXBvY2hPZk5leHRTYW1wbGU9W10sdGhpcy5lcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlPVtdLHRoaXMuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGU9W10sdGhpcy5tb3ZlT3RoZXI9ITAsdGhpcy5pbml0aWFsQWxwaGE9MSx0aGlzLmFscGhhPTEsdGhpcy5nYW1tYT0xLHRoaXMuYT0xLjU3Njk0MzQ2MDMxMTMwNzcsdGhpcy5iPS44OTUwNjA4Nzc5MTA5NzMzLHRoaXMuZGltPTIsdGhpcy5uRXBvY2hzPTUwMCx0aGlzLm5WZXJ0aWNlcz0wfTtmdW5jdGlvbiBUdnQodCxlKXtyZXR1cm4gdD5lP2U6dDwtZT8tZTp0fWZ1bmN0aW9uIE52dCh0LGUpe2Zvcih2YXIgbj0wLG89MDtvPHQubGVuZ3RoO28rKyluKz1NYXRoLnBvdyh0W29dLWVbb10sMik7cmV0dXJuIG59ZnVuY3Rpb24genZ0KHQsZSl7dmFyIG49UHZ0LmxpbmVhcigwLDMqdCwzMDApLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ8ZT8xOnR9KSksbz1QdnQuemVyb3Mobi5sZW5ndGgpLm1hcCgoZnVuY3Rpb24obyxpKXtyZXR1cm4gbltpXT49ZT9NYXRoLmV4cCgtKG5baV0tZSkvdCk6b30pKSxpPXd2dC5kZWZhdWx0KHt4Om4seTpvfSwoZnVuY3Rpb24odCl7dmFyIGU9YnZ0KHQsMiksbj1lWzBdLG89ZVsxXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEvKDErbipNYXRoLnBvdyh0LDIqbykpfX0pLHtkYW1waW5nOjEuNSxpbml0aWFsVmFsdWVzOlsuNSwuNV0sZ3JhZGllbnREaWZmZXJlbmNlOi4xLG1heEl0ZXJhdGlvbnM6MTAwLGVycm9yVG9sZXJhbmNlOi4wMX0pLnBhcmFtZXRlclZhbHVlcyxhPWJ2dChpLDIpO3JldHVybnthOmFbMF0sYjphWzFdfX1mdW5jdGlvbiBJdnQodCxlLG4sbyl7cmV0dXJuIHZvaWQgMD09PW4mJihuPTEpLHZvaWQgMD09PW8mJihvPTUpLHQubWFwKChmdW5jdGlvbih0LGksYSl7cmV0dXJuLTE9PT1lW2ldfHwtMT09PWVbYV0/dCpNYXRoLmV4cCgtbik6ZVtpXSE9PWVbYV0/dCpNYXRoLmV4cCgtbyk6dH0pKX1mdW5jdGlvbiBIdnQodCl7dD12dnQubm9ybWFsaXplKHQsIm1heCIpO3ZhciBlPXZ2dC50cmFuc3Bvc2UodCksbj12dnQucGFpcndpc2VNdWx0aXBseShlLHQpO3JldHVybiB0PXZ2dC5hZGQodCx2dnQuc3VidHJhY3QoZSxuKSksdnZ0LmVsaW1pbmF0ZVplcm9zKHQpfWZ1bmN0aW9uIEZ2dCh0LGUsbil7Zm9yKHZhciBvPVB2dC56ZXJvcyh0Lmxlbmd0aCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gUHZ0Lnplcm9zKG5bMF0ubGVuZ3RoKX0pKSxpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKHZhciBhPTA7YTx0WzBdLmxlbmd0aDthKyspZm9yKHZhciByPTA7cjxuWzBdLmxlbmd0aDtyKyspe29baV1bcl0rPWVbaV1bYV0qblt0W2ldW2FdXVtyXX1yZXR1cm4gb31mdW5jdGlvbiBMdnQodCl7bGV0IGUsbixvPXQubGVuZ3RoO2Zvcig7bzspbj1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqby0tKSxlPXRbb10sdFtvXT10W25dLHRbbl09ZTtyZXR1cm4gdH1mdW5jdGlvbiBCdnQodCxlKXtyZXR1cm5gJHtlfS8ke3R9YH11Q3QuZmluZEFCUGFyYW1zPXp2dCx1Q3QuZmFzdEludGVyc2VjdGlvbj1JdnQsdUN0LnJlc2V0TG9jYWxDb25uZWN0aXZpdHk9SHZ0LHVDdC5pbml0VHJhbnNmb3JtPUZ2dCxPYmplY3QuZGVmaW5lUHJvcGVydHkobUN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxtQ3QuVU1BUD11Q3QuVU1BUDtjbGFzcyBWdnR7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy5odHRwUGF0aFByZWZpeD0iZGF0YS9wbHVnaW4vbnBtaSJ9ZmV0Y2hEYXRhKHQpe3JldHVybiBpZSh0aGlzLmZldGNoQW5ub3RhdGlvbnModCksdGhpcy5mZXRjaE1ldHJpY3ModCksdGhpcy5mZXRjaFZhbHVlcyh0KSx0aGlzLmZldGNoRW1iZWRkaW5ncyh0KSkucGlwZShWdCgoKFt0LGUsbixvXSk9Pntjb25zdCBpPXt9LGE9e307bGV0IHIscz0wO2Zvcihjb25zdCByIG9mIE9iamVjdC5rZXlzKHQpKWZvcihjb25zdCBsIGluIHRbcl0pe2NvbnN0IGM9dFtyXVtsXTtPYmplY3Qua2V5cyhvKS5sZW5ndGgmJiFhW2NdJiZvW3JdW2xdJiZvW3JdW2xdLnNvbWUoKHQ9PjAhPT10KSkmJihhW2NdPXt2ZWN0b3I6b1tyXVtsXSxpbmRleDpzLG5hbWU6Y30scys9MSk7Y29uc3QgZD1uZXcgTWFwO2Zvcihjb25zdCB0IGluIGVbcl0pe2NvbnN0IG89ZVtyXVt0XSxpPXBDdChvKTtsZXQgYT1kLmdldChpKTthfHwoYT17blBNSVZhbHVlOm51bGwsY291bnRWYWx1ZTpudWxsLGFubm90YXRpb246YyxtZXRyaWM6aSxydW46cn0sZC5zZXQoaSxhKSksbEN0KG8pP2EuY291bnRWYWx1ZT1uW3JdW2xdW3RdOmNDdChvKSYmKGEublBNSVZhbHVlPW5bcl1bbF1bdF0pfWlbY109Wy4uLmlbY10/aVtjXTpbXSwuLi5kLnZhbHVlcygpXX1yZXR1cm4gT2JqZWN0LmtleXMoYSkubGVuZ3RoJiYocj0oZnVuY3Rpb24gbCh0KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpO3JldHVybntwb2ludHM6dCxwb2ludEtleXM6ZSxzaHVmZmxlZERhdGFJbmRpY2VzOkx2dCgobj1lLmxlbmd0aCxbLi4ubmV3IEFycmF5KG4pXS5tYXAoKCh0LGUpPT5lKSkpKSxoYXNVbWFwUnVuOiExfTt2YXIgbn0pKGEpKSx7YW5ub3RhdGlvbkRhdGE6aSxtZXRyaWNzOmUsZW1iZWRkaW5nRGF0YVNldDpyfX0pKSxoZSgodD0+dCBpbnN0YW5jZW9mIGdFJiY0MDA8PXQuc3RhdHVzJiZ0LnN0YXR1czw1MDA/enQoe2Fubm90YXRpb25EYXRhOnt9LG1ldHJpY3M6e30sZW1iZWRkaW5nRGF0YVNldDp2b2lkIDB9KTpJdCh0KSkpKX1mZXRjaEFubm90YXRpb25zKHQpe3JldHVybiBpZSh0Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L2Fubm90YXRpb25zYCkucGlwZShWdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoKFt0LG5dKT0+W0J2dCh0LGUpLG5dKSkpfSkoZSx0KSkpKSkpKS5waXBlKFZ0KCh0PT57bGV0IGU9e307Zm9yKGNvbnN0IG4gb2YgdCllPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKTtyZXR1cm4gZX0pKSl9ZmV0Y2hNZXRyaWNzKHQpe3JldHVybiBpZSh0Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L21ldHJpY3NgKS5waXBlKFZ0KChlPT4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKCgoW3Qsbl0pPT5bQnZ0KHQsZSksbl0pKSl9KShlLHQpKSkpKSkpLnBpcGUoVnQoKHQ9PntsZXQgZT17fTtmb3IoY29uc3QgbiBvZiB0KWU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pO3JldHVybiBlfSkpKX1mZXRjaFZhbHVlcyh0KXtyZXR1cm4gaWUodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS92YWx1ZXNgKS5waXBlKFZ0KChlPT4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKCgoW3Qsbl0pPT5bQnZ0KHQsZSksbl0pKSl9KShlLHQpKSkpKSkpLnBpcGUoVnQoKHQ9PntsZXQgZT17fTtmb3IoY29uc3QgbiBvZiB0KWU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pO3JldHVybiBlfSkpKX1mZXRjaEVtYmVkZGluZ3ModCl7cmV0dXJuIGllKHQubWFwKCh0PT50aGlzLmh0dHAuZ2V0KGAvZXhwZXJpbWVudC8ke3R9LyR7dGhpcy5odHRwUGF0aFByZWZpeH0vZW1iZWRkaW5nc2ApLnBpcGUoVnQoKGU9PihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0KS5tYXAoKChbdCxuXSk9PltCdnQodCxlKSxuXSkpKX0pKGUsdCkpKSkpKSkucGlwZShWdCgodD0+e2xldCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbik7cmV0dXJuIGV9KSkpfX1WdnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZ2dCkoVHIoTEUpKX0sVnZ0Lsm1cHJvdj1Tbih7dG9rZW46VnZ0LGZhY3Rvcnk6VnZ0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWdnQsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkxFfV19KSxudWxsKTtjbGFzcyBVdnR7fVV2dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VXZ0KX0sVXZ0Lsm1bW9kPXVvKHt0eXBlOlV2dH0pLFV2dC7JtWluaj1Ebih7cHJvdmlkZXJzOltWdnRdLGltcG9ydHM6W1tCRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihVdnQsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltCRV0scHJvdmlkZXJzOltWdnRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oVXZ0LHtpbXBvcnRzOltCRV19KTtjb25zdCBqdnQ9X2soIltOUE1JXSBuUE1JIExvYWRlZCIpLFd2dD1faygiW05QTUldIG5QTUkgUGx1Z2luIERhdGEgUmVxdWVzdGVkIiksR3Z0PV9rKCJbTlBNSV0gblBNSSBQbHVnaW4gRGF0YSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxZdnQ9X2soIltOUE1JXSBuUE1JIFBsdWdpbiBEYXRhIFJlcXVlc3QgRmFpbGVkIikscXZ0PV9rKCJbTlBNSV0gQWRkaW5nL1JlbW92aW5nIEFubm90YXRpb25zIHRvL2Zyb20gU2VsZWN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxadnQ9X2soIltOUE1JXSBBbm5vdGF0aW9ucyBTZXQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxYdnQ9X2soIltOUE1JXSBDbGVhcmluZyB0aGUgQW5ub3RhdGlvbiBTZWxlY3Rpb24iKSxLdnQ9X2soIltOUE1JXSBBZGRpbmcvUmVtb3ZpbmcgQW5ub3RhdGlvbnMgdG8vZnJvbSBGbGFnZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSnZ0PV9rKCJbTlBNSV0gQWRkaW5nL1JlbW92aW5nIEFubm90YXRpb25zIHRvL2Zyb20gSGlkZGVuIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUXZ0PV9rKCJbTlBNSV0gQW5ub3RhdGlvbnMgUmVnZXggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLCR2dD1faygiW05QTUldIE1ldHJpY3MgUmVnZXggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHR4dD1faygiW05QTUldIE1ldHJpYyBGaWx0ZXIgQWRkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxleHQ9X2soIltOUE1JXSBNZXRyaWMgRmlsdGVyIFJlbW92ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxueHQ9X2soIltOUE1JXSBNZXRyaWMgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxveHQ9X2soIltOUE1JXSBBbm5vdGF0aW9uIFNvcnQgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGl4dD1faygiW05QTUldIFNpbWlsYXJpdHkgU29ydCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYXh0PV9rKCJbTlBNSV0gVG9nZ2xlIFBDIEV4cGFuZGVkIikscnh0PV9rKCJbTlBNSV0gVG9nZ2xlIEFubm90YXRpb25zIEV4cGFuZGVkIiksc3h0PV9rKCJbTlBNSV0gVG9nZ2xlIFNpZGViYXIgRXhwYW5kZWQiKSxseHQ9X2soIltOUE1JXSBTaG93IENvdW50cyBUb2dnbGVkIiksY3h0PV9rKCJbTlBNSV0gU2hvdyBIaWRkZW4gQW5ub3RhdGlvbnMgVG9nZ2xlZCIpLGR4dD1faygiW05QTUldIEVtYmVkZGluZ3MgVmlldyBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkscHh0PV9rKCJbTlBNSV0gU2lkZWJhciBXaWR0aCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbXh0PV9rKCJbTlBNSV0gRW1iZWRkaW5ncyBTaWRlYmFyIFdpZHRoIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx1eHQ9X2soIltOUE1JXSBFbWJlZGRpbmdzIFNpZGViYXIgRXhwYW5kZWQgVG9nZ2xlZCIpLGZ4dD1faygiW05QTUldIENoYW5nZSBFbWJlZGRpbmcgRGF0YVNldCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGd4dD0ibnBtaSI7dmFyIGh4dCxieHQseXh0LF94dDshKGZ1bmN0aW9uKHQpe3RbdC5BTkQ9MF09IkFORCJ9KShoeHR8fChoeHQ9e30pKSwoZnVuY3Rpb24odCl7dFt0Lk1FVFJJQz0wXT0iTUVUUklDIix0W3QuT1BFUkFUT1I9MV09Ik9QRVJBVE9SIn0pKGJ4dHx8KGJ4dD17fSkpLChmdW5jdGlvbih0KXt0W3QuREVGQVVMVD0wXT0iREVGQVVMVCIsdFt0LkVNQkVERElOR1M9MV09IkVNQkVERElOR1MifSkoeXh0fHwoeXh0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5ERVNDRU5ESU5HPTBdPSJERVNDRU5ESU5HIix0W3QuQVNDRU5ETkc9MV09IkFTQ0VORE5HIix0W3QuU0lNSUxBUj0yXT0iU0lNSUxBUiIsdFt0LkRJU1NJTUlMQVI9M109IkRJU1NJTUlMQVIifSkoX3h0fHwoX3h0PXt9KSk7Y29uc3QgQ3h0PV9TKGd4dCksTXh0PWJTKEN4dCwodD0+dC5wbHVnaW5EYXRhTG9hZGVkLnN0YXRlKSksdnh0PWJTKEN4dCwodD0+dC5hbm5vdGF0aW9uRGF0YSkpLHh4dD1iUyhDeHQsKHQ9PnQucnVuVG9NZXRyaWNzKSksT3h0PWJTKEN4dCwodD0+dC5lbWJlZGRpbmdEYXRhU2V0KSksUHh0PWJTKEN4dCwodD0+dC5zZWxlY3RlZEFubm90YXRpb25zKSksd3h0PWJTKEN4dCwodD0+dC5mbGFnZ2VkQW5ub3RhdGlvbnMpKSxreHQ9YlMoQ3h0LCh0PT50LmhpZGRlbkFubm90YXRpb25zKSksU3h0PWJTKEN4dCwodD0+dC5hbm5vdGF0aW9uc1JlZ2V4KSksRHh0PWJTKEN4dCwodD0+dC5tZXRyaWNzUmVnZXgpKSxSeHQ9YlMoQ3h0LCh0PT50Lm1ldHJpY0FyaXRobWV0aWMpKSxFeHQ9YlMoQ3h0LCh0PT50Lm1ldHJpY0ZpbHRlcnMpKSxBeHQ9YlMoQ3h0LCh0PT50LnNvcnQpKSxUeHQ9YlMoQ3h0LCh0PT50LnBjRXhwYW5kZWQpKSxOeHQ9YlMoQ3h0LCh0PT50LmFubm90YXRpb25zRXhwYW5kZWQpKSx6eHQ9YlMoQ3h0LCh0PT50LnNpZGViYXJFeHBhbmRlZCkpLEl4dD1iUyhDeHQsKHQ9PnQuc2hvd0NvdW50cykpLEh4dD1iUyhDeHQsKHQ9PnQuc2hvd0hpZGRlbkFubm90YXRpb25zKSksRnh0PWJTKEN4dCwodD0+dC52aWV3QWN0aXZlKSksTHh0PWJTKEN4dCwodD0+dC5zaWRlYmFyV2lkdGgpKSxCeHQ9YlMoQ3h0LCh0PT50LmVtYmVkZGluZ3NNZXRyaWMpKSxWeHQ9YlMoQ3h0LCh0PT50LmVtYmVkZGluZ3NTaWRlYmFyV2lkdGgpKSxVeHQ9YlMoQ3h0LCh0PT50LmVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQpKTtjbGFzcyBqeHR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5sb2FkRGF0YSQ9V1MoKCgpPT5wZSh0aGlzLmxvYWRQbHVnaW5EYXRhKCkpLnBpcGUoVnQoKCgpPT4oe30pKSkpKSx7ZGlzcGF0Y2g6ITF9KX1sb2FkUGx1Z2luRGF0YSgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoJFMoanZ0KSxxZSh0aGlzLnN0b3JlLnNlbGVjdChNeHQpLHRoaXMuc3RvcmUuc2VsZWN0KGtSKSksZmUoKChbLHQsZV0pPT50IT09R0UuTE9BRElORyYmbnVsbCE9PWUpKSxXZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goV3Z0KCkpKSksJHQoKChbLCx0XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaERhdGEodCkucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goR3Z0KHQpKX0pKSxWdCgoKCk9Pnt9KSksaGUoKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaChZdnQoKSksZHQpKSkpKSkpfX1qeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGp4dCkoVHIoUVMpLFRyKGlTKSxUcihWdnQpKX0sanh0Lsm1cHJvdj1Tbih7dG9rZW46anh0LGZhY3Rvcnk6anh0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqeHQsW3t0eXBlOmptfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFTfSx7dHlwZTppU30se3R5cGU6VnZ0fV19KSxudWxsKTtjbGFzcyBXeHR7fVd4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V3h0KX0sV3h0Lsm1Y21wPXNvKHt0eXBlOld4dCxzZWxlY3RvcnM6W1sibnBtaS1pbmFjdGl2ZS12aWV3Il1dLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWzEsImNvbnRhaW5lciJdLFsxLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiksX3UoMSwiZGl2IiwwKSxfdSgyLCJkaXYiLDEpLFBmKDMsIm5QTUkgaXMgaW5hY3RpdmUgYmVjYXVzZSBubyBkYXRhIGlzIGF2YWlsYWJsZS4iKSxDdSgpLF91KDQsImRpdiIpLFBmKDUsIiBUbyB1c2UgdGhlIG5QTUksIGNhbGN1bGF0ZSBuUE1JIHZhbHVlcywgYW5kIGxvZyB0aGVtIHVzaW5nIHRoZSBzdW1tYXJ5IHdyaXRlci4gIiksQ3UoKSxDdSgpLEN1KCkpfSxzdHlsZXM6WyIuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxNXB4O1xuICBwYWRkaW5nOiA1MHB4O1xufVxuXG4udGl0bGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxMzUlO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV3h0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktaW5hY3RpdmUtdmlldyIsdGVtcGxhdGVVcmw6Ii4vaW5hY3RpdmVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vaW5hY3RpdmVfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NvbnN0IEd4dD1WUyh7cGx1Z2luRGF0YUxvYWRlZDp7c3RhdGU6R0UuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sYW5ub3RhdGlvbkRhdGE6e30sZW1iZWRkaW5nRGF0YVNldDp2b2lkIDAscnVuVG9NZXRyaWNzOnt9LHNlbGVjdGVkQW5ub3RhdGlvbnM6W10sZmxhZ2dlZEFubm90YXRpb25zOltdLGhpZGRlbkFubm90YXRpb25zOltdLGFubm90YXRpb25zUmVnZXg6IiIsbWV0cmljc1JlZ2V4OiIiLG1ldHJpY0FyaXRobWV0aWM6W10sbWV0cmljRmlsdGVyczp7fSxzb3J0OnttZXRyaWM6IiIsb3JkZXI6X3h0LkRFU0NFTkRJTkd9LHBjRXhwYW5kZWQ6ITAsYW5ub3RhdGlvbnNFeHBhbmRlZDohMCxzaWRlYmFyRXhwYW5kZWQ6ITAsc2hvd0NvdW50czohMCxzaG93SGlkZGVuQW5ub3RhdGlvbnM6ITEsc2lkZWJhcldpZHRoOjMwMCx2aWV3QWN0aXZlOnl4dC5ERUZBVUxULGVtYmVkZGluZ3NNZXRyaWM6IiIsZW1iZWRkaW5nc1NpZGViYXJXaWR0aDo1MDAsZW1iZWRkaW5nc1NpZGViYXJFeHBhbmRlZDohMH0sQlMoV3Z0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BsdWdpbkRhdGFMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luRGF0YUxvYWRlZCkse3N0YXRlOkdFLkxPQURJTkd9KX0pKSksQlMoWXZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BsdWdpbkRhdGFMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luRGF0YUxvYWRlZCkse3N0YXRlOkdFLkZBSUxFRH0pfSkpKSxCUyhHdnQsKCh0LHthbm5vdGF0aW9uRGF0YTplLG1ldHJpY3M6bixlbWJlZGRpbmdEYXRhU2V0Om99KT0+e2NvbnN0IGk9e307Zm9yKGNvbnN0IHQgaW4gbil7aVt0XT1bXTtmb3IoY29uc3QgZSBvZiBuW3RdKWNDdChlKSYmaVt0XS5wdXNoKGUpfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1blRvTWV0cmljczppLGFubm90YXRpb25EYXRhOmUsZW1iZWRkaW5nRGF0YVNldDpvLHBsdWdpbkRhdGFMb2FkZWQ6e3N0YXRlOkdFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX19KX0pKSxCUyhxdnQsKCh0LHthbm5vdGF0aW9uczplfSk9Pntjb25zdCBuPW5ldyBTZXQoWy4uLnQuc2VsZWN0ZWRBbm5vdGF0aW9ucywuLi5lXSk7aWYobi5zaXplPT09dC5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aClmb3IoY29uc3QgdCBvZiBlKW4uZGVsZXRlKHQpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkQW5ub3RhdGlvbnM6Wy4uLm5dfSl9KSksQlMoWnZ0LCgodCx7YW5ub3RhdGlvbnM6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkQW5ub3RhdGlvbnM6ZX0pKSksQlMoWHZ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkQW5ub3RhdGlvbnM6W119KSkpLEJTKEt2dCwoKHQse2Fubm90YXRpb25zOmV9KT0+e2NvbnN0IG49bmV3IFNldChbLi4udC5mbGFnZ2VkQW5ub3RhdGlvbnMsLi4uZV0pO2lmKG4uc2l6ZT09PXQuZmxhZ2dlZEFubm90YXRpb25zLmxlbmd0aClmb3IoY29uc3QgdCBvZiBlKW4uZGVsZXRlKHQpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZsYWdnZWRBbm5vdGF0aW9uczpbLi4ubl0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbXX0pfSkpLEJTKEp2dCwoKHQse2Fubm90YXRpb25zOmV9KT0+e2NvbnN0IG49bmV3IFNldChbLi4udC5oaWRkZW5Bbm5vdGF0aW9ucywuLi5lXSk7aWYobi5zaXplPT09dC5oaWRkZW5Bbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgZSluLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtoaWRkZW5Bbm5vdGF0aW9uczpbLi4ubl0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbXX0pfSkpLEJTKFF2dCwoKHQse3JlZ2V4OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthbm5vdGF0aW9uc1JlZ2V4OmV9KSkpLEJTKCR2dCwoKHQse3JlZ2V4OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRyaWNzUmVnZXg6ZX0pKSksQlModHh0LCgodCx7bWV0cmljOmV9KT0+e2lmKHQubWV0cmljRmlsdGVyc1tlXSlyZXR1cm4gdDtjb25zdCBuPVtdO3JldHVybiAwIT09dC5tZXRyaWNBcml0aG1ldGljLmxlbmd0aCYmbi5wdXNoKHtraW5kOmJ4dC5PUEVSQVRPUixvcGVyYXRvcjpoeHQuQU5EfSksbi5wdXNoKHtraW5kOmJ4dC5NRVRSSUMsbWV0cmljOmV9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse21ldHJpY0FyaXRobWV0aWM6Wy4uLnQubWV0cmljQXJpdGhtZXRpYywuLi5uXSxtZXRyaWNGaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0Lm1ldHJpY0ZpbHRlcnMpLHtbZV06e21heDoxLG1pbjotMSxpbmNsdWRlTmFOOiExfX0pLHNvcnQ6e21ldHJpYzplLG9yZGVyOl94dC5ERVNDRU5ESU5HfX0pfSkpLEJTKGV4dCwoKHQse21ldHJpYzplfSk9PntpZighdC5tZXRyaWNGaWx0ZXJzW2VdKXJldHVybiB0O2xldCBuPTAsbz0wLGk9Mjtjb25zdCBhPXQubWV0cmljRmlsdGVycyxyPWUscz1LVChhLFsic3ltYm9sIj09dHlwZW9mIHI/cjpyKyIiXSk7Zm9yKGNvbnN0IG8gaW4gdC5tZXRyaWNBcml0aG1ldGljKXtjb25zdCBpPXQubWV0cmljQXJpdGhtZXRpY1tvXTtpLmtpbmQ9PT1ieHQuTUVUUklDJiZpLm1ldHJpYz09PWUmJihuPXBhcnNlSW50KG8pKX1yZXR1cm4gMCE9PW4mJihvPW4tMSxpPW4rMSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRyaWNBcml0aG1ldGljOlsuLi50Lm1ldHJpY0FyaXRobWV0aWMuc2xpY2UoMCxvKSwuLi50Lm1ldHJpY0FyaXRobWV0aWMuc2xpY2UoaSldLG1ldHJpY0ZpbHRlcnM6c30pfSkpLEJTKG54dCwoKHQse21ldHJpYzplLG1heDpuLG1pbjpvLGluY2x1ZGVOYU46aX0pPT50Lm1ldHJpY0ZpbHRlcnNbZV0/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRyaWNGaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0Lm1ldHJpY0ZpbHRlcnMpLHtbZV06e21heDpuLG1pbjpvLGluY2x1ZGVOYU46aX19KX0pOnQpKSxCUyhveHQsKCh0LHttZXRyaWM6ZX0pPT57Y29uc3Qgbj17bWV0cmljOmUsb3JkZXI6X3h0LkRFU0NFTkRJTkd9O3JldHVybiB0LnNvcnQubWV0cmljPT09ZSYmdC5zb3J0Lm9yZGVyPT09X3h0LkRFU0NFTkRJTkcmJihuLm9yZGVyPV94dC5BU0NFTkRORyksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3J0Om59KX0pKSxCUyhpeHQsKCh0LHthbm5vdGF0aW9uOmV9KT0+e2NvbnN0IG49e21ldHJpYzplLG9yZGVyOl94dC5TSU1JTEFSfTtyZXR1cm4gdC5zb3J0Lm1ldHJpYz09PWUmJnQuc29ydC5vcmRlcj09PV94dC5TSU1JTEFSJiYobi5vcmRlcj1feHQuRElTU0lNSUxBUiksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3J0Om59KX0pKSxCUyhheHQsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGNFeHBhbmRlZDohdC5wY0V4cGFuZGVkfSkpKSxCUyhyeHQsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YW5ub3RhdGlvbnNFeHBhbmRlZDohdC5hbm5vdGF0aW9uc0V4cGFuZGVkfSkpKSxCUyhzeHQsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2lkZWJhckV4cGFuZGVkOiF0LnNpZGViYXJFeHBhbmRlZH0pKSksQlMobHh0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Nob3dDb3VudHM6IXQuc2hvd0NvdW50c30pKSksQlMoY3h0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Nob3dIaWRkZW5Bbm5vdGF0aW9uczohdC5zaG93SGlkZGVuQW5ub3RhdGlvbnN9KSkpLEJTKGR4dCwoKHQse21ldHJpYzplfSk9PntsZXQgbj15eHQuRU1CRURESU5HUyxvPWU7cmV0dXJuIGU9PT10LmVtYmVkZGluZ3NNZXRyaWMmJihuPXl4dC5ERUZBVUxULG89IiIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dmlld0FjdGl2ZTpuLGVtYmVkZGluZ3NNZXRyaWM6b30pfSkpLEJTKHB4dCwoKHQse3NpZGViYXJXaWR0aDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2lkZWJhcldpZHRoOmV9KSkpLEJTKG14dCwoKHQse3NpZGViYXJXaWR0aDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW1iZWRkaW5nc1NpZGViYXJXaWR0aDplfSkpKSxCUyh1eHQsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW1iZWRkaW5nc1NpZGViYXJFeHBhbmRlZDohdC5lbWJlZGRpbmdzU2lkZWJhckV4cGFuZGVkfSkpKSxCUyhmeHQsKCh0LHtkYXRhU2V0OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtlbWJlZGRpbmdEYXRhU2V0OmV9KSkpKTtmdW5jdGlvbiBZeHQodCxlKXtyZXR1cm4gR3h0KHQsZSl9ZnVuY3Rpb24gcXh0KHQsZSl7MSZ0JiZNdSgwLCJtYXQtaWNvbiIsNyl9ZnVuY3Rpb24gWnh0KHQsZSl7aWYoMSZ0JiYoX3UoMCwibWF0LW9wdGlvbiIsOCksUGYoMSksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O2h1KCJ2YWx1ZSIsdCksRGMoMSksd2YodCl9fWNsYXNzIFh4dHtjb25zdHJ1Y3Rvcigpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlPW5ldyBTeSx0aGlzLm9uQWRkRmlsdGVyPW5ldyBTeX1vbk9wdGlvblNlbGVjdGVkKHQsZSl7dGhpcy5vbkFkZEZpbHRlci5lbWl0KHQub3B0aW9uLnZhbHVlKSxlLnZhbHVlPSIifX1YeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh4dCl9LFh4dC7JtWNtcD1zbyh7dHlwZTpYeHQsc2VsZWN0b3JzOltbIm1ldHJpYy1zZWFyY2gtY29tcG9uZW50Il1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmNmKCJ2YWxpZCIsbi5pc1JlZ2V4RmlsdGVyVmFsaWQpfSxpbnB1dHM6e2NvbXBsZXRpb25zOiJjb21wbGV0aW9ucyIscmVnZXhGaWx0ZXJWYWx1ZToicmVnZXhGaWx0ZXJWYWx1ZSIsaXNSZWdleEZpbHRlclZhbGlkOiJpc1JlZ2V4RmlsdGVyVmFsaWQifSxvdXRwdXRzOntvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U6Im9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsb25BZGRGaWx0ZXI6Im9uQWRkRmlsdGVyIn0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOltbInN2Z0ljb24iLCJzZWFyY2hfMjRweCJdLFsibWF0SW5wdXQiLCIiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJwbGFjZWhvbGRlciIsIkFkZCBNZXRyaWMgRmlsdGVyIiwzLCJ2YWx1ZSIsIm1hdEF1dG9jb21wbGV0ZSIsImlucHV0Il0sWyJtYXRJbnB1dCIsIiJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJjbGFzcyIsImVycm9yLWljb24iLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsNCwibmdJZiJdLFsiYXV0b0FjdGl2ZUZpcnN0T3B0aW9uIiwiIiwzLCJvcHRpb25TZWxlY3RlZCJdLFsiZmlsdGVyTWF0Y2hlcyIsIm1hdEF1dG9jb21wbGV0ZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsIm1hdFRvb2x0aXAiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiwxLCJlcnJvci1pY29uIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUpe2NvbnN0IHQ9UHUoKTtNdSgwLCJtYXQtaWNvbiIsMCksX3UoMSwiaW5wdXQiLDEsMiksRHUoImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChlLnRhcmdldC52YWx1ZSl9KSksQ3UoKSxIbSgzLHF4dCwxLDAsIm1hdC1pY29uIiwzKSxfdSg0LCJtYXQtYXV0b2NvbXBsZXRlIiw0LDUpLER1KCJvcHRpb25TZWxlY3RlZCIsKGZ1bmN0aW9uIGUobyl7UGkodCk7Y29uc3QgaT1GbSgyKTtyZXR1cm4gbi5vbk9wdGlvblNlbGVjdGVkKG8saSl9KSksSG0oNixaeHQsMiwyLCJtYXQtb3B0aW9uIiw2KSxDdSgpfWlmKDImZSl7Y29uc3QgdD1GbSg1KTtEYygxKSxodSgidmFsdWUiLG4ucmVnZXhGaWx0ZXJWYWx1ZSkoIm1hdEF1dG9jb21wbGV0ZSIsdCksRGMoMiksaHUoIm5nSWYiLCFuLmlzUmVnZXhGaWx0ZXJWYWxpZCksRGMoMyksaHUoIm5nRm9yT2YiLG4uY29tcGxldGlvbnMpfX0sZGlyZWN0aXZlczpbRXEsVVosbjIsUHYsWjMseHYsekxdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDEwcHg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi45ZW19W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihYeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLXNlYXJjaC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21ldHJpY19zZWFyY2hfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWV0cmljX3NlYXJjaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7Y29tcGxldGlvbnM6W3t0eXBlOlJffV0scmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6Ul99XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxvbkFkZEZpbHRlcjpbe3R5cGU6RV99XX0pO2NsYXNzIEt4dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5tZXRyaWNzUmVnZXgkPXRoaXMuc3RvcmUuc2VsZWN0KER4dCksdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoclMoREkpKS5waXBlKFZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMubWV0cmljc0ZvckFjdGl2ZVJ1bnMkPUt0KHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QoeHh0KSkucGlwZShWdCgoKFt0LGVdKT0+e2NvbnN0IG49bmV3IFNldDtmb3IoY29uc3QgbyBvZiB0KWlmKGVbb10pZm9yKGNvbnN0IHQgb2YgZVtvXSluLmFkZCh0KTtyZXR1cm5bLi4ubl19KSkpLHRoaXMuaXNNZXRyaWNzRmlsdGVyVmFsaWQkPXRoaXMubWV0cmljc1JlZ2V4JC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBCb29sZWFuKG5ldyBSZWdFeHAodCkpfWNhdGNoKHQpe3JldHVybiExfX0pKSksdGhpcy5tZXRyaWNGaWx0ZXJLZXlzJD10aGlzLnN0b3JlLnBpcGUoclMoRXh0KSkucGlwZShWdCgodD0+T2JqZWN0LmtleXModCkpKSksdGhpcy5jb21wbGV0aW9ucyQ9S3QodGhpcy5tZXRyaWNzRm9yQWN0aXZlUnVucyQsdGhpcy5tZXRyaWNzUmVnZXgkLHRoaXMubWV0cmljRmlsdGVyS2V5cyQpLnBpcGUoVnQoKChbdCxlLG5dKT0+e2NvbnN0IG89dC5maWx0ZXIoKHQ9PiFuLmluY2x1ZGVzKHQpKSk7dHJ5e2NvbnN0IHQ9bmV3IFJlZ0V4cChlLCJpIik7cmV0dXJuIG8uZmlsdGVyKChlPT50LnRlc3QoZSkpKS5zb3J0KCl9Y2F0Y2godCl7cmV0dXJuW119fSkpKX1vbkZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKCR2dCh7cmVnZXg6dH0pKX1vbkFkZEZpbHRlcih0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHR4dCh7bWV0cmljOnR9KSksdGhpcy5zdG9yZS5kaXNwYXRjaCgkdnQoe3JlZ2V4OiIifSkpfX1mdW5jdGlvbiBKeHQodCxlLG4pe2NvbnN0IG89W1tlLC4uLm5dXTtpZighbi5sZW5ndGh8fCF0Lmxlbmd0aCl7cmV0dXJuImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwiK28ubWFwKCh0PT50LmpvaW4oIiwiKSkpLmpvaW4oIlxuIil9Y29uc3QgaT1uLm1hcCgodD0+cEN0KHQpKSk7Zm9yKGNvbnN0W24sYV1vZiB0KXtjb25zdCB0PWEuZmlsdGVyKCh0PT50LnJ1bj09PWUpKTtpZih0Lmxlbmd0aCl7Y29uc3QgZT1bbl07Zm9yKGNvbnN0IG4gb2YgaSl7Y29uc3Qgbz10LmZpbmQoKHQ9PnQubWV0cmljPT09bikpO2UucHVzaCh2b2lkIDA9PT1vPyJudWxsIjpgJHtvLm5QTUlWYWx1ZX1gKX1vLnB1c2goZSl9fXJldHVybiJkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsIitvLm1hcCgodD0+dC5qb2luKCIsIikpKS5qb2luKCJcbiIpfUt4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S3h0KShmdShpUykpfSxLeHQuybVjbXA9c28oe3R5cGU6S3h0LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1zZWFyY2giXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicmVnZXhGaWx0ZXJWYWx1ZSIsImNvbXBsZXRpb25zIiwiaXNSZWdleEZpbHRlclZhbGlkIiwib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIiwib25BZGRGaWx0ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1ldHJpYy1zZWFyY2gtY29tcG9uZW50IiwwKSxEdSgib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZpbHRlckNoYW5nZShlKX0pKSgib25BZGRGaWx0ZXIiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQWRkRmlsdGVyKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoInJlZ2V4RmlsdGVyVmFsdWUiLEN5KDEsMyxuLm1ldHJpY3NSZWdleCQpKSgiY29tcGxldGlvbnMiLEN5KDIsNSxuLmNvbXBsZXRpb25zJCkpKCJpc1JlZ2V4RmlsdGVyVmFsaWQiLEN5KDMsNyxuLmlzTWV0cmljc0ZpbHRlclZhbGlkJCkpfSxkaXJlY3RpdmVzOltYeHRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLeHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1tZXRyaWMtc2VhcmNoIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpYy1zZWFyY2gtY29tcG9uZW50XG4gICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09Im1ldHJpY3NSZWdleCQgfCBhc3luYyJcbiAgICAgIFtjb21wbGV0aW9uc109ImNvbXBsZXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2lzUmVnZXhGaWx0ZXJWYWxpZF09ImlzTWV0cmljc0ZpbHRlclZhbGlkJCB8IGFzeW5jIlxuICAgICAgKG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSk9Im9uRmlsdGVyQ2hhbmdlKCRldmVudCkiXG4gICAgICAob25BZGRGaWx0ZXIpPSJvbkFkZEZpbHRlcigkZXZlbnQpIlxuICAgID48L21ldHJpYy1zZWFyY2gtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgUXh0PWZ1bmN0aW9uKHQpe3JldHVybnsiYWN0aXZlLWJ1dHRvbiI6dH19O2NsYXNzICR4dHtkb3dubG9hZFJlc3VsdHMoKXtmb3IoY29uc3QgdCBvZiB0aGlzLnJ1bnMpe2NvbnN0IGU9Snh0KHRoaXMuZmxhZ2dlZERhdGEsdCx0aGlzLm1ldHJpY3MpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24uc2V0QXR0cmlidXRlKCJocmVmIixlKSxuLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLGByZXBvcnRfJHt0fS5jc3ZgKSxuLmNsaWNrKCl9fX0keHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCR4dCl9LCR4dC7JtWNtcD1zbyh7dHlwZTokeHQsc2VsZWN0b3JzOltbInJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50Il1dLGlucHV0czp7bnVtRmxhZ2dlZEFubm90YXRpb25zOiJudW1GbGFnZ2VkQW5ub3RhdGlvbnMiLHJ1bnM6InJ1bnMiLGZsYWdnZWREYXRhOiJmbGFnZ2VkRGF0YSIsbWV0cmljczoibWV0cmljcyJ9LGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLCJ0aXRsZSIsIkV4cG9ydCBDU1YgcmVwb3J0cyBvZiBhbGwgZmxhZ2dlZCBhbm5vdGF0aW9ucy4gV2lsbCBnZW5lcmF0ZSBvbmUgQ1NWIHBlciBhY3RpdmUgcnVuLiIsMywiZGlzYWJsZWQiLCJuZ0NsYXNzIiwiY2xpY2siXSxbMSwiYnV0dG9uLWNvbnRlbnRzIl0sWyJzdmdJY29uIiwiZ2V0X2FwcF8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJidXR0b24iLDApLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5kb3dubG9hZFJlc3VsdHMoKX0pKSxfdSgxLCJzcGFuIiwxKSxNdSgyLCJtYXQtaWNvbiIsMiksUGYoMyksQ3UoKSxDdSgpKSwyJmUmJihodSgiZGlzYWJsZWQiLDA9PT1uLm51bUZsYWdnZWRBbm5vdGF0aW9ucykoIm5nQ2xhc3MiLGl5KDMsUXh0LG4ubnVtRmxhZ2dlZEFubm90YXRpb25zPjApKSxEYygzKSxrZigiIEZsYWdnZWQgUm93cyAoIixuLm51bUZsYWdnZWRBbm5vdGF0aW9ucywiKSAiKSl9LGRpcmVjdGl2ZXM6W1dMLEN2LEVxXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmFjdGl2ZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Y29sb3I6I2ZmZn0uYnV0dG9uLWNvbnRlbnRzW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjZweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoJHh0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9yZXN1bHRzX2Rvd25sb2FkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3Jlc3VsdHNfZG93bmxvYWRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse251bUZsYWdnZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxydW5zOlt7dHlwZTpSX31dLGZsYWdnZWREYXRhOlt7dHlwZTpSX31dLG1ldHJpY3M6W3t0eXBlOlJffV19KTtjbGFzcyB0T3R7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZmxhZ2dlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdCh3eHQpLHRoaXMubnVtRmxhZ2dlZEFubm90YXRpb25zJD10aGlzLmZsYWdnZWRBbm5vdGF0aW9ucyQucGlwZShWdCgodD0+dC5sZW5ndGgpKSksdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnNlbGVjdChESSkucGlwZShWdCgodD0+dD9BcnJheS5mcm9tKHQuZW50cmllcygpKS5maWx0ZXIoKHQ9PnRbMV0pKS5tYXAoKHQ9PnRbMF0pKTpbXSkpKSx0aGlzLmZsYWdnZWREYXRhJD1LdChbdGhpcy5zdG9yZS5zZWxlY3Qodnh0KSx0aGlzLmZsYWdnZWRBbm5vdGF0aW9ucyRdKS5waXBlKFZ0KCgoW3QsZV0pPT57Y29uc3Qgbj1uZXcgU2V0KGUpO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5maWx0ZXIoKHQ9Pm4uaGFzKHRbMF0pKSl9KSkpLHRoaXMubWV0cmljcyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KHh4dCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLnN0b3JlLnNlbGVjdChFeHQpXSkucGlwZShWdCgoKFt0LGUsbl0pPT57bGV0IG89T2JqZWN0LmtleXMobik7Zm9yKGNvbnN0IG4gb2YgZSl0W25dJiYobz1vLmNvbmNhdCh0W25dLmZpbHRlcigodD0+ZEN0KHQpKSkpKTtyZXR1cm4gbz1bLi4ubmV3IFNldChvKV0sb30pKSl9fXRPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dE90KShmdShpUykpfSx0T3QuybVjbXA9c28oe3R5cGU6dE90LHNlbGVjdG9yczpbWyJucG1pLXJlc3VsdHMtZG93bmxvYWQiXV0sZGVjbHM6NSx2YXJzOjEyLGNvbnN0czpbWzMsIm51bUZsYWdnZWRBbm5vdGF0aW9ucyIsInJ1bnMiLCJmbGFnZ2VkRGF0YSIsIm1ldHJpY3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsInJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpKSwyJmUmJmh1KCJudW1GbGFnZ2VkQW5ub3RhdGlvbnMiLEN5KDEsNCxuLm51bUZsYWdnZWRBbm5vdGF0aW9ucyQpKSgicnVucyIsQ3koMiw2LG4uYWN0aXZlUnVucyQpKSgiZmxhZ2dlZERhdGEiLEN5KDMsOCxuLmZsYWdnZWREYXRhJCkpKCJtZXRyaWNzIixDeSg0LDEwLG4ubWV0cmljcyQpKX0sZGlyZWN0aXZlczpbJHh0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodE90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktcmVzdWx0cy1kb3dubG9hZCIsdGVtcGxhdGU6J1xuICAgIDxyZXN1bHRzLWRvd25sb2FkLWNvbXBvbmVudFxuICAgICAgW251bUZsYWdnZWRBbm5vdGF0aW9uc109Im51bUZsYWdnZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtydW5zXT0iYWN0aXZlUnVucyQgfCBhc3luYyJcbiAgICAgIFtmbGFnZ2VkRGF0YV09ImZsYWdnZWREYXRhJCB8IGFzeW5jIlxuICAgICAgW21ldHJpY3NdPSJtZXRyaWNzJCB8IGFzeW5jIlxuICAgID48L3Jlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgZU90PW5ldyBlcigiTWF0Q2hpcFJlbW92ZSIpLG5PdD1uZXcgZXIoIk1hdENoaXBBdmF0YXIiKSxvT3Q9bmV3IGVyKCJNYXRDaGlwVHJhaWxpbmdJY29uIik7Y29uc3QgaU90PVpGKFlGKHFGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSwicHJpbWFyeSIpLC0xKTtjbGFzcyBhT3R7fWFPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YU90KX0sYU90Lsm1ZGlyPWhvKHt0eXBlOmFPdCxzZWxlY3RvcnM6W1sibWF0LWNoaXAtYXZhdGFyIl0sWyIiLCJtYXRDaGlwQXZhdGFyIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWNoaXAtYXZhdGFyIl0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpuT3QsdXNlRXhpc3Rpbmc6YU90fV0pXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYU90LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGlwLWF2YXRhciwgW21hdENoaXBBdmF0YXJdIixob3N0OntjbGFzczoibWF0LWNoaXAtYXZhdGFyIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpuT3QsdXNlRXhpc3Rpbmc6YU90fV19XX1dLG51bGwsbnVsbCk7Y2xhc3Mgck90e31yT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJPdCl9LHJPdC7JtWRpcj1obyh7dHlwZTpyT3Qsc2VsZWN0b3JzOltbIm1hdC1jaGlwLXRyYWlsaW5nLWljb24iXSxbIiIsIm1hdENoaXBUcmFpbGluZ0ljb24iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC10cmFpbGluZy1pY29uIl0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpvT3QsdXNlRXhpc3Rpbmc6ck90fV0pXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIock90LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGlwLXRyYWlsaW5nLWljb24sIFttYXRDaGlwVHJhaWxpbmdJY29uXSIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwLXRyYWlsaW5nLWljb24ifSxwcm92aWRlcnM6W3twcm92aWRlOm9PdCx1c2VFeGlzdGluZzpyT3R9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBzT3QgZXh0ZW5kcyBpT3R7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXtzdXBlcih0KSx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1pLHRoaXMuX2hhc0ZvY3VzPSExLHRoaXMuY2hpcExpc3RTZWxlY3RhYmxlPSEwLHRoaXMuX2NoaXBMaXN0TXVsdGlwbGU9ITEsdGhpcy5fY2hpcExpc3REaXNhYmxlZD0hMSx0aGlzLl9zZWxlY3RlZD0hMSx0aGlzLl9zZWxlY3RhYmxlPSEwLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX3JlbW92YWJsZT0hMCx0aGlzLl9vbkZvY3VzPW5ldyBCLHRoaXMuX29uQmx1cj1uZXcgQix0aGlzLnNlbGVjdGlvbkNoYW5nZT1uZXcgU3ksdGhpcy5kZXN0cm95ZWQ9bmV3IFN5LHRoaXMucmVtb3ZlZD1uZXcgU3ksdGhpcy5fYWRkSG9zdENsYXNzTmFtZSgpLHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQ9YS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0LmNsYXNzTGlzdC5hZGQoIm1hdC1jaGlwLXJpcHBsZSIpLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0KSx0aGlzLl9jaGlwUmlwcGxlPW5ldyBDTCh0aGlzLGUsdGhpcy5fY2hpcFJpcHBsZVRhcmdldCxuKSx0aGlzLl9jaGlwUmlwcGxlLnNldHVwVHJpZ2dlckV2ZW50cyh0KSx0aGlzLnJpcHBsZUNvbmZpZz1vfHx7fSx0aGlzLl9hbmltYXRpb25zRGlzYWJsZWQ9Ik5vb3BBbmltYXRpb25zIj09PXIsdGhpcy50YWJJbmRleD1udWxsIT1zJiZwYXJzZUludChzKXx8LTF9Z2V0IHJpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5fYW5pbWF0aW9uc0Rpc2FibGVkfHwhIXRoaXMucmlwcGxlQ29uZmlnLmRpc2FibGVkfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZH1zZXQgc2VsZWN0ZWQodCl7Y29uc3QgZT1wSCh0KTtlIT09dGhpcy5fc2VsZWN0ZWQmJih0aGlzLl9zZWxlY3RlZD1lLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCkpfWdldCB2YWx1ZSgpe3JldHVybiB2b2lkIDAhPT10aGlzLl92YWx1ZT90aGlzLl92YWx1ZTp0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnR9c2V0IHZhbHVlKHQpe3RoaXMuX3ZhbHVlPXR9Z2V0IHNlbGVjdGFibGUoKXtyZXR1cm4gdGhpcy5fc2VsZWN0YWJsZSYmdGhpcy5jaGlwTGlzdFNlbGVjdGFibGV9c2V0IHNlbGVjdGFibGUodCl7dGhpcy5fc2VsZWN0YWJsZT1wSCh0KX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fY2hpcExpc3REaXNhYmxlZHx8dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPXBIKHQpfWdldCByZW1vdmFibGUoKXtyZXR1cm4gdGhpcy5fcmVtb3ZhYmxlfXNldCByZW1vdmFibGUodCl7dGhpcy5fcmVtb3ZhYmxlPXBIKHQpfWdldCBhcmlhU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5zZWxlY3RhYmxlJiYodGhpcy5fY2hpcExpc3RNdWx0aXBsZXx8dGhpcy5zZWxlY3RlZCk/dGhpcy5zZWxlY3RlZC50b1N0cmluZygpOm51bGx9X2FkZEhvc3RDbGFzc05hbWUoKXtjb25zdCB0PSJtYXQtYmFzaWMtY2hpcCIsZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZS5oYXNBdHRyaWJ1dGUodCl8fGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09dD9lLmNsYXNzTGlzdC5hZGQodCk6ZS5jbGFzc0xpc3QuYWRkKCJtYXQtc3RhbmRhcmQtY2hpcCIpfW5nT25EZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQuZW1pdCh7Y2hpcDp0aGlzfSksdGhpcy5fY2hpcFJpcHBsZS5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpfXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkfHwodGhpcy5fc2VsZWN0ZWQ9ITAsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9ZGVzZWxlY3QoKXt0aGlzLl9zZWxlY3RlZCYmKHRoaXMuX3NlbGVjdGVkPSExLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfXNlbGVjdFZpYUludGVyYWN0aW9uKCl7dGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD0hMCx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSghMCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfXRvZ2dsZVNlbGVjdGVkKHQ9ITEpe3JldHVybiB0aGlzLl9zZWxlY3RlZD0hdGhpcy5zZWxlY3RlZCx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSh0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnNlbGVjdGVkfWZvY3VzKCl7dGhpcy5faGFzRm9jdXN8fCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSx0aGlzLl9vbkZvY3VzLm5leHQoe2NoaXA6dGhpc30pKSx0aGlzLl9oYXNGb2N1cz0hMH1yZW1vdmUoKXt0aGlzLnJlbW92YWJsZSYmdGhpcy5yZW1vdmVkLmVtaXQoe2NoaXA6dGhpc30pfV9oYW5kbGVDbGljayh0KXt0aGlzLmRpc2FibGVkP3QucHJldmVudERlZmF1bHQoKTp0LnN0b3BQcm9wYWdhdGlvbigpfV9oYW5kbGVLZXlkb3duKHQpe2lmKCF0aGlzLmRpc2FibGVkKXN3aXRjaCh0LmtleUNvZGUpe2Nhc2UgNDY6Y2FzZSA4OnRoaXMucmVtb3ZlKCksdC5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2Ugc0g6dGhpcy5zZWxlY3RhYmxlJiZ0aGlzLnRvZ2dsZVNlbGVjdGVkKCEwKSx0LnByZXZlbnREZWZhdWx0KCl9fV9ibHVyKCl7dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUodmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9uZ1pvbmUucnVuKCgoKT0+e3RoaXMuX2hhc0ZvY3VzPSExLHRoaXMuX29uQmx1ci5uZXh0KHtjaGlwOnRoaXN9KX0pKX0pKX1fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UodD0hMSl7dGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7c291cmNlOnRoaXMsaXNVc2VySW5wdXQ6dCxzZWxlY3RlZDp0aGlzLl9zZWxlY3RlZH0pfX1zT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNPdCkoZnUoS2gpLGZ1KG1DKSxmdShfSCksZnUoTUwsOCksZnUoT2IpLGZ1KHNNKSxmdShjayw4KSxHYSgidGFiaW5kZXgiKSl9LHNPdC7JtWRpcj1obyh7dHlwZTpzT3Qsc2VsZWN0b3JzOltbIm1hdC1iYXNpYy1jaGlwIl0sWyIiLCJtYXQtYmFzaWMtY2hpcCIsIiJdLFsibWF0LWNoaXAiXSxbIiIsIm1hdC1jaGlwIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKFV5KG8sbk90LDUpLFV5KG8sb090LDUpLFV5KG8sZU90LDUpKSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLmF2YXRhcj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi50cmFpbGluZ0ljb249dC5maXJzdCksQnkodD1qeSgpKSYmKG4ucmVtb3ZlSWNvbj10LmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJvcHRpb24iLDEsIm1hdC1jaGlwIiwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjE0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVDbGljayhlKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2JsdXIoKX0pKSwyJmUmJih5bSgidGFiaW5kZXgiLG4uZGlzYWJsZWQ/bnVsbDpuLnRhYkluZGV4KSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLXNlbGVjdGVkIixuLmFyaWFTZWxlY3RlZCksY2YoIm1hdC1jaGlwLXNlbGVjdGVkIixuLnNlbGVjdGVkKSgibWF0LWNoaXAtd2l0aC1hdmF0YXIiLG4uYXZhdGFyKSgibWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uIixuLnRyYWlsaW5nSWNvbnx8bi5yZW1vdmVJY29uKSgibWF0LWNoaXAtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsbi5fYW5pbWF0aW9uc0Rpc2FibGVkKSl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgiLHNlbGVjdGVkOiJzZWxlY3RlZCIsdmFsdWU6InZhbHVlIixzZWxlY3RhYmxlOiJzZWxlY3RhYmxlIixkaXNhYmxlZDoiZGlzYWJsZWQiLHJlbW92YWJsZToicmVtb3ZhYmxlIn0sb3V0cHV0czp7c2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25DaGFuZ2UiLGRlc3Ryb3llZDoiZGVzdHJveWVkIixyZW1vdmVkOiJyZW1vdmVkIn0sZXhwb3J0QXM6WyJtYXRDaGlwIl0sZmVhdHVyZXM6W1FwXX0pLHNPdC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOktofSx7dHlwZTptQ30se3R5cGU6X0h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbTUxdfV19LHt0eXBlOk9ifSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6THIsYXJnczpbc01dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTokYSxhcmdzOlsidGFiaW5kZXgiXX1dfV0sc090LnByb3BEZWNvcmF0b3JzPXthdmF0YXI6W3t0eXBlOmlyLGFyZ3M6W25PdF19XSx0cmFpbGluZ0ljb246W3t0eXBlOmlyLGFyZ3M6W29PdF19XSxyZW1vdmVJY29uOlt7dHlwZTppcixhcmdzOltlT3RdfV0sc2VsZWN0ZWQ6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0sc2VsZWN0YWJsZTpbe3R5cGU6Ul99XSxkaXNhYmxlZDpbe3R5cGU6Ul99XSxyZW1vdmFibGU6W3t0eXBlOlJffV0sc2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpFX31dLGRlc3Ryb3llZDpbe3R5cGU6RV99XSxyZW1vdmVkOlt7dHlwZTpFX31dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHNPdCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJtYXQtYmFzaWMtY2hpcCwgW21hdC1iYXNpYy1jaGlwXSwgbWF0LWNoaXAsIFttYXQtY2hpcF0iLGlucHV0czpbImNvbG9yIiwiZGlzYWJsZVJpcHBsZSIsInRhYkluZGV4Il0sZXhwb3J0QXM6Im1hdENoaXAiLGhvc3Q6e2NsYXNzOiJtYXQtY2hpcCBtYXQtZm9jdXMtaW5kaWNhdG9yIiwiW2F0dHIudGFiaW5kZXhdIjoiZGlzYWJsZWQgPyBudWxsIDogdGFiSW5kZXgiLHJvbGU6Im9wdGlvbiIsIltjbGFzcy5tYXQtY2hpcC1zZWxlY3RlZF0iOiJzZWxlY3RlZCIsIltjbGFzcy5tYXQtY2hpcC13aXRoLWF2YXRhcl0iOiJhdmF0YXIiLCJbY2xhc3MubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uXSI6InRyYWlsaW5nSWNvbiB8fCByZW1vdmVJY29uIiwiW2NsYXNzLm1hdC1jaGlwLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9hbmltYXRpb25zRGlzYWJsZWQiLCJbYXR0ci5kaXNhYmxlZF0iOiJkaXNhYmxlZCB8fCBudWxsIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1zZWxlY3RlZF0iOiJhcmlhU2VsZWN0ZWQiLCIoY2xpY2spIjoiX2hhbmRsZUNsaWNrKCRldmVudCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIiwiKGZvY3VzKSI6ImZvY3VzKCkiLCIoYmx1cikiOiJfYmx1cigpIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6bUN9LHt0eXBlOl9IfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W01MXX1dfSx7dHlwZTpPYn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOkxyLGFyZ3M6W2NrXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX1dfSkse3NlbGVjdGlvbkNoYW5nZTpbe3R5cGU6RV99XSxkZXN0cm95ZWQ6W3t0eXBlOkVffV0scmVtb3ZlZDpbe3R5cGU6RV99XSxzZWxlY3RlZDpbe3R5cGU6Ul99XSx2YWx1ZTpbe3R5cGU6Ul99XSxzZWxlY3RhYmxlOlt7dHlwZTpSX31dLGRpc2FibGVkOlt7dHlwZTpSX31dLHJlbW92YWJsZTpbe3R5cGU6Ul99XSxhdmF0YXI6W3t0eXBlOmlyLGFyZ3M6W25PdF19XSx0cmFpbGluZ0ljb246W3t0eXBlOmlyLGFyZ3M6W29PdF19XSxyZW1vdmVJY29uOlt7dHlwZTppcixhcmdzOltlT3RdfV19KTtjbGFzcyBsT3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wYXJlbnRDaGlwPXQsIkJVVFRPTiI9PT1lLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUmJmUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJidXR0b24iKX1faGFuZGxlQ2xpY2sodCl7Y29uc3QgZT10aGlzLl9wYXJlbnRDaGlwO2UucmVtb3ZhYmxlJiYhZS5kaXNhYmxlZCYmZS5yZW1vdmUoKSx0LnN0b3BQcm9wYWdhdGlvbigpfX1sT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxPdCkoZnUoc090KSxmdShLaCkpfSxsT3QuybVkaXI9aG8oe3R5cGU6bE90LHNlbGVjdG9yczpbWyIiLCJtYXRDaGlwUmVtb3ZlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWNoaXAtcmVtb3ZlIiwibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJdLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVDbGljayhlKX0pKX0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTplT3QsdXNlRXhpc3Rpbmc6bE90fV0pXX0pLGxPdC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnNPdH0se3R5cGU6S2h9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGxPdCxbe3R5cGU6a18sYXJnczpbe3NlbGVjdG9yOiJbbWF0Q2hpcFJlbW92ZV0iLGhvc3Q6e2NsYXNzOiJtYXQtY2hpcC1yZW1vdmUgbWF0LWNoaXAtdHJhaWxpbmctaWNvbiIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soJGV2ZW50KSJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6ZU90LHVzZUV4aXN0aW5nOmxPdH1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c090fSx7dHlwZTpLaH1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBjT3Q9bmV3IGVyKCJtYXQtY2hpcHMtZGVmYXVsdC1vcHRpb25zIiksZE90PVhGKGNsYXNze2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcj10LHRoaXMuX3BhcmVudEZvcm09ZSx0aGlzLl9wYXJlbnRGb3JtR3JvdXA9bix0aGlzLm5nQ29udHJvbD1vfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgcE90PTA7Y2xhc3MgbU90e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLnZhbHVlPWV9fWNsYXNzIHVPdCBleHRlbmRzIGRPdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcihhLG8saSxyKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9kaXI9bix0aGlzLmNvbnRyb2xUeXBlPSJtYXQtY2hpcC1saXN0Iix0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4PW51bGwsdGhpcy5fZGVzdHJveWVkPW5ldyBCLHRoaXMuX3VpZD0ibWF0LWNoaXAtbGlzdC0iK3BPdCsrLHRoaXMuX3RhYkluZGV4PTAsdGhpcy5fdXNlclRhYkluZGV4PW51bGwsdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl9vbkNoYW5nZT0oKT0+e30sdGhpcy5fbXVsdGlwbGU9ITEsdGhpcy5fY29tcGFyZVdpdGg9KHQsZSk9PnQ9PT1lLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuYXJpYU9yaWVudGF0aW9uPSJob3Jpem9udGFsIix0aGlzLl9zZWxlY3RhYmxlPSEwLHRoaXMuY2hhbmdlPW5ldyBTeSx0aGlzLnZhbHVlQ2hhbmdlPW5ldyBTeSx0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I9dGhpcyl9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMubXVsdGlwbGU/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF19Z2V0IHJvbGUoKXtyZXR1cm4gdGhpcy5lbXB0eT9udWxsOiJsaXN0Ym94In1nZXQgbXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fbXVsdGlwbGV9c2V0IG11bHRpcGxlKHQpe3RoaXMuX211bHRpcGxlPXBIKHQpLHRoaXMuX3N5bmNDaGlwc1N0YXRlKCl9Z2V0IGNvbXBhcmVXaXRoKCl7cmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRofXNldCBjb21wYXJlV2l0aCh0KXt0aGlzLl9jb21wYXJlV2l0aD10LHRoaXMuX3NlbGVjdGlvbk1vZGVsJiZ0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfXNldCB2YWx1ZSh0KXt0aGlzLndyaXRlVmFsdWUodCksdGhpcy5fdmFsdWU9dH1nZXQgaWQoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0P3RoaXMuX2NoaXBJbnB1dC5pZDp0aGlzLl91aWR9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1wSCh0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHBsYWNlaG9sZGVyKCl7cmV0dXJuIHRoaXMuX2NoaXBJbnB1dD90aGlzLl9jaGlwSW5wdXQucGxhY2Vob2xkZXI6dGhpcy5fcGxhY2Vob2xkZXJ9c2V0IHBsYWNlaG9sZGVyKHQpe3RoaXMuX3BsYWNlaG9sZGVyPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCBmb2N1c2VkKCl7cmV0dXJuIHRoaXMuX2NoaXBJbnB1dCYmdGhpcy5fY2hpcElucHV0LmZvY3VzZWR8fHRoaXMuX2hhc0ZvY3VzZWRDaGlwKCl9Z2V0IGVtcHR5KCl7cmV0dXJuKCF0aGlzLl9jaGlwSW5wdXR8fHRoaXMuX2NoaXBJbnB1dC5lbXB0eSkmJighdGhpcy5jaGlwc3x8MD09PXRoaXMuY2hpcHMubGVuZ3RoKX1nZXQgc2hvdWxkTGFiZWxGbG9hdCgpe3JldHVybiF0aGlzLmVtcHR5fHx0aGlzLmZvY3VzZWR9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMubmdDb250cm9sPyEhdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ6dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPXBIKHQpLHRoaXMuX3N5bmNDaGlwc1N0YXRlKCl9Z2V0IHNlbGVjdGFibGUoKXtyZXR1cm4gdGhpcy5fc2VsZWN0YWJsZX1zZXQgc2VsZWN0YWJsZSh0KXt0aGlzLl9zZWxlY3RhYmxlPXBIKHQpLHRoaXMuY2hpcHMmJnRoaXMuY2hpcHMuZm9yRWFjaCgodD0+dC5jaGlwTGlzdFNlbGVjdGFibGU9dGhpcy5fc2VsZWN0YWJsZSkpfXNldCB0YWJJbmRleCh0KXt0aGlzLl91c2VyVGFiSW5kZXg9dCx0aGlzLl90YWJJbmRleD10fWdldCBjaGlwU2VsZWN0aW9uQ2hhbmdlcygpe3JldHVybiBwZSguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5zZWxlY3Rpb25DaGFuZ2UpKSl9Z2V0IGNoaXBGb2N1c0NoYW5nZXMoKXtyZXR1cm4gcGUoLi4udGhpcy5jaGlwcy5tYXAoKHQ9PnQuX29uRm9jdXMpKSl9Z2V0IGNoaXBCbHVyQ2hhbmdlcygpe3JldHVybiBwZSguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5fb25CbHVyKSkpfWdldCBjaGlwUmVtb3ZlQ2hhbmdlcygpe3JldHVybiBwZSguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5kZXN0cm95ZWQpKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fa2V5TWFuYWdlcj1uZXcgWEgodGhpcy5jaGlwcykud2l0aFdyYXAoKS53aXRoVmVydGljYWxPcmllbnRhdGlvbigpLndpdGhIb21lQW5kRW5kKCkud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLl9kaXI/dGhpcy5fZGlyLnZhbHVlOiJsdHIiKSx0aGlzLl9kaXImJnRoaXMuX2Rpci5jaGFuZ2UucGlwZShVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0KSkpLHRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnBpcGUoVWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2FsbG93Rm9jdXNFc2NhcGUoKX0pKSx0aGlzLmNoaXBzLmNoYW5nZXMucGlwZShCZShudWxsKSxVZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5kaXNhYmxlZCYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9zeW5jQ2hpcHNTdGF0ZSgpfSkpLHRoaXMuX3Jlc2V0Q2hpcHMoKSx0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCksdGhpcy5fdXBkYXRlVGFiSW5kZXgoKSx0aGlzLl91cGRhdGVGb2N1c0ZvckRlc3Ryb3llZENoaXBzKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpfW5nT25Jbml0KCl7dGhpcy5fc2VsZWN0aW9uTW9kZWw9bmV3IFFMKHRoaXMubXVsdGlwbGUsdm9pZCAwLCExKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9bmdEb0NoZWNrKCl7dGhpcy5uZ0NvbnRyb2wmJih0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKSx0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCE9PXRoaXMuX2Rpc2FibGVkJiYodGhpcy5kaXNhYmxlZD0hIXRoaXMubmdDb250cm9sLmRpc2FibGVkKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpLHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5fZHJvcFN1YnNjcmlwdGlvbnMoKX1yZWdpc3RlcklucHV0KHQpe3RoaXMuX2NoaXBJbnB1dD10LHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtbWF0LWNoaXAtaW5wdXQiLHQuaWQpfXNldERlc2NyaWJlZEJ5SWRzKHQpe3RoaXMuX2FyaWFEZXNjcmliZWRieT10LmpvaW4oIiAiKX13cml0ZVZhbHVlKHQpe3RoaXMuY2hpcHMmJnRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodCwhMSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1vbkNvbnRhaW5lckNsaWNrKHQpe3RoaXMuX29yaWdpbmF0ZXNGcm9tQ2hpcCh0KXx8dGhpcy5mb2N1cygpfWZvY3VzKHQpe3RoaXMuZGlzYWJsZWR8fHRoaXMuX2NoaXBJbnB1dCYmdGhpcy5fY2hpcElucHV0LmZvY3VzZWR8fCh0aGlzLmNoaXBzLmxlbmd0aD4wPyh0aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSk6KHRoaXMuX2ZvY3VzSW5wdXQodCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKSl9X2ZvY3VzSW5wdXQodCl7dGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXModCl9X2tleWRvd24odCl7Y29uc3QgZT10LnRhcmdldDtlJiZlLmNsYXNzTGlzdC5jb250YWlucygibWF0LWNoaXAiKSYmKHRoaXMuX2tleU1hbmFnZXIub25LZXlkb3duKHQpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X3VwZGF0ZVRhYkluZGV4KCl7dGhpcy5fdGFiSW5kZXg9dGhpcy5fdXNlclRhYkluZGV4fHwoMD09PXRoaXMuY2hpcHMubGVuZ3RoPy0xOjApfV91cGRhdGVGb2N1c0ZvckRlc3Ryb3llZENoaXBzKCl7aWYobnVsbCE9dGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleClpZih0aGlzLmNoaXBzLmxlbmd0aCl7Y29uc3QgdD1NYXRoLm1pbih0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4LHRoaXMuY2hpcHMubGVuZ3RoLTEpO3RoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0KX1lbHNlIHRoaXMuZm9jdXMoKTt0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4PW51bGx9X2lzVmFsaWRJbmRleCh0KXtyZXR1cm4gdD49MCYmdDx0aGlzLmNoaXBzLmxlbmd0aH1fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0LGU9ITApe2lmKHRoaXMuX2NsZWFyU2VsZWN0aW9uKCksdGhpcy5jaGlwcy5mb3JFYWNoKCh0PT50LmRlc2VsZWN0KCkpKSxBcnJheS5pc0FycmF5KHQpKXQuZm9yRWFjaCgodD0+dGhpcy5fc2VsZWN0VmFsdWUodCxlKSkpLHRoaXMuX3NvcnRWYWx1ZXMoKTtlbHNle2NvbnN0IG49dGhpcy5fc2VsZWN0VmFsdWUodCxlKTtuJiZlJiZ0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0obil9fV9zZWxlY3RWYWx1ZSh0LGU9ITApe2NvbnN0IG49dGhpcy5jaGlwcy5maW5kKChlPT5udWxsIT1lLnZhbHVlJiZ0aGlzLl9jb21wYXJlV2l0aChlLnZhbHVlLHQpKSk7cmV0dXJuIG4mJihlP24uc2VsZWN0VmlhSW50ZXJhY3Rpb24oKTpuLnNlbGVjdCgpLHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChuKSksbn1faW5pdGlhbGl6ZVNlbGVjdGlvbigpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57KHRoaXMubmdDb250cm9sfHx0aGlzLl92YWx1ZSkmJih0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLnZhbHVlOnRoaXMuX3ZhbHVlLCExKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfSkpfV9jbGVhclNlbGVjdGlvbih0KXt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLHRoaXMuY2hpcHMuZm9yRWFjaCgoZT0+e2UhPT10JiZlLmRlc2VsZWN0KCl9KSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfV9zb3J0VmFsdWVzKCl7dGhpcy5fbXVsdGlwbGUmJih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLHRoaXMuY2hpcHMuZm9yRWFjaCgodD0+e3Quc2VsZWN0ZWQmJnRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0KX0pKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV9wcm9wYWdhdGVDaGFuZ2VzKHQpe2xldCBlPW51bGw7ZT1BcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWQpP3RoaXMuc2VsZWN0ZWQubWFwKCh0PT50LnZhbHVlKSk6dGhpcy5zZWxlY3RlZD90aGlzLnNlbGVjdGVkLnZhbHVlOnQsdGhpcy5fdmFsdWU9ZSx0aGlzLmNoYW5nZS5lbWl0KG5ldyBtT3QodGhpcyxlKSksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGUpLHRoaXMuX29uQ2hhbmdlKGUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9ibHVyKCl7dGhpcy5faGFzRm9jdXNlZENoaXAoKXx8dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKSx0aGlzLmRpc2FibGVkfHwodGhpcy5fY2hpcElucHV0P3NldFRpbWVvdXQoKCgpPT57dGhpcy5mb2N1c2VkfHx0aGlzLl9tYXJrQXNUb3VjaGVkKCl9KSk6dGhpcy5fbWFya0FzVG91Y2hlZCgpKX1fbWFya0FzVG91Y2hlZCgpe3RoaXMuX29uVG91Y2hlZCgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1fYWxsb3dGb2N1c0VzY2FwZSgpey0xIT09dGhpcy5fdGFiSW5kZXgmJih0aGlzLl90YWJJbmRleD0tMSxzZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3RhYkluZGV4PXRoaXMuX3VzZXJUYWJJbmRleHx8MCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSl9X3Jlc2V0Q2hpcHMoKXt0aGlzLl9kcm9wU3Vic2NyaXB0aW9ucygpLHRoaXMuX2xpc3RlblRvQ2hpcHNGb2N1cygpLHRoaXMuX2xpc3RlblRvQ2hpcHNTZWxlY3Rpb24oKSx0aGlzLl9saXN0ZW5Ub0NoaXBzUmVtb3ZlZCgpfV9kcm9wU3Vic2NyaXB0aW9ucygpe3RoaXMuX2NoaXBGb2N1c1N1YnNjcmlwdGlvbiYmKHRoaXMuX2NoaXBGb2N1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBGb2N1c1N1YnNjcmlwdGlvbj1udWxsKSx0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbiYmKHRoaXMuX2NoaXBCbHVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb249bnVsbCksdGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbiYmKHRoaXMuX2NoaXBTZWxlY3Rpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uPW51bGwpLHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbj1udWxsKX1fbGlzdGVuVG9DaGlwc1NlbGVjdGlvbigpe3RoaXMuX2NoaXBTZWxlY3Rpb25TdWJzY3JpcHRpb249dGhpcy5jaGlwU2VsZWN0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoKHQ9Pnt0LnNvdXJjZS5zZWxlY3RlZD90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodC5zb3VyY2UpOnRoaXMuX3NlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KHQuc291cmNlKSx0aGlzLm11bHRpcGxlfHx0aGlzLmNoaXBzLmZvckVhY2goKHQ9PnshdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KSYmdC5zZWxlY3RlZCYmdC5kZXNlbGVjdCgpfSkpLHQuaXNVc2VySW5wdXQmJnRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMoKX0pKX1fbGlzdGVuVG9DaGlwc0ZvY3VzKCl7dGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uPXRoaXMuY2hpcEZvY3VzQ2hhbmdlcy5zdWJzY3JpYmUoKHQ9PntsZXQgZT10aGlzLmNoaXBzLnRvQXJyYXkoKS5pbmRleE9mKHQuY2hpcCk7dGhpcy5faXNWYWxpZEluZGV4KGUpJiZ0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpLHRoaXMuX2NoaXBCbHVyU3Vic2NyaXB0aW9uPXRoaXMuY2hpcEJsdXJDaGFuZ2VzLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9ibHVyKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpfV9saXN0ZW5Ub0NoaXBzUmVtb3ZlZCgpe3RoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb249dGhpcy5jaGlwUmVtb3ZlQ2hhbmdlcy5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXQuY2hpcCxuPXRoaXMuY2hpcHMudG9BcnJheSgpLmluZGV4T2YodC5jaGlwKTt0aGlzLl9pc1ZhbGlkSW5kZXgobikmJmUuX2hhc0ZvY3VzJiYodGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleD1uKX0pKX1fb3JpZ2luYXRlc0Zyb21DaGlwKHQpe2xldCBlPXQudGFyZ2V0O2Zvcig7ZSYmZSE9PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDspe2lmKGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJtYXQtY2hpcCIpKXJldHVybiEwO2U9ZS5wYXJlbnRFbGVtZW50fXJldHVybiExfV9oYXNGb2N1c2VkQ2hpcCgpe3JldHVybiB0aGlzLmNoaXBzJiZ0aGlzLmNoaXBzLnNvbWUoKHQ9PnQuX2hhc0ZvY3VzKSl9X3N5bmNDaGlwc1N0YXRlKCl7dGhpcy5jaGlwcyYmdGhpcy5jaGlwcy5mb3JFYWNoKCh0PT57dC5fY2hpcExpc3REaXNhYmxlZD10aGlzLl9kaXNhYmxlZCx0Ll9jaGlwTGlzdE11bHRpcGxlPXRoaXMubXVsdGlwbGV9KSl9fXVPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dU90KShmdShLaCksZnUoT2IpLGZ1KEFGLDgpLGZ1KGFHLDgpLGZ1KHdHLDgpLGZ1KG1MKSxmdSh5VywxMCkpfSx1T3QuybVjbXA9c28oe3R5cGU6dU90LHNlbGVjdG9yczpbWyJtYXQtY2hpcC1saXN0Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmVXkobyxzT3QsNSksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5jaGlwcz10KX19LGhvc3RBdHRyczpbMSwibWF0LWNoaXAtbGlzdCJdLGhvc3RWYXJzOjE1LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXMoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fYmx1cigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fa2V5ZG93bihlKX0pKSwyJmUmJihjZygiaWQiLG4uX3VpZCkseW0oInRhYmluZGV4IixuLmRpc2FibGVkP251bGw6bi5fdGFiSW5kZXgpKCJhcmlhLWRlc2NyaWJlZGJ5IixuLl9hcmlhRGVzY3JpYmVkYnl8fG51bGwpKCJhcmlhLXJlcXVpcmVkIixuLnJvbGU/bi5yZXF1aXJlZDpudWxsKSgiYXJpYS1kaXNhYmxlZCIsbi5kaXNhYmxlZC50b1N0cmluZygpKSgiYXJpYS1pbnZhbGlkIixuLmVycm9yU3RhdGUpKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsbi5tdWx0aXBsZSkoInJvbGUiLG4ucm9sZSkoImFyaWEtb3JpZW50YXRpb24iLG4uYXJpYU9yaWVudGF0aW9uKSxjZigibWF0LWNoaXAtbGlzdC1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIm1hdC1jaGlwLWxpc3QtaW52YWxpZCIsbi5lcnJvclN0YXRlKSgibWF0LWNoaXAtbGlzdC1yZXF1aXJlZCIsbi5yZXF1aXJlZCkpfSxpbnB1dHM6e2FyaWFPcmllbnRhdGlvbjpbImFyaWEtb3JpZW50YXRpb24iLCJhcmlhT3JpZW50YXRpb24iXSxtdWx0aXBsZToibXVsdGlwbGUiLGNvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCIsdmFsdWU6InZhbHVlIixyZXF1aXJlZDoicmVxdWlyZWQiLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsZGlzYWJsZWQ6ImRpc2FibGVkIixzZWxlY3RhYmxlOiJzZWxlY3RhYmxlIix0YWJJbmRleDoidGFiSW5kZXgiLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIix2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UifSxleHBvcnRBczpbIm1hdENoaXBMaXN0Il0sZmVhdHVyZXM6W1VoKFt7cHJvdmlkZTpmaix1c2VFeGlzdGluZzp1T3R9XSksUXBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sxLCJtYXQtY2hpcC1saXN0LXdyYXBwZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKEl1KCksX3UoMCwiZGl2IiwwKSxIdSgxKSxDdSgpKX0sc3R5bGVzOlsnLm1hdC1jaGlwe3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwe3RyYW5zaXRpb246Ym94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2Rpc3BsYXk6aW5saW5lLWZsZXg7cGFkZGluZzo3cHggMTJweDtib3JkZXItcmFkaXVzOjE2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2N1cnNvcjpkZWZhdWx0O21pbi1oZWlnaHQ6MzJweDtoZWlnaHQ6MXB4fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtc3RhbmRhcmQtY2hpcHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb257d2lkdGg6MThweDtoZWlnaHQ6MThweH0ubWF0LXN0YW5kYXJkLWNoaXA6OmFmdGVye3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvcGFjaXR5OjA7Y29udGVudDoiIjtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC1zdGFuZGFyZC1jaGlwOmhvdmVyOjphZnRlcntvcGFjaXR5Oi4xMn0ubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1czo6YWZ0ZXJ7b3BhY2l0eTouMTZ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXN0YW5kYXJkLWNoaXB7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZDo6YWZ0ZXJ7b3BhY2l0eTowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbntjdXJzb3I6ZGVmYXVsdH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFyLC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29ue3BhZGRpbmctdG9wOjdweDtwYWRkaW5nLWJvdHRvbTo3cHg7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjEycHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb257cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjEycHh9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MTJweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MTJweH0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLWF2YXRhcnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6NHB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLWF2YXRhcnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjRweH0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257d2lkdGg6MThweDtoZWlnaHQ6MThweDtjdXJzb3I6cG9pbnRlcn0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSxbZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6MH0ubWF0LWNoaXAtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czppbmhlcml0O292ZXJmbG93OmhpZGRlbn0ubWF0LWNoaXAtbGlzdC13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbjotNHB4fS5tYXQtY2hpcC1saXN0LXdyYXBwZXIgaW5wdXQubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1jaGlwLWxpc3Qtd3JhcHBlciAubWF0LXN0YW5kYXJkLWNoaXB7bWFyZ2luOjRweH0ubWF0LWNoaXAtbGlzdC1zdGFja2VkIC5tYXQtY2hpcC1saXN0LXdyYXBwZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lm1hdC1jaGlwLWxpc3Qtc3RhY2tlZCAubWF0LWNoaXAtbGlzdC13cmFwcGVyIC5tYXQtc3RhbmRhcmQtY2hpcHt3aWR0aDoxMDAlfS5tYXQtY2hpcC1hdmF0YXJ7Ym9yZGVyLXJhZGl1czo1MCU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtvYmplY3QtZml0OmNvdmVyfWlucHV0Lm1hdC1jaGlwLWlucHV0e3dpZHRoOjE1MHB4O21hcmdpbjo0cHg7ZmxleDoxIDAgMTUwcHh9XG4nXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSx1T3QuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6T2J9LHt0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOmFHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOndHLGRlY29yYXRvcnM6W3t0eXBlOkJyfV19LHt0eXBlOm1MfSx7dHlwZTp5VyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6VnJ9XX1dLHVPdC5wcm9wRGVjb3JhdG9ycz17ZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOlJffV0sbXVsdGlwbGU6W3t0eXBlOlJffV0sY29tcGFyZVdpdGg6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0sYXJpYU9yaWVudGF0aW9uOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1vcmllbnRhdGlvbiJdfV0sc2VsZWN0YWJsZTpbe3R5cGU6Ul99XSx0YWJJbmRleDpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0sY2hpcHM6W3t0eXBlOm9yLGFyZ3M6W3NPdCx7ZGVzY2VuZGFudHM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJtYXQtY2hpcC1saXN0Iix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LWNoaXAtbGlzdC13cmFwcGVyIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+JyxleHBvcnRBczoibWF0Q2hpcExpc3QiLGhvc3Q6eyJbYXR0ci50YWJpbmRleF0iOiJkaXNhYmxlZCA/IG51bGwgOiBfdGFiSW5kZXgiLCJbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSI6Il9hcmlhRGVzY3JpYmVkYnkgfHwgbnVsbCIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoicm9sZSA/IHJlcXVpcmVkIDogbnVsbCIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdIjoibXVsdGlwbGUiLCJbYXR0ci5yb2xlXSI6InJvbGUiLCJbY2xhc3MubWF0LWNoaXAtbGlzdC1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtY2hpcC1saXN0LWludmFsaWRdIjoiZXJyb3JTdGF0ZSIsIltjbGFzcy5tYXQtY2hpcC1saXN0LXJlcXVpcmVkXSI6InJlcXVpcmVkIiwiW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0iOiJhcmlhT3JpZW50YXRpb24iLGNsYXNzOiJtYXQtY2hpcC1saXN0IiwiKGZvY3VzKSI6ImZvY3VzKCkiLCIoYmx1cikiOiJfYmx1cigpIiwiKGtleWRvd24pIjoiX2tleWRvd24oJGV2ZW50KSIsIltpZF0iOiJfdWlkIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpmaix1c2VFeGlzdGluZzp1T3R9XSxlbmNhcHN1bGF0aW9uOlduLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxzdHlsZXM6WycubWF0LWNoaXB7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7ZGlzcGxheTppbmxpbmUtZmxleDtwYWRkaW5nOjdweCAxMnB4O2JvcmRlci1yYWRpdXM6MTZweDthbGlnbi1pdGVtczpjZW50ZXI7Y3Vyc29yOmRlZmF1bHQ7bWluLWhlaWdodDozMnB4O2hlaWdodDoxcHh9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1zdGFuZGFyZC1jaGlwe3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czppbmhlcml0O29wYWNpdHk6MDtjb250ZW50OiIiO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXN0YW5kYXJkLWNoaXA6aG92ZXI6OmFmdGVye29wYWNpdHk6LjEyfS5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3VzOjphZnRlcntvcGFjaXR5Oi4xNn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHh9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkOjphZnRlcntvcGFjaXR5OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue2N1cnNvcjpkZWZhdWx0fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXIsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDowfVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb257cGFkZGluZy10b3A6N3B4O3BhZGRpbmctYm90dG9tOjdweDtwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MTJweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MTJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDo0cHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6NHB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2N1cnNvcjpwb2ludGVyfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLFtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDowfS5tYXQtY2hpcC1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVufS5tYXQtY2hpcC1saXN0LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOi00cHh9Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlciBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWNoaXAtbGlzdC13cmFwcGVyIC5tYXQtc3RhbmRhcmQtY2hpcHttYXJnaW46NHB4fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0ubWF0LWNoaXAtbGlzdC1zdGFja2VkIC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe3dpZHRoOjEwMCV9Lm1hdC1jaGlwLWF2YXRhcntib3JkZXItcmFkaXVzOjUwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO29iamVjdC1maXQ6Y292ZXJ9aW5wdXQubWF0LWNoaXAtaW5wdXR7d2lkdGg6MTUwcHg7bWFyZ2luOjRweDtmbGV4OjEgMCAxNTBweH1cbiddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOk9ifSx7dHlwZTpBRixkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTphRyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTp3RyxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfSx7dHlwZTptTH0se3R5cGU6eVcsZGVjb3JhdG9yczpbe3R5cGU6QnJ9LHt0eXBlOlZyfV19XX0pLHthcmlhT3JpZW50YXRpb246W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLW9yaWVudGF0aW9uIl19XSxjaGFuZ2U6W3t0eXBlOkVffV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkVffV0sbXVsdGlwbGU6W3t0eXBlOlJffV0sY29tcGFyZVdpdGg6W3t0eXBlOlJffV0sdmFsdWU6W3t0eXBlOlJffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV0sc2VsZWN0YWJsZTpbe3R5cGU6Ul99XSx0YWJJbmRleDpbe3R5cGU6Ul99XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Ul99XSxjaGlwczpbe3R5cGU6b3IsYXJnczpbc090LHtkZXNjZW5kYW50czohMH1dfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBmT3Q9MDtjbGFzcyBnT3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZGVmYXVsdE9wdGlvbnM9ZSx0aGlzLmZvY3VzZWQ9ITEsdGhpcy5fYWRkT25CbHVyPSExLHRoaXMuc2VwYXJhdG9yS2V5Q29kZXM9dGhpcy5fZGVmYXVsdE9wdGlvbnMuc2VwYXJhdG9yS2V5Q29kZXMsdGhpcy5jaGlwRW5kPW5ldyBTeSx0aGlzLnBsYWNlaG9sZGVyPSIiLHRoaXMuaWQ9Im1hdC1jaGlwLWxpc3QtaW5wdXQtIitmT3QrKyx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLmlucHV0RWxlbWVudD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9c2V0IGNoaXBMaXN0KHQpe3QmJih0aGlzLl9jaGlwTGlzdD10LHRoaXMuX2NoaXBMaXN0LnJlZ2lzdGVySW5wdXQodGhpcykpfWdldCBhZGRPbkJsdXIoKXtyZXR1cm4gdGhpcy5fYWRkT25CbHVyfXNldCBhZGRPbkJsdXIodCl7dGhpcy5fYWRkT25CbHVyPXBIKHQpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZHx8dGhpcy5fY2hpcExpc3QmJnRoaXMuX2NoaXBMaXN0LmRpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1wSCh0KX1nZXQgZW1wdHkoKXtyZXR1cm4hdGhpcy5pbnB1dEVsZW1lbnQudmFsdWV9bmdPbkNoYW5nZXMoKXt0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5jaGlwRW5kLmNvbXBsZXRlKCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlPXRoaXMuZW1wdHl9X2tleWRvd24odCl7aWYodCl7aWYoOSE9PXQua2V5Q29kZXx8ZEgodCwic2hpZnRLZXkiKXx8dGhpcy5fY2hpcExpc3QuX2FsbG93Rm9jdXNFc2NhcGUoKSw4PT09dC5rZXlDb2RlJiZ0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2UpcmV0dXJuIHRoaXMuX2NoaXBMaXN0Ll9rZXlNYW5hZ2VyLnNldExhc3RJdGVtQWN0aXZlKCksdm9pZCB0LnByZXZlbnREZWZhdWx0KCk7dGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlPSExfXRoaXMuX2VtaXRDaGlwRW5kKHQpfV9rZXl1cCh0KXshdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlJiY4PT09dC5rZXlDb2RlJiZ0aGlzLmVtcHR5JiYodGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlPSEwLHQucHJldmVudERlZmF1bHQoKSl9X2JsdXIoKXt0aGlzLmFkZE9uQmx1ciYmdGhpcy5fZW1pdENoaXBFbmQoKSx0aGlzLmZvY3VzZWQ9ITEsdGhpcy5fY2hpcExpc3QuZm9jdXNlZHx8dGhpcy5fY2hpcExpc3QuX2JsdXIoKSx0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpfV9mb2N1cygpe3RoaXMuZm9jdXNlZD0hMCx0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9dGhpcy5lbXB0eSx0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpfV9lbWl0Q2hpcEVuZCh0KXshdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUmJnQmJnRoaXMuX2NoaXBMaXN0Ll9rZXlkb3duKHQpLHQmJiF0aGlzLl9pc1NlcGFyYXRvcktleSh0KXx8KHRoaXMuY2hpcEVuZC5lbWl0KHtpbnB1dDp0aGlzLmlucHV0RWxlbWVudCx2YWx1ZTp0aGlzLmlucHV0RWxlbWVudC52YWx1ZSxjaGlwSW5wdXQ6dGhpc30pLG51bGw9PXR8fHQucHJldmVudERlZmF1bHQoKSl9X29uSW5wdXQoKXt0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpfWZvY3VzKHQpe3RoaXMuaW5wdXRFbGVtZW50LmZvY3VzKHQpfWNsZWFyKCl7dGhpcy5pbnB1dEVsZW1lbnQudmFsdWU9IiIsdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlPSEwfV9pc1NlcGFyYXRvcktleSh0KXtyZXR1cm4hZEgodCkmJm5ldyBTZXQodGhpcy5zZXBhcmF0b3JLZXlDb2RlcykuaGFzKHQua2V5Q29kZSl9fWdPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z090KShmdShLaCksZnUoY090KSl9LGdPdC7JtWRpcj1obyh7dHlwZTpnT3Qsc2VsZWN0b3JzOltbImlucHV0IiwibWF0Q2hpcElucHV0Rm9yIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWNoaXAtaW5wdXQiLCJtYXQtaW5wdXQtZWxlbWVudCJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fa2V5ZG93bihlKX0pKSgia2V5dXAiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9rZXl1cChlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fYmx1cigpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fZm9jdXMoKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uSW5wdXQoKX0pKSwyJmUmJihjZygiaWQiLG4uaWQpLHltKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCkoInBsYWNlaG9sZGVyIixuLnBsYWNlaG9sZGVyfHxudWxsKSgiYXJpYS1pbnZhbGlkIixuLl9jaGlwTGlzdCYmbi5fY2hpcExpc3QubmdDb250cm9sP24uX2NoaXBMaXN0Lm5nQ29udHJvbC5pbnZhbGlkOm51bGwpKCJhcmlhLXJlcXVpcmVkIixuLl9jaGlwTGlzdCYmbi5fY2hpcExpc3QucmVxdWlyZWR8fG51bGwpKX0saW5wdXRzOntzZXBhcmF0b3JLZXlDb2RlczpbIm1hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzIiwic2VwYXJhdG9yS2V5Q29kZXMiXSxwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLGlkOiJpZCIsY2hpcExpc3Q6WyJtYXRDaGlwSW5wdXRGb3IiLCJjaGlwTGlzdCJdLGFkZE9uQmx1cjpbIm1hdENoaXBJbnB1dEFkZE9uQmx1ciIsImFkZE9uQmx1ciJdLGRpc2FibGVkOiJkaXNhYmxlZCJ9LG91dHB1dHM6e2NoaXBFbmQ6Im1hdENoaXBJbnB1dFRva2VuRW5kIn0sZXhwb3J0QXM6WyJtYXRDaGlwSW5wdXQiLCJtYXRDaGlwSW5wdXRGb3IiXSxmZWF0dXJlczpbcW9dfSksZ090LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2h9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltjT3RdfV19XSxnT3QucHJvcERlY29yYXRvcnM9e2NoaXBMaXN0Olt7dHlwZTpSXyxhcmdzOlsibWF0Q2hpcElucHV0Rm9yIl19XSxhZGRPbkJsdXI6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRBZGRPbkJsdXIiXX1dLHNlcGFyYXRvcktleUNvZGVzOlt7dHlwZTpSXyxhcmdzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiXX1dLGNoaXBFbmQ6W3t0eXBlOkVfLGFyZ3M6WyJtYXRDaGlwSW5wdXRUb2tlbkVuZCJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sZGlzYWJsZWQ6W3t0eXBlOlJffV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ090LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W21hdENoaXBJbnB1dEZvcl0iLGV4cG9ydEFzOiJtYXRDaGlwSW5wdXQsIG1hdENoaXBJbnB1dEZvciIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwLWlucHV0IG1hdC1pbnB1dC1lbGVtZW50IiwiKGtleWRvd24pIjoiX2tleWRvd24oJGV2ZW50KSIsIihrZXl1cCkiOiJfa2V5dXAoJGV2ZW50KSIsIihibHVyKSI6Il9ibHVyKCkiLCIoZm9jdXMpIjoiX2ZvY3VzKCkiLCIoaW5wdXQpIjoiX29uSW5wdXQoKSIsIltpZF0iOiJpZCIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbYXR0ci5wbGFjZWhvbGRlcl0iOiJwbGFjZWhvbGRlciB8fCBudWxsIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6Il9jaGlwTGlzdCAmJiBfY2hpcExpc3QubmdDb250cm9sID8gX2NoaXBMaXN0Lm5nQ29udHJvbC5pbnZhbGlkIDogbnVsbCIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoiX2NoaXBMaXN0ICYmIF9jaGlwTGlzdC5yZXF1aXJlZCB8fCBudWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpLaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W2NPdF19XX1dfSkse3NlcGFyYXRvcktleUNvZGVzOlt7dHlwZTpSXyxhcmdzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiXX1dLGNoaXBFbmQ6W3t0eXBlOkVfLGFyZ3M6WyJtYXRDaGlwSW5wdXRUb2tlbkVuZCJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sY2hpcExpc3Q6W3t0eXBlOlJfLGFyZ3M6WyJtYXRDaGlwSW5wdXRGb3IiXX1dLGFkZE9uQmx1cjpbe3R5cGU6Ul8sYXJnczpbIm1hdENoaXBJbnB1dEFkZE9uQmx1ciJdfV0sZGlzYWJsZWQ6W3t0eXBlOlJffV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGhPdD1bdU90LHNPdCxnT3QsbE90LGFPdCxyT3RdLGJPdD17c2VwYXJhdG9yS2V5Q29kZXM6W2FIXX07Y2xhc3MgeU90e315T3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlPdCl9LHlPdC7JtW1vZD11byh7dHlwZTp5T3R9KSx5T3QuybVpbmo9RG4oe3Byb3ZpZGVyczpbbUwse3Byb3ZpZGU6Y090LHVzZVZhbHVlOmJPdH1dLGltcG9ydHM6W1tXRl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih5T3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltXRl0sZXhwb3J0czpoT3QsZGVjbGFyYXRpb25zOmhPdCxwcm92aWRlcnM6W21MLHtwcm92aWRlOmNPdCx1c2VWYWx1ZTpiT3R9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHlPdCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3VPdCxzT3QsZ090LGxPdCxhT3Qsck90XX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltXRl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdU90LHNPdCxnT3QsbE90LGFPdCxyT3RdfX0pO2NvbnN0IF9PdD1mdW5jdGlvbih0LGUpe3JldHVybnsiZW1iZWRkaW5nLXNlbGVjdGVkIjp0LCJlbWJlZGRpbmctdW5zZWxlY3RlZCI6ZX19O2Z1bmN0aW9uIENPdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsIm1hdC1pY29uIiw1KSxEdSgiY2xpY2siLChmdW5jdGlvbiBlKCl7UGkodCk7Y29uc3Qgbj1OdSgpO3JldHVybiBuLm9uU2VsZWN0LmVtaXQobi5tZXRyaWMpfSkpLEN1KCl9aWYoMiZ0KXtjb25zdCB0PU51KCk7aHUoIm5nQ2xhc3MiLGF5KDEsX090LHQuZW1iZWRkaW5nc01ldHJpYz09PXQubWV0cmljLHQuZW1iZWRkaW5nc01ldHJpYyE9PXQubWV0cmljKSl9fWNvbnN0IE1PdD1mdW5jdGlvbih0KXtyZXR1cm57d2lkdGg6dH19LHZPdD1mdW5jdGlvbih0KXtyZXR1cm57InZhbHVlLWludmFsaWQiOnR9fTtjbGFzcyB4T3R7Y29uc3RydWN0b3IoKXt0aGlzLm9uUmVtb3ZlPW5ldyBTeSx0aGlzLm9uU2VsZWN0PW5ldyBTeSx0aGlzLm9uRmlsdGVyQ2hhbmdlPW5ldyBTeSx0aGlzLmZvY3VzTWluPSExLHRoaXMuZm9jdXNNYXg9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW5nT25Jbml0KCl7dGhpcy5taW5Gb3JtQ29udHJvbD1uZXcgdEcodGhpcy5maWx0ZXJWYWx1ZXMubWluLFtXai5yZXF1aXJlZCxXai5taW4oLTEpLFdqLm1heCgxKSx0aGlzLm1pblZhbHVlVmFsaWRhdG9yLmJpbmQodGhpcyldKSx0aGlzLm1heEZvcm1Db250cm9sPW5ldyB0Ryh0aGlzLmZpbHRlclZhbHVlcy5tYXgsW1dqLnJlcXVpcmVkLFdqLm1pbigtMSksV2oubWF4KDEpLHRoaXMubWF4VmFsdWVWYWxpZGF0b3IuYmluZCh0aGlzKV0pLHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoVWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMubWluRm9ybUNvbnRyb2wudmFsaWQmJnRoaXMubWF4Rm9ybUNvbnRyb2wudmFsaWQmJnRoaXMub25GaWx0ZXJDaGFuZ2UuZW1pdCh7bWluOnBhcnNlRmxvYXQodGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZSksbWF4OnBhcnNlRmxvYXQodGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZSl9KX0pKSx0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFVlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLm1pbkZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm1heEZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm9uRmlsdGVyQ2hhbmdlLmVtaXQoe21pbjpwYXJzZUZsb2F0KHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWUpLG1heDpwYXJzZUZsb2F0KHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWUpfSl9KSl9bmdPbkNoYW5nZXModCl7dGhpcy5taW5Gb3JtQ29udHJvbCYmdGhpcy5tYXhGb3JtQ29udHJvbCYmKHRoaXMubWluRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5maWx0ZXJWYWx1ZXMubWluLHtlbWl0RXZlbnQ6ITF9KSx0aGlzLm1heEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZmlsdGVyVmFsdWVzLm1heCx7ZW1pdEV2ZW50OiExfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1taW5WYWx1ZVZhbGlkYXRvcih0KXtyZXR1cm4gdGhpcy5tYXhGb3JtQ29udHJvbCYmIk5hTiIhPT10LnZhbHVlP2lzTmFOKHBhcnNlRmxvYXQodC52YWx1ZSkpP3t2YWx1ZToidGhlIHN0cmluZyB5b3UgZW50ZXJlZCBpcyBuZWl0aGVyIE5hTiBub3IgYSBudW1iZXIifTpwYXJzZUZsb2F0KHQudmFsdWUpPnBhcnNlRmxvYXQodGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZSk/e3ZhbHVlOiJ0aGUgbnVtYmVyIHlvdSBlbnRlcmVkIGlzIGxhcmdlciB0aGFuIHRoZSBtYXggdmFsdWUifTpudWxsOm51bGx9bWF4VmFsdWVWYWxpZGF0b3IodCl7cmV0dXJuIHRoaXMubWluRm9ybUNvbnRyb2w/Ik5hTiI9PT10aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlJiYiTmFOIj09PXQudmFsdWU/bnVsbDppc05hTihwYXJzZUZsb2F0KHQudmFsdWUpKT97dmFsdWU6InRoZSBzdHJpbmcgeW91IGVudGVyZWQgaXMgbmVpdGhlciBOYU4gbm9yIGEgbnVtYmVyIn06dC52YWx1ZTx0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlP3t2YWx1ZToidGhlIG51bWJlciB5b3UgZW50ZXJlZCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1pbiB2YWx1ZSJ9Om51bGw6bnVsbH1nZXRFcnJvckRlc2NyaXB0aW9uKHQpe2lmKHQpe2NvbnN0IGU9T2JqZWN0LmtleXModClbMF07cmV0dXJuInJlcXVpcmVkIj09PWU/InlvdSBkaWQgbm90IGVudGVyIGFueXRoaW5nIjoibWluIj09PWU/InRoZSBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAtMS4wIjoibWF4Ij09PWU/InRoZSBudW1iZXIgaXMgYmlnZ2VyIHRoYW4gMS4wIjp0W2VdfXJldHVybiIifX14T3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhPdCl9LHhPdC7JtWNtcD1zbyh7dHlwZTp4T3Qsc2VsZWN0b3JzOltbIm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50Il1dLGlucHV0czp7bWV0cmljOiJtZXRyaWMiLGZpbHRlclZhbHVlczoiZmlsdGVyVmFsdWVzIixoYXNFbWJlZGRpbmdzRGF0YToiaGFzRW1iZWRkaW5nc0RhdGEiLGVtYmVkZGluZ3NNZXRyaWM6ImVtYmVkZGluZ3NNZXRyaWMifSxvdXRwdXRzOntvblJlbW92ZToib25SZW1vdmUiLG9uU2VsZWN0OiJvblNlbGVjdCIsb25GaWx0ZXJDaGFuZ2U6Im9uRmlsdGVyQ2hhbmdlIn0sZmVhdHVyZXM6W3FvXSxkZWNsczoxMCx2YXJzOjIyLGNvbnN0czpbWzEsImZpbHRlci1jaGlwIiwzLCJyZW1vdmVkIl0sWyJjbGFzcyIsImVtYmVkZGluZ3MtYnV0dG9uIiwic3ZnSWNvbiIsImdyb3VwX3dvcmtfMjRweCIsMywibmdDbGFzcyIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsIm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtcmFuZ2UiLDMsImtleWRvd24iXSxbIm1hdElucHV0IiwiIiwxLCJpbnB1dC1maWVsZCIsMywidmFsdWUiLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibmdTdHlsZSIsIm5nQ2xhc3MiLCJmb3JtQ29udHJvbCIsImZvY3VzIiwiZm9jdXNvdXQiXSxbIm1hdENoaXBSZW1vdmUiLCIiLCJzdmdJY29uIiwiY2FuY2VsXzI0cHgiXSxbInN2Z0ljb24iLCJncm91cF93b3JrXzI0cHgiLDEsImVtYmVkZGluZ3MtYnV0dG9uIiwzLCJuZ0NsYXNzIiwiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1hdC1jaGlwIiwwKSxEdSgicmVtb3ZlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlbW92ZS5lbWl0KG4ubWV0cmljKX0pKSxIbSgxLENPdCwxLDQsIm1hdC1pY29uIiwxKSxQZigyKSxfdSgzLCJkaXYiLDIpLER1KCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxQZig0LCIgWyAiKSxfdSg1LCJpbnB1dCIsMyksRHUoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZvY3VzTWluPSEwfSkpKCJmb2N1c291dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1c01pbj0hMX0pKSxDdSgpLFBmKDYsIiA7ICIpLF91KDcsImlucHV0IiwzKSxEdSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXNNYXg9ITB9KSkoImZvY3Vzb3V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZvY3VzTWF4PSExfSkpLEN1KCksUGYoOCwiIF0gIiksQ3UoKSxNdSg5LCJtYXQtaWNvbiIsNCksQ3UoKSksMiZlJiYoRGMoMSksaHUoIm5nSWYiLG4uaGFzRW1iZWRkaW5nc0RhdGEpLERjKDEpLGtmKCIgIixuLm1ldHJpYywiICIpLERjKDMpLGh1KCJ2YWx1ZSIsbi5maWx0ZXJWYWx1ZXMubWluKSgibWF0VG9vbHRpcCIsbi5nZXRFcnJvckRlc2NyaXB0aW9uKG4ubWluRm9ybUNvbnRyb2wuZXJyb3JzKSkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsIW4ubWluRm9ybUNvbnRyb2wuaW52YWxpZCkoIm5nU3R5bGUiLGl5KDE0LE1PdCxuLmZvY3VzTWluPyIxMDBweCI6bi5taW5Gb3JtQ29udHJvbC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCsiY2giKSkoIm5nQ2xhc3MiLGl5KDE2LHZPdCwhbi5taW5Gb3JtQ29udHJvbC52YWxpZCkpKCJmb3JtQ29udHJvbCIsbi5taW5Gb3JtQ29udHJvbCksRGMoMiksaHUoInZhbHVlIixuLmZpbHRlclZhbHVlcy5tYXgpKCJtYXRUb29sdGlwIixuLmdldEVycm9yRGVzY3JpcHRpb24obi5tYXhGb3JtQ29udHJvbC5lcnJvcnMpKSgibWF0VG9vbHRpcERpc2FibGVkIiwhbi5tYXhGb3JtQ29udHJvbC5pbnZhbGlkKSgibmdTdHlsZSIsaXkoMTgsTU90LG4uZm9jdXNNYXg/IjEwMHB4IjpuLm1heEZvcm1Db250cm9sLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKyJjaCIpKSgibmdDbGFzcyIsaXkoMjAsdk90LCFuLm1heEZvcm1Db250cm9sLnZhbGlkKSkoImZvcm1Db250cm9sIixuLm1heEZvcm1Db250cm9sKSl9LGRpcmVjdGl2ZXM6W3NPdCxQdixGaixYMCx6dixDdix2VyxPRyxFcSxsT3RdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZmlsdGVyLWNoaXBbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7bWFyZ2luLWxlZnQ6NXB4fS5tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2ZvbnQtc2l6ZTouOGVtO2hlaWdodDozMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bGluZS1oZWlnaHQ6MzBweDtwYWRkaW5nOjAgNXB4O21hcmdpbi1sZWZ0OjVweH0uaW5wdXQtZmllbGRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXI6bm9uZTtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEuMWVtO3RyYW5zaXRpb246d2lkdGggMXN9LmlucHV0LWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKTtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmV9LnZhbHVlLWludmFsaWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9LmVtYmVkZGluZy1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMDtvcGFjaXR5OjF9LmVtYmVkZGluZy11bnNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5lbWJlZGRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MThweDtoZWlnaHQ6MThweDttYXJnaW4tcmlnaHQ6OHB4O2N1cnNvcjpwb2ludGVyfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4T3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21ldHJpY19hcml0aG1ldGljX2VsZW1lbnRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWV0cmljX2FyaXRobWV0aWNfZWxlbWVudF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7bWV0cmljOlt7dHlwZTpSX31dLGZpbHRlclZhbHVlczpbe3R5cGU6Ul99XSxoYXNFbWJlZGRpbmdzRGF0YTpbe3R5cGU6Ul99XSxlbWJlZGRpbmdzTWV0cmljOlt7dHlwZTpSX31dLG9uUmVtb3ZlOlt7dHlwZTpFX31dLG9uU2VsZWN0Olt7dHlwZTpFX31dLG9uRmlsdGVyQ2hhbmdlOlt7dHlwZTpFX31dfSk7Y2xhc3MgT090e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZpbHRlclZhbHVlcyQ9dGhpcy5zdG9yZS5waXBlKHJTKEV4dCkpLnBpcGUoVnQoKHQ9Pntjb25zdCBlPXRbdGhpcy5tZXRyaWNdO2lmKCFlKXJldHVybnttaW46LTEsbWF4OjF9O3JldHVybnttaW46ZS5pbmNsdWRlTmFOPyJOYU4iOnRoaXMucm91bmRUb1RocmVlRGVjaW1hbFBvaW50cyhlLm1pbiksbWF4OmUubWF4PGUubWluPyJOYU4iOnRoaXMucm91bmRUb1RocmVlRGVjaW1hbFBvaW50cyhlLm1heCl9fSkpKSx0aGlzLmhhc0VtYmVkZGluZ3NEYXRhJD10aGlzLnN0b3JlLnBpcGUoclMoT3h0KSkucGlwZShWdCgodD0+dm9pZCAwIT09dCkpKSx0aGlzLmVtYmVkZGluZ3NNZXRyaWMkPXRoaXMuc3RvcmUucGlwZShyUyhCeHQpKX1yZW1vdmUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChleHQoe21ldHJpYzp0fSkpfXNlbGVjdCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGR4dCh7bWV0cmljOnR9KSl9ZmlsdGVyQ2hhbmdlKHQpe2NvbnN0IGU9aXNOYU4odC5taW4pPy0xOnQubWluLG49aXNOYU4odC5tYXgpPy0yOnQubWF4LG89aXNOYU4odC5taW4pO3RoaXMuc3RvcmUuZGlzcGF0Y2gobnh0KHttZXRyaWM6dGhpcy5tZXRyaWMsbWF4Om4sbWluOmUsaW5jbHVkZU5hTjpvfSkpfXJvdW5kVG9UaHJlZURlY2ltYWxQb2ludHModCl7cmV0dXJuIE1hdGgucm91bmQoMWUzKih0K051bWJlci5FUFNJTE9OKSkvMWUzfX1PT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9PdCkoZnUoaVMpKX0sT090Lsm1Y21wPXNvKHt0eXBlOk9PdCxzZWxlY3RvcnM6W1sibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50Il1dLGlucHV0czp7bWV0cmljOiJtZXRyaWMifSxkZWNsczo0LHZhcnM6MTAsY29uc3RzOltbMywibWV0cmljIiwiZmlsdGVyVmFsdWVzIiwiaGFzRW1iZWRkaW5nc0RhdGEiLCJlbWJlZGRpbmdzTWV0cmljIiwib25SZW1vdmUiLCJvblNlbGVjdCIsIm9uRmlsdGVyQ2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudCIsMCksRHUoIm9uUmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yZW1vdmUoZSl9KSkoIm9uU2VsZWN0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zZWxlY3QoZSl9KSkoIm9uRmlsdGVyQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5maWx0ZXJDaGFuZ2UoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksQ3UoKSksMiZlJiZodSgibWV0cmljIixuLm1ldHJpYykoImZpbHRlclZhbHVlcyIsQ3koMSw0LG4uZmlsdGVyVmFsdWVzJCkpKCJoYXNFbWJlZGRpbmdzRGF0YSIsQ3koMiw2LG4uaGFzRW1iZWRkaW5nc0RhdGEkKSkoImVtYmVkZGluZ3NNZXRyaWMiLEN5KDMsOCxuLmVtYmVkZGluZ3NNZXRyaWMkKSl9LGRpcmVjdGl2ZXM6W3hPdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKE9PdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnRcbiAgICAgIFttZXRyaWNdPSJtZXRyaWMiXG4gICAgICBbZmlsdGVyVmFsdWVzXT0iZmlsdGVyVmFsdWVzJCB8IGFzeW5jIlxuICAgICAgW2hhc0VtYmVkZGluZ3NEYXRhXT0iaGFzRW1iZWRkaW5nc0RhdGEkIHwgYXN5bmMiXG4gICAgICBbZW1iZWRkaW5nc01ldHJpY109ImVtYmVkZGluZ3NNZXRyaWMkIHwgYXN5bmMiXG4gICAgICAob25SZW1vdmUpPSJyZW1vdmUoJGV2ZW50KSJcbiAgICAgIChvblNlbGVjdCk9InNlbGVjdCgkZXZlbnQpIlxuICAgICAgKG9uRmlsdGVyQ2hhbmdlKT0iZmlsdGVyQ2hhbmdlKCRldmVudCkiXG4gICAgPjwvbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7bWV0cmljOlt7dHlwZTpSX31dfSk7Y2xhc3MgUE90e2NvbnN0cnVjdG9yKCl7dGhpcy5PcGVyYXRvcj1oeHR9fWZ1bmN0aW9uIHdPdCh0LGUpe2lmKDEmdCYmTXUoMCwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50Iiw0KSwyJnQpe2h1KCJtZXRyaWMiLE51KCkuJGltcGxpY2l0Lm1ldHJpYyl9fWZ1bmN0aW9uIGtPdCh0LGUpe2lmKDEmdCYmTXUoMCwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1vcGVyYXRvciIsNSksMiZ0KXtodSgib3BlcmF0b3IiLE51KCkuJGltcGxpY2l0Lm9wZXJhdG9yKX19ZnVuY3Rpb24gU090KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2IiksSG0oMSx3T3QsMSwxLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiLDIpLEhtKDIsa090LDEsMSwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1vcGVyYXRvciIsMyksQ3UoKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49TnUoKTtEYygxKSxodSgibmdJZiIsdC5raW5kPT09bi5Bcml0aG1ldGljS2luZC5NRVRSSUMpLERjKDEpLGh1KCJuZ0lmIix0LmtpbmQ9PT1uLkFyaXRobWV0aWNLaW5kLk9QRVJBVE9SKX19UE90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQT3QpfSxQT3QuybVjbXA9c28oe3R5cGU6UE90LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIl1dLGlucHV0czp7b3BlcmF0b3I6Im9wZXJhdG9yIn0sZGVjbHM6Mix2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm1hdC1jaGlwIiksUGYoMSksQ3UoKSksMiZlJiYoRGMoMSksa2YoIiAiLG4ub3BlcmF0b3I9PT1uLk9wZXJhdG9yLkFORD8iJiI6IiIsIiAiKSl9LGRpcmVjdGl2ZXM6W3NPdF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1vcGVyYXRvciIsdGVtcGxhdGU6IlxuICAgIDxtYXQtY2hpcD5cbiAgICAgIHt7IG9wZXJhdG9yID09PSBPcGVyYXRvci5BTkQgPyAnJicgOiAnJyB9fVxuICAgIDwvbWF0LWNoaXA+XG4gICIsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7b3BlcmF0b3I6W3t0eXBlOlJffV19KTtjbGFzcyBET3R7Y29uc3RydWN0b3IoKXt0aGlzLkFyaXRobWV0aWNLaW5kPWJ4dH19RE90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxET3QpfSxET3QuybVjbXA9c28oe3R5cGU6RE90LHNlbGVjdG9yczpbWyJtZXRyaWMtYXJpdGhtZXRpYy1jb21wb25lbnQiXV0saW5wdXRzOnttZXRyaWNBcml0aG1ldGljOiJtZXRyaWNBcml0aG1ldGljIn0sZGVjbHM6Mix2YXJzOjIsY29uc3RzOltbMywic2VsZWN0YWJsZSJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywibWV0cmljIiw0LCJuZ0lmIl0sWzMsIm9wZXJhdG9yIiw0LCJuZ0lmIl0sWzMsIm1ldHJpYyJdLFszLCJvcGVyYXRvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwibWF0LWNoaXAtbGlzdCIsMCksSG0oMSxTT3QsMywyLCJkaXYiLDEpLEN1KCkpLDImZSYmKGh1KCJzZWxlY3RhYmxlIiwhMSksRGMoMSksaHUoIm5nRm9yT2YiLG4ubWV0cmljQXJpdGhtZXRpYykpfSxkaXJlY3RpdmVzOlt1T3QseHYsUHYsT090LFBPdF0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoRE90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vbWV0cmljX2FyaXRobWV0aWNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWV0cmljX2FyaXRobWV0aWNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse21ldHJpY0FyaXRobWV0aWM6W3t0eXBlOlJffV19KTtjbGFzcyBST3R7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMubWV0cmljQXJpdGhtZXRpYyQ9dGhpcy5zdG9yZS5waXBlKHJTKFJ4dCkpfX1ST3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJPdCkoZnUoaVMpKX0sUk90Lsm1Y21wPXNvKHt0eXBlOlJPdCxzZWxlY3RvcnM6W1sibnBtaS1tZXRyaWMtYXJpdGhtZXRpYyJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJtZXRyaWNBcml0aG1ldGljIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihNdSgwLCJtZXRyaWMtYXJpdGhtZXRpYy1jb21wb25lbnQiLDApLF95KDEsImFzeW5jIikpLDImZSYmaHUoIm1ldHJpY0FyaXRobWV0aWMiLEN5KDEsMSxuLm1ldHJpY0FyaXRobWV0aWMkKSl9LGRpcmVjdGl2ZXM6W0RPdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFJPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1hcml0aG1ldGljIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudFxuICAgICAgW21ldHJpY0FyaXRobWV0aWNdPSJtZXRyaWNBcml0aG1ldGljJCB8IGFzeW5jIlxuICAgID48L21ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIEVPdHt9ZnVuY3Rpb24gQU90KHQsZSxuLG8saSxhKXtjb25zdCByPXt9LHM9bmV3IFNldChlKSxsPW5ldyBTZXQoaS5tYXAoKHQ9PnBDdCh0KSkpKSxjPW5ldyBSZWdFeHAoYSwiaSIpO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKCh0PT57aWYoIWMudGVzdCh0WzBdKSlyZXR1cm47bGV0IGU9dFsxXTtlPWUuZmlsdGVyKCh0PT5zLmhhcyh0LnJ1bikmJmwuaGFzKHQubWV0cmljKSkpLChmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdC5ldmVyeSgodD0+e2lmKHQua2luZD09PWJ4dC5PUEVSQVRPUilyZXR1cm4hMDtjb25zdCBvPWVbdC5tZXRyaWNdO3JldHVybiB2b2lkIDA9PT1vfHxuLnNvbWUoKGU9PmUubWV0cmljPT09cEN0KHQubWV0cmljKSYmKG51bGw9PT1lLm5QTUlWYWx1ZT9vLmluY2x1ZGVOYU46ZS5uUE1JVmFsdWU8PW8ubWF4JiZlLm5QTUlWYWx1ZT49by5taW4pKSl9KSl9KShuLG8sZSkmJjAhPT1lLmxlbmd0aCYmKHJbdFswXV09ZSl9KSkscn1mdW5jdGlvbiBUT3QodCxlLG4pe2lmKG4pcmV0dXJuIHQ7Y29uc3Qgbz1PYmplY3QuYXNzaWduKHt9LHQpO3JldHVybiBlLmZvckVhY2goKHQ9PmRlbGV0ZSBvW3RdKSksb31FT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVPdCl9LEVPdC7JtWNtcD1zbyh7dHlwZTpFT3Qsc2VsZWN0b3JzOltbIm5wbWktZGF0YS1zZWxlY3Rpb24iXV0sZGVjbHM6NCx2YXJzOjAsY29uc3RzOltbMSwiZGF0YS1zZWxlY3Rpb24iXSxbMSwibWV0cmljcy1zZWxlY3RvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxNdSgxLCJucG1pLW1ldHJpYy1zZWFyY2giLDEpLE11KDIsIm5wbWktcmVzdWx0cy1kb3dubG9hZCIpLEN1KCksTXUoMywibnBtaS1tZXRyaWMtYXJpdGhtZXRpYyIpKX0sZGlyZWN0aXZlczpbS3h0LHRPdCxST3RdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtwYWRkaW5nOjEwcHggMjBweH0uZGF0YS1zZWxlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Lm1ldHJpY3Mtc2VsZWN0b3JbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihFT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1kYXRhLXNlbGVjdGlvbiIsdGVtcGxhdGVVcmw6Ii4vZGF0YV9zZWxlY3Rpb25fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZGF0YV9zZWxlY3Rpb25fY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwsbnVsbCk7Y29uc3QgTk90PVsiY2hhcnQiXTtjbGFzcyB6T3R7Y29uc3RydWN0b3IoKXt0aGlzLm9uUmVtb3ZlPW5ldyBTeSx0aGlzLm9uVXBkYXRlRmlsdGVyPW5ldyBTeSx0aGlzLmhlaWdodD0zMDAsdGhpcy5jaGFydFdpZHRoPTAsdGhpcy5jaGFydEhlaWdodD0wLHRoaXMuZHJhd0hlaWdodD0wLHRoaXMuZHJhd1dpZHRoPTAsdGhpcy5tYXJnaW49e3RvcDoyMCxyaWdodDoxMCxib3R0b206MjAsbGVmdDoxMH0sdGhpcy5kcmF3TWFyZ2luPXt0b3A6MCxyaWdodDowLGJvdHRvbToyMCxsZWZ0OjIwfSx0aGlzLmJydXNoPXpudCgpLHRoaXMubWF4QmluU2l6ZT0wLHRoaXMuYXJlYT0oZnVuY3Rpb24gdCgpe3ZhciB0PW9ydCxlPW51bGwsbj10cnQoMCksbz1pcnQsaT10cnQoITApLGE9bnVsbCxyPW5ydCxzPW51bGw7ZnVuY3Rpb24gbChsKXt2YXIgYyxkLHAsbSx1LGY9bC5sZW5ndGgsZz0hMSxoPW5ldyBBcnJheShmKSxiPW5ldyBBcnJheShmKTtmb3IobnVsbD09YSYmKHM9cih1PVZudCgpKSksYz0wO2M8PWY7KytjKXtpZighKGM8ZiYmaShtPWxbY10sYyxsKSk9PT1nKWlmKGc9IWcpZD1jLHMuYXJlYVN0YXJ0KCkscy5saW5lU3RhcnQoKTtlbHNle2ZvcihzLmxpbmVFbmQoKSxzLmxpbmVTdGFydCgpLHA9Yy0xO3A+PWQ7LS1wKXMucG9pbnQoaFtwXSxiW3BdKTtzLmxpbmVFbmQoKSxzLmFyZWFFbmQoKX1nJiYoaFtjXT0rdChtLGMsbCksYltjXT0rbihtLGMsbCkscy5wb2ludChlPytlKG0sYyxsKTpoW2NdLG8/K28obSxjLGwpOmJbY10pKX1pZih1KXJldHVybiBzPW51bGwsdSsiInx8bnVsbH1mdW5jdGlvbiBjKCl7cmV0dXJuIGFydCgpLmRlZmluZWQoaSkuY3VydmUocikuY29udGV4dChhKX1yZXR1cm4gbC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dHJ0KCtuKSxlPW51bGwsbCk6dH0sbC54MD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnRydCgrZSksbCk6dH0sbC54MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0cnQoK3QpLGwpOmV9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnRydCgrdCksbz1udWxsLGwpOm59LGwueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0cnQoK3QpLGwpOm59LGwueTE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dHJ0KCt0KSxsKTpvfSxsLmxpbmVYMD1sLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KG4pfSxsLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KG8pfSxsLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KG4pfSxsLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0cnQoISF0KSxsKTppfSxsLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbnVsbCE9YSYmKHM9cihhKSksbCk6cn0sbC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2E9cz1udWxsOnM9cihhPXQpLGwpOmF9LGx9KSgpLngwKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZU51bSgtdC5sZW5ndGgpfS5iaW5kKHRoaXMpKS54MShmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGVOdW0odC5sZW5ndGgpfS5iaW5kKHRoaXMpKS55KGZ1bmN0aW9uKHQpe3JldHVybiB0LngwPT09LTEvMD90aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3A6dGhpcy55U2NhbGUoKHQueDErdC54MCkvMil9LmJpbmQodGhpcykpLmN1cnZlKGNydCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy51cGRhdGVEaW1lbnNpb25zKCksdGhpcy5zdmc9djgodGhpcy5jaGFydENvbnRhaW5lci5uYXRpdmVFbGVtZW50KS5zZWxlY3QoInN2ZyIpLHRoaXMubWFpbkNvbnRhaW5lcj10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLm1hcmdpbi5sZWZ0fSwgJHt0aGlzLm1hcmdpbi50b3B9KWApLHRoaXMuZHJhd0NvbnRhaW5lcj10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5kcmF3TWFyZ2luLmxlZnR9LCAke3RoaXMuZHJhd01hcmdpbi50b3B9KWApLHRoaXMuZG90c0dyb3VwPXRoaXMuZHJhd0NvbnRhaW5lci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImRvdHNHcm91cCIpLHRoaXMueUF4aXNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJheGlzIGF4aXMtLXkiKSx0aGlzLnhBeGlzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYXhpcyBheGlzLS14IiksdGhpcy5taXNjR3JvdXA9dGhpcy5kcmF3Q29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMueFNjYWxlPWJvdCgpLnBhZGRpbmcoLjA1KSx0aGlzLnhBeGlzPXI3KHRoaXMueFNjYWxlKSx0aGlzLnlTY2FsZT1Bb3QoKS5yYW5nZShbdGhpcy5kcmF3SGVpZ2h0LDBdKSx0aGlzLnlBeGlzPShmdW5jdGlvbiB0KGUpe3JldHVybiBpNyg0LGUpfSkodGhpcy55U2NhbGUpLHRoaXMueFNjYWxlTnVtPUFvdCgpLHRoaXMuaW5pdGlhbGl6ZUJydXNoKCksdGhpcy5kcmF3TWlzYygpLHRoaXMucmVkcmF3KCl9bmdPbkNoYW5nZXModCl7dGhpcy5zdmcmJnRoaXMucmVkcmF3KCl9cmVkcmF3KCl7dGhpcy51cGRhdGVEaW1lbnNpb25zKCksdGhpcy5zZXRNYXhCaW5TaXplKCksdGhpcy51cGRhdGVBeGVzKCksdGhpcy5kcmF3KCl9dXBkYXRlRGltZW5zaW9ucygpe3RoaXMuY2hhcnRXaWR0aD10aGlzLndpZHRoLXRoaXMubWFyZ2luLmxlZnQtdGhpcy5tYXJnaW4ucmlnaHQsdGhpcy5kcmF3V2lkdGg9dGhpcy5jaGFydFdpZHRoLXRoaXMuZHJhd01hcmdpbi5sZWZ0LXRoaXMuZHJhd01hcmdpbi5yaWdodCx0aGlzLmNoYXJ0SGVpZ2h0PXRoaXMuaGVpZ2h0LXRoaXMubWFyZ2luLnRvcC10aGlzLm1hcmdpbi5ib3R0b20sdGhpcy5kcmF3SGVpZ2h0PXRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcC10aGlzLmRyYXdNYXJnaW4uYm90dG9tfXNldE1heEJpblNpemUoKXtPYmplY3QudmFsdWVzKHRoaXMuY2hhcnREYXRhLnZpb2xpbkRhdGEpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQubWFwKCh0PT50Lmxlbmd0aCkpLG49TWF0aC5tYXgoLi4uZSk7dGhpcy5tYXhCaW5TaXplPU1hdGgubWF4KG4sdGhpcy5tYXhCaW5TaXplKX0pKX11cGRhdGVBeGVzKCl7dGhpcy54U2NhbGUucmFuZ2UoWzAsdGhpcy5kcmF3V2lkdGhdKS5kb21haW4oT2JqZWN0LmtleXModGhpcy5jaGFydERhdGEudmlvbGluRGF0YSkpLHRoaXMueVNjYWxlLmRvbWFpbihbdGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWluLHRoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1heF0pLHRoaXMueFNjYWxlTnVtLnJhbmdlKFswLHRoaXMueFNjYWxlLmJhbmR3aWR0aCgpXSkuZG9tYWluKFstdGhpcy5tYXhCaW5TaXplLHRoaXMubWF4QmluU2l6ZV0pfWluaXRpYWxpemVCcnVzaCgpe3RoaXMuYnJ1c2gub24oImVuZCIsdGhpcy5icnVzaE1vdmVkLmJpbmQodGhpcykpfWRyYXcoKXt0aGlzLmRyYXdBeGVzKCksdGhpcy5kcmF3UGxvdCgpLHRoaXMucmVmcmVzaE1pc2MoKSx0aGlzLnJlZnJlc2hCcnVzaCgpfWRyYXdBeGVzKCl7dGhpcy55QXhpc0dyb3VwLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMuZHJhd01hcmdpbi5sZWZ0fSxcbiAgICAgICR7dGhpcy5kcmF3TWFyZ2luLnRvcH0pYCkuY2FsbCh0aGlzLnlBeGlzKSx0aGlzLnhBeGlzR3JvdXAuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5kcmF3TWFyZ2luLmxlZnR9LFxuICAgICAgJHt0aGlzLmRyYXdNYXJnaW4udG9wK3RoaXMuY2hhcnRIZWlnaHR9KWApLmNhbGwodGhpcy54QXhpcyl9ZHJhd1Bsb3QoKXtjb25zdCB0PXRoaXMuZG90c0dyb3VwLnNlbGVjdEFsbCgiLnZpb2xpbi1wbG90IikuZGF0YShPYmplY3QuZW50cmllcyh0aGlzLmNoYXJ0RGF0YS52aW9saW5EYXRhKSk7dC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwidmlvbGluLXBsb3QiKS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb2xvclNjYWxlKHRbMF0pfS5iaW5kKHRoaXMpKS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuYCR7dGhpcy5jb2xvclNjYWxlKHRbMF0pfTMzYH0uYmluZCh0aGlzKSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm5gdHJhbnNsYXRlKCR7dGhpcy54U2NhbGUodFswXSl9LCAwKWB9LmJpbmQodGhpcykpLmRhdHVtKChmdW5jdGlvbih0KXtyZXR1cm4gdFsxXX0pKS5hdHRyKCJkIix0aGlzLmFyZWEpLHQuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm5gdHJhbnNsYXRlKCR7dGhpcy54U2NhbGUodFswXSl9LCAwKWB9LmJpbmQodGhpcykpLmRhdHVtKChmdW5jdGlvbih0KXtyZXR1cm4gdFsxXX0pKS5hdHRyKCJkIix0aGlzLmFyZWEpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdNaXNjKCl7dGhpcy56ZXJvTGluZT10aGlzLm1pc2NHcm91cC5hcHBlbmQoImxpbmUiKS5zdHlsZSgic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLHRoaXMueVNjYWxlKDApKS5hdHRyKCJ4MiIsdGhpcy5kcmF3V2lkdGgpLmF0dHIoInkyIix0aGlzLnlTY2FsZSgwKSksdGhpcy5uYW5UZXh0PXRoaXMubWlzY0dyb3VwLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJmaWxsIiwiYmxhY2siKS50ZXh0KCJOYU4iKS5hdHRyKCJmb250LXNpemUiLCIxMHB4IikuYXR0cigidGV4dC1hbmNob3IiLCJlbmQiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJ4IiwtNSkuYXR0cigieSIsdGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wKSx0aGlzLm5hbkxpbmU9dGhpcy5taXNjR3JvdXAuYXBwZW5kKCJsaW5lIikuc3R5bGUoInN0cm9rZSIsImdyZXkiKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjMsIDMiKS5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wKX1yZWZyZXNoTWlzYygpe3RoaXMuemVyb0xpbmUuYXR0cigieTEiLHRoaXMueVNjYWxlKDApKS5hdHRyKCJ4MiIsdGhpcy5kcmF3V2lkdGgpLmF0dHIoInkyIix0aGlzLnlTY2FsZSgwKSksdGhpcy5uYW5UZXh0LmF0dHIoInkiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCksdGhpcy5uYW5MaW5lLmF0dHIoInkxIix0aGlzLmRyYXdIZWlnaHQrdGhpcy5kcmF3TWFyZ2luLnRvcCkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy5kcmF3SGVpZ2h0K3RoaXMuZHJhd01hcmdpbi50b3ApfXJlZnJlc2hCcnVzaCgpe3RoaXMuYnJ1c2guZXh0ZW50KFtbMCwwXSxbdGhpcy5kcmF3V2lkdGgsdGhpcy5kcmF3SGVpZ2h0K3RoaXMubWFyZ2luLnRvcF1dKTtjb25zdCB0PVswLHRoaXMuZHJhd0hlaWdodCt0aGlzLm1hcmdpbi50b3BdO2lmKHRoaXMuZmlsdGVyLm1heDx0aGlzLmZpbHRlci5taW4pdFswXT10aGlzLmZpbHRlci5pbmNsdWRlTmFOP3RoaXMueVNjYWxlKHRoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1pbik6dFsxXTtlbHNle2lmKCF0aGlzLmZpbHRlci5pbmNsdWRlTmFOKXtjb25zdCBlPU1hdGgubWF4KHRoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1pbix0aGlzLmZpbHRlci5taW4pO3RbMV09dGhpcy55U2NhbGUoZSl9Y29uc3QgZT1NYXRoLm1pbih0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5tYXgsdGhpcy5maWx0ZXIubWF4KTt0WzBdPXRoaXMueVNjYWxlKGUpfXRoaXMuZHJhd0NvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gpLmNhbGwodGhpcy5icnVzaC5tb3ZlLHQpfWJydXNoTW92ZWQoKXtpZighZDgpcmV0dXJuO2lmKCFkOC5zb3VyY2VFdmVudClyZXR1cm47Y29uc3QgdD1kOC5zZWxlY3Rpb247aWYodCl7bGV0IGU9ITEsbj0tMixvPXRoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1pbjt0WzBdPD10aGlzLmRyYXdIZWlnaHQrdGhpcy5tYXJnaW4udG9wJiZ0WzFdPj10aGlzLmRyYXdIZWlnaHQmJihlPSEwKSx0WzBdPHRoaXMuZHJhd0hlaWdodCYmKG49dGhpcy55U2NhbGUuaW52ZXJ0KHRbMF0pKSx0WzFdPHRoaXMuZHJhd0hlaWdodCYmKG89dGhpcy55U2NhbGUuaW52ZXJ0KHRbMV0pKSx0aGlzLm9uVXBkYXRlRmlsdGVyLmVtaXQoe21heDpuLG1pbjpvLGluY2x1ZGVOYU46ZX0pfWVsc2UgdGhpcy5vblVwZGF0ZUZpbHRlci5lbWl0KHttYXg6MSxtaW46LTEsaW5jbHVkZU5hTjohMH0pfX16T3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpPdCl9LHpPdC7JtWNtcD1zbyh7dHlwZTp6T3Qsc2VsZWN0b3JzOltbInZpb2xpbi1maWx0ZXItY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShOT3QsNyxLaCksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5jaGFydENvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7bWV0cmljTmFtZToibWV0cmljTmFtZSIsZmlsdGVyOiJmaWx0ZXIiLGNoYXJ0RGF0YToiY2hhcnREYXRhIix3aWR0aDoid2lkdGgiLGNvbG9yU2NhbGU6ImNvbG9yU2NhbGUifSxvdXRwdXRzOntvblJlbW92ZToib25SZW1vdmUiLG9uVXBkYXRlRmlsdGVyOiJvblVwZGF0ZUZpbHRlciJ9LGZlYXR1cmVzOltxb10sZGVjbHM6OSx2YXJzOjEsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIlJlbW92ZSBGaWx0ZXIiKX1lbHNlIHQ9JGxvY2FsaXplYDpMYWJlbCBmb3IgYSBidXR0b24gdGhhdCByZW1vdmVzIGEgbWV0cmljIGZpbHRlci7ikJ9hNmJmYWQ1OGJiMzYzZDVjODkxZDBhNTQ3NGIxZDc3ZWY5MGEzNGRh4pCfODQ1NDk2MTc5Nzc2MjkwNzYyNDpSZW1vdmUgRmlsdGVyYDtyZXR1cm5bWzEsImNoYXJ0LWNvbnRhaW5lciJdLFsidGl0bGUiLCJTaG93cyB0aGUgblBNSSB2YWx1ZSBkaXN0cmlidXRpb24gcGVyIHJ1bi4gUmFuZ2VzIG9mIHNlbGVjdGVkIHZhbHVlcyBjYW4gYmUgbWFuaXB1bGF0ZWQgYnkgbW9kaWZ5aW5nIHRoZSBncmV5IGJveC4iLDEsImNoYXJ0LWhlYWQiXSxbMSwiY2hhcnQtaGVhZGluZyJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsZWFyXzI0cHgiXSxbMSwiY2hhcnQiXSxbImNoYXJ0IiwiIl0sWzEsImRyYXctYXJlYSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwiZGl2IiwxKSxfdSgyLCJkaXYiLDIpLFBmKDMpLEN1KCksX3UoNCwiYnV0dG9uIiwzKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZW1vdmUuZW1pdCgpfSkpLE11KDUsIm1hdC1pY29uIiw0KSxDdSgpLEN1KCksX3UoNiwiZGl2Iiw1LDYpLG9hKCksTXUoOCwic3ZnIiw3KSxDdSgpLEN1KCkpLDImZSYmKERjKDMpLHdmKG4ubWV0cmljTmFtZSkpfSxkaXJlY3RpdmVzOltXTCxFcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5jaGFydC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6aGlkZGVufS5jaGFydFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjMwMHB4O3dpZHRoOjEwMCV9LmNoYXJ0LWhlYWRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmNoYXJ0LWhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctdG9wOjEwcHh9LmRyYXctYXJlYVtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uc3Ryb2tlZC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6cmdiYSgwLDAsMCwuMTIpO3N0cm9rZS1kYXNoYXJyYXk6MyAzfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih6T3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoidmlvbGluLWZpbHRlci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3Zpb2xpbl9maWx0ZXJfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdmlvbGluX2ZpbHRlcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7bWV0cmljTmFtZTpbe3R5cGU6Ul99XSxmaWx0ZXI6W3t0eXBlOlJffV0sY2hhcnREYXRhOlt7dHlwZTpSX31dLHdpZHRoOlt7dHlwZTpSX31dLGNvbG9yU2NhbGU6W3t0eXBlOlJffV0sb25SZW1vdmU6W3t0eXBlOkVffV0sb25VcGRhdGVGaWx0ZXI6W3t0eXBlOkVffV0sY2hhcnRDb250YWluZXI6W3t0eXBlOmFyLGFyZ3M6WyJjaGFydCIse3N0YXRpYzohMCxyZWFkOktofV19XX0pO2NsYXNzIElPdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoclMoREkpKS5waXBlKFZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMudmlzaWJsZUFubm90YXRpb25zJD1LdChbdGhpcy5zdG9yZS5zZWxlY3Qodnh0KSx0aGlzLnN0b3JlLnNlbGVjdChreHQpLHRoaXMuc3RvcmUuc2VsZWN0KEh4dCldKS5waXBlKFZ0KCgoW3QsZSxuXSk9PlRPdCh0LGUsbikpKSksdGhpcy5jaGFydFdpZHRoJD10aGlzLnN0b3JlLnBpcGUoclMoTHh0KSkucGlwZShWdCgodD0+TWF0aC5tYXgoMTUwLHQpKSkpLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3QoUkkpLnBpcGUoVnQoKHQ9PmU9PntpZighdC5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoYFtDb2xvciBzY2FsZV0gdW5rbm93biBydW5JZDogJHtlfS5gKTtyZXR1cm4gdFtlXX0pKSl9bmdPbkluaXQoKXt0aGlzLmNoYXJ0RGF0YSQ9S3QoW3RoaXMudmlzaWJsZUFubm90YXRpb25zJCx0aGlzLmFjdGl2ZVJ1bnMkXSkucGlwZShWdCgoKFt0LGVdKT0+KGZ1bmN0aW9uIG4odCxlLG8pe2NvbnN0IGk9e30sYT17fSxyPW5ldyBTZXQoZSkscz1wQ3QobyksbD17bWF4Oi0xLG1pbjoxfTtPYmplY3QudmFsdWVzKHQpLmZvckVhY2goKHQ9Pnt0LmZvckVhY2goKHQ9Pntjb25zdCBlPXQucnVuO2lmKHIuaGFzKGUpJiZ0Lm1ldHJpYz09PXMpaWYobnVsbD09PXQublBNSVZhbHVlKWFbZV0/YVtlXS5wdXNoKG51bGwpOmFbZV09W251bGxdO2Vsc2V7Y29uc3Qgbj10Lm5QTUlWYWx1ZTtsLm1heD1sLm1heDxuP246bC5tYXgsbC5taW49bC5taW4+bj9uOmwubWluLGlbdC5ydW5dP2lbZV0ucHVzaChuKTppW2VdPVtuXX19KSl9KSk7Y29uc3QgYz17fSxkPVg2KCkuZG9tYWluKFtsLm1pbixsLm1heF0pLnZhbHVlKCh0PT50KSkscD1YNigpLmRvbWFpbihbLTEvMCwxLzBdKS50aHJlc2hvbGRzKDApLnZhbHVlKCh0PT50KSk7Zm9yKGNvbnN0IHQgb2YgcilpZihjW3RdPWQoaVt0XSksYVt0XSl7Y29uc3QgZT1wKGFbdF0pO2NbdF0udW5zaGlmdChlWzBdKX1yZXR1cm57dmlvbGluRGF0YTpjLGV4dHJlbWVzOmx9fSkodCxlLHRoaXMubWV0cmljTmFtZSkpKSl9cmVtb3ZlTWV0cmljKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChleHQoe21ldHJpYzp0aGlzLm1ldHJpY05hbWV9KSl9dXBkYXRlRmlsdGVyKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gobnh0KE9iamVjdC5hc3NpZ24oe21ldHJpYzp0aGlzLm1ldHJpY05hbWV9LHQpKSl9fWZ1bmN0aW9uIEhPdCh0LGUpe2lmKDEmdCYmTXUoMCwibnBtaS12aW9saW4tZmlsdGVyIiw4KSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7aHUoIm1ldHJpY05hbWUiLHRbMF0pKCJmaWx0ZXIiLHRbMV0pfX1mdW5jdGlvbiBGT3QodCxlKXsxJnQmJihfdSgwLCJkaXYiLDkpLF91KDEsInNwYW4iLDEwKSxQZigyLCIgWW91IGNhbiBhZGQgbW9yZSBmaWx0ZXJzIGF0IHRoZSB0b3AuICIpLEN1KCksQ3UoKSl9SU90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJT3QpKGZ1KGlTKSl9LElPdC7JtWNtcD1zbyh7dHlwZTpJT3Qsc2VsZWN0b3JzOltbIm5wbWktdmlvbGluLWZpbHRlciJdXSxpbnB1dHM6e21ldHJpY05hbWU6Im1ldHJpY05hbWUiLGZpbHRlcjoiZmlsdGVyIn0sZGVjbHM6NCx2YXJzOjExLGNvbnN0czpbWzMsIm1ldHJpY05hbWUiLCJmaWx0ZXIiLCJjaGFydERhdGEiLCJ3aWR0aCIsImNvbG9yU2NhbGUiLCJvblJlbW92ZSIsIm9uVXBkYXRlRmlsdGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJ2aW9saW4tZmlsdGVyLWNvbXBvbmVudCIsMCksRHUoIm9uUmVtb3ZlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnJlbW92ZU1ldHJpYygpfSkpKCJvblVwZGF0ZUZpbHRlciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4udXBkYXRlRmlsdGVyKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoIm1ldHJpY05hbWUiLG4ubWV0cmljTmFtZSkoImZpbHRlciIsbi5maWx0ZXIpKCJjaGFydERhdGEiLEN5KDEsNSxuLmNoYXJ0RGF0YSQpKSgid2lkdGgiLEN5KDIsNyxuLmNoYXJ0V2lkdGgkKSkoImNvbG9yU2NhbGUiLEN5KDMsOSxuLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W3pPdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKElPdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLXZpb2xpbi1maWx0ZXIiLHRlbXBsYXRlOidcbiAgICA8dmlvbGluLWZpbHRlci1jb21wb25lbnRcbiAgICAgIFttZXRyaWNOYW1lXT0ibWV0cmljTmFtZSJcbiAgICAgIFtmaWx0ZXJdPSJmaWx0ZXIiXG4gICAgICBbY2hhcnREYXRhXT0iY2hhcnREYXRhJCB8IGFzeW5jIlxuICAgICAgW3dpZHRoXT0iY2hhcnRXaWR0aCQgfCBhc3luYyJcbiAgICAgIFtjb2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSQgfCBhc3luYyJcbiAgICAgIChvblJlbW92ZSk9InJlbW92ZU1ldHJpYygpIlxuICAgICAgKG9uVXBkYXRlRmlsdGVyKT0idXBkYXRlRmlsdGVyKCRldmVudCkiXG4gICAgPjwvdmlvbGluLWZpbHRlci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7bWV0cmljTmFtZTpbe3R5cGU6Ul99XSxmaWx0ZXI6W3t0eXBlOlJffV19KTtjbGFzcyBMT3R7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgU3l9fUxPdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TE90KX0sTE90Lsm1Y21wPXNvKHt0eXBlOkxPdCxzZWxlY3RvcnM6W1sidmlvbGluLWZpbHRlcnMtY29tcG9uZW50Il1dLGlucHV0czp7c2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLG1ldHJpY0ZpbHRlcnM6Im1ldHJpY0ZpbHRlcnMifSxvdXRwdXRzOnt0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6InRvZ2dsZVNpZGViYXJFeHBhbmRlZCJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCB0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJFeHBhbmQvSGlkZSBTaWRlYmFyIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZXhwYW5kcy9oaWRlcyB0aGUgc2lkZWJhci7ikJ80OGMyOTkwM2NlODgxYWI2MTA4OGY4ZDQ5ZDgyNzIwMzcxNmFhZWQ04pCfNDY1ODYwMjk5MTk3MDI2MDIxNTpFeHBhbmQvSGlkZSBTaWRlYmFyYDtyZXR1cm5bWzEsImZpbHRlcnMtdG9vbGJhciJdLFsxLCJmaWx0ZXJzLXRpdGxlIl0sWzEsInNpZGUtdG9nZ2xlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDMsImNsaWNrIl0sWyJzdmdJY29uIiwiY2hldnJvbl9sZWZ0XzI0cHgiXSxbMSwiZmlsdGVycyJdLFszLCJtZXRyaWNOYW1lIiwiZmlsdGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiZmlsdGVycy1oaW50Iiw0LCJuZ0lmIl0sWzMsIm1ldHJpY05hbWUiLCJmaWx0ZXIiXSxbMSwiZmlsdGVycy1oaW50Il0sWzEsImZpbHRlcnMtaGludC10ZXh0Il1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJoMyIsMSksUGYoMiwiQWN0aXZlIEZpbHRlcnMiKSxDdSgpLF91KDMsImRpdiIsMiksX3UoNCwiYnV0dG9uIiwzKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlU2lkZWJhckV4cGFuZGVkLmVtaXQoKX0pKSxNdSg1LCJtYXQtaWNvbiIsNCksQ3UoKSxDdSgpLEN1KCksX3UoNiwiZGl2Iiw1KSxIbSg3LEhPdCwxLDIsIm5wbWktdmlvbGluLWZpbHRlciIsNiksQ3UoKSxIbSg4LEZPdCwzLDAsImRpdiIsNykpLDImZSYmKERjKDcpLGh1KCJuZ0Zvck9mIixuLm1ldHJpY0ZpbHRlcnMpLERjKDEpLGh1KCJuZ0lmIiwwPT09bi5tZXRyaWNGaWx0ZXJzLmxlbmd0aCkpfSxkaXJlY3RpdmVzOltXTCxFcSx4dixQdixJT3RdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmZpbHRlcnMtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0MnB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MCAxMHB4fS5maWx0ZXJzLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjMwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDozMHB4fS5maWx0ZXJzW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy15OmF1dG99LmZpbHRlcnMtaGludFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH0uZmlsdGVycy1oaW50LXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTE90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InZpb2xpbi1maWx0ZXJzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vdmlvbGluX2ZpbHRlcnNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdmlvbGluX2ZpbHRlcnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse3NpZGViYXJFeHBhbmRlZDpbe3R5cGU6Ul99XSxtZXRyaWNGaWx0ZXJzOlt7dHlwZTpSX31dLHRvZ2dsZVNpZGViYXJFeHBhbmRlZDpbe3R5cGU6RV99XX0pO2NsYXNzIEJPdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zaWRlYmFyRXhwYW5kZWQkPXRoaXMuc3RvcmUuc2VsZWN0KHp4dCksdGhpcy5tZXRyaWNGaWx0ZXJzJD10aGlzLnN0b3JlLnNlbGVjdChFeHQpLnBpcGUoVnQoKHQ9Pk9iamVjdC5lbnRyaWVzKHQpKSkpfW9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChzeHQoKSl9fWZ1bmN0aW9uIFZPdCh0LGUsbil7Y29uc3Qgbz1PYmplY3Qua2V5cyh0KSxpPWUub3JkZXI9PT1feHQuRElTU0lNSUxBUnx8ZS5vcmRlcj09PV94dC5TSU1JTEFSO2lmKCIiPT09ZS5tZXRyaWN8fCh2b2lkIDA9PT1ufHx2b2lkIDA9PT1uLnBvaW50c1tlLm1ldHJpY10pJiZpKXJldHVybiBvO3JldHVybihmdW5jdGlvbiBzKHQsZSxuKXtpZihuKXJldHVybiB0LnNvcnQoKCh0LG4pPT5lW3RdLWVbbl0pKTtyZXR1cm4gdC5zb3J0KCgodCxuKT0+ZVtuXS1lW3RdKSl9KShvLGk/KGZ1bmN0aW9uIGEodCxlLG4pe2NvbnN0IG89e307bGV0IGk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGE9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24ub3JkZXI9PT1feHQuU0lNSUxBUiYmKGk9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtmb3IoY29uc3QgciBvZiB0KW9bcl09cj09PW4ubWV0cmljP2k6dm9pZCAwPT09ZS5wb2ludHNbcl0/YTplLnBvaW50c1tyXS52ZWN0b3I/VU90KGUucG9pbnRzW24ubWV0cmljXS52ZWN0b3IsZS5wb2ludHNbcl0udmVjdG9yLGEpOmE7cmV0dXJuIG99KShvLG4sZSk6KGZ1bmN0aW9uIHIodCxlLG4pe2NvbnN0IG89cEN0KG4ubWV0cmljKSxpPXt9O2lmKG4ub3JkZXI9PT1feHQuREVTQ0VORElORylmb3IoY29uc3QgbiBvZiB0KWlbbl09TWF0aC5tYXgoLi4uZVtuXS5maWx0ZXIoKHQ9PnQubWV0cmljPT09bykpLm1hcCgodD0+bnVsbD09PXQublBNSVZhbHVlPy0xLzA6dC5uUE1JVmFsdWUpKSk7ZWxzZSBmb3IoY29uc3QgbiBvZiB0KWlbbl09TWF0aC5taW4oLi4uZVtuXS5maWx0ZXIoKHQ9PnQubWV0cmljPT09bykpLm1hcCgodD0+bnVsbD09PXQublBNSVZhbHVlPzEvMDp0Lm5QTUlWYWx1ZSkpKTtyZXR1cm4gaX0pKG8sdCxlKSxlLm9yZGVyPT09X3h0LkFTQ0VORE5HfHxlLm9yZGVyPT09X3h0LlNJTUlMQVIpfWZ1bmN0aW9uIFVPdCh0LGUsbil7aWYodC5sZW5ndGghPWUubGVuZ3RoKXJldHVybiBuO3JldHVybiBlLm1hcCgoKGUsbik9PmUtdFtuXSkpLm1hcCgodD0+TWF0aC5wb3codCwyKSkpLnJlZHVjZSgoKHQsZSk9PnQrZSksMCl9Qk90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCT3QpKGZ1KGlTKSl9LEJPdC7JtWNtcD1zbyh7dHlwZTpCT3Qsc2VsZWN0b3JzOltbIm5wbWktdmlvbGluLWZpbHRlcnMiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywic2lkZWJhckV4cGFuZGVkIiwibWV0cmljRmlsdGVycyIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwidmlvbGluLWZpbHRlcnMtY29tcG9uZW50IiwwKSxEdSgidG9nZ2xlU2lkZWJhckV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoInNpZGViYXJFeHBhbmRlZCIsQ3koMSwyLG4uc2lkZWJhckV4cGFuZGVkJCkpKCJtZXRyaWNGaWx0ZXJzIixDeSgyLDQsbi5tZXRyaWNGaWx0ZXJzJCkpfSxkaXJlY3RpdmVzOltMT3RdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihCT3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS12aW9saW4tZmlsdGVycyIsdGVtcGxhdGU6J1xuICAgIDx2aW9saW4tZmlsdGVycy1jb21wb25lbnRcbiAgICAgIFtzaWRlYmFyRXhwYW5kZWRdPSJzaWRlYmFyRXhwYW5kZWQkIHwgYXN5bmMiXG4gICAgICBbbWV0cmljRmlsdGVyc109Im1ldHJpY0ZpbHRlcnMkIHwgYXN5bmMiXG4gICAgICAodG9nZ2xlU2lkZWJhckV4cGFuZGVkKT0ib25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKSJcbiAgICA+PC92aW9saW4tZmlsdGVycy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjb25zdCBqT3Q9WyJ0aHVtYkNvbnRhaW5lciJdLFdPdD1bInRvZ2dsZUJhciJdLEdPdD1bImlucHV0Il0sWU90PWZ1bmN0aW9uKHQpe3JldHVybntlbnRlckR1cmF0aW9uOnR9fSxxT3Q9bmV3IGVyKCJtYXQtc2xpZGUtdG9nZ2xlLWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pih7ZGlzYWJsZVRvZ2dsZVZhbHVlOiExfSl9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBaT3Q9MDtjb25zdCBYT3Q9e3Byb3ZpZGU6VGosdXNlRXhpc3Rpbmc6JGUoKCgpPT5RT3QpKSxtdWx0aTohMH07Y2xhc3MgS090e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLmNoZWNrZWQ9ZX19Y29uc3QgSk90PVpGKFlGKHFGKEdGKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSkpKTtjbGFzcyBRT3QgZXh0ZW5kcyBKT3R7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3N1cGVyKHQpLHRoaXMuX2ZvY3VzTW9uaXRvcj1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5kZWZhdWx0cz1pLHRoaXMuX29uQ2hhbmdlPXQ9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fdW5pcXVlSWQ9Im1hdC1zbGlkZS10b2dnbGUtIisgKytaT3QsdGhpcy5fcmVxdWlyZWQ9ITEsdGhpcy5fY2hlY2tlZD0hMSx0aGlzLm5hbWU9bnVsbCx0aGlzLmlkPXRoaXMuX3VuaXF1ZUlkLHRoaXMubGFiZWxQb3NpdGlvbj0iYWZ0ZXIiLHRoaXMuYXJpYUxhYmVsPW51bGwsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuY2hhbmdlPW5ldyBTeSx0aGlzLnRvZ2dsZUNoYW5nZT1uZXcgU3ksdGhpcy50YWJJbmRleD1wYXJzZUludChvKXx8MCx0aGlzLmNvbG9yPXRoaXMuZGVmYXVsdENvbG9yPWkuY29sb3J8fCJhY2NlbnQiLHRoaXMuX25vb3BBbmltYXRpb25zPSJOb29wQW5pbWF0aW9ucyI9PT1hfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9cEgodCl9Z2V0IGNoZWNrZWQoKXtyZXR1cm4gdGhpcy5fY2hlY2tlZH1zZXQgY2hlY2tlZCh0KXt0aGlzLl9jaGVja2VkPXBIKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBpbnB1dElkKCl7cmV0dXJuYCR7dGhpcy5pZHx8dGhpcy5fdW5pcXVlSWR9LWlucHV0YH1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKS5zdWJzY3JpYmUoKHQ9Pnsia2V5Ym9hcmQiPT09dHx8InByb2dyYW0iPT09dD90aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpOnR8fFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT50aGlzLl9vblRvdWNoZWQoKSkpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfV9vbkNoYW5nZUV2ZW50KHQpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy50b2dnbGVDaGFuZ2UuZW1pdCgpLHRoaXMuZGVmYXVsdHMuZGlzYWJsZVRvZ2dsZVZhbHVlP3RoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQ9dGhpcy5jaGVja2VkOih0aGlzLmNoZWNrZWQ9dGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSl9X29uSW5wdXRDbGljayh0KXt0LnN0b3BQcm9wYWdhdGlvbigpfXdyaXRlVmFsdWUodCl7dGhpcy5jaGVja2VkPSEhdH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Zm9jdXModCxlKXtlP3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9pbnB1dEVsZW1lbnQsZSx0KTp0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyh0KX10b2dnbGUoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZCx0aGlzLl9vbkNoYW5nZSh0aGlzLmNoZWNrZWQpfV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9vbkNoYW5nZSh0aGlzLmNoZWNrZWQpLHRoaXMuY2hhbmdlLmVtaXQobmV3IEtPdCh0aGlzLHRoaXMuY2hlY2tlZCkpfV9vbkxhYmVsVGV4dENoYW5nZSgpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX19UU90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRT3QpKGZ1KEtoKSxmdSh4RiksZnUoT2IpLEdhKCJ0YWJpbmRleCIpLGZ1KHFPdCksZnUoY2ssOCkpfSxRT3QuybVjbXA9c28oe3R5cGU6UU90LHNlbGVjdG9yczpbWyJtYXQtc2xpZGUtdG9nZ2xlIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoVnkoak90LDUpLFZ5KFdPdCw1KSxWeShHT3QsNSkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uX3RodW1iRWw9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX3RodW1iQmFyRWw9dC5maXJzdCksQnkodD1qeSgpKSYmKG4uX2lucHV0RWxlbWVudD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXNsaWRlLXRvZ2dsZSJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiYoY2coImlkIixuLmlkKSx5bSgidGFiaW5kZXgiLG4uZGlzYWJsZWQ/bnVsbDotMSkoImFyaWEtbGFiZWwiLG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG51bGwpLGNmKCJtYXQtY2hlY2tlZCIsbi5jaGVja2VkKSgibWF0LWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUiLCJiZWZvcmUiPT1uLmxhYmVsUG9zaXRpb24pKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsbi5fbm9vcEFuaW1hdGlvbnMpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4IixuYW1lOiJuYW1lIixpZDoiaWQiLGxhYmVsUG9zaXRpb246ImxhYmVsUG9zaXRpb24iLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSxhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0scmVxdWlyZWQ6InJlcXVpcmVkIixjaGVja2VkOiJjaGVja2VkIixhcmlhRGVzY3JpYmVkYnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYURlc2NyaWJlZGJ5Il19LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIix0b2dnbGVDaGFuZ2U6InRvZ2dsZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0U2xpZGVUb2dnbGUiXSxmZWF0dXJlczpbVWgoW1hPdF0pLFFwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MTYsdmFyczoyMCxjb25zdHM6W1sxLCJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsIl0sWyJsYWJlbCIsIiJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLWJhciJdLFsidG9nZ2xlQmFyIiwiIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJyb2xlIiwic3dpdGNoIiwxLCJtYXQtc2xpZGUtdG9nZ2xlLWlucHV0IiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsMywiaWQiLCJyZXF1aXJlZCIsInRhYkluZGV4IiwiY2hlY2tlZCIsImRpc2FibGVkIiwiY2hhbmdlIiwiY2xpY2siXSxbImlucHV0IiwiIl0sWzEsIm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVyIl0sWyJ0aHVtYkNvbnRhaW5lciIsIiJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLXRodW1iIl0sWyJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZSIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlUmFkaXVzIiwibWF0UmlwcGxlQW5pbWF0aW9uIl0sWzEsIm1hdC1yaXBwbGUtZWxlbWVudCIsIm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUiXSxbMSwibWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsibGFiZWxDb250ZW50IiwiIl0sWzIsImRpc3BsYXkiLCJub25lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihJdSgpLF91KDAsImxhYmVsIiwwLDEpLF91KDIsImRpdiIsMiwzKSxfdSg0LCJpbnB1dCIsNCw1KSxEdSgiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fb25DaGFuZ2VFdmVudChlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbklucHV0Q2xpY2soZSl9KSksQ3UoKSxfdSg2LCJkaXYiLDYsNyksTXUoOCwiZGl2Iiw4KSxfdSg5LCJkaXYiLDkpLE11KDEwLCJkaXYiLDEwKSxDdSgpLEN1KCksQ3UoKSxfdSgxMSwic3BhbiIsMTEsMTIpLER1KCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25MYWJlbFRleHRDaGFuZ2UoKX0pKSxfdSgxMywic3BhbiIsMTMpLFBmKDE0LCLCoCIpLEN1KCksSHUoMTUpLEN1KCksQ3UoKSksMiZlKXtjb25zdCB0PUZtKDEpLGU9Rm0oMTIpO3ltKCJmb3IiLG4uaW5wdXRJZCksRGMoMiksY2YoIm1hdC1zbGlkZS10b2dnbGUtYmFyLW5vLXNpZGUtbWFyZ2luIiwhZS50ZXh0Q29udGVudHx8IWUudGV4dENvbnRlbnQudHJpbSgpKSxEYygyKSxodSgiaWQiLG4uaW5wdXRJZCkoInJlcXVpcmVkIixuLnJlcXVpcmVkKSgidGFiSW5kZXgiLG4udGFiSW5kZXgpKCJjaGVja2VkIixuLmNoZWNrZWQpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZCkseW0oIm5hbWUiLG4ubmFtZSkoImFyaWEtY2hlY2tlZCIsbi5jaGVja2VkLnRvU3RyaW5nKCkpKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbCkoImFyaWEtbGFiZWxsZWRieSIsbi5hcmlhTGFiZWxsZWRieSkoImFyaWEtZGVzY3JpYmVkYnkiLG4uYXJpYURlc2NyaWJlZGJ5KSxEYyg1KSxodSgibWF0UmlwcGxlVHJpZ2dlciIsdCkoIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVSaXBwbGV8fG4uZGlzYWJsZWQpKCJtYXRSaXBwbGVDZW50ZXJlZCIsITApKCJtYXRSaXBwbGVSYWRpdXMiLDIwKSgibWF0UmlwcGxlQW5pbWF0aW9uIixpeSgxOCxZT3Qsbi5fbm9vcEFuaW1hdGlvbnM/MDoxNTApKX19LGRpcmVjdGl2ZXM6W3ZMLHpIXSxzdHlsZXM6WyIubWF0LXNsaWRlLXRvZ2dsZXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MjRweDttYXgtd2lkdGg6MTAwJTtsaW5lLWhlaWdodDoyNHB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTZweCwgMCwgMCl9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTE2cHgsIDAsIDApfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZHtvcGFjaXR5Oi4zOH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtbGFiZWwsLm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcntjdXJzb3I6ZGVmYXVsdH0ubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbHstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDppbmhlcml0O2N1cnNvcjpwb2ludGVyfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbHtvcmRlcjoxfS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7b3JkZXI6Mn1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDowfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1zbGlkZS10b2dnbGUtYmFyLW5vLXNpZGUtbWFyZ2lue21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O3RvcDotM3B4O2xlZnQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjphbGwgODBtcyBsaW5lYXI7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm19Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcnt0cmFuc2l0aW9uOm5vbmV9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcntsZWZ0OmF1dG87cmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntoZWlnaHQ6MjBweDt3aWR0aDoyMHB4O2JvcmRlci1yYWRpdXM6NTAlfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDozNnB4O2hlaWdodDoxNHB4O2ZsZXgtc2hyaW5rOjA7Ym9yZGVyLXJhZGl1czo4cHh9Lm1hdC1zbGlkZS10b2dnbGUtaW5wdXR7Ym90dG9tOjA7bGVmdDoxMHB4fVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dHtsZWZ0OmF1dG87cmlnaHQ6MTBweH0ubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7dHJhbnNpdGlvbjphbGwgODBtcyBsaW5lYXI7dHJhbnNpdGlvbi1wcm9wZXJ0eTpiYWNrZ3JvdW5kLWNvbG9yO3RyYW5zaXRpb24tZGVsYXk6NTBtc30uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYnt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUgLm1hdC1zbGlkZS10b2dnbGUtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKDUwJSAtIDIwcHgpO2xlZnQ6Y2FsYyg1MCUgLSAyMHB4KTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4O3otaW5kZXg6MTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtc2xpZGUtdG9nZ2xlIC5tYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSl7b3BhY2l0eTouMTJ9Lm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0cmFuc2Zvcm06bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMDR9Lm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtZGlzYWJsZWQpLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjEyfS5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTowfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6bm9uZX19LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntib3JkZXI6MXB4IHNvbGlkfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye291dGxpbmU6MnB4IGRvdHRlZDtvdXRsaW5lLW9mZnNldDo1cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxRT3QuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLaH0se3R5cGU6eEZ9LHt0eXBlOk9ifSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6JGEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3FPdF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJyfSx7dHlwZTpMcixhcmdzOltja119XX1dLFFPdC5wcm9wRGVjb3JhdG9ycz17X3RodW1iRWw6W3t0eXBlOmFyLGFyZ3M6WyJ0aHVtYkNvbnRhaW5lciJdfV0sX3RodW1iQmFyRWw6W3t0eXBlOmFyLGFyZ3M6WyJ0b2dnbGVCYXIiXX1dLG5hbWU6W3t0eXBlOlJffV0saWQ6W3t0eXBlOlJffV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6Ul99XSxhcmlhTGFiZWw6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Ul8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sY2hlY2tlZDpbe3R5cGU6Ul99XSxjaGFuZ2U6W3t0eXBlOkVffV0sdG9nZ2xlQ2hhbmdlOlt7dHlwZTpFX31dLF9pbnB1dEVsZW1lbnQ6W3t0eXBlOmFyLGFyZ3M6WyJpbnB1dCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUU90LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zbGlkZS10b2dnbGUiLGV4cG9ydEFzOiJtYXRTbGlkZVRvZ2dsZSIsaG9zdDp7Y2xhc3M6Im1hdC1zbGlkZS10b2dnbGUiLCJbaWRdIjoiaWQiLCJbYXR0ci50YWJpbmRleF0iOiJkaXNhYmxlZCA/IG51bGwgOiAtMSIsIlthdHRyLmFyaWEtbGFiZWxdIjoibnVsbCIsIlthdHRyLmFyaWEtbGFiZWxsZWRieV0iOiJudWxsIiwiW2NsYXNzLm1hdC1jaGVja2VkXSI6ImNoZWNrZWQiLCJbY2xhc3MubWF0LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlXSI6J2xhYmVsUG9zaXRpb24gPT0gImJlZm9yZSInLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjoiX25vb3BBbmltYXRpb25zIn0sdGVtcGxhdGU6JzxsYWJlbCBbYXR0ci5mb3JdPSJpbnB1dElkIiBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1sYWJlbCIgI2xhYmVsPlxuICA8ZGl2ICN0b2dnbGVCYXIgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtYmFyIlxuICAgICAgIFtjbGFzcy5tYXQtc2xpZGUtdG9nZ2xlLWJhci1uby1zaWRlLW1hcmdpbl09IiFsYWJlbENvbnRlbnQudGV4dENvbnRlbnQgfHwgIWxhYmVsQ29udGVudC50ZXh0Q29udGVudC50cmltKCkiPlxuXG4gICAgPGlucHV0ICNpbnB1dCBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1pbnB1dCBjZGstdmlzdWFsbHktaGlkZGVuIiB0eXBlPSJjaGVja2JveCJcbiAgICAgICAgICAgcm9sZT0ic3dpdGNoIlxuICAgICAgICAgICBbaWRdPSJpbnB1dElkIlxuICAgICAgICAgICBbcmVxdWlyZWRdPSJyZXF1aXJlZCJcbiAgICAgICAgICAgW3RhYkluZGV4XT0idGFiSW5kZXgiXG4gICAgICAgICAgIFtjaGVja2VkXT0iY2hlY2tlZCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT0iZGlzYWJsZWQiXG4gICAgICAgICAgIFthdHRyLm5hbWVdPSJuYW1lIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPSJjaGVja2VkLnRvU3RyaW5nKCkiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09ImFyaWFMYWJlbGxlZGJ5IlxuICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT0iYXJpYURlc2NyaWJlZGJ5IlxuICAgICAgICAgICAoY2hhbmdlKT0iX29uQ2hhbmdlRXZlbnQoJGV2ZW50KSJcbiAgICAgICAgICAgKGNsaWNrKT0iX29uSW5wdXRDbGljaygkZXZlbnQpIj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVyIiAjdGh1bWJDb250YWluZXI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLXRodW1iIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtcmlwcGxlIG1hdC1mb2N1cy1pbmRpY2F0b3IiIG1hdC1yaXBwbGVcbiAgICAgICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJsYWJlbCJcbiAgICAgICAgICAgW21hdFJpcHBsZURpc2FibGVkXT0iZGlzYWJsZVJpcHBsZSB8fCBkaXNhYmxlZCJcbiAgICAgICAgICAgW21hdFJpcHBsZUNlbnRlcmVkXT0idHJ1ZSJcbiAgICAgICAgICAgW21hdFJpcHBsZVJhZGl1c109IjIwIlxuICAgICAgICAgICBbbWF0UmlwcGxlQW5pbWF0aW9uXT0ie2VudGVyRHVyYXRpb246IF9ub29wQW5pbWF0aW9ucyA/IDAgOiAxNTB9Ij5cblxuICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtcmlwcGxlLWVsZW1lbnQgbWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8c3BhbiBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IiAjbGFiZWxDb250ZW50IChjZGtPYnNlcnZlQ29udGVudCk9Il9vbkxhYmVsVGV4dENoYW5nZSgpIj5cbiAgICBceDNjIS0tIEFkZCBhbiBpbnZpc2libGUgc3BhbiBzbyBKQVdTIGNhbiByZWFkIHRoZSBsYWJlbCAtLVx4M2VcbiAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTpub25lIj4mbmJzcDs8L3NwYW4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG48L2xhYmVsPlxuJyxwcm92aWRlcnM6W1hPdF0saW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwiY29sb3IiLCJ0YWJJbmRleCJdLGVuY2Fwc3VsYXRpb246V24uTm9uZSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNoLHN0eWxlczpbIi5tYXQtc2xpZGUtdG9nZ2xle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O21heC13aWR0aDoxMDAlO2xpbmUtaGVpZ2h0OjI0cHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxNnB4LCAwLCAwKX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTZweCwgMCwgMCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVke29wYWNpdHk6LjM4fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbCwubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVse29yZGVyOjF9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntvcmRlcjoyfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLWJhcnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS1iYXItbm8tc2lkZS1tYXJnaW57bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7dG9wOi0zcHg7bGVmdDowO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zaXRpb246bm9uZX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1zbGlkZS10b2dnbGUtYmFye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjM2cHg7aGVpZ2h0OjE0cHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjhweH0ubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dHtib3R0b206MDtsZWZ0OjEwcHh9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0e2xlZnQ6YXV0bztyaWdodDoxMHB4fS5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS10aHVtYnt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OmJhY2tncm91bmQtY29sb3I7dHJhbnNpdGlvbi1kZWxheTo1MG1zfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie3RyYW5zaXRpb246bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZSAubWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoNTAlIC0gMjBweCk7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUgLm1hdC1zbGlkZS10b2dnbGUtcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlKXtvcGFjaXR5Oi4xMn0ubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4wNH0ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1kaXNhYmxlZCkuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMTJ9Lm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpub25lfX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JvcmRlcjoxcHggc29saWR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7b3V0bGluZToycHggZG90dGVkO291dGxpbmUtb2Zmc2V0OjVweH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2h9LHt0eXBlOnhGfSx7dHlwZTpPYn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOiRhLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpMcixhcmdzOltxT3RdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCcn0se3R5cGU6THIsYXJnczpbY2tdfV19XX0pLHtuYW1lOlt7dHlwZTpSX31dLGlkOlt7dHlwZTpSX31dLGxhYmVsUG9zaXRpb246W3t0eXBlOlJffV0sYXJpYUxhYmVsOlt7dHlwZTpSXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOlJfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGNoYW5nZTpbe3R5cGU6RV99XSx0b2dnbGVDaGFuZ2U6W3t0eXBlOkVffV0scmVxdWlyZWQ6W3t0eXBlOlJffV0sY2hlY2tlZDpbe3R5cGU6Ul99XSxfdGh1bWJFbDpbe3R5cGU6YXIsYXJnczpbInRodW1iQ29udGFpbmVyIl19XSxfdGh1bWJCYXJFbDpbe3R5cGU6YXIsYXJnczpbInRvZ2dsZUJhciJdfV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpSXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0sX2lucHV0RWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImlucHV0Il19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgJE90PXtwcm92aWRlOlZqLHVzZUV4aXN0aW5nOiRlKCgoKT0+dFB0KSksbXVsdGk6ITB9O2NsYXNzIHRQdCBleHRlbmRzIEpHe310UHQuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PWphKHRQdCkpKShufHx0UHQpfX0pKCksdFB0Lsm1ZGlyPWhvKHt0eXBlOnRQdCxzZWxlY3RvcnM6W1sibWF0LXNsaWRlLXRvZ2dsZSIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJtYXQtc2xpZGUtdG9nZ2xlIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsibWF0LXNsaWRlLXRvZ2dsZSIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiJdXSxmZWF0dXJlczpbVWgoWyRPdF0pLFFwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodFB0LFt7dHlwZTprXyxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zbGlkZS10b2dnbGVbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sXG4gICAgICAgICAgICAgbWF0LXNsaWRlLXRvZ2dsZVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLCBtYXQtc2xpZGUtdG9nZ2xlW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOlskT3RdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZVB0e31lUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVQdCl9LGVQdC7JtW1vZD11byh7dHlwZTplUHR9KSxlUHQuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZVB0LFt7dHlwZTpMXyxhcmdzOlt7ZXhwb3J0czpbdFB0XSxkZWNsYXJhdGlvbnM6W3RQdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhlUHQse2RlY2xhcmF0aW9uczpbdFB0XSxleHBvcnRzOlt0UHRdfSk7Y2xhc3MgblB0e31mdW5jdGlvbiBvUHQodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiwzKX1uUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5QdCl9LG5QdC7JtW1vZD11byh7dHlwZTpuUHR9KSxuUHQuybVpbmo9RG4oe2ltcG9ydHM6W1tlUHQseEwsV0YsSUhdLGVQdCxXRl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG5QdCxbe3R5cGU6TF8sYXJnczpbe2ltcG9ydHM6W2VQdCx4TCxXRixJSF0sZXhwb3J0czpbZVB0LFFPdCxXRl0sZGVjbGFyYXRpb25zOltRT3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oblB0LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bUU90XX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltlUHQseEwsV0YsSUhdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2VQdCxRT3QsV0ZdfX0pO2NsYXNzIGlQdHtjb25zdHJ1Y3Rvcigpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlPW5ldyBTeX19aVB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpUHQpfSxpUHQuybVjbXA9c28oe3R5cGU6aVB0LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmY2YoInZhbGlkIixuLmlzUmVnZXhGaWx0ZXJWYWxpZCl9LGlucHV0czp7cmVnZXhGaWx0ZXJWYWx1ZToicmVnZXhGaWx0ZXJWYWx1ZSIsaXNSZWdleEZpbHRlclZhbGlkOiJpc1JlZ2V4RmlsdGVyVmFsaWQifSxvdXRwdXRzOntvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U6Im9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSJ9LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbImF1dG9jb21wbGV0ZSIsIm9mZiIsInBsYWNlaG9sZGVyIiwiRmlsdGVyIEFubm90YXRpb25zIiwzLCJ2YWx1ZSIsImlucHV0Il0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsImNsYXNzIiwiZXJyb3ItaWNvbiIsIm1hdFRvb2x0aXAiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiw0LCJuZ0lmIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsIm1hdFRvb2x0aXAiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiwxLCJlcnJvci1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihNdSgwLCJtYXQtaWNvbiIsMCksX3UoMSwiaW5wdXQiLDEpLER1KCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoZS50YXJnZXQudmFsdWUpfSkpLEN1KCksSG0oMixvUHQsMSwwLCJtYXQtaWNvbiIsMikpLDImZSYmKERjKDEpLGh1KCJ2YWx1ZSIsbi5yZWdleEZpbHRlclZhbHVlKSxEYygxKSxodSgibmdJZiIsIW4uaXNSZWdleEZpbHRlclZhbGlkKSl9LGRpcmVjdGl2ZXM6W0VxLFB2XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICAuZXJyb3ItaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2M2MjgyODtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihpUHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1zZWFyY2gtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9hbm5vdGF0aW9uc19zZWFyY2hfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYW5ub3RhdGlvbnNfc2VhcmNoX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtyZWdleEZpbHRlclZhbHVlOlt7dHlwZTpSX31dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6RV99XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOkFfLGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTpSX31dfSk7Y2xhc3MgYVB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFubm90YXRpb25zRmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChTeHQpLHRoaXMuaXNBbm5vdGF0aW9uc0ZpbHRlclZhbGlkJD10aGlzLmFubm90YXRpb25zRmlsdGVyJC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBuZXcgUmVnRXhwKHQpLCEwfWNhdGNoKHQpe3JldHVybiExfX0pKSl9ZmlsdGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUXZ0KHtyZWdleDp0fSkpfX1mdW5jdGlvbiByUHQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTt2dSgwKSxfdSgxLCJidXR0b24iLDUpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtjb25zdCBuPU51KCk7cmV0dXJuIG4ub25GbGFnQW5ub3RhdGlvbnMuZW1pdChuLnNlbGVjdGVkQW5ub3RhdGlvbnMpfSkpLE11KDIsIm1hdC1pY29uIiw2KSxDdSgpLF91KDMsImJ1dHRvbiIsNyksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO2NvbnN0IG49TnUoKTtyZXR1cm4gbi5vbkhpZGVBbm5vdGF0aW9ucy5lbWl0KG4uc2VsZWN0ZWRBbm5vdGF0aW9ucyl9KSksTXUoNCwibWF0LWljb24iLDgpLEN1KCkseHUoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxodSgiZGlzYWJsZWQiLDA9PT10LnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoKSxEYygyKSxodSgiZGlzYWJsZWQiLDA9PT10LnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoKX19ZnVuY3Rpb24gc1B0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7dnUoMCksX3UoMSwibWF0LXNsaWRlLXRvZ2dsZSIsOSksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5vblRvZ2dsZVNob3dDb3VudHMuZW1pdCgpfSkpLFBmKDIsIiBTYW1wbGUgQ291bnQgIiksQ3UoKSxfdSgzLCJtYXQtc2xpZGUtdG9nZ2xlIiwxMCksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5vblRvZ2dsZVNob3dIaWRkZW4uZW1pdCgpfSkpLFBmKDQsIiBTaG93IEhpZGRlbiAiKSxDdSgpLE11KDUsIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoIikseHUoKX1pZigyJnQpe2NvbnN0IHQ9TnUoKTtEYygxKSxodSgiY2hlY2tlZCIsdC5zaG93Q291bnRzKSxEYygyKSxodSgiY2hlY2tlZCIsdC5zaG93SGlkZGVuKX19YVB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhUHQpKGZ1KGlTKSl9LGFQdC7JtWNtcD1zbyh7dHlwZTphUHQsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJlZ2V4RmlsdGVyVmFsdWUiLCJpc1JlZ2V4RmlsdGVyVmFsaWQiLCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoLWNvbXBvbmVudCIsMCksRHUoIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uZmlsdGVyQ2hhbmdlKGUpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJyZWdleEZpbHRlclZhbHVlIixDeSgxLDIsbi5hbm5vdGF0aW9uc0ZpbHRlciQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixDeSgyLDQsbi5pc0Fubm90YXRpb25zRmlsdGVyVmFsaWQkKSl9LGRpcmVjdGl2ZXM6W2lQdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGFQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLXNlYXJjaCIsdGVtcGxhdGU6J1xuICAgIDxucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnRcbiAgICAgIFtyZWdleEZpbHRlclZhbHVlXT0iYW5ub3RhdGlvbnNGaWx0ZXIkIHwgYXN5bmMiXG4gICAgICBbaXNSZWdleEZpbHRlclZhbGlkXT0iaXNBbm5vdGF0aW9uc0ZpbHRlclZhbGlkJCB8IGFzeW5jIlxuICAgICAgKG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSk9ImZpbHRlckNoYW5nZSgkZXZlbnQpIlxuICAgID48L25wbWktYW5ub3RhdGlvbnMtc2VhcmNoLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIGxQdHtjb25zdHJ1Y3Rvcigpe3RoaXMub25GbGFnQW5ub3RhdGlvbnM9bmV3IFN5LHRoaXMub25IaWRlQW5ub3RhdGlvbnM9bmV3IFN5LHRoaXMub25Ub2dnbGVFeHBhbmRlZD1uZXcgU3ksdGhpcy5vblRvZ2dsZVNob3dDb3VudHM9bmV3IFN5LHRoaXMub25Ub2dnbGVTaG93SGlkZGVuPW5ldyBTeX19bFB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsUHQpfSxsUHQuybVjbXA9c28oe3R5cGU6bFB0LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLGV4cGFuZGVkOiJleHBhbmRlZCIsc2VsZWN0ZWRBbm5vdGF0aW9uczoic2VsZWN0ZWRBbm5vdGF0aW9ucyIsYW5ub3RhdGlvbnNFeHBhbmRlZDoiYW5ub3RhdGlvbnNFeHBhbmRlZCIsc2hvd0NvdW50czoic2hvd0NvdW50cyIsc2hvd0hpZGRlbjoic2hvd0hpZGRlbiJ9LG91dHB1dHM6e29uRmxhZ0Fubm90YXRpb25zOiJvbkZsYWdBbm5vdGF0aW9ucyIsb25IaWRlQW5ub3RhdGlvbnM6Im9uSGlkZUFubm90YXRpb25zIixvblRvZ2dsZUV4cGFuZGVkOiJvblRvZ2dsZUV4cGFuZGVkIixvblRvZ2dsZVNob3dDb3VudHM6Im9uVG9nZ2xlU2hvd0NvdW50cyIsb25Ub2dnbGVTaG93SGlkZGVuOiJvblRvZ2dsZVNob3dIaWRkZW4ifSxkZWNsczo3LHZhcnM6NCxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlLG47aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkhpZGVzL1Nob3dzIHRoZSBBbm5vdGF0aW9ucyBMaXN0Iil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgaGlkZXMvc2hvd3MgdGhlIGFubm90YXRpb25zIGxpc3Qu4pCfYjM2MDNiYTMzZTUzMDhkZDhjNWU4MDVlNTA4YjJmNzIzM2RmODlkNOKQnzczMzYzNzQ0MTMwNTYzNDI0OTI6SGlkZXMvU2hvd3MgdGhlIEFubm90YXRpb25zIExpc3RgO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXtlPWdvb2cuZ2V0TXNnKCJGbGFnIFNlbGVjdGVkIEFubm90YXRpb25zIil9ZWxzZSBlPSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZmxhZ3Mgc2VsZWN0ZWQgYW5ub3RhdGlvbnMu4pCfNTY5MmFkODgzMTAzOGE5MGM1ODYzYTFlOWFkZjk3NDhjYWMzY2FkOOKQnzIyNDQwOTk4OTEzMTMzMzY1OTU6RmxhZyBTZWxlY3RlZCBBbm5vdGF0aW9uc2A7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe249Z29vZy5nZXRNc2coIkhpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKX1lbHNlIG49JGxvY2FsaXplYDpMYWJlbCBmb3IgYSBidXR0b24gdGhhdCBoaWRlcyBzZWxlY3RlZCBhbm5vdGF0aW9ucy7ikJ8wMzQyY2RiMzM1OGZhOGUzZmEyNzIyMGE4MjU4YTcyODc0MzBiNzBm4pCfNTQ2MjgzMjM5MTA5MjA4NzQ4NTpIaWRlIFNlbGVjdGVkIEFubm90YXRpb25zYDtyZXR1cm5bWzEsImFubm90YXRpb25zLXRpdGxlLWNvbnRhaW5lciJdLFsxLCJhbm5vdGF0aW9ucy10aXRsZSJdLFs0LCJuZ0lmIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDEsImV4cGFuZC1idXR0b24iLDMsImNsaWNrIl0sWzMsInN2Z0ljb24iXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiRmxhZ2dpbmcgYW5ub3RhdGlvbnMgYWRkcyB0aGVtIHRvIHlvdXIgaW52ZXN0aWdhdGlvbiByZXN1bHRzLCB3aGljaCBjYW4gbGF0ZXIgYmUgZXhwb3J0ZWQuIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwiZmxhZ18yNHB4Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlJlbW92aW5nIG5vbi1jcml0aWNhbCBhbm5vdGF0aW9ucyB1bmNsdXR0ZXJzIHRoZSB2aWV3LiBSZW1vdmVkIGFubm90YXRpb25zIGFyZSByZW1vdmVkIGZyb20gYWxsIHZpc3VhbGl6YXRpb25zLiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsic3ZnSWNvbiIsInZpc2liaWxpdHlfb2ZmXzI0cHgiXSxbInRpdGxlIiwiSGlkZXMgYW5kIHNob3dzIHRoZSBzYW1wbGUgY291bnQgd2hlcmUgYXBwbGljYWJsZSAoaG93IG1hbnkgc2FtcGxlcyBiZWxvbmcgdG8gYSBjYXRlZ29yeSkuIiwxLCJzaG93LXRvZ2dsZSIsMywiY2hlY2tlZCIsImNoYW5nZSJdLFsidGl0bGUiLCJIaWRlcyBhbmQgc2hvd3MgaGlkZGVuIGFubm90YXRpb25zIGluIGFsbCB2aXN1YWxpemF0aW9ucy4iLDEsInNob3ctdG9nZ2xlIiwzLCJjaGVja2VkIiwiY2hhbmdlIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJoMyIsMSksUGYoMiksQ3UoKSxIbSgzLHJQdCw1LDIsIm5nLWNvbnRhaW5lciIsMiksQ3UoKSxIbSg0LHNQdCw2LDIsIm5nLWNvbnRhaW5lciIsMiksX3UoNSwiYnV0dG9uIiwzKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub2dnbGVFeHBhbmRlZC5lbWl0KCl9KSksTXUoNiwibWF0LWljb24iLDQpLEN1KCkpLDImZSYmKERjKDIpLGtmKCJBbm5vdGF0aW9ucyAoIixuLm51bUFubm90YXRpb25zLCIpIiksRGMoMSksaHUoIm5nSWYiLG4uZXhwYW5kZWQpLERjKDEpLGh1KCJuZ0lmIixuLmV4cGFuZGVkKSxEYygyKSxodSgic3ZnSWNvbiIsbi5leHBhbmRlZD8iZXhwYW5kX2xlc3NfMjRweCI6ImV4cGFuZF9tb3JlXzI0cHgiKSl9LGRpcmVjdGl2ZXM6W1B2LFdMLEVxLFFPdCxhUHRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlfS5hbm5vdGF0aW9ucy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmU7Zm9udC1zaXplOi45ZW07Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmctcmlnaHQ6MTBweH0uYW5ub3RhdGlvbnMtdGl0bGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7ZmxleDoxIDE7aGVpZ2h0OjQycHh9LnNob3ctdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6LjllbTttYXJnaW4tcmlnaHQ6LjhlbX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobFB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYW5ub3RhdGlvbnNfbGlzdF90b29sYmFyX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2Fubm90YXRpb25zX2xpc3RfdG9vbGJhcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7bnVtQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sZXhwYW5kZWQ6W3t0eXBlOlJffV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxhbm5vdGF0aW9uc0V4cGFuZGVkOlt7dHlwZTpSX31dLHNob3dDb3VudHM6W3t0eXBlOlJffV0sc2hvd0hpZGRlbjpbe3R5cGU6Ul99XSxvbkZsYWdBbm5vdGF0aW9uczpbe3R5cGU6RV99XSxvbkhpZGVBbm5vdGF0aW9uczpbe3R5cGU6RV99XSxvblRvZ2dsZUV4cGFuZGVkOlt7dHlwZTpFX31dLG9uVG9nZ2xlU2hvd0NvdW50czpbe3R5cGU6RV99XSxvblRvZ2dsZVNob3dIaWRkZW46W3t0eXBlOkVffV19KTtjbGFzcyBjUHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoUHh0KSx0aGlzLmFubm90YXRpb25zRXhwYW5kZWQkPXRoaXMuc3RvcmUuc2VsZWN0KE54dCksdGhpcy5zaG93Q291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChJeHQpLHRoaXMuc2hvd0hpZGRlbiQ9dGhpcy5zdG9yZS5zZWxlY3QoSHh0KSx0aGlzLmFubm90YXRpb25zRmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChTeHQpLHRoaXMuaXNBbm5vdGF0aW9uc0ZpbHRlclZhbGlkJD10aGlzLmFubm90YXRpb25zRmlsdGVyJC5waXBlKFZ0KCh0PT57dHJ5e3JldHVybiBCb29sZWFuKG5ldyBSZWdFeHAodCkpfWNhdGNoKHQpe3JldHVybiExfX0pKSl9ZmlsdGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUXZ0KHtyZWdleDp0fSkpfWZsYWdBbm5vdGF0aW9ucyh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEt2dCh7YW5ub3RhdGlvbnM6dH0pKX1oaWRlQW5ub3RhdGlvbnModCl7dGhpcy5zdG9yZS5kaXNwYXRjaChKdnQoe2Fubm90YXRpb25zOnR9KSl9dG9nZ2xlRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKHJ4dCgpKX10b2dnbGVTaG93Q291bnRzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChseHQoKSl9dG9nZ2xlU2hvd0hpZGRlbigpe3RoaXMuc3RvcmUuZGlzcGF0Y2goY3h0KCkpfX1jUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGNQdCkoZnUoaVMpKX0sY1B0Lsm1Y21wPXNvKHt0eXBlOmNQdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXIiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLGV4cGFuZGVkOiJleHBhbmRlZCJ9LGRlY2xzOjUsdmFyczoxNCxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsImV4cGFuZGVkIiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsImFubm90YXRpb25zRXhwYW5kZWQiLCJzaG93Q291bnRzIiwic2hvd0hpZGRlbiIsIm9uRmxhZ0Fubm90YXRpb25zIiwib25IaWRlQW5ub3RhdGlvbnMiLCJvblRvZ2dsZUV4cGFuZGVkIiwib25Ub2dnbGVTaG93Q291bnRzIiwib25Ub2dnbGVTaG93SGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQiLDApLER1KCJvbkZsYWdBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uZmxhZ0Fubm90YXRpb25zKGUpfSkpKCJvbkhpZGVBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGlkZUFubm90YXRpb25zKGUpfSkpKCJvblRvZ2dsZUV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRvZ2dsZUV4cGFuZGVkKCl9KSkoIm9uVG9nZ2xlU2hvd0NvdW50cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVTaG93Q291bnRzKCl9KSkoIm9uVG9nZ2xlU2hvd0hpZGRlbiIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVTaG93SGlkZGVuKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJudW1Bbm5vdGF0aW9ucyIsbi5udW1Bbm5vdGF0aW9ucykoImV4cGFuZGVkIixuLmV4cGFuZGVkKSgic2VsZWN0ZWRBbm5vdGF0aW9ucyIsQ3koMSw2LG4uc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgiYW5ub3RhdGlvbnNFeHBhbmRlZCIsQ3koMiw4LG4uYW5ub3RhdGlvbnNFeHBhbmRlZCQpKSgic2hvd0NvdW50cyIsQ3koMywxMCxuLnNob3dDb3VudHMkKSkoInNob3dIaWRkZW4iLEN5KDQsMTIsbi5zaG93SGlkZGVuJCkpfSxkaXJlY3RpdmVzOltsUHRdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjUHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXIiLHRlbXBsYXRlOidcbiAgICA8bnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXItY29tcG9uZW50XG4gICAgICBbbnVtQW5ub3RhdGlvbnNdPSJudW1Bbm5vdGF0aW9ucyJcbiAgICAgIFtleHBhbmRlZF09ImV4cGFuZGVkIlxuICAgICAgW3NlbGVjdGVkQW5ub3RhdGlvbnNdPSJzZWxlY3RlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2Fubm90YXRpb25zRXhwYW5kZWRdPSJhbm5vdGF0aW9uc0V4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgW3Nob3dDb3VudHNdPSJzaG93Q291bnRzJCB8IGFzeW5jIlxuICAgICAgW3Nob3dIaWRkZW5dPSJzaG93SGlkZGVuJCB8IGFzeW5jIlxuICAgICAgKG9uRmxhZ0Fubm90YXRpb25zKT0iZmxhZ0Fubm90YXRpb25zKCRldmVudCkiXG4gICAgICAob25IaWRlQW5ub3RhdGlvbnMpPSJoaWRlQW5ub3RhdGlvbnMoJGV2ZW50KSJcbiAgICAgIChvblRvZ2dsZUV4cGFuZGVkKT0idG9nZ2xlRXhwYW5kZWQoKSJcbiAgICAgIChvblRvZ2dsZVNob3dDb3VudHMpPSJ0b2dnbGVTaG93Q291bnRzKCkiXG4gICAgICAob25Ub2dnbGVTaG93SGlkZGVuKT0idG9nZ2xlU2hvd0hpZGRlbigpIlxuICAgID48L25wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtudW1Bbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxleHBhbmRlZDpbe3R5cGU6Ul99XX0pO2NvbnN0IGRQdD1bImdseXBoIl07Y2xhc3MgcFB0e25nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3ZnPXY4KHRoaXMuZ2x5cGhTVkcubmF0aXZlRWxlbWVudCksdGhpcy5tYWluQ29udGFpbmVyPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLHRoaXMuZHJhdygpfWRyYXcoKXsiY2lyY2xlIj09dGhpcy5zaGFwZT90aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJmaWxsIix0aGlzLmNvbG9yKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoImN4Iiw1KS5hdHRyKCJjeSIsNSkuYXR0cigiciIsNSk6ImJhciI9PXRoaXMuc2hhcGU/dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgicmVjdCIpLmF0dHIoImZpbGwiLHRoaXMuY29sb3IpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIiwxMCkuYXR0cigiaGVpZ2h0IiwxMCk6InJ1bkluZGljYXRvciI9PXRoaXMuc2hhcGUmJnRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIix0aGlzLmNvbG9yKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoImQiLCJNIDIgMCBMIDEwIDAgTCA3IDUgTCAxMCAxMCBMIDIgMTAgWiIpfX1wUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBQdCl9LHBQdC7JtWNtcD1zbyh7dHlwZTpwUHQsc2VsZWN0b3JzOltbIm5wbWktbGVnZW5kLWVsZW1lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlZ5KGRQdCw3LEtoKSwyJmUpe2xldCB0O0J5KHQ9ankoKSkmJihuLmdseXBoU1ZHPXQuZmlyc3QpfX0saW5wdXRzOnt0ZXh0OiJ0ZXh0Iixjb2xvcjoiY29sb3IiLHNoYXBlOiJzaGFwZSJ9LGRlY2xzOjQsdmFyczoxLGNvbnN0czpbWzEsImdseXBoIl0sWyJnbHlwaCIsIiJdLFsxLCJsZWdlbmQtZWxlbWVudC10aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxNdSgwLCJzdmciLDAsMSksYWEoKSxfdSgyLCJkaXYiLDIpLFBmKDMpLEN1KCkpLDImZSYmKERjKDMpLHdmKG4udGV4dCkpfSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7cGFkZGluZy1yaWdodDoxMHB4fS5sZWdlbmQtZWxlbWVudC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi44ZW07cGFkZGluZy1sZWZ0OjVweH0uZ2x5cGhbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHh9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHBQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWxlZ2VuZC1lbGVtZW50Iix0ZW1wbGF0ZVVybDoiLi9sZWdlbmRfZWxlbWVudF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9sZWdlbmRfZWxlbWVudF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7dGV4dDpbe3R5cGU6Ul99XSxjb2xvcjpbe3R5cGU6Ul99XSxzaGFwZTpbe3R5cGU6Ul99XSxnbHlwaFNWRzpbe3R5cGU6YXIsYXJnczpbImdseXBoIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dfSk7Y2xhc3MgbVB0e31mdW5jdGlvbiB1UHQodCxlKXtpZigxJnQmJk11KDAsIm1hdC1pY29uIiw4KSwyJnQpe2NvbnN0IHQ9TnUoMik7aHUoInN2Z0ljb24iLHQuc29ydC5vcmRlcj09PXQuU29ydE9yZGVyLkRFU0NFTkRJTkc/ImFycm93X2Rvd253YXJkXzI0cHgiOiJhcnJvd191cHdhcmRfMjRweCIpKCJuZ0NsYXNzIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5ERVNDRU5ESU5HPyJkb3duLWljb24iOiJ1cC1pY29uIil9fWZ1bmN0aW9uIGZQdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsNCksX3UoMSwiZGl2Iiw1KSxfdSgyLCJkaXYiLDYpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPVBpKHQpLiRpbXBsaWNpdDtyZXR1cm4gTnUoKS5vbkNoYW5nZVNvcnQuZW1pdChuKX0pKSxQZigzKSxIbSg0LHVQdCwxLDIsIm1hdC1pY29uIiw3KSxDdSgpLEN1KCksQ3UoKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1OdSgpO0RjKDMpLGtmKCIgIixuLnN0cmlwTWV0cmljKHQpLCIgIiksRGMoMSksaHUoIm5nSWYiLHQ9PT1uLnNvcnQubWV0cmljKX19bVB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtUHQpfSxtUHQuybVjbXA9c28oe3R5cGU6bVB0LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIl1dLGRlY2xzOjQsdmFyczowLGNvbnN0czpbWyJ0ZXh0IiwicnVuIGluZGljYXRvciIsImNvbG9yIiwicmdiKDAsMCwwKSIsInNoYXBlIiwicnVuSW5kaWNhdG9yIl0sWyJ0ZXh0IiwicG9zaXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigxMDksIDE3NCwgMjEzKSIsInNoYXBlIiwiYmFyIl0sWyJ0ZXh0IiwibmVnYXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigyNDksIDEwNSwgNzYpIiwic2hhcGUiLCJiYXIiXSxbInRleHQiLCJzYW1wbGUgY291bnQiLCJjb2xvciIsInJnYigxNTEsIDE1MSwgMTUxKSIsInNoYXBlIiwiY2lyY2xlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihNdSgwLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwwKSxNdSgxLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwxKSxNdSgyLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwyKSxNdSgzLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwzKSl9LGRpcmVjdGl2ZXM6W3BQdF0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDE2cHh9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKG1QdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIix0ZW1wbGF0ZVVybDoiLi9sZWdlbmRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbGVnZW5kX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCxudWxsKTtjbGFzcyBnUHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uQ2hhbmdlU29ydD1uZXcgU3ksdGhpcy5vbkFsbEFubm90YXRpb25zVG9nZ2xlZD1uZXcgU3ksdGhpcy5Tb3J0T3JkZXI9X3h0fXN0cmlwTWV0cmljKHQpe3JldHVybiBwQ3QodCl9fWdQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z1B0KX0sZ1B0Lsm1Y21wPXNvKHt0eXBlOmdQdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnQiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLHNvcnQ6InNvcnQifSxvdXRwdXRzOntvbkNoYW5nZVNvcnQ6Im9uQ2hhbmdlU29ydCIsb25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQ6Im9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIn0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwidG9nZ2xlLWFsbC1jb250YWluZXIiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsxLCJhbm5vdGF0aW9ucy1oZWFkZXItY29udGFpbmVycyJdLFsiY2xhc3MiLCJoZWFkZXItY29sdW1uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaGVhZGVyLWNvbHVtbiJdLFsxLCJoZWFkZXItY29udGFpbmVyIl0sWyJ0YWJpbmRleCIsIjAiLCJyb2xlIiwiYnV0dG9uIiwidGl0bGUiLCJDaGFuZ2UgdGhlIHNvcnQgYnkgY2xpY2tpbmcgYW55IG9mIHRoZSBtZXRyaWNzLiIsMSwiaGVhZGVyLWNsaWNrYWJsZSIsMywiY2xpY2siXSxbImNsYXNzIiwic29ydC1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyIsNCwibmdJZiJdLFsxLCJzb3J0LWljb24iLDMsInN2Z0ljb24iLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJkaXYiLDApLF91KDEsIm1hdC1jaGVja2JveCIsMSksRHUoImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQuZW1pdChlLmNoZWNrZWQpfSkpLEN1KCksQ3UoKSxfdSgyLCJkaXYiLDIpLEhtKDMsZlB0LDUsMiwiZGl2IiwzKSxDdSgpKSwyJmUmJihEYygxKSxodSgiY2hlY2tlZCIsbi5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aD09PW4ubnVtQW5ub3RhdGlvbnMpLERjKDIpLGh1KCJuZ0Zvck9mIixuLmFjdGl2ZU1ldHJpY3MpKX0sZGlyZWN0aXZlczpba1oseHYsUHYsRXEsQ3ZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2JvcmRlci1ib3R0b206MnB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDoyOHB4O2FsaWduLWl0ZW1zOmZsZXgtZW5kO21hcmdpbi10b3A6OHB4fS5hbm5vdGF0aW9ucy1oZWFkZXItY29udGFpbmVyc1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouOWVtO2ZvbnQtd2VpZ2h0OjUwMDtmbGV4LWdyb3c6MX0uaGVhZGVyLWNvbHVtbltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDF9LmhlYWRlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oZWFkZXItY2xpY2thYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7b3V0bGluZTpub25lfS50b2dnbGUtYWxsLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6MTBweDt3aWR0aDo5MHB4fS5zb3J0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxNnB4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihnUHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2hlYWRlcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9oZWFkZXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse251bUFubm90YXRpb25zOlt7dHlwZTpSX31dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sYWN0aXZlTWV0cmljczpbe3R5cGU6Ul99XSxzb3J0Olt7dHlwZTpSX31dLG9uQ2hhbmdlU29ydDpbe3R5cGU6RV99XSxvbkFsbEFubm90YXRpb25zVG9nZ2xlZDpbe3R5cGU6RV99XX0pO2NsYXNzIGhQdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zZWxlY3RlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChQeHQpLHRoaXMuYW5ub3RhdGlvblNvcnQkPXRoaXMuc3RvcmUuc2VsZWN0KEF4dCl9Y2hhbmdlU29ydCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKG94dCh7bWV0cmljOnR9KSl9YWxsQW5ub3RhdGlvbnNUb2dnbGVkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goWnZ0KHQ/e2Fubm90YXRpb25zOk9iamVjdC5rZXlzKHRoaXMuYW5ub3RhdGlvbnMpfTp7YW5ub3RhdGlvbnM6W119KSl9fWhQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aFB0KShmdShpUykpfSxoUHQuybVjbXA9c28oe3R5cGU6aFB0LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyIl1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixhbm5vdGF0aW9uczoiYW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MifSxkZWNsczozLHZhcnM6OCxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJzb3J0IiwiYWN0aXZlTWV0cmljcyIsIm9uQ2hhbmdlU29ydCIsIm9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudCIsMCksRHUoIm9uQ2hhbmdlU29ydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uY2hhbmdlU29ydChlKX0pKSgib25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmFsbEFubm90YXRpb25zVG9nZ2xlZChlKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksQ3UoKSksMiZlJiZodSgibnVtQW5ub3RhdGlvbnMiLG4ubnVtQW5ub3RhdGlvbnMpKCJzZWxlY3RlZEFubm90YXRpb25zIixDeSgxLDQsbi5zZWxlY3RlZEFubm90YXRpb25zJCkpKCJzb3J0IixDeSgyLDYsbi5hbm5vdGF0aW9uU29ydCQpKSgiYWN0aXZlTWV0cmljcyIsbi5hY3RpdmVNZXRyaWNzKX0sZGlyZWN0aXZlczpbZ1B0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaFB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXIiLHRlbXBsYXRlOidcbiAgICA8bnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnRcbiAgICAgIFtudW1Bbm5vdGF0aW9uc109Im51bUFubm90YXRpb25zIlxuICAgICAgW3NlbGVjdGVkQW5ub3RhdGlvbnNdPSJzZWxlY3RlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3NvcnRdPSJhbm5vdGF0aW9uU29ydCQgfCBhc3luYyJcbiAgICAgIFthY3RpdmVNZXRyaWNzXT0iYWN0aXZlTWV0cmljcyJcbiAgICAgIChvbkNoYW5nZVNvcnQpPSJjaGFuZ2VTb3J0KCRldmVudCkiXG4gICAgICAob25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQpPSJhbGxBbm5vdGF0aW9uc1RvZ2dsZWQoJGV2ZW50KSJcbiAgICA+PC9ucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLHtudW1Bbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxhbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTpSX31dfSk7Y29uc3QgYlB0PVsiY2hhcnQiXSx5UHQ9WyJoaW50Q2xpcCJdO2Z1bmN0aW9uIF9QdCh0LGUpezEmdCYmTXUoMCwibWF0LWljb24iLDEyKX1mdW5jdGlvbiBDUHQodCxlKXsxJnQmJk11KDAsIm1hdC1pY29uIiwxMyl9ZnVuY3Rpb24gTVB0KHQsZSl7aWYoMSZ0JiZNdSgwLCJtYXQtaWNvbiIsMTQpLDImdCl7Y29uc3QgdD1OdSgpO2h1KCJzdmdJY29uIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5TSU1JTEFSPyJhcnJvd19kb3dud2FyZF8yNHB4IjoiYXJyb3dfdXB3YXJkXzI0cHgiKSgibmdDbGFzcyIsdC5zb3J0Lm9yZGVyPT09dC5Tb3J0T3JkZXIuU0lNSUxBUj8iZG93bi1pY29uIjoidXAtaWNvbiIpfX1jbGFzcyB2UHR7Y29uc3RydWN0b3IoKXt0aGlzLnNlbGVjdGVkPSExLHRoaXMub25TaG93U2ltaWxhckFubm90YXRpb25zPW5ldyBTeSx0aGlzLlNvcnRPcmRlcj1feHQsdGhpcy53aWR0aD0xMCx0aGlzLmNoYXJ0V2lkdGg9MTAsdGhpcy5jaGFydEhlaWdodD0xMCx0aGlzLm1heERvdFJhZGl1cz0xMCx0aGlzLmNvdW50RG90T2Zmc2V0PTcwLHRoaXMuY291bnRUZXh0UGFkZGluZz0yLHRoaXMubWFyZ2luPXt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MTAwfSx0aGlzLnN0cm9rZUNvbG9yPSIjZmZmIix0aGlzLnRleHRDbGFzcz0iZGVmYXVsdC10ZXh0Iix0aGlzLnJ1bnM9W119b25SZXNpemUodCl7dGhpcy5yZWRyYXcoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN2Zz12OCh0aGlzLmFubm90YXRpb25Db250YWluZXIubmF0aXZlRWxlbWVudCkuc2VsZWN0KCJzdmciKSx0aGlzLnhTY2FsZT1fb3QoKS5wYWRkaW5nKDApLHRoaXMueVNjYWxlPV9vdCgpLnBhZGRpbmcoMCksdGhpcy5zaXplU2NhbGU9QW90KCkuZG9tYWluKFswLDFdKSx0aGlzLmNvdW50U2l6ZVNjYWxlPUFvdCgpLnJhbmdlKFsyLHRoaXMubWF4RG90UmFkaXVzXSksdGhpcy5tYWluQ29udGFpbmVyPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMubWFyZ2luLmxlZnR9LCAke3RoaXMubWFyZ2luLnRvcH0pYCksdGhpcy5iYXJzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMuY291bnREb3RzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMudGV4dHNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy5jb3VudFRleHRzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMucnVuSGludEdyb3VwPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLHRoaXMucmVkcmF3KCl9bmdPbkNoYW5nZXModCl7dGhpcy5zdmcmJnRoaXMucmVkcmF3KCl9cmVkcmF3KCl7dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMuaW5jbHVkZXModGhpcy5hbm5vdGF0aW9uKSx0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSx0aGlzLnNldFRleHRDbGFzcygpLHRoaXMudXBkYXRlQXhlcygpLHRoaXMuZHJhdygpfXVwZGF0ZURpbWVuc2lvbnMoKXtjb25zdCB0PW5ldyBTZXQ7dGhpcy5kYXRhLmZvckVhY2goKGU9Pnt0LmFkZChlLnJ1bil9KSksdGhpcy5ydW5zPVsuLi50XSx0aGlzLnN2Zy5zdHlsZSgiaGVpZ2h0Iix0aGlzLm51bUFjdGl2ZVJ1bnMqdGhpcy5ydW5IZWlnaHQrInB4IiksdGhpcy5jaGFydEhlaWdodD10aGlzLnJ1bnMubGVuZ3RoKnRoaXMucnVuSGVpZ2h0LXRoaXMubWFyZ2luLnRvcC10aGlzLm1hcmdpbi5ib3R0b20sdGhpcy53aWR0aD10aGlzLmFubm90YXRpb25Db250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aHx8MTAsdGhpcy5jaGFydFdpZHRoPXRoaXMud2lkdGgtdGhpcy5tYXJnaW4ubGVmdC10aGlzLm1hcmdpbi5yaWdodH1zZXRUZXh0Q2xhc3MoKXt0aGlzLnRleHRDbGFzcz0iZGVmYXVsdC10ZXh0Iix0aGlzLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyh0aGlzLmFubm90YXRpb24pP3RoaXMudGV4dENsYXNzPSJmbGFnLXRleHQiOnRoaXMuaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXModGhpcy5hbm5vdGF0aW9uKSYmKHRoaXMudGV4dENsYXNzPSJoaWRkZW4tdGV4dCIpfXVwZGF0ZUF4ZXMoKXt0aGlzLnhTY2FsZS5yYW5nZVJvdW5kKFswLHRoaXMuY2hhcnRXaWR0aC10aGlzLmNoYXJ0V2lkdGgvdGhpcy5hY3RpdmVNZXRyaWNzLmxlbmd0aF0pLmRvbWFpbih0aGlzLmFjdGl2ZU1ldHJpY3MubWFwKCh0PT5wQ3QodCkpKSksdGhpcy55U2NhbGUucmFuZ2VSb3VuZChbMCx0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMucnVuSGVpZ2h0XSkuZG9tYWluKHRoaXMucnVucyksdGhpcy5zaXplU2NhbGUucmFuZ2UoWzAsdGhpcy5jaGFydFdpZHRoL3RoaXMuYWN0aXZlTWV0cmljcy5sZW5ndGhdKSx0aGlzLmNvdW50U2l6ZVNjYWxlLmRvbWFpbihbMCx0aGlzLm1heENvdW50XSl9ZHJhdygpe3RoaXMuZHJhd1J1bkluZGljYXRvcnMoKSx0aGlzLmRyYXdSdW5IaW50VGV4dHMoKSx0aGlzLmRyYXdCYXJzKCksdGhpcy5kcmF3VGV4dHMoKSx0aGlzLnNob3dDb3VudHM/KHRoaXMuZHJhd0NvdW50RG90cygpLHRoaXMuZHJhd0NvdW50VGV4dHMoKSk6KHRoaXMuY291bnREb3RzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtZG90IikucmVtb3ZlKCksdGhpcy5jb3VudFRleHRzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtYmFja2dyb3VuZC10ZXh0IikucmVtb3ZlKCksdGhpcy5jb3VudFRleHRzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtdGV4dCIpLnJlbW92ZSgpKX1kcmF3UnVuSW5kaWNhdG9ycygpe3Y4KHRoaXMuY2xpcFBhdGhFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIix0aGlzLm1hcmdpbi5sZWZ0LTMwKS5hdHRyKCJoZWlnaHQiLHRoaXMuY2hhcnRIZWlnaHQpO2NvbnN0IHQ9dGhpcy5ydW5IaW50R3JvdXAuc2VsZWN0QWxsKCIuaGludCIpLmRhdGEodGhpcy5ydW5zKSxlPXQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImhpbnQiKTtlLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgMCBMIDE1IDAgTCAxMCAxMCBMIDE1IDIwIEwgMCAyMCBaIiksZS5tZXJnZSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoMTAsICR7dGhpcy55U2NhbGUodCkrNX0pYH0uYmluZCh0aGlzKSkuYXR0cigiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29sb3JTY2FsZSh0KX0uYmluZCh0aGlzKSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd1J1bkhpbnRUZXh0cygpe2NvbnN0IHQ9dGhpcy5ydW5IaW50R3JvdXAuc2VsZWN0QWxsKCIuaGludC10ZXh0IikuZGF0YSh0aGlzLnJ1bnMpO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IiwyNSkuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoImNsaXAtcGF0aCIsInVybCgjaGludC1jbGlwKSIpLm1lcmdlKHQpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0KSsxNX0uYmluZCh0aGlzKSkuYXR0cigiY2xhc3MiLGBoaW50LXRleHQgJHt0aGlzLnRleHRDbGFzc31gKS50ZXh0KCh0PT57dmFyIGU7cmV0dXJuKG51bGw9PT0oZT10aGlzLnJ1bklkVG9SdW5zLmdldCh0KSl8fHZvaWQgMD09PWU/dm9pZCAwOmUubmFtZSl8fCIifSkpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdCYXJzKCl7Y29uc3QgdD10aGlzLmJhcnNHcm91cC5zZWxlY3RBbGwoIi5iYXIiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiYmFyIikuYXR0cigiaGVpZ2h0IiwyMCkubWVyZ2UodCkuYXR0cigiZmlsbCIsKHQ9Pm51bGw9PT10Lm5QTUlWYWx1ZT8iIjp0Lm5QTUlWYWx1ZT49MD9KYXQodC5uUE1JVmFsdWUpOiRhdCgtMSp0Lm5QTUlWYWx1ZSkpKS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpfS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pKzV9LmJpbmQodGhpcykpLmF0dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQublBNSVZhbHVlPzA6dGhpcy5zaXplU2NhbGUoTWF0aC5hYnModC5uUE1JVmFsdWUpKX0uYmluZCh0aGlzKSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd0NvdW50RG90cygpe2NvbnN0IHQ9dGhpcy5jb3VudERvdHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1kb3QiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY2xhc3MiLCJjb3VudC1kb3QiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLm1lcmdlKHQpLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dC5jb3VudFZhbHVlPyIiOlFhdCh0LmNvdW50VmFsdWUvdGhpcy5tYXhDb3VudCl9LmJpbmQodGhpcykpLmF0dHIoImN4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpK3RoaXMuY291bnREb3RPZmZzZXR9LmJpbmQodGhpcykpLmF0dHIoImN5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLmF0dHIoInIiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dC5jb3VudFZhbHVlPzA6dGhpcy5jb3VudFNpemVTY2FsZSh0LmNvdW50VmFsdWUpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3VGV4dHMoKXtjb25zdCB0PXRoaXMudGV4dHNHcm91cC5zZWxlY3RBbGwoIi5ucG1pLWJhY2tncm91bmQtdGV4dCIpLmRhdGEodGhpcy5kYXRhKTt0LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJucG1pLWJhY2tncm91bmQtdGV4dCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMykuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKS5hdHRyKCJzdHJva2UiLHRoaXMuc3Ryb2tlQ29sb3IpLmF0dHIoImZvbnQtc2l6ZSIsIjEzcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5tZXJnZSh0KS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpKzV9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkudGV4dCgodD0+bnVsbD09PXQublBNSVZhbHVlPyJudWxsIjpNYXRoLnJvdW5kKDFlMyoodC5uUE1JVmFsdWUrTnVtYmVyLkVQU0lMT04pKS8xZTMpKSx0LmV4aXQoKS5yZW1vdmUoKTtjb25zdCBlPXRoaXMudGV4dHNHcm91cC5zZWxlY3RBbGwoIi5ucG1pLXRleHQiKS5kYXRhKHRoaXMuZGF0YSk7ZS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnBtaS10ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLm1lcmdlKGUpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYykrNX0uYmluZCh0aGlzKSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS50ZXh0KCh0PT5udWxsPT09dC5uUE1JVmFsdWU/Im51bGwiOk1hdGgucm91bmQoMWUzKih0Lm5QTUlWYWx1ZStOdW1iZXIuRVBTSUxPTikpLzFlMykpLGUuZXhpdCgpLnJlbW92ZSgpfWRyYXdDb3VudFRleHRzKCl7Y29uc3QgdD10aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1iYWNrZ3JvdW5kLXRleHQiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiY291bnQtYmFja2dyb3VuZC10ZXh0IikuYXR0cigic3Ryb2tlLXdpZHRoIiwzKS5hdHRyKCJzdHJva2UtbGluZWpvaW4iLCJyb3VuZCIpLmF0dHIoInN0cm9rZSIsdGhpcy5zdHJva2VDb2xvcikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLm1lcmdlKHQpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYykrdGhpcy5jb3VudERvdE9mZnNldCt0aGlzLmNvdW50VGV4dFBhZGRpbmcrdGhpcy5tYXhEb3RSYWRpdXN9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkudGV4dCgodD0+bnVsbD09PXQuY291bnRWYWx1ZT8iIjpJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCh0LmNvdW50VmFsdWUpKSksdC5leGl0KCkucmVtb3ZlKCk7Y29uc3QgZT10aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC10ZXh0IikuZGF0YSh0aGlzLmRhdGEpO2UuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImNvdW50LXRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxMHB4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikubWVyZ2UoZSkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlKHQubWV0cmljKSt0aGlzLmNvdW50RG90T2Zmc2V0K3RoaXMuY291bnRUZXh0UGFkZGluZyt0aGlzLm1heERvdFJhZGl1c30uYmluZCh0aGlzKSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS50ZXh0KCh0PT5udWxsPT09dC5jb3VudFZhbHVlPyIiOkludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KHQuY291bnRWYWx1ZSkpKSxlLmV4aXQoKS5yZW1vdmUoKX1zaW1pbGFyaXR5U29ydCh0KXt0aGlzLmhhc0VtYmVkZGluZyYmKHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vblNob3dTaW1pbGFyQW5ub3RhdGlvbnMuZW1pdCgpKX19dlB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2UHQpfSx2UHQuybVjbXA9c28oe3R5cGU6dlB0LHNlbGVjdG9yczpbWyJhbm5vdGF0aW9uLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KGJQdCw3LEtoKSxWeSh5UHQsNyxLaCkpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4uYW5ub3RhdGlvbkNvbnRhaW5lcj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5jbGlwUGF0aEVsZW1lbnQ9dC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZEdSgicmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSwhMSxPbCksMiZlJiZjZigic2VsZWN0ZWQtcm93IixuLnNlbGVjdGVkKX0saW5wdXRzOntkYXRhOiJkYXRhIixtYXhDb3VudDoibWF4Q291bnQiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGZsYWdnZWRBbm5vdGF0aW9uczoiZmxhZ2dlZEFubm90YXRpb25zIixoaWRkZW5Bbm5vdGF0aW9uczoiaGlkZGVuQW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLG51bUFjdGl2ZVJ1bnM6Im51bUFjdGl2ZVJ1bnMiLHNob3dDb3VudHM6InNob3dDb3VudHMiLGFubm90YXRpb246ImFubm90YXRpb24iLHJ1bkhlaWdodDoicnVuSGVpZ2h0IixoYXNFbWJlZGRpbmc6Imhhc0VtYmVkZGluZyIsc29ydDoic29ydCIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgiLGNvbG9yU2NhbGU6ImNvbG9yU2NhbGUiLHJ1bklkVG9SdW5zOiJydW5JZFRvUnVucyJ9LG91dHB1dHM6e29uU2hvd1NpbWlsYXJBbm5vdGF0aW9uczoib25TaG93U2ltaWxhckFubm90YXRpb25zIn0sZmVhdHVyZXM6W3FvXSxkZWNsczoxNCx2YXJzOjEwLGNvbnN0czpbWzEsImFubm90YXRpb24tdGl0bGUiXSxbMSwiYW5ub3RhdGlvbi1jaGVja2JveCIsMywiY2hlY2tlZCIsImNsaWNrIl0sWzEsImFubm90YXRpb24tYnV0dG9uIiwzLCJuZ0NsYXNzIiwiY2xpY2siXSxbImNsYXNzIiwiZmxhZ2dlZC1pY29uIiwic3ZnSWNvbiIsImZsYWdfMjRweCIsNCwibmdJZiJdLFsiY2xhc3MiLCJoaWRkZW4taWNvbiIsInN2Z0ljb24iLCJ2aXNpYmlsaXR5X29mZl8yNHB4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFubm90YXRpb24taWNvbiIsMywic3ZnSWNvbiIsIm5nQ2xhc3MiLDQsIm5nSWYiXSxbMSwiY2hhcnQtZGl2Il0sWyJjaGFydCIsIiJdLFsxLCJjaGFydC1zdmciXSxbImlkIiwiaGludC1jbGlwIl0sWyJoaW50Q2xpcCIsIiJdLFsieCIsIjAiLCJ5IiwiMCJdLFsic3ZnSWNvbiIsImZsYWdfMjRweCIsMSwiZmxhZ2dlZC1pY29uIl0sWyJzdmdJY29uIiwidmlzaWJpbGl0eV9vZmZfMjRweCIsMSwiaGlkZGVuLWljb24iXSxbMSwiYW5ub3RhdGlvbi1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJtYXQtY2hlY2tib3giLDEpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKX0pKSxDdSgpLF91KDIsImJ1dHRvbiIsMiksRHUoImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zaW1pbGFyaXR5U29ydChlKX0pKSxQZigzKSxDdSgpLEhtKDQsX1B0LDEsMCwibWF0LWljb24iLDMpLEhtKDUsQ1B0LDEsMCwibWF0LWljb24iLDQpLEhtKDYsTVB0LDEsMiwibWF0LWljb24iLDUpLEN1KCksX3UoNywiZGl2Iiw2LDcpLG9hKCksX3UoOSwic3ZnIiw4KSxfdSgxMCwiZGVmcyIpLF91KDExLCJjbGlwUGF0aCIsOSwxMCksTXUoMTMsInJlY3QiLDExKSxDdSgpLEN1KCksQ3UoKSxDdSgpKSwyJmUmJihjZigiZmxhZ2dlZC1hbm5vdGF0aW9uIixuLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyhuLmFubm90YXRpb24pKSgiaGlkZGVuLWFubm90YXRpb24iLG4uaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSYmIW4uZmxhZ2dlZEFubm90YXRpb25zLmluY2x1ZGVzKG4uYW5ub3RhdGlvbikpLERjKDEpLGh1KCJjaGVja2VkIixuLnNlbGVjdGVkQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSksRGMoMSksaHUoIm5nQ2xhc3MiLG4uaGFzRW1iZWRkaW5nPyJjbGlja2FibGUtYW5ub3RhdGlvbiI6IiIpLERjKDEpLGtmKCIgIixuLmFubm90YXRpb24sIiAiKSxEYygxKSxodSgibmdJZiIsbi5mbGFnZ2VkQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSksRGMoMSksaHUoIm5nSWYiLG4uaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSksRGMoMSksaHUoIm5nSWYiLG4uYW5ub3RhdGlvbj09PW4uc29ydC5tZXRyaWMpKX0sZGlyZWN0aXZlczpba1osQ3YsUHYsRXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudHtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC1zaXplOjI0cHh9Lm1hdC1oMSwubWF0LWhlYWRsaW5lLC5tYXQtdHlwb2dyYXBoeSBoMXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMiwubWF0LXRpdGxlLC5tYXQtdHlwb2dyYXBoeSBoMntmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMywubWF0LXN1YmhlYWRpbmctMiwubWF0LXR5cG9ncmFwaHkgaDN7Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDQsLm1hdC1zdWJoZWFkaW5nLTEsLm1hdC10eXBvZ3JhcGh5IGg0e2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1LC5tYXQtdHlwb2dyYXBoeSBoNXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNiwubWF0LXR5cG9ncmFwaHkgaDZ7Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmcsLm1hdC1ib2R5LTJ7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5LC5tYXQtYm9keS0xLC5tYXQtdHlwb2dyYXBoeXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHkgcCwubWF0LWJvZHktMSBwLC5tYXQtdHlwb2dyYXBoeSBwe21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsLC5tYXQtY2FwdGlvbntmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNCwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTR7Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zLC5tYXQtdHlwb2dyYXBoeSAubWF0LWRpc3BsYXktM3tmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yLC5tYXQtdHlwb2dyYXBoeSAubWF0LWRpc3BsYXktMntmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMSwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTF7Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcntmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbiwubWF0LXJhaXNlZC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9uLC5tYXQtZmxhdC1idXR0b24sLm1hdC1mYWIsLm1hdC1taW5pLWZhYntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJke2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGV7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZSwubWF0LWNhcmQtY29udGVudHtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dCAubWF0LWNoZWNrYm94LWxhYmVse2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwe2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sLm1hdC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb257Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbHtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsLC5tYXQtZm9vdGVyLWNlbGx7Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5e2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCwubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b257Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHRoe2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50e2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZHtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyLC5tYXQtZ3JpZC10aWxlLWZvb3Rlcntmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMiksLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudHttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yLC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2Vye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3R7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJ7aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbCwubWF0LXN0ZXBwZXItaG9yaXpvbnRhbHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVse2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9ye2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3J7Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVke2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWwsLm1hdC10YWItbGlua3tmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhciwubWF0LXRvb2xiYXIgaDEsLm1hdC10b29sYmFyIGgyLC5tYXQtdG9vbGJhciBoMywubWF0LXRvb2xiYXIgaDQsLm1hdC10b29sYmFyIGg1LC5tYXQtdG9vbGJhciBoNntmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXR7Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1zdWJoZWFkZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbntmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1zdWJoZWFkZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbHtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVle2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZSwubWF0LW5lc3RlZC10cmVlLW5vZGV7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxle292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZHtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnR7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXJpcHBsZS1lbGVtZW50e2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbntib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXIsLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVye3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcntwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcjplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVye2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmV7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9we3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AsLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2t7cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ3twYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94e3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0ey8qISovfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5key8qISovfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Omhvc3R7cGFkZGluZy10b3A6NXB4fS5hbm5vdGF0aW9uLXRpdGxle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjEzcHg7aGVpZ2h0OjIwcHg7cGFkZGluZzowIDEwcHg7dXNlci1zZWxlY3Q6bm9uZX0uc2VsZWN0ZWQtcm93e2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtkaXNwbGF5OmJsb2NrfS5mbGFnZ2VkLWFubm90YXRpb257Y29sb3I6I2Y1N2MwMH0uaGlkZGVuLWFubm90YXRpb257Y29sb3I6Izc1NzU3NX0uYW5ub3RhdGlvbi1jaGVja2JveHtwYWRkaW5nLXJpZ2h0OjVweH0uZmxhZ2dlZC1pY29ue3RyYW5zZm9ybTpzY2FsZSgwLjYpfS5oaWRkZW4taWNvbnt0cmFuc2Zvcm06c2NhbGUoMC42KX0uYW5ub3RhdGlvbi1pY29ue3RyYW5zZm9ybTpzY2FsZSgwLjYpfS5jaGFydC1kaXZ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYn0uY2hhcnQtc3Zne3dpZHRoOjEwMCU7dXNlci1zZWxlY3Q6bm9uZX0uZGVmYXVsdC10ZXh0e2ZpbGw6IzAwMH0uZmxhZy10ZXh0e2ZpbGw6I2Y1N2MwMH0uaGlkZGVuLXRleHR7ZmlsbDojNzU3NTc1fS5jbGlja2FibGUtYW5ub3RhdGlvbntjdXJzb3I6cG9pbnRlcn1idXR0b257YWxsOnVuc2V0fVxuJ10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih2UHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiYW5ub3RhdGlvbi1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2Fubm90YXRpb25fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYW5ub3RhdGlvbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaCxlbmNhcHN1bGF0aW9uOlduLk5vbmV9XX1dLG51bGwse2RhdGE6W3t0eXBlOlJffV0sbWF4Q291bnQ6W3t0eXBlOlJffV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxmbGFnZ2VkQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0saGlkZGVuQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sYWN0aXZlTWV0cmljczpbe3R5cGU6Ul99XSxudW1BY3RpdmVSdW5zOlt7dHlwZTpSX31dLHNob3dDb3VudHM6W3t0eXBlOlJffV0sYW5ub3RhdGlvbjpbe3R5cGU6Ul99XSxydW5IZWlnaHQ6W3t0eXBlOlJffV0saGFzRW1iZWRkaW5nOlt7dHlwZTpSX31dLHNvcnQ6W3t0eXBlOlJffV0sc2lkZWJhcldpZHRoOlt7dHlwZTpSX31dLGNvbG9yU2NhbGU6W3t0eXBlOlJffV0scnVuSWRUb1J1bnM6W3t0eXBlOlJffV0sYW5ub3RhdGlvbkNvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbImNoYXJ0Iix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLGNsaXBQYXRoRWxlbWVudDpbe3R5cGU6YXIsYXJnczpbImhpbnRDbGlwIix7c3RhdGljOiEwLHJlYWQ6S2h9XX1dLHNlbGVjdGVkOlt7dHlwZTpBXyxhcmdzOlsiY2xhc3Muc2VsZWN0ZWQtcm93Il19XSxvblJlc2l6ZTpbe3R5cGU6VF8sYXJnczpbIndpbmRvdzpyZXNpemUiXX1dLG9uU2hvd1NpbWlsYXJBbm5vdGF0aW9uczpbe3R5cGU6RV99XX0pO2NsYXNzIHhQdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zb3J0JD10aGlzLnN0b3JlLnNlbGVjdChBeHQpLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdCh3eHQpLHRoaXMuaGlkZGVuQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGt4dCksdGhpcy5zZWxlY3RlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChQeHQpLHRoaXMuc2hvd0NvdW50cyQ9dGhpcy5zdG9yZS5zZWxlY3QoSXh0KSx0aGlzLnNpZGViYXJXaWR0aCQ9dGhpcy5zdG9yZS5zZWxlY3QoTHh0KSx0aGlzLnJ1bkNvbG9yU2NhbGUkPXRoaXMuc3RvcmUuc2VsZWN0KFJJKS5waXBlKFZ0KCh0PT5lPT57aWYoIXQuaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKGBbQ29sb3Igc2NhbGVdIHVua25vd24gcnVuSWQ6ICR7ZX0uYCk7cmV0dXJuIHRbZV19KSkpLHRoaXMucnVuSWRUb1J1bnMkPXRoaXMuc3RvcmUuc2VsZWN0KGlJKX1zaG93U2ltaWxhckFubm90YXRpb25zKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChpeHQoe2Fubm90YXRpb246dGhpcy5hbm5vdGF0aW9ufSkpfX1mdW5jdGlvbiBPUHQodCxlKXtpZigxJnQpe2NvbnN0IHQ9UHUoKTtfdSgwLCJucG1pLWFubm90YXRpb24iLDUpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUobil7Y29uc3Qgbz1QaSh0KS4kaW1wbGljaXQ7cmV0dXJuIE51KDIpLnJvd0NsaWNrZWQobixvKX0pKSxDdSgpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPU51KDIpO2h1KCJkYXRhIixuLmFubm90YXRpb25zW3RdKSgiYWN0aXZlTWV0cmljcyIsbi5hY3RpdmVNZXRyaWNzKSgibnVtQWN0aXZlUnVucyIsbi5udW1BY3RpdmVSdW5zKSgibWF4Q291bnQiLG4ubWF4Q291bnQpKCJhbm5vdGF0aW9uIix0KSgicnVuSGVpZ2h0IixuLnJ1bkhlaWdodCkoImhhc0VtYmVkZGluZyIsbi5lbWJlZGRpbmdEYXRhJiZ2b2lkIDAhPT1uLmVtYmVkZGluZ0RhdGFbdF0pfX1mdW5jdGlvbiBQUHQodCxlKXtpZigxJnQmJih2dSgwKSxNdSgxLCJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIiksTXUoMiwibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlciIsMiksX3UoMywiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwzKSxIbSg0LE9QdCwxLDcsIm5wbWktYW5ub3RhdGlvbiIsNCksQ3UoKSx4dSgpKSwyJnQpe2NvbnN0IHQ9TnUoKTtEYygyKSxodSgiYW5ub3RhdGlvbnMiLHQuYW5ub3RhdGlvbnMpKCJudW1Bbm5vdGF0aW9ucyIsdC5udW1Bbm5vdGF0aW9ucykoImFjdGl2ZU1ldHJpY3MiLHQuYWN0aXZlTWV0cmljcyksRGMoMSksRnUoIml0ZW1TaXplIix0Lm51bUFjdGl2ZVJ1bnMqdC5ydW5IZWlnaHQrMjUpLERjKDEpLGh1KCJjZGtWaXJ0dWFsRm9yT2YiLHQuc29ydGVkQW5ub3RhdGlvbnMpfX14UHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhQdCkoZnUoaVMpKX0seFB0Lsm1Y21wPXNvKHt0eXBlOnhQdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9uIl1dLGlucHV0czp7ZGF0YToiZGF0YSIsbWF4Q291bnQ6Im1heENvdW50IixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixudW1BY3RpdmVSdW5zOiJudW1BY3RpdmVSdW5zIixhbm5vdGF0aW9uOiJhbm5vdGF0aW9uIixydW5IZWlnaHQ6InJ1bkhlaWdodCIsaGFzRW1iZWRkaW5nOiJoYXNFbWJlZGRpbmcifSxkZWNsczo5LHZhcnM6MzEsY29uc3RzOltbMywiZGF0YSIsIm1heENvdW50IiwiYWN0aXZlTWV0cmljcyIsIm51bUFjdGl2ZVJ1bnMiLCJhbm5vdGF0aW9uIiwicnVuSGVpZ2h0IiwiaGFzRW1iZWRkaW5nIiwic29ydCIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJmbGFnZ2VkQW5ub3RhdGlvbnMiLCJoaWRkZW5Bbm5vdGF0aW9ucyIsInNob3dDb3VudHMiLCJzaWRlYmFyV2lkdGgiLCJjb2xvclNjYWxlIiwicnVuSWRUb1J1bnMiLCJvblNob3dTaW1pbGFyQW5ub3RhdGlvbnMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKF91KDAsImFubm90YXRpb24tY29tcG9uZW50IiwwKSxEdSgib25TaG93U2ltaWxhckFubm90YXRpb25zIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnNob3dTaW1pbGFyQW5ub3RhdGlvbnMoKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIiksQ3UoKSksMiZlJiZodSgiZGF0YSIsbi5kYXRhKSgibWF4Q291bnQiLG4ubWF4Q291bnQpKCJhY3RpdmVNZXRyaWNzIixuLmFjdGl2ZU1ldHJpY3MpKCJudW1BY3RpdmVSdW5zIixuLm51bUFjdGl2ZVJ1bnMpKCJhbm5vdGF0aW9uIixuLmFubm90YXRpb24pKCJydW5IZWlnaHQiLG4ucnVuSGVpZ2h0KSgiaGFzRW1iZWRkaW5nIixuLmhhc0VtYmVkZGluZykoInNvcnQiLEN5KDEsMTUsbi5zb3J0JCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixDeSgyLDE3LG4uc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgiZmxhZ2dlZEFubm90YXRpb25zIixDeSgzLDE5LG4uZmxhZ2dlZEFubm90YXRpb25zJCkpKCJoaWRkZW5Bbm5vdGF0aW9ucyIsQ3koNCwyMSxuLmhpZGRlbkFubm90YXRpb25zJCkpKCJzaG93Q291bnRzIixDeSg1LDIzLG4uc2hvd0NvdW50cyQpKSgic2lkZWJhcldpZHRoIixDeSg2LDI1LG4uc2lkZWJhcldpZHRoJCkpKCJjb2xvclNjYWxlIixDeSg3LDI3LG4ucnVuQ29sb3JTY2FsZSQpKSgicnVuSWRUb1J1bnMiLEN5KDgsMjksbi5ydW5JZFRvUnVucyQpKX0sZGlyZWN0aXZlczpbdlB0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoeFB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbiIsdGVtcGxhdGU6J1xuICAgIDxhbm5vdGF0aW9uLWNvbXBvbmVudFxuICAgICAgW2RhdGFdPSJkYXRhIlxuICAgICAgW21heENvdW50XT0ibWF4Q291bnQiXG4gICAgICBbYWN0aXZlTWV0cmljc109ImFjdGl2ZU1ldHJpY3MiXG4gICAgICBbbnVtQWN0aXZlUnVuc109Im51bUFjdGl2ZVJ1bnMiXG4gICAgICBbYW5ub3RhdGlvbl09ImFubm90YXRpb24iXG4gICAgICBbcnVuSGVpZ2h0XT0icnVuSGVpZ2h0IlxuICAgICAgW2hhc0VtYmVkZGluZ109Imhhc0VtYmVkZGluZyJcbiAgICAgIFtzb3J0XT0ic29ydCQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RlZEFubm90YXRpb25zXT0ic2VsZWN0ZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtmbGFnZ2VkQW5ub3RhdGlvbnNdPSJmbGFnZ2VkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbaGlkZGVuQW5ub3RhdGlvbnNdPSJoaWRkZW5Bbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtzaG93Q291bnRzXT0ic2hvd0NvdW50cyQgfCBhc3luYyJcbiAgICAgIFtzaWRlYmFyV2lkdGhdPSJzaWRlYmFyV2lkdGgkIHwgYXN5bmMiXG4gICAgICBbY29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUkIHwgYXN5bmMiXG4gICAgICBbcnVuSWRUb1J1bnNdPSJydW5JZFRvUnVucyQgfCBhc3luYyJcbiAgICAgIChvblNob3dTaW1pbGFyQW5ub3RhdGlvbnMpPSJzaG93U2ltaWxhckFubm90YXRpb25zKCkiXG4gICAgPjwvYW5ub3RhdGlvbi1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSx7ZGF0YTpbe3R5cGU6Ul99XSxtYXhDb3VudDpbe3R5cGU6Ul99XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTpSX31dLG51bUFjdGl2ZVJ1bnM6W3t0eXBlOlJffV0sYW5ub3RhdGlvbjpbe3R5cGU6Ul99XSxydW5IZWlnaHQ6W3t0eXBlOlJffV0saGFzRW1iZWRkaW5nOlt7dHlwZTpSX31dfSk7Y2xhc3Mgd1B0e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJvd0NsaWNrPW5ldyBTeSx0aGlzLnJ1bkhlaWdodD0zMH1yb3dDbGlja2VkKHQsZSl7aWYodC5zaGlmdEtleSl7bGV0IHQ9dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5pbmRleE9mKGUpO2lmKDA9PT10aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoKXRoaXMub25Sb3dDbGljay5lbWl0KHRoaXMuc29ydGVkQW5ub3RhdGlvbnMuc2xpY2UoMCx0KzEpKTtlbHNle2NvbnN0IGU9dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9uc1t0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoLTFdKTt0aGlzLm9uUm93Q2xpY2suZW1pdChlPHQ/dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5zbGljZShlLHQrMSk6dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5zbGljZSh0LGUrMSkpfX1lbHNlIHRoaXMub25Sb3dDbGljay5lbWl0KFtlXSl9fXdQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8d1B0KX0sd1B0Lsm1Y21wPXNvKHt0eXBlOndQdCxzZWxlY3RvcnM6W1siYW5ub3RhdGlvbnMtbGlzdC1jb21wb25lbnQiXV0saW5wdXRzOnthbm5vdGF0aW9uczoiYW5ub3RhdGlvbnMiLGVtYmVkZGluZ0RhdGE6ImVtYmVkZGluZ0RhdGEiLGFubm90YXRpb25zRXhwYW5kZWQ6ImFubm90YXRpb25zRXhwYW5kZWQiLG51bUFubm90YXRpb25zOiJudW1Bbm5vdGF0aW9ucyIsYW5ub3RhdGlvblNvcnQ6ImFubm90YXRpb25Tb3J0IixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixudW1BY3RpdmVSdW5zOiJudW1BY3RpdmVSdW5zIixzb3J0ZWRBbm5vdGF0aW9uczoic29ydGVkQW5ub3RhdGlvbnMiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLG1heENvdW50OiJtYXhDb3VudCJ9LG91dHB1dHM6e29uUm93Q2xpY2s6Im9uUm93Q2xpY2sifSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsImV4cGFuZGVkIl0sWzQsIm5nSWYiXSxbMywiYW5ub3RhdGlvbnMiLCJudW1Bbm5vdGF0aW9ucyIsImFjdGl2ZU1ldHJpY3MiXSxbIm1pbkJ1ZmZlclB4IiwiMzAwIiwibWF4QnVmZmVyUHgiLCI2MDAiLDEsImFubm90YXRpb24tcm93cyIsMywiaXRlbVNpemUiXSxbMywiZGF0YSIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwibWF4Q291bnQiLCJhbm5vdGF0aW9uIiwicnVuSGVpZ2h0IiwiaGFzRW1iZWRkaW5nIiwiY2xpY2siLDQsImNka1ZpcnR1YWxGb3IiLCJjZGtWaXJ0dWFsRm9yT2YiXSxbMywiZGF0YSIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwibWF4Q291bnQiLCJhbm5vdGF0aW9uIiwicnVuSGVpZ2h0IiwiaGFzRW1iZWRkaW5nIiwiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyIiwwKSxIbSgxLFBQdCw1LDUsIm5nLWNvbnRhaW5lciIsMSkpLDImZSYmKGh1KCJudW1Bbm5vdGF0aW9ucyIsbi5udW1Bbm5vdGF0aW9ucykoImV4cGFuZGVkIixuLmFubm90YXRpb25zRXhwYW5kZWQpLERjKDEpLGh1KCJuZ0lmIixuLmFubm90YXRpb25zRXhwYW5kZWQpKX0sZGlyZWN0aXZlczpbY1B0LFB2LG1QdCxoUHQsZEIsYUIsbUIseFB0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OmNhbGMoMTAwJSAtIDJweCk7d2lkdGg6Y2FsYygxMDAlIC0gMnB4KX0uYW5ub3RhdGlvbi1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAxO292ZXJmbG93LXk6YXV0b30nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod1B0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6ImFubm90YXRpb25zLWxpc3QtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9hbm5vdGF0aW9uc19saXN0X2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2Fubm90YXRpb25zX2xpc3RfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse2Fubm90YXRpb25zOlt7dHlwZTpSX31dLGVtYmVkZGluZ0RhdGE6W3t0eXBlOlJffV0sYW5ub3RhdGlvbnNFeHBhbmRlZDpbe3R5cGU6Ul99XSxudW1Bbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxhbm5vdGF0aW9uU29ydDpbe3R5cGU6Ul99XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTpSX31dLG51bUFjdGl2ZVJ1bnM6W3t0eXBlOlJffV0sc29ydGVkQW5ub3RhdGlvbnM6W3t0eXBlOlJffV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxtYXhDb3VudDpbe3R5cGU6Ul99XSxvblJvd0NsaWNrOlt7dHlwZTpFX31dfSk7Y2xhc3Mga1B0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFubm90YXRpb25zRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShyUyhOeHQpKSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShyUyhESSkpLnBpcGUoVnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5lbWJlZGRpbmdEYXRhJD10aGlzLnN0b3JlLnBpcGUoclMoT3h0KSksdGhpcy5udW1BY3RpdmVSdW5zJD10aGlzLmFjdGl2ZVJ1bnMkLnBpcGUoVnQoKHQ9PnQubGVuZ3RoKSkpLHRoaXMuYWN0aXZlTWV0cmljcyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KHh4dCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLnN0b3JlLnNlbGVjdChFeHQpXSkucGlwZShWdCgoKFt0LGUsbl0pPT57bGV0IG89W107Zm9yKGNvbnN0IG4gb2YgZSl0W25dJiYobz1vLmNvbmNhdCh0W25dLmZpbHRlcigodD0+ZEN0KHQpKSkpKTtyZXR1cm4gbz1bLi4ubmV3IFNldChbLi4uT2JqZWN0LmtleXMobiksLi4ub10pXSxvfSkpKSx0aGlzLnZpc2libGVBbm5vdGF0aW9ucyQ9S3QoW3RoaXMuc3RvcmUuc2VsZWN0KHZ4dCksdGhpcy5zdG9yZS5zZWxlY3Qoa3h0KSx0aGlzLnN0b3JlLnNlbGVjdChIeHQpXSkucGlwZShWdCgoKFt0LGUsbl0pPT5UT3QodCxlLG4pKSkpLHRoaXMuZmlsdGVyZWRBbm5vdGF0aW9ucyQ9S3QoW3RoaXMudmlzaWJsZUFubm90YXRpb25zJCx0aGlzLnN0b3JlLnNlbGVjdChSeHQpLHRoaXMuc3RvcmUuc2VsZWN0KEV4dCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLmFjdGl2ZU1ldHJpY3MkLHRoaXMuc3RvcmUuc2VsZWN0KFN4dCldKS5waXBlKFZ0KCgoW3QsZSxuLG8saSxhXSk9PkFPdCh0LG8sZSxuLGksYSkpKSkucGlwZShJZSgpKSx0aGlzLm51bUFubm90YXRpb25zJD10aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLnBpcGUoVnQoKHQ9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aCkpKSx0aGlzLnNvcnRlZEFubm90YXRpb25zJD1LdChbdGhpcy5maWx0ZXJlZEFubm90YXRpb25zJCx0aGlzLnN0b3JlLnBpcGUoclMoQXh0KSksdGhpcy5lbWJlZGRpbmdEYXRhJF0pLnBpcGUoVnQoKChbdCxlLG5dKT0+Vk90KHQsZSxuKSkpKSx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUucGlwZShyUyhQeHQpKSx0aGlzLm1heENvdW50JD10aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLnBpcGUoVnQoKHQ9PntsZXQgZT0wO3JldHVybiBPYmplY3QudmFsdWVzKHQpLmZvckVhY2goKHQ9Pnt0LmZvckVhY2goKHQ9Pnt0LmNvdW50VmFsdWUmJihlPU1hdGgubWF4KGUsdC5jb3VudFZhbHVlKSl9KSl9KSksZX0pKSl9cm93Q2xpY2tlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHF2dCh7YW5ub3RhdGlvbnM6dH0pKX19a1B0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrUHQpKGZ1KGlTKSl9LGtQdC7JtWNtcD1zbyh7dHlwZTprUHQsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtbGlzdCJdXSxkZWNsczoxMCx2YXJzOjI3LGNvbnN0czpbWzMsImFubm90YXRpb25zIiwiZW1iZWRkaW5nRGF0YSIsImFubm90YXRpb25zRXhwYW5kZWQiLCJudW1Bbm5vdGF0aW9ucyIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwic29ydGVkQW5ub3RhdGlvbnMiLCJzZWxlY3RlZEFubm90YXRpb25zIiwibWF4Q291bnQiLCJvblJvd0NsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJhbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudCIsMCksRHUoIm9uUm93Q2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnJvd0NsaWNrZWQoZSl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksX3koNCwiYXN5bmMiKSxfeSg1LCJhc3luYyIpLF95KDYsImFzeW5jIiksX3koNywiYXN5bmMiKSxfeSg4LCJhc3luYyIpLF95KDksImFzeW5jIiksQ3UoKSksMiZlJiZodSgiYW5ub3RhdGlvbnMiLEN5KDEsOSxuLmZpbHRlcmVkQW5ub3RhdGlvbnMkKSkoImVtYmVkZGluZ0RhdGEiLEN5KDIsMTEsbi5lbWJlZGRpbmdEYXRhJCkpKCJhbm5vdGF0aW9uc0V4cGFuZGVkIixDeSgzLDEzLG4uYW5ub3RhdGlvbnNFeHBhbmRlZCQpKSgibnVtQW5ub3RhdGlvbnMiLEN5KDQsMTUsbi5udW1Bbm5vdGF0aW9ucyQpKSgiYWN0aXZlTWV0cmljcyIsQ3koNSwxNyxuLmFjdGl2ZU1ldHJpY3MkKSkoIm51bUFjdGl2ZVJ1bnMiLEN5KDYsMTksbi5udW1BY3RpdmVSdW5zJCkpKCJzb3J0ZWRBbm5vdGF0aW9ucyIsQ3koNywyMSxuLnNvcnRlZEFubm90YXRpb25zJCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixDeSg4LDIzLG4uc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgibWF4Q291bnQiLEN5KDksMjUsbi5tYXhDb3VudCQpKX0sZGlyZWN0aXZlczpbd1B0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa1B0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdCIsdGVtcGxhdGU6J1xuICAgIDxhbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudFxuICAgICAgW2Fubm90YXRpb25zXT0iZmlsdGVyZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtlbWJlZGRpbmdEYXRhXT0iZW1iZWRkaW5nRGF0YSQgfCBhc3luYyJcbiAgICAgIFthbm5vdGF0aW9uc0V4cGFuZGVkXT0iYW5ub3RhdGlvbnNFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtudW1Bbm5vdGF0aW9uc109Im51bUFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZU1ldHJpY3NdPSJhY3RpdmVNZXRyaWNzJCB8IGFzeW5jIlxuICAgICAgW251bUFjdGl2ZVJ1bnNdPSJudW1BY3RpdmVSdW5zJCB8IGFzeW5jIlxuICAgICAgW3NvcnRlZEFubm90YXRpb25zXT0ic29ydGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbbWF4Q291bnRdPSJtYXhDb3VudCQgfCBhc3luYyJcbiAgICAgIChvblJvd0NsaWNrKT0icm93Q2xpY2tlZCgkZXZlbnQpIlxuICAgID48L2Fubm90YXRpb25zLWxpc3QtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y29uc3QgU1B0PVsiY2hhcnQiXTtjbGFzcyBEUHR7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTAsdGhpcy5jaGFydFdpZHRoPTAsdGhpcy5oZWlnaHQ9MzAwLHRoaXMubWFyZ2luPXt0b3A6MjAscmlnaHQ6NDAsYm90dG9tOjIwLGxlZnQ6NDB9LHRoaXMuY2hhcnRIZWlnaHQ9dGhpcy5oZWlnaHQtdGhpcy5tYXJnaW4udG9wLXRoaXMubWFyZ2luLmJvdHRvbX1vblJlc2l6ZSh0KXt0aGlzLnJlZHJhdygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3ZnPXY4KHRoaXMuc3ZnRWxlbWVudC5uYXRpdmVFbGVtZW50KSx0aGlzLm1haW5Db250YWluZXI9dGhpcy5zdmcuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5tYXJnaW4ubGVmdH0sICR7dGhpcy5tYXJnaW4udG9wfSlgKSx0aGlzLmNvb3JkaW5hdGVzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMubGFiZWxzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMuYXhpc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnhTY2FsZT1fb3QoKS5wYWRkaW5nKC4xKSx0aGlzLnlTY2FsZT1Bb3QoKS5yYW5nZShbdGhpcy5jaGFydEhlaWdodCwwXSksdGhpcy55QXhpcz1hNyh0aGlzLnlTY2FsZSksdGhpcy5yZWRyYXcoKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLnN2ZyYmdGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSx0aGlzLnVwZGF0ZUF4ZXMoKSx0aGlzLmRyYXcoKX11cGRhdGVEaW1lbnNpb25zKCl7dGhpcy53aWR0aD10aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aHx8MTAsdGhpcy5jaGFydFdpZHRoPXRoaXMud2lkdGgtdGhpcy5tYXJnaW4ubGVmdC10aGlzLm1hcmdpbi5yaWdodH11cGRhdGVBeGVzKCl7dGhpcy54U2NhbGUucmFuZ2VSb3VuZChbMCx0aGlzLmNoYXJ0V2lkdGhdKS5kb21haW4odGhpcy5hY3RpdmVNZXRyaWNzKSx0aGlzLnlTY2FsZS5kb21haW4oW3RoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWluLHRoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWF4XSl9ZHJhdygpe3RoaXMuZHJhd0F4ZXMoKSx0aGlzLmRyYXdBeGlzTGFiZWxzKCksdGhpcy5kcmF3Q29vcmRpbmF0ZXMoKSx0aGlzLmRyYXdMYWJlbHMoKX1kcmF3QXhlcygpe2NvbnN0IHQ9dGhpcy5heGlzR3JvdXAuc2VsZWN0QWxsKCIuYXhpcy15IikuZGF0YSh0aGlzLmFjdGl2ZU1ldHJpY3MpO3QuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImF4aXMteSIpLm1lcmdlKHQpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHQpfSwgMClgfS5iaW5kKHRoaXMpKS5jYWxsKHRoaXMueUF4aXMpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdBeGlzTGFiZWxzKCl7Y29uc3QgdD10aGlzLmF4aXNHcm91cC5zZWxlY3RBbGwoIi5heGlzLWJnLXRleHQiKS5kYXRhKHRoaXMuYWN0aXZlTWV0cmljcyk7dC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiYXhpcy1iZy10ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMikuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKS5hdHRyKCJzdHJva2UiLCJ3aGl0ZSIpLm1lcmdlKHQpLnRleHQoKHQ9PnQpKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZSh0KS01fSwgJHt0aGlzLnlTY2FsZSh0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1pbil9KSByb3RhdGUoLTkwKWB9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IGU9dGhpcy5heGlzR3JvdXAuc2VsZWN0QWxsKCIuYXhpcy10ZXh0IikuZGF0YSh0aGlzLmFjdGl2ZU1ldHJpY3MpO2UuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxM3B4IikuYXR0cigiY2xhc3MiLCJheGlzLXRleHQiKS5tZXJnZShlKS50ZXh0KCh0PT50KSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm5gdHJhbnNsYXRlKCR7dGhpcy54U2NhbGUodCktNX0sICR7dGhpcy55U2NhbGUodGhpcy5jb29yZGluYXRlRGF0YS5leHRyZW1lcy5taW4pfSkgcm90YXRlKC05MClgfS5iaW5kKHRoaXMpKSxlLmV4aXQoKS5yZW1vdmUoKX1kcmF3Q29vcmRpbmF0ZXMoKXtjb25zdCB0PXRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLmRhdGEodGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlcyk7dC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiY29vcmQiKS5hdHRyKCJmaWxsIiwibm9uZSIpLm1lcmdlKHQpLmF0dHIoImQiLHRoaXMucGF0aC5iaW5kKHRoaXMpKS5hdHRyKCJzdHJva2UiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbG9yU2NhbGUodC5ydW5JZCl9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IGU9dGhpcy5jb29yZGluYXRlc0dyb3VwLnNlbGVjdEFsbCgiLmhpZGRlbkNvb3JkIikuZGF0YSh0aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzKTtlLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJoaWRkZW5Db29yZCIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjEwcHgiKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInN0cm9rZSIsInJnYmEoMCwgMCwgMCwgMC4wKSIpLm9uKCJtb3VzZW92ZXIiLHRoaXMuaGFuZGxlQ29vcmRpbmF0ZU1vdXNlT3Zlci5iaW5kKHRoaXMpKS5vbigibW91c2VvdXQiLHRoaXMuaGFuZGxlQ29vcmRpbmF0ZU1vdXNlT3V0LmJpbmQodGhpcykpLm1lcmdlKGUpLmF0dHIoImQiLHRoaXMucGF0aC5iaW5kKHRoaXMpKSxlLmV4aXQoKS5yZW1vdmUoKX1wYXRoKHQpe3JldHVybiB0LnZhbHVlcy5zb3J0KCgodCxlKT0+dGhpcy5hY3RpdmVNZXRyaWNzLmluZGV4T2YodC5tZXRyaWMpLXRoaXMuYWN0aXZlTWV0cmljcy5pbmRleE9mKGUubWV0cmljKSkpLGFydCgpKHQudmFsdWVzLm1hcChmdW5jdGlvbih0KXtsZXQgZT10aGlzLnlTY2FsZSh0Lm5QTUlWYWx1ZSk7cmV0dXJuW3RoaXMueFNjYWxlKHQubWV0cmljKSxlXX0uYmluZCh0aGlzKSkpfWhhbmRsZUNvb3JkaW5hdGVNb3VzZU92ZXIodCxlKXt0aGlzLmxhYmVsc0dyb3VwLnNlbGVjdEFsbCgiLmNvb3JkaW5hdGUtbGFiZWwiKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEoZS5hbm5vdGF0aW9uPT09dC5hbm5vdGF0aW9uKX0pKS5zdHlsZSgib3BhY2l0eSIsLjEpLHRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIShlLmFubm90YXRpb249PT10LmFubm90YXRpb24pfSkpLnN0eWxlKCJvcGFjaXR5IiwuMSl9aGFuZGxlQ29vcmRpbmF0ZU1vdXNlT3V0KCl7dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuc3R5bGUoIm9wYWNpdHkiLDEpLHRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLnN0eWxlKCJvcGFjaXR5IiwxKX1kcmF3TGFiZWxzKCl7Y29uc3QgdD0zMC90aGlzLnhTY2FsZS5zdGVwKCksZT10aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzLmxlbmd0aDwzMD90aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzOltdLG49dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuZGF0YShlKTtuLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJjb29yZGluYXRlLWxhYmVsIikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLm1lcmdlKG4pLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFubm90YXRpb259KSkuYXR0cigieCIsdGhpcy54U2NhbGUodGhpcy5hY3RpdmVNZXRyaWNzWzBdKSszMCkuYXR0cigieSIsZnVuY3Rpb24oZSl7Y29uc3Qgbj10aGlzLnlTY2FsZShlLnZhbHVlc1swXS5uUE1JVmFsdWU/ZS52YWx1ZXNbMF0ublBNSVZhbHVlOjApLG89dGhpcy55U2NhbGUoZS52YWx1ZXNbMV0ublBNSVZhbHVlP2UudmFsdWVzWzFdLm5QTUlWYWx1ZTowKTtyZXR1cm4oMS10KSpuK3Qqb30uYmluZCh0aGlzKSksbi5leGl0KCkucmVtb3ZlKCl9fURQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RFB0KX0sRFB0Lsm1Y21wPXNvKHt0eXBlOkRQdCxzZWxlY3RvcnM6W1sicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZWeShTUHQsNyxLaCksMiZlKXtsZXQgdDtCeSh0PWp5KCkpJiYobi5zdmdFbGVtZW50PXQuZmlyc3QpfX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkR1KCJyZXNpemUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVzaXplKGUpfSksITEsT2wpfSxpbnB1dHM6e2FjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLGNvb3JkaW5hdGVEYXRhOiJjb29yZGluYXRlRGF0YSIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgiLGNvbG9yU2NhbGU6ImNvbG9yU2NhbGUifSxmZWF0dXJlczpbcW9dLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWzEsInBjLWNoYXJ0Il0sWyJjaGFydCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYob2EoKSxNdSgwLCJzdmciLDAsMSkpfSxzdHlsZXM6WyIucGMtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDozMDBweDt3aWR0aDoxMDAlfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihEUHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9wYXJhbGxlbF9jb29yZGluYXRlc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9wYXJhbGxlbF9jb29yZGluYXRlc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7YWN0aXZlTWV0cmljczpbe3R5cGU6Ul99XSxjb29yZGluYXRlRGF0YTpbe3R5cGU6Ul99XSxzaWRlYmFyV2lkdGg6W3t0eXBlOlJffV0sY29sb3JTY2FsZTpbe3R5cGU6Ul99XSxzdmdFbGVtZW50Olt7dHlwZTphcixhcmdzOlsiY2hhcnQiLHtzdGF0aWM6ITAscmVhZDpLaH1dfV0sb25SZXNpemU6W3t0eXBlOlRfLGFyZ3M6WyJ3aW5kb3c6cmVzaXplIixbIiRldmVudCJdXX1dfSk7Y2xhc3MgUlB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShyUyhESSkpLnBpcGUoVnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5hY3RpdmVNZXRyaWNzJD1LdCh0aGlzLnN0b3JlLnNlbGVjdCh4eHQpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QoRXh0KSkucGlwZShWdCgoKFt0LGUsbl0pPT57bGV0IG89W107Zm9yKGNvbnN0IG4gb2YgZSl0W25dJiYobz1vLmNvbmNhdCh0W25dLmZpbHRlcigodD0+ZEN0KHQpKSkpKTtyZXR1cm4gbz1bLi4ubmV3IFNldChbLi4uT2JqZWN0LmtleXMobiksLi4ub10pXSxvLm1hcCgodD0+cEN0KHQpKSl9KSkpLHRoaXMuY29vcmRpbmF0ZURhdGEkPUt0KFt0aGlzLnN0b3JlLnNlbGVjdCh2eHQpLHRoaXMuc3RvcmUuc2VsZWN0KFB4dCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLmFjdGl2ZU1ldHJpY3MkXSkucGlwZShWdCgoKFt0LGUsbixvXSk9PihmdW5jdGlvbiBpKHQsZSxuLG8pe2NvbnN0IGk9W10sYT17bWF4Oi0xLG1pbjoxfSxyPW5ldyBTZXQobikscz1uZXcgU2V0KG8pO3JldHVybiAwPT09ci5zaXplfHwwPT09cy5zaXplfHwwPT09T2JqZWN0LmtleXModCkubGVuZ3RoP3tjb29yZGluYXRlczpbXSxleHRyZW1lczp7bWluOi0xLG1heDoxfX06KGUuZm9yRWFjaCgoZT0+e2NvbnN0IG49e307dFtlXS5mb3JFYWNoKCh0PT57ci5oYXModC5ydW4pJiZzLmhhcyh0Lm1ldHJpYykmJihuW3QucnVuXT9uW3QucnVuXS5wdXNoKHQpOm5bdC5ydW5dPVt0XSxudWxsIT09dC5uUE1JVmFsdWU/KGEubWF4PU1hdGgubWF4KGEubWF4LHQublBNSVZhbHVlKSxhLm1pbj1NYXRoLm1pbihhLm1pbix0Lm5QTUlWYWx1ZSkpOihhLm1heD1NYXRoLm1heChhLm1heCwwKSxhLm1pbj1NYXRoLm1pbihhLm1pbiwwKSkpfSkpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKG4pKWkucHVzaCh7YW5ub3RhdGlvbjplLHJ1bklkOnQsdmFsdWVzOm5bdF19KX0pKSxhLm1heDxhLm1pbiYmKGEubWF4PTEsYS5taW49LTEpLHtjb29yZGluYXRlczppLGV4dHJlbWVzOmF9KX0pKHQsZSxuLG8pKSkpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChMeHQpLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3QoUkkpLnBpcGUoVnQoKHQ9PmU9PntpZighdC5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoYFtDb2xvciBzY2FsZV0gdW5rbm93biBydW5JZDogJHtlfS5gKTtyZXR1cm4gdFtlXX0pKSl9fWZ1bmN0aW9uIEVQdCh0LGUpezEmdCYmTXUoMCwibWF0LWljb24iLDkpfWZ1bmN0aW9uIEFQdCh0LGUpezEmdCYmTXUoMCwibWF0LWljb24iLDEwKX1mdW5jdGlvbiBUUHQodCxlKXsxJnQmJk11KDAsIm5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiKX1SUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJQdCkoZnUoaVMpKX0sUlB0Lsm1Y21wPXNvKHt0eXBlOlJQdCxzZWxlY3RvcnM6W1sibnBtaS1wYXJhbGxlbC1jb29yZGluYXRlcyJdXSxkZWNsczo1LHZhcnM6MTIsY29uc3RzOltbMywiYWN0aXZlTWV0cmljcyIsImNvb3JkaW5hdGVEYXRhIiwic2lkZWJhcldpZHRoIiwiY29sb3JTY2FsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpKSwyJmUmJmh1KCJhY3RpdmVNZXRyaWNzIixDeSgxLDQsbi5hY3RpdmVNZXRyaWNzJCkpKCJjb29yZGluYXRlRGF0YSIsQ3koMiw2LG4uY29vcmRpbmF0ZURhdGEkKSkoInNpZGViYXJXaWR0aCIsQ3koMyw4LG4uc2lkZWJhcldpZHRoJCkpKCJjb2xvclNjYWxlIixDeSg0LDEwLG4ucnVuQ29sb3JTY2FsZSQpKX0sZGlyZWN0aXZlczpbRFB0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoUlB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiLHRlbXBsYXRlOidcbiAgICA8cGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50XG4gICAgICBbYWN0aXZlTWV0cmljc109ImFjdGl2ZU1ldHJpY3MkIHwgYXN5bmMiXG4gICAgICBbY29vcmRpbmF0ZURhdGFdPSJjb29yZGluYXRlRGF0YSQgfCBhc3luYyJcbiAgICAgIFtzaWRlYmFyV2lkdGhdPSJzaWRlYmFyV2lkdGgkIHwgYXN5bmMiXG4gICAgICBbY29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUkIHwgYXN5bmMiXG4gICAgPjwvcGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgTlB0e2NvbnN0cnVjdG9yKCl7dGhpcy5vbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucz1uZXcgU3ksdGhpcy5vblRvZ2dsZUV4cGFuZGVkPW5ldyBTeX19TlB0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOUHQpfSxOUHQuybVjbXA9c28oe3R5cGU6TlB0LHNlbGVjdG9yczpbWyJzZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnQiXV0saW5wdXRzOntwY0V4cGFuZGVkOiJwY0V4cGFuZGVkIixzZWxlY3RlZEFubm90YXRpb25zOiJzZWxlY3RlZEFubm90YXRpb25zIn0sb3V0cHV0czp7b25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnM6Im9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zIixvblRvZ2dsZUV4cGFuZGVkOiJvblRvZ2dsZUV4cGFuZGVkIn0sZGVjbHM6MTEsdmFyczo0LGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIkNsZWFyIEFubm90YXRpb24gU2VsZWN0aW9uIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgY2xlYXJzIHRoZSBhbm5vdGF0aW9uIHNlbGVjdGlvbi7ikJ8yYjUyMjg5ZjJjNGI3ZjViMTgyZWQyM2M5MTU0NzIyZWNkNDZhMmQ04pCfMjQ5NDY2MDUyMDM0MTMwODgzMDpDbGVhciBBbm5vdGF0aW9uIFNlbGVjdGlvbmA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe2U9Z29vZy5nZXRNc2coIkV4cGFuZC9IaWRlIFNlbGVjdGVkIEFubm90YXRpb25zIil9ZWxzZSBlPSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZXhwYW5kcyBvciBoaWRlcyBzZWxlY3RlZCBhbm5vdGF0aW9ucy7ikJ84ZjRhZDMwNWMxOWUzNjU1ZjMxODllM2UyNjRlODNmYjc2ZjdiYjk14pCfNTY3MDc5Nzc4NDA3MDk1MjA5NTpFeHBhbmQvSGlkZSBTZWxlY3RlZCBBbm5vdGF0aW9uc2A7cmV0dXJuW1sxLCJwYy1jb250YWluZXIiXSxbMSwicGMtdG9vbGJhciJdLFsxLCJwYy10aXRsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwidGl0bGUiLCJEZXNlbGVjdHMgYWxsIHNlbGVjdGVkIGFubm90YXRpb25zLiIsMSwiY2xlYXItYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwiY2xlYXJfMjRweCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwxLCJleHBhbmQtYnV0dG9uIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImV4cGFuZF9sZXNzXzI0cHgiLCJjbGFzcyIsImV4cGFuZC1sZXNzLWljb24iLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm90RXhwYW5kZWQiLCIiXSxbNCwibmdJZiJdLFsic3ZnSWNvbiIsImV4cGFuZF9sZXNzXzI0cHgiLDEsImV4cGFuZC1sZXNzLWljb24iXSxbInN2Z0ljb24iLCJleHBhbmRfbW9yZV8yNHB4IiwxLCJleHBhbmQtaWNvbiJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKF91KDAsImRpdiIsMCksX3UoMSwiZGl2IiwxKSxfdSgyLCJoMyIsMiksUGYoMywiU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKSxDdSgpLF91KDQsImJ1dHRvbiIsMyksRHUoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zLmVtaXQoKX0pKSxNdSg1LCJtYXQtaWNvbiIsNCksQ3UoKSxfdSg2LCJidXR0b24iLDUpLER1KCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvZ2dsZUV4cGFuZGVkLmVtaXQoKX0pKSxIbSg3LEVQdCwxLDAsIm1hdC1pY29uIiw2KSxIbSg4LEFQdCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDcscXkpLEN1KCksQ3UoKSxIbSgxMCxUUHQsMSwwLCJucG1pLXBhcmFsbGVsLWNvb3JkaW5hdGVzIiw4KSxDdSgpKSwyJmUpe2NvbnN0IHQ9Rm0oOSk7RGMoNCksaHUoImRpc2FibGVkIiwwPT09bi5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aCksRGMoMyksaHUoIm5nSWYiLG4ucGNFeHBhbmRlZCkoIm5nSWZFbHNlIix0KSxEYygzKSxodSgibmdJZiIsbi5wY0V4cGFuZGVkKX19LGRpcmVjdGl2ZXM6W1dMLEVxLFB2LFJQdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5wYy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlYmViZWJ9LnBjLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH0ucGMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtkaXNwbGF5OmlubGluZTtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoTlB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vc2VsZWN0ZWRfYW5ub3RhdGlvbnNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vc2VsZWN0ZWRfYW5ub3RhdGlvbnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse3BjRXhwYW5kZWQ6W3t0eXBlOlJffV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Ul99XSxvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6RV99XSxvblRvZ2dsZUV4cGFuZGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgelB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnBjRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShyUyhUeHQpKSx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KFB4dCl9Y2xlYXJTZWxlY3RlZEFubm90YXRpb25zKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChYdnQoKSl9dG9nZ2xlRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGF4dCgpKX19ZnVuY3Rpb24gSVB0KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2Iiw2KSxfdSgxLCJkaXYiLDcpLE11KDIsIm5wbWktdmlvbGluLWZpbHRlcnMiLDgpLF91KDMsImRpdiIsOSksTXUoNCwicnVucy1zZWxlY3RvciIpLEN1KCksQ3UoKSxDdSgpKSwyJnQpe2xmKCJ3aWR0aCIsTnUoKS5zaWRlYmFyV2lkdGgsInB4Iil9fWZ1bmN0aW9uIEhQdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMTApLER1KCJtb3VzZWRvd24iLChmdW5jdGlvbiBlKCl7UGkodCk7cmV0dXJuIE51KCkucmVzaXplR3JhYmJlZC5lbWl0KCl9KSksQ3UoKX19ZnVuY3Rpb24gRlB0KHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwxMSksTXUoMSwibnBtaS1hbm5vdGF0aW9ucy1saXN0IiwxMiksTXUoMiwibnBtaS1zZWxlY3RlZC1hbm5vdGF0aW9ucyIpLEN1KCkpfWZ1bmN0aW9uIExQdCh0LGUpezEmdCYmKF91KDAsImRpdiIsMTMpLFBmKDEsIllvdSBuZWVkIHRvIHNlbGVjdCBhdCBsZWFzdCBvbmUgcnVuLiIpLEN1KCkpfWZ1bmN0aW9uIEJQdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1QdSgpO191KDAsImRpdiIsMTQpLF91KDEsImJ1dHRvbiIsMTUpLER1KCJjbGljayIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS50b2dnbGVTaWRlYmFyRXhwYW5kZWQuZW1pdCgpfSkpLE11KDIsIm1hdC1pY29uIiwxNiksQ3UoKSxDdSgpfX16UHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpQdCkoZnUoaVMpKX0selB0Lsm1Y21wPXNvKHt0eXBlOnpQdCxzZWxlY3RvcnM6W1sibnBtaS1zZWxlY3RlZC1hbm5vdGF0aW9ucyJdXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1szLCJwY0V4cGFuZGVkIiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsIm9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zIiwib25Ub2dnbGVFeHBhbmRlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwic2VsZWN0ZWQtYW5ub3RhdGlvbnMtY29tcG9uZW50IiwwKSxEdSgib25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uY2xlYXJTZWxlY3RlZEFubm90YXRpb25zKCl9KSkoIm9uVG9nZ2xlRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlRXhwYW5kZWQoKX0pKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksQ3UoKSksMiZlJiZodSgicGNFeHBhbmRlZCIsQ3koMSwyLG4ucGNFeHBhbmRlZCQpKSgic2VsZWN0ZWRBbm5vdGF0aW9ucyIsQ3koMiw0LG4uc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKX0sZGlyZWN0aXZlczpbTlB0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoelB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktc2VsZWN0ZWQtYW5ub3RhdGlvbnMiLHRlbXBsYXRlOidcbiAgICA8c2VsZWN0ZWQtYW5ub3RhdGlvbnMtY29tcG9uZW50XG4gICAgICBbcGNFeHBhbmRlZF09InBjRXhwYW5kZWQkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICAob25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMpPSJjbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMoKSJcbiAgICAgIChvblRvZ2dsZUV4cGFuZGVkKT0idG9nZ2xlRXhwYW5kZWQoKSJcbiAgICA+PC9zZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBWUHR7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgU3ksdGhpcy5yZXNpemVUcmlnZ2VyZWQ9bmV3IFN5LHRoaXMucmVzaXplR3JhYmJlZD1uZXcgU3ksdGhpcy5yZXNpemVSZWxlYXNlZD1uZXcgU3l9fVZQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VlB0KX0sVlB0Lsm1Y21wPXNvKHt0eXBlOlZQdCxzZWxlY3RvcnM6W1sibWFpbi1jb21wb25lbnQiXV0saW5wdXRzOntydW5BY3RpdmU6InJ1bkFjdGl2ZSIsc2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIn0sb3V0cHV0czp7dG9nZ2xlU2lkZWJhckV4cGFuZGVkOiJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLHJlc2l6ZVRyaWdnZXJlZDoicmVzaXplVHJpZ2dlcmVkIixyZXNpemVHcmFiYmVkOiJyZXNpemVHcmFiYmVkIixyZXNpemVSZWxlYXNlZDoicmVzaXplUmVsZWFzZWQifSxkZWNsczo4LHZhcnM6NSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSl7dD1nb29nLmdldE1zZygiVG9nZ2xlIFNpZGViYXIiKX1lbHNlIHQ9JGxvY2FsaXplYDpMYWJlbCBmb3IgYSBidXR0b24gdGhhdCB0b2dnbGVzIHRoZSBzaWRlYmFyLuKQn2Y2M2I1NzkzMmQxNzljY2E2MmFjOWZjYWU2M2RkN2Y1ZTZmYTM4OWbikJ80NDg1MDA5MzQ3NDQ0NzA0ODc4OlRvZ2dsZSBTaWRlYmFyYDtyZXR1cm5bWzEsImNvbnRlbnQiLDMsIm1vdXNldXAiLCJtb3VzZW1vdmUiXSxbImNsYXNzIiwic2lkZWJhci1jb250YWluZXIiLDMsIndpZHRoIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImdyYWJiZXIiLDMsIm1vdXNlZG93biIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbmFseXNpcy1jb250YWluZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9SdW4iLCIiXSxbImNsYXNzIiwic2lkZS10b2dnbGUiLDQsIm5nSWYiXSxbMSwic2lkZWJhci1jb250YWluZXIiXSxbMSwic2lkZWJhci1jb250ZW50cyJdLFsxLCJ2aW9saW4tZmlsdGVycyJdLFsxLCJydW4tc2VsZWN0b3IiXSxbMSwiZ3JhYmJlciIsMywibW91c2Vkb3duIl0sWzEsImFuYWx5c2lzLWNvbnRhaW5lciJdLFsxLCJhbm5vdGF0aW9ucy1saXN0Il0sWzEsIm5vUnVuIl0sWzEsInNpZGUtdG9nZ2xlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDMsImNsaWNrIl0sWyJzdmdJY29uIiwiY2hldnJvbl9yaWdodF8yNHB4Il1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoTXUoMCwibnBtaS1kYXRhLXNlbGVjdGlvbiIpLF91KDEsImRpdiIsMCksRHUoIm1vdXNldXAiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ucmVzaXplUmVsZWFzZWQuZW1pdCgpfSkpKCJtb3VzZW1vdmUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnJlc2l6ZVRyaWdnZXJlZC5lbWl0KGUpfSkpLEhtKDIsSVB0LDUsMiwiZGl2IiwxKSxIbSgzLEhQdCwxLDAsImRpdiIsMiksSG0oNCxGUHQsMywwLCJkaXYiLDMpLEhtKDUsTFB0LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNCxxeSksQ3UoKSxIbSg3LEJQdCwzLDAsImRpdiIsNSkpLDImZSl7Y29uc3QgdD1GbSg2KTtEYygyKSxodSgibmdJZiIsbi5zaWRlYmFyRXhwYW5kZWQpLERjKDEpLGh1KCJuZ0lmIixuLnNpZGViYXJFeHBhbmRlZCksRGMoMSksaHUoIm5nSWYiLCEwPT09bi5ydW5BY3RpdmUpKCJuZ0lmRWxzZSIsdCksRGMoMyksaHUoIm5nSWYiLCFuLnNpZGViYXJFeHBhbmRlZCl9fSxkaXJlY3RpdmVzOltFT3QsUHYsQk90LEQ0LGtQdCx6UHQsV0wsRXFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4OjE7bWluLWhlaWdodDowcHg7d2lkdGg6MTAwJX0uc2lkZWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0uc2lkZWJhci1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MTUwcHh9LmFuYWx5c2lzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtmbGV4OjEgMX0ucnVuLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0udmlvbGluLWZpbHRlcnNbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDozMHB4O2hlaWdodDozMHB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTBweDtib3R0b206MTBweDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czozcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ncmFiYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250ZW50OiIiO2N1cnNvcjpldy1yZXNpemU7aGVpZ2h0OjEwMCU7d2lkdGg6M3B4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0uYW5ub3RhdGlvbnMtbGlzdFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTttaW4taGVpZ2h0OjBweDtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVlB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im1haW4tY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9tYWluX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL21haW5fY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLG51bGwse3J1bkFjdGl2ZTpbe3R5cGU6Ul99XSxzaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOlJffV0sc2lkZWJhcldpZHRoOlt7dHlwZTpSX31dLHRvZ2dsZVNpZGViYXJFeHBhbmRlZDpbe3R5cGU6RV99XSxyZXNpemVUcmlnZ2VyZWQ6W3t0eXBlOkVffV0scmVzaXplR3JhYmJlZDpbe3R5cGU6RV99XSxyZXNpemVSZWxlYXNlZDpbe3R5cGU6RV99XX0pO2NsYXNzIFVQdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ydW5BY3RpdmUkPXRoaXMuc3RvcmUucGlwZShyUyhESSkpLnBpcGUoVnQoKHQ9PiEhdCYmWy4uLnQudmFsdWVzKCldLmluY2x1ZGVzKCEwKSkpKSx0aGlzLnNpZGViYXJFeHBhbmRlZCQ9dGhpcy5zdG9yZS5waXBlKHJTKHp4dCkpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnBpcGUoclMoTHh0KSksdGhpcy5yZXNpemluZz0hMX1vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goc3h0KCkpfW9uUmVzaXplVHJpZ2dlcmVkKHQpe3RoaXMucmVzaXppbmcmJnRoaXMuc3RvcmUuZGlzcGF0Y2gocHh0KHtzaWRlYmFyV2lkdGg6dC5jbGllbnRYfSkpfW9uUmVzaXplR3JhYmJlZCgpe3RoaXMucmVzaXppbmc9ITB9b25SZXNpemVSZWxlYXNlZCgpe3RoaXMucmVzaXppbmc9ITF9fVVQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VVB0KShmdShpUykpfSxVUHQuybVjbXA9c28oe3R5cGU6VVB0LHNlbGVjdG9yczpbWyJucG1pLW1haW4iXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicnVuQWN0aXZlIiwic2lkZWJhckV4cGFuZGVkIiwic2lkZWJhcldpZHRoIiwidG9nZ2xlU2lkZWJhckV4cGFuZGVkIiwicmVzaXplVHJpZ2dlcmVkIiwicmVzaXplR3JhYmJlZCIsInJlc2l6ZVJlbGVhc2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJtYWluLWNvbXBvbmVudCIsMCksRHUoInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpfSkpKCJyZXNpemVUcmlnZ2VyZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVzaXplVHJpZ2dlcmVkKGUpfSkpKCJyZXNpemVHcmFiYmVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplR3JhYmJlZCgpfSkpKCJyZXNpemVSZWxlYXNlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZVJlbGVhc2VkKCl9KSksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpLF95KDMsImFzeW5jIiksQ3UoKSksMiZlJiZodSgicnVuQWN0aXZlIixDeSgxLDMsbi5ydW5BY3RpdmUkKSkoInNpZGViYXJFeHBhbmRlZCIsQ3koMiw1LG4uc2lkZWJhckV4cGFuZGVkJCkpKCJzaWRlYmFyV2lkdGgiLEN5KDMsNyxuLnNpZGViYXJXaWR0aCQpKX0sZGlyZWN0aXZlczpbVlB0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVVB0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWFpbiIsdGVtcGxhdGU6J1xuICAgIDxtYWluLWNvbXBvbmVudFxuICAgICAgW3J1bkFjdGl2ZV09InJ1bkFjdGl2ZSQgfCBhc3luYyJcbiAgICAgIFtzaWRlYmFyRXhwYW5kZWRdPSJzaWRlYmFyRXhwYW5kZWQkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhcldpZHRoXT0ic2lkZWJhcldpZHRoJCB8IGFzeW5jIlxuICAgICAgKHRvZ2dsZVNpZGViYXJFeHBhbmRlZCk9Im9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCkiXG4gICAgICAocmVzaXplVHJpZ2dlcmVkKT0ib25SZXNpemVUcmlnZ2VyZWQoJGV2ZW50KSJcbiAgICAgIChyZXNpemVHcmFiYmVkKT0ib25SZXNpemVHcmFiYmVkKCkiXG4gICAgICAocmVzaXplUmVsZWFzZWQpPSJvblJlc2l6ZVJlbGVhc2VkKCkiXG4gICAgPjwvbWFpbi1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmlTfV19KSxudWxsKTtjbGFzcyBqUHR7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgU3l9fWpQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alB0KX0salB0Lsm1Y21wPXNvKHt0eXBlOmpQdCxzZWxlY3RvcnM6W1siZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50Il1dLGlucHV0czp7c2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQifSxvdXRwdXRzOnt0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6InRvZ2dsZVNpZGViYXJFeHBhbmRlZCJ9LGRlY2xzOjcsdmFyczowLGNvbnN0czpmdW5jdGlvbigpe2xldCB0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlKXt0PWdvb2cuZ2V0TXNnKCJFeHBhbmQvSGlkZSBTaWRlYmFyIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZXhwYW5kcy9oaWRlcyB0aGUgc2lkZWJhci7ikJ80OGMyOTkwM2NlODgxYWI2MTA4OGY4ZDQ5ZDgyNzIwMzcxNmFhZWQ04pCfNDY1ODYwMjk5MTk3MDI2MDIxNTpFeHBhbmQvSGlkZSBTaWRlYmFyYDtyZXR1cm5bWzEsImVtYmVkZGluZy1wcm9qZWN0aW9uLXRvb2xiYXIiXSxbMSwiZW1iZWRkaW5nLXByb2plY3Rpb24tdGl0bGUiXSxbMSwic2lkZS10b2dnbGUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiY2xpY2siXSxbInN2Z0ljb24iLCJjaGV2cm9uX2xlZnRfMjRweCJdLFsxLCJwcm9qZWN0aW9uIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZGl2IiwwKSxfdSgxLCJoMyIsMSksUGYoMiwiRW1iZWRkaW5ncyBQcm9qZWN0ZWQiKSxDdSgpLF91KDMsImRpdiIsMiksX3UoNCwiYnV0dG9uIiwzKSxEdSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlU2lkZWJhckV4cGFuZGVkLmVtaXQoKX0pKSxNdSg1LCJtYXQtaWNvbiIsNCksQ3UoKSxDdSgpLEN1KCksTXUoNiwiZGl2Iiw1KSl9LGRpcmVjdGl2ZXM6W1dMLEVxXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5lbWJlZGRpbmctcHJvamVjdGlvbi10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQycHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzowIDEwcHh9LmVtYmVkZGluZy1wcm9qZWN0aW9uLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LnByb2plY3Rpb25bX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXk6YXV0b30uc2lkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjMwcHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKGpQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJlbWJlZGRpbmctcHJvamVjdGlvbi1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2VtYmVkZGluZ19wcm9qZWN0aW9uX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2VtYmVkZGluZ19wcm9qZWN0aW9uX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLHtzaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOlJffV0sdG9nZ2xlU2lkZWJhckV4cGFuZGVkOlt7dHlwZTpFX31dfSk7Y2xhc3MgV1B0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNpZGViYXJFeHBhbmRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoVXh0KX1vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2godXh0KCkpfX1mdW5jdGlvbiBHUHQodCxlKXtpZigxJnQmJihfdSgwLCJkaXYiLDYpLF91KDEsImRpdiIsNyksTXUoMiwibnBtaS1lbWJlZGRpbmctcHJvamVjdGlvbiIsOCksTXUoMywiZGl2Iiw5KSxfdSg0LCJkaXYiLDEwKSxNdSg1LCJydW5zLXNlbGVjdG9yIiksQ3UoKSxDdSgpLEN1KCkpLDImdCl7bGYoIndpZHRoIixOdSgpLnNpZGViYXJXaWR0aCwicHgiKX19ZnVuY3Rpb24gWVB0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwxMSksRHUoIm1vdXNlZG93biIsKGZ1bmN0aW9uIGUoKXtQaSh0KTtyZXR1cm4gTnUoKS5yZXNpemVHcmFiYmVkLmVtaXQoKX0pKSxDdSgpfX1mdW5jdGlvbiBxUHQodCxlKXsxJnQmJihfdSgwLCJkaXYiLDEyKSxNdSgxLCJucG1pLWFubm90YXRpb25zLWxpc3QiLDEzKSxNdSgyLCJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIiksQ3UoKSl9ZnVuY3Rpb24gWlB0KHQsZSl7MSZ0JiYoX3UoMCwiZGl2IiwxNCksUGYoMSwiWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBydW4uIiksQ3UoKSl9ZnVuY3Rpb24gWFB0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PVB1KCk7X3UoMCwiZGl2IiwxNSksX3UoMSwiYnV0dG9uIiwxNiksRHUoImNsaWNrIiwoZnVuY3Rpb24gZSgpe1BpKHQpO3JldHVybiBOdSgpLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSksTXUoMiwibWF0LWljb24iLDE3KSxDdSgpLEN1KCl9fVdQdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V1B0KShmdShpUykpfSxXUHQuybVjbXA9c28oe3R5cGU6V1B0LHNlbGVjdG9yczpbWyJucG1pLWVtYmVkZGluZy1wcm9qZWN0aW9uIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsInNpZGViYXJFeHBhbmRlZCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50IiwwKSxEdSgidG9nZ2xlU2lkZWJhckV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl9KSksX3koMSwiYXN5bmMiKSxDdSgpKSwyJmUmJmh1KCJzaWRlYmFyRXhwYW5kZWQiLEN5KDEsMSxuLnNpZGViYXJFeHBhbmRlZCQpKX0sZGlyZWN0aXZlczpbalB0XSxwaXBlczpbVnZdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoV1B0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6Im5wbWktZW1iZWRkaW5nLXByb2plY3Rpb24iLHRlbXBsYXRlOidcbiAgICA8ZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50XG4gICAgICBbc2lkZWJhckV4cGFuZGVkXT0ic2lkZWJhckV4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgKHRvZ2dsZVNpZGViYXJFeHBhbmRlZCk9Im9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCkiXG4gICAgPjwvZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3MgS1B0e2NvbnN0cnVjdG9yKCl7dGhpcy50b2dnbGVTaWRlYmFyRXhwYW5kZWQ9bmV3IFN5LHRoaXMucmVzaXplVHJpZ2dlcmVkPW5ldyBTeSx0aGlzLnJlc2l6ZUdyYWJiZWQ9bmV3IFN5LHRoaXMucmVzaXplUmVsZWFzZWQ9bmV3IFN5fX1LUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtQdCl9LEtQdC7JtWNtcD1zbyh7dHlwZTpLUHQsc2VsZWN0b3JzOltbImVtYmVkZGluZ3MtY29tcG9uZW50Il1dLGlucHV0czp7cnVuQWN0aXZlOiJydW5BY3RpdmUiLHNpZGViYXJFeHBhbmRlZDoic2lkZWJhckV4cGFuZGVkIixzaWRlYmFyV2lkdGg6InNpZGViYXJXaWR0aCJ9LG91dHB1dHM6e3RvZ2dsZVNpZGViYXJFeHBhbmRlZDoidG9nZ2xlU2lkZWJhckV4cGFuZGVkIixyZXNpemVUcmlnZ2VyZWQ6InJlc2l6ZVRyaWdnZXJlZCIscmVzaXplR3JhYmJlZDoicmVzaXplR3JhYmJlZCIscmVzaXplUmVsZWFzZWQ6InJlc2l6ZVJlbGVhc2VkIn0sZGVjbHM6OCx2YXJzOjUsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUpe3Q9Z29vZy5nZXRNc2coIlRvZ2dsZSBTaWRlYmFyIil9ZWxzZSB0PSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgdG9nZ2xlcyB0aGUgc2lkZWJhci7ikJ9mNjNiNTc5MzJkMTc5Y2NhNjJhYzlmY2FlNjNkZDdmNWU2ZmEzODlm4pCfNDQ4NTAwOTM0NzQ0NDcwNDg3ODpUb2dnbGUgU2lkZWJhcmA7cmV0dXJuW1sxLCJjb250ZW50IiwzLCJtb3VzZXVwIiwibW91c2Vtb3ZlIl0sWyJjbGFzcyIsInNpZGViYXItY29udGFpbmVyIiwzLCJ3aWR0aCIsNCwibmdJZiJdLFsiY2xhc3MiLCJncmFiYmVyIiwzLCJtb3VzZWRvd24iLDQsIm5nSWYiXSxbImNsYXNzIiwiYW5hbHlzaXMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vUnVuIiwiIl0sWyJjbGFzcyIsInNpZGUtdG9nZ2xlIiw0LCJuZ0lmIl0sWzEsInNpZGViYXItY29udGFpbmVyIl0sWzEsInNpZGViYXItY29udGVudHMiXSxbMSwiZW1iZWRkaW5nLXByb2plY3Rpb24iXSxbMSwicnVuLWRpdmlkZXIiXSxbMSwicnVuLXNlbGVjdG9yIl0sWzEsImdyYWJiZXIiLDMsIm1vdXNlZG93biJdLFsxLCJhbmFseXNpcy1jb250YWluZXIiXSxbMSwiYW5ub3RhdGlvbnMtbGlzdCJdLFsxLCJub1J1biJdLFsxLCJzaWRlLXRvZ2dsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNoZXZyb25fcmlnaHRfMjRweCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKE11KDAsIm5wbWktZGF0YS1zZWxlY3Rpb24iKSxfdSgxLCJkaXYiLDApLER1KCJtb3VzZXVwIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnJlc2l6ZVJlbGVhc2VkLmVtaXQoKX0pKSgibW91c2Vtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yZXNpemVUcmlnZ2VyZWQuZW1pdChlKX0pKSxIbSgyLEdQdCw2LDIsImRpdiIsMSksSG0oMyxZUHQsMSwwLCJkaXYiLDIpLEhtKDQscVB0LDMsMCwiZGl2IiwzKSxIbSg1LFpQdCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQscXkpLEN1KCksSG0oNyxYUHQsMywwLCJkaXYiLDUpKSwyJmUpe2NvbnN0IHQ9Rm0oNik7RGMoMiksaHUoIm5nSWYiLG4uc2lkZWJhckV4cGFuZGVkKSxEYygxKSxodSgibmdJZiIsbi5zaWRlYmFyRXhwYW5kZWQpLERjKDEpLGh1KCJuZ0lmIiwhMD09PW4ucnVuQWN0aXZlKSgibmdJZkVsc2UiLHQpLERjKDMpLGh1KCJuZ0lmIiwhbi5zaWRlYmFyRXhwYW5kZWQpfX0sZGlyZWN0aXZlczpbRU90LFB2LFdQdCxENCxrUHQselB0LFdMLEVxXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleDoxO21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9LnNpZGViYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59LnNpZGViYXItY29udGVudHNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7bWluLXdpZHRoOjE1MHB4fS5hbmFseXNpcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4OjEgMTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LnJ1bi1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17bWF4LWhlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmVtYmVkZGluZy1wcm9qZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjBweDt3aWR0aDoxMDAlfS5zaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDtib3R0b206MTBweDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjMwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZWZ0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzBweH0ucnVuLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpO2NvbnRlbnQ6IiI7aGVpZ2h0OjFweDtvdmVyZmxvdzpoaWRkZW59LmdyYWJiZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpO2NvbnRlbnQ6IiI7Y3Vyc29yOmV3LXJlc2l6ZTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47d2lkdGg6M3B4fS5hbm5vdGF0aW9ucy1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMTttaW4taGVpZ2h0OjBweDt3aWR0aDoxMDAlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihLUHQsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoiZW1iZWRkaW5ncy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2VtYmVkZGluZ3NfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZW1iZWRkaW5nc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7cnVuQWN0aXZlOlt7dHlwZTpSX31dLHNpZGViYXJFeHBhbmRlZDpbe3R5cGU6Ul99XSxzaWRlYmFyV2lkdGg6W3t0eXBlOlJffV0sdG9nZ2xlU2lkZWJhckV4cGFuZGVkOlt7dHlwZTpFX31dLHJlc2l6ZVRyaWdnZXJlZDpbe3R5cGU6RV99XSxyZXNpemVHcmFiYmVkOlt7dHlwZTpFX31dLHJlc2l6ZVJlbGVhc2VkOlt7dHlwZTpFX31dfSk7Y2xhc3MgSlB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJ1bkFjdGl2ZSQ9dGhpcy5zdG9yZS5waXBlKHJTKERJKSkucGlwZShWdCgodD0+ISF0JiZbLi4udC52YWx1ZXMoKV0uaW5jbHVkZXMoITApKSkpLHRoaXMuc2lkZWJhckV4cGFuZGVkJD10aGlzLnN0b3JlLnBpcGUoclMoVXh0KSksdGhpcy5zaWRlYmFyV2lkdGgkPXRoaXMuc3RvcmUucGlwZShyUyhWeHQpKSx0aGlzLnJlc2l6aW5nPSExfW9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh1eHQoKSl9b25SZXNpemVUcmlnZ2VyZWQodCl7dGhpcy5yZXNpemluZyYmdGhpcy5zdG9yZS5kaXNwYXRjaChteHQoe3NpZGViYXJXaWR0aDp0LmNsaWVudFh9KSl9b25SZXNpemVHcmFiYmVkKCl7dGhpcy5yZXNpemluZz0hMH1vblJlc2l6ZVJlbGVhc2VkKCl7dGhpcy5yZXNpemluZz0hMX19ZnVuY3Rpb24gUVB0KHQsZSl7MSZ0JiZNdSgwLCJucG1pLWluYWN0aXZlLXZpZXciKX1mdW5jdGlvbiAkUHQodCxlKXsxJnQmJk11KDAsIm5wbWktbWFpbiIpfWZ1bmN0aW9uIHR3dCh0LGUpezEmdCYmTXUoMCwibnBtaS1lbWJlZGRpbmdzIil9ZnVuY3Rpb24gZXd0KHQsZSl7aWYoMSZ0JiYoSG0oMCwkUHQsMSwwLCJucG1pLW1haW4iLDMpLEhtKDEsdHd0LDEsMCwibnBtaS1lbWJlZGRpbmdzIiwzKSksMiZ0KXtjb25zdCB0PU51KCk7aHUoIm5nSWYiLHQuYWN0aXZlVmlldz09PXQuVmlld0FjdGl2ZS5ERUZBVUxUKSxEYygxKSxodSgibmdJZiIsdC5hY3RpdmVWaWV3PT09dC5WaWV3QWN0aXZlLkVNQkVERElOR1MpfX1KUHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpQdCkoZnUoaVMpKX0sSlB0Lsm1Y21wPXNvKHt0eXBlOkpQdCxzZWxlY3RvcnM6W1sibnBtaS1lbWJlZGRpbmdzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bkFjdGl2ZSIsInNpZGViYXJFeHBhbmRlZCIsInNpZGViYXJXaWR0aCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsInJlc2l6ZVRyaWdnZXJlZCIsInJlc2l6ZUdyYWJiZWQiLCJyZXNpemVSZWxlYXNlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoX3UoMCwiZW1iZWRkaW5ncy1jb21wb25lbnQiLDApLER1KCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKSgicmVzaXplVHJpZ2dlcmVkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlc2l6ZVRyaWdnZXJlZChlKX0pKSgicmVzaXplR3JhYmJlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZUdyYWJiZWQoKX0pKSgicmVzaXplUmVsZWFzZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNpemVSZWxlYXNlZCgpfSkpLF95KDEsImFzeW5jIiksX3koMiwiYXN5bmMiKSxfeSgzLCJhc3luYyIpLEN1KCkpLDImZSYmaHUoInJ1bkFjdGl2ZSIsQ3koMSwzLG4ucnVuQWN0aXZlJCkpKCJzaWRlYmFyRXhwYW5kZWQiLEN5KDIsNSxuLnNpZGViYXJFeHBhbmRlZCQpKSgic2lkZWJhcldpZHRoIixDeSgzLDcsbi5zaWRlYmFyV2lkdGgkKSl9LGRpcmVjdGl2ZXM6W0tQdF0scGlwZXM6W1Z2XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEpQdCxbe3R5cGU6U18sYXJnczpbe3NlbGVjdG9yOiJucG1pLWVtYmVkZGluZ3MiLHRlbXBsYXRlOidcbiAgICA8ZW1iZWRkaW5ncy1jb21wb25lbnRcbiAgICAgIFtydW5BY3RpdmVdPSJydW5BY3RpdmUkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhckV4cGFuZGVkXT0ic2lkZWJhckV4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgW3NpZGViYXJXaWR0aF09InNpZGViYXJXaWR0aCQgfCBhc3luYyJcbiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIlxuICAgICAgKHJlc2l6ZVRyaWdnZXJlZCk9Im9uUmVzaXplVHJpZ2dlcmVkKCRldmVudCkiXG4gICAgICAocmVzaXplR3JhYmJlZCk9Im9uUmVzaXplR3JhYmJlZCgpIlxuICAgICAgKHJlc2l6ZVJlbGVhc2VkKT0ib25SZXNpemVSZWxlYXNlZCgpIlxuICAgID48L2VtYmVkZGluZ3MtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSksbnVsbCk7Y2xhc3Mgbnd0e2NvbnN0cnVjdG9yKCl7dGhpcy5WaWV3QWN0aXZlPXl4dH19bnd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxud3QpfSxud3QuybVjbXA9c28oe3R5cGU6bnd0LHNlbGVjdG9yczpbWyJucG1pLWNvbXBvbmVudCJdXSxpbnB1dHM6e3J1bnM6InJ1bnMiLGFjdGl2ZVZpZXc6ImFjdGl2ZVZpZXcifSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sxLCJucG1pLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoX3UoMCwiZGl2IiwwKSxIbSgxLFFQdCwxLDAsIm5wbWktaW5hY3RpdmUtdmlldyIsMSksSG0oMixld3QsMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHF5KSxDdSgpKSwyJmUpe2NvbnN0IHQ9Rm0oMyk7RGMoMSksaHUoIm5nSWYiLDA9PT1uLnJ1bnMuc2l6ZSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1B2LFd4dCxVUHQsSlB0XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJX0ubnBtaS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihud3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL25wbWlfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbnBtaV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCx7cnVuczpbe3R5cGU6Ul99XSxhY3RpdmVWaWV3Olt7dHlwZTpSX31dfSk7Y2xhc3Mgb3d0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJ1bnMkPXRoaXMuc3RvcmUucGlwZShyUyhESSkpLHRoaXMuYWN0aXZlVmlldyQ9dGhpcy5zdG9yZS5waXBlKHJTKEZ4dCkpfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChqdnQoKSl9fW93dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b3d0KShmdShpUykpfSxvd3QuybVjbXA9c28oe3R5cGU6b3d0LHNlbGVjdG9yczpbWyJucG1pIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJ1bnMiLCJhY3RpdmVWaWV3Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihNdSgwLCJucG1pLWNvbXBvbmVudCIsMCksX3koMSwiYXN5bmMiKSxfeSgyLCJhc3luYyIpKSwyJmUmJmh1KCJydW5zIixDeSgxLDIsbi5ydW5zJCkpKCJhY3RpdmVWaWV3IixDeSgyLDQsbi5hY3RpdmVWaWV3JCkpfSxkaXJlY3RpdmVzOltud3RdLHBpcGVzOltWdl0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihvd3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoibnBtaSIsdGVtcGxhdGU6J1xuICAgIDxucG1pLWNvbXBvbmVudFxuICAgICAgW3J1bnNdPSJydW5zJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZVZpZXddPSJhY3RpdmVWaWV3JCB8IGFzeW5jIlxuICAgID48L25wbWktY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9XX0pLG51bGwpO2NsYXNzIGl3dHt9aXd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpd3QpfSxpd3QuybVtb2Q9dW8oe3R5cGU6aXd0fSksaXd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsZFksRVosQXEsWUxdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaXd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt4UHQsdlB0XSxpbXBvcnRzOltyeCxkWSxFWixBcSxZTF0sZXhwb3J0czpbeFB0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGl3dCx7ZGVjbGFyYXRpb25zOlt4UHQsdlB0XSxpbXBvcnRzOltyeCxkWSxFWixBcSxZTF0sZXhwb3J0czpbeFB0XX0pO2NsYXNzIGF3dHt9YXd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhd3QpfSxhd3QuybVtb2Q9dW8oe3R5cGU6YXd0fSksYXd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsZFksQXEsalpdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYXd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltpUHQsYVB0XSxpbXBvcnRzOltyeCxkWSxBcSxqWl0sZXhwb3J0czpbYVB0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGF3dCx7ZGVjbGFyYXRpb25zOltpUHQsYVB0XSxpbXBvcnRzOltyeCxkWSxBcSxqWl0sZXhwb3J0czpbYVB0XX0pO2NsYXNzIHJ3dHt9cnd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyd3QpfSxyd3QuybVtb2Q9dW8oe3R5cGU6cnd0fSkscnd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsZFksQXEsWUwsblB0LGF3dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihyd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2xQdCxjUHRdLGltcG9ydHM6W3J4LGRZLEFxLFlMLG5QdCxhd3RdLGV4cG9ydHM6W2NQdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhyd3Qse2RlY2xhcmF0aW9uczpbbFB0LGNQdF0saW1wb3J0czpbcngsZFksQXEsWUwsblB0LGF3dF0sZXhwb3J0czpbY1B0XX0pO2NsYXNzIHN3dHt9c3d0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzd3QpfSxzd3QuybVtb2Q9dW8oe3R5cGU6c3d0fSksc3d0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsZFksRVosQXFdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc3d0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltnUHQsaFB0XSxpbXBvcnRzOltyeCxkWSxFWixBcV0sZXhwb3J0czpbaFB0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHN3dCx7ZGVjbGFyYXRpb25zOltnUHQsaFB0XSxpbXBvcnRzOltyeCxkWSxFWixBcV0sZXhwb3J0czpbaFB0XX0pO2NsYXNzIGx3dHt9bHd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsd3QpfSxsd3QuybVtb2Q9dW8oe3R5cGU6bHd0fSksbHd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcnhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobHd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltwUHRdLGltcG9ydHM6W3J4XSxleHBvcnRzOltwUHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8obHd0LHtkZWNsYXJhdGlvbnM6W3BQdF0saW1wb3J0czpbcnhdLGV4cG9ydHM6W3BQdF19KTtjbGFzcyBjd3R7fWN3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y3d0KX0sY3d0Lsm1bW9kPXVvKHt0eXBlOmN3dH0pLGN3dC7JtWluaj1Ebih7aW1wb3J0czpbW2x3dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihjd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W21QdF0saW1wb3J0czpbbHd0XSxleHBvcnRzOlttUHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oY3d0LHtkZWNsYXJhdGlvbnM6W21QdF0saW1wb3J0czpbbHd0XSxleHBvcnRzOlttUHRdfSk7Y2xhc3MgZHd0e31kd3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGR3dCl9LGR3dC7JtW1vZD11byh7dHlwZTpkd3R9KSxkd3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxyd3Qsc3d0LGN3dCxmQixpd3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZHd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt3UHQsa1B0XSxpbXBvcnRzOltyeCxyd3Qsc3d0LGN3dCxmQixpd3RdLGV4cG9ydHM6W2tQdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhkd3Qse2RlY2xhcmF0aW9uczpbd1B0LGtQdF0saW1wb3J0czpbcngscnd0LHN3dCxjd3QsZkIsaXd0XSxleHBvcnRzOltrUHRdfSk7Y2xhc3MgcHd0e31wd3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHB3dCl9LHB3dC7JtW1vZD11byh7dHlwZTpwd3R9KSxwd3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxkWSxBcSxZTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihwd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2pQdCxXUHRdLGltcG9ydHM6W3J4LGRZLEFxLFlMXSxleHBvcnRzOltXUHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8ocHd0LHtkZWNsYXJhdGlvbnM6W2pQdCxXUHRdLGltcG9ydHM6W3J4LGRZLEFxLFlMXSxleHBvcnRzOltXUHRdfSk7Y2xhc3MgbXd0e31td3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG13dCl9LG13dC7JtW1vZD11byh7dHlwZTptd3R9KSxtd3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxkWSxwWSxBcSx5T3QsUTBdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobXd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlt4T3QsT090XSxpbXBvcnRzOltyeCxkWSxwWSxBcSx5T3QsUTBdLGV4cG9ydHM6W09PdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhtd3Qse2RlY2xhcmF0aW9uczpbeE90LE9PdF0saW1wb3J0czpbcngsZFkscFksQXEseU90LFEwXSxleHBvcnRzOltPT3RdfSk7Y2xhc3MgdXd0e311d3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHV3dCl9LHV3dC7JtW1vZD11byh7dHlwZTp1d3R9KSx1d3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCx5T3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIodXd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltQT3RdLGltcG9ydHM6W3J4LHlPdF0sZXhwb3J0czpbUE90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHV3dCx7ZGVjbGFyYXRpb25zOltQT3RdLGltcG9ydHM6W3J4LHlPdF0sZXhwb3J0czpbUE90XX0pO2NsYXNzIGZ3dHt9Znd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmd3QpfSxmd3QuybVtb2Q9dW8oe3R5cGU6Znd0fSksZnd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngseU90LG13dCx1d3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZnd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltET3QsUk90XSxpbXBvcnRzOltyeCx5T3QsbXd0LHV3dF0sZXhwb3J0czpbUk90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGZ3dCx7ZGVjbGFyYXRpb25zOltET3QsUk90XSxpbXBvcnRzOltyeCx5T3QsbXd0LHV3dF0sZXhwb3J0czpbUk90XX0pO2NsYXNzIGd3dHt9Z3d0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnd3QpfSxnd3QuybVtb2Q9dW8oe3R5cGU6Z3d0fSksZ3d0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsQXEsalosbzJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZ3d0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltYeHQsS3h0XSxpbXBvcnRzOltyeCxBcSxqWixvMl0sZXhwb3J0czpbS3h0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGd3dCx7ZGVjbGFyYXRpb25zOltYeHQsS3h0XSxpbXBvcnRzOltyeCxBcSxqWixvMl0sZXhwb3J0czpbS3h0XX0pO2NsYXNzIGh3dHt9aHd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxod3QpfSxod3QuybVtb2Q9dW8oe3R5cGU6aHd0fSksaHd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsQXEsWUxdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoaHd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOlskeHQsdE90XSxpbXBvcnRzOltyeCxBcSxZTF0sZXhwb3J0czpbdE90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGh3dCx7ZGVjbGFyYXRpb25zOlskeHQsdE90XSxpbXBvcnRzOltyeCxBcSxZTF0sZXhwb3J0czpbdE90XX0pO2NsYXNzIGJ3dHt9Ynd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxid3QpfSxid3QuybVtb2Q9dW8oe3R5cGU6Ynd0fSksYnd0Lsm1aW5qPURuKHtpbXBvcnRzOltbcngsZ3d0LGZ3dCxod3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoYnd0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltFT3RdLGltcG9ydHM6W3J4LGd3dCxmd3QsaHd0XSxleHBvcnRzOltFT3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oYnd0LHtkZWNsYXJhdGlvbnM6W0VPdF0saW1wb3J0czpbcngsZ3d0LGZ3dCxod3RdLGV4cG9ydHM6W0VPdF19KTtjbGFzcyB5d3R7fXl3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eXd0KX0seXd0Lsm1bW9kPXVvKHt0eXBlOnl3dH0pLHl3dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHl3dCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbRFB0LFJQdF0saW1wb3J0czpbcnhdLGV4cG9ydHM6W1JQdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyh5d3Qse2RlY2xhcmF0aW9uczpbRFB0LFJQdF0saW1wb3J0czpbcnhdLGV4cG9ydHM6W1JQdF19KTtjbGFzcyBfd3R7fV93dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8X3d0KX0sX3d0Lsm1bW9kPXVvKHt0eXBlOl93dH0pLF93dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LEFxLFlMLHl3dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihfd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W05QdCx6UHRdLGltcG9ydHM6W3J4LEFxLFlMLHl3dF0sZXhwb3J0czpbelB0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKF93dCx7ZGVjbGFyYXRpb25zOltOUHQselB0XSxpbXBvcnRzOltyeCxBcSxZTCx5d3RdLGV4cG9ydHM6W3pQdF19KTtjbGFzcyBDd3R7fUN3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3d0KX0sQ3d0Lsm1bW9kPXVvKHt0eXBlOkN3dH0pLEN3dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LGRZLEVaLEFxLHpfdCxid3QsWUwsZHd0LF93dCxwd3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQ3d0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltLUHQsSlB0XSxpbXBvcnRzOltyeCxkWSxFWixBcSx6X3QsYnd0LFlMLGR3dCxfd3QscHd0XSxleHBvcnRzOltKUHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oQ3d0LHtkZWNsYXJhdGlvbnM6W0tQdCxKUHRdLGltcG9ydHM6W3J4LGRZLEVaLEFxLHpfdCxid3QsWUwsZHd0LF93dCxwd3RdLGV4cG9ydHM6W0pQdF19KTtjbGFzcyBNd3R7fU13dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TXd0KX0sTXd0Lsm1bW9kPXVvKHt0eXBlOk13dH0pLE13dC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihNd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1d4dF0sZXhwb3J0czpbV3h0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKE13dCx7ZGVjbGFyYXRpb25zOltXeHRdLGV4cG9ydHM6W1d4dF19KTtjbGFzcyB2d3R7fXZ3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dnd0KX0sdnd0Lsm1bW9kPXVvKHt0eXBlOnZ3dH0pLHZ3dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LGRZLFlMLEFxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHZ3dCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbek90LElPdF0saW1wb3J0czpbcngsZFksWUwsQXFdLGV4cG9ydHM6W0lPdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyh2d3Qse2RlY2xhcmF0aW9uczpbek90LElPdF0saW1wb3J0czpbcngsZFksWUwsQXFdLGV4cG9ydHM6W0lPdF19KTtjbGFzcyB4d3R7fXh3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eHd0KX0seHd0Lsm1bW9kPXVvKHt0eXBlOnh3dH0pLHh3dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LGRZLEFxLFlMLHZ3dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYih4d3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0xPdCxCT3RdLGltcG9ydHM6W3J4LGRZLEFxLFlMLHZ3dF0sZXhwb3J0czpbQk90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHh3dCx7ZGVjbGFyYXRpb25zOltMT3QsQk90XSxpbXBvcnRzOltyeCxkWSxBcSxZTCx2d3RdLGV4cG9ydHM6W0JPdF19KTtjbGFzcyBPd3R7fU93dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T3d0KX0sT3d0Lsm1bW9kPXVvKHt0eXBlOk93dH0pLE93dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LGRZLEVaLEFxLHpfdCxid3QsWUwseHd0LGR3dCxfd3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoT3d0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltWUHQsVVB0XSxpbXBvcnRzOltyeCxkWSxFWixBcSx6X3QsYnd0LFlMLHh3dCxkd3QsX3d0XSxleHBvcnRzOltVUHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oT3d0LHtkZWNsYXJhdGlvbnM6W1ZQdCxVUHRdLGltcG9ydHM6W3J4LGRZLEVaLEFxLHpfdCxid3QsWUwseHd0LGR3dCxfd3RdLGV4cG9ydHM6W1VQdF19KTtjbGFzcyBQd3R7fVB3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UHd0KX0sUHd0Lsm1bW9kPXVvKHt0eXBlOlB3dH0pLFB3dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LE13dCxPd3QsQ3d0LFV2dCxUUy5mb3JGZWF0dXJlKGd4dCxZeHQpLGhELmZvckZlYXR1cmUoW2p4dF0pLEVYLmZvclBsdWdpbigibnBtaSIsb3d0KV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihQd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W253dCxvd3RdLGltcG9ydHM6W3J4LE13dCxPd3QsQ3d0LFV2dCxUUy5mb3JGZWF0dXJlKGd4dCxZeHQpLGhELmZvckZlYXR1cmUoW2p4dF0pLEVYLmZvclBsdWdpbigibnBtaSIsb3d0KV0sZXhwb3J0czpbb3d0XSxlbnRyeUNvbXBvbmVudHM6W293dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhQd3Qse2RlY2xhcmF0aW9uczpbbnd0LG93dF0saW1wb3J0czpbcngsTXd0LE93dCxDd3QsVXZ0LEFTLGdELEVYXSxleHBvcnRzOltvd3RdfSk7Y2xhc3Mgd3d0e313d3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHd3dCl9LHd3dC7JtXByb3Y9U24oe3Rva2VuOnd3dCxmYWN0b3J5Ond3dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod3d0LFt7dHlwZTpqbX1dLG51bGwsbnVsbCk7Y2xhc3Mga3d0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMuaHR0cFBhdGhQcmVmaXg9ImRhdGEvcGx1Z2luL3RleHRfdjIifWZldGNoUnVuVG9UYWcoKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvdGFncyIpLnBpcGUoVnQoKHQ9Pntjb25zdCBlPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKChbdCxuXSk9PntlLnNldCh0LG4pfSkpLGV9KSkpfWZldGNoVGV4dERhdGEodCxlKXtjb25zdCBuPW5ldyBVUkxTZWFyY2hQYXJhbXMoe3J1bjp0LHRhZzplfSk7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCtgL3RleHQ/JHtuLnRvU3RyaW5nKCl9YCkucGlwZShWdCgodD0+dC5tYXAoKHQ9Pih7b3JpZ2luYWxTaGFwZTp0Lm9yaWdpbmFsX3NoYXBlLHN0ZXA6dC5zdGVwLHN0cmluZ0FycmF5OnQuc3RyaW5nX2FycmF5LHdhbGxUaW1lSW5NczoxZTMqdC53YWxsX3RpbWUsdHJ1bmNhdGVkOnQudHJ1bmNhdGVkfSkpKSkpKX19a3d0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrd3QpKFRyKExFKSl9LGt3dC7JtXByb3Y9U24oe3Rva2VuOmt3dCxmYWN0b3J5Omt3dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa3d0LFt7dHlwZTpqbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMRX1dfSksbnVsbCk7Y2xhc3MgU3d0e31Td3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFN3dCl9LFN3dC7JtW1vZD11byh7dHlwZTpTd3R9KSxTd3QuybVpbmo9RG4oe3Byb3ZpZGVyczpba3d0LHtwcm92aWRlOnd3dCx1c2VFeGlzdGluZzprd3R9XSxpbXBvcnRzOltbQkVdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoU3d0LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbQkVdLHByb3ZpZGVyczpba3d0LHtwcm92aWRlOnd3dCx1c2VFeGlzdGluZzprd3R9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFN3dCx7aW1wb3J0czpbQkVdfSk7Y29uc3QgRHd0PV9rKCJbVGV4dF0gVGV4dCBQbHVnaW4gTG9hZGVkIiksUnd0PV9rKCJbVGV4dF0gUnVucyBUbyBUYWcgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksRXd0PV9rKCJbVGV4dF0gVGFnIEdyb3VwIFZpc2liaWxpdHkgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEF3dD1faygiW1RleHRdIFRleHQgRGF0YSBMb2FkZWQgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVHd0PSJ0ZXh0IixOd3Q9X1MoVHd0KTtiUyhOd3QsKHQ9PnQucnVuVG9UYWdzKSk7Y29uc3Qgend0PWJTKE53dCwodD0+e2NvbnN0IGU9bmV3IFNldCxuPW5ldyBTZXQ7Zm9yKGNvbnN0IG8gb2YgdC52aXNpYmxlUnVuVGFncy52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBvKXtjb25zdCBvPUpTT04uc3RyaW5naWZ5KHQpO2UuaGFzKG8pfHwoZS5hZGQobyksbi5hZGQodCkpfXJldHVyblsuLi5uXX0pKSxJd3Q9YlMoTnd0LCgodCxlKT0+e2NvbnN0IG49dC5kYXRhLmdldChlLnJ1bik7cmV0dXJuIG4mJm4uZ2V0KGUudGFnKXx8bnVsbH0pKTtjbGFzcyBId3R7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5sb2FkUnVuVG9UYWdzJD1XUygoKCk9PnRoaXMuYWN0aW9ucyQucGlwZSgkUyhEd3QpLFZlKCgoKT0+dGhpcy5kYXRhU291cmNlLmZldGNoUnVuVG9UYWcoKS5waXBlKFdlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChSd3Qoe3J1blRvVGFnczp0fSkpfSkpLFZ0KCgoKT0+e30pKSkpKSkpLHtkaXNwYXRjaDohMX0pLHRoaXMubG9hZERhdGEkPVdTKCgoKT0+cGUodGhpcy5hY3Rpb25zJC5waXBlKCRTKEV3dCksVmUoKCh7dmlzaWJsZVRleHRDYXJkczp0fSk9PmllKHQubWFwKCgoe3J1bjp0LHRhZzplfSk9PnRoaXMuc3RvcmUuc2VsZWN0KEl3dCx7cnVuOnQsdGFnOmV9KS5waXBlKChmdW5jdGlvbiBuKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIG8ucGlwZSh0P2ZlKChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixvKX0pKTpSLFRlKDEpLG4/TWUoZSk6U2UoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBCdH0pKSl9fSkoKSxWdCgobj0+KHtydW46dCx0YWc6ZSx0ZXh0RGF0YTpufSkpKSkpKSkucGlwZShWdCgodD0+dC5maWx0ZXIoKCh7dGV4dERhdGE6dH0pPT5udWxsPT09dCkpLm1hcCgoKHtydW46dCx0YWc6ZX0pPT4oe3J1bjp0LHRhZzplfSkpKSkpKSkpKSx0aGlzLmFjdGlvbnMkLnBpcGUoJFMoJEUsdEEpLHFlKHRoaXMuc3RvcmUuc2VsZWN0KHp3dCkpLFZ0KCgoWyx0XSk9PnQpKSkpLnBpcGUoJHQoKHQ9PmllKHQubWFwKCh0PT50aGlzLmZldGNoVGV4dERhdGEodCkpKSkpKSkpLHtkaXNwYXRjaDohMX0pfWZldGNoVGV4dERhdGEodCl7Y29uc3R7cnVuOmUsdGFnOm59PXQ7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFRleHREYXRhKGUsbikucGlwZShXZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goQXd0KHtydW46ZSx0YWc6bixzdGVwRGF0YTp0fSkpfSkpLFZ0KCgoKT0+e30pKSl9fUh3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SHd0KShUcihRUyksVHIoaVMpLFRyKHd3dCkpfSxId3QuybVwcm92PVNuKHt0b2tlbjpId3QsZmFjdG9yeTpId3QuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKEh3dCxbe3R5cGU6am19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UVN9LHt0eXBlOmlTfSx7dHlwZTp3d3R9XX0pLG51bGwpO2NvbnN0IEZ3dD1WUyh7cnVuVG9UYWdzOm5ldyBNYXAoW1sicnVuMSIsWyJhL2IiLCJhL2MiXV0sWyJydW4yIixbImEvYiIsImEvZCJdXSxbInJ1bjMiLFsiYyIsImEvYiJdXV0pLGRhdGE6bmV3IE1hcChbWyJydW4xIixuZXcgTWFwKFtbImEvYiIsW3tvcmlnaW5hbFNoYXBlOlszXSxzdGVwOjAsc3RyaW5nQXJyYXk6W1siZm9vIiwiYmFyIiwiYmF6Il1dLHdhbGxUaW1lSW5NczoxNTc3ODY1NmU1LHRydW5jYXRlZDohMX0se29yaWdpbmFsU2hhcGU6WzNdLHN0ZXA6MSxzdHJpbmdBcnJheTpbWyJmb28iLCJiYXoiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2MDFlMyx0cnVuY2F0ZWQ6ITF9XV0sWyJhL2MiLFt7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDowLHN0cmluZ0FycmF5OltbIldlIGNvbmR1Y3RlZCBhbiBleHBlcmltZW50IGFuZCBmb3VuZCB0aGUgZm9sbG93aW5nIGRhdGE6XG5cblBvdW5kcyBvZiBjaG9jb2xhdGUgfCBIYXBwaW5lc3Ncbi0tLXwtLS1cbjAgfCAxXG4xIHwgNFxuMiB8IDlcbjMgfCAxNlxuNCB8IDI1XG41IHwgMzZcbjYgfCA0OVxuNyB8IDY0XG44IHwgODFcbjkgfCAxMDBcbjEwIHwgMTIxIl1dLHdhbGxUaW1lSW5NczoxNTc3ODY1NmU1LHRydW5jYXRlZDohMX0se29yaWdpbmFsU2hhcGU6WzNdLHN0ZXA6MSxzdHJpbmdBcnJheTpbWyLDlyIsIioqMCoqIiwiKioxKioiLCIqKjIqKiIsIioqMyoqIiwiKio0KioiLCIqKjUqKiJdLFsiKiowKioiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiXSxbIioqMSoqIiwiMCIsIjEiLCIyIiwiMyIsIjQiLCI1Il0sWyIqKjIqKiIsIjAiLCIyIiwiNCIsIjYiLCI4IiwiMTAiXSxbIioqMyoqIiwiMCIsIjMiLCI2IiwiOSIsIjEyIiwiMTUiXSxbIioqNCoqIiwiMCIsIjQiLCI4IiwiMTIiLCIxNiIsIjIwIl0sWyIqKjUqKiIsIjAiLCI1IiwiMTAiLCIxNSIsIjIwIiwiMjUiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2MDFlMyx0cnVuY2F0ZWQ6ITF9XV1dKV1dKSx2aXNpYmxlUnVuVGFnczpuZXcgTWFwfSk7ZnVuY3Rpb24gTHd0KHQsZSl7cmV0dXJuIEZ3dCh0LGUpfWNsYXNzIEJ3dHt9Qnd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCd3QpfSxCd3QuybVjbXA9c28oe3R5cGU6Qnd0LHNlbGVjdG9yczpbWyJ0ZXh0LWRhc2hib2FyZCJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZQZigwLCIgVGhpcyBpcyB0aGUgdGV4dCBkYXNoYm9hcmQgIil9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoQnd0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRleHQtZGFzaGJvYXJkIix0ZW1wbGF0ZToiIFRoaXMgaXMgdGhlIHRleHQgZGFzaGJvYXJkICIsY2hhbmdlRGV0ZWN0aW9uOlVuLk9uUHVzaH1dfV0sbnVsbCxudWxsKTtjbGFzcyBWd3R7fVZ3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Vnd0KX0sVnd0Lsm1bW9kPXVvKHt0eXBlOlZ3dH0pLFZ3dC7JtWluaj1Ebih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihWd3QsW3t0eXBlOkxfLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0J3dF0sZXhwb3J0czpbQnd0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFZ3dCx7ZGVjbGFyYXRpb25zOltCd3RdLGV4cG9ydHM6W0J3dF19KTtjbGFzcyBVd3R7fVV3dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VXd0KX0sVXd0Lsm1bW9kPXVvKHt0eXBlOlV3dH0pLFV3dC7JtWluaj1Ebih7aW1wb3J0czpbW3J4LFZ3dCxFWC5mb3JQbHVnaW4oInRleHRfdjIiLEJ3dCksU3d0LFRTLmZvckZlYXR1cmUoVHd0LEx3dCksaEQuZm9yRmVhdHVyZShbSHd0XSldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoVXd0LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbcngsVnd0LEVYLmZvclBsdWdpbigidGV4dF92MiIsQnd0KSxTd3QsVFMuZm9yRmVhdHVyZShUd3QsTHd0KSxoRC5mb3JGZWF0dXJlKFtId3RdKV0sZW50cnlDb21wb25lbnRzOltCd3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmZm8oVXd0LHtpbXBvcnRzOltyeCxWd3QsRVgsU3d0LEFTLGdEXX0pO2NsYXNzIGp3dHt9dmFyIFd3dDtqd3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGp3dCl9LGp3dC7JtW1vZD11byh7dHlwZTpqd3R9KSxqd3QuybVpbmo9RG4oe2ltcG9ydHM6W1tuMCxzQ3QsUHd0LFV3dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihqd3QsW3t0eXBlOkxfLGFyZ3M6W3tpbXBvcnRzOltuMCxzQ3QsUHd0LFV3dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhqd3Qse2ltcG9ydHM6W24wLHNDdCxQd3QsVXd0XX0pLChmdW5jdGlvbih0KXt0LkNVU1RPTV9FTEVNRU5UPSJDVVNUT01fRUxFTUVOVCIsdC5JRlJBTUU9IklGUkFNRSIsdC5OR19DT01QT05FTlQ9Ik5HX0NPTVBPTkVOVCIsdC5OT05FPSJOT05FIn0pKFd3dHx8KFd3dD17fSkpO2NvbnN0IEd3dD1bInBsdWdpbkNvbnRhaW5lciJdLFl3dD1bIm5nUGx1Z2luQ29udGFpbmVyIl07ZnVuY3Rpb24gcXd0KHQsZSl7MSZ0JiZPdSgwKX1mdW5jdGlvbiBad3QodCxlKXtpZigxJnQmJih2dSgwKSxIbSgxLHF3dCwxLDAsIm5nLWNvbnRhaW5lciIsOSkseHUoKSksMiZ0KXtjb25zdCB0PU51KDIpLGU9Rm0oNik7RGMoMSksaHUoIm5nVGVtcGxhdGVPdXRsZXQiLHQuZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZT90LmVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU6ZSl9fWZ1bmN0aW9uIFh3dCh0LGUpezEmdCYmT3UoMCl9ZnVuY3Rpb24gS3d0KHQsZSl7aWYoMSZ0JiYodnUoMCksSG0oMSxYd3QsMSwwLCJuZy1jb250YWluZXIiLDkpLHh1KCkpLDImdCl7Y29uc3QgdD1OdSgyKSxlPUZtKDYpO0RjKDEpLGh1KCJuZ1RlbXBsYXRlT3V0bGV0Iix0LmVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZT90LmVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZTplKX19ZnVuY3Rpb24gSnd0KHQsZSl7MSZ0JiZPdSgwKX1mdW5jdGlvbiBRd3QodCxlKXtpZigxJnQmJih2dSgwKSxIbSgxLEp3dCwxLDAsIm5nLWNvbnRhaW5lciIsOSkseHUoKSksMiZ0KXtjb25zdCB0PU51KDIpLGU9Rm0oNik7RGMoMSksaHUoIm5nVGVtcGxhdGVPdXRsZXQiLHQuZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlP3QuZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOmUpfX1mdW5jdGlvbiAkd3QodCxlKXtpZigxJnQmJih2dSgwKSxfdSgxLCJoMyIsMTApLFBmKDIsIiBUaGVyZeKAmXMgbm8gZGFzaGJvYXJkIGJ5IHRoZSBuYW1lIG9mIOKAnCIpLF91KDMsImNvZGUiKSxQZig0KSxDdSgpLFBmKDUsIuKAnS4gIiksQ3UoKSxfdSg2LCJwIiksUGYoNywiWW91IGNhbiBzZWxlY3QgYSBkYXNoYm9hcmQgZnJvbSB0aGUgbGlzdCBhYm92ZS4iKSxDdSgpLF91KDgsInAiKSxPdSg5LDExKSxDdSgpLHh1KCkpLDImdCl7Y29uc3QgdD1OdSgyKSxlPUZtKDgpO0RjKDQpLHdmKHQuYWN0aXZlUGx1Z2luSWQpLERjKDUpLGh1KCJuZ1RlbXBsYXRlT3V0bGV0IixlKX19ZnVuY3Rpb24gdGt0KHQsZSl7aWYoMSZ0JiYodnUoMCksX3UoMSwiaDMiLDEyKSxQZigyLCIgTm8gZGFzaGJvYXJkcyBhcmUgYWN0aXZlIGZvciB0aGUgY3VycmVudCBkYXRhIHNldC4gIiksQ3UoKSxfdSgzLCJwIiksUGYoNCwiUHJvYmFibGUgY2F1c2VzOiIpLEN1KCksX3UoNSwidWwiKSxfdSg2LCJsaSIpLFBmKDcsIllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLiIpLEN1KCksX3UoOCwibGkiKSxQZig5LCJUZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy4iKSxDdSgpLEN1KCksUGYoMTAsIiBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0byBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUgIiksX3UoMTEsImEiLDEzKSxQZigxMiwiUkVBRE1FIiksQ3UoKSxQZigxMywiIGFuZCBwZXJoYXBzIHRoZSAiKSxfdSgxNCwiYSIsMTQpLFBmKDE1LCJUZW5zb3JCb2FyZCB0dXRvcmlhbCIpLEN1KCksUGYoMTYsIi4gIiksX3UoMTcsInAiKSxQZigxOCwiIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlICIpLF91KDE5LCJhIiwxNSksUGYoMjAsInRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXMiKSxDdSgpLFBmKDIxLCIgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuICIpLEN1KCksX3UoMjIsInAiKSxPdSgyMywxMSksQ3UoKSx4dSgpKSwyJnQpe051KDIpO2NvbnN0IHQ9Rm0oOCk7RGMoMjMpLGh1KCJuZ1RlbXBsYXRlT3V0bGV0Iix0KX19ZnVuY3Rpb24gZWt0KHQsZSl7aWYoMSZ0JiYoX3UoMCwiZGl2Iiw2KSxfdSgxLCJkaXYiLDcpLEhtKDIsWnd0LDIsMSwibmctY29udGFpbmVyIiw4KSxIbSgzLEt3dCwyLDEsIm5nLWNvbnRhaW5lciIsOCksSG0oNCxRd3QsMiwxLCJuZy1jb250YWluZXIiLDgpLEhtKDUsJHd0LDEwLDIsIm5nLWNvbnRhaW5lciIsOCksSG0oNix0a3QsMjQsMSwibmctY29udGFpbmVyIiw4KSxDdSgpLEN1KCkpLDImdCl7Y29uc3QgdD1OdSgpO2h1KCJuZ1N3aXRjaCIsdC5wbHVnaW5Mb2FkU3RhdGUpLERjKDIpLGh1KCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luTG9hZFN0YXRlLkVOVklST05NRU5UX0ZBSUxVUkVfTk9UX0ZPVU5EKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpbkxvYWRTdGF0ZS5FTlZJUk9OTUVOVF9GQUlMVVJFX1BFUk1JU1NJT05fREVOSUVEKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpbkxvYWRTdGF0ZS5FTlZJUk9OTUVOVF9GQUlMVVJFX1VOS05PV04pLERjKDEpLGh1KCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luTG9hZFN0YXRlLlVOS05PV05fUExVR0lOX0lEKSxEYygxKSxodSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpbkxvYWRTdGF0ZS5OT19FTkFCTEVEX1BMVUdJTlMpfX1mdW5jdGlvbiBua3QodCxlKXtpZigxJnQmJihfdSgwLCJoMyIsMTYpLFBmKDEsIkRhdGEgY291bGQgbm90IGJlIGxvYWRlZC4iKSxDdSgpLF91KDIsInAiKSxQZigzLCJUaGUgVGVuc29yQm9hcmQgc2VydmVyIG1heSBiZSBkb3duIG9yIGluYWNjZXNzaWJsZS4iKSxDdSgpLF91KDQsInAiKSxPdSg1LDExKSxDdSgpKSwyJnQpe051KCk7Y29uc3QgdD1GbSg4KTtEYyg1KSxodSgibmdUZW1wbGF0ZU91dGxldCIsdCl9fWZ1bmN0aW9uIG9rdCh0LGUpe2lmKDEmdCYmKF91KDAsInAiLDE5KSxfdSgxLCJpIiksUGYoMiwiTG9nIGRpcmVjdG9yeTogIiksX3UoMywic3BhbiIpLFBmKDQpLEN1KCksQ3UoKSxDdSgpKSwyJnQpe2NvbnN0IHQ9TnUoMik7RGMoNCksd2YodC5kYXRhTG9jYXRpb24pfX1mdW5jdGlvbiBpa3QodCxlKXtpZigxJnQmJihfdSgwLCJzcGFuIiwxNyksUGYoMSksX3koMiwiZGF0ZSIpLEN1KCksSG0oMyxva3QsNSwxLCJwIiwxOCkpLDImdCl7Y29uc3QgdD1OdSgpO0RjKDEpLGtmKCJMYXN0IHJlbG9hZDogIixNeSgyLDIsdC5sYXN0VXBkYXRlZCwibWVkaXVtIiksIiIpLERjKDIpLGh1KCJuZ0lmIix0LmRhdGFMb2NhdGlvbil9fWNvbnN0IGFrdD1mdW5jdGlvbih0KXtyZXR1cm57cGx1Z2luczohMCwiaXMtZmlyc3QtcGFydHktcGx1Z2luIjp0fX07dmFyIHJrdDshKGZ1bmN0aW9uKHQpe3RbdC5FTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORD0wXT0iRU5WSVJPTk1FTlRfRkFJTFVSRV9OT1RfRk9VTkQiLHRbdC5FTlZJUk9OTUVOVF9GQUlMVVJFX1BFUk1JU1NJT05fREVOSUVEPTFdPSJFTlZJUk9OTUVOVF9GQUlMVVJFX1BFUk1JU1NJT05fREVOSUVEIix0W3QuRU5WSVJPTk1FTlRfRkFJTFVSRV9VTktOT1dOPTJdPSJFTlZJUk9OTUVOVF9GQUlMVVJFX1VOS05PV04iLHRbdC5OT19FTkFCTEVEX1BMVUdJTlM9M109Ik5PX0VOQUJMRURfUExVR0lOUyIsdFt0LlVOS05PV05fUExVR0lOX0lEPTRdPSJVTktOT1dOX1BMVUdJTl9JRCIsdFt0LkxPQURFRD01XT0iTE9BREVEIix0W3QuTE9BRElORz02XT0iTE9BRElORyJ9KShya3R8fChya3Q9e30pKTtjbGFzcyBza3R7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPXQsdGhpcy5wbHVnaW5SZWdpc3RyeT1lLHRoaXMucGx1Z2luQXBpSG9zdD1uLHRoaXMuUGx1Z2luTG9hZFN0YXRlPXJrdCx0aGlzLkxvYWRpbmdNZWNoYW5pc21UeXBlPVd3dCx0aGlzLnBsdWdpbkluc3RhbmNlcz1uZXcgTWFwfW5nT25DaGFuZ2VzKHQpe3ZhciBlO2lmKCF0aGlzLmlzRmVhdHVyZUZsYWdzTG9hZGVkfHwhdGhpcy5hY3RpdmVLbm93blBsdWdpbnx8dGhpcy5zZXR0aW5nc0xvYWRTdGF0ZT09PUdFLk5PVF9MT0FERUR8fHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT1HRS5MT0FESU5HKXJldHVybjtjb25zdCBuPUJvb2xlYW4odGhpcy5hY3RpdmVLbm93blBsdWdpbiYmIXRoaXMucGx1Z2luSW5zdGFuY2VzLmhhcyh0aGlzLmFjdGl2ZUtub3duUGx1Z2luLmlkKSk7aWYodC5hY3RpdmVLbm93blBsdWdpbnx8dC5pc0ZlYXR1cmVGbGFnc0xvYWRlZHx8dC5zZXR0aW5nc0xvYWRTdGF0ZSl7Y29uc3Qgbz1udWxsPT09KGU9dC5hY3RpdmVLbm93blBsdWdpbil8fHZvaWQgMD09PWU/dm9pZCAwOmUucHJldmlvdXNWYWx1ZTtpZihvJiZvLmlkIT09dGhpcy5hY3RpdmVLbm93blBsdWdpbi5pZCYmdGhpcy5oaWRlUGx1Z2luKG8pLG4pe2NvbnN0IHQ9dGhpcy5jcmVhdGVQbHVnaW4odGhpcy5hY3RpdmVLbm93blBsdWdpbik7dCYmdGhpcy5wbHVnaW5JbnN0YW5jZXMuc2V0KHRoaXMuYWN0aXZlS25vd25QbHVnaW4uaWQsdCl9ZWxzZSB0aGlzLnNob3dQbHVnaW4odGhpcy5hY3RpdmVLbm93blBsdWdpbil9KG58fHQubGFzdFVwZGF0ZWQpJiZ0aGlzLnJlbG9hZCh0aGlzLmFjdGl2ZUtub3duUGx1Z2luLG4pfWhpZGVQbHVnaW4odCl7aWYoIXRoaXMucGx1Z2luSW5zdGFuY2VzLmhhcyh0LmlkKSlyZXR1cm47Y29uc3QgZT10aGlzLnBsdWdpbkluc3RhbmNlcy5nZXQodC5pZCk7T2JqZWN0LmFzc2lnbihlLnN0eWxlLHttYXhIZWlnaHQ6MCxvdmVyZmxvdzoiaGlkZGVuIix2aXNpYmlsaXR5OiJoaWRkZW4iLHBvc2l0aW9uOiJhYnNvbHV0ZSJ9KX1zaG93UGx1Z2luKHQpe2lmKCF0aGlzLnBsdWdpbkluc3RhbmNlcy5oYXModC5pZCkpcmV0dXJuO2NvbnN0IGU9dGhpcy5wbHVnaW5JbnN0YW5jZXMuZ2V0KHQuaWQpO09iamVjdC5hc3NpZ24oZS5zdHlsZSx7bWF4SGVpZ2h0Om51bGwsb3ZlcmZsb3c6bnVsbCx2aXNpYmlsaXR5Om51bGwscG9zaXRpb246bnVsbH0pfWNyZWF0ZVBsdWdpbih0KXtsZXQgZT1udWxsO3N3aXRjaCh0LmxvYWRpbmdfbWVjaGFuaXNtLnR5cGUpe2Nhc2UgV3d0LkNVU1RPTV9FTEVNRU5UOmU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0LmxvYWRpbmdfbWVjaGFuaXNtLmVsZW1lbnRfbmFtZSksZS5yZWxvYWRPblJlYWR5PSExLGUuZmVhdHVyZUZsYWdzPXRoaXMuZmVhdHVyZUZsYWdzLHRoaXMucGx1Z2luc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGUpO2JyZWFrO2Nhc2UgV3d0LklGUkFNRTppZighdGhpcy5wbHVnaW5BcGlIb3N0KXRocm93IEVycm9yKGBJRlJBTUUtYmFzZWQgcGx1Z2lucyBub3Qgc3VwcG9ydGVkOiAke3QuaWR9YCk7ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxlLnNldEF0dHJpYnV0ZSgic3JjIixgZGF0YS9wbHVnaW5fZW50cnkuaHRtbD9uYW1lPSR7dC5pZH1gKSx0aGlzLnBsdWdpbkFwaUhvc3QucmVnaXN0ZXJQbHVnaW5JZnJhbWUoZSx0LmlkKSx0aGlzLnBsdWdpbnNDb250YWluZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlKTticmVhaztjYXNlIFd3dC5OR19DT01QT05FTlQ6Y29uc3Qgbj10aGlzLnBsdWdpblJlZ2lzdHJ5LmdldENvbXBvbmVudCh0LmlkKTtpZihuKXtjb25zdCB0PXRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KG4pO2U9dGhpcy5uZ1BsdWdpbkNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodCkubG9jYXRpb24ubmF0aXZlRWxlbWVudH1lbHNlIGNvbnNvbGUuZXJyb3IoYE5vIHJlZ2lzdGVyZWQgQW5ndWxhciBjb21wb25lbnQgZm9yIHBsdWdpbjogJHt0LmlkfWApO2JyZWFrO2Nhc2UgV3d0Lk5PTkU6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVkIHBsdWdpbiIpfXJldHVybiBlfXJlbG9hZCh0LGUpe2lmKCFlJiZ0LmRpc2FibGVfcmVsb2FkKXJldHVybjtjb25zdCBuPXRoaXMucGx1Z2luSW5zdGFuY2VzLmdldCh0LmlkKTtuJiZuLnJlbG9hZCYmbi5yZWxvYWQoKX19c2t0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxza3QpKGZ1KEdoKSxmdShFWCksZnUodEgsOCkpfSxza3QuybVjbXA9c28oe3R5cGU6c2t0LHNlbGVjdG9yczpbWyJwbHVnaW5zLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFZ5KEd3dCw3LEtoKSxWeShZd3QsNyxGYikpLDImZSl7bGV0IHQ7QnkodD1qeSgpKSYmKG4ucGx1Z2luc0NvbnRhaW5lcj10LmZpcnN0KSxCeSh0PWp5KCkpJiYobi5uZ1BsdWdpbkNvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7YWN0aXZlUGx1Z2luSWQ6ImFjdGl2ZVBsdWdpbklkIixhY3RpdmVLbm93blBsdWdpbjoiYWN0aXZlS25vd25QbHVnaW4iLHBsdWdpbkxvYWRTdGF0ZToicGx1Z2luTG9hZFN0YXRlIixkYXRhTG9jYXRpb246ImRhdGFMb2NhdGlvbiIsaXNGZWF0dXJlRmxhZ3NMb2FkZWQ6ImlzRmVhdHVyZUZsYWdzTG9hZGVkIixzZXR0aW5nc0xvYWRTdGF0ZToic2V0dGluZ3NMb2FkU3RhdGUiLGZlYXR1cmVGbGFnczoiZmVhdHVyZUZsYWdzIixsYXN0VXBkYXRlZDoibGFzdFVwZGF0ZWQiLGVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiLGVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZToiZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlIixlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSJ9LGZlYXR1cmVzOltxb10sZGVjbHM6OSx2YXJzOjQsY29uc3RzOltbMywibmdDbGFzcyJdLFsicGx1Z2luQ29udGFpbmVyIiwiIl0sWyJuZ1BsdWdpbkNvbnRhaW5lciIsIiJdLFsiY2xhc3MiLCJ3YXJuaW5nIiwzLCJuZ1N3aXRjaCIsNCwibmdJZiJdLFsiZW52aXJvbm1lbnRGYWlsdXJlRGVmYXVsdFRlbXBsYXRlIiwiIl0sWyJkYXRlQW5kRGF0YUxvY2F0aW9uIiwiIl0sWzEsIndhcm5pbmciLDMsIm5nU3dpdGNoIl0sWzEsIndhcm5pbmctbWVzc2FnZSJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbNCwibmdUZW1wbGF0ZU91dGxldCJdLFsxLCJ1bmtub3duLXBsdWdpbiJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsIm5vLWFjdGl2ZS1wbHVnaW4iXSxbImhyZWYiLCJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiXSxbImhyZWYiLCJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIl0sWyJocmVmIiwiaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyJdLFsxLCJlbnZpcm9ubWVudC1ub3QtbG9hZGVkIl0sWzEsImxhc3QtcmVsb2FkLXRpbWUiXSxbImNsYXNzIiwiZGF0YS1sb2NhdGlvbiIsNCwibmdJZiJdLFsxLCJkYXRhLWxvY2F0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihfdSgwLCJkaXYiLDAsMSksT3UoMixudWxsLDIpLEN1KCksSG0oNCxla3QsNyw2LCJkaXYiLDMpLEhtKDUsbmt0LDYsMSwibmctdGVtcGxhdGUiLG51bGwsNCxxeSksSG0oNyxpa3QsNCw1LCJuZy10ZW1wbGF0ZSIsbnVsbCw1LHF5KSksMiZlJiYoaHUoIm5nQ2xhc3MiLGl5KDIsYWt0LChudWxsPT1uLmFjdGl2ZUtub3duUGx1Z2luP251bGw6bi5hY3RpdmVLbm93blBsdWdpbi5sb2FkaW5nX21lY2hhbmlzbS50eXBlKSE9PW4uTG9hZGluZ01lY2hhbmlzbVR5cGUuSUZSQU1FKSksRGMoNCksaHUoIm5nSWYiLG4ucGx1Z2luTG9hZFN0YXRlIT09bi5QbHVnaW5Mb2FkU3RhdGUuTE9BREVEJiZuLnBsdWdpbkxvYWRTdGF0ZSE9PW4uUGx1Z2luTG9hZFN0YXRlLkxPQURJTkcpKX0sZGlyZWN0aXZlczpbQ3YsUHYsRHYsUnYsSXZdLHBpcGVzOltZdl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjE7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAucGx1Z2lucy5pcy1maXJzdC1wYXJ0eS1wbHVnaW5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfS5wbHVnaW5zW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0ud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLndhcm5pbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzMwMzAzMH0ud2FybmluZy1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO21hcmdpbjo4MHB4IGF1dG8gMDttYXgtd2lkdGg6NTQwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLndhcm5pbmctbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC53YXJuaW5nLW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lmxhc3QtcmVsb2FkLXRpbWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc3R5bGU6aXRhbGljfS5wbHVnaW5zW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaWZyYW1le2JvcmRlcjowO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoc2t0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InBsdWdpbnMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9wbHVnaW5zX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJwbHVnaW5zX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6R2h9LHt0eXBlOkVYfSx7dHlwZTp0SCxkZWNvcmF0b3JzOlt7dHlwZTpCcn1dfV19KSx7cGx1Z2luc0NvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbInBsdWdpbkNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOktofV19XSxuZ1BsdWdpbkNvbnRhaW5lcjpbe3R5cGU6YXIsYXJnczpbIm5nUGx1Z2luQ29udGFpbmVyIix7c3RhdGljOiEwLHJlYWQ6RmJ9XX1dLGFjdGl2ZVBsdWdpbklkOlt7dHlwZTpSX31dLGFjdGl2ZUtub3duUGx1Z2luOlt7dHlwZTpSX31dLHBsdWdpbkxvYWRTdGF0ZTpbe3R5cGU6Ul99XSxkYXRhTG9jYXRpb246W3t0eXBlOlJffV0saXNGZWF0dXJlRmxhZ3NMb2FkZWQ6W3t0eXBlOlJffV0sc2V0dGluZ3NMb2FkU3RhdGU6W3t0eXBlOlJffV0sZmVhdHVyZUZsYWdzOlt7dHlwZTpSX31dLGxhc3RVcGRhdGVkOlt7dHlwZTpSX31dLGVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU6W3t0eXBlOlJffV0sZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlOlt7dHlwZTpSX31dLGVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZTpbe3R5cGU6Ul99XX0pO2NvbnN0IGxrdD1iUyhpVCxvVCwoKHQsZSk9PmUmJnRbZV0/T2JqZWN0LmFzc2lnbih7aWQ6ZX0sdFtlXSk6bnVsbCkpO2NsYXNzIGNrdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVLbm93blBsdWdpbiQ9dGhpcy5zdG9yZS5zZWxlY3QobGt0KSx0aGlzLmFjdGl2ZVBsdWdpbklkJD10aGlzLnN0b3JlLnNlbGVjdChvVCksdGhpcy5wbHVnaW5Mb2FkU3RhdGUkPUt0KHRoaXMuYWN0aXZlS25vd25QbHVnaW4kLHRoaXMuYWN0aXZlUGx1Z2luSWQkLHRoaXMuc3RvcmUuc2VsZWN0KCRBKSkucGlwZShWdCgoKFt0LGUsbl0pPT5udWxsIT09bi5mYWlsdXJlQ29kZT9uLmZhaWx1cmVDb2RlPT09VkUuTk9UX0ZPVU5EP3JrdC5FTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORDpuLmZhaWx1cmVDb2RlPT09VkUuUEVSTUlTU0lPTl9ERU5JRUQ/cmt0LkVOVklST05NRU5UX0ZBSUxVUkVfUEVSTUlTU0lPTl9ERU5JRUQ6cmt0LkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTjpudWxsIT09dD9ya3QuTE9BREVEOm51bGw9PT1uLmxhc3RMb2FkZWRUaW1lSW5NcyYmbi5zdGF0ZT09PUdFLkxPQURJTkc/cmt0LkxPQURJTkc6ZT9ya3QuVU5LTk9XTl9QTFVHSU5fSUQ6cmt0Lk5PX0VOQUJMRURfUExVR0lOUykpKSx0aGlzLmxhc3RMb2FkZWRUaW1lSW5NcyQ9dGhpcy5zdG9yZS5zZWxlY3QoblQpLHRoaXMuZGF0YUxvY2F0aW9uJD10aGlzLnN0b3JlLnNlbGVjdChhVCkucGlwZShWdCgodD0+dC5kYXRhX2xvY2F0aW9uKSkpLHRoaXMuaXNGZWF0dXJlRmxhZ3NMb2FkZWQkPXRoaXMuc3RvcmUuc2VsZWN0KEhEKSx0aGlzLmZlYXR1cmVGbGFncyQ9dGhpcy5zdG9yZS5zZWxlY3QoRkQpLHRoaXMuc2V0dGluZ3NMb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KHZJKX19Y2t0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxja3QpKGZ1KGlTKSl9LGNrdC7JtWNtcD1zbyh7dHlwZTpja3Qsc2VsZWN0b3JzOltbInBsdWdpbnMiXV0saW5wdXRzOntlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIixlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZSIsZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUifSxkZWNsczo5LHZhcnM6MjcsY29uc3RzOltbMywiYWN0aXZlS25vd25QbHVnaW4iLCJhY3RpdmVQbHVnaW5JZCIsImRhdGFMb2NhdGlvbiIsImxhc3RVcGRhdGVkIiwicGx1Z2luTG9hZFN0YXRlIiwiaXNGZWF0dXJlRmxhZ3NMb2FkZWQiLCJzZXR0aW5nc0xvYWRTdGF0ZSIsImZlYXR1cmVGbGFncyIsImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiLCJlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGUiLCJlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKE11KDAsInBsdWdpbnMtY29tcG9uZW50IiwwKSxfeSgxLCJhc3luYyIpLF95KDIsImFzeW5jIiksX3koMywiYXN5bmMiKSxfeSg0LCJhc3luYyIpLF95KDUsImFzeW5jIiksX3koNiwiYXN5bmMiKSxfeSg3LCJhc3luYyIpLF95KDgsImFzeW5jIikpLDImZSYmaHUoImFjdGl2ZUtub3duUGx1Z2luIixDeSgxLDExLG4uYWN0aXZlS25vd25QbHVnaW4kKSkoImFjdGl2ZVBsdWdpbklkIixDeSgyLDEzLG4uYWN0aXZlUGx1Z2luSWQkKSkoImRhdGFMb2NhdGlvbiIsQ3koMywxNSxuLmRhdGFMb2NhdGlvbiQpKSgibGFzdFVwZGF0ZWQiLEN5KDQsMTcsbi5sYXN0TG9hZGVkVGltZUluTXMkKSkoInBsdWdpbkxvYWRTdGF0ZSIsQ3koNSwxOSxuLnBsdWdpbkxvYWRTdGF0ZSQpKSgiaXNGZWF0dXJlRmxhZ3NMb2FkZWQiLEN5KDYsMjEsbi5pc0ZlYXR1cmVGbGFnc0xvYWRlZCQpKSgic2V0dGluZ3NMb2FkU3RhdGUiLEN5KDcsMjMsbi5zZXR0aW5nc0xvYWRTdGF0ZSQpKSgiZmVhdHVyZUZsYWdzIixDeSg4LDI1LG4uZmVhdHVyZUZsYWdzJCkpKCJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIixuLmVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUpKCJlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGUiLG4uZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlKSgiZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIixuLmVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSl9LHN0eWxlczpbInBsdWdpbnMtY29tcG9uZW50W19uZ2NvbnRlbnQtJUNPTVAlXSB7IGhlaWdodDogMTAwJTsgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZRYihja3QsW3t0eXBlOlNfLGFyZ3M6W3tzZWxlY3RvcjoicGx1Z2lucyIsdGVtcGxhdGU6J1xuICAgIDxwbHVnaW5zLWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZUtub3duUGx1Z2luXT0iYWN0aXZlS25vd25QbHVnaW4kIHwgYXN5bmMiXG4gICAgICBbYWN0aXZlUGx1Z2luSWRdPSJhY3RpdmVQbHVnaW5JZCQgfCBhc3luYyJcbiAgICAgIFtkYXRhTG9jYXRpb25dPSJkYXRhTG9jYXRpb24kIHwgYXN5bmMiXG4gICAgICBbbGFzdFVwZGF0ZWRdPSJsYXN0TG9hZGVkVGltZUluTXMkIHwgYXN5bmMiXG4gICAgICBbcGx1Z2luTG9hZFN0YXRlXT0icGx1Z2luTG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgICAgW2lzRmVhdHVyZUZsYWdzTG9hZGVkXT0iaXNGZWF0dXJlRmxhZ3NMb2FkZWQkIHwgYXN5bmMiXG4gICAgICBbc2V0dGluZ3NMb2FkU3RhdGVdPSJzZXR0aW5nc0xvYWRTdGF0ZSQgfCBhc3luYyJcbiAgICAgIFtmZWF0dXJlRmxhZ3NdPSJmZWF0dXJlRmxhZ3MkIHwgYXN5bmMiXG4gICAgICBbZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZV09ImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiXG4gICAgICBbZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlXT0iXG4gICAgICAgIGVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZVxuICAgICAgIlxuICAgICAgW2Vudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZV09ImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSJcbiAgICA+PC9wbHVnaW5zLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJwbHVnaW5zLWNvbXBvbmVudCB7IGhlaWdodDogMTAwJTsgfSJdLGNoYW5nZURldGVjdGlvbjpVbi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppU31dfSkse2Vudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU6W3t0eXBlOlJffV0sZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlOlt7dHlwZTpSX31dLGVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZTpbe3R5cGU6Ul99XX0pO2NsYXNzIGRrdHt9ZGt0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxka3QpfSxka3QuybVtb2Q9dW8oe3R5cGU6ZGt0fSksZGt0Lsm1aW5qPURuKHtpbXBvcnRzOltbbVQscngsRVhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoZGt0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltja3Qsc2t0XSxleHBvcnRzOltja3RdLGltcG9ydHM6W21ULHJ4LEVYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKGRrdCx7ZGVjbGFyYXRpb25zOltja3Qsc2t0XSxpbXBvcnRzOlttVCxyeCxFWF0sZXhwb3J0czpbY2t0XX0pLGxvKGNrdCxbc2t0XSxbVnZdKTtjbGFzcyBwa3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLnN0b3JlPXQsdGhpcy5kb2N1bWVudD1lLHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlPXRoaXMub25WaXNpYmlsaXR5Q2hhbmdlSW1wbC5iaW5kKHRoaXMpLHRoaXMucmVsb2FkRW5hYmxlZCQ9dGhpcy5zdG9yZS5waXBlKHJTKHhJKSksdGhpcy5yZWxvYWRQZXJpb2RJbk1zJD10aGlzLnN0b3JlLnBpcGUoclMoT0kpKSx0aGlzLnJlbG9hZFRpbWVySWQ9bnVsbCx0aGlzLm1pc3NlZEF1dG9SZWxvYWQ9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBCfW5nT25Jbml0KCl7dGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLm9uVmlzaWJpbGl0eUNoYW5nZSksS3QodGhpcy5yZWxvYWRFbmFibGVkJC5waXBlKHdlKCkpLHRoaXMucmVsb2FkUGVyaW9kSW5NcyQucGlwZSh3ZSgpKSkucGlwZShVZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKChbdCxlXSk9Pnt0aGlzLmNhbmNlbExvYWQoKSx0JiZ0aGlzLmxvYWQoZSl9KSl9b25WaXNpYmlsaXR5Q2hhbmdlSW1wbCgpeyJ2aXNpYmxlIj09PXRoaXMuZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlJiZ0aGlzLm1pc3NlZEF1dG9SZWxvYWQmJih0aGlzLm1pc3NlZEF1dG9SZWxvYWQ9ITEsdGhpcy5zdG9yZS5kaXNwYXRjaCh0QSgpKSl9bG9hZCh0KXt0aGlzLnJlbG9hZFRpbWVySWQ9c2V0VGltZW91dCgoKCk9PnsidmlzaWJsZSI9PT10aGlzLmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT90aGlzLnN0b3JlLmRpc3BhdGNoKHRBKCkpOnRoaXMubWlzc2VkQXV0b1JlbG9hZD0hMCx0aGlzLmxvYWQodCl9KSx0KX1jYW5jZWxMb2FkKCl7bnVsbCE9PXRoaXMucmVsb2FkVGltZXJJZCYmY2xlYXJUaW1lb3V0KHRoaXMucmVsb2FkVGltZXJJZCksdGhpcy5yZWxvYWRUaW1lcklkPW51bGx9bmdPbkRlc3Ryb3koKXt0aGlzLmNhbmNlbExvYWQoKSx0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlKSx0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfX1wa3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBrdCkoZnUoaVMpLGZ1KHNNKSl9LHBrdC7JtWNtcD1zbyh7dHlwZTpwa3Qsc2VsZWN0b3JzOltbInJlbG9hZGVyIl1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXt9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIocGt0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InJlbG9hZGVyIix0ZW1wbGF0ZToiIixjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aVN9LHt0eXBlOkRvY3VtZW50LGRlY29yYXRvcnM6W3t0eXBlOkxyLGFyZ3M6W3NNXX1dfV19KSxudWxsKTtjbGFzcyBta3R7fW1rdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bWt0KX0sbWt0Lsm1Y21wPXNvKHt0eXBlOm1rdCxzZWxlY3RvcnM6W1sidGVuc29yYm9hcmQtd3JhcHBlci1jb21wb25lbnQiXV0sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbMSwicGx1Z2lucyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTXUoMCwicGx1Z2lucyIsMCksTXUoMSwicmVsb2FkZXIiKSl9LGRpcmVjdGl2ZXM6W2NrdCxwa3RdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5wbHVnaW5zW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGZsZXg6IDEgMTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIobWt0LFt7dHlwZTpTXyxhcmdzOlt7c2VsZWN0b3I6InRlbnNvcmJvYXJkLXdyYXBwZXItY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPHBsdWdpbnMgY2xhc3M9InBsdWdpbnMiPjwvcGx1Z2lucz5cbiAgICA8cmVsb2FkZXI+PC9yZWxvYWRlcj5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAucGx1Z2lucyB7XG4gICAgICAgIGZsZXg6IDEgMTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246VW4uT25QdXNofV19XSxudWxsLG51bGwpO2NsYXNzIHVrdHt9dWt0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1a3QpfSx1a3QuybVwcm92PVNuKHt0b2tlbjp1a3QsZmFjdG9yeTp1a3QuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKHVrdCxbe3R5cGU6am19XSxudWxsLG51bGwpO2NvbnN0IGZrdD0ic21vb3RoaW5nIixna3Q9InJ1bkNvbG9yR3JvdXAiLGhrdD0idGFnRmlsdGVyIixia3Q9InJ1bkZpbHRlciIseWt0PSJyZWdleDoiO2xldCBfa3Q9Y2xhc3MgZXh0ZW5kcyB1a3R7Z2V0TWV0cmljc1Bpbm5lZENhcmRzKHQpe3JldHVybiBLdChbdC5zZWxlY3QoeXopLHQuc2VsZWN0KEN6KV0pLnBpcGUoVnQoKChbdCxlXSk9PntpZighdC5sZW5ndGgmJiFlLmxlbmd0aClyZXR1cm5bXTtjb25zdCBuPVsuLi50Lm1hcCgoKHtwbHVnaW46dCx0YWc6ZSxzYW1wbGU6bixydW5JZDpvfSk9Pntjb25zdCBpPXtwbHVnaW46dCx0YWc6ZX07cmV0dXJuIGFOKHQpJiYoaS5ydW5JZD1vKSxvTih0KSYmKGkuc2FtcGxlPW4pLGl9KSksLi4uZV07cmV0dXJuW3trZXk6InBpbm5lZENhcmRzIix2YWx1ZTpKU09OLnN0cmluZ2lmeShuKX1dfSkpKX1nZXRGZWF0dXJlRmxhZ1N0YXRlcyh0KXtyZXR1cm4gS3QoW3Quc2VsZWN0KGpEKSx0LnNlbGVjdChMRCldKS5waXBlKFZ0KCgoW3QsZV0pPT57Y29uc3Qgbj10Lm1hcCgodD0+KHtrZXk6eU4sdmFsdWU6dH0pKSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZS5lbmFibGVkQ29sb3JHcm91cCYmbi5wdXNoKHtrZXk6TU4sdmFsdWU6U3RyaW5nKGUuZW5hYmxlZENvbG9yR3JvdXApfSksImJvb2xlYW4iPT10eXBlb2YgZS5lbmFibGVkQ29sb3JHcm91cEJ5UmVnZXgmJm4ucHVzaCh7a2V5OnZOLHZhbHVlOlN0cmluZyhlLmVuYWJsZWRDb2xvckdyb3VwQnlSZWdleCl9KSxufSkpKX1zZXJpYWxpemVTdGF0ZVRvUXVlcnlQYXJhbXModCl7cmV0dXJuIEt0KFt0aGlzLmdldE1ldHJpY3NQaW5uZWRDYXJkcyh0KSx0LnNlbGVjdChOeikucGlwZShWdCgodD0+dD9be2tleTpoa3QsdmFsdWU6dH1dOltdKSkpLHRoaXMuZ2V0RmVhdHVyZUZsYWdTdGF0ZXModCksdC5zZWxlY3QoeHopLnBpcGUoVnQoKHQ9Pk51bWJlci5pc0Zpbml0ZSh0LnNjYWxhclNtb290aGluZyk/W3trZXk6Zmt0LHZhbHVlOlN0cmluZyh0LnNjYWxhclNtb290aGluZyl9XTpbXSkpKSx0LnNlbGVjdChySSkucGlwZShWdCgodD0+e2lmKCF0KXJldHVybltdO2xldCBlO3N3aXRjaCh0LmtleSl7Y2FzZSBaei5FWFBFUklNRU5UOmU9ImV4cGVyaW1lbnQiO2JyZWFrO2Nhc2UgWnouUlVOOmU9InJ1biI7YnJlYWs7Y2FzZSBaei5SRUdFWDplPWByZWdleDoke3QucmVnZXhTdHJpbmd9YDticmVhaztkZWZhdWx0OnRocm93IG5ldyBSYW5nZUVycm9yKCJTZXJpYWxpemF0aW9uIG5vdCBpbXBsZW1lbnRlZCIpfXJldHVyblt7a2V5OmdrdCx2YWx1ZTplfV19KSkpLHQuc2VsZWN0KGxJKS5waXBlKFZ0KCh0PT50P1t7a2V5OmJrdCx2YWx1ZTp0fV06W10pKSldKS5waXBlKFZ0KCh0PT50LmZsYXQoKSkpKX1kZXNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKHQpe2xldCBlPW51bGwsbj1udWxsLG89bnVsbCxpPW51bGwsYT1udWxsO2Zvcihjb25zdHtrZXk6cix2YWx1ZTpzfW9mIHQpc3dpdGNoKHIpe2Nhc2UicGlubmVkQ2FyZHMiOmU9Q2t0KHMpO2JyZWFrO2Nhc2UgZmt0Om49TnVtYmVyKHMpO2JyZWFrO2Nhc2UgZ2t0OnN3aXRjaChzKXtjYXNlImV4cGVyaW1lbnQiOmk9e2tleTpaei5FWFBFUklNRU5UfTticmVhaztjYXNlInJ1biI6aT17a2V5Olp6LlJVTn19aWYocy5zdGFydHNXaXRoKHlrdCkpe2NvbnN0IHQ9cy5zbGljZSh5a3QubGVuZ3RoKTtpPXtrZXk6WnouUkVHRVgscmVnZXhTdHJpbmc6dH19YnJlYWs7Y2FzZSBoa3Q6bz1zO2JyZWFrO2Nhc2UgYmt0OmE9c31yZXR1cm57bWV0cmljczp7cGlubmVkQ2FyZHM6ZXx8W10sc21vb3RoaW5nOm4sdGFnRmlsdGVyOm99LHJ1bnM6e2dyb3VwQnk6aSxyZWdleEZpbHRlcjphfX19fTtmdW5jdGlvbiBDa3QodCl7bGV0IGU7dHJ5e2U9SlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm4gbnVsbH1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9InN0cmluZyI9PXR5cGVvZiB0LnJ1bklkLGk9Im51bWJlciI9PXR5cGVvZiB0LnNhbXBsZSxhPSJzdHJpbmciPT10eXBlb2YgdC50YWcscj1lfHx2b2lkIDA9PT10LnJ1bklkLHM9aXx8dm9pZCAwPT09dC5zYW1wbGU7aWYoISgic3RyaW5nIj09dHlwZW9mIHQucGx1Z2luJiZhJiZyJiZzKSljb250aW51ZTtpZigobz10LnBsdWdpbikhPT1RVC5TQ0FMQVJTJiZvIT09UVQuSElTVE9HUkFNUyYmbyE9PVFULklNQUdFUyljb250aW51ZTtpZighdC50YWcpY29udGludWU7aWYoYU4odC5wbHVnaW4pKXtpZighdC5ydW5JZCljb250aW51ZX1lbHNlIGlmKHQucnVuSWQpY29udGludWU7aWYoaSl7aWYoIW9OKHQucGx1Z2luKSljb250aW51ZTtpZighTnVtYmVyLmlzSW50ZWdlcih0LnNhbXBsZSl8fHQuc2FtcGxlPDApY29udGludWV9Y29uc3QgbD17cGx1Z2luOnQucGx1Z2luLHRhZzp0LnRhZ307ZSYmKGwucnVuSWQ9dC5ydW5JZCksaSYmKGwuc2FtcGxlPXQuc2FtcGxlKSxuLnB1c2gobCl9dmFyIG87cmV0dXJuIG59ZnVuY3Rpb24gTWt0KCl7cmV0dXJuW3tyb3V0ZUtpbmQ6X0QuRVhQRVJJTUVOVCxwYXRoOiIvIixuZ0NvbXBvbmVudDpta3QsZGVmYXVsdFJvdXRlOiEwLGRlZXBMaW5rUHJvdmlkZXI6bmV3IF9rdH1dfWZ1bmN0aW9uIHZrdCh0KXtyZXR1cm4oZSxuKT0+e2NvbnN0IG89dChlLG4pO3JldHVybiBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKG4udHlwZSksY29uc29sZS5sb2coInByZXYgc3RhdGUiLGUpLGNvbnNvbGUubG9nKCJhY3Rpb24iLG4pLGNvbnNvbGUubG9nKCJuZXh0IHN0YXRlIixvKSxjb25zb2xlLmdyb3VwRW5kKCksb319ZnVuY3Rpb24geGt0KCl7cmV0dXJuIFBDKCk/dmt0OnQ9PihlLG4pPT50KGUsbil9X2t0PShmdW5jdGlvbiBPa3QodCxlLG4sbyl7dmFyIGksYT1hcmd1bWVudHMubGVuZ3RoLHI9YTwzP2U6bnVsbD09PW8/bz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6bztpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXI9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixvKTtlbHNlIGZvcih2YXIgcz10Lmxlbmd0aC0xO3M+PTA7cy0tKShpPXRbc10pJiYocj0oYTwzP2kocik6YT4zP2koZSxuLHIpOmkoZSxuKSl8fHIpO3JldHVybiBhPjMmJnImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4scikscn0pKFtqbSgpXSxfa3QpO2NvbnN0IFBrdD1uZXcgZXIoIlJvb3QgcmVkdWNlcnMgdG9rZW4iLHtmYWN0b3J5OigpPT4oe30pfSk7Y2xhc3Mgd2t0e313a3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdrdCl9LHdrdC7JtW1vZD11byh7dHlwZTp3a3R9KSx3a3QuybVpbmo9RG4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6TGssdXNlRmFjdG9yeTp4a3QsbXVsdGk6ITB9XSxpbXBvcnRzOltbVFMuZm9yUm9vdChQa3Qse3J1bnRpbWVDaGVja3M6e3N0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITF9fSksaEQuZm9yUm9vdChbXSldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIod2t0LFt7dHlwZTpMXyxhcmdzOlt7aW1wb3J0czpbVFMuZm9yUm9vdChQa3Qse3J1bnRpbWVDaGVja3M6e3N0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITF9fSksaEQuZm9yUm9vdChbXSldLHByb3ZpZGVyczpbe3Byb3ZpZGU6TGssdXNlRmFjdG9yeTp4a3QsbXVsdGk6ITB9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKHdrdCx7aW1wb3J0czpbRVMsZkRdfSk7Y2xhc3Mga2t0e31ra3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtrdCl9LGtrdC7JtW1vZD11byh7dHlwZTpra3R9KSxra3QuybVpbmo9RG4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUWIoa2t0LFt7dHlwZTpMXyxhcmdzOlt7ZGVjbGFyYXRpb25zOltwa3RdLGV4cG9ydHM6W3BrdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZmbyhra3Qse2RlY2xhcmF0aW9uczpbcGt0XSxleHBvcnRzOltwa3RdfSk7Y2xhc3MgU2t0e31Ta3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNrdCl9LFNrdC7JtW1vZD11byh7dHlwZTpTa3R9KSxTa3QuybVpbmo9RG4oe2ltcG9ydHM6W1tyeCxka3Qsa2t0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKFNrdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbbWt0XSxpbXBvcnRzOltyeCxka3Qsa2t0XSxleHBvcnRzOltta3RdLGVudHJ5Q29tcG9uZW50czpbbWt0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKFNrdCx7ZGVjbGFyYXRpb25zOltta3RdLGltcG9ydHM6W3J4LGRrdCxra3RdLGV4cG9ydHM6W21rdF19KTtjbGFzcyBEa3R7fURrdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RGt0KX0sRGt0Lsm1bW9kPXVvKHt0eXBlOkRrdCxib290c3RyYXA6W2RYXX0pLERrdC7JtWluaj1Ebih7aW1wb3J0czpbW1VOLGRPLGhrLE5SLG1YLGJSLnJlZ2lzdGVyUm91dGVzKE1rdCksWlYscVYsdVgsU2t0LG1ULENYLGdYLGtYLFZULFNYLGhYLFFSLHRILGRrdCxqSSxQWCx3a3Qsand0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlFiKERrdCxbe3R5cGU6TF8sYXJnczpbe2RlY2xhcmF0aW9uczpbZFhdLGltcG9ydHM6W1VOLGRPLGhrLE5SLG1YLGJSLnJlZ2lzdGVyUm91dGVzKE1rdCksWlYscVYsdVgsU2t0LG1ULENYLGdYLGtYLFZULFNYLGhYLFFSLHRILGRrdCxqSSxQWCx3a3Qsand0XSxib290c3RyYXA6W2RYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJmZvKERrdCx7ZGVjbGFyYXRpb25zOltkWF0saW1wb3J0czpbVU4sZE8saGssTlIsbVgsYlIsWlYscVYsdVgsU2t0LG1ULENYLGdYLGtYLFZULFNYLGhYLFFSLHRILGRrdCxqSSxQWCx3a3Qsand0XX0pLCJsb2FkaW5nIiE9PWRvY3VtZW50LnJlYWR5U3RhdGU/YU8oKS5ib290c3RyYXBNb2R1bGUoRGt0KTp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsKCgpPT57YU8oKS5ib290c3RyYXBNb2R1bGUoRGt0KX0pKSwoZnVuY3Rpb24gUmt0KCl7aWYoT0MpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5hYmxlIHByb2QgbW9kZSBhZnRlciBwbGF0Zm9ybSBzZXR1cC4iKTsodm9pZCAwPT09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKFhuLm5nRGV2TW9kZT0hMSkseEM9ITF9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoKX0pKCk7Cg==", "ok": true, "headers": [ [ "content-type", "application/javascript; charset=utf-8" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=train%2Fyolov5s_results2&tag=metrics%2FmAP_0.5": { "data": "W1sxNjY3MDUwODk4LjYxMTE1NTUsIDAsIDAuMF0sIFsxNjY3MDUwOTAyLjc5NTkwNzUsIDEsIDguMDU2MDczOTY2MTQ1MDVlLTA2XSwgWzE2NjcwNTA5MDcuMDE3NDYwNiwgMiwgNy44NDA0NjY0MjM2NTg2NTRlLTA2XSwgWzE2NjcwNTA5MTAuOTM2MDgxNCwgMywgNi4wODA4MDk1NDQwNzM0MThlLTA1XSwgWzE2NjcwNTA5MTYuMTcyOTQxNywgNCwgMS42Njk4NDQyNzc3ODUxNTk2ZS0wNV0sIFsxNjY3MDUwOTE5Ljk2MTc2NjUsIDUsIDEuODQxNzMyNDA5OTU3MzMwN2UtMDVdLCBbMTY2NzA1MDkyMy44MTE2NDksIDYsIDIuOTQ2OTgwNTY2Nzc1ODkyZS0wNV0sIFsxNjY3MDUwOTI3LjgxNzgxNjcsIDcsIDIuNjg4MDM1NzgzNjQ4OTU2NmUtMDVdLCBbMTY2NzA1MDkzMS41NzA0NSwgOCwgMC4wXSwgWzE2NjcwNTA5MzUuMzU0MTQyLCA5LCAwLjBdLCBbMTY2NzA1MDkzOS4xOTczODMyLCAxMCwgMi41Njk5MjIyNTMzMTQ4NzEzZS0wNV0sIFsxNjY3MDUwOTQzLjM1NDQwNjQsIDExLCA2Ljk0OTMyOTY5MDU0MjA3MmUtMDVdLCBbMTY2NzA1MDk0Ny41MzQ4MjQ0LCAxMiwgNC45NDI3MzYyNjgyNzYzNDllLTA1XSwgWzE2NjcwNTA5NTEuNDIzNTYwOSwgMTMsIDAuMDAwMTUzMjQzNzc0NTQ4MTcyOTVdLCBbMTY2NzA1MDk1NS41MjY3NjA4LCAxNCwgMC4wMDAxMTM0Mjk2OTA4Mjc2MTU1Nl0sIFsxNjY3MDUwOTU5LjU2OTMzMzgsIDE1LCAwLjAwMDI0NDYyMzYzMjE3MDI1OTk1XSwgWzE2NjcwNTA5NjMuNjE1MzIzNSwgMTYsIDAuMDAwMzEzMDk5NDczNzE0ODI4NV0sIFsxNjY3MDUwOTY3LjU2ODE1NzQsIDE3LCAwLjAwMDQwNjAwOTQwNzAxNTUxNzM1XSwgWzE2NjcwNTA5NzEuNjM3ODA3OCwgMTgsIDAuMDAwMzE4Njk4NzU5NjU2Mzk5NV0sIFsxNjY3MDUwOTc1LjU2OTIxMjQsIDE5LCAwLjAwMDIwNzU5ODQ5NTc2Mjc5NTJdLCBbMTY2NzA1MDk3OS40ODEzNzI4LCAyMCwgMC4wMDAyMDE1NzMxMTUxOTE0MjI0XSwgWzE2NjcwNTA5ODMuNDEyMDczMSwgMjEsIDAuMDAwNjI1ODc4Mzk3ODQxMDA2NV0sIFsxNjY3MDUwOTg3LjU1NDkyMywgMjIsIDAuMDAwMzkyNjQ4MDEzMDc1ODEzNjVdLCBbMTY2NzA1MDk5MS42NDA0MTAyLCAyMywgMC4wMDEwNTE5NzUxODEzMjYyN10sIFsxNjY3MDUwOTk1LjczNjIyMjcsIDI0LCAwLjAwMDM4OTE5Mzk0MTM3MzM3ODA0XSwgWzE2NjcwNTA5OTkuNjU5ODE2LCAyNSwgMC4wMDEwMDk3NTQwMjE2NTIwNDI5XSwgWzE2NjcwNTEwMDMuNTY2MzgzNCwgMjYsIDAuMDAwNjk1Mjk2MTU1NzU0NDc2OF0sIFsxNjY3MDUxMDA3LjQ4NDgwMTUsIDI3LCAwLjAwMDMyMjM0MjYxNzQzNzI0MzQ2XSwgWzE2NjcwNTEwMTEuNDI4MDEzNiwgMjgsIDAuMDAwNTU1NzkzMDU2MjY0NTE5N10sIFsxNjY3MDUxMDE1LjMwMzYwMDMsIDI5LCAwLjAwMDk0OTcxMzE2ODY2NTc2NjddLCBbMTY2NzA1MTAxOS40OTc0MTYsIDMwLCAwLjAwMTI5OTU2OTYxNjA5NDIzMTZdLCBbMTY2NzA1MTAyMy43NjY2NzAyLCAzMSwgMC4wMDI2MDQ4NTkxODI2MTExMDhdLCBbMTY2NzA1MTAyOC4wOTI2NjA0LCAzMiwgMC4wMDA2ODgwMjI1ODQ2NTQzOTA4XSwgWzE2NjcwNTEwMzIuMDU1MDUzMiwgMzMsIDAuMDAxMDY2NDkwNDI1NzI4MjYxNV0sIFsxNjY3MDUxMDM2LjA1NjA1NzcsIDM0LCAwLjAwMzE5NDg1ODU1Mjg4ODAzNThdLCBbMTY2NzA1MTA0MC4yMzY4MDY0LCAzNSwgMC4wMDEwNDUxNTA1NjU5MTQ4MDk3XSwgWzE2NjcwNTEwNDQuMTE2MDU1MywgMzYsIDAuMDA1MTM1MjU0NDY4NzY4ODM1XSwgWzE2NjcwNTEwNDguMzQ1NzU1LCAzNywgMC4wMDI4NDk4OTU1MDcwOTcyNDQzXSwgWzE2NjcwNTEwNTIuMjg5MjAwMywgMzgsIDAuMDE2MDQ0MTYyMjEzODAyMzM4XSwgWzE2NjcwNTEwNTYuNDc5OTA1NCwgMzksIDAuMDAxOTgwNTQ4MjU4ODcwODRdLCBbMTY2NzA1MTA2MC41Nzg3Njc1LCA0MCwgMC4wMDE0NzI1MTkxMjg1ODMzNzE2XSwgWzE2NjcwNTEwNjQuNjAxODAzLCA0MSwgMC4wMDIxNzQ0MTY1NTY5NTQzODRdLCBbMTY2NzA1MTA2OC41NzgzNDcsIDQyLCAwLjAwMTkwODk3Nzk4MTY1Njc4OThdLCBbMTY2NzA1MTA3Mi41NzgzODA4LCA0MywgMC4wMDQwMDY2MjE4OTM0OTUzMjFdLCBbMTY2NzA1MTA3Ni41MDY4Mjc2LCA0NCwgMC4wMDE1NTIyMDUwNjcxMjc5NDNdLCBbMTY2NzA1MTA4MC40Njc3NTY1LCA0NSwgMC4wMDQ0NTEwMzM2NTkyNzkzNDY1XSwgWzE2NjcwNTEwODQuMzkzNTI0LCA0NiwgMC4wMDYzMDk4MjY4NTgzNDE2OTRdLCBbMTY2NzA1MTA4OC4zNzc3NzY2LCA0NywgMC4wMDUzNjQ5MzI1ODU1MDc2MzFdLCBbMTY2NzA1MTA5My41NDYxODk1LCA0OCwgMC4wMDkxNjc1ODgzMTU5MDQxNF0sIFsxNjY3MDUxMDk3LjY1MTYzMjMsIDQ5LCAwLjAwMzQ5MzM3OTMzNTg1MDQ3NzJdLCBbMTY2NzA1MTEwMS42MTMwMDk1LCA1MCwgMC4wMDI1MDMzMzUwMTAyNjAzNDM2XSwgWzE2NjcwNTExMDUuNTY4OTc5NywgNTEsIDAuMDM2MDE5NDk2NjE5NzAxMzg1XSwgWzE2NjcwNTExMDkuNzA0MDExNywgNTIsIDAuMDAzMDczODgzNzA4NTY2NDI3Ml0sIFsxNjY3MDUxMTEzLjY2MzU4MTEsIDUzLCAwLjAwMTczMjc1ODI0NjM2MjIwOTNdLCBbMTY2NzA1MTExNy42MjQwMjgyLCA1NCwgMC4wMTAwMzEwMjQ5MjU0MTA3NDhdLCBbMTY2NzA1MTEyMS42MTAzNjYsIDU1LCAwLjAwMjY1MzY0NDQyMDIwNjU0N10sIFsxNjY3MDUxMTI1LjY1NTI5MjMsIDU2LCAwLjAwMTkyMzQ2MTY3NzUwNjU2Nl0sIFsxNjY3MDUxMTI5LjYzMzY2MSwgNTcsIDAuMDAyNTA3MTI3NTg4NjE0ODIxNF0sIFsxNjY3MDUxMTMzLjcxMTM4MjYsIDU4LCAwLjAwMTY4MjA1Nzc0Mzg5MjA3MzZdLCBbMTY2NzA1MTEzNy43NDE3MTIzLCA1OSwgMC4wMDMyNTAzMzU4MDg4NDMzNzQzXSwgWzE2NjcwNTExNDEuNzEwNDgyMSwgNjAsIDAuMDAxNTAyNjkwMDIxODc5OTcxXSwgWzE2NjcwNTExNDUuNjg5MzgwMiwgNjEsIDAuMDAyNTE3Mzg2MzM5NjA0ODU0Nl0sIFsxNjY3MDUxMTQ5LjYyMTE0ODYsIDYyLCAwLjAwMTY2NTE3NTc3NTk5NzM0MDddLCBbMTY2NzA1MTE1My41OTE4MzIyLCA2MywgMC4wMDIwODQ2OTAzNzg5Nzg4NDg1XSwgWzE2NjcwNTExNTcuNDc5ODA5NSwgNjQsIDAuMDA1MDMyMzI4ODg4NzczOTE4XSwgWzE2NjcwNTExNjEuMzU2ODAwMywgNjUsIDAuMDAzMjQ4Mzg5MzQ0NjYyNDI4XSwgWzE2NjcwNTExNjUuMzM4NDE2OCwgNjYsIDAuMDExMTE3NzE1Mzg4NTM2NDUzXSwgWzE2NjcwNTExNjkuNDczMjYzLCA2NywgMC4wMDM0MTg3MzMzNjU4MzM3NTkzXSwgWzE2NjcwNTExNzMuMzk3OTk3MSwgNjgsIDAuMDE2NDU3Nzc3NDcwMzUwMjY2XSwgWzE2NjcwNTExNzcuMzI4MjA0LCA2OSwgMC4wMDIwNjMyMjM2MjY0NjQ2MDUzXSwgWzE2NjcwNTExODEuMjY0MTExOCwgNzAsIDAuMDExNzc2NTY2NTA1NDMyMTI5XSwgWzE2NjcwNTExODUuMjIxNjUyMywgNzEsIDAuMDAzMTk1MTU5NjAyOTEwMjgwMl0sIFsxNjY3MDUxMTg5LjE4ODE4NDUsIDcyLCAwLjAwMzgwMDIzMTk2MzM5NjA3MjRdLCBbMTY2NzA1MTE5My4xMTU2NTIsIDczLCAwLjAwMjg4Nzg4MzY4OTI1NDUyMjNdLCBbMTY2NzA1MTE5Ny4wNDIxODAzLCA3NCwgMC4wMDIyOTY0NTgyMzEyODUyMTQ0XSwgWzE2NjcwNTEyMDEuMDI0MTEyNywgNzUsIDAuMDAxMzk3MTYxNTExNzA0MzI1N10sIFsxNjY3MDUxMjA1LjE2NDY3NDUsIDc2LCAwLjAwMTUyNjIxMTUwNDgyNDQ1OTZdLCBbMTY2NzA1MTIwOS4xMDM5MDQsIDc3LCAwLjAwODkzMzk2NTExNjczOTI3M10sIFsxNjY3MDUxMjEyLjk4Mjg4NjMsIDc4LCAwLjAwNTczMDgzMjkyNjkyODk5N10sIFsxNjY3MDUxMjE2LjkxNzc2NDQsIDc5LCAwLjAwMTg4NTc3NTgyNTk0MDA3MjVdLCBbMTY2NzA1MTIyMC44MTM1MDg3LCA4MCwgMC4wMDI3ODQwMDY5OTYwODAyNzk0XSwgWzE2NjcwNTEyMjQuNzY3MTU5MiwgODEsIDAuMDAyNzYyMTg5ODMzNDQ3MzM3XSwgWzE2NjcwNTEyMjguNzM4ODY1NCwgODIsIDAuMDA0ODA0NTEzODgyODQ1NjRdLCBbMTY2NzA1MTIzMi43MTMwMDg0LCA4MywgMC4wMDQ2NDE5OTU3NjUyNjg4MDNdLCBbMTY2NzA1MTIzNi43MDMzMDgzLCA4NCwgMC4wMDM2MTA2MDk1NjQ5MzAyMDA2XSwgWzE2NjcwNTEyNDAuNzE5NjgyNSwgODUsIDAuMDA3NDkxMzk5MDY4Mzg1MzYzXSwgWzE2NjcwNTEyNDQuODE5Nzc0NCwgODYsIDAuMDEwOTE5NTI5OTQ0NjU4MjhdLCBbMTY2NzA1MTI0OC44NTk0ODU2LCA4NywgMC4wMDY0MjQ5MTI3MTcxOTMzNjVdLCBbMTY2NzA1MTI1Mi44Mjg0OTU1LCA4OCwgMC4wMDE0MTg1NzMzMTYxODY2NjY1XSwgWzE2NjcwNTEyNTYuNzk5NjQxNCwgODksIDAuMDA1NzMxNTM3MDA2Nzk1NDA2XSwgWzE2NjcwNTEyNjAuODMxOTYxNiwgOTAsIDAuMDIzMjE2OTY4NDAyMjY2NTAyXSwgWzE2NjcwNTEyNjUuMjgxMjAxNCwgOTEsIDAuMDE3MzA2MjQ0MDAwNzkyNTAzXSwgWzE2NjcwNTEyNjkuOTc5MDc4MywgOTIsIDAuMDA3NzEzODU5OTAwODMyMTc2XSwgWzE2NjcwNTEyNzMuOTEzMzMzLCA5MywgMC4wMzMyNTE5NjcyODExMDMxMzRdLCBbMTY2NzA1MTI3Ny44MzEyMzU2LCA5NCwgMC4wMjg2MDk4MDEwODM4MDMxNzddLCBbMTY2NzA1MTI4Mi4wODEyODk1LCA5NSwgMC4wMDg0MTA1MjM2NDU1Nzk4MTVdLCBbMTY2NzA1MTI4Ni4wMzQ3NTc0LCA5NiwgMC4wMTM2MDA0ODUzOTkzNjU0MjVdLCBbMTY2NzA1MTI5MC4wMzU0Mjc2LCA5NywgMC4wMDUwNDMwNjY1NzIzOTc5NDddLCBbMTY2NzA1MTI5My45NDY3NDYzLCA5OCwgMC4wMTA5ODY4NzY2NzM5OTY0NDldLCBbMTY2NzA1MTI5Ny44NjUzODY3LCA5OSwgMC4wMDE2MDk5MTA1MTIzNDMwNDldXQ==", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=train%2Fyolov5s_results2&tag=train%2Fbox_loss": { "data": "W1sxNjY3MDUwODk4LjYxMDQ3NTMsIDAsIDAuMTE1MjgzMzk5ODIwMzI3NzZdLCBbMTY2NzA1MDkwMi43OTU1MTUsIDEsIDAuMTEyNDUwODA4Mjg2NjY2ODddLCBbMTY2NzA1MDkwNy4wMTY4ODM0LCAyLCAwLjEwODk0NTY2Nzc0MzY4Mjg2XSwgWzE2NjcwNTA5MTAuOTM1MzY5MywgMywgMC4xMDY2MDUzNTA5NzEyMjE5Ml0sIFsxNjY3MDUwOTE2LjE3MjIwNDUsIDQsIDAuMTA5MTc2NjUwNjQzMzQ4N10sIFsxNjY3MDUwOTE5Ljk2MTEzMDQsIDUsIDAuMTA5MzkyMTEzOTgzNjMxMTNdLCBbMTY2NzA1MDkyMy44MTEwMTE4LCA2LCAwLjEwODA5OTEwMjk3MzkzNzk5XSwgWzE2NjcwNTA5MjcuODE3MTg0NCwgNywgMC4xMDUzMjg0MTA4NjM4NzYzNF0sIFsxNjY3MDUwOTMxLjU2OTkwNzcsIDgsIDAuMTA2OTkxNzAwODI4MDc1NDFdLCBbMTY2NzA1MDkzNS4zNTM0OTc3LCA5LCAwLjEwNjMwOTkzNTQ1MDU1MzldLCBbMTY2NzA1MDkzOS4xOTY3ODE0LCAxMCwgMC4xMDQxMzk0MTc0MDk4OTY4NV0sIFsxNjY3MDUwOTQzLjM1Mzc5MywgMTEsIDAuMTA0MjYzNDA5OTcyMTkwODZdLCBbMTY2NzA1MDk0Ny41MzQxNzczLCAxMiwgMC4xMDQ0MzY5Nzg2OTc3NzY4XSwgWzE2NjcwNTA5NTEuNDIyOTYzLCAxMywgMC4xMDI0Mzc5MjgzMTg5NzczNl0sIFsxNjY3MDUwOTU1LjUyNjE0OCwgMTQsIDAuMTAzMTE2NDg5OTQ2ODQyMl0sIFsxNjY3MDUwOTU5LjU2ODczMTMsIDE1LCAwLjEwMTU5NDk5MTk4MTk4MzE4XSwgWzE2NjcwNTA5NjMuNjE0NzI1NiwgMTYsIDAuMTAyMTExMDU2NDQ3MDI5MTFdLCBbMTY2NzA1MDk2Ny41Njc1MzE4LCAxNywgMC4xMDA3ODY3NTI5OTg4Mjg4OV0sIFsxNjY3MDUwOTcxLjYzNzE4ODIsIDE4LCAwLjA5OTc0MDc2NTk4ODgyNjc1XSwgWzE2NjcwNTA5NzUuNTY4NTUsIDE5LCAwLjA5ODU5NzQ1OTQ5NTA2NzZdLCBbMTY2NzA1MDk3OS40ODA4MDIzLCAyMCwgMC4wOTc4NDcwODkxNzE0MDk2XSwgWzE2NjcwNTA5ODMuNDExMjgzNywgMjEsIDAuMDk3MjU5OTA4OTE0NTY2MDRdLCBbMTY2NzA1MDk4Ny41NTQzMDUsIDIyLCAwLjA5NjczNjMwNDQ2MTk1NjAyXSwgWzE2NjcwNTA5OTEuNjM5ODExNSwgMjMsIDAuMDk1NTExMjIwMzk1NTY1MDNdLCBbMTY2NzA1MDk5NS43MzQ0NTk5LCAyNCwgMC4wOTY3NTY3NDE0MDQ1MzMzOV0sIFsxNjY3MDUwOTk5LjY1OTE5ODUsIDI1LCAwLjA5NTI5OTczNTY2NTMyMTM1XSwgWzE2NjcwNTEwMDMuNTY1ODIzMywgMjYsIDAuMDk1NDgxMTU3MzAyODU2NDVdLCBbMTY2NzA1MTAwNy40ODQxODE0LCAyNywgMC4wOTU1NTU2MDM1MDQxODA5MV0sIFsxNjY3MDUxMDExLjQyNzMyNTcsIDI4LCAwLjA5NDE4ODA0OTQzNTYxNTU0XSwgWzE2NjcwNTEwMTUuMzAyOTMyNywgMjksIDAuMDkzNzIwNDU4NDQ3OTMzMl0sIFsxNjY3MDUxMDE5LjQ5Njg2MSwgMzAsIDAuMDk0MjEwOTgyMzIyNjkyODddLCBbMTY2NzA1MTAyMy43NjYwODIsIDMxLCAwLjA5NDU2ODEwMzU1MTg2NDYyXSwgWzE2NjcwNTEwMjguMDkyMDY4LCAzMiwgMC4wOTQ5ODI5NzQyMzEyNDMxM10sIFsxNjY3MDUxMDMyLjA1NDQwNywgMzMsIDAuMDk0MzkzODc5MTc1MTg2MTZdLCBbMTY2NzA1MTAzNi4wNTUzNzU2LCAzNCwgMC4wOTI4OTk1MzExMjYwMjIzNF0sIFsxNjY3MDUxMDQwLjIzNjE2NDgsIDM1LCAwLjA5NDQ1NDA3OTg2NjQwOTNdLCBbMTY2NzA1MTA0NC4xMTU0NjEzLCAzNiwgMC4wOTIxOTIxNTgxMDI5ODkyXSwgWzE2NjcwNTEwNDguMzQ1MTIyMywgMzcsIDAuMDkzMzUyMTMxNTQ1NTQzNjddLCBbMTY2NzA1MTA1Mi4yODgzODMsIDM4LCAwLjA5MzI0NDg5NTMzOTAxMjE1XSwgWzE2NjcwNTEwNTYuNDc5Mjg3NCwgMzksIDAuMDkyMTIxNTQxNTAwMDkxNTVdLCBbMTY2NzA1MTA2MC41NzgxMzg4LCA0MCwgMC4wOTQ0MTM5NjU5NDA0NzU0Nl0sIFsxNjY3MDUxMDY0LjYwMTAzNTYsIDQxLCAwLjA5MjA3ODQwMjYzODQzNTM2XSwgWzE2NjcwNTEwNjguNTc3NjI2NSwgNDIsIDAuMDkyNzUxNzMzOTU4NzIxMTZdLCBbMTY2NzA1MTA3Mi41Nzc3ODk4LCA0MywgMC4wOTI0MTY0NzI3MzMwMjA3OF0sIFsxNjY3MDUxMDc2LjUwNjIxNTYsIDQ0LCAwLjA5MTQ5ODI3MDYzMDgzNjQ5XSwgWzE2NjcwNTEwODAuNDY3MTYyNiwgNDUsIDAuMDkyMjIxNzc0MTYwODYxOTddLCBbMTY2NzA1MTA4NC4zOTI4MTQ5LCA0NiwgMC4wOTIyODk0MjU0MzI2ODIwNF0sIFsxNjY3MDUxMDg4LjM3Njk1MzgsIDQ3LCAwLjA5MTE5NTQzNDMzMTg5MzkyXSwgWzE2NjcwNTEwOTMuNTQ1NDcxLCA0OCwgMC4wOTE1ODI1MjE3OTYyMjY1XSwgWzE2NjcwNTEwOTcuNjUwOTk4NCwgNDksIDAuMDkyMDExNzA1MDQwOTMxN10sIFsxNjY3MDUxMTAxLjYxMjMyNiwgNTAsIDAuMDkwNjc5ODM5MjUzNDI1Nl0sIFsxNjY3MDUxMTA1LjU2ODMyOTYsIDUxLCAwLjA5MTU0NDgzNjc1OTU2NzI2XSwgWzE2NjcwNTExMDkuNzAzMzU3NSwgNTIsIDAuMDg5ODYyMDQxMTc1MzY1NDVdLCBbMTY2NzA1MTExMy42NjMwMzksIDUzLCAwLjA5MDgzMzg1MDIwNDk0NDYxXSwgWzE2NjcwNTExMTcuNjIzMzY4NywgNTQsIDAuMDkxNDU2MTc0ODUwNDYzODddLCBbMTY2NzA1MTEyMS42MDk3MjUsIDU1LCAwLjA4OTcyMTc1NDE5MzMwNTk3XSwgWzE2NjcwNTExMjUuNjU0NjU2LCA1NiwgMC4wOTI3NzAzOTAyMTI1MzU4Nl0sIFsxNjY3MDUxMTI5LjYzMjk3MjUsIDU3LCAwLjA5MjA3NjI3MTc3MjM4NDY0XSwgWzE2NjcwNTExMzMuNzEwNzU2LCA1OCwgMC4wOTAyMDU5MzAxNzMzOTcwNl0sIFsxNjY3MDUxMTM3Ljc0MTA4MjcsIDU5LCAwLjA5MDg4MTUyNjQ3MDE4NDMzXSwgWzE2NjcwNTExNDEuNzA5ODIyLCA2MCwgMC4wOTExNTMyODYzOTc0NTcxMl0sIFsxNjY3MDUxMTQ1LjY4ODc5NiwgNjEsIDAuMDkwMTA1MzYyMjM2NDk5NzldLCBbMTY2NzA1MTE0OS42MjA1MTk2LCA2MiwgMC4wODk0NTE1MjE2MzUwNTU1NF0sIFsxNjY3MDUxMTUzLjU5MTE5NjgsIDYzLCAwLjA5MDk3ODUyNTU3ODk3NTY4XSwgWzE2NjcwNTExNTcuNDc5MTg3LCA2NCwgMC4wOTAxNjQ1ODY5MDE2NjQ3M10sIFsxNjY3MDUxMTYxLjM1NjEzMjMsIDY1LCAwLjA5MDE2Mjc5MTMxMTc0MDg4XSwgWzE2NjcwNTExNjUuMzM3ODA3MiwgNjYsIDAuMDkwODc1NTUxMTA0NTQ1Nl0sIFsxNjY3MDUxMTY5LjQ3MjYzODYsIDY3LCAwLjA4OTIwOTYzMTA4NTM5NTgxXSwgWzE2NjcwNTExNzMuMzk3MzU3MiwgNjgsIDAuMDg5MjM1MjkwODg0OTcxNjJdLCBbMTY2NzA1MTE3Ny4zMjc1NTAyLCA2OSwgMC4wODk1NDAzODQ3MDk4MzUwNV0sIFsxNjY3MDUxMTgxLjI2MzQ5OTMsIDcwLCAwLjA4OTcyNDQzNjQwMjMyMDg2XSwgWzE2NjcwNTExODUuMjIwOTEyNSwgNzEsIDAuMDkwNjEwOTUxMTg1MjI2NDRdLCBbMTY2NzA1MTE4OS4xODc1Njk0LCA3MiwgMC4wODk3NjY0OTQ5Mjk3OTA1XSwgWzE2NjcwNTExOTMuMTE0OTg0NSwgNzMsIDAuMDg5NzI2NzMxMTgxMTQ0NzFdLCBbMTY2NzA1MTE5Ny4wNDE1MTEsIDc0LCAwLjA4ODQ4NDk4NzYxNjUzOV0sIFsxNjY3MDUxMjAxLjAyMzQ3ODUsIDc1LCAwLjA4ODg3ODU0MjE4NDgyOTcxXSwgWzE2NjcwNTEyMDUuMTY0MDAxLCA3NiwgMC4wODk2OTIwMTg5MjYxNDM2NV0sIFsxNjY3MDUxMjA5LjEwMzIwNzYsIDc3LCAwLjA4OTUzODQ4NDgxMTc4Mjg0XSwgWzE2NjcwNTEyMTIuOTgyMjgxMiwgNzgsIDAuMDg4MjU0NzU3MjI1NTEzNDZdLCBbMTY2NzA1MTIxNi45MTcxMywgNzksIDAuMDg4MTY3NjU5OTM4MzM1NDJdLCBbMTY2NzA1MTIyMC44MTI5MzQ5LCA4MCwgMC4wODg2NzIzMTc1NjQ0ODc0Nl0sIFsxNjY3MDUxMjI0Ljc2NjUzNTgsIDgxLCAwLjA4NzI4NjM5NzgxNDc1MDY3XSwgWzE2NjcwNTEyMjguNzM4MjUzNCwgODIsIDAuMDg5NjY0MDM0NTQ1NDIxNl0sIFsxNjY3MDUxMjMyLjcxMjMyMTUsIDgzLCAwLjA4ODM3MzA1MDA5MzY1MDgyXSwgWzE2NjcwNTEyMzYuNzAyNjIwNywgODQsIDAuMDg4NDQxNzIyMDk1MDEyNjZdLCBbMTY2NzA1MTI0MC43MTkwMTkyLCA4NSwgMC4wODkwODUzODUyMDMzNjE1MV0sIFsxNjY3MDUxMjQ0LjgxOTA1NjMsIDg2LCAwLjA4NjQxMTc4MTYwOTA1ODM4XSwgWzE2NjcwNTEyNDguODU4ODc0NiwgODcsIDAuMDg4MDEyOTkzMzM1NzIzODhdLCBbMTY2NzA1MTI1Mi44Mjc5MTY5LCA4OCwgMC4wODc3NzE1Mjc0NjkxNTgxN10sIFsxNjY3MDUxMjU2Ljc5ODk2NDcsIDg5LCAwLjA4ODMyOTU2MTA1NDcwNjU3XSwgWzE2NjcwNTEyNjAuODMxMzM2NSwgOTAsIDAuMDg2OTgxOTgxOTkyNzIxNTZdLCBbMTY2NzA1MTI2NS4yODA2MTE4LCA5MSwgMC4wODY1ODU2NDA5MDcyODc2XSwgWzE2NjcwNTEyNjkuOTc4NDc5MSwgOTIsIDAuMDg2MTgyMjQ0MTIyMDI4MzVdLCBbMTY2NzA1MTI3My45MTI3Njg2LCA5MywgMC4wODYzNDcwMTM3MTE5MjkzMl0sIFsxNjY3MDUxMjc3LjgzMDYyMjcsIDk0LCAwLjA4NjYzMDIxNzczMDk5ODk5XSwgWzE2NjcwNTEyODIuMDgwNjQ0OCwgOTUsIDAuMDg2ODEyMTAxMzA0NTMxMV0sIFsxNjY3MDUxMjg2LjAzNDE0ODcsIDk2LCAwLjA4NzQ2NjQ0ODU0NTQ1NTkzXSwgWzE2NjcwNTEyOTAuMDM0ODU4MiwgOTcsIDAuMDg1NjA4NzM1NjgwNTgwMTRdLCBbMTY2NzA1MTI5My45NDYxMjE3LCA5OCwgMC4wODYwMzIwNzAyMTk1MTY3NV0sIFsxNjY3MDUxMjk3Ljg2NDcyMDgsIDk5LCAwLjA4NTUzMzg2NDc5NjE2MTY1XV0=", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=train%2Fyolov5s_results2&tag=metrics%2FmAP_0.5%3A0.95": { "data": "W1sxNjY3MDUwODk4LjYxMTE3MzQsIDAsIDAuMF0sIFsxNjY3MDUwOTAyLjc5NTkzMjUsIDEsIDguMDU2MDczODUyNDU4MjEyZS0wN10sIFsxNjY3MDUwOTA3LjAxNzQ3NzMsIDIsIDcuODQwNDY2NzY0NzE5MTY3ZS0wN10sIFsxNjY3MDUwOTEwLjkzNjEwMSwgMywgNi4wODA4MDk3MjU5NzIzNThlLTA2XSwgWzE2NjcwNTA5MTYuMTcyOTYsIDQsIDEuNjY5ODQ0MjA5NTczMDU3ZS0wNl0sIFsxNjY3MDUwOTE5Ljk2MTc4NCwgNSwgMS44NDE3MzI0NTU0MzIwNjU4ZS0wNl0sIFsxNjY3MDUwOTIzLjgxMTY3MTcsIDYsIDQuODQ4NDg3NjA2MDY4Mzc1ZS0wNl0sIFsxNjY3MDUwOTI3LjgxNzgzMzcsIDcsIDguNDc5NTY2NTMxNjA1MDg3ZS0wNl0sIFsxNjY3MDUwOTMxLjU3MDQ2NzUsIDgsIDAuMF0sIFsxNjY3MDUwOTM1LjM1NDE1OTQsIDksIDAuMF0sIFsxNjY3MDUwOTM5LjE5NzQwMDYsIDEwLCAxLjA5NzkzMzkwOTQ3NzQzMzJlLTA1XSwgWzE2NjcwNTA5NDMuMzU0NDI1MiwgMTEsIDEuMTAxMTMzNjkzNzM3MjEwN2UtMDVdLCBbMTY2NzA1MDk0Ny41MzQ4NDE1LCAxMiwgMS4xOTExNjcyMTE4MDAzNDhlLTA1XSwgWzE2NjcwNTA5NTEuNDIzNTc4LCAxMywgMi45NTc2NjA5NDQ5NTc3NTE4ZS0wNV0sIFsxNjY3MDUwOTU1LjUyNjc3ODIsIDE0LCAxLjUzNTc2MzQ3NjU2NzgwODVlLTA1XSwgWzE2NjcwNTA5NTkuNTY5MzUxLCAxNSwgNS4wNzAyNDM3ODc0ODYxMDZlLTA1XSwgWzE2NjcwNTA5NjMuNjE1MzQxNCwgMTYsIDMuOTk2MzQwMDkyMjcxNTY2NGUtMDVdLCBbMTY2NzA1MDk2Ny41NjgxNzQ4LCAxNywgOC42MzU1ODg4OTI1MDI3MWUtMDVdLCBbMTY2NzA1MDk3MS42Mzc4MjUzLCAxOCwgNi41MDUwNDE1Mjg3MjU5OTdlLTA1XSwgWzE2NjcwNTA5NzUuNTY5MjMwMywgMTksIDQuNzgyMjUyNjUzOTY3NTg5ZS0wNV0sIFsxNjY3MDUwOTc5LjQ4MTM5LCAyMCwgNS40ODQ0MDczMDE5OTIxNzhlLTA1XSwgWzE2NjcwNTA5ODMuNDEyMTAxMywgMjEsIDAuMDAwMTQ5NjA5OTQzMDM2OTIxMzJdLCBbMTY2NzA1MDk4Ny41NTQ5NCwgMjIsIDYuOTI0MjUzMTAyNjI0Nzg5ZS0wNV0sIFsxNjY3MDUwOTkxLjY0MDQyNywgMjMsIDAuMDAwMTkzMDQ2Nzg0MjYxMjQxNTZdLCBbMTY2NzA1MDk5NS43MzYyMzk3LCAyNCwgNy4wNjAwNDc5Mzc1NTcxMDFlLTA1XSwgWzE2NjcwNTA5OTkuNjU5ODM0MSwgMjUsIDAuMDAwMTkyNDY3NjAzNDgzMjM3MzNdLCBbMTY2NzA1MTAwMy41NjY0MDAzLCAyNiwgMC4wMDAxNjQ2ODI0Mzg0ODA2Njc3N10sIFsxNjY3MDUxMDA3LjQ4NDgxOTcsIDI3LCA5LjQ5NTgyNTM2MTIyNzYxN2UtMDVdLCBbMTY2NzA1MTAxMS40MjgwMzE3LCAyOCwgMC4wMDAxMzc0MjIwODgzMDA4MDkyNl0sIFsxNjY3MDUxMDE1LjMwMzYzNTQsIDI5LCAwLjAwMDI1MTcxNTg1NzMwMjc3XSwgWzE2NjcwNTEwMTkuNDk3NDMzLCAzMCwgMC4wMDAyNDM0ODM2Nzg3ODcwMTUzOF0sIFsxNjY3MDUxMDIzLjc2NjY4NzYsIDMxLCAwLjAwMDM3MzkwOTUxMTgzNjI0NTY2XSwgWzE2NjcwNTEwMjguMDkyNjc3OCwgMzIsIDAuMDAwMTY0NTMyMDI5ODg0ODY3MzddLCBbMTY2NzA1MTAzMi4wNTUwNzE4LCAzMywgMC4wMDAyMTg1Njc3Mjk0NjE5MzgxNF0sIFsxNjY3MDUxMDM2LjA1NjA3NiwgMzQsIDAuMDAwNDU3MDg0NTYzMDk1MTIyNl0sIFsxNjY3MDUxMDQwLjIzNjgyNDUsIDM1LCAwLjAwMDI1MjAwNzUwNjc4Nzc3Njk1XSwgWzE2NjcwNTEwNDQuMTE2MDcyNCwgMzYsIDAuMDAwNjg4MDU5NjYyOTM0MzkyN10sIFsxNjY3MDUxMDQ4LjM0NTc3MywgMzcsIDAuMDAwNTQwODY2MDUwODY5MjI2NV0sIFsxNjY3MDUxMDUyLjI4OTIyOTksIDM4LCAwLjAwMTgzNjQ3MTQ5MjQyNDYwNzNdLCBbMTY2NzA1MTA1Ni40Nzk5MjI4LCAzOSwgMC4wMDA0MTE4MTA1NTcxMjUxMzYyNl0sIFsxNjY3MDUxMDYwLjU3ODc4NDcsIDQwLCAwLjAwMDIzNTc2Njg4NTQ1MjkwMzhdLCBbMTY2NzA1MTA2NC42MDE4Mzk1LCA0MSwgMC4wMDAzNTI3Nzg2NDY2MjkzMDM3XSwgWzE2NjcwNTEwNjguNTc4MzY1OCwgNDIsIDAuMDAwNDE1MTM5NTQwNTY0MjY4ODNdLCBbMTY2NzA1MTA3Mi41NzgzOTkyLCA0MywgMC4wMDA4Mjc2NTgxMDY1NzI5MjZdLCBbMTY2NzA1MTA3Ni41MDY4NDUyLCA0NCwgMC4wMDAzMzQwMDM1MzI3NzEwMjExM10sIFsxNjY3MDUxMDgwLjQ2Nzc3NDQsIDQ1LCAwLjAwMDkyOTczOTk2NjUyMjkwMjNdLCBbMTY2NzA1MTA4NC4zOTM1NDE2LCA0NiwgMC4wMDEyNjkxMjM2MzMzOTIxNTUyXSwgWzE2NjcwNTEwODguMzc3Nzk0NywgNDcsIDAuMDAxMDIyMzUyOTUzNDQxNDQxXSwgWzE2NjcwNTEwOTMuNTQ2MjA3NywgNDgsIDAuMDAxMTU3ODc3NTAxMTAwMzAxN10sIFsxNjY3MDUxMDk3LjY1MTY2MDQsIDQ5LCAwLjAwMDcwMzIxNzM0NTI4OTg4Nl0sIFsxNjY3MDUxMTAxLjYxMzAyODMsIDUwLCAwLjAwMDQ3NzQ4NzM2Njg3OTM1ODldLCBbMTY2NzA1MTEwNS41Njg5OTcsIDUxLCAwLjAwOTU3MzAxOTEwOTY2NjM0OF0sIFsxNjY3MDUxMTA5LjcwNDAyODYsIDUyLCAwLjAwMDc1NDg4NjI0ODYxNDYzOV0sIFsxNjY3MDUxMTEzLjY2MzYyNjIsIDUzLCAwLjAwMDUwNzQwODc1MzAzNzQ1MjddLCBbMTY2NzA1MTExNy42MjQwNjA2LCA1NCwgMC4wMDM2NTEwODA0MjAyNDA3Nl0sIFsxNjY3MDUxMTIxLjYxMDM4NTQsIDU1LCAwLjAwMDQ4MTcwNzkxNzA2MDcwMzA0XSwgWzE2NjcwNTExMjUuNjU1MzEwNiwgNTYsIDAuMDAwMzcwNDI1NzgzMzMwNTc0NjNdLCBbMTY2NzA1MTEyOS42MzM2ODEsIDU3LCAwLjAwMDUzODg5NDQ5OTE4NjQyNjRdLCBbMTY2NzA1MTEzMy43MTE0MDA3LCA1OCwgMC4wMDA0NzUyOTUyOTU0NzMxODgxNl0sIFsxNjY3MDUxMTM3Ljc0MTcyOTUsIDU5LCAwLjAwMDU5NTkxODk3Mjk3NjUwNThdLCBbMTY2NzA1MTE0MS43MTA1MDc5LCA2MCwgMC4wMDAzNzg4Mzk5MDQ0NDI0Mjk1NF0sIFsxNjY3MDUxMTQ1LjY4OTM5NzgsIDYxLCAwLjAwMDU2NTkxNTA3NzQ1OTA2NzFdLCBbMTY2NzA1MTE0OS42MjExNjU1LCA2MiwgMC4wMDA0MTg0NTEwNjE3MDUxMjczNl0sIFsxNjY3MDUxMTUzLjU5MTg1MDMsIDYzLCAwLjAwMDU3ODMzMTgxOTI2OTgwNjFdLCBbMTY2NzA1MTE1Ny40Nzk4MjcyLCA2NCwgMC4wMDA5MTc0NjM5NzA4MzYyNTJdLCBbMTY2NzA1MTE2MS4zNTY4MTgyLCA2NSwgMC4wMDA3OTc5ODMyNTg5NjI2MzEyXSwgWzE2NjcwNTExNjUuMzM4NDM1MiwgNjYsIDAuMDAyOTIwMzgwNzkzNTExODY3NV0sIFsxNjY3MDUxMTY5LjQ3MzI4MDcsIDY3LCAwLjAwMDk2MzQyMDM3NDMxODk1NzNdLCBbMTY2NzA1MTE3My4zOTgwMTUsIDY4LCAwLjAwMzk5NTkxODY2ODgwNjU1M10sIFsxNjY3MDUxMTc3LjMyODIyMjgsIDY5LCAwLjAwMDUwMTgyMDAwMjY4MjUwN10sIFsxNjY3MDUxMTgxLjI2NDEyOSwgNzAsIDAuMDAxNjA5NzUyMTg3NTA1MzY0NF0sIFsxNjY3MDUxMTg1LjIyMTY4LCA3MSwgMC4wMDA4NjQ0MjcyNDU2ODc2OTM0XSwgWzE2NjcwNTExODkuMTg4MjAyLCA3MiwgMC4wMDA3NDA0NjY3NTU4MTQ4NTAzXSwgWzE2NjcwNTExOTMuMTE1Njc2NiwgNzMsIDAuMDAwNzM4Mjk2NjU3ODAwNjc0NF0sIFsxNjY3MDUxMTk3LjA0MjE5ODQsIDc0LCAwLjAwMDU0MDEzMzEwMDAwMzAwNDFdLCBbMTY2NzA1MTIwMS4wMjQxMjk5LCA3NSwgMC4wMDA0MTI3NTMyMDEwODk3OTk0XSwgWzE2NjcwNTEyMDUuMTY0Njk0OCwgNzYsIDAuMDAwNDIwNDcyMjA2MzE1MDI1N10sIFsxNjY3MDUxMjA5LjEwMzkyMTIsIDc3LCAwLjAwMjY1NTk5NzYzOTUyMTk1NjRdLCBbMTY2NzA1MTIxMi45ODI5MDM1LCA3OCwgMC4wMDE4NDU2NjQ4MTAzODkyODAzXSwgWzE2NjcwNTEyMTYuOTE3NzgxNiwgNzksIDAuMDAwNTAyNTEzMTk3NzE2MzI1NV0sIFsxNjY3MDUxMjIwLjgxMzUyNiwgODAsIDAuMDAwNjk3ODA1MzcxNjAxMTM0NV0sIFsxNjY3MDUxMjI0Ljc2NzE3NjIsIDgxLCAwLjAwMDU1MDUyMTY1NDA3Njg3NDNdLCBbMTY2NzA1MTIyOC43Mzg4ODIzLCA4MiwgMC4wMDEwNjUxNjI4MjUzOTgxNDddLCBbMTY2NzA1MTIzMi43MTMwMjU4LCA4MywgMC4wMDA5NzUxMzU2NTU2MDgwMjgyXSwgWzE2NjcwNTEyMzYuNzAzMzI2NywgODQsIDAuMDAwOTU2ODYwNDI5MTQxNjcwNV0sIFsxNjY3MDUxMjQwLjcxOTcwMDgsIDg1LCAwLjAwMTY1MzU0NTY1MjUxNjE4NjJdLCBbMTY2NzA1MTI0NC44MTk3OTE2LCA4NiwgMC4wMDIyMjQyMDcxNTcyNjkxMl0sIFsxNjY3MDUxMjQ4Ljg1OTUwMywgODcsIDAuMDAxNjk1NTM4NTIxNzQ0MzEwOV0sIFsxNjY3MDUxMjUyLjgyODUxMywgODgsIDAuMDAwNDEwNDUwOTcxNjg1MzQ5OTRdLCBbMTY2NzA1MTI1Ni43OTk2NzAyLCA4OSwgMC4wMDEzMzA0NTk0OTA0MTg0MzQxXSwgWzE2NjcwNTEyNjAuODMxOTc5MywgOTAsIDAuMDAzOTcxMDcwMDUxMTkzMjM3XSwgWzE2NjcwNTEyNjUuMjgxMjI4LCA5MSwgMC4wMDM2MzQwMzU4MjAxNDE0MzQ3XSwgWzE2NjcwNTEyNjkuOTc5MDk1NSwgOTIsIDAuMDAyMDc4MzgyNzY0MDExNjIxNV0sIFsxNjY3MDUxMjczLjkxMzM1MjUsIDkzLCAwLjAwNzM0ODMwMDg4OTEzNDQwN10sIFsxNjY3MDUxMjc3LjgzMTI1MjgsIDk0LCAwLjAwNDU4MDk5NTUzMzYxNTM1MV0sIFsxNjY3MDUxMjgyLjA4MTMwNzIsIDk1LCAwLjAwMTgwNTU1MTU4Mjk0NzM3MzRdLCBbMTY2NzA1MTI4Ni4wMzQ3NzQzLCA5NiwgMC4wMDI0NjM0Njk1MTQ2MjMyODQzXSwgWzE2NjcwNTEyOTAuMDM1NDQ0MywgOTcsIDAuMDAxMjM0MDU5OTIwNTM0NDkxNV0sIFsxNjY3MDUxMjkzLjk0Njc2MywgOTgsIDAuMDAxODI3MDQ0OTk0NTcwMzE0OV0sIFsxNjY3MDUxMjk3Ljg2NTQwNzIsIDk5LCAwLjAwMDQ4ODI2MTAyMjgzNzgzMjU3XV0=", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=train%2Fyolov5s_results2&tag=metrics%2Frecall": { "data": "W1sxNjY3MDUwODk4LjYxMTEzNiwgMCwgMC4wXSwgWzE2NjcwNTA5MDIuNzk1ODgyNSwgMSwgMC4wMDQyMzcyODgxNDM0ODU3ODQ1XSwgWzE2NjcwNTA5MDcuMDE3NDQyLCAyLCAwLjAwNDIzNzI4ODE0MzQ4NTc4NDVdLCBbMTY2NzA1MDkxMC45MzYwNTk1LCAzLCAwLjAzMTIwMTg0ODc2MDI0NzIzXSwgWzE2NjcwNTA5MTYuMTcyOTIxNywgNCwgMC4wMDQyMzcyODgxNDM0ODU3ODQ1XSwgWzE2NjcwNTA5MTkuOTYxNzQzOCwgNSwgMC4wMDQyMzcyODgxNDM0ODU3ODQ1XSwgWzE2NjcwNTA5MjMuODExNjE4MywgNiwgMC4wMjY5NjQ1NjAxNTExMDAxNl0sIFsxNjY3MDUwOTI3LjgxNzc5ODEsIDcsIDAuMDI2OTY0NTYwMTUxMTAwMTZdLCBbMTY2NzA1MDkzMS41NzA0MzA1LCA4LCAwLjBdLCBbMTY2NzA1MDkzNS4zNTQxMjMsIDksIDAuMF0sIFsxNjY3MDUwOTM5LjE5NzM2MzYsIDEwLCAwLjAyNjk2NDU2MDE1MTEwMDE2XSwgWzE2NjcwNTA5NDMuMzU0Mzg1MSwgMTEsIDAuMDMxMjAxODQ4NzYwMjQ3MjNdLCBbMTY2NzA1MDk0Ny41MzQ4MDUsIDEyLCAwLjAzNTQzOTEzNzM2OTM5NDNdLCBbMTY2NzA1MDk1MS40MjM1NDE4LCAxMywgMC4wOTkzODM2NjcxMTEzOTY3OV0sIFsxNjY3MDUwOTU1LjUyNjc0MDYsIDE0LCAwLjAzNTQzOTEzNzM2OTM5NDNdLCBbMTY2NzA1MDk1OS41NjkzMTMsIDE1LCAwLjA0MzkxMzcxNDU4NzY4ODQ0Nl0sIFsxNjY3MDUwOTYzLjYxNTMwMSwgMTYsIDAuMDcwODc4Mjc0NzM4Nzg4Nl0sIFsxNjY3MDUwOTY3LjU2ODEzNzIsIDE3LCAwLjA5Nzg0MjgzNDg4OTg4ODc2XSwgWzE2NjcwNTA5NzEuNjM3Nzg5MiwgMTgsIDAuMTEwNTU0NzAyNTc5OTc1MTNdLCBbMTY2NzA1MDk3NS41NjkxOTIyLCAxOSwgMC4wNjkzMzc0NDI1MTcyODA1OF0sIFsxNjY3MDUwOTc5LjQ4MTM1NDUsIDIwLCAwLjA3NzgxMjAxNjAxMDI4NDQyXSwgWzE2NjcwNTA5ODMuNDEyMDQzOCwgMjEsIDAuMDg2Mjg2NTk2OTUzODY4ODddLCBbMTY2NzA1MDk4Ny41NTQ5MDM3LCAyMiwgMC4xNDAyMTU3MDk4MDU0ODg2XSwgWzE2NjcwNTA5OTEuNjQwMzkxMywgMjMsIDAuMTY1ODQ4NTUzMTgwNjk0NThdLCBbMTY2NzA1MDk5NS43MzYyMDM0LCAyNCwgMC4wODIwNDkzMTAyMDczNjY5NF0sIFsxNjY3MDUwOTk5LjY1OTc5MiwgMjUsIDAuMTY4NzIxMTA5NjI4Njc3MzddLCBbMTY2NzA1MTAwMy41NjYzNjUsIDI2LCAwLjE2Mjk0Mjk5MDY2MDY2NzQyXSwgWzE2NjcwNTEwMDcuNDg0NzgxNSwgMjcsIDAuMTAzMjM1NzQzOTM5ODc2NTZdLCBbMTY2NzA1MTAxMS40Mjc5OTE2LCAyOCwgMC4xNDI5MTIxNzkyMzE2NDM2OF0sIFsxNjY3MDUxMDE1LjMwMzU1NTMsIDI5LCAwLjE4NDEyOTQzMTg0Mzc1NzYzXSwgWzE2NjcwNTEwMTkuNDk3Mzk3NCwgMzAsIDAuMjU2NTQ4NTIzOTAyODkzMDddLCBbMTY2NzA1MTAyMy43NjY2NSwgMzEsIDAuMTU1NjI0MDMyMDIwNTY4ODVdLCBbMTY2NzA1MTAyOC4wOTI2NDA5LCAzMiwgMC4xNzQxMTQwMTg2Nzg2NjUxNl0sIFsxNjY3MDUxMDMyLjA1NTAzMzcsIDMzLCAwLjIyMzgwNTg1OTY4NDk0NDE1XSwgWzE2NjcwNTEwMzYuMDU2MDMzOCwgMzQsIDAuMTkxMDYzMTgwNTY1ODM0MDVdLCBbMTY2NzA1MTA0MC4yMzY3ODYxLCAzNSwgMC4yMTUzMzEyODYxOTE5NDAzXSwgWzE2NjcwNTEwNDQuMTE2MDM2NCwgMzYsIDAuMjQyMjk1ODQ2MzQzMDQwNDddLCBbMTY2NzA1MTA0OC4zNDU3MzQ4LCAzNywgMC4yMDEwNzg1Nzg4Mjk3NjUzMl0sIFsxNjY3MDUxMDUyLjI4OTE3MSwgMzgsIDAuMjQyMjk1ODQ2MzQzMDQwNDddLCBbMTY2NzA1MTA1Ni40Nzk4ODYsIDM5LCAwLjIwMzk4NDE1NjI1MDk1MzY3XSwgWzE2NjcwNTEwNjAuNTc4NzQ2NiwgNDAsIDAuMjAzOTg0MTU2MjUwOTUzNjddLCBbMTY2NzA1MTA2NC42MDE3Nzg3LCA0MSwgMC4yNDIyOTU4NDYzNDMwNDA0N10sIFsxNjY3MDUxMDY4LjU3ODMyNiwgNDIsIDAuMjMwOTQ4NzE2NDAyMDUzODNdLCBbMTY2NzA1MTA3Mi41NzgzNjA2LCA0MywgMC4yNDA5NjQxMTQ2NjU5ODUxXSwgWzE2NjcwNTEwNzYuNTA2ODA4MywgNDQsIDAuMjEyNjY3ODM3NzM4OTkwNzhdLCBbMTY2NzA1MTA4MC40Njc3MzI3LCA0NSwgMC4yMTUzNjQyOTIyNjM5ODQ2OF0sIFsxNjY3MDUxMDg0LjM5MzUwNDEsIDQ2LCAwLjIyODI1MjI2MTg3NzA1OTk0XSwgWzE2NjcwNTEwODguMzc3NzU1MiwgNDcsIDAuMjc2NDAzMjQ4MzEwMDg5MV0sIFsxNjY3MDUxMDkzLjU0NjE2OTUsIDQ4LCAwLjIxMTEyNzAxMjk2ODA2MzM1XSwgWzE2NjcwNTEwOTcuNjUxNTgyLCA0OSwgMC4yNjUwNTYxMzMyNzAyNjM2N10sIFsxNjY3MDUxMTAxLjYxMjk4NiwgNTAsIDAuMjI1Mzc5NzA1NDI5MDc3MTVdLCBbMTY2NzA1MTEwNS41Njg5NTgsIDUxLCAwLjI0ODEwNjk3MTM4MzA5NDhdLCBbMTY2NzA1MTEwOS43MDM5ODkzLCA1MiwgMC4yMzM4NTQyNzg5MjIwODFdLCBbMTY2NzA1MTExMy42NjM1NjIzLCA1MywgMC4yNjA4MTg4MzkwNzMxODExNV0sIFsxNjY3MDUxMTE3LjYyMzk4ODYsIDU0LCAwLjI4Nzc4MzQxNDEyNTQ0MjVdLCBbMTY2NzA1MTEyMS42MTAzNDMsIDU1LCAwLjMwMjA2OTEyNzU1OTY2MTg3XSwgWzE2NjcwNTExMjUuNjU1MjY5NCwgNTYsIDAuMjQ4MTM5OTkyMzU2MzAwMzVdLCBbMTY2NzA1MTEyOS42MzM2MzIsIDU3LCAwLjI2Nzk2MTcxMDY5MTQ1Ml0sIFsxNjY3MDUxMTMzLjcxMTM2MjgsIDU4LCAwLjI0OTY4MDgzMjAyODM4ODk4XSwgWzE2NjcwNTExMzcuNzQxNjkzNywgNTksIDAuMjU5NDg3MTIyMjk3Mjg3XSwgWzE2NjcwNTExNDEuNzEwNDUyMywgNjAsIDAuMjQzODY5NjkyMDg3MTczNDZdLCBbMTY2NzA1MTE0NS42ODkzNjEzLCA2MSwgMC4yODM1NDYxMTk5MjgzNl0sIFsxNjY3MDUxMTQ5LjYyMTEzLCA2MiwgMC4yNjUwNTYxMzMyNzAyNjM2N10sIFsxNjY3MDUxMTUzLjU5MTgxMjEsIDYzLCAwLjI0NTIzNDQyOTgzNjI3MzJdLCBbMTY2NzA1MTE1Ny40Nzk3OTEyLCA2NCwgMC4yMTk4MTA2OTQ0NTYxMDA0Nl0sIFsxNjY3MDUxMTYxLjM1Njc3NzIsIDY1LCAwLjI5MzU5NDUzOTE2NTQ5NjhdLCBbMTY2NzA1MTE2NS4zMzgzOTcsIDY2LCAwLjI5NjUwMDExNjU4NjY4NTJdLCBbMTY2NzA1MTE2OS40NzMyNDA5LCA2NywgMC4yMzk2NjU0MTg4NjMyOTY1XSwgWzE2NjcwNTExNzMuMzk3OTcyOCwgNjgsIDAuMzE3NjUzNTM2Nzk2NTY5OF0sIFsxNjY3MDUxMTc3LjMyODE4MywgNjksIDAuMjk3Nzk4ODEyMzg5MzczOF0sIFsxNjY3MDUxMTgxLjI2NDA5MzYsIDcwLCAwLjM2ODcxMDEwMDY1MDc4NzM1XSwgWzE2NjcwNTExODUuMjIxNjE2NywgNzEsIDAuMzI5MDMzNjcyODA5NjAwODNdLCBbMTY2NzA1MTE4OS4xODgxNTcsIDcyLCAwLjMzMTkzOTI1MDIzMDc4OTJdLCBbMTY2NzA1MTE5My4xMTU2MjUxLCA3MywgMC4yODkzNTcyNDQ5Njg0MTQzXSwgWzE2NjcwNTExOTcuMDQyMTYwNywgNzQsIDAuMzA3ODE0MjEwNjUzMzA1MDVdLCBbMTY2NzA1MTIwMS4wMjQwOTM5LCA3NSwgMC4zMTYzMjE4MjAwMjA2NzU2Nl0sIFsxNjY3MDUxMjA1LjE2NDYzMTgsIDc2LCAwLjI0ODEwNjk3MTM4MzA5NDhdLCBbMTY2NzA1MTIwOS4xMDM4ODUyLCA3NywgMC4zMTQ5OTAxMDMyNDQ3ODE1XSwgWzE2NjcwNTEyMTIuOTgyODY3NywgNzgsIDAuMzMxOTA2MjI5MjU3NTgzNl0sIFsxNjY3MDUxMjE2LjkxNzc0NCwgNzksIDAuMjcwODY3MjU4MzEwMzE4XSwgWzE2NjcwNTEyMjAuODEzNDksIDgwLCAwLjI2OTMyNjQ0ODQ0MDU1MTc2XSwgWzE2NjcwNTEyMjQuNzY3MTQwOSwgODEsIDAuMzM3NTA4MjYxMjAzNzY1ODddLCBbMTY2NzA1MTIyOC43Mzg4NDY4LCA4MiwgMC4zMzMyNzA5NjcwMDY2ODMzNV0sIFsxNjY3MDUxMjMyLjcxMjk4NzQsIDgzLCAwLjM2MzE0MTA4OTY3NzgxMDY3XSwgWzE2NjcwNTEyMzYuNzAzMjg0LCA4NCwgMC4zNDA0MTM4MDg4MjI2MzE4NF0sIFsxNjY3MDUxMjQwLjcxOTY2MTUsIDg1LCAwLjM1ODkwMzc5NTQ4MDcyODE1XSwgWzE2NjcwNTEyNDQuODE5NzUzNCwgODYsIDAuMzUwNDI5MjM2ODg4ODg1NV0sIFsxNjY3MDUxMjQ4Ljg1OTQ2NSwgODcsIDAuMzQ0NjUxMTAzMDE5NzE0MzZdLCBbMTY2NzA1MTI1Mi44Mjg0NzYsIDg4LCAwLjIwNjkyMjczOTc0NDE4NjRdLCBbMTY2NzA1MTI1Ni43OTk1ODI3LCA4OSwgMC4zNTE3NjA5NTM2NjQ3Nzk2Nl0sIFsxNjY3MDUxMjYwLjgzMTkzNzYsIDkwLCAwLjM0OTA5NzUyMDExMjk5MTMzXSwgWzE2NjcwNTEyNjUuMjgxMTczNSwgOTEsIDAuMzI0ODI5Mzk5NTg1NzIzOV0sIFsxNjY3MDUxMjY5Ljk3OTA1OTcsIDkyLCAwLjM0NzU1NjY4MDQ0MDkwMjddLCBbMTY2NzA1MTI3My45MTMzMTAzLCA5MywgMC4zMDYzMDYzOTE5NTQ0MjJdLCBbMTY2NzA1MTI3Ny44MzEyMTYzLCA5NCwgMC4zNDg4ODgzOTcyMTY3OTY5XSwgWzE2NjcwNTEyODIuMDgxMjY4LCA5NSwgMC4zODI5OTU4MTQwODUwMDY3XSwgWzE2NjcwNTEyODYuMDM0NzM4OCwgOTYsIDAuMzc0NTIxMjU1NDkzMTY0MDZdLCBbMTY2NzA1MTI5MC4wMzU0MDk3LCA5NywgMC4zNTE3NjA5NTM2NjQ3Nzk2Nl0sIFsxNjY3MDUxMjkzLjk0NjcyNiwgOTgsIDAuMzgyOTk1ODE0MDg1MDA2N10sIFsxNjY3MDUxMjk3Ljg2NTM2NCwgOTksIDAuMjQ4MTczMDEzMzI5NTA1OTJdXQ==", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=train%2Fyolov5s_results2&tag=metrics%2Fprecision": { "data": "W1sxNjY3MDUwODk4LjYxMTEwODUsIDAsIDAuMF0sIFsxNjY3MDUwOTAyLjc5NTg1NzIsIDEsIDEuNTMxMzkzNTM2NDI0NzNlLTA1XSwgWzE2NjcwNTA5MDcuMDE3NDE0NiwgMiwgMS40Nzk5OTA1MzI5NzA5ODczZS0wNV0sIFsxNjY3MDUwOTEwLjkzNjAyNCwgMywgMC4wMDAxMDg5MDk4NTg2ODE3MjcyXSwgWzE2NjcwNTA5MTYuMTcyODkxMSwgNCwgMy4xNTg5NTg4NjE2MDQzMzNlLTA1XSwgWzE2NjcwNTA5MTkuOTYxNzEyNCwgNSwgMy4zNjY1NDk5MzU4OTAzNjJlLTA1XSwgWzE2NjcwNTA5MjMuODExNTY0NywgNiwgNS4xMzg2OTg5MDcxMDMzODk1ZS0wNV0sIFsxNjY3MDUwOTI3LjgxNzc2NzksIDcsIDQuOTYxNzI1NzkwMDUzNjA2ZS0wNV0sIFsxNjY3MDUwOTMxLjU3MDQwMTIsIDgsIDAuMF0sIFsxNjY3MDUwOTM1LjM1NDA5MzMsIDksIDAuMF0sIFsxNjY3MDUwOTM5LjE5NzMzMjQsIDEwLCA0LjMxNDEyNTE4MDgyNjUyMjRlLTA1XSwgWzE2NjcwNTA5NDMuMzU0MzUsIDExLCA1Ljk5Njg4OTAxMjc0OTMwN2UtMDVdLCBbMTY2NzA1MDk0Ny41MzQ3NzIyLCAxMiwgNy41NTQ5MTI3MzU5NDA4ODllLTA1XSwgWzE2NjcwNTA5NTEuNDIzNTEwNiwgMTMsIDAuMDAwMTI3MjA3MDUxMjY0MTIyMTNdLCBbMTY2NzA1MDk1NS41MjY3MDk4LCAxNCwgNy4zNDc2MDgzMzQzODQ4NTllLTA1XSwgWzE2NjcwNTA5NTkuNTY5MjgyMywgMTUsIDAuMDAwMTAyMjUzMzc2MDk4ODE1MzVdLCBbMTY2NzA1MDk2My42MTUyNjk3LCAxNiwgMC4wMDAxNjczMjQzNTMyNDIyOTNdLCBbMTY2NzA1MDk2Ny41NjgxMDY0LCAxNywgMC4wMDAyNTE1MTg5OTg5OTM1NjA2N10sIFsxNjY3MDUwOTcxLjYzNzc1OTQsIDE4LCAwLjAwMDMyNjc2NjI4MzI1MTM0NTE2XSwgWzE2NjcwNTA5NzUuNTY5MTYxLCAxOSwgMC4wMDAyMDQxMDMyMjc1ODgzNDgxXSwgWzE2NjcwNTA5NzkuNDgxMzI3NSwgMjAsIDAuMDAwMjE1NDI5MTg2OTM3Mzk5Ml0sIFsxNjY3MDUwOTgzLjQxMjAwOCwgMjEsIDAuMDAwMjU3NjYwNzUxMjMxMDE0NzNdLCBbMTY2NzA1MDk4Ny41NTQ4NzQ3LCAyMiwgMC4wMDA0NzgzMDA1ODYxMDk5ODA5NF0sIFsxNjY3MDUwOTkxLjY0MDM2MjMsIDIzLCAwLjAwMTAwNzE0NTUwMzUzNTg2NjddLCBbMTY2NzA1MDk5NS43MzYxNzI0LCAyNCwgMC4wMDAyMjcxNjEzNjMwMDAwNTAyXSwgWzE2NjcwNTA5OTkuNjU5NzYxMiwgMjUsIDAuMDAwNjExNjU4NDQwOTAyODI5Ml0sIFsxNjY3MDUxMDAzLjU2NjMzNjIsIDI2LCAwLjAwMDUzNjU2ODc1Mzg4Njk2NzldLCBbMTY2NzA1MTAwNy40ODQ3NTAzLCAyNywgMC4wMDAzMDYwMTczNDc2MTE0ODY5XSwgWzE2NjcwNTEwMTEuNDI3OTU5MiwgMjgsIDAuMDAwNDY5NTkwMjQ2MjExNzM3NF0sIFsxNjY3MDUxMDE1LjMwMzUyMTksIDI5LCAwLjAwMDgzNjQzNTI5Nzk2OTcyODddLCBbMTY2NzA1MTAxOS40OTczNjkzLCAzMCwgMC4wMDEwMTYxNDgxMzMyMDMzODczXSwgWzE2NjcwNTEwMjMuNzY2NjAzMiwgMzEsIDAuMDAwNDc3ODE1NzQ1Mzk4NDAyMl0sIFsxNjY3MDUxMDI4LjA5MjYwNTQsIDMyLCAwLjAwMDUzMzM3Mzk2ODIxMDA3MTNdLCBbMTY2NzA1MTAzMi4wNTUwMDI1LCAzMywgMC4wMDA4MjE5ODk3MjgxMzc4NTA4XSwgWzE2NjcwNTEwMzYuMDU2MDAwNSwgMzQsIDAuMDAwNTU5MTc0MjgxMDc5MzIyMV0sIFsxNjY3MDUxMDQwLjIzNjc1NDIsIDM1LCAwLjAwMDYzNDIzNDgwNjA1NzA2NTddLCBbMTY2NzA1MTA0NC4xMTYwMDg4LCAzNiwgMC4wMDA3NTk0NDkxNDcxNTM2NDU4XSwgWzE2NjcwNTEwNDguMzQ1NzAyNCwgMzcsIDAuMDAwNjQyOTIzNTgwMDE2OTQwOF0sIFsxNjY3MDUxMDUyLjI4OTEyMzgsIDM4LCAwLjAwMDg0MDEwMTc5ODUzMDY2OF0sIFsxNjY3MDUxMDU2LjQ3OTg1NywgMzksIDAuMDAwOTIxMjI1MjMzNDY5MTU4NF0sIFsxNjY3MDUxMDYwLjU3ODcxNTMsIDQwLCAwLjAwMDczODU2MTU2MDg2NTQ5MTZdLCBbMTY2NzA1MTA2NC42MDE3NDk3LCA0MSwgMC4wMDA2NDI2OTA5ODIyMDM5MzA2XSwgWzE2NjcwNTEwNjguNTc4MjkzLCA0MiwgMC4wMDA4NzM1NTI1MTg4OTY3NTg2XSwgWzE2NjcwNTEwNzIuNTc4MzMwNSwgNDMsIDAuMDAwODI0NDQwNTYxNzAwNjEyM10sIFsxNjY3MDUxMDc2LjUwNjc3NzMsIDQ0LCAwLjAwMDg5Mzc1OTQ4MzAwNTg1MTVdLCBbMTY2NzA1MTA4MC40Njc3MDEyLCA0NSwgMC4wMDEwODMwOTk2MzI1MjM5NTRdLCBbMTY2NzA1MTA4NC4zOTM0NzE3LCA0NiwgMC4wMDA4NjgyNjA0NTI5ODk0ODg4XSwgWzE2NjcwNTEwODguMzc3NzIwNiwgNDcsIDAuMDAwOTc5MjEzNTA5NzA4NjQzXSwgWzE2NjcwNTEwOTMuNTQ2MTQsIDQ4LCAwLjAwMDg1NDg5OTUyNDcxMTA3MjRdLCBbMTY2NzA1MTA5Ny42NTE1NTE1LCA0OSwgMC4wMDExNjQ1MzEyMTg4MTkzMjAyXSwgWzE2NjcwNTExMDEuNjEyOTUyMiwgNTAsIDAuMDAwODM5MTM0MDM3OTYwMzIwN10sIFsxNjY3MDUxMTA1LjU2ODkyNywgNTEsIDAuMDAxMDM0NzU1NjA4OTk4MjM5XSwgWzE2NjcwNTExMDkuNzAzOTU4MywgNTIsIDAuMDAwOTI0NzQzODI4MzYzNzE2Nl0sIFsxNjY3MDUxMTEzLjY2MzUzMzQsIDUzLCAwLjAwMDkwNjgwMTMxNjg4NzE0MDNdLCBbMTY2NzA1MTExNy42MjM5NTg2LCA1NCwgMC4wMDA5MzEwNjcxMDExOTE3MjkzXSwgWzE2NjcwNTExMjEuNjEwMzA4LCA1NSwgMC4wMDEyNjc3NTI3MjY1NjIzMjEyXSwgWzE2NjcwNTExMjUuNjU1MjM3LCA1NiwgMC4wMDExNzU3NTU5ODQxNDk4NzMzXSwgWzE2NjcwNTExMjkuNjMzNTc1NCwgNTcsIDAuMDAwOTQxNzcyMTMwMzE3OTg2XSwgWzE2NjcwNTExMzMuNzExMzMxOCwgNTgsIDAuMDAwODcxNDUxOTIwODI5NzEzM10sIFsxNjY3MDUxMTM3Ljc0MTY2MTUsIDU5LCAwLjAwMDg2MDE4NTE4Nzc3NTY0MTddLCBbMTY2NzA1MTE0MS43MTA0MTgsIDYwLCAwLjAwMDc5NTQ4MTA4NjI0Mjk0NF0sIFsxNjY3MDUxMTQ1LjY4OTMzMzcsIDYxLCAwLjAwMDkyNjg2NDg1NzMxOTc0MjRdLCBbMTY2NzA1MTE0OS42MjExMDAyLCA2MiwgMC4wMDA4NTAyMzMzMDc1NzM5NDQzXSwgWzE2NjcwNTExNTMuNTkxNzY1MiwgNjMsIDAuMDAxMTgwNjM3MDQ1NzYzNDMzXSwgWzE2NjcwNTExNTcuNDc5NzYyLCA2NCwgMC4wMDA3NTI2OTExMjEzMDYyNzA0XSwgWzE2NjcwNTExNjEuMzU2NzQ1MiwgNjUsIDAuMDAxMTI0ODAwNzY0OTU1NTgwMl0sIFsxNjY3MDUxMTY1LjMzODM2NTgsIDY2LCAwLjAwMTIwMjcwODIyNjYyODYwMTZdLCBbMTY2NzA1MTE2OS40NzMyMDk2LCA2NywgMC4wMDEwNzA5ODY2MTgyODc4NjEzXSwgWzE2NjcwNTExNzMuMzk3OTQxNiwgNjgsIDAuMDAxMDg4OTgwNzAxNzUyMDA3XSwgWzE2NjcwNTExNzcuMzI4MTQ5OCwgNjksIDAuMDAwODE0ODM5MzI0NDQ4MjU3N10sIFsxNjY3MDUxMTgxLjI2NDA2NzQsIDcwLCAwLjAwMTE1ODYzOTkwNTA0Mjk0NjNdLCBbMTY2NzA1MTE4NS4yMjE1NTg2LCA3MSwgMC4wMDExMjEzMTYyMjE1NDI2NTY0XSwgWzE2NjcwNTExODkuMTg4MTI2OCwgNzIsIDAuMDAxMTI2Nzg1OTk1NDM4Njk1XSwgWzE2NjcwNTExOTMuMTE1NTczLCA3MywgMC4wMDEzODg4NjE1NjQ5MTkzNTI1XSwgWzE2NjcwNTExOTcuMDQyMTEzOCwgNzQsIDAuMDAwODEwNTU5OTU1NDI1NTYwNV0sIFsxNjY3MDUxMjAxLjAyNDA2NjIsIDc1LCAwLjAwMDk2Njk3OTU5ODE2MDgzMzFdLCBbMTY2NzA1MTIwNS4xNjQ1NzIyLCA3NiwgMC4wMDA5ODY0MDAwNjAzNTU2NjMzXSwgWzE2NjcwNTEyMDkuMTAzODU1MSwgNzcsIDAuMDAxMDQ1NzU5NzY3MjkzOTNdLCBbMTY2NzA1MTIxMi45ODI4Mzc3LCA3OCwgMC4wMDA5NTc1MjIxMzM4MzA5MzQ4XSwgWzE2NjcwNTEyMTYuOTE3NzEyNSwgNzksIDAuMDAwOTk5ODY0ODg5MzA4ODEwMl0sIFsxNjY3MDUxMjIwLjgxMzQ2MiwgODAsIDAuMDAxMDY2MzczMzExOTE0NTAzNl0sIFsxNjY3MDUxMjI0Ljc2NzExMTgsIDgxLCAwLjAwMTEzNzQ0MjQyMTE2ODA4OV0sIFsxNjY3MDUxMjI4LjczODgxNjcsIDgyLCAwLjAwMTA2NjM2MTQzNzU1MTY3NzJdLCBbMTY2NzA1MTIzMi43MTI5NTYyLCA4MywgMC4wMDEyMzkyMjIwMDg3MzQ5NDE1XSwgWzE2NjcwNTEyMzYuNzAzMjUwNCwgODQsIDAuMDAxMTY2NjEzNzcyNTExNDgyMl0sIFsxNjY3MDUxMjQwLjcxOTYyNTIsIDg1LCAwLjAwMTE2ODM4MzUxODIzMzg5NTNdLCBbMTY2NzA1MTI0NC44MTk3MjE3LCA4NiwgMC4wMDEwNDMyNzQwNjczNDIyODEzXSwgWzE2NjcwNTEyNDguODU5NDMxNSwgODcsIDAuMDAxMTI2ODU0OTEzMzA5MjE2NV0sIFsxNjY3MDUxMjUyLjgyODQ0NSwgODgsIDAuMDAwOTI0OTA5NTQ1NTc0MzM3Ml0sIFsxNjY3MDUxMjU2Ljc5OTU0OTYsIDg5LCAwLjAwMTAyNTE4NDQwNjg5ODkxNThdLCBbMTY2NzA1MTI2MC44MzE5MDUxLCA5MCwgMC4wMDEwNTI0Njc1MDE3MjIyNzYyXSwgWzE2NjcwNTEyNjUuMjgxMTQzNywgOTEsIDAuMDAxMjE0NDQ5NTI2NzQyMTAwN10sIFsxNjY3MDUxMjY5Ljk3OTAzMSwgOTIsIDAuMDAxMTMzMzE1NzMwODM5OTY3N10sIFsxNjY3MDUxMjczLjkxMzI3NDUsIDkzLCAwLjAwMTExOTg4ODI3MTIwNTEyNzJdLCBbMTY2NzA1MTI3Ny44MzExODUsIDk0LCAwLjAwMTIxMzgwODg5MzIyNjA4N10sIFsxNjY3MDUxMjgyLjA4MTIzNDUsIDk1LCAwLjAwMTI4NzAxNzgzMjUxMDE3MzNdLCBbMTY2NzA1MTI4Ni4wMzQ3MDk3LCA5NiwgMC4wMDExNTc3OTY5NDE2OTc1OTc1XSwgWzE2NjcwNTEyOTAuMDM1MzgxLCA5NywgMC4wMDEwMTc3NDc0NDY4OTQ2NDU3XSwgWzE2NjcwNTEyOTMuOTQ2Njk0OSwgOTgsIDAuMDAxMjY0MDE4NzA1MTE0NzIyM10sIFsxNjY3MDUxMjk3Ljg2NTMyNzQsIDk5LCAwLjAwMTAxODgzNDUzMzE2OTg2NTZdXQ==", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=train%2Fyolov5s_results2&tag=train%2Fcls_loss": { "data": "W1sxNjY3MDUwODk4LjYxMTAyOTksIDAsIDAuMDQzODg4MTMzMDE5MjA4OTFdLCBbMTY2NzA1MDkwMi43OTU4MiwgMSwgMC4wNDM2MDU2NDc5ODExNjY4NF0sIFsxNjY3MDUwOTA3LjAxNzM0OTUsIDIsIDAuMDQzMjY3OTQ2NjkwMzIwOTddLCBbMTY2NzA1MDkxMC45MzU5NTc0LCAzLCAwLjA0MTcyMDU4NDAzNDkxOTc0XSwgWzE2NjcwNTA5MTYuMTcyODI0NiwgNCwgMC4wNDI5NDUxNzYzNjI5OTEzM10sIFsxNjY3MDUwOTE5Ljk2MTY1NTYsIDUsIDAuMDQyNzQxOTk5MDMwMTEzMjJdLCBbMTY2NzA1MDkyMy44MTE1MDkxLCA2LCAwLjA0MTA5Nzc0MTU3NDA0ODk5Nl0sIFsxNjY3MDUwOTI3LjgxNzcwNywgNywgMC4wNDE0Nzk3NjI2NDM1NzU2N10sIFsxNjY3MDUwOTMxLjU3MDM0NjQsIDgsIDAuMDQxNzA5ODU1MTk4ODYwMTddLCBbMTY2NzA1MDkzNS4zNTQwMzYzLCA5LCAwLjA0MDM3OTg0NDYwNTkyMjddLCBbMTY2NzA1MDkzOS4xOTcyNzM1LCAxMCwgMC4wMzk0NzM1Mjk5MDUwODA3OTVdLCBbMTY2NzA1MDk0My4zNTQyODksIDExLCAwLjAzODkzMTYyNjgyNjUyNDczNF0sIFsxNjY3MDUwOTQ3LjUzNDcxMDYsIDEyLCAwLjAzODc3NTI4NzU2ODU2OTE4XSwgWzE2NjcwNTA5NTEuNDIzNDUyMSwgMTMsIDAuMDM4MzAwMDM3Mzg0MDMzMl0sIFsxNjY3MDUwOTU1LjUyNjY0NTIsIDE0LCAwLjAzNzE5MDE1MDQ2OTU0MTU1XSwgWzE2NjcwNTA5NTkuNTY5MjI1NSwgMTUsIDAuMDM3MzIwMzg2NjE4Mzc1NzhdLCBbMTY2NzA1MDk2My42MTUyMTUsIDE2LCAwLjAzNTc3MjEyOTg5MzMwMjkyXSwgWzE2NjcwNTA5NjcuNTY4MDUxMywgMTcsIDAuMDM2ODAwOTI4NDEzODY3OTVdLCBbMTY2NzA1MDk3MS42Mzc3LCAxOCwgMC4wMzU0Mjk3MDg2NTk2NDg4OTVdLCBbMTY2NzA1MDk3NS41NjkxMDA5LCAxOSwgMC4wMzUxMTgxNDc3MzA4MjczM10sIFsxNjY3MDUwOTc5LjQ4MTI3MTMsIDIwLCAwLjAzNTQzMTEyNzk5NTI1MjYxXSwgWzE2NjcwNTA5ODMuNDExOTQwNiwgMjEsIDAuMDM0MTc5MjY2NTQyMTk2Mjc0XSwgWzE2NjcwNTA5ODcuNTU0ODE3LCAyMiwgMC4wMzQ2OTc1MDY1NzY3NzY1MDVdLCBbMTY2NzA1MDk5MS42NDAzMDgsIDIzLCAwLjAzNTIxMTQxMDM3MzQ0OTMyNl0sIFsxNjY3MDUwOTk1LjczNjExNCwgMjQsIDAuMDM1MTAyMzc0ODUxNzAzNjQ0XSwgWzE2NjcwNTA5OTkuNjU5NzAxMywgMjUsIDAuMDM0MDcxODU4OTcyMzExMDJdLCBbMTY2NzA1MTAwMy41NjYyODE4LCAyNiwgMC4wMzM5NzYyMzQ0OTU2Mzk4XSwgWzE2NjcwNTEwMDcuNDg0Njg3OCwgMjcsIDAuMDM0MTU0OTE0MzE5NTE1MjNdLCBbMTY2NzA1MTAxMS40Mjc5MDAzLCAyOCwgMC4wMzQ4MTA2MTM4NDA4MTg0MDVdLCBbMTY2NzA1MTAxNS4zMDM0NjEzLCAyOSwgMC4wMzIwODI1MzE2MDExOTA1N10sIFsxNjY3MDUxMDE5LjQ5NzMxMjUsIDMwLCAwLjAzMzc1OTQ1OTg1MzE3MjNdLCBbMTY2NzA1MTAyMy43NjY1MzQ2LCAzMSwgMC4wMzQxMDkwMDAxMTY1ODY2ODVdLCBbMTY2NzA1MTAyOC4wOTI1MywgMzIsIDAuMDM0MTM2ODAxOTU4MDg0MTA2XSwgWzE2NjcwNTEwMzIuMDU0OTM4MywgMzMsIDAuMDMzNTYyOTQ3MDY0NjM4MTRdLCBbMTY2NzA1MTAzNi4wNTU5MzgyLCAzNCwgMC4wMzMwNjYzODQ0OTQzMDQ2Nl0sIFsxNjY3MDUxMDQwLjIzNjY5MTcsIDM1LCAwLjAzMzQ1ODk3NzkzNzY5ODM2NF0sIFsxNjY3MDUxMDQ0LjExNTk1MzIsIDM2LCAwLjAzMzg2OTcyMDk5NTQyNjE4XSwgWzE2NjcwNTEwNDguMzQ1NjMxOCwgMzcsIDAuMDMyNzkwNDE4NzE0Mjg0OV0sIFsxNjY3MDUxMDUyLjI4OTAzNzUsIDM4LCAwLjAzMDUyOTE4MjQwNDI3OTcxXSwgWzE2NjcwNTEwNTYuNDc5ODAxLCAzOSwgMC4wMzI0Mzg2NjkzNTM3MjM1MjZdLCBbMTY2NzA1MTA2MC41Nzg2NTg2LCA0MCwgMC4wMzIyNTE4NDYwNDUyNTU2Nl0sIFsxNjY3MDUxMDY0LjYwMTY3ODgsIDQxLCAwLjAzMTg5MzkyNzYwMzk2MDA0XSwgWzE2NjcwNTEwNjguNTc4MjM0LCA0MiwgMC4wMzMzOTMzNDU3NzMyMjAwNl0sIFsxNjY3MDUxMDcyLjU3ODI3MTQsIDQzLCAwLjAzMTk4NTg5NzU3MDg0ODQ2NV0sIFsxNjY3MDUxMDc2LjUwNjcxNzcsIDQ0LCAwLjAzMTQ4MDg4MjMxNjgyNzc3NF0sIFsxNjY3MDUxMDgwLjQ2NzYzNywgNDUsIDAuMDMwNzMxMTUwODgwNDU1OTddLCBbMTY2NzA1MTA4NC4zOTM0MDExLCA0NiwgMC4wMzE1MjE0MjQ2NTExNDU5MzVdLCBbMTY2NzA1MTA4OC4zNzc2NTA3LCA0NywgMC4wMzE2NTY2OTM2NjcxNzMzODZdLCBbMTY2NzA1MTA5My41NDYwNzgsIDQ4LCAwLjAyOTY4MTUyOTg0OTc2NzY4NV0sIFsxNjY3MDUxMDk3LjY1MTQ4OTcsIDQ5LCAwLjAzMDA1MzAzMDY5OTQ5MTVdLCBbMTY2NzA1MTEwMS42MTI4OTI0LCA1MCwgMC4wMzA3Nzk5NTU5MDg2NTYxMl0sIFsxNjY3MDUxMTA1LjU2ODg2OTYsIDUxLCAwLjAyODI4Nzk2Mzk0MTY5MzMwNl0sIFsxNjY3MDUxMTA5LjcwMzkwMTUsIDUyLCAwLjAyOTkzNjQ5MjQ0MzA4NDcxN10sIFsxNjY3MDUxMTEzLjY2MzQ4MTIsIDUzLCAwLjAyOTI0MjE4MDI4NzgzNzk4Ml0sIFsxNjY3MDUxMTE3LjYyMzkwMywgNTQsIDAuMDI5MTUyNDgyNzQ4MDMxNjE2XSwgWzE2NjcwNTExMjEuNjEwMjQzMywgNTUsIDAuMDI4NzUwODQ2MTYyNDM4MzkzXSwgWzE2NjcwNTExMjUuNjU1MTgwMiwgNTYsIDAuMDI4OTQ3NTg0MzMxMDM1NjE0XSwgWzE2NjcwNTExMjkuNjMzNTE4NywgNTcsIDAuMDI4NDQ3MDQzMTUwNjYzMzc2XSwgWzE2NjcwNTExMzMuNzExMjcyMiwgNTgsIDAuMDI4NTA0MjMzODA3MzI1MzYzXSwgWzE2NjcwNTExMzcuNzQxNTgyNiwgNTksIDAuMDI5NDk2ODcwOTM0OTYzMjI2XSwgWzE2NjcwNTExNDEuNzEwMzQ2NywgNjAsIDAuMDI4NTIwMDk2MDkzNDE2MjE0XSwgWzE2NjcwNTExNDUuNjg5Mjc3MiwgNjEsIDAuMDI5MzIxNTQ1NzM1MDAxNTY0XSwgWzE2NjcwNTExNDkuNjIxMDQ1NCwgNjIsIDAuMDI3NDU1NDIxMTY0NjMxODQ0XSwgWzE2NjcwNTExNTMuNTkxNzA4LCA2MywgMC4wMjc5ODA0OTMzODE2MTk0NTNdLCBbMTY2NzA1MTE1Ny40Nzk3MDYzLCA2NCwgMC4wMjU1ODkwNDY5OTk4MTIxMjZdLCBbMTY2NzA1MTE2MS4zNTY2ODE4LCA2NSwgMC4wMjgzODg4MDE5NjIxMzcyMjJdLCBbMTY2NzA1MTE2NS4zMzgzMDM2LCA2NiwgMC4wMjg3NjkxNDEwNjMwOTQxNF0sIFsxNjY3MDUxMTY5LjQ3MzE0NzYsIDY3LCAwLjAyNzkwMDc4NzA3MDM5MzU2Ml0sIFsxNjY3MDUxMTczLjM5Nzg4NzIsIDY4LCAwLjAyODUyMjk2NjQyOTU5MTE4XSwgWzE2NjcwNTExNzcuMzI4MDgxOCwgNjksIDAuMDI0NzkwODQwMjIzNDMxNTg3XSwgWzE2NjcwNTExODEuMjY0MDA2MSwgNzAsIDAuMDI1OTI1NTQ4NzQ3MTgxODkyXSwgWzE2NjcwNTExODUuMjIxNDk2LCA3MSwgMC4wMjUzNjg5Njk4ODc0OTUwNF0sIFsxNjY3MDUxMTg5LjE4ODA3MTMsIDcyLCAwLjAyNzY3MTU1MzE5NDUyMjg1OF0sIFsxNjY3MDUxMTkzLjExNTUxNzYsIDczLCAwLjAyODg5NjE1Mjk3MzE3NTA1XSwgWzE2NjcwNTExOTcuMDQyMDU2LCA3NCwgMC4wMjQ4MDM1OTM3NTQ3NjgzN10sIFsxNjY3MDUxMjAxLjAyNDAxMSwgNzUsIDAuMDI2NjAyNzMyMDE3NjM2M10sIFsxNjY3MDUxMjA1LjE2NDUxMTQsIDc2LCAwLjAyNTM5NTYwMzg1MDQ4Mzg5NF0sIFsxNjY3MDUxMjA5LjEwMzc4LCA3NywgMC4wMjgxOTg3NTA2ODk2MjU3NF0sIFsxNjY3MDUxMjEyLjk4Mjc4MDIsIDc4LCAwLjAyNDg4NTkxMzM1NzEzODYzNF0sIFsxNjY3MDUxMjE2LjkxNzY0ODYsIDc5LCAwLjAyNTYwMDgxNzA1NDUxMDExN10sIFsxNjY3MDUxMjIwLjgxMzQwODYsIDgwLCAwLjAyNTgwMzg3ODkwMzM4ODk3N10sIFsxNjY3MDUxMjI0Ljc2NzA1NDgsIDgxLCAwLjAyNjM3NDI4MDQ1MjcyODI3XSwgWzE2NjcwNTEyMjguNzM4NzU2LCA4MiwgMC4wMjU1MTA4MzA4MDQ3MDU2Ml0sIFsxNjY3MDUxMjMyLjcxMjkwMDIsIDgzLCAwLjAyMzg2NDQ0MDYxOTk0NTUyNl0sIFsxNjY3MDUxMjM2LjcwMzE3MjIsIDg0LCAwLjAyMzkzMzMyNjgyNTQ5OTUzNV0sIFsxNjY3MDUxMjQwLjcxOTU1MTgsIDg1LCAwLjAyODMwNDMwNDkyNzU4NzUxXSwgWzE2NjcwNTEyNDQuODE5NjUwNywgODYsIDAuMDI0Nzc4Mzk3NzUzODM0NzI0XSwgWzE2NjcwNTEyNDguODU5MzY3MSwgODcsIDAuMDIzOTI0NzQ5MzQ0NTg3MzI2XSwgWzE2NjcwNTEyNTIuODI4Mzg3NSwgODgsIDAuMDIyOTUwNzQ0MjU2Mzc3MjJdLCBbMTY2NzA1MTI1Ni43OTk0ODU3LCA4OSwgMC4wMjUwNjMxMTk4Mjg3MDEwMl0sIFsxNjY3MDUxMjYwLjgzMTg0NTUsIDkwLCAwLjAyNjg4MDQ5NTI1MDIyNTA2N10sIFsxNjY3MDUxMjY1LjI4MTA5MjQsIDkxLCAwLjAyMzU2Nzc5Mzg5MDgzMzg1NV0sIFsxNjY3MDUxMjY5Ljk3ODk3MzIsIDkyLCAwLjAyNDIzMTE4OTg2MTg5MzY1NF0sIFsxNjY3MDUxMjczLjkxMzIxMTMsIDkzLCAwLjAyMjk1MzE4NDMyMTUyMjcxM10sIFsxNjY3MDUxMjc3LjgzMTEyNDUsIDk0LCAwLjAyNDgwMzA3NDA3Njc3MTczNl0sIFsxNjY3MDUxMjgyLjA4MTE1ODIsIDk1LCAwLjAyMjE0Nzg2NzgyODYwNzU2XSwgWzE2NjcwNTEyODYuMDM0NjQ3LCA5NiwgMC4wMjM1MjUxNDExNzk1NjE2MTVdLCBbMTY2NzA1MTI5MC4wMzUzMjM2LCA5NywgMC4wMjQ0NzQ5MTEzOTE3MzUwNzddLCBbMTY2NzA1MTI5My45NDY2MzIsIDk4LCAwLjAyMTY3NDIwNDYxNzczODcyNF0sIFsxNjY3MDUxMjk3Ljg2NTI2NTEsIDk5LCAwLjAyMjU3MTkxNzYyMzI4MTQ4XV0=", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=train%2Fyolov5s_results2&tag=train%2Fobj_loss": { "data": "W1sxNjY3MDUwODk4LjYxMDc5MDMsIDAsIDAuMDE2NjUwOTAwMjQ0NzEyODNdLCBbMTY2NzA1MDkwMi43OTU3MiwgMSwgMC4wMTczODU1MzQ5NDIxNTAxMTZdLCBbMTY2NzA1MDkwNy4wMTcxMzY4LCAyLCAwLjAxNjY4MTk4MjIwNDMxODA0N10sIFsxNjY3MDUwOTEwLjkzNTY1NzMsIDMsIDAuMDE2ODUwODk5OTA0OTY2MzU0XSwgWzE2NjcwNTA5MTYuMTcyNTQyLCA0LCAwLjAxNjgyODEyMzQ4MDA4MTU1OF0sIFsxNjY3MDUwOTE5Ljk2MTQxOSwgNSwgMC4wMTY5NjQ2NTcyMzIxNjUzMzddLCBbMTY2NzA1MDkyMy44MTEyODgsIDYsIDAuMDE3NDU1MzAyMTc4ODU5NzFdLCBbMTY2NzA1MDkyNy44MTc0NjI3LCA3LCAwLjAxNjYwMzM4NDE2Njk1NTk0OF0sIFsxNjY3MDUwOTMxLjU3MDE2MTMsIDgsIDAuMDE1NzAxMTAyMDkyODYyMTNdLCBbMTY2NzA1MDkzNS4zNTM4MDMsIDksIDAuMDE2MjE4MTg3Mjg3NDQ5ODM3XSwgWzE2NjcwNTA5MzkuMTk3MDQ4NCwgMTAsIDAuMDE2ODY0MDI1OTY1MzMyOTg1XSwgWzE2NjcwNTA5NDMuMzU0MDY0NywgMTEsIDAuMDE2NDEzNDg3NDkzOTkxODUyXSwgWzE2NjcwNTA5NDcuNTM0NDQ4MSwgMTIsIDAuMDE3MTY4ODIzNjI5NjE3NjldLCBbMTY2NzA1MDk1MS40MjMyMzg4LCAxMywgMC4wMTYyNDQyNjI0NTY4OTM5Ml0sIFsxNjY3MDUwOTU1LjUyNjQxMTUsIDE0LCAwLjAxNjA4MzI5NDUyNTc0MjUzXSwgWzE2NjcwNTA5NTkuNTY5MDAzLCAxNSwgMC4wMTU3ODU1MDk3MjA0NDQ2OF0sIFsxNjY3MDUwOTYzLjYxNDk5NTUsIDE2LCAwLjAxNTgyOTI2Njk4MDI5MDQxM10sIFsxNjY3MDUwOTY3LjU2NzgzNzcsIDE3LCAwLjAxNjQzNjMxMDQ4NTAwNTM4XSwgWzE2NjcwNTA5NzEuNjM3NDA5MiwgMTgsIDAuMDE2MTAzMzQ5NjI2MDY0M10sIFsxNjY3MDUwOTc1LjU2ODg0MDUsIDE5LCAwLjAxNTAyMzU0MDcwNTQ0MjQyOV0sIFsxNjY3MDUwOTc5LjQ4MTA2LCAyMCwgMC4wMTYwNTYwMTk4MTI4MjIzNDJdLCBbMTY2NzA1MDk4My40MTE2ODY0LCAyMSwgMC4wMTU5Mjc5Nzk3MjI2MTkwNTddLCBbMTY2NzA1MDk4Ny41NTQ1NzIzLCAyMiwgMC4wMTY1Mzk2MjU4MjM0OTc3NzJdLCBbMTY2NzA1MDk5MS42NDAwODI2LCAyMywgMC4wMTY2NjMyNzc1MjE3Mjk0N10sIFsxNjY3MDUwOTk1LjczNTg4LCAyNCwgMC4wMTU5OTc1MDg1NDA3NDk1NV0sIFsxNjY3MDUwOTk5LjY1OTQ2NiwgMjUsIDAuMDE2NTkxMTU1OTAxNTUxMjQ3XSwgWzE2NjcwNTEwMDMuNTY2MDc3NSwgMjYsIDAuMDE2NjQwODQwMDk4MjYxODMzXSwgWzE2NjcwNTEwMDcuNDg0NDQ4NCwgMjcsIDAuMDE0OTUyNzM3ODM4MDI5ODYxXSwgWzE2NjcwNTEwMTEuNDI3NjQ5LCAyOCwgMC4wMTU4NjUyNDU4MzM5OTI5NThdLCBbMTY2NzA1MTAxNS4zMDMyNDcyLCAyOSwgMC4wMTUxMjQ5MDAyNjY1MjgxM10sIFsxNjY3MDUxMDE5LjQ5NzExMTMsIDMwLCAwLjAxNTQzMTUyODkxMDk5NDUzXSwgWzE2NjcwNTEwMjMuNzY2MzMxNywgMzEsIDAuMDE2NTA2NjEwNDM4MjI3NjU0XSwgWzE2NjcwNTEwMjguMDkyMzE5MywgMzIsIDAuMDE1MDk4MzkyOTYzNDA5NDI0XSwgWzE2NjcwNTEwMzIuMDU0NzA5NywgMzMsIDAuMDE2MjYxNjU5NTYyNTg3NzM4XSwgWzE2NjcwNTEwMzYuMDU1Njg1NSwgMzQsIDAuMDE2NDQ3MTQ3MzU0NDgzNjA0XSwgWzE2NjcwNTEwNDAuMjM2NDM4MywgMzUsIDAuMDE1OTA3Mjc4Mjg0NDMwNTA0XSwgWzE2NjcwNTEwNDQuMTE1NzM4MiwgMzYsIDAuMDE2NTU0OTE0NDE0ODgyNjZdLCBbMTY2NzA1MTA0OC4zNDUzODk2LCAzNywgMC4wMTYyODUzMDc3MDU0MDIzNzRdLCBbMTY2NzA1MTA1Mi4yODg3NjY2LCAzOCwgMC4wMTU0Mjg0MjM4ODE1MzA3NjJdLCBbMTY2NzA1MTA1Ni40Nzk1NjIsIDM5LCAwLjAxNjg1MDE1NDg0NjkwNjY2Ml0sIFsxNjY3MDUxMDYwLjU3ODQyMTgsIDQwLCAwLjAxNTkzMTU5MzI1NDIwODU2NV0sIFsxNjY3MDUxMDY0LjYwMTM3OTIsIDQxLCAwLjAxNTc3MzU2NDU3NzEwMjY2XSwgWzE2NjcwNTEwNjguNTc4MDA3LCA0MiwgMC4wMTUzMTI0MjM5Mjk1NzIxMDVdLCBbMTY2NzA1MTA3Mi41NzgwNTksIDQzLCAwLjAxNjA2NjgzMDYwNTI2ODQ4XSwgWzE2NjcwNTEwNzYuNTA2NDc5LCA0NCwgMC4wMTY3MTE4NjQ2MjA0NDcxNl0sIFsxNjY3MDUxMDgwLjQ2NzM0NTUsIDQ1LCAwLjAxNTQyMDI1MjQ1NzI2MTA4Nl0sIFsxNjY3MDUxMDg0LjM5MzA2MzgsIDQ2LCAwLjAxNjAzODcxMDI1MTQ1MDU0XSwgWzE2NjcwNTEwODguMzc3MzUzNCwgNDcsIDAuMDE1MzkyMTc4NjY5NTcxODc3XSwgWzE2NjcwNTEwOTMuNTQ1Nzk1LCA0OCwgMC4wMTY3MjQ3MDAxMDgxNzA1MV0sIFsxNjY3MDUxMDk3LjY1MTI2NTQsIDQ5LCAwLjAxNTg3MDMxMjIyODc5ODg2Nl0sIFsxNjY3MDUxMTAxLjYxMjY0MDYsIDUwLCAwLjAxNjYxMzc0NDE5OTI3NTk3XSwgWzE2NjcwNTExMDUuNTY4NjMyNCwgNTEsIDAuMDE2NTc0MDM0NDY3MzM5NTE2XSwgWzE2NjcwNTExMDkuNzAzNjcyMiwgNTIsIDAuMDE2MjU1ODI1NzU3OTgwMzQ3XSwgWzE2NjcwNTExMTMuNjYzMjkxNSwgNTMsIDAuMDE1ODg2MjkxODYxNTM0MTJdLCBbMTY2NzA1MTExNy42MjM2NzksIDU0LCAwLjAxNjIzNTgyNDY3NDM2NzkwNV0sIFsxNjY3MDUxMTIxLjYxMDAwOCwgNTUsIDAuMDE1NDI0MjMyOTI5OTQ0OTkyXSwgWzE2NjcwNTExMjUuNjU0OTYxLCA1NiwgMC4wMTUzOTkzODI0NDk2ODY1MjddLCBbMTY2NzA1MTEyOS42MzMyNzYyLCA1NywgMC4wMTUyNTA3MzU5MTYxOTczXSwgWzE2NjcwNTExMzMuNzExMDI4MywgNTgsIDAuMDE2ODA0Mjg5MDcyNzUyXSwgWzE2NjcwNTExMzcuNzQxMzY0NSwgNTksIDAuMDE1MDA4Njc2Nzk3MTUxNTY2XSwgWzE2NjcwNTExNDEuNzEwMTIxLCA2MCwgMC4wMTcwMjEzOTcxMjg3MDEyMV0sIFsxNjY3MDUxMTQ1LjY4OTA3MSwgNjEsIDAuMDE2NTk3Mzg2NDQ5NTc1NDI0XSwgWzE2NjcwNTExNDkuNjIwODIzNiwgNjIsIDAuMDE1NTg0NDIxMzQ0MTAxNDI5XSwgWzE2NjcwNTExNTMuNTkxNDgyOSwgNjMsIDAuMDE2MDQzNDg0MjEwOTY4MDE4XSwgWzE2NjcwNTExNTcuNDc5NDcxMiwgNjQsIDAuMDE2MzEyNTA3OTEyNTE2NTk0XSwgWzE2NjcwNTExNjEuMzU2NDIwMywgNjUsIDAuMDE1NjE1NTQzMzUwNTc3MzU0XSwgWzE2NjcwNTExNjUuMzM4MDc5LCA2NiwgMC4wMTU0NjQ2MTk3MzMzOTMxOTJdLCBbMTY2NzA1MTE2OS40NzI5MzIsIDY3LCAwLjAxNTgzMDQ0MjMwOTM3OTU3OF0sIFsxNjY3MDUxMTczLjM5NzY3ODQsIDY4LCAwLjAxNTcxNDYwMDY4MjI1ODYwNl0sIFsxNjY3MDUxMTc3LjMyNzg2MzcsIDY5LCAwLjAxNTY2Mjg0MTQ5ODg1MTc3Nl0sIFsxNjY3MDUxMTgxLjI2Mzc4NCwgNzAsIDAuMDE2MTk5MjEwNjU4NjY5NDcyXSwgWzE2NjcwNTExODUuMjIxMjUzOSwgNzEsIDAuMDE1NTc2MjAyNDIyMzgwNDQ3XSwgWzE2NjcwNTExODkuMTg3ODY1LCA3MiwgMC4wMTU5NzcwMzQzNDUyNjkyMDNdLCBbMTY2NzA1MTE5My4xMTUyODU0LCA3MywgMC4wMTU0NDE3ODI3NzI1NDEwNDZdLCBbMTY2NzA1MTE5Ny4wNDE4MzM5LCA3NCwgMC4wMTU1Nzg0MTA1ODgyMDQ4Nl0sIFsxNjY3MDUxMjAxLjAyMzc4NiwgNzUsIDAuMDE1MzYzODI3MzQ3NzU1NDMyXSwgWzE2NjcwNTEyMDUuMTY0Mjc4MywgNzYsIDAuMDE1Nzg0OTU2NTE0ODM1MzU4XSwgWzE2NjcwNTEyMDkuMTAzNTA1LCA3NywgMC4wMTUzNjg1NjIxOTE3MjQ3NzddLCBbMTY2NzA1MTIxMi45ODI1NDEsIDc4LCAwLjAxNTU5MDEyODQ4ODgzODY3M10sIFsxNjY3MDUxMjE2LjkxNzQwMTgsIDc5LCAwLjAxNTUxMTExMTM1NjMxNzk5N10sIFsxNjY3MDUxMjIwLjgxMzIwODMsIDgwLCAwLjAxNTMyNjEwMDQwMTU4MDMzNF0sIFsxNjY3MDUxMjI0Ljc2NjgzODgsIDgxLCAwLjAxNTkyNTQwNzQwOTY2Nzk3XSwgWzE2NjcwNTEyMjguNzM4NTEzNywgODIsIDAuMDE1MjMzNTQ5Mjg5NDA1MzQ2XSwgWzE2NjcwNTEyMzIuNzEyNjQ5NiwgODMsIDAuMDE1ODMxNDQ0NDEyNDY5ODY0XSwgWzE2NjcwNTEyMzYuNzAyOTMxNCwgODQsIDAuMDE1OTE3NjkyMzMzNDU5ODU0XSwgWzE2NjcwNTEyNDAuNzE5MzQxLCA4NSwgMC4wMTU3MzI3MjQyMTk1NjA2MjNdLCBbMTY2NzA1MTI0NC44MTkzNzgsIDg2LCAwLjAxNjM3NDQ3MjUyODY5NjA2XSwgWzE2NjcwNTEyNDguODU5MTQ3NSwgODcsIDAuMDE2MDA1MzExMTYxMjc5NjhdLCBbMTY2NzA1MTI1Mi44MjgxNzUzLCA4OCwgMC4wMTYwMTc3NjI5NDQxMDIyODddLCBbMTY2NzA1MTI1Ni43OTkyNDczLCA4OSwgMC4wMTUzODQ3NzE4NjExMzU5Nl0sIFsxNjY3MDUxMjYwLjgzMTYxMTYsIDkwLCAwLjAxNTg3NjAxNTY0ODI0NTgxXSwgWzE2NjcwNTEyNjUuMjgwOTEsIDkxLCAwLjAxNjg2MTcwODgzNDc2NzM0XSwgWzE2NjcwNTEyNjkuOTc4NzYyMSwgOTIsIDAuMDE2MDU3ODE3MjY1MzkxMzVdLCBbMTY2NzA1MTI3My45MTI5NDEyLCA5MywgMC4wMTQ3NTc0MzIwNDM1NTIzOTldLCBbMTY2NzA1MTI3Ny44MzA5MDczLCA5NCwgMC4wMTU2NDY1MDIzNzU2MDI3MjJdLCBbMTY2NzA1MTI4Mi4wODA5NDI0LCA5NSwgMC4wMTY2MzgxMTEzMjMxMTgyMV0sIFsxNjY3MDUxMjg2LjAzNDQyNTMsIDk2LCAwLjAxNjI5NzQwMzcyMzAwMTQ4XSwgWzE2NjcwNTEyOTAuMDM1MTA3MSwgOTcsIDAuMDE1MzM0OTE1MzY5NzQ5MDddLCBbMTY2NzA1MTI5My45NDYzOTU0LCA5OCwgMC4wMTU1NjgxMTc2MTExMTAyMV0sIFsxNjY3MDUxMjk3Ljg2NTAzMzksIDk5LCAwLjAxNjQwMjY3NDgzODkwMDU2Nl1d", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/images?run=train%2Fyolov5s_results2&sample=0&tag=F1_curve": { "data": "W3sid2FsbF90aW1lIjogMTY2NzA1MTMwNS43MDgyNTksICJzdGVwIjogOTksICJxdWVyeSI6ICJibG9iX2tleT1XeUlpTENKMGNtRnBiaTk1YjJ4dmRqVnpYM0psYzNWc2RITXlJaXdpUmpGZlkzVnlkbVVpTERrNUxESmQifV0=", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/images?run=train%2Fyolov5s_results2&sample=0&tag=P_curve": { "data": "W3sid2FsbF90aW1lIjogMTY2NzA1MTMwNi4yMDk3MDU2LCAic3RlcCI6IDk5LCAicXVlcnkiOiAiYmxvYl9rZXk9V3lJaUxDSjBjbUZwYmk5NWIyeHZkalZ6WDNKbGMzVnNkSE15SWl3aVVGOWpkWEoyWlNJc09Ua3NNbDAifV0=", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/individualImage?ts=1667051305.708259&blob_key=WyIiLCJ0cmFpbi95b2xvdjVzX3Jlc3VsdHMyIiwiRjFfY3VydmUiLDk5LDJd": { "data": "iVBORw0KGgoAAAANSUhEUgAACMoAAAXcCAIAAABWc2ebAAEAAElEQVR4nOzdd3wUVdfA8bvpPaQSSCAQWgiEFnovioKAiKAoSBMFRKqiIFVELAgqIB0BEVREqYLSq3RCKKEmgVRIIz3ZJLv7/jG+86wpm93NpiC/7+f94+zMmXvPbIaH1xzuHYVGoxEAAAAAAAAAAACAfswqugAAAAAAAAAAAAA8SWgvAQAAAAAAAAAAwAC0lwAAAAAAAAAAAGAA2ksAAAAAAAAAAAAwAO0lAAAAAAAAAAAAGID2EgAAAAAAAAAAAAxAewkAAAAAAAAAAAAGoL0EAAAAAAAAAAAAA9BeAgAAAAAAAAAAgAFoLwEAAAAAAAAAAMAAtJcAAAAAAAAAAABgANpLAAAAAAAAAAAAMADtJQAAAAAAAAAAABiA9hIAAAAAAAAAAAAMQHsJAAAAAAAAAAAABqC9BAAAAAAAAAAAAAPQXgIAAAAAAAAAAIABaC8BAAAAAAAAAADAALSXAAAAAAAAAAAAYADaSwAAAAAAAAAAADAA7SUAAAAAAAAAAAAYgPYSAAAAAAAAAAAADEB7CQAAAAAAAAAAAAagvQQAAAAAAAAAAAAD0F4CAAAAAAAAAACAAWgvAQAAAAAAAAAAwAC0lwAAAAAAAAAAAGAA2ksAAAAAAAAAAAAwAO0lAAAAAAAAAAAAGID2EgAAAAAAAAAAAAxAewkAAAAAAAAAAAAGoL0EAAAAAAAAAAAAA9BeAgAAAAAAAAAAgAFoLwEAAAAAAAAAAMAAtJcAAAAAAAAAAABgANpLAAAAAAAAAAAAMADtJQAAAAAAAAAAABiA9hIAAAAAAAAAAAAMQHsJAAAAAAAAAAAABqC9BAAAAAAAAAAAAAPQXgIAAAAAAAAAAIABaC8BAAAAAAAAAADAALSXAAAAAAAAAAAAYADaSwAAAAAAAAAAADAA7SUAAABdTpw4MWrUqIYNG1apUsXMzEyhUCgUilq1askJiv/XtWvX0k83b948ecBjx46VfkAAAAAAAACTs6joAgAAwBMsOzs7ODg4LCwsISEhKyvL3t6+SpUq1apVa9mypbu7e0VXV1pKpXLUqFFbt26t6EJQkVQq1Y0bN27fvh0bG5uZmWlhYeHi4uLu7t60aVM/P7+Krg4AAAAAgIpBewkAgLJVq1atBw8eGHTJpEmTvvnmm+LOxsTEnD9//ty5c+fPn7948WJ6erp03NfX9/79+6Wo1AA5OTk//vjjTz/9dPLkyby8vCJz/Pz8+vfvP3z48CZNmpRPVSY3YcIEektPs/3792/atGnfvn3yn7IC3N3de/bsOXz48GeeecbMjF0BAAAAAABPEdpLAAA8GU6fPr148eJz587FxsZWbCUbN26cPn36o0ePdKeFh4cvWbJkyZIlXbp0Wbx4cVBQUPmUZyo3btxYu3atFFtaWr799ttdunRxcXGRjtja2lZcaShzp0+ffvfdd69cuaI7LTExcevWrVu3bvXz8/v8888HDRpULtUBAAAAAFDxaC8BAPBkuHDhwo4dOyq2hvT09GHDhu3cubPAcSsrKw8PD09PT5VKFRcXl5SUpFar5bPHjx9v1arVrl27+vbtW67lls7mzZvlePXq1SNHjqzAYlCe5s+f//HHH2s/w0IIMzMzNzc3T09PGxubhw8fxsfHa6/bCw8Pf+WVV95///1FixaVe70AAAAAAFQA2ksAAJSfr776qmnTpiWm1axZU88BHRwcMjIySleUvlJTU5977rlz587JR2xsbEaPHv3iiy927tzZyspKPp6VlXXw4ME9e/b8/PPPmZmZQgiNRpOUlFQ+dZrKmTNnpMDe3n7o0KE6MjUaTblUhPIwbty4VatWaR956aWXXn311eeee65KlSryQbVafebMmd27d//0009RUVHSwYSEhPIsFQAAAACACkR7CQCA8hMUFNS1a9fSjODo6BgUFNSqVavWrVu3atUqIiKiW7duJqquBKNGjdLuLb344ovLli2rUaNG4Uw7O7sXX3zxxRdfXLBgwccff7xu3br8/PzyKdKE7ty5IwX16tWztLSs2GJQPpYuXardW2rUqNHatWvbtWtXONPMzKxDhw4dOnSYP3/+smXLFi5c+Pjx43KsFAAAAACACkZ7CQCAJ0Pfvn179uzp7+9vZmYmH4yIiCif2ZcvX/7777/LH8eOHfvdd99pV1IkLy+vlStXvvHGGy+//HIZF2h6KSkpUuDk5FShhaCcXL58edq0afLHtm3b7tu3T37bVnGsra3ff//9119/fcCAAWVcIAAAAAAAlQjtJQAAngx16tSpqKkfPXqk/Wv3Xr16rVy5Uv/L27dvf/HixZiYmDIorQzl5ORIgUKhqNhKUD5Gjx6dm5srxdWqVdOn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yzvh//cJgQhIcGE1QSARFazWrdHWsS5YdTo61YGntT+nrU5VsNb+EO2o41ZbpS6tWm2ttB1LrdBNa7VUH2sp1JWpuIAYmWrEhUAFJBJAICE5zx/HHo9JyDnfEAiY9/s1f1zJuc59XQnxxZBPr/v+4x//7/r165Mkqa+vv/baq//7v++KXnbEiJGZbLBixYoNG9bvtFPvzc3csGH9ypUrMuORIys68CWMGDEyO87+kG/OkiVvZsctltt99wGlpf0zR1uC1xnZzszNmTHj7sxg1113mzbt7sGDh7Q5bRs/Aq2zvpmFL9cpPycjRrz/mTfffKP9vJTddv/+u+y2224t9pN7nfY3v+Vf/o5LXgIAAABgu5ZKJWVl6bKyLrhF24fPX/86NzPo23fns86a0M7M2tol22RHm1VRsdff/rYoSZLq6hc7/eLV1dXZ39d/+cvnbK4tJUlSW1vbgevvueeee+655+c+9/np0++67bZbMp988MGZm8tLofemUqkRI0bU1LySJEn2sUmdaKeden/840d8/ONHnH32xIkTz8r89vzFFxe+/vprw4ePCF1q7733yTxNqqmp6cUXFx5yyMc2N/OFFxZkjwGNGrV3B7adOXmWeRDOggXz2588f/5zmUFJScmeew5v8eqoUaOeeWZekiSLFr20cePGFgfaPnid53PeFd72ihUrFi9+NTP+/OdP31xbSpJk6dJt+t9jJ34zC9FZPyd77/3+ZxYseP6wwz6+uets2LAhm29HjRrV4tVt/OXvuIryTwEAAAAAPhRWrHjvf/g/fPiI1vdJy2poaFiw4PlttKfNOPjggzODpUtrs78I7iwrVizPjvfaq+Uvl3M9/fT/bMlCp5/+xez1syFhy9976KHv/f79ueeezf62vdMNGDDwq1/9/7MfRvefJMkRRxyZHT/55BPtzJw798k231W4Xr16fexjh2XGL764MPeJOC2sXr062yyrqg5v/ZynI474ZGbQ2Nj4zDMtn87V5rb799/lIx85ILrnD/4ctlen/vrXv7Z/qexT0zrlyUyd+M0sRGf9nOy//0dLS/tnxk899WSyec8883RjY+PmrrONv/wdl7wEAAAAAN1OQ8PGdl6dOfOBbXwzrtaOO+6E7PhnP7tz6y3U0NCwuZfeeafu4Ycf3MLrZ0/85D7QaAvf+6lPvffNefvtldkn92wNuceVOrD/ffcdPXToHpnxgw/+fnPf6oaGhj/84feZ8R57lO2zz77hjSZJkiTHHDM2e8GZMx/Y3LSZMx/IpoXsW3IdffSx2fFvf3vP5q6zaFH1Sy9VZ8ZHHvnJ4i17Wlo7/0k2NDT89re/af/tffq897iytWs757aWnfXNLERn/ZwUFxcfeeR7abC6+sVFi17a3Iq5f6y5f9xZ2/LL33HJSwAAAADQXQwZMjQzePXVmqVL277t25Ilb95++63bcFNt+8hH9j/ooEMy4z//+U/3339fJ148+31IkuTxxx9tc05zc/O1137z3Xff3dxFNmxYv2rVqvYXSqfTr7zycmac/QX6Fr43SZKPfOSAqqrDM+Obb/5O5rk1eWVu9pW1dOnSvG95+eW/Zcct9lCgz3/+3zODurq6//7vqW3O+fGP73jnnXf+Mf/0Nuc888y8ww8/OPN/5557dptzxo791MCBgzLjadP+++2323hq18qVK7K1ctCgwWPHfqr1nD322CObHB5//NHcEzNZzc3N3/3ujZlxUVFR5rlZUbl3w9vcz2GSJLfeetPf/76s/Utl/3TWrVu7bFn+P9m8OuubmSTJueeenf2zy9x1sLXO+jk57bTTi4reqx4333xjm2f7nnrqiSeeeCwzPuaYsW3+YHfil/8hJi8BAAAAQHdx+OGfyAyam5svv/zSurq6FhOeffaZiRO/vHbt2uyvaLvQf/7npTvttFNmfN111/zoRz/csGF962krVqy4444f/P73vyv8yvvuO3qXXXbJjO+6a9pTT7W8H9eqVasuvfTrjz32l3a+D6tW1Z166r98+9vfev7559q8I1ljY+NNN92YbT+5hyS25L0ZX//6JZlHRtXXrz777DMeemhmU1NTm/usr69/6KGZZ5995u9+d2/u53/yk6mnn/7Z3/72ntY/Bhn/+7+Lbr31psx48OAho0ePaXNa+/7t38aVl5dnxj//+c/uuedXLSb85je/nD79rsy4vLz81FPHdWCVjJ122umccyZmxvX1qy+44GvZu0FmLF++fPLkr9XXr858eM45Ezf3XKVzz/1qjx7vnUa66qrLn3/+udxXGxoavvnNK1944b2n8px44qc79ryo3Xfffe+93zuC8+CDM2fOvL/FhHXr1l1//ZR77vl13v8e99///Vvzff/732vnfm4F6sRvZiE66+dk1Ki9TzjhnzPj+fOf/9a3rsqeLsp4/vlnr7rq8sy4R4/ic8/9apvX2cZf/g5qi87rAQAAAAA7kH/6pyNHjdo7cySlunrhZz97ynHHHT9q1D49exavWLHir3+dm/k1+pAhQ4444sh7781zP66tbeTIissuu+ob37iiqWlTOp2+884f//a3v/nEJ47ca69RpaWlGzasX7p06YsvvvDCCwuam5snTbqw8Cv36NHji1/8j0w72bhxw+TJXzvssMMPPbRql112Xbt2zUsvVT/22KPvvrsuSZKJE8+7/fbbNnedjRs33n//fffff9/uuw/4yEf2HzVq71122bV3797r1q1bvPjVxx9/NPtwnX33Hf0v/3JyZ703SZJhw/a85prrL7548oYNG+rr66+++srbb/9+VdVhlZWjSkv7bdrUtHbtmtraJS+//LeXXnqpqWlTkiRjxx7X4iI1Na/ccMOU7373+n32GT169OiysmGlpf2am9MrVixfsOD5p5/+a/bwxwUXXNSx4lhc3POaa64799yz169f39zc/J3vXD9z5gNHHXXM7rsPWLly5Zw5f/7b3957sFafPn2uueb64uItenrNSSd95umn//rHP/7fJEn+9rdFn/3sKccff+KoUXun0+mXX375j398aMOGDZmZJ5zwz//yL/+6uesMHz7ioov+8/rrpyRJsnr1O1/5ytlHHHHkgQce3LdvnyVLljz88IPZ2DByZMUFF3y9wxs+88wvX3rp15MkaW5uvuaaqx944P5PfOKIAQMGvvvuuzU1L//lL7Mz53UmTvxq+2cKx4zZL/uf9qxZj8yZ8+ehQ4f27v3eHfMGDBh4882b/THenM76ZhaiE39OJk/+z5deqn7ttcVJkjz00B+eeWbeCSf8c1lZ+bp1a5999pmnnnoi+1P99a9fsueew7eHL38HJS8BAAAAQHdRVFQ0ZcoNEyeelbnX05o1a+67794WcwYPHnLjjbfMmfPnrthgS5/61AmlpaVXXHFp5jTGO++88+CDv++UK5922v/34osvzJr1SJIk6XR67tyn5s59KndCjx49Jk48b+zY49vJS1lvv73yL3+Z/Ze/zG7z1TFj9vvud2/d3LN5Ovzeww47/Mc/nnbJJRfV1i5JkmTFiuXZJ9O0qaioR5ufb2pqqq5eWF29sM1Xi4uLL7rokjafT1Ogffcdc911373iikszRz0WLXqp9UNx+vff5Vvf+va++47u8CoZqVTqiiuu3rRp05///KckSdavX9/mbRXHjv3U5Zd/I5VKtXOpU08dv3bt2jvuuL2paVNzc/Njj/3lscf+0mJOZeVe3/3u9zLHyDrmmGPGnn76F6ZP/3nmwwULnl+w4PkWc/7P/znti188I+8tK6+66luTJp23cuXKJEmampqWLFmSfaljj1LrxG9mITrr56Rfv34333zbRRdNqql5JUmS5cvf+vnPp7WY06NH8bnnnnfKKf/WznW28Ze/I+r6I64AAAAAwDYzbNied90141OfOqFHj5axoW/fnU89ddzdd/+qY3f62koOO+zj99zzwBe/eOauu+7W5oRBgwafdtrp0f5RVFR0zTXXTZp0YevLplKpAw886Ic//MkXvnBGO1cYMGDAf/3XlUcffWz2PnutVVRUXnTRJT/+8bRdd921s96ba9SovX/5y3u//vVLR46s2NycIUOG/uu/nnrbbT8cP/6zuZ///OdP/8IXzth7731b/yRk7LTTTscf/8/Tp/+6/d/CF+Kwww7/xS9+8+lPn5S922FW7969P/3pk2bM+HVV1WFbuEpGz549p0y54RvfuKaycq/Wr1ZW7nX11ddee+31PXvmPyb1hS+c8ZOfTDv00KrWJ7d2333Al798zrRp03Of49Ux559/wVVXfavNJwDtvfe+N95484UX/mch19lrr1EzZtzzta9NPuywwwcOHNT6W90BnfjNLERn/ZwMHbrHtGnTv/zlc3bffUCLl4qKig49tOonP5n27//+pbzX2cZf/g4n1eadPaG8vLy2trasrCy3cgMAAADb3ofyH+nvvvvu66+/3tycbm5ODxw4pKSkE34NStSqVauef/65v/99WWNjw2677TZo0JADDzxoe358SDqd/t//XbR4cU1d3TsbN27o06fPoEGDKytH7bnnnlty2cbGxoULF9TUvLJmzZp+/frtvvuA/fbbf9CgQaGLLFny5htvvL5s2bJ169Y2NTX16dN34MBB++yzT1lZ+VZ9b64VK1YsXLhg1apVa9bU9+jRY+eddx46dI+RIysGDx7S/hvXr1//yit/q62tratbtX79hl69evbrVzpixMh99tlnp516h/aQ1/r165977tm33lq2evXq/v37Dx489KCDDu7du5NXyXr11ZqXX/5b5kDPgAEDRo3au6KisgPXWblyxQsvLFixYsWGDet322338vJhBxzw0c59PllTU9OiRS/97W+LVq9e3bt37913H7DPPvsOG7ZFP9udq7O+mYXorJ+T5ubmBQvmL1ny5qpVb++0U++BAwcecMBHWzenQmylL3/jxg0rVvy9qChVVJQaPnx4nz59tvya24y8RNs+lP+fKwAAAOyIPpT/SJeXAGCHzktujgcAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAADAtlZU9P5vpZqbm7twJwDQVXL/BuzRo0cX7qQD5CUAAAAAtrXi4uIkSVKpJEmSxsaGLt4NAHSFzN+Amb8N5SUAAAAAyKO4uLikpCSVSiVJsn79uq7eDgB0gczfgKlUqqSkJPM/vNiByEsAAAAAdIF+/folSZJKJY2NjRs2rO/q7QDANrVhw/rGxsbM0aXM34k7FnkJAAAAgC5QWlqaJElRUSpJkrffXq4wAdB9bNiw/u23lyf/+Hsw83fijmUHO2wFAAAAwIdDSUlJv3791qxZ06NH0tSUXrnyrZ49e/bu3bdnz15FRf4n0QB8CDU3Nzc2Nqxfv66xsTFJkh49UqlUql+/fiUlJV29tTB5CQAAAICuUVZWVltbmylMzc3pxsbGxsZ3unpTALDVpVJJUdF7bamsrKyrt9MR8hIAAAAAXSOVSuUUplSSJOl0Op3u6m0BwFaTSiWpzAOXkiTTlrIf7ljkJQAAAAC6TCqVKi8v37hxY319/Zo1azZu3Lhj/pINAAqVuT1saWnpjnhPvCx5CQAAAIAuVlJSMnDgwIEDB27atKmpqampqamrdwQAna9Hjx49evQoLv4wpJkPw9cAAAAAwIdDcXHxh+OXbgDw4VbU1RsAAAAAAABgRyIvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAECAvAQAAAAAAEFDc1RvYgS1evHjevHlLly5taGjYY4899t1330MOOWTrLffOO+889dRTy5Yte+utt3r06DFgwIDKysqDDjqotLR06y0KAAAAAADQgrzUEY888siVV145d+7cFp+vrKycNGnSeeedl0qlOnG5hx9++Kabbpo9e3ZjY2OLl4qKig466KBLLrlk/PjxnbgiAAAAAADA5rg5XtjkyZNPOOGE1m0pSZKamprzzz9/7Nixq1ev7pS13n777fHjx5944ol//OMfW7elJEmam5ufeeaZOXPmdMpyAAAAAAAAeTm9FHP55ZfffPPNmXHPnj3Hjx9fVVVVUlJSXV09ffr0urq6JElmz549bty4hx56qGfPnluy1ooVK4477rgFCxZkPuzfv//xxx9/0EEHDRo0qLGxcdmyZc8///xf/vKXzkpZAAAAAAAAhZCXAubMmXPttddmxiNGjPjDH/4wZsyY7KvXXHPNuHHjZs2alSTJrFmzpkyZctVVV3V4rY0bN37qU5/KtKUePXpcfPHF//Vf/9W3b98W0zZt2vTII4+88847HV4IAAAAAAAgJJVOp7t6DzuGdDpdVVU1b968JEl69eo1b968/fffv8WcdevWffSjH62pqUmSZOedd66pqRk0aFDHlrv00kuvu+66JEmKiopmzJjxuc99bsu2H1ZeXl5bW1tWVrZkyZJtvDQAAACQyz/SAYDtjWcvFerRRx/NtKUkSSZMmNC6LSVJ0rdv3+uvvz4zXrt27dSpUzu21qJFi2688cbM+Pzzz9/2bQkAAAAAAGBz5KVC3XvvvdnxxIkTNzftM5/5zJAhQ1q/JeQHP/hBU1NTkiR9+vS5+uqrO3YRAAAAAACArUFeKtTMmTMzg2HDhuU+cqmF4uLi4447LjOeP3/+m2++GV1o/fr1P//5zzPjU045pX///vHNAgAAAAAAbC3yUkHq6+sXL16cGR9xxBHtT86dMH/+/Ohac+fOXb16dWY8duzY6NsBAAAAAAC2KnmpINXV1dnxqFGj2p+cOyH3jQX6n//5n+z4ox/9aJIkq1atuvXWW4888sg99tijpKRk8ODBVVVVF1988YIFC6IXBwAAAAAA2ELFXb2BHcOrr76aHQ8fPrz9ybkTct9YoGeffTY7Li8vv++++yZMmLBixYrsJ5cvX758+fKnn376xhtvPO2006ZOndqvX7/oKgAAAAAAAB3j9FJB6uvrs+Pddtut/cm77rprm28sUG5Jmjlz5rhx4zKfSaVSAwcOHDp0aI8ePTKvptPpX/ziF4cffvjKlSujqwAAAAAAAHSMvFSQtWvXZse9e/duf3KfPn2y4zVr1kTXqqury47PPffcdDrdt2/fb3/728uWLVu+fPnSpUvr6uruvPPOoUOHZuZUV1d//vOfb25uDq1y0003lbdr2bJl0Z0DAAAAAADdgZvjFWT9+vXZca9evdqfXFJS0uYbC5SbshobG/v27Tt79uyPfexj2U/269fvzDPPPO6444488sjXX389SZI//elP991337hx4wpfpb6+vra2Nro3AAAAAAAAeakguSeWGhoa2p+8cePGNt/YgbWSJLn22mtz21LWsGHD7rzzzrFjx2Y+vPnmm0N5qbS0tKysrJ0Jy5Yti56IAgAAAAAAugN5qSA777xzdpz3QFLuhH79+m3JWjvvvPPZZ5+9uZnHHnvsgQce+PzzzydJMnfu3DVr1hS+3OTJkydPntzOhPLycsebAAAAAACA1jx7qSClpaXZce6zkdq0atWq7LgDeal///7Z8eGHH577JKfWjj322Mygqalp/vz50bUAAAAAAACi5KWCVFRUZMeZxx21I3dCZWVldK3ctwwfPrz9ySNGjMiOV6xYEV0LAAAAAAAgSl4qyJgxY7Ljl19+uf3Jr7zySptvLNBHPvKR7HinnXZqf3LuhA0bNkTXAgAAAAAAiJKXClJaWjpy5MjM+Iknnmh/8uOPP54dH3DAAdG1DjrooOw49z57bcqdMGDAgOhaAAAAAAAAUfJSoU466aTM4I033qiurt7ctE2bNs2aNSszPuCAA/bcc8/oQlVVVUOHDs2Mn3vuufYnP/vss9lx7h38AAAAAAAAthJ5qVDjxo3Lju+4447NTbv//vuXLVvW+i2FKyoqyr5x0aJF8+fP39zM1atXP/jgg5nx8OHDO/CcJwAAAAAAgCh5qVCf/OQnDznkkMx46tSpCxcubD1n3bp1F198cWbct2/fCRMmtJ5zxhlnpP5h2rRpba41adKkXr16ZcYXXHBBc3Nzm9Muu+yytWvXZsZnnnlm4IsBAAAAAADoKHmpUKlU6oYbbsiMGxoaTj755Jdeeil3wurVq0899dSamprMhxdeeOHgwYM7tlZlZeX555+fGc+ePfv0009fs2ZN7oRNmzZdccUVP/jBDzIfDh48eNKkSR1bCwAAAAAAIKS4qzewIzn22GMvueSS6667LkmS11577cADDxw/fnxVVVVJSUl1dfXdd99dV1eXmXn00UdfdtllW7LWNddc8/TTTz/66KNJkvzyl7+cNWvWZz/72f3226+4uLimpuaee+7JdqxevXrde++9/fv337IvDgAAAAAAoCDyUsyUKVPWrVt32223JUnS0NAwY8aMGTNmtJhz1FFH3Xfffdm723XMTjvt9MADD4wbN27WrFlJkqxYsSJ7VinXgAEDfvOb3xxxxBFbshYAAAAAAEDh3BwvJpVK3XrrrQ8//HBVVVXrVysqKr73ve/Nnj17l1122fK1+vfv/8gjj/z4xz8ePXp061f79es3adKkhQsXHn300Vu+FgAAAAAAQIFS6XS6q/ewo3r11VfnzZu3dOnShoaGoUOHjh49+tBDD91Ka7344osvvPDC0qVLGxsbd99999GjRx922GHFxVvx8Fl5eXltbW1ZWdmSJUu23ioAAABAXv6RDgBsb9wcr+MqKioqKiq2zVr77bfffvvtt23WAgAAAAAAaIeb4wEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABBQ3NUb2IqOPfbY1157LZVK1dTUdPVeAAAAAAAAPiQ+zHnpzTffzOSlrt4IAAAAAADAh4eb4wEAAAAAABAgLwEAAAAAABAgLwEAAAAAABAgLwEAAAAAABBQ3NUbaMN//Md/dMp1li9f3inXAQAAAAAAIGt7zEvTpk1LpVJdvQsAAAAAAADasP3eHC+dTnf1FgAAAAAAAGhpezy9lJFKpRQmAAAAAACA7c32mJd22223urq6JEmuuOKKDj+HKZ1OH3PMMa+//nqnbg0AAAAAAKC72x7z0sEHH/ynP/0plUq98cYbw4cP7/B1iou3x68OAAAAAABgh7Y9Pnvp4IMPzgyeeeaZrt0JAAAAAAAALWy/eSmdTi9atGjjxo1dvR0AAAAAAADetz3mpUMOOSRJklQq1dTUNH/+/K7eDgAAAAAAAO/bHvNSZWVl//790+l0kiTPPvtsV28HAAAAAACA9xV39Qbadsoppzz//PNJktTV1XX4ItOnT1+/fn2n7QkAAAAAAIDtNi/99Kc/3fKLVFVVbflFAAAAAAAAyLU93hwPAAAAAACA7Za8BAAAAAAAQIC8BAAAAAAAQIC8BAAAAAAAQEBxV2+gDccee2ySJOXl5XfddVdX7wUAAAAAAIAP2B7z0pw5c1KpVGVl5eYmTJ48OUmSgQMHXnrppdtwXwAAAAAAAGyXeSmvW265JdOf5CUAAAAAAIBtzLOXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACCju6g1s1qpVq775zW9uyYSsK6+8spM2BQAAAAAA0N2l0ul0V++hpaKiolQq1c6EzJ7bn5OrqampE7bVzZSXl9fW1paVlS1ZsqSr9wIAAADdmn+kAwDbmx3y5nipVKrAtrQdxjMAAAAAAIAd2nZ6czxZCAAAAAAAYPu0Peal2bNnd/UWAAAAAAAAaNv2mJeOOuqort4CAAAAAAAAbdshn70EAAAAAABAV5GXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACJCXAAAAAAAACCju6g3swBYvXjxv3rylS5c2NDTsscce++677yGHHNLVmwIAAAAAANi65KWOeOSRR6688sq5c+e2+HxlZeWkSZPOO++8VCq1lZa+5ZZbLrjgguyHX/rSl6ZNm7aV1gIAAAAAAGjNzfHCJk+efMIJJ7RuS0mS1NTUnH/++WPHjl29evXWWLqmpuayyy7bGlcGAAAAAAAokNNLMZdffvnNN9+cGffs2XP8+PFVVVUlJSXV1dXTp0+vq6tLkmT27Nnjxo176KGHevbs2YlLp9Pps84669133+3EawIAAAAAAETJSwFz5sy59tprM+MRI0b84Q9/GDNmTPbVa665Zty4cbNmzUqSZNasWVOmTLnqqqs6cfU77rhjzpw5SZKMGTOmurq6E68MAAAAAABQODfHK1Q6nf7617+eGffq1euBBx7IbUtJkvTv3//++++vrKzMfPid73xn+fLlnbX6G2+8cfHFFydJ0qdPn9tuu62zLgsAAAAAABAlLxXq0UcfnTdvXmY8YcKE/fffv/Wcvn37Xn/99Znx2rVrp06d2lmrn3POOWvWrEmS5Oqrr66oqOisywIAAAAAAETJS4W69957s+OJEydubtpnPvOZIUOGtH7LlvjpT3/68MMPJ0ly8MEHX3DBBZ1yTQAAAAAAgI6Rlwo1c+bMzGDYsGEtbouXq7i4+LjjjsuM58+f/+abb27husuWLZs8eXLmyj/5yU969OixhRcEAAAAAADYEvJSQerr6xcvXpwZH3HEEe1Pzp0wf/78LVz63HPPfeedd5IkmTx58kEHHbSFVwMAAAAAANhC8lJBqqurs+NRo0a1Pzl3Qu4bO+AXv/jF/fffnyRJZWXlN77xjS25FAAAAAAAQKeQlwry6quvZsfDhw9vf3LuhNw3Rq1YseJrX/taZjx16tTevXt3+FIAAAAAAACdRV4qSH19fXa82267tT951113bfONUV/96ldXrlyZJMmZZ545duzYDl8HAAAAAACgExV39QZ2DGvXrs2O854i6tOnT3a8Zs2ajq34u9/97te//nWSJIMGDfrOd77TsYu046abbrrpppvambBs2bJOXxQAAAAAAPgQkJcKsn79+uy4V69e7U8uKSlp842Fq6urO/fcczPjW2+9Ne95qQ6or6+vra3t9MsCAAAAAAAfevJSQXJPLDU0NLQ/eePGjW2+sXCTJk36+9//niTJSSed9LnPfa4DV8irtLS0rKysnQnLli1rbm7eGksDAAAAAAA7NHmpIDvvvHN2nPdAUu6Efv36Rdd66KGH7rrrrsx7b7/99ujbCzR58uTJkye3M6G8vNzxJgAAAAAAoLWirt7AjqG0tDQ7rqura3/yqlWrsuNoXqqvr58wYUJmPGXKlGHDhoXeDgAAAAAAsLXJSwWpqKjIjl9//fX2J+dOqKysDC109dVXv/nmm0mSfPzjH//KV74Sei8AAAAAAMA24OZ4BRkzZkx2/PLLL7c/+ZVXXmnzjYWoqanJrrL33nu3OWfTpk3Z8W9/+9vHH388Mx43btz1118fWg4AAAAAACBKXipIaWnpyJEjFy9enCTJE0880f7kbO9JkuSAAw7o2IorV65cuXJl3mlr1qxZs2ZNZvzWW291bC0AAAAAAIDCuTleoU466aTM4I033qiurt7ctE2bNs2aNSszPuCAA/bcc89tsTkAAAAAAIBtRV4q1Lhx47LjO+64Y3PT7r///mXLlrV+S4F+97vfpfPJHKLK+NKXvpT9/LRp06LLAQAAAAAARMlLhfrkJz95yCGHZMZTp05duHBh6znr1q27+OKLM+O+fftOmDCh9Zwzzjgj9Q+CEAAAAAAAsMORlwqVSqVuuOGGzLihoeHkk09+6aWXciesXr361FNPrampyXx44YUXDh48eFvvEgAAAAAAYCsr7uoN7EiOPfbYSy655LrrrkuS5LXXXjvwwAPHjx9fVVVVUlJSXV19991319XVZWYeffTRl112WZduFgAAAAAAYKuQl2KmTJmybt262267LUmShoaGGTNmzJgxo8Wco4466r777uvVq1dXbBAAAAAAAGDrcnO8mFQqdeuttz788MNVVVWtX62oqPje9743e/bsXXbZZZtvDQAAAAAAYFtIpdPprt7DjurVV1+dN2/e0qVLGxoahg4dOnr06EMPPbSrN9VpysvLa2try8rKlixZ0tV7AQAAgG7NP9IBgO2Nm+N1XEVFRUVFRVfvAgAAAAAAYJtyczwAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUAAAAAAAAC5CUA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zc3NW7IEAAAAAADwoSQv5VdaWpod19XVtT951apV2XFn5aUnn3zy05/+9Lp165IkKSoquvPOO08//fQtvObkyZMnT57czoTy8nLHmwAAAAAAgNaKunoDO4CKiors+PXXX29/cu6EysrKLV/9ySefPPHEE9euXZskSSqV+tGPfvSlL31pyy8LAAAAAADQMfJSfmPGjMmOX3755fYnv/LKK22+sWOeeuqpE088cc2aNUmSpFKpO+6448tf/vIWXhMAAAAAAGBLyEv5lZaWjhw5MjN+4okn2p/8+OOPZ8cHHHDAlqz71FNPnXDCCdm2dPvtt59zzjlbckEAAAAAAIAtJy8V5KSTTsoM3njjjerq6s1N27Rp06xZszLjAw44YM899+zwinPnzs2eW0qS5Pvf//7EiRM7fDUAAAAAAIDOIi8VZNy4cdnxHXfcsblp999//7Jly1q/Jeqvf/3rCSecUF9fn/nw+9///le+8pUOXw0AAAAAAKATyUsF+eQnP3nIIYdkxlOnTl24cGHrOevWrbv44osz4759+06YMKH1nDPOOCP1D9OmTWtzrXnz5h1//PHZtnTbbbedd955W/4lAAAAAAAAdAp5qSCpVOqGG27IjBsaGk4++eSXXnopd8Lq1atPPfXUmpqazIcXXnjh4MGDO7DQc889d/zxx69evTrz4W233fbVr351CzYOAAAAAADQyYq7egM7jGOPPfaSSy657rrrkiR57bXXDjzwwPHjx1dVVZWUlFRXV9999911dXWZmUcfffRll13WsVUuuuii7HV69ux5yy233HLLLXnf9corr3RsOQAAAAAAgCh5KWDKlCnr1q277bbbkiRpaGiYMWPGjBkzWsw56qij7rvvvl69enVsiaampuy4sbExexwKAAAAAABgO+HmeAGpVOrWW299+OGHq6qqWr9aUVHxve99b/bs2bvssss23xoAAAAAAMA2kkqn0129hx3Sq6++Om/evKVLlzY0NAwdOnT06NGHHnpoV2+qM5WXl9fW1paVlS1ZsqSr9wIAAADdmn+kAwDbGzfH66CKioqKioqu3gUAAAAAAMC25uZ4AAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLAAAAAAAABMhLFGT9iy++fedPG5cu7eqNAAAAAAAAXay4qzfADqDxrbdeO+3zSWPjqmnT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", "ok": true, "headers": [ [ "content-type", "image/png" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/individualImage?ts=1667051306.2097056&blob_key=WyIiLCJ0cmFpbi95b2xvdjVzX3Jlc3VsdHMyIiwiUF9jdXJ2ZSIsOTksMl0": { "data": "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AED5tnHjxilTpsgvq1ev3r59+8KKHR0df/vtN4U9Y7Ra7fTp06W2m5vb1q1ba9asWVjx+PHj5Whn48aNly9f1ivYtm3bwYMHpbazs/Nff/2lvAOTr6+v8lYxRsnXrVevXqdOnZSLq1Sp4uHhYeklhBCff/653B49evTLL79stKxXr14ffPCB/HLevHnSqncKqlat+uuvv7q5uRkecnNz080Ot2zZYtmgDSQlJcltczbCMZNarf7yyy/llx999FGPHj2MVg4fPnzkyJHyS91PtTDNmzdfvHix0b2pAgICdB/+on8+JqnV6vnz58svlyxZovsdvUylUi1btiwsLMxkh6tXrz537pzUHjFixNSpU43uviOECA4O/uOPP+RpQOZ8dJ988onuhj26Bg4cKM82i4uLO378uGHNypUrb968KbX9/Py2b99epUoVhcsFBwfXrVtX781FixbJqwjOmjXrpZdeKuz0sLCwFStWSO28vLyvv/5a4VoKiukhL24m/3IWlqyPd+fOnR07dkjtOnXqtG7dWq+gWB88AAAAAHhIEC8BAMoftVqdkJCwdevWF1544YknnsjPz5cPffjhh7qzZ/Q8++yzRr8Nl23duvXixYtSe8yYMQrZkmTy5MlSQ6vVrl27Vu+o7nZBEyZMUM6WrCZvb6Nw40UUGRkp52Tu7u66AZKhcePGyd/C37p1S2+vJkMTJ0709vYu7Gi3bt3k1QV1tzWyju4377bakkoIsXXr1tu3b0vtatWqjRkzRqF41qxZcpa2b9++CxcuKHc+c+ZMhT/ZZ555Rm4X/fMxadu2bXfu3JHaLVq00FsvUZejo+NHH31kskP5Z8TNze3jjz9WLm7UqJG8k9D69euVk8vg4OBRo0YpFDz77LNy2+hHp/vzO3v27MqVKysPz5Barf7qq6+kdtWqVd9++23l+l69ejVr1kxq//HHH5ZeTlJMD3lxM/mXsxCiTZs2derUkdo7duyQH0VDq1atknfO0w2lZMX34AEAAADAw4N4CQBQDnTq1Emlw8HBISAgoEePHj///LNWZ6W1cePGvfDCCwr9PP/888oX2rx5s9w2XN3LUOPGjeVft//nn390D+Xn5+/evVtqOzg4vP766yZ7s468PFpkZOTJkyeL4xJ79uyR2/3791f+ztrR0VH3o9u7d69CsUql0g1IDNnb28uxXHx8fG5u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A7Off/45Ly9Pag8ePLiwPKwsP3gAAAAAUI4QLwEA8K9OnTrJ7Z07dxalq/DwcHkJppMnT969e7dIIysCR0fHDz/8sH379tLL/Pz8w4cPW9SD7uwHcz4W3ZqytjDXuHHj5Pa6devMSYNMepA+H2UtWrSQ23v27FEuLigo2L9/v0KBDX/cbE53otvOnTtzc3Ot6KS0bnDcuHFysnL37t3FixfbpFsvLy+5fe/ePeXio0eP2uSiRqlUqsGDB0vtvLy8X375RWp///33co1cYKgsP3gAAAAAUI4QLwEA8K8ePXrI7a+//rooXTk6Onbp0kVqFxQUWLoenc21a9dObusuzmYO3TWm1q5dKy0EV5j8/PwffvjB6LllweDBgytWrCi1CwoKhg4dqrtDlTmysrL0khXde1y1apXyZJHk5OS1a9fKLx999FGLrl66OnbsKLd1v8o36s8//1R+0oKDgxs2bCi1r127tmXLliIP0GaCgoIaNWoktRMTE3/88UcrOmnZsqW8+OHOnTsjIyNtNj5FderU0d2O6N13371586alnWzevFnvHd2ZdidPnlQ+vYh715mku6+StN/SxYsXjxw5Ir3Trl27WrVqFXZuWX7wAAAAAKAcIV4CAOBf/fr1k7+UPHz48MKFC4vS25gxY+T27Nmzz549W6TBFU1R9vupX79+27ZtpXZGRsa0adMUir/88suoqCipHRoa2q1bNwtHWrycnZ2//fZb+eWpU6eee+45eUEtk65du/bII4/s2rVL983u3bvL+1HduHFDOZicMmWKvC3NI488ortYX9n32GOPBQcHS+2jR4/+8ccfhVXm5+dPmjTJZIfjx4+X22PHjlVOLkuY7s/vhAkTYmNjLe3B0dFx7NixUlur1Y4YMcLSLNNq8+bNq1ChgtTOyMjo2bNndHS0medmZGS8+OKLs2fP1ns/PDxcbq9du1YhRl2zZk1xrwhas2ZNeUbm4cOHL1++rJt36oZPRpXlBw8AAAAAygviJQAA/mVvb//BBx/IL8eMGWPO9jyXL19+9dVX79y5o/d+ly5d5CW2cnNze/TooZwwJSUlnTp1yqIBp6WlDRw40ORMgps3b65evVpq29nZNW3a1KKrCCHefvttuT1//vzCZq5s3bpVd5+nsWPH2tmVuf/YeOKJJ95880355Zo1a7p3725yJ6GcnJzPPvusadOm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pV279g0aNPT29k5LSz916sT+/f+o1Wq1umDWrJl2dva686UkN2/e0M2HwsIaNm/eolKlys7OztnZWQkJCVevXjl58oTR6Kso50p27945efLEgoL7s2Rq1KjZpk27oKBge3v727ejdu3aERNzRwgRGXl+1KgRy5atNLqW2rlzZ959953c3PvZUnBwSOfOXYODQ3Jzc86fP79nz66cnJwZM6Y89dQzhQ2jDFq+fKmULQUFBXfu3DUkpEpubk5k5P3bEUJERp576603Fy5c4uBQLN9CBweHNGzYqGbNWl5eXiqVXWJi4tmzp48cOSRNj9u+fZurq9v770812c/cuXOkbKl+/bA2bdpVrFgpPz//4sXIv//eJv2RHT58aPnypSNGvG709LVrV3/zzXz5Zb169du3fzQwsGJmZsbZs2f27dubkpLy3nvjH320UxHvNyUleeTIV27evCG99PT0bNfukXr16nt4eCQlJR89evjo0cNCiJycnAkT3vrii69atGhVxCsCyoiXUNKIlwAAAAAAAMqIpUu/dXZ2mTZtZufOXeU3n3/+xQ0b1n300Uzp5ZIlC7Ozs7OyMtu1e2Tq1Bne3hXkysGDX3r99eHXrl0VQmzfvu3ll181XODuyy/nytnSI490mDjxfd1l9F544cUrVy5PmDBOWl3t888/bdYsPCgoWLeHVatWSvmQk5PTRx/Nbt/+UcMbyc/PP3jwwLlzZ/TeL8q5Qojo6NszZ06TsiU3N/dJkyZ36/aYbsFrr41avHjR998vF0Jcu3b1q6/mjR8/ybD/Dz6YLmdLAwcOfu21UbqrxkVH35448Z2rV6/89NMPhmMos6Sl3gYOHPTaa6N1bycm5s7EieOlZeLOnj3944/fDxnykg2v6+jo2K9f/379nqpXr77h0aioqGnT3rtwIVIIsXHjul69Hm/WLEKht7i4e2vW/O7m5j516oyOHTvrHho8+KXRo0fExd0TQvz006qBAwcZzsSKiYmZP//+zCR7e4dJkybrrj34/PPi1q2bEye+c+PG9XXr/rDqdu/TarUffDBNzpaeeOLJN94YqzuewYOHHj9+bNKk8WlpqQUFBTNnTvvpp9892eUexYldbmCCwZzOoiJeAgAAAAAAKCO0Wu0HH3ykmy1J+vbt165de6l9/PixyMjzDRs2+vTTz3WzJSGEt7f3++9Pk18aLn93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YJb798eR4zgznDln5swc7jnv9+t5vbpmznXf9zWHMXvOh+/3W1+38cb9Ro0avdVWY7L/rHLWrLdnzPjvkiWLV62qKS8v69mzctCgQZttNnzYsM2yvEOLdt1192z6mOXFtGkvvP769NT6sMMmtPhZf48ePb773f/90Y/OCCGsWrXqrrtu//a3j2+yZ/XqmjvuuDW13nzzLQ4//IgWH3faaT945JGHUwnE5Mk3tT9eWrt27cyZb82ZM3vJkiWrV6+urKzcaKONxozZup1/BG2TrzczS5Mn/zm1KCsrO/XU01vc8+UvH3H77X+bOfOtEMIdd9x6/PEndu/evW2Pa9X8+fOmTHkotd5zz713262Fz+FLSkpOP/2MY4/9ZgihoaHhllsmn3POpA46z4ZJvJSzgw466KCDDnr77benTp06b968tWvXDh48eMyYMTvvvHOr195444033nhjNk8ZMGDApZde+tOf/vTNN9988cUXFy5cuGLFioqKir59+2655ZY77bRTlv9e6RAdEy8BAAAA0Anq6mqfeuqpKVMefO65ZxctWtR8Q0VF90MOOfTYY789cOCgzj9ei1aurP7LX26+++47Fy5s4a9i9+vXf9999/v614/adNMhOd125sy3HnzwgSeffPytt2Y0NDQ037D99mOPPfY7u+8+LvN9Zs+edd111zzxxGO1tbXNXy0pKdlyy60OO2zCl750eH6vTamuXnHTTTf+4x9/X7JkcZOX+vfv/81vHnPEEV/JMBSnvr7+9ttv/dvfJqdqUJrr06fvHnuMO/HE7204vw/rk84DQghf/nLLmVAIYe+9x/fr13/x4kWpS5onIk8//dTq1atT68MOm7C++/Tr13/vvfd5+OEHQwjTpr3w4YdL+/bNIY9MW7x40YMP/vuxx6a8+uora9asab5hyJChX//6UV/60uFlZS18nr/bbju2+p0QwjPPvJDTqfL1ZmZj6dKlL700LbUeP37fdJVbc4cfPuHyyy8NIdTU1Dz77NPjx+/bhsdlY8qUh9PrDD/+VlttPWbM1qkc7rHHHj3zzLoW/4y6qiL6UfNr1KhRo0aNan1f+5SUlIwZM2bMmDEd/aBWRXELVUw5ES8BAAAAbRPHYd686P33u37nk4ED4003jTu6xcvbb7/9wx+elmHDmjWr77zztoce+vfFF//sM5/ZtWNPk4Xnnnv23HPPXrbsw/VtWLx40W23/W3o0GFf+9o3crrz+eefO2PGfzNseOmlF0877eSvfe3rp5wysaSkpMU9Dz/84KRJ57QYDqU0NDS8/vr08vJuzSOi9lyb8vzzz/3oR2eu781ZtGjRL395xQMP/OvKK69qMflYtWrV6af/b7opWYuWLfvwvvvuPfjgQzf8eOnJJx9PLQYOHNSkk1tjZWVln/nMLv/61z9DCDNm/Pf99xc0+dHS9wkh7L57pvZRu+22Rypeqq+vf/rpJw8++NA2HPtPf/rDLbf8JcOGuXPfu+yynz788L8vueSyPn36tOERbZCvNzMbTz/9ZH19fWq9226Zat0aVxE98cRjHRcvPfnkY6lFeXn5Tjt9JvORUvHSsmUfvvrqy0166HVt4iU6iXgJAAAAyFVdXbjqqvLrritfuLDrZ0spm2wSn3BC7Smn1HbC34Dv1q3btttut9VWWw8YMLCysrKmZtXs2bOefPLxBQsWhBCWL1/2wx9OvPHGm4cPH9HhR1m/Bx98YNKkc+vrP5qA0rdv3z322HP06M379OmzalXNvHlzX3315ddeezVu39+NHjly1DbbfHrEiJFVVX0aGuoXLvzghRdeSIcuf/3r5Kqqvt/+9nHNL5w9e1bjfGjrrT+9886fGTRocEVFRU3NqkWLFr311oxp015YubI6v9emPPLIw+eee1Z6PMyoUaN3333cppsOKS0tfffdd6ZMeWjevLkhhOnTX/ve90644YY/du/eo8kdLrvsp+kfs3fv3nvuuffmm2/Rp0+f+vqG6uoVc+bMmT791bfempH9O1lAK1dWp37eEMJ2222fefN2241NJSIhhBkz/tskEUmHjv369R8yZGjG+3z8oBkzZhx8cK6n/oRUS8bNN/9U3759y8vLli798PXXX3vyycfXrl0bQnj++ak//vHZv/rVr5s0PBw6dGgIYfny5elhUanvtEce38xsNE55t9tubIadQ4cOSxdLZc6G22nGjI9+7bfccquKiooMOz/5O/Bf8RJ8rPm/m9v2v+bESwAAAEBO6urCYYd1f+qp0kIfpFMtXBhddFG3KVNK77xzdcclTCNGjPzmN4/Zd9/9Kit7NXlp4sQf/u1vf/m///tVfX19TU3Nz39+ya9//duOOkdr3n575kUXnZ/KlqIoOvbY7xxzzLeaZyQffPDB7bffUllZmev9e/bs+Y1vHP3FLx7WYoQ2ffpr5513dqpl3A03XPe5zx3cvPnen//8x1Q+1K1bt0su+fmee+7d/D61tbVPP/3Uq6++nMdrQwjvvffuhRdOSmVLPXtWnn32uQce+NnGG0466Xu//e21f/rTH0IIM2e+dfXVvzzjjLMbb5g/f959992bWu+++7if/OSSXr16N3/Q/Pnz7rrrjja8vZ1s1qy30+tWhxUNGzas8YWN3/yGhoY5c2Y339aioUOHlpSUpDorNj5ATkpKSvff/8D/+Z+vbr/9Ds1nZS1evOgnP5n0zDNPhxD+859n7rvv3kMO+USN1G23/T2EcP31195ww28bf6c98vVmZv24malFaWnpkCGttLgcOnRoKl6aM2d2HMcZpovdf/99997799mzZ69Ysbx79+59+vQdPXrzsWN3/OxnP5eh/14IYfHiRcuXL0uts/jxP94wa9aszJu7GPESWYlC/ImvcideAgAAAHJy1VXlxZYtpT35ZOnVV5efdtp6e6a1x8iRoyZPvnV9rd5KS0uPPPKbJSWlv/jFZSGE55+fOnPmW6NHb94RJ2nVZZf9ND0C56yzzl1fg7gBAwacdNLJbbj/r351Tffu3df36tZbb/N//3fdUUd9bcWKFfX19bfd9rdTTmnaVHDq1P+kFocfPmF9n6qXl5fvvff4vfcen8drQwiXX/6zVatWhhAqKiquuuqaT3962yYbysrKv/vdk1etWnXbbbeEEO688/ZvfOOYTTfdNL3h+eefSy1KS8vOO+/CFrOlEMLgwZuedNL3W3xpgzJ37tz0etCgwZk3N96QLtNJWbx4cfq3rtX7lJWV9+vXPzUSrMl9snfCCd/N8HvYr1//yy775UknHffqq6+EEP72t780iZc6Qr7ezFwf169f/wxzwtKPe+mlF0MINTU1S5YszhAUPffcs+l1dXV1dXX13LnvPfbYI9de+3+HHvqlk08+tUePpll1k/OELH78gQMHRVGUKtKYN6/lAWZdVcv/FoG8Ey8BAAAA2YvjcO21rXzI2LVde215u2dht6y8vHx92VLaEUd8Jf2h6tNPP9kh52jNK6+8NG3aC6n1fvsdsL5sqT0yfKafMmjQ4COO+Gpq3eL7sHjx4tRis81G5Pr09lw7Y8Z/U+UsIYSjjjq2ebaU9r3vnVJVVRVCaGhouPPO21o8QFVV1UYbtTCZKVlWrlyZXle19mlj4w2NLwwhNO5GWFXV+qCj9K0ytDHMrNXfw/Ly8hNO+G5q/cYbry9durRtD8pevt7MXB/X6rNCCL175/C4Hj16DBgwsH///uXlH/8LZe3atXfcceuxx35j/vx56zlP49+BVo5UXl6ejqna9uMnl3iJVuTrf8aIlwAAAIDszZsXLVpULPOWWrRwYTRvXsHegdLS0s98ZpfUevr01wpyhgcffCC9PvrobxXkDCGEXXfdLbWYM2d288+O00NZXnnlpVzv3J5r77//vtSirKzsq1/9eoadPXr02H//A1PrZ599psUDLF265N1338n1DBuamppV6XXmYTkhhIqKjxOdJn+sNTU12d+n8a1WrVqVeWd77LDDTt26dUutp09/teMelJKvNzPXx2XzhjdO41IFfM03HHzw5y+++NK///2+KVOe/Pvf77vnngceeeSpG2/881e+cmT6EXPmzJ448ZQVK1a0dJ7GvwOthH+hs34HNkDiJXK3/naWGYiXAAAAABIk3XLqgw/eL8gB0qVLm246ZKutxhTkDKHR+9DQ0LBo0cImr2611dapxb/+9c/rr/9NTp+tt+fal16allpsv/3Y3r1bbmqXts02H9U2zZw5Y/Xqjz83Tx8ghHDGGae1OOEpQdasWZNeNy5VaVE6qmlyYQhhzZrV2d8nhNCtW3mL98mvsrKyPn36ptad8I9kvt7MXB+X3Rv+8eNWr276uP79+9977wOTJv1k//0PHDBgYPr7paWlW2219cSJZ/z+9zcNHvxRi8hZs97+3e+ubek8jX8HWh8wlD5S4wuLgdlLdIY4Fi8BAAAAOdh007h//7iYC5g22STedNOO6Y63zptvvvHwww+++ebrc+bMWbFieU1NTX19ffNtLf7t/k7w9tszU4utt96mQx/04YdLH374oWnTnn/77ZmLFy9atWrV2rVrW9zZ/K044oivpEco3XDD9TfffNOuu+6+006f2X77sZtvvkVpaabhYe259r//fTO1GDlydKs/4MYb90st6uvrFy1aNHTosNSX228/9lOf2jJ1q9mzZx133LEjRozcY489x47dcbvttuvbN2Ht8hoXvtTWtjK3rPEfcZOKmcbVKq3eJ4Swdm1ti/fJ1Zo1a5566omnn35q5swZCxYsWLmyOj0CqokVK9rYhS97+Xozs39cqmAouzf848d1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H/75n/70Jy++OC1u/iFaCLW1tVdeeVk6+2lcD9Gea1POOOOs1Mio5cuXHX/8sffdd099fX2L51y+fPl9991z/PHfahKT/O53133jG1+5447bmv8apLz55htXXfXRB/0DBw4aM2brFrdtOKIoSnfzq62t/cEPTm3S1a26esWZZ57+3nsfzRX7+te/2a9fvxZvdeyx30lP5PrFL66YMuWhxq82NDT8+tdXPfjgA6kvd9hhxz333LsNBy4pKUnHhM8/P/X3v7++yS9DbW3t73533f/9369SmzPcaptttklvuP763yxatLAN52ksj29mNvbaa/zYsR8VMD3wwL+uuebqJm/Fww8/lI6devfufcwx325+k2eeeepb3/rmAw/8a32p8OLFiy+44MeNqyFPOeW00vV8Nn3SSd8vLf2oGmnSpHNffHFa41fXrl174YXnvfLKS6kvP/e5Q4pt8FIIobhqtWizqKV/yWVv2bJMr+qMBwAAANA59txzry22+FSqJGX69Fe/8pXDDjjgoC222LK8vGzhwoX/+c8zqY9QBw0aNG7cXrfffmthTzty5Khzzpl0/vk/rq+vi+P497+//o47bt1jj70233yLqqqq1atr5s2b99prr7zyyssNDQ2nnnp69ncuLS09+uhvp7KTNWtWT5x4yq677rbzzrv07btRdfWK11+f/vjjj61atTKEcOKJ37vmmqvXd581a9bcffedd999Z79+/T/96W232OJTfftu1KNHj5UrV86a9fYTTzyWHvK01VZjPv/5L+Tr2hDCsGGbXXTRpWeeOXH16tXLly+/4ILzrrnm/3bZZdfRo7eoqupdV1dfXb1i7tz3Zsz47+uvv15fXxdC2H//A5rcZObMt37+80uuuOLSLbccM2bMmCFDhlVV9W5oiBcu/ODll1987rn/pKf4nHbaD9qcOJ500vELF77f+DvpGWAhhCOO+GKT/eeff/GnP71t25618867HH30t/70pz+EEObPn3f00Ufuu+8B22yzTXl5t1mz3r7//n8uX/cX4Xfccedjjz1ufffp06fP+edf9MMfTqyvr1+zZvXZZ5+x004777rrHn369Hn//QX//vf97777Tmpn//79zzvvwradNoRwzDHffvzxR1Pv829/+5uHH35w/Ph9Bw8evHr1mjlzZj/22CPvv78ghHD44Uc8/fSTCxbMX999+vXrv+eee6ea9U2b9sIXvvC5gQMH9erVK4o+KhW46aa/ru/a9cnXm5mlSZN+ctxxx6Y64/3pT3945JGHDzzwoAEDBi1b9uHTTz+VnpZUWlp2wQWX9OnTp8WbvP769PPO+1FFRcW2226XmgVVWVlZX9+wdOmSV1995bnnnm3cDPO73z1ljz32XN95hg8f8YMf/PDSSy8JISxb9uF3v3v8uHF7jR27Y2Vlz/fee+/++/+Z/jUeOXLUaaed0c4fP4nES3SGzNVL4iUAAACAzlFSUnLJJT8/8cTjUp/hrlixIj3LJG3gwEGXXfbLRx55uBAHbOrAAz9bVVX14x+fnfog+8MPP/znP/+Rlzt/7Wtff+21Vx566N8hhDiOn3nm6WeeebrxhtLS0hNP/N7++x+UIV5KW7x40aOPTnn00Sktvrr11ttcccVV65vL0uZrd911t+uvv/Gss34wd+57IYSFCz+4995Mb05JSctVGvX19dOnvzp9+qstvlpWVvaDH5zVvHwqe/Pnz8uQi6TLX9KybHG2Pied9P2amppbb/1rCKG2tvaBB+574IGm46l22GGnSy+9ory8PMN9xo3b69xzz7/00otXr14dQnj++anPPz+1yZ5Bgwb9/Oe/aE/bwK233ua0035w5ZWXpYp13nprRvPWdvvuu//pp59xxBFNa+yaOOOMs+fMmZ2qeIvjOMN7nr18vZnZGDx40yuvvOrMMycuWLAghPDOO3NuuOH6Jnu6d+9+1lnn7rHHuMy3WrNmzdSpz02d+tz6NlRW9jrttNMPPfRLme9z+OFHVFdXX3vtNfX1dQ0NDY8//ujjjz/aZM/o0ZtfccWvehfl9JfCl7iSOOnEO3viJQAAAIANxLBhm/3pT5MPPPCzzVtCVVb2OvzwCX/+8y0bVJenXXfd/bbb/n700d/aaKONW9wwYMDAr33tG7nmHyUlJRdd9LNTTz29+W2jKBo7doff/OZ3Rx11bIY79O/f/0c/Om+fffZL99lrbtSo0T/4wVnXX3/jRhttlK9rG9tii0/99a+3n3HG2SNHjlrfnkGDBn/xi4dfffVvjjjiK42/f+SR3zjqqGM/9amt1tccrHv37gcddPDNN//tsMO+vL6bb4CiKDr99B/+6le/3nrrTzd/dciQoaeddsY11/w2mzzg4IM//6c//XX8+H2bZydVVVVf+cqRN99866c+tWU7D/w///O1K6+8avTozZu/NHz4iHPOOe+nP72srKz18GaTTTb54x9vPuusc8aN22vQoME9evRowwe5TeTxzczGlltudfPNf/uf//laVbOPjMvLy8eP3/emm/76uc8dsr7LR40a/fnPf2Ho0KEZHjFgwMBvf/v4v/719lazpZSjjjr2d7+7ceedd2levdevX//vfOf/3XjjzY1nuRWVqMXOnjB06NC5c+cOGTKk57HXr61r2GvJvT967KO/QFF+y7Wbbz8+p7sdemi49971vrr//uHBB9tzWAAAAOiy0v8fevO/4J9oq1atmjNnTkND3NAQb7LJoIqKphPa6QRLlix58cVpCxbMr61du/HGGw8YMGjs2B0qKioKfa71iuP4zTffmDVr5tKlH65Zs7pnz54DBgwcPXqLzTbbrD23ra2tffXVl2fOfGvFihW9e/fu16//NttsO2DAgJxu8t57777zzpz58+evXFldX1/fs2flJpsM2HLLLYcMyfRJd/uvbWzhwoWvvvrykiVLVqxYXlpa2qtXr8GDNx05ctTAgYMyX1hTU/PWW/+dO3fu0qVLampWd+tW3rt31YgRI7fccsvu3XvkdIYNzdy5773++vRFixbW1tb2799/xIhRbZsgtXz58hdfnPbBB++vXFm90UYbDx48eOzYHdtfr9PEjBn/ff316R9+uLSsrLx///4jR47aoILefL2Z2aitrX3xxRfmz5+/dOmSyspeAwYMHDt2h+aZ0/pUV6+YOXPmggXzlyxZvHr16tLS0srKXhtttPFWW43ZdNM2lpotWrTwlVdeXrhw4erVNRtv3G/o0GHbbbd9+2fUrVmzeuHCBSUlUUlJNHz48J49e7bzhp1JvETL8hsv7b13ePzx9b56+OHhjjvac1gAAADossRLANBVJTpe0hyPzqA5HgAAAAAAdBniJbLyiSadUc6/NuIlAAAAAADoMsRLtCYf3RPFSwAAAAAA0GWIl+hwcSxeAgAAAACArkO8RO6i1rc0tmZNqK3NtEG8BAAAAAAACSJeohXxR93x2t4jL3PpUhAvAQAAAABAooiX6HDiJQAAAAAA6ErES3Q48RIAAAAAAHQl4iWy0njcUhTl9msjXgIAAAAAgK5EvEQr4rYPXfqIeAkAAAAAALoS8RIdTrwEAAAAAABdiXiJrESNipiiKMqws7lW46Xe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DBpvGD16dK7PanzJ8OHDM28eMWJEer1w4cJcn5UX7a1eisxeAgAAAACAJBEvZWXrrbdOr2fMmJF581tvvdXihVn69Kc/nV5379498+bGG1avXp3rs/JCczwAAAAAACgq4qWsVFVVjRw5MrV+8sknM29+4okn0uvtttsu12ftsMMO6XXjPnstaryhf//+uT4re+kKo7hZdzzxEgAAAAAAFBXxUrYOPfTQ1OKdd96ZPn36+rbV1dU99NBDqfV222232Wab5fqgXXbZZfDgwan1tGnTMm9+4YUX0uvGHfw6U1vjJbOXAAAAAAAgkcRL2ZowYUJ6fe21165v29133z1//vzml2SvpKQkfeEbb7zx0ksvrW/nsmXL/vnPf6bWw4cPb8Ocp7xod/WS2UsAAAAAAJAk4qVs7b333jvttFNqfd1117366qvN96xcufLMM89MrSsrK0844YTme4499thonRtvvLHFZ5166qndunVLrU877bSGhoYWt51zzjnV1dWp9be+9a0cfpg2iD8qNoqbhUGa4wEAAAAAQFERL2UriqKf//znqfXatWu/8IUvvP766403LFu27PDDD585c2bqy9NPP33gwIFte9bo0aNPPvnk1HrKlCnf+MY3VqxY0XhDXV3dj3/841//+tepLwcOHHjqqae27Vm5al5qlDle6tOnw44CAAAAAAAUQlmhD5Ak++2331lnnfWzn/0shDB79uyxY8ceccQRu+yyS0VFxfTp0//85z8vXbo0tXOfffY555xz2vOsiy666LnnnnvsscdCCH/9618feuihr3zlK9tss01ZWdnMmTNvu+22dI7VrVu322+/vU+BYpy6urBqVaYN661eWlcOFSLN8QAAAAAAIEnES7m55JJLVq5cefXVV4cQ1q5dO3ny5MmTJzfZM378+DvvvDPd3a5tunfv/ve//33ChAkPPfRQCGHhwoXpWqXG+vfvf+utt44bN649z2qPT1ZVtUBzPAAAAAAA6GI0x8tNFEVXXXXV/fffv8suuzR/ddSoUb/61a+mTJnSt2/f9j+rT58+//73v6+//voxY8Y0f7V3796nnnrqq6++us8++7T/Wa1KVxg1mb2UuTNeEC8BAAAAAECXo3qpLQ466KCDDjro7bffnjp16rx589auXTt48OAxY8bsvPPOrV5744033njjjVk+KIqi44477rjj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CqG1eKlbt1BR0WFnAgAAAAAACioZ8dK111770ksvpUKjnXba6brrrttxxx2bbzvwwAPPOOOMadOmnXDCCVOnTg0hvPTSS7/5zW++//3vd/qRu7jM8ZLOeAAAAAAA0IUlozne5ZdfnqpbOvDAAx9//PEWs6W0HXbY4fHHHz/wwANDCHEcX3HFFZ10ymKSh3jpk/0MAQAAAACApEhAvDR9+vR33nknhNCnT58///nP3bt3b/WSioqKP//5z3379g0hvPPOO6+99lpHH7J4pEKhfFYvRWYvAQAAAABAkiQgXpo2bVpqMWHChE022STLqzbZZJMjjjgitX7xxRc74mDFTHM8AAAAAAAoWgmIlz744IPUYuzYsTldmN6fvgP5Il4CAAAAAICilYB4qba2NrWoqKjI6cJu3bo1uQNtFn1yVFI+4iWzlwAAAAAAIJESEC8NGDAgtZgxY0ZOF7711lupRfYt9WhdFIU8Vy+ZvQQAAAAAAEmSgHhp8803Ty1uu+22+vr6LK+qr6+/9dZbU+stttiiQ05WxDTHAwAAAACAopWAeGn33Xfv06dPCGH27Nnnn39+llddcMEFs2bNCiFUVVXtvvvuHXe84iReAgAAAACAopWAeKm0tPSoo46K4ziO40suueTMM89cu3Zthv1r16794Q9/ePHFF4cQoig6+uijS0tLO+uwXVbjBnb19WHlykybs4qX0sOcIs3xAAAAAAAgSRIQL4UQJk2a1Ldv3yiK4ji+/PLLt9xyy4suumjatGm1tbXpPbW1tS+88MJPfvKTLbfc8oorrojjOITQt2/f8847r3AH75pWrGhlg+olAAAAAADowsoKfYCs9OvX78477/zc5z6XqluaM2fOpEmTJk2aVFpa2qdPn549e65atWrZsmWpyUxxHEdRFELo3r37nXfe2a9fvwKfvsvJ3BkviJcAAAAAAKBLS0b1Ughh/Pjx991335AhQ9LpURzHdXV1ixcvfvfddxcvXlxXV5eqWEoVOQ0dOvS+++7be++9C33wLiLdwC6O8hUvxa1vAQAAAAAANjyJiZdCCPvss8/LL7989tln9+/fP45bDifiON5kk01+9KMfvfzyy+PHj+/kExaJfFcvmb0EAAAAAABJkozmeGl9+/a9+OKLJ02a9Mwzzzz99NNvvvnm0qVLq6ure/XqtdFGG2255Za777777rvv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B8jKK6+88oc//CGEMHDgwDPPPDObSy699NL3338/hHD88cePGTOmY89XDOIQQlhR3zvDljZWL0Wa4wEAAAAAQJIkI1668sor//jHP0ZRdOmll2Z5SWlp6S9/+csoimpqan7zm9906PGKR8fMXgIAAAAAAJIkAc3x4jj+xz/+EUIoKyv7zne+k+VV3/nOd8rLy+M4vvPOOzvydMVlpdlLAAAAAABQ9BIQL7366qtLliyJomjPPffcaKONsrxqo402Gj9+fAhh4cKF06dP78gDFoUoxCHP1UtmLwEAAAAAQCIlIF567bXXUotdd901pws/85nPNLkD7bE2Ll8Td8+woa3VS2YvAQAAAABAkiQgXpo/f35qMWzYsJwuTO+fN29ens9UlFZl7IwXNMcDAAAAAIDikIB4qaamJrXo0aNHThd27/5Rqc3KlSvzfKbiE4VQXS9eAgAAAAAAkhAv9e3bN7VYtGhRThem9/fu3Tu/RypOmQcvhVzjpdjsJQAAAAAASKQExEsDBgxILaZOnZrThen9m2yySZ7PVJTyHC+lRWYvAQAAAABAkiQgXvrMZz4TQojj+P777//www+zvGrp0qX/+te/UuuxY8d2zNGKy8oOipcAAAAAAIBESUC8NHz48M033zyEsHz58rPPPjvLq84+++zly5eHEDbbbLOtttqqA89XJOJQ3ZDf2Uua4wEAAAAAQCIlIF4KIXzve99LLX77299OmjSp1f3nnXfeb3/72xBCFEXf/e53O/ZwRaOjmuMFzfEAAAAAACBJkhEvnXjiicOHDw8hxHF80UUX7bHHHnfffXddXV2TbXV1dXffffcee+xx8cUXp74zbNiwk08+ubOP20VljpfKy0NFRaedBQAAAAAAKJiyQh8gKxUVFXfdddeee+65atWqOI6fffbZL3/5y927d99+++0HDx7cq1ev6urq+fPnv/TSS6tXrw4hxHEcQujVq9ddd93VvXv3Qh+/K4ham71UVRUiZUgAAAAAAFAEkhEvhRC23377f/7zn1/96lcXLFgQQojjuKam5tlnn228J5UqRVEUQhg0aNAtt9wyduzYQhy2a6quzzR7KefOeLHZSwAAAAAAkEjJaI6Xstdee02bNu2oo44qLS3NsK2srOyYY4558cUX99prr047WzHI3ByvrYOXgqInAAAAAABIlsRUL6UMHDjwj3/840UXXXTHHXc8+uijr7766uLFi1esWNG7d+9+/fptu+2248ePnzBhwpAhQwp90i6iUYVR3GpzPAAAAAAAoBgkLF5KGTZs2P/+7//+7//+b6EPUkSijqteAgAAAAAAEiVJzfEorOqGvM5eCmYvAQAAAABAIomXyFaHNcczewkAAAAAAJJEvER2Ys3xAAAAAACAEBI6e+nNN9/897///cwzz7z77rtLlixZtWrViBEjHnroofSGOI5XrFgRQigpKenVK1MoQvaq6/MaL8Wa4wEAAAAAQCIlLF76z3/+c8455zz88MPp78RxHEIoLS1tvK2urm6rrbZ6//33S0pK3nrrreHDh3f2QbuchrhkVZzf2UvrRJrjAQAAAABAkiSpOd5FF1205557Pvzww6lIKY7jOI6jlsKJ8vLy448/Po7jhoaGm2++udNP2gWtqe+ZeYPmeAAAAAAAUCQSEy9deOGF5513Xl1dXerLysrK8ePHf+UrX4nX02Pta1/7Wmpx7733dtIRu7RVdZlKl4J4CQAAAAAAikYy4qWnn376/PPPTxUqDR06dPLkyUuWLJkyZcpf//rXEEKLBUxjxowZOXJkHMdTp05dtWpVZ5+4y6nJf7xk9hIAAAAAACRSMuKlM888M7XYaaedXnrppa997WtlZa1Pjdp5551DCHV1da+++mrHnq8I1NR3XPWS2UsAAAAAAJAkCYiXFixY8OSTT0ZR1KNHj9tvv71v375ZXrjNNtukFv/973876nBFo6a2V+YNmuMBAAAAAECRSEC89MQTT6QGLB122GGbbbZZ9hf2798/tVi8eHGHnKyYdGT1EgAAAAAAkCQJiJfmz5+fWuy22245Xdir10cFNytXrszzmYrPqrzPXorNXgIAAAAAgERKQLy0atWq1CIdF2Wpurq6bRfSXObqpSgKla3ETxkubuuFAAAAAABAISQgXkr3uPvggw9yunDOnDlN7kCb1WSsXqqqCpGUCAAAAAAAikMC4qVhw4alFk888UROFz7++OOpxdZbb53nMxWfVRmrl9o0eElzPAAAAAAASKQExEt77rlnt27d4ji+//77Z8+eneVVr7322jPPPBNC2HjjjceOHdtxxysSrVYvtYO6JwAAAAAASJIExEs9e/Y88MADQwh1dXVHHXVUbW1tq5c0NDScdNJJIYQoir7yla90+BGLQE19pvlV7YuXAAAAAACAJElAvBRCuOCCC6IoCiE89dRT++6776xZszJsrq6unjBhQqqTXnl5+VlnndVJp+zSVnVg9RIAAAAAAJAkZYU+QFZ23HHHU0899Re/+EUURU899dRWW211+OGHf+ELX0gPVaqrq5s+ffp777338MMP33DDDUuWLAkhRFH005/+ND26ifboyOZ4AAAAAABAkiQjXgohXH755e+9996tt94aRVFtbe2tt9566623pl6K43jOnDnbbrtt+stUqdPxxx9/2mmnFezEXUtNfYfFS5HZSwAAAAAAkCTJaI4XQoii6JZbbvnZz35WVvZxJJZKklJhUhzHcRynvl9WVnb55Zdfe+21hTlrV7SqzuwlAAAAAAAghATFSyk//OEP33rrrVNPPXXAgAGpMCleJ7Whb9++J5544owZMyZOnFjQk3Y1ea5eWvfnBQAAAAAAJE5imuOlDRs27Morr7zyyitnzJgxbdq0RYsWLVu2rGfPnv369dt666132GGHSLO1fIvjDp295M8LAAAAAACSJAHx0urVqz/44IMQQhRFw4YNS39/iy222GKLLQp3riIS15Y2hNIMGzTHAwAAAACA4pGA5ng33XTTyJEjR44c+fWvf73QZylSDWtbiSHFSwAAAAAAUDwSEC8tXLgwNVrpkEMOKfRZilS8Jt/xktlLAAAAAACQWAmIlzbeeOPUYtCgQYU9SdHq2Ools7IAAAAAACBREhAvDR48OLVYsWJFYU9SjOIQQmjIe/USAAAAAACQWAmIl8aNG1dWVhZCeOGFFwp9liIVm70EAAAAAACsk4B4qX///gcccEAcx3fffffixYsLfZxi1AHVS2YvAQAAAABAUiUgXgohXHHFFT169Fi+fPm3v/3t+vr6Qh+n6DSsLc+8oXfv9tze7CUAAAAAAEiSZMRLY8aMueGGG7p163bPPffss88+L774YqFPVFzijNVLlZWhtLTTzgIAAAAAABRYK03PNhB/+tOfQgjf+c53rrnmmqeeemqnnXbadttt99xzz80337yqqio1mSmDo48+ulOO2WU1ZJy91JbBS7HmeAAAAAAAkFTJiJeOPfbYKIpCCFEUxXEcQnj55ZdfeeWVLC8XL7VT5tlLbYmXGos0xwMAAAAAgCRJRrzUWJRLGhHHcU77aSJVZJT/6iUAAAAAACCxEhMvxdqpFU7m2UviJQAAAAAAKCrJiJdmzZpV6CMUtQ6oXhIWAgAAAABAUiUjXho+fHihj1DUOnb2UtC9EAAAAAAAkqSk0AcgAWKzlwAAAAAAgHU29OqlOXPm/OMf/3j++ecXLlxYWlo6YMCA3Xff/Qtf+MImm2xS6KMVkQ6uXgIAAAAAAJJkw42X1qxZM3HixOuvv76+vr7x93//+9/36NHjjDPOmDRpUqHOVmzyP3spNnsJAAAAAACSagONl9asWfO5z33usccei+M4hBBFH4/nieN41apVF1544Ztvvjl58uTCnbFYxHUlob40w4b2Vi9FZi8BAAAAAECSbKCzlyZNmvToo4+GdcFS3EgURVEUxXF8yy23XH/99YU+adeXuXQpaI4HAAAAAABFZkOsXlq0aNEvf/nLdLC01157ffWrXx09enRdXd0bb7xx0003vfzyy6mEadKkSd/5zndKSjbQkKxryDx4KbQxXtIcDwAAAAAAkmpDDGYmT568du3aVFu8q6666tFHH/3ud7/72c9+9vOf//zpp5/+4osvTpw4MfXq+++//69//avQ5+3i4g6vXtIcDwAAAAAAkmRDjJeeeOKJEEIURUcdddT3v//95hsuv/zyvfbaq/FmOk7HVC8BAAAAAABJtSHGSy+//HJqcdppp61vzymnnNJkMx3E7CUAAAAAAKCxDTFeWrx4cQihZ8+e22+//fr27LHHHqnFokWLOulYxapDqpdis5cAAAAAACCpNsR4admyZVEU9e/fP8OeAQMGpBbLly/vlEMVr1ZnL/Xu3b4HRGYvAQAAAABAkmyI8VJdXV0Ioby8PMOe0tLSxpvpOJmrlyoqQkVFp50FAAAAAAAovA0xXmKD0rA2U85n8BIAAAAAABQb8RKtiDNWL7U1XjJ7CQAAAAAAkkq8RCsaMs5eykf1ktlLAAAAAACQJJmSg8JasmTJhRdemJdt5513Xp4OVYwyz17SHA8AAAAAAIrNhhsvLV269IILLsi8J47jbLaJl9oj7ojqpVhzPAAAAAAASKoEN8eLoiiKWumrFosx2q3Dq5da+0MEAAAAAAA2KBto9ZJYaMPR8bOXAAAAAACAJNkQ46UpU6YU+gh8LDZ7CQAAAAAAaGRDjJfGjx9f6CPwsczVS336tO2uqtMAAAAAACCpEjx7ic4R13Z09ZLZSwAAAAAAkCTiJTKJG1rZoDkeAAAAAAAUG/ESmcStNbFrY7zU6n0BAAAAAIANlXiJTDoqXgIAAAAAABJLvEQmnREvRWYvAQAAAABAkoiXyCSOW8l+VC8BAAAAAECxES+RSYdVL5m9BAAAAAAASSVeIpO4oZUN+ahe0hwPAAAAAACSRLxEJpmrl8rKQvfunXUUAAAAAABgwyBeIpPM8VJVVYiUHgEAAAAAQJERL5FJHGeKj9reGa/VmU4AAAAAAMCGSrxEJq1WL+WBAigAAAAAAEgU8RKZxA2ZXs1PvAQAAAAAACSKeIlMOqx6SXM8AAAAAABIKvESmXRGczwAAAAAACBRxEtkEseZBiOJlwAAAAAAoAiJl8hE9RIAAAAAANCEeIlMOipeynxfAAAAAABgAyZeIqNOqF6KMvXfAwAAAAAANjTiJdpOczwAAAAAAChC4iXaTrwEAAAAAABFSLxE27UjXjJ7CQAAAAAAkkq8RNvlqXrJ7CUAAAAAAEiSskIfIMFmzZo1derUefPmrV27dtNNN91qq6122mmnQh+qU2mOBwAAAAAARUi81Bb//ve/zzvvvGeeeabJ90ePHn3qqad+73vfi6KOqsj55S9/edppp6W/POaYY2688cYOelar2h4vxZrjAQAAAABAUmmOl7OJEyd+9rOfbZ4thRBmzpx58skn77///suWLeuIR8+cOfOcc87piDu3TX6qlzosigMAAAAAADqC6qXcnHvuub/4xS9S6/Ly8iOOOGKXXXapqKiYPn36zTffvHTp0hDClClTJkyYcN9995WXl+fx0XEcH3fccatWrcrjPdsjikJlZaEPAQAAAAAAdDrxUg4eeeSRiy++OLUeMWLEvffeu/XWW6dfveiiiyZMmPDQQw+FEB566KFLLrlk0qRJeXz6tdde+8gjj4QQtt566+nTp+fxzm3Tu3coUfwGAAAAAADFRz6QrTiOzzjjjNS6W7duf//73xtnSyGEPn363H333aNHj059efnll3/wwQf5evo777xz5plnhhB69ux59dVX5+u27ZGfzngAAAAAAEDSiJey9dhjj02dOjW1PuGEE7bddtvmeyorKy+99NLUurq6+rrrrsvX0//f//t/K1asCCFccMEFo0aNytdt2yN/8ZLZSwAAAAAAkCTipWzdfvvt6fWJJ564vm1f+tKXBg0a1PyS9vjDH/5w//33hxB23HHH0047LS/3bD/VSwAAAAAAUJzES9m65557Uothw4Y1aYvXWFlZ2QEHHJBav/TSS++++247nzt//vyJEyem7vy73/2utLS0nTfMF/ESAAAAAAAUJ/FSVpYvXz5r1qzUety4cZk3N97w0ksvtfPRJ5100ocffhhCmDhx4g477NDOu+VRu+KlOM7bOQAAAAAAgM4lXsrK9OnT0+stttgi8+bGGxpf2AZ/+ctf7r777hDC6NGjzz///PbcKu/yVr0Umb0EAAAAAABJIl7Kyttvv51eDx8+PPPmxhsaX5irhQsXnnLKKan1dddd16NHjzbfqiNojgcAAAAAAMVJvJSV5cuXp9cbb7xx5s0bbbRRixfm6vvf//6iRYtCCN/61rf233//Nt+ng7QvXtIcDwAAAAAAkqqs0AdIhurq6vS61Sqinj17ptcrVqxo2xPvuuuuv/3tbyGEAQMGXH755W27SQZXXnnllVdemWHD/PnzM98hf9VLmuMBAAAAAECSiJeyUlNTk15369Yt8+aKiooWL8ze0qVLTzrppNT6qquuarVeqg2WL18+d+7c9txBczwAAAAAAChO4qWsNK5YWrt2bebNa9asafHC7J166qkLFiwIIRx66KFf/epX23CHVlVVVQ0ZMiTDhvnz5zc0NGS8Q77PBAAAAAAAJIF4KSu9evVKr1stSGq8oXfv3rk+67777vvTn/6Uuvaaa67J9fIsTZw4ceLEiRk2DB06NHN5U7vipdjsJQAAAAAASKqSQh8gGaoaZSlLly7NvHnJkiXpda7x0vLly0844YTU+pJLLhk2bFhOl3emvFUvRWYvAQAAAABAkoiXsjJq1Kj0es6cOZk3N94wevTonB50wQUXvPvuuyGE3Xff/bvf/W5O13YyzfEAAAAAAKA4aY6Xla233jq9njFjRubNb731VosXZmPmzJnpp3zqU59qcU9dXV16fccddzzxxBOp9YQJEy699NKcHtce7YuXNMcDAAAAAICkEi9lpaqqauTIkbNmzQohPPnkk5k3p/OeEMJ2223XticuWrRo0aJFrW5bsWLFihUrUuv333+/bc9qG9VLAAAAAABQnDTHy9ahhx6aWrzzzjvTp09f37a6urqHHnootd5uu+0222yzzjhcIeQ4VSoDs5cAAAAAACBJxEvZmjBhQnp97bXXrm/b3XffPX/+/OaXZOmuu+6KW5Mqoko55phj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683cdttt7777bqw+7bTTmjVrlsLDAAAAAAAA1JZ4qaYikcjVV18dq8vKyoYPH/7BBx/EN1i7du2xxx67cOHC2Mvf//73HTt2rN1Yw4cPDxcw3XfffRdccEE0Go1v8Mgjj4SxU9u2bf/0pz/VbiAAAAAAAIBU5TX0DWSTAw888Pzzz7/qqquCIFiyZEn//v2PO+64QYMGNWnSZP78+ffcc09xcXGs5dChQy+88MK6jHX33XcPHjw4tjPeVVdd9eijj44cObJbt25FRUXPPPPMSy+9FGuWl5d37733brPNNnV7MgAAAAAAgJoSL6XmiiuuKC0tvemmm4IgKCsru/fee++9997N2uy///6PPfZYQUFBXQbq3r37008/fcwxx3zyySdBEPzvf//7y1/+slmb5s2b33777YcffnhdBgIAAAAAAEiJeCk1kUjkxhtvPOqoo/785z+/9tprm73bq1evs84668wzz4xEInUfa4899nj33XfHjx8fvy4qpqCg4Igjjrjmmmt69+5d94GqNW7cuJKSktatW9dT/5DVTBBIwASBBEwQ2BKzAxIwQQCA76HIZof6UHOLFi2aO3fusmXLysrKOnfuvPPOOw8cOLA+BiorK5sxY8aSJUtWrlzZpk2brl277rvvvu3atauPsQAAAAAAABITLwEAAAAAAJCCnIa+AQAAAAAAALKJeAkAAAAAAIAUiJcAAAAAAABIgXgJAAAAAACAFIiXAAAAAAAASIF4CQAAAAAAgBSIlwAAAAAAAEiBeAkAAAAAAIAUiJcAAAAAAABIQV5D3wD1aPHixXPnzl22bFlZWdn222/fp0+fAQMG1MdAmzZtmjFjxpIlS1auXNm2bdsuXbrsu+++bdu2rY+xIF0yMEFKS0vfe++9Dz/8sKioaOPGjW3btu3cufOee+7ZrVu39A4EaZexryCQjTI8QdasWTN79uzly5evWLEiNzd32223LSws3GOPPVq3bl1/g0LtZGx2LF68+M0331y2bFlJSUnTpk3btWu366679uvXr2nTpvUxHGSXysrK2bNnL1iw4PPPP2/RokWXLl323nvvjh07NvR9AQBbnShbo+eee27w4MFV/3MXFhbedNNNlZWV6RqopKTkrLPO2mabbTYbqKCg4Nhjj12wYEG6BoI0qu8J8s4771x00UWDBw/Oy6s+wt9ll10mTJiwadOmtDwOpFfGvoJUdd1118WPOGrUqPobC2onwxPkmWeeGTZsWH5+ftURc3JyBgwY8NBDD6V3RKi1zMyOTZs23XDDDX369Kn2W6yWLVuefPLJCxcuTMtYkBaVlZUfffTR/fff/8c//vHggw+O/9m5Pr7V+eqrry655JLOnTtvNjtyc3MPPvjgN954I+0jAgCNmXhpK3TOOedEIpFqf+KKOeCAA9asWVP3gd5+++0ePXokGKhFixb33ntv3QeCNKrvCXLhhRcm6DzeD3/4w48++iiNjwZ1l7GvIFUtWLCgefPm8WOJl/i+yeQEKSoqGjFiRNIvJWPHjk3LcFBHmZkdn3zyye677550XjRr1uzOO+9Mx2NBXZ100klt2rTZ0udq2r/V+eSTT/r165dgduTn5//jH/9I76AAQGNmc7ytzfjx48O//s7Pzz/uuOMGDRrUpEmT+fPnT5o0qbi4OAiC6dOnjxgxYsqUKdX+MWwNLV269Igjjli2bFns5Y477jhy5Mgddthh1apVU6ZMmTFjRhAEpaWlv/rVr9q3bz9s2LA6PxmkQQYmyPr168O6oKBgzz333Hvvvbt06dK6deuioqJZs2ZNnjy5vLw8CII333xz6NChM2bM6NmzZzoeDuoqY19BqopGo6eeeuqXX36Zxj4hvTI5QVatWnXwwQe/8847sZdt2rQZNmzYHnvssd12223atGn58uVvv/32Sy+9tHbt2jo+FKRFZmbH2rVrhw4dumjRotjLgoKCo446asiQIe3bt9+wYcP8+fMfffTR5cuXB0GwYcOGU045pUWLFj/96U/T8XxQe2+99VbG/l+9du3aww8//P3334+97NKly89//vPevXuvXbv2pZdeevrpp6PR6KZNm37/+9+3bdv2lFNOycxdAQBbuYbOt0in6dOnh/9le/To8f7778e/u2bNmoMOOihscMkll9RlrP333z/s6rzzzttsv4uHHnoo3Pe8Xbt2q1evrstYkBaZmSBnnXVWEASDBg26/fbb165dW7XBggULBg4cGA504IEH1m4gSK9MfgWpasKECbGe+/btG45i9RLfH5mcIBs3bgzXZ+Tm5v7pT39av3591WabNm16+umnLROnwWVsdsS+xYrZbbfdqu7CvXHjxrFjx4ZtOnToUO3cgUyK///5Lrvs8qtf/Wr8+PH19K3OqFGjwp5/8YtffPXVV/HvvvTSS+G+fPn5+TZRAADSQry09aisrAx/Z11QUPDOO+9UbbN+/frCwsJYm5YtW65YsaJ2Yz355JPhd64jR46sts2tt94atjn33HNrNxCkS8YmyJ133jllypTEbdasWdO7d+9wgsyYMaMWA0EaZfIrSFUff/xxq1atgiBo3rz5tGnTxEt832R4gpx//vmxfnJycu6///463DjUu4zNjk2bNoW/GW/WrNnHH3+8pZaHH354+HXkgQceqMVYkEaXXXbZLbfcMnv27C+//DL2kcWLF9fHtzrz5s3LycmJdbvPPvtUVFRUbfP000+HQ//0pz9N19AAQGOWE7C1ePnll+fOnRurR48evdtuu1Vt06JFi7/97W+xev369RMnTqzdWP/4xz9iRX5+/mYnsYfGjBkT3sOECRM2bNhQu7EgLTI2QU466aTDDjsscZs2bdpceuml4cv4vBYaRCa/glT129/+dt26dUEQXHrppb169UpXt5AumZwgH3744TXXXBOrzzzzzBNOOKF2/UBmZGx2LFy4cPXq1bH6yCOP3GGHHbbU8vTTTw/rN998sxZjQRpdeOGFp59++uDBg5s1a1avA1133XWVlZWx+sYbbwyjpniHH374UUcdFasfeuihTz75pF5vCQBoDMRLW49HHnkkrMeMGbOlZkcffXSnTp2qXlJzq1atih2tFATBMcccE/ZW1ejRo2NFaWnps88+W4uxIF0yNkFq6OCDDw7rhQsX1t9AUBMNOEHuvPPO2BeIH/7wh+ecc05a+oT0yuQEueWWWyoqKoIgaN68efwfIsD3U8ZmxxdffBHWO+64Y4KW8e+GiRRs3crLy5944olYveeee/7whz/cUsv4efroo4/W+50BAFs78dLWY/LkybGiW7du8WdXbCYvLy/8vfa8efOWLl2a6kBTpkyJ/eIjCILEqzTi37U+g4aVsQlSQ7GtwGLWr19fT6NADTXUBFm+fPm4ceNiPf/rX//Kzc2tY4dQHzI2QTZs2HD33XfH6mOOOaZNmzap3yxkVMZmR7t27cK6tLQ0Qcv4d7fbbrtUB4JsNGvWrDBMTfwT+oEHHpifnx+r/YQOANSdeGkrUVJSEm7ivM8++yRuHN9g3rx5qY4Vf0nisQoLC8M/VKzFQJAumZwgNbRo0aKwTrAEEDKgASfIaaedtmbNmiAIxo0bt8cee9SxN6gPmZwgc+bMWbt2baw+6KCDUr0cMiyTs+MHP/hB+/btY/ULL7yQoOXzzz8f1kOHDk11IMhGNf8JvVmzZuHapnfeead+bwsAaATES1uJ+fPnh3Xi/SI2axB/YQ29//77sSI3NzfpIRm9e/eOFR9++GE0Gk11LEiLTE6QGnr44YfDesiQIfU0CtREQ02Q++677/HHHw+CoLCw8JJLLqlLV1B/MjlBXn311bDefffdgyBYvXr1jTfeuO+++26//fZNmjTp2LHjoEGDzjvvPL8T5Psgk7MjJyfnjDPOiNXvvffezTffXG2zhQsXXn311bF6wIABYloaifAn9CCVyVhUVLRy5cp6vC0AoBEQL20l4ldCdO/ePXHj+AbxF6Y6VufOncOV9UnHKi0tXbFiRapjQVpkcoLUxNq1a2+99dZYXVBQcMwxx9THKFBDDTJBVq1a9bvf/S5WT5w4sb7Pu4Zay+QEefPNN8O6a9eujz32WJ8+fc4666yZM2cuX768rKxs5cqVr7/++tVXX92/f/+f//zn69atS3UISKMMf/m44IIL9t5771j9u9/9bvTo0fG/Uv/iiy8mTJiw1157xU5p6ty58/333x+JRGoxEGSdcE7l5OR069YtceMM/LADADQe4qWtRElJSVhvs802iRvH710ef2GqYyUdqO5jQVpkcoLUxJlnnhmmraeffnrHjh3rYxSooQaZIGeccUZRUVEQBCeffLK/Luf7LJMTZNWqVWE9efLkESNGxD4SiUQ6dOjQuXPn8HyyaDR63333DR48ODaPoEFk+MtHkyZNnn322V//+tc5OTnRaPT222/fddddW7du3aNHj44dO2677bZjx4794osvIpHIMccc89prr4WbKMBWL5xTLVu2TPoHoH5CBwDSSLy0lVi/fn1YJ/0b8ObNm4d1Lf7uNRyrJn9sXsexIC0yOUGSmjBhQnhye69evf7yl7+kfQhISeYnyH/+858HH3wwCILtttvu73//e+06gczI5AQpLi4O69NOOy0ajbZo0eLKK69cvnz5ypUrly1bVlxcfMcdd3Tu3DnWZv78+T/72c8qKytTHQjSIvNfPlq2bPmvf/1r3rx5++67b9jVxx9/HG7wte22295xxx2PPfZY165dazcEZCM/oQMADUW8tJXYsGFDWBcUFCRu3KRJk2ovTHWspAPVfSxIi0xOkMQmT54cbgjWpEmTBx54oFWrVukdAlKV4QlSXFx82mmnxeobb7yxJgthoQFlcoLE/7J+06ZNLVq0mD59+vnnnx8ucm3VqtXJJ5/86quvhlsbPf/884899liqA0FaZP77q02bNl1++eX777//jBkzqm1QVFR08skn9+/ff9asWbUbArKRn9ABgIYiXtpKxP+ZUllZWeLGX331VbUXpjpW0oHqPhakRSYnSALTp08//vjjKyoqgiDIzc2dNGnSwIED09g/1E6GJ8jZZ5/9+eefB0Fw1FFHnXDCCbXoATKpQb7Firn88sv33HPPqs26det2xx13hC+vu+66VAeCtMjwl4+SkpKhQ4eOHz9+9erVQRAceeSRjz/+eOxYsrVr186ZM+e8885r2bJlEATz5s3bb7/97r333lqMAtnIT+gAQEMRL20lYj9KxST9E6T4BrVYORGOVZO/darjWJAWmZwgWzJjxozhw4fHOs/Jyfn3v/89YsSIdHUOdZHJCTJlypT/9//+X+zaCRMmpHo5ZF6DfIsVq3/zm99sqeWBBx7Yv3//WD1nzhy7G9EgMvz91S9+8YvYmqRIJDJx4sTJkyf/+Mc/7tSpU35+fuvWrffaa6+rrrrqrbfe2mGHHYIgqKioOPnkk999991aDARZx0/oAEBDES9tJVq3bh3W8Rv3Vyv2F38xtfiGMhwr6UB1HwvSIpMTpFqzZs064ogjSktLgyDIycm54447TjzxxLT0DHWXsQlSUlIyevToWH3FFVd069YtpcuhQWTyK0ibNm3CevDgwfHHY1R14IEHxoqKiop58+alOhbUXSZnx9SpU5988slYPWbMmN/+9rfVNuvdu/cDDzwQq8vKyv785z+nOhBko3Ayrl+/ftOmTYkb+wkdAEgj8dJWolevXmH98ccfJ24c36CwsLDWYy1btqy8vLyGY7Vo0aJTp06pjgVpkckJUtWsWbMOO+yw2IkakUjk9ttvHzVqVN27hXTJ2AS59NJLly5dGgTBkCFDTj/99JSuhYaSya8g8ZeEpyttSY8ePcJ61apVqY4FdZfJ2RG/093ZZ5+doOXgwYMHDx4cq59++mlHy9AYhJOxsrLy008/Tdw47T/sAACNWV5D3wDp0bdv37D+6KOPEjdesGBBtRfWfKxnn302CIKKiopFixbttNNONRmrT58+kUgk1bEgLTI5QTYze/bsww47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994bOnRo3ceCusvY7DjqqKPmz5//xz/+cbvttqu2QV5e3k9+8pOZM2dee+214Tk00Hh07979jTfeuPjiizt16rTZWzk5OQcddNDs2bPPPffcBrk3AGCrFIl+98gctiaLFi2aO3fusmXLysrKOnfuvPPOOw8cOLA+BiorK5sxY8aSJUtWrlzZpk2brl277rvvvlUzJ/heydgEgWxkgkACmZwg77///rvvvrts2bJNmza1b99+55133muvvfLybHDN91RmZkdlZeV///vft99+e9WqVevWrWvSpEnbtm1/8IMfDBgwoHnz5mkfDrJOZWXlrFmzFixY8Pnnn7do0aJLly5777131cwJAKCOxEsAAAAAAACkwI4BAAAAAAAApEC8BAAAAAAAQArESwAAAAAAAKRAvAQAAAAAAEAKxEsAAAAAAACkQLwEAAAAAABACsRLAAAAAAAApEC8BAAAAAAAQArESwAAAAAAAKRAvAQAAAAAAEAKxEsAAAAAAACkQLwEAAAAAABACsRLAAAAAAAApEC8BAAAAAAAQArESwAAAAAAAKRAvAQAAAAAAEAKxEsAAAAAAACkQLwEAAAAAABACsRLAAAAAAAApEC8BAAAAAAAQArESwAAAAAAAKQgr6FvAACgTiorK+fNm7do0aKioqLVq1cXFBS0bdu2a9euP/zhDzt06NDQd5eaysrKRx555MEHH3zrrbdWrFhRWloajUaDIDj66KP/85//BEFw1113nXzyybHGsbdqLRKJxIqLL774kksuqUtXAAAAQGMjXgIAstXUqVMnTpw4ffr01atXV9ugsLDwhBNO+OUvf9mnT58M31stlJSUHHnkkTNnzmzoGwEAAABIwuZ4AED2mTt37r777jts2LBHHnlkS9lSEAQLFy684oor+vbt+/Of/3zRokWZvMNaOPPMM+OzpQ4dOvTq1auwsLCwsLBz584NeGMAAAAAm7F6CQDIMpMmTTr11FM3btwYfqR79+4HH3xwz549O3ToUFlZ+fnnny9atOi5555bsWJFEATRaPS+++4rKCi46667GuymkykuLp40aVKs3mOPPR5++OFevXo17C0BAAAAbIl4CQDIJhMmTBg7dmz4cujQoVdcccWQIUOqtoxGo3PmzLn88sufeuqpDN5gLb3++usVFRWx+rLLLttStnTSSSeddNJJmbstAAAAgOrYHA8AyBqzZs06++yzw5eXXXbZ9OnTq82WgiCIRCJDhgyZPHnyzJkzu3fvnqFbrK1Vq1aF9Y477tiAdwIAAACQlNVLAEB2+Oqrr0aOHLlp06bYy8suu+zCCy+syYX77LPPm2++OWXKlARtvvjiixkzZixbtmzNmjXt2rXbfvvtf/SjH7Vv3752t7p06dI5c+YsXbq0srKyU6dO++233w477JD4kvC5giDIz8+v3bibKSsrmz59+qJFi0pKSjp16rTTTjsNHjw4EonUrrclS5a8/vrrK1asWLdu3bbbbtuzZ8999923SZMmtehq3bp1L7744ieffBLrauDAgf3790+1kw8//PCtt94qKioqKSlp3rx5t27ddt111z59+tTk2mg0+tZbb82fP3/lypXl5eUdO3bcZZddBgwYUOt/HAAAAGh0ogAA2eC2224Lv4HZZ599Kioq0tLtzJkzhw4dmpOz+ZLunJycAw88cNasWQmunT59eth++vTp0Wh0/vz5w4YNq9rbsGHDPvzww6o9jBo1Kul3a/vvv3/Y/s4776zJd3FfffXVxRdf3LZt28266tGjx8SJE2Ntwg9efPHFCboqLy+//fbbq41tWrZsOXbs2KKiogSXbzZKcXHxqaee2rx58826+sEPfjBlypQE/YTWrl17ySWXdOnSpdp/q06dOo0dO3bRokVbunzNmjUXXHBBx44dq17buXPn6667rqysrCa3AQAAAI2czfEAgOxwzTXXhPUll1xSNcJJVTQaHTdu3I9+9KMXX3yxsrJys3crKytfeOGFvffe+49//GM0LiZJ4MEHHxw4cOBzzz1XtbfnnntuyJAhb7zxRh3vuSaKi4v33nvvSy+9dM2aNZu9tWTJktGjR//iF7+oeofV+uSTTwYMGPDb3/72ww8/rPru+vXrb7nllp133rmGz/X+++/379//X//615dffrnZW//973+PPPLI//u//0vcw7Rp03r16nXJJZd89tln1Tb4/PPPb7nllscff7zad6dPn15YWHjllVeuWLGi6rvLly8/55xz9tlnn6Kioho8DQAAADRqNscDALLA+++/v3Dhwljdu3fvgw46qO59jhkz5vbbb4/VkUjkgAMOOOSQQzp06LBq1aqpU6fGViMFQXDNNdd8+eWXN998c+LeZsyYcdlll5WVlW233XbHHHPMrrvu2rx588WLFz/wwAMLFiwIgqC4uPhnP/vZO++807Rp0/Cqjh07FhYWBkGwbt26lStXxj7YvXv3vLxvv0nb0kqdapWVlR122GFh3tO8efNjjz12zz33bN68+YIFCx566KHFixdPmjTpBz/4QdKuPvroo/3333/58uWxl506dRo+fPiuu+7asmXLZcuWPfXUU3PmzAmCYNWqVQcccMCsWbN23XXXBL2tXLnyyCOP/Pjjj5s0aTJ8+PAhQ4a0a9du5cqVTz311IwZM4IgqKysPP3004cMGdK3b99qe3jwwQdPPPHE8vLy2Mttt932iCOO2G233dq3b79+/frFixfPnj371Vdf3VIW+Nhjj51wwgnhJoS77LLLEUcc0bNnz7y8vI8++ujhhx9evHhxEASvv/76AQcc8Oqrr1ZdYgUAAAB8q0HXTgEA1Eh8ujNmzJi6d/jQQw+FHXbo0CEWJsWbOnVqu3btwjaPPfZY1U7iN8eLraYaM2bM+vXr49uUlZX98pe/DJuFe9NtJn7Xu8WLF2/ptpNujnfppZeGDfbYY4/NtokrKys755xzwruNqXZzvI0bN+6xxx6xBpFIZPz48Rs2bNiszQMPPBBGZf379692W7nN/n322Wefjz/+eLM2t956a9jsZz/7WbXP9d5774V5T+x+SktLqzb79NNPL7jggv/7v//b7OMLFixo1apV7PJWrVrdf//9mzUoKys7//zzw9s4/fTTq70NAAAAIMbmeABAFogtlIkZNGhQHXurqKgYN25crC4oKHjmmWeGDh26WZuDDz548uTJubm5sZfnnHNO4g3lKisrTznllFtvvbVFixbxH8/Pz7/99tu7d+8ee3nPPffU8eYT+OKLL6688spYvf322z/zzDM9e/bc7GauvfbaUaNGJd0c77rrrnvrrbfC+q9//Wv8oquY448/Pnyct99++/7770/QYWVl5a677jp16tQddthhs7fGjBlz/PHHx+rHHnustLS06uWnn356uKXe7bff/te//rXa1UVdunS54oorTjnllM0+Pnbs2HXr1gVB0LRp06lTp55wwgmbNcjPz7/yyivPOOOM2MvbbrttyZIlCR4HAAAAGjnxEgCQBeIPy+nVq1cde3viiSeWLl0aq88666wf/vCH1Tbbe++9Tz/99Fi9ZMmSJ598MkGfrVu3vv7666t9q2nTpqNGjYrVc+fOraioqN1tJ/Xvf/9748aNsfqKK67Ybrvtqm32j3/8o02bNgn6KSsru+GGG2L1AQcccNZZZ22p5YgRI4YNGxarb7nllsS3d8sttzRr1qzat8aMGRMrNm7cOG/evM3enT179ssvvxyrjzvuuFNPPTXxQJt55513nn322Vh9/vnn77XXXltqedVVV8WWrFVWVt52220pjQIAAACNingJAMgCX3zxRVi3bdu2jr098cQTsSISiYQBUrXOPPPMqldV6/jjjw+3X6tq7733jhUbNmyov2Ux4R22adNm5MiRW2rWvn37n/70pwn6mTZt2ueffx6r//CHPyQe9OSTT44Vr7322po1a7bUrHfv3vvtt9+W3t1rr73C/fo++OCDzd594IEHwvqCCy5IfD9VTZo0KVbk5+cniMqCIGjRokW4juq5555LdSAAAABoPMRLAEAWKCkpCeuWLVvWsbfZs2fHil122aVHjx4JWu64444777zzZldVKwyQqtWlS5ewTpDB1EVlZeUbb7wRq4cOHdqkSZMEjY844ogE786YMSNWNG3a9KCDDko87uDBg2NFNBp97bXXttQs8b9P8+bNw5Ouqv77vPTSS7GiZ8+eW1pqlkD4OD/60Y+SZpPh47zzzjvhdnwAAADAZsRLAEAWaN26dVivX7++Ll1Fo9GPPvooVu++++5J2/fv3z9W/O9//4tGo1tq1rlz5wSdxEdidbz/LVm6dGnYc79+/RI3TtwgPHWpd+/eiWOqIAg6duwYfw9bapb43yeI+yeq+u/z/vvvx4raHbsVPs4uu+yStHH4OBUVFcuXL6/FcAAAANAYiJcAgCzQvn37sK7j6p+1a9dWVlbG6vhoZEvi84Z169ZtqVnTpk1reAMJMqq6KC4uDustnboU6tChQ4J3i4qKYsV7770XSaZ58+bhhatXr95Sn7X+9ykpKdm0aVOsTppRVVVaWhqeR3XzzTcnfZz4dV0JHgcAAAAaOfESAJAF4nOgOp5dFL84Jj4a2ZIWLVqEdYJ4qcHFP1ezZs0SN45/qKrWrl1bu3uoj93k4v/Na7EvYq2fJaifxwEAAICtQ15D3wAAQHKDBw++5557YvWrr746atSoWncVH1HUJD8oLS0N61atWtV63PoW/1wbNmxI3Dj+oaoKU7emTZvGnxqVVHh+UhrF/5vXYl/B+ASxXbt222yzTc2vrfmKKwAAAGhsxEsAQBYYOnRoWE+bNq0uXbVp0yYnJye2P96KFSuStg/b5Obmfp/jpfhoZ+XKlYkbr1q1KsG74VaEu+yyy9y5c+t+b3XRunXr/Pz82P54tTgMqU2bNnl5eeXl5UEQnHLKKX//+9/Tf4sAAADQ+NgcDwDIArvsskthYWGs/t///vfCCy/UuqtIJLLjjjvG6rfffjtp+7DNTjvtFIlEaj1ufevatWu45d27776buPE777yT4N2+ffvGik8//TQt91ZHu+66a6x47bXXUr02Eon06dMnVn9PHgcAAAC2AuIlACA7nHvuuWF96aWXxpYf1c6QIUNixfz58xOf5LRgwYIPPvhgs6u+n3JzcwcOHBirX3zxxbKysgSNp0yZkuDdgw46KFasWLFi/vz56brDWtt///1jxeLFi996661ULw8f56WXXqrLpw0AAAAQEi8BANnhpJNO6tatW6x++eWXr7766ppfu3r16kmTJoUvjz766FgRjUYnTJiQ4MKbb7656lXfWz/+8Y9jxZo1a+6///4tNSsuLn7ooYcS9HPIIYeE++Nde+21abzD2hk5cmRYX3HFFbW+/PPPP7/33nvTdlsAAADQiImXAIDs0KRJk/vvvz8/Pz/28k9/+lMNE6ZXXnllwIABU6dODT8yfPjwHXbYIVbfcMMNb775ZrUXzpkz55ZbbonVPXr0OOqoo2p/9xkxatSopk2bxuo//elPRUVF1Tb7wx/+sGbNmgT9tGjRYty4cbH6jjvuePDBB2sy+saNG1O411Tstdde4QKmhx9++F//+ldKlw8ePPiQQw6J1WedddZ///vfmlxVf48DAAAAWwHxEgCQNfbee+/rrrsuVkej0fPOO+/ggw9+9dVXq20cjUbnzJkzfPjwH/3oR5vtgJebm/uPf/wjVpeVlR1++OEvvfTSZpe/8MILRx11VHl5eezltddem5Pzff/GqX379hdccEGs/uyzzw477LCPP/44vsGmTZvOPffcO+64I+mzjBs3LrbVXjQa/fnPfz5+/PiSkpJqW5aVlT377LMnnHDCL3/5y3Q8RPUmTJjQvHnzWP3b3/72oosu+vLLL6s2W7Zs2fjx4++4446ql7dt2zYIgtWrVw8ZMuTuu++uqKiodqDi4uK77757n332mThxYjofAAAAALYueQ19AwAAKRg7dmybNm1+85vfxBaXTJs2bdq0aT169DjkkEN69uy57bbbVlZWfv7554sWLXruuec+//zzLfVz3HHHjR49OhYhrFy58oADDjjooIMOPvjgDh06rFq1aurUqS+88EI0Gg0HPfbYYzPzgHV0/vnnP/XUU6+99loQBG+88Ubfvn1HjBix5557NmvWbOHChQ8++OCiRYuCILjkkksuuuiiBP00bdr0scce22+//RYvXlxRUXH55ZffcMMNw4YNGzhw4Lbbbpubm1tSUrJ06dJ33nlnzpw569evD+p588C+ffvecccdv/jFL8rLy6PR6F//+tdbb731yCOP7Nev3zbbbFNaWrp48eJXX3111qxZlZWVYQYZ6t2794MPPnjMMcd8+eWXxcXFv/rVry644IJDDjlkt912a9euXXl5+Zo1axYuXDhv3ry5c+fGMsWf/vSn9fc4AAAAkO3ESwBAlvnFL37Rp0+fs88++5VXXol9ZMmSJf/85z+31D43N/dXv/rVpZdeutnHb7311mbNml1//fVBEESj0eeff/7555+vevkf/vCHlM55algFBQXPPPPMwQcfHNvx78svv7z77rvvvvvu+DYnnnjihRdemDheCoKga9eur7/++s9+9rPYvoLr169/9NFHH3300S21z83NTccTbNEJJ5zQrl27kSNHFhcXB0FQVFT073//u+aXH3LIIbNmzfrJT34SC9g+++yzu+66K0H7+n4cAAAAyGrf9z1eAACqGjhw4MyZM5999tkRI0Zss802W2q20047XXzxxf/73//uuOOObt26bfZuJBK57rrrZsyYMXTo0KqbxeXk5BxwwAGvvPLKNddcE4lE0v8M9aZdu3azZ8++6KKL2rRps9lbPXr0uO222+65554abvTXvn3755577umnnx46dGheXvV/ltSuXbtjjz120qRJm4VY9WHYsGELFy48//zzt9tuu2obdO3a9ZxzzvnJT35S7bu77777Bx98MGHChL59+25piO7du5966qnPP//82LFj03PTAAAAsDWKhLu+AABko8rKyrfffnvRokVFRUWrV68uKCho27Ztt27dBgwYsO2229awk6KiohkzZixbtmzNmjVt27bdfvvt99tvv/bt29frnde3r776avr06QsXLly3bl2nTp122mmnIUOG1DoqW7du3axZs5YuXfrFF19UVla2atWqS5cuO++880477ZT5U6mi0ehbb731/vvvr1q1asOGDS1btuzWrdtuu+2244471rCHZcuWzZkzZ8WKFcXFxXl5eW3atOnRo0ffvn2rxpAAAABAVeIlAAAAAAAAUmBzPAAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF4iUAAAAAAABSIF4CAAAAAAAgBeIlAAAAAAAAUiBeAgAAAAAAIAXiJQAAAAAAAFIgXgIAAAAAACAF/x+slaT9T3qskQAAAABJRU5ErkJggg==", "ok": true, "headers": [ [ "content-type", "image/png" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/images?run=train%2Fyolov5s_results2&sample=0&tag=PR_curve": { "data": "W3sid2FsbF90aW1lIjogMTY2NzA1MTMwNS45NTUxMzE1LCAic3RlcCI6IDk5LCAicXVlcnkiOiAiYmxvYl9rZXk9V3lJaUxDSjBjbUZwYmk5NWIyeHZkalZ6WDNKbGMzVnNkSE15SWl3aVVGSmZZM1Z5ZG1VaUxEazVMREpkIn1d", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/individualImage?ts=1667051305.9551315&blob_key=WyIiLCJ0cmFpbi95b2xvdjVzX3Jlc3VsdHMyIiwiUFJfY3VydmUiLDk5LDJd": { "data": "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71F2+vTpH374oSSjjRs3To7nzJlz+fLlEi2uZDRLSsaeh9SwYcP27dtLcXp6+owZMwwkL1y48N69e1Ls4+PTo0cPI1dasQQEBLzwwgvyy88//1zzaosWLeR6QERExLRp00oy1/vvv29i8vC/+tavX6971FOhPDw85PjYsWMGMnft2vXnn38aO/7jNnPmTB8fHylWKpV9+/Yt+t+avLy8SZMmjRkzRuv9+vXryxWdf/75JyUlpaARzp49u23bNmPXbBR7e/v+/ftLcXR09P79+zdv3iz3Ib311lvyB0CvyZMny/GMGTPkv2gAAAAAABSE8hIAAGXB1NT0iy++kF+OGzduxYoVhd5169atkSNHRkVFab3frVs3+aiVnJycnj17Gv6uPCkp6cKFC0YtODU19c033yy0JyM8PHzLli1SbGJi4u/vb9QsQoiJEyfK8aJFizS389K0d+9ezXOexo8fb/jr8krhs88+k+M9e/Zo7Z/2xRdfyM84Z86cWbNmabYQ6RUZGTl58mTdfdjq1q37xhtvSLFarX755ZcPHTpkYJyMjAytbqqaNWt6enpK8dmzZwvqxTlz5sygQYMML7JcVKlSZdOmTebm5tLL2NjYzp07//rrr4X+SA8fPtyyZcu5c+fqZpqamj733HNSnJWVNWXKFL0jhIaGvvLKK0qlsmRPUDit/fHWrl2r95JenTp1kp8lPj7+2WefvXHjhuFbVCrV9u3bP/roo+KuFwAAAABQuVX672UAAKgsXnvttXfffVeK8/LyRo4c2a1bt507d2ZkZGim5eXlXbx4ccGCBR07dmzQoMGKFSv0boy2fv16Z2dnKY6Ojm7duvXkyZO1vhHOyMj4559/Ro4c6e3tvX37dqNWq1KpNm7cGBAQ0KpVq9mzZ58/f15rS7TU1NSVK1e2a9dO3tHuxRdf1OxxKaL+/fsPGDBAitVq9dChQ9977707d+7ICTExMZ988knv3r3lBbRv337s2LHGTlQBtW7dWv5OX+icwBQYGPjVV1/JL2fMmNGqVavffvstOTlZM02pVF6/fn358uXPPfecr6/v999/r/WJkixZsqRWrVpSnJqa2r1793feeef8+fOaVZPs7Oxjx459+OGH3t7eP/74o9YIgwcP1oy/+eab1NRU+Z3IyMhp06Z16tQpOTnZyspKbhWqOFq3br1ixQq5YpecnPzG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CtykcuXK119/4wUXDN64cUMQBM8889+PP/5w//0HNGnSdOPGjdOmTf3kk483bNhQtWrVQYOOK2FhSrxatmx18MGHvvfeqCAIZs786YQTjj7wwEPatGkTiUQWLVr0+eefhiVN55134cMPP7ilm/3mrLP+9vjjjzz77FMff/xR//6/vZ3p038YM2Z0rIina9duf/3rqWX4Rs4446xrr70yCIK8vLxbbrnpzTdH7rln37p1661bt2727Jmffjpm9erVQRAMHnzh5grFylYkEvm///vXeeeds3DhgiAI5syZfcUVl1SqVGmnnepkZWXG2gMefvhf6tdvMGfO7CAIShd9RSKRG2+85YIL/vbjj9ODIBg5csSoUW/vsUevLl123mmnnSpVqpyVlbV8+bLZs2dNnfr9mjUZQRC0a1fc8VTFO+OMsydOnDBx4ndBEHzzzbijjz7i4IMPadmy1caNG6dN++Hjjz+KZYqnnXbm7rv3LPVCoWOOOaLAM8uWLYsNCr86bNh/6tevX+DJiRMnTJw4oVq1al26dG3Xrn39+vXT0tLy8qJr166ZO3fO+PHf5D/+qkOHjn//+zWb28+oUW8//PCDDRs27N59t9at29aqVSs3N2fFihWTJk2cNGlC7L0feODBV155beneMtuUeAkAAAAAEl5KSspdd9370EP3v/DCc9FoNC8v77vvxn/33fjNzU9KSt7cSytWLP/00zGffjqmyFc7d+5yzz33b65LVamv7dWr9+OPP3XNNX8P84Nly5a+885bm9vh5va/887dbr/9rmuuuTJMmBYsWPDMM//NP6FKlSpDhvxfLI3YFi677Mo5c2b/9NOMIAjWrFnz6qsvFZhw/PEnnnbamSWPl8444+z58+d/8MG7CxcWfDuhzp27DB36QEpKpa3ceX777df/5JNPef75Z8OHU6ZMmjJlUoE5xx57wqmnnl4+8VIQBPXrNxg27LGbbrphwoTfPtXZ2dm//vpbkhGJRE466ZTzzrvwscceDp+pXr166RaqXr36I488cfvtt4QxYXZ29pdfjg2D2yJtTQlXpUqV7rxz6FVXXTZx4oQgCDIyVr/00guFpx133ImDB19Q6lViFixYsLmXcnNzCr9azBFr69at+/bbr7/99utilgtjobAwsRhLliwJf9SFpaSknHTSKeeee35y8mb/vqICiZegXEVULwEAAADbRnJy8sUXXzZw4BFPPfXk2LGfFnlKSuXKlXfeudvee+9z4IEH53++bt26//jHDV9+OXbSpAlhYUphrVu3OfroY486alCBr3q35tr82rVr/+KLr7355huvvvrS5g4uatiwUc+evQcMOLBHjz2KnNCnT9/nn39p6NC7xo37Mi8vL/Z8JBLp0WOPyy77e5s2bd9++83N7WHr1axZc9iwxx5++MGRI0cU+Ha+ZctW5557/n779Y/rhklJSTfffOuuu+769NP/LXDWUY0aNY4//qTTTjuzUqWyzJZCF110Wdu27R977OHFiws2WmzfvuM555wbayJXbho0aDhs2GOfffbJ+++/O23aDytXrkhNrVKvXr0ePfYYOPCI9u07BEEQVhQFQZCWtoVUoxhVqlS58cZbBg069umn//vtt18X2QiuWrVqu+yya79++/bvf2CpFwqCoEaNGg899Ngrr7z00kvDFy1aWODVLl12/tvfzuvVq8/WLFGG9tprn9WrV3/zzdczZ86Ide0roFq1av367XfkkYNi/Qw3Z8CAgz7++KO5c+cUbqpZvXpa3757n3HGWa1atS6TnbMtRIpshwpNmzZduHBhkyZNism0KYUlN9+8avgLQRCkNGjQ7tNPKno7AAAA/OHP99/C69atmz9/fl5eNC8vWq9ew9TUKhW9I8pPTk7OtGk//PLLzxkZGRs3bqhWrVrt2js1b968Vas2qampxV+7YMEvP/88f/HixVlZmbm5udWqVa9Xr36HDh2aNGm6xXW35tr8li1bNnXqlJUrV65duyY5OTktLa1Ro8atWrVu0KBhCe+wdOnSiRO/W758WXJycr169bt02blhw0Zx7WErZWau/e678YsXL9q0aVOdOnXbtGnTsWPRJ9AU9vjjjzzxxGPheNy4CeEgGo1+//2Un3+ev3LlimrVqjVp0nT33Xtui2Apv9zc3B9/nP7TTz9mZGRUrVq1Tp26HTp0bNas+TZddGucffZpU6d+HwTBHnv0euCBh7f+hhs3bpw6dcrixYtWr16dk5NTtWq1unXrNm/eolWrVmVbMRYEwfTp0+bNm7N8+fJKlSrVrVuvc+cujRs3KdslysqmTZvmzJm9aNHCZcuWrV+/LhKJVK9evWbNWm3atG3RomVcxUarVq2aPv2HRYsWZWauTUlJ2WmnOg0aNOzWbZdt/dmucBs3bli2bElSUiQpKdKiRYtq1apV9I7ipnoJypnqJQAAAGCbS0lJ6dZtl27ddinFtU2bNmvatFnp1t2aa/OrV69evFU+BdSvX/+ggw7Z+p2UWlpajX799ivDG0YikVL/mZZacnJyly47d+myc3kuWmorVqwIz0wKgqBz55KGecVLTU3dXKlcmevUqXOnTmWz7W2tcuXKHTt26tix09bfqnbt2nvuudfW34fyV/q+kAAAAAAAsJ147rmnYw0J+/SRWMC2JV6CCqJ6CQAAAABKJiMjY/78ecVMePfdt1988flw3KZN2+7ddy2PbcEOTHM8KF+RyJbnAAAAAAD5LF++7JRTTthzz70GDDho1113q1+/Qfj8pk2bvv9+yuuvvzJ69IfhM5FI5PLLr6y4ncKOQrwEAAAAAMD2Li8vb+zYz8aO/SwIgmrVqqen19i0KTsjIyM3Nyf/tPPPv6jcTkuCHZl4CcrX79VL0UBzPAAAAIDtxQ03/HPatO9Ld+2wYf+pX79+2e5naxxzzBGlu7BevQYPP/x42W6mrCQnJ0cikejv502sW5e1bl1WgTn16ze45JLL+/cfUO67gx2ReKmU5s6dO378+EWLFm3atKlx48YdO3bs0aPHNlpowoQJixYtWrNmTZUqVWrXrr3zzjt369atSpUq22I5AAAAANgBLVu2dMGCBaW7NicnZ8uTytFWvJHcst1JGWrZstXIkaPGjv18ypRJc+fOWbr016ysrNzcvLS0tNq1a3fu3GWPPXodcMCBlSpVquidwo5CvBS3Dz/88IYbbhg3blyB59u0aXPppZdecMEFkbI4XCcnJ2fYsGEPP/zwjz/+WPjVtLS0Y4899rrrrmvduvXWr0W5in08FC8BAAAAUJRzzhl8zjmDK3oX25369RscffQxRx99TEVvBAgC8VK8Lr/88vvuuy9Wg5nf7NmzL7rootdff33EiBE1a9bcmlV++eWXww8/fPLkyZubkJmZ+d///vfFF18cNmzY6aefvjVrAQAAAADbbVO4Uhg3bkJFbwH48xMvxeG666679957w3GlSpWOOeaYnj17pqamTps27fnnn1+1alUQBGPGjBk0aNC7775b6jLMjIyMfffdd86cOeHDypUrDxw4sE+fPnXq1Fm/fv20adNef/31xYsXB0Gwfv36M888s3r16scee2xZvD/KV1EhJQAAAAAAbP/ESyX1ySef3HrrreG4ZcuW77zzTufOnWOv3nLLLYMGDRo9enQQBKNHj77tttuGDBlSuoWGDBkSy5a6du06YsSINm3a5J9wzz33XHHFFQ899FAQBNFo9IILLjj00EOrV69euuUob2XQOhEAAAAAACpSUkVvIDFEo9Err7wyHFeuXPnNN9/Mny0FQVCzZs2RI0fGcqC777576dKlpVgoJyfn2WefDcdVq1Z9++23C2RLQRCkpqY++OCDhxxySPhw2bJl77zzTinWooKpXgIAAAAAIDGJl0rks88+Gz9+fDg+99xzu3btWnhO9erV77jjjnCcmZn56KOPlmKh2bNnr1y5MhwfdthhzZs339zM888/PzaeMEE31YQRiShfAgAAAAAgsYmXSuS1116LjQcPHry5aX/5y18aNmxY+JKSW7FiRWzcrl27YmbmfzWWSAEAAAAAAGxr4qUSefvtt8NBs2bNCrTFyy8lJeWAAw4Ix5MnT/7ll1/iXah27dqxcVZWVjEz879av379eBei4vxevaQ5HgAAAAAAiUm8tGVr1qyZO3duOO7bt2/xk/NPmDx5crxrdejQoU6dOuH4448/LmbmRx99FBvvu+++8S4EAAAAAABQOuKlLZs2bVpsXHzDugIT8l9YQklJSRdeeGE4njp16oMPPljktNmzZ995553huEePHv379493ISpMRPUSAAAAAACJTby0ZXPmzImNW7RoUfzk/BPyX1hy11577Z577hmOL7744nPPPfeHH36IvbpixYphw4b16tUrPKWpUaNGL774YiSWWAAAAAAAAGxj4qUtW7NmTWy80047FT85/+FJ+S8sudTU1Pfff/+ss85KSkqKRqOPPfbYzjvvnJ6e3rJlywYNGtStW/eCCy5YsWJFJBI58sgjv/nmm7Zt25ZiFSqe6iUAAAAAABJTSkVvIAFkZmbGxlWrVi1+crVq1WLjtWvXlm7FtLS0//znP5deeun555//+eefh7fKf7e6deveddddp59+eunuHwTB0KFDhw4dWsyExYsXl/rmFEepGQAAAAAACU68tGXr16+PjStXrlz85NTU1CIvjEt2dvadd945dOjQlStXFjlh+fLlZ5xxxn333Tds2LBYJ724rFmzZuHChaXbHgAAAAAAsCMTL21Z/oqlTZs2FT9548aNRV5YcmvWrDnkkEO+/PLL8OFhhx32t7/9rWfPnnXq1Fm/fv306dNHjBjx0EMPZWZmTp48eZ999nnmmWdOOumkeFdJT09v0qRJMRMWL16cl5dXiv2zBb9XL2mNBwAAAABAghIvbVlaWlpsvMWCpPwTatSoUYrl/vrXv4bZUiQSeeSRR/72t7/FXqpUqVKvXr169ep19tln9+/f/+eff87NzT3jjDO6du3atWvXuFa5/PLLL7/88mImNG3aVHkTAAAAAABQWFJFbyABpKenx8arVq0qfnL+dnaliJc+/PDDt956KxwPHjw4f7aUX9u2bV966aVwvGnTpuuvvz7ehagwsaOXouqXAAAAAABISOKlLWvdunVsPH/+/OIn55/Qpk2beNcaPnx4bHzppZcWM7N37969e/cOx6NGjSr1OU8AAAAAAABxES9tWefOnWPjmTNnFj951qxZRV5YQpMnTw4H6enp7du3L37yHnvsEQ6ys7N/+umneNeiQkR+P3tJ9RIAAAAAAAlKvLRl6enprVq1CsdffPFF8ZPHjh0bG3fr1i3etTIzM8NB/gOfNif/nHXr1sW7FgAAAAAAQCmkVPQGEsPAgQMfeOCBIAh+/vnnadOmba4sKScnZ/To0eG4W7duzZs3j3eh2rVrh4MVK1ZkZ2dXqlSpmMmLFy+OjevUqRPvWlQw1UsAAADAlvTuvVs4uO66GwcOPKLAq2+//eYtt9wYjseNm1CeG4u5+eYho0a9FQTBrrv2ePjhxytkDxSwYcP6iRMn/PrrrxkZq2vWrNWgQYNdd92tSpWq22i5uXPnzJo1c9myZUEQ1KtXr23bdq1atd7iVTE5OTm//PLzwoULli1bmpmZmZ2dU716tfT0muF9UlJK+Q322rVrv/9+yooVy1auXJmUlFSrVq0mTZp16NChevUt/1o/27mcnOxJkyYuXrxo1apVaWk16tWr1737bjVq1Kjofe1wxEslMmjQoDBeCoLgkUceuf/++4ucNnLkyFjkM2jQoFIs1K5du2+++SYIgo0bN37yyScDBgzY3MycnJyPPvooHFetWrUUURYVI9YcDwAAAADK1IoVK4YNu//jjz8qcFJ71apV99//gAsuuGSnnXYqw+U++OC9p59+cvbsWQWeb9u23WmnnTlgwEHFXLthw/pHHhk2ZcrkWbN+2rRpU5FzatasNWDAQaeeekb9+vVLvqtx47584YXnvvtufE5OToGXkpKS2rfvcOqpZ+y//wElv+H2ZtGiRYMGHR79/ZfXTz751IsuurSE18YS6wIikUj16tXT0mq0bNmqS5cuAwYc3LJlqzLZbdnKysp67LFh7747as2ajPzPV6pUac8997rookubNm229asceeRhS5Ys3vK8IKhateqYMVtoePYnpjleieyzzz49evQIx48++ujUqVMLz8nKyrr66qvDcfXq1c8999zCc04//fTI75566qnCEw455JDY+LrrrtvcX6xBEAwdOnTBggXheL/99qtSpUpJ3wwAAAAA8Kfz7bdfn3zyse+881aBbCkIgvXr17/zzlsnnXTM+PHflMlaOTnZ//zn1Tfc8I/C2VIQBLNmzbz++muvu+6anJzszd0hKyvrxRefnzZtajFfgWZkrH711ZdOOOHoUaPeLsmuMjJWX3vtlZdeeuHXX48rnC0FQZCXl/fjj9MnTBhfkrttt958c0Q0X2OkUaPeLubnXELRaDQzM3PJksXjxn35xBOPn3DCoCuvvCysSIvXjBk/PvvsU1dffcXJJx83YEC/vfbquc8+vQ85pP/pp598003Xv/nmG0uXLi3dJmfO/Omvfz3+pZdeKJAtBUGQnZ396adjTjnlhA8+eK90N6cUVC+VSCQSufPOO/v37x8EwaZNmw4//PBRo0Z16tQpNiEjI+PYY4+dPXt2+PCKK65o0KBBKRY65phjrrvuunnz5gVB8M033/zlL395+umnC4TzOTk5Q4cOvfbaa2PPxGItEsHv1Uua4wEAAABQRn76acbVV18RO6C9Q4eO/frtX6dOnRUrln/yycc//TQjCILVq1dfddUVjz76RLt27bdyuVtvvXn06A/DcdWqVQcMOLhdu3bRaDBz5owPP3x/w4YNQRB89NEHlStXvuGGm4u/VWpqlU6dOrVu3bZJkyZpaTWSk5MyMjJmzZr5xRefr1mzJgiCdevW/d//DYlEgkMOGVjMfVatWnXRRYNnzZoZPkxLS+vVq0/79h1q194pJydnxYplP/3008SJ32VmZm7le69Yubm577zzZv5nVq1a+dlnn+2/f/+47pOamlqvXr3Yw7y86Nq1a9auXRt75vPPP5027YdHH32ihPVAWVlZb731xquvvrxgwS+FX920adOqVat+/HH6u+++k5SU1KtXnxNOOLlXr94l3/Cvvy65/PKLYolXs2bNBww4qEGDhqtXr/rqqy8mTZoYBMH69etvuumGmjVr9urVp+R3Lka1atV32ql2MRO2Xc/JhCBeKqn999//mmuuuf3224MgmDdvXvfu3Y855piePXumpqZOmzbtueeeW7VqVThz3333/ec//1m6VVJTU//zn/8ceuihYWj/3nvvtWjR4ogjjujZs2edOnXWrVs3ffr0N9988+eff45dcsEFF+yzzz5b/f4AAAAAgISUk5P9j39cFWZLSUlJl13292OPPSH26plnnvPyyy/ed9/deXl569Zl/eMfV73wwqulPtMoCIK3337z3XffCcft23e4++5/5//9+HPOOe/vf78kDLRGjXq7R489Djvs8MI3qVw59eSTT9lrr326du2WklLECfQbNqwfNuzBl19+IQiCaDR699139uq15+aa+23atOnii88Ls6Xk5OS//vW0008/q2rVgl/95+TkfPPN15mZa4u6R2L44ouxsYilceMmixYtDILgzTdfjzde6tx558KHpS1evOidd9569tmnNm7cGATBihXLr776imeeeSE5ObmYW0Wj0TfffOORRx5atWplgZeqVq1ao0Z6EASZmZnr1mWFT+bl5X311RdfffVFz569r7rq2hLGVzfeeH3sjZ9yyunnn39R5PdTSE477cyPP/7oppuu37hxY25uzvXXX/vqq2+mp6eX5LbF23ff/W+44aatv8+flXgpDrfddltWVlZ4CNOmTZuGDx8+fPjwAnP69es3YsSIypUrl3qV/v37v/baa6effvqKFSuCINiwYcPLL7/88ssvF54ZiUQuvfTSu+++u9RrUQEiqpcAAAAAKEsjRrwWKxn5619Py58thY477oRly5Y+++xTQRD88svPb7zx+jHHHFe6tTZu3PjYYw+H4/T0mkOH3l+3br38E+rXr3/PPfeffPKxYe3RY489fMABB6ampha4T40aNS666LJiFqpSperll1+Zmbk27IyXlZX54YfvH3/8iUVO/s9/Hp0586cgCJKSkm688ZbNHfuUkpKy5559S/Q+t1cjR74eDjp37nLkkYNuu+3mIAi++ebrJUsWN2zYaCtv3qhR47PPPrd37z0vvPDcsARt9uxZH3zwbjF1YxkZq2+88fqvvvrj/KG2bdsdcMCBXbvu0rFjp+rVq8eeX7ly5YwZ07/++qsPPnh/5coVQRB88824U0898eqr/3nQQYcUcet8xo79bOLE78LxgAEHXXDBxQUm7L//AatXr77zztuCIFizZs3TTz9Z8vOoKDXxUhwikcj9998/cODA66+//ptvCnYpbd269SWXXHLRRX+kpqU2cODAadOm3XPPPU899VSRnShTUlKOOOKIK664Ys8999zKtQAAAADYphYs+GXu3DlLlizOyspKSUlJT6/ZokXLzp27VKpURMXG9mDevLk//TRj9erVWVmZVapUadCgYevWbVq2bLWVt127du2sWT/98ssva9Zk5OTk1KiRXq9eva5dd6ldu7jeUwVkZq798cfpP//8c2ZmZm5uTpUqVWrX3qlRo8bt2rWvVq3atrs2FI1GZ8z4ce7cOatWrcrNzdlppzqtW7fp2LFTyb8PnDt3zsyZP61cuWLduvWVKqVUq1a9YcOGzZu3aNaseQnvUKQXXng+HNSuXfvss4s4Ej4IgnPOGfzWW2+sXr06CIIXXniu1PHSRx99sHTpr+H49NPPKpAtherVq3faaWc98MC9QRD8+uuSjz/+sPi+dsU48cS/xg5e+uGHqUXOmTdv7vPPPxOOjz32+M1lS9tObm7u5MmTFi78ZeXKlVWrVmvfvn23bt2TkpIKz1y0aNH3309euvTXSCRSv36DPfboFdfnf+nSpePGfRmODzvsiP79BwwdeueGDRvy8vLeeuuNc845r0zezs47dz3ppFOefPK32qZPPhmzuT++RYsWXnLJBb/88lurrT59+g4efEGHDh2LnLzTTjv16dO3T5++F1546XvvjfrPfx5dsmTxunXrbrzxuuXLl5988inFbGn48OfCQUpKyqWXXlHknKOPPua1114ODwN7/fVXzjlncJUqVUrwdik98VLcDjzwwAMPPHDOnDnjx49ftGjRpk2bGjVq1KlTp913332L1z711FNPPfVUSVapX7/+HXfc8a9//WvGjBmTJk1atmzZ2rVrU1NTa9Wq1aFDhx49epTw//PYbqldAgAAgD+xnJzsL7/8csyYj7799uvly5cXnpCaWuXQQweefvqZDRo0LP/tFSkrK/OFF54fOXLEsmVF/LpznTp199tv/5NOOqVx4yZx3Xb27FkfffTBF198PmvWzLy8vMITdtml++mnn9WnzxZqSubNm/voo8PGjv0sOzu78KtJSUkdOnQ88shBf/nLUWV7bSgzc+2zzz711ltvhlUX+dWtW/evfz3tmGOOK7LDWyg3N/e11155+eXhCxYsKHJCzZq19tyz7+DBF5Ti8/Djj9PDDmlBEBx66OGb66tUuXLlww47/Pnnnw2CYOHCBT/9NKN9+w7xrhUEwZgxo2M3HDjwiM1NGzjwiEceeTD8gY8Z83Gp46XmzVvExqtXrypyzquvvpybmxsEQZUqVc45Z3DpFiqhm28eMmrUW0EQNGzY6I033olGo8OHP/fii8/F+raFmjRpesUVV+25516xZ376acb99w8dP/7b/NOSkpL+8pejLrzw0vxVPsV4++2R4TutXLnygQceXL169f326x82KnzrrTfPPPNvxXexK7kDDjgwFi/NmDG9yDlLl/56/vl/W7JkcRAEO+1U57rrhuR/v8VISUkZOPCI/fc/4N//vmfkyBHRaPSBB+6tXr36kUceXeT8VatWTZ48MRz367dfnTp1N3fno44adPfddwRBsH79+q+//qpfv/1Ksh9KTbxUSq1bt27duvW2XiUpKalTp06dOnXa1gtRfra6uA0AAAC2hWg0WLQo8uuvf/7/bm3QINq4cXRb/wf6nDlzrrqquMZfGzduGDHi1dGjP7z11tv32KPXtt1NCXz77dfXXXdtRsbqzU1YsWL5q6++3LRpsxNOODmuO99443Vh17LNmTx50mWXXXTCCSddfPHlRRZ8BEHw8ccfDRnyzyLDoVBeXt706dMqVapcOCLammtD33337T/+cfXmfjjLly+/7757PvjgvaFD769Vq4hKlHXr1l1xxSWx1l5FyshY/e677xxyyMBSxEtffPF5bNynT3G9jnr33jOMl4IgGDv2s1LES9nZ2d9++3U47ty5SzHH29SsWbNz5y6TJ08KguDrr7/Kzs4uXbleeKBU7J6FJ2zYsOG99347CGqfffZLS6tRilVKZ9OmTVdffUX+vnAxCxcu+PvfL/3nP4eE50599NEHN910feEPYV5e3ogRr82aNeuBB4ZVqVLwpKjCk998841wvM8++9aoUSMIgoEDjwjjpaVLfx037su+fffe6rcVBEHQpEnT2HjVqtWFJ2zatOnKKy8Ls6X27Tvee+8DderUiWuJatWqXXvt9a1atb7vvnuCILjrrtvbtWvfpcvOhWd+9dUXYagWBEHv3n2KuWfv3n98/seO/Uy8tK2Jl6CCOHsJAACA7UNOTnD//ZUefbTSsmV//mwpVK9e9Nxzsy++ODtl2383Vrly5a5du3Xs2Ll+/QbVq1dfv37dvHlzv/ji8yVLlgRBsGZNxlVXXf7UU8+3aNFym29l8z766IMhQ67Lzc0JH9aqVWvPPfdq06ZtzZo1161bv2jRwqlTp/zww9To1n2b0apV6y5ddm7ZslV6es28vNxly5ZOmDAhFrq8+OLw9PRaZ555duEL582bmz8f6tx5591336Nhw0apqanr169bvnz5rFkzJ06ckJWVWbbXhj755OPrrrsmJ+e3H07r1m369OnbuHGT5OTkX375ecyY0WHl0LRpP1xwwblPPPF04ZDgrrv+FXubNWrU2Guvfdq2bVezZs3c3LzMzLXz58+fNm3qrFkzS/6TLCCW3iUnJ++8c9diZnbt2i0pKSmsISs+89uc+fPnbdy4MRx369a9+MndunUP46WNGzf+/PP8Nm3almLFL774LDbu3n23whN++OH7zMzf/vj22GOPUixRanfd9a8wW9pjj1577NGzdu3aq1ev/uyzT77/fkoQBHl5eXfccesuu3RfunRp+M9XWALYsmXrlJTkWbNmjhr1zrp1WUEQfP/95CeeeLzweUIFfPPNuDDOCYIgTK2CINhtt90bNWq8ePGiIAjefPONsoqXYnFOEATJyUWEvsOGPTBjxo9BELRr1/7hhx+rXj2tdAudcMLJGzdufPjhB3Nzc2699aannx5eOIbM/1kt/lPXtGmzOnXqrlixPCjtJ5y4iJegfO0o/6IOAABAYsjJCY48ssqXX5ZNP6VEsWxZ5JZbKo8ZkzxixIZtlzC1bNnqr389bb/99i/8xevll1/18ssvPPjgv3Nzc9evX3/nnbc99NBj22ofWzJnzuxbbrkxzJYikcjpp5912mlnFM5Ili5d+tprL5WwhVd+1apVO/nkU4844sgiI7Rp03644YZrw5ZxTzzx6MEHH1K4+d5zzz0d5kOVK1e+7bY799prn8L3yc7O/uqrL6dOnVKG1wZBsGDBLzffPCTMlqpVq37ttdcVONfnvPMueOyxR5555r9BEMyePeuBB+678spr809YvHhRWFwSBEGfPn3/7/9uK7K8ZvHiRW+88XopfrxBEMydOycc1K1br/gKmCpVqtatWy88OSl2VenWCoKgWbNmxU/Of6DU3LlzShEvzZ0756GHHgjH9erVO+SQwwrPyX8gU7t27YMgyMjIeO+9UR9//OHChQsyMjLS0mo0atRot912P+igQ8IJZeLXX5e89dbIWrVq/etfd+26a4/Y86eccvpjjz0cdpbbtGnTo48O+/77ybm5OYcffuTll19Zteoff0AnnXTqueeeGfaifOml4aeeekZYkLQ5I0eOCAf16tXv2bN3OI5EIoceOvCJJx4LgmDs2M9XrFheTO+4kps/f15sXLv2TgVenTnzp1deeTEIgpo1a911172F/4r79dcl77zz1oQJ361cuaJatWqNGzfp12+/ffbZt8gKttNOO3PixO/GjftqzpzZI0eOKHwq2Ny5s8NBcnJykyZbaM7ZtGnTMF6aP39eNBot+bloRZoxY/rf/37pTz/NyMhYHYlE0tNrNm3arHv3Xffbr38ZfpYSV9HVpgAAAADsCO6/v9KOli3FfPFF8gMPlKZbV0m0atV6+PBXBg48oshf6k9OTj7xxL9efPHl4cPvvhsfHkdfIe66618bNmwIx9dcc925555fZERRv37988676PDDj4z3/v/+97CLLrp0c+VZnTt3efDBR8Nv1XNzc1999eXCc8aP/yYcHHXUoCLzoSAIKlWqtM8+/c4//6IyvDYIgrvvvj2sL0lNTb3//mEFsqUgCFJSKp1//kXHHHN8+HDEiNcWLVqUf8J33/121k5ycsoNN9y8udZtjRo1Pu+8C4vsDLZFCxf+dp5Tw4ZbbqzXsGGjcBA7rql0a+W/1RbXimu53NzcjIyMSZMm/PvfQ08//a+rVq0MgqBatWq33HJHkafRhzU0oXr1GnzyyccnnHD0vffeNXnypOXLl2dnZ69atXLatB+ee+7pU0898YYb/pGVlVXCnRQvGo0mJ6fce++D+bOl0NlnnxvL0j788P0lS5bsv/8B//znDfmzpSAIGjdufOmlV4TjTZs2xQ61KtLKlSs///zTcHzIIYflP2PpsMMOD0OU3Nyct99+c+ve1m/eeeet2LhwSdwTTzwWljddcsnlhT8Gr7zy4vHHH/3YYw+PH//NnDmzp079/oMP3vvnP68+/fSTZ8786cMP3+/de7fevXfLv9VrrrkuOTklCIKXX36hcJXkwoW/fXjq1KlbzAlnodh+1q9fX/iktHjNnj1r7NjPli79dePGjRs2bFi69NcJE8Y/+eTjp5xywiWXnJ//H4cdk3gJylcsMNccDwAAgIoWjQaPPLKt8pWE8MgjlbbRf6BXqlRpc8cIxRxzzHGxb0KLPL6lHHz//eSJEyeE4/33P2Bzhw9tjSpVqhQ/oWHDRrF4psifw4oVv31H3Lx5y3hX35prZ878ady4r8LxKaecXkzfuQsuuDg8hSgvL2/EiFeL3EB6enrt2kWczLSVNm7cGGvcl55exNFEBcTqYzZt2lTMeVSbkz+b2eJy6el/ZGnFtB8MgmDRokVh5NC79259++5x0EH7DR589gsvPLdx44YgCHbfveeTTz67yy7di7x21apVsfEXX3x+7bVXhs9EIpHatWvXrVs3lsREo9EPPnjv7LNPW716VZG3itcRRxzZqVPnws8nJSUdfPChsYcpKSmXXXZlkXfo12/fWAI9der3xaz1zjtvxv6gY53xQo0bN4lFXG+99cZWNrEMguDTT8fk/xj3739g/lcXL1706adjgiDo0KHjoYcOLHDt888/c889d8YS6/xmz551wQV/mzNnduGXGjZs1L//gCAIfv55fuE6wtinrpizvmJq1PhjTplEiZUqVapTp27Dhg0LpJtffz3utNNOGjfuy61fInGJlwAAAAB2UIsWRZYv36HbuC9bFlm0qMJ+AsnJyXvs0TMcT5v2Q4Xs4aOPPoiNTz31jArZQxAEvXr91ulr/vx5hb8RTk1NDQfffz853jtvzbXvv/9uOEhJSTn++JOKmVm1atXwy/EgCL7+elyRG1i1auUvv/wc7x62aP36dYXXKkb+tC8szNp2y6Wm/rFWVta6YmZu/g6pZ5997t1339eyZavNzVm7dk1sfOedt0Wj0apVq55//kVvv/3Bu++OfvvtDz744JPrrhtSt+5vLePmzp1z/fX/CA+g2koFYp78OnbsFBvvvnvPevXqFTktJaVS27a/1TnNnz+3mLXefPONcNC1a7fCtYCxnSxYsCBWMBeXvLy8jIyM77779uabh1xzzd9jZy/tuutu++zTL//MDz98P0yw/vrX0wrcZPr0acOGPRiOmzZtOmTIze+888Hnn389YsTbl112Za1atdasWfPUU08UuYH+/Q8IB99+W3D/sU9dOXzCQ8nJyb1797nqqn+89NLrn3zy5TvvfPDGG6M+/njsyy+/ceGFl8Q+S5mZmddee+WPP04v3Sp/AuIlKFcR1UsAAADA72KnpITH4ZS/WOlS48ZN8n8hXs5iP4e8vLzly5cVeLVjx98KRN57b9Tjjz8cV0XC1lw7efLEcLDLLt2LPxQnCIIuXX6rbZo9e+aGDesLbyAIgiuvvKzIE562xsaNG2PjIg+2KaBy5cpFXrstliv5WikpKU1/16BBw1gTuY0bN/7nP4/+5S+Hvv76q5u7Nn/ilZOTU7Vq1YceeuzUU8+oU6dO+GT16tUHDvzLE088EysW/Pbbrz/5ZEzxm9+ilJSUjh07bu7V/AcgFd/zMDYzM3OzBV7ffTc+lk0edtgRhSfsv/8Bsdqa2BFNxZs48btYxVjv3rvtuefuBx203wUXnDtq1Fux+qeWLVvddttdBS786qsvgyCoWrXq3nv3K/DSf/7zaHiKW/v2Hf773+cPOWRgnTp1K1Wq1KhR4+OPP/HJJ5+tW7fu5oqrunffLRxMmza1wEuxD0+8n/ANG+L+hIcef/yp++576Oijj2nRomX+PoTNmzf/619PGz781Vgivn79+ttu+7+trxhLUNvs7EIAAAAAtm+NG0fr1o3uyAVM9epFGzfetl8Lzpjx48cffzRjxvT58+evXbtm/fr1sbKA/NauXbtNt7E5sUZVnTt32aYLrV696uOPR0+c+N2cObNXrFi+bt26TZs2FTmz8I/imGOOix2h9MQTjz///LO9evXp0WOPXXbp3rZtu/xf/ha2Ndf+9NOMcNCqVZstvsGddvotzMjNzV2+fHnTps3Ch7vs0r19+w7hrebNm3v22ae3bNlqzz336t59t27dutWqtbXt8vLXc5Sk2V3+H3tJakG2ZrmSr1W/fv1XX/2fQ4N++eXnMWNGDx/+7OrVqzMyVt95521z5sz6+9+vKWpL/9N9cfDgC4r8MDdo0PC664ZceOHg8OGLLz6///79i99/8dLTaxZzDlD+A8zyR03FzFy3brMFXrHEKDW1yoABBxaeULVq1f33PyA8zejTT8dkZKyuWbNWcbvfktTUKkceedTgwRcWOC8qGo2GpZa77NK9QN/LjIzVseaW119/U+FEtnHjJldccfW11xbdJ7BmzZpVqlTZsGHDypUrC20mdf369UH8n/AqVeL+hId22mmnYl5NT0+/4457zjzz1PDvz59++vHzzz/dZ599S7dWQhMvQQXZUTNtAAAAth+RSDB4cPYtt1Te8tQ/qcGDsyPbLFybO3fOXXfdPmHC+JJM3lzWsk1lZWXGTnOJtXsqc2EByksvDS/heyw8bd999//rX0977rmnw4cbNmz49NMx4ekvaWlp3bvvtt9+/ffbr3+Bk1G28tr169fHaiZeffWlV199qaRvOAjWrPmjXVskErnlltsvvHBwrEBt3ry58+bNHT782Ugk0rp1m169+hx00CEdOmy2DqZ4Vav+sfOSVCPln1OtWvVtulz+CdWrF/GnU4xmzZqfeuoZhx9+5KWXXjBjxo9BELz66stduux8yCEFD/vJn39Uq1atmPPDdt+9Zyzq++GH77OysqpXj/snEJO/SqZMZm6uAiYjI+OTT0aH43333S92VlMBAwceEcZLmzZtGjXq7RNP/Gvxy6WmpuZv2ReJJFWtWi09vUaLFi07d965X79909KKqNj79dcl4YFY7dp1KPDSlCmTw5aDnTvv3K5d+yIX7ddvv9q1d1q1qmCAFKpRI33Dhg35ux2GqlatFsZL5fAJL6EqVaqed96FV155Wfjws88+ES8B5WDH/Y0wAAAAtkMXX5w9ZkzyF18UV8PxZ9W3b+5FF235d+FLZ9q0Hy655PwChTjJySk1a9asXLlSSspvX8qtWbMmjCIqpLdS/uNw8scGZWjjxo1XXHHx+PEFD1NJT09PTa2Smvrb1+45OblLliwOx0X+KC688JJdd93tP/95dPr0afmfz8zMHDv2s7FjP7v//nvPOutvxx13QlldW0ynsi3asGFD/ofNm7d49tkXnnzy8bfeejP/YTDRaHT27FmzZ88aPvzZ3r37XHnltU2aNI13rdTU1JSUlDAmLPy9fGGx6KtSpUolaTVWQP48ZovL5Y/ZSvdFf+3ate+6697jjz86TBcef/zRgw8+LPK/mXBa2h9xS5cuXfOXDRXWo8ceYbyUm5s7c+ZP3bvvWopdlbP33nsnlrkW2Rkv1L37bk2bNluw4JcgCN58840txkudO+/88MOPx7uZVatWhYO6dQueJrV48eLf79w52IykpKSOHTvFipwKCPsc5v8DDVWvXn3lyhVByao816zJiI2LjJzLSp8+e1arVi2sOfv++zJuepkoxEsAAAAAO66UlGDEiA0PPFDpkUcqLVu2o/xOZL160cGDsy+6KDtl23w3tmnTpiFD/hn7JrRXr96HH35k167d6tWrn5T0P0ehP/74w088Efc3vGUlf0FJ/gNsytDTTz8Zy5YaNmx47LEn7LFHrxYtWhZolbZo0cKjjz68+Fv17bt33757z50755tvxk2aNPH77ycvX7489mpGxuqhQ++cPXvmtddeXybX5m/8lZ6enp6eXvJ3XbhapWbNWpddduV55134zTdfT5gwfsqUKT/99GOsdCwIgnHjvjrjjL8+8sgTrVtvuRFfAU2aNJ0/f14QBLGIrhixOaWIsgpctcXl8k8o3XJBENSv32C//Q4YNeqtIAgWLVo4a9bMApUx+e8cO11pcxo1ahwbr169qnRbKmf5z1K6+OLzSnLJ3LlzpkyZ3K3bLmW+mbB0KfjforFQVtZviWyRZU8xm/tHKSMjI8x0a9cu2JiuSZMm4dFTy5cvy8nJSSn2L+7Yp65q1arFtyXcSikplRo3bjJr1swgCML0awckXoLyFfv1Cs3xAAAA2D6kpASXXZZ96aXZixZFfv31z58wNWgQbdw4uu164gVB8Pnnn4ZfhgZBcOqpZ5x//kWbm7l2belLZLZe9eppscKX/HFLWcnJyX7llRfDccuWrR5//KnCx7GESn70VKtWrVu1an388ScFQfDzzz9/9dUXo0a9FTZPC4Jg5MgR++67f58+fbf+2rS0tOTklNzcnCAIBg78y8UXX1bCHRajSpWq++yzb9hEa8OG9RMnTvjkk48/+OC9sDRnzZo1t9560xNPPBPvbVu2bBXGS8uWLduwYX0x5TsbNqxfvnxZOG7VqnUp3kLLlq1i49iHfHPCSpqtWS7Uvn37UaNii/5SIF5q3bptbByrh9uc/MlfhXSkjNf330+OHZAWl5EjX98W8VLlyr8Fw7GcKSYWOBWfVYef9sImT54UDjp1Klj81LJl63HjvgqCIDc3d9Gihc2btyjm/gsWLAgHLVq0jGzTv+jzhdAl6dr3pyReAgAAACCIRIImTaJNmvhtyDLwzTfjwkH16mlnn31uMTMXLlxQLjvarNat2/70049BEEyb9kOZ33zatGmx3Oiss/62uWwpCIKFCxeW4v7Nmzdv3rz58cef+PzzzzzwwH3hk6NGvb25eCmuayORSMuWLWfPnhUEQezYpDJUpUrVPn369unT95xzBg8efHaYxPzww9T58+e1aNEyrlu1b98hPE0qNzf3hx+m9uixx+Zmfv/9lPB0nCAINnc6TvHCyrPwy/QpUyYXP3ny5InhIDU1tfhIoHiVKv2RCeXl5RZ4tUOHPw4Byt+Or0j5J9SsWavUWyo3sdKl5OTkRo22UJsVBMHatZkZGauDIBg9+sPLL79ycwc1lVqtWrXCwbJlywq8VK9e/XAQ/lOzOWG5T2FvvfVGOOjdu0+Bl9q3/+OPeMqUScV8lhYs+GXFit+S8tJ9wuOycuVvh0glxGdpW0ja8hSgDP2emfu3dQAAAPizin3x2qJFy8J90mI2bdo0ZcqkctrTZuy2227hYNGihbE6nrKybNnS2Lht23bFzPz226+3ZqGTTz41dv+5c+eU1bW77/5bTjNx4oRYKlPm6tatd+GFl8Qexrv/IAj69t07Nv7yy6JPtQmNG/dlkVeVXOXKlffYo1c4/uGHqcXEORkZGbHMsmfP3qU45ylm0aI/0sc6deoUeLVz553r1v2tB9oWP8MzZkyPjZs0aVLqLZWPrKzM0aM/DMe9evV59dU3t/i/W2+9PZy/YcOG999/r8y31KBBw/CPcvbsgilR167dwsHEiRM3l8hOnTol/59mzNdff/X5558GQdC5c5euXQsWXfXp0zc5+bcDAr/66suCF+ez9Z/wkvv11yWx99K4cePiJ/9ZiZcAAAAAYJvYtKm4jklvv/1myZvCbSMHHHBQbPz0009uu4WKaUS2evWq998ftblXSyhW8ZP/QKOtvHbAgN9+OCtWLH///Xe3Znsl3EDhPZREx46dYkcKjRr11uZ+1Js2bXrnnbfCcePGTTp06Bj3RoMgCIL99usfu+Hbb7+5uWlvv/1mdnZ2gUtKIScnJ6zNCoIgJSWlcElKUlLSvvv+dv/58+fNnPnT5m6Vmbn2q69+i98aNmzUtGmzUu+qfLz//nuxVnIHHXRISS7Zbbfd69WrF45Hjny9zLeUnJwc1hJNmjQpJyc7/0v16zcIE6bc3Jzbb7+18Cd5/fr1d955e+F7Tp8+7frrrw2CIBKJnHfehYUn1K5de5dddg3Hn346JlafVNiIEa+FgypVqvTuvWfJ31cpvPji8Ni4V69tu9Z2S7wE5SvW8NPZSwAAAPAn1bDhbz2s5syZXeSv6gdBsGDBL8OG3V+Omyrazjt33XXXHuH4448/inXiKhOxn0MQBGPHflbknLy8vFtvvXndus0e1rJhw/pYB6rNiUajsY5bsaBlK68NgmDnnbv17Nk7HN97793h+UZbVOAUlkWLFm3xkvyJSIE9lNCJJ/41HKxateqJJx4tcs7jjz+yevXq3+efXOSc774b37v3buH/zjvvnCLn9O8/INYG7amnnijyu/7ly5fF0sr69Rv07z+g8Jxi/tDze+KJx2JnOPXq1TstrYgWiyeccFKsOuq+++7eXKnZI488FFt04MAjSrJ6xYrlQ1WrVg2P7NqipKSkAQMODsczZvz444/Ti59fCrvv3jMIgqyszC++GFvgpdNPPyscfPnl2EsuOX/q1O+j0WgQBLm5uePHf3PuuWeFrThjFi5c8OCD//7b384Iy+AGD74gVhtXQOwTm5OT8+9/Dy1yzuuvvxrry3f00cfGDkbKb9GiRbFP+JFHHlZ4Ql5eXiwWLcaXX37x8su/HSxXuXLlgw8+dIuX/CmJlwAAAACgLMV+az4vL++6665dtWpVgQkTJnw3ePBZmZmZSUkV/+3cVVddG/se9vbbb3nssYc3bFhfeNqyZcseeeSh2PkoJdGxY6fYSS3PPPNUrHAkZuXKlddee+Xnn39azM9h5cpVRx112L/+9X+TJk2MFvXbutnZ2UOH3hXLfvbdd/8yuTZ05ZXXhEdGrVmTcc45p7/77tu5uQXP/gmtWbPm3XffPuecM95447X8z//nP4+efPJxr7/+auGPQWjGjB/vv/+3r8sbNGjYqVPnIqcV7+ijBzVt2jQcP/vs06+++lKBCa+88uLzzz8Tjps2bXrUUYNKsUqoSpUqf/vb4HC8Zk3GZZddXOAYnqVLl15++cVr1mSED//2t8GpqamF73PSScc+/PCDP/88f3MLrVix4tZbb/rvf/8TPkxOTjn//IuLnNm0abNjjz0hHH/33fghQ/6ZlZWVf0JOTs6jjw579dWXw4c77VTnhBNO2uI7rVg//jg91utv7733rVq1agkvPPDAg2Pjsg2MQ7GqvqeeeqLAP1Z9++595JFHh+Pvvht/9tmnHXBAvyOPPPSAA/a58MLBP/30Y+XKlY866phwwt133z5o0BHPPfd0dnZ2cnLy4MEXnHbamZtbdO+9+3Xv/lsB0wcfvDds2AMFlv7449Gx2KlGjRrF3Kp4WVlZRx99+PPPP1v4cKnQxo0bn3nmqauuuiw397fyrOOOO3GHbY6XUtEbgB2V6iUAAAD4k9prr73btWsflqRMmzb1uOOOPOCAA9u161CpUsqyZcu++WbcpEkTgyBo2LBh3757v/baKxW721atWv/zn0NuvPH63NycaDT65JOPv/76K3vuuXfbtu3S09M3bFi/aNGiH374/vvvp+Tl5V166RUlv3NycvKpp54ZZicbN264/PKLe/XqvfvuPWvVqp2ZuXb69Gmff/7ZunVZQRAMHnzBsGEPbO4+GzduHDlyxMiRI+rUqbvzzl3btWtfq1btqlWrZmVlzZ07Z+zYz2KHPHXs2Omwww4vq2uDIGjWrPktt9xx9dWXb9iwYc2aNTfddMOwYQ/27NmrTZt26ek1cnJyMzPXLly4YObMn6ZPnx5+3dy//wEFbjJ79qw777ztnnvu6NChU6dOnZo0aZaeXiMvL7ps2dIpUyZ9++03sWqbyy77e+kSx5SUSrfccvt5552zfv36vLy8u+++4+233+zXb786deouX778k08+jlWNVKtW7ZZb7khJKf1JSEEQDBz4l2+//eaDD94LguCnn3487rgjDzzw4Hbt2kej0ZkzZ37wwbsbNmwIZx500CGHHVZ0nVBm5tqnn37y6aefbNGiZadOnVu2bJWeXjM1NXX9+vVLl/46ffq0CRO+i32Dn5SUdM01/2jTpu3mtnTuuedPn/7DxIkTgiD48MP3x4//pn//Aa1atUlOTl64cMGYMR8tWLAgnFmpUqV//euuIqugtiv5k6GDDy5RZ7xQx46dWrRoGYamH3743iWXXFalSkmjqZJo27bdLrt0nzx50vTp0957b9Qhh/xPDdBVV/0jOTk59tdaVlZmVlZmOK5de6chQ25eu3btiBGvBkEQ+5B069b9/PMviqVHmzNkyP+dffbpYbXcM8/895NPPh4w4MD69RtmZKz+6qsvJ078LpyWnJxy00231axZs9RvcNmypQ88cO+DD97XsWOn9u07NGvWPC0tLSUlJSNjzcyZM8aN+zJWBRgEQd++ew8efEGp10p04iUoX5HIlucAAAAAiSwpKem22+4cPPjs8JvQtWvXxk4EiWnQoOFdd933yScfV8QGCxow4KD09PTrr782bFG1evXqUaPeKpM7n3DCST/88P3o0R8GQRCNRseN+2rcuK/yTwirFvr3P7CYeClmxYrln346JnYSTwGdO3e55577U1KK/sKz1Nf26tX78cefuuaavy9cuCAIgmXLlsZOMCpSUlJykc/n5uZOmzZ12rSpRb6akpLy979fU7h8quQ6dux8++33XH/9tWHZ0I8/Ti/cGK1mzVr/93//6tixU6lXCUUikeuvvyknJ+fjjz8KgmD9+vVFVsn07z/guutujGzp27D58+cV33iwXr16V155bfHd4VJTU++6695rrrly/PhvgiBYtWpVrFYpv1q1at1665277NK9+C1VuA0b1ofpXRAEtWvXjjVpLKGDDjr0sceGBUGQmZn50UcflnknwDPP/Nsll5wfBMGDD/67R4/d69dvEHspKSnpyiuvPfDAQ0aMeHXSpAkrV66sWrVa48aN99ln36OOGlSrVu2PPvqgevW09PT0Jk2a7rJL97599+7cuUtJFm3UqPHQofdfffXlS5YsCYLg55/nP/HE4wXmVKlS5Zprrttzz75b/x6j0ej06dOmT5+2uQmRSOT44086//yLNvd3zo5gx33nAAAAALCNNGvW/Jlnht933z0ff/xRgXZq1aunHXjgQeeff3GNGjW2k3gpCIJevfq8+uqbzz339FtvjVy1qojziurXb7D//gfEm38kJSXdcsvtXbt2e/rp/xa4bSQS2WWX7ueff3G3brsUc0BR3bp1//GPG778cuykSRPyFw3k17p1m6OPPvaoowYlJyeX1bX5tWvX/sUXX3vzzTdeffWluXPnFDmnYcNGPXv2HjDgwB499sj//IknnlynTp2vvx43e/bMIhvrValSZZ999jvrrHNatGi5uQ2UUK9evV944ZWHHrr/448/ipWGhKpWrbrffv0vuODiOnXqbuUqoUqVKt12253vvTfq2Wefih14E9OmTdtTTz3joIOKq7n5+9+vGTv2s0mTJixfXsTpTaF27dofcsjAv/zlqOrVq29xS2lpNR544OE333zjhReemzdvboFXq1WrfsQRfznllDPq1KmzxVtVuI8++iBW9LP//gfEG2AcdNDBYbwUBMHIkSPKPF7q1at3//4DRo/+cMWK5ZdddtFjjz1ZvXpa/gm77NJ9cxneAQcceMABB5Zu3Q4dOj7//MuPPDLs/fdHhVl4TKVKlfbcc68LL7ykWbPmpbt5qEqVKieccNKECRNmz54VK54roFq16v37H3DssSe0b99ha9b6E4gU2XUUmjZtunDhwiZNmsTqRikTyx9+eNm/7w+CIEhK6jTth4reDgAAAH/48/238Lp16+bPn5+XF83Li9ar1zA1tYhzztnWVq5cOWnSxCVLFmdnb9ppp53q12/YvfuuRR5Fs52IRqMzZvw4d+7sVatWb9y4oVq1avXrN2jTpl3z5lv1pW12dvbUqVNmz561du3aGjVq1KlTt0uXrvXr14/rJgsW/PLzz/MXL16clZWZm5tbrVr1evXqd+jQoUmTptv02vyWLVs2deqUlStXrl27Jjk5OS0trVGjxq1atW7QoGHxF65fv37WrJ8WLly4atXK9es3VK5cqUaN9JYtW3Xo0KFse5eFa02cOOHXXxdnZGTUrFmzQYNGu+66W8kP74nXnDmzZ878KUyJ6tat265d+9at25T88qVLl86bN3fx4kVr167ZtGlTlSpV09LSGjVq1L59x1K3OJszZ/bs2bOWLVuWk5NTs2bNli1bdemy845cZVLmMjIyTjvtpCVLFgdB0K1b99tvv3unnXYqt9Wzs7MnTZqwePHiVatWVq+eVr9+g+7dd01PTy/DJTZt2jR37pyFCxeuWLFs3bp1eXl5YdFV27btWrduUybH5m3cuGHZsiVJSZGkpEiLFi2qVau29fcsZ+Ilivbn+1fq7YR4CQAAYLv15/tvYfESANvIrFkzzz//b2Ezxnr16v/rX3fuvHO3kl++YsWKF1547owzzipQ+bTj+BPES2UQsgFxiHWblewCAAAAAImpbdt2998/rHbtnYIgWLZs6d/+duYNN/yzcFvCwjIyVj/zzFPHH3/Uc889/Y9/XJWTU3QPOrZ/6gEBAAAAAID4dOzY6Yknnr722itnzPgxLy/vgw/e/eij93fbbffevfv07Nm7WbPmsZaMeXl5Cxb8MnnyxG+//eaTTz7etGlT7CaZmWtr1apdQe+ArSJeggqiegkAAAAASGSNGzd54omnn376v88889TGjRvy8vLGj/9m/PhvguDfQRBUqVKlVq1a69dvWLt2TV5eXv4L09PTzz//oiOPHFRBG6cMiJegnEW2PAUAAAAAIBGkpFQ666y/HX74kS+9NPztt9/MyFgde2nDhg1LliwpML9hw0YnnHDSEUcclYinDZGfeAkAAAAAACi9+vXrX3TRpeedd+F3342fMOHbadOmLVy4YPXqVRs3bqxePa127doNGzbs3n23nj17d+rUOSkpqaL3SxkQL0H5iqheAgAAAAD+hFJSUnr16t2rV++K3gjlQUgIAAAAAABAHMRLUL7yVS9Fo9EK3AgAAAAAAJSOeAkAAAAA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t1MoluolAAAAAAASUILFS998880///nPjz/+OPZMNBoNgiA5OTn/tJycnI4dO/76669JSUmzZs1q0aJFeW8UihGJbHkOAAAAAABsrxKpOd4tt9yy1157ffzxx2GkFI1Go9FopKhv6itVqnTOOedEo9G8vLznn3++3HcKAAAAAADwp5Uw8dLNN998ww035OTkhA+rV6/er1+/4447LrqZ9mInnHBCOHjnnXfKaYtQQrFMVHM8AAAAAAASUGLES1999dWNN94YFio1bdp0+PDhK1euHDNmzIsvvhgEQZEFTJ06dWrVqlU0Gh0/fvy6devKe8cAAAAAAAB/UokRL1199dXhoEePHpMnTz7hhBNSUrZ8atTuu+8eBEFOTs7UqVO37f4gLn8EoqqXAAAAAABIPAkQLy1ZsuSLL76IRCJVq1Z97bXXatWqVcILu3TpEg5++umnbbU5AAAAAACAHUwCxEtjx44ND1g68sgjmzdvXvIL69atGw5WrFixTXYGW2dzJ4cBAAAAAMD2LAHipcWLF4eD3r17x3VhWlpaOMjKyirjPcHWKOq0MAAAAAAASBQJEC+tW7cuHMTiohLKzMws3YVQThQvAQAAAACQgBIgXor1uFu6dGlcF86fP7/AHWC7oHgJAAAAAIBElgDxUrNmzcLB2LFj47rw888/DwedO3cu4z0BAAAAAADsqBIgXtprr70qV64cjUbff//9efPmlfCqH374Ydy4cUEQ7LTTTt27d99224N4RWJnL0V1xwMAAAAAIPEkQLxUrVq1AQMGBEGQk5NzyimnZGdnb/GSvLy88847LwiCSCRy3HHHbfMtAgAAAAAA7DASIF4KguCmm24KCz6+/PLL/fbbb+7cucVMzszMHDRoUNhJr1KlStdcc0057RJKSvUSAAAAAAAJLKWiN1Aiu+2226WXXnrvvfdGIpEvv/yyY8eORx111OGHHx47VCknJ2fatGkLFiz4+OOPn3jiiZUrVwZBEIlE/vWvf8WObgIAAAAAAGDrJUa8FATB3XffvWDBgldeeSUSiWRnZ7/yyiuvvPJK+FI0Gp0/f37Xrl1jD8NSp3POOeeyyy6rsB3DFqleAgAAAAAgASVGc7wgCCKRyEsvvXT77benpPwRiYVJUhgmRaPR6O9f1qekpNx9992PPPJIxewViheJbHkOAAAAAABsrxImXgpdddVV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sKFDhx522GH1s6UQwtSpU88666xDDjmkqqoqiqGnTp16ySWXRHFmAAAAAACARlK9VJhhw4bdfPPNmXarVq2OP/74AQMGtG7devLkyX/729/mz58fQhg7duzgwYPHjBnTqlWrZhw6nU7/8pe//Prrr5vxnCQsrXwJAAAAAICWR7xUgBdeeOGaa67JtLfccssnn3xyhx12yD569dVXDx48+Pnnnw8hPP/889dee+3ll1/ejKPfeeedL7zwQghhhx12mDx5cjOembhFtnYiAAAAAADEwOJ4jZVOp88///xMu7Ky8vHHH8/NlkIInTp1GjVqVL9+/TI3b7zxxtmzZzfX6DNmzLjgggtCCG3btr311lub67QkTPUSAAAAAAAtkHipsV566aUJEyZk2qeeeupOO+1Uv0+7du2uv/76THvx4sUjR45srtFPOeWURYsWhRCuvPLKvn37NtdpSUQqqF4CAAAAAKAFEy811sMPP5xtn3baaevqdswxx3Tv3r3+IU3x5z//+Zlnngkh7Lbbbueee26znBMAAAAAAKA44qXGGj16dKbRq1evNZbFy1VRUXHooYdm2hMnTvz000+bOO6sWbOGDh2aOfMf//jH8vLyJp6Q5GX3XrI4HgAAAAAALZB4qVEWLlz48ccfZ9r77bdf/s65HSZOnNjEoU8//fQFCxaEEIYOHbrrrrs28WwAAAAAAABNJF5qlMmTJ2fb22yzTf7OuR1yDyzC/fffP2rUqBBCv379rrjiiqacivWI6iUAAAAAAFoy8VKjTJs2Ldvu06dP/s65HXIPLNScOXPOPvvsTHvkyJFt2rQp+lQAAAAAAADNpSLpCbQMCxcuzLa7du2av3OXLl3WemChzjzzzLlz54YQTj755EMOOaTo87Deql2wYOGzzyY9i1KTKivb6NvfbtW9e9ITAQAAAAAoWeKlRlm8eHG23WAVUdu2bbPtRYsWFTfiY4899ve//z2EsOmmm954443FnSSPm2666aabbsrTYdasWc0+KN9YuThe9SeffH72r5KdS0lKtWmz5YMPbLTttklPBAAAAACgNImXGmXp0qXZdmVlZf7OrVu3XuuBjTd//vzTTz890x4+fHiD9VJFWLhw4eeff97sp6UxynICSKKQXrp0yUsviZcAAAAAACIiXmqU3Iql6urq/J2XL1++1gMb75xzzvniiy9CCIMG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2yH3wOb10EMPZdv77LNPRKPQXOy9FJ/cSjEvKwAAAABANMRLDcstFerTp0/+zrkdcg9sRlVVVXfccUemXVlZeeyxx0YxCs1I9VJsUuIlAAAAAIDoiZcatnDhwmy7a9eu+Tt36dJlrQc2o7POOuvLL7/MtM8444zNNtssilFoRvZeAgAAAACglIiXGrZ48eJsu02bNvk7t23bNttetGhRs09mxIgR99xzT6bdt2/fq666qtmHoNmpXoqP6iUAAAAAgOhVJD2BFmDp0qXZdmVlZf7OrVu3XuuBzWL06NFnn312dqAHH3ywQ4cOxZ3qpptuuummm/J0mDVrVnFnpj57L8UnJ15Ke1kBAAAAAKIhXmpYbsVSdXV1/s7Lly9f64FNN3bs2O9///u1tbUhhPLy8r/97W977LFH0WdbuHDh559/3nyzIx+L4wEAAAAAUErESw1r3759tt1gQVJuh6JLi+obN27c0UcfnTl5WVnZX/7yl8GDBzflhB07duzZs2eeDrNmzaoTejSfVCpfiZJXuvnkLo6X3CwAAAAAAEqaeKlhHTt2zLbnz5+fv/O8efOy7eaKl15++eUjjzxyyZIlIYSysrI//elPP/7xj5t4zqFDhw4dOjRPhy222EJ5UzMqKwu1tet8VLzUbOy9BAAAAAAQvYb2hCGEvn37ZtuffPJJ/s65Hfr169f00V9++eXDDz988eLFIYRUKnXXXXedeOKJTT8tMcu//ZIcpNmstg6hlxUAAAAAIBLipYbtsMMO2fZHH32Uv/OUKVPWemBxXnnllcMPP3zRokUhhFQqdeedd/7iF79o4jlJRP54SfUSAAAAAAAtiHipYR07dtxqq60y7X//+9/5O48fPz7b3nnnnZsy7iuvvHLYYYdls6URI0accsopTTkhCRIvxSNlcTwAAAAAgOiJlxpl0KBBmcaMGTMmT568rm41NTXPP/98pr3zzjv37t276BFfffXVbN1SCOG222477bTTij4biUul8j0qXmo24iUAAAAAgOiJlxpl8ODB2fadd965rm6jRo2aNWtW/UMK9frrrx922GELFy7M3LztttvOOOOMos/G+sDeSzERLwEAAAAARE+81CgHHHDA7rvvnmmPHDly0qRJ9fssWbLkggsuyLTbtWt36qmn1u9z0kknpVa6++671zrWhAkTBg4cmM2Wbr311iFDhjT9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iZdoGVarXvpqXoIzAQAAACgNvpQtxnPPPXfZZZe9+uqra9zfr1+/c845Z8iQIalUqlkGWrRo0aWXXnrPPffMm7fad2GVlZVHHXXU7373u379+jXLQMkqX5ko1YTmed3WL5++HlYsC602SnoepWzLLUMqFdKlFU22CJ99Fr78Mmy2WdLzgIZUdMuNl+YmOBMAAACA0iBeKtjQoUNvueWW9Nq+yZ46depZZ531yCOPPProo506dWriQBMnTjz22GOnT59e/6Hq6upHH3302Wef/d///d8f/vCHTRwon406hoMvifD8IYQQyue9FaomhRDqKlqHg4dFPVxMvpoWJt4XQgh1K8KsiaH3XklPqJR16hS23z5Mnpz0PDZIRx0VjjiiUT07dgzf+lbYeOPV7lwjiy/oZhMPT+RmWVno2jV06LDq/lRqVSPPTZqovFvu4nhfJTgTAAAAgNIgXirMsGHDbl65FFSrVq2OP/74AQMGtG7devLkyX/729/mz58fQhg7duzgwYPHjBnTqlWrogf69NNPjzzyyJkzZ2ZubrPNNieccELv3r3nzJkzZsyYcePGhRCWLFnys5/9rFu3bgMHDmzyM1uHyvbhgPOjOvlKZW8ND+9NCiHUlpXHMFxMqj7/Jl4KIXz6mngpar/5TRg8OOlJbJDefDO8+WbSk9hgNDKLany3td5cY8T6cyj0nqROsvrNjepmPtO3Ykr/Nu+c8urkVpuPWfNgmqCsY8d2AwakmvDPHgAAAKDFSa21Coe1euGFF77zne9k2ltuueWTTz65ww47ZB+tqqoaPHjw888/n7l5xRVXXH755UWPddBBB7344ouZ9gUXXPDb3/42d8G9hx566Kc//emyZctCCF26dJk6dWqXLl2KHmuttthii88//7xnz56fffZZ8565vhHvjLhj4h0hhFZlrd766VtRDxefm78dqj4NIYTe+4Z9hhR5kk23D91KYQnEGPz61+F3v0t6EsB6r1erGb/ffOi3N3o/6YmUlLZ77937z39qrsWBASBBcX4WBgBo0cRLjZVOpwcMGDBhwoQQQmVl5YQJE3baaac1+ixZsqR///5Tp04NIbRv337q1KmbbrppEWONHj366KOPzrRPOOGE+++/v36fO++88/TTT8+0zz///BtuuKGIgfKI85/Ud0688/Z3bg8hlKXKJv5sYtTDxeehn4dJDzf5LKnwg3vC9kc3w3w2AP/6V/j978Obb4Yvv0x6KsB6rHvFzNFbDWpbtjTpiZSUvk+Obl0SW0ICsIETLwEANJLF8RrrpZdeymRLIYRTTz21frYUQmjXrt31119//PHHhxAWL148cuTISy+9tIixfv/732carVq1yq7Ft4bTTjttxIgR7733XghhxIgRV155ZZs2bYoYa31QUfbN+7AuXZdOp0vnb5977d0c8VI6PHV+6HdIqGzbDFMqdQcfHA4+OIQQ6uoa1b+R8frCheG998KsWd/0zz1qre2kOkR02l//OixfHqCUfFGz+Vmf33bWxreGEFKh/g+CNe9Zo0/9Q1KpBg4JIdT73daYQ4oYt76GTtLguA2NUplavlnFl8smfyBeAgAAgA2HeKmxHn54VU5w2mmnravbMccc07179y+++CJzSBHx0pw5czJbK4UQjj322O7du6+r56mnnnrmmWeGEJYsWfLMM88ce+yxhY61nihLlWXbtenailSpvC13+VGY8Kcw54OmnmfRrHBtj7V/Z7iBaNMl9P9h2GdIqGjdyCPKGu5SgC6V4YD9OoXyDXRbkU03DT/8YdKTgOb2ytf7vjJj36RnUTpap5YdffnU63cMffsmPRUAAAAgFqXyPX70Ro8enWn06tUrd8ulNVRUVBx66KH33ntvCGHixImffvppr169ChpozJgxtbW1mfbhhx+ep2fuo0888UTLjZfKU+XZdl26cVUnLULr9uGMV8K8aaGuppjD62rCvYPDolkrb2/A61gunRdevT28enuSc6hsH465Lex4XJJzSMieeyY9A2C9tzy90UNv7/hQv/DTn4b+/UMIIVOKnP//6qbbejJcU7oBAABssMRLjbJw4cKPP/44095vv/3yd95vv/0y8VIIYeLEiYXGSxMnrtp8KP9Y/fr1y1ZK5R7V4uTGSzV1NZXllQlOppmlUqFbE1YKGnh1ePgXzTcbmqB6cfjHSeG5y0K7TUPI/Uop57ul+neu9s1T/TvXeuxa72nksevuVtE6dO4dWq2xhGb+Qb/p0C+E3bf9+Zv/6bFmZ4B67rkn3HNP0pOA2K2f0deG3G39nJVuLaXbkiUBAIDGEC81yuTJk7PtbbbZJn/n3A6TJ08eNGhQQWO9//77mUZ5eXnfhpaY2XrrrTPx0ocffthydy0qL1sVL32x5Iu2rSLfZKhdq3YdKjtEPUoz2On40G6T8NkbG3Tp0uLZ4d2/h2ULkp5HCCGEBTPCghlJTyIBF+/yweD/3Jv0LABgPVV/d0YAAICSJ15qlGnTpmXbffr0yd85t0PugYWO1aNHj1atGtjrpU+fPuPHjw8hLFmy5Msvv8yzUdP6LLd66ZhRx8Qz4iG9Dzm9/+ntK9vXfzSVU9KRm9it6/6Cj23MebL3b7FraovdCjr/2s9T+NxWbxZ4nuZNOg8eFqb+Kyxb2JznLEA6vPHH8MV7CY2+Xvje9k/89pArLn7+snQzb2sFAAAAALRI4qVGWbhw1ffaXbt2zd+5S5cuaz2w0LEaHKj+WC00Xop/NbzadO2znzz77CfPxjwu60PEVcwcOoXQbptQV5N7xkLboRF9Gjg2Xcyx37TTdaGuNrcMbu390yG1rj4nPPj/9p047bmTFn72reqF3erPLr/a6o1qlrWEkkEAAAAAoBHES42yePHibLtNmzZ5eoYQ2rZdtbbbokWLih6rwYGaPlaDVtTWvTF9XrOfdg2ta7ZpU95uaa0lrktfOie6SDdmBRmLzORqSklYKoSyJhce9ZvSpd+wLg33W4t0OtQs2KRmUZeQXneIll7jGa7x6BonzN+5CWcu7FQNDL3G2zxd3aZmcedQVx7S2aeQWnnUykY6ZxrpVMh2yzlzOvf+nKNCSK152pVHfXP/mmdbOVzuUXmebINPPzT0ehZ32vo/Cuodstb/cHVL281/6fh6BwMAAADQVOKlRlm6dGm2XVnZQKlN69at13pgoWM1OFBTxrrppptuuummPB0+//zzEMLsL7/cZ6dtG3/a4qXqQqo2joFCSKXqQqo6pOriGQ5Y6cOkJ8CGqKzNL+uWrmUdVACAdZgVQpg9e3bS0wAAWN+Jlxolt5Couro6f+fly5ev9cDGj7VkyZLGDNSUsRYuXJgJkBqQrqtd/FXjTwsA65mqEKqSngMA0MLU1NQkPQUAgPWdeKlR2rdf9YfPDRYJ5Xbo0KHgvUbat2+fiZcaU41U9FgdO3bs2bNnng7Z8Cl/NyhVs2bNqqurKysr69GjR9JzgQS4BNjAuQTYkHn/s4Fr1B9iAgAgXmqkjh07Ztvz58/P33nevFWbFRURL3Xs2PHLL79szEBNGWvo0KFDhw7N02GLLbb4/PPPe/bs+dlnnzX+tFAyMpdAjx49XAJsmFwCbOBcAmzIvP/ZwGUugc033zzpiQAArO+avNP7hqFv377Z9ieffJK/c26Hfv36FT3WzJkzG6zHz47Vrl277t27FzoWAAAAAABAocRLjbLDDjtk2x999FH+zlOmTFnrgYWOVVtbO23atEaOtd1226VSqULHAgAAAAAAKJR4qVE6duy41VZbZdr//ve/83ceP358tr3zzjsXOtYuu+ySbecfa+rUqV988UWm3b9//0IHAgAAAAAAKIJ4qbEGDRqUacyYMWPy5Mnr6lZTU/P8889n2jvvvHPv3r0LHeiII44oLy/PtMeMGZOn59NPP11/egAAAAAAAJESLzXW4MGDs+0777xzXd1GjRo1a9as+oc03iabbLL//vtn2o899li2Pqm+kSNHZhpt27Y9/PDDixgLAAAAAACgUOKlxjrggAN23333THvkyJGTJk2q32fJkiUXXHBBpt2uXbtTTz21fp+TTjoptdLdd9+91rGGDh2aaaxYsSLbXsOdd9753nvvZdqnn356mzZtCngyAAAAAAAAxRIvNVYqlbrhhhsy7erq6qOPPvqDDz7I7VBVVXXcccdNnTo1c/O8887bbLPNihvr6KOPzhYw3X///RdddFE6nc7t8PDDD2djp86dO1988cXFDQQAAAAAAFCoiqQn0JIcfPDBF1544XXXXRdCmD59+i677HL88ccPGDCgdevWkydPvvfee+fPn5/pedBBB11yySVNGeuee+7Ze++9MyvjXXfddY888sgJJ5zQq1evuXPnPv300y+++GKmW0VFxX333de1a9emPTMAAAAAAIDGEi8V5tprr12yZMmtt94aQqiurr7vvvvuu+++NfoceOCBjz76aGVlZVMG6tOnz1NPPXXsscfOmDEjhPCf//znqquuWqNP27Zt77rrriOOOKIpAwEAAAAAABREvFSYVCo1fPjwQYMGXXrppa+//voaj/bt2/dXv/rVWWedlUqlmj7Wrrvu+t577w0bNiy3LiqjsrLyyCOP/N3vfrf11ls3faC1Gjp06MKFCzt27BjR+WE95xJgA+cSYAPnEmBD5v3PBs4lAADQSKk1NvWh8aZNmzZhwoSZM2dWV1f36NFj++2332OPPaIYqLq6ety4cdOnT589e3anTp222GKL/fffv0uXLlGMBQAAAAAAkJ94CQAAAAAAgAKUJT0BAAAAAAAAWhLxEgAAAAAAAAUQLwEAAAAAAFAA8RIAAAAAAAAFEC8BAAAAAABQAPESAAAAAAAABRAvAQAAAAAAUADxEgAAAAAAAAUQLwEAAAAAAFCAiqQnQIQ+/vjjCRMmzJw5s7q6evPNN99uu+123333KAZasWLFuHHjpk+fPnv27M6dO/fs2XP//ffv3LlzFGNB48VwCSxZsmTSpEkffvjh3Llzly1b1rlz5x49euy55569evVq3oGgCLH9FoD1U8yXwIIFC1555ZVZs2Z9+eWX5eXlG2+8cb9+/XbdddeOHTtGNyisS2zv/48//vitt96aOXPmwoULN9pooy5dunz729/eeeedN9pooyiGg/VNXV3dK6+8MmXKlC+++KJdu3Y9e/bcd999N9tss6TnBQAQizSl6Nlnn917773r/+fu16/frbfeWldX11wDLVy48Fe/+lXXrl3XGKiysvK4446bMmVKcw0EBYn6Enj33Xcvu+yyvffeu6Ji7SH9jjvuOGLEiBUrVjTL04FCxfZboL6bb745d8QTTzwxurFgXWK+BJ5++umBAwe2atWq/ohlZWW77777P/7xj+YdEfKI5/2/YsWKP/zhD9ttt91a/yHUvn37k08+eerUqc0yFjRSXV3dRx999MADD/z6178+9NBDcz+lRvEPkuXLl19xxRU9evRY4/1fXl5+6KGHvvnmm80+IgDA+ka8VILOPffcVCq11k96Gd/5zncWLFjQ9IHeeeedLbfcMs9A7dq1u++++5o+EBQk6kvgkksuyXPyXLvttttHH33UjE8NGiO23wL1TZkypW3btrljiZeIX5yXwNy5cwcPHtzgr4MhQ4Y0y3DQoHje/zNmzOjfv3+D7/w2bdr8+c9/bo6nBQ076aSTOnXqtK53Y7P/g2TGjBk777xznvd/q1atfv/73zfvoAAA6xuL45WaYcOGZf9yvFWrVscff/yAAQNat249efLkv/3tb/Pnzw8hjB07dvDgwWPGjFnrn9k20qeffnrkkUfOnDkzc3ObbbY54YQTevfuPWfOnDFjxowbNy6EsGTJkp/97GfdunUbOHBgk58ZNEoMl8DixYuz7crKyj333HPfffft2bNnx44d586d+/LLL48ePbqmpiaE8NZbbx100EHjxo3baqutmuPJQcNi+y1QXzqd/uUvf/n111834zmhUHFeAnPmzDn00EPffffdzM1OnToNHDhw11133XTTTVesWDFr1qx33nnnxRdfrKqqauKTgkaK5/1fVVV10EEHTZs2LXOzsrJy0KBB++yzT7du3ZYuXTp58uRHHnlk1qxZIYSlS5f+/Oc/b9eu3X/91381x/ODfN5+++3Yft5WVVUdccQR77//fuZmz549f/SjH2299dZVVVUvvvjiU089lU6nV6xYcd5553Xu3PnnP/95PLMCAEhA0vkWzWns2LHZ/7Jbbrnl+++/n/voggULDjnkkGyHK664oiljHXjggdlTXXDBBWuss/GPf/wju956ly5d5s2b15SxoJHiuQR+9atfhRAGDBhw1113VVVV1e8wZcqUPfbYIzvQwQcfXNxAUKg4fwvUN2LEiMyZd9hhh+woqpeIU5yXwLJly7LVG+Xl5RdffPHixYvrd1uxYsVTTz2lmJsYxPb+z/xDKGOnnXaqvxr2smXLhgwZku2zySabrPXqgOaV+zN5xx13/NnPfjZs2LCI/kFy4oknZs/8k5/8ZPny5bmPvvjii9l1+Vq1amUxAwCghImXSkddXV32G+3Kysp33323fp/Fixf369cv06d9+/ZffvllcWM98cQT2X9Pn3DCCWvtc8cdd2T7nH/++cUNBI0X2yXw5z//ecyYMfn7LFiwYOutt85eAuPGjStiIChInL8F6vvkk086dOgQQmjbtu3zzz8vXiJ+MV8CF154YeY8ZWVlDzzwQBMmDs0gtvf/ihUrst+bt2nT5pNPPllXzyOOOCL7u+DBBx8sYiwoyNVXX3377be/8sorX3/9deaejz/+OIp/kEycOLGsrCxz2v3226+2trZ+n6eeeio79H/9138119AAAOubskCpeOmllyZMmJBpn3rqqTvttFP9Pu3atbv++usz7cWLF48cObK4sX7/+99nGq1atVpjF/es0047LTuHESNGLF26tLixoJFiuwROOumkww8/PH+fTp06XXnlldmbuYksRCTO3wL1nXLKKYsWLQohXHnllX379m2u00LjxXkJfPjhh7/73e8y7bPOOusHP/hBceeB5hLb+3/q1Knz5s3LtI866qjevXuvq+cZZ5yRbb/11ltFjAUFueSSS84444y99967TZs2kQ50880319XVZdrDhw/PRk25jjjiiEGDBmXa//jHP2bMmBHplAAAkiJeKh0PP/xwtn3aaaetq9sxxxzTvXv3+oc03pw5czJbK4UQjj322OzZ6jv11FMzjSVLljzzzDNFjAWNF9sl0EiHHnpotj116tToBoKMBC+BP//5z5kf8rvtttu5557bLOeEQsV5Cdx+++21tbUhhLZt2+b+MQEkJbb3/1dffZVtb7PNNnl65j6aTaSgpaupqXn88ccz7T333HO33XZbV8/cK/GRRx6JfGYAAEkQL5WO0aNHZxq9evXK3fdiDRUVFdlvvSdOnPjpp58WOtCYMWMyX6mEEPLXcOQ+qnqDqMV2CTRSZqGwjMWLF0c0CmQldQnMmjVr6NChmTP/8Y9/LC8vb+IJoTixXQJLly695557Mu1jjz22U6dOhU8Wmlls7/8uXbpk20uWLMnTM/fRTTfdtNCBYP308ssvZ+PS/J+FDz744FatWmXaPgsDAKVKvFQiFi5cmF1aer/99svfObfDxIkTCx0r95D8Y/Xr1y/7B5JFDASNF+cl0EjTpk3LtvMU+UGzSPASOP300xcsWBBCGDp06K677trEs0Fx4rwEXn311aqqqkz7kEMOKfRwaHZxvv+/9a1vdevWLdP+17/+lafnP//5z2z7oIMOKnQgWD81/rNwmzZtsrVN7777brTTAgBIiHipREyePDnbzr9OxRodcg9spPfffz/TKC8vb3CDja233jrT+PDDD9PpdKFjQSPFeQk00kMPPZRt77PPPhGNAhlJXQL333//qFGjQgj9+vW74oormnIqaIo4L4HXXnst2+7fv38IYd68ecOHD99///0333zz1q1bb7bZZgMGDLjgggt8n0g84nz/l5WVnXnmmZn2pEmTbrvttrV2mzp16g033JBp77777oJYSkb2s3Ao5HKbO3fu7NmzI5wWAEBCxEslIrdOok+fPvk753bIPbDQsXr06JGt929wrCVLlnz55ZeFjgWNFOcl0BhVVVV33HFHpl1ZWXnsscdGMQpkJXIJzJkz5+yzz860R44cGfVO2pBHnJfAW2+9lW1vscUWjz766HbbbferX/1q/Pjxs2bNqq6unj179htvvHHDDTfssssuP/rRjxYtWlToEFCQmH8FXHTRRfvuu2+mffbZZ5966qm5X7h/9dVXI0aM2GuvvTK7NPXo0eOBBx5IpVJFDATroexVU1ZW1qtXr/ydY/jQAQCQLPFSiVi4cGG23bVr1/ydc9dMzz2w0LEaHKjpY0EjxXkJNMZZZ52VzVPPOOOMzTbbLIpRICuRS+DMM8+cO3duCOHkk0/2l+kkK85LYM6cOdn26NGjBw8enLknlUptsskmPXr0yO5Alk6n77///r333jtzpUBEYv4V0Lp162eeeeYXv/hFWVlZOp2+6667vv3tb3fs2HHLLbfcbLPNNt544yFDhnz11VepVOrYY499/fXXs4sZQAnIXjXt27dv8E8tfRYGAEqeeKlELF68ONtu8O/H27Ztm20X8Re12bEa84fqTRwLGinOS6BBI0aMyO763rdv36uuuqrZh4A1xH8JPPbYY3//+99DCJtuuumNN95Y3EmgucR5CcyfPz/bPv3009PpdLt27X7729/OmjVr9uzZM2fOnD9//p/+9KcePXpk+kyePPmHP/xhXV1doQNBI8X/K6B9+/Z//OMfJ06cuP/++2dP9cknn2SX/9p4443/9Kc/Pfroo1tssUVxQ8D6yWdhAIBc4qUSsXTp0my7srIyf+fWrVuv9cBCx2pwoKaPBY0U5yWQ3+jRo7PLhbVu3frBBx/s0KFD8w4B9cV8CcyfP//000/PtIcPH96YYlaIVJyXQO5X+StWrGjXrt3YsWMvvPDCbKFqhw4dTj755Ndeey27LNI///nPRx99tNCBoJHi/1fQihUrrrnmmgMPPHDcuHFr7TB37tyTTz55l112efnll4sbAtZPPgsDAOQSL5WI3D+eqq6uzt95+fLlaz2w0LEaHKjpY0EjxXkJ5DF27Njvf//7tbW1IYTy8vK//e1ve+yxRzOeH9Yl5kvgnHPO+eKLL0IIgwYN+sEPflDEGaB5JfIPoYxrrrlmzz33rN+tV69ef/rTn7I3b7755kIHgkaK+VfAwoULDzrooGHDhs2bNy+EcNRRR40aNSqz8VhVVdWrr756wQUXtG/fPoQwceLEAw444L777itiFFg/+SwMAJBLvFQiMh/hMhr8w6jcDkXUVWTHasxfYDVxLGikOC+BdRk3btzRRx+dOXlZWdlf/vKXwYMHN9fJIb84L4ExY8b89a9/zRw7YsSIQg+HKCTyD6FM+7//+7/X1fPggw/eZZddMu1XX33VykhEJOZ/Bf3kJz/J1CSlUqmRI0eOHj36u9/9bvfu3Vu1atWxY8e99trruuuue/vtt3v37h1CqK2tPfnkk997770iBoL1kM/CAAC5xEslomPHjtl27pYAa5X5S8OMIv6Zmx2rwYGaPhY0UpyXwFq9/PLLRx555JIlS0IIZWVlf/rTn3784x83y5mhMWK7BBYuXHjqqadm2tdee22vXr0KOhwiEudvgU6dOmXbe++9d+7WGvUdfPDBmUZtbe3EiRMLHQsaI873/3PPPffEE09k2qeddtopp5yy1m5bb731gw8+mGlXV1dfeumlhQ4E66fs5bZ48eIVK1bk7+yzMABQ8sRLJaJv377Z9ieffJK/c26Hfv36FT3WzJkza2pqGjlWu3btunfvXuhY0EhxXgL1vfzyy4cffnhmN45UKnXXXXedeOKJTT8tNF5sl8CVV1756aefhhD22WefM844o6BjITpx/hbIPSS7u9K6bLnlltn2nDlzCh0LGiPO93/uSnfnnHNOnp5777333nvvnWk/9dRTNp6hNGQvt7q6us8++yx/52b/0AEAsL6pSHoCNI8ddtgh2/7oo4/yd54yZcpaD2z8WM8880wIoba2dtq0adtuu21jxtpuu+1SqVShY0EjxXkJrOGVV145/PDDM0sepVKpO++88xe/+EUTzwmFiu0SmDp1anaUdf38z/3Lg0ceeWT8+PGZ9uDBg6+//vqChoNGivO3wLe//e1se6ONNsrfObfDsmXLCh0LGiPO93+2CK9jx475PwWEEPbcc89XX301hLBixYr//Oc//fv3L3Q4WN+scblttdVWeTpnL7du3bptuumm0c4MACAJ4qUS0bFjx6222urjjz8OIfz73//O3zn7TV8IYeeddy50rOwuApmx8nywnDp1ambv9xCCz5NEKs5LINcrr7xy2GGHZbOlESNGrGuVGIhU/JfA3Llz586d22C3RYsWZfeb+fLLL4sbCxoU5yWw6667Ztu5Cx+tVW6HjTfeuNCxoDHifP9narXD6hs+rUtun6+//rrQsWA9tMZn4YEDB66r59KlS996661M22dhAKBUWRyvdAwaNCjTmDFjxuTJk9fVraam5vnnn8+0d95558ymuwU54ogjysvLM+0xY8bk6fn000/Xnx5EJLZLIOvVV1/N1i2FEG677bbTTjut6LNBE8V/CcB6JbZLYMCAAT169Mi033777fyds98thtVXMIPmFdv7v0uXLpnGV1991eDGM7Nmzcq2u3XrVuhYsB7ad999u3btmmnn/yz8r3/9q7q6OtP2WRgAKFXipdIxePDgbPvOO+9cV7dRo0ZlP+nlHtJ4m2yyyf77759pP/bYY9n6pPpGjhyZabRt2/bwww8vYixovNgugYzXX3/9sMMOW7hwYebmbbfdZh8akhXPJfDYY4+lG5L5C/qME088MXv/3XffXehw0Hix/RYoKyvLHvjhhx9m1wqrr6qq6qmnnsq0+/TpY+MNohPb+3+bbbbJNJYvX/7CCy/k6VlTU/PPf/4z027Tpo2/ZqA0VFRUfPe7382033jjjdy/IVhD7pX4ve99L/KZAQAkQbxUOg444IDdd9890x45cuSkSZPq91myZMkFF1yQabdr1+7UU0+t3+ekk05KrbSurwKHDh2aaaxYsSLbXsOdd9753nvvZdqnn356mzZtCngyULg4L4EJEyYMHDgwmy3deuutQ4YMafpTgKaI8xKA9VCcl8A555xTWVmZaZ977rl1dXVr7XbJJZdkVxI7+eSTC3gyUKDY3v9HHHFEtj1s2LBscUZ9N91002effZZpf+c732lwozJYH1xxxRXZS+CKK65Ya59zzjmnrOybL1J+9atfrfVXwNNPPz169OhMe/DgwX369IlmvgAACRMvlY5UKnXDDTdk2tXV1UcfffQHH3yQ26Gqquq4447L7sp+3nnnbbbZZsWNdfTRR2cLmO6///6LLroonU7ndnj44YezsVPnzp0vvvji4gaCxovtEnj77bcHDhxYVVWVuXnrrbeeeeaZTZg4NI84fwvAeijOS6Bfv35nnXVWpj127Ngf//jH2YVSM2pqai699NLbb789c3OzzTY755xzihsLGiO29//xxx+/5ZZbZtqvv/76McccM3v27DX61NTU3HDDDRdddFH2nmysBSWgf//+P/7xjzPt8ePHn3TSSWvkrOPGjct2qKiouPbaa+OeIgBAXCqSngDN6eCDD77wwguvu+66EML06dN32WWX448/fsCAAa1bt548efK99947f/78TM+DDjrokksuacpY99xzz957751ZGe+666575JFHTjjhhF69es2dO/fpp59+8cUXM90qKiruu+++7PrUEKl4LoH/+Z//yZ6nVatWt9xyyy233NLgUVOmTCluOGi8OH8LwHoozkvg6quvfuONN1566aUQwgMPPPD8889///vf33HHHSsqKqZOnfrQQw9lv8evrKx8+OGHO3Xq1LQnBw2I5/3funXrP/7xj0ceeWTm+/Snn366T58+3/3udwcMGNCtW7evv/76gw8+ePzxx2fMmJE9ZMiQIQcccECTnx804LXXXsuGOhk1NTXZ9iOPPDJ+/PjcR7fYYov8CzzmMXz48AkTJmRC3HvuuSfzdwb9+vWrqqp68cUXn3rqqWxJ04gRI7bddtviRgEAaAEa3EGBlqWuri7757TrcuCBB86fP39dZzjxxBOzPf/85z/nGeutt97Kv4p627Zt77333mZ/jpBHDJfAgQce2IgfrmuK7ilDrjh/C6zLuvZeghjEeQksWLDgkEMOyT/WxhtvPHbs2OZ+lrB2sb3/n3jiiW7duuUfKISQSqXOPffc2traKJ4srGHs2LENvidz9enTp/5JLr/88myHyy+/PM9w06dP//a3v53n/BUVFTfccENETxYAYD1hcbxSk0qlhg8f/swzzwwYMKD+o3379v3DH/4wduzYzp07N32sXXfd9b333jvrrLO6dOmyxkOVlZXHHnvsxIkT1/gLMohanJcArIdcAmzg4rwEOnXq9Nxzz/3v//7v9ttvX//RDh06nHPOOZMmTTrooIOaPhY0Rmzv/0GDBk2ePPnXv/71pptuutYOFRUV3/ve98aPH3/TTTdld6mBUtKnT58333zz8ssv7969+xoPlZWVHXLIIa+88sr555+fyNwAAGKTSq++ZQ6lZNq0aRMmTJg5c2Z1dXWPHj223377PfbYI4qBqqurx40bN3369NmzZ3fq1GmLLbbYf//962dOELPYLgFYP7kE2MDFeQm8//7777333syZM1esWNGtW7ftt99+r732qqiwDDWJief9X1dX93//93/vvPPOnDlzFi1a1Lp1686dO3/rW9/afffd27Zt2+zDwXqorq7u5ZdfnjJlyhdffNGuXbuePXvuu+++9TMnAICSJF4CAAAAAACgAFYqAAAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAEII4aSTTkqlUqlU6qCDDlprh9RKd999d6wzAwAAANYz4iUAYEP0wgsvpNahVatWXbt23XrrrY855pjf/va306dPT3qyAAAAAOsX8RIAwGpqamrmz58/derUxx9//OKLL+7bt++JJ5741VdfJT0vAAAAgPVFRdITAABIWJcuXbp27Zq9WVNTM2/evEWLFmVuptPpv/71r2+88caLL764ySabJDRHAAAAgPWI6iUAYEN39tlnT8kxffr0hQsXTpkyZdiwYa1bt870+eCDD0455ZRk5wkAAACwnhAvAQCsRb9+/X7zm988++yzFRXfVHs/9thjEydOTHZWAAAAAOsDi+MBAKzTAQcc8JOf/OTuu+/O3HzyySf79++f/5APPvjgnXfemT179tKlSzfddNNtt912n332KS8vL2jc5cuXv/LKK9OnT58zZ05NTU3nzp233nrrXXfddeONN85/4IIFC959992PPvpo3rx5K1as6NKly+abb77vvvta1g8AAABoRuIlAIB8Bg4cmI2X3n///XV1W7Zs2fDhw2+//fYZM2as8VDXrl2HDBlywQUXtGvXrsHhJk6c+Jvf/Oapp55aunTpGg+lUqnddtvtpz/96ZlnnrlGXjVp0qQHH3xw9OjR7777bl1dXf3T/r//9/8uueSSww8/vMEJAAAAADTI4ngAAPnkFgzNnTt3rX3efffd7bbb7oILLqifLYUQ5s2b95vf/KZ///7Tpk3LM1BdXd1555236667Pvzww/WzpRBCOp1+8803zznnnEWLFq3x0E9+8pOrr776nXfeWWu2FEIYP378EUccce65566rAwAAAEDjqV4CAMhnzpw52XZlZWX9Dq+88srhhx++cOHCzM2tttrq6KOP3nbbbTfaaKPp06c/9thjkyZNCiFMnTp1//33f/PNN7t3717/JHV1dYMHD37sscey9/Tv33/gwIF9+vRp06bNV1999d57773wwguffvpp/tnusMMOe+211/bbb9+1a9fa2trPP//8xRdffPHFFzOP3nLLLd26dRs2bFhhLwEAAADA6sRLAAD5PPPMM9l2375913h03rx53//+9zPZUmVl5e9///vTTz89d+W6q6666tZbb82UDc2cOfOXv/zl6NGj649y5ZVXZrOlnj17/u///u8RRxyxRp90Oj1u3Ljrr78+lUqt8VCHDh3OP//8X/ziF9/61rfqn/yNN9744Q9/OHXq1BDCFVdc8eMf/3irrbZq3LMHAAAAWAvxEgDAOr300kv33Xdf9ubAgQPX6HDxxRd/9tlnIYRUKvXggw8ee+yxa3RIpVJnn332ihUr/ud//ieE8OSTT44bN27//ffP7TNlypSrr7460958881ffvnl3r17159MKpU64IADDjjggPoPPfvss23atFnXs9hzzz3/9a9/9e/ff8GCBbW1tbfffvuNN9647icNAAAA0AB7LwEArMW0adMuu+yyww47rKamJnPPTjvtdPjhh+f2mT179l/+8pdM+8QTT6yfLWUNHTp0u+22y7Rvv/32NR793e9+l90S6a677lprtpRfnmwpo3fv3meeeWamPWbMmELPDwAAAJBLvAQAbOiGDx++dY6tttqqU6dO/fr1+81vfrNs2bJMn65du95///25q96FEB5++OFsh/PPPz/PEKlU6sQTT8y0n3vuuXQ6nX2orq7uH//4R6a98847H3XUUc31vNaQLb368MMPFy1aFNEoAAAAwIbA4ngAwIZu/vz58+fPz9PhsMMOGzFiRP2Nl8aNG5dpbLXVVjvssEP+Ufbee+9MY968eR999NG2226bufnee+9lRx88eHChk2+8Hj16ZBqZXaDWuksTAAAAQGOIlwAA8rnggguuueaaNeqWMt5+++1MY8cdd2zwPJtttlm2/emnn2bjpUmTJmXvHzBgQFOmOnfu3IceeujFF1+cNGnSF198sWjRouXLl6+154IFC5oyEAAAALCBszgeALChu/zyy9Mr1dbWfv755y+99NKJJ57YqlWrEML1119/7LHHLl26tP6Bc+fOzTRGjx6dakhuedO8efOy7a+++irbzhYYFWrZsmUXXnjhFltscfrppz/wwAOTJk2aO3fuurKlTP/iBgIAAAAIqpcAAHKVlZVtvvnmm2+++f777//Tn/70yCOPrK6uHj169Iknnvj3v/99jc5VVVXFjfL1119n27nbILVv376Isy1btuyoo47617/+tcb9Xbp0adu27UYbbZS5WVNT88knn2TauZs/AQAAABRKvAQAsHaHHHLIjTfeePbZZ4cQ/vGPf9x1112nnHJKboe2bdtmEqYOHTpsuummjT9zhw4d1tpevHhxEfO89tprs9lS7969zzrrrEMPPXS77bbLBksZH3/8cf3towAAAACKIF4CAFinIUOG/PWvf50wYUII4aKLLjr++OO7du2afbRbt26ZeGngwIEPPfRQcUN069Yt2541a1b//v0LOnzFihW33nprpr399tu//PLLnTt3XmtP+y0BAAAAzcXeSwAA61RWVvbb3/420543b95VV12V+2h2O6XPPvus6CF22mmnbPv1118v9PA33ngjmxtddtll68qWQgjTpk0reHIAAAAAayNeAgDI59BDD91vv/0y7TvuuGPGjBnZhw455JBM48033yx6H6addtopWxH18MMPF3r4559/nm3nr3z65z//WejJAQAAANZKvAQA0IBLL70006iurs4tYBo8eHCrVq1CCDU1NdkV6gqVSqV+8IMfZNrvvvvuk08+WfQ8ly1btq6H5s6de++99xZ9ZgAAAIBc4iUAgAYcdthhe+65Z6b9l7/85aOPPsq0e/XqddJJJ2Xa11xzzfjx4xtztvoh0HnnnVdeXp5pn3LKKbkFUg3q06dPtv3EE0+stU9dXd0vfvGLxYsXN/60AAAAAHmIlwAAGpYtYKqpqbn88suz91977bVbbrllCGHZsmX/3//3/91yyy3rKiFasmTJI488csQRR1x88cVrPNSvX7/s+WfOnLnffvs988wzaz3J+PHjBw0alLsQ3+67777xxhtn2tddd93TTz+9xiGzZ88ePHjw448/XlbmH34AAABA86hIegIAAC3A0Ucfvcsuu7zzzjshhAcffPCiiy7aaaedQggbb7zxqFGjDjnkkLlz5y5btuzcc8+9+uqrBw4cuOuuu2Z2VKqqqvr444/ffffd1157bfny5SGEb33rW/XPf+mll7799tujRo0KIXz22WeHH374Lrvscthhh/Xu3btNmzbz5s2bNGnSCy+8MH369BBCOp3OHlheXn7RRRedd955IYSlS5ceeeSRAwcOPOSQQzbZZJMFCxZMmDDh8ccfX7RoUQjhmmuuueiiiyJ/pQAAAIANgHgJAKBRhg0bdvzxx4cQ6urqLr300sceeyxz/8477zxhwoTvfe97b731Vgjhq6++uv/++++///51nSe7Dl6usrKyhx9++Nxzz83u4fTOO+9k0qwGnXPOOa+99trf//73EEI6nX7mmWfWKH4qLy+/9tprv//974uXAAAAgGZhjRQAgEb53ve+t+OOO2bao0aNeuONN7IP9enT54033rjvvvv23HPPVCq11sO7d+/+ox/9aNSoUdddd91aO5SXlw8fPvz1118/6qijKisr63coKyvbe++9R4wY0aFDhzXuf+CBB26++eZNN910jUNSqdT+++//0ksv/frXv278MwUAAADIL5W7uAoAAE301Vdfvfzyy7Nmzfrqq6/Kyso6dOjQu3fvHXbYoW/fvo0/yeLFi8ePH//pp5/OnTs3lUp16dJl66233m233bp06ZLnqOrq6ldfffW9995bsGBB586de/Tosddee/Xs2bPJzwkAAABgNeIlAAAAAAAACmBxPAAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA4iUAAAAAAAAKIF4CAAAAAACgAOIlAAAAAAAACiBeAgAAAAAAoADiJQAAAAAAAAogXgIAAAAAAKAA/z9BqI4BzzxM7gAAAABJRU5ErkJggg==", "ok": true, "headers": [ [ "content-type", "image/png" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/images?run=train%2Fyolov5s_results2&sample=0&tag=confusion_matrix": { "data": "W3sid2FsbF90aW1lIjogMTY2NzA1MTMwNS40OTc4NjE5LCAic3RlcCI6IDk5LCAicXVlcnkiOiAiYmxvYl9rZXk9V3lJaUxDSjBjbUZwYmk5NWIyeHZkalZ6WDNKbGMzVnNkSE15SWl3aVkyOXVablZ6YVc5dVgyMWhkSEpwZUNJc09Ua3NNbDAifV0=", "ok": true, "headers": [ [ "content-type", "application/json" ] ], "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/images/individualImage?ts=1667051305.4978619&blob_key=WyIiLCJ0cmFpbi95b2xvdjVzX3Jlc3VsdHMyIiwiY29uZnVzaW9uX21hdHJpeCIsOTksMl0": { "data": "iVBORw0KGgoAAAANSUhEUgAAC7gAAAjKCAIAAACJddR5AAEAAElEQVR4nOzdeXgV9fk/7pkkhBB2ZEcEBEFFBRVRbC2CrUtdcUWLoq0LWu3irnXrgqJtUetacamCCJ+2KmjdrYq4gSwKIvsSFimbgUCABDi/P+bb8zuFEJKQ5Ejmvi/+eGbmPfN+Tgi5VF4+EyYSiQAAAAAAAAAAAGq6jHQ3AAAAAAAAAAAA1UFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAIA9z9q1a//4xz8ed9xxrVq1ql27dvhff/vb39LdWsn+9re/ffebpEq1b98++gZo3759unsBAAAAiK+sdDcAAABA5VuwYMH06dMXL168bt26bdu2NW7cuHHjxgcccMBBBx2UmZmZ7u521/vvv3/WWWetWbMm3Y0AAAAAAHsYQRkAAICaY9q0aU888cRLL720dOnSEhfk5uZ+73vfGzBgwFlnnVW3bt1qbq9SzJ0795RTTtmwYUO6G6EEF1988bPPPpt6pn///i+88EIZb1+wYEHHjh0TicR2J41gAQAAAKCyePUSAABATZCXl3fWWWcdcsghDz/88M5SMkEQFBYWvv322wMHDmzduvU999yzadOm6myyUtx6663JlEz0ef/1r3+9/V8nnHBCettjO2PGjFm3bl0ZFz/33HPbpWSqhxdjAQAAAMSHiTIAAAB7vFdffXXAgAFr167d7nzjxo2bNWvWsGHDVatW/ec//yksLExeWrdu3a233vriiy9OnDixepvdLevWrRszZkxUd+nS5bPPPsvJyUlvS5Ru48aNf//733/2s5/tcmUikXjuueeqoSUAAAAA4sxEGQAAgD3b888/f8YZZ6SmZA4//PBHH3104cKFa9asmTVr1oQJE+bPn79hw4aZM2fee++9hx9+eHLlypUr09FyxU2aNKmoqCiqL7rooj0oJXPxxRcn/uviiy9OdzvVISPj//03hzLGX8aPHz9//vzt7q1JFi5cGH0DLFy4MN29AAAAAMRXDfwPTwAAAPHx+eef//SnP926dWt02LBhw+HDh0+cOPHKK69s167ddou7dOly4403fv755y+++GKXLl2qvdlKMHv27GTdtWvXNHbCLvXp0ycqPvzww7JEQ5599tmoaNmy5YEHHlh1jQEAAAAQZ4IyAAAAe6p169add955yQkrzZs3f//99wcMGBCGYek39uvX78svvyzL23C+a/Lz85N1gwYN0tcIu3b++efXqlUrKNs7laI3NEX1BRdckJmZWeX9AQAAABBLgjIAAAB7qrvuuiv1VTUvv/xy9+7dy3hvdnb2k08+OXTo0Kpqrmps2rQpWe8yD0R67bXXXieffHJUDx8+vPTFL7300rp166J64MCBVdsZAAAAADGWle4GAAAAqIj8/Pxhw4YlD3/1q1/16tWrvA8588wzd7mmsLBw/PjxixcvXrlyZU5OTvPmzbt27dqtW7fy7pVq7dq148aNmzt37saNG/faa69OnTp9//vfr1279i5vTCQSu7NvpSgoKJgyZcqsWbPy8/M3b96cm5vbuHHj9u3bH3jggS1atKjEjYqKij755JMFCxasWLEiMzOzefPm++23X8+ePTMyKv4/vWzcuHHcuHEzZ85cv3591Hbv3r3r1q1biW2nGjhw4MsvvxwEwdy5cz/++OOjjz56ZyuT713q3r37IYccUt6NVqxYMX369Hnz5uXn52/ZsqVJkyYtW7Y88sgjW7ZsWdHeK2jevHlffvnlsmXL8vPzmzZt2r9//4YNG1ZzDwAAAACUJgEAAMAeaMiQIcl/s8vOzl65cmWlbzF16tTTTz89Jydnx3+XbNOmze23315QUFD6E3r37r3dv34uW7bskksuyc7O3u6BdevW/c1vfrN+/fodH7JgwYIy/hvuM888k7yrXbt20cl27drt8pPeeeedyYe89957O1s2adKkfv367dh8UocOHa6++uqvvvpqx3ufeeaZEvss0fz58wcMGFC/fv0dt2jatOk111yzy9/u1KEsCxYsSCQS+fn5v/71r3fMxGRnZ1955ZWV9f2Tuu9LL71UVFS01157RYdXXHHFzu5asmRJMv0zdOjQRCKRmsSK+t/Rtm3bxo0bd/XVV3fp0mVnvyMHH3zw3/72t+Li4hKfUPZvre3aSL1x4MCB0cnhw4f37Nlzu7umTJmSvKuU78n8/PwOHTok7xo8eHDpX+eJEycmvw8zMzPHjRtX+noAAAAAkrx6CQAAYI/04osvJut+/fo1bdq0Eh+eSCRuuummww47bMyYMalvO0paunTp73//+/3222/8+PFlf+yHH3540EEHPfPMM0VFRdtd2rBhw+DBg/v06bNmzZrdar3KDBky5IgjjojCHztbs2DBgocffnjkyJG7s9EDDzyw//77jxgxoqCgYMerq1ateuihhzp27Jj6DbBLM2bM6Nat2/33379hw4btLhUVFT322GNHHXXUwoULd6ftEtWqVev888+P6tGjR2/evLnEZSNGjNi2bVsQBFlZWT/5yU/K+PAbbrjhBz/4wcMPPzxr1qydrZk2bdrFF1/cp0+fFStWlLP3cti8efNZZ5114YUXTpgwoWJPaNiw4QsvvFCrVq3o8M477/zoo492tnjdunX9+/dPfh/eeeedxxxzTMX2BQAAAIghQRkAAIA9z4YNGyZPnpw8PP300yvx4YlE4uKLL77vvvui7EKkadOmhx122AEHHJA6YGb58uXHH3/8m2++WZbHTpo06aSTTopyMBkZGR07duzZs+d+++0XhmFyzcSJEy+++OJK+ySV56mnnrrllltSvyD169c/+OCDjzrqqG7durVt2zb1U+yO22+//de//nVqFqdRo0bdunU76KCD6tWrlzy5bt26c889N3VKTSkWLlx43HHHLVq0KDps167dEUccccABB2RmZibXzJs378wzz9yyZUulfIpUF110UVTk5+ePHTu2xDXJ9y6dcMIJzZs3L+OTt4twNW7c+IADDjjyyCO7d+/eqlWr1Evjx4/v27fvxo0by9d6mV188cXJ3FL9+vW7du166KGHlje7duSRR959991RvWXLlvPPP39nobErrrhi3rx5Ud23b9/f/OY3FW0cAAAAII4EZQAAAPY8n376aWqmoUePHpX48Icffvi5555LHh5zzDEfffTRihUrJk2aNGPGjJUrVw4bNqxJkybR1Y0bN15wwQXLli3b5WPPPffcDRs2NGnSZOjQoStWrJg7d+5nn302e/bsJUuWpIZjXnnllddffz31xpYtW779XxdeeGHy/J/+9Ke3/9cJJ5ywm5+9RJs3b77xxhuTh2edddbnn3++du3aL7/88pNPPpk6dWpeXt7atWvffffd6667rkWLFhXe6JVXXvnDH/6QPDzooIPeeOONVatWTZ06ddq0aatXr/6///u/tm3bRle3bt06aNCgL7/8cpeP/dnPfrZ8+fI6derccccdS5cuXbhw4YQJE6LfyptuuikZ8ZkyZcqwYcMq3PzORKGcqE79vkqaOHHi119/HdWpb24qi/r1619yySX/+Mc/li1btmbNmhkzZnz66adTpkxZtmzZkiVLhgwZ0qhRo2jlV199dfPNN293e/Jb64YbbkievOGGG94uScuWLUvs4Y033hg1alQQBD169HjzzTfXrFkzffr0yZMnr1y58pNPPmnTpk3ZP85111130kknRfXixYt/+tOf7rjmySefjLYLgqBZs2YjRoxIvrUKAAAAgLLISncDAAAAlNvMmTOTdb169Tp16lRZT16yZMlNN92UPBw4cOAzzzyTOi6lXr16l1566Q9/+MPvf//7S5cuDYJgzZo1V1111csvv1z6k+fPn9++fft33nmnY8eOqedbt279zDPP1KpVK5nSeOKJJ5JxgSAIcnJyfvjDH0Z16pueDj/88GOPPbZCn7J83n333eRsj4suuig5/iRV/fr1+/bt27dv37vvvnvJkiUV2KWwsPCyyy5LHv7oRz965ZVXateunTyTnZ19zjnn/PCHP+zdu/e0adOCICgqKho4cOCUKVNKf/L8+fObNGnyxhtvHHHEEannGzduPGTIkPr16992223RmSeeeOLKK6+sQPOlGzhwYBRSeeONN1asWLHdzJjk17Nx48annXZa2R97ySWX3H333Q0aNCjxaps2bW666ab+/fv36dNnwYIFQRAMGzbszjvvTGa8gpRvrdTfsgMPPDD5/VYW//nPf4IgOOecc0aOHJmV9T//meWoo44q+3OCIAjD8Nlnn+3evXuUPBszZsxf/vKXX/ziF8kFM2bM+OUvf5lc/Nxzz203OwcAAACAXfJ/HQEAAOx5Ut/J0qxZs8p6708QBI8++mjyDTXdunV78sknS3x4+/bt//73vycvjR07ds6cOaU/OTMz8+9///t2KZmke++9N/lSp7feeiv1JUdpN3v27GR91VVXlb44Ozt73333rcAuI0aMiCIXQRC0bt36H//4R2pKJqlx48Zjx46tU6dOdDh16tR33313lw9/6qmntkvJJN10001777138mnJHirRgAEDoqknW7ZsGTlyZOqloqKiF154IarPPffcEj/yzhx++OE7S8kktWvXLhnA2rhxY3IWS+Xad999n3322e1SMhXTrFmz559/Pjkk5oYbbki+ZG3jxo3nnXdeYWFhdHjdddedeOKJu78jAAAAQNwIygAAAOx5UoMyyZfL7L5EIvHUU08lD//0pz+V8nf/vXr1Ou+885I3Pvnkk6U//KyzzirlFVGNGzc+/vjjo7qwsDB1ZE7aJZNDQRDUqlWrinZJ/QL+9re/LSUC0r59++RYkSAInnjiidKf3LNnzzPOOGNnV7Oyss4888zk4aRJk8rSbbm0adPmuOOOi+rt3r706quvJr+Zy/vepTI67rjjkmNXPv7446rY4tZbb01Gl3bfsccee/vtt0d1UVHReeedV1BQEATBL3/5y+nTp0fne/bseffdd1fWjgAAAACxIigDAACw54n+4jxSt27dynrszJkzV6xYEdX77LNPMtywMz/96U+T9bhx40pfnEzV7Ez37t2T9eLFi0tfXJ1at26drEeMGFEVW6xfvz45OCQ3N7d///6lr0/9yn/44YelL/4ufOWTIZgpU6Z89dVXyfPJ9y517ty5V69eVbF1EATt27dP7l7pD8/MzDz33HMr95m333577969o3ru3LmDBg0aPXp0cjROw4YNR40aVXWZLQAAAICaTVAGAABgz1O/fv1kvWHDhsp67GeffZas+/Tps8s3Ov3gBz9IjpyZMmVKUVFRKYtLGScTad68ebJeu3btLnqtRn379s3MzIzq+++//6qrrpo/f37lbvH5559v3bo1qo844oh69eqVvn6//fZr27ZtVH/zzTeLFi0qZfF34Svfr1+/5DdtMhyzcuXK119/PaovvPDCCj984cKF99133znnnHPAAQc0a9asdu3a4f/65JNPopWrVq3ajQ9Rsv333z/1z2OlyMzMfP7555s2bRodjhw58qKLLkpefeKJJzp06FC5OwIAAADEh6AMAADAnqdJkybJuhKTDal5i0MOOWSX62vXrr3//vtH9ebNm//zn/+Usjg1jVGi1NE4qW87Sru2bdumTnB57LHHOnbs2KNHj5tvvvm1115LfQ1WhZX3Kx8EQbdu3ZJ1Xl5eKSu/C1/53Nzcs88+O6qff/75KBU0cuTI4uLiIAjCMKxYUGbRokVnnHHGvvvue9NNN/3jH/+YOXPmqlWrSgls5efnV6T7UlVRZqVNmzbPPvtsMqyW/FCXX355pQ+wAQAAAIgVQRkAAIA9T2pQZuXKlZX12G+//TZZJ6dZlC51WertO8rJySl7J4lEouyLq8Ff/vKXU089NfXMpEmT7r333pNPPrlp06aHHnrorbfemvpGofKKw1c+ORNl2bJl77zzTpAyWqZ3797t2rUr7wMnTJjQrVu3MWPGlL3n0oceVUyDBg0q/ZmRH//4x9dee23qmYMOOuiBBx6oou0AAAAAYiIr3Q0AAABQbsk5LkEQFBQUzJ07t1OnTrv/2PXr1yfr1CkjpUhdVlBQsPs9fDfl5OSMGTNm1KhR991339SpU1MvJRKJqVOnTp069Z577jn55JMfeOCBCvxexOErH6Vhotk5zz33XOvWradMmRJdGjhwYHmftnr16h//+Mep45QOOeSQY445plOnTq1bt65Tp05OTk5yHMt111335ZdfVsaHKEGtWrWq6MnB/35jBEHQs2fPOnXqVN12AAAAAHEgKAMAALDnOeqoo7KysrZs2RIdfv7555USlKlXr16y3rBhQ1luSV1Wv3793e/hOysMw/PPP//888+fMWPG22+//f77748fP37VqlWpa/71r3+NGzfuX//61zHHHFOuh8fhKx+G4UUXXfT73/8+CIKXX345GfSpW7du8q1MZTd48ODVq1dH9X777TdixIiePXvubHFubm6FWk6zf/zjH3/9619Tzzz99NMnn3zymWeema6WAAAAAGoAr14CAADY89StW/ewww5LHo4dO7ZSHtu4ceNknUwhlC41KZJ6e9olp4mURWFhYdkXH3jggb/85S9feumlFStWzJgx44EHHvj+97+fvFpQUHD22WdvNwhkl2rSV74UybcvFRYWDhs2LKr79euXmhMqo9GjR0dFTk7OG2+8UUpKJgiCNWvWlPf5abdw4cJLL710x/OXXnppXl5e9fcDAAAAUGMIygAAAOyR+vXrl6xffPHFMqYrSteuXbtk/cUXX+xy/ebNm2fNmhXVtWvXbtGixe73UFlycnKiYuPGjbtcvHLlygpsEYbhAQcc8Mtf/vLDDz8cN25c06ZNo/MrVqwYPnx4uR5V3q/8dstSb/8u69Sp09FHH73dyQq8dykvL2/ZsmVRfeKJJ+67776lLN64ceOCBQvKu0V6bdmy5fzzz0++WOqKK65IZoy+/fbbCy64IDlNCgAAAIDyEpQBAADYI11xxRXJORybN2++9957d/+ZRx11VLJ+//33E4lE6es//PDD4uLiqD7ssMOys7N3v4fK0qBBg6j49ttvk03uzMSJE3dzu2OOOWbIkCHJw/Hjx5fr9h49emRmZiab2eVAmrlz5y5evDiqW7Vqtc8++5RruzRKBj4ie++9d9++fcv7kP/85z/JukuXLqUvTv0u3ZmMjP//P4/s8tu+GvzmN7/59NNPo/qggw564IEHHnnkkc6dO0dnPvroo7vuuittzQEAAADs4QRlAAAA9kiNGzf+2c9+ljwcOnToZ599Vt6HvPbaa6mHXbp0SU6FWbRo0XvvvVf67U8//XSy7t27d3l3r1LJISvFxcXTp08vZeX06dO/+uqr3d/xe9/7XrJOfS9SWdSrV+/www+P6sLCwv/7v/8rff13+StfuvPOO6927drJwwEDBqSGVMooNctSVFRU+uJHH310lw+sW7dusi7Xe7iqwltvvfXHP/4xqnNzc0ePHp2Tk1OvXr3Ro0cnv3T33HPPv//97/T1CAAAALAHE5QBAADYU911113t27eP6q1bt55xxhnTpk0r473FxcXXX3/9z3/+89STYRimhm9uuOGGrVu37uwJEyZMGDVqVPLGSy+9tFzNV7XDDjssWZeeO/nNb35TKTumhmMaN25c3ttTv4B33HFHKUNlFi1a9OCDDyYPL7vssvLulUaNGjVas2ZNwX/9/ve/r8BDWrZsmaxLH97z2muvjRkzZpcPbNKkSbJO73uali9ffuGFFyaTQA8++OCBBx4Y1d27d08GaLZt2zZgwICKvTIMAAAAIOYEZQAAAPZUjRo1Gj16dK1ataLD5cuX9+7d+4UXXtjlu2M++OCDHj16/PnPf95x5ZVXXlmnTp2onjx58qBBg0p8Wl5e3tlnn528dPrpp3fs2HG3Pkxl+/GPf5ysH3rooTlz5pS47Pbbbx87dmzpj7r99ttHjBixZcuWUtYkEok///nPycPkeJiy+8lPfpIc57N06dJzzz23xFkp+fn5p59+enLqyaGHHlqBVxelV25ubr3/ysrKqsAT9tlnnzZt2kT1xIkTR48eXeKyCRMmDBgwoCwP7Nq1a7IeO3bsLl/VVEW2bdt24YUXrlixIjo877zztsufXXPNNaeddlpUf/PNNwMHDvwuvCgKAAAAYM8iKAMAALAH69mz57Bhw5Ivr/n2228vuOCCI4888q9//WteXt52i+fMmTN06NCjjz762GOP/fLLL0t84N57733fffclD5988sm+fft++umnyTMbNmx46qmnDj/88MWLF0dnmjRp8sgjj1Tmp6oMhxxySM+ePaN6w4YNffr0GTNmTHJATiKR+PTTT0866aQ//OEPQRCUnvKZNm3ahRde2KZNmyuvvPKNN95YvXp16tVt27aNHz/++OOPf/nll6Mzubm5F1xwQXkbzs3NHTZsWPLw9ddf79mz59tvv71t27boTFFR0T//+c/u3bt/8cUX0Zns7Oy//e1v5d2oZrjoootS63vuuWfdunXJM0uWLLntttt+8IMffPvttzk5OcnBSzvTvHnzbt26RfWcOXN69er14IMPvvrqq++k2LRpUxV8jv8xZMiQd955J6o7dOjw17/+dcc1zzzzzN577x3Vr7/++tChQ6u6KwAAAIAapiL/5xYAAADfHQMHDmzYsOHAgQOTQYGJEydOnDgxCIImTZo0a9asYcOGq1ev/uabb5JjSJJatWq14wN//vOfT5gwYfjw4dHh+++/36tXr2bNmrVt23bTpk0LFizYuHFjcnGdOnVGjhzZunXrKvlsu+ehhx46+uijo3DM0qVLzzjjjEaNGu27777btm3Ly8tbs2ZNtOz888/v3Lnzb3/729KftmLFiscff/zxxx8PgqBVq1ZNmzatW7fuhg0bFixYsN1rkv785z8n552Uy6mnnnrbbbdF2Z0gCL744ovjjz++cePG7dq127p168KFCwsKCpKLMzIyHn/88UMOOaQCG9UA119//fDhw5csWRIEQVFR0a233nrHHXd06dKlbt26K1euXLhwYXLUyl/+8pfnn39+4cKFpT/wuuuuS4ZvJk2aNGnSpO0WLFiwYJeBm93x8ccf33nnnVFdq1atUaNGNWzYcMdlTZo0GTlyZJ8+faJv7FtuuaV37949evSousYAAAAAahgTZQAAAPZ4Z5xxxhdffHH66advd37NmjWzZs2aMGHCvHnztkvJ7LXXXvfff/+4ceN2fFoYhs8+++wNN9yQHFQTBMHKlSsnT548Y8aM1JRMy5Yt33rrrRNOOKFSP02l6dmz55NPPpmZmZk8k5+fP3ny5KlTp6amZCowlOWbb76ZNm3ap59+Om3atNSUTJ06dR5//PFBgwZVuOff//73999/f3Z2dvLMt99+O3Xq1GnTpqWmZBo0aPD3v//9kksuqfBGe7omTZqMHTs2+bKqIAi2bNny1VdfTZgwYcGCBVFKJiMjY+jQoZdddllZHnjhhRfeeOONYRhWVcelys/Pv+CCC5Kv9xo8eHByHtKOjjnmmDvuuCOqi4uL+/fvn/q9AQAAAEDpBGUAAABqgvbt27/88stTpky56qqrWrZsubNldevWPemkk0aNGrV06dJf/epXtWrVKnFZGIb33Xff5MmTTzvttNq1a++4oHXr1rfffvucOXO+//3vV9pnqAIXX3zxuHHjevXqteOljh07Dh8+fOTIkamplBINGzbs6aefPuuss1JjGdtp0qTJoEGDvv766yuuuGI3e/7Vr3719ddfDxgwoF69ejte3Wuvva655pq5c+eeeeaZu7nRnu7QQw+dNGnSgAEDUrNQkTAMf/SjH3366ae//vWvy/7Ae++9d+rUqddff/33v//95s2b5+TkVGq/pfnZz362aNGiqD7hhBOuv/760tffdtttxx57bFTPmzdvd7JZAAAAAHETJmcRAwAAUGPMmzdv+vTpixcvLigoSCQSjRo1atKkyYEHHti1a9cdUwWlKywsHD9+fF5e3qpVq2rXrt28efOuXbt27969ahqvKosWLRo/fvzy5cs3bdrUvHnzww477LDDDqvA+JAFCxbMmjVr0aJFa9euLSoqqlevXrNmzQ4++OADDzwwK6uS325cVFT08ccfL1iwYOXKlRkZGc2bN+/cuXPPnj1TJ/0QBMGaNWvGjRu3aNGigoKCunXrdujQ4eijj27evHm6+wIAAADgu0hQBgAAAAAAAACAWPB/oQEAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsZCV7gYAAAAAAAAAoObbtm3blClT8vLyVq5cmZub26JFi0MPPbRp06bp7gviRVAGAAAAAAAAgHhJJBJ5eXlfffXVV199NWPGjBkzZuTn50eX+vXrN2TIkMrdrqio6Iknnhg1atTKlStTz2dmZh555JHXX399165dK3dHYGcEZQAAAAAAAACIkVtuueXtt98uKCionu2++eabK664YtasWTte2rp168cff3zeeeddd911l1xySfX0AzEnKAMAAAAAAABAjMyYMaPaUjIFBQWXXXbZnDlzosMWLVqccsop7dq1KygomDhx4gcffJBIJIqLi4cMGVK/fv2zzz67erqCOBOUAQAAAAAAACCOMjMz9913365du7Zq1eqxxx6rii0GDx6cTMmcdtppgwcPzs7Ojg4vvfTSiRMnXn311dFbn+66664jjjiiXbt2VdEGkBQmEol09wAAAAAAAAAA1eSxxx5r0KBB165d999//5ycnCAIlixZctxxx0VX+/XrN2TIkErZaObMmf369du2bVsQBIcddtjzzz+fkZGx3ZoPPvjg8ssvj+oTTzzxwQcfrJStgZ0xUQYAAAAAAACAGLnyyiurZ6Nnn302SskEQXDbbbftmJIJgqB37959+vR57733giB44403li1b1rp16+ppD+KphD+HAAAAAAAAAMDu2LJly7///e+oPvjgg7t27bqzlf3790/Wb731VpV3BvEmKAMAAAAAAAAAlWzKlCn5+flRfcwxx5Sy8qijjqpVq1ZUR6NlgKojKAMAAAAAAAAAlWzmzJnJ+rDDDitlZU5OzoEHHhjVs2bNqtq2IPYEZQAAAAAAAACgks2ZMydZt2/fvvTF7dq1i4pvv/129erVVdcVICgDAAAAAAAAAJVsyZIlUZGRkdGyZcvSF7du3TpZL168uArbgtjLSncDAAAAAAAAAMTa7Nmzd+f2zp07V1YnlWj9+vVRkZubW6tWrdIXN2zYcMcbgaogKAMAAAAAAABAOp166qm7c/usWbMqq5NKVFhYGBU5OTm7XJy6ZsOGDVXVE+DVSwAAAAAAAABQ6TZt2hQVuxwnEwRBdnb2jjcCVcFEGQAAAAAAAIDKVOfQq9Pdwh5mn3Q3UBWSQ2KKi4t3ubioqGjHG4GqYKIMAAAAAAAAAFSy3NzcqCjLhJjNmzcn67p161ZVT4CJMgAAAAAAAACk1yuvvJLuFipfvXr1oqKwsLC4uLj0FzDl5+cna0EZqFKCMgAAAAAAAACkU+fOndPdQuXbe++9o2Lbtm3Lly9v27ZtKYuXLVuWrPfZp0a+igq+K7x6CQAAAAAAAAAqWadOnZL1okWLSl+cl5cXFY0aNdprr72qsC2IPUEZAAAAAAAAAKhkBxxwQLKePHlyKSs3bdr01VdfRfX+++9ftW1B7AnKAAAAAAAAAEAlO/TQQxs1ahTV48aNK2Xlp59+WlxcHNV9+vSp6sYg5gRlAAAAAAAAAKCSZWVl9e3bN6qnTZuWnBmzo1GjRiXrH/3oR1XeGcSboAwAAAAAAABApQoz/Crfrz3QQw891OW/HnrooRLXDBw4MCPj/326wYMHb9u2bcc148aNe++996L6hBNOaNOmTRU1DET2yJ84AAAAAAAAAPAdt//++5966qlRPWnSpJtvvrmoqCh1weeff37DDTdEdVZW1q9//evqbhHiJyvdDQAAAAAAAABA9fniiy+uv/761DNbt25N1m+99dakSZNSr7Zs2XL48OEV2+u2226bPn36vHnzgiAYM2bMZ599duqpp+6zzz4FBQUTJ0784IMPkmNm7rzzzg4dOlRsF6DsBGUAAAAAAAAAiJFNmzbl5eXt7OqGDRs2bNiQeiY1RlNeDRo0GDZs2KBBg2bPnh0EwfLly4cNG7bdmmiWzLnnnlvhXYCy8+olAAAAAAAAAKgqbdq0+ec//3n11Vc3a9Zsu0sZGRm9evUaNWrUpZdempbeIIbCRCKR7h4AAAAAAAAAao46h/0i3S3sYTZO/ku6W6gO27Ztmzx5cl5e3qpVq+rUqdOiRYtDDz10x/QMUKW8egkAAAAAAAAAqlxGRkaPHj169OiR7kYg1rx6CQAAAAAAAACAWDBRBgAAAAAAAKBShWG6OwCgZCbKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALGQle4GAAAAAAAAAGqW0MACgO8oP6ABAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWMhKdwMAAAAAAAAANUsYprsDAEpmogwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC1npbgAAAAAAAACgZgkNLAD4jvIDGgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIiFrHQ3AAAAAAAAAFCzhGG6OwCgZCbKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALGQle4GAAAAAAAAAGqW0MACgO8oP6ABAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWMhKdwMAAAAAAAAANUsYprsDAEpmogwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC1npbgAAAAAAAACgZgkNLAD4jvIDGgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIiFrHQ3AAAAAAAAAFCzhGG6OwCgZCbKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALGQle4GAAAAAAAAAGqW0MACgO8oP6ABAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWMhKdwMAAAAAAAAANUsYprsDAEpmogwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC1npbgAAAAAAAACgZgkNLAD4jvIDGgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIiFrHQ3AAAAAAAAAFCzhAYWAHxH+QENAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxEJWuhsAAAAAAAAAqFkywnR3AEDJTJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYiEr3Q0AAAAAAAAA1CyhgQUA31F+QAMAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxkJXuBgAAAAAAAABqljBMdwcAlMxEGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWstLdAAAAAAAAAEDNEhpYAPAd5Qc0AAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAtZ6W4AAAAAAAAAoGYJw3R3AEDJTJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGIhK90NQE2zbdu2b7/9trCwMCsrq1WrVuluBwAAAAAAAAD4fwRloBIUFhaOGDHirbfe+vTTT7/55pvoZKdOnWbNmpVcs3nz5jfffDMIgszMzJNPPjk9jQIAAAAAAABAjAnKwO7685///Ic//GHdunVBECQSieT51DoIgtq1a99+++3Tp08PguDTTz894ogjqrlPAAAAAAAAAIi5jHQ3AHuwTZs2HX/88TfeeOPatWuDlGRMGIYlrr/yyiujNSNHjqy2JgEAAAAAAACAiIkyUHFnn332O++8E8ViMjMzjzvuuKOOOqpFixZXXXVViVmZfv36/fznPw+CIHoHEwAAAAAAADVTaGABwHeUoAxU0PDhw1977bUwDBOJxKmnnvrII4/svffe0aWrrrqqxFtatGjRvXv3KVOmzJo1a9WqVU2bNq3GfgEAAAAAAAAg7iQZoYJ+97vfRcXAgQPHjBmTTMmUrnv37lExffr0KmoMAAAAAAAAACiRoAxUxNdffz1v3rwwDFu2bPnII4+U/cYuXbpExfz586umNQAAAAAAAACgZIIyUBGTJ0+OinPOOSc3N7fsNzZq1Cgq8vPzK7spAAAAAAAAAKA0gjJQEcuXL4+KAw44oFw31q5dOyo2b95cyT0BAAAAAAAAAKUSlIGKSCQSUZGZmVmuG9euXRsVydEyAAAAAAAAAED1EJSBimjevHlULF68uFw3fv3111HRrFmzSu4JAAAAAAAAACiVoAxUxH777RcVb731VrlufPfdd6OiR48eldwTAAAAAAAA3xFh6Ff5fgFUF0EZqIgjjzyyUaNGiURiwoQJ77//fhnveu211+bOnRuGYYcOHdq3b1+F/QEAAAAAAAAAOxCUgYrIyMjo379/EASJRGLAgAGLFi3a5S0rVqwYNGhQVF9++eVV2x8AAAAAAAAAsANBGaigO+64Izc3NwzDZcuWHXHEESNGjEgkEjtb/PHHH3/ve99bsmRJEATNmjW7+uqrq7FTAAAAAAAAACAIgiAr3Q3Anqply5bDhg0bMGBAGIarVq0aOHDgTTfddNJJJ3Xt2jVaUFBQ8Oijjy5ZsuTf//73xIkTo5NZWVkvvPBCbm5u+hoHAAAAAAAAgJgKS5mBAezSww8/fO21127dujX6oxSGYRAEqXUkOpOdnT1s2LALL7wwTc0CAAAAAABQHeqc8Kd0t7CH2fjm9eluAYgLr16C3XL11Ve///77Xbp0ST0ZhuGOKZn999//vffek5IBAAAAAAAAgHQRlIHddfTRR8+YMePll18+99xzW7ZsmfhfDRo0OP3000eNGvXVV1/16tUr3c0CAAAAAAAAQHx59RJUshUrVqxatWrt2rW5ubl77bVX69atMzIk0gAAAAAAAGKkzolD093CHmbjG9emuwUgLrLS3QDUNM2bN2/evHm6uwAAAAAAAAAAtmfQBQAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC4IyAAAAAAAAAADEQla6G4A9QGZmZuU+MAzDLVu2VO4zAQAAAAAAAIDSCcrAriUSiTAME4lEuhsBAAAAAAAAACpOUAbKREoGAAAAAACAsgrDdHcAQMkEZWDXnnnmmXS3AAAAAAAAAADsLkEZ2LWBAwemuwUAAAAAAAAAYHdlpLsBAAAAAAAAAACoDoIyAAAAAAAAAADEgqAMAAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALWeluAPZUv/vd7ypwV2ZmZoMGDRo1atSpU6dDDz00Jyen0hsDAAAAAAAgzUIDCwC+owRloILuuuuuMAx35wmZmZnHHnvslVde2a9fv8rqCgAAAAAAAADYGUlG2C2J/7XLNaknt2zZ8u6775599tnHH3/8N998U10tAwAAAAAAAEBMCcpAxUXBl/C/gh1yM8lwzI4LUh/yzjvv9O3bNz8/Pz0fAwAAAAAAAADiQVAGKmjbtm1bt2793e9+F4ZhIpFo1arVjTfe+MYbbyxevHj9+vXFxcWrV6+eOnXq008//eMf/zhKyRx00EFff/31pk2bli1b9sYbb1xzzTX169ePLs2ePfuqq65K92cCAAAAAAAAgJos3NnLYoBdGjhw4IgRI4IguOmmm+64446cnJydrfz8888vuuiiWbNm1atXb/z48QcffHB0funSpWedddaECROCIMjIyJg+ffr+++9fPc0DAAAAAABQRer8+MF0t7CH2fjaL9PdAhAXJspABT399NPDhw8PgmDw4MF33313KSmZIAh69OjxwQcf7L333gUFBeecc87GjRuj823atPnXv/7Vpk2bIAgSicTo0aOroXMAAAAAAAAAiCdBGaige+65JwiCLl263HzzzWVZ36xZsyFDhgRBMGfOnL///e/J83vttdcNN9wQ1R988EEVdAoAAAAAAAAABIGgDFTMZ599Nm/evDAMzzzzzLLf1a9fv6ysrCAIRo4cmXr+jDPOiIp58+ZVXo8AAAAAAACkSRj6Vb5fANVFUAYqYvbs2VHRoUOHst+Vk5PTokWLRCKRvD2yzz77NGjQIJFIrFmzpjK7BAAAAAAAAABSCMpARXzzzTdRsXHjxnLdGK1fvnz5ducbN24cBMHmzZsrozsAAAAAAAAAoARZ6W4A9kj16tWLismTJ5f9rry8vGhmTPL2pE2bNgVBkJubu8uHDB06dOjQoaWvufbaa6+99tqyNwYAAAAAAAAAcSAoAxURvXEpkUi8+OKL99xzT4sWLcpy1yOPPBIEQRiG272wqaioaPXq1WEYNmvWbJcPWbdu3dKlS3e5piz9AAAAAAAAAECsCMpARfTp06devXobNmwoKCg4//zzX3nllbp165Z+y5gxY+6///4wDIMgOOWUU1IvTZ06dcuWLWEY7rvvvrvcukGDBm3atNnlml0+BwAAAAAAAADiRlAGKiInJ+eyyy6Lgi8ffPBBjx49hg4detJJJ5W4eOXKlffcc8/DDz+8devWRCJRv379Sy+9NHXBK6+8EhVHHHHELrf2WiUAAAAAAAAAqJgwkUikuwfYIxUWFnbv3n3evHlBECQSiTAMW7du3bt3765duzZu3Lh27doFBQV5eXmTJk366KOPoohMNE7mscceu/zyy5PP2bJlS8eOHRcvXhyG4dtvv923b9+0fSQAAAAAAAAqQ52T/5LuFvYwG//1i3S3AMSFiTJQQbm5ue+9917fvn3nzJkThmEikVi6dOkLL7yw48pkRCaRSNx9992pKZkgCL744ouePXv27NmzVq1axx57bPU0DwAAAAAAQBUKM9LdAQAlM1EGdsv69etvuummv/71r9u2bQuCIArEbCf6U9ahQ4fHH3/8Rz/6UXW3CAAAAAAAQPWqc8rD6W5hD7Px1avT3QIQF5KMsFvq1av3yCOPzJ8//7bbbjv88MOzsrIS/6t58+b9+vX75z//OXv2bCkZAAAAAAAAAEgjE2WgMm3evHnJkiX5+fmbN29u0KBBs2bNWrRoke6mAAAAAAAAqFYmypSXiTJAtclKdwNQo9SuXbtjx47p7gIAAAAAAAAAKIFXLwEAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsZCV7gaghli+fPnXX3+dn5+/fv36RCKxy/UXXXRRNXQFAAAAAABAGoQGFgB8RwnKwG5ZtWrVAw88MGLEiMWLF5frRkEZAAAAAAAAAKhmgjJQcW+++eaAAQPWrFmTHCEThuEu70okEmVZBgAAAAAAAABULkEZqKAJEyb069dv06ZNqSfL8tIlAAAAAAAAACAtvBsPKuiaa67ZtGlTNBvmqKOOevrpp2fOnFlQULCtDLZu3Zru9gEAAAAAAAAgdkyUgYqYPXv2xIkTo5TMrbfe+oc//CHdHQEAAAAAAAAAu2CiDFTEJ598EhXdu3eXkgEAAAAAAACAPYKgDFTEihUrouLMM89MbycAAAAAAAAAQBl59RJURE5OTlS0adMmvZ0AAAAAAADwnROG6e4AgJKZKAMV0bZt26goKChIbycAAAAAAAAAQBkJykBFHHPMMbVq1QqCYNKkSenuBQAAAAAAAAAoE0EZqIi99trrtNNOSyQSY8aMWbNmTbrbAQAAAAAAAAB2TVAGKujBBx9s0qTJunXrLr/88nT3AgAAAAAAAADsmqAMVFDr1q1ffPHFhg0bvvTSSyeddFJeXl66OwIAAAAAAAAAShMmEol09wB7pOeeey4IgpkzZ953332JRCIjI6Nv375HH310q1atcnJydnn7RRddVPU9AgAAAAAAkAZ1Tnss3S3sYTaOvTLdLQBxISgDFZSRkRGGYVRHf46Sh2WxdevWKmkLAAAAAACAdBOUKS9BGaDaZKW7AagJyhWRSSQS5VoPAAAAAADAHibMSHcHAJRMUAYqzkAmAAAAAAAAANiDCMpABS1YsCDdLQAAAAAAAAAA5SAoAxXUrl27dLcAAAAAAAAAAJSDd+MBAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCxkpbsBqAlmzJjx+uuvT5gwYcmSJfn5+Zs2bUokEqWsD8Nw3rx51dYeAAAAAAAA1SoM090BACUTlIHdMmfOnCuvvPK9995LntllRCaRSIT+2QgAAAAAAAAAqp2gDFTcv//97zPOOGPDhg3bhWOiNEzqYbIuPUYDAAAAAAAAAFQdQRmooCVLlpx77rnr16+PcjDt2rU77rjjWrVqNXjw4CAImjRpcvXVV+fn58+fP3/8+PH5+flhGGZkZAwaNKhp06bp7h0AAAAAAAAA4ig03wIq5qqrrnr88cfDMMzMzPzzn//885//PCMjIwiCjIyMMAw7duw4e/bsaGVRUdHTTz99yy23rFu3bp999hk7duzBBx+c1t4BAAAAAACoQnXOeCLdLexhNr58ebpbAOIiI90NwB6puLj42WefjWbJ/PGPf7zmmmuilEyJsrOzBw0a9Pnnn7ds2TIvL++0005bt25dNTYLAAAAAAAAAASBoAxUzMSJEzdu3BgEwT777POLX/yiLLd07Nhx5MiRiUQiLy/vlltuqeIGAQAAAAAAAIDtCcpARcycOTMqTjnllGiuzHaKi4t3PNm7d+9jjjkmkUiMHDmyqKioalsEAAAAAAAAAP6XoAxUxJo1a6LigAMO2O5SZmZmEASbN28u8cYf/ehHQRCsW7fuww8/rMoGAQAAAAAASJ8ww6/y/QKoLn7iQEUkB8bUq1dvu0v16tVLJBKrV68u8cY2bdpExeLFi6uuPQAAAAAAAABgR4IyUBENGjSIinXr1m13qXHjxkEQbNmyZenSpTvemHzj0n/+85+qbBAAAAAAAAAA2J6gDFREu3btomLJkiXbXerSpUtUfPLJJzveOHXq1KioXbt2VTUHAAAAAAAAAJREUAYq4sADD4yKzz//fLtLhx9+eFQ8/fTT211atWrV6NGjozoZtQEAAAAAAAAAqoegDFTEvvvu26pVq0Qi8fHHH69fvz710tlnnx0Vb7755m233VZcXBwdLlq06NRTT83Pzw+CIDMz85hjjqnelgEAAAAAAAAg7gRloIJ++MMfBkGwefPml156KfV89+7de/funUgkgiC45557mjdv3qtXr0MPPbRTp04TJkwIgiAMw3POOadp06ZpaRsAAAAAAAAAYktQBioomhyTSCTuvffe7S49+uijjRo1iuq1a9dOmDDhyy+/3Lp1a3SmZcuW999/fzV2CgAAAAAAAAAEQRBkpbsB2FOddNJJU6ZMieotW7ZkZf3/f5oOOOCAN9988yc/+cncuXODIIimy0RFt27d/vGPfzRv3rz6GwYAAAAAAKCahGG6OwCgZGHyr/CBylVUVDR27Ni333576dKlQRC0a9fuxBNPPOWUU0L/YAQAAAAAAFCj1TnzqXS3sIfZ+OLP0t0CEBeCMgAAAAAAAACVSVCmvARlgGqTke4GAAAAAAAAAACgOgjKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxICgDAAAAAAAAAEAsZKW7AQAAAAAAAIAaJQzDdLcAQMlMlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiISvdDQAAAAAAAADUKGEYprsFAEpmogwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC1npbgAAAAAAAACgZgnT3QAAO2GiDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALWeluAAAAAAAAAKBGCcMw3S0AUDITZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYyEp3AwAAAAAAAAA1ShiG6W4BgJKZKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC4IyAAAAAAAAAADEQla6GwAAAAAAAACoUcIwTHcLAJTMRBkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFrLS3QAAAAAAAABAjRKGYbpbAKBkJsoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsZCV7gYAAAAAAAAAapYw3Q0AsBMmygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxkJXuBgAAAAAAAABqlDAM090CACUzUQYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIhax0NwAAAAAAAABQo4RhmO4WACiZiTIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALGSluwEAAAAAAACAGiUMw3S3AEDJTJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYiEr3Q0AAAAAAAAA1ChhGKa7BQBKZqIMAAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAtZ6W4AAAAAAAAAoGYJ090AADthogwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC1npbgAAAAAAAACgRgnDMN0tAFAyE2UAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWMhKdwMAAAAAAAAANUoYhuluAYCSmSgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxEJWuhsAAAAAAAAAqFHCMEx3CwCUzEQZAAAAAAAAAABiQVAGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBay0t0AAAAAAAAAQM0SprsBAHbCRBkAAAAAAAAAAGLBRBkAAAAAAAAA4mvx4sXTp09fsWJFcXFx8+bN991334MOOqiKNpoxY8aKFSvWr19fu3btBg0adO7cuUuXLrVr166K7YASCcoAAAAAAAAAEEcfffTRX/7yl6lTp253fp999hk4cOBPfvKTMKyE12ht2bJl5MiRL7zwwvz583e8mpube+KJJ1511VVt27bd/b2AXQoTiUS6ewAAAAAAAACoOZr/7P/S3cIeZsVT51b/pvfcc8+zzz5byt+YH3nkkY888kj9+vV3Z5dvvvlm0KBBM2fOLH1ZTk7OnXfeeeaZZ+7OXkBZmCgDAAAAAAAAQLzcf//9f/vb36K6Vq1aJ5xwwsEHH5ydnT1v3rxXXnll7dq1QRB89tln11xzzbBhw2rVqlWxXQoKCi688MLFixcnN+rTp0/37t0bNWq0adOmefPmvfXWWytXrgyCYNOmTbfeemudOnVOOumkSvh4wM6ZKAMAAAAAAABQmUyUKa9qnijz2WefXXTRRVHdpk2bJ554olOnTsmrBQUF11xzzSeffBIdXnPNNVdffXXFNho8ePBzzz0X1Z07d37kkUf22Wef1AVFRUVDhgx5/vnno8MmTZq8++67ubm5FdsOKIuMdDcAAAAAAAAAANUkkUjcd999UV2rVq3HHnssNSUTBEH9+vUfffTRZKLlqaeeWr16dQU22rJly9ixY6M6Jyfnr3/963YpmSAIsrOz77jjjh/84AfR4Zo1a95///0K7AWUnaAMAAAAAAAAQGUKKafq/N2ZOHHi9OnTo7p///5dunTZcU1ubu71118f1YWFhaNGjarARnl5efn5+VHdu3fv1q1b72zlBRdckKxnzJhRgb2AshOUAQAAAAAAACAu3nrrrWTdv3//nS077rjjmjVrtuMtZZdMyQRB0L59+1JWtmvXLlmvXbu2AnsBZScoAwAAAAAAAEBcvPfee1HRqlWr7V66lCorK6tXr15RPXPmzG+++aa8GzVs2DBZFxYWlrJy48aNybpJkybl3QgoF0EZAAAAAAAAAGJh/fr1S5YsierDDjus9MWpC2bOnFnevTp06NCoUaOo/uyzz0pZ+fHHHyfrI488srwbAeUiKAMAAAAAAABALMydOzdZp77wqESp70tKvbGMMjIyBgwYENWzZ88eMWJEicvy8vKefPLJqO7atWtyjA1QRQRlAAAAAAAAAIiFxYsXJ+vWrVuXvjh1QeqNZXfFFVcceuihUf2HP/zhjjvumDNnTvLqt99++/zzz59zzjn5+flBEDRr1uz+++8Pw7ACGwFll5XuBgAAAAAAAACItdmzZ+/O7Z07dy7jyvXr1yfr5HuRdqZBgwbJesOGDeXvK8jOzn7qqafuvvvuF198cdu2baNHjx49enTdunUbNWq0adOm1atXR8vCMDzuuONuv/32li1bVmAXoFwEZQAAAAAAAABIp1NPPXV3bp81a1YZVxYWFibr2rVrl764Tp06ybpiQZkgCOrWrTt48OCBAwf+9re//fzzz6NHpT6tcePGN95445lnnlmx5wPl5dVLAAAAAAAAAJUppJyq7bdm06ZNybpWrVqlL87Ozi7xxnIpLi5+7LHHLrzwwigls6Nvv/32lltuOf300ydPnlyxLYByMVEGAAAAAAAAgFjIyclJ1sXFxaUvLioqKvHGslu/fv2ll146ZcqU6PDYY48999xzDznkkEaNGm3evHnevHlvv/32888/X1hYOHPmzAEDBtx77727OVwH2CVBGQAAAAAAAABiITc3N1lv3ry59MWpU2Tq1q1bge2uv/76KCUThuFvf/vb8847L3mpVq1a3bp169at2znnnHPxxRcvW7Zs69att9xyS+fOnbt06VKBvYAyEpQBAAAAAAAAIJ1eeeWV6tmoXr16yXrt2rWlL05dUIGgzEcfffTee+9Fdf/+/VNTMqnatWt3//33R1eLi4sffPDBRx99tLx7AWUnKAMAAAAAAABAOnXu3Ll6Nmrbtm2yXrZsWemLUxek3lhGr776arIeOHBgKSu7d+/evXv3qVOnBkEwbty4TZs2VexNT0BZZKS7AQAAAAAAAACoDp06dUrWixYtKn1x6oLUG8to5syZUVGvXr0OHTqUvvjggw+OiuLi4oULF5Z3L6DsBGUAAAAAAAAAiIV69ertvffeUT158uTSF0+aNClZd+nSpbx7FRYWRkVubu4uF6eu2bhxY3n3AspOUAYAAAAAAACAuOjTp09ULFu2bO7cuTtbtmXLlk8++SSqu3Tp0rp16/Ju1KBBg6jIz88vLi4uffHKlSuTdaNGjcq7F1B2gjIAAAAAAAAAlSmknKrzd+f4449P1qNGjdrZsnfffTcZXkm9pezatWsXFUVFRRMmTChl5ZYtWz7++OOozsnJqUAoByg7QRkAAAAAAAAA4uKII47o2rVrVI8aNWr27Nk7riksLPzTn/4U1bm5uf37999xzc0339zlv1588cUdF/zgBz9I1g888EBRUdHOWnrmmWeWL18e1UceeWTt2rXL/GmAchOUAQAAAAAAACAuwjC84YYborq4uHjQoEHz5s1LXVBQUHD11Vfn5eVFh5dccknTpk0rsNGJJ57Ypk2bqP7yyy+vuuqq1atXb7dmy5Ytw4YNGzp0aPLMZZddVoG9gLLLSncDAAAAAAAAAFB9evXqdfnllz/xxBNBECxduvT0008/4YQTDjnkkOzs7Hnz5o0dO3bt2rXRyp49ew4aNKhiu2RnZw8ePPiyyy4rLi4OguDDDz/s06dP3759DznkkEaNGm3cuHH+/Pn//ve/ly1blrzlJz/5yRFHHLHbnw8ojaAMAAAAAAAAAPFy7bXXbty4cfjw4UEQFBcXv/rqq6+++up2a3r27PnII49kZ2dXeJdevXo99NBDN998c35+fhAEmzdvfv31119//fUdV4ZhOHDgwJtuuqnCewFl5NVLAAAAAAAAAMRLGIa33XbbU089dcghh+x4tW3btr/5zW+ee+65Bg0a7OZGffr0ee211y699NK99tqrxAVZWVnHH3/8yJEjb7nllowMf4MPVS5MJBLp7gEAAAAAAACg5mh1+T/T3cIe5psnzkrj7osXL542bdqKFSuKi4ubNWvWsWPHgw8+uNJ32bZt24IFC77++us1a9Zs2LAhOzu7QYMGHTp06Nq1a506dSp9O2BnvHoJAAAAAAAAgPhq27Zt27Ztq3qXjIyMjh07duzYsao3AkonKAMAAAAAAABQmcIwTHcLAJTMG84AAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWMhKdwMAAAAAAAAANUuY7gYA2AkTZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIBUEZAAAAAAAAAABiQVAGAAAAAAAAAIBYyEp3AwAAAAAAAAA1ShiG6W4BgJKZKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC4IyAAAAAAAAAADEQla6GwAAAAAAAACoUcIwTHcLAJTMRBkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFrLS3QAAAAAAAABAjRKGYbpbAKBkJsoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsZCV7gYAAAAAAAAAapYw3Q0AsBMmygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC4IyAAAAAAAAAADEgqAMAAAAAAAAAACxkJXuBgAAAAAAAABqlDAM090CACUzUQYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWBCUAQAAAAAAAAAgFgRlAAAAAAAAAACIhax0NwAAAAAAAABQo4RhmO4WACiZiTIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALGSluwEAAAAAAACAGiUMw3S3AEDJTJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYiEr3Q0AAAAAAAAA1ChhGKa7BQBKZqIMAAAAAAAAAACxICgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAtZ6W4AAAAAAAAAoGYJ090AADthogwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsSAoAwAAAAAAAABALAjKAAAAAAAAAAAQC1npbgAAAAAAAACgRgnDMN0tAFAyE2UAAAAAAAAAAIgFQRkAAAAAAAAAAGJBUAYAAAAAAAAAgFgQlAEAAAAAAAAAIBYEZQAAAAAAAAAAiAVBGQAAAAAAAAAAYkFQBgAAAAAAAACAWMhKdwMAAAAAAAAANUoYhuluAYCSmSgDAAAAAAAAAEAsCMoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxEJWuhsAAAAAAAAAqFHCMN0dALATJsoAAAAAAAAAABALgjIAAAAAAAAAAMSCoAwAAAAAAAAAALEgKAMAAAAAAAAAQCwIygAAAAAAAAAAEAuCMgAAAAAAAAAAxIKgDAAAAAAAAAAAsZCV7gYAAAAAAAAAapQwDNPdAgAlM1EGAAAAAAAAAIBYEJQBAAAAAAAAACAWBGUAAAAAAAAAAIgFQRkAAAAAAAAAAGIhK90NQM0xd+7cxYsXr1mzprCwsH79+meccUa6OwIAAAAAAAAA/n+CMrC7Pvroo0ceeeTtt9/+/9i78yirqjttwGdfbgkU8yiIzBgBFXBicACNaTWJmqhptLtjSJxiJ8bYRBNtjUbbOCROsTuJjR+OCa1tYjQ4G0VQQcQBQRRRZBYDUkABxVRwvj9up5qGKqpuUVWnLud5Fsv149y973ldUmu5lq97l5SUVDzs27fvjkWZzZs3X3XVVdu3b2/SpMnNN9/cpEmTBIICAAAAAAAAQLopykDtrVix4vzzz3/qqaeiKIrjeDcrmzZt+v777z/77LMhhFGjRp1yyikNlREAAAAAAICGFkLSCQCoQibpAFCoFixYcPjhhz/11FNxHO/YkglV/IvP+eefnxseeeSRhsgHAAAAAAAAAPxfTpSB2igrKzvxxBOXLVuWq8X0799/zJgxw4cP79y580EHHVRpV+bkk09u2rTpli1bXnrppQbPCwAAAAAAAAAoykCt3HLLLfPnzw8hhBB++ctfjh07ttotxcXFw4YNmzJlymeffbZw4cJevXrVf0wAAAAAAAAA4H+5egnytn379l//+te5+c4776xJSyZn0KBBueH999+vl2QAAAAAAAAAQNUUZSBv06ZNKykpCSEcfPDBF198cc039u7dOzcsXry4fqIBAAAAAAAAAFVSlIG8zZs3Lzd8/etfz2tjmzZtcsO6devqNhIAAAAAAAAAUC1FGcjbihUrckOvXr1q9w3bt2+vszQAAAAAAAAAQM1kkw4Ahad58+a5YdOmTXltLCkpyQ0dOnSo40wAAAAAAAA0GiGEpCMAUDknykDeOnfunBsq7mCqoXfeeSc3dO3atY4zAQAAAAAAAADVUZSBvA0ZMiQ3TJw4MY7jGu7avHnz888/H0VRCOGoo46qp2wAAAAAAAAAQFUUZSBv/fv379GjRxzHCxYsuPvuu2u46+677161alUI4YgjjmjXrl29JgQAAAAAAAAAdqUoA7Xxve99L4qiOI7Hjh07ceLEate/9tprV155ZW7+l3/5l/oNBwAAAAAAAABURlEGauOHP/xhjx49QgibN28+/fTTzz///Llz51a6ct26dTfeeOOJJ564adOmEMJhhx121llnNXBaAAAAAAAAACCKohDHcdIZoCDNmjVr5MiR69ati+M4hBBFUe/evQ866KCJEyeGEFq1anXiiScuXbr0rbfeKi8vz/2gderU6c033+zevXvS2QEAAAAAAKhHB/7kuaQjFJgPbzkp6QhAWijKQO1NmzZt9OjRy5YtC+F/fpRyjZkd5Wo0cRz36tXriSeeOOSQQ5JICgAAAAAAQMNRlMmXogzQYFy9BLU3YsSIWbNmXXjhhU2bNs092bF5Fsdx7rfZbPaCCy6YMWOGlgwAAAAAAEAahOBXfr8AGowTZaAOrFy58o9//OMrr7zyzjvvfP7552vXri0uLu7QocPAgQNPOOGEM888c//99086IwAAAAAAAA2k/xVOlMnP3JudKAM0EEUZAAAAAAAAgLqkKJMvRRmgwWSTDgCF5/XXXx83blwURe3bt7/11luTjgMAAAAAAAAA1Egm6QBQeF599dX777//gQce2LhxY9JZAAAAAAAAAICaUpSB2hs4cGDSEQAAAAAAAACAmlKUgbx17do1NzRr1izZJAAAAAAAAABAzSnKQN769euXG5YsWZJsEgAAAAAAAACg5rJJB4DCM2zYsO7duy9duvTpp5/+2c9+lnQcAAAAAAAAGpdMJiQdAYDKOVEGauPiiy+O4/itt9567LHHks4CAAAAAAAAANSIogzUxmWXXXbMMcfEcTxmzJhnnnkm6TgAAAAAAAAAQPUUZaA2QgjPPPPMGWecsWHDhlNOOeXrX//6448//vnnnyedCwAAAAAAAACoUjbpAFCQ+vTpUzHHcTxx4sSJEydGUdSqVavWrVtns7v7yQohzJ8/v94jAgAAAAAAAAD/l6IM1MbChQtDCFEU5f4aRVEcx1EUlZaWlpaWVrUrhBDHccUWAAAAAAAAAKAhKcpALeWaMfW9BQAAAAAAAACoK4oyUBtjxoxJOgIAAAAAAAAAkB9FGaiN++67L+kIAAAAAAAANFIhJJ0AgCpkkg4AAAAAAAAAAAANQVEGAAAAAAAAAIBUUJQBAAAAAAAAACAVFGUAAAAAAAAAAEgFRRkAAAAAAAAAAFIhm3QAKEgPPvjgnmz/1re+VVdJAAAAAAAAAIAaCnEcJ50BCk8mkwkh1Hr7tm3b6jAMAAAAAAAAjcpBVz2fdIQCM+fnJyYdAUgLJ8pAPdqpiBZCiON4Txo2AAAAAAAANH7+exBAo6UoA7VU89OYKv5NyAFOAAAAAAAAAJAgRRmojQULFlS7pqys7LPPPps2bdr999//8ccfZzKZn//85//wD//QAPEAAAAAAAAAgF0FR1xAfYvj+KabbvrpT38aRdFtt9126aWXJp0IAAAAAACAenTw1S8kHaHAvHfD3yUdAUiLTNIBYO8XQvjXf/3X6667Lo7jH//4x6+99lrSiQAAAAAAAAAgjRRloIFcccUVvXr1Ki8vv+yyy5LOAgAAAAAAAABppCgDDSSbzX7961+PouiNN9748MMPk44DAAAAAAAAAKmjKAMN58ADD8wNb7/9drJJAAAAAAAAACCFskkHgBTJZv/nJ27ZsmXJJgEAAAAAAKD+hJB0AgCq4EQZaDgVNy5VNGYAAAAAAAAAgAajKAMNZMOGDRMmTMjN3bp1SzYMAAAAAAAAAKSQogw0hFWrVp1xxhmffvppFEUhhOOPPz7pRAAAAAAAAACQOu5/gdqYMmVKTZaVlZUtXbp02rRpjz32WGlpaRRFIYSzzjqrY8eO9RwQAAAAAAAAANiZogzUxnHHHRdCqPn6OI5z63v27HnbbbfVWy4AAAAAAAAAoEquXoLai6tTsSz312OPPXbSpEldunRJNDUAAAAAAAAApJQTZaCWKnowu18TQujbt++IESO++c1vnnjiiQ0QDAAAAAAAAAColKIM1MaCBQuqXRNCKC4ubtOmTVFRUQNEAgAAAAAAoJEIISQdAYDKKcpAbfTs2TPpCAAAAAAAAABAfjJJBwAAAAAAAAAAgIagKAMAAAAAAAAAQCq4eglq44tf/GIURfvvv/+DDz5Y810XXnjhxx9/HEJ48cUX6y0aAAAAAAAAAFA5RRmojZdffjmE0Ldv37x2zZgx49133w0h1FMqAAAAAAAAAGA3XL0EAAAAAAAAAEAqKMoAAAAAAAAAAJAKrl6ChrNx48Yoipo1a5Z0EAAAAAAAAOpRCCHpCABUzoky0EA2bty4cOHCEELbtm2TzgIAAAAAAAAAaaQoAw1hy5YtV1111ZYtW6Io6t+/f9JxAAAAAAAAACCNXL0E1XvggQceeOCBXZ8vW7bsi1/84u73bt++fe3atR999FHu3qUoiqrdAgAAAAAAAADUB0UZqN7ChQtffvnlne6SjON406ZNkydPrsk3xHGc296mTZvzzjuvXlICAAAAAAAAALulKAM1FcdxtU92v33fffedMGFCly5d9iTG7bfffvvtt+9+zdixY8eOHbsnbwEAAAAAAACAvY+iDFSvV69eo0aN2vHJ5MmTQwjNmjUbOnTo7vcWFRW1atWqV69eI0aMOPXUU5s2bbqHYUpLS5ctW1btmj18CwAAAAAAAADsfRRloHpjxowZM2bMjk8ymUwURd26dZs0aVIDh2ndunW3bt2qXdMwYQAAAAAAAACggCjKQC3lde9SHXKtEgAAAAAAQCMXQtIJAKiCogzURu4gmebNmycdBAAAAAAAAACoKUUZqI1Ro0YlHQEAAAAAAAAAyE8m6QAAAAAAAAAAANAQnCgDtbFo0aInnngiiqLWrVt/+9vfrsmW+++/v7S0NIqiM844Y//996/XeAAAAAAAAADArhRloDZuvfXW3/zmN1EUXXnllTXcMn/+/BtvvDGKoiVLlvzyl7+sx3AAAAAAAAAAQGVCHMdJZ4DCs99++3322WeZTGbJkiVdu3atyZbly5d37959+/bt3bt3X7RoUX0nBAAAAAAAIClDfvZi0hEKzMyfnZB0BCAtMkkHgMLz4YcffvbZZyGEYcOG1bAlE0VR165djzrqqCiKli5dOn/+/PoMCAAAAAAAAABUwtVLkLf33nsvN4wYMSKvjcOGDXv11VejKJo9e3bfvn3rPhkAAAAAAACNQAgh6QgAVM6JMpC3JUuW5IbevXvntbFifcU3AAAAAAAAAAANRlEG8lZWVpYbWrZsmdfGFi1a5Ib169fXcSYAAAAAAAAAoDqKMpC31q1b54ZVq1bltbGkpCQ3NG/evI4zAQAAAAAAAADVUZSBvHXs2DE3zJ49O6+Ns2bNyg2dOnWq40wAAAAAAAAAQHUUZSBvhx56aG54+umnN23aVMNdGzdufOqpp3LzQQcdVC/JAAAAAAAAAICqKcpA3g488MBu3brFcfz555/ffPPNNdx18803f/7551EUde7ceciQIfWYDwAAAAAAAACojKIM1Mb5558fRVEcxzfccMN9991X7frx48ffcMMNIYQQwrnnnlv/AQEAAAAAAACAnYU4jpPOAIVn3bp1ffr0KSkpieM4hPD3f//3V1xxRaXnxLz77rs33njjH/7wh9zPWvv27efPn9+mTZuGTgwAAAAAAEBDOez6l5KOUGDevuaLSUcA0kJRBmrpxRdf/PKXv7xt27ZcVyaKot69ew8dOrRr164tW7Zcv3798uXL33jjjQULFkRRlPtBKyoqeuqpp770pS8lHB0AAAAAAID6pCiTL0UZoMFkkw4AheqEE0743e9+d+65527cuDGKojiOP/nkk1wtpkKuH5Or0RQXF997771aMgAAAAAAAACQlEzSAaCAjR49evr06cccc8zuT2aK43jUqFEzZswYPXp0g2UDAAAAAAAAAHbiRBnYIwcddNDkyZNff/31Rx55ZPLkyXPmzNm6dWvuo6KiooMPPnjUqFFnn3320KFDk80JAAAAAAAAACjKQB0YPnz48OHDc/O6devWrVvXqlWrVq1aJZsKAAAAAAAAANiRogzUMRUZAAAAAAAAAGicMkkHAAAAAAAAAACAhuBEGQAAAAAAAIC6FEJIOgIAlXOiDAAAAAAAAAAAqeBEGagbGzZs+PTTT9esWbNp06Y4jne/eOTIkQ2TCgAAAAAAAACooCgDe2TRokW//vWvn3nmmblz527fvr0mW0II5eXl9R0MAAAAAAAAANiJogzU3o033vizn/1s27ZtURRVe4oMAAAAAAAAAJAsRRmopbFjx/7qV7+K4ziEUNGSCSFEu5Rmcg93fQ4AAAAAAAAANKRM0gGgID333HN33nlnbm7Tps3VV189ZcqUefPm5aowvXr1+uSTT95+++0//OEPF110UYsWLeI4zmQyN99884IFCz755JMkowMAAAAAAABAWgVHXEAtjBw58tVXXw0h9O3b98UXX+zevXvueSaTyT2cN29exeJVq1ade+65EydODCH84he/+NGPfpRQagAAAAAAABrC4f82KekIBeatnx6fdAQgLZwoA3n7/PPPX3311dz8X//1XxUtmap06NDh8ccf/9rXvhbH8ZVXXjl9+vT6zwgAAAAAAEBiQvArv18ADUZRBvI2derUKIpCCKNGjTr88MNrsiWEMG7cuFatWm3btu2KK66o54AAAAAAAAAAQCUUZSBvn376aW4YNWpUpQs2bdq068NOnTqddtppcRy/8sory5cvr8d8AAAAAAAAAEBlFGUgb6tXr84N3bp12+mjpk2bxnFcVlZW6cYjjjgiiqI4jt2+BAAAAAAAAAANT1EG8lZUVJQbmjRpstNHrVq1iqJo9erVW7Zs2XVj27Ztc4MTZQAAAAAA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AAAAAAAASAVFGQAAAAAAAAAAUkFRBgAAAAAAAACAVFCUAQAAAAAAAAAgFRRlAAAAAAAAAABIhWzSAQAAAAAAAAD2KiGEpCMAUDknygAAAAAAAAAAkAqKMgAAAAAAAAAApIKiDAAAAAAAAAAAqaAoAwAAAAAAAABAKijKAAAAAAAAAACQCooyAAAAAAAAAACkgqIMAAAAAAAAAACpkE06AAAAAAAAAMBeJROSTgBAFZwoAwAAAAAAAABAKijKAAAAAAAAAACQCooyAAAAAAAAAACkQjbpAAAAAAAAAACQmCVLlrz33nsrVqzYunVr586d+/Tpc/DBB9ff60pLS995552VK1euWrUqk8m0a9euR48eAwcObNmyZf29FKigKAMAAAAAAABAGr322mt33XXXzJkzd3reo0ePMWPG/NM//VMIoQ5f98orr9x///3Tp0/funXrTh9lMpkBAwZceOGFJ598ch2+EdiVq5cAAAAAAAAASJ2bbrrpvPPO27UlE0XR4sWL/+3f/m3MmDHr1q2rk3etXr36kksuOf/881999dVdWzJRFG3fvn3OnDlvvPFGnbwO2A0nygAAAAAAAACQLnfcccf999+fm4uKik466aRDDjlkn332mT9//sSJE9euXRtF0fTp03/wgx/cc889RUVFe/KukpKSb3/72x9++GHut61atTr66KMHDhzYvn378vLylStXfvDBBzNmzKirUg6we4oyAAAAAAAAAHWpbu/roc5Nnz797rvvzs3dunUbN25cv379Kj699NJLf/CDH0ybNi2KomnTpv3nf/7nxRdfXOt3bdmy5Tvf+U6uJdOkSZMLLrjgu9/9bnFx8U7LysvLX3vtNV0ZaAAhjuOkMwAAAAAAAADsPb5ytwt08vP0RUMb7F1xHH/jG9947733oigqKir64x//eOCBB+60pqys7Gtf+9rixYujKCouLv7LX/7SoUOH2r3utttuGzduXBRFmUzmtttu+8pXvrJn8YE9lUk6AAAAAAAAAAA0kBkzZuRaMlEUnX322bu2ZKIoKi4uvuyyy3JzWVnZww8/XLt3zZ8/f/z48bn5m9/8ppYMNAaKMgAAAAAAAACkxfPPP18xn3322VUtO+GEEzp16rTrlrxMmDBh27ZtURQ1b978kksuqd2XAHVLUQYAAAAAAACAtJg0aVJu6Nq1a79+/apals1mR4wYkZvnzp27fPnyfF+0adOmJ554IjefcMIJrVq1yj8sUPcUZQAAAAAAAABIhfXr1y9dujQ3H3bYYbtfvOOCuXPn5vuumTNnrlu3LjdXdG6AxGWTDgAAAAAAAAAADeHjjz+umHv27Ln7xb169dpx4/HHH5/Xu2bNmlUx9+/fP4qiNWvW/PnPf3722WcXL168Zs2a1q1b77fffsOGDTv11FNzC4AGoCgDAAAAAAAAQCosWbKkYt5vv/12v3jHBTturKE5c+ZUzF26dHnhhReuueaakpKSioerVq1atWrV7Nmzx48f/9WvfvW6665r2bJlvm8B8qUoAwAAAAAAAFCXQkg6QaGZN2/enmz/whe+UMOV69evr5jbtm27+8WtW7eumDds2JBvqh07MZMmTfrpT38ax3EURSGEdu3aNWnSpKSkZNu2bVEUxXH85JNPzp0796GHHmrfvn2+LwLyoigDAAAAAAAAQJJOPfXUPdn+4Ycf1nBlWVlZxdy0adPdL27evHnFXIuiTGlpacV83XXXxXFcXFz8z//8z2eccUbHjh2jKFq/fv1zzz13xx13rFy5Moqijz/++Ec/+tH48eMzmUy+7wJqzg8YAAAAAAAAAKmwadOmirmoqGj3i/fZZ59KN9bQjqWcrVu3FhcXP/DAAxdeeGGuJRNFUcuWLc8888xHH320W7duuSdTp0594YUX8n0RkBdFGQAAAAAAAABSoVmzZhXz1q1bd794y5YtlW6sxbuiKLr00ksHDRq067KuXbv+/Oc/r/jt/fffn++LgLwoygAAAAAAAACQCsXFxRXz5s2bd794x1NkWrRosSfvKi4uHj16dFUrR4wYMWDAgNz87rvvrl+/Pt93ATWXTToAAAAAAAAAAKk2ceLEhnlRy5YtK+a1a9fufvGOC2pRlNnxXUOGDGnevPluFg8fPvyDDz6Iomjbtm1z58494ogj8n0dUEOKMgAAAAAAAAAk6Qtf+ELDvKh79+4V86effrr7xTsu2HFjDfXo0aNi3m+//Xa/uFu3bhXz6tWr830XUHOuXgIAAAAAAAAgFfr161cxL1q0aPeLd1yw48YaOuCAAyrmpk2b7n7xjguqvRMK2BNOlAEAAAAAAACoSyEKSUegci1bttx///2XLl0aRdHbb7+9+8VvvfVWxXzggQfm+66BAwdWzNVe87RmzZqKuV27dvm+C6g5J8oAAAAAAAAAkBbHH398bvj0008//vjjqpaVl5dPmzYtNx944IHV3p20q0GDBnXq1Ck3v//++7tfvOOCWlzzBNScogwAAAAAAAAAaXHiiSdWzA8//HBVy1588cWVK1fuuqXmMpnMSSedlJs/+eSTuXPnVrVy3bp1kydPzs3dunXr0aNHLV4H1JCiDAAAAAAAAABpceSRRx500EG5+eGHH543b96ua8rKym699dbcXFxcfPbZZ++65oorrjjwbx577LFK3zVmzJiioqLcfOONN27fvr3SZXfccUdZWVluPuOMM/L5uwHypigDAAAAAAAAQFqEEC6//PLcvHXr1osuumj+/Pk7Lli3bt3FF1+8ePHi3G+/853vdOzYsXbv6tGjxznnnJObp0+fftlll61fv37HBeXl5Xfeeefvf//73G87duw4ZsyY2r0LqKFs0gEAAAAAAAAAoOGMGDHiwgsvHDduXBRFy5Yt+9rXvnbSSScNGjRon332mT9//p///Oe1a9fmVg4dOvSiiy7ak3ddeumls2fPnjFjRhRFTz311LRp07785S/369cvm80uXrz4ueeeq2jkFBUV3XXXXa1atdqzvzmgGooyAAAAAAAAAKTL2LFjN27c+NBDD0VRtHXr1ieffPLJJ5/cac3QoUN//etf77PPPnvyoqZNm/72t7/9wQ9+MG3atCiKSkpKKs6P2VG7du1+9atfHX744XvyLqAmXL0EAAAAAAAAQLqEEK6++urx48cPGjRo10+7d+9+1VVXPfjgg61bt97zd7Vq1eq+++674YYb+vbtu+unLVq0GDNmzJNPPjls2LA9fxdQrRDHcdIZAAAAAAAAAPYep42bkXSEAvPnC49M8O1LliyZPXv2ihUrtm7d2qlTp759+x5yyCH19K6PPvpo3rx5uXe1a9euT58+gwcPzmZdBQMNx88bAAAAAAAAAOnVvXv37t27N8y7DjjggAMOOKBh3gVUytVLAAAAAAAAAACkgqIMAAAAAAAAAACpoCgDAAAAAAAAAEAqKMoAAAAAAAAAAJAKijIAAAAAAAAAAKSCogwAAAAAAAAAAKmQTToAAAAAAAAAwF4lhJB0BAAq50QZAAAAAAAAAABSQVEGAAAAAAAAAIBUUJQBAAAAAAAAACAVFGUAAAAAAAAAAEgFRRkAAAAAAAAAAFJBUQYAAAAAAAAA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vvrqGu766U9/mjtRJpPJjBo1qh7zAQAAAAAAAACFQFGGAtC1a9eTTjopjuM4jn/xi19cdNFFa9eu3c360tLS733ve7fccksIIYRw8sknd+3atcHSAgAAAAAAAACNU4jjOOkMUL358+cPHjx448aNcRyHENq1azd69OiTTz550KBBnTt3bt68+caNG1esWDF79uxnn332v//7v0tKSnJ/touLi2fPnt27d++k/w4AAAAAAABIi+88PDvpCAXmvrMPSToCkBaKMhSM55577owzzti0aVMURbm6TFUrc5/Gcdy8efPHHnvspJNOasCYAAAAAAAApJ2iTL4UZYAG4+olCsZJJ5304osvfuELX6hoycSVyS2O47h///4vvfSSlgwAAAAAAAAAkKMoQyEZPnz4rFmz/v3f//2QQw6p6jCkOI4HDRr0H//xHzNnzhw2bFgDJwQAAAAAAAAAGi1XL1GoFi1aNH369Llz565evXr9+vUtW7Zs165d//79hw0b1rNnz6TTAQAAAAAAkF7nunopT/e6egloKNmkA0At9ezZUyEGAAAAAAAAAKg5Vy8BAAAAAAAAAJAKijIAAAAAAAAAAKSCq5coYJs2bVq+fHlJSUlZWVmzZs2OPPLIpBMBAAAAAAAAAI2XogyFZ/HixXfffffzzz8/a9asbdu25R7269fvww8/rFizefPmcePGxXHcpEmT73//+wklBQAAAAAAAAAaEUUZCsmmTZsuv/zyu+++e/v27VEUxXFc8dGOcxRFTZs2feSRR6ZNmxZF0cCBA48//vgGjgoAAAAAAAAANDaZpANATa1atWrYsGG/+c1vcqfIVDRjQgiVrv/ud7+bW/Pwww83WEgAAAAAAAAAoNFyogyFoby8/Ctf+crs2bNztZi2bduOHj16+PDhnTt3/upXv1ppV+bUU0/NZrPbtm174YUXGjwvAAAAAAAA6ZWp4v/0BiBxijIUhl//+tczZswIIcRxfPHFF998883FxcW739K2bdsjjjji9ddfX7Ro0bJly7p169YwUQEAAAAAAACAxsnVSxSGX/ziF7nhyiuvvOuuu6ptyeQMHjw4N7z//vv1lQwAAAAAAAAAKBCKMhSAt956a/ny5SGE3r17X3/99TXf2Ldv39ywcOHCekkGAAAAAAAAABQORRkKwJw5c3LDN77xjSZNmtR8Y9u2bXPD2rVr6zwVAAAAAAAAAFBYFGUoAH/9619zwwEHHJDXxmw2mxvKy8vrOBMAAAAAAAAAUGgUZSgAte67rF69Oje0a9eujjMBAAAAAAAAAIVGUYYC0Llz59ywYMGCvDbOnj07N+y77751nAkAAAAAAAAAKDSKMhSAgQMH5oann3665ru2b9/+wgsv5Obhw4fXfSwAAAAAAACoTAh+5fcLoMEoylAADj300H333TeO4zlz5vzhD3+o4a4JEyYsW7YshDBw4MAuXbrUa0IAAAAAAAAAoPFTlKEwfOc734miKI7j888//80336x2/bx58374wx/m5osvvrh+wwEAAAAAAAAAhUBRhsJwxRVXdOjQIYRQWlo6atSoG264obS0tKrFEyZMOProo1evXh1C6NOnz3nnndeQUQEAAAAAAACAxinEcZx0BqiRSZMmnXzyyeXl5XEchxCKioqOOeaYgw466N///d9DCO3atTv33HOXLl06efLkzz77LPcHu0WLFlOnTj3kkEOSzg4AAAAAAECKXPDf7yUdocDcM/rgpCMAaaEoQyH505/+9O1vf3vdunUhhFxdJoqi3J/h3Jz7be7Ttm3b/vd///eXvvSlJBMDAAAAAACQPooy+VKUARqMq5coJKeffvrbb7994okn5soxFRWZHVsyub/+3d/93YwZM7RkAAAAAAAAAIAK2aQDQH769u377LPPzp49+/e///0rr7zyzjvvbNq0KfdRNpvt37//CSeccPbZZw8bNizZnAAAAAAAAABAY+PqJQpeWVnZ2rVri4uL27Rpk3QWAAAAAAAAiC58dE7SEQrMuL8/KOkIQFo4UYaCV1xcXFxcnHQKAAAAAAAAAKCxyyQdAAAAAAAAAAAAGoKiDIWhT58+ffr0OeGEE/Ladcopp/Tp06dv3771lAoAAAAAAAAAKCCuXqIwLFy4MIqibDa/P7HLli1buHBhCKFeMgEAAAAAAAAABcWJMhQMfRcAAAAAAAAAYE8oygAAAAAAAAAAkAqKMuzN1q9fH0VRcXFx0kEAAAAAAAAAgORlkw4A9WXNmjULFy4MIbRr1y7pLAAAAAAAAKRICEknAKAKTpRh77RkyZKLLrpo27ZtURQddNBBSccBAAAAAAAAAJLnRBkao1/96le/+tWvdn2+aNGiPn367H7v9u3b165dW1paWvHkpJNOquN8AAAAAAAAAEABUpShMaq4NSmO44qHcRxv3bp14cKFNfySEEIURV27dv3Od75THyEBAAAAAAAAgMKiKEPjtWNLpnbbBw8e/NBDD7Vp06auIlXr+eeff/75519//fUlS5aUlJSUlZX169fvww8/rFiwdevWDz74IIqiJk2auBMKAAAAAAAAABqSogyN0ZAhQ8aMGbPjkwceeCCE0KpVq9NPP333e4uKilq1atWrV68RI0YcccQR9Rnz/3jssceuvPLKjz/+OPfbipbPTnWfbDZ7+umn587LmT179oABAxosIQAAAAAAAACkXNjDQzugYWQymRBC3759582bl3SWnW3fvv3CCy+87777ov9bi8ldHdWvX7+dMv/yl7/8yU9+EkK44oorfv7znzd0XAAAAAAAAOrZd/8wJ+kIBeY/v+EqBqCBZJIOADXVaEtdF1100b333hvHcS7hgQceOGbMmB//+MdVBR49enRueOaZZxouJQAAAAAAAACknquXKAwLFiyIoqioqCjpIDt7+umn/9//+3+5w2MOO+yw//iP/xg+fHjuo1/84hchhF239OzZc8CAAR988MGsWbPWrl3bpk2bho0MAAAAAABA/cpU9h+JAGgMnChDYejZs2fPnj3322+/pIPs7Oqrr84NJ5988rRp0ypaMrt32GGHRVEUx/F7771Xj+EAAAAAAAAAgB0oykDtLVy4cObMmSGEtm3bPvTQQzU/8GbAgAG54eOPP663dAAAAAAAAADA/+HqJQrD7Nmz77vvviiK9t1335/85Cc12XLLLbf89a9/jaLoggsuqCim1K1p06blhm984xsdOnSo+cb27dvnhpKSkrqPBQAAAAAAAABURlGGwnD77bc/8MADIYRbbrmlhluaNGly5513hhA2btz429/+tj5S5Yo4URQNHjw4r43FxcW5YePGjXWcCQAAAAAAAACogquXKABxHE+cODGKomw2e95559Vw13nnnVdUVBTH8Z/+9Kd6CrZly5bc0KxZs7w2lpaW5oY2bdrUcSYAAAAAAAAAoAqKMhSA9957r6SkJIRwzDHHtGvXroa72rVrN2rUqCiKVq5c+f7779dHsM6dO+eG5cuX57Vx/vz5uaFjx451nAkAAAAAAAAAqIKiDAVgzpw5uWHYsGF5bTzyyCN3+oa61atXr9wwadKkvDZWrM/3ziYAAAAAAAAAoNaySQeA6lWc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4DrPBgAAAAAAAABsL4yiKOkM0CDl5OSEYea/QeE/e8R9+/a9++67jznmmLqLBgAAAAAAQJIefX9p0hEamO98df+kIwBpkZN0AGjA4pZMuJXt1+zsarw3iqJZs2Ydd9xxd955Z3YyAwAAAAAAAEBqefUSZOjGG28MgmDlypW///3voyiKoqhJkyb9+vU75JBDWrdu3aRJk/Xr1y9ZsuSDDz5YvHhxEARhGB566KFnnXXWpk2b1qxZM2vWrPfff7+8vDwMw8rKyquvvvqAAw741re+lfQ/FgAAAAAAAADstbx6CTI3derUs88+e/ny5W3atLnhhhvOP//8li1bbr/s3XffHTNmzMSJE8MwvPjii++///6cnJwgCFauXPnLX/7yN7/5TRAEURR17tx5wYIFubnqawAAAAAAAA2bVy/VllcvAVnj1UuQoc8///yMM8744osvDjnkkFmzZl166aU7bMkEQXDkkUc+99xz//3f/x1F0QMPPHDdddfF37dr1+7OO+988MEH477a0qVLn3rqqez9AwAAAAAAAABAyijKQIZ+8pOffPnll02aNJkwYUKHDh12uf7SSy+98MILoyi6/fbbZ82aVfX9d7/73bPPPjueX3rppfqKCwAAAAAAAACppygDmVi9evUzzzwThuFpp5120EEH1XDXVVddFQRBFEV//vOft/7+Rz/6UTy8++67dZsTAAAAAACA7At9avkByBpFGcjEW2+9VV5eHgTB4MGDa76rd+/e8euZXnvtta2/HzRoUG5ubhRFK1eurNucAAAAAAAAAEAVRRnIxNKlS+OhRYsWtdrYokWLKIqWLVu29ZeNGzdu06ZNEARFRUV1lRAAAAAAAAAA2IaiDGRiw4YN8VDVmKmJioqKFStWBEFQWlq6zaUmTZoEQdCoUaM6CggAAAAAAAAAbEtRBjLRsWPHeHj++edrvmvSpEmbN28Ow3C//fbb5tLatWuD2p9PAwAAAAAAAADUnKIMZOLII4+Mh/fff/+RRx6pyZaNGzf+7Gc/i+cBAwZsfWnZsmXFxcVhGHbu3LlucwIAAAAAAAAAVRRlIBO9evU6/PDDgyCIouh73/veAw88UP365cuXn3jiiR9//HH843nnnbf11TfeeCMe+vTpU/dZAQAAAAAAAIAgCBRlIGO/+c1vgiAIw7C8vPwHP/jBwIEDx44dO3/+/K3XFBcXv/7665dddlmvXr3efPPNMAzDMPzGN75x2mmnbb1s3Lhx8fC1r30tW/EBAAAAAAAAIHXCKIqSzgAN1a9+9atrrrkmDMMoisIwjL9s3Lhxy5YtmzRpUlxcXFRUFH8ZL4iiqHv37pMnT+7UqVPVTebNm9enT5/KysqcnJzFixd37NgxgX8SAAAAAAAA6s7jHyxNOkIDc94R+ycdAUiL3KQDQAN29dVXt2zZ8sorr9ywYUMQBHHtbNOmTStXrtx6WdyhiaLo61//+hNPPLF1SyYIgrZt23744YdBEOTm5mrJAAAAAAAAAED9caIM7K5FixbddNNNTz75ZGlp6c7WFBYWXnbZZRdddFE2gwEAAAAAAJAIJ8rUlhNlgKxRlIG6UVxc/MYbb7zzzjufffbZunXrNm3a1KJFi7Zt2x5++OGDBw/u27dv0gEBAAAAAADIEkWZ2lKUAbJGUQYAAAAAAACgLinK1JaiDJA1OUkHAAAAAAAAAACAbFCUAQAAAAAAAAAgFRRlAAAAAAAAAABIhdykAwAAAAAAAADsVcIwTDoCADumKAO7q7i4ePz48dOmTfv000/XrVtXUlISRVH1W8IwXLBgQXbiAQAAAAAAAAAxRRnIXHl5+c0333znnXeWlZVVfVl9SyYMwyiKlIgBAAAAAAAAIPsUZSBDmzdvPuOMMyZNmrTL82O2VqvFAAAAAAAAAEAdUpSBDI0ZM+avf/1rGIbxITFdu3YdNGhQp06dCgoKko4GAAAAAAAAAOyAogxkoqys7K677orfoNSpU6exY8eeeOKJSYcCAAAAAAAAAKqjKAOZmDx5cmlpaRAE+fn5r732Wvfu3ZNOBAAAAAAAAADsQk7SAaBB+uyzz4IgCMNw+PDhWjIAAAAAAAAA0CA4UQYyUVJSEg/9+/dPNgkAAAAAAAB7GscVAOyx/Ec0ZGK//faLh8aNGyebBAAAAAAAAACoIUUZyESvXr3iYfHixckmAQAAAAAAAABqSFEGMnHUUUcdeOCBQRD85S9/SToLAAAAAAAAAFAjijKQoWuvvTaKovfee++5555LOgsAAAAAAAAAsGuKMpChiy+++N/+7d+iKDr//PPffPPNpOMAAAAAAAAAALugKAOZe/TRR3/4wx+uX7/+uOOO+/73vz916tSKioqkQwEAAAAAAAAAOxZGUZR0BmiQDjzwwHhYvHhxZWVlGIZBEOTl5X3lK19p2rRp9XvDMFywYEG9RwQAAAAAACAJT85YlnSEBubf+nVKOgKQFrlJB4CGauHChXE5JgiCeIiiaPPmzV988UU1u8IwjKKoaiMAAAAAAAB7H38MAthjKcpA5jI4kMkZTgAAAAAAAACQFEUZyNCIESOSjgAAAAAAAAAA1IKiDGToz3/+c9IRAAAAAAAAAIBayEk6AAAAAAAAAAAAZIOiDAAAAAAAAAAAqaAoAwAAAAAAAABAKijKAAAAAAAAAACQCrlJBwAAAAAAAADYq4RJBwBgZxRloM58+umnS5cuXbdu3caNG6Moqn7x+eefn51UAAAAAAAAAEBMUQZ211tvvXX33XdPmjSpuLi45rsUZQAAAAAAAAAgyxRlIHObN28eNWrUAw88EARBfIRMGIZVZ8mE4T8O1dv6dJl4QdUlAAAAAAAAACBrFGUgcyNGjHjqqae27sFUlWCiKNqmH1O1IMshAQAAAAAAAIBYTtIBoKEaN27ck08+Gc8HHnjgH//4x8WLF2/evDmuwvTo0aOysnLNmjXvvfferbfe2qVLlyiKcnJyfvnLX1ZWVm7ZsiXR7AAAAAAAAACQRqHzLSAzhx9++KxZs8Iw7N+//6RJk1q2bBl/n5OTE4Zh9+7d582bV7V48+bNV1xxxX333ReG4WWXXXbXXXcllBoAAAAAAIB69/TMz5OO0MCcc3jHpCMAaeFEGcjEsmXLZs2aFQRBo0aNHn/88aqWzM40btz4nnvuueSSS6Iouvvuu1944YWsxAQAAAAAAAAA/h9FGcjEtGnTgiAIw/CEE07o3r379gt2eFbT7bffvu+++0ZRdOONN9Z7RAAAAAAAABISUktJ/xsDUkRRBjLxxRdfxMPgwYN3uGDjxo3bf1lQUHDmmWcGQfDBBx989tln9RcPAAAAAAAAANieogxkoqioKB7222+/bS41a9YsiqKSkpIdbuzbt288fPDBB/UXDwAAAAAAAADYnqIMZKJp06bxUFlZuc2l5s2bB0Gwfv36srKy7TfGV4MgWL58eX0GBAAAAAAAAAC2pSgDmdh3333jYc2aNdtc6tSpUzx89NFH22/8/PPP42HDhg31lg4AAAAAAAAA2AFFGchEz54942H7Nsyhhx4aDy+++OL2G1944YV4aNOmTb2lAwAAAAAAAAB2QFEGMlFYWJibmxsEwdSpU7e5dPzxxwdBEEXRb3/726rzY2IPPvjglClT4rlfv35ZSQoAAAAAAAAA/EMYRVHSGaBBGjx48LRp08IwfP/99w8//PCq70tKSvbff//i4uIoitq3b/+Tn/zksMMO27hx4/PPP//QQw9VVlZGUXTAAQfMnz8/DMPk4gMAAAAAAFBf/ufD5UlHaGDOPqxD0hGAtMhNOgA0VKeffvq0adOCIPj973//u9/9rur7goKC0aNHX3311WEYrlix4tprr626FPfSwjAcM2aMlgwAAAAAAMDeyns9APZYijKQoeHDh0+fPj0IgrVr127atKlJkyZVl37605/OnDnz8ccfj9swVf2Y+OqVV1553nnnJREZAAAAAAAAAFLNq5egvvzpT3/69a9//cknn1R9069fv9GjR5955pkJpgIAAAAAAKC+TfDqpVr6llcvAdmiKAP1a/ny5cuWLQuCoEuXLu3atUs6DgAAAAAAAPVOUaa2FGWArPHqJahfHTp06NDBf68DAAAAAAAAQPIUZWBPcdxxxy1cuDAMwwULFiSdBQAAAAAAAAD2QooysKdYsmRJXJRJOggAAAAAAAAA7J1ykg4AAAAAAAAAAADZ4EQZAAAAAAAAgLrkHQIAeywnygAAAAAAAAAAkAqKMgAAAAAAAAAApIKiDAAAAAAAAAAAqaAoAwAAAAAAAABAKijKAAAAAAAAAACQCooyAAAAAAAAAACkgqIMAAAAAAAAAACpkJt0AAAAAAAAAIC9Sph0AAB2xokyAAAAAAAAAACkgqIMAAAAAAAAAACpoCgDAAAAAAAAAEAqKMoAAAAAAAAAAJAKijIAAAAAAAAAAKSCogwAAAAAAAAAAKmgKAMAAAAAAAAAQCrkJh0A+IcoipKOAAAAAAAAQB0Iw6QTALATijKwp5g/f37SEQAAAAAAAABgb6YoA3Vs6dKla9euLSkpKSgoaN269f777590IgAAAAAAAAAgCBRloE4UFRU9/PDDzzzzzPvvv19cXLz1pebNm3/1q18988wzv/vd77Zs2TKphAAAAAAAAABAGEVR0hmgAausrLz99tvHjBlTVlYWBMEOf6HCMAyCoFmzZtdff/2VV17ZqFGjbKcEAAAAAAAgi56d/UXSERqYM/rul3QEIC0UZSBzxcXFJ5988ttvvx3/HoXhjn+h4qJMFEVhGA4ePPj//u//WrRoke2sAAAAAAAAZIuiTG0pygBZ49VLkKGKiorjjz/+nXfeCf5ZkWnevPk3vvGNwsLCtm3b7rPPPhs2bFi1atXs2bMnT55cVFQUr3n77beHDRv25ptv5ub67QMAAAAAAACArPKnesjQrbfe+s4778T1lw4dOtxyyy3Dhw9v0qTJ9is3b978xBNPjB49etmyZVEUvfPOO7fddtvo0aOznxkAAAAAAAAA0syrlyAT5eXl7du3LyoqCoKgX79+f/nLX9q2bVv9llWrVp100kkzZsyIoqh169YrVqxwqAwAAAAAAMBe6fnZK5KO0MCc1rd90hGAtMhJOgA0SJMnT163bl0URfn5+ePHj99lSyYIgrZt2/7P//xPs2bNgiBYt27dq6++Wv8xAQAAAAAAAID/R1EGMrFgwYIgCMIwPPPMM7t27VrDXd26dTvrrLO2vgMAAAAAAAAAkDWKMpCJ+KVLQRAceeSRtdpYtb64uLiOMwEAAAAAAAAA1VKUgUx06NAhHvLz82u1MX71UhAE++23Xx1nAgAAAAAAAACqpSgDmTjooIPiYf78+bXaWPXGpZ49e9ZxJgAAAAAAAACgWooykIlBgwZ169YtCIKnn356y5YtNdy1ZcuWp556KgiCrl27HnXUUfUXDwAAAAAAAADYnqIMZOiaa66Joujvf//7ddddV8Mt119//WeffRaG4bXXXluv2QAAAAAAAACA7SnKQIZ+8IMfnHfeeVEU3X777ZdccklRUVE1i9evX//DH/7wtttuC4Lg3//937///e9nKyYAAAAAAADZFoY+tfsAZE0YRVHSGaABGzNmzM9//vMoilq3bn3uueeeeOKJhYWF7dq1a9asWVlZ2cqVK2fPnv3iiy8+9dRTa9asycnJufHGG0ePHp10agAAAAAAAOrRxI9WJB2hgTn10PZJRwDSQlEGMtSoUaOqOf49Cndedt3lglgYhhUVFXUUEAAAAAAAgGQoytSWogyQNblJB4CGqqpkFoZhVQNmh82zXS4AAAAAAAAAALJAUQZ21y67L8oxAAAAAAAAALAnUJSBDN14441JRwAAAAAAAAAAaiF01gUAAAAAAABAHZr40YqkIzQwpx7aPukIQFrkJB0AAAAAAAAAAACywauXAAAAAAAAAOpSGIRJRwBgx5woAwAAAAAAAABAKijKAAAAAAAAAACQCooyAAAAAAAAAACkQm7SAaChuummm3Zn+w033FBXSQAAAAAAAACAmgijKEo6AzRIOTk5YRhmvH3Lli11GAYAAAAAAIA9x/99tDLpCA3MKYe2SzoCkBZevQTZEP1TPCcdBwAAAAAAAADSyKuXIHO1qrzEx89oyQAAAAAAAABAUpwoAxmqrIENGzYsWLDg0UcfPe6446IoCsPw1ltvrays9N4lAAAAAACAvVgY+tTuA5A1ofMtIDsef/zxiy66qLy8/PLLL7/zzjuTjgMAAAAAAEB9eeHjlUlHaGBOPqRd0hGAtHCiDGTJeeedd88990RR9Jvf/ObZZ59NOg4AAAAAAAAApI6iDGTP9773vT59+kRRNHr06KSzAAAAAAAAAEDqKMpAVp1++ulBEHzyySczZsxIOgsAAAAAAAAApIuiDGTVAQccEA8fffRRskkAAAAAAAAAIG0UZSCroiiKh+XLlyebBAAAAAAAAADSRlEGsqrqIJmmTZsmmwQAAAAAAAAA0iY36QCQIqtWrXrsscfiuVu3bpnd5Ne//vWvf/3r6tdcccUVV1xxRWb3BwAAAAAAYDflBGHSEQDYMUUZyJI5c+acd955a9euDYIgLy9vyJAhmd1n/fr1y5Yt2+WazG4OAAAAAAAAAHsxRRnI0MMPP1yTZaWlpUuXLp06deobb7xRWVkZBEEYht///vebN2+e2XNbtGjRqVOnXa7J7OYAAAAAAAAAsBcLoyhKOgM0SDk5OWFYi0PzoigKwzCKon79+k2ePDnjogwAAAAAAAB7uBc/XpV0hAbmxEPaJh0BSIucpAPA3i+KoriRFkXRd77znZdffllLBgAAAAAAAACyz6uXIHM1OZApPz+/VatWBx988KBBg7797W/36tUrC8EAAAAAAAAAgO0pykCGKisrk44AAAAAAAAAANSCVy8BAAAAAAAAAJAKTpSBPcXy5cvLy8uDIOjSpUvSWQAAAAAAAMhcGCadAICdUJSBPcUxxxzz2WefhWFYUVGRdBYAAAAAAAAA2AspysAeJIqipCMAAAAAAAAAwF4rJ+kAAAAAAAAAAACQDYoyAAAAAAAAAACkgqIMAAAAAAAAAACpoCgDAAAAAAAAAEAqKMoAAAAAAAAAAJAKuUkHAAAAAAAAANirhGHSCQDYCSfKAAAAAAAAAACQCooyAAAAAAAAAACkgqIMAAAAAAAAAACpoCgDAAAAAAAAAEAqKMoAAAAAAAAAAJAKijIAAAAAAAAAAKSCogwAAAAAAAAAAKmQm3QAAAAAAAAAgL1KGIRJRwBgx5woAwAAAAAAAABAKijKAAAAAAAAAACQCooyAAAAAAAAAACkQm7SAYB/GDhw4P777590CgAAAAAAAADYa4VRFCWdAQAAAAAAAGDv8dKnXyYdoYE5/uB9k44ApIVXLwEAAAAAAAAAkApevQS7tnjx4jq/Z5cuXer8ngAAAAAAAABANRRlYNe6desWhmEd3jAMw4qKijq8IQAAAAAAAHuOnLr8yxIAdUlRBmoqiqKkIwAAAAAAAAAAmVOUgRqppiWz9WEzO1y2ywUAAAAAAAAAQBYoysCu/fnPf97ZpU8//fSOO+6IoiiKoubNmw8ZMqSwsLBt27b77LPPhg0bVq1aNWvWrMmTJ69fvz4IgkaNGl155ZW9e/fOYnYAAAAAAAAA4B9C51tAxp555pnzzz9/w4YN7du3v/nmm7/97W83adJk+2WbNm16/PHHR48evXz58oKCgkcfffT000/PfloAAAAAAACy45U5XyYdoYEZ2nvfpCMAaaEoAxn65JNPBgwYUFZWVlhY+OKLL7Zv37769StXrhw2bNiHH364zz77vPPOOwcffHB2cgIAAAAAAJBlijK1pSgDZE1O0gGgofrxj39cWlrarFmzCRMm7LIlEwRBu3btJkyYkJ+fX1paevnll9d/QAAAAAAAAADgXyjKQCaWLFny6quvhmF45plnHnDAATXcdcABB3zrW9+KouiVV15ZunRpvSYEAAAAAAAAALahKAOZeOedd+LXlg0YMKBWG+P1URRNnz69XpIBAAAAAACQtDAIfWr1SfrfGJAiijKQiWXLlsVDfn5+rTY2a9ZsmzsAAAAAAAAAANmhKAOZqKioiIcFCxbUamPV+qo7AAAAAAAAAADZoSgDmejUqVM8PP3001u2bKnhri1btjz99NPx3LFjx3pJBgAAAAAAAADshKIMZOKYY47JyckJguCzzz4bPXp0DXddf/318YkyOTk5xx57bD3mAwAAAAAAAAC2oygDmejQocOwYcOiKIqi6Fe/+tXIkSOLioqqWb9+/fr/+I//+OUvfxmGYRiGJ554YocOHbKWFgAAAAAAAAAIgiCMoijpDNAgLViw4LDDDisrK4uiKAzD1q1bn3vuuSeeeGJhYWG7du2aNWtWVla2cuXK2bNnv/jii0899dSaNWviX7f8/PzZs2cfcMABSf8TAAAAAAAAUC9enbM66QgNzHG92yQdAUgLRRnI3F//+tdvfetbGzduDIIgrsvsbGV8NYqiZs2aTZgwYdiwYVmMCQAAAAAAQFYpytSWogyQNV69BJkbNmzYK6+80rNnz6qWTLQj8eIoinr37v3qq69qyQAAAAAAAOzdwtCndh+ArFGUgd1y1FFHzZo167e//W3fvn13dj5TFEWFhYX33HPPzJkzBw4cmOWEAAAAAAAAAEDMq5egzixatGj69Olz5sxZu3ZtSUlJQUFB69ate/fuPXDgwK5duyadDgAAAAAAgCx5ba5XL9XOkF5evQRkSW7SAWDv0bVrV4UYAAAAAAAAANhjefUSAAAAAAAAAACpoCgDAAAAAAAAAEAqePUS1KWNGzcuX758zZo1paWlTZs2PfLII5NOBAAAAAAAAAD8g6IM1IHFixfff//9kyZNmjVr1pYtW+Ive/ToMXfu3Ko1mzZtGjt2bBRFjRo1+tGPfpRQUgAAAAAAAABIL0UZ2C0bN2686qqr7r///srKyiAIoiiqurT1HARBkyZNnnzyyalTpwZB0KdPnyFDhmQ5KgAAAAAAANkRBmHSEQDYsZykA0ADtnr16oEDB953333xKTJVzZgw3PH/9LnkkkviNePGjctaSAAAAAAAAAAg5kQZyFBFRcXJJ588e/bsuBbTqlWrc88996ijjmrXrt0pp5yyw67Maaedlpubu2XLlpdeeinreQEAAAAAAAAg7RRlIEP33nvvu+++G4ZhFEWjRo267bbb8vPzq9/SqlWr/v37T5s2bdGiRcuWLevUqVN2ogIAAAAAAAAAgVcvQcZ+9atfxcO11157991377IlEzvssMPi4ZNPPqmvZAAAAAAAAADAjijKQCbef//95cuXh2F4wAEH3HTTTTXf2L1793hYuHBhvSQDAAAAAAAAAHZCUQYy8fHHH8fD2Wef3ahRo5pvbNWqVTwUFRXVeSoAAAAAAAAAoBqKMpCJFStWxMNBBx1Uq425ubnxUFFRUceZAAAAAAAAAIBq5SYdABqkjPsua9eujYfWrVvXcSYAAAAAAAD2DDlh0gkA2AknykAm2rVrFw9///vfa7Vx9uzZ8dC+ffs6zgQAAAAAAAAAVEtRBjLRp0+feHjhhRdqvquysvKll16K56OOOqruYwEAAAAAAAAAO6coA5no169f+/btoyj6+OOP/+d//qeGux5//PFly5aFYdinT5/99tuvXhMCAAAAAAAAANtQlIEMXXjhhUEQRFH0ve9977333tvl+nnz5v34xz+O51GjRtVvOAAAAAAAAABgO4oykKFrrrmmTZs2YRiuX7/+2GOPvfnmm9evX7+zxY8//vjXvva1tWvXhmF44IEHXnzxxdmMCgAAAAAAAAAEQRBGUZR0BmioXnvttRNPPLGioiKKojAM8/Lyvv71rx9yyCG//e1vwzBs3br1RRddtHTp0tdff/2LL76If9f22Weft99+u2/fvklnBwAAAAAAoL68MW9N0hEamGN6fiXpCEBaKMrAbvnf//3fCy64oLi4OAzDuC4TBEH8axXP8Y/x1VatWj311FPf/OY3k0wMAAAAAABAPVOUqS1FGSBrvHoJdsuZZ575wQcfnHDCCXE5pqois3VLJv6/xx9//LvvvqslAwAAAAAAsNcLg9CnVp+k/40BKeJEGagbs2fPfuyxx958880ZM2Zs3Lgx/jI3N7d3795Dhw4dPnz4wIEDk00IAAAAAABAdrw5b23SERqYo3u2TjoCkBaKMlD3SktLi4qK8vPzW7ZsmXQWAAAAAAAAsk1RprYUZYCsyU06AOyF8vPz8/Pzk04BAAAAAAAAAPyLnKQDAAAAAAAAAABANijKAAAAAAAAAACQCl69BPVo0qRJDz300CeffFJeXt6tW7ezzjprxIgROTkKagAAAAAAAACQgDCKoqQzQIP0pz/96cEHHwyC4Oijj77lllu2XzBy5Mg//OEPQRBEURSGYfxl//79X3jhhTZt2mQxKQAAAAAAAFn15ry1SUdoYI7u2TrpCEBaKMpAhgYMGPDee++FYfjss8+eeuqp21y95557LrvssiAIwnDb37KBAwe+/fbbVdUZAAAAAAAA9jJv/U1Rpna+fpCiDJAlijKQiQ0bNrRs2bKysrJly5arVq3Kzc3d5mq3bt3WrFkTBEEURYWFhb179541a9acOXOCIAjD8L777rvkkkuSiQ4AAAAAAEA9U5SpLUUZIGtykg4ADdKHH35YWVkZhuGxxx67TUsmCILx48evXr06nm+//faZM2eOGzfuk08+GTVqVPzlvffem9W4AAAAAAAAAICiDGRm4cKF8VBY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KMpAjXzjG98Iw7qs/oZhWFFRUYc3BAAAAAAAAACqpygDtRBFUdIRAAAAAAAAAIAMKcpATVXTktn6sJkdLtvlAgAAAAAAAACgvinKQI289tprO7s0efLkMWPGRFEURdFBBx100kknFRYWtm3bdp999tmwYcOqVatmzZr14osvzps3LwiCRo0aXX/99ccee2wWswMAAAAAAAAAQaAoAzW0s2rL7373u1tuuSWKoj59+vz3f//3cccdt7M7vPbaa5dffvns2bNvvvnm9u3bX3LJJfUWFgAAAAAAAADYgZykA0AD9tZbb/34xz/esmXLcccdN3369GpaMkEQDBkyZNq0aUOHDq2oqLj00kvffvvtrOUEAAAAAAAAAIIgCKMoSjoDNFSDBg2aPn1669at586du++++9Zky5dfftmzZ89169YdddRR9deVadZvVD3dGQAAAAAanLIZ9yQdAYDU+duKsqQjNDAHtW+WdAQgLZwoAxmaN2/e9OnTwzA855xzatiSCYJg3333Pffcc4MgmD59+t/+9rf6DAgAAAAAAAAA/AtFGcjQjBkz4qGwsLBWGw877LB4+OCDD+o4EwAAAAAAAACwc4oykKFly5bFQ25ubq02NmrUaJs7AAAAAAAAAABZoCgDGarqu8yZM6dWG6vW5+T4BQQAAAAAAACA7PF3eshQ586dgyCIoujJJ58sKyur4a7S0tInn3xy6zsAAAAAAAAAANmhKAMZGjJkSF5eXhiGX3zxxQ9/+MMa7vqP//iP5cuXB0GQl5d33HHH1WdAAAAAAAAAAOBfKMpAhlq3bn3OOedEURQEwSOPPHLKKaf8/e9/r2b9woULTz311EceeSQIgjAMzznnnNatW2cpKwAAAAAAAAAQBGH8Z34gA6tWrTr44IPXrl0b/5ibmzt06NATTzyxsLCwXbt2zZo1KysrW7ly5ezZs1988cWXX365oqIiCIIoivbdd9+PP/64bdu29RSsWb9R9XRnAAAAAGhwymbck3QEAFJn/sqypCM0MD3aNUs6ApAWijKwW2bMmHHCCSesXr06DMMoisIw3NnK+GoURW3atHnppZcOP/zw+kulKAMAAAAAVRRlAMg+RZnaUpQBssarl2C39OvXb/r06UOGDNm6cxb9q62/P+6446ZPn16vLRkAAAAAAAAAYIcUZWB3HXjgga+88srzzz9/2mmn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GwRBnTp1xo8fP378+ELrhEKhL774onyCAwAAAAAAAACKQaIMFMvEiRNDoVDx64dCoczMzEmTJhW6NDLeTDmFBgAAAAAAAAAUi0QZKIFwOJzoEAAAAAAAANjXeWEaYJ8lUQaK5aSTTjIGDAAAAAAAAADs1yTKQLFMnDgx0SEAAAAAAAAAAGVSI9EBAAAAAAAAAABAZZAoAwAAAAAAAABAtSBRBgAAAAAAAACAakGiDAAAAAAAAAAA1UJSogOA/djKlSs/+OCDIAgaNmx4+eWXF6fJq6++unPnziAIzj333LZt21ZoeAAAAAAAAABALIkyUHp//OMfn3766SAIRo8eXcwmS5cufeCBB4IgWL169cMPP1yBwQEAAAAAAJAgoVCiIwCgCKFwOJzoGGB/1bp16w0bNtSoUWP16tWtWrUqTpP169e3a9cuLy+vXbt2K1eurKDAUnpeX0FrBgAAAID9TsacJxMdAgDVzqa07ESHsJ9p3iA50SEA1UWNRAcA+6tFixZt2LAhFAr17du3mFkyQRC0atXquOOOC4JgzZo1S5curcgAAQAAAAAAAID/IlEGSun777+PFPr161eihn379o0U5s+fX84xAQAAAAAAAABFkygDpbR69epIoVOnTiVqGK0fXQMAAAAAAAAAUAkkykAppaenRwr169cvUcN69epFCrt27SrnmAAAAAAAAACAokmUgVJq2LBhpLB169YSNUxNTY0UUlJSyjkmAAAAAAAAAKBoEmWglA488MBIYf78+SVqOG/evEihWbNm5RwTAAAAAAAAAFC0pEQHAPurnj17RgqffPJJZmZmnTp1itMqIyPj448/jpQPP/zwigoOAAAAAACAxAkFoUSHAEDhjCgDpdSlS5c2bdqEw+EtW7Y8+OCDxWz14IMPbtmyJQiC5s2bH3XUURUYHwAAAAAAAADw3yTKQOldddVVQRCEw+H77rvvlVde2Wv9l1566b777guFQqFQ6Iorrqj4AAEAAAAAAACA/5AoA6V38803H3DAAaFQKC8v76qrrho1atTcuXMLrfndd9+NHDny6quvDofD4XC4SZMmt912W+UGCwAAAAAAAADVXSgcDic6BtiPffHFF4MHD87NzQ2Hw6FQKAiCTp06HXPMMa1atapfv/6uXbvWr18/c+bM5cuXB0EQOdySk5M//vjjn/3sZxUXVUrP6ytu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c+fOunXrtmvXrnv37l27di3FqipTOByeMWPGTz/9tH79+iAITjjhhH79+hVa88cff5w7d+6mTZsyMjKaN29+6KGH9uvXr2bNmpUbL5Bgq1evnj59+urVq/Py8lq2bHnSSSe1b9++RGvIysqaOnXqihUrNm3aVKtWrRYtWvTr169Tp04VFDCU0YwZMxYtWrRu3bo6deocfvjh/fv3L/QiaMOGDVOmTFmxYkVubm6rVq0GDBhQokNj27ZtU6ZMWbduXWpqasOGDdu0adO/f/8mTZoUs/mOHTtmz569ePHiHTt25OTk1K1bt3nz5h07djzyyCPr169fcW0jwuHwnDlzFixYsGnTppycnBYtWhx++OG9evUq0TXaunXrvvrqq7Vr1yYlJbVp0+aYY44pad+yrwmHw9OmTVuyZMn69esbNWrUuXPnAQMGlO4KukR27949b968xYsXb9myJTMzs1GjRi1btjz22GPbtm1buhWGw+Hp06cvWrRow4YN9evXP+iggwYMGFC3bt3ir2HhwoWzZs1at25dvXr12rZte8IJJxx44IGlC2avNmzYMHXq1A0bNmzfvr1p06bt27c/6aSTivmbzD6iLMdOVbq++/bbb7/77ruNGzc2bty4bdu2/fv3b9CgQVlWuHnz5q+//nr9+vWpqanNmjW7+OKLCz2Qv//++8hFX3Z2dvPmzQ855JBjjz02KSnBT3MWLVr07bffrl27tmbNmm3atBkwYEDz5s2L3zw1NXXChAmrV6/Ozc1t06ZNz549S3QfEgCgnIUB2Lft2bPngw8+uOSSS1q1alVoT56SknLttdeuWrWqqDUsX748WvmVV14Jh8Nr1qw577zzCj7t7tOnz/Tp0/ca0q5du26++eaCN7k6d+784osvRupEP7z77rsLruGVV14p5l+idevW/fKXv2zcuHHBHe/cufNrr72Wl5e314CB0ontPeKYMGFCpH6+A3/NmjUjR46sU6dOoZXD4fD8+fPHjBlz1FFH1ahR+DCHJ5xwwqefflrMaHfs2HHPPfe0adOm0FW1bNnyuuuuW7ZsWaTyhAkTirNr/fv3L/TbiN2L+N9bpNfN57LLLoss7dChQzgczs3Nfeihh9q1axe76csuuyxfq4yMjD/84Q+FPqxq2rTpXXfdtWvXrmJ+V0Ali3/m079//6IO/PB/91eRzmfBggWDBg0q2HMOGjRo4cKFxYln8eLFF154YaFPZY466qiPPvqoTHsLZXP33XfnO15ee+21zp075/tdbd68+auvvhrbcNmyZeeee27BQ2P48OHr16/f63a/+OKL/v37F0w8rVmz5hlnnPHDDz/Eb/7jjz8OHz68qEfINWrU6N279wsvvFDubSO2b98+evToFi1aFGzeqlWrxx57bM+ePXv9Bn766achQ4bk+wJDodDAgQO///778H93ZcuXL9/rCosvutpCT5wKrVnoZWbBX57nnnuuY8eO+b6Txo0b/9///V9xvpNSWLZs2QMPPBDneXaPHj3efPPN+CvJd64YDodffPHFgw46KN+q6tate+edd2ZmZu41qkmTJvXs2TNf8+Tk5PPPP3/NmjXhwr66fDp06BDnm4/1zjvvFJqeVbt27QsvvHDlypV7jZbKV17HTgKv76Kip1Wxl3L55OXl/frXv46u6sQTT0xNTS1Y7d133y04nGrdunWvuuqq7du3hws7VGMVvCpcsGDB4MGD83UO+brTrKysxx57LN+1YfT7v/HGG7ds2RLnSyv+oRqtWej5Z8EOf8qUKQVf5AiFQiNHjly7dm38bYXD4Y0bN1500UUF70P27dv3q6++Chd2xgsAUNEkygDs6+bMmVPYPYH8mjZt+vnnnxe6hnwX5xMnTjzggAOKWk+dOnU++eSTOPGsWbMm/sQrF198cW5ubvTHsiTKvPnmm3t9Q27IkCHp6ekl+UaB4ipLosyXX37ZtGnTOJXD4fCRRx5ZnPX/+te/zs3NjR/q559/Hqdni3rsscci9fedRJm0tLQTTzyx4Kbz3a/87rvvorcyi9K5c+elS5fG/6KAhCjHRJm//e1vcc6OmjRp8s0338QP5o9//ONeX0e+6qqrcnJyymXfoaRin9fm5eVdeeWVcX5X77333kirSZMmNWzYsKhqhx566MaNG4vaYkZGxgUXXBD/oEhKSnrppZeKWsPYsWOLM8rC8ccfX75tI7788su9ngX16dNn8+bNcb72f/7zn3H6lrp167777rv7V6JMbm7uRRddFOc7OeaYYyKPusvXsGHD4v9fRIwcOTIjI6OolcSeK2ZnZ48aNSrOqgYNGhQ/V+YPf/hDnFGFDjzwwK+//rpcEmVSU1NPOeWU+Dtet27d+DccSIjyOnYSeH0XtddEmczMzPPOOy+6hvPOO6/QI+i6666Ls91OnTotWrSoRIkyb731VkpKSsFVxXanq1ev7t69e/xdbtq06eTJk4v63iooUebxxx+PM4Jphw4d4v9R+Pbbb+P8byYlJT311FMSZQCAymfqJYD9Ru3atY877rjevXu3bdu2YcOGu3bt+vHHHz/66KNVq1YFQZCamjps2LDZs2fHH7Z00aJFN9100/bt2xs2bDhs2LBevXo1aNBg7dq177777ty5c4MgyMzMvPjii3/88cdCR09NS0s75ZRTlixZEvmxQYMG55577tFHH52SkrJ8+fJ333130aJFb7zxxqGHHlr2/X3yySdvuOGG8L9vhh5zzDGDBg1q165dbm7ujz/+OHbs2A0bNgRB8Mknn5x55pnjx48v6o0loNSSk5OjL3CvXLkyJycnCIIGDRrk6x8K3u9bvnz5n//859TU1Dp16pxxxhn9+vVr0qTJ5s2bv/zyy0Lvrx122GF9+/bt1q1b06ZNc3Nz165dO2nSpEmTJkWWPv744wcccMCYMWOKivPvf//7RRddFAkvCIIDDzxwyJAhRxxxxAEHHLBr167ly5dPmzZtxowZ4ZiHKykpKZFdW7t2bWZmZhAEderUKfi2YlHvL5ajyy67bPLkyUEQ9OrVa8iQIe3atcvMzFywYEHstzpt2rTTTz99586dkR87dep05plnHnrooXXq1FmxYsX777///fffB0GwdOnSE088cfbs2S1btqzosIGEmDx58n333bdnz57mzZufffbZ3bt3r1u37vLly//2t7/99NNPQRBs27btggsumDdvXr7RvKJuvfXWP/7xj5FyKBQaMGDAySef3KpVq8zMzO++++6dd97Zvn17EAQvvvhibm7uyy+/XFl7BoW79957X3rppSAIjj322CFDhrRu3Xrnzp2fffbZZ599Fqlw1113DRgw4MADDxw6dGhaWlrjxo3PPffco446KiUlZdGiRX/5y182bdoUBMHixYtvuOGGt99+u+AmMjMzTz311ClTpkR+TElJOeOMM/r27XvAAQds27btq6+++uijj3Jzc3Nycq688sqaNWtGH4tGLVy48KKLLtqzZ0/kx2OOOeaUU07p0KFDSkrKrl271q9fP2/evEmTJkX/jpdX24j33ntv5MiR0SkyDz/88CFDhnTq1CkpKWnJkiXvvPNO5EntrFmzTj755BkzZhSaDTN9+vRzzjknIyMj8uNBBx10/vnnd+7cOT09febMme+99156evoll1wS/7Hxvua+++7761//GgRBp06dzj///IMPPjg9PX3WrFmR3QmCYObMmUOGDJk0aVIFTWVy0EEH9evXr3v37k2bNq1Ro0ZkKqLx48dH3ir529/+Vr9+/RdffHGv64n+6vbu3Xvw4MHt27ffs2fPN9988/bbb0f+y8aPH3/ffffde++9hTZ/7rnn/vd//zf6Y69evc4888y2bdvu3Llz6tSp48aN27Jly3nnnXf22WeXcX+3bNly0kkn/fjjj5EfGzduPHTo0F69ejVq1GjTpk2ff/75559/HgRBenr6sGHDPv3004EDB5Zxi1SQcjl2Kv/6rpi2bds2bNiwyPVXEAS//vWvH3nkkYJ3k0aPHv3UU09Ff+zfv/9pp53WokWLrVu3TpgwYfz48cuXLx8+fHjxJwSfNWvWSy+9lJWVFbkXd/TRRzdo0GDDhg2ffPJJNI9t48aNxx9/fOQWXxAEjRs3Hj58+JFHHlm7du0lS5aMHTt25cqVQRCkpqYOGjTos88+K/R1i4rwt7/97fbbbw+CoEOHDmefffahhx5aq1atRYsWvfnmm+vWrQuCYOXKlZdddtnEiRMLzclbunTpqaeeunXr1siPLVu2HDlyZNeuXXNycubNmzd27Njt27ffcMMNcX4fAAAqSoITdQDYmzlz5nTr1u2VV17ZsWNHwaU5OTmPPvpo9MHzySefXLBO7Fsskev/s88+O98LhXl5eaNHj45WGz16dKHB/OpXv4rWOemkk/INr5qbm3v//fdHtxJRuhFlvv766+g9l1atWhUcLCctLe3SSy+NruShhx4qdD1AeYn/wllEvvPMY445puBQ2LFOOOGEW2+9taiJQmbOnBlN06lZs2ZRq/r++++jj3xCodCYMWN2795dsNqaNWtGjx5d8F3w4gzNHVERI8pE1K1b9+9//3tRa9u6dWvbtm0jNWvVqvXnP/853zAPeXl5f/rTn6Id7xlnnBF/R4DKV14jykSO9GuvvTbfVGt79uy55JJLotWee+65QsP429/+Fq3TpUuX2bNn56uwadOm0047LVpn7NixpdxhKIPYgQ1CoVBKSkrBX8XY9IKTTz65T58+QRAMHTo034QUW7duPeKII6I1FyxYUHBzv/zlL6MVzjrrrIKTNH333XfR+Ufq169f8ITk5z//eWRp7dq1x40bV+hOZWVlffDBB7fffns5tg2Hwz/99FODBg0ia2jQoMHbb7+dr8KePXsiTzcjfvWrXxW6/q5du0br3HrrrfnmVfnpp5969OgR/PdV3r4/okwk2ltuuSXf7ixbtix2EqIHHnig/PYjHA6HR4wYcfXVVxfsYCMWL17cu3fv6NYnTZpUaLXouWJkLxo0aPDuu+8WXFX0FDElJaXQET6WL19er169SJ2kpKSCX+/ChQsjT/pj/3MLDSn+MBV5eXlnnHFGdA2/+MUvCsYzYcKE6HiTbdq02bZtW6EbIiHK69jZx6/vVqxY0a1bt+iaH3nkkUIDmDZtWvSIaNCgQcExkGbMmNG6devYA2evI8pEnHHGGZs2bSp0o+FwOPYgGjJkSL6aWVlZv/nNb6IV2rdvX+hRXxEjykR285577sn3K5GWlhab8fbZZ58VuqHYgaYuvvjifCexGzdujFSI7YWMKAMAVA6JMgD7uqysrL2OSfunP/0pej05f/78fEvzXZyfeuqpha4wLy/v2GOPjdRp165dwQorVqyIXrgeeuihO3fuLDSY2FuxRV2cx39clJeXF715ccABBxQ1k0heXt6ZZ54ZqdawYcO0tLRCqwHloqSJMgcddFCh6X2x9jpv2sqVKxs3bhxZ4W9+85tC65x00knRjb7wwgt724/89oVEmaIejEVcc801kWqhUOi9994rqlp0iIggCCKzvAP7jvJKlAmC4Iorrih0ExkZGdGO+sQTTyxYYdeuXdEnlJ07d966dWuh68nKyjr66KMj1Q4++OC8vLwS7CeUh9jntUEQvP/++4VWi32gGATBsccem52dXbDazJkzo3XGjBmTb+nUqVOjS88999yifuGXLVsWzUcpeAy2b98+sujGG28s6c6WpW04HI5mttWpU2f69OlFVbv++usj1WrUqFEwweXJJ5+MfglXXXVVoWtYv359vvHq9v1EmSAIrrzyykJXsnHjxshD7iAIUlJSUlNTy7wH/7HX89tt27YddNBBka0PHz680Dqx54o1atQo6szzk08+iVYrdGqwK664IlqhqBzKtWvX5psSpdBq8Z++v/XWW9Hmv/71rwtdQzgcnj59evR9mN/97ndFVaPyldexsy9f382ZM6dVq1aRRbVr1y6YWRgVm9jxz3/+s9A68+bNi501rziJMv36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zeNUmDNnTqRQov4wCILVq1eXMTZgH1TqE7nvv/8+eppUov5EZ0JixXkGWa9eveJUi62Z77iI/pENynZcxM6+8bvf/a5ly5bnnHPOn//85zlz5hScBC2fsrQt3UlCbm5u9Gor+O9Rdnr06BF/JXutsE8p/u6kpaXFz1YphbS0tNdff/3SSy89+uijW7RoUbdu3djz29iE8vjX702bNq1Vq1acCtGeP9+vdxAEy5YtixRq1aq115PzslzCR38VGzRo0L59+/iVk5OTo6OV+BOzbyr7sbOPXN/l5uZec801d911V+THU045ZfLkybFZxYWKHjidOnXa60xSxT9w4h+DixYtipaPPPLI+Ks64ogjoq+uxTasOKU+/6zCf2IAgKoh3mCYAOwjfvzxx1/96lcTJ04sTuXoJB2FqlOnTjE3mm/ajtj7F3GG4S1mhTi2bNkSLd9yyy233HJL8dtu27atWbNmpd40UF6iw3HHl5mZec899zz++OPR9+f2Wj/2x507d0YT+OLfvNtn7fWLinaJH330UZwB8wtKTU0tfVjAvqrUJ3Kx51fnnXde8beoMyGxivk7X/xDI1bscXHggQcWv2G+4+Kcc8657bbbHnroociP6enp77//fmRGkkaNGp100knDhw8fPnx47KPEsrfdvXt39LzoySeffPLJJ0sUf+fOnSPlbdu2RT+Pn7wbBMH+dalVot3Ztm3bXjM8iikvL+/RRx+99957842sUJQKun4PYi7hGzVqFH9E2KCcLuHT0tKcr1YBZTl29qnruylTpkyZMiVSPvfcc9966634aWcR0QOnOAdF8Q+c+Nd9sV1x7MsPhUpJSWnYsGEkztiGFafUHVEV/hMDAFQNRpQB2NfNmjXruOOOy5clk5SU1KJFi/bt23f+t+j1ecEbZOUi9jbHXucvL8sE5zt27Ch129hRxIEESkraezZ2ZmbmGWec8Yc//CHfXdQmTZq0adMm2rlFpzkICvRvsdMTFPrwad+31y+q1F2i/hCIpTOBgsrxuPjDH/7w0UcfRedRit3EuHHjLr/88o4dO/75z38udG2la1teF02xb//vdeyE2FF89n0l2p2Cw7GUTjgcvvTSS2+99dZ8WTINGzZs3br1QQcdFD3FjW1SLpsuKHqOXZzL84RcwvsTs28q9bGzr13fxaZ3zJ07N3YwrTgq6MCJf90X+zXWrVt3r2uL/heUaMK+yleF/8QAAFWDEWUA9mlZWVkXXXRR9I2WQYMGXXnllf369WvTpk2+d8Luvvvu3/3udxUXSezrL3u9FC/my3OFir0p0Lx58wYNGhS/bXGezQP7iAceeODLL7+MlNu3b/8///M/P/vZz7p27ZrvfbXly5cfdNBBha4htn8or8cb+5q6detGnj3sdZKmfErUeQJVXuz5VevWrff6rAKqg9jjIjZxYa9at25d8MMzzjjjjDPO+PHHH8ePHz958uSpU6fGPpTdunXrDTfcMH/+/Oeff75c2sYG36RJk6ZNmxY//thzrdhH0RkZGfGfTO/evbv4W0m4Eu1OeaVcv/LKK3/9618j5QMOOOD6668fPHhw9+7d8z0ADofDex3ipeyil/DFeZReLpfwSUlJsTkQe1Wik1sqTamPnX3t+q5v376DBg268847gyBYtmzZSSed9MUXX+x1GrJKO3BixX6NxUkgi/4X7OMXffn+xMSvvH/9iQEAqgYPFAH2aR9++OGSJUsi5dtvv/33v/99UTXjT21edrGDoK5atSp+5bLMNX7AAQdEy3fdddf1119f6lUB+6zs7Ozou9HdunWbOnVq48aNC60Zp3Nr2LBhcnJyZHTuYr4gWBbFH0m+HN+OPeCAAyKJMoMGDXrnnXfKa7VAdRN7fvXcc88NHTo0gcHAPiL2uJg7d265pEp069atW7duN954YxAES5Ys+fTTT1977bVvv/02svSFF14499xzTz/99LK3bdSoUVJSUk5OThAEV1xxxR//+MfSBRw7b8imTZvifwmbN28u3VbKS4lOsUq0O2WZeCjWI488Eik0b978m2++adeuXaHVKvriPSJ6Cb9jx44dO3Y0atQoTuVyuYRv1KjRTz/9VOr1sI8o3bGzb17f3XHHHXXr1r3pppuCIFi1alX//v0///zzbt26xWkSPXCKc1CU5cCJFdsFbdy48YgjjohTOTMzM5qgU7DvSshFa1Hy/YmJXznhf2IAgGrI1EsA+7R//etfkULDhg3vueeeODWXLVtWoZG0bNkyOlPy7Nmz41eO3s8thdatW0dv4a1Zs6bU6wH2ZbNmzYreIf3tb39b1F3UYG+dW/fu3SOFmTNnlltwRYh9dTv+XcUNGzaU10YPO+ywSEF/CJRF165dow9O9CcQEf0jG1TMcXHIIYfccMMNs2fPfvjhh6Mfvvbaa+XSNhQKde3aNVIuS/DRlQRBMH/+/PiV582bV+oNxRc9yyrHU6y97k60QoMGDdq2bVv8NRdl3bp1CxYsiJRvuummorJkgoq/eI846qijouW9XqGX5RI+eiht27bNbEpVQOmOnX32+u7Xv/71M888EzkLWrdu3YABA+J3ZdEDJzU1dfny5XFqZmZmRg/5MurSpUu0PHfu3PiV582bl5eXV7BhRDG70z179mzbtq2kcZbUPvInBgCgKBJlAPZpa9eujRS6du0aZ/LjrKysKVOmVHQwxx13XKTw9ddfb9y4MU7Nsgx7ULNmzQEDBkTK0WF7gSom2rkFQXDkkUfGqfn555/HWdq/f/9IYfny5XPmzClFJMnJyZFC9G5jURo1alTMx8zTpk0rRSSFGjhwYKQwe/bsyNAyAKXQrFmzHj16RMrOryDi5JNPjk5/U6HHxS233BI9AEv6VDVO2+hJwqRJk/Z6GlOUvn37Rsv//Oc/49TMzMycOHFi6bayV9Fn6uV4ihV/d7KysqK706tXr3KZCKm8zm/LS/T6PQiCf/zjH3Fqzpo1a6+jxsYR/VXMy8uruF8SKk3pjp195/quoGuvvfbll1+OhLpp06aTTz45zttfxT9wxo0bt2fPnnKJ8Oijj47e8fv444/jVx43bly03K9fv3xLi9mdzpo1KzImWYU66qijatWqFSnH/70qTgUAgHInUQZg/5CZmRln6SuvvFIJozdffPHFkUJubm6cSaC++eabMl7fXnDBBZHCrFmzKiEBCEisOP3bli1b3njjjThtR40aFS0/8MADpdh6dFr3vaah1KpV66CDDoqU4zynycvLe/XVV0sRSaGGDx8eSeXJycmJDmYOUArR86v3338//hvSUE00bdp00KBBkfITTzyRm5tbcduKvlUfmVKkXNpGz4I2bNjw5ptvli6wjh07RhNx/v73v8e5qHzrrbeik32Uu+hMKPFTYV5++eXirzP+7rz99tvRc7+zzz67+Kstpjjnt1lZWc8880y5b7GgHj16RP9zX3311dg8hnzuvffesmzoyCOPjP4PPvroo2VZFfuCsh87ib2+K9Tll1/+17/+NSkpKQiC1NTUgQMHFtXbnH766QceeGCk/Pjjj+/evbvQanl5eeUYXq1ataIz602aNOn7778vqubu3bujPWGLFi1ikx0jKqI7LbXatWufdtppkfLnn38eZzChCRMmLF68uBJCAgCIJVEGYJ/WoUOHSOH7778v6pHG0qVLb7/99koI5qyzzurUqVOk/OSTT77//vsF62zevPmSSy4p9RuNEeeff370dvBll10Wf/SaqPi5RMA+Jdq5Bf/9SlysvLy8K6+8cteuXXHW07dv3+hLh++8886LL75Y0kg6duwYKSxZsmSv3Uj0jb133323qDnUH3zwwZ9++qmkYRSlXbt2l19+eaR8//33FzN3UH8IFPSrX/2qadOmQRBkZ2ePGjWqqAc/sfLy8srrVWnYN911112RwqJFi2688cbiNMn3RzY9PX3Tpk3xm4TD4eiMEtETjzK2DYLg2GOPPfXUUyPlG2+8cdGiRXsNPijsJOHqq6+OFFJTU4u6rty0adOdd95ZnPWXTvQU66uvvipq0J0333yzRAP/pKam/u///m+hizZv3hzdnZSUlEsvvbQkwRapffv20XJR57dBEPzmN79ZuXJluWxxr2644YZIYffu3RdccEFGRkbBOn/+85/jRFscoVBozJgxkfIXX3wRO19YHM5X91mlO3b2neu7oowaNWrs2LGRAU527NgxaNCgSZMmFaxWq1ata6+9NlJeu3btz3/+80JvcN166617nSOpRK677rpIIRwOX3PNNUWdgN1+++3r1q2LlK+55proeC1R0e50xYoVn332WaErmTx5cjHnASy7a665JlLIycm5/vrrC/0y09PTi/knGACgfEmUAdinRd8pycvLGzVqVMHnspMmTTrxxBN37NhRLoNFx5eUlPTss89Gyrm5ueeff/5tt90WvceXkZHx1ltv9erVa+HChYcffnhZNlSjRo2XXnopcsG/bNmy3r17f/zxx+FwuNDKGzZsePbZZ3v06GGYVtiP9OrVK/qi3oMPPljw+N20adPw4cM//PDDvXZuTz/9dHQi9quvvvq3v/1todOxr1u3bsyYMQXfnIveSczIyLj99tvjT+UeHVhr586dF154Yb6bvNnZ2ffdd9+YMWOiMzSViwceeCDyYCwzM/PUU099/PHHi3qusHv37nfffXfw4MF33HFHOQYAVA0NGjR47rnnIuWZM2f27dv366+/LqryihUrHn744YMPPrik08TA/uW44467/vrrI+Wnnnrq7LPPXrFiRaE1w+Hw7Nmzb7755mhCf8SmTZs6dOhw9dVXT5kypdALlj179tx4440LFy6M/HjuueeWS9uIp59+OjLLRmpqar9+/V5//fWixsXZtm3b66+/fvzxx0f7gairrroqulPPPffc6NGj883HsXz58tNOO239+vUVd8l50UUXRQp5eXkXXnhhvvyhcDj84osv/vznPy/RKVaNGjWef/7522+/Pd/urFixYvDgwdHhVcaMGdOkSZOyhf//tWjRomfPnpHya6+99sorr+SrkJaW9stf/vKpp56qhIv3iCuuuOKEE06IlCdPntynT5+PP/44OjTRjz/+eOWVV0aSacp4CX/BBRecddZZkfJtt9129dVXF5UElpubO3ny5KuuuuqUU04pyxapOKU7dvad67s4zj777Pfee69OnTpBEOzatWvw4MHjx48vWO2OO+7o3LlzpDx27Nj+/fvHznD3zTffDBs27NFHH61Ro0a+vwhlceqpp55xxhmR8tSpU88999wtW7bEVsjOzv7f//3fJ598MvJj+/btb7755oLrGT58eGQHgyD4xS9+UfAVjg8//HDo0KG5ubnle9FalDPOOCN6sH/66ac///nP8+Vqb968ediwYfPnz6+0jhEAICop0QEAEM/QoUOPPPLI7777LgiCmTNnHnrooSNHjozM8rt27dp//etfkydPDoKgffv2Q4cOffrppys6nkGDBj3wwAORR7A5OTkPP/zwww8/3LRp05SUlI0bN0Zuo9SrV2/s2LGHHXZYpEnNmjVLsaHjjjvuhRdeuOKKK3Jzc9esWTN06NCDDz544MCB3bp1a9SoUVZW1vbt2xctWjR37ty5c+cWlUMD7LNq1qw5evTo3/zmN0EQZGRkDBkyZNCgQQMHDmzWrNn27du/+eabDz/8MC0tLQiC+++/f/To0XFWddhhh7388ssXX3xxTk5OOBy+9957n3nmmTPOOKNHjx5NmzbdvXv38uXLZ8yYMXXq1Ly8vMceeyxf8zPPPLNFixaRkav+9Kc/PfPMMx07dkxJSYks7d27d+xbjIMGDTrxxBMjHe/nn3/epUuXCy+8sEuXLjk5OYsWLXr//fcjT9fuv//+cnzr+sADD/zggw8GDhy4ZcuWzMzMm2666b777hs0aFDPnj0jg0Ps2LFj+fLl8+bNmzFjRlZWVhAEXbp0Ka+tA1XJeeedF8nnC4Lghx9+OOGEE3r06HHyySd37ty5YcOG6enpqampP/7447fffvvjjz8mOlioJI899tiyZcs++eSTIAg++OCDcePG9e/f//jjj2/dunXdunXT0tI2btz4/fffz5gxY/369UEQNGrUKN8aMjMzX3jhhRdeeKFly5bHHnvsUUcd1axZs3r16u3cuXPBggXjxo2LPlfu1atXdKC4srcNguDggw/++9//fvbZZ6enp2/btu3SSy8dPXr0qaeeesQRRzRp0iQnJ2f79u1Lly797rvvvvnmm8jF2vnnn59vJbVr137llVdOOeWUyHAjDz744NixY88///zOnTtnZGTMnDnz3XffTU9Pr1ev3nXXXffQQw+Vw5deQNeuXS+++OLIhCzfffdd165dL7roou7du4dCoeXLl3/44YeRpL3opWhx3H333Xffffcf/vCHsWPHjhgxIrI7s2bN+sc//hF96N6vX79bb721HHdkzJgxw4cPD4IgLy/viiuueOmll4YMGdK6deu0tLT58+e/9957kSffDzzwQOUMChsKhd56663+/ftHZjz54Ycfhg4dWqtWrRYtWuzcuTM6gc4VV1zRrl27H374IQiC0j2rDoVCb7zxxsknnzx79uwgCF544YXXXnvtZz/7Wd++fVu0aFG7du2dO3euW7du/vz506dPT01NDYLgyCOPLLf9pFyV7tjZd67v4hsyZMhHH300bNiw3bt3Z2RknHXWWe+8887QoUNj66SkpLz33nunnHJK5ICdMmXKgAEDUlJSDjzwwG3btkVflrjnnnuWLl0ayWUs3Y2vfF566aVjjjlm1apVQRB8/PHHhxxyyPnnn9+jR49atWr99NNPY8eOjaZy1qlT54033ij49ygIgsaNG99yyy333XdfEASrV6/u0aPHBRdc0Lt37+Tk5DVr1nzyySezZs0KguDqq6/+7LPPKmd0q+eff75v375bt24NguAvf/nLv/71r5EjR3bt2jU3N/e7776LTPVVs2bNMWPG/N///V8lxAMA8B9hAPZtS5YsadmyZZyevF27dnPnzr377rsjP3bo0CHfGmLnbHrllVfib644NZ955pn69esXGszBBx88Z86c2NEOHn/88YJriH27Lk4wn3/+ebNmzYr5F+3DDz+Mv2tAWUQH077sssuKqhM9Hu++++69rjA3N3fEiBFxDuqaNWv+4Q9/iO3BJkyYUNTaPvvss+K8DfzYY48VbPvFF18UepMxCIL+/fvnq7x8+fLYccULxvzHP/5xr73uZZddFllasMcuyooVK44++ui97mDEzTffXMzVApUj/plPdIqBQjvYCRMmRNvG6QbD/33KF6fmm2++Wa9evWL2J/PmzSvpzkIZRa9rCj1eYkWrxT/x2OsKc3JyfvOb3xTz3fqmTZvGti1qetyC+vTps2nTpvJqG2vu3LkHHXRQMVf1xBNPFLqSTz/9NJooXFDdunXffffd2K5s+fLlcb7zUti6detRRx0VJ/Ibb7wxvLf/9Nj/69zc3AsvvDDOCvv06bNt27by3YtwOHzLLbfE/y/4n//5n/DerruLf64Y5z5A1KpVqwYMGFBoMKFQ6NZbb83Ozo4m7jRu3LjQlURPgOMcbunp6dHxF/fq6KOPjr9rVKZyOXb2keu76GlVwUu5qMmTJzdo0CBSLTk5+Z133ilYZ/78+UWlcyUnJz/66KPhcHjUqFGRT4466qiCayjRvbiI1atXd+/ePf4uN2nS5KuvvoqzkshApHHWcN5552VnZ8e/wC9+hx97plpUzW+//faAAw4oKp6aNWs+9dRTxT/jBQAoL0a0A9jXRVJPRo0aVfANlYYNG15zzTXz5s2r5Jexrr322oULF95zzz29e/c+4IADateu3aFDh1NPPfXll1+eO3fuUUcdFXlFLCIyGHjpDBw4cNmyZb///e87depUVJ0uXbrccMMN06dPP/PMM0u9IaDy1ahR4+23337ssceaN2+eb1EoFDrxxBO/+uqr2267rZhrGzRo0NKlS2+//faCa4to27btTTfdVHDOgiAITjnllAULFvzud78bMGBAy5Yto0NVF6pjx45Tp04dNWpUwcdpffr0+fLLLyOvUZa7Dh06zJo168033+zTp09RT/Jatmx54YUXfvDBBw8++GBFxABUDRdccMHy5ctvv/32Vq1aFVohFAodeeSRt99++/fff3/EEUdUcnhQ+SJ5rvPnz7/wwguLeh+gdu3aAwYMePTRRyOjbkS1atXqxRdfPPfcc6NzjhR0+OGHP/XUU9OmTcv3DkBZ2sY68sgjf/zxx6effjo6qGdBHTp0uOqqqz7//PPrrruu0Aqnn376/PnzhwwZkm9AkVAoNHDgwBkzZpxzzjlFrbxcNG3adOLEib/61a+Sk5PzLerWrds//vGPxx9/vEQrrFGjxl//+tdnn322YIpz48aN77nnnilTppTlWrUoDz/88Ouvvx6ZNzOfnj17fvjhh0888US5bzS+du3aTZgw4f333x8xYkTHjh3r1KnTtGnTI4444oYbbvj2228feuihpKSk6CV8Wb6TlJSU119/ferUqWeeeWZRZ9T169cfPHjwc88998UXX5R6Q1SoUh87+8713V6dcMIJn3/+eSQRJzs7e+TIkX/961/z1enevfs333zz+uuvDx06tF27drVr127WrNnRRx99xx13LFiw4KabbgqCoFwOnFht27adPXv2o48+2q5du4JLGzVqdMMNNyxZsuTEE0+Ms5LatWuPGzduzJgx0Rmsotq3b//ss8+OHTs2KalS5xno2bPnDz/8cOGFFxbs4Y855pgJEyb86le/qsx4AAAiQmHTVQDsJzZt2jR58uSVK1dmZWW1aNGiXbt2J554YvwHuony2WefnX766ZHylClTjj/++LKvc9myZd98883mzZu3b99eu3btxo0bH3TQQd27dy/qpgmwv9izZ8/06dPnz5+/ffv2xo0bt2rVqm/fvm3atCnd2sLh8Jw5c3744YfNmzdnZGTUr1+/Xbt2RxxxxCGHHFK+YW/atGnChAlr167Nyclp06bN0Ucf3a1bt/LdRFG2bt06derU9evXb926tUaNGg0aNGjfvv1hhx1W/LfJASIWLFjw3XffbdmyZceOHSkpKU2bNj344IO7d+9enHe4oUrKycmZOXPmkiVLtm7dGjmRaN68+aGHHnr44Yfv9cpr6dKlixYtWrly5Y4dO3Jzcxs0aNCmTZuePXsW5w90WdrGWrdu3fTp0zdu3Lht27akpKRGjRp17NjxsMMOK/SZa6HWrl07adKkdevWJSUltWnTpm/fvu3bty9RDGW0Y8eOCRMmrFixIjMzs1WrVt27d+/Vq1cx295zzz3RmTuiNzzD4fC0adMWL168YcOGBg0adO7c+ZRTTqlVq1aFRP9vubm5s2fPnjNnztatW+vVq9eqVaujjz764IMPrtCNlkW/fv2mT58eBMHPfvazf/3rX2VfYWZm5rRp01asWLFly5bs7Oz69eu3atWqS5cu3bp1K/iknH1TqY+d/fT6rhRatWq1YcOGIAiuuuqqF154oXxXPn/+/Llz527atCk7O7tZs2aHHHLIcccdV6IEl/T09EmTJv3000+7du1q0aJFly5djjvuuGIOn1ZBtm7d+uWXX65evTovLy9yEW3WYAAggSTKAFD+brzxxsh7cjVr1ty5c2fBt1gAAACgHBWaKMNebdy4sV27dtnZ2UEQjB49+oEHHkh0RLAfmDNnTnRu3Oeee+7qq69ObDwAAJSUqZcAKGdr16599dVXI+UBAwbIkgEAAIB900MPPRTJkgmCYMiQIYkNBvYX9913X6RQo0aN6JjKAADsRyTKAFAy33zzTfQmWkFbt24dPnz4zp07Iz9ee+21lRUXAAAA8B+pqamLFi2KU+H1119/7LHHIuXu3bufcMIJlRIX7NNWrVq1Zs2aOBXuv//+d999N1IePHhwJU9RBwBAuZAoA0DJPPjgg507dx4zZsyMGTOysrKin69cufKJJ5448sgjZ8yYEfnklFNOGT58eILCBAAAgGpt3bp1hx122FlnnfXmm2/GPvjPysqaOHHiiBEjLr300sg0VaFQKDKBMjBv3rzOnTtfeOGF77///qZNm6Kf79q165NPPjn11FPHjBkT+SQlJeXhhx9OUJgAAJRJUqIDAGD/s3r16vvvv//+++9PSko64IAD6tSps23btugoMhGHHHLIX/7yl1AolKggAQAAoJrLy8sbN27cuHHjgiBo0KBBkyZNsrKytm7dmpOTE1vtwQcfPPnkkxMUI+xz9uzZ89Zbb7311ltBEDRu3LhRo0bp6empqam5ubnROsnJyS+++GK3bt0SFyYAAKUnUQaAkklOTo6Wc3JyNm7cmK9CKBQ6//zzn3nmmaZNm1ZuaAAAAFSeiy66KDqkaElNmjSpTZs25RtPWRx88MGla9i2bduJEyeWayzlJikpKRQKRcaMCYIgLS0tLS0tX522bds++uij559/fqVHB/uo2BtfQRBs3759+/bt+ep06dLlmWeekV4GALD/kigDQMm8/vrrV1555Zdffjlr1qxly5Zt3rw5PT29du3aTZs27dy5c//+/UeOHHnYYYclOkwAAAAq1tq1a5cuXVq6ttnZ2eUbTBmVekfyDc2yT+nateuqVas++uijr7/+esGCBatXr965c2dubm6jRo2aN2/ep0+fU089dcSIEbVq1Up0pLAPOe200xYvXvzxxx9PmzZt4cKFa9as2bVrVzgcbty4ccuWLfv163f66acPGzasRo0aiY4UAIDS+88rBQAAAAAAxTRgwIBJkyaVru3y5cs7duxYruGUSaknDu7QocOKFSvKNRYAAAAqlkQZAAAAAAAAAACqBcMDAgAAAAAAAABQLUiUAQAAAAAAAACgWpAoAwAAAAAAAABAtSBRBgAAAAAAAACAakGiDAAAAAAAAAAA1YJEGQAAAAAAAAAAqgWJMgAAAAAAAAAAVAsSZQAAAAAAAAAAqBYkygAAAAAAAAAAUC1IlAEAAAAAAAAAoFqQKAMAAAAAAAAAQLUgUQYAAAAAAAAAgGpBogwAAAAAAAAAANWCRBkAAAAAAAAAAKoFiTIAAAAAAAAAAFQLEmUAAAAAAAAAAKgWJMoAAAAAAAAAAFAtSJQBAAAAAAAAAKBakCgDAAAAAAAAAEC1IFEGAAAAAAAAAIBqQaIMAAAAAAAAAADVgkQZAAAAAAAAAACqBYkyAAAAAAAAAABUCxJlAAAAAAAAAACoFiTKAAAAAAAAAABQLUiUAQAAAAAAAACgWpAoAwAAAAAAAABAtSBRBgAAAAAAAACAakGiDAAAAAAAAAAA1YJEGQAAAAAAAAAAqgWJMgAAAAAAAAAAVAsSZQAAAAAAAAAAqBYkygAAAAAAAAAAUC1IlAEAAAAAAAAAoFqQKAMAAAAAAAAAQLUgUQYAAAAAAAAAgGpBogwAAAAAAAAAANWCRBkAAAAAAAAAAKoFiTIAAAAAAAAAAFQLEmUAAAAAAAAAAKgWJMoAAAAAAAAAAFAtSJQBAAAAAAAAAKBakCgDAAAAAAAAAEC1IFEGAAAAAAAAAIBq4f8B3BDIzZPFbC8AAAAASUVORK5CYII=", "ok": true, "headers": [ [ "content-type", "image/png" ] ], "status": 200, "status_text": "" } } }, "id": "HtQbjl65cYyH", "outputId": "6c922c5c-53ff-4e73-c6f8-21113f0c70cd" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "application/javascript": [ "\n", " (async () => {\n", " const url = new URL(await google.colab.kernel.proxyPort(6006, {'cache': true}));\n", " url.searchParams.set('tensorboardColab', 'true');\n", " const iframe = document.createElement('iframe');\n", " iframe.src = url;\n", " iframe.setAttribute('width', '100%');\n", " iframe.setAttribute('height', '800');\n", " iframe.setAttribute('frameborder', 0);\n", " document.body.appendChild(iframe);\n", " })();\n", " " ] }, "metadata": {} } ], "source": [ "# Start tensorboard\n", "# Launch after you have started training\n", "# logs save in the folder \"runs\"\n", "%load_ext tensorboard\n", "%tensorboard --logdir runs" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-vpthBLCeQOJ", "outputId": "f65d6515-8d43-4d71-de8f-36ed06a1a0b5" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Found existing installation: imgaug 0.4.0\n", "Uninstalling imgaug-0.4.0:\n", " Would remove:\n", " /usr/local/lib/python3.7/dist-packages/imgaug-0.4.0.dist-info/*\n", " /usr/local/lib/python3.7/dist-packages/imgaug/*\n", "Proceed (y/n)? Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting imgaug==0.4.0\n", " Downloading imgaug-0.4.0-py2.py3-none-any.whl (948 kB)\n", "\u001b[K |████████████████████████████████| 948 kB 4.6 MB/s \n", "\u001b[?25hRequirement already satisfied: imageio in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (2.9.0)\n", "Requirement already satisfied: scikit-image>=0.14.2 in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (0.18.3)\n", "Requirement already satisfied: numpy>=1.15 in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (1.21.6)\n", "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (9.2.0)\n", "Requirement already satisfied: Shapely in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (1.8.4)\n", "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (1.15.0)\n", "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (1.7.3)\n", "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (3.5.3)\n", "Requirement already satisfied: opencv-python in /usr/local/lib/python3.7/dist-packages (from imgaug==0.4.0) (4.6.0.66)\n", "Requirement already satisfied: PyWavelets>=1.1.1 in /usr/local/lib/python3.7/dist-packages (from scikit-image>=0.14.2->imgaug==0.4.0) (1.3.0)\n", "Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image>=0.14.2->imgaug==0.4.0) (2.6.3)\n", "Requirement already satisfied: tifffile>=2019.7.26 in /usr/local/lib/python3.7/dist-packages (from scikit-image>=0.14.2->imgaug==0.4.0) (2021.11.2)\n", "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.7/dist-packages (from matplotlib->imgaug==0.4.0) (4.37.0)\n", "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from matplotlib->imgaug==0.4.0) (21.3)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->imgaug==0.4.0) (1.3.1)\n", "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->imgaug==0.4.0) (0.10.0)\n", "Requirement already satisfied: pyparsing>=2.2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->imgaug==0.4.0) (2.4.7)\n", "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.7/dist-packages (from matplotlib->imgaug==0.4.0) (2.8.2)\n", "Installing collected packages: imgaug\n", "Successfully installed imgaug-0.4.0\n" ] } ], "source": [ "!pip uninstall imgaug\n", "!pip install imgaug==0.4.0" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 517 }, "id": "S68l0TfMcmpD", "outputId": "aa8b6cc0-32e5-49e2-a5ef-35e22b09679f" }, "outputs": [ { "output_type": "execute_result", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAACWAAAASwCAYAAAB/pHGBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAB7CAAAewgFu0HU+AAEAAElEQVR4nOzdd3gU1foH8O9m0xshBQg9BAgYepSidOGHIgKiQbyACCrcqyIqKE1BQao0FQGv0gQERFBQbPQmBhJKCiRgCIQSSN30tuX3R+6Ou9k+u5tkk+/neXzczc7OnJ0sOTPnvOd9JSqVSgUiIiIiIiIiIiIiIiIiIiIiIiKymFN1N4CIiIiIiIiIiIiIiIiIiIiIiMhRMQCLiIiIiIiIiIiIiIiIiIiIiIhIJAZgERERERERERERERERERERERERicQALCIiIiIiIiIiIiIiIiIiIiIiIpEYgEVERERERERERERERERERERERCQSA7CIiIiIiIiIiIiIiIiIiIiIiIhEYgAWERERERERERERERERERERERGRSAzAIiIiIiIiIiIiIiIiIiIiIiIiEokBWERERERERERERERERERERERERCIxAIuIiIiIiIiIiIiIiIiIiIiIiEgkBmARERERERERERERERERERERERGJxAAsIiIiIiIiIiIiIiIiIiIiIiIikRiARUREREREREREREREREREREREJBIDsIiIiIiIiIiIiIiIiIiIiIiIiERiABYREREREREREREREREREREREZFIDMAiIiIiIiIiIiIiIiIiIiIiIiISiQFYREREREREREREREREREREREREIjEAi4iIiIiIiIiIiIiIiIiIiIiISCQGYBEREREREREREREREREREREREYnEACwiIiIiIiIiIiIiIiIiIiIiIiKRGIBFREREREREREREREREREREREQkEgOwiIiIiIiIiIiIiIiIiIiIiIiIRGIAFhERERERERERERERERERERERkUgMwCIiIiIiIiIiIiIiIiIiIiIiIhKJAVhEREREREREREREREREREREREQiMQCLiIiIiIiIiIiIiIiIiIiIiIhIJAZgERERERERERERERERERERERERicQALCIiIiIiIiIiIiIiIiIiIiIiIpEYgEVERERERERERERERERERERERCQSA7CIiIiIiIiIiIiIiIiIiIiIiIhEYgAWERERERERERERERERERERERGRSAzAIiIiIiIiIiIiIiIiIiIiIiIiEokBWERERERERERERERERERERERERCIxAIuIiIiIiIiIiIiIiIiIiIiIiEgkBmARERERERERERERERERERERERGJxAAsoio0fvx4hIWFISwsDFFRUdXdHL2ioqKENo4fP766m+MwHOF3S0RUl9XVv9P2+Nz79u0T9jlr1iyb7FMfXpMQETm+utb/OtLnZT9LROT41H/Hw8LCqrspVE1mzZolfAf27dtn12Px+0ZEVLX4d7du+/zzz4Xf/+eff653G97X10wMwCKqoxITE4U/yvPmzavu5hAREdUZ7IOJiIiqHvtfIiKimmnkyJEICwtDt27dUFZWVt3NISIiIhtiP091DQOwyCENHDhQGDi9c+dOdTfHIR09elR4PHDgwGpsCRERORL2wdZjH0xERJZi/2s99r9ERFQVHCkbYk2QlpaGq1evAgB69+4NV1fXam4RERGRYeznLcN+nuoiBmAR1VHqwWcPDw/06tWrmltDRERUd7APJiIiqnrsf4mIiGoeBkgTERHVXuznqS5yru4GENUl27Ztq+4mAAAyMjIQHx8PAHj00Ufh5uZWzS0iIiKyL/bBtjNq1CiMGjWquptBREQOgP0vERGR/SQlJVV3E6x27NgxAIBUKkW/fv2quTWOZ+nSpVi6dGmVHKs2fN+IiBxJbfi7y36e6iJmwCKqg44dOwaVSgWAEcdERERViX0wERFR1WP/S0REVPMUFhYK5Zu6du2K+vXrV3OLiIiIyFbYz1NdxQAsojpInfLRyckJ/fv3r97GEBER1SHsg4mIiKoe+18iIqKa58yZMygrKwMADBgwoJpbQ0RERLbEfp7qKpYgJIdx584dPP744zo/1/czAPjmm2/Qo0cPAEBYWJjwc3XKxsTERHz//ff466+/kJ6ejtzcXDz++ONYt26d1n7i4+Nx5swZXLhwAX///Teys7NRXl4OX19fNG/eHD169MDzzz+Pxo0bm/wM48ePx7lz53Tap2nWrFn44YcfAABLlizBqFGjUFxcjH379uHnn3/GrVu3kJeXh4CAAERERGDs2LGIiIgweWy1kpISnD17FgDQqVMnBAYGmnyPSqXCoUOHsG/fPiQlJSEzMxO+vr4ICwvD8OHDMXz4cDg5mR/PeenS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3L/feXl5KCwsFJ5XHkNUXz8EBQVpZZYyR2pqKrZs2WLw9czMTHzxxRfC8+eee06nHxKjYcOGGD58OABApVLhvffeM7mwSU2pVOo9dxMmTBDGyi9evIivvvrK6nYaYqvfnTmefvppYWFYRkYG1q5da3DbsrIyfPzxx8LzHj162CRgjohIE/t589SEft4cQ4YMERZYZWRk4MMPPzQ7iLmwsFBvFjTN8YDNmzcjOjpaVNuaNWsmPDZWRejmzZtG+0eqHRiARQ6pTZs2wuPffvvN5vv39/cXUjcqlUq8+eabWumL1T/fsWMH3nvvPUilUq2o55pE8w/9gAEDLHqvi4sLCgsLMWnSJCQkJOi8vnfvXsybN094/txzz+ldXdy8eXOtgduFCxdix44dOgFEt27dwqRJk4Rau97e3nj99dd19nf//n2t+sKvvfaaVqpIAHjvvffQunVrABWDrmJr19vSO++8I5SXio6OxtSpU3VW4ZaVlWHlypVaAwpvvPGGEFymduTIEQwZMgQbN240WJu4rKwM27dvx++//y78THOFFVDxnZg3bx7OnTtnMKArLi4OCxcuNLgPIqpb2Aebz9I++OmnnxbKCJaXl+OVV17Rmz76zz//xKuvvircUIeHh+Opp54yuX8XFxfs2LEDK1as0Cnl8+DBA0yZMgV///03gIryPW+88YbJfVa3nj17avVLb775Jn799Ved7eLj4zFx4kQhDXZwcDBefPFFne3GjBmD6dOn48SJEwbLHaWkpGDmzJnC8169esHV1VV4vn37dowYMQLffvutwcGawsJCrF69Wghil0ql6N27txmfmIjqKva/5rO0/3300UfxxBNPCM/fffddrF27Vu+qVaVSib/++guvv/468vPzLW6bLfqZqsR+lohqu+HDhwtZewoLC/Gvf/0Lu3btMvg3qqCgAAcOHMD48eO1xso0tW3bVnj8+++/V2t2I2dnZ3zwwQdCINKxY8fw8ssvIzk5We/2d+7cwaeffooff/xR6+dvvfUWpkyZgt9++81gVocHDx5g+vTpwoLTli1bonnz5sLrycnJuHXrFgCgX79+FgdHubi4YMWKFdi6davOGGZycjImTpwojLMGBgbipZdesmj/xrz11lsICgoCACQlJeG5557D6dOnDW5///59bNmyBU888YRWhQO1kJAQrQnflStXYuHChQYz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CAsLY/AVERERERERERERERERGIBFRHXUggULrN7HiBEj0LlzZxu0hoiIqOYqLCzE7t27tX7m4+ODRYsWaf3sxIkTOHHihFXH8vPzw5tvvmnVPoiIiGoj9rNERERERERERDUbA7CIqE7asWOH1fvo0KEDA7CIiKjOcHNzQ8OGDfHoo4/ilVdeQbNmzbRej42Ntbp/bdKkCSeGiYiI9GA/S0RERERERERUszEAi4iIiIiIDGratCmSkpKquxlERERERERUhxw9erS6m0BEREREZBGJSqVSVXcjiIiIiIiIiIiIiIiIiIiIiIiIHBEzYBERETm4I0eOYP/+/YiPj0dGRga8vb3RokULDBo0CGPGjIG3t3eNO+aDBw8QHR2N+Ph4xMfHIz09HTKZDAUFBfDw8EBwcDA6deqEYcOGoVevXha37/z58/jll19w/vx5pKeno7i4GP7+/mjUqBG6deuGnj17ol+/fmI/PhERERERERERERERERGRgBmwiIiIHFRhYSFmzJhhNCV7cHAw1qxZgy5dutSoYy5YsAA7duww65i9evXCqlWr4O/vb3LbBw8eYP78+Th27JjR7Xx8fBAdHW3W8YmIiOzBEQOojfnrr7/w0ksvQT3E0KRJE5aNISIiIiIiIiIiojqDAVhEREQOSKFQYMqUKTh16hQAIDAwEJGRkWjdujVyc3Px888/48KFCwCAevXqYefOnQgNDa0xx1ywYAG+++47dOjQAeHh4WjRogX8/f3h7OyM7OxsXL58Gb/99htKSkoAAK1bt8bevXvh7u5usH137tzBSy+9hNu3bwMAWrZsiUGDBqFVq1bw8vJCfn4+kpOTcerUKaSnp+P8+fNWnQ8iIiIxHDmA2pDi4mI8/fTTQh8MMACLiIiIiIiIiIiI6hYGYBERETmgXbt2Yf78+QAqgpO2bt2KwMBArW2WLVuGTZs2AQAefvhhszNOVcUxb9++jYCAAHh6eho83p07dzBx4kSkpqYCAN5991288sorerctKyvDs88+i2vXrsHJyQnvvvsuJkyYAKlUqnf7tLQ0BAcHG//ARERENuboAdSGfPzxx9i2bRs8PT1RVFQEgAFYREREREREREREVLc4VXcDiIiIyDIKhQJr164Vni9fvlwnEAoAZsyYgfbt2wMAoqOjcfr06RpzzGbNmhkNvgKApk2b4t133xWeGysr+OWXX+LatWsAgHfeeQeTJk0yGHwFgMFXRERULfbs2SMEQrVu3Rr79+/HW2+9hWHDhmHs2LHYuXMnJk2aBADIzc3FvHnzavwxL1y4IARcT5s2zer2EhERERERERERETkiBmARERE5mPPnzyMjIwMA0L17d4SHh+vdTiqVYvz48cLzgwcPOtQxgYqJYrXMzEy925SUlGDbtm0AKrJtvPzyy1Ydk4iIyB5qQwB1ZaWlpZgzZw6USiWGDBmCQYMGiW4rERERERERERERkSNjABYREZGDOXnypPC4b9++RrfVfF3zfY5wTABC+UEAeieMAeCPP/5Abm4uAODpp5+GkxMvb4iIqOapjQHUn332GVJSUuDr64sPPvhAdDuJiIiIiIiIiIiIHB1nKImIiByMutQeAHTs2NHotkFBQUK5vczMTGRnZzvMMbOysrBy5Urh+ZAhQ/Rud/78eeFx586doVQqsXfvXowfPx49e/ZEx44d0a9fP0ydOhW///47VCqVqPYQERFZo7YFUMfFxWHz5s0AgHfffRdBQUEiW0lERERERERERETk+JyruwFERERkmZSUFOFx06ZNTW7ftGlTpKWlAQBu3LgBf3//GnXMO3fuIDExEQCgVCqRm5uLuLg4/PLLL8jPzwdQMSn8r3/9S+/74+PjhcdeXl4YN24cYmJitLa5f/8+7t+/jz/++APdu3fHZ599hvr165v8HERERLYiJpg5LS1NCGYW03/b65jl5eWYM2cOFAoFunfvjsjISIvbRkRERERERERERFSbMACLiIjIwaiDkgCYFUTk5+en97015ZinTp3Chx9+qPe1xo0b44UXXsArr7xisLSgurQSAMyfPx8pKSnw8vLCc889hw4dOkClUuHy5cvYt28fiouLce7cObzyyivYuXMnXF1dTX4WIiIiW6hNAdTr16/HtWvX4ObmhoULF0IikVjcNiIiIiIiIiIiIqLahAFYpCUvrwQKhdKsbX193SGVOkGhUCIvr8TOLaPagt8bEsvc745U6gRfX/cqbFnVKyoqEh67ubmZ3F5zm8LCQoc5plQqRc+ePdGtWzeDwVcAkJubKzxOSUlBkyZN8M0332hNNI8YMQLjxo3Diy++iIyMDMTHx2PLli2YPHmyqLbZgrn9LQA4OUkgkUigUqmgVLKEIpmH3xsSw9LvjVTKqvbmqi0B1ImJifjvf/8LAHj99dfRsmVLUW2rSrzPJXvj94bE4D0u1Tbsb6kq8LtDYrDPpdqGfS7ZG783JIYl35va3OcyAIu0KBRKyOUKi98n5j1E/N6QWPzu1C4vvPACXnjhBQAVJY0yMzMRHR2NLVu2YN++fdi3bx8mTpyId999F1KpVOf9KpV2gMCiRYv0Zvlo1aoVPvroI7z22msAgG+++aZaA7DEBC1IJBJIpcwyQpbh94bE4PfG9mpDALVcLsecOXNQXl6Odu3a4eWXXxbVrqrm5WV+xksnJ4nw/9o6EES2x+8NicHvDdU2HFemqsbvDonB7w3VBuxzqSrxe0Ni1OXvDQOwiIiIHIynp6eQ9am0tBTOzsa789LSUuGxl5dXjT6mi4sLgoOD8fTTT2Po0KGYNWsWDhw4gM2bN8PV1RXvvPOOznu8vLwgk8kAAC1btkSvXr0M7n/gwIFo0KAB0tPTkZGRgeTkZISGhprdPltiBiyyN35vSAxmwCJjvv76ayQkJEAqleLjjz82eT1QUzDomaoKvzckBr83RERERERERLWDY4yWEhERkcDHx0cIhsrJyTEZ4KQOTlK/11GOKZVKMX/+fBw7dgz5+fnYsmULXnnlFfj6+mpt5+vrKxwvPDzc6D4lEgnCw8ORnp4OAEhNTa22AKy8vBKzVwH4+3tBKpVAqVQhO1tcFhSqe/i9ITEs+d44O0tRv75nFbXM8Tl6AHVycjK++OILAMD48ePRsWNHUW2qDgx6Jnvj94bEsOR7w4BnIiIiIiIiopqPAVhEREQOJiQkBHfu3AEA3LlzR2+5PU3qbYGKMnyOckwA8Pb2RkREBI4fP47S0lJcunQJffv21dqmVatWSE1NFbY3Z59qBQUFottGRERkCUcOoFYqlZgzZw7KysrQpEkTTJs2TVR7qguDnsne+L0hMcz93jDgmYiIiIiIiMgxMACLiIjIwbRt2xanTp0CAMTFxaFnz54Gt83MzERaWhoAICAgAP7+/g5zTDXNyeK8vDyd19u1a4fjx48DMC+gSnMbsRPaRERElnLkAOpr167h0qVLAIA2bdpgy5Ytet+fn5+v9XjdunXC81deeQWurq6WfgQiIiIiIiIiIiIih8AALCIiIgfTp08fbNy4EQBw8uRJvPrqqwa3PXHihPC4X79+DnVMtZs3bwqP9QVz9e3bFxs2bAAAJCQkGN2XSqXS2iYkJMTq9hEREZnDkQOoVap/SmMdP35cCHw2Ji8vD59++qnwfNy4cQzAIiIiIiIiIiIiolrLqbobQERERJbp3r07goKCAADnzp0zGHSkUCiwbds24fnQoUMd6pgAEBsbiytXrgAAXFxc0LFjR51tunXrJmT0uHnzJs6ePWtwf0ePHkV6ejoAoEWLFmjRooVV7SMiIjJXnz59hMcnT540uq0tA6ir+phEREREREREREREdREDsIiIiByMVCrFa6+9JjyfOXMmsrKydLZbsWIFrl69CqAiSElzElbTvn37EBYWhrCwMIwfP97ux0xMTMTWrVtRWFho5FNWBF+98cYbQtaNp59+Wm/JQIlEgrffflt4PnfuXK0SSmopKSn48MMPhefGsngRERHZmiMHULdv3x5JSUkm/zty5IjwniZNmmi95uvrK/pzEBEREREREREREdV0LEFIRETkgEaPHo3Dhw/jzJkzuH79OkaMGIHIyEi0bt0aMpkMBw8eRExMDADA19cXCxYsqDHHzM3NxeLFi7Fq1Sr06tULHTp0QOPGjeHl5YWSkhLcvXsXUVFRiIqKEoKv2rRpg5kzZxps27Bhw3D06FEcPHgQd+/exfDhwxEZGYkOHTpApVLh8uXL2Lt3L4qLiwEAAwYMwHPPPWf1OSEiIjKXOpj5o48+AlARzLx161YEBARobWdJAPXs2bMBVARaaQZQ2euYRERERERERERERKQfA7CIiIgckLOzMz777DPMmDEDx44dQ0ZGBtatW6ezXaNGjbB69Wq0adOmxh2zpKQEx44dw7Fjx4xuN2zYMLz//vvw8/Mzut2yZcvg7u6OvXv3orCwEFu2bNG73ciRI7FgwQJIJBKj+yMiIrI1Rw6gJiIiIiIiIiIiIiLDGIBFomTKinHxRjZKSuVwd3NGM38PBPp5VHeziIjqFG9vb2zYsAGHDx/G/v37ERcXh6ysLHh5eaF58+YYPHgwxowZo7dsX3Ue85FHHsF3332Hs2fPIi4uDjdu3MCDBw9QUlICV1dX+Pj4oFWrVujatSuGDRuG1q1bm9U2FxcXLF68GKNGjcK+ffsQHR2N9PR0AECDBg0QERGByMhIdOvWzSbngipkyoqRmCpDcakcHm7OaNfcj9cEREQG1IYA6tqM97lEREREtQPHKoiIiIjsg9dZxjEAiyySkpaH/adTEJecBZXGzyUAOoYGYETvEIQE+1ZX84iI6qRBgwZh0KBBot8/atQojBo1qsqO6eTkhM6dO6Nz586i3m/Kww8/jIcfftgu+6Z/8JqAiEgcRw2grs3YpxERERHVDryuIyIiIrIPU9dZ44c+hHYt/aureTWGRKVSqUxvRnVFTk4R5HKF3tdiktLx5YEEyBWGvzLOUgmmDA9HRFgDezWRHJy/vxekUicoFEpkZxdWd3PIgZj73XF2lqJ+fc8qbBmROMb63Mpq2t9OXhM4hpr2vSHHYMn3hn0uOQre55K9sc8lMXiPS7WNI9/jkuMw9t3hdR0Zwj7XMR05cgT79+9HfHw8MjIy4O3tjRYtWmDQoEEYM2YMvL297d6GWbNm4YcffhCev/HGG5g6dardj2sK+1yyN35vbKM2ZYoy7zrLCe+Oi0CP8EZ1elyZGbDILClpeSb/UQGAXKHClwcSMHucO1eSEBER1UK8JiAiotqCfRoRERFR7cDrOqLao7CwEDNmzMDRo0e1fp6dnY3s7GxcvHgR27dvx5o1a9ClSxe7tePEiRNawVdEROaqbRk5zb/OUuKT7TFY8tpjCPByqaLW1TxO1d0Acgz7T6eY/EelJleocOB0ip1bRERERNWB1wRERFRbsE8jIiIiqh3q+nVdpqwYp2PTcOj8bZyOTUOmrLi6m0QkikKhwLRp04Tgq8DAQPznP//BypUrMW/ePHTr1g0AkJaWhsmTJyM5Odku7SgoKMD8+fMBAJ6etTNDCxHZR0xSOpZsj0FspeArAFABiE3OwpLtMYhJSq+O5oli2XWWErsPX7Nzi2o2ZsAikzJlxYhLzrLoPbHJWcjMLUZgPcdMo0dERES6eE1ARES1Bfs0IiIiotqhLl/X1bYMG0R79uzBqVOnAACtW7fG1q1bERgYKLw+duxYLFu2DJs2bUJubi7mzZuHHTt22Lwdy5cvR1paGoKDg/HEE09g8+bNNj8GEdU+tTEjp5jrrJjEB8js38rhr7PEYgYsMikxVaYToWmKCkBSqswOrSEiIqLqwmsCIiKqLdinEREREdUOdfW6rjZm2KC6TaFQYO3atcLz5cuXawVfqc2YMQPt27cHAERHR+P06dM2bcfZs2fx3XffAQDmz58PLy8vm+6fiGofdSbKjT9fqZEZOa3JlCnqOkvl+NdZ1mAGLDKpuFQu6n1FIt9HRERENROvCYiIqLZgn0ZERERUO9TF67ramGGD6Pz588jIyAAAdO/eHeHh4Xq3k0qlGD9+PObMmQMAOHjwIHr37m2TNhQXF+ODDz6ASqXC0KFDMWDAAMTHx9tk30RU+xjKRGkue2fktEWmzLp4nWUtZsAikzzcxMXpeYp8HxEREdVMvCYgIqLagn0aERERUe1QF6/r9p9OqZEZNoiscfLkSeFx3759jW6r+brm+6y1cuVK3L59G35+fpg7d67N9ktEtY+xTJTmsmdGTltlyqyL11nWcphPfuTIEezfvx/x8fHIyMiAt7c3WrRogUGDBmHMmDHw9va2yXEUCgWSk5MRHx+PhIQExMfHIzExESUlJQCAZ555BkuXLjV7f+np6Vr7SkhIECK4ASApKckm7bands39IAEs+uMhARDW3M8+DSIiIqJqwWsCIiKqLdinEREREdUOde26LlNWjLjkLIveY+8MG0S2cO3aNeFxx44djW4bFBSE4OBgpKWlITMzE9nZ2fD397fq+BcuXMCOHTsAAO+9957e8odERID5mSjNkXRbhsc6BtugVf+wZaZMMddZAFAmV1j4jtqjxgdgFRYWYsaMGTh69KjWz7Ozs5GdnY2LFy9i+/btWLNmDbp06WL18d566y388ccfVu8HAI4ePYr//Oc/NtlXdQr080DH0ADEWnBR3yk0gBfzREREtUimrBiJqTIEB3jiXlaR2e/jNQEREdVEvM8lIiIiqh3q2nVdYqrM4klQdYaNwI6O+ZmpbkhJ+SdTW9OmTU1u37RpU6SlpQEAbty4YVUAVmlpKebMmQOlUolevXrh2WefFb0vIqr9LMlEacqf8fcxoGsTm5YKFpMpc1pkZ72vi7nOAoCdh6+jZSPfOlkCuUaXIFQoFJg2bZoQfBUYGIj//Oc/WLlyJebNm4du3boBANLS0jB58mQkJyfb5Jia/Pz80LJlS1H7UiqVWs9dXFzw0EMPiW1atRrROwTOUolZ2zpLJRjeO8TOLSIiIqKqkJKWhzV7LmPmhrPY9MtVi4KveE1AREQ1Ge9ziYiIiGqHunRdV1wqF/W+IpHvI6oq+fn5wuP69eub3N7Pz0/ve8X49NNPkZKSAnd3dyxYsMCqfRFR7SYmE6UxSqVtSwVbkylTn5S0PBSVWH4NUZdLINfoDFh79uzBqVOnAACtW7fG1q1btVI+jh07FsuWLcOmTZuQm5uLefPmCekhxerUqRNCQ0MRHh6O8PBwNGvWDPv27cPs2bMt3pe/vz9Gjx4t7CssLAyurq4ICwuzqo3VISTYF1OGh5tMVyd1kmDK8PA6Gc1IRERU28QkpYtOpess5TUBERHVbObe57JPIyIiIqrZ1Nd1G/YnQKGs3dd1Hm7ipvU8Rb6PqKoUFf2z6NPNzc3k9prbFBYWij5ubGwstmzZAgCYOnUqmjdvLnpfVcXX193sbZ2cJML//f297NUkqmX4vTHs4o1sizNRmhJ7IwtyiQQN6ntavS8x7VMBuJNVjLYh2qVXz8alYeW3FyBXKPW/0QRbfi5HUmOvuBQKBdauXSs8X758ud56uzNmzMDZs2dx9epVREdH4/Tp0+jdu7fo4/773/8W/d7KunXrJmTpqg0iwhpg9jh3HDidgssGIif7d22MiLAGVdwyIiIisjVr6ph3Dg3A8N4hDj2gSUREdYOp+1yJBHiiR3O0aOhTDa0jIiIiInNFhDXAuP8rx9bfkvS+3qGVP57p08rhxyraNfeDBLBoclUCIKy5n30aROTAysrKMHfuXCgUCoSHh2PixInV3SSzSKWWF7iSSCSQmpkpkEiN3xtdJXbIKKlSAVdSshEc6G31vsS2L/VBntbflmupOVYFXwG2/VyOpMYGYJ0/fx4ZGRkAgO7duyM8PFzvdlKpFOPHj8ecOXMAAAcPHrQqAIuMCwn2xbTIzkjLKsT7X0dBVekq/8a9PGTKihHox1riREREjsyaOuaG6oUTERHVROr73K2/JeLEpXtar6lUwM9/3sLBP2+hY2gARjDAmIiIiKpApqwYiakyFJfK4eHmjHbN/Tjmbob6Poazwkx8sj3q+5jOqlPTBfp5oGNoAGItKC/UKTQAgfX4/aGazdPTE7m5uQCA0tJSODsbn8IuLS0VHnt5icvQs379ely7dg1SqRQLFy6EVCoVtZ+qprAgIMLJSQKJRAKVSgWlkQyBRJr4vTHM3U4ZJQuKyiz6t22I2PYdOJWCsOb+6NUxGACw8/dEq4Kv1Ix9LjHBpI6gxgZgnTx5Unjct29fo9tqvq75PrKf4AAvNPL3QlqWdlrPlLR8zNxwlgPTREREDszWdcyJiIgcgYer4SESFYDY5CxcuZmNKcPDmfmZiIiI7CIlLQ/7T6cgLjlLK8ORBOCYuxlKygxnfSgqldeKACwAGNE7BFduZpu1cM5ZKsHw3iFV0Coi6/j4+AgBWDk5OSaDqmQymdZ7LZWYmIivvvoKAPDSSy8ZTARSE+XllUAuV5i1rb+/F6RSCZRKFbKzxZdqpLqF3xvDmvl7WJyJ0hwqhVLvubY0KF9s+5RKFVZ+G4PZ4yLg4+GCmMR0C/egn6HP5ewsRf1aWpqwxgZgXbt2TXjcsWNHo9sGBQUhODgYaWlpyMzMRHZ2Nvz9/e3dxDotJikd9w38weXANBERkWNLTJXZ/AaCiIioJktJy8Oh6Nsmt5MrVPjyQAJmj3Pn5CcRERHZVExSOr48kKA3qIZj7uYpKTMckFBsh5JB1SUk2BdThodj/Y/xMJaYxFkqwZTh4bxuJYcQEhKCO3fuAADu3LmDpk2bGt1evS0AtGrVyuLj7du3D+Xl5XBycoKLiwvWrVund7vz589rPVZvFxISgieffNLi4xKRYxOTidIUfaWCxQblW9M+uUKFLb9cRa/wRjaZH6qrJZBrbABWSkqK8NhUJ6veJi0tDQBw48YNBmDZUUpaHr48kKBTfrAyDkwTERE5JmsHJRVKJaROtTN9LBER1U77T6dAYWZafblChQOnU1hyl4iIiGxGPeZuKqMRx9yBB9lFuHw9A5lZhTqZIEqMjGfUpgAsAIgIa4CIsAY4byBDRefQAAxnxjRyIG3btsWpU6cAAHFxcejZs6fBbTMzM4U54YCAAFFzwqr/TXIqlUps2LDBrPdERUUhKioKAPD4448zAIuojrIkE6U5KpcKtjYo35r23c4oxO3jyRa/T5+6WgK5xgZg5efnC4/r169vcns/Pz+97yXL+PoarpGutu7HeLP/wcoVKvx67jben9jd2qZRLeHkJBH+7+8vri431U387hBVHQ8r65iXlSvh4cYALCIicgxiSu/GJmchM7e4Tg4kERERke3tP51i0Zi7owaDW1pGR1NKWh7W/RiPmKR0rcXhmpkg6koGLDUXZ/1jL62CfR3y+0F1W58+fbBx40YAwMmTJ/Hqq68a3PbEiRPC4379+tm9bUREmtSZKDfsTzB7MZ8hlUsF2yIoX92+dT/Gm0yoYy91uQRyjQ3AKioqEh67uZmuy625TWEha5GKJZUanyx9kF2EmCTLan7GJD5AVm4JGvjXzjqeJI5EIoFUKqnuZpAD4neHyP7aNfezqo55WbnC6iAuIiKiqiKm9K4KQFKqDIEdGYBFREREhpkTcFQXgsHFltFRMzcTRIeQAIP7KKqFAViGgsrkSmUVt4TIet27d0dQUBAyMjJw7tw5JCQkIDw8XGc7hUKBbdu2Cc+HDh0q6nhz587F3LlzTW73+eefY+3atQCAN954A1OnThV1PCKqXSLCGuClJxXYePCq6H1InXRLBdsqKD8irAHCW/ojPiVbdPvEcpY6Ycrwh+psFk7OjJEWhcL4hfnl6xkWR0qqVBXvG/hwMytaRrWFk5MEEokEKpUKSiujgqluseS7YyqYlIiMyy8uh7enC/KLykW9v7Tc8IpTIiKimkZsNoTaOIlHREREtmFJwFFtDwa3toyOJZkgLidnGny9NmbAMvSZjGUCI6qppFIpXnvtNXz00UcAgJkzZ2Lr1q0ICNAOrFyxYgWuXq0IeOjWrRv69Omjd3/79u3D7NmzAVQEd2kGbRER2YKfj+kkQsb8X/dmWtc+tg7K9/F0sap9lpJIgIfbN8Tox9siwKtqj12T1NgALE9PT+Tm5gIASktL4exsvKmlpaXCYy8vlqYSKy+vBHK54YvzzCxx2cUysguRnc3MZAT4+3tBKpVAqVTxO0EWMfe74+wsRf36zLhHJJaxgVFzlZVzpSURETkOsVkbPZntkYiIiPSwNOCoNgeD26KMjiWZIIwtHnekACxzSzUa+g4wAIsc1ejRo3H48GGcOXMG169fx4gRIxAZGYnWrVtDJpPh4MGDiImJAQD4+vpiwYIF1dxiIqrLikusu7YoLtXur20dlF/f27oAMXM5SYBhj7bEsL6hCA70hkKhrNMxADV2tNDHx0cIwMrJyTEZVCWTybTeS/bBgWkiIqLay9yBUVNKjQRzExER1TRiSu9KAIQ197NPg4iIiMhhiQk4qs1j7taW0RGTCcKQ4pKaP1ZhaanGIgMTvyUOFGxGpMnZ2RmfffYZZsyYgWPHjiEjIwPr1q3T2a5Ro0ZYvXo12rRpUw2tJCKqYG1w9+30fJvsz1BAtlMVVAtylkqERQX+TI4BoAYHYIWEhODOnTsAgDt37qBp06ZGt1dvCwCtWrWya9vqMg5MExER1V6WDIwaU8aVlkRE5EAC/TzQMTQAsRZM7nUKDdCb3p2IiIjqNjEBR2MHt62VY+62KKMjJhOEITU9Y5iYUo2GJmrL5EoolEpInew/8Upka97e3tiwYQMOHz6M/fv3Iy4uDllZWfDy8kLz5s0xePBgjBkzhsk4iKjaWRuAdet+PtJlRWjgVxG4ZOug/FI7ztNIUDE2NrxScDjV4ACstm3b4tSpUwCAuLg49OzZ0+C2mZmZSEtLAwAEBATA39+/StpYF3FgmoiIqHay5arSUjlLEBIRkWMZ0TsEV25mmzVh6iyVYHjvkCpoFRERETkSsQFHY/8PtXLM3RZldGxZNrAmlyAUkzmtZSMfndJFmkrLFPB0ZwAWOa5BgwZh0KBBot8/atQojBo1yup2TJ06FVOnTrV6P0RU+1gb3C1XqDB7w19ClktbJ8IpLbfPtc+oviHoGd6oxl+LVpcae/XVp08f4fHJkyeNbnvixAnhcb9+/ezWJqowoncInKUSs7blwDQREZFjsOWq0rJyZsAiIiLHEhLsiynDw+FsIj27OrU6V/cRERFRZdYEHNXGMXdblNERmwlCn5ocgCUmc1pZuRJKleH3GAvOIiIiIuvZIrumOsvlku0xuPUgHx1DAyx6v7Gg/BI7ZMByljrhyZ4tGHxlRI0NwOrevTuCgoIAAOfOnUNCQoLe7RQKBbZt2yY8Hzp0aJW0ry7jwDQREVHtY8uByFIGYBERkQOKCGuAJa89hpDG+u9hQxv7Yva4CKHkCxEREZEmawKO/hlzNx6E5Uhj7rYoo6POBGELNTUAS2zmtDsZBUa3KSmrmZ+XiIiotrDltYU6y+Uj7RrYLCjfHgFYLs4SpD4wfg1S19XYACypVIrXXntNeD5z5kxkZelehK5YsQJXr14FAHTr1k0rc5amffv2ISwsDGFhYRg/frx9Gl2HqAemH3mood7Xfb1cODBNRETkQGy5qrSsnCUIiYjIMbVp5ofXnu2s97XenYIdYrKTiIiIqoe1AUcRYQ0we1yEwe1aN6nnUGPuYoKnJACC/NxxOjYNh87fRmKqzGBZHUvZIkuFPYjNnHb1Vo7Rbewx6UpERET/sHW2SblChejEdEwZHg4nExdR5gTll9rhWqC4VIEl22MQk5Ru833XFrababOD0aNH4/Dhwzhz5gyuX7+OESNGIDIyEq1bt4ZMJsPBgwcRExMDAPD19cWCBQusPubt27fx/fffa/0sKSlJeHzlyhWsXr1a6/WePXuiV69eeve3adMm5ObmGjxe5X3Vq1cPkyZNsrTZ1aJNMz/Me7knpq44iptp+Vqv+Xm7cWCaiIjIgYipL25ImZyDfERE5LiCA730/jw9p7iKW0JERESORMx9tQTQCjAKCfaFs1Sitxzds/1aOdSYe6CfBzqGBiDWguxO3p4uWLbjos45tMV4RU3NgCW2XQVF5UZfZwAWERHVRpmyYiSmylBcKoeHmzPaNfdDoF/1lMOzx7VFbHIWxv5fW/R4qCHOJjzQu03n0AAM7x1i8rrQXtcC6mxds8e5O9S1aVWp0QFYzs7O+OyzzzBjxgwcO3YMGRkZWLdunc52jRo1wurVq9GmTRurj3nv3j1s2LDB4OtJSUlaAVnqdhoKwNq+fTvu3r1rcH+Vj9WkSROHCcBSCw701gnAys4rrabWEBERkRhiBkYNYQYsIiJyZL5ervB0d0ZRifZA2gMGYBEREZERYu6rO4UGILBe5UlD/eFGcqUtlkxVrRG9Q3DlZrbegDJ98g0EFZnzbkOBa2rFpQqoVCpIJLYqamgbYjOnSUzUt6mpAWdERERipKTlYf/pFMQlZ2ldF0gAdAwNwAgzApJszR7ZNVUAklJlcHWR6n09yM8d0yL1Z26vrKTcfsHYcoUKB06nmN2WuqRGB2ABgLe3NzZs2IDDhw9j//79iIuLQ1ZWFry8vNC8eXMMHjwYY8aMgY+PT3U3tc4KrOeu87OC4nKUlivgZuCPAxEREdU8lg6MGlJqxwt7IiIie5NIJGgc6IW/72hns07PKaqmFhERUU1x5MgR7N+/H/Hx8cjIyIC3tzdatGiBQYMGYcyYMfD29rbp8e7cuYPvv/8eUVFRuHHjBgoKCuDq6gp/f3+0b98egwcPxtChQ+Hi4mLT41IFSzIsqLdt5O+J+JRsKM0IlnKWSjC8d4jOzw3FB8nljrfYKSTYF1OGh+PLAwlWjzUY4+ftiheHhOGzvXEGt1GqVCgrV8LNtWbNWYjNnKZvXkYTM2AREVFtEZOUbvBaQoWKrFFXbmZjyvDwKi3VXFxin2DnolI5Cg3sW2FBQH5pmX2DsWOTs5CZW6xnMUHdVuMDsNQGDRqEQYMGiX7/qFGjMGrUKJPb9ejRQyfDlTWOHj1qs33VVEEGbjqz80oQHKC/dAMRERHVPLYaGC1jABYRETm44AB9AVjFUKpUcKphWROIiMj+CgsLMWPGDJ2x3uzsbGRnZ+PixYvYvn071qxZgy5dutjkmJs3b8aqVatQVlam9XO5XI6ioiLcuXMHhw4dwvr16/HZZ5+hbdu2NjkuWZZhwdC2pjhLJZgyPFxvpgZDVxr2DGCyp4iwBpg9zh0Lt0brfd3TzdnqDBJNg7zRoL6nye2KSuU1LgBLbOY0qdR4CqwSO0+6EhERVYWUtDyz5iuqoyyePTJgAf+7NirRnxW01IIAa3sHY6uzdQV2ZACWJocJwKKaK7C+gQCs/FIGYBERETkY9cDoom+iIba6AUsQEhGRowsO1L2XLZMrIcsvhb+v8WwDRERUuygUCkybNg2nTp0CAAQGBiIyMhKtW7dGbm4ufv75Z1y4cAFpaWmYPHkydu7cidDQUKuOuX37dixdulR43rVrVwwcOBDBwcEoKCjA33//jX379qGoqAgpKSl48cUX8dNPPyEoKMiq45JlGRYAiFrAFN6yPkb1CzU8OWggAkuhdNx7bWMTobaYvCwoLjdrkrG4VI76Pm5WH8/WLMlIrs6clpiaY3S7YmbAIiKiWmD/6RSzr7WqsiyeSqWyS7lfCYCw5n44EnNH7+vmVh9RqVQWBWuJZa8gNEfGACyymqG0ctm5JVXcEiIiIrKFZg28RQdfASxBSEREjk9fABYAXL8tQ4/wRlXcGiIiqk579uwRgq9at26NrVu3IjAwUHh97NixWLZsGTZt2oTc3FzMmzcPO3bsEH28kpISrFq1Snj+8ccfIzIyUme7119/HRMmTMC1a9eQk5ODr7/+GrNnzxZ9XLIsw8KG/fEAJBaVgVF76cn2CDBSPk5iIAJLrnDcACx7qwjAMj0BaI+JUlswNyO5Zua0i9czjO6TGbCIiMjRZcqKEWdBhkig6srilcuVoq4DTekUGoDAeh4oMlCCUK5QQa5QwtlEJswyudKi7Kxiebox3Kgy478ZIjMEGciAlZXHACwiIiJHZO2qBZYgJCIiR2dogvPLn65gzZ7LSEnLq+IWERFRdVAoFFi7dq3wfPny5VrBV2ozZsxA+/btAQDR0dE4ffq06GNeuHABhYWFAICOHTvqDb4CAH9/f0yfPl14fv78edHHpAqWZFhQKCF60q1MbuKe2UAGLEctQVgVCkvMz4BVU1VkJI+AoWrXEgkwc2w3RIQ1AAAUlxj/vPYuO0RERGRviakyi4OI1GXx7M0e1xTqLJeA8TkacxbAG8p+FWhkEYCl1Nm6SBsDsMhq9bzcIHXSvSvIzi+thtYQERGRtQytrjBXmZyrcomIyHH9GXsPX/4QZ/D12OQsLNkeg5ik9CpsFRERVYfz588jI6Miy0z37t0RHh6udzupVIrx48cLzw8ePCj6mFlZ/6zyb9GihdFtNV8vKioSfUwSl2FBrLJy4/fMBuJvoGAGLIOKSxUoLC43uV1NL5PTNMgLKgMzzSoV4Of1T/lEU5+lpIZ/ViIiIlPEBjlVRX9vyTGcnCRwlhq6wqugmeVSpVIZnaMxp7SgoUyYjQ1kfBdDna2LtDEAi6zm5CSBv69u3fRsZsAiIiJySIUlpgctjWEJQiIiclTXb8vwyfYYs0oPfXkggZmwiIhquZMnTwqP+/bta3Rbzdc132epgIAA4fHNmzeNbqv5eps2bUQfk8RlWBDL1D2zoQxI5Q6cAUtphxI9lZlTkaMmZ8ACgEITC+LuZ/8TaGnqszADFhEROToPkeXtqqIsniUBWF7uzpg9LgKdQwMMbjN1VEchy2VJmQJKQxHZMK+PN7RNcICnyfeaQzNbF2ljABbZRICvbrq6rDxmwCIiInJEVmfAYgAWERE5qN2HkgyWH6xMrlDhwOkUO7eIiIiq07Vr14THHTt2NLptUFAQgoODAQCZmZnIzs4WdcyIiAjUr18fABAfH489e/bo3S47OxurVq0CADg5OeGll14SdTyqUJWBOSZLEBrIgeXIGbCMBZ01DrTNRGBmrjkBWDV7vMJUAFZaVqHwmAFYRERU27Vr7mcwM6ghVVUWz5JrR3dXKUKCfTEtsjMi+4fq3cbVRSo8NjU/Y1YJQgPbBAdYnwHLSfJPti7SZf/wP6oT6vvoBmDl5JVApVJBYmjJDhEREdVI1gdgOe6gMBER1V2ZsmKLywrGJmchM7eYKdeJiGqplJR/Am2bNm1qcvumTZsiLS0NAHDjxg34+/tbfEw3Nzd89NFHeOeddyCXy/H+++9j3759GDhwIIKDg1FQUIDr16/jhx9+QGFhITw9PbFo0SJERERYfCz6h9gMC2KILUFobpB4TWQsGKh98/pIzyk2mYHUFHMCsGp6CcIiExnJ0yzIgFXTs30RERGZEujngY6hAYi1oEx0VZXFsySo28P1n+vMNk399G7zIKcYYc0rFmGYqlBiTQaskjIFnJwApRWXlcMebSFk6yJdDMAimwiop1uCsEyuxK0H+WjZiNGPREREjsTUgJ8pLEFIRESOKDFVBiMZ3vVSAUhKlSGwIwOwiIhqo/z8fOGxOiuVMX5+fnrfa6khQ4Zg8+bNWLBgAa5fv44LFy7gwoULWtu4uLjg3//+N8aMGSNk3qpOvnoqJBji5CQR/u/vb/0qfFvo0akxNv961eJrATFc3JyNfm6Jk/4QLBdX4++ryUqMBFc1CPTG9H9FYOW3xstAO0ud4OvlimwDpQZz8k1X5FBJas53Th/pgwKjr2fllQrtL5UbnzktVyir5LM+yC5C/I0sFJWUw9PdBR1aBaChv6fBn1eHmvg3h4iITEtJy7NosXhVlsWzKAOWRqB/Q3/940cpaXlwkkhQXCqHrMD4NU2pGQFYhrbZc+xvq4KvJAB6d6r+e4+ajAFYZBOGargv2BKNTqEBGNE7hGnoiIiIHISplPemmC6nQEREVPOIzRJQ0zMpEBGReEVF/2SbcXPTXYBameY2hYWFRrY07ZFHHsEHH3yApUuX4sqVKzqvl5eX49tvv0VxcTHeeecduLubHwBlD1Kpk8XvkUgkkEprRvWExkHeiGjXENFXH9j9WOVyldHzZSD+Cgql8ffVZGVGgoXkCiV6d2kChVKFFTti9G7zSPuGGPN/YVi+LdrgfjJkxSbbUVwqr9Hn0NR1ZfJdGTJzS9DQ3xOFxcYXzxWXKoTP+iC7CHF/ZwrBUB1bB1odDHUtNQc7/0hCTOIDncDFet6uyCsog+aPJRIgol1DvPB/YWjb3HRAqz3UpL85RERkXExSOr48kGB2hkyJBHjh8TZVFo9gSWCYh+s/5QW9PVzg5e6sMwdz4tI9nLh0z6z9lZSbPrahDFgKAzEd5qqqDGOOjAFYZLWzcWn4/dxtg6/HJmfhys1sTBkeznR0REREDsDaiWSWICQiIkcktvSQZxWWLCIiorohOzsbb731FqKiolCvXj3Mnj0bjz/+OBo1aoSSkhLEx8dj8+bNOHHiBLZu3YqLFy/iv//9r1lZuuxFYUF5PCcnCSQSCVQqlcGFvdXh+UFtcelahlml/qT/i5ISM4lVUlpu0flSKytXiHpfTWCslI76cxkLCHprTFd4ebig3ETWJ1MKistq9DnMKywz+nphsRyvLj6EbmENTJYnKiopR+LNbOw+lISYpHStICmJBIgIa4DnB4ehTTM/i9t5Ni4NK7+9YPDfSm6B7udQqYDoqw9w6VoGpv+rG3p1rLrsGZb8zanJAXpERHVFSlqeRcFXQEU/s/2Pa7icnFUliWEsmUPRHG+SSCRo6O+JG/fyRB/bnAxYJWW2XyxYlRnGHBlHCckq11JzsPLbCyZvNOUKFb48kIDZ49yZCYuIiKiGs7YEoUKpglyhhHMNGLTKlBUjMVWG4lI5PNyc0a65HwL9uEKDiIh0tWvuB4kEFpUekgAIa+5nryYREVE18/T0RG5uLgCgtLQUzs7Gh9NLS/8pF+LlJa7MVXFxMcaOHYsbN26gXr16+O6779CyZUvhdRcXF/Tq1Qu9evXCggULsGPHDsTGxuLjjz/GypUrRR3TFvLySiA3Mxuyv78XpFIJlEoVsrOtyxRmSwFeLpgy/CFs2J9gdLzbWSrBlOHhAGDx5CAA5OQWG/3choJaCorKatT5skRGpuF2FxRUfK7MLMPl9+7dz0NAPXeUW5lxOy+/tEafw8ws021TqYCYxHST25WUKTB73Wm930+VCohOTMel6xkWL5xPScszWS7SGLlCiZXfxmD2uIgqmysy92+Os7MU9etXT5lEIiL6x/7TKaL6GRWqLjGMRSUINTJgAUDD+vYPwCott22VEvX1L+M8TKv+WTFyaDv/SDJrRRBQEYR14HSKnVtERERE1rK2BCFQsYK1OqWk5WHNnsuYueEsNv1yFTuPXMemX65i5oazWLPnMlLSxN/gEBFR7RTo52Hx4Jy3pwvyi6wLXCYioprLx8dHeJyTk2Nye5lMpve9lvj2229x48YNAMCkSZO0gq8qmzFjBnx9KyZBfvnlF2RkZIg6Jv0jIqwBXni8jcHXG/l7Yva4CESENUBEWAPMHheBhv6WLfIxlTVaYWDCsSZnbjLF2CRguULxv/8b/nzqSU5rM2DV9NLRtm6fqclr9cJ5S8ZIxE6KVz4u54qIiEifTFkx4pKzrNqHmP7NUhYFYFXKnO7qYl2IjjnBVYZKEFpKAqBzaIBw/UumMQCLRHuQXYSYxAcWvSc2OQuZuaZrsRMREVH1saR+uSGl1ViGMCYpHUu2xyA2OQuVhwTVq2CWbI9BTJLpFaNERFS3PD84zKIMjvlF5exTiIhqsZCQf0ps3Llzx+T2mtu0atVK1DGPHz8uPH7ssceMbuvp6YmuXbsCAJRKJeLi4kQdk7T5eLkafC28pb/Wyv+QYF/0aN/Qov2bCiIyFNxibdBLdTKWqaFcXvG5yo2MI6gDk6w9B5ZMllYHU2UF7cGSYChbTIqrca6IiIj0SUyV6Yzpi2HvYF9Lrik8NDJgxSSl4+Tle1Ydu6SKArB6PNQQy/7TC9MiOzPzlQUYgEWixd/Isqg0A1Ax6ZmUKrNHc4iIiMhGbBGAVWZlWQCxzK0PXxWrYIiIyPG0aeaHd8dFWBSExT6FiKj2atu2rfDYVHBTZmYm0tLSAAABAQHw9/cXdcz09H+Ces3JoqW5TVFRkahjkraCYsNBMLKCUp2fKS0cJC81cr+sUqkM7q9yJYpMWTFOx6bh0PnbOB2bhkxZzQ1mMZapQf25TGXAUqlUZlfjMLwf3XbUpPOYk6/7/aoK5gZD2WpSHOBcERER6WfLYGl7BvuKyYClnruwNL6iMrNKENogAKtDiD8C61mW6ZUA40XriYwoErkao6an+SUiIqrrbLHi0hYX+GJYkgpfvQpmWmRnO7eKiIgcyaOdGmPJa+5YsPEvs8sLsk8hIqqd+vTpg40bNwIATp48iVdffdXgtidOnBAe9+vXT/Qxvby8hMdpaWlGSxACwL17/6yg9/PzE31c+kehkQCsHD0BWAqlZbNoZUaCkYztS32vm5KWh/2nUxBXKeuzBEDH0ACM6B1S47IUlJQZnhNQZwQzlhmsuFRukwxg6kAuiURSI89jVl5JlR5PTR0MFdjR+CSrrTOIca6IiIgq83CzXfiKuf2bGJYsYnf/XwYsW5TxBcybezEnS5YxEgBhzf2s2kddxQxYJJqnu4u499nwDycRERHZni0G1MpMlFSwBzGp8JnynoiI9PH1ckWBmcFXauxTiIhqn+7duyMoKAgAcO7cOSQkJOjdTqFQYNu2bcLzoUOHij6mZtatn376yei2t27dQmxsLADAyckJHTp0EH1c+oelGbBUFt7+lhkptacwMiknVygRk5SOJdtjEFspaAiomGSMTc6qkeWRzcmAZWwcoSIAy/pxBoVShTJ5zT2PJXoydFUVc4KhbDkpDnCuiIiIdLVr7geJDfdnr2BfS/br4eps0zK+5pUgtO5zdwoNYPYrkRiARaJ1aBUAiYV/ARktSUREVLMpVSrblCC0coWFGGJS4TPlPRER6RN/Q3cyzhT2KUREtY9UKsVrr70mPJ85cyaysnQnTlasWIGrV68CALp164Y+ffro3d++ffsQFhaGsLAwjB8/Xu82w4YN09p+z549erfLyMjAW2+9Bbm84v6tf//+zIBlI8YyYOUWlOmUCMzOtyxrkcxImTm50nCQUUFRGb48kGAyc0JNLI9cYiRTg1kZsMoUNgnAAoCk1Bybn0dblTG01WcUw1QwVKasGPlFZTY7HueKiIhIn0A/D3QMDbDZ/uwV7GvJInYPN2eblvHNLywzed1hTYUSZ6kEw3uHWNPEOo3h5SRaQ39PRLRriOirD8x+D6MliYiIaraSUrneGwEPNymKLViJaWx1q72IzdzFlPdERFRZkchyvOxTiIhqn9GjR+Pw4cM4c+YMrl+/jhEjRiAyMhKtW7eGTCbDwYMHERMTAwDw9fXFggULrDpe7969MWTIEPz+++9QqVR4//33ceDAATz++ONo2LAhSktLER8fj/379yMvryIwxM/PD7NmzbL6s1IFYxmwFEoV8ovKUc/LVfhZ8j3LAp3SsosM799IUNCDnGKzy9bUtPLIxiYB1UFH5XLD29iqBCEAHDhz06LzuPHnK3iiRwu0a+6HQD/tuQ1blzEsr6YALGPBUIY+o7U4V0RERIaM6B2CKzezre777RXsq1KpLJorcXeTojjTduNF1+7k4tqdXOG5vusOfddewQGeyJAZv550lkowZXh4jStn7UgYgEVWeeH/wnDpWoZZKzMYLUlERFTzGcp+5efthuJSw4PElRkrqWAvYlPhM+U9ERFV5unuIu597FOIiGodZ2dnfPbZZ5gxYwaOHTuGjIwMrFu3Tme7Ro0aYfXq1WjTpo3Vx1yxYgW8vb2xd+9eABXlD8+dO6d325CQEKxevRotWrSw+rhUodBEVmhZfqkQgJUpK0ZWrmUZsAqKy5GZW6w3+EShNDwhZqpdlanLI1c+TqasGImpMhSXyuHh5qw3sMjWjC3SKleYzoBVVCq3WXDSDQsD5u5lFWHTL1d1JjdjktINZtJSlzFMSMlCvy5N0LC+p8lzLVcoq2UsBTAcDGXsM1qDc0VERGRMSLAvpgwPxxc/xFu1H3sF+5aVK3Uyohrj4eps8zK+mtTXHVduZmPK8HBEhDXQm300yM8Drwx7CAdOp+iUYZag4nwNtzB4nHRxZJCs0rZ5fUz/Vzes/DaG0ZJERES1gKEBXT9vN6RlWRKAVfUZsNT14S0ZFmTKeyIi0qdDqwD2KUREJPD29saGDRtw+PBh7N+/H3FxccjKyoKXlxeaN2+OwYMHY8yYMfDx8bHJ8VxdXbF48WKMHz8e+/btw4ULF3Dnzh0UFBTAxcUF/v7+6NChAx5//HE8+eSTcHV1Nb1TMpuxDFgAkFNQihao+F0niiw/nJQqQ2BHPQFYNsyApC6PrD6OrbM1WcJYBiyzShCWyiE38npV0JzcHNknBD+eSjEZmKRQAkcv3BWeGzvX1ZVJ1VAwVEpant2Cr8ydK1IHC2bIiiErKEV9bzcE+nlUSdAgERFVr/o+bla9357Bvpb22e6uUlFzF5ZSl0+ePc4dJXrmZ9xcpAgJ9sW0yM7IlBUj6bYMRaVyeLo5I6y5HzNT2ggDsMhqvToGY/a4CBw4nYLLyVk6r0udJJg9LoLBV0RERA7AUMklP2/LbniqowShuj58rJ7rEUOY8p6IiPRp6O/JPoWIiHQMGjQIgwYNEv3+UaNGYdSoUWZv3759e8ydO1f08UgcUwFYsoJS4XGxyKAZQxN3xjJgWXMcW2drspSxMQJ1dY0yYwFYJXKzqnBUBblChb3Hb4iaQNWXoUKt2MIMZ+aQSABjCTqMBUPtP206wMxSnc3MrKEOFjR2Ld7JzkGDRERUPUz1AS0b+eB2eoHRayZ7J4axNADLw60iA5al40xiqMtQ6wt+d3eVCo8D/TwYzGwnDMAim1BHS2759SpOXk7Tek2hVCGgnns1tYyIiKjusEUZAUM3D34+lq2oNjZwak+W1IdnynsiIjKGfQoREVHdo1SpUGhgYZKaLP+fACyx5WQMlS22dZCRp5uz2ZmMLMnWZCl9ZXDU1O0ymQHLxsFA1rC2JZoZKtTn1tISk+Zo2cgHKWn5el+r5+WKN5/rpPd3mykrRpwdJoinPtcJThKJcAx9Y1jmlj00FMhGRESOy5w+4HZ6AZ7pG4LLf2fh+p1cndebBnlh4tD2dg3QtTQA3+1/gU+WjDNZo3J5wcrtIPtiABbZVGjjejoBWACQllkI3+ZMhU1ERGQPtiwjYKwEoSWqowQh8E99+PX7E6CsxlUwRETk+NR9iqnBP/YpREREtUdJqdxoxiBAOwNWO5Hlhw2VLbZlBix1eeTtf1wTNdFnLFuTpYxlwDKnBGFRqaLGZMCyFXWGimmRnQEYzkhuDWPZ3Px83AxevyamyuxSIqmwuByZuSUGx7BCm9RDSlqe2f8O9AWyERGRYzI/YFyFH0+l4M3nOmHV7ss6r3duHWj3PsHSACx18LG540zWMrRndwZgVQmn6m4A1S6NA730/vxeZmEVt4SIiKhuiElKx5LtMXpXNagHS5dsj0FMUrpZ+ysyEIBV3+IArOobGI0Ia4CRRrKQdA4NwOxxEVwhSUREJkWENcDscRHoHBqg93VvDxf2KURERLWIqfKDAJCTXyY8DvTzQD1vyxYeSwCDZYtNldOxRKfQAEAFqzMZqYNcUtLyRO/DaACWQh2AZXib4lK5sF1tEpuchczcYgD2yYCVmVti8LXsPMOviS2tacrZhAdGx7D+vptrcRCiOpCNiIx7kF2E07FpOHT+Nk7HpiFTVlzdTSLSYknpW7lChSPRd+DqrBvqkmWkf7OFlLQ87D2RbNF71uy5LFxHaY4zWXZlZz13V+Zmqgo8y2RTwQH6A7CikzLQsVUAa4kSERHZkLmrQixZEWio1EJ9H8sCsIwNrlYFf1/97W0c6CmsLiUiIjJHSLAvpkV2xsKt53VKuHh7uHC1PRERUS1SUGw68EQzAxYANPb3RG5BmYGtdakAKJRKSJ10Jw0VRu7vXZydACgtKo9sq0xGlbM1WarUWAlCMzJglZTJoaiFAVgqAEmpMgR29LBLBixj2dzyi8pRWq6Am4tuNgxTZTjF+u7Y30azlYulDmQzFNhIVJddvy3D7sPXEJP4QOtvgi3LzBJZS0zp29jkLAT6uSNDph1wlW0k+FgMzZK5D3KKcOLSPYuDhStnFFWPM2XKipF0W4aiUjlk+aX4NSrVpm2vTF+fT7bHACyyKU93Z/h4uiC/SPsC/eqtHMzccJadORERkQ1ZuirEnMHSIj2rHJ0kEvh4uljUtuoqQahm6Lw46xngJiIiMkcjf0+dAKzs/BKoVCpIJFW9bpGIiIjswZwMWJUDsNzdLJ9mKStXwsNN9/7UWJk9lQqYMjwc639MgNJIZI1meeS/7+Ra3DZDrAlyKTESgKVQqqBUqVBmJACruFRhNEDLkanHYfSNx9hbdl6JzqL6mKR0HDx70y7Hs0fwFaAdyAZoT5Z7uDmjR6fGaBzkbZdjE9VkMUnp+PLAFb19iy3LzBJZS0zAuAqAq7NuQJGtMmClpOXpLZkrlr5F8oF+HkLymuy8ErsHYLEEYdVgABbZVExSOgqK9N+ksjMnIiKyHbGrQkwNluorQejp7mzx6ojSah4Yra0Ds0REVH38fd11flZWrkRhiRzeHpYFKhMREVHNVGhGAFZ+UTnSsgqFwBUxQSVlciU89CRuNpZRQa5QISKsAfp1ycaxi/f0biN1kmDW2G5o1bgeAMBDRHCYIZWDXMwlVyhNZoqQy5VGSwwqVSq7lOirCTz/9zuqjs+XlasdgKXOtO6IycaKSuUGJ8s3/3oVEe0a4vlBbRHgxet2qhvsUTmByF7Elr51d9Ods8jJLzOYaVStcqBuu+Z+WlW8KoIXTf/7sZSxRfJ+Pm5wcXayybxGaGNfJN/TLR3NAKyqwQAsshl1Z27qTxE7cyIiIuuJXRViarBUX5p5T3dnuFoYgFX9GbD036jYZ60lERHVBfoCsICKiSsGYBEREdUOBWaWXnv/qyih2oO+2CJfL1c81asFbtzLQ9SVBzqvG7pnVigNT7opFEqoVCqj9+cKpQrXbsvg6+mKQD8PtGvuBwlsdy8sJkuTsexXauUKpckJx/wi88s8VgVbnFcJgLDmfgCgtwShRGK8jKC1NLOEZMqKseWXRJtPNleV9Owi7Dn2t972q1RA9NUHuHQtA1OGP8TkAFQn2KNyApG9iA0Yr+elG82uVKlw424eHuQU6wRYGQrU1SzJCcAuwVdqhhbJO0kk8PN21SmpaClnqQSPtG+gNwDLjQFYVYIBWGQz7MyJiIiqjthVIaYGS4v1ZcByc4aLs2Wl+2pqABYREZFYAb560lSgIk18i0Y+VdwaIiIisgdzMmAB2tUegv09dV739nDB4Ieb4cSlu5YFYBkZX1ehYlLRVJnE744lY8+xZGEisWNoAGItzKBtiKeocoumxwfkctMBWOk5xRYf216cpRKM7NMKe08kWxUg1Sk0QJiA1ZcBy9PdGaVlCrtNAmfllQiT0bb6jlSXYxfv6g2G1CRXKJkcgOoEe1VOILIXMQHjEgBtm9bDhWsZOq8t2XFBZ9vmDb1xJ6NQb1ZOzeu6JoHedg1GNrRIPiYpHZm51gdfTRkebjDzqLsLQ4OqgmUzaUQGWNOZExERkeXErgoxNFiaKSvG6dg0pMt0+2Yvd2c4S50gdZKYfZzS8uoNgDJ0k2TPlaNERFS7GcyAlWfdABkRERHVHKaCmyqTK1S4k1Go83MnScX9s6FsVWUGgo1MlupTqFBQZLqN6onEJdtj0LZZPThLzb+fN0QzW5MlzM+AZXy7u5m659kaloxxaFJPbg7t2QKtguuJPr6zVILh/8u0AQBFegKw6nm5YcrwcEjtNJN37bYMS7bHOHzwFQCTwVdq6uQARLWZNZUTiKpDoJ8HOoYGWPSeTqEBaGlmMK0KwK0HBWZdZ916kG9RO8SovEheqDJmxdyFr5cLZo+LQERYA4PXXixBWDUYgEU2wc6ciIioaqlXhVhC32BpSloe1uy5jJkbzmLTL1eRr2cg19O9oqySq4v5l441NwMWI7CIiEicAAMBWNn5pVXcEiIiIrIXSwOwAP13mU7/u312dTYQgGXgntlUNme5QmlRG+UKFX48lYKRfVpBZLyRQDNbkyVKzRgfKJcrDQalqekr0SdW59AAvPRkO4vf1zjQS5jcBIDsfHGB+OogLs0sTPoCsDzdnBER1gBzxj8MH0/bl7y+fjvXYUsOWoPJAai2s1flBCJ7GtE7xOyAcXUQs6Fxmpqu8iJ5S6qMGdKgvqdwXVFqIACLJQirBgOwyCbYmRMREVUtsatCNAdLY5LShZWOxi7vr97KQUpansGBY33MGWC1J0OlC+resCIREdmKh5szPNx0+8JsZsAiIiKqNfSVgRNDnV3JzcBCJmsyYOWLyNJ1/bYM7VrUt+h9mipna7KEORmw5AoV5CYCsMpslGm7kb8npkV2Rn0f/eWljenSOlCY3CwsKUeOiED80Ca+WkFcaoV6Asw83SsmaEOCffFWZGfRWbsMqatjJEwOQLWdrSsnEFWFkGBfTBkebjIISzOI2c/HVcg66igqL5IXU2VMH80y2iVl+q9nGYBVNRiARTbBzpyIiKjqiVkVoqZOa2vOyoqC4nIs3hYDlQU5cNWDyerShofO38bp2DRk6ilxaA+GVg0rzc1JT0REpIe+MoQsQUhERFR7iMmApY/JEoQGFi2ZCsBSKJTIKyyzuD2xyVnILbD8fYD+bE2WMJSFQVO5XGlwIZWwjYnsYOZS/m9sQ1/GKVNupxcIjxNSskUd/+GwBnrPpb72eLn/M38SEuyLf48wPTFN5mFyAKrNbFU5gaiqRYQ1wOxxEQYD2DuHBmgFMUudnODrZfsMkfZUeZG8mCpj+mhew5YYuM70YABWlWD0C9mEujO35A8EO3MiIiLrqFeFmAqk0jdYamlaW4VShTw95QkNKSmVY82ey4irlF1LAqBjaABG9A4RPXhrDkMBWKYGdImIiIwJ8HXH3YxCrZ9l57EEIRERUW1RaKsALCd1AJaBDFgGsjkpTAQZlZYrzMooVZkKQHpOkcXvC29ZH6P6hVp1/15SbjrQpVyuMKMEoW0CZtTBb2ICcFLS8pCSlof9p1MQKzJbxZ/x9zGke3OtnylVKr3t8XTXnlSumJh2x4HTKbhsg2wZdRmTA1Btpq6cYMnfKbFlZolsLSTYF57uLigt1x5r6RDij2mRnXW2t3FySLvSl1FUbJWxygqKy6FUqeAkkegNfpcAcJYyN1NV4Fkmm7BFGSQiIiKynHpViKGVHsEBnjqp7W2V1taYMrlSb2lDFSpW3i7ZHoOYpHS7Hb9crj+4zFYrZomIqG7SlwFLVlBqMPCXiIiIHIutMmCpS8W5OuvPNFAq1x9EZWqhlJjsV2rlFizCUhszqK3Vi6fMKR1oTlCZqexg5irXyNhtKXWGcLHBV0BFFq3M3H+OnZKWh9XfXda7bdyNLKSk5Wn9LCTYF9MiO2P4oy1Ft6GuY3IAqgusqZxAVN30BSXX83bV+VlMUjqy88VfG1UlQxlFxVYZq0ylqgjmSknLw8XrmbqvA/j0+1id6wqyPYZ4k82M6B2CKzezzcqmwc6ciMh2jhw5gv379yM+Ph4ZGRnw9vZGixYtMGjQIIwZMwbe3t417pgPHjxAdHQ04uPjER8fj/T0dMhkMhQUFMDDwwPBwcHo1KkThg0bhl69eolup0qlwoQJExAVFSX8bMmSJRg1apTofdZEIcG+aNPUDzFJGTqvPdJON7W9rdLaWkOuUOHLAwmYPc7dLpmwFEr9A7xyZsAiIiIrBPi66fxMpQJu3MtF22b1q6FFREREZCtyhVJUdil9JBKRGbBMBBnlFFRt5s38wjIg0MuqfZhzTquyHFzp/879nYwCE1vqZ4tAsKRUGQI7eiAmKd1oVvP0nGIs2R6DKcPDtRbWARWL4kkcJgegukBdOWHD/gSjf7esLTNLdVOmrBiJqTIUl8rh4eaMds39bNYvKZUqvRmcKgcqpaTl4csDCTY5pj1JUNHvDDdQEURMlTFD/kp4gN1Hrxu8rohNzsKVm9l6ryvIdhiARTZjTRkkIiKyXGFhIWbMmIGjR49q/Tw7OxvZ2dm4ePEitm/fjjVr1qBLly416phffvklduzYofe1/Px85Ofn49q1a/j+++/Rq1cvrFq1Cv7+/ha3d+fOnVrBV7WZ1ECuXX2DurZKa2stuUKFA6dT9KYOtpahUoOWlF0kIiKqzNDA9dIdF9GpCkrsEhERkf0U2qjEHaCRActFfwYsdRm8ygwtJlKTVXGWh3wbZAQrLTN9Xm1VXlCTBEBAPXdk5pZo/VyuUEKpVNn0922pov9lqDA1lwIYXsBmywnbuoTJAaguiQhrgGcHluG7w9f0vt6ioQ9efCKM97B1gK0CptRleOMqVb6QAOhoozGREgPXDZVLx+4/nVIjx/pHDwiFj6crikrl8HRzRlhzP6NBv2JKhhqy68h1k4Hi9l4YTwzAIhtT1yD/4eQNxKdk67weWM8d/xnZgf+giYispFAoMG3aNJw6dQoAEBgYiMjISLRu3Rq5ubn4+eefceHCBaSlpWHy5MnYuXMnQkNDa9QxXVxc0KFDB4SHh6NFixbw9/eHs7MzsrOzcfnyZfz2228oKSnB2bNnMX78eOzduxfu7rplfwy5d+8eVqxYAQDw9PREUVGRVZ+/plMZuK4u1TOoa6u0trYQm5yFzNxim688NHTzZSgwi4iIyJSYpHT8dOamwde5kpCIiMix2ar8IAChPLGbgRKEZQZKECpMTCTKRGbAalDfA+k5lpfcs6bkoVqJgWAzTWIzYHm4SvGvwW1RVCqH4n/nXCp1EiY8T15Ow89/3tR5X5lcAZWhgZQq4OnmbNHEsb4FbLacsK0rnJyYHIDqnspBK5p6dWjEfw+1nC0DpoxlbVTBdmMixaX6rxvcXf/5LmfKihFXQ/s/qdQJj3UMtug9llQZM8bcLJ32XBhPDMAiOwgJ9sU7z3fBm5+e0rlpDQ7wYmdORGQDe/bsEQKhWrduja1btyIwMFB4fezYsVi2bBk2bdqE3NxczJs3z2DGqeo45sSJEzFjxgx4enrqff1f//oXpk6diokTJyI1NRV///03tm/fjldeecXs9n7wwQcoLCxEeHg4QkNDceDAAQs+reNRD+5Wpi8AqyatklThn9T7tmTofChVKiiVKjgZyBhGRESkjzpDAVcSEhER1U4paXn49pD+DCFiqDM6uRgoQZhbUIbTsWk6mSjkpjJgiQjAcpZK4OPhjPQci9+K/CLrA7D0lRGqTGymblcXqdFJTldnwyUgXQwEx1WFID93iyeO9S1gs9WEbV3x9GMhXChBdY6xv+M5+SUGXyPHZ8uAKWuzNlrC0DWBp/s/YS2JqbIaMbehj7GgR0PMrTJmS/ZaGE+A/qtPIhsIDtCdVE/Pqd3ZR4iIqoJCocDatWuF58uXL9cKhFKbMWMG2rdvDwD/z969B0ZV3nkD/565ZnJjcuEShGAIEDSEKLFUFHFrod1SBUs31gu0dWul66ula2mRbte27rZeXm/1dV3Z7lpZsbaitLDSbS1KhVirEJWEW0AIcjGSTMLkOplkLu8fcYbJ5NznzMyZ5Pv5xyFzZs6ZzJgz53l+z/eHvXv3oq6uzjT7nDp1qmTxVcSUKVPwve99L/rvnTt3qj7el19+GXV1dbDZbPjpT38KqzV9g2qpMihRcCTW1iCyStIs9K50lSP1+1C6j4iISIyehAIiIiLKDPVNrbh/Uz2OfdRl2HOGPklXsggC7CJFQLsbWvDM7w/hhdeO4pnfH8K6p9/C45v3ob1TfjLc26OtIMpqAS4ozsWxj7o1PS6iu8+AFoRqErB0tgO0WeWnuORaQKpNiTBaTpYNref6NU8cRxawxYpM2NqsmbfIbFyuI+X7nMYFEjQGySUZnuvWl6pIqeXx+lDX0II/7TmFuoYWeLzKiZZaC6aaW+S/A6VyTMQn0YIwy3H+nK63cDvZBAAVpW5djx3qMlaD6vIipOKsLva9gozBAixKmokFIyfWPZ39in3siYhI3p49e9DW1gYAmD9/PiorK0W3s1qtWLVqVfTf27dvz6h9AkNJWxEej0fVY1pbW/HAAw8AGEraihSEjXYBidZ6/kHxny9fWGaaATo9q0KUSP0+ALYhJCIibfRE20dWEhIREZG5qZ2g1MoWU3QllcIUK5JE8deDZ2W305KANW1iLgABH57VV3wFAF0pSsDSuzDLpvC7dUgkkPkDobRN3ua47Lr3LfZ7ip2wzSRzp6f2eAUBmJNhvyMiI8glYHWwAMvUmlu68PjmfVj39FuiRdtyRVNGFkylekxEMgErZg7BpXM+IdlNMeaWFyWUKFVWko81tdV48FsL8I0vXoSbFs/EN754EWZOSU4BcTIWxhMLsCiJJhSM/AMTDIUVV/EQEZG8Xbt2RW8vWrRIdtvY+2Mflwn7BICTJ09Gb4slbon58Y9/jK6uLkybNg133nlnQvvPJAGJlZtSK00jqyS1SMYFSiKrQuTIXWBKtSckIiISoyfanisJiYiIMoOWCUot3DnO6G2pFCYxYYVD8WqYLD/j6U045cmIBKx+FQlYeguS7AoLy5wSbQYHBoO6U7cSFQyGdU8cSy1gi0zYrvm7uYkcWkrNTXEx1GUXTcQEkdAAotFONgGriwVYZhVJ52w41j5iPCJStH3/pnrUN7WOeKzRBVOpHhORKgrKijkHzi51a06JEgAkM/zSZhWwbGGZIc9V7HbhyqoSLLlsKq6sKkFetlP5QTokY2E8sQCLkmhiofiX2bPnuAqYiCgRR44cid6uqqqS3Xb8+PEoKSkBMJQg1dHRkTH7bG9vxyOPPBL99+c//3nFx7zyyit47bXXAAA/+clPkJWVpWvfmUg6AUt6oFPLYJfNKuCy2fK94PVIdFWIFLkiK7l0LCIionhGJhQQERGReeiZoFTL5Txf+KOlAEvJgIbrWSMKy+SSU9RSlYClsxjKqtiCUPz+gcFg2r6r9fkHdU8cKy1gmz2tICVti4yQ5bCJtudMBpvVghuXVKRkX0RmI1eA5e3xR1vmknkk2j7Q6IKpVI+J9PvFvzfEFi8Xu12o0ljIWzY5eW1obVYBq5dVoixJrW6dBn6XjEjWwngCWNZGSTPBLT6ZerajD1UpjpclIhpNmpvPx8FOmTJFcfspU6agpaUFAHD8+HEUFhaaap+nT5/G4cOHAQChUAidnZ1obGzE73//e3R3D8XkL1q0CDfffLPsPjs6OvCv//qvAIAvf/nLWLBggeJxjiZSBUcDMgVYHSpWOQkYKpJatrAMR0558c6hkatq9DJyVUg8uQKsQSZgERGRBkYnFBAREZE56JmgVMsSEyGtENJkanIT92olswWhXbEAS3zC0j8YRL/IPq+YMwkXTStAnz+AbKcNW+ua4dHR0cMiAEs+NRWnWntw8MS5Yff5/EEU5mehqrwIDRoKANUsYHParSgal6XrmFPt5y/tQ47Ljs4e+c+YAKB0Yi5Ot+lLdLNZBXz35nmYVVqAIMeDaAySK6QNhsLo7hvEuBxHCo+IlOhpH7imtjr6M6MLplI9JiJ1/C7H8HP68oVlOHiiQ/XvatYUN45/JN22UY/YuZNkFV8BQJbD+AKsZC2MJxZgURKJtSAEgPePenDJjGIUSxRoERGRvEhREgAUFBQobu92u0Ufa5Z97t69Gz/+8Y9F75s8eTJuuukm3HbbbbBY5AfVfvKTn+DcuXMoLi7GunXrFI9xtBmUuNCQS8DydIkPyH3m0gswqSgb2U4bKkrd0S/iJz7W9/kRk+xVIXJFVoNMwCIiIg0iCQVapnu4kpCIiMj89E5QqmERzlddJaPFYSyb1SK7CCkRvf0BBEMhWBXGZOTIjUtE+Pr1tTq0KVS3OSQSljp7B0S/2xXlZ+HKqpLov99sbNFczBQZ76ipmIDf7T4+ogALGJrk1jJxrGUB26Si7IwowAoEw+hSKL66ecnMobmkcS40t3RhW12zaDuu/Gw7uuLaZcZOitdUloBoLAqFw4qtZM9197MAy0QSaR8YGcM3umAq1WMivgF1hWBlJflYvaxSVVpYXrbdkFTPWFPH5+Cuv5ubkiImoxOwkrkwnjKoAOu1117D1q1bsX//frS1tSE3NxfTpk3D4sWLceONNyI3N9eQ/QSDQRw7dgz79+/HgQMHsH//fhw+fBj9/UNfWL/0pS/hgQce0Py8H374IX79619j9+7daGlpQSgUwoQJE3DFFVfghhtuwEUXXWTI8ZuJy2lDTpYNvXHxwQc/PId1T7+FqvIiLE9yRSgR0WjU19cXve10Kvd+jt2mt7c3Y/ZptVpx+eWXY968eYrFV3/605/whz/8AQDwwx/+EOPGjdO1z1TKz1ffHjGyctZiEVBYmCO6jVRc9GAgJPmY/g/EL+a+cGUZZpWOLLQrMOhiwmm34F+/dSVmTnUb8nxiQjKrIrNznJK/k9FEzeeGKB4/N0QjRaLtjU4oICIiovTSO0GphjUmAUtIcgLW5KJsnGztSdrz9/QNYlyu8liQlH4VBVh6E7BsCi3spBKwpFKXsrOGfybEXrfVKsBusYi+ruq4FIycLLvofvr8AdUTx1oXsJUU5mD/8Q7R+8blONBpQKqZUeSmywvynFhcMzX677KSfKyprYbH60PTKW80pSyycFDq50Rjmc8fkB0jBYBzXX5cOClFB0SKEmkfWFw19DfP6IKpVI+J+PpHnl8FiKdA1VRMwPqVWZIFuhF9/QG8uf9jXccjxmYV8PWlF6XsPGNk22SrJbkL4ykDCrB6e3uxdu1avP7668N+3tHRgY6ODrz33nvYtGkTHn/8cVxyySUJ7+873/kOXn311YSfJ9ZvfvMb/OxnP4sWcUWcOHECJ06cwG9+8xvccccduPPOOw3db7rVN7VK9m4PY6gi9+CJjuhqECIiGptuuukm3HTTTQCAwcFBeDwe7N27F88++yy2bNmCLVu24NZbb8X3vvc9WK0jv2R3dnbiJz/5CQDgmmuuwRe+8IWUHr9eVoWYfDGCIMAqsbpTKka9fyAouS9Pp0/055OKckQf48oy5qtjMATMKi0Y1pLBaHKrf4OhsK7ff6aS+9wQSeHnhmi4ZCUUEBERUfromaBUS4i53pUqAjLK5OKcpBZgdSVYgKWmBaHelDCbwoI9qd+9t8cv+vP4ojxB5NMRDIYRDI58TbNL3cNaQAEjC7oi+voHAbiiE8cPPv8uBkTSuuMLutSw26Sv46RSRdSyWoDpk8fhg9OdSWvfGREIhtDc0jXitRe7XaLdVaR+TjSW9fiU0wU7usX/HlJ6GNE+MBkFU6kcExE7V2U5bRAkKtrjC3R37fsIR093DttGTwtbKcnu7BGvvqkVdQ0fGfZ8X1wwjXUZSWbqAqxgMIg1a9Zg9+7dAIDi4mLU1tZixowZ6OzsxCuvvIJ3330XLS0tuP322/HCCy+gvLw84X3GcrvdcLvdOHHihK7n27p1K+69914AgMViwdKlS7FgwQLYbDa8++67+O1vf4uBgQH8v//3/+BwOHD77bcndPxm0dzShQ3bDih+CQ8Ew9iw7QDWr8xipSURkUrZ2dno7Bz6Aun3+2GzyZ/O/f7zF1E5OfrSTFK1T7vdjpKSElx33XVYunQp7rnnHmzbtg2//OUv4XA4cPfdd494zE9/+tNoOuaPfvQj1ftKN6mCKTEWiwBBEBAOhyVXLUm11RsMhDAwGBy2+jaitaNvxM/sNgtyXXbR47MbVLQUCIbQ3ulDoYYUMK3k2gz6B4Kafv+ZSs3nhiie1s/NWCpmpLEtWQkFRERElD56JigtAqDm8soaM0lYmOfEqSQWSE0qzE5aIRmAhFr2hMNhVQVYeim1N3RKtSCUSsCKKcCqb2rFO4daVR9LQd7IIjXpAqzzk8tlJfmw2ywjCrAunVmMu748V/X+gaFj/uM7pyTvHxjUPxYS21oxNm2qtaMPf37/I0MntwGgu28Q92+q5wJ+ogT0KLQfBIBzLMAyFaPaBxpdMBUZE3l66wHZv/dGjImIFaFlO5WL2SOFuC3tfSMKsIwQ29o2VWM+kXoLI0+xOS7xdE4yjqkLsDZv3hwtvpoxYwY2btyI4uLi6P233HILHnzwQTzzzDPo7OzEvffei+effz6hfc6dOxfl5eWorKxEZWUlpk6dii1btmD9+vWan6ujowP33XcfgKHiqyeffBKf/exno/dff/31WLFiBb7+9a/D5/Ph5z//ORYvXozp06cn9BrMYGtds+pVK4FgGNvqmkesDiEiInF5eXnRYqhz584pFjh5vd5hj82UfVqtVvzoRz/Czp070d3djWeffRa33XYb8vPPf7l94403sHXrVgDA3XffjUmTMicvuaurH4GAukHIwsIcWK0CQqEwOjrEWzrKDaJ9fLZL9OLtI5EB4MI8J7zekYVZAODvV75oV+vYyQ5gsrpWkR6vD4dPeuHzB+By2jC71C27qjEUDst+D+nw9kn+HkcTNZ8bonhaPjc2mxUFBdkpOjKi9IskFPzmtaM4IjKYN2V8Dm5dehGLr4iIiDKI1glKm9WCfhUFRbGJz3nZjoSOUUl+jgM5LruqpBM9uhIowBoIhJKalPRxu/w1i9YErEjBlJ4JT7EJzfgJ8YjYAqxQOCzaSUTrorXIMRtdCAWMTOKKT5u6oqoE2+qasU9DMaMaXMBPlJhuFecFFmCZi1HtA5NRMFVTMQHXX9WHl984Lnq/ntRGMWIFWFkaCtNcKoq1tMrLtuOfv3ZZylvbaqm3UEvquwkZx7S/4WAwiCeffDL674ceemhY8VXE2rVr8dZbb+HQoUPYu3cv6urqsHDhQt37/da3vqX7sfH+67/+Cz09QxObt9xyy7Diq4hLLrkEa9aswQMPPIBAIIB/+7d/wyOPPGLYMaSDx+tDo8Yv2g3H2uHp9LEnNxGRCmVlZTh9+jQA4PTp05gyZYrs9pFtAegu8k3HPgEgNzcXNTU1+POf/wy/34/3338fixYtit7/4osvAhhK6PJ6vXjqqadEn6epqSl6e+fOnfj446F+39XV1bjyyit1H5+ZyLXc8w8GRQuw2rv6R/yseJz0AJ9DYuWoHh1dfpRPlt+muaULW+ua0RjXv10AUFVehOUSF3RK6VYBmXQsIiIiOWUl+bh9WSXWPvWXEfddXjmJE0NEREQZJjJB+W+/3S+7XWSC8r//2KS5AMthT25qbK7Ljvwcx4gCLKNSsbp79RV2Nbd04eU3jhlwBNLO9QzIzitI/e6VWhDqmfDMzRpZgJUj8jNgeKsonz8g+j7lSKRnSUnGJC0ALLvyQlx/lfzYXqT90x/++iFe/LOx7zkX8BPp16uqAGvk+DClj5HtA2sqJuD/fEnAEy83Sj5OanxdiljaY4RRf6d9/pHfs7Qkg2U5jC9/KRqXlfIaBj31FkrEivXIeKYtwNqzZw/a2toAAPPnz0dlZaXodlarFatWrcIPfvADAMD27dsTKsAy0v/+7/9Gb3/ta1+T3K62thZPPPEE+vr68Prrr6O/vx9ZWclryZNsh096NV/YhQE0nfSiuIoFWERESmbNmhVNiGxsbMTll18uua3H40FLSwsAoKioCIWFhRmzz4jYtK2urq5h94XDQ2ecvr4+PPHEE6qe79VXX8Wrr74KAPjqV786KgqwQuGw7EoWsUj+UCgsusKpSK4AS2LlqB7tnfIX9/VNrZJtnsIYKt4+eKJDNIp+MCD/TWRwDLQfJCKi5MnLFp9IS6Q9DxEREaWP3GRifLuZ5/90RNVzWocVYKm/ltZTNJWXbUd+th0fxf3cnedEd99AwkU53T7t33HkrumNJjev4LBJJWBJtCDMsume8BR7pWpaEPaKpF8NPVZ9i6BkTNJGjJdJII932ewJ2PznY4annnEBP5E+3SpaEH7k6YXH65PtNkCpZWT7wJJi6U4mt117MXI1tqNLpJWtWmIJWC4NRVXJSMAqKUx9BwA99RZKpIr1yFjJXXqRgF27dkVvxyZdiIm9P/Zx6fTBBx/gzJkzAIDy8nJMnTpVcttIugcwNIH8zjvvpOQYk0XsD6MafTofR0Q01lx11VXR20rnvTfeeCN6++qrr86ofUacOHEiejvRYq7RSinRyS+yOtfb4xct2iqSibg3ctVubPqWx+tDXUML/rTnFOoaWvDekTZVA7WRKPrmlq64nzMBi4iIksdus8LpGDmgp2Zwm4iIiMyjuaULj2/eh3/973rR+y+ZUYwH/2EB1tRWR9MhYgur5AhCTAGWyjTpKeNzMFlmolTKb3cfH7a/iEAwhLtWVGl+vnhdGhOwIq3wUlF8BcjPK1gsAmzWkb8bqUVs2U6b7gnPTpFULakCrN7+87/Tvn7x36+WBKxkTNIC2pMyIsktRoss4CcibdS0pu3qG8S6p9/C45v3jRhjpfSIpHNaFL5zqGkfKHculjr/yBmQGVePLJZPlG9ApABLQ1GVlmIttbQUIxtFb72FFKViPTKOaROwjhw5v5Kkqkr+ImH8+PEoKSlBS0sLPB4POjo60j5Bq+X4I9tEkkWOHDmiWHRmZlpiAGOx5ygRkTrz58/H+PHj0dbWhnfeeQcHDhwQTYoMBoN47rnnov9eunRpRu0TABoaGnDw4EEAgN1uH3FOlWo5GO+ee+7Bb3/7WwDA/fffjxUrViR0XGajNKgptjLFI5FAJZuAJbFyFADyc+yaBmU7uvolWwxqIRZFr1SAxQQsIiJKVJ7LPqLAWc3gNhEREZmDmoSmxuPt+PDjScOSApQmQyNiC7WcKhOwqmcUY//xDlXbxjpyqhMi9Vfo6RvEuFzpdC+1tKZ8JqsVnhSleQWHzYpAUN0kpstp0z/hKfIeOO1WWAQBobhJ6diisV6f+P6k2heKMXqSNkJPUoaW5BYtuICfSDu116hK3QYo9WoqJmDZlb343e5m0furY9I55QRlxsHFWv0pGRDptBG9LxBS/Z1HjmgClpYWhEmoN8jLdhj+nEr01luIUVOsR8YxbQJWc/P5PyhTpkxR3D52m+PHjyflmLSIPQatxx/72jPR7FK32LWGLPYcJSJSz2q14o477oj+e926dWhvHxkz/vDDD+PQoUMAgHnz5g1LsYq1ZcsWVFRUoKKiAqtWrUr6Pg8fPoyNGzeit7dX5lUOFV/deeed0ZUT1113HfLy8mQfM1YpFRzFtyBsbumSbJuw890zkqud5BKwqsuLFY5yuFNne3D/pno0JFB8FRGJoo9gAhYRESWbWBtCtiAkIiLKDM0tXXh6q3JCUzA0MnXZYlE3pRJbp6W2BWGb14dgSN/1qljoRBjA2XO+kXdodKZtqD2VGslshSdFaV5BbZq3w26BzWrRPeGZLzI5KwiCaArW8BaE4gUSUulZYoycpI3Qm5QRSW4RSx5LBBfwE2mndZGQVLcBSo/8HOmin2//3VxVxTTGJ2BJF2D1i3Th0GowEBI9Zi3nuWS0IBQbA0o2PfUW8QQMFeutX1nDwsoUMu03lu7u7ujtgoICxe3dbrfoY9MlU48/X6btULzIah+LRUBh4flo5MLCHNTMnoC9h1tVP1fNRRMxq0zbxC1lJqnPDZESfnaGu+GGG7Bjxw68+eabOHr0KJYvX47a2lrMmDEDXq8X27dvR339UIR+fn4+7rvvPtPss7OzEz/72c/w6KOPYsGCBZgzZw4mT56MnJwc9Pf348yZM3j77bfx9ttvR4uvZs6ciXXr1iX8GkYrLQVYSqt8j33Uhfs31YuudvqoTbpo7vCH5zQcMeDpEk/g0iMSRV9cNbQqc1BhEJ0JWERElCix1Y9sQUhERGR+kbaDUi3o4sWnLttUJmDFJmWpbUE4VIBlbGrQRx75xW9qtHp9WPf0W6godWPWVDdysuxwOW2YXepGcVxLnmS1wpMyqTBbMaFJbQFcpMAnMuGp9XVcfKF4V5bsLNuIIojYAqzY27G0tCDUe8xSEk3KqKmYgPUrs7CtrtmQhXdcwE+kT4+ORUJi3QYoPfplEqr8g0FkqWi1JzdvoCdZUKzTRvSYBgKATNGYGlKJjpoKsJLQgjAdCViRtr4NOgvbF1w8EV+6errmJEtKnGkLsPr6+qK3nU7lmNzYbZQSNVJB6/FnZZ0vfErn8Vut2kPRBEGANW41w02fn433j3oUJ4QBwGa14KbPVejaN2Uusc8NkRr87Ayx2Wx44oknsHbtWuzcuRNtbW2i7fgmTZqExx57DDNnzjTdPvv7+7Fz507s3LlTdrtrr70WP/zhD4cVK9NwSgVFkQKs5pYuxRYLwPnVTutXZkUH2yKFW1LaJFoapkrsBaNSwtUgE7CIiChBuS6RBCy2ICQiIjIlj9eHwye9OHLKizcbWzQXg0RSl4vHuTS0IDw/1q0+Aavf8JSflnZj5hrCGCquOnzSG/2ZAKCqvAjLY1ogqU3KMsqcMvGip1gOm8oCrE9a/umd8JwyPlf8eUXe09jUEekELPVpG3qOOT/bju6+wWH/PwgYajuopq2VkrKSfKyprYbH60PTKS/6/AFkO22oKHVj06tHNB2rnlaIRAT0SBR4Kok971H6xHe1iOXzqyvAkmtBKFUALGdAZlzdiAQs34BEAZZDfapVcloQpj4BC0isre+eplbMqxjP/4/TwLQFWJQecn+I41ksAgRBQDgcRihuZU75BePw3Zvn4ZFfvStbhGWzWvDdm+eh/IJxmvZNmUvuc0MkR8tnZ6wUdObm5uLpp5/Gjh07sHXrVjQ2NqK9vR05OTkoLS3FkiVLcOONNxrats+IfX7qU5/Ciy++iLfeeguNjY04fvw4zp49i/7+fjgcDuTl5WH69Om49NJLce2112LGjBmGHf9opVRwFOnNvrWuWfWX9djVTmoLt9LpdGsPPF4fit0u5RaEJn4dRESUGcQG3/wDQQwGgrCrnOQjIiKi5Gpu6cLWumY0JpjAE5u6rLYAa3gLQnXjVD2+QcPHS41IwJISxtAk/cETHbj+qjIcOdWpO6VBrwkFypOKTpW//9iWRVonPAVItzwSS7KKXUTWa0ACFqDtmG1WAWtqq5Hnso8ojjJ6orbY7RqRlKb1WPW0QiQifQlYwMhuA5Qe/RLFSMDQeaQgTzkAJiDzvUJPAtagTFGYIQVYhiRgJaMFYeoTsIDzbX31zM2ILbKn1DBtAVZ2djY6OzsBAH6/Hzab/KH6/f7o7Zyc9Lemys7Ojt6OPTYp/f3nUyPSefxdXf0IyPRvjVVYmAOrVUAoFEZHx8gLuYoL8rF+5Txsq2vGPpELL7vNgntumYeyknzRx9PopPS5IZKi9rNjs1lRUJAtef9otHjxYixevFj341esWIEVK1akbJ8WiwXV1dWork5djPEDDzyABx54IGX7SzWlL9/+wRA8Xh8aNQ6ERlY7aSncSpfdDS2oa2hBVXkRLplRJLutmoROIiIiOVKDb919gyjMZwEWERFRukVSnI26lo1MUupqQagyASt2P0Zpae9T3ihBgWAYL/35eNL3I8amYhGm+haE5wvstU545mbbIQjinw2XSJJV77AWhCMTsOw2i6bPDaD+mOPbC8YXR6WC3mMlIvXC4TB6fPrPKUafj0g7v0xBU7/K9yco8zdWqthJ9piSnYAlUZSspQDLbrPAahFUtXWuLi9C0ymv4rHnutJXUpNIW1+2FE0P0xZg5eXlRQuwzp07p1iU5PV6hz023WKP4dy5c4rbm+34jRKJmd2wdT/ePtQ67L7BQAgfnOlEnsueli/5REREo4VSQZF/MIjDJ72aV/yGAew93Kq5cCtdIqtvDzR3yG7HFoREZAavvfYatm7div3796OtrQ25ubmYNm0aFi9ejBtvvBG5ueItTNK5z7Nnz2Lv3r3Yv38/9u/fj9bWVni9XvT09MDlcqGkpARz587FtddeiwULFhh+/GYi1oIQiBRgZaX4aIiIiChWMlKcI23kVCdgxWznTGM6pprJx0ymqgDLpi4BKzsucSoy4fncq0040dIt+9gcmXaBoglY/fIJWPHHopbcJK2R7QWNkEnHSpSJfP4AQmH95wCjW+KSdv2yLQjVFU/JzRvoakEom4CVeNGeT6IQSksBliAIyHJYJRMmI760aDquu+JC/PN/vo0zMomhOVm2Ya2l0yFSb3Hk5Dk88Kv3ND2WLUVTz7R/PcvKynD69GkAwOnTpzFlyhTZ7SPbAsD06dOTemxqxB5D7LFJid2mrGz0xalefGHhiAIsAHhhx1H8esfREb3iiYiISD2lAqyBwaCuFS0A8OHZnoRaNaSD0gDzIBOwiCiNent7sXbtWrz++uvDft7R0YGOjg6899572LRpEx5//HFccsklptrnhg0b8Pzzz4ve193dje7ubhw5cgQvvfQSFixYgEcffRSFhYWGvAazEWtBCADdPn0tHoiIiMg4Rqc4CwAqSt0AAKuuBKz0TtqNZjab8vuhNklKbHK3rCQfX/v8bPzk2T2yj5UqzgfEixgCwRAGBoNw2K3o9Y1MwJIr6FISmaT1eH1Jby+YqEw6VqJM0y3yt0Wt2PMepU+/X7rYKTahzOP14fBJL3z+AFxOG2aXuqPBJ4GQTAGWzHN8eu5kTB4/cpGe3MJmqcQuueOLJ92CUFsxu8tpUyzAKikc6qTjznXIFmClq/2gmFZvv/JGcdhSNPVMW4A1a9Ys7N69GwDQ2NiIyy+/XHJbj8eDlpYWAEBRUZEpBnhnzZoVvd3Y2Ki4few2M2fOTMoxpZPcpG9sr/jVyypRUzEhdQdGREQ0CigVFPkHgnAVmPZrX8qxBSERpUswGMSaNWui17rFxcWora3FjBkz0NnZiVdeeQXvvvsuWlpacPvtt+OFF15AeXm5qfZpt9sxZ84cVFZWYtq0aSgsLITNZkNHRwf27duHP/zhD+jv78dbb72FVatW4eWXX0ZW1uhLhJIagOvp0z/ITURERInzeH2GpzjPLS+KFoOoTcCyCvpaEJI2dlUtCNUVwB1o7kBzS9eIReIF+U7Fx4qlXEVIpVn1+QNw2K2iCSRyz6dWsduVMZ1HMulYiTJFTwIFWLHnPUofv0ICVnNLF7bWNaNRJEUwEnwi14Kwr1/6OX75v4dQM3sivrJ4FopyzhcFyydgDb9PzfHFn3OlC7C0nRezHMrbRxbWufPkz/NSC/DSQe8ie7YUTS3TzsRdddVV+K//+i8AwK5du/DNb35Tcts33ngjevvqq69O+rGpMWPGDEyePBkfffQRjh07Jpvi1dvbi/r6egCAy+XC/PnzU3moSdfc0oWX3jimuF0gGMaGbQewfmUWk7CIiIg0CATkV/b6B4OYXeqGAGhKsxIATJuYi7cPnk3k8EyHLQiJKF02b94cLYSaMWMGNm7ciOLi4uj9t9xyCx588EE888wz6OzsxL333iuZOJWOfd56661Yu3YtsrOzRe+/+eabcdddd+HWW2/FyZMn8cEHH2DTpk247bbbEnoNZpQn04KQiIiI0qeuscXQFGebVcCyhec7VqhtQTMsAUtlCzzSzqqqAEtdAVyb14f7N9WPWCSe57LDZhVkU9VkE7Ak0qx6+wNw5zpFEzoSScAiImpu6cLzrx7R9dj48x6lj1xLv6OnO/H8n46Inptig08WVpVIPsfZc324f1O9+HOEgb2HzuL9I21Yvezi6HlxQGZcPfZ465taJdtBywWzGFWApSYxK7Kwzp2rVIBlngQsrb+HCLYUTS3TfvOfP38+xo8fDwB45513cODAAdHtgsEgnnvuuei/ly5dmpLjU+MLX/hC9Pazzz4rud2LL76Ivr4+AMA111wDl2t0VRVriXwOBMPYVtec5CMiIiIaXZQSnfyDQRS7XagqL9L0vHPLi3BZxQSoW9+bOQIswCKiNAgGg3jyySej/37ooYeGFUJFrF27FhdddBEAYO/evairqzPNPqdOnSpZfBUxZcoUfO9734v+e+fOnXoO3fTYgpCIiMh86pta8cpfThj2fFaLgNXLKoctFtbTgrClvc+wYxoNHCraBqqlJgHLaVOfQBZZJN7c0hX9mSAIipOzOTIFWFJpVi2ftDvq848s4JdKzSIiUlLf1Ir7N9XjxMfdmh9rs44871H6xCdKxfrrgY8V594DwTB27WuRvL+lvU/Fc4SGnRdlE7A+ua+5pUuy+Cr++OLPuT6J1+xSkWg1bHsVBUeRcZ2CDErAiiyy14ItRVPPtAVYVqsVd9xxR/Tf69atQ3v7yOjghx9+GIcOHQIAzJs3D1dddZXo823ZsgUVFRWoqKjAqlWrknPQcb7xjW8gJycHAPD888/jtddeG7HNvn378POf/xwAYLPZ8H/+z/9JybGlip7I54Zj7fB0+pJ0RERERKOPUgHWwODQ/csXlsFmVfcVPbLaSU/hltmxBSERpcOePXvQ1tYGYGjBUWVlpeh2Vqt12DXr9u3bM2qfwFDSVoTH40nouczK5bSJTsCyBSEREVF6RCb7QgbFX+Vn2/GDVTXDUhkA9S0ILZ+0IKxvasXPX9pnzEFJyLRFU+MUipkinA7lwik1Yxx2jQlkYovElSZn5QqwunrFC/Sf+t1+PPbi+/D5R042MwGLiPRQW/giprq8COtXjjzvUfrIFWCp/b4TCif+xSj2vCifgDV0vIkEs4glYNmsFs3n8iyF7xCCcP7crZyAZZ5zst5F9mwpmlqmLqO/4YYbsGPHDrz55ps4evQoli9fjtraWsyYMQNerxfbt2+Ptu7Lz8/Hfffdl/A+T506hZdeemnYz5qamqK3Dx48iMcee2zY/ZdffjkWLFgw4rmKiorwz//8z7jnnnsQCoVw5513YunSpbjyyithsVjw7rvv4ne/+x38fj8A4K677kJ5eXnCr8FMDp/0ao58DgNoOulFcRX/GBAREakxqCIBCwDKSvKxelkl/v13B2QvvuJXOy1fWIaDJzp0XbybEVsQElE67Nq1K3p70aJFstvG3h/7uEzYJwCcPHkyelsscWs0EAQBuS47OuMm1NiCkIiIKD20TPYpsQjAmtpq0QQQtQlYVouQ0ES4WheMz8GZtl5Nj8nPtqMrjd9ZpozPRZu3X3G7/Gw72mQmnwHApmJCdjAo/xxiIovEIxOWSgVYuRKJVfVNrfjN6x9IPq7xeIfoz6VSs4iI5Og9F86ZXog1tdVJOCJKhF/hHJhKkfOiXAKWfyCYUDBL8TiXaAGWmnaCIx8jfx7NddmjxfJKBVi5LvO0IAS0zdWwpWh6mPpbnM1mwxNPPIG1a9di586daGtrw1NPPTViu0mTJuGxxx7DzJkzE97nRx99hKefflry/qampmEFWZHjFCvAAoAvfelL8Pl8eOCBB+D3+/HKK6/glVdeGbaN1WrFt771LXzrW99K+PjNRqpXq5KmU15cKdOXloiIiM5T+rLtj7kwqqmYgEXVHfjz+x+N2E7A0IqIZQvLhg00Rwq3kj1wnCqDGfoaPF4fDp/0wucPwOW0YXapG8VuFqwTZYojR45Eb1dVVcluO378eJSUlKClpQUejwcdHR0oLCzMiH22t7fjkUceif7785//vObnyBR52WIFWGxBSERElGp6JvukCAD+4fo5ku2X1BZgCYJgaFGYFK3FVwCQl+NIewHWe0eVU1LH5TgVC7VsFuUCrHPd2r+fxS8S15OAFSnAC+qIZWMLQiLSKpFzoZq/pZRa4XBYNgEr1SLnRaUErESDWcRSIdW0ExzxGIWWhXnZ54uqMqkFIaB+roYtRdPH9N/icnNz8fTTT2PHjh3YunUrGhsb0d7ejpycHJSWlmLJkiW48cYbkZeXl+5DlXTzzTfjiiuuwK9//Wvs3r0bLS0tCIfDmDBhAi6//HJ85StfwcUXX5zuw0wKPX8UAeAv+z/GZy69gH8UiIiIVAgoJDr541amOOziq0Z+dvvlmFiYLXpfTcUErF+ZhW11zWg41j7sQipSuHWu24+TrT1aDj0tMq0FYXNLF7bWNaNR5PdeVV6E5XEFc0RkTs3N5yPVp0yZorj9lClT0NLSAgA4fvy4rmKoZO7z9OnTOHz4MAAgFAqhs7MTjY2N+P3vf4/u7m4AQ6laN998s+bjzhRDA3bDJz27fUzAIiIiSjU9k31iBAB//8WLZNsvqW1B2OsbNKwozGhqi8iSpWhclqrt8nOUEyfUJGCFdbZf6otZXF6QJ3/MYgVYiRTgsQUhEWmVyLkwEMqssdKxIBAMGdI+0Ei9/QHZzhL9AwHdwSyRc65oApZCMZWYLIXUrLyY83Z+jh2CAEj9us1WgAWom6uJX2RPqWP6AqyIxYsXY/Hixbofv2LFCqxYsUJxu09/+tMjEq6McOGFF+Kee+7BPffcY/hzm9nsUjcEQPNJPxQa6vnKyEsiIiJlShfJ8XHFPSKTwy6nVbL4KqKsJB9raqvh8frQdMqLPn8A2U4bKkrdKB7nwv97uSEjCrAyqQVhfVOr5GqWMIYimg+e6MDqZZWykwRElH6RoiQAKCgoUNze7XaLPtYs+9y9ezd+/OMfi943efJk3HTTTbjttttgMcFK2vx8dZN8wPlJVYtFQGFhjuy2heNcAM4N+1lvf0DxcTT6aPncEEXwc0NkHL2TfbGsFuBby+coXlepLcA6095rSFFYMjglFmXFkpuIjDWp0IWFcydjy67jCKlIenLnOlTtHwDGqSjAsluV3w+9i8SzYx6n3IJw+ORsoqlsOa6MmbojIpNI5FwYzNBuAZlGS3cDn4nSryIcdvnxnZ6+QZxu0zc3EDnn+gYMakGomIB1/rxttViQn+NAZ494YmaeyVoQRijN1VD68FscJVWx24Wq8iI06LjYiO+zTkREROKUErDie7P3ihRgaVldWex2iV4cmmWFptJAcaYkYEXaFSitmA0Ew9iw7QDWr8ziqhYiE+vr64vedjrlJ3Dit+nt1d5aJl37tFqtuPzyyzFv3jxTFF8BgNWq/TgEQYBVYULPLTIR19M3AAhC2pMlKD3UfG6I4vFzQ5Q4vQU2gPaUAJvKc/xgwHwTpxHjcpUnEtWGbkydmIell0/DYCCIrXUnFLcvyMuCTeV3M1UJWCqea9pE7d1TBAAVpe7ov5VbEA7/DCaaypZtkvEVIsociZwLM2WsNFPp6W4Qv6A63QQA0xW+J51s7dG1ODv2nCuagKXjs62YgJU9/DuGO9cpXYBlwgSsWFJzNZQ+LMCipFu+sAz7j7dDa6vz+D7rREREJG5QoUDHPzj8Irq3f+SFjBHFU9lZ6f9qmZ1lQ2VZIfYcapXcZjBDBhW0tCsIBJkeSkSpddNNN+Gmm24CAAwODsLj8WDv3r149tlnsWXLFmzZsgW33norvve978Fq1b5a0UhBDX/3LRYBgiAgHA4rpjjkirSaCYWBrp5+5OcoF7zR6KHlc0MUoeVzo6eQlGgs0duF4YbPlOOy2RM0LQBWm4DlUpnylCg9r3vGBeOw93CbIfv/4JQXwMiJTCkFeU7YVbQNBIB8FROeagqwit3q01Aj5pYXDftcFOQqFGDFjakkmsqWY4LxFSLKLHrPhQAQHCPXMFoSqIyit7uB2Qqw5pYXiY6BGPXckXOu2LyFngIsLQlYwNB5/kOIJ8Gr/Y5DFMFvcZR0ZSX5uGLOJNQ1fqz5sX0GxEcTERGNdkqrlAYGgwiHwxCEoYFisRaEuQbE2ysVYF01twS7G1oS3o8cd65TsZhMKjEsHRfhUvS0K2B6KJG5ZWdno7OzEwDg9/ths8n/zfT7/dHbOTn6WlOlap92ux0lJSW47rrrsHTpUtxzzz3Ytm0bfvnLX8LhcODuu+/WdfxG6erqR0BlCkVhYQ6sVgGhUBgdHfIpYDaJ+dd9h1tRWVao9TApg2n53BBFqP3c2GxWFBTItwonGuv0dGGoLi/C3356muZ9qS3AmjYpT/dEuFo2qwUXX1igufuEnkQoKed6BuDp9KFf5URxQa5TVdtAAMhy2mC3WTAok/qtpgDLYdNWDGezCli2sGzYz8blOiTfT6tFQJZj+D4SSaIBAE9nP0qK2J6WiNRLpCPRaE/A0pNAZdR+9XY3UHteVaK2pbCSPn8Axz/qSvyJ4kTOuZH3SKzwrOmUF80tXZreI5fCPEV8UZXc97t/+21j0j4jNDpx+RSlxKypBboel53ghQoREdFYoNSCMAxgIGab3n6RFoQGrGBRKnz6y37txdhaeTp9ir+P+ASs5pYuPL55H9Y9/Rae+f0hvPDaUTzz+0NY9/RbeHzzPjS3GH9xqURPu4JIeigRmVNe3vmJrnPnzilu7/V6RR9r9n1arVb86Ec/ij7+2WefRVdX6v+OpoJUssEjv3k/becPIiKisWr5wjLYVBb2iBXYqGVT2WK5ID8LVeVFuvahlstp1fS6AcBusyRcHBSv6aQX/QPqFlIX5DthV1kQ5VBxrHapivgYTg1pZDargNXLKkdMstqsFsmWiC6nLbrgLSKSRKPXa/WnE3g0EY1VWs8JEaM5Aau+qRX3b6pHQ1zxFXA+ger+TfWob5LupqCXnu4GEf2DyudVpffaZhVQMcWtav9Kjp7uxIZtBwx5rojIObejqz/6Holp7+zX/B5pScCqb2rF+0elk0GT+Rmh0YkFWJQSei444vusExERkTg1q5T8g0OrR8LhMHp96WlBaNTF/JyyQty0eCaqZ4wczB4YDOFcd7/s4wOB88eRzotwOXrbFTA9lMi8ysrOT/KdPq08oRK7zfTp0zNmnwCQm5uLmpoaAEOpWu+//77u5zKr+qZWbI0ZHI3HAToiIqLUKivJx+pllaomI8UKbNRSm4BlEQTdE+FquZw21a87YlyOQ3ULQLX6/AH0+9UnYNlUFE0B6orF1LRoddjVvd7q8iKsX1kzrAVULKk0jR7f4Iji+0gSjV6NnyRcExFpofWcEKG2SCjTaE2gMnIRVSLdDQCoOq/etaJKsmVtfrYd61fWYFyefAtdLYws1CvIc2L9yhoU5mcl5T1yOeWLr/M+WYwe+YwovbRkfEZo9GIBFqWEnguO+D7rREREJE7NRfLAJwVYPn8QIZHcYWMSsFKTXHlhST6WXDYVl84cL3p/S0ef7OND4TCCoVBaL8KV6F2RzPRQIvOaNWtW9HZjY6Psth6PBy0tQy1bi4qKUFior51dOvYZEdvCcLQlYEXOH0qDjxygIyIiSq2aiglYv7IGUjVSSgU2aqguwLIIuifC1YpcN0Zed3V5keIi6FyX3fACrGynTXWrJHeeU1XbQACwWy3IlplAtVoEWATl362aFoSfnTcFa2qrJQvz6ptacVZmrEGs+D6RAjwmXBORXnLnBAFAfs7IMeDgKG1BmEgCVaIS7W4QWUwtp9jtkpxHL8gfamdo1vaSEwtcKCvJT9p7lKWYgDWUapnOzwiNXizAopRJVQw0ERHRWKMuAWtoG7H2gwCQa0DxVLYBKVpqOD9ZvVo8Lkv0/o4uv+JzBAJhU19gMT2UaPS56qqrord37dolu+0bb7wRvX311Vdn1D4jTpw4Eb2daDGX2Zj5/EFERDTWlZXkixZJLaicKFtgo5ZVZQFWZDulifAsDe3x4rkc5x9bVpKPNbXV+Ontn5YtSsp12VUVJGkxc8o49S0I85yqC8Dsdqvs4iS1hVxqErBKirMl74sU34usZRsmvvg+UoCn8iMzAhOuaax77bXX8O1vfxvXXHMNqqqqsGDBAtx44434z//8T/T09Bi2n4aGBjz//PO455578OUvfxnXXHMNLr30UsyZMwdXXHEFVq1ahSeffBJnzpwxbJ/JFjknPPitBfj2DZfgm9fPwbdvuAQP/sMCzJpaMGL70diCMNEEKrnnrWtowZ/2nEJdQws8XvHtE+1uoKaw2ecPYiAgvp23Z2h8PGjSdLOOLn/S3iNARQJWtj2p+6exjUvkKWUiFxxKSROJxkATERGNNYMqCrAiCVhSBViZlIBl/2SwWKoAS42Pz/XpvsBKRUJnJD20QcMxMj2UyNzmz5+P8ePHo62tDe+88w4OHDiAysrKEdsFg0E899xz0X8vXbo0o/YJDA1gHzx4EABgt9tRVVWV0POZSSIDdPwbTURElBpik41GLRhSW4AVWwQVmQj3eH1oOuVFnz+AbKcNFaVuPL31AI5/pC8tU6w4aVJhDkon5uLEx92ij8nNNj4BK8uhPgHrV386gmvmXaBqW7tVvgWh2sXeagrO8j9JwhCjp/h+TW01gKECvGuvuBDb3jyh6vGxmHBNY1Vvby/Wrl2L119/fdjPOzo60NHRgffeew+bNm3C448/jksuuSTh/X3ta19DX594wl17ezva29vxzjvvYMOGDbjzzjuxevXqhPeZKsVuF2ZNL4bVakEwGEJHRy9sIucxs6YkJSKRBKriqpHX7s0tXdha14zGY+3DnlcAUFVehOULy4bNayfa3UBNYbPPH5BMyurqHUAoFEYgZM73tqO7H4dOnjP0PYrltFshfLK9mByXHX89cDZp+6exjQlYlFKxK36kfPcrlyQUA01ERDTWBAIqErA+GQzt8SWvACtVCViR1auF+VlQ0W1A1OEP9V/gpQrTQ4lGF6vVijvuuCP673Xr1qG9fWQhz8MPP4xDhw4BAObNmzcsxSrWli1bUFFRgYqKCqxatSrp+zx8+DA2btyI3t5emVc5VHx15513IvxJRMB1112HvLw82cdkkkTbCBAREVFyhUJh0XO12sIpJaoLsES2K3a7cGVVCZZcNhVXVpWgeJwLzgQSsKQKdArynZKP+eB0J854jEuOAYbGGdQWYO1v7sC//Xa/qm0ddgtcMi2EbKqTtJS3y88RL8AyIh1jYVWJ5oRrAMhO0SI3IjMJBoNYs2ZNtPiquLgY//AP/4BHHnkE9957L+bNmwcAaGlpwe23345jx44Zst+ioiJ85jOfwbe+9S3867/+K37+85/jkUcewd133x3d58DAAB599FE8+eSThuwzXawiY41mTUlKRKIJVLHqm1px/6Z6NMQVXwFD1/tibWgT7W6gLgErEB3zjxcOA119A6Z9bwPBMM51K3exEKMmIVIQBGRJfE/KybLBZrUY+hkhisVvcJRykRU/W3Ydxyt/OTHi/lyZ1SZEREQ0kroWhJ8kYPnELxByDSieSlUCluOTQVab1YKCPKeqloPx+vrNf4EVSQ99eusB2ShwpocSZY4bbrgBO3bswJtvvomjR49i+fLlqK2txYwZM+D1erF9+3bU19cDAPLz83HfffeZZp+dnZ342c9+hkcffRQLFizAnDlzMHnyZOTk5KC/vx9nzpzB22+/jbfffjtafDVz5kysW7cu4ddgJhygIyIiMjepayexCWc9xAqrEtkukQIssYnF+qZW7DsqXTDk6ezHQ796TzYVYsr4HHzc0ac69anHNwifyhaEgPpWV4oJWBZ1BVgWQYDdZsGgzOK1cbnicxJGJKjoSbgGgH//3X6sXlbJxeo0pmzevBm7d+8GAMyYMQMbN25EcXFx9P5bbrkFDz74IJ555hl0dnbi3nvvxfPPP5/QPn/zm99g5syZECRWea5evRq/+93vcM899yAcDuPf//3fUVtbi4kTJya033QRa99q1pSkRCSaQBURaUOrdE6MtKFdvzILeS47Dp/0oqQoGx+1i6eriYntbiBVWBVrKAFL+r3z9vhNnW6m99jUJkS6nFbRMZxIHYJRnxGiePyEUNpcOEl8FXR7pw8XFOek+GiIiIgyl5pBUb9iC8LEvxbarBY47BYMiFz4KQ12ahHbPqB4nEtXAZZDxQpYMam+wKqpmIDVy4Cnfie+Qri6vAjL4iKuici8bDYbnnjiCaxduxY7d+5EW1sbnnrqqRHbTZo0CY899hhmzpxpun329/dj586d2Llzp+x21157LX74wx/C7XYncvimwwE6IiIicwtKTCJbVRbrKEkkAUtMlkN/AVb895LIJHEorDxJLKd4nAu3Lr0I2+qaRdM+4vX4BtHvV5eApYXdZoHLKf37UZuABQwt5JIbk5BqQWhU8f3yhWU4eKJDdVEbMHwyn9f8NBYEg8Fh6VIPPfTQsOKriLVr1+Ktt97CoUOHsHfvXtTV1WHhwoW69ztr1izFba6//nr84Q9/wM6dOxEIBLB792783d/9ne59ppPYecysKUmJiCRQaXllsQlUEVrb0D6+eR96+gY1F+/GdzdQk4DV2x+QLWLydg9oOu+kWn6Ow5D3SMpQiubIeYO87KGF6EZ9RojicQSQ0qZ4XJboz9u8/Sk+EiIiosymJQErmS0IASAny46BwZEXNkNJVf2GXPTFFk/pXS08ZXxuxlxglRRlS963prY6hUdCREbIzc3F008/jR07dmDr1q1obGxEe3s7cnJyUFpaiiVLluDGG280tG2fEfv81Kc+hRdffBFvvfUWGhsbcfz4cZw9exb9/f1wOBzIy8vD9OnTcemll+Laa6/FjBkzDDt+M+EAHRERkblJJmClugWhyt05EyjAii/w1jJJLMdus0S7WHi8PjSd8qLPH4CvP4Df1TWP2L7HN4g+icVeiR2HVbaI3a4h1cxht6JXIgnbYbdIFsIZVXwfSbhWk6ISKxAMY1tdM6/9aUzYs2cP2traAADz589HZWWl6HZWqxWrVq3CD37wAwDA9u3bEyrAUmvmzJnRhUgejyfp+0sWsQSsYCiMNm8fmk52wucPwOW0YXapG8VuVxqO0Bh60gdjE6gAfW1ou/u0nw/Fuhv0DyoXYHl75Bcle3v9CJo4AWswEEr4PZKTJVHEnffJPIgRnxEiMSzAorSRKsBq72QBFhERkRaDKi6kIqlUUi0IjWofmO20ifZvd+c6Ufs35ZoHG8XYP0nAqm9qxYFmbRfBEbnZ9oy5wDLzSiUi0m/x4sVYvHix7sevWLECK1asSNk+LRYLqqurUV09tid/OEBHRERkbskuwFKbbKU2cSuxFoTnH6tnkliKPSZZqtjtik7Ad3T1ixZg9foGVU0U6zkO2RaEIkUEUhwyv+f8bIdk6zEji+9rKibgH64X8P9ebtTwbEDDsXZ4On38Pkmj3q5du6K3Fy1aJLtt7P2xj0umDz/8MHpbLJkrU0idD+95+q/D/tYJAKrKi7A8g5P3taQPxidQAfra0Gol1d1ATQtCxQKsbj8CKtv+pkNHpz/h90hKc0sXznb4RO/78ONuNLd0oawkP2n7p7HNmNxdIh2ys+yiK1g8neJ/EImIiEhcoi0IXU6rYe0YsiUKuVwOK2oqJmD9yhpUlxch/lJfADBd5cW8w26Jaa2g7zgDgRCWLyyDTeWK2XReYAUkWmgQEVF6ZMr5g4iIaCySaqNk1ZCWJEdtAVYqWhDGjq0bOUnskGjtJ5Wcfa7HD4Wuh5oJGPoeZVQBllOmXeG4XPH2g8D54nst5IrvpRbFyQkDaDrp1fw4okxz5MiR6O2qqirZbcePH4+SkhIAQ2lUHR0dST22119/HTt27AAAOJ1O/M3f/E1S95dMVom/nfF/xsMYKgC9f1M96ptak35cyRBJH1S6fhdLoAL0t6FVy2YVsKa2WrTArX9Aed+dPQOy93t7BlR1zlBLolZZt/au/oTfIzH1Ta24f1O9ZCeQjm5/9HOdjP0TMQGL0qrYnYWTZ3uG/czDBCwiIiJNAgEVLQgHpFsQ5mQZ035Q7rmETwafxdoYZDttqCh1o6PLjweef1dxHw6bFS+/cSyhZKjBYAgVpQWqWgCk+wJLagKBiIjSQ20LmXSfP4iIiMaioMQCFqtBs4Y2lYuXUtGCMLY4ychJ4kjqdDyn3Qq7zYLBuDGIZHS0sFkFCIIAl0xat9qCeEA5AUuOkekYet+nviQXARCZQXPz+YS9KVOmKG4/ZcoUtLS0AACOHz+OwsLChI9hz5496OzsBAAMDAzg448/xptvvom6ujoAgM1mw09+8pOMTsDS8rcTGFr4u2HbAaxfmZWR17ZDC4Kz8C8b94reP70kH7d8bpboa9PbhlatQDCMUCgsWrRtSAJWj3EtCB02CyqnF+K9I8a134zUA0Teo3//3X7RGoG5GpLYIou2lc7ZsZ/ryP631TWj4Vj7iCS4uRIpZURSWIBFaVU8zsUCLCIiogSpSUiSS8CSWsWqh1S7h/ePevD45n3Ri6XYNgYRUqtS4vX6BhJurRAIDB1nTcUEfP9mB372nHjhl1QMdCoZuVKJiIiMERmge3JLo2jrXTOcP4iIiMYiyRaEGtKS5KhvQagyASuBFoQux/npHSMniR126d9Vrss+4rtPMsbzB4NhPL55Hy6rmCC5jU0m1Sqe3Gsal+uUfayRxfd63yexTiJEo013d3f0dkFBgeL2brdb9LGJ+L//9/9i3759I34uCAI+9alP4dvf/jY+9alPGbKvdNHTkjcQDGNbXTPW1FYn4YiST+7v8tIF0yTv19OGVqs+fwC5ImPz/aoKsOQTsDp7BhJawBxrMBhSXYSuVuu5Pni8PhS7XSgryUfV9CLsfO/MsG0sAvAdDZ+7rXXNql9z7OdabtE4WwCTVvzWRmlVPC5rxM96fIPw+QNJrywmIiIaLdQkYA0MRhKwRq6azJVZUapFfVMr9jdLF0Y1HGvHwRMdWL2sEjUig6hOlQPPH57tSfjCN7ao6YLiXMntvv13cyEYna+skVEXykREZKyyknxcMqN4xACh1YKMHZgmIiLKdCGpAiwdE86JPI/a60i5ZCYlLuf5xxo5SWyXKWxKVQEWMDSGcKBZuq2YXUNRnUMi1QsA8rOVF6UZlY6h530SAFSUujU8gigz9fX1RW87nfKFkfHb9Pb2JuWYIiZOnIgrr7wS06ZNS+p+1MrPHzm3KiVSOGyxCCgszEF+nvrHxmo43o6AIGBCQbaux5uV3WlDYWGO6H2FhTmomT0Bew8nrwWj1SG+/wE1HS8G5Yu0uvoGEDKoR3A4DLQZfL4fCISwbsNbqKmYgK8sqRCND82SeX/ine3oQ+NxbYu24z/XhYU5mDU9cxPu0i3+781YxQoXSiuxAiwA+OBMJ6qma+utTkRENFYNqijQiSZgibUgNCABKxLvq3RNJxdbLTcgGiu+3YEesc8h93zBUFhzNLfRjIqKJiIi44mlKQRDQ+2PrAavDiUiIiJlUi3cU12ApToBy6AWhMVuF6rKi9CQYFo0IH9tLpbSYWT7w3hSiWaAtlQz2QSsHPkWhBFGpGPoeZ/mlhcxfYMoRV588cXo7b6+Ppw8eRKvvfYafvnLX+Kxxx6L/veKK65I41HqS3UUBAFWqyDZZlZJOAwcbO5AicxCVrOSO5cEgmHZ3+dNn5+N9496ktahoNcXEN2/byDxc6u3x6/7/Rbz4cddhj1XRDgM7D3civePejBjyrgR9zvtVtWf94PNHYpzE2L7z9TPtZlF/t6MVSzAorSSuiB+7MV9mnq6EhERjWVqLgD9gyGEwuGktSDUG+8bS25ANFaeitWpSgaD6gqwAsEQbAa1qtArIDNIQERE6SU1QTkwGILLyQIsIiKiVJOaZFXbOlCJ2udRu53ToAIsAFi+sAwHT3SoujYXBEhOUsolYBkxfmC1AKGw9P7VsmuY2JNLGsvPUU7aiVXsdqHYrb8gSsv7ZLMKWLawTPe+iDJJdnY2Ojs7AQB+vx82m/wUtt9/Po0vJ8f4pJXs7GzMnj0bs2fPxrJly3DzzTejtbUVt99+O15++WVUVFQYvk+1tCzWtFgECIKAcDiMUCiMRIY5e/oGMnKhaI/IguQInz8g+5rKLxiH7948Dw8/Xy9byKXXiZZOnGrtRl//ILKz7JgzvQjFbhf8KloQKgmHz3fFMIJBYVqiAsEQmk6eG/Fzh92q+jPX45NvySj5uAz9XJtR/N8bJUa1CDcbFmBR2tQ3teKlN45J3q/UpoiIiIiAcDisqgVhd98A+v0B0Qul3KzEBlA9Xh8aNa6ybTjWDk+nb9gqTjUtCAUAF19YkHBrhaaT5+AfCMLltKEwX3qwdTAQQpa6xbBJI1dgFwqHYUlzi0QiorFMqnh4IBCCS9tcHhERERkgEBK/fjJqFb7aZCu1BVhZdn1TNAJGFm+VleRj9bJKbNh2QLa4x2YVML0kH0dOd4reL1eAlZdAAZYAoHRiLk619hgyiatlsZRD5jWpTcAyipb3afWySi5QpzEjLy8vWoB17tw5xaIqr9c77LHJNHXqVHz3u9/FunXrMDg4iKeffhqPPfZYUvcpp6urH4GAusKawsIcWK0CQqEwOjp60S+yOFetcDCEjo7ktntMhnaZ1nmdnT7F11RxQT6uu/JC/G53s+j9LocVPp0FU0+93DDs3wKAyrJCXc+V6cS+G9gsgurPXFhn14xM/VybUfzfGzk2mxUFo6ylaQQLsCgtIm2KlKqF5doUERER0dDqXjXjlkdPd+LJLY2i9yW6gvXwSa/mYqgwgKaTXhRXnS/Akhvkjd1mvDs74dYKbx04i7cOnFXczoh2h4mSK8AKBEKyK3mJiCi5pP4GG7nKlIiIiNSTWm1vM6g1sJrCKgFQvVBGbwJWltMquo+aiglYvzIL2+qa0XCsfdi1uoChdnbLFpbhz++dkSzAkitW0jJ+sObv5qLHNxht1ZedZcO//24/jAoQsakYQ4iQTcDKTf2qK7XvE+dEaCwpKyvD6dOnAQCnT5/GlClTZLePbAsA06dPT+qxAcCiRYuit995552k7y9Z9J4PBQAVpW5DjyVV5Nr5+VVeu8ud1xdfNhX/+/aHqrtDyAkD2N/ckfDzJMppt6r+3SST2o4ZADC71K150XYmf67JvFiARWlhRJsiIiIikm7nK+bwSa/oz3OyEvtK6PPr60nfF/c4QRDgsFswMChdcBQZNNUS2Z8INe0dPV4fDp/0wucPwOW0YXapO6F2BPHk3uPBIAuwiIjSSSq90QwDlURERGOR1PWT2uQqJWqeR0u7Q70FWPHtB2OVleRjTW01PF4fmk55owVQFaXuaAr1Xxo/lny8XaLFMgDkaijAKinOwYSYa+PHN+8z9BpeSxGBbAJWdnpir9W8T0RjyaxZs7B7924AQGNjIy6//HLJbT0eD1paWgAARUVFKCxMfmJQbm5u9HYkqSsT6U2EnFtelLF/m/r90tfnahffejp9kve5cx1YvawST29VDh7JFO48B852SL/mVJH7ThKv2O3SvGg7kz/XZF4swKKUM6pNEREREQ0V4CRKywCqGLmBXznZIo9z2KyyBViRlCy1kf2JkrsIb27pwta6ZjSKrFatKi/CcoNWqyolYBERUfpITebJncuIiIgoeaQmPrUURcmxqij60bKvLJ0LatRchxe7XZKLg+wyiRJyaRO5LvXX/1kxxWV65gSU2GwaCt1kfs96i+CMIvc+EY0lV111Ff7rv/4LALBr1y5885vflNz2jTfeiN6++uqrk35sAHDixIno7VQUfCWLmvNYPJtVwLKFZUk4mtTol0nAGlA5ttrmlW5jOBAIoaZiAm77Yggb/ueg5uMzo4L8LFMUYGlJwAK0LdrO9M81mZcxubtEGiTSpoiIiIiGU5PQpCTRFoSReF8tpOJ95QZFgeFtA4Yi+2twQXGOxr2rJ3WxVt/Uivs31Y9oFQAMfW9pONaO+zfVo76pNWnHABhTgEdERPqxBSEREZG5SBVg6U38iKemuEpt+0FA+RpYisuR2Np6u1WmAEsmLSrXpT4tKvYY9cwJKJF7DfG6+wYl73t88z40t3QZcUhElID58+dj/PjxAIZa/B04cEB0u2AwiOeeey7676VLl6bk+H79619Hb8+bNy8l+0wGm8bzoc0qYPWyyoxuieobkL4+V3vt3uaVLkaKFHEVF4yOYloBwASTvBaHhgQs4PyibaXP+Wj4XJN5sQCLUs6oNkVERERkTAJSoi0II/G+WkjF+yqtaokfCC4rycd1V16oad9aiCVgNbd0qUreCgTD2LDtQMIDucGQTAJWklswEhGRPKnz1kCABVhERKPVa6+9hm9/+9u45pprUFVVhQULFuDGG2/Ef/7nf6Knpydp+z148CAefPBBXH/99bj88ssxZ84cXHXVVVixYgXuu+8+/OEPf0AwyPOP1PWTnsQP8ecxtgWh3W7RvKAJ0J9EHSF37W1EC0KrRYgmWAP65wTk2FQWYNU3teLVPack7zdyARUR6We1WnHHHXdE/71u3Tq0t49Mznv44Ydx6NAhAEOFUFdddZXo823ZsgUVFRWoqKjAqlWrRLd54YUX8Ne//hXhsPT4WjAYxH/8x3/gV7/6VfRnN998s6rXZEZq/3YCwPTJ+Vi/sgY1FROSeETJJ3cOUtOCMBgKoaPLL/McQ9+/RksSdunEXLy5ryXdhwFAvihcSmTRdnV50YjvWAKA6vKiUfG5JvNiC0JKOSPbFBEREY11RiQgPf+nI/jy1eUJrfgwKt5XKkkker/IRVeiLRTliP1+t9Y1qy58CgTD2FbXjDW11bqPQW5fbEFIRJReUqsxR8vAKxERndfb24u1a9fi9ddfH/bzjo4OdHR04L333sOmTZvw+OOP45JLLjFsvz09PfjpT3+K3/72tyMmiFtbW9Ha2ooDBw7g+eefx549e5CfP7ZX8gclrp/UFE6poeZ5tOzLIghwOKzwy6RziHE5E2ubJ1dkJTfZea5bugVTrKy4tn6JFIwJgGh6lprfWWQBVUimuAI4v4Bq/cospmEQpdENN9yAHTt24M0338TRo0exfPly1NbWYsaMGfB6vdi+fTvq6+sBAPn5+bjvvvsS2t++ffvw4x//GCUlJbjiiiswa9YsFBUVwW63o7u7G0eOHMFrr72GM2fORB+zevVqzJ8/P6H9ppOWc9SXF00fFX8T+2UKsPwqErDOdfllzyOR6//RkIRttQCn23olE0VTTWsLwoiyknysqa2Gx+tD0ykv+vwBZDttqCh1iy4KJzISK1oo5SJtirT86ZZqU0RERDTWSQ0ua3HwxDkcOVWP1csqda/8iMT7KiVDKcX7OhVWtYgVaCW1ACuuwMnj9aHx2MjVd3IajrXD0+mLXtx5vD4cPumFzx+Ay2nD7FI3it3SF35ybSbZgpCIKL2k2gapGcQlIqLMEQwGsWbNGuzevRsAUFxcHJ0Q7uzsxCuvvIJ3330XLS0tuP322/HCCy+gvLw84f16vV584xvfwP79+wEAEydOxOc+9zlUVFQgLy8Pvb29+PDDD/Hmm29KtmoaayRbEBpUgKWuBaG258yy6ynASrAFocy1t9R99U2t2LBN3ecsK65Fop45AWDofRvvzsLHHSNbP23/64c41daD5QvLJMcYUr2AiogSY7PZ8MQTT2Dt2rXYuXMn2tra8NRTT43YbtKkSXjssccwc+ZMQ/bb0tKCl19+WXabvLw83H333RmdfgVoS8AaLaOOci0I1SRgybUfBM6Pzw5k+EJZm1XABcW5+PBsd7oPJUquYFyNYrdLdtydKBlYgEUpF2lT1KBh8lKqTREREdFYZ1QBjhGrPYfifbOwra4ZDcfahw2sChg6ny+TGRgFAIdD/qJKbCA4mQVY8cVPh096NQ8YhwE0nfSiu3gQW+ua0Sjyu6kqL5IcNJYrspMrziIiouSTbkHIv89ERKPJ5s2bo8VXM2bMwMaNG1FcXBy9/5ZbbsGDDz6IZ555Bp2dnbj33nvx/PPPJ7zf7373u9Hiq7//+7/Hd77zHTidzhHb3X333Th79iyys7MT3memC0kVYFlTl4ClpQUhADgdVqBX23Ek3IJQYwFWJElKbTFTfMdHPXMC+dl2fG5+KV5+45jkNg3H2nHwRIfogjIjFlARUerl5ubi6aefxo4dO7B161Y0Njaivb0dOTk5KC0txZIlS3DjjTciLy8v4X398Ic/xGc/+1ns2bMHhw4dwsmTJ3Hu3DkEAgFkZ2ejqKgIFRUVuOqqq/C3f/u3huwz3bScD8MmSUFKVP+AdAKWmmv3tk759MfBDE/AiozbL7pkMp58uTEtx2CzCqLfMfQmYBGlEwuwKC2MalNEREQ01hlZgGPEas9E432dCqtaxBKwclKYgOWTiayW03TKi41/OCz63ScM+UFj2QQsTvATEaWVVAJWpg68EhHRSMFgEE8++WT03w899NCw4quItWvX4q233sKhQ4ewd+9e1NXVYeHChbr3u2XLFtTV1QEAbrrpJqxbt052+4kTJ+re12gSCIlfI1njK4J0SkYBVpbE9wk5yUzAErvu1pIkBQC9/SOvnbXMCVgtQO1nZmDjHw5DoXug5IKyRBZQFVexAIso3RYvXozFixfrfvyKFSuwYsUK2W1yc3OxZMkSLFmyRPd+Mo2WRMhRUn8Fn1/6+lzNtftJhUSogUBQ9XOZwacvmoA504tGjNvXNbRoPm8aYXJRNm5eMgsP//r9Efc5EkzAIkoHlg1SWkTaFNkUKq2V2hQRERGNdQGDC3Aiqz0TVex24cqqEiy5bCqurCpRvXpUaVWL2Cpdp90qO3iciPjiJ72D3H/Z/7HiIHNk0Li5pWv4z2VGO5iARUSUXmITlEDmDLwSEZGyPXv2oK2tDQAwf/58VFZWim5ntVqxatWq6L+3b9+e0H5/8YtfAACys7Oxdu3ahJ5rLJFqQai1KEqKuhaE2vallAQtxqXjMcP2KTOhGX99rSdJqq8/MGJsQcucwLeWz8Gew62a2wfG0ruAqk/n44iIMoGmFoRKFbAZQi4BK35xq8frQ11DC/605xR+u+s4HvrVu3j93TOyzx95jkxJwp4xZZzouL3e86YaAoCq6YWi982ZXoSSohzR+5iARZmICViUNrFtivaJXMA57Basu3kei6+IiIhkDGpYgapGuld7SiWJREi1Sch12XGu22/48cRfhM8udUMANK8GkmqDEU8shUw+AWt0DIQQEWUqqfNSpgy8EhGRsl27dkVvL1q0SHbb2PtjH6dVfX09jh8/DgD47Gc/i9zcXN3PNdZItXC3GVSANRYSsOLv05MkBYiPLcTOCTQcax/2vJEWSMsWliHPZcdTx/Zr2l98+0C9v6PsBH+3RERmpqkF4SgpwJJLwPJ/sniquaULW+ua0Rh3blIjcv2fKQuxCvKyRH+e6HcLObWfmYG//XQp7np814iUzI5ufzRFLB4TsCgT8ZskpVWkTdG//bYB9U2eYfcFg2FMm5j5/ZSJiIiSKZiEBKR0rvaUShJRuj8nK0kFWHG/32K3C1XlRWjQuPpXi/hBY7n3mAlYRETpJTV56c+QgVciIlJ25MiR6O2qqirZbcePH4+SkhK0tLTA4/Ggo6MDhYXiq/3l7NmzJ3q7unpoccarr76KzZs34+DBg+js7ITb7cbFF1+Mz3/+81i+fDlsNg71A9KLX7S0XJJjVZEconVfTh1pVokWCUl9h7FZLSMSvIxOkorMCXi8PjSd8o5ogQRAVxuk+AVlehZQCQAqSt0a90xElDlsGlrySnT1zTg+hQSs+qZWbNh2QFOr3VjdvUNj0pmyEEsqiVLvwmM1IoV/BXlZ6O3vGXbfua5+DA6K/+6kFr0RmRk/tWQKUyeMLLQKhsJJmUglIiIaTeILhIyQztWeSrHCUoPEua7kHLNYi8flC8sUWyZE6BnjjwwaR49B5uKfBVhEROklCILouStTVr4SEZGy5ubzbc2mTJmiuH3sNpEUK6327z+f/FNUVIS77roLd911F3bt2gWPx4PBwUG0tbXhjTfewA9+8AN86UtfwqlTp3Tta7SRakGopnBKDTXtBVORgJWV4HW71LW32ERnspKkit0u0RZIgDFFX5EFVFrMLS8adhxERKPNWEzA6pdJwOofCCZUfAUAbZ39ADJnIZbUdyI95021It8JCvOdI+7r6PbDL5GAZWcLQspAXBZDpjDeLX5R4+n0oWiceBQiERERGV+Ak+7VnkqxwlIJWLkuezIOR7TArawkH6uXVSpenNusAi6/eCLqGj/WvN/YQWPZFoQswCIiSjuHzYqBuNWa8f8mIqLM1d3dHb1dUFCguL3b7RZ9rBZtbW3R20888QSam5tht9tx/fXXo6amBjabDYcPH8ZLL70Er9eLI0eO4Gtf+xq2bNkybP+plJ+vfgw3UqBksQgoLMwx9DgcEkU/RYU5cOeNnPTTKlsmRSPCbrNqel3jNPzuIl5560NMKM7FzKluzY8FgF6J7ypOx8hj//Tcyfjl/x6C1nn4T8+djMKCbF3HV1yk73MxvjBn2PGvWnox1j/1pqqxE5vVgpVLLzb8M0npl8y/OUSZxqahIDk0WgqwZM7dRhRN+fxBeDp9GTMOINeWefnCMhw80ZFQQVq82PmGQpHvYt4eP/oH2IKQRg8WYJEpSBVgtXp9qChVHtggIiIaq4y8GALSv9rTqdSCUDIBK0kFWBLR0TUVE7B+ZRb+ZeNe0fvLJ+fj5iWzcKatV1cBVuxKYakV3IB4QhcAeLw+vHe8A/3+ALKcNkwtdKFY4vsWERElxmm3oMc3/GeZsvKViIiU9fX1RW87ncoFPLHb9Pb26tpnZ2dn9HZzczPGjRuHZ599FhdffHH059dddx2+/vWv4+tf/zo++OADnDlzBo8++ijuu+8+XftMlJ6EKUEQNCVxqCF19eRwWA1JwZJaFBTLZhU07UtPwtShEx1Y/9Sb+N7KGlwxd7Lmx0slaFktI4998vhc1MyeiL2Hzqp+/ikTclFSnKv5uCKqZ46HIEBT0ZcgDD0u9vhnX1iI762swf/dVC9bhGWzWvC9lTWYfaH2lqGUOZLxN4co02hpkztaCrD0pipq0XTSiwGJFCezkSvCO7/w+KBhC79j5xsKRIrOw2Gg7ZxvxM8B5W4ZRGbEAiwyhfESKVdt3v4UHwkREVFmkSoQ0sNmFbBsYZlhz6eH0kWVVAFWTooLsIChC1Ip115xIcpK8pHnskOA9CSAmPgUMrmL3fgCvOaWLmyta0bjsfZh+xQAVJUXYfnCMtnjJiIi7cQmYgcMPD8TEdHYE9/y5/vf//6w4quI8ePH45FHHsHy5csBAL/97W/x/e9/H7m5+gtf9ApqmKSzWAQIgoBwOIyQzIITPQYliqCFsLZjlKTicAVB0LQvp0NfukMgGML/3VSP++/I0pyEdfLjLtGfezr78ZNfvIWvLKkY9pxfWTwL7x9pUz0Ze9lFExL6fRePy0JNxQTsPdyq+jE1syeiaFzWiP1+unIS7r/jSvxmxxHUHz47rKhLEIYe95XFszBzqtuYzwiZjpa/OUa1KyUyK5umFoRJPJAUCYfDkulKRurzBzImAUupELWmYgLuv6MAL752BHsOqi++FhM/3yCWgAUAH3f0if6cCViUiViARaaQn+OAw2YZMUjt8YpXvBIREdEQowYHbVYBq5dVpr04R2k1capbEMoNLssN2kW+0xS7XagqL0LDsXbV+4xPIZNLORuMWVlV39Qq2RYxDKDhWDsOnujA6mWVqKmYoPp4iIhIntiA4AATsIiIRo3s7OxoIpXf74fNJj+k7vf7o7dzcvS1uop9XHZ2NpYtWya57ezZs3HJJZfg/fffx8DAAOrr63H11Vfr2m8iurr6EVCZ/FBYmAOrVUAoFEZHh76UMCk9vQOiP+/s7IOvz5hJPKVFNmGNryuUwPeGQDCETb8/iDW11aofE7l2lLL3cCveP9o27NqxKMeO1csulrzmjFeU60z4vf3Cp0vx/tE2VfuzWQV8Yf5UyX0W5dhxx/JKeK6ejqZTXvT5A8h22lBR6o5efxv9WSTzUPs3x2azokBn20yiTGG1aGhBaHCRdDoEgiHZ7gJGyXbaMmYcwKbiMzBzqhv3fuNy/OCpN9F4zKNvPyLzDVIFWGelCrCYgEUZiJ9aMgVBEETbELZ1sgCLiIhIzqABBVjV5UVYv7LGFEU5Si0I7SZpQQjIt5eKveBevrBM9eoysRQyuSK7wU8GoptbulQNhAeCYWzYdgDNLeKrnYmISDuxAcFMWflKRETK8vLyorfPnTunuL3X6xV9rBb5+ecnqmbNmgWHwyG7/Zw5c6K3T506pWufo0UwJH4ONrLtmEWhfZOG7k4A9CdgRTQca4dH5Th6IteONRUTsH5lDarLixT3k+VIfO1/pA2S0vW0lgVlxW4XrqwqwZLLpuLKqpJhi5+IiMaCoUQ4ddtmcgKWx+tDXUML/vD2yZTsr6LUnTEFWFq+E00rkf8ue/GFBYh/NgHS8w2FIi0IAeBjiRaEdiZgUQZiAhaZxni3C2c8w1cfsAUhERGRPDUrQeV8+erp+OKCC405GAMotiCUKNBKVgtCuQQsufjq2OKsyKDxU7/bLztwITVoHJBZpRU5vq11zao/C4FgGNvqmjWtkCYiImniLQgzY+CViIiUlZWV4fTp0wCA06dPY8qUKbLbR7YFgOnTp+va5/Tp0/HWW28BgKp2grHb9PT06NrnaCGVcmFRO9usgtUqyKZpKBVoxUu0ACsMoOmkF8VVysVEiV47lpXkY01tNTZs3Y+3D0m3B8xyGjNhOlT0lYVtdc1oONY+LHlMwFCC9LKFZWlP8yYiyiQ2q0V20WlEKAMrsJpburC1rhmNceeMZCvKz4Jfxe/UDGwaWq1OKpJPc73j+jno6w9IpkvGK9CYgOWUWIxNZGYswCLTKHaPrHrt6h3AR229mDxeX1w3ERHRaCdXIKSG1KqTdFHq6+7ImASs4Y+rqZiAspJ8HP9IPHmqYqobN1wzQ3TQWC4BKxAIweP1oVFDi0Pg/ApprvYlIkqcWHpjpqx8JSIiZbNmzcLu3bsBAI2Njbj88sslt/V4PGhpaQEAFBUVobCwUNc+Z8+eHb2tpqAqdhu9qVujhVhhlNUiQDCyAEuhwErp/nhZ9sSnafr8AcVtjLx2LCvJly/ASrCoLH5fa2qr4fH6cLrDB99AAC6HDVOKXLymJSLSwWYVMKh82kA4wwqwIi12E12wrMdgIJQx4wCaCrAK5duy2m1WFLvtKBbpciXGYbci12VHj29Q1fZ2hW4ZRGbEskEyDalVSP/8X2/j8c372CqHiIhIhJrVSnKUCp5STakFodTxJqsAS+6CvX9AeqRC7IJbrljuC5dPk1yxK3cMgWAIh096Na/oiqyQJiKixImlN/rZgpCIaNS46qqrord37dolu+0bb7wRvX311Vfr3ueiRYuiBUNHjhzBwMCA7Pb79++P3i4rK5PZcvQLilw/aS2IUqKUpiWkOAELALKdykVcRl47KiViGNGCMF6x24VrLpuKZVeV45rLprL4iohIJ6tFXXmATNij6ahtsSvGiO8JA4HQiAW5ZqWlBeGkIukCLEGAYptgMYUSKVhipBZjE5kZP7VkCvVNrdhRf1r0vjCGVtrcv6ke9U3Sq2qIiIjGIrGiHi0Le50KLf9STbkFYaoTsGTaDMq1IBR5nNzKnvZO8T73gHzh1mAwBJ+Klc5i1KyQJiIiZWLFwWxBSEQ0esyfPx/jx48HALzzzjs4cOCA6HbBYBDPPfdc9N9Lly7Vvc9JkybhU5/6FACgr68P27Ztk9z28OHDeP/99wEAOTk5mDdvnu79jgYhsQQsHZODchQTsDSmbSWaFiUAqCh1K25n5LVjicyELAC4DEzAIiIiY6k9L2ZSApaWFrvxvrhgWsJFWIOBUMaMA9hUFuABwMTCbEj9Zhx2q66EUS3fe5TmCojMiJ9aSrtIVbLYxXGsQDCMDdsOMAmLiIgohtiFpd1mUb06xGGyGF+lBCy7xOvKdtokLwYTMSibgKW+BWE4HEZ3n3QBlqerX/I+sRYaEYFgGC4VK53FqFkhTUREysQGBAcGQxk1WE1ERNKsVivuuOOO6L/XrVuH9vaRbdwefvhhHDp0CAAwb968YclZsbZs2YKKigpUVFRg1apVkvu9++67o7cfeughHDx4cMQ2Ho8Ha9eujf571apVyMoyV5v5VAuGRi5gUZv0oZZVoXWPRWsCVoLX5XPLi1SlQRl57ViUnyV5fQ4Y24KQiIiMpbYAR2ne1iz0tNiNNW1iHv7Pl+YkdAyDgWBSE7AEAFXT9bW2jqcltcpus6IgXzyxSk86VX1TK46e6VS1rdUiGP4djigVOOtCaaelKjkQDGNbXTPW1FYn+aiIiIgyg1g6kv2TweABFe0JzbaKRKkgTGpg2mIRkJ1lQ2+/salOci0e5QuwgnH/Dsk+V3undAGWbAJWIITZpW4IgKZWEmpXSBMRkTKpc9NgIGS6QmciItLnhhtuwI4dO/Dmm2/i6NGjWL58OWprazFjxgx4vV5s374d9fX1AID8/Hzcd999Ce/z0ksvxTe/+U384he/QGdnJ2644QZ86UtfQk1NDWw2Gw4dOoSXXnoJXq8XADBnzpxhhWJjldgCllS3IExlAZbNKmDZQnVtJ428drRYBBTkOtHqFU9z3rDtAK6/ajrKSvI17I2IiFJBbQJWhtRf6WqxG2sgEEJZSV5CxzBgcALWdVdeiAluF/r8AWQ7bagodaN4nAvfeuTPCRd62RQKyeONH+dCR5d/xM+1fr+KBLKoXaump70hkRmwAIvSSk9VcsOxdng6fezxTkREBPHiHJvVAotFUFWMJNY2KZ2UVs7IrbDNddkNL8CSK37yD8q0IIy7r7tvQHY/HtkCLLkErBCK3S5UlRehQcN3KrUrpImISJnUucs/GGQBFhHRKGGz2fDEE09g7dq12LlzJ9ra2vDUU0+N2G7SpEl47LHHMHPmTEP2u3btWlitVvziF7/A4OAgXnzxRbz44osjtlu4cCEeffRROJ3iCQVjSVDk+klrQZQSxRaEWguwdKZF2awCVi+rVF3kZOS1Y31TK9o6xYuvAKDxeAcOfXgOq5dVoqZigur9ERFR8qktwMmUVGe9LXYjBgJB2Q4EavT1B1QXFqkxwe3ClVUlI36e67KjY3BkMZRaArR/L8pyin9P8fYM4PHN+7B8YZmq7yJa20Qm+p4QpUvGFGC99tpr2Lp1K/bv34+2tjbk5uZi2rRpWLx4MW688Ubk5uaadp+9vb146aWX8Oc//xlHjhxBZ2cncnNzMWXKFFxzzTW44YYbUFxcbPjxZwI9VclhAE0nvSiu4qQhERGRWKqSzWpRvUJET1RwMtltFtkVuXIFY7kuO86ekx4A1kN/Atbwx3X7pNsPAvIFWEGFBCwAWL6wDAdPdKi6iNWyQpqIiJRJFVkls/0AERGlXm5uLp5++mns2LEDW7duRWNjI9rb25GTk4PS0lIsWbIEN954I/LyEktQiPeP//iP+MIXvoCXXnoJb775Js6ePYtAIICioiJceumlWL58Oa6++mpD95nJUpGApZQcopSQFU+uXd+EAhfazvmGXSMLGCqMWqZywjOWEdeOahMsAsEwNmw7gPUrs5iERURkImrPi6EMKcDS22I3YmAwJFrArUWvwtivFnKdC3Ky7KJpVBE2qyB7jldqoxzvrcYW2SCVhmPtOHiiQ7HgWk8gSyAYZiALZSTTF2D19vZi7dq1eP3114f9vKOjAx0dHXjvvfewadMmPP7447jkkktMt8+//vWv+O53vwuPxzPs5+fOncO5c+fQ2NiIjRs34l/+5V/wuc99zpDjzyR6q5L7EqxmJiIiGi3ELqhsVgF2lclWZkvmEAQBDrtVMl3KLtMyMcdlN/x45BKw+gekv4/ER05398lfhHf1DmBAIilFKQELAMpK8rF6WSU2bDsgu73WFdJERKRMsgDLwPYDRERkHosXL8bixYt1P37FihVYsWKFpsfMnj0bP/zhD3XvcywRLcDSONmoRCk5QmuyhFwSyYLKSbhyziQ0nfKOaEOkhxHXjloSLALBMLbVNWNNbbWu4yUiIuOpXbibIfVXulrsxhoMhBJOW+oxsABLrnNBrsL4d67LDm+PdCcGLW39jpw8h0d+9a5iK0o1Bdd620QykIUykakLsILBINasWYPdu3cDAIqLi1FbW4sZM2ags7MTr7zyCt599120tLTg9ttvxwsvvIDy8nLT7HPv3r247bbbMDg49Ef34osvxhe/+EVMnjwZPT09ePPNN/Hqq6/C6/XiH//xH/HUU0+NudVKequSsxOsZiYiIhotRFsQ2ixwyhQqxXKo3C6VHHaLaAGWzWqRXUmsdAGqh1wCll9LApZCC0IAaO/qR0lRzrCfhUJh2dVmse9/TcUErF+ZhX/ZuFd02zllhfjSouksviIiMphUmiQTsIiIiFIvGBp5/jU8AUsh4UprApYcm1VAsduFYrdxk4+Ra8dtdc1oONauKV1LT4JFw7F2JlgQEZmI2sLkUIa0gNPTYjfWwGDiLQh7+o0pwFLqXCC3AFkQhhKy5Auw1M8FvPBqk+zi5FhKBdcMZKGxxNRVLJs3b44WQs2YMQMbN24c1qrvlltuwYMPPohnnnkGnZ2duPfee/H888+bYp8DAwP4/ve/Hy2++trXvob169dDiLn4uuGGG/CXv/wFq1evxsDAAH7wgx/gj3/8Y1LaKZqVnqpkuehFIiKisUa0AMtqgV1la0G5ln7p4rRb0Y2RF61KRWWpLsDql0jpAoYu3GOpWQXV3jmyAEts8mD48Q3/FiVXXHXbtRcjP8eheBxERKSNUyIBSyrNkYiIiJJHrIWQ0QVYRidgAUOTpmJrb6yW5CyaKivJx5raani8Pk3pWnoSLMJgggURkZnYVJ6nwpkSgQVtLXbjDQRCimOwSoxIwFLTuUBu/Ntptyp2u1BqoxxxtqMP9YfPqto2Qq7gmoEsNJaYL/LgE8FgEE8+hsRLLwABAABJREFU+WT03w899NCwQqiItWvX4qKLLgIwlDhVV1dnin3u2LEDZ86cATCUfHXPPfcMK76KuOKKK/Ctb30LAODxeLBx40bdx5+JIlXJWshFLxIREY01YgVYdqtFVWtBm9Wia2A42aSOXamoLOUtCP3SE+v+QHwClvJF+ImPu0X2Lz9ooHYVEiDeioOIiBInlSbJFoRERESpFxSZLDY8AUth8lLPdbZdIpHC6GOPV+x24cqqEiy5bCqurCpRHHdnggURUeZTnYCVQUOJkRa7es7BA4GgaAG3Fr0JFGAJAKrLi7B+ZQ1qKibIbpuTJV2Q5LRbFRcw21QWdu8/3q65BWWk4FpMJJBFKwayUCYybQHWnj170NbWBgCYP38+KisrRbezWq1YtWpV9N/bt283xT7/+te/Rm8vX74cFpk/aF/+8pejt//nf/5H83FnuuULy1T3nFWKXiQiIhpr4hOQgKHzpVQ7pFhq2xSmmtSxK6V19Q8YP6A7GAhJrvaSSzYZmYCl3IJwy67jeHzzPjS3dEV/plRgJZfQFS+ooViLiIjUkzo/sQUhERFR6okmYKkce1ZLqQWh0v2ij5EqwDL42BPFBAsiosyntrg3kxKwgKEWuysWTdf8uIHBUOItCH3qx6VnTRmHb3zxIty0eCa+8cWL8OA/LMCa2mrZ5KuIRBOw1M7H9+lsqShVcK0nkCU/x85AFspI5px1A7Br167o7UWLFsluG3t/7OPSuc+PP/44erusTL5gaNKkSXC5hv6ANDc348SJE2oOd9SIVCUr/dFXE71IREQ01ki3IFROwFKTkpUOUscllTACAPVNrfjjO6cMP5YwpJOj/DIFX/EFWGoSsIChqOb7N9WjvqkVABOwiIgygdR5K/5cQERERMkn1kJIT0GUnGS0IJQaG7epTClJFT0JFgKYYEFEZCZqzy2hDCvAAoDxbu0FO4OBYMItCLUkYOW47JrSJ2PJFWA5VBVgqXvvs7P0dZqQK7jWEsgCAFMn5Ok6BqJ0M9e39xhHjhyJ3q6qqpLddvz48SgpKQEw1Mavo6Mj7ftMpCq4qalJ92MzVU3FBKxfWYNqiepXm1VQFb1IREQ01kgVYMkVK0WoSclKB6dkC0Lxnze3dGHDtgMIJanASCplqn9ApgVhXOpJt4aL8EAwjA3bDqC5pUsxtYoFWERE6SeVKDmgIaWQiIiIjCF2Xai21ZJaSs+nsrvPMFITosluQaiVngSLueVFTLAgIjIRtUUwGVh/pasDwMBgKOEWhD0aEqMSWRSdI1MY5bRb4FQY71ebrDlnehG01q8rFVyrDWSJKMxzajsAIpMw56wbhpKgIqZMmaK4few2x48fT/s+i4uLo7eVEq3Onj0Ln88n+VxjRVlJPtbUVmNB5cQR9wWCYZQUZafhqIiIiMxNtADLZlFs1weYOQFL/Cuq1AT31rpmxaSoREgVOfXLJJsEgqFhA/9qE7DOPz6MbXXNCCgUTQ3GHZvcIgAWYBERJYfU+VSuVS0RERElh9h1j9FFTErPpycBy54hBViAtgQLm1XAsoXyHUKIiCi11J5bkrXYNZn0jH8OBIxoQah+7NeewKLoRBOwrCqrxCcWZqNm9sj5ejlqCq4jgSzF47IUn0/N/AaRGZm28XZ3d3f0dkFBgeL2brdb9LHp2udll12GLVu2AAC2bt2Kr371qxAkSkUj20V0dXWpPWTD5ecr/8GLiFxIWiwCCgtzDDuGyhnj8daBsyN+7guEMXmScfuh9EjW54ZGP352iMSJFR7ZrYK6BCwV26SD1MWVWAKWx+tD47H2pB6PVAKWXyYBCwAGAkFkOYa+bnf1+DXvt+FYOz5bI78oIBAY/v7LDRYkGqVNRETi2IKQiIjIPMQSLIwuYrIoREIo3R+vuaULnb3i14x/fOcUJhZmo6wkX9NzJlMkwWLDtgOyi6FsVgGrl1Wa6tiJiEh9MmRGJmDpKKQaakGY2IvV0oIwka4UOS7p0g6n3ao43q+lBeBNn6vA+0faVHVg0FJwXVaSj4VzS/C73c2y25l17oJIiWkLsPr6+qK3nU7liLnYbXp7e9O+z89//vN46KGH4PV6ceDAATz00EP4/ve/P6II669//Sv+/d//fdjP9B6/EfTEMQuCoDqyUI2pE8V7ura092HWtELD9kPpZfTnhsYOfnZGeu2117B161bs378fbW1tyM3NxbRp07B48WLceOONyM3NNd0+z549i71792L//v3Yv38/Wltb4fV60dPTA5fLhZKSEsydOxfXXnstFixYoHg8HR0dqKurwzvvvINDhw7h1KlT6O3tjT7XpZdeiuXLl6OmpsaoX4FpxCcgAUOtC9SspDHrKhKppCuxi9PDJ71I9liAZAKWUgHWYAhZjqHCJ5/CtmLCAI59JF+YHwqHEQqFo0WqUsVigPhEBBERJU5q8DS+HS0REREln9jCEz2JVHKUCrq0FHzVN7XKFjJ9eLYb92+qx+pllaipmKDpOJNpKMEiC9vqmtFwrH3YdbmAoRSMZQvLWHxFRGRCNrUJWBlYgaWnkMo/GEp44aqW7gwJtSCUScByOqyK4/1SLY/FzCotwHdvnodHflVveMF1nszriEgkKYwonUxbgJXpcnNz8U//9E/43ve+BwB45pln8Pbbb+Paa69FSUkJenp68Je//AV//OMfEQwGUVpaipMnTwKAZFJWKmjpjWuxCBAEAeFPJv6MItVq8NTZbl29e8lckvW5odFPy2dHTzFpJurt7cXatWvx+uuvD/t5R0cHOjo68N5772HTpk14/PHHcckll5hqnxs2bMDzzz8vel93dze6u7tx5MgRvPTSS1iwYAEeffRRFBaKF+Hef//92LRpEwKBgOxz/eY3v8GSJUvw05/+FOPGjVP/ok0uIFJwo7YFodO0LQjFj0us+NLnH/m+G02qqEm5AGvo/h6f/mP09Ss/djAYgtNijd6WwhaERETJIbUqkwlYREREqSfagtDgcSKlhYFqE7CaW7oUU6SAoUndDdsOYP3KLFMVNJWV5GNNbTU8Xh+aTnnR5w8g22lDRalbsQURERGlj9rzYibO4ek55sFAMKULVxNKwMqSS8CyKKZGaQ03WFBVgvUrawwvuJYrJIsw69wFkRLTFmBlZ2ejs7MTAOD3+2GzyR+q338+ojcnR19rKqP3uWzZMvj9ftx3330YGBjAgQMHcODAgWHbWCwW3HXXXejq6sLGjRsBIK2Twl1d/QgE1A0SFxbmwGoVEAqF0dFhXGqXJRyG3WYZMdnZfMZr6H4oPZL1uaHRT+1nx2azoqBAvJBzNAkGg1izZg12794NACguLkZtbS1mzJiBzs5OvPLKK3j33XfR0tKC22+/HS+88ALKy8tNtU+73Y45c+agsrIS06ZNQ2FhIWw2Gzo6OrBv3z784Q9/QH9/P9566y2sWrUKL7/8MrKyRrbK/eCDD6LFV9OmTcPll1+O2bNno6CgAD09PdizZw9+//vfY3BwEH/605/Q0tKCX/3qV6rSLs0uHA6LDi7bLMoXW4B5V5FoWQXkcib/66zYYHggGFKMX/Z/8l2mp29A975tNuWL4sFAKHpBKlaQF8ECLCKi5LBaLLBZhRHniwGZv8lERESUHOLXyAa3IFR4PrWJW1vrmlUnZgSCYWyra8aa2mpV26dSsduFYjcLroiIMoXaNnQZGICF1nN9yhvFGRgMpXTcNJExeavFApfTJroo2WG3Ko6r2yza952MgutcJmDRKGbaAqy8vLxoMdS5c+cUi6q8Xu+wx5pln7W1tbjqqqvwq1/9CnV1dTh16hR8Ph+Ki4tx2WWXYdWqVaiursb3v//96GOKi4t1Hf9oYREETCxw4XTb8AKLY2e64PH6eDFHRARg8+bN0UKoGTNmYOPGjcPOH7fccgsefPBBPPPMM+js7MS9994rmTiVjn3eeuutWLt2LbKzxYvlbr75Ztx111249dZbcfLkSXzwwQfYtGkTbrvtthHbWq1WfOELX8DXvvY1XHrppSPur62txd///d/j7//+79He3o79+/fjF7/4Be688049vwZTkRqotdkEdS0ITdpHXbKVk0ji1OxSNwRAUxtCrduLJWD5VaSaRJJPuvsGNeztPAHABeOVW4jGFoLJJ2CxEICIKFkcNisCweEDoEzAIiIiSj2xBAvDWxAqJFypaUHo8frQeKxd034bjrXD0+ljuhQRESXEqrIIJxNbEO4/3qH5MQOBYEoLsNR0rpB/vAU+/8ifO+1WxdQotcV3YowsuFZTgJVIq0aidDLnrBuAsrKy6O3Tp08rbh+7zfTp0021z0mTJuHuu+/Gli1bsGfPHuzfvx9//vOf8fDDD6O6emjFygcffBDdfu7cuXoOf1QR6/3a3tWPdU+/hcc370NzS1cajoqIyByCwSCefPLJ6L8feugh0eLdtWvX4qKLLgIA7N27F3V1dabZ59SpUyWLryKmTJkSbeULADt37hTd7qGHHsLjjz8uWnwVMXv2bNx3333Rf2/ZskV235lCKoFpcDCoKqLXrBcx3h6RK0gA+461j/geUOx2oaq8SNPzV5aJt7OUIlbUJFYMFi9agOXTV4A1t7xINlY6Ijb1SqpdIiA+EUFERMYQK2pmARYREVHqibYgNLoAS2HyUlDRgvDwSa+mhUHA0EKippNejY8iIiIaTn0CVmaNJXq8PrR0aE/A6h8IIqjQ6cBI9gQXRUstvB5KwJJ/bpvBbZn1UlWAxQQsylCm/eTOmjUreruxsVF2W4/Hg5aWFgBAUVERCgu1Taqlc5/AUNrWkSNHAAy1Qbz44ot1P9doUN/UiqZTXtH7whha6XP/pnrUN7Wm9LiIiMxiz549aGtrAwDMnz8flZWVottZrVasWrUq+u/t27dn1D6BoaStCI/HI7qN2+1W9Vyf+cxnokVfZ86cQU9PT0LHZgbHPuoU/fmO+jP4w9snFR/vTHC1TTLUN7Xiz++dkbxf7HvA8oVlqgcObFYByxeWKW8YQ6yoyaeiAMs/qL8Foc0qYNnCMlXtKGILxOTaIrIFIRFR8ogVNbMFIRERUeqJFmAZPNloUUgOUVPwJdY6SI0+nY8jIiKKUFuYnGkJWId1FikPDIYQTOFrTaSwqLmlC90SY81vH/gY3i7xhc0RSkXkqZKjqgWh+eYuiNQwbQHWVVddFb29a9cu2W3feOON6O2rr746o/YJAFu3bsXg4FAywvLly+FwOBJ6vkzW3NKFDdsOQGl+MBAMY8O2A0zCIqIxKfYctWjRItltY+9XOreZbZ8AcPLk+SKiRFv0Wq1WZGVlRf/d39+f0POlW31TK36+uUHy/hMfdys+h9laEOr9HlBWko/VyyoVi7BsVgGrl1Wi/IJxmlb7iBU1aUrA0tiCMHKcZSX5sgVV54/v/C9MLgErxAIsIqKkEWshwAQsIiKi1BNrvW54ApZCwpWalocup3LasZhsnY8jIiKKUDsummlDiXqLm0Ph8LAOA0rUdJ6Qo7cFYX1TK+7fVB9d9Bvvo/Y+vLzruOxzmCUBy2m3KhaiOU02d0Gklmk/ufPnz8f48eMBAO+88w4OHDggul0wGMRzzz0X/ffSpUszap9nz57FU089BQCw2+346le/qvu5RoOtdc2qkh6AocnGbXXNST4iIiLziaQmAkBVVZXstuPHj0dJSQmAoQSpjg7tPdDTtc/29nY88sgj0X9//vOf1/U8EbHH4nK5EkqvTLdIoVKiiUZma0GYyPeAmooJWL+yBtXlRYgf6hYAVJcXYf3KGtRUTACg7QJOrKjJP6B8QT8Q0N6CsHRi7rDjVNM2MLZIS26wICAyEUFERMYQO69IDYoSERFRcoTCYYgFWBhdgKVUYKWmAGt2qXvEtasSAUBFqVvjo4iIiIZTmwwZNlEFlsfrQ11DC/605xTqGlrg8fpGbKO3uBkYakOoVq4rsWJoPYuiI/MBSmPnSvMFRn8nSoRSCpZUq0UiszPtcgmr1Yo77rgDP/nJTwAA69atw8aNG1FUVDRsu4cffhiHDh0CAMybN29YilWsLVu2YP369QCGCq1iC6iStc9Tp07BYrHgggsuEL3/6NGjuOuuu9DZOdQ+6Nvf/jamT58uuu1Y4PH60HisXdNjGo61w9PpQ/E4V5KOiojIfJqbzxedTJkyRXH7KVOmRNvmHj9+XFfhUTL3efr0aRw+fBgAEAqF0NnZicbGRvz+979Hd/dQitOiRYtw8803az7uWC+88EL09lVXXaXYMsDMtBQqyTFTH3UjvgeUleRjTW01PF4fmk550ecPINtpQ0Wpe8R3BYfdit5+dauixAqw1FyUDwyG0NzShb0a2iZ/dt4UlJXkR/+tJgEr9vgG5VoQGvCZISIiceItCJmARURElEpSqb+GJ2AppC+r2V2x24Wq8iI0aLgOnltexHFwIiJKmPoWhEk+EBWaW7qwta4ZjcfaEXs4AoCq8iIsX1gWHUudnUCRspb0rFyXA+0Krf7k6GmtZ9R8gFkSsAAg12XHuW7p36PZFo8TqWXaAiwAuOGGG7Bjxw68+eabOHr0KJYvX47a2lrMmDEDXq8X27dvR319PQAgPz8f9913n6n2eeDAAfzjP/4j5s2bh/nz52PatGlwOp3weDx4++23sXPnTgQCQ3/Q/+7v/g633XZbwsefyQ6f9ELrqSMMoOmkF8VVvPAkorEjUpQEAAUFBYrbu91u0ceaZZ+7d+/Gj3/8Y9H7Jk+ejJtuugm33XZbQgVTx48fxy9+8QsAgCAIWL16te7nMkp+fpbyRp+IrJ61WAQMQkDjcW2FSlIK3NkoLMwx5LkS9d7xDl3fA063+zCrbHh7ysLCHMyaLt+yMjvLJnuBF8uZZYv+ns529GH/8XY0NCsnu53y9OJXO46qKqI6vy/7sPfEmSW/EggAXNmO6GOcZ6TbM2e5HKZ5v8m8Yv/e8PNCpJ5YCwK2ICQiIkotqUUnSgVTWilNXKtJwAKA5QvLcPBEh6oJVZtVwLKFZaqel4iISI5N5XkxLBYrmUL1Ta2SqU9hDC3OPXiiA6uXVaKmYgKK3S4Uj8uCp7Nf8758qUzA0rgoWs/CZSlGfydKRK5CApaZFo8TaWHqAiybzYYnnngCa9euxc6dO9HW1hZt1xdr0qRJeOyxxzBz5kzT7TMUCmHv3r3Yu3ev6P0ulwt33HEHvvnNb0JQ6B0/2untzdun83FERJmqr68vetvpdCpuH7tNb29vxuzTarXi8ssvx7x58xIqvurq6sIdd9wBv3+o2OarX/0q5syZo/v5jKI26jmWIAg42Nwh2lJBD5fTpus4kqFf5/ncNxDQ9RqyNERSB4JhHDvTiRdebUL94bOqf/9vvHsGIY1vVjAcHvZ6gioeHwydf4xczHQY+j53NDYJgmCqQRkisxNrITDAFoREREQpFZRou241OAHbojCOrzZZpKwkH6uXVSq2FLJZBaxeVjksLZmIiEgvtedFreOaRlLbci8QDGPDtgNYvzILZSX5mDYxT18BloaxaaXWeUq0ttbTE2AixWairiCKBVhMwKIMZeoCLADIzc3F008/jR07dmDr1q1obGxEe3s7cnJyUFpaiiVLluDGG29EXl6e6fb56U9/Gvfddx/efvttNDU1wePxoLe3F263G1OnTsXf/M3f4Prrr8fEiRMNO/ZMprc3b3YCPX2JiCj9brrpJtx0000AgMHBQXg8HuzduxfPPvsstmzZgi1btuDWW2/F9773PVit2r50+/1+3HnnndEWipdccgnWrl1r+GvQI6ghFcliESAIAsLhMHp8A4Ydg91m0XQcyaSlICqWy2HT9RrEkkqkHDl1Dr985aCmJCtA3yDFwEBw2OsZVDF57495jH9AerBgcDBomvebzCv2741UC5dYLOojGuIQaSHAFoRERESpFZD4/qo2kUot5RaE6vdXUzEB61dmYVtdMxpE2ivNLS/Cspj2SkRERIlSm4CVzhaEWlruBYJhbKtrxpraat3FUWoXBwtC4vPSWsalAf0BJmLUvvepwAQsGq0ypnJl8eLFWLx4se7Hr1ixAitWrEjpPgsKCvCVr3wFX/nKV3Q/x1gyu9QNAdBUxSsAqEigpy8RUSbKzs5GZ2cngKECI5tN/nQeSX4CgJwcfe2kUrVPu92OkpISXHfddVi6dCnuuecebNu2Db/85S/hcDhw9913q36ugYEB3HXXXXj77bcBALNnz8Z//Md/wOFwqH6OZOrq6kdA5cRsYWEOrFYBoVAY4YBxBTQD/YPo6NCXUGa0qYUuXd8DphS5dL0GLePvu987k7IBh64e/7DX09WtvGLrXGdf9DHeLuntu7v7TfN+k3nF/r1R+rzYbFYUFGSn6MiIzE0sAcs/EEI4HB7zaddERESpIrWAwGZ0AZZBLQgjykrysaa2Gh6vD02nvOjzB5DttKGi1I3ica5EDpWIiGgEm8rFdOlqQain5V7DsXZ4On2SaZhK1LYgdNitsIsswNJCawKW3gATMWrf+1RQKpZjAhZlKvP8X0ZjXrHbharyIk2PmVtexItQIhpzYhMYz507p7i91+sVfazZ92m1WvGjH/0o+vhnn30WXV1dqh47MDCAb3/723jjjTcAALNmzcIvf/lLjBs3TtexmEmkYNkIYpPF6ZLq7wFaVhqlcrVXIK7ATk3qViBw/gAHZQr05NoTEhFRYsQGBkPhMP/2EhERpVBQIilDbUtAtZQKrLQkYMUqdrtwZVUJllw2FVdWlXDcm4iIkkLteVFNMnoy6Gm5FwbQdNIreg3utFtx0+KZ+MYXL8LX/3a26OPVpkw57daEx9S1FhYZOR9gpiR7pQQsrYVqRGbBTy6ZyvKFZarjD21WAcsWliX5iIiIzKes7PzfvtOnTytuH7vN9OnTM2afwFBb4JqaGgBDqVrvv/++4mMGBgawZs0a7Ny5E8BQ8dXGjRtRWFio+zjMRE+hkhSxdknplMrvAWZ77RGBuFVaaibuY4u05Aq2pNpxEBFR4qSi8QcG2YaQiIgoVaRSLwxvQahQYGV0wRcREZGR1BbhpCkAS3fLvT5/QLRoLMthjRY3F7mzEtqnw2ZJuDBI6+ONnA8wVwtC6WQviyCYKq2LSAt+cslUykrysXpZpeIJwGYVsHpZJcpK8lN0ZERE5jFr1qzo7cbGRtltPR4PWlpaAABFRUW6i5DSsc+I2BaGSglYkeKr119/HQAwY8YMPPvss6Om+CpCS6GSHDMlYAGp/R7gdJizACt+xbbUCu5YgzFFV3IJWOlatUZENBZIJSv6B41rHUxERETypBawGJ32oPR8Rhd8ERERGcmqclw5lKYKLL0t97KdNtGx1NjX65RYlNuvsgWh025NeGGvngIuo+YDzFTUlOtySN5ntnkLIi346SXTqamYgPUra1AtU837zesuRk3FhBQeFRGReVx11VXR27t27ZLdNtKCDwCuvvrqjNpnxIkTJ6K35Qqp4ouvysvLsXHjRhQVGbM6xEwihUqJjumaMQUq9ntA/MsTAFSXF2H9ypqEvwc4TXoRNxjU04JQXQKW1GpwIiJKnFQLgYEAE7CIiIhSRbIAK9UtCFmARUREJmZT24IwTQVYelruCQAqSt2i3wViWwNLFT+p6UIADBUGJZKAZbNadLUq1rJwWa61n5lSOuWOUyplnCgT6CshJUqyspJ8rKmtxs53z+C5V5tG3H/wxDmUTcpHsduVhqMjIkqv+fPnY/z48Whra8M777yDAwcOoLKycsR2wWAQzz33XPTfS5cuzah9AkBDQwMOHjwIALDb7aiqqhLdbnBwEN/5zneGFV/993//N4qLixPav5nVVEzAourJ+PP7H424TwAwt7wIJz7uRmfvgORzmHUlSeR7gMfrQ9MpL/r8AWQ7bagodaN4nDHnfqmkknQLxhdgqbj4V5uApSZNi4iI9JFuQcjiVyIiolSRuuYxerJR6flYgEVERGamNgUpXS0IIy33Go61q37M3PIiFI9ziRZSxSZXJjoePpSApf85ElkUPLRwOQvb6prRcKwdsa80Mh+wbGEZ/vOVg+jxDYo+h9r0s1SQa0EotciNKBOYc9aN6BPVM8RTS954/yOse/otPL55H5pb5NtRERGNNlarFXfccUf03+vWrUN7+8iLkYcffhiHDh0CAMybN29YilWsLVu2oKKiAhUVFVi1alXS93n48GFs3LgRvb29Mq9yqPjqzjvvRPiTK73rrrsOeXl5I7aLFF+99tprAM4nX43m4quI7CzxVSL/+s1PY01tNXJkVpEA5r+QKXa7cGVVCZZcNhVXVpUYVnwFmLcAazAQhsfrQ11DC/605xTOtPUoPiY29So+QSuW2pVcRESknWQC1iATsIiIiFIlVQlYigVYOpItiIiIUkV1C8I0jiVqablnswpYtrAMgHgHgNjzdqIdIRx2K+wJFFEl2gIwsnD5wW8twDe+eBFuWjwT3/jiRXjwHxZgTW01ykryZce9bRbzlIbIJWAlkjJGlG5MwCJTO/6RdHFVGEDDsXYcPNGB1csq2ZKQiMaUG264ATt27MCbb76Jo0ePYvny5aitrcWMGTPg9Xqxfft21NfXAwDy8/Nx3333mWafnZ2d+NnPfoZHH30UCxYswJw5czB58mTk5OSgv78fZ86cwdtvv4233347Wnw1c+ZMrFu3TvT51q9fjx07dgAAHA4HVq1ahX379im+nnnz5sm2NMwEYpO6AoBJhdkAlC9UxvKFTCqKz9y5DnT2DEDLUMXBDzvw1wMfa3pMIHB+ayZgERGlh9Qq2rZzfSi/YFyKj4aIiGhskpootiY42RlPKeHKTO19iIiI4qktwgmnKwIL51vubdh2AAGZMU2bVcDqZZUoK8kHIP5dIPa8nEjxFDCUfp1oEZcRit0uyS5RcuPeiRaAGcnltMEiCKKtLs2+cJxIDguwyLSaW7rwH/9zQHG7QDCMDdsOYP3KrOgJlohotLPZbHjiiSewdu1a7Ny5E21tbXjqqadGbDdp0iQ89thjmDlzpun22d/fj507d2Lnzp2y21177bX44Q9/CLfbLXr/u+++G709MDCAH//4x4qvBQD++7//G5/+9KdVbWtWA4GRBVgOuxXCJ6ttnTIFVg6bvn7zo4WWBCwB0FQQFWG1CMjPsaOzd2TkswDAZrOMKJjq7JFuGSnlw7Pd+NOeU3A5bZLx0gAQTOOgCRHRaNfR5Rf9+X+8cgh/PdSK5QvLeL1KRESUZGKpFwATsIiIiGKpTsBK81BipOXev2zcK3r/7FI3aj8zY9i1dkChAMuZYPFUoi0IU/ErlWuzqDZVLBUEQUCuy4auvpHj2Yn8jonSjQVYZFpb65plq5pjBYJhbKtrxpra6iQfFRGReeTm5uLpp5/Gjh07sHXrVjQ2NqK9vR05OTkoLS3FkiVLcOONN4q27UvnPj/1qU/hxRdfxFtvvYXGxkYcP34cZ8+eRX9/PxwOB/Ly8jB9+nRceumluPbaazFjxgzDjn+08Q+OHFyOvcCyyxQZjfVVJHIXovEmFWXjbEef5kGH/oEgfP6RRXIVpW5844sX4ZFfv4+z53zanlTEoQ/P4dCH5xS3C8q0JyQiIv3qm1rx69eOSt7P5GYiIqLUEJt0BYwvwFIqsFJKyCIiIkontcmQ6UzAipBbyHTL5ypwQXHOsJ8lPQHLbk2oq0QqfqdyRWZGp4ImKsdlFy/AGuNzF5TZWIBFpuTx+tB4rF3TYxqOtcPT6UPxOPHIRSKi0Wrx4sVYvHix7sevWLECK1asSNk+LRYLqqurUV1tTNHs66+/bsjzZCKxFoSxyU5yK0W0FCCNRloSsLIcNiyqnow/v/+Rpn309gdEf37xhYUoHudKeeRzMN3L1oiIRqHmli5s2HZA8W8sk5uJiIiST6rtuuEJWArpEWxBSEREZmZTeZ4Saw1nJmKLTcW+C8Sely2CAJvVgoDOhaoOuwX2BFK0UvErzZQELADIddlFf84ELMpk/PSSKR0+6dUcwxgG0HTSm4SjISIiMiexAqzY1SFyK0XM0Ks+nbQUYA0GQsiRuBjUoyjfCUB93LdRWIBFRGQ8PcnNRERElBxiqRdA6lsQsgMhERGZmfoErCQfSILErsXFxj/jkykTKe5x2BJrQSj1XcVIcnMCqV4QrESqACsVvyeiZDHX/2VEn/D5xRMjlPTpfBwREVEmEm1BGHMBKBeHPOYTsBzqC7ACwRAGA8a17yvMywIA2JmARUSU0RJJbiYiIiLjBUPi121Gt9tRajHIBCwiIjIztSlIZi+CEUuxEvsuEP89IJE2hE6HNaHH9/kDeHzzPjS3dOl+DiVyC6/N9h1FqiXjvmPtSf89ESXL2J55I9NyOfV1x8zW+TgiIqJMlFgLwrGdgKXl9Q8GDC7AGjdUgGX0JIASsVhuIiLSj8nNRERE5iK16ESpYEorq0X+Ws7o/RERERnJpnAei8jIFoQi3wVii46aW7rg69cf5uGwWRLuLNFwrB33b6pHfVNrQs8jxemQfn9TPR4tp76pFftkFrUl+/dElCzm+b+MKMbsUje0XqYKACpK3Uk4GiIiInPyixQFqW1B6BzjfdSdGlYqBYIhDARGFrvpIQAoyB1qQWhnC0IioozG5GYiIiJzkbrmSXULQhZgERGRmVlVjkmavP4KAZHzvlhqV+S8Xd/Uivs31WMggYW2DrtVtuuEWoFgGBu2HUhKwpNcgZja9LNka27pwoZtBxQ/Y8n8PREly9ieeSPTKna7UFVepOkxc8uLUDzOlaQjIiIiMh+xBKzY1oJyCVj2BFfqZDpnmhKw8nMd0Yv0lCdgsQCLiMhQTG4mIiIyl2AwNQVYSgVWFsEck5tERERi1J4XzZ6AJd6CULwAK1LwE5D4rqCWw26RHXPXIhAMY1tdsyHPFUtuUbba9LNk21rXrPq9SNbviShZzPF/GZGI5QvLVFfi2qwCli0sS/IRERERmYtSC0K51TiOBHrVjwZaWhAGgiF4e/yG7LcoPyt628YWhEREGY3JzUREROYSDIlf8xi9+EVp4trogi8iIiIjCYKg6lxl8vor0cJrsQIsi0XQVPAjx2lQAlZEw7F2eDp9hj0fID/ub4YELI/Xh0aZ1oNikvF7IkqWsT3zRqZWVpKP1csqFU8GNquA1csqUVaSn6IjIyIiMge/aAKWuhaEWgqQRiMtK5UGAyF85OkzZL+Fec7o7VRf8IpFcBMRkX5MbiYiIjIXtiAkIiJSR00bQrOPJYomYIn8bDAQ0lzwI8Vht0IQBMOKsMIAmk56DXmuCKdM54tUd2QQc/ikF1o/Wcn4PRElS/r/LyOSUVMxAetX1qBaYlDbabdg/coa1FRMSPGRERERpVcwFBJdteNU2YJQ7kJsLBA0tIQIA+jxDRqy38J0JmCZfNCEiCgTMbmZiIjIPFJVgMUWhERElOnUtKILmzwCS2xsXOy7QI9vUHPBj5TImLqR5/o+f8Cw5wLMn4Dl0/l6jf49ESULC7DI9MpK8rGmtho1s4pH3DcQCGFycU4ajoqIiCi9BgbFWys4YgqrHDJFVmO9BWG6DG9BmNoL3gALsAAMxVzXNbTgT3tOoa6hBR4v46uJSD8mNxMREZmHWCsigAlYRERE8VQlYJm9AEuk9bBYapeRryMypi7V9liPbKfNsOcC5DtfpHpBsBiXztdr9O+JKFn4SaWMMXOKG/VHPMN+Fg4D//vXD7GwqgTFbrZxICKisWNApP0gMLywSq7Iaqy3IGxu6UrLfv+y/2PMmDIOZSX5qU/AkpiMGCuaW7qwta4Zjcfah616EwBUlRdh+cIyFkYQkS5Dyc1ZeOKlBnT2Doy4v7q8CMv4N4aIiCjppCZDjW63o1iAxQQsIiIyOTXjkiavvxId6xRLwJLrEqGV026Fx+sTTd/SQwBQUeo25Lki5F6v0UXpeswudUMANKWSJeP3RJQs6S9zJFJp6oRc0Z9ve/ME1j39Fh7fvC9tk6lERESp5g+IDyw7Ywqr7EzAElXf1Ir7N9WnZd8fnu3G/ZvqUd/UmvICLLOvWkumyHveEFd8BQxd7Dcca4++L0REepSV5KN6RtGIn9usAtbUVrP4ioiIKAXM0oLQDJObREREctScq8w+lhgIDh8fD4fDot8FCvOzYNSZ2WG34vBJr0HPBswtL0LxOGMDRpwO6TkBwQRF4sVuF6rKR46fyEnG74koWcbuzBtlnPaufsn7OHFGRERjjXQCVmwLQpkELJnirNGsuaULG7YdMGyVkh6BYBgbth1Aj28wpfsNBo2Lxs4kat/zyPvCgn4i0ivbaR/xs0AwjEGJomkiIiIylljbISAZLQjlp1UU7iYiIko7NemQJq+/GlGAJVUwludyaC74keKwW3C6rceQ57JZBSxbWGbIc8XKhHH/5QvLYFPRBhNI3u+JKFl4KUAZobmlC//9xybF7ThxRkREY4VfVQtCJmDF21rXnNbiq4hAMIxjZzpTuk+p1eCjnZb3PBAMY1tdc5KPiIhGK5dT/Lzr8wdSfCRERERjk1kSsJTuJyIiSjc1xS9Shc1mEd+CUKwlIQBYrYKmgh85+493YMfeUwk/j80qYPWyyqSkZWfCuH9ZST5WL6tUfE+S+XsiShbz/x9IBE6cERERxRsYVG5BKJeA5ZQpzhqtPF4fGo+1p/swos6e86V0f2OxAEvPe95wrB2eztS+N0Q0OmRnjUzAAliARURElCpSE69GF0QpFXRZTNDeh4iISI6a4uSwySOwAqHh4+NSY58WQVBd8CNHAPBf2w8ikSFWAUB1eRHWr6xBTcUE/U8kQ25RtpnUVEzA+pU1qC4vGtEiMhW/J6JksaX7AIiUJDJxxn6wREQ0WqlpQWiXWe2SCVHERjt80gtzDxsk11hsQajnPQ8DaDrpRXEVv0cSkTZSCVh9LMAiIiJKiVQlYMk9nyAAAguwiIjI5GwqWhCaYS2nVFtBACOCOyS/B3xSdDVU8JOFX/zPQXzc0af5WARh5D7VmlyUjS9cPg0Vpe6kz123eHol73t88z4sX1hmmkSpspJ8rKmthsfrQ9MpL/r8AWQ7bSn5PRElCwuwyPQ4cUZERDSSVAtCpy02AYstCGON9QSSsZiApfc9Z7EEEemR7RRPwOLfFCIiotQIhkYuOrFaBMMLouQStYwu9iIiIkoGNecrM7QglEq3BIBA3GJTqeONfa1lJfm4+pLJ+M3rH2g+Fr2/DptVwDeuvTglRU/1Ta3YsO2A5P0Nx9px8EQHVi+rNFWyVLHbhWI35/RpdBh7M2+UcThxRkRENJJUC8LYwiq5IqtMiSI2kstp7NqDS2YW46bFM/HZeRcgExY4j8UCLL3vebbBnxUiGhukErB8/bw2JSIiSgWxa55kFETJPSfbDxIRUSZQk4AVNkEvAbkisPjiLOkkzOGvVc1rN4rFImD1ssqUFF81t3Rhw7YDiildgWAYG7YdQHNLV9KPiWgsYgEWmZ7eibOx2GaHiIjGDskELHtsApZcC8Kx9zVwdql7RD/5RJRPzseMC8bhjX0fQSYN2zTGYgGWnvdcAFBR6k7C0RDRaCd17crFQURERKkhlpIhl1all9xzJmN/RERERou05ZMjEiyZcmLplhHxCVhS88LxhdP2FI6LL66ZkrKkqa11zapbJAaCYWyra07yERGNTWNv5o0yjt7J0s07j+HxzftYwUtERKPSQEC8ACs22UpuNc9YTMAqdrtQVV5k2PM5bFZNF7bxSifmGnYsashFdieLx+tDXUML/rTnFOoaWuDx+lK6fz3veUlRNg5/6E35sRJR5svOkijAYgIWERFRSqQqAcsiCJIpyGxBSEREmcBmUZGAZYIVpwGZBaXxY7JBieONL462pzABa+qE1Iz/erw+NB5r1/SYhmPt8HRy/JPIaOytQaYXmThr0HjiCMO8vWyJiIgSJdWC0BnTdlCQaX0wFhOwAGD5wjIcPNGhu2gqln8wqPnCNsJmFfCp2RNw8mxPwsehVigcRjgclv1cGKW5pQtb65rReKx9WFi5AKCqvAjLF5alJHob0P6ef9Teh2d+fygtx0pEmU2qfamPCVhEREQpIZaSYU3SJKvVIoheY6TieouIiChRqhKwTFCAJduCMBSfgCXRgjDutdpSNC6eypT9wye9mhtGhgE0nfSiuMqVjEMiGrPG5swbZZzlC8tgU/FlQAx72RIR0Wgk1YIwNtlK7tz3y98fHpPnxrKSfKxeVqn7e0WsNq9P84UtMLTqavWySkwuzkn4GLRKRRvC+qZW3L+pHg1xxVfA+QL5+zfVo76pNenHApx/z7XOg6TjWIkos2U5baLpzSzAIiIiSo1UJWANPa/41AoTsIiIKBOoOV+ZoP5KNtE/vhBaqljLGjcoqHdcOC/brmn7ueVFKB6XmuImveMOfRyvIDIcE7AoI0QmzjZsO6ArsSLSy3ZNbXUSjo6IiCj1BkQKsKwWIdp2sL6pFRu2HZB8/IETHWg6dW5MpkTWVEzA+pVZ2FbXLFokpJbeVWCLa6agpmIC9h/Xl56ViGAoDFsSu082t3Sp+r4WKZBfvzIrJelSNRUTUJyfhbbOfs2PTfWx0tjx2muvYevWrdi/fz/a2tqQm5uLadOmYfHixbjxxhuRm2t8TH2i+wyHw9i3bx/+8pe/4P3338cHH3wAj8eDcDiMcePGoaKiAosWLcKXvvQl5OePvf9fLIKALKcVPv/wczQHNImIiFJDbJI2WQVR8e2MlH5ORERkJjYVCZFy6VOpIpZuGb0vGJeAJVWAZTWmBeEEdzZ8/i5V89Q2q4BlC8t07UcPl0QitxKpJG8i0o//V1HGiEyWPvfHJpz4uFvz4yO9bFNVbUxERJRMYi0IHZ+0HzRrEYyZlJXkY01tNTxeH5pOedHnD6C1ow9/fv8j1SlRLoe+r9JTJwwVOCSrFYacYDAMaFusJcvj9eHwSS98/gBcThv+sr9FdbF8Kgvk/QNBeLq0F19FsJifjNTb24u1a9fi9ddfH/bzjo4OdHR04L333sOmTZvw+OOP45JLLjHNPpubm/H1r38dH3/8sej9bW1taGtrQ11dHZ566incd999+PznP2/I8WeSbKdtRAEWE7CIiIhSQ2yRTPISsCQKsNiCkIiIMoCaFKgwhhZipbO9rtw4bSDuvoBEsVZ8aqVdZwvCYx91YtrEXJxu65U9Lpt1qPtBKsfbZ5e6IQCaFhqnskUi0VjCAizKKGUl+bh16UX40TPvaH4se9kSEdFoItaC0PFJtNHWumZTFsGYUbHbhWK3C80tXdi88wNNLfouLMlL6MLWiDaIWsmtGtOiuaULW+ua0ZhAghiQugL5huOehGPTWcxPRggGg1izZg12794NACguLkZtbS1mzJiBzs5OvPLKK3j33XfR0tKC22+/HS+88ALKy8tNsc/Ozs5o8ZXD4cCnP/1pzJs3D5MnT4bD4cCHH36I//mf/8GxY8fg9Xrxne98B4888giWLl2a0PFnmqFVp/5hP+vrZwEWERFRKsQnYQDJW/giWYCV+nU2REREmkm10o0XDgPprC2WG6uNP+9LtiC0xLcg1H+y/vBsD6wW4MJJefjw4+5h46IChtoOLltYlvLFzsVuF6rKi9BwTH3HhVS2SCQaS1iARRlnvDtL92PZ+oGIiEYLsRaETrsVHq8PjRoutAAWlgDaitYixid4YZvIxb5eRkSHR9pb6mkLHS/ZBfKRQjEt75EUFvOTETZv3hwthJoxYwY2btyI4uLi6P233HILHnzwQTzzzDPo7OzEvffei+eff940+ywpKcE3vvENLFu2DOPGjRtx/ze/+U387Gc/w/PPP49QKISf/OQnWLhw4ZhqRygW+88ELCIiotQQm6RNViKVdAtCVmAREZH5xbflkxIKh2FBGhOwZMYf48cmpbY1sgALAIIh4HRbD+78chX6+gPo8weQ7bShotSd1vH15QvLcPBEhylbJBKNJbwaoIyT5bDB5bDqeix72RIR0WgxEBBvQXj4pFdzIlGksGSs0lO0BgC9/YNYvrBMdZJV/IVtOgqwtCR8iVHb3lKLZBXI1ze14v5N9YYUX0WwmJ8SEQwG8eSTT0b//dBDDw0rhIpYu3YtLrroIgDA3r17UVdXZ4p9zpo1C6+++ipWrVolWnwFADabDf/8z/+MyspKAIDX68WOHTt0H38mErvm5N8OIiKi1BC73lE7wayVVAJWsloeEhERGcmmOgHLuDFAPWRbEMYlYAUljjW+aFpvC8Lh+w5j1/sf4cqqEiy5bCqurCpJ++LmspJ8rF5WqThWnY4WiURjCQuwKCNNLMzW/Bj2siUiotFEtAWh3ao7ZWMsTw7rKVoDgNOtvQld2KajBWFAQwGWx+tDXUML/rTnFOoaWuDx+nQlhSlJRoF8MgrFABbzU2L27NmDtrY2AMD8+fOjRUrxrFYrVq1aFf339u3bTbHP7OxsOBwOxX0KgoC//du/jf67qalJ62FnNFcWE7CIiIjSRWyS1pakgijJBCzWXxERUQZQnYA1cg1wSgVlDkB1Albca7UZUIAFnO8qYSY1FROwfmUNqsuLRuSWCQCqy4uwfmUNaiompOPwiMYEziBQRrqgOAcnPu7W9Bj2siUiotFEqgWhWOsjNcZyYYneifHBT1ZZDV3YZmHbJ63uYi/1BQx9B1m2sGzEqqK0JGAFlUdNIm37GuNeSzIkq0A+GYViLOanRO3atSt6e9GiRbLbxt4f+7hM2CcA5OTkRG/39/cn9FyZRioBKxwOQ0hSCyQiIiIaIjbxmqxEKqnnlSrMIiIiMhO145KhNCdghWQWk8YXZ0kVa1njrsXtBo3JRrpKFFeZa+65rCQfa2qr4fH60HTKa5oWiURjxdidaaOMNqFA2wmCvWyJiGi0EU3Aslkwu9QNAdBUODPWC0v0Fq3lZtmjt/Vc2JqxBWF9U2tSkqOkJKNAXm9LSSUs5qdEHTlyJHq7qqpKdtvx48ejpKQELS0t8Hg86OjoQGFhYUbsM36/F1xwga7nyFRi55RwGOgfCOo+3xAREZE6YhOvySqIkizAYsE1ERFlALUFyuluQSiX5h/fglCqWMsaNwZrRAvCCDN3lSh2u1Ds5lgmUapx9I8y0oQC9S0I2cuWiIhGo4HBkQPLDrsVxW4XqsqL0KChAGWsF5boKVoDgIumuUf8TMuFbTpaEMqtGktW2z4pySqQ19tSUg6L+ckIzc3N0dtTpkxR3H7KlCloaWkBABw/flxXMVQ69tnZ2Yn//d//jf776quv1vwcmSxbpAUhMJS2yAIsIiKi5BJbcBI/6WoUqcKuZCVuERERGUl9AlaSD0SBVFtBQKQFoVQBVty52cgx2bHcVYKIxPGvAmUktQlYTrsF3795HouviIho1BkIiLcgBIDlC8tw8ESHqkIaFpZAV9EaAEwsVF8QLsZsCVjJaNsnJZkF8npbSkphMT8Zpbv7fAv1goICxe3dbrfoY82+zwceeACdnZ0AgGuuuQYVFRW6nsdI+flZqreNTKZaLAIKC3MUth6puED8MfYsu67no8yQ6OeGxiZ+boiMJ1qAlbQELPHrOYEFWERElAGsKouQTN2CMBjfglB82/iiaaPGZMd6VwkiEscCLMpI6ifWBFw4KS+px0JERJRq4XAY/gGxBKyhi8eyknysXlapmGbEwpLztBStRSR6sZ6OBCypVWPJatsnJsthxfduujRpnzsjE2YmFrhwO/8fIYP09fVFbzudTsXtY7fp7e3NiH2+8MIL2LJlCwAgPz8f//RP/6T5OZJBT/KFIAiqB6Rj5eU4RH/ePxBMWgIHmYfezw2NbfzcEBlH7HoneQVYEglYbEFIREQZwKa6BWGSD0SBWHvhiBEJWBLjnvHnbKtF0NUNId5Y7ypBROJYgEUZp76pFRu2HVC1rX8wCJ8/gOwse5KPioiIKHWCobDo6qNIAhYA1FRMwPqVWdhW14yGY+3DLigFDF0gLltYxsKST6gtWotw2CwQEhxYT8dEvNSgRTLa9knpHwgiL/v8dzOP14fDJ73R9lyzS92q2ziK0dtSUszMKf+fvbuPr7qu/8f/eJ9zdn3B2XYGDHE6BgybY8oMJYd8qmlFtiU1I4Ws/CjqT6NPnxVhpUl9Iw2DzAjqk4Zi9JGitkDLD0rKiESGujFg0DgIyIldcbaxi7Odi98f8xx28b4+73O1Pe63W7fOdt7nvF6bh53zfr0fr+fTyn8jRCr9/e9/xw9/+EMAgMlkwtq1a1W1PQyH0bti5ZhMAgRBgM/nk91pKyUp3iz6/e6eAU3zoNgS7OuGJiYtrxsGOInUETvfCVUAS6oFodT3iYhIm1dffRXV1dU4fPgwWltbkZqaiiuuuAJlZWVYunQpUlNTDRnn4sWL2LdvH958800cOXIEp06dQnd3NxISEjB58mTMnTsXt956KxYuXBj0WmA0Ufv5MtLnN3LV/N2j3velqnWN/iwgCALiLCYMuPWfo7OrBBFJYQCLYord0aX6wqhfR5eLASwiIhpXBgbHth8EgPi4kRd983LSsbKyGG3OPjSdcaLX5UZyggUFuVbuzhHhD639YkcDOrpdssfGWYK/CGYSBJhNguxCgtGkxjK6bZ+SptNOdNsGUV1rR4NIQLAoPwsVOgOCeltKimnv6g/6OYj8kpOTA635XC4XLBb503GX69LfoZQUfa2pwjXmP/7xD3zta1+D2+2GIAhYs2YNysrKdM05FLq6+uEWad0rJjMzBWazAK/Xh44O7VXA3APif09b2i6io8OYCwQUfYJ93dDEpPZ1Y7GYkZERXOtroolC7CJxqAKMUsEuBrCIiILT09ODqqoqvPbaayO+39HRgY6ODrz99tvYunUrNmzYgGuuuSaosZ599lmsX79+xLmwn9vtht1uh91uR3V1Na677jr85Cc/wbRp04IaM9b4IlwCS6qqldh9UpuexD4LWMz6A1jsKkFEchjAophSXWvXFL4CgI5uF6ZP5kI3ERGNH65B8ZNDfwvC0WzWpKAqCk0keTnpuG7OZLzy1hnZ44wIYAFDJ/ser7pQgF/RjEwcPtmhq8KTVADLyLZ9ajSdcWLLX4+Jfq7zAahvbseRUx1YUV6IkoLJis83uorWouJpmltKimnvZACLjJOWlhYIQ124cEEx4OR0Okc8NlrH3L9/P+6//364XC4IgoDvf//7qKys1DXf8SA5UfzvabiDrkRERBOR2PlO2FsQMoBFRKSbx+PBypUrsXfvXgCAzWZDZWUlZs6cic7OTuzcuROHDh2Cw+HAvffei23btiE/P1/3eHa7PRC+mjJlCj7ykY+gsLAQWVlZcLlceOedd1BTU4Pe3l4cPHgQy5cvx4svvoisrCxDft5IanX2qjpOqqpUuMhtXPV3iTB9UJnMLXGs2HuzxWIC5Pffjqmwz64SRKRGzASwwlVqMhRjulwuvPTSS3jllVdw7NgxdHR0wOPxIC0tDTNmzMCCBQvwuc99Djk5OYb/DONJm7MPDToqGZxu6cbc/Nj/MEREROQnVQErIU687RFpoyaMZFwAS4BrUNtjVn6+GB1d/YGqZvsaHDh9/qKqx0rtGktJCu9pwT8O/1uxhLnb48PmmkasXpYouahhd3RJVtHKnZKKs609QVUY6+juH7GQQxSMvLw8nD17FgBw9uxZxfZ8/mMBYMaMGVE5pj981d8/FFZ85JFHsHTpUl1zHS+k3kN6GcAiIiIKObELr6GqSCXZgpDnDkREum3fvj0Qvpo5cya2bNkCm80WuP/OO+/E448/jmeeeQadnZ145JFH8MILL+geTxAElJaW4qtf/SoWLFgAk2nket9tt92Ge++9F3fffTfsdjvOnj2LdevWYe3atbrHjAZ1TS14+Z/ym0/9Ipy/Em0vPOJ+jw8my9B7r9Rao1gAK05FhczvfKkEjvZedpUgIk2iPoAVzlKToRjz6NGj+PrXv45Tp06Nuc//fAcPHsSvfvUrVFVV4Utf+pIhP8N4dOy0U1elh5Pvdxk+FyIiokhySbUgtDCAZQQ1ASyjftd62mGYTMKIqmanHF3qA1giixZ1TS3YXNOoeR7BUApf+bk9PtTU2rGysnjMff55S1XReu/8RZhNQyE3vZWw3B4fOi8OICMtQdfjiYabPXt2YCG5oaEBN9xwg+SxbW1tcDgcAICsrCxkZmZG3Zj+8FVfXx8A4Hvf+x7uuOMOXfMcT5IZwCIiIooYsfMMS5grYLEFIRGRPh6PB08//XTg6yeeeGJE+MqvqqoK+/fvx9GjR3Hw4EHU1taitLRU15j/9V//BavVKnvMZZddhg0bNqCiogIA8PLLL+ORRx5BUlJsBnHsji5srmlUXdnqvfPdyI5gZwWljZVujzewUVbqWMkKWAqyrUmYMW2SilkSEV0SmgboBvGXmvQHoWw2G+6//348+eSTeOSRRzBv3jwACJSabG5ujqoxHQ4H7rrrrkD4KisrC//5n/+JH/7wh3jiiSewcuVKzJw5E8BQlaz/9//+H7Zv3x70zzBe6W3Z0NmjUEOSiIgoxgxobEFI2iTFK4erjKqAFWcOfnE+UUP7wNELEf5Fl2Bb9YVSfXM72jr7RnxP7bw9XgTfhrCLbQjJGAsXLgzcfuONN2SPff311wO3Fy1aFHVjjg5ffec738GyZct0z3M8ibOYRBd3+/oZwCIiIgo1sYq/ZlNozpMlA1jMXxER6fLWW2+htbUVADB//nwUFhaKHmc2m7F8+fLA17t27dI9plL4ym/OnDnIy8sDAPT19eG9997TPWakVdfaNa2VvVZ3VvmgEJKq5h+4f9hap1QASywcrWZNNlSfIYhofIvqvxyjS01WV1fj61//Om699Vbceeed2LZtG7761a8CQKDUZDSN+fTTT6OzsxMAUFpaildffRXf/OY3UVlZiYqKCjzwwAPYuXMn7rvvvsBjfvrTn8Lt5sKsGDXVKMRIVQkhIiKKVS43WxCGUjhbEOqpgDVaoorAmN/ohQitiy6R4APQdNo54nvhnHd7JwNYZIz58+cjOzsbAHDgwAE0NopXnvN4PHj++ecDXy9evDiqxnzzzTdHhK8efvhhVnIeRhAEJCeOfR9hBSwiIqLQ8vl8otU8zAZsehEj2YKQCSwiIl2Gbxq66aabZI8dfr/SZiOjpKamBm67XLFZ+KHN2YeG5nZNj2k67RyzMTKc1FTAChzrEd+0LBakUrO2G6rPEEQ0vkVtAEtLqcmrrroKAAKlJqNlTH+QCwBWr14tWo5SEAR87WtfC4zT0dGBkydP6v4ZxrM5uVboeasblKgSQkREFKsGBiRaEDKAZYgkkQvno8UbVgHLiACWhgpYw0JLehZdIqXFeWmhJ9zzZgUsMorZbMYDDzwQ+HrVqlVobx/7Wl63bh2OHj0KAJg3b96IKlbD7dixAwUFBSgoKBix+zeUYx44cAArVqwYEb666667RI+dyMSCvAxgERGNH6+++iq+9rWv4WMf+xiKioqwYMECLF26FP/zP/+DixfVtQYP1re//e3A54CCggL8/Oc/D8u40UxL1QsjSFXAkvo+ERHJO378eOB2UVGR7LHZ2dnIyckBALS1taGjoyOkcxsYGAh0OwKAadOmhXS8UDl22gmt2xnFNkaGk8crf413RABLqgWhSJDKomJNlu/pRKSHvpJCYaC11OTDDz8MYKjUpN5ev0aPOfwN/4orrpAc12w24/LLL0dbWxsAoLe3V9f8xzubNQlF+Vmo13jBrat3ED6fD4LAN0oiIhofpCpgsQWhMZJUBJriLMaE3YzYSaWtAtalRQk9iy6R8pd9p/Dev7tRUZqH91t7wjpvVsAiI91+++3YvXs39u3bhxMnTqCiogKVlZWYOXMmnE4ndu3ahbq6OgBAeno61qxZEzVjHj16dET4qrS0FJdddhl2794tO77VasV1110X9M8RS8QCWH0MYBERxbyenh5UVVXhtddeG/H9jo4OdHR04O2338bWrVuxYcMGXHPNNSGbx+uvv44//elPIXv+WCV50TVEF08lK2BxDZqISBe73R64PX36dMXjp0+fDofDAQA4efIkMjMzQza3nTt3oru7GwBQWFgYqDQda/Sel0ZyQ5FSBazhm029Gj4LMIBFRKEStQGsSJSaNHrMzMxMnD9/HgBw6tQpzJo1S/Q4j8eD06dPAwAsFkugjzCNVVGahyOnOjS1nHENetDrciMlMS6EMyMiIgqfAYnqjmxBaIykBOXfo1EtCNWc7CvR24Iw1sIA9c3tOHKqAzd8aEpYx2UFLDKSxWLBU089haqqKuzZswetra3YuHHjmOOmTp2K9evXS55DRmLMo0ePjtgsVFtbq6oC9fz580e0N5wIkkUDWOLhaSIiig0ejwcrV64MdDyw2WyBQHNnZyd27tyJQ4cOweFw4N5778W2bduQn59v+DwuXryIRx99FACQnJzMjbzDeCTWi0N18VSsnRHAFoRERHr5A04AkJGRoXi81WoVfazROjo6sG7dusDX999/f8jGCjWxzUJqiJ3jhotUqMpPTQUssfdmpbVdkyCwsAcR6RK1ASw9pSYdDkeg1KSepLPRY5aVleGFF14AAKxduxa/+MUvxrQh9Pl8+NnPfhZoA/G5z30OkyZN0jz3iSIvJx0ryguxuaZRUwjr5PtdKMrPCuHMiIiIwsc1yBaEoaRmMcKoFoR6Algbtr+LitI85OWkA1BXsctv+EKE3kWXYMVZTBh062sR7fb48I/D/zZ4RvJOn+9Gm7MPNuvYduJEeqSmpmLTpk3YvXs3qqur0dDQgPb2dqSkpCA3Nxc333wzli5dirS0tJgecyITW5zu7R+MwEyIiMgo27dvD4SvZs6ciS1btsBmswXuv/POO/H444/jmWeeQWdnJx555JHAurCRnnjiCTgcDuTk5OCTn/wknn32WcPHiFVSLYrMBmx6EX1eqQpYDGAREekyPFSckJCgePzwY3p6ekIyp4GBATz00EOBa7hlZWW4+eabQzKWFunpiaqP9b8vmUwCrp87Dc++fBQ+DaXlBQDXz52GzIxkjbM0RpzCumdKaiIyM1MkjzUJgC0rdcz3k5Pki3ZYzELgeSei4a+bifx7IG34uhkStQGsSJSaNHrMBx98EPv27cOpU6ewb98+fPzjH8eSJUtw5ZVXIi4uDufOncOuXbtw4sQJAMBnP/tZfOc739E874mmpGAyVi9LRE2tHfXN7apa0Kzf/i7m5meNuFhJREQUqwYkAlgJBoWCJjo1wSTjKmBpX5z3V4JaUV6IkoLJSFRRsctv+K7wOblWCEDY2xBazAJ8PkFTmH44hY1vhnNeHMCqTftRxM+SZLCysjKUlZXpfvySJUuwZMmSsI2pZ7yJKilx7PvIxb5BhjmJiGKUx+PB008/Hfj6iSeeGBG+8quqqsL+/ftx9OhRHDx4ELW1tSgtLTVsHvv378eLL74IAHj00Udx+PBhw557PNDSdsgIki0IGcAiIhoXvF4vHn74YRw8eBAAkJubix/96EcRntUQPeFiQRAwLTsVJXOm4ODR86ofd1VeJnJsYwNM4aK0Duj1+QK/D7HPAmazSfT3pbSRWepxE40gCDDrWL+miW2iv26iNoAViVKTRo+ZmZmJF198EY899hj+9re/ob29Hb/+9a/HHPeRj3wEK1aswA033KBr3kbSm5oOd4oxMzMFJYU5ON/Ri8aT7ejtH8S5th787Z/vSZaYHLpYeQH/fcc8LCjKCet86RKmX0kvvnaILpFqQcgKWMaIt5hgNgmSnykAIM5izO9abwtCt8eHzTWNWL0sEYmaKmBdeu3YrEkoys9CfXO7rjno5fb4sKK8EJuqG2V/x9HEh7HBt2jW5uzDsdNO9LncSEqwYE6ulaEPojAaFAlKuz0+hjmJiGLUW2+9hdbWVgBDrXULCwtFjzObzVi+fDkefvhhAMCuXbsMC2D19fXhe9/7Hnw+HxYvXoyPfvSjDGCNInVuEboWhBIBLEzci01ERMFITk5GZ2cnAMDlcsFikV/vcrlcgdspKcZeL/D5fHj00Ufxl7/8BQAwbdo0PPvss1HTwcjjUV9Z3mQaaqXn8/ng9frwhbLZeOd464jWfXI+VnK5pvGMNugW34js5xr0BOYnVnHfbBJE56+0Jmsxiz9uohj9uiFSQ+vrZryGHKM2gBWJUpOhGHPSpEmoqqpCZmYmnn/+edFj/vnPf0IQBEyaNAlXXXWVxlkbS29qOlIpxmnZqZiWnYrjpy/gt7uOKl7Ec3u8ePJ3h/D4g6WYnascsqPQmejpV9KPrx0i6RaECQxgGUIQBCTGm9HT75Y8Jj4uci0I/dweH2pq7fjcf+Srfszoz0oVpXk4cqpDdzUqPQbdXlwzy4Z7yz+EX/65UffzmExC2BcAhgffojE8YXd0obrWjoZRVWIFgKEPojCpa2rBW8daRO+LtTAnERENeeONNwK3b7rpJtljh98//HHBevLJJ3HmzBlYrVZ2UJDgjpIKWEREpE9aWloggHXhwgXFUJXT6RzxWKP4fD58//vfD1SdnDp1KrZs2aKqc1K4dHX1w60QTPLLzEyB2Ty0htbR0YOslDisKP8QNtc0qloPTEs0o6MjNC0e1ejtHZC933mhFx2ThoqL9PWNPdYkCKLz9yqEqwQgoj93pI1+3RCpoeV1Y7GYkRGh1qahFrUBrPHiN7/5DZ588kl4PB5UVFTgi1/8ImbPno24uDicOXMGL7/8Mn71q19h3759ePvtt/Gzn/1M8UQ+lIJJTUfStr8dU53Wdnu82PZKE777lfkhnhWJiabXDcUWLa+d8ZqaJvIbENnNYzGbuABsoKQEi2wAK86gvzN6WhAOV9/cjsULrlB9vGfUwkpeTjpWlBeqXnQximvAiylBnmB95Oqp2H/437IBfJNgfMtCf/BtZWWxsU+sw/BKV+cv9OL1d86J/j4Y+iAKD7ujC5trGhX/7kR7mJOIiEY6fvx44HZRUZHssdnZ2cjJyYHD4UBbWxs6OjqQmZkZ1PiHDh3CCy+8AAD41re+Jdr+kKTXtUMVwJJ6Vl/Ym7wTEY0PeXl5OHv2LADg7NmzioEn/7EAMGPGDEPm4PP58Nhjj+H3v/89AGDKlCl47rnnkJuba8jzR4uSgslYvSwRNbV21I/axDeaL8Jva4qFN4bdL3as1GZ+pTVZXmMiIr2iNoAViVKTRo/5s5/9DBs3bgQwdHJ89913j7g/Pz8fDz74IBYsWIC77roLvb29+MY3voFXXnkl6BNzvYJJTUdKm7MPdRI7jKXUHT2P4/Y22CaxFUu4RcvrhmKP2tfOeE5NE/kNiFTASjCoIhMNSUqQ/xwYFwUVsIChYM3p8xdVH+8VWTUpKZiML3/Kg//ZeTSouWjhGvQEHfgquNyKmdMm4bd/PSZ6f3F+FpITLNh/5HxQ44ipb25HW2dfxD5LSlW6UsLQB1FoVdfaVf9ti6YwJxERybPb7YHbaqpfTJ8+HQ6HAwBw8uTJoNZ5XS4XHn74YXi9XixYsACf+9zndD/XeCe1WS/cF1AZvyIi0mf27NnYu3cvAKChoQE33HCD5LFtbW2B99qsrCxDrqn6w1fbtm0DAEyePBnPPfccrrhC/cbHWJKXk46VlcVoc/ah6YwTJ8448Ua9Y8xxkS6kMHoz6WjDi3OIBbCkNiwrba4NVYCbiMa/qL1SN7xc5IULFxSPN6LUpJFjnj9/Hr/+9a8BDKW2v/rVr0o+T0lJCT772c8CALq7u/HHP/5Rw6zp2Gmn5hNbH4BakQ8SREREsUCsBWE82w8aSimAFW8x5vcdbAUsAKqrgALSixaJ8eHdlzEUwFI/79EEAAW5VmSmS7cNX1lZDIslNKc7PgBNp50heW4ldU0tWLu1TnGHohR/6IOIjNXm7ENDc7umx/jDnEREFN26u7sDtzMyMhSPt1qtoo/V42c/+xnsdjsSExOxZs2aoJ5rvJOqkBGyC6i8LktEZKiFCxcGbiu18X399dcDtxctWhT02KPDV9nZ2Xjuuedw5ZVXBv3c0c5mTcKNRTm4Zla26P2+CJfA8njl1w+Hr3WKfRawSHwOUNoUywAWEekVtRWwIlFq0sgx9+3bh8HBQQDARz7yEQiC/B/qG2+8Edu3bwcA1NfXa577RNbnkm4PJGfnP97D5ZNT2YKFiIhizsDg2BNPBrCMlaxUAcugYE+wFbAAIDUpTvWxbolFi7bO/qDnoYVrwINBkVaaas3Nz4JtUhJOOeQvaPXq/JyoRiifW4q/vVmw1cMiXcGLaDzSuzGo6bQTtiL+WyQiima9vb2B2wkJ0hsAxI7p6dFf/b2+vh6//e1vAQAPPfRQ1Lc/Sk9PVH2svxqFySQgM1NfN4vR2nsGJedl1BjDJSfFi34/IcESkvFoSCheOzT+8XUTG+bPn4/s7Gy0trbiwIEDaGxsRGFh4ZjjPB4Pnn/++cDXixcvDnrsNWvWjAlf5eXlBf28scQksUQZ4QJYyi0Ih1fAEtnsaZb4wZTWdtmCkIj0itoAViRKTRo5ZkvLpZZ4aipypadfagEy/KSelClVqJDi9bEFCxERxSaxClgJIar0M1ElJsgH2qIlgOWvBKWW1KJFe7gDWIMeDAZRAavX5Ybd0YX+AfnW2b39oQtJKYX0QkFLezM5DH0QGU/vxqBIhDmJiCj6DQwM4Dvf+Q48Hg8KCwvxla98JdJTUqTnQqUgCDAbUBUYAKQKdMRZzCG5iCrV0kiAwIu2YWDka4cmDr5uopvZbMYDDzyAxx57DACwatUqbNmyBVlZWSOOW7duHY4ePQoAmDdv3ojKWcPt2LEDq1evBjAU7hoe2hruBz/4AX73u98BuBS+0lvoI5ZJFRLxRrwCllIAa1gFLJG5Sr1fswIWEYVK1AawFi5ciN/85jcAhkpN3nPPPZLHGlVq0sgxU1Iupej9QS05586dC9weXqaalM3JtUIAgmrBsrKy2OhpERERhcwAWxCGnHILQmMW1INd+PNXglJLqgVhuFtg9Q944A6iAtaJs51Yu7UOCwqnyh4XqgCW1uCbEfS0N5PD0AeRsfRuDIpEmJOIiLRJTk5GZ2cnAMDlcsFikf/b7XK5AreHrxFr8ctf/hLHjx+H2WzGD37wA5jN0X++J1Z1QorJJEAQBPh8PngNKq0x6BbfnGEStM1NLamWTD6fLyTj0ZBQvHZo/NPyumGAMrJuv/127N69G/v27cOJEydQUVGByspKzJw5E06nE7t27UJdXR2AocIWwbbnXb9+PbZu3QpgKID0pS99CSdPnsTJkydlH/ehD30I06ZNC2rsaGOSCGBFvAWhwkbE4dX+xY6VWntVrIDFABYR6RS1K32RKDVp5JizZ88O3P773/+OixcvIjU1VXLsmpqawO2ioiK9P8KEZLMmoSg/C/U6L0ixBQsREcWaAZHgiqArikxSkuLD04IwLoiFPYtZQHmptnLoUguN7V3hrYA1MOgZUSJcD7fHh30N8hsdevrF25AES2vwzQh62pvJYeiDyFh6NgZFIsxJRETapaWlBQJYFy5cUAxVOZ3OEY/V6tixY/j1r38NAPjyl78suj4djbq6+uGWCEGNlpmZArNZgNfrQ0eH/jaNw11wineV6O0dMGyM4fr6xM81+vsHQzIeDQnFa4fGP7WvG4vFjIyM5DDOjEazWCx46qmnUFVVhT179qC1tRUbN24cc9zUqVOxfv16zJo1K6jxDh06FLjt8/nw5JNPqnrc2rVrsWTJkqDGjjZSeSNvhDPFShW4hoeuxNY9zRLBMgawiChUojbK7S816bdq1Sq0t48N2GgpNVlQUICCggIsX7485GPOmzcvkH7u7OzEN77xDdHWgj6fD+vXr8eBAwcAAImJifjUpz4lOj+SVlGaB4vOChL+FixERESxwO7oQqtzbLWiE+93YcP2d2F3dEVgVuNPkmILQmN2oOvdWWkxC1hRXoi8nHRN/809EqsmYi0IJdYnDNE/EFwLQj+5jaten093SzA5FrOAm66Zhtp6B/7vrTOorXegTeTfpNGM/FkY+iAynn9jkBaRCHMSEZF2eXmXNj2cPXtW8fjhx+hpYbRjxw4MDg7CZDIhLi4OGzduFP3fW2+9FXjMW2+9Ffj+yy+/rHnM8UCqRZElRBdQpc6XuDWKiCg4qamp2LRpE37xi1/glltuQU5ODuLj45GRkYHi4mJUVVVh586dmDdvXqSnOq5ItSCMfAUs+fXD4Rs8xT4LSFXAUrqmzAAWEekV1duew11q0sgx4+Li8N3vfhcPPvggvF4vXn/9dXziE59ARUUFZs+eDYvFgrNnz+Kll14KhLkA4L/+678wZcqUoH+OiSYvJx0rygvxyz8flr0QJ4UtWIiIKBbsb3Dgyd/VjehtP1x9czuOnOrAivJClBRMDvPsxhelVlKRqoAlYOiCfXlpHvJy0lHX1ILNNY2qHy+2ENHncqNHpFVfcX4WDts7JF9vwXANemAK8ULGoNtreAtCswm4zJaKp//YMOLCigCgKD8LFR/8dwkFve3NxDD0QRQaFaV5OHJK3d9NPVUMiYgoMmbPno29e/cCABoaGnDDDTdIHtvW1gaHY6hKa1ZWFjIzMzWP57/Q6fV6sWnTJlWPefPNN/Hmm28CAD7+8Y9PyA2+UgGsUJ93jBbh69RERONGWVkZysrKdD9+yZIlilWqhnc7muik3i+VKlCFmtT7u9/IANbYsJbZJL72alFYk2U7UiLSK6oDWOEuNWn0mB//+Mfx05/+FI8++ig6OzvR0tISKB89Wnx8PP77v/8bX/7yl4P+GSaqkoLJuPUjV6Jm3ynNj2ULFiIiinbHT1/Ak787pHhR1+3xYXNNI1YvSwxZEGQiUAq7xBsUwJLaheW38nNzcbF/EL0uN5ITLCjItQaCM3ZHFzbXNGoKSHlEjpVqP/ihKzPxmRvzUFNrR31z+5jA0dz8LPzr/U7R8JYS16AnqPaLanT3Dhi6+/yKKak429qD9853j7nPh9AHIPW0NxPD0AdR6Pg3Bin9bR5exZCIiKLfwoUL8Zvf/AYA8MYbb+Cee+6RPPb1118P3F60aFHI50aXiJ3rAKGsYMHKGERENH5IVnaMcLDYrRDAGv7+LxbWkgqWsQUhEYVK1KdO/KUmd+/ejerqajQ0NKC9vR0pKSnIzc3FzTffjKVLlyItLS0qx/zUpz6FBQsWoLq6Gnv37kVTUxM6Ozvh9XqRlpaG/Px8XH/99fj85z+PnJwcw36Giaq0KAd/2XdK84Wp5MSo/6dAREQT3LZXmkbs6JHj9vhQU2vHysriEM9q/ApXBSyl3VbZGUkottlE76uutWuuTiW2ENEm0n4QAGyTkpCXk46VlcVoc/ah6YxzTBDs25v26wpg9Q94IMRrfpgmnT0Dhj3XZGsi3m/rUbHrLnQBSH97s/rmsS3S1WLogyj0SgomY/WyRKx/8V1c7Bscc3/xsCqGREQUG+bPn4/s7Gy0trbiwIEDaGxsRGFh4ZjjPB7PiEoaixcv1jXed77zHXznO99RPO7nP/85nn76aQDAgw8+iIceekjXeOOFVLv1UFWwkLos2z8w9v2fiIgo2pkkEliRroDlVVqL8yq0IJQKYClVwGIAi4h0ipnUSThKTRo9pp/VasVdd92Fu+66K+jnInl6L0z98s+H2a6JiIii1vmOXtQdO6/pMfXN7Wjr7GObMZ2S4s2y9xsXwJI/mZcap83ZhwYdQZw+kbbL7RIBrKxJiYHbNmsSbNaxr6X4OPnfkxTXgEfxZw9Wl4EBrK7eQdVht1AGILW0NxstMz0B/99tRQx9EIVBXk465lyRgYPHWkZ8PzXRwnA0EVEMMpvNeOCBB/DYY48BAFatWoUtW7YgKytrxHHr1q3D0aNHAQDz5s3DwoULRZ9vx44dWL16NYChcBfbHxlDarNEqC6gOi+6RL9/4Ggr+gfeDWl7ciIiIqMJURrAkqpw6Td8jUwsrCX1OYAtCIkoVPjXg8aditI8zRf03B4fNlUfht3RFaJZERER6Xf4ZLvmcs8+AE2nnaGYzoSg3IJQX/BoNKWTfakA1rHTTl2t6Lr7RoaS7I4uvHLgtOixL+75l+Jno4R4facTrkGP6opueklVwFL6nYvpH/BoOt4fgDSav72ZnvDa9OxUXgAiCqO0pLgx3+t1eeCLdP8GIiLS5fbbb8eNN94IADhx4gQqKirws5/9DLt27cILL7yAO+64A8888wwAID09HWvWrInkdCckqQoZoQhg1TW1YF+DQ/L++uZ2rN1ah7qmFsljiIiIoolJYrnMF9rlO0VSFS79hq8vioW1JANYCptrpVoXEhEpYQCLxh29F6Y8XmDD9ncZwiIioqjT26+vhUGvSLUjUidaWhBKjSNWyUoNt/vSQkRdUwvWbq1Dq0QFrEZ7h+JFgwQVFbCSEsYe4xr0jJhLKHRdFA9gpaeMDUUYLZQByKH2ZiWaH9fRJb5Dn4hCI0UkgOX1+XT//SYiosiyWCx46qmn8NGPfhQA0Nraio0bN+Ib3/gG1qxZg7q6OgDA1KlTsXnzZsyaNSuS052QwlUBy+7owuaaRih0RAq0J+daMxERxQJBorluxCtgKbzhDg9diYW1pIJUSi0ILQxgEZFODGDRuFRSMBn3f/ZqzY/r7h3Ej57n7iQiIoouyYn6AiPJCiEikha+AJZCC0KJxQCl+SnxXzRQamWndNFAKYBlNglIThj7+nUNeDAYoQpYacnxIR3XL5QBSD2VrKRapBBRaKSKBLAA4GKfvlA1ERFFXmpqKjZt2oRf/OIXuOWWW5CTk4P4+HhkZGSguLgYVVVV2LlzJ+bNmxfpqU5IHonzC6NbCFXX2jW3JyciIop2UkGlaA9gjaiAJdaCUOJzgFIFrFC1MCai8Y9X5Wjc6unTd9HL4x260Lh6WSLbtBARUVS4ekYWBAGa2hAKAApyraGa0rgnVrXJzyQIutrYidFbAWtOrhUCoLkNYfwHgSk9Fw1WVhaPuU8pgJUQZ0aiVAWsIANYFvPQfwep9oBSAaz0MAWwoi0AebFvEINuD+IMap9JRPLEWhACQHffICZnhHkyRERkqLKyMpSVlel+/JIlS7BkyZKg5/HQQw/hoYceCvp5xgu3xAVaI1sItTn70NDcrukx/vbktklJhs2DiIjIaILE22WE81eibQWHc4+ogDX2WKlKVnEKm2LNGrssERH5sQIWjVvBtHbg7iQiIoomUzKTUTJniqbHzM3P4gJvEMwmE+LjxD8qG1X9CpAPYFnMJggSqx82axKK8rM0j2cyBXfRYLR4pQBWvFk0pNU/4IHbHVwA676Kq2V3wXX2iFd8SksOfQvCUAQg25x9qK134P/eOoO9757T9RwXulkFiyhcxFoQAkAPK2ARERGFhFfi3MDIFkLHTjs1b4IJZXtyIiIio5gk1iAjXwFLfv1w+P1inwUkWxAqbFA0mxihICJ9omtbNpGBgm3N825zO94+0YprZ2UbNCMiIiL9vnhLAd453qqqapDFLKC8NC8MsxrfkhIsGBgcW0XJ2ACW9MUApXEqSvNw5FSH6kpWwNBOsGAuGtiKRob61FTAEjtmYDD4FoQmQcCgTIir8+LY/3YCpNuCGcnIAKTd0YXqWjsamts1/3cb7UK3C5Mzkg2ZFxHJkwp7dvcygEVERBQKUpszjGwhpHfDbyjbkxMRERlBsgKWQgvAUJMKWPsNXxcVq4Yp9TlAbk1W7nFEREoY36Rxy9+aJxi/+NNh1DW1GDIfIiKiYMzOzcB/3zFP8b3NYhaworyQbXQNkBQvHuaWqoylh1wFLKUAVl5OOlaUFyouGAzn8fgMvWig9LtIiDcjMV6iApaG4JgYu6NL9v4ukRaESQkW3QE6tb9nIwOQdU0tWLu1DvUGhK8A4MJFVsAiChdWwCIiIgovj8QGD7NB7eMB/Rt+o609ORER0WhSlaIinL+SrX4PYMRmZbF2hdIBLPnPB2xBSER68ZM/jVv+1jz1GlvsDOf1+rC5phGrlyXyQjYRRa1XX30V1dXVOHz4MFpbW5GamoorrrgCZWVlWLp0KVJTU6NuzPPnz+PgwYM4fPgwDh8+jJaWFjidTly8eBFJSUnIycnB3Llzceutt2LBggWq5+X1evGXv/wFu3btwrFjx9DR0QGr1YoZM2bgk5/8JD7/+c8jPj4+2B8/YhYU5cBmTUSrs3/MfQKGqu6Ul+bxPcsgUovrcQYu4MsGsFSMU1IwGauXJaKm1q4qpOP1+gy9aKBUAStRogKWa9CjqpqbnFP/7pa9f0CkOlZyokX3Dra7PjkHW/56TDY4ZmQA0u7owuaaxqCDasOxBSFR+KQmigewLvYzgEVERBQKUhdopVoq6eHf8KvlE3oo2pMTEREZLVpbEIpVtRpueABbrFqWVCtBpQ2aUoE0IiIlDGDRuKanNc9obo8PNbV2rKwsNnBmRETB6+npQVVVFV577bUR3+/o6EBHRwfefvttbN26FRs2bMA111wTVWNu3rwZL7zwguh93d3d6O7uxvHjx/GHP/wBCxYswE9/+lNkZmbKzq21tRVf+9rXcOjQoTHfb21txZtvvonf/e53+PnPf468vNhtz9fbP7YKUV5OGu7/7NWGtTyjIckJ4uGiOIt86EiLYFoQ+uXlpGNlZTHanH1oOuNEr8uN5AQLDp1ow9vHW0cc6/F6Db1ooNiCMN6MBJEKWK5Bj2z7QDWUKmCJCSaA9aErM7F6WQl+sOWg6P3TbCm4+9NXGRaArK61Gxq+AhjAIgqnpAQzzCZhzMXgi2xBSEREFBKSLQgNrGChZ8Ovke3JiYiIQkWyBWGkK2AprI351858Pp9oWEzqc4DZJMiuj0oFt4iIlDCAReOavzXPpurDCKbIQn1zO9o6+3iyTERRw+PxYOXKldi7dy8AwGazobKyEjNnzkRnZyd27tyJQ4cOweFw4N5778W2bduQn58fVWPGxcXh6quvRmFhIa644gpkZmbCYrGgo6MD7777Lv7617+iv78f+/fvx/Lly/HHP/4RiYmJos/V09ODe+65B0ePHgUAXH755fj85z+Pyy+/HC0tLfjTn/6EpqYmnDhxAnfffTdefPFF2Gy2oH4fkeAacKNHJIA1a7qV71EhkChRKSpaWhCOZrMmwWa99Do4dqZzzDFur8/QiwZi4arhEuPFK2ANur0YcHtUj587JRWnz18c8b2LOtp4WcyCYolxKYMer2y4av6cyYaFr9qcfWgIooqrFCcDWERhIwgCUpLixrRD1fO3i4iIiJRJBrAMrmChZcOvke3JiYiIQkmyAlaEexAqje/2Dl38layEKfE5QBAEWCwmyQ2iFlbAIiKdGMCica+kYDIeXn4dNmx/F906dxv7ADSddsJWxIvbRBQdtm/fHghCzZw5E1u2bBkRKLrzzjvx+OOP45lnnkFnZyceeeQRyYpTkRjzK1/5CqqqqpCcnCx6/x133IGHHnoIX/nKV3D69Gn861//wtatW/Gf//mfosdv2rQpEL6aP38+Nm3ahJSUlMD9y5Ytw7e+9S289NJLeP/99/H444/jJz/5ia7fQyS1d45tPQgAGWkJYZ7JxBDxFoQaA1hjn3vsQoF/15hRFw2UwmjxEi0IAaCnb2yYUIptUtKYAJYeJ891o9+lPvg13KDbC49XOtHfN6D+51Fy7LRTU4UytVgBiyi8UhnAIiIiChupChlGB7D8G36V2oUb2Z6ciIgo1ASJAJYvJCtU6khVtRrO/16sJ4htMUsHsIysoElEEwvr59GEkJeTjq9XFgd1wt3rMu6iGhFRMDweD55++unA10888YRoNaeqqipcddVVAICDBw+itrY2asa8/PLLJcNXftOnT8c3v/nNwNd79uwRPc7pdGLLli0AgISEBKxbt25E+AoYqrb1wx/+ENnZ2QCAv/zlL2hubpYdPxq1dzGAFU5J8eIBLCNPwOWeK9igl9gOL/9iRF5OOr5YNkvxOZQuGii1IEyMMyNRokqW2hCCSQDeOdGm6lg1zrX36nqc2+1Fn0x4S+4+rfpC9LnzwkUGsIjCKTUpbsz3GMAiIiIynt3RhUOj2q/7/ewP9bral8spKZiM1ctKUJyfhdFnXQKA4vwsrF5WgpKCyYaOS0REFCpSlaIiWQFLKlQ14pgPAlhS85S7Liy3+ZUtCIlIL/71oAkjLycd91UUQm8GK1miCgYRUbi99dZbaG0dWlicP38+CgsLRY8zm81Yvnx54Otdu3bF1JjAUKUtv7Y28QDGq6++CpdrKFSwePFiTJkyRfS4lJQU3H777QCGds+8/PLLQc0tElgBK7ySEsSDQ/0GhmPkQlbBV8Aa+/jhixFZ6dKVPdVeNFAKYCXEmxEvWQFLXQjB64PibrdwGHR7ZYNR/QZWwJKqvhasC90utFzQF0AjIu0YwCIiIgq9uqYWrN1aJ7lhqb65HWu31qGuqcXQcfNy0rGyshiP37cAd3/6KnyxbBbu/vRVePz+BVhZWczKV0REFFMkCmAhkktyUtUtRxyj0IJQNoAlszHW6AqaRDRxMIBFE0pJwWT8f0uKND9OAFCQazV8PkREerzxxhuB2zfddJPsscPvH/64WBgTAE6fPh24LVZxS+vcFi1aZNjcIqFDKoCVygBWKEiFbU46urFh+7uG7KIWaxPoF2wAS6y61vAWeufaekQf99nSPNUXDRQrYMVLV8CKfKRKm0G3B7390iErIytgzcm1jtlJbwSfD1i9+Z+GvX6JSJ5UAMsXBaFSIiKi8cDu6FJsBQgMtSfaXNMYks/ANmsSbizKwc3XXY4bi3JgmyS90YWIiChamSQSWJHcFKmmApbb80EAyyPVSlB6fVVs8+qlxzGARUT6MIBFE861s7IxNz9L02NmXjaJJ89EFDWOHz8euF1UJB8qzc7ORk5ODoChClIdHR0xM2Z7ezuefPLJwNef+MQngp7bhz70IZjNQ2GQEydOxNwFUKkdvVZWwDJcXVMLXq17X/J+o3ZRyy0CBF0BS6RU9vCdY+faxwawBAH45PW5qj/3KAWw4uPMisfEikGPfAWsPgMrYNmsSSjS+HlVLR9CVwWAiEYSC2C5PT64Bo0LbBIREU0kbc4+1NY78H9vnUFtvQPb9/xLMXzl5/b4UFNrD/EMiYiIYpNUwaeIVsDyioeqhvN/DpAKa0kFywD5tVeploxERErYU40mpIrSPBw51aH6BP2kowt1TS2yLXiIiMLFbr+0YDh9+nTF46dPnw6HwwEAOHnyJDIzM6NqzLNnz+LYsWMAAK/Xi87OTjQ0NOCll15Cd3c3gKHKVnfccceYx3q93kCVLLPZHAh+SYmLi8OUKVNw7tw59Pb24vz585g6darizxMt2jv7xnwvPTlOdrcOaeffRa20w8u/i3r1skTd7SVMggCzSRBdJAg2gCW2UOADsPfdc+gf8KDp9IUx92dbkyRbBoqJl6hu5ZcYZ0aCwjGxYtDtlf3saGRrSkD751WtjHj9EpE8sQAWMFQFKzGeyzFERERq2R1dqK61o6G5PahKuvXN7Wjr7ONGWyIiolEEqQpYKqpQhYqaClj+yleSLQhlKlnJVsBiAIuIdOKKH01IeTnpWFFeiE3VhyFRlXIEj5cXqIgoevhDSQCQkZGheLzVahV9bLSMuXfvXnz/+98XvW/atGn44he/iP/8z/+ESaSaT29vL9zuodBDWloaLBbljzZWqxXnzp0DAHR1dUUsgJWenqj6WH+QRqwFoc2ahMzMFMPmRcDGPx/WtIv65QNn8N2vzNc9nsVsgsc7thpKWkpCUP9tpQJcz758TPIxV+akaxrTFCf/by4rMwWZ6eOjQlt8YtyICmKjudxeQ/8tZmam4L/vKMHjzx807DlHE3v9+v/emEwC/7YQBUkugMULv0REROrUNbWoajOohg9A02knbEV8HyYiIhouGlsQqgl/+T8fSB0rF6SyyGx+FessQESkBgNYNGGVFEzGjGmTcOJsp6rj/WWqV1YWh3hmRETyent7A7cTEpSDDcOP6ekZ23IsWsc0m8244YYbMG/ePNHw1ejnVjMvo+ZmBLnWc1LEWhBmWZN0PReJO9/Rq7ktW92x82jv7MfkzGRdY1osJtF2VPHx5qD+2+qpjJY7NV3TmMkS4QK/lKQ4pCTFa55HNPJ4fLItCHv73Yb/W7w2DNVXpV6/giDI7hIkImVyASwiIiJS5q9ObGRV2F6DK9cSERGNB1J5o0i2IHSrCWB90KZQ6li5AFacXAUsrokRkU4MYNGE1ebsw79Uhq/8WKaaiMh4X/ziF/HFL34RADA4OIi2tjYcPHgQv/3tb7Fjxw7s2LEDX/nKV/DNb34TZvP4aGUGXCqPrIbJJMDr9eGCWAArPVHTc5G8d0+0al5Y8PmGHvex6y7XNaZPYsA4symo/7Z6SmXvqz+H6wunYtblVlXHWxTGiDMLiBsnCxb9Ax5c7JUOTfT1D8Lt9kiWbNfjbIu+qoVajH79mkwCBEGAz+dTtdOQAVAiaanJEgEsmb8lREREdEl1rd3wltzJCbwkQkRENJpkC8IIJrDUrIv6q9VLHWuWqWQl1T1g6HHjYz2TiMKPZxs0YR077YTWjw0sU01E0SA5ORmdnUMBUpfLpdh2z+VyBW6npOhrJxWuMePi4pCTk4PPfOYzWLx4Mb797W+jpqYGzz77LOLj4/GNb3xjxPHDn3v4mKGYm9G6uvrhdo+teiQmMzMFzosuiGUhkuJM6OiIXCWv8aatXd/vsrWjR/d/B6kAlnvQE9R/W5OOhQJHWw9Wb6zFivJClKisvhRvMWHALb7IMeAaRH/f+AjodHb14UK39N8Zrw/49/luJMQbFxQ9carDsOeSM/z1m5mZArN5KPSp9PqzWMzIyNBX+Y1oImAFLCIiIv3anH1oaG439DkFAAW5VkOfk4iIaDyQakEotW4ZDh4VGwM9Xh+8Pp9kUEy2BaFcBSy2ICQinfjXgyYsuRYyclimmogiLS0tLXD7woULisc7nU7Rx0b7mGazGY8++mjg8b/97W/R1dU14pjk5ORAGKy7uxtut/Lf6OFzS09P1zW3SGhz9ol+35qmrvUiqZOkczd0MLuovRKbueR2YanR16/vAr/b48PmmkbYHV3KBwOIj5MOHCXEmZEgc78a0bLhbNDtVfwc+H7bRdTWO/B/b51Bbb1D8t+tWi0XepUPMgCrABCFBgNYRERE+unZPKtkbn4WOxsQERGJkCroLrVuGQ5qKrMDQ1WwPBIVM+VaCVpk7tOzsZWICGAAiyawSFxgJSIyQl5eXuD22bNnFY8ffsyMGTNiZkwASE1NRUlJCYChylXvvPPOiPtNJhNyc3MBAB6PBw6HQ/b5BgcHcf78eQBD4a0pU6bonls4nTjjxC931Ive9/rb51QHZUjZnFwrtJ5eB7uLWq4FYTBaggj/uD0+1NTaVR0rF7BKjLcEHcC6sShHdkEkXAbdXvT1ywew/t9zdXjmpaPY9uoJPPPSUXxr035899f/xJ/3ntQVxmq5EFyASw1WASAKneQEi+giNgNYREREyvRunpViMQsoL81TPpCIiGgCEgRBdE002itgAYDb45U8VqqyF6DQgjAK1iKJKDYxgEUTViQusBIRGWH27NmB2w0NDbLHtrW1BUJJWVlZyMzMjJkx/Ya3CRxdAUvr3I4cOQKPZ6jt38yZMyV720eTuqYWrN64D81nO0XvP+nowtqtdahragnzzMYnmzUJRflZmh4T7C5qqaWEYCtguT3BbVGrb25HW6dyAEiu5V5CnAkmk4D4IH6WglwrVi8rQbHG/y5iBACzp0/S9dhBj3IFLLH/lufae1Gz7xS+tWk/Nmx/V1Ng8nwYAlisAkAUOiaTgJTEsVWwGMAiIiJSpnfzrBiTScCK8kLk5cROFWwiIqJwE6v6JNXaLxykqlqNOc7rkwxgyQWp5Da/WlgBi4h0YgCLJqxIXGAlIjLCwoULA7ffeOMN2WNff/31wO1FixbF1Jh+p06dCtwWC3MNn9vevXvDOrdQszu6sLmmUTFIo7VlHMmrKM1TXXHJiF3UkhWwggxgJcYHd8HCB6DptFPxOLlwVXycGXZHl+oda2KS4i3Iy0nHyspiXGZLUX6AjB/ftwDLPlGg67FqWhAqqW9u1xSYDHULQlYBIAo9sTaEHV39EZgJERFRbNGzeVbK/3fb1SgpmGzQsxEREY1PYnuVI5i/gkdl/8OhCljix5pNMiErmQCW3OOIiOTwrwdNaFousAJAr8vNi9tEFHHz589HdnY2AODAgQNobGwUPc7j8eD5558PfL148eKYGhMA6uvrceTIEQBAXFwcioqKxhzz8Y9/HAkJCQCAXbt2BVoMjtbT04MXX3wRwFBJ5U996lNBzS0cqmvtcKvc6aOlZRzJy8tJx4ryQsXPCBazMbuopRYygg1gXT4lLajHA1AVOJJqMWgxm/Duv9qwdmtdcAGsYTvfp2Ym636e+DgTsq1JMOvcwaamBaEaagOTfS43unpDVyXHqNcvEUmzO7rQ1TMw5vv/er9Lc0U8IiKiiUbP5lkxxflZuHZWtgEzIiIiGt/E2vVFtAKWhhaEXqkKWDLrgGxBSEShwAAWTWhqL7D6nTjbyTZPRBRxZrMZDzzwQODrVatWob29fcxx69atw9GjRwEA8+bNG1EpargdO3agoKAABQUFWL58ecjHPHbsGLZs2YKenh6Zn3IofPXggw8GqgN95jOfQVra2EBJRkZGYN4ulwtVVVVjntvtduN73/seWltbAQC33nor8vPzZcePtDZnHxqax/6O5ahtGUfKSgomB9rejf6UIGBoEX/1shJDdlFLBrBkdmGpkZGWENTjASBZRdsPqRaEcRbhgwpuwS3UDA9gZaTr/5kSPwiKye1uk2NEBSw/pcCk3TEUzggVI1+/RCSurqkFa7fWSf7d0FoRj4iIaCLSunl2NFZ8JSIiUk8QCWBJVe4PB7UBLI/HJ9muUC6AJV8BiwEsItLHuEbqRDFq6AJrIn6/+wROvN+peLzb48Om6sN4ePl1rBhARBFz++23Y/fu3di3bx9OnDiBiooKVFZWYubMmXA6ndi1axfq6uoAAOnp6VizZk3UjNnZ2Ykf/ehH+OlPf4oFCxbg6quvxrRp05CSkoL+/n68//77ePPNN/Hmm28GTvBmzZqFVatWSc7t/vvvx969e9HU1IQDBw6goqICt99+O6ZPn46Wlhbs2LEDTU1NAIBp06bhW9/6VtC/j1A7dtoJrae3/pZxtiK2yzWCv+1dm7MPTWec6HW5kZxgQUGu1dCWxJItCOOCC2DpDRr5CQAKcq2Kx8VLVMBye3xBh68AIDHh0vNnpSfqfh7/PPVXwPKgz6AAFnApMDn6tVTX1GJIcE1KWlIcVlYWh+S5iWjIpRbC8v+O/RXxVi9L5LklERGRCP/m2V9WN0pWtpDCiq9ERETaiHXdU9kFMCSkQlWjDbUgFD/WJBfAkquAxQAWEenEABYRhk7mkxLV/3PweIEN29/F1yuLeRJPRBFhsVjw1FNPoaqqCnv27EFrays2btw45ripU6di/fr1mDVrVtSN2d/fjz179mDPnj2yx91666347ne/C6vVKnlMamoqfv3rX+NrX/sa3nnnHZw5cwZPPvnkmONmzpyJp556CpMnR3/VF71BD6Mq9NAlNmsSbNbQhdqklhKCrYAVbKnsuflZqoJmCRJBsUG3MSs0wytgZQYRwPJX6jLr/L329LuDaqU4mlhgUm1oIxiRLB1PNFHoaSHMYCQREZG4koLJuG1hL/74+knVjynOz0J5aR7XbYmIiDQQxvQBiI0KWG6PT/JYufVRubVXueAWEZEcBrCIoK/NU3fvIH70fB3uqyhk+xYiiojU1FRs2rQJu3fvRnV1NRoaGtDe3o6UlBTk5ubi5ptvxtKlS0Xb9kVyzA9/+MN48cUXsX//fjQ0NODkyZM4f/48+vv7ER8fj7S0NMyYMQPXXnstbr31VsycOVPV3KZMmYJt27ahpqYGO3fuRFNTEy5cuIBJkyZhxowZ+OQnP4nKykrEx8cb9esIqSQVrd/EqGkZR9HD7uiSvO+Pr5/EF8tm6b5oYBHbtqb2sRpadSRIVMAySlL88ACW/haECYEWhPoWULp6BnSPLWV0YFJLaEOvUD8/0UQXTAthI6srEhERjSfZGjbEpLLiKxERkS5ioaNIbuTzqCy/5fZ6JY+VWx+Nk6uAFeTGWCKauHiFjgj62jwBQ+lrtowgokgrKytDWVmZ7scvWbIES5YsCduYJpMJxcXFKC42fkHUZDLhs5/9LD772c8a/tzhNifXCgHS1ZHEqG0ZR9HB32pOyr/e78TarXVYUa4v7K13p5bWVh2hDGBZzMKIxZBgWhAmBNmCsDMEAazhgUk9oQ093J4I1o4nmgDYQpiIiMh4alsQAfIXU4mIiEiaILJkZmAxeM3UVsDyyFTAkm1BKLNJ08IKWESkE89GiKC/zRNwqWUEERGRkWzWJBTlZ2l6jNqWcRR5alvNuT1DYW+5SllSLBp3agkYatWxelmJpsBXKANYo587PSVed4DqUgBL3ynQxb5BXY+TMjowqXdDgFYer49tCIlCiC2EiYiIjOdWWQED0L/hgoiIaKIziSSwItqCUGUA2+3xSrcglA1gyVTA4ucJItKJFbCIoL/Nkx9bRhARUShUlObhyKkOVS3DtLSMo8jT0mrOH/bW2kbDrNBqLys9AZ9dOAO9LjeSEywoyLXq+iwTH8IAljBq4cckCMhIS0BbZ7/m50qI/yCApbMFodFGBybPtl4M29gejxcmS2hbRxJNVGwhTEREZDyvhvIbvGBKRESkj2gFrAiWwFK7gdDt8UnOU+5zAVsQElEo8K8HES61edLL3zKCiIjISHk56fjqp69SPE5ryziKLD2t5vxhby2UKmBZ0xJwY1EObr7uctxYlKM7SN7dZ3xrPj+xXXZ62xAmxA39PkyCILqjb7jE+NCGk0YHJuuaWrD74JmQjjmc2vAfEWmn59ySLYSJiIjkqW1BBPCCKRERkV5i7foiWUTd41FXAdPj8UpWy5INYLECFhGFAM9GiKCvzdNobBlBREShIBeK0dsyjiJLT6s5PWFvpYWCtKR4jbMYq66pBX87ELrgUE+/Gxu2vzuiBWNmeoKu5xpeqUupClaw1VHljA5M+ttRhnND4aDKBSwi0o4thImIiIynKYDFC6ZERES6CCLbidRWoQoFt8r3f7fXJ92CUCZkZZGpgCUWRiMiUoM17ok+oKXNkxi2jCAiolA4fFK8UtLiG3LxH9dexgu2MahPZ2hba9hb6cJDanKcrnn4BYJDIU4O1Te348ipDqwoL0RJwWRk6q6ANSyAZRIwKHNsqCpgzZw+CV/8+KwR1eq0tKM0itvNABZRKLGFMBERkbGkqlqI4QVTIiIifUwieaRIVsBSu+bo9njh8Yqvdcl9LpDrHsBANxHpxQpYRB/Iy0nHivJC6KlSzZYRRERkNLujCxu2v4uafadE7786j9UyYpXe6kpaw95KrTfSggxghTM45Pb4sLmmEXZHl2hbQjWGh6qU2jOGKoD1qetzR4Sv9LSjNILaHYREpI//3NKiUG2PLYSJiIjUkbqoKsbCC6ZERES6mIToqoCltgKmxyNTAUuuBaFMBSwGsIhILwawiIYpKZiMh5dfp/mCJFtGEBGRkeqaWrB2ax3qZYIZP33xHdQ1tYRxVmSUOblWkYLe8vSEvZUu/AfTgjASwSG3x4fn/npMd8vD+FEVsOQkxoemsmlXz8CIr/W0ozQCK2ARhV5JwWSsXlaCYpl2hN/64rVsIUxERKSClqq7rIBFRESkjxBtASyPuvUrt9cr+VlBNoAls0FT7HdBRKQGA1hEo+TlpOPrlcWa0s29Ljfsjq4QzoqIiCYKf1s3pcpCwysCUWyxWZNQJHNBXoyesHcoK2BFKjj03vmLqne/jTaiBaFCOC1UFbBGB7D0tqMMllvlAhYRBScvJx0rK4vxyesvF71/UmpCmGdEREQUm7ScA7BiBRERkT5iIWZfBKuoh7oCltLmVSIiPRjAIhKRl5OO+yqUW0b4nTjbibVb61iJhIiIgqalrZvb40NNrT3EM6JQqCjNU/05w2IWUF6ap3kMpQsPwQSwIhUcCsbwAJbFJH8apLdNpJKunsGwjKMkXK0jiWhI7pQ00e+3d/aHeSZERESxSVMAS2EjChEREYkTK/oUwfyV6vd/t8cLj8Ral1xlTLkWhEREevEvC5EEf8uIWZdNUnU8K5EQEVGw9LR1q29uR1tnX4hmRKGSl5OOFeXKYW+LWcCK8kLk5aRrHkMpZJSWrL8FYaSCQ8HQUgErKUQtCDt7R1bA0tOO0gisgEUUXlnpiaLfb+9iAIuIiEgNVsAiIiIKPZNIAssXyRaEWgJYuipgMSZBRMbjXxYiGXk56UhKVH8BjpVIiIgoGHrauvkANJ12hmA2FGr+sHdxftaYEI4AoDg/C6uXlaCkYLKu51cKGaUl6a+AFangUDAShrUVVLook5gQmhaE3aNaEOppR2mEQQawiMKKASwiIqLgSFW1EMMAFhERkT6iFbAi2YJQ5fv/UAvCsWtdZpMAQeyH+oCFFbCIKARib+s6URgFU4nENilpzHMdO+1En8uNpAQL5uRaYbMmSTwLERFNRHrbuvXGYDs4GpKXk46VlcVoc/ah6YwTvS43khMsKMi1jvksoZVS643UIFoQ+oND9Ro/J0XSyApY8r+bxPjgA1gJ8Wa4Bjwjvtc1qgIWMNSO8sipjrC2BfQwgEUUVtbUBJhNwpgduR0MYBEREami5eKvXKshIiIikiZWASuSK0hioSoxbq9X9LOC0meCOFbAIqIQYACLSIbeSiS19Q58duEMAIDd0YXqWjsamttHPJcAoCg/CxWlebraChER0fijt61bcgy2g6ORbNYkw4PZcu0N4yymEYEkPbQEhyxmAT6fD5HM/STEXVpUsSgswBjRYvGKKWk4fsY54ntdPWMDWP52lJtrGmV/lxazgM8uzMOJM52oH/W5UqtBd+R2LxJNRCaTgIy0BLR1jgxctXe5IjQjIiKi2KL2AizAClhERER6iVWL8kWwApbaALbb44Nb5FilzwRxrIBFRCHAvyxEMvRWItn5j/dQ19SCuqYWrN1aJ3qRzIehallrt9ahrqkl6LkSEVHs09PWTQBQkGsNwWwo1sktMqQlx8mW4FbDHxySC3oBQ8GhFeWFSErQX3HLCCMqYCkswAQbThME4PLs1DHf7+l3wy2SQispmIxvffFayefzt6NcfMOVWFlZjMfvW4C7P30Vrpmpr32hlgtYRGSMTJE2hO2drIBFRESkhthFVSlmEy95EBER6SH2FhrB/JXq93+3R7wCltL63+nz3ZL3bdj+LuyOLlXjExENx7MRIhl6qx94fT5sqj6MTdXylQyAoWT25ppGvpETEVGgrZsWc/Ozgm5VR+OT3IWH1CRjwlAlBZOxelkJivOzxoQHBVwKDpUUTA6qrZ/FLOCKKWlBzTU+Xl0LQotZQHyQAaxJKfGwpsWL3idWBQsAptnGBrYAoKxkOlZWFo+omGqzJuHGohzMyc3QNb9BNwNYROGWJRLA6ujqh8/HinRERERKtLQgZAUsIiIifcQ2a3ojeM7qUVF133+cR2MAq66pBT9+4ZDk/SygQUR6xUy/mldffRXV1dU4fPgwWltbkZqaiiuuuAJlZWVYunQpUlPFL1hEasyzZ8/i4x//uO5xp0+frnfaZCB/JRI9Hy+GihuoL49ZU2vHyspiHSMREdF4orWtW3lpXhhmRbHIZBJgEsR3qqUli4eD9MjLScfKymK0OfvQdMaJXpcbyQkWFORaR4QDE+PlTz0S481wDXjGtGyem58VeJ2v3Vqn6t+GmBEVsGSqdplNJsTJBLTUyEhLQLrE77ird0C0Eo5r0CP5XFLkgmRyxKpwEVFoZU0a+295wO1Fd9+g5N8LIiIiGiJ2UVWK3Gd9IiIikmYSa0EYwQCW2vCX2+OFR2StS2rdzO7owuYa9QU0Vi9LHLExkohITtQHsHp6elBVVYXXXnttxPc7OjrQ0dGBt99+G1u3bsWGDRtwzTXXxOyYfsnJycjK0tdKhIznr0RS39we8rHqm9vR1tnHKiZERBOcv62b0kmgv60bT/5Ijtlsglek2lFasvHtAG3WJNis0p9jEhPkq0pNs6XgvvJC2RCXmn8bYgQA8ZZLiy4WmepgFrOAOEtwASxragLSU6QqYA2Kfn/ALR7AkqvGpXd3v94QGxHpJ1YBCxiqgsUAFhERkTyxi6pSWAGLiIhIH7G3UG8E9/Cpff93S1TAEguUAUB1rV312hgLaBCRVlEdwPJ4PFi5ciX27t0LALDZbKisrMTMmTPR2dmJnTt34tChQ3A4HLj33nuxbds25OfnR8WYWVlZ+MUvfqFqzK1bt2L//v0AgMWLFyMpiQGcaKKlEkkwfACaTjthK+J/fyKiiW6orVsiamrtqG9ul6wIxPAVKZHaKJaWFP6L/UotCC1mk2KIS+7fhpz4ePOIMuqyFbDMJvT0i4ek1LKmyQWwxFsQugakAljSYTD9ASxWwCIKN6kAlv1cF66cyvdzIiIiOVoqYJkYwCIiItJFrAWhT1ePIGOoff//d0eP6Lqa2Ppfm7MPDRqLbrCABhFpEdUBrO3btweCUDNnzsSWLVtgs9kC99955514/PHH8cwzz6CzsxOPPPIIXnjhhagYMykpCWVlZYrjDQ4O4rvf/W7g689//vNBzZ+M569E8ss/HxZt4WOkXpc7tAMQEVHMGN7W7WxHH/oG3EiKt2B6VhJP9kg1qaBNaggqYClRakEYp7JViFjLw8R4M5596ZjkYxJGVZGSCy6ZTQLOtfWomouUo6cuoCgvU/S+rl7xANaASKUyYOzch9PbXoUBLKLw6xsQP9d7/pXjeLe5HRUMVhMREUnSEsCSq3ZLRERE0sRCzN5QXxiVofb93+7oFv2+2PrfsdNOzZEyFtAgIi2i9mzE4/Hg6aefDnz9xBNPjAhC+VVVVeGqq64CABw8eBC1tbUxNeZrr72GCxcuAADy8/Nx7bXX6n4uCp2Sgsm49SNXhnyc5ISozkQSEVEE2KxJ+Nh1l6N8YT4+dt3lDF+RIULRglBJkooKWFrYrEm4sSgHN193ORbOnSZZVhwAEkZVkTIrtCAclAhDqfXvjl5s/PNh0fskK2AN6mlBqO90ji0IicKrrqkFv/7LEcn765vbsXZrHeqaWsI4KyIiotjBClhEREShJ7a0JlVdPxy0vP+LGRBZa+vTWQiDBTSISK2oDWC99dZbaG1tBQDMnz8fhYWFoseZzWYsX7488PWuXbtiasw//OEPgdusfhXdSotyEMrTdwFAQa41hCMQERERDYlMC0L5oLnFEtypicUiF8AaVQFLpnKUxWxCSmLwoXipkJNUAEtsUQgAEmR+L2xBSBT97I4ubK5pVAw+uj0+bK5phN3RFaaZERERxQ4t1Tf0fkYmIiKa6MQ2N3ojmMDyBLl+1d7lGnOOnaSzEAYLaBCRWlEbwHrjjTcCt2+66SbZY4ffP/xx0T7m+fPnsW/fPgBAXFwcKioqdD0PhYfNmoSi/KyQPf/c/CxWNSEiIiLDnDjjlLzvr2++F/aL/IkKFbDiNFbA0vL4hFFjy1XbMptMmH25Nai5yOnUWgFL5vem9+JSsBW+iEi96lq76qpzbo8PNbX2EM+IiIgo9mi5AKu3TTcREdFEJxbA8kUygGVA+8PR59hzcq2ai22wgAYRaRG1Aazjx48HbhcVFckem52djZycHABAW1sbOjo6YmLMP/3pT/B4hi60fPSjH0VWVujCPWSMitI8WEJwEm8xCygvzTP8eYmIiGhiqmtqweqN+yTvbz7XFfZ2V4kJxrYgHPN4mUpRYypgyQSXzGYBkzOTg5qLnK5eqQpY4heVEiwyASydn0s9bEFIFBZtzj40NLdrekx9czvaOvtCNCMiIqLY5NFw8ZcVsIiIiPQRa0HojeAePiMCWKPPsfUU22ABDSLSImoDWHb7pUTq9OnTFY8ffszJkydjYswdO3YEbrP9YGzIy0nHivJCQ0NYFrOAFeWFyMtJN+w5iYiIaOK61O5KfoUk3O2uQt2CULYCloYAlsUsBF2NS057Zz/anGPDFfoqYOmb5yBbEBKFxbHTTmhdLvYBaDrtDMFsiIiIYpeWDQR6PyMTERFNdFHXgtCAAJbYObaWYhssoEFEWkVtw9Lu7u7A7YyMDMXjrVar6GOjdcwDBw7gvffeAwBMmTIFpaWlmh4fKunpiaqPNX1w4cpkEpCZmRKqKUWdmxfk4crpGfjf3cdx8Oj5oJ4rIy0BD395PmaFsM1NtJmorxsKHl87RETq6Gl3tbKyOMSzApIUWhAGG3CP01ABS67alsVkkn2uYPUPeLBq034U5WehojQvEMIfkAhgJcjMRe/ufi0tXIhIvz6XW9fjenU+joiIaLzScgGWFbCIiIj0EUTeQyPagtCgCu6jz7H9xTaGNrBKj8ECGkSkR9QGsHp7ewO3ExISFI8ffkxPT0/Uj/nHP/4xcPu2226D2Sx/QSpczDp2+wuCoLv9Sayac2UmHv3PG/DgE6/hvfP6An8AMDkjGXOuzDRwZrFjIr5uyBh87RARSQum3VWoS2krVcAKtuqUXKgqXmMLQrNJgCAAoVpj8mHo937kVAdWlBeipGAyXBItCEfPffRc9WAFLKLwSErQt+SSrPNxRERE45VXQwDLxAAWERGRLmJvoQYUodLNY1D/Q7Fz7JKCyVi9LBE1tXbUN7ePqF4tYKjtYPmwjZNERGpxVS8CLl68iL/97W8AhoIEn/vc5yI8o0u07IY3mQQIggCfz6fpJHg8mT4lLagAVsuF3glXgYCvG9JLy2tHT5iUiGg8CKbdla0o1AEspQpYQbYglKkUNXpsueCSxWyCIAiIs5gwIBGKMorb48Mv/3wYt37kSnRedIkeM7p613B6Ly6prZBGRMGZk2uFAGj6uywAKMi1hmZCREREMcqtpQIWN+0RERHpItaCMJIVsIy4hih3jp2Xk46VlcVoc/ah6YwTvS43khMsKMi1hnyjKhGNX1EbwEpOTkZnZycAwOVywWKRn6rLdemCRUqKvtZU4Rpz165d6OvrAwB8+MMfRm5uro7ZhkZXVz/cbvH2J6NlZqbAbBbg9frQ0aGv6lisuyp3EvbVn9P9+AvdLpxv6Q5pm5tow9cN6aX2tWOxmJGRkRzGmRERRY9obneVmKAQwAry85CWClhyx/qrY8WZQx/AAoZ2EtbsOyV6n8Vskg1ZWUz6fmfuCbYBgChSbNYkFOVnoV5DZcK5+Vlc6CUiIhpFywZWs8jFYyIiIlIm9hZqRAiqzdmHY6ed6HO5kZRgwZxcK2xW5fNeLS2Ipag5x7ZZk1TNh4hIjagNYKWlpQXCUBcuXFAMODmdzhGPjeYxh7cf/PznP69tkhRVjPjg0dHdjykMixAREZEBorndVVKIWxDKBdoT4kbeJ9eC0B/OioaA/Oh5jyb3c8hhAIsofCpK83DkVIeqynMWs4Dy0rwwzIqIiCi2eDVU32AFLCIiIn3EK2Dpfz67owvVtXY0iLT4K8rPQoVCi79gA1iCAJ5jE1HYRf6qgoS8vEt/EM+ePat4/PBjZsyYEbVjnjhxAu+++y6AodDWJz7xCY2zpGhhd3Thub81Bf087Z39BsyGiIiI6FK7Ky3C1e5KuQVhcBdK5AJco9v4yQWX/BdslAJYetv/aTG6ctdoei8uud0MYBGFS15OOlaUFyr+jTOZBKwoL5RdfCYiIpqoPBpaaJt1VoklIiKa6ASRAJaWEPRwdU0tWLu1DvWjwlcA4ANQ39yOtVvrUNfUIvkcWipgirlyahrPsYko7KL2bGT27NmB2w0NDbLHtrW1weFwAACysrKQmZkZtWMOr3516623IjExUcdMKRpU19pV7WJWwgAWERERGcXf7kqLcLW7SlSqgBVsC0LZCljqWxD62/rFWeTDT8tvmY3i/CzNgTctFANYeitgGVDFlYjUKymYjNXLSmT/Zlw5JRVXTNFXzZuIiGi801IBQ+9nZCIioolOLMOsJ39ld3Rhc02j4jVUt8eHzTWNsDu6RO8PtgKW3dGNDdvflXx+IqJQiNoA1sKFCwO333jjDdljX3/99cDtRYsWRe2Yg4ODqKmpCXzN9oOxq83Zh4bmdkOeq72LASwiIiIyTkVpnupqUuFsdxUfZ4LIRrphcwmyBaHMz5wQr74Clv93p9QScc4VGVhZWYzH71uAuz99Fb5YNgt3f/oq3P7RfA2zlqf0K9G7u58VsIjCLy8nHSsri/Hj+24Q/fty0tGNVZv2c3GYiIhIBANYREREoSfWglBPBSwtBSzcHh9qau2i94m9/2ekJWjaDKmm0hYRkZGiNoA1f/58ZGdnAwAOHDiAxsZG0eM8Hg+ef/75wNeLFy+O2jH37NmD9vah0M6cOXNw9dVX654rRdax084xJTP1YgUsIiIiMtKldlfyH/Ut5vC2uxIEQbYNYdAVsLS0IJQJa5kDFbDk55OeHA9gqOrYjUU5uPm6y3FjUQ6uK5hsWFUspcUqvS0IB4Ms4U5E+p0+fxFuiX+DatswEBERTTQer/rPr3o/IxMREU10Yi0IfRoDWHoKWNQ3t6Ots2/M98UCWMX5WYHNkLd8+HLR0NhoSpW2iIiMFLUBLLPZjAceeCDw9apVqwLhpeHWrVuHo0ePAgDmzZs3oorVcDt27EBBQQEKCgqwfPnysIw52vD2g6x+Fdv6XG7Dnmt4Baw2Zx9q6x34v7fOoLbegTbn2A8cREREREpKCiZj7QM34sMfmjKm6pSAocWK1ctKUFIwOazzkmtDGHQFLINaEPov2Mg9n8VskgyT6WkDKUVpEcmkc3e/x4A22kSknb8Ng9K/QC4OExERjeTVUAFL72dkIiKiiU60ApbGPXx6Clj4ADSddo75vtj6lckkBDZD/rujV3WFLrlKW0RERpK+AhIFbr/9duzevRv79u3DiRMnUFFRgcrKSsycORNOpxO7du1CXV0dACA9PR1r1qyJ2jHPnz+PvXv3AgDi4+Pxmc98Jui5UuQkJRj3T6fF2Qe7owvVtXY0NLeP+GAiACjItWL25VakJMYhKcGCOblW2KxJho1PRERE49Osy6145O4bcK71Ig40nEOvy43kBAsKcq2wTYrMZwm5CljBBrBkK2BpakGoXAErPSVOdFegX0VpHo6c6lBdbl1KfJxCFTOdF5dYAYsoMvS0YVhZWRziWREREUU/LRsI9LbpJiIimujElrq0VsDSW8Cid9TjfD6faLjK/z4fTKWtSK2LEtHEENUBLIvFgqeeegpVVVXYs2cPWltbsXHjxjHHTZ06FevXr8esWbOidsw///nP8Hg8AICbb74ZVqs16LlS5MzJtUIADGlD2NHlwo+erxMtpenDUFr82LDktwCgKD8LFaV5YWsZRERERLFrSmYybizKifQ0AMhXwIoLslWIXGAqfnQLQpmLMhZ/BSyZQFfaB+0HpfjbQP7yz4ehYbP+GFnpibL367245GEAiyjsuDhMRESkj9fr07QGK7fZgoiIiKSJVZH0YSgMJbcRcTi9BSySRz1O7JopcKlyfTCVtmxFPMcmotCJ6gAWAKSmpmLTpk3YvXs3qqur0dDQgPb2dqSkpCA3Nxc333wzli5dirS0tKgec8eOHYHbn/vc5wybK0WGv7VMvcYFdClSHyTE+DC0EH/4ZDvuvHk2PjpvuiFzICIiIgo12QpYMgEqNeQCUwmjKkmZZcJe/gs2shWwFAJYwFAbyP9vSRF+/scGxWOlKAW95H4OOYNsQUgUdlwcJiIi0kfLuinAABYREZFeUhkrr88Hs8oAlp4CFv5uQMNJBrA+eJ83qtIWEZHRoj6A5VdWVoaysjLdj1+yZAmWLFkS1jGH+9vf/mbI81D0MKq1jF5eH/D8K8fxzyPnsfTjs1gNi4iIiKKe3C64YFsQygWmRlfekmvd55+HXCAsPTlO1ZyunZWNuUGE9hPipANrgP6LS25WwCIKOy4OExER6ePxavvsqneTAhER0URnkghZaelCqKeAxdz8rDGVn70KASyjKm0RERmNDdGJdPK3lrFE+KT+xNlO/Oj5g9j6ShP+760zqK13oM3ZF9E5EREREYmRq4AlV8FKDbkA19gKWNLH+u+TC3SlpShXwPKrKM3T/XkxPk7+dyIIguTimBwGsIjCj4vDRERE+khdgJWi5/MxERERQbLNoNb3Yi1rYRazgPLSvDHfV6qA5a+0pYVYpS0iIqNxJY8oCCUFk7F6WSJqau2ob27X3FLCKB4v8Nqh90d8b1pWMq6bMxmlRTmwWdmygoiIiCIvpC0IZR4/OpwlVzkq0IJQJqSlpgWhnz+0v7mmUXPlVKUKWABgMgnwanxen2+okoDZxP04ROFiVBsGIiKiicattQVhkBs7iIiIJiqpZSItFbAA9WthFrOAFeWFoh1+PBKbB/3v80ZV2iIiMhrPRoiClJeTjpWVxXj8vgUov/HKqNllda69FzX7TuFbm/Zjw/Z3YXd0RXpKRERENMGNbgU4XLBVReUqYI3ewSd3rH8eshWwVLYg9BsK7ZegOD9L0+68eBUBLKUWKwkSoTe3O1JbB4gmJv/isBZcHCYiIgI8GjcbyLUbJyIiImmCxKqVV2sCC5fWwqTMvGwSVi8rQUnBZNH7pSpgDb8Ga0SlLSIiozGARWQQmzUJn104A/d/NvJtCUerb27H2q11qGtqifRUiIiIaAILZQtCucDUaHIVsCwqWhCma2hB6Dc8tH/3p69CapJyiGt060QxSheYpKpoub1sQ0gUbloWh80mcHGYiIgIOloQMoBFRESki9R7qE9HAAuAaGUrv/LSK2Xvl2xBOOyc2l9pS+k8W67SFhGR0diCkMhg0dKWcDS3x4fNNY1YvSyRHzKIiIgoIpISZCpgBdmCUK6q1WhyVaPMKipgaWlBOJrNmgSbNQmv1p3Fxb5B2WNVVcBSDGCJ/xxuNwNYkfbqq6+iuroahw8fRmtrK1JTU3HFFVegrKwMS5cuRWpqalSO2dLSgsOHD6OxsTHw/62trYH7m5qaDJ/3eKGlJanHC1TX2lFRmsfzNyIimtA8GjcOKH0+JiIiInFSDX40ZqFVcQ14ZO+XCmCN3ogod01WwFBl6XKeVxNRGDGARRQC/goHbc4+/OUfp7C33hHpKQEYCmHV1NqxsrI40lMhIiKiCUiuApaWAJWYOIv6Cy1muRaEpg8qYMkco7UFoZiUROVTManqVcPJ/SxDzyE+zqCHAaxI6enpQVVVFV577bUR3+/o6EBHRwfefvttbN26FRs2bMA111wTVWO+9tpruP/++w2Z00Q1fHH43eZ22WPrm9tx5FQHVpQXSrZlICIiGu+kLsBKYQCLiIhIH5NEAktPC0Il/UoBLIl1K7F1sOHXZJvOONHrciM5wYKCXCtsk5IMmS8RkVoMYBGFkM2ahM985ErU1juiphJWfXM72jr7+KGDiIiIwi6kLQg1PF6ubZ+aClhpQVTA8ktKVA5xxatoQahYASte/Dk8CtV3KDQ8Hg9WrlyJvXv3AgBsNhsqKysxc+ZMdHZ2YufOnTh06BAcDgfuvfdebNu2Dfn5+VEzpndUBYq4uDjMmjULR44cCWqOE01eTjrKS/Nw2N6heFHZ7fHhl38+jLLrLsf07FTMybXCZuW5HBERTRyaA1hBnlcQERFNVJItCENQAss1qK8CllRIDLhUdZ6IKJIYwCIKMZs1CUX5WahX2N0cLj4ATaedsBXxQwgRERGFV2K89OmH1CKPWi3OPsn7Nmx/d0QbL7nQkr8Sl1wAS+4+tYyqgKX0e0uUeA5WwIqM7du3B4JQM2fOxJYtW2Cz2QL333nnnXj88cfxzDPPoLOzE4888gheeOGFqBkzMzMTt99+OwoLC1FYWIiCggLEx8ejoKAgqDlORNW1dtUXlL0+4JW3zgAYaqFQlJ/F1oRERBEUrjbCFy9exL59+/Dmm2/iyJEjOHXqFLq7u5GQkIDJkydj7ty5uPXWW7Fw4UIIMhcjY53WjQOsgEVERKRPOFsQKlbAkhjUv3GSiChaMYBFFAYVpXk4cqoD7iipNNDrckd6CkRERDQByVXACkZdUwu2vnJc8v7RbbzkdsX7L9hc6HZJHjM60KVHsooAVrxFRQtChQtM8RIBLFbACj+Px4Onn3468PUTTzwxIgjlV1VVhf379+Po0aM4ePAgamtrUVpaGhVjzps3D/PmzdM1F7qkzdmHBp0bdHxga0IiokgJZxvhZ599FuvXr4fLNfYzqdvtht1uh91uR3V1Na677jr85Cc/wbRp04IaM1ppbXsU7MYOIiKiiUqqupQviBaEggCIPVx3AIvv80QU5ViPlygM8nLSsaK8ENFSATs5gdlLIiIiCr/EEHwGsTu6sLmmUVUbr801jbA7uhQrYNU1teBPe+2Sx9Q3t2Pt1jrUNbXonneKihaECSoCa2aT/AdMqedgBazwe+utt9Da2goAmD9/PgoLC0WPM5vNWL58eeDrXbt2xdSYpOzYaWfQLeqH/00jIqLQ87f09YevbDYb7r//fjz55JN45JFHAgFlf0vf5ubmoMaz2+2B8NWUKVNw22234bvf/S7Wr1+PH//4x1i6dCmSk5MBAAcPHsTy5cvR3h4d1feNxgpYRERE4SFVUdMbRAksqfdll1IAS2LdSmkdjIgo0vhXiihMSgom4+Hl1yEtWfliWygJAApyrRGdAxEREU1MrRd6Je/bsP1dXUGC6lq76iqjbo8PNbV2WGTKlZ+/0IvNNY2Ki0vBhh/UBOLjVbQ6VCq9LtWC0O1mACvc3njjjcDtm266SfbY4fcPf1wsjEnK+gyqSOz/m0ZERKE3uqVvdXU1vv71r+PWW2/FnXfeiW3btuGrX/0qAARa+gZDEASUlpbimWeewd///nf8+Mc/xvLly7F48WLcdttteOyxx7Bz507k5eUBAM6ePYt169YF90NGKY9X2+dWBrCIiIj0kXoLDWYFSWrDpGtQ/rxYal2O7/NEFO0YwCIKo7ycdHy9sjiiHxDm5mfBNikpYuMTERHRxFTX1IKNfz4seb+eqlJ62njVN7fD2T0geX9tvUNzoEsPNS0I1VTAsih8rpR6DrfGC1kUvOPHL7XJLCoqkj02OzsbOTk5AIC2tjZ0dHTEzJikLMnAaoD1ze1o6+wz7PmIiGgsLS19r7rqKgAItPTV67/+67/wm9/8BjfeeCNMEpUeLrvsMmzYsCHw9csvv4y+vvH3nqBU6XY4kyBIVu8gIqLY8uqrr+JrX/saPvaxj6GoqAgLFizA0qVL8T//8z+4ePGiYeN4PB4cP34cO3bswA9+8AN84QtfQHFxMQoKClBQUIBvf/vbho0V7aTeQ306K2B5vT7R9oNAEC0IFTYiEhFFGgNYRGGWl5OO+yoKZSsvhIrFLKC8NC/s4xIREdHE5m8TqBRs0lpVSk8bLx+A42edkvf/62ynpufTG35Q04Iw3qKmBaFCAEuyAlawDdBIK7v9Ulhv+vTpiscPP+bkyZMxMyYpm5NrhVFngz4ATaedBj0bERGJiURLX6vVquq4OXPmBKpg9fX14b333tM9ZrTSEsDiRVkiotjX09OD+++/Hw888AD+9re/4f3338fAwAA6Ojrw9ttv4yc/+QluvfVWvPPOO4aM9/Wvfx2f+cxnsHr1amzduhXvvPMO+vv7DXnuWGOSWGPySqWoFAxKtBEElANYblbAIqIYxQAWUQSUFEzG6mUlKM7PMmzhXYnFLGBFeSHyctLDNCIRERHRED1tAtXQ28arV+ZxegJdesIPShWwTIKgKrBvNsuf0kkGsGQWwSg0uru7A7czMjIUjx9+4XX4Y6N9TFJmsyahKD/LsOeT+5tGRETBi/aWvqmpqYHbLpcrLGOGk0fleQQgfeGYiIhig8fjwcqVK/Haa68BAGw2G+6//348+eSTeOSRRzBv3jwAgMPhwL333ovm5mZDxhzOarXiyiuvDPp5Y5FUEUmdBbDgkVl7cskEsOyOLlTvFV8b/NMbJ1Vv3CQiigTj6t4TkSZ5OelYWVmMNmcfms440etyo6dvECfOduLYexdGXPwTAMy8bBJOOro07frym5aVjLtv/RDDV0RERBR2etsEtnX2KbZN1tvGK9nA9l+AvvBDikIAKz7OpKp9itJFJskWhAxghV1vb2/gdkJCguLxw4/p6emJmTGjUXp6oupj/f+mTCYBmZkpoZoSli/+EFZv3GfIv8XszJSQzpWUhet1Q+MLXzexQ09LX4fDEWjpm5mZGbK5DQwM4NSpU4Gvp02bFrKxIkXLWqhSe24iIopu27dvx969ewEAM2fOxJYtW0a0/b3zzjvx+OOP45lnnkFnZyceeeQRvPDCC0GNOXfuXOTn56OwsBCFhYW4/PLLsWPHDqxevTqo541FJqkWhLorYEk/rn9QPIBV19QiW0W/+VwX1m6tw4ryQpQUTNY1LyKiUGIAiyjCbNYk2KwjLy4OD2UlJ1hQkGuFbVKS4gcPKQW5GQxfERERUUTobRPYdNoJW5F8AMvfxkvL8wsACnKtGmckT0+gK1mhBaFU5arR9LYglCsDTzTeKFWKEyMIQkjbGM25MhPfXFaCn2ytCyqEJQhA8axsXT8jGS/Urxsan/i6iX56Wvo6HA4AQy19QxnA2rlzZ6BqZWFhIbKzs0M2VqR4vOrfJ9mWiIgodnk8Hjz99NOBr5944okR4Su/qqoq7N+/H0ePHsXBgwdRW1uL0tJS3ePed999uh873khWwNJZAktrBSy7o0vVNVC3x4fNNY1YvSyR1z6JKOowgEUUhcRCWYC/dWEiamrtqG9uH1Mla25+Fk46utDdOzjicecv9IKIiIgoEkLRJtDP38arXkOFrbn5WbKVtcIV6FIKbcXHqQtT6A1gaQ30U/CSk5PR2dkJYKg9kMUi/xoY3kIoJUVfZZRIjBmN5BZ9RzOZBAiCAJ/Pp3uRWa3rC6di7QM34n93H8fBo+d1PUfJnCnImpSo6Wck44XzdUPjh5bXDUOWkRWtLX07Ojqwbt26wNf3339/yMZSI1QVJ5OS41U/r8ViZkW5cY7VA0kPvm5iw1tvvYXW1lYAwPz581FYWCh6nNlsxvLly/Hwww8DAHbt2hVUAIsuka6Ape/55Db/uUQqYFXX2lWvV7k9PtTU2rGysljf5IiIQoQBLKIYI9a6cHiVrCd+dwjHTjtHPMbR3oPaegf6XG4kJVgwJ9cqGvAiIiIiMlqo2wRWlObhyKkOVQs0FrOA8tI82WM+lJeJRnuHqrEB5UCXFJNJQFKCGX0u8ZLrqitgKVyQjZcMYDGsEW5paWmBMNSFCxcUA05Op3PEY2NlzGjU1dUPt1v839pomZkpMJsFeL0+dHSEvg1jVkocHqgoxJYEM15/55ymx1rMAj41//KwzJPkhft1Q+OD2teNxWJGRkZyGGdGo0VjS9+BgQE89NBDaG8f2ohQVlaGm2++OSRjqRWqipNaLvpazAIDixMEqweSHnzdRLc33ngjcPumm26SPXb4/cMfR8GRCmB5dSaw5Nbq+kdVwGpz9qFBwwZLAKhvbkdbZ5+udTkiolBhAIsoRklVyZqSmTwmgHWhewDPvHR0xPemZSXjQ1dmIDMtEWazicEsIiIiColQtwnMy0nHivJCxRLlFrOAFeWFiqXJP/ORK9B0+oJhgS45yQlxkgEsqeDUmDkoVMBKjGcAK1rk5eXh7NmzAICzZ88qtjDyHwsAM2bMiJkxSZ/Z062aAlhq/6aN1ubsw7HTTm7OISKKYV6vFw8//DAOHjwIAMjNzcWPfvSjCM8qdBUnB0UqZEgxm0ysCjnOseok6cGqk7Hh+PHjgdtFRUWyx2ZnZyMnJwcOhwNtbW3o6OgIacvfiUKQePnrrYDldku/J/cPuOHz+SB8EPo6dtqpae0QGFprbDrthK2I57REFD0YwCIaZ6ao3BV5rr0X59pHtiYUABTlZ6GiNI99k4mIiMgQoWgTOJqaNs3lKj/f5F82ydBAl5zkRAvau8Tvi7ewBeF4M3v2bOzduxcA0NDQgBtuuEHy2La2NjgcDgBAVlaW7oXkSIxJ+lyWrb4VSlZ6Ih647WpNf3/sji5U19rRIPI3kueARETyoqmlr8/nw6OPPoq//OUvAIBp06bh2WefxaRJkwwdR49QVZzsuuiSvX8kViIc71h1kvRg1cnYYLfbA7eVNg/5j/Gfw548eZLnsAYwvAKWVzqA5fMBg25vYANin8uta4xenY8jIgoVBrCIxpnJGfqT3j4Mlew8cqoDK8oLUVIw2biJERER0YRldJtAMUptmoezOyRSTwB+/scGVJTmYfWyEkMCXXJSEqVPx9S2IDQpBbCkKmDJ7EKk0Fi4cCF+85vfABhqkXDPPfdIHvv6668Hbi9atCimxiR9crJSVFcLzEhL0PT3p66pRTJUynNAIiJl0dLS1+fz4fvf/z5efPFFAMDUqVOxZcsWVRepY5mWilZKmxOIiCh6dXd3B25nZGQoHm+1WkUfOxGkpyeqPta/bmQyCcjMlP8Mk54m/rxpaYmKjxXjcPbL3p+UkoBJqUOtm21Z+kLr2ZkpuuZG8rS8boj8+LoZwgAW0TgzJYgAlp/b48PmmkasXpbIXdBEREQUNKPbBMqRatPs5w8iSBkeRFAb6NIrOTFO8j61LQiV2iNIV8BiACvc5s+fj+zsbLS2tuLAgQNobGxEYWHhmOM8Hg+ef/75wNeLFy+OqTFJn/rmNtXtFk63dGNv/Tn0uzyKbQTtji7Fv70AzwGJiOREQ0tfn8+Hxx57DL///e8BAFOmTMFzzz2H3NxcQ54/mnk0tJlT2pxARETRq7f3UseWhIQExeOHH9PTM7Eq4ulplSkIAsxm+fdJi0w1dj1jKlXOGnB7A89bPCsbgqCt3aEgDD2OrUNDR83rhmi0if66YQCLaJwxaqHB7fGhptaOlZXFhjwfERERTWxGtgnUS28QQS7QFYxkAypgKe3yj48TX4Tq7h1Ebb0DfS63YoCDjGE2m/HAAw/gscceAwCsWrUKW7ZsQVZW1ojj1q1bh6NHjwIA5s2bh4ULF4o+344dO7B69WoAQ0Gr4QGqUI1JoeH/26TWwKAXz750LPC1XBvB6lq76pajPAckIhIX6Za+/vDVtm3bAACTJ0/Gc889hyuuuCLo544FXg0BLLOJF2CJiGj801Id0mQSIAgCfD6f4nuqVPjJ7fZqGtPPNSDfmrinbzDwvLZJiSgpmIyDx1pUP3/JnCnImpSoa24kT8vrhshP6+tmvIYnGcAiGmderTurfJBK9c3taOvsM6zKAxEREU1sWtoEhkK0BRGSE6RPx6SCU6MpBbAsJhMsZmHMz13b4EBtgyPwtT/AsXzxhzDnyuAvFJK422+/Hbt378a+fftw4sQJVFRUoLKyEjNnzoTT6cSuXbtQV1cHAEhPT8eaNWuibsxnnnkm0IZJzPr160d8PWnSJHz1q18N+ucYz7T8bRIj1UawzdmHhuZ2Tc/Fc0AiorEi2dJ3dPgqOzsbzz33HK688sqgnztWuLUEsCbwTnsioliXnJwcONd0uVywWOQvYbtcrsBtpfbA401XVz/cbvlwk19mZgrMZgFerw8dHfKVwnp6XKLf7+zqU3ysmAvOPtn7W1ovIj3h0gbET12fi3dOtKo6P7aYBXxq/uW65kXKtLxuiPy0vG4sFjMyMpLDNLPwYgCLaByxO7rw97ffN+z5fACaTjthK+LiOxERERlHqU1gKERjECHFiApYCheZzGYBZrMJbo/8wpw/wLF64z58c1kJri+cqmp80sZiseCpp55CVVUV9uzZg9bWVmzcuHHMcVOnTsX69esxa9asqBtz69ateP996XOOTZs2jfj6sssuYwBLhp6/TVJGV+87dtqpuq2hH88BiYjGimRL3zVr1owJX+Xl5QX9vLFES1ULs8AAFhFRrEpLSwsEsC5cuKAYqnI6nSMeS8GT2uOn1EpQilvhPbx/0D3i67ycdKwoL1SsXm8xC1hRXhjSKvpERHqNz7peRBNUda0dRleC7HW5lQ8iIiIiinLBBBFCJTkxTvK+eNUtCOVP6UwmAXEayjm7PV78ZGsdTpxxqn4MaZOamopNmzbhF7/4BW655Rbk5OQgPj4eGRkZKC4uRlVVFXbu3Il58+bF9Jikjp6/TXL81fsAoE/nuRzPAYmIRvK39PVbtWoV2tvHhme1tBEuKChAQUEBli9fLjnuD37wA/zud78DcCl8NWPGjGB+lJik5aIvK2AREcWu4QHjs2eVO70MP2Yivj+GgkkiyKwzf6UYwBJrUVhSMBnfXHqN5GOK87OwellJoPIzEVG0YQUsonHCyJ3Tw7Ve6EVtvQN9LjeSEiyYk2sNe8UKIpL36quvorq6GocPH0ZraytSU1NxxRVXoKysDEuXLkVqamrUjenz+fDuu+/iH//4B9555x3861//QltbG3w+HyZNmoSCggLcdNNNuO2225Cern4nyzvvvIMdO3bgnXfewblz59Db24ukpCTk5ORg7ty5+MxnPoMFCxYE++MTUQyKxiCCIRWwZFoQCsLQ4pnWC1Fujxf/u/s4HqgYW9mBjFNWVoaysjLdj1+yZAmWLFkS1jEB4LXXXgvq8TSS3r9NcvzV+5Jk2pzKkWuPSkQ0UYW7jfD69euxdetWAIAgCPjSl76EkydP4uTJk7KP+9CHPoRp06YFNXa08Who06u0OYGIiKLX7NmzsXfvXgBAQ0MDbrjhBslj29ra4HA4AABZWVnIzMwMyxzHO0EigOXVWflBsQKWSAALADLTxa9BfuqGXFT+x0xdcyEiCheuqhGNE0bvnPbbXfc+gEstRgQARflZqCjNY3lPogjr6elBVVXVmAuhHR0d6OjowNtvv42tW7diw4YNuOaaa6JmTLvdji9/+cv497//LXp/a2srWltbUVtbi40bN2LNmjX4xCc+ITsvl8uF7373u6ipqRlz38WLF3HixAmcOHECf/zjH7Fo0SI8+eSTLE1NNMFEYxBBvgKWuotHcgEs/wUomUMk1R07j7b/mBGy9otENETv3yY5/up9c3KtED74Wi0BQEGu1fA5ERHFunC3ET506FDgts/nw5NPPqnqcWvXrtUc0I52Hg0XfeU+GxMRUXRbuHAhfvOb3wAA3njjDdxzzz2Sx77++uuB24sWLQr53CYKqbdR/RWw5B/oGhQPYHX1Doh+PydTvi0lEVE0YACLaJwIxc5pMT4M7ag+cqoDK8oLWeaTKEI8Hg9WrlwZ2BVks9kCu287Ozuxc+dOHDp0CA6HA/feey+2bduG/Pz8qBizs7MzEL6Kj4/H9ddfj3nz5mHatGmIj4/He++9h7/85S9obm6G0+nE17/+dTz55JNYvHix5Ny++c1v4m9/+xuAofYQt9xyC6699lrYbDa0tbXh0KFDeOWVV+D1evH666/jvvvuw/PPPw8Td8cSTRjRGERINqIClkx1K/99ChsORfl8QwEOWxEDWEShpOdvkxq9Ljds1iQU5WehXkOl5OnZKcZPhohonPC39N29ezeqq6vR0NCA9vZ2pKSkIDc3FzfffDOWLl3KzT4GYwCLiGhimD9/PrKzs9Ha2ooDBw6gsbERhYVjK3N7PB48//zzga/l1oxJG8kKWDoTWHpaEAJAV494ACs9RXojIxFRtGAAi2icCMXOaTlujw+baxqxelkiK2ERRcD27dsDQaiZM2diy5YtsNlsgfvvvPNOPP7443jmmWfQ2dmJRx55BC+88ELUjJmTk4O7774b5eXlmDRp0pj777nnHvzoRz/CCy+8AK/Xi8ceewylpaWi7QgPHjwYCF+lpKTg+eefH3Nyftddd6GhoQFf+tKX0Nvbi4MHD2LPnj34+Mc/rvv3QUSxRU8QYW5+VkgrQMm1IIxX3YJQOkhq/mDhTO9lqFC2XySiIXr+Nqnhr95XUZqHI6c6FHce+51p7cGqTftZ9ZiISEY42ggPv7A80WkJYJkYwCIiillmsxkPPPAAHnvsMQDAqlWrsGXLFmRlZY04bt26dTh69CgAYN68eVi4cKHo8+3YsQOrV68GMBTu4nurMqn3UV+IAlh9mgNY8brmQUQUTgxgEY0Todo5Lcft8aGm1o6VlcWyx7U5+3DstBN9LjdsWSkonpUN26TEMM2SaPzxeDx4+umnA18/8cQTI4JQflVVVdi/fz+OHj2KgwcPora2FqWlpREfc/bs2XjllVcQHy99wmSxWPC9730P77zzDhobG+F0OrF7927RRWp/KAwAli5dKrozCgCKioqwdOlSPPPMMwCGglsMYBFNLFqCCBazgPLSvJDOR64FYYIRLQg/qIBlMeur9hfK9otEdInWkJSS4dX78nLScfenr8LmmiOqH8+qx0REFE28XvXlXOWqwxIRUfS7/fbbsXv3buzbtw8nTpxARUVFoAOD0+nErl27UFdXBwBIT0/HmjVrgh7zzJkz+MMf/jDie01NTYHbR44cwfr160fcf8MNN2DBggVBjx1tJApgQUMWegTFFoTDAljDryMeP+sUPT49mQEsIop+XFEnGidCtXNaSX1zO9o6+0SrQ9gdXaiutaOhuX1EMEwQgJKCyfjU9bncUU2kw1tvvYXW1lYAQ7t3pAJHZrMZy5cvx8MPPwwA2LVrl+4AlpFjJicnqxpTEAR88pOfRGNjI4CRJ77DdXR0BG5feeWVss85/P6enh5V8yCi8SMvJx0ryguxuaZRdhHIYhaworww5J9T5AJO8RYDWhB+EM5KTY5De1e/prkJQmjbLxLRJWr/NqmVk5WMY+85MSd36DzxMluqrudh1WMiIooGHg3vjWxBSEQU2ywWC5566ilUVVVhz549aG1txcaNG8ccN3XqVKxfvx6zZs0Kesxz585h06ZNkvc3NTWNWZe2WCzjMoBlkkhghaoClmvQLXkdUQwrYBFRLGAAi2gcMXrntBo+AE2nnbAVjQxg1TW1SF5A8PmAg8da8M6JVu6oJtLhjTfeCNy+6aabZI8dfv/wx8XCmMBQS0G//n7x8EBmZmbgtt1ul32+U6dOBW4bcYJORLGnpGAyVi9LRE2tHfWjQ+IYajtYHqa2W2dbL0re96e9J7E0fpbiPGQrYH3QnjApXl2Ya7iSOVNC2n6RiEaS+9uk1bn2Xjzz0lEIAIryszBr+th2z2qprXpMREQUKlpaEDKARUQU+1JTU7Fp0ybs3r0b1dXVaGhoQHt7O1JSUpCbm4ubb74ZS5cuRVpaWqSnOu5ItSD06iyBpRTAOtfWg7Vb61Rd00xJtOiu8E5EFE4MYBGNI2p3TpsE/SVDxfS63AAulQg923oRuw+eURyDO6qJ9Dl+/HjgdlFRkeyx2dnZyMnJgcPhQFtbGzo6OkYElqJ5zNHjXnbZZaLHlJWVBXYp/e///i9uvfVW0QpdDQ0N+P3vfw8AsNlsqKio0DUnIop9eTnpWFlZjDZnH5rOONHrciM5wYKCXGvYQkf+sLqUE2c7sXZrnWJYXT6A9UELQou2BSqL2YQvlM3W9BgiCt7wv021DQ7s/Md78OrcaQxcaiV4+GRwVZLlqh4TERGFmrYAFi/MEhGNF2VlZSgrK9P9+CVLlmDJkiWKx11//fWSnRcmGukWhHoDWPKPa36/S/Xmo8QE7ZsLiYgigQEsonFGTVWHm66Zhqf/2BDUrurhevoGsWH7u6pKhI7GHdVE2g2v8jR9+nTF46dPnw6HwwEAOHnypK4wVCTG7OzsxMsvvxz4etGiRaLHFRUV4ctf/jJ++9vfoqenB5WVlfjEJz6Ba6+9FjabDW1tbairq8Mrr7wCr9eL3Nxc/PznP0d6OoOfRBOdzZoEmzX8gQK7o0tVqzE1YXW5i0z+9oQWDReiLGYTvrmsBLMut6Kjg61aiSLBZk3CZxfOwOWTUw1pSxjs5hupqsdEREThwApYRERE4SHdglDf8ylVwNLytP0uj75JEBGFGQNYROOQmqoORflZqG8Obie0367972laDBmNO6qJtOnu7g7czsjIUDzearWKPjbax/zxj3+Mzs5OAMDHPvYxFBQUSB67evVq5ObmYuPGjWhra8NLL72El156acQxWVlZWLlyJW699dYRrQ2JiMKtutauOlChFFY3sgJWcX4Wli3+EOZcmQmPwiIZEYWekW0Jg+WvekxERBRuWtoeSbVOIiIiImWCRAArVC0Itejpd/M6IhHFBAawiMYxuaoOFaV5OHKqI+jd1AK07UQTwx3VRNr09vYGbickJCgeP/yYnh591UzCPea2bduwY8cOAEB6ejq+853vKD7m85//PFJTU/HjH/8YHR0dY+5vb2/Hr3/9a7jdbtx5552a52S09PRE1cf6F5FNJgGZmQyPkTp83USn8x29aNDYDqz+ZDvcgoDJGclj7rPKLDzFx1uQmZmClOQ4xTHmFWTjkbtv4OuGKMqIba4ZdHvxh783h3UeyQlcPiIioshwe9VfvPVXgCUiIiLtpHLMeq8ABnv9cTReRySiWMAVNKIJKi8nHSvKC7Gp+jCCCaEb9fGJO6qJyO/vf/87fvjDHwIATCYT1q5dq9j28MiRI3jwwQfx/vvvY+bMmfjud7+L66+/HpMmTUJnZyfefPNNbNy4Ef/617+wZs0aHD16FD/4wQ8kd/WEg9msviWYnyAIXFAmzfi6iS5H7B2aS7f7fEOPy7GljrkvLs4s+TiLWYDZbEK8RfoYP5PJNOLvEl83RNFl+OYat8eLP/69OWwVsQQABbnWMd9vc/bh2Gkn+lxuJCVYMCfXGpG2rkRENL55NFy8ZQtCIiIi/aK5AhbA64hEFBsYwCKawEoKJuPh5ddhw/Z30d07GNG5cEc1kXrJycmB1nwulwsWi/y/H5fLFbitt/VeuMb8xz/+ga997Wtwu90QBAFr1qxBWVmZ7GOOHz+OO+64A319fZg7dy6ee+45JCVduvhns9nw6U9/Gh/72MewfPlyNDQ0YPv27SgqKsIXvvAF1XMzmpb2XiaTAEEQ4PP5dJ/w0sTD1010utg3oO9xvQOifzfkrjGZTQI8Hq+qIJVrwA2Px6v5daMnTEpEwbGYTUhNikN3X3jO4ebmZ41o82B3dKG61o6GUW0RBQy1uq8ozUNeTnpY5kZEROOflnMZs4mfTYmIiPSSauXr07qT8ANut7EBLF5HJKJYwL9URBNcXk46vl5ZjB89Xxd0K0G9pHZUE5G4tLS0QBjqwoULigEnp9M54rHROub+/ftx//33w+VyQRAEfP/730dlZaXi45588kn09fUBAFavXj0ifDVcUlISVq9ejTvuuAMAsGXLlogGsLq6+uF2e1Qdm5mZArNZgNfrQ0eHvjaSNPHwdROdfDoXn3wer+h/x56LLpGjP3jMB//tPYPKY/b2DaKjo0fT68ZiMSNDpC0iEYXepNT4sASwLGYB5aV5ga/rmlqwuaZRtJWED0B9czuOnOrAivJClBRMDvn8iIho/NOyXskKWERERPpJNYvQe+nQbfA1R15HJKJYwC0hRIS8nHTcV1EIS4TazIzeUU1E8vLyLl0EO3v2rOLxw4+ZMWNGVI7pD1/19/cDAB555BEsXbpU8XEDAwPYt28fgKEqXddee63s8fPmzUNy8lBYoLm5GRcvXlQcg4jISHNyrdD6iUsurC5X3cp/AUrNZ7wBg3clElFohaPClMUsYEV5YWAsu6NLMnw1nNvjw+aaRtgdXSGfIxERjX8er/rPqQxgERER6WeSakEYBRWwZk2fxOuIRBQTGMAiIgBD7QhXLytBcX6W5ouCwTAJwBVT09Dm7AvjqESxbfbs2YHbDQ0Nsse2tbXB4XAAALKyspCZmRl1Y/rDV/4qVt/73vcCVaqUXLhwAYODQ9UfUlNTJfvU+wmCgNTU1MDXvb29qsYhIjKKzZqEovwsTY+RC6vLtVkxfXCfRUWbQAawiGJLanJcSJ8/OdGC1ctKRlSxqq61K4av/NweH2pq7aGaHhERTSCsgEVERBQeUkvrPp2VrNwaQtRKPnl9rmHPRUQUSgxgEVFAXk46VlYW4/H7FuDuT1+F0rk5kh+4jOL1ATX7TmHVpv3YsP1d7pImUmHhwoWB22+88Ybssa+//nrg9qJFi6JuzNHhq+985ztYtmyZ6nkNb4V44cIFuFzSrbgAoL+/HxcuXAh8bbVaVY9FRGSUitI81ZVHR7f/Gk3uIlOgApZF+bRvUGVLVCKKvLqmFrxy4ExIx0iKN4+osnX89AXUN7dreo765na0dXKjDRERBUdTAEvFxgMiIiISJ10BS9/zud3GtSAsvFLfxnIionDjGQkRjWGzJmGaLQX/bPw3dFYW1cyHoQX6tVvrUNfUEp5BiWLU/PnzkZ2dDQA4cOAAGhsbRY/zeDx4/vnnA18vXrw4qsZ88803R4SvHn74YXzpS1/SNK/U1FRcdtllAIDBwUG8/PLLsse/9NJLgYpZc+bMQXx8vKbxiIiMkJeTjhXlyu2fR7f/EiPbgtCsoQXhICtgEcUCfxtALRej9XBeHIDX54Pd0YUN29/Fj3/3tubn8AFoOu00fG5ERDSxeDW855lYAYuIiEg3qe4SPr0tCA2qgJUYb0Z8nNmQ5yIiCjUGsIhIlJb2EkZye3zYXNPISlhEMsxmMx544IHA16tWrUJ7+9iKBOvWrcPRo0cBAPPmzRtRxWq4HTt2oKCgAAUFBVi+fHlYxjxw4ABWrFgxInx11113iR6r5NZbbw3cXrt2LQ4fPix6XH19PdauXRv4+rbbbtM1HhGREeTaPwsAivOzxrT/EqOqApaKSgCDbEFIFBPCdZ7m8fqwr96BtVvrNFe+Gq7X5TZwVkRENBF5NLzvsQUhERGRflJBZq/eAJZBa00piRZDnoeIKBxi5i/Wq6++iurqahw+fBitra1ITU3FFVdcgbKyMixduhSpqalRP2ZnZydqamrw2muvwW63o729HUlJScjKysLMmTNx/fXX4+abb8aUKVMM/1mItGhz9qEhiEX2YLk9PtTU2rGysjhicyCKdrfffjt2796Nffv24cSJE6ioqEBlZSVmzpwJp9OJXbt2oa6uDgCQnp6ONWvWRM2YR48eHRG+Ki0txWWXXYbdu3fLjm+1WnHdddeN+f4999yDv/71r3jvvffgdDqxdOlS3HLLLbj++usxadIkdHZ24p///CdeeeUVuN1DFwHnzp2LO+64I5hfBxFR0Pztn9ucfWg640Svy43kBAsKcq2wTUpS9RxybVa0BLAG3B7dOxqJKDzCfZ723N+agq60lZwQM8tOREQUpTwaqmcwgEVERKSf1Nuo7haEBm0eau9yYcP2d1FRmidbJZ6IKBpE/UpYT08Pqqqq8Nprr434fkdHBzo6OvD2229j69at2LBhA6655pqoHXPHjh14/PHH4XQ6R3x/YGAAnZ2dOHnyZODC8Je//GVDfg4ivY6ddiLSl9/qm9vR1tmn+uKjGm3OPhw77USfy42kBAvm5Fphsxr3/EThZLFY8NRTT6Gqqgp79uxBa2srNm7cOOa4qVOnYv369Zg1a1bUjHn06FH09vYGvq6trUVtba3i+PPnzx/R3tAvLS0Nv/3tb/GNb3wDb7/9NgYHB7Fr1y7s2rVL9HkWLVqExx9/nO0HiShq2KxJuj+TmCXKwwOA2TQUvFLTgtDnQ8hbmhFRcMJ9nmbE34Rk7lQmIqIgaXk/YgCLiIhIP8kWhDrPDd0e46qt1ze348ipDqwoL1SsFk9EFElRvRLm8XiwcuVK7N27FwBgs9kClTY6Ozuxc+dOHDp0CA6HA/feey+2bduG/Pz8qBvz6aefxs9//nMAQFxcHD760Y/iuuuuQ3Z2NrxeLxwOB+rr61VdfCYKh74oaBPhA9B02glbUfABKbujC9W1djQ0t4+4YCEAKMrPYmqeYlZqaio2bdqE3bt3o7q6Gg0NDWhvb0dKSgpyc3Nx8803Y+nSpUhLS4vpMdWYNm0afve732Hv3r146aWXUF9fj5aWFvT19SEpKQlTp05FcXExysvLccMNN4R1bkREoWSWCVf574tTUQELAAYG2YaQKJpFw3maVr/882EukBMRUVA0BbBUfu4lIiKisUwSASzdLQgNDGANPZ8Pm2sasXpZIq/pEVHUiuoA1vbt2wNBqJkzZ2LLli2w2WyB+++88048/vjjeOaZZ9DZ2YlHHnkEL7zwQlSNuXPnzkD4as6cOXjqqadwxRVXiB47MDCA7u7uoOZPZIQkA9pECEDQu7PPtFyUvX94RSu3xwsBQwstw6tb1TW1YHNNo2ipUx+YmqfxoaysDGVlZbofv2TJEixZsiRsY+oZTw2TyYRFixZh0aJFhj83EVG0ktvlr6UFIQAMuj2GzImIQsOI87Rw4wI5EREFy6OhfZHUhWMiIiJSJvU2GukWhKOfs6bWjpWVxYY/NxGREaJ29c7j8eDpp58OfP3EE0+MCEL5VVVVYf/+/Th69CgOHjyI2tpalJaWRsWYFy5cwA9+8AMAwJQpU7BlyxZYrVbJ8ePj45GVlaVr7kRGmpNrDTpAVZiXicP2jqDm8X8Hz8Dt8WJKRvKIUJVURavhBAD5l02C3dGluFOOFwWIiIgoVvnbDIoxaQ5gsQIWUTQz4jwtErhATkREwfBoqLohVx2WiIiI5JkkNvn5oqQCll99czvaOvtgmxR8Bx0iIqNFbU3et956C62trQCA+fPno7CwUPQ4s9mM5cuXB77etWtX1Iy5fft2OJ1OAMDKlStlw1dE0cRmTUJRvv4woADgQ1dmBD0Pnw947dD72PbqCTzz0lF8a9N+/PfTtfjhcwdRLxO+AoYuSvzr/U7VZcr9FwWIiIiIYoncRSbLB+Esi0XdhagBBrCIolqw52mR5F8gJyIi0kpLBSyLTHVYIiIikif1NqqnBaHP59PURljTcwNoOu0MyXMTEQUragNYb7zxRuD2TTfdJHvs8PuHPy7SY/7hD38AAMTFxWHx4sW650UUCRWlebDo3DU2Nz8L1xVMRiiWPC5cHIDOsL0iXhQgIiKiWCPbgvCDz3IWmSpZw7ECFlH0C+Y8LZJGL5C3OftQW+/A/711BrX1DrQ5eR5GRETivBou3kpV7iAiIiJlgkQPQj3X5ELRfnC4Xpc7pM9PRKRX1LYgPH78eOB2UVGR7LHZ2dnIycmBw+FAW1sbOjo6kJmZGdExW1pa8N577wEAZs+ejaSkJJw6dQrPPfcc9u7di/PnzyMxMRHTp0/HjTfeiGXLlmHKlCma50wUKnk56VhRXojNNY2aPihZzALKS/MCu7Prm9tDOEtj+S8K2IpYtpSIiIhig2wAy9+C0KIugDXg9hgyJyIKHb3nadGg1+WWbCcvACjKz0JFaR7bwhMRUYDP59NUdUPuszERERHJM0kEsLSEof1C1X7QLzkhaiMORDTBRW0FLLv9Uiuw6dOnKx4//JiTJ09GfMyGhobA7ZycHPz5z39GRUUFXnjhBZw+fRoulwudnZ1obGzEr371K9xyyy3485//rGveRKFSUjAZq5eVoFhlmwuLWcCK8sLAgnks7s5map6IiIhiiSAIkgtk/goAaj+PsQUhUWwYfp4WS2dbLR29WLu1TrSdvA9DFYnXbq1DXVNLJKZHRERRSGvrIrPKyq9EREQ0lsTyks4KWKFbYxIAFORaQ/b8RETBiNp4aHd3d+B2RkaG4vFWq1X0sZEas7W1NXD7+PHj2LNnDzweD+bNm4dPfepTsNlsaGlpwc6dO9HQ0ID+/n6sWrUKycnJuOWWW3TNnygU8nLSsbKyeKhFRIMDB5taca6tZ8QxAobaDpaP2q0ci7uzmZonIiKiWGM2C/C6x37WClTAMqtsQTjIABZRrBh+ntZ0xokzLRexu+6srp3J4fL3d84pXkh3e3zYXNOI1csSWQmLiIi0B7BibCMoERFRNBEEAQIwZsOMlmqUfqG8Jjg3Pwu2SexkQ0TRKWqTBr29vYHbCQkJiscPP6anp0fmyPCM2dXVFbh9+vRpAMCDDz6Ihx56aMRxd911F5544gk888wzAIDvfe97KC0tRXJysvYfwADp6Ymqj/XvqDeZBGRmpoRqShQlMjNTMHuGDV8FcL6jF40n29HbP4jkxDhcnZ+FyRnir9mbF+ThyukZ+N/dx1F37LyupHw4eQDsO3J+6OeakYUpmZH5t0hj8W8OERGROLNJwKDo94eCV/9u7xW5dyy2ICSKPTZrEmzWoYXnWdMnRe3ml7TkOHT3iv2lGsvt8aGm1o6VlcUhnhUREUU7j8b3NLYgJCIiCo7JJIwJQPt0BbBCs8nPYhZQXpoXkucmIjJC1AawYp3XO/KN5cMf/vCY8BUwlCb+5je/iTfffBONjY1wOp2oqanB0qVLwzXVEcwqd8cPJwgCdxdNMNOyUzEtO1X18XOuzMSj/3kDznf0Yt+77+PZnUdCOLvg/HbX0cBtQQBK5kzBF28pwOxc5ap4FB78m0NERDSS1IUms1lAXVMLNtc0qnqeQbYgJIppQ60JE1FTaxdt8xcpZhNUh6/86pvb0dbZx13NREQTnMer7fOpiQEsIiKioIi1IdRTaDkUASyLWcCK8kJWSyaiqBa1Aazk5GR0dnYCAFwuFywW+am6XK7A7ZQUfZVRjBxz9Ndf+MIXJJ/HZDLh9ttvx6OPPgoA+Oc//xmxAJZHwxuiySRAEAT4fL6obnNA0cM2KRG3/cdMNDS34+DR85GejiKfDzh49DzeOd6K/75jHhYU5UR6ShOalr85esKkREREsUrqfe9Ctwvb9/xLdeuWc+36KgkTUfQY3Zqw1+VGcoIFyYkW/PLPh8NeHctsAmZfbsXR95yaHucD0HTaCVsRA1hERBOZ1jVnVsAiIiIKjkkY24RQzzVgI889BQy1HSwvzWP4ioiiXtQGsNLS0gJhqAsXLiiGqpxO54jHRnrM9PSRbwCFhYWyz3X11VcHbvtbFkZCV1c/3Cpbj2RmpsBsFuD1+tDRwYs1pE5mZgq+eEsB3jneGrISpEZze7x48nd1WL2shB/uIkjt3xyLxYwMiZaYRERE45HUhabDJ9s1LXi9e6LNqCkRUYQNb03ot6K8MKwtCgUB8HihOXzl1+tyGzshIiKKOWo3EvhxQx4REVFwBJE1pki0IDQJwM0fvhzTs1NRkGtldWQiihlRe0aSl3epf+vZs2cVjx9+zIwZMyI+5uivlUJhw+/v6WGYica32bkZ+O875sESQ23k3B4famrtkZ4GERER0RhSAayzrdrOK86196LlQq8RUyKiKDTUorAExflZCMeZmI41+hGSE6J2zyAREYWJ5gCWWN8kIiIiUk1sickbgQCW1wf8u70XNxblMHxFRDElagNYs2fPDtxuaGiQPbatrQ0OhwMAkJWVhczMzIiPOWvWrBEtDLu7u2Wfb/j9qampqudMFKsWFOXg/s9erXxgFHm3uR1/ffM9tDn7Ij0VIiIiogAjW60cbm437LmIKPr4WxQ+ft8CLJxrXIv1Sanxhj0XMNRioiDXauhzEhFR7NFeAYsBLCIiomCYRMLMejbXGFF5ub65HW2dvB5HRLElarcTLly4EL/5zW8AAG+88QbuueceyWNff/31wO1FixZFxZiJiYmYP38+/vGPfwAAGhsbZStzHT58OHB7eCUuovGspy/2Wkq8uKcZ2/c0oyg/CxXsN01EEeL1euFy9aG/vxcezyC83tho6UrhdeGCBYIwtEgyOBh777lGEgQTzGYz4uMTkZCQBIslDsI42h1vZKuV3v5Bw56LiKKXzZqE6dnGbf6aOW0S6o63GvZ8c/OzFHc5tzn7cOy0E30uN5ISLJiTax3TdpGIiGKbR2P1DJOBGxOIiIgmIrH1skhUwAIAH4Cm007YinieR0SxI2oDWPPnz0d2djZaW1tx4MABNDY2orCwcMxxHo8Hzz//fODrxYsXR82Y5eXlgQDW//7v/+Izn/mM6HFerxcvvvhi4OubbrpJ989AFEv6XLF5MdiHoeT9kVMdWFFeiJKCyZGeEhFNIP39vXA62zD014hI2uCgF0M1RHzwatw5Pv544PEMYmCgHxcvOmGxxCMjIxtmc9SeDmliZAWs5MQ4w56LiKJbkoEt/vIvMy6AZTYB5aXSG9Psji5U19rR0Nw+4tOQAHCjDBHROKO1ApaFASwiIqKgiL2V6quAZcyG4d4YvY5IRBNX1LYgNJvNeOCBBwJfr1q1Cu3tY9thrFu3DkePHgUAzJs3DwsXLhR9vh07dqCgoAAFBQVYvnx5WMYsLy/HzJkzAQBvvfUWnn766THH+Hw+/OQnP0FjYyMA4LLLLsOnPvUp0ecjGm+MXPCPBLfHh801jbA7uiI9FSKaIC5evCgSvhJgMpn5P/5vzP8EwQxBMEEQIj+XSP9PEEae9rjdA2hv/zcGBwfC+m84VIwMYF2dn2XYcxFRdJuTa4VRfz3yLzMu8OTxAtW1dtHzrLqmFqzdWof6UeEr4NJGmbVb61DX1GLYfIiIKHI0tyA0Re3lDiIiopggWgFLx8ZOI1oQAkByjF9HJKKJJ6r/at1+++3YvXs39u3bhxMnTqCiogKVlZWYOXMmnE4ndu3ahbq6OgBAeno61qxZE1Vjms1m/PjHP8aXvvQl9Pb24uc//zn27duHxYsXw2az4fz589i5cycaGhoAAHFxcVi3bh3i4rjrnCYG/4K/1o9hn74hFylJcTCbTfB4vNi+pzlidWDcHh9qau248+bZbH9BRCHl9XrhcJyD/69mQkISkpPTER+fMK5aqZFxzGZToAWh1tYd45HbPQiXqw+9vd3weNzwej1wOlths02L+X9DZrP4/PNy0mB3dKt+HmtqPCZnJBs1LSKKcjZrEorys1DfPHbjmVZ/+cep4Cc0jFjFYbujC5trGhUX8v0bZVYvS2QlLCKiGKc1gMUWhERERMERey/1RagFoQCgINca9PMQEYVTVAewLBYLnnrqKVRVVWHPnj1obW3Fxo0bxxw3depUrF+/HrNmzYq6MYuKivCrX/0KVVVV+Pe//41Dhw7h0KFDY47LysrC+vXrMW/evKB/BqJYoWfBvzg/C5/7j5mBr2vrHRFvwvVuczvqm/ez/QURhdTFixfh9Q6duCYkJMFqzY750AhROFkscbBY4pCUlIKOjha43QPweNwYGHAhISEx0tMLilnib8FHrs7BmZaLqncdTs5geJxooqkozcORUx1B704+fLLDoBldMjpIVV1rVz1P/0aZlZXFhs+LiIjCR2vFDamNCURERKSO2BKTjgJYcLuDD2DNzc+CbRLXqogotkR9Td7U1FRs2rQJv/jFL3DLLbcgJycH8fHxyMjIQHFxMaqqqrBz505Dg0tGj/nhD38Yu3btwre//W2UlJTAZrMhLi4OGRkZ+PCHP4xVq1bh//7v/3D99dcb9jMQxYqK0jxYVC6OWMwCykvzRnyvL0r6P7P9BRGFWlfXpTY8ycnpDF8R6WQymZGaeikc3dd3MYKzMYbZLH5aNz07BSvKC1V/1oqzmI2cFhHFgLycdE1/J8LN7fHh97tPoM3ZhwaNlbrqm9vR1tkXopkREVE4aKnkKwiAiefJREREQRF7L9VVAUsitWVWWa1S7HogEVEsiOoKWMOVlZWhrKxM9+OXLFmCJUuWhHXM4VJTU/GVr3wFX/nKVwx5PqLxwr/gr9RKwmIWsKK8cEw1qaQo7/9sZPuLNmcf2xwSTWADAwMYOtcVEB+fEOnpEMW0hIRk4INGyG73YKSnEzSpxSuzyYSSgslYvSwRNbV21De3y1YOHTRgdyIRxR65vxMCgNTkOHT3Ru5v5Yn3O/GrvzRqrnzsA9B02glbEc+ZiIhilZYWhGov6BIREZE00QpYOkpgSVXAuqNsFra9ekLX9UAiolgQ3ckFIpoQlBb85+ZnoVyild+cXOsHl0+jl9vjw2//f/buO6yps/0D+DeEDQKyFOtCVHAPnBW3vm60tqitWlv7VrustrVDX7XVWrWu2mrX22rtsO5at9a9BUEFXKAMRUVZArJJyO8Pfpw3gWySkJDv57p69SR5cs6TcMx9znnucz8HbmLG8+31SphKSs3F7rNJiFXy3XCaQyLrIZVKAchgY2PD6ldE1SQSiWBjY4OyMqkwtaclU5mA9f8Vbfz93DAzrAMysgsRl5KNgmIJjkamID27SKF9qURq9L4SkXlS9jvh7GALHw9HfLnpSk13D3ce5GpupESBmVRMJiIi/eiWgGX2k30QERGZPaUVsPRYj0TF9bZOLX3Q1M9Nr/FAIiJLwAQsIjILqi74Bzb2UDvHs7eHE9oFeCFGx+koTC0lPR8f/3BB54SpqLg0ldXBKqY5vJGchemhbRAc6GvgXhMREVkDc07j1o6qKQgrJ2Z5ezgJyeBXb2dUScAqYQUsIqsn/zsBAGdjUi36V9LZzCsmWztWeSYiTXRJwLJhBSwiIqJqU3bjryErYNmKbfQeDyQisgS8EkVEZqXyBX9tjA7xx43kLLUlS81BRcLU9aRM9O34DOrVdVZ7kTkpNVfj1IyAYac5JCIiIsujqgKWukEoO9uqSVulpUzAIiJFhRZcQUoEILCxh9G3k5FdiCuJWSgqlsDRwRaNPHU/p7U2rPJMRNrSZcCXUxASERFVn7JrSWUyPRKwVIxr2Yr/t359xgOJiMwdE7CIyOL5+7lhemgbfP/3NeiRiG9y0jLg+OUHwmNVF5l3n03SOqlMIpVhz9kkzAzrYOjuEhERkZlTOQWhmkEoeyUJWCWcgpCIKnGy4ApS7QO8jHr3NJOI9MMqz0SkC1XTFykjFjMBi4iIqLqUXUrSI/8KEqnqClhERLUZf+WIqFYIDvTFyGeb1nQ39FJxkXnpH1GIiksDUH4XdayO0yrGJGQiI6fQCD0kIiIic5WUmou4lGylr/1+OA5JqblKX7OzFVd5rpRTEBJRJUGNPWCJw9m2YhFCQ/yNtv6ouDQs/SMKMZWSrwDl53dUTtcqz6piGBFZD6kO1e5ZAYuIiKj6DDYFoYoYznhNRLUdE7CIqNYIaednkYMDFSRSGb7/+xq2HLuNveeTq1zI10QGIO5ethF6RkREROaoIgHgydNipa/fupetMgHA3k5ZBSwmYBGRIm8PJ7QL8KrpbuhEJAJeHNjCaNWnmESkP32qPBORdeMUhERERKZloyQBS6bXFIRVrzHZikVKE7yIiGoTJmARUa1hiYMDlZXJgH8upeBMTKpe7y8olhi4R0REROqlpj5ESEgXhIR0wRdffFbT3bEa1U0AsFMyBWGppEyvi2pEVLuNDvGHrQVN6ySTAX/8E48126OF376M7EKcjUnFkUspOBuTioxs3SsHV6xj/b4bTCLSA6s8E5E+pDolYHGog4iIqLqU5UfpUQBLRQIWYzUR1X62Nd0BIiJDGh3ijxvJWVpfENdGt9a+iLhhGVNHODvwZ52IiMzP6dMncft2HABg3LiXUKdOnRrukeXTp4rIzLAOwnP2SqYgBMqrYNmqeI2IrJO/nxumh7bRKunTXFRMA3gtMRONfOvg3uOnVSoMN/ByRpcgX4S084O3h5PKdSWl5mL32STEKpluUBsVSUTe7qq3YQ1u3cvWu8qzdzvr/u6IrJluCViWkyxMRERkrmyUxFPDVcBiAhYR1X78pSOiWqVicMCQd2hH3ko32LqMSQQgsLFHTXeDiIioijNnTuKXX37CL7/8hLy8pzXdHYtniCoi9koqYAFASam0Wn0jotopONAXcyYFo0OAl0VN+14mA+4qSb4CgIeZBdhzLhkf/XBBoVqWvIqpXmP0TL4COFV8hUI9qzWzyjORdWMCFhERkWkpr4ClTwJW1fdYUmVlIiJ9sVQKEdU65YMDjthzNqlaF8orlOlTX7UGtA/wsvq7qomIiKyBIaqI2NkxAYuIdOPv54aZYR2QkV2IuJRsFBRLcD8tT+/p081JTEImbiRnYXpoGwQH+gLQfqpXbTCJCHDSs1ozqzwTWTdpWdXqGaooq9hBREREurFRkoHFKQiJiLTHqxhEVCvV5sEBZWxEQD1PZ5yNSUVQYw+1U2gQERGRZTNEFRGVUxCWaj/IRUTWydvDSTjfyMguxNmY1Grf9GIOJFIZftxzHW+OESG/UIJD4XcNNuUik4iAoMYeEAE67Sus8kxEutwUKWZVDSIiomoTKUnAkumRgaW8AhYTsIio9uMVICKq1Wrr4EBlZTLgn0spAMovUrcL8MLoEH/4+7nVbMeIyOpkZBfi1r1sFBZL4ORgy6RQIiMwRBUROxVTEBazAhYR6cDbwwntArwQo+O0qPLENoCSm6NrhEQqw9qdsQZdJ5OIyumzr7DKMxFJdUiEFdtwUJeIiKi6lBWUNFwFLCZLE1HtxwQsIrIahhgcsAQyKJ9Cg4jImJJSc7H7bBJiK039WtuTQi9fjsS7774BAHj11dfx2mvTkZJyD3//vRPh4ReQkZGGvLw84bUKxcXFOHhwH86fP4M7d24jO/sJ7Ozs4OtbD8HBXTF27Dg0btxE7bbz8/OwZ8/fOH/+DJKTk/D0aS7s7Ozh7u4OD4+6aN68BXr2fBa9e/eDjY1itaN33pmGq1cvAwDOno1Uu53163/EL7/8BAD45psf0LlzF62/ny+++AwHD+5TeC4sLLRKu44dO2Pduv8qPPfgwX3s3r0Tly9H4f79FBQWFsDZ2QXu7u7w8vJGUFAr9O7dDx07dta6P7WFIaqI2KtIwOIUhESkq9Eh/riRnKVztSgRyhNsQkP8sfv/p4+vjZhE9D+67Cu2YhFCQ/xN0CsiMmcSXSpgcQpCIiKialNaAUumTwUsTkFIRNaJCVhEZFV0ueBrI9Ivs99cVEyhMWeSY61MeiAi8xEVl4Yf91xX+ttqbUmhhw8fwPLlX6C4uFhlmytXorBo0Xykp6cpPF9SUoKkpEQkJSVi164d+Pe/38Dkya8qXcetWzfx8cezkJmpOFgtkUhQWFiAR49ScevWDezbtxsbNvyBli2Dqv/hTGjfvt1YvfpLlJSUKDz/9Gkunj7Nxf37KYiOvoI9e3bhyJEzNdTLmmOIKiJ2KqcgZAIWEenG388N00PbqDwWqCC2Afp1fAa+ns5wdrBFYGMP4XdJ3yQuc8ckIkXa7iu2YhGmh7bheSwR6TYFIROwiIiIqs1GSTwtYwIWEZHWmIBFRFZFlwu+Lw5sgT/+ibfoKQslUhn2nE3CzLAONd0VIqqlklJzNf6mAtaRFHrtWgx++20DRCIRhg0biQ4dOsLR0Qn376egXr36AIALF85hzpwPIJFIYGNjg+7de6JLl27w9vZFSUkx4uJu4tCh/cjLy8OPP34LAFWSsIqKijB37mwh+SowsBX69OkHHx9fODo64enTXNy9m4QrV6Jw+3a8ab+ESl54YQJ69+6HHTu24PLl8kpbH344F3Xreiq0c3f3EJbj429hxYolkEqlEIvF6NatB7p27Q4PD0/Y2Ijw5MkT3LkTj0uXwvH0aa4pP45ZqW4VEXs7FRWwJGYyDxgRWZTgQF/MmeSIPf9fyapyNcyKSleqjgF0SeLq3qoezl9/bNgPYATKkog4VXP5vvLWGBG+UTPV44cTOqFFIw/TdYqIzJa0TPtjUyZgERERVZ+SAlh6TkFY9U2cgpCIrAETsIjI6ugyOBCdkGnxU2HEJGQiI6ewyrQXvPhPVHtdT87CuZhUpGcXGn1bqZkFWlerkEhlWLXlKvy8nI3aJx8PJ/Rq74c2TT01NzagS5fCUbeuJ7766ls0b96iyusZGRn4/PMFkEgkqFvXE0uXrkLbtu0U2gwbNhITJ07BBx/MQGJiAn7++Qf06dMfTZo0FdpcuHAWaWnlA8/jx0/EjBnvKe2PWGyD5OREuLvXNdyH1FFgYBACA4Nw5sxJ4blu3XrAz6+Byvfs27cbUml5FaYvvliBkJA+StvJZDJER18xYG8tS3WriHAKQiIyNH8/N8wM64CM7ELEpWSjoFhSpdKVOrqcp+UVScz+PG1wcEM0qVcHgPGmarbUc7o6zvZqX3d3Vf86EVkPqQ6VEZVV7CAiIiLd2CibglCPDCxWwCIia8UELCKyStoODtSGqTBkAOLuZcO7XfnnMtbFfyIyD9eTs7BmWzSkZjqHakGxBAkPjVu1KOFhLi7dSsN74zqgtYmTsD78cK7S5CsA2Lz5N+Tm5gAAFi/+skryVQUfH198/vmXePnl8ZBKpdi+fTNmz54jvH7//n1heeTI0Wr74+/fDDIZIFVy0cNcVXw+D4+6KpOvAEAkEqFjx86m6pZZqk7FGVVTEBYzAYuIqsnbw0nvJCBdztOuJ2XCnMPbwYgUHIpIQeN6rrifnq/02KxiquZriZmYOLgl+nduqFVSlaWf02U9VT1VMwBk5RbDt65xE/aJyDJIdZjySMxBXSIiompTloDFKQiJiLTHBCwismqaBge0rS5h7uJTstGrnR+i4tJUfpaKi/83krMwPbQNggN9Td9RIqq2czGpZpt8ZUrSMhnOxqSaNAGrfn0/9O7dV+lrMpkMhw7tBwC0bdseHTp0UruuJk2aolWrNrh2LQbh4RcVXnNychSW4+Juwt+/WTV7bl4qPl9ubg5SUx+qrZZF+lecsVNRAauUUxASkRnQ5jztjdFt8d2ua2Y9ZbwMwN3HeRrblcmA3/+Jx87TiSgokii8JgIQ2NgDLRt5wMXRDo+fFODU1YdqE7rM/ZzuSW6R2teznqp/nYishy4VsDgFIRERUfUpm4JQplcCFqcgJCLrxAQsIiINtKku0SXIF5G30qq8bi7OxKTi9v0cpGcXakzMkEhl+HHPdcyZ5GjWd00TEZmbdu06QKTsKgWApKRE5OSUV7+qU6cOTp8+qXF9NjblCTKpqQ9QXFwMBwcHAECXLt0hEokgk8mwatUyPHhwH4MGDVGYptCSde3aA6dOnUBZWRlmzJiOSZNeQZ8+/eDp6VXTXTNrulac4RSERGTpggN9MXVEK2zYf9Msz8H0UTn5CihPqrp1Lxu37mVrvR5zP6fTVAErM1f964DlTr9IRLop0+HmIiZgERERVZ+yKX31uddXaQUsFdeiiIhqEyZgERFpQZvqEr3a+SEjuxCRcWnYdiKhhntc1aOsAq3bSqQy7DmbhJlhHYzYIyIyhl7t/XDpVprVV8ES24gQ0t7PpNv08VFdZeLRo1Rh+cKFc7hw4ZxO6376NBcODj4AgKZN/TFlymvYuPFnFBYW4pdffsIvv/wELy9vtGvXHu3bd0KPHj0ttjLWyJGjceLEMURFReDRo1SsXLkUK1cuRZMmTdG2bXt07NgZPXuGwMPDo6a7atFUVcAqKWUFLCKyHL3a+cHRXowfdl+3+mOfysz5nE5TApa6ClmWPv0iEelGWqb9sSkTsIiIiKpP2c2lBpuC0IYJWERU+zEBi4hIB5qqS3h7OGFo9ya4dS8bMQmZJuyZ4UUnZOJQ+F10CfTlncREFqRNU0+8N64DzsakIj270KjbKpWU4V6a5ml1Kmvs66oy+cMQfDycENLez6TTDwIQKlQpk5f3tFrrLi0tVXj873+/gaCg1ti0aSNiY2MAAJmZGTh58jhOnjyOb74B2rfviHfffQ9t2rSr1rZNzdbWFqtWfYO//tqGnTu34cGD+wCAu3eTcfduMvbv3wOxWIwBAwbj7bdnwdvbu4Z7bJns7cRKny9mBSwisjDBgb6YO9kRa7ZH42lBqeY3WJHohExcuZ2OTi18tGqvTVUpQ1SeeqJhikFVCVpRcWn4cc91pdOZWMr0i0SkG12Sa5mARUREVH3KwmlF/pUu5wJKpyBkBSwisgJMwCIiMoLRIf64kZyl9CDTkmw7kYDtJxJ4JzGRhWnd1NNkyUdrtkfrlHDaIcDLLCsxGJuT0/8uRowfPxEzZrxX7XWGhPRBSEgfZGVlIjr6Cq5di8XVq5cRH38LMpkMMTFX8cYbr2HVqrUIDu6q93bKdLjr3FBsbW0xbtxLGDfuJdy7l4yYmGhcuxaDy5cj8fDhA0ilUhw5cghXrkTh559/g7e3dgPL9D+qK2AxAYuILE8dJzvkMflKqXV/xaJ/p2dQr66zMEgCQGHgxMXRFqeiH6qsKtW3YwMkpz5FVFwaHmYqVlbWp/LUE41TEFZN0EpKzVWZfCXP3KdfJCLd6JaAxUFdIiKi6rJRUgGrVCLFmu3RWlehlclkkEiUVcBisjQR1X5MwCIiMgJ/PzdMD22j1QVic2fsO4kNcQc1EdUcXRJObcUihIb4m6BX5sfHp56wnJb22KDr9vT0Qv/+g9C//yAAwKNHj/Dtt2tw4sRRSCQSfP31Kvz22xaF99jb2wvLpaWlsLOzU7n+nJxsg/ZXV40bN0Xjxk0xcuRoAMCNG9fw5ZeLkZBwBxkZ6fj991/w3nsf1WgfLRETsIioNrl1LxuWfdZlPDIZcPzyA/3ei/JzQXXJ9rqeL5aVyZD9tERtm6zcqglau88maX1ubc7TLxKRbqQ6XFMTizmoS0REVF3KpiAsLJYqPSdQdS5QJpMpPT9jBSwisgb8pSMiMpLgQF/MmRSMDgFeqA2XgCruJE5KzdXr/RnZhTgbk4ojl1JwNiYVV+LTsWZ7ND7+4QI2HLiJzcduY8OBm/j4hwtYsz1a7+0QkWlVJJzaarjYbSsWYXpoG6utRNCiRUu4uroCAK5ciURJifqBx+qoX78+Pv10MerWrQsASEy8g6dPFadArFOnjrCcnp6mdn3XrsVWu0/yF29ksuoNkbdu3Rbz5i0UHkdHX63W+qyVjUgEW3HV08GSUtNXPCMiqq7CYklNd8HqaXu+mJNfgjINxwKFxRKFv2lGdiFidai4CpQPBGXkGHc6biIyPl0qYNmwqgYREVG16RNOK58LSCTK47em68dERLUBE7CIiIzI388NM8M64Ms3euK1Ea3w4qAWGNj5GYgt9KJQxZ3EukhKzVWaaLX2r1jEVCpZC/zvromlf0QhKk59UgARmQd1CacilE87OGdSsMEr6FkSsViMwYOHAQCys7Oxdesmo27P1tYW3t7/+76lUsWqRv7+AcJyZGSEyvVERkbgzp34avfH2dlZWC4qqv5gqJ/fM8KyVMpBd33ZK7nzsETCClhEZHmcHFjg3Rxoc76Y9bTq9ILK2/2vCpY+Fc5kAOLuZev4LiIyN7pMh26p19qIiIjMiUjPeCp/LiBREb+V3QhIRFTb8AoVEZEJeHs4KUyr92w7P+w5m4RoHe/iNQfRCZmIT3mClo3qamwbFZem9zSMFXdNzJnkaLUVc4gsSUXCaUZ2IeJSslFQLIGzgy0CG3vA253TigLAyy+/iiNHDiEv7yl++ul7ODg44IUXJsDGRvnFh8LCQhw9ehiOjo4YPHio8Pz27Vvg5eWN3r37qpw6MCbmKhISbgMAfH3rwcPDQ+H1Hj2exc8//wAA+O23Dejdu59QMatCYmICFi/+VN+Pq8DPr4GwHBd3C82aNVfZdu3a1ejXbyDatVM9bdCuXduF5RYtAg3SR2tkZ2cDVJrlqZhTEBKRBQpq7AERoHOSjj7vqWAjArzcHJGeo11CkbWoqDyl6vjviZLpBZXJyi3CM94uAPSvcFbAymhEFk+XClhMwCIiIqq+6oTT6IRMXLmdjmYqxnOYgEVE1oAJWERENUA+UWHtX7FIScur6S7pZNmmK2gf4IXRIf5CclRGdiFu3ctGYbEETg62cHG01Tv5qkLFXRMzw1QPwhOReamccEr/4+Pji88/X4qPP34fJSUl+Oab1fjrrx3o06cf/P2bwcnJCQUFBUhNfYhbt24gKioSJSXF+Pe/31BYT3z8LRw8uA+urq7o1q0nWrYMhI+PL2xt7fDkSSauXr2Ms2dPC3eLT5kytUpfgoJaIzi4K6KiLuHRo1RMnToRo0ePRePGTVFQkI+YmKs4cuQQbG1t0bt3X5w5c6pan71Ll+7C8vffr8WTJ0/QuHET2NqWn464ubmhdeu2AIBTp05g69Y/Ub++H7p27Y6AgObw8KiLsrIypKen4ezZ04iNjQZQXunrxRcnV6tv1kxpBSxOQUhEFsjbwwntArwQo8MNLh0CvDBxcEshcVwqLf/9e5hZgPPXHqFMzaB/xdTKnm6OWPpHVLXOeWqbispT3u2UHw/KV7ZS596jp2jXzAuA/hXOKv6mRGS5mIBFRERkWjai6sXTb3ddw6TBLZW+xgQsIrIGTMAiIqpB3h5OeGVYkNYX7cU2QLMG7rhzP0fvO7UNJSYhEzeSszCmtz/iU3IQq2Q6QUNtJyOnEJ6eLkZYOxGRaXXt2gPfffczFi2aj3v37uL+/Xv488/fVLYXi8Xw8vJWeE70/xdC8vLycPz4ERw/fkTpe21tbfHaa9MwdmyY0gHIuXM/xcyZb+L+/RSkp6cJFbEquLm547PPvkBsbHS1E7ACAppjyJBhOHz4ILKyMvHdd18rvN6xY2esW/dfhc/36FEq9u79W+U63d3dMW/eIrRoofyiDmlmbyuu8lwJK2ARkYUaHeKPG8lZWp1X2YpFCA3xV5k43r/TM9hzNqnKlOkiAO0DvBAqdyPK9NA2+P7v6yiT1fQZmvmIiktDQVH5jTlBjT2E7zgpNRfHIlO0WsfO04m4/SAHo0P89a5wtv1EAm7dy1a4ccgUKt+cJP8dEJFudErA4qAuERFRtSSl5iI2sXqztpSVybDpSLzS12zFTJYmotqPCVhERDXM388N00PbaKwWVXGXdXCgr8IUX2lZBThx5QF0uCZlMBKpDDtOJhp1GxV3ULf099bYlojIEgQFtcYff2zHqVPHcfbsKVy/fh1PnmSiqKgITk5O8PWth2bNmqNTp2CEhPSpkoD1wQefYODAf+Hy5UjcunUTKSl3kZ2dDalUAhcXVzRs2AidOgVj9Ojn0LhxY6gaD65Xrz42bPgDW7f+iVOnTuDBgxTIZDLUq1cfvXr1QVjYBPj4+ArVpqrrP/9ZiI4dg3H06GEkJibg6dNcSCRVpwZav/53hIdfQHT0Vdy+HYeHDx/g6dNciEQiuLm5oWnTAPTo8SxGjAiFmxunqK0OO6UVsJiARUSWSdfzKnUJObpMrRwc6IuPX3bC0l8vGeyzWLqrdzJx9U75wI0IQLsALzzj44LDESlqK4tVVnHTz/TQNjpXOAPKzyXl1xEc6KvT+3WVlJqL3WeTqtycVPEdmDoRjKg2kOpQYbC6FTuIiIisWVRcWrVnNKmgKoGaFbCIyBqIZDLeokf/8+RJASQS7QZdPD1dIBbbQCotQ1ZWvpF7RrUF9xvVklJztb7LWtl7fzt0C3cfW9ZUhtp6cVALjP9XkFb7jq2tGHXrOpuwd0T60TXmJiYmoKSkBIANfH0bGrdzVCuIxTYQiQCZjFPwKJOWdh9lZVLY2Iit9t/Usj+iEH8/R+G5Zg3c8PUH/bU6VmPMJUvB81zrUp3zKn15erpg8S8RiLz52KDrpXI2IqBrkC8u3UrXu9KY2AaYO7mL0RKgtBmwkr+pCtD+94bxliyFMeLtgvURuJ+u3bWuFwe1wOAujbRqS5aLx2qkD8Zcqm0MHXOTUnNNMrX6v0e2wrNt/Yy6DTIMxlvShy77TW2OuayARURkJnS5y1rZez99tRt+OXATZ2JSTdRj03F2YLgiIiIyNDs7JVMQSpisR0SWrTrnVdXx4r8CcTU+HRImPRtcmQwIv5lWrXVIy4A126MxK6yDkISlbKpAAEqnD1Q3rWBSaq5W1QIkUhl+3HMdcyY5shIWkZakZdr/ptrasAIWERGRPnafTTJ68hXAClhEZB04ok1EZGa8PZyEC7m6atHQo9YlYIkABP7/hXAiIiIyHHslUxAWcwpCIqolqnNepY+Wjevig5c6Y9Wfmu8c9/NyRtqTQpVTc5BxPC0oxeLfIjG0W2M8yMivMlWgKnWc7fC0oFThuYppBft2bICtx+9oPWAlkcqw52wSZoZ10P0DEFkhXX4nbZiARUREpLOM7ELE6jjVt74yc4pMsh0ioprEBCwiolokqLEHRIBWF5EtRfsAL6PeqU5ERGSt7JQkYJUwAYuISG892/lhzqRgpVMgAkAjHxeM6dMMnVr4aDVlHRmeTAYcDL+n03sqJ18B5efcMQmZiNFjsComIRMZOYXw9HTR+b1kHo4dO4bdu3fj2rVrSE9Ph6urK5o0aYJBgwZhwoQJcHV1rRXbNAdlOiRgiW1YVYOIiEhXt+5lm2w8KTIuHcN6NDHR1oiIagYTsIiIahFvDye0C/DS6yKwObIVixAa4l/T3SAiIqqV7G2VTEFYyqmziIiqQ9spEIMDfTFnkqPKZC03ZzvkKkn8IcsnA7D3XDImuTujgU/tTJqprfLz8zF79mwcP35c4fmsrCxkZWXhypUr+OOPP7BmzRp07NjRYrdpTnSpgCVmBSwiIiKdFRZLTLatpNRcZOQU8oZ7IqrVmIBFRFTLjA7xx43kLIu/k1oE4MWBLeDv51bTXSEiIqqV7OxYAYuIyFi0mQJRU7LW36cTsed8smk6TCZ1JiYVZ2NTERxUD+MHtYSXi11Nd4k0kEqlmDlzJs6cOQMA8Pb2RlhYGJo3b46cnBzs27cPly9fRmpqKqZNm4bNmzcjICDA4rZpLjKyC3HrXvnvorbEYiZgERER6crJwbSpAmdjUjGmdzOTbpOIyJSYgEVEVMv4+7lhemgbi5/OQgbg93/icSzqProE+WJE7wDeHUxERGRA9kqmIJSWySCVsgoWEZEpqUrW0pTARZZNJgMibz7G1fh0TA9tjeBA35ruEqmxfft2IRGqefPm+PXXX+Ht7S28PnHiRHz55ZfYsGEDcnJysGDBAmzatMnitmkKGdmFuJKYhaJiCUokUhTml0AstoFEWoYnuUW4cfcJHmYW6LxeVsAiIiLSXVBjD4gAk01DuO/8XTTydeWxLxHVWkzAIiKqhTRNZ2FJHmYWYM+5ZOw5l4wurXh3MBERkSEkpebiyu0Mpa8tWh+OF/8VyHhLRFTDTD0YQjVDIi3Dj3uuY84kR1aANlNSqRTr1q0THi9fvlwhEarC7NmzceHCBdy8eRORkZE4e/YsQkJCLGabxpaUmovdZ5MQa6TrVPsv3IWnG/8dERER6cLbwwntArwQk5Bpku2VyWQ89iWiWq3qLc9ERFQrVExn8eUbPfHaiFZ4cVALvDaiFZa/2RPtA7xqunt6ibz5GHO+O4eouLSa7goREZHFiopLw9I/opD2pFDp65fj0hhviYjMQMVgiCHZiIAuQT4aK8WIbYCBnZ/Bi4NaoHd7P4P2gaqSSGXYczapprtBKly6dAnp6ekAgG7duqFNmzZK24nFYkyePFl4vH//fovapjFVHH8a8ybB5EdPsfSPKB7DEhER6Wh0iD9sTTiVL499iag2YwIWEVEt5+3hhF7t/DC4SyP0aucHb3cnkx9QG1LF3cFJqbk13RUiIiKLk5Saq9U0xYy3RETmwZDnbrZiEd4c0xZvjWmHuZOD0SHAC5XXLALQIcALcyd3wcR/BWJwl0ZoyKngTSImIRMZOcqTo6lmnT59Wlju06eP2rbyr8u/zxK2aSzaHn8agkQq4zEsERGRjvz93DA9tI1Jx4x47EtEtRUTsIiIrFBNHFAbEu+QICIi0s/us0laD34x3hIR1Txtz91sxSK80K+Z2qSqOZOCERzoK6xXWcXkL9/siZlhHRSmA3FysDXwpyJlZADi7mXXdDdIifj4eGG5Xbt2atv6+PjAz6+8alxGRgaysrIsZpvGosvxpyHwGJaIiEh3wYG+mDMpGHWc7UyyPR77ElFtxSsoRERWqvyA2hF7ziYZtQS8Ki0buSM+JUfv91fcIeHt7mTAXhEREdVeGdmFiE3I1Ok9jLdERDVP3bmbCED7AC+EhviXJ031KP+9j0vJRkGxBM4Otghs7KHyd9zbwwneHup/44Mae0AEGOWc0VjrtVQFxZKa7gIpkZT0v2Sehg0bamzfsGFDpKamAgASExPh6elpEds0Bn2OPw2Bx7BERES6q+Nkh7yCUpNtj8e+RFQbMQGLiMiKVdz1nJFdiMi4NGw7kWCS7YoABDWuW60ErIo7JLzb8WIaERFVh2VWg9THrXvZOg9yM94SEZkH+XM3TclV2iRV6cLbwwntArwQY+Akig4BXmhSvw72nEs26HotmTOrjZmlp0+fCst169bV2N7Dw0Ppe819m8agz/GnIfAYloiISHemjts89iWi2oi/bEREBG8PJwzt3gS37mUb/KK6Mu0DvAxyFyLvkCBrIhaLAYhQVlYGmUwGkch6kkaIDE0mk6GsrAwAYGNjPbOyF+oZNxlviYjMh6GTq7Q1OsQfN5KztJpGTGwDNGvgjjv3c6oM4DTwckaXIF+EtPeDt7sTMrILsfdcMqtgoTwlPLCxR013g5QoKCgQlh0cHDS2l2+Tn59vMdusLjc3xyrPiWxr7lhbJLaBp6dLjW2fjMPGRiT8n39f0hb3GyLt6HvdSB889iWi2ooJWEREJNDlorq+bMUihIb4o46TXbWnm+AdEmRN7O3tUVRUBECGkpJiODhUvbhNRNopLi5ARQSytbWr2c6YkJOecZPxloiI/P3cMD20DX7cc13t+aKtWITpoW0QHOirdbUuY1TXskSGulGJqKaIxVWTrVyd7GugJ/+/bWd7pX2i2kEkEkEs5o1ppBvuN0Tq6XvdSB889iWi2opX0omISKDtRXV9VVyM9/dzA4BqXWjnHRJkbdzc3JCbmwsAKCjIhb29A6tgEemhrEyKvLxc4bGTk2sN9sa0ghp76Jz8zHhLREQVggN9MWeSI/acTUJMQqZCPBGhfBAlNMRfON/TtlqXsW4EEtsAjXzrIPmR+UzHpkrFjUpknpydnZGTkwMAKC4uhq2t+kvqxcXFwrKLi36VVmpim9UllZZVea61vydEIkBm4jJ3IlH5tpX1iSybjY0IIpHo/6sas34iaUeX/YaJm2TN9L1u9PHETriR/AT7zt9FmRZBn8e+RFSbWUwC1rFjx7B7925cu3YN6enpcHV1RZMmTTBo0CBMmDABrq6GHzip7jb/+usvzJkzR+vtvfPOO5gxY0Z1u01EVC3aXFTvEuSLyFtpVV4HADdnO+QWlCo8p+xiPFC9C+28Q4KsjaurK2xsbCCVlqG4uBDZ2elwdnZjIhaRliSSUhQXF6Kg4Cmk0vKS6mKxLeztNU/pUlvoU2WE8dZ4LPEcV97du3exZcsWnDlzBqmpqSgrK4Ovry+effZZjBs3Dq1atTJ4/4mo5vn7uWFmWAetqlvpsk59bwTS5vwzI7sQZ2NTERmXjocZVadmU7aO6tB10MpWbIPpoa0VzpXJvNSpU0dIhnry5InGBKfs7GyF91rKNqsrN7cIEolU4Tk7AO2amb7KXftmXrCVyZCVVTPTMZLxeHq6QCwWoayMf1/Snrb7ja2tGHXrOpuwZ0TmRd/rRi0b1UXLRnXRyNdV64q5PPYlotrK7BOw8vPzMXv2bBw/flzh+aysLGRlZeHKlSv4448/sGbNGnTs2NFit8Zn6+EAAQAASURBVElEZE60uajeq52fyte1vRiv74V23iGhyBIHcGUyGaKjo3H+/HlcvXoVd+7cQUZGBmQyGdzd3REYGIg+ffrgueeeg5ub7idjJ0+exOHDh3HlyhWkp6dDIpHAy8sLfn5+6NKlC3r37o0uXbro+/FrhI2NDfz8GuDevRQAMhQXF6K4uBCACDY2vDuPqpJPzJOZ+pZzMyOTySCTKd79bmMjhoeHj9UlMOqS/Mx4axy14Rx369atWLJkyf9Pjfs/ycnJSE5OxtatW/HWW2/hnXfeMUj/icj8aFvdSlva3AjUp2MDFBRJdD7/9PZwwpjezTCmdzOdzmEhA+JSspGSloejUfe1qrRiKxZhTO9m+PtMolaxtmvrehg3sCW8XKxnSmRL5O/vj/v37wMA7t+/j4YNG6ptX9EWAJo1a2Yx2zQWY1W5U4XHsERERPqrznUjXSvmEhHVRiKZGY/GSKVSTJ8+HWfOnAEAeHt7IywsDM2bN0dOTg727duHy5cvAwDc3d2xefNmBAQEmM025StgTZ48GT169FC7bX9//2r3v7qePCmocqeSKuV3DZRX4uDdJqQt7jekTFJqLvacTUK0FndWVNwdHBzoq/x1K7pTSdVgqjw/Pz+TDODqss2kpCS88sorePTokcbteXh4YNGiRRgyZIhW/UtISMC8efOEWK1KUFAQdu/erdU6jUXfmPvwYTqyszOg2331ZI1sbESoqMHAqRkU2drao25dH4jFZn8/ilFExaVpcUei+ngLWFfMNRRLP8cFgN27d+Ojjz4CUJ4cPHz4cPTs2RO2tra4fPkydu3ahZKSEgDABx98gGnTplWr/4bA81wyNu43hmXI6lqGol3sLL+bPzjQVzjHVVY1uoGXM7oE+WJknwD4ebtq3G8Yb2ve8uXLsX79egDA7Nmz8frrr6tsm5GRgV69egEAvLy8cP78eYvZZnWpi7fa/BsyBPl/h1Q7MeaSPrTdbxhzzYsl3nRsKsY+x9X12FcZczymJ+0x3pI+dNlvanPMNesErC1btuDTTz8FADRv3hy//vorvL29Fdp8+eWX2LBhAwCgS5cu2LRpk9lsUz4Ba+nSpRg7dmy1+mYKvDBNxsb9htRRNzWESAR0aaX57uDaHLTlWfIA7tWrVzF+/HgAgL29Pbp3747OnTujQYMGsLe3x927d7F3714kJCQAKB/cXbVqFYYPH662f9evX8fUqVOFqRdatWqFAQMGoHHjxnBwcEB2djZu376N06dPw8XFxWITsLKy8lFWVj4NYVFRAaTSUpSVlWleCVkdOztbiESATAaUlkpqujs1SiSygVgshr29IxwcnGBra2d1la8qUzUwrG28Bawn5hqSpZ/jZmVlYfDgwcjLy4ONjQ3WrVuHgQMHKrS5evUqXnnlFRQWFsLW1hZ79+6t8UocPM8lY+N+Yx1Uxk6ovptf3cATB4Mtx4ULF/DKK68AALp164bff/9dZdudO3di7ty5AICxY8di6dKlFrPN6tIUb9UlJqriYGeD4lLN57usqmE9GHNJH4y5lsVSbzo2JVOc4+pz7Eu1B+Mt6YMJWOXMNgFLKpWib9++SE9PB1CezNSmTRul7Z5//nncvHkTALB+/XqEhISYxTaZgEVUFfcb0lblC9Xd2zfg3cFyLHkA9+rVq5g1axZee+01hIaGwt3dvUobiUSCJUuWCO/38PDAkSNHVE5HmJ2djZEjRyI9PR0ODg74/PPPMXr0aJWfJTU1FX5+ftp9cCNhzCVj435D2tA33gLWE3MNpTac465YsQI///wzgPIqz/PmzVO63V9++QXLli0DAIwcORKrVq3Sq/+GwphLxsb9xroY6m5+DgZbDn3j6c8//4zevXtbzDarS9t4m5FdiPtZhSgskaC0VIqCghLh3wIAiMU2Wk8Ryqoa1ocxl/TBmGs5LPmmY1My5TkuK1lZJ8Zb0gcTsMrZ1HQHVLl06ZJwgtmtWzelJ5gAIBaLMXnyZOHx/v37LWqbRESknLeHE3q188PgLo3Qq50ffGtpINaHVCrFunXrhMfLly+vkggFlE9T0KpVKwBAZGQkzp49axbbbNmyJf755x9MnjxZafIVANja2mL+/PlCLM7OzsbRo0dV9m/ZsmVCDF+2bJna5CsANZ58RURkLhhvTac2nOMePHhQWJ4yZYrK7YaFhcHZuXxfOn78OIqKinTuOxGRuaocOzkAVfuJxWK89dZbwuOPP/4YmZmZVdqtXLlSSITq3LmzykSov/76C4GBgQgMDFSIv8bcpjnx9nDCgC6NENo7AGP6NsfQ7k0wuEsjDO3eRFiW/7el7N8c/x0SEdVO27dvFxKhmjdvjt27d2PWrFkYOXIkJk6ciM2bN2Pq1KkAgJycHCxYsMAit2lJGHOJiHRjtglYp0+fFpb79Omjtq386/Lvs4RtEhER6crSB3CdnZ1hb2+vcZsikQhDhw4VHsfFxSlt9/jxY+zduxcA0LVrV41TFRIREdUESz/HvXPnDh48eAAACAgIQKNGjVSuy9XVFcHBwQCAgoICRERE6NRvIiIiczNu3Dj06tULAHD79m2MHj0aX3/9Nfbv349NmzbhpZdeEqpBu7m5YdGiRRa5TSIioppi6TcdExERAWacgBUfHy8st2vXTm1bHx8foZJFRkYGsrKyzG6bf/75J4YNG4ZOnTqhQ4cO6NevH9544w38+eefKCws1Ku/RERknSx9AFcXLi4uwrKq6hl//fUXJBIJAGisfEVERFRTLP0cV5d1VW4j/14iIiJLZGtri2+++Qb9+/cHAKSnp+O7777D+++/j0WLFiEqKgoAUL9+ffz4449o0aKFRW6TiIioplj6TcdEREQAYFvTHVAlKSlJWG7YsKHG9g0bNkRqaioAIDExEZ6enma1zdjYWIXHqampSE1NxYkTJ7B27VosWbJEOJkmIiJSR5/B1NTUVGEwVZ8YWRPbrLzdZ555RmmbS5cuCcvt27dHSUkJNm/ejP379yMpKQklJSXw8vJC586d8fzzz6Nnz5569YWIiKg6LP0cNzExUed1KesHERGRpXJ1dcUPP/yAo0ePYvfu3YiNjUVmZiZcXFzQuHFjDB48GBMmTECdOnUseptEREQ1wZpuOiYiotrLbBOwnj59KizXrVtXY3sPDw+l763pbYrFYnTs2BFdunRB06ZN4ezsjKdPn+LatWs4dOgQsrOzkZWVhTfffBMrV67EyJEj9eo7ERFZD0sfwNVWTk4ODh48KDzu27ev0nbXrl0TlmUyGcaOHYvbt28rtHnw4AEePHiAvXv3YujQoVi2bBmcnDhfPRERmY6ln+PWRP+JiIjM0aBBgzBo0CC93z927FiMHTvWpNskIiIyd9Z00zEREdVeZpuAVVBQICw7ODhobC/fJj8/3yy2GRwcjOPHj6N+/fpVXgsLC8OHH36I+fPn48CBA5DJZJg7dy46d+6MBg0a6NV/Q3Bzc9S6rY2NSPi/p6eLhtZE5bjfkL647/yPpQ/gamvZsmXIyckBAAwYMACBgYFV2pSUlAhtAGDWrFlISkqCl5cXwsLC0KJFC5SUlCAiIgJ79+6FRCLBoUOHUFJSgu+++w4ikUivvhEREenK0s9xdV2Xo+P/zi317b+h8DyXjI37DemD+w0RERHR/1jLTcdERFS7mW0CVm3QpEkTta+7urpi5cqVyMjIQEREBIqLi/HTTz/h008/NVEPqxKLbXR+j0gkgljMAWzSDfcb0hf3HcsfwNXG5s2b8ddffwEA3Nzc8J///EdpO/nkK6D8pLlNmzZYv369QqLY2LFjMW7cOLz22msoKCjA8ePHceDAAYwYMULnvhkKB4PJ2LjfkD6431BtxPNcMhXuN6QP7jdERERE1nPTsSHwujIZG/cb0gf3m3Jmm4Dl7OwsDKoWFxfD1lZ9V4uLi4VlFxf9/qA1sU2xWIxZs2bhpZdeAgCcPHmyRhOwpNIyrdva2IggEokgk8lQViYzYq+oNuF+Q/rSZd/RZ5CNzMfJkyexePFiAICNjQ2WLl2q8g6ksjLFuCUWi7F69WqlJ8ydO3fGe++9hy+++AIA8Ntvv9VoAhYHg8lUuN+QPrjfGJ6ln+M6OzsrbadKUVGRynWZGs9zydi435A+eI5LRERE9D/WcNOxofC6MpkK9xvSh7XvN2abgFWnTh3hQvGTJ080XrDNzs5WeK+lbBMAOnXqBAcHBxQXF+Phw4coLCyEk5OT3uurjtzcIkgkUq3aenq6QCwWoaxMhqysmp1SgiwH9xvSl7b7jq2tGHXrOqt8vTaw9AFcdc6fP493330XEokEIpEIixYtwqBBg1S2r7zuHj16oGnTpirbP//881i+fDlKS0sRGxuLvLw8uLq6at0/Q+JgMBkb9xvSh677DQeEtWfp57jyj588eaJx24Y6XzYEnueSsXG/IX3wHJeIiIiI9MHrymRs3G9IH7yuXM5sE7D8/f1x//59AMD9+/c1zr1b0RYAmjVrZjHbBMqre7i7uyMtLQ0AkJubW2MJWEREZP4sfQBXlQsXLuDNN99EcXExRCIRPvvsM4SFhal9j4uLC+zs7FBaWgoAaNOmjcb2/v7+iI+Ph1QqxcOHD9GyZUut+mdoHAwmY+N+Q/rQZb/hgLBuLP0cV/6xfDtt1uXv769Vf4mIiIiIiMg61eabjg2N15XJ2LjfkD54Xbmc2aaVyQ+GxsbGqm2bkZGB1NRUAICXlxc8PT0tZptA+fRJubm5wmM3Nze910VERLWf/CCmrgOg1RnANeY2K5KvKqYrWrBgASZMmKDxfSKRSKHilTbJXvIVr/Ly8jS2JyIiMgRLP8fVZV2V27Ro0UKr/hIREREREZF1qomqy5Zc6ZmIiMyT2VbA6t27N9avXw8AOH36NF5//XWVbU+dOiUs9+3b16K2CQBXr14VBpzr169fo9Wv9C31ZmsrNnBPyBpwvyF9qdt3amvJSnktW7bEmTNnAJQPbvbo0UNlW0MO4BprmxXJV4WFhQCA+fPn46WXXtK6b4GBgbh9+zYA4OnTpxrbyydd1eSJMmMumRL3G9KHpv3GGmKuIVn6OW7z5s3RoEEDPHz4EAkJCWorauXn5yMqKgoA4OTkhG7duun9GQyBMZdMifsN6cPaz3GpdmC8JVPjvkP6YMw1X5ZeNdqUGHPJlLjfkD6s+bqy2SZgdevWDT4+PkhPT0dERASuX7+udFohqVSK33//XXg8fPhwi9pmWVkZvvnmG+Fxv3799F6XIbi5Oer8HrHYptaWiCPj4X5D+uK+Y/kDuPIqJ1/95z//waRJk3TqW9++fbFv3z4AwPXr19W2zc/PR1JSEgDAzs5O40m1MTHmkqlwvyF9cL8xvNpwjjts2DDheGDjxo2YN2+e0nbbtm1DQUEBAGDAgAE1epMRwJhLpsP9hvTB/YZqC8ZbMiXuO6QP7jfmrbbddGxMjLlkKtxvSB/Wvt+YbWqZWCzGW2+9JTz++OOPkZmZWaXdypUrcfPmTQBA586d0bt3b6Xr++uvvxAYGIjAwEBMnjzZ6Nu8cuUKtm7dqjAfcGUFBQX46KOPcOHCBQCAvb292gFtIiIi4H+DqQCEwVRljDGAa8hthoeHKyRfzZ07Fy+//LLOfRswYABcXFwAABcvXkRycrLKtjt37kRpaSkAoGvXrjU+IExERNbD0s9xAeC1114TYu6mTZtw7NixKm2io6Px9ddfAwBsbW3x9ttvK10XERERERERUQX589DTp0+rbWvIm45NvU0iIqrdzLYCFgCMGzcOR48exblz53D79m2MHj0aYWFhaN68ObKzs7F//35hWgM3NzcsWrTIbLaZmZmJBQsWYNmyZejVqxfatGkDPz8/ODk54enTp7hx4wb2798vzBcsEomwePHiGq3EQURElqFiMHXhwoUAygdTf/31V3h5eSm002UAd86cOQDKE63kE6iMtc2IiAhMnz5dIflqypQpWn3+ylxdXTF9+nSsXr0aUqkU77//PjZs2AAPDw+FdleuXMFXX30lPGbSMxERmZoln+MC5Xf5zp8/H5988gnKysrwzjvvYPjw4ejVqxdsbGxw+fJl/P3338KNSDNmzEBAQEC1PwMRERERERHVbrWhajQREZFIJpPJaroT6uTl5WH27Nk4ceKEyjb169fHV199hc6dO6tso83gsiG3efToUa3v9PXx8cHixYtrfPpBIiKyHBKJBNOmTcO5c+cAlMcSdYOpf/75J1q0aKF0XdrGSENt8+bNm3jppZeEqYlCQkLw4osvavzMHh4e6NKli9LXSkpKMHXqVFy6dAlA+QBxWFgYWrZsiZKSEkRERGDPnj2QSCQAgIkTJ2LBggUat0lERGRolnqOK+/PP//EsmXLVFZ8FovFeOONN/Duu+9qXBcRERERERERUH6uWXEDcIsWLZTeAPzll19iw4YNAMpvAN68ebPSdWl7zmzIbRIREZl9AlaFo0ePYvfu3YiNjUVmZiZcXFzQuHFjDB48GBMmTECdOnXUvl+Xi9OG2GZ+fj4uXryImJgYxMTEIDU1FdnZ2Xj69CkcHR3h5eWF1q1bo1+/fhg2bBgcHBx0+0KIiMjqWeoArvz2dGGIvtnY2GDq1Kn44IMPYGNjtjMxExGRFbC0c9zKkpOTsWXLFpw5cwapqamQyWTw9fVFjx49MH78eLRu3VrrdRERERERERFZ8k3HREREgAUlYBEREZFyljaAa6wErAonT57E7t27ER0djYyMDIjFYvj5+aF79+546aWXeIJMREREREREREREZIYs9aZjIiIigAlYRERERERERERERERERERkJiztpmMiIiKACVhERERERERERERERERERERERER6s6npDhAREREREREREREREREREREREVkqJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ5sa7oDZHmOHTuG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FhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYRGZi8uTJCAwMRGBgIMLDw6u9vr/++ktY3yeffGKAHlqHAQMGCN/b/fv3a7o7RERkAoaO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n0tKSnD48GGFdVT2wgsvIDY2Vun7MzMzkZmZiStXrmD9+vWYOXMmXn/9dT0/gXLyP57aZFSnpaXh3XffxZUrVxSef/z4MR4/foxjx46hf//+WL16tcrkngqZmZn44IMPlGYmP3z4EA8fPsTRo0fx448/YuXKlWjXrl2VdkuXLkVoaCjS09Nx69YtrF69Gp988onS7eXl5WH27NlC8tXYsWPNIvnq+++/x/fff4/i4mKF5yv+/tHR0fj555/xzjvvYNq0aSrXI5FIsGjRImzdurXKa1KpFOnp6UhPT0d0dDS2bNmCN954A++9916VtkePHsXcuXORk5NT5bWnT5/i6dOnuHPnDg4fPoxffvkFp0+f1uNTExFpz9pjcHR0NGbPno179+4pPF9cXIz8/HwkJydj586d6NWrF1auXAlPT0+t+7Bt2zZ8/vnnwt0kFeLj4xEfH4/Nmzdj6dKlGDhwoNbrNAfJycl47733cOPGjSqvFRQUICUlBfv27UObNm3w9ddfq00mvnLlCmbOnInHjx9XeS0vLw95eXlISkrCiRMn8NVXX+H69etVLn4VFBTggw8+UPibV5BKpSgqKsLjx48RFRWF3377DYsXL0ZYWJgen5yIyHCsPf7m5ubi008/xcGDByGTyRReKy0tRXJyMpKTk3Hw4EGsWbMG586d06s/hogzpsY4S0SW4qeffsJXX30FqVSq8HxMTAxiYmJw/PhxfP/997C3t4dUKsXnn39epWJBYWEhIiIiEBERgZMnT2LFihUaBydzcnIwf/58hZhYISMjAxkZGbh06RJ++uknfP7550a/Prl161Z88cUXVa49Vsc///yDxYsXK/39zsrKQlZWFqKiovDTTz/hs88+U5iSCCj/Ht55550q15iB8u/8wYMHePDgAcLDw/Hzzz/jl19+ESpLKFNWVibcpNu0aVM0a9ZM42fYvXs3Pv30UxQWFio8HxcXh7i4OBw+fBgbN24Ukgu+++47rF27tkpFhejoaERHR+PQoUP473//W2WwW5W///5bOMbo1KkTGjduDAAYPXq0MJXRrl27jDJwLRKJ4OrqKgxc5+XlGXwbFdNoAUD37t01tpdv8/DhQ9y9exdNmjQxeL+ILAnjWDnGMeUYxxjHjCk5OVm4WRsAunXrpvE93bt3x927dwEAFy9erFYCVkZGhrCszc15FTfKpaSk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qO0xOD8/X1iWL8FNRERUk2p7/CUiIrJWFZU4RSIRYzwREVkcxjEi0gYTsIjMnPwUEQMHDqzBnhAREVmX2h6Dk5OTheWGDRvWXEeIiIjk1Pb4S0REZI1KSkpw9uxZAEDbtm05bRwREVkUxjEi0hanICQiIiIisjKJiYkYM2YMiouLYWNjgzNnzsDb27umu0VERERERET0f+zde3xU9Z0//teZmdwmt0kmiURCcAwQNA1Qoig13mrYtrbfUNmNyyps2+3WVFeLj5bWoi3dsv3Wy+p6qaXQi61fUWqptuEnbR8KqBDLCgQlFyBgGAR0NDcmCZnJJHP5/RFnSDLnnDnnzJlLktfz8eijczmXT+KQc+Z83uf1JiIiIiKalEyJHgAREREREcWe3W7Hb3/7W3R1dWHfvn3weDwARts7sfiKiIiIiIiIiIiIiIhIOxZgEdGk5XQ68dRTT0W9nX/913/FJZdcEv2AiIiIklhnZydefPHFca/NmDEDDzzwwLjXGhoacPjw4aj2NXv2bHzlK1+JahtERERTEY+zREREpKc333wTb775ZlTbsFgs+Na3vqXTiIiIiJTjcYymGhZgEdGkdf78eTz//PNRb+dzn/scC7CIiGjayMjIwMUXX4wbbrgBX//612G1Wse9v2/fPvzpT3+Kah9LlizhxDAREZEIHmeJiIhIT83NzVFfI585cyYnromIKCF4HKOphgVYRERERETTwFVXXYX29vZED4OIiIiIiIiIiIiIiGjKEQKBQCDRgyAiIiIiIiIiIiIiIiIiIiIiIpqMmIBFREREMbNr1y40NDSgtbUVXV1dyMrKwuzZs1FTU4OVK1ciKysr5mP4/ve/P67Ny91334177rkn5vslIiIiIiIiIiIiIiIioumBBVhERESku8HBQaxduxa7d+8e93pvby96e3vxzjvvYMuWLXjiiSewaNGimI3jzTffHFd8RURERERERERERERERESkNxZgERERka58Ph/WrFmDvXv3AgAKCgpQV1eHOXPmoK+vD6+88goOHToEh8OBO+64A1u3bkVZWZnu4zh//jx+9KMfAQDMZjNcLpfu+yAiItIqESmR0e7z5Zdfxrp16xTvj6mTRERERERERERENF2wAIuIiIh0tW3btlDx1Zw5c/Dss8+ioKAg9P7tt9+Ohx9+GM888wz6+vqwfv16PP/887qP45FHHoHD4UBxcTE+//nP47e//a3u+yAiIlIrESmRyZJMSURERERERERERDRVsQCLiIiIdOPz+fD000+Hnj/yyCPjiq+C1q5di3379uHo0aM4ePAgGhsbUV1drds49u3bhz/84Q8AgB/96EdobW3VbdtERERaJSIlMlb7XL16Na6++mrZZWw2W1RjJyIiIiIiIiIiIposWIBFREREujlw4AC6uroAAEuWLEFFRYXockajEatXr8b9998PANixY4duBVhutxs//OEPEQgEcPPNN+PGG29kARYRESWFRKRExmqfl19+OWpqaqIaGxEREREREREREdFUYUj0AIiIiGjq2LNnT+jxddddJ7vs2PfHrhetxx57DGfOnIHFYsEDDzyg23aJiIiioSYl8rLLLgOAUErkZNonERERERERERER0XTEAiwiIiLSzfHjx0OPKysrZZctLCxEcXExAKC7uxu9vb1R7//QoUOh1I7vfe97opPMREREiaA2JTJox44dk2qfRERERERERERERNMRC7CIiIhIN3a7PfS4pKQk4vJjlzl58mRU+/Z4PLj//vvh9/uxdOlS/OM//mNU2yMiItJTIlIikyGZkoiIiIiIiIiIiGg6MCV6AERERDR1DAwMhB7n5eVFXN5isYiuq8WTTz4Ju92O9PR0bNiwIaptERER6U1LSqTD4QilRObn5yfVPl944QX86le/wkcffQS/34+8vDzMnz8f1113HW655RZkZGSoHi8RERERERERERHRZMUCLBqnv38IPp9f0bI5OekwGg3w+fzo7x+K8choquDnhrRS+tkxGg3IyUmP48hoLJfLFXqclpYWcfmxywwODmreb3NzM373u98BAO655x6UlpZq3la8KD3eAoDBIEAQBAQCAfj9gRiOiqYSfm5IC7WfG6ORocpKaUmJdDgcAEZTIrUUYMVyny0tLeOeOxwOOBwOvP766/jZz36Gn/70p7jxxhtVjzkW+D2XYo2fG9KC33FpquHxluKBnx3Sgsdcmmp4zKVY4+eGtFDzuZnKx1wWYNE4Pp8fXq9P9Xpa1iHi54a04meHxhoeHsYDDzwAn8+HiooKfO1rX0v0kBTRUrQgCAKMRiEGo6GpjJ8b0oKfG/0lIiUyFvs0Go1YtGgRrrjiClxyySUwm80YGBhAa2sr/va3v8HpdKK3txd33nknHn30UXzpS1/SNHY98XsuxRM/N6QFPzc0FfB4S/HGzw5pwc8NTQU85lI88XNDWkznzw0LsIiIiEg3ZrMZfX19AACPxwOTSf5Uw+PxhB5nZmZq2ucvfvELHD9+HEajEf/1X/8Fo9GoaTvxxgQsijV+bkgLJmDFTiJSIvXeZ1VVFXbv3o0ZM2aEvVdXV4fvfve7+OEPf4i//OUvCAQCuP/++7F48WJcfPHFmsavFzV31BkMQuj/8/O1nZvQ9MPPDWnBzw0RERERERHR1MICLCIiItJNdnZ2qADr3LlzEYuqnE7nuHXVOnbsGH71q18BAL761a+ioqJC9TYSpb9/SPFdAPn5mTAaBfj9AfT2am/VSNMLPzekhZrPjclkRF6eOU4jo2Qwe/Zs2fezsrLw6KOPoru7G/v374fH48GvfvUr/OhHP4rTCMUxdZLihZ8b0oKfGyIiIiIiIqKpgQVYREREpBubzYazZ88CAM6ePYuSkhLZ5YPLAsCll16qen8vv/wyRkZGYDAYkJKSgo0bN4oud+DAgXGPg8vZbDZ84QtfUL1fIiIitRKREpmIfRqNRtx777247bbbAABvvPFGwguwmDpJscbPDWmh5nPDxEkiIiIiIiKi5McCLCIiItLNvHnzsHfvXgBAS0sLrr76asllu7u74XA4AABWqxX5+fmq9xcIjE5U+P1+bNq0SdE6b7/9Nt5++20AwE033cQCLCIiiot4p0Qmap8A8OlPfxppaWnweDz48MMP4Xa7kZGRoXl70WLqJMUaPzekhdLPDRMniYiIiIiIiCYH3j5FREREurn22mtDj/fs2SO77Jtvvhl6fP3118dsTERERMnAZrOFHo9NgJQSbUpkovYJAAaDAbm5uaHn/f39mrdFRERERERERERENBmwAIuIiIh0s2TJEhQWFgIA9u/fj7a2NtHlfD4fnnvuudDzm2++WdP+HnjgAbS3t0f839133x1a5+677w69LtWykIiISG/z5s0LPW5paZFdVo+UyETtExhNphxbdJWTk6N5W0RERERERERERESTAQuwiIiISDdGoxF33XVX6Pl9992Hnp6esOUeffRRHD16FACwePHicclZY7388ssoLy9HeXk5Vq9eHZtBExERxUEiUiITlUz57rvvYmhoCAAwY8aMhLYfJCIiIiIiIiIiIooHU6IHQERERFPLrbfeip07d+Ktt97C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U9sp7WhondYJShq/nt/c3qODR3u1ub7aMGlzasKmFd83Jtg0ufVxvEng+XHuB6Q7PtnIWA779AsLFGABQHoYHBzU1q1b9dxzz016vre3V729vXrjjTe0c+dOPfjgg7r88ssTOta///u/64EHHpDHM/0Exuv1qqOjQx0dHdq1a5euuOIK/eM//qPOO++8hI6ZKYyKqewh86fNZpvW2ihAmCQAAAlZW1ehg0d7DS+UmskyaQfEKS4ApA/OcxGvEaOF0ZBFx9ycxBdEo/3ekWNxCyIAADAucgKWcYvBUH2Do+ofGjUtvgrl9QVMt8vLnl4CkpNtTQHWZZUlKp1/tnVgPEngU4u4gNmEAixkLKMCLKNWSwCAmeXz+bRlyxbt379fklRaWqr169dr6dKl6uvr0+7du/X666+rs7NTt912m5588klVVlbGfbyOjo7gRelzzjlHH/nIR1RdXa2SkhJ5PB69+eabamho0NDQkF577TVt2rRJP/rRj1RSUmLJ75vOjFIzQu+MthmcGfljbpoEAABCVZQVaXN9dVQXTCeYpVFMLZQGAKQG57mIl98fMFzsDE19yHLMXCoVCVgAACTHmDf8+XukFoTSeALWL958L+prCWbb5eZML7jOCdOG0G63RbXG7nTYVF9XMem5eJLApxZxAbMJBVjIWA6HQQJWDHcYAwCS46mnngpelF66dKkee+wxlZaWBl+/9dZbde+99+rRRx9VX1+f7rrrLj3xxBNxH89ms6murk6f+cxntHr1atntk08kbrrpJt1222367Gc/q46ODp04cUL333+/7rnnnriPmSmMzplCO1PY7bZp6ZGs8wIAkLjaqkXatjFXDY0deiuKi5DZZgVYVg8MABAXznMRr+HR6e0HpcmtgWbyPDzbJHUTAAAkJnICVuQCrLePn1ZLDIVMZgwTsLLMy0Lqr75Qu395NGzhl9Nh0+b6alWUFU17LZYkcKMiLmA24XYHZCy7jRaEAJBufD6fHn744eDP991336SL0hO2bt2qSy65RJL02muvqbGxMe5j/vmf/7m+973v6eqrr552UXrC+eefrwcffDD4889+9jMNDw/HfcxMYZSaYZ+agBXFPgAAIHYVZUXasn6F8rIjL3SapVGQ8gwAqcd5LhIx7DEuwMoLScAy6vSQLNlh0i8AAED8vN7wBVijY+Ffl6T/eeW4JTdi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AAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg0jAAgAAAAAAAAAAAAAAAACDSMACAAAAAAAAAAAAAAAAAINIwAIAAAAAAAAAAAAAAAAAg/5/jZW5Hy6oChAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": { "image/png": { "width": 1000 } }, "execution_count": 16 } ], "source": [ "\n", "\n", "# we can also output some older school graphs if the tensor board isn't working for whatever reason... \n", "from utils.plots import plot_results # plot results.txt as results.png\n", "Image(filename='/content/yolov5/runs/train/yolov5s_results/results.png', width=1000) # view results.png" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 935 }, "id": "gqbctwgUcrIx", "outputId": "b4ab6735-6c8c-47e1-dcb1-2e55e0a52d23" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GROUND TRUTH TRAINING DATA:\n" ] }, { "output_type": "execute_result", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": { "image/jpeg": { "width": 900 } }, "execution_count": 17 } ], "source": [ "# first, display our ground truth data\n", "print(\"GROUND TRUTH TRAINING DATA:\")\n", "Image(filename='/content/yolov5/runs/train/yolov5s_results/train_batch0.jpg', width=900)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 935 }, "id": "aMcmt9WqfPvS", "outputId": "0d3fb0e8-f1a6-4eb5-f3c0-e0211d5f91c7" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GROUND TRUTH AUGMENTED TRAINING DATA:\n" ] }, { "output_type": "execute_result", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": { "image/jpeg": { "width": 900 } }, "execution_count": 19 } ], "source": [ "# print out an augmented training example\n", "print(\"GROUND TRUTH AUGMENTED TRAINING DATA:\")\n", "Image(filename='/content/yolov5/runs/train/yolov5s_results/train_batch0.jpg', width=900)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YeJ_s6_6fe91", "outputId": "240137a2-2a66-4336-9277-125d3685cee9" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "y\n", "\u001b[0m\u001b[01;34mtrain\u001b[0m/\n" ] } ], "source": [ "# trained weights are saved by default in our weights folder\n", "%ls runs/" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xc0oujCZfhnu", "outputId": "a53ea70f-1f58-4e28-b3fe-17817352efda" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "y \n", "best.pt last.pt\n" ] } ], "source": [ "%ls runs/train/yolov5s_results/weights" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vzLFzv3tfkB2", "outputId": "a04636a3-26be-4f94-8b3c-fa128b631d3a" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/content/yolov5\n", "\u001b[34m\u001b[1mdetect: \u001b[0mweights=['runs/train/yolov5s_results/weights/best.pt'], source=../test/images, data=data/coco128.yaml, imgsz=[416, 416], conf_thres=0.4, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False\n", "YOLOv5 🚀 v6.2-51-ge6f54c5 Python-3.7.13 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", "\n", "Fusing layers... \n", "custom_YOLOv5s summary: 232 layers, 7251912 parameters, 0 gradients\n", "image 1/43 /content/test/images/Ogdenhousefire10492_png.rf.2f8a1da8989a152edaa835e3cf6b9acd.jpg: 416x416 3 fires, 8.9ms\n", "image 2/43 /content/test/images/Ogdenhousefire10538_png.rf.f92dc1d386c2dc860356d13623109098.jpg: 416x416 3 fires, 8.9ms\n", "image 3/43 /content/test/images/Ogdenhousefire10883_png.rf.08a194027eadc548101a9990094626e6.jpg: 416x416 1 fire, 9.3ms\n", "image 4/43 /content/test/images/Ogdenhousefire3191_png.rf.a329a5e8a8b2c4489243d03a4b934ea2.jpg: 416x416 2 fires, 8.8ms\n", "image 5/43 /content/test/images/Ogdenhousefire3673_png.rf.02becacbd87d87650872bf20d7a24a54.jpg: 416x416 2 fires, 9.7ms\n", "image 6/43 /content/test/images/Ogdenhousefire4592_png.rf.6b29c5692ff2a3f1216f57374c3216cf.jpg: 416x416 2 fires, 8.9ms\n", "image 7/43 /content/test/images/Ogdenhousefire4890_png.rf.b4d56873b9d35f34d150d95b96505666.jpg: 416x416 2 fires, 8.8ms\n", "image 8/43 /content/test/images/Ogdenhousefire5166_png.rf.5527fa599844659fe46859e61e0e7e92.jpg: 416x416 2 fires, 8.8ms\n", "image 9/43 /content/test/images/Ogdenhousefire5349_png.rf.331e7687bb5670cf260428a64837f28a.jpg: 416x416 2 fires, 8.8ms\n", "image 10/43 /content/test/images/Ogdenhousefire5740_png.rf.578018c7d5cd715062106cd11be82618.jpg: 416x416 2 fires, 9.3ms\n", "image 11/43 /content/test/images/Ogdenhousefire7301_png.rf.9ad3f47e41f2f322efbd1557d12447d4.jpg: 416x416 3 fires, 8.9ms\n", "image 12/43 /content/test/images/Ogdenhousefire7324_png.rf.0c2d1ca58637af1aa1f87ee17aa55dbf.jpg: 416x416 3 fires, 8.8ms\n", "image 13/43 /content/test/images/Ogdenhousefire9413_png.rf.698153e45fbf3de2b09e83d12efd0fa1.jpg: 416x416 2 fires, 1 smoke, 8.2ms\n", "image 14/43 /content/test/images/Seven4458_png.rf.5c46fab8ab478a0a4dc505dc2abe839b.jpg: 416x416 1 fire, 9.6ms\n", "image 15/43 /content/test/images/Seven5238_png.rf.cbd5183692dba7cf647c131bff9263c1.jpg: 416x416 (no detections), 8.4ms\n", "image 16/43 /content/test/images/Seven6174_png.rf.e374194fff347ad0a47d7966bf6e8bad.jpg: 416x416 1 fire, 8.3ms\n", "image 17/43 /content/test/images/Seven7735_png.rf.99ddfc6fc5f885105a105d95d0fa80f0.jpg: 416x416 (no detections), 8.2ms\n", "image 18/43 /content/test/images/Two10621_png.rf.2ca7aaaac4cb2b3b878da74892dde64c.jpg: 416x416 1 fire, 1 smoke, 10.2ms\n", "image 19/43 /content/test/images/Two14499_png.rf.3ccd30247121e5773e054d4df78a2745.jpg: 416x416 1 fire, 1 smoke, 8.5ms\n", "image 20/43 /content/test/images/Two1629_png.rf.9e43513de6cd9e5dfe8505dc60cb6b55.jpg: 416x416 2 fires, 1 smoke, 8.4ms\n", "image 21/43 /content/test/images/Two16803_png.rf.e6530221157a8e0dd30598e101278b1a.jpg: 416x416 1 fire, 1 smoke, 8.2ms\n", "image 22/43 /content/test/images/Two1685_png.rf.30b5a134ec17e3c705cd01808db9b01c.jpg: 416x416 1 fire, 1 smoke, 8.2ms\n", "image 23/43 /content/test/images/Two18489_png.rf.30046a409a4139ea6c1ab39e335f8665.jpg: 416x416 1 fire, 1 smoke, 8.3ms\n", "image 24/43 /content/test/images/Two20680_png.rf.5103bedef08b8ccd15cdc92d3d2bd331.jpg: 416x416 (no detections), 8.4ms\n", "image 25/43 /content/test/images/Two20793_png.rf.30a60c452a51590384bb7b77a697e565.jpg: 416x416 1 fire, 1 smoke, 8.6ms\n", "image 26/43 /content/test/images/Two21242_png.rf.577ec8b1937579f11d76e92410253377.jpg: 416x416 1 fire, 8.4ms\n", "image 27/43 /content/test/images/Two3484_png.rf.5716a556fe23096b3319ccf2a5a69e75.jpg: 416x416 1 fire, 8.8ms\n", "image 28/43 /content/test/images/Two561_png.rf.fb6a7b9153878c926594d5b0c5149fff.jpg: 416x416 2 fires, 1 smoke, 8.2ms\n", "image 29/43 /content/test/images/Two6575_png.rf.cd39469628b8ce599d5f374bfa2a5784.jpg: 416x416 1 fire, 8.4ms\n", "image 30/43 /content/test/images/Two7249_png.rf.f0a0abed8ed371ae2a93ec81ab1a178d.jpg: 416x416 1 fire, 1 smoke, 9.0ms\n", "image 31/43 /content/test/images/Two7474_png.rf.1454ddc9555a61c30d8ce0bade91cd61.jpg: 416x416 1 fire, 1 smoke, 8.2ms\n", "image 32/43 /content/test/images/WELLInvolvedHouseFireAggressiveAttack2419_png.rf.a814e811e867cab51f4c58050602b68f.jpg: 416x416 3 fires, 8.2ms\n", "image 33/43 /content/test/images/WELLInvolvedHouseFireAggressiveAttack2629_png.rf.543809c0a0649ac9fc8a18d4e30281ee.jpg: 416x416 4 fires, 13.1ms\n", "image 34/43 /content/test/images/WELLInvolvedHouseFireAggressiveAttack3047_png.rf.f3241fc11b7129427d42c883f1648e91.jpg: 416x416 1 fire, 8.2ms\n", "image 35/43 /content/test/images/WELLInvolvedHouseFireAggressiveAttack3420_png.rf.50235452c105c503968004e0fc38840a.jpg: 416x416 1 fire, 8.3ms\n", "image 36/43 /content/test/images/WELLInvolvedHouseFireAggressiveAttack4071_png.rf.f521ce3a4d50961647694b622d7765b7.jpg: 416x416 1 fire, 8.6ms\n", "image 37/43 /content/test/images/WELLInvolvedHouseFireAggressiveAttack4187_png.rf.4068b4e50042c20731785ed86af91d5c.jpg: 416x416 1 fire, 8.9ms\n", "image 38/43 /content/test/images/WELLInvolvedHouseFireAggressiveAttack5025_png.rf.26c31a8ec1af9e7f7ffb2684eb65f67c.jpg: 416x416 (no detections), 12.1ms\n", "image 39/43 /content/test/images/WaterMistFireDemonstration1107_png.rf.92295c0b00a8d718b99a4a81f72cfaf4.jpg: 416x416 1 fire, 8.9ms\n", "image 40/43 /content/test/images/WaterMistFireDemonstration4477_png.rf.f0978f45e7f9cb5c3031bc020ba2e97a.jpg: 416x416 1 fire, 8.3ms\n", "image 41/43 /content/test/images/WaterMistFireDemonstration5740_png.rf.90452ec77ed67b19288182e981997227.jpg: 416x416 4 fires, 8.7ms\n", "image 42/43 /content/test/images/WaterMistFireDemonstration6099_png.rf.2c2dd58d6907ff6ebb5afca6a91e8713.jpg: 416x416 1 fire, 8.6ms\n", "image 43/43 /content/test/images/WaterMistFireDemonstration7098_png.rf.6c9423cf5d52e552e6ffd19cfac83430.jpg: 416x416 (no detections), 8.3ms\n", "Speed: 0.3ms pre-process, 8.9ms inference, 0.7ms NMS per image at shape (1, 3, 416, 416)\n", "Results saved to \u001b[1mruns/detect/exp\u001b[0m\n" ] } ], "source": [ "# when we ran this, we saw .007 second inference time. That is 140 FPS on a TESLA P100!\n", "# use the best weights!\n", "%cd /content/yolov5/\n", "!python detect.py --weights runs/train/yolov5s_results/weights/best.pt --img 416 --conf 0.4 --source ../test/images" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "wA8xngQ7fojf", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "outputId": "7a8c8137-4324-4b5a-fba3-c8a1eeb58a28" }, "outputs": [ { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCADgAOADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9PNe/4KP654K8ba54I1/4faXqo0jxHdacbmy1OW08qKOWSLB/dS5k/wBX/wA8+teheGP+Ch3wH8SX8tjdjWNJgih8wXmpWcRikP8AzzxDLLLn/tnX5M6PeaTrH7+Cx8Jav+58vzZrOWK6/wDAnzZZa0NN8bQQxfuP7ftv+wT4w+3f+QtQrh+tUX/y8OznwdU/ZDQ/2nfgB4i0mPVrH4r6PbQzDEI1e8+xSn/tnc+XJ+ldzDfWt3Es1rIjxuP3cic1+KVn8VNV039x/wAJjqVtJ/1FvCstzL/390/91W5oP7RXiPQfEdvrmlar4W/tC1h/c6h/wkkVlc/vf+WUUUsXmy/8tf8AVf6r/lr5XmxebrTrxE6WGezP2b3r60bl9a/Lrwj+2p+0h4XeXWLLVPGQEwxNd3OpxatEP+uUcssuP+/VdlpH/BUX4t+FrSxsNV1S3vpJ7vEmo+LfDE1sQPLkP/LKK1i7CtV7Vmf1dn6JhgTgGhkBOa8T/Y8/atX9p2y1p/K0rzNF+zCaTSbzzYyZfN7/APbKvanJBrVK5zzXs3YfRRSfKwpDE2D1pSxB+7QrFj0rg/j1+0H8Mf2a/A7/ABG+LGttY6SLyO1MscPmF5JM4GB/uP8AlWc6kaavIErndnA6L+lIWHXAr8xviZ/wWen8R+CvilqvgDxXo0VvJqUVh4H0W7e6i1R7eKURX13HLD5JPmxSReVFF+8tZPMkluf3tpFJ8gzf8Fnf2r9N8Map4X1X41azLLdXl1e2er2l1FHdWt1LNFN/zyl/0Xy/Mjii/wCWXm/88ovKrg+v/wAkDeeHdP4z990TBzXyl+3X+3fpvwT07whp3w3+IelaPrOq+P8A+yrq48TxSW+nfZraaOK++0ySwkQwxfaIZpJcx/uopfLlz1+E/gp/wcNfGib4o3l1488P+HNY0PVNXNxNpMEMtjJaxRafFFJFbXMt3LHDiaPzvKkjkMvmS8xf8svJtH/bd+LX7UH7RfxX0r4LfCTSb3UPippuqXEPhjVrT+177yotP82X7Dff8fX2r7LY/uoov3X+qiii/dReVVTEutS9w0pUkqnvn6FeEP27PjvJ4g+H39t+JtP07TL7w3p+nfECXx54dm02PRtdtrrSrnU5prryoo4o7rTNS/0U/wCqluvssX7rzTX3Fcy+XC86wvJgcRxjO+v57P2b/jl8D/h7+2lpfjj9oSfxBcaPYaxqmo+NtP1Dw3F5sWqf2hLL5X2bzf8Anr5Usv7r/WyyxRRf6qWv0O/br/at+LPwr/ZYFr4h+E+pXviSHxDDJo/h3xDBHLbS6YLCaSKbUnsJZYR+9jk8qKK+82aW1EscvEtrFlSxDwy980eHVR+4exfslftBax42/aX8beA/Efjq6vbzVNBtte03RdWnmtr7S7Y3+oxeXHZSRi1NrFF9itjdWUtz500cksp8uW1ll+av2nv+CyWi/smftVeOfC3h2LS/EKafZzaTdWL6Z9l1G/13zbuSKeW6EUUUljY+XbWHlDEwF3LL5l95WK8V/YB8Waz/AME8vjX478U/tYeFrG38bHwhqep2eoat8TbS3lmuha2moSWF9bRSyyw+bFJFLmWLzfN/5ZS+bFX5zftH/GXQfjJ8T/FfxLl1S5uNf8ReKbrWbu6hh+zWH+kyyy3PlRfvZf8AWyxeV+9opwq1vcmZ4idKiz6i+JX7cv7QH7TvwW1zVPit8UfE+o6fY6xL+91W7ittM+y+bFdSxRfuv+P/AO1S23lf63yopY/Kiiiiir58vP23PiND8CNR+AXhzxH4g0DQ7vxHf61eWlpr3l2t/wCbFaxRRSxRRReb5X2bzf3sssX/AEyil/ey/Pl5r3ky/v4P3n/LGao7z7fqVrJ5EHmSf9Mq0/s2ijk9qqoeKviDquvXXkTz/wDkHyv3tWNA8eW+g/aNC0qCOWS6hijvLvyfLl/1vm+V/wBcv3UX/bWKuHh8+HWbiC+/1n+rmhrUFnY2elx39j/rJYYpP+utd3sqNKiBc17WJ5v388EXlxQ/Zv3X/LWsOeaaaL7d5HmfuZfO/wC/VGsTT+bJB/yz879zWpZw2Omw2/kT+VJLDWX8Eyqfujl9Ymgh8yfz/Mkl/wDIVZfiSGe8v7e3/wCuVdZqXhu+1K2kg0qeO58r95N5MNWPFXhv/hFYv7K1X97JF+8/6a+bRUxNEg+4NN8N6tZxf6DPc23/AFxmqxNpvirTZbfyPtPlxTfuYa5/TfiFfeb9ngsYquf8LC8R+VH5H7r/AJ7V+V+1Z5vtTc8rxxNNHP5F75cvXyZq2NN1j4jCwjgn1XUo4/8ArtXn8PxO8YiX9/fSeZWpD8VPEcMvkfbvMpKVfuL2lY9I0f4hT6PL+/8ACtj9o8n/AF32Pypf+/tdRpvxzvoYo76ex8QRXEU37n/icXUn/TL/AFUsvlV4/wD8LD1z+y476Ax+Z/y2ilhqxD8Ttc/66x16VLMsxpL93UNaeKrUj7l/YK/4KWW/7Pl7r6fE/wAFanrVtrptSZbOa1iltfKE3/LPyovN80yg5kl7V9p+Af8AgrB+xz40sEutX8U6p4cuZZ/Lgstb0eV3I4/e+Za+dF5f7wc+ZX4t6P8AEjVZpfPg8r/trDWp/wALU1WaKT7D5f73/pjWlPOs1pb1DopY3/n4fvhD8S9J+MHwzvPE3wI+KmjASCWO08QGyN9a20sZxJ5sYlizjByPMjPIOfX4M+Ff/BTDw1f/AByj8G+KPjPq1/beHdVv/EsfiS7F3bWWqW01jFdXVhHZRWscvk21tLefZrW6Et1FdQx2plPlRS3XwVD8SNVmtfP1Xw5bfuv9T53+tqvZ/EiC8lk8/Qo5fK/5bVrUzzF4mrTsdlPMKNLeB+gkX/Bfj4VaT4mudO0Tw1q3ifSLdb822rahbR2ct/cyah/onleX/qbGK18yPzJYvtUhNsZYoj5pr85v+ChX7Z3i/wDaj+M1/wDErWp/Kilm8rTdPM3mmwtf+WVrH/0z/wC/Xm/63yq1ZtS8AakfIPg628yL/nlWfeeD/g7eeZBf+FfM83/ptXdTzf2v8Qj+1aN/3dM+e4fG8/2C8/55/wCs/wBTXB6x4knmPnz19Uf8Kx+C32W40r+xLm2juvNjm8mb/W/58qsOH9l34O3fmfYbiSWSXyv3t3/yy/e/vfKr0aWdZeiPrVJnhfgPWPsYt5/+evm0QeJILO/+3Tz+ZJ/rIf8Arr/rYpf+/vlS19GWn7K/gCawj0qxvvsPlf6m787zP3tZ837E/hXUvLsdD8R/vPJl/wBd/wA9f+WVaf21l1Q0pVfbP92eP/DH4na54J/tDVfCs2pW2qSwxR6Pd6TrEtl9gl/tCKWKX91/rf8AVf8AoqX/AFsUVdPpH7U37RXwa0J/hn4W+Jmv6LHJeZ1fT9P1KWOK+/6ZSRRf62KX/nlL+6rubP8A4J++KtN0H7dqviS28yWH/lj/AKr/AJa1n/8ADIt9Dpl5B4jvo7mSKH/iW/vv3sUvmxf+0vNprMMqrf8ALw7cTTr4SqqbMP8Aac8bQeJPgj4f1Xw5Pcy6PdfELxHbaP51nFYyy2trp+gRWvm20X7qKXyv+eX7qvneHR9b17VLfStD0O91LUL+aK2s9O0+zlubq6ll/wCWUUUX72WX/plFX1J8Tv2b/FV58B/B/gDSZ/NvNL8YazqN55U3+qiuotKii/8ASaWs74UfDXx78EfjF4M+Ntzb31tP4T8R2Go6dd2mkf2l/p8UsUtt/o3m2vmxebFFFL+9i/dS12wxuX0jnjarJXMf9oj/AIJ/X/wa+F9n45Pj7TfEl5o2pRW/jW00mGX/AIlcssssX7uT/l6tf3Xleb+6/eyxRfvYpYpZfCPDX/En1TVJ/Pj+zy/6mKvQPBP7UPxa+LZ+JHw50TxH4juo/E+mxf2jpMWgxSxS2sV/FL5X72X/AET97FbS/uv+eVcfD8K/H+m31xYz+HL22uP+nuzlipfWqnsv356HENLK1j1/ZvwHD3nhu4vNek1WD/l6mlk/dUXss9l+4/dRx2tnXaeFPhL8RvG3ij/hHPDmh3Mmofvf9d+7i/1Usv8A6Kil/wC/Utdp4b/Yn8Y+Koo77xH8YvAGgWcs3lw3fiHxJLbWt1/pX2X91LFFL/y1i8r/ALaxU/r1F+zpm2ByTMcwwn1j2f7umeH3tn/y/X37uP8AdeTVzXjYmKP7DBJJ/wAs/wBzX2J4w/4I0fHDQvs8PjD4m+CY5LqaL7Hp0MOqS33leVFL/wAe32CL/nrF+6/1tbmm/wDBFu+17VP+Ec1b9qHTbaP7H5kM2neFZbmLyvK83/lrdRVp7OtVMc1y32WKVM+M/DepaV4P0b+1Rqv2a4uv3X7n/llF/nyqx/GE8GpRSTQQS/uofM/e/wCtl/e1+gH/AA6X+DnhuKSDW/2obmO3/dR3nm+D4rbyv/J+Wrk3/BOv9h/wTqlnBP8AHDxBrf2+b7N50OvaX/yyll/5ZfYP3X7r97/ra4vZP2vtDzv7Pqnidn9h02WO3g/1kv8Az1ovNSnglj/0iub/AOPOKSeefzP+mVU/7en02KOCex82OX/Uw18J7I+f9mzsLzUp7y18if8Ad/8APGaq/wDZvk3/AJ9jqsXmRf6ms/7Zqt5F5Ag8rzYf3NGm2c9ndSTz+b/35rWnTH7Nm5DZ+Kry6/f337utizm1yGL7Pb2Pmyf8tvJmrHhMBl+wzzyxyf6yarlnNfebJPYzy+X/AMsf+eVM09kbH+uht/PuJLbypv8Ant/y1qvpusarNf288/8AmKpIdSt/+YrBFZSS/wDo2ia8sYbX/R/Kk/fVj/18D2Rch17yLWOGxnl8yL/XS1JpupGG/wDP/tXzP3Pl+VFWHeT2OI7CeeSqcP2G8upJ4P3Ufnf8sZv9b5tSZanSHUr6aKSCC++zXH/PWjTvFXiOaKOxngj8yL/XVlzalPD5k9jBHL5UP7mo9B8STzS+Rq0H2byof3Pnf8tZa3pAdJ9jgmsPPnnk/e1X028/s2KO3gv6x7zU4JtUksbe+/eS/wCp/wCuVRw/62TSp77ypP8AntFSpGZ3mj3v2yXyPP8AN/54zV9PfB39iD9onxB8PdH+J2mfBfV7631S8ikhhW6sbPzbCXypftfmXV1F/wAspZfKi8r/AJZRf89fNr5H8IWGqra6tqUGq2Vtb6HpI1Cb7Xd+XLdRfa7W18qL/ntL5tzF/wBsvN/55V9tf8Ex/wBif4ZftKeO/EHxP+MMF1b+G/A1nFdz3FgfJea4JZghmUb1RYo5C3lkPyuGXvpClSni6dKUOZzv1ta2rbfofsvhvwlh81ybMc7xNeMKWD9ne8HOU3VclFRSa1biklfVvojvfiT8DfBt0mleDfA/ij4V+H7nMtvJqHiz4om1uPM+1S/6q2iEsWZY/Lk/1f7rzfL/AHnl10vgn9kDxVo/xt06T4nePvghb+F7HXv7Q1PShptheyy2sUvm/YIvtVr9q/6ZfvJf9V+9/ey15zq3xd/4JcH9pjwRqfhP4J+JLTwDpVtJBr1pe3LvaO+T9nb7I7yu8MZwXQOoYYHlttKycr+3d+0D8FNe+MUM37FGq6voHhqDTYY7uPSJZ9OsJ7lRtV7a0+TyFWNY0PyoCU4UY3N7VHPskyzBzcIRk4ySspavTdXitP8Agn6lifBPijivPsPRnGrQVSk6jnUo2jBqTSpzcakrTdrpXvZx035a/jz9qP4pWf7RuqeF4P8Agk22v6XL8QrrSYZbPwBpn+i6XFdiKLVfMl0H99a3UUknlfvf+XWX97yfK8V02GDxVoXn/A/xxL4t1SK8tbbUtDtIYovsEUv/AC1llu5fKii/dS09fit8UUumvl+JOviZkCNMNYn3FQzMATuzjc7nHq7HuayLTVtVsIfs9jqdxDHuZtkUzKMsoUnAPUqoB9QAO1edmHGOV46jyvCtS73X+R9Lhvop5nSnzVMwpv8A7hy/+SOL8bfALwP+zTdap4/8D6Ve2N5f3n2b/XWvlSxSy+b5Xmyyxf8APL/prL/qq1JvjN8Fte0aTSrGDxJpviCWb9zN4h1LS/sPlf8AXWKX/W/8tf3vlV0kfiLxBDLHPDrt4kkOfJdbpwUyCDg54yGYHHYn1q4vxD8foAE8c6wACSANTl4ycn+KvOlxHgK1K1Wi3PvdHVivotY/FVueePp2/wAEv8zi/Enjaf4J+KNc8K6X4x8P63F532L+1tO/06xuv+WXm23lf63zYpZYv+2steifsz6/4k8NXOmeOfDn7M9p4q8Panq9zZw6faw/abrRojNbeZ+9i/55xPZebLL/AMsofKri5PD2gSjEuh2bDOcNbIf6V6r+zB4A+M3xw+K+g/BL4TeKdTsJ7+7BEttfSRw2EKRqslywVgAEhjUcYJCIg52ivLy/M60YwprmlWvZSW930sfRZH4HYnhDDYmvmWPpTwsYuTTjJKEVeTbd+iPp3xxo9jP8ctc8La38N/ipZaLZ2sk8vi/w/wCEb7UtJikjh/49Y4rS1lll/wBbLL/11/6a1xPxN+E3g/UzB4j+AOqfETxJ4k0/U7C403w94s+FeveG7ExebF5stzc6raxRfuv9b/36r334hav/AMEw/wBlHxLN8Cfil4m+IHizXYAqa1qT+INQma0Z1RgshgmhjBClTtjRiNoB+YYrxj/goL+zJd/Bjwd4Y/aI/Zv+LvifXPhv4iiUxTXWvSzNp88oZ4ypO1hFIhZRuG5WRldsuor9Ap53Vy/AP2sY1p0/i5ZpuPTVW6dbXsfj/wDxD+lxdnGGpe2qYWOJ/gVK2HcKdbRNKEvaPWSjeKko8ytbVo+fbP8AZ7/bF8H6zqE//DL3hKx8Py3kUusXd38VNLvbmK1iil/0qK2+3xSyy/vf9V+6rwPxJ+05feKtG8Qa58OfFXhK20vRryWTTdWu9Huv9KtYv9bL9ml83ypf3sX/AH9r0208deN9PsptNsPGOqwW1wWM9vDqEqpIWXaxZQ2DleDnqOK5Q+AfApsG0s+C9J+yvIXe2/s2Ly2YjaWK7cEkcZ9OK8efG2Dl/wAuH96/yPsofRTzlb5nT/8ABcv/AJI+dbOGeGaO+sbH/TJf3lXIbzzrryDY+XH/AMsZqrw/8JHZxef9oi+z/wCs8nyf3tWLyaCa6/sqfzI/Nh/ff8ta5T+MS5pum/2xfyfv4pLj/pjWpZ6kbOX7DPBH5f8Azx87/lrXpHwl0f4V+A/C2kQ+Kdb8E2X/AAmXlS3mt+IbyW5utGsJbr7L/wAe0X+q/wBbLL5v72Xyov3Xlf8ALXn9S03Q9NupIJ76K5jim8vzopv3UtaYil9UVP2n/Lw7/q1XCYWnU/5+HJ/29BNLJBcQx3Mn/PKrmm69/Ztr9iNjbeXL/wAsak8SQ6VDdeRYwRf679zWHe2f2yL9/BJFH/y28mGuc5qn9wkvIdKmtJLGeDzPNml+x/vqki16eztbfyLH/R4vK/e1Hps19PLHBfQfu/8AprW5NoMF75fkfuvNqf4wey9qV9N1LStTv5L6+g/0jzq1PFV5pX2X+yoP3VxLD/yyq5eeD7HR4o7iex/6Z+dFVf8A4VjBqdr55nuftH+rh82q/ch/y7OXvPFX2OLyNKMsXlf+Raz4dS/0Dz54JZI5YfNhhmrpJ/B89n5n26x/5Y/62qcNn+9kvtVg8yS1/d0HCZ+mzWP2rz54JPMtf+eVahhvobWSDz/Mjl/1PnVH/Y/2zUI76xgl/df6mGH/AJa1saPo80P7++82O3/5Y1dPY19kXvhlp97dDUvDp8Sf2aLnSRGfNmljiv8Ayporr7L+6/6a20X+t/debFFX7M/8Ex/2hvhlrX7InjeHSv2fNG0g+AfDwfxELFgy+JP3FzIWlMiM25ljZT5jSAeYcYXCD8hPhL8M5/EOq/ZIfEdlZeRZyyn+1vM/e+VFLL5UUcUUsnm/uq/R7/glL/yab+0b/wBiv/7YX9dmFxFelmNCKja8anRO9o3/ADXzP3zw6yXB47wyzerXTbjXwVrSlFe9VlB3SaT92TSunZ6qz1PIIfiD8Gf2u/28fA0+kfs76L4S8Nav4g03T9R8O6dKwS8UyqrvJ5QjQMwOP3apwBu3HJPa/tFfAz4P6V/wVq0j4NaP8OdOtPC2peI9FS90KzV4rd1uEheYKqMPLUlz8qbVA4AArw/9h3/k8X4Y/wDY8ab/AOlCV9O/tKzzW/8AwW48NyW8zIx8TeHFLI2CVaC3Uj6EEg+xrwcK44rL/bVYpylXhd2WzTutFt5bH9a57GrkXF39m4GrONGlleIcY+0m7SjOCjK7k25JaKTbku56t+1f8QP+CeP/AAT/APHL6Tp37JWheIvFXiWMX97piWkRtrK3LMqlfPWRLYMyttihjAIUk7Rtz5R+xf8AstfBj9t74o+Nv2sfGvwmh0HwJpOoOlh8PvD0Nw6XVwIRI3zRFWO0FW8qFVDvIAFVRsfyz/gsDcTzft2+JY5pndYdN01IlZiQi/Y4mwPQZYn6k+tfQ/8AwSN+LOveK/2UvG/7Pvw38b6bo3jzTLm5v/Cxv3EpYSxpiTyZNwaNZU2uVUhfNBIyRu9aGIo43iKWEqwj7Om5csVGOso39L31dm7NnwGKyrMeGfByjn+X4ms8biqdBVq861R+zpVXFtpXkoqC5YKcY88Y3adz0Hwbp/wO/aC8Vv8ABL4if8Ertb8IeGr4NHp/ia58IpaGMpzH5r20aSWu4DG5ZGAJAJ2kkfnX+2Z+z7F+y/8AtHeI/g7Y6g91YWE6TaVcTSo0rWsqLJEJNuAHCttPC5K5AAIr7U+FPjT/AILYfEL4px/DvxKT4Xs4bgrqviHVvClgbS2jU4Z42VNtyeyrEx3Eg5C5YfGv7c1t4zsf2ofFOn/ED41WXj/Vbe8EVz4i09Qkb7QAIfLX5IWj+40SFlRgVBJBriz+dGvl0anspKSlbmlCMNLfDZO79badz6Lwlw2YZXxlWwix1CdGVBTdGjiK2JSlzxSq89SPLByV04895KzUbJNeSV9pf8EOPCthrH7UeueJLpXMuj+EJmtcRZUNLPDGSWzwdpYAY5Bbpjn4tr6U/wCCT/xn8OfBn9sLSZ/F+uDT9O8Q2E2jy3Eg/diWUo0Ic5+VTKiLu6AsM4GWHh5FUp0s4oSqbcy/4H4n6n4q4PG4/wAOc0oYRNzdGVkldtLVpJbtxTXzPEfjT4h1HxZ8YvFfijVzIbrUPEd7cXHnLtcO87sQQeh56dq+0vAFq3xG/wCCHniOz1xbg/8ACLa9K+mMIN2Nl5DL8vP3f9IkBbt83Bxz5n+1/wD8E2/2m/Dn7RviEfDP4Rat4h8P65rM17omoaRbiWJI5n3+VIQf3JQuUJfaDt3Dg16v+1toVn+xn/wTB8MfspeJ9bhTxn4q1Bb3VNOtSHIUT/aJtzKcBYz5EW7JDsp25AJX1sDhMVgquMqYmDUVCabeibbskn1u9Ufn/E/EWQ8TYHhzCZNXhUqzxWGqRjBqUoQpxcqkpRWsVCN4yTStdp7O35+V7t+wB+xrq/7YXxkTRNRW4tfCWihbrxVqkIxtiydlujHgSykED+6qu+DtwX+B/wDgnD+038Qf2crn9pvw9ommnRYbaW6ttNmvSt/e2sed88UewqVG1yAzq7BDtVsruu/sif8ABSP4y/sd+Cr/AOH3gnwp4c1XTL6/N6E1WzcSRTFVVm3wuhcFVUYfdjaMEDIPlYLC0cNjKU8xjKNN+9t8S6fJ9fL1uffcTZ5mWd8O47D8HVqdXG05eyfvpeyk9JPqueKvyp2XMnu4uL+AdN1Kx0HTPIng/d/88a6DR9B0TUrWS++wxy3H/LGWs/QfhjP9vt55/Lk/6617R8N/Dd98Pfg3qnjHSvH/APZNxqmvf2d9k+x/8f8A5UUUsUUUv/bz/qv+mUUtfS4bCurW9mf5WU6XtT4r/aLisfEmv6Pqo+IH23T7qGWObT5ZpY/Ki/1UV1F5v7qX/Vf8sv8AnlXsHhXR/wCzfBGjwT31zc/2XpsUf72b97/5Fri/g/4w0O8+H3/CR32h2NzqF15VtZ6td/vZbCwi/deVF/yyiil/1sv7rzf+mv8ArYpfYPh7p1j4w0GPVf3UXmw+ZNFXtZrhvZ4Sn/07O3E0qtWjTK+j6PoepRfv5/Nkihlkh86tzTdN8nS455545Y/+eNV9H+G8Hm/brHVfN8r/AF0P/TKtCz/sO0lj0S+1WP8A13/PavnPZVmcVPDVi5D4DsdSupP9Btv+mMPk1y954D/s3VPIgvrny/8Ant/5Cr1Tw3/ZVla+R5Fz5f8Az18mWrE2jwTSyX8EHmXH/Tas6dLGfYpmnsqqOLh/0OL/AJa/66ug02z+2Sx3wgk/551l6lpvjGbXreCx8Kx+XFD/AKn7ZF/ra7Dwr8PfjFeWvn/8IBLL++/587r/AONV2rLcxq0v4Zr9WXsvaHD/ABP8Kz2elyf6z91/qa8//sHXP7UjvrGxl/ew19Qab8DfjT4kiknvtDii83/U+bDFF5X/AH9liqxo/wCyX8VfN8++v7Hy5f8Al086KL/47XZTybMLfwwqYI8D8E+A9VvLCS+1XyraT/V2fnQ12E/wr0O8sJIPP/ef89a9I8Sfsr32m/v/ABH8R7LTbf8A1n+l6l5f/trFXN/Ejwr8K/hXoNn4yn8VS+KbP7Z5d5DomsS23+qill/4/oorqLzf3X+q8qumnkuK/wCXh00sNR9kU9J8P654D0i7m0mTT5rSe2WO5mudMhmmRijRYSadHki+WV/ljYBjh8/u4q9a/ZB0T9rTxp4K+JXhr9mPx41jawaPaDxRoaagsMuqJcm4WCKDcpUSubeSPdvj4baX2s1fIelftOS6z8dh8HtI+HmhRadqNvJKmqPrt/eX9uEV3Cgh7e1YEwgEm0ZsHhhX33/wS7+LHhzwND8RdK8d/Fs6BpsS+H7+2tp7krCB9veK4m2k7RuLWcLSjHliRS52la+J47xdfJmq9Ju8acWtbbuz+9bn9YeHOOeS+CeNxuBoU5zWLSfPBTTSVFq6e/K23H+V6rU+X/CviTWfA3iCDxnpnjdfCN/om+/h1a+EkTWssCmUR8YaORynlLnhXcbhgEV6x4J8SePfjZ8WLH9o34qftXeHbfW2Av5dZs/FVkt7BPFL5aRRosgWDbsdgoXaExgAcV8u/ttfE648f/Bfxt8X28PvYTeIX/tT+y7kmVrZ7m6STyX2IC5UybThRnH3R0r4g8HePL6H/io4IIo5PJr6XhDJ6OZYSVSq9pP3LvVpRaenVXep6fjd4hZzwxn+EWFS9pVwkW7Ri3ac58yu03yvlV43s7K6P0k/aj/aH8U/EX9r/XdF1zx3D4lkh8PDUta8TX+owuYSDEq4jgAVYwZBD5KKvlHL/cQqeE/Zq/ae+IjfEPxLrvhLVJtA1Dwrq4TQtZ0G+kjee1k8zbIJVbkyQmN8DAKyEEGvkKz8YeI9Bvtc8RweI/LuLrwfLJDNp95+9l83/Pm/9sq+hP8Agn7mH4GWd/rkF7c3Gs6lf6jeS3c0snm/vfK83zf+2VepmWT4DCynWlDXe93e/e99z8myDxN8Qs3pU8oo4hwhfk+GHJyWty8vLbltpa1raH3P4s/4Kmftw+NPB8vh3W/jnJYWLW2+7vbLTodPufLjIZyJ4oldfkVydpGcY6Eg/Ifgv4lfE/4janrEvh/4bXUllDfwxaRey2V0V1BfJ33Eit5eXEbhgzBQqblyTzXpOvf8IBo+jefquq+VJFDL/wAtv3UsX72vmv8AYz8YaV/wgeqfYdV1KOP/AIST/Uxf8tfNtYv/ALb/AN+qzwWHwub0pVa1Nz5duZt2+9med8Rca+HUqdDK8VCmqjvJUYwpqT7v92r2PZ9Lu/i3f2I1q7+H1zYWMqmSNtX0+SznSM7theKVgATtP3Waq48WeLDcBDY2qJjPmRIZtv3ByVk253FuM9quzf8ACLXn7/7dqUskv+pmrL/t7wb9q+wwfaZf+/Uv/tWuKWT4aXw4dfieRDxs8U4TnL+0JtLyj/8AInoXgz/grp/wW4+Hral4J0Hxf4U1DRbRGGm6vrBS9nm+cKcGZnmXAbgP1wdgbbXM6x8cP2pvjT4lfx9+054+s9U1UOYlhjtrm5klgIDxpHLJMvkfO8hEKQuAuSAGOyq+m/8ACudSlt5/PuY5PO/fedDF5UX/AJFrUu/DelQn7RBrek+Z/wAsYv7etZJf/RtaYqhjqkFRq0eZLZNya/M+VwviPxnleMnisvrRo1Z/FKFKlGT9WoJs7bQP27P2h/B3wUu/gH4f8V67H4SvEc3ukw6jEFETnLxpKsEksaNzuRWCNubIO458YvvjjpWi6i6+IPDGrQ2yLC5WyhiuHcPIQUDNLGmdqP8ANnGcV0sOvaUL+Sxg8q5ki/5YxXlr+6/8i1yfiTw3B4ktZL6/vrG2uPO8qGL7ZF+6i/e/89ZYq58PglXqRjiKV0lZXb0XZa6I9DL/ABa8RcBXqSo4503UlzTcYU4ucnvKTUFzSfd3Z9+fFrwd8MZdG0+/+MXwP8JfZ9Z1L7FD4h8J6bFoF9FdXX/LWWW0i8qX/t6ilir5P/bM+IV9+xb8H/HHwA8RwaJr+n39nFHqXlQy/aZYpZYrq18qWKWKWLzYvs3/ANqrrP8Agmb+3sf2hP2Vf7K+P0/9reKPC+pf2dr13q2sXUv2/wArypbXUJYvN8rzf+mv/PW182vhP9tLWPFXxs8Y+IPGVjodzoFvL4ktdOmils5baxuoorWLypYvN8397/o0vm/63/W/9/fv8VhsOqvtdkfFUj0jxh4k/YK8YfsteF/B3wr+Fd9bfFD+wbCy/tyWGXSYvtXlRebdS3P9q3VrLF5v72X/AEWL91L/AMsq9A/4Jy/DfSvip8OdUn8YT3NtcWs0Uemy3dn5sV1+6/e/8tf+uX/f3/ll/wAteP1n4S2/7NP7Pun/ABU8R30dt40v9eij0fwzd2fm21raxf637TY/6qX/AFvlSxS/6qL91/y1/deX/DH9pfxx4J164+w+Kv7S0PS7P7NZ6TLN9ttvKi/1XlRS+bF/qvN8r/rrXzGTYelW9p9Uqe0p+0/5eBr7E/QCb4b/ALNng+KSC+8cfvIv3d5FokMUssX/AF18qKWWpLOb4O2cselaV4O8U6lb+T+5u5dSiji/7axRSxS/+Qq8D1L4teKpovIvtV0nzP8AWeb/AGlpdt/6Nli/dVxepfEj473l/wCfoelRS/8ALTybTWLW5/8ARUte0/a0n+7p0xL2x9eWepeDrP8AfwfDLwlFb/8AP3Nr11cyxf8AXWKWw/8AatYep/H7wdoOqSW+lf8ACJeXFN5c0MPhWKP/AMi/av8A2lXyveax+1teRST2PhzX4v8AlpDLDNL5X/XL/rlWfo/hv4/Wcsk8/hW28z7Z5n+l3kVJLFVfjM6lOrVPsiH9pafUtQjgg+I2r2X77y/JtJtLii/8i2stR3n7QljNFJ5/jiXUpP3v7n7ZLYyy+V/yy820iir530H4V/tNandfYYPCuiRxyw+X/wAfn/LKu88Nfsf/ALSepS2cE/irwLY/vpfOi1HXorb/ANGy1SWL/wCfhqsOdppvx+g1KKTVbHSvEkflQ+Z5M3jzVJIpYv8ArlLLXL/E748WMPhyS+1zwBompSfvfJ/tGzil/wCuX+tir1jQf2AvjheeFv3/AI/8CSah/wAtprTxhYS/9tf+Pqsvxt/wTl8ca9F/wjmq/E3SJPN/dw/2d/pP/oqtJ03V/iFnznpv7XXj/wAN2sc/g7wB4Strf/ltFFpt1F/6KlruPBPxI+Jvx4jvNDn8OeEvMis5bn7JqNndeVLFF/rYv+Wv/LLzf+eX7rza9/8AAn/BA740eKfs/wBo8V2NtGf3gu5opfK/9FV9B/B//gh34j+GURn1P4laVLJJBLbzeTNKMxSjypesX/PKnTwdPuR7Oij8WvCjSW37d9rYXHheHR2S2u0FjbGZxHJHDKku95JpCT5ok7193fs4X/wf+GMurfGDxr5ms6rqSQeF18JtNHHazW00ouUuL0svmCzFxbxLLJAZJIvlYwSIWVuO/wCCrH/BMHVv2E/jR4P/AGjPhxrWp63pmopPZXGb4TzrqTSF0gIliz5M0E0o84GQiUymQgiEj5m0r9urSdTaHR0+F2p/25PqCW0Oix3StI2SVJztGGLGNVUgbiXJKhMt+fca5DiM2qPlXPDkUZ2aVrNvutNUf1P4S5/wVT8PsRkGcYp4eVSv7VNRbunGC0ajLVOGt7Wumr627n9szTvEF78A/F9hrXiG21HUvLT+0NVe7jjiupFuYzLN5h+QBsMwPTmvgnTfPh0byP8A2tX6L/FO1+BXj74W6t4Z+IOi/Ei4t750W1g0O403TGYxESMLiWZLxdu4DiME/Jkkxk14R4c+AP7IXhzRo5/FPwk+JF7J5Mvnf8XIsI4v+mX/ADBa7+FMV9QwDhUhPSfNp6JfoeT414jKuLuI8PiMrrRlTp0I0uZq12pSlpfW1pJapa36avwP4G2f9veN7jQ/I8z7Vpssfk/89f3sVfdmvfD3xH+y74Xj8D/Dn4m3OkR6Xpv76aKb7TFL5X72WWXzYv3X/LX91Xl/7J/wf/ZfH7V1ve3Hws8bXOmXQ8vw54Os9etdSubq6821liiuZPssUUtr5UVzLL+6i/df9cv3ux+294q1zwf8L9U0n+1b7+0L/wAq2m828tfN/e+V/wAsrT91F/1y/e/uoq9fMqv1/F06Z+SZJjK2QZdiJ0Kn7z2n8T/yc2NS8efGLxV8INcn+MXxw1e+s7/w3dSWcMsNrHF5vlS+VF/qv+mUX/XWvG/2S/P03VPHEE/7rR/+Ek8vR7T91/rf+Wv/AJC8r/v1XuHxO8H/APCVfC+T+yp/s1xdaPF9jil/dRSy/uv3X/XX91F/2y/7a11Hw3+Ff9m6D4b8D+Kp9WsbyXyr3WLTQ9S8zyoov3sUv7rzYv8AW+VF/wAta6cpqUqDqU4HkZ/m2YZrWp/XKntDj5tYsfJ8jz/M/wCeMMNcfDr39m+I7yfVYLm2j8n9zNN/n/rrX1pN4D+HPhWwj/tXxH8SLazi/wBTdw6x9mitYv8Apr/ov+f/AEbHeeDvgtFFHfX3xN+KP/heRf8AyLXpnjeyZ892evWN5FHPBfRx+V6zf/bf+uX/AH6qT+2LGGKTVp57aL9zF5Mv/or/ANpf+Ra9w1nR/wBnO8tfI1X4m+P5Y/8AqLeNrWSL/wBJay7z9m/9lDx5pcc9j4V8Sa3bxf8APpr1rLF5v/XWKtDkujxez/4lviiTz4PK+1eVJD+5/wCmX+f+2tSa/e32j6XJBYzxR+VD/qYYYq9UvP2V/wBnrTYv3HwI8W3377zJof8AhJJYv/RUsVU7zTfCvwxsPP8AAH7K0ttJ5MUcM2t6lFqUUXlf6qWL7XdS+VL/ANcqmqkZ+zR8b/DH4Y/E3Tb/AMWeOPB3iOLw/wCB/EeseZo83/HzLdWsUssUX+jRf+1fKr3TwTr3hX4D+A7zxVY65e63rksNre2cWt3kX72X/VebF5X72L/Wy/6qWKX/AKa1l/FT9mPwN+zf8B9U+MUGlW19/Zf2X/RP3sf+tuoopf8A0bXF+CfiFpXxI/Zk+IkMHhXRLK40bUrD7HNDDdSSyxSy/wCq82WX915Xleb/AKr/AJ615+a062KwtSnU/hmtP+Ocv4k+Lfjj48fErT/A9hff23rGqXn2Kzl8mK2tYov+eUX/ACyii/1taHw3/Zvn1L4v2fwk8Yzx+DbzWdei07XrvXIfs0WjfvfKupZYpfK8ryv3tcH4D8SeI/hv8S7P4jeB76Kx1jRoftNnNF5Uv73/AFX/ALVr1j9rP4qfEb9vvwdo8HwW+AN7qXjjS7OW58eXfhnTZZZZbWLyoopYoov+WX73/tl+68qXyvKiiwoUquAq0qeHp/uzoq1PZVT6w/aK/wCGZf2XfFsfhzSv2k9S8W6hLNLHN/ZPhX7NFF/z1/e/apYvN/6ZVY8BzfsI/E6xuNV1X9sySxuPJluZtO8WfD3zfKi/6a/6f5Vfm3o+veI/B+l3Hwr+LmlalpOsWF59i1LTtRhltr6wuopf3sUsUv8Aqpf+mUtWNNs/FX/CZaXrngDXLa9/c/uftd5FZS/+RZfK/wDItfptPh3I8Vg6fI/3h4H1nF0qx+wnhX/gmz8DvGGhR+MPCvj/AMI6/pcsPmQ63pPhu1ktpf3Usv8ArYrqWL/VRSy/9sqP+HcvhXTdUvNKsfjj9ivIof32n2mj/vbXzfN8r/l/il/5ZS/8sq/Lfw38QvjTo8V5/ZXgDW5P9b539naDL+9/7axf9cq7DwT+0V8afhh/Z994c+APiCLVLC8+06Pq3k6zHdWv72KX/VRXXlRfvYopf9V/yyrzcTkOEwtL2lPEHVTx1Z/8uz9HIf2CZ7K6k8/406v9j/562n2+KX/v19q/9q12Gg/sQ+MbPQY5/CvhzSPFMcX7yaXxD4w8ZabLF/4Car5VeXf8ErP2lP22f2hv2tNf+I/x++Heuaj4f0/whdW+jaT8R9Cl+y2uqSy6V+9topYov+fGX/Vf6r/tr+9/Q/4gL8YPGF9bXHwu8GfCnwvaCLy9TtNU8J3+o3s3/XO5tbqw8n/v3LXgVMMdntGfJHw/0bwv4K+JX/CAalZ+FYfFv9nCWHw94f8A2j/Fuk3OP9Kz/wAfX2qWX/j2uv3UX/PKWvV7/wCGvxr0+0eHSvC3jnQBJm4MulftWa8Y/wAD/Zcvm0/4/wD/AATR+BH7SHxJt/iPqug+ONE1q1077Pear4Z8Wx2xlHmiXrLY3Xm/8s/+Wn/LIenON/w5/wDg9efDTUPhJq3xx+M8vh/VIZY9T0mXxrpflXXm/wCtikli0XzZaFSrGvtaJPpHhv4+ywy2XiP9pL4reH5LX/XSw/H2wl/8iaroEUVV/EXw0/aRk8NXGqeEv+ChHxHeL/ltDqHxH0HVpf8Atl9kiir0n4cfsT+APgz4Nt/A/g3xHfW2nxTSyQ/a/wB5LL5v/PXzf3X/AH6iirch+Ceh6bFJPocFtc3Hnf8AXt5ta+zMlUPiv4hfsu/GL4nS/bvHH7V9z4gjihitoZvEPgO1l/dRf6qLzf8AtrLXF6P/AMEqdDmluNc0rxVpt9cS/u5vK+HsUf8A7Vr7svLP+wbqSD/hXNl+6/10vkxS1z/irxVYxX/nf8IdZfaJYfLmlhhitv3Xm/8A22X/AL+1w1MNoe5gcw9j/wAvD47vP+Cafj+90HyND0rwLL/zx/tb4S2Hm+V/18+b5tYf/Dtn4tzRSQeK77w3ZR/9Q/wTLLF/5Cuq+wNY+M199qjngsb2OSKHy/8AXRS1Xm+NmlQ/udVguZZP+eM1n5f/AKKiopYKjSOjG59mFX93TqHxXrH/AATr/wCFA69Z/Gme+iuby1hlsrObw9DdabLF5sUv/T1L5vmxebF5UX/PX/nlXj/xU+AOq/ELwHeeMYD4fi0/RryW5mtNc177Nc+b/wBO3my/vZf9b/11r7g/ao+M3gez+F+oeMfCvm215pf+k+bNZy+bF+6l82WL/tl5tcf8K/C3jHUv2ZNP8R+KtK02K48UeG/7W/ty7hikli+1RebFL/qov9VFLF/qvK/1VcFXDVauae0/59nWsRlz4ep0qtT/AGj2n/kh8n/tXWf/AAkng3T7Hw5YxSapYaxFJZ+dN5Xm/upfN/8Aav8A39q5+zr8SPip4V8Eaxof9lfYpIrz/icahNpvmyy+VF/z1/1sUUX7391/5Cr2D9nvxh4H+Nml/wDCxoPhz4Xj82G186LUbOK9/wBbF/rf9VL+9/5Zf9sq+jPB+g/CvwT8OY/Ef/Cq/C+iaxdXn/I2ajpulx20X/PKL/S5bWKWqy+lV9m6lQ8/PcPhMLmCp4ep7Sn/AM/D5j8K6x448SfZ77Vdcl/0XWIraGXTrO11K+i83/lrFYy3UUsvlf6rzf8AprXX+Nk+Lln8FbPxr/wk+p+fFqOZrC0s4opPKlii/e/uov8AllX0bpnxT8U+KfiLZ6SP2hPh3c3GqTfZrz+1vFWl219LLLL5X7rytav5ZZf+eX7qpfiJq/hPQIHcfGCa+Q3n2aaLSdb0zUgJfr5tr/6K82ufG6un+85D6rgqUcRisRGND2/tKfJyH57aD8fvip4k8W6fpU+ueKbbT5ZrX7ZqF3eS20VrLL+6/eyxf8svNlqv8SPjl4/03406x4H8AeMdW1a3sJvL/tC01K6i83/VRfvZYpfK/wDIsv8Aqq+uNS/aW/Zl/srUPDnjj4mxal4f1mH7NqVp4n0eWO2li/662kssv/LKX/nrXgepfCv9jubxH5/wy/aM03wvb395FHDaeGPt8nm/9dfN8qX/AMhV6NKrSq0T5vMsuorMfZ1MP7M8/s/HnxU1LxbHodxP4xikv5vLhtJtYupK6DUvEnjHQdAuIfGNjrem+VNFbeTd3l/beb/rf+estdh8PfDf7Oej6z53/DXt9rdxFN5d5Fq2j3Un+t/5Zf63/plXoEHir9lfTYpP+Ec0rSJLyL93eXf2O6l/5Zf89f8All/qpa2PExOHwvtv3dM+W/2ovFU/xg+Dd58OfB3lXNxfwxR/2jNpv7qLypYpf/aVeX/DH4A674P8L6h4VvtbltrfWbyKTUrS0h83/Veb5X73/trXsEPkQ2sc8EEv2f8A6Y1c02axvfLvoP3d5L+7/fQ18Hic6xlaj+8PIqVKx3H/AAT3/wCCafwk+OXxCvP+Ex8OXOpafpdn5k0t3N5Xmyy/6qKXyvK83/VS/wDfqvujwH/wTT/Ze+FeqXH/AAivwW8P2NxL+7ml/s3zJZf+2stXP+CSPhvQ/DfgjWPFV/BLc6hqk37mXyfL/dRfuv3X/bX/ANpV9SXsOh3ms8QeV5s0X72vscldV5dTqVAp1TyfTf2Ff2Xvsvnz/CTwl5nk/wCq/sG1/wBVXH+JP+CWv/BPXWLqOf8A4ZX8E+ZL/rptP8NxW3/kWKvojUpoMxwf8JH5n77/AFPnVXs/GGh3mlf6DPbR+VeS23+u/wCWsUvleV/39lir2/bqj1F7VFPwr8N9D03Ro9K0rQ/Kji/dww+T/qq2JvCt9Da/vtDi8yL/AKY/62uT0f8AaW+HOj69eWOq+OPD9jJFN+5tJryKKXyvssUssvlf9/f+/VZ95/wUI+BGj+KLzwrfeONIk+ywy3MM0N5F5Uv7rzf+ev8A2yrH63R6sPao9A03R7Gb/lhHFJVe7s9Vhl8iC3ijkryPUv8Ago1+yTo8cn9q/FT/AJY+bDFDDLLFLF5Xm+b5sX/XXyvK/wCetcP48/4KifCS88JRz+BtcvY7z7ZF5P2uz+0/6L5v7391+6/5Zf8AkWWKuerm+XUf+Xhn7U98/tjxHoMv7i+82pPEnxm0PR/LsfH8Ef2iWH9z/octfL+m/wDBVz4V/wDCGyX3jjwdqUeoRfu/3M3+t/df5/df9Na8/wDCv/BRTwr4ksJIPib8FrnUreKzij03ytY8qL/l682Xzf8AW/6qW2/79S1z/wCsWU+y5/aD9qfUXxo/af8Ahp8KvhpdePPGGoafpwYGPSLIT3Mlze3Qx+5PlReXFmL97/rO3/TKWvlEf8FUNc1LVPI8KfDnSdEjupv+PvXNYur2KL/v15X/ALVrP1j9t74H/wBja54csfg7qWpaXfzf8g/XPKliltf+eX/f2Lza8TH7Qnwkh8zSoP2V9Jto5fNj8mbUrr/nr/z183zYq4cTn9F/w6h00qtI0/if/wAFVf2hvAfiGfRrf4M/DiK7EEck195OsSg9P33lf2p5cUUn/XLvXuf7En7THxo/bM8GeK5r/wCF/gW11DQ4rHy9alW/jijkubmL919m+1fvPMjjvf8AVS/63yq+VdY+KngCGK8sf+FEeG5ZJbP7NZy6tZ3V79li82L91FLLL/z1il/7+y1c8K/tW+I/BV1ceI/hz8P9I8Jeb9l8608PaP8AZov3Uv2qL/prL+9ii/1tfM8S5xisVlfsMBU5Kh7mUZpl+Bqc9enzmx8R/wDgo18XPCer3Fhq37OmiaLeQzfaYdJ1fTdUi8q1l/1X/L15sv7r/lrXN6N/wVD+J2pSyWM/7L/gC+ji/efurzxRF+6/8HUtY/ir4q6548v7zXNcsdAvdQv/ACpNSu9W8K2sksv/ADy/eyxf6391/ra5efxJ4yml8jwrPHHHdebJNaaTZ2scUVengM/aoU6dU5cbmOX1cZU+r/wzP/be/bq8Y+KvC+l/Cux+ElloH9s/8TbUptJvLq583yvtVrFF+982WL/Wy/uv+Wte+fDD4neB/Hn7GX/CK+OPhl420nUIvhX9ih1HTtetZYrqX+yvK/exSy+bF5v/ADy8qvD4dS+NMPmfbviP9ht/Oi/5iX+qiom1LXLOWPVNV+I2r+X5Pl+bDeS/vYv+/td9TP6X/LumcFSrV6HoH/BOuHSte+A954q8Vf8AEk/sG8uo7OXzvLl8qL/ll5Xm/wDPWWWvqS8+Kk9noNx4V8Va54b1bQ7XyrmaLxPNYX1r+9i82L91/ra+H7PxV4Vs9Lkt/Ik1Lyv3f+p/1Vc/qXxIF5dSHw54Okk0/wA7/Xf8tYpf+Wv7qX97XA8/xdWr7OnTM/a1WfXHhb4s/s56d4it/GB+GXhK21jRtYik0e70n7VZS2ssX+qli+yXUX/LWr/xw/4KDfCn4o6zp8Hxg+Dlr4juPDp8vTZdQ/1v+t/dS/af3sv/AJFr4svNe8fzXX26x8K6bbRxfvJrvUbyX97F/wC0v+2taE3iTxVD/p8/2aKP/nrFXlVcxxj39ma4XNsxy6t7XD1D3zXv2nPgReeEpPA+lfs9XP8AY8v7yHSdO161trX/AFvm/vYvsv72vO9S8efA+aWPSvDnwPvraTzvLm+1w6Xc/wDth5VcPpvirxHrB+3WI8v/AJZzf6Z5X+qrYh8ieWS+vtd8yT/ljN53+qpLNsX/AAzPE5tmWLre0qVDc174qfDHw3o9xY+HPgDHpuueT5cOuWn2X7Ta/uvKlli/0XyvN/7ZVT1L4waVPFcX0Hwy1uK8uv8AXXeo+MIv3v7ryvKl/wBFrLmm8KmX7dfQR/aP+e00MtZ+vanBefuJ9K+0xy/6mWa8rWnm2MNKmIxbo/xCObxtoc1hHY6VY6lLcf8ALGaaaXyv/Rsvm1X1Lx5qtnLHY6VYXMtxLZ+ZN+582KKKrl5/of2PVfsP7yX93DLN5UX/AEy/e/8ATL91WhZwzzaNHqulT3373yvO+yQxeV/6K82Wub2dE1qUqJ6R4V/4KQftNaDoGn+B/hl4xi03S9Ls4rb/AIl2j2v+i+V/11illl/5ZVh+MP22P2zPHmqXljffFvxT9j8n99Np2pS23/oqvK7zxJfeGpY9K/sLVrnzf3X9nw/vfK83/wBG1oQ6/f8A2Wzg/sq5ik8mWSGXzvK/df8ALWKu1Y7FqjY5alI7DR/jZ8cPNs4P+F0+JLbyv3kPnaxdeVa+b/zy/e/89f3tZepeJPHGp2kk8HxGj8z7ZLJNd6heSyxf9NZfN/7ZVzc2mww2EYv/ALTbXl15X76a88yWL/nr/wCiq6DTZvOtY/sN9HFJ/wAsfsn/AC1i/wCuVefUq161X+IcVSmaGm2euC/+3fur3zZpf30UP73/AJa//Ha1NH02aHXv7Vvr628v/WTeb/yyrHs4dK8r7FrnjGW2kmm8zybT/lr/AN/fN/65VqQ6x4c0DWY/Pni+2WH728tIpvKiii/6a1w4hy7hUp0vYmheabY694jksZ9Dlit5f9Jhu7Sb91/n91Umm/ELSry/uLGCCL7Ra/66Hyf+mv8A6KrH1jXp7y/jn8OaVc/Z5Zv3M0P73/tr/wCRa0NBM/lW99OfMkuv3f76uHkvR/eFI1IdYn1K6jgM8Utx/rIbTzv3VST6zqusS/6DqsllHazS+dDdwxfvYv8AnlWP/b39m2Ek/wBhlkuIv3f2uGH97LUmpeMIJvLnn0qWTyv9dD/qqypFfwiPUvsN5FJYX0EkUf2Py4ZYof3V1LWGLyx021t/7cn1K2uPO/fQww+XF/5FqT+2L/xtdRwQfu/svlSQ/wCt/wA/89aLz4Y65r1hH/xNZLaSKbzP+usUUtd1L2VL+IOkR6beW+pSxz/8JjF5ks37m0/5ZRV0EOj6HrFr58+uSRyf6zzbTzfKrz+b4e/2bayTwebJqEs3mQy/9cv9VR9s1yz8v9/FHbxf8sv+WVaaVf4YzqJtNnH+g65qslzJ/q/N/wCWUv7qsubw3pU2qSCx/d+bD5c3/TKub1jWNcvPs/8Aas/l2f2OWO8lhmrPvJtVvJZL7wrP9mt5f9GmtJvNk/e1pTw1Y0sjpJtH0qzhjsYNV8vyofM82b97WXealrmpWskEEEX7qby/Kl8qpIfAfirWLDyPP+zRxQ+ZDqP/AE1/55fvf9VWfZ+A/Ed5dR6VB4c1f97DL/xNvJ/4+q6afsf+fgqf70ks/GHnX9vBpXl3Mks0sc3lQ1cmm86L/jxi8y183yfOh/7ZeVUnkwabF9n0rSrmS38n9z5P+trn5v7cs7HyJ55ZbyWby4YbT91L5Va/9ezOr7Wl/DOss9Y1W8tZLGCCXy5Yf+W0NWPO0n7L/qPN82H/AJa1j3kNj9ljvtKnliktf3d55s3meVL/AM8qp6bPBDLJBe6rbXv/AEx8797S9iCVU6C80b/hJbqOe4sYpZP+WMvk/wCqrL/4RW++3+fY30n/AEx/55RVJZ69PqU37i+j/ew/9dfKq5DrFj5UkE995cf/AC2/c/6qop4Y09l7U5+zh1z+1P7DnsP+mk1STTWMPWfy/wDlnDF5Nak32HypIL6+lubf/ljFD+6lrHvPDeqzfv4NKtra3/1kN3dzV0UsNVqhTw9Uz/CvxO/tj+z9c8caHHLHdfu4Yvsf+i/8sv8Apl/1yr0DUteGsWFwdV+HPl2cv+pllvP3sv8A8a/1VSQ6bf6lJcQarpXl28U376W7h/1v/LX/AD5VV7P4Y/2lqn9uaVqvmyf8sfJ/1X/22ip7E6fa/wDPwks/GHiO8Pn6VPJFH+6/5beV5UX/AEy/6ZUQ3njjUrWQarPbXNv5MXk+VZ/9dfN/5610EXgOxs5v+JrqtjbeV+88qGHyvK/79VJNDocNrHffbrGSPzvL/cw+V5v/AH6ri9qc3tTl/wCx54NBuIJ9K+zf9MfJ/wCWX/XLzf8AnrWHeeG5xo0lh5FlH/y0ml8n91/n97Xol5o/ky3EGh2Mfl+T5n2SH91LL+6/561z8P2HR7CTVb7SY4/+eNp51dFIa9iY+m6P/aQ/5+ZIpv8AQ5rS8l/e1qabpml6PFJBfz20sfnf8tpv3X7391L/AOiqrwzaVqWsx/2FP5scv7y8l/55RS/8tf8AprUc/hv7Zqv7jQ4tSs7Wby4fOh8z97/1yrnqU/a/uzGqdBo+vX39i+Rfzy232WaX7HqFp/qrr/nlVebxJqtnr0kGh31tLp9h+8ml/wCWsUVY/iTUpp7qPStVsbb7H/yxmtPN8r/yF/11qPw3qXhXQbD7DBqv2a3/AOfTzpbnzZf+etZ/2bRI/df8uzpIfi1feT9un0qOKOXzY4YvJ/56/wCqqnqXjC+vJY4L7wrLbSS/u4f3P7qs+88Yed5Z0qDyriX/AFP+mfvf+2sX/LL/ANG1n6b4wvv+P6CD95LD5nnXcPlRRRf88v8AP/PKilgaVL94M3NS8Varpthb/Yb6x8uL/ljD/rauaP4k8VQ/6Drn2H/ll++/56/uvN8quL03Uv7ei+3X/wBij/5ZzTTal5fm/uov+2vm/uqsalr3iPzZINVsf+JXaw+ZeTfbIv3v/XL/AMi1p9TuV7KsanirWPEdnYXF9ZaV/wAsfM/65f8ATLyqy7Ozn1L9xrn7q38nzPsl3/qvKl8391VzR5odNtY/P8RyyXkt5FH/AKX/AKqKKX915X7qo/G3n3lzHPfarL5cXlSf6n97/wAtaKVK37sPZ+1C80eCG6k/sqx0391D/wAsv+WVR+G5tV/tn/iazyxR/vfJ8mHy4qx4ryx0fRo/+Jr9m8r93N9rvPL82tT/AISqx+wXH9k6rZSeV+7m8mbza6af7oKdSxJqQ1yz8W+fPqtjHJdTRR2cN35svm/8tap6D4qg03Wbi+8VWNzFcf6vzvO8qKX91/zy/wCWX/LXzar/ANvQXksl9PBbfY4pvMs4pbP91L/1yrYh8SX+vWv9larfRxeb+7hi/wCWUv8Anyqzp08I6X7wdP2RoXl5pWpRR/YdVtra3/5bfvvK/wC2X/kWq95oE9ndSeRPbRf8tLOaKb/llWfo/hXydUt76+0n7FJf+VH9k87/AL++VWxeTeTYRweR+78ny4ZZv+WtaXo0v3Z03onN2cM/2CS+0O+/tKOXzf3sP7ytCDRvJ0uSCC4/eS/vPsksP2bzf+mVWP8AhYWk6DFbwfYY7aSWHzIfKm8qsvWNSn8VWv26D7dHH53lzXdp/rf+2UtafXkkZVMbSC80GC8lj8/97JF+7/dXn2aKpLyGCHQbjz77Tf8AnpNL50VSXnhvxV+8nsYI44/O8v7J51WNH03SprX/AInkHlSf8tprTyvK/wDIVZ/XaNWkZ08Q6pj6bqU95fxzz2Mckcv7uG7hmo8ValfeVHN9uijt/O/c1c/s2y0fy/DmlWPlR/8APa0h/wC2v+tqObUvJ8yw1X/SZLX95NLWftHb92Z3dI6DTfEk81/5E/m/Z5f9dL/q5f8Av7WhN4wnhsPInn/4l/k/8tv+WstU9N8E+HL2K31yfSra5vPO/wBd/wA8qr3nwx8OTXVxfar4jjsreX/l0hhlk/6Zf62Wtf3Pthf8vCSz1iCawt76DXJf3s0Xk+VD5Uv7rzf+WtH/AAkljZy28HkSxyXX/LHyf9Klll/5a+V/zy/dS1Ys9B8K2flwaVfSi3+x/wDHpFZ/6r/VRebWprF54OvJY4INcuftn/PL915X+f3VZeyCoY8/jC+0eL7P4j8zzLqHy/skPlebLL5VSXk0/wBgt/P0qKPzYZY/J/tLzZYv+mv73/P72rFneeFby/uNVn/0n9zL/pen/uorX91/qv8AW/8APLzf+/taGmal8OdelksbG+ubm4/dSed9jijii8391SqP2Qe19kY4s7HTdLkgFjbfZ4pv9TDZ/wCq/e/6rzfNqnpsOlHzNWsdV1K2vJbPy4f7Q/0m2irY1LWL77V/Ydj8P/8AiXyw/wCu/wCmX/XKqevTeHLOXz7GDypIpoo5ooYf+eX/AE1pqqrmiqe1OT1L/hI/3elQapL5cs3mXl3d2flyxRf9MovNroLPwrY6bo1vBffYoo/+YlN53/TX/wC1VqeFYbeztf8AQZ7m+uLryv8Arl/y1o8Uw2OvS+RfWH2mOKGXyZYof3UUX+Yq6FiKRp9YVIj/ALBsdSurz+yoNN+z/wCrh/4lv+f9VF5tZ/8AYPiPUZv+J5/ZtzHF/rorv/VRf9cqz5vDdj9vjg0rxH9ms4pvtPlfbP3vmxRRfuq6jTtYgm+z6HfQXMkcv+u83/P/AEylop4kjDVaLMfUp/Jmjg8K6HFcyfuvtn9o/uv3X/fr/PlVj2fxH8VXmgx+Kr7Svs0cs0UcNpaWfm3XlfuvNl/e10n9seDrO7vL6CxlstQimitvKmh8397/ANcqp2ej30MX9q2MEtzH50vnQzTRRRRRf9MvNl/df9/az+sM0qVP3pHoPiqx1i10++n8KxxafL5X/H3D/qvNll/6Zf8AbWti88jUr/z/AOy/Kj8nzP3sPmRReb/rf9b/ANcv/ItGg6lBqUtuINDktriWz8yb995n7r/MVakPhWCa/j+3fbvL/e/vZpv8/uq4ql/4hn7M5O8+FfhuGH+3INKtrm48mWKz82GK5ii/7+/9/f8AtrWPN8Jfsd1b6r/x42f2yWSa08n/AMhV1HiTwTBZ+I5L/Sv+Qf8AY4pf7O8nzfN/65f9+qNN8N33iSKSx0LQ5JbOWb/lr5UXm+V/5Fi/e/uv+WX+qrT6yKp/BOT1LwrBDfyWP+r+1Q+Z/wAtfK/6ay/uquab8N9K82OfVvFXlR+dFHDDNZyyebF/n/2lWp4J8BwWevSf8TW+8uKaKPytQs5bm2iii/55S/5/1tXIfB8FmY7iD/n88zyfO/exS0qlT2ZzVKdU0NB0Gw03Xriwg8R+VZxTeXqXlTVoXkPhXR5bfQ4J76K8i83zvO/5a/8ALKuf1LTZ/DfmarOf7SkuvKtoYZf3X+f+eVSTajB4ki/ta+nuba4tYfM+yTVx3rVWJOxJqXiTw3DL9ug/1cs376WaH91LXSabNocNrjSv7Nto/wDljDFZ15nB/at5FZweT9pji/dzWmnfu/8AllUl5qV9Z3UdjY6HJcx3UPmedDD+9il8r/47FXRUp+1onarVUdZ42+3f8gqC++0xxf8AH5F53/LKuHmm1ybzPsMFjbXEt5L5MMs1Gg69qsP/ABNYPCsscct5FHNdywy+b/qv9bVf+2IJr+40PSoIv9Amijml+x/6qLyv+WVaUqXshGhPNfWdrHpU8H7zzv3M1p/qq4/Xv7Vs/wDkY/Efl3Es3mWf2SH/AFv72ti8vLHTYpLiDzIriWb/AFss3lxS1Hr3iSCaKS+nglij/wCWMXk+ZL5td1PYn2p1l5qWqwyx3EGlXMUcsP8Ay2m/6Zf/AGqtDyfOtY4PP82TyfLvLvVpv3v+fN8qsv8As2+06/k1We+ivbeWz8yH99/y1i/8hVT8SfEixvb+PSj4bvo5P3UcM0M372X/AK61gZ+0NTUvDeq6Pax654csYraP/v3L/wA9f9b/ANtay9B8H32oy299Pfeb5U115P77zZfK/wC/v+fNomhvoftn2GCW5vPO/wCPSKGXypf9V/yy/wA/6qukmMF5+4gvpLa4/dRQxf2b/wAesX/f2tDEy9Sm8R6bdSQWGh+Vcf8ALbULuH/Vf9cv3sv/AF1/561JD4PsbyKSCxvpYpJf3fkxQ/8AkWrmseG/FdlF5+k/abm886KTzZpvNl8397+6l82uTh03VfCl1b+I5544tQuv3nlWk3/kKsv+XoHonhv7dNFHYQX0sUfnfvppZv3sv/LL91/qvK/5Zfvaj168vv7Vkt7HxVcyR2H/AC6afDFF+9/56+b5v/XL91XF+PP+EjvNZs9DsdD+3XEs32a8m/1v/wAa/e+VWh/Y+reCdLk/tXXLmyuP9XNFND/rYv8Atl/0yq/ZI6/+XRj+MPGE/wBluNDg0PzPt8Mv77T9S/ey+b/7Vq5pvg+fUov9O1W5ijlmlk/cw/urr91LWPPr39j6p/wkmh6Vc+Xa/u4dRu4f9bFFF/rf+uv/AMdqSy8bX15pfnz3F9/Zdr/roYoYovNl/wAxVOhw1Khl6be+FdHuv7VgsZJNQ+2f6mGaWW6upf8AVf8ALL/tlXSWfhXw5NLJY+KoPtMkv7v99eS/uvN83yoooq1LPUoPEkXneFRbW2oS2fmalNL/AK3yvK83/ll/y1/66/8APKqf9j3E3N9BFHbyzfbfNim/9q/9squp7Gx00v3RqQ6b5PlwaHpNz5f/ACxl+2f62Krk0PiPTbqTVdVnspbfzvLmh0+b/W/9dax4dG0rR4o7HRPFVz9o8n7Npsuozfuv/jVV/DfhX4t6lLZ6rrljYxW/k+Zeeb/rZaXtEaVMSamjw+KtNv455/sVtZxf8soof3ssX/PWrGpeKvDkMUlvrk975l1DL/x6f9Nf/wB1LUc2g+I9H1STxHY332nzfNtvJu/+WUsv+ql/e/8APLzaz4Zp9H1m80PSp5JP7Us5Y4bv+zf+PX/lrL+9/wC2X/o2s/Z+1pGftfanYeG7zQ5tLt76DxjF5fk/vorS8/eyy/6397RZ/EL+0oo54J/3fk+X9rmh83yvNrk9S16x0HVJL6C3/eeT++u/9VFLL+68r91/qvN/1VH2zSryWOe+0q5kuJbzzJv7Om8zzf3X/LX/AJ5Vz+zMqlU6C88YWMNhJpVjpUdzH9s+01l6PrGuXkUk/wDwisem29rNFJef6qPzf+WX7r/yFVOG8sYZf+JrpXm+bD5n7n/Wy/6ryoqr+dBDo9vB+6037V5vk/a5vM82X/P/AKKop0/3Q6dUjEPirTYtQvtc8SRy28U3+hw/6r7VWXp15rn9jXk9jY20tvLD++hh/wBbXSXl5e6x5dj9h/1X+uil/dRfvf8AnlWXo+mzw3cf2HwrbR3F15vnXc0P72X/AD5X+trRUvaUjSpTpVaJnw3muaPr1nPfX0f2eWHzPKlm83yqNe1jzvDkniOfSrmO3ih/ff2T/rbqL/rlWp4b0eb7VqH9q+FYvMl/1MUMPmebF/ray/8AhG9KvLv7doc8UXlXksc1p+9/1X72hU7HNTp1qRnz+KtV8VaF/bmh+I/sUl1N/rvJ/wDRv/fquf8A7S8R3lr/AMfFje3F1D5c3/PKWuw8STQaPFbwX2hyRXF1+7/ta0s4v+WtFn4Psr21kng0qK5vIoZfscsXmx+V/wB+q6aVSkFOozl/3+vah/asF99muIpvs32Sab/0VRqVnYzSyf2r4jkjk/5YxeT/AMtaseNvCt9Ddf2rPYRxSWv7v99N/rZa5/UpvsdrHY30EcV550v2zzpv+WX/AEypmlU9Q03UrH95P/pMn2WH/ltDF/36i8r/AO2/62rmjzWOpWsc9jB5Ud1+783/AFcvlf8AtWs/TdY0rR7WP7DP5XlQ+Z5ss3mS/wDXKqevXl9r2qW99PoflyRfu4fKh/df8ev/AO9/79f89a5aX8Y5vaM6DR/7chit5/7Vi/0qbzP+uvm/6qizvL6zupL791Y3Hnf6ZL+983/Vf89aj0eaCHWY/wC1fL8uL/U+dN+983/ll+6qS9hsYZZND8i+vbzzopJpobz91/0yiiro9kBYm1K+itY/OvrmO4l/d6baQzf8fXm/9Mv+/X/PKqcPiS+02L+yoPCvlSS/8uk03myxf/baLzWLGHy5/wDhHJZJJYf9MtLv/Wy+V/z1/wA/89a5/wASTDXrqPwrofmR3n7r/RNO/wCPX/lrLLLL+9/56/uqj2RodRDZ6tNoMcF99pto/wDp0m8r/pl/n/rlRZ3l9DLH4cnvv9Hi/dTfa7yX/W/vZf8AP/bKuf8ABOm+I5tG1TxHf30ctxLD5X9nfvfNil8rzfKlroJtNvry1jngnkiki/5a2l55X+lf9Nf/AEVRVKqXI4bO+s+LGDy7OLzf3s3+k+b/AM9Yov8Alr5tYfirx5rlnpdn9h8Hf8fV5/ocM0P72WL/AJ6yxf8ALKjydD02WSef93Z2EP2ma087/wAhRf8Af3/yFWxZ+G5/7et9V1z7Ncyed5dnDN/yyi/6a/62L/lr5X7qsv4RlU9rf3ynoGvedfxzjSpYpLqHy5vsn7r91/1y/wCeVSWfn3kVvpNjY/aft/m/6JD5Xm//AGr/AJa1Ys9S0rR7rz4L2WWTS7zy/NtPK8r91/y1i8391/01o1LWLGaL+3PPvr3/AJ87S782KKL/AJ6+VFFL5UX+qrpX72kdF6vsi5pug65DqFvY/YYvs/2PzJv3P/TX/nl/11qnZz65DFcQQQfbo/Oij8n7H9m/df8APWiG8/t6X+1dbsZJftX7z/nl+98r/VRf88qz9T8baGLC30OfSvLvPO8uaaaH/j1uv3svleb5v/7r91WdSkZ/xTY03xhq37uDVbH7D++8ya0u5vN8r915tbmjWeq2d/8A8Sm+uY7O1/0nUrT/AJZVy4+w6xLZ+f8AZvs8UMsl5DN/rYpfK/5ZeV/rfN82X/lr+6rQ03xVYaDYSf2VPH9n8n9zF5P/AMa/z+9oqfujP2fsmbk3hv7ZdW+q654j0j7PdTfZoZYpvNllil8rzf8A0VLWfqXhvStB+x6VfaVbaRJdQ/8AEyli8r97F5XmxReb/n/W1oab4wg17RrifXNKuYo5YYpPO/s3/VeV5XleV/n/AJZVX1g33iq61Cewn/0i182SzltIYvKllill83zf/jtJUkdtSnR/iHH6/pv9m6pJfWN9fRahdeVZfa4ofLi/1X/H15X/AEy/dVj+NtB8R+JNZ1DVbHXPNktZoo/Olm8vzf8ArlLXUa94Vnm0uPSvDnhzytYsPKj82K8/1sX/ADy/65fuoq5OGHx/qUX9hwW/2a4tYfM8mXTfN/e/88ov+eUsv72u6l7Gkg/c/wDLsx9em1X/AI/tD1ax8ywm/wCJlp8XlebF+6/1UVXIfidPeXUeleMtLlijlh/c+V+9/e/58qrkOg6rea9JBBY232eKHyvKhm/1tGsabBqV1JpWh65L/wA9POmhiop/vf3YUqftf3ZH4k8VeI7PWbfVbGe9+x/Y/wDj7ih/8hVl2ej+I5orfVRrllbfZf8ASZvJ/wCWsv8Arf8A7bVPTdZ+I15rMk9vfRW3+qjs/wC1pvKi/wDIXm11GpaPPqWoR+HL6xjjjl/12o+TFRb2X7sP+nZj3nxJ1XUrryLGCWSP9150v+tq54V8ea5qVrJ/bml/ZriK88yHyf8AlrFVOG7sbzULiCxn0ixvLWb/AJbf8vXm/wD72Kq95r2q+JftGlaHBFcyWH7v/RJovKo9lR9l7Mo0NY1KCbWI76+/e+b/AKn/AJ5f6quX/sC+1nRriCCe28z7Z/qpf3Xm/wDTWtCz0fw55Xn+OJr37P8A8tobSH/VRf5iqS88N+HNGuv7V0qG+ikl82S8hhh/dRfvf+WsUVZ06XsqJj7P/l4dRZ6P/Zvl6V5/+kedF53/AC183/tr/wAsqNN1j7Za3E9jBLLqH/La087/AJZeb5VXNB1O4hsI7HVbGxvbyKG6+xyxf63/AJ6+VLVjUofH+pRf2V5FjbRxQ2sv+ui/1vlf8sv/ACFXN7I5vZsNH03VbzRbjXNVgtvtEUMX+q/5dfN/1vlRf9cqy9B0e+0f7Rqv9u2MscvlSf6XN/rYv3v73/nr5v8A8arQ0fR/HGj695GuaVHbWcXmyebF/wC0v+etYepaxY3nijUL7xHrn7yL/l0hh8v/AJ610ezR2+yo0qJY16H4jXksf9lQSS2cv+kzajd/89Yv/wB1L/39rQ8N6P8AY7rz9D1W2triKH99F9j/AHsXm/vYpf8AVf8APL/tl+9rH1jx5BDpf2HQ4JLmS1vLqP8AdQy+bL+6/wBV+9/df/uqw9Sm8Vfb/t2q/YYpPJiuYZZofLli/debF/11i/5ZVpSpVapn7M9I8N6bBZy/bp/FV9cx+TLJDaQ+bFLa/wDLL/v1/wBNf+WVR6brHhzWJdU0r/hFZftHnRSfa5v+Wv8Anza5ObxhcWdrHBfa5cy3H73zof8AtrR/wu3xVeX8dj9htraSL935Xky/vYv+esXlf88qfsjSmdZZ6D9jlk1a31WX/SoYpPK8mL/Vf9/f3v8A1yqnrGpaHq91J9u1WKX7BD++8793/wB+ov8AW/8ALKWuLm1ifyrjVdVuI/Muv3n7nzZPK/5ev9V5v/PKKWsfWPG2labD/ZWlWPmXFh+8hmtP9Gl83zf3UUXlUeyM6p65Z+NvDnhuW8/tzQ7by7qz/fXcP7z91F/yyi/55S1qWd4fGGjR6XfeZHb2sP7n7JD5cUUX+Za+e7Pwr4j161uNc/4TjyvN82Pzpf8Alldf8svN/wCmUv7qXzf+WX72vQPh7oOuWdrql9feKvtMnnfZofN/5Zfuv9b/ANNf3sv+t/660ez9kZVP3RsaxZ+KtHsLfSr6C9ubyW88vzf+WsvlS+V/1y/56/8AXKpNe8H29ldfbvt0n+lf6N5V3N/y18qL/llWPN4l1WbVLfVf7cij0eLzZLya7m/9FRf9+qr3k3/CVeI4/Isbm21S183yftc3726/8hf6quWn7b2plT/jnWaDD/aXXzbH7LeeX/aH2OKOKL97+6i8r/nlWwNeg+y+fBYyxyfY/wBzN53+t/e/vZf3v+trj5odV0eW4nvtVjljis/Mhl/55fvfK8r/ANG1sfD37d/Y0elf2VHc/wDXKb/VWvlfuv8AW/6r/W1r/FNfafvg1LxJ4x17y7jSoJNS/c+ZDDDNFbSxf6397/01/wBV/wCQqr6lNq32W3vrfVZP9Ks/tPlS/wDbL/7bRZeJYNN0uOw/tW5k+1Q/6HNFN/rf9V5v+q/z+6qubPXLy1uL6xntrm8upvL+yTTeZ5v73zf9V/zy/dRUx/xixpnjDxx5v26f/j8ls5YprS0/ey+b/qvK/wC/tU9Y+IVlDFca5PY3NzHdWf8AqpZpYvK83/PlVh6l4kn8E6pqF/mT97/z6Wcv7r/nr/39/wDatGj3mueMLu4gvvKufN/eTTf89fKo9miSvDNPeRXGlf2VJFceT9tmtP8AW/uv3X73yv8Apl5taHhXWPDk2l2/nwRReb5sd59rh8qWKq83g/VdBtZNV/4SP/R/O8zyv+WUv/LLyv8A0VRrE3g7UpY/FXkRRXH/AB7Q3fnf6qX/AJZRRf8APKtP+XvtKZrSqX/hli8m0Oa1ksYPtN7ceT++m/55RRfvaz/Dd7faxo0f/CK33mx3XlSWf/2qo5pdVhlkg8+5l/c/ZprT/VebF5X/ANtqSHUvDmpRR6HpWh3Om3Hk+XDD5Pl/89f9VFR/FNfZe1K9n4D0q8lvL7VbGK5k/wCvyXypf+eXlV0Gj/Z4ZJINdt/Lt4v+mP7r/nr/AO0q0NBs9chikvtV0q2i8395+9qnqUME1/Jqt9/pMcUMsn+p83yv3sX/AMdrOp7akZ1Kdakcv8QrzVdHlk1Xw5B5kn72SGGKaWP91XN/8J5B9ljvvt39pSeT5k3/AEy/7a/8ta7iHR/Cuj6hcT+FbeKXUPsf2maGX93LLFWHq/g/wrDLcX39q/vJYf30Xkyyf63/AFX/ACyr0aVOlWO2lTpWP//Z\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCADgAOADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwf4teML7Xv2ltDvvItpY9e02XSdei/wCf+1tbqK/83zfK8r97/wC0v3teufsu6PBNf+LLGafUrazutSi1LR9Wmm/ey/aovNll/wC2sv8A5Cilr5z+Kk0Gpa9o/wARtdn83R9B16wj8ryYv+PCKX97FXsGj6lqvhv4j6h4b0L7THZ6poMUc1pdzf6q1iuv3v8Arf8Ar5ir4CliP+Xh+vYnLqqo+zOH+JHg/wDsb45/FDw34q8zTfsvg/xHrVnDD/qpbqXRZbqXyv8Apl5sUvlV3kPw3g+JF/8AETVfGPhzTbm40bQYrbTftcNr5sX2XSov+WV3+9/5axfvYv8Alr/36rzP9qj4tWPiT4+yeKrHwB5Vnqng+60GGW7s/Niv5fKurXzf9b/rYvtMX+q/55V6J4wvPFXg/RtY/sP95HLoN/baxqOnzRXP2qKWW6/5a+bLL5X+q/7Zf63/AFUVej7U8X2dq1M6z4kWfgfw1oOsar4H+FcVl4ov7yK5mu9O02Kxi0aKWK1/5ZRf89Zf9V/01iqn4b+w6PYa5BrnjHUtWk8Ufu/EmrRfZftX+qtfKli/5a/8fUUX/TL91/365f42fFr/AErS4PA99eya548vJdW17TrSaW5itbCWLyrW1/55S+VFcyxebL/qpYv+mtY+g+D/ABxZ6NJ4/wBVn1bTZNB8baDJpun/AOi+bL/pX7r/AJ6xRS/6qXyv3tbU9jhqVP4iPfdM8K+Nv2ivH3h39n/wLpB0+TU7rT7bTrC+CRywSIJZA1ywQmN0NxIZFUMU8oJmQx7m+2fjb4O8afsYfC2xudT/AGv/AIf3niqzu7eG48Oajo8pki+0Y8x08qd5nVVbeWkhAZcn5SwVuS/4JB6T+y/4k+PreOb/AMcamnj5Q58L+HZITLaG2azbzmE7iRndAXHLRlQoAMoY45D/AIKueGv2Srb4o6t4q+F/xX1vVPiFeeJLhPFuiT22+0tCg2kCQxx+WVKhVVTLuA5K4Bbw61fFYXLq+KdRSk5yUVz25Un0Sesv7r6H9C5NknDmf8VZTkKwTp0o4WjUqyWG5/bVJRTblOcXyUmrr2qVnUur6XX0N+3F8Q9e/ZU+BHhP4lfDf42+GvEGoauY4Xtb6xEi6rG0PN1ZiKXKRKAMhjIMSL+8zgN8SeN/29fjx8QNNutH11tIFrdlWlhgsnVd4xhxmQ/NkK31UV0H7Yn7F/hP9mr4J/Cv4oeH/HOo6pc+O9F+1ajbXtpGkcMhiimBj2nKqFnRNrbiShbcAQo9+8Lf8Ejf2btJ+EXhX9oH4wftH6npHhufwxb6l4lW4gt7cNLOiyRrDKxbygA6JsKyu7D5SCwUcmJrcQ4/HThQfs1GMW1z3STS1u/vfb13+myfJ/BnhXhbDYjNYrGOvVrQp1PqzU5yhOS5FCCe0lyxb3bW0dI/n/rmpXuvxS29zOYopmZ5IrcBVLHq2Oea5ib4a+H57r7Y811v3bv9YMZ/3duP0r65+K/7K37OnxV+OHhf4Pf8E9PiDrPi671eB21j+2IwltYKhyZjO8cR2qmWZQjdAFZmYIPbb3/gnt/wTQ+EOsWvwc+O37W2of8ACbzbUuTa3sNrFDJJ/qw6eTKtvwVOJZckENwpFeZHB53ipTvWTinZyc1ytvon1fp8z6zF47wgyqjh3LKpe2qRc1Rjh5utCEW05zp2vCN1o5fFvG6Tt+bXiD4aeEfEkKR6jYOJEtkg+0QzMjlFXaMkHGce1Y8PwC8EwqEW71Eqn+rDXKkp9Dtz+tfU37c/7E/ij9ir4i2Xhq/8Rx63outWrXGh6wlsYWlCECSKRMsFkQsvRiCrq3BJVfEK8qrWzPLq0qE5OMo7q599lXDnh1xRltHM8FhaVWlUV4SUbXW2zs000000mmmmrnn8v7Nvw+lXyzdakF7KLlMD73+x/tGvrH4Af8G8/hD4jfCzT/jh8ePjtH8PNA1m1SfTo76SN52RyfLaTzfKjiDrtdQHYlWGQDxXBfs4+Bh8TPj94L8AOkTJq/ieytpln27DG0yBwQ3B+XPB69MHOK+mP+C2vxP1rxH+09YfC/7cw0rwv4fgMFkrjYtxcZkkkwOjFPJXnsg9efZy7GVKeCq43EylNRajGN2k29dWtdEj884z4PyfGcTYLhrJcPRw860KlarV9nGpKFOFopRhL3W5zla72Sukz58/a+/4N/fDn7PXwzb42+C/irJ458GG6iM2q6bOqTwCQuqzMqq8bRb2Cb1kJ3OvygZI+WE/Yn+DcdyLpJ9YDL0/01Mf+i6/Vf8A4IxeJtS+IHhD4qfswa1eCfStV8Pm6tLO42vHE8qtbTkI3BDB4cjBHyD15+DdT0+40nUrjSrrb5ttO8Umxwy7lYg4IJBGR1HFGaYyvHD0cXhpyjGoneN72cXZ2b1sy+BeEMgqZtmXD+dYSjXr4OVNqqqag6lOrHmi5QWilFpqTWj7dXwXw5/4JseEP2j/AImaR8JPBkeqyat4guFs7dTfqkajYA0jnyyQiRxl2IBICkgHpX2jpX/Btn+yt8NxY6Z8U/29rTw5rsECmTSEktEjQHpjz5Y3cdcMUXPpXHf8E8/jRY/Af9rnwj421XS7i8tJ7ttNuorOGSWZVulMIdI48tIys6nYAxbBABbFfcH7Tf8AwRtg+Pnxx1j4xeH/AI8S6RF4ivvtd9p9/ohuXgcqA3lv5yZXIOFIG0YGcCvTyOpjcTl8qtOLrVFKzi58qUbaPdXu/M+F8UMm4OyPi6hgMU6eXYSdFzjVjhlWdSqptShqpcqjGz+HVvfVH5x/tm/8EQrH9jNYPGl341k8S+G/FEzW1jrunzKhjwFlWF0aMiMOqErtdwQjcjitf9h//ghxB+074U1H4gXvjeTwn4Fgkkgv9d1O4SWSby03SeVHtUFU43O7ooycbirAfY//AAVRvfDv7NX7Jfw6/Yi8PPqepPGUu5NZv4ZFVorfeDtb7jM0kxPlgt5aKoIGUJ+afEf7d3jTWv2L9J/Y007wZp+madYXZe+1iyndZL6ESmZY2jGFDeYxZ2JbfhflUgloxmNpZfm041qkuWMU+RSb99pe5zb28zp4d4MnxbwBhq+X4DD+2q15Q+sypRi1hoykvrCot8vO7JKGq62tquo1X/g3R+GM/wAP9Qu/2VP2sLLx/e2WTe6U9zbJ5g25VFmheVUkYxgKsgVTk5dQK+FfHH7OvhjwLp99OsOpRahpkjxta3Ui/I28K0TLtBHORjsa/Sn/AIIq/C7xnB8WNf8A2i9Q1eTRvBfhzQ7i11W/uH8q2vZWVXMTM2FKRIvnO2fkIizw9fH/AO3F498PfFT4n/EL4i+C7b7Nput+Iri605dgQmN7jKuQFXBb7xGM5bkk5JjE4udWjhsTC9Nznbl5m00mveV9bdGZ4Lg3KMvxGf5NiKVLFrCYZ1I11SjTnTqShN+zlyWi5JJTi0rpaPXb5ivLPzvLng82KS6/1NdZ4D8N65rHii4gsZ/N82HzIZZYf3Uvm/62WXyv9V/qq5PTYdU/dwQTyxeV5v76H/yLXrnwTm0O8v8Az9V/dx6XDLJ503/PKWWKKX/Vf63/AJZf9/a+kpH8x1Tyvxho9/ZyW+uQWF7/AKV5sfnS+V5Xm/uvKii/5a//ALqrGvaP53wbj8SQT/ZriKG6uZopbz/j6ii0+Xzf/IUX/fqWvTPHnhuxvPDmIPEkskd/5ttZ6f5MUkXlRS//ALr97Xk/iq8vvDfwq0u/vr77T9lh1my1i0mh8v7LLFp915XlS/8APX7LLF+6/wC2X/LKtTiqVT0DwfpvhXxV4I1DwB4j0r/kKQ39tZy+T+6tbqXzfKl/7++VL/2y/wCWtbngPxh/wuDRvhn4q8OQXNzrGqQy+GPFV3d3kUXlXXlebFFcy/8ALLzZbHzf+uVcf8K576G6/sq+nlis7r7LbXn7nzP3Uv7r/Vf89auaP4q1X9m/4vah8OfFWq/Ybfxb4k0vUf7Qu/N8qK6/tC1+3+bF/wAsv3UtzL/5C/5a15GGpo+yxuIrVf3hY/ai8N6H4Wl8B3FjBFFceDYbDSdS+yfur7zbWWKKX/0b5sUv/XWs/wCJPjyD/hEvEHhz+1f9D0uzitoYv3Vz9li837VL5vlf6qL91/yy/e1X/bZvLea1s57C3toriLUpY5pYZv3sstrLFFLL+9/6a+bWXN4J8R/HL9pHWND0TStS1fT7ryvEfiq00OHzfN/0Tzf3vlf6qXzZfK/6Zfva6aX732h5uJdKlVpsp/s6+KrGz8R6x/wlWlXP2yL95o/2SH/j1uvN/exf9df3UX+qr1jUvHmq6x4j0vw3pUH2nUPEd5YXtnNL+982KwuopfN8qL/lrLLYyxf89f8AyLXm+pabP4wu/El98OfhzJLpcXiT7N/aGrf6D9l8q1/1Xlf62WWLyvNl/wDRX72vVv2b/gx8P/EngyKw8SaPbpqF5qF2mvXV1N+9Mo+yy/6qL/VRRSxeV/z1/e+b/wAsvKrtp+2SPKqRpylzrqfWX/BKHwrqngj/AIKEeG/Ces3sNxc2FpqcUk1vHsjYfYZsbFydqgEALk4AAycZrzD9uX/k8f4nf9jtqP8A6Paj9lH9obxd8AP2gdK+OWjeDH8T3WlQGK40+a4mLSwyRC2P7wb2RiHVVZgwDMo2ngVQ+OGnfGj4p/EjxJ8afFHwe1nSzrupz6leLFo1ytvAZCZGw0gPygZOSegJ4FfA4vEU8Tl0qdNNt1Zy2ezStr+h/d3DGTYvIOLaGJx8oU4Ry7D0HepC/tYSk5K172S+1az6Nn1R/wAFVf8Ak0X9nH/sVx/6QWFaX/BVTxTqcX7FHwC8M2jCCx1LRre7uLaJm274dOtljHJOQBO/XJ6c182ftYftoeJfj38M/APwh8ZeALDw7/wr3RfI877RKJLlRHHEJCkmPKTy4o8g7juBbcA20WP2l/2ufHf7Tnwb+G3gLUvhZBplh4L0g2tlqlm00i6jtSOLeu75VUJFGCuXO4MdwB2juxmYUZ/W3C/7yFNLR6uPLzLbTZ+p8vw5wtjsK+H44h039UxGMqVF7Wm+WNV1XSkrS967lF2V3HqlZnrf/BDvUvCdp+1LrVhrFpG2p3XhKYaPO8ZJQrNE0qqd2FJQZ5UnCnBXkN6T8cf+CjnwB+G3xg8R+BfiZ/wTp0ObXdO1eaLULm/Fk0t0+4kTlmsyWEikOGydwcHJzmvhD4V6t8Yfh/4307x58JY9bs9b024Etjd6XbyF1bupCj5lYZVlOVZSQQQSK+5rL/gqzr1zBY+JPjV/wT+i1XxjpSYttcjs2hERDFkMfn20ssGCc4Eh5yRjOBjlefYKjl6wc8RGjOMm7uKmpJ+WrTX5aE+IHBVXEcbTzuGD+v061KMPZwxTw86c4Xs0+eKlTkrXWrUryS7+cf8ABVH44fHL4seHfAFp8Qv2Yr34d+Ho7WS70L7ZfrcNcmRVXYfLCpAURV/cuokUHJADYr42r1b9rH9qP42/tY+O18dfFgNawWsfk6Xo1pHLHZWCcbvLR2b52IBZySzEAcBVUeRnULASCE30O9jhU80ZJ9MV42aY2nj8fOtCbmnbV2TdlbZWS8vI/WOAMpXDPCeGy+tTp0Zx5m4U5ylGLlJyspVJSlJ6+87tOV7aWO6/Zw8cj4afH/wX4+dogmk+J7K5lM+3YEWZSxJbgfLnk9OuRjNfS/8AwW1+GGteG/2n7D4nmwY6V4o8PwCC9VBsa4t8xyR5HVgnktz2cenHwz4z8e6H4Ehgn1tJ2W4ZhH5EYY8YznJHrX05+zv/AMF8fDfgr4Yad8CPjv8AAu3+Ieg6PAltp7X8aLcBEJ8tZBKJY5Qi7UU7VIVRkk816WVKnicBUwdZuMZNSjKzaTWjulrqmfD+IWax4f4vwefYGVOrWoQnSrUJVI05yp1OWcXGUvdTjJJ2fxJ6NHvH/BGLwzqXw/8ACHxU/ad1myEGlaV4fNraXlxtRJXiVrmcBmxgKEhzyB849OPiXw74L+I/xg8S3sXgPwLq2v6i4kvLqz0HSZLh40LZZzHCp2oCwGcADIFd9+2H/wAF1NO+Pvw4PwM8D/CoeB/BRliaXT9LiV5Z0jJZYmZTHGsW/a+xYwdyD5iMiuc/YR/4LXeDf2JE142PwzfxJp/iIJ5sDMttcQzw8I3mqJMpiU5Qjqcgrzu76+CpV3h8EnL2VPmvPlerlq7R3tol+h8rlPGsstp5vxM3QePxbpKnhnWj7tOkuRKVX4eZqUptKyukubXT6U/4IgeE/Des/tU6zrWuWiPqGi+FJ5tKEsqgxSvNFE7BCNxPluy5HChiD94V4d+1R+0P+0L8Qf2gdf1z4jeMNc0/U9M164is9KW/liTR/LkKrDCgIEe3aBkYLEbiSSTXk/hv/grTf+DP2orv9qHwbbzWfiS/1O4vru0tdIT7HIs5JlgaPzMmNgcHnfn5t275q+nbf/g48/ZL8dSQXvxl/YW07XvEijybnUPItnDFP7vnwyOi9cKXbHrWuHwMsTlkcG5SpcspO/K2pJ2s3bVNeZx5rxrl+TccVOIqdOhjVXoU6fKq9OM6Eo354xdRKMoTbu3Gzb3S1v7vrfivxf8AtD/8EX9V8a/tBJNeapoV8p8Pa1qE4We9EN1FFFcF5PvuRJNCT96QIeSzZr5d/YY/YY8b/ti+N3d5pdI8F6RKD4k8SMgAQABjbwFvlaZl55ysane2cqr8l+2X/wAFutV/a18PwfDdPBreG/CNneebFouk2wkeZowwQTSsy7gm1iqoqLkgkEqpHrPwB/4OIv2cvh98DNA+BGo/sgSXVtHpRtZ7SwuYYrS/U53u8EkcmWkyWfczbmLEnnA6p4DD5hmNN4jmcKcEruLvUa72u0teutvvPAw/HOL4R4NxccnnQjisZialRU4VqbjhKc1HbmcYTkrNpR9xSd2rLlOm/bm/bq8D2PgYfsV/sY2ltpfw70qA2erarZqGOrkNl0ic5JiLgs82d07EnOwkyfD3j1WfwleKpGSE+90++vX2r7ZH/Bbv9h7eYm/4Jq6OJBjdGbfTNyg9Cf8ARehr4q/ac/aY8B/tB+N/EXif4L/B628PQ6xexmz8O6WGNnaoWjyWkQ4UkHJWMKQT8sajpyZhl+KqY2niHU57SS5VGUVGKfS6tZf8E9Thzj/hXB8G5hk8aCw7nQqydSdelVnXrTg03Nwk5OpNu92racqsrI8b+2f6f/av2GTy4pq1JvFUGgf2hBYz3P2e/s5Y5pZbOWP/AL9eb/1yiqnZ2d99gjngvv8App5MP7zypa1LzR4bzw5cWMF9HFcRfu5oZv8AlrLL/wDva+nP5eqVDY8N2dj4kureDVbHUraz+x3Uk0MU3lRRReVF5ssX/PX91Fc/5i8qvJ/2wNB8K/Df4jeKND8HarcyaXFD9mm1H7Z/pV/dS/vbr/tl5v7rypfN/wCWVe6fA3UoNN1mz0PxH4Hubm48OTfYv+Qb5v8AoEsvlebFF5X7397L/wCQov3UssteX/tseMP+FnfEuz0rSp4r37BDYaTefa4fLtYr+61XzfK/79W3/o3/AJ61oeaekeD9Mn037PpWhz+beX81rJps0P8Ayy/z5VU/2ivCuleKv2edU8VfbvM1SKa11bTZvO/exeV+6l8r91/zy/5Zf9tf+WVY/wAK/iRrnmyWNxPbR3Fhef2LqVpD/wAtZf8Apl/0y82KLyv+utWPip4k/wCLc+LNKnvraxktYZYoZbTTf3V1LLL5vlebFF+6/wC2v/PWvm8F7b62fpubVKKy/wBoU/2lvEngDxV8KvAc9jqv2nxJdabLe+MP3MXlWv277LdWsX/XLzZbn/lr/wB+v+WvefsB/GDwP4D8ZfEyx8R+HNN0SPXtBsLnR4v+Wsul/wBlS+V+9i/1UvlSxSy/9NfNrxvxJ4J8K6x+y14Tg0P/AELWP7Yl07xhd/62WWW6upYrWKX/AJ5SxRW0v7r/ADLsa9eaVpuqeMPFWlarFY/2ppv23Qf3P737V/pUUUUXm/8AXzbRf89f3te1T/dVj4nE/vaPtD6s/Zq+G99efsg+G/EfjjxHJLrmqalFq2m3cvlSeb/acUsv/LWL/W+bc/8AkKvWv2YtN8IaxaeK73xD4b0mO98OaOmk3d19k8zzZfsdrL5v/bLyv3X/ANqribPUtK8rS4PgtpWt3Oly2drpP9n63pt1bfYPsv8AqvN83/lr+6i/z/qovhN4x1a8fxj/AG547ltLjWfGLXM1xqB8yWOL7JF5Q8v/AJa/uvKi/wC2VejHZnkw9tVrR9V+ZP8AsIW/hi/+MOoaT4wghewvfDF3BL51v5oXc8XIXueK9+0f9sCfwfa2/wAMvj9YxRahFqX9nTXcN55sV/axRS+bd/6qLzf+mvlRf9cq+SP2f9YtNC+MWhalejdGly+Ylj3tIPKfKqvc4yfYAntXsfxO0D4ZfE218Sf8J/8Avbe6h+0+G9R/1kv2qKKWKK6/dfupfN82KX/trXznDVbkyq395/ofuv0hKFKp4jtz/wCfNP8A9uOX+J3w9+EmvfaPFXg74qXNzcf8fNnDLNFF9qtZf+WUv/TLyvKlli/9FVf/AGYPhb48vvDVh4D1hvMeGaW3tLWb95LFFFL/APbf9b/0ypnwB+EvwO+LWs2elWOh/wBgaha6PdSXkNpZ/urC6i8qKXyvN/1X+tilil/55eVX0P8AATwJrd38SDDCsZeKbyzdQweX5v8A01r5PxHz+vkuSe3pHzHA+HwmEhicTP8AiUzvv2X/ANjfVPBepv4i8TjyHt5vMhth0kpP2zdc0vSfC8mh2UoGq3EP70Rf8so6+pNH0GeKxeOTfuda+S/jP4C1XXPjVLb6z84MnmQ1/IuP/tLEZjh8zzD937TnOzh3P6ufcT/XMfV/h62PjP4qaabPQbiC4/1lfPOq2Hl+I7V9vS6Q/qK+z/2xvDem6RqsVjaReWfJ618keJrDy9ehf0nU/rX7NwjjPrWFU0f0rg6yzXDYXEr+aP5o4X9ov/kFaefR5f5LXid5NPZ2snkf6z/ltNXtH7St5DY6Np1zPO6BZZPli++3C9K8P1iGeGw/f/6yX/XV+wZXU5cNY+A8WqMsTxfXpx7Q/wDSImPqV5PrFrJYzz/vJfKj83/llVzR/B+qz6XqH2GD/lj5k37797+6l/5a/wDkWsubQb+awkvrG+8r99FVjQde1zw3dSf2rPFJHdWcttDN53/PWKWL/wBq19JS/eo/CqqdGt7Mj1jTRZ3UcEE8ckfk/vvJ/wCWv/LX/wBq1j+D9SsdN1mznvrD7T5WpRR+T/21rYhh/wBK8++8vzIvK/c/89a4+HUoLO6k/wCmV5FXdSPIxJ3k0M95YXn2G4/1sPmQzf8AbKtCaGx0fVLi+8RzxfY/Ji86L/lrWHN42sdNit4L797J/q4Yov8AnlLVPXviFoevS29vfWN7/ZfneXefZJv9b/8Aaq6aVM8zE1D1DTYfFWsaDH4x8RiW28qH9zaS/wCtli/6a+VXSfD3WZ7OKODSbH7FcWt55n2SLzYv+WX72uP8BwwXkVx4csdcl8u6h+0wy+dLL5Vr/qvK/wCmX/LKuk8N6Z/ZuqW5gn/0iK8l/wCWP+t/exf/AG2nU2M6X/PwueKte1XR/EeoT332ay0/VPKk02byfLi/6a//AB2tzQfEn2P7P4jnsba5t7rypJprv/VeV/1y/wA/62uT8X2fjG8ik/4Sqx0S9t7/AP13lTfvf3v/ADy/df8AXL/trVjwrq8GsWtnoeq28d1JFeS215p3k+XFFF+6ii/1X/TL/wBFUGdU9A+M3jbQ9H8Gx+I/B08VzJdTeZeRfbIpZbWKWLzYv+mUUsUvlRf9NfKryv4/eKZ/GHxp8F65rtjFon2rWPDkl5FaQ+XFdRebdf6V/wBdf9b/AN/a7z4hXd9efD/VLHQ/KkjtdHiubz+0f3Usv/LXzf3X/bX/AJZRf9NfNrh/2iryx+Cfjfw38RvA8FzL/YOveF72bTpof3v2qL7VdeV5Ussv/LXzf+mX+q/1vm+bLocpX/t7/hCbq38R2NhcxyaDNLZaxFDNL5str+68qXzf+mUVz/5K1qeNhPDFpdxfTxXOl6zNFJ5MX7qWX97F+9i/5a+V/qvKoms9Khl8L+I/sMv2e/8A+JdeRf8AP1FFF5sX/oqX/v7Xn/8Awkmq/wBs6H4Hvp7axt7Ca1/s2W7h/exRS+V5Ussv+t/dRRRRf9cooq+fy399+8Pts7/dKnTOk1jxvpVno2oT+f8A8TD/AIXBa6tZ6f5MXlfZZftUv/tKL/Vf/Gq7Dwro2leKvjT8Jz/y8RfapLOKGbypZfKi+1Rf+RYoq8jh1ifWNU/sP+yo7m8uvGGjXPned5kv+ql82KL/AK6+bF/36r3DWfDcGg/tN/DfQ/A81jJcRQyxw3d35sX737VL5Usv/kKvT/5engv/AHU+iP2ipp/Cvw58N6rpVjJbebNFewy3fmx3P+tl8rzZYv8Anr5v+t/6ZRf9MvK5T4K6xP8A2J4n8KQxS61capquj3sJmm82UeUIpZfNlrnvjl4x8VQ69b+FfiabaLyrOW2+16TN9ptvNii+y+VL/wBNYoov+Wv+q/56y/62ub+Eviy38Ta9qFpZNcPJe2drb6bGf3kkkXlXXmxfuv8Alr5UsX/fqt61XQywuG+H1X5ncx6te6FrmjazYSW6y2+tWpRrrGxWMgVXOVZflZg/zDHy12c3jDxjoGq2/hXVZ5JdLi/ealLFeRfurXyovN/1sX+t/dReVL/39/55V554sfw/Dpf2vxOk72cLFpYrZ0SST5GAVWfhSSetev8AjC80qHRtQ8H/ANlaTqWqa9Zy22mzafpsUn/PKLzYv+ussVzXzOQ1OTLfmz928d6fP4kR/wCvUP8A24x/hv8AGa48E6/oeuaHfRx291Do2k6lD50XmxfuvK8391/yyl/1X7397F5Vr/z1/dfqp+xb8Or/AFPTm+IOo2Plw3Y32Xnf6wR18W/sNf8ABMzw18XfA8Hxq+ME8kVhqdnDLpNrpUpikkl6yyyev7wH/Wf6zvX6g/CjQdI8FeDrDwxYw+XFawRxxY9q/PKuY5VxlxZTynET/d0/fqf+2f8Akx+TZ7mGFyzKqmEwn8So/wB4dHNZw28Rbyx930rwLxL4WhufE+peJtS+5/yxr37VLqKO3YA9jmvIPF00UVjdTOfk8mXNfm30m8RhsJVy7D4K32//AGw+U4YqVadeb6ux+ef7XOojV/G9x/zztf3cVfJXjyVz4lgFu29ftCbj6DNfWP7SFn53ijUOP+W3WvmHXvD7Q6rc6nawSRwQMILeE/8ALUg/vJf8/wDPKtOBJ0sPl1Jdz+5clo1J5TgaVPpKL/FHm/xvsUvLOxcQb5IxN5ZX7y5VeleG+K7P91/qP3lfQXxW8qPSYbl/vRu2z68VxPhXw5od5rMeq33jjSLb999mm0SWzupZbqKWL/VfurWWL/lrL/y1r9ewNeMKj5tkeR4m0of6w1ZLdqP/AKSjxO8xDYeRD/y1hrL1LyIPMsZ/+WX+ur1S88H/AArs7+4g/wCEj1u5/wBM/c3cOjxRRSxf89f9bXB+KjodldSQeFZ7ny/+WMuowxf6391/9tr7bDVfao/nnM7Umc/rE1joNh9u8+WWO1m8uab/AJ5Sy/6qL/2rXB6leT3n78T/AOtmrsPEkOdGuP3H/LGX/wAi1wejw+d/x/H9350VetSPkqp6Jo/w30r/AIRePVdVgkk1SL/SZrvzv9V/0yrtIfhX4N1LRo577So5bi1h/ff2dD9m+1Vn2epT/ZZIPI+028sP76ug8IfbtS0uzgNx5X7mtqex5uJOXvNNn+FfiO38Y+FRLHpf/L5D/wA+v/TX/rlXomj+KtJmuv7cggjkjuoZZJvKvP8Alr/mKWuP8SeKoIb+TSr6DzfNs/Lm/wCmvmxVz/wxvBpuvXnhWee58ywmljh82H/ll5tBnS/dfuz0TXodcs5f+JVfebJdTf8AHpL/AMspfN/5ZS1n6Dr0+j+Mv7c1WD7NJL+8mtP+esv/AC1rQvNfg1OWOeCf93FeeZDFN/rfNrk9Y8SX15dWcH/COS3P2Cb99FDD5v2r91/zy/7ZUU9gqbnqnhvw3/wlWjaxb65qmpRR/wBm3Uln+5/5ev3svlV5v+1RNpU2l6PPpWuW1zJpd5LpM0v/AC1urW1l8211Dyv+WXmxXMX/AH6lqPQfGHiPwra6hf8A9lalc2drpv2bUrS7s/N/ey+b9l83/nlVP9oXxh4c8eX/AIg8Y6H5sUf9jxXP76z/AOeuoRS/+3NdBzT/AIx1mo6x/aXw40efSv3t5pdnFczf9df+WsX/AH6/5a/6r97XP/GDUvDmsapp+uQWP2a3imij82KGX97a/wDLWXzf9b/yy83/AKZV3HwB8SeB7P4q+INKvrG9l0uXytRs/Os/K83yv+Pr/W1yesWV99g/4Q6CDypLD+1LLyv9X/osUUv+t/7ZV4GFqeyPscdTdaj7Q4/TZpofiPp89vfRRyRQ2tz5sPlXPleV/wAtfK/5a/8AXKvWNN+IWqzftGf8JHYwRySeHLOWPyf3skUUvm/8sv8AVf8ATWWL/VV5/wCJPDeuWfxVs/hzrhjstc0HR4rabUbS8/1v+tuopf8Av1LF/wB+v+mtbHwf/tzwr4j8SQfbvtMktna23nTf63/pl+9/56xV21HRPFw9KrVpHsnxb8Yf8JtFZzwf2RbSeTa2UP2T/lr+68rzZf8Apr5tUPhhb23h7xfdyR6pJZX5s5ZIpYv3n7yKWL/0bW34D8B32jaXp/iPXJ4r2zim8zyvJl8qKw83yvtXlSxfvYvN83/v1L/z1q9498F3PhnXrHxppwtijXFzPLDaQ+Z9lijitPN/5Zf9dayq/D7Q9HA+y9tGn5o1fiJp1vqnhx7S5uRCCW2uPvbjG4G335rqfhvr0Fnf6H4x8OarrdzqEVnFJqX2T/Wy+V/zy/8AIvm1z/i/TjqOjhRcbAlzFuTbneGcR/8Aju/f/wAAr0L9kvwT4n+Jnxj0nwBp2leZNqOrFJ4bqHy/3Xm/vfM/6Zfupa+Nw2IeHyu63uz+hfGDBxr8eyqS2VKH4cx+uf7M9zo+pfCTw1N4aufN0+TTovsh8v8A5ZY4r2PUbRIZEjiJx3rK+Dvwrt/ht4NstBnvftb28IQTGLZn8K2tbK2UMgP33FfAYDgTG8M5LjcdmW9SftP8Fv8A5M/k/M8bRxeaTnQ2u/zMO719Tez/AL792kXTNeS/GnxBY+HvCEt7e36QQGbZLKT0rt7yWZVkNueTXH+J/CB8RW8Gmyy+XBDL5kor+Q+IOKa3EeZ054t6U6k//Jz6HJadHCYunUqbHw5+0Tqel67q8kOiXEcst0OZYZv9VF/z1rwr4iaXb6fpptoB91Ca+qPjX4CMOv3euRwyeXdS/wCi/wDXL/lnXzh8XbJYrW4AhwI0ff8AXacV+28KY2jWpUFT7r8z+zuCcXRxWFoQp90eFeNNPXUrNIXTdgMV/wB7AxXnnxF8DeIfhp4w1fwjrOlxHU9Hllt9Ri/1v2WX/VS/9+v+etfR/wCzrcfCk/Hnwrpfxiv7ay0mfVEkN/dTBEikiIkWNs9VlKiI/wDXQV2f/BWXxP8AB3WbHwf8cPDXivSbmz1aXU5P7K0SWKKX7BL9l+y/aTF+98y5k+03P73H7qQxf8spfN/aMtxk/wC3lg3C6nb8kfEeMmcrBcTSoKne6jr0+FHwlqWjziLyL791cfuvO87/AJZebF5v/tWuD8YabPZyx6V5H+jxQ+bN5X7vzZf+eVdBZ+N76Gw8+C/uZI5Yf9VqE3+q/wCmtY+vaB4js5bjXP8Aj5t/tkvnfvv9bF/0yir9Qp0vY6H88VcT9aZyfiSbybCT9/F5lc/o+j6VqWqW8EE/l+bN/qv+eX7quk17QbDUtG1C+nH+th8yH/pl5VYfgOGeHXrfVf8AWeV/rov+mXlS120jz8R/FO08K4/sGz58uTyfLmhrc8N3n9j2FxfT+XHHYXkvnf8AXL/W1T02H7Hf6hY30H7yLUpZP+/v72L/ANG1n+PdSn0eLyLGx8r+1JrWOa7mm/dRf63/ANpVrSOOovasz9Ms76b+0NV1Wx8q38n7TDN+9l/56/8Aor/VVn/2DPrHiPT/ABHPPc+ZdQyxQy+d+983/Pm/9+q9E8K/D3xHqVh/yCpLnS5ZpZPOim8rzf3v/tKsOy8N65BrNvfeRFc3Gl3nmf2HFD5vlS/8tf8A0bWlP2wsR7GkZc3iq+021k0O+giudUi83zv+eUvlf8taPCuvX1nY/wCnX0V9cedLJNdw/wCti/6a1qab4Jvp5ZPEfiOxvrG8lhlk/febH5v7qX915Vc3psE+m2tvpN9P/qpv3Pk//ba1pHCdp8PfjZfeFdeuIT5X9l69DYadrF3/AKuX7LF+6l/6a/6qWWKuH8VXl7D4N8WaHqvleZFo8Uc0037r/mIWsv8A21rQm0f/AEryP9V/y0hmrH1KaCz0vxBpOq30kf2qzijs4Zf3sv8Ax9fvf+uX+qoMz3T4wXmleCdZ0fVdKnuY7jS5pbnzooZfN8qWWKKX/tr5Xmy1yfxC8jUvGWqWOleVF5sMV79kh/1sX/LrLF/5Ci/7+13nx+1i40268/VbG5kkv/tUfned5vlRS/upf+/vm+V/39ryPQfG2q6b480fw54jg/0jQbP+zvO87/Wxeb5sUv8A36iiir5fA/7ofomb+yo4/wBn/wA/DsPidDB/w0Rod9Y/uo7rQf8AXf8APX97df8AxqsvTNH1XWPiNqmlWN9FbRy6lYRzXd35vlRSyxf8tfK/e1sfEiGD/hfHh+eC4/0e10e1tpvtc3mfvf3vm/8AkWsez8YfY/GXiS+g8z7RLeWHkzf6r7LLFF/9qr0qn8U8CmvZUj2i88baV4k0uTXLf93JL5Uc1pDD/wAet19li/7a/wDLK5i/79S/8ta2bHxJq+peNX1W9vZI5c+ZqQihi/1UtrfxRf8AkKWL/wBFf8sq868N/wBlTXUfiPw5Pc2MfneX5MU3/LLyv3Uvm1piCeJDNB/yyeHzv+uWaxrVfdPRwGG/exfmj2/w/aaTeanEurLkLNEYN33BIZUUb/8AZwxzX2d/wSr+B2s+Pfj8nxcbS5bZNEkM+oy3XWWSWHr/ANtZTLLXyP8AC7Rr3xF4jfQ7FIi1zaMshlhR8RhlZ8B+OVBU+zGv2o/ZA+Auj/Af4RWGjwWgTUL6CK71d/71wYwCa+GyzC4jOMypYSP8On+8n6dD9z+kFm1LI8bWm/4tenCnD015/wAGj1or+7K4xx2rO161gvYHg8z50iq2b2GUuVI/d1labL/aWs3Ik6BNh+lfe8R4zB4uhDL/AOIsR7n4SP43pXT5+xyjaHDNDdXEv/LOPfHWK8EIjilvIHeC4uYrQiP/AKayxxD/ANGV1HipWtPFUenQxtsutFvpPxElt/8AF1HpnhxdW8OWajrHqNtP/wB+rqOX+lfyHivCXL5cZ4PL1T+DnnU/v8laH/tkj3qeOkqLn/Wx5x8RPgHYazBc2U6jfJJ/x8eVz5fpXxp+2D+ydL4K+E+s/Ey4u1d7e4aJLZ/+efaQe9fp1run28to0sw+byjk18if8FHNW0PQ/wBmLxFa6lduJLiPyLS2tsebO5PB/wBwf6x/+udVxXwZiPDjjDB0MJU/dYiqtPK5+leGPF+bxz7C4aFR2dWCa8nJJn42/HaW2TSLKO7uGto3mfffImTajA/efhXl3xC1LVfiFFcQ6rfSy6fpcNrHptpNN/qvKi/1sv8A2yl/1X/LKvUfjxo9rfaHa6nqWrxxWlnI7TWRjlaS7IAkVFEfI5ixnturxbWPBNjZ6rJ4Vgv447iKG1j/AHNn5nlSy1/TuR4aDoRqS7s/RPGzE1avHWIw/wBlRh/6RFkem6PB9qkxcS+X53lw3cM3/LLyv/jtan9sQa94NuPI8zzIofLmhmm/1XlVn2emz+bZ+Kv7Viis5bP7NZw/8tbr97LFLL/5Cirn9f8AFfhzwH43vPDula59pjuv3f8Aon/PWvpT8bqUqtH94R3ln5PgPz/I8v8A4k//ALSrk/Df7m/knP8Ay183zoYf+eXlS12mpeNvCt54NvIB5ttJ/Y/mQ2l3/wAtf3X7quDhvP7NtbjXLG3/AHlr+8hq6RlUftToNN8H2/jC/wD7V8R30sX/AExi/wCWtV7y71Xw34zt/B0/+k2d1eRR6bN/zyrpNem8OeG4o76C+lluJf3k1p/zyrDm0fxH4k8NyeI/sNt9nl8qT/j88u6/661qtzm9l7VH0h4b/wCRXs/3Hl/6HF+5/wCeX7qvI/hjeed8Vuf9ZL9vk/8ARVeseDpp5vAelz30Hl3EumxecP8Apr5VeV/CWGGb4g2dxB/rP7Nv5Zv/AAKr1aR8pim/anSfHi8/s3wRb30FjHLcRaxF5Pnf8sv3UteV3kNjqV1cX0H+k+bN5k03neV5Usv/AEy8r/prXqnx+8//AIQO3ggg8zzdSi/9FS14nZzX8Ol+f+7k8qb99LL/AOiv/Itcx20v4JqalrFhoMv2fz5Y5PO/c+bD5n/oqsfXtBsde8JXmuTweX9lh/11p/qv8/vaj8eefpuqR319P5tvL5skP7mLzfK/561jw+JLGGK4gg82LzbP7NNLFNQWfUnxUs9c17VLjSdct7a2+weG/M8qGGWLyrqK1iupbXyv3X73zYv3teBzWc82qR+ONVnl+0f2xa203/XKWKX/AONV7Z4w+GGh+MdL1QeB/Ct9rckU0X/E21aH7T5v/wAd/df88v3VeT+MPgP8RrPS5LHSvgr4p+0ed/yFotBuoopf+mv+q8qvnMFSdj7HNsUqTpzqbknjDXoIfFtnPffvY4pvK/13lf8ALX/lr5v/AF1qxZ3kGseKNY8/SpP+WXky/wDTLyv3Uv8A36o1j4Y+ONN17T9KvoLb+z4pov3t3qVrbf8ALX/lr5sv+trc0f4b+OLPxvcf2GNJ8uLyvsfneKrCSX/pr/qpfN/1v7r/AL9V3eyrKkeb9ewbq+/UPSNes9D1j4fWc+hTxW1xYWfl/ZP9X9qiil/dXX/PX/VeV/5CrqoovDll4SsdD0rXJbm8ljH2zEMX/TKX97L/AMtf+eX/ACy/65V5zo+karafY/Dmq65J9nlmljvPOvIpYv8AllLF+9i/e/6r/wBFV7V8NvD/AIN8VaN4Rt9EEkdw+llLyH/nldCXyv8A41L/ANta8fMqjpUPaTPo8hhGrjqUIbXPqv8A4JM/DXw18T/2tYNL8VWjT22n6Fc3ywiTaryJJCqhh/EuX5XvX6b/ABr+P2l+Ab2D4eeGBHeeI74pGlnn5LcOeJJMdBX5Sf8ABP341t8A/i5rnju0sZLi+Pgy9tdMjQcee8kGGY9lUKze+AO9fcP/AAT+8FeKPHvjnVfit8T5prjVYgHuRdRYcSSD/AV8LVzTE4enDK8rjbE4p8s6n8lNb/heXyP1Hx6yVYji+tm2Ol/s9CjTUYfzzd218tLn1/oGmGwsYkuDvleMGSXH3zU8Gnw2t808Z4l6VYflAuOccVUvjnUrX/rq3/os1+tLLMvyzAYeEYXdPk5PXSJ/JLnUqVGyl4g0EX+uwaifvLp9xbj/ALaeWf8A2nS6bpQ0zR0tX7TR/wDowVszBWGTUV5hYB2/eJ/MVnW4dy6OYTzN/wARc/8A5Pyf/IFqq/Z8hn+KSfsPlY4x2r83P+CsHxQlj0C7+HTpLo9iuqWRe4lba+t3LfN5dun/AC0iixEZZe3mRV+iPi3xJZIr2cU484DgV+TH/Ba/4l+Etd+Nngj4M+FZH/tDQrj7b4pMTx7Gmfy3t4WxyXjVpZDjtdHH/LWv5/4ynhOIfE2gqH7xUlf/AAWP1Dwsj7DibDSnDecf/SlqfH/xB0sarq+iRzXDLBFdNNcDy9yIibWMjD0ABX/tpXD6xe6VZ+N/FF9fT/ZpLrTbD7H5sP8Ayy8r91L/AOipa9O8RaLpuowjU74hXsI3ltnk/wBWsgKspf5H+Xcq546Zr5t+OOpWPjbxv/wkdj+9t7rTYvJu/J8uK6iil8rzYov+2VfruTR58vjH1/M/U/GOr7PxGxr/ALtP/wBNQM/R/iRqupHT/AEE/wDxL7rXtL86L7H+982LzYv9b/28y/8AkKvSPip8GdK0Hwlqmq2Ok/2bHazS/vZof3sv/TX/AFX73zf+WVeT6DZ2Om3Xn2MHlXFrN+582GvePjBaeMdNsNP+Dvhye21u41nR5fJm1CGKKWwitYv3vmy/9tYvKl8qvaqaWPyGrU9sfM/jCaDXtLuIfI8y8tbzzPO/6df9V5tYc3nHw5JPcfuo5fKjhrY8VfYdN8R65ffboo4/7Yurazhh/wCWsX/xqsO8m+2aX5H/ACz8mupGapm54r8N2M3gPS7797LcX/myf66X/Vf62vXNM8K6H4V+H1vod9bxeZa2f7799/rZf+Wtcn4DvLHxJFpcEE/7vS/9d++/55eV/wDaq7y81ixvDH9nsZLaP/lj9rh/1v8A21rzMZV/fpHu5dRpUqFSodZ4bvJ7vwbZ30/leZLZxSTeT/1yryv4J/vvG1nP/wA8tHuv/SqWvUNBhns/BtnBP/rItNi/9FV5X8CP+Roj/wCwbL/6VS19ZR/gH5ji/wCMdJ+0JNOdG0u3gH7yXUv/AGlXk95psE0chsZ/s1v5Plw/9Mq9Y+PH/IL0u48iT/j8/cyw/wDLKX/ll/5F8qvJ7ya+8u8t/wDVeVN5kMVcR6GG/gkdnoP2yXyNVn837L5X2z/nr5X/AEyrzvxhNb6bLeWMH+ri/wBTXaa9efa7WTVYP9Gj/ex+V51cP4q8j7Lz/wA8a0D/AJfH3B/YNj42+JfgexvtDsdSs5Zte1G8tP8Al2/49bWK182L/lr/AKV5X/PX/v1Vf4b/AAr8DweN/HmleI/CttY6Xo2vX97Z2l3Zxf8AHrdafdWsXlf9Mv3sX/fqsfxhpvhzxJLp88/2b/iTQ3UcMN3o/wBpiuvtXlfvf9b+6li8r/yLXn95r2laZ9s0Ox0rUrKO6s5Y5otJ1KK2il/dS/8ATKX/AJ61xZVjcJSwtOma8UZFm9bOqlf2eh9CeCJoLPxl8E/FWrT/AG3/AITLwf5mpaTFZxf6ffy3UV1LLL/zyi825+1f9uteJ+D9e8cfELxlea5Y6rc6veRab++h1a88r7Ldf2h9q/dfupf3XmxRS/8ALL97LLW5oPjDxH4w1nR/GM/9r2VvYWcsdn5P2WKKwsLrzfNiiliiil/5ayxRfuv3Vc3oPxP8R+PNLt5/FelRxeVNdSTQxalfxxebLL5svleVdeV/rfNr0qmJonzGGy6vi63s6f8Ay7NTWLzVdS8UaxY6rPHLeWGsSxzSw/6rzYv9bX0F+wj44+GnhH9omw1T4m6q1toekI9zEbZNwea3hmkij8vH/LSWOOP8K8d+B2jaXefFqw1zxVon23Q7XxJayeJIpZpf9Pi/eyyxf63zf3sUVz+9rq/hL4h0TTvh9faWfAccmpS+Kba4i1+7u/3ttFHa3UX2WKLyv+WktzHLLL5v/LOKvhc1qrEupCmfs+R4X6vhqUanXT7z2T4NwXN54xGnW0ssf2m2eKR4n2EISu75/wCA4Bw3ZttftX+zZ4dt7LwufEUFtHu1qK2vZsR4xI9tFv8A5V+K3wU8Q+G/DPjyDVPFl6beyETLJMsLSFScY4UE1+oHw0/4Km/sM+FPAGj+Gb34n30cthplvbSD/hHL1sGNAvURc818lw9hMNPiuniMTJRhTSkm9FfWNr97O9j9p+kTw7xTnmYUY5Xg6taPLq6dOU/v5Uz66WRclSMVQu8/2nbFwCRv7186J/wV1/YQVNr/ABWvmP8A2LN7/wDGqyNU/wCCuH7ES6xaXFr461GeGOGTzHXw9dKyNlNqjMY4PP8A3wK/UM7zjLfqSSrQk+eD010U0+l9kfzJT8M/EXnssoxD9aVRfnE+rt6MMLnAHOa5f4stqzfC7XW8OXwt7v8AsmcWs3/POXyzsP51876p/wAFj/2NrG1c6f4i1q/kB+VF0OZAw/4GK+ef2pv+CvyfEPwNrXw8+FHhFUtNWspbOS4vQd7QTRSRyEAgbH+YYPPWvK4j4qyh5ZVw9JSnOpCcPci7K69PuPVyjwg8Ssdi4N5bUpxW/PBr81+h9c/EXx5+zD8KtC1LxV8QprKXWfBGiG9YatBH/aUkMfPm2/mAGTzJePMj4MrgZya/Dzxl468UfHb426z8WdVnlebVNen1K/x5kscLyEfuos/6qPHrXovxr/al/aW+NvgF/DnjPxTcanJc6q9wsV88BFsvlRea2fL/AHaySopjhi/dxbW/vCvJfDXgzxNpE9s3lWEECyB51RsSsARlDtQLjkEEYLeWN+Tivz7J8PhsPBznQp0m1pyaN6fbP17hjw14m4extKdbDVJzlUhdqErRSkm9bbdWY37TE+rw+FILfQ4n869EtnJJDetDIYpFAeMBc7w4GCMHoK8Z8STX2vap/bmlWN7c2f2Py9Hu7TTfKilii/df6r975X/LWvoz4geA7Lx7Lp1lqsSPZwXHmXMXlsz3ADIRACv3QxAYnv5YT+Os/wCKmpf2bFJ4O8HX3lx3Vn5c1pDDLHFaxeVF5XlRf8svNi/5ZV9pks7YGK9fzZHjR/ycHF+lP/01A+Z9Hg8VaxayT6HpUt9Z2sPmed5373zf+mVfRnjz4/eB9H8JR/H7Q4L25uL/AE2K28m782L/AFUsv7r/AFv/AD1ll/79Vl+D/h7Y6Po3kWEH2H7LD5nm/wDPL/Wyyy15f/wqXxH438b3ng37DfR6HazfbdN/c/upZZfKiir2ajpL+IfkNJVsVV/dmp8PfhLYal4buL7xxYxSaxr1n/pnnTRfupZfN/dRfvf+eXlV4fDNBBayefB+7r6o+G+pQaDfx6Vqs/7yWb7FNNN/rYrqL919l/65S/8ALL/v1/yyr5bms5/tX9l31vJbXEU3lzed/wAspaeHqe1OnEUvZHsn7LvhXw7D4cknnt/3l1N5k3nV3Gvf9ONjLJHFN5c0Mv8Ay1rxf4P+PLHwr5k98ZPs91NLbeT/AN+vKr0S81i+1LzP9bFZ/wDLaGH/AFsteTiMNWpYz2h9Xg8Rg6uUez/5eHcf8yp/2515P+zz/wAh6T/sG/8At1LXrGpf6H4cuDb/AOrihrwv4SzarZ2uqT6H+81CLR/9D/66/wCleVX3NH+Afi2L/jnefH6z+2aXp88E0X7qaWOaL/nrFXl3nTw3ceqzWMUsct5F/rv+Wsv/AC1/9G16D8eNYg8K2mh2NjBF5ksN1HZyyzfuov8AVf62vK/7Y1XRzHY2P/EyuJYZY4ZoofM/1sUtebV/invYGl7XCEnxI8Kf8I3dW+lT299FeedLJeWk0P8Aqv8AP7quH8SWcE2nyfYa7j+2PEcMtvfTwXsnm/6TNNdw+Z+9rj/G3kabF588H7uXyv8AP/kKnSqhUw370+gPGF5fXl/b5+3RRxf66L/V+bXJ+JLyDTdU+3T3Ef7r95ND/n/rlW5488B/E3R9Ls9cn/dW91DLLZzWmsRS+bF5Usv/ACyl/wCmVcP8SNBn8N38nhW+/wBJvLWGLzvJ1KK58r/v1L5VeZ9W9ie3VzJ4x1PZnpmg+JP7H/ZquJ55447yXTbWPTfK/wBbLF5sX/23/v7XN/D2zvv+ENs/t08vmRabFbf88v8All+6/wDIVc3rE3irw3pen6VYarc2MfnS215NaTeV5sX/ACy/1X+tr6Ah174ZaDoP264gikktdSurLUvO/wCWXlSyxReVF/1yi/6a1043E2o0zwMgymrSxmIqVKhn/AG8n0HxHJ4q1yx8qz86L+zfOs/Niv5f9KtZYv8AyZ82uks4YIbrUJ4Ps0Uct5+5tLSbzYopfK/56/5/1Utc/Z6xrniTxvHrljPL9jlvPs0Npq0Pm+bYS+bF5X/fqLyq2NH8YaV4qurib+1ZLm8v7zy5vOh/7Zeb/n/W+VXzdSmnVqVD9Ip1LYSnTPbvAPh7wNougza18YfEk+oyXcM66PpPhMNFPbypNhftsl1GVVTGVK+SJdxySUI216n8O/8Agnt+078VvCd78T/APwY1288MbXm0e4vJbezur63wXSSOGV90u5NpHlhlYnClqwf2U/2YfE/7WXxG0r4beDtZ0q1Zopp9QudSvxAGWHaJhGQrPNKfvHYjY35bCgmv0V/4KdfCX9pk/CKLW/gH8XbTwt4K8I+GJItb0Zdcexlv4/lj2b9oRlEShQjyDcWZQCSA3k5XkKxuFr4yq5uEdlBpX1d7XTsorc/dKniFisqWT5ThsfD61iU/aTryk4U4p8sFyw5XzVH7sW5dG5b3Ph3w/wD8E3P2gPGX7O0/7R/hnwcY9MtrWe5/srUdTEeoXUEed00MIhwUAVzh3V2C5VWyu757Z9O8ttlvNvI+TMwwDuPX5efl2jtySe2D9GfDb/hu+X9gzxR4m8DfE5rf4T6dfmy1XSTqMK3BEhXzhESpkSHdIgeMSJvM3COC5HM/AX/gn3+0r+0t8MLj4r/CLw7pt/p8GsLpwt5tXihnkfAMjqrkKEjDJu3MrHeNqvzjirZSqzpRwkKvM4czTd7+cbLb+vX9PyvPJ5bHMK/EGaUPY06/s4OE3H2d0mqdVzdlUs02le2rbtpHwVz4l8z92tjtz3Z84/Kqt43xA/5h8ej/APbZ5f6CvrH9pX/gll8dP2X/AISS/GDxr448IXllbTxRXVpY6nIk4aTgbBPHGJSD/CpLYyQpAJB+zd/wSl/ae/aO8E2/xHsl0fw3ot/As2k3XiC6dXvoySA6RxI7KnGQzhdwKldwOauOS5pHE/V/ZSc7Xt5dzeXG/As8lebf2slh+bk5+eyc7X5UrXbs72Semu2p8oaUfHRCjXI9JB3Nua0eU8bflwGH97rz0rWaMMhCXexsDBNvuBPc/fH5frXsn7VX7Cn7QH7IVzDc/E3Qre50a8uPIsfEekTmazmk27vLJIV4nxnCyKu7a23cFJHjdc9elXwlV0q0OWS6NHvZV/Zef4CGNy7HTq0p7ShUTT7rRaNbNPVPRq5Wvv7aUySaNcQo5UiHzlB8skKN2dpycbx9H9qm+Bv7GPx8/aA8VHTPhZ4MvfE97C6NqM1tGfKt9+7aZZWAjiB2tguwztOOlPr9EdU+IV//AME//wDglx4M1P4P26aT4z+JVxFdXmruqyTJ5sZmaYB1I+WERRKuML5hb72WPt5LXq1HOVSXLTpx5nZK/ZJX0u2+p+PeJnA3D2Hq0HQoSr4/G1VTh7SrNQTs5SnUs+bkhCL0jrslofHPxi/4JhftmfBPwlHrvjz4P3Mei2NvLPqWoaRdRXyqI33o03kMxiiVAZHLYUkbchWct5/4bk0LRNHk0ya0uXaQOXkEwO9i7tk5H+0K+1f+CaX7e/x18S/tHad8Fvjd8Qr3xV4d8YRzWTwa9ILgwXBiZo2VnBYq20xlCdpEmcZAr5y/bX+EejfAz9qjxr8MfDWnPaaXp+rl9LtnlL+VbSos0ahjyQFkAGcnAGSTydszxPtsNHHYabcXJxakldO11to00eVwj4eZRQ4hr8NZ9hoqvGlGtTqUJ1FCdNy5JXU25RlGVlu0076aX+eviB8L5vFHiO61vTLpPLu4IILi3up5AJVWNVZ/lJ8t1ZQ6EZwa8k1j9jb4hatr95rF14y0mcXt7NPM0iSIz+Y+4scIfm/zmvo2vrD/AIJj/sh6B8U/Et9+0r8cBBafDnwFuu7uS/T9zf3US+Z5bZ4MUa4kk65+RMEO2OLLsXmeLxSo0Wry3dtEurfkkfU8V+HPhnwvktTNMdSm401pFTk5Tk9IwiuspOyS87vRNnwB8S/+CSv7TXwG8PaB4t+L/g2LSNP8Rq11pt1dMzLMHWNgjBQTDJtGTHIFfH8PBrV+Dn7KHxA8U61p/gbw7osnifV5gY7Wx06zeeeXALHCLGTgAEk9AAScAV+pn/Bbjxbp3j34RfBzxzoqyrZa3HeX9qk64cRzW9pIm4AkA4YZ5rxv/gml+1f8Av2SdH+IXjbx/Bet4vu9Hjh8LiOxM0VwAWJtwVI8stJ5bMWKqVi4O4AN62Pk4519TnWtTST5mltyqXlvsj4XhnhjKcb4a/6yUMrlUx0nOKo05ztzKs6Svdydopc032T2W3mHij/gjD/wUAt/Bt1qs3wgtpNlmZZLW01y0lm4GSFjSQs7f7KgsTwATXx/4D/ZP+Inwj8TanpHjea1guYVFvdWE0M0c1vcxlw6yJIilSC7gg8g9RX338AP27/26/Gf7SnhtNG+Leta9faz4ihibw9czZsbhZJAHjMIGyKMKW+ZQPLA3Ajbmuv/AOC3Wi+CNN/au07UfDrRDVtQ8LQS+II4m58xZJEidht4YxKo+8TtVeBwW66+c1Z5XLE4OckoSUWpqLvfazS37o8nKfCPJ8Nxph8i4kw1Ocq9OdaE8PUrLkcGrqpGbb5Xf3ZaXatbt+YHjS+8Fazc2NzJb2OozQRzCL9z5vkxyf8Aor/VV5j8W/B/9j2Emu32hyW2j/2lF532Sb/Vf9NZf+uvm+VXmfi6XVBqumams8m/U2vbiXH/AEynmi/9pV9ceJPh7PqXwq1jwrB/rLqz8yGa7/1X7r/Vf+ioq6Z1vZ1lUPxzDYBQoPDro2eLw/D3xHoWqWd9B4PvpLew8391dw+bLL/zyil8r/0VXL/GD4S+ONN8L/8ACR6r4HvbK3/0WTzfJ8yKKKXzfK/65f6qWq+s6lrmg+F5NKvr69028877N5sU0v8Az182tCbU/HF58OfEF9rvxUudSt7XWNG068/fSy+b5sWoS/8ALX/nl5Vd1Krc4qlL/l2XPJ8Y+MP+JFfeMb650/yfMs4tQ1KW5li/561Th8N65oN1Z6Vff6dHF+702Kb97+683zfKrk/2P/DQ+1yeI5545ZLXWIrb/pr+9tbrzf8A0VFXuGpadBexWd95EXl+d5cM3nf9df8A41WeNq1aNb2ZzZdhqNWj7SmcH8YNY8VaxYW+ueJJ/M1D9753nQxRf88oov3UVegfBPwT8TdH1TS9DuLG5jkv9S/febeRSxebL+6rD/acsp7Pxv8A6D5kX/7q1r3T4G6brnhX9oez8K65falcyRfvPJ1G8luf9VqEtrF/rf8Ar2/8i1y5lV/cWNskpf7Z7T/p4aH7Tlnoem+N7zSvB1j5ejy/ZY7O0i82L91Fay/uv/IvlVwfw303Sft9mdKsfs1vfzeZNN/rP9V5Vdp+1DZ33g/xHZ+KvFV/Je2cv/L3aQ/6V9ql+1fvf3v+t8ryoq5/wHZzQ+KLeCeCLy7WGWT/AK5fapf+eX/f2vBwbdPLz7XMKXtc2Sme7eF7qG3Phq60md1cahnz45eQS0RI3feY5JYOeqOnT7i/Y/8AwXYvb1P2g/Cdil3KIH8FozwiQ7Gb7XcckdCa+GvAeuRCLTLy8jEcFrfB5BbxDLbWUO4GQGYlCe2TxnaFx9O/8FTP2ovhF+1V8Y/D3jH4PalfXVlp/haK0u5LywaDbMZZJSgDHJK+ZtY427lO0sMNXm4OtCnk2KpTklKUotLq/elex/R+SZNmLz/hvEqhJ06VHF88uV2jz8jhd7Lm3j36HqPwD/5QlfFH/saH/wDRum11/wCwx8V9V+Bv/BJL4gfFLwjcOmq6brd/9jlaFSILmVLSGNwCcMFMiPz3BGCBz4H8Nv2vfgV8P/8AgmL45/Zs8WeIbu18U674hEunW72eIZUdrZ93mlgoCi2YMCQ2XXarAMRV+E37bP7OPhT/AIJleOv2ZtY8cEeLNc1/z9OtYo1aKSNntn3+bv2hV+zENnDZddqsAxH0GFxlOnOlUhNXjh5K/aWtl6+R8ln2Q4jE0Mfg8XRfLVzelUcWvioNUlKdnvTte8ttHd6M86/Z3F98d/2pvBXh/wCLXjLUNQg1vxfaDU7rUrs3Dzl5lLBjM+CXPykkk/N0Y4U/pd+3jrf7FPizxdY/DX9pf9p7xT4Un0y0S4j8OaHdzQW8gcnbO4jtpBI2AVBLHaAQACWz+Pfh74h6V4f1208RaF4qsEvNOu47m2kW6jby5UYMpxnsQDX35q37aX/BMb9vfwbol1+2t4oj8D+OtHtVgfVNNuGjjuwWYtHA6CbfGTh/LlXchchGILM2OQ4i2DrYdqPtJNP95dRkl0b01W6vud/ixl1CpxJlmb06tX6rQhUg/qns5VaU5WtOMGpXjJLllyq8Uk/J9H+1j+1N+xJH+wdqf7N/w6+OOrePb8LDH4e/tmCee6t2SdZFZ53ihASNQyrkkgELhlGK/OSvrz9qD9tj9itvgNL+xV+wZ4f0rXtLjvBc+IfEFzALiTzE2nz4i583zy2UaV0UIoKRjawK/Hdxq2l2lg+q3epW8VrGVElzJMqxqWJCgsTgZKtj12n0rzuIatTEYuCbjJxil7ifKrX0TbfNbufYeEGHy7J+Hq8l7SlGtWnUSxFSm6slJRXPKEIwVNytfkd2t23dFivvj/gpTdH4gf8ABPz4CfEzRmuGsILSC0n3zb8StYovznA3MGt5Bnj+Ljnj4DN3arM9ubmMSR/6xC4yv1HavtP9jX9tb4Jaj+zve/sc/tr6Dqeo+EjOp0HVrSzeU2MW4yFHaIiVPLkAZHQOcOyEBABUZM4OFfC1XyqrGyb2Uk01d9E+5r4kVeTE5XnuBSrywVZynThKLnKlUg6c3CN/elG6ajdXs9Txv/gnR4d1DxN+238ObDTfM3weIEu5DE2CI4EaZ8+21CD6gkd66L/gq/4s0/xZ+3R4wfTnkZNOWzsJC8u4eZFbRhwox8oDEjHPIJ74HuXhH9qX/gkl+wNLq3iz9nLxrd+NfHd1YzWdgl7OzNauekTmVIViQyKisVVpcZA6kV8j/BD9qT9m2/8A2ybX4i/tteLNN1y1v9ZmufENpNfQljdPnY8tuCDJEkhUmFR91du1gNjddbCrDZdDL/aRc51OaTWsYq1ldr1u7dDwss4h/trjHFcXfValPD4bCOlThUShWrTc/aS5Kcne3uqEeZq7el+nIfD3QfD3inx1o/hzxZ4sh0HS77UoYNR1q4haRLKFnAeUogJbauTjuepA5H6tfHD4QfswfEr9m7QP2WPhb+2h4Q8FeD9KVPtsFrq1ldS6oFIdPNf7TGCDIWmfg73Ktxtwfzw/4KC/Gr9iH4gfF2Dxt+yL/ZOneF5rCGG71GyVbLTr68Klw1tCwXy/3W3I2ruKlgvV38EPxD8AKAW8c6OARkE6nFyNu7P3v7pB+hzWOFxKyedfD+yVVS0ck5K67Jro+vfzR6WeZTHxGw+WZwswngJ0f3kaU40pONR6KUoTuueKvy813G90oSufsb+2R+x18GvjR8EPhh4I8bftSaP4RsPCWjfZ9I1q/Fv5eroLa3j81PMuI1xtiV/lZhiQc9Cfyj17wg1p49ufAvhDVY/ErLqjWWm3ejW8rLqTb9kbQoyhzvONq7cnIHNe5ft7/t9fso/HL9nn4NeAfAHxUtH1HwdoQttdS+ligS3l+zwQCPc0mGYm3LDbuXaw+YMCo6j/AIJP/tN/8ExfhBfX3xE+N3x00S1+IEVz5GhrqEyz28Fu4C77UQhyZmJKszYIUhU4Zy3oZnSwucZvGlTUYKyvNt2tyrTV2utl3e58hwPmeceHXh5Wx2MqVMVU5qip4WMIKSk61T37xXO41Lqcm7qMX7qeh698Efhh8K/+CTPwkT9o79o+2g1f4qeILRofDPhK3mQyWKkDfGj4YI2GAmuACqA+Wm4t+9+EPi18UfGHxr+JOs/FTx7qb3eq63fPc3UjMSEzwsa56IihUVeiqoA6V9zfGLxV/wAEYv2m/iVdfEv4i/t46xrGr6ixSFYNUJjhiQZEEEa2RCRoGztH94sxLMWPyR+2pe/8E8fh9rukL+yX+0g3iCzntS2rnWLuIRQOctHsmZYixZAWK7CABkOclVzzrCV1hlTw7h7GntGMlKTb05pW3b/BbHd4ZcTZPVzmeMzWNd5lil+8q1KM6dGnGPvKjTctIU49G9akvek7tJfnR8HvGPhXUviL4S0rVRH5fh3wX46spvNh/wBbdS2+rXUX/pTFX1NNDPef8SqCeSXzYZa/Pvw7rqWXia0vNM1GRpbiPXEUj/WES200Qr9JPCug65Nf28/9lXPl+T/z511YnB1oYiM/I/n/AAeZYfE0ZerPjv8Aau8K/wBm+DdQn/1XlTRSf9tfNryfTfGHiP8A4Q280M/8guXUtLkvP3P7qWWKK68r/wBGy19Oft4eG/sfwl1y+8jypPOtf/RsVfPfgP8A5Nf8Wef/AMtfHnhf/wBN+tV72Gpf7IfF5jif+FH2aND9lG88nwHcX19PH/akXiSXzrT/AJ5WsVr+6/8ASmWuw8H+MPGOpa9b6VfQWX9h/bJZP9T+9i/7a/8AbWuP+Bt5PpujXE/kfvJbyWP/AMhRV2HhWb+zdGvDPB5ckusRSQyy/wCf+mVcONqe2xZ2YOn7HBwOg/aK/feN/Px5X76L/W/9coq/Qv8A4KB/CCD4W/tzwt4cEcmoal8NdIu4Iv8AV/ZvKm+yxRD/ALaRf+Ra/MzxV9uvJdL8gfvJbzy/3v8A2yr2D9pr9on4s/GS9k8b+NvEUlxrcWg2tsNVlmlklliil83/AJa/9tf+/tcWZZdVxePhP/p2Z5LjXhOeV9EekftpeA/Cum/EbR7+x1X7Tb6pD/b032uH91FL+6/9G+bL/wB+q83+GOpa5eeN/EHnwWVtJLeWsdndzXn/ACy/e/63/nl/z1/7a1534b+IXiOz8W2/irVb+S+ktdHurm8868/5ZRRebXJ/DbWPH3xU+LUmh6V4jlik1n93eTajef8ALL/91SweX/VsucKn/Ls+gxec0sVmyr0/tn3D4Gbwtp19pE+r2Xm6PHNBLfRSTiLzoNytKTIn3dw3HeP72a9i/wCCnXwA0X4W/smfDjxv8JbGTSr/AFXXdVvxcac7f6TpVzc/aLOOefJLOsDRpEDJ9zzDyUNeMyeD9T8YO3gTTdUgjvNYY2VtczK3lQyTHYu7buJVCwBI3Ehc8mv0w/bK+ENvoP8AwSj074WXF7bak3hfwn4etZLuWDzPN8o2tt5sf/PPpmvzPMJ4jD1Y4uL0jo16u5+5+JGb4rL6nDuHo1ZQVSnGMuWTV04wir2fS5+Rf7TMAuPh3FEVz/xNIsf98vXiVlDY+V59x5n/AFxr3X9oiBZ/ACh/Mwt/G37rr916+ctes9Vs/Dlx4j8Oar5d5FN5vleT5vmxV+k8PaYFvzZ8R4+zUOO5edKn/wC3HP6l8WvEfhu6xrniO2trjS9StYvslpo/m/arX975svmy/wDPLyov+/v/AEyr0jQde8OeJIbf/ief6RL/ANNopJYvN/6ZV4/r3xO1Xxh8NJPA+ueG9Eubj+3v7R/4SH+x4otT/wBV5X2X7T/z6/8ALXyv+etWPgz4w0PQbqz0P+w/MuLrUv32o/bPK8qL91XvU6dU/FsRUo6ezO4/Y5+JE/gP9oKS48R/6zVIZY9Yll/deV5ssX/tXyov+2tekfEj4kX3w2+HOoeFb6++03FheeX++hi/0qWWL/Rf+usUUUvm/wDbWWvK/hveeHIf2jLj/QZbmO/s5f8AXQ/8tZf3v/o391W542+KmleD/DmufDnXJ4/EHiDXpvMvIv3straxS/6r/W/8tf8AlrXPVpXrHbSxX7nkPdPB95/xMIx58n+f+2te6eFfPh0uO+n+0yx+T/01r4P8E/GzxjNqkhg8RxeXFN5f7qzir2jw38fvGOj+CI+NNufKhi/4+4a4cThq1I1pYnUj8b/s9+I/+Ftf8JHqviPRLK31nxV9th+1w3UV1L/pfm+V/qv9bXx/+1RDPN+0F4w1WeDzYotSuo4YZppf3X73/wCOy+b/ANsq+rPGHxa1zx5rOl6r4j0rTf8AiVzeZD9ks/8A7b/0yr5b/aE8SX3/AAsHUIL6eXzNUvPtt5/01i/1sX/kXza7ctp1fa/vDXOcTR+qHuHgPRoPEn7GVn5HiP7FqFreWsmm+dD5nm3X2WKLypf+mXmy1x/jzwfqvg/w54bn8R30d9qms2ctzeTedF/rZbW1/df+0qk+G/774c6HoUF9L/x53V75P/LL/ll/5F/dS1h/ELxJ50uj6HB5v2ewmupLOGabzf3Uvlf/ABqtqdP98cFTG/7HyHF/ELxVfeCbrT/HGhzyW2oaXrEVzpssUP8Aqpf9bFL/AOQq7T9mPx5D8TvGWqX3xGsbK91S6s4r2zu/7Nii8r7L+6/5ZRfuv+WX/fquT8YeG7HXrWTSr6/8uPyfM/c/vK6j4J6PonhuKO+0rVvMksLOWTyZpv8AVWsvleb5v/PL97HWmMXtcJ7MzyqpVpZhTrs9Ahs/Dnw98W+C77Sp4oo7rUr/AP8AIsUVcHqV5ocPg2P/AISPSo9Sji/svybSabyvN/dfvf3v/XL915tanxs8SWNna+G77SoPtOn2E37m7lmltvt/lf637N/y18r/AJZebUngnQfA+vRWd9448caBomn2H9lyXl34n82WKWL7LF5sUVtaRSyy/wDfqjLMN7HC++Z8QZjSxWYU+Q8/03xt8RtH177D8HfH99on7nzPsnhO8lsYpf3v+q/0T97L/wBdZZZZa+/Ph7N8W/id+zJoel/EbxV4ki8UaN5skM2o6xLYxazF5X+quYov+/UUsv73915v/LWWtD9ley/Y7+IXgPxZ4qn8ceOrbwn4ShijvLvSfDdholrf3V15vlWtjFLLLLLL+6l/5ZReV5X72rHiT9qf9nPQbX/hFYP2O/7X0+6hljmm8Q/Ei/lluov+mvlRV6NSkjxViaf8OZwepf8ABOX4xfGCw/tXSvGOkx+H7rypNe0nUfG0slrLFF+983zf3vlV5X+0h+yj/wAMf/s03Hw48VX2m33ii68YaXc6xd6TrH2mKX/RdV8r91/yy/dS/wDkWvpD4YeKv2NPjBFceADpev8Awh1zWZoo9N1bUPFUut6Z/wAsv3X2mXypbTzf+mvmxf8APWWvN/8AgrR8MfBvwT8OeB/A+h6VLbapdXl1/b13ND5X2r7LFF5X/pTLXNU9rY9HD08J7a8KntD5Xs7ODTbuPyP+WU1alneQQWsn7+OWOXyv3sX/AF1rn7P+1bzVPP0qD7Tbyzf66L/VV1ngPwroc2s29hrfj+PSI7rzfOm1HTf9GtZf+WX73/W/9df3VealeselVq/8uw1799daXP8A8s/7Yi/9pV6v4p+FAn/ZxsPjNBOZDqfiPU9KmtMf6qKxtbCXzf8Ayd/8hV5R42/0OLyLG9tpfK1L9zd2n7yKX/prFXoHgP8Aaa+MNl8BJfgH4p+HFtLpE2ry6qfslnF5trdSRfZZf3ssvm/vYo7b/v1UZj7X937A5sq9m606czzezg+x2GoQQX0f2jVNBlsrPzv+WUsvlf8AtLzaw/2YtSn034yaHfTn/WzSxww/9dYpYov/AEbW5/b0GpeKP3Hhy+8zzoo/slpDF+6/7+/9sq5P4G2c83xus4L2eSOOwmlk/wCWX/LKKWX/AJa1174Opc0pVEswp/8AXw/Qrwlqcmg+IdK1lxI0lldW8ziT7xdGVjn8Qa+3P2s73xxffs7z65PNLnxN4J8KStbnUrmSMHyrqWX915vlf8u1v/38lr4S+EPh7Xr+HwxoPxfkj0mTUVsvt9xOxdILKfY0UzHKkr9neN+oOD1HWv1H+OXx5/Y/8Bfs1a14W8OfG3w/4juLb4eQeH9OtdNv47i4uXigkhR9iZ5wwJ9K/DeKMtxWOw0PYPWE7n9I+ItPHSr8OVsPh51kqMbuMXJL+E9Wk0r76n5FfHCGSfwSEiOG+2IQ3p8rc186eNvP8N6DIPsPlRy/uvOr6A/aK8Rab4a+H63mpQiQS3yRQx+YilpCjkAF+Oxrw/WPEnw5mtZP+Ej8R20sd1Z/ubTzv+WX+Yq/VOHW/qivtzP9D5Xx+ip8d2W/sofnI8Tm0H+zdUt7Hz/3d/ZxSeb/AM8vNrY1j4b654b0HT9cH2by7qb/AFsM0X+f+WVbHw91jQ9Nu/8AhI/Edj/x6zf8S2H/AJa+b+6l/wDjUX/bX/plWh8TvG0Fn8Wo9DvrGO50/S/KtobS0/efZYv/AEV5v/tL91X1HtEfhB1HgP8A4RWG61jXPFV/5VxFDFZWf+mRf62KWLzf3teJ6xNPqXiiS+1WCOO8lm8u88qHy/3teqfEKzv9N0uz/wCEA0qL+z7/AMN/Ypv3Pl/vf3v73/v1LXD+Kvhvrf8AwlsdvY6rH5l/ZxXPnTf8spZYvN8r/wBpVH/L49HE+y/s+n7OmSeFYf7H1mTyP9XL+8hr2Szmnm0G8sf+nP8A8i15PZ+D9ch/5Dk8cVxa3nlzTf8ALLyvKr0TR4f3sfkQeVH9s/5a/wDPL975VcuJqHNhrmh53nXX2Gxn824+xy3P/XLyq+e/iFo99efFWS+8iT/ll9j/AHMskUvlRf8AtKvbNH1L+wfEf27yP9Il02W2hmmm/dRf9Nf/ACFXN+JPDeh/Zf7cgsf9b5Uf+ui/e/8ALWjD1PZI1xn72l7Mw9S8YX3gnR7P/Qf9Dv4fM/c/62L/AK5f+Ray/ElnPZ2un6rP/rLqbzIYv/Iv/tWuk17wffaxDo9vOPLt/wB1/wB+v8yxf9/aua/DY6lqmn+f4ck8y1s4o7y0l1KL/WyxRebL5sX/AJC/+1V0U3ROCe04HH+JPPmupIBB/wAsZasaP4l1XwToNnf/AGj/AI9bz7TZ6dd2cUsXm/8APX/pr5VdR4V+G/iPxhf6Xoeh6V5usapD5ln5MP8Aqov+Wssv/LLyov3sv/bKv0Y/Zv8A+CD+h+G/CUfj/wDao+Jv2b+y/KuYdJ0PyovssX7r/W3P/wAaiirXDWqnPiMS6NE/NeabSvFWjW/xN8RwSXNxa/6NDp2oTfaft8vlfupf+uUXmxf9df8AVf8APXypJvDf/CeWEeq+Mb6WL7L5UmpS/wCslllltYv3UX/TX/W1+wmpw/8ABOb9kv4Laf4wg+Emm+Xo03mWekzab5up/upZZYovtMsvm/8AH1F/01/49ZfN/debXxn+z3rHwI+Nn7VXjz47/Heyjj/tTxtFc+G/CdpD5sUt1f8A/LKX/plF+6rup+xpHkYipWq/vJnN/CXUvHE3hzQ/DmlfsZ6tbaHFpsXk/ZNY/e38UUt1LFdS20Vr5ssv+kyxebL/AMsvKr6I8N+Ff2c4fBFx4x8VWNzpP2WH99aatpsUflf9ta9w+J02h6Pa6x4qn+zSaxfwxRw+VN/36/7ZRV+Xf7b37V0/ivxb/wAKr8HWNzc+H9Gm/wBMu4pv3V/df8tf+/VZ1P3pzYbE1ap7B4k/bq/YR8K3Vx9h8D6tq0drN5c02k6DF5X/AJFltax/iF+2x+w/+0hoOj+B/ip4c8W22n6DD9m0G71aGX/iVxf88ovKlupfK/1X7qvifUtS8OWejXljB4ckspJf3n76aWufh1j7HL5EHiO2kj8n/j0u4f8A2rFWn1Y6aWNqo+kPDcMFn/p2qzyXNx/zxhm8r97XkfjDxh/bHxB1Seex+zeVN9mhtIZpfK/dfuq+jLPwT8RtYijgg+GWv3Mkv+p/4k/lS+V5v/TX/rrXyv8AE+HxHo/xQ8QaV/YdzHJa69dedDLD+9i/e/6qvIy1Xqn0ua4n2tI9M8NXk+pfD7T5/P8A3kV5/rppq9A1jxt8RvtVxPY+HNEjuJbz7TNNFZ/uopf+eXlSy/6r/VV538K9Mn1L4fafBfeVFJdalL5PnV9YaP8AsW/Eazj+3a54j8JRR+d/y21K6l/9pRf+jajMtGY5biatJVKZ8r2c3jH/AISO4ng0qXzP9XN5M0X/AF1/561n+D9B8R678Wv7D0PQ7aTWJby/uZovO/dfuovNl/5Zf8soopa+tJv2Rfhz4Vuv7V8R/GrwvptxdfvP+Wv73/v7dV5vN+zf8JNN+I1x44n/AGjLK5j87/VaHZxfupfK8r/Vfvf3X+qrGliNKiNajqp02dT4G+MXi/w9py6f400+3uwFxam2uMGKKNY1OcKd3LL7/N9K30+OqyXH2eLwpI7fw7brGf8AvpBWfDD+z1pthqHgDxj4qubmSw8q903xDod5F5t/F5X721l/deVF5VR6PrH7L3myQWPhzxjLJ/rPtcviSKvEx2XZXanyKz+1q9f8vkfp+R+L/H+W4SOFhjV7OKtBOFNtJbK7i20tlduystkYvxQ8aeIfHUtla21zeaRbWjJPPa2rRSPK56EvsZsAZ/1R7nJ6Y5Gz+Evg37LJ/wASOLy4v3c37n97XoEPir4EQ/6P/wAKP+028sPl3kN34wv5P3taGp/Gb4cw2sfkfB3RPLi/eQw/2lfyyxS/9dfNrOlzUIclNWR8xnfEGO4izCWOzTEe0qSsr2S0WySSSS8kl33Z5XoPgPQ/hvdSar4HsL2x1CXyo5pbT/W+V5vm/wDo2KKsPUvhX4Vs7WTxVqtjL9nlm8zzodS/1ssX73/llLXsE3x4/seKSfw54A8L2Pm/vIYZdNlk/wCevlf62X/W/vZf3tcX8Tvjx4r8SfD7WND1X7N/Z91DF+6tLOK2li/exf8ALWu7A1Kzranzn+yVaxyem+KrHxV9jsYLGWSPyfLs4v8AWeV5X/LLyv8Atl/5FqOz1KfXrq38Kz2Mckks3lw+bN/qpf8All+9/wCmted+FdSsbz9xY+I/3kvleTFqMPleVL/0y/5Zf89f9b5VegTTWF5LIPEfm/bJbyKSH9z/AK3/AJa+b/36ir6PEfukdvtdDsIfDfiPWJY76xgtoriXUvs3768ij8qX/trWPefufLn1XVba5j8mW5mitJv+WsX/ACyl/wC/UVZd5efbLq48ixkijl8qP/XeZ/zyomm/0rz/AD4v3UNrJN++/wCevlf/AB2vE3Ob2poal/YcHjeOfXNVudNktfN86WKH/rl/7VllrQh034dfYJNKsft0sd1Z2v2OW7/eyxS/8ta4Oazvvt9n/avleZ9jl/66y/6r97/6KrpIdMn03wv9ug/1cvm/6X537qX/AFUta+yM/aIyxrGh6la2+qz+Z+98r/U/9svN/wDRVaEPkTWsfkaHc/8ALKSbzpv9V+6/9qy+VVPzoIftkE8EX7qaWTyf9XF5v+tiq5DrEGpWuM+VJLNF+5/5ZS/8sv8AP/XKrOb2p6p+zT/xLfhfqmueDvEd7pviS18baDJ4b1zQ7P8A061tYpZYrqKKWL/VRebqdt+6il/e+V/21r6A+Cf7VGq+FfGfizSrHwd4g8UyX9nLH/wk3xC1i61a+tbqK7tbW1itov8AVRfvfN8qL97/AMuv/PKvm/4D/E74V6DLb+DvH/iPV9Njl1i/vZtW8mWSKw/deVF+6i/5a+bFF5sv/XL/AJ5S17B+zf418D+PP2r/AAv4j1zXP7It7rQfMvLS0m+zW0vlWtrFFF5v+t8rzftMv73zf9VF/wBda2pfujLEWq0ffPdPiF+z344/acl0/VfjRP5dxFD5ln/y5RWv/bKL/lr+9/1v/XWviP4P+PB8Jf28ZPA9j/pMl1r39gw6jq3myeVLLdRReb5X/PX91X6ceMP2ivhxo2s/YdJ8VWVz+58uGbzvM8r/AJ61+Jdn8SNcg+KGofE2DVftOof299ts7vyfK82683zfN/8ARVOpVZ5NRaH6gftUeD/i34b+GmqX3g6CLxBqn2Py7OG08q28qL/trdfva+e9e8B/tGftdeDfD8Hxi8Y/DvRPD+lw/wDEn0OH7VHc2v8Ayy/exeV/7VrUP7UUHirS7PXL795JdWcUk0U00sv+trn7z45T2fmf2VP9mj/6dP3ddCxNYVLDUbGXN/wTZ/Z60e/j/wCE4/aL1a5jv5vLhtNE8K+V/wCRfNl/9FV0Fn+wH+wV4Vl8++8K+Ldbj/546t4kij/9FeVLXJ6l8Ztc1KTjzZKy5vG3jHUv9RBL/wB+aPrNY1p4aidJZ/tCfHDxJFJ9h+JvmyRfu5pfsdr5X/2qvJ/G3hXVfFXiPUNV1WDSL24v5vMvPO/debL/AN+qkvPGGh6Bax+HPDcHlW8X7zyof+Wsv/LWWWss+NoYbqO+vh5dvL+783/nlX1GU5RRwB5uJx1aqXNS+HviPTvDknkWOm2Nva/vLOGa88vzf9VF+6/6a/vfNrL/AOE8uNN/5CsEXly/vJv3MVegeFfiFBB5mh6rBHcxy/u5vNrj9e02x/t6TSrGfy45f3kM13DLL/0y/wCWUUv/AE1ryc7y3/l5TNcNVrGfpvjbzpZIIIIpZP8Alt50NdZZ6xfXkUdjYzx2PleVH/okPlS1x82pfuvsPiOf7NcRQ/8AHpLpstZ95eX2mX/kWPmfaP8AntF5X+fNr5v6kztp+2PTP7G0rw1dW8+q6rFLJ53mTQ/89az5pvA/leRBrnlSed++82Gub0HR/GPiq/vJzoer/wCiwxf8w37TFL5v/TWKWuk8N/sr/FvXfL+3eANb8uX/AKc/s3/kWWsvqJrT9sU5vFWh2d1HYz33mxn/AJ7Q1cm17wrDpXn319LJ/wBsf9VL/n/0bXURfsK/FvUvLgHw5uYo/wDV+bqGsRS10Gm/8E/fip5UkE/hzSP3v+u/4mUv/oqj6jSNFhsWeXzal4O1KKS+0qCXzP3sn2S08391/wB/f9bXH/FrxVpUPgiSCDSpbbzbyKTzpv8Anl5VfRln/wAE8fip9vkvoL7RLGPzv3Np9sl8qvn/APbZ+D+q/s9+KNH0PxVfRSW91psVzN/Z8P8A01lili/9Ff8Af2urA0qXtjtpYatS/eVDzfwHoOlTeXPqt9H5csPmfuv+Wv8Aqv8AVf8ATX97XeeT53g23sdKvpLn7LN5mj+bD/yy/e/uvN/5Zf62uD+GPn6lFJ9uEUUkv+p/0PzZf8//ABqvQLLWLfTbr/ia2NzLH+9js5pv3v73yv3Xm/8AfqvSxp1f8uST7YIYY5xB5knkxSQ+T+68r91F/wC1Yqk1iGCH7PYz/wDL1+7mi/55S/58qtiGGCHS7e+ng8yOX/QppYf+evlfupf/AEb/AN+paz5v7V0eKTSr6xjube11K11GbUZf+2UXleb/ANNf/IvlV5vszKqZcM19Ndfbv9bJ9juvO/c/9MvN/wDaUX/fqtTRrO+17wlJ/oEsf2DUpZIZfOl/exfuv3X/AH9rD87Vf9MnxJFb+T/roZv3UXmxebW5NeTw38mlatP/AGbHLD/qYv8Apr9l/e/9tf3VSZ+1CbwrffarfVZ7H935Msk0s037qL/pl/118r/ll/1yqTXvCs9n4cj1Wf7NHZ3U11H+6m82WWL/AJ6/9Mv+Pnyq6zwrpsHjywkn0qC5jk86KOH99FF5V1dSy/ZZfK/5a/63yv8All5Xlf8ALWuT0HU/Dniq60/wdrmuRW0lr/oUP+h/9RCL97/36lloIM+01KD+y5LG+0qKKSKa687ULSbzPN/z/wC1a9I0f/hDp/CUeh2HiO5ttUtfKkmu/wDWRRRf8TDzYov+eXmxfZv+2sstcH4k8Nz6bdW+qz6r9it9Zmv72GGb95/z1/df9soqz9NvYPNjngvZYpJZrqT91N/1y/1tdAH0Z418bfB34V+F/FE/hzxHqWt+boN1p2m6t9siiiupZYvsssvleV+6/wCWtfE95NYTRfYbGCWXzZvM/wDttegfFXWPJ8L28EF9+7lvPL/13m/6qWvM7zV4JrqOx8j/AEPyfK82g8bG1P3p7J8MfHkFn4Xt4ILK2kt7WaWOHzZpa6T/AIWpff6ix0rSLb/rjpvmf+jZZa8n+GPjDQtB0G4/tXSraSOKb/XajeSxRf8AkKL/AK5VsTftCeFLP/UWOiW3/XHTZbn/ANGyxVvTpDpVP3J3n/CyPGM37j+3Jf8AtlZxR/8AoqKpLO88f6x/qb7xBc/9Mf7Suq8nvP2rvsf7/wD4SOX/ALh2m2tt/wDHay5v2wJ7yXyP7V1e5j/546jrEv8A7S8qtfZmn74//9k=\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCADgAOADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0CGzqSGzrQ+x+361J9j9v1r+ufaM/BzP+x+361J9j9v1rQ8j3o+x+361kBn/Y/b9ajms61PI96Psft+ta09zkqmP9j9v1o+x+361sfY/b9aj+x+361ZkZ8NnViGzq59j9v1qSGGswKfke9H2P2/WtD7H7frR9j9v1oAzZbXZGzY6D1qrW3e2uy0lbHRD39q+n/wDgnz8AfhD4q+FXib41+M/Ay+NdX0e7aOw8NRjeyCOLeB5TlUkeQtgBtw+Tj5siv4c+k9kWK4j49yvBUJKLeHnJt3slGcm9Em2+ySu/TU/uD6MvEeD4V8Pc0x+IhKSWIhFKNruUoRSV20kr7ttJLzsn8i0V916d8WP2T/ih4kHwr/aE/ZDtvhzHcq32XVdUs0sUSQDO1p0jhaLIHByVJ4PXnzv9gX4I/Bzx7+0T408K65Yad4t0HS9LuF0i6vEbEyNOsSzCNtp3GNj823KMQVIODX8xS4GdbMcNhsHjKdVVpOF7SjKMoq75oSXMlbZ2afW2h/TEfERUMrxeLx+Bq0nQhGdrwnGcZPlXJUjJwbvurprpfW3yxRX29P8AtJfsK/Dn4g23wJ8E/s3aRq2kR6kun3viC8toHVXaTZI4e4V5JkXP32dQdp2/Lhj0Hxp8NfsPfsL3ra/dfB6LX9d1+RpNL0K6b7SltAAiuR5+5Yo9wYhirOWdlX5QdvWvD/DyoVK8MyounRdqsvftBvbl9395d6K1rvY4n4mYqGJpYaeU11VrpyoR9y9RLdy9793ZNN817Lfz+AaK+xfj94M+B37R37INx+1H8KvhZZeFdY0a+EOoW1m0cSmJZRG6MqBY3OJY3DbQ/AXJ6HC/ZJ+AHwQ8JfBC+/a+/aStjqek2szR6PoRgJWR0lCB9pZROzyAosbfuwAxbOfk8+fA+NebwwlGtCVOVP2yq6xgqXWburq2zVm72PUp+IeXrJKmNr0KkasKvsHR0lN1tLQjZ8rve6ldK1/n8r16r+xZ8KfBfxp/aK0T4f8AxAs57jS7lLiW4t4LkxGXyoXkCsy/MFJXB2lTg8EV9FfDz4rfsW/tm60/wR179n208I6jfRyHQdSsIoInMoRjgSQqhVwPmCMGjYrg87QeC/ZD+Fmo/BT/AIKJwfC7VL4XUujm/iW7EJjE8ZspGSTaSdu5GU4ycZ6nrXfgOE6GGznL8TTrQxWFq14U3JJpc3MrwnCSTV1qt018r+ZmfGmIxeQ5nhatCpg8ZRw9Sqoyab5eVpThODadpWT2affW3hXx68GaJ8OvjT4p8B+G/P8AsGka5cWlp9pkDybEcqMsAMnj0rkq+wNN/Y8b4w/tO/EH4u/Fq6/sb4e6N4rv5r2+uZPKGoeXMxeNGONsS4IeTtgqvzZKeafEDTvhZ+1j+1VpXgD9nfwNaeFdIvplsVvbazKrcJGGZ7w267RGBGpIUbS23c5DMdvnZrwnjKU5V1yw9rWcKNPaU1zNXitlFOyTk0n0e1/UybjXA14Qw75p+xoRqV6q1hTfIpcsnu5tXbUU2rare3hVFfol4g8E/Cj9mL7J8N/hv+w3rHj5kgjfVdfk0MXCu5UDImljk3scFiiBY1LYHO4DyD9v/wDZe+HHhL4faL+0L8KPCF14ag1W6WHWfD95GYDBJKrOjCFz+6cFWRkQ7PulQACT35r4dY/LMvrYiNeM50UnUglNcq2fLJxUZ2+1Z6HnZN4p5bm+Z0MNLDzpwxDapTcoPmdrpShGTlT5vs8y1Pkyiiivzs/UToPsft+tWPsft+tbEOmwVL9jt/U/lX+2ntEf4nmN/Y/+c0f2Z/tVueR71H9j9v1o9ojMw/sft+tH2P2/WtiazqPyPej2iOcy/sft+tH2P2/WtT7F/wBMaj+x+361p7UzM/7H7frUkNnWh9j9v1ohho9qBT+x+360fY/b9a0Psft+tSfY/b9az9ojMxNUtdmnTtjpE3f2r2f9jb4RftC3fw38Q/G/9nH4sR2esaXdpbv4Uhj3nUQq7j5ok/dZCuTHlXyd2ChHPkut2uzSLlsdIW7+1WPgL8TPiL8MdYu9Y+HnjXUNHmKxmb7JN+7mxuwJIzlJAMnAYHGTiv5D8a8nnxN4wZHltO6nVoVVGSnKm4tc8uZSim7rldlazej0P6/8Fc3XDfgxnuYys40q9JyjKEakZxfs48koyaVpcyTad0tVqfcH7NXxE/ao+NWr3nw5/ao/Z7tP+EalsGNxf6nopgV5Ay7EaKUlJQcH7qjBAOa82/4J6eG/C/g/9s34j+FfBWqfbNJ0/Tbu30+45+aJb2EAZP3sfd3fxYz3r5c+N/8AwUV/bf1yyl0ZfjJNZWL8FtK063tZWHoZI0D49gRXyjon7d/7V3wH8UXeqfCb4oyaNdXNo9tcS29jAfMiYcghkIz3DYypAKkEA14uO8LOJsJmOX1p1Y1vq85SlUqT/etNW5Fyws0t/ed7nZgPFDhnGZXmdCFKVD61CMY0qUP3SlF3c5c1S6k1p7sbW3TPpN/+R8P/AGF//atfTP8AwV0/5Lf4b/7FRf8A0pnr8vdC/aT+Od5H/btz4sWS583zftH2SMPvznduC5znnPrXaeOP2yv2pPjlr9prfxL+Jk2r3FtaJbQSXNnD8kSjgAKgGT1J6sSSxJJNfnGE8F+LsPw/jcA6lHmrypyT552Sg5N3/d315layZ+o43xw4NxPE2X5lGFZQw8KsZLkhduooJW/eWsuV3u10P0Z+D3/KKj4gf9jA3/oyxrd+GGhXH7WP/BOpfg74F1GzbxR4WvNy6Ub3a8wSZ3jDBm+USI7BS3yb0xlcHb8F/DT9of8AaVvPh1f/AAf0v4i3Y8PancrPdaTFFGI3ce+3cAeMqCAxUEglRj0T4W+KPih8HNQXxb4P8aXml6vBEfNns32B1BDbHX7siEqCVYFTgZFfVQ8J+K8HgoYiv7KWHp4SVGslOSk4pym5U/3drrTl5rXejtufIS8V+EswxdSjhnVjiauOjiKDdOLgpNQgo1F7S9nrzct7KzV3oe9fsUfsb/HK0+PekeO/H3gjUPDmj+Grr7Zd3eqIYDK6A7I4wSC4LdWHyhQcnkA9n8M/iX4f+LH/AAVTl8T6Dfw3NhDbXVnp11Zy+bFciGyZC4bONpw5BXg8YzktXjmtftl/tG/Gnw9eeE/G/wASLgae6BZ4NMt47Pz1YMrJI0KqzIQSChO055BrlvAep618KvE9r45+H2sXGmarZsTb3cEmcZGCCrZV1I4KsCCOorj4K8Ls0z3hzLsw4elD6n7f20nWk41ZOnJwsowhKKS5Xb39XZu2x38ceJuX5JxLmeA4lUvrv1Z4eCoQUqMY1YqpzOc5xnJtyV/c0SaV9z7D8ZftefCX4rfG/wAV/sd/GXwtHZeGLuX+yrTV2n2sb9HJZpO0YMgXy3H3WjBbIf5PFPhx8Otc/YN/bb0G2+Il7Cvh6/knt7LxFNIYbe4tZUKCRjnCNGzJ5itkKec7SjnxPXbWXxdrl14l8S3txe399O013d3E7M8sjHJYkmqXxn+Nfxd+Oyn4UXnj+/OreE7Swl0ZNWt/Ng+xySAAnbje0ghuYdzZmxEZM7TGD7uL8IOP81rLGYqeHeJo1VOhNTkvc5+b2VS1LWKXwtXad1s3f5/A+Lnh5k2HeAwccQsJiKLp4im4Rfv8nL7ak3V0k38SdotWdrpW+3v2oPGH/BQ3wR8Tpn+CqSa14V1HbJpEmmaFbXLW4KjdFL8hYYOSHb5WUjByGA8p/bi0j9p3Tvgn4a1H9of456VPd394Xl8EWtpFBJE4XiTdDxcbAcMThELDaW3Zr4a+IH/BS3/gqH+yHrmp/DHwb8b9Ok8NWTWs+l6hr+kW1wtjpsialcKSZEeVGVLI2qxhdjGAbVEkuK+P/Hv/AAVa/bU8a/EHWLv9o74pajd6vFpt/bQfaLC0jlsNQi8zyoHieAhV88bfJHkjazP+6VGY58T+FXE+JweIhHEylOt9ieIqeyp3ab5VGF5rpFSSSXR2QcKeK/C+Ax+FnUwsI06H/LynhqftqtlaPM5TtB9ZShJyb2aTZ960V+W1x/wU5/bFj3bfiHZcdP8AiQWn/wAbqs3/AAVE/bLjtnkb4hWHyybi3/CPW2FTnA37NvPPb+Gvx6XgJxnH/l7Q/wDA5/8Ays/bF9IzgSX/AC5xH/gEP/lp+0X2O49R+VSfY7j1H5VoeR70eR71/pz7Q/zKqmf9j9v1o+x+361qeR70fY/b9aPaEGX/AGZ/tVH/AGZ/tVufY/b9aPsft+tHtDnMf+zP9qq/9mf7VdBNZ1HNDB1o9oBj/wBmf7VH2P2/WtTyf+mFHke9a+1MzP8Asft+tH2P2/WtSGzomhrL2gHPeIrXboN42Olu/f2rnvhxD5s937In8zXXeK/+Rfv/APr1f+Vcz8Kf9fe/7kf82r+cONp3+kRw0/8Ap1W/9IrH9M8C6fRv4n/6/UP/AEuicr8TvCvk6XcefB/qoa+I/GH/ACNEkFwP+W1fop4v8NwanoN55/8Azxr87/ipiH4jahBAP3drNX6hxP8Auj8h4cqe1NzQZoIdL+w1ueG4T50c9cn4bvPPi/f16B4V02e8it54Lfza+SVX2rPqHS0PdPgPoMEJ+3V6fq1tu0a8kHa3c/pXKfCvQZ9Ntev+trtdShxoF+fS0f8A9BNfU5pb/VHHf9eav/pDPCyP/ksMB/1/pf8ApyJz/wAO4fNlux6Kn8zW3r95Y6PYXGq6rfR21naw+ZNdyzeVFFF/z1lrL+Fib5r0f7Ef82ry/wDbw8efEbwr8L5NK8D6JFLb6z5ttrGozf8ALKLyv9V/11l/e/8AfqWvzrwIr08P4O4CT71v/T1Q/TPH6nUreM2YQXaj/wCmKZ65o80GpRR31hPFLbyw+ZDNF/qpYq5P4qfDHw5Nf/8AC4p9Vl03UNBmsL2bUf3skUVrYyyyy/uov+etrc3MX/bWq/7Jd54/vPhp9h+I0Fj9o0ub7FZy2k3mSyxeV/y1/df5/wDRvWfFSz+Jv9jWeq/CuCK51CwmurmbTruby4r/AP4l915UXm/9dfKr9gw3squE9ofjeJ9rSrezPz//AOCh3x+8AfELwRZ/Djw5Y6leyaXeeX9r1aaWSKK6ill+1eVLL+9lli/dRf62WL97L/rf3UtfG+sQ/wBpS3E88El9eS/8tZZv9bX0x+1F4D0P+y5PEeleHdS0jT4tHsJPCvh67mtfNsNGli+1XUsv/LWX/T76LypfNl/1V1FL/qq+d9Ym/wBEk0qfSrbzJfKkhu/3vmxRfvf3UX/LL/lr/wCQv+uvm/G5tUq1K3PUPpMDTpUqP7s4fUrPyetU9S0e/g0aPXBYyfY7qaW2hm/5ZSyxeV5v/o2L/v7W5qUP73yIIKy4dNn1KwvP+JtFFHYQ/afsks3+t/exRfuv+mv/AMar5uqetTP6OPsft+tH2P2/WtDyPepPsft+tfuHtGflZn/Y/b9aPsft+takNnR9j9v1o9ozMz/sft+tR/Y/b9a1Psft+tH2P2/Wn7RmZl/Y/b9aj+x+361qfY/b9a8b+P3xmvvB/wAVdD+HOh+I5bK8utNlvZofJik+1fvf3UX72L/plL/qq5sbmNHCUfaVDfA4GtmFb2dM9Q+x+361J9j9v1ryOz+PHxFs9U8/VbHRJbP/AJ9IbOWKX/v75v8A7Sr0j4ffFrwTZ+F7Pxl+0HY3Phuz8R3n2fwrDpU322WW1/1Uuq3MXlReTaxf9Mv9bL/qq8R8Y5SqP8Q9afCebUqv8M1PI96p3lY/ir4qWPhXxReeFfFWhalZSWE3l+bNDFJFdRf8spYvKll82KWL97FL/wA8qz7P4teANSlkn/4SSK2/6+4Zbb/0bXYs8wdZfu6hz/2JmNL+JTLniQ+Z4fvm9LV/5Vz/AMJV3zXw/wBiP+bVuXuueHfEXhXU7vw1r9jqCR2riV7W8jk8vg8cc1h/CFN97dj/AGY/5tX4FxdXU/H/AIcl/wBOq3/pFU/ojgyhy/R34lj/ANPaP/pdE6Dx5PBo/g3UL6f/AFcUNfm38SJv7S8ZXl8P+Ws1foh+0VqX9m/DS8z/AMtYa/OPXpoIdVk8/wD57V+tcWYn/l2fjXC9K3tKhueFdNnmr2D4Yzf2DFH58H+t/wBdXl/hW8gs7D7RmvQPBPjCDzfIn/5418lhqtj6XEn0h8MdYg1i1j8j/llXaeJoBZ+HrvyjxLaPn8jXnf7MdnBeWFx/pH7z/WQ16f4vi2+G7w/9Ocn/AKCa+jzXEX4Oxq/6c1P/AEhnh5NClHjTAQ/6fUv/AEuJy/wfi82XUB6JH/Nq5T9sb4e+OPHnwW1Cx8AWP2nVLD/TbPT/ACf+Pr915UsX/fqX/wAhV2XwQtHu7rUVTtHF/Nq9S0HQYP7Zs8D959sir4HwJj7TwdwkfOr/AOnqh+k/SBrey8Zsb6Uf/TNM8r+Bvhvxjpnw00uDx/pVjba5LD5mpQ6d/qopf/3VdxDZ/uq1INHgh6QVJ/Zn+1X7Zhaf1ah7M/CsTV9rW9oeV/Fr9m/wR8YP9P12xtotQis/s3nTWfm2t1F+98qK5i/5e7WKWXzfK/56xRV+V/7RX7Dnxa+A8UmueKoJLnT7DUv7OvNRhhl+zRS+VFdfupf+eUv2n91L/wA9Ypa/aD7H7frXH/Hj4Y+B/ip8L7zwB8Rvtv8AY+qXlhHeRadD5ksv+lReVF/398r97XNmWW0cVROnA5lVwtax+BevWcH7zFc3qfavaP2nPh74V+G3xa8QeFPA/iO21bR7XUrqPR9RtNSiuftVr5v7r97F+682vK5tHuL2/jsYIJJZJf8AUwxV+Z4ql7Fn31J+2R/Rx/bGhjQf+EjgvopdP8nzPtcP+q8qrmmwzzWFvPfeX5ksP77ya+c/2S/jNY6x+zfZ+B76D+0pNLm+xalD9jljiitbrzfKi83/AL9f63/nrX0Z8PYZ5vBGlmexktpIrOKPypv+WVfpuGzGlij88xOG9iWPsft+tSfY/b9a0PI96Psft+tdvtTzPZGf9j9v1o+x+361qfY/b9aj8j3o9qP2Rl/Y/b9a/O/9rTx7fal+1zrHiPSvL/4pyaKys/33/PL/AFsX7r/pr5tfox4k1Kx8N6DeeJL7/j3sLOW5m/65RV+Vd7NquvX9544vvK8zWdSur2b/AJa/8ta8PPMT+5p0z6Dh/DWrVKh9x/AH4N2HxC8PaX8WfGOlS3Oka1LLH4P8M/a4ra58ZXXlf8ekZ839zaxZ/wBKuvN/df6r/W/6r1jTv2ZvixrmtX/in4rfC28vNV1CGKO7h0/QpZLG1iii8qK1tf3XleVF/wAsq8c/4Jg+JPiB428EePNV8ceMbnW/+Ecm8Oad4bu9R/eS2Fh5Wq/6LFL/AK2KL/Vfuq9z+Jv7Y3wa+G3xS8SfDnXf2btV1Kfwb4a0vUbzxBpOuS+bf/aotL/1VtLF+6/4/h/y0/5Y+9fimN9tVxlShTP13B1KVOjTr1DzzX/AfiPxJo0fwr8V6VqUnijQbP8A4pWa7h8r7VpcX72XT/8ArrF+9li/7axf8+sVeH6xZwfvBAa+s/jH8VNM+Knwf8OfFP4aXHjC30y+06XUdN0nVdR8q5tbq1urq1/5Zf6r97F+6lr5M8YfGzwrr2s3Guar8Ob2xkl+yyXkOn3kXlRSyxeb5v8Aqv8Alr+9l8r/AJZUYbE1loa1KdCWpX02+1Gwv44bK6eBJXCTKkuRMp65/CrniX4h+LPh55F94Tv4IZJmYSLdW/mRvjGM4ViOpqpY+IfDWoT20lit7bvM42wTtvyfr2pnxFjs200S3U7IY4ZmiKkA79ny4zzndjp2zX5lxNmVfB+KmU4mMruFOq1/4BUP2fgjJ6WaeFObYDl5fbVqEfnKpSSfyMX4nfEj40+PPhLJqvxbn8P6RZ3955fhuHToZYpb/wAr/W/62WX91/01/wCev7r/AK5fJfiq8gs9U8+ev08/YN/ZN+CXxO+DHif9rX9sX+19U8JeCQ1tpelm4fypo4lMsg+UiRlEkqbERkXzC24nJxn/AAw8cf8ABI+2/bEn8Yaz+zvPaeAm0QRadH4lsBqNpBqH8c0lniZ2jZcqoLSgN82wZHl/oEuO6mLhSrYxKKqPROVnb+Z6WS06s82v4DV8JjcfgcqqVMRLCRfPKnRvBzST9lFuonKpaSbSi+trvQ/OPTfG0F5YR+RB/wAsa2PAfiq+OsWf+j/9sq+jv2qrD9mrxt+0Vrep/stfDGHTvDF5eImlWKacqebKQA7Qxbd0UbyZKR9QCBheEX1rxL/wR6/aG+G3wP1D46eME8G6J/ZVkby70S51NI7uONSBgyBPI385C+bzkKDuIWuOjxwqtep7HCyqKF7uLVrLre3W2nc9zFfR7jl+DwdXNM4pYWeK5eSnVg1U5pJe64qT1i2lJ7RbSbV0R/sl+D9cHiPUNdmg8rS/sfl2cVe0/EDRoIfA+rSiIgrp8pBz/smvPviH/wAE9/j18IP2QLb9qNf2jInzYW1/f+H7PUJUjitpyojMV0Jdk8n7xMoFAPzbXfC7vm3w38RPiBqHiCysb/x1rM8E10iSwzanKyOpYAggtgg+ld+deKdLBZFiMFVwU4upSna8o7Si0novw3PO4a+i7LPs2jnWW57RrQwtZKajSqL3qUlKUfea6WtJJxd7ptH0x+zpD5t5qp7iOHH5vXba98QrHwT438L+HJ4Irm817XoraGH7Z5XlReb+9lr5T+KXiXxH4chsn8Pa/e2BlaQSmyuniL424ztIzjJ/OuHuPG/jS7vYtSuvF+qS3NuR5FxJqEjPHg5G1i2Rg8jHevhfDDxRocP+H2Fyv6u5ODqe9zJJ81SUtreZ+g8bfRczLxD40r8TU8xhSjWUEoOEm1yQjTeqklry326n1ZD+1d4H823gvfCutxyS/wCulh8qWKL/AMi/+0q3If2hPg7Nfx6V/wAJVL5n/TbTbryv+/vleVXxjY6zKupQ3Gs3N7cW3nq13FBemOSVMjcFdlcKxGQGKtg84PSvbNL/AGlP2TdO8Kjw1cfsQNey+VtfV7r4m3/2p2/v5SNUB9ggX2r9Cw3jRUlfmhy27t6/+Axf4nw2bfQ2zXB8vsK/t778kYLl837WtT/C579pvjzwBr1/HpWh+ONIvryX/l0tNSill/79VqXmm/bLaSxn/wBXLD5dfBeueJLUeJZdV8CJquk2ayBrG3udX+0T2/Az++SOLdzkghFwCBzjJ94/ZY/Y+/bW/a30o+LfAPi680/w+ly9s2va54imihaRApZERC0kmNwG4JtyCN2QRXo4Txq+t1vZQwUpP+7JffqtvU8/N/ofPh7Lvr+PzyjQpq13Vg1Zv7Ok2nLyi3fpc+F/+CkHgP8At79oL/hDtD+AFt4Nj8OXkWnalqNpNFbaZdWt1df6Bdeb5XlWkXlf+1f+eVfHfiTTdKi1q8n8N31zLZxXkv8AZs13D5UssX/TWLzZfK/7+1+2f7W3/BMn9rL4NeDNS8ffEaew8Z+HYbeA61f2OpPdeVHHIfK86G4VXZUeViCqsE3Mx2jJrwP4d6d+y54e8Ga34c+In7L2n+JL/UUK6VqkWqixGkkptZ44UgZJWbgN5u5SqqAowSfn8z8Q6McbyVMNOl1tJ/5Rd77drnqZF9GrEZtlP1zKM5pYyCaj+6hqnpe/PUgk4p8zTaly7JtpNfgP49vtN/ZVuND/AOEj025s5fFVrH/Ynk/6Ta+bFL/qpf8Anr/yyi/65eb/AM9a+yP2S/G0HjD4U6PY32qRS6p9jlkmtPO/1UXm+V+6/wCmVfmv4b+J3jjwrr1x4/0O+trK41nUvMvNJ8PQ+XbRWEv+tili/wCeX73/AMi19ef8E3/jZ8K/AWl3Hgfxj8QNI024l8291LUbu8i+y38vm/6qKX/VReVFX6NlOd+1xf8AEP5MxuW3on2B/Z1x6CpP7O/6Y/pXP6l+0h+z1psXnwfHfwlcyed/qbTxJayy/wDo2vN/iR+1R4V1jwvHrnwr8Y6JfSX/AO8s/OvP3X+iy+V5sv8Azyi82WL/AFv+t83915tfW/2mjw/7MrHtH9nXHoKP7M/2q4P4Y/tOeB/GFhcQar/xJNQi16XTptP1GaL/AFvmy/8AtL97/wBsq1Jvi1YzaDo+uW995sfiPTZbnR5dO8qWKXyv+WUX/PXzf+WX/LKtPryI/syuaHjzwHB488B6x4Hnnkto9Z026svNi/5ZebF5Vfmf42+Hs/hu/wBY8AW8/lf2DpsUcP7791L+9uopZf8AyFF/36r7os/2zPhzeWGr+MZ765is9L02WT99/wAe3mxeb/y1/wCWvm/uov8AVV8Z/GC8t7z4g+MPEljPL9nv7P8A0Pzv+ev2q683/wAhS+bXgZtiva+zse9kmGrUVU9ofTn/AASRggh+C3jjz4P9brGg+d/361WuC/b6106Z+0/8VLFvC+nXUcvgrw5++vPtX/ProH/PGX/plXqP/BM3R54fhF8QLGfy5JLXV9Bj/c/9MotUr6M+2eDvFUv/ABX/AMHfB2t3H2OK3mu9c8NxXMssUX+qil/56/6qL/v1X5fiMY8Lm1SpUP0jDYb61l1M8T/Z70j+0v2I/hffeRHF5Wj6p+6i/wBV/wAhrVa5v4hfB/xVo+qeLPGOueFf+JPrP/CLyaDdzeV5UvlaVL5v/kWvovxFYaTJbWGiaF4W0XRNMsofs9ppPh/TjbWsUXmyyf6rt+9klrwvx74WvdR8UWfgjwRf6ba65rPmyf2jqM/lRaXYRRebc3Usv/PKKKKWvN+s3rVPZnpfVrUqdzxvxXB4H0mwS9vrSeG4ilWe0W2EWDg5wcVk6lrPw618Qwanr2nSMQfKie/VW+YcjG4HPtXb+NoPA/xy8G3kHgDwdLpN54Oh83Tftfm/bvEel/8ALW7li/5ZXUUvm3Xlf88rryv9VYV8d3OkajqGu6ZfxrJMkV68mo3RlzmaKbyq+Q4s4PpcQVKeNjiJ0atKMknHqmnpumuq0eqdj9L8OeNcRkGKjlUqEKtLEVad+b7MuZJSWjTto1fZpNM+8vCfx0+Pmi/Bi50jwf5CeALdhHqC23hGyfS948sfvm+zmNnz5WS5LE7SSTivNPDvh/SfG/xDTVPCXhPTdX1ye4a5j03TdJhuI5GUFmxZohiKAAkp5e3APFe9/AP/AJQlfFH/ALGh/wD0bpteVf8ABIX/AJPy8Kf9eOp/+kM1fnlThDMKuIwdGeZVmqqi9ZN8t5Nae90P6nwmLw2ByfiLMcNQjTlgp1otRSj7b2dKNS82kneV7PfY5jQPBVpofxMtodA8NeV4p0/Vkkt9Njty08N2kgZV+zEH5g4H7spjjGO1dL+0V4s+I/xK8Vi9/aU1bU5dUgto4Ft9bLWnlxjLqBCNir94tnbk5zzWlJ/ymL/7rcP/AEvqj/wV9/5Pw8U/9g/TP/SKGsKvCGNoZdVmswq2jU5LXdno3d+9voengcV/afGGX4apFc9TBvEKpvOF5U06cXuovmu9VstDF1nw/wCKm+Eem23iCTxCfAaXRfSI7zULv+yFnJfJhDP5IcnzOV54b3pnhX9nDxDrlja+LvBnwh1y/tJD5lnqOn6ZczwybWIyrqCrYII4zyDXuHx2/wCUI/ww/wCxoX/0fqVdB8R/iLrfgP8A4If+DYPCdzPZnX7kaTeSxz4fyXvLuSYZAHyv5RUr/dcgk856ZcBVJuSrZhVcVRVTq90vd1ltrb9D5/8A1tzVYanHCQSlVzGpg9ZNRtFzvVdtXJ8t3Hr3Plz4tfCa/wBV8DaJr2m+JdMuta1HXW07TPBdlI9xq9ySADJ5EasUXftRQ5DOWO0HHPu/gr/gjXBpHg/T9c/aZ/ad0DwJqmqgGy0do4pCuVUmNpJpog0qlsMqBlB6M2a8n/4JTWHhHUP25/BqeLpAoiN3LpoabYGu1tpDED8p3dyBleQOTja31t+2V8ev+CZsH7QGseH/ANp/4GeLdY8WaSsVrcXZSfyjEEDx+SBeIojKvuGFAJYnqST9RwxkOUYLJFOpZqL5UpycU38TbcVe7votEl3MuNuJeNMn4ko8M5RKs/3TrznQoUqlTllNxjCMKklFQi17825SbaSstvi79s/9hD4q/sXa9ZJ4t1Cz1jQdXkkXR9e08MqylDzHLG3MUu0q23LKQfldtrY8Qr7m/wCCg37Ynwd+LX7I/hL4UfBr4NeM9O8Ppqsb6HrviXTDHarFaxvGYbaeR5WnYCTadrgoAASQdtfDNcec4fBYbHOOFleFk+9rrZN2uuzP1Dw2zbibOeFoVs+pcmIjKcXdKLkoyspShFyUJPaUb6NO2jRLZWd1qN5Fp9lA0s08qxwxouS7McAADqSTX6Cf8FUfiD4j/Zr+Bfwu/ZJ+Fl7L4e09tCM+uR6RI8H2gRqsYjLKcsrytPI4JO9trNk8n8/tHvxpWrWuqG3WX7NcpL5TkgPtYHacEHBxjgg190/8FutGuvEuofC/442NjJ/Z2teGnt/O2NhHytwiN2BKzMQOCdrdccdeWuVPJsZOn8XuLz5XLX79Lnz/ABtSo4vxI4cw2LSdG+Jmk9YurClHkunpeKcnHTR7FT/gjT8ePF2ufFvW/wBmzx/rNxrnhjxJ4duZE0rVpGuIY5kxvUK5IVJInlDrjDYXPSvkP45eApvhb8ZvFXw6msjb/wBi+ILuzjhIb5Y0lYJjcSSCoUgknIIOTX0h/wAEV/A2o+JP2xB4shs3a18O+Hby4uJ9p2o8oECLkcZIkfAPUK3HGR4J+1X4vt/Hv7S/j3xjaWohi1Dxbfyxxjd93z3AJ3EnJAyfcnAA4oxUpVOHqEqm6nNR/wANlf8AEMhpUcH4w5tRwcUqc8NQnVS0Xteaai7Lq6erdrv8/mCGHw5Nf2f9q6rH+6m/ff62P/W+V/qvK/8AatWNNvNVh8R3HirVfNstP877NZ6f50X7r97/AKryv/ItcnrF54jh1m3+3a5YxW8s0v2PUfOitrX/ANFeV/zy83/rrXtH7KOm+B/Hn7Q+j+Dvib4qtv8AhF7CH7brGoS+bLay2sX72WKL/lr5Uv8A0yr9SpYn2Ox/l0qSrM1P2hP2Y/GPwr8G2fjG+vrbVreWHzLz7JD+6i/e/wCtil/1V3a/8svNi/deb/0yltZbr53lvP3vkfvbaSL/AFP7mv1M+Hv7XXwW/bY0vxJ8Mr/4V6t/wkH/AAh914j0H/Q7X/RbC1uvsFrFFLLL+9l/e/8AXLypZf8ArlX5f/FTWPCmvRaffaH4cudI1T97HrEP9sfafNl82X/VReVFLaeVF/z1ll82vfwuOrVf4h0YnC0aX8Mz4dSE1rJ5E/7z/nlD/wAtasal421XR7COCx1y5iji/wCWNcnDP5P2g+R5Un/Lb/nl+9/5ZUTQ332C4n8iLzIv+eU3+qrq+tPuZeyR1ln8QvFUOhSeDr7XL6Kzlm8ya086XyvNi/8Aav8Ara+kPGHiSDWPtF8Z/tscusfvv3PlSy/vZf8All/2ylir5T0ea+vIo5/9X9g/4/IvJ/1X/LKvpTwfpl99qt5/Ito49Lmlj820m/1Xlfuv/jVZU8U/bGtSl+6PrD9mn4Az/EL4NyatY/GHxt4SvIvFV1ZXn/CJ69LYxX/2W1tYovNii/1vlebL/wB/Za9km/4Ja/tbabL9v0P9qnx1J/2ENY+2/wDo26rm/wDgm/DPr/7Mn27z5ZJP7elkmmm/e+bL/Z9h5teS/EafwTpv7Sn7UOq65cab9nj82S9/4nlt+6/4rPS/9b/zxr5qr7XFZhUPoKX7nB0z2LXvhX+1f8B9Ukv/AB9+1Rc3Ol6D/pusafd+FbD97axfvZYvtP8Ayy/df8ta5pvFXw38S/AW/wDi34r+Kegab4Y1nWI4/iB4hhl825EsUvm2OgWNtF+9uopfL+1S+V/rfKj8391FLXsN5o1j42/Y80Pw5pMH7zWfg/pdvZ/vvM/1uixRRV+f/jb4b65qX/BOeTQ/Dlj/AKRL8bLX/lt5flf8SqX/AFsv/LKL97XNhrVHUVQ6al/3fIfQXwR8ffBL9pDx5Zj9lP4hXOmeOdLvI5LPSvGuk2unSX8WfKk8v/SrqK7/AOmtr5kUssX/ACyl/e18+/tCfCjw18LP2hdX0rwddRpoerxJrdl4dOpG4n8N3Ds8c1jKe3zbpYj/AMtLWa1m/wCWldB+x9+z14j8E/tm/CO+8ceHLm2jv9BtdW02a7h/1v8AxJfNil/66+b5VV/2q/DepeEP2ldY8MeIPFFvreq6XoGg6fqutwXr3H9oXVvoemwzzb3+Y/vkk+/8/rXnZ5ONDLa0IvW3+R+heEdD654k5Y8RFSXtL2aTV1FtP5NJrs1czdK/aN+O3h/4Qa/8EvC+seJn8Gz6hBLq+lWFuGgmmZSww33gpwN6ghWITcGKgjh/Bf7Zs37OnxLtvGHw68W6lpOv6VOyQ39jCjhDnYysrkq6HoVZSpHUGtf4hWVl8PPh5Z+NvC+s3mt3fiewubfU/DNiwdrG7id44rhkXoDA5AMnB3HHSvmOT4e+PdT8++vPBOprJPd+asRs3/d/pXy2UYLC4rlqYio0opW9+zXXTtr2P6G40424wyrMMXgctwUJQqVaimnhnKM435bzsrTbikm3e68j7Q+Dv7QGoaH+0H4c/aV8bSX3iG5tvENtrd+013ie9YSLKcuwbBP09uK6L9uH9obw5+1J+0jrnxl8JeH73TdP1CO3htbfUZEMxSGFYg7BMqhYKCVDNj+8a8GFreReAbG0SG4E8dtaLtVSZEYGPkjrwRk/Q1vV8/VxNZYeVBP3HPm87pWvffZn7zluVYCtndHMp0XHEU8NCCkrqPLUk5SgofCnF00+6TS00PqLxH+0iPi//wAE7PDX7LXhP4X6o1/4S8QwyahrEl/ALd/NnlWARocSSPJJdFNgXC7QdzZIX0PxxoX7QXxD/wCCf/hP9kLRv2ZdeXV/DetNdXeqNrNkbd0V52XYBJvZmNw4KYG3YpDPuIH59a34u8ZaP4hsPCjNfabpt3r1heRa5aWkk0tuGjuIFEBWQfvJGF0PJQb5fJwOlfrx4V+ME+g/Cmz+JviPwrq//IBi1HUtO/deba/uovN83zfKr7ShgJ18JGrKbvOnGD+H4bLRafjufxzxD4nVuH+KcVllHBUXDC46tXg26zbq80480rVUndN+7ZR8j85bfwl8eP2cPipa6nb6dcaD4p8O3UN3asJYJHgk2rIjBcssgKsCVwwIOCOSK+2tK/bN/ZA/axi0Sf8Aa4/ZFvdQ8b2vk2MF3oqxSpes23AEgnhcIZGYiGTeqbzhjlq+a/2ovi34H+MHx41z4jfDjXI9S0e6+yx2eo2n/LXyrWKKX/yLVf4AwzzfGTw/P/y0ivIrn99/yyi/e+V/6TS19FlfDGHwmGk4zk4y3jLlcfWzjv5nx/FvjjnvFGMpVcRhKNOtSuoVaTr06sYvePPGsrxfZ3W9rXZ0/wC3d+3L4i/aU0uz+Dvw28AReDvh74bZTbaBE9uJJ2j3LFI6RgCFEQgLChKqWyWbKY+Z10PVXQOtoSGzgbhk468ZzX1L+yX8H/Dnxs+Mcmla54q1fw/HpfhW61H+29J1L7NdRfvYopf3v+qi/wCPmWsef9or9hmbxvHrk/7dvjL/AIV/FpsttNrerWeqXN1/bPmxeVa+VLa+b/qvN/e/6r/VVwZnwxgsTinUq1ptv/D9ySjZLyPoeFPH/iPh7KIYHLcvw1OnG72qttvVylJ1W5Sb3bbfTZJHzwPCXiJhuGmtj/rov+NfeH7C37Qmu/F74LJ+yT8fv2Y774naDoamS1vLO+tZLmwtV2rGrRzSxsPL3sqyrIrKjBAMCuK+Ek/7Bf7RfxB0/wCFfwP/AOCgVzq3iDWfN/s3Tpvh7+9l8qKWWX/j6tYv+WUUtfOf7RX7RX7TX7IvxH8cfDLw54xtorf+0pdJ03W9J8K2Gm3V1axeVL/rYoq5cFkNPL6rnSnLVWafK012acTLivx2zzinAxw2YYKg+SSnCUfbQnCa2lCUaqaav6d0z7C+O37a3w//AGZPBGrfs4/sbfsk+KPAuu+KLZI5dWv9LeC8jMrGNJERTLLKxBlSN2kXY5yoJBFfLv7Bv7bPwR/Y5+N7/FD4t+CJtesn06S2ivrC08660uRmH76ENhNzAFDllO1yQ2Mhvk+b48fE3UvEf/CZf25q9zrHnfaf7Wu9Sll/e/63zfNqv4k1LQ4PhzH/AKd/Zsd/ef6mGHzP+WX73yoov9V/n/nrXcsrp4jG06rqNOn8KSior0XLb9fuR8rhvGPMcDkeLyuGBpSji/405yxEqtTSycqjrc2i0S0jvprK/PwzaV/bNx4A1SxlvvNvPMvJpppfNi/5ZfvfNi8r/lrF/wA9ak03XtV82S+sbGT+z7qaKOztIf8ASbn/AEryv3vlf6qL/plF/wBMoqx7KaDUtL/tWx0qKK4/dRzah5P/AE18qKKWKLzfKl/1vlfuv+mtakPw3+I3w8/Zp8ceP9VvrK5/tTXtL8MWd3aXn72L/W3V1a/+QovN/wD3VehgadKrW9nUPxdHsGgaP8W/B/hfVPH8Fjpuk3Evhv8As7TbTVvKlvvK/tCKWL/Qf3svm/62X97F/wCRfKr5v8YeG/HF7qlxfX3hzxBbaf50smmxXcMsvlfvZf3Ussv/AF1l/wC/v/TWq+r/AAm1XyreeCDyvNh8zya6D4D/AANn8bfFXS/A99pPmx3/AJv/AKKllr6yngqVJG9TEe1/dnL/ALi8urOe+n+3XEXleTaed+9/65VHeazPZxeRP+882GWPzvOi/wBV/qq9Q+Knwl8VeBNek8OeHNc1Kyji8r/j01KX/nl5v/tWqfw9+D/jL4neI7Pw74c0OK5uJYf+JbL+6tv9VF+982X/AJa//bf+Wv8AyyzqYalSpe09oZU6nta3szl9G8YQaDf3FjB/q5Yf9d53lfvZYvKill/dfvf+etfWmveG/Dng/wAW65BpU8ttbxaldedNNef8sopf3UUv/TWXyq+V/iR4UvvB/jK30PXILaLVIrPytStPJ8rypfNl83/P/PWKvozQPP1L7ZBrk9zLJazXXk+d/rbqXzZfKlli82X/AJ5Vw08TRpVjq9mj68/4Jm/GbwrZ+DZP2erGC+i1ywh/t68/c/6L9lltbWL/AFv/AD1/1X/f3/rrTPi1/wAE4f2vPEvxe/aV8SaL8I1ubD4gw3UfhWU6zYf6d5vinSr/AI/e/uv9FtpJf3v/ADyr1D9iH9gP4l+CfEVx8c/HGgppviDxHoMv2vRbuaT7TbW0str9m8yLyvLil/0aT/lp5v619Lxfs+eN5YudDx/22rxamIrUsXUqU6Z731ei8JT56h538PPhxqvw++DfgfwB4+0r7FrGg+CdLstStPOik8qWK1ii/wBbXz3+0hqUEPwN+IngGD4WR6bb2viqwvbPW4tY/dS+Va6faxRRW3lf6ryvK/df9Mq9vk+KHwdb4nXfwft/iZZXPiOxu5be80mKWWTypYv9bF5n+q/dV4xp3xO8Aab4Wk8U/tF/CzUr2z8R+KpYv7E/tKWSX975XlS+VF+9ii/df63/AKZf9Na8D6y/bVJnpUvY2pnWeKvEn/Cvfhf8G/H0Hh3+0rjS4fC8dnay3nlRSyy6V9l/e/8Af2vBP2lPhTonjX9qyCXVNWg0m8+JN5pf2S1iP2gWEs2y22xtkfaIhszvyM46ivo/4s694I8VfC7R/H/h3S9Xj8P+F4bC5s/D3hmGW9uv3XleVF/z182L/wBqy18h/tLXmu/H79ozw/4/8D+DtSl0PwvDYW2va5qMPlS2Ev2r97LFbeV5sv8A2yil/wDatZSqOd6dRXi9Gd2EzfEZPi6WNwVR06tOSlGS3TX4PzTumtHoZP8AwUK+AMX7A/gvw/4wu/Hlp4sGu6jNa/ZrO3Ns1v5abwxJaTdkBuMDG2vmjQf2km8T6rHpOh+Abid5H2hhegDP/fFfZv8AwV01jwB+1F4N0Pwr8JNbi8Uah4X17/icQ6TDL/osUsUv+t/79f8AkWvK/gz+yv8ADLwTpen6rfQav9ol03y9StIdNllurCX97/rfK/exVhLKcnhhvaOn/wCTS/zP1Ol45eJ1TEW+urk/69Uf/kDw64/aEksfEFh4a1DwLNHc3+oraRqt8rYYttz90ZrvP2p9csv2XPiDfeBNZmj1X+z9SvrKe6tX2nzbaeWAoEUOd7PFxzt+dMtzWj4q/Zd8Y+MPAfiTw5pXhXVv7UsNesNR8H3cWgy/6V5Usv2r975X+qii/e/9Nf3X+trX/wCCo/wL1Xx/468V/Hzwd4c1aLR9Y8U3XkwywyyXMvmy+b5v2XyvNiil/wCmtOGT5M8RCMoWT83/AJnXX8cPEqOFqcmMXNyXi/ZUtH/4Bb8D5b8Z/FDVvFOsNLd+HYtOurfbdQzZuY54XVo0RDiQDMZSY8AD99LgSV9Y/HL9vzxvo/7I0fhXxjrniS91D4g+CZZLObzv9Fill1C6iuovtP8ArZYoovK/56/88pf+mXzP8H/gnP428W6X8OfH+q3vhLT/AN753iHVrOWKKw/dSyxf9svNiir3z/gpN8Dfhlo/hzwHfeB57G+0eX4ey+Tq2nzRSxXV1FdXUssvmxRRRf62X/nlF/1yr6ehLDPEUqMVZLRH86V8Xj8XVxGNxU3OpNuUpPVyk3dt+bbucf8Asf6953wgjg+0f6q8lj83/lrX0B8Kte1Xwf8AFXT9V1WCWKzi0ew8nzYf+Wvm3Uvlf9+rmKviv9mn4zaH4D8JR+G9csf3d/r1152o+d5flfurWvePip+1Ffal4t8N+FfB2lalex6X4P0uS81y70fy/wDSorX7V5X7r/tlF/39r1KmO9lW9mjzqdOk6XtD3z9kX9ur4H/s9/tXyaT8VL6WOO/8N/2T50X7yKKW6urWX975v7qKKKKLza/PPQfGHiPxJ8PvEngeyvtEi0uw8Yf2j/xMLOKXzZbr/wC1W3+q/wCmtc/o/wDwlXjb4l3Hirx/4O1v7Pf6lLJeRQwyxSyxSy/89fKrqPEfwTm1iw1y+8K+HJP7PtfNuYYrvUrWO583zYorX/W/vZf9b/qovN/1X/TKXyj6zRpVf3h0+19lR/dnWfs0/tOfFT9nv4l6f8VPCvwy8Gy65oPmyaPd/wBjxReV+68r/l0li8391LLF/wA9a90/aK+P198crrxp4x8OaJq1t/wkejy2U0Ph7zdNiupfKil82KKX/ll/o3lSxS+b+6ll/wCutfJc3wx8Veb4kgg8U6TbR6NZxSQ6hd/arGLVPN/59vtcUXm+V/7S/debXoHgP4qfFvw34D8J/CS3v45ZLrx5Lc+G9W07R5ZbnWZYvKi8qK+i/wBbFFLF/qov+evm/wDPKuirVwdX94c1N1meb+FfCvxivNUuLG+8HeJJJLCGK5mhtNBllltYpYvN83yv+WUXlS+b/wB+q9Y17wrPpvww0/VfEfm3Md/Z/aZrS0/1v+tli8qX/trFLL/21r6A+DP/AAUg/bL+H1/4g8HfGL9nPxJZW/i2H7NDd/8AIJ+wSy2sVrLdfvbWX/nlbSxeb5UUXlS+b/ra87+JHiTxH8VJdLn+Kn+k6hpemxW0MU0PlxRRRSy/6qL/AJZV4P1mj7b3zoqYb2R8/wDgnQfiP8TotU0rVb6+1u8v4ZbmG0077VF/1ylli+y/58qKvWNX02Dwf+yh4X8AeP8Aw5q2m65L8frDWtSmu9Nuvs1rYS2v2X97L5Xlf+RfNl82vmfxh8TvHHw8/wBH/wCEc8r/AKe5popf/RVcnr3xy8R6xYR2F9Bbf66KX9z/ANMpfNr6n+zcHSre0pnFTqH0x42vNW03Wbi+0rSrm9s5fKkhltP3v/TL/tl/qq2P2OviRB4V/ah8L654xglsdPimuvOmu/3UUX+iy14P8Q/jNpVnYaPP4H+03vm6bF/aX9o2cUflXXlfvYovKll/deb/AMtZfK/65Vx958YPEd5D9n/sq2i/7+16tSpSdH2ZnTpVfbe0PtD4/ftCeB7z4tSDQ/s3+lWdrJDd/bP3X/HrF+6/9G13n7Ovwm8Y+MPgtH+15P4dudJ8J694q/sHTbS7s5Yvt/7r/SrrzfK/1Xm+bF+6/wCWvmxf8sq+C/EmvaVNoOl6rpWqX32yWH/TLSb/AFUX/XKv3D/4JM2lh8fPgZoeiaHq1rqPw7sPhvoNlZw2vlRf2X4jtZbr+1IpYv8AW+bLLcxXX73/AFvmxS14OY1aqwnsKZ62U4Kk8X7eofG/7bn7HXxA/ZY8U2GqfEDUo9V0vxFF9s0DXDCJcy/62Wwuf+eVzFL5ssX/ACyli/1X72KWKvKPhj4knh8ZaXPPPbf2fFeRSXlpD/yytfN/9FV7p/wWp+J4+H3xe8Z/B7xF4ykuYvFPi+w1aytIfst7/ZdrY6LFa+b5Xm/upbq6luYv+WX/AB6y/wDPX978P6b/AGrDa2+uWMHmaf8A8uc2rWcUcsv/AFyi/e1y0sFSxK9pUM8xw/ssZ+7P6S/2aviPqfxa/Zz0P4j2Vx5l5qmg+Z5v/TXyq/Mz9vz42QaD+1p4k8Af8IPZR6h50smsf8I9eRebfyyxRSxebLL/AMsvNitrryvK/wBb/wBcopa+7f8Agnp8VPDMH7FXwysfGnjyI6pF4KsI582ssQii8r91F/yyi/dRfuvN/wCmVfm1488N6V8WviDrnxU1y+ll1TxHNLJqV3FeSxeb5v8Ayy/65f8ALKvBx2No0v3ftDrzDan7Q8X03xjqvlf2roelalc3n2Py5tP8ny/KuvNli/1X73/pl+9l8r/lr/yyr0zUte+JvirWZPEfiPxVq1zJL5Xk2nnfZrb91/1y/wDjv/f2rGj+CfDng/zIPDljHF5v+ul8nzJZf+ustR3vn+bJXz1XE0qv8M8t46rSpezpmf5Gu6PYf2VY/wCjW8v/AC6af+6iqnNDrkP+o+0xR1oTTT+b+4n/AO21RzTT+VJB58vl/wDPauf2pxe1Zz82varZzeRBqtz5n/PaGauk0f45fHDw3LHfaV8VNfiji/eQwy6xLLF/36rLvIb68l/1Hmx+TVOGG/h/fweZL5VHtQ+s11/y8PZNN/4KEfEaz17wfYeP76KWz/t6WS8u9Oh+zXN1/wAS/UJYrX91+68qWXyov9VX0p4D/be/Zs8bSxw6rNJol5/1FrP/ANqxf+1fKr4P8N/CXSvjNrFv4V1X+17G4sIbrVtHm0SaKKWK/tbWWWLzf+/Uv+q/6ZVHeTX2papJqurX0kskv7yaWab97XZUp/uqdQ9qlnWLo4Q/SDX/AIA/Aj4qWH9tz+DtIvY7/wDef2jp/wC6ll/7axV5f48/4Jy/DLXvMn8K+I7nSJJZvMmhu4ftMXlf88ov9VL/AN/ZZa+T/Cvjbxx8Pb/+1fA3irUrG4/6dJvKr2z4e/8ABSD4jaFL/ZXxG8OW2rW/ab/j2l/+NVFOrqdNLNsvxa/eUzm/Hv8AwTf+Juj20n9laTbalHL/ANAnUvK8qL/tr5X/AJCrxf4hfCXxV8PbW3g1zSr2xklvIo7O01Gzltpf9b/yyilr9APhj+2Z8FvidLHY/wBqyaJcS/6n+1vKiil/7a/6r/v7Vj9q7yP+EI8P6HfWMUkeqfELQbKaKaH/AFsX9oRS/wDtKu3B1W8VTCpl2ErUvaYeofnPN4Vghi/07Spbb/prD/qqrzabPef8t4pf+u1fpJ42/ZL+C3irzJoNKk0mSX/XS6dN5X/kL/VRf9+q8X8V/wDBPfXJrr/inPFWk3scs3/MRhltvK/79eb5v/kKud1a9zmqZTi6R8dzeG7fyv8Ajxkjk/6Y13n7LupfB2b4l6f4cn1TxtpviTzpbf8AtHRPKiii/dSy/wDPKWWX/Vf8sq9A8YfsT/GLQBJPY+Dr6W3i/wCW1pNFc+b/ANsopfNryvQfhv8AtC+Dv2gvD/hyfw5rek2/ijUvsWj65LoPlS2F1LF5Xm+VLF/21/1tejl1V1Kn7w5sPh61Gr+8pnpk37YH7TXw38Uap4c1XVdN8QR2F5Lbf8TDTYov9VL/ANMvKrm/g/8AtCeDvEmqeIPFXxp8AWPiSSXWJbKbTrSzitvsv/LX/W+V5sv/ADy/1tYfxa1fxH4V+KviTSr7wp/aX2XXrqObUYof9b+9/wBbWfoPiTQ9OsLiex8OW0Ul1N9pm/c+XL5v+fKrieJ9lTqA8RW7H5d/8Jhrmpf6Dquq3Mkcv/PWarnnT+V/r65+8037HF5//LSKb99DW5ZwzzRRzfvfLr9LOc6Cz1j91mf/AFlWP7Yh9Kz7O8sYYv3+lW0n/f3/AOO1oQ6lpXlY/sOxj/7bS/8Ax2o9ozoJLub7ZFH5A/1VfdX/AASb/aR+KHwY+Hvi/SfDXxIvNG0u51O1lFpHLmIS+TiWX/pjwY/+/Uf/ADyr4RmmsZuPIii/7bV9mf8ABLbwf8OfiR8PvjJ/wnE97Lb+EvBMuvQ6faTReVL5UUvm/wCt/wCuUVeJnzf9n1HTPuvDnEZbgeLKc8xp+0pe/wD+kGF/wU08Zaz43/aKtvE3i3xBeapfXvhu1klub+78yQfvZYv/AGlXz54k8YeKvG119unH+h2vlW0PlQ+VFF/nyq9//wCCmHhXTPhj+1T4o+HPh4SfYPC+m2Ftps115Xm/vdPiuv8A0bLLVD4S/s62/jb9mnWPEZgi+z6XNF/Zuo3esfZrX7V5trFLFLF/rZZf9Oi8ryv+eUvmxeV+9ivLqreWwOHjKpgsTxNi6mCp2pe0P1A/ZRu54f2Wvgvqs8FzZSXXhuwsobSab91L/wAS+WXzf/JavmPw3NZal4S0+fSppJbeWzi8nzv+eXlV3H7N/wC11PL8B/g/pX/CHWP2Ow8bReFLPVv7e/deba6L5VrLL/ov7rzftP8A5C/6a1Y8N/Bn4tw3WoaTfQeVJ/aV/wCTNaaDL9l8r7VL5XlebF/zyr8+lhqrxFQOIsLVxeDw/szz/Uob6GWQQTxf9/qy7yW/mlj8+CL/AK417JefsmeP7y68+e+klk/56ww2sX/t1Vyz/Ynvry1/07XLnzP+2X/22rWGrHyf9i4vueFw2c95/wAsJf8A0bViz0G+82P/AJ5/88pa90sv2XfCugy/Ydc+I1tHJ53+ql1KKL/2lFXUf8Mo+Dpoo/t195v/ADx/fXX/AMdo+pVTpp5BV/5eVD5jPhu+ml8iexkj/wCuX+qqPUtBuNN/5CtvLbf9sa+vNH/Zv8AabF/x5W3mf9ef/wAd82tjTfhL4H00f6iO5/7c4o//AEVFQsEaf2BRPjP4PXnjHTbrWJ4PA1zqVx5Nrp2g634e82Xyr+6uv+eX+ti821tr6L/lrVez8E+OJov+JV4V1u5/ff6mLTZa+3IfBHhzQZZNV0Oy/wBI+xyx+TNqUvlSxf8APL/rl+6iqvps0EMUk/irwBpttJ/rP+JT/pP/ALSil/8AIVdNLBM7quW0auEp0/8An2fGdn8IPibNLHB/wg97FH/zym8qP/0bWxZ/s0/FvUpf+RN/d/8ATa8i/wDaUstfYGjzeFbOWT+xL795F+7mi/tKWXyv+2Xm/uq0JvEljD/y3jrp+pUrGX9k4NHyHpv7HPxUvLryPPisv+usN1/8arpNY8H/AB3+EsXw38Oa54q+26H/AMLO0uWz0mX/AFUUsXmyxRRS/wDLL/VS17Zr37S3wW8Ky+R4j+Lfhayk/wCeN3r0UUteN/tLftXfA/xVL8P5/Dnxb0S+/sb4kWGo6l9k1KKTyrWKKXzZa7cHhbVYETw+EwtL92fWl58SPEV5/qPAFtFJ/wBNtY/+1Vl/8JJ8Rppf+QVolt/39krxPWP+ChH7K+j/APH98YtN/wC3SGW5/wDRUVcnr3/BUT9mWzlj/srxxJc+bN++/wCJbdReVF/36pvC1bnoLH0bH0hPN8VJpf8AkY9Nij/55Rab/wDba83+P03ir/hKPhX/AG54q+2x/wDC1LD9z5MUX/LrdV43r3/BW79nPTZc6VPq+pf9crPy/wD0bXlfxO/4KW+APHt1pdwL7UraPRtYi1azhh0GKWX7VF/qv3v2qj2Val/y7M6mNon2p4w+A/wx8beJ7jxV4q8K6Je3F1N5nm3ej2ssv/f3yqr2f7PfwW02bz7HwrY23/XpD5VfE+pf8FVr/wC1f6Drmt+X/wBge1/+O1Ho/wDwVKvtSl8jVfEepWMfnf8AH3/ZtrJWfsqv/Po5vrmDPz38K/DHXPHmveE/B1jpWmxx+LdSi0HQZf3sUUt19qi/1v8A1ylua9s1j/gk78TfhvF9v+I37SXwy0iOL/mH/wDCSS/bpYv+WvlReV+9l/7axV853l3448bePJPEdjpV7e3kt59pmlmmlllurqWX/W+bL/01rsIfBH7Ses3UljB4Vl8yL/nteRRxf9/fNr7SpVor+JUPEp1D3TUv2Of+CfmmWsnn/tieMr3UPOi/5kmK2ii/79XV15v/AH9rLl+AP7BXhuWO+n8ceMvEkf8ArJodO16Ky/8ARthLXl//AAz3+1teS+R/wrm5/wC/0X/x2tiH9hv9sTUvs9vB4Oi8y6/5Zf2lF5sVZ1Mdlv8Az8D97VZ3E3hX9gOG6jn0rwr8RI44oZf9E1bxha3MUsv/AGytbXyq9s/YD039mzwH4S+OEGh65q0tndfB/wAvUrvUfK83ypbqKK6iii/7axf8tf8AlrXmej/8Eef2vfEmgx32lX0cd5L+8+yXf7v/AMi+bXoHwH/4JL/tl+D9B+IHhzxHBY20ni3wrFotnNaaxFL/AMxXT7+Xzf8Apl5VtLF/21rycyx2XVsJ7OnUPoMow+Lo4v2hz/8AwWq8beCLz9r3XNC0P4Zabbap5Ol3OpeJ4ry6+03Uv9nxfuvK83yv9V5X/LKKqf7N/jDwBoH7POuar9i1L/hKPJ/fajp+sRW3m2HlRf6J5XlS/wDLXzf3v7ryv+2v7r6s+IX/AASRg/aK+N3iT44fFTxVc2X9vQxR2en6j5Utza+VaxWvmy+VL5X/ACy82L97/wA8v+uVHgn/AIIM/DLR7W40PxV+0Z4gvdLuv+WWn6bFbS/+RfNriw2ZYSjhKdM7cZgsXVzCpUX/AC8OL/YV+J3wP8SfDnxRB8YvH9tLb2HxI/4kOrXcP2aKK/utK+y2t1/zyi/dW1z/AK3/AK6/62v0As5v3UcH/LSvH/hL/wAEwfgf8K/h9cfCux1WS+0eXWP7W+13emxf2nLdRebFFLLc/wDTKKX/AJZRRf8Ao2vXIf2Y/g7+8vvEfhWLUtQlm8y81C7mlilupf8AlrL/AK3yq8SpiKX1upUpnp/vvqlOmE81jZ/v76+jj/66zVl3nirwPNF+/wBc02WP/preRV2Fn8JfgtptpHBB8MvDcg/6baPFLL/5FrQs9N8K6PF/xI/Ctjbf9emmxRUfWUZfVjzuHxt4HMvkQeI9I/65RXkVXP7YsRa/bvPj8uL/AJaxV3n2yebzP9Ilto/+mM1cH4k+DMHiuWS+n+MXju2/ff8ALprHlf8AkLyqPa0jP2Z5/wDGb9pbwd8H/BEnj+4mttSs/wDnjaalF5sv/XKvmPxt/wAFdIIbW3/4RX4c/Zrz/ltFd6lFJF/6K/8AjVfUHxC/YP8Ag9488seMfGPiTUv33/MQmiuf/aVeZ69/wSv/AGZbyL/iVeIrmWT/AJ4/6LF/7a16OGqZd/y8qHm4nD5j/wAuz5v1L/gr18cLyPyINK8L23/TaHTZfNi/8i15/wCMP+CkH7Sevf6j4xSWMf8Azx06ztYv/aVfRHjD/glf8OdHlkvrEyfY/wDlt5X2q5l/8hWFeT+MP2M/A/huWOD+w7n97/qf+JDdRf8Ao21ir0sP/Z1X4DzamGzH7dQ8P8SftXfGHXpY59c+MXiCXyv3kP8AxOJY/Kri9Y+JFxrEvnar4kub6T/nrNN5leqa98H9K026kgg8HW0sf/Pbyaw5vhvY4z/wh1j/AN+a9alg6B5VSnX/AOXh5fN4k0rr59V5vEmlf6/z69MvPhLPeRSX3/CK/u/+e32Osv8A4VNYf9ASOtfq0V1MvZM4P/hKtKm6z1HN4kg/5/q7ib4P2MXXQ6pz/BOCbppVafVkHsmcXN4wg/571H/wl0P/AD2rsLz4P6VD+/8AsMlU5vhLof8Azwkp/VQOX/4Sr/nvcVX/AOEkg83Pn10k3wl0KD9/5ElV5vhXpWP9RLR9VNP3Jyfg7TZ7y6jn8i5lk/5Y+V/y1r6o/Z703XNGi/cfDK5tv3PmTahdw+X+6/55fva9M8H/AAl8O+FbW3sILCKW4im/1sNn/rYov+WVegWepeDobW4vp/tMf7mWOGH/AMhV+ZZlxB9aXs6dM88NH02eaKP7dPbW0n73/pr/ANNfKrQs9Bns/wB/9ol8z91+5/561HDr2h2Zj0r7D5v/AC0mi+2fvfNqnN8QrGG6/f6VL/1ym/z/AJ8qvl/bVzoudppnxI8c+G4o4LHXL6P/AKYwzV2Gj/tOfFTQdPkF9PFc/wDPGaWGvI7PxjcXkVn5EH+t/d1H/aWuTS3HnmXzP3X7mL/rr/8AbaPa1i6eNxdL+HUPeNM/bS8VQ/8AIVsbH915v+q/6612ng/9szwrqUsdj4j0qS2kr5PvP7c/su4/tXy45Iv9d5X/AE1q5oOmwQ/v4Z5fMl/13/TKumniap20s6zGl/y8PuzTfjZ8K9Si8+DxjbeXL/qf31dJZ6lpV5F9ogvo5I5a/PeHWIJv3HnxyR+TFJDN/n/llXSeD/if4q021k+w+KpLKSL935MM1dKxlY9aln//AD8PuyGaDp/7WqSab/rnXx34P/bM1zw3L9h1zVYtSjl/5a+d/qq3Lz/god4O021kvvIj8v8A67f+Qv8ArrXdSruqenSzvCVT6khxDLJ599L+9/5Y/uqkhgsPK8jz5Zf+us3m18/+A/8AgoR8AfFV/cWP/CY2VtJFNFH++vIo/Nil/wCWteoeG/jx8K9YluIP+Eqto5LW8ltpvOm/5axSxRS/+jYq6PZVjspYqhVO08mxh/1FvHR9kh/596x/+FheB5pfsP8Ablt5kXlRzeT+8/e/6qpP+FkeFYYri/8At37u183zpvO/1VZ+yZvdGhNo8Ev7/wCw0f2DAf8AUaVHF/2xqPTfG2h6x5f9lTxXMcsPmedFN+6rQ+2fuv8AXx1S9uhaGPeeA7HUovIv9KtpY5f+WM0Nc+fgP8K5r+TXLjwBokuoS/u5ru702KWX/wAi13nnGaL/AI+Kj/cQ3Xn+RFF+5/540fWcQL2dA4P/AIUn8OYZY57HwPpHmf8ATHR7X/41WhqXg8TWvkWOlW0X/XazrsJryq80NL61iA9lQPN9N+Fd9NYXGlaroek6bb/8sf7Jhil83/pr5UsX/wAdrzPxJ+wT4O16Xzxqur/67zJoYtStbbzf+/VrX0h5ME3WpP7Ngm6z1pSx2Mpf8vA+rUOx8V/Ej/glf4A1jS5L7wrfXtjqH/PL7Z5sX/kXyq8vs/8Agkj8RptU/wBI8R6b9j/57TXnlSy/+ja/SCXw3BN/qJ46rzeGu0FdtLO8wpf8vDmqZbhKv/Ls/Pez/wCCS85Mn/CR/Ea2i/7B+jy3Pm/+iq6iz/4JO/Aiawj+3eJPFPmf9sov/RsVfbE2gzw9YKj/ALBnm6QU6mdZhV/5eC/s7Cf8+z8o9B8VeI/EkVvrog82zih/1s37r/P73za2NHvPtnhz7dqt95sd1D5nk+d/y1/5a/8AtX/v1Xg9n+054As/C/26e+li/wCJbFHDFqP+t/deV/zy/wBb/wA8q4PWP25PEc0X2H7dF9n+2SyeT9jii/e/89fN/wBbXiU8pxlX/l2fmZ9iWepf2bdRwTwW3mS+bHN/y0/6Zf8Ax2i9m0qzurf7dPLJHLNF5P77/lr+9/df9/Ypf+/VfB8v7WnjGbxbH4j8+STyppf3Xnf8spf/AGrVPxT+1p8VPGHlz3+ueVJFDLH+6h/1sXmyy/vf+/stb/6uYs0PvDWJTB+4/tWKKS1mli/4l3/LXypf3v8A8d/7a1l/8LC8OabFJP8A25Y+Z9j/AOW37rzf3X/o397XwfeftCfEbUbryJ/GNzFH/wA8YZv9V+68r/0VWHrHjbXNYupLjVdVlkrqpcL/APPyoV7M/QD/AIaQ+GWm23/CR6r4q+03EUMUV5FaTf8ALXzf+mv/AF1/79S1y/iX9vb4fw38euaGPKjihlj+yRfvf3v7r97+9/7a18N/2xPNL/r6jh1j97XdS4cwlL4zY+iNS/bY8Y/b/tFj5n7qb9z5s3+f+WVZepftgfE28tZIPt3lebDLH+5m8v8A1teJ/wBpedzUnnfuq9WlluDpf8uwPTLz9oT4gXn7+DW5Yo/9X+6mrL1L4qeKteupL6+1W5kkuv8AXTedXF+dB9l/cVYGpQH/AFH+rirpWFoIDoLPxVfQyxz+fL5ldBo/xa8Y+FZZJ9D8VXtt9qh+zTfZLyWLzYq83m1iYfv/AN3F5VEGsf6yH/ptWvskX7ZntGm/tdfGmG1+wweP7791eeZ/rv8AprFL/rf+uvlVX1j9q74qaxaSaVqvjjUrmzlm/wBVNeS1439s/e/aPPohvP3Un7/93R7Kga/Wa3/Pw988H/td/E3whDJB4c8cavZeb/yytNSlji/5616RoP8AwUU+NMMVvYwfGnxJ5n7rzv8AicS//Ha+P/7Sgm/cf8s6kh1jyZaPZUA+s4v/AJ+H3ZoP/BT74/QyxwD4xav+98ryYpf3n/o2uwh/4KoftGaPFJPP8TYpY4of332vTbX/AONV+cc2uz+b50E3+qrQh8YXwikt/P8A9bS9lR/59mn17F/8/D9MPCv/AAVp/aFmi+3wX+iX0csMUn77Tf8A7bXWWX/BXT4t+V/p3g7w3c/9coZYv/atflvoPxU1zR4fIsf3f/x2tyz+NgP/ACwk/dfvKf1HLv8An2dFLNcX/wA/D9QLP/gsB4x/d+f8K9J/8DJa6DQf+CwEE0vka58JP3f/AC2+yax/9qr8o7z4wX0OoR+RPFJH5P76Kuk8H/GCfUr+SC+n/wCWNZf2bl//AD7Nf7bxh+vHhX/gqh8Adei8jXLHV9Ik/wCmtn5v/oqvUPB/7Wn7PPjyL/inPippEsn/ADxmm8uvxbm+J2lWejRzz/u/9VF++qx4b+JGk6xdSWMF9FJJFD5n+urnq5Bg6v8ADO6nndY/dTTfFWlalF5+larbXMf/AExm82rkPiSC8ij8j/Vyw/62vwf039pzxH4Vtbifw54x1K28qaX/AI9LyWLyvKr2D4V/t+ftJ+G9Bt76D4m3NzHF/wAsbv8AexV5tXIP+fdQ6aWd0j81/tdx5XkefJ+6/wCm1EM0/wDy3/5a1Thmo+2e/wClfTHx5ofbP3vSpPP9qz5v/RVH2z3/AEoA0Ptnv+lHnfvPOxWf53m1JDN5Vc4FyG8qSH9/+/xWfNN5MuaPtn+soA1IZv8ApvVj+0/9msuGb/V/89KIZj5sldAGhNqU8Mv/AG2o+2fvf+utZ/nQTfv6kGYf9RP5tc4FwXnneXBR50/2ryP+eVZ8OpeTL0o+2fvf3FdAGh+/8z7PUf8AaX/Lvmqc95/rBb/9saP9TL5Hn0AXPO/e0Q3n/LcGqfnf6v8Acf8ALGpPOg8qSCCegC5DNUn2v9z/AK/95WX5wgi5/wCWU1SfbP8AV0AbFneTwxf6+j+0/I/cYrLhvP3UlV5tS87/AFFAGxNqX73z6ks/Ek9n1nrHmvIP+2lFBodBeeKr68lkn/56zVJo/jC+03zJ4J/9bDLHXN+d+9qSGb97QBuXniSe8uvP/wCWn/Lauk0f4nX2m6V9h8+WT9z5defzXnkxfaJ6IdS/df6+gD//2Q==\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCADgAOADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwfwf8VL7xtpeh/GnXNcubn7Bo+l+HJru7hi/1Xlf6V/5NXNtL5v8A0yr1j9q7WPGPhv4N+H/sM9tY2eg69FczSzTRf6rypdL/APRupy/+Rf8AnlFXzP8AB/TfFU3wW1iCDSorn+wdSv7aG0h/1v2qL/Sopf8Av7X058Zte8OfE39n3xZBBBba3b6XoMtzo813DFHL9qii8391/wCQv+/VfJU6p+gYzDfuqZ4fD4b128+FWl2OreMb7RJP+Fe+Zo8Np5sn2qWXUJbWL91/01ii/wDIv+tr1jRrz47/APCb6fB9o0TzLXw3YWXnTaPdebLF/aH7q6l8q6/56xRf+iq8f8B69/wsLRtP0L/RrmTRtB0aPzpoZfKiii1+6l8qX/llL/yy/wC2X/bWvZPB3xCn1L4l+R4N0qP+0Lrw3Fouj2mo+VcyxXX2qX/SpfKi/wCWXleb5v8Ayy8r/W1qv4Riv4tQPj9rHxG8VS6h8DtdvtW1vxBdXn76GKHyrGK1v/sv+t/1sv7qWK28r97/AKryv+esteoXnw38HanrOj6rBoerXN54S8H2FtpurTTS2MX7q6ltfKtvK/5evtVt/qv/AEb5VfPl/wDFfw74A8Q3cnw3uLjZY6yLaWK8i+23Pmxy/wDLWX/VS+bL5sv/AF1r0C18RaxaC2a3vJQbWzW3iimnaeEL5kkkjeRJmEtI0hyxTciqFjKAvv58XmeEy2MXWb12sr7H0/CXh7xJxy6tPJoRfsknJylypc17Lrq7N7bJnq/wT1PSpviXHpXjjVbmPR7Wb+0fDeoWk0VtLf2HlRf63ypf+eX7r/trL/zyr74+Cc0Gj+HLOxuJ7mWS6h/c+d/5C/8AIVfnrqnhr9pHwFZ2Hxw8S/BnVrHTLyRRb6xqvh2f7Ld+ZGBGpkkHIOwOmGGWG4Zr2Dxp8T/+CgH7LvhPTPHXxN+DtlpOna9LIdO1HUtMDsiyb5RaOI5s24G9isMgR8IeDtNTDiPBRi5OE7JXfuvRPZvsme5iPA3i2tUp0o4jC81RuMF7eN5SjrKMVa8nFatK7XU+2vEmsT6Ppck8Fv5snk/ua+F/23vGGleML/7docEccnneZ5M3m+VLLFFF5svm/wDPL/Wxf8sv9VXPXv8AwUs/aHv4J7a507w0Un++v9my8dOn77joPyFeS+MPi/4x8bWd/p2rtaLbajHbpNBFaghPJbdGUL7mUg+9TW4xympT5Vzfd/wTrofRr8R41Oaao/8Agz/7UT4qfEjw54j0H7D4V0q2tvNs4rb7Jd/u4vNi/debL/01liirxe88B+KvGGjR3/gfSrnUpP3Ufm2kP+ixSxfuv3ssv/XX/tl+6rtbjR7a7t4bG4kka2huluFtiw2M46hhjlW7r0PoK6rwh4/n8FwT22meGdJljuLF7R0ubdyPLdY1cYDjO4RJnORxXGuJ8qlHWUovyX/BPZX0efEClHlhGi/Wp/8AankE3iT47+CZbiDXPCtzHZ3WmxfbIfO/e/vYrr97/wBNf+Pnzf8Av1Xvn7MXxy8AeKviXb6VPrltYya94butFvP3MXm/6qW//ey/63919muf/AquH8RXM3ihLOHVJpjFZRRxwxRXMiqVj2bM4bPGxOmOlZnjLwd4D8a6jFqd94E022kijC/6IJQHcIyCVt7tltrEentXHX4toU6kI04ucF30O6j9HPi6eGkqsqanLe0/+AVtSh1Wz+HOn+AJ/FX263sNNl0X7X+98rzZf9F/df8AbXyq+iP2fdPvZbDUNVuD/o5PmSy15X8H/gP8TPiDZDwx8K/hhr3itrOd7m7ez06a8kZnlaYmZkGB87Eg8H3ruda8Q/EP4NeE7/4UfEj4c6x4d1WUhoI77T5LZvL75WXBPI4I4P4V89xLmNfMsGlQg+R7trQ+o4U8Lc24cxUqdWpTnWSvyRmnO3fl0djkv2j/AIj6T4ohtxpP+q8mWvkf4qQma/kngr33WtCm1LykgmVVjj2jfnNcza/snfFn43eJYfCXwz0aXWdUnVmh07TbSaeZ1UZYhY0JwACSegFaZPUwmGtTT3FxJwnxhiqcq9TCtRim224pJLq23ZJdz4017TZ/+Fg6hqs8/lxy6b/rv/jX/fqtSbUoJvCUc9jpX/HrN5dn/wA9fKl/dRf+iq+sfF3/AARN/wCCgmv332m0+BevrGYEjaKXw9e44fd2h9K5Txl/wSD/AG1PhLoEfi/4qeBb/RbCGVY2vtQ0a8gt1djhVLtDgEnpnrX3UcdhqVC821byl/kfhT4F4kxmPlChSjKUnZJVKTbfZJTuz55m/wCPqT7P5v72bzJv+usv+trQmvP7Nuv3EHm2/wDrP+mUX/TKvYfBv7Bnxn8Va0vhzwbJa6pfXjYg07S7e4nlkP8AsokZY/lWv46/4JvftRfBu8GnfFLQJPDxvFzBHrOm3VuZR/s+ZEA34Vks5wDg5qei62dvvsd8vC/jmniY4aWCaqSV1HmhzNd0ua7XyPI9S1KC8tbi+8+Ly/Oi/wBV/wBcqz9N/wBM0a8g8+XzP9X+5r0nxf8As6614I8PS+Kby60yeCyihknjWSQt5m0JMUygB8wkZyRXmX7jRv3/AO7kjl/10v8A11/5a/8AbKujD4rD4uDnRlzJaHzee8MZ3wzio4bNKDpTlHmSdtYttX0b6pr5Fe8/cy/bvP8AL8qbzauf2xY6lpcdxPP5Xlf6N/n/AL+1T1mGD+xri+g837RL5XnS1h6bD/zwgk/1PmV0eyPB/gnWQ69YQRf6P+8/6YwzfupapzfZ7O/jvr7yorf/AJc4f+Wsv73/AFvlRf8ALL/prVezs7ez+zwZ8q387zIZv+mX+t/9FVT16e+1LxlJPPP5kf8Ax7ed/q4vKi/dRVoctU+uPhX4Dn0f4ya54Og1yW2j8W+G4ta02787915vmy2EsXlf8tfN82pPAfw30r4qeCNLg8K332K30bwrfx6xq2o6l9m+1XUVrLa/9sopZfN/+1ebXJ/ELxV4q8K/8I38TfDl9qXmeEtYluYZZv8Alla3XlRXUX+q8r/VRW3/AJFr1SHXvhV4P8OSeFfhXoccVnYfEjzdHlu5vM/0C60rzfKl/wCesXm6v/21iryaVM+pxmJ19meL/sozHwr4N8UaHfat/ocupaN/b0UMMXmxRRXX7rypZf8AVf62X/nr/wAsq2PEvxOg+EvxavNVsfs1tcXWm/2TNLd6b+9i+1f62WKL/ll5UUsv/bL/AKay1w/w9m8OTWHjzStVvpLb7VqXhyP+0PsfmReV5vlS/vf9bF/yyl/7ZVoax4b8RfGzWdc8c+HIP+JHf+KotA0H7X/rZZb6WWLyv+/X/oqumler+8PMr/uqtSmd18Mvg14P0b4ew6t428I3M+owmGUJd+bJFJLL5X7r97/y1r76/wCCUf7JXjf4v/H7QfjPqvg2WXwV4X1NprrU5lj8qS9jiZ4Y1V2Bk2yeWzFFbb8ucbga/OTwjd+M/FXiLTfh/wCDb6y1K9aKRLWKXWDLbWtoJrrMsvmfu4pfN/1Xm/8APWL/AJ6xV+jX/BHTx3410j9sbRfAel+K9Qt9E1e1vpNU0mK7dbe6eOzmaNpIwdrMp5BIyK8vMY0JZvg1WTacnt3vG1/K+/kftHhnUzWj4ccUVMvnGE40oNuSb9xQrc/LZq0+W/K3dJ2uj1P/AIKtfE7/AIKA+FNZ1KHWBcaH8LLrX4k0C50c2+ZWhCvEZ5YiZULOhkVXKglRgZTA8g/bT/aU/bz+JvwS8GeH/wBpTwcmi+GdXgW/0y9t9L+ztrbINqy3B3sFcAlxGFiBDq+wgoa5H/gob8WPib42/ah8ceDPF3j7V9S0jQfGGoRaLpl7fvJBZJ5pXEUZO1OABwOgAr3n/gqr/wAmi/s5f9iuP/SCwryMZXqYuWOqQqzUYpKzd7+/Zr/CruyR+wcN5Zg+H6fC2ExOAwsqtZ1GpwpuLhahzxkm226slGPtJyvdq6SaTXzn4T/4J/ftj+NZNCGgfALXHh8R2H23TL2aNIrfyMnDyyuwWAkDIWQqzAqVBDAnF/aB/ZJ+P/7L+oadp/xo8Ay6Z/ayM2nXENzFcwzlSAyCSFmXeMjKEhsEHGCDX6B/trftWePv2X/2DPhVo/wk19bLW/FHh3T7WPWIotzwWsVhEZXi3rhXYvGoYjcoZiAGAK+Hf8EsrbxZ+1r+1yfH/wC0F4yu/F7+CfD73emw+JZpLwpM0qpEyeZlE2MzOMkEPtZQSCy54jJstji4YGjKTrS5dXblV0m76Xel306HVk/iTxrW4exXFOY0qEMvoe1XJFVPbVHCThFpuXJBOdou6ltJ2StbyXwh/wAEuv25fGvhWPxdpfwOuba3mRmhttV1G2s7lgPWCeRZEz2DAZ69CDXifjPwR4x+HXiS58HePvC9/o2q2bBbrTtTtHhmiyAwyjgEAggg9CCCODX61/FvSdX8ZfF2bxzo/wDwVe0jwpBZ3gFj4XsGsBa2qo3+qmRrsfaGyDvMoOSSMKuFHzZ/wWs8a/Arx9qXgPV/AvxA0LX/ABTbWdxb6xPoN6kyfZco0e/yy4X94ZSqmTcA54YEMLzXIMHhMFOrTk04NfFKD5ru2ii7rvZ9Dm4D8W+I+IeJsNl+No0508RGTvSpYiDoOMXJKpKrFQmmvd5oWXN5NX+E61fA3ha68ceNtH8FWTss2r6pb2UTJHuIaWRUBAyM8t0yPrWVXpn7GWraToX7Wfw41bXZFS0h8ZaeZWeFXAzOoGQ3HUjnqOo5Ar5bDwjVxEIS2bS+9n7xnGKrYHKcRiaSvKEJyS7uMW0vvR9uftw/td61/wAE69H8Ifshfsm2Njp39maCl1qOq39mlxLh5GC/KfkMsjLLJIxU58xdoXmj4JfGSX/gqj+yL4/+EXx50u1bxd4Rt11LRtX0u1WNnk8qQwTCMnAfejxyBdqskwA2nkeBf8Fl9O1Cy/bd1K6vS3lXfh/T5bTMYA8sRFDg/wAXzo/J+nYV3/8AwQuimsvin8QvE95Js0yx8JxrelowVDGcOpJPTCxycd+fQV9vDHYmtxJPAzf7l80OT7Kik0tPle+5/L2K4XyTLfBahxVQgv7RiqWJ+sf8vZVZ1IyknLdqXM4crvHyPhUgg4IwR1Fdp8Cv2hPi7+zZ4zPj34N+L5dJ1F7ZredhCksc8TYJSSOQFXGQCMjggEYIzXM+Jru0v/EmoX+n4+zz30skGIVj+QuSvyLwvBHA4HQVRr4aFSpQqqdOTTWzWjP6mxOEwmaYGWHxdKM6c1aUJJSi09001Zr1R9RaT/wVo/4KBa7qltomjfEW0uby8uEgtbaHwvZM8sjsFVFHlckkgAe9fQv/AAVY/aN+Inwv/Zq8Kfsy+J/Gi6h4z8U6bFdeNr61jjizAhBaMJGqhEkmBVcdUhcNncc+I/8ABIn4B6T41+Muo/tDfEBY4fC/w2smv5bm6wIje7WMZJPGI0V5SexWP1rwz9rP4+6r+0z8f/EXxf1BpFg1C8KaVbyH/j3so/kgjx2OwAtjqzMe9fUf2jj6GRyqVqspSrPlim27RXxP5v3fvPwxcHcJZr4oUcLlmAo0qOWxVWtKFOEeavP+DTbST9yKdVra/Lc+4Z/Gtn/wSy/YH8IeJ/ht4B06Xx/8Q1t5dU1LUC00YdoTMWfaw3CON1RI1ITczOdx3b0/YO/bb8Uft6axr37Jf7WnhLSvEOnavoUtzDeWtibdm8t1LJIIyFXG5WSRAjIyDkkgjjfgH+0N+yT+15+yjov7IP7XXipvCGr+Fmhi8NeI2utqzKisscgmeMxwlUPlPHKdrDaVYNgJ7r+wL+zd+xh+zX8WrrR/hn8frXx94+1LRpcy2k0UsdnYq6M5VYN6RFiYgTJIWbACgAsD7uCliMTi8O8LVj9W5VFwuu3vRlHrJu+ttdz8p4mpZPk3D+bRzzA1nnXtalSnXVOo7pSvSq06yuoUqceW8eZctuW11p+Sv7Z/w7vfhHfeO/hlrVs9o+h6pNZlbwHPlpcAIxOBkMm1g2MEMCODXx5r2j/Y9GuPIn82OL/Uxed/rf8APm191f8ABTXxJpGqfGj4veINLL3lrP4rvlhBh3eYTdbNu3Jyu7j3HOB0r4t17yNY+zweFb62i+yzSyTRed/n91WGQQhTpVow2VSSXpoeX47YjEYvN8rr1/4k8HSlLp7zlNvT1OX8m+vNLk0qexl8uWzi8nyYf+Wvm/8A22o7PR9Khv8A7DPf+b+5ltppof8AVf62ukvNX8iKOxgvrmOzlmlkmil/debF/qqz9SmvtNEmlQX3mxxf67/rl/zyr6I/Capl6leaHDpcdjPB5skvlSQyy/uvKi8r97WHpvkXmtXE/nyxWf2OL/pr+9/e/wDtWrGpef5Umq31j5kcX7v99DWX4JvPO1TVID/q/wB1H5VaHMfamjw6VD4N1TwPcaVLqV5dalFbfZP+eUXlfvf/ACL5VY/7NPhvXP8AhYPij9kL/hI5dX1Cw8YRXvhW7mh8yKWL+ytQi82X/nl/qtI/65f9sq1PCusQaPa/8JHpXiPypJZrqOaWaaWOWKWWLyv/ACFLFXL2evfEa8/bN0v/AIU7qsWk+JNZ0eKOzu5Zv3tr/wAtfN/6ay+VF/y1/wBbXiYKpWaPss6pYSjX/dnj/wDaWq6D4N8YX+lT6bbf2pDpcf2vUYfLl837VF+6tv8Apr+683/rlay19afFr9m/4SeG9C+FfwP+HWuXP2jXrzy/ElpD4wlii1T7LF5sv7r/AJZf6Vbf63/nrLXyX/Y/hzU/DnxAuINK+22dhZ2tlps13D+9tZZZftUUv/TKXytMli/7epa+uPgDDqvjb4tXl9B4cvdbj8G6DqkegzTWfmSy/atQi+yy/wCt/eyyxWN9F/yy/exS/wDPWvTw38L2Z81jf4vtBuqfs5eFPC/xEn0fRbKz0jU9O1Yk6fJZ/Zre6i/tS1tYvMi83/prF/5C8r/lrX0Z/wAErPFPh3wV+2p4b8UeLNWjsNOtbK/Fzezo3lQh7WSMNIwBEabnGXcqijksK86+KvxK8G+KJLvxZDbyaleW/ifTLXTdWtJovKsIoxa/upf/AAG/z/ra0v2NbqK3+L80d5qENtaTeHr9L57hcoYfJLNk9VxtD7l5GyvIzeEVm+B5f5m/ucWft3hXipR8M+KpyV17GCte2ko1ovWz79hP20I7jW/2p/GXinTNPvW0/wAS+Mb6TQLmbT5oRqAaYkCJZEVnPIGAM/pX0X/wUc8QaV8Tv2X/AIDeHfh613rF7ovhoLqltZ6XclrY/ZbeLEmYxsO+3l+VsMQu4DaQa4a8+JF98Wv2btQ/4Sqxkto4tYl/c+d/zyl8r/v7+9l/7axf8sq8zvf+GtvDfjK80PSvibZR2cVnFq2g2k155kuqWv2qWKX/AKZeb5vlRS/9MpYv+msVbR4epxhXj7T+Lvpt73Npr+Z58/HLF18VlVd4FJ5ffkXtH716Xsve9ztrpbU9u/4KTfGL4WfED9nP4C+AfBXjqy1LW9G8NBdT0qAOJ7Yi1tosOjKCh3wv8rYYjDAbWBPm/wCwB8Rvi3+zT8ebL4t6N8FvE/iHSWt5NP1u10vTJyzW8u0sylUKl0Kq4VuG24yudw43UtH+Jpls9V+MVjF/bH2OL7Hd2mmyxxf9cv3v/XX/AMhV+gX/AAT/ALhbD4fmyP8ArJZd5r8p8SOLnwbj6eMguafNTj2tolfr22PtMn45+o+E9bCVsCqtGcqsXGU2m1VnKcvejFWs5OzSvonuZ3xA/wCCWv7Kv7RnxBm+PnhX4va14Z0bXbt77V/D0mk/ZpfNZyZTEt0qSW245O143ALEqNpVR86/8FAvAnw/8WeKtE8D/si/sg6/Y6X4a08W134psvCl9C2rnAwrRtEpkKHOZ5AZJCSM7VUt+rmhSyPpOJhkkcZqjFFZ2bu0siZJ6V9LnGY06uW4ethKUIKuuao2ndPeyu3ZX7H5jw34zcR5PmdGvi5VMTHDxcaNOdXljFNct58kIurJR0TndLV2va34VR/s9fH2U4i+B3jBsddvhm6P/tOk/wCFTfHTwJe2/ia6+FHifTnsbhJ4bi88PTosbowZSd8eOCBweK/an4kfE7QPhdp39qzzYEknWvjD9tP9oq78b2kliuti3tJbPzPL8393j/nrX5dPi+msQsLQSnVUrSab5Iru5bn71wz44cS8UYmNJZZTVOWjfPJ/hynReNrX9lD/AIKlfD7wz4q+J3xQT4b/ABK0TS/s+sJdW/lRY3Esn+kbFlj3BpI9su5BKQ2Sa5T4kfG79j7/AIJsfsr+Kfg9+z18Y9L8YeOPFzC11bW5JY5IYUkjaMyF0/chY0MgSLe7eZNubcuRXxF4r8e+L9Vhj0WytbzT31OXy4rlPKxHF/y1lMX/ACy/6Zf9NZYq80+NGjXev/DHV9KsNPkuriS3Bt4Y+pkDAr+oFfp+E4kq4n97UpQjWkrOor3s1a9r2UrdR4Pg6MspxMFi6s8BhJKrDBtx9m5czmoSny+0dKMlpBt9LttXf1x/wTX8M/8ABPX4l6x4lX9rv4oaRbT21lHJodhqfiT+zrOSI7vMm89JELSqQoWMsAQWIV/4PA/i3qXwc0T4m69pXwq8drqPhq21SZNDv9QlSOae1DkRu445Ixzhc9dq52j4zs/G3iP4eyyQeKvCtzbW/wDq/Nmh/dfuooov+uX/ACyrqNS8S6VrGgx6rpXlRxy2f77yv+evm16Usto18HCikk4t+8l7zv3d+h4GD8X83wfEeKx8lOftlBKhKo/ZU+VWbguW6ct33bd76W/Uz4r/ALWP7Mn7Pv8AwTS8Nfs8fA/49eGNU8R+PmNz4ylsdUVZrdWw1xHKjMGjYlY7cBwC8SFgMEGvi3/hPfApj84eNNJ2Ho/9oxY7993sfyPpXxr8WoT9gs77z/LkimrH0Gb/AI/LGef/AD5VdmLymOYKEpT5VGKiklokvn1ep5XDvjFieFKtfD08Gqk69WdWpUlN80pTfW0UrRilFJaWWyP2v/ZT1r/glx+0j+y3a/Ab4o/Fnwd8PfiRZatNMniabUYY573kbHM0z7HjKOqG3LrhkLqq7sn1Dwl8WP8Agnn/AMEqvAfinxN8PP2o/DHxD+JmsaZ9n0qKHVLeSNBuBVCLd3WGPcVkk3ybnEQC4NfgRo/2G81mQX37qP7H/wDHaz7O8M2vSTz2MUlvF+7/AH3/AD1r1sNg6NGEZRjFVYrlU7arS17Xs5eZ8FnfiDmuY42tRr1KssFWqe1qYd1bxk+ZScFNwdSNJtK9NStbZo+yv2gPiH4f8XeBtfvpfHGnSX+oSee8kFzEzNK06sSqKf72eAMCvmnUoZ/DdrqmqwX0sUcv7u8/5a/8tf8A91UnnWOp6rJPYz/vJf3n7mb91/01/wA/9MqNevP+JX5899L+983zv+msv+f/AEVRluXxy6i6alzXd7v5f5HmeIHHNfj7NaWNq0I0fZ01TUYttWUpSvql/Na3kU73XoLy18++vvNktf8AntDF/wBNap6PrH+lW+leRJ/z0ml8797LWPDZz3mqyWPn+ZH50scPlf8ALWWrE15fTWsdxBY/u4ppfJ8mvYPzs0NY02x1K61CDQ7iWKP/AKazf9daz/hXpulXmqXk8/8Ao0f9vfYry7/5ZRRfuv3taF5D/wASHUJ4IIvMis5ZPK/6a+VWf4Jm8nUNUsf9ZJdaxdRzQ/8AfqgKm57ppvxC0rWPh9cX0EEssYvJbnUrSGb97F5Uv73/AJZfuv8AW/8AkWsebXvFWj+N9L+KljfSRapFrGl6dpvnXnmeVFLay+b/AO0v+/tV/hveaH4O1nT/AIjX1x5en3/7uaGaH7T9lurWKLypfK/5a/8ALW1/55ebLFXD6l4kgm8L3lxYzxS6h50Umm+TN5Uv+q8rza83DU/ZUT6DNsTVxWL/AHh7JoWpQal8X/HH9q2MdtHqnjbVI7zSZvN8r/RfN8qL/llL/wAvMsVemfsH6D8RviFpf/CcarfalZXl/eRaTeXdp/z4WtrL/qvKli/dS3X2n/v1F/1yl8T+D/hvxHefEHxx4qnv7a++y6xrMd5dw/vPNuov3vm/vf8Anr+9r2j9iH4zfDLQfg3pc/iMWNz4g0GHVLazhl/5axXUssv/AG1/1tz+6/7a/wDXLppVP3x5GJ/hUyz40+J+q6F4h8R6VBEbi0XX7W/mmH7q2ubWO7xF5UX+t8r97F/5FrtPBWr3um+JLaw09ljl1ZxpyXTFQLYzEIJSWdQApxk56ZryDx/4jgvr7XtTnvpba31XRnEOnw/vP9KimEvlf9cv3Xm/9ta7/XNc0/QdJuJ9Q06S5W4ge2RI5zGR5iFWJPcbCwweucDnFeLm875rg35v/wBtP27wwhbw14pX/Tqn+VU6/wCGPxI0r4e+HPsE8HlR2viq6kvNPlvPNii/1XlSy+b/ANdZYvNqT4heMJ/EkVn4x0OC91K40HTZf7H86b97LdRS/wDIP/1v73zZbm5i/debL+9/6ZVx/wAJdYvvEmjeKJ/Eeq20cn7rUYdR8797L9q8q1/9GxRf9/bqsP4kWd98PfFtv4V8OX1tLb/2DFJ+5s5ZPKlluopZfs3/ADyi825itfN/6Zf9+vfdWx+G0cL7av7M+qPBWv2/xl0bw+fDtxc3tt5FrZadNND+9uoov3UUv/bWL97/ANta/S79lb4ES/DvRrafWrTy5zafNED0r8/v+CVfgbxFrnjCHUfGWl+VJZavLeTmWLH70/vZf3f/AF1r9XNGuHuJEuDHsBj4B7V+CU8JlXE/iBUhi6ntPq9SE/Z//Jn6Dx7nVbAZJg8nw+n7te09S/PJaada4cbcDjNcF4q1GafU3iiPyfWtv4jXs8SweT61zZ06W4bzpjy9fn/j1xhi8zzCpw7gadvq/IfmmVYdU17V9TzT9pXRbbXvhldfbT+7swbj8q+CvjjeT+JhaaX4YaL7ZHFx537yKLyv+Wsv/TKvv79ou6k0/wAEXenW0/Ih3zYh8yTy+/FfKvxY+G8/h2W1a9sLeLU7i033dra/8u//AE7Re0f+f9bX5vwPjv7MoOGI/ic5+/eGeOoUIeyqdW7Hy1oXwVmsLifXtV1W51LVBYmP7XN/qvK83zf3UX/LL/ll/wB+q8/gs1vLa63/AHYrZpD+BH+NfdnwS+ANz401TOpWX+gPZSvKSO6oTXxl8MNKGs67cWLqWVrFyyjuNy8V+zZHnNTEYXE1n9hR/U/ojhzMMDj8uzTB4fenGCl/29z2/Jnh/irwTPeXUnn/AOr/AOW1pXi/irwfffD26jGlTy/2Pfzfvof+eVfWHxC8Ez6lr1xBBffZo7WHzJvK/wDRVfN/xfh0qHVLPwPY28sUn2OK5mmh/eyyxf6qL/tlLL+6r9Q4fzKriz8B4xy2jQpe0X8Q8f8AidrFjNpcelTT+ZefbP30v/PXyvNrj9H17Vft8ljpUHmyXU37nzqPiDrF9o+p/wBk/vI4/wDWTaf53+ql/wBV/wCiqufDeCCa/wBQn8j/AFUMUf8A39//AHVfoa/dUD8cftsTjNQh0HxHDLJcarfRx/8AXGpIRrmm3VxfeRF+9m8yaGGb/Wy1salL7fu5aLyzv/stvPPP+8l/1P8A6Kp06gVcFSNTwf4k+2aDZz2M8f2iL9350v8Ay1rU8ValBDa/bp54pbe6/efZIpv9VL/z1/8AItcPZ/8AEn1SOf8A5d5ZvLmh/wCmv+trpLPTYLuWS+n8ry4v9dD5Nanmv/n2V/Osfsv26D/j4i/eQw1qabDPNL9o/wCWcX+u/wCmX/LWsPTYf9P8if8A5ZVqQ6lfQ2v+o/d/6r/Xf88ov/ItdBzVTY1jz7y6vJ54P3l1Zy+TLF/y1l/1vlVxfw316xs/G2seT/rL+88z/U/9da7z+0rLUvCVxrkE/lyRQ+ZDDD/yyl/5ZV5/4b+z6P4jvJ55/KvJYbWOz/66y/8ALWtDmPWDo2l+KtG8QaHqs8cUlhNLJ5003m/8fV1FL+6i/wCWv/2qWvP4dR1zUvC2oaVqv/HxF9quf3X/AD1i8rzYv+mX/PX/APdV6x8QvBP/AAjd/od7PPJ9j16zutOmlh/56xRRXUUX/kWWvM4bKxhutc+3eIvs1vf6DfyQzXc0X/H1FF5sUXm/9NfK8r/pr/qv+Wtedhv4R7eZU6tKt7Q9I/Zj+J2laP4I8UWN/P5Vxqk32n/j8+zf6391LL/01/dSy+b/ANda9c/Zd1/wppv7Mkfge+sdJi1Cw02/1bzdWs/Miv8A7V+9itf/AEVXyPZ+JL6z+H154VMEsUd1/wAvcU37rzYov+eX/bWX/v7XsHhXxJ/wjdrpc9jB9pkls7Xzv33+q8r975X/AKKrU4v4oax9tGq22leHr+SSIXT5tbv95KP30v7rzZf3v/PKvoLxZfTaXokuowWSXBgIdoW53KD83y7l3ADJPXaoZuNu4ebeHvhFf+JnfUtT1q3s7ldThllguoebaLzf3okrt/ipKI/CpGwsXnWMALkYYMrZ9tpNfP5r/wAjTCer/Q/dfDN+08N+J/8Ar3T/ACqnP/Dfxt4j0fxlqF9/ZVtLHLpsVzD9rh/1ssXm+V5v/TWKWWKX/tlVzR5p/G11p9jBqtz9sutS+zTfvv3UsXleVF/36l8qX/tlXB3l5fWcv/E1g+zXkX7v/nnXq/7D3wu8Q/GL4z2Hh/RtEuLwQzebeRRf88qviDMaWAy2pOZ+dcO5XGvioVnsj9gf+CfnwpstKsrvVBZgSTiOTzj6/wDLSvrxrcrCEiH3R2rj/gz8PbXwP4UsdPijAeO0jEhP0rr7i/igIiaQdOoNfL+H2RUcpyGrmGaL2dTET3/ufYPiOKs2edZ3Urw2v+RyXjpZ5lt/+mctZ+rShbDaB8+OK3ppl1OVxIAcSVh+MLO7tpIorfG9xX87+ImWVufMM4w9T2lOpyQ/9sM8JU1p02crJp+l+NNSaxvYI7iPTJo7iUHtL1i/+Of9+68B+L/gTWfiX8S7tNDi/eRReX/37NfSnhTSItJkeyklLySjN1Lj/Wyf89KrxaD4f0XWLvUFgEc91LmaU96/JcPTq4HCU8VB+/79P/t8+qynOKuVYudSlvbQzfgX8JrbwP8ACOaLVLWOW+i0uXz7oRY8yTYcmvyC+A0N7Jr+rSafp5upItBlcQJtMjjzYgQgbhm56fWv2c8V/FfwP4C8IXFt4i1KK0F15dlAG6yTXLLDEn4ySgV+I3gHxp4q+H+rXHinwjpUF/Pb6dP51jPqK2pnjKHIR2IBkVtrqmRvKBc/NX9N5RQyupwHQw2X1I1Kyg1Vt/Ppv8j9x8EsVjq2R8RYmpe7VFr/AMqkmvf8I5oPhLUNcnh82T7ZLJeTTf8ALKWL/nrXyvptn4j+JHxGk8caqbb7HdTXVzZw/wDLXyovKii/9FRS/wDf2vQP2tP2lvCuvaDJpXhyxvYtQ1T/AEbUov8All/21rg5viFY3nhK88VeCLGL+0P9F8OaPp/nf9Mv3Uv/AH982vtsjy3MMvy7nqU/3lQ5c7zXKs1zCnShU9yn7589/H7QYLz4lax5H+sim/1X/bKqfg+aez/fz/uvtX7v/v1Wh8ZtN8V+G/G8kHiPVY7m4lh+0+baf9+v/aVSTabBDYSQQf8ALrqUsdfpFKq3l1M/HatNf27UsEM0E115E9bH9nQf2XzP+8im8yb/AK5VzZgn83z4a6jTfs/2uPz54pbeX93NLRTNMSZd5o8M2jXGlX1jLJcS/vLOrHg/WL4afp9jqsHlXEv7yG7h/exS1cvJr7yrPXfI/d+T5cMXnf5/561Tm8iHwv8AYYPKjkl1iX7Haf8APKL/AJZf5/6ZV3U9j57GfxS54k1iCG/j0OefzZLr/U+T/wAsov8AMVV7zQPDmm2txPB+9kl/eTTRTf8ALX/rl5tU7zTbjw1f6X9ut/s0l1/y2/1nm+V/y1/9G/8Afqo9Sh87/lv5X/LP97/qpa6Dzqm5qaxD4chjjvtKnvf9Ps5fOhmvPN8qWKsvQIYLzxbqn2648y4i0HS/7Nu5f3vlS+VF/n/tlUf2z+zfC9xBfWMnl/6z/rl/1y/6ZVJpmm303xGuPt0H/MNsIvJ/7ZRRUGZ6hNrE+pfCWz+3X3/IpXkXnTRf8tfKl8r/ANJZYv8AMtU/B+g2HiT4c+PNK1yCOL7Bo8slnd2kP73zYopZYv8Atl/o1Z95NBoOqXGleI9clij1nR5bK8/1XmxSxRS+VF/21i/df9dYq1PhveX+pfC/xJ9h/wBZL4Juv7S/feX5ssVrL/8AHa86l/z8PfxNP2vtKZy+jnPwbjvp5/8ASIv3f+p/5ZV6x+zfDY+MNZ1DQv3Uvm/8w6a88vzZfK8qKWL/AKaxf63/AL9V5PZzeT8FbyCCf/VTeX5P/PL97FXcTQ+I4pfsPhXzbb7LqUskMUU3+q/1UXlf9/baX/v1Wv8Ay+OL/l0er/DD4qpoVvquqyQGO+uLCSfT7QXnm20UhMsn+f8Av7/0yro/jDfx6d4Vjnktnk3XiIDE2HjJVhuX3H8ia8haa+muri+1XSb6O4utQkkm+1/8spfO/e/+Ra9X+NV1Lp3h7TtXS0jmSz161lkjlXKkBiAD9WKj8a8DN53zPCvzf6H7n4Ywt4ccTf8AXun+VUwPGHgPxV4q1mz/ANBk+0ap9lj02H/plL/qv8/9Mq/Wv/gjj+xJcfs8fD298VfEfQLH+3NYnSS0uhGJZIrYD90I5K+Bv2JfAC/FX9p3w54E8P6HcyTyWXm/vZv+PW6l/e+b/wBcooov/Itftxo+lx+DfCVnp0lwZP7NhjSSXH39lflviDnVX+06WHX8On79T/5A/Mcfif7P4ap4am/3lfV9+Tod7qk9xa6YBERuAwa4261G8OqSebMcR4StzVdTmvbOa1x/qwK5/UHZdXVRFnzQHJr5Pxdz6rmNajLBVKipw9n/AO3Q/wDSj4PAU1Dc37G3S0ijEk3zum41Brlsuo3kflSj931rI1/WJ7e9i8qX5Dbpisn4OpPP4j8cX93el/M8URERH/ln/wASuwGK4KGf5LxDjq/CtOn/AA7f+Schp7CpSp+3ubOp6d9ksrvVSf8AVCvnn4nfFbxvq0ySeHL6w02SGKWO8+1QySRSR9fN/wBbF/q//jlfRfi69Hk3Gk5+SQYJr5f+N3gTxv8ADrwnrfjyfxLp2jWNnDmDUbq68sD3l9K/LOIcFl0uIfqWXf8ALv8Aif4+eR9lwnSwdarbE/G/gueV/tUftAeOfgJqNl4p+JV9pd/p3hfw9O+n3QjlBvtTnBhilijl/wBZLFax3scv73/ltX56+Lo76XSNljqVzZ4lVp7i1kVHSIcv855TgHBX5s4A61oftN/Hn4k/GzUrLwhZXsg8MeFdUEmiNqAxLNJ5UUtzL5Y/56S/89f+WUsX/TWuQ+PGpXOk+AXv7a+8kLcKsqZwJlZWUofzB/4DX9CcDZB/ZOCpQl8U2r/L/hz+muEsIsk4IzuMoWnGnBvz+Ox5dDptjDqkeqz30lzb/vZIYrvypPK8qXyv+/tZ/iT+ypviDoeuaVBbfaIobr7ZN/z1/wBVFF/6Nrl9e8SX2g2tv/oMfmRebLNL/wBNf+eVRzeJP9Pt9Vz/AK2GXyf/ACF5tfrWJw1aquemfguBx1Gk+Sp/z8Of+P0P9peKNPn/AOWktn5f/kWufmmg/saTyJ44pJZvM8n/AJ5SxS1ofE7WPtl/HP58X7qz/wC/X+tqvo9nY6xdXE/kfvIppZJv+2stengqfssvp3PDzWqsVxDU9mU9N8+ztY9V8R2/2bT5Zq9I+BGg+HPFWvf2Vff6TZ2sMsn2T/yFXHzXkFnYSQar/wBtvO/1VdR+yXDYab481TS9Kn823ls5bmz/AH3+q/exfuq7cN+9PPzH91RqQ9odx8bNB0Pw3YaX/wAI5pNtZXEupRR+dFUng/4b+DvGHhjS/FeuaV9pvJbP/W+dL5Uv7qpP2hIp5pdHsYP9Z50v/oqtj4Pw/wDFr/D/AP2DYu1et7L9yfGVKtb2x4v4w8j7feeHIPKkk0a8ltvN87/VWvmy/wDtWWsOzs54ftk8Hl3Pm/u5vsk3mVJ8VNSg0f4oap9hmk+0S69dSf8ATKL97WXealYfYLj9/LLH9sij/dQ/9Mpa5juRoTTQTWselQTxfaPJl+xwyw1z9lqWq6b4t/4nnmSx+dFbTTTf88qz7PXr+bUI/t199pj879z/AGj/AJ/dVqa9qU+seKLO+gn8qS6s4vO/55S/8spYv+mVAHafE/TdK8N2useHP7Kjikv4YrnTbub955XlSxeb5X/bXzar/CvWJ9B8L65YTweVcS+bHN53+t82Lzf3X/kWpPi3/wAJVeXWn6TqtjZfbNLs4rbzof3X7r/Wxeb/AN/f/Itc/NqU9nr2sefYx20ct59pm+yTfuovN/e+VXFT/gnt4n2X1s2JpheeDbiCfzbaPzvLh/6a12nwZ8N33jz4jWfhXz5ZZJYbq5s4ooftP72KKW68r/yFL/39/wBVLXl9npsE2g6hq3/LvFeeZN++/wA/9cq7j4Y+MNV0fX7O+8OTyR6hF5X+q/efuopYpYv/AEVF/wCiqZzaezPQfDGmar4j+IcXhQWFxKk+pxJNLYR/aJIopP8AlqY4v9b/AMta9n+Jd3BaeHV8+It5tykabezEHBrxbwD4u8X6h4gOs6Be3EbXdgIopZ4f3mIovN/dxf6qL91F5Ve6eJPCms+Ob3RfB/h7TJ7y91LXILe2treHe8jOGAAH4185xDUjQxmHqS6Xf5H9AeEdBVOBuI6b2cKX5VD9Ev8Aggr8E/Cms+BdY+Pd75kuqW11/Ytr53/LKGOKKTH/AJEr7l+JN74YvrW7+HkN44v9StZYD9mP7yLzIiPM9sV82aD4g+GH/BMv4TeEP2WvCUwvPH/jSeOVLNLwyiO4kMcT3cuf9XF5n7uMY/eGPviQj3r4b/B3XPD+rp4r8T6lLqOoO/mXVzL3yK/NuIsXj4Yb+zcBg/aV69T97U5Of2dOf/yMD8KzynTxWMnj6tRqhqqS/n5P/beY6/W4Rp07AjcJwOPwrR0rw7aT2MN5L9/7OgrF8SaubrEvlEKfkro/Ck8114dt5ZDzgg1hwZLIM34+xmWyp+0gqfPD/wAD/wDtj5XE+0pYSFQ5XVtFNzf28cf8MafzIpmnabF4ai1eSJfLa7vxL+P2aIf+067S1s1eKNp19c8VkX1gt5dXtsBwZf8A2nHXNmHhwskpYrNMGv8AaMRf/wBILp432toPZHmFt4tl8VaklvZpboZLzyf+PvP7r/npWV+2t4P+Cq/C5vE3xtdZNH0KKS4gtZ7ry/Muv+WZj6fvf9ZHH/11rbvfCuk3HjSy8NNoIZYpBczTCMeXEkUnmxf+RcH/ALZ18Qf8Fc/2pfD3iSPUPhHaaxuh0+byC/n5jeWP/Wjy+/8Azy//AHtfj/BWAq1MsxlHEYf/AGivUhD2n+D4z7rIstq5tnlCOHfs4U1ztrt6nwJ+0j8Y/wDhJ9ZnuYrK2toraRRp0UX/ADyzLL/7Vii/7ZRVhftGXkOm+BINTn3bbbU0lAVsZYRyFc+2cV5t8Rf7UMhsdWn/AH8QWSH99711/wC2VBdXPwhSG0baW1aLdJ/cXZJk1/S+VZZDLvqdHz/yP6UyjM/rvBXEU/5aUPyqHi/xg+IU/wATtZ1zVYJ/LvLrXpfOm/5ZRRRRfvf/AEVFXn9nDYw6XHY/2pcy/vvMhu/O8r/W1JNZWVnoPn/bvMklm/fS/wDTX/lr/wC0v+/stF5Db2el29jPP5VxFeRf9svN/wD3UVff06fsv3Z/L+Iqe1q+0mYd7NPNr1x9u/e+V+7/AOuv72tTQby+/t640qAx/aL+GKOHzv8ArlVPyYJpLOf/AJ+rOKSb/wBFf+0q0PCvn6n488+D/WS/vIa2MqT/AHxseA9An8SeN44L6CPy4v8AUzTV7B8N/Ddjo/xQuL6fyvtEuj+XD5MP/TWLzf8A2lXN/B/R7Ga6uL6fyvLl/wCW3nV6Rpuhf2b4ys9V8+T97psv+u/66xV5lLE/8K3sz6DMctpf6s1MRTOf+P3n/b9H8if/AJY3X/oqug+Evn/8K58P+f8A8stNijrl/wBoSb/T9Lx/zxv/AP0lrqPhv/yIehwf9Q2L/wBFV9R/y6Py5fxT53+J/wC+8b6xfQQf8euvXXnf9Nf3tc3DeX0N1J59j/o9/Z+X++/z/wA9a6zx5B/YGvahquq+b/pWsXX+q/ef8tZfN/8ARVcveSwQxeRPPF5f2yuI9b2bSMPUvCt9Z6X/AMJHPPJ9jlvJbaH/AK6xeV/8drP/AOPzWI7Hz/8Alj5n76tTxhr2qa9qkcF9/wAsrOLzoYofK/1VcvnVbPVJPsM/lSeT5f72tDM+wPFXhvQ9e+COj/HAfDK2ttH1TUorb+w4tY/exRfvYvtUvlRRf8tbaWtjw38AfB0MWoWMHgCxk1SXwff+I4dOu/t9z9qtbWW6tfK/4+v9bLL9h/7+y/8APKufGseObz9mnR/hXP8ADny47XTYpIYv7Nv/ADYrryv+2X/LWWWX/nl5ssv/AFyrqPgz8c/GOg+Lbzxx4xEdjrlr4J/sHw3aTeVLF+9l83zZf3v/AE7W37r/AKa13UqeDPl/b5x/y8qFfXvhX8OfB3w+8L65qvgeWWz8R6PdatNpOnab+9tYrW1/0qX97LL5v737NLF/0y82ub1i88D/APCG6HPY6ron2y/FhJqVpaWdh5sX+i+bL/qovNi/exeVXUeKvGHg680HwX4V8cQalZafpej3WmzTWmpWslzf/aov3ssX73/ll5Vj/wB/Za8/8eeKtKvPh94b0KDVbKO40aaKSa0tPN/0r915X/Pr/wBtf9bRV9ijpwrzGti6ZY0jVr621mK2sbfy447pZPJh/wBVFzX39+xx8Z/hx+zz8YG+M/xB0mfUZtC0a5k8NabAcfatTkCwxIzEEIgSSVmc/dVCyhnCqfgHTPDeq2fgbSfi1BNH9j17xHe6bZwib97FLa22nyy/9svKvov/ACLX1JcweeqgSFGVgVcdR2OPQlSRntnPavzTiWt7TE05Lz/Q/srwjybF5vwVnmBpK860KaSule6qaXeiPff2e/EOqfG39s2b48fGPWRe3elxS6zqOoRTeXF9p/dRW1rH/wBMv3sflf8ATKKv2etZo7vS1ls5ldWhASTNfmJ/wTD/AGMf2gbzw/L8ZrD4e+HptE1XSpbbTZ/FWtyWzX+52VpUWCCZlUFSMuFzkFdw5r7M/ZU+Nvxr+Nnw18TaxH4I8HaXN4e1W50uxgg8Wm/jvLuD7/mSwR7YIiSuHAkYgltgG0tzcPYbOcLnFWMqD9jXpX9ppeUo30SbvqpaN2XmfjPH+Q4i/s4Tp2wbjCdqtN8spuyi0pN3TTTsvds+a1memX2myXx+x/8APO4NbngxAuiJEP4JpR/5ENfnfcf8FxvEmiapdWVx+zXprzRXLLK0Xi5nQspwdrLbkMMjgg4PaotL/wCC7PiTS7b7Mn7Nliw3s2T4ocdWz/z714nCmWZPkHEbzSc/eqRlGWj0iuX2a28nt8ztreBHitiKCisArbr99R/+WH6UAKJTGPwOa5+bVL4eNJNHi07MH9nGaW5JH392I4//AEYa/P4f8F5fEqgD/hmixOBwT4pf/wCR6z7z/guT4pur6S8T9naxiDIoXy/Er7lYEknJt8HPpj155r7LiHPsDWw1JYOTlKM9rNe573e3dHPS+j/4sKcubAK3/X6j/wDLD3n9sLxX46+EfhDxP4q8P3em3GoawsdnZrG5sZbW2/eeZL5v73zZOY+0fSvxw+P3xD0rX7+8g0PSvs2qed/pk3/tL/rl+6/6a19PftZft+fEf9qDS202Dw/beHT5eyKWG4NyY/cZVOa+OfFP7OUfi+OJNZ8bXEvlvucvag7/APZPz/d9q/GOB8gllOOr18fHlUpzlBXvZPZu1z9kyjwr43ybhv6vTwqdep8b56e3RX5jxzxP4wn8VeMWnvr+2H2ULHNFaS/62Xzv+elet/tgyw2/wnjurmWSOKLV4Xd4+owkhH64rovgX/wSj+Jf7TvjqfSPhDqb3UmnWZu9aYWUVvBHAuEV5ZHkx8pPyquWODhTg47zSv2LfiV+3a83wc+FUaS6nZQHV3tmkjVp4YiI2RTI6Lu/fA8sOh78V+t1KtCpjMLOkm43f2Xra22mvyO/hrhrO8l4R4iwWZ+zp1pU6ejq0vdTVSzm1O1NPo5uKa12R8CzQj+xreCxPm+VDL/21lrLvPCs8Ol/2VB+88qGKSb/ALZfuv8A2rX0wP2G7Pw1q/2abxhdWs1lO0dzZzaVsZSpw0bAvlSCCCDyDSR/sT6ffeLG1uX4gysZ0jhS2ezVIgA+TkmTAB+XJOAMH149OpnmWN2U/wAH/kfnVPwW8R+Xm+pq3/X2l/8AJnyp9j1Wzuo4L6f/AJY/9c61NB8+HxRZ30E//fr/AJZeVX6wRf8ABrH8ffiFoumeK0/aV8GWn2y2W7WKNJ7gASqGA8yNCj4B+8hZT1BIwaSD/g0y/aDs5zeWn7U/g7zVEhiLWN3wzcE58v8Au/L+te06OIqUf4cvuZ+aOhQoYxp16Wjs/wB5D/M+GPhL8N4NZis76+/1f/PKG88qvRP7N/se/s4P7VluY5YZf3N3/rYv9V+6/wCmtdfrX7Jfin4O+NLv4G6tra3uq6HrZsprfTkW4WW5jfZsQxsdxLcYHzA8EAggfXPhP/ggX+1R4wtR4w1bU/CHhW6Nvsj0m/vJJLgj/be3SRFz/vH3xXyuVvFYnOFOMHJQ+KyenqfrnF3DT4f4PhDETp03WV6fNVp++rJ3j72q1V2tFdX3PzP+P03/ABOdL/687/8A9Ja7D4ew+T4N0f8A684q9X/bI/4JxfFn4MePrDwf8Z5G0a7W0nmsJrZEuYL2GRDD5iSK+OCpO04YcZAyM+RaJ52h66vw/t2jli0mxC3d0U2lwrGGI4ycZ8qXjNfZ0MxwuJlOhBvnjummmvvSPxPO+BuJOHcvw+Z4ynH6vXdqc4VKdSMnvo6cpef3W3PFfidNBeapqF95Ev8AropLz7XN/wAtYovKl8r/AK6xeVXHz6Pq2pahbz2Nv5skX/PH/nlFFXefEL+ydNuo76fVYr288nzLyLyfNiii8rzYov8Atr/qq5PTfG2leG4pLGx0r7TcXUP/ABMppYf3Vr5Usv8Aqv8AyF5v/XKuTD1P3RnmmGVKouc8317+1dSlknng/wCW0tZepf679/8A88a6jWILGGL7dYz3MkcXlfuZf+eVYc0PnS/v/wDWV6CqOx43sj6E8VazP4l0CS+vrH95F5X+u/ey/wDXWsv4Yw6VrHijT7GeCX97DdR/8tYv3v7qWKqepa7NNayWMGhyxebDLH53/LL/AJa+VWf8N/Ek+j/EvT9Vng8v7L5v7mGHzK58NT9kdmbTWKwlT2R2nxss9C/4W/8A8IfpNjHbf2No8Vz/AKmKL97L9ll8r/yLXN69oOu69qkc8MH+j+T5ldZ8KtNn+PHxV1jVdKgjjuPJ/fXf2z91+68qKKWL/nl+6i/5616Re+FfB3gO0kvp4P7Ss4v9Gm+yTeV5Usv/AO6rhzLGv2vs6Z7HB+SqllVPEYwpz6LFcfCDRr2O/thaW3iK91WXw/F+6iimupofN8r/ALdba2/df9Mq+nfgr4F8KfEv4n6R4J8cfEvT/CGlX9zsvfEOqRM8NomCckL3OMDcVXJG5lGSPmbw1r9lq/h37eJ/KuZdSi8m0+xxf6L5UsX7rzZYvN8qX/rr/wAspf8AprXruga22oqLS4ZXnjiVpnjG1ckAkbTyMEkf8BNfIZhQmqUKjjzcjfMvLT8PTU/pzwczvBUcdjstdV0qmJUFSkop2lFTvumrrmUlzLldnfs/1W/aisv2SPix+zD4X+BXgf8Ab18H+GbPwTpg2JZ3qypqckNt5aB0jn3gE7yQBK2ZOAxGG+Hv2evB+oa18PfiDc2H7X+meAYrTTMHQZ9auLb/AISkgOfJ2KV3psDgZVzudVKAOWF79qH9ivUv2Z/hR8PPine/EGDV4/H+mC8isotOMJsh5EE20sXbf/rwMgD7ue9H7Ln7FepftNfCv4hfE+y+IMGjp4A0z7ZLZy6cZjejyJ5doYOuz/UEZwfve1a42ti8bmcYPDpVFHZSauuW615rK0ddN9nc+14Zy/IOGeB62IpZxKphJ1k1UnRg+Wp7flmuX2XNJzq+63JPl0cHFJMwP2e/2ePB/wAb9F8QX/iT9o7wZ4GutLiiGlWfiu9MP9pTOTkBv4I1UNlwHIbaNmG3D1D4gfsO/su+C/g9f+MdN/4KE+CtW8SWOn+eNDsYlkiuZhjMETRyvKc9FbyuTgsFGSvHfst/sV6j+018K/iF8T7L4gwaOngDTPtk1nLppmN6PInl2hhIuz/UEZIP3vavFdPt4Lu/gtbq9S2ilmVJLiRSViUkAuQOSAOeOeK82Ps8NhISq4dPnT5ZOUtbNq9k9LPTXsfZ1Vjc6z/E0sDnE6f1acPaUo0ab5bwjJQ55025KcfevFtrmtfRJe2fsvfsofCr4zaS/ir4xftaeCvh/p5eSO3sb6/il1GVlIG4wNIgijJzhmbcdv3NpDF37T37Jfws+DukDxX8G/2tvBPj/T0KLc2NnqUMGoxMxI3LAJHEqA7clW3jdnZtUsOo/af/AGAvh/8AslyaEfiZ+0LqF1b+I7WSfS77RPA3nwSKm3ILteJ82HU4GeGBryy/+EPw01DwTrPjD4ceNvGfiBdEhR754/h0Y7W1DttU3Fwt44gUnIDMDk8AGtq2G+rUnh6mHiqiWr5/e2vtzW28tjzcszpZzj6ec4LN6s8HUlaNP6s1SfvclvaOkpp82l3Ne90toebUUUV4Z+pH258Cf2hPhp+zP/wS+8Rr8PvHehW3xN8X6jLDNa2l4h1KKF5fIV2UHeuyASuh4CmUMOWJPzz+xH8avEPwE/af8I+OtCvHjik1aGw1aEZK3FlPIsc0bDv8p3D0ZFPUCuh0H9hrxB4o/Ypv/wBsjw/42W5i0u8eG/8ADi6U3mRok6xvIJQ5BVVdXPy8DOTwTXm/7P8A4G1H4l/HLwj4C0qzeebVfEVnb+Wik/IZl3sccgBdzE8YAJyMV7tevmCrYROPLyxjyW66/F6t7n5XleVcIzy7iCUK3t/bVayxLkrODUEnS1SvCnD4HqtW0z37/gsf8LbL4e/th3Ov6PoMVlaeKdHg1Nmt4iiTXOXimf03lowzYxkvuPLEn5Sr7K/4LfeL7fXP2r9L8Mw2oVtD8JW8Us3zZdpZZZccnGAGHQdSck8Y+Naxz+NOGc11Dbmf39fxPR8Jq2Lr+G2VTxPxexjv/KtIv/wFIuweJPEVrCtvba9exxoMIkd04Cj2APFfe/7J95ffsVf8E+/FX7XvjK+mbxT41UWPgyG9kLsqEskBAfszeZO2OGjiSvjz9ln4E6t+0n8evDnwf0wukep3y/2jcr/y72ifPNJn1CA4z1YqO9e+/wDBXj486P4q+LWlfs1/Dto4PC/w2sUs1tbY/ujeFFVlABwRFGEiHcN5g7105VJ4HCVcwk9V7kP8TWr/AO3Y6/M8Tj2nT4n4hwPCNKK5Kj+sYmy2oU5Llg/+vtS0e9ovoUf+CPnw4i+KP7Z0XizxLpS6lH4c0u51eSa8QyBLssscUpJ48wPIXUnOCu4cgEe4ftF/sE/8FDP2mfiz4g+Ms/xJ03QYItTlHhLw/P4luEktrON8Q7BAjxROyqrk7gS7Etg9PNv+CGWuaFpv7TXiLSb++eO+1HwfJHp8PljZLsuIXk+bOQwCggYORuORgZ8X/av/AGlf2i9a/al8U+INZ+JniTTNQ0XxNeW2lW1tqc1v/ZccczRpHEiPiLCqudv3jkkkkk+jQrYDDcO0nXjKXNOV1F21VtW/JbI+QzXL+Ks58ZcbDK6tGk6GGpKMqtN1LRk5PlhHmSSlK6nJapJJa3NH9vX4tftc+I/EHh74NftceH7Ow1bwbpgSzeK1jMt6koGbp7hWcTFxGoJRgm6M5UOGr43n06G08WahcQx7Jbq8Pz/3/nPFfqp/wUb1O6+LH/BOD4RfGb4tXaW3jOWa2MSPahZL0T27mVsY+QMscUxxhc4GOVx+HHxB/aM8c+HPjH4j0DQ7qKYxajPp9pbyxZigJmz5n/XTmvQwkZYTNaz53PmhFpy+KztZPzW34n5nx/iKHEHhpltKOHhhnSxVWlOFJNUueLkpyp3+zJtyW9m2ruxt6l+zffaP8KZNVPxU/wBbDLJqVp9j8u2ll/6Zf8tf+mX+qrxf+wdVh8R3mNDj8uKa6tpppv3csX+t/df9/f8A0VX0x+yL4k8f/FSw1DxV4k8KxXOnyzeXDd+d+983zf3v/tWXyq4/9q6z8HfBP9qC8v4NLsbm38R6DFe+T9j/AOPWX97F+6/6a/uv/ItcOU5tV/tGpg658dxFw3hauR0szoe5T/hngcJsf7Bjnng8vzZvL+yf/Gq5uzi+x6zefboP+WPmeT/zyr1zUvjb4H0e6vNWn+C2k3MksPmed9s/dRS/9cvK/wCWVcP42i0PUvFGoappXhyXTbeWHzPsn/PL91F5tfW06n7k/N54b2WL9mjtLz4qWMOs6p/ZPhWxttL1SGX99NZ/afsvm+b5Xleb/wCjf/jVSfD2z8N/vJ76e5+2XX2X7HFDD+683/lr5sv/AH9rU8N6PPqXhKzvtc0mOK4l82OaGL/llVz4b+A7Ka11jXJ4P3lhNFJD5X/XWl7T98c9TDeypHN/D3x5qug+Mv8AildKtraS6mlkvIbT91+6/wCWtfQHgP4e/wDC2vBvij4mX2uSxWfhez8y806b93+9l83yvK8r/nr5VeR/s9+FbHxh4o1jSv8AhB/7b1CXyo7OGH/0VF/11/dV9SfCXwr4V8K/BvxBD58ek2eszWEmsXc0P/HraxebL+9iii/e14GbYlUn7On/ABD63hvByrLnr/w/fPG/FU3iO91mPSvCt/bW1vYax9p/10X7397F/wAsv+/VeofBnTZbXSbqe51A3Uy3bwTzvL5jM8YSM/P3GEUfnXl//QL1yxsbm2s5dSlkh82b97LFLL/qvN/6ZS+V/wB/a9c+DrSSeBLWeaGOOSRmaRYugPGP0xXl5pVf9mJd2fr3g/gMPivEGlKor+zhOS9Ukl+bPrH9sX9tDwf+0r8E/hX8L/DngjUtMuvAmi/ZdRub26jeOaQQww4j2jLLtgVtzbSCxXaQAxP2N/20PB/7NHwY+Kfwz8R+CNS1O58d6KLXTriyuo0jhk8qaEiTcMqu2dm3LuOUC7QCWHd/H79vv4H2vhT4E/CXwn4ht7jxB4c13w9qPjDV2Vba2jg+yj7QJrnGD/rP3v8A20Hbyz88f8FA/GWrfGz4I/AH9oHxNp1la6zrPi25i1S406xEC3I82ER5A7Yjr4qtxdiaWfUWrOVS0FLTT93Z+7a2m2/n5H2GXcSZNjMhpZBVyidPCVK11evJvm9u6qd+RSs5JytfbTzO0/Zk/wCCh/wg/Yt+CvxM+G3xP0O/nuPiJozWmj3NrMBGkiwywsJPlJVQtwW3DcSVVduCWHy5H+0F8HZV3p43hI/695f/AIivMP28ruaz03wy8PUz3Wf++Yq8Is9S7zmvtMNgP7Ry2j7STtHmSSt/M79DHi/xFx3AHiBmVHL8NTbrOlKcp+0bk1SglopqKstNEvO5+zHwL/4Lbfsd+LPg/Y/s4/t8eHB4y0zTlUaPrVrYGS5RY1Cwo0e2NldV3L56SB2UhWByzNW/aA/4Li/sU+Dfg3qP7OH7CehJ4M0nUQ0et63dacyXDrIpWaNUCyF3ZNqee8hYKCqgYVh+SGm6lfebb+RfeX5UP77yYaz9T8K32sWuuTwQReXa/wCmw+dN/rZYov3tfSxw+Ilh/Zuo725ea0efl7c1r/r5n4rLi/CRzj61HBU+Tn9r7HmrfV/aXvz+x9ryXv0ty/3T6+i+NnwvnAaLxXGQ33T9nlGf/HadcfGn4YWttBeXHiyJY7nzPIYwyfP5Zw/8Pavn/Tde0q80a3voIPK82GKTya5/XryD+2bOCD/llo/+q/55Syyyy/8AtWvmf7Cwv80vw/yP1yXj5xVFf7vQ+6p/8sP0m/YJ/wCCsPw//ZQudb8FeKI18WeCvEsW3VfDrh1EchAR5kWSNkfdFuR4yAJAEyw2ivf4f+CsX/BJb9mK2f4y/AP9m+9t/EVxujiudQtPs0dsXBDqkhecw5BIxEgBHy5ANfjt4bg8nvW5+0JCP+FGc/8AP5FXs4fnwVGNKEr8vwtqLcf8La0Py3PeMXxBmVXG4jCwg61lWjTqV6cKySsvaxjVSlppfRvq2fT0P/BQT4X+LPj7/wANRfGLXtN8XpH4jttR16w1BJRb3SM+Y7fBQ7Y9qbEXDKFRVIKjB9L/AOCjH/BYr9hn9tLxF4cHwpii0i40OzlS91jWLTybu4UsFFuBHuUxRsrEEsTlmwqfNu/K6HyJv2ePHEH+q8qHS/8A0bLXjfwxsp7zxvZwf9MZf/RVa0Mlc8HXpe0dptN35W21rva57OM8Wcc89y7MoYKiqmHhKFJRdWMIxkuW3Iqqi7LRadr3srftL+wL/wAFaf2Pv2Obzxt4h1vztW8Vajohs/DmoWqyeVayAljFIrIMI7bGZ1LH90qhOSw8V1b9on4f+KtRvfFmr+PlvLq8vp5L67ljlZ5Zy26Ut8uS2XyfrXwprGj32m+Ldc/ceZHFeSxzf9/f3X/tX/v1XceG/EsE3gO4gz/rf+Wv/TWvOxeUKeDhSjNuML2WnXe9lqfR5D4u5hR4ixmPeFpKtXhBzl+8f8NWjFJ1GoxV22o2u3d6n3L8Jf2vrj9lH4h6D8aPBvjOLTr5SWs2ntGkivIGX95E67T8jpkHoRnKkMAR9y+Hv+CmP/BNP9p0W/xx+IP7H02qeLTMIoTaWEF1DfzCNiokd2hE2EjPM0TbQuBnAr8gf2j7Oaz8D+A4LGf/AFsMtz5X/XK1tYv/AEbR+zp4w8VeCfAXhPxVb65LbW8upRedD53/AH9/df8AXKX/AMi149DF43LsC/Y2knO3LJKUfVJrR+Z6me51h+Ls8hVx1FU6sabSq0Z1aVRwajJ05SjP3oNt6NO2tmru/wBx/tt/8FK7n9tLSrX4rXU0Gh/DnQz5ej6bA5ljt5GYQvLI4jV3dnAUfKFUDCj7zN+Xurx+GvEPxt1zxJaXTzyTfEOaBI3UgGLyr/oD282Kvc9e8iz/AOCcWn31jcS+ZdaxLZTf+BV1LXzRY3E+l/EZIP8AW/a/inFcfuf+mUt1/wDHa9bK44jG4fE4upJym5Si30sttP6XZHxfFnElFf2bkFDDU6OFowVSKgpX5pJp3cpSve7bbvJttuTZ9kf8Evf33wDt4J/3kfm3Un/k1LXLft7aDY+JPGWn332H95a6P+5/7+yy1u/8Et9Tsbj4OR6XD/rLXzfO/wDAq6lrb/ac8K/bL+3gg/5ZabFHXzWX/wDJZ1D2c9cf+Ib0P+3D4L1Lxtquj+KPEnhz+1bmys7rypPKtJvL83zf3vlS/wDTL/W1ch1+DWL+4nsYP3f2Py7zzv8Alr+6/e/+Ra5/42Wf9j/FrXNK/wCeX2X/ANJYquTab/Y+qSQWM/7uWGL/AMixebX6fVp/uj+fsPif9sPcLzUvCvhWXyNWnjj0+w1i/jm86HzP3X73yq6j4b3mh694S8Qar4cmiubOXyvscv8Aq/8AlrXifjDxLe6b8QdHg1Wf7Tp91Z3VzND/AMtfNiil/wDtVeqeG7z/AIV5LqngDyIpP332ab99/qpa5/ZNVvaGlT+DUPpn/gh38NdI8RftN618QtX1Oyt7TwHBba/qF1qM3liO2tr+KWSU/wDXOLzJK6vWPG3nReML7Q/Dkclxf3lrcwxRf6qWKXzfN/8ARsv7quH/AOCTXxd+GHw00v8AaB0nx14yi0zVPEHwt1LSNEjltZZI7m5k86P/AFmP3fl/uhj3ri5v2xoLPxRrHkfDmykuNU8q5hhhvPLtoov+mUX+fKr4jMcNi8Vmtf2Z9nw1jMNho0qlXayS/wDJ/wDM8/szfQ6D4k1y+n8rytY8uG0i/wCusX73/tr+6r3/AMB2kOneHo9Nt5o5I7dtkUka43R4BQn32Fc14p4POl3ngjQ4Pt0nmX83l3lp50X7qWL/AOO+VFXtXgBNQTw4n9rFBcmVzPGsm5omJ5Rj/eH+FbZu+XBQj5n654JLm44lJf8APuf5o+//ANnb/gnf8OfjP+yX45vbHwVpsvijUb1UsLyeyizbGMRS+VGfrJJ+8964X/gsZ8H/AAx8EvgZ8BvhR4RguWsfDerIkcxlyREv2SLzJPUySyR/jX2L/wAExviRaar8Pr/wDqcVul15qXsUMM28i3kjABk9/wB3n/toK+Rf+DhP4wwJ8evhZ8CY9LUIkS6ldzmTi48ydRFF/wBs5LbzT7+XX51geE8LmGEwudU6tp05v2kP7/v/APtnKfA4HOM3l4qrL8Q37OFVzXbVKC/rzZ+YX7fn/Hj4TP8A093X/oMVfO15qUGmxRz6rP5UctfTX7cGmve6V4euU/5d5rlj+IjrwXwt4V8AeNte0vRPiN8Tbbwvpd14q0vStSupbOW5lsLW5ll82/iii/1sVrFF+9/e+b+9i/7ZfruSuEcphJ76/mz0/GuE34j4u3VU/wD01AueA/EmlaxdSfYYJfMi/dzedD5dHjzxhrngPS7cWN9LFcXU37n9zFL5VcHefbvBHxGvLLwr4ji1KOW8+zQ6tdw/62L/AJ612HxC0e+1LwRcT319bXMlheRSTTQzf9spf/aVfRU/4PtD8XxD9lW9mSaD4kvtS0uPz5/+W376tSHUrHWPF1xfQQS/vbP/AFP/AFy8qKuT0Gznm0aOD/n/AJoo4fJm/wCmtdBeQWPgPxvcX0+qyXPm2f8AqYYf9V/qq5qlI9ZYn2qPRPDcME0sdbHx+szN8EI/+WccV5F503/bWuX8E+PPDk0v7/7TF/2xr1jRvip4Ah0uOC+8R+V/2xuq4Z/xjX2h8xw6P53wM+IH2HzZY/J0uOGWGH/W/vZa4PQdH/4Rbxvo/hy+0q5stQ8m6/tKG7/6ZRSxf9sv3vm/9+q+6P2XfEl94k8W/bvFWqx6lJYXn2nR/wBz/qpYvKi8397/AM8vNiuov+uVcv8At4eCfhzr11o/xi8OeFLHTdUtdYv4te+yQxR3V/LfWvm+bL/1y+zf+RZa9bDVP3NQ8nEf75TpnJ6P8K/J+JmsT+I/AGrSfb9eiks7uX/jx/4+oq8T8N6lYzaLcaVY33/Hr/roq+nNN/aKsYLGSeDwrLLJLNFc/wCui/dSxRRf/Gq+X9S8N2PhvVLyDSfK/e/vPNhm82uLBe1/5eHu5tUo0fZ+wPozwH8N779pbwlp/n+Krmy0/QYZY4dRhs4v3V1L5XmxV2mmfspa38PfDvhvw5Y+OP7Xji8SRSQ/a9N8ryov3Xm/vf3v/PtXB/sf+Nr7R/CWoaV58sX2rUv9Dh/7ZRV754b+IWq2cusar4i1WP8AsvRrz9/LND/qv9FtZf8A2rc1+a57iM2/tOdKn/DP3Xg3CZH/AGFDEVf4ns/4h4H8SfFWlWX7NOsfDKDzI49L+JGqW8Np/wA8orXyv/kmvDLfwhDd69c+KrDxHH9s0zxtdSQ6HDZ+Zc/upZZfN/55RRfvP/3tbepePbHxVdeKINK8uXS/7e17UbP/AEzzZf3sth5Xm/8AfqL97/y1/e1sfBP9nv4i/GDxb4ksfA39v30n/CSXX2y08J6D9pl8qWX/AJay/wDLKv0XAYOrhMp5F/OfhGcZ1hMw4o9p/wA+6fs//SzoP2OvjzD8E5fO+HPg7V/s91D9i1KG78R/afNiuv3sX7qK1iiil/55fvf+esX/AC1r0T4nftLX/wAQ4ry48OaV4btry1m+zw6dq2pSx3V1F/yyli/7+1qeFf8Agl3+0no91HrnjHXPDfw88D2s0UkOreN/G1rbS38sXlebF/onm/8ALKLyq6D4efsowfCX4jah4x+GX7W3wG1uOWz/AOJboeo+MIvN83/nlFLdxeV/5Fp0sppUsVUxns/3hy4nPMXi6P1OFT92fDfxa8K+I/id8X5NcsdK/s24168sLL7Jdzf8esvlRRfvf+mX/TWrGsaD/Y/jKTQ76eO5ktYbCP8Ac/8ALWXyoq/Tz4taP+1f/wATj4LQeDvD+ieboMslnq39jyxxXUssvleV/rfK/wC/Xm/uov3VfmXoMP8AZvxpksdcH+q8SfZv33/TK68qvRqVP3J5OBp+yxZl+PPGHhTxJ8DIp4PBH2LxRoPiSXz/ABDDN/x/Wvm/uov9b+6/1v8Azy/5ZV6B4K8ST+KrCz1yeCSOS6htZLzzv+evlReb/wCRa+c/iR9h/wCEy1Cexgiijlm8z91X0poOmzw2tnqvkSR29/8AvLPzofK82LzfK/df9tYpYv8ArrFXt5ql7HDmP732VS5qfD3U4NNsPEHkeb5l1eS2X/XXzf8AW1l+JJ54fEcd95Hm+VZ+X/36/e1ofBPWPhlpvxfs9D+LfiOSy0O68SRf2vNaf8fP2Dzf9Kli/wCmsUVeiftCal4O+DXxV1zSvg7rkWpaXdTS22g+JooZfKurX/pl/wCQq8jKsL/anEEMvt/E/wCXg8Rjv7PyT63/AM+yP4S/8S3QfDdjfQfaZItN+0zWkP8Az1urrzYov+uv/wAdr27wpaPZaQsNxOZbguZLqVuS0r4ZsnvgnGfavmmGbXLzWJNcsZ7mOOWaK5s5fO/1v7qL/v1F/ra+gfhJdXF34S3XGmyWrJcuvlztmQ4A5b39PbFfJcXYKWX4mWGlvB2P6K+j3i5Y3iCGIW06c3+R+q3/AAS48YaHp3w3l1200CWXUta1SfT5tRB8yOy+zW1tLHEf/Aj/AMh18G/8F3/Ft94l/wCCj/gm3u9Kl0+Sz03SIm83/lqDLJKT/wCRfL/7ZV+nv/BPX4a+OvAvgbVvAHjTQ4Leyjj0+80m6tlLxzLLZxmT5/8Aloc1+Zn/AAcDpfWv/BTD4byX0KhG8NaSLWWDrIhvLpT5n/AxLivzjhihmftlXnUtQtU9nT8/ts/OsuxlHE+J0pQfO3Vjr5c9O34Hyj+2LKy6PokION88+CThdwCYya+UvidD/wAe88EH7zzpfOr6y/a8RG0jRi8e/Es+E9eEr5h+IWgX2gy2+q33/Hvdeb5MMv8Ayylr9R4cV8vT9fzPf8eKnL4h4mPlT/8ATcDg7yGfUvL8iD/Ww13GmzQalL4g8OTzyxW/+lXN5LF/yy/e/wDkX/VRf9+q6D4eeA9K8K+F5PGPiPVYpY7WH7b/AGd5P72L91+68qX/AL9Vch8BweKvGXkaXPY3NvdTRed50P73zYvK82KL/nl/rfKr6hH4d7RnPjWIPh74Dk0rSb6WLVJYYv33k/6rzfKll8r/ALZVw8V3fT2sk/ny+Z/rJpf+WstdZ8ZYZ/8AhPbywgn/AHdh+7/df89f+Wv/AJFrk9Hmhhl+wX0H+t/1NB0qo/ZHeeA7zzvLrsLzz/Njg/6Y1xfw9s7/AM2Sx+w+V5s0Vt/21/zFXef2lffYP7W0n/llZ3X+przatvano0tjoPgz480r4e+PNPvvGN7HbaPF5v8AaU00MsnlRS+VF/qov+mvlVT/AGnPjZ4O+JHjK3sfB2qxXunxWctz5UPmx/vfKl/5ZVy/iTTf7T0azgggj/5BtrJeRQzVzdnptjo9/HP5/mx/2Pded5sPlebL5UtdNK31Y56jti7nUG8gs9BuIP8Anrpt1HD/ANdfK8qKvP4tS0m9sJLeef8A0yLzYvKm/wCeX/LKtSbWPtf9oWM88scnnfuf+mX+fKrLs9B1X93PfCKW8lm8r91/yyi/6a1nTphjMT9brJHpHw38VaH4D+F8mq/2r9m1yWaWT7X/AK2W1tf+mUX/AC182qfhXXh8YNekg8cfEa5sbO/vIpLzT7u8/dS+VF/rZf8Anr/5Cii8qq//AAh3j/xtr3h/4VweZLp8WpWtt9rtIfN/exfuovKr3j9m/wD4I5/tQ/FTxlZ+KvH+hxeEtHi1j/iZQ6t5X7rzYvtUUX2b/nl/qopf3sX+t8r91Way2jV/ef8ALw9bG8QV8LQp4ZP93A+Z9B8Eatpt14g8VeKp5La41SGWSG0mhi83ypbqL97L5X7qLzf3XlRf+0vK833D4Y/s6/tC/tIa9eeAPFXxbudN0Ow02/1Gz0nUNSli0zS7WK1luvNlii/dWkX+q/e+V/rZYv8AnrXun7dX/BN/Q/2Uf2eLj4xT/Ea51vULrxta6D5UMP2b915Ust1LLF/rYpftUUsX/wC9/dfcGg/sr/sheA/hVceG9J+H9zLH4t8Kxad4k1D+3pZZb+1l/wBba+b5v7qL/nrFF5Xm161K3sf3h8TVdV4u9M+J/wBtLTfjTo/i3R/iB8Rvhz/wiXh/WdN8vwH4e86KP+y9GtfK8q1+zRS/6J5UUsX7r91/ra+X/B9n4r16WTQ/Dmk32pXFrNLbf8S6z+0/+iq/Vjwp8K/gf4Vlkvr74V6T4g1SKaXydc8WQ/2lff8AgTd+bLXUaP8AFqfR9GjsbHStN03yv+XTTof3UVaU8RSIp4Kv7Y+M/wDgnjD+0nqXiO3+APxH+Ffi2TwHdTS/Y9R1DQbqKLQZfK83zbaWWL91F/0y/wBVXh/7UX/BIv8AbS+EvxL8QfEbQ/B1l4k8Nxaldaj/AG3pOsWsX+i+b5vmyxSyxSxV+kGvftLX3hWS88Y+I/HEVlpdhZ+ZeS6jNFHaxRRf8tZZa4/4hftOQfH74LeIND8AfEfSdS0vxR4bv9Os9Q07yrm2l82KWKuep7E9XDU61I/Ffx58N/Dk2qXmuarYyRSWvlfbIYf+2sX/AH9/1Vd5oPx+8f6xo2l/DLVb7/in5bzzLPTpoYpfssv/AEyl/wBbF5v/AEyqn8VLyxvPhzrGuWOleXb381h++l/1sUUX/wBtrz/4Y3n2zxlodjY3HmyS6xFHD/39rpqfvaNP2hy/Wax6p4b0z4daxrOsf8JxqttbXEU3+hxXf+qli83yrr/yF+9/65ebVf4qeG/CumyxwfDK+trmO1vJfOu9P83ypf8Av7/rauaPD9s1TUBfQR/vZvL8nzv+mstV/EniPwd5scHhzQ4ra3i/1P8A01/6ay/9Na+j4Gyz61nlTEVKn7umeVxRm1KlklPB+z/iHWeD/Emh6P4X/ty+n0mLVLWb7N9ku/Nl82LyvN/exeV5UX/XWKvob4KePB8Q/Bh11msXeO8kgeewTas23BDMNxG4KVU7Qo+UfKO/zL4b8bWPiS1j8K65BbS291+7h+1/6qL/AJ5S17F8Jx8TvDOiw6X4I+EGs+RMXnuHOhz+Q7uQQ4wRg8Y9x+FfNeKfDX1fG/WKUud1D9a8APEnB8O5vFY+m1RhGUW4q7V7Wduq01t3P00+G3/BaXxV8OvhpoXgvSv2alNzpem/Z7y4ufEMeLmVeBL8kf8Ay0P7yT3JAya+Hv25fjJ+0P8At0ftWeEfjf498AaTpVp4bsrHT1Gk3oKNBFcXFw8jLI5YuXmxwOlYT3f7SUi+ZZfBY7fW8uoIP5zmuaPj79pCDxWui3vgbw5bWLLcSLf6nfral/LLExhBPIflRSWm/wBX6EV+W4bA5nSpxhC1oppXa0v2P1ug/AXA5lDG0quIjUjJT+HqnfW8Hpf8DJ/bHj8RPa+Hf+EeujCftFwLqUKnEeI8/eR8flXzl4x8B/FTxVa24nvra+/7Y+V5VfUWv+EPEvxDvF13xP8AEPwPaQ21vtggj8StKkcnlZlx5cZP457VRvPhL4VspZPt/wAVPCXl+d/rrS8upP8AyFFFXt5bWxGAwsaa3V/xdz828SuIMHxbxjicxwqapS5VHm0bUYRje3S7V0t7bnz/AOKvDeuf8IRJpWkwX0msX8MX9pS3c0X2aL/lr/o0X/LKpPBPhXxjpnjPUNV/dx291eSyf8fksv7r/nr5X+f/AGrXtk3hX4H2d/b6rqvxGluf+Wk1pD4bllil/wC/v+tqnrGmfBzTZZP7K1XxTfR/6yzi0+G1itv/AI75X72vUp5jVPzaphzx/XvhhfWd1/oOuRSfuf8Alr+9/wDIv/f2pNH8K6V/Zf8AYeqwRS+VN+5m/wC/v/tWvSJrz4K6bdWc9h4V1bUtLtYfMhtNQ1L97/39i/55Vn6xrFjpsUc8Hg7SbKPS5vtMMvk+Z/rf+uv/AF1/8hUVMTWOmlTOb+x6HDL9ogvrnzIryWT/AFP+q/5a+bW5rxn1iwuIILGKO8l/eQ2n+t82WWLyv/Rvm0al42nvI7j7D4c02x/cy3P+iWf/AD18rzfN83/llWGNYnszbwQQfvIpovJm/wCeXlfvf/avm/8AbKsjqJNN0DxHqWl6fqsHhzy7eKaW5m87yo4vK/5ZVY1Lwf8A2b4jkgngtpfNh8uH99+68r/Wy/8A7r/prWX4V1jxHN9nnnvpZY5f+WX2z/pl+9/7ZebFVi816e8+x/YZv3n73zv+mvm/vZf/AEVWmpzh/wAI1PeeXBPY23mRebJNLFD/ANNYpZf/AGlVeGzg0HVJL/yPtMcv2qOaa0/65eV/6N8qpLKz8mW48++k8zMVzDDN/n/W/wCtiqPXvIs/s+laV5tt5U3lw2n/AE1/5Zeb/n/lrW3tf+XYqe/tC54b8earo+vafrnhXVbmy1DS7yK5hu4v9bFL/wA9f/IUVfsh4b+Kl98W/Dmj/FTVvFX9k3ni3wrYa1Z+HvD2jy/YfNv9Ktf+PmXzYvNli8qX/VS/6r/v1X4h/bNc/t6OC+vvM/4lssc3m/8ATX97/qv+mX/tKvXNB+OXxG03S7Owsf27bL4eaPFZxW1npP8ArdTtYoooov8All5X+t8qL/lr/wAsov8AlrXdhqn/AC7ObNf3tI+0P+Ct3irSrP8AZQs/B3/CR3t95vjyK9m/tvUvMll8r7V5v72X/prL/wCRf+mtfJf/AAS7+PHiv4QfG7Vfgfqt7JbeD/G2my6j4VtJbyWSL7fF+9l8r97/AMtYvN83/r1i/wCeVYf7eH7Vvw5+MvhLwf4c8AfEaTxJ/wAI5o91p2sXc155t1deb9l/ey/9Nf8ARpf+/teT/B/XvCvwx+L3g/x/4j8Y/wBiWejXl1bTahLZy3P2X7Vp8sUX7qL97R7X997NnmL+MfrJefEL1nrn9S+JH/Tf618h3n7fn7JMNh5GuftJ63qXm/67+w/B8v8A7V8qubvP+Ch37IWp3ckFjffGPVpP+nTwrYf/ACfXRY6vaM7T/gpx48/4TD4a+G/g7Y679muPFHiqLzv337qWKKL/AFUv/bWW2rzP9ka9g/Zv8R+NPgtqvji2vbP/AEDVtNl0/wDe2vm+V5V15UsX+t/exRRf9sq8z+PH7XfhTV/i18P/ABv4A8Aa/ZR+EtSur2zi8Y/6N5t1+68qX/RJf+WUsUUtZnxOnv7zxtby+HPH4vZIvDcUevTWmpReVFL9qupYoopfN/ff6LJbSy+V/wAtZZYv+WVP2f7ky9q/bHpfx48K/CTXvBFv4c+HP23TfKs/L1KXVv8AplLF5X/oqX/v7XkfhX4SwaDr9nrnhzXLa5jsLyKWaWKb/prXvGva9pX/AB72MEX/AF1l/wBbWfo//COaldW99rmh20v/AF1h/wBVXv4bKX9U9nM82rjf3v7sr/Cv4wQfDH/hILE+HNIvbjVPK8mbUbPzZbD/AFv+q/7+xf8AfqvF/wB/ZfuJ69w+Knw9g8qPxVY/ZpbeWzij/wBEs4o/K8qLyv3vlf63/Vf62vG/ElnNDr9xAIP3cX/kWvS4O9rhc2qYeoeJn/73CU6gaPpuq6lLJPpU/wC8tf3kMVfSGm/HLx/D4Xt/CsHiPUvM+xxW037mLyov3X/LL/yF/wCRa+e/h7PPpt/cQTz/ALyKH/v7XoGj/E7+zbW4gOleZcRf89f+WVeb4jVcZVxdPD/8uzp4b/c0faUzsPFPjDx/4w8yf7dqUn/LOaKaaXyvKirHm8Sa5ef6Pf8A7zyv+W0UNcveeNtcl+z+RP8AvLqb9z5X+t83/rlUc2pfEXWPMnnsZPL/ANZ5t3+6/e/9ta/O1gax9L9erHcQ6lfTXUd9Yzy3Pm/88of3tV5v7VP/ABNft0XmeT/qvO/5ZVw8M3jjTZf9fHF/zx/0yL/47WheWfjiC6/tyx1y2i8qaKSGG0vJfNi/8hUfURe1rVTYvLPVZpfPvp44/wDptNN+6qveQ2Wj2tvPBrdjJ/rfJ8qbyvK8qqemaDrniq1j8jw5ex3EsP7n9zLLLLXWeFf2dPjheS/uPhzc+X+6k/48/s3/AKNlrWngguzn7PUoJ9L8/VvMuZPO/wCe3mfvf+utZfiq88nVJNK/eS28V5F/6Ni82vYNe/Zj+I+m6DJrn9hxRW9hpv8Aqf7S/e+VF/0y/wBVXl954bE2jefPqsX2iWGWSbzf+eXm/wDx2tKlI7sPsY8M32zzIP8Apj++hhm/6ZRf/Gqkl1jybuSe+njuZP3Uln/zy/55f+0qjms4NNtbfXJ57mS3upv9bD/5Fi/79S1XmsrGyupLGe++0/ZdSlj8qH/lr/01p+zOn2pc8E6lP/xT9jfQRyfaoYo5vOm8qL97/wDbZak+2aqbqOxngl/0W8ij8n/rlLLFLUej/wBkxa9p8+q2P+h2s0Uc0UU3+ti82Xzf/jVbEPiSx1L/AE6+sbb+0JYIraaL/t1/e+V/2yirYg5/TbOfWbWzn8//AFv7ub/pr+6/1vm1X8SeJJ/+PE2Mf73Upf8AS5f9bL/n/wBq13EOpWPwxureCxsdNkk+xxXum2nk/afNi/1tr/21/wBV5v8A36rz/UvPs7Wzn1yxkk/feZN5P/LKLyopfN/79S0E0yxZzzzX8Z0PSov3s0Ud553/AC1l82L/ANpVzepfAH4j/HLVP+Ex8HeDvt3leV/pf9pWtt5sX2W1ii/1ssX+ql8r/rr9qrYs7OeaKOD/AFX2+8sI4fO/5ZXX73/7VX0J8ANSvv8AhF9D1X7dbWNnLDayal/z1/e3UsUUUv8A0y83/W/9squlU9k/aBV/eny34k/Z18ZfAeW30Pxx4cttNvNUmikmhi1iK582KL/prF/y1/1tV9B0e+8YX8ng6/1y2sY7q8itptQu4fN+y/vYv3vlV2n7VHjz/hPPjVrl9Y6pc/2fa+V9jilh8vyv3X+qrg/BOpf8I34t0vVYP3lvFeRXP+u/1vlfvaP4tb2h4FT90z3D/h0v/btrHB4j+OHleV/qf7O8K/8A22us8B/8EqfhJ4U8zz/HHii9kl/13+qtov8A0VX1hZ69oWsaXb65oU8Vzb3UPmQzRf8ALWKX/VVJNqf/ADwgro+u1jtVI+e5v+CcvwBvLX7DrnhW9vo/9Z5t3rEsUv8A5Crc0f8AYb+B+g2sdjofw502KOL/AJ6zS3P/AKNr2Tzp4f8AXzxxVH/aUH/Le+/79Vn9ZrGvsqR//9k=\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCADgAOADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1z7H7frR9i/6Y1sf2Z/tUfY/b9a/rg/DzH8j3qPyPetj7H7frUf2P2/WtDMy/sft+tSeR71ofY/b9aPsft+tBzmDf5F0yk5x0qGvQvgB8G0+Ovx60f4WXGqiyt7+5LXlwJFV1gjjMkgj3dXKqQoweTkggGvpf4geHf+CaH7P/AIpl+EPj74X+I7zULRUS71WcXTZLqDu3CWMNwQcxpt9M9K/yd4x4Yx2d8aZ1mFXEU6VJYyvDnqyaTkqkmoqyk9I28kvQ/wBTuFOMMv4f4PyXLKOGq160sHQqclGCbUXTinJ3lFayvtdt+p8TUV77+13+zR8LfhX4v8I6l8GvFTapoHjKBZrWzOoRy3EYaQBWTjcY3VgFLKSGRgSTxXvnxd/Zc/4J8/suGDxp8U7XVbhLy2W30/w62pSTNcyIFEk6IhV93diziIFsAKSq18zhuAc3rV8VCpVpU44dx55ynaFppuMk0ndNfO7Stc+jxXiVkdDD4OpSo1qssUp+zhCF53g0pRcW1Zpv0sm723+BqK+8NO/Yy/Yr/aA8F6d8ffh/qWr+E/DEHnvrNu9z5aGKESByzTmTySGCksGK7AeAx3Ch4C+Hf/BNf9pTxFd/Bj4W+EtY07VFtXls9bhkuIzKsZGWjM0jhsg5xJGMjPQ13f8AENc1U4ReKoL2tvZfvH+9urrkXLfrb3rann/8RZyZwqTjg8S1Rv7b90v3LTs1UfNa+jfu82iv5Hw9RXp3w5/Zb8bfET9oq4/Z4t7qKzvLC/uItRvbpCFhghYh5QoyWJGNq9CWXkAlh9DeI9A/4JcfBDxGfg14y0PVNa1KzkMGra40tzL9nlJ+YSNC6LuQYyIozjGD8wYV4mV8IY/MMPPEVqtPD04y5OarLlTmt4qybbXXSy7nv5xxxluWYmnhsPRq4qrOHtOWjDnapvacruKSfTW77HxXXtf7TX7Lfhv4FfCv4e+P9F8W3t/P4u0v7RewXVsiJG5jjlym05UbZVXadxJUtuGdotftn/sj6Z+z3c6V44+HniQat4O8RoDpNxLOsk0b7A+1mVQroyncjjqMgjgM3q/7bvhDxN49+CnwD8HeDtFn1HU9Q0ZYbOzt1y0jGztPwAABJY4CgEkgAmvVw3C1XB4LNaGNo3xFGNLks29Z1Iq8baS5ovTR79zxsXxjSx2YZNicBXthq8q3tLpLSFKTtPmV48klrqtux8Z0V9MftD/s5fs9/swfAmz8I+OdVuNV+K2p7LqJtKvGEVomcMro3y+QBkBivmSOMrtUMF1P2df2RPgz4X+C8X7Tf7VmoTzaTeBX0XQNPkkJuEbcFEgjAd3cjKojBVUbnbBYL58OCM4lmn1Bygpxh7So3L3aUevtHbRrS6V90enU8Qsihk/9pRjUlCVT2dJKHvVpdHSjf3ovWzfLsz5Tor7Y/wCGY/2QP2s/Aer3v7NGkat4V8S6Jbs8Wn3yyqtySMoJEldwUYqyB43BUnLAjCn4qube4s7iS0u4HilicpLHIpDIwOCCD0IPauDPuG8ZkPspznCpTqpuE6b5oytpJapNNPdNHp8OcV4DiR1qdOnOlVotKdOpHlnHmV4uybTUlqmmyKaGK4iaCeJXR1KujrkMDwQQeorof2Vf+CbPwm/al+IUvhjT/g34Q0/TbKAz6zrLeELWVbcHIRQu1QzuwwBuHAdudpFYFfYf7KdzcfDj/gnh8T/iRpWo+XeX1zPaxvGzBoT5UUKkHHDZnJBHqOR27+CMLDGZy415yVGnCdSajJx5o04uVrprd2V97N2tueZ4g42pgMhUsPCLr1JwpU3KKkoyqSUeazTWiu0no2le+xydj/wSz/4I/wDijVk+FngvxJ4bPinf5FrKdE06SGSfgbUAtlSTJwAiSZOMAk14H+1P+yXo/wANfibf/DL4v+A9H1z7KsBsLzU9HimjvLSPzRbSIJFbCqJZgFBIjZ5VB5bOTY3t3pl7DqVhcPDPbyrJBLGxDI6nIYEdCCAc19c/8FQok8U+Efhd8WWuV83V9DdZIxu+YNHDMGHGAMyHrg8jj0+jxGbR4j4axeLoU3h6uGcH+7nPllCcuW0lKT96Ls+ZavsfMYXJ6nCvFeCwOIq/WaOLVRfvIU+aFSEVNOLjFe7JXXK9Fvc+Dh+zj+zyBtHwG8GAbduB4XtOmd2P9X0zz9aQ/s4fs8E5PwF8FnPX/ilrT/43XaV9H/sEfs5aD4u1S8/aH+MBhtvBXg8tcO96v7q8uYxvwRj5o4xhmHO5ii4bLAfH5JTz3Pcyhg8PWleW7cnaMVrKUnfRRWr+7c+44grcPcOZTUx+JoQajtFQjzSk9Iwirayk9F970TOU1L/gjp+zZ4R/Y5vf2gPiD8IvD2n+I47dL230hPCFgYY7d5ESOOVTHu8xtwYsGGwNgoSpz826b+y18Bta1G30fSP2dfCF1d3cyw21tb+ErV5JZGIVUVRFliSQAB1Jr9LviP8AHm7/AGjf2Dfih8RXszbWX9u/ZdItmUBorWOWy2bsdWJLOeTguQOAK+Zv+CfXhuHxL+1r4UgnuAi2c094Ac5dooJHCjA9QDzgYB+lfccT4HDzzzLMFlVaap14U1zc0rycqkoc7Te7SvbT0R+ecI5jiocO5vmGdUIOrh6lV8nLG0FGlGappqN7Ju19e93uYE1nVeaGtDyPeo/I96/1ZP8AMMz/ALH7frUf2P2/WtT7H7frVf7H7frWntTmqmf9j9v1qT7H7frWh9j9v1o8j3o9qQRfBXwh8S/GP7QGj6D8INWt7DxEL5ZtNvbq5WJIGjXeXOQdwCqSUCsWAI2t0r6Y1v8Abf8Ajh4I8TP8H/2lP2ZNN8T3dnKLeSS0tGH20dBLGrxyJIH6jaFBzjC9B8k2PiLX/B3xQtPE3hfVZbLUbDUIZrO7hxuicbcHBBB9wQQRwQQa+pdI/wCCknx50rRk07U9G8P6jcom3+0LizkR3P8AeZY5FTP0AHtX8B8N8EcR8YcV8QyyevOlKnjq3O/3cqclKpOydObXvaP3tdND+6+LuMuHuE+F+HVnGGp14VMDR5F+8hVjJQheSqwT93Ve7prqc/8A8FA/2ffhv8K/F/g34i/DbRYtCh8TSk3vh/JRopVZH8xYiSIxiQIyLhVKqAOTU3/BXRmPxt8NIWOB4VBAz/08zV5V8YviX8Q/jj4yt/HPxG8VSXd5ZqEsI47aNIbZA5cKsYXGMnktknAyTgVwX7eH7WHxL8b63pvi3xeNOvLyz05LONYbTykVFJJY7TkszEsecAsdoUcVpxD4IccfUs1hhsHCnGvOjKCVSml7l+dtJ2jzN3SV9zHhrxr4Lhj8mqYzGzqzw9OvGcnTqN/vHHkSbjeXKlytu2x9O/B13X/glT8QCrEf8T9xwexksa88/wCCa3/J3vh3/r0v/wD0klr4+0f/AIKnftB+FPgnrH7PGm6D4bHh7V70XN15lg7Tg5Usqvv6MUQkkFhsG0qMgs/Zy/4KDfF/4T/E/TviF4Q8N6GuoWW8Il1bySRSI6lXRhvBwVJGVIbngivm14Y8YSznJ6yoq2FjSjP347wqOT5dddHpsfQvxP4Ojkee4f2z5sZOrKn7k7WnSjGPN7umqd9z9LP2WPFGj6L/AMFJPiXoWoxL9o1e61OGxlYrkOlyJWUZGeURjwf4eQeo+Z/jt8CPi34N+OGseDNV8G6rd317q8z6dJb2Ly/2ikkhKSRFF/ebs/wjhsqQCCB5TdfHT4l/ETx7c/FK/mt4dZvdSN/JeWcZhKXBfeHTYRtIbkEdxnrX1Z8Pf+Cqv7SEWg2+ha3onhzVr7aR/al1ZSRyP6FlikVCR7AdOfWvXj4McUcQ4GWAx9P2ShWqVKc4yhK8aju4yjzK0tmndrdevkPxm4c4azGOZZZNV3UoUqVSEozhaVJWjOMuV3jq042T2fXTsv2y9NuvhH+wd8Ovgz43jV/EDXMLlC6Mbby45GkUHHOzzUjyv/fRH3vZfGX7SHw2/Ze+BXwx8U+LdBl1a7vdDsbHT5LKJRJHbGC3NzKrPjACrGdnBdggO0ZZfgX4xeMPiH8X/Fl145+JGvz6lqr26oHZERI41+7GiIAqKMk4A5JJOSSTwnx8/bh+N/xM8GaB4K8X2WiyWXg/T/I0zyLExu4wq7pCG5OxUXC7VwoOM5J9CtwRx/k2KxmIw+GjBulSpUOacJaU2leetrtXl1s7K7tr5K4w8Pc3wmAw2NxUpxVatVxHLCpBN1U3y09L8qlaP2bq7sr6fTX7e37PM7aif2sPhjr83iPwf4sdbm5vhM0zWMr8KGLfMITjauceWR5RC4QH6O1L49/FHwn+xn4L+LfwC+H9hrkcGkW0Or6dJA8jW0UcXlu6JblOEkQhgB8qnOAAcfj/AOFv+CyX7THwV+GHiT4LeF9E8M3Oja5E0c0Op2cs/wBlDqVl8kGTau9ThgwYcZADHdWT+z1/wXC/ap/Zlu7g+AvDnhq40y6mEt/ouoQTPBO4XbuGJA0bYxypGdq7sgAV5uXcE8RZdmtbFUKTorFw/eck4N0qvNfmhd+9Bu7cXZpS0btZd2a8ccN5pk1DCYmsq7wVT91zwqJVqPKlyVOVe5NKyUldNxu0r3f60fCD9q39un9ofR9XuPh/8IvCmmQ2VnIV1fVYrqGJptvEcRdyry98H5F43kAjPwbqrXj6pcvqDIbg3DmcxlSpfcd2Nvy4znpx6V41+07/AMHKf7XXxG8Jt4N1LwL4R0DR9T3215Do9rdbrtMj5ZJZJWZVfGAE25BIbcDivk++/wCCwnxutk8xPhh4UAP3Vc3Gf0lr5rjLw64yzlUKVOpLEOmpXnUnCKblb4YLayWrbbfotfqOBPFDgTh94mtVpQwyquPLTpQqTaUU/jqO3M222kopJdbtpfobX2L+warfGP8AZU+Jf7OFvrEH9qTRSXOk2c0+1v3kQAYZ/gE0aBiM4L89Rn8tf2Bf2wPG37WmmeJr7xl4a0rTm0Oe0S3GlrKBIJVlLbvMdunljGMdTXl/jf8A4LXftRfse/tIa5B8H/DfhmC58Oa1eafZXtzBO7yxKzRkSKZNj5HUFcZwQAQK+N4L4V4gy/jOrgJUVN04ONaKml+7qRSfK27NpSTS7q2m593x7xhw1mfAdHMYV3BVZqVCbhJ/vKUm1zJJtJuLTdr2d0nsfoN4V+Anxc8W/EWD4XWPgHVYtXlvFgnt7ixkT7NlgC8uV+RFzkseAOa+gv8Agqf4msLXxF4L+C2h6wk6eHNF3XVrHIWaORwiR7x2YxxggdcPnowz+Ymrf8HhX7f114VGj2XwI+F9nqRTa+sRWd87f7yxPcFA31yPavnLxH/wXh/ap8V+NJ/HviDwP4VudYvb03dxfst0HM27duGJgFwcYAwAAAAABX22L8LM2yrIsRl+Vp1ZYiUOeUnCCjCDclFLmd5N7vRWPz/BeMGTZ1xHhszzhqjDCxnyQgpzcqlRKLk3yrlio3stWmz9S/iT+zn8bvhB4c03xb8Sfh3faTp2q4FnczlGG4ruCSBWJhcjJ2SBW4bj5Tj374af8FJvAnhH4NaT8IPE37NljqNnptklvNbxXyC1uNrbhIYpYn+Yt87Elsvls88fj18bf+DoD9vD9oTwPp/w/wDHnw6+H62Fk6yXBsLC7ie+lUYWSYm4IJGScIEXJzt4GPKbD/gtX8cXu2h1X4beEbeNYpMSx2t3IPM8v92OJ+hk+U+1ccfDnjbhrM6k+HP4c4KLdR0m3s5KzTVr+S7a7vvl4n8A8W5RSp8VL97Tm5RVJVlFbqLumne3m+6s3Zf0meCP2mfhZr37HfiT406f8ANNs9D0vUjBd+E4xB5N2++3G9sQhM/vFPKH/Vj2x89fAv8AaI+H/i79vDwz488LfB/SPCWn3ytpn2Ozl2gSSxNGJzt2RhySFwEAIPIZvmr8dPDv/Bxh+2r4f+AetfAnRfhV4FfwzqepB7+4bSbkyLLwWRZPP+6xhJJILDy12lRkHgZv+C0f7RUL7Z/hL4Pi/wCuiXY/9rV7+b8N+I2Mnl86dKm/YKnKafso3qQk37rSbUWrbWXlc+dyPiTwvwFPM6dStUj9YdSFNr20rUpwivei2k5J3d3d/wB61j9ifI96Psft+tXPI96PI96/0NP4QKf2P2/Wj7H7frVz7H7frR5HvS9qZlP7H7frS/Y7f1P5Vf8AI96j8j3o9qZnmGuxkePzF/09xD/0Gu7+x/8ALv8A0rg/GEjx+OJpYfvLNEV+u1a0JvG3k6zbwTz+V/z2r+afAmv7DiTiv/sOn/6XVP6X8eKHtuG+E/8AsBp/+kUjoJrMzxV8/wD7Y15ALW3g/wCWnk19AQ6lBPL+4n/d183/ALYEP9vapb31jP8Au4ofMmr97zqrfLqh/PuS0rZifL+sal5N/wCRXUfDGHztejnzXn+sTedrMn/XavTPgPD52s1+VUv4x+mVP4J7Z8N9YMMf2G+/57fua9g+Fej/AGyX7d/z1rw/Uv8AiWyyfYa9o/Z78SQTaD9hn/1lfR5bif3vs6h83jqT9j7SmdB48mOj/v6+Y/i14wgvLW8nH7r9zLXvnx48YaHoOgyX2q33lSf8sYf+etfFfxV+JEH2W8gt5683iPE/vfZnpZBhavsvaHj/AI2vPO1STyDWPZw+dUepXk81159Gm3nk3VfHe1PqPZo4/wASWeuQ2sk99BLLHYTfafNmm/df62WLyq8nu7Oee0r6c+xwXf8AroIpI68v8bfDG++3/wBq+HLG5+z/AGzyv300XlRS+b5X/fr/AFVZeyOapTPp/wD4Iz2n2TQviAvreab/AOgXFfIP7acDSftV/EJUXCDxXeyKn95vNbJr7H/4I9Lt0fx+P+nvTv8A0G4r5G/bGvr9P2l/iJpkV7NFaTeM7mWeyMuI5JYpZ/Kk/DzZR/21r8j4Xh/xt3OF/wBO6f8A6TTP2jiv/kyWRf8AXyr/AOl1TyDyYPsv7/8A1nnfuYvJqvNDWhNZ1H5HvX7EfipJ4J8E+I/HniOPw54O0O51LUJYZZYbS0h8yXyoovNl/df9copaPFXhvVfCuqf2HrmlXNjqEUMX2y0u/wDW/vf3v/oryquWcE+m3Wn33g6+1L+0IoftM3kw+XLayxSyy/upYv8AplFFL5v7r/yF5tU4dN/dc+X/AN/q0sY+1Os/Zu+A9/8AHf4l2fhyfzLHw/azfafFXiaaH/RdGsIopZZbqWX/AK5RS/8AXWqfxy8H/Dnwr8Udc0r4SeMYtb8N2upf8SG7/e+bdWsv72LzfNtYv3sX+ql/dRfva6D4b/BrSvFXwv8AFnji++Jum6TJoMMUn9nzXkUkt/F/0yii/eyy+bLbf9Mv9b/zyrn5/Ac2gzWcHjGa5015Zv31p9jl+1WsXlRS+b5cv/PWKX91+9ro9n/sn8Mz9r++P6PPsft+tHke9an2P2/Wj7H7frX717Q/JTP+x+361H9j9v1rU+x+360fY/b9aPamZl+R71H5HvWx9j9v1qP7H7frR7QzPEfHke3x5dRZ2/voxn0+Va5nxfNPeaz9ux/yxrpfitcNp/jjVbwbcwyBxjpwgNeTfEL4qQQ2sc9j/rLr93NX8qeEGNpYbiDil1OuNqf+l1D+r/GHC1cRw7woqfTA0/8A0ikeieBNYns5bixvp4/MrzX44aza6zrEttaMkkBeaEyJ3AIH9aq+D/GE839oX0H72TyfMrc/Yri/Z4+IX7QJ0X9pfx1qWh+F7WYyWV1p9kJhc3ZbKxykq+xCQMny3z907QSw/RuOc9xMeD6n1Op7Oo3BKV7WvOKer20ufN+CmQ5TX8SsOs3w31nDxhWlKkoubny0akklGOsnzJNLuep6R/wQy8A6H8FYfi5+0P8AtT6P4D1DUtJN/pOk3hR02eSsgSR2ZGaT5lDJEkhXIxvJArU+An/BMn9nT/hh/V/2oov2nTb6/ZW1xMFWaL+zrKWMkJZzo8YnaaTAwQVOZU2pIMF/pn/gsB4X/ZI1rSYb/wCMHxV1vSPG+meGnbwdoel2vnRXIaYjLoYwuGZCpJlTaEBAJG1vkD4cfsX+E/G37AfjD9ry88c6jBq3h3Wha2ukxWkZtnjVoFYOSdxZjcIQwIC7GBV9wK/iGOz3OcHmEqFKTny05Nv2jvoleTXRrW0bK9z+m+GeCeEeJuEqGbZhbCyrYqlGMVg48lpSajSpy5bzhO8eao21Fxaad2n8/DVL43lxfSTl3uv9aGHH4Vu+Gvir4n8KYOlR2uV6GSIn/wBmFfUH7DX/AATE8G/tffs93vxX1T4u6hoGoweJGso0j02Oa3jgijR5SwLqzMwlXa25Qm05V85GV+1Z8Av+CcHgbwFJpP7N/wAfvEPibx5HqUNpZ6bBsvre9YttfMiQxoBno6O+TgBWByviLNeNKeFWLljHFNXV5pN+i3b8j9T/ALH8Bq/EE8ioZMqtanPkqcmHnKFN6aznbljHf3r20bemr+XviJ4l1f4nSwy+JLgL5C7Y1tl2gD8c1wl/8GvB+oy+dcm7J27eJR0/75r9GfCn/BM39mH4B/DjTPGP/BQX49z+G9Y1yMG08OaVdRI9ow5ZCypM1yVBTcyKqIzY3NlWPCftpf8ABO3wZ8IfhFaftRfs1fFP/hLfh/fTRq/nlXns1kIRJPNjAWVPNzGwKo8bFVIY7iqxGM40jQlWq4mTaV5R505Jd3Hdf1cnLKP0f8bmlPL8NlsFGpN06dV0JqhUqLTkp1bcsndNLpJr3W7q/wAIT/s4/Dq4mNw4vg56kTr/APE1A37Mnw5ZzJ9p1PLdf9JT/wCIr0SivAXEmfLbES+8/TH4SeGkt8qo/wDgJ6J+xV/wRlvv2vdK1LxdYeNJPDHhbSJ0tb3xBqUm9mZU3skCBAr7F2lyzoBvXk8get+JP+DerwtZ+Cr/AMV/sx/tT2fxIOmWcv27R3+zh7g4aTy0eAygyvwFVygPHzCvYf22NW1n4E/8EtfhB8FNEu0tR4pt7e41gWjoBcReV9rdDs+8DNNGxIzkoMnnnwX/AIJbfFLW/hl+2n4Rg07UXis/EVy2j6pAJMJcRzKQisD1xKImHfK++D9es8xGDxNHBVqk5Tko80+dpxctrLayut9z+e5eH2H4hybMOKcso4elQw863scP7CE41adBtSc6j99SqOMrcrSjprrp80fBrwZ4f/Z6vtbb4daKlkNamja+tZVJRHjMmNo4IOZGzknoOmK4PU/2Dvgf8cPjDNr/AI38YX2iy+J9baXU9TnusWlmZ5PnkKrC7hFyTgZOBX2P/wAFNfAa/D/9t7x3p0MUKRahqEepxLAFA/0mJJWyF6HezZzyepznJ8Fr4qWKx+V55XxMKjVaT5Zy2clGyV32skfvWW8F8BcV8GYJLL6aw8qcalOHKmqbqR5tLq105PdWb3XQ9zX/AINkv+CaMsAA/wCCltuVdQSY9Q0wA+4/0g8Voaf/AMGp37DXifQNU8Q+AP28bzVl0y0d7m4hNnPb23DPmd4pmKAjfljkgFjzivn2ON5XEUSFmYgKqjJJ9K+/f2hmT9gP/gm9oH7ONhJ9n8b/ABML3fiYxviSGF1U3CnB7IYrb0YbyORX22A4rxGKp1atSLjCnG7ftJ7vSKWu7Z+AcVeCWEyHF4DBYTFRq4jF1VCMHhcOkoR96rUdofDTgru27aR+XN3+yL8JvDfxMfx38OtQvvD93Y6qbnSpPDV1ttrV/lWRoEuI2by5gnzLIDlXZMKpKV6z+w1/wbzeAP209J8SXeneL9Y8OaHpZhVNZu0W4+0XyIfKt48IuAqEGSQEsP3LEOxzXT/s6fATxv8AtL/F7SfhB4Cts3eozZubp1JjsrZeZbiT0VF5x1Y4UZLAH9cP2ZviB8Hfht8Yj+wT8C7KGXTvAPg57vX9SD7nfUGuIFKMw4aU+ZI8p6BnVBt2FRjw/mWd5lXVTF4mfs78qV370n0XXRas9Xxg4f4A4PymWCyLKKDxvJ7WUvZxao0YtJ1JJ3V5ytCCas22+iv/ADz6t/wTY+AugazeaOda1y4a0uXhE8GooY2ZGKiRN0IPOMjIBx1A6V8ufEXx1pPjHxZrXi7U/BPna3rWr3l1q8815/oxurma7Es0Uf8ArYv9Zbf62WX97a/vfN83yov0i8V/8jTqX/YQm/8AQzXwJ40/Z48X+DfEmgad42aLTrvxfob6vplrLDdSymLz7uKKLyoov9bL9m/df8sv3sX73/nl9V4cZhmeaSxca9Vz5OS13tfmv+SPzv6TPB/C3CeGyeplGEhQdX23O4K3Nyqla/pzO3qf0EfY/b9aPsft+taHke9H2P2/Wv6p9qfwAZ/2P2/Wj7H7frWp9j9v1o+x+361n7Qx9kY/2P2/Wo/sft+tbH2P2/Wo/sft+tae1M/ZHzD+0d4n8IeBviXcaZ4j1lYzfadBfASQsRsk3pt4BzzE3515XqHxg/Z1tVJ1HWdKAT+/prHH/kOqP7UXjAePP2zfEnhy+n+06fYaba6TZ/8AXX/W/wDPL/nrLLF/21rw/wCJ3wf0qbT7y+sdclijtbOW5m828ii/dRf58qv5Q4o8HOHMXxJi8bSxVek605VJRhNKPNJ3k1eLerbdm3a9lZWR/XnCXjXxLhOGcHga2Fw9ZUIRpxlOEnLlikop2mlokldJXtd3d2fQuj/Gb4DPYm90TxDpyQTjaWhsXQOPQjYM1iv4u+GXinxfpi/Dq5spDbXsYv8A7HaGLBLrt3ZUZ6N618eWfiS++3x2H+qji/dww17d+z1ar4W8OxeN55o3kubgXMkcwKxosTkBWIIOOCScjg+2a+Jz3w8yrhbDRxcMZiKk7pKM5qUW3vdKK2V2td0j948FvEHPONOMlh/qOHp04U6k5zhFxlGPLyqzc3vOUU9Nm3sj9Ev+C7X/ACcb4R/7Elf/AEsuKvfAP/lCV8Uf+xof/wBG6bXzN+2r+3pZ/tpeP9J8e69p+g6G+laHHp6QWWred5hDM7uWYjALu5VQMqpALORuNjwL+37F4L/Y38TfsgWmi6Bc2XiPVRePrb6qRLApMTOvlhsMxMMW1sgKAwKvuyIqYqm85xVe0uWcJpPlercbLS19z9KwnD+Np+G2RZS50/b4bEYepUj7Wn7sYVXKTvzWdou9k23srs+o/wBmTxTqfhf/AIIs/E/VNDYW9wNZvLRpo2YMyT/YoZCTng+XKy8YGAOOufkT9kbUvCekftQ/D/UvHNpHNpUXi2xN2ksZdQPOUKxAYZAba3UjjkMMqdnwJ+30ngz9jfxN+x/ZaJoN1ZeI9VF2+tvqhEsCkxM6+WGwzZhi2tkBQGBV92R5Dp03251k0mXzmDZRrdtxz7YrzsfirrCyim/ZQimmmldNu2vyPreFclp0JZ9SxNWEPruIqShKM4uTpzpwipaNtNPmsnZp+p+tH/BQT9sj4X/s4fFXTvD/AMXf2MdN8Zx3ukrLpHiTU/szCVA7eZAhlt5CCjHJXd/y0U4G4Z8c+Pf7YnxE+MP7Buv/APClv2Gn8J/D/U7oWmoeILO+i+zQKJVaR47eCOJiC6BGmwYwcqxJOK4/4Hf8FXvGVp8Mbb4Y/tK/s+2vxSsNNVVsNSv/AJ7h2Tdg3HnRzJNIFOBIArYGW3Elq4X9s/8A4KDfGb9qPQIPhrovgFvBfgexZTHoGm+ZuuFRVCLcOAquiEZWNUVVOCQxVSPbx2f4WvTqzhifjTSpqEVJN9HJrVeju0flHC3hpmGWY/A4PEZTC+GqRlLFSxdSVGUYO6nToKonGo9LKUeSLTurOy+ZKKgn1TTLZtlzqMEZPQPMoP6mpIbiC4UvbzpIAcEowIB9OK+JlSqxjzOLS9D+qKWPwNep7OnVjKXZSTf3Jn6B/ttaTrPx2/4JbfB/42aJYpcjwvb29vrBtEQi3i8r7I7nb91RNDGpUYwXGRxx4L/wS2+Fut/Ez9tTwjPp2nPLZ+HbltY1ScR5S3jhUlGbPTMpiUd8sPTIuf8ABOX9ub4z/BPw5qegeDfA1l4m8HatevJeaLrkrRYlWIiUwOu5ULptDBkYMEXgck/V3jX9qf41W3gS88Mfsu/s7+BPh/Jq9swu9Si1LMsRdXQSxpBbRKJVIJV33gEfdNfqNLhPNMxr0cwnQqKUVG8eRtycdrPazst9j+NMT4o5VwrlGY8K4HFYapRrTreyxDxEIRpQrtuSnTd5uVNylblupaaaa/IP/BR/xJqnxf8A28vGVn4c09tQuI9Wh0bT7XTYRLJPJDGkGxRGCZHMisMctnC9sDw7xX4Q8W+A9en8K+OPC+o6Nqlrt+06bq1lJbzxblDDdHIAy5BBGRyCDX0p+zR8Jv2hv2W/jfpPxv0jT/DGr3OnPKJrPUL2QieOVGSQB/KJjcqxw4yQTyGBKk/4KI+JPj7+038Rofipqvwosbez0vQpYbPTvDlyb2eOKJWmxLI0cbys7syIQgRT12jLt5GM4J4lr06uKq4Wqqspt8vI7Wet+b+vTt+kZH40cAZHi8FkeGzDDTwFLDxi6/tkpe0glFR9nZvVK97213urSqf8Eqf2cIfjr+0zaeKPElnu8OeCFXV9VeRMxvMpJt4mPQZdS5zwVhYd64v9vf8AaQm/ah/aX13x/aXTSaNaSf2d4cQngWUJIVx6eYxeX1HmY7U79lv9uvx94M8EeMf+CfngH4D3Nj4r8ZJPLdeKLyNomtbf7GJJEeRS8civDtSKRWWNWmGSxkBrw347395+zRD4el+Nmg3miHxJd3UFqkhjlMAgWBnllMTsojIuEwyFslWGM7Q04jhjiOnlNPDUcJU1blN8r32S+S17XZGVeJPh7iuPsZnmZZrQUYRjQw0faRf7vSdSpZXtKc/d1tJRjZ6NH2j/AMEzP24P2Xv2RPCniGD4neAdcPiTVbpf+Kg0uCK4MtoAMW4DPGYQrZY4LbywJI2IB9W/sA/Fj9gb4lfGPxDP+yz8Ltd0fxPLosl1rep6wZWNzA1xFvBaS5l3OZWRicAnB59fwuk/bW+DqufKtdbki83YlwunAJId20FSzjIJ6cV7L+xL/wAFmPh9+xl8QdX+IGh/D291o6loUtg8N7F5fl5dWjkHluxK+YkZIK/MpwGTO4duS4bibD1aNGthH7OD35LyV+qa1v3a1Z8b4kT8Jc6wOZ5jlmd/7biYr3PrLjTm42SjKLsnFK9lJ8sXtZaH0R+3H8QP2BfFtha2P7K/we8QaF4hg1SY6xqF7cslvJHyCvlvNMXYtyGUx7RnO7IC/mL460n4lfE+w8NeCrnwU+sa1BM1jpd9ZXf2i5uBczTapEJPJll/eS/2n/y1/wCeX/PXza+qvjBrN78O/Dd38UPF+hTi3udTLRW+lKLkTWskcco1GF0Zo30/dcQQ/avMKCSaNWYbwTh/8EovAd78Sv2jI/id4wF9a3fh/S2bQJYtHijsbqKO1+wyw+b+6/exRX1tL5v73/pr/rYq/QPDjJs4o5hi3j8O6POoWXLyp25tl81f1Px76RXEXBmL4eybB5JmTxnsXXc5SqurNc/src0n00aitrLQ/VjyPepPsft+tZ+g2c83wbs9V/4TGLW7j/hG4pP7ctIfK+3y/Zf+Pr/tr/ra6j+x/wDOa/eFirn8Z1cMY/ke9H2P2/Wtz+wqP7H/AM5rP6yZ+zZz/wBj9v1qn4k1Kw8K6DeeI9V/d2dhZy3M3/XKL97XUT6PPXlf7Zln44h/Za8cf8IBpUl9qkugyxwww/63ypf3Uv8A5C82k8ToZ0sN++PzL03WNd8SS6x8RoILm5vNU1iW9/6a+b5teb+PNY1X4ha9eTwWN79n/tL/AIltpN/yy/55V7ZpvhXVfB3wv0fXIL6KOS11K1sryKWH/prF/wDHa+kPh78Pfhl4V+C3g/VdW0L/AImms6bFe/6mLyv+P+WLzf8A0VX5pn+N+q0/aH6xw/g6OJnyVD859Ys7Gztf9OHlSV694Bgn1z4GR2lk6vJd6XcpCzNlSzGQDJ9Oa8l+M0P9m6p5Hkfu5a9N+HVzNZ/s4rdwhleLR7x09QQZSK/MeOJyqZfh2v8An5H8pH9QfRwgqfEmZR+x9Tq/+l0zyaz8H+MrzzILHQ7mXyv9d5Vdx4P+D2uzXcljfQfu4tN+0zf9tYq838E+PNc16/k+3X0nly3nmeT51fdGgWcGpaNb2M8Efl3WjxSTTf8ALLyv+eVeDxNxHi8qapk8D8FZTxBGrUp1P4Z8X6PNcQ/aPsNvJJ5X+u/6ZV75oPir/hQPwlvPEeq6rbX2oapDYXtnp3/LWKL/AJa/+Qpay/hXrHhXUvi1eeDZ/Kl/t77V/b13FD5cX2WLypYpf3X/AD18qX/v7Xg/jzxhrnxI8R3niLXJ4/tF1+88mGHyoov+mUVYzdbP6nsKn8MinTo8HU/rlL95Uqc8P8B+hfw+8X6J4j8M23ivQfLk0+/h8y0qXWpYdQtZra9HlwyV4V+yLZz+CfhVo2q33iT/AIk+sw3Uhhm/5ZX8V1LF+6/6ZSxRf9/Yqs/Hn4wX00seh6H5lt5V5++r8sWQ1lxF7OhU/wCXh+64biGkuF6ePxcLVKlM5/48aDY6br0f2H95JL+8qbwGAuhbfL2kTEEe+BVrxVpv9vWsmqwT+bJa/u5qb4XTy9OKBAuJPujt8q1+u5++Xh5wfSUf1PgfB6NOp4qutHrSqf8Atp9X/sDeEdEuvhbc6M0Ply217LLDN/zyr6P03R/7NsI7Ez+b5X7vzv8AnrXL/s3/AApg8BeCxL5HlyXhWbP1Fdh4Pm/tHwlZ6rP/AMvVn5lf0/lv7mlS9D/PLOqntcTXn5v8zm/GN5Bpsv8A1yhrk7P4s+FYZvsOqwXMUf8Az18nzYqj+J3iT+0tQvPsU/8Ao8VeZ+dPqUnkf9+f+utY43NlSq/uz08BlPtaP7w9UvPiR8FoZf8AhP77xVpsVxpem3UcN3qF5FbeVay+VLL/AK3yv+faL/v1Xwf+2Z4q1b9tjx5p+leDr7xb4f0+/h0HQIdE1zWP7NtopdT1WXyrqWx/5e4pYoraXyov+mUv/LrXtHjzQdL8SaDqHhzVfN+z39nLbTeT/wA8pYq8r8SfAHwbeeMo/HE897FeWusRajpssU3lS2t1FLLLL5Uv/PKWWXza+fxOfe1/dnsU+HHS/eUz5P8Aid+z3fQ+KPDfgf4V+HNf+x+MryK58H2muaxay+bFdS/ZbWWXyoooopZZbaWX/rl5X73915taH7BPgnx/rH7SWh/8I58JJfEFxF+782702WS20aW6i8qLVZf3Uv7qKWWKX97/AM8q+hNN+Bvwr+G/hzxh8Tb74m+MdNvNGh/tLw3pPh68itoorqX7VF5sX+q/exfbvNi8ryvK8qX/AJ619Uf8E8fgz4H+BvijxJ4A8HfGOy8YyX+g6XJNqGnWf/Pr9q82X7TF/rYv3sUUUUsssv7qX/llWmXwoVatOo6hzY329KjUp+zD9nX9iHx/4CsPDd/8afipba/qnheH7No/2Sz/AHUVhFFpXlWv/XKL+zJfK/df62X7V+6lqT9lDUv2evgbf6h+z14Vvra2j8OTf6Hq2reV9pupbqWXzYpZfKi/e/uov/IUX/LKvVP2hPj9ofwBv9H/AOEq+zf2frPmxeb5372KX91/yy/5a/63/wAhV+b/AI28VDwr8Qbyf7RJeyWGpeZZ6jDNLHay+VLFL5sXlS/9cv3sUv8Aqv8AtlX0GNzGjgHT9mfNUqVbF/xD9LPgn+0h8MvjB+y1ceK/B19ptjJo2jxW2paJaQ/8eH/LKKLyv+2X7qtT4nfFSe88B6hfeFNcij/tSz1m203VpZv9FtZbWKWL97L/AMsv3sX/AJCl/wCmVfm/DrHir4J/Buz8ZeB9dvdN1SXWIrbXof8Alldfupf3Uv8Az1i/1v7r/rr5sv8AqoosvxV+3J8RvG2jSaH4k8K+G5Y/JtY/K/s2X/llLFLL/wAtf+Wvlf8Axryq8nDZsqtI9urlx92ftFftseMfgn4W8N3vhXwrbeZrOvSx3n9o+bL9liiii8r/AL+y/wDLX/rr/wAta9Q+Cn7R8Hxg+F9v8VBoctjb/wBpfYprSab975sv/LKL/nrL+9ir4r+EnhT47/tsaLqGq+Kvhlc23h+X7Ve/8JD+9/0+6llll/dRSy+VL+983/Vf88v3v/TXk9B/aQ+Kn7GfgfWPgtfWMv2yXXrXVvNmmli8qWLypYv+2UssX/LL/Wxf8tf+WsXhYbi3BV87qYOFT+GeviOG6X9iU8Qfo3efF/w3pt/p+h65rn2bUIryKLUtO0/yrn97Laeb/qov3vlf/Gv+eVdzNo8GpWskE/lXNvL+7mh/5ZS1+Q/wZ/bkuPgzr3/CR2N7repXH7qOH+1vK/49Yopf3Uv/AD1l82X91L/yyi8391L5v7r7k/Zd/wCCkP7IWm/BvQ9K8cfFSXTdZlh8zUrS70G/k/0qX97dfvYopYv9bLL5X/TLyq+h/tWjbQ+cnlPsmfF/j2G+1LRtcsYD5UmjeKrW5+yf89Yv+JfLLX1B8WtN0rw3+zx4H1X7D5n2Xw3ayQ+V5v8Az9XX/PL/AK6/9Na+f9Ss7Gzv/tH2eTy7rUormbzf+eUUX72L/wBFVsfH79oTxVoPg3w38Mr74c639n0bQbW2/tyKGKSKX97LL/7V8qvhs/ftaVNn3uRr2VSofIf7QmmzQy28HnxySRQ+ZXc+B4i37N7xomC2i32B9TLXJfHjxtpXiT7Hqv8AZV9FJL5scMv2PyopbWL/AFX/AG183zf/ACFXoXwc0xPEPwk07Rbfy5RewTQL5w2q2+V1+b0HPNfnXGFSX9lUqkv+fq/CMj+nPo6UJS4rzGK2ng6n4zpnhvwx+FfiPWNYt4PDljJc+b5Un+p/1UUtfo1ffDW68G/DXSNFkijMl94ciuzLL6yRV5boXgPwD8MYY/AHhq/luTLqUX9o5m8uW68ryv8ARYpf+2sX/f2vT7zxzN4pkuNTvT5UflRR+T/zy8o+XX4txpneMznGU3Tp/u6Z+lcF8Of2NR9lSqf9fD5E+G+m+I/BHxkk1z7DFHcaX5sc0Mv/AG1/dV5v/wAITPD9n8gf8fUMscM1fV/7R/gzQvC3hRPiHBNbW32nUvs800Q/eGX/AK514J4q0G40fWdP0Lz/AC5LCaWO8hmm/wBVL/qpf/RVfecP51Rx1FVof1yHwPFOQ/V26Cqfw3/6WeufsxzeT8JdLgvoPM/sazuv3X/TX7VLLXm/xO/tXXta1DVYIJf3U3mTeTXtH7Lug6F/wr64xfRyXEXm/wCqqOL4e303w+1jyLH/AEy6s5ZIfN/65V4FLNsJgc8xFT/p4ffLJcXmvDuHw/8Az7pnn/7Pf9uan/ah1yD/AEOWGukutOXTJfKjOVcB1b1HTP6VqfA7wTfaD4IuL7VYPLuLrzfJh/5a1kyxXdvI1veOS8bEfMDxznHKr/KvsM1xH1nIZT/vRM/DDA4fL/EanRXxqlUv/wCSn6qeHdNzotmfW1j/APQRXnviTxV/wrf9njT9Vn/4+P7Nitof+uvlV8m+A/8Agph+0P4RlhtvEVtoniKzikDXK3lp9nlEI4HlyxeV5X/fqWt79qL9pbwd42sND+Enhyx1e21TwveeXqUt3DF5Uvmxf8sv3tf0T/a3sacZ+R/nwshrPHzhU7v8ztPDesQaxpf7+fypJZv9dVfTfB994k+0QaT9h8yKaWP+z5dSiiuv+/Usvmy1w/gPXvtmlxwz+bFJ/wA9v+eVfXHwN8K+Dte8B6Hq3iqxttS82zljmu/sf72X97XyWKzd0nc+yo4Gx81+Nvg/8VLzVI4P+FZa/wDbLr/lj/Y8v+leV/y1i/561534k8N65o8sljrml3NlcRf8sruHy5a+0PHn7LnwI+36xfQeALaOO6s/ts3+tj/exSxeVL/5Flqn8TvhLqvhX4c+KNV8HfE3xt4fvNG1iwtrO0tPFV/Ha/vYrDzfNtopf+mstfP/ANre1/eHprDVrH53+MPCt9rHi2PSrHSpL64uvKtrO0ih8zzfN/5ZV9WeD/8AhR/7Lvwvk+Ffirxx/ZvjCWaK91KX+zZbmL7f/wAsv3sUXlSxRS/uv9bLF/rf+etHhvwf4xvPjJ4b8Y+KvFUtzH9siubOaGGK2l8qK6li/eyxfvZf9V/y1roP2ovhj4j03xbcarpXiO5tvt9nrNzeWk1n9tsfNtdKiltZfs0v7r/W/wCt/df6qnPFvFOnBHLKiqac2eL/ALcnirwB+1R+y/4f+JvhW+srbxBF4k/s6bT7TUovtUv+t/df8svN/wBbFL/0yillr4P8SajpX9syWWlX0lzZ2tnFH5sMPlxSyxRfvfK/6ZebXoHxgvP+EVtbjXNcn8P6lqms2cXnWlpo9rbfZYpYtPv/ALVFFFFFFFL/AKTLa/8AXKKWvL7y81y8uri38iLzIofMmh/1sUsX/XKvq6+Y1qitUPi44L2T/dnqHhvz/Evwlt/Dk89t9s1nWIv7HtPJ+0yy+V5sX7ryv9V/y1/z/rc/xt4V8D6b4St9VsfMubyX959rivIvKlil83yv3X/PWKLyvN/zLLw+g+Kp4fDnn6rPc6lqkWj2EdnNDNLJ9gi/6a/9/Yoq5/Xpr7/hKJNDvr/Ura3tZvLhi1bzfNtYv+msVZ06unszoX8JH6+f8EtfEn2z9l/+yvFWuf8AIGvPL/ff8usUsUUsUX/kWvl//gsxN4Vs/jJp8GhwRf2h/Y9r/wAekP8Azyll/wDtVbn7Lv7XNj8Df2X9Q1WDQ77xJqniPxhLJo+k2kPmyyxWun2Et1L/ANcovKl/7+14P/wVQ+LX/Cwvj9o/iqGeWOz1TwTa3sNp/wA+vmyyy+V/2ylr8oyHL6dLjOpiIU/5z6zMMTR+pKnTPn+HWJ/ssk/7rzIpv3376vSPgnjXvG+j6H58nl3WsWtt+5/6ay+VXldnNBZ6zJpWq+b5n+r83/plX6Afs3/sx+B9N0bQ/jhpfjixlt4vKvZof+EbsPK8r/W/88v3Uv8A01/+1V+rzxPsj5ynS9qc/rF5YQzW99qvmy28t5Fbfuf3vmy3UsVrF/5Cli/79V75438EweJPhL4Tvr7SopJNUs9Ljm/65S+V5v8A6Nr5r8bTar/whGl6rqo/4mH9vaXczQw/89YtQi/9q3Mtffmj6DpNl8NND+3QRSx6X4JsL2Hzv+mWlRSxf+iq8rPqv7qme1ktP95UPhPx58cv2ebz4BWc/ir9le+k0u/16WOz8PWniTypbD/RbWXzYrn7L5v/AC1/8mv+/vP+OvAtp8BLvxF4G0q5mgtvDV/qCWc7ne6QpLI0b+527TXD3mj+HPHnwG+E9hPB9muL/wAbazp15NFeeXFFL5Wixeb/AMtf+WXlV6x+2LA83jbx1i9Wc3UFxMs0abARLb7xgdsbsfhX5/xdBRp0qb+1NP8ABr9T+lvo6Vaj4gzKrL4o4SX/AKVBnzn8QvGHiPQfhf8AD/xj/ZUn9j6po9/c+G5vOl8391qEtrLLL+9/1vm23m/9ta1PB/7SGufZdP8APnl+z/bIvO/ff8sov/tVdR+058Pp/hX+yX8B/DniTSo7bWLXQdZ+2Qy/62K1l1WWWL/0bLXj/wCz34V/4XB8UI/hzBP5X2+G6js5f+mv2WXyv/IvlVpVyzLauEtOmfC4XirOMLjL06h7ZrH7RWh+PPFtv8Odcg+06X/b1rcw3cX7q5i/e/8APX/nlXrnjzwR8FviFr15Pf2X+keTax3k2nal/wAtfN/1vlf8sv8AVfva+G/hv5F543t9V1WeWO3tfKkmmhm8qWL97/ra1Pip428ZT/FXxJ/p37uXWJf9VN/qvNlr5PG8INVaf1Op7M+9wHHtGtRqVMww/tP3h9xfCLw74B8G+HJ9V8DXH2izmi8y7m87/ll5v+t/7Zf+iq9X8NfDyz1bStbmvbi3j+z6CbuKHP7wy/aI44v+/n/tSvir4G/Gb4qf8Ilb6VP4ctr3S4v9Gmmls/M/df8APL/v1X1L8F/EfjrWNJtPEUPiLUJP7FltrO7itZM3upn915cZ/wCmsuY5fK/e+V50VfmHEuU4vL69SdSofp2Gz2ni8ovg/wB3t+hjXujz+G/Hsc+qz+Zby6D5mmxRf8spZZfK8r/yFXnPiqSCTWZGgfdwN5/2q9O+P3jeYjULG9svs95o832KaL/nrL/pUv8A8arw7wvcXF1pKXFy+5ixGfYYX+lfqk/+Sah/hpf+knD4c4mWL8U1Ul/z7rfnE9H1L4N+HdbkLxXEtskajJtIYvT/AK5U34qeCv7N+Jeqa59u8uTVLz9953+qpvgvVhYa1fLNfebJcwC48n/nl/nza0vjN488K6n8QdQ8D2N9bXOoWupS3M2n+d+98r/MtfuOKfsqa9D+JKX++y9X+ZY+G2vfY7WOxn/dfvvMm/5ay+bXoGsfELxj4O0v+1fB3ji98yKzikmtNOmli/deV5vlebF+682KL/2rXi+g6NpOvan/AGVY6V/Zsl/NF++l/dy3UsUvm/8AXKvQPhvZz+NvG+h+AINVuY49UvLWy+1w3kXlRfvYoopYv+msUsv/ACy/6a18zVxN6x73sv3J3nwN/br8Y+A9Zk8R6rPc+Kbfyfs32TUNSl82L/Vf8tf+2VesTf8ABUSx1KaMXHwWkjt4pvM87/hJPMl/9Ja5vxV8Dfgf8PdZk8D65+1t8HNI1iLyvO0nxDo+g6bfRf8ALWL/AJ5S1c0H9jP/AISqLz/A/jH4OeKI/wDp01K//wDbS6rmqKiZUqtYr+JP2nPAHxs8ZR6r4V0O5024tYYpLyG7hi/56yyyy/uv+msv/kWrn7cnhX4SfELXvsOufHfwL4b8QaDZ69ZQ6d4n1i1tpZf7T0WK1/5a14H+114V1b9jPxd4X1Xxz8MbHzNZ+3yWc3hjxJLFFF9l8rzfN+1xS/8APWvD/j9/wUU8Y/GDXrzVdV0nRLG3lm8zyYdBiubn/VeVF+9liqP4Tp+zOfE4ikeb/tLfD3SvB+jW+lT6rpOr+VpthHDq2nXn2m2l8q1iil8qWL/W/vYpa8r0HXrGz/5CtxLc/arP/W/8sq9M/wCEq0Px59ngsYI49PtbPyrzSZrPzPNl/wCev/TL/v1Xl81nBeeKI4PIttN0+6vIo4ZpZv3UX/TWXyv+WVfT0sT7Wj7Q+b9n++OTh1ix/wCEcs9DsdKjjuJYZf3sX+tllll/9Ffuqr2esedqkk88H+t/55f8sq4/+2PJlj8j/WVc/tiCaWS+nn/0jzq7zzD6M8E/EKx8N/DTw/YQarqX2jS5tU1Gz/sTWPsV9YS/uvNl8397/rfK/wDIVcX8QppvHnjjUPGVvfSyWfnWttD50372L91F/on/AE1+y+bFF5v/AEy82uD17xtpU2jafY/vf7UsLy6ivP8Anl5UUUXleV/21+0+b/2yrY0D4nWP/CvrPwdBYy+ZYaxdXs0003+t+1RRebF/5Lf+Ra8Onhvqtb2h1e1O8+DPwxvvG0Ul9Brl9bXGlzRedaeT5Xlf62X/AFv+qi/1X/LWWL97L/11r2zX/wBqjxjDoPgv4EeHP7N0nw/LDFZeMNPtNNiill826l82LzZfN8qL7L5X73/W/wCt82WvC/hv8Qv+Eb8R3GuaVPJZSXVnFH+6m/55S/8A2qrl548/tj4jW/iqeCS+uIrz7TNNL/y1loqYo6aWIoo+vNY03Spr/T/Dl9B5X2rUrXUYYfJ/1Vra/wClRRf+QvNr7s8H6lpR8EeF576x+22d/wDD3S7aa0+2eV5sUuixRS/vf+WX+tr81/8AhrXSrzwbpcGuWNzLb2uvS6l5UM373zZYoopf/IUVfpZ8GdZ0LUvgj4T8carodzc2dr8MbC9m0+0m/eyxRaLFL5UX/fquLN8bSxVGn7M9rJP4tQ8b+LX7Gf7Nmm/CD/hHPhz8Fv7Ek0aa/wBR0GX/AITa6uYotUliii82XzYv+na2r5e+Pul6w3izXtJ13Uv7SvJLYJLdQWvl+eWgXBWPtkEYFfRv/BQ79pb4STfsUeMP+EV8D+LdJ1i6s4raH7XeWssUXmy2v7391L/01l/79V8jfDn4i+Fviz4W0LUT44sE1UeHIl1z7fdFFiuoAIjHucZLmJYpCD/fPPavkc+wuPq4ClWcb2aZ/QvgdxDwzlGfYuGNrqjCrRnTUpbJtxevyT366dTnf2nfD2v6l+zT8NoNd8UX2oTpaXXmPc6v5sb/AL2L/Vjt/rK5b9gfwr448E/tIeFfFcs19pds80skd4kOMf6LdSRf+kw/MV6faeINH1WJJtBvRqCsFZ/saMxjQ9HYEAqvvWvb2FlJaJc3Wv2du7uFNtJ5jyocAncI0bGM49yDjNed/bGP9n7P6u/v/wCAe7DgHwuo1faS4lpf+AL/AOWHyzoOh6hqVvrHiHXLARS39nnEVsbaOKXzf+WUUX7r/tlXpPg7wva+PPiDYeKr3Rkb7bMPP2QeZFc+X/rK9ZaCwDyRx65aO0a5wvmAN7AlAM9tpIOeMZ4p+iaXNrY3C5gtVLEI11MAHwC2RtzxgE7jgYHWubE5vj69GcFSak+t9vlY9DKeCvDLLsZCrU4kpTSnfl5Urvtf2j/Iq+OtCm8J6lo/hjwX4kvbNbqeW41LRYJvLtf+mUtelfAzx14j8KW+qapLI0l/pOmy6hZQ3p+0xG6tv3kQ/dfvf+Wf/kKsfQfgb428TysmgS6beKqhne11BJQoO/GQmWB+T7uNw3rkDPGhpv7Lvxt1CQJJ4QFsD91p72Lk8ZGEZmBHOcj+FvSvma2W1a+HjTqU2/N9T7+dHgTF16ko57SUZ/ZUV+fP+hgf8FCdZu49S0v4keGLO5tv7bvItUvbNp4mI8y1lHk/uf8ArpXn/wAOpbu48O/ab1AHkndjgdelem+JfgN8W/C9qlzceB7+7Z4vMMGnW7TyIOMghRwQDk+wNeaeHviR4YvfGVr4T8S2epaO094IHfUbdYufmyASTz8p7V7OEw+ZyymGWqk3yte89Pv/AOHObJ34c8HcQrPJ55TnyU5x5EtXe21pNt6aK2pq+OfG2reFvilqGh6XcRRx3VhJJP5sP/LLyZf3X/oqvPvhvqWq3n7UHii+1Ux+Z9jupLybzvK8ryrqL/yLXZ+OfA2tXHi/VvHd7fR/Zlsrp4PK/wC2teMWfir/AIQP40+JNc1XzJI4tH/ffufM/wBbLF/8dr9xx7VTBT9mz+DsHXUMxlKezbZ9GQ6lrmj3WnweHNKufMutY/5dJvtP7qKKXzZYov8Av1FW58PfjB8Ofhj8X/Bfjjx/44sYreLxVYXN5d+TdRSxWsV1FLL5sX/LWvA/En7TnhzR7qOxgsvN+1fvP3M3l+V/zy/1X+tlryP4tfHLVfjN4ts54IPLjsLP7ND/AKZLJ/01ll/e18xSpqrV1PoKmY4Xoe0f8FmNY0rxV+3hqmueB/NubPXtB0a903yYZfNl83T4v+WVfO/hvwh4jvNej0rXLG5tpPOi86Gb915Xmyxf/Ha9QvPAelab4o8N+OPhJquv+JLywhsL2a0+x+Vc+b5v72KL/wAheV/0yrrB8K/2k9Y8W2/jmb4LeNrm3urP+zofO0GWSW1itZbX/W/88ovK82KL/rl+6ruoYijTXsznWGwlXC1MR7T95/z7P0I/4KZeDrGaXw3Y654j+0+bZ6pFZ2n+qisLWXT9Pi8ryov+WXm20sv/AG1r8m/G3jaD/hY2qWOh2OifZ/7Sl8m70OGWKx/7ZRXf/LL/AK619mftpftLaVo/jO40rXL69+2X8MUfkzQyx+VF5X/TWvH9e+LX7CXiqXT9K8R/Cu5ttcutY0u91LxZD5v/AB6xahF9q/0b/VS/6LFL/rf+/X72ufD01SpHBjF7WocH8N7y+1K1vJ7GDzZIoftN5Naf6r/ll+9/6Zf62KuL1+Gfwfr0c8F9HHJF+88nzv8AVf8AbWvpzWP+Gc/Ctr480P4O6V+8uvKttN1HT7O6isZbX7XFdRf8hD/SopfK8qKWL/nrF/zyr5v+MHgmez0uz1aef/j61L/TPK/df9+q7sE17E82pTq0j57s4Z5r+rl5r082jR2MEFt5fnSyed5P73/v7/2yrn9H16+s7r7fY30sUn/PaL91RNMPKjr1TyDYhvIPNkgM8UscU3/f2uk03UoNSEcB8qyj+xxRzeT/AMtf+WX/ANtrg7M+TFGK1Jryf7BZwQfupIofMrOoaHrGg6xB5tx5EHm+b+8/df8APKL/APdVc8Ka9BDa3nn/AOjXEUP77yZvKll/z5steZ/bNWh0uT/plD++ruPCum+MbPWbfSr7wdcx3nk+Z+9h/wCuteTVpgtz1Dw34U8R+MNLj0qx0mXzPOl/6ZRRf9ta/XTwr8cvg74J/Za0+xn+KmiSSWvwlitvKhvPNl83+xfK8r7N/rfN83915XlebX5Z/CXXtV0HQf7VvrHyreX95D/pkX+q/wBb/wBsv3Vdp4J1jVdYsP8AhI76DyvtU37mHzv9VFXzeNqanr4HGrC+0MvwR8MfiN+0JousfCSx8Y6lFqmsw/2j9k1azuraxiltZbXypZZfK/1vlS3MX7rzf9V/rax/Af7N+u/BPxRef8Jxq1rLqFrNLHDDp0PmxSxSxeV5v72vbPgnqX9pePLfyL65to4obqSabT/9b+6i/wBV/ra6j9sC80PUvEfhvxHpX72zv/CsX2O78n/j6/ey/wDx2KumpmVF5R9X/wCXnOdX1fGfVPrlP+GeR2c2lQ2EdjB9p8u1/dw2kX7qKL/tlUlnNY+b/wAf0v72q/nCfzPO8391UZvLHyo4J4fL/ff66Kvm6p531lly8xD5hsdW8yqcPiTXPtX7+/i/56Ual9gz5E8Hl/8AXKqf2OCaL9xB+7/6aw1Bp7U6Cz8ba5o5jnsZ/wDttDXongP9sz4xeCZfIvb7+17eL/ljqP73/wAi/wCtrxvyZ4ZcQTy+XR/y1/0jza0NaePr0v4bPsz4e/t+fDLxJLb6V440q50SSX/l78n7Ta//AB2vYNNm+Ffxa0uO+sZ9J8QW8X7yHyfKk+y//Gpa/OOz8iz/AHE/meZ/z2rQ0fxJrnhW/wD7d8HeI7mxvIv9TNaTfva1TPVpZ9Vf+8H2B+0J+yv8Mv8AhVfijxVof26yuLDw3dXMMXneZFLLFFLL/wAtf3v/AJFrxu8/4J+6r4w8EaP44sfCum6t/b2m2sk3kzfvfKliil/e+b/9trLm/bk+Jl58NNY8AeMfs2rx6po91Zfa5ofKuovNi8qvpj9l34/fDLxt4D8P+ALHxHFba5YaPa2X9naj+7luvKi8r91/z1/9G12+1l/Z3/cQ1X9k4+sfHesfs933gPy7GfwPFZfufMhtLvTZbaWWsObw3PBF+/sbmyk/7+RV+oGpabY6xayWOuaVFc28v+uiu4fNirzvxt+zH8MvFUUk+kwXOkXEvm/vof3kXm/9cv8A415VZe0roKuUVaS/d1D8+5rOfHkfYY7n/ptDDXUfBP4weI/BPg3xBY+KvjHqVzHdWf2LTbvzrqWWK6lli8r/AJZfuv8AlrFXvnir9hXxH5txPpVxpOpR/wDLHyf9Gupf/aX/AJFryvQf2afGPwf+JfiCDXPDl9bf8JH4PupNN07Uf9Oi+1faov3sX+ti/wCWsX+q/wBV5v8AyyrtwWM/dVKdQ4aeGxlKr+8Of0f9rT44Wdr/AGVquuab4k0//VzadremxSeb/wBdf+WtU9e+JH7NnjyK4PxO/ZC0T+0JYZf+Jtof+jfvf+uX/wBtrHvNNn82Tz7GK++y/wCu+yfvfKrLm8V+FdN8yC+0q9tv+m3k/uq56WJ1OP65jLnceCfDf7OfxU8OfaPFXirSfC95dQ2sdn/ZOj+ZF5tr9qi/1v8Azy8qXyv+WUVHir/gnLP8Q7COx+Ffx+8N63bxTeZ50s373/v1F5tYc2m/CrR/Lg0qDyrfyYpP9E/1XmyxebL/AORZarzTfDmaX9xffvP+mN55VdFTGujiv3Zp9ZpP93Upn5bzXnkxR+RVz7Ybz/plJWH/AMtY7f8A55VJDNn9/wD8tK+6PI9man2zyfM4/eVqWepf6Vx/yyhrn5ph/o88H+sqxZ3nkxcf8tazD2Z3HhvUp7y6t7GCCWX7V/o3leT5n/fr/wAi16pD488Valp9xYW9vcyXn+n/ANvSxebJLYWHmxS+VFL/ANMvKl/7+14fps0/7v8Af/6quks9ZvofDmseRBbRx+TF500v+t/65Rf9df3X/fquLE0qVUPZH1R4b8SQXk0eleI/tMf+hxatr0U0P/LLyvNii/65eV+9/wCuUVd5DrGuaD4Ds9V/4Q7Urm8urPzPNtLP91LLLL+6/wCWX/LWWX/yLXmfw2h1zxJ8Arjx/wCf4O0m8v4dZkm+16b9pvr/APdfapZYov8AVWkUVrYyxRRf9df+etfSmg6D4A+DPhfQ/Dfir7NrcfgPTZda167m0eLzZfN/dWNrF/z182WWX/trF/0yr5/E4E9bDZdRqlP4Y6brng/4ceKL7+yr6LUJdNi07TYvJ/ey/av9bL/5C/8AItGvaD8RvFXwq8N+R4V/d6NqV/ZeT50Xmxeb5Uv/AD1/6a19AfB/w3P4V+HUfirxVpX/ABMJfNk1KG0s4v3t/L+9lii/56+V+6tYv+uVdZo9nb2cUn9q6rJ/x5+ZqV39sl8qL97/AMsov+ussv8A5CrxPq1G/tD7Klgl9U+p/wDTv/7c+P7P4e+KvK8//hFbmL99/wAtbyL/AOO1ch+FXjfzY/sPg77TH/z1/tK1/wDjtfYEOpaVZxeRBPLLH/02ml/9q15v8Zv2xvg98DZf7K8Y65L/AGh5Pmf2faQ+ZL5VdH1KizyFluEpL94eL6P+zr4/1KSSf/hFZbb/AJaTf6ZF5UtWJ/2afHHmyGGx+zSf9cbqXzf/ACFUk3/BWj4LH/kFeB/Elz/z2/cxf/Hax9S/4KuX15L/AMUd+z14gvo/+e0s0sX/AKKirX+zUYexyo2If2S/jTeS/uLjSf8Atr9qi/8AaValn+xz8TZv+P7VdIik/wCmXmy153/w8g/ah8SWHn+Ff2UNWubeX/lrDpt1LF5X/fquL1L9rT/goHD9o/4Rz4Halokcs37mG08K3UcUX/TL97+6rWnlKD2WX/8APs94/wCGM/FU0vkT+KpP/BP+6/8ARtakP7EOuzRYn8fxeZ/z1/s3/wC218t698SP+CnXxI/5gfiS2j/6dLP7NXPw+Cf+CmkP7/8Asrxl+9/6fK6KeVUDJ/VPsYc+sPi1+y7B8Pfhpqniq+8cRy/YLPzIYfJii82o9B+BvwPhit/7V+LcUd5+686KHWIv3Usv/bKvk/Uv2Yv+Cj/jawjsdc8N63fW/wDrPJ1HXovK/wDIstZ5/wCCeP7b95L5/wDwg/lSf89ZdYtf/jtdX1LB+x9n7Qy9m1V9pTw5+onw9/aKsvh74Xk0O++OGk+ILe1m/wCPvVpormWKL/rrF5X/ADyrP17/AIKKfA/R5bix1X40+EopIpvLmhis5Zf/AGrX5n2f/BNP9tKaX7P/AMIrbRyf9NdSiqxN/wAEu/2tvsv26f8As3y5f+ol5Xlf9/aKWCy7/n4drxmY/wDLumfoR4k/4KffAHQdBuNVg+MWiSeV+78m00eWWX/0bXgfxC/4K6eDtS+IPhfxjpUF7c/2NDf203+h+X/rZbWXzYv+ev8Ax7V83/8ADq/9raWL9/YWX/bLUoq0NM/4JI/tKalFJ9u1bSbH/rteV0U8Nlv/AD8M6mIzeq/4Z6R48/4LMeKvFVhHY654A0TUv30sv/Ews7W58r/W/wDPWKvF9e/bwsdYlkuJ/hzbRXEtnFH+61KWKLzf+evlRfuov+uVdpZf8EbPi3ef8f3xU0mKT/pjDLLR/wAOZ/ip/r4Pipokv/bGX/41T9nkiOWphs2qnjd5+1Prk8UcH2GOOSKHy/3M0tZf/DSOuC6kn8i2/ezeZ5P73/47Xvln/wAEefGPm/8AE2+Kmmx/89poYZa6DTf+COelTRRwXHxilluP+eUWj/8A22tPrOTmX9k5ifmf50/2q4qSzPnSxiq83nw3Xkf9NqIT5N1ivbPKpFyaafzfPE/+t/8AIVWNNmgmus/8s4qy5p8yyQf9/qks7zyazNTpNNvJ5v8Av9Wp9sgmikgP/bGufs5u8H7uSX/XVYhvPscUc/n/APLasyfZHsHhXx5fQ2GoeHIL77NJdWf9k2cPk2scUUUt1/y1/df88vN/e/63/tlXtGg/GbQ/G1/cf8JHpV7q0kV5LqOpatq2seZc6zfyxRRWHm/uv+PWL/j68r/nrL5VfJcOpeTFJcQTyeZ/z286ug0fxJrhi+w/25JHp/8Ay2+yfupbqsvZUaptSquifoR4P/a6+GXgnwvceDvA/wAK5fD9v9s+26x/Z+vfaftV1F/qov3sUv8A11/56/6qush/4KEQ/YI/7D+HOiS/YP3cPkzRS+V/5C/dS18J+CrPQ7O1jnn+3eZ/zxm82WKKukhm0r7V9uguJY4/+eMP+q/+O0f2ThKv/Ls7aWZYv/n4fXmpf8FCPGNnFcX0Hg7RP+m37m6k/wDatY83/BRrxx9ljn/4Q7w//pU3/QHuv/jtfM95qdjeWv2EXFz5f/TGaWOX/v7Vj+3oJaP7Kwn/AD7F/aOL/wCfh9IXn/BQj4qeVHY2HhXwtHHF/wBOcsXlf+Ray7z9vD47zy/6Dq2m23/XHTYv/asVeB/2n/s0QzQfavP8j95T/s7Cf8+w/tDFfznukv7b3x+/eeR4xijkl/6g9r/8aos/26v2hYbWPz/GNtcyf6zzpdHtYvN/8hV4f9suJpY56khvP9XS+p4X/n2P65iv+fh7ZrH7b3x+1i1+w/8ACYyReb/z6WcUUtE/7b37Rk3+jnx//wCU21/+NV4v9st/Q/nR52ZY7j/v9TWXYT/n2H1zFf8APw90s/28P2hYZYzPrllcx/8APaXTYqks/wBvb40wy/YPI03/AJ+fNls5f+ev/XWvB5rzyYv9Hoh1ic+Z/wA8q0/s7Cf8+xf2ji/+fh9CQ/8ABQ740+b5H9h6JLH5PmedNZy//Hakh/4KEfFSGwj/AOKc8Py/ZYf3M0tndS/+1a+d/tn/AC8f1qTzv9XWf9m5f/z7D+0cX/z8Poj/AIb21W8v49Uvvhl4fluPJ+zedNDL5v8Ara3If+CikF5FJY+I/g7bSRyw/vvJ17zPN/7ZSxV8rzal5MtH2z/l3/rWX9k5f/z7Nv7Vxf8Az8PsSz/4KEfCu88sar8Ob628r/n0mikrU0f9t79nr7VH5EF9pv8Ayzm87TfNlli/55fupa+H/wC2IJfM8ieOTyv3c3kzf8taP7R/e0VMlwZos2xh+gmm/tjfs2awP+R4ltpP+mumy1sab+0h8AZpY59K+Klj5kX7yGbzvK8r/prX5x/2j+9qvNqU8Plz/bo/L/5bebXN/YOENaedVj438n/Sv+2NV4Yc3X+ol8utyDQdVmu/39j5Uf8Az2q5Z+Fb/wCyyQQQfvJf+eNdvtTyKWGMe80G+hsP+Pes+zmgh/5Yf9tq7Sz8B30w+zwa5J/22rL8SeFf+EIijuNcg8y4l/1MVpWlOqaVMMUxpt9Ncx+RB5Ufk/66i8h/e+R5/wDqq6jR9Hgn8Lx6rfWMnmS/8sf+WtGpab4Us7W3nvp7mP8A6a+T/qv+eVZ+1D2bOXs5vJ/fzz/u/wDWV0nhvUoNYv47j/VyRTf8tv8AVVj3mgQQyyT2U/mRyw+X/wCiv9VWp4VhsdNv44L6Dyv+e0N3DTM/ZHrGg+Kr68sP3GlS/uv3U03+q8qtyDUv3X7+xuYv+2Ncn4bs4Lz/AInelX0v73/pt/x9Rf8APLzf+etal5eWHhuKS+nvvtNvFD5n/LX91/2yrspVTP2Xsjch1KGaXyIJ4/M/55VJ+/8ANzj93/y2/c1j6bqUGsWsd7b/AL2O6h8yH9zViGaCH/UQR1pcDQ+2fuo/39WLPUoLzzD9uik8r93+6rLh8iaLrUdAHUQzf9taLKaea0jnngltv+mM3+trn7S8nh/561Ym16eeKODz/wB3QB0Hnf6v/lrQLz91HPPPXPw6xP6/u6P7T8mKgDoJpqrzQ3H9oRzm+l8v/nj+68qsuHUp/wDv7Un2yc/v/wDWf8tKANSG8t5vMggn/eRTeX/qaj8nybrz/t0n+p/1X/LKs/7ZB/y3n/eUf2lBNJIBNQBoQ/8AX9x53/LKH/llUnnfuqy/7Sg8mo/7Sghi/wBfQBqed+9xPR5/tWP/AGlD/wA96P7Sm/570Aak15ALWTz/AN7H/wBcar2esaVMcQT/AOq/7ZVnw6lP/qJ54/M/6Y0Q3nneX58H/bWtAPn/AFjxV/y8QWEsn/Pbyf3dYem694jh8yfQ/tMXmzf8tq6Cz0GCaXz55/N/67Vch02CaL7D/wAtP+WNcdOkdPtGE3iSe9sI7G+82SPyf30X/PWqd54kgPmQTwfu62PsdjFF5EEFH9m+dwIIvLrP6sHtGcvef6Z5k9vPJ9o/67f62tTR9eP2WMa5BbW32X/yLFXQf2DZTRSQeRF/02irPvPDelTXXn6VpXlf88Ypv9bFWlSkFKqbHhTxVocMUcF99m8uKaWSGL/prXQWeg6HrNhbwaVqscknk/8ALb/lrXJ2fhWxm0v7DB/rJZv+W1V/O1zwfF/oMH2mOKH9z++rl9ka+1Oss/7V8N6pH59j9i/7fP8Alr/8aq5NqVj4k1+Sfz7aK4lh/wBVN5UsUv8A1yrn9B+KnhzxhLH/AMJHPLpskUPlzQzTfupa6C80eDTfLnsYJJI5f+2lOnTMqm5oeTBDFHBY3H7yL/trUnn+1ZdneQeV59XPP9q9KnTOYufbPf8ASpIbys/zvI/5b+ZUn2y39D+dWBc+2e/6UfbYMfZ6z4Zv3tScTj/ppWYFifPlfuKIZp8f6+q815b2kUk8/lxx/wDLbFY+jeKr7WL+88++soreL93DDFN+9loA6T7ZP5PnwUQzT/u56r/8tPPogl/5YYrQDQrL1jUvEf8Aakf9h2NtLZyzfvv3372KKpPOg6+f5VHnQHzJz/yyoA0J/wDW+Rmo54YJov3/APyymrPmmv8A/mFXEUUn/PWWrFnNffZf9O8qST/pjQBYm8jEeJ/9b/qaseT+68/yPK/541XhvIP9R9nqSaafyvI/5ZxUAR+TB5v7ipIYf3vST/47VeGaeG6zBf8A+jyw/wCq8mrHnebQB//Z\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] }, { "output_type": "display_data", "data": { "image/jpeg": "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\n", "text/plain": [ "" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n" ] } ], "source": [ "#display inference on ALL test images\n", "#this looks much better with longer training above\n", "\n", "import glob\n", "from IPython.display import Image, display\n", "\n", "for imageName in glob.glob('/content/yolov5/runs/detect/exp/*.jpg'): #assuming JPG\n", " display(Image(filename=imageName))\n", " print(\"\\n\")" ] }, { "cell_type": "code", "source": [ "pip install wandb\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_joAtswDrtlZ", "outputId": "212bf770-9985-4399-e342-9dc71c653c49" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Requirement already satisfied: wandb in /usr/local/lib/python3.7/dist-packages (0.13.2)\n", "Requirement already satisfied: docker-pycreds>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (0.4.0)\n", "Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from wandb) (57.4.0)\n", "Requirement already satisfied: PyYAML in /usr/local/lib/python3.7/dist-packages (from wandb) (6.0)\n", "Requirement already satisfied: Click!=8.0.0,>=7.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (7.1.2)\n", "Requirement already satisfied: requests<3,>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (2.28.1)\n", "Requirement already satisfied: sentry-sdk>=1.0.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (1.9.5)\n", "Requirement already satisfied: setproctitle in /usr/local/lib/python3.7/dist-packages (from wandb) (1.3.2)\n", "Requirement already satisfied: psutil>=5.0.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (5.9.1)\n", "Requirement already satisfied: pathtools in /usr/local/lib/python3.7/dist-packages (from wandb) (0.1.2)\n", "Requirement already satisfied: promise<3,>=2.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (2.3)\n", "Requirement already satisfied: shortuuid>=0.5.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (1.0.9)\n", "Requirement already satisfied: six>=1.13.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (1.15.0)\n", "Requirement already satisfied: GitPython>=1.0.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (3.1.27)\n", "Requirement already satisfied: protobuf<4.0dev,>=3.12.0 in /usr/local/lib/python3.7/dist-packages (from wandb) (3.19.4)\n", "Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.7/dist-packages (from GitPython>=1.0.0->wandb) (4.0.9)\n", "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.7/dist-packages (from GitPython>=1.0.0->wandb) (4.1.1)\n", "Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.7/dist-packages (from gitdb<5,>=4.0.1->GitPython>=1.0.0->wandb) (5.0.0)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.0.0->wandb) (2021.5.30)\n", "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.0.0->wandb) (2.1.0)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.0.0->wandb) (2.10)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.0.0->wandb) (1.26.12)\n" ] } ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5p0E_Dougahg", "outputId": "e38a7eb3-7935-4b89-84f7-888b2e8425d8" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Mounted at /content/gdrive\n" ] } ], "source": [ "from google.colab import drive\n", "drive.mount('/content/gdrive')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "5mJBujZ5golt" }, "outputs": [], "source": [ "%cp /content/yolov5/runs/train/yolov5s_results/weights/best.pt /content/gdrive/My\\ Drive" ] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "gpuClass": "standard", "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }